Áƒ*ž{%[@­,Ý'^ØÙ'w8¢ÐяÜM· °þ"•ƒ‡­,[NoneEngineCoreSystemColor InternalTimeVector DetailScaleVBitsUSizeUClampVClampUBitsDefaultMaterialVSizeLODSetMipZeroPaletteTextureTrigger Lighting CollisionKarmaObject MaxColor DeltaPoint LightColorbMaskedForce GetTimeStampLogEventStringDisplayPostBeginPlayFluidSurfaceInfo DrawTypeMaxResetMinRangeColorsCollisionRadius BeginStateCollisionHeightI3DL2ListenerbStaticKarmaConstraint DamageType RemoteRoleMover TakeDamageSoundTimer AdvancedClientMessage GetItemName ParseOptionTouchFireShaderPhysicsVolume TriggerEventbCollideActors MaterialHasAmmo Destroyed Projector bNoDelete LevelInfobHiddenDecorationLayerUserAltFire EndState Movement ProcessMovebCheckChangableLevelStatLogOpenIsHumanControlledTick L2MovementL2RegionEffectDataGlobal Orientation BeamNoise KarmaParamsGeneralIdlePickupRibbonFormat L2FogInfo Decoration NetPriorityServerResponseLine TerrainLayerAnimEndNetUpdateFrequencyaiVehicleRoutePoint IsPlayerPawn DisplayDebugbAlwaysRelevantGetViewRotationLogf EmitterLightPhysicsPossessBumpEmitterBeginFindInventoryTypeHeaderinterpolation bDirectionalAnimNotify_EffectClosePutDownZ PreBeginPlayMessage SetPause WaitForMoverYGetHumanReadableNameX MeshSpawningDied PlayerMove DownWeaponDeadLoadFontStaticMusicGameReplicationInfo EmitterQuakeChangedWeapon ZoneLightTexOscillatorPlayerController NpcPosInfo bBlockActorsSetHand ServerMove IsRelevantClientReStartConsoleCommand AirEmitter Teleporter ZoneInfo GameEndedReplicateMovebBlockPlayersNpcPos AnywhereNpc bProjTargetTrailSwitchToBestWeaponbFixedRotationDir TerrainInfoUpdateRotation Velocity RotationReceiveLocalizedMessageIconShadowProjectorSuperPointInfo SpawnSoundDescKUpdateConstraintParamsRestartPlayer bNeedCleanupUnTouchbEdShouldSnap SelectNext positioningFontArrayNamesRotator KVehicle NextWeapon PrevWeaponNavigationPoint ServerFire RangeVector CombinerClientSetRotation ShouldCrouch PowerupsHandlePickupQueryCheckAnimatingbOrientOnSlope SceneManager DistAtRestEffectPawnLightParam MoverSoundsFindTriggerActorFindPlayerStart ChangeTeam SkySettingAnimNotify_BoneScale SkyParameterPlayerResponseLine TexRotator PawnDiedCleanOutSavedMovesL2ServerObject Activate Settings UnTriggerPlayTeleportEffectbCollideWorld FinalBlendNeighbourIndex KilledByDecorationTypeServerReStartPlayerLocalEventVolumevisualDoClose Interpolator WeaponChange LocationTerritoryInfoServerAltFireDriversBeam PlayWaitingLongClientAdjustPositionSplit9 VolumeFogSpecialHandlingDying PlayerStartGiveTo GiveWeapon MaleSuicideFemaleSuicide ViewShake DeathString ClientTravel TestInfoAttachParticleSoundbStaticLightingBecomeViewTargetDoOpenLanded SpectatingAgit WarpZoneInfo CheckScorebOnlyDirtyReplication AddMutatorUpdatePrecacheMaterialsTyping RibbonBonesPathNotifyPhysicsVolumeChange RibbonPointTransientSoundVolumeParticleBeamEndPointPlayerWalkingNoCheatCollisionScalePawn LadderVolume VertMeshTime FadeColorKActorSayRenderOverlaysEndZoomL2ColorModifier DetourWeight GetStringFadingSubTestOptionalOutbCollideWhenPlacingbAcceptsProjectorsBeamBranching UnPossessAnimNotify_ViewShakeL2SeamlessInfoSize ZoneStateFogFluidSurfaceOscillator PlayIdleAnim ChangeName FragmentfBattleWaitAnimNameClientSetViewTargetSuggestMovePreparationL2EnvironmentColorInfo BeginEvent ReloadingDoJumpBroadcastLocalized CanSplash StopFiring Revolution RenderingAnnouncePickup ClearL2GameChangeAnimation KeyEvent PreventDeathReadyToPickup bBlockKarma RotationRateSubActionCameraEffect KillEventAdmin UnPossessed BroadcastKick ColorMaskUnTouchVolumeBringUpEnableTriggerKickBanTriggerControl CheckShakeClientVoiceMessageMarkProjectorServerPrimitiveIMaster OwnerEventDisableTrigger bHiddenEdUntriggerEventBrushLogWorldEventString AirVolumeFinishedOpening VClampMode UClampModeFinishedClosingChunkUp Animation AskForPawnCalcBehindViewEffectIsRelevant MoverEventsPostSetPawnResource SameTeamAsIsLocallyControlledAnimNotify_ScreenFadebWorldGeometry ViewFlash TouchVolumeProceedWithMoveIsInAirVolumeAnywhereNpcMaker EndEventPostNetBeginPlay ProcessTouchAttachProjectorDetachProjectorFixFOV ServerTravelbNetTemporary BeginPlay PostTouch PlayFiringDoor MusicTriggerStartInterpolationApplyFadeAlphaBezierContPointServerLineStruct TexScalerSpritePlayerCalcViewLineOfSightTriggerRecommendWeaponAnimNotify_Illusion AtCapacity LineColor RateSelfGetServerPort CheckEndGameSetDefaultDisplayPropertiesactiveEnchantAnimNotify_IdleSound LevelSummary GetIntOptionBotDesireabilityServerForceReloadMaterialSequenceRibbonAccDropCoronaWeapon HandlePickup GameInfo MuzzleFlashHitWallTransientSoundRadiusExplodeAnimNotify_SoundbGameRelevant ScoreKillCompressAccelEvents _killpendingReachedDestination NpcPrivateTravelPostAcceptAnimNotify_AttackVoiceGetLocalString CheckBobDisplayMessages LiftCenter LiftExitScoreObjectiveMutate ShootSpecial EndLoggingEndGameAnimNotify_CameraLocation Inventory ProcessDrive SwitchWeapon ModifyLogin PlayerTickGetDefaultWeaponClientSetLocationSuicide NotifyLandedServerPointStruct AdjustAim RangeDeltatest bMovableBroadcastTeam bSpecialMoveKarmaParamsSkelTeamSayKarmaParamsCollision ForceReload ClientDyingStationaryWeapons FailMessageEnterStartState TestStaticbReadyToRenderPlayBeepSoundEncroachingOnbCanBeBaseForPawnsLineagePlayerController AddInventory Activated ColorNames SkeletalMeshEndClimbLadder EyePositionSetMeshShuttleSetViewRotationbNoSpecificLocation LifeSpanInit DropFromBroadcastLocalizedMessageTriggerToggleStartSizeRange ClientFinish ShakeViewStartSleepingFinishAddDefaultInventoryNeedsToReload GetFireStartbAlphaTexture AdjustView ActorEnteredSetFall BaseChangeSetOwnerDisplaybDisableSorting PostRenderColorModifier DrawScalebUnlit bArmorStops RepeatFireMesh LieStillClientWeaponSetbIgnoredRange OnTurningOnStopOnStart OnMoveUp OnMoveDown OnDriverOut OnDriverInRestartOnBoostTexCoordSourceSwitchPriority IsSpectating UseLowGoreAddPrecacheMaterial ModifierDrawHUDAddAmmoPlayerWaitingPickupFunctionGetServerDetails SetGameSpeedChangeVoiceChatter FindGoodViewMutatorL2RotatorTimeMaterialSequenceItemPhysicsVolumeChangeClientChangeVoiceChatter bTargetable TimeReactorFallingGetServerPlayersWaitingForPawnAccelerateMouse LoadPlayers SmoothMouseGetNumPlayersInitGameReplicationInfoPrecacheGameStaticMeshes PlayerFlyingPlayerSwimmingPrecacheGameTexturesSetWaitingPlayerGetEffTargetLocationPlayerDrivingAccessoryTypeSetPlayerName GenerateParticleTimeScaleForceGenerateL2NetStartMatch PlayDyingFinishedInterpolationParticleRevolutionScale ViewPlayerParticleColorScaleGetDefaultPlayerClass LostChildFellOutOfWorldParticleVelocityScaleAddPRITeamSymbolNotify NotifyKilled PreLoginKilled bOwnerNoSee SpawningbProjectActor ReduceDamageRenderTwoSidedCalcFirstPersonViewTestNullContextAcceptSetMoveTarget PickTeam EncroachedByLineOfSightTo bHardAttach KillAllPawnsClearProgressMessagesKarmaParamsRBFull ViewSelfbDisturbFluidSurfaceTestStructBoolsViewBot AttachActorSparkSetProgressMessageSetProgressTime ThrowWeapon UpdateShadowL2EventGetConsoleFont bEnabledRatePlayerStartJump PlayerInputRibbonTextureServerRestartGameCheckTouchListHandleWalking ProjectilebShouldBaseAtStartup TeamMessageReviewJumpSpots UseLargeFont RibbonSheetsTravelPreAcceptHUD KillBotsUsedByInitGRIWhenExtinctionCreate WayPoint AIController ModifyPlayerRibbonInterpolationGetInventoryClassOverrideOverridePickupQueryRocketServerMoveParticleBeamScalebAlwaysVisibleHandleRestartGameMyDefaultWeapon FaceRotation AlwaysKeep AddGameRulesbTravelServerSetHandednessCalcDrawOffset ClimbLadderPlayerChangedClassJumpPadDrawLevelActionDisplayProgressMessageClientSetMusicClientPlaySound MoverOpened DrawColor BezierCurve TossWeapon NextItem MoverClosed GetPathIndex GivePawnDeleteInventoryBroadcastTextAllowsBroadcast ZoneStateMaxDesireability LensFlare SheerAxis SheerRateCheckIPPolicybAsTreatWorldServerChangedWeaponCanGrabLadderSelect LinkToSkyboxServerGivePawnPendingClientWeaponSet PointOfViewPickupMessagebBlockZeroExtentTracesTouchingWaterVolume PossessedBy NormalFire SpawnCopyReceiveWarningbUseCylinderCollisionCameraOverlayKeyType ScoreEventAdjustDesireFordamageAttitudeTo StartGame DefaultPens UnderLift SetRespawn InitialStateIsIdleMoverFinishedColorVariationMaterialSurfaceAllowVoiceMessageGetFacingDirectionFadeOutGetRespawnTime LocalFireKVehicleFactoryWantsSmoothedView SleepingServerRapidFireTexPannerTriggered TimeZone ScoreBoard TexPannerTexOscillatorTriggeredSpecialCalcViewPlayWeaponSwitchDownbReplicateInstigator GiveAmmoClientForceReloadMaterialSwitchbSkipActorPropertyReplication BumpShaderComplementModifierGetDamageRadiusStylebNetInitialRotation PlayTakeHit L2NeedTick WarnTargetKInertiaTensorCannotJumpNow KeyValuePairInUse CausePainToAudio bAlwaysGibs TakeOver MatActionLogPlayerInfo Encompasses BumpButton TriggerPoundBumpOpenTimedStandOpenTimed Security FinishNotifyAnimNotify_DestroyEffect VehicleFireVehicleCeaseFireMatchStartingStaticMeshActorSetDisplayProperties FlushLogStopLog StartLogUpdatePrecacheStaticMeshesClientKDriverLeaveDetachFromPawn KDriverLeaveAttachmentClass FirstPerson AttachToPawnGetPawnDamageSoundGetPawnDamageEmitterGetPawnDamageEffectGetAbsoluteTimeGetShortAbsoluteTimeLogStandardInfoLogServerInfo GibModifierGetMapFileNameLogMapParametersLogPlayerConnect pawnlight MyDamageTypeetcInitForAllowRepeatPickupSpawnProjectileSetWeaponStayProcessTraceHit LogPings LogGameEndGetLocalPlayerControllerGetAddressURL FireEffectAddPrecacheStaticMeshOpenLog CloseLogSetTeam WeaponPickupDrawCrossHairDrawMuzzleFlashbActive Shutdown UseTrigger FullTimeDateServerStopFiringMaterialTriggerNewGameGibbedCheckTouching ValidTouchProjectileFire TraceFireFallingPickupBotFireEffectsInitDroppedPickupForSwitchToWeaponWithAmmo CauseAltFire ConnectEvent DelayedWarpDisconnectEventAnimNotify_Triggertemp SpecialEvent GameEventRespawnEffectSetGamePassword ClientFiringRequiresPassword AdminLogin TweenDownPlayReloading PlaySelect RespawnTimePlayPostSelectWZoneVisibilitybOnlyReplicateHiddenUpdateSentTextAllowBroadcastLocalized bIsSpecialSpawnScoreBoardCheckCountdownDrawSpectatingHud DrawRoutePrintActionMessageClientReceive TimeStampGetConsoleColorParseChatPercVarGetFailSwitchCheckReplacementCheckRelevanceDisplayBadConnectionAlertbForceNoStrafingbNeverUseStrafingLocalizedMessage GetRulesCriticalPlayer NetDamage ExtraCost GetNextMapProcessKeyEvent*MutatorIsAllowedNormalTriggerAddTextMessage AdminSayDrawScoreboard UpdateGRIThirdPersonEffects UseHugeFontParseMessageStringStopPlayFiring SpecialCostUpdateScoreBoardInOrder SortPRIArray SetWalkingLoadProgressFontStartlePriorityObjectiveTriggerScriptTestQ ViewClass SetFocusTo SetAirVolume RefireRate MaxSpeedWeaponFireAgain GetMapList RandSpin RestartGame SendPlayer RecurseTestTestOptionalOutRemoveCameraEffect TestSwitchDiscardInventory PickupQueryShouldRespawnProcess_Message CanSpectate IsOnTeamClientInitializeRepReceiveLocalizedMessageBroadcastDeathMessage PreTeleportRepClientVoiceMessagePreClientTravelSetPlayerDefaultsRepClientMessage PlayerSpeechLogoutPlayLandingAnimationGetMessageIndexCalcVolumeCameraCalcCameraWalkingMode StartMatchKProportionalGap OpenMenuCalcCameraMovingToFocusedNpc KStiffnessArriveZoomCameraRotProcessServerTravelArriveZoomCameraLoc CalcVelocityCalcVolumeZoomingDistanceCheckForDoubleClickMove GetKeyValueUpdateSmoothing UpdateAccelUpdateSensitivityIsBlockRotationNotify GrabOption"CalcCameraMovingToDefaultDistanceCalcCameraMovingToDefaultPitchCalcCameraMovingToDefaultYawClientLeaveVoiceChatCanRestartPlayer KUpdateStateKImpactServerViewSelfGetNetworkNumberServerViewNextPlayer InitLogging ScriptingPlayerRocketingGetLocalLogFileName GameSpeedPlayerSpideringGetBeaconTextUpdatePlayerLocationSetFlagPlayerClimbingFillPrecacheStaticMeshesArrayFillPrecacheMaterialsArray DetailChangeDesireability TurnAround Deactivated CloseMenu MaxParticles CloseAll RemovePRITurnTowardNearestEnemyFrameBufferBlendingOpFOVZTestZWrite bProjectBSPUseRegularSizeScalebProjectStaticMesh BreathTimerAutomaticInitialSpawningWarmup SoftParticle GameNameRemoveFromTeambProjectParticlesUseMeshBlendMode bClipBSPAddCameraEffectbProjectOnParallelBSPFileLog StatLogFilebDynamicAttachAbandonProjector DetachActorL2RegionEffectInfoSetName FontColor PathColor ServerUseUseUpdateMarkProjectorServerThrowWeapon LightEffect RestartLevel ClientShakeNote SkyZoneInfoClientUpdatePositionServerUpdatePingClientAdjustPositionShortClientAdjustPositionAmmo ServerDriveGetTotalSceneTimeShortServerMove AIScriptForceDeathUpdateBlockingVolumeClientSetBehindViewIsDead TeamInfo StartZoom ClientSetHUD Controller LocationInfo NActionPtrClientGotoStateServerVerifyViewTarget AddCheatsSkillID FlashScale DefaultFOV DesiredFOVVehicle SetPawnClassClientSwitchToBestWeaponWeaponPreference MotionBlur RateWeapon FireWeaponAtbDynamicLight FearThisSpotBotVoiceMessage ColorWheel PreRenderSendVoiceMessagebStasisWaitClientGameEnded InitializeQuality GameHasEndedCurveProjectileInitPlayerReplicationInfo PawnIsInPainNotifyTakeHit MaskTexturebIgnoreEncroachers BadClient ProbationConstantColorClientPerformNotifyAddInventory TexEnvMapGetLastWeaponbReplicateMovement WasKilledByNativePerform DrawText GlowModifier TextSizeAvoidCertainDeath DrawTile DrawPortal MeshEmitterAddHungerEffectPendingStasis ServerInfoUOscillationRateVOscillationRateUOscillationAmplitude MinHitWallbCanDoSpecialbCanOpenDoorsVOscillationAmplitudeRetriggerActionStopAfterPeriod FovAngleLimitMaxRadiusPlayExitSplashPlayEntrySplashGetMoveTargetSpawnControllerFor SoundPitch SoundVolume SoundRadiusAmbientRandom AlphaBlend TimerPopAssociatedTouchTriggerOpenTimedRandomMakeGroupReturn IsInPainMakeGroupStopbUseL2ActorViewType ReturnGroupAnimNotify_AttackShotAnimNotify_Script GetDebugNameSetGRIAnimNotify_MatSubAction vanishing dummyinitialVanishInfoKillCubemap KDriverEnterClientKDriverEnter AccelRate PlayLandedActor PlayMovingFadeMapNameRadiusDestroyType GetViewport LandThumpbPathCollidingAllocateObject FreeObjectPlayHitPlayDyingSoundUpdateRocketAccelerationCanDoubleJumpDesiredRotation DoDoubleJumpMassErrorCheckWaterJumpTakeDrowningDamageGetKillerController PointRegionSetMovementPhysicsGaspORDER JumpOffPawn gibbedByGetWeaponBoneForPrepareForMoveCanThrowWeaponPhysicsChangedForNotifyHitWall AddVelocity CanTriggerPawnLeavingVolumePawnEnteredVolume ActorLeavingWasPlayerPawn WeaponBobModifiedPlayerViewOffsetPlane DropToGroundbNeedSetPawnResourceSetWeaponHide bShadowCast ForceCrouch AmbientGlow DrawScale3DRemoveHungerEffect OtherStatic AccelerationIK_Joy1 IK_UnknownC7 IK_UnknownC6 IK_UnknownC5IK_Joy2 IK_UnknownC4 IK_UnknownC3 IK_UnknownC2 IK_UnknownC1IK_Joy3 IK_TildeProjectorRenderInfoPtr!StaticMeshProjectorRenderInfoPtr IK_SlashIK_Joy4IK_Joy5 IK_Period IK_Minus IK_Comma IK_Equals OverlayColor IK_SemicolonIK_Joy6 MaxLights IK_Unicode CullDistance ScaleGlowRangeForIgnoredRangeTranslucentRenderPriority NMoverPtr IK_UnknownB8 IK_UnknownB7 IK_UnknownB6 IK_UnknownB5 STY_None STY_Normal STY_MaskedSTY_TranslucentSTY_Modulated STY_Alpha STY_AdditiveSTY_Subtractive STY_Particle STY_AlphaZ STY_Capture IK_UnknownB4LGA_SaintConsensusOpeningLGA_SaintConsensusOpenedLGA_SaintConsensusClosingLGA_SaintConsensusClosedIK_Joy7IK_Joy8LODBiasbUseLightingFromBaseIK_Joy9 IK_UnknownB3 IK_UnknownB2 IK_UnknownB1TSR_END TSR_START TSR_None IK_Joy10bDestroyInPainVolume IK_Joy11 IK_UnknownB0 IK_UnknownAF IK_Joy12 bCanTeleport bClientAnim IK_Joy13 IK_UnknownAE IK_UnknownAD SLOT_None SLOT_Misc SLOT_PainSLOT_Interact SLOT_Ambient SLOT_TalkSLOT_Interface IK_UnknownAC MTRAN_NoneMTRAN_Instant MTRAN_Segue MTRAN_FadeMTRAN_FastFadeMTRAN_SlowFade IK_Joy14 IK_Joy15 bSunAffect IK_Joy16 IK_UnknownD8 IK_UnknownD9 IK_UnknownDAIK_LeftBracket IK_BackslashIK_RightBracketbBlockNonZeroExtentTraces IK_UnknownABIK_SingleQuote IK_UnknownDF bNetNotify IK_UnknownAA IK_UnknownA9bBounceEATP_AbsolutebRotateToDesired IK_UnknownA8bJustTeleportedEATP_Relative IK_UnknownA7 IK_UnknownE0 IK_UnknownA6 IK_UnknownA5RotationLimit IK_UnknownE1 IK_UnknownA4 IK_RControl IK_LControl IK_RShiftKRBVecKRigidBodyState Position IK_LShift IK_Unknown9F IK_Unknown9E IK_UnknownE2 IK_Unknown9D IK_Unknown9CAnimRep IK_Unknown9B IK_Unknown9A IK_Unknown99 IK_Unknown98 IK_Unknown97 IK_Unknown96 IK_Unknown95FT_None FT_DragAlong IK_Unknown94 IK_Unknown93 IK_Unknown92IK_ScrollLock IK_NumLock IK_Unknown8F IK_Unknown8E IK_Unknown8D IK_Unknown8C bNoRepMesh IK_UnknownE3 IK_Unknown8B IK_MouseX IK_Unknown8AROLE_Authority IK_Unknown89 IK_Unknown88 bObsoleteROLE_AutonomousProxyIK_F24IK_F23IK_F22IK_F21IK_F20IK_F19IK_F18 MessageClassIK_F17 NMAS_NoneNMAS_RotationToNMAS_CastStart NMAS_Cast NMAS_CastEndNMAS_ShotStart NMAS_Shot NMAS_ShotEnd NMagicInfoIK_F16IK_F15IK_F14IK_F13IK_F12IK_F11IK_F10IK_F9IK_F8IK_F7IK_F6IK_F5IK_F4IK_F3IK_F2IK_F1 IK_GreySlashIK_NumPadPeriod IK_GreyMinus IK_Separator IK_GreyPlus IK_GreyStar IK_NumPad9 IK_NumPad8 IK_NumPad7 IK_NumPad6 IK_NumPad5 IK_NumPad4 IK_NumPad3 IK_NumPad2 IK_NumPad1 IK_NumPad0 IK_Unknown5F IK_Unknown5E NAST_NoneNAST_AttackStartNAST_AttackDelayNAST_AttackShotNAST_AttackDemageNAST_AttackEnd IK_Unknown5D IK_Unknown5C IK_Unknown5B SPN_NormalSPN_TopSPN_MidSPN_BtmIK_ZTextureModifyinfoIK_YIK_XIK_WIK_VAlphaOpColorOpIK_UIK_TTRAVEL_AbsoluteTRAVEL_PartialTRAVEL_RelativeIK_S DCLICK_None DCLICK_Left DCLICK_RightDCLICK_Forward DCLICK_BackDCLICK_Active DCLICK_DoneIK_R KILLZ_None KILLZ_LavaKILLZ_SuicideIK_Q EAST_NoneEAST_SilhouetteEAST_CubemapSilhouetteEAST_WeaponSilhouetteIK_PROLE_SimulatedProxyIK_OROLE_DumbProxySleepIK_N SetCollisionIK_MIK_LIK_KSetCollisionSizeIK_JIK_I SetDrawScaleIK_HSetDrawScale3DIK_GSetStaticMeshIK_F SetDrawTypeIK_EMoveIK_D SetLocationIK_CIK_B SetRotationIK_ASetRelativeRotationSetRelativeLocation MoveSmoothAutonomousPhysicsSetBase IK_Unknown40 IK_Unknown3F SetOwner IK_Unknown3E GetMeshName PlayAnim IK_Unknown3D IK_Unknown3C LoopAnim TweenAnim IsAnimating FinishAnimHasAnimStopAnimating IK_Unknown3B HasBoneName IK_Unknown3A FreezeAnimAt SetAnimFrameIK_9 IsTweeningIK_8EnableChannelNotifyGetNotifyChannel LinkSkelAnimIK_7IK_6 LinkMeshIK_5 BoneRefreshAnimBlendParamsIK_4IK_3IK_2IK_1IK_0AnimBlendToAlphaIK_Help IK_DeleteGetBoneCoordsGetBoneRotation IK_InsertGetBoneCoordsWithBoneIndex IK_PrintScrnGetRootLocationGetRootRotationGetRootLocationDeltaGetRootRotationDelta AttachToBone IK_Execute ROLE_NoneDetachFromBoneAttachToBoneWithIndexLockRootMotion IK_Print SetBoneScale IK_SelectIK_DownSetBoneDirection IK_RightIK_UpSetBoneLocationSetBoneRotationGetAnimParamsIK_LeftIK_HomeIK_EndAnimIsInGroup IK_PageDownGetRenderBoundingSphereDrawDebugLine IK_PageUp IK_Space DebugClock DebugUnclockFinishInterpolation SetPhysics IK_Unknown1FOnlyAffectPawnsKGetRBQuaternionKGetRigidBodyState IK_Unknown1EKDrawRigidBodyState IK_Unknown1DKRBVecToVector IK_Unknown1CKRBVecFromVector KSetMass KGetMassKSetInertiaTensor IK_Escape IK_Unknown1AKGetInertiaTensorKSetDampingProps IK_Unknown19 IK_Unknown18KGetDampingProps KSetFriction IK_Unknown17 KGetFrictionKSetRestitution IK_Unknown16KGetRestitutionKSetCOMOffset IK_Unknown15KGetCOMOffsetKGetCOMPosition IK_CapsLockKSetImpactThreshold IK_PauseKGetImpactThresholdKWake KIsAwake KAddImpulseIK_AltKSetStayUprightIK_Ctrl IK_ShiftKSetBlockKarma IK_Unknown0FKSetActorGravScale IK_Unknown0EKGetActorGravScaleKDisableCollision IK_EnterKEnableCollision KSetSkelVel IK_Unknown0C IK_Unknown0B KGetSkelMassKFreezeRagdollKAddBoneLifter IK_Unknown0ALateralFriction SoftnessKRemoveLifterFromBoneKRemoveAllBoneLiftersKMakeRagdollAvailableKIsRagdollAvailableIK_Tab IK_Backspace IK_Unknown07ClockUnClock PlayMusic IK_Unknown06 StopMusic IK_Unknown05IK_MiddleMouse StopAllMusic NDestroySetActorViewType IK_CancelSetAlphaTexModifierIK_RightMouse IK_LeftMouseIK_None IST_Axis IST_Release IST_Hold IST_Press IST_None m_bRenderSkinnedDataIndexTraceMeshComponentData EMST_CLOTH EMST_HAIR EMST_None FastTrace MCS_DELETEME MCS_CREATEDMCS_READYTOFADEOUT MCS_FADEOUT MCS_FADEIN MCS_NoneMeshComponentArrayPtr IK_MouseY SetTimerMSM_ForcedRigidMSM_SinglePiece PlaySound MSM_Mixed IK_MouseZMSM_RigidOnlyPlayOwnedSoundPlaySoundOnVehiclePlayLoopSoundFadeInDuration StopSoundMSM_SmoothOnly ILM_UniformGetSoundDuration MakeNoiseILM_PseudoShadedPlayerCanSeeMeSuggestFallVelocity ILM_Unlit IDM_Fading IDM_NormalISM_PivotHorizontalISM_PivotVertical ISM_Fixed GetMapName ISM_SpriteEL2_AIRSHIPKEYPATHSTYLE_Bezier GetNextSkinPATHSTYLE_LinearEndControlPointStartControlPointbSmoothCorner GetURLMap GetNextIntGetNextIntDescSubGetCacheEntry EndAlphaMoveCacheEntry EL2_CHAIR AllActorsSASTATUS_ExpiredSASTATUS_EndingDynamicActors ChildActors BasedActorsTouchingActors TraceActorsSASTATUS_WaitingSASTATUS_Running EL2_DOOR RadiusActors EL2_NORMALVisibleActorsVisibleCollidingActors BoneIndexBCollidingActors BoneIndexA StiffnessTerrainCollisionZ ResetFactor IK_MouseW UseForceLPBST_FIN_SOUTLPBST_SIN_FOUTLPBST_SIN_SOUTL2ServerObjectIDL2ServerObjectRealID HurtRadius LPBST_LINEAR DamageRadius VST_ABNORMAL VST_TERRAIN VST_DOWNUP L2CurrentLodIK_JoyU VST_UPDOWNL2LodViewDuration ReplaceText VST_DOWNVST_UP VST_USERIK_JoyVVST_VIBRATION VST_DAMAGE FadeOutColor ELBT_Upping ELBT_Downing ELBT_Normal ELBT_NoneFadeOutDurationIK_JoySlider1IK_JoySlider2 EffectScaleYPosbExpireParticlesframe NearSpot LPST_ACTORTouchingActorIK_MouseWheelUpIK_MouseWheelDown LPST_WATEREAVT_HidingForUI IsInVolume LPST_LANDEAVT_ShowingForUIEAVT_BacktoAlpha LPST_GRASSEAVT_GotoAlphaEAVT_DespawningGetCollisionExtentEAVT_HighLightAO_Use_Alpha_From_Material2AO_Use_Alpha_From_Material1AO_AddSetOverlayColor AO_Multiply AO_Use_MaskCO_Use_Color_From_MaskCO_Add_With_Mask_ModulationEAVT_ControllerCO_AlphaBlend_With_Mask CO_SubtractCO_AddList CO_MultiplyCO_Use_Color_From_Material2CO_Use_Color_From_Material1AST_Day EAVT_ShowingP_BLENDENFORCEALPHA AST_AlwaysP_MULTIPLYADD AST_Night AST_WaterAST_RangeTimeP_DOTPRODUCT3P_BUMPENVMAPLUMINANCE EAVT_Hiding P_BUMPENVMAPEAVT_DeletingEAVT_SpawningEAVT_OutSightingP_MODULATEINVCOLOR_ADDALPHAOCCLUSION_DefaultOCCLUSION_NoneOCCLUSION_BSPOCCLUSION_StaticMeshesP_MODULATEINVALPHA_ADDCOLORP_MODULATECOLOR_ADDALPHAP_MODULATEALPHA_ADDCOLORControllerClassP_PREMODULATEP_BLENDCURRENTALPHAP_BLENDTEXTUREALPHAPMP_BLENDFACTORALPHAEAVT_OutSightEAVT_InSighting EAVT_InSightP_BLENDTEXTUREALPHAP_BLENDDIFFUSEALPHASTEP_MOVE_BACK P_ADDSMOOTH P_SUBTRACTP_ADDSIGNED2X P_ADDSIGNEDP_ADDSTEP_TARGET_PLAYERSTEP_ROTATE_FLOATSTEP_TARGET_FLOATSTEP_MOVE_FLOAT P_MODULATE4X P_MODULATE2X P_MODULATE P_SELECTARG2 P_SELECTARG1 P_DISABLEPanRateTR_OscillatingRotation EAVT_NoneIK_Unknown10ETR_ConstantlyRotatingTR_FixedRotationUK_Unknown10FIK_JoyXIK_JoyYRTA_Retrigger RTA_Ignore RTA_Reset RTA_ReversebNeedPostSpawnProcessbImmediatelyStopIK_JoyZVOscillationPhaseIK_JoyR ServerName IK_UnknownF4 OT_Jitter MaxPlayers IK_UnknownF5OT_StretchRepeat OT_StretchOT_Pan EnvMapTypeEM_SphereMapModulateOpacity EM_SphereMap NormalPairEM_CameraSpaceEM_WorldSpaceTexCoordCount TCN_4DCoordsTEXMAPAXIS_XYTEXMAPAXIS_XZTEXMAPAXIS_YZIK_Attn TCN_3DCoordsUScaleVScale TCN_2DCoords TCS_NoChangeTCS_SphereMapModulateOpacityTCS_SphereMapTCS_ProjectorCoordsTCS_CameraEnvMapCoordsTCS_WorldEnvMapCoordsTCS_CameraCoordsTCS_WorldCoords TCS_Stream7 TCS_Stream6 TCS_Stream5DecoSectorInfo TCS_Stream4DecorationLayerData TCS_Stream3TerrainIntensityMap IK_CrSelTerrainSectorSize TCS_Stream1 TerrainScale TCS_Stream0 FB_DarkenInvFB_OverwriteAlpha FB_CaptureFB_InWaterBlendFB_Add FB_Invisible FB_Brighten FB_DarkenFB_Translucent&FB_AlphaModulate_MightNotFogCorrectlyFB_AlphaBlend FB_Modulate FB_OverwriteLoop MSTA_Stop MSTA_Pause MSTA_Reset MSTA_Ignore IK_ExSelMSA_FadeToMaterialMSA_ShowMaterialSpecularScaleSpecularPower OB_Darken OB_Brighten OB_InvisibleOB_Translucent OB_Modulate OB_Masked OB_NormalFC_Sinusoidal FC_LinearParticleProjectorInfoTerrainMaterialLayerbAlwaysZeroBoneOffset IK_ErEofIK_PlayIK_ZoomSetSizeShadowTextureRevision ShadowIndex BlobShadowShadowDarknessDirtybUpdateSimulatedPositionCOLORMASK_AddCOLORMASK_AlphaBlend IK_NoNamebOnlyRelevantToOwnerLODSET_LightmapPerformLODSET_RenderMapIK_PA1 IK_OEMClearLODSET_InterfaceLODSET_TerrainLODSET_WeaponSkinLODSET_PlayerSkin LODSET_World LODSET_NonebRequiresTick bParametricbNativeEventsWorldToScreenScreenToWorldbOnlyDrawIfAttachedEMTT_LightSpaceEMTT_WorldSpaceEMTT_ViewSpace SetFocusbOnlyOwnerSeeSetControllerStatus HistoryBot DM_SuperHighDM_HighDM_LowTalk TeamTalk idxCurLumbUpdateShadow TC_ClampTC_WrapGrayLumbUseDynamicLightsTEXF_RRRGGGBBB TEXF_G16TEXF_L8 TEXF_DXT5 TEXF_DXT3 TEXF_NODATA TEXF_RGBA8 TEXF_RGB8AFFECT_ViewportCamera AFFECT_Actor TEXF_DXT1 TEXF_RGB16 TEXF_RGBA7TEXF_P8TextureFormatbLightingVisibilityBranchEmitter FinalCoefRenderingDensitybActorShadows SceneSpeedHighFrequencyPointsLowFrequencyPointsExpBaseBeamTextureVScaleBeamTextureUScaleExpCoef ClampMin ClampMax CreatureIDParticleBeamDataPTEP_OffsetAsAbsolutePTEP_TraceOffset Luminance PTEP_Actor PTEP_OffsetPTEP_DistancePTEP_Velocity bDecayPointsbSamplePoints ScaleRatio CntrPointsFGT_Hexagonal FGT_Square MiddleGrayFluidGridTypeFluidGridSpacing FluidXSize FluidYSizeFluidHeightScale FluidSpeed FluidDampingFluidNoiseFrequencyFluidNoiseStrength WhiteCutoffTestRippleSpeedTestRippleStrengthTestRippleRadiusUTiles ThresholdVTilesRibbonTextureVScaleRibbonTextureUScaleAlphaHeightScale AlphaMaxShootStrength BloomScaleRippleVelocityFactorTouchStrengthPointOriginOffset MinSampleDotMinSampleDist AxisNormalGetPointAxisFrom RibbonWidthBlurNumADRP_BYTIME_DUAL ADRP_BYTIME WarmUpTime UpdateRate ADRP_BYPOINT ADRP_NONE SampleRate LEC_PlayPAXIS_AxisNormalPAXIS_StartBoneDirectionPAXIS_BoneNormal PAXIS_OwnerZ PAXIS_OwnerY PAXIS_OwnerX LEC_ShowPling StrengthLineSegmentsRange LEC_NoneParticleSparkData RefrVScale Move_Random Follow_Rail RefrUScale MoveType GlowTypeProjectionNormal RGBCutoffFinalBlendBlurTypeFS_NoFS_Yes FS_Maybe PTDU_ScaleFinalBlendOpacityPTDU_RightAndNormalPTDU_UpAndNormalAspectBlendOpacity PTDU_Normal PTDU_Forward PTDU_RightPTDU_Up PTDU_None ResetTrailVelocityMaxThresholdMaxTrailTwistAngleDistanceThresholdrandom1random2 BlurAlphaMaxPointsPerTrailbAdjustSamplingLightRenderDataPtrPTTL_FollowEmitterPTTL_AttachedToParticlePTTST_PointLife PTTST_Linear PointNumTerritoryHeightPTTST_RandomDynamicPTTST_RandomStatic TeamName PTTST_NoneMouseSmoothingMode NumPoints TeamColor AltTeamColorParticleTrailInfoParticleTrailDataActorRenderDataPtrMouseSmoothingStrengthBelongsOnTeamMouseSensitivity AddToTeamSpawnParticle DT_Native DT_CustomSoftParticleFadeDistDT_MusicVolumebStopCountDownDT_SunAddVelocityMultiplierRangeAddVelocityFromOtherEmitterMaxAbsVelocityTriggerDisabledLifetimeRange DrawStyleDT_FluidSurfaceInitialParticlesPerSecondDT_AntiPortal ShortNameRelativeBoneIndexRangeSkeletalScale DT_Particle DT_DrawType SpinCCWorCWDT_StaticMeshDT_SpriteAnimOnce DT_Terraform AlphaTestDT_VerticalSprite MeshNormal COS_HomeCOS_HeldFriendlyCOS_HeldEnemy COS_DownUniformVelocityScaleUniformMeshScaleSetCarriedObjectStateMeshScaleRangeGetCarriedObjectStateVelocityScaleRangeDT_RopeSprite DT_BrushDT_Mesh GetPRIArray DT_SpriteStartMassRangeAddLocationFromOtherEmitterRespawnDeadParticlesLevelOfWeatherDT_NoneCoordinateSystemMouseSamplingTime FadeInFactorFadeOutFactorPHYS_L2MovementOpacityColorMultiplierRangeSpawnFromOtherEmitterDampingFactorRangeExtentMultiplier PHYS_NMover ParticlePHYS_NProjectilePHYS_EffectTrailerPHYS_MovingTrailerPHYS_KarmaRagDollPTSU_LocationPTSU_SpawnOffsetStringSpectatingStringUnknown PTSU_None PTMS_RandomSetCharacterName PHYS_Karma PTMS_LinearGetLocationName GetPortraitPHYS_RootMotion PTMS_None PTSC_Random PHYS_Ladder PHYS_TrailerPTSC_LinearLocalPTSC_LinearGlobal PTSC_NonebRestartLevel bPauseable bWeaponStaybCanChangeSkinPTEA_PositiveZPTEA_NegativeX PTLS_AllbCanViewOthersbDelayedStart PTLS_PolarbChangeLevels PTLS_Sphere PTLS_BoxPTVD_AddRadialbAllowWeaponThrowingGameDifficultyPTVD_OwnerAndStartPositionAutoAim PHYS_SpiderPTVD_StartPositionAndOwner PTVD_None PTRS_Normal PTRS_Offset PTRS_Actor PTRS_NonePTWC_ParticlePerSecondPTWC_MaxParticleHUDTypePTCS_ScreenRelativePTCS_ScreenAbsolutePTCS_RelativePositionMaxSpectators PTCS_SprayPTCS_RelativeRotationPTCS_AbsolutePTCS_RelativeDefaultPlayerNameFearCostFallOffDeathMessageClassGameMessageClassPTCS_Independent MutatorClassPTDS_BrightenAccessControlClass PTDS_DarkenBroadcastHandlerClass(PTDS_AlphaModulate_MightNotFogCorrectlyPlayerControllerClassNameGameReplicationInfoClassPTDS_TranslucentGameStatsClassVoiceChatterInfoPTDS_ModulatedPTDS_AlphaBlend PTDS_RegularSecurityClassBM_HACKBM_MODULATEINVCOLOR_ADDALPHAAcronymBM_MODULATEINVALPHA_ADDCOLORBM_MODULATEALPHA_ADDCOLORPHYS_MovingBrushBM_PREMODULATEPHYS_InterpolatingFindPlayerByIDPHYS_ProjectilePHYS_RotatingBM_BLENDCURRENTALPHA PHYS_FlyingPHYS_SwimmingGetServerInfoBM_BLENDTEXTUREALPHAPM PHYS_Falling PHYS_WalkingBM_BLENDFACTORALPHA PHYS_NoneMouseAccelThresholdDoubleClickTimeBM_BLENDTEXTUREALPHA InvertLookBM_BLENDDIFFUSEALPHA BM_ADDSMOOTHSetSmoothingMode BM_SUBTRACTSetSmoothingStrengthBM_ADDSIGNED2XChangeSnapView BM_ADDSIGNEDListDynamicActorsBM_ADDBM_MODULATE4XBM_MODULATE2X BM_MODULATEFlying FreezeFrame WriteToLog bFirstHitControlDesiredToggleDesired ControlMotor SetFlash ToggleMotorHT_Controlled HT_Motor HT_Normal HT_SpringySetFogRSetFogG KHalfAngleSetFogB KSuspDampingKSuspStiffnessKSuspHighLimitKSuspLowLimit KMaxSpeedbKSteeringLockedKMaxSteerSpeedKMaxSteerTorqueKillViewedActorKGetConstraintTorqueLogScriptedSequences TeleportKGetConstraintForce ChangeSize KSecAxis2 KPriAxis2 KSecAxis1 DecoInfoSORT_FrontToBack HudClass KPriAxis1bKDisableCollision SORT_NoSort LockCamera Restitution SlipRateAddGameSpecificInventoryMinSlip LateralSlip RollSlipSetCameraDistEndPath FreeCamera RollFrictionSORT_BackToFront bKTakeShot CauseEvent AmphibiousParseKillMessage RadiusRate HeightRate DeathMessageFlyWalkGhostAllAmmo MinAccelRate Invisible MaxAccelRateGodSloMo MinSpeed SetJumpZ SetGravity NMoverTarget SetSpeedDropKillAllGetTossVelocity KillPawnsAvatarSummonBlowUp PlayersOnly CheatViewTossZ RememberSpot ViewFlagLoadedDrawTargeting AllWeapons TinyFontNameSmallFontName MedFontNameLargerFontThanGetMediumFontForStrLen LoadFont DrawActorDrawTileClippedDrawTextClippedWrapStringToArrayDrawTileStretched TooManyBotsFindTeamDesignationDrawTileJustifiedDefaultMusicMaxTime MusicMaxTimeDrawTileScaled OtherTeamUseMediumFontDrawTextJustifiedSetPos UseSmallFont SetOriginSetClip FriendlyName DrawPattern DrawIcon DrawRect bFadeOut SetDrawColor MakeColorGetInventoryClassPlayReceivedMessage DrawVerticalDrawHorizontal ReplaceWith DrawLineDisplayPortrait DrawBracketDrawBoxEnvironmentSizeEnvironmentDiffusionRoomRoomHF DecayTimeGetBeaconAddress DecayHFRatio DecayLFRatio ReflectionsReflectionsDelayReverb ReverbDelay CopyMessage ClearMessagePlayStartupMessage EchoTimeClear PostUpdate SetMoveFor ShowDebug ShowScoresModulationTime Draw3DLine LocationNameAirAbsorptionHFKillZConsoleMessageHUDLocalizedMessageConsoleFontSize HFReference LFReferenceDistanceFogColorDistanceFogStartDistanceFogEndDistanceFogBlendTimeConsoleMessageCount ConsoleColorPausedMessageConnectingMessageSavingMessageLoadingMessageHudCanvasScale bMessageBeep MOTDColorProgressFadeTimeProgressFontName LargeFontAmbientSaturationBigFont TexUPanSpeed TexVPanSpeed ZoneSoundMedFontbDecayTimeScale SmallFontzoombReflectionsScalebReflectionsDelayScale bReverbScale ZoneActorsbReverbDelayScalebEchoTimeScalebDecayHFLimitExtraBodyPart AST1_Day AST1_Always AST1_Night AST1_WaterAST1_RangeTimeURL NTimeColorWarp NTimeHSVUnWarp NTimeScaleAM_NoneUseDefaultMapWireframeTextureWhiteSquareTextureC_TerrainWire LargeVertex TimeDilation C_AnimMeshC_ConstraintLineC_VolumeBrush C_StaticMeshC_OrthoBackgroundC_Mover C_ZoneWire C_ScaleBoxHi C_ScaleBox C_ActorArrowC_WireGridAxisPDL_Low PDL_Medium PDL_HighPhysicsDetailLevelKarmaTimeScaleRagdollTimeScale MaxRagdollsKarmaGravScalebKStaticFrictionC_WireBackgroundC_NonSolidWireC_SemiSolidWireC_MaskC_WhiteC_BlackVisibleGroupsC_ActorHiWireClientWeaponEventSuggestDefenseStyleSuggestAttackStyle DetailMode GetAIRating GetRating SplashJump AmmoStatus CanAttackbCapFramerate C_ActorWire C_Invalid SetAITarget C_BrushSnapC_BrushVertexIncrementFlashCount IsFiring FireHackRecommendSplashDamageDefaultTextureFocusOnLeader SplashDamage LEVACT_NoneLEVACT_LoadingLEVACT_SavingLEVACT_ConnectingLEVACT_PrecachingRecommendRangedAttackRangedAttackTimeNM_StandaloneNM_DedicatedServerNM_ListenServer NM_Client FireAdjust FlashLength MuzzleScale C_GreyWire DisplayFOV PreCacheGame NameColorDefaultGravityMessageNoAmmo TraceDistCurrentRating AIRating ShakeSpeed ShakeVert ShakeMagAutoSwitchPriority bCanThrowIsEntry GetGameClassC_SubtractWireUsedUp C_AddWire C_Current GetLocalURL IsDemoBuild C_SelectThisIsNeverExecutedC_Pivot UseCharge C_BrushWire REGION_HSV REGION_YCBCRC_GroundHighlight REGION_RGBREGION_POSTEFFECTDATAIDC_GroundPlanePLAYTYPE_MAXCOR_TO_MINCORPLAYTYPE_ORG_TO_MINCORPLAYTYPE_MAXCOR_TO_ORG C_WorldBox AM_LocationAM_RHAM_LHAM_RAMaxAutoAimRangeWarnTargetPctAM_LAStaticItemNameAM_WingAM_BoneSpecifiedAM_AliasSpecifiedCurPos AM_Trail AM_Agathion EPLT_DAMAGEEPLT_ABNORMAL EPLT_SKILL UseSound EET_NoneEET_FireCrackerupdaterelative EET_SoulShot ItemNameEET_SpiritShot EET_Cubic bUseFogInfoPlayerViewOffsetEET_SoundCrystalLocalStandardWorldStandard LogVersion LogInfoURL GameCreatorGameCreatorURLDecoderRingURLLocalBatcherURLInventoryGroupLocalStatsURLWorldBatcherURLWorldBatcherParamsWorldStatsURL LocalLogDir WorldLogDirGetWeaponClass IsOfType EEP_None GenerateLogsEEP_FireCrackerSmallEEP_FireCrackerMiddleEEP_FireCrackerLargeEEP_SoulGradeNoneEEP_SoulGradeDEEP_SoulGradeCSuicideMessageEEP_SoulGradeBExecuteLocalLogBatcherExecuteSilentLogBatcher BatchLocalExecuteWorldLogBatcherBrowseRelativeLocalURL InitialCheck LogMutatorGetPlayerChecksumIncrementKills GetGMTRefEEP_SoulGradeAKDamageImpulse DamageDescEEP_SoulGradeSEEP_SpiritGradeNoneEEP_SpiritGradeDEEP_SpiritGradeCEEP_SpiritGradeB bCausesBlood bSkeletizeEEP_SpiritGradeAEEP_SpiritGradeSbSpawnOnTargetbRelativeToCylinderbAdjustLifeTimeLogPlayerDisconnectLogKill SIT_NONE SIT_FADE SIT_MESSAGESIT_SLIDE_STARTLogNameChangeLogTeamChangeLogTypingEventSIT_SLIDE_CHANGE LogPickupLogItemActivateLogItemDeactivateLogSpecialEvent FiringSpeedSIT_SLIDE_MOVESIT_SLIDE_ENDSIT_POST_EFFECTUCM_SPECIAL_VIEWSpeed LogGameStartUCM_FIXED_CAMERA DeActivateUCM_FREE_CAMERAfucked LifeTimeFWind Watermark GetChecksum FileFlush ZoneTrigger WayBeaconGetStatsIdentifier VolumeTimer VoicePackbIgnoreTeammatesTestObj Suicided ObjectPool MatchInfoMapList GameRules GameMessage FellLavafell LocalMessageFailedConnectDynamicProjectorMessagingSpectatorDemoRecSpectatorDecalDamTypeTelefraggedCrushedBroadcastHandlerBitmap ArmorPickupTeamScoreEvent SDT_ALPHAAccessControl SDT_LEFT SDT_RIGHT TransmogrifySDT_UPStaticPrecacheRemoveFromNavigation IPPolicies IPBannedWrongPassword NeedPassword AdminClassAddToNavigation SDT_DOWNRespawnEffectTimeSetAdminPassword NIT_SPAWN NIT_DESPAWN NIT_MOVENIT_USE_SKILLNIT_PLAY_ANIMATIONbPredictRespawns bAmbientGlowNIT_AIRSHIP_SPAWNNIT_AIRSHIP_MOVE MaxDist2DSuggestedKeyFrame bChangesYaw NIT_ABNORMALNIT_EFFECT_SPAWNbPrimaryStart PIT_SPAWNbSinglePlayerStart bCoopStart PIT_DESPAWNGetMoveTargetFor PIT_TELEPORT bIsUniquebIsConsoleMessage bFadeMessagebInitiallyClosedJumpZModifier JumpVelocityPIT_SELECTTARGETPIT_EQUIPITEMAlphaXPos FontSizeRenderComplexMessage PIT_MOVEGetRelatedStringAssembleString PIT_ATTACK PIT_USESKILL PIT_PLAYANIM GetColor GetOffsetbSpecialForced GetFontSizebDestinationOnly bNotBased GetLifeTime PIT_ABNORMALPIT_SPAWNEFFECTbNoAutoConnectSwitchLevelMessage LeftMessageFailedTeamMessageFailedPlaceMessageFailedSpawnMessageEnteredMessageMaxedOutMessageOvertimeMessageGlobalNameChangeNewTeamMessage Localize NoNameChange VoteStarted VotePassedMustHaveStatsNewPlayerMessageSWT_UPPERLEFTSWT_UPPERCENTERSWT_UPPERRIGHTSWT_MIDDLELEFTbPropagatesSoundSWT_MIDDLECENTERSWT_MIDDLERIGHTSWT_LOWERLEFTSWT_LOWERCENTER+MapsOtherTriggerTurnsOff-OtherTriggerTurnsOnOtherTriggerTogglesGetSmallerFontFor HaveHalfFontGetSmallFontForWorldSpaceOverlaysVehicleStateReceived InitTitleUpdateCharacterTornOff FormatTime StartCrouchSpawnPlayerPawnSpawnDefaultPlayerPawn SoakStopbInitiallyActiveTT_HumanPlayerProximityShowUpgradeMenubTrue1 TT_ShootbTrue2TT_AnyProximityTT_ClassProximityTT_PlayerProximityxnumpppsxxTT_PawnProximity MaxViewAngle ShotNotify MaxViewDist StartleBotsSetupSpecialPathAbilitiesSetSimulationCollisionSTest GetOrdersGetOrderObject SetOrdersSetRequiredGameResolutionSetInitialState SetHeadScaleSetAnimActionServerValidationResponseTestXServerGetVoiceChattersServerChangeVoiceChatter TestLimitorWaitToSeeEnemyServerCallback ReplaceMenuTestContinueForTestContinueWhileTestContinueDoUntilTestContinueForEachRenderTextureRemoveInteraction Process_TickProcess_PreRenderbAdjustFromWallsProcess_PostRenderAABBCCAADDAAEEDDAAProcess_KeyTypeProcess_KeyEventPreshotNotify PostTeleport PostLogin PlayerList RestartMap PlayJump PlayFallingPickRandomTauntFor PlayerSeesMe OwnerPossessOnOpenOnCloseStaticMeshDecoInfo OnAdminReplyStaticMeshDecorationLayerDataNotifyMissedJumpNotifyJumpApexNotifyHitMoverDECOSORT_NoSortDECOSORT_BackToFrontDECOSORT_FrontToBack NotifyDieNeedsMenuResolutionMonitoredPawnAlert LongFallViewFixSetHitCheckCameraMinDistUseHitCheckCameraOffLoginUseHitCheckCameraOn SetFlyYawShowPlayerPawnHidePlayerPawnGetWaitSeqNameGetMoveSeqNameLogGameSpecial2ManuallyCameraSpeed VoiceHandleStaticMeshDeco MusicHandlebExactProjectileCollisionNViewShakeMgrPtrLogGameSpecialNViewShakePtrNpcZoomCamMode NZCM_NormalNZCM_ZoomingOutNZCM_ZoomingIn NZCM_ZoomInMinZoomingDistMaxZoomingDistL2NetPostLoginbr_bLoopItemMusicbCanPlayMusicFCT_FlightTransformbUseL2RotatorRandomStartFCT_VehicleControllerFCT_VehicleRider FCT_PawnLeaveVoiceChat L2NetLoginL2GameActionNotifyKVelDropBelowChangeAlwaysMouseLookChangeStairLookKVehicleUpdateParamsKSkelConvulse KForceExceed bRandomStartKeyFrameReached KApplyForce InspectionInitInputSystem InitializedBaseSpectating DormRadiusInitializeController InitGame GetSpawnRateGetSlaveDestinationGetSimulationCollisionGetHitEffectNameGetDestination GameEnding ForceKillClearDoubleClick EndCrouch PB_ModulateDemoPlaySoundClientValidateClientOpenMenuPB_NonePB_AlphaBlendPB_AddMaterialBlendingOpClientNameChange ProjTextureClientHearSoundMaxTraceDistanceClientCloseMenubProjectTerrainChangePawnStateAttackedNotifyAssociateAttackedNotify AnimBeginAllowDetourToCreateCameraEffectAddInteraction bGradientAddCheatManagerbProjectOnAlphaAcceptInventory GameStats KBSJoint BehindViewKHinge KConeLimitGradientTexture SwitchLevel SwitchTeamProjectorRadius KConstraintKCarWheelJointKTireL2CenterdDiamondSWT_LOWERRIGHTSWT_BOTTOMCENTER L2SceneItem L2SceneInfo NAgathionNCubicsUpdateDesireLocation NProjectile ActivateItem PrevItem GetWeaponNSkillProjectile L2NMoverbShadowActiveL2EffectEmitterL2SkillEffect L2NTimeLightUpdateLightInfo CheckVisibleIsUnderWaterCamera InitShadowActivateInventoryItem L2NEnvLight ShowMenuPause QuickLoad LT_SteadyLT_None QuickSave LT_Pulse LT_Blink LT_Flicker LT_StrobeLT_BackdropLightLT_SubtlePulseLT_TexturePaletteOnceLT_TexturePaletteLoop LT_FadeOutLT_Fade LightType LocalTravelLE_NoneLE_TorchWaver LE_FireWaverLE_WateryShimmerLE_Searchlight LE_SlowWave LE_FastWave LE_CloudCastLE_StaticSpot LE_Shock LE_DiscoLE_Warp LE_SpotlightLE_NonIncidence LE_ShellLE_OmniBumpMapLE_Interference LE_Cylinder LE_Rotor LE_SunlightLE_QuadraticNonIncidenceSWAT_0LightBrightness LightRadiusSWAT_1LightSaturation LightPeriodSpeech LightConebSunlightColor LevelObjectAmbientSoundObject ClipMarkerClientAdjustGlow ClientFlash PolyMarker SetFOVAngleMaxCoronaSize ReachSpec PathNodeScoutInterpolationPoint EEL_PawnOnlyEEL_WorldOnlyEEL_All GetFreeMoveInventorySpot AIMarkerWarpZoneMarker SavedMovePlayerReplicationInfoVeryShortClientAdjustPositionMoveAutonomous InternetInfo Ammunition VehiclePartVehicleMeshPartVehicleServerPartDefaultPhysicsVolumePotentialClimbWatcherSmallNavigationPointClientSetFixedCameraShowGun RootBoneRightHandBone LeftHandBone RightArmBone LeftArmBone SpineBone LowbodyBone CapeBone HeadBoneRightFootBone LeftFootBone WingBoneLadderSetWeaponHand AutoLadder AutoDoorEffectSpawnBoneIdxReplicationInfoInventoryAttachmentWeaponAttachmentSetMouseAccelSetMouseSmoothingSetSensitivity ResetFOVSetFOVAntiPortalActor JumpDest StopZoom Triggers ToggleZoom AvoidMarkerClientReliablePlaySoundCarriedObjectPlayAnnouncementNMovableSunLightUpdateFlashComponentEnvCreatureManagerInfo ViewNextBot L2Pickup AmbientSoundL2Dice NACT_NONENACT_MELEEATTACKNACT_RANGEDATTACK NACT_PICITEMNACT_CHANGEITEMNACT_SKILLUSENACT_SKILLINPUTWAITNACT_THROWATTACKNACT_SHOTATTACKNACT_PRIVATESTORENACT_OBSERVING InspectorNAttackActionParamExtraMeshDataNSunSpawnDefaultHUDNMoon MusicVolumeFindStairRotationNPrimeActionParamPasteFromClipboardCopyToClipboardGetDefaultURLL2Alarm UpdateURLNAtkConsumeItemParamSetViewTargetResetKeyboardNSilhouetteParamGetEntryLevelGetServerNetworkAddressGetPlayerNetworkAddress InputClass CheatClassEnemyTurnSpeedLocalMessageClass L2Indicator OwnCamera ViewingFromNoPauseMessageQuickSaveStringbEnableFaceRotationbNpcProgressTimeOutMaxTimeMargin FlashFogServerBlockingVolumeSpawnableStaticMeshActorNLine CameraDist OrthoZoomMaxResponseTimeAnnouncerVolumeAttackSpeedRateNonAttackSpeedRateSkillSpeedRatePhysicalSkillSpeedRate bZeroRollbAlwaysMouseLookL2Float ShuttleDoorDontReuseTaunt AutoTauntStartMonitoring ShuttleWallSkyRenderInfoGroundMaxSpeedGroundMinSpeedWaterMaxSpeedWaterMinSpeed AirMaxSpeed AirMinSpeedCheckFutureSight SkyMeshActorClientSetWeaponUM_NONEUM_ONCE UM_FORCEAirShipSWAT_2_NOTUSEWT_HANDWT_1HSWT_2HSWT_DUALWT_POLEWT_BOW WT_THROW WT_DUALFIST WT_CROSSBOW WT_RAPIERWT_DUALDAGGER BeamEmitterRD_NONE RD_STRIDER RD_WYVERNRD_WOLFRD_TRANSFORM_HORSERD_TRANSFORM_LIONRD_TRANSFORM_SLEDGERD_TRANSFORM_PLATFORMSWAT_3_NOTUSESWAT_4_NOTUSE BlackWhite GlowEffectSWAT_5_NOTUSESWAT_6_NOTUSESWAT_7_NOTUSE FLY_NONE FLY_BIRDFLY_FLOATING_AFLY_FLOATING_B FLY_SHUTTLESWAT_8_NOTUSESWAT_9_NOTUSE Brightness FST_NONE FST_WAIT FST_BATTLEL2Radar AdjustTossWouldReactToSeeingWouldReactToNoiseCanvas CheatManagerSWAT_10_NOTUSESWAT_11SWAT_12 SendMessageSWAT_13 ScreenItemFont GameEngine CameraEffect HDREffect InteractionBaseGUIController InteractionsInteractionMasterNpcItem bReadyToWarpConstantMaterial TexMatrix TexModifier VertexColorOpacityModifierMeshComponentMeshContainer CameraItem StopWaitingInLatentExecutionPickAnyTarget MaxRange PickTargetRemoveController WaitAnimNameAddControllerFindBestInventoryPathWaitForLandingPickWallAdjustactorReachablepointReachable EAdjustJumpFindRandomDestFindPathTowardNearestFindPathToInterceptFindPathToward FindPathToCanSeeFinishRotation MoveTowardMoveToPlayerReplicationInfoClassAcquisitionYawRateParticleMaterialhome WaitTypeSTP_CHAIR_SITSTP_FAKE_DEAD_STANDSTP_FAKE_DEAD STP_STANDSTP_SIT PMT_FAST PMT_SLOWbMyControllerWaterHitEmitterL2MovableStaticMeshActor HandednessProjectorMaterialInspectorFunc006InspectorFunc005InspectorFunc004InspectorFunc003InspectorFunc002InspectorFunc001 SunScale MoonScaleRealtimeGenerationTexture MusicItem bAutoPath ClimbDirPcItemRibbonEmitter MeshObjectActionMoveCamera StepSoundID StepSound KBuoyancy ActionPause ActionWarpFluidFrictionTerminalVelocityGroundFrictionGravity bClampFluidZoneMusicIntervalbZoneMusicRandomPlaybDayMusicRandomPlaybNightMusicRandomPlayNightMusicIntervalDayMusicIntervalnNightMusicID nMusicID MatDemoActorFullFadeSecondsSubActionFadeSubActionTrigger TempScale PostScale MainScaleCSG_DeintersectCSG_Intersect CSG_SubtractCSG_Add CSG_Active SubActionFOVBattleAnimName L2TAG_BATTLE L2TAG_WAIT L2TAG_NONESkyRenderShapeSRS_RECTANGLE SRS_CIRCLESubActionCameraShakeSubActionOrientationSubActionGameSpeed MatObject MatSubActionRandomAnimNameSubActionSceneSpeed LookTargetLight DynamicLightScriptedTextureShadowBitmapMaterialOpenTimedMoverSimulationDataSimulationSpringConstraintSimulationSphereCollisionSimulationCollisionSimulationCylinderCollisionSimulationNotifyKScale SetKeyframeInterpolateTobClosed KScale3DAnimNotify_AttackItem StayOpenTime MoveTimeNumKeys BT_AnyBump BT_PawnBumpBT_PlayerBumpMoverGlideTypeMV_GlideByTimeMV_MoveByTimeMoverEncroachTypeME_IgnoreWhenEncroachME_CrushWhenEncroachME_ReturnWhenEncroachME_StopWhenEncroachAnimNotify_AttackPreShotAnimNotify_Channeling RangeHeight CubicIndexECMT_ONVEHICLEECMT_FLOATSTART ECMT_BUFFECMT_SKILLUSE ECMT_FLOAT ECMT_FOLLOWCUBIC_PHANTOMS_SMARTCUBIC_ELEMENTALS_SMARTCUBIC_WARLOCK_SMARTCUBIC_SHILLIENK_SMARTCUBIC_TEMPLEK_SMARTCUBIC_ATTRACT CUBIC_SHOCK bJumpCapable bCanJump bCanWalkCUBIC_WATER_DOTCUBIC_PARALYZE CUBIC_DEBUF CUBIC_POISON CUBIC_HEAL CUBIC_DRAIN CUBIC_DDCUBIC_DO_NOT_EXISTAnimNotify_SwimSound AccSpeedAnimNotify_Scripted AnimNotify SparkEmitterSpriteEmitter FrequencyKImpactThresholdKMassMovableStaticMeshActorKLinearDamping VanishCoefBoostVanishCoefKAngularDamping FadeRange NumSteps SetDisabled bLOSHearing SetSizeScaleTerrainMaterialBitmapMaterialbSetSizeScaleVisibilityInterpRange ShakeTime TrailEmitterSoundPitchMaxSoundPitchMinbUseCompressedPosition bWeaponBob SpeedRate AutoDestroybSpecialCalcViewRenderedMaterialUserDefinableMaterialKActorGravScale Visibility DesiredSpeedMaxDesiredSpeedKVelDropBelowThresholdHearingThreshold TryToDrive SightRadiusbHighDetailOnlyParticleEmitterAvgPhysicsTime GraphDatabHistoryWarmupExitPositions NeedMasterRandomAnimPercentOriginalRotationRate EAMT_ATTACHEAMT_ONVEHICLE EAMT_FLOAT EAMT_FOLLOWEAB_L_FOOTBONEEAB_R_FOOTBONE GroundSpeed WaterSpeed AirSpeed LadderSpeedVertMeshEmitterJumpZ AirControl WalkingPct CrouchedPct MaxFallSpeedEAB_L_ARMBONEEAB_R_ARMBONEEAB_L_HANDBONEEAB_R_HANDBONEBaseEyeHeight EyeHeightEAB_SPINEBONE EAB_HEADBONE CrouchHeight CrouchRadius EAB_NONE EAT_ATTACHEDHealth EAT_DEFAULTAddVehiclePartGetTypeRandomPercent HeadScale RandomTime MoveSpeed noise1timeTurningTickCountMoveDownTickCountMoveUpTickCount noise2timeBoostTickCountVehiclePartInfo VT_SHUTTLEBob VT_AIR_SHIPVT_PASSENGER_SHIPVT_NONEViewportWindowControllerSoundDampeningDamageScaling Keypoint CloseTime OpenTime DOOR_CLOSED DOOR_CLOSING DOOR_OPENED DOOR_OPENINGGetRefSkeletonNumGetShieldItemSoundGetDefenseItemSoundNPawnLightPtrNAbnormalStatPtrNAppendixEffectPtrNWeaponEffectPtrNCursedWeaponEffectPtrNBoneScalerStatPtrSetRelativeCoords NotifyAttackHoldCarriedObjectPlayVictoryAnimationDecorationListDecoVolumeObject bClientOnlyPlayerbDestroyOnSimErrorKConvulseSpacingReduceCylinderPlayNextAnimationShrink HeldEnemyCacheSizeMegs HeldFriendly SPS_NONE SPS_ONCE SPS_TWICE HeldEnemy Home  DescriptionPlayMoverHitSoundLandMovementStateWaterMovementStateHeldFriendly DodgeMPStart AttractModeConnectFailureTitleConsoleJumpedRole righthandGetTeam battlewait06GibSpawnAuto TranslocTravel FinishedBaseMovementRateComboFinishedJumpingDefault AnimTweaksBlendChangeTimeSwitchLowGrav SceneEnded SceneStartedAllActorLeavingVolumeInCurrentComboActorEnteredVolumePostNetReceiveNotifyHeadVolumeChange AIHearSound NotifyBumpShakeTakeFallingDamage SeeMonsterUpdateEyeHeightJumpOutOfWaterbNeedTurnAnim HearNoise BoundRadiusEnemyNotVisible bShowGuiltyfTotalAcceleratedBlickTimefInitBlinkGapflastBlinkGap SeePlayerAdjustedStrengthModifyVelocity aimerrorMayFallHeadVolumeChangeEndedRotationPressingAltFire PressingFirefAirSpeedAccelCameraWalkingAccelModeNearMoveTargetCastingEffectScale InGodMode ZoneChangeDetachIsFirstPerson GainedChildCameraFinishedComboJumpingbip01LastAttackItemClassIDWeapon_R_Bone BobDampingWeapon_L_BoneShield_L_BoneShield_R_Bone bip01_spine2 bip01_spine Cape_BoneNameNCollisionInfo Bip01_head bip01_r_foot bip01_l_foot ViewActor bip01_spine3 NAME_Nonebattle battlewait01 battlewait03 PlayAnimUMColosseumTeam battlewait05 battlewait02NIllusionParam battlewait04 TCS_Stream2GetMagicThrow_A_AnimNameGetMagicShot_A_AnimNameGetMagicNoTarget_A_AnimNameNIllusionPawnParamGetCastEnd_A_AnimNameGetCastLong_A_AnimNameGetCastMid_A_AnimNameGetCastShort_A_AnimNameChargeAniNameGetRiderDeathAnimNameGetRiderDeathWaitAnimNameGetRiderRunAnimNameGetRiderAtkAnimNameGetRiderWaitAnimNameGetThrowAnimNameGetPicItemAnimNameGetMagicFriendAnimNameGetMagicNoTargetAnimNamebBR_ShowTargetNameGetTurnAnimNameGetWalkAnimNameGetRunAnimNameGetJumpAnimNameGetBJumpAnimNameGetWaitAnimNameGetAtkWaitAnimNameGetSitAnimNameGetSitWaitAnimNameGetStandAnimNameGetDeathStandAnimNameGetChairSitAnimNameGetChairWaitAnimNameGetChairStandAnimNameGetStunAnimNameGetAtk01AnimNameGetAtk02AnimNameGetAtk03AnimNameGetAtkUpAnimNameGetAtkDownAnimNameGetSpAtk01AnimNameGetSpAtk02AnimNameGetSpAtk03AnimNameGetSpAtk04AnimNameGetSpAtk05AnimNameGetSpAtk06AnimNameGetSpAtk07AnimNameGetSpAtk08AnimNameGetSpAtk09AnimNameGetSpAtk10AnimNameGetSpAtk11AnimNameGetSpAtk12AnimNameGetSpAtk13AnimNameGetSpAtk14AnimNameGetSpAtk15AnimNameGetSpAtk16AnimNameGetSpAtk17AnimNameGetSpAtk18AnimNameGetSpAtk19AnimNameGetSpAtk20AnimNameGetSpAtk21AnimNameGetSpAtk22AnimNameGetSpAtk23AnimNameGetSpAtk24AnimNameGetSpAtk25AnimNameGetSpAtk26AnimNameGetSpAtk27AnimNameGetSpAtk28AnimNameGetShieldAtkAnimNameGetDefenceAnimNameGetDodgeAnimNameGetDeathAnimNameGetDeathWaitAnimNameGetDamageAnimNameGetCastShortAnimNameGetCastMidAnimNameGetCastLongAnimNameGetCastEndAnimNameGetMagicThrowAnimNameGetMagicShotAnimNamebHideLeftHandMeshbHideRightHandMesh PawnStateDamageEffectOffset"HasDamageEffectOffsetForLargePawn%bDamageEffectRelativeCollisionRadius EquipItembUseDefaultMeshbChangeWeaponNIllusionPawnListNIllusionSpawnList TotalTime IllusionPawnbUseIllusionColorIllusionColorSeqName SequenceName SpawnDelay RemainTimeSkillLoopingSoundListGoalColosseumPartyNum PawnPositionUpdateMovementAnimbColosseumSelected bHideRight bHideLeftbPendingTransform bNeedPostSetPawnResourceProcessAutoTargetPawnfAutoTargetPendingTimeCameraLocationCameraRotationNQuestStepList NQuestListExCollisionInfosHairAcceMeshRotOriginHairAcceMeshOriginbNewIsWalkingHelmMeshRotOrigin OldLadderHelmMeshOriginOriCollisionHeight DrawOffsetOriCollisionRadiusAttackItemVariationOption2AttackItemVariationOption1WBobAttackItemEnchantedValueSpeed2DSoundableBootsClassIDCursedWeaponLevelbIsCursedWeapon bRendered bHeroWeaponbIsHerobUseDarkEffectCastingEffectOffsetfMaxAirSpeedIncRate fMinAirSpeed fMaxAirSpeedDeadNameOffset NewTarget NameOffsetLobbyWaitAnimFiredAmmunition projStartbLobbyCharacterfCurAcceleratedBlinkTime fCurBlinkGapfAcceleratedRatepick fBlinkTimebPlayerCharacter WeaponClassTargetDirSpineRotjumpDir OldVelocityMarkCrouch HeightAdjustBR_ExtraVisualEffectType NewVelocityAppendixEffectTypeAbnormalVisualEffectLifeTimeEffectiveSpeed!AbnormalVisualEffectStopMoveFlagAbnormalVisualEffectTypeRecipeShopMsgPrivateStoreWholeChatMsgPrivateBuyChatMsgPrivateStoreChatMsgRecentHitWaterIntervalHitWaterEffectTimerTossVelChatMsgBackwardStrafeBias DesiredClassForwardStrafeBiasNewItemLastMovementBlendStartTimeLinkTurnRightAnim OldWeapon TurnLeftAnimMovementAnimsOldAcceleration OldRotYaw decorMasssmooth MaxEyeHeight OldEyeHeight HitActor OldPhysics bPlayedDeathbInitializeAnimation bWasOnGround actualDamage bWasWalking bWasCrouchedbPhysicsAnimUpdateTearOffMomentumWallnewHeadVolumeHitDamageTypeTakeHitLocation AnimAction WallNormal checkpoint checkNormComboAnimPlayCount bUpdatingComboAnimPlayNameComboAnimPlayNum YawChange PitchChangeLastStartTimeLastStartSpot OnLadder LowGoreBlood BloodEffect BloodOffsetMoDesiredEffectDesiredEmitter SamePoseStat HitRotationESamePoseStatbr_bChangedWeaponEffect FiringModeBR_NAbnormalStatNQuestMarkEffectBoneAttachedEffects finalRot NSpoilEffect NDecoEffectNCursedWeaponEffect NewAction DesiredSound NHeroEffectNWeaponEffectNAppendixEffect Agathion NCubicArrayNBoneScalerStatO Attacker AttackActorkeepframerate showeffectNAbnormalStat NPawnLightHungerEmitter ArrowTargetOverHeadAlarmSimulationCollisionsiState DriverPawn DoorState bShowArrowbLongDeathWaitAnim bSameAnimbIgnoreShadowClippingShadow1Shadow mDoorState OwnerShuttlerelOpenLocationrelCloseLocationrelSafeLocation MenuNameWalkBob WallList DoorListDoorMeshNameListdoornumdooridx EVehicleTypebobtime AppliedBobLandBobLastPainSoundnoise2loudness PartActorPartIDMeshID bAnimationVehiclePartList DriverIDPassengerIDListMaxHPCurHPMaxFuelCurFuel DriverRelLocbAutoCalcDriverLocbStartbBoostbMoveUp bMoveDown OldAltitudeBoostCurTickCount noise2otherMoveUpCurTickCount noise2spotMoveDownCurTickCountnoise1loudnessTurningCurTickCount noise1otherbTrip TripTarget noise1spotRotationSpeed bRandomSound FootVolumeReducedDamageType RandomTickWaveTotalTimeWaveElapsedTimeWaveMaxHeightWaveOldHeightbWaveOnDriverElasticCameraDistDriverElasticCameraVelocity LastPainTimeUnderWaterTimea_Class a_OffsetNewPosRotXRotYRotZ RouteName MovingSpeedRotatingSpeedTimeToNextAction SpeakerIDWaitingMessageID StationIDMaxLandingVelocityEAgathionType BreathTime HeadVolume AgathionTypeEAttachedBoneOldZ SplashTimeFloor SelectedItemPendingWeapon OwnerNameConstantAcceleration SpawnTime UncrouchTime AttachedBoneEAgathionMovementTypeSerpentineTimeSerpentineDistSerpentineDirNextPathRadius MovementType DestLocationDestinationOffsetLastValidAnchorTimeRandomSpecialAnimationStateFindAnchorFailedTimeMasterMasterWaitTypeMasterWaitTypeChangeUpdate Steering ThrottleDriver LastAnchor DrivePos DriveRotDestroyEffectClass bAutoDrivebGetOutParentFactorybVehicleIsFiringbVehicleIsAltFiring FilterFramesCameraHistoryNextHistorySlotAnchor MeleeRange DataName DataValueSkillModifier bWasAltFirePeripheralVision Alertness AIScriptTag FlashCount bIsTypingbNoWeaponFiring bForceLeave havePlaced tryPlace CamLookAt averageOvergotOut S_Emitter EmittersGlobalOffsetRangeExtraTickEmitters Palette89TimeTillResetRange bSpecialHUD AutoResetDisableFogging AutoReplay bRotEmitterFixedBoundingBox RotPerSecondFixedBoundingBoxExpandbHideRegularHUDbCachedRelevantbIgnorePlayFiring SoundLoopingSoundFadeInDurationSoundFadeOutStartSoundFadeOutDurationActorForcesEnabledUseParticleProjectorsDeleteParticleEmitters BoundingBoxEmitterRadiusEmitterHeight GlobalOffsetTimeTillResetFixedLifeTimeTrailerPrePivotFirstSpawnParticle bUseLightEmitterLightingType EL_LifeSpanEL_InitialDelaypEmitterLightbRollToDesired bUseQuake ShakeTypeShakeIntensity ShakeVector ShakeRange ShakeCount bAutoFireEQ_InitialDelay ShakeScopeShakeLiveTimeShakeStopTime VisibleLimit bDontPossessbAroundCornerHearingbMuffledHearing bSetMatrixEnchantOffset EnchantScale EnchantBoneEditorEnchantMatrixbIsSkillEffectEmitterbUpdate bAllDead bAllDisabled bActorForcesbOnInitialDelay m_fLifeTime m_fCurTimeIsScreenEffect bOrthoRender fOrthoCoordX fOrthoCoordYbOrthoVisiblebAdjacentZoneHearingbSameZoneHearingbAmbientCreaturedisbAttachToPawn bByOpacitybUpdatingDisplaybCanPickupInventory FadeAlphaFadeAlphaByNum RecentVolumeRecentFadeSecondsbAutoActivatebInvulnerableBody bThumpedIndexPEbDirectHitWallbSimGravityDisabledbClientCollisionbSteadyFiringbCanWalkOffLedgesbNoVelocityUpdatebIgnoreForcesbUpdateEyeheight PawnVelocitybSimulateGravityLastTargetLocationLastTargetRotation TraceActorbTrackingCamera bPreDestroy bCountJumpsbHermiteInterpolation VelInitial VelFinal LocInitial DurationCurTimeDisp bBezierCurveControlPointsHitRotESummonCubicTypebNoJumpAdjustbStopAtLedges bAvoidLedgesbCanDoubleJump bCanStrafebCanClimbLaddersbCanFly bCanSwimbReducedSpeed bCrawler bCanCrouchbTryToUncrouch bIsCrouchedbWantsToCrouch bWarping CubicTypeECubicMovementType bIsWalking bUpAndOut bJustLanded LastViewerLastRealViewerNetRelevancyTimeCubicMovementTypePcCastHideLeftWeapon TargetPawnSkillActiveTimebCanBeAttackedbOpen DamageGrade MoverName MeshGradePcCastHideRightWeaponNpcSocialHideLeftWeaponHitActorNormalNpcSocialHideRightWeapon DamageSounds BrokenSoundsEMoverEncroachTypePcSocialHideLeftWeaponPcSocialHideRightWeaponStandAnimRate SitAnimRateThrowAnimRateEMoverGlideTypeMagicFriendAnimRateMagicNoTargetAnimRateMagicShotAnimRate EBumpTypeMagicThrowAnimRateCastShortEndAnimRateCastLongAnimRate BumpTypeKeyNum PrevKeyNumCastMidAnimRateWorldRaytraceKeyBrushRaytraceKeyCastShortAnimRateShieldAtkAnimRate OtherTimeEncroachDamagebTriggerOnceOnlybSlavebUseTriggeredbDamageTriggeredbDynamicLightMoverbUseShortestRotationSpAtk04AnimRate bIsLeaderPlayerBumpEvent BumpEvent SavedTriggerDamageThresholdnumTriggerEventsLeader Follower DelayTime OpeningSound OpenedSound ClosingSound ClosedSoundMoveAmbientSound LoopSoundSpAtk03AnimRate OpeningEvent OpenedEvent ClosingEvent ClosedEvent LoopEventKeyPosKeyRotBasePosOldPos OldPrePivot SavedPosBaseRotOldRot SavedRot PhysAlpha PhysRate bOpening bDelaying bClientPauseSpAtk02AnimRate bPlayerOnly bAutoDoorbNoAIRelevance SimOldPosSimOldRotPitch SimOldRotYawSimOldRotRollSimInterpolate RealPosition RealRotation ClientUpdate AntiPortalsAntiPortalTagSpAtk01AnimRate NewKeyNumAtkDownAnimRate OldKeyNumAtkUpAnimRateAtk03AnimRateAtk02AnimRateAtk01AnimRate RunAnimRate WalkAnimRate RandomAnimMagicThrowAnimNameAMagicShotAnimNameAMagicNoTargetAnimNameACastEndAnimNameACastLongAnimNameACastMidAnimNameACastShortAnimNameADashImpactAnimName DashAnimNameDashWaitAnimNameS_FluidSurfOsc FluidInfoOscTimePhase Palette91SpecialSocial3AnimNamebUseHazeRingcolorbUseCloudColorbUseBackgroundcolorBackgroundcolorZScaleSpecialSocial2AnimName paramaterESkyRenderShapeSpecialSocial1AnimNameShieldWaitAnimNameGlideAnimNameEffectDistanceXEffectDistanceYGradiationDistanceYGradiationDistanceX EffectRadiusGradiationRadius TagState RiseAnimNameSocialOperateAnimNameSocialCannonAnimName FishTypeGutFakeWaterEffectTimerFakeEffectTimer OldEffectLoc BrightEffectCastEnd2AnimNameCastLong2AnimName SpringSim ECsgOperCastMid2AnimNameCastShort2AnimNameFishEndAnimNameFishPullAnimNameFishControlAnimNameCsgOperUnusedLightMesh PostPivotFishWaitAnimNameFishStartAnimNameSwimAttackWaitAnimName BrushColor PolyFlags bColoredAssociatedActorTagLocationPriority DecoListSwimDeathWaitAnimNameSwimWaitAnimName EffectName SwimAnimNameRelativeOffsetSwimDeathAnimNameRiderDeathAnimNamebForcePlayMusic bLoopMusicRiderDeathWaitAnimNameRiderRunAnimNameRiderAtkAnimNameRiderWaitAnimNameNpcSocialAnimName ZoneMusicIDPcSocialAnimNameThrowAnimNamePicItemAnimName ZoneVelocityMagicFriendAnimNameMagicNoTargetAnimNameMagicShotAnimName DamagePerSec Priority EntrySound ExitSound EntryActor ExitActorMagicThrowAnimNameCastEndAnimNameViewFog PainTimer bPainCausing bDestructive bNoInventorybMoveProjectilesbBounceVelocity bNeutralZone bWaterVolumeCastLongAnimNamebUseDistanceFogColorbUseCellophaneCellophaneColorKExtraLinearDampingKExtraAngularDampingCastMidAnimNameNextPhysicsVolumebL2WaterVolumebL2StepVolumeCastShortAnimNameDamageAnimNameSitDeathWaitAnimNameSitDeathAnimName SplashSizesplashDeathWaitAnimNameDeathAnimNameClimbingAnimation TopAnimationWallDirLookDirDodgeAnimName LadderListbNoPhysicalLadderDefenceAnimNamePendingClimberShieldAtkAnimNameIgnoredStillClimbing ClickSound Latitude LongitudeSpAtk28AnimNameSpAtk27AnimNamebMakeLightmap bMoonLightEnvTypeFlameSpAtk26AnimNameSpAtk25AnimNameInMeshSpAtk24AnimNameSpAtk23AnimNameSpAtk22AnimNameSpAtk21AnimName AnimSeqIndexSpAtk20AnimNameparam3param4DeltaRotation DropSoundCheckLocationAction bActionOn bPendingDropDropEffectActorbDropEffectActor SightCounterSpAtk19AnimNameSpAtk18AnimName bIsPlayer bGodMode bLOSflagbAdvancedTacticsSpAtk17AnimNameSpAtk16AnimName bAdjustingbPreparingMovebControlAnimationsbEnemyInfoValid bNotifyApexbUsePlayerHearingbJumpOverWallbEnemyAcquired bSoaking bHuntPlayerbAllowedToTranslocatebAllowedToImpactJumpbMoveLocationDonebDeadbAutoAttackingbAttackIntendSpAtk15AnimName bChargingbPrepareChargingbFire bAltFire AdjustLocnextController Stimulus MoveTarget FocalPointFocusbRelativeMoveDestinationRel RelActorSelectedCreatureIDSelectedActorReservedMovePointReservedMoveActorReservedMoveDistance PMoveTypeSpAtk14AnimNameSpAtk13AnimName PStopTypeSpAtk12AnimNameSpAtk11AnimNameSpAtk10AnimNameSpAtk09AnimNameSpAtk08AnimNameSpAtk07AnimName PendingMover GoalListSpAtk06AnimNameSpAtk05AnimNameRespawnPredictionTimeSpAtk04AnimNameEnemyTarget LastSeenPosLastSeeingPos LastSeenTimeOldMessageTime RouteCache CurrentPathCurrentPathDir RouteGoal RouteDistLastRouteFindSpAtk03AnimNamePreviousPawnClassGroundPitchTimeViewXViewYViewZMonitorStartLocMonitoredPawnMonitorMaxDistSq FearSpotsLastFailedReachFailedReachTimeFailedReachLocationLastPawnWeaponLATENT_MOVETOWARDSpAtk02AnimNameNewDestination ViewFocus bShouldWalkSpAtk01AnimName bUseStrafingAtkDownAnimNameAtkUpAnimNameAtk03AnimNameaPointAtk02AnimNameanActorbWeightDetoursAtk01AnimName StunAnimName GoalClassChairStandAnimNameChairWaitAnimNameBaseZXYSpeedChairSitAnimNameDeathStandAnimNameStandAnimNameSitWaitAnimName SitAnimName MinWeightAtkWaitAnimNameBJumpAnimName JumpAnimNamebestAim bestDistFireDirDamageFlyAnimName FallAnimName RunAnimNameLatentActionNumber WalkAnimName TurnAnimName LastFootRotIdSoundLocation Parametersproblem EnvironmentaPawn bSwimAfloatbHitGroundInWaterbTreasureMimicEvenbTreasureMimicbIgnoreToWarp IsWarpDest WarpDest WaistAngle PainVolume CurvatureLoadingResourceRefEffTargetLocationbCreatedResourcebTargetSpineRotationbSpineRotation bDemageAct DemageDist MessageIDbDemageStatusBroadcastTypeSkinNotifyNextStartTimeSkinNotifyElapsedTime VWController FishFloat FishLine NoiseMakerCurFishingTypeSeen bBrightFloatTSpeed bNormalizeDest2DVel2DDist2DbFish FishingTypebFly FlyingTypeaSpotFlyTypeRollMag OffsetMag RollRate OffsetRate OffsetTime VehicleTypebDriverbRideCurWeaponType CurRideType RidePawn RideTypeshooter projSpeed WeaponTyperatingUpdateMovementAnimTypeEUpdateMovementAnimTypeHoverMinSpeedpClassHoverMaxSpeed DamageEffect TurningDir WantedYawMaxDistValidateLocationSpeedValidateLocationMoveTimeWalkAnimFrameInMoveMoveEmergencyLevelbLookUpStairs bSnapToLevelMoveToPawnAdjustbKeyboardLook bCenterView bBehindViewbFrozenbUpdatePosition bFixedCamera bJumpStatusbNeverSwitchOnPickup bZooming bAlwaysLevel bSetTurnRot bCheatFlying bFreeCamera MoveTimerbCameraPositionLocked bViewBotUseFixedVisibilitybBlockCloseCamerabValidBehindCamerabForcePrecachebNoVoiceMessagesbNoVoiceTauntsbNoAutoTaunts bAutoTauntbNoMatureLanguage bRenderWidebUseHoldCameraAnnouncerLevelShieldItemClassID AimingHelpDefenseItemClassID WaitDelayaBaseXaBaseYaBaseZaMouseXaMouseY aForwardaTurnaStrafeaUpaLookUpbStrafe bSnapLevelbLook bFreeLook bTurn180bTurnToNearestbXAxisbYAxisDoubleClickDir ShowFlagsMisc1Misc2RendMapAttackItemClassIDRealViewTarget NpcClassID OldCameraLoc OldCameraRot CharClassID LastBodyRot ZoomLevelFixedLocationFixedRotationRenderWorldToCamera LastNeckRotbNotRotationMovingConstantGlowScaleConstantGlowFogLastDistanceFogColorLastDistanceFogStartLastDistanceFogEndCurrentDistanceFogEndTimeSinceLastFogChange LastZoneTargetViewRotationTargetEyeHeightTargetWeaponViewOffsetLastPlaySoundLastPlaySpeech Transition SavedMoves FreeMoves PendingMoveCurrentTimeStampLastUpdateTimeServerTimeStamp TimeMarginClientUpdateTime bTurningOldClientWeapon WeaponUpdateProgressMessageProgressColorbWantChangeYawbFaceRotationbPlayingSpecialAnimCanBeIngnoredCollisionbIgnorePhysicsStatsUsernameStatsPassword bPhysicInit MaxShakeRollMaxShakeOffsetShakeRollRateShakeOffsetRate ShakeOffsetShakeRollTimeShakeOffsetTime TurnTargetbUpdateMovementAnim GroundPitch TurnRot180 OldFloorExtraMeshDatasNAtkConsumeItemFailedPathStartDemoViewPitch DemoViewYawPlayerSecurityForcePrecacheTimeLastPingUpdateLastPhysicsVolumeCurrentDistanceFogStartCurrentDistanceColorVolumeFogBlendRatioUnderWaterLoopSoundCompensateYawCopmensatePitchFloatingSolidSunBeamLastSamplingLocation NActions NPrimeActionNSilhouetteDataRangedAttackConsumeItemIDRangedAttackItemIDNewViewTarget TravelTypeNAssociatedAttackParam NewOption NewValue bSaveDefaultCurAtkShotNumOptionMaxAtkShotNum ActionID ActionTargetSoulshotGradebSpiritbShieldDefense bCriticalNextbMiss NewLabel NActionListCloakCoverMeshBufferNewPawnCloakSkinsBufferCloakMeshBufferLeftArmSkinsBuffer newHUDTypenewScoringTypeNewHUDLeftArmMeshBufferStepgoalFog goalscaleRightArmSkinsBufferRightArmMeshBufferASoundAnnouncementLevelbForceAttenLeftHandSkinsBufferbVolumeControlinAttenLeftHandMeshBufferDrivenVehicleRightHandSkinsBufferNewSongNewTransitionRightHandMeshBufferSubSkinsBufferSubMeshesBuffer MagicInfo WeaponScale CloakSkinsNewFOV LeftArmSkinsRightArmSkinsLeftHandSkinsModeRightHandSkins SubSkinsbHasSecondHeadBoneSecondHeadBoneRightShoulderBonehandLeftShoulderBone IntValueRightUpperArmBoneLeftUpperArmBoneCloakCoverMeshInstanceCloakMeshInstanceLeftArmMeshInstanceRightArmMeshInstanceLeftHandMeshInstanceInAccel ClientLoc ClientRollViewRightHandMeshInstanceNewbRun NewbDuckNewbJumpStatusSubMeshInstancesNewbDoubleJump OldTimeDelta OldAccel clientErr OldTimeStamp DeltaRotViewRotLocDiff ClientVel ClientFloor maxPitch ViewPitchViewYawNewbPressedJumpOldbRunOldbDoubleJumpOldDoubleClickMove ClientBaseClientPhysicsCloakCoverMesh InForward InStrafeInJump CloakMesh LeftArmMesh RightArmMeshRightHandMeshNewLocXNewLocYNewLocZ Palette85 SubMeshesNewVelXNewVelYNewVelZ LeftHandMesh NewFloorX NewFloorY NewFloorZ MoveActor CurrentMoveNewPingS_PawnSunIcon realbRun realbDuck bRealJumpEmitterLightTypefirstEEmitterLightTypeUseOwnFinalBlendNewMoveOldMove LastMove NetMoveDelta BuildAccel AccelNormMoveLocCoronaRotationOffsetCoronaRotationMinCoronaSizeLightLifeTimefogLightPrevTime LightOffTime ShakeRoll ShakeRate LightOnTime bTimeLight LightPhase LightHue ELightEffect Palette83 ELightTypeS_LightShadowLocationBoundingSphereInvItemL2DefaultShadow L2HiddenShadowTexture bBlobShadow RootMotionLightDistanceNewWeaponClassLightDirection LastItem ShadowActorProjectedActorOffsetDesireLocation bAttachMarkDesireLocationGui021 OldLocationOldTeamGradientMatrix RenderInfoFrustumVerticesFrustumPlanes ProjectTagAimSpotOldAim AimOffset BestTarget bNoZAdjust bLeadingAimRotbProjectOnBackfaces ViewDist RealDistbProjectOnUnlit NewEffectRemoveExisting ExEffect EffectIndexbClipStaticMesh EffectClassPTarget bLevelStatic MaxOffsetEProjectorBlending ViewRotationFRoll Palette81GRADIENT_ClipGRADIENT_Fade Proj_Icon a_DriverID OldCrouch OldRotation bSaveJump RandomSounds TurnSoundMoveDownSoundMyFloor CrossDirFwdDir OldFwdDirOldX RealFloor MoveUpSound BasicSoundbtreatAsBlock pShuttle IsSkyDormTranslationRateTranslationMax bRealSpec ScaleRate ScaleMax RotationMax bRandomMax bInitializedTranslationCurrent cameraLoc cameraRottriesbesttrynewdist startYawRotationCurrent ScaleCurrentMenu bDisconnectMsg1Msg2 bCloseAllbCancelTranslationMaxRatioRotationMaxRatioScaleMaxRatio OrgRotationEFixedCameraType OrgScale L2RotatorMaxL2RotatorRatebUseL2RotatorMaxRandombFixCameraRotation CheatFlyYawAutoTrackingPawnSpeedVolumeCameraRadiusHitCheckCameraMinDistFixedDefaultViewNumFixedDefaultGroupNumFixedDefaultCurrentGroupFixedDefaultCameraYawFixedDefaultCameraPitchFixedDefaultCameraDistFixedDefaultCameraViewHeightFixedDefaultCameraHidePlayerFixedDefaultCameraDisableZoomFixedDefaultCameraExteriorViewFixedDefaultCameraMinDistFixedDefaultCameraMaxDistFixedDefaultCameraDisablePitchCameraViewHeightAdjustbUseAutoTrackingPawnbUseVolumeCamerabUseHitCheckCamerabUseExteriorViewbDisableCameraManuallyRotatingbCameraManuallyRotatingbCameraManuallyZoomed bFixViewbCameraMovingToDefaultbUseDefaultCameraYawbUseDefaultCameraPitchbUseDefaultCameraDist bDisableZoombDisablePitchbCameraSpecialMovebCameraMovingToSpecialbKeyboardMovingbKeyboardMovingPermanentlybDesiredKeyboardMoving"bDesiredKeyboardMovingPermanentlybJoypadMovingbDesiredJoypadMoving bDesiredJoypadMovingPermanentlyShouldTurnToMovingDirbObserverModeOnbBroadcastObserverModeOn L2AccelRatiobVehicleStartbGetServerMusic bLockMusicbr_bGetItemMusicL2MovementTagbr_bLockMusicbCameraWalkingOldZoomingDistOldCameraLocationOldCameraRotationOldViewTargetLocationManuallyCameraYawManuallyCameraPitchCurZoomingDistDesiredZoomingDist DesiredPitchCurVolumeCameraRadiusCurFixedDefaultCameraNoDefaultCameraYawDefaultCameraPitchDefaultCameraDistHitCheckCameraDistHitCheckCameraReturnDistCameraViewDeltaTimeSpecialCameraYawSpecialCameraPitchSpecialCameraDistSpecialCameraDistSpeedSpecialCameraYawSpeedSpecialCameraPitchSpeedSpecialCameraDurationSpecialCurCameraYawSpecialCurCameraPitchSpecialCurCameraDist CameraRelYawCameraRelPitchCameraRelRollCameraRelYawSpeedCameraRelPitchSpeedCameraRelRollSpeedCameraCurRelYawCameraCurRelPitchCameraCurRelRollSavedViewTargetYawSavedViewTargetPitchValidateLocationTimeTurningPendingTimeKeyboardMovingDirKeyboardMovingDirFlgKeyboardMovingPendingTimeJoypadMovingDirJoypadMovingPendingTimeKeyboardMovingInputDeltaKeyboardLeftTurnInputDeltaKeyboardRightTurnInputDelta bL2InitMove L2CurrentMaxENPCZoomCameraModeL2CurrentCycleTimeL2CycleDeltaTime L2OrgRotatorYawTime RollTime PitchTime NViewShakeZoneRenderStateNViewShakeMgrMusicWaitTimeDefaultMusicWaitTimeDecoAmbientColorStateChangeEffectNamesnGetServerVoicePlayMusicDelayPlayVoiceDelaybServerMusicNamebServerVoiceNameCameraModeTargetStateStaticMeshs AirEffectCurrentShakeEpicentereCameraLocTypeCalcBoneIndexCalcBoneAnimNameElasticCameraDistElasticCameraAccelElasticCameraVelElasticCameraOldDistSavedZoomOutCamLocSavedZoomOutCamRotZoomCameraLocZoomCameraRotZoomCamDeltaLocPerTimeZoomCamDeltaRotPerTime StepSound_3 StepSound_2 StepSound_1 HideTime ShowTime bTimeReactorAccessoryTypeListCurrAccessoryType AgitStatusAccessoryIndex TargetYawBackYawAgitID TargetPitch BackPitchbAgitDefaultStaticMesh BackDistEDecorationSortOrder VolumeRadiusStaticMeshDecoInstances TempDistTempVecDecoInstances bXArrived bYArrived bZArrived LightWeightbPitchArrived bYawArrivedDepth bNoHumanOnlyTempYaw TempPitch ViewVector bNoMatureTempCameraLocation TempRotation PhraseName S_Camera CommandLine PackOwner CallsignPlaybackActor PlaybackGRI messageIndex messagetype Recipient bHuntingTC MyScriptSkill NewClass bResourcetobFinishedFireST strafeMagFocus2DLoc2DOldViewRotationb3 NewOrders OrderGiverb2b1LotusStrbHomebHeld HolderPRIHolderPie TestRepStr OldTickTimev2 bTriggered SeenActorTag SeenActorv1RequiredViewDir S_Trigger ETriggerTypeMyArraybBool2bBool1bFalse2bFalse1P2 TriggerTypeP1ClassProximityTypeRepeatTriggerTimeReTriggerDelay TriggerTime TriggerActorTriggerActor2bSavedInitialCollisionbSavedInitialActiveHoursMinutes ScreenWidthbDisplayMessages CurrentMap bWasActiveMapNum bKeepTimingS_MaterialTriggerMaterialsToTrigger TriggeredFadeOutAllSongs S_PickupS_NavP ForcedPathsS_Alarm PathListProscribedPathsvisitedWeightbestPathWeightnextNavigationPoint nextOrdered prevOrdered previousPathcostOriginalDamageTransientCost FearCost bEndPointbTransientEndPointtaken bBlocked ResultSet bOneWayPathGRbAlwaysUseStrafingNextGameRules bAutoBuiltNewTeamMessageTrailer FailString RelatedPRI2bPathsChanged RelatedPRI1 bSourceOnlyClipYbMustBeReachableInventoryCacheInventoryDistSeeker IncomingSource PathWeightmyHUDMessageString ChildMessagebOptionalJumpDestNumUpstreamPathsUpstreamPaths NeededJumpCalculatedGravityZ bFromBottombCenter JumpTarget bOffsetYPos JumpSoundS_DoorDoorTag DoorTriggerMyDoor Palette107RecommendedTriggerbBeepbBlockedWhenClosed bDoorOpenbTempNoCollide S_Ladder MyLadder markedScriptmarkedWarpZone Palette109 markedItembComplexStringMaxWait S_Player TeamNumber Receiver SenderPRI broadcasterLastSpawnCampTime S_TeleportProductRequiredbMuteSpectatorsbChangesVelocity bReversesX bReversesY bReversesZTargetVelocity LastFirednewRotmagoldDirDest S_LiftExitLiftTag SentTextMyLift KeyFrame S_LiftCenter LiftTrigger LiftOffsetbAcceptPolicybAcceptAddress PickupCacheInventoryTypebInstantRespawnMaskPolicy bDroppedLastMatchingPolicy PasswordbDontAddDefaultAdmin GamePassword PickupSound PickupForceAdminPasswordFName LogFileNamegeDescGEvent NewPickupBot AlreadyHasdesireVictimCopy siAdminEmail siAdminName siServerNameflagsMyRulesMyMutiengGameGameName ngAuthorngTitletmptab LogStringMeshes bShowBots bLastActiveTempLog NewTeamIndex StatLogFinalLogAr bWatermarkArg4S_Ammo AmmoAmountArg3bThrownArg2Arg1 EventTypebTypingVictimWeaponNameKillerWeaponNameDamageWeaponName VictimPRI bInstantHitbFastInstantHit KillerPRISpecialParam2 SpecialParam SpecialIDbKUseOwnDeathVelNetworkNumberPawnDamageEffectPawnDamageEmitterPawnDamageSoundsLowGoreDamageEffectLowGoreDamageEmitterLowGoreDamageSoundsLowDetailEffectLowDetailEmitterGMTRef DamageKick AbsoluteTime KDeathVel KDeathUpKick Checksum EventString bLogWorld bLowDetail bLogLocal LocalLog bBatchLocalbWorldBatcherError S_InventoryLocalBatcherParamsbDisplayableInv GroupOffset bTossedOut PickupClassChargebWorldContextPlayerViewPivotbDrawingFirstPersonThirdPersonActor CloudTextureTextureDistance StatusIcon FogRange5 FogRange4 FogRange3 FogRange2 FogRange1HazeRingColor CloudColor FogColor SkyColor S_L2FogInfoRegionEffectDataCurrentChoiceCurrentWeapon UseAffectBox RGBMaxColor RGBMinColorMaxAmmo PickupAmmobRecommendSplashDamagebTossed bTrySplash bLeadTargetbSplashDamageProjectileClass HSVMaxColor HSVMinColor FireSoundYcbcrMaxColorYcbcrMinColorFixDataRecommendedFiringMode affectBoxMax affectBoxMin PlayType Palette77 AmmoToAddRegionEffectType NumCopiesbCanHaveMultipleCopies bActivatableExpireMessageActivateSoundDeActivateSoundS_L2RegionEffectInfoAmountstatmat S_Weapon AmmoName AmmoTypePickupAmmoCount ReloadCount bPointing bWeaponUpNewDetailMode bRapidFire bForceReloadStopFiringTimePrecacheStaticMeshes FireOffsetPrecacheMaterialsNextSwitchCountdown bNextItems CrossHair AffectorTraceAccuracy bMeleeWeapon bSnipingNextURLLocalPlayerControllerControllerList AdjustedAim SelectSoundNavigationPointListWeaponDescriptionGamebSteadyToggle bForceFirebForceAltFireLeftHandedMeshDefaultGameType FlashTimeMinNetVersionEngineVersion FlashOffsetY FlashOffsetX ComputerNameMuzzleFlashSize MFTexture bMuzzleFlashbSetFlashTimebDrawMuzzleFlashbMuzzleFlashParticlesMuzzleFlashMeshMuzzleFlashScaleMuzzleFlashStyleMuzzleFlashTextureNetMode ENetMode LevelAction ELevelActionHubStackLevelbLeaderFiring ScreenshotMusicVolumeOverridePlayerDopplerCameraRotationDynamicCameraLocationSideCameraLocationFrontCameraLocationTop bPlayerOwner PlayerOwner ScaledFlashCameraLocationDynamicXLengthbNeverPrecacheULengthVLengthUStartVStartbHasPathNodes CheckDistbPathsRebuilt bStartupbAggressiveLOD bDropDetail bPlayersOnly bBegunPlay bLonePlayerOldAmmoNewAmmoSelectedGroupsSummaryRecommendedNumPlayers bOptionalSet Recommended oldRatingPauser LocalizedPkgLevelEnterText bKNoInitEPhysicsDetailLevelDecalStayScale PauseDelay MillisecondSecond AccuracyYOffsetZOffset StartTrace EndTraceMinuteHour bFinished DayOfWeekDay bForceAltMonth TimeSecondsYear nextPickVelnumDestinations DestinationsOtherSideLevelOtherSideActor WarpCoords iWarpZone bNoTeleFragThisTag OtherSideURL TempSkyZoneManualExcludes bLonelyZoneLensFlareScaleBorder MediumFont Palette125MediumFont_PageAMediumFont_PageBLensFlareOffsetSmallFont_PageA ZoneEffectEnvironmentMap AmbientHueHUDConfigWindowTypenextHUDAmbientBrightnessProgressFontFontAmbientVector Terrains bHideHUD bShowScoresbShowDebugInfobHideCenterMessagesbBadConnectionAlertbClearToFogColor bDistanceFog bTerrainZone bFogZone ExZoneState StateFogPrecachingMessage CurZoneStatebUseZoneStateMAX_ZONE_STATE_NUMMessageFontOffset bSoftKillZ RelatedPRI EndOfLife bDrawing numLinesStringMessage StringFont KillZType TextColor MessageLife TextMessagesConsoleMessagePosXConsoleMessagePosYZoneTagFontArrayFontsFontScreenWidthMediumFontScreenWidthSmallSkyZone S_ZoneInfo ScoringTypeInDoubleClick NewAccelSavedVelocitySavedLocation SavedPhysicsDoubleClickMoveM1M2 bDoubleJump bPressedJump RealStartbDuck BigMessagebRun LineCountFontDXFontDY TimeLeft NextMovebSuperRelevantMsgTypeaClass aClassNameCriticalStringInventoryClassNamePNamePZone MutateStringDefaultWeaponName MessageCountDefaultWeapon NextMutator Requester TestLabelWhoScorer NewRating BestRatingTel BestStartaFont incomingNameReasonMsgSenderbSwitchToZeroCollisionMomentumTransfer ImpactSoundExplosionDecal ExploWallOutVelDir bBeyondOtherDirZ MapListClassMyListNextMap spinRateCurrentEffectWhenDestroyed bPushable bDamageablebPushSoundPlayingbSplash PushSound EndPushSound numLandings contents NumFrags FragSkin FragType FragMomentum bNewTeamnewVelNDamagedropped BaseSizeS_Note bNameChange bOwnedTargetbTarget bMoveStart bMoveEnd bMovePauseMoveStartDelay OwnerOrigin TargetIndex MoverTargets CurMoveSpeedAccelAccelRate CurAccelRate bAllowPickupinjured ViewTargetForceBounceActor VictimName KillerName DiaTexture DiaSpeed DiaWeightLocalToWorldMatrix KilledPawn ImpactSounds ImpactVolume ImpactEffectbOrientImpactEffectImpactIntervalLastImpactTime ApplyImpulse numSounds soundNum WheelJointKillerInv WeapClass newWeapon PlayerPawn Adhesion bMessagebTireOnGroundGroundSlipVelGroundSlipVec SpinSpeedGroundMaterial ReceiveStatebReceiveStateNewS_KConstraintKConstraintDataKConstraintActor1Exiting Palette129KConstraintActor2KConstraintBone1KConstraintBone2 SongNameKPos1ScoreboardClassTeamNumKPos2StartRotationStartLocationbKForceFrameUpdateKForceThresholdPawnClassNameaPlayerInTeam forceMag KSteerAngle InCharacterInClass InChecksum InPassword KMotorTorque InAdminName KBrakingInName TestPawn NewPlayer StartSpot KSuspRef KWheelHeight S_KConeLimit CurrentValue KDamping ParseString S_KHinge EHingeType bSpectator FailCodeAddress LocalPlayer KHingeTypeKDesiredAngVel KMaxTorqueKDesiredAngleKAltDesiredAngleKUseAltDesiredKCurrentAnglebItemsmut mutClass bUserAdded S_KBSJoint FragmentsmutnamenumFragmentTypesAltImpactSoundBHClassExplosionSizeGRClassDam S_KVehFact VehicleClass VehicleCountMaxVehicleCount Palette137CreatedVehicle EBlendModeACClassLeftOptInOptInKeyPairResult OldSpeedIndexAddbPauseM ServerStateNmyLevelGIPropsExtrasGIPropsDisplayText DecoTextNameScreenShotNameEParticleDrawStyleVoiceChattersHandleIpAddrbWelcomePendingPlayerControllerClassGameRulesModifiers BaseMutatorEParticleCoordinateSystemOtherMesgGroup CurrentIDNumBots NumPlayersNumSpectators BeaconName MapPrefix MapListTypeEParticleParticleChoiceGameOptionsMenuTypeMultiplayerUMenuTypeEParticleRotationSourceGameUMenuTypeSettingsMenuTypeRulesMenuType BotMenuTypeEParticleVelocityDirectionScoreBoardTypeDefaultPlayerClassName GoreLevelbEnableStatLoggingEParticleStartLocationShape bLoggingGamebAlreadyChangedbWaitingToStartMatchbAlternateModeEParticleEffectAxis bOverTime bGameEndedEParticleCollisionSoundbFoundLPawnRotPCEParticleMeshSpawningBestNewFlagKillsESkelLocationUpdate GoalsScored StartTime bHasFlagbReceivedPing RelativeTime RelativeSize bWelcomedRelativeRevolutionbBot bOutOfLivesRelativeVelocity bReadyToPlay StartSizeSpinsPerSecond StartSpinRevolutionCenterRevolutionsPerSecondRevolutionsMultiplierColorMultiplierVelocityMultiplierOldMeshLocation MaxLifetime HitCount SubdivisionbWaitingPlayerWeight ProbabilityIndependentSprayAccel UseCollisionbOnlySpectator bIsSpectatorUseCollisionPlanesCollisionPlanesUseMaxCollisionsMaxCollisions bIsFemale SpawnAmountSpawnedVelocityScaleRangeUseSpawnedVelocityScaleUseColorScale ColorScaleColorScaleRepeatsbAdmin VoiceType OpacityRatioUseCloudColorTeamID PreviousNameFadeOutStartTimeOldNameFadeInEndTimeFadeInUseActorForcesOldCharacterNameCharacterName NumLivesResetAfterChange EffectAxis PlayerZoneCheckLevelOfWeatherParticleChoiceWeatherEffectWeatherRangeTimeWeatherSoundCheckForcedLifeTime ForcedFadeForcedMaxParticles PlayerVolume DisabledAutoResetTimeRangeStartLocationOffsetStartLocationRangeHasFlagStartLocationShapeSphereRadiusRangeStartLocationPolarRangeDeathsprisMeshSpawningStaticMeshVelocityFromMeshPRITeamMatchIDCarriedObjectStateUseColorFromMeshSpawnOnlyInDirectionOfNormalECarriedObjectStateMeshNormalThresholdRangeFlagPos AlphaRef PRIArrayAcceptsProjectorsWinner MOTDLine4 MOTDLine3UseRevolutionRevolutionCenterOffsetRangeRevolutionsPerSecondRangeUseRevolutionScaleRevolutionScaleRevolutionScaleRepeatsUseRotationFromSpinParticlesRotationOffset MOTDLine2SpinsPerSecondRangeStartSpinRange DampRotationRotationDampingFactorRangeRotationNormal UseSizeScale MOTDLine1 SizeScaleSizeScaleRepeats ServerRegion UniformSizeUseSkeletalLocationAsSkeletalMeshActor AdminEmail AdminNameSoundsSpawningSoundSpawningSoundIndexSpawningSoundProbabilityCollisionSoundCollisionSoundIndexCollisionSoundProbabilityTeamsParticlesPerSecond MaxLives TimeLimit GoalScoreTextureUSubdivisionsTextureVSubdivisionsBlendBetweenSubdivisionsUseSubdivisionScaleSubdivisionScaleSubdivisionStartSubdivisionEndUseRandomSubdivisionSecondsBeforeInactiveMinSquaredVelocityInitialTimeRange SecondCountInitialDelayRangeRemainingMinuteResetOnTriggerSpawnOnTriggerRangeSpawnOnTriggerPPSStartVelocityRangeStartVelocityRadialRange ElapsedTimeVelocityLossRangeRemainingTimebTeamSymbolsUpdatedGetVelocityDirectionFromUseVelocityScaleVelocityScaleVelocityScaleRepeatsbMatchHasBegunWarmupTicksPerSecondRelativeWarmupTimeCustomMaterials bTeamGameUseSoftParticle GameClass Inactive InactiveTime ParticlesParticleIndexActiveParticles PPSFractionRealExtentMultiplierRealDisableFoggingAllParticlesDead WarmedUp OtherIndex InitialDelayPS2DataMaxActiveParticlesCurrentCollisionSoundIndexCurrentSpawningSoundIndexCurrentMeshSpawningIndex MaxSizeScale KillPendingDeferredParticlesRealMeshNormalMeshVertsAndNormalsCurrentSpawnOnTriggerbOwnerTracking CurLifeTimebNotifyPreDestroy InRangeTime bSuccessStartAnimFrame VertexMesh PawnClass TeamIconUseParticleColor MeshExtentDefaultPlayerClass DoubleDummy1 DoubleDummy2 HomeBase TrailIndex Palette71 LastLocationLastEmitterLocationETrailShadeType TeamIndexS_AmbCreature npcmakerTerritoryNameNpcETrailLocation maximum_npc inital_spawnbGroupTrailShadeTypeTrailLocationtotal InitalSpawnUseCrossedSheetsS_LocationInfoPointLifeTimeVelocityMinThreshold WayPointsAttachEmitterIndex TrailData TrailInfoVerticesPerParticleIndicesPerParticlePrimitivesPerParticleAttachParticleIndexAttachParticleTime ChildTrail IsTrailEmptybWayPointsShowEParticleDirectionUsagewhen_extinction_create Privates nicknamePercentNpcNameS_TerritoryInfo LineArray PointArrayS_ServerPrimitiveUseDirectionAs AbsPoint RefractionSuperPointNameSuperPointMoveTypeRealProjectionNormalS_SuperPointInfoTimeBeforeVisibleTimeBetweenSegmentsStartVelocitytouchLocation instigatedByTimeBeforeVisibleRangeTimeBetweenSegmentsRange SparkData NumSegments bHasWarmedUpLocationUnderMovingDirectionMovingDirectionUnderWidthEGetPointAxis OscillatorsTestRippleAng TimeRollover FluidOriginFluidBoundingBox LatestVerts VertAlphaVerts1 DecayRate EAccDropVerts0 FluidColor NoRenderZbUseNoRenderZbShowBoundingBoxAccDropPointsDropRateThresholdTime MinPointsThresholdTime2 ClampTerrain ClampBitmapOrientTouchEffect TouchEffectOrientShootEffect ShootEffect ShootRadiusAlphaCurveScaleVOffsetUOffset NumSheets SheetScale TestRippleStartBoneOffsetEndBoneOffsetBoneNameStart BoneNameEnd RibbonPoints Palette59bUseInterpolationEFluidGridType S_FluidSurfbLoaded Palette57bDecayPointsWhenStoppedbSyncDecayWhenKilledbLengthBasedTextureUbUseSheetScale bUseBonesbUseBoneDistance SampleTimer DecayTimerRealSampleRateRealDecayRate SheetsUsedLastSampledPointbKilled bDecayingIsEnchantEffectEBeamEndPointType AffectBoxbUseAffectBox AffectRangeS_L2SeamlessInfo DollyOffset CameraShakeRotInterpolatorPrevOrientation ActorTag SubActionsFrequencyScaleRelativeLengthSampleLocationsoscillationRangelocationratiopivotLocation CurrentTimeBeamDistanceRangeBeamEndPointsDetermineEndPointBybIsSceneStarted bIsRunningRotatingSheetsTriggerEndpointOldPawnLowFrequencyNoiseRangeViewerHighFrequencyNoiseRangeTotalSceneTimeLFScaleFactorsHFScaleFactorsLFScaleRepeatsHFScaleRepeatsUseHighFrequencyScaleUseLowFrequencyScaleNoiseDeterminesEndPointDynamicHFNoiseRangeDynamicHFNoisePointsRangeDynamicTimeBetweenNoiseRangebApllyLFNoiseSmootlyCurrentActionbApllyBezierCurvePctSceneCompletenSceneManagerID UseBranchingBranchProbabilityBranchHFPointsRange bReverseViewBranchSpawnAmountRangeLinkupLifetime BeamValueSum HFPoints LFPoints HitActorsTimeSinceLastDynamicNoiseFindEndPointCntFallbackMaterial UseFallback NextSceneTag Palette139 ValidatedShaderProperty ShaderCodeMaterialCodeVersionPlayerScriptTagETextureFormatbCinematicView bLoopingAffectedActorAffectEAffectActions_acceleration_speed _totalTime_remainingTime_valuebDoneStartingRotationETexClampModePctInDuration PctInEnd PctInStartMA bReverseRoll bReverseYawbReversePitch EaseIntime LossDetail MinFilter MagFilter MipFilterDetail Palette55CamOrientationSubActionIndicatorS_BezierHandleDetailTextureEEnvMapTransformType Palette47 S_PathBezier Palette45EnvMapTransformType Specular S_PathLinear Palette43S_ActionCamPause bTwoSidedS_ActionCamMovebHighColorQualitybHighTextureQuality bRealtime Palette39bRealtimeChanged bHasCompS_MatineeTimeMarkerbSplit9Texture Split9X1 Split9X2 Split9X3 Split9Y1 Split9Y2 Split9Y3pSplit9TexCacheMapELODSet Palette37S_MatineeIPSelLookAt S_MatineeIPS_SceneManagerCodeTimeOutDataParam2 NormalLODMinLODMaxLOD AnimNext AnimCurrent PrimeCount PrimeCurrent MinFrameRate MaxFrameRateTotalFrameNum Accumulator SurplusTimeMips CompFormatRenderInterface__LastUpdateTimeFacesCubemapRenderInterfaceColorMaskBlendTypeParam1SecTypeColorMaskBlend OrgTextureModifierColorReferenceTextureRLEData BlobTextureTextureInterfaces LightFOVShadowInterface LastParamsInvalid LastType TickTimebDefaultShadowTIntMap DayMapStart RenderTargetRenderViewport Revision OldRevisionNightMapStartbAutoTimeGenerationStartXStartY NumIntMapGeneratedSectorCounterUULVLEdgeTurnBitmapOrig CamActor CamLocation CamRotationClearZQuadVisibilityBitmapOrig AlphaWeightTextureMatrix RenderMethod FirstPass Gradient Projected BaseMaterialBaseMaterialBlendingFrameBufferBlending bProjectedbStaticProjectorToHeightmapOrig BlendModeParticleBlending UseTFactor WireframeNumProjectorsDiffuse BumpMaterialOldBumpMaterial BumpRawDataBumpTexInterfaceEColorFadeType SectorsOrig bUpdatedZColor1Color2 FadePeriod FadePhaseColorFadeTypeSpecularityMaskSelfIlluminationSelfIlluminationMaskEOutputBlendingbUpdatedVEdgebUpdatedHEdgeMapYMapX VTGroupOrigVTGruop BaseHeightOutputBlending TwoSidedModulateStaticLighting2XPerformLightingOnSpecularPassTreatAsTwoSided NormalMapBumpOffsetScaleFactorBumpOffsetBiasFactor SpecularMap OldHeightmapOldTerrainMapOriginTextureColorComplementAlphaComplement GlowColorbOverrideTexModifierEMaterialSequenceAction PaintedColor VertexColorsVertexStreamsEMaterialSequenceTriggerActonRenderCombinationsQuadDomMaterialBitmapEdgeTurnBitmapQuadVisibilityBitmapSequenceItemsTriggerAction ShowGridPaused LastTimeEFrameBufferBlendingSelectedVertices ToHeightmap FaceNormals SectorsY SectorsX HeightmapY HeightmapX VerticesDecoLayerData JustLoadedbKCollisionHalfRes InvertedDecoLayerOffset ETexCoordSrcLayers TerrainMap IntensitySectorsbDecoGenerated bUseAlpha ToMaskmapToWorldLayerWeightMap KRestitution KFrictionTerrainMatrixLayerRotationTextureRotationTextureMapAxisVPanETexCoordCountUPan AlphaMap ETexMapAxis Palette35TexCoordProjectedSourceChannelETexEnvMapTypeNormal1 Palette33 DecoPaint Palette29 TerrainBadETexOscillationTypeNormal2S_WhiteCircleS_TerrainInfoCurrentPlayers GameType QueryPortUOscillationPhaseIP ServerID PlayerInfoUOscillationTypeVOscillationTypeLastSuLastSvCurrentUJitterCurrentVJitterERetriggerActionStatsIDScorePing PlayerName PlayerID PlayerNumTriggeredTimeReverseETexRotationTypeValueKeyfEffectElapsedTimeTexRotationTypeConstantRotationOscillationRateOscillationAmplitudeOscillationPhase PanDirection EffectType EL2TextureOp OrgLocation CalcStep CameraPathTargetRotationTargetLocation TargetSMInst ECALCSTEPS_ClipMarker3S_ClipMarker2S_ClipMarker1 S_ClipMarker S_PolyMarker S_Interp myMarker Palette15 bNavigatebLoggingEnabled S_AIScript bFullVolumeSoundOcclusionESoundOcclusionAmbientSoundStartTimeAmbientSoundTypeAmbientSoundRangeTime Palette13 Palette11ASTypeEColorOperation S_Ambient S_LookTarget Decorations bRandomRoll bRandomYawbAlign bRandomPitchS_DecorationListEAlphaOperation S_Keypoint LocVectorbResultPbForceDedicatedCombineOperationAlphaOperation Material1 Material2 InvertMask Modulate2X Modulate4XbSound IdleSound SubAction NotifyNameDefaultWalkSoundDefaultRunSoundGrassWalkSoundGrassRunSoundWaterWalkSoundWaterRunSoundDefaultActorWalkSoundDefaultActorRunSoundL2PawnSoundTypebOutaVolume EventNameSpot DestroyTagXLBoneOffsetLocationOffsetRotation TrailCameraIndependentRotationYLLastSpawnedEffectGRI bLightingEViewShakeType NewTexture NewStyleWithReplaceText FullNamedist damageScaleVictimsL2PartialBoneScalerType DamageAmountOptionalObject RelatedPRI_2 RelatedPRI_1 StartScale EndScaleStartFrameIndexEndFrameIndexApplySubBonesBoneScalerTypeTexMultiply_ColorFloatTerrainCollisionAdd_ColorColorMultiply_FloatColorSubtract_ColorColor BoneCenterA ValidBonebIgnoreHiddenSphereASphereB BoneCenterBABResponsivenessLocEndAnchorsWidthNodesCountsSpringConstraintDataCollisionObjectsNeighbourStateForceSensitiveness ESAStatusHitNormHitLoc Palette141 Palette143 Palette145 Palette147 Palette149 Palette151 MatchTag BaseClassStatus PctStarting PctEnding PctDuration NewFilename StartAlpha FilenameDisableAfterDuration IntPointCommentEntry SkinDesc SkinName CurrentSkinbConstantPathVelocity PathVelocity PathLength EPathStylePrefixDir PathStyleEImpSpaceMode NameEndingOutTeleporter InTeleporter MaxXYSpeed EImpDrawModeMaxZStartEImpLightMode Destination Loudnessa_StopByFadeOutTimeEMeshSectionMethoda_Sound Attenuate bNoOverridebLoop NewTimerRatebNeedMeshContainerFirstMeshComponentMeshComponentArrayMeshComponentBufferArrayEMeshComponentStatusbNoCollisionCheckSpawnRotationSpawnLocation SpawnTag SpawnOwner SpawnClassEMeshSimulationTypeExtent bTraceActors TraceStart TraceEnd MeshName TexNames BodyPart bAnimOwnerSimulationTypeAttachBoneName AttachOriginAttachRotOrigin RenderScalebRenderLastMeshComponentNextMeshComponentAnimMeshComponent MeshData fAlphaFactorbByResourceManagerMeshComponentStatus Momentum HitLocation EInputActionDamage KillType NewVolumeNewZone HitNormal EInputKeyEventInstigator DeltaTimea_Alphaa_ActorViewType FadeOutTime SongHandleSongTorque impactNorm impactVelLiftVel AddToCurrent AngVelocityOtherActorGravScale newBlock allowRotate stayUprightImpulsethreshposoffsetrest frictionangdamplindampit2it1RBvec AltColourRBstate newPhysicsLineEnd LineStart GroupName OutAnimRate OutAnimFrame OutSeqName BoneTrans BoneTurn BoneScaleSlotLock Attachment BoneIndexSpace TimeInterval TargetAlpha bGlobalPoseOutTimeInTime BlendAlphaStage bKeepAnimNewMeshAnim GameAction UnitFlag bonenameClearAllButBaseRate Sequence NewOwner NewFloorNewBase NewRotation bNoCheck NewLocationDelta NewDrawTypeNewStaticMesh NewScale3D NewScale NewHeight NewRadiusNewBlockPlayersNewBlockActors NewColActorsSecondsCommandL2ActorEffecttypeEActorEffectType eKillZTypeEDoubleClickDir ETravelTypeTexModifyInfobDummy bAlphaBlend bTwoSide bUseModify SpawnPos ESpawnPos EffectOwnerNAttackStatusENAttackStatusNProjectileActorSpelledNEffectActorNSkillProjectileActor TargetActorPendingChannelingNotifyPendingPreshotNotifyPendingNotify LastShotNameAniDuesAnisLocList EffectID EffectActorAssociatedActorSkillRotationRateNormalRotationRatenSlicebTargetExcepted MagicTypeMagicAniStatus MagicSpeed ActiveTime TweenTime ShotTime SkillHitTime StagePreshot StageShotFlexibleAniIndex AniIndexLevelIDMagicID DummyPtr EffectInfoENMagicAniStatusnUseNormalmap bTangentLoad bPlayerPawnbLockUndeletebLockLocationbScriptInitialized bPathTemp bTempEditorbEdSnap bSelectedbHiddenEdGroupbClientDemoNetFuncbClientDemoRecordingbDemoRecording bNetRelevant bNetOwner bNetInitial ForceScale ForceRadius ForceType EForceTypeSimAnim TweenRate AnimFrame AnimRate bAnimLoop AnimSequence KStepTagKParamsAngVelLinVel Quaternion MINFLOORZMAXSTEPHEIGHT ColLocation PendingTouchKeyboardRotationYawFromServerKayboardRotationRate BuoyancybInterpolatingbIgnoreOutOfWorld CurrentAlphabAutoAlignToTerrainEMusicTransition ESoundSlot bAlwaysTick bAnimByOwnerbPendingDelete bHurtEntrybCulledSunlight bUnlitCheckEL2GameAction ERenderStyleSwayRotationOrig SWXLevel NMoverActor AntiPortalRepSkin OverlayTimerOverlayMaterialSkins PrePivotStaticMeshProjectorsHardRelMatrixRelativeRotationRelativeLocation Attached AttachTag JoinedTag CollisionTag LatentFloatDeletedOctreeBoxRadiiOctreeBoxCenter OctreeBox OctreeNodes TouchingChildGroupTargetSpineStatusETargetSpineStatus L2MoveEvent TimerCounter L2GameEventLeavesLastRenderTime TimerRate ForcedRegionForcedRegionTagRegion ZoneNumberiLeafZoneXLevel AttachType EAttachTypeAttachmentBone InstigatorNetUpdateTimeNetTag ENetRoleL2ServerObjectTypeEL2ObjectTypeL2LodViewElapsedTimeL2LodViewTypeELodBlendViewTypeL2ActorViewtypeL2ActorViewElapsedTimeL2ActorViewDurationEActorViewTypeRelativeTrailOffsetbSelfRotationbRelativeTrailbL2DesiredRotatedbHasActorTargetbVehicleCompensativeMovebVehicleTargetMoveL2DesriedRotatorRelativeLocInVehicle VehicleIDbCompressedPositionbReplicateAnimations bTearOff bNetDirtybWasSNFilteredbShowOctreeNodes BaseMenuGlobalInteractionsbRequireRawJoystickInteractionName AttachToNewInteractionNewInteractionClass RemoveMeInterViewportOwnerInteractionArrayiIndexUnicodeMsgLife bVisiblebOnlyAffectPawnsbTrailerNoOwnerDestroybTrailerPrePivotbTrailerSameRotationbTrailerAllowRotationbSuperHighDetail bHighDetail MenuWhite MenuBlack__OnAdminReply__Delegate MenuGray bTimerLoopReply NewMenuName bCanceledbTickedOnGameRes ConsoleFontConsoleFont_PageA ConsoleBK ConsoleBdr HistoryTop MaxHistory Palette155 ConsoleKey Palette157 bDeleteMe HistoryCur TypedStrHistory bIgnoreKeys EDetailMode bShadowOnlyOutStr FinalEffectRenderTargets HDRTimeStamp bHideShadowbLightChangedbCorona bSpecialLitbDynamicActorFilterState bDeleteNowCanIngnoreCollisionDelaypointrespawnNum EventCmdEventID EL2EventCmdStaticFilterStateForcedVisibilityZoneTag EFilterStateRenderRevisionLightRenderDataLastFrameTime bInvertMouse bWasForward bWasBack bWasLeft bWasRight bEdgeForward bEdgeBack bEdgeLeft bEdgeRightActorRenderDataPtrBaseOwner EDrawType EPhysicsSmoothedMouse ZeroTime SamplingTime MaybeTime OldSamples MouseSamplesDoubleClickTimerDensityMeshName DensityMesh FOVScale MouseScale bForceRender RandomYawDisregardTerrainLightingaMouseLitDirectional SampleCountsumShowOnInvisibleTerrain DrawOrderAlignToTerrainSeed MaxPerQuadOldDoubleClickLockedRotationDensityMultiplierFadeoutRadiusScaleMultiplier ColorMap DensityMap ScaleMapShowOnTerrainAccel Distance DistanceFade VertexPos Palette3LockedLocation LockedRot LockedActor ESortOrder Palette1S_AutoAlignToTerrainS_LockLocationS_Actor IDC_WAIT IDC_SIZEWE IDC_SIZENWSE IDC_SIZENS IDC_SIZENESW IDC_SIZEALL IDC_ARROWGUIControllerLocalInteractionsSelectedCursorConfiguredLanSpeedConfiguredInternetSpeedCurrentNetSpeedWindowsMouseYWindowsMouseX SpawnLocbSuspendPrecachingbShowWindowsMousebQuietbWindowsMouseAvailablevfExec ActorNamevfOutColorVariationColor!bForceCurrentColorVariationColorbCheatpSceneManagerbAuthDataFlag DefaultFont Palette158 Texture4m_CapturingSplit9Texm_Split9TexCaptureListSpaceXSpaceYOrgXOrgYClipXCurXCurYCurYL bNoSmoothSizeXSizeY TinyFontbConnectionClosed AuthDataCameraEffects pCanvasUtil m_IsClipped m_OldCurX m_OldCurY m_OldOrgX m_OldOrgY m_OldClipX m_OldClipY m_L2Font pChatBack1_1 pChatBack1_2 pChatBack1_3 pChatBack1_4 pChatBack1_5 pChatBack1_6 pChatBack1_7 pChatBack1_8 pChatBack1_9pChatBack1_10 pChatBack2_1 pChatBack2_2 pChatBack2_3 pChatBack2_4m_pViewportWindowRenderTargetm_fRecordMarkTimerm_pReplayRecordTimerTexm_fTimePerFont m_fStartTime m_nTextIndex m_bTextAnim m_bTextEndm_bFirstTextAnimInspectorClassCRInspectorParamsInspectorCountbAttachedUnderWaterEffect bCheckHotKey bLazyMode OutArraydxEOL FadeInTimeBlackOutDurationJustificationElapsedTimeCheckXScaleYScaleRequestedTimex1y1x2y2TeleportTargetActor TeleportLocbPlayerObserverMode nFadeTypebFadeInFadeElaspedTimeRectXRectY FadeTimebUseUnderWaterEffect LandMark CommandMacro LoadingMap pFontManager bracket_size CurTickIndexLastDeltaSecondsLastDeltaTimeAvgFPSCurrentTempNpcIDRoomLF EndTempNpcIDStartTempNpcID ClickActor ClickPlaneClickRelativeLocationReflectionsPanClickLocationClickedMouseY ReverbPanClickedMouseX EchoDepth bClickedModulationDepthRoomRolloffFactorLastHitObject DummyObject DummyArrayServerPackages ServerActorsLastURLGPendingLevel GSkyLevelGEntrybModulationTimeScaleGLevelUpdated ExtraMeshExtraMeshInstance ExtraTexValidIdealPlayerCount reachFlagsbPrunedbForcedASType1PortalOpPortHost ProtocolZonePlayStateWindReplayManagerHueSatBribNextTargetLock TerrainLight ActorLightStaticMeshLight BSPLightHazeColorIndex HazeColorCloudColorIndex StarColor SunColor MoonColorTerrainAmbient ActorAmbientStaticMeshAmbient BSPAmbientL2SkyCastingActionChannelingActionPreshotAction ShotActionExplosionActionUnionTargetAction FlyingTime AttachMethodL2Fog bStopDrawCurrentRealTimeShadowIndexDefaultWaterFogEndDefaultWaterFogStartDefaultWaterVolumeColorConsoleDrawTimebShowConsoleTimebTurnOnCompass bHideCompass TotalFrameEGPawnLightTypeAverageTickRate MinTickRate MaxTickRateCurrentTickRatePawnLightTypeLightEffectTypeLightCoordSystemEtcEffectType ClientCycles GameCycles TickCyclesbShowScenePlayerStatsbShowScriptStatsbShowL2ThreadStatsEtcEffectParambShowL2ServerExPacketStatsbShowL2ServerPacketStatsbShowL2MemStats bShowL2StatsbShowLightStatsbShowAudioStatsbShowMatineeStatsbShowXboxMemStatsbShowHistographbShowAnimStatsbShowNetStatsbShowGameStatsbShowHardwareStatsbShowRenderStatsbShowFrameRate bOrcCheck AttachOn bAbsoluteOrcBaboNTimerNConsoleClassbOnMultiTarget bChaining bChangeHandbUseOffsetNativebMultiLocationbWaitNetCommand bRibbonSet bChanneling ScaleSizebShotAndDrainNetwork bPawnLightPawnLightParamControlPointOffsetGRenDev EtcEffectEtcEffectInfoBR_ForceLifeTimeBR_TagSceneID SceneDesc SceneInfo ForceToPlayScreenItemTypeFlash CylinderNetworkDeviceDefaultPlayerMenu DefaultMenu FlashDevice AudioDevice DeltaSecondsUseCameraMode AccelSpeed DirectionAreaSlideDirectionTypeCppTextitem ScriptText ObjectClassA NpcItemType NewStateBCDOriginECamOrientationECameraLocationTypeji PcItemTypeGtRSPoints ReturnValueVOrthoRotationVector2RotatorLenBoxScreenWindowTypeGetPropertyTextSetPropertyTextDynamicLoadObjectStaticSaveConfig InterpCurveMatrixCoordsQuat L2ConsoleWnd L2NetHandlerScreenWindowAnimationTypeL2NEnvManager L2OrcMoveAudioSubsystem ViewportUnderWaterEffectYCbCrConversionEffectHSVConversionEffectRGBConversionEffect Projectors DecoLayers ConvexVolume DOFEffect RenderDeviceFlashSubsystemFluidSurfacePrimitive ScreenType WindowTypeAnimationType FontTypeBackgroundTypeMsgNoMsgTextSlideDirection SlidingTime SlideTexNameSlideTexUSizeSlideTexVSizeSlideMoveRatioSlideWndRatio PostEffectIDLevelNpcID AnimNameIsFlyIsRunIsLoop ImmInsightModel UseCameraRelYaw RelPitchRelRollIsWide IsRelAngle IsImmTarget CameraFov VertexBuffer UseMusic MusicName StopMapMusicStopMapAmbientIsSoundIsVoice IndexBufferRaceSex SetItemNo SetItemType ItemSlot UseSpirit SceneTime CameraInfo ScreenInfo MusicInfoNpcInfoPcInfo KarmaDataMeshAnimationSkeletalMeshInstance StaticMeshKAng3 KTriList KLastVelStaticMeshInstanceTerrainSectorTerrainPrimitiveKStartEnabled KStartLinVel KStartAngVelbKNonSphericalInertia Materials Primitive MeshInstanceChannelbKDoubleTickRatebKStayUprightbKAllowRotateNetConnection KSkeletonbKDoConvulsionsClient KShotStart KShotEndKShotStrengthbKImportantRagdoll NetDriver KCOMOffset LevelNameEnemyTeamNameDifficultyModifier URLStringMenuDescription ThumbNameObjects PendingLevel ObjectIndexCountObjHeightAuthor ClassNameYawRollPitch LanguagePathsOptionsCmdTagMapOuterClassbPathGuidPackageInputOutConstRot Subsystem TextBufferEnum FunctionStateINT64CompressedPositionStructString StrPropertyStructPropertyArrayPropertyClassPropertyDelegateProperty NamePropertyObjectPropertyFloatProperty BoolProperty IntProperty ByteProperty bAlreadyDead\ŠITIÇŽ…‚-Gš9:9:$‚‚-K-Gš9:9:$‚‚-G -kš9:9:$‚‚-G-kš9:9:$‚-Gš9:9:$‚-kš9:9:$–9:9:$B Y€ÿÿÿÿÿÿÿÿÿÿ7 nÖ ëï--%ŽõQŠ&ñ5ÙEû‘oY œ›å1û‘oû‘oŽõQŽõQŽõQŠ&ñ5ÙE'*ÈMžû‘oŽõQŽõQŽõQŽõQŠ&ñ5ÙEŠ&ñ5ÙEû‘oû‘oŠ&ñ5ÙEû‘oû‘o'*ÈMž'*ÈMž'*ÈMžû‘oû‘oû‘oû‘o±Áû‘o±ÁN±Æ·ï--%ï--%û‘o'*ÈMž'*ÈMž'*ÈMž'*ÈMžû‘o'*ÈMž'*ÈMžŽõQ'*ÈMžŽõQŠ&ñ5ÙEŠ&ñ5ÙEû‘o±ÁŽõQŽõQû‘o±Áû‘o±ÁŽõQ¥y©‡Š&ñ5ÙEû‘o±ÁOØbÖ ëÖ ëÖ ëŽõQû‘o±Áû‘oÖ ëÖ ëÖ ëŽõQŽõQû‘oû‘oŽõQ¥y©‡¥y©‡OØbOØbû‘oû‘o®ÓaŽõQbŽWØ'KÎÁ0l&KÃ*ŽõQû‘oN±Æ·û‘oŽõQŽõQÖ ëï--%ï--%A5wiòï--%ŽõQÖ ëï--%ŽõQ šùó šùó šùó šùó šùó šùó šùó šùó šùóN±Æ·û‘oû‘o±ÁN±Æ· šùóŽõQ šùó šùóû‘o šùó šùóŽõQï--%ï--%ï--%N±Æ·N±Æ·û‘oï--%N±Æ·N±Æ·N±Æ·N±Æ·N±Æ·ï--%ŽõQN±Æ·N±Æ·N±Æ·N±Æ·sb‹ sb‹ N±Æ·N±Æ·N±Æ· šùó šùóû‘oû‘o±ÁŽõQ[_ÞŽõQŽõQŽõQÖ ëŽõQ šùóN±Æ· šùóN±Æ· šùóŽõQ¥y©‡¥y©‡ŽõQŽõQŽõQŽõQŽõQŽõQŽõQŽõQŽõQŽõQŽõQŽõQŽõQŽõQŽõQ¥y©‡¥y©‡û‘o¥y©‡ŽõQû‘oû‘oN±Æ·N±Æ· šùóN±Æ· Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd ŽõQ Pd Pd Pd šùó[_ÞŽõQŽõQû‘oû‘oŽõQŽõQŽõQOØbŽõQû‘oOØb šùóŽõQŽõQŽõQ‚FY0K9Z0M9[0O9\0Q9]0P9^0R9_0S9`0T9a0W9b0X9c0Y9d0[9i0"ÿÿÿÿk1Ól1Ów1$€?x1$€?y1$€?z1$€?D2$ðBE2$ BF2$ŽBG2$ðAH2$ðBI2$ BM3Ól5Óm5Ón5ÓH6ÓR6ÓS6ÓZ6€[6$€?\6$€?^6$/E`6$@œEc6$ÍÌÌ=p6$Dq6$ Br6$Ds6$HC$Eu6$ÒCv6$ÍÌL=w6$?x6$?y6$–D~6$€B6$XBB7$ BC7$BF7"dK7$€?N7$ ÁR7$ ÁV7$o<[7$€?\7$€?_bD8FE8UX8$@D]8$€>o8Óq8$€¿s8Ót8$ Au8$€?v8$ÍÌL>@9$zDA9"C9$€?L9"ÿÿÿÿmÓa9"ÿÿÿÿo9\9y9Ó"jSuÓXSdÓKÓ/]$@@SxOl ÓS ÓnÓyÓÓ($B*$œB=ÓQÓLÓWÓZÓ_Ów:p N IÓrӂl¡wAÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿKï--%‚€„Ø`û‘oû‘oÖ ëû‘oû‘oÖ ëû‘o¥y©‡¥y©‡ï--%'*ÈMž'*ÈMžï--%ï--%ï--%ï--%ï--% Pd Pd Pd Pd Pd Pd Pd û‘o Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%û‘oû‘oû‘o±Áû‘oû‘oû‘o±Áû‘o±Á-7ÈE‚"i"ÿÿÿÿ[ÓKÓGÓjÓXÓHÓA ÓFÓpÓT$À?Q"ÿÿÿÿJ"ÿÿÿÿI"ÿÿÿÿ/N8a$ÈB]$€?@Ój$€?Rze$€?r:€?€?€?MP$€?Q$G~ tÓD$š™™>P$–C($°A*$°AP ÓVÓaÓS$ÈBg:pÿÿÿÿÿÿZFE W‘B9^€†’‚-Gš9:9:$‚‚-Gš9:9:$-kš9:S9:$‚„-N ‚-D-Bš9:9:$–9:9:$–9:9:$€ÿÿÿÿÿÿÿÿÿÿxŽõQï--%Ö ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëû‘oû‘o±Áû‘oÖ ëû‘oÖ ëN±Æ·N±Æ·Ö ëÖ ëÖ ëÖ ëÖ ëÖ ë šùóN±Æ·Ö ëÖ ëÖ ëÖ ëN±Æ·Ö ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ë šùó œÀÖ ëKí€Ó]Ö ëKí€Ó]û‘oŽõQû‘o±ÁŽõQOØbŽõQOØbŽõQŽõQŽõQŽõQû‘oû‘oÖ ëÖ ëÖ ëÖ ëû‘oŽõQŽõQ¥y©‡ŽõQÖ ëÖ ëÖ ëû‘oû‘o±ÁOØbOØbOØb~0¿ÄOØb œÀ œÀÖ ë œÀŽõQOØbû‘o±ÁOØb~0¿ÄOØbOØbŠ±ÁÖ ëÖ ëÖ ëÖ ëÖ ëOØbÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëOØb Pd Pd Pd Pd Ö ë Pd Pd Pd OØb Pd ‚^$ŽBpq3X$€¿n3" Nm3jSDÓw:p 0uKÓUxnqCJ±)0‚-Gš9:9:$‚-k š9:9:$€ÿÿÿÿÿÿÿÿÿÿ6 û‘oU2šèû‘o¥y©‡±Áû‘oû‘oû‘o3B`Ð3B`Њ±Áï--%û‘o3B`Ð3B`Њ±Áï--%û‘oû‘o±Á3B`Ð3B`Ђc&$€?r&s&$fff?t&$€?u&"v&$€?w&ÓK8] Untitled~&]NoneC'I'Ót2$€?S'@,_&^y`&Fb&Xyf']Engine.GameInfoh'$€»Ä^ÓfÓ/KÓa3VŠ| J̏>‚‚-G-kš9:9:$‚‚‚-kš9:9:$ w#w.#*‚-N š9:9:$š9:9:$‚š9:9:$„-N ‚-D-B‚š9:9:$ -N ‚š9:9:$ -N š9:9:$‚„-N ‚-D-Bš9:9:$–9:9:$–9:9:$ ÿÿÿÿÿÿÿÿÿÿ6R ¥y©‡ŽõQCv WŒCv WŒû‘oû‘oû‘o±Áû‘o±Á¥y©‡û‘o±Áû‘o±Áû‘oû‘oû‘o±ÁOØbdÊ)lDüÆÊdÊ)lDüÆÊdÊ)lDüÆÊPì®°CÖ ëÖ ëï--%ï--%Pì®°CÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëPì®°CÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëï--%ï--%ï--%û‘o±ÁÖ ëÖ ëOØbÖ ëOØbû‘oû‘oû‘o±ÁOØbû‘o±Áû‘o±ÁOØbÖ ë3B`Ð3B`ÐOØbOØbOØbû‘oŽõQû‘o±ÁŽõQOØbŠÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëû‘oÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ë'*ÈMžÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ë'*ÈMžÖ ë'*ÈMžÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ë'*ÈMžÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ë'*ÈMžÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ë;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ Ñ;@[ ÑÖ ëÖ ëÖ ëÖ ë[_ÞÖ ëÖ ëÖ ëÖ ë'*ÈMžÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëyŸs%Ö ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ë'*ÈMžÖ ëyŸs%Ö ëÖ ëÖ ëÖ ëï--%y >ŠÀÖ ëï--%Ö ëy >ŠÀï--%ï--%ï--%û‘oÖ ëÖ ëÖ ëÖ ëÖ ë šùóÖ ëÖ ëÖ ëï--%ï--%ï--%Ö ëÖ ëï--%ï--%"õSџï--%"õSџï--%Ö ë"õSџ"õSџ"õSџÖ ë"õSџû‘oÖ ë"õSџ"õSџŠ@’ßï--%ï--%ï--%ï--%"õSџï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%û‘oû‘oû‘oyŸs%Ö ëÖ ëÖ ëÖ ëÖ ë šùóû‘oÖ ëÖ ëÖ ëÖ ëÖ ë'*ÈMžÖ ë'*ÈMžÖ ëÖ ëÖ ëÖ ëÖ ëû‘oŠ Pd û‘oû‘oû‘oOØbû‘o±Áû‘o±ÁOØbÖ ëÖ ëOØbOØb~0¿Äû‘o±Áû‘oÖ ëÖ ëû‘oÖ ëï--%û‘oÖ ëÖ ë šùóû‘oÖ ëû‘oÖ ëÖ ësb‹ û‘oÖ ëÖ ëÖ ëN±Æ·Ö ësb‹ Ö ësb‹ N±Æ·N±Æ·sb‹ N±Æ·Ö ëÖ ëN±Æ·N±Æ·sb‹ N±Æ·Ö ëÖ ëÖ ëÖ ë šùóÖ ëN±Æ·N±Æ·Ö ëÖ ë šùóÖ ë šùóÖ ë šùóÖ ëÖ ë šùóN±Æ·û‘oÖ ëÖ ëÖ ë šùóÖ ë šùóN±Æ·Ö ëN±Æ·Ö ëÖ ëÖ ëÖ ëÖ ëÖ ë šùóÖ ëû‘oÖ ëÖ ëÖ ëÖ ëN±Æ·Ö ëÖ ëÖ ëN±Æ·Ö ëÖ ëÖ ë šùóû‘oÖ ëÖ ëÖ ëÖ ëN±Æ·Ö ëÖ ëÖ ëN±Æ·Ö ëÖ ëÖ ë šùóÖ ëÖ ëÖ ëÖ ëÖ ësb‹ û‘oû‘oû‘o±Áû‘oÖ ëû‘oû‘oû‘oOØbOØbŠ_…”Əû‘oÖ ëÖ ëÖ ëÖ ëU2šè3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 húÖ ë3 hú3 hú3 hú3 húdÊ)lû‘o3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 húû‘o3 hú3 hú3 hú3 hú3 hú3 hú3 húÖ ë3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 húÖ ëÖ ë3 hú3 hú3 hú3 húÖ ë3 hú3 hú3 húÖ ëÖ ëÖ ë3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 húÖ ë3 hú3 hú3 húÖ ëÖ ëÖ ë3 hú3 hú3 hú3 hú3 hú3 hú3 hú3 húOØbOØbOØbû‘oOØbû‘oOØbû‘oû‘oÖ ëÖ ë3 hú3 hú3 hú3 hú3 hú3 hú3 húï--%3 húï--%ï--%ï--%ï--%ï--%Ö ëÖ ëï--%ï--%ï--%Ö ëï--%ï--%ï--%ï--%ï--%ï--%Ö ëÖ ëÖ ëÖ ëÖ ëû‘oû‘oÖ ëÖ ëÖ ëû‘oû‘oû‘odÊ)lÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëï--%Ö ëÖ ëû‘oÖ ëû‘oOØbdÊ)lOØb_…”ƏŠ¥y©‡Š¥y©‡Ö ëÖ ë šùóÖ ëÖ ë šùó3B`Ðû‘o±Áû‘o±Áû‘o±ÁOØbû‘o±Áû‘o±ÁÖ ëÖ ë šùóyŸs%yŸs%yŸs%û‘oû‘o±Á-7ÈEû‘o;@[ Ñ;@[ ÑÖ ëÖ ëÖ ëÖ ëÖ ëPì®°C3 hú3 hú3 hú3 húqü;çï--%û‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oPì®°COØbdÊ)l,/‡®oŠFžöŠFžödÊ)ldÊ)l,/‡®oŠFžöÖ ë'*ÈMžÖ ë'*ÈMž œÀ œÀPì®°CPì®°CPì®°CÖ ëy >ŠÀÖ ëÖ ëÖ ëOØbÖ ëÖ ëÖ ëOØbÖ ëÖ ëÖ ëÖ ë3 hú3 hú3 húû‘oOØbû‘oû‘oû‘oû‘o‚F|1Ó{1Óv1u1$333?t1$@Gs1$Ag$HBf$HBe:€?€?€?n1$33³>m1$Aj1] Quick Savingi1]Game is not pauseableh1]Now viewing fromg1]Now viewing from own camerae1Fd1"ȯc1y b1y^$HB|3$€?ZÓYÓ]$@@l ÓO TŠN¬L0/aU‚-Gš9:9:$‚‚-G -kš9:9:$‚-k š9:9:$€ÿÿÿÿÿÿÿÿÿÿ2OØbO ׀|©ŽõQ¥y©‡ Pd ~0¿Ä Pd ŽõQÖ ëÖ ëÖ ë]à$± ]à$± ]à$± ]à$± ]à$± Š]à$± ]à$± U2šèU2šèû‘oû‘oû‘o3B`Ð3B`Ðû‘o±Á3B`Ђc!= Spectatingd!] Unknowna$ @‚g’P­|2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Pd ‚€„Ø` Pd Pd Pd Pd Pd Pd Pd Pd Pd „§Y „§Y „§Y „§Y „§Y „§Y‚D3I)v$€?~ w *ÿi$]WarfareFonts.FontMonoj$]WarfareFonts.FontMonok$]WarfareFonts.FontMono800x600XF `I‰V…|+ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿR „§YV6 Æ‚$A*@€@*ÿÿÿÿyƒcKdÿ=‚‚-k-Gš9:9:$š9:9:$–9:9:$€ÿÿÿÿÿÿÿÿÿÿ3q šùóN±Æ·ï--%Ö ëÖ ë¥y©‡Ö ë¥y©‡Ö ë"õSџ"õSџ"õSџÖ ëŽõQÖ ëÖ ëû‘oÖ ë"õSџ"õSџÖ ëŽõQÖ ëÖ ëÖ ëŽõQ"õSџÖ ëÖ ë"õSџÖ ëŽõQÖ ëÖ ëbŽWØ'"õSџ"õSџÖ ëÖ ëû‘oÖ ëÖ ëÖ ëŽõQÖ ëŽõQû‘oû‘oï--%Ö ëÖ ë"õSџï--%Ö ëÖ ë"õSџÖ ëÖ ëÖ ëÖ ë¥y©‡sb‹ "õSџû‘oû‘o"õSџ"õSџû‘oû‘o"õSџ"õSџÖ ëÖ ëÖ ëŽõQ"õSџÖ ëŽõQN±Æ·Ö ëÖ ëÖ ëÖ ëÖ ëÖ ë¥y©‡Ö ë šùóÖ ëÖ ëÖ ë šùóÖ ëÖ ë"õSџÖ ëÖ ë"õSџÖ ë"õSџû‘o"õSџ šùó šùó šùó šùó šùó šùó šùó šùó šùó šùó šùó šùóN±Æ·"õSџ šùó šùó šùó šùó šùó šùó šùó šùó šùó šùó šùó šùóN±Æ·"õSџN±Æ·Ö ëÖ ëN±Æ· œÀX"™7)РœÀ œÀN±Æ·"õSџ œÀ œÀ šùó œÀŠ šùó"õSџÖ ë šùó œÀ œÀN±Æ·Ö ëÖ ëŽõQ"õSџ"õSџ"õSџÖ ë"õSџÖ ëï--%Ö ëŽõQÖ ëŽõQ"õSџï--%ï--%"õSџŠ@’ßï--%ï--%ï--%Ö ëŽõQÖ ë Pd Pd „§Y „§Y Pd „§Y „§Y Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Ö ë¥y©‡û‘oû‘o Pd Pd Pd Pd Pd Pd Ö ëÖ ëÖ ë Pd Ö ëÖ ëÖ ëÖ ë"õSџ"õSџÖ ë Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd "õSџÖ ëÖ ëŽõQL |—YÇL |—YÇÖ ëÖ ëŽõQÖ ëŽõQ"õSџ"õSџ"õSџ"õSџ‚q'Óp'"o'$–CN6$ÍÌÌ=n': @m':ÈBÈBÈBz8$€ Dl'$?k'$?j'$@FY3$úEi'] has no ammo.g'*ÿÿÿÿe'$ªBc'$€?b'$ÍÌÌ=a'$€?m(c(:ðA Àa L cb._(]Weapon"v ÓKÓf TqIŒ*I‰%}‰O"K0ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ3 hú%DãÚ¥y©‡¥y©‡Ö ë¥y©‡¥y©‡¥y©‡¥y©‡û‘o¥y©‡¥y©‡¥y©‡Ö ë¥y©‡Ö ë‚VV‡g1Y#‚‚-k-Gš9:9:$€ÿÿÿÿÿÿÿÿÿÿ3 N±Æ·ï--%N±Æ·N±Æ·N±Æ·N±Æ·N±Æ·Ö ë œÀ œÀN±Æ· œÀN±Æ·Ö ëÖ ëï--%N±Æ·Ö ëÖ ëÖ ëÖ ë Pd ï--%ï--%ï--%ï--%N ö&.–Ö ëï--%Ö ëï--%Ö ë‚N9$Âu?a N "DÓ~ÓhÓHS|Ó/]$33³?l ÓzÓN<@%Es‡Mÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ6Y±Á%DãÚû‘oŽõQŽõQ¥y©‡¥y©‡¥y©‡Š Pd ŽõQŽõQOØb]{[[ŽõQŽõQŽõQOØbŽõQOØb]{[[ŽõQD̳öŽõQD̳öOØbD̳öY œ›å1Y œ›å1ŽõQû‘oŽõQŽõQOØbŽõQD̳öbçÖӇŽõQŽõQOØbŽõQOØb~0¿Äû‘o!«wR^!«wR^]{[[]{[[D̳öû‘oŽõQŽõQŽõQŽõQY‡'dÐY‡'dÐY‡'dÐD̳öy Ô O€y Ô O€û‘oû‘o¥y©‡ŽõQOØbû‘oŽõQ¥y©‡¥y©‡ŽõQŽõQÖ ëÖ ëÖ ëÖ ëN±Æ·D̳öÖ ëÖ ëN±Æ·û‘o œÀŽõQŽõQOØbŽõQOØb~0¿Äi¿§¥çi¿§¥çŽõQŽõQŽõQD̳öŽõQŽõQOØb]{[[ŽõQ]{[[ŽõQŽõQŽõQOØbŽõQOØb]{[[ŽõQŽõQ]{[[ŽõQŽõQÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ë-7ÈE-7ÈEÖ ëÖ ë šùó šùó-7ÈEÖ ëÖ ëN±Æ·N±Æ· šùóN±Æ· šùó šùó¥y©‡OØbû‘oû‘o¥y©‡û‘oû‘oŽõQ]{[[ŽõQ¥y©‡û‘o¥y©‡¥y©‡Ö ë¥y©‡Ö ë]{[[¥y©‡]{[[¥y©‡OØb¥y©‡û‘o¥y©‡¥y©‡¥y©‡¥y©‡Ö ë¥y©‡Ö ë¥y©‡û‘oû‘oŽõQŽõQOØbŽõQOØb~0¿ÄŽõQŽõQŽõQ-7ÈEŽõQŽõQŽõQ!«wR^!«wR^ŽõQŽõQ!«wR^!«wR^ŽõQŽõQŽõQŽõQÖ ëŽõQÖ ëŽõQÖ ëû‘oŽõQŽõQÖ ëŽõQŽõQŽõQŽõQÖ ëŽõQÖ ëŽõQŽõQÖ ëŽõQ!«wR^ŽõQŽõQŽõQOØbŽõQOØb~0¿ÄŽõQŽõQŽõQŽõQŽõQŽõQŽõQŽõQÖ ëŽõQŽõQŽõQÖ ëŽõQŽõQŽõQŽõQ!«wR^!«wR^ŽõQŽõQ!«wR^!«wR^ŽõQŽõQŽõQŽõQŽõQŽõQŽõQÖ ëŽõQÖ ëŽõQŽõQÖ ëŽõQ]{[[ï--%û‘oŽõQŽõQŽõQŽõQû‘oŽõQŽõQŽõQŽõQ]{[[ï--%û‘oŽõQŽõQŽõQ¥y©‡ŽõQû‘oŽõQŽõQŽõQû‘oŽõQŽõQ3B`ЊCŠÜM¹-7ÈEŠCŠÜM¹i¿§¥çi¿§¥ç!«wR^!«wR^!«wR^!«wR^ŠCŠÜM¹¥y©‡û‘o¥y©‡¥y©‡OØb¥y©‡¥y©‡¥y©‡OØb¥y©‡¥y©‡OØbû‘oû‘o¥y©‡¥y©‡Ö ëÖ ë¥y©‡Ö ëÖ ëÖ ëŽõQ¥y©‡ŠCŠÜM¹-7ÈEŠCŠÜM¹!«wR^!«wR^ŠCŠÜM¹¥y©‡¥y©‡¥y©‡¥y©‡¥y©‡û‘o¥y©‡¥y©‡û‘o¥y©‡OØb¥y©‡OØb¥y©‡OØb¥y©‡OØbŠCŠÜM¹¥y©‡¥y©‡OØb¥y©‡¥y©‡Ö ëÖ ë¥y©‡Ö ëÖ ë¥y©‡Ö ëÖ ëŽõQÖ ëÖ ëÖ ëû‘oû‘oi¿§¥ç¥y©‡¥y©‡¥y©‡û‘oû‘oû‘o¥y©‡¥y©‡¥y©‡¥y©‡û‘oû‘oû‘oû‘oû‘oŠ-7ÈE-7ÈE-7ÈEŠ-7ÈE-7ÈE-7ÈE-7ÈEŠi¿§¥çD̳öi¿§¥çû‘oï--%ï--%ï--%ï--%û‘oï--%ï--%ï--%U2šèû‘oû‘o¥y©‡¥y©‡¥y©‡OØbû‘oû‘o¥y©‡û‘oû‘oû‘oŽõQŽõQOØbŽõQOØbOØbOØbŽõQ-7ÈE-7ÈE-7ÈE-7ÈEû‘o3B`Ð3B`Ði¿§¥ç-7ÈE-7ÈE-7ÈE-7ÈE3B`Ð3B`Ð3B`Ð3B`Ð3B`Ðû‘o3B`Ð3B`Ð3B`ÐOØb3B`ÐOØb3B`ÐOØb3B`ÐY‡'dÐû‘o!«wR^!«wR^!«wR^û‘oû‘o]{[[]{[[3B`Ð3B`ÐOØb3B`ÐOØb‚t!Óu!Ów!Ó{!Ó|!Ó~!ÓB"ÓC"$€?E"${n?Y$€?O"= Engine.HUDS""N"X"]Playeru]GameY"$33s?Z"F["C]"MEngine.Mutator_"]Engine.AccessControla"]Engine.BroadcastHandlerc"]Engine.PlayerControllerd"f"]k"qn"]???@‚z‹m>ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ!ÎSM‚€„Ø`ÎSMÎSM‚ @,5 \qD ZuO A`°E3c0‚-Gš9:9:$‚-k š9:9:$€ÿÿÿÿÿÿÿÿÿÿ 3B`ÐO ׀|©û‘oû‘oû‘oû‘oû‘oû‘o~0¿Ä~0¿Äï--%û‘o‚f ÓKMAnother Serverq ]ServerZÓb2`2L@TeCZŠkƒXÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ3  œÀï--%N±Æ·Ö ëÖ ëï--%û‘o±Áû‘o±ÁÖ ëN±Æ·Ö ëN±Æ·N±Æ·ŠN±Æ·N±Æ· œÀJìÜ5Ï Å“ÀJìÜ5ÏN±Æ·‚B $ÍÌÌ=h Óa*$?O ]Snagged an item."}Ó@ÓfÓ|ÓKÓa$A]$33³?D S Ó=ÓQÓV Ó]Ów:pˆQ:p0uG‹[0tÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ!«wR^ï--%ï--%ï--%ï--%ï--%‚h+Ó,ÓDÓBÓJWÓ($ B*$ÈBW FˆP0) #‚‚-k-Gš9:9:$€ÿÿÿÿÿÿÿÿÿÿ3"õSџN±Æ·Š@’ß Å“À œÀ}%†ÿԁ œÀN±Æ· Pd Pd Ö ëÖ ëŽõQŠ@’ß‚p &N($?Z $?M($@œEanI`ab zÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ%DãÚï--%‚DÓz Ó|Ó/a$ AT‘B†.ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ3 &ñ5ÙEï--%Š±ÁŠ±ÁŠ±ÁÖ ëÖ ëÖ ëOØb‚o]%o was killed by %k.m]%o killed herself.l]%o killed himself.gÓR)Ók $€?e$š™™>o1:aDL)"K)$úE][Ši_;@5 ‚-Gš9:9:$@` €ÿÿÿÿÿÿÿÿÿÿ2"'*ÈMž]à$± U2šèï--%ï--%Ö ëÖ ëŽõQÖ ëÖ ëÖ ëÖ ëÖ ëï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%Ö ëÖ ë‚V4:€»ÄU4$AT4$@ES4$š™™>P4$€?N4"ÿÿÿÿfÓ\¬w'~$wÌew'dv' f "[p‰V‹G]0Œ˜ š9:9:$€ÿÿÿÿÿÿÿÿÿÿI+Z{â˜ï--%Ö ëŽõQï--%ï--%ï--%ï--%ï--%ï--%Ö ëŽõQÖ ëÖ ëŽõQÖ ëŽõQ+Z{â˜Ö ëÖ ëÖ ëŽõQÖ ëÖ ëï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%Ö ëÖ ëÖ ëÖ ëÖ ëŽõQÖ ëŽõQ+Z{â˜+Z{â˜+Z{â˜+Z{â˜+Z{â˜+Z{â˜+Z{â˜+Z{â˜+Z{â˜û‘oû‘oû‘o+Z{â˜+Z{â˜!«wR^ï--%!«wR^+Z{â˜+Z{â˜+Z{â˜û‘oŽõQŽõQŽõQŽõQŽõQû‘oû‘o‚]5$Cr: Â Ârº B Ârº B Brº Â BV5S5O5N5$€?M5$€@J5ÓIÓjBÓfÓ|Ó/]$ÍÌ,@` P oÓD$€?($ C*$ C=ÓLÓWÓlÓJÓB_UŠH3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,/‡®oB‘8Ð~+eÚÌ‚C Ó%L‹bƒDÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2,-7ÈE%DãÚ-7ÈE-7ÈE-7ÈE-7ÈEï--%ï--%ï--%ï--%ï--% œÀ œÀJìÜ5Ï Å“À œÀï--%ï--%ï--%ï--% œÀï--% œÀï--%ï--%ï--%ï--%-7ÈE-7ÈE-7ÈE-7ÈE-7ÈE-7ÈEû‘o±Áû‘o±Áû‘o±Á-7ÈE-7ÈE-7ÈE-7ÈEû‘o‚B%] MutatorB8] DescriptionF!Œ]1€Œr^ °ŒÉ X@Co‚aŠ_¡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4fTø­‚€„Ø`‚c ‚E a¡z5D ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ06Pà~h‚€„Ø`‚F  ƒq€ c  ~~#_ŽkWq^Ž5­š9:9:$–9:9:$B Y€ÿÿÿÿÿÿÿÿÿÿ7,;@[ ÑÖ ëÖ ëL$‡U“¥y©‡Ö ëÖ ëÖ ëÖ ëÖ ë¥y©‡¥y©‡¥y©‡Ö ëÖ ëÖ ëÖ ëÖ ëÖ ë¥y©‡¥y©‡¥y©‡Ö ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ë¥y©‡Ö ë¥y©‡¥y©‡¥y©‡¥y©‡¥y©‡¥y©‡¥y©‡Ö ëŽõQŽõQÖ ëŽõQŽõQ‚Ff6Y e6ÓCÓV6Ój XÓfÓ Ó($€?*$€?QSvÓlÓxO2€DS€}-tJYmÿÿÿÿÿÿÿÿ@€ÿÿÿÿÿÿÿÿÿÿCv WŒï--%k:Ùk:Ùk:Ùû‘ok:Ù‚U6ÓT6$€?Q6$€?P6$€?M6$úCL6Ó" jSBÓKÓpS/|>R"ÿÿÿÿ~ fÓ%@dbB*ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿD̳ö%DãÚD̳öD̳öD̳öD̳öD̳öD̳öD̳öD̳öD̳öD̳öD̳öD̳ö‚v¯@Eu¯%mucF*ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿFžö%DãÚ¥y©‡¥y©‡Pì®°C¥y©‡¥y©‡dÊ)l¥y©‡dÊ)l~+eÚÌ¥y©‡dÊ)lŠï--%‚k Óy*Ór)"w *ÿÿÿÿA+$?e$333?h@^YjN' @h } @twA"€_~iR7\1D%)R7 v^Y ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ>HPì®°Cï--% Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd ŠFžö¥y©‡û‘oŠFžöŠFžöû‘o Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pì®°C¥y©‡¥y©‡¥y©‡OØbû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘o Pd ¥y©‡û‘o¥y©‡¥y©‡¥y©‡3B`Ð3B`Ð3B`Ð3B`Ð Pd Pd Pd Pd Pd Pd Pd ¥y©‡¥y©‡ Pd ¥y©‡ Pd Pd ¥y©‡ Pd Pd ¥y©‡û‘o Pd Pd 3B`Ð Pd 3B`Ð Pd Pd 3B`Ð3B`Ð Pd 3B`Ð Pd Pd 3B`Ð3B`Ð Pd 3B`Ð Pd Pd 3B`Ð3B`Ð Pd 3B`Ð Pd Pd 3B`Ð Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd Pd ¥y©‡Ö ëŽõQŽõQj÷-Ñâ!«wR^¥y©‡ï--%ŽõQŽõQÖ ëŽõQŠ Pd ŽõQŽõQŽõQŽõQŽõQŽõQŽõQŽõQÖ ëŽõQŠ Pd ŽõQŽõQŽõQŽõQï--%Š Pd ŽõQï--%ŽõQŠ Pd ¥y©‡ï--%ŽõQŠ Pd ŽõQŽõQï--%ŽõQ¥y©‡ï--%¥y©‡Ö ëŠ Pd ¥y©‡¥y©‡¥y©‡Ö ëÖ ë šùó¥y©‡û‘oÖ ëÖ ë Pd Pd Pd ¥y©‡ï--%zãSgzãSgÖ ë¥y©‡Ö ë¥y©‡û‘o¥y©‡Š Pd ¥y©‡Še±5ž?¥y©‡zãSg‚FH&qF&qB&q@&q%]UT2003Fonts.FontEurostile12~%$€?}%*ÿÿÿÿ|%Ó{%$33s?z%] LOADINGy%]SAVINGx%= CONNECTINGw%]PAUSEDv%*ýؙÿu%"n%"o]Engine.DefaultFontoÝEngine.DefaultFontoÝEngine.DefaultFontoÝEngine.DefaultFontoÝEngine.DefaultFontoÝEngine.DefaultFontoÝEngine.DefaultFontoÝEngine.DefaultFontoÝEngine.DefaultFontDÓ/e J)]lka%`ƒ|0Tÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2U2šè%DãÚû‘oc€™€èc€™€èû‘oc€™€èû‘o‚k%$@ÆA&ÿq%*€€€r%$€;Es%$úEt%$€?C&$€?D&$€?,ÓBÓNÓL0JnIŒBL@r¿ O€ C%†c]qÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ$[˜ðŸ%DãÚû‘oŠ[˜ðŸŠ[˜ðŸŠ[˜ðŸŠ[˜ðŸŠ[˜ðŸŠ[˜ðŸŠ[˜ðŸŠ[˜ðŸŠ[˜ðŸŠ[˜ðŸŠ[˜ðŸŠ[˜ðŸŠ[˜ðŸŠ[˜ðŸï--%ï--%p ïù7‚Š[˜ðŸ‚C,ÓE,ÓI," J,$ÃõH@K,]TimDSfÓ/vpVj^„K^Yÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2]à$± j8Kï--%ï--% Pd Pd ‚i%] unspecifiedz Ó=ÓA0Dd@vZ7bcdefghI¡T}_ ÿÿÿÿÿÿÿÿB€ÿÿÿÿÿÿÿÿÿÿbŽWØ'ŽõQï--%û‘o!«wR^!«wR^T Š Ú+Z{â˜!«wR^+Z{â˜!«wR^û‘oÖ ëÖ ëÖ ë Pd Pd Pd Pd Pd Pd Pd Pd Pd ®ÓaÖ ëÖ ë šùóû‘oû‘o±Á‚k,ÓZÓYÓX$¿S `s‚XŠWzt7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdÊ)l‚€„Ø`‚ldL& .‰a`>d?3ƒ$Ÿ ‚`Šq˜b6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿk:ق€„Ø`‚Z!:€?€?€?Y!Zv7}Z& %$€?#$€?{Z& %$€?#$€?vZ& %$€?#$€?X!"ÿÿÿÿW!Zv7}Z& %$€?#$€?{Z& %$€?#$€?vZ& %$€?#$€?V!$€?T!Zkf $€?}$€?{$€?v$€?S!Zkf $€?}$€?{$€?v$€?Q!f" O!"N!ÓM!"ÿÿÿÿL!Z& %$€?#$€?F!Zv7}Z& %$€?#$€?{Z& %$€?#$€?vZ& %$€?#$€?D!Zv7}Z& %$€?#$€?{Z& %$€?#$€?vZ& %$€?#$€?B!ÓA!Ó| :€?z ÓlÓv :???oÓTZv7}Z& %$ÈB#$ÈB{Z& %$ÈB#$ÈBvZ& %$ÈB#$ÈBs :€?€?€?r Z& %$#$€?rÓm |>l Z& %$€@#$€@k Ój :@F@F@Fi "ÿÿÿÿh Zv7}Z& %$€?#$€?{Z& %$€?#$€?vZ& %$€?#$€?d $ÈBi@@`‰|€@b pVlV{Šž ] `‚XŠOŠcˆz%#‚‚-k-Gš9:9:$€ÿÿÿÿÿÿÿÿÿÿ3sb‹ N±Æ·Ö ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ësb‹ ï--% œÀ œÀ œÀN±Æ· œÀŠN±Æ· œÀN±Æ·N±Æ·Ö ëÖ ëÖ ë‚x €(-VO‰b4N‰ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ v\9ÈÄV6 Æ‚cÓbÿaUU`"ÿÿÿÿ_"ÿÿÿÿZRQ  "" " "Z‡ Ugš€|!+9][haO Y‡@®[U0‚-Gš9:9:$‚-k š9:9:$€ÿÿÿÿÿÿÿÿÿÿ2~0¿ÄO ׀|©ŽõQOØbŽõQŽõQOØbŽõQOØbû‘oŽõQŽõQŽõQOØbŽõQOØbŽõQOØbŽõQOØbŽõQŽõQOØbŽõQOØbû‘o‚T ]TeamX *ÿÿY *ÈÿG]RedGÝBlueGÝGreenGÝGoldi‰zD@GŠW6ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ!B—WžÎSM‚@Fa^ŒP  yI\p€‰B)DjApo‹T£x4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ3MžµVÓpC€²<‚g]N/A}_szw€e0ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿPŽ]|÷sŠn–6[_Þ[_ÞÖ ëŽõQÖ ë‚vÓO+ÓUy€rÓH[-€ X@{ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿ1ÿÿ ÿÿ)ÿÿ ÿÿ ÿ ÿ)ÿ)ÿ ÿ1ÿ ÿ ÿ9ÿ ÿ) ÿ1 ÿ) ÿ)ÿ1 ÿ9 ÿJÿ9 ÿ))ÿ1)ÿ)))ÿZÿ9)ÿ1)ÿ1) ÿ9)ÿA)ÿ9)ÿ)1 ÿ11ÿJ)ÿ91ÿJ)ÿ11)ÿ91ÿ111ÿ91)ÿJ1ÿ19)ÿJ1ÿ99ÿs ÿb)ÿ99)ÿJ9ÿZ1ÿ999ÿJ9ÿA9)ÿZ1ÿJ9 ÿA99ÿb1ÿ9A1ÿJAÿs1ÿAAAÿJA)ÿZAÿJAAÿbAÿZAÿƒ1ÿJJÿZA)ÿbAÿJJ1ÿbA)ÿsAÿJJAÿbJÿ”1ÿJJJÿsAÿRJAÿJRAÿƒAÿbRÿsJÿRRRÿbR)ÿZRAÿŽ1ÿ”AÿsRÿbRAÿsR ÿjR9ÿƒRÿZZJÿ¬AÿZZZÿ‹RÿƒRÿsZ)ÿƒR)ÿbb9ÿsb ÿœRÿbbRÿƒbÿbbbÿsb9ÿjbRÿÍAÿœZÿƒb)ÿ”bÿsj9ÿƒb9ÿjjZÿ€Zÿjjjÿ‹jÿŽZÿsjjÿƒjAÿ‹j1ÿœjÿ‹sÿssZÿÅZÿssjÿœj1ÿ‹s1ÿsssÿƒsJÿ{sjÿœsÿÕZÿ‹sJÿƒsjÿ€sÿ‹sZÿŽj ÿ{{jÿ€s1ÿŽsÿœsJÿ{{{ÿ€sAÿîZÿÍjÿŽs1ÿƒƒsÿœƒ1ÿÞjÿƒƒƒÿ”ƒZÿ‹ƒsÿÍsÿŽƒÿ¬ƒ)ÿ¬ƒ9ÿœ‹Aÿ‹‹{ÿ¬ƒRÿ‹‹‹ÿŃÿ”‹sÿ̓ÿ”‹‹ÿœ”Jÿösÿ‹”‹ÿŽ”)ÿœ”sÿ””‹ÿ¬”Rÿ”””ÿæƒÿœ”‹ÿŔ ÿ¬”sÿՔÿœœ‹ÿŽœRÿŔRÿœœœÿ€œ‹ÿæ”ÿŜZÿ¬¬Jÿ€€œÿŽ€sÿ¬€‹ÿ՜Jÿͬ)ÿœ¬ZÿæœAÿŽ¬”ÿ¬¬¬ÿÞ¬)ÿͬbÿö¬ ÿŽŽ¬ÿœŽ”ÿæ¬ZÿöŽÿœŽ¬ÿÍŽ‹ÿÞŽjÿöŽ)ÿöŽ9ÿœœŽÿÅœ¬ÿîÅÿÍÅsÿæœbÿöœ9ÿîÅJÿÍŬÿæÅjÿÅÅÅÿÍÅÅÿæŔÿöÕ)ÿÞՃÿîÕsÿÕÕÍÿöՋÿÞÕÍÿæÕœÿöæJÿîæÍÿöî”ÿöîÕÿööÍÿöööÿL €a‹c{ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ0V;&,ÎSMÎSMÎSMÎSMÎSM‚>z^og@O\€V€ i<%Aid.ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿN]{[[%DãÚOØbOØbOØbŽõQOØbOØbOØbŽõQOØbOØbOØbOØbOØbŽõQOØbŽõQOØbŽõQOØbOØb¥y©‡OØbOØbOØbOØbOØbŽõQOØbOØbOØbŽõQOØbOØbOØbŽõQOØbû‘o±Á3B`Ð3B`ÐOØbOØbOØbOØbOØbOØbOØbOØbŽõQ3B`Ð3B`Ð3B`Ðû‘o±Áû‘oû‘oû‘o±Áû‘o±Áû‘o±Á-7ÈE-7ÈED̳öD̳öû‘oû‘oû‘oû‘oû‘oû‘oû‘o\ø=ß6\ø=ß6\ø=ß6‚YJ/ b$€fPQ)@Gªc-@e-t| € 'a uU@x)€ €hŽ]7ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿl„åK¹ï--%‚,ÓDÓ@g($ A*$ AXw ~›>^†b ‰?€]@‰B${;$-Bò F‚€QR›‚UŠršM ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ yŸs%‚€„Ø`Ö ëŠyŸs%ŠyŸs%ŠyŸs%FJ ÓV ] $š™™>_ $@@R!$#‡<@#$ÈBA#$€>^‚J€‚m’a§F3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|A6f‚€„Ø`‚@+$€?W ll whVk ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ ®Óal„åK¹Ö ëÖ ëÖ ëÖ ëÖ ëÖ ëbŽWØ'bŽWØ'‚Whe$?v IŒo+€k‰kab]D lVt†D+P3m†ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ H¡Ý`V;&,‚>vw5€‰S–A@|{pVn4c‰odH€ F€ `€ l @# s €AseT8‰  'yC`Jÿÿÿÿÿÿÿÿ@` € ÿÿÿÿÿÿÿÿÿÿ2*[_Þ'*ÈMžï--%ï--%ï--%Ö ëÖ ëÖ ëÖ ëû‘oŽõQŽõQŽõQŽõQPŽ]|÷ŽõQŽõQŽõQÖ ëÖ ëÖ ëÖ ëŽõQÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëŽõQÖ ëŽõQPŽ]|÷PŽ]|÷PŽ]|÷PŽ]|÷PŽ]|÷PŽ]|÷PŽ]|÷‚I4:€?H4Ó/€W&} `i&¢c€@j\#€€@jq24Z+S +C%u€HhS*ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ6i¿§¥ç%DãÚû‘o±Áû‘oû‘o±Áû‘o±ÁŠCŠÜM¹û‘o±Á¥y©‡OØb¥y©‡OØb¥y©‡¥y©‡¥y©‡¥y©‡OØb¥y©‡¥y©‡‚Z*] ACCEPT,*[*]10Your IP address has been banned on this server.\*]('The password you entered is incorrect.]*]10You need to enter a password to join this game.^*m%N¥€@@m{oW @mpW[…u0ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿnŽJlï--%‚DÓ($ B*$ B=Ó@ t Nt!nˆV0ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿsŠn–6!«wR^‚($ B*$ BI/€‰ŒD"+qd p } ~€ f!h"€{L/VH‰w ‰iˆl[X ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿBKŽqï--%‚IÓ\-Ó",Ó^ÓoÓtÓ($€?*$€?=ÓLÓWÓvÓlÓFC[cC*ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2 CŠÜM¹FžöOØbOØbOØbOØb~0¿ÄOØbOØb‚T+]Switching LevelsU+] left the game.V+] Could not find team for playerW+] Could not find a starting spotX+]Could not spawn playerY+] entered the game.Z+] Server is already at capacity.[+]?>Score tied at the end of regulation. Sudden Death Overtime!!!\+]changed name to]+] is now on_+]Name is already in use.`+]started a vote.a+] Vote passed.b+].-Must have stats enabled to join this server.c+] A new player entered the game.k SJ# v!^e€D€‰@kks@Bj\k'G%–­d6¶Gk'6·Gj'6²Gi'Gš9:[%[9=,ÿ6³G[JG @QzH cRY Rk&v!nY?rVOu#ž B|“Q%K6ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ!V6 ÆB—Wž‚€`V U €Õ˜[ V V Y~[ V„›YÿÿÿÿV ppV €[ Yj<[ [ ’Y}VY~[ V%V pV [  YIG ‰x €q SR1¥`£ |}­€oHg sX‡{S7s%š9:9:$‚-k š9:9:$@ €@€ÿÿÿÿÿÿÿÿÿÿ5ýÖ ëï--%ï--%Ö ëï--%ï--%Ö ëï--%ï--%Ö ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ë‚Fi-Óh-Óf-$¯Ce-$HÃ`-[-"ÿÿÿÿY-"ÿÿÿÿX-$€?g$pBf$pBy3Ó~ € Z~€uQ ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ~vŒ¬ï--%‚kÓ Ó/fÓSÓ($*$€-n?@lTb€Cio7¡ñx)o7 WhW6$*ÿÿÿÿ"œo{¯¢äø A  " " " " Ò@×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× Ó@××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××`Ó@××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××Ó××××××××××××××××’Ó××××¢Ó×N(y € @@0F :rúr%0 aXp@Õ‘ä @E Mh'H%£r_6¶s h'6·s g'6²s f'Gš9:^%^9=,ÿ6³s ^s   @ŒŒ{@%gˆd Lÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿIYh^V3%DãÚOØbOØbN±Æ·Ö ëOØbÖ ëN±Æ·Ö ëOØb œÀ œÀŠN±Æ· œÀŠN±Æ·Ö ëOØbÖ ëOØbŽõQOØbŽõQOØbŽõQOØbŽõQOØbŽõQOØbOØbOØbOØbOØbOØbŽõQOØbŽõQOØbŽõQOØbŽõQOØb~0¿ÄŽõQOØbŽõQOØb~0¿ÄŽõQOØbŽõQOØbŽõQOØbŽõQOØbŽõQOØbŽõQOØbŽõQû‘oû‘oû‘oy%ì×#’û‘oû‘o±Áû‘o±Á3B`Ðû‘o±Á3B`Ðû‘o±Á3B`Ðû‘o±Á3B`Ðû‘o±Á3B`Ðû‘o±Á3B`Ðû‘o±Á3B`Ðû‘o±Á3B`Ðû‘o±ÁYh^V3û‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oû‘oYh^V3Yh^V3‚e(]ngLogf(]ngLogg(]1.2h(]#"http://www.netgamesusa.com/ngLog/u]Unreali(]Epic MegaGames, Inc.j(]http://www.epicgames.com/k(]:9http://unreal.epicgames.com/Unreal_Log_Decoder_Ring.htmll(]*)../NetGamesUSA.com/ngStats/ngStatsUT.exen(]32../NetGamesUSA.com/ngStats/html/ngStats_Main.htmlo(]65../NetGamesUSA.com/ngWorldStats/bin/ngWorldStats.exep(]/.-d ../NetGamesUSA.com/ngWorldStats/logs -g UTq(]http://www.netgamesusa.comr(] ../Logss(]&%../NetGamesUSA.com/ngWorldStats/logs&V‘M*ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ3Z?êýü&ñ5ÙE‚o]%o was crushed by %k.m]%o was crushed.l]%o was crushed.I ÓUck¬YE%>aÒYn'm'9?Yk9?YO {S¬ {R!"}"|"y"x"v"u"s"q"F"p!o!l!h!`!_!^!]![!U!j8^>0A8‰j®X&l^wžÆ‰‡‚‚-z›9:9:$Z‚‚w*w*u%uw a oyOg&Eb[y$‚JŠ­@0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿj÷-Ñâ‚€„Ø`‚S"`q €@F"XCC!Ri s€ ~€Œ| @bzzv“-o,~‰F%€p#€Ta e€@b €@jX€ y€K€;xO< k y dU s€LŠlQAÿÿÿÿÿÿÿÿ`€ÿÿÿÿÿÿÿÿÿÿKÎÁ0ï--%ï--%ï--%ï--%‚jV."ènÓX.ÓpÓwÓpÓi.FVl.$€¿,ÓDÓKÓ/HVrÓ}€qaIŒV€@p t€‰{+e{€Dr€€ZU€ _€w`8e\ËÛ3 8R$8aÐTESTN<q?®?q8(€@?8M9=,ÿ$$t¯-rp DELETED (bDeleteMe == true)8 aÑ(ž?q8(€@?8M9=,ÿ9=,ÿ9=,ÿû›9:9:$ROLE  I$pNone× i$pDumbProxy× Ž$pSimulatedProxy× Ž$pAutonomousProxy× Ô$pAuthority× ÿÿp REMOTE ROLE S $pNone£ 5$pDumbProxy£ Z$pSimulatedProxy£ €$pAutonomousProxy£  $pAuthority£ ÿÿÄ-Kp Tear Off8 aÑ(ž?q8(€@?Physics $ -$pNone† K$pWalking† i$pFalling† ˆ$pSwimming† ¥$pFlying† Ä$pRotating† å$pProjectile† $pInterpolating† +$pMovingBrush† H$ pSpider† f$ pTrailer† ƒ$ pLadder† ÿÿpppp in physicsvolume 69Vf on base 69VLø-`p - will bounce8 aÑ(ž?q8(€@?80aÑpppLocation: 9X  Rotation 9Y(ž?q8(€@?8/aÑpppVelocity: 9X Speed 9Uá(ž?q8(€@?8aÑpAcceleration: 9X*(ž?q8(€@?6²8J$84aÑpppCollision Radius 9U> Height 9U2ž?q8(€@?8WaÑpppppCollides with Actors 9T-C, world 9T-Y, proj. target 9T-Sž?q8(€@?85aÑpppBlocks Actors 9T-A, players 9T-^ž?q8(€@?Touching /a3 EÖpp69VE 10zTouching Touching nothing8 aÑ(ž?q8(€@?6¶8J$Rendered: ` }$ š$pNormal ·$pMasked Ù$pTranslucent ù$pModulated  $pAlpha ÿÿn ; $p NoneN Z $p Sprite N w $p Mesh N • $p Brush N ž $p RopeSprite N ß $p VerticalSprite N  $p Terraform N ( $p SpriteAnimOnce N K $p StaticMesh N ÿÿŽ š9:n9:$p69VYù —7|%p skins: i %ù –i 7|É ri |*ù ï pp69Vi |, ¥i ¢ 8 aÑ(ž?q8(€@?n%FGHpppppAnimSequence 9WF Frame 9UG Rate 9UH± -gp Anim by Owner í „š9:n9:$š9:n9:$p9Vj  š9:n9:$p9Vv8 aÑ(ž?q8(€@?6²8J9=,ÿ8<aÑpppppTag: 9WN Event: 9W\ STATE: 9Wa(ž?q8(€@?89aÑpppInstigator 69V Owner 69Vž?q8(€@? I€"\Nqq[UoˆczMÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2c€™€èU2šè‚^&Ó/H)dT €mF~€u€€!pJŒt£K ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿl8²SNpC€²<‚fÓe:HDHDd:HÄHÄpmYŒr€ae @{ U X‚€vu€QT€Š&B€‰B h>vz€Š&oi;Hv‰rir€;E €`G!M$ ¢TB­['N%ÁºÒHePd[' P%(H¯PW \ F@W À l&\ F@W À  ,(¯HW P\ FW @À œ,\ FW @À ÿÿ(HP D k r J$@X€€c3€V«ŠG €p`€`š€JiA‰€wJa€r.^(@A# z-@^X(so_.w€ @v€O@E  [‰M,H@xŽa“m.vŽÿÿÿÿÿÿÿÿ@€ÿÿÿÿÿÿÿÿÿÿrŒ11@‘7KÚ‚w#Óv#:€?r#:€?q#:€?p#:€?"DÓUO“=SLSWSZSvSqNvI#^ aVI%{‰o`p ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ*zãSg%DãÚ3B`Ð3B`Ð3B`Ð3B`Ð3B`Ð3B`Ð3B`Ð3B`ÐOØbOØbOØbOØbOØbOØbOØbOØbOØbOØbOØbOØbOØb¥y©‡3B`Ð¥y©‡ŠPì®°CŠPì®°CŠPì®°CŠPì®°C Pd ŠPì®°C Pd ŠPì®°CŠPì®°C‚u#PGS#@ @YŠ€NŠE‘R ÿÿÿÿÿÿÿÿ"€ÿÿÿÿÿÿÿÿÿÿ@’ßï--%Ö ëï--%û‘oï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%ï--%‚[ $úDc$$ÈBM$\Cp &j"XSkÓv Ó ÓKÓ/]$ @O$`AY1fÓSÓÓ($*$=ÓQÓV ÓUV„P{z š9:9:$@`€ÿÿÿÿÿÿÿÿÿÿ2%AtW_dU2šèû‘oŽõQŽõQÖ ëŽõQÖ ëŽõQï--%Ö ëï--%ï--%ï--%ï--%Ö ëï--%AtW_dï--%ï--%Ö ëï--%û‘oŽõQŽõQŽõQŽõQÖ ëÖ ëÖ ëÖ ëŽõQï--%ï--%ï--%ï--%AtW_d‚Y7 y}GI‰D‹€ pH‹€ |‰W M‰J L vx v€‰qŠim  `N N ‰ŠŠg%N“EgN*ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿY‡'dÐ%DãÚû‘oŽõQŽõQû‘oŽõQ¥y©‡OØbŽõQOØbŽõQŽõQÖ ëŽõQû‘oŽõQŽõQ¥y©‡¥y©‡¥y©‡OØbû‘o‚sŒC Œu!zEnC{ Œz€@b e\V€‚F‰m¢D5C‰ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdÖi©÷‚€„Ø`‚@"ÿÿÿÿ`‰O @@^Zjr‰NUAOqg|4ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿl)œjï--%‚X/p/$€Bq/$€Bs/ÿt/ v/€/$zD,ÓDÓBÓrPtS($ÀA*$ÀAKoG€Ys ]oL' UN‰hla(@zz3G EÕT!rmy( Rw* Gz3 Xonmkgfd`_^WSROLJHGE@~{xurqnmhfd`[ZWUTSONLKID~|yxvutsromlhfcaZYVTSMKJHFDB@~}{zywtrmia]\YXWVTONMFEDCBA@~}|{zyxwvutsrqponmlkjihgfe[YXWVUTSPOMKHGFEDCBA@}|{zyxwutrqplkjifec`\[WE}|wvonmcWVUTNKIHGFC@~}|{yxwvzDELhilsux{LMOPQRSTUXYdhsJLDJDRYbckl|@AHJLO^sJ[\]glmpo{39Ô7!rmy(  9{3 g+lo@noN€,qni€i[B'’ h€‰|72@Di ‰O| ‰y/j€|#!i @D‰DŒ}-ze c A€@x5€@ƒÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿ1ÿÿ ÿÿ)ÿÿ ÿÿ ÿ ÿ)ÿ)ÿ ÿ1ÿ ÿ ÿ9ÿ ÿ) ÿ1 ÿ) ÿ)ÿ1 ÿ9 ÿJÿ9 ÿ))ÿ1)ÿ)))ÿZÿ9)ÿ1)ÿ1) ÿ9)ÿA)ÿ9)ÿ)1 ÿ11ÿJ)ÿ91ÿJ)ÿ11)ÿ91ÿ111ÿ91)ÿJ1ÿ19)ÿJ1ÿ99ÿs ÿb)ÿ99)ÿJ9ÿZ1ÿ999ÿJ9ÿA9)ÿZ1ÿJ9 ÿA99ÿb1ÿ9A1ÿJAÿs1ÿAAAÿJA)ÿZAÿJAAÿbAÿZAÿƒ1ÿJJÿZA)ÿbAÿJJ1ÿbA)ÿsAÿJJAÿbJÿ”1ÿJJJÿsAÿRJAÿJRAÿƒAÿbRÿsJÿRRRÿbR)ÿZRAÿŽ1ÿ”AÿsRÿbRAÿsR ÿjR9ÿƒRÿZZJÿ¬AÿZZZÿ‹RÿƒRÿsZ)ÿƒR)ÿbb9ÿsb ÿœRÿbbRÿƒbÿbbbÿsb9ÿjbRÿÍAÿœZÿƒb)ÿ”bÿsj9ÿƒb9ÿjjZÿ€Zÿjjjÿ‹jÿŽZÿsjjÿƒjAÿ‹j1ÿœjÿ‹sÿssZÿÅZÿssjÿœj1ÿ‹s1ÿsssÿƒsJÿ{sjÿœsÿÕZÿ‹sJÿƒsjÿ€sÿ‹sZÿŽj ÿ{{jÿ€s1ÿŽsÿœsJÿ{{{ÿ€sAÿîZÿÍjÿŽs1ÿƒƒsÿœƒ1ÿÞjÿƒƒƒÿ”ƒZÿ‹ƒsÿÍsÿŽƒÿ¬ƒ)ÿ¬ƒ9ÿœ‹Aÿ‹‹{ÿ¬ƒRÿ‹‹‹ÿŃÿ”‹sÿ̓ÿ”‹‹ÿœ”Jÿösÿ‹”‹ÿŽ”)ÿœ”sÿ””‹ÿ¬”Rÿ”””ÿæƒÿœ”‹ÿŔ ÿ¬”sÿՔÿœœ‹ÿŽœRÿŔRÿœœœÿ€œ‹ÿæ”ÿŜZÿ¬¬Jÿ€€œÿŽ€sÿ¬€‹ÿ՜Jÿͬ)ÿœ¬ZÿæœAÿŽ¬”ÿ¬¬¬ÿÞ¬)ÿͬbÿö¬ ÿŽŽ¬ÿœŽ”ÿæ¬ZÿöŽÿœŽ¬ÿÍŽ‹ÿÞŽjÿöŽ)ÿöŽ9ÿœœŽÿÅœ¬ÿîÅÿÍÅsÿæœbÿöœ9ÿîÅJÿÍŬÿæÅjÿÅÅÅÿÍÅÅÿæŔÿöÕ)ÿÞՃÿîÕsÿÕÕÍÿöՋÿÞÕÍÿæÕœÿöæJÿîæÍÿöî”ÿöîÕÿööÍÿöööÿl„€sSŠPiÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿY œ›å1sŠn–6‚s*Ót*ÓJ Óq*ÓUSrÓt @i @fhU!@B€y]JhJ!z| p;p ŠPWB @q)@D<m‰c €‰x|@O^S& @‚~†pU})ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿp ïù7‚‚€„Ø`‚v Yt €y€[yi;!b‚`’Wª}2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿy >ŠÀ‚€„Ø`û‘oÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëû‘oû‘oû‘o±Áï--%ï--%û‘oŽõQŽõQŽõQŽõQŽõQŽõQï--%û‘oŽõQŽõQŽõQŽõQOØbŽõQŽõQï--%û‘oŽõQŽõQŽõQŽõQŽõQOØbŽõQï--%Ö ëû‘oû‘oÖ ëÖ ëÖ ëÖ ëŽõQû‘o±Áû‘o±ÁÖ ëÖ ëÖ ëÖ ëŽõQÖ ëû‘o±Áû‘o±Áï--%ï--%Ö ëÖ ëÖ ëÖ ë'*ÈMžÖ ëû‘o±Áû‘o±Áû‘o±Á3B`ÐÖ ëÖ ëÖ ëÖ ëÖ ëN±Æ·"õSџ"õSџN±Æ·Ö ëÖ ëÖ ëÖ ë¥y©‡Ö ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ë¥y©‡Ö ë¥y©‡Ö ëÖ ëÖ ëÖ ëÖ ëÖ ëï--%ï--%ï--%ï--%ï--%®Óa®ÓaÖ ëÖ ëŽõQï--%û‘o±Áû‘oû‘oû‘o±ÁK-j €b‡Š@Q€B€3yPC P]`q` B`‰Xˆ€ K Š"f-@)N uƒB…l0 %%‚‚-G -kš9:9:$€ÿÿÿÿÿÿÿÿÿÿL |—YÇN ö&.–Ö ë‚g)$€?_Óv Óc‰U|„k0ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿN ö&.–ï--%N±Æ·‚"yÓ|Ó/a$ AkÓ%EŠj0‰ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿO ׀|©%DãÚ‚fÓ/fgj@@&d!rD‚`ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿT Š Ú!«wR^Ö ëÖ ëÖ ëÖ ë{þJRÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëÖ ëŽõQû‘oŽõQŽõQŽõQŽõQÖ ëŽõQÖ ëÖ ëÖ ëÖ ëŽõQŽõQ‚m*ÿz Óy ÓvÓUB‚x_V€@Z IWj Þ(qI/{k5kiUO-J–9:9:$n®9?, t€x%a/Eh€@["^.‰e;e-a-h%Y^ )a-)`-)_- ~v_€@EXJ@‰0C^ KL0/ÿa!/a0 pa..10Jwp*q!jua [ƒ€Qb%?SHdC$*#-R (-e (-E(-h( €‰E€{‰tai5WmJ„x!w* *h5 An‚TŽw¯.SŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0@x \Ï' ‚€„Ø`‚V)ÓW)ÓX)Ó%]YbA*ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿy Ô O€%DãÚ‚I !@DEOItO# T4~@ABCDbn€\@E0!@z@‚+U !@DEwp i€ZB €}€d[ Aubq^0l>V !@DEM'!@DEU$xRk@‰C0!SY!@SKŒu€‰O7Qj^HKq4b3c NqUM+@d 4h€[q€n Š‚\‰I ‰Š[RQdn‰~?URT€ç¢ ^€‰@o&€ L€N@`‰}€H€‰€f2€XFQ@þ?œwp*pa.wq*qaX‚w * a/!h Jsš9:9:$ w*as*X  XLZA €rO€M“-eP€AG\yh1I@H q~pwŒu$€@‰P €tE‹J‹`šmI!š9:9:$` T‹€<€€[!@CH€tGx€ZHlC”Ž @j @u€@g!€@Cn€h!&eE*ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ3e Æ,€q&ñ5ÙE‚o]%o left a small craterm]%o left a small craterl]%o left a small craterNÓk $@^€@P ]Zd‹Gd·Za!Wq!W` [{7E8E€Šy)E8 jhy_‹96YW)? *hujj°k®š™™>k®š™?m Ž–9:9:$Œfi q!^  D&€yŒW‰^ @@n+[bH$@S k!7'h ]nb…g0ÿÿÿÿÿÿÿÿa@€ÿÿÿÿÿÿÿÿÿÿ2 w A-4VnŽJlï--%û‘oû‘oÖ ëÖ ëû‘oû‘oï--%Ö ëÖ ëŽõQÖ ëŽõQï--%ï--%Ö ëÖ ëÖ ëÖ ëÖ ëï--%@’ßÖ ëÖ ëï--%Ö ëï--%Ö ëÖ ëï--%‚@,Ó` D s}M‰E'z% €@@` nqJ€B CtiCEjE7X1,&)E7 T$* `.ÿ*Íîöÿ"EÀ'š¢çø AÓ  " " " " h$@Ðùµy…µJ\—ïï÷ê†y…iG4ÐûבÖääïë̅}q\U@J…äïüгŸ¹ªàää§di—a6 £³W}ªëÕǖ³†}§Ìëòr§§W JÀª„xdiÌÕëܪŽiX‚ÌŽB;;, ¡ªªx¡„Šzˆ–·¯ÜÌòëi *H yÀŠxiqiiiz [J¥ûŽ,5, H ,…–iLO\i\draB,,5,,H¥Ü \ÀŽH5O\OxЖ555,,,L·Ãã…;õúúkqL\iÜi55;55,,µ…aˆú¬ú?q¥y¹B;5;B5 ·xio=ú[úˆ61·BJB5 ',a\ÃyaoJB×äe¥Ãk i\ 4MXM;;¥yHU@5 5¥¯ˆ'eiJ,#,,LWiWULG91*&5)qÃ¥@ , ),,HsOWUHU5@5,G;…, ,,, ,,;,!XLGGHGG9L@…,, ,)#),; J\WWLGH:x@,, ,, O*)@aqUHL 5 ;,& )qa§O)5,6–G# F ]2E SŠ ‰^!‰@Š-IMc8x\!ŒQ ‰U‰xf @`E€]n U^Oÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2_ %)]à$± ‚a4$pB"d‰nz ,m9€‰l @v€S€@AEfz€kH0€‰ `M \`j¥€@u [mn–€Œmsmm u€|4€`a€]@D€Z‰DŒ\€^OYq%HqNa–PqŠR€ J‰Bˆ€ k€‰Vqm‰‰sE‰]<qb€[ JTR€%[xh|ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ\ø=ß6%DãÚ‚e‰€Š&Ft_w_|Õ69VŸ €@fCkYTCSg¡  j@z@a% c%@"A$¢`%€@@y A aY° I'Ek+p€Œo y €~Ko”bÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿxHý«Ä~vŒ¬û‘o'*ÈMžû‘oû‘o‚T#Ój"O$ AtÓ($A*$€@QÓ]Ó]ÓM2€\-ZYY%HD@Q ar€}@~![]0yf[( JhQ!f Z[Œe>0!Cd@RœpjVO|Áž Y#RzM ‰J!‰X €R€€-f@ÿÿÿÿÿÿ ÿÿÿ ÿÿ ÿWVTÿÿþÿöÿþÿúÿÿ ÿÿÿÿ  ÿëúõÿMZYÿØüùÿÕùöÿØõôÿ’ª©ÿÕúùÿÖüûÿÒúùÿÖþýÿ† ŸÿÓüûÿËÿýÿüÿÿÿùÿÿÿcffÿÿôÿÿÿÿ#%%ÿÿÙééÿìÿÿÿâööÿãþþÿJVVÿÒõõÿ*22ÿÌòòÿ˜µµÿÐøøÿÓÿÿÿÿÌÿÿÿÈÿÿÿÿÐúûÿÝþÿÿÚþÿÿÒûüÿM\]ÿÎöùÿÍøûÿÏúýÿÈõøÿÍûþÿÑøûÿÏøüÿÑúþÿË÷ûÿÍùýÿÉ÷ûÿÊøüÿ£Ž¶ÿß÷úÿÐöûÿÂéîÿÍ÷üÿÍùþÿÎúÿÿ³ÛàÿËùþÿÇõúÿŒ¡€ÿJWYÿÌõûÿÉõûÿÅð÷ÿÅöýÿÅöþÿÆ÷ÿÿÂôûÿŒïöÿÇñøÿÉóúÿÄîõÿÊöþÿÀëóÿÇõýÿÅôüÿÃòúÿŸìõÿÄõþÿi„‰ÿÃöÿÿŸñúÿ»ðúÿ“ÛçÿŽ›žÿËåëÿCRUÿÁíöÿÃïùÿÇôþÿÄòüÿ¬ÖßÿÁòüÿœîùÿ¹íùÿX€‰ÿ•ÙèÿëûÿÿzŽ“ÿÑöÿÿÿ“®µÿÁæïÿžãíÿ¿ìøÿŒëöÿŒìøÿ¿ïûÿ¶èõÿ¯áíÿ·ëøÿ¹îûÿºïýÿŠ×ãÿ¬åôÿ­è÷ÿ|–ÿÄòÿÿœëøÿ»ëøÿ¹éöÿœíûÿŸðþÿ²éøÿ³ëûÿ®æ÷ÿ©âòÿ€Üíÿ«åöÿ—Õæÿ:CFÿºÞêÿ ÅÑÿµæöÿ°çøÿ«âôÿÚíÿ£áöÿœáøÿ,i~ÿt†ÿ¹åöÿ·ëþÿ‰±¿ÿ³éüÿ­æúÿ¯èüÿŠßóÿhšÿÜóÿ–Ùñÿ”Úôÿ*CLÿBs…ÿœêüÿ«Öèÿ¬ÛïÿAV_ÿ©åþÿ˜ÐæÿœÝøÿ•Ôíÿ˜ÛöÿÒîÿ‘Øõÿ~ÊëÿkŸâÿ'c|ÿb}ÿÕéòÿÁçùÿGX`ÿ›Òìÿ€àüÿŒÂÜÿ*;Cÿ’Õóÿ–Üüÿ×÷ÿ†ÉéÿŠÓóÿ‡Ïñÿ|ÄäÿuÂåÿYyÿÿ‰µÌÿKerÿ˜Ìèÿpš¯ÿzËöÿrÃîÿg²ÚÿjÀëÿb»éÿWµæÿNkÿ TxÿOtÿ?Vcÿ 09ÿuŒåÿn·âÿ_­Úÿ`³âÿM¯åÿ4€çÿ-Ÿãÿ\Ž®ÿC§äÿ Luÿ MzÿFtÿ"*1ÿC—Ûÿ@tÿ#ÿÿÿÿÿ8qÿ ÿ ÿ ÿÿ778ÿÿÿÿÿÿÿE€€hm#‰fgC?xo!ICWidLœ P€ W€‰‚q‹q*w4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpC€²<‚€„Ø`‚ns4O.Œ€u,€E6v)‹ k R_ WqH_e¿;Ë ;;@cZ0‰eR0yZÄÌ K0Yjl{Z0xq‚n‹a€S3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿIfâÔ‚€„Ø`‚v"ÿÿÿÿuÓ€E@IŒ|)ˆl R:ngT:U:X:N€€^:m € ‰y jnUO„WŸ KŸ:@XŸ:p~$ £6w~*~$4wn*n$ |€€maW%OJ$w~*~W%X%Hwn*nW%X% yZEd‰_SAU0Aul Œi3h‰m\@n[nªv[rI5Ä€r9=û9:r%“,&‰‚š9:r9:A›9:^9:AM ¯€?M Q×W9:^TIa<Y9:^SªQ IM o‚$-O'A^^rZ¬€?õG> ×£;¥lO>QM>6™IN>6•IL>6 I6F«ÈBM 6žF«ÈBõ ×#<Z6“F®«€C9<A9<^ B€%X‰M‚R Qš9:9:$–9:9:$€ÿÿÿÿÿÿÿÿÿÿqü;ç%DãÚï--%‚G>€fTy€Škp€W\€€D‰ŒqbTk‹€  B^€@Ys €}€i‰i,P'!@DEP@D j lm€Y I g [T@LZTc@b Œ~‰h@Z\(@N‰T‰o^;ŠG%tsrqpA!@DES$@C$k¯!@DEsB€Š&€I‰€jo–\ ~NK‰B^‘N3X‘ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ0fÑW\B—Wž‚Ei€@'I‰py,i’7>C  dz_qD6$ÍÌL>Y6$€?]6$$tIa6Ós7Óu7ÓMk’NLÿÿÿÿÿÿÿÿ@€ÿÿÿÿÿÿÿÿÿÿ@‘7KÚï--%û‘oû‘oŠ&ñ5ÙEŠ&ñ5ÙE‚E$Ój "BÓ/($€?*$€?=ÓLÓWÓZÓvÓlÓi‚ZyJ3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@B‘8Ђ€„Ø`‚j7€,^”rŠI3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDüÆÊ,/‡®o‚] UZŠ] Õ[Š] Õ\ŠC SvÓŠ x afta€ka QY l@b*€@M¥hYnE v"€E"T @tF^*€@T¥@‰M€  B8@DD€R€@^bKW*€@\¥m2@h uT:$,*,!uM*}w * V*€@a¥RŠ [€b‰d‰‰x$xu IN0”šy£-e5 $ $0-d5Q$8Q$-Q-c5-e -b5Q JI`5a5]5‘w*oƒI™oƒI-e ( Mcpp €ŒI"T€KŒ€‰y@q ‰U*€@f¥v‰€j €v%[sŒT"€RdTdBšá6 N‰P€ P$AeB:nÖ²‚ )B:)D: ‰f €‰@|OtAN#2°))tA)vA)wA)xA)yA)zA){A)}A @OCO8¡1È#‚w *›9: T% ŒP6€€@I€[ D€€@i ‰q€V€K` @%f„`\{)ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ_…”Ə%DãÚ‚O$ AgJ;a‰d€@ibgC9`ÂŽ)C9 km@Z @j$t€h$ŠDh8V [€AkP|0 ù;<&±RPô®PAR:õ¯PAR A€Œh*€‰\‹u"ñU—?r)*çppWARNING 9V HAS NO AMMO!!!w .•)?q!S Œf‰)-dN Z.M i  Â0b‹s{I*ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿ7z÷ú¥y©‡‚FK‰F'€@€M‘u‘\ÿÿÿÿÿÿÿÿB›€ÿÿÿÿÿÿÿÿÿÿA5wiòï--%ï--%ï--%ï--%û‘oN±Æ·û‘o'*ÈMžxHý«ÄxHý«ÄxHý«Äï--%ï--%ï--%ï--%'*ÈMž'*ÈMž'*ÈMžû‘oû‘o‚",ÓuÓ}Óa$ AS ÓcPP €@F~\]‰sTLH0Sÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿJìÜ5ÏsŠn–6 œÀ œÀ œÀbŽWØ'‚WSKÓnb”`}w0ÿÿÿÿÿÿÿÿ €ÿÿÿÿÿÿÿÿÿÿKí€Ó]nŽJlÖ ëÖ ëbŽWØ'Ö ëÖ ëŽõQ‚/($ÈBdo®Z&b!‰gŠbh!g:€@h‰@Q8ajklrŸ€@E[ ‚O`‹`[+Za!Wq!W Â0\ d7|Hi@_€@b ~a`"@.V…CŒ€v:\clcö( C&@]– n€@o@.Z…o€@X/.Š~Uƒ€@Šy”x„r0ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿr™5&ùï--%‚" BÓ/lÓS/€\ Œ'c@vŠp ^".!sV‚_ÿÿÿÿÿÿÿÿ@€ÿÿÿÿÿÿÿÿÿÿ{þJR!«wR^Ö ëT Š Ú+Z{â˜T Š ÚÖ ëÖ ëÖ ëÖ ëÖ ë+Z{â˜Ö ëÖ ë+Z{â˜+Z{â˜Ö ëŽõQ+Z{â˜+Z{â˜+Z{â˜Ö ë‚l*$ÈC "z Óy ÓvÓS+Ó,S/UK‚QwŒ‰nc€@f’\}y0e’£ š9:9:$€ÿÿÿÿÿÿÿÿÿÿ@˜‘²ï--%‚"}ÓZÓV ÓCž€@y)€XG$h„€p†€@a €|‰|gJ€xg~€ŠPPA€@€Gk€@YBY VRŽ–Z[K&X@a+!ŠC€ŠF^g8f€€O9V>t^.š9:9:$ ,w*L  Â…Šza€F$B“u]Mÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿj8Kï--%‚f4ZHH:€?€?€?E $D e4ZHH:€?€?€?E $D d4ZHH:€?€?€?E $D ",ÓDÓBÓ]ÓlÓ^@l‰kHlGld%Z„R\z)ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿp(àè~%DãÚ'*ÈMž‚_flU N±ZbS³DU  h›9:T%f ¯¯U ¬9<T9?ôoƒ:h°D¯f oƒ:6s9?ÄS ,£±6s9?,6s«€¿¯6s9?,€6žs9?œ9D9?ÄS ,,ÿö±6žs9?,6žs«€¿¯6žs9?,€6“s9?œ9D9?ÄS ,,ÿI±6“s9?,6“s«€¿¯6“s9?,€Ýs9?,-\›œS ,@%-]›œS , %-o ›œS ,%£-o -x-wœS , œ%t $ÿ Ì&t $ÿ Ü,t $ÿ ì,t $ÿ ü,t $ÿ ÿÿf ôf ®DVq¯f D-\š9:Q&-o -]t s"Df {‘R€G,“R€{Ÿ{9?,sÖx59?, -o ó-x-w-x-wc ôV¯U D€±~9?%Q õ¯®Q c «®G?¯~€±Q `¹Q c j°Q ?``u`?c DU ~6•D{6™DG6 D%a+Dw*6 P 9:s56™P GF„š9:$9:$š9:$9:$q ,Mq %à‚—{q 6•V –{“q 6•Vº–{€6•P q 6•VÝ6•P “q 6•Vð6•P {Xa=P a+P i‚rm* ±c 9?%qc -w5-v5-o -u5t5sX–±¯bš™™>~@F±¯b¬4C9?eX!çr*@Ø I@Ø  I~Û@@Q±~9?,Qr*p $I vþp $v tLÖw.+L*IØ  L  êI  ~ obß„r*›9:$9:$ ˆÙv#QU ap 6I6žI6“ItÜPU ap 6I6žI6“I6v6žv6“vtQdU ap 6I6žI6“I6v6žv6“vt6~6ž~6“~ B$M\e`Ðq t9€u5€"M€Rc‡@D|d@e]cA›{ Skw{ *T‚{ a/!Jr.{ # { { T-@ (XS p"Š f w ^ƒl~w)ÿÿÿÿÿÿÿÿa@€ÿÿÿÿÿÿÿÿÿÿ2 K.Ÿw A-4VU2šèU2šèï--%U2šèU2šèï--%ï--%Ö ë‚Q‰Illd€Bl €MdK:J–4owK: <w*a   {*S*j-Dga!Uq!Bma o H"r/FpH¢I"tš°m9?, vr/ oršwv*sw*p˜mvm€¿šš˜rmvm€¿I" e5€‚vL®x/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJQðäW‚€„Ø`‚DÓe$€?m v4€G"Tf n E$x&‰UP‚K‰VT~1ÿÿÿÿÿÿÿÿB Y€ÿÿÿÿÿÿÿÿÿÿ6TŽ Ö ë‚F_7$@^7$@CÓj"@Ó($*$‰UbŠN t"w"{¹©>rw"rŸ''r*( {w" MbjU‚€@SS~/w c@X& M‰tš€_fŠFld@@.gm%aq eh|w~ÖeK  \a}"@~G.an4]®D €‚Fu±yÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿu“š•‚€„Ø`‚G5$€?K5:€?€?€?~5$$tIo.€FbŒkn4[€ ‰J M‰@ bT$€@F4€\7€sm€kJŒpri¢\Ër9„„wm* r*r* ›‚w*w*n ]r¢n*Ðrn*n ]rÝrn* r*5nGppwn5npu5* €LH€e. KŠ,O €@d€R €Š Q ‰b+!ŠYWˆLl}ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿTøÿÀ’Yh^V3ŽõQOØbŽõQOØbŽõQTøÿÀ’Yh^V3Yh^V3Yh^V3û‘o±Áû‘o±ÁYh^V3‚}]$#../Logs/unreal.ngStats.Unknown.logg@j<€@RF_;WŒqoh ‚Lvon0‚×IG‚w*$±¯Z9?& T Â1`.€t3€Tpo3kÉ;ãnI‚-J±n-J(`_B M o3l-WN wŒ@f^!;‰c;‰b€Z ‰c€ h‰G0!S G#`Zý¿Ò qO+@u€@ $-6?HQRS\efoxŠ“œ¥®·ÀÉÒÛäåæçèíñ÷  "',2;@EJOW_gow‡—Ÿ€©²»ÄÌ Ú ä î #  # ## (# 2#6#=# G#O# [# e# p# z# …# # ™#¡# «# µ# Ã#Ë# Õ#Ý#â#ç#ì#ò#ú#4444 4(4,444<4@4D4L4P4 \4d4l4t4|44‰4Ž4–4œ4 Š4®4¶4Ÿ4Ã4Ç4Ì4Õ4Þ4 é4 ô4 E  E EE "E -E 8E CE NE YE dE oE zE …E E ›E ŠE ±E ŒE ÇE ÒE ÝE èE óE V  V V !V ,V 7V<V@VHVPVXV`VdVlVqV |VV‰V’V—V ¢VªV°VžVœVÂVÇVÏV×VÜVáVæVìVg  g g $g-g 7g Ag Kg Ug _g ig wg g ‹g •g Ÿg ©g­g±gµg¹g Ãg Íg Øg ãg îg x  xx x )x 3x =x Gx Qx [x exmxux}x…xx•x ¢xªx²xºxÂxÊxÎxÒxÖxÚxâxêxòx‰‰‰‰ ‰(‰0‰8‰@‰H‰P‰X‰jsANA JMqA T\r@5P’A„-h(J+±b9?%-g'abva-PaRR-Aq![a-SA tRMÿÿÿÿÿÿÿÿÿÿl` u#s L@VŽ w€Šy tp[Š~‰x@C@V$F  ‰H€W€R.i ovŒs#ŠRx<€V[‰Z_€WŒS‰DXŠK‰U-U3‰]aFŒF €B@@F~ÊÊÌ=F%;–F7|zF|¥F W$€ŠF`@c@|U#€J Œi9O \Y`84 R%x> R€ p+&b&$wn*n+~+ €Œn$ äwn*n$ € s‰p ‰y€N Œi>€‰‰€ €V€‰T Œ{2‰a€[ €kW?jhМ)W? JX?li )X? €@@is4Uos€e L$VRP€X#€_ Mt~-s Í]ÿÿÿÿÿÿÿÿÿÿa €X€f”€‰€V2‰bde?kUw†ŒŸ q @0rQ FÞ)g-m?a'-l?a'((  jv^ I2‰[tmCw] ln1FwYt o d‰[#iUt¬P!šo1@i‰j€‰fRB‘A¡ @S€@{ÿÿ€æÿ>wÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿ1ÿÿ ÿÿ)ÿÿ ÿÿ ÿ ÿ)ÿ)ÿ ÿ1ÿ ÿ ÿ9ÿ ÿ) ÿ1 ÿ) ÿ)ÿ1 ÿ9 ÿJÿ9 ÿ))ÿ1)ÿ)))ÿZÿ9)ÿ1)ÿ1) ÿ9)ÿA)ÿ9)ÿ)1 ÿ11ÿJ)ÿ91ÿJ)ÿ11)ÿ91ÿ111ÿ91)ÿJ1ÿ19)ÿJ1ÿ99ÿs ÿb)ÿ99)ÿJ9ÿZ1ÿ999ÿJ9ÿA9)ÿZ1ÿJ9 ÿA99ÿb1ÿ9A1ÿJAÿs1ÿAAAÿJA)ÿZAÿJAAÿbAÿZAÿƒ1ÿJJÿZA)ÿbAÿJJ1ÿbA)ÿsAÿJJAÿbJÿ”1ÿJJJÿsAÿRJAÿJRAÿƒAÿbRÿsJÿRRRÿbR)ÿZRAÿŽ1ÿ”AÿsRÿbRAÿsR ÿjR9ÿƒRÿZZJÿ¬AÿZZZÿ‹RÿƒRÿsZ)ÿƒR)ÿbb9ÿsb ÿœRÿbbRÿƒbÿbbbÿsb9ÿjbRÿÍAÿœZÿƒb)ÿ”bÿsj9ÿƒb9ÿjjZÿ€Zÿjjjÿ‹jÿŽZÿsjjÿƒjAÿ‹j1ÿœjÿ‹sÿssZÿÅZÿssjÿœj1ÿ‹s1ÿsssÿƒsJÿ{sjÿœsÿÕZÿ‹sJÿƒsjÿ€sÿ‹sZÿŽj ÿ{{jÿ€s1ÿŽsÿœsJÿ{{{ÿ€sAÿîZÿÍjÿŽs1ÿƒƒsÿœƒ1ÿÞjÿƒƒƒÿ”ƒZÿ‹ƒsÿÍsÿŽƒÿ¬ƒ)ÿ¬ƒ9ÿœ‹Aÿ‹‹{ÿ¬ƒRÿ‹‹‹ÿŃÿ”‹sÿ̓ÿ”‹‹ÿœ”Jÿösÿ‹”‹ÿŽ”)ÿœ”sÿ””‹ÿ¬”Rÿ”””ÿæƒÿœ”‹ÿŔ ÿ¬”sÿՔÿœœ‹ÿŽœRÿŔRÿœœœÿ€œ‹ÿæ”ÿŜZÿ¬¬Jÿ€€œÿŽ€sÿ¬€‹ÿ՜Jÿͬ)ÿœ¬ZÿæœAÿŽ¬”ÿ¬¬¬ÿÞ¬)ÿͬbÿö¬ ÿŽŽ¬ÿœŽ”ÿæ¬ZÿöŽÿœŽ¬ÿÍŽ‹ÿÞŽjÿöŽ)ÿöŽ9ÿœœŽÿÅœ¬ÿîÅÿÍÅsÿæœbÿöœ9ÿîÅJÿÍŬÿæÅjÿÅÅÅÿÍÅÅÿæŔÿöÕ)ÿÞՃÿîÕsÿÕÕÍÿöՋÿÞÕÍÿæÕœÿöæJÿîæÍÿöî”ÿöîÕÿööÍÿöööÿA!@ŠC}Š~M4@LT  U€‰©F@B!@LC%‰H‰M]‰e‰NPxA w,€‰€'MD ŒR€‰KŠ€H n'€ e0€G @It\ @Ot}¬f€cd#M e‰BŒ~$€{,NŠaF"dFUoT!€ K@ÿßßßÿ×××ÿËËËÿÃÃÃÿ···ÿ¯¯¯ÿ£££ÿ———ÿ‹‹‹ÿƒƒƒÿwwwÿkkkÿcccÿ[[[ÿSSSÿOOOÿGGGÿ???ÿ;;;ÿ333ÿ///ÿ+++ÿ'''ÿ###ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×Ë¿ÿÏ÷ÿÇ»¯ÿ¿³§ÿ·«Ÿÿ¯£—ÿ£—‹ÿ—‹ÿ‹wÿƒwkÿwkcÿk_WÿcWOÿ[OKÿWKCÿOG?ÿG?;ÿC;7ÿ;7/ÿ7/+ÿ/+'ÿ+'#ÿ#ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓ«—ÿ˟‹ÿ×ÿ»‹sÿ·ƒkÿ«{cÿŸs[ÿ—gWÿ‹_OÿWGÿwSCÿkK;ÿcC7ÿ[?3ÿS7/ÿO3+ÿG/'ÿC+#ÿ;'ÿ7#ÿ/ÿ+ÿ#ÿ ÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ߯sÿÓ£gÿǗ[ÿ»‹Sÿ³ƒKÿ§{GÿŸsCÿ—o?ÿ‹g;ÿƒ_7ÿ{[3ÿsW/ÿgO+ÿ_G'ÿS?#ÿK7ÿC3ÿ?/ÿ;+ÿ3'ÿ/#ÿ+ÿ# ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ·×wÿ§Çgÿ›»[ÿ¯Oÿ‡£Kÿ›GÿwCÿo‡?ÿg;ÿ_w7ÿ[o3ÿWg/ÿO_+ÿKW'ÿCO'ÿ?K#ÿ;Cÿ3?ÿ/;ÿ+3ÿ'/ÿ#+ÿ# ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×;;ÿË77ÿÃ''ÿ»ÿ³ ÿ¯ÿ£ÿ—ÿ‹ÿƒÿwÿkÿcÿ[ÿSÿKÿGÿ?ÿ;ÿ3ÿ/ÿ'ÿ#ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒ¯×ÿs£Ïÿg—Çÿ[‹¿ÿO·ÿGw¯ÿ?o£ÿ;g›ÿ7_“ÿ/W‡ÿ+Sÿ'Ksÿ#Ckÿ?cÿ7[ÿ3Sÿ+Kÿ'Gÿ#?ÿ7ÿ3ÿ +ÿ#ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏ·‡ÿÛ¯_ÿߟ/ÿӋ'ÿÇ{ÿ»kÿ¯_ÿ£Oÿ—C ÿ‹7ÿƒ3ÿ{+ÿs#ÿkÿcÿ_ÿWÿO ÿGÿCÿ;ÿ3ÿ/ÿ#ÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ_[_ÿŠ€] xe€z$W!€FCECo^z€h‘€‰ Dj€p$\mG `A @ CŠ m$\Y!€SEO~8ŠšÈ#‚w *›9: k % S!Ud~€K_1‰‰g$€‰bN€S€‰€Œ@V€E€j! @ QIbZY C_x ‰y €@]°Iw~Gu c!‰FflcG*ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ3e±5ž?Fžö‚}]&%FAILED TO JOIN GAME. NEED PASSWORD.}Ý'&FAILED TO JOIN GAME. WRONG PASSWORD.}Ý)(FAILED TO JOIN GAME. GAME HAS STARTED.}ÝFAILED TO JOIN GAME.x*Óz*Ów *€ÿÿB+"€p€@Y]w€@CX$zg#‰kBqK[Hl&gBeHh7aBŠ~WI\BW9³)\B)]B)_B)`B Y ‰€iN€Q€‰JOnAqŸœÊ2r *  qnAmAlA TO€€‰€TqG `€€A€dGPP€ŒXGbF‰FA‰GCIC@MCJ€ vP€€TC€B€Uk@‰0j@` 'h0[~BXSWB9?6™S[CXC6™6™R%6•R%6 R%UBPB¬¯QBRBSB}‚‚-a! —7% -KC"ÿD!/a0 `Dùù10"w`*`c"w * H‚wN* r * aN}w * kž.b @ CC \OQb@1€o†WrD*èpppNo damagetype for damage by 9Ve with weapon 9Ve –9:9:$çpppp9V client damage type 9VD by 9Ve -X˜7%Ś9:$9:$Yúš9:$9:$6“Hõ6“H«ÍÌÌ>áHc„reN‚‚‚w * we*we *e [ ÝHš™?HÖHHz qb@e| HD¢7zÛÙ| #|  ]-Xèpppppp9V took regular damage 9VD from 9Ve while already dead at 9UTD M9?ze| DHÕ˜7%©we*YeWœ-YuHYD| |>‚‚‚‚we* we w *we *e [ ÝH?cH|w * ~e| zDHb€? Y\E €YE €AD €\ €UD €zD €gQ€Š&'L‰€TtEcCBOZOsPZ/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/ L/K/N/O/P/Q/R/S/T/U/V/W/ª€Š&ªFo`±  {zaTlŒœ  Y7X7W7U7ZcTmŠ(  dQFjUkTGˆêŸ k?šw‰KUA|‰jAzA{xA{O.K.P.Q.‰'@cg  M^~m,h ÿÿÿÿÿÿÿÿÿÿS^c^Ç a?šnV@qmVqVqŠO^i^P‘ÚÅ rE@€_ ‰H?K?haœ)K? r€[WE?c_› )E?)G? L~>‰X RRg>0A0Uqb>0Y>YQ‰w<€IŒF]€‰p[0roM\~=l'=Ûp.~=y‚‚‚-e> wp*pNpdppp z˜‚›9:T 9:$ rp* <b>pقwp*pd<Up E=X ù]Ò bY|Yf€j^;Š&g;šh;šV;ŠP=;j d H× 2j –9:9:$ 0-GWa p M_lfYV %#ld<\l €kne_Å %#ndL\n €€Zud_Xù_Š E ^<^`\DŸÙ  nvà FGH0D Ëè:S0Q‚-Dš9:9:$an; #"| xd€XC:@òt>µ–9:9:$X bS‚-Dw*t ­w*¡‚-fw9*9vaX  FeIef 8~D% oeqÍ+ na€Q€€fOgVg2a6š9:9:$ i ÂÿÿV@t;€Db€X@Fm;€E^U8O­h{)U8 T8ahR8N¬!{)R8 a;€]v€Dt‰z7 #ŒNc‚r7`]ie:€@i€@BŠy j€@X:€‰p‚ki€ors]e‚Nen9X“Ÿú n9  seo9T< 94wv*v\o9p9q9  Xf–Yfsfp6‰€O€Šz€ D9€@R€[ DF}8€@Hk8€‚]6€@€€FlZOúStO‚-U&z€Z&#F êZ“}Z& |Z!O B$sjŠF€@€T€Z8€@S S8€VhVŠb[P ŒCm n5FmQ*]t tmid$ƒÏßw*E–P,} «zD¯iŠ} 9?P} ®«€p}?} 9?Å, ¯iP9D} ß±¯p9?,pO9D} ’w*(-K*&‚a!U a!Bq!B @‚w#6„r#)‚w.#*˜.#7%-3(O @ ÿa[¿þ[!Uq[ öa!Bñ‚ÿ[!F ÿ[!Uq[   þ[!Bq[±Di Di6I |46žI {46“I z46| y46ž| x46“| w4zZŸwz*Ž²zHDZzQzQCCz—ŽzHDCm ‚‚‚°áØz S"I 9?,°áØz R"| 9?, þa[&„›9:@$9:$ a!F z*±Cm zZ»z*“6Zv46žZr46“Zp4@ a*LZ)w.+L*ßI L  @-p(#‚‚‚‚‚‚@a I w.@*$±@2.@b.@-hš9:x 9:$›9:@$9:$ ›9:@$9:$@o‚x .@p@a I @-p'‚‚‚›9:@$9:$ ›9:@$9:$›9:x 9:$ ›9:x 9:$@o‚x @ | Åÿa[q[-W' Bç| I_Ibd]@C FGHIJKdne4€aJ€Š&}S4€‰€@^oF `ŠÅ+#„r*r* H bosxÇãwm* 2r*\ w5*5s*5µ5s*áw5*u orlÉãwm* 2r*\ w5*5r*5µ5r*áw5*u n€gomE Z Þ€@~k3HpANpPï߈6‚w*-K **Jr*q!M PO-3N K~ Âvp3‰H:YpmpoR nó -a j3‰h3€‰N g3€|R€Xqj _Z ÷Ó7„-O‚w*-Onj  v@vc›9:O8%iÒy›9:P8%cÒh*-| (-s(¡6™v9D««Bj |¡6•v9D««Bj E6•vœ6•vÿÿH‚—6•vPF–6•vÀ8±E9?%6•vPFH6•vÀa+vnj _j Lv6 L6 Ñ‚‚-|  w*„-Q  -3i Lj  V3EusRN[‰G ‰O3‰e {fedVUTRI@wutrqngaN3ŒL €M3€wa}Œ@CsA3D‰2‰F‰`s@V €@@U €@\ ‰z2‰q4vI6|Á)I6 lsDtxT ÏZ( B6D6t),)D6 c ‰|@o2‰ml|5x ‘4-ppppì, game_endì, |5 gCBAk R@g @h @i @^€€Nu€€€U2e€Š&^5€@H2B €Y?u1{ fq•1rB { B *//rA { A *  pmEn '2$•ppppppppppì, playerì, Connectì, EIì, 9SE{ì, 9TEa/!zL E @@€Mw q&÷•D!wB *B kB *BwA *A kA *  @sw@€@n1@Gx@J4@L$P!K!I!H!G!{ y x w u t p n g e c b E!gQ‰€G!€@K!W€©pxX€O!WQ!VtxV!YyEmySz€sc1Tzs#Yz€gza1‰€@C‰^1‰\1‰€lv@H ~vd‰‰qn0xjŠk@CZ kw@i!l!j0€b0p€@E €C|adÝ' x!‰€G€€jY0€q šgo_PE€j€`_Vx/T€@Tq‚v‚Sb[  HN"T Š’^ w*}*B}arN" "} jN"} L"€M"€@E0€@@ƒ€B0p d%,1V)±ál 9? l Õ9? âl g±d9?%*Ö×ÕEl Õd*®dE£˜wp *kp $*l ždEʚ9:C9:$CH0-R —9:p  %-e —9:p Q%-E„p -Q-E-h„p -e -hH J"W™i-J aq!l  KƒNƒuÊ1( ‰R"‰N‚Ssƒ!| rƒo„@ ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ32X"™7)Ð œÀû‘oû‘o±Áû‘o±ÁÖ ëŽõQÖ ëÖ ëŽõQ šùó šùó"õSџ šùó"õSџ šùó šùó"õSџŠ œÀ šùó"õSџ šùó"õSџÖ ëŽõQÖ ë šùóÖ ëÖ ë šùóÖ ëÖ ëbŽWØ'Ö ë šùóŠ šùóÖ ë šùóŠ šùóŠ šùóû‘o±ÁŠ šùó‚v!ÓB $?i*Óh*Ód $ðAO ]You got a weaponjb.qÿ($B*$ðAw:p€vƒ €c/€U„€ _".Š~d.ŠCc".Š~`/~„€m.ŠCE…€d"€c…@†€D†€@€-j†€@m"mŠ r†u†xà x†€{@`D/X þ`j. lq"Z•Wl. Xr"@¢u>%w.*.~ <w_*_a s"u"j­O$u"u"Eq! €€@‡€ C/B/QÓGž&w*_ ~ @*hq!Lam" B/erL*a LR L # y.€ w.€ e‡&d‡~)ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ3|"7)6Ê&ñ5ÙE‚o]%o had an aneurysm.m]%o had an aneurysm.l]%o had an aneurysm.gSNÓs‹~i.€ €b z_yŒD# Z. sJ€@Y.G‰€@KK#@z L#N#ZŽ€@W.NV‰Q.G»Õ -e' Â0Q-€@Q#€V#€ W#€Š&Z#^#^€q€_#‰`#‰a#‰b#‰s‰b€ h#‰i#‰‰H.€l#‰e‰q#LŠzo#ŠPB.N@v#ŠA.x#¢{#¢Šy#o¢Š:Pm€@g+!-|-J –i\I$_+@K$–d-[Ž}”j ÿÿÿÿÿÿÿÿ@€ÿÿÿÿÿÿÿÿÿÿL$‡U“ï--%;@[ Ñ‚DÓBÓ/U{”rÓN$ T €@€Šz@€L@€rJK€Y$Z$hŠ&L-ŠKO€@n€~*€@i™v*g_í )v*)t*)s* w*€@c$K-‰r*€@f$€€‰€ŠYG-\F-Q‘\šE\Šn$\ o$\Šx~‰\@q$@r$@€@t$€@z€‰yU|,@N[’ K€@%€‰B%€Š&_€‰}“-o,b_€‰`,j Š;;_,\"W"V"U"T"R"Q"P"Z,s!r!q!n!i— AšCB,E›e YXWVSRQPONMLJœIHS%‰T%y+x+`X%€€Z% zŸ \%€€RQPMeŠF`«@v(€@EDCBnb%i r a%o €D¡n a%l(@g%@s«@i%@J¡€xwvutsnmlkjhgcba`^]\WSQPLJL¡q{z7 –9:9:$ ÿÿÿÿÿÿÿÿÿÿ6m%ž zô¥y©‡û‘oOØbOØbû‘o±Áû‘oŽõQŽõQ¥y©‡¥y©‡¥y©‡Š Pd ŽõQû‘o±Á‚FZ(K€Ch€,T(q,CzŠMZx.ÿÿÿÿÿÿÿÿ@€ÿÿÿÿÿÿÿÿÿÿs%–6jÄCv WŒ‚l)$ Ax5$ ABSO$ÈB($ @*$ @A¬@‚KŽv®A/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿu%Zo‚€„Ø`‚Q€@m¥s ‚t{­Dÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2y%ì×#’‚€„Ø`‚I¬€ g W„Rÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ3}%†ÿԁ œÀ"õSџÖ ëŽõQÖ ë"õSџ"õSџ"õSџ"õSџÖ ë šùóÖ ë"õSџ‚B $ÍÌL>d $ðAO ]You picked up some ammo.UO„qÿW¬€ ~%QŠK¬U0ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ A&Fڞ%DãÚï--%Ö ëï--%ï--%[_Þ[_ÞÖ ë‚!zs€oÿÿÿÿÿÿÿÿ@€ÿÿÿÿÿÿÿÿÿÿ&B&T/æ!«wR^+Z{â˜+Z{â˜Ö ëŽõQ+Z{â˜Ö ë+Z{â˜Ö ëÖ ëŽõQÖ ë+Z{â˜Ö ëŽõQ+Z{â˜Ö ëŽõQÖ ëŽõQ+Z{â˜Ö ë+Z{â˜Ö ëÖ ëŽõQÖ ë+Z{â˜Ö ëŽõQ+Z{â˜Ö ë+Z{â˜+Z{â˜ï--%ï--%ï--%‚{*Ó "dvÓ/Ub€xS§@`'G&@\' M&J& N&O&r)U…oUhÿÿÿÿÿÿÿÿB Y€ÿÿÿÿÿÿÿÿÿÿ7P&k9Ö ëï--%ï--%‚FS7"Q7" P7" O7"L7$ @J7"#G ÓCÓj"bÓA SD$€?P$ÈBo  @L‰`TLÿÿÿÿÿÿÿÿB Y€ÿÿÿÿÿÿÿÿÿÿ6R&PFôËÖ ëTŽ TŽ ‚FG ÓCÓj"@Ó@Ó($*$W' u €X cl Œr\&S‰^&‰\)Œ€H]†@¡q \†ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ0`& f€§H¡Ý`‚>y$ÍÌÌ=€€l¯@Hh†X Ig†ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ0d&³'€ÜH¡Ý`‚>U$€?V$€?W$ÍÌÌ=[$ÍÌÌ=V€@L)CE¡oYRÿÿÿÿÿÿÿÿB€ÿÿÿÿÿÿÿÿÿÿ g&>5ýCv WŒ{t…’‰{t…’‰k:Ùk:Ù_ %){t…’‰{t…’‰_ %)‚F6"E6Z& %$#$€?C6$À?B6$@@` x HŠF4ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿRh&Š£ „§Y‚uÓj&cJKM‰xPdÿÿÿÿÿÿÿÿ`€ÿÿÿÿÿÿÿÿÿÿ$l&KÃ*KÎÁ0ï--%ï--%v\9ÈÄï--%ï--%ï--%ï--%ï--%ï--%v\9ÈÄv\9ÈÄv\9ÈÄv\9ÈÄv\9ÈÄv\9ÈÄv\9ÈÄï--%û‘oxj‹v\9ÈÄv\9ÈÄv\9ÈÄv\9ÈÄv\9ÈÄv\9ÈÄv\9ÈÄv\9ÈĬ¥y©‡'*ÈMžv\9ÈÄv\9ÈÄû‘oxj‹‚~.ÓpSyÓ{Ó~ÓjS,SA SO$–DnÓn&€_€€6Iœ}*y5Fœÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0p&ºŸtÉ6Pà~h‚%P‡om^ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿq&eùAè%DãÚ‚t"v:€B€B€B,Ó^ÓsktÓLt®\&El€Š‚œq|‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿt&~€1œoº²‚{7"Z(ÓH(*kÿD(*?ÿA(*ÿ~'*??ÿÿ|'*ÿÿz'*ÿw'*ÿv'*ÿÿt'*?Àÿÿd'*£££ÿN'*ÿM'*ÿK'*£££ÿJ'*?ÿ&*ÿÿ}&*ÿ|&*ÿÿÿÿ{&*ÿz&*ÿÿy&* À?ÿx&*ÿn&*wwwÿm&*£ÿl&* C—ÿk&*•ßÿj&*ÿi&*ÿÿÿh&*£££ÿg&*ÿÿÿf&*áÄÿÿe&*ÿÿd&*ÝÝÿa&*ÿÿÿÿa €€‚lK‘cgq7ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿz&«\ô l„åK¹‚Bgg„~hZ7ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ{&”óùï--%‚"~&[±J4€&R±G4@'C±U3A'u°L3_°a°C3t°€D' r*u*w*~**D+G+H+I+Q+R+[° c*d*e*f*g*j*k*o*p*€H'k)n)p)[)\)])^)b)h)i)j)Q&} ~  @!K'v(x(y(z({(|(}((J)M)N)O)P)Q)T)U)O'[(\(^(`(a(d(IE m¯ @Q'n¯@z !@ER'W(X(Y( ]&I(J(K(L(O(Q(R(S(U(V(c kr…h™O6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿT'»_׎k:Ù‚I "E $@D "@C $<FS&R&T&U&V&V& V' I®XA®!~­DW €z €]'€€a' b' =c'€@@­€@_'€^€f'€g'€[€i'€j'€€@€m'€€@‚tˆw¢B5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿp'&ÎK‚€„Ø`‚S"ÿÿÿÿS¢ÿÿÿÿS¢ÿÿÿÿS¢ÿÿÿÿS¢ÿÿÿÿS¢ÿÿÿÿS¢ÿÿÿÿS¢ÿÿÿÿ$–K€–K€–K€–K€–K€–K€–K€–Km&€€r'€€t'€€v'€K\TQFÿÿÿÿÿÿÿÿa€ÿÿÿÿÿÿÿÿÿÿx'ÆhÉõKÎÁ0ï--%ï--%ï--%‚R.jT.fQnSpSwSpSyÓ`.Ób.Ó{Ó,Sk€@€z'€{'€|'€}'€~'€@€@(€A(€€C(€€@D(€F(€€H(€I(€€@K(€L(€@E¬t%M(€@P(Q(€ŒR(€‰U(€AS(€V(€n%@W(€SY(€e@[(€w«@€u(y«cj%_(€b(€@d(€@€f(€g(€h(€i(€j(€m(@n(@G@k(€p(q(€r(€€z(_«Yb«t(€w(€x(€b8F G y(€{(€u@|(€^@D@)€@{@€C)€D)€@=MŠVy‰Bž~4v‰ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ G)ŽY V6 Æ‚R@$+29@GNU\cjqx†”›¢©°·ŸÅÌÓÚ     $ + 2 9 @ G N U \ c j q x  †  ” › ¢ © ° · Ÿ Å Ì Ó Ú $+29@GNU\cjqx†”›¢©°·ŸÅÌÓÚ\%©%Åj.Ó%Å”7©%+%c%G%.@%c7©7x7Ì7Å7j7+77·7¢7Ÿ7©7j%U%N%†79%¢%”%›%2.cj.q.†.Ó.›.¢.©.x.$%777$7°ÓÌN7@7G7·\7277$%.+x2G9@\%UNq.%”%†7›7Ÿ¢%›U797©ZªbŠ]GWg"tf&€ŠB_Šgžo3ÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ N)‡íçŒB—Wž‚‚m‹L€T3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿO)~Dⷂ€„Ø`‚Z€BªŠqS)€ŠA€@~ €Š€€€€€ xŒNÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿR])êcM÷ „§Y‚€E©€€€€€QI]_Nÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿd)¡‹Àï--%‚}5$€?h$ ADÓL]%S€!ÿÿÿÿÿÿÿÿ €ÿÿÿÿÿÿÿÿÿÿe)€ŽÈ8%DãÚï--%ï--%ï--%ï--%‚yz$ÀA{"0|"0}$€?~$*C$?@$pBAZ& %$ŒÂ#$ŒBC$€;ED$ ÁE$@BF$€?H$€?K$ AL€M$HÂO$ÍÌLœP$HÂZ$@[$HB" DSBÓUp™fÓ=ÓlÓ€€€_$*651ÿ*öÿþÿ"ðÚb¢äø AÓ  " " " " ¢@òòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòò££££££££££££££££££££££££òòòò££££££££££££££k(k£££££££òòòò£££££££££££££HOH£££££££òòòò££ Hk££££££òòòò££ ££££Hk££k( (H££££££òòòò££ £££H Hk£kO (HR""££££òòòò££ ££k((£kO ›£&&"£££òòòò££ ££k(H"£™£ H£" . ££òòòò££ £"" ù£òòòò££ "" ù "" ùù.,  & òòòò£ ""ù™" ."" ù,&ù"ù# òòòò ™ " 'm" #™"" ù ù.""& {òòòò. ™&& ' £ ™"" ™"™ #òòòò ù' ™ ,£"ù &""™' " .'òòòò™ù '&mù "£ . .""".. ,ùòòòò ù {Ð{™ù ""ù& ™m""ù'™ , òòòò™ù ™ """'& òòòò™ù.''ù " ™ {.ù™"""™.# ""òòòò™™ù.ù ", &'{ùù"" .&ù' ù"òòòò££™. ™. ù.'ù™" ™&.ùù ù òòòò££££"™™™ ™"òòòò££££""""£""£"£"™ ""£"£òòòò££££££££££££££""££"£££££òòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòò €€€‚uV­+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿm)-ËM‚€„Ø`‚R%$ð@S%$€?T%"üÿÿU%"œÿÿÿV%$RžŸ?X%$ázT?Y%$€?Z%"Öõÿÿ[%$B`å;\%"È]%$X94g%$€>j%$ Ào%$@œEp%$zCG&ÓJ&ÓK&ÓL&ÓN&ÓO&ÓP&ÓBJ‰NWB2ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿn)gƒ!gBKŽq‚IS,S^SKÓlrFPiÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿo)i’del)œj‚,SBSoÓQŽd]}1ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿp)Šh¿Ûï--%‚\3vm4]9d^9d–_9d–b9d–c9d–e9d–Q8"KÓe @g YŽF`Y1ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ s)­ÌÂï--%‚"GÓjS}ÓfÓKÓa$A]$33³?D ($ÍÌÌ=*$ÍÌÌ==ÓZÓ]ÓPšX]Q‹b^S1ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2u)ä$˜™]à$± ‚_4"ÿÿÿÿ^4"ÿÿÿÿ]4$ðA\4$ðA[4ÓZ4ÓY4ÓX4$ðA"‚mv­O1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿv)ÉmÀ˜‚€„Ø`‚Q&"ÿÿÿÿT@H X§€L§€Xz)€yC*F§{)s=48›9:z)9:$(64š9:{)9:)q!'6( )G"—lq! 'D‘E`T0ÿÿÿÿÿÿÿÿB` €ÿÿÿÿÿÿÿÿÿÿ2~)LćØ'*ÈMž‚,SBSW@WŠXŠA-ù U€PŠSŠcbN D*LŠsT,( E*HŠX NŸ ( CŠEŠxA_  M*DŠtBŠŒG*‰H*€‰}¥ŒJ*‰{$€¥pK*€‰x¥€@S…U†Q0ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿP*©Ç _ï--%‚"bÓKÓzÓD$€?P$HB($ A*$ AsG¡FI0F¡ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿQ*kAxßsŠn–6‚WSKÓlWC0ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿR*Ÿä(Þl„åK¹‚BirÓw%€S*€@n €r € w € ‚}\¯@/|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@X*>„‚€„Ø`‚LŽ@’}.ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿY*бª&ï--%‚M7$ÈB[ $úDU$$€?R$$zDP$$zÄ"($€?*$€?[*€@W¥€@X¥€\*€X]*€ys%yŠOZ|.ÿÿÿÿÿÿÿÿ@€ÿÿÿÿÿÿÿÿÿÿ_*ü_ s%–6jÄ‚d"ÿÿÿÿCF‹q>v.ÿÿÿÿÿÿÿÿ@€ÿÿÿÿÿÿÿÿÿÿ`*ë#(çCv WŒ‚^5"ÿÿÿÿd"ÿÿÿÿGÓBSfÓa$A]$33³?($ÍÌÌ=*$ÍÌÌ=]ÓP¥@a*€yI‹Z?u.ÿÿÿÿÿÿÿÿB Y€ÿÿÿÿÿÿÿÿÿÿ6c*'Å>xÖ ë‚Fi6:p0uh6"g6Ó=SQS‚DŽl±s.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@d*× yžžžžžžPòÄžžuž²˜) ,8IH6+1žžžžžRñÄžhŒT%*&-'% "-42!a«žžžžSðÃd6# "XÐ¶œ' "HŒ2#),&$pžžžž[îÁ;# "ŒšÏý÷²! %X‘œ^6"&#ežžžž]ìœ=li¡šÈöêV ˜ž’X) <„žžžž_ëŒF±,j˜i˜Œ 'É¢jI!{žžžž¹`éœdJJ*'¬i% 3ÙȐ8%0{žžžžž¹ˆæŸžž~J4j’6.)GZÉÒl&&Hb‚žžžžžž¹ŠåŸžžžž7I."!#,,#(5g|žžžžžžžžºÛ»žžžžžmY3*&+0Eft|„žžžžžžžžžºØ»žžžžžžƒ„|lvv}“«žžžžžžžžžžžº”׺žžžžžžžžžžžžžžžžžžžžžžžžžž»–Õºžnnnnnnnnnnnnnnnnnnnnnnnnž»™Î¹žn9:?Doq…¹¿ÃÆßàâãnžŸ›Ì¹žn9:?Doq…¹¿ÃÆßàâãnžŸŸ·¹žn9:BDoq…¹¿ÃÆßàâãnž¿ µžžn9:ADoq…¹¿ÃÆßàâãnž¿£Žžžn9:CDoq…¹¿ÃÆßàâãnžÀ€³žžn9:@Doq…¹¿ÃÆßàâãnžÀŠ³žžnnnnnnnnnnnnnnnnnnnnnnnnžÁ©³žžžžžžžžžžžžžžžžžžžžžžžžžžžÅ®³áºººº»»ŸŸŸ¿¿ÀÀÀÁÁÁÂÂÂÂÂÂÂÂÂ䮳®ÓLLLKLOQRW\]_‡‰‹Ž•—šŸ £¥Š§®®®ªÔ @ÿÿ ÿ ÿ  ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ! ÿ%#ÿ""ÿ$#ÿ)&ÿ(%ÿ0-ÿ !!ÿ!'&ÿ"&%ÿ!('ÿ!))ÿ ,)ÿ",+ÿ$.-ÿ&/.ÿ,,,ÿ$0.ÿ#52ÿ%31ÿ%41ÿ%42ÿ'95ÿ'<9ÿ(53ÿ+43ÿ(:7ÿ(>:ÿ+<8ÿ*?;ÿ.=:ÿ,?=ÿ666ÿ888ÿ)@<ÿ.B?ÿ,D@ÿ,GCÿ.KFÿ/PJÿ6DBÿ1JFÿ0MHÿ8LIÿ1PJÿ;PLÿ5WQÿ7UPÿ7ZSÿ7]Vÿ:ZUÿ:aZÿ<`XÿB%x, }$Nz,NgN|$z‘X$€€'f‘€A-€b‘€‰&R‘L*ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ3D-rînì&ñ5ÙE‚o]%o was telefragged by %km]%o was telefragged by %kl]%o was telefragged by %kgSI ÓNÓO‘€ k$\šo\H‘€ŒH-€€‰I‰e `D*ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ3M-$ªþ6e Æ,€q‚o]%o crashed and burntm]%o crashed and burntl]%o crashed and burntS)ÓcZ€¢V€ A €€ b€@&{J ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ3T-ˆ÷€w&ñ5ÙE‚o]'&%o exploded in a shower of body partsm]'&%o exploded in a shower of body partsl]'&%o exploded in a shower of body partsgSI ÓNÓs€U-€V-€m€@}Ž€WZ-qŽ€@^-€€@€–_-€‰`-€‰DY b-Y jVl%FŽ@h-€i-€@D$€@l-€m-€@j-€@p-€q-€ŠFr-s-t-‚n-€@w-€€@u-€@F x-€@F#€U^ €@Q –w#¢r#~‹CŒa ¬dc( @Œ€k#€i‹TUF.€j‹€‰I.€‰g‹€!J.€‰€‰f#€VP#x À-e'q!i Â#t‰z·® Z‰A N€S.NU.NV.NH#Kšy|ˆC#‰[.‰\.].` ejˆ€@V $*kÿ*öööÿ"<¡-»¢çø AÓ  " " " " 2@S®¢‚?$ÞýöÁºÈÆÈÆ¢>€öøýøöññèèèðISÚSIÄÒÿÿýýøøöøøðAñÍ>ÚĘҀjÿpVNV‚ž®âÍSçÄ>ÞÄ®c/ÞøÿÿV'666,6'[ecšŠ$SðûÿöM/'/''''',3'6VjcjðöÿÍ[?VM???6V;L[;6VvjIçöý˜V?NVVVe,V;NVvÄÍŠ‹eN?6NV;$,$V;6Nv‹jSVI?Ne> >$/pVrN;jpNN,$$v‚LžN;cp/I®€;ˆN?V>ypv͎0vN,VN r,˜Þ®;NN?Vc M^e·ÍV;N,Vc3?BrˆÒÒV,N6VV>ýö^?#6VV$ûø€V63>/$‹‹€jNV SˆM=!-b q!F zšNˆ€@z@#zf. Eˆ€"€€Œ_€@j.€‰V"r‡\€‰n.€{"~ ^‡\‡€R‡€ |.z"r0r*z".rz"w. N‡€ {.€@€A/y"sý0r*y".sy"y. ~.€@€@J‡€€F‡.]ô('r**% ]. L€‰YB‡mƎ"w*m * n"o"y~•2#w* yo"0o"€¿* € Dn†E/PiEh#„r*r * a ×   n a+ gE/aÓ(  T€G/€H/€c†ŠN _l"I†šM/šN/šO/šP/š{…€t…€m…€`…€a….V/.]….ŠCN….F…€@.Z/€@.[/€@.A… „ €@ Y„€Q„€J„€‰D„€€Y"|©nƒ€dƒjƒh Kàm €Šl/H(D-J t/ £aƒ)Ï-J u/aA( p€Zƒs)Rƒk/X,wK  nÿÿ!ÿÿÿÿÿÿÿÿ€€{‚€s‚€Š u/Y*.#  t_*-Á i‚Xš@„ÿRRRÿkkkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿv/€@Xmb‚R‚€‰€@|/€@/€H `m Ac%"#q-h„A-e -howA*S"A  R"A  v!S ‰\ !S €D0!S F0!S €aj!S i€@T$*FHÿ*öööÿ"֕az¢æø AÓ  " " " " œB@ý·ˆ–¥§§–¥ˆ–ˆˆˆ–ˆ–…§ièûû÷Í·le???/'iÙûª§xŠÆ§63??33'djÿÈ®®¯iˆž·N??>3'…ûæ \ýÈҎeŠˆˆˆ§V????\ûÝüýxdûÄÍ'§zˆŽK???d÷ÅÅÅÝû÷6iÚÎÄ·Šˆ§???O÷ŸÅűűíý?i̖––??…þű»Å±±±ÅíìzÌ¡ˆ–?”ÿō±±±±±±»÷ÅxÕ·¡–Bÿí}©±±¹©Ûí+Åd衖·¥6þÿØ}¡¡ÛÝg»zû·zã§'ýŸûì}w}»å„#ÅiûÎgЧ'ýu”æ÷gÅõE ¡dñ}ˆ–ûnuìý÷d }iڊi–÷uŠgûYgiÆiz–ì}u}÷giÍdŠ æu}u÷ \Ídz–Ï}Š}ì ŠiÍirˆÅ}u}æài͈yˆÝ}¡Ý; qùxÒÒ®§æu¡¡¡Ý;Åzˆÿ}¡¡©Ý; ¡x–àò±©±ÝH”zˆ#EÝÅÉÝ  iû··–ØÝíE x·¡¡ù}}uŠ*±ýnxĪ°xˆ xzˆzrˆˆˆ–ˆˆˆˆˆŠii…}z UiQi]€TO€NM^P0€K€S0€b€o€€}€B‰L€€jv!j\0{ it t!v h[ ^0uSS _0@uEI~-q@a  N-q@ #@a+@P'(<\.@-q KmM >‡ W €Opq!pc0@pJ€j~W&za~p!k=ò*(Op!L\p! J€ZX~f8íqhfOfP±Y9?%<°¯OY O<\f‚w.f*w.f *T %–T ,÷rT .f {T .f {*¥T œ@‚{f wf*f 5f P-^a(ff±j9?%aj( H,L,G,F,D,A,€l0xm0e!o0xZ}X} k€+€+v0€Š€i|€K0€@x0€md|^…’ e|€z0c|gˆÜ {0€€@1!z`|z~0€‚€@C1€@D1€B1F1I1€‰J1€‰€ŒG1M1€‰N1€‰€ŒK1€ŠF€P1€Q1€R1€T1€@€@€@€@p$*ÿ*ßßßÿ"ën9¢çø AÓ  " " " " |M@ÍÏÏÏÏÏÏÏ ÍÏÍÍ ÍÏÍ  ÏÍ ÏÍÓÓÓÏÍÍÏ ÍÍÍÍÏÏÏÏÏÓÍÏÓÍÍ ÏÏÍ ÍÏÏÍÍÍ  Í ÏÍÍÏÏ  ÏÍ ÍÏÍÏÍÏ  ÓÏÍ ÍÏÍÍ  ÍÏÏÍ  ÓÏÍ Í ÍÍÍÍÍ  Í    ÍÍ Í ÍÏÏÏÍÍÍ Í ÍÍ  Ó Ï T€@R€] ‰K €Œ]!‰b  l‰r ~x#D$t#€€g1_y]-h1[y_-qwd-c-b-a-Lyi1wxC!Fx\ l1CxK |@vw@m1wvu€Lo&p&q&q1€s1€v1t1B(•)t1)s1)q1 gwo-ٔ €w1€x1€p1jf_€{1€|1€}1€z1HwH Wwy%u @B2@C2D2€@€€[ŒU‰J2‰|v@K2‰xv€N2€O2€aqv€‰Q2€‰R2€]ŒAv€W2€aX2€Y2€Z2€[2€r1V'W'X'Y'Z'\2€‰^2€‰]2]'^'_'`'_2€c2@uu@S‰d2‰e2‰€€xftitGÄ od-3(R Y]tktxØ ŸeÿÿÿÿÿÿõÿÿÿU!‰d4r4Kt€‰r2€€€e t2€v2€‰w2€‰x2€‰Z‰XsI‰}2‰~2‰Vs€‰R ‰Ns€'AsK‰zr€‰vr€'fr€H3€‰erbry'×% LrEsZ… ÚE2ÿÿÿÿúÿÿÿÿM€C€m ‰‰}q€‰~)yq€'H `_^]l ‰T3{yn`@('B(C(Z3eqQX3E(F(G(W3‰@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ‚‚‚ÿƒƒƒÿ„„„ÿ………ÿ†††ÿ‡‡‡ÿˆˆˆÿ‰‰‰ÿŠŠŠÿ‹‹‹ÿŒŒŒÿÿŽŽŽÿÿÿ‘‘‘ÿ’’’ÿ“““ÿ”””ÿ•••ÿ–––ÿ———ÿ˜˜˜ÿ™™™ÿšššÿ›››ÿœœœÿÿžžžÿŸŸŸÿ   ÿ¡¡¡ÿ¢¢¢ÿ£££ÿ€€€ÿ¥¥¥ÿŠŠŠÿ§§§ÿšššÿ©©©ÿªªªÿ«««ÿ¬¬¬ÿ­­­ÿ®®®ÿ¯¯¯ÿ°°°ÿ±±±ÿ²²²ÿ³³³ÿŽŽŽÿµµµÿ¶¶¶ÿ···ÿžžžÿ¹¹¹ÿºººÿ»»»ÿŒŒŒÿœœœÿŸŸŸÿ¿¿¿ÿÀÀÀÿÁÁÁÿÂÂÂÿÃÃÃÿÄÄÄÿÆÆÆÿÇÇÇÿÈÈÈÿÉÉÉÿÊÊÊÿËËËÿÌÌÌÿÍÍÍÿÎÎÎÿÐÐÐÿÑÑÑÿÒÒÒÿÓÓÓÿÔÔÔÿÕÕÕÿÖÖÖÿ×××ÿØØØÿÙÙÙÿÚÚÚÿÛÛÛÿÜÜÜÿÝÝÝÿßßßÿàààÿáááÿâââÿäääÿåååÿæææÿçççÿèèèÿéééÿêêêÿëëëÿìììÿîîîÿÿÿÿÿÿfq€‰bq€'D b^h  °`3f XCq O)FqB wÅ ¬ÿFB‚w*-GCBs B Rt ؄r#*#-r‰‚-M wG*GA Øž‚w*-rOØÑwa*OaØOB #R#  Ir#7-3WRt«v>GsRt r#t-O tG Y&t Ó‚#a/!R  -3ßRÕ#2#€?t t# u.#Üwu*”š9:9:$Ludu MdtduXz7‘wu*u ot7»»udtu g܁-3ßRu JD-3R×RÕ¯#2#2#€?WRt«v#> €Š|Bq€|€Œj‰b3rqpopa Wx P÷Ju$-{ž6“a 9?, Ba#€?ui3pšwa~j3Øa Õp99ua (# A A A*jôÛØa ~Bp³jp*„„-{ -K,±j®9?, õ#>#2-K'cØa ÕjBtu2a+ta cut _pUpg€PpŒ€€€–s3€@zBpB€@y€ow3DT0ژy9 Dw3'–‚-} w9y–w** &   Â1€@eou3`oSC€Š‚[o€€@PoJ ÖŸ.,š9:9:$p?restart$( €@B4€C4€LoOoL ûBœ,"rmy(*-Q' €o€G4€‰H4€K4@L@LI4€‰N4@LO4@LCo@LL4€P4€€R4€‰qdefg€‰W4@DLzn@DLU4€^@€‰Z4€€rnO ¬-µ Â1fn`4€€hn\ L  a4[ QD  b4Z V  c4 Z· $ç "w^*^ç  N€Œd4g4Nbk çg4 €@genA)gò  ^nVn\nG0Ëu™-örC*`Zêw`*¥fӗf,dHZZZQHm HQ*ÍwZ*`ZZZQ`m `QCC`rH``Qa +`CCCQ`Q*` €€@H€I €€-p4€t4€€@LnKnI)r‹  r4€L€w4€x4€y4€z4€{4€k€}4€~4€4€}mzmXÕ @5€B5€€C5€E5€`F5€G5€J5€@€@m€M5€@N5€@€@rmqml À! K5€P5€Q5€R5€`S5€T5€n€V5€W5€€X5€_5hmrZ5€€Œr €@l5cmp]5€‰`5€aa5€b5€c5€d5€g5€€Ym€‰NmSmhÏw8çProcessDrive Not Valid Outside State PlayerDriving €j5€R6Qmnk5€r Hmvp5€€n5~j €@R€s5€at5€w€v5€I€‰^l€z5€€@{5€}5€~5€5€‰C} Ñ A6~ ô @6€€@` F6u)g)F6 €@€G6€€@H6€‰J6€‰K6€_lL6d ~']'NL6K6J6(((($H6G6 B$r€N6€O6€s9WlUEb¹Z9„„rU*rU|*reb * raU|wr*rk UP6O6N6 ÂÿÿV6[l_€€OlRlZE×X( u6[\]@ÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿ̙ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿ33ÿ333ÿ33fÿ33™ÿ33Ìÿ33ÿÿf3ÿf33ÿf3fÿf3™ÿf3Ìÿf3ÿÿ™3ÿ™33ÿ™3fÿ™3™ÿ™3Ìÿ™3ÿÿÌ3ÿÌ33ÿÌ3fÿÌ3™ÿÌ3ÌÿÌ3ÿÿÿ3ÿÿ33ÿÿ3fÿÿ3™ÿÿ3Ìÿÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ3fÿ3f3ÿ3ffÿ3f™ÿ3fÌÿ3fÿÿffÿff3ÿfffÿff™ÿffÌÿffÿÿ™fÿ™f3ÿ™ffÿ™f™ÿ™fÌÿ™fÿÿÌfÿÌf3ÿÌffÿÌf™ÿÌfÌÿÌfÿÿÿfÿÿf3ÿÿffÿÿf™ÿÿfÌÿÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿ3™ÿ3™3ÿ3™fÿ3™™ÿ3™Ìÿ3™ÿÿf™ÿf™3ÿf™fÿf™™ÿf™Ìÿf™ÿÿ™™ÿ™™3ÿ™™fÿ™™™ÿ™™Ìÿ™™ÿÿ̙ÿ̙3ÿ̙fÿ̙™ÿ̙Ìÿ̙ÿÿÿ™ÿÿ™3ÿÿ™fÿÿ™™ÿÿ™Ìÿÿ™ÿÿÌÿÌ3ÿÌfÿ̙ÿÌÌÿÌÿÿ3Ìÿ3Ì3ÿ3Ìfÿ3̙ÿ3ÌÌÿ3ÌÿÿfÌÿfÌ3ÿfÌfÿf̙ÿfÌÌÿfÌÿÿ™Ìÿ™Ì3ÿ™Ìfÿ™Ì™ÿ™ÌÌÿ™ÌÿÿÌÌÿÌÌ3ÿÌÌfÿÌ̙ÿÌÌÌÿÌÌÿÿÿÌÿÿÌ3ÿÿÌfÿÿ̙ÿÿÌÌÿÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿÿ3ÿÿ3ÿ3ÿ3ÿfÿ3ÿ™ÿ3ÿÌÿ3ÿÿÿfÿÿfÿ3ÿfÿfÿfÿ™ÿfÿÌÿfÿÿÿ™ÿÿ™ÿ3ÿ™ÿfÿ™ÿ™ÿ™ÿÌÿ™ÿÿÿÌÿÿÌÿ3ÿÌÿfÿÌÿ™ÿÌÿÌÿÌÿÿÿÿÿÿÿÿ3ÿÿÿfÿÿÿ™ÿÿÿÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€@€eb_6y)^)_6 lk€^6kkl Ž `6€šeC c6d6€@e6€šck€Ii6€j6€šb€@n6l650fA1þb!b!XT l6b ƒHk_b)ÿ?›_q CDFH™‚‚_-{ we*web *eb .x_TCDFH ƒX €|‰€q6€€s6€‰\jVt6€‰v6€šw6€x6€Xj^z6^{6@^|6@^}6@^Vj€€@Uj^A7@^€@€@Kj€@€HjHG7HF7€@I7€@P€@H7@H€DjHtN7HM7€Z7P7€@€oGHIJKL{i€@evia1ü7$ pišS7PQRSW7ciUei@ŠyX7^_`Tnopq]7€€@[7b7Qôu)b7 `7€a7€€@Ui€@N €@Ni€@€@€h7i7i€@l7€@i€n7€@J€@€Zep7@q7€‰a #‰zhv7} š)v7 €@u7~ ò w7y7h#)y7 €@t7 #{hC8C£ky)C8 }7€@~7€@7€@z Šm%qh‰@8€©€@€C!€@gh€‰I8€‰bhw€@Zh€Œ}n €@L8N8O8P8Rh€ŒSh€@SPh€‰W8€@g €@Mh€‰hgXYZ[O€€]8€‰€S@_8@b8€e8O V $*H6ÿ*Õööÿ"XJ¢ñø AÓ  " " " " {@Éæ汩±þØ}Š±©;í©Š©ŠÅ+¡¡”z¹Ֆˆ¯·¯ ·ªªØq©¡,©©ªØàûÐÓÐÓÐÓÕÜäìõÝŠ¡L§ggdz z[[pÈ §,Ì}¹R©# Ù^Ȉ¥¹z·”ª#NÙÜ;Ȉ ·r¯;”·Œòñ,·žr¯r–#ˆˆ^/¯r ñ··ˆÆºüôêêêêßßœÓÔÔßѶÊÊœÓÑÓœÑÙ×è×èê×üZP8("   (""-7(CßüCTC88"--êüA=<-""ÍŠžŠövœô8<--$""ñçÞÒÄ® œî3-/"F>€ýööç$ öÍÄŠ Ñî -$jŠvޘøÞÒÍc"ÒŠĀ×ß('Äç˜ðvÞžžŠjf® Œ˜ÄvÑÙ ""Š®jšSҀ‹€j/ҀÄvÄj×Ô"€˜c€/žcjvjIS $®jÄfÑÊ">€/€cSj/€jÆcÑÊ €Scv/Äc×Á  jccc$žIꢀvvcê“/$Zô¶¢‰tfltt“¢‰~¶Ê“‡“‡¢¢µœ¢‡µµÑêÑÑ f8@s@l8€r@ng€m8r8o8€p8€q8€@z8€u8€v8€ŠFw8x8y8‚{8€KHMNO\ eg`g€£[g)sWbªšw*-Y(h6Z Y$a'(( #o‚${-X'š-Da E9A9UcÿùÿÿÿúôÿÿÿR IgRBkˆaÿÿÿÿÿúÿÿÿÿhG9bÄÝ)G9 Ag€I9€J9€ŠFK9L9M9N ‚fL Dë^ }fG:K^ {f€@R9€t€Š rfW9T9\õOX#„r*r* ž„r5* w.b*5 yT9¢r55*žr5* mär*Gw5u X9ofU ï X ffjfqåñV Z9]fZ ʉT UfZf[ É^T \fU€^9MfOfVÁ¬S Df€ f9€c9~e^ ›®O d9b šO e9{ez™uO mexe_˜TO g9pe€j9k9l9qe‚re€€‰p9q9v€Ve^eEg[J ÀHP€v9€€MeTee JNF;#°¯r 9?, (7r ' €Qe€y9€r9€{9€|9€z9€|Cek tBW‚‚w*2„š9:$9:$š9:$9:$ -G A:€Ð€D:€€vdILã=omrKIbwIz*KIzOIzz ?mz €¿ nd€I:€H:]db«ƒ7 VdZdoªJ7 J:L:€M:Q:GdBkvv2|BR BEw*-X-Kd×  Õ9?99 t €‰O:€Š&t €‰U:€qctcg$Î+ W:€€@€Be€mc€kcS÷Y'-O'* gchc€ec€‰]:€‰^:€a:€@l€@_:€_c€c:€‰P€@d:€‰h:€@i:€@j:€@k:€@l:€@m:€@n:€@o:€@€@f:€[p:€Vc€Rc€‰Oc€@;QcP_ñõ Lc€‰Ic€x:€{:€|:Bc@Cc}:€Š!bZbHcnY7õC/a3 'u>=‚u-G±ua 9?%0'10( :€A;€zbE;€xb€@C;€vb€‰rb€sb€pb€L;€M;€ lb€N;Q;€R;€S;€Š&jb€‰O;T;W;€€U;€Z;€€eb€[;];€‰_€j;€b;€c;€d;€‰e;€‰\b€Š&a]b€]f;h;‰XbVb€\€l;€^ŠW€Pbq;U€ o;€Hbv;Cç%†)v;)w;)z; w;€z;€y;€ }a€pajaq!*ñq!-Y(-O'o‚$ ~;v3u3t3s3r3O€x3w3ma€A<€B<€ga€UaI<€€ h G<J<P<€La€‰\L i LQ<€Œa<‰Cax``€T<€U<€€l`€W<€€h`€€e`€€b`€€_`€sd<@8iØ%``jj-- €\<€€e<_<€b<€qXcX]m19D«{B=Ø]  Õ«?®]2]>s Õ«{u<s w<10-m( €`a] ÐNÍ@>‚‚š9:n9:$ -p2 -q2 | C jJ_aRÖ  P_J=aNŒ)J= €‚w^;MK=N=L=;O=Q=€ŠF€r W;‰T=;‰W=€r €h^€u Q^€‰T^OZ=Od^€\=€–€€€I^€–E^€d=€‰€‰k4j4i4h4g4]g=p,t†ÿÿÿÿÿÿÿÿÿÿ~csƒ p4o4n4Z]s4r4T]Gl=€‰€‰€m=€€o=€€q=€€s=€€u=€y=€_€€{=€€a=€–w€p€Q\Z€€=}[@-€ŒB>|[B-C>€‰E>€€€‰€‰€‰€F L> M> N> ‰`[Q>D)‰’)Q>)R>)S> R>€‰S>€‰U>€€€Q[YW>YX>Y€K[Aš[>Aš\>Aš]>Aš€_0€i0d>€‰f>‰D0S0qZ0j>€k>€@Œo>€m>R5Q5P5n>U5T5\ZZ5Y5X5W5€@Œ}0RZd5c5b5a5`5_5v5u5t5s5r5q5p5o5k5j5i5h5g5f5e5aYrO‚D&-PQmQ,QBQmO,9DQ €_ ht>Y =*wt>(bkwZ= €Qyw>ySYOYQFã— S€€rW$*ÃÄÆÿ"àöZ5¢æø AÓ  " " " " ̜@ûûûÿÿÿûùûÿþÿûûûúûûûÿÿÿýÿÿÿûùúøúùûÿþýüýþÿûûûúûûûÿÿÿýÿÿÿûùûÿþÿûûûÿÿÿòòòòñòòòòðòòòòñðóðñòòòòðòòòòñòòòòïïïöööïîïöõöïïïíïïïöööôöööïîíìíîïöõô÷ôõöïïïíïïïöööôöööïîïöõöïïïööö mWeWPTtš x‰cW€Œ{€€|‰B?‰€G?€@XW€SW€KI?e`ԛ )I?)J? J?€€€M?šN?šO?šP?šKWš€€€V€€U?€@€H €wVsVftž [?m6l6k6j6\V D7A7@7}6|6{6z6o6n6G7E7KVš]?šIV€–_?€^?šPh}֞ Ašb?d~éž ]K…iŸ k€ŠP*OUšg?šh?šiU€–i?šm?AmTAnTpjT‰psT7m^TrŽÏ  c7b7a7`7€{S€j?€–€€u€Š&x?€€y\Rx’e¡ {?a•‹¡ -O( ZRXR[ ™þ¡ }?VRgx¢ o‚$a  @@€‰E@€‰zQ€‰sQqe %F(„–7%š9:9:$ VD—7%F @ G@€‰€I@‰€Q@Zfw8Ržx rw* v‚‚w-U '„þf!þwNf„-vrwC*B w  ‰ciQmQw& µCj ôHB«®Ga=6“9—7%@6“-G' €P@F‰K@€rF‰R@‰cQN@aQw.Ž V@€‰]Qz ßk+ -r Ftz }T7ú7& 7ù%7Èw*~w * R99gR×ÔR®ÛR9?ô#HCy Rw * Iz mz  }?mz .}gwz *<\z t<\*¶6“ffŠ?¢N. WÔ‚w}*}-Y/T})`}T-D )‚-Y \{}T XQ‰u€‰Y@€Š[@€^@O@€\@€Š`@‰g@ŒQQde€_@‰e@ddQPQB/Ö i@f@KQC/  JQe w!ne@#-r BŽS9?%S«ÍÌL?2XSlzgg69VŸ ‰To@€c@€€n@€m{PR`©åøY -O 0‚rL*š9:$9:$o‚$Wœw.L*º.L-QCLR19D¬9?Å9D¯9?&¬6“9?HLH Õ? Z\WW‚w.AL*°6“9?pþÿÿRõ.ALH€?LI19D¬«¬9?ÅþÿÿÿHR6“9? Õ? Z "p@€Št@€šw@C €{?tPOxŒ3öw.O*]O z@‰x@{@|@}@}P@Lýû¬$)@)@A)AA)BA)CA)DA)GA @A€šAAC BACADAGA`P€Š‚‰E€‰€‰IA€Š&OA€š€Œ€ŒMA€‰QAC D0E0F0RASATAUA€YA€š~?tO|g;ŸÖž–9:9:$ 3‚w * N 7ÿÿÿÿbš9:|9:$* M- œ†š9:|9:$* e  œo‚$* e   ]AC €ZA€[A€q^AkAD€@€`A€bA€@‚dAeAfAy@€gA€ŠF€ oAQO€lA€‰mA€"rALO€€hA€ŠvA€š€ŒwAC xAyAzA{A}AfN€RAP$‰° )A)@B @B€šTN€š€[~MANs c%« €EB€GBHBIBJB€pM€NB~Jj9OBuJd9bB`JV9AJPBQBRB}IlI`mI TB_IN1`I^IXB€UI ]B€‰_B€‰VBMIU1`B€KI€NŠ~cB}7~77dBmHl7eBkHk7fBiHj7rgHi7nCcHg7iB€@jB€@RH€FHŠ&^BDH[1nB€@pB€@lBBH^1qB€rB€@€@tB€@yG€vB€@wB€xB€@€@|B€^ `lG}B€@jG€@S~BB@CDC€@]GITG@VGSG wJC€ŠGLC€HGbJ OC€ŠPC€xFQC ;UC€ŠqF€kFiI`FZC€Š€]F]C€Š€_C€ŠoC€ €`C €aC €oBM2N2O2bC €cC R2S2T2U2V2W2X2Y2Z2[2\2eC^2_2`2a2b2c2d2e2dC €‰hC€iC€gC €kC €fCm2n2o2p2q2pClCy4qC€‰mCu2v2w2BD€‰[ €rC €sC €tC €uC €QE €wC €xC €yC €zC €{C €|C €}C €~C €C €@D €CD€‰TD‰] €DD €ED €FD €GD €HD €ID €JD €jC€ŠND €_ €KD €OD €PD €SD €^ €‰VD €WD €XD €YD €ZD €[D €\D €]D €^D €_D €`D €aD €bD €cD €dD €eD €fD €gD €hD €iD €jD €kD €lD €mD €nD €oD €pD €qD €rD €sD €tD €uD €vD €wD €xD €QD €RD €yD €[FLDzs>¿)LD)jC)iC)hC 6R |D }D ~DD@EAEBECE‰DE{EE{FE GE ‰HE IEJEKELEMENEOERE€vC €PE{&SEp)TEUEpCVEWEZE €Z €XE]E €^E€_E€`E€aE€bE€cE €dE €eE €fE €gE€hE€iE€jE€kE€lE€mE€nE€oE€pE€_€[EmCqErEd{DsA|xšÀ)sA)hA)y@)x@ 7dvEwExE{E €|E €}E €~E €E €@F €AF €BF €CF €DF €EF €FF €GF €HF €IF €JF €KF €LF €MF €NF €OF €PF€QF€RF€SF€TF €UF €VF€ €yEYFZFG^F^CvnÁœ$)^C)_C)oC)qC)BD)CD)TD 5WF\FcF\CujžŒ )\C)]C 3[CŠC_FWCXCsFYCtfî» )YC)ZC 2eFfFgFhFiFVCbFlFmFnFPjFoF@ "pF~FSCsb1» )SC)UC 1uFRCrFvFyFzFlwF{F|FQGNCr^zº)NC)OC)PC 9}FFBGCGbDGbEGbFGbKCb@GIGJGKGLGHGGMGNGŒOGŒcGHCoX¹)HC)JC)LC 0PGx€RGDUGYGbZGb[GbCCbWG^GO\GaG!bGBpGBCmO|· )BC)DC eGAC‰_GfGgGhG€iGkGzBv){B@nGxGyBkN$·)yB)|B)}B rGX oGlBB‰TBsG@uGvG@^B|GuBiMȶ)uB)vB)wB)xB €@wGoBGsBhLZ¶ )sB)tB €@cQH}GgK¶ #{G@HAHCHVBGH HH'IH‰JHKHLHMH‰NHOHPH^ XHmBbJãµ)mB)nB)pB)qB)rB !€@@EHSHTHWHgZ hB^Ibµ)hB)iB)jB €bJIYHu,@mŽ \H]H^H_H`Hs)aH‰nHCUH€bHfHhHjHpH@oHgBrH@qHrtH@sHcBvH@uH`*wHc*yH@xHfB{H@zHeB|HC}HdBH@~HC@ICBI@AICCICEI@DIrGIlHsbBdH€bFItHIn ?<Ž €‰IILINI€RISI[BOIVI ‰u Š&KNPIV7 ³ TIZI[IYBXI\IWB`]IaI‰bIcIdIeIfI\8gIhIiIjI@kI‰UBnI@oI@pI@qI@rIÝsItIuIvIwIx'xIŒyIzI{I|ISBDP B1C1D1E1F1G1H1I1J1K1L1zG€~II€BJCJDJEJFJGJHJIJJJKJLJMJNJ‰OJPJQJRJSJTJUJVJWJXJYJZJ[J\J‰]JŒ^J‰cJŒ@JaJ‰bJeJ@dJOBgJ@fJiJ@hJjJkJlJmJnJoJpJ ›ÌqJrJAK@sJš_J€vJwJxJ‰yJzJ{JŒ|J–tJJ@KCK@BKNBEK@DKMBFKGKHKIKJKKKLKMKNKOKMBQKz9ÜB‰9:MD €PKSK{9Ý”‰9:ND €RKUK|9Þå‰9:_ €TKWK}9ß7Š9:RD €VKYK~9àŠŠ9:SD €XK[K9ááŠ9:^ €ZK]K@:â:‹9:UD €\K_KA:ã‘‹9:VD €^KaKB:äó‹9:WD €`KcKC:åXŒ9:XD €bKeKD:æŒ9:YD €dKgKE:ç,9:ZD €fKiKF:葍9:[D €hKkKG:éü9:\D €jKmKH:ê\Ž9:]D €lKoKI:빎9:^D €nKqKJ:ì9:_D €pKsKK:ík9:`D €rKuKL:îď9:aD €tKwKM:ï9:bD €vKyKN:ð{9:cD €xK{KO:ñא9:dD €zK}KP:ò3‘9:eD €|KKQ:ó‘9:fD €~KALR:ôë‘9:gD €@LCLS:õG’9:hD €BLELT:ö£’9:iD €DLGLU:÷“9:jD €FLILV:ø_“9:kD €HLKLW:ù¬“9:lD €JLMLX:úù“9:mD €LLOLY:ûF”9:nD €NLQLZ:ü“”9:oD €PLSL[:ýà”9:pD €RLUL\:þ-•9:qD €TLWL]:ÿz•9:rD €VLYL^:Ǖ9:sD €XL[L_:–9:tD €ZL]L`:a–9:uD €\L_La:®–9:vD €^LaLb:û–9:wD €`LcLc:H—9:xD €bLeLd:•—9:QD €dLgLe:â—9:PD €fLiLf:/˜9:OD €hLkLg: |˜9:KD €jLmLh: ɘ9:JD €lLoLi: ™9:ID €nLqLj: e™9:HD €pLsLk: ę9:GD €rLuLl:!š9:FD €tLwLm:—š—:‚š9:$9:$ÿ9:[!9:[‡‡‚‚w *š9: z9:$ÿ9:]!9:]9:ED €vLyLn:œš:‚š9:$9:$ÿ9:Z!9:Z˜Š‚‚w *š9: z9:$ÿ9:\!9:\˜9:DD €xL{Lo: Ÿ9:AD €zL}Lp:!ù9:@D €|LLq:"`ž9:C €~LAMr:#Ş9:~C €@MCMs:%GŸ9:}C €BMEMt:'­Ÿ9:|C €DMGMu:( 9:{C €FMIMx9) 9:zC €HMKMw9*í 9:yC €JMMMv9+V¡9:xC €LMOMu9,²¡9:wC €NMQMt9.¢!-T!9:dvC €PMSMs9/}¢!-T!9:duC €RMUMr90ä¢!-T!9:dtC €TMWMq91Q£!-T!9:dsC €VMYMp92À£!-T!9:drC €XM[Mn95‹€9:6lC_ €ZM]Mm96ë€9:6kC_ €\M_Ml97J¥9:6gC_ €^MaMk98©¥9:6dC_ €`McMi99 Š9:6bC_ €bMeMh9:sŠ9:6aC_ €dMgMg9;ÖŠ9:6`C_ €fMiMY,AM§ €hMkM\.B|§ €jMRD¢§ lMsEɧ mMLBXGš)LB }J€€nMpH!š qMKB`9I»š)KB)JB)IB)HB)GB oMsM€tMuM€vM rMFBnL © )FB)EB wM €yM @ouxM$T«©-%„r * -Da+u {MDB9\6ª!w* 9DB zM|MM|`‡ª € @gBN€CN€‰DN€Œ€`CBFN|g`«"wg*gIg €@v:ENHNPn¬ b€? IN€€GN@R vy¬¶ @_3@@Rw@*g@BgI@a/!J‡›9:9:$S$u›SSa XSr ]NZBT2G²)ZB JN{Ž{®g*a* * LNNNN ™^¯( €p „š9:$9:$š9:$9:$±º6“9?,d['( €UNXNIÍ.³1w * I/š9:$9:$ o‚$ €[WNBBo ÕÕ³<aBBa+a Eo‚$ :N q!^ }M@X@N\YN[eâCµf\[V{[M9=,ÿ9=,ÿ9=,ÿ[4aÑpppAnimation Action 9W[B Health 9S7ž{V[(€@{[FaÑpppppAnchor 9VO Serpentine Dist 9UAC Time 9U@Cž{V[(€@{pppppppFloor 9Xo DesiredSpeed 9UEC Crouched 9T-h Try to uncrouch 9UB®„wa*š9:$9:$ pp on ladder 9Va[aÑž{V[(€@{[PaÑpppppEyeHeight 9UX BaseEyeHeight 9US Physics Anim 9T-Yž{V[(€@{Çr *[M9=,ÿ$$[aÑNO CONTROLLERž{V[(€@{å e[V{Fr*[M$9=,ÿ$[aÑNO WEAPONž{V[(€@{de[V{ ZNX~AABS)ñ°)AB \N@Xjm[NQn AºË8r *×aQ oÕS#€?J aÕ«¬fff?K#9?,djQgŽ\ž6“J SÞ6“J XÃ-HßJ iQK/J  ^N@X_NJ €‰aNX`N|Aj$Œ|A o cN@X€‰dNwi+ŠŒDNÕw@6“N«®ffæ>«ÍÌ ?w6“@N eN@N€‰hN@gNY ]4=œ„+-H\ @# ^ ö^  ×#Œ ×#<™š9:$9:$QჰQ9?, ž\ «ÍÌL>Y «ž\ «Y ®š™™>¬«333?QS@ÔÔÔx^ Q»«A\ [«[¯9?&ô€?«€AY 6“@[Q±Q9?, 6“@®6“@«««@?^ Q»«€A\ –±j  ×#<ž[«ô€?«€AY j ¶j 9?“&Å,Y ‚Rš9:$9:$QÁ®«66«6ž6ž@ÔÔÔÔx^ ?Q»«€@6“@«««^ À?Q»«A‚\ @Ô@¯9?&ô€?«AY  jN@lN@mN@kNpNd`ëÁ‚w * -D €oNrNhf“Â( €qNtNNl Ãw. * €sNvN\r±ÃXš9:9:$'(r *(:r. *'w.¬. e* €uNxNG9bÅLn. ‚‚wn*n-3w.¬ne* n€nN @wN{Ng‡ Æ#r *  g €ŒzNuAMŽ€Æw * a+uA yN|NND9”Ç‚w * -F €~NAOB9™sÇ:#„r *r K*(X K €}N€e€GGOb«É r ** K €FOqAv³’É!w * KqA DOHOpAy¹Ê!‚w * bpA IO€KOMONOOO€ŒyzcÆbËP#„ -H< r** nz T$z PO€ROVOx8Ò•Ì €UOjAL×ÍÌ)bÍÌL>'w * LjA SOWOiAbÞõÍ?=w. *. biAgAfAeAdA XOf[O\O]OYOcA5äßÎ0.w. *. 5cAbA ^O`O «p_OaAê†Ï&$w * aA`A aO «cO «bOfOdò+Ð' gO€w €eO_AkúªÐYD ¡_A Š.woD* CaDWwC*Cj dO «iO «jO «de>$NyÚŠe€V>//Vr3ýðÒž€jrª>ýöøҏ§$jjjN6B/®®Šj?ˆcÄÍƂBˆ6vÍâҎN^…$ŒÍâÙ®[B·,?ÚâñâŠjNzMIñçøÞvpB^z‹"âøÿڂVMB'6®cSðñÎejNª$ŒÄ$cžvN?V–)ðÚvvV7?KVˆ®ûÍžŠveVve§…j‹ÚÿñÚÒÒƁ?3v‹‹‹‹‹vc?>$vvjSI>$ XAVAyQ™Ø-Q-VA @€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿžœ™ÿœ—ÿž”ÿž“ÿž‘ÿžŽÿ¹±?ÿ Ÿÿ ŸŒÿŠ€yÿ¬©fÿ²®Rÿ€£|ÿ©šmÿ¬ªgÿ®¬Zÿ±¯Wÿ±¯Nÿ¶²DÿºžEÿŒ¹Cÿº·Bÿ¹µ:ÿ¹¶7ÿŒž8ÿº¶4ÿ¹¶3ÿ»ž0ÿœº+ÿœ¹+ÿÈÅ-ÿÈÅ*ÿœœ™ÿšÿœœ•ÿ“ÿžž”ÿŸŸ“ÿœœÿÿ¥¥zÿŠŠxÿ©©rÿšškÿ­¬hÿ¬¬dÿ¬¬aÿ­¬\ÿ°¯Zÿ°°Vÿ°°Tÿ±°Lÿ··Lÿ¶¶KÿžžHÿ¹žGÿµµEÿ¶¶Dÿ¹žEÿ··CÿžžBÿžž>ÿœŒ<ÿ¿¿;ÿº¹8ÿºº8ÿœŒ9ÿ¿œ9ÿÀŸ9ÿ¿Ÿ8ÿ¿¿7ÿ»Œ5ÿ»º4ÿœœ5ÿœœ3ÿÁÁ4ÿº»1ÿ¿¿2ÿÄÄ3ÿÃÄ2ÿ»º/ÿÂÂ0ÿÄÅ1ÿŒ».ÿœŒ.ÿ»Œ-ÿŸœ.ÿÄÄ/ÿœŸ-ÿÂÂ.ÿŸŒ,ÿÆÅ.ÿœœ+ÿÄÄ-ÿÅÆ-ÿÄÃ,ÿÉÈ-ÿŸŸ*ÿÊË-ÿœŒ)ÿÂÂ*ÿÆÅ+ÿÅÆ+ÿÅÄ*ÿÊÉ+ÿÊË+ÿÅÄ)ÿÅÆ)ÿÆÄ)ÿÉÉ*ÿÆÇ)ÿÌË*ÿÌÍ*ÿÅÃ(ÿËÉ)ÿËÊ)ÿÌË)ÿÅÄ'ÿÍÎ)ÿÏÐ)ÿÍÍ(ÿÎÎ(ÿÐÐ(ÿÍË'ÿÓÓ(ÿÕÔ(ÿÍÌ&ÿÑÑ'ÿÒÑ'ÿÒÒ'ÿÖÖ(ÿÕÕ'ÿÖ×'ÿ×Ø'ÿÎÍ%ÿÚÛ'ÿÓÓ%ÿÙÚ&ÿÜÜ&ÿÛÜ%ÿßà%ÿÉÈÿ¢£ÿ£€~ÿ¥Š{ÿŠ§wÿ§švÿ©ªlÿ«¬dÿ¬­_ÿ¯°Wÿ°±Pÿ¹ºGÿºŒ=ÿŒœ>ÿ¶¹:ÿžº6ÿ»œ6ÿÀÂ0ÿËÍ)ÿÒÔ'ÿÕ×'ÿÙÜ&ÿÛÝ&ÿÜÞ&ÿÛÞ&ÿÞá&ÿÜÞ%ÿßâ%ÿáã%ÿáä$ÿâä$ÿáæ$ÿâç$ÿåé$ÿãç#ÿæé#ÿåé#ÿæë#ÿæì#ÿéí#ÿêï"ÿìï"ÿ¡¢†ÿêñ"ÿ ¡ÿ¡£…ÿ¢€€ÿž•ÿœž“ÿž™ÿœž—ÿœœšÿyO~J.XlÙ%¹X~žc~SS ZPWAM ¯$)WA)YA)]A)^A)kA)oA)rA {O|+_ùÙ9žX¹cSô«ÍÌL?b¯b9?,  zO$*j”“ÿ*€ñìÿ"‡¶‹Í¢åø AÓ  " " " " |@NrXEIY[\[ ›“†uÜ[°©Žªªªž„S‰©²·žžž·²€…zWŒÌœŸÂàÃàŸº^ˆTV™«ÅÇÄÆææãáÃÀ³€ŒÖZ£±ŸÄæçêêëçäűž‹nŠ·ÂÉçîðñòíçÆŒ·Ž”ÔP’ªžàæéïóôôñëãÁžŽ¢ÖU•ªžÃæêïóõ÷óìåÄž­—ÛQ“ªžàâéðóõôñëæàž¥‰ÕM‡ŠÞßÈËìíïïîçá߯¥ÜÓ˜¬¹ÃâËèééËÊඬÝ|s‚¥³¿ÃÈââÊÈ๚Ž}JR„]®¹»ÂàÂ߶¡‘~v{ƒš§··žµ¯Ÿ~×My„œ€š–ŠÙtkpڀ†‰†ØxOmqwol }Oid‰Ú O{cg»Ú£ -X Z„š9:$9:$6‚„š9:$9:$ š9:$9:$ ±6“{^o‚$•‚±6“9?|±6“{9?%¶6“{?ß{ wO€q @P@Tu6Ü=7%&w@*A@ A |"  AP€CP €BPsk8ÝyT°6“«¿X Qš9:9:$b€?Q°6“9?ÅÿÿÿÿX p6“tQ žp9?,dÈ°p9?ÅÿÿÿÿX 19D¬9?Åœÿÿÿ®pX X * # e Qw *sô€?¬«€¿6“X  PV®333>«ÍÌÌ=s«€TDsÕs#À?`êG# A€?ww°6“«33³¿^b? PAiPAhJEPP™àD#*#SSXSc HPNAm¢ðà&$w * mNAMA GPJJPJIPLAxš‚á!w * xLA KPJLPCi ®â\$š9:$9:$ a+a EZR„š9:$9:$š9:$9:$6•C%a+C MPJ€NPJA{º7ã&$w * {JAIA OPRPQPUPd8À¯ã( €TPWP`È€ä@‚w*1„r*-t% €VPHAy Ð/åj HAåEFFA5QØ× Õ«ÍÌL?>EÕ«?>F SP~@KAL.Þ­$)KA)OA)QA)RA)SA)TA)UA YP[PXPz Ø æŽ"rc*cm Wwc*ccmlcmŒrc*cm ]PEAoî$ègL cwL *4rL ŸEAL ¥IL—Iè*L L  * \PL €_PaP^PI EÇé×r:rI *çptried to add none inventory to 9VE ƒwE *arE I (rE E E EI aI *rI Ów * EI ' bPE €dPfPcPD ~ ›ìÞrD *,rD cc*A ÏwA *†rA D A D D *Ïžš9:9:$¥Lž—LèÏA A 3D a* gPiPjPghPnG:învr59r* \ ]]a!Aq!W5*H n Œr5*55̂w*š9:9:$@5*H n w * G @ÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿúúúÿüüüÿÿ ÿÿÿÿÿòòòÿSSSÿêêêÿçççÿæææÿžžžÿçççÿéééÿæææÿêêêÿ“““ÿçççÿåååÿýýýÿüüüÿdddÿÿùùùÿÿ$$$ÿÿáááÿõõõÿìììÿðððÿPPPÿãããÿ...ÿßßßÿŠŠŠÿäääÿéééÿÿåååÿãããÿÿåååÿîîîÿìììÿçççÿUUUÿãããÿäääÿæææÿàààÿåååÿæææÿåååÿçççÿãããÿåååÿâââÿãããÿ¬¬¬ÿìììÿåååÿØØØÿäääÿåååÿæææÿÉÉÉÿäääÿàààÿ˜˜˜ÿQQQÿãããÿâââÿÞÞÞÿáááÿáááÿâââÿÞÞÞÿÙÙÙÿßßßÿáááÿÜÜÜÿäääÿÙÙÙÿâââÿàààÿÞÞÞÿÙÙÙÿáááÿyyyÿáááÿÜÜÜÿÚÚÚÿœœœÿ–––ÿÛÛÛÿLLLÿÛÛÛÿÞÞÞÿâââÿàààÿÅÅÅÿÞÞÞÿÛÛÛÿÙÙÙÿpppÿŸŸŸÿõõõÿ†††ÿèèèÿÿ€€€ÿØØØÿÒÒÒÿÛÛÛÿÙÙÙÿÚÚÚÿÝÝÝÿÕÕÕÿÎÎÎÿ×××ÿÚÚÚÿÛÛÛÿÄÄÄÿÐÐÐÿÒÒÒÿŒŒŒÿáááÿÚÚÚÿÙÙÙÿ×××ÿÜÜÜÿÞÞÞÿÕÕÕÿ×××ÿÒÒÒÿÍÍÍÿÈÈÈÿÐÐÐÿŸŸŸÿ@@@ÿÒÒÒÿžžžÿÕÕÕÿÔÔÔÿÏÏÏÿÅÅÅÿÌÌÌÿÊÊÊÿUUUÿ}}}ÿ×××ÿÚÚÚÿ€€€ÿ×××ÿÓÓÓÿÕÕÕÿÌÌÌÿÿÈÈÈÿÃÃÃÿÄÄÄÿ;;;ÿcccÿÜÜÜÿÉÉÉÿÍÍÍÿPPPÿÓÓÓÿ¿¿¿ÿÊÊÊÿÁÁÁÿÇÇÇÿœœœÿÃÃÃÿŽŽŽÿŠŠŠÿQQQÿNNNÿãããÿÝÝÝÿSSSÿÃÃÃÿÐÐÐÿŽŽŽÿ666ÿÂÂÂÿÉÉÉÿÃÃÃÿ···ÿŸŸŸÿŒŒŒÿ°°°ÿ­­­ÿFFFÿÿªªªÿ^^^ÿÀÀÀÿÿžžžÿ°°°ÿ   ÿªªªÿ¥¥¥ÿžžžÿAAAÿBBBÿ===ÿQQQÿ,,,ÿ­­­ÿšššÿœœœÿ¡¡¡ÿ™™™ÿÿˆˆˆÿ………ÿ“““ÿ@@@ÿAAAÿ>>>ÿ)))ÿÿ<<<ÿÿÿÿÿÿ;;;ÿ ÿ ÿÿÿ777ÿÿÿÿÿÿÿlPoP^X%ñ!O8 pP€€nP[H ]}ñG*w[*[@[_ MBr* ]w*c [ |^ p3âr[Éa!A@ I!G w*b«ÍÌÌ=e I!Gt M@ µmP$*'''ÿ*üüüÿ"!åÊ¢åø AÓ  " " " " Ÿ@Ðþþþ{þþ'kkk{ð'Ðþþ.HHHHHHH.þ%ò™HHH HH™þkH HHkÿþþHH HHþþH HH Hþþ H( HH H þþ'H( HHH HÐþþþH( HH H þþþH(( (kkk (HþH((((kk H H((((£k H'H( "£ H  HH kk .kH ££ù ££ù£"££™"" þþþ£yk(kùùþ£ùù ££þùkH(Hk£þ£kH( ùù£ "HH£ùkH(Hkù£HH" £þþþþ' kO"' % kPhyqPNBTõXN-Y 'T‚„„r * -D-Mw.N*'( €€UuPOQhg U|Pu@O͏Uu@h@G  v@Q]’Œö[–9:9:$ Hw.Q*.Q D- Y* T-  uEr@}}Â)r@)p@)n@)c@)_@ 8yP\žøKßÕ®9?,d>ü6“®HC2o‚$-P' _ PwG t8 Gh'E‚‚-d@ wQ*Q-df@˜-e@a Q  a+9PÓ# ACÍÌL=y$z$`-V%'?iQrj9D®¬«Ÿ®«6Ÿi9?,9?, o 9?,ŽÛI@9?,L‚š9:Qn9:$(„wQY*wQc3*w6¿Q 0A!`wQ  a wa+9PâÓoC¬«o œ¬««?9?jÛI@9?,Ž«?9?`k`jQ` R%âo`S%o `T%9?j`-y+'y$z$`-V%(g AQs@H$)s@)t@)w@)z@){@)|@)}@ q@Sm8Ï5ý­r *X 6-KX-@ ( TaUk@× Õ®®2 A9?,#€?× Õ2#€?'­rT*O®2 AÏO¯¯6“U6“ 9?,Bô€?¬« ASLc k l@XXö®«®¯X6“ c¯9?&B«SB«¿2O—-G(Xô®«X¯9?&B«SBO ]S BQkE/L Í©wQ*kQrj9D¬«Ÿ®«6Ÿk9?,9?, o 9?,ŽÛI@`.vs K vx`rw`*C¬«o œ¬««?9?jÛI@9?,Ž«?9?`k`-U%(`-x+-a@`jQ` R%âo`S%o `T%9?j`w+|3u!OG Šçp9Wº.InitShadow: Failed to allocate textureËçp9Wº.InitShadow: No actor s€CQm@Eß;ª )m@)o@ EQ@QD/<.AsH=ws*=s`1f-X'( HQz+Ù\© €XIQ@'°iaw`*`j*L`-U%s L``*x*Q*X ~PGQJ÷›×ÕX#€?@ €‰WQDQFÖþš fh@ ]0 €€yVeY¬ @„-aš9:q9:$s9=ù,9:sRš9:9:$ ±w * ±‚w. *r. # . Oɚ9:9:$-@ 'û‚wg*rg*ga c  LQKp  wY* KY MQZvt  NQYw”  €`da@dzP]@‚HÃ)]@)\@)O@)K@ AJ@UQv8bwki‚‚v-U '„þf!þvNf‚-vwvC*B v  UVQZ@O[{UZ@G ^QG7ia_-rh'a(((j&S@a N@a+9PÓP@CÍÌÌ=ga'((-r(a A( bQX@S8Ð?š$)X@)Y@)[@)^@)`@)g@)i@ €WZQP8žFwg*g9* €~YQ\QW¿Õ  €w[QW@XÆ8d#›eÿÿÿÿu~eREF9fuAfRu~%W@6¿u j_Q3(g h' X`Q@$0X  fS@ Þfu!O  €}QT@|Œ¿¥ )T@)V@ $€FU@`J  ÚeŽ`z9?%(1³`z9?,d'a„–7°ÿÿÿ‚–7Øÿÿÿ °Ãš™?'( $*0 "Ì#Ÿª¢åø AZRQ  "" " " j# @€ §?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§AL§AL§AL§AL§AL§ALšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAM§AL§AL§AL§AL§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§AL§AL§AL§ALšAMšAMšAMšAMšAMšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšAMšAMšAMšAM§AL§AL§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§AL§AL§AL§ALšAMšAMšAMšBNšBNšBNšBNšBNšBNšBNšBN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BNšBNšBNšBNšBNšBNšBNšBNšAMšAMšAM§AL§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§AL§AL§ALšAMšAMšAMšBNšBNšBNšBNšBN©BN©BN©BN©BN©BN©BN©CO©CO©COªDOªDOªDOªDOªDOªDOªDOªDOªDO©DO©DO©DO©DO©DO©DO©DO©DOªDOªDOªDOªDOªDOªDOªDOªDO©CO©CO©CO©BN©BN©BN©BN©BN©BNšBNšBNšBNšBNšBNšAMšAMšAM§AL§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@L§AL§AL§ALšAMšAMšBNšBNšBNšBNšBN©BN©BN©BN©BN©CO©COªDOªDO©DO©DO©DOªDOªDOªDOªDPªDP ªDPªDPªDQ ªDQªDQªDQ ªDQ ªDQ ªDQ ªDQ ªDQ ªDQªDQªDQ ªDQ ªDQ ªDQ ªDQ ªDQ ªDPªDPªDPªDPªDPªDOªDO©DO©DO©DOªDOªDO©CO©CO©BN©BN©BN©BNšBNšBNšBNšBNšBNšAMšAM§AL§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@L§AL§AL§ALšAMšAMšBNšBNšBNšBN©BN©BN©BN©BN©CO©COªDO©DO©DOªDOªDOªDPªDPªDQªDQ ªDQªDQªFRªFR ªFR ªFR ªFR ªFR «FR «FR «FR «FR «FR «FR «FR «FR«FR «FR «FR «FR «FR «FR «FR «FR «FR «FR ªFR ªFR ªFR ªFR ªFR ªFR ªDQ ªDQ ªDQªDPªDPªDOªDO©DO©DOªDO©CO©CO©BN©BN©BN©BNšBNšBNšBNšBNšAMšAM§AL§AL§ALš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@L§AL§ALšAMšAMšBNšBNšBNšBN©BN©BN©BN©CO©COªDO©DO©DOªDOªDPªDPªDQªDQªDQ ªFR ªFR ªFR «FR ªFR ªFR ªGS ªGS «GS «GS «HS«HS «HS «HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS «GS «GS ªGS ªGS ªFR ªFR «FR ªFR ªFRªFR ªDQªDQªDQªDPªDOªDO©DOªDOªDO©CO©CO©BN©BN©BNšBNšBNšBNšAMšAM§AL§AL§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@L§AL§ALšAMšAMšBNšBNšBN©BN©BN©BN©CO©COªDO©DOªDOªDPªDPªDQªDQªFRªFRªFR«FR ªFR ªGS «GS «GS «HS «HS«HS¬IU¬IU¬IU¬IU¬IU¬IU¬JV¬JV¬JV¬JV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬JV¬JV¬JV¬IU¬IU¬IU¬IU¬IU ¬IU ¬IU «HS «HS «GS ªGS ªGS ªFR «FRªFRªFRªDQªDQ ªDQªDPªDOªDO©DOªDO©CO©BN©BN©BNšBNšBNšBNšAMšAM§AL§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@L§AL§ALšAMšBNšBNšBN©BN©BN©BN©COªDO©DOªDOªDPªDQªDQªDQªFRªFR «FR ªFR ªGS «GS «HS «HS ¬IU ¬IU ¬IU¬IU¬IU¬JV¬KV¬KV¬LW¬LW­LW­LW­LW­LX­LX®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY­LX­LX­LX­LW­LW­LW¬LW¬KV¬KV¬JV¬IU¬IU¬IU¬IU «HS«HS «HS «GS ªGS ªFR «FR ªFRªFRªDQªDQªDPªDO©DOªDOªDO©CO©BN©BNšBNšBNšBNšAMšAM§AL§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšAMšBNšBN©BN©BN©BN©COªDO©DOªDOªDPªDQªDQ ªFR«FR ªFR ªGS «GS «HS «HS¬IU¬IU¬IU¬IU¬JV¬KV¬KV¬LW­LW­LX­LX®NY®NY­NY®NY®OZ®OZ®OZ®OZ®PZ®PZ®PZ®Q[®Q[®Q[®Q[¯Q\¯Q\¯Q\¯Q\¯Q\®Q[®Q[®Q[®Q[®Q[®PZ®PZ®OZ®OZ®OZ®OZ®NY®NY­NY®NY®NY­LX­LW¬LW¬KV¬KV¬JV¬IU¬IU¬IU ¬IU «HS«GS ªGS ªFR «FRªFR ªFRªDQªDQªDPªDO©DOªDO©CO©BN©BNšBNšBNšBNšAM§AL§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšBNšBNšBN©BN©BN©COªDO©DOªDOªDPªDQªFRªFR«FR ªGS «GS «HS «HS ¬IU¬IU¬IU¬JV¬KV¬LW­LW­LW­LX®NY­NY®NY®OZ®OZ®PZ®Q[¯Q\¯Q\®R]¯R]¯R]¯S]¯S]°T^°T^°T^°T^°T^"°T^"°T^ °T^ °T^ °T^ °T^"°T^ °T^"°T^!°T^!°T^ °T^ °T^°T^°T^¯S]¯R]¯R]®R]¯Q\¯Q\®Q[®PZ®OZ®OZ®NY­NY®NY­LX­LW­LW¬KV¬KV¬JV ¬IU¬IU ¬IU «HS «HS ªGS ªFR «FRªFRªDQªDQªDPªDO©DOªDO©CO©BN©BNšBNšBNšAMšAM§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšBNšBNšBN©BN©BN©CO©DOªDOªDPªDQªFRªFR ªFR ªGS «HS «HS ¬IU ¬IU¬JV¬KV¬KV­LW­LW®NY®NY­NY®OZ®OZ®PZ®Q[¯Q\®R]¯R]¯S]°T^°T^±T_±U`±V`±V`°V`"±Wa"±Wa"±Wa#±Wa"²Xc%²Xc'²Yc(²Yc(²Yc'²Yc)²Yc&²Yc&²Yc)²Yc&²Yc&²Yc&²Yc$²Yc&²Xc%²Xc#±Wa&±Wa#±Wa ±Wa!±V`±V`"±U`±T_°T^°T^¯S]¯R]®R]¯Q\®Q[®OZ®OZ®NY­NY®NY­LX­LW¬LW¬KV¬JV¬IU¬IU ¬IU «HS «GS ªFR «FRªFRªDQªDQªDP©DOªDO©CO©BN©BNšBNšBNšAMšAM§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšBNšBN©BN©BN©COªDO©DOªDOªDQªDQªFRªFRªGS «HS «HS ¬IU ¬IU¬JV ¬KV­LW­LX®NY­NY®OZ®OZ®PZ¯Q\¯Q\¯R]¯R]°T^°T^±T_±V`±V`±Wa!±Wa!²Xc#²Yc$³Yc"²Zd(³Ze$²[e'²\f)³\f,³\f,³\f.³\f-Ž]g*Ž]g1Ž]g*Ž]g.Ž]g/Ž]g2Ž]g0Ž]g0Ž]g.Ž]g1Ž]g2Ž]g+Ž]g+Ž]g)³\f+³\f0³\f.²\f-²[e&³Ze&²Ze&³Yc ²Yc%²Xc!±Wa!±Wa ±V` ±V`±T_°T^¯S]¯R]®R]¯Q\®Q[®OZ®OZ®NY®NY­LX­LW¬LW¬KV¬JV¬IU ¬IU «HS «GS ªFR«FR ªFRªDQªDPªDO©DO©CO©BN©BNšBNšBNšBNšAM§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšBNšBN©BN©BN©COªDOªDOªDPªDQªFR«FRªFR«GS «HS ¬IU¬IU ¬KV¬LW­LW®NY­NY®OZ®OZ®Q[¯Q\¯R]¯S]°T^°T^±U`±V`±Wa±Wa#²Xc$²Yc$²Zd"³Ze'²\f%³\f&³\f-Ž]g,µ^g*Ž_i+µ_i*µ`j3µaj1µaj/µaj2¶ck1¶ck4¶ck;¶cl=¶cl9·cl6·cl>·cl?·cl5·cl9·cl?·cl:·cl6¶cl4¶cl=¶ck4¶ck9¶ck0µaj8µaj/µaj2µ_i1µ_i/µ_i,Ž]g*Ž]g'³\f'²\f(³Ze#²Zd!²Yc!²Xc ±Wa°V`±V`±T_°T^¯S]¯R]®R]¯Q\®PZ®OZ®NY®NY­LX­LW¬KV¬JV¬IU¬IU «HS ªGS ªFRªFRªDQªDQªDO©DOªDO©BN©BNšBNšBNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšBNšBN©BN©BN©COªDOªDOªDPªDQªFR«FR ªGS«HS ¬IU ¬IU ¬JV¬LW­LW®NY­NY®OZ®PZ¯Q\¯R]¯S]°T^±U`±V` ±Wa!±Wa!²Yc"³Yc%³Ze$²\f#³\f'Ž]g%µ^g,Ž_i)µ_i0µaj,µaj-¶ck0·cl6¶dm<·em6·fn5·fn=žgo?žgp:žhp>¹hp<¹iq@¹iqF¹iqIºiqKºiqDºiqFºiqH¹iqA¹iqHºiqIºiqBºiqDºiqG¹iqH¹iq?¹iqG¹hpDžhp?žgp>žgo8·fn?·fn8¶dm9·cl/¶ck/µaj.µaj/µ_i+Ž_i*Ž]g'³\f%³\f%²[e$²Ze"²Yc ²Xc!±Wa°V`±U`°T^°T^¯R]¯Q\®Q[®OZ®NY®NY­LX­LW¬KV ¬IU¬IU«HS «GS ªFR ªFRªFRªDQªDP©DOªDO©CO©BNšBNšBNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§ALšAMšBNšBN©BN©BN©COªDOªDOªDPªDQªFRªFR«GS«HS ¬IU ¬IU¬KV­LW­LX­NY®OZ®PZ¯Q\¯R]°T^±T_±V`±Wa²Xc³Yc²Ze%²\f%³\f(Ž]g&µ_i.µ_i)µaj)¶ck3¶cl/·dm:·fn1·fn8žgo;žhp@¹iq:¹iqBºkrBºkrBºltJºltC»nuM»nuIŒnuQŒovMŒovVŒovSŒovSŒovPŒpwXŒpwUŒpwZŒpwXŒpw[ŒpwRŒpwXŒpwSŒovSŒovWŒovRŒovLŒovKŒnuL»nuF»nuFºltKºlsGºkrG¹iqE¹iq;¹hp@žgo<·fn9·em7·dm5¶ck2µaj4µ`j)Ž_i)µ^g*³\f%³\f'³Ze!²Zd ²Yc"±Wa °V`±U`°T^¯S]®R]®Q[®OZ®NY®NY­LW¬LW¬JV¬IU¬IU «HS ªGS«FRªFRªDQªDP©DOªDO©CO©BNšBNšBNšAMšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§ALšAMšBNšBN©BN©BN©COªDOªDOªDPªDQªFRªFR «GS«HS ¬IU ¬JV ¬KV ­LW®NY®NY®OZ¯Q\¯R]°T^±T_±V`±Wa²Yc!²Ze²\f"³\f&µ^g(µ_i'µaj(¶ck0·cl.·em1·fn:žgo<¹hp<¹iqA¹jr=ºlsBºltA»nuJŒnuOŒovIœqxOœqxNœryNŸsyRŸtzYŸt{XŸt{[¿w}S¿w}V¿w~Z¿w~`ÀxdÀx_Ày`Àz€hÀz€eÀz€`Àz€`Àz€_Àz€_ÀydÀxcÀxc¿w~a¿w~a¿w}WŸv}VŸt{[ŸtzSŸtzUœryQŸryNœqxRŒovHŒnuG»nuCºltJºkrF¹iq<¹iq:žhp:·fn:·fn0·dm7¶ck3µaj/µ_i+µ_i&Ž]g&³\f&³Ze#³Yc#²Xc±Wa±V`°T^¯S]®R]®Q[®OZ­NY­LX­LW¬KV¬IU ¬IU «HS ªGS «FRªFRªDQªDP©DOªDO©BN©BNšBNšBNšAM§AL§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§AL§ALšAMšBNšBN©BN©COªDOªDOªDPªDQªFRªFR«GS «HS ¬IU ¬JV ¬LW ­LW®NY®OZ®Q[®R]¯S]±T_±V`±Wa²Yc³Ze!³\f#Ž]g#µ_i(µaj,¶ck2·dm+·fn1žgo0¹hp5ºiq=ºkr?ºltA»nuHŒovBŒpwKœqxGœryHŸtzKŸt{O¿v|RÀxZÀyUÁz€_Áz€ZÂ}‚\Â}ƒgÂ}ƒdÂ}ƒbÃ~„lÀ…mÀ…gĀ…jĀ…jÁ†lÁ†lÁ†tÁ†nÁ†nÁ†qÁ†sÁ†oÁ†uÁ†mĀ…kĀ…oÀ…hÀ…kÃ~„jÂ}ƒaÂ~„gÂ}‚_Á{ZÁz€XÁz€WÀw~Z¿v|\Ÿt{VŸtzNœrySœqxNŒovJ»nuFºlt>ºlsA¹jr>¹iq?žgp:·fn7·em.¶cl*µaj.µ_i(µ_i$³\f%²[e!²Zd#²Xc±Wa±U`°T^¯R]¯Q\®OZ®NY®NY­LW¬KV ¬IU ¬IU «HS ªGS «FRªFRªDQªDO©DO©CO©BN©BNšBNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BN©BNªDO©DOªDPªDQªFRªFR«GS «HS ¬IU ¬JV¬LW­LX­NY®OZ®Q[¯R]°T^±U`±Wa²Yc ²Ze³\f!Ž]g%µ_i$µaj(·cl+·fn.žgo4¹iq8¹jr=ºlsB»nuAŒovBŒpwJŸryLŸsyOŸt{J¿v|TÀw~[Áz€\Á{XÂ|aÂ~„`Ä`Ā…lā†kăˆhшoŅ‰mƅ‰oƆ‹mdž‹wȇŒsLjŒyLjŒzȉȊŽȊŽ€ÈŠŽzȊŽ‚È‹È‹yȋ€È‹ƒÈŠŽzȊŽzȊŽ|ȊŽ{ȉ|ȈŒ{LjŒvLJŒuƆ‹qƅ‰rŅ‰rшnшnā†lÀ…dÀ…eÂ~„ZÂ|^Áz€aÁz€XÀw~UŸu|XŸtzNœryGœqxLŒovH»nuIºlt=ºkr:ºiq<žhp9·fn3·dm4¶ck)µ`j&µ_i)³\f"²[e#³Yc±Wa±V`°T^¯R]¯Q\®PZ®NY®NY­LW¬KV¬IU¬IU «HS ªGS «FRªFRªDQªDOªDO©CO©BNšBNšBNšAM§AL§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§ALšAMšBNšBN©BN©CO©DOªDOªDQªFR«FRªGS «HS ¬IU ¬JV ¬LW­LX­NY®OZ¯Q\¯R]°T^±V`±Wa³Yc²[e!Ž]g$Ž_i)µaj+·cl1·fn.žgp9ºiq4ºkr7»nuDŒovHœqxKœryIŸt{M¿v|PÀw~OÁyTÂ|[Â}ƒdÀ…dÀ…aăˆcшoŅ‰oƆ‹mLjŒnȉwȉtȊuʌuʎ’yʏ’yˏ’y̑”~͐”͒–†Í’–„Í“—„Ï”—ˆÏ•˜„Ï•˜ˆÏ•˜ŒÏ•˜’Ï•˜’Ï•˜ŠÏ•˜ŠÏ•˜ŠÏ•˜ŠÏ•˜Î”—ŒÍ“—‰Í’–„Í’–Í”ˆË“}ˏ’~ʎ’ʍ‘~ɌsȊqȉqLjŒuƆ‹kŅ‰kшcā‡eĀ…eÃ}ƒdÂ}ƒdÁ{^ÁyXÀw~WŸu|TŸtzNœqxHŒovJ»nu>ºltC¹jr;¹hp:·fn1¶dm*¶ck(µ`j%µ^g&³\f ²Ze²Xc°V`±T_¯S]¯Q\®PZ®NY®NY­LW¬KV¬IU ¬IU «GS ªFR ªFRªDQªDP©DOªDO©BN©BNšBNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§AL§ALšBNšBN©BN©BNªDOªDOªDPªDQ«FRªGS«HS ¬IU ¬JV ¬LW ­LX­NY®OZ¯Q\¯R]°T^±V`±Wa²Zd³\f!µ^g%µ`j%¶ck*·em+žgo5¹iq6ºls=»nu?ŒovCŸryMŸtzL¿v|TÀw~XÁz€TÂ}ƒVÄaÀ…_ł‡`Ņ‰cƆ‹gLjŒuȉtɊzɌwʍ‘{ː“~̑•Î“–„Í”—Ř„Ð—š‰Ð˜›‹Ñ˜›‡Ñ™œ‰Ò›žŒÒœž‘ҝŸ‘ҝŸ”Óž¡”ÓŸ¢’ÓŸ¢šÓ £“Ó £Ó £™Ó¡€œÓ¡€˜Ó £œÓ £Ó £šÓŸ¢›ÓŸ¢–Óž¡“ҝŸ‘ҝŸ’Ò›žŽÒšŒÑ™œŠÑ˜›ˆÐ—š†Î•˜Γ–‚Î’•Ì‘•{ː“yʍ‘|ɌoɊsȈŒodž‹mƅ‰jшlā‡jÄ„ZÂ}ƒ^Â{€XÁy[Àw~VŸt{OœryPœqxIŒnuEºltA¹jr:¹hp0·fn-·cl*µaj,Ž_i(³\f!³Ze#²Yc±Wa±T_¯S]¯Q\®PZ®NY®NY­LW¬KV ¬IU «HS «GS ªFRªFRªDQªDO©DO©CO©BNšBNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BN©CO©DOªDPªDQªFRªFR«GS ¬IU ¬IU ¬KV­LW®NY®OZ¯Q\¯R]°T^±V`²Xc²Zd³\fµ_i#µaj&·cl(·fn0¹hp6ºkr:»nu=ŒovAŸryBŸt{H¿v}OÁyVÂ{YÃ~ƒaĀ…bł‡kƅ‰ndž‹kȈŒlɋsʌwˏ’€Ì‘•x͒•}Γ–~ϕ™…ј›…Ò™œŠÒœž‰Ò ‰ÔŸ¢‰Ô ¢‹Õ¡£ŽÕ£¥‘Ö€ŠŽ×€§–ק©•Øšª”Ø©«œØ©«™Ùª¬œÙª¬žÚ«­œÚ¬®§Ú¬®ªÚ¬®šÚ¬®©Ú¬®ŠÚ¬®¥Ú¬®¥Ú¬®©Ú«­šÙª¬›Ù©«˜Ø©«™Ø©«—ا©•×Šš–Ö€§Ö£¥Õ¢€’Õ ¢Óž¡‡ÒœŸ‰Ò›‹Ò™œ„ј›„Ï•™…Γ–z͒•̐”~ʍ‘wʌrȉŽtȈŒrdž‹mшgÇdÄ„^Â}ƒ^Áz€VÀw~S¿v|IŸsyHœqxBŒnu?ºlt?ºiq3žgo6·em0¶ck(µ_i%Ž]g!²[e ²Yc±Wa±T_¯S]¯Q\®OZ®NY­LX¬LW¬JV ¬IU «HS ªGS«FRªFRªDPªDOªDO©BN©BNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BN©CO©DOªDPªDQ«FRªGS«HS ¬IU ¬KV ­LW®NY®OZ®Q[¯R]°T^±V`²Xc²Ze³\f!µ_i'µaj%·dm)·fn1¹iq2ºlt6Œnu9œqxCŸtzH¿v}HÁyRÂ{SÃ~ƒ`ÇbŅ‰ldž‹mȉlɋtʌrˏ“z͒•x͓–‚Ï•˜†Ò˜›‚Ò›‡ÓœŸ†ÓŸ¡Õ¡£’Õ¡£“×¥§”ØŠš“Øšª”Ùª¬“Ú¬­•Ú­®™Ü®¯–ܯ±œÝ°²–ݲŽœÞµ¶Þµ¶€Þ¶·¡Þ·žŠßž¹©àž¹Šà¹ºµà¹ºŽàº»µàº»»àº»Žàº»žà¹º²àž¹³àž¹ªßž¹£Þ·žžÞµ¶¢Þµ¶ŸÞŽµ¢Ý±³œÜ°²Ü®°—Û­®–Ú¬­•Ú«¬“Øšª‘׊šÖ¥§Õ¡£Õ ¢‹Óž ‹Ò›ˆÒšœˆÐ—š†Ï”˜…Í“–̐”wˎ‘zʌ{ȉŽmȈŒpƅ‰gł‡bÀ…[Ã}ƒ^Â{€\Àw~NŸu|OœryBŒovC»nu@ºkr4žhp5·fn+¶ck(µ_i'Ž]g"²[e²Yc±Wa±T_¯S]¯Q\®OZ­NY­LX¬KV¬IU¬IU «HS ªFRªFRªDQªDOªDO©CO©BNšBNšBN§AL§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BNªDOªDOªDQªFRªFR«HS ¬IU ¬JV ¬LW­LX®NY®PZ®R]°T^±V`±Wa²Zd ³\f!µ_i%µaj)¶dm'žgo.¹iq-ºlt8Œov@œryEŸu|LÀw~GÂ{€ZÃ~ƒVĀ†Yш`LjŒnȉŽpʋrˏ“v͒•z͓–Ж™}љ›Ò›„ÔœŸÕ ¢Õ¢€Ö€ŠØ§©”Ú«¬“Û¬­–Û­¯™Ü°²—Þ²³šÞµ¶žß¶·Ÿà·žœà¹ºâŒŒŸâŒŒ£ãŸ¿¡äŸ¿§ä¿À§åÂìåÂíåÃIJåÄŲæÅƱæÅÆŒçÆÇÈçÇÈÉçÇÈÐçÇÈÊçÇÈÆçÆÇÏæÅÆÃæÅÆžåÄůåÃÄ®åÂéåÁ¬ã¿ÀŠãœŸŠâŒœžâŒŒà¹ºžà·žŸà¶·˜ÞŽµ›Þ±²›Û¯±˜Û¬®™Ú¬­”Ú©ª•Ø§©Ö€ŠÕ¡£ÔŸ¡ŽÓœŸŠÒšœ…Ñ—š‚Δ˜‡Í’•̏“xʍ‘pɋvȈŒmdž‹lł‡hÀ…bÂ|‚VÁyW¿v}IŸtzLœqx?»nu@ºkr5¹hp0·fn.¶ck(µ_i&Ž]g!³Ze"²Yc°V`°T^¯R]¯Q\®OZ®NY­LW¬KV ¬IU «HS ªGS ªFRªDQªDP©DO©CO©BNšBNšBN§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBNšBN©BNªDOªDOªDQªFRªGS«HS ¬IU ¬KV ­LW­NY®OZ¯Q\¯S]±U`±Wa²Zd³\f"µ_i#µaj&¶dm(žgo-¹iq1ºlt5ŒovAŸsyI¿v|MÁyLÂ|‚TÀ…`шbdž‹lȉŽpʋl̏“w͒•Î•˜†Ñ–™€Òšœ‘ÔœŸ‹ÕŸ¡Ö£¥•×¥§•Ù©ª›Û«¬•Û­¯šÝ°±–Þ²³¢àµ¶¡à·ž›áº»žâŒœ ãŸ¿Ÿä¿ÀŠåÀÁ§æÃĬæÅÆ®æÇÇ·æÇÇŒèÈÈ¿èÊÊÈéËËÊéÌÌÍéÍÍÎéÎÎÔêÏÏÔêÑÑØêÑÑãëÒÒðëÓÓöìÓÓðìÓÓøëÓÓòëÒÒñêÑÑéêÑÑÞêÏÏ×éÎÎÑéÎÎÕéËËÏèËËÈèÉÉÃçÇÇœæÇÇ·æÄÅ°æÃħæÁŠã¿À äœŸ áŒœ áž¹™à·žšßŽµ™Ý²³›Û®°•Û­¯˜Úª«•ØŠšŽ×€Š”Õ¡£•ÔŸ¡•ÓœŸÑ™›ŠÏ–™Í“–Ì“uʎ‘zɋmȈŒfƅ‰ał‡[Ã~ƒ[Â{€WÀw~RŸt{MœqxGŒnu:ºkr6¹hp0·fn0¶ck,µ_i(³\f!³Ze²Xc±V`°T^¯R]®PZ®NY­LX¬LW¬IU ¬IU «GS «FRªFRªDP©DO©CO©BNšBNšBN§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšBNšBN©BNªDOªDOªDQªFRªGS «HS ¬IU ¬KV­LX®OZ®Q[¯R]±T_±Wa²Yc²\fµ^g µaj(·dm+žgo+¹iq.»nu4Œpw@ŸsyD¿v}HÁz€MÃ|‚SĀ†UƄˆ^ȈŒfɋrˎ‘u͑”sŘ}јš…Òš‰Ôž ’Õ¡£—×€Š•Ù§©ŸÚª«žÛ­¯šÜ°±©ß²³©à¶·¡ážž¢ãŒœ£ãœŸ¢åÀÁ€æÃÄ©æÅŲçÇÇžèÉÉ»éÊÊÃêËËËêÍÍÓêÏÏÒëÏÏ×ìÑÒÖíÒÓØíÒÓÚíÓÔÛîÔÕÚîÕÖáîÕÖâîÚÚàïÛÛáïÜÜëðÝÝùðÞÞûñÞÞÿñÞÞÿðÞÞýðÝÝûïÜÜïïÛÛçîÚÚãîÖ×ÛîÕÖßíÔÕÛíÒÓÜìÒÓÕìÐÑÚìÏÐÔêÏÏÔêÍÍÑêËËÉéÊÊÀçÈÈŒæÆƳæÄÄ©æÁ¢åÀÁ ãœŸŸá»Œžážžœßµ¶¢Ý²³œÜ¯°£Û¬®ŸÚ©ª™×¥§šÖ£¥—ÕŸ¡“ÔœŸ‹Ñ™›„Ж™†Í“–x̐“sʌtȉŽiLJ‹kш^À…WÂ|‚WÁyQŸt{IŸry?ŒnuCºkr5¹hp.·fn0¶ck%µ_i%³\f!²Zd±Wa±U`¯S]¯Q\®OZ®NY­LW¬JV ¬IU «HS ªFRªFRªDP©DO©CO©BNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBN©BNªDOªDOªDQªFRªGS ¬IU ¬IU ¬LW®NY®OZ¯Q\°T^±V`²Xc³ZeŽ]g µ`j'·cl(·fn+ºiq.ºlt5Œpw8Ÿtz@Àw~GÁz€MÃ~ƒSł‡Zƅ‰_ȉŽjʌj̏“r͓–}і™‚Ò™œ‡Ôž ‰Õ ¢‹×€Š“Ùš© Û«­šÜ¯°©Þ±²«àµ¶²á¹º°ãŒœ¶å¿À°åÁ¬æÅůçÇDzéÉÉÀêËËÇêÎÎÎëÏÐÖìÐÑØíÑÒÕíÓÔØíÔÕÚïÖÖ×ï××Üï××ÝïØØÚïØØÞïÙÙßïÚÚßðÚÚãðÜÜäñÞÞçòßßäòááéóããóôääþôååÿôææÿôææÿôååÿóääÿóããøòááìòßßèñÞÞãðÜÜâïÚÚâïÙÙÞïØØßï××Ûï××ÝïÖÖÚîÕÕÚíÓÔØíÓÔÔìÐÑÕëÏÐÖëÎÏÒêÌÌÊéÉÉÄèÈȹæÆƱæÃêåÀÁ€ãœŸšâ»Œ­ážž¬ß³Ž¬Ü°±ªÛ­¯žÛª«žØŠš×£¥—Õž ÔœŸ‡Ñ˜š‚Ï•˜{͑”|ˏ“pɋpȈŒeш`Ā…XÂ|‚PÁyJŸu|Hœqx?»nu9ºkr8žhp6·em+µaj%µ_i%³\f²Yc±Wa°T^¯R]®PZ®NY­LW¬KV ¬IU «HS ªFR ªFRªDP©DO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©CO©DOªDQªFRªGS¬IU ¬JV ­LW®NY®OZ¯R]°T^±Wa³Yc³\f µ_i&¶ck$·fn(¹iq5ºlt1ŒovBŸsy>¿v}MÂ{€NÃ~ƒ[ł‡Xdž‹aȉŽdʌs̑”xΔ—zјšӛžƒÕŸ¡Ö£¥Ù§š•Úª¬ Ü¯°¡Ý²³£à¶¶±â¹º®äœŸ°åÁÁ¶æÅźèÇÇÂéÉÉÎêÍÍÑëÎÏÓìÐÑ×íÓÔØîÕÕÜïÖÖÙï××Üï××ÝïÙÙÞïÚÚÜïÚÚÝðÛÛÞñÛÛÝñÛÛàñÛÛßñÛÛáñÜÜæñÜÜçñÜÜéòÞÞêòßßëóááêôääðõææøõèèÿöêêÿöêêÿöêêÿöêêÿöèèÿõææûôääðóááêòßßëñÝÝéñÜÜèñÜÜåðÛÛâðÛÛàðÛÛÞðÚÚÝïÚÚßïÙÙÞïØØÙï××Ûï××ÚïÖÖÛîÔÔÚìÓÔÖìÒÓ×ëÏÐÒëÎÏÐêÌÌÅèÈÈÁæÆÆÀæÄÄ»å¿ÀŸãŒœ°â¹ºªàŽµ­Ý°±©Ü®¯šÚª«™Ø¥§’Ö¢€ŒÕž ‚Ò™œÐ–™€Í“–s̏“nʋlȈŒhƄˆaĀ…ZÂ|‚PÁySŸt{EœqxD»nu7¹jr6žgo1·dm.µaj(Ž]g!³Ze!²Xc±V`¯S]¯Q\®OZ­LX¬KV¬IU «HS ªFRªFRªDP©DO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BN©CO©DOªDPªFRªGS«HS ¬IU ­LW ­NY®PZ¯R]±U`±Wa³ZeŽ]g!µaj)¶dm'žhp2ºls2Œov@œryD¿v|KÁz€PÃ~ƒVł‡Tdž‹dɊŽhˎ‘h͑”xϕ˜}јšԝŸÕ¡£ŒØ¥§Ù©ª–Û¬®—Ý°±Ÿß³Ž€â¹º¬äœŸžåÁÁ³æÅÅÃèÈÈÆêÌÌÔëÏÐíìÒÓðíÔÕñï××åïØØáïÚÚÝïÛÛàðÛÛàðÛÛâñÜÜâñÜÜàñÜÜáñÛÛßñÛÛâñÛÛâñÛÛæñÛÛåðÛÛäðÛÛæðÚÚçðÛÛèðÛÛìñÜÜêóßßïôââïõääóöççþ÷ééÿ÷ëëÿøííÿøííÿ÷ëëÿ÷ééÿöççÿõååõôââóóßßíòÝÝëðÛÛêðÚÚëðÚÚèðÚÚçðÚÚåðÚÚäðÛÛâðÚÚÞðÚÚÞðÚÚàðÛÛßðÚÚÜðÚÚÝïÚÚÞïÙÙÛï××Ûï××ÜïÖÖÝìÓÔèëÐÑèëÎÏçéËËÒèÇÇÂæÄÄœå¿À²ãŒœ±âž¹¬ß³Ž Ý¯°˜Ûª¬–Ùš©Ö£¥ŽÕŸ¡…Ó›žÑ˜š{Γ—v̐“wʋeȈŒkƄˆeĀ…ZÂ|‚NÀw~LŸt{Iœqx?ºlt:ºiq1·fn.¶ck)µ_i"³\f"²Yc°V`°T^¯Q\®OZ®NY¬KV ¬IU «HS «FR ªDQªDPªDO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFRªFR«HS ¬IU ­LW ­NY®PZ¯S]±V`²Yc³\f Ž_i$¶ck$·fn+¹iq/»nu<œqxFŸu|IÁyQÃ|‚Lł‡Udž‹^ɊŽdˎ‘s͑”wϖ™|ҙœƒÕŸ‰×¢€ŽÙŠ§’Úª¬“ܯ°–Þ²³ á·ž¢ã»Œ§äÁÁŠçÄÄ°èÈÈÄëÌÍÔëÏÐêíÓÔïï××öïÚÚùðÝÝûñÞÞõòÞÞëóßßæóßßæóÞÞçòÞÞåòÝÝæñÜÜæñÜÜåñÛÛåðÚÚâðÙÙãðØØæðØØçð××éð××èïÖÖêïÖÖìïÖÖðð××ðñÙÙññÛÛõòÞÞñôááøõååÿöèèÿ÷ëëÿøììÿøììÿ÷ëëÿöèèÿõååÿôââøòÞÞõñÛÛòñÙÙðð××ïð××ëð××êð××ìð××æñØØèð××åðØØæðØØäðÙÙåðÚÚâðÛÛäñÛÛãñÜÜãòÝÝâòÝÝàñÞÞáòÝÝçðÜÜòðÛÛõïØØøîÖÖ÷ìÒÓïëÎÏÝêËÌÎçÇÇÀæÃð土§âº»à¶·˜Ý±²šÜ­®’Û©ªŽØ¥§ˆÕ ¢„Ôœžјš~Γ—v̐“oʋgȈŒdшZÀ…TÂ{TÀw~KŸtzAŒov?ºlt8¹hp2¶dm-µaj(Ž]g#²Ze±Wa°T^®R]®OZ®NY¬KV ¬IU «GS «FRªDQªDO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BN©CO©DOªDQ«FR«HS ¬IU ¬LW ®NY®PZ¯S]±V`²Yc³\f µ`j&¶dm*¹hp0ºlt9Œpw@ŸtzEÁyFÂ|‚OÄ…Vƅ‰\ȉŽbʍo͑”oϕ˜|ҙœ†Õž ‚Ö¢€‡ÙŠ§Úª¬“Ý°±œß³Žâ¹º äœŸ£åŠçÆƯêÊ˺ëÍÎÍíÓÓâïÖÖòïÛÛüñÞÞþóááÿóââÿôääÿôääþöååöôääëôââéôááêóßßêòÝÝéñÜÜëñÙÙëñØØéð××êîÕÕéîÓÓéíÒÒéíÒÒéíÐÐåíÏÏäíÏÏàíÏÏãíÏÏÞîÒÒàïÕÕàñØØßòÜÜçôááþõååÿöèèÿ÷ééÿ÷ééÿöèèÿõååÿôááÿòÜÜìñÙÙàïÕÕàîÒÒâîÐÐáíÏÏâíÏÏâíÏÏãíÐÐæíÑÑåíÒÒéîÓÓêîÕÕêðÖÖçð××äñÙÙéñÛÛçñÝÝçóßßèôááåôââèôââîôããøóââþóááÿòßßÿðÝÝöïØØúîÕÕðìÐÑäëÌÍËèÉÉŽçÄÄšäÀÀ ã»Œžâ·žžÞ²³“ܯ°’Úª¬ŽØ¥§ˆÖ¡£ƒÔŸ‚јš~Γ—w͐“tʋeȈŒcш\Ä„TÁz€K¿v|MŸryC»nu5¹iq7·fn0¶ck(µ_i"²[e±Wa±T_®R]®OZ­LX¬KV ¬IU ªGS ªFRªDP©DO©BNšBNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFRªGS¬IU ¬KV ®NY®OZ¯R]±V`³Yc³\f!µaj ·fn/ºiq.»nu=ŸryB¿v|EÂ{€KÀ…WƄˆ`ȉaʌk͑”wϕ˜yҙœ‚Õž …Ö¢€ˆÙŠ§Û«­•Ý°±—ßµ¶œãº»¢åœŸ æÃÀçÇdzêËÌÁëÏÐÐîÔÔÚïØØßðÛÛèóÞÞôóááúôääÿöççÿ÷ééÿ÷ééÿ÷ééÿöèèýöååòôããïóßßîòÜÜîñÙÙíðÖÖðïÔÔëíÑÑèìÏÏáëÍÍÙëÌÌÖêËËÑêÉÉÒêÉÉÎêÈÈÑêÇÇÏêÇÇÓêÈÈÕêÉÉØìÍÍÛîÑÑÝïÖÖáñÛÛ÷óßßÿõããÿõååÿõååÿôããÿóßßÿñÚÚúïÕÕâîÑÑÞìÍÍÝêÉÉØêÈÈØêÇÇÓêÇÇÏêÈÈÐêÉÉÎêÉÉÎêËËÒëÌÌÖëÍÍØíÏÏàîÒÒåïÔÔëð××ìñÚÚìòÝÝíôááëõããíöææööèèÿ÷èèÿ÷èèÿõååÿôããÿóààúòÝÝôïÚÚéîÕÕÝíÒÒÙêÍÎÍéÉÊŒçÆÆ­å¡䌜œâ¹º˜Þ³Ž–ݯ°“Úª¬ŠØ¥§ŠÕ ¢‚ӝŸÑ˜š{͓—{ˏ“rɋjLjŒcł‡WÃ|‚TÁyHŸt{>ŒpwCºls8žgp.·cl*µ_i#²\f±Wa°T^¯Q\®OZ­LW ¬IU «HS ªFR ªDQªDO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšBN©BN©CO©DOªDQ«FR«HS ¬IU ­LW®OZ¯R]±V`²YcŽ]gµaj'·fn,ºkr.Œov8ŸtzFÁyEÃ|‚Qł‡UȈŒfʋj̐“uΔ—qјšÕŸÖ¢€‡ÙŠ§’Û«­–Ý°±˜àµ¶šãº» äÀÀ¢çÅÅŠéÈȳëËÌÅìÑÑÕîÔÔÚïØØÞðÛÛáòÞÞäóááêõååõöèèÿ÷êêÿ÷ëëÿøííÿøííÿ÷ëëÿ÷èèÿõååùôààòñÜÜðð××èïÓÓáíÐÐÜìÍÍÓêÉÉÏêÈÈÎèÆÆÍèÄÄÎèÃÃÏçÁÁÐçÀÀÑçÀÀÔç¿¿Ôç¿¿×çÀÀÝçÂÂÜéÄÄáëÊÊâíÏÏâïÔÔðñÙÙÿòÝÝÿóßßÿóßßÿòÝÝÿñÙÙÿïÔÔïíÎÎâëÊÊãèÅÅßçÂÂÚçÀÀÚç¿¿Úç¿¿ÔçÀÀÕçÀÀÐçÂÂÏèÃÃÏèÅÅÍéÆÆÌêÈÈÍêÊÊÎìÎÎÖîÑÑÛðÖÖáñÙÙêóßßêõããóöççý÷êêÿ÷ëëÿ÷ëëÿ÷ëëÿöèèÿöææÿôââôòßßèñÜÜÞðÙÙÞîÖÖÚíÒÒÖìÎÎËêÉÊŸçÆÆ­æŸ䜟šâ¹º–ß³Ž’ݯ°‘Úª¬Œ×¥§ŠÕ ¢ƒÓ›žÐ˜š}͒•uˎ‘qȉŽfƅ‰cÄ„QÂ{€Q¿v|KŸry?»nu8¹iq1¶dm/µ_i!²\f±Wa°T^¯Q\­NY¬LW¬IU «GSªFRªDP©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFRªGS¬IU ¬KV ­NY¯Q\±T_²Yc³\fµaj'·fn+ºkr4Œpw=Ÿu|?Áz€HÄTƄˆYȉŽ]ˎ’kΒ•nЖ™yԜž~Ö¡£‰ÙŠ§Û«­‘Ý°±™àµ¶™ãº»žä¿¿ çÅÅ¥éÉÊžëÍÎÉíÑÑÖîÕÕØðØØÞðÛÛÝñÜÜâòÞÞæôââêõååëöçç÷÷êêÿ÷ëëÿøîîÿøîîÿøîîÿ÷ëëÿöèèÿõââÿòÝÝåð××ÙîÑÑÔìÍÍÔëÉÉÓèÄÄÑçÂÂÐçÀÀÏ柟Ñ匌Òä»»Ð人Óä¹¹Õäžž×äžžÕäžžÚä¹¹ßä»»á朜âçÂÂãêÈÈäìÎÎëîÓÓýðÖÖÿñÙÙÿñÙÙÿðÖÖÿîÓÓüìÍÍêêÈÈåèÃÃä柟âä»»àä¹¹ÞäžžÝäžžØä¹¹×ä¹¹Ö人Óå»»Ï挌Ð柟ÐçÀÀÐèÃÃÏéÆÆÏëÊÊÑíÐÐÏïÕÕÔñÛÛ×ôáá÷öææÿ÷êêÿ÷ììÿ÷ììÿ÷ììÿ÷ëëÿöèèÿöååôôââêôààâñÜÜáðÚÚßïØØØîÖÖÚíÒÒ×ìÏÏÓêÊËŸçÆÆ©æ土â¹º˜Þ³Ž•Ý­®ŽÚ©«‹Ø€ŠŠÕŸ¡Òš€Ð•˜u͑”uʌkȈŒcł‡]Ã|‚UÀw~GŸsyC»nu>¹iq2¶dm+µ_i'²[e±Wa¯S]®OZ­LX ¬JV «HS ªFRªDQªDO©CO©BNšBN§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQªFR«HS ¬IU ­LX ®OZ¯S]±Wa²\fµaj·fn/ºkr1œqx9¿v|@Â{OÇQLjŒ_ʋa͑”sŘtҙœ€Õ ¢…×€ŠÚ©«Ý¯°™àµ¶œãº»Ÿå¿¿¢çÄħéÉÊŽëÍÎÍíÑÑÙîÕÕÚðØØÞðÛÛÞñÛÛâóÞÞçóßßåôááèôââìõääìöææö÷ééÿ÷ëëÿøííÿøííÿ÷ëëÿ÷ééÿõååÿóßßþðÙÙáîÒÒØëËËÖéÆÆØçÀÀ×朜Ô人ÔäžžÓã··Ó㶶ÒᎵÓ᳎Óá²³ÔಳØಳ×â³³Úâ³³Þ㶶àä¹¹â匌ãèÂÂäêÇÇèëÍÍ÷îÐÐÿîÓÓÿîÓÓÿîÐÐÿìÌÌôêÇÇèèÂÂå匌ãäžžâ㶶àâ³³ßâ³³Ûá³³Ùá²³Øá²³×᳎×âµµÖ㶶Ôã··Öä¹¹Ò匌Õæ¿¿ÕéÄÄÕëÊÊÔíÐÐÖðÖÖÙòÝÝüõããÿöèèÿ÷ëëÿ÷ëëÿ÷ëëÿ÷êêÿöççÿõååôôââéôààæòÞÞäòÝÝãñÜÜâðÙÙÜðØØÜîÖÖÙíÒÒÓìÏÏÏêËÌŸèÆÆšæÂœ匜˜âž¹˜Þ²³’Û­®Úš©ˆ×£¥…Ôž ~јšzΔ—tˎ’mɊŽdƅ‰`Ä„QÁyNŸtzFŒnu@¹iq2·dm,µ_i(²Zd±V`®R]®NY¬LW ¬IU ªGSªFRªDPªDO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšBN©BN©COªDOªDQªFR¬IU ¬KV ­NY ¯Q\±V`²ZeŽ_i·em%ºkr1Œpw;¿v|CÂ|‚Rł‡]ȉ`ˎ‘o͒•uјš|՞ „×¢€ŽÚš©Ü­®•ÞŽµ•ã¹ºžä¿¿¡çÃÃ¥éÈÈŽëÍÎÅíÑÑ×îÕÕØðØØÝðÛÛàñÜÜàòÞÞåóÞÞçóßßçóÞÞêóßßìóßßîôááðôââ÷õååÿöèèÿ÷ééÿ÷êêÿ÷èèÿöååÿôááÿñÛÛýïÓÓãìÌÌÚéÅÅÙç¿¿Ú人Øä··ØãµµÖá³³Ôá²²Óà°±Ó௰Ô௰ÒயÖß®¯Õß®¯Øß®¯Ûá°°Þá²²àãµµâäžžã眜åèÃÃéêÇÇòëÊÊÿëÍÍÿëÍÍÿëÊÊýêÇÇïèÂÂé朜åäžžã㎎âá±±àá°°Þ௯Üß®¯Ùß®¯Ù௰×௰Ö௰Ôà°±Ôá²²Öâ³³Õ㶶×ä¹¹Ø柟ÚèÄÄÙëÊÊØîÒÒáñÙÙûóßßÿõääÿöèèÿ÷èèÿöèèÿöååÿõääÿôááñòßßîòÜÜíòÜÜéñÜÜæñÜÜãñÜÜáñÛÛßðÙÙÙïØØÛîÖÖÙíÓÓÔìÏÏÍêÊË»èÆÆšæž仌œá¶·–Þ±²”Û¬­‹ÙŠ§ˆÖ¡£‚Ôœž}Ж™w͑”rʋ`DžŠ[Ā…XÁyLŸtzE»nu=¹hp1¶ck)Ž]g²Xc°T^®PZ­LX¬IU «HS ªFRªDQ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BN©COªDOªFRªGS¬IU ­LW ®OZ¯S]±Wa³\f¶ck,¹iq4Œov>Ÿu|BÂ|‚SшZȉŽ_ˏ“oϕ˜wҙœ~Õ ¢ƒÙŠ§ŒÛ¬­’Þ°±“â·ž™äŒœŸæÃÃ¥èÇDZêÍÎÅíÑÑÕîÕÕÜðØØÜðÛÛÞñÜÜßòÝÝåòÝÝæòÝÝêòÝÝêòÜÜíñÚÚïñÚÚïñÛÛññÜÜåòÝÝæóßßþôââÿõääÿõååÿõääÿôààÿñÜÜÿðÖÖýíÎÎäêÇÇÜèÁÁÛä¹¹Ú㶶×â³³Õá°°Óà°°Òß­®Ñ߬­Òß«¬Óß«¬Óß«¬Ôß«¬Õ߬­×߬­Ù௯Üá°°àâ³³â㶶âå»»äç¿¿éèÃÃïêÆÆüêÇÇÿêÇÇÿêÆÆøèÂÂí矟è庺åãµµãâ²²áá°°àà®®Ü߬­Û߬­×ß«¬Øß«¬Öß«¬Ó߬­Õß­®Ó௯Õá°°Õá²²ÖãµµÚä¹¹ÛçÀÀÛêÆÆÝìÍÍãïÕÕúñÛÛÿóßßÿôââÿôããÿôââÿóààÿòÝÝüñÛÛÛñÙÙÜðØØçñ××ëñØØèñØØæñÙÙæñÚÚáñÚÚßñÚÚàðÙÙÙï×××ïÕÕÔíÒÒÑìÎÎÊéÉʺçÅŧäÀÀãº»–൶–ݯ°‘Ú©«ŽØ€Š†Õž zјšz͒•pʌfȈŒ\Ā…WÁyPŸsyDºlt:·fn0µ`j#³Ze±V`®R]­NY¬KV ¬IU ªFRªDQ©DO©COšBNšBN§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFR«HS¬IU ®NY ®Q[±T_²Zdµ_i·fn%ºlt3ŸtzGÂ|SшSȉŽ\̏“jŘuӝŸƒÖ¢€ˆÛš©ŒÜ¯°–൶–㺻›æÁÁ çÆÆ­êËÌŸìÑÑÓíÕÕØðØØÞðÛÛßñÜÜâòÝÝæòÝÝæòÝÝêòÜÜêñÚÚêñÙÙîðÖÖïïÕÕêîÓÓáîÓÓÛîÓÓÖïÖÖÙñ××ëñÛÛþòÝÝÿòÞÞÿòÞÞÿñÛÛÿð××ÿîÑÑûëÊÊæèÄÄÞ圜Û㶶Øâ³³×á°°Öà®®Óà­­Ò߬­Ñ߬­Îß«¬Ñß«¬Òß«¬Òß«¬Ó߬­Öß­®Øá°°Ûá°°Þâ³³á㶶ã庺å眜éèÁÁïèÄÄøéÄÄÿéÄÄþéÃÃóèÀÀí朜é庺åãµµãâ²²áá°°ßᯯÛß­®Ù߬­×ß«¬Öß«¬Òß«¬Ô߬­Ó߬­Ôà­­Ôà®®Öá°°×â²²Ù㶶Ú朜ÜéÂÂßëÊÊåîÐÐùðÖÖÿñÚÚÿòÜÜÿòÜÜÿñÜÜÿñÙÙýïÖÖæîÓÓÕîÑÑÑîÐÐÒîÐÐÕîÑÑáïÓÓåïÕÕéð××çñÙÙáñÚÚàñÚÚáñÚÚßðØØÜð××ØïÕÕÖíÑÑÔìÎÎÆéÉÊ°çÄĢ㿿›âž¹–Þ²³Û¬­ŒÚŠ§‰Õ ¢‚ÒšyΓ—tʍ‘dLjŒcÀ…SÀw~LœqxA¹jr;·dm&Ž]g²Xc¯S]®OZ­LW ¬IU ªGSªFRªDO©CO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBN©BN©DOªDQ«FR«HS¬KV ­NY ®R]°V`³\f¶ckºiq&œqx7ÀyGÀ…VȈŒbː”mЖ™qԞ €×£¥ŠÚª¬“Þ°±˜âž¹œä¿¿œæÄÄ£éÉÊŽìÏÏÐîÔÔØðØØÞðÚÚâñÜÜâòÞÞçòÞÞæòÝÝèòÜÜëñÚÚìñØØìïÖÖðîÓÓìíÐÐÝìÍÍÓëËËÕëËË×ëËËØìÍÍÚíÐÐÞîÓÓíïÖÖþð××ÿð××ÿïÖÖÿîÑÑÿìÌÌøéÇÇåèÀÀÝ庺Ú㎎Öâ±±Õá°°Õà®®Òà­­Ñ߬­Ðß­®Ïß­®Ðß®¯Ð௰Ò௰Óà°±Õà°±Øá³³Úâ³³Þ㶶áäžžã匌å矟êèÁÁðèÃÃõéÄÄþéÄÄûèÃÃòèÀÀî朜èå»»äã··ããµµàâ³³Þá²²Ùá±±Ùà°±×௰Ö௰Õß®¯Óß­®Òß­®Òà®®Òà®®Öá°°Õá²²ØãµµÚ庺ÜèÀÀÞêÆÆæìËËøîÑÑÿïÔÔÿðÖÖÿðÖÖÿïÓÓýîÑÑëíÍÍÛëÊÊØëÉÉÓëÈÈÒëÉÉÐëÊÊÌìÍÍÏíÏÏÚîÒÒäïÔÔçð××ãñÙÙâñÚÚãñÚÚáñÚÚÛðØØÛï××ÛîÕÕÔíÑÑÓêÌÍÆèÇǧæ仌‘൶•Ý°±’Úš©‘Ö¢€ƒÒ›žxΓ—vʌfƅ‰\Â}ƒZŸv}C»nu3žgo'µ_i²Zd±T_®PZ­LX ¬IU «GSªFRªDPªDO©BNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBN©BN©CO©DOªDQªFR¬IU¬KV ®OZ¯S]²Xcµ^g·fn ºlt"Ÿtz0Â|‚Dƅ‰`ʌpĘvԜŸ{×€ŠŒÛ«­—Þ³Ž¡ãº»€æÁÁšèÇǧêÍÎÂíÑÑ×î××ÝðÚÚâñÜÜåóÞÞäóßßêóÞÞéòÝÝìñÛÛíñØØîðÕÕðîÒÒêìÎÎÞëËËÕëÈÈÔéÅÅÔèÃÃØèÃÃÚèÃÃÛéÄÄÝêÇÇÜëÊÊâìÍÍïíÐÐþîÐÐÿíÐÐÿëÍÍÿêÈÈöéÄÄæ眜à庺Ø㎎×â²²Õá°°Ôá°°Ñá°°Ðá°°Ïâ±±Ïà±²Ïá²³Ðá²³Ð᳎ÒãµµÖ㶶Øã··Ýä¹¹â人ã匌æè¿¿æèÁÁêéÄÄðéÅÅöêÆÆûêÆÆøéÅÅóèÃÃîèÁÁé矟ç匌åä¹¹ãäžžãã··Ü㶶Ùⶶ×᳎Õá²³ÔಳÒà±²Ðâ±±Ñá±±Òá±±Õá±±Õâ²²×ãµµÙ庺Ú矟áéÄÄèêÈÈøìÌÌÿíÏÏÿíÐÐÿíÏÏýìÌÌíëÉÉáêÆÆàèÃÃÝèÁÁÙèÁÁÔèÁÁÓèÃÃÑéÄÄÏëÈÈËëËËÎíÎÎÙîÑÑæïÔÔèð××æñÙÙâñÚÚáñÛÛàñÚÚÝðØØÝð××ÚíÔÔÓìÐÐÐéÉÊŽçÅŝ俿âž¹—Ý°±šÛª«ŽÖ¢€ˆÑšœÍ’•uȊhăˆVÁz€Dœqx.¹iq!¶ck³\f±V`¯Q\®NY ¬JV «HS ªFRªDPªDO©BNšBNšBN§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@L§ALšAMšBN©BN©COªDOªDQªFR¬IU ­LW ®OZ°T^³Ycµ_ižgo Œnu'¿w~,À…8ȉVΒ•qҚœ~Ö¢€ƒÚª¬–ß³ŽŸã»Œ¥æ«éÉÊÀìÐÐØîÕÕÜðÙÙÝñÜÜàóßßåóßßèóßßìòÞÞëñÜÜìñÙÙððÖÖïîÓÓìíÏÏÜëËËÕêÇÇÓèÄÄÔèÀÀÕ朜×匌Úå»»Úå»»Ù朜ÜèÀÀÝèÄÄáêÇÇäêÉÉðëÊÊþëÊÊÿêÈÈÿéÅÅ÷èÁÁç眜á庺Ùä··Ö⎎Òâ³³Òâ³³Ð⎎ÐãµµÏ㶶Ï㶶Ïä¹¹Ðä¹¹Ò人Ö匌Ø挌Ú朜ßçÀÀåçÁÁèèÄÄçéÅÅêêÇÇìëÉÉñëÊÊöëÊÊùëÊÊøëÊÊóêÈÈîêÇÇëéÅÅêéÃÃççÀÀèæ¿¿å朜â匌Ýå»»Ù人×ä¹¹Ôä¹¹Ô㶶Ò㶶ÒãµµÓ⎎Ó⎎ÕãµµÔã··Ù庺Ú矟ãèÂÂèéÅÅøëÈÈÿëÊÊÿëÊÊýêÈÈïéÆÆæèÂÂâè¿¿Ý匌Û庺Û庺×庺×å»»Ö朜ÐèÀÀÍèÄÄÎêÇÇËëËËÏìÎÎÚîÒÒèðÕÕéðØØçñÚÚãñÜÜáñÜÜàðÛÛÞðÙÙÙðÖÖ×íÑÑÏêÍÎÄèÇǵäÀÀ§â¹º§Ý°±•Ú©ªÕ ¢†Ò—š|ˏ’qƆ‹OÂ}ƒ8Ÿu|)ºlt$·emŽ]g±Wa¯R]­NY¬KV «HS «FRªDQ©DO©CO©BNšBNšAM§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@L§ALšAMšBNšBN©BNªDOªDOªFRªGS¬IU ­LW ®PZ ±T_²Zeµaj¹iq œqx&Áz€/ш5ʍ‘Gϕ™fԟ¡‚Ùš©˜Ý²³œâº»¥æÃÃŽéÉÊ×íÑÑéïØØñðÛÛêòÞÞãôááãôââêôààëóÞÞïñÛÛòðØØóïÓÓïîÐÐâëËËÕêÇÇÕéÃÃ×èÀÀÖ匌Ø庺Øä··Ø㶶Ø㶶×䶶Øä··Û庺Ú朜ÛèÀÀãèÃÃèéÅÅñéÅÅþéÅÅÿèÃÃöèÁÁè柟á匌Ø庺Ôå¹¹Óä¹¹Ñä¹¹Ñä¹¹Ð䌌Ð挌Ð柟Ðç¿¿ÓçÀÀÔçÂÂ×èÃÃÚéÄÄÝèÆÆâêÈÈæëÊÊêëËËììÍÍîíÎÎðîÐÐòîÐÐ÷îÑÑúîÑÑùîÐÐõíÐÐñíÎÎïìÍÍíëËËëëÊÊêêÇÇèèÆÆãèÃÃÜèÃÃÚçÂÂØçÀÀÖç¿¿Õ朜Ô挌Óä»»Ô人Ôä¹¹Ôä¹¹Ö匌×朜Üç¿¿äèÂÂééÄÄùéÅÅÿéÆÆýéÅÅòèÃÃèèÀÀã圜Üå¹¹Üä··ÜãµµÛ㎎Ú㎎ØãµµÕä··×庺Ò朜ÒçÁÁÑèÄÄÎêÇÇÍëÌÌÎîÐÐÝïÓÓéðÖÖêñÙÙæñÜÜäòÝÝßòÞÞÝñÛÛÛðØØÛíÕÕÜìÏÏáèÇÇÉåÁÁ°áž¹ŸÜ¯°×¥§‹ÓœŸÍ“–eȉFÁ†2¿w},»nu'·fn Ž_i²Yc¯S]®OZ¬KV ¬IUªFRªDQªDO©CO©BNšBNšBNšAM§ALš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@L§AL§ALšAMšBNšBN©BN©CO©DOªDPªFR«GS¬IU­LX ®Q[±V`²[e¶ck¹jr"œry)Â}‚-ƅ‰7ː“?Ҙ›UÖ£¥}Û¬®˜à·ž§åÁÁŸéÉÊãíÑÑôïØØòòÝÝûôââ÷õããòôääéôââëóßßïñÛÛññ××õîÒÒçìÍÍÛëÉÉÖéÄÄ×çÀÀÙ朜Öå¹¹Øä··Ø㎎Øâ²²Øâ²²Öâ²²×â²²Õ㎎×ä··Øå¹¹Ú圜àç¿¿æèÁÁêèÄÄóèÄÄýèÃÃõèÁÁéèÁÁáçÀÀ×ç¿¿Óç¿¿Òè¿¿ÑçÀÀÐçÁÁÏçÃÃÎèÄÄÏéÅÅÑêÆÆÖêÈÈÙêÉÉâêËËéëÌÌïìÎÎóîÐÐøîÒÒúïÔÔüïÖÖýð××ýñ××þñÙÙþñÙÙÿñÙÙþñØØþð××þðÖÖýïÕÕýïÓÓüîÒÒúîÐÐøìÎÎôëÌÌîêËËëêÉÉâêÈÈÜêÇÇØéÆÆÔéÄÄÒçÃÃÒçÂÂÔçÀÀÔèÁÁÔèÁÁÕèÁÁÜèÃÃãéÄÄëéÄÄùéÅÅþéÄÄôèÂÂëèÀÀæ朜àå¹¹Ûä··Ø㎎Ùâ²²Ùâ±±Ùâ±±Øâ±±Øã²²Ù㎎×ä··Ö庺Ö圜ÑèÁÁÒêÄÄÏëÉÉÎìÍÍÕîÓÓåðÖÖèñÛÛçóÞÞåóßßãóßßâòÞÞìðÚÚðîÖÖòëÎÏíçÆÆÑ㜟²Þ³ŽžÚ©ª™Ô¡£uϕ™Rʋ<ăˆ5Àz€/Œov&žhpµ_i³Yc°T^®OZ ¬LW ¬IUªFRªDQªDOªDO©BN©BNšBNšBNšAM§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@L§AL§ALšAMšAMšBNšBNšBN©BN©BNªDO©DOªDQªFR«HS¬IU®NY ¯Q\±V`³\f¶clºkr Ÿu|)Â~„0LJŒ9͑•?қJ׊šjÜ°±“⺻ŸçÅÅèëÍÎíî××óòÜÜÿôââÿõååÿöååÿõååøôââóòÜÜôðØØðîÒÒÞìÌÌ×êÇÇÜèÂÂÙ朜Ü庺Ûã··Û㎎Ùâ±±Øá±±Ô⯯ÔᯯÓᯯÕâ±±Õâ²²Ö㎎×ä··×庺Ý矟ãèÁÁèèÂÂëéÄÄôéÄÄïéÄÄçéÄÄßéÄÄÖéÅÅÐêÆÆÎéÇÇÍêÇÇÐêÈÈÓêÉÉÜêËËãëÌÌéìÎÎñíÏÏõíÐÐüíÒÒþïÕÕÿðÖÖÿñØØÿñÚÚÿòÜÜÿòÞÞÿóßßÿôààÿôááÿôââÿôââÿôááÿôààÿóßßÿòÞÞÿñÜÜÿñÙÙÿðØØÿðÖÖÿïÕÕÿíÒÒÿíÑÑûíÏÏøìÎÎòëÍÍêêÌÌåêÊÊßëÊÊÙëÉÉÔëÇÇÓêÇÇÓêÇÇØêÇÇãêÇÇêêÇÇõéÅÅòéÄÄíèÁÁèç¿¿ã挌Üåžž×äµµÙâ³³Ùâ±±ÖᯯØá®®Öá®®×ᯯØâ±±×â²²×㎎Øä··×庺Ù矟ÓèÃÃÓëÉÉÓìÍÍÏïÓÓÚñÙÙçòÜÜåôààëôââóôââþóÞÞÿðÚÚûíÓÓ÷êËÌïåÂÂäṺ²Û­¯Õ¢€bљœFʏ’<ш5Á{.œqx&¹iq µaj²Zd°T^®OZ­LW ¬IUªGSªFRªDP©DO©CO©BN©BNšBNšBNšBNšAMšAM§AL§AL§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšAMšAMšBNšBNšBN©BN©BN©BN©CO©DOªDPªDQ«FR«HS¬JV®NY ¯Q\ °V`³\f·clºls Ÿu|(Â~„.LjŒ8Β•?ӜŸHا©VÞ²³‘䜟ÔçÇÇéìÑÑùïÙÙýóßßÿõååÿöççÿöææÿõääÿóßßøñÚÚçïÓÓÚìÍÍÜêÇÇÝèÁÁÝ匌ÜäžžÛ㎎Úâ²²Úâ±±×ᯯÕá®®Ôá®®Õá®®ÔᯯÒâ±±Óâ³³ÔãµµÕäžžÕå»»Ö矟ÞèÁÁãéÄÄêêÆÆíêÈÈìëÈÈåëÊÊÛëÊÊÑëËËÕëÌÌÛìÍÍãìÎÎëîÐÐðîÐÐñîÒÒóîÒÒôîÒÒöïÕÕùðÖÖüðØØÿñÚÚÿòÜÜÿòßßÿôááÿôããÿõååÿöççÿ÷èèÿ÷ééÿ÷ééÿ÷ééÿ÷èèÿ÷èèÿöççÿõååÿôããÿôááÿóÞÞÿñÜÜÿñÚÚÿðÙÙÿðÖÖþðÖÖûðÔÔùïÓÓ÷îÓÓöîÑÑöíÐÐòíÏÏííÎÎçìÍÍÞëÍÍÜëÌÌàëËËèëÊÊîëÈÈíêÆÆèéÄÄãèÁÁÝ朜Ø庺Øä··Ø㎎Öâ±±ÖᯯÕá®®Õá®®Öá®®×á®®ØᯯÙâ±±Úâ³³Ü㶶Û庺Ú柟ÛéÄÄØëÊÊÒíÐÐÏðÖÖÔñÜÜàôààõôããÿôääÿôââÿñÝÝÿî××ýëÍÎ÷çÄÄí⺻Ðܯ°}Ö€ŠOҙœCˏ’=Ņ‰3Á|‚.œqx'¹iqµaj²Ze±T_®PZ ­LW ¬IU«GSªFRªDQªDO©DO©CO©BN©BN©BNšBNšBNšBNšBNšAMšAM§AL§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšAMšBNšBNšBN©BN©BN©BN©CO©COªDO©DOªDPªDQªFRªGS¬IU¬KV®NY ¯Q\ °V`³\f·dmºls Ÿu|%Â~„/LjŒ5Β•>ӜŸGا©PÞ²³l䜟³çÇÇáìÑÑÿðÚÚÿóßßÿöååÿöççÿöææÿõããûóßßéñØØáîÑÑÞëÊÊÞèÄÄß柟àä¹¹ßãµµÜâ²²Ûá°°Úá®®×á®®Ôá®®Õá®®ÔᯯÓâ±±Óâ³³ÒãµµÓåžžÔå»»Õ矟ÕèÁÁÖêÅÅÜêÇÇàëÊÊäëÌÌèìÍÍêíÏÏìíÐÐéîÐÐîîÑÑïîÓÓðïÓÓðïÔÔððÕÕñðÖÖóðÖÖôð××÷ð××úðÙÙþñÛÛÿòÝÝÿóààÿôããÿöææÿ÷ééÿ÷ëëÿøííÿùïïÿúððÿúððÿúððÿùïïÿùîîÿøííÿ÷ëëÿöèèÿöååÿôââÿôààÿòÝÝÿñÜÜÿñÚÚÿñÙÙýðØØùð××÷ðÖÖöðÖÖöðÖÖôïÕÕóïÓÓòîÓÓôîÒÒóîÐÐöîÐÐóíÎÎîìÍÍçëÊÊÞêÇÇÝéÄÄÙèÁÁØ朜×庺Õä··Õ㎎Õâ²²Ôâ±±ÕᯯÕá®®×á®®×á®®ÙᯯÚâ±±Ûã³³Üä··Ýå»»ÜèÁÁÜêÇÇ×ìÍÍÓïÔÔÔñÚÚÚôßßîôããÿôääÿôââÿñÝÝÿï××ÿëÎÏ÷çÅÅâ⺻«Ü¯°bÖ€ŠLҙœEˏ’=Ņ‰5Á|‚.œqx%¹iqµaj²Ze±T_®PZ ­LX ¬IU«HSªFRªFRªDQªDO©DOªDO©CO©CO©BN©BN©BNšBNšBNšBNšBNšAMšAM§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšBNšBNšBN©BN©BN©BN©CO©COªDO©DOªDOªDPªDQªDQªFR«FR«GS¬IU¬KV­NY ®R]°V`³\f·clºkr Ÿu|%Â~„-LJŒ7͑•?қH׊šTܱ²Z⻌zçÆÆÃëÏÐõïØØÿóÞÞÿõääÿöååÿöååÿôããþòÞÞôð××êîÐÐåëÉÉâèÂÂà圜àä··ß㎎Ýâ±±ÛᯯÙá®®×ᯯÖá°°Óâ±±Óâ²²ÒãµµÒä··Ñ庺Ò朜ÑèÀÀÓéÄÄÑêÇÇÎëÊÊÓëÍÍÞíÏÏïîÐÐùîÑÑþïÓÓöïÔÔìðÔÔïðÕÕíðÖÖìðÖÖíðÖÖïðÖÖððÖÖòðÖÖôð××÷ð××ûðÙÙÿñÛÛÿòÞÞÿôááÿõååÿ÷èèÿ÷ììÿúïïÿúòòÿûôôÿûôôÿûõõÿûõõÿûôôÿûóóÿúññÿùîîÿ÷ëëÿ÷èèÿõååÿôááÿòÞÞÿñÜÜÿñÚÚÿñÙÙýðØØúðØØ÷ðØØõð××ôð××óð××òð××ñð××óðÖÖôðÖÖÿïÕÕÿïÓÓþîÑÑ÷íÏÏäëÍÍÙëÊÊÓêÇÇÓèÃÃÔèÀÀÕ匌Õä¹¹Õä··Ö㎎Õâ²²Õâ±±Öá°°×ᯯÙᯯÙâ°°Ûâ²²Üäµµß庺ßçÀÀÝéÆÆÞìÍÍÜïÔÔáñÙÙêóßßûôââÿôââÿôááÿñÛÛÿîÔÔÿëÌÍòæÃùṺnÛ­¯VÖ£€LҙœDʏ’<Ņ‰3Á{,œqx$¹iqµaj²Ze±T_®Q[ ®NY ¬JV¬IUªGS«FRªFRªDQªDPªDOªDO©DOªDOªDO©CO©CO©BN©BN©BNšBNšBNšAMšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§ALšAMšBNšBNšBN©BN©BN©COªDO©DO©DOªDOªDPªDQªDQªFRªFR«FRªFR«GS¬IU¬IU­LW ®NY ¯R]±Wa³\f·clºkr œry$Â}ƒ.ƅ‰3ː“<ҚœGÖ£¥Pܯ°[⹺cåŠêËÌÕîÔÔÿñÛÛÿôááÿôããÿôääÿôââÿòÝÝþð××õîÐÐêëÊÊäèÃÃÞ圜àä··ß㎎Þâ²²Ûâ±±Úâ±±Öâ±±Õã³³Ô㎎Òä··Ó庺Ñ朜ÐçÀÀÐéÃÃÎêÆÆÍëÊÊÒëÍÍÜìÏÏçîÑÑðîÓÓúïÔÔÿðÕÕÿðÖÖòðÖÖêðÖÖëðÖÖêïÕÕíïÕÕìïÕÕìîÔÔïïÓÓñîÓÓôîÓÓ÷îÔÔüðÖÖÿðÙÙþñÜÜüôààûõååþ÷ééÿøîîÿúññÿüõõÿü÷÷ÿýøøÿýùùÿýùùÿüøøÿü÷÷ÿûôôÿúññÿ÷ííÿ÷èèÿõääýóààýñÜÜÿñÙÙÿðÖÖÿðÖÖþïÕÕúïÕÕ÷ïÕÕõïÖÖòïÖÖððØØñðØØððØØððØØñðØØùðØØÿð××ýðÖÖõïÔÔóîÒÒðíÏÏèëÌÌÝëÊÊÓéÆÆÒéÃÃÔçÀÀÕ匌Öå¹¹Õä··Ö㎎Øã³³Øâ±±Øâ±±Úâ²²Ü㎎Ýä··Ý庺ÝèÁÁÞêÇÇáìÍÍãïÔÔïñÙÙüóÞÞÿôààÿôààÿòÝÝÿðØØÿíÒÒÿéÉÊÆ埿zàŽµ^Úª«UÖ ¢Lϖ™Eʌ;ш3Áz€)Œpw"¹hpµaj²Ze±U`¯Q\ ®NY ¬KV¬IU«HSªGSªFRªFRªFRªDQªDQªDQªDPªDPªDO©DOªDOªDO©CO©BN©BNšBNšBNšAM§AL§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§ALšAMšBNšBN©BN©BN©CO©DOªDOªDPªDQªDQªFRªFR«FR«FRªFRªGS«GS«HS¬IU¬IU¬KV­LX ®OZ ¯R]±Wa³\f¶ck¹iqœqx#Áz€+Ņ‰3ʍ‘:ЗšE՟¡MÚª«Zß³Žb䜟oçÆƙìÏÏæî××ÿñÛÛÿôààÿôááÿôààÿòÜÜÿñÙÙÿîÒÒôëÌÌçéÅÅâç¿¿Þ庺Üä··Ý㎎Ú㎎Ù㎎Ø㶶Õä··Ô庺Ô朜ÒçÀÀÐèÃÃÎêÇÇÍëÊÊÔëÍÍàíÏÏíîÑÑíïÓÓíïÔÔïðÖÖëðÖÖõðÖÖöïÕÕðïÕÕæïÕÕçïÔÔèîÓÓêîÒÒéíÑÑìíÏÏììÏÏíìÎÎëìÎÎéìÏÏëíÐÐëîÒÒìñØØëòÝÝïôââü÷èèÿøîîÿúòòÿü÷÷ÿüùùÿýûûÿýüüÿýûûÿýúúÿü÷÷ÿüõõÿúññÿ÷ííÿöççÿôââûòÜÜñðØØïîÓÓðíÑÑñíÐÐóíÐÐóíÐÐôíÐÐôíÒÒñîÓÓïïÕÕïïÕÕîïÖÖîï××ïðÙÙüðÙÙøðÙÙ÷ðØØððØØïðÖÖïïÔÔñîÒÒòíÐÐììÍÍáëÊÊÖêÇÇÕèÄÄØèÀÀÚ朜Ú庺Ùä··Û㶶Ù㎎ÚãµµÜä··Ý人ß眜ßèÃÃàëÊÊáíÐÐìïÕÕýñÚÚÿòÝÝÿòÞÞÿòÝÝÿðÙÙÿíÕÕÿêÌÍÜçÄĆ⺻fÝ°±_Ù§©VӜŸKΓ–@Ȋ9ā†0Àx(Œov žgpµ`j²Ze±U`¯Q\ ®NY ­LW ¬KV¬IU¬IU«HS«GSªGSªFR«FR«FRªFRªFRªDQªDQªDQªDP©DOªDO©CO©BN©BNšBNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BN©BN©CO©DOªDOªDQªDQªFR«FRªFRªGS«GS«HS«HS¬IU¬IU¬IU¬JV¬KV¬LW ­LX ®NY ®Q[ °T^±Wa³\f¶ck¹iqŒpw#Ày*Ā†/Ȋ:Γ–AӜŸL×€ŠTÜ®¯_á·žjäÀÀwèÈÉšìÐÐøð××ÿðÛÛÿóÞÞÿóÞÞÿòÝÝÿñÙÙÿïÕÕþíÏÏòëÊÊãèÄÄÞç¿¿Ý匌Ü庺Úå¹¹Ù庺Üå»»Ú眜ØèÁÁÕèÄÄÐêÇÇÏëÊÊÔìÍÍãíÐÐîîÑÑïïÓÓíðÕÕëðÖÖìðÖÖêïÕÕéïÕÕéïÕÕëïÓÓçíÒÒäíÑÑåìÎÎäëÍÍßêÊËÛêÊËÔéÈÉÐéÇÈÎéÇÇÒéÇÇÖêÇÇÞêÊÊãëÍÍçíÒÒëðÙÙðôßßýöççÿ÷ííÿúòòÿü÷÷ÿýúúÿýüüÿýüüÿýüüÿýûûÿýùùÿüõõÿúññÿ÷ëëÿõååÿóßßûñØØïîÒÒëìÍÍçëËËãêÉÉßêÉÉÛéÈÈØéÊÊÚêËËÛëÍÍáìÎÎéíÑÑêíÒÒéïÔÔêïÕÕìïÖÖìï××îðÙÙêðÙÙíðØØíðØØïð××ñïÖÖðïÓÓñîÑÑòíÎÎæëËËÜêÇÇÙéÄÄÚèÁÁÞ朜Ýå»»Ú庺Ú庺Ü匌Ý矟ÞèÂÂßêÇÇàëÍÍéîÒÒüðÖÖÿñÚÚÿñÜÜÿñÜÜÿðØØÿíÔÔÿìÎÎêçƃ土nßµ¶gÚª¬[Ö£¥QњœI̐”>LjŒ7À…-Ÿu|'»nu"·fnµ_i²Ze±V`¯R] ®OZ ®NY ­LW ¬KV¬JV¬IU¬IU¬IU¬IU«HS«HS«HS«GSªGS«FRªFRªFRªDQªDPªDOªDO©CO©BNšBNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BN©COªDOªDOªDPªDQªFRªFR«GS «HS¬IU ¬IU ¬IU ¬KV ¬KV ¬LW ­LW ­LW ­LX ®NY ­NY ®OZ ®PZ ¯R]±T_²Xc³\fµajžhpŒnu ¿v|(Ä.dž‹7ˏ“@і™G՟¡SÙš©]Ý°±fâž¹ræÁÁ‚èÈɹìÐÐûïÕÕÿðÚÚÿñÜÜÿòÝÝÿñÛÛÿð××ÿïÓÓþíÎÎîëÊÊàéÅÅÛèÂÂÜèÀÀßèÀÀÜèÀÀàèÂÂÜéÄÄ×ëÈÈÔëËËÖíÎÎãîÐÐïîÓÓíïÔÔëðÕÕêðÖÖéðÖÖéïÕÕéïÕÕæïÔÔäíÒÒãìÏÏàìÎÎÞëÌÍ×éÉÊÎèÆÇÃèÅÅŒçÃÃœçÁÁŸåÀÀÂ域È域Ð埿Öæ¿ÀÞçÂÂäéÇÇçëÍÍëîÔÔïñÜÜýôääÿ÷ëëÿúññÿü÷÷ÿýúúÿýüüÿþýýÿþýýÿýüüÿýùùÿûõõÿúððÿ÷êêÿôââÿñÚÚûîÒÒðëÌÌêéÇÇèèÃÃäæÀÁÞåÀÁÙåÁÂÒæÁÁÍçÃÃÆçÃÃÅèÆÇÇèÈÉÌéÊËÑëÎÎÞìÏÏèíÒÒåïÔÔçïÕÕèï××ëñÙÙíñÙÙìñÙÙìñÙÙïñÙÙðð××óïÕÕõîÓÓ÷íÐÐììÌÌâëÉÉßéÅÅáèÃÃáèÁÁâèÁÁÝèÂÂÝéÅÅÜêÈÈÜìÍÍçîÑÑûïÖÖÿðÙÙÿñÚÚÿñÙÙÿï××ÿîÓÓÿìÎÎöèÆÆ¡ä¿¿wᶷjÝ­®cØ¥§WԞ Nϕ˜Dʌ<Ņ‰2Â|+Ÿsy%ºlt·fnµ_i²Ze°V`°T^¯Q\ ®OZ ®NY ®NY ­LX ­LW ­LW ­LW ¬LW ¬KV ¬KV ¬JV ¬IU ¬IU «HS«HSªGS«FRªFRªDQªDP©DOªDO©BN©BNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBNšBN©BN©CO©DOªDPªDQªFRªFR«GS«HS ¬IU ¬JV ¬KV ­LW ­LX ®NY ®NY ®OZ ®OZ ®PZ ®Q[ ¯Q\ ¯Q\ ¯R] ¯S]°T^°V`³Yc³\fµajžgoºltŸtz%Â|+ł‡4ɋ<͑”EҚOÖ¢€XÚ©«cÞ±²n㹺wæèÉÊÇìÏÏüïÕÕÿðØØÿñÜÜÿñÜÜÿñÚÚÿï××ÿïÔÔþîÐÐìëÍÍÝëÊÊáêÇÇáêÇÇâëÈÈàëÊÊÝìÍÍßíÏÏìîÒÒòïÓÓñðÖÖìðÖÖêð××ëð××èïÕÕçïÔÔåîÓÓãíÒÒâìÎÎàëËÌÕèÈÉÅèÆÆŒçÃÃŽæÀÀ²ã¿¿ŽãŒŒ·ã¹º·ã·žžá¶·Âáµµ¿á¶¶ÇᶶÏâžžÖä»»ÝçÁÂåêÉÉçíÐÐîðØØýôââÿ÷ëëÿúññÿüööÿýúúÿýüüÿþýýÿþýýÿýüüÿýùùÿûôôÿùïïÿ÷èèÿóßßÿïÖÖûíÏÏîéÇÇéçÀÁå䌜Ûã¹¹Õá··ÓážžÌâžžÅ㺺Ç㌌Â䜜œå¿¿Œæ·èÅÅžèÇÈÃéÊËÐëÎÎ×ìÐÐåíÓÓçïÕÕæï××éñÙÙëñÛÛìñÜÜïñÛÛòñÚÚõñÙÙùðÖÖúïÔÔúíÐÐðíÎÎåëËËãëÊÊäëÊÊâëÊÊâëÌÌÜíÏÏäîÒÒúðÖÖÿðØØÿðÙÙÿñÙÙÿïÖÖÿíÓÓÿëÎÎ÷èÆǮ忿|â·žrݯ°hÚš©_՟¡TјšJ̐“AȈŒ8ā†0Áy+œqx$ºkr·emµ_i²[e±Wa±U`°T^¯R] ¯Q\ ®Q[ ®PZ ®PZ ®OZ ®OZ ®OZ ®NY ®NY ®NY ­LW ¬LW ¬KV ¬IU ¬IU «HS ªGS«FRªFRªDQªDOªDO©BN©BNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBNšBN©BN©CO©DOªDPªFR«FRªGS «HS ¬IU ¬KV ­LW ®NY ®NY ®OZ®Q[®R]¯R]°T^°T^°T^±T_±U`±V`±V`±Wa±Wa²Yc²[eµ^gµaj·fnºlsœqx"Àw~(Ä„/LjŒ8ˎ‘@ϕ˜IӜžR×£¥]Û«¬gÞ²²r乺|æ‘èÈÉÈìÏÏûïÔÔÿðØØÿñÛÛÿñÛÛÿñÚÚÿðØØÿðÖÖýîÓÓëîÑÑàîÐÐãîÐÐãîÐÐäîÒÒðïÔÔ÷ïÖÖøð××ññØØíñØØìðØØéïÖÖæïÕÕæîÒÒæíÑÑàëÎÎÛéÊËÎèÆÇœçÄÄŽåÀÀ­ã¿¿«ãº»°â·ž­ßµ¶šß²³°ß±²³Þ°±«Þ®¯·Ý®¯»Þ®¯ºß¯°Æà±²ÊᶶÒ䜜ÜèÃÄàëÍÍëïÖÖüóßßÿ÷èèÿùððÿûööÿýúúÿýüüÿþýýÿþýýÿýüüÿýùùÿûôôÿøîîÿõææÿñÝÝÿîÔÔúêËËëçÁÂæä»»ÜᶶÒà³³Íà°±É߯°Âß°±Ÿà±²ºà²³Žà³Žµá¶·¹âž¹²äº»±ä¿¿¶æÃÃŽèÅÅ·èÈÉÂëÌÍÏìÏÏáîÔÔéïÖÖéðØØëñÜÜîòÝÝñóÞÞõóÞÞ÷òÜÜûñÛÛþñÙÙÿðÖÖüîÓÓðîÒÒæîÑÑåîÒÒâîÓÓäðÕÕúð××ÿðÙÙÿñÙÙÿðÙÙÿïÕÕÿîÒÒÿëÍÍøèÆDzåÀÀ…âž¹vÞ¯°mÚ©«dÖ¡£YҙœP͒•Eʋ;Ƅˆ5Â|‚.Ÿu|'Œov"ºiq¶dmµ_i³\f³Yc±Wa°V`±V`±U`±T_±T_°T^°T^°T^¯S]¯R]®R]¯Q\®PZ®OZ®NY­LW ¬KV ¬JV ¬IU «HS ªGSªFRªDQªDP©DO©CO©BNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšBNšBN©BNªDOªDOªDQªFRªFR «HS¬IU ¬JV ¬LW ®NY ®OZ®Q[¯R]°T^±U`°V`±Wa²Yc³Yc²Ze³Ze³Ze²[e²[e²[e²\f³\fŽ]gµ_i¶ck·fnºkrŒov"Ÿu|'Â{-ł‡4ȉŽ<̐“EЖ™MԝŸWØ€¥bÛ«¬lß²³uã»»æÁÁ—èÈÉËìÏÏûïÕÕÿðØØÿñÛÛÿñÜÜÿñÜÜÿñÛÛÿñÙÙýñØØëñØØäñØØïñÙÙûñÚÚÿñÛÛüñÜÜ÷ñÜÜóñÛÛíñÙÙèï××çïÔÔåíÒÒåëÎÎÖèÊËÄèÅŶæÃî俿¬ãº»­â·ž­ÞŽµ¡Þ°±©Ý®¯ŸÛ«¬€Úª«£Ùšª¥ÙŠš§ÙŠ§ Ú§š®Ûš©°Üš©ºÞ­®Œà±²Éá¹¹ÏåÁÁÝêÉÊèíÕÕüòÞÞÿöèèÿùïïÿûõõÿýúúÿýüüÿþýýÿþýýÿýûûÿýøøÿûôôÿøííÿõååÿñÛÛÿíÒÒùéÇÈé域Üá··Óß°±ÉÞ¬­Áܪ«µÛš©žÛ§š²Úš©°Ûª««Ûª«¢Ü­®ŠÞ®¯©Þ²²§àŽµ°âž¹ŽãŒŒ¯åÀÀ¶èÃ÷èÈÉŒìÌÍÎíÒÒàïÕÕéðØØìñÝÝñóßßõôàà÷ôááüôààþóßßÿòÝÝÿòÜÜÿñÚÚùñÙÙíñÙÙèñÙÙúñÚÚÿñÚÚÿñÚÚÿñÙÙÿïÕÕÿîÒÒÿëÍÍ÷èÆDzåÀÀ‡âž¹zÞ°±qÛ©«gס£]ӛSϔ—Jˎ‘BLjŒ9À…1Áy+œry$»nu ¹hp·dmµajµ^g³\f²[e²Ze²Ze²Ze²Ze²Zd²Zd²Zd³Yc²Yc±Wa±Wa±V`°T^¯R]¯Q\®OZ­NY ­LX¬KV ¬IU ¬IU «GS «FRªDQªDP©DO©CO©BNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBN©BN©COªDOªDQªFRªFR «HS ¬IU ¬KV ­LW®NY®PZ¯R]°T^°V`²Yc³Ze³\fŽ]gŽ_iµ`jµajµajµajµajµajµajµajµajµaj¶ck¶dmžgo¹iq»nu œry&Àw~*Ã~ƒ0Ƅˆ7ɋ?͑”HЗ™QԝŸZØ¥Šeܬ­nß²³xã»»‚æÁÁ—èÈÉËìÏÏüïÔÔÿðØØÿñÜÜÿòÝÝÿóÞÞÿóßßÿóßßýóßßøóßßÿóßßÿôßßþôßßüóßßõòÝÝóñÛÛêï××èîÔÔåìÏÏ×êÊËÄèÆǶæ²㟟±â¹º¬àµ¶šÞ°±ŠÝ­®ŸÛª¬–Ú§š˜Ø¥Š×¢€‰×¡£ŠÖ ¢ˆÖŸ¡“ÖŸ¡Ö¡¢™×¢€ Ù€¥ªÜš©¯Þ®¯¹áµµÊ䟟ÔèÈÉãíÓÓüòÝÝÿõææÿùîîÿûõõÿýúúÿýüüÿþýýÿþýýÿýûûÿüøøÿûóóÿøííÿôääÿðÚÚÿìÐÐøèÅÆä䌌ÔᎎÊÞ­®ÀÜš©±Ù€¥«Ø¢€¡Ø¡¢Ÿ×¡¢—×¢£”Ø¢€˜Ø€¥“ÙŠ§•ÚšªžÛ«¬–Ý®¯Þ²²©á¶·®ãŒŒ°æÀÀŽèÄĵèÊËÀìÏÏÖïÕÕíðÙÙðóÞÞôôááùôääúõååÿõååÿõääÿôããÿôââÿôááþôßßüóßßÿóÞÞÿñÜÜÿñÚÚÿïÖÖÿîÒÒÿëÍÍ÷èÆǺåÀÀŠâž¹|Þ±±tÛª«j×¢€bӛWД—M̎’Dȉ<ł‡5Â{-¿v|'Œpw#ºlsžhp·em¶ckµajµ_iµ_iµ_iµ_iµ_iµ`jµajµajµ`jµ_iŽ_iµ^g³\f²[e³Yc±Wa±V`°T^¯Q\®OZ®NY­LW ¬JV ¬IU «GS «FRªDQªDP©DO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©CO©DOªDQªFRªGS «HS ¬IU ¬KV ®NY®OZ¯Q\°T^±V`²Yc²\fµ^gµaj¶cl·fn·fnžhp ¹iq¹iq¹iq¹iq¹iqžhpžgp·fn·fn·fnžgo¹hp¹jr»nu!œqx%Ÿu|'Áz€-Ä4DžŠ:ʋD͑”LИšT՝Ÿ]Ø¥Šhܬ­qß²³zã»»ƒåÁÁ—èÈÉÇìÏÏûïÕÕÿðÙÙÿòÝÝÿóßßÿôââÿõããÿõääÿöååÿöååÿõääÿôããûôààøòÝÝïðØØìîÔÔãìÎÎÈèÉʶæÃð㟟²ãž¹®ßŽµšÝ¯°Û¬­žÛ§š˜×€ŠÖ¡£…Õž ‚Ó›yқzҙœwј›{ҙ›|ҙ›…Ó›œ‹ÔŸ“× ¡ Ù¥ŠŠÜ«¬µà³ŽÀ䌌ÍèÆÇàíÒÒûòÝÝÿõææÿùîîÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿøííÿôääÿïÚÚÿìÐÐ÷çÃÃß㺺Ëß°±ÁÜ©ª±Ù¥Š§×¡¢¡ÔŸœÓœž’Ó›‡ÓšœƒÓ›ŠÔœžƒÕœžƒÖ ¢…×¢€ØŠ§™Ú©«ŸÜ­®—Þ²²¥á¶·¯ãŒŒ¯å¶èÈÉÀìÎÎÖîÕÕéðÚÚóóÞÞõôããûöææÿöèèÿ÷èèÿ÷èèÿöèèÿöååÿõääÿôââÿóßßÿñÜÜÿðØØÿîÓÓÿëÍÍøèÆÇ·åÀÀŒâž¹Þ±±wÛª«n×¢€eԛ[ŘP͐“IɊŽ@ш8Ã|‚0Àw~+œry%Œnu!ºkr¹hp·fn·em¶dm¶dm·em·fn·fnžgpžhp¹hp¹hp¹hpžhp ·fn·fn·dmµajµ_i³\f²Ze±Wa±U`¯R]®Q[®NY­LW ¬KV ¬IU «HS «FR ªDQªDPªDO©BN©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©CO©DOªDPªFRªFR«HS ¬IU ¬LW ®NY®OZ®R]±T_±Wa³ZeŽ]gµaj·em!žhp"¹jr"ºlt#Œnu&Œov$œqx&œqx%œqx&œqx$Œpw#Œov"»nu!ºlt ºlsºkr¹jr¹jrºls»nu!Œov"œry'Àw~*Â{0ā†6ȇ‹=ʌE͒•Nј›Uԝ `Ø¥Šiܬ­sß²³{ã»»ƒåÁÁ“èÈÉÆìÏÏûïÕÕÿðÚÚÿóßßÿôââÿöååÿöææÿöèèÿöèèÿöææÿõããûóààöðÚÚïîÕÕæìÎÎÅèÇȵåÁÁ³ãŒŒ¬à¶·¢Þ°±£Û«¬•Ú§š”ס£‰ÕŸ¡‡Ó›Ò™œmϖ™uΔ—jΔ—fΓ•mΓ–mϔ—sϖ˜tі™~ә›ŠÔŸ–Ø¡¢¢Ú©ª®ß²³œãŒŒÉçÆÆÝíÒÒûñÝÝÿõææÿùîîÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿ÷ííÿôääÿïÚÚÿëÍÎöæÃÃÞãž¹ÈÞ¯°»Úš©¯×¡¢¡ÔŸ”ÓšœŠÑ—š€Ð–™{ϔ—vϔ—wϕ˜tƘuИ›vӛ‚ԝŸ‰Õ¡£Ø¥Š–Úšª—Ý­®Ÿß²³Šã»»ªåÀÀœèÆÇŸìÎÎÎîÕÕéñÛÛóôââøöææþöééÿ÷ëëÿ÷ëëÿ÷ëëÿ÷ééÿöææÿôããÿòßßÿðÙÙÿîÔÔÿëÎÎ÷èÆÇžåÀÀŒã¹º€Þ±±xÛª«o×¢€fԜž]ŘS͐“JɋCƄˆ:Ä~ƒ3Áy.Ÿt{(œqx#»nu ºkr¹iq¹hp¹hp¹iqºiqºkrºlt»nuŒnuŒov#Œpw#œqx$Œpw$Œov$Œnu%»nu%ºkr#¹iq"·fn¶clµ_i ³\f#³Yc°V`°T^¯Q\®OZ­LX¬KV ¬IU «HS «FRªDQªDOªDO©BNšBNšBN§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšBNšBN©BNªDOªDPªFRªFR «HS ¬IU ¬LW ®NY®OZ¯R]±U`²Xc²\fµ_i"·cl+žgp.ºkr1Œnu,Ÿry'Ÿu|)Àx-Á{*Á{*Á|‚+Á|‚.Á{)Áz€(Àx(Ÿu|'Ÿtz%Ÿry#Œov!Œnu!»nu!»nu!»nu!Œov#œqx%Ÿt{)Áy-Â|‚1Ł†9ȇ‹?ʍG͒•Oј›Xԝ aØ¥Šjܬ­sß²³{ã»»åÁÁ’èÈÉÊìÐÐúïÖÖÿñÛÛÿôááÿõååÿöççÿöèèÿöèèÿöææÿôââúñÝÝôð××ììÐÐÈèÇÈ»åÁÁŽã¹º°ß²³œÜ­®™Úšª“×¢€ÕŸ{ӚwИštΓ•l͑”j̐“cˎ’[ʌXʌaˍ‘_̎’g͏’pϓ–yЖ™ƒÓšœÖŸ¡Ù§©¬Þ°±¹ãº»ÇçÆÆÛëÑÒûñÜÜÿõææÿùîîÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿôääÿïÙÙÿëÌÍöæÂÂÛâ·žÅÝ­®žÙ¥§©ÖŸ¡œÓ™›‘Е˜„Ï“–z͐“q͏’i̎’d̎’f͐“k͑”eΓ•nŘkљœsԜž{ס£ŠÚŠš‰Û«¬ß²³Ÿãž¹ŽäÀÀµèÆÇÂìÏÏÌï××íñÝÝøôããþöèèÿ÷ëëÿ÷ëëÿ÷ëëÿ÷ééÿõææÿôââÿðÛÛÿïÖÖÿìÏÏøèÆǺåÀÀ‹ãž¹€Þ±±xÛª«p×¢€gԜž^ŘU͐“LʋDDžŠ=Ä5Â{€/¿v|*Ÿry&Œov"ºlt!ºkrºkrºkrºlt»nuŒov!œqx"Ÿtz$Ÿv}&Àx(Àz€)Á{+Á{*Á{*Á{-Àx+Ÿv},œry)Œpw&ºlt*ºiq/·fn+µaj&Ž]g%²Ze±Wa°T^¯Q\®OZ­LX¬KV ¬IU «GS «FRªDQªDO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDOªDQ«FR«HS ¬IU ¬KV®NY®OZ¯R]±U`²Yc³\f µ`j"·em%ºiq8»nu>Ÿry;¿w}=Áz€:Â~„2Á†0ш5Ņ‰3Ņ‰5Ņ‰2Ņ‰1ш0Á†0Ä-Â|+Áy*¿v|&Ÿtz&œqx%Œpw#Œov"Œov#œqx%œry'Ÿu|+Áy.Ã|‚3Ł†:ȇ‹AʍH͒•Pј›Xԝ aØ¥Šjܬ­sß²³y㹺‚å‘èÉÊÇìÐÐúð××ÿñÝÝÿôââÿõååÿöææÿöææÿõääÿòÞÞøðØØðìÑÑÕéÉÊœæÁÁŽã¹º¬ß²³ Ü¬­–Ù¥ŠÖ ¢zӛxЖ™oΒ•j̐“[ʌTɊŽSȈMȇ‹QȆŠQȆŠWȇ‹ZɉbʋŽh͏’rϓ–Ҙ›‹Õž šÙŠ§šÝ¯°·âº»ÅçÅÅÚëÐÑûñÜÜÿõææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿôääÿïÙÙÿëÌÍöåÂÂØᶷÂÜ­®ŽØ€¥ŠÕž —Ñ—š‹Ï“–͎‘sˌkʉcɉ]ɈŒ]ɊŽ[ʊŽUʌW̐“a͑”iϕ˜rҚœr՟¡yØ€¥‹Ú©ªÞ±±šâ·žŠä¿¿³èÇÈ¿ìÐÐÏðØØöòßßþöååÿ÷èèÿ÷êêÿ÷ééÿöççÿôããÿòÝÝÿð××ÿìÏÏöèÇȹåÁÁŒã¹º€Þ²²yÛª«pØ¢€hԜž_ŘV͐“NʋFDžŠ>Ä…8Â{0Àw~+Ÿsy'Œpw$»nu"»nu ºlt »nu!Œov!œqx#Ÿsy%¿w}%Áz€'Â|*À…,Á†.ăˆ/ш3ш3ш2ш3ā†2À…2Â}‚0Ày6Ÿtz;Œov>ºls<žgp/¶cl*µ_i"³Ze±Wa°T^¯Q\®OZ­LW¬KV¬IU ªGS ªFRªDQ©DO©CO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BN©CO©DOªDQªFR«GS ¬IU ¬KV ­LX®OZ®R]±T_²Xc³\f µ`j$·fn%¹jr6Œov@ŸtzFÁz€MÄSшUdž‹IɊ>ʍ‘=ʏ’;ː“;ː“<ʍ‘:ɍ‘:Ȋ7LjŒ7Ņ‰4À…0Â|‚/Áy*¿v|)Ÿtz'œry&œqx%œqx&Ÿry'Ÿtz(¿v|,Áy0Ã~ƒ5ł‡;ȈŒAˎ‘H͒•Pј›Yԝ `Ø¥Šiܬ­oß²³v㹺~å“èÈɹìÑÑúî××ÿñÜÜÿóßßÿôââÿôââÿòÞÞÿðÚÚûíÔÔèêËÌŒæÃñ亻«ß²³£Ûª«‹Ø¥Š„ԝ tј›sΔ—i͐“aʌRȈTDžŠLł‡LŁ†JÄ…IÄ…JŁ†Nł‡UDŽ‰XȇŒbʋŽm͐“z؇Ԝž•Ø¥Š€Ü®¯Žâ¹ºÂæÅÅØëÐÑûñÜÜÿõææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿïÙÙÿêÌÌõåÂÂÕභ¿Û¬­±×¢€¢Ô›“Ï”—…Í‘”yˌoɈŒcȆŠ[ƄˆVƃ‡Rƃ‡OƄˆPȆŠRȈQʌV̐“]Γ–kЗši՜žyØ¢€ŒÙšªŽÞ±±œâ·žšåÁÁžèÉÊœíÒÒÙðÙÙùóßßÿõääÿõååÿõååÿôââÿñÞÞÿðØØÿìÑÑøèÈɱåÁÁ‰âž¹~Þ²²wÛª«oØ€¥gԜž_ƘV͑”NʋGLJ‹?ā†9Â|‚2Àw~.Ÿtz(œqx&Œov#Œnu"Œnu"Œov"œqx#Ÿsy%¿v|'Áy*Â}ƒ,ā†/Ņ‰3LjŒ5Ȋ7ʍ‘:ʍ‘;ʏ’<ʎ’;ʍ‘=ȋ<ȈŒ<ņ‹DÁ†RÂ|‚L¿w~NŸry>»nu8¹hp3·cl/µ_i³Ze±Wa°T^¯Q\®NY­LW¬JV«HS ªGS ªFRªDPªDO©BNšBNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBNšBN©BNªDOªDPªFRªGS ¬IU ¬JV ­LW®OZ¯Q\°T^±Wa²\fµ`j ·fn)¹jr7Œov7Ÿt{HÂ{€Kā†Rdž‹eɋh̐”hΓ–Vϖ™GҙœEҙœEҙœEҘ›Cϖ™AΓ–Bː”=ʋ:ȈŒ8ш5Ä2Â|‚-Áy+¿v|*Ÿtz(œry'Ÿry'œry(Ÿt{*¿v}-Áz€1Ã~ƒ6ł‡;ȈŒBˎ‘H͒•Pј›W՝Ÿ_Ø¥ŠgÛ«¬nÞ²²u⹺zåÂŽèÇȺìÐÐ÷îÖÖÿðÙÙÿðÛÛÿðÛÛÿðØØÿîÕÕüêÍÎÖçÅŹ㜜¡ß³ŽÜ­®•Ø¥Š†ÕŸrј›g͑”^ˎ’RɉSDŽ‰MŁ†FÄEÂ|‚?Â{BÂ{€?Â{€DÂ|‚HÃ~ƒMŁ†SDŽ‰\ɉg̍‘uϔ—ƒÓ›’×£¥¢Ü®¯±á¹ºÀæÅÅØëÐÑûñÜÜÿõææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿïÙÙÿêÌÌöåÀÁÖàŽµœÚª¬®Ö¡£žÒ™œÎ“–ËŽ’tɉgDŽ‰\Ł†UÄ„PÄ~ƒJÃ~ƒFÄ~ƒIÄ„GŁ†HDŽ‰NɉPˎ’Y͑”]З™rԜžq×¢€ƒÚª«Þ²²™äº»­æÃÞéËÌÂíÓÓöðÚÚÿñÞÞÿóßßÿòÞÞÿñÜÜÿî××ÿìÑÑøéÉʳåÂÂ…âž¹|Þ²²wÛ«¬o×£¥gԝŸ^ƘV͑”OʌGLJ‹?ā†9Â|‚2Àw~.Ÿt{+Ÿry(Œpw$Œov$Œov#œqx%œry&Ÿu|'Áy+Â|‚-Ā…2Ƅˆ4ȉ7ʌ;̐”=Γ–?ϗšCљœDҙœDљœDЗšFΔ—K͒•Wʍ‘bȉhŅ‰`ÄTÁyHœryE»nu@¹hp3¶cl'µ_i%²Ze°V`°T^®Q[­NY¬LW¬IU «HS «FR ªDQªDOªDO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDOªDQªFR«HS ¬IU ­LW­NY®Q[°T^±Wa²[eµ_i$¶dm(¹iq0Œov=Ÿt{CÂ{€Jł‡XȈŒcˍ‘o͓–oҘ›}ӜŸwÕ ¢gÖ£€WÖ€ŠNÖ€ŠNÖ£€OÕ¡£KӜŸIљ›FΓ—D̏“Aɋ;LjŒ8ł‡6Ã|‚1Áy.¿v}+Ÿt{*Ÿsy(œry(Ÿsy)Ÿt{+Àw~/Áz€1Ã~ƒ6ł‡;ȇ‹BʍH͒•OИšUԝŸ^Ø€¥dÛ«¬lÞ±²râž¹yåÀÀ„èÆÆšêÍÎâíÑÑÿíÕÕÿíÕÕÿíÑÑÿêÌÍóèÆÆÂä¿¿ªàµ¶”Ü­®‡ÙŠ§yԝ pј›b͑”WʌRȈŒIł‡HÄFÂ{>Áy<Àw~;¿v|9¿v|8¿v|;Àw~AÂ{€EÃ~ƒMŁ†XȆŠcʌoΒ•ҙœÖ£¥žÛ¬®¯ážžŸæÄÄÖêÐÐûñÜÜÿôææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËôåÀÁÓàŽµºÛª«ªÕ ¢›Ñ˜šŒÍ‘”|ʌoȆŠbŁ†YÃ~ƒPÂ{HÁyCÁy@ÁyAÂ{€CÂ|‚DÄHł‡IȆŠKʌY͑”Zϖ˜oԜžxØ€¥‚Û¬­‡ßŽµ›ãœœ£çÄÄžêÌÍÛíÒÒúî××ÿðØØÿïØØÿîÕÕÿìÏÏöèÈȧæÀÀ€â¹ºyÞ±²sÛª«m×£¥dԝŸ]ŘU͑”NʌGLJ‹?ā†9Â|‚3Áy.Ÿt{+œry(œqx&Œpw$œqx$œqx&Ÿtz(¿v}+Áz€.Ä1ł‡4ȈŒ9ʋ<̑”@ϕ˜EҚœHԞ IÖ ¢LÕ£¥NÖ€¥LÖ€¥NÕ¡£Z՟¡dқtϕ˜qΑ”tɌgƆ‹aÄ„WÁyNœryB»nu6žhp.¶ck'Ž]g ³Yc±V`¯R]®OZ®NY¬KV¬IU «GS ªFRªDQ©DO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©CO©DOªDQªFR«GS ¬IU ¬KV®NY®OZ¯R]±V`²Zdµ^g ·cl$¹iq+»nu9Ÿt{HÂ{€PÇRȈŒ`ˏ“jŘpӛž€Ö¡£ØŠš’Úª«‹Û­¯ܯ°pܯ°^Û­¯VÚª«UØŠšUÖ¢€QԜŸKјšJ͑”Eʌ@ȈŒ=ш8Ä~ƒ3Â{€0Àw~-Ÿu|+Ÿtz)Ÿsy)Ÿtz*Ÿt{,Àw~/Áz€1Ã~ƒ6Ł†:ȇ‹AʌG͒•NЗ™TӝŸZ×£¥aÛ©«hÞ°±lâž¹tã¿¿ƒçÄĝèÈÈçéÊËÿéÊËÿèÉÊÿçÅÅàä¿¿šâž¹¢Ý¯°‹Ú§šwÖ¡£vҘ›e͒•TʌMȇ‹KŁ†GÂ|‚<Áy8¿v|7Ÿsy7œqx3œqx2œqx2œry6Ÿtz:Àw~AÂ{€HÄSDŽ‰^ʊŽm͑”{јš‹Ö¢€›Û¬®¬ážžŒæÄÄÒêÐÐûñÜÜÿôææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËôåÀÁÏߎµžÚª«©ÕŸ¡—јš‰Í“yɋkƃ‡]ÄTÂ{€IÀw~C¿v|=Ÿt{<Ÿt{8Ÿu|8Àw~9Áy>Ã|‚CŁ†CȆŠJʋN͑”VИš_՞ uÙŠ§€Ü­®—൶›ä¿¿£çÅÅÃêÊËîìÎÎþìÐÐÿìÏÏÿêËÌóçÆÆ äÀÀzâž¹uÞ±²oÛª¬j×£¥cԝŸ\Ж™T͐“MʋFLJ‹>ā†9Â|‚4Áy/Ÿu|,œry(œqx&œqx&œqx&œry'Ÿt{)Àw~,Â{0Ä3Ƅˆ8ȉŽ=ˏ“@Γ—EИšJԞ LÖ£¥PÙ©ªSÛª«VÛ­¯TÛ­¯aÛ­¯sÛ¬®|Ù©ªŠ×£¥†ÔŸ¡Ñ™›}͒•uʌmdž‹ZÄ„PÀw~PŸry;ºlt3·fn,µaj+³\f#²Yc±T_®R]®OZ­LW¬JV¬IU ªGSªFRªDPªDO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFRªFR¬IU ¬JV ­LW®OZ®R]±U`²Yc³\f µaj&žgp*ºlt7œryBÁyEĀ…QȈŒ`ˏ“oŘtԜŸ|×€Š…Úª«’ܯ°œàŽµ á¹ºŽâº»À⺻”Ṻd೎_ݯ°_Úª¬[Ø¥§W՟¡RҙœM͒•Iˎ’EȉŽ>Ƅˆ9Ä6Â{2Áy/¿v|,Ÿtz+Ÿtz*Ÿtz+Ÿt{,Àw~.Áz€1Ã~ƒ5ł‡:ȇ‹?ʌE͐“KЖ™SӜžXÖ¡£\Ú§©aݯ°h൶h㺻zä¿¿ŸåÂÂÔåÂÂÿåÀÀù䌜Æâ·ž§Ý°±”Ú©«ƒÖ¡£jҙœf͒•YʍJȇ‹Jā†CÂ|‚=Àw~6Ÿsy1Œpw1»nu.ºlt+ºlt-»nu-Œov1œqx6Ÿt{<ÁyDÃ~ƒNł‡[ɉi͑”xјšˆÕ¡£šÛ¬®«á·ž»æÃÄÑêÐÐúñÜÜÿôææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËõä¿ÀÐߎµžÚ©ªšÕž –Ñ–™…ÌŽ’vȉŽgŁ†ZÃ|‚OÁyEŸt{=œry:œqx6Œpw2œqx3œry1Ÿt{7Àw~7Â|‚?ā†CȆŠLʌR͑”\ҙœgÖ¡£yÚ§šݯ°–â·ž£äŸŸ¹çÃÃæçÆÆÿèÆÆÿçÆÆìç™匜wá·žnÝ°±kÚ©«e×¢€`ԜžYЖ™S͐“JʋFLJ‹>ā†8Â|‚2Áy0Ÿu|,Ÿsy)œqx'œqx&œqx'œry(Ÿu|+Áy-Â|‚1Ä…6DžŠ;ɋ?͑”Eϕ˜KҚPÕ¡£SÚŠ§WÛ«­[Þ±²^൶_Ṻo⺻¢áº»»à··šÞ³Ž™Û¬®›ØŠšŒÕ ¢†Ñ™›w͒•wʋiƄˆYÃ|‚UÀw~KœqxCºkr8·fn,µ_i&²[e±Wa°T^®Q[­NY¬LW¬IU «HS «FR ªDQ©DO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©CO©DOªDQ«FR«HS ¬IU ¬LW ­NY¯Q\°T^±Wa²\f!µ`j%·fn0ºkr5œqx@Àw~MÄ~ƒPdž‹aˌfΔ—nӜŸ×£¥‡Úª¬“ݲ³œâ¹ºšäœŸºæÂÂáçÄÄççÄÄÔåÂ¥土s⺻hÞ³ŽdÛ­®aÙŠ§]Ö¡£VҙœRΔ—M̎’FɋBƅ‰<Ä„7Â|‚3Áy0¿v|-Ÿt{+Ÿtz+Ÿtz+Ÿt{+Àw~-Áy0Ã|‚5Ł†9DžŠ>ʋB̐“IŘOәœQÖ¡£ZÙŠ§\Û¬­bÝ°±bßµ¶tâž¹†â¹ºÏá·žòÞµ¶Êݯ°Ú©«€Ö£¥lԛžfϕ˜Mˎ‘HȈŒGā†?Â{<¿v|4Ÿry.Œnu+ºls(¹iq&¹iq%¹iq'¹iq'ºlt*Œov0œry8Àw~AÂ|‚KŁ†XȈg͐“vјšˆÕ¡£™Û¬®šá·žºæÃÄÒêÐÐûñÜÜÿôææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËôä¿ÀÎß³ŽžÚ©ª¥Õž ”Ж™„ËŽ’tȈŒdŁ†WÂ{K¿v}Aœry9Œov2»nu/ºlt-ºlt-»nu.Œov0œry2¿v}6Â{9ā†Dȇ‹GʍQ͒•]ҙœbÖ¡£yÛš©ŠÝ°±Œàµ¶©ãº»Ú䌜û㟟ß仌šâ¹ºmßµ¶fÜ®¯dÚ§š^Ö¡£ZӜžUŘP͐“IɋCDžŠ=Ä…8Â|‚2Áy.Ÿu|+Ÿsy)œqx'œqx'Ÿry'Ÿsy)¿v|,Áy/Â|‚2Ł†8LJ‹=ʋC͑”IЖ™MӜžS×¢€YÚšª]Ý°±a߶·d㌜gå¿À~æÃõæÄÄÕæÅÅàåÁÁÌ䌜šà·žžÜ¯°–Úš©ÖŸ¡ˆÑ˜šv͑”rɋfŅ‰aÂ|‚QŸu|DŒov>¹iq6·cl*µ_i"²Zd±V`¯R]®OZ®NY¬KV ¬IU ªGS ªFRªDPªDO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFRªGS¬IU ¬KV ®NY®OZ¯R]±V`²Zdµ_i!·cl&¹iq5Œov;Ÿu|DÂ|‚Nƅ‰\ʋf͒•uҚzÖ¢€„Úª¬”Þ±²Ÿãº»€åÂÂŽçÈÈÙêËÌëëÎÏôëÎÏòêËÌãèÈȶæ€䌜n൶lܯ°gÚ§šaÖ¡£[ӛVϔ—O̐“IɋCDžŠ>Ä…9Â|‚4Áy0¿v|-Ÿt{+Ÿtz*Ÿtz+Ÿt{+¿v|,Áy0Â|‚2Ä„5ƅ‰;ɊŽ?ˎ’F͒•JјšM՞ QÖ£¥VÙ§šZÚª¬[Ü®¯eÝ®¯~Ü®¯ÑÚª¬ÈÚ§š‘Ö¢€uԜŸjϖ™^ˏ“LȉEł‡?Â{:¿v|2œqx.»nu+¹iq(žgp%·fn"·fn ·fn#žgp#¹iq'ºlt.œqx4¿v|=Â{€JŁ†UȈŒd̏“vјš‡Õ¡£—Û«¬šá·ž¹æÃÄÐêÐÐúñÜÜÿôææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËôä¿ÀÏß³ŽŽÚ©ª¥Ôž ’Ж™ƒËŽ‘sȈŒbÄ„SÂ{€GŸu|=œqx5»nu0ºkr+¹iq'ºiq(¹iq'ºls)»nu+Ÿry1¿v|4Â{7ā†BȈŒDˎ‘GΔ—\ӚbÖ¢€sÚš©Ü­®—ݱ²ÜÞ³ŽÝÞ³ŽÞ²³fݯ°`Úª¬]Ø¥§Z՟¡TәœQŘJ̎’FɊŽAƅ‰;Ä„6Â{1Àw~-Ÿt{+œry(œqx'œqx'Ÿry'Ÿtz*¿v|,Áy0Ã|‚4Ł†9ȇ‹>ʌE͑”KЖ™RԝŸW×£¥^Ûª¬bÞ°±iâž¹käÀÀrçÆƐéÉÊÈëÌÍãëÍÎñëÌÍìêÉÊéçÆÆÊ埿¬á·žœÝ¯°ÙŠ§‘ÕŸ¡‡Ñ˜šy̏“pȉdÇWÁyQŸsyHºlt?žgo.µaj%³\f"²Yc±T_¯Q\®NY­LW¬IU «HS «FRªDQªDO©CO©BNšBN§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªDQ«FR«HS ¬IU ­LW®NY¯Q\±T_²Yc³\f"µaj)žgo,ºlt1ŸsyFÁz€OÇ[ȉŽȇ”iјšy՟¡Ûš©ˆÝ°±›ãº»žæ°éÉÊÑìÐÐîîÔÔúî××üï××ÿîÔÔÿìÑÑøéÊËÉçÅŏ㟟xᶷoÜ®¯kÚ§©eÖ¡£`ӛXϕ˜R̐“KʋEDžŠ>ā†9Â|‚4Áy0¿v|-Ÿtz+Ÿsy)Ÿsy)Ÿtz)Ÿu|+Àw~.Â{€0Ä~ƒ4ш9ȈŒ;ʌ>͑”Dϖ™IӚM՞ PÖ¢€N×€ŠS×€ŠS×€ŠÖ£¥“ÕŸ¡Ò›žiϕ˜`ː”Cȉ;ł‡;Â|‚9¿v|.œqx+ºlt(¹iq%·fn"·dm¶ck¶ck·cl·fn ¹hp$ºls*Œov2Ÿt{;Â{€Hā†UȈŒc̏“tјš…Õ¡£˜Û¬®©á·ž¹æÃÄÑêÐÐúñÜÜÿôææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËóä¿ÀËß³ŽŽÚ©ªŠÔž ‘Ж™‚ËŽ‘pLjŒaÄRÁyFŸtz;Œov3ºlt,¹iq'žgp$·fn"žgo#žhp$¹jr%»nu+œqx-¿v|1Â{5ł‡>ȈŒBˏ“GŘRқžrÕ ¢ƒ×€ŠšÙš©»Ûª«Ûª«ZÙš©RØŠšWÕ¢€SԞ MјšK͒•Fˎ‘Bȉ>ш9Ä~ƒ3Â{€0Àw~,Ÿt{*œry'œqx&œqx&Ÿry'Ÿtz*¿v|,Áy0Ã|‚5Ł†:ȇ‹@ʌF͒•NЗ™SԝŸ[Ø€¥aÛ«¬hÞ²²mâž¹såÀÀèÇÇ êÍÎÚíÒÒóïÕÕÿï××þîÕÕüíÓÓôëÍÎîçÆÆÁä¿¿¬àµ¶¢Û­®Ø¥§€ÓŸxϕ˜sʍodž‹bÃ~ƒZÀw~JœqxAºkr7·fn/µ_i$²[e"±Wa°T^®PZ®NY¬KV¬IU «GS ªFRªDPªDO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFRªGS ¬IU ¬KV ®NY®PZ¯S]±Wa³Zeµ_i$·em.ºkr.œqx:Àw~KÄ~ƒXLjŒfˎ‘nŘv՝ŸƒÙŠ§…Ý­®Žâ·ž”åÁÁ éÈÉÁìÐÐéï××òðÛÛþñÝÝÿñÝÝÿðÛÛÿðØØÿíÒÒÿêÌÍØèÅŝ㟟á¶·uÝ®¯pÚšªiס£bӛ[ϕ˜T͐“LʋFDžŠ?ā†9Â|‚5Áy0¿v|,Ÿtz)œry(œry'œry(Ÿt{*¿v}*Áy-Â|‚1Ç4Ɔ‹9ȉŽ:ʎ‘@͒•@Ж™Cљ›EњœEӜŸCӜŸMњœfЗš„Í“–nˍ‘IȈŒ8ш8Â}ƒ2¿v}.œqx,ºlt'¹hp·em¶ckµ`jµ_iµ`jµaj·dmžgo"ºkr(Œov1Ÿt{;Â{€Gā†UȈŒc̏“rјš„Õ¡£–Û¬®§á·ž¹æÃÄÑêÐÐúñÜÜÿõææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËõåÀÁÌߎµ¶Ú©ª¢Õž ’Ж™ˎ‘nLjŒaÄQÁyEŸtz8Œov0ºkr*žhp#·fn!·dm·dm·em ·fn"¹iq#ºlt)œqx+¿v|.Â|‚2ł‡8ȈŒ;ˎ‘H͓–bљ›pӜŸ€ÕŸ¡t՟¡N՟¡K՟¡MӜŸKјšHΓ—F͐“Bʋ?LJ‹:ł‡5Ã|‚1Áy.¿v|+Ÿtz(œqx&œqx%œqx&œqx'Ÿsy(¿v|,Áy0Ã|‚5Ł†:ȇ‹AʍG͒•OИšU՝Ÿ]Ø¥ŠdÛª«lÞ²²q㹺{åÁÁŒèÇȳìÏÏéîÕÕÿðÙÙÿñÜÜÿñÝÝÿñÜÜþðÙÙöîÔÔõêÍÎÞçÆƱ䌜¢Þµ¶•Û«­ŒÖ¢€‚Ò™œy͒•rɋcшaÂ|‚TŸt{MŒnuA¹iq7¶cl&Ž]g&³Yc±U`®R]®OZ­LW¬JV «HS ªFRªDQªDO©CO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªDQ«FR«HS ¬IU ­LW®OZ®R]±U`²YcŽ]g!¶ck%¹hp.»nu9Ÿt{CÂ{Uш[ɋf͒•lҙœ}×¢€‡Û«­ßµ¶’ã¿¿™èÆÆŠìÏÏÑïÖÖðñÛÛÿóßßÿôââÿôââÿôààÿòÜÜÿðØØÿíÓÓÿëÌÍéèÅū域‡á¶·yÝ®¯sÚšªmס£eӛ]ϕ˜U͐“MʋFDžŠ?ā†9Â|‚4Áy0Ÿu|,Ÿsy)œqx'œqx'œqx'œry'Ÿt{(Àw~*Â{€-Ä1ł‡3dž‹6ȉŽ9ʌ9ˏ’;͑”?͒•?͒•:̐”@ˏ’^Ɋ[dž‹IĀ†7Â|‚2¿v|*œqx'ºlt"žhp!·dmµajŽ_iŽ]gŽ]gµ^gµ_i¶ck·fn ¹jr'Œov.Ÿt{;Â{€HŁ†SȈc͐“sјš†Õ¢€™Û¬®ªážž»æÄÄÑêÐÐúñÜÜÿõææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËõåÀÁÍߎµµÚ©ª€Õž “Ñ–™ƒËŽ’qȈŒ`ÄRÁyCŸtz8Œnu/¹iq(·fn"·dm¶ckµajµaj¶cl·fn¹iq ºlt&œqx&¿v|+Â|‚/ăˆ9LjŒ>ɍ‘X̑•sΓ–cϕ˜DЗš@Зš?ϔ˜B͓–@̐”>ʌ9ȈŒ7Ņ‰5À…0Â{.Àw~+Ÿt{'œry'œqx%Œov$Œov$œqx&œry(Ÿu|,Áy0Ã|‚5Ł†:ȇ‹AʍH͒•PИšV՝Ÿ^Ø¥ŠfÜ«¬nß²³t㹺}åÁÁšèÇÈÄìÏÏöîÕÕÿðÚÚÿòÞÞÿôááÿôââÿôááÿòÞÞûðÚÚôíÓÓéêËÌÇæÃÝ㺻‘Þ°±Úš©ˆÕŸ¡‚јš{̎’lȈŒhÄ„XÁyRœryBºlt<·fn.µaj*²\f#±Wa°T^®Q[®NY¬LW¬IU«GS ªFRªDPªDO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFR«GS ¬IU ¬KV ®NY®Q[°T^±Wa²\fµ`j&·fn*ºls5Ÿry=ÁyIÄ„ZȈŒd̎’sИšt՟¡ƒÚš©ŽÞ°±“㺻–æÄĜêÌÍÀíÕÕÒðÙÙßóßßõôââÿôããÿôããÿôââÿóßßÿñÛÛÿð××ÿíÒÒÿëËÌðçÄı域Œá¶·|Ý®¯uÚšªn×¢€fԛ]ŘU͐“LʋGDžŠ?Ä…9Â|‚2Àw~/Ÿt{+Ÿry'œqx&Œov$Œov$œqx%œry&Ÿt{(Àw~)Áz€,Ã}ƒ,Ā…0Ņ‰1Ɔ‹4LjŒ4ȈŒ6ȈŒ2dž‹4Ɔ‹>ăˆHÃ~„:Áz€.Ÿt{*Œpw%ºls!žgp·clµ_iŽ]g³\f²\f²\f³\fŽ_i¶ck·fn ¹jr'Œov.Ÿt{:Â{€EŁ†UȈb͑”sјš‡Ö¢€˜Û¬®ªážžŒæÅÅÐëÐÑûñÜÜÿõææÿùîîÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿïÙÙÿêËËõåÀÁÏߎµµÚª«§Õž “Ñ–™ËŽ’rȈŒ_Ä„PÁyEŸtz6»nu0¹iq'·fn!¶ckµ`jµ_iŽ_iµ_iµaj¶dm¹hp"ºlt!œqx)Ÿu|,Á{,Ā…4Ņ‰JLjŒXȊ?Ɍ7ʌ9ʌ9ɋ9Ȋ8LJŒ3Ņ‰2À…/Â}ƒ,Áz€*Ÿu|'œry&œqx$Œov"Œnu"Œnu"Œov$Ÿry'Ÿt{+Áy/Â|‚4Ł†:ȇ‹@ʍH͒•Oј›X՝Ÿ_Ø¥ŠgÜ«¬pß²³v㹺‚åÁÁžèÈÉÊëÎÎûïÔÔÿðÙÙÿòÞÞÿôááÿôââÿôääÿôããÿôááýñÝÝíðØØãíÑÑÒèÉÊ­ä¿¿™à¶·”Ü­®Ø¥§€ÔŸ~Γ•zʌiƆ‹aÃ|‚T¿v|MŒov<ºiq8·cl/µ^g&²Zd±V`¯R]®OZ­LX¬JV «HS ªFRªDQªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªDQªFR«HS ¬IU ­LW ®OZ®R]±V`³Ycµ^g!¶cl(¹iq2Œov7¿v|FÂ|‚Mƅ‰aʌlΔ—sԜžØ¥§‡Ü­®‘භ—ä¿¿œéÈɱíÑÑÒðØØØñÜÜßôààïôââüôââÿôââÿôââÿóßßÿòÝÝÿðÚÚÿïÖÖÿíÒÒÿêËÌðçÄĭ圜Žâ¶·}ݯ°wÙšªo×¢€fԛ^ŘU͐“LɋEDžŠ>Ä„8Â{€2Àw~-Ÿtz)œqx%Œov$»nu"»nu!»nu!Œov#œqx#Ÿsy%¿v|%Ày(Á{(Â~„,Â}ƒ*À….Ã~„)Â}ƒ)Â}‚&Áz€-Ÿv}*Ÿsz!»nu¹jr·fn¶ckŽ_i³\f³Ze²Zd³Yc²Ze³\fµ^gµaj·fn¹jr&Œov1Ÿu|:Â|‚Fł‡TɊŽe͑”wҙœ‰Ö£¥šÜ¯°«á¹ºŒæÅÅÖìÐÑúñÜÜÿõææÿùîîÿûõõÿýúúÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿ÷ììÿôääÿïÙÙÿêÌÌôåÀÁÒàŽµ»Ûª«©ÕŸ¡–јšƒÌ“qȉaā†TÁz€FŸtz;Œnu-¹iq'·fn ¶ckµ_iŽ]gŽ]gŽ]gµ_iµaj·clžgoºkrŒov"Ÿtz#Àx,Â|AÀ…5ā†+ш/ш2ш0ăˆ0Á†/Ã~„*Â|(Àw~(Ÿt{%œry$Œpw"»nu"»nu!ºlt »nu!Œnu#œqx&Ÿtz(Àw~-Â|‚2Ł†9ȇ‹?ʍG͒•Pј›Xԝ `Ø¥ŠiÜ«¬qß²³x㹺„åÁÁœèÈÉÊìÎÎúîÓÓÿðØØÿñÜÜÿòÞÞÿôááÿôââÿôããÿôããÿôââøôßßìðÛÛÞîÕÕÕìÎÎÃæÆƟ仌šß³Ž’Ú©«ŠÖ¡£‡Ñ˜šz͑”sȉŽbł‡\Áz€QŸsyCºlt>žgo4µaj&³\f"±Wa°T^¯Q\­NY¬LW ¬IU«GS ªFRªDPªDO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFR«GS¬IU ¬KV ®NY®Q[°T^±Wa²\fµaj$·fn)ºlt2œry>ÁyQÇZȉŽc͑”rјš~Ö¡£†Ú©«Œß²³•äŒœšæÆÆ£ìÎÎÌîÕÕÖðÚÚÙòÞÞÞóßßåôàà÷ôààûôßßñóßßþóÞÞÿòÝÝÿñÜÜÿðØØÿïÕÕÿíÒÒÿêËÌðçÄij䟟Žá¶·Þ¯°wÙšªo×¢€fӛ]ϕ˜T̐“LɋEƅ‰<Ä5Áz€0¿v|*Ÿry'Œov#ºlt!ºlsºkrºkrºlt »nuŒnuŒpw Ÿry!Ÿsy#Ÿu|$Ÿu|"Ÿu|$Ÿu|"œry$œqx!»nuºkržhp¶dmµajŽ]g²[e³Yc²Xc±Wa²Xc³Yc²[eµ^gµaj·fnºkr(œqx1¿v}:Ã|‚Fƃ‡XʊŽiΒ•xҙœˆ×£¥œÜ¯°®â¹º¿æÅÅÛìÐÑûñÜÜÿöççÿùïïÿûõõÿýúúÿýüüÿþýýÿþýýÿýûûÿüøøÿûóóÿ÷ììÿôääÿïÙÙÿëÎÏôåÁÁÏàŽµ·Ûª¬§Ö¡£—Иš†Í“tɊŽbŁ†UÂ{GŸt{<Œov-¹jr(·fnµajµ_i³\f²\f²[e²\fŽ]gµ_i¶ck·fn¹iqºltŒovœry'Ÿv}$Àx'Áz€%Áz€&Áz€(Ày&¿w~&Ÿt{$œry"œqx Œnu!ºltºlsºkr¹jrºkrºlt!Œov#œry'Àw~,Â|‚1ā†8ȇ‹>ʌE͒•Oј›Wԝ aØ¥Šiܬ­qß²³x㹺†åÁÁœèÇÈÍìÎÎûîÓÓÿïÖÖÿñÚÚÿñÜÜÿòÝÝÿóÞÞÿóßßøôßßñôààÿóààòóßßáòÝÝÚðØØÕíÓÓÕéÊËžæž㹺–Ü°±ŽÙŠ§…՝Ÿ~Řuˎ‘mdž‹aÃ~ƒUÀw~HŒpwA¹iq7¶dm+µ_i'²Ze ±V`¯R]®OZ­LX¬JV«HS ªFR ªDQªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBNšBN©CO©DOªDQ«FR«HS ¬JV ­LW®OZ¯R]±V`³Ycµ^g%·cl)ºiq2ŒovA¿v|MÃ|‚WƆ‹[ʌhϕ˜{՝Ÿ…ØŠ§ŒÝ¯°ãž¹šæ¡éË̺íÒÒÔðØØØñÜÜáòÞÞåòÞÞæòÜÜíñÜÜäñÚÚáñÙÙòñÙÙþñÙÙÿñÚÚÿñÙÙÿðØØÿïÕÕÿíÑÑÿêËÌðèÄķ域á¶·€Þ°±wÚšªoס£eԛ]ŘS̐“JɊŽBƄˆ;Ã~ƒ3Áy-Ÿtz'Œov$ºlt!¹jr¹hpžgpžgpžgp¹hp¹iq¹jrºkrºltºltºltºls¹jr¹iq·fn¶dmµajµ_i³\f²Zd±Wa°V` ±V` ±V` ±Wa ²Yc²[eµ^g¶ckžgoºlt*Ÿry2Àw~>Ä~ƒKDžŠXʍhϔ—{ӜžŠØŠ§œÝ¯°®âº»ÄçÆÆÚìÒÓûñÞÞÿöççÿùïïÿûõõÿýúúÿýüüÿþýýÿþýýÿýûûÿýøøÿûôôÿøííÿôääÿðÚÚÿëÏÐõæÃÃÜá·žºÜ¬­šÖ¢€—Ñ™œˆÍ‘”wʋeƃ‡TÂ|‚F¿v|<Œpw/ºkr(·fn¶ckµ_i³\f²Ze³Yc³Yc²Zd²\fŽ]gµ_i¶cl·fn¹iqºkr»nuŒovŒov!Œpw Œpw Œov!Œnu »nuºls¹iq¹iqžhpžgpžhp¹iqºkr»nu!œqx%¿v|)Â{€/Ä„5DžŠ<ʌE͒•LИšT՝Ÿ^Ø¥Šiܬ­rß²³zã»»„åÁÁ¡èÈÉÇìÎÎûîÓÓÿïÖÖÿñÙÙÿñÙÙÿñÚÚÿñÙÙÿñÙÙúñÙÙëñÚÚàñÜÜîòÝÝéòÞÞäòÝÝßðÚÚÙïÖÖØìÏÏËèÇǪ俿™àµ¶’Û«­ŒÖ¢€…Ò™œx͑”sɋmł‡ZÂ{€SŸtzH»nu;žgp5µaj,³\f"²Xc°T^¯Q\­NY¬LW¬IU «GS ªFRªDPªDO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BNªDOªDPªFRªGS ¬IU ¬KV ®NY®Q[°T^±Wa³\fµaj"·fn.ºlt9œryCÁz€Jł‡UȉŽd͑”pҙœÖ¢€„Û«­ŽÞµ¶–ã¿¿˜èÆÆšìÏÏÐïÕÕ×ðÙÙßñÜÜäñÜÜæñÛÛêñØØåïÖÖÕïÓÓßîÓÓåîÓÓóïÕÕþð××ÿðØØÿðÙÙÿï××ÿïÕÕÿíÒÒÿëËÌðèÅŮ忿Žâ·ž~ݯ°vÚšªnס£cӛ\Д—Q̎’HȉŽ>ł‡7Â|‚0¿v}*Ÿry%»nu!¹iqžgo·em·cl¶ck¶ck¶ck·cl·dm·dm¶dm·dm·cl¶ckµajµ_iŽ]g²\f³Yc±Wa±V` ±T_ °T^ °T^ ±T_ ±V` ²Xc²[eŽ_i¶cl¹hp »nu,Ÿsy2Áy?Ä…Nȇ‹_̎’jϕ˜|ԝŸŽÙ§š Ý°±²ã»ŒÂçÇÇÝìÓÔûñÞÞÿõççÿùïïÿûööÿýúúÿþüüÿþýýÿþýýÿýüüÿýùùÿûôôÿøîîÿôääÿðÚÚÿëÏÐöçÄÄâ⹺ÀÝ­®«×£¥›Ó›‹Ï”—zʌdDŽ‰WÄ~ƒHÀw~@Ÿry4ºlt*žgo"¶ckµ_i²\f³Yc±Wa±Wa±Wa²Xc³Yc²[eŽ]gµ_iµaj·dm·fnžgožhp¹hpžhpžgpžgo·fn·em·dm·cl·cl¶dm·fn¹hpºkrŒov#Ÿtz'Áy,Ä„1ƅ‰9ʋA͑”KЗ™T՝Ÿ]Ø¥Šeܬ­qß²³zã»»†åÁÁ£èÈÉÈìÎÎûîÓÓÿïÖÖÿðØØÿñÙÙÿðØØÿðÖÖÿïÔÔüîÓÓìîÓÓâïÔÔÚðÖÖ×ñÙÙèñÛÛçòÜÜåñÜÜßðØØÛíÓÓÖêÌÍÅçÃá㺻šÝ°±Ùš©ˆÕŸ¡~Řyˎ’tLjŒ`Ä~ƒ\Àw~Nœqx=¹jr/¶dm+Ž_i%²Ze ±V`¯R]®OZ­LX¬JV«HS ªFR ªDQªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQ«FR«HS ¬IU ­LW®OZ¯R]±V`³Ycµ^g ·dm)ºiq4Œov:¿v}EÃ~ƒYdž‹aʍnϕ˜p՞ ~ÙŠ§‡Ý°±”⺻›æÃßéËÌ¿íÓÓÕðØØÚñÛÛÜñÛÛçñÙÙçðÖÖíïÓÓÖíÐÐÑìÍÍÙìÍÍáìÍÍçíÐÐðîÓÓþðÖÖÿðØØÿñÙÙÿðØØÿïÕÕÿíÒÒÿëÌÍðèÆƬ忿‹â·žÞ¯°sÚšªmÖ¡£`ӚWϔ—Mˎ‘FȈŒ;Ā†5Áz€-Ÿtz&Œov"¹jr·fn¶clµ`jµ_iŽ]gŽ]g³\f³\f³\f³\f³\f³\f²\f³Ze³Yc±Wa°V` ±U` °T^ ¯R] ¯R] ¯R] ¯R] °T^ ±V` ²Yc²\fµ_i¶dmºiq%Œov,Ÿu|7Â|‚Ał‡PɊŽ_͐“mИ›Õ ¢ŽÚšª¡Þ²²ŽäœŸËèÉÉæîÔÔûóààÿöèèÿúññÿüööÿýúúÿþüüÿþýýÿþýýÿýüüÿýùùÿûôôÿùîîÿôååÿñÜÜÿìÐÑöçÆÆß㺻ÉÝ°±®ØŠ§œÔœžŽÐ•˜}̍‘lȈŒ]ā†JÁz€BŸtz2»nu-¹iq$·clŽ_i²\f²Yc±Wa±V` ±U`±U` ±V` ±Wa ²Xc²Zd²\f³\fµ^gŽ_iµ_iµ`jµ`jµ_iµ_iŽ_iµ_iµ_iŽ_iµ_iµaj¶dm¹hpºltœqx$¿v})Â|‚/ш7ɊŽ>͑”HЖ™QԝŸZØ¥ŠeÛ¬­oß²³wã»»‚æžèÈÉÈìÎÎúîÔÔÿï××ÿñÙÙÿñÙÙÿð××ÿïÕÕÿîÒÒúíÏÏíìÍÍåìÍÍãìÎÎÙîÐÐÌïÔÔÝð××êñÚÚæñÜÜßðÙÙÝïÖÖÓìÐÐÒéÈɮ忿šá¶·‘Û­®×£¥ˆÒš€Í“–pɋił‡_Â{€VŸtzJ»nu@žgp.µaj-³\f"²Xc°T^¯Q\­NY¬LW¬IU «GS ªFRªDPªDO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDOªFRªGS ¬IU ¬KV®NY®Q[°T^±Wa³\f µaj$·fn*ºlt=ŸsyFÁz€Nł‡WȉŽj͑”uҙœ{Ö¢€†Û«­áµ¶•ä¿¿œèÇÇ­ìÐÐÒïÖÖ×ðÙÙÛñÛÛáñÙÙæðÖÖìîÒÒáìÍÍÐëÉÉ×éÇÇÚéÆÆßêÇÇáëÊÊäìÎÎíîÒÒýðÖÖÿñÙÙÿñÚÚÿðÙÙÿð××ÿíÓÓÿìÎÎíèÆƪ忿‹â·žzÞ°±pÚ§©gÖ¡£]ҙœSΒ•JʌAƅ‰7Ã~ƒ1Àw~*œqx$ºls·fn¶ckµ_i³\f²Zd²Yc±Wa±Wa±Wa±Wa °V` ±V`±V`±T_ °T^ ¯S] ®R] ¯Q\ ®Q[®PZ®PZ®Q[®R] °T^ ±V` ²Yc³\fµaj·fnºls&œqx/Àw~7Ä~ƒHDŽ‰SʌaΓ•sҚœ×¢€’Úª«¥ßŽµ¶ä¿¿ÍêÊËæîÖÖýóááÿ÷êêÿúññÿü÷÷ÿýúúÿþýýÿþýýÿþýýÿþüüÿýúúÿûõõÿùîîÿõççÿòÞÞÿíÓÓøèÈÈç䌜ÏÞ²²±Úšª£ÕŸ¡Ð—šÍ‘”mɊŽ\ł‡NÂ|‚D¿v|7Œov+¹jr#·fnµ`j³\f²Yc°V`°T^ ¯S] ¯R] ¯R] ¯S] °T^ ±T_ ±V` ±Wa±Wa²Yc²Yc³Yc³Yc³Yc³Yc³Yc³Yc²Ze²\fŽ]gµ`j¶dm¹iq»nu Ÿtz%Áz€+Ç4ȈŒ9̏“CŘMԜžV×€ŠaÛ¬­kß³Žv亻€æÃÛèÉÊËìÏÏúïÕÕÿðØØÿñÚÚÿñÙÙÿðØØÿïÔÔÿîÐÐøëÌÌéëÉÉåéÆÆâéÆÆÛéÇÇÕëÊÊÐíÎÎÑïÓÓæð××æñÚÚáñÛÛßðØØÙíÔÔÒìÎÎÄçÅŠ㺻œÞ°±“Úš©ŠÕŸ¡Ð–™{ˎ’mLjŒgÄ~ƒ[Àw~KœqxG¹jr7¶dm+Ž_i%²Ze±V`¯R]®OZ­LX¬JV «HS ªFRªDQ©DO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQ«FR«HS ¬IU ­LW®OZ®R]±V`³Ycµ^g$·cl(ºiq3ŒovA¿v}DÃ~ƒWdž‹bʍiŘt՞ ÙŠ§ŠÝ°±–㺻žçÄÄ¡êÌÍÇíÔÔÖðØØÚñÛÛÞñÚÚâð××êîÓÓéìÍÍÑêÇÇÒèÃÃÖçÁÁÝç¿¿ÝèÁÁÝéÄÄßêÈÈáìÎÎëïÓÓýð××ÿñÛÛÿòÜÜÿñÛÛÿðØØÿíÕÕÿìÏÏðèÇǪ忿ˆâ·žwݯ°nÚ§šdÕ ¢XјšO͑”GɊŽ>ł‡5Â{€+Ÿtz$»nužgp¶ckŽ]g²Zd±Wa±U`°T^ ¯S] ¯R] ®R] ¯Q\ ¯Q\ ®Q[ ®PZ ®OZ®OZ®NY­NY®NY®NY®NY®OZ¯Q\¯S] ±V` ³YcŽ]g¶ck¹hp »nu(Ÿtz1Â{€=Ł†HȇŒV̐“cϕ˜vԜžˆØ€¥™Ü­®§á¶·ºåÃÃÚêÍÎîïÙÙÿóááÿ÷ëëÿúòòÿü÷÷ÿýúúÿþýýÿþýýÿþýýÿþüüÿýúúÿüõõÿùññÿ÷ééÿòßßÿîÔÔüéÉÊêã¿¿ÕàŽµŒÛ«¬£Ø¢€•Ó›ƒÎ“–pˎ‘_ȆŠRÄEÁy;œry0ºlt%žgoµaj³\f²Yc±V` °T^ ®R] ¯Q\ ®PZ®PZ®PZ ¯Q\ ¯Q\ ®R] ¯R] ¯S] °T^ °T^ °T^ °T^ °T^ ±T_ ±V` ±Wa²Yc³\fµ_i¶dm¹iqŒov!¿v}'Ä0dž‹6ʌ>Δ—JӜžQ×¢€]Ú¬­hÞ³³q亻~æÃÔéÊËÉìÑÑúï××ÿðÚÚÿòÜÜÿñÜÜÿñÙÙÿðÖÖÿîÑÑ÷ëËËæéÆÆâèÂÂâçÀÀáç¿¿áèÁÁÙèÄÄÖëÊÊÎíÏÏØïÔÔèñØØåñÚÚàñÚÚÛïÖÖ×ìÑÑÓèÉʱäÀÀ˜á¶·˜Û­®×£¥‰Ò™œÍ“–yɋgł‡cÂ{€RŸtzC»nu<žgp2µaj-³\f#²Xc°T^¯Q\­NY¬KV¬IU ªGS ªFR ªDPªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªDQªFR¬IU ¬KV®NY®PZ°T^±Wa²\f!µaj'·fn.ºlt4œry@ÁyUł‡[ȉŽb͑”nҙœÖ¢€ŠÛ«­’ᵶ–å¿¿šèÈÈ®ìÐÐÔïÖÖÛðÙÙßñÚÚáðØØåïÔÔëìÎÎÝêÈÈÏèÂÂÖ朜Ù庺Þ庺Üå»»Ü矟ÜéÄÄÜëÉÉÝíÐÐèðÖÖýñÛÛÿóÞÞÿôßßÿòÞÞÿðÛÛÿîÖÖÿìÏÏëèÇÇšä¿¿…â·žqÝ®¯gÙŠ§^՞ Rі™Lˎ‘?dž‹5Ä-¿v|)Œov¹iq¶ckŽ]g²Yc±U` ¯R] ¯Q\ ®OZ ®NY ­NY®NY®NY­LX­LW­LW¬LW¬LW¬LW¬LW­LW®NY®NY®Q[¯S] °V` ³Zeµ_i·emºkr#œqx+Àw~2Ã~ƒ=DŽ‰Mʋ[͑”mј›|Ö ¢ŒÙ§©žÞ±±¬ã»»ÁèÅÅÚìÐÐóïÚÚÿôääÿ÷ííÿúóóÿü÷÷ÿýûûÿþýýÿþýýÿþýýÿþüüÿýúúÿü÷÷ÿúññÿ÷ëëÿóááÿïØØþêÌÍîæÂÂßᶷ»Ý­®©Ù€¥˜Ôž ‡Ð–˜v͐“gɉWł‡KÂ|‚;Ÿu|1Œov*¹iq"·clµ^g²Zd°V`°T^ ¯Q\ ®OZ®NY®NY®NY®NY®NY­NY®NY®NY ®OZ®OZ®OZ®OZ ®Q[ ¯Q\ ¯R] °T^ ±Wa³Zeµ_i·fnºlsœry%Áy)ł‡1ȉŽ:͑”EҙœM×¢€XÚ©«`Þ±²l㺻|æÃÓéÊËœíÑÑûðØØÿðÛÛÿóßßÿôßßÿòÝÝÿñÙÙÿïÓÓöíÍÍâêÇÇáèÁÁà圜à庺à庺áå»»ß矟ÒèÄÄÓëÊÊÎîÑÑãðÖÖåñÙÙáñÚÚÞðØØÛîÕÕÔìÎÎÉçÅť㻌›Þ±²”Úš©‹ÕŸ¡ƒÐ–™zˎ’mLjŒ^Ã~ƒTÀw~MŒpwE¹iq7·dm3µ_i%²Zd#±V`¯R]®OZ­LW¬IU«HS «FR ªDQ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BNªDOªDPªFR«GS ¬IU ­LW®NY¯Q\±U`²YcŽ]g"¶cl(¹iq.Œov:¿v|GÃ|‚TƆ‹`ʌhϕ˜v՞ †ÙŠ§‰Ý°±’㺻—çÅÅ€êÌÍÈíÔÔÔðØØÝñÚÚÞñÙÙæïÖÖåîÐÐæëÊÊÏéÄÄÔ朜×å¹¹Ü䶶ÝãµµÜä··Ü庺ÜçÀÀÛêÆÆÚìÍÍÜïÔÔêñÛÛüóßßÿôââÿôââÿóßßÿñÜÜÿîÖÖÿìÏÏåèÆÆŠä¿¿|൶nÛ¬­a×€ŠXқžN͒•Dɋ;ш1Áy)œqx"¹iq·clŽ]g²Xc°T^ ¯Q\ ®OZ ®NY­LW¬KV¬JV¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬KV­LW­NY®Q[°T^ ±Wa³\fµajžgp»nu%Ÿtz,Â{€5Ł†CȇŒN̐“`ϔ—pԛ{Ø£€ŽÛ«¬Ÿà³Ž·äŸŸÃéÇÈåíÒÒùòÝÝÿöææÿùîîÿûôôÿýøøÿýûûÿþýýÿþýýÿþýýÿþüüÿýúúÿü÷÷ÿúòòÿ÷ììÿóããÿðÚÚÿìÐÐóèÄÄÞã»»Âß±²³Ùš©˜Ö ¢‡Ó›xΓ–jˍ‘XȆŠLÄAÁy5Ÿry)ºls"·fnµ_i²[e±Wa¯S] ®Q[®NY­LX­LW¬KV¬KV¬KV¬KV¬KV¬KV¬LW¬LW­LW­LX®NY®NY ®PZ ¯R] ±V`²Zeµ_i·fn»nuŸt{#Â}ƒ,Ɔ‹5ˎ‘>і™F՞ TÙŠ§\Ý°±f⹺ræÀÀ‘éÉÊÀíÑÑùðÙÙÿòÞÞÿôââÿõããÿôââÿòÞÞÿñÙÙ÷îÑÑãëÊÊÜéÄÄß朜ßä¹¹à䶶àäµµàä··à庺×è¿¿ÑêÆÆÌìÍÍÔîÓÓæð××âñÚÚßñÚÚÝï××ÕìÑÑÑèÉÊ·äÁÁžà¶·–Ü­®×£¥ƒÒ™œ€Í’•vɋdł‡`Â{€OŸsyGºltCžgo4µaj'³\f"±Wa°T^®Q[®NY¬KV¬IU ªGS ªFRªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQªFR«HS ¬JV­LX®OZ¯S]±Wa²[eµ_i&·fn.ºls7œryEÁyLĀ†WȉŽa͑”vљ›zÖ¢€ˆÛ«­“ᵶ–å¿¿èÈÈŽìÐÐÔïÖÖØðÙÙÜñÚÚãðØØæïÓÓêìÍÍÖêÆÆÍè¿¿Ò庺ÖäµµÚâ³³Üâ²²Ú㎎Ûä··Û朜ÛéÄÄÜëËËßîÓÓâñÛÛìôááþõååÿöææÿõååÿóááÿñÜÜÿîÖÖÿêÍÎàçÄę㺻zÞ±²eÚ©ªZÕ ¢SїšGʎ‘:ƅ‰5Â|‚*Ÿsy$ºls¶dmŽ]g²Xc°T^ ®PZ ®NY¬KV¬IU¬IU«HS«HS«GSªGSªGS«GS«GS«HS¬IU¬IU¬LW®NY®Q[°T^ ²YcŽ]g·cl¹iqŒpw%Àw~2Ã~ƒ8DŽ‰HʍPΓ–bҙ›t֟¡‚Ù§©Þ°±©â·ž·åÂÂÑëÌÍéî××ýóààÿ÷ééÿúïïÿûõõÿýøøÿýûûÿýüüÿþüüÿþüüÿýüüÿýúúÿü÷÷ÿûóóÿøîîÿöççÿñÝÝÿîÔÔøèÉÊàäÀÀÌ൶²Ü­®Ù¥§‹Õž €Ð—šo͑”`ʊŽQł‡@Â|‚6Ÿt{.Œnu%žhpµaj³\f±Wa°T^ ®PZ®NY­LW¬JV¬IU¬IU¬IU«HS«HS¬IU¬IU¬IU¬IU¬JV¬KV­LX®OZ ®R] ±V`²Zeµ`jžgpŒov!¿w~(Á†,ȉ7͒•BӛžK×€ŠTÛ¬­^൶lä¿¿èÇdzìÑÑõðØØÿòÞÞÿõääÿöææÿöååÿôããÿòßßùñØØæîÐÐâëÈÈáèÁÁß庺ß䶶Þã³³ßâ²²ß㎎Üä··Þæ»»ÕèÂÂÏëÉÉÉîÐÐàðÕÕèñÙÙàñÚÚÞðØØØîÕÕÕìÎÎÌçÅŢ㻌˜Þ±²’Ùš©‰Õž …Ñ–™{ˎ‘mDžŠhÃ~ƒ]¿v}NŒovFºiq5·cl*µ^g"³Yc±U`®R]®OZ­LW¬IU«GS ªFRªDPªDO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªFRªGS ¬IU ¬KV­NY¯Q\°T^²Yc³\f#¶ck&¹hp2Œnu@Ÿu|IÂ|‚Yƅ‰`ʌmŘrԝŸ…ÙŠ§‹Ý°±”㺻žçÄÄ¥êÌÍÈíÔÔÕðØØÙñÚÚÞñÙÙâðÖÖéîÐÐåêÊÊÎèÃÃÑå»»Ö䶶Øâ²²Úâ±±Úâ°°Ûâ²²Ú㶶Úå»»ÚèÃÃÞëËËâîÓÓäñÛÛðôââÿöææÿ÷ééÿ÷ééÿöææÿóááÿñÚÚÿíÒÒÿèÉÊâäÀÀšá¶·lÜ­®_×€ŠVҚœG͑”>ȈŒ4À…-Ÿu|#ºlt·fnµ^g²Xc¯S] ®OZ ­LW¬JV¬IU«GSªFR«FRªFRªFRªFRªFR«FRªGS«HS¬IU¬KV®NY¯Q\ ±T_ ²Zdµ_i·fnºltŸtz)Â{€3ł‡<ɊŽH͐“YЗ™f՞ vÙ€¥„ܬ­–àŽµ±äŸŸŒèÆÇÞìÐÐïñÛÛÿôããÿ÷ëëÿúññÿüõõÿüøøÿýúúÿýûûÿýûûÿýûûÿýúúÿýúúÿü÷÷ÿûôôÿùïïÿ÷ééÿóááÿðØØüëÎÎëçÃÃÖã»»Œà²³¬Ûª«”Ø£€„Ó›uϕ˜c̎’Tȇ‹GÄ„8Áy1œqx&¹jr·dmŽ]g²Yc°T^ ®PZ ®NY¬KV¬IU«HS«GSªGSªFRªFRªFRªFRªGS«HS¬IU¬IU¬KV®NY¯Q\ ±U`³Zeµaj¹iqŒpw!Áz€'ш0ʌ7ϔ˜CԞ OÙš©YÝ°±h㺻}çÄÄ­ìÎÎñïÖÖÿòÝÝÿõääÿöèèÿöééÿ÷èèÿõååÿóßßüñØØêîÐÐåëÇÇãèÀÀÞå¹¹ß㎎Ýâ±±Þâ°°Ýâ±±Ý㎎ÞäžžÔ矟ÑéÅÅÊëÌÌÑîÒÒèð××ãñÚÚÞñÚÚÜï××ØìÑÑÐèÉʶåÁÁà¶·˜Û­®Ö£¥„Ò™œ€Í‘”yȉŽmÇbÁyRœryEºlt:·fn.µ`j(²[e ±Wa¯S]®OZ­LX¬JV«HS ªFRªDQ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BNªDOªDQªFR«HS ¬IU­LW®OZ¯R]±V`²Ze!Ž_i(·em+ºkr=œqxBÁyFÀ…VȈŒd͐“wјšƒÕ¡£†Úª¬“ßµ¶›ä¿¿žéÈȶìÐÐÔïÖÖØðÚÚÝñÛÛâðØØåîÓÓêëÍÍØéÆÆÌ柟ÒåžžÖ⎎Ùâ±±Øᯯ×ᯯÖâ²²Ø㶶Øå»»ßèÃÃâëËËâîÓÓéñÜÜýôããÿ÷èèÿ÷ëëÿ÷ëëÿ÷ééÿõååÿòÝÝÿïÖÖÿëÍÎÿæÃÃÕ㺻‹Ý°±hØŠšUԜŸLΓ–AȊ3Á†.¿w~%»nu·fnµ_i²Xc¯S] ®OZ ¬LW¬IU«GSªFRªFRªDQªDQªDQªDQªDQªFR«FR«GS¬IU¬KV®NY¯Q\ ±V` ²[eµaj¹hpŒov!¿v})Ã~ƒ2LJ‹?ˎ’Lϔ—]ԛjØ¢€{Ûª«†ß±² ãºº³æÃÃÐëËÌÝîÕÕõóÞÞÿöççÿøííÿúòòÿüõõÿü÷÷ÿüøøÿýøøÿýøøÿýøøÿüøøÿü÷÷ÿü÷÷ÿûôôÿùññÿ÷ëëÿõååÿðÜÜÿíÓÓðéÉÊáäÀÀÎâ·ž¶Þ¯¯œÚ§©×¡£vҙœa͒•SʋHƄˆ?Â{2Ÿtz+ºlt#·fnŽ_i³Yc°T^ ®Q[ ®NY¬KV¬IU«GSªFRªFRªFRªFRªFRªFRªFR«FR«GS¬IU¬JV®NY®Q[ ±U` ³Zeµajºiqœqx#Á{*Ņ‰1ˍ‘8їšDÕ ¢MÚª¬]ßµ¶yä¿¿§èÇÇ÷ìÑÑÿðØØÿóààÿöææÿ÷êêÿ÷ëëÿ÷êêÿöææÿôááÿñÙÙöîÐÐäëÈÈãèÀÀáå¹¹Û㎎Ûâ±±ÜᯯÝᯯÝâ±±ÜãµµÜ庺ÓèÁÁÏëÈÈËîÐÐÞðÕÕåñÙÙäñÛÛÞðØØ×îÕÕÒëÍÎÈçÅŢ㻌›Ý°±—Ù§šÕž ‚Ï•˜yʌpƅ‰iÂ|‚XŸu|IŒnuH¹hp9¶ck/Ž]g%²Yc°T^¯Q\­NY¬LW¬IU ªGS ªFRªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQªFR ¬IU ¬KV®NY®PZ°T^±Wa³\f!µaj&žgo5»nuCŸtzEÂ{€UŅ‰^ɋnΒ•{ԛžƒ×¥§Ý¯°˜âº»œçÃãêÌÍÃíÔÔÕðØØÛñÛÛáñÙÙãðÖÖéîÐÐäëÊÊÍèÂÂÏå»»Ñ䶶Õâ²²×ᯯ×á®®Øᯯ×â²²Öä··×朜ßéÄÄáìÍÍãïÖÖöòÝÝÿõääÿ÷ééÿ÷ëëÿ÷ëëÿ÷ééÿõååÿòÞÞÿï××ÿìÎÎÿçÅÅÿ㺻ØÞ±²„Ùš©YԞ Mϔ˜Cɋ9ā‡-Àx(Œnu·fnµ_i²Xc¯R] ®NY ¬KV¬IUªGSªFRªDQªDPªDOªDOªDOªDPªDQªFRªGS¬IU¬KV­NY®R] °V`³\f¶cl¹jrœqx"Áy.ł‡8ɊŽB͑”Pҙœ[Ö¡£nÚšªyÞ°°˜â·ž¹äÀÀÈèÉÊ×íÒÒìñÛÛþôããÿ÷êêÿùïïÿúòòÿûôôÿüõõÿüõõÿüõõÿûôôÿûôôÿüõõÿüõõÿüõõÿûôôÿúññÿøîîÿöèèÿóááÿðØØüìÏÏåèÆÇ×䟟Ç൶¡Ý­®ÙŠ§‡ÔŸ¡tЖ™W̏“PȈŒ=À…4¿v})Œov!žhpµaj²Ze±U` ¯Q\ ®NY¬JV«HSªGSªFRªDQªDQªDPªDPªDQªDQªFRªFR«HS¬IU­LW®PZ ±T_ ³Zeµaj¹iqŸry$Â}‚*ƅ‰3ˏ’;њœGÖ£¥SÛ«­t൶£ä¿¿çèÇÈÿìÑÑÿðÚÚÿóááÿöççÿ÷ëëÿ÷ëëÿ÷ëëÿöèèÿôââÿñÚÚÿîÓÓìëÊÊâèÁÁâ庺Ú㎎Ûâ±±Ùá®®Ùá®®Ûá±±Ûâ³³Úä··Õ朜ÑêÅÅÌëÌÌÒîÓÓåðØØäñÛÛáðÙÙÝï××ÙìÑÑÐèÈȱåÀÀžàµ¶šÚª¬Ö¢€‡Ñ˜š€Í“xȈŒfÀ…[ÁyTœqx@ºkr;·em,Ž_i(²Ze ±V`¯R]®OZ­LW¬IU «HS ªFRªDQªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªFRªGS ¬IU¬LW­NY¯Q\±T_²Yc!Ž]g(·cl+ºiq0ŒovD¿v}JÃ~ƒ\LjŒdˏ“sЖ™x՟¡ˆÚª«’Þ³Ž–土£çÇdzìÐÐÓïÖÖÙðÚÚàñÛÛãñÙÙçïÔÔêìÍÍÖêÆÆÍç¿¿ÑåžžÓã³³Öá°°Õá®®Õá®®Öá°°Õâ³³Õä¹¹Ùç¿¿ÞêÇÇâíÐÐêð××þóßßÿõååÿ÷ééÿ÷ëëÿ÷ëëÿöèèÿõããÿñÜÜÿîÕÕÿìÎÎÿæÄÄÿ㺻ôݱ²ÐÙš©‚Ôž Sϔ˜>ɋ5ā‡-Ày%Œov·fnŽ_i²Xc¯R] ®NY¬KV«HSªFRªFRªDQªDO©DO©DO©DOªDOªDQªFRªFR¬IU¬KV®NY¯R] ±WaŽ]g·emºltŸtz'Â}ƒ/Ɔ‹8ʎ‘BŘYԞ gÙŠ§†Ü­®Œá¶·¡å¿¿ÇèÆÇÏìÐÐæðØØûóßßÿöççÿøììÿúññÿúòòÿúóóÿúòòÿúññÿúððÿùððÿùððÿúððÿúññÿúòòÿúóóÿúññÿùïïÿ÷ëëÿõååÿñÞÞÿïÖÖ÷ëÎÎÛçÄÄÑ㌌Äß²³ŸÚ«¬š×£¥xӛž[Γ—Uɋ@ш9Áy+œqx&ºiq¶ck²\f±V`¯Q\ ®NY¬JV«HSªFRªFRªDQªDPªDOªDOªDOªDPªDQªFR«GS¬IU­LW®PZ ±T_ ³Ze¶ck¹iqœry!Â}‚(ƅ‰3ˏ’:њœFÖ£¥hÛ«­Šàµ¶æä¿¿øèÇÈÿìÑÑÿðØØÿòÞÞÿõååÿ÷ééÿ÷ëëÿ÷ëëÿöèèÿôããÿòÜÜÿïÔÔùìÌÌãèÄÄà朜ßã··Øâ²²Ùá®®Ûá®®Úá®®Úâ±±ÛãµµØ庺ÒèÂÂÎëÉÉÊîÐÐÝðÖÖçñÙÙâñÜÜÝðØØÚîÕÕÑëÍÎÉçÄğ⺻œÝ¯°“Ø¥§ÓœŸ„Γ—~ʋrŅ‰bÂ{€[ŸtzG»nu>žgo2µaj-³\f&±Wa°T^®PZ®NY¬KV «HS ªFR ªDQ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDPªFR «HS ¬IU­LW®OZ¯R]°V`³Zeµ_i(·fn,ºls;œryBÁyRÇ\ȉŽq͑”|Қ„×€ŠŒÜ®¯˜âž¹¡å§éËÌÅíÓÓ×ðØØÝñÜÜàñÛÛãñØØéîÒÒãëËËÐéÄÄÑ挌Õã··Õâ²²Õá®®Õá®®Õá®®Õâ±±Óãµµ×庺ÜèÂÂßëÊÊáîÒÒöñÚÚÿôááÿöååÿöèèÿ÷ééÿöèèÿõääÿòÞÞÿðÙÙýíÑÑýéÈÉïåÁÁî⹺ÓÝ°±ÝØŠš²ÔœŸpΓ–LȊ9ā†.Àx(Œnu·fnµ_i²Xc¯R] ­NY¬KV«HS«FRªDQªDPªDO©DOªDO©DOªDOªDPªFRªFR¬IU¬KV®NY¯S] ²Xcµ_i·fn»nu¿v|(Ä„0ȈŒ=͑”Jљ›dÖ¢€‚Ú«¬ƒß³ŽãŒŒ³èÄÄÎëÎÎãïÖÖùòÞÞÿõååÿ÷ëëÿùïïÿúññÿúññÿúññÿùïïÿøííÿ÷ëëÿ÷êêÿ÷êêÿ÷ëëÿøîîÿùððÿúññÿúññÿúððÿøîîÿ÷ééÿôääÿñÜÜÿíÔÔõéÊË×æÂÂÍ㹺±Þ°±šÚ§š„ÕŸ¡{і™`ˎ‘Gƅ‰8Â|‚,Ÿsy(ºkr·cl³\f°V` ¯Q\ ®NY¬JV«HSªFRªDQªDPªDO©DO©DO©DOªDOªDQªFRªGS¬IU­LW®OZ °T^ ²ZeµajºiqŸry"Â}‚)ƅ‰2ˏ’@їš]Ö ¢Úª¬ÄÞ³ŽÏ亻ãçÅÅòëÌÍ÷íÕÕüðÛÛýóááÿöååÿ÷èèÿ÷ééÿöèèÿõääÿóÞÞÿð××ÿíÏÏìêÇÇÝç¿¿ßåžž×ã³³×á°°Øá®®Ùá®®Øá°°Ûã³³ØäžžÒç¿¿ÑêÇÇÎìÍÍÒïÕÕçñÙÙåñÜÜáðÛÛÚï××ÚíÑÑÖçÈȰ土Ÿß³Ž–Úª«‘ÕŸ¡…Ж™‚ËŽ’sdž‹mÃ~ƒ\¿v}PŒovD¹iq;¶cl-Ž]g)²Yc±T_¯Q\­NY¬LW¬IU ªGS ªFRªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQªFR «HS ¬KV®NY®PZ°T^±Wa³\f%µaj)žgp/»nu>Ÿt{FÂ|‚Qƅ‰kʌp؁Ԟ Ù§š‘ݱ²˜ãŒœŸçÆƯëÏÐÑï××ÙñÛÛßòÝÝåñÛÛæðÖÖëíÐÐÛëÉÉÍèÁÁÓ庺Ô㎎Öâ±±Õá®®Õá®®ÔᯯÒâ³³ÓäžžÙ柟ÝéÆÆÞìÍÍéïÕÕÿñÜÜÿôââÿöååÿöææÿõååÿõããÿòÞÞÿðÙÙýíÒÒîéËÌÔçÄĜ亻«ßµ¶šÛ«­ž×€Š“Ó›ž{͒•cȈŒ;Ä„/¿w}%»nu·fnŽ]g±Wa¯R] ­NY¬KV«HS«FRªDQªDP©DO©DOªDO©DOªDOªDPªFRªFR¬IU¬LW®OZ°T^ ²Ycµ_ižgoŒovÀy(ā‡2ɋ;͓–FԞ cÙŠ§„ݯ°–â·ž§åÂÂÇéÊËðíÔÔÿñÛÛÿôããÿ÷ééÿùîîÿúððÿúññÿúññÿùîîÿ÷ëëÿöèèÿõååÿõååûõååÿõææÿöèèÿ÷ììÿùîîÿúññÿúññÿúððÿøííÿöèèÿóááÿðÙÙÿìÑÑüèÇÈéã¿¿Åßµ¶¬Û¬­¥Ö£¥…Ñ™›`͑”BLjŒ9Ã~„-Ÿt{&ºlt¶dmŽ]g±Wa®R] ®NY¬KV«HS«FRªDQªDPªDO©DO©DO©DOªDOªDQªFRªGS¬IU¬LW®OZ °T^ ²Zdµaj¹iqœqx"Áz€(ш7ʌQϕ˜sԞ ‘Ú§š‘ݯ°£â·žŸä¿¿¯èÆÆÉìÎÎâîÕÕùðÛÛúóßßûõääûõææþöååÿõääþôßßÿñÙÙþîÒÒöëÊÊÝéÃÃÛæ»»Ù㶶Öâ²²×á®®×á®®×ᯯØâ²²Ùä··Ö朜ÔéÄÄÍëÌÌÍîÓÓãñÙÙæòÜÜäòÜÜÞðÚÚÜîÔÔÕëËÌÁå§ឹœÜ®¯—×€ŠÒšÍ‘”~ȉŽqÇdÁySŸryMºkr<·fn7µ_i%²Ze#±V`¯R]®OZ­LW¬IU«HS ªFR ªDPªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªFRªGS ¬IU ¬KV­NY¯Q\±T_²Yc!Ž]g'·cl1ºiq;ŒpwAÀw~RÄ„]ȈŒgˏ“xИš€Õ¢€‘Ú«­•à¶·åÁÁ§éÉÊŒíÓÓÚðÚÚÞòÞÞàòÝÝåñÜÜëðÖÖéíÏÏÑëÇÇÓç¿¿ÕäžžÖ⎎Øâ±±Öá®®Õá®®Ôâ±±ÓãµµÕ庺ØèÁÁÛêÉÉÜîÐÐôñØØüòÞÞýôââþõääÿôããûóààüñÜÜ÷ï××õìÑÑÙéÊË»æÄĭ㜜®àµ¶”Ý­®’ÙŠ§Õž tїšyˏ’eƆ‹RÂ}ƒ9Ÿu|#ºlt¶dm³\f±Wa ®R] ®NY¬JV«HS«FRªDQªDPªDO©DO©DO©DOªDOªDQªFRªGS¬IU¬LW®OZ °T^ ³Ycµ_ižhpŒov Áz€)ш4ʌ=ϕ˜I՞ \Ú©ª|Þ²³«ä»ŒÖèÅÅïìÏÏÿðØØÿóßßÿöççÿøììÿùððÿúññÿúññÿùïïÿ÷ììÿöèèÿõããßôàà“óßߘóßߘôáá˜õääÿöèèÿ÷ííÿúððÿúññÿúññÿùïïÿ÷ëëÿöååÿòÞÞÿîÕÕÿêÌÍÿæÃÃê⹺Ëݯ°¢ØŠšyӜŸT͓–CȈŒ;Ä„.Ÿv}%»nu·fnŽ]g±Wa¯R] ­NY¬KV«HSªFRªFRªDPªDO©DO©DO©DOªDOªDQªFRªFR¬IU¬LW®OZ °T^ ²Ycµ_ižgpŒov Àx'Á†CȉY͒•eҚœsÖ¢€xÚ©«Þ°±•âž¹™å¿¿ŠèÆÆŽêÍÎÊîÓÓåðÙÙ÷òÞÞöôââøõääúôããúôààûñÜÜüïÕÕùíÎÎæêÆÆÖ矟ÚäžžÕã³³×â°°Øá®®Ùá®®Úâ±±ÛãµµÜå»»ØèÂÂÓëËËÎîÒÒ×ñÙÙèòÝÝåòÞÞáñÜÜÞïØØÛëÐÑÎçÇǫ㌜Þ±²™Ù§š”Ôž ‹Î•˜ƒÊ‹oŅ‰iÂ{WŸt{L»nuAžgo2µaj*³\f$±Wa °T^®PZ­LX¬JV«HS «FR ªDQ©DO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR«GS ¬IU ­LW®OZ¯R]±V`²Ze$µ_i+·fn3ºls7œryEÁyYł‡_ɊŽu͒•{Қƒ×€Š‘ܯ°¥â¹º«çÅÅ«ëÍÎÌïØØßòÝÝâôààåóßßèñÜÜìðÖÖåíÏÏÓêÇÇÖç¿¿×äžžÚ⎎Øâ±±×ᯯÔá°°Ôã³³Òä··×眜ÙêÄÄØìÌÌäïÔÔûñÚÚúóÞÞùôááûôááøòÞÞöðÚÚõîÕÕíìÏÏËèÇÈÃæ²亻¥àŽµ›Ý®¯‡Ú§šÕ ¢uљ›f͒•WɋGшCÁz€>œqx"¹iq¶ck³\f±V`¯Q\ ®NY¬JV«HS«FRªFRªDQªDOªDOªDOªDOªDPªDQªFR«GS¬IU­LW®OZ°T^ ²Zdµ`j¹hpŒpw!Áz€*ш3ʌ>Ж™IÕ ¢VÚª¬|ßµ¶Åä¿¿ñèÇÈÿìÑÑÿðÛÛÿôããÿ÷ééÿùîîÿúññÿúññÿúññÿùîîÿ÷êêÿõååÿôßß{òÜܓñÚژñÛۘòÝ݊ôááŽõææÿ÷ëëÿùïïÿúññÿúññÿùððÿ÷ííÿöèèÿóßßÿðØØÿìÏÏÿçÆÆÿ㺻ïÝ°±¹Ù§škԜŸQΓ–EȊ:Á†/¿w}&»nu·fnµ^g±Wa¯R] ®NY¬KV¬IUªFRªFRªDQªDPªDOªDOªDOªDPªDQªFRªGS¬IU¬KV®OZ¯S] ²Xcµ^g·fnºltŸu|/Â}ƒFƆ‹Kʏ’Zϕ˜^ԜŸg×£¥rÚ©«‚Þ°±‘â·ž˜ãŸŸ²æÄIJêËÌœíÑÑÙïØØòñÜÜòôààõôááõôààøòÜÜöðØØ÷îÑÑóëÉÉØèÂÂ×å»»×äµµÖâ²²×ᯯ×á°°Úâ±±ÚãµµÜ庺×èÂÂØëÊÊÏîÒÒÓñÙÙéòÞÞéôààãôßßàðÛÛÛîÔÔÕéËÌÂåÂÂ¥àŽµ¢Ú«­–Õ¡£”Иš‡Ë“sLjŒgÄ]¿v}PŒovF¹iq9¶cl1Ž]g%²Yc$°T^¯Q\®NY¬KV¬IUªFR ªDQ ªDO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ«FR«HS ¬JV­LX®OZ¯S]±Wa²\f!µaj+žgo6»nuCŸt{JÂ|‚ZƄˆeʌvϖ™…Õž Úš©žÞ³Ž­äœŸ¶èÉÉÁîÓÓáïÛÛäóààèôããëôââêòÞÞíñ×××íÐÐÓêÇÇÕçÀÀ×å¹¹Ú㎎Ùâ±±Õâ±±Õâ±±ÔãµµÕ庺ÕèÁÁØëÈÈ×îÐÐïðÖÖùñÜÜ÷óÞÞ÷óßßöñÜÜõðÙÙñíÔÔéìÎÎÍèÆÆ·ä¿¿Žâž¹©Þ²²’Ü­®ˆÙ§šxÕ ¢oӚeΓ—RʌCƆ‹6Ã~„2¿v|+Œnužhpµaj²Ze±U`®Q[ ®NY¬JV«HSªFRªFRªDQªDQªDPªDPªDPªDQªFR«FR«HS¬IU­LW®OZ°T^ ²Zdµaj¹hpŒpw!Áz€)ш1ʌ<Ж™IÕ ¢UÚª¬nßµ¶°ä¿¿êèÇÈÿìÑÑÿðÛÛÿôããÿ÷ééÿùîîÿúññÿúññÿúññÿøííÿ÷èèÿôââÌòÞÞmñÚڊðØ؊ðØ؊ñÛۅóßßmõååí÷ééÿùîîÿúññÿúññÿúððÿ÷ííÿöèèÿóààÿðØØÿìÏÏÿçÆÆÿ㻌àÝ°±—Ù§šbԜŸOΓ–EȊ;Á†0¿w}(»nu ·fnµ^g±Wa¯R] ®NY¬LW¬IU«GS«FRªFRªDQªDPªDPªDPªDQªDQ«FRªGS¬IU¬KV®NY¯R] ±Wa³\f·cl¹jrœqx$Áz€*ā‡1ȈŒA̐”Jі™^ӝŸj×¢€wÚšª†Ü¯°àµ¶™ãŒŒ«æÃúéÈÉ»ìÐÐÓïÖÖìñÛÛòóÞÞñóßßóòÝÝôñÙÙõïÓÓ÷ëÍÍãêÅÅÓ柟ÖäžžÔ㎎Öâ±±Ùâ±±Ùâ³³Ü㶶Ýå»»ÝèÃÃØëÊÊÔîÓÓÐñÚÚÝóßßìôââéôââãòÞÞâïØØßëÎÏ×çÅŵ⹺«Ü¯°¥×€Š–ÒšˆÍ‘”}ȉŽkĀ†fÁyUœqxFºkrC·em0Ž_i.²Zd#±V` ®R]®NY­LW¬IU«GS ªFR ªDP©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQªFR¬IU ¬KV®NY®Q[°T^²Xc"Ž]g$¶ck/¹iq6ŒovE¿v}QÄULjŒkˏ“yЙ›„Õ¢€‘Û¬®¥àž¹ªå¶ëÌÍÙï××ïóÞÞðõääòõååòõääóôßßòñÙÙÚîÑÑÖëÊÊÙèÁÁÚå»»Ú䶶×ã³³Øâ²²×㎎ÕäžžÕ朜ÖéÄÄÔëËËÝîÓÓôñØØõòÜÜ÷òÝÝõòÜÜôðØØòíÔÔéëÌÍÈèÅÅÄ域°á·žŸÞ±²œÚª«†Ù¥Š€ÕŸ¡eҙœbΓ—Sʎ‘JȈŒ<Ā…0Áz€*œry#ºls ·emµ_i²Yc°T^ ®PZ­LX¬JV¬IU«GS«FRªFRªFRªDQªDQªFRªFR«FRªGS¬IU¬JV­LX®PZ±T_ ²Zdµ`j¹hpŒpw!Áz€'ш0Ɍ;ϕ˜G՞ UÚ©ªcÞ³Ž䌜ÂèÆÆüìÐÐÿðØØÿóààÿöèèÿøííÿùððÿúññÿúððÿøììÿ÷èèÿôââÂòÞÞdñÚÚ{ðØØ{ðØØ{ñÛÛwóßß_õååã÷ééÿøîîÿúððÿúððÿùïïÿ÷ëëÿõææÿòÞÞÿï××ÿëÍÎÿçÃÃó㺻§Ý¯°oØŠš\ӜŸQ͓–DȈŒ7Ä„0¿w}$»nu·fnµ^g²Xc¯S] ®OZ­LW¬IU«HSªGS«FRªFRªFRªDQªDQªFRªFRªFR«HS¬IU¬KV­NY¯Q\ ±V` ²[eµajžgp»nu#Ÿu|(Â|‚1ł‡8ȉŽC͐“IŘYӜžaÖ¡£uÚ§š€Ü­®Œß²³¡ä¹ºªåÁÁœèÇÈÁìÏÏÐïÖÖíðÚÚîòÝÝðòÝÝóñÛÛôðÖÖóîÐÐíëÉÉÓèÁÁÕå»»Ö䶶×㎎Ùâ³³Û㎎Ûä··Ý朜ÝéÅÅàìÍÍÙïÕÕÔñÜÜÝôââñõååïõååîôááíïÛÛëîÓÓèéÈÈÊ䜟²Þ³Ž¥Úš©šÔž ‘Δ˜‚Ê‹wŅ‰hÂ{€\ŸtzJºlt;·fn2µ`j-²[e%°V`!¯R]®OZ­LW¬IU«HS ªFR ªDQªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªFRªGS ¬IU¬LW­NY¯Q\±U`³Yc!µ_i)¶dm-¹jr9œqxIÁyXĀ†eȉŽu͒•қžˆ×€Š›Ü¯°¥â»Œ±çÆÆÁëÐÑíïÛÛúóááýöççÿöèèÿöææþôââÿñÜÜùïÔÔáëÌÌÝéÄÄÞ矟Üå¹¹Ú㶶Øäµµ×ä··×å»»ÖèÁÁÖéÇÇÕìÎÎèïÔÔôñÙÙôñÜÜóñÜÜòðØØîíÔÔìëÌÍÏèÅƟ䟟°á¶·­Ý¯°šÚšª‘×¢€}ԝŸhИšZ͒•Vʍ‘IȈŒBĀ†5Â|.Ÿt{(»nu#¹hp¶ck³\f±Wa°T^ ®OZ­LX¬KV¬IU«HS«GSªGSªFR«FR«FRªFRªGS«GS«HS¬IU¬KV®NY¯Q\ ±T_ ²Zdµ`jžhpŒov Ày&ā‡1ɋ:Γ–DԞ SÙ§š_Ý°±s㹺˜æÃÃËêÌÍøîÕÕÿñÝÝÿõååÿ÷êêÿøííÿùïïÿùîîÿøììÿ÷èèÿõääÿóßßVòÜÜdñÚÚmñÚÚmñÜÜ_ôàà_õååÿ÷ééÿøííÿùïïÿùîîÿ÷ììÿ÷èèÿóááÿðÛÛÿíÒÒÿéÉÊóåÀÀºá¶·†Û­®j×€Š\ҚœP̐”CLjŒ9Ã~„0Ÿt{%ºlt·fnµ^g²Xc°T^ ®OZ­LX¬KV¬IU«HS«GSªFRªFR«FR«FRªFRªGS«GS¬IU¬IU¬LW­NY¯Q\ ±T_ ³Ycµ_i¶dm¹jrœqx!¿v}+Â}ƒ5Ņ‰>ȉŽ?̏“Nϕ˜RҙœjÖ ¢wÙŠ§ŠÜ«¬•ß²³Ÿã¹º²åÁÁ¹èÈÉ¿ìÏÏÛïÖÖíðÙÙíñÜÜîñÛÛðñ××ñîÒÒòëÌÌÜéÄÄÑ柟Õä¹¹×䶶ÚäµµÜä··Þ庺ßçÁÁÞêÇÇáíÐÐÛðØØæóßßúõääûöèèûöèèøöååùóßßòï××õëÌÍØåÁÁºà¶¶­Û«¬§Õ ¢Ð–™ËŽ‘~dž‹lÃ}ƒZ¿v|NŒnu@¹hp?¶ck1³\f+±Wa"°T^®PZ®NY¬KV«HS «FR ªDQ©DO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR«GS ¬IU­LW®OZ¯R]±V` ³Ze%µ_i)·fn0ºltDŸsyHÂ{€UшeɋtĘyԞ ’Úš© Þ³Ž¬äŸ¿³èÉÉËîÔÔðñÞÞÿôääÿ÷ééÿ÷ëëÿ÷ééÿõååÿóßßÿð××úíÐÐæêÈÈãèÁÁá匌Ýå¹¹ÚåžžØ庺×矟×éÄÄÖëÊÊÙîÑÑóðÖÖóñÙÙðñÛÛïðØØíïÕÕëìÎÎÕèÆÇÀ域žá¶·šÝ¯°¥Úšª•×¢€yԜžlϖ™^͑”WʌKLjŒCĀ†9Â{€6Ÿu|)Œov#¹jr·emµ_i²Ze°V`¯R] ®OZ®NY¬LW¬JV¬IU¬IU«HS«HS«HS«HS«HS¬IU¬IU¬IU¬KV­LW®OZ®R] ±U` ²Zeµ_ižgo»nu¿v|$Ä„-ȈŒ8̒•DњœP×£¥[Û«­k൶€äŸŸ èÆÆŒìÏÏòïØØÿòÞÞÿõååÿ÷êêÿ÷ììÿøííÿ÷ëëÿ÷êêÿöææÿôââÇóßßQóßßLóßßLóàà_õããèöççÿ÷êêÿ÷ëëÿøììÿ÷ëëÿ÷èèÿóââÿñÜÜÿîÕÕÿêÌÍíæÄĭ㺻Þ°±vÚ©ªf՟¡Xі™Lˎ‘Aƅ‰5Â|‚,Ÿtz#ºls¶dmŽ]g²Yc°T^ ®Q[ ­NY­LW¬KV¬IU¬IU¬IU«HS«HS«HS«HS¬IU¬IU¬IU¬KV­LW­NY®Q[ °T^ ±Wa³\fµajžgoºlt"Ÿry*Ày,Ã}ƒ6ш;ȉŽCˎ’RΓ•[ј›nԝ tØ€¥„Ü«¬ß²³žã¹º®åÁÁ»éÉÊ¿íÒÒÙïÖÖèñÚÚêñÛÛìñÙÙïïÔÔñíÏÏçëÈÈÓèÁÁÒ挌Øä¹¹ÛåžžÛ人ß眜áèÄÄäëÊÊãîÒÒîñÚÚþôââÿöççÿ÷êêÿ÷ëëÿöèèÿóââÿïÛÛóëÏÐçæÅŜ⺻±Ü¯°¡×€Š”Ñšœ†Í“€ÈˆŒqÀ…iÀw~VŒpwIºiqA·cl1Ž]g,²Yc"±T_¯Q\®NY¬KV¬IU ªFR ªDQªDO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ«FR «HS ¬IU­LX®OZ¯S]±Wa²\f#µaj+žgp:»nu=Ÿt{TÂ}ƒ_Ɔ‹kʎ‘tЖ™ƒÕ¡£•Û«¬¢à··©å¿ëÍÎâï××öóááÿöèèÿ÷ëëÿ÷ììÿ÷ëëÿöççÿôááÿñÚÚÿîÒÒúëËËêèÄÄåæ¿¿ã朜á挌Ý圜ÙèÂÂ×êÇÇÔìÍÍåïÓÓòð××ññÚÚîñÙÙíïÕÕëìÐÐàèÈÉœåÁÁžãž¹µÞ°° Ùšª×¢€}ԛwϕ˜c͐“SʋPDžŠBÄ„:Â{€4Ÿu|2Œpw&ºkr#·fnµaj³\f²Yc±U` ¯R] ®OZ­NY­LX¬LW¬KV¬KV¬KV¬JV¬KV¬KV¬KV¬KV¬LW­LW®NY®NY®PZ ¯R] ±V` ²Zeµ_i·fnºltŸt{#Â}ƒ+Ɔ‹7ʎ‘AЖ™L՞ XÙŠ§gÜ®¯sâ·ž…å¿¿šèÇÈ¿ìÑÑñðØØÿòÞÞÿöååÿ÷ééÿ÷ëëÿ÷ëëÿ÷êêÿöèèÿöææÿõååÿôããÐôããßõååÿöççÿöééÿ÷êêÿ÷ëëÿ÷êêÿöèèÿóââÿòÜÜÿîÖÖþìÎÎâèÅů㜜‘ßµ¶~Û¬­pØ€ŠaӜŸV͓–Jɋ=ш4Áy(Ÿry"ºkr·dmŽ]g²Yc±T_ ®R] ®OZ ­NY­LX­LW¬LW¬KV¬KV¬KV¬JV¬JV¬JV¬KV¬KV­LW®NY®OZ¯Q\ °T^ °V`²Zeµ_i·cl¹hp»nu#œry,Àw~/Â|‚;Ł†Cȇ‹Fˎ‘UΑ”]Зškԝ zØ¥ŠˆÜ¬­šß²³§ãŒŒ¶çÃùêÊËÅíÓÓãð××çñÙÙêñÙÙìðÖÖïîÑÑîëËËÙéÅÅÕçÀÀÖ朜Úæ»»â圜äèÁÁæêÇÇæìÎÎðïÕÕþòÜÜÿõããÿ÷èèÿ÷ëëÿ÷ììÿ÷êêÿõääÿñÞÞÿíÓÔòèÈÈÎ䜟²Þ±²¢ÙŠš•ÓœŸ‘Í“–|ɊŽnшbÁyXŸryKºkrH·em6Ž_i(²Zd%±V`®R]®NY¬LW¬IUªGS ªFR ªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQªFR «HS ¬KV®NY®PZ°T^²Xc!³\f(¶ck4¹iq=ŒovH¿v}VÄ`ȈŒj̏“xњœŽÖ£¥“ܯ°©âº»®æÅÅœëÏÐïïÛÛýóââÿ÷èèÿ÷ëëÿøììÿ÷ëëÿöèèÿôââÿñÜÜÿïÕÕÿìÍÍûêÇÇìèÂÂèçÀÀçç¿¿äèÁÁßéÅÅÖëÊÊÖíÐÐïïÕÕóñÙÙïñÙÙíï××êíÒÒèêËÌÉæÃÞ㌌±ß²³ªÚª«—×¢€†Ôœžsϔ—f͐“^ʊŽSDŽ‰GÄ@Â{€9Ÿu|1œqx)ºls!žgp¶ckµ_i³Ze±Wa±T_ ¯R] ®Q[ ®OZ­NY®NY®NY®NY®NY®NY®NY­NY­NY®NY®OZ®OZ®PZ¯Q\ ¯R] ±T_ ±Wa²[eµ_i·fnºlsœry"Áy)ш3ɊŽ=͑”GҙœUÖ¡£`ÚšªoÞ°±|âž¹ŒåÁÁšèÇÈÄìÐÐóðØØÿòÞÞÿõååÿöèèÿ÷êêÿ÷ëëÿ÷ëëÿ÷êêÿ÷ééÿ÷èèÿ÷èèÿ÷ééÿ÷êêÿ÷êêÿ÷êêÿ÷ééÿöççÿóááÿñÜÜÿîÖÖþìÎÎçèÆƵ㟟–ᶷ†Ü®¯zÙ§ši՞ ]і™Oˏ“DȈŒ9À…0Àw~)Œpw ºiq·clµ^g²Zd°V` °T^ ®R] ®Q[®OZ ®OZ®NY­NY­NY®NY®NY®NY®NY®NY®NY®NY®NY®OZ¯Q\ ¯S] ±V`²Yc³\fµ`j·em¹iq"»nu&œry-Àw~1Â|‚=Ł†Bȇ‹MˍQ͑”^їšk՟¡yÙ¥ŠÜ­®šàµ¶¬äŸŸ±èÆǺìÎÎÓïÕÕäðØØéñÙÙëðØØïïÓÓñíÎÎáëÈÈÔèÄÄ×çÀÀãç¿¿çèÀÀééÄÄêëÊÊòîÐÐþñ××ÿòÞÞÿõååÿ÷ééÿøììÿøííÿ÷ëëÿõææÿóààúï××ûêÌÌÜåÀÁŒßŽµ©Ûª«£Õ ¢˜Ð–™‹ÊŒzŅ‰hÂ|‚\ŸtzMºltE·fn5µ`j1²[e'°V`"¯R]®OZ­LW¬IU«HS ªFR ªDPªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©COªDOªDQªFR ¬IU ¬KV­NY¯Q\±T_²YcŽ]g'·dm.¹iq:œqxDÁyRā†bȉŽs͓–€ÓœŸŽ×Šš–ݱ²šãŒœ¶èÈÈÇìÓÔõðÝÝøôääÿ÷ééÿ÷ëëÿ÷ëëÿ÷êêÿöææÿôââÿñÜÜÿïÖÖÿìÎÎÿëÉÉûéÄÄïèÂÂìèÂÂééÄÄæêÈÈÞìÍÍàîÓÓóð××òñÙÙîðØØêïÕÕèìÎÎÙèÆnj域±à¶·²Ü­®›Ø¥ŠÔœžЗ™j͑”[ʊŽUDŽ‰GÄ„?Â{€<Ÿu|5œqx,ºlt#žhp·dmµ_i³\f³Yc±Wa ±T_ ¯S] ®R] ¯Q\®Q[ ®PZ®Q[®Q[ ¯Q\ ¯Q\ ®R] ¯R] ¯R] ¯R] ¯S] ¯S] °T^ °T^ ±V` ±Wa ³Yc³\fµ`j·fnºkrœqxÀw~)Ä0dž‹8ʍCϔ—OӛZ×¢€hÛª«uÞ±±ƒã¹ºåÁÁšèÇÈœìÐÐôðØØÿòÞÞÿõääÿöèèÿ÷ëëÿ÷ëëÿøììÿ÷ììÿøììÿøììÿ÷ììÿ÷ììÿ÷ëëÿ÷êêÿöææÿóááÿñÜÜÿîÖÖþìÎÎãèÆƷ䟟—ᶷŒÝ®¯~Ú§©qÖ¡£eҙœW͒•LɋAш7Â|‚,Ÿt{%Œnu¹iq·clµ_i²[e²Xc °V` ±T_ °T^ °T^ ¯S] ¯R] ¯R] ¯R] ®R] ¯Q\ ¯Q\ ®Q[®Q[ ®PZ ®PZ®Q[¯Q\ ¯R] °T^ ±V` ±Wa³ZeŽ]gµaj·fnºiq"»nu(œry2Àw~3Â|‚?Ł†Hȇ‹Mˎ’YΓ–eҙœt՟¡…Ùšª‘Þ¯°šâ·ž¬åÂÂŽèÊËŸíÒÒáîÖÖèñÙÙëðØØíðÖÖðîÐÐêëÌÌ×éÇÇÞèÄÄèèÂÂééÃÃíêÆÆóëËËþîÐÐÿñ××ÿòÞÞÿôääÿöèèÿ÷ëëÿ÷ëëÿ÷ëëÿöèèÿóááÿïÙÙøëÏÐææÅŹṺŽÛ­¯ Õ£€—ј›ˆË’~dž‹rÃ}ƒbŸu|YŒnuMžhp;µaj/³\f*±Wa °T^®OZ­LX¬JV«HS «FR ªDQ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªFRªGS ¬IU¬LW®NY®R]±V`²Zd"Ž_i)·fn7ºls<œryPÁyZł‡eʌvϔ˜|ԟ¡Úª«šßŽµšåÀÁŽéÌÌÔîÖÖñòÞÞøôääÿ÷èèÿ÷êêÿ÷ééÿöççÿôããÿóßßÿñÙÙÿîÓÓÿìÎÎÿëÉÉÿéÅÅüéÄÄñéÄÄìêÇÇèëËËáîÐÐîïÕÕòðØØñðÙÙìïÖÖìíÒÒçéÊËÊæÃö㞹¯Þ°±œÙšª•ÕŸ¡ŠÑ˜›x͑”aʌUȆŠLÄ…CÂ{€<¿v|6œqx1ºlt*¹iq ·emµajŽ]g²[e²Yc±Wa ±U` °T^ °T^ ¯S] ¯S] °T^ °T^ ±T_ ±V` ±V` ±Wa ±Wa±Wa²Xc²Xc ²Xc²Yc²Yc³Yc²Ze³\fµ^gµaj·fn¹iqŒovŸt{&Â{€.ł‡5ȉŽ?̐“IŘUԜž`Ø¢€nÛª«{ß±²‡ã¹º•åÁÁ¢èÈÉŒìÐÐóðØØÿòÞÞÿõääÿ÷èèÿ÷ëëÿøííÿùîîÿùïïÿùïïÿùîîÿ÷ííÿ÷ëëÿöççÿôââÿñÜÜÿîÖÖÿìÎÎåèÆǞ䟟á¶·Ý¯°ƒÚšªwס£iӚ^Δ—Rˎ‘Gȇ‹=Ä4Áy*œry%»nu¹hp·clµ_iŽ]g²[e²Zd²Yc²Yc²Xc ²Xc±Wa±Wa±Wa ±Wa °V` ±V` ±U` °T^ °T^ °T^ ¯S] °T^ °T^ ±T_ ±V`±Wa²Zd³\fŽ_i¶ck·fn¹iq'»nu*œry3Àw~8Â|‚Ał‡GȈT̎’[ϕ˜iԛ€×¢€ŠÛ«¬œß³Ž€ãœœ®èÅÅ·ìÎÎÔîÔÔäï××éðÙÙìð××ðîÓÓóìÎÎäëÉÉãêÆÆëéÄÄíéÄÄõêÇÇÿëÊÊÿîÐÐÿïÖÖÿñÛÛÿôááÿõååÿöèèÿ÷êêÿ÷êêÿöèèÿóááúðÛÛôìÐÑêèÇÇÁ⌜ªÜ°±€×Šš—Ò›‹Í‘”ÈˆŒrÁ†_Àw~[ŒovK¹iq9¶cl8Ž]g)²Xc$°T^®Q[®NY¬KV¬IUªFR ªDQ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR«GS ¬IU ­LW®OZ¯R]°V`³Ze$µ`j+·fn<ºltCŸtzLÂ|‚]ƅ‰iʌsЗš‡Õ ¢Û¬®™á·ž£æÃïëÍÎÏï××æòÞÞêõääõöææýöççÿõååÿôââÿóßßÿñÚÚÿïÕÕÿîÐÐÿëËËÿêÈÈÿéÅÅÿéÅÅýêÆÆóëÉÉíìÍÍçîÒÒüðÖÖõðÙÙïïØØêïÕÕéìÏÏáèÆǜ俿²ßŽµ­Û­®ŸØ¢€„Ô›rД—c̎’`ȇŒMŁ†FÂ|‚AÀw~6Ÿry.»nu-ºiq'·fn¶ckµ_i³\f³Ze²Yc±Wa±Wa ±V` ±V` °V` ±Wa±Wa²Yc²Zd²[e³\f³\fŽ]gµ^gµ_iµ_iµ_iµ^gµ^gµ^gµ_iµ_iµaj¶ck·fn¹iq»nuœry$Àw~*Ã~ƒ1Ƅˆ;ɋD͐“NƘYԜždØ€¥rÛª«~ß±²‰ã¹º•åÁÁ¡èÈÉÀìÑÑõðØØÿòÞÞÿõååÿ÷ééÿ÷ììÿùîîÿùððÿùïïÿøîîÿ÷ëëÿ÷èèÿôããÿñÜÜÿîÖÖÿìÎÎäèÆǵ䟟á¶·’Ý®¯‡Úšªz×¢€nӛaϔ—V̎’KȈAŁ†6Â|‚/¿v|)œqx#ºltžhp¶dmµajµ_iŽ_iµ^gµ^gµ^gµ^gµ^gµ^gŽ]gŽ]g³\f³\f²[e²Ze²Yc²Xc±Wa°V`°V`±V` °V` ±Wa²Xc²Zd²\fŽ]gµ`j·clžgo#ºkr'Œov,Ÿtz2Áy=Ã~ƒEƃ‡JʊŽY͑”hИšlԝ ‡ÙŠ§˜Þ®¯§âž¹°åµéÊËÆíÒÒæïÖÖæðÙÙèðØØðïÕÕûîÐÐôëÌÌèêÇÇíéÅÅõéÅÅÿêÆÆÿëÉÉÿìÍÍÿîÒÒÿñ××ÿñÜÜÿôààÿôääÿöææÿöççÿöååøóââíðÜÜæìÓÔÞéÉÉÃ㜟¥ß²³œÙ§©“ÓœŸˆÍ“–~Ȋtā‡aÁy]œqxJ¹jrA·dm8µ^g&²Yc"±T_¯Q\­NY¬KV¬IUªGS ªDQ ªDO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ«FR «HS ¬JV­LX®OZ¯S]±Wa²\f(µaj,žgp9»nuDŸu|OÃ}ƒadž‹o̐”zј›ŠÖ€Š“Û­¯”Ọ æÆƬëÏÐÒïØØßóÞÞãôããëõääîôââôóààüñÜÜüñØØûïÔÔúíÐÐùëËËùêÈÈøéÅÅøéÄÄùéÄÄøêÇÇñëËËîíÐÐðïÔÔÿð××ÿðÙÙøï××îíÓÓéêÌÍÕæÃõ亻µÞ±²§Ù§©ÕŸ¡ŠÑ—šm͑”`ʋWƄˆLÄ~ƒBÁy;Ÿtz3Œov.ºkr(žgp!·dmµajµ_i³\f²[e²Zd²Yc²Yc²Yc³Yc²Ze²[e³\fµ^gµ_iµaj¶cl·dm·fn·fn·fn·fn·fn·fn·em¶dm·dm·dm·dm·fnžgoºiqºltœqx"Ÿt{'Áz€.Ä„6DžŠ>ʌH͑”QЗ™]՜žjØ€¥uÜ«¬‚ß±²ã¹º•åÁÁšèÉÊÇìÑÑõðØØÿóßßÿöååÿ÷ééÿ÷ììÿøîîÿøííÿ÷ëëÿ÷èèÿôããÿòÝÝÿîÖÖÿìÏÏçèÆǮ䟟žá¶·•Ý¯°ˆÚšª~×¢€rԛeϔ—Z̐“PɊŽEƃ‡:Ã~ƒ3Áy*Ÿtz%Œov!ºls¹hp·fn·em·dm·cl·dm·dm·em·fn·fn·fn·fn·em¶dm¶clµajµ`jŽ_iŽ]g³\f³Ze²Zd²Yc²Yc²Yc³Yc²Ze²\fŽ]gµ_i¶ck·fn¹iq"ºlt-œqx/Ÿu|8Â{€BÄ…HȆŠJˎ‘UΓ–fӛx×¢€Ú«¬›ßŽµšãŸŸ°èÆÇ»ìÏÏßïÕÕäï××ððÙÙÿðÖÖÿîÓÓûìÍÍíëÊÊîêÆÆõéÄÄùéÄÄùéÆÆùëÉÉùìÍÍùîÐÐùðÖÖúñÙÙûóÞÞûôááøõããñõääìóááæñÝÝàïÖÖÚêÌÌÇåÀÁ¡à¶·Û«¬Ô ¢‹Ï•™€ÊŒyшgÁ{bœryKºls@·fn9µ_i*²Ze#±V`®R]®NY­LW¬IU«GS ªFR ªDP©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQ«FR «HS ¬KV®NY®PZ°T^±Wa³\f%¶ck4¹iq=ŒovK¿v}XĀ…^ȈŒl͒•yқ†Ø§©’ݲ³—㜟 èÈÈžìÑÒÙïÚÚàòÞÞáôááçôááíóÞÞëñÚÚ×ïÖÖÜîÐÐÞìÌÌãëÉÉåéÅÅåéÃÃçèÂÂçèÂÂééÄÄêêÇÇëëÍÍçîÑÑöðÖÖÿðØØÿðÙÙþïÕÕïìÐÐæèÈÉÅåÀÀŽá¶·²Ü­®Ø€¥”Ô›…Ï”—iˎ’_ȇ‹MŁ†HÂ{A¿v|6œqx3»nu+ºiq%·fn ·clµajŽ_iŽ]g³\f³\f²\f²\f³\fŽ]gµ_iµ`j¶ck¶dm·fn¹iq¹jrºlsºlt»nu »nu»nu»nuºltºltºkr¹iq¹iq¹hp¹hp¹iq¹iqºltŒov!œry&Àw~*Â|‚1Ł†9ȇ‹AʍJ͑”Uїš_ԜžkØ€¥yܪ«~ß²³‰ã¹º“æÁÁžéÉÊÊíÑÑøðÙÙÿòÞÞÿõååÿ÷èèÿ÷ééÿ÷ééÿöççÿóââÿñÝÝÿîÖÖÿìÏÏòèÆnj俿á¶·”ݯ°ŠÚšª}×¢€rӜžgД—\͐“RʊŽHDŽ‰?Ä6Áz€/¿v|(œqx$»nu ºlsºiq¹iq¹hp¹hp¹iq¹iqºkrºltºlt»nu»nu»nuºltºltºkr¹iqžgp·fn·clµajµ_iµ^g³\f³\f²\f²\f³\f³\fµ^gµ_iµaj¶dm žgp"ºkr&Œnu.Ÿsy5Àw~=Ã~ƒBƃ‡LɊŽX͐“bЗ™|՟¡‹Ù§©šÞ±²€ã¹º­çÃ÷ëÌÍÕíÓÓëï××øðÙÙÿð××ÿïÔÔÿíÏÏíëÊÊåêÆÆééÃÃçèÁÁêèÂÂéèÄÄçêÇÇæëÊÊäìÎÎâîÓÓÞñ××ÖñÜÜØóßßíôááçôààåñÜÜàï××ÚëÎÏÑæÅŧឞŸÛ­¯™Õ¢€Ð—šƒÊ‘wƅ‰mÂ}ƒ\ŸtzT»nuF·fn;µ`j-²[e$°V`¯R]®OZ­LW¬IU «HS ªFR ªDPªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQªFR ¬IU ¬KV®NY¯Q\°T^²Yc"Ž]g'·cl0¹iq=œqxLÁy\Ā…iȊtΓ–|ӝ ŠÚ©ª–ß³Ž›ä¿À¡éÉÉ¿íÓÔÜïÛÛàñÝÝäóßßçòÜÜîñÙÙäïÔÔÓíÏÏØëÊÊÜéÅÅÝèÂÂÝèÀÀÜ矟ß矟àç¿¿âéÃÃáêÇÇáìÍÍâîÓÓúðÖÖýðØØôï××ôïÕÕñìÎÎäèÅſ㜜±ß³Ž¯Ú©«žÖ ¢…Ñ™œw͑”dʋTDŽ‰OÄFÁy=Ÿt{6Œov1ºlt)¹iq&·fn!·dmµajµ`jµ_iµ_iµ_iµ_iµ_iµ`j¶ck·dm·fn¹iqºkr»nu"Œov Ÿry%Ÿtz&Ÿv}&¿w}%¿w~%¿w~&¿w}%Ÿt{%Ÿtz$Ÿry#ŒpwŒnuºltºltºlsºlsºltŒnu œqx$Ÿt{(Áy-Ã|‚3Ł†<ȇ‹Cˎ‘L͑”VїšaԜžkØ€¥wÜ«¬~ß²³Šã¹º–æÁÁ˜éÊË»íÑÑùïØØÿñÞÞÿóááÿóââÿóââÿóààÿñÛÛÿîÖÖÿìÏÏçèÆƺ忿™á¶·Ý¯°‡Úšª|×¢€sӜžiϔ—^͐“SʊŽJdžŠAÄ…9Â{2Àw~,Ÿsy(Œpw#»nuºltºlsºlsºlt»nuŒovœqx œry!Ÿtz#Ÿu|#¿w}$¿w}$¿w}$Ÿv}%Ÿtz%œry%œqx%Œnu"ºlt!¹iqžgp·fn¶clµajµ_iŽ_iµ_iµ_iŽ_iµ_iµaj¶ck¶dmžgo$¹iq&»nu+œqx2¿v|7Â{@Ł†KȆŠNˎ’^ϔ—tԛ‚Ø€¥˜Ü­®Šá·ž¬åÀÀ±èÊËÄíÒÒèïÕÕïðÙÙòðØØóïÖÖøîÐÐêëÊÊÚéÆÆßèÁÁà矟â矟â矟áèÁÁßèÃÃàêÇÇÞëËË×îÑÑÔðÖÖÕñÚÚëóÞÞéóßßåñÜÜáï××ÚëÏÐÒæÇǰ㌜œÜ¯±–Ö¥§Òšœ…̐”zdž‹mÃ~„d¿v|WŒnuEžhp=µaj.³\f(±Wa °T^®OZ­LX¬JV«HS«FR ªDQ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©COªDOªFR ªGS ¬IU ¬LW­NY¯Q\±U`³Yc!µ_i+·em9ºkr@ŸryRÁz€[шkɋtϕ™Õ ¢Ú¬­”භæÁ§êÌÌÌîÔÔÛðÛÛàñÜÜãñÜÜçñÙÙíïÔÔÞíÎÎÒêÈÈ×èÃÃÙç¿¿Ú匌Û庺Ú庺Úå»»Ø朜ØèÂÂØëÇÇ×ìÍÍÜïÓÓñð××óðØØíï××ëíÓÓéêËÌÓçÃÞ㹺µÞ¯°¬ÙŠ§˜Ô €Ï–˜o͐“bɊŽVƃ‡NÃ~ƒCÁy<Ÿtz7Œov0ºlt,ºiq&žgo"·fn·cl¶ck¶ckµaj¶ck¶ck·dm·fnžgp¹iqºlt!Œov#Ÿry$Ÿt{)Àw~+Á{*Â}ƒ/Ä/Á†.Á†.Á†-Ä„.À…-Â}ƒ,Áz€)Àw~(Ÿt{%œry#œqx!Œov »nu»nu Œnu Œpw$œry&¿v|*Áy.Ã~ƒ6ł‡<ȈŒEˎ‘N͑”YїšaԜžlØ€¥vÜ«¬~ß²³‰ä¹ºæ¡éÈÉžìÐÐøîÔÔÿïØØÿïÛÛÿïÛÛÿïØØÿîÓÓÿëÍÎñèÆÆŸä¿¿•á·žÝ°±†Úšªz×¢€pԜžhŘ_͑”TʋJdžŠCā†;Â|‚3Áy.Ÿt{*Ÿry%Œov#Œnu!»nuŒnu!Œov œqx#Ÿsy#Ÿu|%Àw~'Á{*Â}ƒ,Ä+Ā….Á†0Á†/Ä.Â~„-Â|+Áz€-¿w}(Ÿtz%œqx%»nu$ºkr#¹iq ·fn·em·cl¶ck¶ck¶ck¶ck¶cl¶dm·fn!žhp#¹jr)»nu/œqx2Ÿu|7Áz€?Ä„HdžŠQʋ]͑”pҚ‚ס£“Úª«˜ß³Ž­ãŸŸ³èÆÆ»ìÎÎáïÕÕéï××ëðØØëðÖÖðîÑÑêëËËÕéÆÆÕèÁÁÙ圜Ø庺Ý庺ß庺ß朜àèÀÀàéÅÅÙëËËÓîÑÑÐðÖÖãñÛÛçòÝÝæñÜÜÞïØØØìÑÒÖèÈȌ㜟ŸÝ²³˜Ø§©’Ò›ƒÍ’•ȈŒmÁ†aÀw~VŒovG¹iq@¶ck6³\f+²Xc!°T^®Q[®NY¬KV¬IUªFR ªDQ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªFR«GS ¬IU­LW®OZ®R]±V`!²Ze%µ_i0·fn9ºlt?ŸsySÂ|aŅ‰fʍ‘rИ›…Ö¡£ŽÛ¬®˜áž¹ŸæÄĪëÎÏÒïÖÖÛðÛÛàñÛÛâñÛÛèðÖÖìíÐÐÖëÊÊÓçÂÂÕ匌Ûä¹¹Û㶶Ø㎎×ãµµØäžžÖ匌ØèÁÁ×ëÈÈÓíÎÎäïÓÓôð××ñðØØïïÕÕìíÒÒêèÉÊËåÁÁ·á¶·¶Ü­®Ø€¥•Óœž„Ï”—n̐“]ȈXł‡PÃ|‚GÁy>Ÿtz9Œpw3»nu/ºkr*¹iq%žgp"·fn ·fn ·fn·fn·fn žgp!¹iq"ºkr#ºlt%Œov'œry)¿v|.Áy2Â}ƒ5Ā…4ш6dž‹5ȈŒ:ȉŽ;Ȋ;Ȋ9ȉ9ȈŒ5ƅ‰6ш1Ā…1Â|‚.Áy*¿v|'Ÿsy%œqx#Œpw#Œov#Œpw$œqx%Ÿtz(¿v},Áz€1Ã~ƒ7ł‡=ȈŒDˎ‘M͑”Xїš`՜žjØ¥ŠnÛ«¬|Þ²²€âž¹ŒäÀÀ›çÆÆÇêËÌûëÏÐÿëÐÑÿëÐÑÿëÍÎÿéÉÊêçÄĶ䟟‘ᶷ„ݯ°~Úšªv×¢€nԛhϕ˜\͑”TʋJȆŠCŁ†<Â|‚4Áy0Ÿu|*œry'œqx$Œov#Œov#œqx#Ÿry$Ÿtz&¿v}(Áy+Â}ƒ-À…0ш1Ɔ‹4ȈŒ7ȈŒ6Ȋ9ȉ;ȈŒ:LjŒ:ƅ‰5ш5Ä3Â{€1Àw~.Ÿt{*œqx(Œnu'ºlt&¹iq%¹hp!žgo ·fn·fn ·fn ·fn žgo!žhp%ºiq'ºls+»nu.œqx5Ÿu|;Áz€AÄJDŽ‰RʊŽ\͑”pЗš{Õ ¢ÙšªÞ°±šä¹º±çÃöëÌÍØîÔÔéï××êðØØíðÖÖðîÒÒðìÌÌØéÆÆÒçÀÀÔ庺Ú㶶ÜãµµÜãµµÛ㶶Ýä¹¹ßæ¿¿ÙéÅÅÔëÍÍÏïÓÓÜðØØçñÜÜãñÛÛßïÙÙÜîÔÔÕèÊÊÁåÀÁ ß³Ž”Ú©ªÓž ‰Î“–Ȋqā‡mÁz€\œqxN¹jrF·dm3µ^g)²Yc$±T_¯Q\­NY¬KV¬IUªGS ªDQªDO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR «GS ¬IU­LW®OZ¯R]°V`²[e%µ`j+·fn;»nuDŸt{WÂ~„aƆ‹pː“tҙœƒÖ€¥ŒÜ®°™âŒœ æÆƲëÏÐÕï××ÝðÛÛßðÛÛæñÙÙæîÓÓêëÍÍÒèÄÄÐ圜ØäžžÙ⎎Ùâ²²Øá±±Öâ³³Ö㶶Õä»»ÖèÁÁÕëÉÉÕíÐÐìïÕÕòð××ððØØîïÕÕëìÏÏèèÆÇÅ䟟žß³Ž²Û¬­Ÿ×¢€•Ó›ƒÏ”—r̎’dȇŒWł‡PÃ~ƒFÁyCŸu|;Ÿry6Œov1»nu-ºls*ºkr(¹iq&¹iq%¹iq%¹jr%ºkr'ºlt)»nu+Œpw-œry.¿v|0Áy3Â|‚9ā†9ƅ‰=ȉAʋ@̏“C͒•DΓ–DΓ–EΓ–C͓–E͑”Aˎ‘@ɋ;ȈŒ:ш6Ä2Â{/Àw~+Ÿu|(œry&œqx$œqx$œqx$œry&Ÿtz)Àw~-Â{€1Ä~ƒ7ł‡>ȈŒFˎ‘O͑”VЗ™[ԝŸd×£¥oÛ©«qÝ°±|ᶷ†äŒœåÂÂÍçÅÅûçÆÆÿçÆÆÿæÄÄóäÀÀµãº»Šßµ¶|Ü®¯vÚ§©rס£jӛaϕ˜[͐“RʊŽJȆŠDŁ†;Ã|‚4Áy/¿v|,Ÿtz)Ÿry%œqx%œqx$Ÿry%Ÿtz'¿v|)Áy,Â|‚1Ā†3ƅ‰7ȈŒ:Ɍ>ˏ’?͑”CΓ–BΓ–CΓ–B͓–E̐”Dʍ‘Dɋ?ȇ‹?ш:Ä9Â{7Àw~5Ÿt{2Ÿry/Œov+»nu)ºlt(ºkr(¹jr&¹iq&¹iq%¹jr'ºkr)ºlt,»nu/Œpw3Ÿsy9¿v}?Â{€EÄKDŽ‰UʊŽ]͐“eЗ™}ԜžŠÙŠ§™Ý­®Šâ·žŽæÁÁ¹éÊËÌíÒÒèïÖÖéðØØìð××ðîÓÓñìÍÍßéÆÆÑçÀÀÔä¹¹Õ㎎Øâ²²Øâ²²Øâ³³Ü㶶Ý人ÛçÀÀÏëÈÈÌíÏÏØðÖÖêñÙÙäðÛÛâðÙÙÝîÔÔÖêÌÌÉæÁ¡ෞ›Ú¬­Õ ¢ˆÏ•™ÉŒ|шmÁz€\œryVºls@·fn7Ž_i0²Zd&±V`®R]®NY¬LW¬IU«GS ªFRªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ«FR «HS ¬JV­LX®OZ¯S]±Wa!³\f$µaj/žhp?ŒnuB¿v|VÀ…]dž‹q̑•wқ‡×Šš‘ݱ²–㟿œçÈÈŒìÐÑÕïØØÝðÛÛßðÚÚåðÖÖèîÐÐßêÉÉÐçÂÂÑ人Öãµµ×â±±×á°°×á°°Öá±±Ô㶶Ôä»»ÕèÃÃÕëÊÊ×îÐÐñðÖÖôð××ñïÖÖïîÔÔîëÎÎàèÄÄÃ㌌¹ß²³·Ù©ª£Ö ¢ŒÒ™›}ϔ—p̍‘`ȇŒ]ƃ‡TÄMÂ{€GÀw~?Ÿt{;œry7œqx4Œov0Œnu/Œnu-Œnu-Œnu,Œov,œqx0œry1Ÿtz1¿v}6Áy7Â|‚<Ä…Aƃ‡EȈCʌG̑”NΔ—WјšSӛžSԜŸRԞ QԞ RӜŸOҙ›Nі™I͓–Hˏ“Dɋ?DžŠ;Ł†6Ã|‚3Áy.¿v}*Ÿtz(œry&Ÿry%Ÿry%œry&Ÿt{)Àw~-Â{€2Ã~ƒ6ł‡<ȇ‹EʍJ͑”PЖ™WԜžbÖ¡£iÙ§škÛ­®pݲ³wà·ž„⹺Í⻌ý⻌õ⹺›àŽµƒÝ°±rÛ«­rÙŠ§lÖ¡£bӚ_ϕ˜W̐“OʊŽHdžŠAŁ†;Ã|‚5Áy/¿v|-Ÿtz(œry&Ÿry%Ÿry&Ÿsy'Ÿt{)Àw~-Â{€0Ä~ƒ4ш8ȈŒ<ʋ?͐“CΓ—HїšKҚœNӜŸPԜŸQԜŸRӜŸRљ›UЖ™[͓–Pˎ’LɋFȇ‹Gł‡?Ä=Â{<Áy8¿v|6Ÿsy4œqx3Œpw1Œov.Œnu-Œnu.Œnu/Œov0Œov3œqx6Ÿsy9¿v|=ÁyCÂ|‚Jā†QdžŠWʉ`͑”lϖ˜yԜžØ€¥žÛ­®§àµ¶ŽäÀÀºèÈÉÉíÐÐèïÕÕìðØØïð××ïïÓÓòìÎÎåêÇÇÑç¿¿Òä¹¹Òâ³³Øá°°Ùá°°Úá°°Ûâ³³Ú㶶Ù圜ÔéÄÄÏëÌÌÏïÓÓåñÙÙåðÛÛßðÚÚÛîÕÕÖëÎÏÐæÄÄŠáž¹›Û¬®•Õ¡£ŒÐ˜›Ê‘yŅ‰oÂ|aŸtzXºltH·fn9µ_i2³Ze)°V`"¯R]®OZ­LW¬IU«GS ªFR ªDPªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQ«FR «HS ¬JV®NY®PZ°T^±Wa"³\f*¶ck2¹iq9ŒovF¿v}\Ä„_ȉuΒ•‚ÒœŸ‡Ùšª“ÞŽµšä¿ÀŸèÊÊÂíÓÔ×ïØØÛðÛÛÞñÙÙåðÕÕéìÎÎÛêÆÆÌç¿¿ÒäžžÔá³³Öá°°Öà®®Ôà®®Òá±±Ò㶶Óå»»ÔèÃÃÒëÊÊÞîÒÒõðÖÖôð××óïÖÖòíÒÒðêËËÚçÂÂÂ㹺œß°±¬Ù§š€ÖŸ¡”ÒšœÏ“–t̎’fʉ`DŽ‰WŁ†SÃ~ƒNÂ{€FÁyC¿v|?Ÿt{<Ÿtz:Ÿtz7Ÿtz6Ÿtz6Ÿtz7Ÿu|:¿v};Áy=Â{€>Ã|‚BÄ„Cƃ‡GȆŠLʊŽR̐“Vϔ—WИšWԝŸlÕ ¢r×£¥sÙŠ§pÙ§šfÙ§š_ØŠš[Ö£¥[՟¡WӚTЖ™M͑”IʌEȇ‹?ł‡;Ä~ƒ6Â{€1Àw~-Ÿt{)Ÿsy'œry&œry&œry&Ÿt{)Àw~,Áz€1Ã~ƒ5Ł†<ȇ‹AʋI͐“OŘQљœY՟¡`×€ŠdÚ©ªeÛ¬®eܯ°}Ü°± Ü°±ŸÜ¯°nÛ«¬gÙ§škÖ£¥e՝Ÿ_јšVΔ—R̎’MɋEDžŠ?ā†:Â|‚3Áy.¿v|,Ÿtz)œry&œry&œry&Ÿtz(¿v|,Áy.Â|‚2Ä…7ƅ‰<ɊŽ@ˎ’F͒•KјšPԝŸTÖ ¢W×€ŠZØŠš[Ù§šaÙ§šgØ¥§o×£¥x՟¡wҙœmі™[͒•Uˎ’QɊŽMdžŠHŁ†GÄDÂ|‚DÁy?Àw~=¿v|9Ÿt{9Ÿtz9Ÿtz7Ÿtz8Ÿtz8Ÿt{<Ÿu|=Àw~AÁyFÂ|‚IÄOł‡WȆŠ\ʋŽe͐“mƘӛŠ×£€Ûª«¥à³ŽºäŒŒÀèÆÇÅíÏÏæïÔÔìðØØðð××ñïÕÕñíÏÏìëÈÈÒçÀÀÒä¹¹Óâ³³Ôá°°Øà®®×à®®Øá°°ÚâµµØ人ÑçÂÂÌêÉÉÌíÐÐãðØØæðÚÚâðÚÚÛï××ÕëÏÐÓæÆƎጜ›Û¯±’Ö¥§ŒÒ™œ„ː“{Ɔ‹sÂ~„bŸt{R»nuOžgpBµaj/²\f$±Wa ¯S]®OZ­LX¬JV«HS«FR ªDQ ªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQªFR ¬IU ¬KV®NY®Q[°T^²Yc$Ž]g)·cl7¹iqAœqxQÀyZā†iɊqΓ–ÓŸ¢ˆÚ«¬–൶šåÁ¢êËËÈîÔÔÙïÙÙÞðÚÚßñÙÙåïÔÔêëÌÌÓéÅÅÎ匌Ñ㶶Õá±±Óà®®Ôà­­Óà®®Ðá±±Ñ㶶Ó挌ÔéÄÄÒëÍÍãîÓÓõðÖÖôð××óïÕÕòíÑÑòéÈÉÔæÀÀÇâžžÂÞ°±¶ÙŠ§£×Ÿ¡’Óšœ€Ï•—t͐“pʋŽiȇŒcƄˆ\Ł†WÄQÂ|‚MÂ{€IÁz€FÁyEÁyCÁyDÁyBÁz€CÂ{EÂ|‚HÄIŁ†Nƃ‡MȆŠQʉWˎ’Z͑”_ϕ˜eӛfÖ¡£jÙ¥ŠtÚ©«ˆÛ¬­”Ý°±šÝ°±±Ý°±ŽÝ°±nÛ­®hÚš©d×¢€_Ԟ [ИšV͒•Pˎ’IȈCƃ‡=Ä8Â{3Áy.Ÿu|*Ÿtz(œry&œry&œry&Ÿtz)¿v}+Áy/Â|‚3ā†9DžŠ=ɊŽEˎ’H͒•Mі™TӛžW֟¡^Ö£€_Ö£¥[׊šo׊š^Ö£¥aÕ¢€^Ԟ Vҙ›Yϕ˜Q͑”MʌIȉCƄˆ<Ä7Â|‚2Áy.¿v|,Ÿtz(œry&œry&œry'Ÿt{)¿v},Áy/Ã|‚5Ł†:LJ‹@ʋE̐“Kϔ—QҙœWÕ ¢]×¥§bÚ©«eÜ­®mÝ°±wÝ°± Ý°±¢Ý¯°“Û«­Ú§š”ס£€ÔŸkј›aϔ—b͐“Zʌ\ɈŒTdžŠTł‡MÄ…JÃ~ƒGÂ|‚EÂ{€FÁz€EÁyCÁyDÁyDÁyEÂ{€GÂ|‚KÃ~ƒOÄ„Sł‡WȆŠ]ɉďlΒ•qїšӜž’Ø¢£€Ûª«¬à²³»ãŒŒÀèÄÅÄêÍÍÞîÒÒíð××ïð××òðÖÖòîÐÐñëÊÊÖçÁÁÑä¹¹Ñ⎎Òá°°Öà­­Õà­­Öà°°Ùâ³³Ôä¹¹ÑçÀÀÍêÇÇÊíÏÏßïÕÕäðÙÙáðÚÚÛï××ÔìÐÑÓçÈȷ㜟™Þ±²–׊šÒ›‰Ì‘•|LjŒnÀ…j¿v|YŒovL¹hp@¶ck7³\f(±Wa$°T^®PZ®NY¬JV«HS«FR ªDQ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@L§ALšAMšBN©COªDOªDQ ªFR ¬IU¬KV­NY¯Q\±T_²Yc!µ^g(¶dm0ºkr=œqxJÁz€_шlɋrŘ…Õ ¢ŒÚ¬­”à·žœæÃÄ©êÍÍÏîÕÕÖðÚÚßðÚÚãñÙÙçíÒÒèêËËÐçÃÃËä»»Ð㶶Óá°°Ó߬­Ô߬­Ñ௯Òá²²Ð㶶Ó柟ÔéÆÆÓëÍÍêîÓÓöð××öð××õïÕÕôíÐÐïéÈÈÓå¿¿ËᶶÈÞ®¯²Ú§š«×¡¢ŸÓ›œ‰Ñ–™Î’•w͏’rʊŽlȇŒfdžŠ`ƃ‡\Ł†Xā†UÄ„SÄRÄQÄOÄ„Oā†QŁ†Qƃ‡XdžŠZȈZʊŽ[ˍ‘_͑”eϔ—gїšl՜žo×¢€wÚšªÜ­®ŠÞ²²ªâ¶·°ãº»Ì仌æ㻌Ô㹺¢àµ¶‹Þ°±vÛ«¬nÙ¥Šh՟¡aј›\Δ—U̎’MɊŽGƄˆ?Ä…9Â|‚3Áy.¿v|*Ÿtz(œry&Ÿry%œry'Ÿtz'Ÿu|)Àw~.Â{2Ä6ш:ȇ‹?ɋB̏“F͒•Jϕ˜Kј›QҚœSқOқPҚœRЗšNϔ˜N͒•Kʎ‘EɊŽAdž‹>ł‡9Ã~ƒ3Áz€0Àw~-Ÿt{*Ÿsy(œry&Ÿry&œry&Ÿt{(¿v}+Áy1Ã~ƒ5Ł†;ȇ‹CʌH͐“QŘVӛ^Ö¡£dÚ§škÜ­®oÞ²³‚ᶷ‘㺻¯ã»ŒÕ㺻Ú⹺·àµ¶¬Þ¯°©Úª«‘Ø¥Š|՟¡|ӛpƘmΓ–i͏’bʌcɊŽ^ȇ‹ZDŽ‰Zł‡UŁ†Sā†RÄ„PÄQÄRÄ„RÄ…TŁ†Wł‡[Ƅˆ^ȆŠcɉgˌo͏’rϓ–zҙ›ˆÕŸ“Ø¢€€Û©ª°ß°±Á㺺ÄçÃÄÈëÌÌÛíÒÒðð××òð××òðÖÖóîÒÒôêÉÉÞèÃÃÐä»»ÒãµµÐá°°Ó߬­Ö߬­×ß­®Øá²²Øã··Ö柟ÎéÆÆÉëÎÎØïÕÕæðØØãðÛÛÜïØØØíÓÔÓèÊʟ䟿žÞ³Ž™ÙšªŽÒœŸ…Î’•‚ȉvÀ…dÀw~ZŒovL¹iqF¶cl8Ž]g-²Yc!°T^®Q[®NY¬KV¬IUªFR ªDQ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©COªDOªFRªGS ¬IU ¬LW®NY¯Q\±U`²Zd#Ž_i/·fn3ºlsIœryTÁ{]шiʍ‘~Ϙ›‡Õ¢€‘Û¬­”ົšæÅÆ®êÎÎÑïÖÖÙðÚÚÞðÚÚäð××çíÑÑæêÊÊÐçÁÁÍ人Ò⎎Ô௰Õ߬­Ò߬­Ó߯°Ðâ³³Ðä¹¹Óç¿¿ÔêÆÆÖìÎÎðïÕÕ÷ð××÷ð××÷îÕÕ÷íÏÏðéÈÈÕå¿¿ÒᶶÉÞ®¯ÁÛš©°Ø¢€€ÔŸŽÒ™›†Ð•˜Î’•}͐“vˎ’rʋmɊŽiȉeȈŒcȈŒaLjŒ`LjŒ^ȈŒ`ȈŒ^ȉ`ɊŽdʊŽeʌe̐“m͑”pϔ—pїšwӚœxԞ Ø€¥€Ú©ª„Ý®¯•àµ¶ªãŒŒ«æ¿¿ÂæÃÃùçÆÆÿçÆÆÿæÃÃèä¿¿­ãº»–ß³Ž|Ü­®vÚŠ§oÖ ¢gҙœ_ϔ—W̐“QɊŽIDŽ‰AÄ…:Â|‚4Áy/Ÿu|*Ÿsy(œqx&œqx$œqx$œry%Ÿtz(¿v|*Áy.Â|‚0À…2Ņ‰9LjŒ=ȉŽ>ʌBˏ’Bː“C̐”C̐”Cː“Eʍ‘CʋAȈŒ?dž‹=ł‡7Ä~ƒ5Â{€2Àw~-Ÿu|)Ÿsy(Ÿry%œqx%œqx$œry&Ÿtz(¿v},Áz€0Ã~ƒ6Ł†<ȇ‹DʌL͑”Rϕ˜[Ԝžc×¢€jÚšªrÝ®¯xᶷ‡ä»ŒšåÀÀÃçÄÄìçÆÆøçÅÅúæÃÃå䟟Éâ·žŽß²³«Ü¬­ŸÙ§©„ס£}Ԟ љ›{ϖ˜sΓ–s͐“jˎ’iʋiɋdȉŽcȉaȈŒ_ȈŒaLjŒ`ȈŒaȈŒbȈŒdȉŽgɋjʌo̎’t͑”yϔ—~і™„Òšœ‘Öž œØ€¥¬Ü©ª°à±²Ââ¹¹ÍæÁÂÎêËËÛíÒÒóðÖÖôðØØõð××ôîÓÓõëÌÌãèÃÃÐ匌Ò㶶Òá±±Õß­®Ö߬­Õß­®×à°±×㶶Ó挌ÐèÅÅÉëÌÌÕîÓÓæðØØäðÛÛÞïÙÙÜíÓÔÒêËËÉåÁ£භšÙ©«•Óž¡‰Î”—„ÉŠtā†lÁz€_œqxK¹iqH·dm6µ^g(²Yc#±T_¯Q\­NY¬KV¬IUªFR ªDQ ªDO©COšBNšAM§ALš@L§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªFR ªGS ¬IU­LW®NY®R]±V`"²Ze%µ_i,·fn7ºltJŸtzXÂ}‚_Ņ‰pʏ’yј›ˆÕ£¥‹Ü¯±–⌌ŸæÆÆŽìÏÐ×ïÖÖÙðÚÚáðÚÚäïÖÖéíÏÏäêÈÈÏçÀÀÏä¹¹Ñâ³³ÖயÖ߬­Õ߬­Ô௰Òá²³Òä¹¹ÓçÁÁÕêÉÉÛíÏÏõðÖÖùðØØùðØØúîÕÕúíÏÏíéÇÇØ埿ØᶶË߯°ÃÜš©³Ù€¥¬Ö ¡›Óœž“Ò™›Ð–™‰Ï”—ƒÎ“•͑”z̐“w̎’uˎ’rˎ‘qˎ‘pˎ‘nˎ’pˎ’o̐“r͐“s͒•wϔ—zϕ˜|Зš}ӛ€Õž ˆ× ¢ŠÙŠšŽÛª«˜Þ°±á¶·šäœœŒæÃÃÏèÉÊñìÎÎÿìÏÏÿìÏÏÿêÌÍÿéÇÈâæÃó㌌˜ßŽµ„Ü­®}ÚŠšvÖ ¢lҚœdϕ˜[̐“QʊŽIDŽ‰@Ä…;Â|‚2Áy.Ÿt{)œry'œqx%Œov#Œov#Œpw$Ÿry%Ÿtz)¿v|(Áz€-Â|.Ä4ā†6ш6Ɔ‹:Ɔ‹;dž‹8Ɔ‹;ƅ‰<Ņ‰7ш8À…5Â}ƒ1Â{€/Àw~+Ÿu|)Ÿsy%œqx%Œpw#Œov#Œpw$œqx%Ÿtz(¿v|+Áy1Ã~ƒ6Ł†<ȇ‹DʍN͑”Tϖ˜^Ԝžg×¢€qÙšªxÞ°±~⶷‡ä¿¿ŠçÄÄÂèÉÊöìÎÎÿìÏÏÿìÏÏÿêËÌþèÆÇßåÁÁÉã»»ŽàŽµ¯Þ¯¯£Ú©ª‘Ù€¥ŠÖŸ¡‡Óœž…ÒšœƒÐ—šŘ|Γ•v͑”s͐“s̎’pˎ’oˎ‘pˎ‘oˎ‘qˎ‘rˎ’s̎’v͐“y͑”}Γ–‚Ï–˜†Ñ—š‹Óšœ‘՝Ÿ”ס£¢Ú¥Š°Ý«¬ºà±²Æã¹¹ÑçÁÂÔêËËÚíÑÑôðÖÖ÷ðØØ÷ð××÷ïÓÓöëÍÍëéÆÆÔ朜Óã··Óà±²Õß­®×߬­Ø߬­Ù௰ØⶶÖå»»ÏèÃÃÌëËËÒîÒÒçðØØâðÛÛßïÚÚÞîÕÕÚêÌÌÐæÃĀෞÚ¬­•Õ ¢ŒÎ”—ƒÉ‹|шdÁz€dŸryNºkrI·em<µ_i+²Zd%±U`!®R]®NY¬LW¬IUªGS ªFR ªDO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDPªFR «GS¬IU­LW®OZ¯R]°V` ³Ze)µ`j,·fn:»nuAŸt{XÂ~„cƅ‰pː“|ҙœˆÖ€§Ü°²šâŒœžçÇǹìÐÑØï××ÝðÛÛÞðÙÙãïÕÕçíÏÏßêÇÇÍç¿¿ÐäžžÖá³³Ôß®¯Ö߬­Õ߬­Ò௰ÓᎵÓ人ÕçÂÂÖêÊÊâíÐÐúð××üñÙÙüñØØýîÕÕýíÏÏíêÉÉßæ¿ÀÞâ··×à±²ÅÞ¬­ŒÛ§š­Ø€¥¥Ö¡¢žÖŸ¡šÕœž–Ó›’Ò™œŽÑ˜šŠÑ˜š‡Ñ–™„Ж™ƒÐ–™‚Ж™Ð–™~і™‚Ñ–™Ñ˜š‚ИšƒÑ™œˆÓ›‰ÕŸŒÕŸ¡Ž×¢€“Ù¥§”Úª«™Ý®¯žà³ŽŠãž¹³äÀÀÈèÆÇÕëËÌßìÑÑþïÖÖÿðØØÿðØØÿîÖÖÿìÑÑþêËÌáæÄı㜜–ᵶ‰Ü­®ƒÚ§©wס£mҚœeϕ˜Z͐“SʊŽKDŽ‰BÄ…:Â{3Àw~.Ÿtz(œqx$Œov"»nu »nu »nu Œov!Œpw#Ÿry#Ÿtz'¿v|)Ày+Áz€.Â}‚/Â}ƒ0Â~„-Â~„/Â}‚.Á{.Áz€-Àw~)Ÿu|)Ÿtz'œqx$Œov#Œnu »nu »nu!Œnu!Œov$œry&Ÿu|+Áy.Ã|‚7Ł†:ȇ‹DʍK͑”WЗ™`ԜžgØ¢€rÙšªzÞ°°…â·žŒå¿¿¢èÆÇÊìÎÎñíÓÓÿïØØÿðØØÿðØØÿîÕÕÿìÐÐùéÊËØçÃÃÒ䌌Ÿâ¶·µÞ°±©Ü¬­£Ù§©˜Ù€¥”Ö¡£”ÕŸ¡Ôœž‰Ó›‰Ñ™œ…Иš„јšƒÑ–™Ð–™Ð–™Ж™€Ð–™‚Ñ–™„Ñ–™†Ñ˜š‰Ò™œŒÓšÔœž“Õž ˜ÕŸ¡žØ¢€¡Ù¥Š­Üš©¹Þ­®¿áŽŽË㺺ÙçÂÂÜêËËÝíÑÑõðÖÖûðÙÙúñÙÙúïÔÔùìÎÎòêÇÇØç¿¿ÕäžžÔà±²Õß®¯Ù߬­Ø߬­Ù௰ÛâµµÛ人ÓçÃÃÍêÊÊÏíÒÒæð××æðÛÛàðÚÚÞïÖÖÖêÏÏÒæÃĩ๺Ú­®–Õ¡£Ð—šÊ‘}шoÁ{cœryNºltH·fn?µ_i2²Ze'±V`¯R]®OZ­LW¬IUªGS ªFR ªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR «GS ¬IU­LW®OZ¯R]±Wa ²\f*µaj3žgp?»nuGŸt{PÂ~„_LJŒvː“zҙœ…ØŠš”ݲ³–㜟ŸèÉÉÂíÑÒÖï××ÝðÛÛàðÙÙãðÖÖëìÎÎÞêÆÆÏæ¿¿Òã··Öá²²Øß®¯×߬­Ô߬­Õà°±Ó㶶Ô匌ÖèÃÃ×ëËËéíÒÒüðØØýñÚÚÿñÙÙÿðÖÖÿíÐÐíêÉÉãçÂÂãã»»Ý൵Ðß°±ÃÝ­®ºÛª«±Ú§š¬Ù¥§šØ€¥€×¢€¡Ö¡£Õ ¢šÕŸ¡—Õž •Õž “Ôž ‘Ôž ‘Õž “Õž ‘ÕŸ¡”Õ ¢•Ö¡£˜×¢€—Ø€¥›Ù§š¢Úšª£Û«¬ŠÞ®¯§ß²³¬á·ž®äŒŒÈåÂÂÄèÇÈÒìÎÎãîÕÕúðÚÚÿòÞÞÿóààÿóààÿòÞÞÿðÚÚÿíÓÓýêÌÍÑçÄħ㜜›àµ¶ŽÝ­®†Ú§©|ס£pҚœcϕ˜^̐“SɊŽIDŽ‰AÄ7Â{€1¿v|,œry&Œov#ºlt ºlsºkrºkrºkrºlt »nuŒov Œpw$œqx&œry%œry$Ÿsy%Ÿsy$œry%Ÿry$œqx%Œov#»nu#ºlt ºltºkrºkrºkrºlt»nu!œqx$Ÿtz)Àw~,Â|‚4Ł†;ȇ‹BʌI͑”WЗ™^՜žhØ¢€wÙ©ªÞ°°Šâ·ž’åÀÀ€èÇÈŸìÏÏîïÖÖÿñÛÛÿóÞÞÿóßßÿóßßÿñÝÝÿðØØÿíÓÓñêÌÍàèÄÅÐå¿¿Ç㺺ŸáŽµŽÞ°±°Ý­®šÚ©ª¥Úšª ØŠ§Ÿ×£¥›Ö¡£šÖ¡£•ÕŸ¡–Õž “Õž ’Õž “Ôž “Ôž ’Õž •Õž —ÕŸ¡™Õ ¢›Ö¡£Ÿ×¢€£Ø€¥ŠÙ¥§ªÚš©®Üª«·Þ­®Àà±²ÌᶶÔ土ÜèÅÅãêÌÌãíÒÒõðØØÿñÚÚþñÙÙûïÖÖúìÏÏ÷êÉÉÜçÀÀØä¹¹Ôá²³×௰Ù߬­Ú߬­Ü௰Úâ³³Üä¹¹ÕçÁÁÑêÉÉÎíÑÑæð××éðÛÛäðÛÛÞï××ÙëÏÐ×æÆƵ⻻žÛ¯±–Ö£¥Ð˜›†ÊŽ’€Å…‰kÂ}‚fŸtzSºltN·fn;µ`j7³Ze(°V`$¯R]®OZ­LW¬IU«GS ªFR ªDP©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR «HS ¬IU­LW®OZ¯S]±Wa ³\f,µaj2žhpBŒnuN¿v|[ÄeȈŒx͑•ƒÒœžŠØ§©•Þ³Ž™ä¿À£èËËÆíÒÓÖïÙÙÝðÛÛâðÙÙèðÖÖëìÎÎÛéÆÆÎ朜Ò㶶Ùá²²Øß®¯Ø߬­×ß­®Öà°±Ö㶶×挌ÚèÅÅÛëÌÌîïÕÕÿñÙÙÿñÜÜÿñÜÜÿðÙÙþîÒÒìëÌÌçéÆÆåæ¿Àäã¹¹ØᶶÑ᳎Èß°±Œß¯°¹Ý­®·Ü­®³Û«­°Úª¬­Ûª«ªÚ©ªšÚ©ªŠÚ©ªŠÚ©ª¥Ú©ª€Ú©ª€Ú©ª€Úª«ŠÚª¬§Ûª¬šÜ¬­©Ý­®¬Þ°±°Þ²²°àµ¶žã·žžãŒŒÇäÀÀÑçÄÅÙéÊËàìÑÑêðØØúñÝÝÿôââÿõææÿöèèÿöèèÿõååÿóààÿðÛÛÿîÕÕüëÌÍ×çÄī㜜àµ¶’Ý­®…Ú§©{ס£rҚœfϕ˜[̐“PɊŽDƃ‡>Ã~ƒ7Áy0Ÿt{*Œpw$ºlt ¹jr¹hpžgpžgožgožgp¹hp¹iqºiq¹jrºkrºkrºkrºkr¹iqºiq¹iqžhpžgpžgožgožhp¹iqºkr»nu"Ÿry%¿v|)Â{€1Ä…9LJ‹@ʌJ͑”SЗ™\՜žhØ¢€wÙ©ª€Þ°°‡ãž¹”äÀÀ§èÆÇÀìÏÏðð××ÿòÝÝÿôããÿöææÿöèèÿöççÿõååÿóßßÿðÛÛÿîÕÕôìÎÎåèÈÉÙçÃÃÏ䟟Ñã»»ÂᶷŒß³Ž¶Þ±²±Ý¯°®Ü­®­Ü«­¬Ûª¬§Ûª«šÚª«ŠÚ©ªŠÚ©ª£Ú©ª¥Ú©ª¥Ú©ª§Ú©ªšÚª«©Ûª«¬Úª¬¯Û¬­±Ü­®ŽÞ®¯žß°±œß°±ÂᎎÊážžÔ匌ßæÂÂäêÉÉæìÏÏåðÖÖóñÙÙÿñÜÜÿñÛÛÿñ××þíÑÑûêÉÉãçÁÁÙä¹¹×⎎Ú௰Û߬­Ü߬­Ý௰Þâ³³ßä¹¹ÜçÀÀÒêÉÉÐíÐÐåñØØéðÛÛåðÛÛáïØØÛìÑÒÖæÇǷ⌜¢Ü¯±˜Ö€Š“Ñ™œ†Ë’‚Æ…‰vÂ~„kŸt{V»nuIžgoBµaj4²\f(±Wa%¯R]®OZ­LW¬IU«HSªFR ªDP ªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR «HS ¬JV­LX®OZ°T^±Wa"³\f*¶ck0¹hpCŒovK¿v|_ÄeȈŒu͑•ҝ ŒÙšªšß¶·åÀÁªéËËÉíÓÔØïÚÚàñÛÛäñÚÚéðÖÖíìÍÍÜéÆÆÏ朜Ø㶶Úá²²Ù௯Úà­­Øà®®Ùá²²Ø㶶Ú柟ÛéÆÆÞìÎÎôïÖÖÿñÛÛÿóÝÝÿòÞÞÿñÜÜýñ××ìíÑÑêêËËêèÆÆèçÁÂâ域Ú䌌Ïã¹¹Êãž¹Æâ·žÄᶷÀභŸàŽµŒßŽµ¹ßŽµžßŽµ·ßŽµ¶ß³ŽµßŽµ³ßŽµµßŽµ¶àŽµ¶àŽµ¹à¶·ºá·žºâ¹º¿ãº»Ä㜜Åå¿¿ÊæÃÃÙèÆÆÜèÊËãìÎÎèíÔÔòðÙÙýòÞÞÿõääÿ÷èèÿ÷ëëÿ÷ííÿ÷ííÿ÷ëëÿöççÿóááÿñÛÛÿîÕÕýëÌÍÓçÄĮ䜜™àµ¶’Ý­®‰Ú§©yס£nқfϔ—Z̎’MȈBŁ†;Â|‚3Àw~*Ÿry$»nu!¹iqžgo·em¶cl¶ckµajµaj¶ck¶ck¶cl¶cl·cl·cl¶cl¶ck¶ck¶ckµaj¶ck¶ck·cl·fn¹hpºkrŒov"Ÿtz(Áy/Ä7DžŠ?ʋG͑”OƘ\՜žfØ¢€pÚ©ªß°±‡ãž¹•äÀÀ§èÆÇ»ìÏÏðï××ÿòÞÞÿõääÿ÷èèÿ÷ëëÿ÷ííÿ÷ììÿ÷êêÿöççÿóááÿñÝÝÿðØØùíÑÑïëÌÍçèÇÈåèÄÄÛåÁÁÔ㟟Ì亻È㺻Ãâž¹œá·žŒàŽµ¹àŽµ¹ßŽµ·ßŽµ¶ßŽµµß³Žµß³ŽµßŽµ·ßŽµžßŽµ¹àŽµ»àŽµœá¶·ÀᶷÂâ·žÅãž¹È㺺Ì䌌×å¿¿ÛçÂÃãéÉÉèìÍÍêíÒÒéñÙÙñòÜÜÿòÞÞÿòÝÝÿñÙÙÿîÓÓþêËËçèÃÃÚå»»ÚâµµÛá°°Ü߬­Þ߬­ßá°°Þâ³³àä¹¹ÙçÀÀÖêÉÉÏíÑÑâñØØêðÛÛäñÜÜãïÙÙÝíÒÓÙèÉÉÀ✟£Ý°²›Ö€§“Ò™œŠË“Ɔ‹rÂ}ƒjŸt{\»nuSžgpCµaj:³\f0±Wa"¯S]®OZ­LX¬IU«HSªFR ªDP ªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDPªFR «HS¬JV­LX®PZ°T^±Wa ³\f*¶ck9¹iq>ŒovIÀx^Ā…lȉxΓ–€Òž¡‘Ùª¬”߶·¡åÂéêÌÌÍîÖÖÚïÛÛáñÜÜåñÛÛêðÖÖííÏÏÛéÆÆÖ柟Ýãžžßá³³Üá°°Ýà®®Ýá°°Üá³³Ûä¹¹Üç¿¿âêÈÈãíÐÐøðØØÿòÝÝÿôààÿôááÿôßßúñÜÜîð××îíÒÒíìÎÎëêÊÊééÇÈãèÄÅÛçÃÃ×æÃÃÕæÂÂÔåÂÂÑåÁÁÏåÀÁÍåÀÁÊåÀÁÈä¿ÀÉä¿ÀÇä¿ÀÅä¿ÀÆåÀÁÈåÀÁÉåÀÁÈåÁÁÊåÂÂËæÃÃÎçÄÄÛçÆÆàéÇÇâéÉÊçêÍÎíìÑÑõîÕÕøðØØýòÝÝÿóááÿöææÿ÷êêÿøîîÿùïïÿúððÿúððÿøîîÿøëëÿ÷ççÿóááÿñÛÛÿîÕÕüëÌÍæçÄİ䜜šàµ¶“Ý­®ƒÚ§©vÖ¡£mҚ_Δ—Vˎ‘JȈŒAÄ…8Áy/Ÿtz'Œnu"¹iq·fn¶ckµ_iµ^gŽ]g³\f³\f³\f³\f³\f³\f³\f³\f³\f³\f³\f³\fŽ]gŽ_iµaj·dmžhpºltœqx$¿v|*Â|‚0ш:ɊŽF̐“QŘ[ԜžcØ¢€mÛ©ª}Þ±±†ãž¹”äÀÀ¯èÆÇœìÐÐòï××ÿòÞÞÿõääÿ÷èèÿ÷ììÿùïïÿúññÿúððÿùîîÿ÷ììÿ÷ééÿõååÿóßßÿñÛÛþï××üíÒÒ÷ìÏÏòêËÌíéÉÊãçÆÆáçÆÆÖçÄÄÒæÃÃÑåÁÁÌåÀÁÊåÀÁÉåÀÁÇä¿ÀÉä¿ÀÇä¿ÀÆä¿ÀÇåÀÁÈåÀÁÊåÀÁÌåÁÁÎåÂÂÏåÂÂÒæÂÂÔæÃÃ×çÃÃÛèÅÆâéÈÈçëÌÌëìÏÏíîÓÓîñÙÙíòÝÝðóààþôááÿôßßÿñÜÜÿïÖÖÿëÌÌîèÄÄâ匌ß㶶Þá²²Þà®®ßà®®áá±±á⎎à人ÛçÂÂÙêÉÉÒîÒÒäñÙÙîñÜÜéñÜÜãïÚÚÞíÒÓÖéÊÊÊä¿À€Þ²Ž¢×šª–ÒšŽÌ“ƒÇ‡ŒuÃ}ƒkŸv}XŒnuSžhp?µaj7³\f/±Wa&°T^®OZ­LX¬JV«HSªFR ªDPªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ«FR «HS¬JV®NY®PZ°T^²Xc$³\f-¶ck6¹iqDŒovKÀycÁ†oȉuΓ–‡Óž¡ŽÙª¬—ß·žŸåÂðêÍÍÔî××àðÜÜåñÜÜèñÜÜïð××ïîÐÐÛêÈÈÙçÀÀÛä¹¹á⎎áá±±Þá°°ßá±±ßâ³³Þä¹¹áçÁÁãêÉÉçîÑÑûñÙÙÿóßßÿõããÿõååÿõääüôááúóÞÞûðÙÙúïÕÕùîÓÓùíÒÒøìÐÐ÷ìÏÏ÷ëÍÎöëÌÍöëÌÍõêÌÌõêÌÌôêËËôêËËôêËËôêËËôêËËôêËËôêËËóêËËôêÌÌôêÌÌôëÍÎõëÎÏõëÐÑöëÐÑ÷íÔÔúîÕÕýïØØÿñÛÛÿòÞÞÿóááÿõååÿ÷èèÿ÷ëëÿøîîÿúððÿúññÿúññÿúññÿúððÿøîîÿ÷ëëÿöççÿóááÿñÛÛÿîÕÕýëÌÍÕçÄČ䜜¡à¶·‹Ý­®„Ú§©wÖ¡£fљœZ͒•RʋGƄˆ<Ã}ƒ3¿v|*Œpw$ºkr·fnµajµ^g²\f³Yc²Xc±Wa±Wa±Wa±Wa ±Wa°V`±Wa±Wa±Wa±Wa²Yc²Ze³\fŽ_i¶clžhpºltœry%Áy.Ā…7ȈŒ=ˎ’Lϔ—Uӛb×¢€oÛª«{Þ±±…㹺™åÀÀ¥èÇÈÆìÐÐñï××ÿòÝÝÿõääÿ÷èèÿ÷ëëÿùïïÿúññÿúññÿúññÿúññÿúððÿøîîÿ÷ëëÿöççÿõääÿóààÿñÜÜÿïÙÙÿïØØþíÔÔüíÓÓùëÐÑ÷ëÏÐöëÎÏõëÍÎõêÍÍôêËËôêËËôêËËóêËËôêËËôêËËôêËËôêËËôêËËôêÌÌõëÌÍõëÌÍöëÌÍöëÍÎöìÏÏ÷ìÐÐ÷íÒÒøîÔÔùï××úñÛÛúóßßúôââúõååþõååÿôââÿòÝÝÿð××ÿíÏÏóèÅÅæ柟ãã··âá³³àá°°âá°°áá²²â㶶ã匌áèÃÃÞìÌÌÖïÓÓãñÙÙîóÞÞéòÞÞåðÛÛàîÕÖ×éÌÌÉäÁ­޵¶ŸØ©«•ÓŸŒÍ‘•ƒÇ‡Œ|À…n¿w}^ŒovQ¹hpD¶ck4³\f+±Wa%°T^®PZ®NY¬JV«HS«FR ªDQ ªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ«FR «HS ¬JV®NY®PZ°T^²Xc%Ž]g*¶cl5ºiqIŒpwMÀycÁ†nȉ{͕˜‡Óž¡ŽÙª¬™ßž¹¢åÃÄ·êÎÎÖî××áñÝÝäòÞÞëóÝÝïñÙÙðîÓÓÞëÌÌÜèÃÃá匌âä··áâ³³áâ²²ââ³³â㶶àä»»äçÃÃèëËËëïÓÓýñÛÛÿôââÿöææÿ÷èèÿöèèÿöççÿõååÿôââÿóßßÿñÜÜÿñÛÛÿðÚÚÿïÚÚÿïÙÙÿïÙÙÿïÙÙÿïÙÙÿïÙÙÿîÙÙÿîÙÙÿîÙÙÿîÙÙÿîÙÙÿîÙÙÿîÙÙÿîÙÙÿïÙÙÿïÙÙÿïÙÙÿðÚÚÿðÛÛÿðÜÜÿòÞÞÿóßßÿóááÿôããÿöççÿ÷ééÿ÷ëëÿøîîÿùïïÿúññÿúññÿúññÿúññÿúððÿùððÿøîîÿ÷ììÿ÷ééÿöææÿóááÿñÛÛÿîÕÕþëÎÎçèÅź㜜Ÿà¶·…Ü­®xÙ§šn՞ cЖ™U̐“Hȉ=Ā†7Áy+Ÿry%ºls·fnµaj³\f³Yc±Wa±U` °T^ ¯S] ¯R] ¯R] ¯R] ¯R] ¯R] ¯R] ¯S] °T^ ±V` ±Wa²Zeµ^g¶cl¹hp»nuŸt{(Â|‚1ш8ʋB͒•MҙœZÖ¡£kÛ©«pÞ°±}âž¹ŠåÁÁ¬èÈÉÁìÐÐòï××ÿñÝÝÿõããÿöèèÿ÷ëëÿøííÿùïïÿúððÿúññÿúññÿúññÿúññÿúññÿùïïÿøííÿ÷ëëÿ÷ééÿôååÿôããÿóááÿòÞÞÿñÝÝÿðÜÜÿðÚÚÿðÙÙÿïÙÙÿïÙÙÿîÙÙÿîÙÙÿîÙÙÿîÙÙÿîÙÙÿîÙÙÿîÙÙÿîÙÙÿîÙÙÿïÙÙÿïÙÙÿïÙÙÿïÙÙÿïÚÚÿïÚÚÿðÚÚÿñÛÛÿòÝÝÿôààÿôããÿõååÿöççÿ÷èèÿöèèÿõååÿóßßÿñÙÙÿîÐÐöëÇÇçæ¿¿çä¹¹ä⎎ãâ²²ãâ³³äâµµãä¹¹äæ¿¿âéÇÇÞíÏÏÙðÖÖäñÜÜðôßßìóààæñÞÞãîÖ×ÞéÎÎÏåÂî޶·ŸØ©«–ӝŸ’Í’–‚LjŒÀ…k¿w}[ŒovU¹iqC¶ck;³\f1²Xc'°T^®PZ®NY¬JV«HS«FRªDQ ªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ «FR «HS¬JV®NY®Q[°T^²Yc'Ž]g3¶cl>ºiqMœqxQÀy\ā†iɋz͕˜‰Ô £”Ù«­™à¹º¥åÄÅŒëÏÏÜïÙÙÝòÞÞçóááëôààïñÜÜïð××ÛíÐÐßêÈÈâçÁÁã匌ãã··âãµµâ㶶ãäžžã圜æéÅÅèìÌÌîïÖÖþòÝÝÿõääÿ÷ééÿøììÿøííÿ÷ííÿ÷ëëÿ÷ééÿöççÿõææÿôääÿôääÿôääÿôääÿôääÿôääÿóääÿóääÿóääÿóääÿóääÿóääÿóääÿóääÿóääÿóääÿóääÿôääÿôääÿôääÿôääÿõååÿöççÿ÷ééÿ÷ëëÿøììÿøîîÿúððÿúññÿúññÿúññÿúññÿúññÿúððÿùïïÿùîîÿøííÿøììÿ÷ììÿ÷ëëÿöééÿõååÿóááÿðÛÛÿîÕÕþëÎÎæèÅŭ㜜Šàµ¶€Û¬­rØ€ŠfӝŸ\Γ—OʌBŅ‰7Â|‚1Ÿtz&ºlt·fnµaj²\f±Wa±T_ ¯R] ¯Q\ ®OZ ®OZ®OZ®NY®NY®OZ®OZ®PZ¯Q\ ¯S] ±V` ³YcŽ]g¶cl¹iqŒov!Àw~+Ä„3ȈŒ=̏“EИšR՟¡aÚ§šhݯ°wâž¹‡åÀÀžèÇÈËìÑÑíðØØÿòÝÝÿõããÿöççÿ÷êêÿ÷ëëÿ÷ììÿøííÿøííÿùîîÿùïïÿúððÿúññÿúññÿúññÿúññÿúññÿùïïÿøîîÿ÷ëëÿ÷êêÿöççÿöææÿõååÿôååÿôääÿôääÿôääÿóääÿóääÿóääÿóääÿóääÿóääÿóääÿóääÿóääÿóääÿôääÿôääÿôääÿôääÿôääÿôääÿõååÿöççÿ÷èèÿ÷êêÿ÷ëëÿøííÿ÷ííÿ÷ëëÿöèèÿôââÿñÙÙÿîÒÒøëÊÊëèÁÁè人æ㶶åãµµä㶶ääžžä朜åèÄÄäëËËßîÓÓÜñÙÙãóßßóôââîóââèòààåîØÙÝêÎÎÓåÃÄ«Þ·ž¢Ø©«šÒž ”Í“—ŠÈ‰~À…k¿w~eŒovX¹iqK¶ck8³\f,²Xc%°T^ ®Q[®NY¬KV«HS«FR ªDQ ªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ «FR «HS¬KV®NY®Q[°T^!²Yc#Ž]g,·cl;¹iqDœqxWÀyeā†vɋϕ˜ŠÔ £—Û¬­Ÿá¹ºŠæÅÆÁëÐÐÛðÚÚãóááèôããïõããôôààóñÛÛçïÔÔáìÍÍâêÇÇåèÁÁä匌ä庺ä庺åå»»åèÀÀçéÇÇêìÎÎðïÖÖþóßßÿöææÿ÷ëëÿùïïÿúññÿúññÿúññÿùððÿùîîÿøîîÿøííÿøííÿøííÿ÷ííÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿ÷ììÿ÷ììÿ÷ììÿøííÿøîîÿùîîÿùïïÿùññÿúññÿúóóÿûóóÿûôôÿûôôÿûôôÿúòòÿúññÿùîîÿ÷ììÿ÷ëëÿ÷ééÿ÷ééÿ÷ééÿ÷êêÿ÷êêÿ÷êêÿ÷ééÿöææÿóááÿñÜÜÿîÕÕÿêÍÎêçÄĎ仌†Þ³ŽÚª¬oÕ¡£cјšQ̏“ILjŒ>À…2¿v|)»nu žgpµaj²[e±Wa°T^ ®Q[ ®OZ®NY­LX­LW­LW­LW­LW­LX­NY®OZ ®R] ±T_ ²YcŽ]g·cl¹iqœqx&Áy,ăˆ8ɋCΒ•KӛžTØ¥§`Û­®sභ‡ä¿¿™èÇÇŸìÐÐöðØØÿòÞÞÿõääÿöèèÿ÷ééÿ÷êêÿ÷êêÿ÷ééÿ÷ééÿ÷ééÿ÷êêÿ÷ëëÿ÷ííÿùïïÿúññÿúóóÿûôôÿûôôÿûôôÿûóóÿúòòÿúññÿùððÿùîîÿùîîÿøîîÿøííÿ÷ììÿ÷ììÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿöììÿøííÿøííÿøííÿøîîÿøîîÿùîîÿùññÿúññÿúññÿúññÿùîîÿ÷êêÿõääÿñÜÜÿîÓÓúëËËìéÄÄê柟è庺ç庺æå»»æ朜çèÂÂçêÉÉæîÐÐãñ××áóÞÞëõââôõååóõääíòááæïÙÚâêÑÑ×æÅƳߞ¹šØ«­Òž –Γ—ƒÈ‰‚À…m¿w~bŒovW¹iqN¶ck@Ž]g/²Xc*°T^#®Q[®NY¬KV«HS«FR ªDQ ªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ «FR «HS¬KV®NY®Q[°T^"²Yc'Ž]g1·cl8¹iqFœqxSÁz€_ā‡sɋϖ™ˆÔ¢€Û®¯€á¹ºŽçÆÇÌëÑÑæðÜÜìôããõõååøöææþõääÿóßßÿñÙÙ÷îÓÓîëÌÌéêÆÆèèÁÁé矟é朜é柟êèÂÂêêÈÈìíÐÐññØØÿôááÿ÷èèÿøîîÿúòòÿûôôÿûõõÿüõõÿûõõÿûôôÿûôôÿûôôÿûóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿûóóÿûôôÿûôôÿûôôÿûôôÿûôôÿûööÿü÷÷ÿü÷÷ÿü÷÷ÿü÷÷ÿü÷÷ÿûôôÿúòòÿùîîÿ÷ëëÿöèèÿõååÿõååèõääèõååÿöèèÿ÷ééÿ÷ëëÿ÷ëëÿ÷êêÿöççÿóááÿñÜÜÿîÔÔÿêÊËÕæ—⹺}ܯ°nØŠšiӜŸYΓ–MȊAā†4Ày,Œov!¹hpµaj²[e°V`¯R] ®OZ®NY­LW¬KV¬JV¬IU¬IU¬JV¬KV­LW­NY®Q[ °T^ ²XcŽ]g·dmºkr œry&Â|.Ņ‰;ʌBЗšR՟¡ZÙª«kß²³u匜çÆƶìÏÏøï××ÿòÞÞÿõååÿöèèÿ÷ëëÿ÷ëëÿ÷êêÿöèèÿöææÿõååÿõååßõååööææÿ÷ééÿ÷ííÿúððÿúóóÿüõõÿü÷÷ÿü÷÷ÿü÷÷ÿü÷÷ÿü÷÷ÿüõõÿûõõÿûôôÿûôôÿûôôÿûóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿúóóÿûóóÿûôôÿûôôÿûôôÿûõõÿüõõÿüõõÿûôôÿúññÿ÷ììÿõååÿòÞÞÿïÔÔûëÌÌîéÅÅìèÁÁë朜ë朜ëç¿¿ëéÂÂêêÈÈéíÎÎìïÕÕòñÜÜûôââÿöææþöèèýõçç÷óääíðÝÝìëÑÑäæÅƜߞ¹±Ù¬®§Ó £•Î”˜†È‰‚Ä€…q¿w~aŒovT¹iqC¶cl=Ž]g2²Yc*°T^ ®Q[®NY¬KV«HS«FRªDQ ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ «FR«HS¬KV®NY®Q[°T^#²Yc%Ž]g1·cl@¹iqHœqxQÁz€]ā‡wɋ{ϖ™Ô¢€žÛ®¯ªáº»±èÆÇÓìÒÒôñÝÝöôääþõççÿöééÿöççÿõääÿòÞÞÿñØØÿîÑÑúëËËòêÆÆîèÂÂîèÀÀîèÁÁïéÄÄïëÊÊïîÑÑôñÙÙÿôââÿ÷ééÿùïïÿûôôÿü÷÷ÿýøøÿýùùÿýùùÿýùùÿýøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿýøøÿýùùÿýùùÿýúúÿýúúÿýúúÿýúúÿýúúÿýùùÿü÷÷ÿûôôÿúññÿ÷ííÿöèèÿõããèôàà€óßßhóßßZôáámõääÿöèèÿ÷ëëÿ÷ììÿ÷ììÿ÷ëëÿ÷èèÿóááÿðÚÚÿíÒÒÿçÈÈî䜟ªß³ŽyÚ©ªdÕ ¢Zϔ˜NɌDш9Áz€-Œpw"¹iqµaj²[e±V`®R] ®OZ­LW¬KV¬IU¬IU¬IU¬IU¬IU¬IU¬KV®NY®OZ°T^ ²XcŽ]g¶dmºls!Ÿtz$Â~„1dž‹>̐”FҚœOÖ£¥[ܯ°qâž¹åŸêÊËøîÕÕÿñÝÝÿõååÿ÷ééÿ÷ëëÿøììÿ÷ëëÿ÷ééÿöææÿôââÇóàà_óßß_óßßrôââœöååÿ÷êêÿùîîÿúòòÿüööÿü÷÷ÿýúúÿýúúÿýúúÿýúúÿýúúÿýúúÿýùùÿýùùÿýøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿüøøÿýøøÿýùùÿýùùÿýùùÿýùùÿüøøÿüööÿúóóÿøîîÿöææÿóÞÞÿïÖÖüíÍÍñêÇÇðèÃÃðèÀÀðèÁÁïèÃÃïêÇÇðìÍÍöïÓÓýñÚÚÿôááÿõææÿ÷ééÿ÷ëëÿöééÿôääüðÝÝñëÒÒéçÆÇÁß¹º¶Ú¬®ªÓ £˜Î”˜ŠÈ‰}Ā…nÀxbŒovO¹iqI¶clCŽ]g3²Yc'°T^$®Q[®NY¬KV«HS«FRªDQ ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQ «FR «HS¬KV®NY®Q[°T^²Yc&Ž]g3·dm>¹iqIœqx\Áz€`ā‡vɋ}ϖ™Ô¢€šÛ®¯ªáº»¶èÇÈÓìÓÓöñÝÝÿõååÿöééÿ÷ëëÿ÷ëëÿöççÿôââÿòÜÜÿðÕÕÿíÏÏÿëÉÉüéÅÅöèÃÃóèÃÃóéÅÅôëËËôîÒÒ÷ñÚÚÿôââÿ÷êêÿúññÿüõõÿýùùÿýúúÿýüüÿýüüÿýüüÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýüüÿþüüÿþüüÿþüüÿþüüÿþüüÿýüüÿýúúÿü÷÷ÿûôôÿùððÿ÷ëëÿõååÿôààŠòÜ܊ñÛۅñÛÛròÝÝVôááwõååÿ÷ééÿøííÿøîîÿøîîÿ÷ëëÿõææÿòÞÞÿïÖÖÿëÌÍÿåÂÂêáž¹†Û¬®gÕ¢€\И›Rʍ‘BŅ‰7Á{.œqx$¹iqµaj²[e±V`®R] ®NY­LW¬IU¬IU«HS«HS«HS«HS¬IU¬KV­LX®OZ¯S] ±WaŽ]g·emºlt!Ÿu|(Ã~„2LjŒ9Β•KқX׊šdÜ°±˜â»Œ°çÆÆùëÐÑÿïÚÚÿóááÿ÷èèÿ÷ììÿùîîÿøîîÿøëëÿ÷èèÿôääÿòßßLòÜÜdñÛÛ{ñÛۅòÞޅôââ«÷ççÿ÷ììÿúññÿûõõÿýùùÿýûûÿýüüÿþüüÿþüüÿýüüÿþüüÿýüüÿýüüÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýûûÿýüüÿýüüÿýüüÿýûûÿýúúÿü÷÷ÿûôôÿùîîÿöççÿóßßÿðÖÖýíÏÏöëÉÉõéÄÄõèÃÃôéÄÄôéÇÇùëËËýîÑÑÿðØØÿòÞÞÿõääÿ÷ééÿ÷ììÿøííÿöêêÿôææÿñÞÞýìÓÓóçÇÈÂߺ»µÚ¬®¬Ó £ Î”˜ÈŠŽ|Ā…oÀy€dŒovT¹iqL¶clAŽ]g3²Yc*°T^#®Q[®NY¬KV«HS«FRªDQ ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQ «FR «HS¬KV®NY®Q[°T^²Yc(Ž]g.·dm:¹jrHœqxRÁz€^ā‡qɋ„Ï–™ŽÔ¢€ŸÛ®¯¥áº»œèÇÈÐíÓÓ÷òÞÞÿõææÿöêêÿøììÿ÷ëëÿ÷èèÿõääÿòÞÞÿðØØÿîÑÑÿëËËÿêÇÇÿéÄÄýéÄÄúêÇÇùëËËøîÒÒûñÚÚÿôããÿ÷ëëÿúññÿüööÿýùùÿýüüÿþüüÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþüüÿýúúÿü÷÷ÿûôôÿùîîÿ÷ééÿôããßòÞގñÚړðØ؊ðØØ{ñÛÛhóßßQõååý÷ééÿøííÿùïïÿùïïÿøííÿ÷èèÿóááÿïÙÙÿëÍÎÿæÅÅÿ⹺ëÛ­¯Ö£¥iҘ›Sˏ’BŅ‰:Á|‚-œqx%ºiq¶ck²[e±V` ¯Q\ ­NY¬LW¬IU¬IU«HS«GS«GS«HS¬IU¬JV­LW®OZ ¯S] ±WaŽ]g·emºlt Ÿu|*À…2ȉ:Β•Lӝ [Ù§©zÞ²³ŽäœŸûèÉÉÿíÓÓÿñÜÜÿôääÿ÷êêÿùîîÿùïïÿùïïÿ÷ììÿöèèÿôââŽòÝÝQñÚÚrðØ؀ðÙَñÜܓóßߘõååþ÷ëëÿúññÿüõõÿýùùÿýüüÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿýüüÿýûûÿýøøÿûôôÿùîîÿ÷èèÿôßßÿð××þíÐÐùëÊÊùéÅÅùéÄÄûéÅÅþêÈÈÿìÍÍÿîÓÓÿñÚÚÿôààÿöææÿ÷ëëÿøîîÿøîîÿ÷êêÿõççÿñÞÞúìÓÓðçÇÈÅߺ»°Ú¬®ªÓ¡€™Î”˜ŽÈŠŽƒÄ€…sÀy€fŒovT¹iqJ¶cl>Ž]g3²Yc(°T^#®Q[®NY¬KV«HS«FRªDQ ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQ«FR «HS¬KV®NY®Q[°T^#²Yc%Ž]g-·dm7¹jrFœqxTÁz€cā‡tɋ|ϖ™•Ô¢€£Û®¯§áº»±èÇÈØíÓÓúòÞÞÿõææÿöêêÿøììÿ÷ëëÿ÷èèÿõääÿòÞÞÿðØØÿîÑÑÿëËËÿêÇÇÿéÄÄÿéÄÄþêÇÇúëËËùîÒÒûñÚÚÿôããÿ÷ëëÿúññÿüööÿýúúÿýüüÿþüüÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþüüÿýúúÿü÷÷ÿûôôÿùîîÿ÷ééÿôââÚòÞޓñÚړðØ؊ðØØ{ñÛÛhóßßLõååý÷ééÿøííÿùððÿùððÿøííÿ÷èèÿóááÿïÙÙÿëÎÏÿæÅÅÿ⹺êÛ­¯™Ö£¥oҘ›Nˏ’BŅ‰:Á|‚,œqx'ºiq¶ck²\f±V`¯Q\ ­NY¬LW¬IU¬IU«HS«GS«GS«HS¬IU¬JV­LW®OZ¯S] ±WaŽ]g·fnºlt!Ÿu|&À…4ȉ;Β•Eӝ XÙ§©Þ³Ž³äœŸüèÉÉÿíÓÓÿñÜÜÿôääÿ÷êêÿùîîÿùïïÿùïïÿ÷ììÿöèèÿôââŠòÝÝQñÙÙrðØ؀ðØ؎ñÛۓóßߜõååþ÷ëëÿúññÿüõõÿýùùÿýüüÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿþýýÿýüüÿýûûÿýøøÿûôôÿùîîÿ÷èèÿôßßÿð××þíÐÐúëÊÊúéÅÅûéÄÄÿéÅÅÿêÈÈÿìÍÍÿîÓÓÿñÚÚÿôààÿõææÿ÷ëëÿøîîÿøîîÿ÷êêÿõççÿñÞÞ÷ìÓÓïçÇÈÊߺ»¶Ú¬®«Ó¡€›Î”˜ŠÈŠŽ„Ä€…pÀy€iŒov\¹iqO¶cl=Ž]g0²Yc)°T^#®Q[®NY¬KV«HS«FRªDQ ©DO ©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQ «FR «HS¬KV®NY®Q[°T^#²Yc)Ž]g.·dm?¹iqEœqxYÁz€`ā‡rɋ…Ï–™‹Ô¢€—Û®¯£áº»ŽèÇÈÒìÓÓôñÝÝÿõååÿöééÿ÷ëëÿ÷ëëÿöççÿôââÿòÜÜÿðÕÕÿíÏÏÿëÊÊþêÅÅûèÄÄ÷èÄÄõêÆÆõëËËõîÒÒ÷ñÚÚÿôââÿ÷ëëÿúññÿüõõÿýøøÿýûûÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿþüüÿþüüÿþýýÿþýýÿþýýÿþýýÿýüüÿýúúÿü÷÷ÿûôôÿùïïÿ÷êêÿõååûóßߊñÜ܎ñÚڅñÚÚwòÜÜZôààdõååþ÷ééÿøííÿùîîÿùîîÿ÷ëëÿöææÿòßßÿïÖÖÿëÌÍÿåÃÃ÷Ṻ¬Û­¯kÕ£€Zј›Oʍ‘CŅ‰:Á{.œqx%ºiq¶ck²\f±V` ®R] ®NY­LW¬IU¬IU«HS«HS«HS«HS¬IU¬KV­LX®OZ¯S] ±WaŽ]g·emºlt!Ÿu|'Ã~„2ȈŒ=Β•EӜŸUק©]ݱ²}㜟ÜçÇÇþíÑÑÿïÛÛÿóââÿ÷èèÿøííÿùïïÿùîîÿøëëÿ÷èèÿôãããóßßLñÜÜmñÚÚ{ñÚڊñÝݎôááœöææÿ÷ììÿúññÿûõõÿýùùÿýûûÿþüüÿþýýÿþýýÿþýýÿþýýÿþüüÿþüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýüüÿýúúÿü÷÷ÿûôôÿùîîÿ÷èèÿóßßÿð××ýíÏÏöëÉÉõéÄÄõèÄÄöéÄÄùêÇÇüëÌÌÿîÑÑÿñØØÿóÞÞÿõääÿ÷ééÿ÷ììÿøííÿöêêÿôååÿñÞÞÿìÓÓìçÇÈÉߺ»¹Ú¬®ŠÓ £—Δ˜‰ÈŠŽÄ€…oÀy€aŒovX¹iqG¶cl;Ž]g.²Yc,°T^$®Q[®NY¬KV«HS«FRªDQ ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQ «FR «HS¬KV®NY®Q[°T^!²Yc(Ž]g3·cl<¹iqNœqxTÁz€cā‡lɋ~ϖ™Ô¢€•Û®¯Šáº»¹èÆÇÖìÒÒïñÝÝúôääÿõççÿöééÿöççÿõääÿòÞÞÿñØØÿîÑÑüëËËöêÆÆðèÃÃîèÁÁíèÁÁîéÄÄîëÊÊïîÑÑôñÙÙÿôââÿ÷ééÿùððÿûôôÿü÷÷ÿüùùÿýúúÿýúúÿýúúÿýúúÿýúúÿýúúÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýúúÿýúúÿýúúÿýúúÿýúúÿýúúÿýúúÿýûûÿýûûÿýûûÿýúúÿü÷÷ÿûôôÿúððÿ÷ììÿöççÿôââœóßßwòÞÞmòÞÞ_óßßZôããèöççÿ÷ëëÿ÷ííÿøííÿ÷ëëÿ÷èèÿôââÿñÛÛÿíÓÓÿéÉÊö埿­àŽµsÚª«fÕ ¢^ϖ™Qʍ‘Dш6Áz€+œqx%¹iqµaj²\f±V`¯R] ®OZ­LW¬KV¬IU¬IU¬IU¬IU¬IU¬IU¬KV®NY®OZ °T^ ²XcŽ]g¶dmºltŸtz&Â~„1dž‹<̑•CқT×¥§bܯ°p⹺˜çÄÄÚëÌÍþï××ÿòÞÞÿöååÿ÷êêÿøììÿøííÿøëëÿ÷èèÿöååÿôââ¡òßßVòÞÞdóßßrôàà€õääûöèèÿøîîÿúòòÿûööÿýøøÿýúúÿýûûÿýûûÿýûûÿýúúÿýúúÿýúúÿýúúÿýúúÿýúúÿýúúÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýùùÿýúúÿýúúÿýúúÿýúúÿýúúÿýúúÿýùùÿü÷÷ÿûóóÿøîîÿöççÿóßßÿðÖÖüíÎÎñêÈÈïèÃÃïèÁÁïèÁÁïéÄÄïêÈÈóìÎÎùïÔÔþñÛÛÿôááÿõææÿ÷ééÿ÷ëëÿöééÿôääþðÝÝúëÒÒìçÆÇÁß¹º¯Ú¬®¥Ó £œÎ”˜ˆÈ‰ƒÄ€…pÀxeŒovQ¹iqN¶clCŽ]g4²Yc)°T^!®Q[®NY¬KV«HS«FR ªDQ ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ «FR «HS¬KV®NY®Q[°T^ ²Yc)Ž]g1·cl8¹iqKœqxPÁz€cā‡mɋ}ϖ™‰Ô¢€žÛ®¯®á¹ºŽçÆÇËëÑÑéðÜÜöôããøõååüöææÿõääÿóßßþñÙÙöîÓÓïìÍÍêêÇÇçèÂÂèæ¿¿è眜çç¿¿èèÂÂéëÈÈëîÐÐññÙÙÿôááÿ÷èèÿøîîÿúóóÿüõõÿü÷÷ÿü÷÷ÿüööÿüööÿûööÿûõõÿûôôÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûôôÿûõõÿûõõÿûööÿüööÿü÷÷ÿü÷÷ÿü÷÷ÿýøøÿýøøÿüøøÿü÷÷ÿûõõÿúòòÿøîîÿ÷ëëÿõççÿõååñôââÂôããÇõääÿöççÿ÷ééÿ÷ëëÿ÷ëëÿ÷ëëÿöèèÿõääÿòÞÞÿî××ÿëÍÎöçÅŰ㻌ŒÝ±²vا©bԜŸXΓ–IɋAā‡6Ày*Œov"¹iqµaj²\f°V`¯R] ®OZ®NY­LW¬KV¬JV¬IU¬IU¬JV¬KV­LW­NY®Q[ °T^ ²XcŽ]g·dmºkrœry$Â|‚0ƅ‰;ˎ‘BїšUÕ¡£XÚª¬gß³Žä¿¿”èÇÇßìÑÑýðÙÙÿóààÿöææÿ÷êêÿ÷ëëÿ÷ëëÿ÷êêÿöèèÿöååÿõããèôââÂôââÌõååÿöèèÿ÷ììÿúððÿúóóÿüööÿü÷÷ÿüøøÿýøøÿüøøÿü÷÷ÿü÷÷ÿüööÿüööÿûööÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûõõÿûôôÿûõõÿûööÿüööÿü÷÷ÿü÷÷ÿüööÿûôôÿúññÿøììÿöååÿóÝÝÿïÕÕûìÍÍïéÆÆëèÁÁé矟é矟êçÀÀêéÄÄéëÉÉêíÏÏìïÖÖññÜÜùôââþöææÿöèèþõççúóããöïÝÝðëÑÑâæÅÆÁß¹ºµÙ¬®ªÓ £œÎ”˜‰È‰€Ä€…v¿w~`ŒovZ¹iqH¶cl7Ž]g.²Yc(°T^$®Q[®NY¬KV«HS«FRªDQ ªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ«FR «HS¬KV®NY®Q[°T^#²Yc%Ž]g3·cl@¹iqGœqxNÁz€fā†vɋÏ•˜Ô £–Û­®£á¹º«çÆÇÁëÐÐÞðÚÚåóááéôããñõããóôààöñÛÛãïÔÔàìÎÎáêÇÇåèÁÁä朜ä庺ä庺ã匌äèÁÁçéÇÇëìÏÏïð××þóßßÿöççÿ÷ììÿúððÿúòòÿúòòÿúòòÿúññÿúññÿùïïÿùïïÿùîîÿùîîÿùîîÿùîîÿøííÿøííÿøííÿøííÿøííÿøííÿøííÿøííÿøííÿøííÿøííÿùîîÿùîîÿùïïÿùïïÿúïïÿúññÿúññÿúòòÿûóóÿûôôÿûõõÿüõõÿüõõÿûôôÿúòòÿúððÿøîîÿ÷ëëÿ÷èèÿ÷èèÿ÷èèÿ÷èèÿ÷êêÿ÷ëëÿ÷êêÿ÷êêÿ÷èèÿõääÿòÞÞÿïØØÿìÏÏñèÆƱ俿Œßµ¶€Û«­oÖ£¥dҚœT͑”LȈŒ?Ā…2¿v}*Œov žhpµaj²\f±Wa°T^ ¯Q\ ®OZ®NY­LX­LW­LW­LW­LW­LX­NY®OZ ®R] ±T_ ²YcŽ]g·dm¹jrŸry&Áz€-ш4Ɍ?ϔ˜MԞ ]Ø¥§lݯ°r⹺ŠæÁÁ”éÉÊàíÒÒüðÚÚÿóààÿöååÿ÷ééÿ÷êêÿ÷ëëÿ÷êêÿ÷ééÿ÷èèÿ÷èèÿ÷èèÿ÷êêÿ÷ììÿùïïÿúññÿúóóÿûôôÿüõõÿüõõÿûôôÿúôôÿúóóÿúññÿúññÿúððÿùïïÿùïïÿùïïÿùîîÿøííÿøííÿøííÿøííÿøííÿøííÿøííÿøííÿøííÿøííÿøííÿùîîÿùîîÿùîîÿùîîÿùîîÿùïïÿùððÿúññÿúññÿúòòÿúóóÿúññÿùïïÿ÷êêÿõääÿòÜÜÿïÔÔúëËËìéÄÄé矟æå»»æ庺æå»»æ矟æèÄÄæëÊÊåîÑÑãñ××ßòÞÞêõââöõååñôääîòááéïÙÚâêÐÐÛæÄÅ°ßž¹«Ø«­£Òž •Î“—ŠÈ‰ƒÃ€…t¿w~gŒovZ¹iqI¶cl?Ž]g3²Yc)°T^"®Q[®NY¬KV«HS«FR ªDQ ªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ «FR «HS¬KV®NY®Q[°T^ ²Yc'Ž]g.·cl=¹iqBœqxOÀydā†mɋ‚Ï•˜ŒÔ £•Ù«­›à¹ºšåÄÅ»ëÏÏÙïÙÙâòÞÞçóááìôààññÜÜòð××ÛíÐÐßêÈÈâçÀÀãå»»ãäžžã㶶ã㶶ãä¹¹ä朜çéÅÅèìÍÍîïÖÖþòÞÞÿõååÿ÷êêÿøííÿøîîÿøîîÿ÷ììÿ÷ëëÿ÷êêÿ÷èèÿ÷èèÿõççÿõææÿõææÿõææÿõææÿõææÿõææÿôææÿôææÿôææÿôææÿôææÿôææÿõææÿõææÿõææÿõççÿöççÿõççÿöççÿöèèÿ÷ëëÿ÷ëëÿ÷ííÿùîîÿúððÿúññÿúòòÿúòòÿúññÿúññÿúððÿùïïÿùîîÿøííÿøííÿ÷ììÿ÷ëëÿ÷ëëÿ÷êêÿöççÿôããÿñÝÝÿïØØÿìÐÐ÷èÇÈÃåÀÀ’á·ž…Ý®¯|ÙŠ§n՞ ^ϖ™Qʍ‘DƆ‹9Â}ƒ0Ÿt{(»nu!žgpµaj³\f²Xc±U` ¯R] ¯Q\ ®OZ®OZ®OZ®NY®NY®OZ®OZ®PZ¯Q\ °T^ ±V`³YcŽ]g·clºiqŒpw#Àw~*Á†3ȈŒ:̑”FјšTÖ¡£^Ú©«sÞ±²z亻‘æÃÞéËÌÌíÒÒüðÙÙÿóßßÿõååÿ÷èèÿ÷ëëÿ÷ëëÿøììÿøììÿøììÿøííÿùîîÿùððÿúññÿúññÿúòòÿúòòÿúòòÿúññÿùïïÿøîîÿøììÿ÷ëëÿöééÿöççÿõççÿöççÿöççÿõææÿõææÿõææÿõææÿôææÿôææÿôææÿôææÿôææÿôææÿõææÿõææÿõææÿõææÿõææÿõææÿöççÿöèèÿ÷ééÿ÷ëëÿ÷ëëÿøîîÿøîîÿøîîÿ÷ëëÿ÷èèÿôââÿñÚÚÿîÓÓùëÊÊêèÂÂèä»»æã··ä㶶ä㶶åä¹¹æ朜æéÄÄäëËËáîÓÓÜñÙÙãóßßõôââîóââæòààåîØÙßêÏÏÓåÃį޷ž€Ø©«ŸÒŸ”Í“—ƒÈ‰vÀ…t¿w~cŒovV¹iqG¶ck?³\f+²Xc&°T^"®Q[®NY¬KV«HS«FR ªDQ ªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ «FR «HS¬JV®NY®Q[°T^#²Yc&Ž]g,¶cl8ºiqBŒpwQÀy[Á†kȊŽ}͕˜‚Ô £’Ùª¬žßž¹£åÃĹêÎÎÙî××ßñÞÞåòÞÞìóÝÝíñÙÙñîÓÓÝëÌÌÝèÃÃá匌ãã··á㎎ââ³³ââ³³à㶶áä»»äèÂÂæëËËëïÓÓýñÜÜÿôââÿöççÿ÷ééÿ÷ééÿ÷èèÿõææÿõääÿôââÿóßßÿòÞÞÿòÝÝÿñÝÝÿñÝÝÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÝÝÿñÞÞÿñÞÞÿóßßÿóááÿóââÿôääÿöççÿ÷ééÿ÷ëëÿøîîÿúïïÿúððÿúññÿúññÿúññÿúññÿùððÿùððÿùîîÿøììÿ÷ëëÿöççÿôããÿñÝÝÿï××ÿìÐÐðèÇÈÀåÁÁšâž¹ŽÞ¯°}Ú§©rÖ¡£eјšX͑”LȉŽ@ł‡7Áz€-Ÿsy'ºlt·fnµaj³\f³Yc±Wa ±U` °T^ ¯S] ¯R] ¯R] ¯R] ¯R] ¯R] ¯R] ¯S] °T^ ±V` ±Wa³Zeµ_i·cl¹iqŒov#¿v|*Â}ƒ2ƅ‰=ʌFΔ—PӜž[×£¥iÛ¬­zß³Ž…㌌æÃÞéÊËÙíÓÓüðÙÙÿóßßÿõååÿ÷èèÿ÷ëëÿøííÿùïïÿúððÿúððÿúññÿúññÿúññÿúññÿúððÿøîîÿøììÿ÷ëëÿ÷èèÿõååÿôääÿóááÿóààÿòßßÿñÞÞÿñÞÞÿñÝÝÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÜÜÿñÝÝÿñÝÝÿòÝÝÿòÞÞÿòÞÞÿóßßÿôââÿõååÿöççÿ÷èèÿ÷ééÿöèèÿöååÿóààÿñÙÙÿîÑÑ÷êÈÈèçÀÀçä¹¹åãµµãâ³³ãâ³³äâµµãä¹¹äæ¿¿ãèÆÆÝìÏÏÛðÖÖãñÜÜòôßßëóààåñÞÞãîÕÖàéÎÎÐåÂë޶· Ø©«œÒŸ“Í’–ˆÇˆŒ{À…k¿w}`ŒovO¹iqJ¶ck=³\f-²Xc$°T^ ®Q[®NY¬JV«HS«FR ªDQ ªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ «FR «HS¬JV®NY®PZ°T^²Xc$Ž]g,¶cl5ºiq@ŒpwUÀyYÁ†sȉ~Δ—ˆÓž¡’Ùª¬žßž¹¢åÃijêÍÍÓî××ÝðÜÜâñÝÝéñÜÜíð××ìîÐÐÜêÈÈÛçÀÀßä¹¹á⎎áá±±àá°°Ýá±±ß⎎Ýä¹¹âçÁÁäêÉÉéîÒÒüñÚÚÿôßßÿõããÿõååÿõååýôââýóßßýðÛÛýðØØýïÕÕýíÔÔüíÓÓüíÒÒûëÑÒûëÑÒûëÐÑûëÐÑûëÐÑûêÐÐûêÐÐúêÐÐúêÐÐúêÐÐùêÐÐúêÐÐúêÐÐùëÐÑúìÐÑúìÑÒûìÒÓûíÓÔúîÔÔûîÖÖýïÙÙÿñÛÛÿòÞÞÿóááÿôääÿöèèÿ÷êêÿøííÿùïïÿúññÿúññÿúññÿúññÿúññÿøîîÿ÷ëëÿ÷èèÿõããÿñÝÝÿð××ÿìÏÏòèÆÇ·åÀÀâž¹”Ý°±‡Úšªzס£iӚ]Γ•PʌHDžŠ>Ã~ƒ3Àw~+œqx#ºls·fn¶ckµ_i²\f²Zd²Yc±Wa±Wa ±Wa±Wa±Wa±Wa ±Wa±Wa±Wa±Wa ²Yc²Ze³\fµ_i·cl¹hp»nu Ÿtz&Áz€0ł‡7ȉŽA̐“MЖ™SԝŸaØ¥ŠpÜ­®yß³Ž†ãŒŒ˜æÃñéÊËÎíÒÒúðÙÙÿóßßÿõååÿ÷ééÿ÷ííÿùïïÿúññÿúññÿúññÿúññÿùññÿùîîÿ÷ììÿ÷ééÿöææÿóââÿòßßÿòÜÜÿïÛÛÿïØØþïÖÖüíÔÔûìÒÓûìÑÒúìÐÑúìÐÑúëÐÑúêÐÐúêÐÐúêÐÐúêÐÐúêÐÐúêÐÐúêÐÐûêÐÐúëÐÑúëÐÑûëÐÑûëÑÒûíÒÒûíÒÒûíÔÔüíÕÕüïÖÖýðÙÙýòÝÝþôààýôããüõååþõååÿôââÿòÝÝÿðÖÖÿíÏÏôéÆÆå柟åã··ãâ³³âá°°âá°°âá²²â㶶ã匌âèÃÃÚêËËÖîÓÓáñÙÙðóÞÞéòÞÞçðÛÛÞîÕÖÜéÍÍÌäÁª޵¶ Ø©«”ҝŸÍ‘•„LJŒ{À…h¿w}_ŒovR¹hpI¶ck=³\f.±Wa$°T^!®PZ®NY¬JV«HS«FRªDQ ªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ«FR «HS¬JV®NY®PZ°T^ ²Xc%³\f(¶ck<¹iqGŒovMÀx[Á†nȉzΓ–…Óž¡Ùª¬˜ß·ž åÂîêÍÍÌî××ÞðÛÛáñÜÜèñÜÜíðÖÖðìÏÏÚéÆÆÕ柟Üãžžàá³³ßá°°ÝᯯÛá°°Üâ³³Úä¹¹Þç¿¿áéÈÈäíÏÏùñØØÿòÝÝÿôààÿôááÿóßßùñÜÜñð××óîÓÓñíÏÏðëÍÍîéÉÊëèÈÉéèÆÆççÆÆåçÆÆåæÅÅáæÅÅãæÅÅÜæÄÄßæÃÄÙæÃÄÖæÃÄÚæÃÄÛæÃÄÕæÄÄÔæÄÄÕæÅÅÝæÅÅÚæÅÅàçÆÆåèÈÈåéÉÊåêÊËìêÍÎïìÑÑõíÓÓúïØØþñÛÛÿóßßÿõääÿ÷èèÿ÷ëëÿøîîÿúññÿúññÿúññÿùððÿøììÿ÷èèÿôääÿñÝÝÿðÖÖÿìÎÎðèÆÇ¿åÀÀ£ãž¹‘Þ°°†Úšª|×¢€p՛bŘY̎’NȉŽCł‡9Â{€2Ÿu|(Œov#ºkr·fn¶clµ`jµ_iŽ]g³\f³\f³\f³\f³\f³\f³\f³\f³\f³\f³\f³\fŽ]gµ_iµaj¶dm¹hpºlt Ÿry$Àw~+Ã~ƒ2Ƅˆ<ʋC͑”SИš[ԝ gØŠ§rܬ­ß²³ã»»™æ°éÊËÈíÒÒùðÙÙÿóßßÿöææÿ÷êêÿøîîÿúññÿúññÿúññÿúððÿøîîÿ÷êêÿöææÿóááÿòÞÞÿðÙÙþíÖÖüíÒÒøìÏÏóêÍÎíêÉÊçèÉÉççÇÇæçÅÅÝæÅÅáæÅÅÚæÄÄÛæÄÄÖæÃÄ×æÃÄÙæÃÄÛæÃÄÙæÃÄÙæÄÄÝæÄÄßæÅÅáæÅÅáçÅÅäçÆÆäçÆÆåèÆÇèèÈÉêêËËíìÎÎïíÑÑñîÕÕòñÙÙòòÝÝòôààýôááÿóßßÿñÛÛÿïÖÖÿëÌÌñèÄÄä挌â㶶Ýâ²²Þ௯à௯áá±±á⎎â人ÜçÁÁ×êÉÉÔîÒÒãñÙÙìñÛÛèñÜÜåïÚÚÝîÔÕÙèÊÊÄä¿À€Ý³µŸ×šª˜Ò›ž‰Ì‘”‚LJŒuÃ}ƒfŸv}]ŒnuPžhpEµaj:³\f,±Wa%°T^®PZ­LX¬JV«HSªFR ªDPªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDP ªFR «HS¬JV­LX®PZ°T^ ±Wa"³\f.¶ck7¹iqEŒovS¿w~YĀ…bȉqΓ–†Òž¡‘Ù©«”߶·¢åÂêêÌÌÌîÖÖÚïÛÛàñÛÛæðÙÙêðÖÖëìÍÍÛéÆÆÔ朜Û㶶Ûá²²Úß®¯Ø߬­Øß®¯Ùá³³Ù㶶Ù柟ÜéÆÆÝìÎÎóðÖÖÿñÛÛÿòÞÞÿòÞÞÿñÛÛùð××ëíÑÑëëÌÌêèÈÈèçÃÄæåÁÁÚ䟟Ô䌌Í㌌Ê㺻È⺻Æ⹺ÄṺÀážž¿á·ž¿á·ž»á·ž»á·ž»á·žºá·ž»ážžºá¹º»â¹ºœâ¹º¿âº»Á㌜Åã¿¿ÕäÀÀÓæÃÃÜèÅÅáèÉÊáëÎÎëìÑÑñð××øñÜÜÿóààÿõææÿ÷êêÿøííÿùîîÿùîîÿ÷ììÿ÷ééÿõääÿòÝÝÿï××ÿìÏÏîèÆÇœåÀÀžâž¹•Þ±±‰Ú©ªØ¢€pԜžiϕ˜]͐“PɋEƄˆ=Ã~ƒ5Áy-Ÿsy'Œnu"ºkržgp·fn·cl¶ck¶ck¶ck¶ck¶ck¶cl¶cl·cl·cl¶cl¶cl¶ck¶ck¶ck¶ck¶cl·dm·fn¹iqºlt Œpw$Ÿu|)Â{€-Ā†8ȇ‹>ʍG͒•Sј›]՟¡iÙ¥Švܬ­ƒß²³Œã»»™æ­éÊË×íÒÒ÷ðÙÙÿóààÿöææÿ÷êêÿøííÿùîîÿùîîÿ÷ììÿ÷ééÿõååÿòÞÞÿðÚÚýîÕÕôìÐÐíéËÌæèÇÈççÄÄÞåÁÁÜä¿¿Ó䌜Ì㻌È⺻Ä⹺ÁṺ»ážž»ážžºá·ž»á·ž»á·žºá·ž»á·žŒážž¿ážžÀ⹺Ã⹺Å⺻Æ㺻È㌌Ë䌌Ï域ÕæÁÂßçÄÅçêÉÉëìÎÎëîÓÓêñÙÙîñÜÜþòÝÝÿòÝÝÿñÙÙÿíÒÒÿêËËéèÃÃÜ匌Ü㶶Ù௰Ýß­®Ýß­®Þ௰ßâ³³ßä¹¹ÙçÀÀÕêÉÉÒíÑÑâñÙÙìñÛÛçñÜÜãïÚÚÜíÒÓ×èÉÉÁ㟿¢Ý²Ž™×§©—Òš‰Ì“Æ†‹tÂ}ƒgŸt{\»nuLžgpHµaj;³\f,±Wa'°T^®OZ­LX¬JV«HSªFR ªDPªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR «HS ¬JV­LX®OZ°T^±Wa ³\f'µaj3¹hpBŒovQ¿v|\ÄhȈŒ{͑•|ҜžŠØšª˜Þµ¶ŸåÀÁ§êËËÊíÔÕÙïÚÚßñÛÛâðÙÙéïÕÕëìÍÍÚéÆÆÎ朜Õ㶶Øà±²Úß­®×߬­Öß­®×à±²Õ㶶Õ挌×éÅÅØëÌÌìïÓÓýðÙÙÿñÜÜÿñÛÛÿðØØüîÒÒéëÌÌèéÆÆçæÀÁãä»»ÝážžÒᎵÆ೎Àß²³œÞ°±ºÝ¯°·Ü®¯ŽÜ®¯±Û¬®¯Û¬®¬Û¬®«Û¬®©Û«¬©Û¬®šÛ¬®§Û¬®«Û¬®«Ü¯°¬Ü¯°¬Ý°±°Þ°±²Þ³³¹àµ¶·á·ž¿ãŒŒËä¿¿ÐçÃÃÞèÇÈáìÎÎåíÔÔîðÙÙýòÞÞÿõääÿöèèÿ÷ééÿ÷ééÿöççÿôããÿñÝÝÿð××ÿìÏÏîèÆÇœåÀÀâž¹–Þ±±‰Ú©ª€Ø¢€sԜžhϖ˜]͑”TʋHDžŠAÄ„7Â{€1¿v|*œqx%»nu!ºkr¹iqžhpžgožgožgp¹hp¹iqºiq¹jrºkrºkrºkrºkr¹jr ºiq¹iqžhpžgpžgožgp¹hp¹iqºltŒov"Ÿsy(Àw~-Â|‚1Ł†;ȈŒDˎ’KΔ—Xј›`՟¡oÙ¥Šxܬ­„ß²³Œã»»™æ€éÊËÆíÒÒùðÙÙÿóßßÿõååÿ÷èèÿ÷ééÿ÷èèÿöææÿôââÿñÜÜÿð××úìÑÑëëÊËäèÅÆÝåÁÁÜ䜜Ð㹺Èᶷ¿ßŽµŒÞ²³ŽÝ°±±Ý¯°¯Ü¯°±Ü¯°¬Û¬®«Û¬®©Û¬®šÛ¬®ªÛ«¬ªÛ¬®«Û¬®­Û¬®­Û¬®°Ü®¯²Ý®¯µÝ¯°žÞ²²ºß²³Ÿà³ŽÁᶶÐâ¹¹Ø圜ÛçÂÂäêÉÉçìÏÏæïÕÕïñÙÙÿñÛÛÿñÛÛÿð××ýíÐÐúêÊÊáçÁÁÖä¹¹Ø᳎Ø௰Ü߬­Ü߬­Ý௰Üâ³³ßä¹¹ÙçÀÀÔêÉÉÑíÑÑåðØØèñÛÛæñÜÜáïØØÙíÑÒÕèÈȹ㜟¢Ý°²Ö€§’Ñ™œŠË’Æ…‰qÂ~„bŸt{^»nuRžgo>µaj0²\f)±Wa%¯S]®OZ­LW¬IU«HSªFR ªDP ªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR «HS¬IU­LW®OZ¯S]±Wa$³\f(µaj0žhp@»nuPŸu|ZÃ}ƒgLJŒt͐”€Òœž‰Ø§©Ý³Žå¿À¢èËËÇíÒÓØïØØßñÛÛáðÙÙåïÕÕëìÏÏÛéÆÆÏ柟Óã··Öà±²×ß­®×ß«¬Ô߬­Ôà°±Ô⵶Ó匌ÖèÃÃÖêÌÌèíÒÒüðÖÖþñÙÙþðÙÙÿðÕÕýìÏÏçêÉÉäçÁÂãä»»ÚᶶÐß±²ÊÞ­®»Ü«¬ŽÚ©ª¯Ù§©¬ØŠ§š×€Š€×£¥¢Ö£¥žÕ¢€›Õ¡£šÕ¡£™Õ¡£™Õ¡£—Õ¡£˜Õ¢€™Ö¢€šÖ£¥™×€ŠžÙŠ§¡Ú§š Ú©«ŠÜ¬­©Ý­®¬ß±²³àŽµ·ãž¹»ä¿¿ÆçÃÃØêÊËâíÒÒêðØØýñÜÜÿóààÿôããÿôããÿóßßÿñÜÜÿïÖÖÿìÏÏíèÆǶåÀÀœá·ž‘Þ°°ŠÚ©ª~Ø¢€tԜžiЗ™`͑”VʌKȇ‹BŁ†:Â|‚3Àw~-Ÿtz(Œpw$»nu"ºltºkrºkrºlsºlt»nuŒov"Œpw#œqx$œry&œry%Ÿsy%Ÿsy(œry&Ÿry(œqx%Œov%Œnu »nu ºltºkr ºkrºlsºltŒov"Ÿry$Ÿu|)Áy0Ã~ƒ6ł‡=ȈEˎ’OΓ–Xј›c՟¡mÙ¥Šwܬ­‚ß²³‹ã»»•æ©éÊËÖíÑÑøðÙÙÿòÞÞÿóááÿôããÿôââÿóßßÿðÛÛÿîÕÕ÷ìÎÎàèÇÈÞæÁÁ×䌌Äâ·ž¿à³Ž°Þ°°²Ü­®«Úª«¥Ú§©¡Ù§š ×¥§ ×£¥Ö£¥›Ö¢€—Õ¡£—Õ¡£™Õ¡£—Õ¡£šÕ¡£›Õ¢€›Ö¢€Ö£¥ ×€Š£Ø¥ŠŠÙŠ§©Ù§©­Û©ª±Ý¬¬žÞ®¯Àà±²Ëá··Ø土ÜçÄÄãëËËáíÑÑîðÖÖýðÙÙýðÙÙüðÖÖúìÏÏöêÉÉÜçÀÀÖä¹¹Õá²³Ö௰Ùß«¬Øß«¬Û௰Ýá²³Ýä¹¹ÖçÁÁÑêÉÉÏíÑÑæðØØéñÛÛäñÛÛàïØØÝìÑÒÖæÇǶ⌌Ü¯±™Ö€Š‘ј›…ʏ’‚Å…‰rÂ}ƒ_ŸtzVºltJ·fnAµ`j0²[e%°V`!¯R]®OZ­LW¬IU«GS ªFR ªDPªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR «GS¬IU­LW®OZ¯R]±Wa$²[e&µaj7žgo;»nuGŸt{]Â~„jƆ‹rː“~ҙœ‰×Šš‘ݱ³˜ãŸ¿ŸèÉÉÀíÒÓÔïØØÛñÛÛßðÚÚåïÕÕèíÏÏÝêÇÇÌç¿¿ÏäžžÔà±²Õß­®Öß«¬Õß«¬Ô௰ÔᎵÒ人ÓçÂÂÔêÉÉßíÐÐøðÖÖúð××ûð××üîÒÒýìÍÍçéÇÇÞ埿Ûá··Ðß°±Éݬ­ŒÛš©®ØŠ§§Ø¡¢¢ÖŸ¡žÕž šÔœž•Óš’Ò™œŽÑ˜šŒÑ˜šŠÑ˜š‡Ñ˜š‡Ñ˜š†Ñ˜š‡Ñ˜š†Ñ˜š…Ò™œ‹ÓšŒÔœžÕŸ“Õ ¢•×¢€—Ù€¥›Ú§©›Û«¬Þ°±Šàµ¶«äŒŒÂçÁÁÍèÇÈØìÏÏïîÕÕÿðØØÿðÛÛÿðÛÛÿðØØÿíÕÕÿìÎÎìèÆÇŽå¿¿”á·žŽÞ±±‡Úšª~Ø¢€sԜžiИš`͑”VʌMȇ‹CŁ†<Ã|‚4Áy/Ÿu|*œry&Œpw$Œnu!»nu »nu#Œov!œqx%œry&Ÿtz(¿v|(Ày*Áz€.Â}‚0Â}ƒ0Â~„1Â~„.Â}‚/Á{-Áz€+Àw~-Ÿu|)Ÿtz&œqx$Œpw#Œov"»nu!Œnu Œov"œqx$Ÿtz)¿v},Â{€0Ä7ƃ‡?ɉH̎’Rϓ–Yј›dԟ¡mÙ¥Švܬ­ß²³ˆã»»æÃçéÊËÌìÑÑøïÖÖÿðÙÙÿðÛÛÿðÚÚÿï××ÿíÓÓüëËÌßèÅÆÕä¿¿Ëãž¹¹à³ŽŽÞ¯¯¯Ûª«¡ÙŠššØ€¥š×¢€‘ÖŸ¡’ԝŸ‘ÓœžÒ™œŒÒ™œ…јš†Ñ˜š†Ñ˜š‡Ñ˜š…јš‡Ñ˜šˆÑ˜š‹Ñ˜šŽÒ™œ‘Ó›“Ôœž—Õž ›×Ÿ¡ŸØ£¥¥ÙŠ§¯Üš©œÞ­®ÁàŽŽÍ㺺ØæÁÂÜêÉÉÛíÐÐîïÕÕùð××ùð××øîÔÔ÷ìÎÎïêÇÇÔç¿¿Òä¹¹ÒಳÖß®¯Øß«¬Ùß«¬Ú௰Û᳎Ø人ÒçÂÂÍêÊÊÎíÒÒæðØØçñÛÛâñÛÛÝï××ØëÏÏÖçÅƭẻŸÛ®¯˜Õ£¥‹Ð˜›…ʍ‘|Ņ‰qÂ|`ŸsyYºltJ·fn9µ_i-³Ze*±V`"¯R]®OZ­LW¬IU«GSªFR ªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªFR «GS ¬IU­LW®OZ¯R]°V` ³Ze'µ`j3·fn7ºltHŸtz[Â~„^ƅ‰mˏ’}љœ‰Ö€§‘ݯ±™ãŒœžçÇÇœìÑÒØïØØÜðÛÛàðÚÚæïÖÖèíÏÏåêÈÈÏçÀÀÐä¹¹Ñá²³Öà­®Õß«¬Ôß«¬Ó௰Òá²³Ñä¹¹ÒçÁÁÒêÈÈÚíÏÏöïÕÕ÷ð××øðÖÖùîÒÒùëÍÍåèÅÅÖ圜ÖᶶÐÞ­®ÀÜš©·Ø€¥¥Ö ¡Óœž–Óšœ‘Ñ—š‹Ð•˜‡Ï”—‚Î’•~͑”{͑”y͐“x̏“v̏“t͐“s͐“w͑”v͑”vΒ•zϔ—xϕ˜|ј›„Òšœ„Óœž…ÖŸ¡ŒÙ€¥’Ùš©’Ý­®™à³ŽŠã¹º±åÀÀŸèÅÆÖëËÌðìÐÐÿìÑÑÿìÑÑÿìÐÐÿéËÌöèÅų忿”ᶷ‰Ý°±‚Úšªz×¢€pԜžgϖ˜_͑”VʌMȇ‹DŁ†<Ã~ƒ6Áy/¿v|-Ÿtz(Ÿry%œqx%Œpw$œqx%Ÿry$Ÿtz(¿v|)Áz€,Â|‚/Ä1ā†7ш6Ɔ‹5Ɔ‹<dž‹;Ɔ‹9ƅ‰7Ņ‰;ш9À…5Ã}ƒ1Â{€,Àw~,Ÿu|(Ÿsy'Ÿry%œqx%œqx#œqx$œry&Ÿt{)Àw~-Â{2Ä9ƃ‡@ɉHˎ’PΓ–Wј›a՟¡kØ¥Šsܬ­}ß²³ƒä¹ºæªèÇÈÖëÍÎýìÐÐÿìÑÑÿìÑÑÿìÎÎÿéÉÊçèÃÃÉ䜜Ãâ·ž¶Þ°± Û«¬ ÙŠšØ£€‘Ôž Óœž†Ò™œ„Иš‚Ï•˜|Γ•z͒•w͑”y͑”w͐“v̏“ȕ“w͐“v͐“x͑”z͑”}Β•Ð”—…Ж˜‰Ò™›Óšœ’ԝŸ˜×¡£¢Ú¥Š­Ü«¬Ÿß°±ËážžÐåÀÁÓêÉÉÕíÏÏíîÔÔõð××õðÖÖôîÒÒõëÍÍêéÆÆÑ朜Ðã··Ïà±²Óß®¯Õß«¬Öß«¬Ù௰ØᎵ×å»»ÐèÄÄÍêÌÌÏíÒÒçðØØæñÛÛáñÛÛÞï××ÚêÏÏÏæÄÅ¬àž¹ Ú­®‘Õ ¢Ï—š€ÊŒwшsÁz€dœryRºlsH·fn8Ž_i.²Ze'±V`!®R]®NY¬LW¬IUªGS ªFR ªDO©CO©BNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAM©BN©COªDOªFR ªGS ¬IU­LW®NY®R]±V`²Ze#µ_i.·fn6ºltLŸsyRÂ}‚`Ņ‰nʎ’~ј›ƒÖ£¥’ܯ±—⌌šæÇǵìÐÑÓï××ÚðÛÛàñÛÛãð××èíÑÑæêÊÊÎçÂÂÐä¹¹Óá²³Ö௰Õß«¬Óß«¬Ð௰Ñá²³Ðä¹¹ÐçÀÀÑêÆÆÔëÎÎîïÓÓôð××õðÖÖõîÒÒõëÍÍæèÄÅÐ匌ÎᎎËÞ­®œÚŠ§ª×¡¢ŸÔŸ“Ò™›ŠÐ•—…Î’•͏’yˍ‘tʋpɊŽlɉjȈgȈŒdȈŒdȈŒcȈcȈcɊŽhʋjˎ‘m̐“k͑”mΓ–wϖ˜wҙ›ӜžƒÖ ¢€ÙŠšÛª«šß±²ªá¶·ªãœœŽçÃÃÚèÆÆøèÇÈÿèÇÈÿèÆÆøæž㜜‘ᶷÝ®¯{Úšªu×¢€lԜždϕ˜\͑”SʌMȇ‹DŁ†<Ã~ƒ7Áz€1Àw~-Ÿt{)œry'Ÿry&Ÿry%œry&Ÿt{*¿v},Áy-Â|‚0À…2Ņ‰9LjŒ9ȉŽ@ʌ@ˏ’Aː“H̐”E̐”Hː“Gʍ‘Eʋ>ȈŒ?dž‹8ł‡8Ä~ƒ2Â{2Áy-¿v|)Ÿtz(œry&Ÿry&œry&Ÿsy'Ÿu|+Àw~.Â{3Ä:ƃ‡?ȈGˎ’NΓ•Wј›_ԝ gØ¥ŠoÛ«¬vÞ²²}âž¹†ã¿¿©æÃÃÕèÆÆýèÇÈÿèÇÇÿçÅÅéæ¿¿Ï㌌²àµ¶ŽÝ®¯œÚ©ªŒÙ€¥ÕŸ¡Ó›|Зšwϔ—s͑”s͐“oˎ’oʌkʊŽjɊŽhȈcȈŒcȈŒcȈŒdȈŒgȈiɊŽkʊŽnʌq̎’w͐“|ϓ–€Ñ—š…ÓšœŽÕž ˜×¢€«Ûš©·Þ¯°ÂážžËåÀÁÍéÈÈÒíÏÏîîÔÔòð××òðÖÖòíÑÑòêÌÌàèÃÃÎ匌Ï㶶Ñà°±Òß­®Õ߬­×߬­Ùà°±Ù㶶Ø匌ÍèÄÄÊëÌÌÓîÔÔåðÙÙâðÛÛßïÛÛÜïÖÖÕêÍÍËæÃÄŠà·žžÚ«¬“Ô ¢ŒÎ”—‚ÈŠ|ăˆqÁz€`œqxWºkrC¶dm@µ_i1³Yc!±U`¯Q\­NY¬LW¬IUªGSªFR ªDO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©COªDOªFRªGS ¬IU ¬LW®NY¯Q\±U` ²Zd'Ž_i+·em=ºkrIœryPÁ{^шhʍ‘{И›†Õ¢€Ü®¯–ẻ¡æÅƳêÏÏÔï××ØñÛÛßñÛÛäðØØæíÒÒèêËËÓèÃÃÎ庺ÒâµµÕ௰Õ߬­Ô߬­Ñß­®Ðá²²Ïã··Ï朜ÐéÅÅÐëÌÌçîÓÓóðÖÖóðÖÖòîÓÓñìÎÎçéÅÆÌ䜜ÇᎵŸÝ¬¬žØŠ§ŠÖ ¡œÓšœÐ•˜‚Î’•y̍‘rʊŽmɈŒhȆŠcƄˆ_ł‡\Ł†XŁ†Wā†Uā†TŁ†VŁ†Vł‡Tƃ‡ZLJ‹]ȈŒ`ɊŽ^ˍb͏’iΓ–nƘoӛu՞ rØ€¥‚Ú©ªŒÝ®¯žßŽµŸã¹º¬ãœœÞä¿¿ðä¿¿ç仌Žã¹ºŒÞŽµyÝ­®sÚ§©nס£fԛ_ϕ˜X͐“QʌIȇ‹CŁ†<Ã~ƒ6Áz€1Àw~-Ÿt{*Ÿsy(œry'œry(Ÿtz(¿v|*Áy/Â{/Ä6ш<ȇ‹AɋȀ“H͒•Fϕ˜Oј›OҚœVқUқYҚœSЗšPϔ˜P͒•Gʎ‘CɊŽCdž‹?ł‡8Ã~ƒ5Â{€2Àw~-Ÿu|*Ÿtz(œry'Ÿsy'Ÿtz(¿v|*Áy.Â{2Ä8ƃ‡>ȈEˎ’L͑”Sїš[՝Ÿa×£¥iÛ©«oÝ°±t൶‚㺻—䜟Áä¿¿åä¿¿ï亻¿â·žŽÞ²²¢Ü­®™Ú§©’×¢€}Ԝžrј›rϔ—l͑”j̎’gʋaɉaȇ‹]DŽ‰Xƃ‡WŁ†YŁ†Wā†Tā†Uā†XŁ†XŁ†Zƃ‡]DŽ‰aȆŠfɉjˌp͏’vϓ–{їšÓœž—Ø¡¢œÛ§š°Þ°±¹ážžÅåÁÁÆéÈÈÒíÏÏíïÔÔððÖÖñðÕÕðîÑÑñêÉÉÛèÃÃÍ匌ÌâµµÑà°±Õ߬­Ó߬­Öß®¯Öà±²Õã··×朜ÎéÆÆÈìÍÍØïÕÕèðÚÚäðÛÛáïÚÚÙíÔÕ×êËËÄåÁ£ߵ¶™Ùª¬‘Óž¡‰Í”—È‰zā†jÀy_œqxQ¹iqG·cl5Ž]g1²Yc#±T_ ¯Q\­NY¬KV¬IUªFR ªDQ ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@L§ALšAMšBN©COªDOªDQªFR ¬IU¬KV­NY¯Q\±T_²Yc µ^g(¶dm8ºkrEœqxSÁz€aăˆkɌyΔ—ƒÕ ¢Ú¬­˜àž¹›æÄÅšêÎÎÎï××ÛñÛÛÜñÛÛáñÚÚæîÔÔëëÌÌÕèÄÄÍ匌Ð㶶Òá±±Õß­®Ò߬­Òß­®Ñá±±Ñ㶶Ï挌ÐèÃÃÎêÊÊáîÒÒñðÖÖñðÖÖðîÓÓïìÏÏééÇÈË䟟ÃᵶŸÝ¬­°Ù€ŠšÕž Ò™›‰Ï”—w͎‘oʊŽiȇ‹aƄˆ^Ł†XÄSÃ|‚OÂ|‚KÂ{€JÂ{€GÂ{€GÂ{€IÂ{€FÂ|‚FÃ|‚LÄNā†Kł‡RdžŠUɈŒUʌ]͏’cΓ–bЗšgԜžl×¢€rÚ§©Û¬­Þ¯° ÞŽµµàµ¶Ïßµ¶£Þ²³vÝ°±pÛ«­jÙŠ§eÖ¡£_ӚZϔ—T͐“MʋGLJ‹@Ł†:Ã|‚5Áy1Àw~-Ÿt{*Ÿtz(Ÿsy(Ÿtz(Ÿt{)Àw~,Áy/Ã|‚5ā†;DžŠ?ɋAˎ’J͒•Nі™UӛžW֟¡XÖ£€\Ö£¥o׊š~׊šuÖ£¥dÕ¢€_Ԟ \ҙ›Vϕ˜S͑”LʌHȉAƄˆ:Ä7Â|‚3Áy.¿v|+Ÿt{)Ÿtz'Ÿsy'Ÿtz)¿v|,Àw~-Â{€1Ä7ł‡<ȈŒCʍI͒•PЖ™UԜž[Ö¢€`Ú§šfܬ­jÝ°±qÞ³Žßµ¶·ß³ŽÁÞ±²£Ý­®œÚª¬ŠÙ¥Š…Õ ¢tҚœfϖ˜d͑”a̎’`ʊŽYȇ‹SƄˆRŁ†RÄ„NÃ~ƒJÂ|‚IÂ{GÂ{€FÂ{€HÂ{€IÂ{€IÂ{KÂ|‚NÃ~ƒPÄ„Uł‡ZDŽ‰`ɈŒgˌl͐“qƘ{Ӛœ‡×¡¢™Úš©®Þ°±³ãžž¿æÁÁÀéÊÊÒíÑÑêïÔÔëðÖÖíïÔÔïîÐÐîêÈÈÔçÁÁÌ人Ï⎎Îá°°Öà­­×߬­Õ௯Øâ³³Ùä¹¹Òç¿¿ÎêÈÈÉìÏÏÝïÖÖåðÚÚàñÛÛÝïÚÚØíÓÔÓéÊÊÂä¿À ÞŽµ–Ù§©ÒœŸ†Î’•}ȉxÄ„j¿v}WŒovM¹iq>¶ck4Ž]g)²Xc$°T^®Q[®NY¬KV¬IUªFR ªDQ ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQªFR ¬IU ¬KV®NY®Q[°T^²Yc"Ž]g.·cl4¹iqDœqxQÀy]ā†iȊ{Δ—~ԟ¢‹Ú«¬”භœæÃÄšêÌÌÊîÕÕÚïÛÛÜñÛÛáñÛÛäðÖÖéìÎÎÛéÆÆÌ柟Òã··Òá²²Õ௯Õà­­Ôà®®Òá±±Ð㶶Ï䌌ÐèÃÃÍëÊÊÚîÐÐñðÕÕððÖÖïïÓÓííÏÏíéÇÈÐåÀÀÀ⶷œÜ­®±Ù¥§ŸÔž ”Ñ—š€Î“–nˌhɈŒ`ƄˆXÄ…TÃ|‚NÂ{€HÁyE¿v}AŸu|>Ÿt{=Ÿt{;Ÿt{:Ÿt{;¿v|9¿v}=ÁyBÁz€EÂ|‚FÄHŁ†LdžŠNɊŽUˎ’U͑”Zϕ˜XӚc՟¡s×£¥‡Ù§šƒÚ©«…Úª¬}Úª¬fÛ©ªcÚ§š^×¢€Z՝ŸXјšSΓ•P̎’IɋDDžŠ?ā†8Â|‚3Áy0¿v}+Ÿt{)Ÿtz(Ÿsy'Ÿtz(Ÿu|*Àw~-Â{€2Ã~ƒ5Ł†;ȇ‹?ʋJ͐“JŘTљœ[՟¡`×€ŠhÚ©ªdÛ¬®pܯ°œÜ°±ËÜ°±Ü¯°vÛ«¬gÙ§šeÖ£¥d՝Ÿ`јšYΔ—U̎’NɋEDžŠ?ā†9Â|‚5Áy/¿v},Ÿt{*Ÿtz(Ÿsy(Ÿtz(Ÿu|*Àw~-Â{€1Ã~ƒ5Ł†:ȇ‹?ʋD͑”Iѕ˜PҙœU՟¡YÖ£¥^Ù§š]Úª«cÚª¬qÛª«zÙ©ªƒØ¥§‚Ö¢€€ÕœžyљœgΔ—W̐“XʋQȇ‹Rƃ‡Lā†IÃ~ƒEÂ{BÁy?Àw~?¿v|>Ÿu|<Ÿt{<Ÿt{;Ÿt{;Ÿt{=¿v|@Àw~CÁyGÂ{KÃ~ƒPŁ†UdžŠ[ʉc͏’kϔ—|Қœ‹×Ÿ¡—Ùš©šß°±¶ãºººçÃÃœêËËØîÒÒêïÕÕëðÖÖíïÓÓîìÎÎèêÇÇÎçÀÀËä¹¹Îâ³³Òá°°Öà­­×à­­Øá°°×â³³×ä¹¹ÔçÁÁÍêÉÉÊíÐÐáñØØçñÛÛãñÛÛßïØØÚìÑÒÖçÉɹ㟿›Ý²³–׊šÒ›…Ì‘•~dž‹lÀ…d¿v|^ŒnuL¹hp<µaj9³\f*±Wa$°T^®PZ®NY¬JV«HS«FR ªDQ ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQ «FR «HS¬KV®NY®PZ°T^±Wa!³\f*¶ck1¹iqDŒovIÀxUÀ…bȉsΒ•{ҝ ‰Ù©«’ßµ¶žä¿À€éËËÄíÓÔÙïÚÚÛñÜÜáñÛÛåñ××êíÏÏßêÈÈÏçÀÀÒä¹¹Ô⎎Õá°°Ôà®®Õà®®Ôá±±Ó⎎Ñä¹¹ÐçÁÁÏëÉÉÔîÐÐîïÔÔððÖÖíïÕÕííÑÑêêÊËÔåÁÁºâž¹µÝ¯°°ÙŠš™Ôž ŠÐ—š~͐“lʌ`ȆŠXŁ†RÃ|‚LÁyG¿v}@Ÿtz;Ÿry8œqx5Œov3Œov1Œov0Œov1Œov2œqx2Ÿry1Ÿtz5¿v|6Áy;Â{AÄ~ƒ@ł‡Cȇ‹IʋI̎’KΒ•MИšUҚi՞ h՟¡`Õ ¢XÕ ¢T՟¡WԞ QјšOϕ˜L͑”HʌDȉ>Ƅˆ:Ä4Â{1Áy-¿v|*Ÿtz(œry'œry'Ÿtz(Ÿu|*Àw~.Â{€2Ä~ƒ7ł‡=ȇ‹CʍM͑”SЖ™ZԜžaÖ¡£fÙ§šjÛ­®xݲ³xà·žžâ¹ººâ»Œû⻌ø⹺™àŽµxÝ°±vÛ«­sÙŠ§lÖ¡£fӚaϕ˜X͐“RʊŽGdžŠ@Ł†:Ã|‚5Áy0¿v},Ÿt{)Ÿsy'œry'Ÿsy(Ÿt{)¿v},Áy.Â|‚2ā†7DžŠ;ɊŽ@ˎ’D͓–Iі™LӛžPԞ T՟¡UÕ ¢RÕ ¢U՞ [ԜŸdјškϕ˜b͑”MʍLȈGƄˆGā†CÃ|‚CÁz€@Àw~:Ÿt{6œry5œqx4Œpw3Œov2Œov1Œov2Œov2Œpw4œqx6œry:Ÿt{>Àw~DÂ{€GÄNƃ‡WɈŒ\̍‘dϔ—zҙ›‚Ö¡£Ú©ª£ß²³²ãŒŒ¶èÄÅ»ëÌÌßîÒÒæïÕÕèðÖÖìîÓÓììÍÍãêÇÇÌæ¿¿Íã··Ñá³³Óá°°Öà®®Ø௯Úá±±ÛⶶÙ匌ÓèÃÃÎêËËÎïÓÓçñÙÙçñÛÛáñÛÛÝï××ÚìÐÑÐçÆƳ⌜Ü¯±—Ö¥§Ò™œ‚ː“€Æ†‹oÂ~„gŸt{S»nuIžgoBµaj.²\f,±Wa#¯S]®OZ­LX¬IU«HSªFR ªDPªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDQ«FR «HS¬JV­LX®OZ¯S]±Wa!³\f'µaj-žhp:ŒnuF¿v|]À…_LjŒp̑•{Ҝž…׊šÝ²³˜ãŸ¿ èÉɹíÒÓÖïÚÚÜñÜÜâòÜÜäñÙÙèîÓÓãêÊÊÐèÃÃÓ䌌Ò㶶×â²²Øá°°Õá°°Öá±±Õ⎎Òä¹¹ÒèÁÁÑëÇÇÐíÎÎéïÓÓïðÖÖëïÕÕêîÒÒèëÊË×çÃú亻¶Þ±±ªÙ§©¡ÕŸ¡ŠÑ—šy͑”eʋZDŽ‰TÄ„LÂ{€FÀw~BŸtz9œqx5»nu1ºlt.ºkr+ºkr)¹jr)¹jr)ºkr(ºkr'ºlt(»nu-Œov0Ÿry/Ÿt{4Àw~5Â{7Ä=ш=ȈŒCʋHˏ“K͒•Rϔ˜NЖ™Lі™Iі™IЖ™GĘE͒•Bʎ‘@ȉŽ<dž‹:ł‡5Ã~ƒ1Áz€.Àw~)Ÿt{)œry'Ÿry%Ÿry%Ÿsy'Ÿt{*Àw~-Â{€2Ä~ƒ8ł‡?ȈŒEˎ‘N͑”TЗ™_ԝŸg×£¥iÛ©«sÝ°±wᶷˆäŒœ€å°çÅÅùçÆÆÿçÆÆÿæÄÄçäÀÀ­ãº»‘ßµ¶zÜ®¯yÚ§©sס£hӛcϕ˜Z͐“QʋIȆŠCŁ†;Ã|‚5Áy0¿v},Ÿt{)œry'œry%œry&Ÿtz(Ÿu|(Àw~,Â{€/Ä~ƒ1ш7ȇ‹;ɋ?ˎ‘@͒•CΓ–Hϕ˜HЖ™HЖ™Hϕ˜H͓–I͐“JʌMȉŽCDžŠ>Ł†>Ã~ƒ7Áz€9¿v}6Ÿtz0œqx1Œov+»nu-ºlt(ºkr*¹jr(¹jr*¹jr)ºkr+ºls,»nu/Œov2œqx7Ÿt{;ÁyBÃ|‚JŁ†Oȇ‹Vˍ‘`Γ–sҚœ„×¢€Û¬­¥àŽµ°åŸŸ²èÆÇŸìÎÎßïÓÓèðÖÖêðÕÕêîÑÑëëÌÌÚéÅÅË朜Ðã··Òâ³³Õá°°Úá°°Ûá°°Ûâ³³Üä¹¹Ùæ¿¿ÒéÆÆÍíÎÎÔðÖÖêñÛÛçñÜÜäñÛÛÝï×××ëÏÐÏæÅÅ©á»»œÛ­¯•Õ¢€Ð˜›ƒÊ‘|Ņ‰qÂ|cŸtzRºltH·fn>µ_i.³Ze%°V`#¯R]®OZ­LW¬IU«GSªFR ªDP ªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR «HS ¬IU­LW®OZ¯R]°V`²[e$µaj3žgo>»nuJŸt{SÂ~„dƆ‹oˏ’{ҙœ‡Ö¥§‹Ü¯±™âŒœžçÇÇžëÐÑØï××ÝñÜÜßòÝÝçñÚÚèïÖÖîìÎÎØéÇÇÒç¿¿Öä¹¹ØãµµÚá³³Ùâ²²×â²²ÔãµµÕ庺ÒèÁÁÒêÇÇÎìÍÍßîÓÓîðÖÖìïÕÕéîÓÓéìÎÎáèÅŻ㜜³ß³Ž¬Ú©« Ö ¢ˆÑ˜›|͑”cʌVDŽ‰RÄJÁz€CŸu|:œqx5»nu0ºls,ºiq'žhp%·fn"·fn"·fn ·fn·fnžgp ¹hp"¹iq&ºlt)Œnu*œqx.Ÿt{.Àw~1Â{6À…8ш5dž‹9Ȋ:Ɍ=ʌ?ˍ‘Aˍ‘>ʌ:ɋ9ȉ7Ɔ‹7ł‡2Ä1Â|,Àw~*Ÿt{'œry%œqx$œqx$œqx%œry&Ÿtz(Àw~,Â{€1Ä~ƒ6ł‡>ȈDˎ‘M͑”Uїš\՜žeØ¥ŠpÛ«¬|Þ²²|âž¹‹äÀÀ©çÆÆÁêËÌøëÏÐÿëÐÑÿëÐÑÿëÍÎÿéÉÊòçÄij䟟šá¶·ŠÝ¯°‚Úšªx×¢€oԛgϕ˜[͑”TʋIȆŠCŁ†<Ã|‚5Áy/¿v|,Ÿtz(Ÿry%œqx#œqx$Ÿry%Ÿtz(¿v|)Áy+Â|‚-À…0ł‡2dž‹6ȈŒ:ɋ<ʌ=ʌ@ʌ<Ɍ<ȉŽ=ȈŒ8Ƅˆ8Ç8Ä4Áz€2¿v}.Ÿsy-Œpw-»nu)ºkr&ºiq$žhp$žgo#·fn ·fn ·fn!·fn"žgo$¹hp'¹iq+ºlt-Œov3œry:Àw~>Â|‚FŁ†LȈŒXˎ’^Д—sԛ„Ø€¥›Ü­®Ÿâ¶·®åÀÀ²èÉÊÆíÑÑãïÔÔäðÖÖêðÔÔëîÐÐêëÊÊÓéÄÄÏ朜ÒäžžÑâ³³Øá²²Úâ±±Úâ³³Û㶶Ü䌌ØçÂÂÒëÊÊÏîÑÑÛñØØêñÜÜæñÜÜÞñÛÛÝïÖÖ×êÍÍËæÃĥෞ¡Ú¬­”Õ ¢Ï•™‚ÉŒyшjÁ{[œryWºlsI·fn>Ž_i3²Zd&±V`!®R]®NY­LW¬IU«GS ªFRªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR «GS ¬IU­LW®OZ¯R]±V`!³Ze%µ_i.·fn8ºltHŸtzMÂ|‚dŅ‰fʍ‘|ј›„Õ¢€Û®°—ẻ æÅÅ«ëÏÐÖï××ÝñÜÜàóÞÞåòÜÜêñØØëîÒÒÜëËËÓéÅÅ×柟Ùä¹¹Û㶶ÚãµµÙãµµØä··Ö庺ÕèÁÁÓéÆÆÏëÍÍÚîÑÑððÕÕïðÖÖéïÔÔéìÏÏáèÇÈÆå¿¿°àµ¶ªÛ¬­ ×¢€‘Ò›zΓ•hʌ^DžŠMÄEÁyBŸt{:Œpw4ºlt,ºiq'žgo#·fn!·cl¶ck¶ckµajµaj¶ck·cl·em·fn¹iq ºkr#»nu%œqx&Ÿt{,Àw~-Â{€.Ã}ƒ1Á†2ш4ш4Ņ‰2Ņ‰1ш1ăˆ1Ā….Â}ƒ-Áy+Àw~'Ÿt{&œry$œqx#Œov"Œov!Œov"œqx$Ÿsy'¿v|+Áy/Ã~ƒ6ł‡=ȈŒFˎ‘M͑”Wїš_ԜžmØ€¥uÜ«¬~ß²³‡ä¹º‹æ–éÈÉ¿ìÐÐûîÔÔÿïØØÿïÛÛÿïÛÛÿïØØÿîÓÓÿëÍÎôèÆÆ°ä¿¿—á·ž‹Ý°±Úšªx×¢€oԜžhŘ^͑”TʋJȆŠCŁ†;Â|‚3Áy.Ÿu|)œry%œqx$Œov"Œov!Œov#œqx#Ÿsy$Ÿu|'Ày)Â|+Â}ƒ-Á†-ā‡1ш0ш0ш5ш3ā†2À….Â|‚.Áy/¿v|,œry+Œov%ºlt%¹jr"žhp!·fn ¶dm¶cl¶ckµajµaj¶ck¶cl·dm ·fn"žhp&¹jr+»nu0Ÿry6¿v}<Â|‚EŁ†LȈV̎’bŘoԝŸ…ÙŠ§”ݯ°§â¹º­æÃòéÊËÏíÒÒáïÕÕåðÖÖêïÔÔëíÐÐåëÊÊÏéÄÄÍ眜Õ庺×㶶ÚãµµÝãµµÞã··Ýä»»ÝçÀÀØêÇÇÔìÎÎÑðÔÔâñÚÚëóÞÞäòÜÜáïÛÛÝîÕÕÙéËËÀåÁÂ¡àŽµšÚª«’ÓŸ¡Î“–ƒÉŠ{Ā†fÁz€WœqxN¹jr?·dm6µ^g)²Yc'±T_¯Q\­NY¬KV¬IUªGSªDQ ªDO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªFRªGS ¬IU ¬LW®NY®R]±V` ²Zd"Ž_i*·em;ºkr?œryMÁ{`шkʌuϕ™…Õ¡£ŽÛ¬­•à·ž¡æÂêêÍÍÑï××ÚñÛÛàòÞÞäóßßèñÜÜëðÖÖáîÐÐÔëÊÊÖéÄÄÝçÀÀÜ圜Ü庺Ü庺Û庺Û圜ÛèÁÁØéÆÆÕëÌÌ×îÐÐñðÕÕñðÖÖïïÕÕéíÑÑâéÊËÍæ°➹®Ü¯°£ØŠ§˜Ôœž‚Ï”—oˎ’^ȇ‹PÄ„GÁz€?Ÿt{6Œov2ºls,¹hp'·fn!¶clµajµ_iŽ_iµ^gµ^gµ^gŽ_iµ_iµaj·cl·fnžhpºkr»nu!Œov%œry$Ÿt{%¿v})Áz€+Áz€(Áz€+Áz€*Áz€(Ày'¿v}%Ÿt{%œry"œqx!Œov »nuºltºlt»nuŒov#œqx%Ÿt{(Áy-Ã|‚3Ł†;ȇ‹Cˎ‘K͑”VїšbԜžmØ€¥yÜ«¬ƒß²³Œã¹º’æÁÁ¡éÊËÄíÑÑúïØØÿñÞÞÿóááÿóââÿóââÿóààÿñÛÛÿîÖÖÿìÏÏìèÆƺ忿–ᶷÝ¯°…Úšª|×¢€sӜžiϔ—^͐“SʊŽJdžŠ@ā†:Â|‚2Àw~,Ÿtz'œqx$Œov!»nuºlt»nu»nuŒov œqx"Ÿsy#Ÿt{%¿v}'Ày&Áz€*Áz€)Áz€(Áz€'Àx(Ÿu|&Ÿtz'œqx%Œnu#ºlt"ºiq!žgo¶dm¶ckµajµ_iµ_iµ^gµ^gµ_iŽ_iµ`jµaj·dm ·fn$ºiq*»nu/œqx5¿v}:Â|‚@ł‡LɉX͐“kИšrÖ ¢ƒÚ©«”Þ²³¡ä»ŒšèÅŶëÎÎØîÓÓâïÕÕäðÖÖéïÓÓííÏÏâëÊÊÓèÄÄ×ç¿¿Ùå»»Ý庺ß庺ß庺ß朜ÞèÂÂßêÇÇÙìÍÍÓîÓÓÓñÙÙéòÝÝëóßßäòÞÞäïÛÛßìÓÔÙéÉɌ㟿¢Þ³Ž›Ø§©’ӝ ‰Í’•|ȉsÁ†cÀw~[ŒpwH¹iqA¶cl3Ž]g'²Yc#°T^®Q[®NY¬KV¬IUªFR ªDQ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©COªDOªDQ ªFR ¬IU¬KV­NY¯Q\±T_²Yc#µ^g&·dm2¹jr=œqxJÁz€VăˆjɊz͓–„Óž Ú©ª™ßŽµŸåÀÁŠéËËÆîÕÕÚïÛÛáòßßãôààêóßßîòÜÜêðÖÖÖîÐÐØëËËÜêÇÇßèÃÃÞçÀÀá朜â眜ä矟åèÁÁãéÆÆãëÊÊÜíÐÐôïÓÓ÷ðÖÖúïÕÕìîÓÓäëÌÍÖçÅű仌©Þ±²ŠÚšª›ÕŸ¡„Ж™q̐“_ȈMŁ†GÂ{>¿v|9œqx1ºlt)¹hp&·em#¶ckµ_iµ^g³\f³\f²[e²[e²[e³\f³\fµ^gµ_i¶ck¶dm·fn¹iqºkrºlt Œnu"Œov œqx"œqx œqx œqxŒov Œnu»nuºltºkr¹iq¹iq¹iqºkr»nuŒov"Ÿsy%Àw~,Â|‚1Ł†9ȇ‹AʍK͑”Uїš`ԜžjØ€¥xܪ«~ß²³ã¹º˜æÁÁŠéÉÊÆíÑÑ÷ðÙÙÿòÞÞÿõååÿ÷èèÿ÷ééÿ÷ééÿöççÿóââÿñÝÝÿîÖÖÿìÏÏëèÆÇÂä¿¿¡á¶·“ݯ°†Úšª}×¢€rӜžgД—[͐“QʊŽHDŽ‰?Ä„7Â{€0¿v|*œry%Œov ºltºkr¹iq¹iq¹jrºkrºlt»nuŒnuŒov Œpw!Œpw ŒpwŒov Œov"»nu ºls ¹iqžgp·fn¶clµajŽ_iŽ]g³\f²\f²[e²[e²\f³\fŽ]gµ_iµaj¶cl!·fn$ºiq)»nu.œry4Àw~>Ã~ƒDƄˆMʋa͒•jҙœס£Û¬­àµ¶Šä¿¿©èÇȺìÏÏÝïÔÔîðÖÖôðÖÖ÷îÒÒøìÍÍåêÈÈÜèÄÄâçÀÀä矟å眜ä矟ãèÁÁáéÄÄàêÈÈßìÍÍÙîÓÓÒðØØØòÝÝìôààéôááæòÞÞãïÚÚÛëÐÑÖçÇǵ㌜žÜ°±–Ö¥§ŽÒ›‡Ì‘•€ÇˆŒoÀ…a¿v|\ŒovJ¹hpD¶ck0³\f+±Wa%°T^®PZ®NY¬JV«HS «FR ªDQ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQªFR «HS ¬KV®NY®Q[°T^²Xc#Ž]g*¶cl4¹iq@ŒovKÀw~SÁ†^ȈŒt͒•ӜŸŽØ§©“ݲ³œãœŸ€éÈÈžíÓÔÙïÛÛÞóààæôããëôââëôààñòÜÜáñØØßîÓÓáìÎÎæëÉÉçéÆÆçèÃÃèèÁÁèèÁÁéèÂÂêéÅÅéëÊÊæíÏÏïîÓÓÿðÖÖÿðÖÖóïÔÔäìÏÏáèÇȜ俿®àµ¶©Û¬­×¡£Ò™œ}͒•`ʋVƃ‡MÃ~ƒ@Àw~:Ÿry3»nu*¹iq&·fn"¶ckµ_iŽ]g²\f²Ze²Yc²Yc²Xc²Yc²Yc²Zd²[e³\fµ^gµ_iµaj·cl·fn·fnžhp¹iq¹iq¹iq¹iq¹hpžgp·fn·fn·fn·fn·fnžhp¹jr»nu œqx#Ÿu|(Â{€.Ä„6LJ‹>ʌH͑”RЗ™\՜žhØ€¥vÜ«¬ß±²Œã¹º›åÁÁ­èÉÊÑìÑÑöðØØÿóßßÿöååÿ÷ééÿ÷ììÿøîîÿøííÿ÷ëëÿ÷èèÿôããÿòÝÝÿîÖÖÿìÏÏñèÆǹ䟟£á¶·’ݯ°ŠÚšª}×¢€qԛdϔ—Z̐“PɊŽDƃ‡<Ã~ƒ3Áy-Ÿtz&Œov!ºltºiqžgp·fn·fn·fn·fn·fnžgpžhp¹hp¹hp¹hpžhpžgo·fn¶dm¶ckµajŽ_iŽ]g²\f²Ze³Yc²Yc²Xc²Xc²Yc³Yc³Ze³\fµ^gµ`j·cl·fn#ºkr*Œov2Ÿtz8Áy>Ä„Hȇ‹Sˎ’^Д—jԝŸ…ØŠ§‹Ý¯° ã¹ºŠæÃìéÊËËíÒÒÝïÕÕæðÖÖòðÕÕÿîÑÑüìÍÍäêÇÇæéÄÄæèÁÁéèÁÁéèÁÁèéÄÄçêÇÇèëËËçíÐÐåïÔÔÝñÙÙÜòÞÞæôááîôããéôââåòÞÞßïØØÚëÏÐÐæÅŪẻžÛ­¯šÕ£¥’ј›†ÊŽ‘~Ɔ‹mÂ}ƒ_Ÿt{V»nuFžgo<µaj2²\f#±Wa"¯S]®OZ­LW¬IU«HSªFR ªDPªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQ«FR «HS ¬JV­LX®OZ°T^±Wa"³\f&µaj,¹hp>ŒnuD¿v|VÄdLjŒp̐”}ћ‡Ö¥§Ü®°œãŒœ£çÇǵìÐÑÛïÚÚàóààæõååéõååòõååøôââÿòÞÞþñÙÙýïÕÕýîÐÐûëÌÌøêÈÈöéÅÅ÷èÄÄöèÃÃóéÄÄñëÈÈéìÍÍéîÑÑüðÕÕýðÖÖíïÕÕåíÒÒâéÊËÍæÃì㹺§Ý¯°™Ø¥Š“ԝŸ…Е˜sˎ’Uȇ‹KÄ…CÁz€@Ÿt{8Œov/ºkr*žgo%¶clµ_iŽ]g²[e³Yc±Wa±Wa±V` ±V` ±V` ±V` ±Wa±Wa²Yc²Ze²\f³\fµ^gŽ_iµ_iµajµajµajµajµajµ`jµ`jµ`jµaj¶ck·dm·fn¹iq»nu œry$Àw~*Ã~ƒ1Ƅˆ:ɋC͐“NƘYԜžeØ€¥qÛª«ß±²Šã¹º”åÁÁ€èÈÉÆìÑÑöðØØÿòÞÞÿõååÿ÷ééÿ÷ììÿùîîÿùððÿùïïÿøîîÿ÷ëëÿ÷èèÿôããÿñÜÜÿîÖÖÿìÎÎíèÆǟ䟟 á¶·’Ý®¯‡Úšª{×¢€mӛaϔ—V̎’KȈ@Ł†9Â|‚0¿v|)œqx#ºlt¹iq·fn¶clµajµajµ_iµ_iµ`jµ`jµ`jµajµ`jµ_iµ_iµ_iŽ]g³\f³Ze³Yc²Xc±Wa°V` ±V` ±V` ±V`°V`±Wa²Xc²Zd³\fµ^gµaj¶dm"¹hp(ºlt+œqx3¿v}6Â|‚Cł‡LɋW͐“bјšzÖ¡£ƒÚ©«’Þ³³ ãŸŸ§èÆÆŽëÎÎ×îÓÓáïÕÕæðÖÖïïÔÔÿîÐÐôëËËèêÇÇïéÄÄðèÃÃöéÄÄ÷êÆÆ÷ëÉÉ÷ìÍÍùîÒÒüð××ýñÜÜýóßßþõããùõååóõååëõããåòÞÞáï××ØêÍÍÍæÃÚᶷžÛ«¬›Õ ¢‹Ï•˜ÊŒ|Ņ‰oÂ|aŸsyRºltF·fn?µ_i4³Ze'±V`¯R]®OZ­LW¬IU«GS ªFR ªDPªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR«HS ¬IU­LW®OZ¯R]±Wa²[e$µaj/žgo7»nuDŸt{TÂ}ƒ^Ɔ‹nʎ‘yїš„Õ¢€“Û­¯›ážž¥æÅÅ«ëÎÏÒïØØãóààêöååð÷èèû÷èèÿöççÿõääÿôààÿñÛÛÿðÖÖÿîÐÐÿëÌÌÿêÇÇÿéÄÄÿèÄÄüéÄÄïêÇÇéëËËãíÐÐðîÔÔìðÖÖêïÕÕçîÓÓáëÎÎÝèÆƳ㟟«Þ³³¡Ú©«‘Ö¡£…Ò™œv͒•eʊŽSƃ‡IÃ~ƒAÀw~=œry2»nu-¹iq$·fn µajµ^g²\f³Yc±Wa±V`±T_ °T^ °T^ ¯S] °T^ °T^ °T^ ±U` ±V`±Wa ±Wa ²Yc³Yc²Zd²Ze²Ze²Ze³Ze³Ze²[e³\fŽ]gŽ_i¶ck·fn¹jrŒov Ÿt{&Â{€-ł‡5ȉŽ>̐“IŘUԜž`Ø¢€lÛª«zß±²†ã¹º•åÁÁ¬èÈÉÍìÐÐöðØØÿòÞÞÿõääÿ÷èèÿ÷ëëÿøííÿùîîÿùïïÿùïïÿùîîÿ÷ííÿ÷ëëÿöççÿôââÿñÜÜÿîÖÖÿìÎÎãèÆǟ䟟á¶·Ý¯°ƒÚšªvס£iӛ]Δ—Qˎ‘Fȇ‹<Ä2Áy+Ÿsy$»nu¹iq¶dmµajµ_i³\f²[e³Ze²Ze²Ze²Zd²Zd²Zd³Yc²Yc²Xc ±Wa°V`±V` ±T_ °T^ °T^ ¯S] ¯S] °T^ °T^ ±U` °V`²Xc²Ze³\fµ_i¶cl·fn!ºkr*Œov/Ÿt{7Áy<Ä„Gȇ‹Qˎ‘dΔ—jӛ{×£¥ŽÜ­®˜á·ž¥åÀÀ«èÈÉœìÏÏÚïÔÔâðÖÖãðÖÖîîÒÒðìÎÎêêÉÉäéÅÅêèÄÄóèÄÄÿéÅÅÿëÉÉÿìÍÍÿîÓÓÿñØØÿòÝÝÿôââÿöååÿöèèÿ÷èèþöèèõôããíòÞÞäîÕÕÛéÊÊÀå¿ÀšßŽµÙ©ª—Ôž ‹Í“–ƒÉ‹sшiÁyXŸryOºkrD·em=µ_i2²Zd#±U`¯Q\®NY¬LW¬IUªGS ªFR ªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDPªFR «GS ¬IU­LW®OZ¯R]±V`²Ze&µ_i)·fn3ºlt=ŸsyLÂ|_Ņ‰lʌzϕ˜Ô ¢Ûª«›ßµ¶¡åÀÁ«êÌÌÌïÖÖìóßßôõääþ÷êêÿ÷ëëÿ÷ëëÿ÷èèÿõååÿôßßÿñÚÚÿïÔÔÿíÎÎÿëÉÉÿéÄÄüèÃÃòèÂÂêéÅÅåëÈÈÛìÍÍáîÒÒìðÖÖêðÖÖçïÔÔæíÐÐßèÈÉÁæÀÀªá·žŠÜ®¯›Ø¥ŠÔœžzŘi̎’`ȈŒLŁ†FÂ|‚>¿v|8œqx2ºlt(¹hp%·dmµ`j³\f²Ze±Wa±V` °T^ ¯R] ¯Q\ ¯Q\ ®Q[®Q[®Q[ ¯Q\ ¯Q\ ¯R] ¯R] ¯S] °T^ °T^ °T^ ±T_ ±T_ ±U` ±V` ±Wa ²Xc²ZeŽ]gµaj·fnºkrœqx Àw~(Ä„1dž‹9ʍDϔ—OӛZ×¢€gÛª«uÞ±±‚㹺åÁÁ¢èÇÈÍìÐÐõðØØÿòÞÞÿõääÿöèèÿ÷ëëÿ÷ëëÿøììÿ÷ììÿøììÿøììÿ÷ììÿ÷ììÿ÷ëëÿ÷êêÿöææÿóááÿñÜÜÿîÖÖþìÎÎâèÆư䟟œá¶·‹Ý®¯~Ú§©qÖ¡£cҙœW͒•Lʋ@ш5Â|‚.Ÿu|&Œov¹iq·dmµ_i³\f³Yc±Wa°V` ±V` ±U` ±T_ °T^ °T^ °T^ °T^ ¯S] ¯R] ®R] ¯Q\ ¯Q\ ®Q[®Q[®Q[ ¯Q\ ®R] ¯S] °T^ °V`²Yc²[eµ^gµaj·fn#ºiq)»nu*œry5Àw~9Ã~ƒCƃ‡KʋT͑”lј›vÖ¡£€Ú§©‘Þ±²€äº»ŠæÄÄ­ëËÌÑíÒÒÛïÕÕàðÖÖçïÔÔêîÐÐíëËËßêÇÇáéÄÄéèÃÃëéÄÄöêÆÆÿëËËÿîÐÐÿðÖÖÿòÜÜÿôââÿöççÿ÷êêÿ÷ëëÿ÷ëëÿ÷ééÿôääùðÜÜíìÓÔæèÈȜ㌜¬Ü²³¡×¥§“ÓœŸ‹Í“–€È‰wā†eÀw~\œqxM¹iqE·cl3Ž]g/²Yc#°T^¯Q\®NY¬KV¬IUªFR ªDQªDO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©COªDOªDQ ªGS ¬IU¬LW­NY¯Q\±U` ³Yc#µ_i+¶dm7ºkr;œqxJÁyUăˆlɊŽx͓–~ӜŸ“ÙŠš›Þ²³©äŸ¿¶èÉÉËíÔÕíñÞÞûõääÿ÷ëëÿøííÿøîîÿ÷ëëÿ÷èèÿôââÿòÜÜÿðÖÖÿíÏÏÿëÉÉüéÄÄïèÁÁêèÁÁçèÂÂáéÆÆØëÊÊÒíÐÐêïÔÔêðÖÖéïÕÕçíÒÒãëËÌÒçÄIJ㌌¯Þ²²£Ú©«“Ö¡£}ҚvΓ•\ʍ[ȇ‹HÄ…DÂ{€:Ÿu|3Œpw0ºls$žgp#·clµ_i³\f²Yc±V` °T^ ®R] ®PZ®OZ®NY­NY®NY®NY­NY­NY®NY®OZ®OZ®OZ ®OZ®PZ ®Q[ ¯Q\ ¯R] °T^ ±V` ²Xc²\fµ`j·fnºltœry"Áz€*ш2ɊŽ=͑”GҙœTÖ¡£`ÚšªnÞ°±{âž¹‹åÁÁ­èÇÈÏìÐÐóðØØÿòÞÞÿõååÿöèèÿ÷êêÿ÷ëëÿ÷ëëÿ÷êêÿ÷ééÿ÷èèÿ÷èèÿ÷ééÿ÷êêÿ÷êêÿ÷êêÿ÷ééÿöççÿóááÿñÜÜÿîÖÖþìÎÎéèÆƯ㟟˜á¶·…Ü®¯xÙ§šj՞ \і™Q̏“EȈŒ9À…0Àw~*œqx ¹iq·dmµ_i²Ze±Wa ±T_ ¯S] ®R] ¯Q\ ®PZ ®OZ ®OZ ®OZ ®OZ®NY®NY­NY®NY®NY®NY­NY®NY®OZ¯Q\ ¯R] ±T_ ±Wa²ZdŽ]gµaj·em ¹iq"»nu*œry2Àw~7Â|‚=ł‡FȈK̐“cϕ˜nԜžzØ€¥Ü­®—ᶷ€å¿¿šèÆÇžìÎÎÜîÔÔßïÕÕãðÖÖçîÓÓçìÍÍÝêÉÉÍéÄÄÜèÁÁäèÀÀéèÂÂìéÆÆõëÌÌÿîÒÒÿñÙÙÿóßßÿõååÿ÷ééÿ÷ììÿøííÿøììÿ÷ééÿôââþïÚÚôëÏÐéæÅŹ⺻«Û­¯€Ö£¥”ÑšœŒÌ”LjŒrÄe¿v|ZŒovN¹iqA¶ck-³\f*±Wa%°T^®PZ®NY¬KV«HS«FR ªDQ©DO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQ ªFR ¬IU ¬KV®NY®Q[°T^²Yc Ž]g'¶cl1ºiq@ŒpwEÀw~[À…aȈŒq͒•}Қœˆ×¥§›Ü°±¢â»ŒŽçÆÆÆëÐÑñðÜÜÿôääÿ÷êêÿøííÿøîîÿøììÿ÷ééÿôããÿòÜÜÿðÖÖÿíÎÎýêÇÇîèÂÂçç¿¿æ朜áç¿¿ÙèÃÃÔêÇÇÏìÍÍàîÒÒìðÖÖéðÖÖæïÔÔãìÏÏßèÈÉŸåÀÀ­â·ž§Ü®¯ ÚŠ§‘ԝ vИšg͑”WʌTDžŠKÄ„DÂ{€:Ÿu|3Œpw,ºls&žgo¶ckµ^g³Ze±Wa°T^ ®R] ®OZ­NY­LX­LW¬LW¬KV¬KV¬KV¬KV¬LW¬LW­LW­LW­LX®NY­NY®OZ¯Q\°T^ ±Wa ³Zeµ`j·fn»nuŸt{$Â}ƒ,Ɔ‹5ʎ‘@Ж™K՞ WÙŠ§fÜ®¯sâ·žˆå¿¿¥èÇÈÌìÑÑôðØØÿòÞÞÿöååÿ÷ééÿ÷ëëÿ÷ëëÿ÷êêÿöèèÿöææÿõååÿôããÐôããßõååÿöççÿöééÿ÷êêÿ÷ëëÿ÷êêÿöèèÿóââÿòÜÜÿîÖÖþìÎÎêèÅŶ㜜“ßµ¶~Û¬­oØ€ŠaӜŸV͓–Gɋ=ш3Áy)œry#ºkr¶dmµ^g³Yc±V` ¯R] ®PZ®OZ®NY­LX­LW­LW¬LW¬LW¬KV¬KV¬KV¬KV¬KV¬LW­LW®NY®NY®Q[ ¯R] ±U`²Yc³\fµ_i¶dm¹iq#»nu&Ÿry,Àw~5Â|‚:Ł†DȈŒJˍ‘XΔ—bӛrס£€Úšª›Þ²²žãº»«æÃêêÊËÈíÒÒÜïÕÕâðÖÖåïÔÔèîÐÐéëËËÓéÆÆÌçÁÁÑ矟Þ朜ãçÀÀèéÄÄêëÊÊôîÑÑÿñØØÿóßßÿöååÿ÷ëëÿøîîÿøîîÿøììÿ÷èèÿóááþïØØóëÍÎÞæ¹ᶷ¯Û«¬¢Õ ¢”Ж™†Ë‘vƅ‰qÂ}ƒ\Ÿt{Q»nuDžgo:µaj-²\f*±Wa"¯S]®OZ­LW¬IU«HS ªFR ªDQªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©DOªDQ«FR «HS ¬JV®NY®PZ°T^±Wa!³\f#µaj2¹hp:ŒnuD¿v|UÃ}ƒYdž‹p̏“sїš‹Ö£€šÛ¬®Ÿá¹º«æÄÄŸëÎÏãïÙÙöóââÿ÷ééÿøììÿøîîÿ÷ììÿ÷èèÿôââÿñÜÜÿîÓÓýëÌÌìéÅÅåç¿¿ã匌à庺Ú匌Ôç¿¿ÐéÄÄÏëÊÊÔíÐÐíïÔÔìðÖÖêïÕÕãíÒÒàëËÌÏèÅů㌌ªà³Ž¥Ü¬­™Ø€¥ŠÔœžtƘj͑”TʊŽKDžŠIÄ„>Â{€5Ÿu|2Œpw+ºkr"·fnµaj³\f²Yc±U` ¯R] ®OZ®NY­LW¬KV¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬KV¬LW®NY®OZ¯R] ±V` ²Zeµ`jžgoŒnu¿v|%Ä„,ȈŒ6̒•DњœP×£¥[Û«­k൶…䟟®èÆÆ¿ìÏÏòïØØÿòÞÞÿõååÿ÷êêÿ÷ììÿøííÿ÷ëëÿ÷êêÿöææÿôââÇóßßQóßßLóßßLóàà_õããèöççÿ÷êêÿ÷ëëÿøììÿ÷ëëÿ÷èèÿóââÿñÜÜÿîÕÕÿêÌÍëæÄķ㺻œÞ°±wÚ©ªg՟¡Wі™Mˎ‘?ƅ‰4Â}ƒ,Ÿtz%ºlt·emµ^g²Yc°T^ ¯Q\ ®NY­LX¬KV¬JV¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬KV­LW­NY®Q[ °T^ ±Wa³Zeµ_i·cl¹hp »nu(œry+Àw~0Â|‚:Ł†>ȈŒHˎ’OΓ•aј›nÕ ¢‚ÚŠšŒÝ®¯¡á¶·€å¿¿©èÇȲëÎÎ×îÔÔàïÕÕáðÖÖåîÓÓçìÎÎâêÈÈÉèÃÃÎ朜Ðå»»Ö庺ß朜âèÁÁæêÇÇçíÏÏóð××ÿóÞÞÿõååÿ÷êêÿøííÿøîîÿ÷ëëÿõææÿñÞÞþîÕÕöéÉÉÏ埿¹Þ³Ž®Ú©ª¢Ôž Ï”˜‡É‹oшeÂ{€bŸsyRºltG·fn7µ_i2³Ze$±V`¯R]®OZ­LW¬IU«GS ªFR ªDPªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR«HS ¬IU ­LW®OZ¯R]±Wa²[e%µaj*·fn7ºltAŸtzJÂ{^Ņ‰jʌxŘ‚ÕŸ¡•Ú©ª€ß³Ž²å¿À²éËËÔîÖÖûóßßÿõååÿ÷ëëÿ÷ëëÿ÷ëëÿöææÿôááÿñÙÙýîÑÑëëÉÉâèÂÂá匌Ûä¹¹Øä··Øä¹¹Õ匌ÔèÁÁÐêÇÇÌìÍÍåîÓÓìðÖÖêð××çïÔÔâíÐÐÞèÉÊ·å¯㹺šÞ²² Úšª’×¢€~Ԝžvϖ˜e͑”QʌHLjŒGĀ†=Â{€3Ÿu|.Œov%ºkr!·fnµ_i²[e±Wa¯S] ®OZ®NY¬KV¬IU¬IU«HS«GSªGSªFRªFRªGSªGS«GS«HS¬IU¬IU¬LW­NY¯Q\ ±U` ²Zeµ`jžhpŒovÀy&ā‡/ɋ8Γ–DԞ SÙ§š^Ý°±t㹺šæÃÃÌêÌÍøîÕÕÿñÝÝÿõååÿ÷êêÿøííÿùïïÿùîîÿøììÿ÷èèÿõääÿóßßVòÜÜdñÚÚmñÚÚmñÜÜ_ôàà_õååÿ÷ééÿøííÿùïïÿùîîÿ÷ììÿ÷èèÿóááÿðÛÛÿíÒÒÿéÉÊñåÀÀ¹á¶·ˆÛ­®g×€ŠZҚœN̐”CLjŒ6Ã~„-Ÿt{%ºlt·fnµ^g²Yc°T^ ®PZ ®NY¬KV¬IU¬IU«HS«GSªGSªGSªFRªGSªGS«GS«HS¬IU¬JV­LW­NY ¯Q\ °T^ ²Yc³\f¶ckžgpºlt Ÿry)Àw~.Ã}ƒ6шBȉŽHˎ’WΓ•dј›iÕ ¢vÙŠ§Û­®œàµ¶šãœœªçÄĬêËÌÅîÒÒÞïÕÕßð××âðÕÕèîÐÐêëËËØéÅÅË矟Í庺Õäžž×ä··Û人ß矟áéÄÄäëÌÌäïÔÔññÜÜÿôããÿ÷èèÿ÷ëëÿ÷ëëÿ÷êêÿôããÿðÜÜøìÑÒëèÆÆÁ⻌µÜ°±ª×€ŠÓœŸ“Í’•‚ȉŽuĀ†gÁyUœqxPºkr@¶dm9µ_i.³Yc$±U` ¯Q\­NY¬LW¬IUªGS ªFR ªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDPªFR«GS ¬IU­LW®NY®R]±V`²Ze"Ž_i(·fn0ºlsAœryLÁyUшaɊŽs͒•ƒÓ›žŽØŠš¢Ý°±§âŒœ±çÇÇÉìÒÓíðÜÜÿôããÿ÷èèÿ÷êêÿ÷èèÿõååÿòÞÞýðÖÖçíÎÎàéÆÆßç¿¿Ýå¹¹Ü㶶Ú㎎Ø䶶Õå¹¹Ô矟ÏéÄÄÌëÊÊ×îÐÐìðÕÕèð××èïÕÕäïÓÓâìÎÎÎèÆǶåÀÀ²â·žªÞ±±œÚšª‘×¢€{ԝŸrЗ™i͒•VʌKȈŒBÇ9Â|3Ÿu|,Œov!¹iq¶clŽ]g²Yc°T^ ®Q[ ®NY¬KV¬IU«HSªFR«FRªFRªFRªFRªFRªFR«FRªFR«GS¬IU¬KV®NY®Q[ ±T_ ²Zeµaj¹hpŒpw Áz€)ш2ʌ;ϕ˜F՞ UÚ©ªaÞ³Ž䌜žèÆÆôìÐÐÿðØØÿóààÿöèèÿøííÿùððÿúññÿúððÿøììÿ÷èèÿôââÂòÞÞdñÚÚ{ðØØ{ðØØ{ñÛÛwóßß_õååã÷ééÿøîîÿúððÿúððÿùïïÿ÷ëëÿõææÿòÞÞÿï××ÿëÍÎÿçÃÃå㺻ŠÝ¯°pØŠš^ӜŸO͓–CȈŒ6Ä„-¿w}%»nu·fnµ^g²Xc ¯S] ®OZ ­LW¬IU«HS«GSªFRªFRªFRªFRªFRªFRªFR«FRªGS«HS¬IU­LW®NY®R] ±V`³Zeµ_i·fnºlsœqx$Àw~0Ã}ƒ5Ņ‰=ȉŽE̎’MΔ—VҙœoÖ ¢|ÚŠ§ŒÛ¬­ß³Ž ãŒŒªæÃïêÉÊžíÑÑÙïÕÕâð××âð××ãîÓÓæíÎÎäëÈÈÍèÁÁÌ匌Ðä··Ô㎎×㎎Ýä··Þå»»ßèÁÁáëÉÉàîÑÑßñÙÙíôááþõææÿ÷ééÿ÷êêÿöççÿóááøïØØõëÍÎÚæÃÿឹ°Û¬®£Ö£¥—Ñ™›Ì“xLjŒjÄb¿v}UŒovM¹iq=¶cl,Ž]g'²Yc$°T^®Q[®NY¬KV¬IUªFR ªDQ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©COªDOªDQªGS ¬IU ¬KV­NY¯Q\±T_²Yc Ž]g'·cl4¹iq@ŒpwIÀw~QÀ…]ȈŒo͐“љ›ƒÖ¢€šÜ®¯¡â¹ºµæÄĹëÍÎÚï××÷óàà÷õååùöèèúöææøôââ÷ñÜÜßîÓÓØëËËÜéÄÄÝ匌Ýä··Üã³³Úâ²²Öâ³³Ö㶶Óå»»ÐèÁÁÎëÇÇÎíÎÎæîÓÓéð××èðØØæïÖÖãíÓÓäìËÌÅèÆÇŽå¿¿­â·žšÞ²²šÛª«‡Ù¥Š՞ uҙœ`͓—Qʎ‘HȈŒ?ā‡5Á{/Ÿsy'ºlt!·fnµ`j²Ze±U` ¯Q\ ®NY¬KV¬IU«GS«FRªFRªDQªDQªDPªDQªDQªDQªFRªFR«HS¬IU­LW®PZ°T^ ²Zdµaj¹hpœqx Áz€'ш3ʌ<Ж™HÕ ¢TÚª¬kßµ¶«ä¿¿àèÇÈÿìÑÑÿðÛÛÿôããÿ÷ééÿùîîÿúññÿúññÿúññÿøííÿ÷èèÿôââÌòÞÞmñÚڊðØ؊ðØ؊ñÛۅóßßmõååí÷ééÿùîîÿúññÿúññÿúððÿ÷ííÿöèèÿóààÿðØØÿìÏÏÿçÆÆø㻌ÕÝ°±—Ù§šaԜŸSΓ–EȊ9Á†0¿w}&»nu·fnµ^g²Xc¯R] ®OZ¬LW¬IU«GS«FRªFRªDQªDQªDQªDQªDQªDQªFRªFR«HS¬IU­LW®OZ¯R] ±Wa³\f¶cl¹iqŒov"¿v|*Â}ƒ-Ņ‰:ɊŽB͐“RŘVӛrÖ¡£~Ú§šˆÜ­®ß³Ž¥ãŒŒ­æ¯èÈɳìÏÏËîÕÕßï××ãðØØæðÖÖçîÑÑêëÌÌØéÅÅË柟Îå¹¹Ï㎎Ôâ²²Ûâ²²Ü㎎Þåžžà矟àêÆÆÙíÎÎ×ð××ÕòÞÞæõääôöççõöççôõããôñÝÝôîÕÕìéÊÊË埿³Þ³Ž§Úª«¢ÕŸ¡”Ï–™‚ʍ‘sƅ‰jÂ|‚_Ÿt{N»nuDžgp9µaj/³\f$±Wa!¯S]®OZ­LX¬JV«HS«FR ªDQªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BN©DOªDQ«FR «HS ¬KV®NY®PZ°T^±Wa!³\f%¶ck*¹hp4ŒnuDŸu|QÂ}ƒ`Ɔ‹nʎ‘rϖ™ÕŸ¡˜Úª« ß³ŽŠåŸ¿¹èÊÊÊîÔÔèòÝÝíóááéõååìõääíôßßòñÚÚàîÒÒ×ëÊÊÚèÁÁÛ庺ÜãµµÚâ²²Úâ°°×â±±Öâ³³ÒäžžÑ矟ÏéÄÄËëËËÖîÑÑíðÖÖëñÙÙéñÙÙæðÖÖçíÓÓßìÌÍ¿èÆÇ·å¿¿·âž¹©Þ²²žÜ­®‘Ù§š}Õ ¢rӚ`Γ—Nʎ‘HLjŒ@Á†1Ày2œqx+ºiq¶ck³\f±Wa®R] ­NY¬KV¬IUªGSªFRªDQªDPªDOªDOªDOªDOªDPªDQ«FR«GS¬IU­LW®OZ°T^ ²Zdµ`j¹hpŒpw Áz€'ш3ʌ>Ж™JÕ ¢UÚª¬xßµ¶œä¿¿æèÇÈÿìÑÑÿðÛÛÿôããÿ÷ééÿùîîÿúññÿúññÿúññÿùîîÿ÷êêÿõååÿôßß{òÜܓñÚژñÛۘòÝ݊ôááŽõææÿ÷ëëÿùïïÿúññÿúññÿùððÿ÷ííÿöèèÿóßßÿðØØÿìÏÏÿçÆÆû㺻àÝ°±­Ù§šhԜŸSΓ–DȊ8Á†.¿w}&»nu ·fnµ^g±Wa¯R] ®NY¬KV¬IUªGSªFRªDQªDPªDOªDOªDOªDPªDQªFR«FR«GS¬IU­LW®OZ°T^ ²YcŽ_i·fnºlt Ÿtz.Â}‚/ш4ȉŽ?̑”Lі™\ӝŸh×¢€vÚšª}ܯ°áµ¶¡ãŒŒ¬æÃÃŽèÉʳìÏÏÊïÕÕãðØØãñÙÙçðØØéïÔÔèîÏÏçëÉÉÌèÂÂÉå»»Ï㶶Íã³³Ùâ±±Ûâ±±Üâ³³Ýä··Ý朜ßéÄÄÚìÍÍÖïÕÕÔñÜÜæôââíõååêõååêóààêïÚÚåëÐÑÞçÅŌ⺻µÝ°±¥Ø¥§“ÓœŸˆÍ“–„É‹uł‡cÁz€^œryJºlt>·fn9µ_i.³Ze#±V` ¯R]®OZ­LW¬IU«GS ªFR ªDPªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR «HS ¬IU­LW®OZ¯R]±Wa²[e"µ`j*·fn5ºlt@ŸsyMÂ{€ZшdɋwΓ—|ԜŸØŠš›Ý¯°¡âº»±çÆƹëÐÑÔïÙÙßóÞÞäôââèôââíóßßîñÙÙëîÑÑÖëÊÊ×èÁÁÚ庺Ü㎎Úâ±±Øᯯ×ᯯÕâ±±ÕäµµÐ庺ÐèÁÁÏëÈÈÎîÏÏçïÕÕîñÙÙìñÛÛìðÚÚèðØØéíÔÔâìÎÎÃèÇÈžæÃò亻«àµ¶šÜ®¯‘Ú§šˆÖ¢€sқžgΓ–eʌMŅ‰HÂ}ƒFŸtz(ºlt!·fnµ^g²Xc¯S] ®OZ ¬KV¬IUªGSªFRªDQªDO©DO©DO©DO©DOªDOªDQªFRªGS¬IU­LW®OZ°T^ ³Ycµ_ižhpŒov!Áz€'ш1ʌ;ϕ˜I՞ XÚ©ªvÞ²³¡ä»ŒÈèÅÅøìÏÏÿðØØÿóßßÿöççÿøììÿùððÿúññÿúññÿùïïÿ÷ììÿöèèÿõããßôàà“óßߘóßߘôáá˜õääÿöèèÿ÷ííÿúððÿúññÿúññÿùïïÿ÷ëëÿöååÿòÞÞÿîÕÕÿêÌÍÿæÃÃç⹺Çݯ°˜ØŠšsӜŸS͓–EȈŒ8Ä„/Ÿv}&»nu!·fnŽ]g±Wa¯R] ­NY¬KV«HSªFRªFRªDQªDO©DO©DO©DOªDOªDPªDQ«FR«GS¬IU­LX®PZ ±T_ ²Zeµaj¹hpŒov!Àx5Á†KȈŒDː”Tі™bԞ jØ€ŠxÚ©«ˆÞ°±Žâ·ž™ãŸŸ­æÄıéÊËŽìÑÑÈïÕÕãðÙÙçñÜÜçñÛÛêðØØëîÓÓëëÍÍÚéÆÆË矟ÎåžžË㎎×â±±ØᯯÚᯯÛã²²Ýä··ß朜ÙéÄÄÖìÍÍÒïÕÕÚñÜÜíôààêôââæôââãñÝÝßîÖÖÜëÌÍÆå°ᷞ¯Û«­¡Ö¢€˜Ñ˜šˆÍ“ÈˆŒsÀ…^Àw~TœqxF¹jr:·dm/µ^g)³Yc%±U`¯Q\­NY¬LW¬IUªGS ªFRªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªFR«GS ¬IU¬LW®NY®R]±V`²Zd µ_i'¶dm4ºkr8œqxLÁyTĀ…[ȉh͑”tјšÖ£¥Ü¬®Ÿâ·ž¥å¬ëËÌÃîÔÔÛñÛÛâôààåôààçóÞÞëñÙÙîîÒÒÝëÊÊÕèÂÂ×庺Û㎎Ûâ±±Ùá®®×á®®Öâ°°Öã³³Óä··Ñ柟ÐêÅÅÎëÍÍÛîÓÓðñÙÙññÜÜðòÞÞïñÜÜîðÚÚëîÖÖéìÐÐÎéÉÊŸæÄİ㟟©áµ¶™Ý°±•Úš©Õ¡£yҙ›m͑”fȉaÁ†@¿w~+Œovžgoµ_i²Yc°T^ ®OZ¬LW¬IUªGSªFRªDQªDO©DOªDOªDO©DOªDOªDQªFRªGS¬IU¬LW®OZ°T^ ²Ycµ_ižgoŒov!Ày&ā‡1ɋ<͓–IԞ ZÙŠ§~ݯ°˜â·žŒåÂÂÓéÊËííÔÔÿñÛÛÿôããÿ÷ééÿùîîÿúððÿúññÿúññÿùîîÿ÷ëëÿöèèÿõååÿõååûõååÿõææÿöèèÿ÷ììÿùîîÿúññÿúññÿúððÿøííÿöèèÿóááÿðÙÙÿìÑÑüèÇÈêã¿¿œßµ¶­Û¬­–Ö£¥xљ›Y͑”ELjŒ8Ã~„/Ÿt{%ºlt¶dmŽ]g±Wa ®R] ®NY¬KV«HSªFRªDQªDPªDO©DO©DO©DOªDOªDPªDQ«FR«HS¬IU®NY¯Q\ ±V`³\f¶cl¹jrœry!Â|5Ņ‰Rʌgϔ˜eӜŸ{×€ŠÚª¬ŒÞ²³Žâ¹º™ä¿¿ªèÆƶêÌÍŸíÒÒÔðØØåðÛÛêòÞÞëòÝÝîñÛÛîðÖÖïîÐÐëëÊÊÐèÃÃÍå»»Ì䶶Óâ²²×ᯯÚá®®ÛᯯÜã²²Ýä··Ú朜ÚéÅÅÓìÍÍÑïÕÕãñÜÜëóßßçôááæòÞÞÞïÙÙÝìÒÒ×èÈȮ䜟€Þ²³¡Ú©ª—Õž ŽÐ–™ʎ‘vƆ‹mÂ|‚]Ÿu|NŒnuA¹hp7¶ck1³\f%²Xc#°T^®Q[®NY¬KV¬IU ªFR ªDQ ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©COªDOªDQªFR ¬IU¬KV®NY¯Q\°T^²Yc Ž]g%¶ck,¹iq8ŒovD¿v|KÃ|‚[DžŠkʎ‘tі™ƒÕž ‹Ú©ª—Þ²³ãœŸ£çÈȶíÑÑÖïØØàòÝÝßóßßèóÞÞìñÙÙìîÓÓèëËËÓéÄÄ×朜×㶶Ùâ±±Úá®®Öá®®ÕᯯÕâ²²ÖãµµÔå»»ÑèÂÂÒëÊÊÔîÐÐíð××õñÜÜõôßßòóààóóßßòñÜÜîðØØííÒÒâêËÌÍçÅŵ㿿­àµ¶£Û®¯‘Ø¥§“Ôž †Ï”˜wʌIш0Áz€(œqx!¹iqµaj²Ze°T^ ®OZ ­LW¬IUªGSªFRªDQªDO©DOªDOªDO©DOªDOªDPªFRªFR¬IU¬KV®NY¯S] ²Xcµ_i·fn»nu ¿v|'Ä„1ȈŒ<͑”Iљ›bÖ¢€‚Ú«¬›ß³Ž­ãŒŒ¹èÄÄÎëÎÎçïÖÖúòÞÞÿõååÿ÷ëëÿùïïÿúññÿúññÿúññÿùïïÿøííÿ÷ëëÿ÷êêÿ÷êêÿ÷ëëÿøîîÿùððÿúññÿúññÿúððÿøîîÿ÷ééÿôääÿñÜÜÿíÔÔõéÊËÞæÂÂÀ㹺­Þ°±Ú§š“ÕŸ¡}і™^ˎ‘Aƅ‰7Â|‚-Ÿsy%ºkr·cl³\f°V`¯Q\ ®NY¬KV«HSªFRªFRªDPªDO©DO©DO©DOªDOªDPªDQ«FR«HS¬JV®NY¯Q\ °V`³\f¶dmºltŸu|&Â}ƒ*dž‹B̐”`љ›Õ ¢‰Ú©ª—Ý°±ã¹º¥åÀÀ¯èÇÇÃìÎÎÕîÕÕçðÙÙíòÞÞëôààðôààðóÞÞðñÚÚñïÕÕïìÍÍßêÇÇÏè¿¿Ñå¹¹Ó㎎Øá°°Ùá®®Úá®®Ûá°°Ûâ³³ÞäžžÙç¿¿×êÇÇÑíÏÏÕðÖÖêñÜÜèóßßæóßßåñÛÛßï××ÚëÍÎÉæÄĥ⺻žÜ¯°˜×¥§Òš‹Í“–‚É‹rł‡`Áz€\ŸsyOºlt=·fn;µ`j)²[e#±Wa¯S]®OZ­LX¬IU«HS ªFR ªDQªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BN©DOªDQ«FR «HS ¬JV­LX®OZ¯S]±Wa²\f$µaj%·fn9ºltCŸtzGÂ{€\ł‡fɋr͓–uқž‡×¥§ŽÜ¯°˜âº»¡çÄÄŠëÌÍÇîÖÖÝðÛÛáóßßäóÞÞçñÛÛíïÖÖììÎÎÚêÇÇÐç¿¿ÕäžžØâ³³Úá°°×á®®Øá®®×á°°Ôã³³ÔåžžÖç¿¿ÖêÆÆÔìÎÎãïÖÖ÷ñÜÜøôááùôããøõääøôââôòÞÞõðÙÙõíÒÒ÷éËÌêæÃÃÜ㺻ÇÞ²³ÈÛª«ÀÖ¡£‹Ñ—š]ˏ’8ƅ‰/Â}‚*Ÿry!¹iq¶ck³Ze±T_ ®PZ ­LW¬IU«GSªFRªDQªDPªDO©DO©DO©DOªDOªDQªFRªFR¬IU¬KV®NY¯R] ±Wa Ž]g·emºltŸtz$Â}ƒ.Ɔ‹7ʎ‘IŘTԞ yÙŠ§yÜ­®šá¶·šå¿¿ºèÆÇÚìÐÐæðØØûóßßÿöççÿøììÿúññÿúòòÿúóóÿúòòÿúññÿúððÿùððÿùððÿúððÿúññÿúòòÿúóóÿúññÿùïïÿ÷ëëÿõååÿñÞÞÿïÖÖ÷ëÎÎÝçÄÄÔ㌌¿ß²³ªÚ«¬×£¥Ó›žpΓ—Uɋ?ш8Áy-œqx%ºiq¶ck²\f±V` ¯Q\ ®NY¬JV«HSªFRªFRªDQªDPªDOªDOªDOªDPªDQªFRªFR«HS¬KV­NY ¯R] ±WaŽ]g·fn»nu ¿w}$Ä„*ȈŒ5͓–JӜŸn×€ŠžÜ­®ÅභÂã¿¿ÇèÆÆâìÎÎñîÕÕóðÛÛóóßßõõããõõääõôââõóßßõñÙÙôîÓÓóëËËÖèÄÄÕ匌Ôã··Ôâ²²Øᯯ×á®®Ûá®®Úâ±±ÚãµµÝ庺ÖèÂÂÔëÊÊÎîÑÑáñØØëòÜÜçóßßâóÞÞãðÙÙÙíÓÓÕêÉʵäÀÀžàµ¶¡Úª¬–Õ¡£Ñ˜š†Ì“sȈŒgÄZÀw~RœqxD¹jrB¶dm4µ_i(²Zd#±V`®R]®NY­LW¬IU«GS ªFR ªDP©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFR«GS ¬IU­LW®OZ®R]±V`²Zd"Ž_i'¶dm-ºkr;œqx@Àw~UÄZȈŒl̏“{јš€Õ¡£ŽÚª¬“൶åÀÀ¡èÉʳíÒÒØðØØÜñÜÜàóÞÞæñÜÜêñØØíîÑÑæëÊÊÒèÂÂÖå»»×ãµµÚâ²²Úᯯ×á®®ØᯯØâ²²Øä··×朜ÚéÄÄÛëËËÚïÔÔòñÛÛþôááýöååÿöææþöååýôããÿòÝÝÿðØØÿìÐÐÿèÇÇðä¿¿ñ൶óÛ¬®³Ö£¥nњœB̐”9Ɔ‹0Â}ƒ'œry"¹jr¶ck²[e±U` ®Q[ ­LX¬IU«HS«FRªFRªDQªDPªDOªDOªDOªDPªDQªFRªGS¬IU¬KV­NY®R] °V` ³\f¶cl¹jrœqx#Áy/ł‡6ɊŽA͑”Rҙœ^Ö¡£|Úšª„Þ°°›â·ž»äÀÀÅèÉÊÛíÒÒíñÛÛþôããÿ÷êêÿùïïÿúòòÿûôôÿüõõÿüõõÿüõõÿûôôÿûôôÿüõõÿüõõÿüõõÿûôôÿúññÿøîîÿöèèÿóááÿðØØüìÏÏêèÆÇÖ䟟É൶³Ý­®ÙŠ§ƒÔŸ¡tЖ™\̏“JȈŒAÀ…6¿v}*Œov$žhpµaj²Ze±U` ¯Q\ ®NY¬KV¬IUªGSªFRªDQªDQªDPªDPªDPªDQªFRªFRªGS¬IU¬KV®NY¯R] ±Waµ^g·fn»nu¿w~%Á†-Ȋ7Γ–?ԜŸSÙ§š‹Ý°±Ú⺻ëæÃÃñêÊËóíÓÓÿðÚÚüóßßýöääùöææûöææûõããûóßß÷ñÙÙøîÐÐæëÉÉØèÁÁØ庺Ú㎎Ûâ±±Ýá®®Ýá®®ÜᯯÜâ²²Üä··Û朜ÔêÅÅÑëÍÍÓïÓÓëñÙÙèòÝÝçóÞÞâñÛÛßï××ÚëÎÏÐçÆƬ㻌žÝ±²—Ù§šÔŸˆÎ”—€ÊŒoƄˆcÂ|‚[Ÿu|OŒnuE¹hp<¶ck)³\f#²Xc"°T^®Q[®NY¬KV¬IU ªFR ªDQªDO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBNšBN©COªDOªDQªFR¬IU ¬KV®NY¯Q\°T^²Yc ³\f"¶ck(¹hp8ŒnuBŸu|NÂ|‚SƄˆeʌsΔ—wԝŸ‰ÙŠ§Ý°±šã»ŒŸçÅÅšëÍÎÌïÖÖÚñÛÛÝòÞÞâòÝÝçñÚÚìïÔÔîìÍÍÖêÆÆÓ柟ÖäžžÙâ³³Ûâ°°Ûá®®ÚᯯØâ±±ØãµµÙ庺ÛèÂÂßëÊÊßîÒÒæñÚÚþôááÿöååÿöèèÿöèèÿöååÿôááÿðÚÚÿíÑÑÿéÉÊÿæÀÀüᶷÀÛ­®pÖ€ŠQњœE̐”<dž‹2Â~„(œry#¹jr¶ck²\f±V`¯Q\ ®NY¬JV¬IUªGS«FRªFRªDQªDQªDQªDQªDQªFR«FR«GS¬IU¬KV®NY¯Q\ ±V` ²[eµaj¹hpŒov"¿v})Ã~ƒ2LJ‹Aˎ’Mϔ—]ԛiØ¢€ƒÛª«ß±² ãººÃæÃÃÐëËÌåîÕÕöóÞÞÿöççÿøííÿúòòÿüõõÿü÷÷ÿüøøÿýøøÿýøøÿýøøÿüøøÿü÷÷ÿü÷÷ÿûôôÿùññÿ÷ëëÿõååÿðÜÜþíÓÓñéÉÊáäÀÀÌâ·žŒÞ¯¯¥Ú§©‰×¡£€Ò™œf͒•\ʋIƄˆ?Â{5Ÿtz(ºlt#·fnŽ_i³Yc°T^ ®Q[ ®NY¬KV¬IU«GSªFRªFRªFRªFRªFRªFRªFR«FRªGS«HS¬IU­LW®OZ ¯S] ²Xcµ_i·fn»nu¿w~$Á†-Ȋ3Γ–?Ԟ JÙ§šbÝ°±ãº»æçÄÄýëÌÍÿîÖÖÿñÝÝÿôããÿöææÿöèèÿöççÿõääÿóßßÿð××öíÐÐÜêÇÇßç¿¿ÞäžžÜ⎎Ýâ±±Ûá®®Þá®®Þâ±±Ý㎎Þ庺ÓèÁÁÓëÈÈÎîÐÐÞðÖÖìñÜÜçòÝÝãòÝÝÝðÚÚÖíÓÓÖéÉʺåÁÁžá·žœÜ¬®•Ö£¥Ò™œ‚Í‘”vȉŽnÇbÁyZœryKºlt;·fn4µ`j(²[e%±Wa¯S]®OZ­LX¬JV«HS «FR ªDQ©DO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQ«FR «HS ¬JV ­LX®OZ¯S]±Wa²[e#µ`j&·fn/ºlt>œryJÁyQÇbȉŽf͑”xљœƒÖ£¥‹Û«­•à¶·œåÁÁŸêÉʶíÒÒ×ðÙÙÞòÝÝßòÝÝåñÜÜèð××ëíÐÐæëÉÉÒèÁÁÖå»»×ãµµÛâ±±Üá°°ÜᯯÝâ±±Û㎎Û庺ÜèÁÁÝëÊÊâîÑÑâñÙÙòôààÿöååÿöèèÿöèèÿöååÿôááÿðÚÚÿíÑÑÿéÉÊÿåÀÀÎᶷ{Û«­XÖ£¥Nљ›Eˏ’=ƅ‰3Â}‚*œry$¹jr¶ck²\f±V` ¯Q\ ­NY¬KV¬IU«HSªGSªFR«FRªFRªFRªFRªFR«FRªFR«HS¬IU¬KV®NY¯Q\ ±T_ ²Zdµ_i·fnºltŸtz'Â{€2ł‡=ɊŽJ͐“VЗ™f՞ uÙ€¥‰Ü¬­¡àŽµ©äŸŸÂèÆÇÚìÐÐïñÛÛÿôããÿ÷ëëÿúññÿüõõÿüøøÿýúúÿýûûÿýûûÿýûûÿýúúÿýúúÿü÷÷ÿûôôÿùïïÿ÷ééÿóááÿðØØüëÎÎëçÃÃÝã»»œà²³©Ûª«‘Ø£€ˆÓ›oϕ˜`̎’Rȇ‹FÄ„;Áy.œqx&¹jr!·dmŽ]g²Yc°T^ ®PZ ®NY¬KV¬IU«HS«GSªGSªFRªFRªFRªFRªGS«GS«HS¬IU¬KV­LX®OZ °T^ ²Ycµ_i·fn»nu¿w}$Á†+ȉŽ3Γ–<ԜŸIØŠšPÝ°±h㺻ŸçÃÃîëÌÍÿîÖÖÿñÝÝÿõããÿöççÿöèèÿöççÿõääÿòÞÞþðÖÖéíÎÎáêÆÆá矟àä··ß⎎àâ±±ÞᯯÞâ±±Ý⎎Þä··Þ眜×êÄÄÑëÌÌÒïÓÓìñÙÙèòÜÜæòÝÝáñÛÛÝï××ÛìÐÐÎçÆƧ䌜›ß²³šÙ©ªŽÕŸ¡†Ñ–™|ˎ‘oDžŠdÃ~ƒ[¿v}LŒovAºiq:·cl,µ^g$³Yc#±U`®R]®NY­LW¬IU «GS ªFRªDPªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BNªDOªDPªFR«GS ¬IU ­LW®NY®R]±U`³Ycµ^g"·cl,ºiq6ŒovF¿v}HÃ~ƒ\dž‹aˎ‘wЖ™x՞ †Ùš©ŽÝ±²—㌜€çÆÆ©ìÏÏÎï××ÛñÛÛáòÞÞâòÝÝèñÙÙëïÔÔîëÍÍÙéÆÆÔ矟Øå¹¹Þ㎎Üâ±±Þâ±±Üâ²²Þ㶶Ýå»»ÝèÂÂÞëÊÊãîÑÑâñÙÙåôààûõååÿöççÿöççÿõääÿòÞÞÿðØØÿìÐÐÿèÆÆÑ䌜ƒÞ³ŽaÛª«XÕ ¢LЖ™Bʌ9Ņ‰3Á{*œqx!ºiq¶ck²\f°V`¯R] ®OZ­LW¬KV¬IU¬IU«HS«HS«GSªGSªGSªGS«GS«HS¬IU¬IU¬LW®NY®Q[°T^ ²YcŽ]g·cl¹iqŒpw%Àw~2Ã~ƒ9DŽ‰GʍSΓ–aҙ›o֟¡…Ù§©•Þ°±ªâ·žÂåÂÂÐëÌÍéî××ýóààÿ÷ééÿúïïÿûõõÿýøøÿýûûÿýüüÿþüüÿþüüÿýüüÿýúúÿü÷÷ÿûóóÿøîîÿöççÿñÝÝÿîÔÔøèÉÊßäÀÀÕ൶¹Ü­®€Ù¥§Õž ‚Зšk͑”\ʊŽPł‡EÂ|‚9Ÿt{.Œnu&žhpµaj³\f±Wa°T^ ®PZ®NY­LW¬JV¬IU¬IU¬IU«HS«HS¬IU¬IU¬IU¬IU¬IU¬KV­LW­NY ®Q[ °T^ ²Ycµ_i·fn»nuŸu|$À…-ȈŒ2͒•>ӛžE×€ŠOÜ­®`ᶷwåÀÀ€éÉÊêíÓÓÿñÛÛÿôââÿöååÿöèèÿöççÿõããÿòÞÞòðÖÖáíÎÎãêÆÆâç¿¿áåžžá㎎áâ±±áâ±±áâ²²á㶶ß庺ÝèÁÁÖëÉÉÐîÐÐàðÖÖéñÛÛåòÝÝãòÝÝÜðÚÚÙíÔÔÔéËÌŸæ ➹œÜ®¯˜×¥§Ò›ž€Í’•{ɋmł‡dÂ{€[ŸtzP»nu?žgo2µaj-³\f!±Wa°T^®Q[®NY¬KV¬IU ªFR ªDQªDO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBNšBN©COªDOªDQªFR ¬IU ¬KV®NY®Q[°T^±Wa³\f"µaj,žgo4»nu8ŸtzDÂ{€Vł‡[ɋg͑”{ҙœ†×£¥ŠÜ­®â·žœåÁÁ¥éÉÊ¿íÓÓÕðÙÙÚòÝÝàòÝÝäñÜÜèð××íîÑÑçëÊÊÔèÃÃÕ圜Üä··Þ㎎Þ㎎à䎎ßäžžß圜ßèÄÄßëÊÊßîÒÒàñÙÙðôßßþõääÿöååÿõååÿóààÿñÛÛÿîÔÔÿêËÌÜç—㹺oݯ°^Ø¥§WԞ Nϔ˜Bɋ9ăˆ.Áz€)Œpw"¹iq¶ck³\f±Wa¯S] ®PZ ­NY ­LX¬LW¬KV¬JV¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬KV­LW­NY®Q[°T^ ±Wa ³\fµajžgp»nu$Ÿtz,Â{€8Ł†DȇŒR̐“\ϔ—oԛØ£€Û«¬£à³ŽµäŸŸÑéÇÈáíÒÒùòÝÝÿöææÿùîîÿûôôÿýøøÿýûûÿþýýÿþýýÿþýýÿþüüÿýúúÿü÷÷ÿúòòÿ÷ììÿóããÿðÚÚÿìÐÐóèÄÄÛã»»Èß±²ŽÙš©›Ö ¢‡Ó›wΓ–lˍ‘XȆŠMÄAÁy7Ÿry,ºls$·fnµ_i²[e±Wa¯S] ®Q[ ®NY­LX­LW¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬LW­LW­LW­LX­NY ®OZ ®R] ±U` ³Ycµ_i·fnºltŸtz%Â}ƒ+Ɔ‹4ˎ‘:їšEÕ ¢NÚª¬[Þ³Žg仌„çÆƬìÏÏñï××ÿñÝÝÿõââÿöååÿõååÿôããÿòÞÞúñ××èíÐÐáëÈÈáèÁÁáå»»âä··á㎎â㎎áäµµáä¹¹ßç¿¿ØéÆÆÓëÍÍÕïÓÓéñÙÙêòÜÜçòÞÞâñÜÜÝðØØÛìÐÐÐçÇǮ土Þ³Ž—Úª¬’ÕŸ¡‡Ñ˜šË“vȈŒkÄ^Àw~TœqxFºkr9·em4Ž_i&²Ze#±V`¯R]®OZ­LW¬IU«HS «FR ªDQ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQ«FR«HS ¬IU ­LW®OZ¯R]±V`²ZeŽ_i$¶dm0¹jr7œqx=Àw~OÄ~ƒ]ȇ‹mˏ“nі™€ÕŸ¡ŠÚ©ª’ß±²—匜£çÆÆ«ìÏÏÎï××ÙñÛÛàòÞÞäòÝÝèñÚÚêïÕÕììÎÎÜêÇÇÖèÁÁÛ匌ßäžžáä··áäžžáå»»àçÀÀàêÇÇÞìÍÍáïÔÔïñÛÛþôßßÿôââÿôââÿôááÿðÜÜÿîÖÖÿìÎÎîçÅŞ仌tߎµhÚª¬`Ö¢€Tљ›J͐“>ȈŒ8Ā…-¿v}%Œovžhpµaj³\f±Wa°T^ ¯R] ®Q[ ®OZ ®NY ­NY®NY­LX­LX­LW­LW¬LW¬LW¬KV¬LW­LW®NY®NY®Q[¯S] °V` ³Zeµ_i·emºkr!œqx,Àw~4Ã~ƒ@DŽ‰Lʋ[͑”jј›|Ö ¢‰Ù§©›Þ±±®ã»»ÃèÅÅßìÐÐõïÚÚÿôääÿ÷ííÿúóóÿü÷÷ÿýûûÿþýýÿþýýÿþýýÿþüüÿýúúÿü÷÷ÿúññÿ÷ëëÿóááÿïØØþêÌÍîæÂÂØᶷÀÝ­®ŠÙ€¥˜Ôž †Ð–˜v͐“dɉWł‡HÂ|‚;Ÿu|0Œov&¹iq"·clµ^g²Zd°V`°T^ ¯Q\ ®OZ®NY®NY®NY®NY®NY­NY®NY®NY®OZ®OZ ®OZ ®OZ ®PZ ¯Q\ ¯R] °T^ °V`²Zdµ_i¶dmºkrœry$Áy)ш2Ɍ;Γ—BԜŸLØ¥§YÜ®¯bᶷkä¿¿ƒéÈɵìÑÑüðØØÿòÞÞÿôááÿôââÿôââÿóÞÞÿñØØûîÒÒçëËËàéÄÄâ矟â庺âä··âä··â庺â朜ÛèÃÃ×ëÊÊÑîÐÐâðÖÖëñÜÜæòÞÞåòÝÝÞðÚÚÖíÕÕ×éËÌŸæ£⹺›Ý®¯‘Ø¥§Ôœž‡Î“—yʋoŅ‰gÂ|‚WŸt{H»nuG¹hp:¶ck*³\f$²Yc °T^¯Q\­NY¬LW¬IU ªGS ªFRªDPªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BNªDOªDPªFRªGS ¬IU¬LW­NY¯Q\°T^²Xc³\f"¶ck(žhp6»nuAŸt{JÂ{OшeɋfΓ—~ӛž×€ŠÛ­®”â·žšæÁÁ¢éÉÊœíÓÓØðÙÙÚòÝÝáóÞÞäòÜÜêñØØìîÓÓëìËËÙêÆÆÛèÁÁÝ朜á匌á朜áçÁÁáéÄÄàëÊÊâîÑÑðð××ÿñÜÜÿóÞÞÿôßßÿóßßÿñÛÛÿîÖÖÿìÏÏðèÆÆ©ã¿¿}ᵶpÜ­®cØ¥§[ԝŸQϔ—Fʌ<ƅ‰4Â}ƒ,Ÿt{$»nužgpµaj³\f³Yc°V`±T_°T^ ¯R] ¯R] ®R] ¯Q\ ¯Q\ ®Q[ ®PZ ®OZ ®OZ ®NY­NY®NY®NY®NY®OZ¯Q\¯S] ±V` ³YcŽ]g¶ck¹hp!»nu)Ÿtz3Â{€=Ł†HȇŒX̐“dϕ˜uԜž†Ø€¥šÜ­®šá¶·¿åÃÃÕêÍÎíïÙÙÿóááÿ÷ëëÿúòòÿü÷÷ÿýúúÿþýýÿþýýÿþýýÿþüüÿýúúÿüõõÿùññÿ÷ééÿòßßÿîÔÔüéÉÊëã¿¿×àŽµ·Û«¬¥Ø¢€‘Ó›…Γ–vˎ‘`ȆŠUÄHÁy:œry2ºlt%žgoµaj³\f²Yc±V`°T^ ®R] ¯Q\ ®PZ ®PZ ®PZ ¯Q\ ¯Q\ ®R] ¯R] ¯S] °T^ °T^ °T^ °T^ °T^ °T^ ±U` °V`²Yc²[eŽ_i¶dm¹iqŒpw!Àw~)À…/ȈŒ8̏“>јšJ՟¡SÚš©_Þ°±i㹺uæ‹éÉÊÃíÑÑýðØØÿñÜÜÿôßßÿóßßÿóÞÞÿñÚÚÿïÕÕûíÏÏéêÈÈâéÃÃâæ¿¿ã圜ã匌ã柟àèÂÂÙêÈÈÕíÏÏÛðÕÕìñÚÚéòÝÝãòÞÞàñÛÛÝð××ÙìÐÐÒèÇǥ土Þ³Ž™Úª¬Õ ¢‰Ñ˜šÌ“vȈŒhÄ„ZÁySœqxKºkr:·fn7µ_i,³Ze"°V` ¯S]®OZ­LX¬JV«HS ªFR ªDQ©DO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQ«FR«HS ¬JV­LX®OZ¯R]°V`³Ze!µ_i&·em-ºkr6œqxCÀw~KÄ\ȈŒe̎’sИš{՟¡‰Ú©ª’Þ±²—匜¢çÆÆ«ìÏÏÍï××ÛðÛÛÞóÞÞâóÞÞêñÛÛëðÖÖñîÑÑàëËËØêÇÇÝèÄÄàèÃÃáèÃÃàéÆÆâëÊÊäíÐÐòïÔÔÿñÙÙÿòÜÜÿòÝÝÿòÝÝÿðÚÚÿîÕÕÿìÏÏöèÇȬ忿â·žtݯ°lاša՟¡UИšL͐“Aȉ;Ā†0Áy)œry$ºltžgo¶ckµ^g²\f³Yc²Xc±Wa±Wa±Wa±Wa°V`±V`±V` ±T_ °T^ ¯S] ®R] ¯Q\ ®Q[ ®PZ ®PZ®Q[ ®R] °T^ ±V` ²Yc³\fµaj·fnºls%œqx/Àw~8Ä~ƒDDŽ‰SʌbΓ•uҚœ…×¢€—Úª«¥ßŽµ¹ä¿¿ÓêÊËêîÖÖýóááÿ÷êêÿúññÿü÷÷ÿýúúÿþýýÿþýýÿþýýÿþüüÿýúúÿûõõÿùîîÿõççÿòÞÞÿíÓÓ÷èÈÈæ䌜ÉÞ²²²ÚšªžÕŸ¡Ð—š͑”qɊŽał‡QÂ|‚D¿v|8Œov+¹jr$·fnµ`j³\f²Yc°V`°T^ ¯S] ¯R] ¯R] ¯S] °T^ ±T_ ±V`±Wa±Wa²Yc²Yc³Yc³Yc³Yc²Yc²Yc³Yc²Zd²[eŽ]gµ`j¶dm¹iqŒovŸu|'Â|‚-ш4ʋ;͒•EҙœNÖ¢€WÚª¬cÞ±²n亻xæÃÒéÊËÐìÑÑýð××ÿñÛÛÿòÝÝÿòÝÝÿñÛÛÿð××ÿîÓÓüìÍÍìëÉÉäéÅÅäèÂÂãèÃÃâéÄÄÞëÈÈÙìÍÍÕîÓÓçñÙÙëòÜÜêóÞÞãòÞÞàðÚÚØíÔÔÔéÌÍ¿æŸ⹺œÝ®¯’Ø¥§‰Óœž†Î”—zʌoƅ‰_Â|‚VŸu|IŒnu?¹iq6¶ck1Ž]g%²Yc ±T_¯Q\®NY­LW¬IU «GS ªFRªDPªDO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BNªDOªDPªFR«GS ¬IU¬LW®NY¯Q\±T_²YcŽ]g%¶ck&¹hp2»nu=Ÿt{CÂ|‚Rш`ʋnΓ—vӛž×€ŠÜ­®’ᶷšæÁÁ¢éÊ˹íÑÑ×ðØØÚòÞÞãóÞÞäòÞÞêñÛÛððÖÖíîÑÑÚìÍÍÜëÊÊßëÉÉãëÊÊäëÌÌçîÐÐôïÔÔÿñ××ÿñÛÛÿñÜÜÿñÜÜÿðØØÿîÕÕÿìÎÎöèÇȲåÀÀ‚âž¹yÞ¯°pÚšªdÖ¡£[ҙœQ͒•Hʋ=Ƅˆ7Â}ƒ/¿v})œqx$ºlsžgo·clµ`jµ_iŽ]g³\f³\f³\f³\f³\f³\f³\f²\f²Ze³Yc±Wa°V`±U`°T^ ¯R] ¯R] ¯R] ¯R] °T^ ±V` ²Yc²\fµ_i¶dmºiq#Œov-Ÿu|8Â|‚Bł‡OɊŽa͐“qИ›Õ ¢’ÚšªŠÞ²²³äœŸÉèÉÉçîÔÔüóààÿöèèÿúññÿüööÿýúúÿþüüÿþýýÿþýýÿýüüÿýùùÿûôôÿùîîÿôååÿñÜÜÿìÐÑ÷çÆÆà㺻ÃÝ°±²ØŠ§žÔœžŽÐ•˜z̍‘kȈŒ]ā†KÁz€?Ÿtz3»nu*¹iq"·clŽ_i²\f²Yc±Wa±V`±U` ±U` ±V`±Wa ²Xc²Zd²\f³\fµ^gŽ_iµ_iµ`jµ`jµ_iµ_iŽ_iµ_iµ_iŽ_iµ_i¶ck·em¹iq»nu œry#Áy*À…2ȈŒ;ˎ‘Bϕ˜JӜžU×€Š`Ú«¬hß³Žp亻{æÃÙéÊËÎíÒÒýðÖÖÿðÙÙÿñÜÜÿñÜÜÿñÙÙÿðÖÖÿîÓÓýíÎÎïëËËèëÉÉäëÉÉâëËËÙíÎÎÖïÓÓàñØØîñÜÜìóÞÞæóÞÞãðÛÛÜð××ØìÐÐÎèÆƧ土ŸÞ³Ž–Úª¬Ö¡£ŠÑ˜š|͐“rȉdÄ…WÁyQŸryDºls?·fn.µ`j(²[e!±Wa °T^®PZ®NY¬KV¬IU ªFR ªDQªDO©CO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªDQªFR¬IU ¬KV®NY®OZ¯S]±Wa³Ze"µ_i)·fn,ºkr8œqxCÁyJÄUȈŒf̎’oИš~՟¡‰Ûš©‘Þ±²™ä»Œ çÅÅšìÎÎÎîÕÕÛðÛÛßóßßãóßßêñÞÞëñÛÛñð××ëîÓÓØîÑÑÝîÐÐãîÐÐéîÓÓ÷ðÕÕÿðØØÿñÚÚÿñÛÛÿñÛÛÿðØØÿîÓÓÿìÎÎøèÆÇ°åÁÁ‰âž¹}Þ°±tÛ©«jס£aӚTΓ•Lˎ‘Cȇ‹<Ä„3Áy-Ÿtz'Œov"ºkržhp·fn·cl¶ck¶ck¶ck¶cl·cl·dm¶dm·dm·cl¶ckµajµ_iŽ]g²\f³Yc±Wa±V` ±T_ °T^ °T^ ±T_ ±V` ²Xc²[eŽ_i¶cl¹hp »nu)Ÿsy3Áy?Ä…Lȇ‹]̎’nϕ˜}ԝŸÙ§š¢Ý°±²ã»ŒÄçÇÇäìÓÔüñÞÞÿõççÿùïïÿûööÿýúúÿþüüÿþýýÿþýýÿýüüÿýùùÿûôôÿøîîÿôääÿðÚÚÿëÏÐöçÄÄÙ⹺¿Ý­®­×£¥šÓ›‹Ï”—xʌhDŽ‰[Ä~ƒJÀw~=Ÿry2ºlt+žgo ¶ckµ_i²\f³Yc±Wa±Wa±Wa²Xc³Yc²[eŽ]gµ_iµaj·dm·fnžgožhpžhpžhpžgp·fn·fn·em·dm·cl·cl·em·fn¹iqºlt œqx#¿v|)Â|‚/ł‡6ȉŽ=̐“GЖ™P՞ XØ¥ŠbÜ­®n೎w㌌æÃÜéÊËÓíÒÒþïÕÕÿðØØÿñÛÛÿñÛÛÿñÙÙÿð××ÿïÔÔþîÒÒòîÐÐéîÐÐàîÒÒØïÕÕØðÙÙëñÜÜìòßßèóßßãóÞÞàðÙÙÞîÓÓÓêÊË»ç ➹šÝ®¯”×€ŠŒÔœž€Î”—xʌlƅ‰_Â|‚PŸu|JŒovF¹iq8¶cl.Ž]g&²Yc±U`®R]®OZ­LW¬IU«HS ªFRªDQ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDQªFR«GS ¬IU ­LW®NY¯Q\±T_²YcŽ]g%¶ck+¹hp1»nu8Ÿt{CÂ|‚ZшbʋfΓ—{ӛž~×€ŠŒÛ­®”ᵶ—åÀÀ£èÉÊ·íÑÑ×ðØØÙñÝÝàóßßçôààéóßßïòÜÜïñÚÚàñØØÞð××éð××÷ñÙÙÿñÙÙÿñÛÛÿñÜÜÿñÚÚÿï××ÿîÔÔÿìÎÎ÷èÆdzåÀÀ‰âž¹~Þ²²wÛšªl×¢€bӛZД—Q̎’GȉŽ@ł‡7Â|‚1Àw~,œry&Œnu"ºls¹iqžhpžgpžhp¹hp¹iq¹jrºkrºltºltºltºls¹jr¹iq·fn¶dmµajµ_i³\f²Zd±Wa°V`±V`±V`±Wa ²Yc²[eµ^g¶ckžgo!ºlt*Ÿry3Àw~=Ä~ƒMDžŠYʍiϔ—yӜž‹ØŠ§Ý¯°¯âº»ÃçÆÆÝìÒÓûñÞÞÿöççÿùïïÿûõõÿýúúÿýüüÿþýýÿþýýÿýûûÿýøøÿûôôÿøííÿôääÿðÚÚÿëÏÐõæÃÃÛá·žŒÜ¬­«Ö¢€˜Ñ™œ…Í‘”tʋcƃ‡YÂ|‚F¿v|:Œpw0ºkr)·fn!¶ckµ_i³\f²Ze³Yc³Yc²Zd²\fŽ]gµ_i¶cl·fn¹iqºkr »nuŒovŒovŒpw!Œpw!Œov Œnuºltºls¹jr¹iq¹hpžhp¹hp¹iqºlt Œov#Ÿtz'Áy-Ä~ƒ2ƅ‰9ʋA͑”JЗ™R՞ \Ù¥ŠfÜ­®oß³Žx㌌‚æÃØéÊËÓíÐÐþïÕÕÿðØØÿñÛÛÿñÜÜÿñÛÛÿñÙÙÿñØØþð××òðØØçñÙÙÞñÛÛäòÝÝïóßßíôààäóßßãñÛÛßîÖÖ×ìÎÎËçÆƩ䌜œß²³˜Ú©«ŽÕ ¢‡Ñ˜šÌ“nȉhÄ…bÁyWœryEºltB·fn5µ`j-²\f#±Wa°T^®PZ®NY¬KV¬IU ªGS ªFRªDOªDO©BNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©COªDOªFRªFR ¬IU ¬KV®NY®PZ¯S]±Wa³Ze!µ_i)·fn.ºkr9œqx>ÁyOÄ[ȈŒfˎ’oЖ™՟¡‚Úš©ŒÞ°±™ãº» çÅÅ€ëÍÎÆîÕÕÙðÛÛÞôßßæôââçôââíôááìóßßóóßßçòÝÝ÷òÝÝÿòÝÝÿòÝÝÿñÜÜÿñÛÛÿï××ÿîÓÓÿìÎÎ÷èÆdzåÀÀŒã¹º€Þ²²wÛª«p×¢€fԛ[ŘS̐“KɋAƄˆ;Ä~ƒ4Áy.Ÿt{)œqx%Œnu$ºlt ºlsºls ºlt»nu!Œnu!Œpw#Ÿry$Ÿsy#Ÿu|&Ÿu|%Ÿu|&Ÿu|%œry$œqx »nu%ºkržhp¶dmµajŽ]g²[e³Yc²Xc±Wa²Xc³Yc²[eµ^gµaj·fn ºkr&œqx1¿v}=Ã|‚Gƃ‡WʊŽfΒ•xҙœ‹×£¥›Ü¯°®â¹ºÀæÅÅÖìÐÑûñÜÜÿöççÿùïïÿûõõÿýúúÿýüüÿþýýÿþýýÿýûûÿüøøÿûóóÿ÷ììÿôääÿïÙÙÿëÎÏôåÁÁÙàŽµžÛª¬§Ö¡£•Ð˜šˆÍ“uɊŽdŁ†UÂ{GŸt{<Œov-¹jr(·fn!µajµ_i³\f²\f²[e²\fŽ]gµ_i¶ck·fn¹iqºlt"Œov&œry/Ÿv}&Àx%Áz€'Áz€'Áz€&Ày&¿w~(Ÿt{&œry$œqx"Œov ºltºltºkrºlsºlt!Œov"œry%¿v|*Â{€/Ä…6LJ‹<ʌE͒•Mј›T՟¡_ÙŠ§iÜ­®rß³Ž{㌌„æÃÛéÉÊÔíÐÐþïÕÕÿðØØÿñÜÜÿòÝÝÿòÝÝÿòÜÜÿòÝÝýòÞÞðóßßêôààöôââêôââçôááæñÝÝáðØØØìÒÒÙèÉÊŽäÀÀŸà¶·›Û­®‘Ø¥§Óœž„Í“—~ʋlƅ‰cÂ|‚WŸu|MŒov=¹iq8¶cl,Ž]g&³Yc±U`®R]®OZ­LW¬IU «HS «FR ªDQ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQªFR«HS ¬IU ­LW®NY¯Q\±T_²YcŽ]g#¶ck*¹hp.»nu:Ÿt{MÂ{Oшcɋh͒•rҙœ€×¢€ŒÛ¬­–൶•ä¿¿ŸèÇÇ®ìÑÑÓðØØÙñÝÝßôââçõääìõååõõääÿõããùôââþôââÿôßßÿòÞÞÿñÜÜÿðØØÿîÓÓÿìÎÎøèÆǺåÁÁŒã¹ºÞ²²yÛª«p×¢€gԜž^ŘU͐“NʋEDžŠ=Ä„5Â{€1Àw~+Ÿtz(œqx%Œov$Œnu"Œov#Œov$œqx#Ÿtz%¿v|&Ày'Á{+Â~„-Â}ƒ-À…-Ã~„-Â}ƒ)Â}‚)Áz€:Ÿv}/Ÿsz)»nu ¹jr·fn¶ckŽ_i³\f³Ze²Zd³Yc²Ze³\fµ^gµaj·fn¹jr&Œov1Ÿu|;Â|‚Gł‡WɊŽh͑”tҙœˆÖ£¥›Ü¯°¬á¹ºœæÅÅÔìÐÑûñÜÜÿõææÿùîîÿûõõÿýúúÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿ÷ììÿôääÿïÙÙÿêÌÌôåÀÁÍàŽµ»Ûª«šÕŸ¡“јš„̐“sȉdā†RÁz€FŸtz<Œnu/¹iq&·fn ¶ckµ_iŽ]gŽ]gŽ]gµ_iµaj·clžgo ºkr"Œov$Ÿtz(Àx)Â|HÀ…<ā†/ш1ш.ш/ăˆ1Á†0Ã~„-Â|*Àw~*Ÿu|&œry$œqx"Œov!»nu"»nu!Œov#œqx&Ÿtz'Àw~-Â|‚1Ł†7ȇ‹>ʍF͒•Oј›WÖ ¢aÚŠ§jÜ­®rß³Žz㌌…æÃÜéÉÊÔíÐÐþïÕÕÿðÙÙÿòÝÝÿóßßÿôààÿôââÿôããüõããûõååÿõääðôããäôááàðÛÛÚîÕÕØëÍÎÈçÄĥ㺻›Þ°±•Úš©ÕŸ¡‚Иš~̎’uȈŒeÄ„WÁyRŸryDºls<·fn+µ`j(²\f±Wa °T^®PZ®NY¬KV¬IU ªGS ªFR ªDPªDO©BNšBNšAMš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@LšAMšBN©BN©COªDOªFRªGS ¬IU ¬KV®NY®OZ¯S]±Wa³Zeµ_i&·fn.ºkr9œqx>Àw~IÄ~ƒVLjŒgˎ’nѕ˜{՞ „ÙŠ§ŒÜ¯°”⹺ŸæÃâêËÌœîÕÕ×ðÛÛÞôààäôääëöååÿöææÿöååÿõååÿôããÿôààÿòÝÝÿðØØÿïÕÕÿìÎÎøèÆdzåÁÁŠã¹º€Þ²²yÛª«qØ¢€hԜž_ƘV͑”NʌFLJ‹?ā†9Â|‚3Áy/Ÿu|+Ÿsy(œqx'œqx%Ÿry'Ÿsy(Ÿt{)Àw~+Áz€,Ã}ƒ.Ā…/Ņ‰4Ɔ‹3LjŒ3ȈŒ2ȈŒ7dž‹5Ɔ‹>ăˆGÃ~„6Áz€+Ÿt{&Œpw$ºls$žgp"·clµ_iŽ]g³\f²\f²\f³\fŽ_i¶ck·fn ¹jr'Œov/Ÿt{;Â{€HŁ†TȈd͑”uјš‡Ö¢€™Û¬®«ážž»æÅÅÓëÐÑûñÜÜÿõææÿùîîÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿïÙÙÿêËËóåÀÁÌߎµºÚª«¥Õž •Ñ–™ƒËŽ’sȈŒbÄ„SÁyFŸtz7»nu.¹iq&·fn!¶ckµ`jµ_iŽ_iµ_iµaj¶dm¹hp#ºlt$œqx)Ÿu|*Á{1Ā…9Ņ‰JLjŒXȊAɌ8ʌ:ʌ8ɋ:Ȋ9LJŒ6Ņ‰3À…2Â}ƒ,Áz€+¿v|'Ÿsy'œqx&Œpw#Œpw$œqx&œry'¿v|+Áy/Ã~ƒ4ł‡9ȈŒBˎ’IΓ•Qј›ZÖ ¢aÚŠ§kÜ­®sàŽµ{㌌„æÃÛéÉÊÑíÑÑþïÖÖÿðÚÚÿóßßÿôââÿõääÿöååÿöææÿöææÿöååÿôââéòÞÞÜðØØÖìÑÑÎèÈȪ俿 àµ¶—Û¬­’×¢€ˆÒ™œ~Β•wʋpшeÂ|‚[Ÿt{KŒnu>¹iq9¶cl,Ž]g ²Yc±U`®R]®OZ­LW¬IU «HS «FRªDQ©DO©COšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQ«FR«HS ¬IU ­LW®NY¯Q\±T_²Yc³\f!¶ck%žhp0»nu>ŸtzGÂ{€Wł‡_ɊŽd͑”uҙœ{Ö¡£†Ú©«“ߎµ—仌ŸçÆÆ£ìÏÏÉï××ÚñÝÝàôââúõååÿöççÿöççÿõååÿôããÿôßßÿðÚÚÿïÕÕÿìÎÎøèÆǶåÀÀ‰ã¹ºÞ²²xÛª«qØ¢€iԜž_ƘX͑”PʌGȇ‹AŁ†:Ã~ƒ5Áy1¿v},Ÿt{*Ÿtz)Ÿsy(Ÿtz)Ÿu|)Àw~-Â{€.Ä1ł‡4dž‹7ȉŽ6ʌ9ˏ’=͑”=͒•=͒•=̐”Kˏ’cɊUdž‹=Ā†/Â|‚1¿v|-œqx'ºlt#žhp·dmµajŽ_iŽ]gŽ]gµ^gµ_i¶ck·fn!¹jr(Œov/Ÿt{:Â{€GŁ†VȈc͐“uјš…Õ¢€˜Û¬®ªážž»æÄÄÒêÐÐúñÜÜÿõææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËóåÀÁÐߎµµÚ©ªŠÕž ’Ñ–™ËŽ’rȈŒbÄSÁyDŸtz9Œnu/¹iq)·fn"·dm¶ckµajµaj¶cl·fn ¹iq ºlt&œqx(¿v|,Â|‚1ăˆ;LjŒ=ɍ‘_̑•lΓ–nϕ˜NЗšAЗšCϔ˜A͓–>̐”=ʌ9ȈŒ9ƅ‰5À…3Â|‚0Áy,Ÿu|*Ÿsy(Ÿry&Ÿry&œry'Ÿtz*¿v},Áz€0Ä~ƒ5ł‡;ȈBˎ’JΓ•Qј›ZÖ ¢bÚŠ§jÜ­®sàŽµz㌌ƒæÃÙéÊËÔíÑÑþï××ÿñÛÛÿôááÿõääÿöååÿöççÿöææÿõååÿôááîðÛÛßíÔÔÓéÊË»æÂœ㹺œÜ¯°’ÙŠ§Õž ƒÑ–™}ˎ’lȈŒeÄWÀw~LœqxJºkr<·fn0µ_i#²[e#±Wa°T^®PZ®NY¬KV¬IU ªGS ªFRªDPªDO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BNªDOªDOªFRªFR ¬IU ¬KV®NY®OZ¯S]°V`³Ze#Ž_i#¶dm)¹jr:ŒpwD¿v}PÃ~ƒOdž‹bʌhϕ˜zԜž†Ø€ŠŠÜ­®à¶·—äÀÀèÈȱìÑÑÛðØØíòÞÞùôââÿõååÿõååÿôããÿóßßÿñÛÛÿîÕÕÿìÏÏ÷èÇȳåÀÀ‡âž¹}Þ²²wÛª«oØ¢€hԜž_ƘX͑”PʌHȇ‹Bł‡<Ã~ƒ6Â{€1Àw~.¿v|,Ÿt{,Ÿt{+¿v|,Àw~-Áz€/Ã|‚1Ç4dž‹:ȉŽ:ʎ‘>͒•BЖ™Eљ›GњœCӜŸFӜŸPњœpЗšw͓–hˍ‘JȈŒ>ш8Â}ƒ1¿v}-œqx,ºlt'¹hp ·em¶ckµ`jµ_iµ`jµaj·dmžgo"ºkr)Œov1Ÿt{<Â{€Gā†UȈŒc̏“sјš…Õ¡£˜Û¬®©á·žºæÃÄÑêÐÐúñÜÜÿõææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËôåÀÁÍߎµµÚ©ª€Õž ‘Ж™‚ËŽ‘rLjŒ`ÄRÁyFŸtz9Œov1ºkr+žhp$·fn"·dm·dm·em!·fn!¹iq#ºlt)œqx*¿v|.Â|‚8ł‡;ȈŒ<ˎ‘R͓–cљ›yӜŸ€ÕŸ¡~՟¡]՟¡Kԟ¡KӜŸLјšHΓ—C͐“@ʋ?ȇ‹8ł‡6Ã~ƒ2Áz€.Àw~+Ÿt{*Ÿtz(Ÿsy(Ÿtz)Ÿu|+Àw~.Â{€1Ä6ƃ‡<ȈCˎ’Jϔ—Qј›YÖ ¢aÚŠ§iÜ­®rß³Žy㌌€æÃ×éÊËÎíÑÑýðØØÿñÝÝÿôââÿõääÿõååÿõääÿôââÿñÜÜøî××êìÎÎÐçÅŀ仌žÞ²³”Ú©«Ö¡£Ò™œ|͑”qɊŽjł‡^Â{€XŸtzK»nuCžhp1¶ck'Ž]g%²Yc ±U`®R]®OZ­LW¬IU«HS «FR ªDQ©DO©COšBNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBNšBN©BN©DOªDQªFR «HS ¬IU­LW®NY¯Q\°T^²Xc³\f"µaj$žgo0ºlt<œryBÁyRÄ…\ȉj̐“mі™z՟¡„Ùš©Ý°±“㹺œæŸêÊËÉíÒÒëðÙÙûñÝÝûóßßÿóßßÿòÞÞÿðÛÛÿîÕÕÿìÏÏñèÇȧåÀÀ‚âž¹zÞ²²uÛª«mØ¢€fԜž^ƘW͑”PʍIȇ‹Bł‡<Ä~ƒ7Â{€2Áy0¿v}.¿v|,¿v|,Àw~.Áy/Â|‚2Ä5ш9ȈŒ<ʌA͑”Fϖ™HӚI՞ PÖ¢€O×€ŠQ×€Š[×€Š€Ö£¥€ÕŸ¡‡Ò›žuϕ˜Yː”GȉCł‡8Â|‚8¿v|3œqx/ºlt)¹iq$·fn·dm¶ck¶ck·cl·fn!¹hp%ºls+Œov2Ÿt{<Â{€Hā†UȈŒd̏“uјš„Õ¡£˜Û¬®§á·ž¹æÃÄÒêÐÐúñÜÜÿôææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËôä¿ÀÐß³Ž¶Ú©ª€Ôž ”Ж™ËŽ‘rLjŒaÄRÁyGŸtz=Œov4ºlt,¹iq(žgp$·fn$žgo#žhp&¹jr&»nu)œqx,¿v|6Â{6ł‡9ȈŒEˏ“FŘWқžjÕ ¢†×€ŠœÙš©²Ûª«ŠÛª«fÙš©VØŠšWÕ¢€SԞ QјšK͒•Fˎ‘CȉŽ=Ƅˆ9Ä5Â{1Áy.¿v|+Ÿt{*Ÿtz*Ÿt{*¿v|,Àw~/Â{2Ä7ƃ‡=ȈBˎ’Jϔ—Qј›YÖ ¢`ÚŠ§hÜ­®pß³Žu㌌}æÃÎéÊË¿íÑÑúîØØÿðÜÜÿóÞÞÿóßßÿóÞÞÿðÜÜýï××øìÑÑìèÈȶ俿àµ¶–Û¬­×€Š‹ÓœžƒÎ”—vʌodž‹eÃ~ƒ\Àw~IœqxG¹jr?·em5µ_i)³Ze ±Wa¯S]®PZ®NY¬KV¬IU ªGS ªFRªDPªDO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BNªDOªDOªDQªFR¬IU ¬JV­LX®OZ¯R]±V`²Zd µ_i$·cl*¹iq.Œov?Ÿu|KÂ|‚Wш_ɋe͒•yҙœ~Ö¢€ƒÚª¬ŠÞ²³šã»Œ«çÄıêËÌÕíÒÒëï××üïÙÙýðÙÙÿïØØÿíÓÓÿëÍÎÞèÇǚåÀÀzâž¹wÞ±²pÛª«k×£¥dԝŸ]ƘU͑”OʍHȇ‹Bł‡<Ä8Â{4Áy1Àw~/¿v}.Àw~.Áy/Â{€1Ã|‚5ā†7DžŠ<ɊŽAˎ’E͒•KјšP՞ RÖ£¥SÙ§šUÚª¬^Ü®¯oÝ®¯ŽÜ®¯ËÚª¬ÀÚ§š‡Ö¢€ԜŸlϖ™Zˏ“HȉEł‡>Â{7¿v|4œqx/»nu-¹iq&žgp"·fn!·fn"·fn!žgp$¹iq(ºlt.œqx5¿v|>Â{€JŁ†VȈŒȅ“uјš‡Õ¡£˜Û«¬©á·ž¹æÃÄÏêÐÐúñÜÜÿôææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËôä¿ÀÏß³Ž¶Ú©ª¥Ôž “Ж™ƒËŽ‘sȈŒbÄ„UÂ{€HŸu|>œqx6»nu0ºkr,¹iq'ºiq&¹iq)ºls)»nu+Ÿry1¿v|2Â{<ā†CȈŒAˎ‘GΔ—SӚkÖ¢€rÚš©„Ü­®¡Ý±²ÌÞ³ŽÖÞ³ŽÞ²³kݯ°^Úª¬\Ø¥§X՟¡UәœOŘJ̎’EɋADžŠ<Ä…7Â|‚3Áy/¿v},Ÿt{+Ÿt{+Ÿt{+¿v|,Áy/Â{2Ä8ƃ‡=ȈBˎ’JΓ•Pј›WÖ ¢^ÙŠ§eÜ­®kߎµs亻wæÃÂéÉʯìÐÐîîÔÔÿïØØÿðÙÙþïØØøîÕÕúìÐÐçéÉÊÇå°⹺ Ý¯°–ÙŠ§ˆÕŸ¡€Ñ–™y̎’qȉdÄ…aÁyUœryHºlt:žgo0µaj'³\f$²Xc±T_¯Q\®NY­LW¬IU«HS «FRªDQ©DO©COšBNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQªFR«GS ¬IU ¬LW­NY®Q[°T^±Wa²\f!µ`j*·fn2ºkr7œqxEÀw~PÄ~ƒWDžŠaʍlϕ˜sӜž|Ø€ŠŒÛ¬­‘ßµ¶˜äŒœšçÄÄÁéÊËßëÎÏíìÑÑüìÑÑÿëÎÏùêÊËÍçÆƋ俿râ·žpÞ°±lÛ©«f×£¥`ԝŸZŘT͑”MʌGȇ‹Ał‡<Ä8Â|‚4Áy1Àw~/Àw~/Àw~/Áy0Â{3Ã~ƒ5Ł†:ȇ‹?ʋD̐“Iϕ˜PԚQÖ¡£VÙŠ§_Û¬­`Ý°±gßµ¶zâž¹™â¹ºÕá·žñÞµ¶Äݯ°›Ú©«‰Ö£¥yԛžeϕ˜Xˎ‘JȈŒBā†=Â{;¿v|7Ÿry3Œnu/ºls)¹iq'¹iq(¹iq'¹iq(ºlt,Œov1œry8Àw~AÂ|‚KŁ†YȈg͐“wјš‡Õ¡£˜Û¬®ªá·žºæÃÄÑêÐÐûñÜÜÿôææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËôä¿ÀÎß³Ž·Ú©ªŠÕž ”Ж™…ËŽ’sȈŒfŁ†WÂ{K¿v}Bœry:Œov3»nu1ºlt.ºlt,»nu+Œov2œry4¿v}7Â{=ā†Dȇ‹FʍJ͒•TҙœgÖ¡£lÛš©ŠÝ°±‘൶žãº»Þ䌜÷㟟é㻌 â¹ºqßµ¶fÜ®¯aÚ§šaÖ¡£\ӜžUŘN͐“JʋCLJ‹=Ł†8Ã|‚5Áy0Àw~.Ÿu|,Ÿt{+Ÿt{+¿v|,Áy/Â{2Ä7ƃ‡<ȈBˎ’HΓ•Nј›U՟¡[Ù¥ŠbÛ«¬hÞ³³l㺻ræÂÂyçÇÇ ëÌÍÜëÐÑóìÑÑøëÐÑöëÌÍòçÈÈÙå¯㺻ŠÝ°±Û©ª‹Ö¡£€Ñ˜šy͑”oɋjшWÂ|‚NŸu|IŒov;¹iq5·cl,µ_i&²Zd±V`¯R]®OZ®NY¬KV ¬IU ªGSªFRªDPªDO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BN©COªDOªDQªFR«HS ¬JV ­LW®OZ®R]±U`²YcŽ]g%¶ck+žgp0»nu9ŸsyDÁyRÇWȈŒ`̎’pі™y՝Ÿ‚Ø¥§ŽÛ®¯›ßµ¶€ã»Œ£åŸçÅÅêçÇÇëçÇÇäçÅÅÂæ㌜kභiÝ°±fÚšªaס£]ӜžVŘQ͐“KʌFȇ‹@ł‡;Ä7Â|‚3Áy1Àw~0Àw~/Àw~/Áy1Â|‚4Ä8ш;ȇ‹@ʌG͐“LЖ™QӜžYÖ¡£^Ú§©cݯ°f൶n㺻ƒä¿¿¢åÂÂÓåÂÂøåÀÀø䌜Éâ·ž€Ý°±‹Ú©«~Ö¡£yҙœl͒•QʍPȇ‹Jā†DÂ|‚;Àw~:Ÿsy2Œpw.»nu/ºlt-ºlt*»nu0Œov1œqx5Ÿt{=ÁyEÃ~ƒOł‡\ɉj͑”yјš‰Õ¡£šÛ¬®«á·ž»æÃÄÑêÐÐûñÜÜÿôææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËôä¿ÀÏߎµ¹Ú©ª§Õž –Ñ–™‡ÌŽ’wȉŽhŁ†ZÃ|‚OÁyFŸt{=œry8œqx5Œpw1œqx2œry2Ÿt{8Àw~7Â|‚Aā†FȆŠKʌL͑”VҙœfÖ¡£uÚ§š†Ý¯°“â·žŸäŸŸ­çÃÃðçÆÆüèÆÆÿçÆÆéçÂ¥匜á·žnÝ°±iÚ©«e×¢€`ԜžZЖ™Q͐“LʋEȇ‹?Ł†:Ã~ƒ5Áz€1Àw~/¿v|,Ÿt{+Ÿt{+¿v|,Áy/Â{1Ä6ł‡;ȈAˎ‘FΒ•LИšR՞ YÙ¥Š^Û«­aÞ°±há·žj土oæçÇÇÊçÇÇäçÇÇëçÄÄß埿±â¹º¡Ý±²œÚ©«”Ö£¥†Òš{Β•rʌiDžŠfÃ~ƒYÀw~JœqxFºkr>·fn5µ`j&²\f"±Wa°T^¯Q\­NY¬LW¬IU «GS ªFRªDQ©DO©BNšBNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFR«GS ¬IU ¬KV®NY®PZ¯S]°V`²Zeµ_i#·dm-¹iq.Œov:Ÿt{BÂ{Uł‡\ȉŽȃ”sјšy՞ …Ø¥§ŒÛ¬®’ݲ³ âž¹€âº»Î䜟Ú䜟±âº»táž¹cݲ³dÜ­®_ÚŠ§^Ö¡£XӚRϔ—M͐“HʋDȇ‹=Ł†9Ä~ƒ6Â{2Áy0Àw~/Àw~/Áy0Áy0Â|‚4Ä9ƃ‡=ȈŒCʍH͒•OЗ™VӝŸ\×£¥aÛ©«hÞ°±nâž¹sã¿¿‡çÄħèÈÈãéÊËÿéÊËÿèÉÊ÷çÅÅáä¿¿°âž¹˜Ý¯°”Ú§š|Ö¡£oҘ›j͒•WʌQȇ‹KŁ†BÂ|‚AÁy>¿v|6Ÿsy5œqx3œqx2œqx3œry7Ÿtz;Àw~AÂ{€HÄSDŽ‰^ʊŽn͑”{јšŒÖ¢€›Û¬®­ážžœæÄÄÓêÐÐûñÜÜÿôææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËôåÀÁÑߎµ¹Úª«©ÕŸ¡˜Ñ˜š‰Í“yɋkƃ‡^ÄTÂ{€IÀw~D¿v|>Ÿt{;Ÿt{;Ÿu|;Àw~9Áy@Ã|‚CŁ†EȆŠKʋV͑”\Иšj՞ {ÙŠ§~Ü­®àµ¶•ä¿¿¢çÅÅŸêÊËïìÎÎýìÐÐÿìÏÏÿêËÌíçÆƧäÀÀƒâž¹uÞ±²oÛª¬i×£¥cԝŸ\Ж™T͑”NʌGȇ‹@Ł†;Ã~ƒ5Áz€1Àw~/¿v|,Ÿt{+Ÿt{+¿v|,Àw~.Â{€1Ä~ƒ5ł‡:ȇ‹=ʍD͒•HЖ™N՝ŸT×£¥YÚ©ª]ܯ°_೎c⹺c⻌‚䜟¿ãŒœØ⹺ŒàŽµŠÝ°±˜Ûª«Ö£¥‹ÓœŸ‚Δ—sˎ‘iȈŒcÀ…YÁyMœryBºlt@žgo4µaj)³\f'²Yc±U`®R]®OZ­LW¬JV«HS ªFRªDQªDOªDO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšBN©BN©COªDOªDQ«FR«HS ¬IU ­LW®NY¯Q\°T^±Wa²\f"µ_i#·fn2ºkr1Œpw?¿v}LÂ}ƒSшZɋk̑”nјš{Ԟ ƒ×€Š†Ú©ª’Û­¯ Ü°±˜Þ²³˜Þ²³kÜ°±XÛ¬®ZÚ©ªXÖ€ŠV՞ QИšMΓ•H̎’Dɋ@DžŠ<Ł†8Ã~ƒ4Â{€0Áy/Àw~.Àw~.Àw~/Áy1Â|‚4Ä„9ƃ‡=ȈCˎ‘J͒•OИšXԝŸ^Ø€¥fÛ«¬lÞ±²oâž¹yåÀÀ‹èÆƪêÍÎèíÑÑÿíÕÕÿíÕÕÿíÑÑûêÌÍëèÆÆÀä¿¿­àµ¶œÜ­®ŠÙŠ§…ԝ rј›k͑”XʌYȈŒKł‡GÄFÂ{>Áy:Àw~7¿v|8¿v|:¿v|;Àw~@Â{€FÃ~ƒPŁ†WȆŠdʌpΒ•ҙœŽÖ£¥ŸÛ¬®¯ážžŸæÄÄÔêÐÐûñÜÜÿôææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿîÙÙÿêËËõåÀÁÒàŽµºÛª««Õ ¢œÑ˜šŒÍ‘”}ʌoȆŠcŁ†YÃ~ƒPÂ{HÁyFÁyCÁyAÂ{€CÂ|‚DÄDł‡KȆŠOʌV͑”Yϖ˜hԜž|Ø€¥†Û¬­‘ߎµ–㜜ªçÄĵêÌÍÔíÒÒùî××ÿðØØÿïØØÿîÕÕÿìÏÏõèÈȳæÀÀ…⹺vÞ±²rÛª«k×£¥eԝŸ]ƘU͑”NʌHȇ‹AŁ†<Ã~ƒ6Áz€1Àw~.Ÿu|+Ÿt{+Ÿt{*Ÿu|+Àw~.Áz€/Ã~ƒ3Ł†7ȇ‹;ʋ@͑”EŘKҚPÕ ¢RØ¥§UÛ«¬Zܯ°Yݱ²XÞ²³wݲ³•Ü°±Û«­›ØŠš’Õ¡£„Ó›ž~Δ—qˎ‘lȈŒaÇ\Áz€RŸtzH»nu?¹iq8¶cl0µ^g'²Zd °V`¯S]®PZ®NY¬KV¬IU «GS ªFRªDQ©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFRªGS¬IU ¬KV ­LX®OZ®R]±U`²Yc³\f"µaj#·fn/ºls3œqxAÀw~KÃ|‚Qƅ‰YɊŽf̏“kЖ™zӜŸ}Õ ¢†Ö£¥„ØŠšnÙ§©Uا©P׊šPÖ£¥O֟¡NӛžMі™J͑”Dʍ@ȉŽ<Ƅˆ8Ä„4Â|‚3Áz€/Àw~.Àw~-Àw~-Àw~/Áy0Â|‚4Ä„8ƃ‡=ȈCˎ’J͒•Qј›X՝Ÿ_Ø¥ŠfÛ«¬oÞ²²t⹺|åèÇÈŒìÐÐîîÖÖÿðÙÙÿðÛÛÿðÛÛÿðØØþîÕÕòêÍÎÎçÅů㜜ªß³Ž›Ü­®‹Ø¥ŠˆÕŸyј›q͑”_ˎ’YɉLDŽ‰JŁ†HÄAÂ|‚@Â{CÂ{€@Â{€EÂ|‚EÃ~ƒMŁ†TDŽ‰^ɉh̍‘uϔ—ƒÓ›’×£¥¢Ü®¯±á¹ºÀæÅÅÖëÐÑûñÜÜÿõææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿïÙÙÿêÌÌöåÀÁÕàŽµŸÚª¬®Ö¡£žÒ™œÎ“–‚ËŽ’uɉhDŽ‰^Ł†VÄ„OÄ~ƒKÃ~ƒIÄ~ƒIÄ„GŁ†JDŽ‰PɉSˎ’T͑”aЗ™qԜžv×¢€ŠÚª«Þ²²Ÿäº»­æÃùéËÌÆíÓÓððÚÚÿñÞÞÿóßßÿòÞÞÿñÜÜÿî××ÿìÑÑ÷éÉʲåŠ➹}Þ²²uÛ«¬o×£¥fԝŸ_ƘV͑”OʌGȇ‹AŁ†:Ã~ƒ5Áz€0Àw~-Ÿt{+Ÿtz*Ÿtz)Ÿt{)¿v}+Áy.Â|‚2Ä…5DžŠ7ɊŽ<ˏ“?Γ—DҘšIӜŸKÕ ¢MÖ€ŠQק©Sا©Nا©Y׊šjÕ¢€}Ԟ Òšœx͓–qʎ‘jȈŒdÇYÂ{€RŸt{LŒovAºiq5¶dm,µ_i'²[e±Wa°T^¯Q\­NY­LW¬IU «HS «FRªDQªDO©CO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBN©BN©CO©DOªDQªFR«GS ¬IU ¬KV®NY®OZ¯R]±V`³YcŽ]g¶ck$žgo2ºlt;Ÿry=Àw~DÃ}ƒQŅ‰Wȉdˍ‘q͓–qЖ™pҚœ\қJӝ Hӝ IқGҚœFϖ™F͒•Dˎ‘?ɋ<LjŒ7ł‡5Ã~ƒ2Â{€/Áy.Àw~+¿v|+¿v|+Àw~-Áy/Â|‚3Ä8ƃ‡=ȈCˎ’J͒•Qј›Yԝ aØ¥Šiܬ­oß²³w㹺å–èÈÉÅìÑÑúî××ÿñÜÜÿóßßÿôââÿôââÿòÞÞýðÚÚóíÔÔæêËÌŒæÃ÷亻¢ß²³žÛª«˜Ø¥ŠƒÔ ~ј›vΔ—l͐“^ʌSȈPDžŠNł‡GŁ†FÄ…IÄ…IŁ†Oł‡TDŽ‰XȇŒcʋŽm͐“z؇Ԝž–Ø¥Š€Ü®¯Žâ¹ºÂæÅÅÙëÐÑûñÜÜÿõææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿóääÿïÙÙÿêÌÌöåÂÂÔභ¿Û¬­²×¢€£Ô›“Ï”—†Í‘”yˌnɈŒeȆŠ^ƄˆUƃ‡Uƃ‡PƄˆMȆŠRȈTʌY̐“ZΓ–lЗšv՜ž{Ø¢€ŠÙšª’Þ±±¡â·ž­åÁÁµèÉÊ·íÒÒÜðÙÙôóßßýõääÿõååÿõååÿôââÿñÞÞÿðØØÿìÑÑõèÈÉ»åÁÁâž¹Þ²²xÛª«pØ€¥gԜž^ƘV͑”OʌGȇ‹@Ł†:Ã|‚4Áy0¿v},Ÿt{*Ÿsy(Ÿsy'Ÿtz(Ÿu|*Àw~+Â{€-Ä~ƒ1ш5ȈŒ7ʋ:ˏ“>Γ–CЗšCҚœGқHӝ FҜŸIқKҘ›]ϔ˜j̐”lɌfdž‹dā‡\Â{€SŸu|GŒov@¹jr=·fn1µ`j,²\f±Wa°T^¯Q\®OZ­LW¬JV¬IU ªGS ªFRªDPªDO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDOªDQªFR «HS ¬IU ¬LW­NY®PZ¯S]°V`²ZdŽ]g¶ck$žgp0ºlt<œqxB¿v}NÂ|‚Nā‡ZƆ‹cȊaʍ‘Iˏ’A͑•AΒ•CΒ•@͑•@ˏ’?ʌ<ɉŽ9dž‹7ш3Ä1Â|‚/Áy,Àw~+Ÿu|*Ÿt{)Ÿt{*¿v|+Áy.Â{1Ä7ƃ‡<ȈBˎ’J͒•Rј›Yԝ aØ¥Šiܬ­qß²³y㹺…åÂœèÉÊÁìÐÐúð××ÿñÝÝÿôââÿõååÿöææÿöææÿõääþòÞÞõðØØïìÑÑÑéÉÊžæÁÁ­ã¹º®ß²³¢Ü¬­–Ù¥Š‹Ö ¢~ӛЖ™sΒ•c̐“hʌYɊŽYȈOȇ‹RȆŠPȆŠTȇ‹\ɉ`ʋŽg͏’sϓ–Ҙ›‹Õž šÙŠ§šÝ¯°·âº»ÅçÅÅÚëÐÑûñÜÜÿõææÿøííÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿôääÿïÙÙÿëÌÍöåÂÂÙᶷÂÜ­®µØ€¥ŠÕž ˜Ñ—š‹Ï“–͎‘tˌlʉeɉ_ɈŒ]ɊŽ\ʊŽ\ʌ]̐“[͑”oϕ˜kҚœw՟¡Ø€¥‡Ú©ª’Þ±±£â·ž°ä¿¿°èÇÈÁìÐÐÓðØØòòßßööååÿ÷èèÿ÷êêÿ÷ééÿöççÿôããÿòÝÝÿð××ÿìÏÏöèÇȺåÁÁã¹º€Þ²²wÛª«oØ¢€gԜž^ƘV͑”NʌFȇ‹>Ł†9Â|‚3Áy.¿v|+Ÿtz'œry&Ÿry&œry%Ÿtz'¿v|)Áy+Â|‚.À…1ш3ȈŒ7ɋ8ʍ‘:ˏ’>͑•@Β•@͑•@͐”>ˏ’@ʌMȈŒXŅ‰bÄ^ÁyTŸt{KŒov<¹jr6·fn6µaj%³\f²Yc±U`®R]®OZ®NY¬KV¬IU «GS ªFRªDQ©DO©CO©BNšBN§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšBNšBN©BNªDOªDPªFRªFR «HS ¬JV ­LW­NY®Q[°T^°V`²Zdµ^g"¶ck)žgo4ºls9Œov>Ÿt{EÁz€SÂ~„Nā†<ń‰9Ɔ‹7LJŒ9ȈŒ9ȈŒ9LJŒ8ƅ‰5Ņ‰4Ā†0Ä.Â|,Áy)¿v})Ÿt{'Ÿtz'Ÿsy&Ÿtz'Ÿt{)Àw~+Â{€/Ä~ƒ4ł‡;ȈŒ@ˎ‘I͒•Pј›Xԝ aØ¥Šiܬ­rß²³zã»»…åÁÁèÈÉÅìÐÐúïÖÖÿñÛÛÿôááÿõååÿöççÿöèèÿöèèÿöææýôââ÷ñÝÝïð××èìÐÐÅèÇȵåÁÁ®ã¹º©ß²³€Ü­®–Úšª–×¢€ÕŸzӚ~ИšpΓ•i͑”k̐“[ˎ’_ʌYʌ`ˍ‘a̎’g͏’qϓ–xЖ™ƒÓšœÖŸ¡Ù§©¬Þ°±ºãº»ÇçÆÆÝëÑÒûñÜÜÿõææÿùîîÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿöììÿôääÿïÙÙÿëÌÍöæÂÂÚâ·žÆÝ­®žÙ¥§©ÖŸ¡œÓ™›Ð•˜…Ï“–z͐“s͏’o̎’d̎’n͐“i͑”qΓ•iŘpљœtԜž~ס£†ÚŠšÛ«¬™ß²³šãž¹²äÀÀ³èÆÇŸìÏÏÊï××íñÝÝñôããûöèèý÷ëëÿ÷ëëÿ÷ëëÿ÷ééÿõææÿôââÿðÛÛÿïÖÖÿìÏÏöèÆÇ»åÀÀ‘ãž¹€Þ±±xÛª«oØ¢€gԜž^ƘU͑”MʋELJ‹=ā†7Â|‚1Àw~,Ÿt{*œry&œqx$Œpw#œqx#Ÿry#Ÿtz&¿v|'Áy*Â|‚,À…/ā‡1Ņ‰5ƅ‰4LJŒ7LjŒ8LJŒ:LJŒ:Ņ‰5ăˆ6Ä;Â|J¿w~IœryL»nu;ºiq:·fn1µ`j*³\f²Yc±U`¯R]®OZ®NY¬KV¬IU «HS «FR ªDQªDO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BN©CO©DOªDQªFRªGS ¬IU ¬JV­LW®NY¯Q\°T^°V`²ZdŽ]g$µaj%·fn2ºiq7»nuBœqx<Ÿt{2Ày.Á{.Â|‚.Â~„1Ã~„/Ã~„0Â}ƒ.Â}ƒ,Á{,Áz€+¿v|)Ÿt{'œry%œqx#œqx$œqx$œqx%Ÿsy&¿v|)Áy-Ã|‚2Ł†8ȇ‹>ʍF͒•Nј›Wԝ `Ø¥Šiܬ­rß²³zã»»ˆåÁÁŸèÈÉÉìÏÏûïÕÕÿðÚÚÿóßßÿôââÿöååÿöææÿöèèÿöèèÿöææþõãã÷óààððÚÚêîÕÕãìÎÎÁèÇÈ°åÁÁ±ãŒŒ§à¶·¡Þ°±›Û«¬šÚ§š’ס£ƒÕŸ¡†Ó›xҙœuϖ™qΔ—nΔ—nΓ•iΓ–qϔ—pϖ˜wі™Ó™›‰ÔŸ–Ø¡¢¢Ú©ª¯ß²³ŒãŒŒÉçÆÆÝíÒÒûñÝÝÿõææÿùîîÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿ÷ííÿôääÿïÚÚÿëÍÎ÷æÃÃÝãž¹ÇÞ¯°ºÚš©®×¡¢¡ÔŸ—ÓšœÑ—š†Ð–™}ϔ—~ϔ—xϕ˜}ƘyИ›wӛyԝŸŠÕ¡£Ø¥ŠÚšªœÝ­®›ß²³­ã»»±åÀÀžèÆǺìÎÎÉîÕÕæñÛÛîôââ÷öææøöééþ÷ëëÿ÷ëëÿ÷ëëÿ÷ééÿöææÿôããÿòßßÿðÙÙÿîÔÔÿëÎÎ÷èÆÇœåÀÀã¹º€Þ±±wÛª«o×¢€fԜž\ŘS͐“KʋBDžŠ;Ä„4Â{€/¿v}*Ÿsy&œqx#Œov#»nu!»nu!Œov"Œpw"œry$Ÿtz&¿v|(Áz€)Á|‚)Â}ƒ,Â~„-Â~„-Â~„0Â~„.Á|‚/Áz€0¿w}.œry4Œov=ºltA¹hp6·dm3µ_i,³\f$²Yc±U`¯R]®OZ®NY¬LW¬IU «HS ªFRªFRªDPªDO©BNšBNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©COªDOªDQªFR«GS ¬IU ¬JV ­LW®NY®Q[¯S]±V`²Yc³\f!µ_i#·cl,žgo0¹iq%ºlt%Œov&œqx)œsz*Ÿu|*Ÿu|)Ÿu|(Ÿu|&Ÿsy&Ÿry%œqx#Œov#Œnu!»nu!»nu!»nu!Œov"œqx#Ÿtz%Àw~*Â|‚0ā†6ȇ‹;ʌD͒•LИšTԝ _Ø¥Šgܬ­qß²³yã»»„åÁÁŸèÈÉÊìÏÏûïÕÕÿðÙÙÿòÝÝÿóßßÿôââÿõããÿõääÿöååÿöååÿõääüôããöôààòòÝÝíðØØçîÔÔßìÎÎÈèÉʵæÃð㟟«ãž¹§ßŽµ¡Ý¯°¢Û¬­’Û§š•×€ŠŒÖ¡£‡Õž }ӛ‚Ò›{ҙœÑ˜›ҙ›ҙ›‰Ó›œ‘ԝŸ”× ¡¡Ù¥ŠªÜ«¬·à³ŽÃ䌌ÍèÆÇàíÒÒûòÝÝÿõææÿùîîÿûõõÿýùùÿýüüÿþýýÿþýýÿýûûÿüøøÿúóóÿøííÿôääÿïÚÚÿìÐÐøçÃÃà㺺Ëß°±ÃÜ©ª¹Ù¥Š¯×¡¢¡ÔŸ–Óœž—Ó›”ÓšœÓ›„ÔœžÕœžŽÖ ¢‰×¢€ŠØŠ§šÚ©«•Ü­®Þ²² á¶·¬ãŒŒ³åµèÈÉ»ìÎÎÏîÕÕåðÚÚîóÞÞðôããùöææüöèèÿ÷èèÿ÷èèÿöèèÿöååÿõääÿôââÿóßßÿñÜÜÿðØØÿîÓÓÿëÍÍ÷èÆÇŸåÀÀ“㹺Þ±±vÛª«m×¢€cԜžZŘQ͐“Hɋ@Ƅˆ9Ä~ƒ3Áy-Ÿt{(œqx#Œnu!ºltºkrºkrºkrºlt »nu Œov#Œpw$œqx%œry&Ÿu|&Ÿu|(Ÿu|'œsz(Ÿry'Œpw&»nu%ºls%¹iq'·fn)¶ck,µ_i%²[e±Wa±T_¯R]®OZ®NY¬LW¬IU «HS ªFR ªFRªDP©DO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBN©BNªDOªDOªDQ«FR«GS ¬IU ¬JV ­LW­NY®PZ¯R]±U`±Wa³ZeŽ]g$µ`j¶cl ·fn žhp ºiq"¹jr#ºkr"ºls"ºlt!ºls!ºkr!¹jr¹iq¹iq¹iq¹iq¹iqºls»nu!œqx"Ÿu|'Áy-Ä2DžŠ8ʋ@͑”HЗ™Q՝Ÿ[Ø¥Šdܬ­nß²³vã»»†æÁÁèÈÉÆìÏÏûïÔÔÿðØØÿñÜÜÿòÝÝÿóÞÞÿóßßÿóßßýóßßøóßßÿóßßÿôßßýôßßùóßßñòÝÝîñÛÛèï××ãîÔÔâìÏÏÕêÊËÁèÆDzæ¬㟟ªâ¹ºŠàµ¶ŠÞ°±¡Ý­®˜Ûª¬œÚ§šŽØ¥Š•×¢€Œ×¡£ŠÖ ¢ÖŸ¡”ÖŸ¡˜Ö¡¢™×¢€¡Ù€¥¬Üš©ŽÞ®¯ÂáµµÈ䟟ÔèÈÉæíÓÓüòÝÝÿõææÿùîîÿûõõÿýúúÿýüüÿþýýÿþýýÿýûûÿüøøÿûóóÿøííÿôääÿðÚÚÿìÐÐøèÅÆå䌌ÔᎎËÞ­®¿Üš©ŽÙ€¥±Ø¢€£Ø¡¢§×¡¢œ×¢£˜Ø¢€”Ø€¥—ÙŠ§˜ÚšªšÛ«¬žÝ®¯€Þ²²¢á¶·ªãŒŒ«æÀÀ±èÄIJèÊË»ìÏÏÕïÕÕéðÙÙìóÞÞðôááôôääõõååûõååÿõääÿôããÿôââÿôááþôßßüóßßÿóÞÞÿñÜÜÿñÚÚÿïÖÖÿîÒÒÿëÍÍ÷èÆÇÀåÀÀâž¹|Þ±±sÛª«j×¢€`ԛWŘM̐“EȉŽ=ш6Â|‚/Àw~)œry%Œnu!ºls¹iqžhpžgožgožgp¹hp¹iq¹iqºkr ºkr"ºkr"ºkr!ºkr"ºiq#¹hp!·fn!¶dm µajŽ_i³\f!³Yc!°V`°T^¯Q\®OZ®NY¬LW¬IU «HS ªGS ªFRªDQ©DO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBNšBN©BNªDOªDOªDQ«FR«GS ¬IU ¬JV ­LW ®NY®OZ¯Q\°T^±V`²Xc²Ze³\fµ_iµ`jµaj¶ck·cl·dm·dm·dm·dm·cl·cl·cl·dm·fnžgp¹iq»nu Ÿry$Àw~(Â|‚.ш6ɊŽ<̑”EЖ™NԝŸWØ€¥aÛ«¬lß²³tã»»ƒæÁÁžèÈÉÈìÏÏûïÕÕÿðØØÿñÛÛÿñÜÜÿñÜÜÿñÛÛÿñÙÙýñØØìñØØåñØØîñÙÙûñÚÚýñÛÛùñÜÜññÜÜíñÛÛèñÙÙéï××æïÔÔâíÒÒÞëÎÎÓèÊËÁèÅŶæÃï俿¬ãº»«â·žŠÞŽµ¥Þ°±£Ý®¯£Û«¬žÚª«œÙšª›ÙŠš§ÙŠ§ Ú§š§Ûš©¶Üš©ŽÞ­®œà±²Ëá¹¹ÒåÁÁÛêÉÊéíÕÕüòÞÞÿöèèÿùïïÿûõõÿýúúÿýüüÿþýýÿþýýÿýûûÿýøøÿûôôÿøííÿõååÿñÛÛÿíÒÒùéÇÈé域Ýá··Ñß°±ÊÞ¬­Áܪ«»Ûš©³Û§š«Úš©°Ûª«®Ûª«ŠÜ­®ŠÞ®¯«Þ²²¬àŽµ¬âž¹¯ãŒŒ­åÀÀ°èÃïèÈÉžìÌÍËíÒÒÜïÕÕçðØØêñÝÝïóßßñôààõôááøôààüóßßþòÝÝÿòÜÜÿñÚÚùñÙÙëñÙÙèñÙÙúñÚÚÿñÚÚÿñÚÚÿñÙÙÿïÕÕÿîÒÒÿëÍÍöèÆǺåÀÀâž¹zÞ°±qÛ©«gס£\ӛRϔ—Kˎ’CȈŒ9Ā†2Áz€-Ÿt{&Œov!ºkržhp·fn¶cl¶ckµajµaj¶ck¶ck¶cl·cl·cl·cl¶cl¶ckµajµ_iŽ]g²\f³Yc±Wa±T_¯R]®Q[®NY­LX¬KV ¬IU «HS ªGS ªFRªDQªDO©CO©BNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©BNªDOªDOªDQªFRªGS«HS ¬IU ¬KV ­LX®NY®PZ®R]°T^±U`±Wa²Yc²Zd³Ze²\f³\f³\f³\f³\fŽ]gŽ]gŽ]gµ_iµ_i¶ck·fn¹iq»nu!Ÿsy&Áy*Ā…1ȈŒ8ˏ“Aϕ˜IӜžS×£¥^Û«¬gÞ²²p乺~æ™èÈÉÉìÏÏûïÔÔÿðØØÿñÛÛÿñÛÛÿñÚÚÿðØØÿðÖÖýîÓÓìîÑÑáîÐÐâîÐÐâîÐÐâîÒÒîïÔÔôïÖÖôð××îñØØêñØØçðØØæïÖÖãïÕÕáîÒÒáíÑÑÝëÎÎÖéÊËÇèÆÇžçÄįåÀÀªã¿¿©ãº»©â·ž«ßµ¶šß²³¯ß±²¯Þ°±«Þ®¯°Ý®¯·Þ®¯Œß¯°Ãà±²ËᶶÒ䜜ÞèÃÄæëÍÍëïÖÖýóßßÿ÷èèÿùððÿûööÿýúúÿýüüÿþýýÿþýýÿýüüÿýùùÿûôôÿøîîÿõææÿñÝÝÿîÔÔúêËËìçÁÂåä»»ÜᶶØà³³Ëà°±Ê߯°Åß°±»à±²¹à²³Žà³ŽŽá¶·±âž¹³äº»³ä¿¿³æÃòèÅŶèÈÉÀëÌÍÎìÏÏÝîÔÔåïÖÖåðØØåñÜÜëòÝÝðóÞÞóóÞÞôòÜÜùñÛÛûñÙÙÿðÖÖüîÓÓðîÒÒçîÑÑåîÒÒãîÓÓæðÕÕúð××ÿðÙÙÿñÙÙÿðÙÙÿïÕÕÿîÒÒÿëÍÍ÷èÆÇ»åÀÀ‹âž¹uÞ°±mÚ©«cÖ¡£XҙœPΒ•Gʋ=Ƅˆ6Ã|‚.¿v}'œqx"ºlsžgo·clµ`jµ^gŽ]g³\f³\f³\f³\f³\f³\f³\f²\f²[e²Ze²Yc±Wa±V`°T^¯R]¯Q\®OZ®NY­LW¬KV ¬IU «HS ªFR ªFRªDQªDOªDO©BNšBNšBN§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©BNªDOªDOªDQªFRªFR«HS ¬IU ¬JV ¬LW ­LX­NY®OZ¯Q\¯R]°T^°T^±U`±V`°V`±Wa±Wa±Wa±Wa²Xc³Yc³Ze³\fµ`j¶dm¹iqŒnu!Ÿt{%Â}ƒ-ш2ɋ:͒•EҚNÖ¢€XÚ©«aÞ±²k㹺wæÂ’èÉÊÆìÏÏûïÕÕÿðØØÿñÜÜÿñÜÜÿñÚÚÿï××ÿïÔÔþîÐÐíëÍÍàëÊÊÞêÇÇáêÇÇâëÈÈßëÊÊÜìÍÍÝíÏÏéîÒÒîïÓÓíðÖÖëðÖÖèð××åð××ãïÕÕãïÔÔãîÓÓßíÒÒÞìÎÎÝëËÌÑèÈÉÂèÆÆžçÃñæÀÀ­ã¿¿¯ãŒŒŽã¹º³ã·ž¶á¶·ŒáµµÃᶶÈᶶÍâžžÕä»»ßçÁÂåêÉÉéíÐÐîðØØýôââÿ÷ëëÿúññÿüööÿýúúÿýüüÿþýýÿþýýÿýüüÿýùùÿûôôÿùïïÿ÷èèÿóßßÿïÖÖûíÏÏïéÇÇèçÀÁä䌜Üã¹¹×á··ÒážžÍâžžÅ㺺Â㌌¿äœœ»å¿¿žæ·èÅźèÇÈÀéÊËÌëÎÎ×ìÐÐâíÓÓâïÕÕåï××èñÙÙéñÛÛìñÜÜîñÛÛîñÚÚôñÙÙóðÖÖ÷ïÔÔöíÐÐïíÎÎäëËËâëÊÊãëÊÊáëÊÊàëÌÌàíÏÏåîÒÒûðÖÖÿðØØÿðÙÙÿñÙÙÿïÖÖÿíÓÓÿëÎÎöèÆDz忿â·žpݯ°hÚš©]՟¡TјšI̐“Bȉ9ā‡2Áy)œry#ºltžgo¶ckµ^g²\f³Yc²Xc±Wa±Wa±Wa°V`°V`±V`±V`±U`°T^°T^¯R]¯Q\®PZ®OZ®NY­LW ¬KV ¬IU ¬IU «GS «FRªFRªDQªDOªDO©BNšBNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBN©BN©BNªDOªDOªDQªFR«FRªGS «HS ¬IU ¬JV ¬KV ­LW ®NY­NY ®OZ®OZ®Q[¯Q\¯Q\®R]¯R]¯R]°T^°T^±V`²Xc³Zeµ_i·clºiqŒov"¿v}(Ä/ȈŒ6ˏ“?јšG՟¡SÙš©]Ý°±gâž¹qæÂ…èÈÉ·ìÐÐúïÕÕÿðÚÚÿñÜÜÿòÝÝÿñÛÛÿð××ÿïÓÓþíÎÎðëÊÊâéÅÅßèÂÂÞèÀÀßèÀÀàèÀÀßèÂÂÜéÄÄÕëÈÈÒëËËÕíÎÎâîÐÐìîÓÓëïÔÔêðÕÕæðÖÖæðÖÖæïÕÕâïÕÕáïÔÔßíÒÒÞìÏÏáìÎÎÝëÌÍÒéÉÊÈèÆÇŸèÅÅžçÃúçÁÁŒåÀÀ¿åŸŸÆ域Ì埿Óæ¿ÀÚçÂÂâéÇÇçëÍÍêîÔÔïñÜÜýôääÿ÷ëëÿúññÿü÷÷ÿýúúÿýüüÿþýýÿþýýÿýüüÿýùùÿûõõÿúððÿ÷êêÿôââÿñÚÚüîÒÒðëÌÌëéÇÇçèÃÃãæÀÁÜåÀÁÖåÁÂÐæÁÁÉçÃÃÂçÃÃÁèÆÇÂèÈÉÈéÊËÌëÎÎØìÏÏãíÒÒçïÔÔâïÕÕåï××äñÙÙçñÙÙêñÙÙìñÙÙíñÙÙïð××òïÕÕóîÓÓõíÐÐèìÌÌßëÉÉÜéÅÅàèÃÃâèÁÁáèÁÁáèÂÂáéÅÅáêÈÈàìÍÍèîÑÑûïÖÖÿðÙÙÿñÚÚÿñÙÙÿï××ÿîÓÓÿìÎÎñèÆƢ俿xᶷlÝ­®bØ¥§YԞ Oϕ˜Dʌ:ƅ‰3Â}ƒ+Ÿt{&»nužgpµaj³\f³Yc±Wa±T_°T^¯R]¯R]®R]¯Q\¯Q\¯Q\®Q[®OZ®OZ®NY®NY ­LX ­LW ¬KV ¬IU ¬IU «HS ªFR ªFRªDQªDP©DO©CO©BNšBNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BN©CO©DOªDPªDQªFR«FRªGS«HS ¬IU ¬IU ¬JV ¬KV ¬LW ­LW ­LX ®NY ®NY ­NY ®NY ®OZ ®PZ ¯Q\¯S]±V`³YcŽ]g·cl¹iqœqx"Áz€*Ç0ɋ8Γ–AӜŸL×€ŠUÜ®¯_á·žiäÀÀxèÈɧìÐÐïð××ÿðÛÛÿóÞÞÿóÞÞÿòÝÝÿñÙÙÿïÕÕþíÏÏóëÊÊæèÄÄâç¿¿á匌ß庺Þå¹¹Ü庺Ûå»»Ø眜ÕèÁÁÑèÄÄËêÇÇËëÊÊÑìÍÍàíÐÐèîÑÑëïÓÓëðÕÕçðÖÖæðÖÖäïÕÕæïÕÕéïÕÕíïÓÓâíÒÒßíÑÑãìÎÎâëÍÍÞêÊËÖêÊËÐéÈÉÌéÇÈÊéÇÇÏéÇÇÓêÇÇÚêÊÊáëÍÍæíÒÒêðÙÙïôßßýöççÿ÷ííÿúòòÿü÷÷ÿýúúÿýüüÿýüüÿýüüÿýûûÿýùùÿüõõÿúññÿ÷ëëÿõååÿóßßûñØØïîÒÒêìÍÍæëËËâêÉÉÜêÉÉ×éÈÈÕéÊÊ×êËËØëÍÍßìÎÎåíÑÑçíÒÒçïÔÔæïÕÕóïÖÖëï××èðÙÙèðÙÙêðØØêðØØêð××îïÖÖîïÓÓïîÑÑðíÎÎäëËËÙêÇÇ×éÄÄÚèÁÁÜ朜Þå»»Ý庺Þ庺à匌ß矟àèÂÂáêÇÇâëÍÍëîÒÒüðÖÖÿñÚÚÿñÜÜÿñÜÜÿðØØÿíÔÔÿìÎÎáçÆƔ土nßµ¶eÚª¬\Ö£¥OњœG̐”?ȈŒ7À…/¿v|'Œnu!žhpµaj³\f±Wa±T_¯R]®Q[ ®OZ ®NY ­NY ®NY ®NY ­LX ­LX ­LW ¬LW ¬KV ¬KV ¬IU ¬IU «HS «HS ªGS «FRªFRªDQªDOªDO©CO©BNšBNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BN©COªDOªDOªDPªDQªFR«FRªFR«GS«HS«HS¬IU ¬IU ¬IU ¬JV ¬KV ¬KV ¬LW ­LW ®NY ®OZ ¯Q\°T^²YcŽ]g·clºkrœry$Á{,Ņ‰3ʍ‘<ЗšD՟¡PÚª«Wß³Žb䜟nçÆƘìÏÏßî××ÿñÛÛÿôààÿôááÿôààÿòÜÜÿñÙÙÿîÒÒõëÌÌééÅÅäç¿¿â庺àä··á㎎Þ㎎Ý㎎Ü㶶Ùä··Õ庺Ó朜ÏçÀÀÎèÃÃÊêÇÇÊëÊÊÒëÍÍÞíÏÏéîÑÑëïÓÓêïÔÔéðÖÖèðÖÖïðÖÖùïÕÕîïÕÕæïÕÕæïÔÔåîÓÓäîÒÒçíÑÑéíÏÏêìÏÏêìÎÎçìÎÎæìÏÏçíÐÐéîÒÒëñØØêòÝÝïôââü÷èèÿøîîÿúòòÿü÷÷ÿüùùÿýûûÿýüüÿýûûÿýúúÿü÷÷ÿüõõÿúññÿ÷ííÿöççÿôââúòÜÜððØØîîÓÓïíÑÑðíÐÐðíÐÐðíÐÐñíÐÐñíÒÒíîÓÓìïÕÕëïÕÕéïÖÖèï××çðÙÙùðÙÙùðÙÙóðØØëðØØìðÖÖïïÔÔíîÒÒðíÐÐëìÍÍàëÊÊÕêÇÇÐèÄÄÖèÀÀÖ朜Ù庺Ûä··Ü㶶Ý㎎ßãµµàä··à人á眜áèÃÃâëÊÊäíÐÐîïÕÕýñÚÚÿòÝÝÿòÞÞÿòÝÝÿðÙÙÿíÕÕÿêÌÍÒçÄĆ⺻eÝ°±^Ù§©SԜŸKΓ–BȊ8ā†/Ày'Œov#¹hpµaj²\f±Wa¯S]®Q[ ®NY ®NY ­LW ¬KV ¬KV ¬JV ¬IU¬IU¬IU ¬IU ¬IU«HS «GSªGSªFRªFRªFRªDQªDP©DOªDO©BN©BNšBNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BN©BN©COªDOªDOªDPªDQªDQªFRªFR«FRªFRªGS«GS«HS«HS¬IU¬IU¬JV­LW ®NY ®PZ °T^±WaŽ]g·dmºkr Ÿsy#Â}ƒ-Ɔ‹5ː“=ҚœEÖ£¥Qܯ°Z⹺cå‡êËÌËîÔÔúñÛÛÿôááÿôããÿôääÿôââÿòÝÝþð××÷îÐÐíëÊÊæèÃÃã圜áä··à㎎áâ²²ßâ±±Þâ±±Ùâ±±Úã³³Õ㎎Õä··Ð庺Ð朜ÏçÀÀÏéÃÃÌêÆÆËëÊÊÐëÍÍÛìÏÏåîÑÑìîÓÓûïÔÔÿðÕÕÿðÖÖïðÖÖèðÖÖéðÖÖéïÕÕèïÕÕçïÕÕëîÔÔëïÓÓîîÓÓñîÓÓõîÔÔùðÖÖýðÙÙþñÜÜüôààúõååþ÷ééÿøîîÿúññÿüõõÿü÷÷ÿýøøÿýùùÿýùùÿüøøÿü÷÷ÿûôôÿúññÿ÷ííÿ÷èèÿõääýóààýñÜÜÿñÙÙÿðÖÖÿðÖÖûïÕÕ÷ïÕÕôïÕÕñïÖÖñïÖÖîðØØíðØØîðØØíðØØëðØØûðØØÿð××ÿðÖÖöïÔÔòîÒÒííÏÏæëÌÌÛëÊÊÓéÆÆÐéÃÃÑçÀÀÔ匌Õå¹¹Õä··Ú㎎Ûã³³Úâ±±Ýâ±±Ýâ²²Þ㎎áä··á庺áèÁÁàêÇÇâìÍÍäïÔÔíñÙÙüóÞÞÿôààÿôààÿòÝÝÿðØØÿíÒÒùéÉʜ埿yàŽµ]Úª«UÕ ¢Jϖ™Bʌ9ш2Áz€*œqx#¹iqµaj²[e±V`¯R]®OZ ­LX ¬KV ¬IU¬IU¬IU«HS«HS«GSªGSªFR«FRªFRªFRªFRªDQªDPªDO©DOªDO©CO©BNšBNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§AL§ALšAMšBNšBN©BN©BN©COªDO©DOªDOªDPªDQªDQªDQªFRªFR«FRªFRªGS«HS¬IU¬JV­LW ®OZ ¯R]±Wa³\f·dmºls Ÿu|'Â~„,LJŒ6͑•?қF׊šPܱ²X⻌xçÆÆŒëÏÐæïØØÿóÞÞÿõääÿöååÿöååÿôããýòÞÞõð××êîÐÐèëÉÉäèÂÂâ圜ãä··á㎎áâ±±ßᯯÞá®®ÜᯯÙá°°Øâ±±Öâ²²ÕãµµÓä··Ï庺Ð朜ÎèÀÀÏéÄÄÍêÇÇÌëÊÊÏëÍÍÞíÏÏîîÐÐøîÑÑþïÓÓñïÔÔêðÔÔêðÕÕêðÖÖêðÖÖêðÖÖëðÖÖíðÖÖððÖÖòð××õð××øðÙÙüñÛÛÿòÞÞÿôááÿõååÿ÷èèÿ÷ììÿúïïÿúòòÿûôôÿûôôÿûõõÿûõõÿûôôÿûóóÿúññÿùîîÿ÷ëëÿ÷èèÿõååÿôááÿòÞÞÿñÜÜÿñÚÚþñÙÙûðØØ÷ðØØôðØØóð××ñð××ðð××ïð××ïð××ïðÖÖððÖÖþïÕÕÿïÓÓþîÑÑ÷íÏÏèëÍÍÔëÊÊÐêÇÇÒèÃÃÑèÀÀÒ匌Ôä¹¹Òä··Õ㎎Øâ²²Ùâ±±Øá°°ÜᯯÛᯯÞâ°°Ýâ²²àäµµá庺âçÀÀáéÆÆÞìÍÍßïÔÔâñÙÙìóßßúôââÿôââÿôááÿñÛÛÿîÔÔÿëÌÍåæÃóṺkÛ­¯UÖ£€OҙœFʏ’:Ņ‰2Á{-œqx$¹iqµaj²[e±V`¯Q\­NY ¬LW ¬IU ¬IU«GSªGS«FRªFRªFRªFRªDQªDQªDQªDPªDO©DOªDO©CO©BN©BN©BNšBNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§ALšAMšAMšBNšBN©BN©BN©BN©COªDO©DO©DOªDOªDPªDQªDQªFRªFRªGS«HS¬IU¬LW ®NY ¯R]±Wa³\f·dmºlt!Ÿu|'Ã~„.ȈŒ7Β•>ӜŸHا©PÞ²³j䜟®çÇÇÛìÑÑòðÚÚÿóßßÿöååÿöççÿöææÿõããúóßßëñØØáîÑÑßëÊÊÜèÄÄÝ柟Þä¹¹áãµµàâ²²ßá°°Üá®®Úá®®Úá®®Ùá®®ØᯯÖâ±±Øâ³³ÖãµµÓåžžÐå»»Õ矟ÑèÁÁÓêÅÅÙêÇÇßëÊÊåëÌÌæìÍÍêíÏÏèíÐÐçîÐÐìîÑÑìîÓÓíïÓÓìïÔÔíðÕÕïðÖÖððÖÖòð××ôð××øðÙÙûñÛÛÿòÝÝÿóààÿôããÿöææÿ÷ééÿ÷ëëÿøííÿùïïÿúððÿúððÿúððÿùïïÿùîîÿøííÿ÷ëëÿöèèÿöååÿôââÿôààÿòÝÝÿñÜÜÿñÚÚýñÙÙúðØØ÷ð××õðÖÖóðÖÖòðÖÖñïÕÕñïÓÓïîÓÓïîÒÒíîÐÐòîÐÐñíÎÎîìÍÍèëÊÊáêÇÇÞéÄÄÔèÁÁÔ朜Õ庺Ôä··Õ㎎Øâ²²Øâ±±ÚᯯÚá®®Ûá®®Üá®®ÜᯯÝâ±±Ýã³³àä··àå»»àèÁÁÝêÇÇØìÍÍÔïÔÔÔñÚÚßôßßíôããÿôääÿôââÿñÝÝÿï××ÿëÎÏõçÅÅÖ⺻¢Ü¯°`Ö€ŠNҙœDː“=Ņ‰2Á|‚,œqx%¹iqµaj³Ze±U`¯Q\®NY ¬KV¬IU«GSªFRªFRªDQªDQªDPªDOªDO©DO©DOªDO©CO©CO©BN©BNšBNšBNšBNšAM§AL§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§ALšAMšAMšBNšBNšBN©BN©BN©BN©CO©COªDO©DOªDOªDPªDQªFRªGS¬IU¬KV ­NY ®R]°V`³\f·dmºls"Ÿu|(Â~„/LjŒ7Β•@ӜŸJا©QÞ²³‡äœŸÈçÇÇèìÑÑïïÙÙÿóßßÿõååÿöççÿöææÿõääÿóßßüñÚÚåïÓÓÙìÍÍØêÇÇÜèÁÁÝ匌ÞäžžÜ㎎Þâ²²Ûâ±±ÜᯯÛá®®×á®®Ùá®®×ᯯ×â±±×â³³ÖãµµØäžžÙå»»Ø矟ÛèÁÁãéÄÄçêÆÆìêÈÈìëÈÈåëÊÊÜëÊÊÎëËËÓëÌÌ×ìÍÍÞìÎÎéîÐÐìîÐÐîîÒÒðîÒÒñîÒÒôïÕÕõðÖÖúðØØýñÚÚÿòÜÜÿòßßÿôááÿôããÿõååÿöççÿ÷èèÿ÷ééÿ÷ééÿ÷ééÿ÷èèÿ÷èèÿöççÿõååÿôããÿôááÿóÞÞÿñÜÜÿñÚÚÿðÙÙÿðÖÖýðÖÖùðÔÔ÷ïÓÓõîÓÓóîÑÑòíÐÐðíÏÏéíÎÎäìÍÍÜëÍÍÚëÌÌáëËËèëÊÊìëÈÈëêÆÆçéÄÄåèÁÁÝ朜Û庺Øä··Ú㎎Ùâ±±ÚᯯÙá®®Ùá®®Ûá®®Üá®®ÛᯯÜâ±±Ýâ³³ß㶶Ü庺Ú柟ØéÄÄÕëÊÊÒíÐÐÎðÖÖÎñÜÜäôààþôããÿôääÿôââÿñÝÝÿî××ùëÍÎóçÄÄæ⺻Âܯ°rÖ€ŠNҙœDˏ’<Ņ‰5Á|‚+œqx&¹iq µaj²Ze±T_®Q[­LX ¬JV «HSªFRªFRªDQªDPªDO©DOªDO©CO©CO©BN©BN©BNšBNšBNšBNšBNšAM§AL§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@L§AL§ALšAMšAMšBNšBNšBN©BN©BN©BN©COªDOªDOªDPªFRªFR«HS¬KV ®NY ¯Q\±V`³\f·clºkr Ÿu|'Â~„.LJŒ8͑•>қH׊š_Ü°±ƒâº»ŒçÅÅâëÍÎèî××öòÜÜøôââÿõååÿöååÿõååþôââöòÜÜððØØêîÒÒÚìÌÌÖêÇÇÖèÂÂÙ朜Ø庺Ûã··Ü㎎Ýâ±±Úá±±Ø⯯Úᯯ×ᯯÙâ±±Øâ²²Ú㎎Üä··Ü庺à矟åèÁÁéèÂÂëéÄÄóéÄÄîéÄÄèéÄÄàéÄÄÑéÅÅÎêÆÆÍéÇÇËêÇÇÍêÈÈÑêÉÉÙêËËßëÌÌçìÎÎïíÏÏñíÐÐùíÒÒúïÕÕÿðÖÖÿñØØÿñÚÚÿòÜÜÿòÞÞÿóßßÿôààÿôááÿôââÿôââÿôááÿôààÿóßßÿòÞÞÿñÜÜÿñÙÙÿðØØÿðÖÖÿïÕÕÿíÒÒûíÑÑùíÏÏóìÎÎðëÍÍèêÌÌâêÊÊÛëÊÊÖëÉÉÒëÇÇÑêÇÇÑêÇÇÕêÇÇáêÇÇêêÇÇóéÅÅôéÄÄíèÁÁéç¿¿æ挌ßåžžÜäµµÛâ³³Ûâ±±ÛᯯÚá®®Ûá®®ÙᯯÚâ±±Üâ²²Û㎎Øä··Ó庺Ó矟ÑèÃÃÒëÉÉÎìÍÍÍïÓÓØñÙÙäòÜÜéôààìôââúôââÿóÞÞÿðÚÚüíÓÓòêËÌèåÂÂáṺµÛ­¯Õ¢€\љœDʏ’<ш3Á{-œqx%¹iq µaj²Zd°T^®OZ­LW ¬IU«HS«FRªDQªDP©DOªDO©CO©BN©BN©BNšBNšBNšBNšBNšAMšAM§AL§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@L§AL§AL§ALšAMšAMšBNšBNšBN©BN©BNªDOªDOªDQ«FR«HS¬JV®NY ¯Q\±V`²\f¶ck¹jrœry(Â}‚0ƅ‰4ː“?Ҙ›SÖ£¥qÛ¬®à·ž£åÁÁŸéÉÊÛíÑÑêïØØñòÝÝûôââûõããïôääêôââîóßßëñÛÛïñ××ñîÒÒãìÍÍÖëÉÉÔéÄÄÕçÀÀÕ朜Øå¹¹×ä··Û㎎Ûâ²²Ûâ²²Ûâ²²Üâ²²Ú㎎Üä··Ýå¹¹ß圜âç¿¿èèÁÁìèÄÄôèÄÄýèÃÃõèÁÁêèÁÁâçÀÀÖç¿¿Ïç¿¿Ïè¿¿ÍçÀÀÍçÁÁÍçÃÃÌèÄÄÎéÅÅÏêÆÆÔêÈÈØêÉÉáêËËåëÌÌììÎÎóîÐÐ÷îÒÒúïÔÔüïÖÖýð××ýñ××þñÙÙþñÙÙÿñÙÙÿñØØþð××þðÖÖýïÕÕýïÓÓüîÒÒúîÐÐøìÎÎôëÌÌìêËËèêÉÉâêÈÈÙêÇÇÕéÆÆÓéÄÄÐçÃÃÐçÂÂÑçÀÀÑèÁÁÑèÁÁÔèÁÁÛèÃÃäéÄÄêéÄÄøéÅÅþéÄÄóèÂÂíèÀÀç朜âå¹¹Þä··Þ㎎Þâ²²Ýâ±±Ûâ±±Ýâ±±Üã²²Û㎎Øä··×庺Ö圜ÑèÁÁÏêÄÄÍëÉÉËìÍÍÔîÓÓáðÖÖçñÛÛçóÞÞäóßßáóßßãòÞÞïðÚÚóîÖÖïëÎÏãçÆÆ×㜟¬Þ³ŽšÚ©ª‘Ô¡£mϕ™Mʌ<ăˆ3Àz€,Œov'žhp!µ_i³Yc°T^®OZ­LW ¬IUªGSªFRªDQ©DOªDO©BN©BNšBNšBNšBNšAMšAMšAM§AL§ALš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@L§AL§ALšAMšAMšBNšBN©BN©CO©DOªDQªFR«GS¬IU­LX ®PZ±T_³Zeµaj¹iqœqx&Áz€-ш7ʍ‘Bϕ™]ԟ¡Ùš©‹Ý²³ âº»§æÃûéÉÊÓíÑÑîïØØñðÛÛçòÞÞåôááâôââãôààèóÞÞìñÛÛìðØØïïÓÓëîÐÐÞëËËÒêÇÇÑéÃÃÒèÀÀÔ匌×庺Öä··Ú㶶Ü㶶Ü䶶Þä··Þ庺ß朜áèÀÀæèÃÃééÅÅòéÅÅþéÅÅÿèÃÃöèÁÁé柟ã匌Ú庺Ôå¹¹Ïä¹¹Ïä¹¹Íä¹¹Î䌌Î挌Î柟Íç¿¿ÏçÀÀÔçÂÂÕèÃÃØéÄÄÛèÆÆáêÈÈæëÊÊëëËËíìÍÍïíÎÎïîÐÐóîÐÐøîÑÑûîÑÑùîÐÐõíÐÐñíÎÎïìÍÍïëËËíëÊÊêêÇÇçèÆÆãèÃÃÛèÃÃÙçÂÂØçÀÀÔç¿¿Ó朜Ð挌Òä»»Ð人Óä¹¹Ôä¹¹Õ匌Ø朜Üç¿¿æèÂÂêéÄÄùéÅÅÿéÆÆýéÅÅòèÃÃêèÀÀå圜áå¹¹Þä··àãµµÝ㎎Ý㎎Úãµµ×ä··Ø庺Ñ朜ÑçÁÁÍèÄÄËêÇÇÇëÌÌÍîÐÐÙïÓÓèðÖÖèñÙÙâñÜÜáòÝÝáòÞÞÙñÛÛÚðØØÝíÕÕæìÏÏåèÇÇÄåÁÁ«áž¹€Ü¯°–×¥§ŠÓœŸ|͓–]ȉ>Á†0¿w}+»nu%·fn!Ž_i²Yc¯S]®OZ¬LW ¬IUªFRªFRªDPªDO©BN©BNšBNšBNšAMšAM§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@L§AL§ALšAMšBNšBN©BNªDOªDPªFRªGS¬IU­LW ®OZ°T^³Ycµ_ižgp!Œov%¿w~,À…6ȉMΒ•nҚœ€Ö¢€ŠÚª¬ß³Ž—㻌€æÂÂŽéÉÊÂìÐÐßîÕÕÞðÙÙÙñÜÜÞóßßäóßßäóßßçòÞÞêñÜÜìñÙÙîðÖÖìîÓÓçíÏÏÝëËËÒêÇÇÑèÄÄÓèÀÀÕ朜Ø匌Úå»»Ùå»»Þ朜àèÀÀßèÄÄãêÇÇåêÉÉñëÊÊþëÊÊÿêÈÈÿéÅÅ÷èÁÁè眜â庺Ýä··Ù⎎Øâ³³Õâ³³Ó⎎ÒãµµÍ㶶Î㶶Ïä¹¹Îä¹¹Ñ人Õ匌×挌Ú朜àçÀÀåçÁÁæèÄÄééÅÅéêÇÇìëÉÉòëÊÊöëÊÊúëÊÊøëÊÊôêÈÈïêÇÇëéÅÅêéÃÃéçÀÀçæ¿¿æ朜ß匌Üå»»Ù人Öä¹¹Óä¹¹Ò㶶Ñ㶶ÓãµµÔ⎎Ö⎎Öãµµ×ã··Ü庺Ü矟äèÂÂééÅÅùëÈÈÿëÊÊÿëÊÊýêÈÈðéÆÆçèÂÂãè¿¿ß匌ß庺Ü庺Û庺Øå»»Ò朜ÎèÀÀÐèÄÄËêÇÇÇëËËÎìÎÎÛîÒÒåðÕÕæðØØâñÚÚáñÜÜáñÜÜßðÛÛÙðÙÙÙðÖÖÔíÑÑÏêÍÎÌèÇdzäÀÀ¬â¹º¢Ý°±™Ú©ª‘Õ ¢ŒÒ—švˏ’nƆ‹LÂ}ƒ5Ÿu|)ºlt&·emŽ]g±Wa¯R]®NY ¬KV «HS«FRªDQªDO©CO©BNšBNšBNšAM§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšBN©BN©COªDOªDQªFR¬IU ¬LW ®OZ ¯S]²Xcµ^g·fnºlt%Ÿtz+Â}ƒ<ƅ‰WʌfĘ|ԜŸ„×€Š‹Û«­”Þ³Ž›ãº»©æÁÁªèÇDZêÍοíÑÑÓî××ÖðÚÚàñÜÜâóÞÞäóßßäóÞÞçòÝÝêñÛÛçñØØêðÕÕíîÒÒçìÎÎÝëËËÑëÈÈÑéÅÅÒèÃÃÕèÃÃÖèÃÃÛéÄÄÞêÇÇáëÊÊãìÍÍïíÐÐþîÐÐÿíÐÐÿëÍÍÿêÈÈ÷éÄÄæ眜á庺Û㎎Ûâ²²Ùá°°Öá°°Õá°°Õá°°Ôâ±±Ïà±²Óá²³Òá²³Ò᳎ÕãµµÖ㶶×ã··Ýä¹¹â人å匌æè¿¿èèÁÁëéÄÄñéÅÅöêÆÆûêÆÆùéÅÅôèÃÃïèÁÁê矟ç匌åä¹¹ääžžâã··Ü㶶ÚⶶÙ᳎×á²³ÕಳÕà±²Õâ±±Öá±±×á±±Ùá±±Ùâ²²ÙãµµÞ庺Þ矟âéÄÄèêÈÈùìÌÌÿíÏÏÿíÐÐÿíÏÏýìÌÌîëÉÉãêÆÆáèÃÃÛèÁÁØèÁÁÙèÁÁÑèÃÃÎéÄÄÍëÈÈÉëËËÊíÎÎÖîÑÑäïÔÔäð××ãñÙÙàñÚÚÜñÛÛÝñÚÚÜðØØÕð××ÖíÔÔÑìÐÐÈéÉʳçÅŢ俿žâž¹Ý°± Ûª«Ö¢€ƒÑšœ}͒•qȊiăˆZÁz€?œqx*¹iq#¶ck ³\f°V`¯Q\®NY ¬JV «HS«FRªDQ©DO©CO©BNšBNšAM§ALš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBN©BN©CO©DOªDQ«FR«HS¬KV ­NY ®R]°V`³\f¶ckºiq#œqx0ÀyDÀ…ZȈŒfː”qЖ™oԞ ‚×£¥…Úª¬”Þ°±âž¹›ä¿¿£æÄÄ¡éÉʲìÏÏÍîÔÔØðØØÞðÚÚÛñÜÜÛòÞÞàòÞÞãòÝÝãòÜÜåñÚÚèñØØëïÖÖíîÓÓèíÐÐÛìÍÍÒëËËÒëËËÔëËËØìÍÍÙíÐÐÞîÓÓìïÖÖþð××ÿð××ÿïÖÖÿîÑÑÿìÌÌùéÇÇæèÀÀá庺Þ㎎Úâ±±Ùá°°×à®®×à­­Ô߬­Ôß­®Ôß­®Óß®¯Ô௰Ö௰Øà°±Ùà°±Ûá³³Üâ³³à㶶ãäžžä匌æ矟ëèÁÁñèÃÃ÷éÄÄþéÄÄûèÃÃóèÀÀî朜éå»»æã··äãµµäâ³³âá²²ßá±±Üà°±Ü௰Ú௰×ß®¯Øß­®Öß­®Õà®®Øà®®Úá°°Ûá²²ÝãµµÜ庺ÞèÀÀáêÆÆçìËËøîÑÑÿïÔÔÿðÖÖÿðÖÖÿïÓÓýîÑÑêíÍÍÙëÊÊÕëÉÉÕëÈÈÐëÉÉÎëÊÊÉìÍÍÎíÏÏØîÒÒãïÔÔçð××åñÙÙàñÚÚÞñÚÚÛñÚÚÙðØØØï××ÒîÕÕÔíÑÑÓêÌÍŸèÇÇšæš仌–൶Ý°±“Úš©ŒÖ¢€‹Ò›ž}Γ—xʌfƅ‰`Â}ƒVŸv}E»nu1žgo"µ`j²Ze±T_®Q[­LX ¬IU «GSªFRªDPªDO©BNšBNšBN§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBN©BNªDOªDPªFR«HS¬JV ®NY ®Q[±U`²Zdµ_i·fn!ºlt6ŸtzKÂ|LшVȉŽb̏“sŘrӝŸ|Ö¢€ŠÛš©ŽÜ¯°•àµ¶–㺻™æÁÁžçÆÆŠêËÌŸìÑÑÐíÕÕÛðØØÙðÛÛÝñÜÜßòÝÝàòÝÝåòÝÝçòÜÜçñÚÚêñÙÙéðÖÖíïÕÕèîÓÓÞîÓÓÙîÓÓÕïÖÖÕñ××çñÛÛþòÝÝÿòÞÞÿòÞÞÿñÛÛÿð××ÿîÑÑûëÊÊçèÄÄá圜ß㶶Ýâ³³Úá°°Úà®®Öà­­Ö߬­Ô߬­Óß«¬Öß«¬Õß«¬Øß«¬Ú߬­Ùß­®Ýá°°ßá°°áâ³³ã㶶å庺æ眜ëèÁÁðèÄÄøéÄÄÿéÄÄþéÃÃôèÀÀï朜ê庺æãµµåâ²²ãá°°âᯯßß­®Þ߬­Ýß«¬Úß«¬Øß«¬×߬­Ø߬­Øà­­×à®®Ûá°°Ûâ²²Ý㶶Ü朜ßéÂÂáëÊÊæîÐÐøðÖÖÿñÚÚÿòÜÜÿòÜÜÿñÜÜÿñÙÙýïÖÖäîÓÓÒîÑÑÏîÐÐÎîÐÐÓîÑÑÞïÓÓäïÕÕæð××áñÙÙáñÚÚàñÚÚßñÚÚÚðØØÕð×××ïÕÕÕíÑÑÓìÎÎÇéÉÊ°çÄÄ ã¿¿›âž¹”Þ²³Û¬­…ÚŠ§‡Õ ¢ҚyΓ—xʍ‘gLjŒdÀ…ZÀw~PœqxB¹jr:·dm%Ž]g²Xc°T^®OZ­LW ¬IU ªGSªFRªDO©CO©BNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFRªGS¬IU ­LW ®OZ¯S]±Wa³\f¶ck)¹iq9Œov<Ÿu|GÂ|‚NшTȉŽeˏ“sϕ˜|ҙœ|Õ ¢‚ÙŠ§ŠÛ¬­’Þ°±”â·ž›äŒœ¢æÃçèÇǬêÍÎÄíÑÑÐîÕÕ×ðØØÙðÛÛÞñÜÜÝòÝÝßòÝÝâòÝÝçòÝÝæòÜÜèñÚÚëñÚÚìñÛÛîñÜÜãòÝÝáóßßþôââÿõääÿõååÿõääÿôààÿñÜÜÿðÖÖýíÎÎæêÇÇßèÁÁÝä¹¹Þ㶶Ûâ³³Ùá°°Úà°°Øß­®Ö߬­×ß«¬Øß«¬Öß«¬×ß«¬Ú߬­Ú߬­Ý௯àá°°ââ³³ã㶶åå»»æç¿¿ëèÃÃðêÆÆüêÇÇÿêÇÇÿêÆÆøèÂÂî矟ê庺æãµµåâ²²ãá°°âà®®à߬­Ý߬­Ûß«¬Üß«¬Úß«¬Ú߬­Ùß­®×௯Úá°°Ùá²²ÜãµµÞä¹¹ßçÀÀßêÆÆáìÍÍãïÕÕùñÛÛÿóßßÿôââÿôããÿôââÿóààÿòÝÝúñÛÛÛñÙÙ×ðØØâñ××èñØØèñØØäñÙÙâñÚÚâñÚÚÝñÚÚÝðÙÙÚï××ØïÕÕÓíÒÒÎìÎÎÌéÉÊŽçÅÅ£äÀÀ™ãº»—൶’ݯ°Ú©«ˆØ€Š€Õž yјšt͒•uʌeȈŒeĀ…[ÁyIŸsyBºlt=·fn4µ`j$²[e±V`®R]­NY¬KV ¬IU ªFRªDQ©DO©CO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšBN©BN©COªDOªDQªFR¬IU¬KV ­NY¯Q\±V`²ZeŽ_i(·em2ºkr9Œpw=¿v|JÂ|‚Sł‡Zȉ^ˎ‘j͒•vјš€Õž ƒ×¢€‹Úš©ŽÜ­®”ÞŽµ™ã¹º ä¿¿¢çÃâéÈȱëÍÎÃíÑÑÑîÕÕÖðØØÖðÛÛÛñÜÜßòÞÞãóÞÞáóßßçóÞÞæóßßìóßßëôááïôââóõååþöèèÿ÷ééÿ÷êêÿ÷èèÿöååÿôááÿñÛÛýïÓÓßìÌÌÙéÅÅÚç¿¿Ø人×ä··ÚãµµÖá³³Ùá²²×à°±Ö௰×௰×யÙß®¯Úß®¯Ýß®¯Ýá°°àá²²âãµµãäžžä眜æèÃÃêêÇÇòëÊÊÿëÍÍÿëÍÍÿëÊÊýêÇÇïèÂÂê朜æäžžå㎎ãá±±âá°°à௯ßß®¯Üß®¯Ý௰Ú௰Ú௰Úà°±Øá²²Øâ³³Û㶶Øä¹¹Û柟ÜèÄÄÙëÊÊÙîÒÒãñÙÙûóßßÿõääÿöèèÿ÷èèÿöèèÿöååÿõääýôááòòßßêòÜÜçòÜÜæñÜÜãñÜÜãñÜÜáñÛÛÞðÙÙÚïØØÕîÖÖÒíÓÓÐìÏÏÍêÊË»èÆÆšæ仌›á¶·“Þ±²Û¬­ŠÙŠ§‡Ö¡£‚ÔœžЖ™s͑”rʋjDžŠ^Ā…XÁyOŸtzH»nu;¹hp3¶ck+Ž]g'²Xc°T^®PZ­LX ¬JV «HS «FRªDQ©DO©BNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©DOªDQªFR«HS¬IU ­LX ®OZ¯S]±Wa²\f$µaj%·fn1ºkr:œqx<¿v|FÂ{OÇ[LjŒgʋl͑”vŘ{ҙœ‚Õ ¢Š×€Š‡Ú©«ŽÝ¯°•àµ¶˜ãº»œå¿¿¢çÄħéÉʱëÍÎÇíÑÑØîÕÕØðØØÝðÛÛÜñÛÛÝóÞÞãóßßåôááåôââêõääëöææõ÷ééÿ÷ëëÿøííÿøííÿ÷ëëÿ÷ééÿõååÿóßßþðÙÙÝîÒÒÕëËËÔéÆÆÕçÀÀÓ朜Ô人ÔäžžÒã··Ð㶶ÖᎵÙ᳎Õá²³×ಳÛಳÜâ³³Þâ³³à㶶ãä¹¹ä匌åèÂÂæêÇÇéìÍÍøîÐÐÿîÓÓÿîÓÓÿîÐÐÿìÌÌõêÇÇéèÂÂç匌åäžžä㶶ãâ³³áâ³³àá³³Þá²³Ýá²³Ù᳎×âµµØ㶶Òã··Ôä¹¹Õ匌Öæ¿¿×éÄÄÕëÊÊÔíÐÐÓðÖÖÖòÝÝûõããÿöèèÿ÷ëëÿ÷ëëÿ÷ëëÿ÷êêÿöççüõååòôââéôààåòÞÞáòÝÝßñÜÜßðÙÙÙðØØ×îÖÖÖíÒÒÐìÏÏÌêËÌœèÆƧæÂœ匜™âž¹•Þ²³Û­®ŠÚš©ˆ×£¥€Ôž ƒÑ˜š}Δ—pˎ’mɊŽiƅ‰dÄ„VÁyMŸtzFŒnu<¹iq6·dm,µ_i+²Zd"±V`®R]®NY¬LW ¬IU ªGSªFRªDPªDO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFRªGS¬IU ¬LW ­NY¯Q\±T_²Yc³\fµaj,·fn5ºkr6Œpw<Ÿu|KÁz€UÄVƄˆ\ȉŽjˎ’lΒ•sЖ™|ԜžƒÖ¡£†ÙŠ§Û«­‘Ý°±•àµ¶˜ãº»šä¿¿žçÅÅ£éÉʱëÍÎÊíÑÑÔîÕÕÖðØØØðÛÛßñÜÜßòÞÞäôââæõååëöççô÷êêü÷ëëÿøîîÿøîîÿøîîÿ÷ëëÿöèèÿõââûòÝÝãð××ÖîÑÑÒìÍÍÏëÉÉÎèÄÄÎçÂÂÎçÀÀÌ柟Ï匌Ðä»»Ó人Òä¹¹ÕäžžÖäžžÚäžžÙä¹¹ßä»»à柟äçÂÂåêÈÈæìÎÎëîÓÓýðÖÖÿñÙÙÿñÙÙÿðÖÖÿîÓÓüìÍÍêêÈÈæèÃÃå柟ää»»ßä¹¹ßäžžÚäžžÕä¹¹Úä¹¹×人Ïå»»Ò挌Í柟ÑçÀÀÍèÃÃÎéÆÆÍëÊÊÍíÐÐÍïÕÕÒñÛÛÖôááôöææÿ÷êêÿ÷ììÿ÷ììÿ÷ììÿ÷ëëÿöèèþöååñôââæôàààñÜÜÚðÚÚÞïØØÛîÖÖØíÒÒÒìÏÏÊêÊËŸçÆƪæž土—⹺•Þ³ŽÝ­®‘Ú©«‹Ø€Š‚ÕŸ¡~Қ|Řz͑”rʌpȈŒ^ł‡]Ã|‚TÀw~NŸsyH»nu;¹iq2¶dm+µ_i#²[e"±Wa¯S]®OZ­LX ¬JV «HS ªFR ªDQªDO©CO©BNšBNšAMš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšBN©BN©CO©DOªDQ«FR«HS ¬IU ­LW®OZ¯R]±V`²YcŽ]g#µaj)·fn1ºkr7Œov:Ÿtz?ÁyNÃ|‚Uł‡_ȈŒ^ʋn̐“nΔ—yјš}՝Ÿ‡Ö¢€‰ÙŠ§‰Û«­Ý°±—൶šãº»äÀÀŸçÅÅšéÈȲëËÌÁìÑÑÑîÔÔØïØØÜðÛÛÞòÞÞàóááæõååòöèèû÷êêÿ÷ëëÿøííÿøííÿ÷ëëÿ÷èèÿõååöôààññÜÜíð××åïÓÓÞíÐÐÙìÍÍÐêÉÉÎêÈÈÌèÆÆÈèÄÄËèÃÃËçÁÁÍçÀÀÍçÀÀÓç¿¿Õç¿¿ØçÀÀ×çÂÂßéÅÅÞëÊÊáíÏÏãïÔÔïñÙÙÿòÝÝÿóßßÿóßßÿòÝÝÿñÙÙÿïÔÔðíÎÎäëÊÊáéÅÅàçÂÂÛçÀÀÙç¿¿Öç¿¿ÔçÀÀÑçÀÀÌçÂÂÌèÃÃÊèÅÅÊéÆÆÉêÈÈÉêÊÊËìÎÎÓîÑÑÖðÖÖÛñÙÙèóßßèõããñöççú÷êêÿ÷ëëÿ÷ëëÿ÷ëëÿöèèÿöææüôââïòßßåñÜÜØðÙÙÖîÖÖÔíÒÒÏìÎÎÉêÉʶçÆÆšæš䜟šâ¹º—ß³Ž’ݯ°ŒÚª¬Œ×¥§†Õ ¢…Ó›ž|Иšy͒•rˎ‘oȉŽeƅ‰bÄ„UÂ{€S¿v|JŸryD»nu9¹iq2¶dm0µ_i!²\f±Wa°T^¯Q\­NY¬LW ¬IU «GS ªFRªDP©DO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFRªGS¬IU ¬KV ®NY®OZ¯R]±V`³Yc³\f µaj$·fn+ºiq0»nu?ŸryF¿v|LÂ{€SÀ…YƄˆ^ȉbʌm͑”wϕ˜|ҙœ՞ …Ö¢€‰ÙŠ§‘Û«­•Ý°±—ßµ¶›ãº»žåœŸ£æÃÃ¥çÇdzêËÌÁëÏÐÐîÔÔÙïØØÞðÛÛãóÞÞñóááúôääÿöççÿ÷ééÿ÷ééÿ÷ééÿöèèûöååîôããëóßßëòÜÜëñÙÙêðÖÖêïÔÔçíÑÑãìÏÏÜëÍÍØëÌÌÕêËËÏêÉÉÌêÉÉÍêÈÈÎêÇÇÎêÇÇÐêÈÈÔêÉÉØìÍÍÜîÑÑßïÖÖÞñÛÛ÷óßßÿôããÿõååÿõååÿôããÿóßßÿñÛÛùïÖÖâîÑÑÝìÍÍÜêÉÉÖêÈÈÒêÇÇÒêÇÇÌêÈÈÎêÉÉÍêÉÉÌêËËÑëÌÌÑëÍÍØíÏÏÞîÒÒâïÔÔåð××èñÚÚçòÝÝéôááæõããëöææõöèèÿ÷èèÿ÷èèÿõååÿôããÿóààûòÝÝðïÚÚåîÕÕ×íÒÒ×êÍÎÇéÉÊŽçÆÆ€å䌜œâ¹º•Þ³Ž’ݯ°ŒÚª¬‹Ø¥§ˆÕ ¢…ӝŸ|јšx͓—rˏ“oɋkLjŒał‡^Ã|‚TÁyJŸt{FŒpwDºls@žgp2·cl(µ_i#²\f±Wa°T^¯Q\®OZ­LW¬IU «HS ªFRªDQªDO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BN©CO©DOªDQ«FR«HS ¬IU ¬LW ®NY®PZ¯S]±V`²Yc³\f!µ`j(¶dm1¹hp/ºlt:Œpw>ŸtzJÁyPÂ|‚SÄ…Xƅ‰dȉŽlʍo͑”vϕ˜|ҙœ՞ ˆÖ¢€‡ÙŠ§ŽÚª¬‘Ý°±•ß³Ž™â¹ºŸäœŸ£å€çÆÆ­êÊË»ëÍÎÍíÓÓÝïÖÖéïÛÛ÷ñÞÞýóááüóââÿôääÿôääþöååôôääèôââæôááæóßßæòÝÝæñÜÜäñÙÙæñØØçð××çîÕÕçîÓÓçíÒÒçíÒÒæíÐÐàíÏÏàíÏÏÞíÏÏÝíÏÏÜîÒÒÞïÕÕàñÙÙÞòÜÜçôááþõååÿ÷èèÿ÷ééÿ÷ééÿ÷èèÿõååÿôááÿñÜÜèñÙÙÞïÕÕßîÓÓàîÐÐÞíÏÏÝíÏÏáíÏÏâíÐÐâíÑÑæíÒÒæîÓÓæïÖÖäðÖÖãð××äñÙÙåñÛÛæñÝÝæóßßãôááäôâââôââíôããõóââûóááÿòßßÿðÝÝüïØØ÷îÕÕììÐÑÛëÌÍÆèÉÉŽçÄÄ€äÀÀ ã»Œ›â·ž˜Þ²³’ܯ°“Úª¬Ø¥§ŠÖ¡£~ԝŸ~јšwΓ—x͐“tʋiȈŒhш\Ä„XÁz€Q¿v|NŸryF»nu>¹iq6·fn1¶ck&µ_i!²[e ±Wa±T_®R]®OZ­LX¬KV¬IU ªGS ªFRªDP©DO©BNšBNšBN§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BNªDOªDPªFRªFR«HS ¬IU ­LW­NY®PZ¯S]±V`²Yc³\f#Ž_i#¶ck'·fn+¹iq6»nu6œqxFŸu|NÁyQÃ|‚Vł‡_dž‹cɊŽdˎ‘s͑”rϖ™xҙœ€ÕŸ…×¢€‹ÙŠ§ŒÚª¬Ü¯°šÞ²³œá·žã»Œ€äÁÁ¥çÄįèÈÈÀëÌÍÓëÏÐèíÓÔôï××øïÚÚúðÝÝþñÞÞòòÞÞíóßßåóßßãóÞÞáòÞÞäòÝÝäñÜÜåñÜÜáñÛÛãðÚÚàðÙÙäðØØãðØØæð××çð××æïÖÖéïÖÖêð××íð××íñÙÙïñÛÛðòÞÞòôââõõååÿöèèÿ÷ëëÿøííÿøííÿ÷ëëÿöèèÿõååÿôââùòÞÞóñÛÛðñÙÙïð××îð××éð××çð××èð××çñØØåñØØâðØØâðØØßðÙÙßðÚÚàðÛÛáñÛÛßñÜÜßòÝÝàòÝÝÞñÞÞÜòÝÝæðÜÜìðÛÛ÷ïØØùîÖÖõìÒÓóëÎÏÞêËÌÐçÇÇ»æÃì土¡âº»žà¶·—ݱ²”Ü­®’Û©ªØ¥§‹Õ ¢†Ôœž‚јšzΓ—u̐“tʋlȈŒjш\À…`Â{QÀw~SŸtzJŒov@ºlt6¹hp5¶dm,µaj*Ž]g#²Ze!±Wa°T^®R]®OZ®NY¬KV¬IU «GS «FRªDQªDO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@LšAMšBN©BN©CO©DOªDPªFRªGS «HS ¬IU ­LW ­NY®PZ¯R]±U`±Wa³ZeŽ]g$µaj*¶dm*žhp6ºls8Œov;œry?¿v|KÁz€RÃ~ƒRł‡adž‹_ɊŽgˎ‘l͑”wϕ˜zјš…ԝŸƒÕ¡£ˆØ¥§‹Ù©ªÛ¬®–Ý°±™ß³Žžâ¹ºšäœŸ¯åÁÁ¶æÅÅ»èÈÈËêÌÌÛëÏÐæìÒÓïíÔÕïï××ßïØØÛïÚÚÝïÛÛÞðÛÛÚðÛÛÝñÜÜÝñÜÜßñÜÜßñÛÛàñÛÛÝñÛÛàñÛÛàñÛÛàðÛÛãðÛÛäðÚÚåðÛÛæñÜÜèòÝÝêóßßîôââìõååðöèèý÷ëëÿ÷ììÿøîîÿøîîÿ÷ììÿ÷ëëÿöèèýõååóôââíóßßðòÝÝíñÜÜèñÛÛåðÚÚâðÚÚãðÚÚàðÚÚÝðÛÛßðÚÚàðÚÚßðÚÚÞðÛÛÜðÚÚÜðÚÚÛïÚÚÛïÙÙÛï××Úï××ÚïÖÖÚìÓÔéëÐÑåëÎÏàéËË×èÇÇÈæÄÄŒå¿ÀžãŒœ°âž¹Šß³ŽœÝ¯°’Ûª¬Ùš©‰Ö£¥ˆÕŸ¡„Ó›žјš|Γ—z̐“sʋoȈŒgƄˆ[Ā…WÂ|‚XÀw~TŸt{Jœqx?ºlt?ºiq7·fn/¶ck+µ_i'³\f"²Yc°V`°T^¯Q\®OZ®NY¬KV¬IU «HS «FRªDQªDPªDO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBN©BN©CO©DOªDQªFRªGS ¬IU ¬JV ­LW®NY®OZ¯R]°T^±Wa³Yc³\f!µ_i(¶ck+·fn-¹iq9ºlt9ŒovEŸsyA¿v}QÂ{€PÃ~ƒZł‡ddž‹cȉŽhʌn̑”wΔ—{јš‚Ó›ž†ÕŸ¡‹Ö£¥Ù§š“Úª¬–ܯ°¡Ý²³£à¶¶«â¹º­äœŸ»åÁÁžæÅÅžèÇÇÅéÉÉÍêÍÍÏëÎÏÔìÐÑØíÓÔ×îÕÕÕïÖÖÖï××Ùï××ÙïÙÙØïÚÚÝïÚÚØñÛÛÛñÛÛÝñÛÛÝðÛÛáñÛÛßñÜÜâñÜÜãñÜÜâòÞÞèóààìóááêôääíõççù÷ééÿ÷ëëÿøëëÿøëëÿ÷ëëÿ÷êêÿõççøôääðóááéóààêòÞÞéñÝÝãñÜÜàðÛÛãðÛÛÝðÛÛÜðÚÚÞðÚÚÙïÙÙÙïØØÕïØØ×ï××ÓïÖÖÕîÔÔÖìÓÔÓìÒÓÕëÏÐÑëÎÏÍêÌÌÃèÈÈÄæÆÆœæÄĺå¿À±ãŒœ±â¹º±àŽµ­Ý°±¬Ü®¯¡Úª«˜Ø¥§Ö¢€†Õž …Ò™œ€Ð–™y͓–z̏“lʋnȈŒiƄˆbĀ…YÂ|‚YÁyUŸt{EœqxG»nuB¹jr<žgo3·dm)µaj*Ž]g$³Ze ²Xc±V`¯S]¯Q\®OZ­LX¬KV¬IU «HS ªFR ªFRªDP©DO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBN©BNªDOªDOªDQªFRªGS ¬IU ¬IU ¬LW®NY®OZ¯Q\°T^±V`²Xc³Ze"Ž]g%µ`j(·cl*·fn0ºiq8ºlt>Œpw@ŸtzFÀw~RÁz€VÃ~ƒTł‡_ƅ‰bȉŽmʌs̏“v͓–{і™ҙœƒÔž ŠÕ ¢Œ×€Š•Ùš©˜Û«­€Ü¯°ŠÞ±²«àµ¶¬á¹º³ãŒœ³å¿À¯åÁ©æÅŬçÇDzéÉÉÀêËËÄêÎÎÎëÏÐÏìÐÑÖíÑÒÖíÓÔÔîÕÕ×ïÖÖ×ï××Øï××ÙïØØ×ïØØÜïÚÚÜïÛÛÝðÛÛßðÜÜãñÞÞæóààèóááëôääôôååýõææÿöççÿöççÿõææÿõååÿôääôóááèóààèñÞÞâðÜÜãïÛÛÞïÚÚÞïÙÙÝï×××ï×××ïÖÖÓîÕÕÖîÔÔÒíÒÓÓìÐÑÒëÏÐÍëÎÏÍêÌÌÈéÉÉœèÈÈžæÆÆ­æÃÊåÀÁ¢ãœŸ©â»Œ±ážž±ß³Ž©Ü°±©Û­¯§Ûª«ØŠš•×£¥’Õž ŽÔœŸ…јšÏ•˜y͑”|ˏ“pɋkȈŒcш]Ā…ZÂ|‚RÁyOŸu|MœqxB»nu:ºkr7žhp5·em2µaj.µ_i$³\f ²Yc±Wa°T^¯R]®PZ®NY­LW¬KV¬IU«HS ªFR ªFRªDP©DO©CO©BNšBNšAM§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšBNšBN©BNªDOªDOªDQªFRªGS «HS ¬IU¬KV­LX®OZ®Q[¯R]±T_±Wa²Yc²\f!µ^g&µaj'·dm/žgo6¹iq3»nu9ŒpwGŸsyH¿v}LÁz€WÃ|‚UĀ†YƄˆaȈŒoɋuˎ‘x͑”sŘÑ˜šƒÒš‰Ôž ’Õ¡£×€Š•Ù§©¡Úª«¢Û­¯šÜ°±£ß²³šà¶·€ážžŸãŒœ ãœŸ¡åÀÁ€æÃÄŠæÅŪçÇDZèÉÉŸéÊÊÃêËËÈêÎÎÏêÏÏÏìÏÐÖìÑÒÖìÒÓÖíÒÓØíÔÕÖîÖÖÙî××ÛîØØÛïÚÚàðÛÛäñÝÝìñÝÝøòÞÞÿòßßûòßßýòßßüñÞÞùñÝÝïðÛÛäïÚÚÞîØØÞî××ÜíÖÖÜíÓÔ×ìÒÓÔìÐÑÒìÏÐÕëÏÐÒêÍÍËêËËÄéÊÊŒçÈÈžæÆƯæÄÄŠæÁ€åÀÁŸãœŸ›á»Œ¡ážžßµ¶œÝ²³œÜ¯° Û¬® Ú©ª™×¥§Ö£¥˜ÕŸ¡ŽÔœŸÑ™›‹Ð–™…Í“–w̐“wʌuȉŽjLJ‹iшaÀ…^Â|‚ZÁyNŸt{KŸryFŒnuDºkr7¹hp7·fn2¶ck&µ_i*³\f ²Zd±Wa±U`¯S]¯Q\®OZ®NY­LW¬JV¬IU «HS ªFRªFRªDP©DO©CO©BNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@L§ALšAMšBNšBN©BNªDOªDOªDQªFRªGS «HS ¬IU ¬KV ­LW­NY®OZ¯Q\¯S]±U`±Wa²Zd³\f µ_i$µaj%¶dm/žgo5¹iq8ºlt8ŒovFŸsyJ¿v|IÁyPÂ|‚TÀ…bшgdž‹iȉŽrʋn̏“|͒•~Ř…Ñ–™…ÒšœŽÔœŸ•ÕŸ¡“Ö£¥•×¥§œÙ©ª—Û«¬™Û­¯™Ý°±›Þ²³àµ¶žà·ž¡áº»âŒœ›ãŸ¿œä¿À¢æÁ¢æÃÄ©æÅÆ«æÇDzçÇǹèÉÉžèËËÃêËËÃêÌÌÍêÎÎÑêÎÎÙëÐÐØëÑÑÝìÒÓêìÔÕôíÔÕñíÕÖôíÕÖóíÕÖöìÔÕðìÒÓçëÑÑáëÐÐÚêÎÎÚêÎÎÑêËËÉéËËÄèÊÊŸçÈȶçÆƱæÅÅ«æÃÄŠæÂÞã¿ÀœäœŸœáŒœšáž¹šà·ž›ßŽµ•Ý²³™Û®°˜Û­¯“Úª«’ØŠš×€ŠœÕ¡£™ÔŸ¡ÓœŸ‘Ñ™›„Ï–™…Í“–}̐“}ʎ‘uɋtȈŒoƅ‰gł‡[Ã~ƒWÂ{€YÀw~VŸt{JœqxBŒnu=ºkr7¹hp1·fn2¶ck)µ_i#³\f ³Ze#²Xc±V`°T^¯R]®PZ®NY­LX¬LW¬IU¬IU «GS «FRªFRªDP©DO©CO©BNšBNšBN§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BNªDOªDOªDQªFRªFR«HS ¬IU ¬JV ¬LW­LX®NY®PZ®R]°T^±V`±Wa²Zd!³\f!µ_i&µaj&¶dm3žgo3¹iq7ºlt@ŒovEœryGŸu|QÀw~QÂ{€XÃ~ƒWĀ†cшbLjŒqȉŽmʋsˏ“}͒•y͓–ˆÐ–™ˆÑ™›ˆÒ›ŠÔœŸ‹Õ ¢’Õ¢€Ö€ŠØ§©Ú«¬—Û¬­“Û­¯˜Ü°²˜Þ²³šÞŽµ™à¶·—භàº»šâ»»›âŒœ›ãœŸžä¿À€åÀÁ¢åÁªåÂìåÃÄ·çÅÆŒçÆÇŸèÇÈËèÇÈÖèÇÈ×èÇÈÖèÇÈÓèÇÈÑèÇÈÑèÇÈÊçÆÇÃçÅÆŸåÃĶåÂòåÁ­å¿À£ä¿À¡âŒœžâ»Œ áººœàž¹à¶·˜ÞŽµ–Þ±²–Û¯±–Û¬®•Ú¬­”Ú©ªŒØ§©“Ö€ŠÕ¡£ŽÔŸ¡†ÓœŸˆÒšœŽÑ—š†Î”˜†Í’•„̏“zʍ‘tɋwȈŒldž‹eł‡iÀ…^Â|‚[ÁyW¿v}IŸtzHœqxI»nu?ºkr@¹hp;·fn4¶ck.µ_i(Ž]g#³Ze²Yc°V`°T^¯R]¯Q\®OZ®NY­LW¬KV¬IU «HS ªGS ªFRªDQªDP©DO©CO©BNšBNšBN§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BN©CO©DOªDPªDQ«FR ªGS «HS ¬IU ¬KV ­LW®NY®OZ®Q[¯R]°T^±V`²Xc²Ze³\f µ_i(µaj)·dm.·fn-¹iq2ºlt=ŒnuDœqx@ŸtzH¿v}UÁyTÂ{YÃ~ƒWÇ^Ņ‰ddž‹jȉlɋqʌzˏ“|͒•€Í“–ƒÏ•˜ˆÒ˜›…Ò›†ÓœŸÓŸ¡Õ¡£Õ¡£Œ×¥§ŠØŠšŽØšª‘Ú«¬“Ú¬­”Û­®—Ü®°˜Ü°²›Ý²³œÞ³Žœßµ¶ß¶·¢ß·žŸàž¹¡á¹º¡á¹ºšáº»¬á»Œ³á»Œ¹â»Œžâ»Œºá»ŒŒá»Œ·áº»®á¹ºšá¹ºšàž¹¥ß¶·Ÿß¶·œÞµ¶šÞ²³™Ü°²•Ü¯±–Û­¯•Ú¬­‘Ú«¬“ØšªŽ×Šš‹Ö¥§ŒÕ¡£Õ ¢ŒÓž ƒÒ›‰Òšœ…Зš…Ï”˜€Í“–}̐”yˎ‘zʌvȉŽvȈŒmƅ‰fł‡jÀ…aÃ}ƒYÂ{€VÀw~PŸu|QœryIŒovA»nuCºkr<žhp4·fn3¶ck+µ_i+Ž]g#²[e#²Yc±Wa±T_¯S]¯Q\®OZ­NY­LX¬KV¬IU ¬IU «HS ªFR ªFRªDQªDOªDO©CO©BNšBNšBN§AL§ALš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BN©CO©DOªDPªDQªFRªFR «GS ¬IU ¬IU ¬KV­LW®NY®OZ¯Q\¯R]°T^±V`²Xc²Zd ³\f#µ_i#µaj*·cl)·fn/¹hp0ºkr:»nu=ŒovGŸryNŸt{K¿v}RÁy[Â{`Ã~ƒaĀ…dł‡gƅ‰idž‹kȈŒvɋwʌzˏ’v̑•͒•ƒÎ“–ϕ™…ј›ƒÒ™œŠÒ›ŠÒ ŠÔŸ¢ŠÕ ¢‹Õ¡£ŠÕ£¥ŒÖ€§‘׊š’ק©•Ùšª‘Ùª¬šÙª¬”Ùª¬›Ú­®ŸÛ­®Û®¯¢Û®¯€Û®¯¯Û®¯°Û®¯©Û®¯ŠÛ®¯ªÛ®¯­Û­®šÚ¬­ŸÙª¬›Ùª¬—Ùª¬”ا©•ØŠš“׊šÕ£¥Ö¡£Õ ¢ŒÓŸ¡‰Ó „Ò›‡Ò™œ†Ñ˜›…Ï•™Γ–~͒•{̐”zʍ‘xʌyȉŽtȈŒndž‹qшmÇiÄ„gÂ}ƒYÁz€ZÀw~W¿v|SŸsyIœqxFŒnuAºlt?ºiq@žgo4·em,¶ck.µ_i*Ž]g&²[e²Yc±Wa±T_¯S]¯Q\®OZ®NY­LX¬LW¬JV¬IU«HS ªGS «FR ªFRªDPªDOªDO©BN©BNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§AL§ALšBNšBN©BN©BNªDOªDOªDPªDQ«FR ªGS «HS ¬IU ¬JV ¬LW­LX­NY®OZ¯Q\¯R]°T^±V`±Wa²Zd³\f#µ^g%µ`j*¶ck1·em2žgo5¹iq<ºls<»nuAŒovFŸryNŸtzL¿v|OÀw~QÁz€`Â}ƒ]ÄcÀ…eł‡fŅ‰fƆ‹qLjŒsȉvɊyɌxʍ‘}ː“Ì‘•|Γ–|Δ—Î•˜„Зš‡Ñ˜›†Ò™œ‰Ò›†ÒœžŽÒ ‹Òž¡Óž¡ÔŸ¢•Ô £“Ô¢€–Ô¢€ Ô¢€™Õ£¥žÕ£¥ Õ£¥žÕ£¥ŸÔ¢€™Ô¢€œÔ¡£˜Ô £—ÔŸ¢“Óž¡ŽÒž¡Ò ‹Ò›‡Ò™œˆÑ™œ„Зš†Ï•™‚Δ—Β•~̑•{ː“xʍ‘rɋ{ɊwȈŒmdž‹mƅ‰oшoā‡eÄ„hÂ}ƒ\Â{€WÁy^Àw~VŸt{OœryOœqxIŒnuBºltC¹jr@¹hp3·fn5·cl/µaj(Ž_i'³\f&³Ze!²Yc±Wa±T_¯S]¯Q\®PZ®NY®NY­LW¬KV¬IU «HS «GS ªFR ªFRªDQªDO©DO©CO©BNšBNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§ALšAMšBNšBN©BN©CO©DOªDOªDQªFR«FR ªGS «HS ¬IU¬JV ¬LW­LX­NY®OZ¯Q\¯R]°T^±V`±Wa³Yc ²[e!Ž]g'Ž_i'µaj(·cl2·fn/žgp4ºiq9ºkrD»nuAŒovFœqxIœryQŸt{V¿v|TÀw~WÁyWÂ|]Â}ƒbÀ…bÀ…jăˆjшfŅ‰jƆ‹nLjŒvȉyȊyɌrʍ‘tʍ‘~ː“|̐“‚Í‘•Î“–†Î“–Í”—…Í•˜…Ε˜ŒÏ–™…Ï–™ˆÏ–™’Ï–™‹Ï–™ŽÏ–™”Ï–™’Ï–™‰Ï–™’Ï–™ŠÎ•˜†Í•˜ŠÍ”—†Î“–…Í’–‚Ì‘•„ː“Ë’~ʍ‘yɋ{ȊyȉwLjŒqƆ‹tŅ‰gшmā‡eĀ…iÃ}ƒ\Â|‚YÁ{WÁyZ¿v}RŸu|UŸsySœqxQŒovF»nuDºltH¹jrC¹hp:·fn7¶dm-¶ck3µ`j.µ^g&³\f'²Ze"²Xc°V`±T_¯S]¯Q\®PZ®NY®NY­LW¬KV¬IU ¬IU «GS ªFR ªFR ªDQªDP©DOªDO©BN©BNšBNšBNšAM§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§ALšAMšBNšBN©BN©BNªDO©DOªDPªDQªFRªFR «GS «HS ¬IU ¬JV¬LW­LX­NY®OZ®Q[¯R]°T^±U`±Wa²Yc²Ze"³\f!Ž]g$µ_i(µaj1·cl1·fn9žgo;¹iq?¹jrAºlsD»nuJŒovIŒpwJŸryLŸsyTŸt{R¿v|UÀw~WÁz€ZÁ{]Â|‚aÂ~„gÀ…fÁ†jā†kшjшkŅ‰rƅ‰qdž‹oLjŒrȉrȉ{ȉxɋ|ɋÉ‹‚É‹É‹…É‹€É‹„É‹…É‹É‹zɋ|ɋ|ɋ~ȉȉ|ȉwȈŒsLjŒodž‹rƅ‰lŅ‰pшgā‡dÀ…cÀ…^Â~„dÂ|cÁz€^Áz€ZÀw~XŸu|QŸtzQœryTœqxJŒovJ»nuCºltAºkrB¹iq>žgp6·fn;·dm1¶ck.µ`j)µ_i&³\f#²[e"³Yc"±Wa±V`°T^¯R]¯Q\®PZ®NY®NY­LW¬KV¬IU ¬IU «HS ªGS«FRªFRªDQªDOªDO©CO©BNšBNšBNšAM§AL§ALš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@L§AL§ALšAMšBNšBN©BN©COªDOªDOªDPªDQªFRªFR«GS «HS ¬IU ¬JV ¬LW­LW®NY®OZ®Q[®R]¯S]±T_±V`±Wa²Yc³Ze%³\f#Ž]g&µ_i+µaj/¶ck.·dm.·fn9žgo8¹hp=ºiq@ºkrEºltF»nuMŒovJŒpwIœqxMœryMŸtzWŸt{Y¿v|UÀx[Ày[Áz€[Á{`Â}‚eÂ~„`Â~„iÄkÄ„gÁ†hÁ†tā†lā‡tā‡rā‡văˆwăˆoăˆpăˆrăˆqăˆnā‡xā‡oā†qā†mÁ†jÁ†nÄiÄfÂ~„dÂ~„`Â|]Áz€`Áz€_Àw~X¿v|YŸt{XŸtzPœryOœqxRŒovQ»nuKºltCºls@¹jrA¹iq>žgp=·fn;·em8¶cl+µaj/µ_i.µ_i)³\f)²[e'²Zd ²Xc ±Wa±U`°T^¯R]¯Q\®OZ®NY®NY­LW¬KV¬IU¬IU«HS ªGS «FRªFRªDQªDO©DO©CO©BN©BNšBNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§ALšAMšBNšBN©BN©BN©COªDOªDOªDPªDQªFRªFR «GS «HS ¬IU ¬JV¬KV ­LW®NY®NY®OZ¯Q\¯R]°T^±T_±V` ±Wa²Yc$²Ze$²\f#³\f*µ^g.µ_i+µaj-¶ck.·cl2·em5·fn:žgo8¹hp@¹iq=¹jrAºlsAºltH»nuPŒnuNŒovOœqxNŸrySœrySŸtzVŸt{ZŸu|_¿v|X¿v}\Àx_Ày`Ày^Áz€dÁz€dÁz€fÁz€`Á{fÁ{fÁ{fÁ{fÁz€aÁz€gÁz€bÁz€iÀyaÀybÀxd¿v}\¿v|WŸt{\ŸtzQŸsyQŸryMœqxNŒovLŒnuL»nuEºltFºkrG¹iqG¹iq@žhp<·fn=·fn7·dm8¶ck8µaj5µ_i2µ_i'Ž]g&³\f$³Ze#³Yc&²Xc!±Wa"±V`°T^¯S]®R]®Q[®OZ­NY­LX­LW¬KV¬IU ¬IU «HS ªGS «FR ªFRªDQªDP©DOªDO©BN©BNšBNšBNšAM§AL§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§ALšAMšBNšBN©BN©BN©COªDOªDOªDPªDQªFR ªFR «GS «HS ¬IU¬IU ¬KV­LW­LX­NY®OZ®PZ¯Q\¯R]°T^±T_±V`±Wa ²Xc³Yc!²Ze%²\f'³\f*Ž]g,µ_i,µ_i0µaj0µaj0¶cl:·dm5·fn>·fn9žgo>¹hp<¹iqE¹iqCºkrBºlsDºltG»nuN»nuOŒnuMŒovTŒovRŒpwTœqxVœqxSœqxXœqx]œqxXœqxWœqxXœqxZœqx]œqxZœqx]œqx[œqxWœqxUŒpwSŒovVŒovSŒnuL»nuKºltIºltHºkrB¹jrD¹iqA¹hpBžgoA·fn8·em:·cl6¶ck7µaj0µ`j1Ž_i+µ^g,³\f(³\f'³Ze'²Zd$²Yc$±Wa°V`±U`°T^¯S]®R]®Q[®OZ®NY®NY­LW¬LW¬JV¬IU ¬IU «HS ªGS «FR ªFR ªDQªDP©DOªDO©CO©BNšBNšBNšAMšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšBNšBN©BN©BN©COªDOªDOªDPªDQªFR«FRªGS «HS ¬IU ¬IU¬JV¬LW­LW®NY­NY®OZ®PZ¯Q\¯R]¯S]°T^±U`±V`±Wa±Wa$²Yc$³Yc$³Ze&²\f$³\f+Ž]g&µ^g2Ž_i.µ_i0µaj3µaj:¶ck5·cl:¶dm<·fn<·fn@žgo?žgp?¹hp=¹iqG¹iqEºiqB¹iqJ¹iqI¹jrN¹jrF¹jrE¹jrL¹jrM¹jrF¹jrG¹jrM¹jrO¹iqI¹iqLºiqKºiqL¹iqI¹hpHžhp?žgp?·fn?·fn>·em5·dm5¶ck3µaj:µaj-µ_i1µ_i/Ž]g.³\f/³\f%²[e#²Zd#²Yc"²Xc!±Wa#°V`±U`°T^°T^¯R]¯Q\®Q[®OZ®NY®NY­LX­LW¬KV¬IU ¬IU «HS «GS ªFR ªFR ªFRªDQªDP©DOªDO©CO©BNšBNšBNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšBNšBN©BN©BN©COªDOªDOªDPªDQªFR «FR ªFR «GS «HS¬IU¬IU¬KV¬LW­LW®NY­NY®OZ®OZ®Q[¯Q\¯R]¯S]°T^°T^±U`±V`±Wa"±Wa"²Xc$²Yc$²Zd&³Ze'²\f*³\f,³\f+Ž]g-µ_i,Ž_i,µ_i0µaj7µaj4µaj3¶ck4¶ck5¶cl;·cl?·cl:·dmA·dmE·dmB·dm<·dm=·dm@·dmA·dmA·dm:·dm;·cl=·cl<¶cl=¶ck9¶ck;µaj2µaj0µ`j/µ_i1µ_i/Ž]g1³\f'³\f&²\f&³Ze&²Zd$²Yc ²Xc ±Wa °V`±V` ±T_°T^¯S]¯R]®R]¯Q\®PZ®OZ®NY®NY­LX­LW¬KV¬JV¬IU ¬IU «HS ªGS ªFR ªFR ªDQªDQªDO©DOªDO©BN©BNšBNšBNšBNšAM§ALš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšBNšBN©BN©BN©COªDO©DOªDOªDQªDQªFR ªFR ªGS «HS «HS ¬IU¬IU ¬JV¬KV­LW­LX®NY­NY®OZ®OZ®PZ¯Q\¯Q\¯R]¯R]°T^°T^±T_±V`±V` ±Wa±Wa"²Xc!²Yc'³Yc$²Zd%³Ze&²[e%²\f+³\f+³\f)³\f.Ž]g2Ž]g.Ž]g2Ž]g/µ^g-µ^g3µ^g9µ^g9µ^g5µ^g0µ^g2Ž]g+Ž]g6Ž]g0Ž]g.Ž]g1³\f2³\f2³\f-²\f(³Ze)²Ze(³Yc%²Yc%²Xc ±Wa#±Wa!±V`#±U`±T_°T^¯S]¯R]®R]¯Q\®Q[®OZ®OZ®NY®NY­LX­LW¬LW¬KV¬JV¬IU¬IU «HS «GS ªFR «FRªFRªDQªDPªDO©DO©CO©BN©BNšBNšBNšBNšAM§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšBNšBNšBN©BN©BN©CO©DOªDOªDPªDQªFR ªFR ªFR ªGS «HS «HS ¬IU ¬IU¬JV¬KV¬KV­LW­LW®NY®NY­NY®OZ®OZ®PZ®Q[¯Q\®R]¯R]¯R]°T^°T^ °T^±U`±V`±V` °V`±Wa$±Wa!±Wa%²Xc$²Xc(²Yc%²Yc$²Yc'²Yc-²Yc*²Yc(²Yc,²Yc(²Yc-²Yc-²Yc'²Yc*²Yc+²Yc)²Xc&±Wa$±Wa%±Wa ±Wa!°V`±V` ±U`±T_°T^°T^¯R]¯R]¯Q\¯Q\®PZ®OZ®OZ®NY­NY®NY­LX­LW¬LW¬KV¬JV¬IU¬IU ¬IU«HS «GS ªFR «FR ªFR ªDQªDQªDP©DOªDO©CO©BN©BNšBNšBNšAMšAM§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšBNšBNšBN©BN©BN©COªDO©DOªDOªDPªDQªFR ªFR«FR ªGS «GS «HS «HS¬IU¬IU¬IU¬JV¬KV¬LW­LW­LW­LX®NY­NY®NY®OZ®OZ®OZ®Q[¯Q\¯Q\®R]¯R]¯R]¯S] °T^°T^°T^°T^°T^ °T^$°T^°T^!°T^#°T^#°T^#°T^"°T^"°T^#°T^"°T^"°T^#°T^!°T^#°T^"°T^¯S]¯R]¯R]®R]¯Q\¯Q\®Q[®OZ®OZ®OZ®NY®NY®NY­LX­LW¬LW¬KV¬KV¬JV¬IU¬IU¬IU «HS«HSªGS ªFR «FR ªFRªDQªDQªDPªDO©DOªDO©CO©BN©BNšBNšBNšAMšAM§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@L§AL§ALšAMšAMšBNšBN©BN©BN©BN©COªDO©DOªDOªDPªDQªDQ ªFR «FR ªFR ªGS «GS «HS «HS ¬IU ¬IU¬IU ¬IU¬JV¬KV¬KV¬LW­LW­LW­LX®NY®NY­NY®NY®OZ®OZ®OZ®OZ®PZ®PZ®PZ®Q[®Q[®Q[®Q[®Q[®Q[®Q[®Q[®Q[®Q[®Q[®Q[®Q[®Q[®PZ®PZ®OZ®OZ®OZ®OZ®NY­NY®NY®NY­LX­LW­LW¬LW¬KV¬KV¬JV¬IU¬IU ¬IU«HS«HS «GS ªGS ªFR «FR ªFR ªFRªDQ ªDQªDPªDO©DOªDO©CO©BN©BNšBNšBNšBNšAM§AL§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@L§AL§ALšAMšBNšBNšBN©BN©BN©BN©COªDO©DOªDOªDPªDQªDQ ªDQ ªFR ªFR «FR ªFR ªGS «GS «HS «HS¬IU ¬IU¬IU¬IU¬IU¬JV¬KV¬KV¬KV¬LW­LW­LW­LW­LX­LX®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY®NY­LX­LX­LW­LW­LW¬LW¬LW¬KV¬KV¬JV¬IU¬IU¬IU¬IU«HS«HS«GS «GS ªGS ªFR «FR ªFRªFR ªDQªDQªDPªDO©DOªDOªDO©CO©BN©BNšBNšBNšBNšAMšAM§AL§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@L§AL§ALšAMšAMšBNšBNšBN©BN©BN©BN©CO©COªDO©DOªDOªDPªDPªDQ ªDQªFRªFR ªFR «FR ªFR ªGS ªGS «GS«HS «HS«HS ¬IU¬IU¬IU¬IU¬IU¬IU¬IU¬JV¬JV¬JV¬JV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬KV¬JV¬JV¬JV¬JV¬IU¬IU¬IU¬IU¬IU¬IU«HS«HS «HS «GS ªGS ªFR ªFR «FR ªFR ªFRªDQªDQªDQªDPªDOªDO©DOªDO©CO©BN©BN©BNšBNšBNšBNšAMšAM§AL§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@L§AL§ALšAMšAMšBNšBNšBNšBN©BN©BN©BN©CO©COªDO©DO©DOªDOªDPªDPªDQªDQ ªDQ ªFR ªFR ªFR «FR «FR ªFR ªGS ªGS«GS«GS«GS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«HS«GS «GSªGS ªGS ªFR «FR «FR ªFR ªFR ªFR ªDQªDQªDQªDPªDOªDO©DOªDOªDO©CO©CO©BN©BN©BNšBNšBNšBNšAMšAM§AL§AL§ALš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@L§AL§AL§ALšAMšAMšBNšBNšBNšBN©BN©BN©BN©BN©CO©COªDO©DO©DOªDOªDOªDPªDPªDQ ªDQªDQ ªDQ ªFR ªFR ªFR ªFR ªFR ªFR «FR «FR «FR«FR «FR«FR «FR «FR«FR«FR «FR «FR «FR«FR «FR«FR «FR ªFR ªFR ªFR ªFR ªFR ªFR ªDQ ªDQ ªDQªDQ ªDPªDPªDOªDO©DOªDOªDO©CO©CO©BN©BN©BN©BNšBNšBNšBNšBNšAMšAM§AL§AL§ALš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@L§AL§AL§ALšAMšAMšBNšBNšBNšBNšBN©BN©BN©BN©BN©CO©COªDOªDOªDO©DO©DOªDOªDOªDOªDP ªDP ªDP ªDPªDQ ªDQªDQ ªDQ ªDQ ªDQ ªDQ ªDQ ªDQ ªDQ ªDQ ªDQ ªDQ ªDQ ªDQ ªDQ ªDQ ªDP ªDP ªDP ªDPªDOªDOªDO©DO©DOªDOªDOªDO©CO©CO©BN©BN©BN©BNšBNšBNšBNšBNšBNšAMšAM§AL§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§AL§AL§ALšAMšAMšAMšBNšBNšBNšBNšBN©BN©BN©BN©BN©BN©BN©CO©CO©CO©COªDOªDOªDOªDOªDOªDOªDO ªDOªDO©DO ©DO©DO©DO©DOªDOªDOªDOªDOªDOªDOªDOªDOªDOªDO©CO©CO©CO©BN©BN©BN©BN©BN©BNšBNšBNšBNšBNšBNšAMšAMšAM§AL§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§AL§AL§AL§ALšAMšAMšAMšAMšBNšBNšBNšBNšBNšBNšBN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BN©BNšBNšBNšBNšBNšBNšBNšBNšBNšAMšAMšAM§AL§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§AL§AL§AL§ALšAMšAMšAMšAMšAMšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšBNšAMšAMšAMšAMšAM§AL§AL§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§AL§AL§AL§AL§AL§AL§ALšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAMšAM§AL§AL§AL§AL§AL§ALš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?Kš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@Lš@L§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K§?K€e?eQK (w * _ ]hQjQO" Œ kQ€‰€zJ@M@kZ„ @M@  €‰L@Q|81 õ Ì(„š9:9:$ r * 5ru * BrQ* ­u -WªQ-WŸ‚‚ -D ±F 9?% °F 9?,ZF €¿ÊÊQ-WF E SQu?p+†øà )u?)j? %4nQqQQ M #+/a3 'a&%a-W0'10( a€uQH@@BŽ)H@ @;pQtQn\ H$]/a3 'jXW‚‚j-GwjekB±ja 9?%0'10( j€vQF@B A‹)F@ yQD@?`)D@ C@Vl ž% wQA@Us _&2e996“eIâee× Õ>IHÕ>#€?€?6“H2WabLe 'H.‚wW*r.W*A@Õ9?ÿÿÿÿL` ž6“`«Í̌? Ae×`Õ9?Å,>IWabLe`'.rW*'( {QB@h>$)B@ W€yg=í {\?wµ#¥$)?)@@)E@)G@)I@)Q@)R@ €Š&~Q€‰Q€‰@R€xQCRRˆ ) €BRERP‰ %) €DRGRO‹ €) HR€IR€€FRKRG8 ¿)( LR€a€JRNRj• *žš‚‚-h -Q2„„š9:$9:$š9:$9:$ š9:$9:$ ߚ9:9:$µ‚w*±e9?,b«ÍÌÌ=e߂-TC w* I!M8š9:$9:$ Õ^oS'š9:$9:$ 6“SC-c6“^S6“^“‚wL*L-Y ž6“6“L o‚$'( OR€€MRC8± a- PRN³ - QR[M» y.R2‚²[9?%„r * -F À±[9?^V/NâØr  ÀX '~^@f r [B„-aš9:q9:$Iw~*UÕ«ÍÌL>>N6“U«6“U?TB,±6“T9?%¶6“T?a~ ×r U9PT}^@e r [B„-aš9:q9:$Àw}*a} ×r N9PN˜7%‚f-iwfV*afV P±¯oÍÌÌ=@ r 9D[^o AR€r €€€T|Q ‰€WR š|?}8˜Ÿ¡ YR š€RR^RTð U4\W‚›9:9:$ w *K -D JW aa _R€Œ€Š&]RDShw Ã@(aš™>-o(N nÿÿ ¿iÿ¿ÿÿÿÿC@qü w5 aRrþ –5 bRL ÿ ²5 cReRn è5 fR€€dRhRt  6 € gRjR@  l6 kR€‰lR€€Š&iRx7 ˜6 U@mRoR ÷6 pR€qR€Š&€‰XAnRcg .7)$„š9:c9:$š9:c9:$ a [R jrR3 £7baa@( L@tRvRw <8Žj ôHB«®Ga=6“m°6“9? þÿÿ19D¯9?&¬6“9?, # ZM6 M%6•M%a+Mo‚$a'((²a%j M€‰€uRw7/ :a((( xRI5 ž:š9:$9:$-l' tyRz?`; ø:H ›z?% &š9:$9:$jFFf-W-l'j sR zzRjH Ã;-lIa((( q@|R`O 9<5rL*o‚$33w.L*T e  "W}Rz1X z=Ào‚$<‚š9:$9:$°6“x9?%¶6“x9?ÿÿÿÿßÖÕ9?,x®H9?,Èf-o Ÿzjz¢7zŸ‚„—z,a –7°ÿÿÿTj wR€AS€x€‰€BS€£~R)f ?ÎH‚w\*°¯Z9?,\J0z‚-Kš9:9:$h €?ƒa@A(o‚$-o'Ìw *À -D JÌ a `RFSZ,€ žA €ESHS`† ^B;q!h1-Y-C3(-K'ßuo‚$-XB'  IS€Š&€‰GSKSn‘ ]C LS€€JSNSt ’ ‹C € MSL • ŽC -RC(  OSQS@ œ BD< šy?% ux?d :wu*~@u$ y?€‰{R ±RS ‰€PSr« ¿E/!‚w * -D< cB  tUSw?`Ž –FBšw?%cn((d %$ =$d$-{B(@ ÿÿ  SS ªVSYSD Ç H( €XSy,Ê 0H ZSz,Ë PH [SBÌ rH \ScÍ •H ]Sv?@Ñ ÄH-Yu v? WSA^SaSu Õ >I €`Sp7× bI bSdSo7Ù §I eS€@€cSgSZ.Ü /J hS€iS€jS€kS€€fSmS[.Ý òJ nS€oS€pS€qS€rS€sS€tS€uS€vS€€lSxSn7Þ K €wSt?m7à ¥K)t? fA€yS}Sf7á ÓK €š|SSe7â L €š~SATd7ã *L €@TI-ä HL BTDTD.å žL €@ETdCTGTR,æ ðL €@HTdFTs?Y.ë 7M(s? ,dR& #,es& ÿÿ zSAJTANTOTPTQTr?RTR&ST‰TT‰r?‰MTMo UTt‹ J@LXTn)q?TSF9í  T@L\T@WTl, ØCl7JF%A–FlFJt¥F €LTA]Tn~,”Cn7J{%A–{n{JM¥{ €€€_TA€gThTo?dTA€'p?iTAoTpTrT@qTsTtTuTvTwT‰xTyTzT{T|T}T~TT@UAUBUCUDUEUFUGUHU‰IUt€Ul?AvALUAMUAQU@PUšRUSUTUUUVUWUXUYUZU[Up?AoS4 \UnTE ]UuUW ^UpXp ai?$ _Uq\± ah?$ `Um`ó ag?$ aUcUsdB at$ €bUrf} @dUZj°#at$Rk?$ @@ eUgUI7p8n? €pfUf?H7xØÁåuw|h7A7A’7A&6shAaf? ××× Õ6kuÕ6žkwÕ6“k|'6shAa*6o?hAk €–cJUE9‡³Ÿ €‰oQ`?B ‡AÄ )`?)_? &4€mU€‰ hUG@„} aG%Q–G7AGw6sGA*6sGAk¥G7A%  sçTestObj.Test rU@ctU@csU‰vU@cuU‰xU@cwUzU@cyU|U@c{U~U@c}U@V@cUBV@cAVCVc–DVc–EVc–$*",ûyk¢åø AZRQ  ""@ " "@ ^K @ ÿýû÷õñîëæâÞÚÖÑÍÉÄŸºµ°«Š¡œ˜”Ž‹†~zuplgb]XSNJE@;72-)%  @@ÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿ"""ÿ&&&ÿ(((ÿ***ÿ...ÿ///ÿ222ÿ666ÿ888ÿ999ÿ:::ÿ;;;ÿ===ÿ>>>ÿ@@@ÿCCCÿDDDÿFFFÿGGGÿHHHÿIIIÿKKKÿLLLÿNNNÿOOOÿQQQÿRRRÿSSSÿTTTÿUUUÿVVVÿWWWÿYYYÿZZZÿ[[[ÿ\\\ÿ^^^ÿ___ÿ```ÿbbbÿcccÿdddÿeeeÿfffÿgggÿhhhÿiiiÿjjjÿkkkÿlllÿmmmÿnnnÿoooÿqqqÿrrrÿsssÿtttÿuuuÿvvvÿwwwÿxxxÿyyyÿzzzÿ{{{ÿ|||ÿ}}}ÿ~~~ÿÿ€€€ÿ‚‚‚ÿ„„„ÿ………ÿ‡‡‡ÿ‹‹‹ÿŒŒŒÿ“““ÿ”””ÿ–––ÿ˜˜˜ÿœœœÿžžžÿŸŸŸÿ   ÿ¡¡¡ÿ¢¢¢ÿ£££ÿ€€€ÿ¥¥¥ÿŠŠŠÿ§§§ÿšššÿ©©©ÿªªªÿ«««ÿ¬¬¬ÿ­­­ÿ€€ÿ[ZZÿ]\\ÿ^]]ÿcbbÿihhÿmllÿonnÿpooÿBAAÿCBBÿEDDÿHGGÿLKKÿNMMÿONNÿPOOÿSRRÿUTTÿ433ÿ544ÿ655ÿ766ÿ877ÿ988ÿ:99ÿ;::ÿ<;;ÿ=<<ÿ>==ÿ?>>ÿ+**ÿ-,,ÿ.--ÿ/..ÿ0//ÿ100ÿ211ÿ322ÿ%$$ÿ&%%ÿ'&&ÿ(''ÿ)((ÿ*))ÿ ÿ! ÿ"!!ÿÿÿÿÿÿ200ÿÿÿ(&&ÿ)''ÿÿÿÿ ÿ!ÿ" ÿÿÿÿÿÿÿÿGV$*@(·ÿ"ʌ9¢åø AÓ  " " " " âS @m„•ƒiÏ^ÒȓˆÝouñ|fї~ŠÍâLJá“fãhˆnn‰òØè]ÌÀa}§Ÿœ’¥ŽdÕxîçççÓ{Î~ŒÆâÖnâÔ~—ÑÝÏñçøçÚÞ\º¹ÔÈÌw‘ápހmÊ Îøø÷ƀ׈•ÊܞŒÙÑÖ£hgÁÍÔdoâuãÅԍ–ÏÜâîççäÝØã˜ËñŽŽÙ¥r≖’`Ÿ|øçççÿÚ_ÌëâÙæÛçvš‘ÓÉÐ÷øèæåàéêèçööëëæ»~—nò|Èøáùêëùöøçèøçèç|Š‰–Ï–nl…êüüùççççèçøèáj¥yÎàz‹öûëøèççèèççèÿóõ{}О¡xÂßêëèèèççèøøøèýìííæÐÐx‘¢‘÷èøççççèøççøüëëêèÐДçèçèçççèçøçøìþðèäÐГæççèççèèøøèèïôú…†ÐžÓÔÔÓÔdÔÓÔÔÓÔi•§™™šššš››››šš™™‰ €–0[V (×0J$L& @LVšc?NVs  €MVr! OVo3 PVnD QVuV RVpo aa?$ SVq° a^?$ TVmò a]?$ @UVZ"I+a!vac?$RA$ @@ VVV )ÞVJ$L&  WV@1X~AA  j@YVw ?a @]VZ"V#aL?$RM?$ @@ ^V\?_Vmÿ aP?$ `V[?tVqœ aO?$ aVZ?bV‰cVŒdVeVfVgVhV\?€iV€€kV€‰oVq‰CqŒUf8v<ž Tq€€xVp| aN?$ €H 5XuVH9s❠yVuc {VnQ vVV?d62š )V?)U? |Vo@ EWr. WzVT?1Cp¢7T?n˜7%kw *I. _‚ -D wI*^ Ik aa €@W€AW€‰BW€‰I€Š&€v@}VS?xb» 7çppppKVehicle(9V) Encroached By: 9VS?. L?~Vs DWw+fb  FWu-jJ  GWR?U oš -R?-c '-e '  šHWQ?V w1 -Q?-c (-e (  @IWJWG_6‚ yaG w‚‚‚‚rW* wa*a-Daa!YGN}G MWR&LWb~•äXb-3'b-Y (b-Q 'ba+9Pa#€¿ ÂOWJ}£"éWJWa(((W-Y(W-Y(W #Wo‚$Wa*r.J rZWarrkrerq!Y~r PW€QWA^ ăDA-3(A-Y 'A-Q (_ %-K' ÂP‰TWF?` àí  rW*(W-Y'Wa'''-g(f%Ƃ–f7B ò-g(|× afB›waC?B?| (*ŒŽWa |Œ-g'¥f<‚-g -F?çCould not place driver.W-Y(Wa((((^. ^ ^^Z^ kW^ eW *WcW-YW-YW *#€»FWo‚$Wa**W*xH-e (-c (' UWP‰^€WWP‰YWP‰aWD?bZëš)D? ZWPŒ\WPŒCBVW@?s 6X]x. 3„rx*wx#(@?t× a#ÈÂÈB_ Ht¥_ ‹-Ko_ “o,t#i%ؖioßtiH¥i­Þt9?oš_ ,_ %-K({×ta#Ä>YwaN~>{t(# A A A*{N' ]W@P^W}>A?aY»š)A? `WPt€€dW€r bWPfW€‰hW€‰ _W@eé#YwW*Wa2wR*ŠR@QwC*aC    UjWlWOw™%^T‚-Tš9:9:$-O` (T-OçCouldn't Leave - staying in!-T(  O€nWiWz-Pi™ EYv-L©˜ tW @sW@kgW‰@ÿÿÿÿmffÿ---ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðîÿÿX=ÿŠ8'ÿ…-ÿÿÅ=ÿŠ€'ÿ…fÿÿúîÿ=ÿ‡ÿ'ŠXÿ…Fÿîÿõÿîöÿÿ'bŠÿ=–ÿÿN…ÿÿîûÿÿ=ÎÿŠ'†ÿ…kÿkuWR¥vWR›wWRxWRyWRzWR{WR|WR}WRŒ~WRWAX@f@XšBXfCXfDXfEXfFXfGXfHXfIXfJX KX LX MX NX OX ±PX QX RX ‰SX TX UX ‰VX WXiXXiYXiZXi[Xi\Xi]Xi^Xi_Xi`XiaX o)bXFcXFdXFeXF‰fXFgXFhXFiXFjXFkXFlXFmXR›nXRoXRpXBqXB‰rXB‰sXBtXBšuXRvXwXxXyXzX{X |X }Xm~XX@Ym{x\ AY{>I6{ ){> qW‰aBY] ~€æq] %o–] 7mew] m*ew] mM%*z] mM%¥]  y>r-IO˜ pDYGYàIT%G–T7m=wTm*Tm¥T HY€T€€‰FYz>G6—†PS%N–S7mDwSm*Sm-P,-z>¥S CY‰IY€‰PRLY€‰NY€KY‰€w RTYQY]C@— WY\B — PY‰UY‰^Y[?‘– MYYYb%‚ww*ÿw[=! €XXY@#ŠXq MZYq)ÍSM‚‚w*w.{*r.{f.{f*a** [YH.3ªÿa!Wq!W VY‰sZv>Z>`–)v> ]YŒ_Y‰ju>3Eb` dPŒ0s> iÞ <0Q:-PX 9D¯6®x6­x cYfYxƒ‘ ,a€?bq!A nÿÿÿþÿÿÿÿÿÿs>r}3  ŠeYH€\ ŠQ6­x dYjYAw ÿÿÿÿÿÿÿÿÿÿ£)Ž4 £a¬k9?X 'r ihY`•Ž JQö®¬¯6®x6­x9?X Q6­x6®xr hiY›Z q!w gYnYwÍÖÿÿÿÿÿÿÿÿÿÿ£)Š a¬k«w>9?X ' ilY`­š q!A hmYÁ_ºUbQö¯Q¬«x>¯6®x6­x9?X 6­x6®x—Qö¯Q¬¯6®x6­x9?X 6­x6®xržŽQ6­xq!W kYtYWÝ2ÿþÿÿÿÿÿÿÿÿu>qYY Ñ  €_ ipY`Ñ hrYÑ, £sY)ÕYW£a(O‚w.{*r.{f.{f*{ vYB.w€? wY€€zY{Y|Y}Y‰~YŒY@ZAZBZqCZq‰DZq‰EZq‰FZqGZ qHZqIZ @oJZq@qKZ‰yYN,#% LZNZt,&k €PZŒbYPŒTZr>QZPUZq>VZ‰WZXZYZZZ[ZŒr> @o]Z^Z0_Z`Z@0p>0©SZPaZPddZ0‰fZ@AeZšiZ@AgZškZ0n>bZ@PhZT 0m>jZlZdmZdnZdoZŒrZ00tZi>V= –)i>)j>)k>)o> wZU:X• @E€~ZvZT9/• uZ@ExZ@ElU|=m+ˆŠÄ )|=)a= '4|Z0T0B[c>Q8•)c>)d>)f> o[@X }ZZX @D>D[a>P5q”)a> @[@A[F[_>N49”)_> €R[E[M0‹“ C[–@R!G[@Z-H[L[AšVAšI[@LJ[©M[@LN[O[LTYT[Z>K/X“)Z> P[2šY[V>I-“)V> S[2šW[‰Y‰U[2šP>T>F+ْ )T>)U> M ŒX[J[[J\[J=€C _[C(*’ €c[d[bO>b][@y^[e[ yf[yg[yk[a[A%à‘ h[ym[K>$¬‘)K> j[yw[J>}":‘)J> rD>F-G-H-q[Ls[@Lr[©@Lt[{;l>q˜q!-O'o‚$ ju[3ŸzË!Ú#-E( ³š9:9:$ššl%Ž-Ep±áØF  9?,a F {F  a+i-E(¥¥ÚF  -E'°-E(ÉF  i [I>|!‘)I> B>@x[oF>H5èh!?^9=û9:F>%“,&9:^TE>9:^SC> V!y[@{[z[~y-òF"ç~AA^M Šld‚—9:^%–9:^9:~o9=“9:^&å©‚–9:^“9:h>&—9:^9:~o9=’9:^&å傚l%›9:9:$F  i  C\H>z Ő)H> ~[G S ?%qG SowG *X‚wG *rG SG b G G T €@\tS!J&Áa[>$<W>5wi*idi**]wF*F{ -h'S t{®wt*—t-h ttgvLV J\A\yŒ B\P;¢(Na]>$<\<Y>FwF*Fv S  D\vIÅ)\-Q'-g(o$b€?a^>$<VZwg*gv E\[Wý*z-Q(-g(o9=ú%“9:^&b€?a\>$L\<X>xwg*g[ Z F\]lk-fKÿ\!/a0 r]\J7m’7m&“7m&m]10€›9:9:$‰š9:9:$a€@'’a€?'€–9:9:$ ӛ9:9:$F  iZ ^9=û9:^%“,&M a Ø×W9:^T a+a<Y9:^SKþS !S N{*g*u!C Z©0G\f ¡1Q-K/a9 +fNPOf-Kfq!fa*10Ê-T{/a9 +fÆłwfþfS S f{fgggf10r{*/a9 +f ‚wfþfS S 0 10{ P\A>w\)A> I\oÇN4,-O(q !*wg*go K\mÑþ4`-O(D„-T r{<–9:^9:Aq !MDq !t^wg*gm yL\ZBäI65 rZ*(…„‚w.Z*r.Z *Za/!\Z,1'*Z  # Z(ÑZa/!XςZ-P rZ*Za(„„Za/!bZa/!R8Za/!R Za(c›S%Z01SZ  # Zs.Z1‚‚ws*ws *sdÂÿU!lZ1‚‚‚ws*ws *wsLrs Ss ^ ( €s€S\N\v$ H\ZjU\3¿}i [\@>t÷)@> \^}=1?§?}‚-D³9?}=`>l‚w.bw *rw Mw m w 0} Y!0a€?'}.' €X\€‰Y\€‰€Š&V\€e\z=sŸ )z=){= Z\€ttb\Q ‚7Eÿÿÿÿÿÿÿÿÿÿq?x=rlyCD_.x=/‚›9:T 9:$ r_* i*q!Q !M \\€p\_\{,à%  s^\J{ãD v!r ra\A€ E u!r t]\g\P ¡ÖG€ÿÿÿÿÿÿÿÿÿÿ^pl‰ºEm$‚›9:T 9:$r.p* 8lpi*.p zq!P !M ~]w=pm )w=)y= sd\Jš†G v!l rf\AŸÁG u!l tc\m\kž™I@ÿÿÿÿÿÿÿÿÿÿpv=šyH>iv=u=0wi*ihq!k!M €j\€si\J±CI v! rl\A¶I u! h\o\SËnKx-h(%±b9?%-g'abva-PNwi*id[a-S tOMÿÿ@ÿÿÿÿÿÿÿÿ`pt=ÂoJoit=s=0wi*iha„š9:^%–9:^9:Aq!S!Mmq!S!t x\k\v s$  €n\y\Cü@O€-h(%±b9?%-g'abva-PidS-Aq![a-S tTMÿÿÀÿÿÿÿÿÿÿÿhpr=ã%ME¥_ir=q=7wi*ihq!C!M q\€@t\€Ps\p=Oì NLŠ_J˜_%_%ip=o=ihq!C!t u\€R]w\s 3 £v\)ù#O _% r\A]O *œR„-h(%±b9?%-g'abva-ag>[a-aRW-Aq!hwi* !M t6MÿÿÀÿÿÿÿÿÿÿÿlpn=ïP+¥_in=m=q!O !M €|\€P{\\OªQ5Š_3˜_%_%i**q!O !t @]€€£~\)'R _% z\F]N _îVˆ-h(v!l,±b9?%-g'abva-PK-Aq!U-K[a-Su!l tUMÿÿ€ÿÿÿÿÿÿÿÿp^xlG€Tq$‚›9:T 9:$r.x* 8lxix.x zq!N !M }\€b?C]hWjV -K' d?E]d[˜V-K(*q!N !t wB]o XvsX•“‚‚Ž6o 9?%Ž6žo 9?%Ž6“o 9?%o × Ö×××%}&},},}9?,6“o ®6“o ¬p>9?, D]€K]_e)N]_J]_M]$*kÿ*Îÿÿÿ"ïÓØt¢æø AÓ  " " " " ƒ“ @ @€ÿBÿ{ÿÆÿ{ÿ÷÷ÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿO]_P]_ H]k Ü U]G–S]GV]GW]G–X]GY]G–G\]Ej=g=cwŽ ]]Ei=^]E_]E`]Ea]Eb]Ej=Ef=f=[]q,x·ÿÿÿÿÿÿÿÿÿÿe]h=f]g]h]i]j]k]‰l]m]n]‰o]Cp]q]h=s]~coV v]Me=w]‚x]‰y]žz]ž{]ž|]M–}]Me=MA^k=o" )k=)l= D^t]o,pYÿÿÿÿÿÿÿÿÿÿ@ck) H^c=l֎ )c=)d= Yz&pb=M ô)b= @^n,l,ÿÿÿÿÿÿÿÿÿÿ€€\j he#’d\hcfhaÑpAssociatedActor 9Vp(žfch(€@f J^F^k%Ž €–e^`=jü)`= G^P^j<=`ÿÿÿÿÿÿÿÿÿÿZ_=8-_p 8_= @Y báY  zL^^=k2©p k^= zZ]=B ‰ÓÄ )]=)\= (4£N^d)9/a3 d8d10 €u k €Um^R^OåÑçptime=9Ub tt*d Z#€?@@@G #@€@À@ ÚZG  ÙZG  ÙZ#€?@@@ !ÙG #@€@À@ "Ú#€?@ @Z #ÙÔZ9?,G  $ÙZÖG 9?, &ŽÃõH@ÃõH@ 'µÃõH@9?, (zTimTim ){TimBob *Ù#€?@@@#€?@@@ ,zŽsxxTim -{Žppp123 .zŽbogusE Y 0zŽxnum345Öxnum999 2šE ç 3›E š 5ò-E' 6ò-H( 7ò-P' 8ò-V( :ò-E' ;ò-H( <ò-P' =ò-V( ?ò [-E' @ò [-H( Aò [-P' Bò [-V(n Ÿ Eòn -E' Fòn -H( Gòn -P' Hòn -V(k Ÿ Kò[k -E' Lò[k -H( Mò[k -P' Nò[k -V( PšE  ,{n ,{[k ,{-sa  Vò-s(@ V çAll tests passed Oj [= bj  W^DX^DY^DZ^D[^D\^D]^D^^D`^@D_^a^DDj V^ ¡j  X€–k^Y=iˍ)Y= g^;a ;€‰€ f;n^X=g ‘)X= Dp^g,”Æ q^Fd ñ"ŸFTimE,E %% ö(? 5,-r'? ÿÿ ü(? ÿ-rF [ (z lxyzzy (z ÿÿ-r(z -rçtestswitch succeeded s^V=e 4 )V=)W= U=;€G)u^Gtè€.-dG-dG-d-d eR=R«É4 kR=Q=O=N=K= y^S=c ߌ)S= €»v^Db ÒÑ 5D&x,T,VDxT ՚D, ՚x, ՚T,VDx ؚD, ؚx, ؚT,V xT ۚD, ۚx, ۚT, V ޚD, ޚx, ޚT, VDxT ášD, ášx,  ášT,çTestOptionalOut ok! E_M=VË} (ŸM=9?,MM,¡LL x^;W;I=t^b •Œ {^f|^f}^f~^f–^f@_fA_f–B_C_D_X'I_yf,œt bçTestContinue/a0 yOçpactor 9VyGr.ly*1Oç...10çDoneContinue G_;O40X,¶ Ê*-y5'!ÿu!qu(q!T8  O_[ e,®œ ~çTestContinue¥[ çpiteration 9S[ Y„„š[ , š[ ,  —[ ,`ç...—[ ,çDoneContinue €H=L_e8T  €K_N_c8U(  €T_Gd, Ó nçTestContinue\˜£G,çpiteration 9SGR„šG, šG, Yç...çDoneContinue Q_F=_Œ)F= ‚R_^܋ - U_]‹‹ mD=ilÒ ;9rD=W-G /a3 o8G o10 \_}c,’ ˆçTestContinue}%v–},çpiteration 9S}e„„š}, š},  š},lç...¥}çDoneContinue c_\ÿd‹ pS_W_y· CAµa 9?%-G-GA‚-G rW*Wa p X_€€ZV_k8ƒzfZkrk* c‚‚-P=ka/!grk*kh À? ‚-L=Úd#¶š9:k$9:$ßk d‚ka/!Q š9:k$9:$ko‚$ßk d<-G1k-^4ka G kd‚-Xklak €Y_Pa¬öÀdö««‚šû7PH¯9?,ú«?õÄ6“P ÍÌÌ=€?†wf*af$d†wP*bdŸwh*NahŸwN*N Cd ^_R‰s < ‰šR,{ ŠšE   ‹štR,+R  €`_a/!ç!!END s_s.4 [ Z#€?@@@  o<Ji<O V #£‚6O @6žO @@6“O €@ &ÙO #@@@€@ 'Ž6“O 9?, (Ž6žO 9?, )Ž6O 9?, p<d 6 ÛÓXQ~d .P›Qÿÿÿÿd êd ““}d Q&Q~d .d  jl_D Ä;jk99E9‚-o<µ6“k9?%I#€?D vwD *C vëwC *ÔwC D yâØC   D   È°ÛyI9?%Ýy9?ÿÿÿÿßIyC C ~!fD D ~!PIâI9°ÛI#€?9?%ÝI9?ÿÿÿÿ Q€@€@W u_wF 0ë /a3 {KJ‚‚w{w{-C{-A0'10ïw_*„„r_ *_-C_-A r.P_ K*)w.P_ KB_*‚w_* w_w A`k . -f)\-f'+(BB\-f'e° W\W(Ž W\W©± \(‚‚Ž \w.\*%w.¬.\e*(' € MaHaN nÛ h €@[aKw VaWaXaYaZanfaEh> z oa@w_*_)~ _;_a;b;c;d;e;_ €hb\;} l’ *&‚w_*_ } \;'( cbX;k3œH)X;)U;)T;)O;)N; ö ibY;Tf &$w_*_TY;Z; kbV;a`€ &$w_*_aV;W; €obP;tY° 95‚w_*$_tP;Q;R;S;'( €gbj3Ÿ} ü mbJ;yÄ@)J; ubK;c Rž40‚w_*_c K;L;M;'( €nbI;i3ÈØ)I; €€qbG;h3ËW)G; ybH;{F7$ w_*_ {H;( €tbF;g3̶ )F;)C; €}bD;:ì)%w_*_D;E;' €wbB;f3Í )B;)A;): €Ac|bg 0Ä%!‚w_*_g '( w€@€{b~:e3Γ )~:)}: Gc~b| %/'r_*wpw_| w €!€@cEcd3ÏÑ  €!Dcy:c3Ñ! )y:)x: Kcz:C&.*w_*_Cz:{:|:* u€€‰Fcw:b3ÕÕ!)w: _bk ²/r_*_b-_ k b €Jcu:a3Ö")u: €@€Mct:`3Þp#)t: Zc€€Pc_3ã$  Scs:^3åT$)s: e€Tc]3çƒ$ Wc[3è³$ Xcr:Z3ëU%)r:)p:)f:)d:)c: €x`:q:T¿{q: %g:v B&)r[*o:p[Ie:v ~,Ur[*šš[c&h:[Iv Õ,‘r[*Ÿre*pšš[Ii:.~e|j:v ,èr[*p[Ia:v ,`:v ,lv +,Pv 9,k:v W, š[Il:v e, m:v s, n:v ÿÿ  €h^cvjlö2~Õ>#€?€?6“~2~ ~€‰€Ycb:X3ìÐ%)b:)_:)^:)]: ]cmXtY÷\)š9:9:$-~-X:SMš9:9:$-~'Sw‚w*N-~'S«Ùm -~°¯@ 9?,Sê‚w*%°¯@ 9?,-~'SGy rG*-~(S-~±Û99G ØmG#  -~ €@bc‚cc€`c\:W3î&)\: dc€fcV3ð°& icIñÓ& jc{8óç& xoc[:Tû[:%,V:  €¯€V:u šH|NEEDPW%)|WRONGPW&C|GAMESTARTED,,  €`@rc|++&w*I69V €@pc€€ŒJdscP+t@ 9?z  fwcN4ž,( €vcR:m=†-Æa+t ‹‚—6•6•V–6•“6•Vo–6•€6•t 6•V‹6•t “6•VÄw*6 t %a+t a R: Â;€sdS:wÚèƒ)S:)U:)W: xcuxS¹/>a+u<w*6•u%6 u%a+u Â;yc€{cP:{^›064w*`P:O:q!h Â;|c€~c€}cAdh8p,2 Bd€Cd€Dd€šEd€‰Fd€‰€@dHd+rO2 €@c€YdIdM+oë^9  N:LdI§3 €KdNdGƒÑ38'„r*r* € €Od€Pd€CL-€ò5 Qd€Ud€'€FWdg8©7 Xd€'€ydSdK+j1]9  [d€‰€€–^d€‰_d€€G:adi8¬š7 bd€€`dddE-­Ý7 ed€‰€+cdD-®ö7 fdC-¯8 gdidE²o8 €hdC~µð80.‚wC* wC[ C9?E: \dE:€‰kdod€Š&€‰jd_¹l9 pdrd}º®9 €'tdF:qÙ‹ƒ)F:)I:)J:)L:)M:)Q: Kp×؂ I|Õâ;42zI[ n udJ[Û“<p9„„r*rJ*r9*("j J9^ md€dwdJ+eÈy  €–zd€K}d].P@' ~d€!€Oe{ds \ y  { €We@:kÕ^‚ )@:)A: G€€9z"C%w*-w'q!U Dew)|C q!U Â;DEeGeP,ÉC € €€LKev @)E$ Le€€Je~9A3E¶E!t~9z9y9x9 ac}9{‹,úB6¶b}96·b|96²b{96³br9 [eY q SC ÜEwY a*Y a{ Ÿtsroڂ‚-{wY e*wY eb *Y eb1<h TtsroÀ@Y er  €@x9€Pe@ReUe€€w9ytV€GNe f  PSLwP*åw.P*•„þt9!R-} PEyMf vââry9P9PEyMf v55‚þf ![#„rM*rMPPqf vPPT& BxZeHejÒè SeXe€Ptu9iѹ )u9)v9 xYeF+H\   €€@_e€`e€ae€€s9ceqh«J de€ee€€bege{2o„K( he€ie€€fekez2tÉK( le€€je} y2ƒBM-ê±6“j ®6“c 9?,@[c 6“[6“j láØ[j ¶} ¬láØc j i t[j } } mi 6“m6“i ®6“i ¬«¯6“c 6“j áml i tc j } } %-m9Õ} âi +i  €T4teneq-́ €€@[€‰Nfi9E+2 Ti9j9k9l9  Afh9gÉƀ)h9 ‚ueveye€!€jwe€+ze@|e€€+b9]p¡óOÚ r* b] V%]–V,SrVa*Va] ¥V#V%ؖV,αáØ  Va  áØ  ]  Va] ¥Vd }e€|fa9eǏ€)a9)f9)g9 e`9bµyQ`9 F @f€ €BfQ,º*R EfGfp8ŒaR Hf€€FfJfw8œ€R €IfLfl8Ÿ×R €Kfr8¿-S zfCfC+)% Pf€Qf€Rf€‰Sf€Tf€‰€_9VfkÅþSrM\9M* Wf€\9€]9yxŠF[f€€vfU©^f€ €Y9`fn˯T af€€_fmÏÐTT$k $ bfdfmÕ'U ef€ €cfgfkÚhU hf€ €zkf€"lf€‰mf€€Œifpf€qf€€‰nfU9V9jœZ\ Â;tfS9L2&[ýtûwt*¥N7—Nè UatŸS9ä”r*5. tGââw. t5. tu tt Â;FgU›{wfufP9i0m]3g¡P9 Š1wg*fg Bxxfg€@F9Q9dÆ/€ )Q9)R9 yf~fJ27 ^' f€€T$*?.ÿ*Íööÿ"óp\Þ¢ãø AÓ  " " " " Jí @Éæ汩±þØ}Š±©;í©Š©ŠÅ+¡¡”z¹Ֆˆ¯·¯ ·ªªØq©¡,©©ªØàûÐÓÐÓÐÓÕÜäìõÝŠ¡L§ggdz z[[pÈ §,Ì}¹R©# Ù^Ȉ¥¹z·”ª#NÙÜ;Ȉ ·r¯;”·Œòñ,·žr¯r–#ˆˆ^¯r ñ··ˆÆºüôêêêêßßœÓÔÔßѶÊÊœÓÑÓœÑÙ×è×èê×üZP8("   ("-87(!.AêüC{{tk]TC88" "!8:PZêü{l]TAA=<-$"" !-8:Têô]PPCF8¢ÿ"Ž-oð¢ãø AÓ  " " " " Žü @ 2_ŒžÅǺˆ_2 XšÙááááåááãٚQI±ÞáãàÅ¢¡Åàááڞ@ oÍááÕw3ìììììì:wÕááËfšáá¹]ììììììììììì^ŸáᏠšáá *ìììììììììììì1±áä“páá„ìììVzš¯¯šuSìììì(ªáäfJÏá ìììN©×ááááááכBììì(±áÊ>)±á».ììì}ááÜž—y{™žÜáßrììì5¿ážXÝá]ììì}äáÄ[&ìììì&dÌáámìììjä×JšäÕìììUááŽ?ììììììììD¿áÝ?ììÝä/Ùãwìì¬áÄ7ììììììììììRÕá•ìììŸáÐ_áß3ììZÚÜ\ìììLœœœž;ìììißÓJììKááMŒäÅìììxáµ&ììHÕéêêæÃ5ìì4Áàhìì Üäažá¢ìì€á™ìììÆëêêêêé°ììì¬á‚ìììºãŽÅáìì¶ã{ìììœêêêêꜜììì”áìì­ãŠÇáìì¶ä{ìììœêêêêêêœììì‘áìì­ã§œá¢ìì€á‘ìììÎæêêêêèœììì¥á…ìììºäŽŒáÂìììxáµ!ììWÕéêêæÌGìì,Ÿànìì Ùäb_ãß:ììV×Ýcììì>·œœ®6ìììlÜÒEììKäáM/ÜãŠìì«áÌDììììììììììT×á’ììì¡ãКäÛìììGááÂDììììììììTÅáØ8ìì#âá|XÝã^ìììsäáÌe+ìììì0j×áà`ìììtäÑ>žáŒ1ìììqßáÞŸ¥††£¿Þá×`ììì@ÉᇠIÍá±%ìììB›ÕáááááàΓ8ììì-¶áÀ5häá–$ììììPp…œ¢kCìììì-ªáã[ “äå±1ìììììììììììì=¶áä~ááŸgìììììììììì#uÄáã~ fËááډ<ììììF‹áäá¿[@ÜáááÖ³˜³Öáááч5OƒÔááááááááȀA Yv§²²œbM @ÿÿÿÿÿ ÿ ÿ&ÿ'ÿ(ÿ+ ÿ.ÿ/ÿ2 ÿ5 ÿ6 ÿ7 ÿ7 ÿ8 ÿ8 ÿ: ÿ: ÿ; ÿ< ÿ? ÿ@ ÿ@ ÿ@ ÿA ÿB ÿBÿF ÿF ÿGÿIÿJ ÿJÿJÿKÿKÿLÿGÿOÿSÿTÿSÿTÿUÿWÿYÿYÿZÿ\ÿ]ÿ^ÿ_ÿaÿaÿcÿbÿfÿdÿdÿfÿgÿhÿkÿkÿkÿlÿoÿnÿoÿmÿoÿqÿqÿrÿuÿpÿqÿuÿuÿwÿwÿyÿxÿzÿ{ÿ~ÿ|ÿ…ÿ„ÿ‡ÿ‹ÿŒÿÿ‘ÿ’ÿ‰!ÿŠ ÿŒ ÿ ÿ‘ ÿ‘!ÿ‘"ÿ’!ÿ“"ÿ•"ÿ—!ÿ–"ÿ—"ÿ—#ÿ˜!ÿ˜"ÿ™"ÿ™%ÿš$ÿž!ÿŸ"ÿ%ÿœ&ÿž$ÿž&ÿ #ÿ¢$ÿ¢%ÿ£%ÿ€$ÿ¥$ÿ€&ÿ§%ÿŠ&ÿŠ'ÿ¥(ÿ§(ÿš%ÿš&ÿš'ÿ©&ÿª&ÿª'ÿ«&ÿ«'ÿ­'ÿš)ÿ©)ÿª(ÿª)ÿ«*ÿ¬(ÿ¬)ÿ­(ÿ­*ÿ®(ÿ®)ÿ¯(ÿ¯)ÿ®*ÿ±'ÿ°)ÿ±(ÿ±)ÿ°*ÿ±*ÿ±+ÿ²(ÿ³(ÿ²*ÿ²+ÿ³*ÿ±,ÿ²,ÿŽ)ÿµ*ÿµ+ÿ·*ÿµ,ÿž+ÿ¹+ÿž,ÿ¹/ÿº-ÿ»,ÿ»-ÿº.ÿŒ,ÿŒ/ÿœ/ÿ¿,ÿŸ.ÿ¿/ÿŸ0ÿ¿1ÿÀ.ÿÁ.ÿÁ/ÿÂ/ÿÃ.ÿÃ/ÿÄ/ÿÁ0ÿÁ1ÿÂ0ÿÃ0ÿÃ1ÿÄ0ÿÄ1ÿÅ0ÿÅ1ÿÄ2ÿÅ2ÿÆ0ÿÆ1ÿÇ1ÿÇ2ÿÇ3ÿÈ1ÿÈ2ÿÈ3ÿÉ2ÿÉ3ÿÊ2ÿÊ3ÿË2ÿË3ÿÉ4ÿÊ4ÿË4ÿÌ3ÿÍ3ÿÏ3ÿÌ4ÿÑ3ÿÒ3ÿÐ4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvg2|8wg2Ch{{ga8XŒ­})a8)b8)e8)f8 €@FhzgW¹} }g@~g@g@@h@Ah@Bh`8Dh2šGh2z€Ih^8UŽ…|)^8 Kh2Qh] F ’ ÔT~] :1›Tÿÿÿÿ] €] T-` 'z%~‚–z,2{zE T~zE ,ˆšTÿÿÿÿtk€zE T^zE ’T&Ø|kACCEPT-d'öó|kDENY-d(ötT~^*M›TÿÿÿÿJz€^T€] T-` -dnzttz^] -` -dnz¥z@ˁ-` çpppDenied connection for ]  with IP policy nE -`  Lh\8R³M| )\8)]8 *F Nh2Oh[8Q°ì{)[8 ƒ€Th2Y8[X8P¯š{)X8 €UhV8ln =g O7V8Passwordš‚›9:9:$ {-Z8g eP  ‚‚{]{ëOë]„zz {ëOëz zOg ~7SNEEDPW g }7SWRONGPW;F W8g |7 €€|82YhU` QÉ›zz (—zS8z çAdministrator logged in.J|UpUIlogged in as a server administrator.'( WXh$*fx}ÿ"ˆ›þ¢ãø AÓ  "€"€ "€ "€ ŠF @€ý-0479:;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<======:962.+*-16:>?@ABBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBCCCA?>94/+')-06:>?@BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCA?>83.,(#$(,07=?ACDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEDD@>94.+'% "(,07;>?@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@?>93.ý&"""(ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý*ýý+% $ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý'!!ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý#ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý üýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýýý"ü ýýýýüýýýý  üýýýýüüýýýý  ýýýýüüýýýýü ýýýýüüýýýýüü ýýýýüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý ýýýýüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý ýýýýüüýýýý ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý üýýýýüüýýýý" ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý üýýýýüüýýýý" #ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý üýýýýüüýýýý# "%ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý üýýýýüüýýýý# "#&ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýýÿÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"ýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýý ÿÿßèèèèèèèèèèÿÿÿýýýýýýÿÿÿèèèèèèèßÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýÿÿâôôôôôôôôôôLÿÿ ýýýýýýÿÿÿôôôôôôô›ÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýÿÿ¡ôôôôôôôôôô›ÿÿýýýýýýÿÿÿôôôôôôô›ÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýÿÿòòòòòòóòòóãÿÿýýýýýýÿÿÿòòòòòòó›ÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿÆðððððððððð¹ÿÿ*ýýýýýÿÿÿðððððððšÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿéííííííííííäÿÿÿýýýýýýÿÿÿíííííííšÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿêÜêÜÜÜÈÜÜÜêÌÿÿÿýýýýýÿÿÿÜêÜÜÜÜ܃ÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýý ÿÿ‚ÙÙÙÚÙÙÂÙÚÙÙÙÿÿÿýýýýýÿÿÿÙÙÙÙÙÙقÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýÿÿàÔÕÕÕÕɍÕÔÕÕÕàÿÿ ýýýýýÿÿÿÕÕÔÕÕÔÔàÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýÿÿáÏÏÏÏÏ¿ã±ÏÏÏÏkÿÿýýýýýÿÿÿÏÏÏøÏÏÏOÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýý*ÿÿ ÌÌ®ÌÌœŸ®®Ì®®Ÿÿÿýýýýýÿÿÿ®®Ì®®®ÌKÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿ»Êªªªª||ªÊª«ª¡ÿÿÿýýýýýÿÿÿ«ª«ªªªª]ÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿÁ©§§§šžƒš™§š™ºÿÿÿ'ýýýýÿÿÿš§§š©š§Xÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿ€€¥€€€k{€€¥€€€ÿÿÿýýýýÿÿÿ€€€€€€€{ÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýý ÿÿL•–••––zz•–•••–ùÿÿýýýýÿÿÿ–––––––zÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýý ÿÿN‘‘‘‘‘bù‘‘‘‘Nÿÿ ýýýýÿÿÿ‘‘‘‘Nÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýÿÿœŒŽŒÿÿŒŒŒšÿÿýýýýÿÿÿŒŒŒŒŒŽõÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýÿÿjˆˆˆ€ˆ€ÿÿˆ€€ˆˆjÿÿýýýýÿÿÿˆ€ˆˆ€€Mÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿ„qqqqqqqqrrqqrq„ÿÿÿýýýýÿÿÿqqrqrqrMÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýý'ÿÿÿ`nnnnnnnnnnnnnn`ÿÿÿ ÿÿÿnnnnnnniÿÿ "ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýÿÿÿllllllllllllllllÿÿÿÿÿÿÿÿÿÿllllllliÿÿÿÿÿÿÿÿ "ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýÿÿûggggggggggggggggJÿÿÿÿÿÿÿÿÿgggghggLÿÿÿÿÿÿÿÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýý ÿÿbZZZeZZZeZZZZZZZZbÿKKKKKúÿÿZeZZZZZbÿKKKKKúÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýý*ÿÿN`V`V``uÿÿX```V``Xÿ`V`V`aÿÿI````V`aÿV``IIaÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýÿÿWUUUUUUQÿÿWUUUUUUOÿUUUUUaÿÿUUUUUUUaÿUUUUU\ÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýÿÿÿjSSSSSSƒÿÿMSSSSSSPÿSSSSS\ÿÿSSSSSSS\ÿSSSSS\ÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýÿÿÿPSSSSSSzÿÿ\SSSSSSRÿSSSSS\ÿÿSSSSSSS\ÿSSSSS\ÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýÿÿÿSSSSSSSzÿÿ\SSSSSSSÿSSSSS\ÿÿSSSSSSS\ÿSSSSS\ÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýý' ÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýÿÿÿÿÿÿ›››ßÿÿÿÿÿÿ'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýý'ÿÿÿú¡ÌôôôôôôÃâÿÿÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿèèèèèèèÿÿÿýýýýýýýýýýýýýýÿÿÿÿÿÿÿÿÿÿýýýýýü üýýýýüüýýýý#!"$'ýýýýý ÿÿÿß×ôôôôôôôôôôÌúÿÿÿýýýýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿôôôôôôôÿÿÿýýýýýýýýýýýýýý ÿÿÿÿÿÿÿÿÿÿÿÿ ýýýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿúëôôôôôôôôôôôôÌÿÿÿ " ÿÿÿÿÿÿÿýýÿÿÿôôôôôôôÿÿÿÿÿÿÿÿÿÿâèèèèèèâÿÿ "ýýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿ¡óóóóóóóóóóóóóóžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¡óóóóóó¡ÿÿÿ "ýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿÿæññññññÁÁññññññãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãññññññãÿÿÿÿ ýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿÿÚïïïîïøÿúïïîïÞïÀÿÿÿÿÿa†åïïîÊŒšÿÿÿÿÿÿåååååååÿúŒÚÿÿÅååååååÿÿÿååååååÅÿaŒÙïø†ÿÿšŒÞïîÞîaÿÿ ýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿÿìììëëëäÿÿëììììëäÿÿÿÿ ëììëììììëäúÿÿÿÿìëëëëìØa×ìëÿÿëììëëìëÿÿÿëëëëììëNØììëìì»ÿëëëëìëìëìì ÿÿ ýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿÿÛÝÝÝêêÈÿÿÝêêÝÝÝÃÿÿÿºêÝêÜÝÜêÛÛÛêÈúÿÿÿÝÛêÛÜÝÃÃÜêêÿÿÝÝÝÜÛÝÜÿÿÿêÝêêÝÝÜÔêêÛÛêÝêŸêÝÝêÛêÛÝê݅ÿÿ ýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿÿÚÚÚÚÚÚÚõÿ¢ÿÿ‚ÚÚÚÚÙÚÚÚÙÚÚÚÚºÿÿÿÚÚÚÚÚÚÏÚÚÚÚÿÿÚÚÚÚÙÚÚÿÿÿÚ÷ÚÚÙÚÚÙÙÚÙÚÙÚÙ¢ÚÚÙÙÙÚÚÚÙڄÿÿ ýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿÿÆ×××Ö×Ööàÿÿÿÿÿÿÿÿÿ¹×××Ö×·ààÖ·Ö×ÖÖÿÿÿ××Ö¶××Ö×××Öÿÿ×××Ö×׶ÿÿÿÖ×Ö×ÖÖÖàž××××××Àà¹×××ÖÖ×¹à\ÿÿ ýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿÿžÒÒÐӲеСGÿÿÿÿÿÿÿÄÓÐÒÒÑÐÿÿŽÒÒÓѲOÿÿÒÓÓÓÒÒÑÐÒÐÑÿÿÓÒÐÒµµŽÿÿÿÑŽ³ÑŽŽÒÿàÐÑÒÓѲŠÿ}ÐювÓ}ÿÿÿÿ ýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿOͯ¯¯¯ÍͯÍÇOÿÿÿÿÿÿ¯¯¯°¯ÍÍÿÿͰͯÎÎuÿÿÍÍÍÍÍÍͯ¯¯°ÿÿΰ°Í¯ÎÍÿÿÿͯÍίÎÍÿOͯ¯Î¯ÍŸÿᯰͯÎÍáÿÿÿ "ýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿÿ¢¬­Ë¬¬Ë¬­¬¬ ÿÿÿÿÿ¬ËËˬ¬Ëÿÿ¬Ë¬Ë¬ËŸÿÿˬˬËˬˬ¬¬ÿÿ¬¬Ë¬¬¬Ëÿÿÿ¬¬Ë¬¬¬ËÿK¬¬ËËˬœÿŸ¬Ë¬¬¬¬Ÿÿÿ "ýýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿÿÿ¡ªªªªªªªªªª»Gÿÿÿªªªªªª«ÿÿªªªªªª|ÿÿªªªÊª««¥tJÿÿÿªªª«ªªªÿÿÿªª«ªªªªÿKªªªªªª»ÿ|ªªªªªª|ÿÿ ýýýýýü üýýýýüüýýýý#!"$'ýýýýýýÿÿÿÿž£©©©©©©©©©€Gÿÿ©©©©©©©ÿÿÿÿÿÿÿÿÿÿÿ©©©©©©©œÿÿÿÿÿ©©©©©©©ÿÿÿ©©©©©©©ÿX©©©©©©ºÿž©©©©©©žÿÿ ýýýýýü üýýýýüüýýýý#!"$'ýýýýýýÿÿÿÿÿiœŠŠŠ¥ŠŠŠ¥¥žÿÿŠŠ¥ŠŠ¥Šÿÿÿÿÿÿÿÿÿÿÿ¥ŠŠŠ¥ŠŠJÿÿÿÿÿŠŠ¥¥ŠŠ¥ÿÿÿŠŠŠ¥Š¥¥ÿ{Š¥¥¥Š¥¹ÿž¥ŠŠ¥¥Šžÿÿ ýýýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿÿÿÿÿÿÿu——Æ——˜Æ˜Âÿÿ———˜——ÆÿÿÿÿÿÿÿÿÿÿÿƗ˜Æ˜——ÿÿÿÿÿÿ˜—˜——˜—ÿÿÿƗ——Æ—˜ÿߗƘ—˜—žÿu—ƗƘÆuÿÿ ýýýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿÿÿÿÿÿÿÿL”“’”Ä’”Lÿ’’’““’”ÿÿÿÿÿÿÿÿÿÿÿ“’”””’”ÿÿÿÿÿÿ’’“”’’’ÿÿÿ’Ä“””“’ÿz”’“”’’‡ÿt”“’’””tÿÿ ýýýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿ¢ÿùqšÿÂÿÿbNNNNNHÿÿÿÿÿÿÿÿÿÿÿÿN¢ÿssÿÿ ýýýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿ¡xŒŽŽŽŒÿÿœŽŽŒŒŽŒœÿŒŒŒŽŒŒÿÿ¡ŒŽŽŒŽœÿÿxŒŽŒŽŒŒÿÿÿÿÿÿŽyŒŽŒŒŽÿÿÿŒŽxŽŽŒŒÿõŒŽŽŒŒ¡ÿœŒŒŒŒŽŒœÿÿ ýýýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿ†‰‰‰ww‰ÿÿõ‰‰‰w‰wkÿ‰‰Š‹‰‰‰ÿÿ†Š‰Š‰‰kÿÿ‰ww‰‰‰‰ÿÿÿÿÿÿwwww‹‰‰ÿÿÿŠ‰‰‰‰wŠÿõw‰Š‰‰‰†ÿk‰‰‰‰‰‰kÿÿ ýýýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿ…vvÿÿMvvvv›ÿvvÿÿ…v›ÿÿvvvÿÿÿÿÿÿvvvvvÿÿÿvvvÿMvvvv…ÿ›vvvv›ÿÿýýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿsoopo~pùÿzopoppošÿ„o~pp~oÿÿ„opop~zÿÿ~oo~~opÿÿÿÿÿÿpoop~o~ÿÿÿ~pop~poÿioo~o~~„ÿšoppoopšÿÿÿýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿƒmmmmmmœi_mmmmmmiÿummmmmm\ÿemmmmm\ÿÿmmmmmmmÿÿÿÿÿÿmmmmmmmÿÿÿmmmmmmmùimmmmmm}ÿƒmmmmmmœÿÿÿÿýýýü üýýýýüüýýýý#!"$'ýýýýýÿÿúlllllllllllllllûÿ]llllll„tlllllŸÿÿÿlllllllÿÿÿÿÿÿlllllllÿÿÿlllllllžŸlllllljÿ‚lllllllŸjÿÿýýýü üýýýýüüýýýý#!"$'ýýýýý ÿÿÿughghhhhghghhhPÿÿÿ^hhghhghghghhLÿÿÿhghhghgÿÿÿÿÿÿgghhghgÿÿÿhgghhghhhgghhhhOÿJggggghgh|ÿÿýýýü üýýýýüüýýýý#!"$'ýýýýý"ÿÿÿût[ee[efeffeežûÿÿÿH`ef[fffe[[[zÿÿÿÿee[[e[[ÿÿÿÿÿÿf[eefffÿÿÿ[eeefefkff[eff`ûÿÿkff[[eefžÿÿýýýü üýýýýüüýýýý#!"$'ýýýýýýÿÿÿÿNYddcdccc|NÿÿÿÿÿÿGscdccdcd}aÿÿÿÿÿcccccccÿÿÿÿÿÿdcdccccÿÿÿddddddcÿƒddcdTHÿÿÿÿ]uddcdcuÿÿýýýü üýýýýüüýýýý#!"$'ýýýýýý%ÿÿÿÿÿGiXXXiGÿÿÿÿÿÿÿÿÿûaXXXNHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_______ÿÿGXXNûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýü üýýýýüüýýýý#!"$'ýýýýýýý%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUTTTUTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýü üýýýýüüýýýý#!"$'ýýýýýýýý*ÿÿÿÿÿÿÿÿÿÿÿýý"ÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿÿÿSSSSSSSÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýý**" "ýýýýý*' )ýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿ\\\\\\\ÿÿÿ 'ýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýÿÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý#!"$'ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý$"#%(ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýü üýýýýüüýýýý$"$'*ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý ýýýýüüýýýý%$&(+ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüýýýý''(,-ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüýýýý(*,.1ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüýýýý+-.37ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýýýüüýýýý-/49;ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüýýýý.69>?@A?>;9877666666666666666666666666666666666666666666666666666666666666666666666666666666666666530-+'"ýýýýüüýýýý2;?BEFE@>;8877666666666666666666666666666666666666666666666666666666666666666666666666666666666666531.,(#ýýýýüüýýýý5?CFþEA><87544444444444444444444444444444444444444444444444444444444444444444444444444444444444444321.-ý&"ýýýýüüýýýý7AFþFD?>:86444333333333333333333333333333333333333333333333333333333333333333333333333333333333333321/-,)&"ýýýýüüýýýý.9===:864211000000000000000000000000000000000000000000000000000000000000000000000000000000000000000//.-,+)'$"%ýýýýüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý*ýýýýýýýýýýýýýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý        üü €€@ÿÿÿÿ ÿÿ'''ÿ444ÿBBBÿDDDÿFFFÿIIIÿJJJÿMMMÿOOOÿQQQÿSSSÿUUUÿWWWÿYYYÿ[[[ÿ\\\ÿ___ÿ```ÿcccÿeeeÿgggÿiiiÿjjjÿmmmÿnnnÿpppÿsssÿtttÿwwwÿyyyÿzzzÿ|||ÿÿ€€€ÿƒƒƒÿ„„„ÿ‡‡‡ÿ‹‹‹ÿÿŽŽŽÿ’’’ÿ———ÿÿ£££ÿšššÿªªªÿ­­­ÿ±±±ÿµµµÿ···ÿºººÿœœœÿ¿¿¿ÿÅÅÅÿÉÉÉÿÎÎÎÿÑÑÑÿÒÒÒÿÔÔÔÿÜÜÜÿäääÿëëëÿíííÿîîîÿñññÿõõõÿöööÿûûûÿ ÿÿpUÿÿ6)ÿ!ÿ(ÿ-"ÿ9+ÿK:ÿN<ÿ`JÿgOÿjQÿkRÿpVÿ1&ÿ2'ÿdMÿuZÿw\ÿÿ4(ÿlSÿnTÿoVÿÿÿrWÿrXÿw[ÿx\ÿ|_ÿ|`ÿ$ÿF6ÿG7ÿ‚dÿˆiÿŠjÿmÿnÿ’pÿ’oÿM;ÿO=ÿR?ÿ•rÿ›wÿ¡|ÿ¢{ÿ/$ÿ1&ÿZEÿcMÿmÿ•rÿ™vÿ™uÿ=/ÿ>0ÿiQÿlSÿqWÿ~aÿšvÿ›wÿœxÿœwÿ¡|ÿ¡{ÿ¢|ÿ§ÿšÿ©‚ÿ­…ÿ­†ÿ®…ÿ¯‡ÿ°‡ÿ³‰ÿ³ŠÿŸ‘ÿA2ÿD4ÿJ9ÿ—tÿVBÿ^HÿnTÿuZÿz^ÿ±ˆÿ¶ŒÿžŽÿ¹ÿœ‘ÿœ’ÿ¿’ÿŗÿŘÿ˜ÿ˛ÿ͝ÿÑ¡ÿÒ¡ÿÔ€ÿ×¥ÿ׊ÿØŠÿØ¥ÿݪÿÞªÿ‚dÿ…gÿŠjÿnÿ’pÿ•sÿ˜uÿ›wÿ£}ÿ¥ÿŠ€ÿªƒÿ®…ÿ±ˆÿ³Šÿ¶ŒÿŒ‘ÿÀ“ÿŗÿ˜ÿ͝ÿÑ¡ÿÒ¡ÿÔ£ÿ׊ÿ×¥ÿØŠÿØ¥ÿÛ©ÿÜ©ÿݪÿÞªÿ߬ÿã¯ÿä¯ÿé³ÿêŽÿê³ÿô»ÿ0%ÿ;-ÿ`JÿeNÿrXÿ®†ÿ²ˆÿ¶‹ÿžŽÿºÿà­ÿéŽÿï·ÿïžÿñ¹ÿó»ÿôŒÿ÷œÿø¿ÿûÁÿüÂÿÿÄÿ*!ÿΠÿã°ÿÔ€ÿ ÿ ÿÿbbbÿÿÿÿÿÿÿchM8B:­/a9 n ‚|n IM8w.¹n e*M n U7ÿF M M €M ~M :çpAdding IP Ban for: M i %֖i ,2Ìzi E Ö¥i «ü–i ,2i E pDENY,M bn a0 10 €\h]h^h_h#VK c z«YrV*!rK N* jaK N K   K  …jaV K   K  jYj kK  ehK8L©Žz)K8 +€hhJ8}+“_/a9 w\[‚|wIJ8w.¹we*wa0 10 €ihH8IšIz )H8)I8 |€mhdh_ $4 {] k G8G§íy)G8 kh‰lhŒM šnhF8] ö ]F8 E D8b*µ z D8 `hphb.™w[*[ €rh–shthuhvhdoh|hJ 3ó Xx7@?w7 @yhCs7A¢+y)s7 €oipqrhÑYi€Eim7[ ZÅ"ßkwJ*@„‚J-z -fJ-f ap9S.JEua-1]n7cpì, X]c_hpppppppppGì, m7ì, aì, ] T$*D4ÿ*Õööÿ"=ý ¢äø AÓ  " " " " žT @Éæ汩 ±þØ}Š±©;í©Š©ŠÅ+¡¡”z¹Ֆˆ¯·¯ ·ªªØq©¡,©©ªØàûÐÓÐÓÐÓÕÜäìõÝŠ¡L§ggdz z[[pÈ §,Ì}¹R©# Ù^Ȉ¥¹z·”ª#NÙÜ;Ȉ ·r¯;”·Œòñ,·žr¯r–#ˆˆ^¯r ñ··ˆÆºüôêêêêßßœÓÔÔßѶÊÊœÓÑÓœÑÙ×è×èê×üZP8("   ("-87(!.AêüC{{tk]TC88"  "!8:PZêü{l]TAA=<-$‰ñÞ "-8:Têô]PPCF8SÚöø˜S¢‡c/!288êî -/<38™™‰/jÚ®7-.|’¯j "-8Ñß $- ¢—“I$A Z¬Á---ÑÙ"$PÙ "|ÃA ×Ô"Žß‡  ¯Á! Ñζê. :—ß8 ÑÊ ә ZµK ×Á FZ %ê¢ ê“Zú¶¢‰lfltt“¢‰~¶Ê“““‡«¯µœœœœÑÑêÑœ Gik7| Œx )k7)l7 V $*‚ÿ*öööÿ"K¿Ë ¢äø AÓ  " " " " JY @ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ViCZ H !ŠkwC*@„‚C-z -fC-f ip9S.CEui-1hpppppppPì, iì, j7 V $*}ÿ*Zæöÿ"Ï]:¢äø AÓ  " " " " s^ @úúàànnnúànúànnnúúànúàààànn Kig7xŸex)g7)h7)i7 Ii R Miy7.È!—7N%AN“7N&& Oif7vœÏw)f7  0W² yñ pQš9:9:$\YAz I U V qa€?' Ozy&L$B'7N’7N&“7N&Ny& l€@Qie7T–w)e7 逬^7PiH6v Si@DTi@DyŠF€@Wic7y%SóI„„‚B -z -fN -fB -f Jppppc7ì, æwN *’‚N -z -f JppJ9S.N Eì, JppJ69Viì, JppppJ-1ì, 69Viì, JpppJ9S.B Eì, 69V.B Gæ‚w.B *.B -Væw.N .B Z N type_killhJ Zi_7Q*-BhpppppppppTì, 9S_7ì, 9U`7ì, a7 `[7di‰jiBY Ž5„‚B-z -fB-f hpppppppppSì, 9S.BEì, 9U\7ì, ]7 XiX7C@\i^i–_i`iaibihiŒfi‰gi ^}  ^ui@oi[iIW7ziDW ž}5„‚D-z -fD-f mpppppDì, 9S.DEhm li'mini–V7‰qiA iiriS7‰i€@U7xi`1ýp$ €@^7wiT7Qþª$)T7 FjhU øž©5„‚h-z -fh-f ippppppCì, 9S.hEì, ipi^6.hhi €@yi}i_1ÿÜ$ €|i]1 % @j‰CjOQ7p“%)Q7)P7)M7 À Í}hL7HAjJ7Z1ð%)J7)I7)F7 "GjK7eÓäPppppEGì, K7\=h%–h7\Esh\Eus-f7L’7L&^%d–^“7L&Z„°^LWsWN‚Ž^LWsW%±^Lsq^L^Lssq¥^¡^Ls¥hCh%×–h7LPppPì, 9S.hLE¥h†hP Sj\ ÆhhpppSG JjH@HMj€@C D7W1À&)D7 @tLjOjV1î& €@NjC7M. 0')C7 À vB7^Pj@7[, j')@7 À 1[jLT«ìÍ}pì, De\CeYxeAXD}_XC}_Xx}_LpppSIì, LppLDì, LppLo ì, LppLCì, LppLxì, LpLì, A @Lc%›–c76GLAppppA\6mc6GL\6Oc6GL¥c9XA}_LpLAhL Rj6T11()6 ~6^€Tjy6U.Ÿ()y6)x6)w6)v6)t6)s6 @ ôG^@t@O7ljYI uË ¡Mpì, db cg!``%XdM_XcM_X`M_e=YpppNGì, YppYF ì, YppYo ì, YppYDì, YppYdì, YppYcì, YppY9VŸì, YpY`gB%/a0 -YìÊ{ggppg|9VYŸägp9VYŸ¥B10/a0 DUP.{ggppg|9VUŸHgp9VUŸ¥B10”—B%XgM_YpppYì, Mutators=ghY ]k‰g€@si @IjN9X L /Ž* }  Z:_jS4Â*-O'*q!V `jc<S+75‚rG*š9:9:$G k aja.Cî+rG*G k bjqeJf,rq*bOq ÂvcjbQÚ, r# e# Â1ejQ1]Ö-aa P ffj$eu.]JfO-3(X®9?,i[-fq!~ gjuKt«/Y9wZ*uZQZaZuWw@*@a@* ^j @djhj|-‡1B Y7 jjr6aÇ1qr6q6 Âvuj]jD_ jO pì, gpa6O›~g.ut2ÿÿÿÿg€g~g.ut2XgO _g €@kjV”2Ga!Ua!U!nE7w*} E-o(V Â1njG} ¡ç20 rG* GG P Âv_*Lojrjf ³4„å H|p6|â *g±Û||9?%’ÀÅ@ÛH|‚“@Å@ÛH| H€ij @pjNkmjo X€0 tjN:qjLkŸ5¡!‚w*-f a+L LR L-O(KŽw*-X-Km At vjwjZÐø6hXw*a   S${KXr#O*q!x yj~0ß?8wG*GA  Fzj}JæÌ8Ww} Q3w*S$Jr#-3'F} xj{jN]õò9œn„ra*#‚wN*wNaŸOaNnwO*cwa*aaaOš‚wa* w~*a l ~ Âv|j~jjC:}jLc;'bO Ÿ ‰@k @BkCk @Dk€uo6_Ú<RBôÍÌÌ=o6U€?X #|w*žU6u  U=ßX u  T=[ «š™?B6M u6M [ UM Õ6M #€?€?€?6cu6c[ 6X 6žcu6žc[ 6žX 6“cu6“c[ 6“X  €@Ek @FkJk @KkLkŒUkIkF S«Šppppppppppp9S@-9ST-9SN 9SM:9SL:9SJ MkŒOkPkQkRk€@_kTkpNEppr ì,  Skm6cT 8B›)wa*axcfdw‚„þd!O þd!x wc*fppcI: feb xfÀ@ ƒVkXkYkWkAAþB [kk6z0GC¥—9:j69:`8 A‚-i6°¯f9?& fr7Iö®ÍÌÌ=«9<_8fff>ÍÌL>€?u k6'I$ B³‰s €@bk^kr C{Ms p9UE›~s .ÿÿÿÿs €s ~s .s  Zkw9\kh6e THEŒš9:9:$'i°¯r 9?,Jÿh6![(i°¯r 9?&(€°¯r 9?, r ®9?,žr ' Xek@<D X €akg6u j­GWefff?+-e6eöd6€?Uw#*#ag6c6e ( B³0fk 6Û0P gkf6h-S!wb*b x7f6 hkD (wb*ba a6Pba \Uwb*b u7StatsçOutput Game stats to: STATS.TXTçCould not spawn Temporary Stats loga `kdkb6x0t²Hu b6-`6 Âv€@€@Kjkb@°IJ›w*a.;Ywa*JaWa` 'Ja›7%{ |"  ²wa*aaëwC*bCQCaCb²$wZ*bZQZaZbëBw} *} a} *K  iknkokmkKt ¬[M3IKK@@q7Kp7]6 Âvpk_$*650ÿ*öÿþÿ"Žëk¢äø AÓ  " " " " ž @òòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòò££££££££££££££££££££££££òòòò££££££££££££££k(k£££££££òòòò£££££££££££££HOH£££££££òòòò££££££££££££k(Hk££££££òòòò£££££££Hk££k((H££££££òòòò££££££H Hk£kO(HR""££££òòòò£££££k((£kO›£&&"£££òòòò£££££k(H"£™£(H£" . ££òòòò££££"" & "k£™™ &'ù£òòòò££""" ù """ùù.,  & òòòò£ ""ù™"™."" ù,&ù"ù# òòòò ™"" 'm"&#™""ùù ù.""&{òòòò. ™&& '' £ &™"" ™"™&#òòòò ™ù' ™ù,£"ù'&""™' "™.'òòòò™ù.'&mù™"£ . .""".. ,ùòòòò ù.{Ð{™ù"""ù&'™m""ù'™ , òòòò™ù&%#{ù "£ &&™ """'&™ òòòò™ù.''ù ""™ {.ù™"""™.#&""òòòò™™ù.ù ",.&'{ùù"" .&ù''ù"òòòò££™. ™.&ù.'ù™" ™&.ùù'ù òòòò££££"™™™ ™ ™™""™™ùùmm.™"òòòò££££""""£""£"£"™ ""£"£òòòò££££££££££££££""££"£££££òòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòò qkv0·WN µUiQ\ Âvtk\¿œNl -r' Âvukt0ÅO -r( ÂvvkQÊ0O-r(iU ÂvwkiÐzO#LUiUUU xkLq0×PiLLL rkykp0ÝQPiULU {kMkã©PQO„³M Bš9:9:$UöM€?*CiUb Âvzk|k\6bíjQDš9:9:$ u b\6 Â1b@N~k[6o0ôüQB G[6 I‘r7ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿAl8uòï--%‚"($*$@lZ6n0ùXRB EZ6 @ÿÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿ##ÿÿiiÿÿjjÿÿŽŽÿÿ––ÿÿ»»ÿÿœœÿÿòòÿÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿBlY6m0þ­RB FY6 X€‚DlzðR;9‚w*w*z }kX*q5\]^_`abcNPxÎTv!o-S&OP Au#K uP!x B$O IlX6m &VKAX6I‚w*w* MA B$d QlW x |È h[-X-C(E6V pppppppì, game_endì, W ì, V fd W  KlQM-ªV} A9?Q µA9?Qp‚w*w* MAm A Jl MlVf08éW‰|VLeftA€¿z=|VRightA€?z]|VCenterAzz|VHiddenA@M9DA Nlx Xl[n pL Ÿ¬-Xppppppppppppì, playerì, Connectì, [Iì, 9S[{ì, 9T[a/!zì, X L [Œx [X  €U6X0J Y6ŽA9?,A€?'A@M9DA Slp R—Y TlT6W0VÇY-Y -T6 Âv€@UlS6Y[ Z-3-S6 ÂvA5YlVlXd`;3-X0w.T^*.T^|3| f4\lZ N[Ž'-C` Z ^ Z v Pl4al_d4]lMP²F-C` M^ MvDw^*^ M c4`lZ H8"v w^*^Z  Zl4Q6Wo!\b¯9?,  b4cl[ =š7vB6-Y4i45w^*^[  bl_ dl_a4^ w \ $EbNh “-Xw ppppppppV4/.E.N.9S~b pw .tmp|pw .logw ppppppppW4/.B!.N.9S~b pw .tmp|pw .log-C'A61w^*^\ i j m  el_gl_M6C6U…^>NC6#@6-5-~5-}5(${5z5 B$hl_il_V6kl_b ll_Œnlšplm)Œµ3"ppì, game_start rl_y5 Dm[w †ô2n/a9 [kppppppppì, playerì, Pingì, 9S[{ì, 9S[P10 olsl_ul qlvl‰wl‰Om‰tl xl yl4zl{l4|l4}l4~lN k AmBmq5Imr5f)u¬1¶Rr5/{j RppRì, j S{i RppRì, i w{h RppRì, h ›{g RppRì, g ppì, R EmZGmPmo5e)np0^ppppppì, item_deactivateì, o5yì, 9Sp5g{ YJm @uu Lmu sm5SzUwhm5k5-j5 B$_Xml d)gW/Œ0„„r^*r^g* rl * ppppppì, item_activateì, l yì, 9S^g{ ^m@RmV!Tm€Um€€Mm»h5€]mYc)_Ä-å•‚wYr*{Yryppppppì, item_getì, Yryì, 9Sm g{ãppppppì, item_getì, 9VYì, 9Sm g{ Zm€a€ŒVmu _mf5a)Z"-Oppppppì, typingì, 9T-f5ì, 9Sg5{ `m‰amo `)UG,tppppppppì, playerì, Teamchangeì, 9So {ì, 9Vo 9 bmfmp _)Py+nppppppppì, playerì, Renameì, p Iì, 9Sp { @emq\5M0·„|tw*n od\5!F$Z5X5W5V56n6žn6“n Bç@l5gm~Z)?_)1 r}* }r~}ppppppppppì, suicideì, 9S~{ì, s ì, 9Vr ì, None ±r~9}9eteamkillœekillppppppppppppì, eì, 9S~{ì, s ì, 9S}{ì, ^5ì, 9Vr  imY5Y)8#(Sppppppì, playerì, Disconnectì, 9SY5{ mmx xL -8%åwwx9*ppppppppì, playerì, TeamNameì, 9Sx{ì, x9z ppppppppì, playerì, Teamì, 9Sx{ì, 9Sx9^ppppppppì, playerì, TeamIDì, 9Sx{ì, 9Sxc ppppppppì, playerì, Pingì, 9Sx{ì, 9SxP \mdmU5QÌU~ww*m odU5T5S5R5Q5P5K56m6žm6“m Bç@@nmvm^O5y m "Zy O5ppppppì, mapì, Nameì, y ppppppì, mapì, Titleì, b ppppppì, mapì, Authorì, g!ppppppì, mapì, IdealPlayerCountì, 9S@2Z'ppppppì, mapì, LevelEnterTextì, k €@umL5W-%!Cppppppppì, gameì, L5ì, M5ì, N5 jmkmH5PäW€ww*k odH5G5F5E5C5B5@54~4}46k6žk6“k BçwmI5^-n 6ppppppì, gameì, I5ì, J5 {m^ xmz j þ]Œz Sppppppì, infoì, Server_ServerNameì, =\ppppppì, infoì, Server_AdminNameì, =Yppppppì, infoì, Server_AdminEmailì, =Appppppì, infoì, Server_Regionì, 9S=P'ppppppì, infoì, Server_MOTDLine1ì, =z ppppppì, infoì, Server_MOTDLine2ì, =I ppppppì, infoì, Server_MOTDLine3ì, =U ppppppì, infoì, Server_MOTDLine4ì, =V ppppppì, infoì, Server_IPì, z ppppppì, infoì, Server_Portì, 9S~ ymi áÀŽš-XNppppppì, infoì, Log_Standardì, B!—w^*^=ppppppì, infoì, Log_Standardì, E×ppppppì, infoì, Log_Standardì, Eppppppì, infoì, Log_Versionì, J4ppppppì, infoì, Log_Info_URLì, K4ppppppì, infoì, Game_Nameì, ppppppì, infoì, Game_Versionì, c2ppppppì, infoì, Game_Creatorì, M4ppppppì, infoì, Game_Creator_URLì, N4ppppppì, infoì, Game_Decoder_Ring_URLì, O4ppppppì, infoì, Absolute_Timeì, g Œ-XP|$Qget UdpServerUplink douplink9T'Nppppppì, infoì, Server_Publicì, 1ŒNppppppì, infoì, Server_Publicì, 0 UA5D5OÛmžgD5 €@~m^‰i€@En|mÍt0i9Ugi€i’~i.,i Fn ^R6@n 0.7e 10.0Km‰@IŒBnm€@InDnh š&úm9S@Q–T, mppm.09STsmppm.9ST®–N, mppm.09SNÐmppm.9SN –M, mppm.09SM-mppm.9SMh–L, mppm.09SLŠmppm.9SLÅ–J, mppm.09SJçmppm.9SJgm gn@^Gn@R!K€@u4Hng z zK9S@Q–T, KppK.09STsKppK.9ST®–N, KppK.09SNÐKppK.9SN –M, KppK.09SM-KppK.9SMh–L, KppK.09SLŠKppK.9SLÅ–J, KppK.09SJçKppK.9SJ"–W, KppK.09SWDKppK.9SW} u4KppK.} gK CnŒ€@Mns4G)oU )s4)t4 $Nnq4F)nÿ )q4 Uno4E)mÏ )o4 `OnPnQnRn^l4OŠ‘'Pl4-G&' B$[nm4D)j‹ )m4 $TnEN•.’­C‚w*2„š9:$9:$ š9:$9:$ -W(a9: b9:Q-d-QEZ-a'@wE*ø²EHDZEQEQCCECm EZ=°‚‚‚‚‚w*#›9:$9:Ek›9:Ek9:$›9:Ek9:$ ›9:$9:$ ›9:$9:$o‚EkqEdE-R E-e E-EE-hECE *"EEQ…|w@*‚‚‚‚‚w*#›9:$9:@k›9:@k9:$›9:@k9:$ ›9:$9:$ ›9:$9:$o‚@kq@d@-R @-e @-E@-h@C@ *"-a(Q9=b 9=a-Q-d SnWnXn>2_nC)iO  `€Zn2]ni4B)h  $k4D Uð?œ>™D %D ùD ,6D ’ù9Dº9?D ,,€D  j4€`nsV!b€Š’wZ*NZ~âD ðwNQ*ل„„N-EN-h0‚›9:NC9:$–9:NC,9‚ÚN *D °ÛâN *~33s?_NNNQ#’„„„N-EN-h0‚›9:NC9:$–9:NC,9‚ÚN *D °ÛâN *~33s?_NŒw@*@O"sD hNk4ÕrN* NO"sD h-e (JNdN *NCe4Yw*oƒNdaoƒszr@*@N³NQCCNCm N@NB0}õ¬ B9?eX!Âu<‚‚‚‚‚-L2@-E@-h2„š9:@C9:$š9:@C9:$;„Ù@ *D !±ÛâD â@ *33s?°@d¯}g g¯@d}örZ*Z@ NQ@@*.w_*jôC«¯_H9?ôw×ÕÍÌL=_ *#???J ’’”U9D6w,”U9D6žw,”U9D6“w,á_-R ¡J ,@ü_-h¡J , _-E¡J ,¡J 9:_C}9=œ9:9=•6 ,,ÿmN-E-x-x†r*M šM   a!Wd NHÔN *9?, M}’œÿ‘6•,€œÿ‘6™,ˆÖ‚‚ÙN *#š9:NC9:$N-hUNHMN-R N-e -x}’œÿ‘6•,€œÿ‘6™,ˆNNHÔN *9?, MN-R N-e -xN-hNC}’œÿ‘6•,€œÿ‘6™,9CjJ  pf4@)fÀ  h44xn^sn_4w(@f*(-`4-X'(-_4^aŸ ^44injn4mlnmnnnonpncnQ ŠªŽCAw*-Q ‚›9: %6f d a/!z jun3;w  ]4\4~/°Zµ L\4 BçXwn@5Íw^*^a tn[4|/µ­µ.M Õ[4#€?€?€?cÕoƒ:Z4 BçZ Nol0— aðA' Do^vnX4{/»/¶!žA8X4ß@8Õoƒ:U4 ÂvY4@V4@DLynOKÅI·Žo„°y6O°|« ×#<6žOy6O|« ×#<6žOW« ×#<6“O²±ákáp QÕR4#€?€?€?p kES4 Bç{n@DL`Œ}n@DLn@DL_9|nQ4Và†ºZ6oP46žo«ÈBQ46“o«ÈBI4KoL4H4G4 @o@DLBo@DLEo^Fo KoGo@_5~n °Z9AoA[ èZ»86‚‚wA* wA ±F49?%MA HoY*qiqIolîÑ»`-V-l-FC-V^‚‚-l w*-Kr Â1Jo}3XE4D4u/+Ÿ><w|*|s D4C4B4 Â1n3[Qo[Ro[‰So[‰A4@4Y/c¿)'š9:9:$p@4$' To[UoM/iÀOM‚—7%š9:9:$5d7QSaveGame 9 WoJ/)FÁ-+š9:9:$p?load=9$( Xo3y3BÂ2T$k $ y-3 Â1@n3€YoI/>úÂ'rm*y'%y( Â1\oH/GÃrm*y' ]o~3F/SjÄ;C.s o~39wC*CM Vo@[Zo_o[nUHjDÆvt`U99gU×ÔU®Û U9?ô#HC y Uj Â1Mocodoao[›|3ÉsFQ{.ÀÎ\\„„r* rQ*5‚w*rŸQ R ZwR *+rR ŸQ5. R 5?5p5y5H#5* u ¥uC—uè R R p hobkoiorz.Þâж#„wm* r* `rc*cm wc*rcwr*³rr*ð‚ra/!z.sr-b ].srrršr•wrcArr*•~‚ra/!z.sr-b ].srrrŽw]*c] Â1|‰moy.÷¶ÓQwm* O‚w*wc*cM Â1oo‰fo[›vÓro[›xF!ÖE uowEaÖ_!rmy( .r* / a3 w\w [ 10 B$u3jwo]y3U96Ø By3 to[›yoxB;TØaxb"Namex'b z{oaaBÆØO—}a,a€a,Xa _ aa' Â1xo|o}ok.JaÙF=„r9*š9^&D%DD& zo[›@p[›x3v3j.`XÛKI„š9:9:$š9:9:$ jv3( –Cpb|hÜTb%R–b,bR bj Q9=,ÿ9=,ÿ9=,ÿ¥b Âv@gDpEp`D qâÜ0.–`,`R t3`js3  v–Fp@gIpGpr3E z‚Ý]®r3  vJpg–CKptÉÝKC~Q ~O-3N P MpO~Œ¥Þ›jf-WSu -WF EOH~Oq’aO)™qO ~ošOpI{q3f.°Dá42š9:9:$-3-q3Y-3 Â1\3$*XXXÿ*îîîÿ"ˆ”Å¢äø AÓ  " " " " ?É @ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ””•––˜šœŸŸ  Ÿžžœš˜˜•••”ÿÿÿÿÿÿÿÿ”•–˜™œ £€¥ŠŠ¥€¢¡ž›š˜—–•ÿÿÿÿÿÿÿÿ•–˜™œ £Šª¬¯¯¯®­ª§€ š˜—•ÿÿÿÿÿÿÿÿ–˜™ €ª­²µžº»¹·³¯ª¥¡žš˜—ÿÿÿÿÿÿÿÿ˜™œ ¥«±žœÂÅÆÇÆŸž±«Š¡™—ÿÿÿÿÿÿÿÿ˜œŸ€«±¹ÂÈÎÒÔÔÓÏÊ»³«¥ œ˜ÿÿÿÿÿÿÿÿ™£š°¹ÂËÓÙÝààÞÚÕÎÅ»²ª€Ÿšÿÿÿÿÿÿÿÿ›Ÿ¥­¶ÀÊÕÝâèëêèäß×Íž¯§¡œÿÿÿÿÿÿÿÿ¡§±»ÇÒÜäìðòóñíçßÕÉœ³ª¢žÿÿÿÿÿÿÿÿ£ªŽÀËØâëñöøøöóîåÚÏ÷­ŠŸÿÿÿÿÿÿÿÿ£¬µÂÏÛæïõúüüúöñéßÓƹ¯Š¡ÿÿÿÿÿÿÿÿŸ¥¬·ÃÑÝèð÷ûýýüøóëáÕÈ»°§¡ÿÿÿÿÿÿÿÿž¥¬·ÃÐÝèð÷ûýýüùóëáÕÈ»¯Š ÿÿÿÿÿÿÿÿž£«¶ÂÏÚåïôùüüúöñéßÓƺ¯Š ÿÿÿÿÿÿÿÿœ¢ª³œÊ×áêðô÷÷öóíäÛж­¥žÿÿÿÿÿÿÿÿ›¡§¯ºÅÐÚâêïñòðíæÞÕÊŸ³ª£žÿÿÿÿÿÿÿÿšž€«ŽœÈÓÚáæèéçãÞÖÍž¯§¡œÿÿÿÿÿÿÿÿš¡Š¯·¿ÉÐ×ÛÞßÝÙÔÌÄ»±ª£ž›ÿÿÿÿÿÿÿÿ˜›ž£©°·ŸÅËÐÒÒÐÍȺ³¬¥ œ™ÿÿÿÿÿÿÿÿ—˜›ž£ÿÿÿÿÀÂÿÿÄÁŒÿÿ¬¥¡™—ÿÿÿÿÿÿÿÿ——š›Ÿÿš¬°³ÿ¹¹ÿµÿ®ª¥¡ž™˜–ÿÿÿÿÿÿÿÿ•——šœÿÿÿ§«ÿ®®ÿ¬ÿŠÿÿœ›˜–”ÿÿÿÿÿÿÿÿ”•–—™ÿœŸ¡£ÿŠŠÿ€ÿ žÿ™™—””ÿÿÿÿÿÿÿÿ”””•–ÿ™šœžÿÿžžÿÿ™—––””ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ O9QpGœ]â31w5*5 MA lSpZÃÎâ31˜7%77 VpgLpg–€X9M]qæ_æ>P99P]-dqaZ g×IÕ9?'PI'~qaZ g×IÕ9? PI'‚wq*q-S]B |Phq-o'Z háØh    *u33s?eŽS9?&u{n?B]-duìQx?b°L¯U9?,u€p}?œ‚]-duHáz?œµLUuRž~?hbuhPI]p.órh*í-3 ó]B |P×IÔPhs„ŽS9?%›9:9:$m-3 s(]-dm]~ cháØ×h  Ôh ô@® ×£<¬hmI-u'PØ×h  Ôh ô@® ×£<¬hmIc×IÕhâP%‚]-t.1„Úh #±h9?ÜqaZ gØcÕh2#@c(%‚wq*b$×Z #€@I9PØ×Z #À@I^PØh  Ic×IÕhâPiØcœ„-o(‚-u°º6“ih26“c6“<°6“i9?%6“c®6“h  «ÍÌÌ>h2<6“c¯6“h  «333?h2΁-uˁ-o` 9PØcI °L¯U9?,6™` “’6™` ,ȧÅ6™` “’6™` w§î` --b$×IÕ«fff?hâPIPØh  Ic×IÕhâP9PØcI |@WpZpI]p€P€Œf ^pY3m3ap ‰bp ‰cp ±dp @epfp@gphp@ipjpunp€‰€|}|]_ ›ôüŸµLiO±LiL¯Lõà@««fff?|¯Li}L¯LôàÀ««fff?|¯LiŸ²º¯Li9?, Liú-ržl «|€?Õ±l fff?l fff?iö¯ŽB«l °B€?*C lpk3Y3`p@AqpppVsp «1@VupQwpQl3sš ‡û0h3×× JI \ @xpypQZ3zpA z  >ü;-g3c A 7\ ’7\ &“7\ &\ A  @ H|pQ‰}pf3c « :ýHg %D–g 7\ :rg \ f3A\ g &'¥g ( pQ‰g €~p@qe3^.¶ Pþz e3 AqQ‰T:DqGqg»  þ-%‚-3 w*  €ŒEqQ‰HqQ‰o4Jq4d3nD >µ°ºGºn Gn’±W9?&i²«Wº¬nH9?&n«n¯¬9?&W9?&w¶n9?ÿÿÿÿ¹W9?&¶H9?ÿÿÿÿ³nGH LqIqQ‰OqQ`3MqVn* Î ÊøÚE#ž6I«V6ED6p 6I6E6Qž6žI«V6žED6žp 6žI6žE6žQž6“I«V6“ED6“p 6“I6“E6“QN«µW9?%6 Nœ9D®9?œ6 Nÿÿ«WVÿÿj—6 N€¢6 NI9?6 NDyIW|6 N9DIÀÀ-c86 N%a+N PqQ‰QqSqQ‰RqWqiG —  €VqcK · Y/-s}¡6™}€-s'@}-| ›6™@6™ _3YqL€Zq SLV3C I.„ õ!wB*BD ^quqF †!ÿÿÿÿúÿÿÿÿF^3B &"^3-WqH( UqQ›€u `qdqJš ù[3 * *]3h‚-e „-aP R-a††-Q j-a÷›9:$9:$-W3-Q՚9:Q%y(÷÷-WCy' ]3€aqQX3gq€a[3€ŒuLi$Ž²uM'* ÔMcqN@± {tå E [U3l ×Õ]E Õe[6“l s°ál €?l #\B CNC%FÜš9:$9:$Ù‚š9:S%A„‚‚Ú *#-h8-m -f ?„-l-mCb N6•FCÙÙ-B 6•Fœ6•Fÿÿ‰—6•F€¢6•F6•F6•F“&Å, ô1™ª=NÙ°º9?6•F9?è6•F%’’‚‚-f  š9:S%-B 6•Fœ6•FÿÿB—6•F€¢6•F6•F6•F“&Å, ô1™ª=N’°º9?6•F9?è6•F%]N[a+F]_N€?-e (‚-QD -^'-Q(-^(C–9:9:$VNl \a=]eJNl \a=]-Q-^ S€]qLlqsqkqy aq+mš9:9:$*,wl*l/a9 Sdcw.¬Se*lSd10l mqoqpqqqT3mxqwZÞ*s* x  £jq)ø Ù}$-Q(C%—w*ErY*Ky(—‚›9:$9:$›9:$9:$ o‚$ ŠtqH %!3C%1‚w* š9:Q%y( _qKr^W &(ÿÿÿÿúÿÿÿÿFS3B 4"9%S3-WqH5qq( u|q$B)QOBJ GARBAGEu €u wq{qJ" P#hP3 * *Q3f-Q j-afš9:$9:$q!F Q3€IrR3{'96( R3* ~q€aP3€ŒurDrMzq_@4 ß$)åF G O3Qwa*m Õ]a Iqm ×Õ]F ÕeG •°ám €?m #J a+J g__€?ø–9:9:$V_m I a=gJ_m I a=g-Q-N3 rqH ArBr‰CrEr‰FraGr^rH!j(ð&YWzd-m2-G!dH!Lw* H!-G!WU! £@r)N ˜'y(-Q( ŠJrHT ï'w*y( vqarYÉ Ì2ÿÿÿÿúÿÿÿÿu NrJb ) Or€Pr€‰Qr€a€ŒzMrSr9h r)>{.;<w{*{U ({-e ' {HrxRrVrGt m*>z.;<wz*zU 'z-c ' zTri5UrK h Ñ+5C.;ErC*çPlayerDriving.PlayerMove: No Vehicle s‚-M3š9:9:$C-T' —±K 9?&Cx€?Ó¿°K 9?ÿÿÿÿCx€¿ÓCxû°L 9?ÿÿÿÿCH€?3±L 9?&CH€¿3CH WrYr€@ZrMXrL3@Š ”/ð)–9:9:$S]e-Q?h]e-QM.;ÞwM*œ‚š9:T%M-e MV (M-e (ނš9:k %M-c MV 'M-c (_L3@ J3[rz !Œ& \r£]r) w2K Š`rHÇ ±2K €G:I3bÓ †3(o‚$  a*H3I3' €@|rdrx'„% €C crL_Þ Ê4®*„-O-OnL h*-| (-s(„rL*Ù o##€?¡ oÚwnâ×Õ9?Å,LÕ9?“&Å,Lw ±ÛnwŸ?niâÜnwrÜisÜiwn××ÔÛwnÔiÛinÔrÛsnnânA××ÔÛwAÔiÛiAÔrÛsAAâAw`âÜnZ„µ|9?% µE9?%^µ|9?%nâ×nÔÕ9?,`»««o:L|FµE9?%p nnâ×nÔÕ9?,A»««o:LEAâÜn`F°ÛAôý4?p âØp ÔÛp ±Ûn9?%nâ×p 2nâØp AâÜn``âÜnoÍn`Aa+onL_Li oL _ro€hrjrŒkr‰lrmrnror}grrro, î<o‚$ -a sr€‰€FqrG3B2 s=&"G3-WqH( yr€u trxrJ; a>HE3 * *F3F-Q j-a F3€@s{r€aE3€ŒMsJ!| 5$Sš9:9:$ rJ!* W7\@\W&W\J! Mwrm@I –?tC%N 7‚‚-f  š9:S%-B ]m#a+N w_m€?W×Õ]âØnÔwÛwnÕe`Ö°áW€?W#‚-QD -}'-Q(-}(C–9:9:$VmWM a=weJmWM a=w-Q-} pr~rBsD3PsC3£}r)m OCÕ#rY*Kw#€?ån`A}$y(-Q(“›9:$9:$o‚$ C%-i'a22 ŠDsH} EkC%iw*a>2y(-i-i K3dsUõ ’Qÿÿÿÿúÿÿÿÿ9Hsk  sF-G €}GsJso” ÍFE,f-Wo‚$<qq-a Ks€‰€FIsB3B  þG¥ŒB3-Wo‚$‰±6“ 9?%º‚-a UR 6“ ®õ^ÒC9?Å,>qq‰ÿ„±6“ 9?, Q qq‰D  ¹6“D®2À@Q aA3R D  (ywQ *qq‰u!3a333?(¡v!3o‚$( YsL!zú#Sš9:9:$ rL!* X7]@]X&X]L! Q €GUsÕOsQsu LsTsJÇ ±LÎåS 2~2}2 * *@3-a‚±ÛS  *9?%/„±6“ *9?%—6•́f-WBf @3€[sZsWs€aS €ŒRs]sN!_ä š9:9:$ ár*l‚wF*{Fo W¡Fo Š ‚rW* {V W¡V ŠÆrW*W¡[! ŠáwW*WS/a0 N!N!] 10  u6as‰MSs`@Ô eNÿåT F{2Z××Õ]T ÕeFÕZ#€?p°áZ€?Z#]`FE_`@֖9:9:$V`Z$a=EõJ`Z$a=E-Q( {sP!`Ìëš9:9:$ ár*l‚wF*{Fo V¡Fo Š ‚rV* {V V¡V ŠÆrV*V¡[! ŠáwV*VV/a0 P!P!~10  |2^s_sJt‰Y j\s3ê ¯PH?‚f-Wš9:9:$qqv!3 £cs)ò XQv!3o‚$ FsksT yTÿÿÿÿúÿÿÿÿMH@ÿ R1å[ \ z2 *×Õ][ Õe\ u°á *€? *#Œ‚-V Ù *# #_H@–9:9:$VH *$"/JH *$" bsgshsI€Š£fs) VTo‚$ esBtWP šZÿÿÿÿúÿÿÿÿsQN. ÅVH'°DQoƒ¯QDDQ~ BÿÿOps€‰qs€‰rs€ss€ts€us€vs€aws€xs€ysM6msy2d ? jX'8Ny2x2w2(((($v2t2 Bÿÿ|sjss'¹I²,w*Ÿr‚wF*{Fo I¡Fo ŠƒwI*Iª{V I¡V ŠI 0~s ±©0i!öi!@ €s}sr'­| `2u2a¬Q)u2 MzsW@D Y”OW|Ea+ j–9:9:$VW *$"’JW *$" ] £@t)N ‚Zo‚$ At€Ct_ Gtx[ ![' €u Fts2J` š[4*r2oÔÕ9?Å, â*s2 ©QtPtLt€a€ŒMHtZ@h h\¶åa c o2*Õ ×£<××Õ]a Õec ÕZ#€?_Z€?•–9:9:$VZ*$"ŽJZ*$" Et VtYUtV€ ˜^ÿÿÿÿÿÿÿÿÿÿzTt9z S^ xStn2G~ Š^ 9n2 ht@_tRtHT‡ _-k -f-f'HSÂwH*« i 'H~rH*HH˜-f HH«-f r#HHHT;OHeHîr#-3(ö-3'-f-k  B$p2XtYtZtWtR¥ ªa(-3(Oe5n!X B$\tSO¯ RbW ro* S%U–S7oESoE~¥S [tFatiž Cc €A4`tJž Qc {btPž `c Àÿÿ]ctnž ic ÀÿÿndtF ¹ yc zetgt9œ àc-3'T t@zt£k2)Ê Ÿd,"w*a   Z-Y' ŠjtHÔ Ie&w*-N(-Y( Yl2Au~6jÿïÿÿÿúþÿÿÿ\nt1Ü +f ot€pt€qt€‰rt€‰€Š&pmtrÜ Lf ostsÜ Xf V9tt\Ü lf E4utwtL à Ÿf ]vtnä Ãf Âÿÿx3xtj2Dè óf! Dj2' ÂÿÿfytVí Jg°X 5š9:9:$ d-i-J&'}i Âÿÿz{t}t9ù khOV x|ti2Gÿ Òh 9i2 su@puŠ~tHþh?w*K5w*W(-Y( £@u)Ái%w*W'-Y' Ylt]uMWn ÿÿÿÿÿúÿÿÿÿq DuT‘j €FCuFuiŸj €zEuHu9ÓjV xGuJuGk ^IuLud2Nlþn !Uqn  Bÿÿn €^tOu€`Pu€Qu€Ru€Su€Tu€Uu€Vu€Wu€Xu€€aKuh2k8ºlq8kh2@w* -@ 'Poo„²o ±o€?aÍÌL>'V H jYu3IèmV £[u)NnaÍÌL>'V Š\uHTjn-3(a( B9Bu]vU­ nÿÿÿùÿÿÿúôÿq `uT[Ün €\_ubu1[9o cu€du€eu€‰fu€‰€Š&]aun[Bo ÀÿÿfguV_mo Âÿÿ_ hujuxc˜o' €niuF hÐo ]4kuO lúo_  Âÿÿzlunu9qJp>–9:9:$ &-oO <<²o9?%aÀ?( xmug2G{q 9g2 Mou~ @ƒ…qŒåf2e2d2ï-Y S¡6™S9D««B~ |¡6•S9D««B~ E6•Sœ6•Sÿÿ䂗6•SPF–6•SÀÔ±E9?%6•SPFä6•SÀa+S  w#*a+# n~ _~ [–9:9:$V~ #$"‚J~ #$"-Q( MuxutuV @rusqua2N²$vl8Na2_2^2-\2-[2-Z2-Y2X2W2’œÿ‘6•,€œÿ‘6™, BÿÿzuyuBwnvF {u |u }u ~u uC Bv€Cvwu`CÀÓw ]6•]ÀÚ%a%bq 6™]%å–,`#  a+]wU2`V2dáØ`#  ʱdbbda¡6™]¥K6™]’q aa+] vu@vCEvGvHvIvJvKvFvH jDv3Û(z -o( ^NvPvdïs{ BÿÿQv€Rv€Sv€`Tv€Uv€Vv€Wv€Xv€Yv€Zv€[v€\v€€A9OvT)õ¬{ÈQLiT$k $Ôw* #o‚$-G(-w'6Z Y$-Y(ha'((m-X'a-^ '-o'-Y C-3'a @(/a9 TÅIš9:T9:$TS$Ta'((T-w'T #To‚$T-Y(ThT-X'10 LvE9^uLwBʐ,a@@a-^ ' nÿÿÿÿÿÿÿúÿÿq avT#ï €F`vcvi#ý €pbvr# € odvs#€ U6evgvZ'9€' €RfvV,t€R Âÿÿzhvjv91ǀA3-o1„²o ±o€?-o( OV xivT2G=¢ 9T2 MvH skvS2NPê‚*8NS2R2Q2((((P2O2N2 Bÿÿ–`!CŒovC‰rv€sv€tv€P2€pvC‰uvC‰vvC‰yvMmvy@b„‚B-o'-Q9-Q(åM2K2J2U¡6™U9D««By|¡6•U9D««ByE6•Uœ6•Uÿÿ‚—6•UPF–6•UÀð±E9?%6•UPF6•UÀa+U?–9:9:$Vy#$"jj„²o ±o€?-o(ny_y @^ wv@L2}v{v^ ‰zvhC‹cˆ [6•[ÀÚs%k%lt 6™[s%å–s,h#  a+[wH2hI2náØh#  ʱnllnks¡6™[¥sK6™[’t ka+[ @] PwNwAw@] YDwYEwYH z1GwH a!j@w3ŠžŠ -o -o(-Q( £Jw)¯*‹—1‚w*r  *QLi*M*-3'-o'-x(-Q(-{'-K(Ca€?(K ŠKwHÂόW-{(K#*#-3(-Q(a-^ ( _vG2t-Ó\Ž -l-G2-l-Z ( –MwF2s-ÚՎ -Z -F2-Z -l( Rw OwE2N.㰏Ee|{ E2C2B2C-D2QDisconnect Âv^w\wd!SwCTw @QwA2W.êfJ*-A2e| g-u He| e-u  ÂvUw@@2CVwZwOò‘-f €Yw~1^,÷—‘ca„š9:9:$š9:9:$B~1}1|1-{1 Â1m@C_w^aw[wv ],‡’é焚9:9:$š9:9:$B %ç–B 7bÝwv 6WB bv KH6KB b6EB b'¥B ; Â1lw^vp1`wy1H9”u1y1x1-w1 Âvb Cdwew!cwNš”v1 Âvfwhw!iw!jw@Cr1nwbwuwmwn-m-l-j-~ owm1v@rwl1Dxww@xw@yw@zw @{w @|w @}w @~w @w @@x @Ax @Bx @@! @ExKxHx@IxJxRKy@Jy@Lx E©MxENxEQxRxSxTxUxVxWxXxYxZx[x\x]x^x_x`xaxbxcxdxD!OxEexEfxEgxEc1hxEixEjxEkxE›lxE›mxE¥nxE©M!oxE qxE rxE uxk1M xxyxzx{x|x}x~xx@yAyByCyDyEyFyGyHyIyj1Zy‰MyNyOyPyQyRySyTyUyVyWyK $*"""?" ±±¢äø AZ  "" " " Ù @ÿÿÿÿÿÿÿÿÿöööÿöööÿöööÿöööÿöööÿöööÿÿÿöööÿöööÿöööÿöööÿöööÿöööÿÿÿöööÿöööÿöööÿöööÿöööÿöööÿÿÿöööÿöööÿöööÿöööÿöööÿöööÿÿÿöööÿöööÿöööÿöööÿöööÿöööÿÿÿöööÿöööÿöööÿöööÿöööÿöööÿÿÿÿÿÿÿÿÿÿ) @===ÿ{{{ÿ{{{ÿ===ÿ{{{ÿöööÿöööÿ{{{ÿ{{{ÿöööÿöööÿ{{{ÿ===ÿ{{{ÿ{{{ÿ===ÿH ŠŠŠÿŠŠŠÿŠŠŠÿŠŠŠÿ[ ŠŠŠÿsxEJz@Fz`y@]yg1$*???" &Ÿ¢äø AZ  "" " "  @€ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ1@€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€B^@€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@Rn@@ÿÿÿ¯ÿÿÿCÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿoÿÿÿCÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿ?ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿCÿÿÿoÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿ?ÿÿÿCÿÿÿ¯ br@ÿÿÿcÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿÿ ÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿ ÿÿÿ;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿcrs@ÿÿÿ4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4Âs@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿásÿÿÿ ÿÿÿÿÿÿÿÿÿ ôsÿÿÿ by@ayf1cyu)dyeyfygyhyiyjyky@S!@ fly py‰qyÅryŒsytyuyvywydny xy yyzy–{y‰|yŒX f1 ähCX V7.š¡ChrSound.UnderWater_Loop šK!v ~y@zV-ï²%,_ €yBzU-ôø%,^ €AzT-ù? -d' CzS-þ~ -d( Dze1R- ~ e1 EzQ-# -A!' GzO-"j# -A!( Hzd1N-'Ã#¡o1d1 lz@UzIzM-,$-R-R(-R' C KzMz_4£$ž -V  l°á €?Išœ6• ÿÿ% ~  6•~ %w~ ¡6™~ ~  @~  Nz€~ €Ns&KӁ[ %_–[ 7NUr[ NŸs&X[ NAN[ &_¥[ yrX*X* s&X LzmMLÿ&Ä-Ž­9?“’T!M!6™.9?9?%(p“’T!M!6™.i—p€¢pK‡–p€ÿÿ¡piº‚˜šýÿÿp –p%G9D«@œÅm킖%p ˜pXG9D«@œEmG9D««¬9?pÀ@HBm8‚—p% —GpGp_‚–p% –GpGp¡6™.G˜—6™.€¢6™.pÀ–6™.€ÿÿ¡6™.˜' ‚p$*'# ÿ*×××ÿ"„Ÿ¢âø AÓ  " " " " ³~@Í Í     ÍÏÓÍ   ÍÍÓÓÏ   ÍÏÍÍÏÏÍ   Í ÏÏÍÍ  Ï Í  ÍÓÏÏÍÏÏ Ï Í      Í ÍÍÍÏÏÍ  Í ÍÍÍÏ Í ÏÍ ÓÓÓÓ ÍÍ    ÓÏ  ÏÏ  ÍÍ ÍÓ   Ó ÍÍÍÍÏÏ  ÏÓÏÏÏÏÓÍ  ÏÓÓÓÏ  ÍÏÍ  ÍÏÓÏÍ ÏÏÓÓÏ ÍÏÓÓÍ ÏÓÓÍÍÓÍÍÏÏÏÍÍÏÏÏÍÍÏÍÍÍÍÏÏ G€}y‰PzvLd\*Ô-Ž­9?“’W!O!6•.9?9?%(v“’W!O!6•.i—v€¢vK‡–v€ÿÿ¡viº‚˜šýÿÿv –v%B9D«@œÅv킖%v ˜vXB9D«@œEvB9D««¬9?vÀ@HBv8‚—v% —BvBv_‚–v% –BvBv¡6•.B˜—6•.€¢6•.pÀ–6•.€ÿÿ¡6•.˜I!6•.' Xz6Zz5B€[z4]z3VzzK}û-,Ž®dzCQ!(I¯Q!®dzCf‚²ÀÀI °I@«HÂz»›‚°I ²IÀ@@«HBz»@««¬IÀ@HBz悱I ±@I@I‚°I °@I@Ižd@td' _z2I€`z1sz0\zqH’ƒ0!¡6™qj AwaGNØ~ÕB99q~(*'¢6™qj ,†waGNØ~ÕB99q~(*'¡6™qj ¡6•qj ØwaGNØ~ÕB99q~(*'¢6•qj ,waGNØ~ÕB99q~(*'( ,Mb1dz@G€ez@X! azFBŽ4ÎŽdt l¯tdX‚²ÀÀl °l{«HÂF­‚°l ²lÀ@{«HBF­{««¬lÀ@HBF؂±l ±{l{l‚°l °{l{lžd{IH.#  ®d9?,úv¹d{ K!va #  ž6“a @!ÌwaY!a1Øa Õ®d9?,ú99a (*dáØY!a ¹d9?,ú hz jzozkzmz S{izqz@Ôå7Œ-`(-g(-i(e°6Ub²6g6B-`'6g6B››³6g6B-`'6g6Bæ°6žU9?%ã²6žg6žB-g'6žg6žB³6žg6žB-g'6žg6žBg°6“U9?%d²6“g6“B-i'6“g6“B³6“g6“B-i'6“g6“B‚‚-`-g-i `€`1rzf0–pzvz~ P<"-j(-k(Y–6•N %V˜6•.6•k-j'6•.6•k™6•.6•k-j'6•.6•kؖ6™N %՘6™.6™k-k'6™.6™k™6™.6™k-k'6™.6™k‚-j-k j€tzwzuzZ!| :š?yg×gÔUZ!.a<.aN Z!w‚@~ ·š9:K 9:$6d6žd6“d6•e%6™e%6 e%K $ÏϚ9:K 9:$K $6B6žB6“B6•k%6™k%6 k%6U6žU6“U6•N %6™N %6 N % xz‚ayzzk_XC”-Z)-J-JMzj1I-M-MLzi1d-N-NKz‘‚‚-J -M -N-Z(ïĄš9:K 9:$š9:K 9:$| zïÛ-|Bzïï-D!x zk1zaz zz‚{zT x |mGÕ -D! rS!* \!ØS!    U Â\! µ­9?“6™U 6™.9?9?%<“6™U 6™.²—<€¢<”Ж<€ÿÿ¡<²‚˜šýÿÿ< –<%x9D«@œÅT Z6‚–%< ˜<Xx9D«@œET Zx9D««¬9?<À@HBT ‚—<% —x<x<š‚–<% –x<x<¡6™.xá—6™.€¢6™.¹ –6™.€ÿÿ¡6™.áÓµ­9?“6•U 6•.9?9?%<“6•U 6•.l—<€¢<NŠ–<€ÿÿ¡<lœ‚˜šýÿÿ< –<%v9D«@œÅT ð‚–%< ˜<Xv9D«@œET v9D««¬9?<À@HBT ;‚—<% —v<v<b‚–<% –v<v<¡6•.v›—6•.€¢6•.sÖ6•.€ÿÿ¡6•.›I!6•. |z‚~z‚z‚@{‚A{‚B{}zOw ­ÓN5Ka#€?v]!ØOÕ®A9?,99vxraM_1]!O(*àOÕ¯A9?,K ³AôÛØOMKAàOÕ¯A9?,K ^1v¹d9?,¹A9?,Ka#€?.AôÛØOMKAàOÕ¯A9?,Kv. C{E{‚F{@G{H{Š‚^€I{UJ{O¶„œ^Sˆw^*q‚^-M r6f ^ d -u!'^^^^Tš-u!q! l3D{uWÛŒT@ž6“u@!V‚‚Ž6g9?%Ž6žg9?%Ž6“g9?%.º‚‚‚ÙF!u Žm9?% ŽQ9?% -Z/.·ŽdE!ug çµQ9?%6™/6™.-Z(þ-Z/.F‚‚Ž6g9?%Ž6žg9?%Ž6“g9?%/…-n1K a(#€?€?Øug/ÂK /.F!uú-R/.¡6™/9DQ¡6•/9Dmug—6™/€6™/“6™/àF–6™/€ÿÿ6™/’6™/y—6•/€6•/“6•/F¬–6•/€ÿÿ6•/’6•/yÓ–6•/hÅÿÿ6•/hÅÿÿ÷÷—6•/˜:6•/˜:6•/6•.¡6™/9DQ¡6•/9Dmh—6™/€6™/“6™/5›–6™/€ÿÿ6™/’6™/hΗ6•/€6•/“6•/›–6•/€ÿÿ6•/’6•/Î(–6•/hÅÿÿ6•/hÅÿÿLL—6•/˜:6•/˜:] ®]1d-|w u/] K a#€?/îwa^!\1ØuÕ®] 9?,99/u(*] ôÛØu^!K ] àuÕ¯] 9?,K gu./mQE!d K{N{V{L{V À]ÿÿÿÿÿÿÿÿÿÿO{Q{c{R{d3M{[1w?bæU„r#*#-rN‚w*-rOUOk-|dt[1#R#  Ìr#º-3WRSzCÊsRS är#S  |0r{w!g«Ø,*w!a/!I.w!-M( T{W{U{c]~d-O-3'+-3#u {Y{Pie<r*q!M POc~ ÂÿÿK3Z{ZËùn2ÿÿÿÿÿÿÿÿÿÿl2[{]{xØëoÿÿÿÿÿÿÿÿÿÿk2^{GÖÃo5n!X w \{_!fÝ2p#rf_!f*w _!  X{| _{qä¡p)!wf*fkf*|   X «X c e{b{Z1z\*TQZ1({T5T Âh{`{d{X1Bà BX1 Âz{@m{Ng{_ O#mâÕz€_ &#_ ê_ “}_ &uSÓwu*Œua/!J.u|.u E À@.u'D %_  Q9=,ÿ9=,ÿ9=,ÿuuT; N_  Bÿÿf{j{i{W1}4% }W1 Â@[5l{Xw,;„UçPlayer List:/a9 XRçpššXI( ping9SXP)10 k{‰n{x,B(p?restart$( Âp{V1^8GŠ jV1( Âz0w{t^uL CAt-n4\AwP *tv!8tv!kx t  ƒw.t*`.t ga;x t `P a:x t `ÿta/!I.t-M-@1õta x tš9:9:${ Stw{ *]r{ Mt{ bt{ { T)6 `%.t M`.tmx `òw.t *.t z €¿üq!V !ta x ta+`tu!8tu!k X cX -D( u{m6t{U15 »r U1T1 Âÿÿx{^ZŒ j!™~G /%[*P *h[a3/a0 AP gf‚|9WP 0G  wP g10  }{\Rý w[* ^  Q6v{S1E`o S1R1Q1P1 Âÿÿ[5b€{{€p{|{@…ˆ šj% b%A‚–b,{bhG ¥b¥bo„—b,zbhb%G bh^ n6y{O1b|!l O1K1G1F1B1 Âÿÿm@|w+Žnm\j%F–j,;{jh¥jCj,l‚—j% zG G %h A|L1[&'’)L1)M1)N1 ;G H1Y&&=)H1)I1)J1 :}!E1J#ÿ)E1)D1)C1 P ¯~{E|r MJ ÂF|€@D|H|o Su  ÂI|€J|€K|€€G|M|l Y  ÂN|€ŠFO|P|Q|‚S|Yo{T|R|`,( þ V|X|},‰ €W|Z|F.š €Y|\|C.Ì €D[|wí\D-r Cw*ž@ e@ ö@ @@ f]|$-f-Da p^|A16ŠU A1~0 C|B|y0D'UJy0x0K0 Â_|}0\ AJ@‚S °Ã}0 P -{0'm( €€€b|g|U O/ *&wY*Yw0'( w0€M}PK dÞ /a0 cP!!rP10Šš9:q9:$/a0 cP!†…‚P-] P-qrP10ܚ9:q9:$/a0 cP!ØׁP-qrP10š9:q9:$/a0 cP!rP10 €@f||e_S «@|~ J6²|J9=,ÿ|waÑppppppp Skill 9U@  NAVIGATION MoveTarget 69VK PendingMover 9VS MoveTimer 9Uz (žJ~ |(€@J|YaÑppppp Destination 9Xj Focus 69VM Preparing Move 9T-h (žJ~ |(€@J|<aÑppp RouteGoal 69Vr; RouteDist 9Uq;(žJ~ |(€@Js%]–s,"rsY*—s,{ pp{ --69V“s&Y]SS–s,{ pp{ 69VsY-¥sÊ|aÑp RouteCache: { (žJ~ |(€@J U|–k|l|m|n|Y9j|q|Z   r|€ €Lp|t|f ’=ö_d6“_x   6“x Mj6“MdâØ_x b!âØMx ^Ûdb!c!Üd#€?à°Ûc!ØMx 9?%’ÀÅ@^ô“@Å@^ ^€o|u|v|@w|x|@y|z|‚|s|c ]š† |c !-@  o p rM*6 o % °c ÍÌL>6™pœ6™pÿÿ6•pœ6•pÿÿn9?œ6™ÿÿ±º¯n9?6™p9?€ö°n9?6™pžn9?¹n9?n®«9?6™p9?“&Å,c ««n9?,c 6™o 9Dnm9?œ6•ÿÿ»±º¯m9?6•p9?€­°m9?6•pžm9?»¹m9?m®«9?6•p9?“&Å,c ««m9?,c 6•o 9Dma+o  {|}|~||@}||C}V,Ñ/ D}€€B}F}U,ÕY* €E}H}T,ڌ! €e9G}J}_æ™ K}€!€jd9I}t0zíh7‚wM*°¯}@@MMSt0-h ' *# Q0u0M&] )u0)v0 4c9L}b úS1/SF aS*-h ( b9N}s0^ ‚Ÿ-h (S*Œ„rK*Ka/!_kHŒwk*¥‚‚ka/!`$þ.T kA0s0N bkKk kktD UA}O}S}T ( €R}U}S G €r0 @g P}q0 W}g [}!V}]}o-r0q0 €Zf8 NKI‚w.f*w.f *.f p Q}^}iP,òP/aA i>MLw.bi *.bi S 10 _}c}xp0Y} C d} C a}ªe} C g}E&m)h}H0b} K0l0Œ9?‘Åm0ÛI@,ŽIÿe!!/a0 n0e!HH10 j}k0|, ó$<\k0-o0' i}Hpk}n}&j -p0' o}€€l}H f}‰q}‰T$*<-ÿ*öööÿ":çg¢çø AÓ  " " " " 1±@çûIöû˜c>Òãöv>$ÌØÞV/·ŸÓŠ>$±±ã>ªŸ±ž$ññèñڀ©©Ì>$c˜®ÄÄÚÒÚҘø®®¶ÚN$ƒuƒŠ' ΊŠžžS<ûĘ®Ò‹/,øš®žÒS$÷à¡ÿûûûûûøöøöââÚèøøûûûûñûv6z¡÷à+âjSccSSI>NcjcjjvSSccjŠvòÅÚIIIISIIII>>?>SSSSII>‹cæØÄ®Š‹cS/'>>/Scjj€€˜˜‹˜ÍSàÅØÅØÅ3ÅŸ)Ÿ­'  ”­'    ”­'    ƒƒ    !'ƒƒ'      '%ƒœ    !'œƒ'   '%'.šš   "%)=Jšƒ)2   )=JMa­ƒ   šš­ŸŸš­šš­ƒ”ƒƒƒuƒœššœƒƒƒœƒƒƒœšœ r}t}u}v}w}‚‚x}@y}@z}@@{}@|}@@}}evw6‡gee„„„š9:v9:$š9:v9:$š9:v9:$ ‚š9:v9:$af! I=' 0} A¿[-|B9š9:v9:$-d(-S'k $-l!-|-k!-C0 u@~$SE *u-|-l!a-k!-A-^ A~~B_$ aZ *t */a0 ~^]þ~\NOrZ *Z ~]t ~0 10 ~}@f0fB~hgrQ S‚-^ -C*@‚š9:v9:$hN*h‚š9:v9:$hd*ò-|„rZ *B‘rZ **ì‚wt *C°áØt   h  áØZ   h  t òZ š9:v9:$hcOOh/a3 m!LKrm!h8h10 C~Úm!€E~°D~n!P ž1/a3 n!8n!10 G~°H~D š ÿÿÿÿÿÿÿÿÿÿJ~L~r+³ý@ÿÿÿÿÿÿÿÿÿÿpM~¯¡ -|-|-|P  N~€€K~P~q+Á @ÿÿÿÿÿÿÿÿÿÿpQ~Œ(-o!-|-|'&-o!P  R~€o!€I~°O~U~o+Ê®@ÿÿÿÿÿÿÿÿÿÿpV~ȏ -|( W~€€T~}Oԋ  -|(v @$‚w.}*.}N …$‚w.}*.„.}d.}h ²$‚w.}*.}d Î$a}Ÿf! Õ$' $‚w.@}*³.@}lh! ÿÿ €p}HY~@@ji0L3O-L(/a3 K:9OK-L'8K10M-Laj( \~@]~_~@\^~h01#SÆ‚-|š9:v9:$³9?h0h! wJ*}±Y9?%i°¯OY O<\J·{f J 5f Ä-^a( [~H`~e~€‰f~€‰€Š&b~Hc~@i0W8 G¡ŸOWiÿ\!/a0 UIhgþIM\IWW10’{f W 5f Ÿ-^a( h~@g~H–g0i~}k$kkiO}iÿ\!/a0 UjhgþjM\jO}}10 n/n/@m~n~0M @ èI@%G–@7M =w@M *@M $¥@ T$*+QAÿ*öööÿ"U‚K0¢çø AÓ  " " " " L¿@çûIöû˜c>Òãöv>$ÌØÞV/·ŸÓŠ>$±±ã>ªŸ±ž$ññèñڀ©©Ì>$c˜®ÄÄÚÒÚҘø®®¶ÚN$ƒuƒŠ' ΊŠžžS<ûĘ®Ò‹/,øš®žÒS$÷à¡ÿûûûûûøöøöââÚèøøûûûûñûv6z¡÷à+âjSccSSI>NcjcjjvSSccjŠvòÅÚIIIISIIII>>?>SSSSII>‹cæØÄ®Š‹cS/'>>/Scjj€€˜˜‹˜ÍSàÅØÅØÅ3ÿÿÿÿÿÿÿÿÿÿÿÅŸ)ÿÿÿÿÿÿÿŸ­' ÿÿÿÿÿÿÿ ”­' ÿÿÿÿÿÿÿ  ”­'  ÿÿÿÿÿÿÿƒƒ  ÿÿÿÿÿÿÿÿÿÿÿ!'ƒƒ'   ÿÿÿÿÿÿÿ'%ƒœ ÿÿÿÿÿÿÿ!'œƒ'ÿÿÿÿÿÿÿ'%'.šš  ÿÿÿÿÿÿÿ"%)=Jšƒ)2ÿÿÿÿÿÿÿÿÿÿÿ)=JMa­ƒ   šš­ŸŸš­šš­ƒ”ƒƒƒuƒœššœƒƒƒœƒƒƒœšœ o~pp~Z·erZ*ZJ%c–J7M YwJM *JM Ze0¥J s~k~Hu~v~Hx~Hw~@'–y~‰z~@'–|~@'–pd0~ ˆ@-O-O''-b0Iq!AKd0c0†-O(f›A%H?Aq!†çWARNING: invalid song handle @€€}~@'–}?r!a0[ ­<\a0 q&ZBs!8÷A?‚{r!ws!*s! 5r! A@'–G@HLtjp$* ÿ*—Ãÿ"Ÿ®ú4¢çø AÓ  " " " " 7Æ@‰‰Œ‰‰‰ŒŒŒ‰LJKJEHKMMPPU6LIGJKKKJFIPSKIIJHDGGEBGLOPMKJJIGEGFHFILLLMJJIHGGHFHHJLKLMKIIIGHHGHHKMKLOMKIIHHHFFHKKILOLJHIHGHFFIJIHLROMJJIHIKJKLJKPQOMMKKKKKLJJMQOMNLKLLKKJLQQMMMKLLJJHMNLJLKJGIKOINQPJL T$*hÿ*Íæöÿ"ۂ=6¢çø AÓ  " " " " ¿Ê@ÓÈò÷÷Óò÷û·ӂVr'ë÷ûÌN÷äØØäà¯ë÷àÅÅÈ;ëÐëeØØ'ò'>N3â÷㞀VVV¯òÈ·IèvŠŠV·ò·ÈŒÒŠŠVÈÓjÐήv®ŠÈ·Œ‹®v®ŠvÐŒ¯ ®®®®‹/®˜jÆŠecÆ®/qϱ*~ž˜Ïù¹}ñŠL¹»}}'•v€*I˜èe}g}} ÏÏi»ì»¡tšjR¡ùÅÏ ÏùÏ}_ÛÏɍ€”}H€RR  jhq3”ø¬ªš9:9:$™³¯qL¥X&e›l%cll%„‚—c% -W'ŠcžqLª-V&j MtNtE@'–Q!R!S!rO@'–`0 {~@CX q T@'–Y@'–\t]t^t_t`abcdefghij Z@'–VTn€o€j€lTk@'–s€€pTv€w€€q@'–z€€x@'–}€€tT~A€Z0Q0{@'–C€@'–@€y!| ÏI ry!*%N%E–N,;rNZ0y!N¥N% D€@'–N€F€@'–_0E€z!M (—nU| Y0f³º¬z!^6“z!f cº¬6“Uv!Ux!,d€–˜ H€@'–@A B€U€J€@'–I€Wj1gçW-Q(W KW  j W-P'W W  b WSW *#Wo‚$W _WB> M€@'–CN€\f?œr\ *(C| \ Z°º¬\^6“\f cº¬6“Cv!Cx!(j\( O€@'–C€Q€@'–K€A S€@'–{!q U€@'–KX0j ÙSK/a0 !jPO‚wjM<j  ¡jrè10 W€@'–ZX€v8Š8r.v* v vv vv  Y€@'–qZ€W0m*8r}.W0r}* 8–9:}9:$ p‚š9:}9:$±6“} 9?% ýw.b} *} KB} MB} z @}BB>$š9:}$9:$}o‚$} X0} *#pw{!*}a{!  T€A [€@'–zo^€@'–`€@'–Uc€$* />ÿ*'‰Æÿ"- lD¢çø AÓ  " " " " Ø@ûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûõõõõõõõõõõõõõõõõõõõûûûõOOõõõõõõõõõõõõõõõõõõûûûõOOOOOõõõõõõõõõõõõõûûûõOOOOOOOOOõõõõõõõõûûûõÔÔOOOOOOOOOõõõõõõûûûõÔÔOOOOOOOOOõõõõõõûûûõûûOOOOOOOOOõõõõõõûûûõOOOOOOOOOOOõõõõõõûûûõOOOOOOOOOOOõõõõõõûûûõOOOOOOOOOOOõõõõõõûûûõOOOOOOOOOOOõõõõõõûûûõOOOOOOOOOOOõõõõõõûûûõOOOOOOOOOOOõõõõõõûûûõOOOOOOOOOOOõõõõõõûûûõOOOOOOOOOOOõõõõõõûûûõOOOOOOOOOOOõõõõõõûûûõOOOOOOOOOOOOûõõõõõûûûõOOOOOOOOÔÔOOõûõõõõûûûõOOOOOOOOÔÔOOõõûõõõûûûõOOOOOOOOûûOOõõõûõõûûûõÔÔOOOOOOOOOõõõõûõûûûõûûOOOOOOOOOõõõõõûûûûûOOOOOOOOOOOõõõõõõûûûûOOOOOOOOOOOõõõõõõûûûûûûõOOOOOOOOOõûûûûûûûûûûûûûûõOOOOOOOõûûûûûûûõOOOOOõõOOõõ @ÿÿ³tÿ¯}ÿœ‡ÿµÿ¹ƒÿœ‡ÿ³}ÿµ€ÿŒ‚ÿŸ†ÿŠr ÿŽ~ ÿ†ÿƉÿ¿… ÿ» ÿÇ ÿ»}ÿºÿ­uÿ) ÿ)ÿ²…!ÿŠ|ÿ’!ÿÁ ÿĒÿ¢yÿµ†ÿ±ƒÿÿ’kÿɔÿœ‰ÿőÿ§xÿµ…ÿǒÿ­}ÿº†ÿœ‰ÿÀÿϘÿʒÿÁ‹ÿ¢tÿ²‚ÿƍÿ̒ÿŸˆÿº‡ÿȏÿ͓ÿ—m ÿ¿‹ÿÊÿČÿŽƒÿž„ÿŏÿ©z ÿµ€ÿÊÿȎÿ¯{ ÿ·‚ ÿ»‡ ÿµ ÿE1ÿ²€ ÿ¥v ÿ¬{ ÿšvÿː ÿ¢rÿƉÿ³{ÿžmÿŸ›>ÿŸ—3ÿ³Œ,ÿª†)ÿTBÿŠ&ÿÀ—,ÿ¿“*ÿz_ÿ¿“'ÿšƒ"ÿ“rÿÁ”&ÿ×&ÿ¶Œ!ÿŒŽ!ÿŸ‘!ÿ•"ÿ»ÿƖ ÿvÿ¹‹ÿ®…ÿÕÿ»ÿ’ÿǘÿ͛ÿÁÿºŒÿdK ÿŠ~ÿœÿuWÿ·‰ÿ̚ÿºÿÀ‘ÿЛÿ±…ÿŸŽÿ¯‚ÿ¹Šÿ¹ˆÿĒÿɕÿœ‹ÿ̘ÿ¶†ÿœ‹ÿÁŽÿ©}ÿœs ÿŽ†ÿ£x ÿ­~ÿ±ÿŒ‹ÿƒÿΘÿŒg ÿ©} ÿ²„ ÿ¶„ ÿ®~ÿª{ÿU=ÿ ÿ©‹5ÿ­Š,ÿbOÿ•x"ÿÁš+ÿ!ÿ‡jÿ¢€"ÿ›{ ÿŜ'ÿZGÿ¬‡ ÿœ•#ÿž|ÿž!ÿ§‚ÿך#ÿœyÿŽŽÿėÿ͟ ÿ™wÿ›yÿРÿÔ€ÿž{ÿ–ÿ¡}ÿØšÿÒ¡ÿÕ¢ÿ—sÿ¡|ÿĖÿƘÿžzÿ£}ÿ±…ÿºÿØ€ÿÇ©HÿB7ÿ¬6ÿÄ¢7ÿhVÿŸš-ÿŽ#ÿœ—$ÿ\Jÿ˜yÿŸ~ÿ€ƒÿŸ~ÿŽÿÓ§ÿž}ÿÌ ÿšyÿÀ–ÿYF ÿŠ€ ÿÔ€ÿØšÿKB ÿVJ!ÿtc%ÿÿš‹ÿgT ÿ,'ÿXMÿ®“ÿس ÿÿeZ'ÿɬ#ÿÙ»%ÿ61ÿ„uÿ-'ÿÿ!ÿÕÄBÿOHÿƒt ÿ×Ç)ÿ ÿpiÿœš$ÿ ÿ°²*ÿ@Bÿ:>ÿQZ ÿQ[ÿ15ÿZg ÿ36'ÿrƒ0ÿkÿCT ÿGYÿUmÿÿ¹Î°ÿ·ââÿËóÿÿÒóÿÿa€@'–d€@'–e€@'–f€@'–K_€Z «ÎŸÿ|!!/a0 g|!((10Ÿwg*ZØ g  Ÿ°º6“Zg26“ZŸ°áZg>g*-i‚-m-K-i -mK g€\0i€v 26)-i‚-m-K-i -m [0k€{ 8°)-i‚-m-K-i -m fl€V0gBúŽ rz*>‚š9:zT 9:$V0d*yò-m„„-i z-Qz-gŠwg*g ^€t!m€XaSa M‚z-DrX MzX mn„-i z-D'X#a+9PØz  X  X MzX czzXXX zz( j€€Cp€ifd> û -i (P„z-Qz-gi zz'÷z-Di#a+9PØz  i  i Mzi czziii zz'( q€€t€CBbfšv rB*(<B F bB_b(b -h 'b *#' v€–Uz€$* ÿ*99;ÿ"qèH¢çø AÓ  " " " " Vå@OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOœOOOOOOOOOOOOOOOOOOOOO¡OOOO¡OOOkwOOOOXwwwwwwwwwwwwwwww€OOwOOOOwwwwwwwwwwwwwwwwwwOOOOOOOœOOOO¡OOOO¡wwwwwwwwwwwwwwwwwwOOkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOœOOOOOOOOOOOOOOOOOOOOO¡OOOOOOOOkwOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOœOOOOOOO @ÿÿ ÿÿ;99ÿVRRÿKGGÿ[VVÿRMMÿOJJÿd]]ÿpggÿRJJÿ|ppÿKBBÿÿi_^ÿ‚utÿtgfÿuhgÿVJIÿTHGÿREDÿPHGÿQIHÿPGFÿLEDÿRECÿpdbÿrfdÿIDCÿQHFÿPC@ÿYMJÿQGDÿOFCÿ]QMÿ[OKÿXMIÿe`^ÿidbÿ;64ÿQ>6ÿ, ÿod_ÿ[PKÿYNIÿSHCÿfWPÿUF?ÿ6)#ÿ1"ÿYOJÿWMHÿbSKÿ_PHÿ]NFÿ6'ÿ2#ÿ:'ÿB=:ÿ>96ÿTJDÿTICÿ%ÿ;,#ÿ3%ÿ2$ÿ?*ÿ ÿ7$ÿK1"ÿ:&ÿ?)ÿ>(ÿ:2-ÿUB6ÿE5+ÿE0#ÿ ÿ:(ÿA- ÿ=(ÿ$ÿ?(ÿC*ÿ2/-ÿ[MCÿ$ÿ) ÿTA4ÿ1&ÿO=0ÿ=.$ÿ4'ÿ3&ÿ6(ÿ/"ÿ5&ÿ)ÿ1#ÿ<*ÿP8(ÿ5%ÿN6&ÿ8'ÿ&ÿ ÿ?*ÿ9&ÿR7$ÿA+ÿ;'ÿG/ÿ ÿ6#ÿD,ÿ ÿ)ÿÿR@2ÿS?0ÿ:+ ÿ8)ÿ1$ÿ9*ÿ ÿÿ ÿ8(ÿJ5%ÿ3$ÿ5%ÿM5"ÿ;(ÿ>*ÿ7%ÿ<(ÿ*ÿ;&ÿ& ÿ)ÿIB<ÿJ:-ÿ#ÿ"ÿ,!ÿ3&ÿ ÿ4&ÿ3$ÿ<(ÿ1 ÿB-ÿ! ÿ)('ÿ ÿ ÿL6ÿ ÿ ÿÿÿÿÿÿHEHÿÿ#!#ÿ ÿd_cÿ²©°ÿ·®µÿ¬£ªÿ®Š¬ÿ‹ƒ‰ÿ«¢šÿ®¥«ÿ‡‚…ÿœ³¹ÿ¥›¡ÿ§ €ÿ{txÿ¹°µÿ°¥«ÿ¹®Žÿ»°¶ÿ« Šÿ423ÿ–“ÿ+)*ÿ·¯³ÿº²¶ÿ·­²ÿŽª¯ÿµ«°ÿÿ™”ÿ‘‡Œÿ¶«°ÿº¯Žÿ»°µÿš“–ÿ–™ÿ‘Šÿx{ÿunqÿ‡‹ÿ‘ˆŒÿŽ…‰ÿlgiÿgbdÿ³©­ÿ¶¬°ÿSNPÿ –šÿš”ÿ¹­²ÿº®³ÿ’ˆŒÿ”Œÿš’•ÿ…ˆÿŽ†‰ÿ‡Šÿ‡‚ÿzruÿŒ¯ŽÿŒ±µÿŽ©­ÿµª®ÿ¹®²ÿ« €ÿ¯€šÿž“—ÿ—ŒÿEBCÿpjlÿ”‹Žÿˆ‚ÿ·«¯ÿ¹­±ÿSMOÿ‹„†ÿ‰‹ÿ™‘“ÿA=>ÿ„|~ÿŒ°³ÿž•—ÿ_Z[ÿ‘‡‰ÿ·¬®ÿˆ‰ÿ“‹ŒÿLBCÿx€€{€n€^Kg  "—gj&BK @B8C/a0 @?þ\gMU00 10 }€fA!g'51r6f ! d gg ^! BN€DNsT0v*ëLH‚‚ws*s uS0±T0 bs9?%s ~€^I^–€]0HR0SY@>‚ws*s usSR0P0 J^r 10€N0iM0iO0TTp$* ÿ*§·ßÿ"ŒbBQ¢çø AÓ  " " " " `ð@mæçoooäáãmoqmáàámttqåãåttqtmottoçttttoåommçåq060# # ##88 6ç`åm068 0  8660086 0 688806686 0888888888888888668888686888 RTJ0ia|Xa,,Ïa(q!  GN\€I0ST$* r(ÿ*öööÿ".&e¢çø AÓ  " " " " _õ@¯ÓÓÿûãàùüûÌ÷àÜ ò÷œõà»ÕØ̱à÷­©e÷æàÛÛÛØ»ú©š©2÷ÿûà[ÿüüõõòõüü©­­”¥÷òææòëÈü­”©©±­©­©­œ­©'÷÷2äÝØÌJõàIï±±±±©±©©­­­œ†Ý÷qØà,÷–÷»»Å»±»±±š­œœØ/NVN÷÷æÛÛÛÝæÖ­œœÕè÷ù ՍgRRYd}àœ­ÕÈ÷ÓЪ”}u}±ò”ÜËûÈÓ»ëòÓäpãÌ÷ÙÈлTÜÐŒº' WN€@VK"j8 L}!K"%_L"&_M"DK"L"M"aE0(q!B ]`BKÚ ÿÿÿÿÿÿÿÿÿÿ[Nj3I  "A}!pp%_,&_ _Na@NkK^ @a +|^ a(((#-\ BK dKBL* av*l*/a9 K^]þK\NOrv*vK]lK0 10 c^0eMud Ïv!8oM “-jYM 6™o6™“wA"*¡6™o“’€6™M 6™A" hw.M*š9:9:$Q SwQ *ûrQ MMQ bMQ Q TÇV.Ma  çpp9V Teleport failed for 9VM(ï„š9:9:$±¯@"?6 o%.Ma+o.M Mo.M xo@"Tw.M *.M z €¿.MO.MvMP('¡‡Ma  u!8(¡-jMa+ou!8È-I0M C0Ëb-jöš9:M$9:$6•Y%R99YWÛM RM ×ØM ÕWRÕW99M …-G0¶6M €¿š-F0¶6žM €¿Ë-D0¶6“M €¿' fho€iklmnpgqµÊ7-\ -\ 5-\ /a3 B"4mB"10 r€B"€oZpX8œ}j„-\  rX* h‚X-pòXn (v Xv Xv  sqtpmÍÇ{•„™~^ /%™~^ #%’‚‚š9:9:$w.p*.pN#` ..p ^ y/a0 brôó‚|9WrN^  wr@ r¥@ ó—@ ,ô10@ §@ yw@ *8pa/!IpP('@  upyw.p*<\.p uwxyfvLgõ:qó‚‚-\ "w.b&L @Y*,|9W&L @YN^ ñ°º¯6“ 6“L  ®2L2|Ø L  6“|ñ°á|®>L>mLrv*Brv**i‚wl*C°áØl  L  áØv  L  lv z|€|^@0AUü ‹5ppppThe Server has determined that your client is illegal and you have been removed! Code: 9S@0 [/]aa C"`~_$*+ ÿ*ç€Cÿ"ðoat¢çø AÓ  " " " " S@ììììæììæìììììììììììììììææææææææììææææææææììææææææææììææææææææììææææææææììææææææææììææææææææììææææææææììììææææììììææææì ß'ìææææì%æì'ìææææì ææ{'ìææææìöììììì&...&&æææ#'ìææææìåæææææææææææææí''ìææææìåæææææææææææææææ'ìææææìåæææææææææææææíññìææææìößßììììììììì&ææíñññìææææìææ¢ññìææææìñææññìææææìñæññììììììññññññ A‚CA0wf)#„rH *rw *(1„rwLH a‚‚w.{wO*$r.{wOwH wXwO邰6“ ®6“w  w2wy(w @9PØ w  w zH 'tSwt*‚‚‚wt*rtSH t[w tXw @9PØ w  w zH 'ttTE( C‚t€E‚w_G‚I‚@ŠË_$*+ ÿ*ãŸ-ÿ"•I:w¢çø AÓ  " " " " ë @ììììæììæììììììììììììììììììììæìììææææææææìììæææìììææææææææìììææææææììææææææææìììææææææææììææææææææìììììæææìììììææææææææììæææììææææææææììæææììææææææææììæææììææææææææììæææììììææææììììæææììææææììæææììææææììæææììææææììæææììææææììæææììææææììæææììææææììæææììææææìììììììææææììææææììææææììææææììììììì J‚@ŠÎ}/5\ë ç}/!R  ÂQ‚SÄKH‚ B1)ÿD"!/a9 w `D"((10K fO‚{/g"€ rw*Kwa!Q H‚w-h w`*`||‚š9:wT 9:${/d* F†S€CP‚\f8 r\Lw(a ×w  |/a*w}„w-Oa\\ zw'( L‚@ŠÒ€t!S‚waPhV.T wOg‚wV*›9:VC",ÿdš9:w^9:VC"'6VØ w  6“VE"áV6‚‚°¯6“ 2®¯6“w  w2 A@±¯6“ 2¯¯6“w  w29?° °E"~/'dw-hwvgw'( T‚V€W‚@ŠÏY‚ÈZ‚Ç[‚Ã\‚Ær!]‚Øz/XUd‚$*npeÿ*üýðÿ"Ó:Œ¢äø A  " " " " û@êêéèåØÖÓÒÌËÆÄ¿œ³°­«šŠ€‹‡ƒƒƒƒƒšê=êÚ¶¶¶¶¶¶£££¢¢¢¡ ŸŸžœ›™™˜•“’’¶=鶛›."8Y›››››››››››››››››››’=裛›N5*1R•››››››››››››››=墛T „„îýÛL()<[››››››››››?×¢›'+„„ÃýýŽ‰òù{4 "7Y››››››@Ö¡3køûý÷‰„ôâV!;[Y’‘BÓ ›Y-  $MzæýȄ¯ýø…„ã·,-DÒ ›››››[96U„ñüÄÀýá€OWE̟›››››››››’P%  0wv„úýµzZGʜ››››››››››››››S2&y—U“ IŖ   “JĔ"Ç}ÔæÎ~‚Ïæß‚Üæ݄~Üæà|~ K•е‰…ï÷Մˆë÷ᄊñ÷戊ë÷ì€ ‘]Ÿ˜òóɄŠðóՄˆäö̈́„ïíՄŠëóÑn‘_Œ˜ ’a²•’c­“’d¬’/çýÁ#ýõXÁýýxõýÁýýx“fª’Áýxýx/ý®ÞõÁýx:ýš®ýÁýx:•h§‘ÁýQx::ýxÁýÁýýÙºýÁý˜j¥‘Qýý:ýx/:Áýý:ýùýýÁýý:˜lŽ:Þýx:ýxXxÁýx#ýõýýÁýx#™mŒÁýýÁ:ýxÁýÁýý¹ýýÁý™o‡¹ýQýÁ#ý®ÞçÁýxXýxºýÁýxX›p†/Þýç/ýõQÁýýxý:®ýÁýýÁ›r†œt†¡†ž’’’’“•˜˜˜™™›››œœœžžžžžžžžž»†š>>>=>ACDFHIJ\^`bcegilmoqrsu© J _‚@aŠÛ@ÿÿÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ!""ÿ#%$ÿ$&%ÿ")(ÿ#/.ÿ%((ÿ%,+ÿ'/-ÿ(**ÿ*+*ÿ,/.ÿ.10ÿ,53ÿ/><ÿ165ÿ788ÿ6;;ÿ888ÿ9<;ÿ<>=ÿ7JHÿ=BAÿ?HGÿ;OMÿ?QOÿ@BAÿAEDÿDFFÿCIHÿGMLÿHHHÿCPNÿ@USÿE]ZÿKUTÿQRQÿRWVÿVVVÿUXXÿWYXÿ^_^ÿApgÿAqhÿBqhÿCsiÿCrjÿDskÿDtkÿFvlÿGwnÿHwoÿIypÿJzqÿJ{rÿM}tÿNwÿRmkÿ[mkÿTpmÿXqnÿcdcÿcggÿhihÿklkÿmnmÿazwÿl~}ÿpqpÿpuuÿuvuÿyzyÿ|}|ÿO€wÿPyÿQ‚zÿRƒ{ÿS„{ÿT…|ÿU†}ÿV†ÿW‰€ÿY‰‚ÿYŠƒÿ[Œ„ÿ\…ÿ]‡ÿ^ˆÿj…‚ÿ`’Šÿb•ÿn‘Žÿe˜ÿgš“ÿhš“ÿjœ•ÿkž—ÿkž˜ÿlŸ˜ÿp‹‰ÿ{‡†ÿ}ƒƒÿ‡†ÿs“ÿz‘ÿp“ÿsš—ÿv›˜ÿvœ™ÿ|žšÿl ˜ÿw œÿtŠŸÿy¡ÿ|£ŸÿsŠ ÿw©¢ÿ{£ ÿ{€ ÿ|€ ÿz¬¥ÿ{¬Šÿ}®šÿ~¯šÿ€€€ÿ‚‚‚ÿƒ„ƒÿ„„„ÿ†††ÿ‚ˆ‡ÿ‡ˆ‡ÿ‡Š‰ÿ…ŽÿˆˆˆÿŠŠŠÿˆŽÿŒŒŒÿŽŽŽÿŽ•”ÿÿ’’’ÿ”””ÿ–––ÿ™™™ÿÿ€°«ÿ²¬ÿ„³­ÿ…Ž­ÿ‡¶°ÿ€œ³ÿ‰·°ÿ‹ž²ÿ‹¹ŽÿŽ»Žÿ›£¢ÿ’µ±ÿ‘œ·ÿ—¹¶ÿ’Ÿ¹ÿ”¿ºÿš»žÿœŒ¹ÿ   ÿ¡­«ÿ¬¬¬ÿ©²±ÿ¯ž·ÿžžžÿ–Á»ÿ˜ÁŒÿ™ÃŸÿ›Ä¿ÿ Àœÿ·À¿ÿžÆÁÿ€ÃÀÿ¡ÊÅÿ¥ÌÇÿ§ÍÉÿ©ÄÁÿ«ÈÅÿ«ÉÆÿ©ÐÊÿªÐÌÿ­ÒÏÿ³ÏÌÿ·ÊÈÿ»ÏÍÿŒÊÉÿºÑÏÿ²ÖÒÿµÙÕÿœÕÒÿœÖÔÿ¹ÜØÿŒßÛÿœßÜÿÂÌÌÿÊÊÊÿÃÓÑÿÁÕÓÿÂÖÕÿÇÒÑÿÃÙ×ÿÅÙ×ÿÅÜÚÿÍØ×ÿËÚÙÿÉßÝÿÀáÞÿÊàÞÿÕàßÿÃãàÿÅæâÿÇçäÿÎäáÿÑæãÿÑæäÿÔèæÿÖêèÿØëèÿÙìêÿÜìëÿÞïíÿÞðîÿâîíÿàñïÿáòðÿåôóÿëø÷ÿëùøÿìúùÿïüûÿðýüÿÿÿc‚@aŠÙe‚@aŠ,@g‚@@X€@j‚€t/m‚X*0S  €Xl‚@4r 4wz*zs*2w*a un‚$?W w*aq!Xu o‚\ HÕ  p‚s/V*O” gv as/v mm\wz*zsv v zzz*av  Lƒk‚[ l v € f‚@aŠ,t‚@aŠ,w‚€x‚€€u‚@aŠÇ€@v€y‚@aŠÃ}‚~‚}€‚Aƒ‰P"q/p¡âq/Lav/$ z‚€Cƒ_ ªz*%g W(a tEƒGƒ\ž‡x/  HƒIƒJƒ€@Fƒp/R œÝLo‚$q!O p/-P (-z/(-D3'-J 'h €A-|2( DƒW%C Bƒ±Oƒ€€cQ"QƒwÏi q!X €‰PƒTƒO Ý ÿÿÿÿÿÿÿÿÿÿj3Öµ q!g  £Sƒ)Ûó aA( €@Q"Wƒuæí' Xƒ€€Vƒl L H„„r.l *.l -MC˜.l 7%(eb$l    (£f .l <\.l '( Mƒ€ZYƒE8úUSL ET"T .Ep.E_ T".E h‚H//============================================================================= // ZoneTrigger. //============================================================================= class ZoneTrigger extends Trigger; // // Called when something touches the trigger. // function Touch( actor Other ) { local ZoneInfo Z; if( IsRelevant( Other ) ) { // Broadcast the Trigger message to all matching actors. if( Event != '' ) foreach AllActors( class 'ZoneInfo', Z ) if ( Z.ZoneTag == Event ) Z.Trigger( Other, Other.Instigator ); if( Message != "" ) // Send a string message to the toucher. Other.Instigator.ClientMessage( Message ); if( bTriggerOnceOnly ) // Ignore future touches. SetCollision(False); } } // // When something untouches the trigger. // function UnTouch( actor Other ) { local ZoneInfo Z; if( IsRelevant( Other ) ) { // Untrigger all matching actors. if( Event != '' ) foreach AllActors( class 'ZoneInfo', Z ) if ( Z.ZoneTag == Event ) Z.UnTrigger( Other, Other.Instigator ); } } \ƒU"K */a3 U"8U"10 bG//============================================================================= // ZoneInfo, the built-in Unreal class for defining properties // of zones. If you place one ZoneInfo actor in a // zone you have partioned, the ZoneInfo defines the // properties of the zone. // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class ZoneInfo extends Info native placeable; #exec Texture Import File=Textures\ZoneInfo.pcx Name=S_ZoneInfo Mips=Off MASKED=1 //----------------------------------------------------------------------------- // Zone properties. var skyzoneinfo SkyZone; // Optional sky zone containing this zone's sky. var() name ZoneTag; var() localized String LocationName; var() float KillZ; // any actor falling below this level gets destroyed var() eKillZType KillZType; // passed by FellOutOfWorldEvent(), to allow different KillZ effects var() bool bSoftKillZ; // 2000 units of grace unless land //----------------------------------------------------------------------------- // Zone State // by elsacred on 2009.10.16 const MAX_ZONE_STATE_NUM = 10; struct native ZoneStateFog { var() int ZoneState; // 1 ~ 10 »çÀÌ var() color DistanceFogColor; var() float DistanceFogStart; var() float DistanceFogEnd; var() float DistanceFogBlendTime; }; var(ZoneState) bool bUseZoneState; var(ZoneState) int CurZoneState; var(ZoneState) array StateFog; var int ExZoneState; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // Zone flags. var() const bool bFogZone; // Zone is fog-filled. var() bool bTerrainZone; // There is terrain in this zone. var() bool bDistanceFog; // There is distance fog in this zone. var() bool bClearToFogColor; // Clear to fog color if distance fog is enabled. var const array Terrains; //----------------------------------------------------------------------------- // Zone light. var vector AmbientVector; var(ZoneLight) byte AmbientBrightness, AmbientHue, AmbientSaturation; var(ZoneLight) color DistanceFogColor; var(ZoneLight) float DistanceFogStart; var(ZoneLight) float DistanceFogEnd; var(ZoneLight) float DistanceFogBlendTime; var(ZoneLight) const texture EnvironmentMap; var(ZoneLight) float TexUPanSpeed, TexVPanSpeed; var(ZoneSound) editinline I3DL2Listener ZoneEffect; // #ifdef __L2 // kurt //var(ZoneLight) bool bSunAffect; // There is Sun effect in this zone. // #endif //#ifdef __L2 // kurt //----------------------------------------------------------------------------- // Lens flare. var(LensFlare) texture LensFlare[12]; var(LensFlare) float LensFlareOffset[12]; var(LensFlare) float LensFlareScale[12]; //#endif //------------------------------------------------------------------------------ var(ZoneVisibility) bool bLonelyZone; // This zone is the only one to see or never seen var(ZoneVisibility) editinline array ManualExcludes; // No Idea.. just sounded cool //============================================================================= // Iterator functions. // Iterate through all actors in this zone. native(308) final iterator function ZoneActors( class BaseClass, out actor Actor ); simulated function LinkToSkybox() { local skyzoneinfo TempSkyZone; // SkyZone. foreach AllActors( class 'SkyZoneInfo', TempSkyZone, '' ) SkyZone = TempSkyZone; if(Level.DetailMode == DM_Low) { foreach AllActors( class 'SkyZoneInfo', TempSkyZone, '' ) if( !TempSkyZone.bHighDetail && !TempSkyZone.bSuperHighDetail ) SkyZone = TempSkyZone; } else if(Level.DetailMode == DM_High) { foreach AllActors( class 'SkyZoneInfo', TempSkyZone, '' ) if( !TempSkyZone.bSuperHighDetail ) SkyZone = TempSkyZone; } else if(Level.DetailMode == DM_SuperHigh) { foreach AllActors( class 'SkyZoneInfo', TempSkyZone, '' ) SkyZone = TempSkyZone; } } //============================================================================= // Engine notification functions. simulated function PreBeginPlay() { Super.PreBeginPlay(); // call overridable function to link this ZoneInfo actor to a skybox LinkToSkybox(); } // When an actor enters this zone. event ActorEntered( actor Other ); // When an actor leaves this zone. event ActorLeaving( actor Other ); j_ƒ3-J q!g  fƒm/t ó¯2*wB*pBt m/pp €@b o/o/hƒg E.!ÿÿÿÿÿÿÿÿÿÿUj/O4ß"Cõ ×#<¯Z«Zj/ tƒcƒLí) l/eƒ)9J"6™V`êo‚$h €? k/gƒH@·-h CZ+š9:$9:$o‚$ @{ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿ1ÿÿ ÿÿ)ÿÿ ÿÿ ÿ ÿ)ÿ)ÿ ÿ1ÿ ÿ ÿ9ÿ ÿ) ÿ1 ÿ) ÿ)ÿ1 ÿ9 ÿJÿ9 ÿ))ÿ1)ÿ)))ÿZÿ9)ÿ1)ÿ1) ÿ9)ÿA)ÿ9)ÿ)1 ÿ11ÿJ)ÿ91ÿJ)ÿ11)ÿ91ÿ111ÿ91)ÿJ1ÿ19)ÿJ1ÿ99ÿs ÿb)ÿ99)ÿJ9ÿZ1ÿ999ÿJ9ÿÿÿÿZ1ÿJ9 ÿA99ÿb1ÿ9A1ÿJAÿs1ÿAAAÿJA)ÿZAÿJAAÿbAÿZAÿƒ1ÿJJÿZA)ÿbAÿJJ1ÿbA)ÿsAÿJJAÿbJÿ”1ÿJJJÿsAÿRJAÿJRAÿƒAÿbRÿsJÿRRRÿbR)ÿZRAÿŽ1ÿ”AÿsRÿbRAÿsR ÿjR9ÿƒRÿZZJÿ¬AÿZZZÿ‹RÿƒRÿsZ)ÿƒR)ÿbb9ÿsb ÿœRÿbbRÿƒbÿbbbÿsb9ÿjbRÿÍAÿœZÿƒb)ÿ”bÿsj9ÿƒb9ÿjjZÿ€Zÿjjjÿ‹jÿŽZÿsjjÿƒjAÿ‹j1ÿœjÿ‹sÿssZÿÅZÿssjÿœj1ÿ‹s1ÿsssÿƒsJÿ{sjÿœsÿÕZÿ‹sJÿƒsjÿ€sÿ‹sZÿŽj ÿ{{jÿ€s1ÿŽsÿœsJÿ{{{ÿ€sAÿîZÿÍjÿŽs1ÿƒƒsÿœƒ1ÿÞjÿƒƒƒÿ”ƒZÿ‹ƒsÿÍsÿŽƒÿ¬ƒ)ÿ¬ƒ9ÿœ‹Aÿ‹‹{ÿ¬ƒRÿ‹‹‹ÿŃÿ”‹sÿ̓ÿ”‹‹ÿœ”Jÿösÿ‹”‹ÿŽ”)ÿœ”sÿ””‹ÿ¬”Rÿ”””ÿæƒÿœ”‹ÿŔ ÿ¬”sÿՔÿœœ‹ÿŽœRÿŔRÿœœœÿ€œ‹ÿæ”ÿŜZÿ¬¬Jÿ€€œÿŽ€sÿ¬€‹ÿ՜Jÿͬ)ÿœ¬ZÿæœAÿŽ¬”ÿ¬¬¬ÿÞ¬)ÿͬbÿö¬ ÿŽŽ¬ÿœŽ”ÿæ¬ZÿöŽÿœŽ¬ÿÍŽ‹ÿÞŽjÿöŽ)ÿöŽ9ÿœœŽÿÅœ¬ÿîÅÿÍÅsÿæœbÿöœ9ÿîÅJÿÍŬÿæÅjÿÅÅÅÿÍÅÅÿæŔÿöÕ)ÿÞՃÿîÕsÿÕÕÍÿöՋÿÞÕÍÿæÕœÿöæJÿîæÍÿöî”ÿöîÕÿööÍÿöööÿ€i/qƒl a!8a¯h F"\ aF"q!X nÿÿÿßÿÿÿÿÿÿ(Q"h/uTT ‚-y/ °m3h/ ]ƒ@€P"lƒWW®  £oƒ)[Ñ -d' ŠpƒH_! -d( Z.class WeaponPickup extends Pickup abstract; var bool bWeaponStay; var() bool bThrown; // true if deliberatly thrown, not dropped from kill function PostBeginPlay() { Super.PostBeginPlay(); SetWeaponStay(); MaxDesireability = 1.2 * class(InventoryType).Default.AIRating; } function SetWeaponStay() { bWeaponStay = ( bWeaponStay && Level.Game.bWeaponStay ); } function StartSleeping() { if (bDropped) Destroy(); else if (!bWeaponStay) GotoState('Sleeping'); } function bool AllowRepeatPickup() { return (!bWeaponStay || (bDropped && !bThrown)); } /* DetourWeight() value of this path to take a quick detour (usually 0, used when on route to distant objective, but want to grab inventory for example) */ function float DetourWeight(Pawn Other,float PathWeight) { local Weapon AlreadyHas; AlreadyHas = Weapon(Other.FindInventoryType(InventoryType)); if ( (AlreadyHas != None) && bWeaponStay ) return 0; if ( AIController(Other.Controller).PriorityObjective() && ((Other.Weapon.AIRating > 0.5) || (PathWeight > 400)) ) return 0; if ( class(InventoryType).Default.AIRating > Other.Weapon.AIRating ) return class(InventoryType).Default.AIRating/PathWeight; return class(InventoryType).Default.AIRating/PathWeight; } // tell the bot how much it wants this weapon pickup // called when the bot is trying to decide which inventory pickup to go after next function float BotDesireability(Pawn Bot) { local Weapon AlreadyHas; local float desire; // bots adjust their desire for their favorite weapons desire = MaxDesireability + Bot.Controller.AdjustDesireFor(self); // see if bot already has a weapon of this type AlreadyHas = Weapon(Bot.FindInventoryType(InventoryType)); if ( AlreadyHas != None ) { if ( Bot.Controller.bHuntPlayer ) return 0; // can't pick it up if weapon stay is on if ( !AllowRepeatPickup() ) return 0; if ( (RespawnTime < 10) && ( bHidden || (AlreadyHas.AmmoType == None) || (AlreadyHas.AmmoType.AmmoAmount < AlreadyHas.AmmoType.MaxAmmo)) ) return 0; // bot wants this weapon for the ammo it holds if ( AlreadyHas.HasAmmo() ) return FMax( 0.25 * desire, AlreadyHas.AmmoType.PickupClass.Default.MaxDesireability * FMin(1, 0.15 * AlreadyHas.AmmoType.MaxAmmo/AlreadyHas.AmmoType.AmmoAmount) ); else return 0.05; } if ( Bot.Controller.bHuntPlayer && (MaxDesireability * 0.833 < Bot.Weapon.AIRating - 0.1) ) return 0; // incentivize bot to get this weapon if it doesn't have a good weapon already if ( (Bot.Weapon == None) || (Bot.Weapon.AIRating < 0.5) ) return 2*desire; return desire; } function float GetRespawnTime() { if ( (Level.NetMode != NM_Standalone) || (Level.Game.GameDifficulty > 3) ) return ReSpawnTime; return RespawnTime * (0.33 + 0.22 * Level.Game.GameDifficulty); } g/|C„a@å#b_76Ga76Ga’_&6m_6GaMutator6O_6Ga| class WeaponAttachment extends InventoryAttachment native nativereplication; var byte FlashCount; // when incremented, draw muzzle flash for current frame var bool bAutoFire; // When set to true.. begin auto fire sequence (used to play looping anims) var name FiringMode; // replicated to identify what type of firing/reload animations to play var float FiringSpeed; // used by human animations to determine the appropriate speed to play firing animations // FIXME - should firingmode be compressed to byte? replication { // Things the server should send to the client. reliable if( bNetDirty && !bNetOwner && (Role==ROLE_Authority) ) FlashCount, FiringMode, bAutoFire; } /* ThirdPersonEffects called by Pawn's C++ tick if FlashCount incremented becomes true OR called locally for local player */ simulated event ThirdPersonEffects() { // spawn 3rd person effects // have pawn play firing anim if ( Instigator != None ) Instigator.PlayFiring(1.0,FiringMode); } 0W" Ÿ W"0 wƒZ" "{7Z"g/W"Z" ]—//============================================================================= // Parent class of all weapons. // FIXME - should bReplicateInstigator be true??? //============================================================================= class Weapon extends Inventory abstract native nativereplication; #exec Texture Import File=Textures\Weapon.pcx Name=S_Weapon Mips=Off MASKED=1 //----------------------------------------------------------------------------- // Weapon ammo information: var class AmmoName; // Type of ammo used. var int PickupAmmoCount; // Amount of ammo initially in pick-up item. var travel ammunition AmmoType; // Inventory Ammo being used. var byte ReloadCount; // Amount of ammo depletion before reloading. 0 if no reloading is done. //----------------------------------------------------------------------------- // Weapon firing/state information: var bool bPointing; // Indicates weapon is being pointed var bool bWeaponUp; // Used in Active State var bool bChangeWeapon; // Used in Active State var bool bCanThrow; // if true, player can toss this weapon out var bool bRapidFire; // used by pawn animations in determining firing animation, and for net replication var bool bForceReload; var float StopFiringTime; // repeater weapons use this var int AutoSwitchPriority; var vector FireOffset; // Offset from first person eye position for projectile/trace start var float ShakeMag; var float ShakeTime; var vector ShakeVert; var vector ShakeSpeed; var texture CrossHair; var Powerups Affector; // powerup chain currently affecting this weapon var float TraceAccuracy; //----------------------------------------------------------------------------- // AI information var bool bMeleeWeapon; // Weapon is only a melee weapon var bool bSniping; // weapon useful for sniping var float AimError; // Aim Error for bots (note this value doubled if instant hit weapon) var float AIRating; var float CurrentRating; var float TraceDist; // how far instant hit trace fires go var float MaxRange; // max range of weapon for non-trace hit attacks var Rotator AdjustedAim; //----------------------------------------------------------------------------- // Sound Assignments var() sound FireSound; var() sound SelectSound; // messages var() Localized string MessageNoAmmo; var Localized string WeaponDescription; var Color NameColor; // used when drawing name on HUD var bool bSteadyToggle; var bool bForceFire, bForceAltFire; var string LeftHandedMesh; // string of name of left-handed view mesh (if different) var float DisplayFOV; // FOV for drawing the weapon in first person view //----------------------------------------------------------------------------- // first person Muzzle Flash // weapon is responsible for setting and clearing bMuzzleFlash whenever it wants the // MFTexture drawn on the canvas (see RenderOverlays() ) var float FlashTime; // time when muzzleflash will be cleared (set in RenderOverlays()) var(MuzzleFlash) float MuzzleScale; // scaling of muzzleflash var(MuzzleFlash) float FlashOffsetY; // flash center offset from centered Y (as pct. of Canvas Y size) var(MuzzleFlash) float FlashOffsetX; // flash center offset from centered X (as pct. of Canvas X size) var(MuzzleFlash) float FlashLength; // How long muzzle flash should be displayed in seconds var(MuzzleFlash) float MuzzleFlashSize; // size of (square) texture var texture MFTexture; // first-person muzzle flash sprite var byte FlashCount; // when incremented, draw muzzle flash for current frame var bool bAutoFire; // when changed, draw muzzle flash for current frame var bool bMuzzleFlash; // if !=0 show first-person muzzle flash var bool bSetFlashTime; // reset FlashTime clock when false var bool bDrawMuzzleFlash; // enable first-person muzzle flash //----------------------------------------------------------------------------- // third person muzzleflash var bool bMuzzleFlashParticles; var mesh MuzzleFlashMesh; var float MuzzleFlashScale; var ERenderStyle MuzzleFlashStyle; var texture MuzzleFlashTexture; var float FireAdjust; // Network replication // replication { // Things the server should send to the client. reliable if( bNetOwner && bNetDirty && (Role==ROLE_Authority) ) AmmoType, Affector, ReloadCount; // Functions called by server on client reliable if( Role==ROLE_Authority ) ClientWeaponEvent, ClientWeaponSet, ClientForceReload; // functions called by client on server reliable if( Role 0 ) T = T$" Reload Count: "$ReloadCount; Canvas.DrawText(T, false); YPos += YL; Canvas.SetPos(4,YPos); //if ( DrawType == DT_StaticMesh ) // Canvas.DrawText(" StaticMesh "$StaticMesh$" AmbientSound "$AmbientSound, false); //else // Canvas.DrawText(" Mesh "$Mesh$" AmbientSound "$AmbientSound, false); YPos += YL; Canvas.SetPos(4,YPos); if ( Mesh != None ) { // mesh animation GetAnimParams(0,Anim,frame,rate); T = " AnimSequence "$Anim$" Frame "$frame$" Rate "$rate; if ( bAnimByOwner ) T= T$" Anim by Owner"; Canvas.DrawText(T, false); YPos += YL; Canvas.SetPos(4,YPos); } if ( AmmoType == None ) { Canvas.DrawText("ERROR - NO AMMUNITION"); YPos += YL; Canvas.SetPos(4,YPos); } else AmmoType.DisplayDebug(Canvas,YL,YPos); } //============================================================================= // Inventory travelling across servers. event TravelPostAccept() { Super.TravelPostAccept(); if ( Pawn(Owner) == None ) return; if ( AmmoName != None ) { AmmoType = Ammunition(Pawn(Owner).FindInventoryType(AmmoName)); if ( AmmoType == None ) { AmmoType = Spawn(AmmoName); // Create ammo type required Pawn(Owner).AddInventory(AmmoType); // and add to player's inventory AmmoType.AmmoAmount = PickUpAmmoCount; AmmoType.GotoState(''); } } if ( self == Pawn(Owner).Weapon ) BringUp(); else GotoState(''); } function SetAITarget(Actor T); function Destroyed() { Super.Destroyed(); if( (Pawn(Owner)!=None) && (Pawn(Owner).Weapon == self) ) Pawn(Owner).Weapon = None; } function GiveTo(Pawn Other) { Super.GiveTo(Other); bTossedOut = false; Instigator = Other; GiveAmmo(Other); ClientWeaponSet(true); } //============================================================================= // Weapon rendering // Draw first person view of inventory simulated event RenderOverlays( canvas Canvas ) { local rotator NewRot; local bool bPlayerOwner; local int Hand; local PlayerController PlayerOwner; local float ScaledFlash; DrawCrosshair(Canvas); if ( Instigator == None ) return; PlayerOwner = PlayerController(Instigator.Controller); if ( PlayerOwner != None ) { bPlayerOwner = true; Hand = PlayerOwner.Handedness; if ( Hand == 2 ) return; } if ( bMuzzleFlash && bDrawMuzzleFlash && (MFTexture != None) ) { if ( !bSetFlashTime ) { bSetFlashTime = true; FlashTime = Level.TimeSeconds + FlashLength; } else if ( FlashTime < Level.TimeSeconds ) bMuzzleFlash = false; if ( bMuzzleFlash ) { ScaledFlash = 0.5 * MuzzleFlashSize * MuzzleScale * Canvas.ClipX/640.0; Canvas.SetPos(0.5*Canvas.ClipX - ScaledFlash + Canvas.ClipX * Hand * FlashOffsetX, 0.5*Canvas.ClipY - ScaledFlash + Canvas.ClipY * FlashOffsetY); DrawMuzzleFlash(Canvas); } } else bSetFlashTime = false; SetLocation( Instigator.Location + Instigator.CalcDrawOffset(self) ); NewRot = Instigator.GetViewRotation(); if ( Hand == 0 ) newRot.Roll = 2 * Default.Rotation.Roll; else newRot.Roll = Default.Rotation.Roll * Hand; setRotation(newRot); Canvas.DrawActor(self, false, false, DisplayFOV); } simulated function DrawCrossHair( canvas Canvas) { local float XLength; if ( CrossHair == None ) return; XLength = 32.0; Canvas.bNoSmooth = False; Canvas.SetPos(0.503 * (Canvas.ClipX - XLength), 0.504 * (Canvas.ClipY - XLength)); Canvas.Style = ERenderStyle.STY_Translucent; Canvas.SetDrawColor(255,255,255); Canvas.DrawTile(CrossHair, XLength, XLength, 0, 0, 32, 32); Canvas.bNoSmooth = True; Canvas.Style = Style; } /* DrawMuzzleFlash() Default implementation assumes that flash texture can be drawn inverted in X and/or Y direction to increase apparent number of flash variations */ simulated function DrawMuzzleFlash(Canvas Canvas) { local float Scale, ULength, VLength, UStart, VStart; Scale = MuzzleScale * Canvas.ClipX/640.0; Canvas.Style = ERenderStyle.STY_Translucent; ULength = MFTexture.USize; if ( FRand() < 0.5 ) { UStart = ULength; ULength = -1 * ULength; } VLength = MFTexture.VSize; if ( FRand() < 0.5 ) { VStart = VLength; VLength = -1 * VLength; } Canvas.DrawTile(MFTexture, Scale * MFTexture.USize, Scale * MFTexture.VSize, UStart, VStart, ULength, VLength); Canvas.Style = ERenderStyle.STY_Normal; } //------------------------------------------------------- // AI related functions /* CanAttack() return true if other is in range of this weapon */ function bool CanAttack(Actor Other) { local float MaxDist, CheckDist; local vector HitLocation, HitNormal,X,Y,Z, projStart; local actor HitActor; if ( (Instigator == None) || (Instigator.Controller == None) ) return false; // check that target is within range MaxDist = MaxRange; if ( AmmoType.bInstantHit ) MaxDist = TraceDist; if ( VSize(Instigator.Location - Other.Location) > MaxDist ) return false; // check that can see target if ( !Instigator.Controller.LineOfSightTo(Other) ) return false; // check that would hit target, and not a friendly GetAxes(Instigator.Controller.Rotation,X,Y,Z); projStart = GetFireStart(X,Y,Z); if ( AmmoType.bInstantHit ) HitActor = Trace(HitLocation, HitNormal, Other.Location + Other.CollisionHeight * vect(0,0,0.7), projStart, true); else { // for non-instant hit, only check partial path (since others may move out of the way) CheckDist = FClamp(AmmoType.ProjectileClass.Default.Speed,600, VSize(Other.Location - Location)); HitActor = Trace(HitLocation, HitNormal, projStart + CheckDist * Normal(Other.Location + Other.CollisionHeight * vect(0,0,0.7) - Location), projStart, true); } if ( (HitActor == None) || (HitActor == Other) || ((Pawn(HitActor) != None) && !Instigator.Controller.SameTeamAs(Pawn(HitActor).Controller)) ) return true; return false; } /* AmmoStatus() return percent of full ammo (0 to 1 range) */ function float AmmoStatus() { return float(AmmoType.AmmoAmount)/AmmoType.MaxAmmo; } simulated function bool HasAmmo() { return AmmoType.HasAmmo(); } function bool SplashJump() { return false; } /* GetRating() returns rating of weapon based on its current configuration (no configuration change) */ function float GetRating() { return RateSelf(); // don't do this if RateSelf() changes weapon configuration } simulated function float RateSelf() { if ( !HasAmmo() ) CurrentRating = -2; else if ( Instigator.Controller == None ) return 0; else CurrentRating = Instigator.Controller.RateWeapon(self); return CurrentRating; } function float GetAIRating() { return AIRating; } // return delta to combat style function float SuggestAttackStyle() { // FIXME - implement // if ( VSize(Instigator.Target.Location - Instigator.Location) > MaxRange ) // return 1.0; return 0.0; } function float SuggestDefenseStyle() { return 0.0; } //------------------------------------------------------- function ClientWeaponEvent(name EventType); /* HandlePickupQuery() If picking up another weapon of the same class, add its ammo. If ammo count was at zero, check if should auto-switch to this weapon. */ function bool HandlePickupQuery( Pickup Item ) { local int OldAmmo, NewAmmo; local Pawn P; if (Item.InventoryType == Class) { if ( WeaponPickup(item).bWeaponStay && ((item.inventory == None) || item.inventory.bTossedOut) ) return true; P = Pawn(Owner); if ( AmmoType != None ) { OldAmmo = AmmoType.AmmoAmount; if ( Item.Inventory != None ) NewAmmo = Weapon(Item.Inventory).PickupAmmoCount; else NewAmmo = class(Item.InventoryType).Default.PickupAmmoCount; if ( AmmoType.AddAmmo(NewAmmo) && (OldAmmo == 0) && (P.Weapon.class != item.InventoryType) ) ClientWeaponSet(true); } Item.AnnouncePickup(Pawn(Owner)); return true; } if ( Inventory == None ) return false; return Inventory.HandlePickupQuery(Item); } // set which hand is holding weapon simulated function setHand(float Hand) { if ( Hand == 2 ) { PlayerViewOffset.Y = 0; FireOffset.Y = 0; return; } LinkMesh(Default.Mesh); if ( Hand == 0 ) { PlayerViewOffset.X = Default.PlayerViewOffset.X * 0.88; PlayerViewOffset.Y = -0.2 * Default.PlayerViewOffset.Y; PlayerViewOffset.Z = Default.PlayerViewOffset.Z * 1.12; } else { PlayerViewOffset.X = Default.PlayerViewOffset.X; PlayerViewOffset.Y = Default.PlayerViewOffset.Y * Hand; PlayerViewOffset.Z = Default.PlayerViewOffset.Z; if ( (Hand == -1) && (LeftHandedMesh != "") ) { // load left handed mesh LinkMesh(mesh(DynamicLoadObject(LeftHandedMesh, class'Mesh'))); } } FireOffset.Y = Default.FireOffset.Y * Hand; } // // Change weapon to that specificed by F matching inventory weapon's Inventory Group. simulated function Weapon WeaponChange( byte F ) { local Weapon newWeapon; if ( InventoryGroup == F ) { if ( !AmmoType.HasAmmo() ) { if ( Inventory == None ) newWeapon = None; else newWeapon = Inventory.WeaponChange(F); if ( (newWeapon == None) && Instigator.IsHumanControlled() ) Instigator.ClientMessage( ItemName$MessageNoAmmo ); return newWeapon; } else return self; } else if ( Inventory == None ) return None; else return Inventory.WeaponChange(F); } // Find the previous weapon (using the Inventory group) simulated function Weapon PrevWeapon(Weapon CurrentChoice, Weapon CurrentWeapon) { if ( AmmoType.HasAmmo() ) { if ( (CurrentChoice == None) ) { if ( CurrentWeapon != self ) CurrentChoice = self; } else if ( InventoryGroup == CurrentChoice.InventoryGroup ) { if ( InventoryGroup == CurrentWeapon.InventoryGroup ) { if ( (GroupOffset < CurrentWeapon.GroupOffset) && (GroupOffset > CurrentChoice.GroupOffset) ) CurrentChoice = self; } else if ( GroupOffset > CurrentChoice.GroupOffset ) CurrentChoice = self; } else if ( InventoryGroup > CurrentChoice.InventoryGroup ) { if ( (InventoryGroup < CurrentWeapon.InventoryGroup) || (CurrentChoice.InventoryGroup > CurrentWeapon.InventoryGroup) ) CurrentChoice = self; } else if ( (CurrentChoice.InventoryGroup > CurrentWeapon.InventoryGroup) && (InventoryGroup < CurrentWeapon.InventoryGroup) ) CurrentChoice = self; } if ( Inventory == None ) return CurrentChoice; else return Inventory.PrevWeapon(CurrentChoice,CurrentWeapon); } simulated function Weapon NextWeapon(Weapon CurrentChoice, Weapon CurrentWeapon) { if ( AmmoType.HasAmmo() ) { if ( (CurrentChoice == None) ) { if ( CurrentWeapon != self ) CurrentChoice = self; } else if ( InventoryGroup == CurrentChoice.InventoryGroup ) { if ( InventoryGroup == CurrentWeapon.InventoryGroup ) { if ( (GroupOffset > CurrentWeapon.GroupOffset) && (GroupOffset < CurrentChoice.GroupOffset) ) CurrentChoice = self; } else if ( GroupOffset < CurrentChoice.GroupOffset ) CurrentChoice = self; } else if ( InventoryGroup < CurrentChoice.InventoryGroup ) { if ( (InventoryGroup > CurrentWeapon.InventoryGroup) || (CurrentChoice.InventoryGroup < CurrentWeapon.InventoryGroup) ) CurrentChoice = self; } else if ( (CurrentChoice.InventoryGroup < CurrentWeapon.InventoryGroup) && (InventoryGroup > CurrentWeapon.InventoryGroup) ) CurrentChoice = self; } if ( Inventory == None ) return CurrentChoice; else return Inventory.NextWeapon(CurrentChoice,CurrentWeapon); } simulated function AnimEnd(int Channel) { if ( Level.NetMode == NM_Client ) PlayIdleAnim(); } function GiveAmmo( Pawn Other ) { if ( AmmoName == None ) return; AmmoType = Ammunition(Other.FindInventoryType(AmmoName)); if ( AmmoType != None ) AmmoType.AddAmmo(PickUpAmmoCount); else { AmmoType = Spawn(AmmoName); // Create ammo type required Other.AddInventory(AmmoType); // and add to player's inventory AmmoType.AmmoAmount = PickUpAmmoCount; } } // Return the switch priority of the weapon (normally AutoSwitchPriority, but may be // modified by environment (or by other factors for bots) simulated function float SwitchPriority() { if ( !Instigator.IsHumanControlled() ) return RateSelf(); else if ( !AmmoType.HasAmmo() ) { if ( Pawn(Owner).Weapon == self ) return -0.5; else return -1; } else return default.AutoSwitchPriority; } // Compare self to current weapon. If better than current weapon, then switch simulated function ClientWeaponSet(bool bOptionalSet) { local weapon W; Instigator = Pawn(Owner); //weapon's instigator isn't replicated to client if ( Instigator == None ) { GotoState('PendingClientWeaponSet'); return; } else if ( IsInState('PendingClientWeaponSet') ) GotoState(''); if ( Instigator.Weapon == self ) return; if ( Instigator.Weapon == None ) { Instigator.PendingWeapon = self; Instigator.ChangedWeapon(); return; } if ( bOptionalSet && (Instigator.IsHumanControlled() && PlayerController(Instigator.Controller).bNeverSwitchOnPickup) ) return; if ( Instigator.Weapon.SwitchPriority() < SwitchPriority() ) { W = Instigator.PendingWeapon; Instigator.PendingWeapon = self; GotoState(''); if ( !Instigator.Weapon.PutDown() ) Instigator.PendingWeapon = W; return; } GotoState(''); } simulated function Weapon RecommendWeapon( out float rating ) { local Weapon Recommended; local float oldRating; if ( Instigator.IsHumanControlled() ) rating = SwitchPriority(); else { rating = RateSelf(); if ( (self == Instigator.Weapon) && (Instigator.Controller.Enemy != None) && AmmoType.HasAmmo() ) rating += 0.21; // tend to stick with same weapon rating += Instigator.Controller.WeaponPreference(self); } if ( inventory != None ) { Recommended = inventory.RecommendWeapon(oldRating); if ( (Recommended != None) && (oldRating > rating) ) { rating = oldRating; return Recommended; } } return self; } // Toss this weapon out function DropFrom(vector StartLocation) { AIRating = Default.AIRating; bMuzzleFlash = false; if ( AmmoType != None ) { PickupAmmoCount = AmmoType.AmmoAmount; AmmoType.AmmoAmount = 0; } Super.DropFrom(StartLocation); } //************************************************************************************** // // Firing functions and states // simulated function bool RepeatFire() { return bRapidFire; } function ServerStopFiring() { StopFiringTime = Level.TimeSeconds; } function ServerRapidFire() { ServerFire(); if ( IsInState('NormalFire') ) StopFiringTime = Level.TimeSeconds + 0.6; } function ServerFire() { if ( AmmoType == None ) { // ammocheck log("WARNING "$self$" HAS NO AMMO!!!"); GiveAmmo(Pawn(Owner)); } if ( AmmoType.HasAmmo() ) { GotoState('NormalFire'); ReloadCount--; if ( AmmoType.bInstantHit ) TraceFire(TraceAccuracy,0,0); else ProjectileFire(); LocalFire(); } } simulated function Fire( float Value ) { if ( !AmmoType.HasAmmo() ) return; if ( !RepeatFire() ) ServerFire(); else if ( StopFiringTime < Level.TimeSeconds + 0.3 ) { StopFiringTime = Level.TimeSeconds + 0.6; ServerRapidFire(); } if ( Role < ROLE_Authority ) { ReloadCount--; LocalFire(); GotoState('ClientFiring'); } } simulated function LocalFire() { local PlayerController P; bPointing = true; if ( (Instigator != None) && Instigator.IsLocallyControlled() ) { P = PlayerController(Instigator.Controller); if (P!=None) P.ShakeView(ShakeTime, ShakeMag, ShakeVert, 120000, ShakeSpeed, 1); } if ( Affector != None ) Affector.FireEffect(); PlayFiring(); } function ServerAltFire() { if ( !IsInState('Idle') ) GotoState('Idle'); } /* AltFire() Weapon mode change. */ simulated function AltFire( float Value ) { if ( !IsInState('Idle') ) GotoState('Idle'); ServerAltFire(); } simulated function PlayFiring() { //Play firing animation and sound } simulated function vector GetFireStart(vector X, vector Y, vector Z) { return (Instigator.Location + Instigator.EyePosition() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z); } function ProjectileFire() { local Vector Start, X,Y,Z; Owner.MakeNoise(1.0); GetAxes(Instigator.GetViewRotation(),X,Y,Z); Start = GetFireStart(X,Y,Z); AdjustedAim = Instigator.AdjustAim(AmmoType, Start, AimError); AmmoType.SpawnProjectile(Start,AdjustedAim); } function TraceFire( float Accuracy, float YOffset, float ZOffset ) { local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z; local actor Other; Owner.MakeNoise(1.0); GetAxes(Instigator.GetViewRotation(),X,Y,Z); StartTrace = GetFireStart(X,Y,Z); AdjustedAim = Instigator.AdjustAim(AmmoType, StartTrace, 2*AimError); EndTrace = StartTrace + (YOffset + Accuracy * (FRand() - 0.5 ) ) * Y * 1000 + (ZOffset + Accuracy * (FRand() - 0.5 )) * Z * 1000; X = vector(AdjustedAim); EndTrace += (TraceDist * X); Other = Trace(HitLocation,HitNormal,EndTrace,StartTrace,True); AmmoType.ProcessTraceHit(self, Other, HitLocation, HitNormal, X,Y,Z); } simulated function bool NeedsToReload() { return ( bForceReload || (Default.ReloadCount > 0) && (ReloadCount == 0) ); } /* BotFire() called by NPC firing weapon. Weapon chooses appropriate firing mode to use (typically no change) bFinished should only be true if called from the Finished() function FiringMode can be passed in to specify a firing mode (used by scripted sequences) */ function bool BotFire(bool bFinished, optional name FiringMode) { if ( !bFinished && !IsIdle() ) return false; Instigator.Controller.bFire = 1; Instigator.Controller.bAltFire = 0; if ( !RepeatFire() ) Global.ServerFire(); else if ( StopFiringTime < Level.TimeSeconds + 0.3 ) { StopFiringTime = Level.TimeSeconds + 0.6; Global.ServerRapidFire(); } // in some situations, weapon might want to call CauseAltFire() instead, and set bAltFire=1 return true; } function bool IsIdle() { return false; } // Finish a sequence function Finish() { local bool bForce, bForceAlt; if ( NeedsToReload() && AmmoType.HasAmmo() ) { GotoState('Reloading'); return; } bForce = bForceFire; bForceAlt = bForceAltFire; bForceFire = false; bForceAltFire = false; if ( bChangeWeapon ) { GotoState('DownWeapon'); return; } if ( (Instigator == None) || (Instigator.Controller == None) ) { GotoState(''); return; } if ( !Instigator.IsHumanControlled() ) { if ( !AmmoType.HasAmmo() ) { Instigator.Controller.SwitchToBestWeapon(); if ( bChangeWeapon ) GotoState('DownWeapon'); else GotoState('Idle'); return; } if ( AIController(Instigator.Controller) != None ) { if ( !AIController(Instigator.Controller).WeaponFireAgain(AmmoType.RefireRate,true) ) { if ( bChangeWeapon ) GotoState('DownWeapon'); else GotoState('Idle'); } return; } } if ( !AmmoType.HasAmmo() && Instigator.IsLocallyControlled() ) { SwitchToWeaponWithAmmo(); return; } if ( Instigator.Weapon != self ) GotoState('Idle'); else if ( (StopFiringTime > Level.TimeSeconds) || bForce || Instigator.PressingFire() ) Global.ServerFire(); else if ( bForceAlt || Instigator.PressingAltFire() ) CauseAltFire(); else GotoState('Idle'); } function SwitchToWeaponWithAmmo() { // if local player, switch weapon Instigator.Controller.SwitchToBestWeapon(); if ( bChangeWeapon ) { GotoState('DownWeapon'); return; } else GotoState('Idle'); } function CauseAltFire() { Global.ServerAltFire(); } simulated function ClientFinish() { if ( (Instigator == None) || (Instigator.Controller == None) ) { GotoState(''); return; } if ( NeedsToReload() && AmmoType.HasAmmo() ) { GotoState('Reloading'); return; } if ( !AmmoType.HasAmmo() ) { Instigator.Controller.SwitchToBestWeapon(); if ( !bChangeWeapon ) { PlayIdleAnim(); GotoState('Idle'); return; } } if ( bChangeWeapon ) GotoState('DownWeapon'); else if ( Instigator.PressingFire() ) Global.Fire(0); else { if ( Instigator.PressingAltFire() ) Global.AltFire(0); else { PlayIdleAnim(); GotoState('Idle'); } } } function CheckAnimating(); /////////////////////////////////////////////////////// state NormalFire { function CheckAnimating() { if ( !IsAnimating() ) warn(self$" stuck in NormalFire and not animating!"); } function ServerFire() { bForceFire = true; } function ServerAltFire() { bForceAltFire = true; } function Fire(float F) {} function AltFire(float F) {} function AnimEnd(int Channel) { Finish(); CheckAnimating(); } function EndState() { StopFiringTime = Level.TimeSeconds; } Begin: Sleep(0.0); } /* Weapon is up and ready to fire, but not firing. */ state Idle { function bool IsIdle() { return true; } simulated function ForceReload() { ServerForceReload(); } function ServerForceReload() { if ( AmmoType.HasAmmo() ) GotoState('Reloading'); } simulated function AnimEnd(int Channel) { PlayIdleAnim(); } simulated function bool PutDown() { GotoState('DownWeapon'); return True; } Begin: bPointing=False; if ( NeedsToReload() && AmmoType.HasAmmo() ) GotoState('Reloading'); if ( !AmmoType.HasAmmo() ) Instigator.Controller.SwitchToBestWeapon(); //Goto Weapon that has Ammo if ( Instigator.PressingFire() ) Fire(0.0); if ( Instigator.PressingAltFire() ) AltFire(0.0); PlayIdleAnim(); } state Reloading { function ServerForceReload() {} function ClientForceReload() {} function Fire( float Value ) {} function AltFire( float Value ) {} function ServerFire() { bForceFire = true; } function ServerAltFire() { bForceAltFire = true; } simulated function bool PutDown() { bChangeWeapon = true; return True; } simulated function BeginState() { if ( !bForceReload ) { if ( Role < ROLE_Authority ) ServerForceReload(); else ClientForceReload(); } bForceReload = false; PlayReloading(); } simulated function AnimEnd(int Channel) { ReloadCount = Default.ReloadCount; if ( Role < ROLE_Authority ) ClientFinish(); else Finish(); CheckAnimating(); } function CheckAnimating() { if ( !IsAnimating() ) warn(self$" stuck in Reloading and not animating!"); } } /* Active Bring newly active weapon up. The weapon will remain in this state while its selection animation is being played (as well as any postselect animation). While in this state, the weapon cannot be fired. */ state Active { function Fire( float Value ) {} function AltFire( float Value ) {} function ServerFire() { bForceFire = true; } function ServerAltFire() { bForceAltFire = true; } simulated function bool PutDown() { local name anim; local float frame,rate; GetAnimParams(0,anim,frame,rate); if ( bWeaponUp || (frame < 0.75) ) GotoState('DownWeapon'); else bChangeWeapon = true; return True; } simulated function BeginState() { Instigator = Pawn(Owner); bForceFire = false; bForceAltFire = false; bWeaponUp = false; bChangeWeapon = false; } simulated function EndState() { bForceFire = false; bForceAltFire = false; } simulated function AnimEnd(int Channel) { if ( bChangeWeapon ) GotoState('DownWeapon'); if ( Owner == None ) { log(self$" no owner"); Global.AnimEnd(0); GotoState(''); } else if ( bWeaponUp ) { if ( Role == ROLE_Authority ) Finish(); else ClientFinish(); } else { PlayPostSelect(); bWeaponUp = true; } CheckAnimating(); } function CheckAnimating() { if ( !IsAnimating() ) warn(self$" stuck in Active and not animating!"); } } /* DownWeapon Putting down weapon in favor of a new one. No firing in this state */ State DownWeapon { function Fire( float Value ) {} function AltFire( float Value ) {} function ServerFire() {} function ServerAltFire() {} simulated function bool PutDown() { return true; //just keep putting it down } simulated function AnimEnd(int Channel) { Pawn(Owner).ChangedWeapon(); } simulated function BeginState() { bChangeWeapon = false; bMuzzleFlash = false; TweenDown(); } } /* Fire on the client side. This state is only entered on the network client of the player that is firing this weapon. */ state ClientFiring { function Fire( float Value ) {} function AltFire( float Value ) {} simulated function AnimEnd(int Channel) { ClientFinish(); CheckAnimating(); } function CheckAnimating() { if ( !IsAnimating() ) warn(self$" stuck in ClientFiring and not animating!"); } simulated function EndState() { //AmbientSound = None; if ( RepeatFire() && !bPendingDelete ) ServerStopFiring(); } } /* PendingClientWeaponSet Weapon on network client side may be set here by the replicated function ClientWeaponSet(), to wait, if needed properties have not yet been replicated. ClientWeaponSet() is called by the server to tell the client about potential weapon changes after the player runs over a weapon (the client decides whether to actually switch weapons or not. */ State PendingClientWeaponSet { simulated function Timer() { if ( Pawn(Owner) != None ) ClientWeaponSet(false); } simulated function BeginState() { SetTimer(0.05, true); } simulated function EndState() { SetTimer(0.0, false); } } simulated function BringUp() { if ( Instigator.IsHumanControlled() ) { SetHand(PlayerController(Instigator.Controller).Handedness); PlayerController(Instigator.Controller).EndZoom(); } bWeaponUp = false; PlaySelect(); GotoState('Active'); } simulated function bool PutDown() { bChangeWeapon = true; return true; } simulated function TweenDown() { local name Anim; local float frame,rate; if ( IsAnimating() && AnimIsInGroup(0,'Select') ) { GetAnimParams(0,Anim,frame,rate); TweenAnim( Anim, frame * 0.4 ); } else PlayAnim('Down', 1.0, 0.05); } simulated function PlayReloading() { AnimEnd(0); } simulated function PlaySelect() { bForceFire = false; bForceAltFire = false; if ( !IsAnimating() || !AnimIsInGroup(0,'Select') ) PlayAnim('Select',1.0,0.0); Owner.PlaySound(SelectSound, SLOT_Misc, 1.0); } simulated function PlayPostSelect() { GotoState('Idle'); AnimEnd(0); } simulated function PlayIdleAnim() { } simulated function zoom(); xƒF(Ò zƒd)ò {ƒq)- ÿÿÿÿÿÿÿÿÿÿ|ƒM1EDY"$B„š9:9:$š9:9:$F }ƒo)9ëDY"$B„š9:9:$š9:9:$d ~ƒ@„Q@™a A„€‰€‰ƒe/qEö 9?e/ _„f/p Û]B p f/ E„€Š&€\B„G„1JŠQd/# H„€d/€€K„€‰€Š&f//============================================================================= // WayBeacon. //============================================================================= class WayBeacon extends Keypoint notplaceable; lL„x)ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿM„}œçJl„åK¹‚QÓH"z["SB€'³["J?x."[" orWrx*xšxw%¬tc/ V $*V.ÿ*öööÿ"I?–¢çø AÓ  " " " " AØ@àWú,…ú,O¡à,,àdx,dWú,_g,}…ú,à/_”n,}O¡à,,Wú,PÄÄ_”n,}dx,d…ú,ÿÈSE”n,d_g,}O¡à,,͘ÈÈ>”d,_”n,}dx,d°˜Š‹ÈÈ>S_”n,}_g,}ŒSSjŠŠÈÈÈSE”n,d_”n,}°SSI3>‹Š˜È>”d,_”n,}«SN/[SSSŠ‹ÈÈ>E”n,dšSBàRNVcSv€˜ÈÈ/>”d,€S”Ø­SS//?cvvccjvS$¡­Š,SI,i';cccjj$?$SS'}©”;[gàO,eVc/Svvc$IS'Š©”;p”Ø”ec'z/cj‹Ž/>I,}©;p'¡©Š,VBOàd?vv•/IIN',;V/”©Š,p©Ø”,j€Ž>SS?N^c>Š­Š;V6””¡,j€˜/IScc>3OŠ6V?©©”,v€Š/>cVcV6O^N”©¡Lj€Œ$SVcjj;¡”ŠOv€˜$>VcpN^zNj€Ž$VVvVVvvŽNcjvvŽSjŽv$ I„€x€Jclass WaterHitEmitter extends Emitter native; // spawning rate event float GetSpawnRate(float PawnVelocity) { return 1.0; } HN„\"F!ŒÊ!\" -n_ ."\" orXr_ *«33³>trš_ w%t™™_ w_ b€¿«tô€?¬«š™>9?z9?_ w G//============================================================================= // WarpZoneMarker. //============================================================================= class WarpZoneMarker extends SmallNavigationPoint native; var WarpZoneInfo markedWarpZone; // AI related var Actor TriggerActor; //used to tell AI how to trigger me var Actor TriggerActor2; function PostBeginPlay() { if ( markedWarpZone.numDestinations > 1 ) FindTriggerActor(); Super.PostBeginPlay(); } function FindTriggerActor() { local ZoneTrigger Z; ForEach AllActors(class 'ZoneTrigger', Z) if ( Z.Event == markedWarpZone.ZoneTag) { TriggerActor = Z; return; } } /* SpecialHandling is called by the navigation code when the next path has been found. It gives that path an opportunity to modify the result based on any special considerations */ /* FIXME - how to figure out if other side actor is OK and use intelligently for all dests? */ function Actor SpecialHandling(Pawn Other) { if (Other.Region.Zone == markedWarpZone) markedWarpZone.ActorEntered(Other); return self; } /* if ( markedWarpZone.numDestinations <= 1 ) return self; if ( markedWarpZone.OtherSideActor is OK ) return self; if (TriggerActor == None) { FindTriggerActor(); if (TriggerActor == None) return None; } return TriggerActor; } */ _ €cM//============================================================================= // WarpZoneInfo. For making disjoint spaces appear as if they were connected; // supports both in-level warp zones and cross-level warp zones. //============================================================================= class WarpZoneInfo extends ZoneInfo native; //----------------------------------------------------------------------------- // Information set by the level designer. var() string OtherSideURL; var() name ThisTag; var() bool bNoTeleFrag; //----------------------------------------------------------------------------- // Internal. var const int iWarpZone; var const coords WarpCoords; var transient WarpZoneInfo OtherSideActor; var transient object OtherSideLevel; var() string Destinations[8]; var int numDestinations; //----------------------------------------------------------------------------- // Network replication. replication { reliable if( Role==ROLE_Authority ) OtherSideURL, ThisTag, OtherSideActor; } //----------------------------------------------------------------------------- // Functions. // Warp coordinate system transformations. native(314) final function Warp ( out vector Loc, out vector Vel, out rotator R ); native(315) final function UnWarp( out vector Loc, out vector Vel, out rotator R ); function PreBeginPlay() { Super.PreBeginPlay(); // Generate the local connection. Generate(); // Setup destination list. numDestinations = 0; While( numDestinations < 8 ) if (Destinations[numDestinations] != "") numDestinations++; else numDestinations = 8; // Generate URL if necessary. if( numDestinations>0 && (OtherSideURL == "") ) OtherSideURL = Destinations[0]; } function Trigger( actor Other, pawn EventInstigator ) { local int nextPick; if (numDestinations == 0) return; nextPick = 0; While( (nextPick < 8) && (Destinations[nextPick] != OtherSideURL ) ) nextPick++; nextPick++; if ( (nextPick > 7) || (Destinations[nextPick] == "") ) nextPick = 0; OtherSideURL = Destinations[nextPick]; ForceGenerate(); } // Set up this warp zone's destination. simulated event Generate() { if( OtherSideLevel != None ) return; ForceGenerate(); } // Set up this warp zone's destination. simulated event ForceGenerate() { if( InStr(OtherSideURL,"/") >= 0 ) { // Remote level. //log( "Warpzone " $ Self $ " remote" ); OtherSideLevel = None; OtherSideActor = None; } else { // Local level. OtherSideLevel = XLevel; foreach AllActors( class 'WarpZoneInfo', OtherSideActor ) if( string(OtherSideActor.ThisTag)~=OtherSideURL && OtherSideActor!=Self ) break; //log( "Warpzone " $ Self $ " local, connected to " $ OtherSideActor ); } } // When an actor enters this warp zone. simulated function ActorEntered( actor Other ) { local vector L; local rotator R; local Controller P; //if ( Other.Role == ROLE_AutonomousProxy ) // return; // don't simulate for client players if( !Other.bJustTeleported ) { Generate(); if( OtherSideActor != None ) { // This needs to also perform a coordinate system transformation, // in case the portals aren't directionally aligned. This is easy to // do but UnrealScript doesn't provide coordinate system operators yet. Other.Disable('Touch'); Other.Disable('UnTouch'); L = Other.Location; if( Pawn(Other) != None ) R = Pawn(Other).GetViewRotation(); UnWarp( L, Other.Velocity, R ); OtherSideActor.Warp( L, Other.Velocity, R ); if( Other.IsA('Pawn') ) { Pawn(Other).bWarping = bNoTelefrag; if ( Other.SetLocation(L) ) { //tell enemies about teleport if ( Role == ROLE_Authority ) For ( P=Level.ControllerList; P!=None; P=P.NextController ) if (P.Enemy == Other) P.LineOfSightTo(Other); R.Roll = 0; Pawn(Other).SetViewRotation(R); Pawn(Other).ClientSetLocation(L, R ); if ( Pawn(Other).Controller != None ) Pawn(Other).Controller.MoveTimer = -1.0; } else { // set up to keep trying to teleport GotoState('DelayedWarp'); } } else { Other.SetLocation(L); Other.SetRotation( R ); } Other.Enable('Touch'); Other.Enable('UnTouch'); // Change rotation according to portal's rotational change. } } } event ActorLeaving( actor Other ) { If ( Other.IsA('Pawn') ) Pawn(Other).bWarping = false; } State DelayedWarp { function Tick(float DeltaTime) { local Controller P; local bool bFound; For ( P=Level.ControllerList; P!=None; P=P.NextController ) if ( P.Pawn.bWarping && (P.Pawn.Region.Zone == Self) ) { bFound = true; ActorEntered(P); } If ( !bFound ) GotoState(''); } } J"S„b/T 2c2uJ"b/."uwzu P„€u€Xclass VolumeTimer extends info; var PhysicsVolume V; function PostBeginPlay() { Super.PostBeginPlay(); SetTimer(1.0, true); V = PhysicsVolume(Owner); } function Timer() { V.TimerPop(self); } H\„F1” ]„€€C//============================================================================= // Volume: a bounding volume // touch() and untouch() notifications to the volume as actors enter or leave it // enteredvolume() and leftvolume() notifications when center of actor enters the volume // pawns with bIsPlayer==true cause playerenteredvolume notifications instead of actorenteredvolume() // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class Volume extends Brush native; var Actor AssociatedActor; // this actor gets touch() and untouch notifications as the volume is entered or left var() name AssociatedActorTag; // Used by L.D. to specify tag of associated actor var() int LocationPriority; var() localized string LocationName; var() edfindable decorationlist DecoList; // A list of decorations to be spawned inside the volume when the level starts native function bool Encompasses(Actor Other); // returns true if center of actor is within volume function PostBeginPlay() { Super.PostBeginPlay(); if ( AssociatedActorTag != '' ) ForEach AllActors(class'Actor',AssociatedActor, AssociatedActorTag) break; if ( AssociatedActor != None ) { GotoState('AssociatedTouch'); InitialState = GetStateName(); } } function DisplayDebug(Canvas Canvas, out float YL, out float YPos) { Super.DisplayDebug(Canvas,YL,YPos); Canvas.DrawText("AssociatedActor "$AssociatedActor, false); YPos += YL; Canvas.SetPos(4,YPos); } State AssociatedTouch { event touch( Actor Other ) { AssociatedActor.touch(Other); } event untouch( Actor Other ) { AssociatedActor.untouch(Other); } function BeginState() { local Actor A; ForEach TouchingActors(class'Actor', A) Touch(A); } } C…X„v ÓÑ' 0\ ž.0u t«š™™? rJ `„u P,-\ ‚-\ -t% P"a„W°#-J a!!-\ q!l  b„d„s ;#„-\ ‚-J  -a/ €H"c„YS'lþ]". Y or;‚w]"*-\ —‚.bY T 2„±YJ?±D9?á± rJYJ¬ rJD¬ rJD r //============================================================================= // VoicePack. //============================================================================= class VoicePack extends Info abstract; /* ClientInitialize() sets up playing the appropriate voice segment, and returns a string representation of the message */ function ClientInitialize(PlayerReplicationInfo Sender, PlayerReplicationInfo Recipient, name messagetype, byte messageIndex); static function PlayerSpeech(name Type, int Index, string Callsign, Actor PackOwner); static function byte GetMessageIndex(name PhraseName) { return 0; } static function int PickRandomTauntFor(controller C, bool bNoMature, bool bNoHumanOnly) { return 0; } hclass ViewportWindowController extends Actor native; enum ECALCSTEP { STEP_TARGET_PLAYER, STEP_MOVE_BACK, STEP_ROTATE_FLOAT, STEP_TARGET_FLOAT, STEP_MOVE_FLOAT }; var SkeletalMeshInstance TargetSMInst; var int BoneIndex; var vector TargetLocation; var rotator TargetRotation; var array CameraPath; var int CalcStep; // for skill effect var vector OrgLocation; var int EffectType; var float fEffectElapsedTime; ]"€p //============================================================================= // Emitter: An Unreal VertMesh Particle Emitter. //============================================================================= class VertMeshEmitter extends ParticleEmitter noexport native; var transient array VertexStreams; var transient array IndexBuffer; var transient array AnimFrame; var (VertMesh) array AnimRate; //³ªÁß¿¡ frameratežŠ °¢°¢ Á¶Á€ÇÒ¶óžé... var (VertMesh) array StartAnimFrame; var (VertMesh) VertMesh VertexMesh; var (VertMesh) bool UseMeshBlendMode; var (VertMesh) bool RenderTwoSided; var (VertMesh) bool UseParticleColor; var transient vector MeshExtent; var transient array MeshInstance; He„W F;mU®tW  Z I. W orzwI*qW  -n‚s 산m9?, R„„-drI)*1–I)wI)btI?õ«€>U«I)m"tô€?¬«š™>9?I)b9?I)wzÍÌL=Ì‚W  -n-°«t}?U?¯W JÍÌÌ=„rW *°W J?«@UU Gclass VertexColor extends RenderedMaterial native editinlinenew; I€x class VehicleServerPart extends StaticMeshActor native abstract placeable; //Sound var Sound SpawnSound; var Sound BasicSound; var Sound MoveUpSound; var Sound MoveDownSound; var Sound TurnSound; var array RandomSounds; event OnDriverIn( int a_DriverID ); event OnDriverOut(); event OnStart(); event OnStop(); event OnBoost(); event OnMoveUp() { PlaySound( MoveUpSound, SLOT_None ); } event OnMoveDown() { PlaySound( MoveDownSound, SLOT_None ); } event OnTurning() { PlaySound( TurnSound, SLOT_None ); } simulated function PostSetPawnResource() { PlaySound( SpawnSound, SLOT_None ); PlayLoopSound( BasicSound, SLOT_None, , , , , , 3.f ); } function PostBeginPlay() { Super.PostBeginPlay(); SetActorViewType( EAVT_Spawning ); SetAlphaTexModifier( 1 ); } h typedef TMap > VehicleRoutePointPathMapType; VehicleRoutePointPathMapType* GetPaths() { return (VehicleRoutePointPathMapType*)Paths; } virtual void PostEditChange() { for (int i=0; i«®Ga>e €u„CþÀÿÿÿÿÿÿÿÿÿÿps„u k $ t„€€Pr„v„OÝ k $  w„€€q„y„S-ý@ÿÿÿÿÿÿÿÿÿÿpz„(€5š9:n9:$ k $33š9:n9:$k $  {„€€_/r l_/ @ÿÿÿÿÿ%ÿ%ÿ.&ÿ)"ÿ3+ÿ 4,ÿ 5-ÿ:2ÿ<4ÿ>6ÿ?7ÿ! ÿ@8ÿA:ÿD<ÿG?ÿIAÿ JBÿ"H@ÿ"LDÿ$NFÿ'LEÿ,MGÿ&PHÿ)RJÿ*TLÿ+VNÿ.SLÿ,VNÿ.XPÿ0VNÿ0ZRÿ3]Uÿ4^Vÿ:ZSÿ9ZTÿ?ZUÿ7aYÿ8bZÿ:bZÿ8d[ÿ:d\ÿ=e^ÿg_ÿ8i_ÿ?iaÿ>jbÿxÿIIIÿ@XSÿAZUÿ@_YÿB_YÿF_[ÿWWWÿCf_ÿAkcÿBiaÿCmeÿFh`ÿDmeÿDnfÿFogÿHkdÿKjdÿNmgÿApgÿAqhÿBqhÿCsiÿCrjÿDskÿFsjÿDtkÿFvlÿGwnÿIrjÿKslÿIumÿHwoÿJtlÿJunÿLvnÿIypÿJzqÿJ{rÿNxpÿM}tÿNwÿQd`ÿRjeÿXifÿXmiÿ^ljÿ^pmÿPyqÿR|tÿW{tÿT~vÿ^vqÿYxrÿbolÿbtpÿevsÿezuÿd|wÿjsqÿkusÿmtsÿnutÿptsÿqxvÿsxxÿy||ÿ~~ÿO€wÿPyÿQ‚zÿRƒ{ÿS„{ÿV€xÿT…|ÿU†}ÿV†ÿX‚zÿZ„|ÿ\†~ÿ_‡ÿn~ÿW‰€ÿY‰‚ÿYŠƒÿ[Œ„ÿ^ˆ€ÿ\…ÿ]‡ÿ^ˆÿ`Š‚ÿc…ÿeŽ†ÿ`’Šÿb•ÿi“‹ÿk•ÿe˜ÿgš“ÿhš“ÿjœ•ÿkž—ÿn˜ÿkž˜ÿlŸ˜ÿ|€ÿ€€ÿpš’ÿuœ•ÿl ˜ÿtŠŸÿ{ šÿz€œÿ}ŠžÿsŠ ÿw©¢ÿz¬¥ÿ{¬Šÿ~š ÿ}®šÿ~¯šÿ™%ÿ©ÿ¡$ÿ¢+ÿª ÿª%ÿÍ+ÿÞ-ÿÖ2ÿè-ÿÿ?Uÿ€€€ÿ‚‚‚ÿ„„„ÿ†††ÿ‚ˆ‡ÿ‡‰ˆÿ‡‹‹ÿˆˆˆÿŠŠŠÿŒŒŒÿŽŽŽÿÿ’’’ÿ”””ÿ–––ÿ™™™ÿÿ€ª¢ÿ‚¬€ÿ‰®šÿ€°«ÿ²¬ÿ„³­ÿ…Ž­ÿˆ²ªÿŠŽ¬ÿŒ±«ÿŒ¶®ÿŽ®ÿ‡¶°ÿ€œ³ÿ‰·°ÿ‹ž²ÿ‹¹ŽÿŽ»Žÿº²ÿ‘œ·ÿ’Ÿ¹ÿ”¿ºÿ™Œ¶ÿ¿ºÿ   ÿ¬¬¬ÿžžžÿ–Á»ÿ˜ÁŒÿ™ÃŸÿ›Ä¿ÿžÂ»ÿžÅÁÿžÇÂÿŸÉÁÿ¡ÊÅÿ¥ÌÇÿ§ÍÉÿ©ÐÊÿªÐÌÿ­ÒÏÿ²ÖÒÿµÙÕÿ¹ÜØÿŒßÛÿœßÜÿ¶àØÿ¿éáÿÊÊÊÿÀáÞÿÃãàÿÅæâÿÇçäÿÇñéÿa"€]/ mƒ@^/I Ž&$w*n€?]/  _…b"w Çì0j b"'-a"Ob"`/-a" @ÿÿÿÿÿ%ÿ%ÿ.&ÿ)"ÿ3+ÿ 4,ÿ 5-ÿ:2ÿ<4ÿ>6ÿ?7ÿ@8ÿA:ÿD<ÿE=ÿG?ÿIAÿ JBÿ"H@ÿ"LDÿ$NFÿ'LEÿ,MGÿ%PHÿ&PHÿ'SKÿ(RJÿ*SKÿ*TLÿ.SLÿ,VNÿ.XPÿ0VNÿ0ZRÿ3]Uÿ4^Vÿ:ZSÿ9ZTÿ?ZUÿ7aYÿ8bZÿ:bZÿ:d\ÿ=e^ÿg_ÿ8i_ÿ?iaÿxÿ@XSÿAZUÿ@_YÿF_[ÿCf_ÿAkcÿBiaÿAmeÿCmeÿDmeÿDnfÿFogÿHkdÿKjdÿApgÿAqhÿBqhÿCsiÿCrjÿDskÿDtkÿFvlÿGwnÿIrjÿKslÿIumÿHwoÿJtlÿJunÿLvnÿIypÿJzqÿJ{rÿNxpÿM}tÿNwÿQd`ÿRjeÿXifÿXlhÿXokÿ^ljÿ^pmÿPyqÿPzrÿRzrÿR|tÿW{tÿT~vÿ^vqÿbolÿjjjÿbtpÿevsÿezuÿjsqÿkusÿmtsÿnutÿj~zÿpppÿptsÿqxvÿsxxÿwzzÿyzzÿy||ÿx}ÿ~~ÿO€wÿPyÿQ‚zÿRƒ{ÿS„{ÿV€xÿT…|ÿU†}ÿV†ÿX‚zÿY†}ÿZ„|ÿ\†~ÿ_‡ÿg}ÿi|ÿn~ÿW‰€ÿY‰‚ÿYŠƒÿ[Œ„ÿ^ˆ€ÿ\…ÿ]‡ÿ^ˆÿ`Š‚ÿc…ÿeŽ†ÿ`’Šÿb•ÿi“‹ÿk•ÿe˜ÿgš“ÿhš“ÿjœ•ÿkž—ÿn˜ÿkž˜ÿlŸ˜ÿ€€ÿp™‘ÿqš’ÿuœ•ÿl ˜ÿtŠŸÿ{ šÿz€œÿ}ŠžÿsŠ ÿw©¢ÿz¬¥ÿ{¬Šÿ~š ÿ}®šÿ~¯šÿ…ÿ™ÿ£ÿÂÿÿÿýVVÿ€€€ÿ‚‚‚ÿ„„„ÿ†††ÿ‚ˆ‡ÿ‡‰ˆÿ‡‹‹ÿˆˆˆÿŠŠŠÿŒŒŒÿŽŽŽÿÿ’’’ÿ”””ÿ–––ÿ™™™ÿÿ€ª¢ÿ‚¬€ÿ‰®šÿ€°«ÿ²¬ÿ„³­ÿ…Ž­ÿˆ²ªÿŠŽ¬ÿŒ±«ÿŒ¶®ÿŽ®ÿ‡¶°ÿ€œ³ÿ‰·°ÿ‹ž²ÿ‹¹ŽÿŽ»Žÿº²ÿ‘œ·ÿ’Ÿ¹ÿ”¿ºÿ™Œ¶ÿ¿ºÿ   ÿ¬¬¬ÿžžžÿ–Á»ÿ˜ÁŒÿ™ÃŸÿ›Ä¿ÿžÂ»ÿžÅÁÿžÇÂÿŸÉÁÿ¡ÊÅÿ¥ÌÇÿ§ÍÉÿ©ÐÊÿªÐÌÿ­ÒÏÿ²ÖÒÿµÙÕÿ¹ÜØÿŒßÛÿœßÜÿ¶àØÿ¿éáÿÊÊÊÿÀáÞÿÃãàÿÅæâÿÇçäÿÇñéÿ\€G….H….‰I….Š~J…@.K….L….Y/.@…O….P….Q….z.t class VehicleRoutePoint extends Vehicle native; var() string RouteName; var() array DeltaPoint; var() array AbsPoint; var() array MovingSpeed; var() array RotatingSpeed; var() array TimeToNextAction; var() array SpeakerID; var() array WaitingMessageID; var() array StationID; var() color LineColor; var() color PathColor; var() color FontColor; var int Paths; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) g class VehiclePart extends Actor native abstract placeable; //Sound var Sound SpawnSound; var Sound BasicSound; var Sound MoveUpSound; var Sound MoveDownSound; var Sound TurnSound; var array RandomSounds; event OnDriverIn( int a_DriverID ); event OnDriverOut(); event OnStart(); event OnStop(); event OnBoost(); event OnMoveUp() { PlaySound( MoveUpSound, SLOT_None ); } event OnMoveDown() { PlaySound( MoveDownSound, SLOT_None ); } event OnTurning() { PlaySound( TurnSound, SLOT_None ); } simulated function PostSetPawnResource() { PlaySound( SpawnSound, SLOT_None ); PlayLoopSound( BasicSound, SLOT_None, , , , , , 3.f ); } function PostBeginPlay() { Super.PostBeginPlay(); SetActorViewType( EAVT_Spawning ); SetAlphaTexModifier( 1 ); } Kclass VehicleMeshPart extends Pawn native abstract placeable; //Sound var Sound SpawnSound; var Sound BasicSound; var Sound MoveUpSound; var Sound MoveDownSound; var Sound TurnSound; var array RandomSounds; event OnDriverIn( int a_DriverID ); event OnDriverOut(); event OnStart(); event OnStop(); event OnBoost(); event OnMoveUp() { PlaySound( MoveUpSound, SLOT_None ); } event OnMoveDown() { PlaySound( MoveDownSound, SLOT_None ); } event OnTurning() { PlaySound( TurnSound, SLOT_None ); } simulated function PostSetPawnResource() { LoopAnim('wait'); PlaySound( SpawnSound, SLOT_None ); PlayLoopSound( BasicSound, SLOT_None, , , , , , 3.f ); } function PostBeginPlay() { Super.PostBeginPlay(); SetActorViewType( EAVT_Spawning ); SetAlphaTexModifier( 1 ); } function Destroyed() { StopSound( BasicSound ); Super.Destroyed(); } |,class Vehicle extends Pawn abstract native; enum EVehicleType { VT_NONE, VT_PASSENGER_SHIP, VT_AIR_SHIP, VT_SHUTTLE }; struct native constructive VehiclePartInfo { var actor PartActor; var int PartID; var int MeshID; var int ServerID; var vector Offset; var bool bAnimation; }; var array VehiclePartList; //Vehicle Info var EVehicleType Type; var Pawn DriverPawn; var int DriverID; var array PassengerIDList; var int MaxHP; var int CurHP; var int MaxFuel; var int CurFuel; var vector DriverRelLoc; var bool bAutoCalcDriverLoc; //Check Driving State var bool bStart; var bool bBoost; var bool bMoveUp; var bool bMoveDown; var bool bTurning; var float OldAltitude; var int BoostCurTickCount; var int BoostTickCount; var int MoveUpCurTickCount; var int MoveUpTickCount; var int MoveDownCurTickCount; var int MoveDownTickCount; var int TurningCurTickCount; var int TurningTickCount; //Auto Trip var bool bTrip; var vector TripTarget; var float MoveSpeed; var int RotationSpeed; //Sound var Sound SpawnSound; var Sound BasicSound; var Sound MoveUpSound; var Sound MoveDownSound; var Sound TurnSound; var array RandomSounds; //for RandomSound var bool bRandomSound; var float RandomTime; var int RandomPercent; var float RandomTick; //Wave var float WaveTotalTime; var float WaveElapsedTime; var float WaveMaxHeight; var float WaveOldHeight; var bool bWaveOn; //Camera var float DriverElasticCameraDist; var float DriverElasticCameraVelocity; event OnStart(); event OnStop(); event OnBoost(); event OnMoveUp() { PlaySound( MoveUpSound, SLOT_None ); } event OnMoveDown() { PlaySound( MoveDownSound, SLOT_None ); } event OnTurning() { PlaySound( TurnSound, SLOT_None ); } event OnDriverIn( int a_DriverID ) { PlaySound( SpawnSound, SLOT_None ); } event OnDriverOut(); simulated function PostSetPawnResource() { PlaySound( SpawnSound, SLOT_None ); PlayLoopSound( BasicSound, SLOT_None, , , , , , 3.f ); } function EVehicleType GetType() { return Type; } function AddVehiclePart( Class a_Class, optional Vector a_Offset ) { local int NewPos; local vector RotX, RotY, RotZ; GetAxes(Rotation,RotX,RotY,RotZ); NewPos = VehiclePartList.length; VehiclePartList.length = VehiclePartList.length + 1; VehiclePartList[NewPos].PartActor = Spawn( a_Class, Self,, Location + a_Offset.X * RotX + a_Offset.Y * RotY + a_Offset.Z * RotZ, Rotation, true ); VehiclePartList[NewPos].PartActor.SetBase( Self ); VehiclePartList[NewPos].Offset = a_Offset; } function Destroyed() { local int i; for( i=0; i UserDefineMaterials; //#endif šo//============================================================================= // Event. //============================================================================= class Triggers extends Actor abstract placeable native; M…^….W/.‰l…e"O»ÕV-\v e"d"M‚-\ wB*-\BOe"d"-\ €f".‰E}//============================================================================= // Trigger: senses things happening in its proximity and generates // sends Trigger/UnTrigger to actors whose names match 'EventName'. //============================================================================= class Trigger extends Triggers native; #exec Texture Import File=Textures\Trigger.pcx Name=S_Trigger Mips=Off MASKED=1 //----------------------------------------------------------------------------- // Trigger variables. // Trigger type. var() enum ETriggerType { TT_PlayerProximity, // Trigger is activated by player proximity. TT_PawnProximity, // Trigger is activated by any pawn's proximity TT_ClassProximity, // Trigger is activated by actor of ClassProximityType only TT_AnyProximity, // Trigger is activated by any actor in proximity. TT_Shoot, // Trigger is activated by player shooting it. TT_HumanPlayerProximity, // Trigger activated by human player (not bot) } TriggerType; // Human readable triggering message. var() localized string Message; // Only trigger once and then go dormant. var() bool bTriggerOnceOnly; // For triggers that are activated/deactivated by other triggers. var() bool bInitiallyActive; var() class ClassProximityType; var() float RepeatTriggerTime; //if > 0, repeat trigger message at this interval is still touching other var() float ReTriggerDelay; //minimum time before trigger can be triggered again var float TriggerTime; var() float DamageThreshold; //minimum damage to trigger if TT_Shoot // AI vars var actor TriggerActor; // actor that triggers this trigger var actor TriggerActor2; // store for reset var bool bSavedInitialCollision; var bool bSavedInitialActive; //============================================================================= // AI related functions function PreBeginPlay() { Super.PreBeginPlay(); if ( (TriggerType == TT_PlayerProximity) || (TriggerType == TT_PawnProximity) || (TriggerType == TT_HumanPlayerProximity) || ((TriggerType == TT_ClassProximity) && ClassIsChildOf(ClassProximityType,class'Pawn')) ) OnlyAffectPawns(true); } function PostBeginPlay() { if ( !bInitiallyActive ) FindTriggerActor(); if ( TriggerType == TT_Shoot ) { bHidden = false; bProjTarget = true; SetDrawType(DT_None); } bSavedInitialActive = bInitiallyActive; bSavedInitialCollision = bCollideActors; Super.PostBeginPlay(); } /* Reset() reset actor to initial state - used when restarting level without reloading. */ function Reset() { Super.Reset(); // collision, bInitiallyactive bInitiallyActive = bSavedInitialActive; SetCollision(bSavedInitialCollision, bBlockActors, bBlockPlayers ); } function FindTriggerActor() { local Actor A; TriggerActor = None; TriggerActor2 = None; ForEach AllActors(class 'Actor', A) if ( A.Event == Tag) { if (TriggerActor == None) TriggerActor = A; else { TriggerActor2 = A; return; } } } function Actor SpecialHandling(Pawn Other) { local Actor A; if ( bTriggerOnceOnly && !bCollideActors ) return None; if ( (TriggerType == TT_HumanPlayerProximity) && !Other.IsHumanControlled() ) return None; if ( (TriggerType == TT_PlayerProximity) && !Other.IsPlayerPawn() ) return None; if ( !bInitiallyActive ) { if ( TriggerActor == None ) FindTriggerActor(); if ( TriggerActor == None ) return None; if ( (TriggerActor2 != None) && (VSize(TriggerActor2.Location - Other.Location) < VSize(TriggerActor.Location - Other.Location)) ) return TriggerActor2; else return TriggerActor; } // is this a shootable trigger? if ( TriggerType == TT_Shoot ) return Other.ShootSpecial(self); // can other trigger it right away? if ( IsRelevant(Other) ) { ForEach TouchingActors(class'Actor', A) if ( A == Other ) Touch(Other); return self; } return self; } // when trigger gets turned on, check its touch list function CheckTouchList() { local Actor A; ForEach TouchingActors(class'Actor', A) Touch(A); } //============================================================================= // Trigger states. // Trigger is always active. state() NormalTrigger { } // Other trigger toggles this trigger's activity. state() OtherTriggerToggles { function Trigger( actor Other, pawn EventInstigator ) { bInitiallyActive = !bInitiallyActive; if ( bInitiallyActive ) CheckTouchList(); } } // Other trigger turns this on. state() OtherTriggerTurnsOn { function Trigger( actor Other, pawn EventInstigator ) { local bool bWasActive; bWasActive = bInitiallyActive; bInitiallyActive = true; if ( !bWasActive ) CheckTouchList(); } } // Other trigger turns this off. state() OtherTriggerTurnsOff { function Trigger( actor Other, pawn EventInstigator ) { bInitiallyActive = false; } } //============================================================================= // Trigger logic. // // See whether the other actor is relevant to this trigger. // function bool IsRelevant( actor Other ) { if( !bInitiallyActive ) return false; switch( TriggerType ) { case TT_HumanPlayerProximity: return (Pawn(Other) != None) && Pawn(Other).IsHumanControlled(); case TT_PlayerProximity: return (Pawn(Other) != None) && (Pawn(Other).IsPlayerPawn() || Pawn(Other).WasPlayerPawn()); case TT_PawnProximity: return (Pawn(Other) != None) && Pawn(Other).CanTrigger(self); case TT_ClassProximity: return ClassIsChildOf(Other.Class, ClassProximityType); case TT_AnyProximity: return true; case TT_Shoot: return ( (Projectile(Other) != None) && (Projectile(Other).Damage >= DamageThreshold) ); } } // // Called when something touches the trigger. // function Touch( actor Other ) { local int i; if( IsRelevant( Other ) ) { if ( ReTriggerDelay > 0 ) { if ( Level.TimeSeconds - TriggerTime < ReTriggerDelay ) return; TriggerTime = Level.TimeSeconds; } // Broadcast the Trigger message to all matching actors. TriggerEvent(Event, self, Other.Instigator); if ( (Pawn(Other) != None) && (Pawn(Other).Controller != None) ) { for ( i=0;i<4;i++ ) if ( Pawn(Other).Controller.GoalList[i] == self ) { Pawn(Other).Controller.GoalList[i] = None; break; } } if( (Message != "") && (Other.Instigator != None) ) // Send a string message to the toucher. Other.Instigator.ClientMessage( Message ); if( bTriggerOnceOnly ) // Ignore future touches. SetCollision(False); else if ( RepeatTriggerTime > 0 ) SetTimer(RepeatTriggerTime, false); } } function Timer() { local bool bKeepTiming; local Actor A; bKeepTiming = false; ForEach TouchingActors(class'Actor', A) if ( IsRelevant(A) ) { bKeepTiming = true; Touch(A); } if ( bKeepTiming ) SetTimer(RepeatTriggerTime, false); } function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType) { if ( bInitiallyActive && (TriggerType == TT_Shoot) && (Damage >= DamageThreshold) && (instigatedBy != None) ) { if ( ReTriggerDelay > 0 ) { if ( Level.TimeSeconds - TriggerTime < ReTriggerDelay ) return; TriggerTime = Level.TimeSeconds; } // Broadcast the Trigger message to all matching actors. TriggerEvent(Event, self, instigatedBy); if( Message != "" ) // Send a string message to the toucher. instigatedBy.Instigator.ClientMessage( Message ); if( bTriggerOnceOnly ) // Ignore future touches. SetCollision(False); } } // // When something untouches the trigger. // function UnTouch( actor Other ) { if( IsRelevant( Other ) ) UntriggerEvent(event, self, Other.Instigator); } d…\/f…H)3œ  €e…h…K$7' \/  i…€j…€€@g…T/~(<’ #T/-X[/!Z/  G†U/j ²$ wB*B j U/( €@k…o…f D‚ Œ8 y&w`"*`"5saBŠg-S/Uwo*odssŠ{w^"*^"Šss  p…€‰q…€s€‰p(//============================================================================= // Emitter: An Unreal Trail Particle Emitter. // Revision history: // * Created by Daniel Vogel // * Updated by Laurent Delayen //============================================================================= class TrailEmitter extends ParticleEmitter native; struct ParticleTrailData { var vector Location; var color Color; var float Size; var int DoubleDummy1; var int DoubleDummy2; }; struct ParticleTrailInfo { var int TrailIndex; var int NumPoints; var vector LastLocation; // last point location (to compute new points) var vector LastEmitterLocation; // Laurent -- Last Emitter Location, to process point interpolation }; enum ETrailShadeType { PTTST_None, // Full particle color PTTST_RandomStatic, // particle color * random opacity set once PTTST_RandomDynamic, // particle color * random opacity, updated every tick PTTST_Linear, // smooth linear fade out (begining = 100%, end = 0%) PTTST_PointLife // linear fade relative to point's life }; enum ETrailLocation { PTTL_AttachedToParticle, // Attached to Particle PTTL_FollowEmitter // Attached to Particle, with added emitter's velocity }; var (Trail) ETrailShadeType TrailShadeType; // Shading effect on trail var (Trail) ETrailLocation TrailLocation; // Trail Attachment var (Trail) int MaxPointsPerTrail; var (Trail) float DistanceThreshold; var (Trail) bool UseCrossedSheets; var (Trail) int MaxTrailTwistAngle; var (Trail) float PointLifeTime; // 0.f for unlimited var (Trail) float VelocityMinThreshold; // Don't show trail if velocity is smaller than VelocityMinThreshold, ttmayrin var (Trail) float VelocityMaxThreshold; // Don't show trail if velocity is larger than VelocityMaxThreshold, ttmayrin var (Trail) int AttachEmitterIndex; // for PTTL_AttachedToParticle, ttmayrin 2009.3.4 var transient array TrailData; var transient array TrailInfo; var transient vertexbuffer VertexBuffer; var transient indexbuffer IndexBuffer; var transient int VerticesPerParticle; var transient int IndicesPerParticle; var transient int PrimitivesPerParticle; // for PTTL_AttachedToParticle var transient int AttachParticleIndex; var transient float AttachParticleTime; var transient array ChildTrail; var transient bool IsTrailEmpty; native final function ResetTrail(); \…@€Š~n…v…e ]áe+ y&wc"*c"(*cM-R/Hwo*X/J*caw_"*_"c*  w…€‰x…€y…€‰R/€s…@€ŠCu…}…d wÀW5 y0—7m%§7mm2*US—7d%§7ddU*  €š|…g"u(‹z!i"œg"W/ši"g"  v)//============================================================================= // Texture: An Unreal texture map. // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class Texture extends BitmapMaterial safereplace native noteditinlinenew dontcollapsecategories noexport; // Palette. var(Texture) palette Palette; // Detail texture. var(Texture) Material Detail; var(Texture) float DetailScale; // Internal info. var const color MipZero; var const color MaxColor; var const int InternalTime[2]; // Deprecated stuff. var deprecated texture DetailTexture; // Detail texture to apply. var deprecated texture EnvironmentMap; // Environment map for this texture var deprecated enum EEnvMapTransformType { EMTT_ViewSpace, EMTT_WorldSpace, EMTT_LightSpace, } EnvMapTransformType; var deprecated float Specular; // Specular lighting coefficient. // Texture flags. var(Surface) bool bMasked; var(Surface) bool bAlphaTexture; var(Surface) bool bTwoSided; var(Quality) private bool bHighColorQuality; // High color quality hint. var(Quality) private bool bHighTextureQuality; // High color quality hint. var private bool bRealtime; // Texture changes in realtime. var private bool bParametric; // Texture data need not be stored. var private transient bool bRealtimeChanged; // Changed since last render. var const editconst private bool bHasComp; //!!OLDVER Whether a compressed version exists. var(Split9) bool bSplit9Texture; var(Split9) int Split9X1; var(Split9) int Split9X2; var(Split9) int Split9X3; var(Split9) int Split9Y1; var(Split9) int Split9Y2; var(Split9) int Split9Y3; var int pSplit9TexCacheMap; // Level of detail set var() enum ELODSet { LODSET_None, LODSET_World, LODSET_PlayerSkin, LODSET_WeaponSkin, LODSET_Terrain, LODSET_Interface, LODSET_RenderMap, LODSET_Lightmap, } LODSet; var() int NormalLOD; var int MinLOD; var transient int MaxLOD; // Animation. var(Animation) texture AnimNext; var transient texture AnimCurrent; var(Animation) byte PrimeCount; var transient byte PrimeCurrent; var(Animation) float MinFrameRate, MaxFrameRate; //#ifdef __L2 Hunter var(Animation) int TotalFrameNum; //#endif var transient float Accumulator; var transient float SurplusTime; // Mipmaps. var private native const array Mips; var const editconst ETextureFormat CompFormat; //!!OLDVER var const transient int RenderInterface; var const transient int __LastUpdateTime[2]; i"€N // UTexModifier interface virtual FMatrix* GetMatrix(FLOAT TimeSeconds); ~…C†t(‘û  €@x€@{ÿÿåÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿH†SW†}M%£Þzh"'q¡h" Šzwq*xaq}}N}  } “}a/!Xfw. }z*. }zs. xNw. x*. xz. }zx@a ×x  Õ¯x2}2#€?. }z*““xa/!X. xmÚwx*x\}\xN}N'( k†S@J†šQ/L†s €K†r M†o/ N†n@ O†uR P†pk aO/$ Q†q¬ aN/$ R†mî aM/$ @S†Z"E#aQ/$RP/$ @@ 0T† (Æ0J$L& Tclass TexScaler extends TexModifier editinlinenew native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var() float UScale; var() float VScale; var() float UOffset; var() float VOffset; //always last member : Matrix M var Matrix M; b†j"}}/rB*Bj"-B }j" w // UTexModifier interface virtual FMatrix* GetMatrix(FLOAT TimeSeconds); void PostLoad() { Super::PostLoad(); //!!OLDVER if( ConstantRotation ) { ConstantRotation = 0; TexRotationType = TR_ConstantlyRotating; } } k class TexRotator extends TexModifier editinlinenew native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) enum ETexRotationType { TR_FixedRotation, TR_ConstantlyRotating, TR_OscillatingRotation, }; var() ETexRotationType TexRotationType; var() rotator Rotation; var deprecated bool ConstantRotation; var() float UOffset; var() float VOffset; var() rotator OscillationRate; var() rotator OscillationAmplitude; var() rotator OscillationPhase; //always last member : Matrix M var Matrix M; N // UTexModifier interface virtual FMatrix* GetMatrix(FLOAT TimeSeconds); Fclass TexPannerTriggered extends TexPanner native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var() TexOscillatorTriggered.ERetriggerAction RetriggerAction; var() float StopAfterPeriod; var transient float TriggeredTime; var transient bool Reverse; var transient bool Triggered; function Trigger( Actor Other, Actor EventInstigator ) { if( Triggered ) { switch( RetriggerAction ) { case RTA_Reverse: Triggered = False; TriggeredTime = Other.Level.TimeSeconds; Reverse = True; break; case RTA_Reset: Triggered = False; TriggeredTime = -1.0; Reverse = True; break; } } else { if( RetriggerAction != RTA_Retrigger ) Triggered = True; TriggeredTime = Other.Level.TimeSeconds; Reverse = False; } } function Reset() { Triggered = False; TriggeredTime = -1.0; Reverse = False; } N // UTexModifier interface virtual FMatrix* GetMatrix(FLOAT TimeSeconds); oclass TexPanner extends TexModifier editinlinenew native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var() rotator PanDirection; var() float PanRate; //always last member : Matrix M var Matrix M; _†b ŒK/g€Š N // UTexModifier interface virtual FMatrix* GetMatrix(FLOAT TimeSeconds); l†`†h y§ <4‚r}* {p"} ¡p" Š} d†yTclass TexOscillatorTriggered extends TexOscillator native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) enum ERetriggerAction { RTA_Reverse, RTA_Reset, RTA_Ignore, RTA_Retrigger, }; var() ERetriggerAction RetriggerAction; var() float StopAfterPeriod; var transient float TriggeredTime; var transient bool Reverse; var transient bool Triggered; function Trigger( Actor Other, Actor EventInstigator ) { if( Triggered ) { switch( RetriggerAction ) { case RTA_Reverse: Triggered = False; TriggeredTime = Other.Level.TimeSeconds; Reverse = True; break; case RTA_Reset: Triggered = False; TriggeredTime = -1.0; Reverse = True; break; } } else { if( RetriggerAction != RTA_Retrigger ) Triggered = True; TriggeredTime = Other.Level.TimeSeconds; Reverse = False; } } function Reset() { Triggered = False; TriggeredTime = -1.0; Reverse = False; } H\c ;6 ¡3r_*_aJ/.N _r q\^†þq!_a \  _a*\Ÿ\u;_q F // UTexModifier interface virtual FMatrix* GetMatrix(FLOAT TimeSeconds); // UObject interface virtual void PostEditChange(); @ class TexOscillator extends TexModifier editinlinenew native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) enum ETexOscillationType { OT_Pan, OT_Stretch, OT_StretchRepeat, OT_Jitter }; var() Float UOscillationRate; var() Float VOscillationRate; var() Float UOscillationPhase; var() Float VOscillationPhase; var() Float UOscillationAmplitude; var() Float VOscillationAmplitude; var() ETexOscillationType UOscillationType; var() ETexOscillationType VOscillationType; var() float UOffset; var() float VOffset; // current state for OT_Jitter. var float LastSu; var float LastSv; var float CurrentUJitter; var float CurrentVJitter; //always last member : Matrix M var Matrix M; f†I/](R c6•TI/6™TH/6 TG/_[_ |_ ^T €@q†Sv†k"b rö ( wB*B b k"k" m // UTexModifier interface virtual FMatrix* GetMatrix(FLOAT TimeSeconds) { return NULL; } // Material interface. virtual INT MaterialUSize(); virtual INT MaterialVSize(); virtual BYTE RequiredUVStreams(); virtual UBOOL GetValidated(); virtual void SetValidated( UBOOL InValidated ); i†o†_ [• w_*_a_* €€ŠA‡S`F/s†|rb'zyy69VŸy €@r class TexModifier extends Modifier noteditinlinenew native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var enum ETexCoordSrc { TCS_Stream0, TCS_Stream1, TCS_Stream2, TCS_Stream3, TCS_Stream4, TCS_Stream5, TCS_Stream6, TCS_Stream7, TCS_WorldCoords, TCS_CameraCoords, TCS_WorldEnvMapCoords, TCS_CameraEnvMapCoords, TCS_ProjectorCoords, TCS_SphereMap, TCS_SphereMapModulateOpacity, TCS_NoChange, // don't specify a source, just modify it } TexCoordSource; var enum ETexCoordCount { TCN_2DCoords, TCN_3DCoords, TCN_4DCoords } TexCoordCount; var bool TexCoordProjected; €H‡EI%eÞ )Eb E¡E Š a // UTexModifier interface virtual FMatrix* GetMatrix(FLOAT TimeSeconds) { return &Matrix; } € Nclass TexMatrix extends TexModifier native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var Matrix Matrix; N // UTexModifier interface virtual FMatrix* GetMatrix(FLOAT TimeSeconds); Jclass TexEnvMap extends TexModifier editinlinenew native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var() enum ETexEnvMapType { EM_WorldSpace, EM_CameraSpace, EM_SphereMap, EM_SphereMapModulateOpacity } EnvMapType;  void PostEditChange(); rclass TexCoordSource extends TexModifier native editinlinenew collapsecategories; var() int SourceChannel; // (cpptext) // (cpptext) // (cpptext) // (cpptext) p//============================================================================= // TestObj: A purely scripted object for internal testing. //============================================================================= class TestObj extends Object; function Test() { log( "TestObj.Test" ); } }f//============================================================================= // For internal testing. //============================================================================= class TestInfo extends Info; var() bool bTrue1; var() bool bFalse1; var() bool bTrue2; var() bool bFalse2; var bool bBool1; var bool bBool2; var() int xnum; var float ppp; var string sxx; var int MyArray[2]; var vector v1,v2; var string TestRepStr; //var string[32] teststring; const Pie=3.14; const Str="Tim"; const Lotus=vect(1,2,3); var struct STest { var bool b1; var int i; var bool b2; var bool b3; } ST; function TestQ() { local vector v; v.x = 2; v.y = 3; v.z = 4; assert(v==vect(2,3,4)); assert(v.z==4); assert(v.y==3); assert(v.x==2); } static function test() { class'testinfo'.default.v1 = vect(1,2,3); } function PostBeginPlay() { log("!!BEGIN"); default.v1=vect(5,4,3); assert(default.v1==vect(5,4,3)); test(); assert(default.v1==vect(1,2,3)); assert(IsA('Actor')); assert(IsA('TestInfo')); assert(IsA('Info')); assert(!IsA('LevelInfo')); assert(!IsA('Texture')); //o=dynamicloadobject( "UnrealShare.AutoMag.Reload", class'object' ); //assert(o!=None); //assert(o==None); log("!!END"); } function TestStructBools() { assert(ST.b1==false); assert(ST.b2==false); assert(ST.b3==false); ST.b1=true; assert(ST.b1==true); assert(ST.b2==false); assert(ST.b3==false); ST.b2=true; assert(ST.b1==true); assert(ST.b2==true); assert(ST.b3==false); ST.b3=true; assert(ST.b1==true); assert(ST.b2==true); assert(ST.b3==true); ST.b1=false; ST.b2=false; ST.b3=false; } function BeginPlay() { local testobj to; to = new class'TestObj'; to = new()class'TestObj'; to = new(self)class'TestObj'; to = new(self,"")class'TestObj'; to = new(self,"",0)class'TestObj'; to.Test(); TestStructBools(); } function TestX( bool bResource ) { local int n; n = int(bResource); MyArray[ int(bResource) ] = 0; MyArray[ int(bResource) ]++; } function bool RecurseTest() { bBool1=true; return false; } function TestLimitor( class c ) { local class NewClass; NewClass = class( c ); } static function int OtherStatic( int i ) { assert(i==246); assert(default.xnum==777); return 555; } static function int TestStatic( int i ) { assert(i==123); assert(default.xnum==777); assert(OtherStatic(i*2)==555); return i; } function TestContinueFor() { local int i; log("TestContinue"); for( i=0; i<20; i++ ) { log("iteration "$i); if(i==7||i==9||i==19) continue; log("..."); } log("DoneContinue"); } function TestContinueWhile() { local int i; log("TestContinue"); while( ++i <= 20 ) { log("iteration "$i); if(i==7||i==9) continue; log("..."); } log("DoneContinue"); } function TestContinueDoUntil() { local int i; log("TestContinue"); do { i++; log("iteration "$i); if(i==7||i==9||i>18) continue; log("..."); } until( i>20 ); log("DoneContinue"); } function TestContinueForEach() { local actor a; log("TestContinue"); foreach AllActors( class'Actor', a ) { log("actor "$a); if(light(a)==none) continue; log("..."); } log("DoneContinue"); } function SubTestOptionalOut( optional out int a, optional out int b, optional out int c ) { a *= 2; b = b*2; c += c; } function TestOptionalOut() { local int a,b,c; a=1; b=2; c=3; SubTestOptionalOut(a,b,c); assert(a==2); assert(b==4); assert(c==6); SubTestOptionalOut(a,b); assert(a==4); assert(b==8); assert(c==6); SubTestOptionalOut(,b,c); assert(a==4); assert(b==16); assert(c==12); SubTestOptionalOut(); assert(a==4); assert(b==16); assert(c==12); SubTestOptionalOut(a,b,c); assert(a==8); assert(b==32); assert(c==24); log("TestOptionalOut ok!"); } function TestNullContext( actor a ) { bHidden = a.bHidden; a.bHidden = bHidden; } function TestSwitch() { local string s; local int i; local bool b; s="Tim"; i=2; switch( i ) { case 0: assert(false); break; case 2: b=true; break; default: assert(false); break; } assert(b); switch( s ) { case "": assert(false); break; case "xyzzy": assert(false); break; default: b=false; break; } assert(!b); log("testswitch succeeded"); } function Tick( float DeltaTime ) { local class C; local class TC; log("time="$Level.TimeSeconds); TestOptionalOut(); TestNullContext( self ); TestNullContext( None ); TestSwitch(); v1=vect(1,2,3); v2=vect(2,4,6); assert(v1!=v2); assert(!(v1==v2)); assert(v1==vect(1,2,3)); assert(v2==vect(2,4,6)); assert(vect(1,2,5)!=v1); assert(v1*2==v2); assert(v1==v2/2); assert(Pie==3.14); assert(Pie!=2); assert(Str=="Tim"); assert(Str!="Bob"); assert(Lotus==vect(1,2,3)); assert(GetPropertyText("sxx")=="Tim"); assert(GetPropertyText("ppp")!="123"); assert(GetPropertyText("bogus")==""); xnum=345; assert(GetPropertyText("xnum")=="345"); SetPropertyText("xnum","999"); assert(xnum==999); assert(xnum!=666); assert(bTrue1==true); assert(bFalse1==false); assert(bTrue2==true); assert(bFalse2==false); assert(default.bTrue1==true); assert(default.bFalse1==false); assert(default.bTrue2==true); assert(default.bFalse2==false); assert(class'TestInfo'.default.bTrue1==true); assert(class'TestInfo'.default.bFalse1==false); assert(class'TestInfo'.default.bTrue2==true); assert(class'TestInfo'.default.bFalse2==false); TC=Class; assert(TC.default.bTrue1==true); assert(TC.default.bFalse1==false); assert(TC.default.bTrue2==true); assert(TC.default.bFalse2==false); C=Class; assert(class(C).default.bTrue1==true); assert(class(C).default.bFalse1==false); assert(class(C).default.bTrue2==true); assert(class(C).default.bFalse2==false); assert(default.xnum==777); TestStatic(123); TC.static.TestStatic(123); class(C).static.TestStatic(123); bBool2=RecurseTest(); assert(bBool2==false); TestStructBools(); TestQ(); log( "All tests passed" ); } function f(); function temp() { temp(); } state AA { function f(); } state BB { function f(); } state CCAA extends AA { function f(); } state DDAA extends AA { function f(); } state EEDDAA extends DDAA { function f(); } €O‡€sR class TerritoryInfo extends Info showcategories(Movement) native placeable; #exec Texture Import File=Textures\Territory_info.pcx Name=S_TerritoryInfo Mips=Off MASKED=1 enum InitalSpawn { all, random1, random2 }; struct AnywhereNpc { var() name NpcName; var() int total; var() string respawn; var() string nickname; var() name ai; var() array Privates; var() WhenExtinctionCreate when_extinction_create; var() bool bWayPointsShow; var() array WayPoints; }; struct AnywhereNpcMaker { var() bool bGroup; var() InitalSpawn inital_spawn; var() int maximum_npc; var() array Npc; }; var() string TerritoryName; var() int PointNum; var() float TerritoryHeight; var() vector DeltaPoint[64]; var() color LineColor; var() array npcmaker; I €Š F virtual UMaterial* CheckFallback(); virtual UBOOL HasFallback(); x"G‡Fë; €I‡D‡lT4 N:wB*I Bl7rI *I h FI h I  K‡@/` I2!wB*B ` @/ € M‡}.j@l&$wB*Bj}.~. Fclass TerrainMaterial extends RenderedMaterial native noteditinlinenew; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) struct native TerrainMaterialLayer { var material Texture; var bitmapmaterial AlphaWeight; var matrix TextureMatrix; }; var const array Layers; var const byte RenderMethod; var const bool FirstPass; Q‡z.b:Ý&$wB*Bbz.{. € f‡`9class TerrainInfo extends Info noexport showcategories(Movement,Collision,Lighting,LightColor,Karma,Force) native placeable; #exec Texture Import File=Textures\Terrain_info.pcx Name=S_TerrainInfo Mips=Off MASKED=1 #exec Texture Import File=Textures\S_WhiteCircle.pcx Name=S_WhiteCircle Mips=Off MASKED=1 #exec Texture Import File=Textures\Bad.pcx Name=TerrainBad Mips=Off #exec Texture Import File=Textures\DecoPaint.pcx Name=DecoPaint Mips=Off struct NormalPair { var vector Normal1; var vector Normal2; }; enum ETexMapAxis { TEXMAPAXIS_XY, TEXMAPAXIS_XZ, TEXMAPAXIS_YZ, }; struct TerrainLayer { var() Material Texture; var() Texture AlphaMap; var() float UScale; var() float VScale; var() float UPan; var() float VPan; var() ETexMapAxis TextureMapAxis; var() float TextureRotation; var() Rotator LayerRotation; var Matrix TerrainMatrix; var() float KFriction; var() float KRestitution; var Texture LayerWeightMap; //#ifdef __L2 Hunter var vector Scale; var vector ToWorld[4]; var vector ToMaskmap[4]; var() bool bUseAlpha; //#endif }; struct DecoSectorInfo { var array DecoInfo; var vector Location; var float Radius; // __L2, gigadeth var int bDecoGenerated; // __L2, gigadeth }; struct DecorationLayerData { var array Sectors; }; //// __TSHAODW , gigadeth struct TerrainIntensityMap { var float Time; var array Intensity; }; // -- var() int TerrainSectorSize; var() Texture TerrainMap; var() vector TerrainScale; var() TerrainLayer Layers[32]; var() array DecoLayers; var() float DecoLayerOffset; var() bool Inverted; // This option means use half the graphics res for Karma collision. // Note - Karma ignores per-quad info (eg. 'invisible' and 'edge-turned') with this set to true. var() bool bKCollisionHalfRes; // // Internal data // var transient int JustLoaded; var native const array DecoLayerData; var native const array Sectors; var native const array Vertices; var native const int HeightmapX; var native const int HeightmapY; var native const int SectorsX; var native const int SectorsY; var native const TerrainPrimitive Primitive; var native const array FaceNormals; var native const vector ToWorld[4]; var native const vector ToHeightmap[4]; var native const array SelectedVertices; var native const int ShowGrid; var const array QuadVisibilityBitmap; var const array EdgeTurnBitmap; var const array QuadDomMaterialBitmap; var native const array RenderCombinations; var native const array VertexStreams; var native const array VertexColors; var native const array PaintedColor; // editor only // OLD var native const Texture OldTerrainMap; var native const array OldHeightmap; // __L2 - Hunter var() int BaseHeight; // End // __L2 && __SW - gigadeth var int VTGruop; var int VTGroupOrig; var int MapX; var int MapY; var int bUpdatedHEdge; var int bUpdatedVEdge; var int bUpdatedZ; var array SectorsOrig; var native const vector ToHeightmapOrig[4]; var const array QuadVisibilityBitmapOrig; var const array EdgeTurnBitmapOrig; var int GeneratedSectorCounter; // End // __TSHADOW - gigadeth var int NumIntMap; var bool bAutoTimeGeneration; var int NightMapStart; var int DayMapStart; var array TIntMap; var float TickTime; // End X[‡| @*‡¯=ruuB§| u§w| *r| B| BB§| | BZX € x.v.I'!w* Iv. €S‡a.°w*a U‡W‡P(4 y  €@Ct///============================================================================= // Teleports actors either between different teleporters within a level // or to matching teleporters on other levels, or to general Internet URLs. //============================================================================= class Teleporter extends SmallNavigationPoint placeable native; #exec Texture Import File=Textures\Teleport.pcx Name=S_Teleport Mips=Off MASKED=1 //----------------------------------------------------------------------------- // Teleporter URL can be one of the following forms: // // TeleporterName // Teleports to a named teleporter in this level. // if none, acts only as a teleporter destination // // LevelName/TeleporterName // Teleports to a different level on this server. // // Unreal://Server.domain.com/LevelName/TeleporterName // Teleports to a different server on the net. // var() string URL; //----------------------------------------------------------------------------- // Product the user must have installed in order to enter the teleporter. var() name ProductRequired; //----------------------------------------------------------------------------- // Teleporter destination flags. var() bool bChangesVelocity; // Set velocity to TargetVelocity. var() bool bChangesYaw; // Sets yaw to teleporter's Rotation.Yaw var() bool bReversesX; // Reverses X-component of velocity. var() bool bReversesY; // Reverses Y-component of velocity. var() bool bReversesZ; // Reverses Z-component of velocity. // Teleporter flags var() bool bEnabled; // Teleporter is turned on; //----------------------------------------------------------------------------- // Teleporter destination directions. var() vector TargetVelocity; // If bChangesVelocity, set target's velocity to this. // AI related var Actor TriggerActor; //used to tell AI how to trigger me var Actor TriggerActor2; var float LastFired; //----------------------------------------------------------------------------- // Teleporter destination functions. replication { reliable if( Role==ROLE_Authority ) bEnabled, URL; reliable if ( bNetInitial && (Role == ROLE_Authority) ) bChangesVelocity, bChangesYaw, bReversesX, bReversesY, bReversesZ, TargetVelocity; } function PostBeginPlay() { if (URL ~= "") SetCollision(false, false, false); //destination only if ( !bEnabled ) FindTriggerActor(); Super.PostBeginPlay(); } function FindTriggerActor() { local Actor A; TriggerActor = None; TriggerActor2 = None; ForEach DynamicActors(class 'Actor', A) if ( A.Event == Tag) { if (TriggerActor == None) TriggerActor = A; else { TriggerActor2 = A; return; } } } // Accept an actor that has teleported in. simulated function bool Accept( actor Incoming, Actor Source ) { local rotator newRot, oldRot; local float mag; local vector oldDir; local Controller P; // Move the actor here. Disable('Touch'); newRot = Incoming.Rotation; if (bChangesYaw) { oldRot = Incoming.Rotation; newRot.Yaw = Rotation.Yaw; if ( Source != None ) newRot.Yaw += (32768 + Incoming.Rotation.Yaw - Source.Rotation.Yaw); } if ( Pawn(Incoming) != None ) { //tell enemies about teleport if ( Role == ROLE_Authority ) For ( P=Level.ControllerList; P!=None; P=P.NextController ) if ( P.Enemy == Incoming ) P.LineOfSightTo(Incoming); if ( !Pawn(Incoming).SetLocation(Location) ) { log(self$" Teleport failed for "$Incoming); return false; } if ( (Role == ROLE_Authority) || (Level.TimeSeconds - LastFired > 0.5) ) { newRot.Roll = 0; Pawn(Incoming).SetRotation(newRot); Pawn(Incoming).SetViewRotation(newRot); Pawn(Incoming).ClientSetRotation(newRot); LastFired = Level.TimeSeconds; } if ( Pawn(Incoming).Controller != None ) { Pawn(Incoming).Controller.MoveTimer = -1.0; Pawn(Incoming).Anchor = self; Pawn(Incoming).SetMoveTarget(self); } Incoming.PlayTeleportEffect(false, true); } else { if ( !Incoming.SetLocation(Location) ) { Enable('Touch'); return false; } if ( bChangesYaw ) Incoming.SetRotation(newRot); } Enable('Touch'); if (bChangesVelocity) Incoming.Velocity = TargetVelocity; else { if ( bChangesYaw ) { if ( Incoming.Physics == PHYS_Walking ) OldRot.Pitch = 0; oldDir = vector(OldRot); mag = Incoming.Velocity Dot oldDir; Incoming.Velocity = Incoming.Velocity - mag * oldDir + mag * vector(Incoming.Rotation); } if ( bReversesX ) Incoming.Velocity.X *= -1.0; if ( bReversesY ) Incoming.Velocity.Y *= -1.0; if ( bReversesZ ) Incoming.Velocity.Z *= -1.0; } return true; } //----------------------------------------------------------------------------- // Teleporter functions. function Trigger( actor Other, pawn EventInstigator ) { local Actor A; bEnabled = !bEnabled; if ( bEnabled ) //teleport any pawns already in my radius ForEach TouchingActors(class'Actor', A) PostTouch(A); } event Touch(Actor Other) { if ( !bEnabled || (Other == None) ) return; if( Other.bCanTeleport && Other.PreTeleport(Self)==false ) { PendingTouch = Other.PendingTouch; Other.PendingTouch = self; } } // Teleporter was touched by an actor. simulated function PostTouch( actor Other ) { local Teleporter D,Dest[16]; local int i; if( (InStr( URL, "/" ) >= 0) || (InStr( URL, "#" ) >= 0) ) { // Teleport to a level on the net. if( (Role == ROLE_Authority) && (Pawn(Other) != None) && Pawn(Other).IsHumanControlled() ) Level.Game.SendPlayer(PlayerController(Pawn(Other).Controller), URL); } else { // Teleport to a random teleporter in this local level, if more than one pick random. foreach AllActors( class 'Teleporter', D ) if( string(D.tag)~=URL && D!=Self ) { Dest[i] = D; i++; if ( i > arraycount(Dest) ) break; } i = rand(i); if( Dest[i] != None ) { // Teleport the actor into the other teleporter. if ( Other.IsA('Pawn') ) Other.PlayTeleportEffect(false, true); Dest[i].Accept( Other, self ); if ( Pawn(Other) != None ) TriggerEvent(Event, self, Pawn(Other)); } } } /* SpecialHandling is called by the navigation code when the next path has been found. It gives that path an opportunity to modify the result based on any special considerations */ function Actor SpecialHandling(Pawn Other) { local vector Dist2D; if ( bEnabled && (Teleporter(Other.Controller.RouteCache[1]) != None) && (string(Other.Controller.RouteCache[1].tag)~=URL) ) { if ( Abs(Location.Z - Other.Location.Z) < CollisionHeight + Other.CollisionHeight ) { Dist2D = Location - Other.Location; Dist2D.Z = 0; if ( VSize(Dist2D) < CollisionRadius + Other.CollisionRadius ) PostTouch(Other); } return self; } if (TriggerActor == None) { FindTriggerActor(); if (TriggerActor == None) return None; } if ( (TriggerActor2 != None) && (VSize(TriggerActor2.Location - Other.Location) < VSize(TriggerActor.Location - Other.Location)) ) return TriggerActor2; return TriggerActor; } }"//============================================================================= // TeamInfo. //============================================================================= class TeamInfo extends ReplicationInfo native nativereplication; var localized string TeamName; var int Size; //number of players on this team in the level var float Score; var int TeamIndex; var color TeamColor, AltTeamColor; var Actor HomeBase; // key objective associated with this team var() class DefaultPlayerClass; var localized string ColorNames[4]; var Material TeamIcon; replication { // Variables the server should send to the client. reliable if( bNetDirty && (Role==ROLE_Authority) ) Score, HomeBase; reliable if ( bNetInitial && (Role==ROLE_Authority) ) TeamName, TeamColor, AltTeamColor, TeamIndex, TeamIcon; } function bool BelongsOnTeam(class PawnClass) { return true; } simulated function UpdatePrecacheMaterials() { Level.AddPrecacheMaterial(TeamIcon); } simulated function string GetHumanReadableName() { if ( TeamName == Default.TeamName ) { if ( TeamIndex < 4 ) return ColorNames[TeamIndex]; return TeamName@TeamIndex; } return TeamName; } function bool AddToTeam( Controller Other ) { local Controller P; local bool bSuccess; // make sure loadout works for this team if ( Other == None ) { log("Added none to team!!!"); return false; } if (MessagingSpectator(Other) != None) return false; Size++; Other.PlayerReplicationInfo.Team = self; bSuccess = false; if ( Other.IsA('PlayerController') ) Other.PlayerReplicationInfo.TeamID = 0; else Other.PlayerReplicationInfo.TeamID = 1; while ( !bSuccess ) { bSuccess = true; for ( P=Level.ControllerList; P!=None; P=P.nextController ) if ( P.bIsPlayer && (P != Other) && (P.PlayerReplicationInfo.Team == Other.PlayerReplicationInfo.Team) && (P.PlayerReplicationInfo.TeamId == Other.PlayerReplicationInfo.TeamId) ) bSuccess = false; if ( !bSuccess ) Other.PlayerReplicationInfo.TeamID = Other.PlayerReplicationInfo.TeamID + 1; } return true; } function RemoveFromTeam(Controller Other) { Size--; } u.]‡T‡C "ý%„J3 rŸ - t.eBwšC a dS typedef TMap > SuperPointPathMapType; SuperPointPathMapType* GetPaths() { return (SuperPointPathMapType*)Paths; } virtual void PostEditChange() { for (int i=0; i DeltaPoint; var() array AbsPoint; var() array Delay; var() color LineColor; var() color PathColor; var() color FontColor; var int Paths; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) q.Š&`‡€@D2class Suicided extends DamageType abstract; p.šo‡bh‡?2Œ —w% €g‡j‡}7(? k‡€l‡€€i‡vB <x{ -d y‚‚°Ãq.w.v*w.v *.v U o.~ cn. H//============================================================================= // SubActionTrigger: // // Fires off a trigger. //============================================================================= class SubActionTrigger extends MatSubAction native; var(Trigger) name EventName; // The event to trigger p‡Œm‡l.t D¢w&a~ l.j. P‰\Dˆk.F šãÙ®_S¬w_*•_a/!J._|._ E À@._'D %k. Q9=,ÿ9=,ÿ9=,ÿ__T q‡u‡v JG ¢w& v‡€ w‡€x‡€‰y‡€‰z‡€‰{‡€‰€‰\t‡~"eO°r~"BaÑpppppAmmunition 69V amount 9Sw Max 9Sbž"i.~"(€@" g//============================================================================= // SubActionSceneSpeed: // // Alters the speed of the scene without affecting the engine speed. //============================================================================= class SubActionSceneSpeed extends MatSubAction native; var(SceneSpeed) range SceneSpeed; €S//============================================================================= // SubActionOrientation: // // Changes the camera orientation. //============================================================================= class SubActionOrientation extends MatSubAction native; var(Orientation) Orientation CamOrientation; Y|‡N{VrlrŸNr)šwb'Np.}.}%NzN_ 'yr*( {N y//============================================================================= // SubActionGameSpeed: // // Changes the game speed. //============================================================================= class SubActionGameSpeed extends MatSubAction native; var(GameSpeed) range GameSpeed; €@ˆh.}j& wùb’wh.' Mˆ~‡Z ”žÙ €CˆGˆ} p’ "w~ *~ X$ €€~Hˆ€~b//============================================================================= // SubActionFOV: // // Changes the viewers FOV //============================================================================= class SubActionFOV extends MatSubAction native; var(FOV) range FOV; ^//============================================================================= // SubActionFade: // // Fades to/from a color //============================================================================= class SubActionFade extends MatSubAction native; var(Fade) color FadeColor; // The color to use for the fade var(Fade) bool bFadeOut; // If TRUE, the screen is fading out (towards the color) @//============================================================================= // SubActionCameraShake: // // Shakes the camera randomly. //============================================================================= class SubActionCameraShake extends MatSubAction native; var(Shake) rangevector Shake; UˆIˆ{$‘lÙ* d.zš€q"g.X âq"-JM n"Pˆa"Ijn"a:‚-b rac*ach‚‚-b -@#a-JM fclass SubActionCameraEffect extends MatSubAction native noexport collapsecategories; var() editinline CameraEffect CameraEffect; var() float StartAlpha, EndAlpha; var() bool DisableAfterDuration; C/QˆTˆm/V- -b )w*m+* €suˆOˆU 2Ù Yc.H {II׳rH rŸ+-f.¥g.˜–-L/owH *múmH m“múmH rm˜(H p.'Àr*( {H  N.//============================================================================= // Logs game events for stat collection // // Logs to a file. //============================================================================= class StatLogFile extends StatLog native; var bool bWatermark; // Internal var int LogAr; // C++ FArchive*. // Configs var string StatLogFile; var string StatLogFinal; // File Manipulation native final function OpenLog(); native final function CloseLog(); native final function Watermark( string EventString ); native final function GetChecksum( out string Checksum ); native final function FileFlush(); native final function FileLog( string EventString ); // Logging. function StartLog() { local string FileName; local string AbsoluteTime; SaveConfig(); AbsoluteTime = GetShortAbsoluteTime(); if (!bWorld) { FileName = LocalLogDir$"/"$GameName$"."$LocalStandard$"."$AbsoluteTime$"."$Level.Game.GetServerPort(); StatLogFile = FileName$".tmp"; StatLogFinal = FileName$".log"; } else { FileName = WorldLogDir$"/"$GameName$"."$WorldStandard$"."$AbsoluteTime$"."$Level.Game.GetServerPort(); StatLogFile = FileName$".tmp"; StatLogFinal = FileName$".log"; bWatermark = True; } OpenLog(); if ( LocalLog != None ) LocalLog.StartLog(); LogStandardInfo(); LogServerInfo(); LogMapParameters(); } function StopLog() { FileFlush(); CloseLog(); if (bBatchLocal) ExecuteSilentLogBatcher(); if ( LocalLog != None ) LocalLog.StopLog(); } function FlushLog() { FileFlush(); if ( LocalLog != None ) LocalLog.FlushLog(); } function LogEventString( string EventString ) { if( bWatermark ) Watermark( EventString ); FileLog( EventString ); FileFlush(); if ( LocalLog != None ) LocalLog.LogEventString(EventString); } function LogWorldEventString( string EventString ) { // don't send this event to a local log if( bWatermark ) Watermark( EventString ); FileLog( EventString ); FileFlush(); } // Return a logfile name if relevant. event string GetLocalLogFileName() { if ( bWorld ) { if (StatLogFile(LocalLog) != None ) return StatLogFile(LocalLog).StatLogFinal; else return ""; } return StatLogFinal; } function LogPlayerConnect(Controller Player, optional string Checksum) { if( bWorld ) { LogEventString( GetTimeStamp()$Chr(9)$"player"$Chr(9)$"Connect"$Chr(9)$Player.PlayerReplicationInfo.PlayerName$Chr(9)$Player.PlayerReplicationInfo.PlayerID$Chr(9)$Player.IsA('Admin')$Chr(9)$Checksum ); LogPlayerInfo( Player ); } else Super.LogPlayerConnect( Player, Checksum ); } function LogGameEnd( string Reason ) { local string Checksum; if( bWorld ) { bWatermark = False; GetChecksum( Checksum ); LogEventString(GetTimeStamp()$Chr(9)$"game_end"$Chr(9)$Reason$Chr(9)$Checksum$""); } else Super.LogGameEnd(Reason); } €VˆZˆ}'`H  [ˆ€€Yˆ{ a`  \ˆu'hÍ Àšw.*-b (.z ‡r.c.z ‡r.c.c*bO%**Ÿ ad.$a t]ˆ_ˆ\ e.  `ˆaˆbˆ€@^ˆfˆFšà ÿÿÿÿÿÿÿÿÿÿ£)Šð -J' ŠdˆH# -J( c.eˆM”W KC‚‚‚w.*.-J-@# —m% 8M `Ñ//============================================================================= // Logs game events for stat collection // // ngLog, ngStats, and ngWorldStats are registered trademarks of // NetGames USA, Inc. at http://www.netgamesusa.com All rights reserved. A // ny and all occurrences of code related to supporting their products and // services appears with their express permission. //============================================================================= class StatLog extends Info native; // Internal var int Context; // State var bool bWorld; // Time var float TimeStamp; // Log Variables var() string LocalStandard; // The standard this log is compliant to. var() string WorldStandard; // The standard this log is compliant to. var() string LogVersion; // Version of the log standard. var() string LogInfoURL; // URL to info on logging standard. var() string GameName; // Name of this game. var() string GameCreator; // Name of game creator. var() string GameCreatorURL; // URL to info on game creator. var() string DecoderRingURL; // URL to log format decoder ring. var() globalconfig string LocalBatcherURL; // Batcher URL. var() globalconfig string LocalBatcherParams; // Batcher command line parameters. var() globalconfig string LocalStatsURL; // URL to local stats information. var() globalconfig string WorldBatcherURL; // Batcher URL. var() globalconfig string WorldBatcherParams; // Batcher command line parameters. var() globalconfig string WorldStatsURL; // URL to world stats information. var() globalconfig string LocalLogDir; var() globalconfig string WorldLogDir; var globalconfig bool bWorldBatcherError; // An error occured last time we tried to process stats. var globalconfig bool bBatchLocal; var StatLog LocalLog; // used by world log when also logging to local log // Object function BeginPlay() { SetTimer(30.0, True); } function Destroyed() { if ( LocalLog != None ) LocalLog.Destroy(); } function Timer() { LogPings(); } function GenerateLogs(bool bLogLocal, bool bLogWorld ) { if ( bLogWorld ) { bWorld = true; if ( bLogLocal ) LocalLog = spawn(class); } } // Logging function StartLog() { // Implemented in subclass. } function StopLog() { // Implemented in subclass. } function FlushLog() { // Implemented in subclass. } function LogEventString( string EventString ) { Log( EventString ); if ( LocalLog != None ) LocalLog.Log(EventString); } function LogWorldEventString( string EventString ) { // don't send this event to a local log Log( EventString ); } // Batching native final function ExecuteLocalLogBatcher(); native final function ExecuteSilentLogBatcher(); native final static function BatchLocal(); native final function ExecuteWorldLogBatcher(); native static function BrowseRelativeLocalURL(string URL); // Special native final function InitialCheck( GameInfo Game ); native final function LogMutator( Mutator M ); native static function GetPlayerChecksum( PlayerController P, out string Checksum ); // Time native final function string GetGMTRef(); // Return absolute time. function string GetAbsoluteTime() { local string AbsoluteTime; local string GMTRef; AbsoluteTime = string(Level.Year); if (Level.Month < 10) AbsoluteTime = AbsoluteTime$".0"$Level.Month; else AbsoluteTime = AbsoluteTime$"."$Level.Month; if (Level.Day < 10) AbsoluteTime = AbsoluteTime$".0"$Level.Day; else AbsoluteTime = AbsoluteTime$"."$Level.Day; if (Level.Hour < 10) AbsoluteTime = AbsoluteTime$".0"$Level.Hour; else AbsoluteTime = AbsoluteTime$"."$Level.Hour; if (Level.Minute < 10) AbsoluteTime = AbsoluteTime$".0"$Level.Minute; else AbsoluteTime = AbsoluteTime$"."$Level.Minute; if (Level.Second < 10) AbsoluteTime = AbsoluteTime$".0"$Level.Second; else AbsoluteTime = AbsoluteTime$"."$Level.Second; if (Level.Millisecond < 10) AbsoluteTime = AbsoluteTime$".0"$Level.Millisecond; else AbsoluteTime = AbsoluteTime$"."$Level.Millisecond; GMTRef = GetGMTRef(); AbsoluteTime = AbsoluteTime$"."$GMTRef; TimeStamp = 0; return AbsoluteTime; } // A less verbose version... function string GetShortAbsoluteTime() { local string AbsoluteTime; AbsoluteTime = string(Level.Year); if (Level.Month < 10) AbsoluteTime = AbsoluteTime$".0"$Level.Month; else AbsoluteTime = AbsoluteTime$"."$Level.Month; if (Level.Day < 10) AbsoluteTime = AbsoluteTime$".0"$Level.Day; else AbsoluteTime = AbsoluteTime$"."$Level.Day; if (Level.Hour < 10) AbsoluteTime = AbsoluteTime$".0"$Level.Hour; else AbsoluteTime = AbsoluteTime$"."$Level.Hour; if (Level.Minute < 10) AbsoluteTime = AbsoluteTime$".0"$Level.Minute; else AbsoluteTime = AbsoluteTime$"."$Level.Minute; if (Level.Second < 10) AbsoluteTime = AbsoluteTime$".0"$Level.Second; else AbsoluteTime = AbsoluteTime$"."$Level.Second; TimeStamp = 0; return AbsoluteTime; } // Return a timestamp relative to last absolute time. function string GetTimeStamp() { local string Time; Time = string(TimeStamp); Time = Left(Time, InStr(Time, ".") + 3); return Time; } // Return a logfile name if relevant. event string GetLocalLogFileName() { return ""; } // Track relative timestamps. function Tick(float Delta) { TimeStamp += Delta; } // Standard Log Entries function LogStandardInfo() { if (bWorld) { LogWorldEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Log_Standard"$Chr(9)$WorldStandard); if ( LocalLog != None ) LocalLog.LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Log_Standard"$Chr(9)$LocalStandard); } else LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Log_Standard"$Chr(9)$LocalStandard); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Log_Version"$Chr(9)$LogVersion); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Log_Info_URL"$Chr(9)$LogInfoURL); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Game_Name"$Chr(9)$GameName); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Game_Version"$Chr(9)$Level.EngineVersion); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Game_Creator"$Chr(9)$GameCreator); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Game_Creator_URL"$Chr(9)$GameCreatorURL); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Game_Decoder_Ring_URL"$Chr(9)$DecoderRingURL); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Absolute_Time"$Chr(9)$GetAbsoluteTime()); if (bWorld) { if( Level.ConsoleCommand("get UdpServerUplink douplink") ~= string(true) ) LogWorldEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Server_Public"$Chr(9)$"1"); else LogWorldEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Server_Public"$Chr(9)$"0"); } } function LogServerInfo() { local string NetworkNumber; NetworkNumber = Level.Game.GetNetworkNumber(); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Server_ServerName"$Chr(9)$Level.Game.GameReplicationInfo.ServerName); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Server_AdminName"$Chr(9)$Level.Game.GameReplicationInfo.AdminName); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Server_AdminEmail"$Chr(9)$Level.Game.GameReplicationInfo.AdminEmail); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Server_Region"$Chr(9)$Level.Game.GameReplicationInfo.ServerRegion); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Server_MOTDLine1"$Chr(9)$Level.Game.GameReplicationInfo.MOTDLine1); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Server_MOTDLine2"$Chr(9)$Level.Game.GameReplicationInfo.MOTDLine2); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Server_MOTDLine3"$Chr(9)$Level.Game.GameReplicationInfo.MOTDLine3); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Server_MOTDLine4"$Chr(9)$Level.Game.GameReplicationInfo.MOTDLine4); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Server_IP"$Chr(9)$NetworkNumber); LogEventString(GetTimeStamp()$Chr(9)$"info"$Chr(9)$"Server_Port"$Chr(9)$Level.Game.GetServerPort()); } final event LogGameSpecial(String SpecialID, String SpecialParam) { LogEventString(GetTimeStamp()$Chr(9)$"game"$Chr(9)$SpecialID$Chr(9)$SpecialParam); } final event LogGameSpecial2(String SpecialID, String SpecialParam, String SpecialParam2) { LogEventString(GetTimeStamp()$Chr(9)$"game"$Chr(9)$SpecialID$Chr(9)$SpecialParam$Chr(9)$SpecialParam2); } native final function string GetMapFileName(); function LogMapParameters() { local string MapName; MapName = GetMapFileName(); LogEventString(GetTimeStamp()$Chr(9)$"map"$Chr(9)$"Name"$Chr(9)$MapName); LogEventString(GetTimeStamp()$Chr(9)$"map"$Chr(9)$"Title"$Chr(9)$Level.Title); LogEventString(GetTimeStamp()$Chr(9)$"map"$Chr(9)$"Author"$Chr(9)$Level.Author); LogEventString(GetTimeStamp()$Chr(9)$"map"$Chr(9)$"IdealPlayerCount"$Chr(9)$Level.Summary.IdealPlayerCount); LogEventString(GetTimeStamp()$Chr(9)$"map"$Chr(9)$"LevelEnterText"$Chr(9)$Level.LevelEnterText); } function LogPlayerConnect(Controller Player, optional string Checksum) { LogEventString(GetTimeStamp()$Chr(9)$"player"$Chr(9)$"Connect"$Chr(9)$Player.PlayerReplicationInfo.PlayerName$Chr(9)$Player.PlayerReplicationInfo.PlayerID$Chr(9)$Player.IsA('Admin')); LogPlayerInfo(Player); } function LogPlayerInfo(Controller Player) { if ( Player.PlayerReplicationInfo.Team != None ) { LogEventString(GetTimeStamp()$Chr(9)$"player"$Chr(9)$"TeamName"$Chr(9)$Player.PlayerReplicationInfo.PlayerID$Chr(9)$Player.PlayerReplicationInfo.Team.TeamName); LogEventString(GetTimeStamp()$Chr(9)$"player"$Chr(9)$"Team"$Chr(9)$Player.PlayerReplicationInfo.PlayerID$Chr(9)$Player.PlayerReplicationInfo.Team.TeamIndex); LogEventString(GetTimeStamp()$Chr(9)$"player"$Chr(9)$"TeamID"$Chr(9)$Player.PlayerReplicationInfo.PlayerID$Chr(9)$Player.PlayerReplicationInfo.TeamID); } LogEventString(GetTimeStamp()$Chr(9)$"player"$Chr(9)$"Ping"$Chr(9)$Player.PlayerReplicationInfo.PlayerID$Chr(9)$Player.PlayerReplicationInfo.Ping); } function LogPlayerDisconnect(Controller Player) { LogEventString(GetTimeStamp()$Chr(9)$"player"$Chr(9)$"Disconnect"$Chr(9)$Player.PlayerReplicationInfo.PlayerID); } function LogKill( PlayerReplicationInfo KillerPRI, PlayerReplicationInfo VictimPRI, string KillerWeaponName, string VictimWeaponName, class DamageType ) { local string KillType; if (VictimPRI == None) return; if ( KillerPRI == VictimPRI ) { LogEventString(GetTimeStamp()$Chr(9)$"suicide"$Chr(9)$KillerPRI.PlayerID$Chr(9)$KillerWeaponName$Chr(9)$DamageType$Chr(9)$"None"); return; } if ( KillerPRI.Team == VictimPRI.Team ) KillType = "teamkill"; else KillType = "kill"; LogEventString(GetTimeStamp()$Chr(9)$KillType$Chr(9)$KillerPRI.PlayerID$Chr(9)$KillerWeaponName$Chr(9)$VictimPRI.PlayerID$Chr(9)$VictimWeaponName$Chr(9)$DamageType); } function LogNameChange(Controller Other) { LogEventString(GetTimeStamp()$Chr(9)$"player"$Chr(9)$"Rename"$Chr(9)$Other.PlayerReplicationInfo.PlayerName$Chr(9)$Other.PlayerReplicationInfo.PlayerID); } function LogTeamChange(Controller Other) { LogEventString(GetTimeStamp()$Chr(9)$"player"$Chr(9)$"Teamchange"$Chr(9)$Other.PlayerReplicationInfo.PlayerID$Chr(9)$Other.PlayerReplicationInfo.Team); } function LogTypingEvent(bool bTyping, Controller Other) { LogEventString(GetTimeStamp()$Chr(9)$"typing"$Chr(9)$bTyping$Chr(9)$Other.PlayerReplicationInfo.PlayerID); } function LogPickup(Pickup Item, Pawn Other) { if ( (Item.InventoryType != None) && (Item.InventoryType.Default.ItemName != "") ) LogEventString(GetTimeStamp()$Chr(9)$"item_get"$Chr(9)$Item.InventoryType.Default.ItemName$Chr(9)$Other.PlayerReplicationInfo.PlayerID); else LogEventString(GetTimeStamp()$Chr(9)$"item_get"$Chr(9)$Item$Chr(9)$Other.PlayerReplicationInfo.PlayerID); } function LogItemActivate(Inventory Item, Pawn Other) { if ( (Other == None) || (Other.PlayerReplicationInfo == None) || (Item == None) ) return; LogEventString(GetTimeStamp()$Chr(9)$"item_activate"$Chr(9)$Item.ItemName$Chr(9)$Other.PlayerReplicationInfo.PlayerID); } function LogItemDeactivate(Inventory Item, Pawn Other) { LogEventString(GetTimeStamp()$Chr(9)$"item_deactivate"$Chr(9)$Item.ItemName$Chr(9)$Other.PlayerReplicationInfo.PlayerID); } function LogSpecialEvent(string EventType, optional coerce string Arg1, optional coerce string Arg2, optional coerce string Arg3, optional coerce string Arg4) { local string Event; Event = EventType; if (Arg1 != "") Event = Event$Chr(9)$Arg1; if (Arg2 != "") Event = Event$Chr(9)$Arg2; if (Arg3 != "") Event = Event$Chr(9)$Arg3; if (Arg4 != "") Event = Event$Chr(9)$Arg4; LogEventString(GetTimeStamp()$Chr(9)$Event); } function LogPings() { local PlayerReplicationInfo PRI; foreach DynamicActors(class'PlayerReplicationInfo', PRI) LogEventString(GetTimeStamp()$Chr(9)$"player"$Chr(9)$"Ping"$Chr(9)$PRI.PlayerID$Chr(9)$PRI.Ping); } function LogGameStart() { LogEventString(GetTimeStamp()$Chr(9)$"game_start"); } function LogGameEnd( string Reason ) { LogEventString(GetTimeStamp()$Chr(9)$"game_end"$Chr(9)$Reason); } v// ==================================================================== // Class: WarfareGame.StationaryWeapons // Parent: Engine.Actor // // ==================================================================== class StationaryWeapons extends Pickup Abstract Native NativeReplication; var() int TeamIndex; // The team that owns this weapon var() bool bIgnoreTeammates; // This weapon will ignore teammates var() StaticMesh Meshes[2]; // What meshes to use var byte bActive; // Is this weapon active var byte bLastActive; // What was the last bActive replication { reliable if (ROLE==ROLE_Authority) bActive, TeamIndex; } event PostBeginPlay() { SetTeam(TeamIndex); Super.PostBeginPlay(); } function SetTeam(int NewTeamIndex) { SetStaticMesh(Meshes[NewTeamIndex]); TeamIndex = NewTeamIndex; } // Activated and Deactivated are called when bActive changes state on replication simulated event Activated(); simulated event Deactivated(); auto state fucked { } function Activate() // Should be subclassed { bActive = 1; if ( (Level.NetMode==NM_ListenServer) || (Level.NetMode==NM_Standalone) ) Activated(); } function DeActivate() // Should be subclassed { bActive = 0; if ( (Level.NetMode==NM_ListenServer) || (LEvel.NetMode==NM_Standalone) ) Deactivated(); } function Explode(vector HitLocation, vector HitNormal) { Destroy(); } function float ReduceDamage(int Damage, class DamageType) { return Damage; } function TakeDamage(int Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType) { Explode(HitLocation, vect(0,0,0)); } Q//============================================================================= // StaticMeshActor. // An actor that is drawn using a static mesh(a mesh that never changes, and // can be cached in video memory, resulting in a speed boost). //============================================================================= class StaticMeshActor extends Actor native placeable; //#if __L2 // gigadeth struct native AccessoryType { var() int Depth; var() StaticMesh Mesh; }; //#endif struct native StaticMeshDecoInfo { var float LightWeight[3]; }; struct native StaticMeshDecorationLayerData { var array DecoInstances; var array StaticMeshDecoInstances; // Deco information specific to staticmesh }; enum EDecorationSortOrder { DECOSORT_NoSort, DECOSORT_BackToFront, DECOSORT_FrontToBack, }; //#ifdef __L2 // zodiac agit°ü·Ã º¯Œö var(Agit) bool bAgitDefaultStaticMesh; var(Agit) int AgitID; // AccessroyŽÂ 0ºžŽÙ Ä¿Ÿß ÇÑŽÙ. 0Àº wallpaperÀ̱⠶§¹®ÀÌŽÙ. var(Agit) int AccessoryIndex; var(Agit) int AgitStatus; var(Agit) transient int CurrAccessoryType; var(Agit) array AccessoryTypeList; //#endif //#if __L2 // gigadeth var(TimeReactor) bool bTimeReactor; var(TimeReactor) float ShowTime; var(TimeReactor) float HideTime; //#endif //#ifdef __L2 // zodiac var(Sound) sound StepSound_1; var(Sound) sound StepSound_2; var(Sound) sound StepSound_3; //#endif // flagoftiger var(L2ServerObject) bool bTargetable; var(L2ServerObject) array StateStaticMeshs; var(L2ServerObject) array StateChangeEffectNames; // 2009/02/03 Static Mesh Decoration Layer - Joon Min var(StaticMeshDeco) array DecoLayers; var Color DecoAmbientColor; var array DecoLayerData; var() bool bExactProjectileCollision; // nonzero extent projectiles should shrink to zero when hitting this actor var() array ZoneRenderState; €@@ //============================================================================= // Emitter: An Unreal Sprite Particle Emitter. //============================================================================= class SpriteEmitter extends ParticleEmitter native; enum EParticleDirectionUsage { PTDU_None, PTDU_Up, PTDU_Right, PTDU_Forward, PTDU_Normal, PTDU_UpAndNormal, PTDU_RightAndNormal, PTDU_Scale }; var (Sprite) EParticleDirectionUsage UseDirectionAs; var (Sprite) vector ProjectionNormal; var (Sprite) int Refraction; var (Sprite) float RefrUScale; var (Sprite) float RefrVScale; var transient vector RealProjectionNormal; S//============================================================================= // SpawnableStaticMeshActor. //============================================================================= class SpawnableStaticMeshActor extends StaticMeshActor native placeable; B//============================================================================= // Emitter: An Unreal Spark Particle Emitter. //============================================================================= class SparkEmitter extends ParticleEmitter native; struct ParticleSparkData { var float TimeBeforeVisible; var float TimeBetweenSegments; var vector StartLocation; var vector StartVelocity; }; var (Spark) range LineSegmentsRange; var (Spark) range TimeBeforeVisibleRange; var (Spark) range TimeBetweenSegmentsRange; var transient array SparkData; var transient vertexbuffer VertexBuffer; var transient indexbuffer IndexBuffer; var transient int NumSegments; var transient int VerticesPerParticle; var transient int IndicesPerParticle; var transient int PrimitivesPerParticle; |// SmallNavigationPoint // Convenience class, to allow single point to specify small navigation point sizes class SmallNavigationPoint extends NavigationPoint native abstract; //============================================================================= // SkyZoneInfo. //============================================================================= class SkyZoneInfo extends ZoneInfo native; var() bool UseDefaultMap; a.€|//============================================================================= // SkyRenderInfo : The class describes sky rendering paramater // // Created at 2010. 4. 27. jdh84 //============================================================================= class SkyRenderInfo extends Actor native hidecategories(Collision,Lighting,LightColor,Karma,Force) placeable; #exec Texture Import File=Textures\ZoneInfo.pcx Name=S_ZoneInfo Mips=Off MASKED=1 struct native SkyParameter { var() bool bUseCloudColor; var() color Cloudcolor; var() bool bUseHazeRingcolor; var() color HazeRingcolor; var() bool bUseBackgroundcolor; var() color Backgroundcolor; var() float ZScale; }; var(SkySetting) SkyParameter paramater; var(SkySetting) enum ESkyRenderShape { SRS_CIRCLE, SRS_RECTANGLE, } SkyRenderShape; var(SkySetting) int EffectDistanceX; var(SkySetting) int EffectDistanceY; var(SkySetting) int GradiationDistanceY; var(SkySetting) int GradiationDistanceX; var(SkySetting) int EffectRadius; var(SkySetting) int GradiationRadius; q//============================================================================= // SkyMeshActor // Ignore Range Clipping and always use Zero Lod Model //============================================================================= class SkyMeshActor extends StaticMeshActor native placeable; var(Display) bool IsSkyDorm; var(Display) float DormRadius; pˆ€-sclass SimulationSpringConstraint extends Object native; // difine ESC_MAX 8 var int Responsiveness[8]; var int NeighbourIndex[8]; var float DistAtRest[8]; {ˆsˆK ŠôØa.  €@vˆ€wˆ€[ virtual void PrepareConstraint( USkeletalMeshInstance* OwnerMeshInstance ); virtual void Constraint( FVector& Position ); virtual void Draw( USkeletalMeshInstance* OwnerMeshInstance, FLineBatcher& LineBatcher ); wclass SimulationSphereCollision extends SimulationCollision native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var float Radius; E‰xˆv$ƒQØ  }ˆE#eclass SimulationNotify extends Object native; var float Frame; var bool UseForce; var vector Force; var float ResetFactor; var bool TerrainCollision; var float TerrainCollisionZ; var float Stiffness; Oclass SimulationData extends Object native; var array Anchors; var array WidthNodesCounts; var array SpringConstraintData; var array CollisionObjects; var array NeighbourState; var array ForceSensitiveness; [ virtual void PrepareConstraint( USkeletalMeshInstance* OwnerMeshInstance ); virtual void Constraint( FVector& Position ); virtual void Draw( USkeletalMeshInstance* OwnerMeshInstance, FLineBatcher& LineBatcher ); zclass SimulationCylinderCollision extends SimulationCollision native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var float Radius; var int BoneIndexB; var bool SphereA; var bool SphereB; var transient vector BoneCenterB; var transient vector AB; €d virtual void PrepareConstraint( USkeletalMeshInstance* OwnerMeshInstance ) {}; virtual void Constraint( FVector& Position ) {}; virtual void Draw( USkeletalMeshInstance* OwnerMeshInstance, FLineBatcher& LineBatcher ) {}; X.KšR‰B‰u$~œ×( uclass SimulationCollision extends Object abstract native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var int BoneIndexA; var transient vector BoneCenterA; var transient bool ValidBone; H‰€@I‰–uhclass ShuttleWall extends StaticMeshActor native; var Shuttle pShuttle; var bool btreatAsBlock; Oclass ShuttleDoor extends Pawn native; enum DoorState { DOOR_OPENING, DOOR_OPENED, DOOR_CLOSING, DOOR_CLOSED, }; var float OpenTime; var float CloseTime; var float RemainTime; var DoorState mDoorState; var Shuttle OwnerShuttle; var vector relOpenLocation; var vector relCloseLocation; var vector relSafeLocation; native function Open(); native function Close(); Oclass Shuttle extends Pawn native; var() array WallList; var() array DoorList; var() array DoorMeshNameList; event OnClose() { local int doornum; local int dooridx; doornum = DoorList.Length; for(dooridx = 0; dooridx < doornum ; dooridx++) { DoorList[dooridx].Close(); } } event OnOpen() { local int doornum; local int dooridx; doornum = DoorList.Length; for(dooridx = 0; dooridx < doornum ; dooridx++) { DoorList[dooridx].Open(); } } GL// // ShadowProjector // class ShadowProjector extends Projector; var() Actor ShadowActor; var() vector LightDirection; var() float LightDistance; var() bool RootMotion; var() bool bBlobShadow; var() bool bShadowActive; var ShadowBitmapMaterial ShadowTexture; //#ifdef __L2 //v927->v2110 mark by giga var() bool L2Hidden; var() bool L2DefaultShadow; //#endif // ifdef __L2 native final function bool UpdateLightInfo(); // zodiac native final function bool CheckVisible(); // goldbat // endif // // PostBeginPlay // event PostBeginPlay() { Super(Actor).PostBeginPlay(); } // // Destroyed // event Destroyed() { if(ShadowTexture != None) { ShadowTexture.ShadowActor = None; if(!ShadowTexture.Invalid) Level.ObjectPool.FreeObject(ShadowTexture); ShadowTexture = None; ProjTexture = None; //#ifdef __L2 // zodiac ShadowActor = None; //#endif } Super.Destroyed(); } //#ifdef __L2 // zodiac function bool IsUnderWaterCamera() { local viewport Viewport; Viewport = GetViewport(); if ( Viewport != none ) { if ( Viewport.Actor.PhysicsVolume.bL2WaterVolume ) return true; } return false; } //#endif // // InitShadow // function InitShadow() { local Plane BoundingSphere; if(ShadowActor != None) { BoundingSphere = ShadowActor.GetRenderBoundingSphere(); FOV = Atan(BoundingSphere.W * 2 + 160, LightDistance) * 180 / PI; ShadowTexture = ShadowBitmapMaterial(Level.ObjectPool.AllocateObject(class'ShadowBitmapMaterial')); ProjTexture = ShadowTexture; if(ShadowTexture != None) { SetDrawScale(LightDistance * tan(0.5 * FOV * PI / 180) / (0.5 * ShadowTexture.USize)); ShadowTexture.Invalid = False; ShadowTexture.bBlobShadow = bBlobShadow; ShadowTexture.ShadowActor = ShadowActor; ShadowTexture.LightDirection = Normal(LightDirection); ShadowTexture.LightDistance = LightDistance; ShadowTexture.LightFOV = FOV; ShadowTexture.CullDistance = CullDistance; Enable('Tick'); UpdateShadow(); } else Log(Name$".InitShadow: Failed to allocate texture"); } else Log(Name$".InitShadow: No actor"); } // // UpdateShadow // function UpdateShadow() { //#ifdef __L2 local vector ShadowLocation; local Plane BoundingSphere; DetachProjector(true); //SetCollision(false,false,false); // if(ShadowActor != None && !ShadowActor.bHidden) if(!L2Hidden && ShadowActor != None && !ShadowActor.bHidden) // for L2 by goldbat { UpdateLightInfo(); if ( L2DefaultShadow ) { SetLocation(ShadowActor.Location); SetRotation(Rotator(-vect(0,0,10))); SetDrawScale(0.05); //SetDrawScale(0.20); MaterialBlendingOp=PB_None; FrameBufferBlendingOp=PB_AlphaBlend; //MaterialBlendingOp=PB_None; //FrameBufferBlendingOp=PB_Modulate; ShadowTexture.bDefaultShadow = true; } else { //UpdateLightInfo(); BoundingSphere = ShadowActor.GetRenderBoundingSphere(); FOV = Atan(BoundingSphere.W * 2 +160, LightDistance) * 180 / PI + 5; if(ShadowActor.DrawType == DT_Mesh && ( ShadowActor.Mesh != None || ShadowActor.MeshContainer != None ) ) ShadowLocation = ShadowActor.GetBoneCoords('').Origin; else ShadowLocation = ShadowActor.Location; SetLocation(ShadowLocation); SetRotation(Rotator(Normal(-LightDirection))); SetDrawScale((LightDistance * tan(0.5 * FOV * PI / 180) / (0.5*ShadowTexture.USize))); ShadowTexture.ShadowActor = ShadowActor; ShadowTexture.LightDirection = Normal(LightDirection); ShadowTexture.LightDistance = LightDistance; ShadowTexture.LightFOV = FOV; ShadowTexture.Dirty = true; //MaterialBlendingOp=PB_None; //FrameBufferBlendingOp=PB_Modulate; //#ifdef __L2 // zodiac MaterialBlendingOp=PB_None; FrameBufferBlendingOp=PB_AlphaBlend; //#endif ShadowTexture.bDefaultShadow = false; } AttachProjector(); //SetCollision(true,false,false); } //#else /* local coords C; DetachProjector(true); if(ShadowActor != None && !ShadowActor.bHidden && ShadowTexture != None && bShadowActive) { if(ShadowTexture.Invalid) Destroy(); else { if(RootMotion && ShadowActor.DrawType == DT_Mesh && ShadowActor.Mesh != None) { C = ShadowActor.GetBoneCoords(''); SetLocation(C.Origin); } else SetLocation(ShadowActor.Location + vect(0,0,5)); SetRotation(Rotator(Normal(-LightDirection))); ShadowTexture.Dirty = true; ShadowTexture.CullDistance = CullDistance; AttachProjector(); } } */ //#endif } // // Tick // function Tick(float DeltaTime) { super.Tick(DeltaTime); CheckVisible(); // for L2 by goldbat UpdateShadow(); } // // Default properties // K virtual void Destroy(); virtual FBaseTexture* GetRenderInterface(); virtual UBitmapMaterial* Get(FTime Time,UViewport* Viewport); @class ShadowBitmapMaterial extends BitmapMaterial native; #exec Texture Import file=Textures\L2DefaultShadow.tga Name=BlobTexture ALPHATEXTURE=1 Mips=On UCLAMPMODE=CLAMP VCLAMPMODE=CLAMP DXT=3 //#exec Texture Import file=Textures\blobshadow.tga Name=BlobTexture Mips=On UCLAMPMODE=CLAMP VCLAMPMODE=CLAMP DXT=3 //#exec Texture Import file=Textures\defaultshadow.tga Name=BlobTexture Mips=On UCLAMPMODE=CLAMP VCLAMPMODE=CLAMP DXT=3 var const transient int TextureInterfaces[2]; //#ifdef __L2 zodiac var const transient int ShadowInterface; //#endif var Actor ShadowActor; var vector LightDirection; var float LightDistance, LightFOV; var bool Dirty, Invalid, bBlobShadow; var float CullDistance; var byte ShadowDarkness; var BitmapMaterial BlobShadow; // ifdef __L2 zodiac var bool bDefaultShadow; var int ShadowIndex; var int ShadowTextureRevision; native final function bool Destroy(); // endif // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // // Default properties // Q‰\Y‰\S‰[Tg<ÕAs„r[_ r[*¹_W9?&pwR*R$Y _€¿self_fragïïw[*ž[W9?&¥[e'ïwR*RY [€?fragwJ*JT[_?„w[* —_%%{[ w‰T.{a Ô(&‚wJ*J {T.  Y!class Shader extends RenderedMaterial editinlinenew native; var() editinlineuse Material Diffuse; var() editinlineuse Material Opacity; var() editinlineuse Material Specular; var() editinlineuse Material SpecularityMask; var() editinlineuse Material SelfIllumination; var() editinlineuse Material SelfIlluminationMask; var() editinlineuse Material Detail; var() float DetailScale; var() enum EOutputBlending { OB_Normal, OB_Masked, OB_Modulate, OB_Translucent, OB_Invisible, OB_Brighten, OB_Darken } OutputBlending; var() bool TwoSided; var() bool Wireframe; var bool ModulateStaticLighting2X; var() bool PerformLightingOnSpecularPass; //#ifdef __L2 zodiac var() bool TreatAsTwoSided; var() bool ZWrite; var() bool AlphaTest; var() byte AlphaRef; //#endif var() editinlineuse Material NormalMap; var() float BumpOffsetScaleFactor; var() float BumpOffsetBiasFactor; var() editinlineuse Material SpecularMap; var() float SpecularPower; var() float SpecularScale; function Reset() { if(Diffuse != None) Diffuse.Reset(); if(Opacity != None) Opacity.Reset(); if(Specular != None) Specular.Reset(); if(SpecularityMask != None) SpecularityMask.Reset(); if(SelfIllumination != None) SelfIllumination.Reset(); if(SelfIlluminationMask != None) SelfIlluminationMask.Reset(); if(FallbackMaterial != None) FallbackMaterial.Reset(); if(NormalMap != None) NormalMap.Reset(); } function Trigger( Actor Other, Actor EventInstigator ) { if(Diffuse != None) Diffuse.Trigger(Other,EventInstigator); if(Opacity != None) Opacity.Trigger(Other,EventInstigator); if(Specular != None) Specular.Trigger(Other,EventInstigator); if(SpecularityMask != None) SpecularityMask.Trigger(Other,EventInstigator); if(SelfIllumination != None) SelfIllumination.Trigger(Other,EventInstigator); if(SelfIlluminationMask != None) SelfIlluminationMask.Trigger(Other,EventInstigator); if(FallbackMaterial != None) FallbackMaterial.Trigger(Other,EventInstigator); if(NormalMap !=None) NormalMap.Trigger(Other,EventInstigator); } jclass ServerPrimitive extends Info showcategories(Movement) native placeable; #exec Texture Import File=Textures\ServerPrimitive_info.pcx Name=S_ServerPrimitive Mips=Off MASKED=1 struct ServerPointStruct { var() string Name; var() vector Point; var() plane Color; }; struct ServerLineStruct { var() string Name; var() vector Start; var() vector End; var() plane Color; }; var() array PointArray; var() array LineArray; var() color LineColor; var() string Name; Dn//============================================================================= // ServerBlockingVolume //============================================================================= //#ifdef __L2 // gigadeth class ServerBlockingVolume extends Volume native nativereplication; //#endif F0// ==================================================================== // Class: Engine.Security // Parent: Engine.Info // // The security package is spawned and owned by each PlayerController as they // enter the game. It allows for the server to check various aspects // of the client. // ==================================================================== class Security extends Info Native; // When a command is executed, it's stored here in so we always know what the // last command was. var int LastType; var string LastParams[2]; replication { reliable if (Role==ROLE_Authority) ClientPerform, ClientMessage; reliable if (ROLEc‚‚w*w *>„›9: T%›9: k % €q‰O'£gF‹O#Dw.L _*.L _^/O#.L _I  ys‰e­Z`š9:9:$ A„r*r *M^M A  IŠ\Q void Render(FRenderInterface* RI); virtual UBitmapMaterial* Get(FTime Time,UViewport* Viewport); virtual FBaseTexture* GetRenderInterface(); virtual void Destroy(); virtual void PostEditChange(); h‹UaN)ÓS"wU*žUW9?v"FwJ*JaUv"{U \P.neÍ+ZnM$9=,ÿ$naÑpWEAPON 69VžiL n(€@i|ppp STATE: 9Wa Timer: 9U@À—9:f%|pp| Reload Count: 9Rfn aÑ|(žiL n(€@ižiL n(€@iäwY*n%S#V#W#|ppppp AnimSequence 9WS# Frame 9UV# Rate 9UW#­-g|p| Anim by Ownern aÑ|(žiL n(€@i:r)*naÑERROR - NO AMMUNITIONžiL n(€@iX)enL i c//============================================================================= // ScriptedTexture: A scriptable Unreal texture // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class ScriptedTexture extends BitmapMaterial native; var const transient int RenderTarget; var const transient Viewport RenderViewport; var Actor Client; var transient int Revision; var transient const int OldRevision; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) native final function SetSize(int Width,int Height); native final function DrawText(int StartX,int StartY,coerce string Text,Font Font,Color Color); native final function TextSize(coerce string Text,Font Font,out int Width,out int Height); native final function DrawTile(float X,float Y,float XL,float YL,float U,float V,float UL,float VL,Material Material,Color Color); native final function DrawPortal(int X,int Y,int Width,int Height,Actor CamActor,vector CamLocation,rotator CamRotation,optional int FOV,optional bool ClearZ); v//============================================================================= // Scout used for path generation. //============================================================================= class Scout extends Pawn native notplaceable; var const float MaxLandingVelocity; function PreBeginPlay() { Destroy(); //scouts shouldn't exist during play } P4//============================================================================= // ScoreBoard //============================================================================= class ScoreBoard extends Info; var() GameReplicationInfo GRI; var() class HUDClass; var bool bDisplayMessages; simulated function PostBeginPlay() { Super.PostBeginPlay(); InitGRI(); Init(); } function Font GetSmallerFontFor(Canvas Canvas, int offset) { local int i; for ( i=0; i<8-offset; i++ ) { if ( HUDClass.default.FontScreenWidthMedium[i] <= Canvas.ClipX ) return HUDClass.static.LoadFontStatic(i+offset); } return HUDClass.static.LoadFontStatic(8); } function bool HaveHalfFont(Canvas Canvas, int Offset) { local int i; for ( i=0; i<9-offset; i++ ) if ( HUDClass.default.FontScreenWidthSmall[i] <= Canvas.ClipX ) return true; return false; } function Font GetSmallFontFor(int ScreenWidth, int offset) { local int i; for ( i=0; i<8-offset; i++ ) { if ( HUDClass.default.FontScreenWidthSmall[i] <= ScreenWidth ) return HUDClass.static.LoadFontStatic(i+offset); } return HUDClass.static.LoadFontStatic(8); } simulated function InitGRI() { GRI = PlayerController(Owner).GameReplicationInfo; } simulated function string InitTitle() { return Caps(GRI.GameName); } simulated function Init(); simulated event DrawScoreboard( Canvas C ) { UpdateGRI(); UpdateScoreBoard(C); } function bool UpdateGRI() { if (GRI == None) { InitGRI(); if ( GRI == None ) return false; } SortPRIArray(); return true; } simulated function String FormatTime( int Seconds ) { local int Minutes, Hours; local String Time; if( Seconds > 3600 ) { Hours = Seconds / 3600; Seconds -= Hours * 3600; Time = Hours$":"; } Minutes = Seconds / 60; Seconds -= Minutes * 60; if( Minutes >= 10 ) Time = Time $ Minutes $ ":"; else Time = Time $ "0" $ Minutes $ ":"; if( Seconds >= 10 ) Time = Time $ Seconds; else Time = Time $ "0" $ Seconds; return Time; } simulated function UpdateScoreBoard(Canvas Canvas); simulated function bool InOrder( PlayerReplicationInfo P1, PlayerReplicationInfo P2 ) { if( P1.bOnlySpectator ) { if( P2.bOnlySpectator ) return true; else return false; } else if ( P2.bOnlySpectator ) return true; if( P1.Score < P2.Score ) return false; if( P1.Score == P2.Score ) { if ( P1.Deaths > P2.Deaths ) return false; if ( (P1.Deaths == P2.Deaths) && (PlayerController(P2.Owner) != None) && (Viewport(PlayerController(P2.Owner).Player) != None) ) return false; } return true; } simulated function SortPRIArray() { local int i,j; local PlayerReplicationInfo tmp; for (i=0; i Actions; var() config enum EAffect { AFFECT_ViewportCamera, AFFECT_Actor, } Affect; var() Actor AffectedActor; // The name of the actor which will follow the matinee path (if Affect==AFFECT_Actor) var() bool bLooping; // If this is TRUE, the path will looping endlessly var() bool bCinematicView; // Should the screen go into letterbox mode when playing this scene? var() name PlayerScriptTag; // Tag of sequence that player's pawn should use during sequence var() name NextSceneTag; // The tag of the next scenemanager to execute when this one finishes //#ifdef __L2 // zodiac var bool bReverseView; var int nSceneManagerID; //#endif // These vars are set by the SceneManager in it's Tick function. Don't mess with them directly. var transient float PctSceneComplete; // How much of the scene has finished running var transient mataction CurrentAction; // The currently executing action var transient float SceneSpeed; var transient float TotalSceneTime; // The total time the scene will take to run (in seconds) var transient Actor Viewer; // The actor viewing this scene (the one being affected by the actions) var transient Pawn OldPawn; // The pawn we need to repossess when scene is over var transient bool bIsRunning; // If TRUE, this scene is executing. var transient bool bIsSceneStarted; // If TRUE, the scene has been initialized and is running var transient float CurrentTime; // Keeps track of the current time using the DeltaTime passed to Tick var transient array SampleLocations; // Sampled locations for camera movement var transient array SubActions; // The list of sub actions which will execute during this scene var transient Orientation CamOrientation; // The current camera orientation var transient Orientation PrevOrientation; // The previous orientation that was set var transient Interpolator RotInterpolator; // Interpolation helper for rotations var transient vector CameraShake; // The SubActionCameraShake effect fills this var in each frame var transient vector DollyOffset; // How far away we are from the actor we are locked to // Native functions native function float GetTotalSceneTime(); simulated function BeginPlay() { Super.BeginPlay(); if( Affect == AFFECT_Actor && AffectedActor == None ) log( "SceneManager : Affected actor is NULL!" ); // // Misc set up // TotalSceneTime = GetTotalSceneTime(); bIsRunning = false; bIsSceneStarted = false; } function Trigger( actor Other, Pawn EventInstigator ) { bIsRunning = true; bIsSceneStarted = false; //#ifdef __L2 // zodiac if ( Other != None ) bReverseView=true; //#endif //#ifdef __L2 // zodiac //Disable( 'Trigger' ); //#endif } // Events event SceneStarted(LevelInfo Info) // Called from C++ when the scene starts. { local Controller P; local AIScript S; // Figure out who our viewer is. Viewer = None; if( Affect==AFFECT_Actor ) Viewer = AffectedActor; else { // lpislhy if(Info != None) { for( P = Info.ControllerList ; P != None ; P = P.nextController ) if( P.IsA('LineagePlayerController') ) { Viewer = P; OldPawn = PlayerController(Viewer).Pawn; if ( OldPawn != None ) { OldPawn.Velocity = vect(0,0,0); OldPawn.Acceleration = vect(0,0,0); PlayerController(Viewer).UnPossess(); if ( PlayerScriptTag != 'None' ) { ForEach DynamicActors( class'AIScript', S, PlayerScriptTag ) break; if ( S != None ) S.TakeOver(OldPawn); } } PlayerController(Viewer).StartInterpolation(); break; } } if( Viewer == None ) //#ifdef __L2 Hunter for( P = Level.ControllerList ; P != None ; P = P.nextController ) if( P.IsA('LineagePlayerController') ) //#else //for( P = Level.ControllerList ; P != None ; P = P.nextController ) // if( P.IsA('PlayerController') ) // && (P.Pawn != None) ) //#endif { Viewer = P; OldPawn = PlayerController(Viewer).Pawn; if ( OldPawn != None ) { OldPawn.Velocity = vect(0,0,0); OldPawn.Acceleration = vect(0,0,0); PlayerController(Viewer).UnPossess(); if ( PlayerScriptTag != 'None' ) { ForEach DynamicActors( class'AIScript', S, PlayerScriptTag ) break; if ( S != None ) S.TakeOver(OldPawn); } } PlayerController(Viewer).StartInterpolation(); //#ifndef __L2 We don't use MyHud - NeverDie //PlayerController(Viewer).MyHud.bHideHUD = true; //#endif break; } } Viewer.StartInterpolation(); } event SceneEnded() // Called from C++ when the scene ends. { bIsSceneStarted = false; if( Affect==AFFECT_ViewportCamera ) { if ( PlayerController(Viewer) != None ) { if ( OldPawn != None ) PlayerController(Viewer).Possess( OldPawn ); //#ifndef __L2 We don't use MyHud - NeverDie //PlayerController(Viewer).MyHud.bHideHUD = false; //#endif } } Viewer.FinishedInterpolation(); //#ifdef __L2 // zodiac bReverseView=false; //#endif Enable( 'Trigger' ); } q//============================================================================= // SavedMove is used during network play to buffer recent client moves, // for use when the server modifies the clients actual position, etc. // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class SavedMove extends Info; // also stores info in Acceleration attribute var SavedMove NextMove; // Next move in linked list. var float TimeStamp; // Time of this move. var float Delta; // Distance moved. var bool bRun; var bool bDuck; var bool bPressedJump; var bool bDoubleJump; var EDoubleClickDir DoubleClickMove; // Double click info. var EPhysics SavedPhysics; var vector SavedLocation, SavedVelocity; final function Clear() { TimeStamp = 0; Delta = 0; DoubleClickMove = DCLICK_None; Acceleration = vect(0,0,0); bRun = false; bDuck = false; bPressedJump = false; bDoubleJump = false; } final function PostUpdate(PlayerController P) { bDoubleJump = P.bDoubleJump || bDoubleJump; if ( P.Pawn != None ) { SavedLocation = P.Pawn.Location; SavedVelocity = P.Pawn.Velocity; } } final function SetMoveFor(PlayerController P, float DeltaTime, vector NewAccel, EDoubleClickDir InDoubleClick) { if ( VSize(NewAccel) > 3072 ) NewAccel = 3072 * Normal(NewAccel); if ( Delta > 0 ) Acceleration = (DeltaTime * NewAccel + Delta * Acceleration)/(Delta + DeltaTime); else { if ( P.Pawn != None ) SavedPhysics = P.Pawn.Physics; Acceleration = NewAccel; } Delta += DeltaTime; if ( DoubleClickMove == eDoubleClickDir.DCLICK_None ) DoubleClickMove = InDoubleClick; bRun = (P.bRun > 0); bDuck = (P.bDuck > 0); bPressedJump = P.bPressedJump || bPressedJump; bDoubleJump = P.bDoubleJump || bDoubleJump; TimeStamp = Level.TimeSeconds; } Q3class RibbonEmitter extends ParticleEmitter native; struct native RibbonPoint { //#ifdef __L2 var() vector Location; var() vector LocationUnder; var() vector MovingDirection; var() vector MovingDirectionUnder; var() float Width; //#endif //var() vector Location; //var() vector AxisNormal; //var() float Width; }; enum EGetPointAxis { PAXIS_OwnerX, // owners X axis based on rotation PAXIS_OwnerY, // owners Y axis based on rotation PAXIS_OwnerZ, // owners Z axis based on rotation PAXIS_BoneNormal, // (end - start) or start bone direction if no end bone found PAXIS_StartBoneDirection, // start bones direction PAXIS_AxisNormal // specified normal }; // main vars var(Ribbon) float SampleRate; var(Ribbon) float DecayRate; // unused var(Ribbon) int NumPoints; //#ifdef __L2. nonblock. accelerative dropping enum EAccDrop { ADRP_NONE, // not using accelerative drop. (rely on decaying ) ADRP_BYPOINT, // start acc drop, when RibbonPoints.Num() exceeds NumPoints. ADRP_BYTIME, // start acc drop, when Time > ThresTime ADRP_BYTIME_DUAL // start acc drop, and process, then drop again. }; var(RibbonAccDrop) EAccDrop AccDrop; var(RibbonAccDrop) int PointsDropRate; // number of dying points a tick. var(RibbonAccDrop) float ThresholdTime; // ADRP_BYTIME, ADRP_BYTIME_DUAL var(RibbonAccDrop) int MinPoints; // ADRP_BYPOINT, ADRP_BYTIME, ADRP_BYTIME_DUAL var(RibbonAccDrop) float ThresholdTime2; // ADRP_BYTIME_DUAL //#endif var(Ribbon) float RibbonWidth; var(Ribbon) EGetPointAxis GetPointAxisFrom; var(Ribbon) vector AxisNormal; // used for PAXIS_AxisNormal var(Ribbon) float MinSampleDist; var(Ribbon) float MinSampleDot; var(Ribbon) float PointOriginOffset; // texture UV scaling var(RibbonTexture) float RibbonTextureUScale; var(RibbonTexture) float RibbonTextureVScale; // axis rotated sheets var(RibbonSheets) int NumSheets; // number of sheets used var(RibbonSheets) array SheetScale; // bone vars (emitter must have an actor with a skeletal mesh as its owner) var(RibbonBones) vector StartBoneOffset; var(RibbonBones) vector EndBoneOffset; var(RibbonBones) name BoneNameStart; var(RibbonBones) name BoneNameEnd; // ribbon point array var(Ribbon) array RibbonPoints; //#ifdef __L2. nonblock. interpolation var(RibbonInterpolation) bool bUseInterpolation; var(RibbonInterpolation) int CntrPoints; var(RibbonInterpolation) float ScaleRatio; // #endif // flags var(Ribbon) bool bSamplePoints; var(Ribbon) bool bDecayPoints; var(Ribbon) bool bDecayPointsWhenStopped; var(Ribbon) bool bSyncDecayWhenKilled; var(RibbonTexture) bool bLengthBasedTextureU; var(RibbonSheets) bool bUseSheetScale; var(RibbonBones) bool bUseBones; var(RibbonBones) bool bUseBoneDistance; // get width from distance between start and end bones // internal vars var transient float SampleTimer; // sample timer (samples point at SampleTimer >= SampleRate) var transient float DecayTimer; var transient float RealSampleRate; var transient float RealDecayRate; var transient int SheetsUsed; var transient RibbonPoint LastSampledPoint; var transient bool bKilled; // used to init vars when particle emitter is killed var transient bool bDecaying; ~ INT* GetOptimizedRepList( BYTE* Recent, FPropertyRetirement* Retire, INT* Ptr, UPackageMap* Map, UActorChannel* Channel ); r"x‰ZþÝÈr"r.* wI *).". oI r)*)aI . E))wK )q!¿r.@Æq! @ŠBŠL'ç  €s"AŠ@!Hs"F‚w.*r..* t"CŠnjš!2t"n-l"(nw nk' m//============================================================================= // ReplicationInfo. //============================================================================= class ReplicationInfo extends Info abstract native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) F/DŠpP.Y#@A pr* z. hwz*-O.'V9DzAhšV, Ÿ‚‚-D-R. wA *º-J-J'L#®U.ÚÚ°L#-D(œ-D¬«««?S.N#px Dpu(®¯«?px««px9?VV.®¯«?pU«pUW.B p§-J(a ×   n s gšV%6 s,6 "6 s6 Va+sp aÓ((K#  ?class RenderedMaterial extends Material native noexport; >class RealtimeGenerationTexture extends Texture native; \I //============================================================================= // ReachSpec. // // A Reachspec describes the reachability requirements between two NavigationPoints // //============================================================================= class ReachSpec extends Object native; var int Distance; var const NavigationPoint Start; // navigationpoint at start of this path var const NavigationPoint End; // navigationpoint at endpoint of this path (next waypoint or goal) var int CollisionRadius; var int CollisionHeight; var int reachFlags; // see EReachSpecFlags definition in UnPath.h var int MaxLandingVelocity; var byte bPruned; var const bool bForced; Vclass ProjectorMaterial extends RenderedMaterial native noteditinlinenew; var const transient BitmapMaterial Gradient; var const transient Material Projected, BaseMaterial; var const transient byte BaseMaterialBlending, FrameBufferBlending; var const transient Matrix Matrix, GradientMatrix; var const transient bool bProjected, bProjectOnUnlit, bGradient, bProjectOnAlpha, bProjectOnBackfaces, bStaticProjector, bTwoSided; _&class Projector extends Actor placeable native; #exec Texture Import File=Textures\Proj_IconMasked.pcx Name=Proj_Icon Mips=Off MASKED=1 #exec Texture Import file=Textures\GRADIENT_Fade.tga Name=GRADIENT_Fade Mips=Off UCLAMPMODE=CLAMP VCLAMPMODE=CLAMP DXT=3 #exec Texture Import file=Textures\GRADIENT_Clip.tga Name=GRADIENT_Clip Mips=Off UCLAMPMODE=CLAMP VCLAMPMODE=CLAMP DXT=3 // Projector blending operation. enum EProjectorBlending { PB_None, PB_Modulate, PB_AlphaBlend, PB_Add }; var() EProjectorBlending MaterialBlendingOp, // The blending operation between the material being projected onto and ProjTexture. FrameBufferBlendingOp; // The blending operation between the framebuffer and the result of the base material blend. // Projector properties. var() Material ProjTexture; var() int FOV; var() int MaxTraceDistance; var() bool bProjectBSP; var() bool bProjectTerrain; var() bool bProjectStaticMesh; var() bool bProjectParticles; var() bool bProjectActor; var() bool bLevelStatic; var() bool bClipBSP; var() bool bClipStaticMesh; var() bool bProjectOnUnlit; var() bool bGradient; var() bool bProjectOnBackfaces; var() bool bProjectOnAlpha; var() bool bProjectOnParallelBSP; var() name ProjectTag; var() bool bDynamicAttach; // Internal state. var const transient plane FrustumPlanes[6]; var const transient vector FrustumVertices[8]; var const transient Box Box; var const transient ProjectorRenderInfoPtr RenderInfo; var Texture GradientTexture; var transient Matrix GradientMatrix; var transient Matrix Matrix; var transient Vector OldLocation; //#ifdef __L2 // zodiac var float ProjectorRadius; //#endif // Native interface. native function AttachProjector(); native function DetachProjector(optional bool Force); native function AbandonProjector(optional float Lifetime); native function AttachActor( Actor A ); native function DetachActor( Actor A ); simulated event PostBeginPlay() { AttachProjector(); if( bLevelStatic ) { AbandonProjector(); Destroy(); } if( bProjectActor ) SetCollision(True, False, False); } simulated event Touch( Actor Other ) { if(Other==None) return; if( Other.bAcceptsProjectors && (ProjectTag=='' || Other.Tag==ProjectTag) && (bProjectStaticMesh || Other.StaticMesh == None) ) AttachActor(Other); } simulated event Untouch( Actor Other ) { DetachActor(Other); } FŠA `#(ò rC#* XB-V(>(«œÄ?¯xX«%?¯UXR$M9=,ÿ9=,ÿ9=,ÿ&aÒC#XXBB-V'R` @?//============================================================================= // Projectile. // // A delayed-hit projectile that moves around for some time after it is created. //============================================================================= class Projectile extends Actor abstract native; //----------------------------------------------------------------------------- // Projectile variables. // Motion information. var float Speed; // Initial speed of projectile. var float MaxSpeed; // Limit on speed of projectile (0 means no limit) var float TossZ; var bool bSwitchToZeroCollision; // if collisionextent nonzero, and hit actor with bBlockNonZeroExtents=0, switch to zero extent collision // Damage attributes. var float Damage; var float DamageRadius; var float MomentumTransfer; // Momentum magnitude imparted by impacting projectile. var class MyDamageType; // Projectile sound effects var sound SpawnSound; // Sound made when projectile is spawned. var sound ImpactSound; // Sound made when projectile hits something. // explosion effects var class ExplosionDecal; var float ExploWallOut; // distance to move explosions out from wall //============== // Encroachment function bool EncroachingOn( actor Other ) { if ( (Other.Brush != None) || (Brush(Other) != None) ) return true; return false; } //============== // Touching simulated singular function Touch(Actor Other) { local actor HitActor; local vector HitLocation, HitNormal, VelDir; local bool bBeyondOther; local float BackDist, DirZ; if ( Other == None ) // Other just got destroyed in its touch? return; if ( Other.bProjTarget || (Other.bBlockActors && Other.bBlockPlayers) ) { if ( Velocity == vect(0,0,0) || Other.IsA('Mover') ) { ProcessTouch(Other,Location); return; } //get exact hitlocation - trace back along velocity vector bBeyondOther = ( (Velocity Dot (Location - Other.Location)) > 0 ); VelDir = Normal(Velocity); DirZ = sqrt(abs(VelDir.Z)); BackDist = Other.CollisionRadius * (1 - DirZ) + Other.CollisionHeight * DirZ; if ( bBeyondOther ) BackDist += VSize(Location - Other.Location); else BackDist -= VSize(Location - Other.Location); HitActor = Trace(HitLocation, HitNormal, Location, Location - 1.1 * BackDist * VelDir, true); if (HitActor == Other) ProcessTouch(Other, HitLocation); else if ( bBeyondOther ) ProcessTouch(Other, Other.Location - Other.CollisionRadius * VelDir); else ProcessTouch(Other, Location); } } simulated function ProcessTouch(Actor Other, Vector HitLocation) { if ( Other != Instigator ) Explode(HitLocation,Normal(HitLocation-Other.Location)); } simulated function HitWall (vector HitNormal, actor Wall) { if ( Role == ROLE_Authority ) { if ( Mover(Wall) != None ) Wall.TakeDamage( Damage, instigator, Location, MomentumTransfer * Normal(Velocity), MyDamageType); MakeNoise(1.0); } Explode(Location + ExploWallOut * HitNormal, HitNormal); if ( (ExplosionDecal != None) && (Level.NetMode != NM_DedicatedServer) ) Spawn(ExplosionDecal,self,,Location, rotator(-HitNormal)); } simulated function BlowUp(vector HitLocation) { HurtRadius(Damage,DamageRadius, MyDamageType, MomentumTransfer, HitLocation ); if ( Role == ROLE_Authority ) MakeNoise(1.0); } simulated function Explode(vector HitLocation, vector HitNormal) { Destroy(); } simulated final function RandSpin(float spinRate) { DesiredRotation = RotRand(); RotationRate.Yaw = spinRate * 2 *FRand() - spinRate; RotationRate.Pitch = spinRate * 2 *FRand() - spinRate; RotationRate.Roll = spinRate * 2 *FRand() - spinRate; } static function vector GetTossVelocity(Pawn P, Rotator R) { local vector V; V = Vector(R); V *= ((P.Velocity Dot V)*0.4 + Default.Speed); V.Z += Default.TossZ; return V; } f7//============================================================================= // Powerup items - activatable inventory. //============================================================================= class Powerups extends Inventory abstract native nativereplication; var travel int NumCopies; var() bool bCanHaveMultipleCopies; // if player can possess more than one of this var() bool bAutoActivate; // automatically activated when picked up var() bool bActivatable; // Whether item can be activated/deactivated (if true, must auto activate) var travel bool bActive; // Whether item is currently activated. var() localized String ExpireMessage; // Messages shown when powerup charge runs out var() sound ActivateSound, DeActivateSound; replication { // Things the server should send to the client. reliable if( bNetOwner && bNetDirty && (Role==ROLE_Authority) ) NumCopies, bActivatable, bActive; } event TravelPreAccept() { Super.TravelPreAccept(); if( bActive ) Activate(); } function PickupFunction(Pawn Other) { Super.PickupFunction(Other); if (bActivatable && Other.SelectedItem==None) Other.SelectedItem=self; if (bActivatable && bAutoActivate && Other.bAutoActivate) Activate(); } // // Select first activatable item. // function Powerups SelectNext() { if ( bActivatable ) return self; if ( Inventory != None ) return Inventory.SelectNext(); else return None; } // // Toggle Activation of selected Item. // function Activate() { if( bActivatable ) { GoToState('Activated'); } } // // Advanced function which lets existing items in a pawn's inventory // prevent the pawn from picking something up. Return true to abort pickup // or if item handles the pickup function bool HandlePickupQuery( Pickup Item ) { if (item.InventoryType == class) { if (bCanHaveMultipleCopies) NumCopies++; else if ( bDisplayableInv ) { if ( Item.Inventory != None ) Charge = Max(Charge, Item.Inventory.Charge); else Charge = Max(Charge, Item.InventoryType.Default.Charge); } else return false; Item.AnnouncePickup(Pawn(Owner)); return true; } if ( Inventory == None ) return false; return Inventory.HandlePickupQuery(Item); } function float UseCharge(float Amount); function FireEffect(); // // This is called when a usable inventory item has used up it's charge. // function UsedUp() { if ( Pawn(Owner) != None ) { bActivatable = false; Pawn(Owner).NextItem(); if (Pawn(Owner).SelectedItem == Self) { Pawn(Owner).NextItem(); if (Pawn(Owner).SelectedItem == Self) Pawn(Owner).SelectedItem=None; } Instigator.ReceiveLocalizedMessage( MessageClass, 0, None, None, Self.Class ); } Owner.PlaySound(DeactivateSound,SLOT_Interface); Destroy(); } static function string GetLocalString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2 ) { return Default.ExpireMessage; } //============================================================================= // Active state: this inventory item is armed and ready to rock! state Activated { function BeginState() { bActive = true; } function EndState() { bActive = false; } function Activate() { if ( (Pawn(Owner) != None) && Pawn(Owner).bAutoActivate && bAutoActivate && (Charge>0) ) return; Global.Activate(); } } MŠlB t°*P¬«N#lx DlR$U9?A kr°Ã?Y#UU«€¿UR9?A O±°Ã?Z#RR«€¿RlJaÒA «P9?A k«P9?A OY#Z#URlR$ h class PotentialClimbWatcher extends Info native; simulated function Tick(float DeltaTime) { local rotator PawnRot; local LadderVolume L; local bool bFound; if ( (Owner == None) || Owner.bDeleteMe || !Pawn(Owner).CanGrabLadder() ) { destroy(); return; } PawnRot = Owner.Rotation; PawnRot.Pitch = 0; ForEach Owner.TouchingActors(class'LadderVolume', L) if ( L.Encompasses(Owner) ) { if ( (vector(PawnRot) Dot L.LookDir) > 0.9 ) { Pawn(Owner).ClimbLadder(L); destroy(); return; } else bFound = true; } if ( !bFound ) destroy(); } q//============================================================================= // PolyMarker. // // These are markers for the polygon drawing mode. // // These should NOT be manually added to the level. The editor adds and // deletes them on it's own. // //============================================================================= class PolyMarker extends Keypoint placeable native; #exec Texture Import File=Textures\S_PolyMarker.pcx Name=S_PolyMarker Mips=Off MASKED=1 b//============================================================================= // Player start location. //============================================================================= class PlayerStart extends SmallNavigationPoint placeable native; #exec Texture Import File=Textures\S_Player.pcx Name=S_Player Mips=Off MASKED=1 // Players on different teams are not spawned in areas with the // same TeamNumber unless there are more teams in the level than // team numbers. var() byte TeamNumber; // what team can spawn at this start var() bool bSinglePlayerStart; // use first start encountered with this true for single player var() bool bCoopStart; // start can be used in coop games var() bool bEnabled; var() bool bPrimaryStart; // None primary starts used only if no primary start available var() float LastSpawnCampTime; // last time a pawn starting from this spot died within 5 seconds aV//============================================================================= // PlayerReplicationInfo. //============================================================================= class PlayerReplicationInfo extends ReplicationInfo native nativereplication; // also replicate here player class and skins and any other seldom changed stuff var float Score; // Player's current score. var float Deaths; // Number of player's deaths. var CarriedObject HasFlag; var int Ping; // packet loss packed into this property as well var Volume PlayerVolume; var ZoneInfo PlayerZone; var int NumLives; var string PlayerName; // Player name, or blank if none. var string CharacterName, OldCharacterName; var string OldName, PreviousName; // Temporary value. var int PlayerID; // Unique id number. var TeamInfo Team; // Player Team var int TeamID; // Player position in team. var class VoiceType; var bool bAdmin; // Player logged in as Administrator var bool bIsFemale; var bool bIsSpectator; var bool bOnlySpectator; var bool bWaitingPlayer; var bool bReadyToPlay; var bool bOutOfLives; var bool bBot; var bool bWelcomed; // set after welcome message broadcast (not replicated) var bool bReceivedPing; var bool bHasFlag; // Time elapsed. var int StartTime; var localized String StringSpectating; var localized String StringUnknown; var int GoalsScored; // not replicated - used on server side only var int Kills; // not replicated replication { // Things the server should send to the client. reliable if ( bNetDirty && (Role == Role_Authority) ) Score, Deaths, bHasFlag, PlayerVolume, PlayerZone, PlayerName, Team, TeamID, VoiceType, bIsFemale, bAdmin, bIsSpectator, bOnlySpectator, bWaitingPlayer, bReadyToPlay, bOutOfLives, CharacterName; reliable if ( bNetDirty && !bNetOwner && (Role == Role_Authority) ) Ping; reliable if ( bNetInitial && (Role == Role_Authority) ) StartTime, bBot; } function PostBeginPlay() { if ( Role < ROLE_Authority ) return; if (AIController(Owner) != None) bBot = true; StartTime = Level.Game.GameReplicationInfo.ElapsedTime; Timer(); SetTimer(1.5 + FRand(), true); } simulated function PostNetBeginPlay() { local GameReplicationInfo GRI; ForEach DynamicActors(class'GameReplicationInfo',GRI) { GRI.AddPRI(self); break; } } simulated function Destroyed() { local GameReplicationInfo GRI; ForEach DynamicActors(class'GameReplicationInfo',GRI) GRI.RemovePRI(self); Super.Destroyed(); } function SetCharacterName(string S) { CharacterName = S; } /* Reset() reset actor to initial state - used when restarting level without reloading. */ function Reset() { Super.Reset(); Score = 0; Deaths = 0; SetFlag(None); bReadyToPlay = false; NumLives = 0; bOutOfLives = false; } function SetFlag(CarriedObject NewFlag) { HasFlag = NewFlag; bHasFlag = (HasFlag != None); } simulated function string GetHumanReadableName() { return PlayerName; } simulated function string GetLocationName() { if( ( PlayerVolume == None ) && ( PlayerZone == None ) ) return StringSpectating; if( ( PlayerVolume != None ) && ( PlayerVolume.LocationName != class'Volume'.Default.LocationName ) ) return PlayerVolume.LocationName; else if( PlayerZone != None && ( PlayerZone.LocationName != "" ) ) return PlayerZone.LocationName; else if ( Level.Title != Level.Default.Title ) return Level.Title; else return StringUnknown; } simulated function material GetPortrait(); event UpdateCharacter(); function UpdatePlayerLocation() { local Volume V, Best; local Pawn P; local Controller C; C = Controller(Owner); if( C != None ) P = C.Pawn; if( P == None ) { PlayerVolume = None; PlayerZone = None; return; } if ( PlayerZone != P.Region.Zone ) PlayerZone = P.Region.Zone; foreach P.TouchingActors( class'Volume', V ) { if( V.LocationName == "") continue; if( (Best != None) && (V.LocationPriority <= Best.LocationPriority) ) continue; if( V.Encompasses(P) ) Best = V; } if ( PlayerVolume != Best ) PlayerVolume = Best; } /* DisplayDebug() list important controller attributes on canvas */ simulated function DisplayDebug(Canvas Canvas, out float YL, out float YPos) { if ( Team != None ) Canvas.DrawText(" PlayerName "$PlayerName$" Team "$Team.GetHumanReadableName()$" has flag "$HasFlag); else Canvas.DrawText(" PlayerName "$PlayerName$" NO Team"); } event ClientNameChange() { local PlayerController PC; ForEach DynamicActors(class'PlayerController', PC) PC.ReceiveLocalizedMessage( class'GameMessage', 2, self ); } function Timer() { local Controller C; UpdatePlayerLocation(); SetTimer(1.5 + FRand(), true); if( FRand() < 0.65 ) return; if( !bBot ) { C = Controller(Owner); if ( !bReceivedPing ) Ping = int(C.ConsoleCommand("GETPING")); } } function SetPlayerName(string S) { OldName = PlayerName; PlayerName = S; } function SetWaitingPlayer(bool B) { bIsSpectator = B; bWaitingPlayer = B; } Yw//============================================================================= // PlayerInput // Object within playercontroller that manages player input. // only spawned on client //============================================================================= class PlayerInput extends Object within PlayerController config(User) native transient; var globalconfig bool bInvertMouse; var bool bWasForward; // used for doubleclick move var bool bWasBack; var bool bWasLeft; var bool bWasRight; var bool bEdgeForward; var bool bEdgeBack; var bool bEdgeLeft; var bool bEdgeRight; var bool bAdjustSampling; // Mouse smoothing var globalconfig byte MouseSmoothingMode; var globalconfig float MouseSmoothingStrength; var globalconfig float MouseSensitivity; var globalconfig float MouseSamplingTime; var globalconfig float MouseAccelThreshold; var float SmoothedMouse[2], ZeroTime[2], SamplingTime[2], MaybeTime[2], OldSamples[4]; var int MouseSamples[2]; var float DoubleClickTimer; // max double click interval for double click move var globalconfig float DoubleClickTime; //============================================================================= // Input related functions. function bool InvertLook(); // Postprocess the player's input. event PlayerInput( float DeltaTime ) { local float FOVScale, MouseScale; // Check for Double click move // flag transitions bEdgeForward = (bWasForward ^^ (aBaseY > 0)); bEdgeBack = (bWasBack ^^ (aBaseY < 0)); bEdgeLeft = (bWasLeft ^^ (aStrafe < 0)); bEdgeRight = (bWasRight ^^ (aStrafe > 0)); bWasForward = (aBaseY > 0); bWasBack = (aBaseY < 0); bWasLeft = (aStrafe < 0); bWasRight = (aStrafe > 0); // Smooth and amplify mouse movement FOVScale = DesiredFOV * 0.01111; // 0.01111 = 1/90 MouseScale = MouseSensitivity * FOVScale; aMouseX = SmoothMouse(aMouseX*MouseScale, DeltaTime,bXAxis,0); aMouseY = SmoothMouse(aMouseY*MouseScale, DeltaTime,bYAxis,1); aMouseX = AccelerateMouse(aMouseX); aMouseY = AccelerateMouse(aMouseY); // adjust keyboard and joystick movements aLookUp *= FOVScale; aTurn *= FOVScale; // Remap raw x-axis movement. if( bStrafe!=0 ) // strafe aStrafe += aBaseX * 7.5 + aMouseX; else // forward aTurn += aBaseX * FOVScale + aMouseX; aBaseX = 0; // Remap mouse y-axis movement. if( (bStrafe == 0) && (bAlwaysMouseLook || (bLook!=0)) ) { // Look up/down. if ( bInvertMouse ) aLookUp -= aMouseY; else aLookUp += aMouseY; } else // Move forward/backward. aForward += aMouseY; if ( bSnapLevel != 0 ) { bCenterView = true; bKeyboardLook = false; } else if (aLookUp != 0) { bCenterView = false; bKeyboardLook = true; } else if ( bSnapToLevel && !bAlwaysMouseLook ) { bCenterView = true; bKeyboardLook = false; } // Remap other y-axis movement. if ( bFreeLook != 0 ) { bKeyboardLook = true; aLookUp += 0.5 * aBaseY * FOVScale; } else aForward += aBaseY; aBaseY = 0; // Handle walking. HandleWalking(); } exec function SetSmoothingMode(byte B) { MouseSmoothingMode = B; log("Smoothing mode "$MouseSmoothingMode); } exec function SetSmoothingStrength(float F) { MouseSmoothingStrength = FClamp(F,0,1); } function float AccelerateMouse(float aMouse) { local float Accel; if ( abs(aMouse) == 0 ) return 0; Accel = MouseAccelThreshold * MouseSensitivity; if ( abs(aMouse) < Accel ) { if ( abs(aMouse) < 0.1 * Accel ) aMouse *= 0.1; else aMouse = aMouse * abs(aMouse)/Accel; } return aMouse; } function float SmoothMouse(float aMouse, float DeltaTime, out byte SampleCount, int Index) { local int i, sum; if ( MouseSmoothingMode == 0 ) return aMouse; if ( aMouse == 0 ) { ZeroTime[Index] += DeltaTime; if ( ZeroTime[Index] < MouseSamplingTime ) { SamplingTime[Index] += DeltaTime; MaybeTime[Index] += DeltaTime; aMouse = SmoothedMouse[Index]; } else { if ( bAdjustSampling && (MouseSamples[Index] > 9) ) { SamplingTime[Index] -= MaybeTime[Index]; MouseSamplingTime = 0.9 * MouseSamplingTime + 0.1 * SamplingTime[Index]/MouseSamples[Index]; } SamplingTime[Index] = 0; SmoothedMouse[Index] = 0; MouseSamples[Index] = 0; } } else { MaybeTime[Index] = 0; if ( SmoothedMouse[Index] != 0 ) { MouseSamples[Index] += SampleCount; if ( DeltaTime > MouseSamplingTime * (SampleCount + 1) ) SamplingTime[Index] += MouseSamplingTime * SampleCount; else { SamplingTime[Index] += DeltaTime; aMouse = aMouse * DeltaTime/(MouseSamplingTime * SampleCount); } } else SamplingTime[Index] = 0.5 * MouseSamplingTime; SmoothedMouse[Index] = aMouse/SampleCount; ZeroTime[Index] = 0; } SampleCount = 0; if ( MouseSmoothingMode > 1 ) { if ( aMouse == 0 ) { // stop in next tick for ( i=0; i<3; i++ ) { sum += (i+1) * 0.1; aMouse += sum * OldSamples[i]; OldSamples[i] = 0; } OldSamples[3] = 0; } else { aMouse = 0.4 * aMouse; OldSamples[3] = aMouse; for ( i=0; i<3; i++ ) { aMouse += (i+1) * 0.1 * OldSamples[i]; OldSamples[i] = OldSamples[i+1]; } } } return aMouse; } function UpdateSensitivity(float F) { MouseSensitivity = FMax(0,F); default.MouseSensitivity = MouseSensitivity; class'PlayerInput'.static.StaticSaveConfig(); } function UpdateAccel(float F) { MouseAccelThreshold = FMax(0,f); default.MouseAccelThreshold = MouseAccelThreshold; class'PlayerInput'.static.StaticSaveConfig(); } function UpdateSmoothing( int Mode ) { MouseSmoothingMode = Mode; default.MouseSmoothingMode = MouseSmoothingMode; class'PlayerInput'.static.StaticSaveConfig(); } function ChangeSnapView( bool B ) { bSnapToLevel = B; } // check for double click move function Actor.eDoubleClickDir CheckForDoubleClickMove(float DeltaTime) { local Actor.eDoubleClickDir DoubleClickMove, OldDoubleClick; if ( DoubleClickDir == DCLICK_Active ) DoubleClickMove = DCLICK_Active; else DoubleClickMove = DCLICK_None; if (DoubleClickTime > 0.0) { if ( DoubleClickDir == DCLICK_Active ) { if ( (Pawn != None) && (Pawn.Physics == PHYS_Walking) ) { DoubleClickTimer = 0; DoubleClickDir = DCLICK_Done; } } else if ( DoubleClickDir != DCLICK_Done ) { OldDoubleClick = DoubleClickDir; DoubleClickDir = DCLICK_None; if (bEdgeForward && bWasForward) DoubleClickDir = DCLICK_Forward; else if (bEdgeBack && bWasBack) DoubleClickDir = DCLICK_Back; else if (bEdgeLeft && bWasLeft) DoubleClickDir = DCLICK_Left; else if (bEdgeRight && bWasRight) DoubleClickDir = DCLICK_Right; if ( DoubleClickDir == DCLICK_None) DoubleClickDir = OldDoubleClick; else if ( DoubleClickDir != OldDoubleClick ) DoubleClickTimer = DoubleClickTime + 0.5 * DeltaTime; else DoubleClickMove = DoubleClickDir; } if (DoubleClickDir == DCLICK_Done) { DoubleClickTimer = FMin(DoubleClickTimer-DeltaTime,0); if (DoubleClickTimer < -0.35) { DoubleClickDir = DCLICK_None; DoubleClickTimer = DoubleClickTime; } } else if ((DoubleClickDir != DCLICK_None) && (DoubleClickDir != DCLICK_Active)) { DoubleClickTimer -= DeltaTime; if (DoubleClickTimer < 0) { DoubleClickDir = DCLICK_None; DoubleClickTimer = DoubleClickTime; } } } return DoubleClickMove; } VÚ //============================================================================= // PlayerController // // PlayerControllers are used by human players to control pawns. // // This is a built-in Unreal class and it shouldn't be modified. // for the change in Possess(). //============================================================================= class PlayerController extends Controller config(user) native nativereplication; // Player info. var const player Player; // player input control var globalconfig bool bLookUpStairs; // look up/down stairs (player) var globalconfig bool bSnapToLevel; // Snap to level eyeheight when not mouselooking var globalconfig bool bAlwaysMouseLook; var globalconfig bool bKeyboardLook; // no snapping when true var bool bCenterView; // Player control flags var bool bBehindView; // Outside-the-player view. var bool bFrozen; // set when game ends or player dies to temporarily prevent player from restarting (until cleared by timer) var bool bPressedJump; var bool bDoubleJump; var bool bUpdatePosition; var bool bIsTyping; var bool bFixedCamera; // used to fix camera in position (to view animations) var bool bJumpStatus; // used in net games var bool bUpdating; var globalconfig bool bNeverSwitchOnPickup; // if true, don't automatically switch to picked up weapon var bool bZooming; var globalconfig bool bAlwaysLevel; var bool bSetTurnRot; var bool bCheatFlying; // instantly stop in flying mode var bool bFreeCamera; // free camera when in behindview mode (for checking out player models and animations) var bool bZeroRoll; var bool bCameraPositionLocked; var bool bViewBot; var bool UseFixedVisibility; var bool bBlockCloseCamera; var bool bValidBehindCamera; var bool bForcePrecache; var globalconfig bool bNoVoiceMessages; var globalconfig bool bNoVoiceTaunts; var globalconfig bool bNoAutoTaunts; var globalconfig bool bAutoTaunt; var globalconfig bool bNoMatureLanguage; //#if __L2 var bool bRenderWide; var bool bUseHoldCamera; //#endif var globalconfig byte AnnouncerLevel; // 0=none, 1=no possession announcements, 2=all var globalconfig byte AnnouncerVolume; // 1 to 4 var globalconfig float AimingHelp; var globalconfig float MaxResponseTime; // how long server will wait for client move update before setting position var float WaitDelay; // Delay time until can restart var input float aBaseX, aBaseY, aBaseZ, aMouseX, aMouseY, aForward, aTurn, aStrafe, aUp, aLookUp; var input byte bStrafe, bSnapLevel, bLook, bFreeLook, bTurn180, bTurnToNearest, bXAxis, bYAxis; var EDoubleClickDir DoubleClickDir; // direction of movement key double click (for special moves) // Camera info. var int ShowFlags; var int Misc1,Misc2; var int RendMap; var float OrthoZoom; // Orthogonal/map view zoom factor. var const actor ViewTarget; var const Controller RealViewTarget; var float CameraDist; // multiplier for behindview camera dist var vector OldCameraLoc; // used in behindview calculations var rotator OldCameraRot; var transient array CameraEffects; // A stack of camera effects. var globalconfig float DesiredFOV; var globalconfig float DefaultFOV; var float ZoomLevel; // Fixed visibility. var vector FixedLocation; var rotator FixedRotation; var matrix RenderWorldToCamera; // Screen flashes var vector FlashScale, FlashFog; var float ConstantGlowScale; var vector ConstantGlowFog; // Distance fog fading. var color LastDistanceFogColor; var float LastDistanceFogStart; var float LastDistanceFogEnd; var float CurrentDistanceFogEnd; var float TimeSinceLastFogChange; var int LastZone; // Remote Pawn ViewTargets var rotator TargetViewRotation; var float TargetEyeHeight; var vector TargetWeaponViewOffset; var HUD myHUD; // heads up display info var float LastPlaySound; var float LastPlaySpeech; // Music info. var string Song; var EMusicTransition Transition; // Move buffering for network games. Clients save their un-acknowledged moves in order to replay them // when they get position updates from the server. var SavedMove SavedMoves; // buffered moves pending position updates var SavedMove FreeMoves; // freed moves, available for buffering var SavedMove PendingMove; var float CurrentTimeStamp,LastUpdateTime,ServerTimeStamp,TimeMargin, ClientUpdateTime; var globalconfig float MaxTimeMargin; var Weapon OldClientWeapon; var int WeaponUpdate; // Progess Indicator - used by the engine to provide status messages (HUD is responsible for displaying these). var string ProgressMessage[4]; var color ProgressColor[4]; var float ProgressTimeOut; // Localized strings var localized string QuickSaveString; var localized string NoPauseMessage; var localized string ViewingFrom; var localized string OwnCamera; // ReplicationInfo var GameReplicationInfo GameReplicationInfo; // Stats Logging var globalconfig string StatsUsername; var globalconfig string StatsPassword; var class LocalMessageClass; // view shaking (affects roll, and offsets camera position) var float MaxShakeRoll; // max magnitude to roll camera var vector MaxShakeOffset; // max magnitude to offset camera position var float ShakeRollRate; // rate to change roll var vector ShakeOffsetRate; var vector ShakeOffset; //current magnitude to offset camera from shake var float ShakeRollTime; // how long to roll. if value is < 1.0, then MaxShakeOffset gets damped by this, else if > 1 then its the number of times to repeat undamped var vector ShakeOffsetTime; var Pawn TurnTarget; var config int EnemyTurnSpeed; var int GroundPitch; var rotator TurnRot180; var vector OldFloor; // used by PlayerSpider mode - floor for which old rotation was based; // Components ( inner classes ) //#ifdef __L2 // zodiac var protected transient CheatManager CheatManager; // Object within playercontroller that manages "cheat" commands //#else //var private transient CheatManager CheatManager; // Object within playercontroller that manages "cheat" commands //#endif var class CheatClass; // class of my CheatManager var private transient PlayerInput PlayerInput; // Object within playercontroller that manages player input. var config class InputClass; // class of my PlayerInput var const vector FailedPathStart; // Demo recording view rotation var int DemoViewPitch; var int DemoViewYaw; var Security PlayerSecurity; // Used for Cheat Protection var float ForcePrecacheTime; var float LastPingUpdate; //#ifdef __L2 // zodiac var PhysicsVolume LastPhysicsVolume; var float CurrentDistanceFogStart; var color CurrentDistanceColor; var float VolumeFogBlendRatio; var sound UnderWaterLoopSound; var float CompensateYaw; var float CopmensatePitch; //#endif var emitter FloatingSolid; var emitter SunBeam; var vector LastSamplingLocation; replication { // Things the server should send to the client. reliable if( bNetDirty && bNetOwner && Role==ROLE_Authority ) GameReplicationInfo; unreliable if ( bNetOwner && Role==ROLE_Authority && (ViewTarget != Pawn) && (Pawn(ViewTarget) != None) ) TargetViewRotation, TargetEyeHeight, TargetWeaponViewOffset; reliable if( bDemoRecording && Role==ROLE_Authority ) DemoViewPitch, DemoViewYaw; // Functions server can call. reliable if( Role==ROLE_Authority ) ClientSetHUD,ClientReliablePlaySound, FOV, StartZoom, ToggleZoom, StopZoom, EndZoom, ClientSetMusic, ClientRestart, ClientAdjustGlow, ClientSetBehindView, ClientSetFixedCamera, ClearProgressMessages, SetProgressMessage, SetProgressTime, GivePawn, ClientGotoState, ClientChangeVoiceChatter, ClientLeaveVoiceChat, ClientValidate, ClientSetViewTarget, ClientOpenMenu, ClientCloseMenu; reliable if ( (Role == ROLE_Authority) && (!bDemoRecording || (bClientDemoRecording && bClientDemoNetFunc)) ) ClientMessage, TeamMessage, ReceiveLocalizedMessage; unreliable if( Role==ROLE_Authority && !bDemoRecording ) ClientPlaySound,PlayAnnouncement; reliable if( Role==ROLE_Authority && !bDemoRecording ) ClientTravel; unreliable if( Role==ROLE_Authority ) SetFOVAngle, ClientShake, ClientFlash, ClientAdjustPosition, ShortClientAdjustPosition, VeryShortClientAdjustPosition, LongClientAdjustPosition; unreliable if( (!bDemoRecording || bClientDemoRecording && bClientDemoNetFunc) && Role==ROLE_Authority ) ClientHearSound; // Functions client can call. unreliable if( Role 0 ) return ( 49152 + 16384 * (X Dot Dir) ); else return ( 16384 - 16384 * (X Dot Dir) ); } // Possess a pawn function Possess(Pawn aPawn) { if( None != PlayerReplicationInfo && PlayerReplicationInfo.bOnlySpectator ) return; SetRotation(aPawn.Rotation); aPawn.PossessedBy(self); Pawn = aPawn; Pawn.bStasis = false; CleanOutSavedMoves(); // don't replay moves previous to possession if( None != PlayerReplicationInfo ) PlayerReplicationInfo.bIsFemale = Pawn.bIsFemale; ServerSetHandedness(Handedness); Restart(); } // unpossessed a pawn (not because pawn was killed) function UnPossess() { if ( Pawn != None ) { SetLocation(Pawn.Location); Pawn.RemoteRole = ROLE_SimulatedProxy; Pawn.UnPossessed(); CleanOutSavedMoves(); // don't replay moves previous to unpossession if ( Viewtarget == Pawn ) SetViewTarget(self); } Pawn = None; GotoState('Spectating'); } function ViewNextBot() { if ( CheatManager != None ) CheatManager.ViewBot(); } // unpossessed a pawn (because pawn was killed) function PawnDied(Pawn P) { if ( P != Pawn ) return; EndZoom(); if ( Pawn != None ) Pawn.RemoteRole = ROLE_SimulatedProxy; if ( ViewTarget == Pawn ) bBehindView = true; Super.PawnDied(P); } function ClientSetHUD(class newHUDType, class newScoringType) { local HUD NewHUD; if ( (myHUD == None) || ((newHUDType != None) && (newHUDType != myHUD.Class)) ) { NewHUD = spawn(newHUDType, self); if ( NewHUD != None ) { if ( myHUD != None ) myHUD.Destroy(); myHUD = NewHUD; } } if ( (myHUD != None) && (newScoringType != None) ) MyHUD.SpawnScoreBoard(newScoringType); } function HandlePickup(Pickup pick) { ReceiveLocalizedMessage(pick.MessageClass,,,,pick.class); } final function float UpdateFlashComponent(float current, float Step, float goal) { if ( goal > current ) return FMin(current + Step, goal); else return FMax(current - Step, goal); } function ViewFlash(float DeltaTime) { local vector goalFog; local float goalscale, delta, Step; delta = FMin(0.1, DeltaTime); goalScale = 1; // + ConstantGlowScale; goalFog = vect(0,0,0); // ConstantGlowFog; if ( Pawn != None ) { goalScale += Pawn.HeadVolume.ViewFlash.X; goalFog += Pawn.HeadVolume.ViewFog; } Step = 0.6 * delta; FlashScale.X = UpdateFlashComponent(FlashScale.X,step,goalScale); FlashScale = FlashScale.X * vect(1,1,1); FlashFog.X = UpdateFlashComponent(FlashFog.X,step,goalFog.X); FlashFog.Y = UpdateFlashComponent(FlashFog.Y,step,goalFog.Y); FlashFog.Z = UpdateFlashComponent(FlashFog.Z,step,goalFog.Z); } event ReceiveLocalizedMessage( class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { Message.Static.ClientReceive( Self, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject ); if ( Message.default.bIsConsoleMessage && (Player != None) && (Player.Console != None) ) Player.Console.Message(Message.Static.GetString(Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject),0 ); } event ClientMessage( coerce string S, optional Name Type ) { if (Type == '') Type = 'Event'; TeamMessage(PlayerReplicationInfo, S, Type); } event TeamMessage( PlayerReplicationInfo PRI, coerce string S, name Type ) { if ( myHUD != None ) myHUD.Message( PRI, S, Type ); if ( ((Type == 'Say') || (Type == 'TeamSay')) && (PRI != None) ) S = PRI.PlayerName$": "$S; Player.Console.Message( S, 6.0 ); } simulated function PlayBeepSound(); simulated function PlayAnnouncement(sound ASound, byte AnnouncementLevel, optional bool bForce) { local float Atten; if ( AnnouncementLevel > AnnouncerLevel ) return; if ( !bForce && (Level.TimeSeconds - LastPlaySound < 1) ) return; LastPlaySound = Level.TimeSeconds; // so voice messages won't overlap LastPlaySpeech = Level.TimeSeconds; // don't want chatter to overlap announcements Atten = FClamp(0.1 + float(AnnouncerVolume)*0.225,0.2,1.0); ClientPlaySound(ASound,true,Atten,SLOT_Talk); } function bool AllowVoiceMessage(name MessageType) { if ( Level.NetMode == NM_Standalone ) return true; if ( Level.TimeSeconds - OldMessageTime < 3 ) { if ( MessageType != 'ORDER' ) return false; if ( Level.TimeSeconds - OldMessageTime < 1 ) return false; } if ( Level.TimeSeconds - OldMessageTime < 10 ) OldMessageTime = Level.TimeSeconds + 5; else OldMessageTime = Level.TimeSeconds; return true; } //Play a sound client side (so only client will hear it simulated function ClientPlaySound(sound ASound, optional bool bVolumeControl, optional float inAtten, optional ESoundSlot slot ) { local float atten; atten = 0.9; if( bVolumeControl ) atten = FClamp(inAtten,0,1); if ( ViewTarget != None ) ViewTarget.PlaySound(ASound, slot, atten,,,,false); } simulated function ClientReliablePlaySound(sound ASound, optional bool bVolumeControl ) { ClientPlaySound(ASound, bVolumeControl); } simulated event Destroyed() { local SavedMove Next; local KVehicle DrivenVehicle; local Pawn Driver; // cheatmanager, adminmanager, and playerinput cleaned up in C++ PostScriptDestroyed() if ( Pawn != None ) { // If its a vehicle, just destroy the driver, otherwise do the normal. DrivenVehicle = KVehicle(Pawn); if(DrivenVehicle != None) { Driver = DrivenVehicle.Driver; DrivenVehicle.KDriverLeave(true); // Force the driver out of the car Driver.Destroy(); } else { Pawn.Health = 0; Pawn.Unpossessed(); Pawn.Died( self, class'Suicided', Pawn.Location ); } } if( myHud != None ) myHud.Destroy(); while ( FreeMoves != None ) { Next = FreeMoves.NextMove; FreeMoves.Destroy(); FreeMoves = Next; } while ( SavedMoves != None ) { Next = SavedMoves.NextMove; SavedMoves.Destroy(); SavedMoves = Next; } if( PlayerSecurity != None ) { PlayerSecurity.Destroy(); PlayerSecurity = None; } Super.Destroyed(); } function ClientSetMusic( string NewSong, EMusicTransition NewTransition ) { StopAllMusic( 0.0 ); PlayMusic( NewSong, 3.0 ); Song = NewSong; Transition = NewTransition; } // ------------------------------------------------------------------------ // Zooming/FOV change functions function ToggleZoom() { if ( DefaultFOV != DesiredFOV ) EndZoom(); else StartZoom(); } function StartZoom() { ZoomLevel = 0.0; bZooming = true; } function StopZoom() { bZooming = false; } function EndZoom() { bZooming = false; DesiredFOV = DefaultFOV; } function FixFOV() { FOVAngle = Default.DefaultFOV; DesiredFOV = Default.DefaultFOV; DefaultFOV = Default.DefaultFOV; } function SetFOV(float NewFOV) { DesiredFOV = NewFOV; FOVAngle = NewFOV; } function ResetFOV() { DesiredFOV = DefaultFOV; FOVAngle = DefaultFOV; } exec function FOV(float F) { if( (F >= 80.0) || (Level.Netmode==NM_Standalone) ) { DefaultFOV = FClamp(F, 1, 170); DesiredFOV = DefaultFOV; SaveConfig(); } } exec function Mutate(string MutateString) { if( Level.NetMode == NM_Client ) return; Level.Game.BaseMutator.Mutate(MutateString, Self); } exec function SetSensitivity(float F) { PlayerInput.UpdateSensitivity(F); } exec function SetMouseSmoothing( int Mode ) { PlayerInput.UpdateSmoothing( Mode ); } exec function SetMouseAccel(float F) { PlayerInput.UpdateAccel(F); } exec function ForceReload() { if ( (Pawn != None) && (Pawn.Weapon != None) ) { Pawn.Weapon.ForceReload(); } } // ------------------------------------------------------------------------ // Messaging functions // Send a message to all players. exec function Say( string Msg ) { if (PlayerReplicationInfo.bAdmin && left(Msg,1) == "#" ) { Level.Game.AdminSay(right(Msg,len(Msg)-1)); return; } Level.Game.Broadcast(self, Msg, 'Say'); } exec function TeamSay( string Msg ) { if( !GameReplicationInfo.bTeamGame ) { Say( Msg ); return; } Level.Game.BroadcastTeam( self, Level.Game.ParseMessageString( Level.Game.BaseMutator , self, Msg ) , 'TeamSay'); } // ------------------------------------------------------------------------ function ServerSetHandedness( float hand) { Handedness = hand; if ( (Pawn != None) && (Pawn.Weapon != None) ) Pawn.Weapon.SetHand(Handedness); } function SetHand(int IntValue) { class'PlayerController'.default.Handedness = IntValue; class'PlayerController'.static.StaticSaveConfig(); Handedness = IntValue; if( (Pawn != None) && (Pawn.Weapon != None) ) Pawn.Weapon.SetHand(Handedness); ServerSetHandedness(Handedness); } exec function SetWeaponHand ( string S ) { if ( S ~= "Left" ) Handedness = -1; else if ( S~= "Right" ) Handedness = 1; else if ( S ~= "Center" ) Handedness = 0; else if ( S ~= "Hidden" ) Handedness = 2; SetHand(Handedness); } function bool IsDead() { return false; } exec function ShowGun () { if( Handedness == 2 ) Handedness = 1; else Handedness = 2; SetHand(Handedness); } event PreClientTravel(); function ClientSetFixedCamera(bool B) { bFixedCamera = B; } function ClientSetBehindView(bool B) { bBehindView = B; } function ClientVoiceMessage(PlayerReplicationInfo Sender, PlayerReplicationInfo Recipient, name messagetype, byte messageID) { local VoicePack V; if ( (Sender == None) || (Sender.voicetype == None) || (Player.Console == None) ) return; V = Spawn(Sender.voicetype, self); if ( V != None ) V.ClientInitialize(Sender, Recipient, messagetype, messageID); } /* ForceDeathUpdate() Make sure ClientAdjustPosition immediately informs client of pawn's death */ function ForceDeathUpdate() { LastUpdateTime = Level.TimeSeconds - 10; } /* RocketServerMove() compressed version of server move for PlayerRocketing state */ function RocketServerMove ( float TimeStamp, vector InAccel, vector ClientLoc, byte ClientRoll, int View ) { ServerMove(TimeStamp,InAccel,ClientLoc,false,false,false,false, DCLICK_NONE,ClientRoll,View); } /* ShortServerMove() compressed version of server move for bandwidth saving */ function ShortServerMove ( float TimeStamp, vector ClientLoc, bool NewbRun, bool NewbDuck, bool NewbJumpStatus, byte ClientRoll, int View ) { ServerMove(TimeStamp,vect(0,0,0),ClientLoc,NewbRun,NewbDuck,NewbJumpStatus,false,DCLICK_None,ClientRoll,View); } /* ServerMove() - replicated function sent by client to server - contains client movement and firing info Passes acceleration in components so it doesn't get rounded. */ function ServerMove ( float TimeStamp, vector InAccel, vector ClientLoc, bool NewbRun, bool NewbDuck, bool NewbJumpStatus, bool NewbDoubleJump, eDoubleClickDir DoubleClickMove, byte ClientRoll, int View, optional byte OldTimeDelta, optional int OldAccel ) { local float DeltaTime, clientErr, OldTimeStamp; local rotator DeltaRot, Rot, ViewRot; local vector Accel, LocDiff, ClientVel, ClientFloor; local int maxPitch, ViewPitch, ViewYaw; local bool NewbPressedJump, OldbRun, OldbDoubleJump; local eDoubleClickDir OldDoubleClickMove; local actor ClientBase; local ePhysics ClientPhysics; // If this move is outdated, discard it. if ( CurrentTimeStamp >= TimeStamp ) return; // if OldTimeDelta corresponds to a lost packet, process it first if ( OldTimeDelta != 0 ) { OldTimeStamp = TimeStamp - float(OldTimeDelta)/500 - 0.001; if ( CurrentTimeStamp < OldTimeStamp - 0.001 ) { // split out components of lost move (approx) Accel.X = OldAccel >>> 23; if ( Accel.X > 127 ) Accel.X = -1 * (Accel.X - 128); Accel.Y = (OldAccel >>> 15) & 255; if ( Accel.Y > 127 ) Accel.Y = -1 * (Accel.Y - 128); Accel.Z = (OldAccel >>> 7) & 255; if ( Accel.Z > 127 ) Accel.Z = -1 * (Accel.Z - 128); Accel *= 20; OldbRun = ( (OldAccel & 64) != 0 ); OldbDoubleJump = ( (OldAccel & 32) != 0 ); NewbPressedJump = ( (OldAccel & 16) != 0 ); if ( NewbPressedJump ) bJumpStatus = NewbJumpStatus; switch (OldAccel & 7) { case 0: OldDoubleClickMove = DCLICK_None; break; case 1: OldDoubleClickMove = DCLICK_Left; break; case 2: OldDoubleClickMove = DCLICK_Right; break; case 3: OldDoubleClickMove = DCLICK_Forward; break; case 4: OldDoubleClickMove = DCLICK_Back; break; } //log("Recovered move from "$OldTimeStamp$" acceleration "$Accel$" from "$OldAccel); OldTimeStamp = FMin(OldTimeStamp, CurrentTimeStamp + MaxResponseTime); MoveAutonomous(OldTimeStamp - CurrentTimeStamp, OldbRun, (bDuck == 1), NewbPressedJump, OldbDoubleJump, OldDoubleClickMove, Accel, rot(0,0,0)); CurrentTimeStamp = OldTimeStamp; } } // View components ViewPitch = View/32768; ViewYaw = 2 * (View - 32768 * ViewPitch); ViewPitch *= 2; // Make acceleration. Accel = InAccel/10; NewbPressedJump = (bJumpStatus != NewbJumpStatus); bJumpStatus = NewbJumpStatus; // Save move parameters. DeltaTime = FMin(MaxResponseTime,TimeStamp - CurrentTimeStamp); if ( ServerTimeStamp > 0 ) { // allow 1% error TimeMargin = FMax(0,TimeMargin + DeltaTime - 1.01 * (Level.TimeSeconds - ServerTimeStamp)); if ( TimeMargin > MaxTimeMargin ) { // player is too far ahead TimeMargin -= DeltaTime; if ( TimeMargin < 0.5 ) MaxTimeMargin = Default.MaxTimeMargin; else MaxTimeMargin = 0.5; DeltaTime = 0; } } CurrentTimeStamp = TimeStamp; ServerTimeStamp = Level.TimeSeconds; ViewRot.Pitch = ViewPitch; ViewRot.Yaw = ViewYaw; ViewRot.Roll = 0; SetRotation(ViewRot); if ( Pawn != None ) { Rot.Roll = 256 * ClientRoll; Rot.Yaw = ViewYaw; if ( (Pawn.Physics == PHYS_Swimming) || (Pawn.Physics == PHYS_Flying) ) maxPitch = 2; else maxPitch = 0; If ( (ViewPitch > maxPitch * RotationRate.Pitch) && (ViewPitch < 65536 - maxPitch * RotationRate.Pitch) ) { If (ViewPitch < 32768) Rot.Pitch = maxPitch * RotationRate.Pitch; else Rot.Pitch = 65536 - maxPitch * RotationRate.Pitch; } else Rot.Pitch = ViewPitch; DeltaRot = (Rotation - Rot); Pawn.SetRotation(Rot); } // Perform actual movement if ( (Level.Pauser == None) && (DeltaTime > 0) ) MoveAutonomous(DeltaTime, NewbRun, NewbDuck, NewbPressedJump, NewbDoubleJump, DoubleClickMove, Accel, DeltaRot); // Accumulate movement error. if ( Level.TimeSeconds - LastUpdateTime > 0.3 ) ClientErr = 10000; else if ( Level.TimeSeconds - LastUpdateTime > 180.0/Player.CurrentNetSpeed ) { if ( Pawn == None ) LocDiff = Location - ClientLoc; else LocDiff = Pawn.Location - ClientLoc; ClientErr = LocDiff Dot LocDiff; } // If client has accumulated a noticeable positional error, correct him. if ( ClientErr > 3 ) { if ( Pawn == None ) { ClientPhysics = Physics; ClientLoc = Location; ClientVel = Velocity; } else { ClientPhysics = Pawn.Physics; ClientVel = Pawn.Velocity; ClientBase = Pawn.Base; if ( Mover(Pawn.Base) != None ) ClientLoc = Pawn.Location - Pawn.Base.Location; else ClientLoc = Pawn.Location; ClientFloor = Pawn.Floor; } //log("Client Error at "$TimeStamp$" is "$ClientErr$" with acceleration "$Accel$" LocDiff "$LocDiff$" Physics "$Pawn.Physics); LastUpdateTime = Level.TimeSeconds; if ( (Pawn == None) || (Pawn.Physics != PHYS_Spider) ) { if ( ClientVel == vect(0,0,0) ) { ShortClientAdjustPosition ( TimeStamp, GetStateName(), ClientPhysics, ClientLoc.X, ClientLoc.Y, ClientLoc.Z, ClientBase ); } else ClientAdjustPosition ( TimeStamp, GetStateName(), ClientPhysics, ClientLoc.X, ClientLoc.Y, ClientLoc.Z, ClientVel.X, ClientVel.Y, ClientVel.Z, ClientBase ); } else LongClientAdjustPosition ( TimeStamp, GetStateName(), ClientPhysics, ClientLoc.X, ClientLoc.Y, ClientLoc.Z, ClientVel.X, ClientVel.Y, ClientVel.Z, ClientBase, ClientFloor.X, ClientFloor.Y, ClientFloor.Z ); } //log("Server moved stamp "$TimeStamp$" location "$Pawn.Location$" Acceleration "$Pawn.Acceleration$" Velocity "$Pawn.Velocity); } // Only executed on server function ServerDrive(float InForward, float InStrafe, bool InJump) { ProcessDrive(InForward, InStrafe, InJump); } function ProcessDrive(float InForward, float InStrafe, bool InJump) { Log("ProcessDrive Not Valid Outside State PlayerDriving"); } function ProcessMove ( float DeltaTime, vector newAccel, eDoubleClickDir DoubleClickMove, rotator DeltaRot) { if ( Pawn != None ) Pawn.Acceleration = newAccel; } final function MoveAutonomous ( float DeltaTime, bool NewbRun, bool NewbDuck, bool NewbPressedJump, bool NewbDoubleJump, eDoubleClickDir DoubleClickMove, vector newAccel, rotator DeltaRot ) { if ( NewbRun ) bRun = 1; else bRun = 0; if ( NewbDuck ) bDuck = 1; else bDuck = 0; bPressedJump = NewbPressedJump; bDoubleJump = NewbDoubleJump; HandleWalking(); ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); if ( Pawn != None ) Pawn.AutonomousPhysics(DeltaTime); else AutonomousPhysics(DeltaTime); bDoubleJump = false; //log("Role "$Role$" moveauto time "$100 * DeltaTime$" ("$Level.TimeDilation$")"); } /* VeryShortClientAdjustPosition bandwidth saving version, when velocity is zeroed, and pawn is walking */ function VeryShortClientAdjustPosition ( float TimeStamp, float NewLocX, float NewLocY, float NewLocZ, Actor NewBase ) { local vector Floor; if ( Pawn != None ) Floor = Pawn.Floor; LongClientAdjustPosition(TimeStamp,'PlayerWalking',PHYS_Walking,NewLocX,NewLocY,NewLocZ,0,0,0,NewBase,Floor.X,Floor.Y,Floor.Z); } /* ShortClientAdjustPosition bandwidth saving version, when velocity is zeroed */ function ShortClientAdjustPosition ( float TimeStamp, name newState, EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, Actor NewBase ) { local vector Floor; if ( Pawn != None ) Floor = Pawn.Floor; LongClientAdjustPosition(TimeStamp,newState,newPhysics,NewLocX,NewLocY,NewLocZ,0,0,0,NewBase,Floor.X,Floor.Y,Floor.Z); } /* ClientAdjustPosition - pass newloc and newvel in components so they don't get rounded */ function ClientAdjustPosition ( float TimeStamp, name newState, EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, float NewVelX, float NewVelY, float NewVelZ, Actor NewBase ) { local vector Floor; if ( Pawn != None ) Floor = Pawn.Floor; LongClientAdjustPosition(TimeStamp,newState,newPhysics,NewLocX,NewLocY,NewLocZ,NewVelX,NewVelY,NewVelZ,NewBase,Floor.X,Floor.Y,Floor.Z); } /* LongClientAdjustPosition long version, when care about pawn's floor normal */ function LongClientAdjustPosition ( float TimeStamp, name newState, EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, float NewVelX, float NewVelY, float NewVelZ, Actor NewBase, float NewFloorX, float NewFloorY, float NewFloorZ ) { local vector NewLocation, NewVelocity, NewFloor; local Actor MoveActor; local SavedMove CurrentMove; local float NewPing; // update ping if ( PlayerReplicationInfo != None ) { if ( PlayerReplicationInfo.Ping < 6 ) NewPing = 1000 * (Level.TimeSeconds - TimeStamp); else { NewPing = PlayerReplicationInfo.Ping; NewPing = 0.99 * NewPing + 10 * (Level.TimeSeconds - TimeStamp); } PlayerReplicationInfo.Ping = NewPing; if ( Level.TimeSeconds - LastPingUpdate > 4 ) { LastPingUpdate = Level.TimeSeconds; ServerUpdatePing(NewPing); } } if ( Pawn != None ) { if ( Pawn.bTearOff ) { Pawn = None; if ( !IsInState('GameEnded') && !IsInState('Dead') ) { GotoState('Dead'); } return; } MoveActor = Pawn; if ( (ViewTarget != Pawn) && ((ViewTarget == self) || ((Pawn(ViewTarget) != None) && (Pawn(ViewTarget).Health <= 0))) ) { bBehindView = false; SetViewTarget(Pawn); } } else { MoveActor = self; if( GetStateName() != newstate ) { if ( NewState == 'GameEnded' ) GotoState(NewState); else if ( IsInState('Dead') ) { if ( (NewState != 'PlayerWalking') && (NewState != 'PlayerSwimming') ) { GotoState(NewState); } return; } else if ( NewState == 'Dead' ) GotoState(NewState); } } if ( CurrentTimeStamp > TimeStamp ) return; CurrentTimeStamp = TimeStamp; NewLocation.X = NewLocX; NewLocation.Y = NewLocY; NewLocation.Z = NewLocZ; NewVelocity.X = NewVelX; NewVelocity.Y = NewVelY; NewVelocity.Z = NewVelZ; // skip update if no error CurrentMove = SavedMoves; while ( CurrentMove != None ) { if ( CurrentMove.TimeStamp <= CurrentTimeStamp ) { SavedMoves = CurrentMove.NextMove; CurrentMove.NextMove = FreeMoves; FreeMoves = CurrentMove; if ( CurrentMove.TimeStamp == CurrentTimeStamp ) { FreeMoves.Clear(); if ( (VSize(CurrentMove.SavedLocation - NewLocation) < 3) && (VSize(CurrentMove.SavedVelocity - NewVelocity) < 3) && (GetStateName() == NewState) && ((MoveActor.Physics != PHYS_Flying) || !IsInState('PlayerWalking')) ) { return; } CurrentMove = None; } else { FreeMoves.Clear(); CurrentMove = SavedMoves; } } else CurrentMove = None; } NewFloor.X = NewFloorX; NewFloor.Y = NewFloorY; NewFloor.Z = NewFloorZ; MoveActor.SetBase(NewBase, NewFloor); if ( Mover(NewBase) != None ) NewLocation += NewBase.Location; //log("Client "$Role$" adjust "$self$" stamp "$TimeStamp$" location "$MoveActor.Location); MoveActor.bCanTeleport = false; if ( !MoveActor.SetLocation(NewLocation) && (Pawn(MoveActor) != None) && (MoveActor.CollisionHeight > Pawn(MoveActor).CrouchHeight) && !Pawn(MoveActor).bIsCrouched && (newPhysics == PHYS_Walking) && (MoveActor.Physics != PHYS_Karma) && (MoveActor.Physics != PHYS_KarmaRagDoll) ) { MoveActor.SetPhysics(newPhysics); Pawn(MoveActor).ForceCrouch(); MoveActor.SetLocation(NewLocation); } MoveActor.bCanTeleport = true; // Hack. Don't let network change physics mode of karma stuff on the client. if( MoveActor.Physics != PHYS_Karma && MoveActor.Physics != PHYS_KarmaRagDoll && newPhysics != PHYS_Karma && newPhysics != PHYS_KarmaRagDoll ) { MoveActor.SetPhysics(newPhysics); } MoveActor.Velocity = NewVelocity; if( GetStateName() != newstate ) GotoState(newstate); bUpdatePosition = true; } function ServerUpdatePing(int NewPing) { PlayerReplicationInfo.Ping = NewPing; PlayerReplicationInfo.bReceivedPing = true; } function ClientUpdatePosition() { local SavedMove CurrentMove; local int realbRun, realbDuck; local bool bRealJump; // Dont do any network position updates on things running PHYS_Karma if( Pawn != None && (Pawn.Physics == PHYS_Karma || Pawn.Physics == PHYS_KarmaRagDoll) ) return; bUpdatePosition = false; realbRun= bRun; realbDuck = bDuck; bRealJump = bPressedJump; CurrentMove = SavedMoves; bUpdating = true; while ( CurrentMove != None ) { if ( CurrentMove.TimeStamp <= CurrentTimeStamp ) { SavedMoves = CurrentMove.NextMove; CurrentMove.NextMove = FreeMoves; FreeMoves = CurrentMove; FreeMoves.Clear(); CurrentMove = SavedMoves; } else { if ( (Pawn != None) && (Pawn.Physics != CurrentMove.SavedPhysics) && (CurrentMove.SavedPhysics != PHYS_None) && (CurrentMove.SavedPhysics != PHYS_Karma) && Pawn.Physics != PHYS_Karma && Pawn.Physics != PHYS_KarmaRagDoll ) { Pawn.SetPhysics(CurrentMove.SavedPhysics); } MoveAutonomous(CurrentMove.Delta, CurrentMove.bRun, CurrentMove.bDuck, CurrentMove.bPressedJump, CurrentMove.bDoubleJump, CurrentMove.DoubleClickMove, CurrentMove.Acceleration, rot(0,0,0)); CurrentMove = CurrentMove.NextMove; } } if ( PendingMove != None ) { if ( (Pawn != None) && (Pawn.Physics != PendingMove.SavedPhysics) && (PendingMove.SavedPhysics != PHYS_None) && (PendingMove.SavedPhysics != PHYS_Karma) && Pawn.Physics != PHYS_Karma && Pawn.Physics != PHYS_KarmaRagDoll ) { Pawn.SetPhysics(PendingMove.SavedPhysics); } MoveAutonomous(PendingMove.Delta, PendingMove.bRun, PendingMove.bDuck, PendingMove.bPressedJump, PendingMove.bDoubleJump, PendingMove.DoubleClickMove, PendingMove.Acceleration, rot(0,0,0)); } //log("Client updated position to "$Pawn.Location); bUpdating = false; bDuck = realbDuck; bRun = realbRun; bPressedJump = bRealJump; } final function SavedMove GetFreeMove() { local SavedMove s, first; local int i; if ( FreeMoves == None ) { // don't allow more than 100 saved moves For ( s=SavedMoves; s!=None; s=s.NextMove ) { i++; if ( i > 100 ) { first = SavedMoves; SavedMoves = SavedMoves.NextMove; first.Clear(); first.NextMove = None; // clear out all the moves While ( SavedMoves != None ) { s = SavedMoves; SavedMoves = SavedMoves.NextMove; s.Clear(); s.NextMove = FreeMoves; FreeMoves = s; } return first; } } return Spawn(class'SavedMove'); } else { s = FreeMoves; FreeMoves = FreeMoves.NextMove; s.NextMove = None; return s; } } function int CompressAccel(int C) { if ( C >= 0 ) C = Min(C, 127); else C = Min(abs(C), 127) + 128; return C; } /* ======================================================================== Here's how player movement prediction, replication and correction works in network games: Every tick, the PlayerTick() function is called. It calls the PlayerMove() function (which is implemented in various states). PlayerMove() figures out the acceleration and rotation, and then calls ProcessMove() (for single player or listen servers), or ReplicateMove() (if its a network client). ReplicateMove() saves the move (in the PendingMove list), calls ProcessMove(), and then replicates the move to the server by calling the replicated function ServerMove() - passing the movement parameters, the client's resultant position, and a timestamp. ServerMove() is executed on the server. It decodes the movement parameters and causes the appropriate movement to occur. It then looks at the resulting position and if enough time has passed since the last response, or the position error is significant enough, the server calls ClientAdjustPosition(), a replicated function. ClientAdjustPosition() is executed on the client. The client sets its position to the servers version of position, and sets the bUpdatePosition flag to true. When PlayerTick() is called on the client again, if bUpdatePosition is true, the client will call ClientUpdatePosition() before calling PlayerMove(). ClientUpdatePosition() replays all the moves in the pending move list which occured after the timestamp of the move the server was adjusting. */ // // Replicate this client's desired movement to the server. // function ReplicateMove ( float DeltaTime, vector NewAccel, eDoubleClickDir DoubleClickMove, rotator DeltaRot ) { local SavedMove NewMove, OldMove, LastMove; local byte ClientRoll; local float OldTimeDelta, NetMoveDelta; local int OldAccel; local vector BuildAccel, AccelNorm, MoveLoc; // find the most recent move, and the most recent interesting move if ( SavedMoves != None ) { LastMove = SavedMoves; AccelNorm = Normal(NewAccel); while ( LastMove.NextMove != None ) { // find most recent interesting move to send redundantly if ( LastMove.bPressedJump || LastMove.bDoubleJump || ((LastMove.DoubleClickMove != DCLICK_NONE) && (LastMove.DoubleClickMove < 5)) || ((LastMove.Acceleration != NewAccel) && ((normal(LastMove.Acceleration) Dot AccelNorm) < 0.95)) ) OldMove = LastMove; LastMove = LastMove.NextMove; } if ( LastMove.bPressedJump || LastMove.bDoubleJump || ((LastMove.DoubleClickMove != DCLICK_NONE) && (LastMove.DoubleClickMove < 5)) || ((LastMove.Acceleration != NewAccel) && ((normal(LastMove.Acceleration) Dot AccelNorm) < 0.95)) ) OldMove = LastMove; } // Get a SavedMove actor to store the movement in. if ( PendingMove != None ) PendingMove.SetMoveFor(self, DeltaTime, NewAccel, DoubleClickMove); NewMove = GetFreeMove(); if ( NewMove == None ) return; NewMove.SetMoveFor(self, DeltaTime, NewAccel, DoubleClickMove); // Simulate the movement locally. bDoubleJump = false; ProcessMove(NewMove.Delta, NewMove.Acceleration, NewMove.DoubleClickMove, DeltaRot); if ( Pawn != None ) Pawn.AutonomousPhysics(NewMove.Delta); else AutonomousPhysics(DeltaTime); if ( PendingMove == None ) PendingMove = NewMove; else { NewMove.NextMove = FreeMoves; FreeMoves = NewMove; FreeMoves.Clear(); NewMove = PendingMove; } NewMove.PostUpdate(self); NetMoveDelta = FMax(80.0/Player.CurrentNetSpeed, 0.015); // Decide whether to hold off on move // send if double click move, jump, or fire unless really too soon, or if newmove.delta big enough if ( !Level.bCapFramerate && !PendingMove.bPressedJump && !PendingMove.bDoubleJump && ((PendingMove.DoubleClickMove == DCLICK_None) || (PendingMove.DoubleClickMove == DCLICK_Active)) && ((PendingMove.Acceleration == NewAccel) || ((Normal(NewAccel) Dot Normal(PendingMove.Acceleration)) > 0.95)) && (PendingMove.Delta < NetMoveDelta - ClientUpdateTime) ) { return; } else { ClientUpdateTime = PendingMove.Delta - NetMoveDelta; if ( SavedMoves == None ) SavedMoves = PendingMove; else LastMove.NextMove = PendingMove; PendingMove = None; } // check if need to redundantly send previous move if ( OldMove != None ) { // old move important to replicate redundantly OldTimeDelta = FMin(255, (Level.TimeSeconds - OldMove.TimeStamp) * 500); BuildAccel = 0.05 * OldMove.Acceleration + vect(0.5, 0.5, 0.5); OldAccel = (CompressAccel(BuildAccel.X) << 23) + (CompressAccel(BuildAccel.Y) << 15) + (CompressAccel(BuildAccel.Z) << 7); if ( OldMove.bRun ) OldAccel += 64; if ( OldMove.bDoubleJump ) OldAccel += 32; if ( OldMove.bPressedJump ) OldAccel += 16; OldAccel += OldMove.DoubleClickMove; } // Send to the server ClientRoll = (Rotation.Roll >> 8) & 255; if ( NewMove.bPressedJump ) bJumpStatus = !bJumpStatus; if ( Pawn == None ) MoveLoc = Location; else MoveLoc = Pawn.Location; if ( IsInState('PlayerRocketing') ) RocketServerMove ( NewMove.TimeStamp, NewMove.Acceleration * 10, MoveLoc, ClientRoll, (32767 & (Rotation.Pitch/2)) * 32768 + (32767 & (Rotation.Yaw/2)) ); else if ( (NewMove.Acceleration == vect(0,0,0)) && (NewMove.DoubleClickMove == DCLICK_None) && !NewMove.bDoubleJump ) ShortServerMove ( NewMove.TimeStamp, MoveLoc, NewMove.bRun, NewMove.bDuck, bJumpStatus, ClientRoll, (32767 & (Rotation.Pitch/2)) * 32768 + (32767 & (Rotation.Yaw/2)) ); else ServerMove ( NewMove.TimeStamp, NewMove.Acceleration * 10, MoveLoc, NewMove.bRun, NewMove.bDuck, bJumpStatus, NewMove.bDoubleJump, NewMove.DoubleClickMove, ClientRoll, (32767 & (Rotation.Pitch/2)) * 32768 + (32767 & (Rotation.Yaw/2)), OldTimeDelta, OldAccel ); } function HandleWalking() { if ( Pawn != None ) Pawn.SetWalking( (bRun != 0) && !Region.Zone.IsA('WarpZoneInfo') ); } function ServerRestartGame() { } function SetFOVAngle(float newFOV) { FOVAngle = newFOV; } function ClientFlash( float scale, vector fog ) { FlashScale = scale * vect(1,1,1); flashfog = 0.001 * fog; } function ClientAdjustGlow( float scale, vector fog ) { ConstantGlowScale += scale; ConstantGlowFog += 0.001 * fog; } /* ClientShake() Function called on client to shake view. Only ShakeView() should call ClientShake() */ private function ClientShake(vector ShakeRoll, vector OffsetMag, vector ShakeRate, float OffsetTime) { if ( (MaxShakeRoll < ShakeRoll.X) || (ShakeRollTime < 0.01 * ShakeRoll.Y) ) { MaxShakeRoll = ShakeRoll.X; ShakeRollTime = 0.01 * ShakeRoll.Y; ShakeRollRate = 0.01 * ShakeRoll.Z; } if ( VSize(OffsetMag) > VSize(MaxShakeOffset) ) { ShakeOffsetTime = OffsetTime * vect(1,1,1); MaxShakeOffset = OffsetMag; ShakeOffsetRate = ShakeRate; } } /* ShakeView() Call this function to shake the player's view shaketime = how long to roll view RollMag = how far to roll view as it shakes OffsetMag = max view offset RollRate = how fast to roll view OffsetRate = how fast to offset view OffsetTime = how long to offset view (number of shakes) */ function ShakeView( float shaketime, float RollMag, vector OffsetMag, float RollRate, vector OffsetRate, float OffsetTime) { local vector ShakeRoll; ShakeRoll.X = RollMag; ShakeRoll.Y = 100 * shaketime; ShakeRoll.Z = 100 * rollrate; ClientShake(ShakeRoll, OffsetMag, OffsetRate, OffsetTime); } function damageAttitudeTo(pawn Other, float Damage) { if ( (Other != None) && (Other != Pawn) && (Damage > 0) ) Enemy = Other; } function Typing( bool bTyping ) { bIsTyping = bTyping; Pawn.bIsTyping = bIsTyping; if ( bTyping && (Pawn != None) && !Pawn.bTearOff ) Pawn.ChangeAnimation(); } //************************************************************************************* // Normal gameplay execs // Type the name of the exec function at the console to execute it exec function Jump( optional float F ) { if ( Level.Pauser == PlayerReplicationInfo ) SetPause(False); else bPressedJump = true; } // Send a voice message of a certain type to a certain player. exec function Speech( name Type, int Index, string Callsign ) { if(PlayerReplicationInfo.VoiceType != None) PlayerReplicationInfo.VoiceType.static.PlayerSpeech( Type, Index, Callsign, Self ); } exec function RestartLevel() { if( Level.Netmode==NM_Standalone ) ClientTravel( "?restart", TRAVEL_Relative, false ); } exec function LocalTravel( string URL ) { if( Level.Netmode==NM_Standalone ) ClientTravel( URL, TRAVEL_Relative, true ); } // ------------------------------------------------------------------------ // Loading and saving /* QuickSave() Save game to slot 9 */ exec function QuickSave() { if ( (Pawn.Health > 0) && (Level.NetMode == NM_Standalone) ) { ClientMessage(QuickSaveString); ConsoleCommand("SaveGame 9"); } } /* QuickLoad() Load game from slot 9 */ exec function QuickLoad() { if ( Level.NetMode == NM_Standalone ) ClientTravel( "?load=9", TRAVEL_Absolute, false); } /* SetPause() Try to pause game; returns success indicator. Replicated to server in network games. */ function bool SetPause( BOOL bPause ) { bFire = 0; bAltFire = 0; return Level.Game.SetPause(bPause, self); } /* Pause() Command to try to pause the game. */ exec function Pause() { // Pause if not already if(Level.Pauser == None) SetPause(true); else SetPause(false); } exec function ShowMenu() { // Pause if not already if(Level.Pauser == None) SetPause(true); // Open menu //ClientOpenMenu("Xinterface.UT2MidGameMenu"); } // Activate specific inventory item exec function ActivateInventoryItem( class InvItem ) { local Powerups Inv; Inv = Powerups(Pawn.FindInventoryType(InvItem)); if ( Inv != None ) Inv.Activate(); } // ------------------------------------------------------------------------ // Weapon changing functions /* ThrowWeapon() Throw out current weapon, and switch to a new weapon */ exec function ThrowWeapon() { if ( (Pawn == None) || (Pawn.Weapon == None) ) return; ServerThrowWeapon(); } function ServerThrowWeapon() { local Vector TossVel; if (Pawn.CanThrowWeapon()) { TossVel = Vector(GetViewRotation()); TossVel = TossVel * ((Pawn.Velocity Dot TossVel) + 500) + Vect(0,0,200); Pawn.TossWeapon(TossVel); ClientSwitchToBestWeapon(); } } /* PrevWeapon() - switch to previous inventory group weapon */ exec function PrevWeapon() { if( Level.Pauser!=None ) return; if ( Pawn.Weapon == None ) { SwitchToBestWeapon(); return; } if ( Pawn.PendingWeapon != None ) Pawn.PendingWeapon = Pawn.Inventory.PrevWeapon(None, Pawn.PendingWeapon); else Pawn.PendingWeapon = Pawn.Inventory.PrevWeapon(None, Pawn.Weapon); if ( Pawn.PendingWeapon != None ) Pawn.Weapon.PutDown(); } /* NextWeapon() - switch to next inventory group weapon */ exec function NextWeapon() { if( Level.Pauser!=None ) return; if ( Pawn.Weapon == None ) { SwitchToBestWeapon(); return; } if ( Pawn.PendingWeapon != None ) Pawn.PendingWeapon = Pawn.Inventory.NextWeapon(None, Pawn.PendingWeapon); else Pawn.PendingWeapon = Pawn.Inventory.NextWeapon(None, Pawn.Weapon); if ( Pawn.PendingWeapon != None ) Pawn.Weapon.PutDown(); } // The player wants to switch to weapon group number F. exec function SwitchWeapon (byte F ) { local weapon newWeapon; if ( (Level.Pauser!=None) || (Pawn == None) || (Pawn.Inventory == None) ) return; if ( (Pawn.Weapon != None) && (Pawn.Weapon.Inventory != None) ) newWeapon = Pawn.Weapon.Inventory.WeaponChange(F); else newWeapon = None; if ( newWeapon == None ) newWeapon = Pawn.Inventory.WeaponChange(F); if ( newWeapon == None ) return; if ( Pawn.Weapon == None ) { Pawn.PendingWeapon = newWeapon; Pawn.ChangedWeapon(); } else if ( Pawn.Weapon != newWeapon ) { Pawn.PendingWeapon = newWeapon; if ( !Pawn.Weapon.PutDown() ) Pawn.PendingWeapon = None; } } exec function GetWeapon(class NewWeaponClass ) { local Inventory Inv; local int Count; if ( (Pawn.Inventory == None) || (NewWeaponClass == None) || ((Pawn.Weapon != None) && (Pawn.Weapon.Class == NewWeaponClass)) ) return; for ( Inv=Pawn.Inventory; Inv!=None; Inv=Inv.Inventory ) { if ( Inv.Class == NewWeaponClass ) { Pawn.PendingWeapon = Weapon(Inv); if ( !Pawn.PendingWeapon.HasAmmo() ) { ClientMessage( Pawn.PendingWeapon.ItemName$Pawn.PendingWeapon.MessageNoAmmo ); Pawn.PendingWeapon = None; return; } Pawn.Weapon.PutDown(); return; } Count++; if ( Count > 1000 ) return; } } // The player wants to select previous item exec function PrevItem() { local Inventory Inv; local Powerups LastItem; if ( (Level.Pauser!=None) || (Pawn == None) ) return; if (Pawn.SelectedItem==None) { Pawn.SelectedItem = Pawn.Inventory.SelectNext(); Return; } if (Pawn.SelectedItem.Inventory!=None) for( Inv=Pawn.SelectedItem.Inventory; Inv!=None; Inv=Inv.Inventory ) { if (Inv==None) Break; if ( Inv.IsA('Powerups') && Powerups(Inv).bActivatable) LastItem=Powerups(Inv); } for( Inv=Pawn.Inventory; Inv!=Pawn.SelectedItem; Inv=Inv.Inventory ) { if (Inv==None) Break; if ( Inv.IsA('Powerups') && Powerups(Inv).bActivatable) LastItem=Powerups(Inv); } if (LastItem!=None) Pawn.SelectedItem = LastItem; } // The player wants to active selected item exec function ActivateItem() { if( Level.Pauser!=None ) return; if ( (Pawn != None) && (Pawn.SelectedItem!=None) ) Pawn.SelectedItem.Activate(); } // The player wants to fire. exec function Fire( optional float F ) { if ( Level.Pauser == PlayerReplicationInfo ) { SetPause(false); return; } Pawn.Fire(F); } // The player wants to alternate-fire. exec function AltFire( optional float F ) { if ( Level.Pauser == PlayerReplicationInfo ) { SetPause(false); return; } if( Pawn.Weapon!=None ) Pawn.Weapon.AltFire(F); } // The player wants to use something in the level. exec function Use() { ServerUse(); } function ServerUse() { local Actor A; if ( Level.Pauser == PlayerReplicationInfo ) { SetPause(false); return; } if (Pawn==None) return; // Send the 'DoUse' event to each actor player is touching. ForEach Pawn.TouchingActors(class'Actor', A) { A.UsedBy(Pawn); } } exec function Suicide() { if ( (Pawn != None) && (Level.TimeSeconds - Pawn.LastStartTime > 1) ) Pawn.KilledBy( Pawn ); } exec function Name( coerce string S ) { SetName(S); } exec function SetName( coerce string S) { ChangeName(S); UpdateURL("Name", S, true); SaveConfig(); } function ChangeName( coerce string S ) { if ( Len(S) > 20 ) S = left(S,20); ReplaceText(S, " ", "_"); Level.Game.ChangeName( self, S, true ); } exec function SwitchTeam() { if ( (PlayerReplicationInfo.Team == None) || (PlayerReplicationInfo.Team.TeamIndex == 1) ) ChangeTeam(0); else ChangeTeam(1); } exec function ChangeTeam( int N ) { local TeamInfo OldTeam; OldTeam = PlayerReplicationInfo.Team; Level.Game.ChangeTeam(self, N, true); if ( Level.Game.bTeamGame && (PlayerReplicationInfo.Team != OldTeam) ) { if ( Pawn != None ) Pawn.Died( None, class'DamageType', Pawn.Location ); } } exec function SwitchLevel( string URL ) { if( Level.NetMode==NM_Standalone || Level.netMode==NM_ListenServer ) Level.ServerTravel( URL, false ); } exec function ClearProgressMessages() { local int i; for (i=0; i ForcePrecacheTime) ) { bForcePrecache = false; Level.FillPrecacheMaterialsArray(); Level.FillPrecacheStaticMeshesArray(); } PlayerInput.PlayerInput(DeltaTime); if ( bUpdatePosition ) ClientUpdatePosition(); //PlayerMove(DeltaTime); } function PlayerMove(float DeltaTime); // /* AdjustAim() Calls this version for player aiming help. Aimerror not used in this version. Only adjusts aiming at pawns */ function rotator AdjustAim(Ammunition FiredAmmunition, vector projStart, int aimerror) { local vector FireDir, AimSpot, HitNormal, HitLocation, OldAim, AimOffset; local actor BestTarget; local float bestAim, bestDist, projspeed; local actor HitActor; local bool bNoZAdjust, bLeading; local rotator AimRot; FireDir = vector(Rotation); if ( FiredAmmunition.bInstantHit ) HitActor = Trace(HitLocation, HitNormal, projStart + 10000 * FireDir, projStart, true); else HitActor = Trace(HitLocation, HitNormal, projStart + 4000 * FireDir, projStart, true); if ( (HitActor != None) && HitActor.bProjTarget ) { FiredAmmunition.WarnTarget(Target,Pawn,FireDir); BestTarget = HitActor; bNoZAdjust = true; OldAim = HitLocation; BestDist = VSize(BestTarget.Location - Pawn.Location); } else { // adjust aim based on FOV bestAim = 0.95; if ( AimingHelp == 1 ) { bestAim = 0.93; if ( FiredAmmunition.bInstantHit ) bestAim = 0.97; if ( FOVAngle < DefaultFOV - 8 ) bestAim = 0.99; } else { if ( FiredAmmunition.bInstantHit ) bestAim = 0.98; if ( FOVAngle != DefaultFOV ) bestAim = 0.995; } BestTarget = PickTarget(bestAim, bestDist, FireDir, projStart,FiredAmmunition.MaxAutoAimRange); if ( BestTarget == None ) { if (bBehindView) return Pawn.Rotation; else return Rotation; } FiredAmmunition.WarnTarget(Target,Pawn,FireDir); OldAim = projStart + FireDir * bestDist; } if ( (AimingHelp == 0) || (Level.NetMode != NM_Standalone) ) { if (bBehindView) return Pawn.Rotation; else return Rotation; } // aim at target - help with leading also if ( !FiredAmmunition.bInstantHit ) { projspeed = FiredAmmunition.ProjectileClass.default.speed; BestDist = vsize(BestTarget.Location + BestTarget.Velocity * FMin(2, 0.02 + BestDist/projSpeed) - projStart); bLeading = true; FireDir = BestTarget.Location + BestTarget.Velocity * FMin(2, 0.02 + BestDist/projSpeed) - projStart; AimSpot = projStart + bestDist * Normal(FireDir); // if splash damage weapon, try aiming at feet - trace down to find floor if ( FiredAmmunition.bTrySplash && ((BestTarget.Velocity != vect(0,0,0)) || (BestDist > 1500)) ) { HitActor = Trace(HitLocation, HitNormal, AimSpot - BestTarget.CollisionHeight * vect(0,0,2), AimSpot, false); if ( (HitActor != None) && FastTrace(HitLocation + vect(0,0,4),projstart) ) return rotator(HitLocation + vect(0,0,6) - projStart); } } else { FireDir = BestTarget.Location - projStart; AimSpot = projStart + bestDist * Normal(FireDir); } AimOffset = AimSpot - OldAim; // adjust Z of shooter if necessary if ( bNoZAdjust || (bLeading && (Abs(AimOffset.Z) < BestTarget.CollisionHeight)) ) AimSpot.Z = OldAim.Z; else if ( AimOffset.Z < 0 ) AimSpot.Z = BestTarget.Location.Z + 0.4 * BestTarget.CollisionHeight; else AimSpot.Z = BestTarget.Location.Z - 0.7 * BestTarget.CollisionHeight; if ( !bLeading ) { // if not leading, add slight random error ( significant at long distances ) if ( !bNoZAdjust ) { AimRot = rotator(AimSpot - projStart); if ( FOVAngle < DefaultFOV - 8 ) AimRot.Yaw = AimRot.Yaw + 200 - Rand(400); else AimRot.Yaw = AimRot.Yaw + 375 - Rand(750); return AimRot; } } else if ( !FastTrace(projStart + 0.9 * bestDist * Normal(FireDir), projStart) ) { FireDir = BestTarget.Location - projStart; AimSpot = projStart + bestDist * Normal(FireDir); } return rotator(AimSpot - projStart); } function bool NotifyLanded(vector HitNormal) { return bUpdating; } //============================================================================= // Player Control // Player view. // Compute the rendering viewpoint for the player. // function AdjustView(float DeltaTime ) { // teleporters affect your FOV, so adjust it back down if ( FOVAngle != DesiredFOV ) { if ( FOVAngle > DesiredFOV ) FOVAngle = FOVAngle - FMax(7, 0.9 * DeltaTime * (FOVAngle - DesiredFOV)); else FOVAngle = FOVAngle - FMin(-7, 0.9 * DeltaTime * (FOVAngle - DesiredFOV)); if ( Abs(FOVAngle - DesiredFOV) <= 10 ) FOVAngle = DesiredFOV; } // adjust FOV for weapon zooming if ( bZooming ) { ZoomLevel += DeltaTime * 1.0; if (ZoomLevel > 0.9) ZoomLevel = 0.9; DesiredFOV = FClamp(90.0 - (ZoomLevel * 88.0), 1, 170); } } function CalcBehindView(out vector CameraLocation, out rotator CameraRotation, float Dist) { local vector View,HitLocation,HitNormal; local float ViewDist,RealDist; CameraRotation = Rotation; if ( bBlockCloseCamera ) CameraLocation.Z += 12; View = vect(1,0,0) >> CameraRotation; // add view radius offset to camera location and move viewpoint up from origin (amb) RealDist = Dist; if( Trace( HitLocation, HitNormal, CameraLocation - Dist * vector(CameraRotation), CameraLocation,false,vect(10,10,10) ) != None ) ViewDist = FMin( (CameraLocation - HitLocation) Dot View, Dist ); else ViewDist = Dist; if ( !bBlockCloseCamera || !bValidBehindCamera || (ViewDist > 10 + FMax(ViewTarget.CollisionRadius, ViewTarget.CollisionHeight)) ) { //Log("Update Cam "); bValidBehindCamera = true; OldCameraLoc = CameraLocation - ViewDist * View; OldCameraRot = CameraRotation; } else { //Log("Dont Update Cam "$bBlockCloseCamera@bValidBehindCamera@ViewDist); SetRotation(OldCameraRot); } CameraLocation = OldCameraLoc; CameraRotation = OldCameraRot; } function CalcFirstPersonView( out vector CameraLocation, out rotator CameraRotation ) { // First-person view. CameraRotation = Rotation; CameraLocation = CameraLocation + Pawn.EyePosition() + ShakeOffset; } event AddCameraEffect(CameraEffect NewEffect,optional bool RemoveExisting) { if(RemoveExisting) RemoveCameraEffect(NewEffect); CameraEffects.Length = CameraEffects.Length + 1; CameraEffects[CameraEffects.Length - 1] = NewEffect; } event bool RemoveCameraEffect(CameraEffect ExEffect) { local int EffectIndex; for(EffectIndex = 0;EffectIndex < CameraEffects.Length;EffectIndex++) if(CameraEffects[EffectIndex] == ExEffect) { CameraEffects.Remove(EffectIndex,1); return true; } return false; } exec function CreateCameraEffect(class EffectClass) { AddCameraEffect(new EffectClass); } function rotator GetViewRotation() { if ( bBehindView && (Pawn != None) ) return Pawn.Rotation; return Rotation; } event PlayerCalcView(out actor ViewActor, out vector CameraLocation, out rotator CameraRotation ) { local Pawn PTarget; // If desired, call the pawn's own special callview if( Pawn != None && Pawn.bSpecialCalcView ) { // try the 'special' calcview. This may return false if its not applicable, and we do the usual. if( Pawn.SpecialCalcView(ViewActor, CameraLocation, CameraRotation) ) return; } if ( (ViewTarget == None) || ViewTarget.bDeleteMe ) { if ( bViewBot && (CheatManager != None) ) CheatManager.ViewBot(); else if ( (Pawn != None) && !Pawn.bDeleteMe ) SetViewTarget(Pawn); else if ( RealViewTarget != None ) SetViewTarget(RealViewTarget); else SetViewTarget(self); } ViewActor = ViewTarget; CameraLocation = ViewTarget.Location; if ( ViewTarget == Pawn ) { if( bBehindView ) //up and behind CalcBehindView(CameraLocation, CameraRotation, CameraDist * Pawn.Default.CollisionRadius); else CalcFirstPersonView( CameraLocation, CameraRotation ); return; } if ( ViewTarget == self ) { if ( bCameraPositionLocked ) CameraRotation = CheatManager.LockedRotation; else CameraRotation = Rotation; return; } if ( ViewTarget.IsA('Projectile') && !bBehindView ) { CameraLocation += (ViewTarget.CollisionHeight) * vect(0,0,1); CameraRotation = Rotation; return; } CameraRotation = ViewTarget.Rotation; PTarget = Pawn(ViewTarget); if ( PTarget != None ) { if ( Level.NetMode == NM_Client ) { if ( PTarget.IsPlayerPawn() ) { PTarget.SetViewRotation(TargetViewRotation); CameraRotation = TargetViewRotation; } PTarget.EyeHeight = TargetEyeHeight; if ( PTarget.Weapon != None ) PTarget.Weapon.PlayerViewOffset = TargetWeaponViewOffset; } else if ( PTarget.IsPlayerPawn() ) CameraRotation = PTarget.GetViewRotation(); if ( !bBehindView ) CameraLocation += PTarget.EyePosition(); } if ( bBehindView ) { CameraLocation = CameraLocation + (ViewTarget.Default.CollisionHeight - ViewTarget.CollisionHeight) * vect(0,0,1); CalcBehindView(CameraLocation, CameraRotation, CameraDist * ViewTarget.Default.CollisionRadius); } } function CheckShake(out float MaxOffset, out float Offset, out float Rate, out float Time) { if ( abs(Offset) < abs(MaxOffset) ) return; Offset = MaxOffset; if ( Time > 1 ) { if ( Time * abs(MaxOffset/Rate) <= 1 ) MaxOffset = MaxOffset * (1/Time - 1); else MaxOffset *= -1; Time -= 1; Rate *= -1; } else { MaxOffset = 0; Offset = 0; Rate = 0; } } function ViewShake(float DeltaTime) { local Rotator ViewRotation; local float FRoll; if ( ShakeOffsetRate != vect(0,0,0) ) { // modify shake offset ShakeOffset.X += DeltaTime * ShakeOffsetRate.X; CheckShake(MaxShakeOffset.X, ShakeOffset.X, ShakeOffsetRate.X, ShakeOffsetTime.X); ShakeOffset.Y += DeltaTime * ShakeOffsetRate.Y; CheckShake(MaxShakeOffset.Y, ShakeOffset.Y, ShakeOffsetRate.Y, ShakeOffsetTime.Y); ShakeOffset.Z += DeltaTime * ShakeOffsetRate.Z; CheckShake(MaxShakeOffset.Z, ShakeOffset.Z, ShakeOffsetRate.Z, ShakeOffsetTime.Z); } ViewRotation = Rotation; if ( ShakeRollRate != 0 ) { ViewRotation.Roll = ((ViewRotation.Roll & 65535) + ShakeRollRate * DeltaTime) & 65535; if ( ViewRotation.Roll > 32768 ) ViewRotation.Roll -= 65536; FRoll = ViewRotation.Roll; CheckShake(MaxShakeRoll, FRoll, ShakeRollRate, ShakeRollTime); ViewRotation.Roll = FRoll; } else if ( bZeroRoll ) ViewRotation.Roll = 0; SetRotation(ViewRotation); } function bool TurnTowardNearestEnemy(); function TurnAround() { if ( !bSetTurnRot ) { TurnRot180 = Rotation; TurnRot180.Yaw += 32768; bSetTurnRot = true; } DesiredRotation = TurnRot180; bRotateToDesired = ( DesiredRotation.Yaw != Rotation.Yaw ); } function UpdateRotation(float DeltaTime, float maxPitch) { local rotator newRotation, ViewRotation; if ( bInterpolating || ((Pawn != None) && Pawn.bInterpolating) ) { ViewShake(deltaTime); return; } ViewRotation = Rotation; DesiredRotation = ViewRotation; //save old rotation if ( bTurnToNearest != 0 ) TurnTowardNearestEnemy(); else if ( bTurn180 != 0 ) TurnAround(); else { TurnTarget = None; bRotateToDesired = false; bSetTurnRot = false; ViewRotation.Yaw += 32.0 * DeltaTime * aTurn; ViewRotation.Pitch += 32.0 * DeltaTime * aLookUp; } ViewRotation.Pitch = ViewRotation.Pitch & 65535; If ((ViewRotation.Pitch > 18000) && (ViewRotation.Pitch < 49152)) { If (aLookUp > 0) ViewRotation.Pitch = 18000; else ViewRotation.Pitch = 49152; } SetRotation(ViewRotation); ViewShake(deltaTime); ViewFlash(deltaTime); NewRotation = ViewRotation; NewRotation.Roll = Rotation.Roll; if ( !bRotateToDesired && (Pawn != None) && (!bFreeCamera || !bBehindView) ) Pawn.FaceRotation(NewRotation, deltatime); } function ClearDoubleClick() { if (PlayerInput != None) PlayerInput.DoubleClickTimer = 0.0; } // Player movement. // Player Standing, walking, running, falling. state PlayerWalking { ignores SeePlayer, HearNoise, Bump; function bool NotifyPhysicsVolumeChange( PhysicsVolume NewVolume ) { if ( NewVolume.bWaterVolume ) GotoState(Pawn.WaterMovementState); return false; } function ProcessMove(float DeltaTime, vector NewAccel, eDoubleClickDir DoubleClickMove, rotator DeltaRot) { local vector OldAccel; local bool OldCrouch; OldAccel = Pawn.Acceleration; Pawn.Acceleration = NewAccel; if ( bDoubleJump && (bUpdating || Pawn.CanDoubleJump()) ) Pawn.DoDoubleJump(bUpdating); else if ( bPressedJump ) Pawn.DoJump(bUpdating); if ( Pawn.Physics != PHYS_Falling ) { OldCrouch = Pawn.bWantsToCrouch; if (bDuck == 0) Pawn.ShouldCrouch(false); else if ( Pawn.bCanCrouch ) Pawn.ShouldCrouch(true); } } function PlayerMove( float DeltaTime ) { local vector X,Y,Z, NewAccel; local eDoubleClickDir DoubleClickMove; local rotator OldRotation, ViewRotation; local bool bSaveJump; GetAxes(Pawn.Rotation,X,Y,Z); // Update acceleration. NewAccel = aForward*X + aStrafe*Y; NewAccel.Z = 0; if ( VSize(NewAccel) < 1.0 ) NewAccel = vect(0,0,0); DoubleClickMove = PlayerInput.CheckForDoubleClickMove(DeltaTime); GroundPitch = 0; ViewRotation = Rotation; if ( Pawn.Physics == PHYS_Walking ) { // tell pawn about any direction changes to give it a chance to play appropriate animation //if walking, look up/down stairs - unless player is rotating view if ( (bLook == 0) && (((Pawn.Acceleration != Vect(0,0,0)) && bAlwaysLevel && bSnapToLevel) || !bKeyboardLook) ) { if ( bLookUpStairs || bSnapToLevel ) { GroundPitch = FindStairRotation(deltaTime); ViewRotation.Pitch = GroundPitch; } else if ( bCenterView ) { ViewRotation.Pitch = ViewRotation.Pitch & 65535; if (ViewRotation.Pitch > 32768) ViewRotation.Pitch -= 65536; ViewRotation.Pitch = ViewRotation.Pitch * (1 - 12 * FMin(0.0833, deltaTime)); if ( Abs(ViewRotation.Pitch) < 1000 ) ViewRotation.Pitch = 0; } } } else { if ( !bKeyboardLook && (bLook == 0) && bCenterView ) { ViewRotation.Pitch = ViewRotation.Pitch & 65535; if (ViewRotation.Pitch > 32768) ViewRotation.Pitch -= 65536; ViewRotation.Pitch = ViewRotation.Pitch * (1 - 12 * FMin(0.0833, deltaTime)); if ( Abs(ViewRotation.Pitch) < 1000 ) ViewRotation.Pitch = 0; } } Pawn.CheckBob(DeltaTime, Y); // Update rotation. SetRotation(ViewRotation); OldRotation = Rotation; UpdateRotation(DeltaTime, 1); bDoubleJump = false; if ( bPressedJump && Pawn.CannotJumpNow() ) { bSaveJump = true; bPressedJump = false; } else bSaveJump = false; if ( Role < ROLE_Authority ) // then save this move and replicate it ReplicateMove(DeltaTime, NewAccel, DoubleClickMove, OldRotation - Rotation); else ProcessMove(DeltaTime, NewAccel, DoubleClickMove, OldRotation - Rotation); bPressedJump = bSaveJump; } function BeginState() { DoubleClickDir = DCLICK_None; bPressedJump = false; GroundPitch = 0; if ( Pawn != None ) { if ( Pawn.Mesh == None ) Pawn.SetMesh(); Pawn.ShouldCrouch(false); if (Pawn.Physics != PHYS_Falling && Pawn.Physics != PHYS_Karma) // FIXME HACK!!! Pawn.SetPhysics(PHYS_Walking); } } function EndState() { GroundPitch = 0; if ( Pawn != None && bDuck==0 ) { Pawn.ShouldCrouch(false); } } } // player is climbing ladder state PlayerClimbing { ignores SeePlayer, HearNoise, Bump; function bool NotifyPhysicsVolumeChange( PhysicsVolume NewVolume ) { if ( NewVolume.bWaterVolume ) GotoState(Pawn.WaterMovementState); else GotoState(Pawn.LandMovementState); return false; } function ProcessMove(float DeltaTime, vector NewAccel, eDoubleClickDir DoubleClickMove, rotator DeltaRot) { local vector OldAccel; OldAccel = Pawn.Acceleration; Pawn.Acceleration = NewAccel; if ( bPressedJump ) { Pawn.DoJump(bUpdating); if ( Pawn.Physics == PHYS_Falling ) GotoState('PlayerWalking'); } } function PlayerMove( float DeltaTime ) { local vector X,Y,Z, NewAccel; local eDoubleClickDir DoubleClickMove; local rotator OldRotation, ViewRotation; local bool bSaveJump; GetAxes(Rotation,X,Y,Z); // Update acceleration. if ( Pawn.OnLadder != None ) NewAccel = aForward*Pawn.OnLadder.ClimbDir; else NewAccel = aForward*X + aStrafe*Y; if ( VSize(NewAccel) < 1.0 ) NewAccel = vect(0,0,0); ViewRotation = Rotation; // Update rotation. SetRotation(ViewRotation); OldRotation = Rotation; UpdateRotation(DeltaTime, 1); if ( Role < ROLE_Authority ) // then save this move and replicate it ReplicateMove(DeltaTime, NewAccel, DoubleClickMove, OldRotation - Rotation); else ProcessMove(DeltaTime, NewAccel, DoubleClickMove, OldRotation - Rotation); bPressedJump = bSaveJump; } function BeginState() { Pawn.ShouldCrouch(false); bPressedJump = false; } function EndState() { if ( Pawn != None ) Pawn.ShouldCrouch(false); } } // Player movement. // Player Driving a Karma vehicle. state PlayerDriving { ignores SeePlayer, HearNoise, Bump; function ProcessMove(float DeltaTime, vector NewAccel, eDoubleClickDir DoubleClickMove, rotator DeltaRot) { } exec function Fire(optional float F) { local KVehicle DrivenVehicle; DrivenVehicle = KVehicle(Pawn); if(DrivenVehicle != None) { DrivenVehicle.VehicleFire(false); DrivenVehicle.bVehicleIsFiring = true; } } exec function AltFire(optional float F) { local KVehicle DrivenVehicle; DrivenVehicle = KVehicle(Pawn); if(DrivenVehicle != None) { DrivenVehicle.VehicleFire(true); DrivenVehicle.bVehicleIsAltFiring = true; } } // Set the throttle, steering etc. for the vehicle based on the input provided function ProcessDrive(float InForward, float InStrafe, bool InJump) { local KVehicle DrivenVehicle; DrivenVehicle = KVehicle(Pawn); if(DrivenVehicle == None) { log("PlayerDriving.PlayerMove: No Vehicle"); return; } // check for 'jump' to throw the driver out. if(InJump && Role == ROLE_Authority) { DrivenVehicle.bGetOut = true; return; } //log("Drive:"$InForward$" Steer:"$InStrafe); if(InForward > 1) DrivenVehicle.Throttle = 1; else if(InForward < -1) DrivenVehicle.Throttle = -1; else DrivenVehicle.Throttle = 0; if(InStrafe < -1) DrivenVehicle.Steering = 1; else if(InStrafe > 1) DrivenVehicle.Steering = -1; else DrivenVehicle.Steering = 0; } function PlayerMove( float DeltaTime ) { local KVehicle DrivenVehicle; // Only servers can actually do the driving logic. if(Role < ROLE_Authority) ServerDrive(aForward, aStrafe, bPressedJump); else ProcessDrive(aForward, aStrafe, bPressedJump); // If the vehicle is being controlled here - set replicated variables. DrivenVehicle = KVehicle(Pawn); if(DrivenVehicle != None) { if(bFire == 0 && DrivenVehicle.bVehicleIsFiring) { DrivenVehicle.VehicleCeaseFire(false); DrivenVehicle.bVehicleIsFiring = false; } if(bAltFire == 0 && DrivenVehicle.bVehicleIsAltFiring) { DrivenVehicle.VehicleCeaseFire(true); DrivenVehicle.bVehicleIsAltFiring = false; } } // update 'looking' rotation - no affect on driving UpdateRotation(DeltaTime, 2); } function BeginState() { CleanOutSavedMoves(); } function EndState() { CleanOutSavedMoves(); } } // Player movement. // Player walking on walls state PlayerSpidering { ignores SeePlayer, HearNoise, Bump; event bool NotifyHitWall(vector HitNormal, actor HitActor) { Pawn.SetPhysics(PHYS_Spider); Pawn.SetBase(HitActor, HitNormal); return true; } // if spider mode, update rotation based on floor function UpdateRotation(float DeltaTime, float maxPitch) { local rotator ViewRotation; local vector MyFloor, CrossDir, FwdDir, OldFwdDir, OldX, RealFloor; if ( bInterpolating || Pawn.bInterpolating ) { ViewShake(deltaTime); return; } TurnTarget = None; bRotateToDesired = false; bSetTurnRot = false; if ( (Pawn.Base == None) || (Pawn.Floor == vect(0,0,0)) ) MyFloor = vect(0,0,1); else MyFloor = Pawn.Floor; if ( MyFloor != OldFloor ) { // smoothly change floor RealFloor = MyFloor; MyFloor = Normal(6*DeltaTime * MyFloor + (1 - 6*DeltaTime) * OldFloor); if ( (RealFloor Dot MyFloor) > 0.999 ) MyFloor = RealFloor; // translate view direction CrossDir = Normal(RealFloor Cross OldFloor); FwdDir = CrossDir Cross MyFloor; OldFwdDir = CrossDir Cross OldFloor; ViewX = MyFloor * (OldFloor Dot ViewX) + CrossDir * (CrossDir Dot ViewX) + FwdDir * (OldFwdDir Dot ViewX); ViewX = Normal(ViewX); ViewZ = MyFloor * (OldFloor Dot ViewZ) + CrossDir * (CrossDir Dot ViewZ) + FwdDir * (OldFwdDir Dot ViewZ); ViewZ = Normal(ViewZ); OldFloor = MyFloor; ViewY = Normal(MyFloor Cross ViewX); } if ( (aTurn != 0) || (aLookUp != 0) ) { // adjust Yaw based on aTurn if ( aTurn != 0 ) ViewX = Normal(ViewX + 2 * ViewY * Sin(0.0005*DeltaTime*aTurn)); // adjust Pitch based on aLookUp if ( aLookUp != 0 ) { OldX = ViewX; ViewX = Normal(ViewX + 2 * ViewZ * Sin(0.0005*DeltaTime*aLookUp)); ViewZ = Normal(ViewX Cross ViewY); // bound max pitch if ( (ViewZ Dot MyFloor) < 0.707 ) { OldX = Normal(OldX - MyFloor * (MyFloor Dot OldX)); if ( (ViewX Dot MyFloor) > 0) ViewX = Normal(OldX + MyFloor); else ViewX = Normal(OldX - MyFloor); ViewZ = Normal(ViewX Cross ViewY); } } // calculate new Y axis ViewY = Normal(MyFloor Cross ViewX); } ViewRotation = OrthoRotation(ViewX,ViewY,ViewZ); SetRotation(ViewRotation); ViewShake(deltaTime); ViewFlash(deltaTime); Pawn.FaceRotation(ViewRotation, deltaTime ); } function bool NotifyLanded(vector HitNormal) { Pawn.SetPhysics(PHYS_Spider); return bUpdating; } function bool NotifyPhysicsVolumeChange( PhysicsVolume NewVolume ) { if ( NewVolume.bWaterVolume ) GotoState(Pawn.WaterMovementState); return false; } function ProcessMove(float DeltaTime, vector NewAccel, eDoubleClickDir DoubleClickMove, rotator DeltaRot) { local vector OldAccel; OldAccel = Pawn.Acceleration; Pawn.Acceleration = NewAccel; if ( bPressedJump ) Pawn.DoJump(bUpdating); } function PlayerMove( float DeltaTime ) { local vector NewAccel; local eDoubleClickDir DoubleClickMove; local rotator OldRotation, ViewRotation; local bool bSaveJump; GroundPitch = 0; ViewRotation = Rotation; if ( !bKeyboardLook && (bLook == 0) && bCenterView ) { // FIXME - center view rotation based on current floor } Pawn.CheckBob(DeltaTime,vect(0,0,0)); // Update rotation. SetRotation(ViewRotation); OldRotation = Rotation; UpdateRotation(DeltaTime, 1); // Update acceleration. NewAccel = aForward*Normal(ViewX - OldFloor * (OldFloor Dot ViewX)) + aStrafe*ViewY; if ( VSize(NewAccel) < 1.0 ) NewAccel = vect(0,0,0); if ( bPressedJump && Pawn.CannotJumpNow() ) { bSaveJump = true; bPressedJump = false; } else bSaveJump = false; if ( Role < ROLE_Authority ) // then save this move and replicate it ReplicateMove(DeltaTime, NewAccel, DoubleClickMove, OldRotation - Rotation); else ProcessMove(DeltaTime, NewAccel, DoubleClickMove, OldRotation - Rotation); bPressedJump = bSaveJump; } function BeginState() { if ( Pawn.Mesh == None ) Pawn.SetMesh(); OldFloor = vect(0,0,1); GetAxes(Rotation,ViewX,ViewY,ViewZ); DoubleClickDir = DCLICK_None; Pawn.ShouldCrouch(false); bPressedJump = false; if (Pawn.Physics != PHYS_Falling) Pawn.SetPhysics(PHYS_Spider); GroundPitch = 0; Pawn.bCrawler = true; Pawn.SetCollisionSize(Pawn.Default.CollisionHeight,Pawn.Default.CollisionHeight); } function EndState() { GroundPitch = 0; if ( Pawn != None ) { Pawn.SetCollisionSize(Pawn.Default.CollisionRadius,Pawn.Default.CollisionHeight); Pawn.ShouldCrouch(false); Pawn.bCrawler = Pawn.Default.bCrawler; } } } // Player movement. // Player Swimming state PlayerSwimming { ignores SeePlayer, HearNoise, Bump; function bool WantsSmoothedView() { return ( !Pawn.bJustLanded ); } function bool NotifyLanded(vector HitNormal) { if ( Pawn.PhysicsVolume.bWaterVolume ) Pawn.SetPhysics(PHYS_Swimming); else GotoState(Pawn.LandMovementState); return bUpdating; } function bool NotifyPhysicsVolumeChange( PhysicsVolume NewVolume ) { local actor HitActor; local vector HitLocation, HitNormal, checkpoint; if ( !NewVolume.bWaterVolume ) { Pawn.SetPhysics(PHYS_Falling); if ( Pawn.Velocity.Z > 0 ) { if (Pawn.bUpAndOut && Pawn.CheckWaterJump(HitNormal)) //check for waterjump { Pawn.velocity.Z = FMax(Pawn.JumpZ,420) + 2 * Pawn.CollisionRadius; //set here so physics uses this for remainder of tick GotoState(Pawn.LandMovementState); } else if ( (Pawn.Velocity.Z > 160) || !Pawn.TouchingWaterVolume() ) GotoState(Pawn.LandMovementState); else //check if in deep water { checkpoint = Pawn.Location; checkpoint.Z -= (Pawn.CollisionHeight + 6.0); HitActor = Trace(HitLocation, HitNormal, checkpoint, Pawn.Location, false); if (HitActor != None) GotoState(Pawn.LandMovementState); else { Enable('Timer'); SetTimer(0.7,false); } } } } else { Disable('Timer'); Pawn.SetPhysics(PHYS_Swimming); } return false; } function ProcessMove(float DeltaTime, vector NewAccel, eDoubleClickDir DoubleClickMove, rotator DeltaRot) { local vector X,Y,Z, OldAccel; GetAxes(Rotation,X,Y,Z); OldAccel = Pawn.Acceleration; Pawn.Acceleration = NewAccel; Pawn.bUpAndOut = ((X Dot Pawn.Acceleration) > 0) && ((Pawn.Acceleration.Z > 0) || (Rotation.Pitch > 2048)); if ( !Pawn.PhysicsVolume.bWaterVolume ) //check for waterjump NotifyPhysicsVolumeChange(Pawn.PhysicsVolume); } function PlayerMove(float DeltaTime) { local rotator oldRotation; local vector X,Y,Z, NewAccel; GetAxes(Rotation,X,Y,Z); NewAccel = aForward*X + aStrafe*Y + aUp*vect(0,0,1); if ( VSize(NewAccel) < 1.0 ) NewAccel = vect(0,0,0); //add bobbing when swimming Pawn.CheckBob(DeltaTime, Y); // Update rotation. oldRotation = Rotation; UpdateRotation(DeltaTime, 2); if ( Role < ROLE_Authority ) // then save this move and replicate it ReplicateMove(DeltaTime, NewAccel, DCLICK_None, OldRotation - Rotation); else ProcessMove(DeltaTime, NewAccel, DCLICK_None, OldRotation - Rotation); bPressedJump = false; } function Timer() { if ( !Pawn.PhysicsVolume.bWaterVolume && (Role == ROLE_Authority) ) GotoState(Pawn.LandMovementState); Disable('Timer'); } function BeginState() { Disable('Timer'); Pawn.SetPhysics(PHYS_Swimming); } } state PlayerFlying { ignores SeePlayer, HearNoise, Bump; function PlayerMove(float DeltaTime) { local vector X,Y,Z; GetAxes(Rotation,X,Y,Z); Pawn.Acceleration = aForward*X + aStrafe*Y; if ( VSize(Pawn.Acceleration) < 1.0 ) Pawn.Acceleration = vect(0,0,0); if ( bCheatFlying && (Pawn.Acceleration == vect(0,0,0)) ) Pawn.Velocity = vect(0,0,0); // Update rotation. UpdateRotation(DeltaTime, 2); if ( Role < ROLE_Authority ) // then save this move and replicate it ReplicateMove(DeltaTime, Pawn.Acceleration, DCLICK_None, rot(0,0,0)); else ProcessMove(DeltaTime, Pawn.Acceleration, DCLICK_None, rot(0,0,0)); } function BeginState() { Pawn.SetPhysics(PHYS_Flying); } } state PlayerRocketing { ignores SeePlayer, HearNoise, Bump; /* ServerMove() - replicated function sent by client to server - contains client movement and firing info Passes acceleration in components so it doesn't get rounded. IGNORE VANILLA SERVER MOVES */ function ServerMove ( float TimeStamp, vector InAccel, vector ClientLoc, bool NewbRun, bool NewbDuck, bool NewbJumpStatus, bool NewbDoubleJump, eDoubleClickDir DoubleClickMove, byte ClientRoll, int View, optional byte OldTimeDelta, optional int OldAccel ) { if ( CurrentTimeStamp < TimeStamp ) Pawn.AutonomousPhysics(TimeStamp - CurrentTimeStamp); CurrentTimeStamp = TimeStamp; ServerTimeStamp = Level.TimeSeconds; } function RocketServerMove ( float TimeStamp, vector InAccel, vector ClientLoc, byte ClientRoll, int View ) { //if ( InAccel Dot Pawn.Velocity < 0 ) // InAccel = 0.1 * Pawn.AccelRate * Normal(Pawn.Velocity); Global.ServerMove(TimeStamp,InAccel,ClientLoc,false,false,false,false, DCLICK_NONE,ClientRoll,View); } function PlayerMove(float DeltaTime) { Pawn.UpdateRocketAcceleration(DeltaTime,aTurn,aLookUp); SetRotation(Pawn.Rotation); if ( Role < ROLE_Authority ) // then save this move and replicate it ReplicateMove(DeltaTime, Pawn.Acceleration, DCLICK_None, rot(0,0,0)); else ProcessMove(DeltaTime, Pawn.Acceleration, DCLICK_None, rot(0,0,0)); } function BeginState() { Pawn.SetPhysics(PHYS_Flying); } } function bool IsSpectating() { return false; } state BaseSpectating { function bool IsSpectating() { return true; } function ProcessMove(float DeltaTime, vector NewAccel, eDoubleClickDir DoubleClickMove, rotator DeltaRot) { Acceleration = NewAccel; MoveSmooth(2 * class'Pawn'.Default.AirSpeed * Normal(Acceleration) * DeltaTime); } function PlayerMove(float DeltaTime) { local vector X,Y,Z; GetAxes(Rotation,X,Y,Z); Acceleration = 0.02 * (aForward*X + aStrafe*Y + aUp*vect(0,0,1)); UpdateRotation(DeltaTime, 1); if ( Role < ROLE_Authority ) // then save this move and replicate it ReplicateMove(DeltaTime, Acceleration, DCLICK_None, rot(0,0,0)); else ProcessMove(DeltaTime, Acceleration, DCLICK_None, rot(0,0,0)); } } state Scripting { // FIXME - IF HIT FIRE, AND NOT bInterpolating, Leave script exec function Fire( optional float F ) { } exec function AltFire( optional float F ) { Fire(F); } } function ServerViewNextPlayer() { local Controller C, Pick; local bool bFound, bRealSpec; bRealSpec = PlayerReplicationInfo.bOnlySpectator; PlayerReplicationInfo.bOnlySpectator = true; // view next player for ( C=Level.ControllerList; C!=None; C=C.NextController ) { if ( Level.Game.CanSpectate(self,true,C) ) { if ( Pick == None ) Pick = C; if ( bFound ) { Pick = C; break; } else bFound = ( ViewTarget == C ); } } SetViewTarget(Pick); ClientSetViewTarget(Pick); if ( ViewTarget == self ) bBehindView = false; else bBehindView = true; //bChaseCam; PlayerReplicationInfo.bOnlySpectator = bRealSpec; } function ServerViewSelf() { bBehindView = false; SetViewTarget(self); ClientSetViewTarget(self); ClientMessage(OwnCamera, 'Event'); } function LoadPlayers() { local int i; if ( GameReplicationInfo == None ) return; for ( i=0; i 1.0) ) { SetTimer(0.2,true); AskForPawn(); } } function Timer() { AskForPawn(); } function BeginState() { SetTimer(0.2, true); AskForPawn(); } function EndState() { bBehindView = false; SetTimer(0.0, false); } } state GameEnded { ignores SeePlayer, HearNoise, KilledBy, NotifyBump, HitWall, NotifyHeadVolumeChange, NotifyPhysicsVolumeChange, Falling, TakeDamage, Suicide; function ServerReStartPlayer() { } function bool IsSpectating() { return true; } exec function ThrowWeapon() { } function ServerReStartGame() { Level.Game.RestartGame(); } exec function Fire( optional float F ) { if ( Role < ROLE_Authority) return; if ( !bFrozen ) ServerReStartGame(); else if ( TimerRate <= 0 ) SetTimer(1.5, false); } exec function AltFire( optional float F ) { Fire(F); } function PlayerMove(float DeltaTime) { local vector X,Y,Z; local Rotator ViewRotation; GetAxes(Rotation,X,Y,Z); // Update view rotation. if ( !bFixedCamera ) { ViewRotation = Rotation; ViewRotation.Yaw += 32.0 * DeltaTime * aTurn; ViewRotation.Pitch += 32.0 * DeltaTime * aLookUp; ViewRotation.Pitch = ViewRotation.Pitch & 65535; If ((ViewRotation.Pitch > 18000) && (ViewRotation.Pitch < 49152)) { If (aLookUp > 0) ViewRotation.Pitch = 18000; else ViewRotation.Pitch = 49152; } SetRotation(ViewRotation); } else if ( ViewTarget != None ) SetRotation(ViewTarget.Rotation); ViewShake(DeltaTime); ViewFlash(DeltaTime); if ( Role < ROLE_Authority ) // then save this move and replicate it ReplicateMove(DeltaTime, vect(0,0,0), DCLICK_None, rot(0,0,0)); else ProcessMove(DeltaTime, vect(0,0,0), DCLICK_None, rot(0,0,0)); bPressedJump = false; } function ServerMove ( float TimeStamp, vector InAccel, vector ClientLoc, bool NewbRun, bool NewbDuck, bool NewbJumpStatus, bool NewbDoubleJump, eDoubleClickDir DoubleClickMove, byte ClientRoll, int View, optional byte OldTimeDelta, optional int OldAccel ) { Global.ServerMove(TimeStamp, InAccel, ClientLoc, NewbRun, NewbDuck, NewbJumpStatus,NewbDoubleJump, DoubleClickMove, ClientRoll, (32767 & (Rotation.Pitch/2)) * 32768 + (32767 & (Rotation.Yaw/2)) ); } function FindGoodView() { local vector cameraLoc; local rotator cameraRot, ViewRotation; local int tries, besttry; local float bestdist, newdist; local int startYaw; local actor ViewActor; ViewRotation = Rotation; ViewRotation.Pitch = 56000; tries = 0; besttry = 0; bestdist = 0.0; startYaw = ViewRotation.Yaw; for (tries=0; tries<16; tries++) { cameraLoc = ViewTarget.Location; SetRotation(ViewRotation); PlayerCalcView(ViewActor, cameraLoc, cameraRot); newdist = VSize(cameraLoc - ViewTarget.Location); if (newdist > bestdist) { bestdist = newdist; besttry = tries; } ViewRotation.Yaw += 4096; } ViewRotation.Yaw = startYaw + besttry * 4096; SetRotation(ViewRotation); } function Timer() { bFrozen = false; } function LongClientAdjustPosition ( float TimeStamp, name newState, EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, float NewVelX, float NewVelY, float NewVelZ, Actor NewBase, float NewFloorX, float NewFloorY, float NewFloorZ ) { } function BeginState() { local Pawn P; EndZoom(); FOVAngle = DesiredFOV; bFire = 0; bAltFire = 0; if ( Pawn != None ) { Pawn.Velocity = vect(0,0,0); Pawn.SetPhysics(PHYS_None); //Pawn.AmbientSound = None; Pawn.bSpecialHUD = false; Pawn.bNoWeaponFiring = true; Pawn.SimAnim.AnimRate = 0; Pawn.bPhysicsAnimUpdate = false; Pawn.StopAnimating(); Pawn.SetCollision(true,false,false); StopFiring(); Pawn.bIgnoreForces = true; } myHUD.bShowScores = true; bFrozen = true; if ( !bFixedCamera ) { FindGoodView(); bBehindView = true; } SetTimer(5, false); ForEach DynamicActors(class'Pawn', P) { if ( P.Role == ROLE_Authority ) P.RemoteRole = ROLE_DumbProxy; P.SetCollision(true,false,false); //P.AmbientSound = None; P.bNoWeaponFiring = true; P.Velocity = vect(0,0,0); P.SetPhysics(PHYS_None); P.bPhysicsAnimUpdate = false; P.StopAnimating(); P.bIgnoreForces = true; } } Begin: } state Dead { ignores SeePlayer, HearNoise, KilledBy, SwitchWeapon, NextWeapon, PrevWeapon; function bool IsDead() { return true; } function ServerReStartPlayer() { Super.ServerRestartPlayer(); } exec function Fire( optional float F ) { if ( bFrozen ) { if ( (TimerRate <= 0.0) || (TimerRate > 1.0) ) bFrozen = false; return; } LoadPlayers(); ServerReStartPlayer(); } exec function AltFire( optional float F ) { Fire(F); } function ServerMove ( float TimeStamp, vector Accel, vector ClientLoc, bool NewbRun, bool NewbDuck, bool NewbJumpStatus, bool NewbDoubleJump, eDoubleClickDir DoubleClickMove, byte ClientRoll, int View, optional byte OldTimeDelta, optional int OldAccel ) { Global.ServerMove( TimeStamp, Accel, ClientLoc, false, false, false, false, DoubleClickMove, ClientRoll, View); } function PlayerMove(float DeltaTime) { local vector X,Y,Z; local rotator ViewRotation; if ( !bFrozen ) { if ( bPressedJump ) { Fire(0); bPressedJump = false; } GetAxes(Rotation,X,Y,Z); // Update view rotation. ViewRotation = Rotation; ViewRotation.Yaw += 32.0 * DeltaTime * aTurn; ViewRotation.Pitch += 32.0 * DeltaTime * aLookUp; ViewRotation.Pitch = ViewRotation.Pitch & 65535; If ((ViewRotation.Pitch > 18000) && (ViewRotation.Pitch < 49152)) { If (aLookUp > 0) ViewRotation.Pitch = 18000; else ViewRotation.Pitch = 49152; } SetRotation(ViewRotation); if ( Role < ROLE_Authority ) // then save this move and replicate it ReplicateMove(DeltaTime, vect(0,0,0), DCLICK_None, rot(0,0,0)); } else if ( (TimerRate <= 0.0) || (TimerRate > 1.0) ) bFrozen = false; ViewShake(DeltaTime); ViewFlash(DeltaTime); } function FindGoodView() { local vector cameraLoc; local rotator cameraRot, ViewRotation; local int tries, besttry; local float bestdist, newdist; local int startYaw; local actor ViewActor; ////log("Find good death scene view"); ViewRotation = Rotation; ViewRotation.Pitch = 56000; tries = 0; besttry = 0; bestdist = 0.0; startYaw = ViewRotation.Yaw; for (tries=0; tries<16; tries++) { cameraLoc = ViewTarget.Location; SetRotation(ViewRotation); PlayerCalcView(ViewActor, cameraLoc, cameraRot); newdist = VSize(cameraLoc - ViewTarget.Location); if (newdist > bestdist) { bestdist = newdist; besttry = tries; } ViewRotation.Yaw += 4096; } ViewRotation.Yaw = startYaw + besttry * 4096; SetRotation(ViewRotation); } function Timer() { if (!bFrozen) return; bFrozen = false; bPressedJump = false; } function BeginState() { if ( (Pawn != None) && (Pawn.Controller == self) ) Pawn.Controller = None; EndZoom(); FOVAngle = DesiredFOV; Pawn = None; Enemy = None; bBehindView = true; bFrozen = true; bJumpStatus = false; bPressedJump = false; bBlockCloseCamera = true; bValidBehindCamera = false; FindGoodView(); SetTimer(1.0, false); CleanOutSavedMoves(); } function EndState() { bBlockCloseCamera = false; CleanOutSavedMoves(); Velocity = vect(0,0,0); Acceleration = vect(0,0,0); bBehindView = false; bPressedJump = false; myHUD.bShowScores = false; } Begin: Sleep(3.0); myHUD.bShowScores = true; } //------------------------------------------------------------------------------ // Control options function ChangeStairLook( bool B ) { bLookUpStairs = B; if ( bLookUpStairs ) bAlwaysMouseLook = false; } function ChangeAlwaysMouseLook(Bool B) { bAlwaysMouseLook = B; if ( bAlwaysMouseLook ) bLookUpStairs = false; } // Replace with good code event ClientOpenMenu (string Menu, optional bool bDisconnect,optional string Msg1, optional string Msg2) { Player.GUIController.OpenMenu(Menu, Msg1, Msg2); if (bDisconnect) ConsoleCommand("Disconnect"); } event ClientCloseMenu(optional bool bCloseAll, optional bool bCancel) { if (bCloseAll) Player.GUIController.CloseAll(bCancel); else Player.GUIController.CloseMenu(bCancel); } function bool CanRestartPlayer() { return !PlayerReplicationInfo.bOnlySpectator; } event ServerChangeVoiceChatter( PlayerController Player, int IpAddr, int Handle, bool Add ) { if( (Level.NetMode == NM_DedicatedServer) || (Level.NetMode == NM_ListenServer) ) { Level.Game.ChangeVoiceChatter( Player, IpAddr, Handle, Add ); } } event ServerGetVoiceChatters( PlayerController Player ) { local int i; if( (Level.NetMode == NM_DedicatedServer) || (Level.NetMode == NM_ListenServer) ) { for( i=0; i LocalInteractions; // Holds a listing of all local Interactions var transient BaseGUIController GUIController; // Callback to the Menu Controller const IDC_ARROW=0; const IDC_SIZEALL=1; const IDC_SIZENESW=2; const IDC_SIZENS=3; const IDC_SIZENWSE=4; const IDC_SIZEWE=5; const IDC_WAIT=6; p€c†//============================================================================= // Pickup items. // // Pickup is the base class of actors that when touched by an appropriate pawn, // will create and place an Inventory actor in that pawn's inventory chain. Each // pickup class has an associated inventory class (its InventoryType). Pickups are // placed by level designers. Pickups can only interact with pawns when in their // default Pickup state. Pickups verify that they can give inventory to a pawn by // calling the GameInfo's PickupQuery() function. After a pickup spawns an inventory // item for a pawn, it then queries the GameInfo by calling the GameInfo's // ShouldRespawn() function about whether it should remain active, enter its Sleep // state and later become active again, or destroy itself. // // When navigation paths are built, each pickup has an InventorySpot (a subclass // of NavigationPoint) placed on it and associated with it // (the Pickup's MyMarker== the InventorySpot, // and the InventorySpot's markedItem == the pickup). // //============================================================================= class Pickup extends Actor abstract placeable native nativereplication; //----------------------------------------------------------------------------- // AI related info. var float MaxDesireability; // Maximum desireability this item will ever have. var InventorySpot myMarker; var NavigationPoint PickupCache; // used for dropped pickups var() class InventoryType; var() bool bInstantRespawn; // Can be tagged so this item respawns instantly. var bool bOnlyReplicateHidden; // only replicate changes in bHidden (optimization for level pickups) var(Display) bool bAmbientGlow; // Whether to glow or not. var bool bDropped; var bool bPredictRespawns; // high skill bots may predict respawns for this item var() float RespawnTime; // Respawn after this time, 0 for instant. var float RespawnEffectTime; var() localized string PickupMessage; // Human readable description when picked up. var() sound PickupSound; var() string PickupForce; // jdf native final function AddToNavigation(); // cache dropped inventory in navigation network native final function RemoveFromNavigation(); static function StaticPrecache(LevelInfo L); function Destroyed() { if (MyMarker != None ) MyMarker.markedItem = None; if (Inventory != None ) Inventory.Destroy(); } /* Reset() reset actor to initial state - used when restarting level without reloading. */ function Reset() { if ( Inventory != None ) destroy(); else { GotoState('Pickup'); Super.Reset(); } } function RespawnEffect(); // Turns the pickup into a different type of pickup - specificly used by the WildcardCharger function Pickup Transmogrify(class NewClass) // de { local Pickup NewPickup; NewPickup = Spawn(NewClass); NewPickup.RespawnTime = RespawnTime; if (MyMarker != None ) { MyMarker.markedItem = NewPickup; NewPickup.MyMarker = MyMarker; MyMarker = None; } Destroy(); return NewPickup; } /* DetourWeight() value of this path to take a quick detour (usually 0, used when on route to distant objective, but want to grab inventory for example) */ function float DetourWeight(Pawn Other,float PathWeight) { return 0; } /* Pickups have an AI interface to allow AIControllers, such as bots, to assess the desireability of acquiring that pickup. The BotDesireability() method returns a float typically between 0 and 1 describing how valuable the pickup is to the AIController. This method is called when an AIController uses the FindPathToBestInventory() navigation intrinsic. */ function float BotDesireability( pawn Bot ) { local Inventory AlreadyHas; local float desire; desire = MaxDesireability; if ( RespawnTime < 10 ) { AlreadyHas = Bot.FindInventoryType(InventoryType); if ( AlreadyHas != None ) { if ( Inventory != None ) { if( Inventory.Charge <= AlreadyHas.Charge ) return -1; } else if ( InventoryType.Default.Charge <= AlreadyHas.Charge ) return -1; } } return desire; } // Either give this inventory to player Other, or spawn a copy // and give it to the player Other, setting up original to be respawned. // function inventory SpawnCopy( pawn Other ) { local inventory Copy; if ( Inventory != None ) { Copy = Inventory; Inventory = None; } else Copy = spawn(InventoryType,Other,,,rot(0,0,0)); Copy.GiveTo( Other ); return Copy; } function StartSleeping() { if (bDropped) Destroy(); else GotoState('Sleeping'); } function AnnouncePickup( Pawn Receiver ) { Receiver.HandlePickup(self); PlaySound( PickupSound,SLOT_Interact ); } // // Set up respawn waiting if desired. // function SetRespawn() { if( Level.Game.ShouldRespawn(self) ) StartSleeping(); else Destroy(); } // HUD Messages static function string GetLocalString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2 ) { return Default.PickupMessage; } function InitDroppedPickupFor(Inventory Inv) { SetPhysics(PHYS_Falling); GotoState('FallingPickup'); Inventory = Inv; bAlwaysRelevant = false; bOnlyReplicateHidden = false; bUpdateSimulatedPosition = true; bDropped = true; LifeSpan = 16; bIgnoreEncroachers=false; // handles case of dropping stuff on lifts etc } function bool ReadyToPickup(float MaxWait) { return false; } event Landed(Vector HitNormal) { GotoState('Pickup'); } state FallingPickup { function Timer() { GotoState('FadeOut'); } function BeginState() { SetTimer(8, false); } } //============================================================================= // Pickup state: this inventory item is sitting on the ground. auto state Pickup { function bool ReadyToPickup(float MaxWait) { return true; } /* ValidTouch() Validate touch (if valid return true to let other pick me up and trigger event). */ function bool ValidTouch( actor Other ) { // make sure its a live player if ( (Pawn(Other) == None) || !Pawn(Other).bCanPickupInventory || (Pawn(Other).Health <= 0) ) return false; // make sure not touching through wall if ( !FastTrace(Other.Location, Location) ) return false; // make sure game will let player pick me up if( Level.Game.PickupQuery(Pawn(Other), self) ) { TriggerEvent(Event, self, Pawn(Other)); return true; } return false; } // When touched by an actor. function Touch( actor Other ) { local Inventory Copy; // If touched by a player pawn, let him pick this up. if( ValidTouch(Other) ) { Copy = SpawnCopy(Pawn(Other)); AnnouncePickup(Pawn(Other)); SetRespawn(); Copy.PickupFunction(Pawn(Other)); } } // Make sure no pawn already touching (while touch was disabled in sleep). function CheckTouching() { local Pawn P; ForEach TouchingActors(class'Pawn', P) Touch(P); } function Timer() { if ( bDropped ) GotoState('FadeOut'); } function BeginState() { if ( bDropped ) { AddToNavigation(); SetTimer(8, false); } } function EndState() { if ( bDropped ) RemoveFromNavigation(); } Begin: CheckTouching(); } State FadeOut extends Pickup { function Tick(float DeltaTime) { SetDrawScale(FMax(0.01, DrawScale - Default.DrawScale * DeltaTime)); } function BeginState() { RotationRate.Yaw=60000; SetPhysics(PHYS_Rotating); LifeSpan = 1.0; } function EndState() { LifeSpan = 0.0; SetDrawScale(Default.DrawScale); if ( Physics == PHYS_Rotating ) SetPhysics(PHYS_None); } } //============================================================================= // Sleeping state: Sitting hidden waiting to respawn. function float GetRespawnTime() { return RespawnTime; } State Sleeping { ignores Touch; function bool ReadyToPickup(float MaxWait) { return ( bPredictRespawns && (LatentFloat < MaxWait) ); } function StartSleeping() {} function BeginState() { bHidden = true; } function EndState() { bHidden = false; } Begin: Sleep( GetReSpawnTime() - RespawnEffectTime ); RespawnEffect(); Sleep(RespawnEffectTime); GotoState('Pickup'); } Qa//============================================================================= // PhysicsVolume: a bounding volume which affects actor physics // Each Actor is affected at any time by one PhysicsVolume // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class PhysicsVolume extends Volume native nativereplication; var() vector ZoneVelocity; var() vector Gravity; var() float GroundFriction; var() float TerminalVelocity; var() float DamagePerSec; var() class DamageType; var() int Priority; // determines which PhysicsVolume takes precedence if they overlap var() sound EntrySound; //only if waterzone var() sound ExitSound; // only if waterzone var() class EntryActor; // e.g. a splash (only if water zone) var() class ExitActor; // e.g. a splash (only if water zone) var() float FluidFriction; var() vector ViewFlash, ViewFog; var Info PainTimer; var() bool bPainCausing; // Zone causes pain. var() bool bDestructive; // Destroys most actors which enter it. var() bool bNoInventory; var() bool bMoveProjectiles;// this velocity zone should impart velocity to projectiles and effects var() bool bBounceVelocity; // this velocity zone should bounce actors that land in it var() bool bNeutralZone; // Players can't take damage in this zone. var bool bWaterVolume; // Distance Fog var(VolumeFog) bool bDistanceFog; // There is distance fog in this physicsvolume. // #ifdef __L2 // zodiac var(VolumeFog) bool bUseDistanceFogColor; var(VolumeFog) bool bUseCellophane; // #endif var(VolumeFog) color DistanceFogColor; var(VolumeFog) float DistanceFogStart; var(VolumeFog) float DistanceFogEnd; // #ifdef __L2 // zodiac var(VolumeFog) color CellophaneColor; // #endif // Karma var(Karma) float KExtraLinearDamping; // Extra damping applied to Karma actors in this volume. var(Karma) float KExtraAngularDamping; var(Karma) float KBuoyancy; // How buoyant Karma things are in this volume (if bWaterVolume true). Multiplied by Actors KarmaParams->KBuoyancy. var PhysicsVolume NextPhysicsVolume; //#ifdef __L2 // zodiac var() bool bL2WaterVolume; var() bool bL2StepVolume; var(StepSound) int StepSoundID; //#endif replication { // Things the server should send to the client. reliable if( bNetDirty && (Role==ROLE_Authority) ) Gravity; } simulated function PostBeginPlay() { Super.PostBeginPlay(); if ( Role < ROLE_Authority ) return; if ( bPainCausing ) PainTimer = Spawn(class'VolumeTimer', self); } /* Called when an actor in this PhysicsVolume changes its physics mode */ event PhysicsChangedFor(Actor Other); event ActorEnteredVolume(Actor Other); event ActorLeavingVolume(Actor Other); event PawnEnteredVolume(Pawn Other) { if ( Other.IsPlayerPawn() ) TriggerEvent(Event,self, Other); } event PawnLeavingVolume(Pawn Other) { if ( Other.IsPlayerPawn() ) UntriggerEvent(Event,self, Other); } /* TimerPop damage touched actors if pain causing. since PhysicsVolume is static, this function is actually called by a volumetimer */ function TimerPop(VolumeTimer T) { local actor A; if ( T == PainTimer ) { if ( !bPainCausing ) return; ForEach TouchingActors(class'Actor', A) CausePainTo(A); } } function Trigger( actor Other, pawn EventInstigator ) { // turn zone damage on and off if (DamagePerSec != 0) { bPainCausing = !bPainCausing; if ( bPainCausing && (PainTimer == None) ) PainTimer = spawn(class'VolumeTimer', self); } } event touch(Actor Other) { Super.Touch(Other); if ( Other == None ) return; if ( bNoInventory && Other.IsA('Inventory') && (Other.Owner == None) ) { Other.LifeSpan = 1.5; return; } if ( bMoveProjectiles && (ZoneVelocity != vect(0,0,0)) ) { if ( Other.Physics == PHYS_Projectile ) Other.Velocity += ZoneVelocity; else if ( Other.IsA('Effects') && (Other.Physics == PHYS_None) ) { Other.SetPhysics(PHYS_Projectile); Other.Velocity += ZoneVelocity; } } if ( bPainCausing ) { if ( Other.bDestroyInPainVolume ) { Other.Destroy(); return; } CausePainTo(Other); } //#ifdef __L2 // zodiac if ( bL2WaterVolume && Other.CanSplash() ) PlayEntrySplash(Other); //#else // if ( bWaterVolume && Other.CanSplash() ) // PlayEntrySplash(Other); //#endif } function PlayEntrySplash(Actor Other) { local float SplashSize; local actor splash; splashSize = FClamp(0.00003 * Other.Mass * (250 - 0.5 * FMax(-600,Other.Velocity.Z)), 0.1, 1.0 ); if( EntrySound != None ) { PlaySound(EntrySound, SLOT_Interact, splashSize); if ( Other.Instigator != None ) MakeNoise(SplashSize); } if( EntryActor != None ) { splash = Spawn(EntryActor); if ( splash != None ) splash.SetDrawScale(splashSize); } } event untouch(Actor Other) { //#ifdef __L2 // zodiac if ( bL2WaterVolume && Other.CanSplash() ) PlayExitSplash(Other); //#else // if ( bWaterVolume && Other.CanSplash() ) // PlayExitSplash(Other); //#endif } function PlayExitSplash(Actor Other) { local float SplashSize; local actor splash; splashSize = FClamp(0.003 * Other.Mass, 0.1, 1.0 ); if( ExitSound != None ) PlaySound(ExitSound, SLOT_Interact, splashSize); if( ExitActor != None ) { splash = Spawn(ExitActor); if ( splash != None ) splash.SetDrawScale(splashSize); } } function CausePainTo(Actor Other) { local float depth; local Pawn P; // FIXMEZONE figure out depth of actor, and base pain on that!!! depth = 1; P = Pawn(Other); if ( DamagePerSec > 0 ) { if ( Region.Zone.bSoftKillZ && (Other.Physics != PHYS_Walking) ) return; Other.TakeDamage(int(DamagePerSec * depth), None, Location, vect(0,0,0), DamageType); if ( (P != None) && (P.Controller != None) ) P.Controller.PawnIsInPain(self); } else { if ( (P != None) && (P.Health < P.Default.Health) ) P.Health = Min(P.Default.Health, P.Health - depth * DamagePerSec); } } event GetHitEffectName(out name a, out name b); X· //============================================================================= // Pawn, the base class of all actors that can be controlled by players or AI. // // Pawns are the physical representations of players and creatures in a level. // Pawns have a mesh, collision, and physics. Pawns can take damage, make sounds, // and hold weapons and other inventory. In short, they are responsible for all // physical interaction between the player or AI and the world. // // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class Pawn extends Actor abstract native placeable config(user) nativereplication; #exec Texture Import File=Textures\Pawn.pcx Name=S_Pawn Mips=Off MASKED=1 //----------------------------------------------------------------------------- // Pawn variables. var mesh SubMeshes[9]; // SubMesh if DrawType=DT_Mesh. var mesh RightHandMesh; // RightHandMesh if DrawType=DT_Mesh. var mesh LeftHandMesh; // LeftHandMesh if DrawType=DT_Mesh. var mesh RightArmMesh; // ArmHandMesh if DrawType=DT_Mesh. var mesh LeftArmMesh; // ArmHandMesh if DrawType=DT_Mesh. var mesh CloakMesh; // CloakMesh if DrawType=DT_Mesh. var mesh CloakCoverMesh; // CloakMesh if DrawType=DT_Mesh. var transient MeshInstance SubMeshInstances[9]; // Mesh instance. var transient MeshInstance RightHandMeshInstance; // RightHandMesh instance. var transient MeshInstance LeftHandMeshInstance; // LeftHandMesh instance. var transient MeshInstance RightArmMeshInstance; // RightArmMesh instance. var transient MeshInstance LeftArmMeshInstance; // LeftArmMesh instance. var transient MeshInstance CloakMeshInstance; // CloakMesh instance. var transient MeshInstance CloakCoverMeshInstance; // CloakMesh instance. var name RootBone; // CT26P2_0825 (ex:bip01) var name RightHandBone; var name LeftHandBone; var name RightArmBone; var name LeftArmBone; var name SpineBone; var name LowbodyBone; var name CapeBone; var name HeadBone; var name RightFootBone; var name LeftFootBone; // L2_KAMAEL var name WingBone; var name LeftUpperArmBone; var name RightUpperArmBone; var name LeftShoulderBone; var name RightShoulderBone; var int EffectSpawnBoneIdx; var name SecondHeadBone; var bool bHasSecondHeadBone; var config Material SubSkins[9]; // SubMesh skin support. var config Material RightHandSkins; // RightHandMesh Skin support. var config Material LeftHandSkins; // LeftHandMesh Skin support. var config Material RightArmSkins; // RightArmMesh Skin support. var config Material LeftArmSkins[3]; // LeftArmMesh Skin support. var config Material CloakSkins[2]; // CloakMesh Skin support. // __L2 Hunter var(NpcPos) string nickname; var(NpcPos) name ai; var(NpcPos) array Privates; var(NpcPos) WhenExtinctionCreate when_extinction_create; var(NpcPos) bool bWayPointsShow; var(NpcPos) array WayPoints; // __L2 kinggoat var float WeaponScale; var transient NMagicInfo MagicInfo; // flagoftiger var mesh SubMeshesBuffer[9]; var Material SubSkinsBuffer[9]; var mesh RightHandMeshBuffer; var Material RightHandSkinsBuffer; var mesh LeftHandMeshBuffer; var Material LeftHandSkinsBuffer; var mesh RightArmMeshBuffer; var Material RightArmSkinsBuffer; var mesh LeftArmMeshBuffer; var Material LeftArmSkinsBuffer[3]; var mesh CloakMeshBuffer; var Material CloakSkinsBuffer[2]; var mesh CloakCoverMeshBuffer; // __L2 Hunter enum NActionList { NACT_NONE, NACT_MELEEATTACK, NACT_RANGEDATTACK, NACT_PICITEM, NACT_CHANGEITEM, NACT_SKILLUSE, // #ifdef __L2 // anima NACT_SKILLINPUTWAIT, // #endif NACT_THROWATTACK, NACT_SHOTATTACK, NACT_PRIVATESTORE, NACT_OBSERVING, }; //struct NQuestPtr //{ // var int Ptr; //npc°¡ °¡Áö°íÀÖŽÂ ÄùœºÆ®žŠ °¡ž£Å°ŽÂ Æ÷ÀÎÅÍ by yohan //}; struct NActionPtr { var int Ptr; }; struct native NAttackActionParam { var int Damage; var bool bMiss; var bool bCritical; var bool bShieldDefense; var bool bSpirit; var int SoulshotGrade; var actor ActionTarget; }; struct native NPrimeActionParam { var int ActionID; var int Damage; var bool bMiss; var bool bCritical; var bool bShieldDefense; var bool bSpirit; var int SoulshotGrade; var actor ActionTarget; var int MaxAtkShotNum; var int CurAtkShotNum; // #ifdef __L2 // anima var int SkillID; // use when ActionID is NACT_SKILLINPUTWAIT // #endif var array NAssociatedAttackParam; }; struct native NAtkConsumeItemParam { var int RangedAttackItemID; var int RangedAttackConsumeItemID; }; struct native NSilhouetteParam { var byte Type; var byte R; var byte G; var byte B; }; var NSilhouetteParam NSilhouetteData; var NPrimeActionParam NPrimeAction; var array NActions; var NAtkConsumeItemParam NAtkConsumeItem; var array ExtraMeshDatas; var bool bUpdateMovementAnim; var bool bPhysicInit; var bool bAsTreatWorld; var bool bIgnorePhysics; var bool CanBeIngnoredCollision; var bool bPlayingSpecialAnim; var bool bFaceRotation; var bool bEnableFaceRotation; var bool bNpc; var bool bWantChangeYaw; var bool bTurning; var bool bNotRotationMoving; var rotator LastNeckRot; var rotator LastBodyRot; var int CharClassID; var int NpcClassID; var int AttackItemClassID; var int DefenseItemClassID; var int ShieldItemClassID; // removed by lancelot // For halloween event - lancelot 2009. 10. 7 //var int BR_HairItemClassID; var float AttackSpeedRate; var float NonAttackSpeedRate; var float SkillSpeedRate; var float PhysicalSkillSpeedRate; var float MoveTimer; var float MoveToPawnAdjust; var int MoveEmergencyLevel; var int WalkAnimFrameInMove; var float ValidateLocationMoveTime; var float ValidateLocationSpeed; var int WantedYaw; var int TurningDir; var class DamageEffect; //#ifdef SHOULDER_EFFECT //var Emitter ShoulderEffect[2]; //#endif var float GroundMaxSpeed; var float GroundMinSpeed; var float WaterMaxSpeed; var float WaterMinSpeed; var float AirMaxSpeed; var float AirMinSpeed; var float HoverMaxSpeed; var float HoverMinSpeed; var enum EUpdateMovementAnimType { UM_NONE, UM_ONCE, UM_FORCE } UpdateMovementAnimType; enum WeaponType { WT_HAND, WT_1HS, WT_2HS, WT_DUAL, WT_POLE, WT_BOW, WT_THROW, WT_DUALFIST, //#ifdef L2_KAMAEL WT_CROSSBOW, WT_RAPIER, //#endif WT_DUALDAGGER }; //kurt ride temp enum RideType { RD_NONE, RD_STRIDER, RD_WYVERN, RD_WOLF, RD_TRANSFORM_HORSE, RD_TRANSFORM_LION, RD_TRANSFORM_SLEDGE, //#ifdef CT26P2_0825 RD_TRANSFORM_PLATFORM //#endif //CT26P2_0825 - gorillazin }; var pawn RidePawn; var RideType CurRideType; var WeaponType CurWeaponType; var bool bRide; var bool bDriver; var int VehicleType; enum FlyType { FLY_NONE, FLY_BIRD, FLY_FLOATING_A, FLY_FLOATING_B, FLY_SHUTTLE }; var FlyType FlyingType; var bool bFly; // #ifdef __L2 // idearain enum FishingType { FST_NONE, FST_WAIT, FST_BATTLE }; var bool bFish; var bool bBrightFloat; var FishingType CurFishingType; var actor FishLine; var L2Float FishFloat; var ViewportWindowController VWController; // #endif // #ifdef __L2 // idearain var float SkinNotifyElapsedTime; var float SkinNotifyNextStartTime; // #endif //#ifdef __L2 // kurt var int bDemageStatus; var float DemageDist; var bool bDemageAct; var bool bSpineRotation; var bool bTargetSpineRotation; var transient bool bCreatedResource; var transient vector EffTargetLocation; var transient int LoadingResourceRef; // by nonblock var(CurveProjectile) int Curvature; // °î·ü var(CurveProjectile) float WaistAngle; // Çãž®°¢ // by idearain(Œø°£À̵¿) var vector WarpDest; var bool IsWarpDest; var bool bReadyToWarp; var bool bIgnoreToWarp; //solasys-ºž¹°»óÀÚ ŸÖµéÀÌ ¹°ŒÓ¿¡Œ­ run ŸÖŽÏžÞÀÌŒÇÀ» Çϱ⠶§¹®¿¡ ŒöÁ€ÇغŒ¶ó±ž var bool bTreasureMimic; var bool bTreasureMimicEven; // by nonblock(Swimming) // var transient bool bForceSwim; var transient bool bHitGroundInWater; // only valid if physics == PHYS_Swimming var transient bool bSwimAfloat; var transient int Environment; //var float SpawnBubblePeriod; var transient rotator LastFootRot; //#ifdef L2_KAMAEL solasys var localized name TurnAnimName[11]; //ÈžÀü var localized name WalkAnimName[11]; //°È±â var localized name RunAnimName[11]; //¶Ù±â var localized name FallAnimName[11]; //Ã߶ô var localized name DamageFlyAnimName[11]; //µ¥¹ÌÁöÁ¡ÇÁ var localized name JumpAnimName[11]; //Á¡ÇÁ var localized name BJumpAnimName[11]; //µÚ·ÎÁ¡ÇÁ var localized name WaitAnimName[11]; //ÀϹݎë±â var localized name AtkWaitAnimName[11]; //°ø°ÝŽë±â var localized name SitAnimName[11]; //Œ­ÀÖŽÙ°¡ ŸÉŽÂžðŒÇ var localized name SitWaitAnimName[11]; //¹ÙŽÚ¿¡ ŸÉŸÆŒ­ Žë±âÁß var localized name StandAnimName[11]; //ŸÉŸÆ ÀÖŽÙ°¡ Œ­ŽÂ žðŒÇ var localized name DeathStandAnimName[11]; //Ž©¿ö ÀÖŽÙ°¡ Œ­ŽÂ žðŒÇ var localized name ChairSitAnimName[11]; //ÀÇÀÚ¿¡ ŸÉŽÂ žðŒÇ var localized name ChairWaitAnimName[11]; //ÀÇÀÚ¿¡ ŸÉŸÆŒ­ Žë±âÁß var localized name ChairStandAnimName[11]; //ÀÇÀÚ¿¡Œ­ ÀÏŸî³² var localized name StunAnimName[11]; //œºÅÏ, »óÅÂÀÌ»ó var localized name Atk01AnimName[11]; //°ø°Ý1(Áß) var localized name Atk02AnimName[11]; //°ø°Ý2(Áß) var localized name Atk03AnimName[11]; //°ø°Ý3(Áß) var localized name AtkUpAnimName[11]; //°ø°Ý4(»ó) var localized name AtkDownAnimName[11]; //°ø°Ý5(ÇÏ) var localized name SpAtk01AnimName[11]; //ƯŒö°ø°Ý1 var localized name SpAtk02AnimName[11]; //ƯŒö°ø°Ý2 var localized name SpAtk03AnimName[11]; //ƯŒö°ø°Ý3 var localized name SpAtk04AnimName[11]; //ƯŒö°ø°Ý4 var localized name SpAtk05AnimName[11]; //ƯŒö°ø°Ý5 var localized name SpAtk06AnimName[11]; //ƯŒö°ø°Ý6 var localized name SpAtk07AnimName[11]; //ƯŒö°ø°Ý7 var localized name SpAtk08AnimName[11]; //ƯŒö°ø°Ý8 var localized name SpAtk09AnimName[11]; //ƯŒö°ø°Ý9 var localized name SpAtk10AnimName[11]; //ƯŒö°ø°Ý10 var localized name SpAtk11AnimName[11]; //ƯŒö°ø°Ý11 var localized name SpAtk12AnimName[11]; //ƯŒö°ø°Ý12 var localized name SpAtk13AnimName[11]; //ƯŒö°ø°Ý13 var localized name SpAtk14AnimName[11]; //ƯŒö°ø°Ý14 var localized name SpAtk15AnimName[11]; //ƯŒö°ø°Ý15 var localized name SpAtk16AnimName[11]; //ƯŒö°ø°Ý16 var localized name SpAtk17AnimName[11]; var localized name SpAtk18AnimName[11]; var localized name SpAtk19AnimName[11]; var localized name SpAtk20AnimName[11]; var localized name SpAtk21AnimName[11]; var localized name SpAtk22AnimName[11]; var localized name SpAtk23AnimName[11]; var localized name SpAtk24AnimName[11]; var localized name SpAtk25AnimName[11]; var localized name SpAtk26AnimName[11]; var localized name SpAtk27AnimName[11]; //ÃãžðŒÇ var localized name SpAtk28AnimName[11]; var localized name ShieldAtkAnimName[11]; //¹æÆзΠġ±â var localized name DefenceAnimName[11]; //¹æÆйæŸî°ø°Ý var localized name DodgeAnimName[11]; //ÈžÇÇÇÏžç°ø°Ý var localized name DeathAnimName[11]; //»çžÁÇØŒ­ Ž¯ŽÂ žðŒÇ var localized name DeathWaitAnimName[11]; //Ž©¿öÀÖŽÂ žðŒÇ var localized name SitDeathAnimName[11]; //ŸÉŸÆŒ­ Á׎žðŒÇ var localized name SitDeathWaitAnimName[11]; //ŸÉŸÆŒ­ ÁןîÀÖŽÂ žðŒÇ var localized name DamageAnimName[11]; //µ¥¹ÌÁö var localized name CastShortAnimName[11]; //ž¶¹ýÁÖ¹®1 (1Ãʹ̞ž) var localized name CastMidAnimName[11]; //ž¶¹ýÁÖ¹®2 (2-5ÃÊ) var localized name CastLongAnimName[11]; //ž¶¹ýÁÖ¹®3 (5ÃÊÀÌ»ó) var localized name CastEndAnimName[11]; //ž¶¹ýÁ€Áö var localized name MagicThrowAnimName[11]; //ž¶¹ý»ç¿ë1 (ŽøÁö±â) var localized name MagicShotAnimName[11]; //ž¶¹ý»ç¿ë2 (¹ß»ç) var localized name MagicNoTargetAnimName[11]; //ž¶¹ý»ç¿ë3 (Åž°ÙŸøÀœ) var localized name MagicFriendAnimName[11]; //ž¶¹ý»ç¿ë4 (ŸÆ±º¿¡°Ô) var localized name PicItemAnimName[11]; //ŸÆÀÌÅÛ Áݱâ var localized name ThrowAnimName[11]; //ŸÆÀÌÅÛ ŽøÁö±â var localized name PcSocialAnimName[20]; //PCŒÒŒÈ Æ÷Áî(ŒÒŒÈ) var localized name NpcSocialAnimName[10]; //NPCŒÒŒÈ Æ÷Áî(ŒÒŒÈ) var localized name RiderWaitAnimName[11]; //¿ëž¶ Žë±â var localized name RiderAtkAnimName[11]; //¿ëž¶ °ø°Ý var localized name RiderRunAnimName[11]; //¿ëž¶ ¶Ù±â var localized name RiderDeathWaitAnimName[11]; //¿ëž¶ Ž©¿öÀÖ±â var localized name RiderDeathAnimName[11]; //¿ëž¶ »çžÁÇØŒ­ Ž¯±â var localized name SwimDeathAnimName[11]; //Œö¿µÁß »çžÁ var localized name SwimAnimName[11]; //Œö¿µ var localized name SwimWaitAnimName[11]; //Œö¿µ Žë±â var localized name SwimDeathWaitAnimName[11]; //Œö¿µ »çžÁÈÄ Žë±â var localized name SwimAttackWaitAnimName[11]; //Œö¿µ °ø°ÝŽë±â var localized name FishStartAnimName; // ³¬œÃ œÃÀÛ var localized name FishWaitAnimName; // ³¬œÃ Žë±â var localized name FishControlAnimName; // ³¬œÃ ÄÁÆ®·Ñ var localized name FishPullAnimName; // ³¬œÃ Žç±â±â var localized name FishEndAnimName; // ³¬œÃ °È±â // by anima - Ä«ž¶¿€ Àü¿ëÀž·Î Ãß°¡µÈ Animataion Sequence var localized name CastShort2AnimName[11]; var localized name CastMid2AnimName[11]; var localized name CastLong2AnimName[11]; var localized name CastEnd2AnimName[11]; // by ttmayrin - AirShip¿îÀü,ŽëÆ÷¿ë Animation Sequence var localized name SocialCannonAnimName; //AirShip ŽëÆ÷ÀâŽÂ ÀÚŒŒ var localized name SocialOperateAnimName; //AirShip Å°ÀâŽÂ ÀÚŒŒ var localized name RiseAnimName; //»óœÂ var localized name GlideAnimName; //È°°ø var localized name ShieldWaitAnimName; //¹æÆÐ Âø¿ëœÃ Žë±â var localized name SpecialSocial1AnimName; // GM º¯œÅÃŒ°¡ ŒÒŒÈŸ×ŒÇÀÌ ÇÊ¿äÇÏŽÙ°í ÇØŒ­ œºÅ³·Î óž® - lancelot 2010. 5. 12. var localized name SpecialSocial2AnimName; var localized name SpecialSocial3AnimName; var localized name DashWaitAnimName; var localized name DashAnimName; var localized name DashImpactAnimName; // ž¶¹ýijœºÆà AÁ¶ÇÕºÎÅÍ L±îÁö ·£Žý ¹ßµ¿À» À§ÇØ Ãß°¡ ŸÖŽÏžÞÀÌŒÇ 7°³. ArrayžŠ Žõ ÀÌ»ó Ãß°¡ÇÏžé ÄÄÆÄÀÏÀÌ ŸÈµÇŒ­ ÀÌ·± ¹æœÄÀ» ÇßÀœ. lancelot 2009. 10. 19. struct native RandomAnimName { var localized name CastShortAnimNameA[11]; var localized name CastMidAnimNameA[11]; var localized name CastLongAnimNameA[11]; var localized name CastEndAnimNameA[11]; var localized name MagicNoTargetAnimNameA[11]; var localized name MagicShotAnimNameA[11]; var localized name MagicThrowAnimNameA[11]; }; var RandomAnimName RandomAnim; var localized float WalkAnimRate[11]; //°È±â var localized float RunAnimRate[11]; //¶Ù±â var localized float Atk01AnimRate[11]; //°ø°Ý1(Áß) var localized float Atk02AnimRate[11]; //°ø°Ý2(Áß) var localized float Atk03AnimRate[11]; //°ø°Ý3(Áß) var localized float AtkUpAnimRate[11]; //°ø°Ý4(»ó) var localized float AtkDownAnimRate[11]; //°ø°Ý5(ÇÏ) var localized float SpAtk01AnimRate[11]; //ƯŒö°ø°Ý1 var localized float SpAtk02AnimRate[11]; //ƯŒö°ø°Ý2 var localized float SpAtk03AnimRate[11]; //ƯŒö°ø°Ý3 var localized float SpAtk04AnimRate[11]; //ƯŒö°ø°Ý4 var localized float ShieldAtkAnimRate[11]; //¹æÆзΠġ±â var localized float CastShortAnimRate[11]; //ž¶¹ýÁÖ¹®1 (1Ãʹ̞ž) var localized float CastMidAnimRate[11]; //ž¶¹ýÁÖ¹®2 (2-5ÃÊ) var localized float CastLongAnimRate[11]; //ž¶¹ýÁÖ¹®3 (5ÃÊÀÌ»ó) var localized float CastShortEndAnimRate[11]; //ž¶¹ýÁ€Áö var localized float MagicThrowAnimRate[11]; //ž¶¹ý»ç¿ë1 (ŽøÁö±â) var localized float MagicShotAnimRate[11]; //ž¶¹ý»ç¿ë2 (¹ß»ç) var localized float MagicNoTargetAnimRate[11]; //ž¶¹ý»ç¿ë3 (Åž°ÙŸøÀœ) var localized float MagicFriendAnimRate[11]; //ž¶¹ý»ç¿ë4 (ŸÆ±º¿¡°Ô) var localized float ThrowAnimRate[11]; //ŸÆÀÌÅÛ ŽøÁö±â var localized float SitAnimRate; //ŸÉ±â var localized float StandAnimRate; //Œ­±â //#endif var localized int PcSocialHideRightWeapon[20]; var localized int PcSocialHideLeftWeapon[20]; // flagoftiger var localized int NpcSocialHideRightWeapon[10]; var localized int NpcSocialHideLeftWeapon[10]; var localized int PcCastHideRightWeapon; var localized int PcCastHideLeftWeapon; // Hunter End var Controller Controller; // cache net relevancy test var float NetRelevancyTime; var playerController LastRealViewer; var actor LastViewer; // Physics related flags. var bool bJustLanded; // used by eyeheight adjustment var bool bUpAndOut; // used by swimming var bool bIsWalking; // currently walking (can't jump, affects animations) var bool bWarping; // Set when travelling through warpzone (so shouldn't telefrag) var bool bWantsToCrouch; // if true crouched (physics will automatically reduce collision height to CrouchHeight) var const bool bIsCrouched; // set by physics to specify that pawn is currently crouched var const bool bTryToUncrouch; // when auto-crouch during movement, continually try to uncrouch var() bool bCanCrouch; // if true, this pawn is capable of crouching var bool bCrawler; // crawling - pitch and roll based on surface pawn is on var const bool bReducedSpeed; // used by movement natives var bool bJumpCapable; var bool bCanJump; // movement capabilities - used by AI var bool bCanWalk; var bool bCanSwim; var bool bCanFly; var bool bCanClimbLadders; var bool bCanStrafe; var bool bCanDoubleJump; var bool bAvoidLedges; // don't get too close to ledges var bool bStopAtLedges; // if bAvoidLedges and bStopAtLedges, Pawn doesn't try to walk along the edge at all var bool bNoJumpAdjust; // set to tell controller not to modify velocity of a jump/fall var bool bCountJumps; // if true, inventory wants message whenever this pawn jumps var const bool bSimulateGravity; // simulate gravity for this pawn on network clients when predicting position (true if pawn is walking or falling) var bool bUpdateEyeheight; // if true, UpdateEyeheight will get called every tick var bool bIgnoreForces; // if true, not affected by external forces var const bool bNoVelocityUpdate; // used by C++ physics var bool bCanWalkOffLedges; // Can still fall off ledges, even when walking (for Player Controlled pawns) var bool bSteadyFiring; // used for third person weapon anims/effects var bool bCanBeBaseForPawns; // all your 'base', are belong to us var bool bClientCollision; // used on clients when temporarily turning off collision var const bool bSimGravityDisabled; // used on network clients var bool bDirectHitWall; // always call pawn hitwall directly (no controller notifyhitwall) // used by dead pawns (for bodies landing and changing collision box) var bool bThumped; var bool bInvulnerableBody; // AI related flags var bool bIsFemale; var bool bAutoActivate; // if true, automatically activate Powerups which have their bAutoActivate==true var bool bCanPickupInventory; // if true, will pickup inventory when touching pickup actors var bool bUpdatingDisplay; // to avoid infinite recursion through inventory setdisplay var bool bAmbientCreature; // AIs will ignore me var(AI) bool bLOSHearing; // can hear sounds from line-of-sight sources (which are close enough to hear) // bLOSHearing=true is like UT/Unreal hearing var(AI) bool bSameZoneHearing; // can hear any sound in same zone (if close enough to hear) var(AI) bool bAdjacentZoneHearing; // can hear any sound in adjacent zone (if close enough to hear) var(AI) bool bMuffledHearing; // can hear sounds through walls (but muffled - sound distance increased to double plus 4x the distance through walls var(AI) bool bAroundCornerHearing; // Hear sounds around one corner (slightly more expensive, and bLOSHearing must also be true) var(AI) bool bDontPossess; // if true, Pawn won't be possessed at game start var bool bAutoFire; // used for third person weapon anims/effects var bool bRollToDesired; // Update roll when turning to desired rotation (normally false) var bool bIgnorePlayFiring; // if true, ignore the next PlayFiring() call (used by AnimNotify_FireWeapon) var bool bCachedRelevant; // network relevancy caching flag var bool bUseCompressedPosition; // use compressed position in networking - true unless want to replicate roll, or very high velocities var globalconfig bool bWeaponBob; var bool bHideRegularHUD; var bool bSpecialHUD; var bool bSpecialCalcView; // If true, the Controller controlling this pawn will call 'SpecialCalcView' to find camera pos. var bool bNoWeaponFiring; var bool bIsTyping; var byte FlashCount; // used for third person weapon anims/effects // AI basics. var byte Visibility; //How visible is the pawn? 0=invisible, 128=normal, 255=highly visible var float DesiredSpeed; var float MaxDesiredSpeed; var(AI) name AIScriptTag; // tag of AIScript which should be associated with this pawn var(AI) float HearingThreshold; // max distance at which a makenoise(1.0) loudness sound can be heard var(AI) float Alertness; // -1 to 1 ->Used within specific states for varying reaction to stimuli var(AI) float SightRadius; // Maximum seeing distance. var(AI) float PeripheralVision; // Cosine of limits of peripheral vision. var() float SkillModifier; // skill modifier (same scale as game difficulty) var const float AvgPhysicsTime; // Physics updating time monitoring (for AI monitoring reaching destinations) var float MeleeRange; // Max range for melee attack (not including collision radii) var NavigationPoint Anchor; // current nearest path; var const NavigationPoint LastAnchor; // recent nearest path var float FindAnchorFailedTime; // last time a FindPath() attempt failed to find an anchor. var float LastValidAnchorTime; // last time a valid anchor was found var float DestinationOffset; // used to vary destination over NavigationPoints var float NextPathRadius; // radius of next path in route var vector SerpentineDir; // serpentine direction var float SerpentineDist; var float SerpentineTime; // how long to stay straight before strafing again var const float UncrouchTime; // when auto-crouch during movement, continually try to uncrouch once this decrements to zero var float SpawnTime; // Movement. var float GroundSpeed; // The maximum ground speed. var float WaterSpeed; // The maximum swimming speed. var float AirSpeed; // The maximum flying speed. var float LadderSpeed; // Ladder climbing speed var float AccelRate; // max acceleration rate var float JumpZ; // vertical acceleration w/ jump var float AirControl; // amount of AirControl available to the pawn var float WalkingPct; // pct. of running speed that walking speed is var float CrouchedPct; // pct. of running speed that crouched walking speed is var float MaxFallSpeed; // max speed pawn can land without taking damage (also limits what paths AI can use) var vector ConstantAcceleration; // acceleration added to pawn when falling // Player info. var string OwnerName; // Name of owning player (for save games, coop) var travel Weapon Weapon; // The pawn's current weapon. var Weapon PendingWeapon; // Will become weapon once current weapon is put down var travel Powerups SelectedItem; // currently selected inventory item var float BaseEyeHeight; // Base eye height above collision center. var float EyeHeight; // Current eye height, adjusted for bobbing and stairs. var const vector Floor; // Normal of floor pawn is standing on (only used by PHYS_Spider and PHYS_Walking) var float SplashTime; // time of last splash var float CrouchHeight; // CollisionHeight when crouching var float CrouchRadius; // CollisionRadius when crouching var float OldZ; // Old Z Location - used for eyeheight smoothing var PhysicsVolume HeadVolume; // physics volume of head var travel int Health; // Health: 100 = normal maximum var float BreathTime; // used for getting BreathTimer() messages (for no air, etc.) var float UnderWaterTime; // how much time pawn can go without air (in seconds) var float LastPainTime; // last time pawn played a takehit animation (updated in PlayHit()) var class ReducedDamageType; // which damagetype this creature is protected from (used by AI) var float HeadScale; //#ifdef __L2 // zodiac var PhysicsVolume FootVolume; // physics volume of Foot //#endif // Sound and noise management // remember location and position of last noises propagated var const vector noise1spot; var const float noise1time; var const pawn noise1other; var const float noise1loudness; var const vector noise2spot; var const float noise2time; var const pawn noise2other; var const float noise2loudness; var float LastPainSound; // view bob var globalconfig float Bob; var float LandBob, AppliedBob; var float bobtime; var vector WalkBob; var float SoundDampening; var float DamageScaling; var localized string MenuName; // Name used for this pawn type in menus (e.g. player selection) // shadow decal var Projector Shadow; //#ifdef __L2 //kurt var ShadowProjector Shadow1; var bool bIgnoreShadowClipping; var bool bSameAnim; var bool bLongDeathWaitAnim; var bool bShowArrow; var L2Alarm OverHeadAlarm; var vector ArrowTarget; var Emitter HungerEmitter; struct NPawnLightPtr { var int Ptr; }; struct NAbnormalStatPtr { var int Ptr; }; struct NAppendixEffectPtr { var int Ptr; }; struct NWeaponEffectPtr { var int Ptr; }; struct NCursedWeaponEffectPtr { var int Ptr; }; struct NBoneScalerStatPtr { var int Ptr; }; var array NPawnLight; var array NAbnormalStat; var array NBoneScalerStat; var array NCubicArray; var NAgathion Agathion; var array NAppendixEffect; var array NWeaponEffect; var Emitter NHeroEffect; var NCursedWeaponEffectPtr NCursedWeaponEffect; var array NDecoEffect; var Emitter NSpoilEffect; var array BoneAttachedEffects; //[QuestMark] - by jin var Emitter NQuestMarkEffect; //#ifdef BRANCH_MERGE //branch var array BR_NAbnormalStat; var bool br_bChangedWeaponEffect; //end of branch //endif var enum ESamePoseStat { SPS_NONE, SPS_ONCE, SPS_TWICE } SamePoseStat; // blood effect var class BloodEffect; var class LowGoreBlood; var class ControllerClass; // default class to use when pawn is controlled by AI (can be modified by an AIScript) var PlayerReplicationInfo PlayerReplicationInfo; var LadderVolume OnLadder; // ladder currently being climbed var name LandMovementState; // PlayerControllerState to use when moving on land or air var name WaterMovementState; // PlayerControllerState to use when moving in water var PlayerStart LastStartSpot; // used to avoid spawn camping var float LastStartTime; //__L2 kinggoat var int ComboAnimPlayNum; var name ComboAnimPlayName[8]; var int ComboAnimPlayCount; //End // Animation status var name AnimAction; // use for replicating anims // Animation updating by physics FIXME - this should be handled as an animation object // Note that animation channels 2 through 11 are used for animation updating var vector TakeHitLocation; // location of last hit (for playing hit/death anims) var class HitDamageType; // damage type of last hit (for playing hit/death anims) var vector TearOffMomentum; // momentum to apply when torn off (bTearOff == true) var bool bPhysicsAnimUpdate; var bool bWasCrouched; var bool bWasWalking; var bool bWasOnGround; var bool bInitializeAnimation; var bool bPlayedDeath; var EPhysics OldPhysics; var float OldRotYaw; // used for determining if pawn is turning var vector OldAcceleration; var float BaseMovementRate; // FIXME - temp - used for scaling movement var name MovementAnims[4]; // Forward, Back, Left, Right var name TurnLeftAnim; var name TurnRightAnim; // turning anims when standing in place (scaled by turn speed) var(AnimTweaks) float BlendChangeTime; // time to blend between movement animations var float MovementBlendStartTime; // used for delaying the start of run blending var float ForwardStrafeBias; // bias of strafe blending in forward direction var float BackwardStrafeBias; // bias of strafe blending in backward direction // #ifdef __L2 unbalans var String ChatMsg; // #endif //#ifdef __L2 //kurt var vector HitLocation; //hit watervolume Hit Pos var float HitWaterEffectTimer; var transient float RecentHitWaterInterval; // by nonblock //#endif // #ifdef __L2 yohan //var int m_PrivateStoreChatMsg; var string PrivateStoreChatMsg; var string PrivateBuyChatMsg; var string PrivateStoreWholeChatMsg; // lancelot 2007. 1. 16 // #endif // #ifdef __L2 unbalans var string RecipeShopMsg; var INT64 AbnormalVisualEffectType; var int AbnormalVisualEffectStopMoveFlag; var float AbnormalVisualEffectLifeTime; var int AppendixEffectType; // #endif //#ifdef BRANCH_MERGE //branch var int BR_ExtraVisualEffectType; //end of branch //#endif // #ifdef __L2 kurt var MarkProjector Mark; var rotator TargetDirSpineRot; var bool bNeedTurnAnim; // #endif // #ifdef __L2 // zodiac var bool bPlayerCharacter; // ÀÌ º¯ŒöµéÀº CharacteržŠ Mouse·Î Œ±ÅÃÇÒ¶§ Ÿ²ÀÌŽÂ º¯Œö ÀÌŽÙ. var float BoundRadius; // #endif // #ifdef __L2 // zodiac var float fBlinkTime; var bool bShowGuilty; // #endif // #ifdef __L2 // elsacred var const float fTotalAcceleratedBlickTime; var const float fInitBlinkGap; var const float flastBlinkGap; var float fAcceleratedRate; var float fCurBlinkGap; var float fCurAcceleratedBlinkTime; // #endif // #ifdef __L2 // zodiac var bool bLobbyCharacter; var name LobbyWaitAnim; var float NameOffset; var float DeadNameOffset; // #endif // #ifdef __L2 // idearain var float fMaxAirSpeed; var float fMinAirSpeed; var float fAirSpeedAccel; // AirSpeedÀÇ ÃÊŽç Áõ°š·® var int CameraWalkingAccelMode; // CameraWalkingMode ¿¡Œ­ °¡ŒÓµµ žðµå var float fMaxAirSpeedIncRate; // fMaxAirSpeedÀÇ ÃÊŽç Áõ°š·® // #endif // #ifdef __L2 // by nonblock var float CastingEffectScale; var vector CastingEffectOffset; var bool bUseDarkEffect; var bool bIsHero; var bool bHeroWeapon; // #endif // #if __L2 // gigadeth var bool bRendered; // #endif // #ifdef __L2 // idearain - ž¶°Ë ÀÚž®ÃŒ ·¹º§º° ÀÌÆåÆ®žŠ ºž¿©ÁÖ±â À§ÇØŒ­ var bool bIsCursedWeapon; var int CursedWeaponLevel; // #endif // #ifdef __L2 // flagoftiger var int SoundableBootsClassID; // Soundable Boots Class ID // #endif var int LastAttackItemClassID; var int AttackItemEnchantedValue; // #ifdef __L2 // idearain - ¹«±â º£ž®¿¡ÀÌŒÇ ÀÌÆåÆ®žŠ ºž¿©ÁÖ±â À§ÇØŒ­ var int AttackItemVariationOption1; var int AttackItemVariationOption2; // #endif // #ifdef __L2 // flagoftiger var(Collision) const float OriCollisionRadius; // Radius of collision cyllinder. var(Collision) const float OriCollisionHeight; // Half-height cyllinder. var vector HelmMeshOrigin; var rotator HelmMeshRotOrigin; var vector HairAcceMeshOrigin[2]; var rotator HairAcceMeshRotOrigin[2]; // #endif // #ifdef __L2 // ttmayrin struct native NCollisionInfo { var vector RelativeLocation; var float CollisionRadius; var float CollisionHeight; }; var(Collision) array ExCollisionInfos; // Extra Collision Infomations. // #endif // #ifdef __L2 // yohan var array NQuestList; // #endif // [QuestMark] - by jin var array NQuestStepList; // flagoftiger - 0ºžŽÙ Å©žé ÀÚµ¿Åž°ÔÆÃÀ» ÇÏÁö ŸÊŽÂŽÙ. (TIck ¿¡Œ­ ÁÙ¿©ÁØŽÙ.) var float fAutoTargetPendingTime; var pawn AutoTargetPawn; // flagoftiger - SetPawnResource°¡ ÇÊ¿äÇÑÁö (µðÆúÆ®ŽÂ true Çѹø ÇÏ°í ³ªžé false·ÎžžµçŽÙ.) var bool bNeedSetPawnResource; // SetPawnResource °¡ ºÒž®žé true°¡ µÈŽÙ. var bool bNeedPostSetPawnResourceProcess; // #ifdef __L2 // anima - º¯œÅ var bool bPendingTransform; // #endif var bool bColosseumSelected; var transient CompressedPosition PawnPosition; var int ColosseumTeam; var int ColosseumPartyNum; // ttmayrin - Looping Skill Sound List var array SkillLoopingSoundList; // #ifdef __L2 // anima - ÀÜ»ó struct native NIllusionParam { var float RemainTime; var float SpawnDelay; var vector SpawnLocation; var float AnimFrame; var name SeqName; var rotator Rotation; var color IllusionColor; var bool bUseIllusionColor; }; struct native NIllusionPawnParam { var pawn IllusionPawn; var float RemainTime; var float TotalTime; }; var array NIllusionSpawnList; var array NIllusionPawnList; // #endif // #ifdef __L2 // anima - µ¹°Ý var name ChargeAniName; // #endif // #ifdef __L2 // anima var bool bChangeWeapon; // #endif // 2008/01/17 Default mesh information. // bUseDefaultMesh is false for most of the time. The only case it is set to true // is when Pawn is placed within the editor. // - NeverDie var bool bUseDefaultMesh; // anima - equip item var int EquipItem; var bool bDamageEffectRelativeCollisionRadius;// flagoftiger - for Location offset of Attacked Effect UnPawn.cpp APawn::AssociateAttackedNotify() var bool HasDamageEffectOffsetForLargePawn; // lancelot - damage effect offset for large pawn var float DamageEffectOffset; //2009/10/13 by elsacred // PawnÀÇ»óÅ°¡ ¹Ù²îžé È£Ãâ.. var int PawnState; // #ifdef __L2 lancelot 2009. 11. 20. actor¿¡ ÀÖŽø°É ¿Å°Ü¿È var bool bHideRightHandMesh; var bool bHideLeftHandMesh; // #endif //#ifdef BRANCH_MERGE //branch var bool bBR_ShowTargetName; //end of branch //#endif replication { // Variables the server should send to the client. reliable if( bNetDirty && (Role==ROLE_Authority) ) bSimulateGravity, bIsCrouched, bIsWalking, bIsTyping, PlayerReplicationInfo, AnimAction, HitDamageType, TakeHitLocation,HeadScale; reliable if( bTearOff && bNetDirty && (Role==ROLE_Authority) ) TearOffMomentum; reliable if ( bNetDirty && !bNetOwner && (Role==ROLE_Authority) ) bSteadyFiring; reliable if( bNetDirty && bNetOwner && Role==ROLE_Authority ) Controller,SelectedItem, GroundSpeed, WaterSpeed, AirSpeed, AccelRate, JumpZ, AirControl; reliable if( bNetDirty && Role==ROLE_Authority ) Health; unreliable if ( !bNetOwner && Role==ROLE_Authority ) PawnPosition; // replicated functions sent to server by owning client reliable if( Role 0 ) { SetCollision(true,true,true); SetPhysics(PHYS_Falling); if ( IsHumanControlled() ) Controller.GotoState(LandMovementState); } } function bool CanGrabLadder() { return ( bCanClimbLadders && (Controller != None) && (Physics != PHYS_Ladder) && ((Physics != Phys_Falling) || (abs(Velocity.Z) <= JumpZ)) ); } event SetWalking(bool bNewIsWalking) { if ( bNewIsWalking != bIsWalking ) { bIsWalking = bNewIsWalking; ChangeAnimation(); } } function bool CanSplash() { if ( (Level.TimeSeconds - SplashTime > 0.25) && ((Physics == PHYS_Falling) || (Physics == PHYS_Flying)) && (Abs(Velocity.Z) > 100) ) { SplashTime = Level.TimeSeconds; return true; } return false; } function EndClimbLadder(LadderVolume OldLadder) { if ( Controller != None ) Controller.EndClimbLadder(); if ( Physics == PHYS_Ladder ) SetPhysics(PHYS_Falling); } function ClimbLadder(LadderVolume L) { OnLadder = L; SetRotation(OnLadder.WallDir); SetPhysics(PHYS_Ladder); if ( IsHumanControlled() ) Controller.GotoState('PlayerClimbing'); } /* DisplayDebug() list important actor variable on canvas. Also show the pawn's controller and weapon info */ simulated function DisplayDebug(Canvas Canvas, out float YL, out float YPos) { local string T; Super.DisplayDebug(Canvas, YL, YPos); Canvas.SetDrawColor(255,255,255); Canvas.DrawText("Animation Action "$AnimAction$" Health "$Health); YPos += YL; Canvas.SetPos(4,YPos); Canvas.DrawText("Anchor "$Anchor$" Serpentine Dist "$SerpentineDist$" Time "$SerpentineTime); YPos += YL; Canvas.SetPos(4,YPos); T = "Floor "$Floor$" DesiredSpeed "$DesiredSpeed$" Crouched "$bIsCrouched$" Try to uncrouch "$UncrouchTime; if ( (OnLadder != None) || (Physics == PHYS_Ladder) ) T=T$" on ladder "$OnLadder; Canvas.DrawText(T); YPos += YL; Canvas.SetPos(4,YPos); Canvas.DrawText("EyeHeight "$Eyeheight$" BaseEyeHeight "$BaseEyeHeight$" Physics Anim "$bPhysicsAnimUpdate); YPos += YL; Canvas.SetPos(4,YPos); if ( Controller == None ) { Canvas.SetDrawColor(255,0,0); Canvas.DrawText("NO CONTROLLER"); YPos += YL; Canvas.SetPos(4,YPos); } else Controller.DisplayDebug(Canvas,YL,YPos); if ( Weapon == None ) { Canvas.SetDrawColor(0,255,0); Canvas.DrawText("NO WEAPON"); YPos += YL; Canvas.SetPos(4,YPos); } else Weapon.DisplayDebug(Canvas,YL,YPos); } // // Compute offset for drawing an inventory item. // simulated function vector CalcDrawOffset(inventory Inv) { local vector DrawOffset; if ( Controller == None ) return (Inv.PlayerViewOffset >> Rotation) + BaseEyeHeight * vect(0,0,1); DrawOffset = ((0.9/Weapon.DisplayFOV * 100 * ModifiedPlayerViewOffset(Inv)) >> GetViewRotation() ); if ( !IsLocallyControlled() ) DrawOffset.Z += BaseEyeHeight; else { DrawOffset.Z += EyeHeight; if( bWeaponBob ) DrawOffset += WeaponBob(Inv.BobDamping); } return DrawOffset; } function vector ModifiedPlayerViewOffset(inventory Inv) { return Inv.PlayerViewOffset; } function vector WeaponBob(float BobDamping) { Local Vector WBob; WBob = BobDamping * WalkBob; WBob.Z = (0.45 + 0.55 * BobDamping) * WalkBob.Z; return WBob; } function CheckBob(float DeltaTime, vector Y) { local float Speed2D; if( !bWeaponBob ) { BobTime = 0; WalkBob = Vect(0,0,0); return; } Bob = FClamp(Bob, -0.01, 0.01); if (Physics == PHYS_Walking ) { Speed2D = VSize(Velocity); if ( Speed2D < 10 ) BobTime += 0.2 * DeltaTime; else BobTime += DeltaTime * (0.3 + 0.7 * Speed2D/GroundSpeed); WalkBob = Y * Bob * Speed2D * sin(8 * BobTime); AppliedBob = AppliedBob * (1 - FMin(1, 16 * deltatime)); WalkBob.Z = AppliedBob; if ( Speed2D > 10 ) WalkBob.Z = WalkBob.Z + 0.75 * Bob * Speed2D * sin(16 * BobTime); if ( LandBob > 0.01 ) { AppliedBob += FMin(1, 16 * deltatime) * LandBob; LandBob *= (1 - 8*Deltatime); } } else if ( Physics == PHYS_Swimming ) { Speed2D = Sqrt(Velocity.X * Velocity.X + Velocity.Y * Velocity.Y); WalkBob = Y * Bob * 0.5 * Speed2D * sin(4.0 * Level.TimeSeconds); WalkBob.Z = Bob * 1.5 * Speed2D * sin(8.0 * Level.TimeSeconds); } else { BobTime = 0; WalkBob = WalkBob * (1 - FMin(1, 8 * deltatime)); } } //*************************************** // Interface to Pawn's Controller // return true if controlled by a Player (AI or human) simulated function bool IsPlayerPawn() { return ( (Controller != None) && Controller.bIsPlayer ); } // return true if was controlled by a Player (AI or human) simulated function bool WasPlayerPawn() { return false; } // return true if controlled by a real live human simulated function bool IsHumanControlled() { return ( PlayerController(Controller) != None ); } // return true if controlled by local (not network) player simulated function bool IsLocallyControlled() { if ( Level.NetMode == NM_Standalone ) return true; if ( Controller == None ) return false; if ( PlayerController(Controller) == None ) return true; return ( Viewport(PlayerController(Controller).Player) != None ); } // return true if viewing this pawn in first person pov. useful for determining what and where to spawn effects simulated function bool IsFirstPerson() { local PlayerController PC; PC = PlayerController(Controller); return ( PC != None && !PC.bBehindView && Viewport(PC.Player) != None ); } simulated function rotator GetViewRotation() { if ( Controller == None ) return Rotation; return Controller.GetViewRotation(); } simulated function SetViewRotation(rotator NewRotation ) { if ( Controller != None ) Controller.SetRotation(NewRotation); } final function bool InGodMode() { return ( (Controller != None) && Controller.bGodMode ); } function bool NearMoveTarget() { if ( (Controller == None) || (Controller.MoveTarget == None) ) return false; return ReachedDestination(Controller.MoveTarget); } simulated final function bool PressingFire() { return ( (Controller != None) && (Controller.bFire != 0) ); } simulated final function bool PressingAltFire() { return ( (Controller != None) && (Controller.bAltFire != 0) ); } function Actor GetMoveTarget() { if ( Controller == None ) return None; return Controller.MoveTarget; } function SetMoveTarget(Actor NewTarget ) { if ( Controller != None ) Controller.MoveTarget = NewTarget; } function bool LineOfSightTo(actor Other) { return ( (Controller != None) && Controller.LineOfSightTo(Other) ); } simulated final function rotator AdjustAim(Ammunition FiredAmmunition, vector projStart, int aimerror) { if ( Controller == None ) return Rotation; return Controller.AdjustAim(FiredAmmunition, projStart, aimerror); } function Actor ShootSpecial(Actor A) { if ( !Controller.bCanDoSpecial || (Weapon == None) ) return None; Controller.FireWeaponAt(A); Controller.bFire = 0; return A; } /* return a value (typically 0 to 1) adjusting pawn's perceived strength if under some special influence (like berserk) */ function float AdjustedStrength() { return 0; } function HandlePickup(Pickup pick) { MakeNoise(0.2); if ( Controller != None ) Controller.HandlePickup(pick); } function ReceiveLocalizedMessage( class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { if ( PlayerController(Controller) != None ) PlayerController(Controller).ReceiveLocalizedMessage( Message, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject ); } event ClientMessage( coerce string S, optional Name Type ) { if ( PlayerController(Controller) != None ) PlayerController(Controller).ClientMessage( S, Type ); } function Trigger( actor Other, pawn EventInstigator ) { if ( Controller != None ) Controller.Trigger(Other, EventInstigator); } //*************************************** function bool CanTrigger(Trigger T) { return true; } function GiveWeapon(string aClassName ) { local class WeaponClass; local Weapon NewWeapon; WeaponClass = class(DynamicLoadObject(aClassName, class'Class')); if( FindInventoryType(WeaponClass) != None ) return; newWeapon = Spawn(WeaponClass); if( newWeapon != None ) newWeapon.GiveTo(self); } function SetDisplayProperties(ERenderStyle NewStyle, Material NewTexture, bool bLighting ) { Style = NewStyle; Texture = NewTexture; bUnlit = bLighting; if ( Weapon != None ) Weapon.SetDisplayProperties(Style, Texture, bUnlit); if ( !bUpdatingDisplay && (Inventory != None) ) { bUpdatingDisplay = true; Inventory.SetOwnerDisplay(); } bUpdatingDisplay = false; } function SetDefaultDisplayProperties() { Style = Default.Style; texture = Default.Texture; bUnlit = Default.bUnlit; if ( Weapon != None ) Weapon.SetDefaultDisplayProperties(); if ( !bUpdatingDisplay && (Inventory != None) ) { bUpdatingDisplay = true; Inventory.SetOwnerDisplay(); } bUpdatingDisplay = false; } function FinishedInterpolation() { DropToGround(); } function JumpOutOfWater(vector jumpDir) { Falling(); Velocity = jumpDir * WaterSpeed; Acceleration = jumpDir * AccelRate; velocity.Z = FMax(380,JumpZ); //set here so physics uses this for remainder of tick bUpAndOut = true; } /* Modify velocity called by physics before applying new velocity for this tick. Velocity,Acceleration, etc. have been updated by the physics, but location hasn't */ simulated event ModifyVelocity(float DeltaTime, vector OldVelocity); event FellOutOfWorld(eKillZType KillType) { if ( Role < ROLE_Authority ) return; if ( (Controller != None) && Controller.AvoidCertainDeath() ) return; Health = -1; if( KillType == KILLZ_Lava) Died( None, class'FellLava', Location ); else if(KillType == KILLZ_Suicide) Died( None, class'Fell', Location ); else { SetPhysics(PHYS_None); Died( None, class'Fell', Location ); } } /* ShouldCrouch() Controller is requesting that pawn crouch */ function ShouldCrouch(bool Crouch) { bWantsToCrouch = Crouch; } // Stub events called when physics actually allows crouch to begin or end // use these for changing the animation (if script controlled) event EndCrouch(float HeightAdjust) { EyeHeight -= HeightAdjust; OldZ += HeightAdjust; BaseEyeHeight = Default.BaseEyeHeight; } event StartCrouch(float HeightAdjust) { EyeHeight += HeightAdjust; OldZ -= HeightAdjust; BaseEyeHeight = FMin(0.8 * CrouchHeight, CrouchHeight - 10); } function RestartPlayer(); function AddVelocity( vector NewVelocity) { if ( bIgnoreForces ) return; if ( (Physics == PHYS_Walking) || (((Physics == PHYS_Ladder) || (Physics == PHYS_Spider)) && (NewVelocity.Z > Default.JumpZ)) ) SetPhysics(PHYS_Falling); if ( (Velocity.Z > 380) && (NewVelocity.Z > 0) ) NewVelocity.Z *= 0.5; Velocity += NewVelocity; } function KilledBy( pawn EventInstigator ) { local Controller Killer; Health = 0; if ( EventInstigator != None ) Killer = EventInstigator.Controller; Died( Killer, class'Suicided', Location ); } function TakeFallingDamage() { local float Shake, EffectiveSpeed; if (Velocity.Z < -0.5 * MaxFallSpeed) { if ( Role == ROLE_Authority ) { MakeNoise(1.0); if (Velocity.Z < -1 * MaxFallSpeed) { EffectiveSpeed = Velocity.Z; if ( TouchingWaterVolume() ) EffectiveSpeed += 100; if ( EffectiveSpeed < -1 * MaxFallSpeed ) TakeDamage(-100 * (EffectiveSpeed + MaxFallSpeed)/MaxFallSpeed, None, Location, vect(0,0,0), class'Fell'); if ( Controller != None ) { Shake = FMin(1, -1 * Velocity.Z/MaxFallSpeed); Controller.ShakeView(0.175 + 0.1 * Shake, 850 * Shake, Shake * vect(0,0,1.5), 120000, vect(0,0,10), 1); } } } } else if (Velocity.Z < -1.4 * JumpZ) MakeNoise(0.5); } function ClientReStart() { Velocity = vect(0,0,0); Acceleration = vect(0,0,0); BaseEyeHeight = Default.BaseEyeHeight; EyeHeight = BaseEyeHeight; PlayWaiting(); } function ClientSetLocation( vector NewLocation, rotator NewRotation ) { if ( Controller != None ) Controller.ClientSetLocation(NewLocation, NewRotation); } function ClientSetRotation( rotator NewRotation ) { if ( Controller != None ) Controller.ClientSetRotation(NewRotation); } simulated function FaceRotation( rotator NewRotation, float DeltaTime ) { if ( Physics == PHYS_Ladder ) SetRotation(OnLadder.Walldir); else { if ( (Physics == PHYS_Walking) || (Physics == PHYS_Falling) ) NewRotation.Pitch = 0; SetRotation(NewRotation); } } function ClientDying(class DamageType, vector HitLocation) { if ( Controller != None ) Controller.ClientDying(DamageType, HitLocation); } function bool InCurrentCombo() { return false; } //============================================================================= // Inventory related functions. // check before throwing simulated function bool CanThrowWeapon() { return ( (Weapon != None) && ((Level.Game == None) || !Level.Game.bWeaponStay) ); } // toss out a weapon function TossWeapon(Vector TossVel) { local Vector X,Y,Z; Weapon.Velocity = TossVel; GetAxes(Rotation,X,Y,Z); Weapon.DropFrom(Location + 0.8 * CollisionRadius * X - 0.5 * CollisionRadius * Y); } // The player/bot wants to select next item exec function NextItem() { if (SelectedItem==None) { SelectedItem = Inventory.SelectNext(); Return; } if (SelectedItem.Inventory!=None) SelectedItem = SelectedItem.Inventory.SelectNext(); else SelectedItem = Inventory.SelectNext(); if ( SelectedItem == None ) SelectedItem = Inventory.SelectNext(); } // FindInventoryType() // returns the inventory item of the requested class // if it exists in this pawn's inventory function Inventory FindInventoryType( class DesiredClass ) { local Inventory Inv; local int Count; for( Inv=Inventory; Inv!=None; Inv=Inv.Inventory ) { if ( Inv.class == DesiredClass ) return Inv; Count++; if ( Count > 1000 ) return None; } return None; } // Add Item to this pawn's inventory. // Returns true if successfully added, false if not. function bool AddInventory( inventory NewItem ) { // Skip if already in the inventory. local inventory Inv; local actor Last; Last = self; // The item should not have been destroyed if we get here. if (NewItem ==None ) log("tried to add none inventory to "$self); for( Inv=Inventory; Inv!=None; Inv=Inv.Inventory ) { if( Inv == NewItem ) return false; Last = Inv; } // Add to back of inventory chain (so minimizes net replication effect). NewItem.SetOwner(Self); NewItem.Inventory = None; Last.Inventory = NewItem; if ( Controller != None ) Controller.NotifyAddInventory(NewItem); return true; } // Remove Item from this pawn's inventory, if it exists. function DeleteInventory( inventory Item ) { // If this item is in our inventory chain, unlink it. local actor Link; local int Count; if ( Item == Weapon ) Weapon = None; if ( Item == SelectedItem ) SelectedItem = None; for( Link = Self; Link!=None; Link=Link.Inventory ) { if( Link.Inventory == Item ) { Link.Inventory = Item.Inventory; Item.Inventory = None; break; } if ( Level.NetMode == NM_Client ) { Count++; if ( Count > 1000 ) break; } } Item.SetOwner(None); } // Just changed to pendingWeapon function ChangedWeapon() { local Weapon OldWeapon; OldWeapon = Weapon; if (Weapon == PendingWeapon) { if ( Weapon == None ) { Controller.SwitchToBestWeapon(); return; } else if ( Weapon.IsInState('DownWeapon') ) Weapon.GotoState('Idle'); PendingWeapon = None; ServerChangedWeapon(OldWeapon, Weapon); return; } if ( PendingWeapon == None ) PendingWeapon = Weapon; Weapon = PendingWeapon; if ( (Weapon != None) && (Level.NetMode == NM_Client) ) Weapon.BringUp(); PendingWeapon = None; Weapon.Instigator = self; ServerChangedWeapon(OldWeapon, Weapon); if ( Controller != None ) Controller.ChangedWeapon(); } function name GetWeaponBoneFor(Inventory I) { return 'righthand'; } function ServerChangedWeapon(Weapon OldWeapon, Weapon W) { if ( OldWeapon != None ) { OldWeapon.SetDefaultDisplayProperties(); OldWeapon.DetachFromPawn(self); } Weapon = W; if ( Weapon == None ) return; if ( Weapon != None ) { //log("ServerChangedWeapon: Attaching Weapon to actor bone."); Weapon.AttachToPawn(self); } Weapon.SetRelativeLocation(Weapon.Default.RelativeLocation); Weapon.SetRelativeRotation(Weapon.Default.RelativeRotation); if ( OldWeapon == Weapon ) { if ( Weapon.IsInState('DownWeapon') ) Weapon.BringUp(); Inventory.OwnerEvent('ChangedWeapon'); // tell inventory that weapon changed (in case any effect was being applied) return; } else if ( Level.Game != None ) MakeNoise(0.1 * Level.Game.GameDifficulty); Inventory.OwnerEvent('ChangedWeapon'); // tell inventory that weapon changed (in case any effect was being applied) PlayWeaponSwitch(W); Weapon.BringUp(); } //============== // Encroachment event bool EncroachingOn( actor Other ) { if ( Other.bWorldGeometry ) return true; if ( ((Controller == None) || !Controller.bIsPlayer || bWarping) && (Pawn(Other) != None) ) return true; return false; } event EncroachedBy( actor Other ) { if ( Pawn(Other) != None ) gibbedBy(Other); } function gibbedBy(actor Other) { if ( Role < ROLE_Authority ) return; if ( Pawn(Other) != None ) Died(Pawn(Other).Controller, class'DamTypeTelefragged', Location); else Died(None, class'Gibbed', Location); } //Base change - if new base is pawn or decoration, damage based on relative mass and old velocity // Also, non-players will jump off pawns immediately function JumpOffPawn() { Velocity += (100 + CollisionRadius) * VRand(); Velocity.Z = 200 + CollisionHeight; SetPhysics(PHYS_Falling); bNoJumpAdjust = true; Controller.SetFall(); } singular event BaseChange() { local float decorMass; if ( bInterpolating ) return; if ( (base == None) && (Physics == PHYS_None) ) SetPhysics(PHYS_Falling); // Pawns can only set base to non-pawns, or pawns which specifically allow it. // Otherwise we do some damage and jump off. else if ( Pawn(Base) != None ) { if ( !Pawn(Base).bCanBeBaseForPawns ) { Base.TakeDamage( (1-Velocity.Z/400)* Mass/Base.Mass, Self,Location,0.5 * Velocity , class'Crushed'); JumpOffPawn(); } //#ifdef __L2 Hunter /*TripShip = Vehicle(Base); if( TripShip != None ) { TripShip.bTrip = true; TripShip.TripTarget.X = -90742.f; TripShip.TripTarget.Y = 141933.f; TripShip.TripTarget.Z = -3791.f; }*/ //#endif } else if ( (Decoration(Base) != None) && (Velocity.Z < -400) ) { decorMass = FMax(Decoration(Base).Mass, 1); Base.TakeDamage((-2* Mass/decorMass * Velocity.Z/400), Self, Location, 0.5 * Velocity, class'Crushed'); } } event UpdateEyeHeight( float DeltaTime ) { local float smooth, MaxEyeHeight; local float OldEyeHeight; local Actor HitActor; local vector HitLocation,HitNormal; if (Controller == None ) { EyeHeight = 0; return; } if ( bTearOff ) { EyeHeight = 0; bUpdateEyeHeight = false; return; } HitActor = trace(HitLocation,HitNormal,Location + (CollisionHeight + MAXSTEPHEIGHT + 14) * vect(0,0,1), Location + CollisionHeight * vect(0,0,1),true); if ( HitActor == None ) MaxEyeHeight = CollisionHeight + MAXSTEPHEIGHT; else MaxEyeHeight = HitLocation.Z - Location.Z - 14; // smooth up/down stairs smooth = FMin(1.0, 10.0 * DeltaTime/Level.TimeDilation); If( Controller.WantsSmoothedView() ) { OldEyeHeight = EyeHeight; EyeHeight = FClamp((EyeHeight - Location.Z + OldZ) * (1 - smooth) + BaseEyeHeight * smooth, -0.5 * CollisionHeight, MaxEyeheight); } else { bJustLanded = false; EyeHeight = FMin(EyeHeight * ( 1 - smooth) + BaseEyeHeight * smooth, MaxEyeHeight); } Controller.AdjustView(DeltaTime); } /* EyePosition() Called by PlayerController to determine camera position in first person view. Returns the offset from the Pawn's location at which to place the camera */ function vector EyePosition() { return EyeHeight * vect(0,0,1) + WalkBob; } //============================================================================= simulated event Destroyed() { if ( Shadow != None ) Shadow.Destroy(); if ( Shadow1 != None ) Shadow1.Destroy(); if ( Controller != None && !IsA('Vehicle') ) Controller.PawnDied(self); if ( Level.NetMode == NM_Client ) return; while ( Inventory != None ) Inventory.Destroy(); Weapon = None; Super.Destroyed(); } //============================================================================= // // Called immediately before gameplay begins. // event PreBeginPlay() { Super.PreBeginPlay(); Instigator = self; DesiredRotation = Rotation; if ( bDeleteMe ) return; if ( BaseEyeHeight == 0 ) BaseEyeHeight = 0.8 * CollisionHeight; EyeHeight = BaseEyeHeight; if ( menuname == "" ) menuname = GetItemName(string(class)); } event PostBeginPlay() { local AIScript A; Super.PostBeginPlay(); SplashTime = 0; SpawnTime = Level.TimeSeconds; EyeHeight = BaseEyeHeight; OldRotYaw = Rotation.Yaw; //#ifdef __L2 //Hunter GroundSpeed = GroundMaxSpeed; WantedYaw = Rotation.Yaw; //#endif // #ifdef __L2 // by nonblock LastFootRot.Yaw = 0 ; LastFootRot.Pitch = 0 ; LastFootRot.Roll = 0; RecentHitWaterInterval = 0.0; // #endif // #ifdef __L2 // by nonblock fAcceleratedRate = (flastBlinkGap - fInitBlinkGap) / fTotalAcceleratedBlickTime ; // #endif // automatically add controller to pawns which were placed in level // NOTE: pawns spawned during gameplay are not automatically possessed by a controller if ( Level.bStartup && (Health > 0) && !bDontPossess ) { // check if I have an AI Script if ( AIScriptTag != '' ) { ForEach AllActors(class'AIScript',A,AIScriptTag) break; // let the AIScript spawn and init my controller if ( A != None ) { A.SpawnControllerFor(self); if ( Controller != None ) return; } } if ( (ControllerClass != None) && (Controller == None) ) Controller = spawn(ControllerClass); if ( Controller != None ) { Controller.Possess(self); AIController(Controller).Skill += SkillModifier; } } } // called after PostBeginPlay on net client simulated event PostNetBeginPlay() { if ( Level.bDropDetail || (Level.DetailMode == DM_Low) ) MaxLights = Min(4,MaxLights); if ( Role == ROLE_Authority ) return; if ( Controller != None ) { Controller.Pawn = self; if ( (PlayerController(Controller) != None) && (PlayerController(Controller).ViewTarget == Controller) ) PlayerController(Controller).SetViewTarget(self); } if ( Role == ROLE_AutonomousProxy ) bUpdateEyeHeight = true; if ( (PlayerReplicationInfo != None) && (PlayerReplicationInfo.Owner == None) ) PlayerReplicationInfo.SetOwner(Controller); PlayWaiting(); } simulated function SetMesh() { if (Mesh != None) return; LinkMesh( default.mesh ); } function Gasp(); function SetMovementPhysics(); function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType) { local int actualDamage; local bool bAlreadyDead; local Controller Killer; if ( damagetype == None ) warn("No damagetype for damage by "$instigatedby$" with weapon "$InstigatedBy.Weapon); if ( Role < ROLE_Authority ) { log(self$" client damage type "$damageType$" by "$instigatedBy); return; } bAlreadyDead = (Health <= 0); if (Physics == PHYS_None) SetMovementPhysics(); if (Physics == PHYS_Walking) momentum.Z = FMax(momentum.Z, 0.4 * VSize(momentum)); if ( (instigatedBy == self) || ((Controller != None) && (InstigatedBy != None) && (InstigatedBy.Controller != None) && InstigatedBy.Controller.SameTeamAs(Controller)) ) momentum *= 0.6; momentum = momentum/Mass; actualDamage = Level.Game.ReduceDamage(Damage, self, instigatedBy, HitLocation, Momentum, DamageType); Health -= actualDamage; if ( HitLocation == vect(0,0,0) ) HitLocation = Location; if ( bAlreadyDead ) { Warn(self$" took regular damage "$damagetype$" from "$instigatedby$" while already dead at "$Level.TimeSeconds); ChunkUp(Rotation, DamageType); return; } PlayHit(actualDamage,InstigatedBy, hitLocation, damageType, Momentum); if ( Health <= 0 ) { // pawn died if ( instigatedBy != None ) Killer = instigatedBy.GetKillerController(); if ( bPhysicsAnimUpdate ) TearOffMomentum = momentum; Died(Killer, damageType, HitLocation); } else { if ( (InstigatedBy != None) && (InstigatedBy != self) && (Controller != None) && (InstigatedBy.Controller != None) && InstigatedBy.Controller.SameTeamAs(Controller) ) Momentum *= 0.5; AddVelocity( momentum ); if ( Controller != None ) Controller.NotifyTakeHit(instigatedBy, HitLocation, actualDamage, DamageType, Momentum); } MakeNoise(1.0); } function TeamInfo GetTeam() { if ( PlayerReplicationInfo != None ) return PlayerReplicationInfo.Team; return None; } function Controller GetKillerController() { return Controller; } event GetEffTargetLocation(out vector LocVector) { local coords c; if ( EffectSpawnBoneIdx != -1 ) { c = GetBoneCoordsWithBoneIndex( EffectSpawnBoneIdx ); } else { if ( HasBoneName( SpineBone ) ) c = GetBoneCoords( SpineBone ); else c = GetBoneCoordsWithBoneIndex( 0 ); } // if ( HasBoneName( SpineBone ) ) // c = GetBoneCoordsWithBoneIndex(2); // else // c = GetBoneCoordsWithBoneIndex(); // c = GetBoneCoordsWithBoneIndex(EffectSpawnBoneIdx); LocVector = c.origin; } function Died(Controller Killer, class damageType, vector HitLocation) { local Vector TossVel; if ( bDeleteMe ) return; //already destroyed // mutator hook to prevent deaths // WARNING - don't prevent bot suicides - they suicide when really needed if ( Level.Game.PreventDeath(self, Killer, damageType, HitLocation) ) { Health = max(Health, 1); //mutator should set this higher return; } Health = Min(0, Health); if (Weapon != None) { if ( Controller != None ) Controller.LastPawnWeapon = Weapon; TossVel = Vector(GetViewRotation()); TossVel = TossVel * ((Velocity Dot TossVel) + 500) + Vect(0,0,200); TossWeapon(TossVel); } if ( Controller != None ) { Controller.WasKilledBy(Killer); Level.Game.Killed(Killer, Controller, self, damageType); } else Level.Game.Killed(Killer, Controller(Owner), self, damageType); if ( Killer != None ) TriggerEvent(Event, self, Killer.Pawn); else TriggerEvent(Event, self, None); Velocity.Z *= 1.3; if ( IsHumanControlled() ) PlayerController(Controller).ForceDeathUpdate(); if ( (DamageType != None) && DamageType.default.bAlwaysGibs ) ChunkUp( Rotation, DamageType ); else { PlayDying(DamageType, HitLocation); if ( Level.Game.bGameEnded ) return; if ( !bPhysicsAnimUpdate && !IsLocallyControlled() ) ClientDying(DamageType, HitLocation); } } function bool Gibbed(class damageType) { if ( damageType.default.GibModifier == 0 ) return false; if ( damageType.default.GibModifier >= 100 ) return true; if ( (Health < -80) || ((Health < -40) && (FRand() < 0.6)) ) return true; return false; } event Falling() { //SetPhysics(PHYS_Falling); //Note - physics changes type to PHYS_Falling by default if ( Controller != None ) Controller.SetFall(); } event HitWall(vector HitNormal, actor Wall); event Landed(vector HitNormal) { LandBob = FMin(50, 0.055 * Velocity.Z); //#ifdef __L2 Hunter ¶³ŸîÁ®Œ­ žø ¿òÁ÷ÀÌ°Ô µÇŽÂ Çö»óÀÌ HealthÀ̱⠶§¹®¿¡ ž·ŸÒŽÙ. eventLandedžŠ ž·±âŽÂ ºÒŸÈÇÏŽÙ. //TakeFallingDamage(); //#endif if ( Health > 0 ) PlayLanded(Velocity.Z); bJustLanded = true; } event HeadVolumeChange(PhysicsVolume newHeadVolume) { if ( (Level.NetMode == NM_Client) || (Controller == None) ) return; // 2006/10/10 NeverDie if( HeadVolume == None ) return; // 2006/10/10 NeverDie if( newHeadVolume == None ) return; if ( HeadVolume.bWaterVolume ) { if (!newHeadVolume.bWaterVolume) { if ( Controller.bIsPlayer && (BreathTime > 0) && (BreathTime < 8) ) Gasp(); BreathTime = -1.0; } } else if ( newHeadVolume.bWaterVolume ) BreathTime = UnderWaterTime; } function bool TouchingWaterVolume() { local PhysicsVolume V; ForEach TouchingActors(class'PhysicsVolume',V) if ( V.bWaterVolume ) return true; return false; } //Pain timer just expired. //Check what zone I'm in (and which parts are) //based on that cause damage, and reset BreathTime function bool IsInPain() { local PhysicsVolume V; ForEach TouchingActors(class'PhysicsVolume',V) if ( V.bPainCausing && (V.DamageType != ReducedDamageType) && (V.DamagePerSec > 0) ) return true; return false; } event BreathTimer() { if ( (Health < 0) || (Level.NetMode == NM_Client) ) return; TakeDrowningDamage(); if ( Health > 0 ) BreathTime = 2.0; } function TakeDrowningDamage(); function bool CheckWaterJump(out vector WallNormal) { local actor HitActor; local vector HitLocation, HitNormal, checkpoint, start, checkNorm, Extent; checkpoint = vector(Rotation); checkpoint.Z = 0.0; checkNorm = Normal(checkpoint); checkPoint = Location + CollisionRadius * checkNorm; Extent = CollisionRadius * vect(1,1,0); Extent.Z = CollisionHeight; HitActor = Trace(HitLocation, HitNormal, checkpoint, Location, true, Extent); if ( (HitActor != None) && (Pawn(HitActor) == None) ) { WallNormal = -1 * HitNormal; start = Location; start.Z += 1.1 * MAXSTEPHEIGHT; checkPoint = start + 2 * CollisionRadius * checkNorm; HitActor = Trace(HitLocation, HitNormal, checkpoint, start, true); if (HitActor == None) return true; } return false; } function DoDoubleJump( bool bUpdating ); function bool CanDoubleJump(); function UpdateRocketAcceleration(float DeltaTime, float YawChange, float PitchChange); function bool Dodge(eDoubleClickDir DoubleClickMove) { return false; } //Player Jumped function bool DoJump( bool bUpdating ) { if ( !bIsCrouched && !bWantsToCrouch && ((Physics == PHYS_Walking) || (Physics == PHYS_Ladder) || (Physics == PHYS_Spider)) ) { if ( Role == ROLE_Authority ) { if ( (Level.Game != None) && (Level.Game.GameDifficulty > 2) ) MakeNoise(0.1 * Level.Game.GameDifficulty); if ( bCountJumps && (Inventory != None) ) Inventory.OwnerEvent('Jumped'); } if ( Physics == PHYS_Spider ) Velocity = JumpZ * Floor; else if ( Physics == PHYS_Ladder ) Velocity.Z = 0; else if ( bIsWalking ) Velocity.Z = Default.JumpZ; else Velocity.Z = JumpZ; if ( (Base != None) && !Base.bWorldGeometry ) Velocity.Z += Base.Velocity.Z; SetPhysics(PHYS_Falling); return true; } return false; } /* PlayMoverHitSound() Mover Hit me, play appropriate sound if any */ function PlayMoverHitSound(); function PlayDyingSound(); function PlayHit(float Damage, Pawn InstigatedBy, vector HitLocation, class damageType, vector Momentum) { local vector BloodOffset, Mo, HitNormal; local class DesiredEffect; local class DesiredEmitter; if ( (Damage <= 0) && ((Controller == None) || !Controller.bGodMode) ) return; if (Damage > DamageType.Default.DamageThreshold) //spawn some blood { HitNormal = Normal(HitLocation - Location); // Play any set effect if ( EffectIsRelevant(Location,true) ) { DesiredEffect = DamageType.static.GetPawnDamageEffect(HitLocation, Damage, Momentum, self, (Level.bDropDetail || Level.DetailMode == DM_Low)); if ( DesiredEffect != None ) { BloodOffset = 0.2 * CollisionRadius * HitNormal; BloodOffset.Z = BloodOffset.Z * 0.5; Mo = Momentum; if ( Mo.Z > 0 ) Mo.Z *= 0.5; spawn(DesiredEffect,self,,HitLocation + BloodOffset, rotator(Mo)); } // Spawn any preset emitter DesiredEmitter = DamageType.Static.GetPawnDamageEmitter(HitLocation, Damage, Momentum, self, (Level.bDropDetail || Level.DetailMode == DM_Low)); if (DesiredEmitter != None) spawn(DesiredEmitter,,,HitLocation+HitNormal, Rotator(HitNormal)); } } if ( Health <= 0 ) { if ( PhysicsVolume.bDestructive && (PhysicsVolume.ExitActor != None) ) Spawn(PhysicsVolume.ExitActor); return; } if ( Level.TimeSeconds - LastPainTime > 0.1 ) { PlayTakeHit(HitLocation,Damage,damageType); LastPainTime = Level.TimeSeconds; } } /* Pawn was killed - detach any controller, and die */ // blow up into little pieces (implemented in subclass) simulated function ChunkUp( Rotator HitRotation, class D ) { if ( (Level.NetMode != NM_Client) && (Controller != None) ) { if ( Controller.bIsPlayer ) Controller.PawnDied(self); else Controller.Destroy(); } destroy(); } State Dying { ignores Trigger, Bump, HitWall, HeadVolumeChange, PhysicsVolumeChange, Falling, BreathTimer; event ChangeAnimation() {} event StopPlayFiring() {} function PlayFiring(float Rate, name FiringMode) {} function PlayWeaponSwitch(Weapon NewWeapon) {} function PlayTakeHit(vector HitLoc, int Damage, class damageType) {} simulated function PlayNextAnimation() {} function Died(Controller Killer, class damageType, vector HitLocation) { } event FellOutOfWorld(eKillZType KillType) { if(KillType == KILLZ_Lava || KillType == KILLZ_Suicide ) return; Destroy(); } function Timer() { if ( !PlayerCanSeeMe() ) Destroy(); else SetTimer(2.0, false); } function Landed(vector HitNormal) { local rotator finalRot; LandBob = FMin(50, 0.055 * Velocity.Z); if( Velocity.Z < -500 ) TakeDamage( (1-Velocity.Z/30),Instigator,Location,vect(0,0,0) , class'Crushed'); finalRot = Rotation; finalRot.Roll = 0; finalRot.Pitch = 0; setRotation(finalRot); SetPhysics(PHYS_None); SetCollision(true, false, false); if ( !IsAnimating(0) ) LieStill(); } /* ReduceCylinder() made obsolete by ragdoll deaths */ function ReduceCylinder() { SetCollision(false, false, false); } function LandThump() { // animation notify - play sound if actually landed, and animation also shows it if ( Physics == PHYS_None) bThumped = true; } event AnimEnd(int Channel) { if ( Channel != 0 ) return; if ( Physics == PHYS_None ) LieStill(); else if ( PhysicsVolume.bWaterVolume ) { bThumped = true; LieStill(); } } function LieStill() { if ( !bThumped ) LandThump(); SetCollision(false, false, false); } singular function BaseChange() { if( base == None ) SetPhysics(PHYS_Falling); else if ( Pawn(base) != None ) // don't let corpse ride around on someone's head ChunkUp( Rotation, class'Fell' ); } function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType) { SetPhysics(PHYS_Falling); if ( (Physics == PHYS_None) && (Momentum.Z < 0) ) Momentum.Z *= -1; Velocity += 3 * momentum/(Mass + 200); if ( bInvulnerableBody ) return; Damage *= DamageType.Default.GibModifier; Health -=Damage; if ( ((Damage > 30) || !IsAnimating()) && (Health < -80) ) ChunkUp( Rotation, DamageType ); } function BeginState() { if ( (LastStartSpot != None) && (LastStartTime - Level.TimeSeconds < 6) ) LastStartSpot.LastSpawnCampTime = Level.TimeSeconds; if ( bTearOff && (Level.NetMode == NM_DedicatedServer) ) LifeSpan = 1.0; else SetTimer(12.0, false); SetPhysics(PHYS_Falling); bInvulnerableBody = true; if ( Controller != None ) { if ( Controller.bIsPlayer ) Controller.PawnDied(self); else Controller.Destroy(); } } Begin: Sleep(0.15); bInvulnerableBody = false; PlayDyingSound(); } //============================================================================= // Animation interface for controllers simulated event SetAnimAction(name NewAction); /* PlayXXX() function called by controller to play transient animation actions */ simulated event PlayDying(class DamageType, vector HitLoc) { GotoState('Dying'); if ( bPhysicsAnimUpdate ) { bReplicateMovement = false; bTearOff = true; Velocity += TearOffMomentum; SetPhysics(PHYS_Falling); } bPlayedDeath = true; } simulated function PlayFiring(float Rate, name FiringMode); function PlayWeaponSwitch(Weapon NewWeapon); simulated event StopPlayFiring() { bSteadyFiring = false; } function PlayTakeHit(vector HitLoc, int Damage, class damageType) { local Sound DesiredSound; if (Damage==0) return; // // Play a hit sound according to the DamageType DesiredSound = DamageType.Static.GetPawnDamageSound(); if (DesiredSound != None) PlayOwnedSound(DesiredSound,SLOT_Misc); } //============================================================================= // Pawn internal animation functions simulated event ChangeAnimation() { if ( (Controller != None) && Controller.bControlAnimations ) return; // player animation - set up new idle and moving animations PlayWaiting(); PlayMoving(); } simulated event AnimEnd(int Channel) { if ( Channel == 0 ) PlayWaiting(); //#ifdef __L2 //kurt SetWeaponHide(false, false); switch( UpdateMovementAnimType ) { case UM_ONCE: case UM_FORCE: UpdateMovementAnimType = UM_NONE; bUpdateMovementAnim=false; break; } //#endif } // Animation group checks (usually implemented in subclass) function bool CannotJumpNow() { return false; } simulated event PlayJump(); simulated event PlayFalling(); simulated function PlayMoving(); simulated function PlayWaiting(); function PlayLanded(float impactVel) { if ( !bPhysicsAnimUpdate ) PlayLandingAnimation(impactvel); } simulated event PlayLandingAnimation(float ImpactVel); function PlayVictoryAnimation(); function HoldCarriedObject(CarriedObject O, name AttachmentBone); //#ifdef __L2 //kurt simulated event AttackedNotify(Pawn Attacker,Actor AttackActor,INT type, bool keepframerate, bool showeffect); simulated event AssociateAttackedNotify(Pawn Attacker,Actor AttackActor,int type,int damage, bool bmiss, bool bshielddefense, bool bcritical, bool bSpirit, bool keepframerate, bool showeffect); function NotifyAttack(Actor Attacker); //native function bool SetRelativeCoords(Actor Goal, vector RelLoc, rotator RelRot); native function bool SetRelativeCoords(Actor Goal); native function sound GetDefenseItemSound(); native function sound GetShieldItemSound(); native function int GetRefSkeletonNum(); simulated event NotifyDie(); event GetSimulationCollision( out array SimulationCollisions ); event SetSimulationCollision( array SimulationCollisions ); //2009.10.13 by elsacred event ChangePawnState(int iState) { switch(iState) { case 100: //hungery AddHungerEffect(); break; case 101: //not hungry RemoveHungerEffect(); break; } } //#endif H virtual UBOOL ReviewPath(APawn* Scout); virtual void CheckSymmetry(ANavigationPoint* Other); virtual INT AddMyMarker(AActor *S); G//============================================================================= // PathNode. //============================================================================= class PathNode extends NavigationPoint placeable native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) a class ParticleMaterial extends RenderedMaterial native noteditinlinenew; struct ParticleProjectorInfo { var bitmapmaterial BitmapMaterial; var matrix Matrix; var int Projected; var int BlendMode; }; var const int ParticleBlending; var const int BlendBetweenSubdivisions; var const int RenderTwoSided; var const int UseTFactor; var const bitmapmaterial BitmapMaterial; var const int Refraction; var const int AlphaTest; var const int AlphaRef; var const int ZTest; var const int ZWrite; var const int Wireframe; var transient bool AcceptsProjectors; var transient const int NumProjectors; var transient const ParticleProjectorInfo Projectors[8]; iŒ//============================================================================= // ParticleEmitter: Base class for sub- emitters. // // make sure to keep structs in sync in UnParticleSystem.h //============================================================================= class ParticleEmitter extends Object abstract editinlinenew native; enum EBlendMode { BM_MODULATE, BM_MODULATE2X, BM_MODULATE4X, BM_ADD, BM_ADDSIGNED, BM_ADDSIGNED2X, BM_SUBTRACT, BM_ADDSMOOTH, BM_BLENDDIFFUSEALPHA, BM_BLENDTEXTUREALPHA, BM_BLENDFACTORALPHA, BM_BLENDTEXTUREALPHAPM, BM_BLENDCURRENTALPHA, BM_PREMODULATE, BM_MODULATEALPHA_ADDCOLOR, BM_MODULATEINVALPHA_ADDCOLOR, BM_MODULATEINVCOLOR_ADDALPHA, BM_HACK }; enum EParticleDrawStyle { PTDS_Regular, PTDS_AlphaBlend, PTDS_Modulated, PTDS_Translucent, PTDS_AlphaModulate_MightNotFogCorrectly, PTDS_Darken, PTDS_Brighten }; enum EParticleCoordinateSystem { PTCS_Independent, PTCS_Relative, PTCS_Absolute, //#ifdef __L2 //kurt PTCS_RelativeRotation, // __L2 // by nonblock PTCS_Spray, // __L2 // by elsacred //#ifdef L2_WEATHER_SYSTEM PTCS_RelativePosition, //#endif PTCS_ScreenAbsolute, PTCS_ScreenRelative //#endif }; //solasys enum EParticleParticleChoice { PTWC_MaxParticle, PTWC_ParticlePerSecond }; enum EParticleRotationSource { PTRS_None, PTRS_Actor, PTRS_Offset, PTRS_Normal }; enum EParticleVelocityDirection { PTVD_None, PTVD_StartPositionAndOwner, PTVD_OwnerAndStartPosition, PTVD_AddRadial }; enum EParticleStartLocationShape { PTLS_Box, PTLS_Sphere, PTLS_Polar, PTLS_All }; enum EParticleEffectAxis { PTEA_NegativeX, PTEA_PositiveZ }; enum EParticleCollisionSound { PTSC_None, PTSC_LinearGlobal, PTSC_LinearLocal, PTSC_Random }; enum EParticleMeshSpawning { PTMS_None, PTMS_Linear, PTMS_Random }; enum ESkelLocationUpdate { PTSU_None, PTSU_SpawnOffset, PTSU_Location }; struct ParticleTimeScale { var () float RelativeTime; // always in range [0..1] var () float RelativeSize; }; struct ParticleRevolutionScale { var () float RelativeTime; // always in range [0..1] var () vector RelativeRevolution; }; struct ParticleColorScale { var () float RelativeTime; // always in range [0..1] var () color Color; }; struct ParticleVelocityScale { var () float RelativeTime; // always in range [0..1] var () vector RelativeVelocity; }; struct Particle { var vector Location; var vector OldLocation; var vector Velocity; var vector StartSize; var vector SpinsPerSecond; var vector StartSpin; var vector RevolutionCenter; var vector RevolutionsPerSecond; var vector RevolutionsMultiplier; var vector Size; var vector StartLocation; var vector ColorMultiplier; var vector VelocityMultiplier; var vector OldMeshLocation; var color Color; var float Time; var float MaxLifetime; var float Mass; var int HitCount; var int Flags; var int Subdivision; var int BoneIndex; //#ifdef __L2 //kurt var Rotator Rotation; var vector Acceleration; //#endif }; struct ParticleSound { var () sound Sound; var () range Radius; var () range Pitch; var () int Weight; var () range Volume; var () range Probability; }; var (Acceleration) vector Acceleration; //#ifdef __L2 // by nonblock var (Acceleration) bool IndependentSprayAccel; // if PTCS_Spray and true, VelocityLoss and Accel are 'PTCS_Independent' value. //#endif var (Collision) bool UseCollision; var (Collision) vector ExtentMultiplier; var (Collision) rangevector DampingFactorRange; var (Collision) bool UseCollisionPlanes; var (Collision) array CollisionPlanes; var (Collision) bool UseMaxCollisions; var (Collision) range MaxCollisions; var (Collision) int SpawnFromOtherEmitter; var (Collision) int SpawnAmount; var (Collision) rangevector SpawnedVelocityScaleRange; var (Collision) bool UseSpawnedVelocityScale; var (Color) bool UseColorScale; var (Color) array ColorScale; var (Color) float ColorScaleRepeats; var (Color) rangevector ColorMultiplierRange; var (Color) float Opacity; // Added by Demiurge (PSE) // #ifdef __L2 nonblock var (Color) transient float OpacityRatio; // #endif var (Color) bool UseCloudColor; var (Fading) plane FadeOutFactor; var (Fading) float FadeOutStartTime; var (Fading) bool FadeOut; var (Fading) plane FadeInFactor; var (Fading) float FadeInEndTime; var (Fading) bool FadeIn; var (Force) bool UseActorForces; var (General) EParticleCoordinateSystem CoordinateSystem; var (General) const int MaxParticles; var (General) bool ResetAfterChange; var (General) EParticleEffectAxis EffectAxis; //solasys var (General) const int LevelOfWeather; var (General) const int CheckLevelOfWeather; var (General) EParticleParticleChoice ParticleChoice; var (General) bool WeatherEffect; // winkey : WeatherRangeTimeŒÓŒºÀ» WeatherEffect¿©ºÎ¿¡ °ü°è ŸøÀÌ »ç¿ë°¡ŽÉ Çϵµ·Ï º¯°æ - 2010.9.13 var (General) array WeatherRangeTime; var (General) bool WeatherSoundCheck; //#ifdef __L2//kurt var (General) bool ForcedLifeTime; var (General) bool ForcedFade; var (General) bool ForcedMaxParticles; //#endif var (Local) bool RespawnDeadParticles; var (Local) bool AutoDestroy; var (Local) bool AutoReset; var (Local) bool Disabled; var (Local) bool DisableFogging; var (Local) range AutoResetTimeRange; var (Local) string Name; var (Location) vector StartLocationOffset; var (Location) rangevector StartLocationRange; var (Location) int AddLocationFromOtherEmitter; var (Location) EParticleStartLocationShape StartLocationShape; var (Location) range SphereRadiusRange; var (Location) rangevector StartLocationPolarRange; var (Mass) range StartMassRange; var (MeshSpawning) staticmesh MeshSpawningStaticMesh; var (MeshSpawning) EParticleMeshSpawning MeshSpawning; var (MeshSpawning) bool VelocityFromMesh; var (MeshSpawning) rangevector VelocityScaleRange; var (MeshSpawning) rangevector MeshScaleRange; var (MeshSpawning) bool UniformMeshScale; var (MeshSpawning) bool UniformVelocityScale; var (MeshSpawning) bool UseColorFromMesh; var (MeshSpawning) bool SpawnOnlyInDirectionOfNormal; var (MeshSpawning) vector MeshNormal; var (MeshSpawning) range MeshNormalThresholdRange; var (Rendering) int AlphaRef; var (Rendering) bool AlphaTest; var (Rendering) bool AcceptsProjectors; var (Rendering) bool ZTest; var (Rendering) bool ZWrite; var (Revolution) bool UseRevolution; var (Revolution) rangevector RevolutionCenterOffsetRange; var (Revolution) rangevector RevolutionsPerSecondRange; var (Revolution) bool UseRevolutionScale; var (Revolution) array RevolutionScale; var (Revolution) float RevolutionScaleRepeats; var (Rotation) EParticleRotationSource UseRotationFrom; var (Rotation) bool SpinParticles; var (Rotation) rotator RotationOffset; var (Rotation) vector SpinCCWorCW; var (Rotation) rangevector SpinsPerSecondRange; var (Rotation) rangevector StartSpinRange; var (Rotation) bool DampRotation; var (Rotation) rangevector RotationDampingFactorRange; var (Rotation) vector RotationNormal; var (Size) bool UseSizeScale; var (Size) bool UseRegularSizeScale; var (Size) array SizeScale; var (Size) float SizeScaleRepeats; var (Size) rangevector StartSizeRange; var (Size) bool UniformSize; var (SkeletalMesh) ESkelLocationUpdate UseSkeletalLocationAs; var (SkeletalMesh) actor SkeletalMeshActor; var (SkeletalMesh) vector SkeletalScale; var (SkeletalMesh) range RelativeBoneIndexRange; var (Sound) array Sounds; var (Sound) EParticleCollisionSound SpawningSound; var (Sound) range SpawningSoundIndex; var (Sound) range SpawningSoundProbability; var (Sound) EParticleCollisionSound CollisionSound; var (Sound) range CollisionSoundIndex; var (Sound) range CollisionSoundProbability; var (Spawning) float ParticlesPerSecond; var (Spawning) float InitialParticlesPerSecond; var (Spawning) bool AutomaticInitialSpawning; var (Texture) EParticleDrawStyle DrawStyle; var (Texture) texture Texture; var (Texture) int TextureUSubdivisions; var (Texture) int TextureVSubdivisions; var (Texture) bool BlendBetweenSubdivisions; var (Texture) bool UseSubdivisionScale; var (Texture) array SubdivisionScale; var (Texture) int SubdivisionStart; var (Texture) int SubdivisionEnd; var (Texture) bool UseRandomSubdivision; var (Tick) float SecondsBeforeInactive; var (Tick) float MinSquaredVelocity; var (Time) range InitialTimeRange; var (Time) range LifetimeRange; var (Time) range InitialDelayRange; var (Trigger) bool TriggerDisabled; var (Trigger) bool ResetOnTrigger; var (Trigger) range SpawnOnTriggerRange; var (Trigger) float SpawnOnTriggerPPS; var (Velocity) rangevector StartVelocityRange; var (Velocity) range StartVelocityRadialRange; var (Velocity) vector MaxAbsVelocity; var (Velocity) rangevector VelocityLossRange; var (Velocity) int AddVelocityFromOtherEmitter; var (Velocity) rangevector AddVelocityMultiplierRange; var (Velocity) EParticleVelocityDirection GetVelocityDirectionFrom; var (Velocity) bool UseVelocityScale; var (Velocity) array VelocityScale; var (Velocity) float VelocityScaleRepeats; var (Warmup) float WarmupTicksPerSecond; var (Warmup) float RelativeWarmupTime; var (Texture) array CustomMaterials; var (SoftParticle) bool UseSoftParticle; var (SoftParticle) float SoftParticleFadeDist; var transient emitter Owner; var transient bool Initialized; var transient bool Inactive; var transient float InactiveTime; var transient array Particles; var transient int ParticleIndex; // index into circular list of particles var transient int ActiveParticles; // currently active particles var transient float PPSFraction; // used to keep track of fractional PPTick var transient box BoundingBox; var transient vector RealExtentMultiplier; var transient bool RealDisableFogging; var transient bool AllParticlesDead; var transient bool WarmedUp; var transient int OtherIndex; var transient float InitialDelay; var transient vector GlobalOffset; var transient float TimeTillReset; var transient int PS2Data; var transient int MaxActiveParticles; var transient int CurrentCollisionSoundIndex; var transient int CurrentSpawningSoundIndex; var transient int CurrentMeshSpawningIndex; var transient float MaxSizeScale; var transient int KillPending; var transient int DeferredParticles; var transient vector RealMeshNormal; var transient array MeshVertsAndNormals; var transient int CurrentSpawnOnTrigger; //#ifdef __L2 //kurt var transient bool bOwnerTracking; var transient float CurLifeTime; var transient bool bNotifyPreDestroy; //#endif var transient ParticleMaterial ParticleMaterial; var transient int InRangeTime; native function SpawnParticle( int Amount ); native function Trigger(); l//============================================================================= // Palette: A 256-color Unreal palette. // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class Palette extends Object native noexport; var native const array Colors; f// // OpacityModfifer - used to override a shader's opacity channel (eg for shaders on terrain). // class OpacityModifier extends Modifier noteditinlinenew native; var Material Opacity; var bool bOverrideTexModifier; WŠdŠG'»ô2%¬9?)w9?)b €cŠfŠ?ÀU3)? €eŠhŠF'Å–3( €gŠjŠE'Í54 } €iŠlŠ}Ò¶4]?kÀU6r *Uk mk €kŠnŠD'Ý 5J €mŠpŠB'æv6 €oŠrŠA'ë²6 €qŠtŠ@'ð+7 À#€YsŠr{û78„`rrrŸd‚.X"r-\ /„rr*r-l"'d#.Ew)*c#)wÌwr*b. rK îb rrK E‚‚) }b šc#%(wd#Ÿrrk'rp.'mr*( {r B class ObjectPool extends Object; var Array Objects; // // AllocateObject // simulated function Object AllocateObject(class ObjectClass) { local Object Result; local int ObjectIndex; for(ObjectIndex = 0;ObjectIndex < Objects.Length;ObjectIndex++) { if(Objects[ObjectIndex].Class == ObjectClass) { Result = Objects[ObjectIndex]; Objects.Remove(ObjectIndex,1); break; } } if(Result == None) Result = new(None) ObjectClass; return Result; } // // FreeObject // simulated function FreeObject(Object Obj) { Objects.Length = Objects.Length + 1; Objects[Objects.Length - 1] = Obj; } // // Shrink // simulated function Shrink() { while(Objects.Length > 0) { //delete Objects[Objects.Length - 1]; Objects.Remove(Objects.Length - 1,1); }; } c#€M//============================================================================= // Sun // //============================================================================= class NSun extends Actor placeable native; var(Display) float Radius; var float Latitude; var float Longitude; var(Display) float LimitMaxRadius; var(Display) float SunScale; var bool bMakeLightmap; var vector Position; //#exec Texture Import File=Textures\sun.pcx Name=moon Mips=Off MASKED=1 //#exec Texture Import File=Textures\ZoneInfo.pcx Name=S_ZoneInfo Mips=Off MASKED=1 //#exec OBJ LOAD FILE=..\Textures\Skies.utx PACKAGE=Skies simulated function PostBeginPlay() { //local mesh temp; Super.PostBeginPlay(); //texture = texture(DynamicLoadObject("Skies.CogSky.Sun", class'texture')); //texture = TexScaler(DynamicLoadObject("Skies.CogSky.SunFlare", class'TexScaler')); } @ //__L2 kurt class NSkillProjectile extends NProjectile native; var int SkillID; var rotator HitRot; // by nonblock ~//__L2 kurt class NProjectile extends Emitter native; // Motion information. var float Speed; // Initial speed of projectile. var float AccSpeed; // Limit on speed of projectile (0 means no limit) var Actor TargetActor; var vector LastTargetLocation; var rotator LastTargetRotation; // by nonblock var Actor TraceActor; var bool bTrackingCamera; var bool bPreDestroy; //#ifdef __L2 by nonblock var(interpolation) bool bHermiteInterpolation; var(interpolation) vector VelInitial; var(interpolation) vector VelFinal; var(interpolation) vector LocInitial; var(interpolation) float Duration; var(interpolation) transient float CurTime; var(interpolation) float Disp; //var(interpolation) range DurationRange; //var(interpolation) float DurationCoef; var transient NMagicInfo MagicInfo; //#endif // #ifdef __L2 // anima - º£ÁöŸî °îŒ± var(interpolation) bool bBezierCurve; var(interpolation) array ControlPoints; // #endif simulated event ShotNotify(); // __L2 by nonblock simulated event PreshotNotify(Pawn Attacker); // #endif uŠ{ MG;=0Ž{ 9?,6žo6ž`  KYŸŽ{ 9?%6o«6o®Ga?6žo«ÍÌLŸ6žo6“o«6“o)\?6o6o6žo«6žo{ 6“o6“o‚Ž{ 9?ÿÿÿÿ {I#K.€¡I# €6ž` «6ž` {  Mclass NpcPosInfo extends Info showcategories(Movement) native placeable; #exec Texture Import File=Textures\Territory_info.pcx Name=S_TerritoryInfo Mips=Off MASKED=1 struct NpcPos { var() vector Delta; var() int Yaw; var() int Percent; }; var() array pos; var() color LineColor; var() name NpcName; var() string nickname; var() name ai; var() array Privates; var() WhenExtinctionCreate when_extinction_create; var() bool bWayPointsShow; var() array WayPoints; A/{Šq]9µ>Åžš9:H9:q™)?<r*\*V\ ]q‚r\*N5pyH#\›Ã®r**à ]q z//============================================================================= // A sticky note. Level designers can place these in the level and then // view them as a batch in the error/warnings window. //============================================================================= class Note extends Actor placeable native; #exec Texture Import File=Textures\Note.pcx Name=S_Note Mips=Off MASKED=1 var() string Text; \€ T//============================================================================= // Movable Directional sunlight //============================================================================= class NMovableSunlight extends Light placeable native; #exec Texture Import File=Textures\SunIcon.pcx Name=SunIcon Mips=Off MASKED=1 |.}ŠSsQA·‡)?2rS*/wFS‡Ԛ9:H9:SH®š9:H9:FH«‚–9:9:F—9:9:SSÑї9:9:SS‡=—9:H9:SH:„–9:H9:FH#—9:SH9:FHS‡‡‚—9:SH9:FH–9:H9:FHS›r*SµsSF p //============================================================================= // Moon // //============================================================================= class NMoon extends Actor placeable native; var(Display) float Radius; var float Latitude; var float Longitude; var(Display) float LimitMaxRadius; var(Display) float MoonScale; var bool bMakeLightmap; var vector Position; var(Display) bool bMoonLight; var(Display) int EnvType; var(Display) texture Flame[12]; var(LightColor) byte LightHue, LightSaturation; var(LightColor) float LightBrightness; cclass NLine extends Actor native noexport; var const int SpringSim; var byte Alpha; € x.A‹RruNE·‡)?2rR*/wHR‡Ԛ9:H9:RH®š9:H9:HH«‚—9:9:H–9:9:RRÑі9:9:RR‡=–9:H9:RH:„—9:H9:HH#–9:RH9:HHR‡‡‚–9:RH9:HH—9:H9:HHR›r*RµrRH M class NCubics extends Emitter native; var enum ESummonCubicType { CUBIC_DO_NOT_EXIST, CUBIC_DD, CUBIC_DRAIN, CUBIC_HEAL, CUBIC_POISON, CUBIC_DEBUF, CUBIC_PARALYZE, CUBIC_WATER_DOT, CUBIC_SHOCK, CUBIC_ATTRACT, CUBIC_TEMPLEK_SMART, CUBIC_SHILLIENK_SMART, CUBIC_WARLOCK_SMART, CUBIC_ELEMENTALS_SMART, CUBIC_PHANTOMS_SMART, } CubicType; var enum ECubicMovementType { ECMT_FOLLOW, ECMT_FLOAT, ECMT_SKILLUSE, ECMT_BUFF, ECMT_FLOATSTART, ECMT_ONVEHICLE, } CubicMovementType; var vector DestLocation; var int CubicIndex; var int SkillID; var pawn TargetPawn; var float SkillActiveTime; var rotator RotPerSecond; var transient NMagicInfo MagicInfo; zM//============================================================================= // NavigationPoint. // // NavigationPoints are organized into a network to provide AIControllers // the capability of determining paths to arbitrary destinations in a level // //============================================================================= class NavigationPoint extends Actor hidecategories(Lighting,LightColor,Karma,Force) native; #exec Texture Import File=Textures\S_Pickup.pcx Name=S_Pickup Mips=Off MASKED=1 #exec Texture Import File=Textures\SpwnAI.pcx Name=S_NavP Mips=Off MASKED=1 // not used currently #exec Texture Import File=Textures\SiteLite.pcx Name=S_Alarm Mips=Off MASKED=1 //------------------------------------------------------------------------------ // NavigationPoint variables var const array PathList; //index of reachspecs (used by C++ Navigation code) var() name ProscribedPaths[4]; // list of names of NavigationPoints which should never be connected from this path var() name ForcedPaths[4]; // list of names of NavigationPoints which should always be connected from this path var int visitedWeight; var const int bestPathWeight; var const NavigationPoint nextNavigationPoint; var const NavigationPoint nextOrdered; // for internal use during route searches var const NavigationPoint prevOrdered; // for internal use during route searches var const NavigationPoint previousPath; var int cost; // added cost to visit this pathnode var() int ExtraCost; // Extra weight added by level designer var transient int TransientCost; // added right before a path finding attempt, cleared afterward. var transient int FearCost; // extra weight diminishing over time (used for example, to mark path where bot died) var transient bool bEndPoint; // used by C++ navigation code var transient bool bTransientEndPoint; // set right before a path finding attempt, cleared afterward. var bool taken; // set when a creature is occupying this spot var() bool bBlocked; // this path is currently unuseable var() bool bPropagatesSound; // this navigation point can be used for sound propagation (around corners) var() bool bOneWayPath; // reachspecs from this path only in the direction the path is facing (180 degrees) var() bool bNeverUseStrafing; // shouldn't use bAdvancedTactics going to this point var() bool bAlwaysUseStrafing; // shouldn't use bAdvancedTactics going to this point var const bool bForceNoStrafing;// override any LD changes to bNeverUseStrafing var const bool bAutoBuilt; // placed during execution of "PATHS BUILD" var bool bSpecialMove; // if true, pawn will call SuggestMovePreparation() when moving toward this node var bool bNoAutoConnect; // don't connect this path to others except with special conditions (used by LiftCenter, for example) var const bool bNotBased; // used by path builder - if true, no error reported if node doesn't have a valid base var const bool bPathsChanged; // used for incremental path rebuilding in the editor var bool bDestinationOnly; // used by path building - means no automatically generated paths are sourced from this node var bool bSourceOnly; // used by path building - means this node is not the destination of any automatically generated path var bool bSpecialForced; // paths that are forced should call the SpecialCost() and SuggestMovePreparation() functions var bool bMustBeReachable; // used for PathReview code var Pickup InventoryCache; // used to point to dropped weapons var float InventoryDist; function PostBeginPlay() { ExtraCost = Max(ExtraCost,0); Super.PostBeginPlay(); } event int SpecialCost(Pawn Seeker, ReachSpec Path); // Accept an actor that has teleported in. // used for random spawning and initial placement of creatures event bool Accept( actor Incoming, actor Source ) { // Move the actor here. taken = Incoming.SetLocation( Location ); if (taken) { Incoming.Velocity = vect(0,0,0); Incoming.SetRotation(Rotation); } Incoming.PlayTeleportEffect(true, false); TriggerEvent(Event, self, Pawn(Incoming)); return taken; } /* DetourWeight() value of this path to take a quick detour (usually 0, used when on route to distant objective, but want to grab inventory for example) */ event float DetourWeight(Pawn Other,float PathWeight); /* SuggestMovePreparation() Optionally tell Pawn any special instructions to prepare for moving to this goal (called by Pawn.PrepareForMove() if this node's bSpecialMove==true */ event bool SuggestMovePreparation(Pawn Other) { return false; } /* ProceedWithMove() Called by Controller to see if move is now possible when a mover reports to the waiting pawn that it has completed its move */ function bool ProceedWithMove(Pawn Other) { return true; } /* MoverOpened() & MoverClosed() used by NavigationPoints associated with movers */ function MoverOpened(); function MoverClosed(); € mclass NAgathion extends Pawn native; //#ifdef CT26P2_0825 // ±âÁž¿¡ Çϳªžž ÁžÀçÇߎø ŸÆ°¡œÃ¿ÂÀÇ ÁŸ·ùžŠ Ãß°¡ÇÑŽÙ. // »õ·Î¿î ŸÆ°¡œÃ¿ÂÀº ijž¯ÅÍÀÇ µî µÚ¿¡ ¹ÙœÏ ºÙŸî ŽÙŽÏ°Ô µÈŽÙ. // - gorillazin 10.06.23. var enum EAgathionType { EAT_DEFAULT, // ³¯ŸÆŽÙŽÏŽÂ ±âº»ÀûÀÎ ŸÆ°¡œÃ¿Â EAT_ATTACHED, // µî µÚÀÇ Ä®°ú °°Àº ºÙŸîŽÙŽÏŽÂ ŸÆ°¡œÃ¿Â } AgathionType; var enum EAttachedBone { EAB_NONE, EAB_HEADBONE, EAB_SPINEBONE, EAB_R_HANDBONE, EAB_L_HANDBONE, EAB_R_ARMBONE, EAB_L_ARMBONE, EAB_R_FOOTBONE, EAB_L_FOOTBONE, } AttachedBone; //#endif //CT26P2_0825 - gorillazin var enum EAgathionMovementType { EAMT_FOLLOW, EAMT_FLOAT, EAMT_ONVEHICLE, //#ifdef CT26P2_0825 EAMT_ATTACH, //#endif //CT26P2_0825 - gorillazin } MovementType; var vector DestLocation; var Rotator OriginalRotationRate; var int RandomAnimPercent; var int RandomSpecialAnimationState; // -1 to decide, 0 failed, 1 success var bool NeedMaster; // for 3D UI var pawn Master; var int MasterWaitType; var float MasterWaitTypeChangeUpdate; €R e#w  ÍI† rI * )."e# oI Nw)*) }K „)aI e# E))wK  Pd//============================================================================= // Mutator. // // Mutators allow modifications to gameplay while keeping the game rules intact. // Mutators are given the opportunity to modify player login parameters with // ModifyLogin(), to modify player pawn properties with ModifyPlayer(), to change // the default weapon for players with GetDefaultWeapon(), or to modify, remove, // or replace all other actors when they are spawned with CheckRelevance(), which // is called from the PreBeginPlay() function of all actors except those (Decals, // Effects and Projectiles for performance reasons) which have bGameRelevant==true. //============================================================================= class Mutator extends Info native dependson(GameInfo); var Mutator NextMutator; var class DefaultWeapon; var string DefaultWeaponName; var() string GroupName; // Will only allow one mutator with this tag to be selected. var() localized string FriendlyName; var() localized string Description; var bool bUserAdded; /* Don't call Actor PreBeginPlay() for Mutator */ event PreBeginPlay() { if ( !MutatorIsAllowed() ) Destroy(); } function bool MutatorIsAllowed() { return !Level.IsDemoBuild() || Class==class'Mutator'; } function Destroyed() { local Mutator M; // remove from mutator list if ( Level.Game.BaseMutator == self ) Level.Game.BaseMutator = NextMutator; else { for ( M=Level.Game.BaseMutator; M!=None; M=M.NextMutator ) if ( M.NextMutator == self ) { M.NextMutator = NextMutator; break; } } Super.Destroyed(); } function Mutate(string MutateString, PlayerController Sender) { if ( NextMutator != None ) NextMutator.Mutate(MutateString, Sender); } function ModifyLogin(out string Portal, out string Options) { if ( NextMutator != None ) NextMutator.ModifyLogin(Portal, Options); } /* called by GameInfo.RestartPlayer() change the players jumpz, etc. here */ function ModifyPlayer(Pawn Other) { if ( NextMutator != None ) NextMutator.ModifyPlayer(Other); } /* return what should replace the default weapon mutators further down the list override earlier mutators */ function Class GetDefaultWeapon() { local Class W; if ( NextMutator != None ) { W = NextMutator.GetDefaultWeapon(); if ( W == None ) W = MyDefaultWeapon(); } else W = MyDefaultWeapon(); return W; } /* GetInventoryClass() return an inventory class - either the class specified by InventoryClassName, or a replacement. Called when spawning initial inventory for player */ function Class GetInventoryClass(string InventoryClassName) { InventoryClassName = GetInventoryClassOverride(InventoryClassName); return class(DynamicLoadObject(InventoryClassName, class'Class')); } /* GetInventoryClassOverride() return the string passed in, or a replacement class name string. */ function string GetInventoryClassOverride(string InventoryClassName) { // here, in mutator subclass, change InventoryClassName if desired. For example: // if ( InventoryClassName == "Weapons.DorkyDefaultWeapon" // InventoryClassName = "ModWeapons.SuperDisintegrator" if ( NextMutator != None ) return NextMutator.GetInventoryClassOverride(InventoryClassName); return InventoryClassName; } function class MyDefaultWeapon() { if ( (DefaultWeapon == None) && (DefaultWeaponName != "") ) DefaultWeapon = class(DynamicLoadObject(DefaultWeaponName, class'Class')); return DefaultWeapon; } function AddMutator(Mutator M) { if ( NextMutator == None ) NextMutator = M; else NextMutator.AddMutator(M); } /* ReplaceWith() Call this function to replace an actor Other with an actor of aClass. */ function bool ReplaceWith(actor Other, string aClassName) { local Actor A; local class aClass; if ( aClassName == "" ) return true; aClass = class(DynamicLoadObject(aClassName, class'Class')); if ( aClass != None ) A = Spawn(aClass,Other.Owner,Other.tag,Other.Location, Other.Rotation); if ( Other.IsA('Pickup') ) { if ( Pickup(Other).MyMarker != None ) { Pickup(Other).MyMarker.markedItem = Pickup(A); if ( Pickup(A) != None ) { Pickup(A).MyMarker = Pickup(Other).MyMarker; A.SetLocation(A.Location + (A.CollisionHeight - Other.CollisionHeight) * vect(0,0,1)); } Pickup(Other).MyMarker = None; } else if ( A.IsA('Pickup') ) Pickup(A).Respawntime = 0.0; } if ( A != None ) { A.event = Other.event; A.tag = Other.tag; return true; } return false; } /* Force game to always keep this actor, even if other mutators want to get rid of it */ function bool AlwaysKeep(Actor Other) { if ( NextMutator != None ) return ( NextMutator.AlwaysKeep(Other) ); return false; } function bool IsRelevant(Actor Other, out byte bSuperRelevant) { local bool bResult; bResult = CheckReplacement(Other, bSuperRelevant); if ( bResult && (NextMutator != None) ) bResult = NextMutator.IsRelevant(Other, bSuperRelevant); return bResult; } function bool CheckRelevance(Actor Other) { local bool bResult; local byte bSuperRelevant; if ( AlwaysKeep(Other) ) return true; // allow mutators to remove actors bResult = IsRelevant(Other, bSuperRelevant); return bResult; } function bool CheckReplacement(Actor Other, out byte bSuperRelevant) { return true; } // // Called when a player sucessfully changes to a new class // function PlayerChangedClass(Controller aPlayer) { NextMutator.PlayerChangedClass(aPlayer); } // // server querying // function GetServerDetails( out GameInfo.ServerResponseLine ServerState ) { // append the mutator name. local int i; i = ServerState.ServerInfo.Length; ServerState.ServerInfo.Length = i+1; ServerState.ServerInfo[i].Key = "Mutator"; ServerState.ServerInfo[i].Value = GetHumanReadableName(); } function GetServerPlayers( out GameInfo.ServerResponseLine ServerState ) { } // jmw - Allow mod authors to hook in to the %X var parsing function string ParseChatPercVar(Controller Who, string Cmd) { if (NextMutator !=None) Cmd = NextMutator.ParseChatPercVar(Who,Cmd); return Cmd; } K‹N‹w±ïKgN}e])?Tr.¿Z€¿e9?_. €M‹N.kÃvMO.'r*q!M  99a!M q!Or „r*5G ł-N.2‚N. -j8 F°wwf#55q!Du5f# q! Â#N€ //============================================================================= // MusicVolume: //============================================================================= class MusicVolume extends Volume native nativereplication; var(Music) int nMusicID; var(Music) bool bForcePlayMusic; var(Music) bool bLoopMusic; var(Music) int nNightMusicID; var(Music) float DayMusicInterval; var(Music) float NightMusicInterval; var(Music) bool bNightMusicRandomPlay; var(Music) bool bDayMusicRandomPlay; var(Music) array ZoneMusicID; var(Music) bool bZoneMusicRandomPlay; var(Music) float ZoneMusicInterval; simulated function PostBeginPlay() { Super.PostBeginPlay(); } D/O‹S yèQö!NS w S }€‚‚rw M*)?žS = W>žS  kòw*@ yAò‚w@* ±AS S A@ r class MusicTrigger extends Triggers; var() string Song; var() float FadeInTime; var() float FadeOutTime; var() bool FadeOutAllSongs; var transient bool Triggered; var transient int SongHandle; function Trigger( Actor Other, Pawn EventInstigator ) { if( !Triggered ) { Triggered = true; if( FadeOutAllSongs ) StopAllMusic( FadeOutTime ); SongHandle = PlayMusic( Song, FadeInTime ); } else { Triggered = false; if( SongHandle != 0 ) { StopMusic( SongHandle, FadeOutTime ); } else { Log("WARNING: invalid song handle"); } } } @€ nS‹~~pÿÿÿÿÿÿÿÿ@€ÿÿÿÿÿÿÿÿÿÿU‹z]ìMnŽJl‚=Shç//============================================================================= // The moving brush class. // This is a built-in Unreal class and it shouldn't be modified. // Note that movers by default have bNoDelete==true. This makes movers and their default properties // remain on the client side. If a mover subclass has bNoDelete=false, then its default properties must // be replicated //============================================================================= class Mover extends Actor native nativereplication; //#ifdef __L2 Hunter var bool bCanBeAttacked; var() bool bOpen; var int DamageGrade; var() string MoverName; var() staticmesh MeshGrade[7]; var() float RangeHeight; var() vector RangeDelta[4]; var() vector HitActorNormal; var(MoverSounds) array DamageSounds; var(MoverSounds) array BrokenSounds; //#endif // How the mover should react when it encroaches an actor. var() enum EMoverEncroachType { ME_StopWhenEncroach, // Stop when we hit an actor. ME_ReturnWhenEncroach, // Return to previous position when we hit an actor. ME_CrushWhenEncroach, // Crush the poor helpless actor. ME_IgnoreWhenEncroach, // Ignore encroached actors. } MoverEncroachType; // How the mover moves from one position to another. var() enum EMoverGlideType { MV_MoveByTime, // Move linearly. MV_GlideByTime, // Move with smooth acceleration. } MoverGlideType; // What classes can bump trigger this mover var() enum EBumpType { BT_PlayerBump, // Can only be bumped by player. BT_PawnBump, // Can be bumped by any pawn BT_AnyBump, // Can be bumped by any solid actor } BumpType; //----------------------------------------------------------------------------- // Keyframe numbers. var() byte KeyNum; // Current or destination keyframe. var byte PrevKeyNum; // Previous keyframe. var() const byte NumKeys; // Number of keyframes in total (0-3). var() const byte WorldRaytraceKey; // Raytrace the world with the brush here. var() const byte BrushRaytraceKey; // Raytrace the brush here. //----------------------------------------------------------------------------- // Movement parameters. var(Mover) float MoveTime; // Time to spend moving between keyframes. var() float StayOpenTime; // How long to remain open before closing. var() float OtherTime; // TriggerPound stay-open time. var() int EncroachDamage; // How much to damage encroached actors. //----------------------------------------------------------------------------- // Mover state. var() bool bTriggerOnceOnly; // Go dormant after first trigger. var() bool bSlave; // This brush is a slave. var() bool bUseTriggered; // Triggered by player grab var() bool bDamageTriggered; // Triggered by taking damage var() bool bDynamicLightMover; // Apply dynamic lighting to mover. var() bool bUseShortestRotation; // rot by -90 instead of +270 and so on. var(ReturnGroup) bool bIsLeader; var() name PlayerBumpEvent; // Optional event to cause when the player bumps the mover. var() name BumpEvent; // Optional event to cause when any valid bumper bumps the mover. var actor SavedTrigger; // Who we were triggered by. var() float DamageThreshold; // minimum damage to trigger var int numTriggerEvents; // number of times triggered ( count down to untrigger ) var Mover Leader; // for having multiple movers return together var Mover Follower; var(ReturnGroup) name ReturnGroup; // if none, same as tag var() float DelayTime; // delay before starting to open //----------------------------------------------------------------------------- // Audio. var(MoverSounds) sound OpeningSound; // When start opening. var(MoverSounds) sound OpenedSound; // When finished opening. var(MoverSounds) sound ClosingSound; // When start closing. var(MoverSounds) sound ClosedSound; // When finish closing. var(MoverSounds) sound MoveAmbientSound; // Optional ambient sound when moving. var(MoverSounds) sound LoopSound; // Played on Loop //----------------------------------------------------------------------------- // Events var(MoverEvents) name OpeningEvent; // Event to cause when opening var(MoverEvents) name OpenedEvent; // Event to cause when opened var(MoverEvents) name ClosingEvent; // Event to cause when closing var(MoverEvents) name ClosedEvent; // Event to cause when closed var(MoverEvents) name LoopEvent; // Event to cause when the mover loops //----------------------------------------------------------------------------- // Other stuff //----------------------------------------------------------------------------- // Internal. var vector KeyPos[8]; var rotator KeyRot[8]; var vector BasePos, OldPos, OldPrePivot, SavedPos; var rotator BaseRot, OldRot, SavedRot; var float PhysAlpha; // Interpolating position, 0.0-1.0. var float PhysRate; // Interpolation rate per second. // AI related var NavigationPoint myMarker; var bool bOpening, bDelaying, bClientPause; var bool bClosed; // mover is in closed position, and no longer moving var bool bPlayerOnly; var(AI) bool bAutoDoor; // automatically setup Door NavigationPoint for this mover var(AI) bool bNoAIRelevance; // don't warn about this mover during path review // for client side replication var vector SimOldPos; var int SimOldRotPitch, SimOldRotYaw, SimOldRotRoll; var vector SimInterpolate; var vector RealPosition; var rotator RealRotation; var int ClientUpdate; // Used for controlling antiportals var array AntiPortals; var() name AntiPortalTag; // flagoftiger - StaticMeshActorÀÇ ŒÓŒºÀž·Î ÇÊ¿äÇÑ °ÍµéÀε¥ StaticMeshActor¿Í »óŒÓ°ü°è°¡ ŸÆŽÏ°í // ActorÀÇ žâ¹ö·Î ³Ö±âµµ ÁÁÁö ŸÊŸÆŒ­ µû·Îµû·Î ³ÖŽÂŽÙ €Ð€Ð ÀÌ°Ô ¹¹ÇÏŽÂ ÁþÀÎÁö;; var(L2ServerObject) bool bTargetable; var(L2ServerObject) array StateStaticMeshs; var(L2ServerObject) array StateChangeEffectNames; replication { // Things the server should send to the client. reliable if( Role==ROLE_Authority ) SimOldPos, SimOldRotPitch, SimOldRotYaw, SimOldRotRoll, SimInterpolate, RealPosition, RealRotation; } /* StartInterpolation() when this function is called, the actor will start moving along an interpolation path beginning at Dest */ simulated function StartInterpolation() { GotoState(''); bInterpolating = true; SetPhysics(PHYS_None); } simulated function Timer() { if ( Velocity != vect(0,0,0) ) { bClientPause = false; return; } if ( Level.NetMode == NM_Client ) { if ( ClientUpdate == 0 ) // not doing a move { if ( bClientPause ) { if ( VSize(RealPosition - Location) > 3 ) SetLocation(RealPosition); else RealPosition = Location; SetRotation(RealRotation); bClientPause = false; } else if ( RealPosition != Location ) bClientPause = true; } else bClientPause = false; } else { RealPosition = Location; RealRotation = Rotation; } } //----------------------------------------------------------------------------- // Movement functions. // Interpolate to keyframe KeyNum in Seconds time. simulated final function InterpolateTo( byte NewKeyNum, float Seconds ) { NewKeyNum = Clamp( NewKeyNum, 0, ArrayCount(KeyPos)-1 ); if( NewKeyNum==PrevKeyNum && KeyNum!=PrevKeyNum ) { // Reverse the movement smoothly. PhysAlpha = 1.0 - PhysAlpha; OldPos = BasePos + KeyPos[KeyNum]; OldRot = BaseRot + KeyRot[KeyNum]; } else { // Start a new movement. OldPos = Location; OldRot = Rotation; PhysAlpha = 0.0; } // Setup physics. SetPhysics(PHYS_MovingBrush); bInterpolating = true; PrevKeyNum = KeyNum; KeyNum = NewKeyNum; PhysRate = 1.0 / FMax(Seconds, 0.005); ClientUpdate++; SimOldPos = OldPos; SimOldRotYaw = OldRot.Yaw; SimOldRotPitch = OldRot.Pitch; SimOldRotRoll = OldRot.Roll; SimInterpolate.X = 100 * PhysAlpha; SimInterpolate.Y = 100 * FMax(0.01, PhysRate); SimInterpolate.Z = 256 * PrevKeyNum + KeyNum; } // Set the specified keyframe. final function SetKeyframe( byte NewKeyNum, vector NewLocation, rotator NewRotation ) { KeyNum = Clamp( NewKeyNum, 0, ArrayCount(KeyPos)-1 ); KeyPos[KeyNum] = NewLocation; KeyRot[KeyNum] = NewRotation; } // Interpolation ended. simulated event KeyFrameReached() { local byte OldKeyNum; OldKeyNum = PrevKeyNum; PrevKeyNum = KeyNum; PhysAlpha = 0; ClientUpdate--; // If more than two keyframes, chain them. if( KeyNum>0 && KeyNumOldKeyNum ) { // Chain to next. InterpolateTo(KeyNum+1,MoveTime); } else { // Finished interpolating. //AmbientSound = None; if ( (ClientUpdate == 0) && (Level.NetMode != NM_Client) ) { RealPosition = Location; RealRotation = Rotation; } } } //----------------------------------------------------------------------------- // Mover functions. // Notify AI that mover finished movement function FinishNotify() { local Controller C; for ( C=Level.ControllerList; C!=None; C=C.nextController ) if ( (C.Pawn != None) && (C.PendingMover == self) ) C.MoverFinished(); } // Handle when the mover finishes closing. function FinishedClosing() { local Mover M; // Update sound effects. PlaySound( ClosedSound, SLOT_None ); // Handle Events TriggerEvent( ClosedEvent, Self, Instigator ); // Notify our triggering actor that we have completed. if( SavedTrigger != None ) SavedTrigger.EndEvent(); SavedTrigger = None; Instigator = None; If ( MyMarker != None ) MyMarker.MoverClosed(); bClosed = true; FinishNotify(); for ( M=Leader; M!=None; M=M.Follower ) if ( !M.bClosed ) return; UnTriggerEvent(OpeningEvent, Self, Instigator); } // Handle when the mover finishes opening. function FinishedOpening() { // Update sound effects. PlaySound( OpenedSound, SLOT_None ); // Trigger any chained movers / Events TriggerEvent(Event, Self, Instigator); TriggerEvent(OpenedEvent, Self, Instigator); If ( MyMarker != None ) MyMarker.MoverOpened(); FinishNotify(); } // Open the mover. function DoOpen() { bOpening = true; bDelaying = false; InterpolateTo( 1, MoveTime ); MakeNoise(1.0); PlaySound( OpeningSound, SLOT_None ); //AmbientSound = MoveAmbientSound; TriggerEvent(OpeningEvent, Self, Instigator); if ( Follower != None ) Follower.DoOpen(); } // Close the mover. function DoClose() { bOpening = false; bDelaying = false; InterpolateTo( Max(0,KeyNum-1), MoveTime ); MakeNoise(1.0); PlaySound( ClosingSound, SLOT_None ); UntriggerEvent(Event, self, Instigator); //AmbientSound = MoveAmbientSound; TriggerEvent(ClosingEvent,Self,Instigator); if ( Follower != None ) Follower.DoClose(); } //----------------------------------------------------------------------------- // Engine notifications. // When mover enters gameplay. simulated function BeginPlay() { local AntiPortalActor AntiPortal; if(AntiPortalTag != '') { foreach AllActors(class'AntiPortalActor',AntiPortal,AntiPortalTag) { AntiPortals.Length = AntiPortals.Length + 1; AntiPortals[AntiPortals.Length - 1] = AntiPortal; } } // timer updates real position every second in network play if ( Level.NetMode != NM_Standalone ) { if ( Level.NetMode == NM_Client ) settimer(4.0, true); else settimer(1.0, true); if ( Role < ROLE_Authority ) return; } if ( Level.NetMode != NM_Client ) { RealPosition = Location; RealRotation = Rotation; } // Init key info. Super.BeginPlay(); KeyNum = Clamp( KeyNum, 0, ArrayCount(KeyPos)-1 ); PhysAlpha = 0.0; // Set initial location. Move( BasePos + KeyPos[KeyNum] - Location ); // Initial rotation. SetRotation( BaseRot + KeyRot[KeyNum] ); // find movers in same group if ( ReturnGroup == '' ) ReturnGroup = tag; Leader = None; Follower = None; //#ifdef __L2 Hunter InitialState='TriggerControl'; //#endif } // Immediately after mover enters gameplay. function PostBeginPlay() { local mover M; // Initialize all slaves. if( !bSlave ) { foreach DynamicActors( class 'Mover', M, Tag ) { if( M.bSlave ) { M.GotoState(''); M.SetBase( Self ); } } } if ( bIsLeader ) { Leader = self; ForEach DynamicActors( class'Mover', M ) if ( (M != self) && (M.ReturnGroup == ReturnGroup) ) { M.Leader = self; M.Follower = Follower; Follower = M; } } else if ( Leader == None ) { // if no one in returngroup, I am the leader anyway ForEach DynamicActors( class'Mover', M ) { if ( (M != self) && (M.ReturnGroup == ReturnGroup) ) return; } Leader = self; } } function MakeGroupStop() { // Stop moving immediately. bInterpolating = false; GotoState( , '' ); if ( Follower != None ) Follower.MakeGroupStop(); } function MakeGroupReturn() { // Abort move and reverse course. bInterpolating = false; if(bIsLeader || Leader==Self) { if( KeyNum damageType) { if ( bDamageTriggered && (Damage >= DamageThreshold) ) { if ( (AIController(instigatedBy.Controller) != None) && (instigatedBy.Controller.Focus == self) ) instigatedBy.Controller.StopFiring(); self.Trigger(self, instigatedBy); } } //======================================================================== // Master State for OpenTimed mover states (for movers that open and close) state OpenTimedMover { function DisableTrigger(); function EnableTrigger(); Open: bClosed = false; DisableTrigger(); if ( DelayTime > 0 ) { bDelaying = true; Sleep(DelayTime); } DoOpen(); FinishInterpolation(); FinishedOpening(); Sleep( StayOpenTime ); if( bTriggerOnceOnly ) GotoState(''); Close: DoClose(); FinishInterpolation(); FinishedClosing(); EnableTrigger(); } // Open when stood on, wait, then close. state() StandOpenTimed extends OpenTimedMover { function Attach( actor Other ) { local pawn P; P = Pawn(Other); if ( (BumpType != BT_AnyBump) && (P == None) ) return; //#ifdef __L2 Hunter /*if ( (BumpType == BT_PlayerBump) && !P.IsPlayerPawn() ) return; if ( (BumpType == BT_PawnBump) && (Other.Mass < 10) ) return;*/ //#endif SavedTrigger = None; GotoState( 'StandOpenTimed', 'Open' ); } function DisableTrigger() { Disable( 'Attach' ); } function EnableTrigger() { Enable('Attach'); } } // Open when bumped, wait, then close. state() BumpOpenTimed extends OpenTimedMover { function Bump( actor Other ) { if ( (BumpType != BT_AnyBump) && (Pawn(Other) == None) ) return; //#ifdef __L2 Hunter /*if ( (BumpType == BT_PlayerBump) && !Pawn(Other).IsPlayerPawn() ) return; if ( (BumpType == BT_PawnBump) && (Other.Mass < 10) ) return;*/ //#endif Global.Bump( Other ); SavedTrigger = None; Instigator = Pawn(Other); Instigator.Controller.WaitForMover(self); GotoState( 'BumpOpenTimed', 'Open' ); } function DisableTrigger() { Disable( 'Bump' ); } function EnableTrigger() { Enable('Bump'); } } // When triggered, open, wait, then close. state() TriggerOpenTimed extends OpenTimedMover { function Trigger( actor Other, pawn EventInstigator ) { SavedTrigger = Other; Instigator = EventInstigator; if ( SavedTrigger != None ) SavedTrigger.BeginEvent(); GotoState( 'TriggerOpenTimed', 'Open' ); } function DisableTrigger() { Disable( 'Trigger' ); } function EnableTrigger() { Enable('Trigger'); } } //================================================================= // Other Mover States // Toggle when triggered. state() TriggerToggle { function Trigger( actor Other, pawn EventInstigator ) { SavedTrigger = Other; Instigator = EventInstigator; if ( SavedTrigger != None ) SavedTrigger.BeginEvent(); if( KeyNum==0 || KeyNum 0 ) { bDelaying = true; Sleep(DelayTime); } DoOpen(); FinishInterpolation(); FinishedOpening(); if ( SavedTrigger != None ) SavedTrigger.EndEvent(); Stop; Close: DoClose(); FinishInterpolation(); FinishedClosing(); } // Open when triggered, close when get untriggered. state() TriggerControl { function Trigger( actor Other, pawn EventInstigator ) { numTriggerEvents++; SavedTrigger = Other; Instigator = EventInstigator; if ( SavedTrigger != None ) SavedTrigger.BeginEvent(); GotoState( 'TriggerControl', 'Open' ); } function UnTrigger( actor Other, pawn EventInstigator ) { numTriggerEvents--; if ( numTriggerEvents <=0 ) { numTriggerEvents = 0; SavedTrigger = Other; Instigator = EventInstigator; SavedTrigger.BeginEvent(); GotoState( 'TriggerControl', 'Close' ); } } function BeginState() { numTriggerEvents = 0; } Open: bClosed = false; if ( DelayTime > 0 ) { bDelaying = true; Sleep(DelayTime); } DoOpen(); FinishInterpolation(); FinishedOpening(); SavedTrigger.EndEvent(); if( bTriggerOnceOnly ) GotoState(''); Stop; Close: DoClose(); FinishInterpolation(); FinishedClosing(); } // Start pounding when triggered. state() TriggerPound { function Trigger( actor Other, pawn EventInstigator ) { numTriggerEvents++; SavedTrigger = Other; Instigator = EventInstigator; GotoState( 'TriggerPound', 'Open' ); } function UnTrigger( actor Other, pawn EventInstigator ) { numTriggerEvents--; if ( numTriggerEvents <= 0 ) { numTriggerEvents = 0; SavedTrigger = None; Instigator = None; GotoState( 'TriggerPound', 'Close' ); } } function BeginState() { numTriggerEvents = 0; } Open: bClosed = false; if ( DelayTime > 0 ) { bDelaying = true; Sleep(DelayTime); } DoOpen(); FinishInterpolation(); Sleep(OtherTime); Close: DoClose(); FinishInterpolation(); Sleep(StayOpenTime); if( bTriggerOnceOnly ) GotoState(''); if( SavedTrigger != None ) goto 'Open'; } //----------------------------------------------------------------------------- // Bump states. // Open when bumped, close when reset. state() BumpButton { function Bump( actor Other ) { if ( (BumpType != BT_AnyBump) && (Pawn(Other) == None) ) return; //#ifdef __L2 Hunter /*if ( (BumpType == BT_PlayerBump) && !Pawn(Other).IsPlayerPawn() ) return; if ( (BumpType == BT_PawnBump) && (Other.Mass < 10) ) return;*/ //#endif Global.Bump( Other ); SavedTrigger = Other; Instigator = Pawn( Other ); Instigator.Controller.WaitForMover(self); GotoState( 'BumpButton', 'Open' ); } function BeginEvent() { bSlave=true; } function EndEvent() { bSlave = false; Instigator = None; GotoState( 'BumpButton', 'Close' ); } Open: bClosed = false; Disable( 'Bump' ); if ( DelayTime > 0 ) { bDelaying = true; Sleep(DelayTime); } DoOpen(); FinishInterpolation(); FinishedOpening(); if( bTriggerOnceOnly ) GotoState(''); if( bSlave ) Stop; Close: DoClose(); FinishInterpolation(); FinishedClosing(); Enable( 'Bump' ); } event GetEffTargetLocation(out vector LocVector) { if(LocVector.X == 0 && LocVector.Y == 0 && LocVector.Z == 0) { //LocVector = Location + (RangeDelta[0]+RangeDelta[1]+RangeDelta[2]+RangeDelta[3])/2*FRand(); //LocVector.Z = LocVector.Z +(2*FRand() -1 )*RangeHeight/2; LocVector = Location + (RangeDelta[0]+RangeDelta[1]+RangeDelta[2]+RangeDelta[3])/4; LocVector.Z = LocVector.Z + RangeHeight/2; } } x"R‹M.QSOJJ-D(Bw)*K )w)w%x"M. P‹€W‹Z‹hïT -`. €Y‹G )Uk Â0[‹m sU.u,a!S k®š™? Â0[//#ifdef __L2 // zodiac //============================================================================= // MovableStaticMeshActor. // An actor that is drawn using a static mesh(a mesh that never changes, and // can be cached in video memory, resulting in a speed boost). //============================================================================= class MovableStaticMeshActor extends StaticMeshActor native placeable; struct L2RotatorTime { var() config float PitchTime; var() config float RollTime; var() config float YawTime; }; var rotator L2OrgRotator; var L2RotatorTime L2CycleDeltaTime; var L2RotatorTime L2CurrentCycleTime; var L2RotatorTime L2CurrentMax; var bool bL2InitMove; var(L2Movement) array L2MovementTag; var(L2Movement) L2RotatorTime L2AccelRatio; var(L2Movement) bool bUseL2RotatorMaxRandom; var(L2Movement) bool bUseL2RotatorRandomStart; var(L2Movement) rotator L2RotatorRate; var(L2Movement) rotator L2RotatorMax; Aclass MotionBlur extends CameraEffect native noexport editinlinenew collapsecategories; var() byte BlurAlpha; var const int RenderTargets[2]; var const float LastFrameTime; €m hi LÛXš-A#'x‚w*\h. xwh*h$V].^.\.`êG[.€?’wD#*D#{ n rclass Modifier extends Material native editinlinenew hidecategories(Material) abstract; var() editinlineuse Material Material; function Reset() { if( Material != None ) Material.Reset(); if( FallbackMaterial != None ) FallbackMaterial.Reset(); } function Trigger( Actor Other, Actor EventInstigator ) { if( Material != None ) Material.Trigger( Other, EventInstigator ); if( FallbackMaterial != None ) FallbackMaterial.Trigger( Other, EventInstigator ); } T//============================================================================= // MessagingSpectator - spectator base class for game helper spectators which receive messages //============================================================================= class MessagingSpectator extends PlayerController abstract; function PostBeginPlay() { Super.PostBeginPlay(); bIsPlayer = False; } H//============================================================================= // MeshObject // // A base class for all Animating-Mesh-editing classes. Just a convenient place to store // common elements like enums. //============================================================================= class MeshObject extends Object abstract native; // Impostor render switches enum EImpSpaceMode { ISM_Sprite, ISM_Fixed, ISM_PivotVertical, ISM_PivotHorizontal, }; enum EImpDrawMode { IDM_Normal, IDM_Fading, }; enum EImpLightMode { ILM_Unlit, ILM_PseudoShaded, // Lit by hardware, diverging normals. ILM_Uniform, // Lit by hardware, all normals pointing faceward. }; // Mesh static-section extraction methods enum EMeshSectionMethod { MSM_SmoothOnly, // Smooth (software transformed) sections only. MSM_RigidOnly, // Only draw rigid parts, throw away anything that's not rigid. MSM_Mixed, // Convert suitable mesh parts to rigid and draw remaining sections smoothly (software transformation). MSM_SinglePiece, // Freeze all as a single static piece just as in the refpose. MSM_ForcedRigid, // Convert all faces to rigid parts using relaxed criteria ( entire smooth sections forced rigid ). }; €i nlH[ e‹L.[p—[[××××   JÕ6` L.Õ6ž` J.Õ6“` I. X‹€uK.K >4ÒYN.Y K.QwN*KN-N0EN-M0zD A A o @~r‹€‰f‹nM wN\b€?å gg#h#i#n[g#h#i#y y)n9DE#)t ny i//============================================================================= // Emitter: An Unreal Mesh Particle Emitter. //============================================================================= class MeshEmitter extends ParticleEmitter native; var (Mesh) staticmesh StaticMesh; var (Mesh) bool UseMeshBlendMode; var (Mesh) bool RenderTwoSided; var (Mesh) bool UseParticleColor; var () bool IsEnchantEffect; var transient vector MeshExtent; K //============================================================= // MeshContainer : ActorÀÇ žÞœ¬žŠ °üž®Çώ Ŭ·¡œº // flagoftiger 20070221 //============================================================= class MeshContainer extends Object native; struct MeshComponentArrayPtr { var int Ptr; }; var private Actor Owner; var private MeshComponent FirstMeshComponent; // MeshComponent ž®œºÆ®ÀÇ Ã¹¹ø° Æ÷ÀÎÅÍ var private native MeshComponentArrayPtr MeshComponentArray[31]; // ŸÆÀÌÅÛ œœ·ÔÀÇ °¹Œö ST_MAX+2 ST_mAX°¡ º¯ÇÏžé ŒöÁ€ÇØÁàŸßÇÑŽÙ. var private native MeshComponentArrayPtr MeshComponentBufferArray[31]; // »õ·Î¿î žÞœ¬ÄÁÅ×À̳ʞŠ ÀӜúž°üÇÑŽÙ. var private bool bLoaded; Y//============================================================= // MeshComponent // flagoftiger 20070221 //============================================================= class MeshComponent extends Object native; enum EMeshComponentStatus { MCS_None, MCS_FADEIN, // žžµéŸîÁ®Œ­ ÆäÀ̵å Àεǎ »óÅ MCS_FADEOUT, // »èÁŠµÇ±â Àü¿¡ ÆäÀÌµå ŸÆ¿ôµÇŽÂ »óÅ MCS_READYTOFADEOUT, // ÆäÀÌµå ŸÆ¿ô µÇŸîŸßÇÒ »óÅ MCS_CREATED, // ž· žžµéŸîÁø »óÅ (·Îµù µÇ±â Àü) MCS_DELETEME // »èÁŠµÇŸîŸß ÇÏŽÂ »óÅ }; enum EMeshSimulationType { EMST_None, EMST_HAIR, // ±âÁžÀÇ ÇìŸîœÃ¹Ä·¹ÀÌŒÇ EMST_CLOTH // »õ·Î¿î ¿Ê°š œÃ¹Ä·¹ÀÌŒÇ }; struct native constructive MeshComponentData { var Name MeshName; var array TexNames; var int BodyPart; // Ÿî¶² ŸÆÀÌÅÛ Slot¿¡ÀÇÇÑ MeshÀÎÁö ŸË±âÀ§ÇØ var bool bAnimOwner; // ŸÖŽÏžÞÀÌŒÇÀ» °¡Áø žÞœ¬ÀÎÁö var int SimulationType; // ÇìŸî œÃ¹Ä·¹ÀÌŒÇÀ» ÇÏŽÂ žÞœ¬ÀÎÁö var int AttachType; // Attach Type (¹«±â, ¹æŸî±ž) var Name AttachBoneName; // AttachµÉ Bone Name var Vector AttachOrigin; // MeshÀÇ »óŽëÀûÀÎ Origin (ÇìŸîŸÇŒŒ»çž®¿¡ »ç¿ë) var Rotator AttachRotOrigin; // MeshÀÇ »óŽëÀûÀÎ RotOrigin (ÇìŸîŸÇŒŒ»çž®¿¡ »ç¿ë) var Vector RenderScale; // ·£Žõžµ œºÄÉÀÏ (Pawn·¹ÀÌŸî¿¡Œ­ °è»ê °¡ŽÉÇÑ °ÍÀ» ÇØŒ­ ³Ñ±âÀÚ) var Color ColorVariationColor; var bool bRender; }; var private Actor Owner; var private Mesh Mesh; var private MeshInstance MeshInstance; var private array Materials; var MeshComponent LastMeshComponent; var MeshComponent NextMeshComponent; var MeshComponent AnimMeshComponent; // AnimationÀ» °¡Áø MeshComponentÀÇ Æ÷ÀÎÅÍ var MeshComponentData MeshData; var private float fAlphaFactor; var private bool bLoaded; var private bool bByResourceManager; var private EMeshComponentStatus MeshComponentStatus; var int SkinnedDataIndex; var private bool m_bRender; Y//============================================================================= // MatSubAction: Base class for Matinee sub actions. // // A Matinee action can have any number of sub actions. These sub actions // are executed while the main action is running. //============================================================================= #exec Texture Import File=Textures\SubActionFOV.pcx Name=SubActionFOV Mips=Off #exec Texture Import File=Textures\SubActionTrigger.pcx Name=SubActionTrigger Mips=Off #exec Texture Import File=Textures\SubActionOrientation.pcx Name=SubActionOrientation Mips=Off #exec Texture Import File=Textures\SubActionFade.pcx Name=SubActionFade Mips=Off #exec Texture Import File=Textures\SubActionGameSpeed.pcx Name=SubActionGameSpeed Mips=Off #exec Texture Import File=Textures\SubActionSceneSpeed.pcx Name=SubActionSceneSpeed Mips=Off #exec Texture Import File=Textures\SubActionCameraShake.pcx Name=SubActionCameraShake Mips=Off class MatSubAction extends MatObject abstract native editinlinenew; enum ESAStatus { SASTATUS_Waiting, // Waiting to execute SASTATUS_Running, // Is currently executing SASTATUS_Ending, // Is one tick away from expiring SASTATUS_Expired, // Has executed and finished (ignore for rest of scene) }; var(Time) float Delay; // Seconds before it actually executes var(Time) float Duration; // How many seconds it should take to complete var texture Icon; // The icon to use in the matinee UI var ESAStatus Status; // The status of this subaction var localized string Desc; // Desc used by the editor and engine stats var transient float PctStarting; var transient float PctEnding; var transient float PctDuration; k‹j#N ƒÎ]?b€?å g]ede[]edy y)eÅ,E#K××eÔÕ®H.«j#¯Ã?e9?èÔÕ®F.«j#¯Ã?d9?è]99yßKÕG#]m#ak#l#Ke')%v m#k#l#]ed ~ //============================================================================= // MatObject // // A base class for all Matinee classes. Just a convenient place to store // common elements like enums. //============================================================================= class MatObject extends Object abstract native; struct Orientation { var() ECamOrientation CamOrientation; var() actor LookAt; var() float EaseIntime; var() int bReversePitch; var() int bReverseYaw; var() int bReverseRoll; var int MA; var float PctInStart, PctInEnd, PctInDuration; var rotator StartingRotation; }; @l‹~@ class MaterialTrigger extends Triggers; #exec Texture Import File=Textures\MaterialTrigger.pcx Name=S_MaterialTrigger Mips=Off MASKED=1 var() array MaterialsToTrigger; function PostBeginPlay() { local int i; for( i=0;i& History ); a class MaterialSwitch extends Modifier editinlinenew hidecategories(Modifier) native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var() transient int Current; var() editinlineuse array Materials; function Reset() { Current = 0; if( Materials.Length > 0 ) Material = Materials[0]; else Material = None; if( Material != None ) Material.Reset(); if( FallbackMaterial != None ) FallbackMaterial.Reset(); } function Trigger( Actor Other, Actor EventInstigator ) { Current++; if( Current >= Materials.Length ) Current = 0; if( Materials.Length > 0 ) Material = Materials[Current]; else Material = None; if( Material != None ) Material.Trigger( Other, EventInstigator ); if( FallbackMaterial != None ) FallbackMaterial.Trigger( Other, EventInstigator ); } p virtual void PostEditChange(); virtual UBOOL CheckCircularReferences( TArray& History ); virtual void PreSetMaterial(FLOAT TimeSeconds); virtual void Serialize(FArchive& Ar); void Reset(); void Trigger(); kclass MaterialSequence extends Modifier editinlinenew hidecategories(Modifier) native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) enum EMaterialSequenceAction { MSA_ShowMaterial, MSA_FadeToMaterial, }; struct native MaterialSequenceItem { var() editinlineuse Material Material; var() float Time; var() EMaterialSequenceAction Action; }; enum EMaterialSequenceTriggerActon { MSTA_Ignore, MSTA_Reset, MSTA_Pause, MSTA_Stop, }; var() array SequenceItems; var() EMaterialSequenceTriggerActon TriggerAction; var() bool Loop; var() bool Paused; var transient float CurrentTime; var transient float LastTime; var float TotalTime; function Reset() { CurrentTime = 0; LastTime = 0; Paused = default.Paused; } function Trigger( Actor Other, Actor EventInstigator ) { switch(TriggerAction) { case MSTA_Reset: CurrentTime = 0; LastTime = 0; break; case MSTA_Pause: Paused = !Paused; break; case MSTA_Stop: Paused = True; break; } } //============================================================================= // Material: Abstract material class // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class Material extends Object native hidecategories(Object) collapsecategories noexport; #exec Texture Import File=Textures\DefaultTexture.pcx var() Material FallbackMaterial; var Material DefaultMaterial; var const transient bool UseFallback; // Render device should use the fallback. var const transient bool Validated; // Material has been validated as renderable. // Unnecessary variable - NeverDie //#ifdef __L2//kurt //var int Reserved; //#endif // Made all variable transient to prevent duplicated serialization - NeverDie var transient int ShaderProperty; // Material Shader Property ptr var() transient string ShaderCode; var transient int MaterialCodeVersion; function Reset() { if( FallbackMaterial != None ) FallbackMaterial.Reset(); } function Trigger( Actor Other, Actor EventInstigator ) { if( FallbackMaterial != None ) FallbackMaterial.Trigger( Other, EventInstigator ); } R//============================================================================================ // MatDemoActor: Non-abstract class to hang animating meshes on in the in-editor preview mode. //============================================================================================ class MatDemoActor extends Actor native; p‹}‹Z‘ÿ_'„-e‚—9:f% š9:f% €|‹E.P ›€aŠ‚-E. a ( T$ k $bh8u¢¢°k®š™™>k®š™?8m ' p~AŒ€B#~€D.n#XŽÇc &‚Z)?q!i -n#-u-q#-v-u(-v(b-Fq!A Œ„r*r *q! NNè)? \ß-Fq!Aæq!W Nw.b *L.b \ ){"'E-Fq!ALq!W ~‚)?\S  œwq!W Ü„„±k-n#S8u „-q#GT  q!W Lclass MatchInfo extends Object; var string LevelName; var localized string MenuName; // usually "", otherwise, override the name in the SP menus var string EnemyTeamName; var string SpecialEvent; var float DifficultyModifier; var float GoalScore; var string URLString; var string MenuDescription; var int NumBots; // number of bots in match, besides player var string GameType; // GameInfo class to use var string ThumbName; // name of a material (in form package.group.name) to use as the thumbnail ‚EŒf@*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2FŒm`U‚€„Ø`‚DŒS ô i6 \--Fq!A 4q!W GŒT œi8` HŒUjø*„r*r *q! P‚Z)?q!i –)? \–-F`q!W ©-Fq!AöÉS89öéG8Gö`q!W c//============================================================================= // MatAction: Base class for Matinee actions. //============================================================================= class MatAction extends MatObject abstract native; var() interpolationpoint IntPoint; // The interpolation point that we want to move to/wait at. var() string Comment; // User can enter a comment here that will appear on the GUI viewport var(Time) float Duration; // How many seconds this action should take var(Sub) export editinline array SubActions; // Sub actions are actions to perform while the main action is happening var(Path) bool bSmoothCorner; // true by default - when one control point is adjusted, other is moved to keep tangents the same var(Path) vector StartControlPoint; // Offset from the current interpolation point var(Path) vector EndControlPoint; // Offset from the interpolation point we're moving to (InPointName) var(Path) bool bConstantPathVelocity; var(Path) float PathVelocity; var float PathLength; var transient array SampleLocations; var transient float PctStarting; var transient float PctEnding; var transient float PctDuration; MUŒS L›na nÿÿÿÿÿÿÿÿÿÿ M|0ýl:8aèp9V stuck in NormalFire and not animating! yLŒu6rm -u' ÂÿÿZMŒ`;­m -v' Âÿÿm NŒPŒ9>ãm €i OŒRŒG?n €R QŒTŒ`C.nX| €ŠSŒHIpnk KŒ]ŒWp{p¬-A#(,‚Z)?q!iX)? \uS9’GG` nÿÿÿÿÿÿÿÿÿÿœD.XŒa Wo' €Q.WŒz\ZoG P#YŒGa›o)?q!i ÂÿÿR ZŒ\Œ`g p` €[Œ^ŒulKp q!A' €VŒmŒi®:uÿÿÿÿÿÿÿÿÿÿP#G}÷q ÂÿÿP.`Œx ~r Âÿÿm aŒcŒ9;r €i bŒeŒG€`r €ydŒu„ƒr -u' ÂÿÿZfŒ`‰Ÿr -v' ÂÿÿgŒiŒuŽs -F'' €£hŒ)”Zs:*-e$–9:9:$G*x -e(b  R jŒlŒ`¡;t2ff$–9:9:$U*X| €MkŒ|«æt97aèp9V stuck in Reloading and not animating! _Œ~ŒAýîzÿÿÿÿÿÿÿÿÿÿm pŒ9·Jv €i oŒrŒGžov €yqŒuŒ’v -u' ÂÿÿZsŒ`ÁÍv -v' ÂÿÿtŒvŒuÈCwFn%C.r#B.:„-_ °r#@?q!AB-F'' C.€E€!jclass MaskTexture extends Texture native; var() Texture ReferenceTexture; var array RLEData; ^£uŒ)Ò x2.-u(-v(-_(-F( ŠzŒHÛ±x-u(-v( R {Œ}Œ`áy-Fq!A>r*çp9V no owner8`%q!wi-_`š9:9:$XfUwe -_'| €M|Œ|úz64aèp9V stuck in Active and not animating! nŒJAÿ|ÿÿÿÿÿÿÿÿÿÿm A9{ €i @CG€{ €yBuÁ{ ÂÿÿZD`ß{ ÂÿÿEGu |' €R FI`n|.G €£H)º|-F(-D(a  ŒS^ 6>ÿÿÿÿÿÿÿÿÿÿm M9!¹} €i LOG"Þ} €R NQ`&~U| €MP|,a~<:aèp9V stuck in ClientFiring and not animating! ŠRH3ú~‚h -h4G  KWM Oȁÿÿÿÿÿÿÿÿÿÿj3Bw.*k( £U)Hj aÍÌL=' ŠVHM­ a( T@SïhQNM. A. Q-_(c q!A XZu_ý‚ -F'' €Yt#a h|ƒXD‚a u%!J n%t#v#A.a&t#«v#ÍÌÌ>Va!u €?ÍÌL= t$// __L2 kurt // MarkProjector // class MarkProjector extends Projector placeable native; //#exec Texture Import File=Textures\Sun.tga Name=SunIcon1 Mips=Off MASKED=1 UCLAMPMODE=CLAMP VCLAMPMODE=CLAMP //#exec Texture Import file=Textures\GRADIENT_Fade.tga Name=GRADIENT_Fade Mips=Off UCLAMPMODE=CLAMP VCLAMPMODE=CLAMP #exec Texture Import File=Textures\gui021.tga Name=Gui021 Mips=Off MASKED=1 UCLAMPMODE=CLAMP VCLAMPMODE=CLAMP var() vector DesireLocation; var() vector OffsetDesireLocation; var() bool bAttachMark; var() Actor ProjectedActor; // ifdef __L2 kurt native final function bool UpdateDesireLocation(); // endif // // PostBeginPlay // simulated event PostBeginPlay() { super.PostBeginPlay(); Enable('Tick'); } simulated event Destroyed() { Super.Destroyed(); } simulated function Timer() { DetachProjector(true); } // // UpdateMarkProjector // function UpdateMarkProjector() { // local vector ShadowLocation; // local Plane BoundingSphere; // local vector HitNormal, // HitLocation, // Dir; // local float Distance; if(bAttachMark) { DetachProjector(true); SetCollision(false,false,false); //if(ShadowActor != None && !ShadowActor.bHidden) //{ FOV = 1; UpdateDesireLocation(); //Trace(HitLocation,HitNormal,OffsetDesireLocation,DesireLocation); SetLocation(DesireLocation); //SetRotation(Rotator(Normal(-OffsetDesireLocation))); SetRotation(Rotator((-OffsetDesireLocation))); //SetRotation(Rotator(-vect(1,1,8))); //SetRotation(Rotator(vect(0,1,0))); //SetRotation(Rotator(vect(1,0,0))); //SetRotation(Rotator(Normal(-LightDirection))); SetDrawScale(0.10); AttachProjector(); SetCollision(true,false,false); bAttachMark=false; SetTimer(10, false); } //} } // // Tick // simulated function Tick(float DeltaTime) { super.Tick(DeltaTime); UpdateMarkProjector(); } simulated event Touch( Actor Other ) { //if( Other.bAcceptsProjectors && (ProjectTag=='' || Other.Tag==ProjectTag) && (bProjectStaticMesh || Other.StaticMesh == None) && (Pawn(Other) != None)) if( Other.bAcceptsProjectors && (ProjectTag=='' || Other.Tag==ProjectTag) && (bProjectStaticMesh && Other.StaticMesh != None) ) AttachActor(Other); } // // Default properties // G//============================================================================= // MapList. // // contains a list of maps to cycle through // //============================================================================= class MapList extends Info abstract; var(Maps) config array Maps; var config int MapNum; function string GetNextMap() { local string CurrentMap; local int i; CurrentMap = GetURLMap(); if ( CurrentMap != "" ) { if ( Right(CurrentMap,4) ~= ".unr" ) CurrentMap = CurrentMap; else CurrentMap = CurrentMap$".unr"; for ( i=0; i Maps.Length - 1 ) MapNum = 0; if ( Maps[MapNum] == "" ) MapNum = 0; SaveConfig(); return Maps[MapNum]; } k [b sS„ `% _c xŠ„W-u(-v(=„au%!J a!J €?aX.$€? `e l…q!W`% a`‡¹… bI&‰ׅ $"W ŒT¢èø A\ÓZ  "" " "  oÂ@€UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿI’$A$ÿÿUUQQUUUUUUUUÿI’$A$ÿÿUUQQUUUUUUUUÿI’$A$ÿÿUUQQUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿI’$ÿÿUUÿI’$ÿÿUUÿI’$@$ÿÿUUPPUUUUUUUUÿI’$I’ÿÿUUUUUUUUUUUUUUUUUUUUUUUÿI’$I’ÿÿUUUÿI’$I‚$ÿÿUUUTUUUUÿI’$I‚$ÿÿUUUTUUUUUUUUÿI’$H‚$ÿÿUUTTUUUUUUUUUUUUÿI’$I‚$ÿÿUUUTUUUUÿI’$I‚$ÿÿUUUTUUUUUUUUUUUUUUUUÿI’$I’ÿÿUUUÿI’$IÿÿUUUÿI’$I‚$ÿÿUUUTUUUUÿI’$H‚$ÿÿUUTTUUUUUUUUUUUUUUUUUUUUÿI’$H‚$ÿÿUUTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿÿÿÿÿÿÿÿÿ@$@$ÿÿPPPPUUUUÿI$I’$ÿÿUUUÿAÿÿUUUUÿ $H‚$ÿÿQTTÿH$ ’ ÿÿTQEEUUUUÿ  ’ ÿÿEEEÿ@’$I’$ÿÿPUUUÿH‚$H‚$ÿÿTTTTÿI‚$A ÿÿUTEÿH‚$@ ÿÿTTEÿI‚$I’$ÿÿUTUUUUUUÿH‚$H‚$ÿÿTTTTUUUUUUUUÿIÿÿÿH‚$H‚$ÿÿTTTTÿI I’$ÿÿEUUÿ@‚ H‚$ÿÿPDTTUUUUÿ ’ ’ ÿÿEEEEÿ ’ ’ ÿÿEEEEUUUUÿA‚$H‚$ÿÿQTTTÿA$A$ÿÿQQQQÿH‚$H‚$ÿÿTTTTUUUUÿH‚$H‚$ÿÿTTTTUUUUUUUUUUUUUUUUUUUUÿH‚$H‚$ÿÿTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUUUUUUUUUÿIÿÿÿÿÿ@ÿI’$H‚$ÿÿUUTTÿ$H‚$ÿÿ@PTTÿI$I’$ÿÿUUUÿ@$A$ÿÿPPQQUUUUÿI’$IÿÿUUÿH‚$I’$ÿÿTTUUUUUUÿH$ ÿÿTQÿ $H’$ÿÿEQTUUUUUÿ ’ ’ ÿÿEEEÿ $I’$ÿÿPUUÿH‚$H‚$ÿÿTTTTÿA$@$ÿÿQQPQÿIIÿÿÿI’$H’$ÿÿUUTUUUUUÿH‚$H‚$ÿÿTTTTUUUUÿIÿÿÿÿÿÿÿH‚$H‚$ÿÿTTTTUUUUÿH‚$H‚$ÿÿTTTTUUUUÿ ’ ’ ÿÿEEEEÿ ’ ’ ÿÿEEEEUUUUÿH$ $ÿÿTQUÿA$@$ÿÿQQPQÿH‚$H‚$ÿÿTTTTUUUUÿH‚$H‚$ÿÿTTTTUUUUUUUUUUUUUUUUUUUUÿH‚$H‚$ÿÿTTTTUUUUUUUUUUUUUUUUUUUUÿ$A$ÿÿQQQÿ@’$I’$ÿÿPUUUÿ$I’$ÿÿUUUÿ@$A$ÿÿPQQQUUUUUUUUÿ$I’$ÿÿUUUÿ@’$I’$ÿÿPUUUÿ$I’$ÿÿUUUÿ@’$I’$ÿÿPUUUUUUUUUUUÿA$A$ÿÿQQQQUUUUÿ$I’$ÿÿUUUÿ$I’$ÿÿUUUÿ@’$I’$ÿÿPUUUÿ ÿÿÿ ÿÿ@ÿH‚$I’$ÿÿTTUUÿH‚$@ ÿÿTTP@ÿI’$I’ÿÿUUUÿA$@$ÿÿQQPPÿI’$I’ÿÿUUUÿ H’$ÿÿETUÿI’$H$ÿÿUUTQÿI’$I$ÿÿUUUÿIÿÿÿI’$$ÿÿUUUUUUUÿ ’ ’ ÿÿEEEEÿI’$IÿÿUUÿH‚$H‚$ÿÿTTTTÿA$ ÿÿQQEÿI ÿÿEÿI$I’$ÿÿUUUÿ$I’$ÿÿUUUÿ€$H‚$ÿÿTTTÿH’$I’$ÿÿTUUUÿ ÿÿÿÿÿÿÿH‚$H‚$ÿÿTTTTUUUUÿH‚$H‚$ÿÿTTTTUUUUÿ ’ ’$ÿÿEEEUÿ ’ ’$ÿÿEEEUUUUUUUUUÿA$A$ÿÿQQQQÿH€$H‚$ÿÿTTTÿ$I’$ÿÿUUUÿ$I’$ÿÿUUUÿH$I’$ÿÿUUUÿ$I’$ÿÿUUUÿ€$H‚$ÿÿTTTÿH$I’$ÿÿUUUÿ$I’$ÿÿUUUÿH‚$H‚$ÿÿTTTTUUUUUUUUUUUUUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿÿÿÿÿÿÿÿÿ@$@$ÿÿPPPPÿII’$ÿÿUUÿI’$HÿÿUUTÿA$H’$ÿÿQQTUUUUUÿIIÿÿUUUUUUUUÿ $ÿÿA@@Pÿ I’$ÿÿUUÿH’$I’$ÿÿTUUUÿH’$I’$ÿÿTUUUÿH‚$H’$ÿÿTTTUÿH’$I’$ÿÿTUUUUUUUÿH‚$H‚$ÿÿTTTTUUUUUUUUÿ ÿÿÿH‚$H‚$ÿÿTTTTÿI’$ ’ÿÿUUEÿH‚$$ÿÿTTDPUUUUÿI’ ’ ÿÿUEEEÿI’ ’ ÿÿUEEEUUUUUUUUÿA$A$ÿÿQQQQÿH‚$H‚$ÿÿTTTTUUUUUUUUUUUUUUUUÿH‚$H‚$ÿÿTTTTUUUUUUUUÿH‚$H‚$ÿÿTTTTUUUUUUUUUUUUUUUUUUUUÿA$I’$ÿÿQQUUUUUUUUUUÿA$I’$ÿÿQQUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿA$I’$ÿÿQQUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿI’$ÿÿUUÿI’$ÿÿUUÿ@$I’$ÿÿPPUUUUUUUUUUUUUUUUUUÿI$I’$ÿÿUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿH‚$I’$ÿÿTTUUUUUUUUUUUUUUÿH’$I’$ÿÿTUUUUUUUÿH’$I’$ÿÿTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿH‚$I’$ÿÿTTUUUUUUUUUUÿH‚$I’$ÿÿTTUUUUUUUUUUUUUUUUUUUUUUÿI’$I$ÿÿUUUQUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿI’$I$ÿÿUUUÿA A$ÿÿQ@QUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿIÿÿUUUUUÿI  ÿÿU@@@ÿIÿÿUUUUUÍÿ¶m'Fb†Þ÷U ‰Ëí¶mû6nçÿÿU%%íþ¶Ûµ ÛŸ÷UTTV§ú¶m$ʟ¿ÿÿAU-€çþ¿ý‡ÿÿãÿÿAP€ òý¶mÛ±}ØÿÿUUTXÌþ¶m÷æïÿÿU% Ìþ¶ýÚ?ÇÿÿUX`BŠÿ¶m#vc'ÿÿU5%Šÿ¶Ûµ ÛÿÿUTVWUUUUáþ¶m#ÖïüßÿU% Œý¶ýgÿýÞ÷U€ àþ¶mÛ°۞÷UUVTÿI’IÿÿUÿI$@$ÿÿUPPP×þ¶m¶cëŸ÷U•%ý¶ýد}ÙÿÿUPX\ÿ¶í„nb%Þ÷U àI’$I‚$4¥UUUT¥ö¶mû¶Ÿ <çU0Œÿ¶Û±ŽßUTTUUUUÿI’$I’ÿÿUUUÿI’$I‚$ÿÿUUUTUUUUUUUUUUUUUUUUUUUUUUUU«ø¶m[¶k;ÆU•Öþ¶ýد}؝ïUPPXáý¶m+Ώ?Ÿ÷U%çý¶ýÿoçÞ÷U€àý¶mÛ±}ØŸ÷UUTXUUUUàû¶mçƏÿÞ÷U ÿI‚$H‚$ÿÿUTTT¥ü¶mÛ6bç}ïUU5òý¶üÿÿÙÿÿ!UXéþ¶Ù̟ïUX@UUUUUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUÿI’$I’ÿÿUUUUUUUÿI’$I’ÿÿUUUUUUUUUUUUUUUUUUUUUUUûÿNâŠF`ž÷UUUUòûyŒÏ¶mÛç@@UUòûÎc|¶mÛçUUÿI’ $ÿÿUUÖúÎñÿÿÇŸ÷BÖúvþÿÿo<Ÿ÷ Öÿ°Ø‰mÛßÿVPPUÖûÿýßùƒÿÞ÷@@àû¿ÿÛ¿ýßÿPP€þÿmÛ¶mÛŸ÷PUUUÌÿNìÄN`&ßÿAA ÌÿNìÄHœÐßÿAAB`Ìýæë{œÏ}ï B`UUUUUUUU»úþïüÆoçÞ÷! íýöüùóÓÿÿA `ùÿ± Û¶mÛ]ïTTUUòû¶c¶mۚÖUUöÿ¡ضmÛ]ïPPUU«ývnýîïüßÿA Ëý±]Û³ ÛÛÞTTVVËývn÷önãßÿ%%%«ý±}Ù¯ýØßÿ T\XP§ýùæV✟÷ §ýÿó‰ÌÇŸ÷àpBÿI’$I’ÿÿUUUÿ  ÿÿÿH‚$HÿÿTTTÿI’$I‚$ÿÿUUUTUUUUUUUUUUUUUUUUUUUUÌÿ¶c#6c'Þ÷%%Ëý·Ûµ ÛçTTTV»ûù™ÿýßÞ÷a€À@@»àvnã¶oûÿÿ%5ùÿډØŸ÷PPPPºü6bÿöo‡ï%…úÿI&rb'ßÿÿH‚$H‚$ÿÿTTTTûþ6bÛ¶mÛ<çUUU»ÿ±mÛ¶mÿÿTUUÕàþþãÿø“ÿÿ€UUUUUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUÿAA$ÿÿQQQÿI$I’$ÿÿUPUUÿII’$ÿÿUUUÿII’ÿÿUUÿH$H’$ÿÿTPTUÿ  ’ÿÿEEÿII’$ÿÿUUUÿI$I’$ÿÿUPUUUUUUUUUUUUUUÌöÎãŸîk\ÿÿA‰‰‰‰UUUUUUUUUUUUÿI’$ ÿÿUU×ú<Ãÿÿÿÿÿb`×úæéÿÿÿÿÿ‰ÿI’$@$ÿÿUUPPàþFn[¶mÛÿÿ •UUËÿI’$ ’8ÿÿ ¥ûý؏ýÛÿÿ\XPPòÿ6bÛ¶mÛÿÿ%UUUšòe;6nçÿÿAؕ5%ìþ}x1NçÿÿAP˜$Ëþ¶ý×ÿ <ßÿU`€ »û¶m¶cû}ïU•ÌÿH’€ Øÿÿ €`PçÿIHâ&Þ÷ @€©þ¶­‡ùûßÿaUƒ€ÀUUUUUUUUþÿFâ$Nâ$ÿÿUUUUÿIIÿÿþÿØ‰ØÿÿPPPP»ûFlÛ¶mÛßIUUU»ùlÛ¶mÛÚÖaUUUÿ I’$ÿÿUUÿ ÿÿÿH‚$ÿÿTTÿH‚$I’$ÿÿTTUUUUUUÿI’ ÿÿUÿIÿÿUUUUUUUUUŒþöï=îéßÿA ‰ÁUUUU¥ûÿýßÿÿÿ @@@À»ÿ¶c;¶c#ÿÿ5ûÿ‰Ø‰ØßÿPPPPUUUUÿ  ÿÿÿH‚$H‚$ÿÿTTTTUUUUŒÿ6b'NÒ$ï%»þüÀ Ûßÿ!@p\WUUUUUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUÿA$A$ÿÿQQQQUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿIÿÿUUUUUUUUUUUUUÖü¶a›¶c;ž÷••€üýÚ§}ØßÿPXX\€ü|Ü×9ÃŸ÷!Bb`pUUUU¥úù¿Èo$ÿÿ¢@‚-Œÿ‰“ I’€ÿÿ!0€¥ûýر ÛÿÿPXTWUUUUËÿvâ¥N€Äï B¥ÿpb'vb7ÿÿ%Ìÿvb'@’„ßÿ €öþ¶c¶mÛçUUíý¿ýÓùoäÿÿP` §þFîþÿÿdÞ÷A €×üý?ùo€}ï@ òI’$H’$8ÆUUTUUUUUüÎïüîoýßÿ  Âó¶-ÛŽÛ÷œUVTTÂó¶oë6oçÿÿ%%%ûýد}ÙŸ÷ PPX\UUUUUUUUUUUUÿ I’$ÿÿUUÿH‚$I’$ÿÿTTUUÿI’IÿÿUÿI$@$ÿÿUPPPUUUUUUUUÿI’ ÿÿUÿI‚$H‚$ÿÿUTTT§üxÌÇ9Ãž÷!CB`pUUUUØýý…?îo+ï€%àý6nçÿÿÞ÷%€Ëô}رmÛçPXTUUUUUÿ  ÿÿÿH‚$H‚$ÿÿTTTT¥ù¶kãvnçÿÿ •5%ýÿ ØI’$ßÿ@PÿI’$ÿÿUUUUUUUUUUUUUUÿA$I’$ÿÿQQUUUUUUUUUUÿA$A’$ÿÿQQQUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿ@$I’$ÿÿPPUUUUUUUUUUàû9lÛ¶m۝ï`UUUòI$I’$8ÆUUUòÿ lÛ¶mÛÿÿ`UUUUUUUUUUUUUUUUUUUUUUUUUUU×þvnë¶cž÷%•ý±}Ù¯ýØÞ÷T\XP×ývnÿÞãŸ÷ àý± Û¶mÛ}ïTVUUUUUUUUUUUUUUUUUUUUUU¥ù¶m¶cÛÛÞUÕUéþŽ]Ù³mۚÖQPTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU¥ú¶mÛ6bäÿÿUUµ öþ¶mÛyðÿÿÿUU€§ÿ¶mÛ°Ù}ïUUWXUUUUòþ¶mÛ¶cãÿÿUU%ÿI’$@$ÿÿUUPPUUUU¥à¶mÛøŸÿÿÿUUÿI’$ÿÿUUUUUUÖø¶mÛ6âü\çUU%úÿ¶mÛM”$Þ÷UUÖç¶mÛ°ýØßÿUUVXÿI’$ÿÿUUÿI’$ÿÿUUÿI’$ ÿÿUU@@§ÿ¶mÛ¶a+}ïUUÕ%öþ¶mÛÈÿÿÿÿUU§ü¶mÛ üG}ïUUp€UUUUâþ¶mÛ^ÞÿŸ÷UU Ëù¶mÛüŸŸ÷UU`€UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUàû¶mÛFžÿŸ÷UU àû¶mÛðÿÞ÷UU€ûI’$I‚$ßUUUTUUUUŠô¶mÛ6êüÿÿUUµ ûÿ¶mÛH’$ßÿUUÖþ¶mÛ)ü?}ïUU`»I’$I‚$ï{UUUTUUUUòþ¶mÛ6nçÿÿUU%òþ¶mÛ?üÇÿÿUU`@UUUUÿI’$IÿÿUUÿI’$ÿÿUUùÿ¶mÛI‘$Þ÷UU»þ¶mÛ°Øßÿ UUW\UUUUËþ¶mÛFÓÿÿÿUU)çÿ¶mÛI‘$Þ÷UU€àþ¶m۶؟÷UUUXÿI’$IÿÿUUÿI’$ÿÿUUíý¶mÛðÿÿÿUU€¥þ¶mÛ¶Ø}ïUUU\UUUUUUUUUUUUöþÞo0¶mÛ\çUU¥ûuoû¶oäÿÿ& âþ¯ýۏýÙÞ÷PPPX¥I’$I’MkUUU§ýÖïü}þàßÿ‚ 0ÿ@$@$ÿÿPPPP»ç¶mÛ¶a;¶µUU•œÿM˜Iœ$ÿÿÂÀ@íþ¶mÛ¶ýÀÿÿUUU`UUUUÌýøÓùýGï‚€@€Šüpn;¶§ï U€àý Û¶mÛŸ÷PVUUUUUUŒû¶a;vîýï• Šûyü؇]Ûÿÿ `P\Víþvoÿvnãßÿ%öÿÛ±ØÿÿXTTXéþüëÿþÃ_ÿÿa‚àý¶a;¶oûŸ÷•»ùüÿýÛßÿ @pPP€üÈoþöoÿßÿ Šÿ°]Û±ÛÿÿWVTTÿI’$ÿÿUUUUUUÿI’$ÿÿUUUUUU»ú¶mÛ¶aæ<çUU• éþ¶m+üÿ?ÿÿ U%§üŒýÛ¿]ØßÿRPP^ÿI’$ÿÿUUÿI’$ÿÿUUÿI’$ ÿÿUU@@§üvhÿöo£ßÿ…µéþ¶Ùÿ™ÿÿÿ UX€»ú¶mÛ°ýÐ<çUUV`òþ¶a;¶mÛÿÿ•UUŠÿI–À¶mÛÞ÷€pUU¥úFnã¶oçÿÿ 5%âþŸýØ¿ýÚÞ÷XPPPçÿ¶m»6b'Ÿ÷U%»ûùóÀ±;÷ÿÿA€p”&»ü³mÛ òçïVU »þ`n;ýÓÿÿA ``ºüýØ9ÍÇ}ïXP`BUUUU×ÿFâ&N¢„ÿÿ ‚ÌÿÿÕ¿Îïþÿÿa€‚ àI’$I‚$4¥UUUTÿIIÿÿÿ$@$ÿÿPPPçíÿoã¶oçÿÿ%%ùÿØ‰ØŸ÷PPPP§ÿ¶k#vc'ÿÿ •5%œùÿÿ}ÙŸ÷!ÀPXËÿIb/¶aÛÞ÷%•U»þÿüÇ)lÛÿÿ `@xUÿIIÿÿÿ$@$ÿÿPPP§ÿIb4¶k[ÿÿA-•ÕÖüýÃýǞ÷P`@@UUUUUUUUUUUUUUUU¥ýùŸÿ0bŸ÷A7Õ×ýŽØ¿üÇÞ÷VX`@×þ¶cïvâï%Öù‡û¶oûŸ÷ÿ@$@$ÿÿPPPPùII’$ÚÖUUàþÿŸÀ¶mÛßÿ`UU§ýÿƒüÖoÿßÿ! íþ¶ Û±}ÛÿÿUVTT»þþ?ÿñßÿÿ!À@»ýÿoç6nûÿÿ 5íý±}؏ýÛÞ÷TXPP¥I’$I’MkUUU»þÎÿùñÇßÿ‚‚À@UUUUáþ¶e{6nçÿÿ••%¥üùŸÿ}ØÞ÷ P\§ýýÔù‹?Þ÷A``€íý¶c¶mÛŸ÷•UUªý¿üÇùïæßÿAp@ »þÆïüžåÞ÷A ÿH‚$H‚$ÿÿTTTTÿ$I’$ÿÿUUUUUUUÿ$I’$ÿÿUUUUUUU×ýùÿùoåÞ÷€ §þ)lÛ©ü?ßÿAxUx»ò¶mÛ¶ØÆUUUXÿ$IÿÿUUÿ$IÿÿUUÿ’$I ÿÿ@UU@»ò¶mÛ¶m#ÆUUU%§þFcÛV“ÿßÿA-U-×ýÿƒüÿóÈÞ÷`UUUUùÿ¶mÛ¶a;]ïUU¥þΟ?üÃÞ÷!@p§ÿ-Û¶mÛ}ï\VUUËýÞãžÎáߞ÷ AüÖïþÎïÿÿÿ ËùÿüðoÿÞ÷»ý?üۏýÚÿÿ!pPPX€üxìßþÍÇÞ÷CAABŠÿ¶m¶k;ÛÞUÕ§ÿIÄ $ßÿ!À@`§ÿFb'6“$ÿÿ %Šÿ±Ø©ØÿÿT\XPÿIIÿÿÿ$ÿÿPòÿI’$Ibÿÿ •šý‘؏üǝïX\`@ýÿvb'vb#ßÿËÿ±Û±ØÿÿTTTXUUUUUUUUÿIIÿÿÿ@$@$ÿÿPPPP»I’$I’ï{UUUþÿIœÄIœÀÿÿ@@@@UUUUUUUUUUUUöÿ¶m6Fb7}ïU¥û¶ ±óÿž÷ U×éþÿýÇ¿|Úÿÿ!@@`XÿI’$ÿÿUUÿIÿÿÿ@$ÿÿPPöû¶m;¶aÛºÖUU¥ü¶ÃœÿŸ÷ Up@§úöoýÈÿ?ßÿ! €Öù·Û°mÛ]ïTTVU×þùÝúãüŸ÷@€¥ù¶oãpþÿßÿ 5çý¿ý؇]ÛŸ÷PPXTàý¶a›¶c;ç•ËÿIÌ œØÿÿ```PUUUUöþöoç6n;ž÷¥ý·}؏ýÿÿÿT\P¥ûþ?ùóÇßÿA€@»ú¶m›¶cûÞU••öþ¶Ø?œÿÿÿ UR`€ùöoþÈÿ?ÿÿ! €Ëù±Û°mÛºÖTTVUÿI’$ÿÿUUUUUUÿI’$ÿÿUUUUUU»I$I’$ï{UUUéþüo+¶mÛÿÿ%UUàû¿ýۈmÛÞ÷PPRUÿI’$ÿÿUUÿI’$ÿÿUUÿ I’$ÿÿ@@UUàûöoÿv`ÛÞ÷…UéþÿÙ¶mÛÿÿ€XUU»H’$I’$ï{TUUUUUUUÿI$IÿÿUÿ@’$@$ÿÿPUPPUUUUÌÿNìÄNà†ÿÿAA‰àýþïÿÎoüßÿ ËúƏüÿÿüŸ÷A »ý§}˜7ÿ?ÿÿ!Xœ$Œþ9ý؁ ÛÞ÷!`P\W×ÿ6b7vâ%Þ÷% òþÿÿÿ± ÛÿÿTVÿI’$ÿÿUU×ÿ œÔIÌdßÿ `@@‚ÿIIÿÿÿ@$ÿÿPPíÿ¶mI’$ÿÿU•¥ûÿýÇüÀÿÿA@@`p¥òvnã¶cÛÿÿ %5•U¥÷ýÿŸÿÞ÷APÀËÿ¶a/I’$ßÿ•%Œþ)üÇ¿ÚÞ÷!x@`XÿIIÿÿÿ@$ÿÿPPàþ¶g#ÿÿÿÿÿ•%€üüӏØŸ÷ @`P\UUUUUUUUUUUUíI$I’$÷œUUUýÿK`Û¶mÛŸ÷UUUàH’$I’$4¥TUUUUUUUÿI$I’$ÿÿUUUÿ@’$I’$ÿÿPUUUUUUUíþFnÛ¶mÛÿÿ UUUÖýlÛ¶m۝ï`UUUUUUUçý6bÛ¶m۞÷%UUUíþ`Û¶mÛÿÿ€UUUUUUUÿI$I’$ÿÿUUUÿ@’$I’$ÿÿPUUUUUUUUUUUíþÈoÛ¶mÛÿÿUUUöþmÛ¶mÛçPUUUUUUU»ùÈoÛ¶mÛ}ïUUUÖÿ)lÛ¶mÛ<ç`UUUUUUUÿ$I’$ÿÿUUUUUUU§ýþo;FêÔŸ÷!aUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿI$I’$ÿÿUUUÿ@’$I’$ÿÿPUUUUUUUŒüÖcç6n›Þ÷ 5•òþ6>۟ÿÿA%VX€ËûqnÛ¶ Û<çUUVŠùOmÛ¶æ}ï`U• »ý¶Þ÷ @@‚ UUUUUUUUÿIIÿÿÿ@$@$ÿÿPPPPÿ$ÿÿUÿ ’$ÿÿ@@@Uàþ¹ÝÃx쌝ïP`B»ÿNàÄNlÛÿÿ ÁAAU»öýÓ?l;ÿÿAX`p•àþ~Œ×9üØŸ÷AB`PUUUUUUUUUUUUUUUUUUUUUUUUÿII$ÿÿUÿ@$@’$ÿÿPPPUUUUUUUUUUUUUUUUUUUUUÿ ’ $ÿÿEEUÿI’$$ÿÿUUUÿI’$$ÿÿUUUÿA$@’$ÿÿQQPUÿII$ÿÿUÿI’$$ÿÿUUUÿI’$$ÿÿUUUÿ ’ ’$ÿÿEE@UUUUUUUUUûÿ¶a¶k;}ïûÿØ©ØŸ÷PPPPŸÿ¶b»¶mÛûÞ%UUþôÿýïØÿÿ!ÀQšûÈÿ?m۞÷ `UÀ÷unç¶bÛûÞ%UšÿI’$2hÛÿÿ!·U¥üòÿÉcÛŸ÷A>UÌû°Û²mÛûÞVTVUÌþ}ê¶mÛÛÞaUUËýon£¶mÛç%UUöH’$I’$yÎTUUUUUUUÿ ’$ÿÿ@@@UUUUUÿIIÿÿÿH‚$H‚$ÿÿTTTT»þ6bÛ¶mçï%UU«ýÿßÿV~ûÿÿA Öþ¯}؏ýÛÿÿXXPPUUUUUUUU»þ6b¶mÛßÿ 5ÕUUàþœÿFcÛŸ÷` Uàþ6òÿOaÛŸ÷%€U»þضm۝ï`XUUUUUUUUUUUUUU×ýÎe<¶m۞÷ UUÖþvnã¶mÛÞ÷%UUàû°Û¶mÛ\çVTUUUUUUUUUUUUUUUUUUUUUU»þFn#¶m۝ï %UUàþýÿhnÛŸ÷XUàþFþ?)lÛŸ÷ `U»þ Û¶mÛßÿ \WUUUUUUUUUUUUUUUUUUUUUUÿII$ÿÿUÿ$ÿÿUÿ$ÿÿUÿ@$@’$ÿÿPPPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿII$ÿÿUÿ@$@’$ÿÿPPPUUUUU§ýŠÝځmÛºÖ RX\UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿIIÿÿÿH‚$H‚$ÿÿTTTT§úvn#¶eÛ\ç5•Uœü'þÿùcÛÞ÷A8Uàþ}Ù°mÛßÿPXVUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUùI’I’$ÚÖUUUÌü¶ýØ9¬Ç}ïUP`BUUUUUUUUUUUUÌû¶íȑן÷A Ã`çH’$I’$–µTUUUÿI’$ÿÿUUÿ @$ÿÿ@@PP»ü6bäÎïÿßÿ!5 öÿIÚ°mÛ}ï@PTUUUUUçý¶kû6nçŸ÷%»ÿI’Ø©Øÿÿ!PX\ÿ$I’$ÿÿUUUŒýÿãüîoüÿÿa çý¶kû0çž÷&»ÿI’Ø©Øÿÿ!PX\ÿ$I’$ÿÿUUUŒýÿãüîoüÿÿa çý¶kû0çž÷&»ÿI’Ø©Øÿÿ!PX\ÿ$I’$ÿÿUUUŒýÿãüîoüÿÿa çý¶kû0çž÷&»ÿI’Ø©Øÿÿ!PX\ÿ$I’$ÿÿUUUŒýÿãüîoüÿÿa çý¶kû0çž÷&»ÿI’Ø©Øÿÿ!PX\ÿ$I’$ÿÿUUUŒýÿãüîoüÿÿa çý¶kû0çž÷&»ÿI’Ø©Øÿÿ!PX\ÿ$I’$ÿÿUUUŒýÿãüîoüÿÿa çý¶mÛ°۞÷UUVTUUUUUUUUUUUUUUUUÿÿÿUUUUUUUUUUUUÿ  ÿÿAAAAÿ  ÿÿAAAAUUUUUUUU¥ùvnöíÿŸ÷uUŠüœÇ{œÀ}ï`BBpUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUàýÎïývoÿÿ %•Šý°xÿŸÿŸ÷!Wœ§ýø“¿ÚŸ÷A€@XUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU€@€UUUUUUUUUUUUUUUU   AÕK~¢&`&)JW\XXK‰Ÿ«9˜ƒ)J uŅ…   AÕK~¢&`&)JW\XXUUUUI’$I’ãUUU06d£"f1ÕÿMk!^V^XŒç¹æ[„A£ûÛ;iʺÃˊP,cÃäÆæ$YsÌV 4ËZ‚qañp1cÊóŽsAm˂mìɗ?‘|磕%%•ù@4@4Ÿ÷bppppL!â!âŠRAMMMMK ‘ ‘˜IJ%%%µNÄM<Äc&IJ ÒRR[r¬æaù–lŽsAŽ‹¥¥Yz*W¢ ÿjRAÔ<TaIéMkAV\øUuIbÛ–îk!Uÿ‚mb&­[`MkAÕµ/Õ a…]؁]تR TTTTUUUU  @AÕL`&jò')JXX\WK9˜ƒ¹šü)J ……ÅuUUUUUUUUUUUU  @AÕL`&jò')JXX\WUUUUɑ$I’$ãUUU0! 6jCf1Õÿ3Ó4ܖ$ÿÿÇ9"ªUÊA ÖµÜ\\WK3 ìî“$iJ Î`_UVɑ\Iš$iJ5•U0X E)œÖU‹Þ~’$qŒ8ØWUK0õÄI’$B,×UU^šÓ$I’$,c|WUUK!⩞?)J IIMu-ɑäI’$f1UUUès6ù“$yÎbk}UéþÁqŸ$„AmÉ}U:I—ɝ$Ç9µ%ÕU<ÝCÀ.èYÎ!xX`@ ”F@'—\4¥‚«5¿“ƒ=+@4¥ArXèÝ ‘±p‚8Æ %5 ‹ð Rƒ=X;`<çãrXø‚”œûOâ$0„!ÉuUWãC4”C=Æ crrrÇ Æ|ÁâÖµ%)aAIIï V©·Ÿ$Ƃ‚ÿUê ÏõŸ[ºÖ!- 5ÜL":P3?XÆAVxp^ ¶m†(Ӝ UU•5»I’$ã=U­ UUZp±ɕI‘óœ!55%È#<ԃ?˜cל†1‡……Çžá!þáל%)CIIIèpR¹•\yÎb )55€ȇ$H‚Äï{A”TTÔÕþC:0÷œ!' Áb0H¢$N’$E)TTWUK9˜ƒ¹šü)J ……Åu II€A•K`&`B'IJXXX^ɑ$I’$‚UUU„‚6UUUH’$I’$ATUUUUUUU” • ɝ$0„%%õU&J‚$N’$$!TTWU‰ɑdIž$Ï{•ÕUË 6¯ÏŸ$¶µbˆîUU¹¶ɛ$¶µ /%ÕUïÒ5tò$8Ƃ@p^U¯I‘K9$¶µA5¥õUÊ ÔdA1$U­A"íUË&øOɝ$–µ‹/ÕU÷¶mÿŸ$\ç‚‚ªUU>KŽäO’$§9VTWUÒDS0ÖîŸÃrsamÄ|èÓ9–µÃIAc[ UUUUŀj@`ÛҔ5ÕUUiHøI–€,c ”•ÕŠ<Àóœ Ö\^W‘¶—Iœ$qŒ¿5ÕU5Dƒ¿Ÿ$0„!ŽuU̹TIž$U­ 5ÕUË„.5~’$4¥Âp_Uŀšd5­55ÕU˜ʵOœ$0„!6ÕUË锖’–µø€ÿU#N¢$N’$ä WTWUºI’$¹]4¥UUý“I’$O¢'mk UUUT˜I’$¹cÀqŒUU}ÃÀ¶ €5÷œ!UUÕ%§I’$v‚=qŒUU_p¶I’$¹]4¥UUý–I’$Ï­Ï{UU÷,·I’$¶/€4¥UU€±I’$¹ý4¥ UUõ ²I’$~‚Ý4¥UUWØŽI’$·/`u­ UU}‚$I’$O‚$ä UUUTUUUUUUUUI’$I’ÂãUUUÍ UUUUI’$I’ãUUU5I’$I‚'aUUUT°ù“$É ’” uUÕ Ž’$~4Ӝ]U_`¡I’$IœQŒUUÕ%¬I’$¶@ӜUUGI’$I‚'ç9UUUTÅI’$¹o5­UU}ƒeI’$Iü,cUUÕƶ ’”$÷œUUÿ–I’$O¢ÇmkUUWÜÁI’$·?–µUUýxI’$OGMkUUÕĶ ’”$לUUÿ€I’$O¢'ëZUUU\UUUUÔuWù{–µb"=%µÖ z¢Çú‡V•­ÃTԔ8æ4…2(€bêyΆ1CBJËå±”B©–û8Æb uÛ~Nç’_ðלA_ÞðãàE“)µ%†Æ(B²ð ˜Áûí${§¶µAÖWVÜÒZ탃=ÆAËcrXÕ—z©t©¶µ%)ÁÁ ÁÓÒ+X*ý–µe)АØPçNj¥DjÑ šÖªR<<+ ›„T0ÅX„aÖ$ŽTŽÉí O—$‘ŒAÕ'µUÙIþx¿Ÿ‚Uµ%Êæìêƒ5ל$!i`^x»ù_Þæmל$!U««žχ^s>§Öµ!•œ^Þèô#Í6‰÷œb^à ‚¬)ôûNü„¥Au×•Ò …né>¶µ!CAbXÔ©tMÕÀ ºÖ!­©++øU~¹­‚^-ßËZ·ê@cŒræb*~Ӝa\XؘpéHž².çmk»ž8ÑO؄{‡÷œa•—–œéZj¥d šÚÖ c<”Œàzš_ú…^÷œE)”âÐ$ßL²çÆa ÜVVÒ hH‡Iø„÷œ‚œŸ••ÜØ Ÿr,§8Æ(œÜÜÒÂ!Â8Æ \XXXUUUUÆ Š[H)™$U­aû­Uß`%ÿN’$Öµ!(ÜWUíhÊqŸ$ºÖA‚Ë}U»7I™$T¥!ï µUÚ-ùt’$¶µAãp^Uǐ5'™$u­0«UÇpž‡Oœ$–µ œ–×Uå`"'}’$8Æ!X\WUņüA9™$U­ à ­UÇ‚œ|ž$u­AðØ^Uá,¡I%$¶µa.ëU™…40À²”AÖ'µU™Éí‘tQŒAÕ'%µQÑ$Lâ$B5VVWž|÷I’$U­!Â}UUŸpÛI’$ÖµýUU¶ á¿I’$U­!8×UU»Xï'I’$–µ xWUUi #6hìb •U¡r'|’$’” \\VUß!%ÑŠûÞB?;ùíêAà hvý˜ÚÖèAâ€ÿµÑêÅl >u­Ã6ŸXÏ0»Nž$yÎþWUßhší$8Ƃœ˜ßUØš $™$YÎAŒªUØà…Š}’$šÖa˜ÜWUÜ  )&›$Æ ž«Uµh†fNœ$u­Aœœ×Uäª $›$yÎaŒêUà\Á ÀºÖ\^WUUUUU¶mÛ &„UUU ¶mې Ï{ UUU` ¶mÛ°$„ UUUvI’$OæÏ{UUUX¶mÛ°&Žs UUUUI’$I(BUUUy¶mÛPAëZUUUÜc¶mÛ* cUUU8@¶mۀBUUUTd¶mÛ  cUUUcd¶mÛ  cUUUci¶mÛ°d,cUUUÃd†d ëZõUUc@€ Û6`#BUUU{¶mېLÏ{ UUUp}¶mÛÐT„UUUâo¶mÛÀŽsUUUbd¶mÛ  cUUUc{¶mÛ&®s UUU {I’$I>ŽsUUUX°9‘äIrn0„!-ÕU ±`ûI2>óœ ÿUZ~rò$Irmk \UU {I’$I>ŽsUUUX¶mÛ &®sUUU¶mې Ï{UUUxI’$I ŽsUUU z¶mÛBmkUUUØ ¶mÛÐ$„ UUUw¶mÛªMkUUU8@¶mÛ BUUUz¶mÛ\Á cUUU\Þ>1‘AYÎBaÁ»c?ã=Æ¢p_^Xã5…T9[HšÖjRSã¿hüDÍ¡Æ$!ܕÕŸKÎTyÎe)ÜV6Ï`švˆ–µ!˜˜Ÿãz.ÇIyÎÜÜš:äÚ¡š¡ž÷Bžžœœ~H‚'xûï{ TTT| Å ¡ ¡÷œccccè1Y‘‘AyΊ1q¡Ù=p&8ÆAbX\X Å ¡ ¡÷œcccc ~6b#6b#ï{ ð>€ЀH]ïëZPpàšÿ<Ã",Â"-ÚÖç9B@@@ó&SÈÕVuÛÞ(BcC£³Ç ¡P ÕP÷œe)aacbæ4ÐÚ#&YÎaâXXãCìŸê8Æä pbIIà2ñ‘AYΊ1aß@CðC/þšÖe)psrXç4ÐÚ#þY΢âXXã PCìŸ~êYÎ$!pcIIà2ñ‘YΊ1aùRC5Sƒ=ÚւpbrXä!t©OYÎ! Á‰-ä O5ì9Æ¢pr^pãðj¹˜‹yΏÀ á‰‘ל8755 H€H€ï{AÁp'p'÷œ\\\\ÆÆl€ÿ8Ɔ1a UÄ@ É –µA_z`_ØDM9Ýó'u­ârr]Œ‚€d7•ÕUÞ²q””ÿÆ$!Œ UՀ ™êûä8Ƃ°°ÞUʙA$4¥žÜÜWÊ ë÷ä8ÆE)žUâìÌB=•ä÷œ!Î'U×#4Úó'÷œc`xWÁ†jì“?•­!Ãcc]Á€S쟜û¶µãPciU Ç ¡„jIÆE)a UµI6~éç5­a•š°_%ïiÒ5 ÛÞ! ®UÊ<Áåž<ÆE)@JoU»C7ØÔó'–µ ²òr]ä-ðTó?ÿÿ!rr{Uá’Ch§”ü÷œÃp‚ Uå–.ðâó'÷œÃ`xWº†l,“?U­ Ãcc]/`€I’$e)ÕUUåRG§”üÆã° U5÷l‘mŸ÷†1j`ju»†hì“?YÎ!áayUÈÐC0֞?8ÆÃXriUßf]h§”ü÷œãûƒ Uã#4âó'Æb`xWŒ1c¹˜ü–µuˉ‘\Iš$¶µ 55ÕUâ,K† “–$ºÖE)–(‚UÌp¢'M’$–µ\\WU1I’$I‚=†1UUUX)I’$IBe)UUU#'I’$I¢!UUU<.I’$IŠ†1UUUÜ*I’$I‚ E)UUU()I’$Iâ%)UUU7(I’$IÀ$!UUUÀ+0E)UUU%1I’$IBf1UUU0I’$IÐf1UUUà.I’$I"LŠ1UUU¢.I’$IÒe)UUU'2PE)UUU\+I’$IB0E)UUUbUUUUI’$I’¢UUU+I’$I"'$!UUU\UUUU%I’$I’ %)UUU% I’$I‚$bUUUVUUUUUUUU I’$I’bUUU•%ɟ$I‚%%)UUUX UUUU/I’$I’e)UUU%1P$!UUU\I’$I’!UUUÕ%I’$I28%)UUUrI’$I’ÃUUU%I’$I%)UUU, I’$I‚$bUUUVÞÚ#øm¶µaXpâƒÖ7TÒ Š¶µ%)£2ØÞ%LŠ(I8Æ%)–4,ïjŒœ’GQYΣܘ°"Ñ"…ZpªçÚÖ!ŸœÔVðŽ7o’<,ºÖã·®ÀbÏ€jKI‘|¥!Ê%ò 9éªÓ9yÎä ¥Íbp¿pnə8Æ¢ ­Õ5öíÔL¥DA8Æe)ppXVÈU`Æ÷œÃ °˜ØÁM±z&‡u­‚'6”œÄzÇp¶µ\ܜœ÷]3ìšJ“Ɔ1s@ÈŠ$PÃUUWT<6bc6`ÛÇ9ÕUU”hÂ&IžäP„!\^UUàIòÿÜÄ u­Uý âI÷PJ¥záÄyÎ(B444×ßÕOØöŸf1%'ˆ×&l¢·”˜×œAËË µµ÷]Ú@¿>4¥aÝûp^ßb¬œÄô¶Ÿf1XØ"ýã¢ZàYçXÆE)˜WÙ&˜Š’˜Ø6¶µe)¬€{Ç7xƒ7˜×ל!………õÌ!¢1s÷œ‚ÉÉ ¥à¡þéƒNéƆ1IIBB΄C<Ôã&Öµ!rrr[ÁŒÈˆŒšA÷œŠ1’’’]Â$88Ñ ÷œŠ1$$$'1H‚$H‚$†1TTTT PÀ A UUrL’$I’AVUU5 Ş$IÂ$AbUUV X A UUUŸ”$I’$A/UUUŽ‘$I’$A7UUUxœ$I’$AÞUUUX’$I’$AXUUU $I’$AUUU/ÿ‘„I’$E)•UUÜBS:I’$ל `zUU×I‘˜I’$÷œ %µUUŸpÂ'I’$¶µ\VUUUUUUvj¢&`Ï{A UUvI•TØÏ{A``UUUUUU ”$I’$AUUU "•$I’$A(UUU MAÂUUU I‘$I’$A%UUU h’$I’$AXUUU j AƒUUU`œ$I’$AØUUU MAÂUUU1–$I’$AUUU¶)”sI’$¥ ­UUÇME ¥A@zUUƒ“$I'ArUU\ƒ—$I’$A²UUU»)³I’$–µ íUU)Hâ$I’$%)TWUUÛî3=“=P8Æa_rò"¿É™Ž±–µ•5>>ÚNÂ$|K ¶µWV®âI’$e;AלAUUúÍI’$ä/Ðu­UUzàÚI’$m)L¶µUUª ûI’$}®žzÖaUUWœɶ $—&–µ UUêÝI’$yk Öµ UU¥Ķ äÐdu­!UUzÀÎI’$9ùA•­ UU­ ÜI’$€/Ðל UUzàÌI’$% ¬×œ UUêàØI’$/IhU­UU«ÑI’œ}¡ûÞaUÕ7>žIÒ$ð –µAUWœ<µI’$ιu­ UU—6±I’$5;4¥ UUïÆI’$9k‚ל!UU叞¶ £Æ0¥UUû"ãI’$œ nçAUU÷¬¶¶ ㎊•­!UU{‹³¶ ã˜.U­ UU»8ÈI’$Í)U­UU·,I’$í¶¥!UU¯.ÙI’$ì=ŸAUUZPÞoSìDC=yÎ$!}crRŠö¹Û¹Å¥aŸ:šÚà}‚&`"ÆYÎaW\XØ}¶mې”mkUUU€g¶mÛ\ÁIJUUU\UUUUï2DH”YæºÖÇ9²[ ŃB(™Rª–µ76<8Æ!<ă<دYÎB‡ÇÇçÜ'ꡞî8Æ$!ÉIImÄ)ðŸ5÷œ§9aaay É©B!ÔA–µðØØØÙà%^âµÆ÷œE)ÞÓ"{Áè ‰Æe)6,‚Ç"<Äc=8ÆÇ9‡‡Ö/ƒ:ñŸ!ËbɆlì˜J–µE)AaÁ à6Fs5D34ÛÞ(BqqsrŸЏ%X"&YÎbXXX^ã…xJ'÷mçç9ã­œ©Þ#Î%_èµgYΊ1–ÈÌÁË!‡×œ!œÞ ÌÅXê M8Æa66,(Ö ÁÌ×Ä÷œb&6–Öõ,ñ3>8ÆbË`pXïÖôA!8Æa# ç˜( ƒî1yÎä ˆÀBk÷ù©tÒºÖä %% éÊ pšÇhŸ=¶µ¢œÔ\Zí!ê$‰„\,YÎE),€ÂcÈ Î÷)BÖµ‚—% ËD`Tu­ã\ÖWX× Òƒ%ÒC8ל¢PXPrw @ ä@ €®sbÐPÐÐ×’9Ԓ&Öµ°âpXÒI²‘`Û8Æ ¯UU¯pÂ'I’$óœ\VUUUUUU%‚$I’$$!ðUUU'P‘$I’$E)8UUU$3–$I’$%)ŽUUU%œ$I’$%)ÉUUU%Ɯ$I’$%)ãUUU'!¶mÛ%)ØUUU%Xœ$I’$%)ØUUU/˜$I’$†1ÂUUUŸ1–‹ÉŸ$u­uU0ó$I’$e)`WUU/±$I’$E) UUU»Å~1ù“$U­!cc]U'!¶mÛ%)XUUU0j†1 UUU%°‘$I’$!Bõmk!U_ry\Iⶂ$þMkAUý¢^[IÒ:‚~êŠR!U@I_Iò¶…Týk!Uý£[_IÒöú«k!UÊå[I·tñŠR!Uýa\IÒÖôSMkAUŠµ`I’·/ôêmk!Uõmc°mmšk!Uÿ*•[IòžœÐ‹Lc!Uõ'ç\IÒ¶’ðŸªR!Uÿ•^IâŒz¡Wns U×6¶RIÒ¶ðÿŠRAUÿU^IÒÇè¥^ns Uלž\IÒ¶ÄÿªR!UÿV[IRçÐKœLc!U_ØÛc°mi[k!UÿšVd°Í ns U_ryO ÌÀ ÌiJ!RRRr PFfdFeŠRAÅÅÅÅMs0sðjRAqqqaM ‘ ñiJ%%%%O )’")’âŠRaMMMMO6b#6(jR 5O Ú  ڀŠRAÇÇLJ1  *)E)?O HHŠRA4444 °° ‚–––(O h€h€ŠRA1PIE)TTTüO EZ€EJ€ŠRAÓÓÓÒO؁jR TTT\O A4As4ŠRaqqqqM`&`þiJXXXXM!â!~âjRAMMMI P ŒÀ ŒŠRASSSS PFfdFeŠRAÅÅÅÅMs0sðjRAqqqaM ‘ ñiJ%%%%O )’")’âŠRaMMMMO6b#6(jR 5O Ú  ڀŠRAÇÇLJ1  *)E)?O HHŠRA4444 °° ‚–––(O h€h€ŠRA1PIE)TTTüO EZ€EJ€ŠRAÓÓÓÒO؁jR TTT\QGs4Gs4ŠRAqqqqe…v·I’$ns £ýUUcm¶ `ÛnsÊUUah m`ÛMk‰ýUUamºM`ÛmkŠÿUUcX l`ÛmkõUUdm³mŽs*ÿUU[œðžI’$,c'õUUam³m«Z ÿUUbÅ"``ÛMk6×UURжI’$iJªUUb:@`ÛMkœ×UUai»m«Z ÿUU[Ð[çI’$,cØ_UUdi»mŽsšÿUUcÍ°`Ûmkr_UUaM«m`Ûmk¢ÿUUaM± `ÛMkbUUcK‹m`Ûns£ýUUcm¶ `ÛnsÊUUah m`ÛMk‰ýUUamºM`ÛmkŠÿUUcX l`ÛmkõUUdm³mŽs*ÿUU[œðžI’$,c'õUUam³m«Z ÿUUaÅ"`-k 6×UURжIòÿŠRAÿUUb:@ØMkœ×UUai»m«Z ÿUU[Ð[çI’$,cØ_UUdi»mŽsšÿUUd‚S?I’$mkr_UUa¶ j»lŠR UUâ`¶ mµeŠR!UUÀËS¶ `‚tŠR!UU Á R¶ Iž5ŠR!UU€ I’$L‚$AUUVT'¶mÛF%)UUUÉ7I’$IžŠ1UUU-yIò'[Œ]Lc!UUÚÒIrû“R¶µ!U}‚(^° صIJUUV ZI’äI<ôjRUUÕòÓIòç›ILU­U_²"³Iâçhg4¥AUWœœÆIòäÍÇu­AUU–6àIò?íÖµAU_```Ibß[aßjR Uß0߬I’Ü®``Ӝ UÕƒŸIâ'ρӜU_àŠ¿Ikº&לAU}‹ 2Iò$K‚t†1UUVŽ#I’$IBÌ!UUUã1Ð$Š1UUU2PE)UUU\º6`€0U­UU•%šIbû€ ²”U(¥9—sM'ӜA¥¥W\vIš€`Ï{!€€UU±OòÛ`óœ‚Uu š@X-Ӝ!UU—>È –iU­UWÜø·Ib??ðӜU_àâ¿Ir?ƒLÀ4¥U}ÂÂPÄC<ÄCûÞ!\xxXÎ/b±øל‚ Í ÝS-3,Æ!`cibí:‘tôAŸ÷ŠR© ‰‰ž J†gz¬çqŒ¢””ÔT׌Áñ8Æb66'5ì˜#쪩šÖE)x`ÊÈ : R`A•”ŸXWg–^°4¥ËZ±«»áª óð|ÁBóœE).57ŽÑ0iþÿ$Öµ£‚WUÃwc!c–µ §‰·U-øÐ#8ӜaópPpŸÀ ɗ„Öµ!*••Ázß0!›–µ\Ü,Œº¹æªžJT¥!…ÍÈ.Ì@](•\w¶µŠRkCC¿¶!\Â%œÁ¥!XZX\UUUUŽJ‚‘`Û¥­UUÛ¬pSə›÷œA -•µéÐ ¶zB?ºÖ¢àø\^±Bôö“$u­Arp_U»<ì÷“$U­AÂb]UaËŠ¶`ۊR âUU`[ÖV`ۊR!ËÀUUSH&`ۊR!Á UU R[“„`ۊR!€UU HÂ$I’$ATVUUÄ`F` –µ ÉÉÉmÙo9ûy΢ ¥uuÇÅŸI’$u­! ÞUUÔI»‘`ÛXÆ! ¯UUŽÐüI’$„!WUU ÿ?I’$„`]UUÌ/–×I’$šÖAõUUu 0b£ï{!—•¢ Ì·|ËÁ€Óœ‚––Öï‚>éÒÞ:YΆ1@B`_H’$I’$!WUUU»”—I’$¥! µUU«::I’$³œ ÀzUUH’$I’$AVUUUˆ¹ÜI’$0„ %ÕUU•s?I’$Ï{b}UUI$I’ÜÃUUõ%ð$I’$$!ÜUUU©I‘ÄI’$Ӝ 5ÕUUŒ˜@²I’$4¥!êUU,À€ Lc\WUUI’$I‚$!UUUVUUUUà©“I’$ל ­UUäÒNöI’$¶µ ÀjUU UUUUUUUUˆI’$'oìMk!UUiCI’$I2ØAUUUòâI’$ɛYÎ!UUÕ5ÝI’$$ i8ÆAUUꀶ ؅ØÃUUTTœ$I’$AÉUUU¹I’$qÁӜUUmò° ©$¥UU­yI’$N¢'ëZUUWT#I’$Iüä UUÕºI’$î#8Ӝ UU[pŠI’$o_0²”!UU}cÉIž$y‚÷œAUUõ—O’$ICï{!UUµ ¿I’$Ïù•­AUU•5ÓI’$tƶµUU^Ø®¶ Ӝ!UU_XI’$I’ AUUU%I’$I‚$!UUUWÝy¯ñøy΢uå­ SIò$N‚$IJUUWT뉝³ñøAšÖAõå­ `Oò$N¢$(BWWWT÷І‘ ŠºÖÃõ­­ SN²$L‚$IJWVVTôq›n1BºÖÃý©­ ^L‚$L¢$iJVTVTÝ yòÞ)ùyÎÃUÝ­ TN¢$L‚$IJWTVTýɟ“±vBšÖ‚U¥ UOÒ$L‚$IJUWVTUUUU%ŸÄIœÄ!ãÕÕÕÄnBüÄOØ÷œf1]RRRä 5!â+&YÎÃ/8ØXðtøƒ?ü“?ž÷„TTWUŒI’îœ;qŒaUmÉuUUUU¯ËyŸ$¥AÉÍuU² «$ óœ #­U·sÍb¿ ¥Ã~ŽÒ u²=DC4Ÿ‚_Zrr®ƒo™o‘KӜ£r³=%²҃þóä ²”¢P\. ˜X ŽÂ8€U­A¥÷×­!nìzóœ‚Éã"Œµ‰ç  &!µ7žXÕ+hˆzõî÷œ†1œŒïiŽzÒ?ž>ÁӜ \w˶‰™P —óœ!µ%% UNÒäMÚ)J WV×î?‘du“)H™ÎèA³²æL¢'hŽÝûނVV\Øî?‘du“)H™ÎèA³²æL¢'hŽÝûނVV\Øî?‘du“)H™ÎèA³²æL¢'hŽÝûނVV\Øî?‘du“)H™ÎèA³²æL¢'hŽÝûނVV\Øî?‘du“)H™ÎèA³²æL¢'hŽÝûނVV\Øî?‘du“)H™ÎèA³²æL¢'h‚=ûÞ V^\XUUUU   AáGHTß=8Æã¢r[ã`¢&’$yÎAX\WU_6`;„ëZ‚‚‚} H‚$H¢ÄATTTÔ IûèQŒ U}‰‹Iâ$H¢$AUWVVUUUU°)ÓI’$óœíUU€Ã&I’$qŒp^UU±!úñù“$²”AÉi]UÑŸwIž$8Æ œUU‘‹Ñɝ$„ 6'ÕUµ»åɝ$•­!¶7ÕU°h‚æ~’$U­A\\WU³Dœ=’$T¥AóZUUÒúÎɓ$YÎbÂíUUØ(—\4Jל†1Ásã °*©©”qŒ?ðXÚ¹'O’$yÎAšVUUÅ@Gq÷Ÿ$¶µ‚°£UUÚ¹'O’$yÎAšVUUÅ@Gq÷Ÿ$¶µ‚°£UUÚ¹'O’$yÎAšVUUÅ@Gq÷Ÿ$¶µ‚°£UUÚ¹'O’$yÎAšVUUÅ@Gq÷Ÿ$¶µ‚°£UUÚ¹'O’$yÎAšVUUÅ@Gq÷Ÿ$¶µ‚°£UUÚ¹'O’$yÎAšVUUŒ€C4÷“$¶µ!ps]UUUUUI$I’$!ÕUUU%ƒ“$I’$%)rUUUI$I’$!ÕUUUIÃUUUHœ$I’$!×UUU0•š$I’$%)ÂUUUH’$I’$ WUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0!$I’$†1 UUU(p’$I’$$!\UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU€€@@€bUUÕ3I’$u N†1UUÿ(09ë1ú“E) mM¥-gnÝÃ=ÆE)!YÓÒÚ)|‚'p OE)V\¬¬¢IžßøÓœ‚UՉ‰È \#0­Óú÷œ£z`I áí·IJ£]±ŸEÉ» IJ‚Õ'&&Aµ#ɐç9!À€€‚rÇ®Ñï{AUÝ??ÌIBçp'Æ!U^\\6ùÿ‰úíÇ9aUéÉiQæCô{ÑIJÃ[râá9MÂ$r» §9 WVü1q“.–B(e) }iCB5IœäwNØŠ1ÕU]ò'xÁŸM‚'E)!4×WTˆÍ$I’$AôVUU[IžäIž\HBÕUÕ5XMò$ÿ3€ªR!WWU‚}¹›äIŸ®saõUU*Ç_:O2·•­£`zUþ^ôûçO® cAßUU~>›R-ÐP„!UZàà†I’$·yŽsUU¿?Iò'"²”aUUŸ,™I’?å:B®s!UUŠ ùsÒ&v‹®s£Ué‹Ì I·DAûÞbUý«‹¬IòŽŽ0³œ U· §Ir“.0!U­ ‰IRoÍ0„!U¯ŠàŠIRo$`Šï{AU¯ ‹~IÒ$x‚'®sUWT\æ:IRÒ®s!‚{Uë€@e¿IRö„A°ßU{ŠлIRú„A÷Uûll;Iâ· cÈUÿ—„øúIòüÏ{‚ûU÷™BÝÞIbÛï{!àßUÿBUW4÷Êç9!³s]Þfڐ$I²²Mk!*UUîWø?IÂÖIJ!€UUþS÷IRÍiJ!É}UãÃÔqq{;U­!«ý}ˆ ú}böQŒ‚ ^W"`·IâöóœA ÿU˜"ä·Iòö„‚÷U}‰#`“IRÖï{ ¯Uúmxâ$Ib; cTWUŠ)/ðo6²”§9b``{‘ pâÙçP„ÃఘW¢6ˎè:QŒŠ1àŠ€{ŠôiëöØóœE)®€®õ“ ˏZò„!çŠÀkÄ&%O,%ýüu­§9kbkUzc(fG­MkA˜˜ ¢ÐL¢ €ƒš'¶µiJˆ€€U€.+`#ø8ӜŠ1耊uŽ# oè10„Š1À€ˆy£8ˆ£m'Ӝ‚‚ú_Ž<ÜŒ³˜Ò•­jRköÊ}¯3•NàÜþ<¥ç9CBjU©…\èl6’”bÂÂÂk¢DéßçQŒã¢“›]Ž -C.À²90„boj`z  Iòüêi1Œ¢UU,€¶IòÿÜ(@²”bUUŠ¶Iòç$ÉbӜ‚UUªŽIòç÷‚UU»ÉœIrûè­QŒUÿ‚«„Ib߇m®s!Uß šƒIòü3&B®sbUUŽ¶€M€ä£ÿ•Ô Iò$Ν²”AUU×%ŽI’'^/@’”AUU{‚I’$·OˆMk UU}‚ŽI’<ï.`qŒ‚UUm‚•I’äŸ 0„UÕ? …Iò$Ž=@Ï{!UUþIò$« h0„AUUþ€j € ,cU_zpµÄìùI’$T¥Aâ{UUŒ ÐÀšI’$U­A ŸUU­-æ–I’$P„!«UU‰/lóI’$ï{ÏïUUŽ;Œÿ$0„aâ¢ÕU…ê†Rò÷äÏ{‚¬,œUi°'Kò$-k üTVUNOrûxûIJ!U}‚}¹¹sɟ$óœ! ¥UU€°iÿŸ$’”A ªUU‡ÂX­ù“$ï{A ëUU‹0ÿ“$ï{A¢UUš7ºž$„A žUU€Ôdaçœ$QŒãéUz°nÏÿ$ï{A®UU}ÉÐ «„ pr{UŒ},š@9¶U­$!מ°úŠN2I‚°‘Ï{ÃWª†I"JÆÍÏ{¢U€ê„Ï?J°ï{‚UŽ  IÒ­ÓDˆóœ¢U뢢—ùӉDaU­¢U몋¬IÂróÀW’”ÃU®,6y±3ˆÀmmk‚}‚ „ IÒrӔÏ{aU«" ÃIâ–"±{²”bU«(<ÇI–Xµz¶µÃUþ8Ÿ©I¶+Dc„aUª…IÒɅZÐqŒ£UëëãŠ@u,ۈƒû„ç9ßütü‡{‚²˜ÿ„bVü(\@IÂ$xò$ç9UVTW;mû'R‹MBAÿUúš2m›$»AÆ1!ÿUúŠ3m$-b§9 ÿUêŠ0­–$Û BŠ1 ¯UêˆfŸ'¶_·LcbsUÿe/–ü¶]» c‚U}ÿ0|•$Þ6†1 ¶U«"3,›$æ6P†1 îU«"2š$å&lE)ðU 2Œ™$ì‰f1 ¶U®€1l™$ô†1 ŸU®ˆv.˜ûŸ]×,cAu÷ÿ1՘ä+'af1 £U®€mÐôÿO~ÛëZ!UUýpxâ$öíºLc!TWßÿ1I’$›C0†1UUzb?â†m€›$B ®šúU2¶ŽA›$†1  êU4œ&b$e)!èU0ûBۚ$Š1 ŠˆêU2zJܚ$e)!$ÊU1²… ܘ$†1<(ªU0Û7ޖ$†1 š"«U4Ó;Pæ–$e)! +U2’-lå–$†1 ð «U2‰ì–$e)!`€ŽU1ҁì–$†1 `ˆ®U1“3—$Š1!jˆ®U1”,a+—$E) Â(U1–8Hc—$E) ƒ(U1—F£—$Š1!©"ºU0C0›“$E)abpU9·ƒmJ{Ç9‚}š”Œ1 o- j€†1bý"83o; [6Y§9aý"šº0 q; R*xŠ1bý"Ú²0 y+HÒ/Že)‚õPð0  aRÍe)‚õpà3~‹aڢɧ9a÷ˆjè2 Ž‹a›¢Á§9a÷ˆjÊ0 Í A•>¡f1‚×CÂ0 }*—Zhf1‚×Áƒ2 u< ÑfL§9aß"©£3í= ÙdM§9aß"©+0 í?©ä e)‚_ 0 í#A¿ÔBe)‚_0 ­ƒa4CŠ1bˆ§Ž2mƒË(‹†1AˆŠŒ3’–$·H†1A€U}3””ÿ·=f1 Uý,ÿIâže) UU÷I&™$ÉÿBA«UU ~·$vµk!ÿU_ð„Ÿ$É_ ns ÿUõ_u›$þËZAÿUW(˜Ÿ$þÞï{A÷UWøzŸ$·?@ŽsAÿU}‚ˆö$w"øŽs ÿU_ð.ñçI e) UU\­›$Iî)JºUÕ7}öäö ðmkÿÕ¿à‰¶ÿ'¬ýnsÿ_ú/gm$ÿ?a,cbUU‚v¶Ÿ$ŸMkAU÷5 °[–?†1a<<U2â%^ƒÿe)bUeO÷ϐt cAµ%%µ­•6lÕx?’”â£]¯j…V£û'4¥‚ŒŒúUÉ ë°œ›$Ƃ..÷UˆkÁ·»„A.>¿ý»àýX²&¶µb\XX^Â4Lݚ?qŒb¢¢ëUUϛä0„A ?ÕU‡êŸ|’$0„b.œWU3± ÿ™äMkb,•U’Àì[óÿQŒ‚``zUs ‘äI’$mk %UUU«xÎçœ$óœÃƒééU| äûI’$MkÿUUrRÿ÷mk!U_­ ±ÉŠ¶Žóœ¢U‰‚®6Éß$b‚%f1 ÕVXP’Iâv&‘ß„¢U¿+ՐIâç] 0„AUWêÃ} IBכZ cAUîÀxùoš–T,c‚U» Ž rζN0„‚U鋮rOÂçó  cAUVž °ɛTÿpU­‚Õµ% ¯ÉëTü óœ‚Õ7& ²éTü –µãÕµ'³éTü óœ‚µ7& ¯ ÏíTü u­ãU·'¯Ïëü ‚Õ7& ’OÒ$K‚'QŒUWV\œ¹¯É“$’”AåUUy°äoɟ$mk ¯õUOÎý ‰$IJ÷'õU ý$N’$a×TWU^œ?I’$«Z ÃUUUsñçI’$mk!+UUUbÜpßI’$ËZ*ÝUU`šæûI’$ªRŒwUUp ɝ$mk! ÕUycÚ À,c |WUzI* `ÛmkUUzI* `ÛmkUUzI* `ÛmkUUzI* `ÛmkUUzI* `ÛmkUUwhâ'I’$®s\WUU@@ @É©„Í£õ ­èÞX‰ÿýà «‚×aÏùÏÙrìb‚•%Õ¿z™ÔIÀImk$!\\\^7çL`÷ƒn§9Ãé‚]¬j 7íÁw_? cÃmËuW6¥FJv†1!‹ ÿ 1 Îݲ±/ÁE)A÷ªýÀf ÿÿ<µ ìb¢UUÿqšä® lmkbÕUÿ ….·¶/©®sÃõÀwÄ’Éÿn,cîU­y(Ç·‰Mvmkä ¬öõº­“<÷/Lr”$!UU¢‚ ñ–Ûñ?h„e)¥UU¢fšìò¥#0ªRAÀk{`y+­ý$ØžúÏ{e)ÿUš~u"€ÿ'’Ž‘MkE)zUªmäœü$4’ c!êU ª“ ɟü6ÐnqŒE)UU¯vüü€ŽmkE)UUª*ë:Ûæs0„Ç9ò_ªµx0]›$Æ²¯{†1ûUšîSCCúƁŠRrú€Š|ÿ/£”$MkÃ_Ubö H™$ªR‚ÿ Uaö/@’”Û«Z¢ÿýI í<òãØB‚_P\÷r ÿj”ÿ cÃU‰Uf ÉMNðÿªR¢Õ U|@’elMkÃUªµ[Ƀíü8ËZÃUhÀuyk‹mOò$Ï{!þšUUgm+ Iž$ëZ!ÿUUt ¶ þ$Mk$!ÿ×Ud-;@I’$ËZ!ïUUu·»MI’$ËZä ¿UUq!µ ɝ$ c!ÿÕU^íA™üËZ$!¯õUYë>}bûªRA^XW-÷$µ=Že)£šWÿª&MۖŠE)£"Uÿˆ'“–$m‹aE)£ªUÿˆ&–çm AE)£ŠUÿˆ&–'m+IE)ÈUÿª&i ÛÖ4E)£ˆUÿ"&’”$m; e)£ªUÿª% ‚Ü6Û(H$!bàª%Oâ?èÿ$!ÃU_€÷}ÿŸ»¯ð’Mk£UÕ ­yIR»šPÛLc£U¿ÿ{Ib7ü.ŽsÃUÊkkIRòÂfçªR£Uêß\I’Ç#ñŒªRÃUÕ*Õu ¿O»hL' cAÿŸØ^e ÿO’Ù&ëZ‚Uª [l é™ç,c‚µ ©UB6Åí'Ç9a'&_UUu m™$IJ!ÿ¿Ub%; e›$‰J!««Ux OÊ™?Žs£Õ>ûU{®)$™$Mk »ªU|e+$™$Mk!»ªU{Š#0€“$Mk {`zU °@> Éÿçö Ç9bUUßKl€•IJãÉÉžS!¿m;c_BIJE)õUz JwòúÕ ÈIJÃ]}ëàO7ãŒA€ž9iJ§9ê zX€¹ [O:ŠR!º*zzb374rqßËZ†1ªÝýP+Ñ[O0IJE)`àêbHÐTÛI’$IJä šÿUUF€ÔÚI’$(B! ÿUUC`·I’$ç9ä ¿UUJ Oö¶oÛB‚`zÿJÿû[>ç9‚¿?²zHm Aä”ßIJ$!ÿŠ¯UN"vΚ¥à¶)J$!_Ÿ ÿOu=ӐN6)JãÿîÀz@H9UN€iB‚%*€O$~B²ƒÈ­(B%)Wꀊ5!–ü)PŠ1!€U />Üü?$;€Ç9!êUª‚?(ßA¶×Ç9E)‰ÿý>70ðÇ9e)ªÿÿÿ]34Š1†1ÿÿÿÿz…€@e@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$" ŒÊ¢êø A\ÓZ  ""€ " "€  øœ@€UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUùI$I’$ÚÖUUUÌüÃzlÛ}ïP`BUUUUUUUUUËû¶m¶cÛÛÞU•UÖûyü؇m۝ï@PXUUUUUUUUU©ÿF℠m۞÷ `U§ýØ|lÛ}ï\PBUUUUUÿI’I$ÿÿUUÿI‚$H’$ÿÿUTTUÿI$@’$ÿÿUPPUÖÿvc;¶aÛ}ï•UËû±}؏mÛ}ïTXPUÌüvn<ÎeÛ}ï U§ü1b'ÎiÛ]ï 4Ušÿ Ì$fbÛÞ÷p UÿI‚$H’$ÿÿUTTUÿI$@’$ÿÿUPPUUUUUUUUUUUUUUUUUÖþ6bçömÛŸ÷%EU§ÿ)”$hbÛÿÿbø UÖý·Û°m۝ïTTVUUUUUùI$I’$ÚÖUUUÌüÃzlÛ}ïP`BUUUUUUUUUUUUUÌû΃ǹlÛ}ïB`UUUUUUUUUUUUU©ÿF℠m۞÷ `U§ýØ|lÛ}ï\PBUUUUUUUUU€ýfâüŸaÛÞ÷ ÑU§ÿ…’$MhÛÿÿa>‚UUUUUUUUUÿI’ $ÿÿUUÿI’I$ÿÿUUÿI‚$H’$ÿÿUTTUUUUUUUUUUUUUUUUUUUUUUUUUšüÞïüø“ŸŸ÷! €ÿÿÿÿ$ÿÿUÿ$ÿÿU¥I’$I’MkUUUÌù6âþýÿ?ÿÿA¥ ºýyòÿÿ›ßÿa—×þ³ýÈÿ‘?Þ÷V`€UUUUÿ ÿÿ@ÿ$ÿÿUÿ ’$ÿÿ@@@UÿIIÿÿÿ$ÿÿPÿ$ÿÿUÿ@$@’$ÿÿPPPUÿ  ÿÿÿ€$ÿÿTÿ$ÿÿUÿH‚$H’$ÿÿTTTUÿÿÿÿ$ÿÿUÿ$ÿÿUÿIIÿÿÿ@$@$ÿÿPPPPÿÿÿÿIIÿÿÿ@$@$ÿÿPPPPÿÿÿUUUUÿ ÿÿ@íýÿóÿÿoÿÿ•ÖüŽýØüÞ÷VP@€ÿIIÿÿàþ?üÇÿ÷?ÿÿ`@€UUUUÿ  ÿÿ@@@@¥ÿ¶mÛ¶k#ÿÿUU•5ÌýFÓÿÿÿGßÿ!)€Ìþúÿÿo#Ÿ÷%“ðŽýØü_ÿÿ VX`À¥I’$I’MkUUUËù6âþýÿ?ÿÿA¥ Ëþùóÿÿ/ÿÿ–Ëùý×ÿ›ÿÿÿAZ`€¥I’$I‚$MkUUUT“ð¶içίÿÿÿ •% ÖýÍÿÿÿØßÿ XËý)ü¿ÿüŸ÷`€¥ÿ¶mÛµØÿÿUUV\¥ð¶m;vnüÿÿ U•% ÌþhþÿÿÿÈŸ÷`ËþOñÿÿoäŸ÷A€ ¥ð¶ۏýÃÿÿ UVXp¥ÿ¶mÛ¶k#ÿÿUU•5ÌýFÓÿÿÿGßÿ!)€Ìþúÿÿo#Ÿ÷%“ðŽýØü_ÿÿ VX`ÀUUUU»û¶mÛ¶ØßUUUX»þ¶mÛ¶m#}ïUUU%»I’$I‚$ï{UUUTUUUUŠû¶a;¶c÷ÿÿ Օ%íþüÏ}Øÿÿ@`PXÿÿÿÿIÿÿUÿI  ÿÿU@@@òý¶a;¶oûÿÿ•ËùüÿýÛÞ÷@`PPUUUUŒÿJaÛ¶mۺւUUUUUUUÿ ÿÿ@@ÿI’$ÿÿUUÿI’$@$ÿÿUUPPÿIIÿÿÿ@$ÿÿPPÿI’$ÿÿUUÿI’$H‚$ÿÿUUTTÿ  ÿÿÿH‚$ÿÿTTÿI’$ÿÿUUUUUUÿÿÿÿI’$ÿÿUUÿI’$ ÿÿUU@@ÿIIÿÿÿ@$@$ÿÿPPPPÿÿÿÿIIÿÿÿ@$@$ÿÿPPPPÿÿÿÿI’$ ÿÿUUÿ ÿÿ@@ÿI’$@$ÿÿUUPP»úýƒ?þïÿÿÿ¢‚ÿIIÿÿšùþë¿óßÿ!0Ð§ø±}؏ýÏ}ïT\P`ÿ  ÿÿ@@@@òý6nçöoÿÿÿ%Öû}Ø·}ÛŸ÷PXTTUUUUÌüù«?þïÿßÿ €òý¶a;¶oûÿÿ•ÖûüÿýÛÞ÷@`PPUUUUÖûÎoüöoÿÞ÷ òý°Û·}ÛÿÿVTTTÌüý“_ÿýßßÿ €@@UUUUÖûvnã¶oûŸ÷%òý‡ýØ¿ýÛÿÿXPPPòýÆïüþïÿÿÿ Öû± Û¶mÛçTVUUÖû¶c¶mÛç•UUòý?üÇÿýßÿÿ`@@@òý6nçöoÿÿÿ%Öû}Ø·}ÛŸ÷PXTTUUUUÌüù«?þïÿßÿ €»þ¶c¶mÛ}ï•UU»þœÈcäßÿ!pÀ »þFŽOŸ‚\^`‚ÛIžÄIu לAUÕ5 ËÛ3>€*YΣZ^à ýI’äÉéS8ÆAUU•'á2ÕRò’( ÷œÇ9ck€ÇI’$Oº¶µ!UU×6Þ]ӓXÆËZí‚(ÈOò$Mµ­!WUלãqþº”Q÷œ!Ýù ÿNâ$|"þYÎAWWVXY¶mې-ŠRUUU<7¶mۀ؆1UUUTò©ø©$‘yÎãÉ è;KHÐ3=šÖE)¢ppµsˆfOö‡u­‚ž˜—×Õà'hµyÎbX\\ø®äÄ ÝQŒÚÕßðÞ>b"HR+&YÎ(BXðX• N„G{äG0„‚å7ri`+'yÎç9\ø\ ʂ2(‚"(÷œ7677Þ;L‰jÍ$YÎç9V€øVå õñPÚւ%%%%Ã#ý #ß?÷œŠ1WÀjWÆ`F`F÷œAÉÉÉÉ¿7DH„DH„8ÆèAÓÓÓÓÆ?HH8ÆèA4444å6¹xB¹˜ˆyÎB… ……×'¿ÄPÉôBלŠ1&% 8ïXŠ•X…yÎç9 ÍMõMÍ<Ϝ|ÁºÖŠRÇÎÊÁà—|1×òƆ1AaaÉã ±”Pùdb8Æb %%‹Þ3)šê)cšÖç9ÍMMÖ?‘IÑ yÎb%55/Û5Ôˆæ ÆŠ1†‡'ãŸõœÏGŸb7••.Ý5J¡TJ±YÎÇ94446ž ûçÄMŠu­‚–××<Ý5h€FhgYÎÇ9œãòÍç{šŸbÜVVžÜ,RL%S‚ÅÆ%)ÐRRØêM „ÚÖQŒ—AA–]=؃؊RTWWTÜØO'I’$YÎ X^UUã„d’I’$YΫUU»Ð?>I’$u­ApZUUÛ ðñ·šÖ‚ ­ýÆØÍçNò$÷œAØWWUá‚T’I’$Æ ªUU³`6ÇI’$–µ!˜ÞUUãD’I’$8Æ ªUU»ºÁŸI’$4¥!<–UUސD’I’$Æ ªUUÜ á˜I’$yÎ!'·UU ÊIJrÛÆ €ªUU¶|óI’$u­!ËmUUµƒgÞI’$•­!²ÛUU·ðÀ›I’$u­!,¶UUݶð—I’$øÅ ¥UUÏHöI’$8ÆAÀzUUµóI’$u­!ÉmUUßÓI’$yÎ ‰íUUௐ˜I’$Æ µUUÜ€J:I’$8Æ ÀzUUÞùŒI’$ºÖA%ÕUUÚFöI’$yÎ!€zUUÇÂ``Û÷œ!5ÕUUÝDÒI’$8ÆêUU•ŒñÄI’$„6ÕUUÝP²I’$™Î!ëUU•ðéäI’$„œWUUÝ`’I’$8Æ«UUÉ4lÛל ÜWUU^Ù¶mۊRQŒ UWXZŽI’ûðr0„Uý+YIâ$HždªRUW”–LI’$3¬ÂjR UUÎοI’˜ ‘˜²” Uµ%µi€M؁MëZUVTV I’$I2AUUU TAUUUà ¶mÛ¶ ¬AUUU% I’$I&AUUUXI’û)¯0„!UuÍíI’$K‚$AUUWVUUUUägS%•W€™Î caS²ƒñQŸÉýËÛÞiJÂÊÇÍÈ ¡ ¡TלcccÃÈ`F`€FÆÉÉÉËޔC9”CôÆrrrrÛ7Q5Qc4ÆÇ9aaas È!!JƂXXXXÉ@EZ€E:€8ÆBÓÓÓÒ ËA”aÆÜÜÜÜÛâ'Æb&ÆA˜ØXXáê$ …~18Æf1,ÀCaä‘ •šÖ!'%%%ÜS’ÌBÏ$¡yÎMk`%ÀÅ"!z¢'â÷œe)ÉÉÉIÍ Â=BS趵ÃPPpCÙ)éMŸPl8ÆÇ9ý))£æ}Œžà ~ßE)WÜܜßN¶³a€JyÎiJŠ ,ÚIyoÿôbšÖe)õ¥¥áì#ô?ðyÎã^p`bßM±Ý ž0UûÞBý++ºÍNª[ø‡XÆf1Ֆ”4ù+­ÃÉJª™ÎÇ9ÂÂÊÊ 1ùI§paT¥‚­ ƒæ tŽÝÐ/Ý÷œ‚^Ðpðìdù_yÁ ûÞIJý/-*Ú&mƒ‰˜$ŽÆŠ1ˆšÖ ‰yK'zÂלAµ Ë˶ëô¥}ß4¥a^pûÝÈ,)K ÀpŸF1í"  ·\Á\Á²”WT\\UUUUéDIöŸ$ÆÿU߃,5’$¶µAÀpWUåjŠµ€¶µ õUäMÕ¶µÀp_Uè…vJùŸ$8ÆAƒ õUêB/>’$÷œàxWUâÂVIùŸ$¶µýUä©ÖA\çbØ^UUçÐDIÿŸ$Æ ýUÿjÂ'O’$ÚÖ!\VUUºÆr1ù“$U­ cc]Uß ‘tɟ$ûÞA%µUU—Ðì$I’$qŒàWUUŒŠùŸ$4¥!‰‰uUÀ,ì÷“$U­ Â`_UÕÄfIùŸ$–µ¢ýUç %šž$÷œ8ž_UÖ" IÿŸ$–µÿUÑ&ÖJϝ$¶µA‹ÕUì ÕR’÷œâàUàEIÿŸ$–µ ýUÕ0¡Zž$לA,œWUÅàa$Ÿ$–µš€êUà'xK‰™$ל!‹ µUºT Ôlž$4¥Aòð^UÅ õ›$Öµ!88žUÜŽH‹~$¶µAŽŽçUÜmñ¯“$¶µAãcyUƐ;'™$U­°«UÚ %[Λ$¶µ 8<—Už‹±Ι$¶µ!66—UÊ4ÄΙ$–µa&—UËZØd䶵AÀzUɆüA9™$U­ à ­UÝ-ùt’$÷œAãp^Uɐ;'™$u­°«UÛ %Nž$÷œA8œWUÞ {I%$u­ ,êUÈ4Ôə$–µ 'µUËZØd䶵AÀzUÿ”I’$óœ!%µUUx" fŽs —ÕUÜ $›$÷œA êUÜ2Áϛ$Æb,6ÕUË œ d›$yΣ' þUÕ&êB™$÷œ‚˵UË<ÀlŸ$y΂ÉÂUÖ D_h/›$y΃r£íUË‚ ˜íŸ$Y΂²ð_U× è e›$šÖ¢œ(ûUÁp'|’$ל\\VUUUUUwI’$‰MkUUõ c¶ Ø 0 c UUU%I’$O‚$ÃUUUTGI’$É£IJUUUÍ7¶mۜÀÇ9UUUPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÖIMçÐ;t™Î!u_زã US*!XÆb%/,,ÌNBòV u­Wê€Ðyÿö–l‚4¥‚uyËÅvr:#8T¥_{bpUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUó•ôA)vª™Î! Éß;Õ‘PXÆb&'%%ÉÎ0B’ê?–µä 'ÀWê·ôI‘y΂%5%Ö؃&zÂ$÷œAX\TVUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUš|?I’$²”ÂUU˜ɐÜI’$Ӝ%ÕUU2 E)TWUUš)ûI’$’” ýUU1Hò$I’$e)TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU€@Å@ »¹ýI$4¥ý €Îœ #Z‚ï{Ã× Ê‹ŸIGK6TC’”õš!OYk.æ‚¥E)µž&¹fbø²”†1…‹‰‰$1kax€’”Ç9õ‰ÁÁƒR1antAï{iJ=‹¢9sBZ±UӜÇ9^:**®V®,òqŒÃ—("—jʐH²”!Þ:  ž{ŒYÕDMQŒÃÖ8#"Ÿ s yÕDMQŒbÞ°#"›Z”DM0„ä X° "œ ‚°€ŽiӜE)R𯪛 ¥ì«(Šï{zÀˆˆ—Ib?€80„U_pp”ëôüùOA󜂮UU‹­ô˜¹_»qŒ‚.µ}Ÿ{2àüﳒÏ{ÃU]®€,”<§³Žï{ÃU}®%”$ÿCoÏ{ã UU®}–?v²qï{‚‹U_ªxÜöÿINŽsAªUU>tñçOŸmk‚*UU”€Xù$ÉóӎsAšUUçv‘çùsîMk‚2UUi˜õç÷CÕMkA8U]ò÷$I\Žsa°U՟}@ù'OÒüï{aðUUW~û'Iòçï{AðUUU}Àü?Éÿ˜ŽsAàUUµ0@“$Iâ$E)pUUWµh‚ú?Ӝ€’j¥M˜?„A((‚}ŽòJ?„¢,‚] ²B‚x?ï{‚ €]‘«&ÊÀn?„aŽÈ`_’@¡ì÷äQŒ£0žU  ÐMt—ä’”‚ ŸU¯r%#õäqŒä <((U°ô&£ôüӜ!® U·ÞLœ˜?’”!˂‚U²T+l™'–µ$!û¢ªUµ£õ璔!8 UÅt§ëôü¶µe)¶,®Uº«‰q¢÷€×œE)ÞžŸÕ¢!<×òÄ$óœ%)§®V[K‚'Kò$ËZ VTVU© Ir' l4¥aU]û © IRç£ Ҕ!Uߺ ’Ib·+‰I0„AUÿ®y²ÕÓÏ{AUúªšIbþ+i0„Uû¢‰2þR)®saUZ°…IÒǪŽsAU×8Iâ˜3…Aï{!U·.„Éÿ,®sbU¥ƒIòûž(®s!U}‹•I’'^=Œ’”!UUû¢²I’äe lU­AUUû yIÒÇeI@kAU׫~Oܛ%9€Žs Õ·ª‚wNÒÛ# hns W÷ª€dIò$L‚',c UUVT™ÀæúIrߑŒA UݚQ¿Iò䲔A(ßUU‰˜TÛIò$Ï{ÿUWrÔÖI’$ŽsÿUUTÚI’$ŽsûUU‚l#imkÿUU…@»I’$ŽsŸUU…ЗI’$„!÷UUŒà·I’$„ÿUU„ôÒI’$®sïUUN‘ÇI’$IJ"ÕUUšÀÖÞI’$! ßUU‹‚кI’$Ï{ þUU}À–I’$®sŸUUˆP·I’$QŒÿUUdxÒ$I’$,cTWUUž7ÿ9rCׅ¥B•*²›š4MŸq›ÁG¥Ç9Wº:–¢}"'zÂ$Ï{^\\VUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUM© ¶mÛB0UUUMömÛiJ7UUU ضmÛãTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@ )Ç@‡=ž yzç„ç9û Õ]sOôDIœ$Š1ÕUœ’ºõö“$qŒAÀz_UˆIr?/ôÏ{AU]bpaIrÿ9@ËZ!U]¢JIòäLÖIJ!UU–bIâ'bŒåËZ UWØØ<IâÛ 0€ç9U÷‚tI’üý0SmkAUU'.BIò$ËÍBUUÖ&I’$O‚'‚UUUTI$I’$!ÕUUUZÿ“üù”ËZAUU% PIÒ>ÀNŠR U_`ÊYIòçÓ+üiJAUUÐPOIÒþÀxÂiJ!U_ ÉSIÒ>ÂRéiJ!U_`CzI’'–M”ns UUó²aIâþP‰Z«Z U°8OIÒÞ)úIJ Uß xtIbÿë™mkU¢»SIÒþÀ&ŠR!U_ QIÒ>À²ÁªR U_`ÊI’$σÃUUUŒ;I’$ɝç9UUÕ KI’$ÿ_ŠR UUU :I’$¿?ç9UUuUI’Œ á·«Z UÕ%÷QIâäp iJ UW<SIÒ:€ @ŠR UÀcI’ü å ªRUÕ%ZI’žŸÀCªR Uõ\IR'’MtiJU^ð"OIâ>ÂN÷IJ!U_`~UUUUŽÄ^ÉÅþ:0„ãcCc]^ )™ÿËZA ­U\ó… åÇ«ZA88×nè31Òî?Ï{‚\zjUHðÇbiJaqqaNà &h¢'IJøX\\ˆñsɝ$k! %ÕUDxÎÇ «èA \ÖåÅ9t‚%ϛü§9 ^XõÕM™p֗'ŠRa)1›UO$NâÀÒ>jRAOJ`_LÄCüÕ÷NJRaSS›Us iÓ&˜m?®s‚}_ø_W…zjÝ>ŠRAÉà_~S Ð]çÏ{A²àûU` ñ i'«ZA  _d PÃÎRm'ªRA`Êà_MÛzöäiJA–U\ ÀHÊk'ŠRa€Êà_cÞ-›ï',caBkzW9ϟ$ýüƒç9AUUçÅNúa‰™$jRɵUM`ÿŸ$IJWUQÑ9$ŠRA7'õUNø·[‰›äŠRA”¶õUs­vc±”tðƒA¯­µuޘ‘„J®Žs†1©ùÂïh-TAåï' ca[Uk º€®æ”Ü,c£ì+Õ]Beu’]'ŠR 0#ð_GL2óÀî>(B!Vn`_UUUUbI’$ӌuMk UUêžWI’ü'TˆŠR UU ƒWI’$;ÑCŠR UU.IIò$`J)J UUØ>D9÷'@¿É(BA¥UpêPN’$u )JWUž8GI’$Š30(BUU{bHɟ$ŠI (BuU»"2I’$÷VŠ1UU­JI’$LŒ‡(BUU֔|I’$}Œ^1Œ UUלsI’$u¯‚mk UUŒII’$æK)J UUÛ2FIò'@¿¡)J UUpÊQI’?jR UU‚ JI’äÿÀ‰)J UU%Š]I’äŒ5ŠR UU6*OIò'PO‰)J UUp‚PI’?ƒŠmŠR UUš`I’ÿæ¡ [!UUƒËIɟ$eLœBuUڒMI’$€íBUUz@NI’$ál`jRUUéƒiI’$¯SÌmk UU}ãHI’$\a)J UUz€B€ •¥(B!•UnŒM Àœ$ö¥ŠiJaàUŸÜXIò$PªR!UU° WI’$m^ùBUUÚòTI’$óŠRUUÞ(I’$O‚$ÃUUUT¶ H!UUaIbpgXGí,cbœœžêc VÍ֜jMk¢ƒëé­a<ðhÏÌ8ëZ‚‡çvJ:щ‘€)J,'5Õbwÿ¡åŒ9 cÃuÉoZwÓ0VtèÇMka :ž×L3ð„dvIJbâ»v§w­×ä cÃ;;:ÖYڋœ&™· [bÚØÿõZzª§`)­MkAÖÖüêy µ‰ìú<Žs$!8ŠîUf *ŽŠëì;-k‚Œ®îwf\uçÆ cúž]O ˜€€,9IJA……ÊpfZ%ŒkÒ'®sAºâ^WMcЙIJbã -x§WêÙçMk‚;:žÞp %/8§Ÿ?,c!ëpû}MPオDèIJ!p BOX€X jRAMMM}JÄIœÆ”j(B!’’#[ª¬SŒñ€ŠRAÌ$6ÕR[KæĪR!:–×h „ :åÜ c‚,÷S úÀ ®;ËZ¢&'í]aNá\{Ö§ìbA7–×f{܄ñT cA֗75Np±* ŠRa<6.(H â1šÔ)JaaIÍõbeSnЮs!.þ^^*]؀ Ie)TVUõ)“$I²$A}UUVƒœ$IlAÂUÕ#>ùŸ$~>ç9 UUWXpŸ$Ib,AüUUc>I’$‰ŸƒÇ9UUu€“$IbLApUU£DI’$ï#øB UU]p>I’$‰Ÿƒç9 UUu…Nž$IýƒÃWUå‡=I’$¿_ƒç9UUw<ÿ“$‰ŸƒÇ9 UUu…u$IRHAÿUU«u“$I²AUU¶nœ$IÂAßUU6€“$I²WApUU¶}’$I²A_UU¶ ‘$IB—A%UUŸª›$IâÁAþUUË*I’$IBØœèAUUW\\Ižä‰•«Z UU55[ñߒCôªRA5Õpr*MúäI"è$!–×UÀWhâ'I·ËZ\WUýKð’I⌊R! ýU×(HÂ$I9$!TVUp†¯cî\î„!}kËkaRÉ¢:ìªR£`ÀÈ@T £õâOì)J‚c`XBm!NÂôìéMkÃÉÊîËhg?À‚^1 c!yÂ@co&h*—<íx cE)جæ7uÍ&o3 ÷kf1§€ftULªª:¯ŠRÃvÌÌît ÍOüÀ×Ï{†1u§'wN=º€ ž¯ŠRÃÇÆÆæa&g+aóÜ4,c†1ýŠfwWL‡ª8ϪR÷ ÌîQŒ…J 8iJb6 ˆ.g9K³ž ëZ÷ ŽY Œ‡NªšŠRA¶ ˆ,u-37Žsã÷¬î|Yçnš˜ËZÃmÃÉÉmD^…^ø¥Lc£ғ›Ûdùïu'ü,cE)U¹›Ro¯¿mðÀ˜mk£}ª,¶nŸ¯ÕÀ_ÆMk$!UxP[dX<þ cbߘØZi ÷œýX®†mk¢ÝZXÞtdȅ|ˆ†MkÚšž˜M-â".Ò"jR¢OOOOdë=ãœ&,cþ*ú^eÒ®Ó ,Lcbµž·5e™ŸÙŸ-üªR‚ñññðfŸìËáMk$!HffH `h‚nè†&,c‚ ùù j ‹±x‹·mkA6¶¶6d‚c5V#8ËZ pssp…œ$IrÛãÃUUý'Ÿ$I’Ü$!bUUÕ Æž$Iâ'!cUUW"œ$Irû!ÃUU} ƞ$I’Ø!cUUõN?‘XIþ$)J '5UU[èÏ'Iò'ëZ!\VUU&u•Ižû$!?UýSèÏ'I’äŠR!\VUU ˜$IB炈UU^ ˜$IRö‚ˆUU{ ˜$I“‚ˆUU­!µ‘$IòÄ!?UUÕP>–ÔIò'B åUU$Œ‘äIrû$!6UU}Vè_'I’üÊR!\_UU œ$Iâä!ÉUUW†›$Ib?ãóUU#‰¶ I!ðUUý8‘$Iò˜‚$UUµĕ$IBç‚2UU^%î—I~?$!¿URhÌ'I’üjR ÜVUUEœ`6(B>ÕUU=#ÌÛIò'Ç9 ÊöUUIhÂ'I’?IJ \VUU,€ H!5UUõ($Iòä$!ðUUW*M $!ÀUU_(`I%) UUý"‹‘$I’Ü$!6UUÕ(“$Iâ'$!pUUW^h»,+º, cã©3›3R Ñ@ Ú@jRa'ÇR`"$E"$jRAXPSPS*Œ J„ ŠRe)Ã((\¹”‚©ž‚ªRbM\zˆFj„FªRAœR #!-"!jRa`@O@^h«,*ª, cé3›3R Ñ@ Ú@jRa'ÇR `.€E*€jRaØÐÓÐ^m‘EE•E cÃjÌæÌR !HAHjRa ñ\Ì¥J¥ªRA6444\ÒC4WC4ªRbPrqrS*Œ J„ ŠRe)Ã((\¹”‚©ž‚ªRbM\zˆFj„FªRAœR #!-"!jRa`@O@^h«,*ª, cé3›3R Ñ@ Ú@jRa'ÇR `.€E*€jRaØÐÓÐ^m‘EE•E cÃjÌæÌR !HAHjRa ñ\Ì¥J¥ªRA6444\ÒC4WC4ªRbPrqrS*Œ J„ ŠRe)Ã((\¹”‚©ž‚ªRbM\zˆFj„FªRAœR #!-"!jRa`@O@^h«,*ª, cé3›3R Ñ@ Ú@jRa'Ç S!ÜÀ ÜÀiJ XPRPNÿI’$ŠR UUUPΐäI’$ŠR'UUUPXò$I’$ŠRXUUUP–?I’$ŠR ‚UUUO1üI’$ŠR UUUMpö$I’$jRœUUUQÀò'I’$ŠR `UUUOÿI’$jRUUUPΐäI’?ŠR 'UUUOXü$Iò:jR ØUU}Nü?I’äjR ÀUUUQüIòüŠR! UUUM‹‘äIòÇiJ6UU×O€ó'IâûiJ pUUwQ–?I·ŠR!‚UUýO1üIâžjR UU÷Mpö$Iò$jR œUUUT ¶mۊR `UUUOÿI’$jR UUUQΐäIâ֊R 'UUÿMXü$ùojR ØUU Pü?IÒûŠR!ÀUUwQüI’$ŠR UUUM‹‘äIâºjR 6UUÿO€ó'Iâ?jR pUUWP–?I’äŠR ‚UUUO1üIBöIJ UUzMpö$I’$jRœUUUQÀò'IßjR `UUÝOÿIÒ'jR UUWU¶mۊR'UUUT! À¶mۊRXUUUi ±mÝ×}MkÃu#››[Û œØ‹MkaÕ'çç[uœÔKœMkaWØÛÛb ¶Áº¬ËËZAÀÌÌaІ&è†nLcbõ ùùbV,ÅZ¬mkaÕ6¶¶aí#4Vc5ËZ!_pssM`Li$iJUõ¥x1oÉ õmkmÃâàs £9‚Ã=ï{b{zrZ`Inò„J©ªRAUëÂœ!Îï6…NÈ4¥§9U}ccf|¶Îä cÖ>''l ŒÏ'`‚%,cAþVXXq!@mƒCmmk! ¢r¢ 4Å É&ï{‚. «ZeMÒûŠjÀ [!WwËÃ_°¶Ú`ŠR!U/ÕPIê\lÑQIJ Õ>+xO‘r‘ÇøŸ®sªRA¡¡ÝUm«'x¢'jR!ÿTTT\&‚¹äªR‹‰õUy~ú„jñns‚UyÂcfà [—$,cA" ºUI`ßK˜„(Bhܖ•mIæëº.Žsa•7înÏZ5\s6=ïãzx{}Iò$xÂ$ÃUUTVWÇt©™$ŠR!#œUcb²ýs•ëZXú>5gIò$|' cUUV\UUUUf…p×I’$ c ýUU\œðžI’$,c 'õUU\Ð[çI’$,c Ø_UUfì:I’$ c ÀUU`hmØ,c ýUUs‹õÄI’ä-k 6×UUg‚S?OÒ'ëZ!p_UVL9”ƒù2)J …åi‹@Ï&þŸ·P„‚p^WõXÂþ;Iþ|ªRa`uU•>ÚAç9ÿUWÜZŜ'IR'ëZ!ãUU_Vª·Vÿm,ŠR‚œ>Õa`PŠRX\WUqÛI’$Žs ýUUOhâ$I’'ŠR\WUUVšûùϪR!ÉuUí-00(e)UUÕ5-ù—$N‚§f1 •UWÔZM¢MÐ ŠRÿ_p.„ °T†1VUUã5Iœä~ŒŠ1ÕUß:q „lûÒÑ,c‚ÂUëOò$OÒbWUUè@I–„I˜èA•••5qТ>|Â'Lc!`|VVrÆb1÷Ó&MkAcc]_PIžÉϊRÕ5%íFIâ$Nœ(BUW×5YÆHPIJ%õW\Mzò$÷C0(B TU}bUUUUZ m.œ]—nëZ‚_’»­dŽÛPŽ§ cA÷'·ÜV±óõ[­ËZ¢uyzÊf]2žyŽ,cÃ[ò¢©^MÂä~Š~Lc!WWלqIžÄOèMkU՗7|u"&Û#Ð,c ^Xpà|©c1Ý.mk!ycê€x9‹áfŽs!卩lə5,c!•5'tMŸÄsŽs W֞8{t"&Û#Ўs ^Xzà”Æb1%¿©„‚cckˆ~yO!e Žs!µ-)g š³þ˜=ßMk‚z^øÞN #®H‚$IJacèTTt`©N ©JMk¢‰ó£óu uRULc£'͏Ív(š”"šMk¢ž7>7_€SÇÚíÇëZÃpßøßpÓ®:/?Mk¢â|è| Mš,Ê¢,iJ%)Ý111P+©{]ÇqjR†1݁(iÿ݅ïå|†1}Ùs[uIo£ŽF¯mkÃuώ®]m\ySUMkAß»ºžQ@CÊ?øƒiJApʅ…ZÈujªŠªRb‰ºÜÜXOA‹¢.êiJA5ŽHHXhN™uQiJA\²!!\ߎMÕT,cAbî·· IÂ$H‚$AUVTTOñÞI’ü(B#ûUõ“è[ßI’$²”!ÜßUUf%úªÉ“$ëZ!‹ÍUUPñÞI’$(B#ûUU‘èÛ׉™ç²”ÃÜ÷õUP Ïàö`âÜIJA'ëX÷QpIžœjR ¥U•Pàà„IÂ'iJ (—UVN7'Iâ'iJ ^U_OÈ9I7jR€zU}PÎI’$ŠRéUUQpI’$ŠR ¥UUPàà„I’$iJ(—UUa-CªR žUUUª 5’$IJ ø`UUi+mì×?ëZAêCa}[kIùŸ$Mk!ó«UUaZ6µ`ŠR UU_ÓÒ©À-k ?ŸUUO¬ Ô’$)J ºàUU_ÙÔv`ÛMkA|êUUJašI’$(B"»UULašI’$)J"»UU[g‰ù“$ŠR ¢ƒUUJ#zóI’$)J ÊmUUgçÆI’$ c °ßUUE 4’$)J ÊpUUJõaɓ$)J "‰UUF+öIž$IJ Ž5UUFC‡æO’$IJ ²\UUJ¢6ìy’$)J ˆbUUH’$I’$AVUUU`éØi≩mkAí«ÞÜvIâ$|»®s!UWö&IIœ=ÆC(B!Õ5‡d ~"Ôź­Mk¢Wòãê NšP¬Á,ŠR‚]¶44P ¹ÝÅDJ€iJbõÛÒÒM ©* "jRaµnHH NŽ® ³0jRaÞ»##Lí“Ê)ž"ŠRb_mMM\·?³”l,ªRa}îÂcuâÕÅäyŽs!Uû#»[ÉýS« ªªRAÕ%ÎÈMNÇð[IJWܜ<_OÂçê y«ZAUVœ°_OΧòyËZAU֜°]~®ŠèyËZAWܜ°]~¢ÆèyËZAWܜ°[IØèyËZA•œ°ˆ|'s:žÏ{AV\ܚ—I’$d-pQŒ UUê D¶ Zʄ(B UU‚eɓó·øËZAUefɟŽ·ØMkAUõ­ dɟo·Ö caU¥ eIò×·Ö,cAUõ Jî™^GiJbUÙ¹#L·3aEIJ‚U‚+"{ És«.TRMk u *]ɟo'V@ËZbU¥‰TÉóó7V iJbUeSɟ°/V IJ!U¥ "Iò$N‚$!UUWTVàYIq$iJ ˜ýUaóàÿI’$ c .WUU^œðɝ$ [!'%ÕUV£ ùu’$ëZ êx_UO05š¯“$IJ ,Â}UN„ùAy$IJ ² õUM"Üɛ$IJ È'ÕUO¡~Nž$IJ "œWUOŠ5u’$IJ Kp_ULs5ù“$ªR!qyUUwÆäÕy’$Žs #ûUUP"úB¹$IJ È õUW£Z}œ$ªR:8×Uu§y~ž$mk°žßUu§y~ž$mk°žßUu§y~ž$mk°žßUu§y~ž$mk°žßUu§y~ž$mk°žßU~©XŠmk°žßU…öŸŸ$0„!¢ªwU_Ub9”,c‚{…åjtj¹Ÿ$ [‹õUktj¹Ÿ$ c‹õUktj¹Ÿ$ c‹õUktj¹Ÿ$ c‹õUNaUùŸ$(B"#ÝUJÃ@QÿŸ$(B""ÝUL@Áa¿Ÿ$iJ!0ŠuULÄ`QùŸ$(B"#ÝUPÄН$ŠR " õUYeBy$ŠR" õU'M؀ Û%)TVUU[IròÖ>ÈiJ!UiÃÀSIrò†>ÀiJ!UiCÂ\I’?CÈjR U]cÂ>I’$ùCšÇ9UU]Â]I’$·OÀËZUU}Â?Ir>]èA U[{ˆA€ "†èA U}kˆCIòí• ‚B!Uiˈ@Ir?ݎBU}ëˆAI’ö&-Ç9Umë€`IÒ'ÚðËZ U_X`CIr?/¡èA U}kÀUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU1–$I’$AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` ª©Ÿ$ËZAÈÈkUP(Õž'IJ!ˆ€cUP&¡Õž'iJAˆÀcUWøúI’$«Z ‚}UUr:ÈfŸ$mkAÂÂ{U]¢ž¡žœ$iJ!ˆ€ÃU]¢ž¡žœ$iJ!ˆ€ÃU]¢ž¡žœ$iJ!ˆ€ÃU^ªº¡žž$MkAîÊkUe …~0™ã=,c‚cay[^¢,퀳&ËZ Èàp^d…n0WÓ9Mkacay[ UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUI$I’$!ÕUUUŸ$I’$£PUUU`ž$I’$‚XUUU“$I’$£PUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU€€Œ@@+I’x ‘”E)Uµ%µ+ÉEÃm>E) Ò[-];í™€†1!ûòßÕ$6K! T,V˜1Ď­–kï{A Š E 7ë •g'Ç9a¯2_TNKC­–ûiJ‚÷uU œ®*ûüŠR£wììUˆ ©[ÔV›ß|ÃýóóUU¯ù¯—çŠR£œ)œUFkƒ­šÛäIJ!~èüW99=šÜ÷Š1AåÊÌw5 «+tõ܆1‚þ8>Õ/IÒqŐç†1!U»#U&IØ̕Ä!•66Õk¶ÝJ·–ûëZAÿueI¢– GÇëZ‚UšžÞLùãÎÚÎjRaUïÊï5ÿ= “\1ç9AÕ*êkJOÒ>VßÇ9Wzãý<I™>ñ»ç9!µ5'õ9 N‚ÉØ<Ûç9aWèèþ; ÿ³i£°²Ç9‚UŠ îV ÉOŽØT·ŠR¢Uª(ÿFɯn`Içç9£U š^F ÿ©ÈöB¢UÀ€~/Iò›ÿàŸf1 Uµ/ÿ9IRºõ߆1 Uº ÿOùor-ñ[IJ‚U­/P~®yÀÕiJAWž ðK ùS‰‚VÒBA}‚ë(}‚&h¢&E)_\\\E O.R rB‚U(šB ùC±DÙÆç9‚Uâ²ßC÷Ò0¶(B‚]þ þHIN—â@’BAUŸ(ª<IRÚIŠÇ9AUûšŠS I’€D¶iJAUªêJ ÉÓ²XDz‰J‚UÿžþFI²•Ù|(B‚Uºš—Hÿύ6²IJ‚Uë‚þ8I¢ ·ÙÇ9‚U(šú2ÿ3ª@u§9aUî »JIR’`“(B!U« ¯8É»qE¶Š1AÕª ú9 ãÓB¬äI†1ax 6ÿ³ŽÄéÇ9aU® kþ¿ÈÏ9¢׊ÔzK I’8›hIJaUuŠ€?þ»£ Ç9AUÕ FOò÷ BaUu GIrÿˆmIJaU]¢šCÉoß'lBAUߢ >Iò'À$IÇ9AUUNI’$$Ç iJAUUª*CIþÿ›&`)JAUUª‚:Oòû6HBAUuŠ¢?O’$› ç9AUU AI’$⊉ç9!UUšˆ7I’Ü"„AŠ1!Uõ0IB6€†1AUÀ:qùTAÇ9aœÉƒ>Ò0i)“2ç9bu×((<æãö:¡ç9A[ÊÊ>¶ÿçRÇ9aU0 ;¿ýü²„Ç9bUU >ÿ—çÕHhÇ9‚•U£‚<ûëäà€ ç9bÖW(:ôÿ?”8`Ç9bVUÂ>ÿÿç ç9bUU( < ¹™<:Ç9bµUʂ; 7“$RÇ9bmU0 =ÿŸ<#šaÇ9bUUŠˆ<~žçC%Ç9aWU2 <ÿýü*BÇ9bÕUŒ=œûç7LÇ9b÷U¢" <Û Y&Ç9bU <q}ÿÄ8hÇ9A}U¢‚>þýäà„ ç9b×U(:wŸ?”>À§9A}UBÂ>å›$›èAAûUº >}›$óBç9A÷U®=f$U9Lç9AûU»"@tù$sŒ^Ç9!ŸUÜV ·Ÿ<匩ËZ‚}Uïè`õ›ü6IBªRAÿU¯ G wŸ$MÀ(Bb}UêÂQvœçƒ ˆiJ‚ß]€3ìú$stŠ1AïUŸ°YîØ·PªRAßõ -«ÈÕࠜe)AŽû,”I®Ø­±Bûõ  >tëä³áç9®×>‚÷ï'h²&„a]W\^<ty?„üV§9 ŸÂ+(k‚Ø!ÂUWT; “—$«9hBaºUþ¢E ôš<íš BbîU¯1—äN †1!¢Õ×8O”*hŠIJ‚–ÕæNhoçß9iJÃ|]Ù"P û<5¯jR¢õUgŠYfc'ã§IJ‚k_ D Uó$* Ò:bsUìèHnrß% BA_ß" B ùöóHhB¢¥eŠ‚GOnÛN(B×ÿš(LcÂþ›&AªRb^_ªŠI©úÒÔ(`BaÍm¢8 XÌâDhŠ1‚ؖ(‚7Ïéö” Š1A•‚9MB'س9f1V^Pp5x?“ƒ †1A‚]rJ d™$1ÛA)JaºUí <Xy6n͉Ç9ðyÿŠ8Óûäˆ †1a}ª4 ôü,¹AŠ1‚ˆU¯ F—$õ+HBaªUß;›$œ¿AèAa*UwŠE ó˜Ô­aB‚®õõˆA [•äþ‰A(B‚ºU׈Q %û$L"BIJbëUVB"ù$ÉMç9AšUÕ*Gä–ü÷; )JaªUÝ"Cä˜$·-lÇ9AŠUÿLlùä­» ªRbÿUÿ*D%›?®-LèAAëUÿ 9ãó'ï#8Ç9!ZU]r<g?¶ IŠ1! _ÿ<û¢µç9Aƒ}Uú0àßÉ#ie)A×U€. ”?É/e)A]õ-àè$Ï e)AšWÕ: äO‚®Ç9A ÕWèGdÛI’$(B ÿUUGdÛI’$BÿUUGdÛI’$BÿUU\e*I`jRÿUUGÛàÙy’$IJ*ûUUGM#I`ÛèAÿUUEÂvÿI’$Ç9ÿUU5`ÛI’$Š1ÿUU<’ðÛI’$Š1ÿUU;‚c?I’$Ç9p_UUGT×I’$BÿUU=ÐVÿI’$ç9  _UUJI»m`ۊR ÿUU?жI’$B ÿUUD’Ô’ÉŸ$Ç9ªuUD˜8Óϓ$B ˆîUUHâ$I’$ VWUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@@Ì@3±ûÖ iÇ9Aõ}úš# cyÛ\ƒÑ$!bºýzø_C[ù±ŸûËZÃòs}u7 …ú¹ûnÇ9!ã}õ­?!Çæ¿ã÷Ç9!0Úï0 `I·¹}×e)bžþõý<v’'iýaç9Ã_Uý‰:7ñw€£9†1A-5zp2#+±vQ†1¢êà_ 2uÎqù`†1Ã_ªU€1Iÿ£m†1õ Uš,äm.e)£ªšU.# ²ME)£ª€U+uIO¬ME)‚¿*Õ(.ŠžR'e)£‹.·(*ã£9# @E)AZxê,~Žq~®mE)Ã_ W(& ö#ÕE)ÃëWð3@’’2†1ÃWªß(5ù_’+Ç9!UÿÕ;IÒ¶Ïëç9ÃUÿÕ7(¹ «ÙCE)ÃõŸ8þM’.o!Š1£תoC($ `[Í9E) ª€úz-ÏÏNNÊe)!U.Õ6-Iš+¹‘f1ãÕ®ª/ x ö³†1!Ô _í4³Ì÷mwŠ1!~àÝœ57 n͍†1ã5ÿŠ5 £ÿ}—§9ãe õœ3‘öÏr†1Ãi ÿ*)ÈÍE)A{@z`&⍀˜$$!!( €U&Û¶M$E)AªªU)䶭˜?E)Aªê€U%ðÿO’$$!WUU,’ðÿI’$E)UUU%ðÿI’$$!WUU&i ¶mÛ!UUUI¶mÛ!ÀUUU UUUU UUUU UUUU UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU Ü@'ùõКI$!£Õx€5X»±ýÿŠ1!žýýU.˜?&ì]ßE)ÃpXúþ'õ9ìíE)¢Ÿbbê%ýV?›á E)!÷WŸ­*!Ïínæ–E)!÷ ª( ÿÖÄ$uE)!Õù"°'Ûš5#íe)£êzxjIB’`Û!ªUUÀ6>I’$! ZUUI¶mÛ£UUUI¶mÛ¢€UUUUUUUUUUUUUUUUUUU, @'ÉÀ–åVnE)ã%®ªª%p¿®Û¬1E)Ãüîêjö?I’$ÀUUU€–$I’$b€UUUK %‚$iµ$!ÿUj  ðãaU]]‰ ƒ¢ÿÿÿÿ{ lhclass LocationInfo extends Info showcategories(Movement) native placeable; //#exec Texture Import File=Textures\Location_info.pcx Name=S_LocationInfo Mips=Off MASKED=1 #exec Texture Import File=Textures\LockLocation.pcx Name=S_LocationInfo Mips=Off MASKED=1 var() bool bMovable; `A//============================================================================= // LocalMessage // // LocalMessages are abstract classes which contain an array of localized text. // The PlayerController function ReceiveLocalizedMessage() is used to send messages // to a specific player by specifying the LocalMessage class and index. This allows // the message to be localized on the client side, and saves network bandwidth since // the text is not sent. Actors (such as the GameInfo) use one or more LocalMessage // classes to send messages. The BroadcastHandler function BroadcastLocalizedMessage() // is used to broadcast localized messages to all the players. // //============================================================================= class LocalMessage extends Info; var bool bComplexString; // Indicates a multicolor string message class. var bool bIsSpecial; // If true, don't add to normal queue. var bool bIsUnique; // If true and special, only one can be in the HUD queue at a time. var bool bIsConsoleMessage; // If true, put a GetString on the console. var bool bFadeMessage; // If true, use fade out effect on message. var bool bBeep; // If true, beep! var bool bOffsetYPos; // If the YPos indicated isn't where the message appears. var bool bCenter; // Whether or not to center the message. var bool bFromBottom; // Subtract YPos. var int Lifetime; // # of seconds to stay in HUD message queue. var(Message) class ChildMessage; // In some cases, we need to refer to a child message. var Color DrawColor; var float XPos, YPos; var int FontSize; // 0: Huge, 1: Big, 2: Small ... static function RenderComplexMessage( Canvas Canvas, out float XL, out float YL, optional String MessageString, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ); static function string GetRelatedString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { return static.GetString(Switch,RelatedPRI_1,RelatedPRI_2,OptionalObject); } static function string GetString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { if ( class(OptionalObject) != None ) return class(OptionalObject).static.GetLocalString(Switch, RelatedPRI_1, RelatedPRI_2); return ""; } static function string AssembleString( HUD myHUD, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional String MessageString ) { return ""; } static function ClientReceive( PlayerController P, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { if ( P.myHud != None ) P.myHUD.LocalizedMessage( Default.Class, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject ); if ( Default.bIsConsoleMessage && (P.Player != None) && (P.Player.Console != None) ) P.Player.InteractionMaster.Process_Message( Static.GetString( Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject ), 6.0, P.Player.LocalInteractions); } static function color GetConsoleColor( PlayerReplicationInfo RelatedPRI_1 ) { return Default.DrawColor; } static function color GetColor( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2 ) { return Default.DrawColor; } static function float GetOffset(int Switch, float YL, float ClipY ) { return Default.YPos; } static function int GetFontSize( int Switch, PlayerReplicationInfo RelatedPRI1, PlayerReplicationInfo RelatedPRI2, PlayerReplicationInfo LocalPlayer ) { return default.FontSize; } static function float GetLifeTime(int Switch) { return default.LifeTime; } B//============================================================================= // LineOfSightTrigger // triggers its event when player looks at it from close enough // ONLY WORKS IN SINGLE PLAYER (or for the local client on a listen server) // You could implement a multiplayer version using a tick function and PlayerCanSeeMe(), // but that would have more performance cost //============================================================================= class LineOfSightTrigger extends Triggers native; var() float MaxViewDist; // maximum distance player can be from this trigger to trigger it var float OldTickTime; var() bool bEnabled; var bool bTriggered; var() name SeenActorTag; // tag of actor which triggers this trigger when seen var actor SeenActor; var() int MaxViewAngle; // how directly a player must be looking at SeenActor center (in degrees) var float RequiredViewDir; // how directly player must be looking at SeenActor - 1.0 = straight on, 0.75 = barely on screen function PostBeginPlay() { Super.PostBeginPlay(); RequiredViewDir = cos(MaxViewAngle * PI/180); if ( SeenActorTag != '' ) ForEach AllActors(class'Actor',SeenActor,SeenActorTag) break; } event PlayerSeesMe(PlayerController P) { TriggerEvent(Event,self,P.Pawn); bTriggered = true; } function Trigger( actor Other, Pawn EventInstigator ) { bEnabled = true; } }#@^Ä//============================================================================= // PlayerController // // PlayerControllers are used by human players to control pawns. // // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class LineagePlayerController extends PlayerController native; //#ifdef __L2 // by ttmayrin enum EFixedCameraType { FCT_Pawn, FCT_VehicleRider, FCT_VehicleController, FCT_FlightTransform, }; //#endif var bool bFixCameraRotation; var config int CheatFlyYaw; var config float AutoTrackingPawnSpeed; //ÀÚµ¿ÃßÀû ŒÓµµ var config int VolumeCameraRadius; //VolumeCameraÀÇ Rotation var config int HitCheckCameraMinDist; //HitCheckCameražŠ »ç¿ëÇÏÁö ŸÊÀ» ¶§ÀÇ Ã֌Ұª var config int FixedDefaultViewNum; //°íÁ€µÈ DefaultCamera °¹Œö var config int FixedDefaultGroupNum; //°íÁ€µÈ DefaultCamera ±×·ì°¹Œö var config int FixedDefaultCurrentGroup; //°íÁ€µÈ DefaultCamera ÇöÀç±×·ì var config int FixedDefaultCameraYaw[12]; var config int FixedDefaultCameraPitch[12]; var config float FixedDefaultCameraDist[12]; var config float FixedDefaultCameraViewHeight[12]; var config int FixedDefaultCameraHidePlayer[12]; var config int FixedDefaultCameraDisableZoom[12]; //#ifdef __L2 // by ttmayrin var config int FixedDefaultCameraExteriorView[12]; var config int FixedDefaultCameraMinDist[12]; var config int FixedDefaultCameraMaxDist[12]; var config int FixedDefaultCameraDisablePitch[12]; //#endif var config float CameraViewHeightAdjust; //ViewTarget ³ôÀÌÁ¶Àý var config bool bUseAutoTrackingPawn; //ÀÚµ¿ÃßÀûÀ» »ç¿ëÇÒ °ÍÀÎÁö? var config bool bUseVolumeCamera; //VolumeCameražŠ »ç¿ëÇÒ °ÍÀÎÁö? var config bool bUseHitCheckCamera; //HitCheckCameražŠ »ç¿ëÇÒ °ÍÀÎÁö? var config bool bUseExteriorView; //ViewTargetÀÇ µÑ·¹žŠ µµŽÂ CameražŠ »ç¿ëÇÒ °ÍÀÎÁö? var bool bDisableCameraManuallyRotating;//Ä«žÞ¶óÀÇ Manually ÈžÀüÀ» DisableÇÏŽÂÁö? var bool bCameraManuallyRotating; //Ä«žÞ¶ó°¡ Manually ÈžÀüÇØŸßÇÏŽÂÁö? var bool bCameraManuallyZoomed; //Camera is manually zoomed in or out var bool bFixView; //°íÁ€ Ä«žÞ¶óÀÎÁö? var bool bCameraMovingToDefault; //Camera°¡ Default·Î À̵¿ÁßÀÎÁö? var bool bUseDefaultCameraYaw; //DefalutCamera°¡ YawžŠ »ç¿ëÇÏŽÂÁö? var bool bUseDefaultCameraPitch; //DefalutCamera°¡ PitchžŠ »ç¿ëÇÏŽÂÁö? var bool bUseDefaultCameraDist; //DefalutCamera°¡ DistžŠ »ç¿ëÇÏŽÂÁö? var bool bDisableZoom; var bool bDisablePitch; var bool bCameraSpecialMove; var bool bCameraMovingToSpecial; var bool bKeyboardMoving; var bool bKeyboardMovingPermanently; var bool bDesiredKeyboardMoving; var bool bDesiredKeyboardMovingPermanently; var bool bJoypadMoving; var bool bDesiredJoypadMoving; var bool bDesiredJoypadMovingPermanently; var bool ShouldTurnToMovingDir; //#ifdef __L2 // zodiac var bool bObserverModeOn; var bool bBroadcastObserverModeOn; var bool bCanPlayMusic; var bool bVehicleStart; var bool bGetServerMusic; var bool bLockMusic; //#endif //branch - ±âÁž ÄÚµå ŸÈ¹Ù²Ü·Á°í ³ÖÀº°ÍÀ̹ǷΠȮÀÎ ÈÄ ÇÕÄ£ŽÙ. var bool br_bGetItemMusic; var bool br_bLoopItemMusic; var bool br_bLockMusic; //end of branch //#ifdef __L2 // idearain var bool bCameraWalking; // CameraWalkingMode ÀÎÁö? //#endif var float OldZoomingDist; //ÀÌÀü Tick¿¡Œ­ÀÇ ZoomingDist var vector OldCameraLocation; //ÀÌÀü Tick¿¡Œ­ÀÇ CameraLocation var rotator OldCameraRotation; //ÀÌÀü Tick¿¡Œ­ÀÇ CameraRotation var vector OldViewTargetLocation; //ÀÌÀü Tick¿¡Œ­ÀÇ ViewTargetLocation var float ManuallyCameraYaw; //Ä«žÞ¶óÀÇ Manually Yaw ÈžÀü°ª var float ManuallyCameraPitch; //Ä«žÞ¶óÀÇ Manually Pitch ÈžÀü°ª var float CurZoomingDist; //ÇöÀç Zoom °Åž® var float DesiredZoomingDist; //User ÀÔ·Â Zoom °Åž® var int DesiredPitch; //User ÀÔ·Â Pitch var int CurVolumeCameraRadius; //ÇöÀç Zoom °Åž® var int CurFixedDefaultCameraNo; //ÇöÀçÀÇ °íÁ€µÈ DefaultCamera ¹øÈ£ var int DefaultCameraYaw; //bDefaultCameraÀÇ žñÇ¥ Yaw var int DefaultCameraPitch; //bDefaultCameraÀÇ žñÇ¥ Pitch var float DefaultCameraDist; //bDefaultCameraÀÇ žñÇ¥ Dist var float HitCheckCameraDist; //Ã浹Ì¿¡ ÀÇÇØ ŸÕÀž·Î ¹Ð·Á³­ Ä«žÞ¶ó¿ÍÀÇ °Åž® var float HitCheckCameraReturnDist; //Ã浹Ì¿¡ ÀÇÇØ ŸÕÀž·Î ¹Ð·Á³µŽø Ä«žÞ¶ó°¡ º¹±ÍÇÒ °Åž® var float CameraViewDeltaTime; var int SpecialCameraYaw; var int SpecialCameraPitch; var float SpecialCameraDist; var float SpecialCameraDistSpeed; var int SpecialCameraYawSpeed; var int SpecialCameraPitchSpeed; var float SpecialCameraDuration; var int SpecialCurCameraYaw; var int SpecialCurCameraPitch; var float SpecialCurCameraDist; var int CameraRelYaw; var int CameraRelPitch; var int CameraRelRoll; var int CameraRelYawSpeed; var int CameraRelPitchSpeed; var int CameraRelRollSpeed; var int CameraCurRelYaw; var int CameraCurRelPitch; var int CameraCurRelRoll; //var float OriFovAngle; var int SavedViewTargetYaw; //bDefaultCamera°¡ œÇÇàµÇŽÂ Œø°£ÀÇ ViewTargetÀÇ Yaw var int SavedViewTargetPitch; //bDefaultCamera°¡ œÇÇàµÇŽÂ Œø°£ÀÇ ViewTargetÀÇ Pitch var float ValidateLocationTime; var float TurningPendingTime; var int KeyboardMovingDir; var int KeyboardMovingDirFlg; var float KeyboardMovingPendingTime; var int JoypadMovingDir; var float JoypadMovingPendingTime; var float KeyboardMovingInputDelta; var float KeyboardLeftTurnInputDelta; var float KeyboardRightTurnInputDelta; //#ifdef __L2 //kurt var float MaxZoomingDist; var float MinZoomingDist; enum ENPCZoomCameraMode { NZCM_ZoomIn, NZCM_ZoomingIn, NZCM_ZoomingOut, NZCM_Normal }; var ENPCZoomCameraMode NpcZoomCamMode; struct NViewShakePtr { var int Ptr; }; var array NViewShake; struct NViewShakeMgrPtr { var int Ptr; }; var array NViewShakeMgr; //#endif //#ifdef __L2 // zodiac var MusicVolume MusicVolume; var float MusicWaitTime; var float DefaultMusicWaitTime; var int MusicHandle; var int VoiceHandle; var int nGetServerVoice; var float PlayMusicDelay; var float PlayVoiceDelay; var string bServerMusicName; var string bServerVoiceName; //#endif //#ifdef __L2 // idearain var Actor CameraModeTarget; //#endif //#ifdef __L2 // gigadeth var float ManuallyCameraSpeed; // Ä«žÞ¶ó ÈžÀüœÃ ŒÓµµ Default=1.0 //#endif //#ifdef __L2 // by nonblock var(AirVolume) AirEmitter AirEffect; //var(AirVolume) transient name RecentAirEffect; //var(AirVolume) transient bool bWasInAirVolume; //var(AirVolume) transient float TimeTouching; //var(AirVolume) transient bool DoNotSpawn; // don't try to spawn aireffect until the player leaves the volume. //#endif //#ifdef __L2 // anima var vector CurrentShakeEpicenter; // ÇöÀç ¿µÇâÀ» ¹Þ°í ÀÖŽÂ Shake EmitterÀÇ À§Ä¡ //#endif //#ifdef __L2 // anima //var bool bCalcCameraLocationWithBone; // Ä«žÞ¶óÀÇ À§Ä¡žŠ TargetActorÀÇ Æ¯Á€ BoneÀ» ÀÌ¿ëÇÏ¿© °è»ê var ECameraLocationType eCameraLocType; var rotator FixedRotation; var int CalcBoneIndex; // ÇØŽç Bone Index var name CalcBoneAnimName; // °è»êÀÌ Àû¿ëµÇŽÂ Animation Name //#endif //#ifdef __L2 // ttmayrin var float ElasticCameraDist; var float ElasticCameraAccel; var float ElasticCameraVel; var float ElasticCameraOldDist; //#endif //#ifdef __L2 // jumper var vector SavedZoomOutCamLoc; var rotator SavedZoomOutCamRot; var vector ZoomCameraLoc; var rotator ZoomCameraRot; var vector ZoomCamDeltaLocPerTime; var rotator ZoomCamDeltaRotPerTime; //#endif event PostBeginPlay() { Super.PostBeginPlay(); //#ifdef __L2 // zodiac //UnderWaterLoopSound = sound(DynamicLoadObject("AmbSound.under_water", class'sound')); UnderWaterLoopSound = sound(DynamicLoadObject("ChrSound.UnderWater_Loop", class'sound')); //#endif CurVolumeCameraRadius = VolumeCameraRadius; } function name GetMoveSeqName() { return Pawn.RunAnimName[0]; } function name GetWaitSeqName() { return Pawn.WaitAnimName[0]; } exec function HidePlayerPawn() { Pawn.bHidden = true; } exec function ShowPlayerPawn() { Pawn.bHidden = false; } exec function SetFlyYaw(int Value) { CheatFlyYaw = Value; } /// DO NOT USE these functions. It's replaced by UInput Command. //exec function CameraRotationOn() //{ // if( bCameraMovingToSpecial || bCameraSpecialMove || bDisableCameraManuallyRotating || bCameraMovingToDefault ) return; // bCameraManuallyRotating = true; //} // //exec function CameraRotationOff() //{ // bCameraManuallyRotating = false; //} // //exec function UseAutoTrackingPawnOn() //{ // bUseAutoTrackingPawn = true; //} // //exec function UseAutoTrackingPawnOff() //{ // bUseAutoTrackingPawn = false; //} exec function UseHitCheckCameraOn() { bUseHitCheckCamera = true; } exec function UseHitCheckCameraOff() { bUseHitCheckCamera = false; } exec function SetHitCheckCameraMinDist(int Delta) { HitCheckCameraMinDist += Delta; } exec function ViewFix() { if( bFixView ) bFixView = false; else bFixView = true; } function UpdateRotation(float DeltaTime, float maxPitch) { local rotator ViewRotation; if( !bCheatFlying ) return; if( VSize(Pawn.Velocity) < 1.0f ) { if( (Pawn.Rotation.Pitch&65535) == 0 ) return; ViewRotation = Pawn.Rotation; ViewRotation.Pitch = 0; } else ViewRotation = Rotation; ViewRotation.Yaw += CheatFlyYaw; //TurnTarget = None; //bRotateToDesired = false; //bSetTurnRot = false; //ViewRotation.Yaw += 32.0 * DeltaTime * aTurn; //SetRotation(ViewRotation); //Pawn.SetRotation(ViewRotation); Pawn.DesiredRotation = ViewRotation; } function bool CalcCameraMovingToDefaultYaw( float DeltaTime, int TargetYaw ) { local int BackYaw, temp; if( (TargetYaw + DefaultCameraYaw - OldCameraRotation.Yaw) % 65536 == 0 ) return false; temp = TargetYaw + DefaultCameraYaw - OldCameraRotation.Yaw; while( temp > 32768 ) temp -= 65536; while( temp < -32767 ) temp += 65536; if( -600 <= temp && temp < 0 ) BackYaw = int( -5000.0*DeltaTime ); else if( 0 < temp && temp <= 600 ) BackYaw = int( 5000.0*DeltaTime ); else BackYaw = int( float(temp)/6.0*50.0*DeltaTime ); if( temp > 0 && BackYaw > temp ) BackYaw = temp; if( temp < 0 && BackYaw < temp ) BackYaw = temp; OldCameraRotation.Yaw += BackYaw; while( OldCameraRotation.Yaw > 32768 ) OldCameraRotation.Yaw -= 65536; while( OldCameraRotation.Yaw < -32767 ) OldCameraRotation.Yaw += 65536; return true; } function bool CalcCameraMovingToDefaultPitch( float DeltaTime, int TargetPitch ) { local int BackPitch, temp; if( (TargetPitch + DefaultCameraPitch - OldCameraRotation.Pitch) % 65536 == 0 ) return false; temp = TargetPitch + DefaultCameraPitch - OldCameraRotation.Pitch; while( temp > 32768 ) temp -= 65536; while( temp < -32767 ) temp += 65536; if( -600 <= temp && temp < 0 ) BackPitch = int( -5000.0*DeltaTime ); else if( 0 < temp && temp <= 600 ) BackPitch = int( 5000.0*DeltaTime); else BackPitch = int( float(temp)/6.0*50.0*DeltaTime ); if( temp > 0 && BackPitch > temp ) BackPitch = temp; if( temp < 0 && BackPitch < temp ) BackPitch = temp; OldCameraRotation.Pitch += BackPitch; while( OldCameraRotation.Pitch > 32768 ) OldCameraRotation.Pitch -= 65536; while( OldCameraRotation.Pitch < -32767 ) OldCameraRotation.Pitch += 65536; DesiredPitch = OldCameraRotation.Pitch; return true; } function bool CalcCameraMovingToDefaultDistance( float DeltaTime ) { local float temp, BackDist; if( CurZoomingDist+250.0 == DefaultCameraDist ) return false; temp = DefaultCameraDist - (CurZoomingDist+250.0); if( -6.0 <= temp && temp < 0.0 ) BackDist = -50.0*DeltaTime; else if( 0.0 < temp && temp <= 6.0 ) BackDist = 50.0*DeltaTime; else BackDist = temp/6.0*50.0*DeltaTime; if( temp > 0.0 && BackDist > temp ) BackDist = temp; if( temp < 0.0 && BackDist < temp ) BackDist = temp; CurZoomingDist += BackDist; DesiredZoomingDist = CurZoomingDist; return true; } function bool IsBlockRotation( rotator Rotation, vector TargetLocation, float Dist, int VolumeRadius ) { local vector HitLocation, HitNormal; Rotation.Yaw += VolumeRadius; if( Trace( HitLocation, HitNormal, TargetLocation - Dist * vector(Rotation), TargetLocation, false ) != None ) { return true; } Rotation.Yaw -= VolumeRadius*2; if( Trace( HitLocation, HitNormal, TargetLocation - Dist * vector(Rotation), TargetLocation, false ) != None ) { return true; } Rotation.Yaw += VolumeRadius; Rotation.Pitch += VolumeRadius; if( Trace( HitLocation, HitNormal, TargetLocation - Dist * vector(Rotation), TargetLocation, false ) != None ) { return true; } Rotation.Pitch -= VolumeRadius*2; if( Trace( HitLocation, HitNormal, TargetLocation - Dist * vector(Rotation), TargetLocation, false ) != None ) { return true; } return false; } function CalcVolumeZoomingDistance( float DeltaTime ) { local vector HitLocation, HitNormal; local float temp, TempDist; local vector TempVec; if( CurZoomingDist == DesiredZoomingDist ) return; temp = DesiredZoomingDist - CurZoomingDist; if( -6.0 <= temp && temp < 0.0 ) TempDist = -50.0*DeltaTime; else if( 0.0 < temp && temp <= 6.0 ) TempDist = 50.0*DeltaTime; else TempDist = temp/6.0*50.0*DeltaTime; if( temp > 0.0 && TempDist > temp ) TempDist = temp; if( temp < 0.0 && TempDist < temp ) TempDist = temp; CurZoomingDist += TempDist; if( IsBlockRotation( OldCameraRotation, ViewTarget.Location, CurZoomingDist+250, VolumeCameraRadius ) ) { CurZoomingDist -= TempDist; return; } CurVolumeCameraRadius = VolumeCameraRadius; TempVec = Viewtarget.Location; TempVec.Z += CameraViewHeightAdjust; if( Trace( HitLocation, HitNormal, TempVec - (CurZoomingDist + 250) * vector(Rotation), TempVec, false ) != None ) { CurZoomingDist = VSize( HitLocation - TempVec ); CurZoomingDist -= 250; } } function bool ArriveZoomCameraLoc() { local bool bXArrived, bYArrived, bZArrived; bXArrived = false; bYArrived = false; bZArrived = false; if ( ZoomCamDeltaLocPerTime.X < 0.0 ) { if ( OldCameraLocation.X <= ZoomCameraLoc.X ) { bXArrived = true; OldCameraLocation.X = ZoomCameraLoc.X; } } else { if ( OldCameraLocation.X >= ZoomCameraLoc.X ) { bXArrived = true; OldCameraLocation.X = ZoomCameraLoc.X; } } if ( ZoomCamDeltaLocPerTime.Y < 0 ) { if ( OldCameraLocation.Y <= ZoomCameraLoc.Y ) { bYArrived = true; OldCameraLocation.Y = ZoomCameraLoc.Y; } } else { if ( OldCameraLocation.Y >= ZoomCameraLoc.Y ) { bYArrived = true; OldCameraLocation.Y = ZoomCameraLoc.Y; } } if ( ZoomCamDeltaLocPerTime.Z < 0 ) { if ( OldCameraLocation.Z <= ZoomCameraLoc.Z ) { bZArrived = true; OldCameraLocation.Z = ZoomCameraLoc.Z; } } else { if ( OldCameraLocation.Z >= ZoomCameraLoc.Z ) { bZArrived = true; OldCameraLocation.Z = ZoomCameraLoc.Z; } } return bXArrived && bYArrived && bZArrived; } function bool ArriveZoomCameraRot() { local bool bPitchArrived, bYawArrived; bPitchArrived = false; bYawArrived = false; if ( ZoomCamDeltaRotPerTime.Pitch < 0 ) { if ( OldCameraRotation.Pitch <= ZoomCameraRot.Pitch ) { bPitchArrived = true; OldCameraRotation.Pitch = ZoomCameraRot.Pitch; } } else { if ( OldCameraRotation.Pitch >= ZoomCameraRot.Pitch ) { bPitchArrived = true; OldCameraRotation.Pitch = ZoomCameraRot.Pitch; } } if ( ZoomCamDeltaRotPerTime.Yaw < 0 ) { if ( OldCameraRotation.Yaw <= ZoomCameraRot.Yaw ) { bYawArrived = true; OldCameraRotation.Yaw = ZoomCameraRot.Yaw; } } else { if ( OldCameraRotation.Yaw >= ZoomCameraRot.Yaw ) { bYawArrived = true; OldCameraRotation.Yaw = ZoomCameraRot.Yaw; } } return bPitchArrived && bYawArrived; } function CalcCameraMovingToFocusedNpc(float DeltaTime) { OldCameraLocation = OldCameraLocation+ZoomCamDeltaLocPerTime * DeltaTime; OldCameraRotation = OldCameraRotation+ZoomCamDeltaRotPerTime * DeltaTime; if ( ArriveZoomCameraLoc() && ArriveZoomCameraRot() ) { if ( NpcZoomCamMode == NZCM_ZoomingOut ) { SavedZoomOutCamLoc.X=0; SavedZoomOutCamLoc.Y=0; SavedZoomOutCamLoc.Z=0; SavedZoomOutCamRot.Pitch=0; SavedZoomOutCamRot.Yaw=0; SavedZoomOutCamRot.Roll=0; NpcZoomCamMode = NZCM_Normal; } else if ( NpcZoomCamMode == NZCM_ZoomingIn ) { NpcZoomCamMode = NZCM_ZoomIn; } ZoomCameraLoc.X=0; ZoomCameraLoc.Y=0; ZoomCameraLoc.Z=0; ZoomCameraRot.Pitch=0; ZoomCameraRot.Yaw=0; ZoomCameraRot.Roll=0; ZoomCamDeltaLocPerTime.X=0; ZoomCamDeltaLocPerTime.Y=0; ZoomCamDeltaLocPerTime.Z=0; ZoomCamDeltaRotPerTime.Pitch=0; ZoomCamDeltaRotPerTime.Yaw=0; ZoomCamDeltaRotPerTime.Roll=0; } } event PlayerTick( float DeltaTime ) { if( bCameraMovingToDefault ) { if( bUseDefaultCameraYaw ) bUseDefaultCameraYaw = CalcCameraMovingToDefaultYaw( DeltaTime, SavedViewTargetYaw ); if( bUseDefaultCameraPitch ) bUseDefaultCameraPitch = CalcCameraMovingToDefaultPitch( DeltaTime, SavedViewTargetPitch ); if( bUseDefaultCameraDist ) bUseDefaultCameraDist = CalcCameraMovingToDefaultDistance( DeltaTime ); if( !bUseDefaultCameraYaw && !bUseDefaultCameraPitch && !bUseDefaultCameraDist ) { bCameraMovingToDefault = false; } } else if( NpcZoomCamMode == NZCM_ZoomingIn || NpcZoomCamMode == NZCM_ZoomingOut ) CalcCameraMovingToFocusedNpc(DeltaTime); else if( bUseVolumeCamera ) CalcVolumeZoomingDistance( DeltaTime ); else if( bCameraWalking ) CalcCameraWalkingMode( DeltaTime ); //#if __L2 //gigadeth CameraViewDeltaTime = DeltaTime; //#endif Super.PlayerTick( DeltaTime ); } function CalcCameraWalkingMode( float DeltaTime ) { local int temp, TempYaw, TempPitch; local rotator ViewRotation; local vector ViewVector; if( !bCameraWalking ) return; if( CameraModeTarget == None ) return; ViewVector = CameraModeTarget.Location - Pawn.Location; ViewRotation = Vector2Rotator( ViewVector ); if( ( ViewRotation.Yaw - OldCameraRotation.Yaw ) % 65536 != 0 ) { temp = ViewRotation.Yaw - OldCameraRotation.Yaw; while( temp > 32768 ) temp -= 65536; while( temp < -32767 ) temp += 65536; if( -600 <= temp && temp < 0 ) TempYaw = int( -5000.0 * DeltaTime ); else if( 0 < temp && temp <= 600 ) TempYaw = int( 5000.0 * DeltaTime ); else TempYaw = int( float(temp) / 6.0 * 50.0 * DeltaTime ); if( temp > 0 && TempYaw > temp ) TempYaw = temp; if( temp < 0 && TempYaw < temp ) TempYaw = temp; OldCameraRotation.Yaw += TempYaw; while( OldCameraRotation.Yaw > 32768 ) OldCameraRotation.Yaw -= 65536; while( OldCameraRotation.Yaw < -32767 ) OldCameraRotation.Yaw += 65536; } if( ( ViewRotation.Pitch - OldCameraRotation.Pitch ) % 65536 != 0 ) { temp = ViewRotation.Pitch - OldCameraRotation.Pitch; while( temp > 32768 ) temp -= 65536; while( temp < -32767 ) temp += 65536; if( -600 <= temp && temp < 0 ) TempPitch = int( -5000.0 * DeltaTime ); else if( 0 < temp && temp <= 600 ) TempPitch = int( 5000.0 * DeltaTime ); else TempPitch = int( float(temp) / 6.0 * 50.0 * DeltaTime ); if( temp > 0 && TempPitch > temp ) TempPitch = temp; if( temp < 0 && TempPitch < temp ) TempPitch = temp; OldCameraRotation.Pitch += TempPitch; while( OldCameraRotation.Pitch > 32768 ) OldCameraRotation.Pitch -= 65536; while( OldCameraRotation.Pitch < -32767 ) OldCameraRotation.Pitch += 65536; DesiredPitch = OldCameraRotation.Pitch; } } function CalcVolumeCamera( out vector CameraLocation, out rotator CameraRotation, float ViewDist ) { local vector View, HitLocation, HitNormal, TempCameraLocation; local rotator TempRotation; View = vect(1,0,0) >> CameraRotation; TempCameraLocation = CameraLocation - (ViewDist + 30) * vector(CameraRotation); if( Trace( HitLocation, HitNormal, TempCameraLocation, CameraLocation, false ) == None ) { CameraLocation -= (ViewDist - 30) * View; return; } else { //if( VSize( HitLocation - TempCameraLocation ) < VSize( OldCameraLocation - TempCameraLocation ) ) //{ ViewDist = FMin( (CameraLocation - HitLocation) Dot View, ViewDist ); CameraLocation -= (ViewDist - 30) * View; return; //} } TempRotation = CameraRotation; /*for( i=0 ; i<2 ; i++ ) { TempRotation = ( TempRotation + OldCameraRotation ) / 2; TempDist = ViewDist - VSize( TempCameraLocation - OldCameraLocation ); if( Trace( HitLocation, HitNormal, CameraLocation - (TempDist + 30) * vector(TempRotation), CameraLocation, false ) == None ) { View = vect(1,0,0) >> TempRotation; CameraLocation -= (TempDist - 30) * View; return; } }*/ //ViewDist -= VSize( TempCameraLocation - OldCameraLocation ); CurZoomingDist -= 5; ViewDist -= 5; View = vect(1,0,0) >> OldCameraRotation; ViewDist = FMin( (CameraLocation - HitLocation) Dot View, ViewDist ); CameraLocation -= (ViewDist - 30) * View; CameraRotation = OldCameraRotation; } function CalcBehindView(out vector CameraLocation, out rotator CameraRotation, float Dist) { local vector View,HitLocation,HitNormal; local float ViewDist; CameraLocation.Z += CameraViewHeightAdjust; if( OldCameraLocation.X == 0 && OldCameraLocation.Y == 0 && OldCameraLocation.Z == 0 ) { OldCameraRotation = Rotation; } if( OldViewTargetLocation == CameraLocation && ManuallyCameraPitch == 0 && ManuallyCameraYaw == 0 && !bCameraMovingToDefault ) { CameraRotation = OldCameraRotation; if(CurZoomingDist == OldZoomingDist) { CameraLocation = OldCameraLocation; return; } } else { if( ManuallyCameraYaw != 0 ) { CameraRotation.Yaw = OldCameraRotation.Yaw; bCameraMovingToDefault = false; } else { if( bCameraMovingToDefault ) { CameraRotation = OldCameraRotation; //temp = Rotation.Yaw - CameraRotation.Yaw; //while( temp > 32768 ) temp -= 65536; //while( temp < -32767 ) temp += 65536; //if( CameraRotation.Yaw == Rotation.Yaw || temp == 0) bCameraMovingToDefault = false; } else { if( OldCameraLocation.X == 0 && OldCameraLocation.Y == 0 && OldCameraLocation.Z == 0 ) { CameraRotation = Rotation; } else if( bUseAutoTrackingPawn ) { View = vect(1,1,0)*(CameraLocation-OldCameraLocation); CameraRotation = Vector2Rotator(View); } else { CameraRotation = OldCameraRotation; } } } } OldViewTargetLocation = CameraLocation; if( bFixView ) { CameraRotation = OldCameraRotation; CameraRotation.Yaw += ManuallyCameraYaw; CameraRotation.Pitch += ManuallyCameraPitch; CameraLocation = OldCameraLocation; while( CameraRotation.Yaw > 32768 ) CameraRotation.Yaw = CameraRotation.Yaw - 65536; while( CameraRotation.Yaw < -32767 ) CameraRotation.Yaw = CameraRotation.Yaw + 65536; while( CameraRotation.Pitch > 32768 ) CameraRotation.Pitch = CameraRotation.Pitch - 65536; while( CameraRotation.Pitch < -32767 ) CameraRotation.Pitch = CameraRotation.Pitch + 65536; if( CameraRotation.Pitch < -15000) CameraRotation.Pitch = -15000; else if( CameraRotation.Pitch > 15000) CameraRotation.Pitch = 15000; } else { CameraRotation.Pitch = OldCameraRotation.Pitch; CameraRotation.Yaw += ManuallyCameraYaw; CameraRotation.Pitch += ManuallyCameraPitch; while( CameraRotation.Yaw > 32768 ) CameraRotation.Yaw = CameraRotation.Yaw - 65536; while( CameraRotation.Yaw < -32767 ) CameraRotation.Yaw = CameraRotation.Yaw + 65536; while( CameraRotation.Pitch > 32768 ) CameraRotation.Pitch = CameraRotation.Pitch - 65536; while( CameraRotation.Pitch < -32767 ) CameraRotation.Pitch = CameraRotation.Pitch + 65536; if( CameraRotation.Pitch < -15000) CameraRotation.Pitch = -15000; else if( CameraRotation.Pitch > 15000) CameraRotation.Pitch = 15000; ViewDist = Dist + CurZoomingDist; if( bUseVolumeCamera ) CalcVolumeCamera( CameraLocation, CameraRotation, ViewDist ); else { View = vect(1,0,0) >> CameraRotation; if( Trace( HitLocation, HitNormal, CameraLocation - (ViewDist + 30) * vector(CameraRotation), CameraLocation, false ) != None ) ViewDist = FMin( (CameraLocation - HitLocation) Dot View, ViewDist ); CameraLocation -= (ViewDist - 30) * View; } } OldCameraLocation = CameraLocation; OldCameraRotation = CameraRotation; ManuallyCameraPitch = 0; ManuallyCameraYaw = 0; OldZoomingDist = CurZoomingDist; } event PlayerCalcView(out actor ViewActor, out vector CameraLocation, out rotator CameraRotation ) { if ( (ViewTarget == None) || ViewTarget.bDeleteMe ) { if ( (Pawn != None) && !Pawn.bDeleteMe ) SetViewTarget(Pawn); else SetViewTarget(self); } if( !bUseVolumeCamera ) CurZoomingDist = DesiredZoomingDist; ViewActor = ViewTarget; CameraLocation = ViewTarget.Location; if ( ViewTarget == Pawn ) { if( bBehindView ) //up and behind CalcBehindView(CameraLocation, CameraRotation, 250); else CalcFirstPersonView( CameraLocation, CameraRotation ); return; } if ( ViewTarget == self ) { CameraRotation = Rotation; return; } } //#ifdef __L2 Hunter function ViewPlayer() { SetViewTarget(Pawn); bBehindView = true; if ( bBehindView ) { ViewTarget.BecomeViewTarget(); } } //#endif function ClientRestart() { if ( Pawn == None ) { GotoState('WaitingForPawn'); return; } Pawn.ClientRestart(); SetViewTarget(Pawn); //#ifdef __L2 Hunter ViewPlayer(); //#else //CheatManager.ViewPlayer(""); //#endif EnterStartState(); } state PlayerSpidering { // if spider mode, update rotation based on floor /*function UpdateRotation(float DeltaTime, float maxPitch) { local rotator TempRot, ViewRotation; local vector MyFloor, CrossDir, FwdDir, OldFwdDir, OldX, RealFloor; if ( bInterpolating || Pawn.bInterpolating ) { ViewShake(deltaTime); return; } TurnTarget = None; bRotateToDesired = false; bSetTurnRot = false; if ( (Pawn.Base == None) || (Pawn.Floor == vect(0,0,0)) ) MyFloor = vect(0,0,1); else MyFloor = Pawn.Floor; if ( MyFloor != OldFloor ) { // smoothly change floor RealFloor = MyFloor; MyFloor = Normal(6*DeltaTime * MyFloor + (1 - 6*DeltaTime) * OldFloor); if ( (RealFloor Dot MyFloor) > 0.999 ) MyFloor = RealFloor; // translate view direction CrossDir = Normal(RealFloor Cross OldFloor); FwdDir = CrossDir Cross MyFloor; OldFwdDir = CrossDir Cross OldFloor; ViewX = MyFloor * (OldFloor Dot ViewX) + CrossDir * (CrossDir Dot ViewX) + FwdDir * (OldFwdDir Dot ViewX); ViewX = Normal(ViewX); ViewZ = MyFloor * (OldFloor Dot ViewZ) + CrossDir * (CrossDir Dot ViewZ) + FwdDir * (OldFwdDir Dot ViewZ); ViewZ = Normal(ViewZ); OldFloor = MyFloor; ViewY = Normal(MyFloor Cross ViewX); } if ( (aTurn != 0) || (aLookUp != 0) ) { // adjust Yaw based on aTurn if ( aTurn != 0 ) ViewX = Normal(ViewX + 2 * ViewY * Sin(0.0005*DeltaTime*aTurn)); // adjust Pitch based on aLookUp if ( aLookUp != 0 ) { OldX = ViewX; ViewX = Normal(ViewX + 2 * ViewZ * Sin(0.0005*DeltaTime*aLookUp)); ViewZ = Normal(ViewX Cross ViewY); // bound max pitch if ( (ViewZ Dot MyFloor) < 0.707 ) { OldX = Normal(OldX - MyFloor * (MyFloor Dot OldX)); if ( (ViewX Dot MyFloor) > 0) ViewX = Normal(OldX + MyFloor); else ViewX = Normal(OldX - MyFloor); ViewZ = Normal(ViewX Cross ViewY); } } // calculate new Y axis ViewY = Normal(MyFloor Cross ViewX); } ViewRotation = OrthoRotation(ViewX,ViewY,ViewZ); SetRotation(ViewRotation); ViewShake(deltaTime); ViewFlash(deltaTime); Pawn.FaceRotation(ViewRotation, deltaTime); }*/ } state Spectating { // Return to spectator's own camera. exec function AltFire( optional float F ) { //__L2 by Hunter //bBehindView = false; //SetViewtarget(self); //by Hunter End ClientMessage(OwnCamera, 'Event'); } } //__L2 by nonblock simulated event LostChild( Actor Other ) { if(AirEffect == Other) AirEffect=None; Super.LostChild( Other ); } simulated event ClearL2Game() { if(AirEffect!=None) { AirEffect.NDestroy(); AirEffect=None; } Super.ClearL2Game(); } // end. by nonblock o//============================================================================= // The light class. //============================================================================= class Light extends Actor placeable native; #exec Texture Import File=Textures\S_Light.pcx Name=S_Light Mips=Off MASKED=1 // Light modulation. var(Lighting) enum ELightType { LT_None, LT_Steady, LT_Pulse, LT_Blink, LT_Flicker, LT_Strobe, LT_BackdropLight, LT_SubtlePulse, LT_TexturePaletteOnce, LT_TexturePaletteLoop, LT_FadeOut, LT_Fade } LightType; // Spatial light effect to use. var(Lighting) enum ELightEffect { LE_None, LE_TorchWaver, LE_FireWaver, LE_WateryShimmer, LE_Searchlight, LE_SlowWave, LE_FastWave, LE_CloudCast, LE_StaticSpot, LE_Shock, LE_Disco, LE_Warp, LE_Spotlight, LE_NonIncidence, LE_Shell, LE_OmniBumpMap, LE_Interference, LE_Cylinder, LE_Rotor, LE_Sunlight, LE_QuadraticNonIncidence, } LightEffect; // Lighting info. var(LightColor) float LightBrightness; var(Lighting) float LightRadius; var(LightColor) byte LightHue, LightSaturation; var(Lighting) byte LightPeriod, LightPhase, LightCone; // __L2 gigadeth var bool bSunlightColor; var(Lighting) bool bTimeLight; var(Lighting) float LightOnTime; var(Lighting) float LightOffTime; var float LightPrevTime; var float LightLifeTime; var (Corona) float MinCoronaSize; var (Corona) float MaxCoronaSize; var (Corona) float CoronaRotation; var (Corona) float CoronaRotationOffset; var (Corona) bool UseOwnFinalBlend; r//============================================================================= // LiftExit. //============================================================================= class LiftExit extends NavigationPoint placeable native; #exec Texture Import File=Textures\Lift_exit.pcx Name=S_LiftExit Mips=Off MASKED=1 var() name LiftTag; var Mover MyLift; var() byte SuggestedKeyFrame; // mover keyframe associated with this exit - optional var byte KeyFrame; function bool SuggestMovePreparation(Pawn Other) { local Controller C; if ( (MyLift == None) || (Other.Controller == None) ) return false; if ( (Other.Base == MyLift) || ((LiftCenter(Other.Anchor) != None) && (LiftCenter(Other.Anchor).MyLift == MyLift) && (Other.ReachedDestination(Other.Anchor))) ) { // if pawn is on the lift, see if it can get off and go to this lift exit if ( (Location.Z < Other.Location.Z + Other.CollisionHeight) && Other.LineOfSightTo(self) ) return false; // make pawn wait on the lift Other.DesiredRotation = rotator(Location - Other.Location); Other.Controller.WaitForMover(MyLift); return true; } else { for ( C=Level.ControllerList; C!=None; C=C.nextController ) if ( (C.Pawn != None) && (C.PendingMover == MyLift) && C.SameTeamAs(Other.Controller) && C.Pawn.ReachedDestination(self) ) { Other.DesiredRotation = rotator(Location - Other.Location); Other.Controller.WaitForMover(MyLift); return true; } } return false; } U+//============================================================================= // LiftCenter. //============================================================================= class LiftCenter extends NavigationPoint placeable native; #exec Texture Import File=Textures\Lift_center.pcx Name=S_LiftCenter Mips=Off MASKED=1 var() name LiftTag; var mover MyLift; var() name LiftTrigger; var trigger RecommendedTrigger; var float MaxDist2D; var vector LiftOffset; // starting vector between MyLift location and LiftCenter location function PostBeginPlay() { if ( LiftTrigger != '' ) ForEach DynamicActors(class'Trigger', RecommendedTrigger, LiftTrigger ) break; Super.PostBeginPlay(); } /* SpecialHandling is called by the navigation code when the next path has been found. It gives that path an opportunity to modify the result based on any special considerations Here, we check if the mover needs to be triggered */ function Actor SpecialHandling(Pawn Other) { // if no lift, no special handling if ( MyLift == None ) return self; // check whether or not need to trigger the lift if ( !MyLift.IsInState('StandOpenTimed') ) { if ( MyLift.bClosed && (RecommendedTrigger != None) ) return RecommendedTrigger; } else if ( MyLift.BumpType == BT_PlayerBump && !Other.IsPlayerPawn() ) return None; return self; } /* Check if mover is positioned to allow Pawn to get on */ function bool SuggestMovePreparation(Pawn Other) { // if already on lift, no problem if ( Other.base == MyLift ) return false; // make sure LiftCenter is correctly positioned on the lift SetLocation(MyLift.Location + LiftOffset); SetBase(MyLift); // if mover is moving, wait if ( MyLift.bInterpolating || !ProceedWithMove(Other) ) { Other.Controller.WaitForMover(MyLift); return true; } return false; } function bool ProceedWithMove(Pawn Other) { local LiftExit Start; local float dist2D; local vector dir; // see if mover is at appropriate location/keyframe Start = LiftExit(Other.Anchor); if ( (Start != None) && (Start.KeyFrame != 255) ) { if ( MyLift.KeyNum == Start.KeyFrame ) return true; } else { //check distance directly - make sure close dir = Location - Other.Location; dir.Z = 0; dist2d = vsize(dir); if ( (Location.Z - CollisionHeight < Other.Location.Z - Other.CollisionHeight + MAXSTEPHEIGHT) && (Location.Z - CollisionHeight > Other.Location.Z - Other.CollisionHeight - 1200) && ( dist2D < MaxDist2D) ) { return true; } } // if mover not operating, need to start it if ( MyLift.bClosed ) { Other.SetMoveTarget(SpecialHandling(Other)); return true; } return false; } y//============================================================================= // LevelSummary contains the summary properties from the LevelInfo actor. // Designed for fast loading. //============================================================================= class LevelSummary extends Object native; //----------------------------------------------------------------------------- // Properties. // From LevelInfo. var() localized string Title; var() string Author; var() int IdealPlayerCount; var() localized string LevelEnterText; wGCþŒË‰‚‚‚wG*wGw *š9:9:$:„-i/‚wG*G-L&Gw ÉwJ*EJCGebÉwE*E{b/a0 bx|9WxNb0x10|‚wG*wG*qwG9*b9=G9^yb$‡beEHýwE*x K EeGæ±x FFx vEEEt›ˆrv*çWarning - PATHS NOT DEFINED or NO PLAYERSTART/a0 !E‡x K E$G†±x FFx vE10v Eclass LevelObject extends Object abstract native nativereplication; //----------------------------------------------------------------------------- // Structures. // Identifies a unique convex volume in the world. struct PointRegion { var zoneinfo Zone; // Zone. var int iLeaf; // Bsp leaf. var byte ZoneNumber; // Zone number. }; //----------------------------------------------------------------------------- var bool bDeleteMe; var bool bSelected; var(Advanced) bool bHidden; var(Advanced) bool bHiddenEd; var(Advanced) bool bHiddenEdGroup; var(Advanced) bool bLockUndelete; var(Advanced) bool bLockLocation; var bool bPendingDelete; var transient const bool bTempEditor; var(Object) name Group; var(Movement) vector Location; var(Display) Material Texture; var(Display) float DrawScale; var(Advanced) const PointRegion Region; var transient const Level SWXLevel; var transient const Level XLevel; var LevelObject Deleted; ~~-dìâÉ6 rR* R e~-RaR* u²//============================================================================= // LevelInfo contains information about the current level. There should // be one per level and it should be actor 0. UnrealEd creates each level's // LevelInfo automatically so you should never have to place one // manually. // // The ZoneInfo properties in the LevelInfo are used to define // the properties of all zones which don't themselves have ZoneInfo. //============================================================================= class LevelInfo extends ZoneInfo native nativereplication; // Textures. #exec Texture Import File=Textures\WireframeTexture.tga #exec Texture Import File=Textures\WhiteSquareTexture.pcx #exec Texture Import File=Textures\S_Vertex.tga Name=LargeVertex //----------------------------------------------------------------------------- // Level time. // Time passage. var() float TimeDilation; // Normally 1 - scales real time passage. // Current time. var float TimeSeconds; // Time in seconds since level began play. var transient int Year; // Year. var transient int Month; // Month. var transient int Day; // Day of month. var transient int DayOfWeek; // Day of week. var transient int Hour; // Hour. var transient int Minute; // Minute. var transient int Second; // Second. var transient int Millisecond; // Millisecond. var float PauseDelay; // time at which to start pause var config float DecalStayScale; // 0 to 2 - affects decal stay time var() config enum EPhysicsDetailLevel { PDL_Low, PDL_Medium, PDL_High } PhysicsDetailLevel; // Karma - jag var(Karma) float KarmaTimeScale; // Karma physics timestep scaling. var(Karma) float RagdollTimeScale; // Ragdoll physics timestep scaling. This is applied on top of KarmaTimeScale. var(Karma) int MaxRagdolls; // Maximum number of simultaneous rag-dolls. var(Karma) float KarmaGravScale; // Allows you to make ragdolls use lower friction than normal. var(Karma) bool bKStaticFriction; // Better rag-doll/ground friction model, but more CPU. var() bool bKNoInit; // Start _NO_ Karma for this level. Only really for the Entry level. // jag //----------------------------------------------------------------------------- // Text info about level. var() localized string Title; var() string Author; // Who built it. var() localized string LevelEnterText; // Message to tell players when they enter. var() string LocalizedPkg; // Package to look in for localizations. var PlayerReplicationInfo Pauser; // If paused, name of person pausing the game. var() int RecommendedNumPlayers; var LevelSummary Summary; var string VisibleGroups; // List of the group names which were checked when the level was last saved var transient string SelectedGroups; // A list of selected groups in the group browser (only used in editor) //----------------------------------------------------------------------------- // Flags affecting the level. var() bool bLonePlayer; // No multiplayer coordination, i.e. for entranceways. var bool bBegunPlay; // Whether gameplay has begun. var bool bPlayersOnly; // Only update players. var const EDetailMode DetailMode; // Client detail mode. var bool bDropDetail; // frame rate is below DesiredFrameRate, so drop high detail actors var bool bAggressiveLOD; // frame rate is well below DesiredFrameRate, so make LOD more aggressive var bool bStartup; // Starting gameplay. var bool bPathsRebuilt; // True if path network is valid var bool bHasPathNodes; var globalconfig bool bCapFramerate; // frame rate capped in net play if true (else limit number of servermove updates) //----------------------------------------------------------------------------- // Renderer Management. var config bool bNeverPrecache; //----------------------------------------------------------------------------- // Legend - used for saving the viewport camera positions var() vector CameraLocationDynamic; var() vector CameraLocationTop; var() vector CameraLocationFront; var() vector CameraLocationSide; var() rotator CameraRotationDynamic; //----------------------------------------------------------------------------- // Audio properties. var(Audio) string Song; // Filename of the streaming song. var(Audio) float PlayerDoppler; // Player doppler shift, 0=none, 1=full. var(Audio) float MusicVolumeOverride; //----------------------------------------------------------------------------- // Miscellaneous information. var() float Brightness; var() texture Screenshot; var texture DefaultTexture; var texture WireframeTexture; var texture WhiteSquareTexture; var texture LargeVertex; var int HubStackLevel; var transient enum ELevelAction { LEVACT_None, LEVACT_Loading, LEVACT_Saving, LEVACT_Connecting, LEVACT_Precaching } LevelAction; var transient GameReplicationInfo GRI; //----------------------------------------------------------------------------- // Networking. var enum ENetMode { NM_Standalone, // Standalone game. NM_DedicatedServer, // Dedicated server, no local client. NM_ListenServer, // Listen server. NM_Client // Client only, no local server. } NetMode; var string ComputerName; // Machine's name according to the OS. var string EngineVersion; // Engine version. var string MinNetVersion; // Min engine version that is net compatible. //----------------------------------------------------------------------------- // Gameplay rules var() string DefaultGameType; var() string PreCacheGame; var GameInfo Game; var float DefaultGravity; //----------------------------------------------------------------------------- // Navigation point and Pawn lists (chained using nextNavigationPoint and nextPawn). var const NavigationPoint NavigationPointList; var const Controller ControllerList; var private PlayerController LocalPlayerController; // player who is client here //----------------------------------------------------------------------------- // Server related. var string NextURL; var bool bNextItems; var float NextSwitchCountdown; //----------------------------------------------------------------------------- // Global object recycling pool. var transient ObjectPool ObjectPool; //----------------------------------------------------------------------------- // Additional resources to precache (e.g. Playerskins). var transient array PrecacheMaterials; var transient array PrecacheStaticMeshes; //----------------------------------------------------------------------------- // Functions. native simulated function DetailChange(EDetailMode NewDetailMode); native simulated function bool IsEntry(); simulated function PostBeginPlay() { Super.PostBeginPlay(); DecalStayScale = FClamp(DecalStayScale,0,2); } simulated function class GetGameClass() { local class G; if(Level.Game != None) return Level.Game.Class; if (GRI != None && GRI.GameClass != "") G = class(DynamicLoadObject(GRI.GameClass,class'Class')); if(G != None) return G; if ( DefaultGameType != "" ) G = class(DynamicLoadObject(DefaultGameType,class'Class')); return G; } simulated event FillPrecacheMaterialsArray() { local Actor A; local class G; if ( NetMode == NM_DedicatedServer ) return; if ( Level.Game == None ) { if ( (GRI != None) && (GRI.GameClass != "") ) G = class(DynamicLoadObject(GRI.GameClass,class'Class')); if ( (G == None) && (DefaultGameType != "") ) G = class(DynamicLoadObject(DefaultGameType,class'Class')); if ( G == None ) G = class(DynamicLoadObject(PreCacheGame,class'Class')); if ( G != None ) G.Static.PreCacheGameTextures(self); } ForEach AllActors(class'Actor',A) { A.UpdatePrecacheMaterials(); } } simulated event FillPrecacheStaticMeshesArray() { local Actor A; local class G; if ( NetMode == NM_DedicatedServer ) return; if ( Level.Game == None ) { if ( (GRI != None) && (GRI.GameClass != "") ) G = class(DynamicLoadObject(GRI.GameClass,class'Class')); if ( (G == None) && (DefaultGameType != "") ) G = class(DynamicLoadObject(DefaultGameType,class'Class')); if ( G == None ) G = class(DynamicLoadObject(PreCacheGame,class'Class')); if ( G != None ) G.Static.PreCacheGameStaticMeshes(self); } ForEach AllActors(class'Actor',A) A.UpdatePrecacheStaticMeshes(); } simulated function AddPrecacheMaterial(Material mat) { local int Index; if ( NetMode == NM_DedicatedServer ) return; if (mat == None) return; Index = Level.PrecacheMaterials.Length; PrecacheMaterials.Insert(Index, 1); PrecacheMaterials[Index] = mat; } simulated function AddPrecacheStaticMesh(StaticMesh stat) { local int Index; if ( NetMode == NM_DedicatedServer ) return; if (stat == None) return; Index = Level.PrecacheStaticMeshes.Length; PrecacheStaticMeshes.Insert(Index, 1); PrecacheStaticMeshes[Index] = stat; } // // Return the URL of this level on the local machine. // native simulated function string GetLocalURL(); // // Demo build flag // native simulated final function bool IsDemoBuild(); // True if this is a demo build. // // Return the URL of this level, which may possibly // exist on a remote machine. // native simulated function string GetAddressURL(); // // Jump the server to a new level. // event ServerTravel( string URL, bool bItems ) { if( NextURL=="" ) { bNextItems = bItems; NextURL = URL; if( Game!=None ) Game.ProcessServerTravel( URL, bItems ); else NextSwitchCountdown = 0; } } // // ensure the DefaultPhysicsVolume class is loaded. // function ThisIsNeverExecuted() { local DefaultPhysicsVolume P; P = None; } /* Reset() reset actor to initial state - used when restarting level without reloading. */ function Reset() { // perform garbage collection of objects (not done during gameplay) ConsoleCommand("OBJ GARBAGE"); Super.Reset(); } //----------------------------------------------------------------------------- // Network replication. replication { reliable if( bNetDirty && Role==ROLE_Authority ) Pauser, TimeDilation, DefaultGravity; reliable if( bNetInitial && Role==ROLE_Authority ) RagdollTimeScale, KarmaTimeScale, KarmaGravScale; } // // PreBeginPlay // simulated event PreBeginPlay() { // Create the object pool. ObjectPool = new(none) class'ObjectPool'; } simulated function PlayerController GetLocalPlayerController() { local PlayerController PC; if ( Level.NetMode == NM_DedicatedServer ) return None; if ( LocalPlayerController != None ) return LocalPlayerController; ForEach DynamicActors(class'PlayerController', PC) { if ( Viewport(PC.Player) != None ) { LocalPlayerController = PC; break; } } return LocalPlayerController; } q4/*============================================================================= // LadderVolumes, when touched, cause ladder supporting actors to use Phys_Ladder. // note that underwater ladders won't be waterzones (no breathing problems) ============================================================================= */ class LadderVolume extends PhysicsVolume native; var() name ClimbingAnimation, TopAnimation; // name of animation to play when climbing this ladder var() rotator WallDir; var vector LookDir; var vector ClimbDir; // pawn can move in this direction (or reverse) var const Ladder LadderList; // list of Ladder actors associated with this LadderVolume var() bool bNoPhysicalLadder; // if true, won't push into/keep player against geometry in lookdir var() bool bAutoPath; // add top and bottom ladders automatically var Pawn PendingClimber; simulated function PostBeginPlay() { local Ladder L, M; local vector Dir; Super.PostBeginPlay(); LookDir = vector(WallDir); if ( !bAutoPath && (LookDir.Z != 0) ) { ClimbDir = vect(0,0,1); for ( L=LadderList; L!=None; L=L.LadderList ) for ( M=LadderList; M!=None; M=M.LadderList ) if ( M != L ) { Dir = Normal(M.Location - L.Location); if ( (Dir dot ClimbDir) < 0 ) Dir *= -1; ClimbDir += Dir; } ClimbDir = Normal(ClimbDir); if ( (ClimbDir Dot vect(0,0,1)) < 0 ) ClimbDir *= -1; } } function bool InUse(Pawn Ignored) { local Pawn StillClimbing; ForEach TouchingActors(class'Pawn',StillClimbing) { if ( (StillClimbing != Ignored) && StillClimbing.bCollideActors && StillClimbing.bBlockActors ) return true; } if ( PendingClimber != None ) { if ( (PendingClimber.Controller == None) || !PendingClimber.bCollideActors || !PendingClimber.bBlockActors || (Ladder(PendingClimber.Controller.MoveTarget) == None) || (Ladder(PendingClimber.Controller.MoveTarget).MyLadder != self) ) PendingClimber = None; } return ( (PendingClimber != None) && (PendingClimber != Ignored) ); } simulated event PawnEnteredVolume(Pawn P) { local rotator PawnRot; Super.PawnEnteredVolume(P); if ( !P.CanGrabLadder() ) return; PawnRot = P.Rotation; PawnRot.Pitch = 0; if ( (vector(PawnRot) Dot LookDir > 0.9) || ((AIController(P.Controller) != None) && (Ladder(P.Controller.MoveTarget) != None)) ) P.ClimbLadder(self); else if ( !P.bDeleteMe && (P.Controller != None) ) spawn(class'PotentialClimbWatcher',P); } simulated event PawnLeavingVolume(Pawn P) { local Controller C; if ( P.OnLadder != self ) return; Super.PawnLeavingVolume(P); P.OnLadder = None; P.EndClimbLadder(self); if ( P == PendingClimber ) PendingClimber = None; // tell all waiting pawns, if not in use if ( !InUse(P) ) { for ( C=Level.ControllerList; C!=None; C=C.NextController ) if ( C.bPreparingMove && (Ladder(C.MoveTarget) != None) &&(Ladder(C.MoveTarget).MyLadder == self) ) { C.bPreparingMove = false; PendingClimber = C.Pawn; return; } } } simulated event PhysicsChangedFor(Actor Other) { if ( (Other.Physics == PHYS_Falling) || (Other.Physics == PHYS_Ladder) || Other.bDeleteMe || (Pawn(Other) == None) || (Pawn(Other).Controller == None) ) return; spawn(class'PotentialClimbWatcher',Other); } H/*============================================================================= // Ladders are associated with the LadderVolume that encompasses them, and provide AI navigation // support for ladder volumes. Direction should be the direction that climbing pawns // should face ============================================================================= */ class Ladder extends SmallNavigationPoint placeable native; #exec Texture Import File=Textures\Ladder.pcx Name=S_Ladder Mips=Off MASKED=1 var LadderVolume MyLadder; var Ladder LadderList; /* Check if ladder is already occupied */ event bool SuggestMovePreparation(Pawn Other) { if ( MyLadder == None ) return false; if ( !MyLadder.InUse(Other) ) { MyLadder.PendingClimber = Other; return false; } Other.Controller.bPreparingMove = true; Other.Acceleration = vect(0,0,0); return true; } y- S // spawn skill effect emitter void TransientEffect(class APawn *Owner, class AActor *Target, INT nSkillID = 0); void Channeling(class APawn *Owner, class AActor *Target); void Casting(class APawn *Owner, class AActor *Target); void Preshot(class APawn *Owner); void Shot(class APawn *Owner); void Explosion(class ANSkillProjectile *Projectile); void UnionTarget(class AActor *Target); Mclass L2SkillEffect extends Object native dynamicrecompile hidecategories(Object); //////////////////////////////////////////////////////////////////////////////// // general //////////////////////////////////////////////////////////////////////////////// var(general) string Desc; // Skill Description var(general) int SkillID; // Skill ID //////////////////////////////////////////////////////////////////////////////// // visual //////////////////////////////////////////////////////////////////////////////// var(visual) array CastingAction; var(visual) array ChannelingAction; var(visual) array PreshotAction; var(visual) array ShotAction; var(visual) array ExplosionAction; var(visual) array UnionTargetAction; var(visual) float FlyingTime; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) @Ž{-eÞÉA{-F#-q%' -D' NpcInfo; var array PcInfo; ]Žg-|µÔà {|g-h-i- c@Tclass L2SceneInfo extends Object native dynamicrecompile hidecategories(Object); var int SceneID; var string SceneDesc; var array SceneInfo; var bool ForceToPlay; class L2RegionEffectInfo extends Info noexport showcategories(Movement) native placeable; #exec Texture Import File=Textures\RegionInfo.pcx Name=S_L2RegionEffectInfo Mips=Off MASKED=1 enum RegionEffectType { REGION_YCBCR, REGION_HSV, REGION_RGB, REGION_POSTEFFECTDATAID }; enum PlayType { PLAYTYPE_MAXCOR_TO_MINCOR, PLAYTYPE_ORG_TO_MINCOR, PLAYTYPE_MAXCOR_TO_ORG }; // Ycbcr, HSV, RGB, effectIDÁß Çϳªžž ÅÃÀÏ // EffectIDžŠ Œ±ÅÃÇÏžé PostEffectData.txt¿¡Œ­ Á€ºžžŠ ÀПî¿È TimeÀº ¹«œÃ.. struct L2RegionEffectData { var() RegionEffectType effectType; var() range affectRange; var() vector affectBoxMin; var() vector affectBoxMax; var() bool FixData; // YCbCr, HSV¿¡žž »ç¿ë var() vector YcbcrMinColor; var() vector YcbcrMaxColor; var() vector HSVMinColor; var() vector HSVMaxColor; var() vector RGBMinColor; var() vector RGBMaxColor; var() PlayType playType; var() int effectID; var() bool UseAffectBox; }; var() array RegionEffectData; var int CurPos; [class L2Radar extends Actor placeable native nativereplication; var int Type; g class L2Pickup extends Actor placeable native nativereplication; var rotator TargetRotation; var rotator DeltaRotation; var sound DropSound; //__L2 kurt var bool bPendingDrop; var Emitter DropEffectActor; var bool bDropEffectActor; var vector CheckLocation; simulated function Timer() { if(bPendingDrop) bHidden=False; } hclass L2NTimeLight extends Object; struct NTimeColor { var int Time; var byte R, G, B; }; struct NTimeHSV { var int Time; var byte Hue; var byte Sat; var float Bri; }; struct NTimeScale { var float Time; var float Scale; }; var bool bLoaded; var array TerrainLight; var array ActorLight; var array StaticMeshLight; var array BSPLight; ~ //============================================================================= // NMover. //============================================================================= class L2NMover extends Actor native; struct NMoverTarget { var int bTarget; var int bOwnedTarget; var vector Loc; var actor Target; }; var bool bLoop; var bool bMoveStart; var bool bMoveEnd; var bool bMovePause; var float MoveStartDelay; var vector OwnerOrigin; var int TargetIndex; var array MoverTargets; var float MoveSpeed; var float CurMoveSpeed; var float AccelRate; var float AccelAccelRate; var float CurAccelRate; var float MaxSpeed; var float MinSpeed; var float MaxAccelRate; var float MinAccelRate; var actor ForceBounceActor; {class L2NEnvLight extends L2NTimeLight native; var array SkyColor; var array HazeColorIndex; var array HazeColor; var array CloudColorIndex; var array CloudColor; var array StarColor; var array SunColor; var array MoonColor; var array TerrainAmbient; var array ActorAmbient; var array StaticMeshAmbient; var array BSPAmbient; var array SunScale; var array MoonScale; var int EnvType; A//#ifdef __L2 // zodiac //============================================================================= // L2MovableStaticMeshActor. // An actor that is drawn using a static mesh(a mesh that never changes, and // can be cached in video memory, resulting in a speed boost). //============================================================================= //////////////////////////////////////////////////////////////////////////////// // // ¿¹Àü MovableStaticMesh ŽÂ ÇÏÀ§ ȣȯÀ» À§ÇØ ±×³É ³»¹ö·ÁµÎ°í »õ·Î L2MovableStaticMeshActor žŠ žžµçŽÙ // // gigadeth // class L2MovableStaticMeshActor extends StaticMeshActor native placeable; var vector OrgScale; var rotator OrgRotation; var vector OrgLocation; var vector ScaleMaxRatio; var vector RotationMaxRatio; var vector TranslationMaxRatio; var vector ScaleCurrent; var vector RotationCurrent; var vector TranslationCurrent; var bool bInitialized; var(L2Movement) bool bRandomMax; var(L2Movement) bool bRandomStart; var(L2Movement) array L2MovementTag; var(L2Movement) rotator RotationMax; var(L2Movement) rotator RotationRate; var(L2Movement) vector ScaleMax; var(L2Movement) vector ScaleRate; var(L2Movement) vector TranslationMax; var(L2Movement) vector TranslationRate; bclass L2Indicator extends Emitter placeable native nativereplication; var int Type; L class L2FogInfo extends Info noexport showcategories(Movement) native placeable; #exec Texture Import File=Textures\FogInfo.pcx Name=S_L2FogInfo Mips=Off MASKED=1 struct L2EnvironmentColorInfo { var() float Time; var() color FogColor; var() color SkyColor; var() array CloudColor; var() array HazeRingColor; }; var() range AffectRange; var() range FogRange1; var() range FogRange2; var() range FogRange3; var() range FogRange4; var() range FogRange5; var() float TextureDistance; var() array Colors; var() Material CloudTexture; var() vector AffectBoxMin; var() vector AffectBoxMax; var() bool bUseAffectBox; var() bool bUseFogInfo; bclass L2Float extends Actor placeable native; enum TagState { L2TAG_NONE, L2TAG_WAIT, L2TAG_BATTLE }; var TagState State; var int FishType; var bool Gut; var bool Fake; var float WaterEffectTimer; var float FakeEffectTimer; var vector OldEffectLoc; var float fEffectElapsedTime; var int EffectType; var vector OrgLocation; var emitter BrightEffect; var name WaitAnimName; var name BattleAnimName; var name BattleWaitAnimName[6]; C¢O virtual AEmitter* Notify(AActor* const BaseActor, AActor *DestActor, bool bExplosionAction = false ); VOID SetRibbonEmitterTrack(AEmitter* pE, UMeshContainer* pMeshContainer, const FName& BoneName, FLOAT ShotTime ); FLOAT GetPawnEffectScaleFactor(AActor* OwnerActor); UBOOL AvailableScaleRange(const FLOAT Scale); FVector GetPawnEffectOffset(AActor* OwnerActor); UBOOL AvailableOffsetRange(const FVector& Offset); VOID SetPawnLight(AEmitter* pE, AActor* const BaseActor, AActor* DestActor, APawn* pOwnerPawn, const FRotator& Rotator); virtual void PostEditChange(); QJclass L2EffectEmitter extends Object native dynamicrecompile //abstract editinlinenew hidecategories(Object) collapsecategories; enum AttachMethod { AM_None, // don't attach AM_Location, // don't attach, there is no target, spawn with received location AM_RH, // attach to GetRHandBoneName() AM_LH, // attach to GetLHandBoneName() AM_RA, // attach to GetRArmBoneName() AM_LA, // attach to GetLArmBoneName() AM_Wing, // attach to GetWingBoneName() AM_BoneSpecified, // attach to this.AttachBoneName AM_AliasSpecified, // attach to TagAlias(AttachBoneName) AM_Trail // don't attach, trail the targetactor( assume physics of the emitter is PHYS_Trailer ) //branch , AM_Agathion // attach to AttachBoneName in Agathion //end of branch }; enum EGPawnLightType { EPLT_DAMAGE, EPLT_ABNORMAL, EPLT_SKILL }; struct native EffectPawnLightParam { var() EGPawnLightType PawnLightType; var() Light.ELightType LightType; var() Light.ELightEffect LightEffectType; var() plane LightColor; var() float LightLifeTime; var() float LightRadius; var() ParticleEmitter.EParticleCoordinateSystem LightCoordSystem; }; enum EtcEffectType { EET_None, EET_FireCracker, // ÆøÁ× EET_SoulShot, // Á€·Éź EET_SpiritShot, // ž¶Á€Åº, Ãàž¶Á€Åº EET_Cubic, // Å¥ºò EET_SoundCrystal, // ŒÒž®ŒöÁ€ //branch - BRANCH_DELETE //EET_DestroyEffect, // ÀÌÆåÆ® ÁŠ°Å¿ë //EET_TimerGauge // ÅžÀÌžÓ °ÔÀÌÁö¹Ù Ç¥œÃ¿ë //end of branch }; enum EtcEffectParam { EEP_None, EEP_FireCrackerSmall, EEP_FireCrackerMiddle, EEP_FireCrackerLarge, EEP_SoulGradeNone, // Á€·Éź EEP_SoulGradeD, EEP_SoulGradeC, EEP_SoulGradeB, EEP_SoulGradeA, EEP_SoulGradeS, EEP_SpiritGradeNone, // ž¶Á€Åº, Ãàž¶Á€Åº EEP_SpiritGradeD, EEP_SpiritGradeC, EEP_SpiritGradeB, EEP_SpiritGradeA, EEP_SpiritGradeS, }; //////////////////////////////////////////////////////////////////////////////// // attach //////////////////////////////////////////////////////////////////////////////// var(attach) AttachMethod AttachOn; var(attach) name AttachBoneName; var(attach) bool bAbsolute; //////////////////////////////////////////////////////////////////////////////// // positioning //////////////////////////////////////////////////////////////////////////////// var(positioning) bool bSpawnOnTarget; var(positioning) bool bRelativeToCylinder; var(positioning) bool bOnMultiTarget; var(positioning) bool bChaining; // Use When MagicType is SKT_CHAINLIGHTING var(positioning) bool bChangeHand; // Use When MagicType is SKT_DOUBLESHOT var(positioning) bool bUseOffsetNative; // Use When AttachMethod is AM_Location var(positioning) bool bMultiLocation; // Use When AttachMethod is AM_Location var(positioning) rotator RelativeRotation; var(positioning) vector offset; //////////////////////////////////////////////////////////////////////////////// // emitter //////////////////////////////////////////////////////////////////////////////// var(emitter) bool bAdjustLifeTime; var(emitter) bool bRibbonSet; var(emitter) bool bChanneling; var(emitter) float ScaleSize; var(emitter) float SpawnDelay; var(emitter) class EffectClass; var(emitter) bool bShotAndDrain; //////////////////////////////////////////////////////////////////////////////// // pawnlight //////////////////////////////////////////////////////////////////////////////// var(pawnlight) bool bPawnLight; var(pawnlight) EffectPawnLightParam PawnLightParam; //////////////////////////////////////////////////////////////////////////////// // interpolation //////////////////////////////////////////////////////////////////////////////// var(interpolation) bool bHermiteInterpolation; // Use Hermite Interpolation var(interpolation) bool bBezierCurve; // Use Bezier Curve var(interpolation) array ControlPointOffset; // Bezier Curve Control Point Offset //////////////////////////////////////////////////////////////////////////////// // etc //////////////////////////////////////////////////////////////////////////////// var(etc) EtcEffectType EtcEffect; var(etc) EtcEffectParam EtcEffectInfo; // For halloween event - lancelot 2009. 10. 7 var(emitter) float BR_ForceLifeTime; //branch - BRANCH_DELETE //var(emitter) name BR_DestroyTag; //end of branch var(emitter) name BR_Tag; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) Pclass L2Dice extends Actor placeable native nativereplication; struct NActionPtr { var int Ptr; }; var rotator TargetRotation; var rotator DeltaRotation; var sound DropSound; var vector CheckLocation; var NActionPtr Action; var bool bActionOn; \Ž q class L2ColorModifier extends Modifier noteditinlinenew native; enum EL2TextureOp { P_DISABLE, P_SELECTARG1, P_SELECTARG2, P_MODULATE, P_MODULATE2X, P_MODULATE4X, P_ADD, P_ADDSIGNED, P_ADDSIGNED2X, P_SUBTRACT, P_ADDSMOOTH, P_BLENDDIFFUSEALPHA, P_BLENDTEXTUREALPHA, P_BLENDFACTORALPHA, P_BLENDTEXTUREALPHAPM, P_BLENDCURRENTALPHA, P_PREMODULATE, P_MODULATEALPHA_ADDCOLOR, P_MODULATECOLOR_ADDALPHA, P_MODULATEINVALPHA_ADDCOLOR, P_MODULATEINVCOLOR_ADDALPHA, P_BUMPENVMAP, P_BUMPENVMAPLUMINANCE, P_DOTPRODUCT3, P_MULTIPLYADD, P_BLENDENFORCEALPHA, }; var() color Color; var() bool RenderTwoSided; var() bool AlphaBlend; var() EL2TextureOp AlphaOp; var() EL2TextureOp ColorOp; Q//============================================================================= // ºñ, Ž« , ¿ì¹Ú, ±âÅž ÀüÃŒ È­žé¿¡ È¿°úžŠ ³ªÅž³»±â À§ÇØ »ç¿ë // //============================================================================= class L2CenterdDiamond extends Actor placeable native; var float HeightRate; var float RadiusRate; var texture DiaTexture[4]; var float DiaSpeed[4]; var float DiaWeight[4]; var Matrix LocalToWorldMatrix; dclass L2Alarm extends Actor placeable native nativereplication; var sound ClickSound; }€y g #exec Texture Import File=Textures\S_KVehFact.pcx Name=S_KVehFact Mips=Off MASKED=1 //============================================================================= // KVehicle spawner location. //============================================================================= class KVehicleFactory extends Actor placeable; var() class VehicleClass; var() int MaxVehicleCount; var int VehicleCount; event Trigger( Actor Other, Pawn EventInstigator ) { local KVehicle CreatedVehicle; if(VehicleCount >= MaxVehicleCount) return; if(VehicleClass != None) { CreatedVehicle = spawn(VehicleClass, , , Location, Rotation); VehicleCount++; CreatedVehicle.ParentFactory = self; } } dŽ @cŽeŽM#] §,Â?;{M#}y ¡M# Š;w}*a}* `#ifdef WITH_KARMA virtual void PostNetReceive(); virtual void PostEditChange(); virtual void setPhysics(BYTE NewPhysics, AActor *NewFloor, FVector NewFloorV); virtual void TickSimulated( FLOAT DeltaSeconds ); virtual void TickAuthoritative( FLOAT DeltaSeconds ); #endif g™// Generic 'Karma Vehicle' base class that can be controlled by a Pawn. class KVehicle extends Pawn native abstract; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // generic controls (set by controller, used by concrete derived classes) var (KVehicle) float Steering; // between -1 and 1 var (KVehicle) float Throttle; // between -1 and 1 var Pawn Driver; var (KVehicle) array ExitPositions; // Positions (rel to vehicle) to try putting the player when exiting. var (KVehicle) vector DrivePos; // Position (rel to vehicle) to put player while driving. var (KVehicle) rotator DriveRot; // Rotation (rel to vehicle) to put driver while driving. // Effect spawned when vehicle is destroyed var (KVehicle) class DestroyEffectClass; // Simple 'driving-in-rings' logic. var (KVehicle) bool bAutoDrive; var bool bGetOut; // The factory that created this vehicle. var KVehicleFactory ParentFactory; // Weapon system var bool bVehicleIsFiring, bVehicleIsAltFiring; const FilterFrames = 5; var vector CameraHistory[FilterFrames]; var int NextHistorySlot; var bool bHistoryWarmup; // Useful function for plotting data to real-time graph on screen. native final function GraphData(string DataName, float DataValue); replication { reliable if(Role==ROLE_Authority) ClientKDriverEnter, ClientKDriverLeave; reliable if(Role < ROLE_Authority) VehicleFire, VehicleCeaseFire; } // Really simple at the moment! function TakeDamage(int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType) { local PlayerController pc; Health -= Damage; //Log("Ouch! "$Health); // The vehicle is dead! if(Health <= 0) { if ( Controller != None ) { pc = PlayerController(Controller); if( Controller.bIsPlayer && pc != None ) { ClientKDriverLeave(pc); // Just to reset HUD etc. // THIS WAS HOW IT WAS IN UT2003, DONT KNOW ABOUT WARFARE... // pc.PawnDied(self); // This should unpossess the controller and let the player respawn } else Controller.Destroy(); } Destroy(); // Destroy the vehicle itself (see Destroyed below) } //KAddImpulse(momentum, hitlocation); } // Vehicles dont get telefragged. event EncroachedBy( actor Other ) { Log("KVehicle("$self$") Encroached By: "$Other$"."); } // You got some new info from the server (ie. VehicleState has some new info). event VehicleStateReceived(); // Called when a parameter of the overall articulated actor has changed (like PostEditChange) // The script must then call KUpdateConstraintParams or Actor Karma mutators as appropriate. simulated event KVehicleUpdateParams(); // Do some server-side vehicle firing stuff function VehicleFire(bool bWasAltFire) { if(bWasAltFire) bVehicleIsAltFiring = true; else bVehicleIsFiring = true; } function VehicleCeaseFire(bool bWasAltFire) { if(bWasAltFire) bVehicleIsAltFiring = false; else bVehicleIsFiring = false; } // The pawn Driver has tried to take control of this vehicle function TryToDrive(Pawn p) { local Controller C; C = p.Controller; if ( (Driver == None) && (C != None) && C.bIsPlayer && !C.IsInState('PlayerDriving') && p.IsHumanControlled() ) { KDriverEnter(p); } } // Events called on driver entering/leaving vehicle simulated function ClientKDriverEnter(PlayerController pc) { //log("Enter: "$pc.Pawn); //pc.myHUD.bCrosshairShow = false; //pc.myHUD.bShowWeaponInfo = false; //pc.myHUD.bShowPersonalInfo = false; //pc.myHUD.bShowPoints = false; pc.bBehindView = true; pc.bFixedCamera = false; pc.bFreeCamera = true; pc.SetRotation(rotator( vect(-1, 0, 0) >> Rotation )); } function KDriverEnter(Pawn p) { local PlayerController pc; //log("KVehicle KDriverEnter"); // Set pawns current controller to control the vehicle pawn instead Driver = p; // Move the driver into position, and attach to car. Driver.SetCollision(false, false, false); Driver.bCollideWorld = false; Driver.bPhysicsAnimUpdate = false; Driver.Velocity = vect(0,0,0); Driver.SetPhysics(PHYS_None); Driver.SetBase(self); pc = PlayerController(p.Controller); //pc.ClientSetBehindView(true); //pc.ClientSetFixedCamera(false); // Disconnect PlyaerController from Driver and connect to KVehicle. pc.Unpossess(); Driver.SetOwner(pc); // This keeps the driver relevant. pc.Possess(self); pc.ClientSetViewTarget(self); // Set playercontroller to view the vehicle // Change controller state to driver pc.GotoState('PlayerDriving'); ClientKDriverEnter(pc); } simulated function ClientKDriverLeave(PlayerController pc) { //local vector exitLookDir; //log("Leave: "$pc.Pawn); pc.bBehindView = false; pc.bFixedCamera = true; pc.bFreeCamera = false; // This removes any 'roll' from the look direction. //exitLookDir = Vector(pc.Rotation); //pc.SetRotation(Rotator(exitLookDir)); //pc.myHUD.bCrosshairShow = pc.myHUD.default.bCrosshairShow; //pc.myHUD.bShowWeaponInfo = pc.myHUD.default.bShowWeaponInfo; //pc.myHUD.bShowPersonalInfo = pc.myHUD.default.bShowPersonalInfo; //pc.myHUD.bShowPoints = pc.myHUD.default.bShowPoints; // Reset the view-smoothing NextHistorySlot = 0; bHistoryWarmup = true; } // Called from the PlayerController when player wants to get out. function bool KDriverLeave(bool bForceLeave) { local PlayerController pc; local int i; local bool havePlaced; local vector HitLocation, HitNormal, tryPlace; //log("KVehicle KDriverLeave"); // Do nothing if we're not being driven if(Driver == None) return false; // Before we can exit, we need to find a place to put the driver. // Iterate over array of possible exit locations. Driver.bCollideWorld = true; Driver.SetCollision(true, true, true); havePlaced = false; for(i=0; i < ExitPositions.Length && havePlaced == false; i++) { //Log("Trying Exit:"$i); tryPlace = Location + (ExitPositions[i] >> Rotation); // First, do a line check (stops us passing through things on exit). if( Trace(HitLocation, HitNormal, tryPlace, Location, false) != None ) continue; // Then see if we can place the player there. if( !Driver.SetLocation(tryPlace) ) continue; havePlaced = true; //Log("SUCCESS!"); } // If we could not find a place to put the driver, leave driver inside as before. if(!havePlaced && !bForceLeave) { Log("Could not place driver."); Driver.bCollideWorld = false; Driver.SetCollision(false, false, false); return false; } pc = PlayerController(Controller); //Log("Pre ClientKDriverLeave"); ClientKDriverLeave(pc); //Log("Post ClientKDriverLeave"); // Reconnect PlayerController to Driver. pc.Unpossess(); pc.Possess(Driver); pc.ClientSetViewTarget(Driver); // Set playercontroller to view the persone that got out Controller = None; Driver.PlayWaiting(); Driver.bPhysicsAnimUpdate = Driver.Default.bPhysicsAnimUpdate; // Do stuff on client //pc.ClientSetBehindView(false); //pc.ClientSetFixedCamera(true); Driver.Acceleration = vect(0, 0, 24000); Driver.SetPhysics(PHYS_Falling); Driver.SetBase(None); // Car now has no driver Driver = None; // Put brakes on before you get out :) Throttle=0; Steering=0; // Stop firing when you get out! bVehicleIsFiring = false; bVehicleIsAltFiring = false; return true; } // Special calc-view for vehicles simulated function bool SpecialCalcView(out actor ViewActor, out vector CameraLocation, out rotator CameraRotation ) { local vector CamLookAt, HitLocation, HitNormal; local PlayerController pc; local int i, averageOver; pc = PlayerController(Controller); // Only do this mode we have a playercontroller viewing this vehicle if(pc == None || pc.ViewTarget != self) return false; ViewActor = self; CamLookAt = Location + (vect(-100, 0, 100) >> Rotation); ////////////////////////////////////////////////////// // Smooth lookat position over a few frames. CameraHistory[NextHistorySlot] = CamLookAt; NextHistorySlot++; if(bHistoryWarmup) averageOver = NextHistorySlot; else averageOver = FilterFrames; CamLookAt = vect(0, 0, 0); for(i=0; i> CameraRotation); if( Trace( HitLocation, HitNormal, CameraLocation, CamLookAt, false, vect(10, 10, 10) ) != None ) { CameraLocation = HitLocation; } return true; } simulated function Destroyed() { //Log("KVehicle Destroyed"); // If there was a driver in the vehicle, destroy him too if(Driver != None) Driver.Destroy(); // Decrease number of cars active out of parent factory if(ParentFactory != None) ParentFactory.VehicleCount--; // Trigger any effects for destruction if(DestroyEffectClass != None) spawn(DestroyEffectClass, , , Location, Rotation); Super.Destroyed(); } // Just to intercept 'getting out' request. simulated event Tick(float deltaSeconds) { local bool gotOut; if(bGetOut && ROLE==Role_Authority) { gotOut = KDriverLeave(false); if(!gotOut ) { Log("Couldn't Leave - staying in!"); } } bGetOut = false; } // Includes properties from KActor W%class KTire extends KActor native abstract; var KCarWheelJoint WheelJoint; // joint holding this wheel to chassis etc. // TYRE MODEL // FRICTION var float RollFriction; // friction coeff. in tyre direction var float LateralFriction; // friction coeff. in sideways direction // SLIP // slip = min(maxSlip, minSlip + (slipRate * angular vel)) var float RollSlip; // max first-order (force ~ vel) slip in tyre direction var float LateralSlip; // max first-order (force ~ vel) slip in sideways direction var float MinSlip; // minimum slip (both directions) var float SlipRate; // amount of extra slip per unit velocity // NORMAL var float Softness; // 'softness' in the normal dir var float Adhesion; // 'stickyness' in the normal dir var float Restitution; // 'bouncyness' in the normal dir // Other Output information var const bool bTireOnGround; // If this tire is currently in contact with something. var const float GroundSlipVel; // relative tangential velocity of wheel against ground (0 for static, >0 for slipping) // could use this to trigger squeeling noises/smoke var const vector GroundSlipVec; // full vector version of above (ie GroundSlipVel is magnitude of this vector). var const float SpinSpeed; // current speed (65535 = 1 rev/sec) of this wheel spinning about its axis var const material GroundMaterial; // material that tyre is touching //var const ESurfaceTypes GroundSurfaceType; // surface type that the tyre is touching // This is filled in by VehicleStateReceived in KVehicle. var KRigidBodyState ReceiveState; var bool bReceiveStateNew; // This even is for updating the state (position, velocity etc.) of the tire's karma // body when we get new information from the network. event bool KUpdateState(out KRigidBodyState newState) { if(!bReceiveStateNew) return false; newState = ReceiveState; bReceiveStateNew = false; return true; //return false; } // By default, nothing happens if you shoot a tire function TakeDamage(int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType) { } w#ifdef WITH_KARMA virtual void KUpdateConstraintParams(); virtual void preKarmaStep(FLOAT DeltaTime); #endif zC//============================================================================= // The Hinge joint class. //============================================================================= #exec Texture Import File=Textures\S_KHinge.pcx Name=S_KHinge Mips=Off MASKED=1 class KHinge extends KConstraint native placeable; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // Spatial light effect to use. var(KarmaConstraint) enum EHingeType { HT_Normal, HT_Springy, HT_Motor, HT_Controlled } KHingeType; // SPRINGY - around hinge axis, default position being KDesiredAngle (below) var(KarmaConstraint) float KStiffness; var(KarmaConstraint) float KDamping; // MOTOR - tries to achieve angular velocity var(KarmaConstraint) float KDesiredAngVel; // 65535 = 1 rotation per second var(KarmaConstraint) float KMaxTorque; // CONTROLLED - achieve a certain angle // Uses AngularVelocity and MaxForce from above. // Within 'ProportionalGap' of DesiredAngle, var(KarmaConstraint) float KDesiredAngle; // 65535 = 360 degrees var(KarmaConstraint) float KProportionalGap; // 65535 = 360 degrees // This is the alternative 'desired' angle, and the bool that indicates whether to use it. // See ToggleDesired and ControlDesired below. var(KarmaConstraint) float KAltDesiredAngle; // 65535 = 360 degrees var bool KUseAltDesired; // output - current angular position of joint // 65535 = 360 degrees var const float KCurrentAngle; // In this state nothing will happen if this hinge is triggered or untriggered. auto state Default { ignores Trigger, Untrigger; } // In this state, Trigger will cause the hinge type to change to HT_Motor. // Another trigger will toggle it to HT_Controlled, and it will try and maintain its current angle. state() ToggleMotor { ignores Untrigger; function Trigger( actor Other, pawn EventInstigator ) { //Log("ToggleMotor - Trigger"); if(KHingeType == HT_Motor) { KDesiredAngle = KCurrentAngle; KUseAltDesired = False; KHingeType = HT_Controlled; } else KHingeType = HT_Motor; KUpdateConstraintParams(); KConstraintActor1.KWake(); // force re-enable of simulation on this actor. } Begin: KHingeType = HT_Controlled; KUseAltDesired = False; KUpdateConstraintParams(); } // In this state, Trigger will turn motor on. // Untrigger will turn toggle it to HT_Controlled, and it will try and maintain its current angle. state() ControlMotor { function Trigger( actor Other, pawn EventInstigator ) { //Log("ControlMotor - Trigger"); if(KHingeType != HT_Motor) { KHingeType = HT_Motor; KUpdateConstraintParams(); KConstraintActor1.KWake(); } } function Untrigger( actor Other, pawn EventInstigator ) { //Log("ControlMotor - Untrigger"); if(KHingeType == HT_Motor) { KDesiredAngle = KCurrentAngle; KUseAltDesired = False; KHingeType = HT_Controlled; KUpdateConstraintParams(); KConstraintActor1.KWake(); } } Begin: KHingeType = HT_Controlled; KUseAltDesired = False; KUpdateConstraintParams(); } // In this state a trigger will toggle the hinge between using KDesiredAngle and KAltDesiredAngle. // It will use whatever the current KHingeType is to achieve this, so this is only useful with HT_Controlled and HT_Springy. state() ToggleDesired { ignores Untrigger; function Trigger( actor Other, pawn EventInstigator ) { //Log("ToggleDesired - Trigger"); if(KUseAltDesired) KUseAltDesired = False; else KUseAltDesired = True; //Log("UseAlt"$KUseAltDesired); KUpdateConstraintParams(); KConstraintActor1.KWake(); } } // In this state, trigger will cause the hinge to use KAltDesiredAngle, untrigger will caus it to use KAltDesiredAngle state() ControlDesired { function Trigger( actor Other, pawn EventInstigator ) { //Log("ControlDesired - Trigger"); KUseAltDesired = True; //Log("UseAlt"$KUseAltDesired); KUpdateConstraintParams(); KConstraintActor1.KWake(); } function Untrigger( actor Other, pawn EventInstigator ) { //Log("ControlDesired - Untrigger"); KUseAltDesired = False; //Log("UseAlt"$KUseAltDesired); KUpdateConstraintParams(); KConstraintActor1.KWake(); } } ‰U @IpŽE _ ˆ.¿é!‚wJ*Jg  ͂‚-X( -n% {g%-n%'\] g%Šw\*E \@ \aªzE E bl(E &Í{E  jE ( j?Restart( 0b ]ˆ 0:.  fŽQ$l c wQ$*Q aQ$: I//============================================================================= // Keypoint, the base class of invisible actors which mark things. //============================================================================= class Keypoint extends Actor abstract placeable native; // Sprite. #exec Texture Import File=Textures\Keypoint.pcx Name=S_Keypoint Mips=Off MASKED=1 XgŽ@i &wQ *Q aQ *X  iŽf%y£ -^ -^  jŽe%€)-[-[ kŽv+…~,*‚-[w.:#*o   lŽnŽm ‰ €mŽ\-J8D*:b e e u \- l]-` ~‰Ÿ]-p^-$' €@oŽB,“\ rŽtŽ`%•ˆ €sŽ~_%œ/’6g~*6f~%6_~*6S~*6P~6\~6X~ Q9=,ÿ9=,ÿ9=,ÿ6C~-6i~( g #ifdef WITH_KARMA virtual MdtConstraintID getKConstraint() const; virtual McdModelID getKModel() const; virtual void physKarma(FLOAT DeltaTime); virtual void PostEditChange(); virtual void PostEditMove(); virtual void KUpdateConstraintParams(); virtual void CheckForErrors(); // used for checking that this constraint is valid buring map build virtual void RenderEditorSelected(FLevelSceneNode* SceneNode,FRenderInterface* RI, FDynamicActor* FDA); virtual UBOOL CheckOwnerUpdated(); virtual void preKarmaStep(FLOAT DeltaTime) {}; virtual void postKarmaStep() {}; #endif uŽa^%©a6ga6gc6fa6fc6_a6_c6Sa6Sc6Pa6Pc6\a6\c6Xa6Xc6Ca6Cc6G$a6G$c6I$a6I$c-6ia-6ic6E$a6E$c6F$a6F$c X$//============================================================================= // The Basic constraint class. //============================================================================= class KConstraint extends KActor abstract placeable native; #exec Texture Import File=Textures\S_KConstraint.pcx Name=S_KConstraint Mips=Off MASKED=1 // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // Used internally for Karma stuff - DO NOT CHANGE! var transient const int KConstraintData; // Actors joined effected by this constraint (could be NULL for 'World') var(KarmaConstraint) edfindable Actor KConstraintActor1; var(KarmaConstraint) edfindable Actor KConstraintActor2; // If an KConstraintActor is a skeletal thing, you can specify which bone inside it // to attach the constraint to. If left blank (the default) it picks the nearest bone. var(KarmaConstraint) name KConstraintBone1; var(KarmaConstraint) name KConstraintBone2; // Disable collision between joined var(KarmaConstraint) const bool bKDisableCollision; // Constraint position/orientation, as defined in each body's local reference frame // These are in KARMA scale! // Body1 ref frame var vector KPos1; var vector KPriAxis1; var vector KSecAxis1; // Body2 ref frame var vector KPos2; var vector KPriAxis2; var vector KSecAxis2; // Force constraint to re-calculate its position/axis in local ref frames // Usually true for constraints saved out of UnrealEd, false for everything else var const bool bKForceFrameUpdate; // [see KForceExceed below] var(KarmaConstraint) float KForceThreshold; // This function is used to re-sync constraint parameters (eg. stiffness) with Karma. // Call when you change a parameter to get it to actually take effect. native function KUpdateConstraintParams(); native final function KGetConstraintForce(out vector Force); native final function KGetConstraintTorque(out vector Torque); // Event triggered when magnitude of constraint (linear) force exceeds KForceThreshold event KForceExceed(float forceMag); I#ifdef WITH_KARMA virtual void KUpdateConstraintParams(); #endif wŽRcÁ›µm :o:-3W.:#‚wW*wW*W PR^R-C$r RՂ-C$±:]s Rä-|-x ‚wW*W-GW |R‰-[R`I RRR$RJD$:#eR[-Z-ŸŸ-}-Ü-^ ÙwQ *Q G RÙQ -p;^RŸ,„„„r:* rW*rWg*:xn RKKW-IC|R”r R”‚w:*±:]s R^R: PR  t //============================================================================= // The Cone Limit joint class. //============================================================================= #exec Texture Import File=Textures\S_KConeLimit.pcx Name=S_KConeLimit Mips=Off MASKED=1 class KConeLimit extends KConstraint native placeable; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var(KarmaConstraint) float KHalfAngle; // ( 65535 = 360 deg ) var(KarmaConstraint) float KStiffness; var(KarmaConstraint) float KDamping; //native final function KSetHalfAngle(float HalfAngle); //native final function KSetStiffness(float Stiffness); //native final function KSetDamping(float Damping); €|Ž€w#ifdef WITH_KARMA virtual void KUpdateConstraintParams(); virtual void preKarmaStep(FLOAT DeltaTime); #endif zŽ@n c € Žg o ÔúJ.:# /rJ* lwJZ*h JZY'  ‰h :#  Qh þJ-G<b J  J x Q9=,ÿ$9=,ÿh J xÜ„rJ:7‚rJK%J@YwJK*ø‚rJ:ÚJ j#ÞJb J jb J  J j Q9=,ÿ9=,ÿ9=,ÿ JbJ jg %œ–g ,(rg J@Y*œ-x&'b h g J@Y   Q$9=,ÿ$h g J@Y  ¥g ÿÙ-x&b QJ j Q9=,ÿ9=,ÿ9=,ÿ99Ú:# #b QJ j Q9=,ÿ9=,ÿ9=,ÿJrJ: ~wJM*@JM  ’@J db ×:#  Õ.:#S#€?@ Q9=,ÿ$$ J//============================================================================= // The Car Wheel joint class. //============================================================================= //#exec Texture Import File=Textures\S_KBSJoint.pcx Name=S_KBSJoint Mips=Off MASKED=1 class KCarWheelJoint extends KConstraint native placeable; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // STEERING var(KarmaConstraint) float KSteerAngle; // desired steering angle to achieve using controller (65535 = 360 deg) var(KarmaConstraint) float KProportionalGap; // for steering controller (65535 = 360 deg) var(KarmaConstraint) float KMaxSteerTorque; // for steering controller var(KarmaConstraint) float KMaxSteerSpeed; // for steering controller (65535 = 1 rotation per second) var(KarmaConstraint) bool bKSteeringLocked; // steering 'locked' in straight ahead direction // MOTOR var(KarmaConstraint) float KMotorTorque; // torque applied to drive this wheel (can be negative) var(KarmaConstraint) float KMaxSpeed; // max speed to try and reach using KMotorTorque (65535 = 1 rotation per second) var(KarmaConstraint) float KBraking; // torque applied to brake wheel // SUSPENSION var(KarmaConstraint) float KSuspLowLimit; var(KarmaConstraint) float KSuspHighLimit; var(KarmaConstraint) float KSuspStiffness; var(KarmaConstraint) float KSuspDamping; var(KarmaConstraint) float KSuspRef; // Other output var const float KWheelHeight; // height of wheel relative to suspension centre c//============================================================================= // The Ball-and-Socket joint class. //============================================================================= #exec Texture Import File=Textures\S_KBSJoint.pcx Name=S_KBSJoint Mips=Off MASKED=1 class KBSJoint extends KConstraint native placeable; k//============================================================================= // The Karma physics parameter specific to skeletons. // NB: All parameters are in KARMA scale! //============================================================================= class KarmaParamsSkel extends KarmaParams editinlinenew native; var() string KSkeleton; // Karma Asset to use for this skeleton. var() bool bKDoConvulsions; var() range KConvulseSpacing; // Time between convulsions. // When the skeletal physics starts up, we check this line against the skeleton, // and apply an impulse with magnitude KShotStrength if we hit a bone. // This has to be deferred because ragdoll-startup is. var transient vector KShotStart; var transient vector KShotEnd; var transient float KShotStrength; var transient bool bKImportantRagdoll; // This indicates this ragdoll will not be recycled during KMakeRagdollAvailable ^ //============================================================================= // This is the full set of Karma parameters, including inertia tensor and // centre-of-mass position, which are normally stored with the StaticMesh. // This gives you a chance to overrids these values. // NB: All parameters are in KARMA scale! //============================================================================= class KarmaParamsRBFull extends KarmaParams editinlinenew native; // Inertia tensor of object assuming a mass of 1 - symmetric so just store 6 elements: // (0 1 2) // (1 3 4) // (2 4 5) // This will be scaled by the mass of the object to work out its actual inertia tensor. var() float KInertiaTensor[6]; var() vector KCOMOffset; // Position of centre of mass in body ref. frame // default is sphere with radius 1 t//============================================================================= // The Karma Collision parameters class. // This provides 'extra' parameters needed to create Karma collision for this Actor. // You can _only_ turn on collision, not dynamics. // NB: All parameters are in KARMA scale! //============================================================================= class KarmaParamsCollision extends Object editinlinenew native; // Used internally for Karma stuff - DO NOT CHANGE! var const transient int KarmaData; var const float KScale; // Usually kept in sync with actor's DrawScale, this is how much to scale moi/com-offset (but not mass!) var const vector KScale3D; var() float KFriction; // Multiplied pairwise to get contact friction var() float KRestitution; // 'Bouncy-ness' - Normally between 0 and 1. Multiplied pairwise to get contact restitution. var() float KImpactThreshold; // threshold velocity magnitude to call KImpact event // default is sphere with mass 1 and radius 1 AH|II# € GTp Qé#K—}`, V T'J TT-S(TaÐ`RUTO(®«?¯TxR9?&®¯«Ãõ(?TU«U?9?&T M$$$T aÑ`(TE(«?¯TxR¯«Ãõ(?TU«U?TM$$9=,ÿT aÑ`( 8#ifdef WITH_KARMA void PostEditChange(); #endif v%//============================================================================= // The Karma physics parameters class. // This provides 'extra' parameters needed by Karma physics to the Actor class. // Need one of these (or a subclass) to set Physics to PHYS_Karma. // (see Actor.uc) // NB: All parameters are in KARMA scale! //============================================================================= class KarmaParams extends KarmaParamsCollision editinlinenew native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // Used internally for Karma stuff - DO NOT CHANGE! var transient const int KAng3; var transient const int KTriList; var transient const float KLastVel; var() float KMass; // Mass used for Karma physics var() float KLinearDamping; // Linear velocity damping (drag) var() float KAngularDamping; // Angular velocity damping (drag) var() float KBuoyancy; // Applies in water volumes. 0 = no buoyancy. 1 = neutrally buoyant var() bool KStartEnabled; // Start simulating body as soon as PHYS_Karma starts var() vector KStartLinVel; // Initial linear velocity for actor var() vector KStartAngVel; // Initial angular velocity for actor var() bool bKNonSphericalInertia; // Simulate body without using sphericalised inertia tensor var() float KActorGravScale; // Scale how gravity affects this actor. var() float KVelDropBelowThreshold; // Threshold that when actor drops below, KVelDropBelow event is triggered. // NB - the below settings only apply to PHYS_Karma (not PHYS_KarmaRagDoll) var() bool bHighDetailOnly; // Only turn on karma physics for this actor if the level PhysicsDetailLevel is PDL_High var bool bClientOnly; // Only turn on karma physics for this actor on the client (not server). var() const bool bKDoubleTickRate; // Allows higher karma sim rate (double normal) for some objects. var() bool bKStayUpright; // Stop this object from being able to rotate (using Angular3 constraint) var() bool bKAllowRotate; // Allow this object to rotate about a vertical axis. Ignored unless KStayUpright == true. var bool bDestroyOnSimError; // If there is a problem with the physics, destroy, or leave around to be fixed (eg. by network). // default is sphere with mass 1 and radius 1  virtual void Spawned(); k!//============================================================================= // KarmaActor. // Just a handy class to derive off to make physics objects. //============================================================================= class KActor extends Actor native placeable; // (cpptext) // (cpptext) // (cpptext) // (cpptext) var (Karma) bool bKTakeShot; // Ragdoll impact sounds. var() array ImpactSounds; var() float ImpactVolume; var() class ImpactEffect; var() bool bOrientImpactEffect; var() float ImpactInterval; var transient float LastImpactTime; // Default behaviour when shot is to apply an impulse and kick the KActor. function TakeDamage(int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType) { local vector ApplyImpulse; //Log("TakeDamage: "$self); if(bKTakeShot && damageType.default.KDamageImpulse > 0) { if(VSize(momentum) < 0.001) { // DEBUG //Log("Zero momentum to KActor.TakeDamage"); // END DEBUG return; } ApplyImpulse = Normal(momentum) * damageType.default.KDamageImpulse; KAddImpulse(ApplyImpulse, hitlocation); } } // Default behaviour when triggered is to wake up the physics. function Trigger( actor Other, pawn EventInstigator ) { KWake(); } // event KImpact(actor other, vector pos, vector impactVel, vector impactNorm) { local int numSounds, soundNum; // If its time for another impact. if(Level.TimeSeconds > LastImpactTime + ImpactInterval) { // If we have some sounds, play a random one. numSounds = ImpactSounds.Length; if(numSounds > 0) { soundNum = Rand(numSounds); //Log("Play Sound:"$soundNum); PlaySound(ImpactSounds[soundNum], SLOT_Ambient, ImpactVolume); } // If we have an effect class (and its relevant), spawn it. if( (ImpactEffect != None) && EffectIsRelevant(pos, false) ) { if(bOrientImpactEffect) spawn(ImpactEffect, self, , pos, rotator(impactVel)); else spawn(ImpactEffect, self, , pos); } LastImpactTime = Level.TimeSeconds; } } IYs kŠ&†t¯:]>³tA$I,ÿXI9D¬9?Å,ÿtA$O:oH %O%µ–O,€zO:R «¥H ¥Oz0wO*Ü{Oz ¥H ø{OI ¥H {OU ¥H 0{OV ¥H Y`R YR$YaÖA_o@ ®««?g9?YP«¬¯€?g@9?YPt®««?g9?Yn«¬¯€?g@9?Yn¹t«o¬9?H @O%–O,RzO:R  YJO:j6³YJ9=IY!aÖO:R _oY(¯@ ¬_@tYaÑO:R žto¥O(„‚wO*›9:9:$YJ-6³YJ9=Iò{Oz YaÖOz _oY(¯@ ¬_@tYaÑOz žtox{OI YaÖOI _oY(¯@ ¬_@tYaÑOI žtoþ{OU YaÖOU _oY(¯@ ¬_@tYaÑOU žto„{OV YaÖOV _oY(¯@ ¬_@tYaÑOV žto \ void addReachSpecs(APawn * Scout, UBOOL bOnlyChanged); void RenderEditorSelected(FLevelSceneNode* SceneNode,FRenderInterface* RI, FDynamicActor* FDA); x//============================= // Jumppad - bounces players/bots up // not directly placeable. Make a subclass with appropriate sound effect etc. // class JumpPad extends NavigationPoint native; var vector JumpVelocity; var Actor JumpTarget; var() float JumpZModifier; // for tweaking Jump, if needed var() sound JumpSound; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) function PostBeginPlay() { local NavigationPoint N; Super.PostBeginPlay(); ForEach AllActors(class'NavigationPoint', N) if ( (N != self) && NearSpot(N.Location) ) N.ExtraCost += 1000; } event Touch(Actor Other) { if ( Pawn(Other) == None ) return; PendingTouch = Other.PendingTouch; Other.PendingTouch = self; } simulated event PostTouch(Actor Other) { local Pawn P; P = Pawn(Other); if ( P == None ) return; if ( P.Role < ROLE_AutonomousProxy ) return; if ( (P.Role == ROLE_AutonomousProxy) && (P.Velocity.Z > 0) ) return; if ( AIController(P.Controller) != None ) { P.Controller.Movetarget = JumpTarget; P.Controller.Focus = JumpTarget; P.Controller.MoveTimer = 2.0; P.DestinationOffset = JumpTarget.CollisionRadius; } if ( P.Physics == PHYS_Walking ) P.SetPhysics(PHYS_Falling); P.Velocity = JumpVelocity; P.Acceleration = vect(0,0,0); if ( JumpSound != None ) P.PlaySound(JumpSound); } x virtual void SetupForcedPath(APawn* Scout, UReachSpec* Path); void ClearPaths(); UBOOL ReviewPath(APawn* Scout); a//============================================================================= // JumpDest. // specifies positions that can be reached with greater than normal jump // forced paths will check for greater than normal jump capability // NOTE these have NO relation to JumpPads //============================================================================= class JumpDest extends NavigationPoint native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var bool bOptionalJumpDest; var int NumUpstreamPaths; var ReachSpec UpstreamPaths[8]; var vector NeededJump[8]; var float CalculatedGravityZ[8]; function int GetPathIndex(ReachSpec Path) { local int i; if ( Path == None ) return 0; for ( i=0; i<4; i++ ) if ( UpstreamPaths[i] == Path ) return i; return 0; } event int SpecialCost(Pawn Other, ReachSpec Path) { local int Num; Num = GetPathIndex(Path); if ( Abs(Other.JumpZ/Other.PhysicsVolume.Gravity.Z) >= Abs(NeededJump[Num].Z/CalculatedGravityZ[Num]) ) return 100; return 10000000; } function DoJump(Pawn Other) { Other.bWantsToCrouch = false; Other.Controller.MoveTarget = self; Other.Controller.Destination = Location; Other.bNoJumpAdjust = true; Other.Velocity = Other.Controller.EAdjustJump(0,Other.GroundSpeed); Other.Acceleration = vect(0,0,0); Other.SetPhysics(PHYS_Falling); Other.Controller.SetFall(); Other.DestinationOffset = CollisionRadius; } event bool SuggestMovePreparation(Pawn Other) { local int Num; if ( Other.Controller == None ) return false; Num = GetPathIndex(Other.Controller.CurrentPath); if ( Abs(Other.JumpZ/Other.PhysicsVolume.Gravity.Z) < Abs(NeededJump[Num].Z/CalculatedGravityZ[Num]) ) return false; DoJump(Other); return false; } u virtual UBOOL IsIdentifiedAs(FName ActorName); virtual AInventorySpot* GetAInventorySpot() { return this; } Q//============================================================================= // InventorySpot. //============================================================================= class InventorySpot extends SmallNavigationPoint native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var Pickup markedItem; /* GetMoveTargetFor() Possibly return pickup rather than self as movetarget */ function Actor GetMoveTargetFor(AIController B, float MaxWait) { if ( (markedItem != None) && markedItem.ReadyToPickup(MaxWait) && (B.Desireability(markedItem) > 0) ) return markedItem; return self; } /* DetourWeight() value of this path to take a quick detour (usually 0, used when on route to distant objective, but want to grab inventory for example) */ event float DetourWeight(Pawn Other,float PathWeight) { if ( (markedItem != None) && markedItem.ReadyToPickup(0) ) return markedItem.DetourWeight(Other,PathWeight); } Pclass InventoryAttachment extends Actor native nativereplication; function InitFor(Inventory I) { Instigator = I.Instigator; } }€//============================================================================= // Inventory // // Inventory is the parent class of all actors that can be carried by other actors. // Inventory items are placed in the holding actor's inventory chain, a linked list // of inventory actors. Each inventory class knows what pickup can spawn it (its // PickupClass). When tossed out (using the DropFrom() function), inventory items // replace themselves with an actor of their Pickup class. // //============================================================================= class Inventory extends Actor abstract native nativereplication; #exec Texture Import File=Textures\Inventry.pcx Name=S_Inventory Mips=Off MASKED=1 //----------------------------------------------------------------------------- var byte InventoryGroup; // The weapon/inventory set, 0-9. var byte GroupOffset; // position within inventory group. (used by prevweapon and nextweapon) var bool bDisplayableInv; // Item displayed in HUD. var bool bTossedOut; // true if weapon/inventory was tossed out (so players can't cheat w/ weaponstay) var class PickupClass; // what class of pickup is associated with this inventory item var() travel int Charge; // Charge (for example, armor remaining if an armor) //----------------------------------------------------------------------------- // Rendering information. // Player view rendering info. var(FirstPerson) vector PlayerViewOffset; // Offset from view center. var(FirstPerson) rotator PlayerViewPivot; // additive rotation offset for tweaks var() bool bDrawingFirstPerson; var float BobDamping; // how much to damp view bob // 3rd person mesh. var actor ThirdPersonActor; var class AttachmentClass; //----------------------------------------------------------------------------- // HUD graphics. var Material Icon; var Material StatusIcon; // Icon used with ammo/charge/power count on HUD. var localized string ItemName; // Network replication. replication { // Things the server should send to the client. reliable if( bNetOwner && bNetDirty && (Role==ROLE_Authority) ) Charge,ThirdPersonActor; } simulated function AttachToPawn(Pawn P) { local name BoneName; if ( ThirdPersonActor == None ) { ThirdPersonActor = Spawn(AttachmentClass,Owner); InventoryAttachment(ThirdPersonActor).InitFor(self); } BoneName = P.GetWeaponBoneFor(self); if ( BoneName == '' ) { ThirdPersonActor.SetLocation(P.Location); ThirdPersonActor.SetBase(P); } else P.AttachToBone(ThirdPersonActor,BoneName); } /* UpdateRelative() For tweaking weapon positioning. Pass in a new relativerotation, and use the weapon editactor properties sheet to modify the relativelocation */ exec function updaterelative(int pitch, int yaw, int roll) { local rotator NewRot; NewRot.Pitch = pitch; NewRot.Yaw = yaw; NewRot.Roll = roll; ThirdPersonActor.SetRelativeLocation(ThirdPersonActor.Default.RelativeLocation); ThirdPersonActor.SetRelativeRotation(NewRot); } simulated function DetachFromPawn(Pawn P) { if ( ThirdPersonActor != None ) { ThirdPersonActor.Destroy(); ThirdPersonActor = None; } } /* RenderOverlays() - Draw first person view of inventory Most Inventory actors are never rendered. The common exception is Weapon actors. Inventory actors may be rendered in the first person view of the player holding them using the RenderOverlays() function. */ simulated event RenderOverlays( canvas Canvas ) { if ( (Instigator == None) || (Instigator.Controller == None)) return; SetLocation( Instigator.Location + Instigator.CalcDrawOffset(self) ); SetRotation( Instigator.GetViewRotation() ); Canvas.DrawActor(self, false); } simulated function String GetHumanReadableName() { if ( ItemName == "" ) ItemName = GetItemName(string(Class)); return ItemName; } function PickupFunction(Pawn Other); //============================================================================= // AI inventory functions. simulated function Weapon RecommendWeapon( out float rating ) { if ( inventory != None ) return inventory.RecommendWeapon(rating); else { rating = -1; return None; } } //============================================================================= // Inventory travelling across servers. // // Called after a travelling inventory item has been accepted into a level. // event TravelPreAccept() { Super.TravelPreAccept(); GiveTo( Pawn(Owner) ); } function TravelPostAccept() { Super.TravelPostAccept(); PickupFunction(Pawn(Owner)); } //============================================================================= // General inventory functions. // // Called by engine when destroyed. // function Destroyed() { // Remove from owner's inventory. if( Pawn(Owner)!=None ) Pawn(Owner).DeleteInventory( Self ); if ( ThirdPersonActor != None ) ThirdPersonActor.Destroy(); } // // Give this inventory item to a pawn. // function GiveTo( pawn Other ) { Instigator = Other; Other.AddInventory( Self ); GotoState(''); } // // Function which lets existing items in a pawn's inventory // prevent the pawn from picking something up. Return true to abort pickup // or if item handles pickup, otherwise keep going through inventory list. // function bool HandlePickupQuery( pickup Item ) { if ( Item.InventoryType == Class ) return true; if ( Inventory == None ) return false; return Inventory.HandlePickupQuery(Item); } // // Select first activatable powerup. // function Powerups SelectNext() { if ( Inventory != None ) return Inventory.SelectNext(); else return None; } // // Toss this item out. // function DropFrom(vector StartLocation) { local Pickup P; if ( Instigator != None ) { DetachFromPawn(Instigator); Instigator.DeleteInventory(self); } SetDefaultDisplayProperties(); Instigator = None; StopAnimating(); GotoState(''); P = spawn(PickupClass,,,StartLocation); if ( P == None ) { destroy(); return; } P.InitDroppedPickupFor(self); P.Velocity = Velocity; Velocity = vect(0,0,0); } //============================================================================= // Using. function Use( float Value ); //============================================================================= // Weapon functions. // Find a weapon in inventory that has an Inventory Group matching F. simulated function Weapon WeaponChange( byte F ) { if( Inventory == None) return None; else return Inventory.WeaponChange( F ); } // Find the previous weapon (using the Inventory group) simulated function Weapon PrevWeapon(Weapon CurrentChoice, Weapon CurrentWeapon) { if ( Inventory == None ) return CurrentChoice; else return Inventory.PrevWeapon(CurrentChoice,CurrentWeapon); } // Find the next weapon (using the Inventory group) simulated function Weapon NextWeapon(Weapon CurrentChoice, Weapon CurrentWeapon) { if ( Inventory == None ) return CurrentChoice; else return Inventory.NextWeapon(CurrentChoice,CurrentWeapon); } //============================================================================= // Armor functions. // // Return the best armor to use. // // 2006/07/27 Removed by NeverDie /* function armor PrioritizeArmor( int Damage, class DamageType, vector HitLocation ) { local Armor FirstArmor; if ( Inventory != None ) FirstArmor = Inventory.PrioritizeArmor(Damage, DamageType, HitLocation); else FirstArmor = None; return FirstArmor; } */ // // Used to inform inventory when owner event occurs (for example jumping or weapon change) // function OwnerEvent(name EventName) { if( Inventory != None ) Inventory.OwnerEvent(EventName); } // used to ask inventory if it needs to affect its owners display properties function SetOwnerDisplay() { if( Inventory != None ) Inventory.SetOwnerDisplay(); } static function string StaticItemName() { return Default.ItemName; } G//============================================================================= // InterpolationPoint. // Used as destinations to move the camera to in Matinee scenes. //============================================================================= class InterpolationPoint extends Keypoint native; #exec Texture Import File=Textures\IntrpPnt.pcx Name=S_Interp Mips=Off MASKED=1 r//============================================================================= // InternetInfo: Parent class for Internet connection classes //============================================================================= class InternetInfo extends Info native transient; function string GetBeaconAddress( int i ); function string GetBeaconText( int i ); N{r Îé0Irš9:F 9:$e‚wm*&±®j!ÍÌL>rn-or( ™š9:F 9:$rz- Àš9:F 9:$rx- çš9:F 9:$ru-  š9:F 9:$rj-E{r{R$V {p {r'( bL// ==================================================================== // Class: Engine.Interactions // // This is an abstract class for the interaction sub-system. This new // sub-system is responsible for tunneling input and Pre/Post rendering // time to individual viewports and interactions. // // (c) 2001, Epic Games, Inc. All Rights Reserved // ==================================================================== class Interactions extends Object dynamicrecompile abstract native; //----------------------------------------------------------------------------- // Input. // Input system states. enum EInputAction { IST_None, // Not performing special input processing. IST_Press, // Handling a keypress or button press. IST_Hold, // Handling holding a key or button. IST_Release, // Handling a key or button release. IST_Axis, // Handling analog axis movement. }; // Input keys. enum EInputKey { /*00*/ IK_None ,IK_LeftMouse ,IK_RightMouse ,IK_Cancel , /*04*/ IK_MiddleMouse ,IK_Unknown05 ,IK_Unknown06 ,IK_Unknown07 , /*08*/ IK_Backspace ,IK_Tab ,IK_Unknown0A ,IK_Unknown0B , /*0C*/ IK_Unknown0C ,IK_Enter ,IK_Unknown0E ,IK_Unknown0F , /*10*/ IK_Shift ,IK_Ctrl ,IK_Alt ,IK_Pause , /*14*/ IK_CapsLock ,IK_Unknown15 ,IK_Unknown16 ,IK_Unknown17 , /*18*/ IK_Unknown18 ,IK_Unknown19 ,IK_Unknown1A ,IK_Escape , /*1C*/ IK_Unknown1C ,IK_Unknown1D ,IK_Unknown1E ,IK_Unknown1F , /*20*/ IK_Space ,IK_PageUp ,IK_PageDown ,IK_End , /*24*/ IK_Home ,IK_Left ,IK_Up ,IK_Right , /*28*/ IK_Down ,IK_Select ,IK_Print ,IK_Execute , /*2C*/ IK_PrintScrn ,IK_Insert ,IK_Delete ,IK_Help , /*30*/ IK_0 ,IK_1 ,IK_2 ,IK_3 , /*34*/ IK_4 ,IK_5 ,IK_6 ,IK_7 , /*38*/ IK_8 ,IK_9 ,IK_Unknown3A ,IK_Unknown3B , /*3C*/ IK_Unknown3C ,IK_Unknown3D ,IK_Unknown3E ,IK_Unknown3F , /*40*/ IK_Unknown40 ,IK_A ,IK_B ,IK_C , /*44*/ IK_D ,IK_E ,IK_F ,IK_G , /*48*/ IK_H ,IK_I ,IK_J ,IK_K , /*4C*/ IK_L ,IK_M ,IK_N ,IK_O , /*50*/ IK_P ,IK_Q ,IK_R ,IK_S , /*54*/ IK_T ,IK_U ,IK_V ,IK_W , /*58*/ IK_X ,IK_Y ,IK_Z ,IK_Unknown5B , /*5C*/ IK_Unknown5C ,IK_Unknown5D ,IK_Unknown5E ,IK_Unknown5F , /*60*/ IK_NumPad0 ,IK_NumPad1 ,IK_NumPad2 ,IK_NumPad3 , /*64*/ IK_NumPad4 ,IK_NumPad5 ,IK_NumPad6 ,IK_NumPad7 , /*68*/ IK_NumPad8 ,IK_NumPad9 ,IK_GreyStar ,IK_GreyPlus , /*6C*/ IK_Separator ,IK_GreyMinus ,IK_NumPadPeriod,IK_GreySlash , /*70*/ IK_F1 ,IK_F2 ,IK_F3 ,IK_F4 , /*74*/ IK_F5 ,IK_F6 ,IK_F7 ,IK_F8 , /*78*/ IK_F9 ,IK_F10 ,IK_F11 ,IK_F12 , /*7C*/ IK_F13 ,IK_F14 ,IK_F15 ,IK_F16 , /*80*/ IK_F17 ,IK_F18 ,IK_F19 ,IK_F20 , /*84*/ IK_F21 ,IK_F22 ,IK_F23 ,IK_F24 , /*88*/ IK_Unknown88 ,IK_Unknown89 ,IK_Unknown8A ,IK_Unknown8B , /*8C*/ IK_Unknown8C ,IK_Unknown8D ,IK_Unknown8E ,IK_Unknown8F , /*90*/ IK_NumLock ,IK_ScrollLock ,IK_Unknown92 ,IK_Unknown93 , /*94*/ IK_Unknown94 ,IK_Unknown95 ,IK_Unknown96 ,IK_Unknown97 , /*98*/ IK_Unknown98 ,IK_Unknown99 ,IK_Unknown9A ,IK_Unknown9B , /*9C*/ IK_Unknown9C ,IK_Unknown9D ,IK_Unknown9E ,IK_Unknown9F , /*A0*/ IK_LShift ,IK_RShift ,IK_LControl ,IK_RControl , /*A4*/ IK_UnknownA4 ,IK_UnknownA5 ,IK_UnknownA6 ,IK_UnknownA7 , /*A8*/ IK_UnknownA8 ,IK_UnknownA9 ,IK_UnknownAA ,IK_UnknownAB , /*AC*/ IK_UnknownAC ,IK_UnknownAD ,IK_UnknownAE ,IK_UnknownAF , /*B0*/ IK_UnknownB0 ,IK_UnknownB1 ,IK_UnknownB2 ,IK_UnknownB3 , /*B4*/ IK_UnknownB4 ,IK_UnknownB5 ,IK_UnknownB6 ,IK_UnknownB7 , /*B8*/ IK_UnknownB8 ,IK_Unicode ,IK_Semicolon ,IK_Equals , /*BC*/ IK_Comma ,IK_Minus ,IK_Period ,IK_Slash , /*C0*/ IK_Tilde ,IK_UnknownC1 ,IK_UnknownC2 ,IK_UnknownC3 , /*C4*/ IK_UnknownC4 ,IK_UnknownC5 ,IK_UnknownC6 ,IK_UnknownC7 , /*C8*/ IK_Joy1 ,IK_Joy2 ,IK_Joy3 ,IK_Joy4 , /*CC*/ IK_Joy5 ,IK_Joy6 ,IK_Joy7 ,IK_Joy8 , /*D0*/ IK_Joy9 ,IK_Joy10 ,IK_Joy11 ,IK_Joy12 , /*D4*/ IK_Joy13 ,IK_Joy14 ,IK_Joy15 ,IK_Joy16 , /*D8*/ IK_UnknownD8 ,IK_UnknownD9 ,IK_UnknownDA ,IK_LeftBracket , /*DC*/ IK_Backslash ,IK_RightBracket,IK_SingleQuote ,IK_UnknownDF , /*E0*/ IK_UnknownE0 ,IK_UnknownE1 ,IK_UnknownE2 ,IK_UnknownE3 , /*E4*/ IK_MouseX ,IK_MouseY ,IK_MouseZ ,IK_MouseW , /*E8*/ IK_JoyU ,IK_JoyV ,IK_JoySlider1 ,IK_JoySlider2 , /*EC*/ IK_MouseWheelUp ,IK_MouseWheelDown,IK_Unknown10E,UK_Unknown10F , /*F0*/ IK_JoyX ,IK_JoyY ,IK_JoyZ ,IK_JoyR , /*F4*/ IK_UnknownF4 ,IK_UnknownF5 ,IK_Attn ,IK_CrSel , /*F8*/ IK_ExSel ,IK_ErEof ,IK_Play ,IK_Zoom , /*FC*/ IK_NoName ,IK_PA1 ,IK_OEMClear }; r€P‡// ==================================================================== // Class: Engine.InteractionMaster // // The InteractionMaster controls the entire interaction system. It's // job is to take input and Pre/PostRender call and route them to individual // Interactions and/or viewports. // // The stubs here in script are for just the GlobalInteracations as those // are the only Interactions the IM routes directly too. A new stub is // created in order to limit the number of C++ -> Uscript switches. // // (c) 2001, Epic Games, Inc. All Rights Reserved // ==================================================================== class InteractionMaster extends Interactions transient Native; var transient Client Client; var transient const Interaction BaseMenu; // Holds a pointer to the base menu system var transient const Interaction Console; // Holds the special Interaction that acts as the console var transient array GlobalInteractions; // Holds a listing of all global Interactions var transient bool bRequireRawJoystick; native function Travel(string URL); // Setup a travel to a new map // ==================================================================== // Control functions // ==================================================================== event Interaction AddInteraction(string InteractionName, optional Player AttachTo) // Adds an Interaction { local Interaction NewInteraction; local class NewInteractionClass; NewInteractionClass = class(DynamicLoadObject(InteractionName, class'Class')); if (NewInteractionClass!=None) { NewInteraction = new NewInteractionClass; if (NewInteraction != None) { // Place the Interaction in the proper array if (AttachTo != None) // Handle location Interactions { AttachTo.LocalInteractions.Length = AttachTo.LocalInteractions.Length + 1; AttachTo.LocalInteractions[AttachTo.LocalInteractions.Length-1] = NewInteraction; NewInteraction.ViewportOwner = AttachTo; } else // Handle Global Interactions { GlobalInteractions.Length = GlobalInteractions.Length + 1; GlobalInteractions[GlobalInteractions.Length-1] = NewInteraction; } // Initialize the Interaction NewInteraction.Initialize(); NewInteraction.Master = Self; return NewInteraction; } else Log("Could not create interaction ["$InteractionName$"]",'IMaster'); } else Log("Could not load interaction ["$InteractionName$"]",'IMaster'); return none; } // AddInteraction event RemoveInteraction(interaction RemoveMe) // Removes a Interaction { local int Index; // Grab the array to work with if (RemoveMe.ViewportOwner != None) { for (Index = 0; Index < RemoveMe.ViewPortOwner.LocalInteractions.Length; Index++) { if ( RemoveMe.ViewPortOwner.LocalInteractions[Index] == RemoveMe ) { RemoveMe.ViewPortOwner.LocalInteractions.Remove(Index,1); return; } } } else { for (Index = 0; Index < GlobalInteractions.Length; Index++) { if ( GlobalInteractions[Index] == RemoveMe ) { GlobalInteractions.Remove(Index,1); return; } } } // Find the Interaction to delete Log("Could not remove interaction ["$RemoveMe$"] (Not Found)", 'IMaster'); } // RemoveInteraction // ==================================================================== // SetFocusTo - This function will cause a window to adjust it's position // in it's array so that it processes input first and displays last. // ==================================================================== event SetFocusTo(Interaction Inter, optional Player ViewportOwner) { local array InteractionArray; local Interaction temp; local int i,iIndex; if (ViewportOwner != none) InteractionArray = ViewportOwner.LocalInteractions; else InteractionArray = GlobalInteractions; if (InteractionArray.Length == 0) { Log("Attempt to SetFocus on an empty Array.",'IMaster'); return; } // Search for the Interaction iIndex = -1; for ( i=0; i InteractionArray, out EInputKey Key, optional string Unicode ) // Process a single key press { local int Index; // Chain through the Interactions for ( Index=0; Index InteractionArray, out EInputKey Key, out EInputAction Action, FLOAT Delta ) // Process the range of input events { local int Index; // Chain through the Interactions for ( Index=0; Index InteractionArray, canvas Canvas ) { local int index; // Chain through the Interactions for ( Index=InteractionArray.Length; Index>0; Index--) // Give each Interaction PreRender time { if ( (InteractionArray[Index-1].bVisible ) && (!InteractionArray[Index-1].bNativeEvents) ) InteractionArray[Index-1].PreRender(canvas); } } // Process_PreRender event Process_PostRender( array InteractionArray, canvas Canvas ) { local int index; // Chain through the Interactions for ( Index=InteractionArray.Length; Index>0; Index--) // Give each Interaction PreRender time { if ( (InteractionArray[Index-1].bVisible ) && (!InteractionArray[Index-1].bNativeEvents) ) InteractionArray[Index-1].PostRender(canvas); } } // Process_PostRender // ==================================================================== // Tick - Interactions can request access to be ticked. // ==================================================================== event Process_Tick( array InteractionArray, float DeltaTime ) { local int Index; // Chain through the Interactions for ( Index=0; Index InteractionArray) { local int Index; // Chain through the Interactions for ( Index=0; Index PlayerInfo; }; struct native export ServerResponseLine { var() int ServerID; var() string IP; var() int Port; var() int QueryPort; var() string ServerName; var() string MapName; var() string GameType; var() int CurrentPlayers; var() int MaxPlayers; var() int Ping; var() array ServerInfo; var() array PlayerInfo; }; ^cO%ûù5 €be{ ýï6 f€ŠFghij‚@dX-J%J7.: 5X-,-U:A ~Y-wwŸY- n€@€UkW-A ë7.*w}#*}#A W-V-U-( €p€q€€o{^ö8Â~%æ–~J 3z6V~cæÜÕ°6K$~c6V~cŒ–~“J &W ~Œ–W “J &W c’W &c¥W †6VW cæÜ¥E¥~U$9D®9?9D««c-g9?{P«¬¯€?g@9?{Pr9D®9?9D««b-g9?{n«¬¯€?g@9?{n{`I {{JD${aÖAV$J¢r9D®«J9?E9?&¢r9DJ~%À–~E)z6V~cÀ{aÐ6V~cV$J{(9?U$9?r{J6J$~c{aÑ6V~c(¡r9DJ¥~ z//============================================================================= // I3DL2Listener: Base class for I3DL2 room effects. //============================================================================= class I3DL2Listener extends Object abstract editinlinenew native; var() float EnvironmentSize; var() float EnvironmentDiffusion; var() int Room; var() int RoomHF; var() int RoomLF; var() float DecayTime; var() float DecayHFRatio; var() float DecayLFRatio; var() int Reflections; var() float ReflectionsDelay; var() vector ReflectionsPan; var() int Reverb; var() float ReverbDelay; var() vector ReverbPan; var() float EchoTime; var() float EchoDepth; var() float ModulationTime; var() float ModulationDepth; var() float RoomRolloffFactor; var() float AirAbsorptionHF; var() float HFReference; var() float LFReference; var() bool bDecayTimeScale; var() bool bReflectionsScale; var() bool bReflectionsDelayScale; var() bool bReverbScale; var() bool bReverbDelayScale; var() bool bEchoTimeScale; var() bool bModulationTimeScale; var() bool bDecayHFLimit; var transient int Environment; var transient int Updated; ^©//============================================================================= // HUD: Superclass of the heads-up display. //============================================================================= class HUD extends Actor native config(user) transient; //============================================================================= // Variables. #exec Texture Import File=Textures\Border.pcx #exec new TrueTypeFontFactory PACKAGE="Engine" Name=MediumFont FontName="Arial Bold" Height=16 AntiAlias=1 CharactersPerPage=128 #exec new TrueTypeFontFactory PACKAGE="Engine" Name=SmallFont FontName="Terminal" Height=10 AntiAlias=0 CharactersPerPage=256 // Stock fonts. var font SmallFont; // Small system font. var font MedFont; // Medium system font. var font BigFont; // Big system font. var font LargeFont; // Largest system font. var string HUDConfigWindowType; var HUD nextHUD; // list of huds which render to the canvas var PlayerController PlayerOwner; // always the actual owner var localized string ProgressFontName; var Font ProgressFontFont; var float ProgressFadeTime; var Color MOTDColor; var ScoreBoard Scoreboard; var bool bHideHUD; var bool bShowScores; var bool bShowDebugInfo; // if true, show properties of current ViewTarget var bool bHideCenterMessages; // don't draw centered messages (screen center being used) var bool bBadConnectionAlert; // display warning about bad connection var config bool bMessageBeep; var globalconfig float HudCanvasScale; // Specifies amount of screen-space to use (for TV's). var localized string LoadingMessage; var localized string SavingMessage; var localized string ConnectingMessage; var localized string PausedMessage; var localized string PrecachingMessage; var Color ConsoleColor; var globalconfig int ConsoleMessageCount; var globalconfig int ConsoleFontSize; var globalconfig int MessageFontOffset; struct HUDLocalizedMessage { var Class Message; var int Switch; var PlayerReplicationInfo RelatedPRI; var Object OptionalObject; var float EndOfLife; var float LifeTime; var bool bDrawing; var int numLines; var string StringMessage; var color DrawColor; var font StringFont; var float XL, YL; var float YPos; }; struct native ConsoleMessage { var string Text; var color TextColor; var float MessageLife; var PlayerReplicationInfo PRI; }; var ConsoleMessage TextMessages[8]; var() float ConsoleMessagePosX, ConsoleMessagePosY; // DP_LowerLeft var localized string FontArrayNames[9]; var Font FontArrayFonts[9]; var int FontScreenWidthMedium[9]; var int FontScreenWidthSmall[9]; /* Draw3DLine() draw line in world space. Should be used when engine calls RenderWorldOverlays() event. */ native final function Draw3DLine(vector Start, vector End, color LineColor); simulated event PostBeginPlay() { Super.PostBeginPlay(); PlayerOwner = PlayerController(Owner); } function SpawnScoreBoard(class ScoringType) { if ( ScoringType != None ) Scoreboard = Spawn(ScoringType, PlayerOwner); } simulated event Destroyed() { if( ScoreBoard != None ) { ScoreBoard.Destroy(); ScoreBoard = None; } Super.Destroyed(); } //============================================================================= // Execs /* toggles displaying scoreboard */ exec function ShowScores() { bShowScores = !bShowScores; } /* toggles displaying properties of player's current viewtarget */ exec function ShowDebug() { bShowDebugInfo = !bShowDebugInfo; } simulated event WorldSpaceOverlays() { if ( bShowDebugInfo && Pawn(PlayerOwner.ViewTarget) != None ) DrawRoute(); } function CheckCountdown(GameReplicationInfo GRI); event ConnectFailure(string FailCode, string URL) { PlayerOwner.ReceiveLocalizedMessage(class'FailedConnect', class'FailedConnect'.Static.GetFailSwitch(FailCode)); } /* ShowUpgradeMenu() Event called when the engine version is less than the MinNetVer of the server you are trying to connect with. */ event ShowUpgradeMenu(); function PlayStartupMessage(byte Stage); //============================================================================= // Message manipulation function ClearMessage(out HUDLocalizedMessage M) { M.Message = None; M.Switch = 0; M.RelatedPRI = None; M.OptionalObject = None; M.EndOfLife = 0; M.StringMessage = ""; M.DrawColor = class'Canvas'.Static.MakeColor(255,255,255); M.XL = 0; M.bDrawing = false; } function CopyMessage(out HUDLocalizedMessage M1, HUDLocalizedMessage M2) { M1.Message = M2.Message; M1.Switch = M2.Switch; M1.RelatedPRI = M2.RelatedPRI; M1.OptionalObject = M2.OptionalObject; M1.EndOfLife = M2.EndOfLife; M1.StringMessage = M2.StringMessage; M1.DrawColor = M2.DrawColor; M1.XL = M2.XL; M1.YL = M2.YL; M1.YPos = M2.YPos; M1.bDrawing = M2.bDrawing; M1.LifeTime = M2.LifeTime; M1.numLines = M2.numLines; } //============================================================================= // Status drawing. simulated event PostRender( canvas Canvas ) { local float XPos,YPos; local Pawn P; CheckCountDown(PlayerOwner.GameReplicationInfo); if ( !PlayerOwner.bBehindView ) { P = Pawn(PlayerOwner.ViewTarget); if ( (P != None) && (P.Weapon != None) ) P.Weapon.RenderOverlays(Canvas); } //FIXMEJOE /* if ( PlayerConsole.bNoDrawWorld ) { Canvas.SetPos(0,0); Canvas.DrawPattern( Texture'Border', Canvas.ClipX, Canvas.ClipY, 1.0 ); } */ DisplayMessages(Canvas); bHideCenterMessages = DrawLevelAction(Canvas); if ( !bHideCenterMessages && (PlayerOwner.ProgressTimeOut > Level.TimeSeconds) ) DisplayProgressMessage(Canvas); if ( bBadConnectionAlert ) DisplayBadConnectionAlert(); if ( P != None && P.bSpecialHUD ) P.DrawHud(Canvas); if ( bShowDebugInfo ) { Canvas.Font = GetConsoleFont(Canvas); Canvas.Style = ERenderStyle.STY_Alpha; Canvas.DrawColor = ConsoleColor; PlayerOwner.ViewTarget.DisplayDebug (Canvas, XPos, YPos); } else if( !bHideHud ) { if ( bShowScores ) { if (ScoreBoard != None) { ScoreBoard.DrawScoreboard(Canvas); if ( Scoreboard.bDisplayMessages ) DisplayMessages(Canvas); } } else { if ( (PlayerOwner == None) || (P == None) || (P.PlayerReplicationInfo == None) || PlayerOwner.IsSpectating() ) DrawSpectatingHud(Canvas); else if( !P.bHideRegularHUD ) DrawHud(Canvas); if ( !DrawLevelAction(Canvas) ) { if ((PlayerOwner != None) && (PlayerOwner.ProgressTimeOut > Level.TimeSeconds)) DisplayProgressMessage(Canvas); } DisplayMessages(Canvas); } } PlayerOwner.RenderOverlays (Canvas); /*FIXME_MERGE if ((PlayerConsole != None) && PlayerConsole.bTyping) DrawTypingPrompt(Canvas, PlayerConsole.TypedStr); */ } function DrawSpectatingHud (Canvas C); simulated function DrawRoute() { local int i; local Controller C; local vector Start, End, RealStart;; local bool bPath; C = Pawn(PlayerOwner.ViewTarget).Controller; if ( C == None ) return; if ( C.CurrentPath != None ) Start = C.CurrentPath.Start.Location; else Start = PlayerOwner.ViewTarget.Location; RealStart = Start; if ( C.bAdjusting ) { Draw3DLine(C.Pawn.Location, C.AdjustLoc, class'Canvas'.Static.MakeColor(255,0,255)); Start = C.AdjustLoc; } // show where pawn is going if ( (C == PlayerOwner) || (C.MoveTarget == C.RouteCache[0]) && (C.MoveTarget != None) ) { if ( (C == PlayerOwner) && (C.Destination != vect(0,0,0)) ) { if ( C.PointReachable(C.Destination) ) { Draw3DLine(C.Pawn.Location, C.Destination, class'Canvas'.Static.MakeColor(255,255,255)); return; } C.FindPathTo(C.Destination); } for ( i=0; i<16; i++ ) { if ( C.RouteCache[i] == None ) break; bPath = true; Draw3DLine(Start,C.RouteCache[i].Location,class'Canvas'.Static.MakeColor(0,255,0)); Start = C.RouteCache[i].Location; } if ( bPath ) Draw3DLine(RealStart,C.Destination,class'Canvas'.Static.MakeColor(255,255,255)); } else if ( PlayerOwner.ViewTarget.Velocity != vect(0,0,0) ) Draw3DLine(RealStart,C.Destination,class'Canvas'.Static.MakeColor(255,255,255)); if ( C == PlayerOwner ) return; // show where pawn is looking if ( C.Focus != None ) End = C.Focus.Location; else End = C.FocalPoint; Draw3DLine(PlayerOwner.ViewTarget.Location + Pawn(PlayerOwner.ViewTarget).BaseEyeHeight * vect(0,0,1),End,class'Canvas'.Static.MakeColor(255,0,0)); } /* DrawHUD() Draw HUD elements on canvas. */ function DrawHUD(canvas Canvas); /* Print a centered level action message with a drop shadow. */ function PrintActionMessage( Canvas C, string BigMessage ) { local float XL, YL; if ( Len(BigMessage) > 10 ) UseLargeFont(C); else UseHugeFont(C); C.bCenter = false; C.StrLen( BigMessage, XL, YL ); C.SetPos(0.5 * (C.ClipX - XL) + 1, 0.66 * C.ClipY - YL * 0.5 + 1); C.SetDrawColor(0,0,0); C.DrawText( BigMessage, false ); C.SetPos(0.5 * (C.ClipX - XL), 0.66 * C.ClipY - YL * 0.5); C.SetDrawColor(0,0,255);; C.DrawText( BigMessage, false ); } /* Display Progress Messages display progress messages in center of screen */ simulated function DisplayProgressMessage(Canvas C) { local int i, LineCount; local GameReplicationInfo GRI; local float FontDX, FontDY; local float X, Y; local int Alpha; local float TimeLeft; TimeLeft = PlayerOwner.ProgressTimeOut - Level.TimeSeconds; if( TimeLeft >= ProgressFadeTime ) Alpha = 255; else Alpha = (255 * TimeLeft) / ProgressFadeTime; GRI = PlayerOwner.GameReplicationInfo; LineCount = 0; for (i = 0; i < ArrayCount (PlayerOwner.ProgressMessage); i++) { if (PlayerOwner.ProgressMessage[i] == "") continue; LineCount++; } if (GRI != None) { if( GRI.MOTDLine1 != "" ) LineCount++; if( GRI.MOTDLine2 != "" ) LineCount++; if( GRI.MOTDLine3 != "" ) LineCount++; if( GRI.MOTDLine4 != "" ) LineCount++; } C.Font = LoadProgressFont(); C.Style = ERenderStyle.STY_Alpha; C.TextSize ("A", FontDX, FontDY); X = (0.5 * HudCanvasScale * C.SizeX) + (((1.0 - HudCanvasScale) / 2.0) * C.SizeX); Y = (0.5 * HudCanvasScale * C.SizeY) + (((1.0 - HudCanvasScale) / 2.0) * C.SizeY); Y -= FontDY * (float (LineCount) / 2.0); for (i = 0; i < ArrayCount (PlayerOwner.ProgressMessage); i++) { if (PlayerOwner.ProgressMessage[i] == "") continue; C.DrawColor = PlayerOwner.ProgressColor[i]; C.DrawColor.A = Alpha; C.TextSize (PlayerOwner.ProgressMessage[i], FontDX, FontDY); C.SetPos (X - (FontDX / 2.0), Y); C.DrawText (PlayerOwner.ProgressMessage[i]); Y += FontDY; } if( (GRI != None) && (Level.NetMode != NM_StandAlone) ) { C.DrawColor = MOTDColor; C.DrawColor.A = Alpha; if( GRI.MOTDLine1 != "" ) { C.TextSize (GRI.MOTDLine1, FontDX, FontDY); C.SetPos (X - (FontDX / 2.0), Y); C.DrawText (GRI.MOTDLine1); Y += FontDY; } if( GRI.MOTDLine2 != "" ) { C.TextSize (GRI.MOTDLine2, FontDX, FontDY); C.SetPos (X - (FontDX / 2.0), Y); C.DrawText (GRI.MOTDLine2); Y += FontDY; } if( GRI.MOTDLine3 != "" ) { C.TextSize (GRI.MOTDLine3, FontDX, FontDY); C.SetPos (X - (FontDX / 2.0), Y); C.DrawText (GRI.MOTDLine3); Y += FontDY; } if( GRI.MOTDLine4 != "" ) { C.TextSize (GRI.MOTDLine4, FontDX, FontDY); C.SetPos (X - (FontDX / 2.0), Y); C.DrawText (GRI.MOTDLine4); Y += FontDY; } } } /* Draw the Level Action */ function bool DrawLevelAction( canvas C ) { local string BigMessage; if (Level.LevelAction == LEVACT_None ) { if ( (Level.Pauser != None) && (Level.TimeSeconds > Level.PauseDelay + 0.2) ) BigMessage = PausedMessage; // Add pauser name? else { BigMessage = ""; return false; } } else if ( Level.LevelAction == LEVACT_Loading ) BigMessage = LoadingMessage; else if ( Level.LevelAction == LEVACT_Saving ) BigMessage = SavingMessage; else if ( Level.LevelAction == LEVACT_Connecting ) BigMessage = ConnectingMessage; else if ( Level.LevelAction == LEVACT_Precaching ) BigMessage = PrecachingMessage; if ( BigMessage != "" ) { C.Style = ERenderStyle.STY_Normal; UseLargeFont(C); PrintActionMessage(C, BigMessage); return true; } return false; } /* DisplayBadConnectionAlert() Warn user that net connection is bad */ function DisplayBadConnectionAlert(); //============================================================================= // Messaging. simulated function Message( PlayerReplicationInfo PRI, coerce string Msg, name MsgType ) { if ( bMessageBeep ) PlayerOwner.PlayBeepSound(); if ( (MsgType == 'Say') || (MsgType == 'TeamSay') ) Msg = PRI.PlayerName$": "$Msg; AddTextMessage(Msg,class'LocalMessage',PRI); } function DisplayPortrait(PlayerReplicationInfo PRI); simulated function LocalizedMessage( class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject, optional string CriticalString ); simulated function PlayReceivedMessage( string S, string PName, ZoneInfo PZone ) { PlayerOwner.ClientMessage(S); if ( bMessageBeep ) PlayerOwner.PlayBeepSound(); } function bool ProcessKeyEvent( int Key, int Action, FLOAT Delta ) { if ( NextHud != None ) return NextHud.ProcessKeyEvent(Key,Action,Delta); return false; } /* DisplayMessages() - display current messages */ function DisplayMessages(Canvas C) { local int i, j, XPos, YPos,MessageCount; local float XL, YL; for( i = 0; i < ConsoleMessageCount; i++ ) { if ( TextMessages[i].Text == "" ) break; else if( TextMessages[i].MessageLife < Level.TimeSeconds ) { TextMessages[i].Text = ""; if( i < ConsoleMessageCount - 1 ) { for( j=i; j MessageClass, PlayerReplicationInfo PRI) { local int i; if( bMessageBeep && MessageClass.Default.bBeep ) PlayerOwner.PlayBeepSound(); for( i=0; i6,‚-Ub-U9:AK%f–KJ \z6VKcf¥K3²šKJ K%²–K“J &Kc’K&c¥K|6VKcS-6K$Kc®9?bz6J$Kcb s W$6d-KcW$ b|Dpœ' j‘// ==================================================================== // Class: Engine.GameStats // Parent: Engine.Info // // the GameStats object is used to send individual stat events to the // stats server. Each game should spawn a GameStats object if it // wishes to have stat logging. // // ==================================================================== class GameStats extends Info Native; var FileLog TempLog; var GameReplicationInfo GRI; var bool bShowBots; //!! FIXME - remove before ship!!! native final function string GetStatsIdentifier( Controller C ); native final function string GetMapFileName(); // Returns the name of the current map ///////////////////////////////////// // GameStats interface function Init() { TempLog = spawn(class 'FileLog'); if (TempLog!=None) { TempLog.OpenLog("Stats"); log("Output Game stats to: STATS.TXT"); } else { log("Could not spawn Temporary Stats log"); Destroy(); } } function Shutdown() { if (TempLog!=None) TempLog.Destroy(); } function Logf(string LogString) { if (TempLog!=None) TempLog.Logf(LogString); } ///////////////////////////////////// // Internals event PostBeginPlay() { Super.PostBeginPlay(); Init(); } event Destroyed() { Shutdown(); Super.Destroyed(); } function string TimeStamp() { local string seconds; seconds = ""$Level.TimeSeconds; // Remove the centiseconds if( InStr(seconds,".") != -1 ) seconds = Left( seconds, InStr(seconds,".") ); return seconds; } function string Header() { return ""$TimeStamp()$chr(9); } function String FullTimeDate() // Date/Time in MYSQL format { return ""$Level.Year$"-"$Level.Month$"-"$Level.Day$" "$Level.Hour$":"$Level.Minute$":"$Level.Second; } function String TimeZone() // Timezone (offset) of game server's local time to GTM, e.g. -4 or +5 { return "0"; // FIXME Jack - currently pretending GMT } function String MapName() { local string mapname; local string tab; tab = ""$Chr(9); mapname = ""$GetMapFileName(); // Remove the file name extention .ut2 if( InStr(mapname,".ut2") != -1 ) mapname = Left( mapname, InStr(mapname,".ut2") ); ReplaceText(mapname, tab, "_"); return mapname; } // Stat Logging functions function NewGame() { local string out, tmp; local string tab, ngTitle, ngAuthor, ngGameGameName; local int i; local mutator MyMutie; local GameRules MyRules; tab = ""$Chr(9); ngTitle = Level.Title; // Making local copies ngAuthor = Level.Author; ngGameGameName = Level.Game.GameName; ReplaceText(ngTitle, tab, "_"); // Replacing tabs with _ ReplaceText(ngAuthor, tab, "_"); ReplaceText(ngGameGameName, tab, "_"); GRI = Level.Game.GameReplicationInfo; out = Header()$"NG"$chr(9); // "NewGame" out = out$FullTimeDate()$Chr(9); // Game server's local time out = out$TimeZone()$Chr(9); // Game server's time zone (offset to GMT) out = out$MapName()$Chr(9); // Map file name without map extention .ut2 out = out$ngTitle$chr(9); out = out$ngAuthor$chr(9); out = out$Level.Game.Class$chr(9); out = out$ngGameGameName; tmp = ""; i = 0; foreach AllActors(class'Mutator',MyMutie) { if (tmp!="") tmp=tmp$"|"$MyMutie.Class; else tmp=""$MyMutie.Class; i++; } foreach AllActors(class'GameRules',MyRules) { if (tmp!="") tmp=tmp$"|"$MyRules.Class; else tmp=""$MyRules.Class; i++; } if (i>0) { ReplaceText(tmp, tab, "_"); out = out$chr(9)$"Mutators="$tmp; } Logf(out); } function ServerInfo() { local string out, flags; local string tab, siServerName, siAdminName, siAdminEmail; local GameInfo.ServerResponseLine ServerState; local int i; tab = ""$Chr(9); siServerName = GRI.ServerName; // Making local copies siAdminName = GRI.AdminName; siAdminEmail = GRI.AdminEmail; ReplaceText(siServerName, tab, "_"); ReplaceText(siAdminName, tab, "_"); ReplaceText(siAdminEmail, tab, "_"); out = Header()$"SI"$chr(9); // "SeverInfo" out = out$siServerName$chr(9); // Server name out = out$TimeZone()$chr(9); // Timezone out = out$siAdminName$chr(9); // Admin name out = out$siAdminEmail$chr(9); // Admin email out = out$chr(9); // IP:port (filled in by Master Server) flags = ""; // Server flag / key combos Level.Game.GetServerDetails( ServerState ); for( i=0;i PRIs; local PlayerReplicationInfo PRI,t; out = Header()$"EG"$Chr(9)$Reason; // "EndGame" GRI = Level.Game.GameReplicationInfo; // Quick cascade sort. for (i=0;i PRI.Deaths) ) { t = PRIs[j]; PRIs[j] = PRI; PRI = t; } } PRIs[j] = PRI; } } // Minimal scoreboard, shows Playernumbers in order of Score for (i=0;i Damage) { local string out; if ( (Victim.bBot && !bShowBots) || Killer.bOnlySpectator || Victim.bOnlySpectator ) // Spectator might suicide return; out = ""$Header()$Killtype$Chr(9); // KillerNumber and KillerDamagetype if (Killer!=None) { if (Killer.bBot && !bShowBots) return; out = out$Controller(Killer.Owner).PlayerNum$Chr(9); // KillerWeapon no longer used, using damagetype out = out$GetItemName(string(Damage))$Chr(9); } else out = out$"-1"$chr(9)$GetItemName(string(Damage))$Chr(9); // No PlayerNum -> -1, Environment "deaths" // VictimNumber and VictimWeapon out = out$Controller(Victim.Owner).PlayerNum$chr(9)$GetItemName(string(Controller(Victim.Owner).GetLastWeapon())); // Type killers tracked as player event (redundant Typing, removed from kill line) if ( PlayerController(Victim.Owner)!= None && PlayerController(Victim.Owner).bIsTyping) { if ( PlayerController(Killer.Owner) != PlayerController(Victim.Owner) ) SpecialEvent(Killer, "type_kill"); // Killer killed typing victim } Logf(out); } // Special Events are everything else regarding the player function SpecialEvent(PlayerReplicationInfo Who, string Desc) { local string out; if (Who != None) { if ( (Who.bBot && !bShowBots) || Who.bOnlySpectator ) // Avoid spectator suicide on console "type_kill" return; out = ""$Controller(Who.Owner).PlayerNum; } else out = "-1"; Logf( ""$Header()$"P"$Chr(9)$out$Chr(9)$Desc ); //"PSpecial" } // Special events regarding the game function GameEvent(string GEvent, string Desc, PlayerReplicationInfo Who) { local string out, tab, geDesc; if (Who != None) { if ( (Who.bBot && !bShowBots) || Who.bOnlySpectator ) // Specator could cause NameChange, TeamChange! No longer. return; out = ""$Controller(Who.Owner).PlayerNum; } else out = "-1"; geDesc = Desc; tab = ""$Chr(9); ReplaceText(geDesc, tab, "_"); // geDesc, can be the nickname! Logf( ""$Header()$"G"$Chr(9)$GEvent$Chr(9)$out$Chr(9)$geDesc ); //"GSpecial" } L5//============================================================================= // GameRules. // // The GameRules class handles game rule modifications for the GameInfo such as scoring, // finding player starts, and damage modification. // //============================================================================= class GameRules extends Info; var GameRules NextGameRules; function AddGameRules(GameRules GR) { if ( NextGameRules == None ) NextGameRules = GR; else NextGameRules.AddGameRules(GR); } /* Override GameInfo FindPlayerStart() - called by GameInfo.FindPlayerStart() if a NavigationPoint is returned, it will be used as the playerstart */ function NavigationPoint FindPlayerStart( Controller Player, optional byte InTeam, optional string incomingName ) { if ( NextGameRules != None ) return NextGameRules.FindPlayerStart(Player,InTeam,incomingName); return None; } /* return string containing game rules information */ function string GetRules() { local string ResultSet; if ( NextGameRules == None ) ResultSet = ResultSet$NextGameRules.GetRules(); return ResultSet; } // // Restart the game. // function bool HandleRestartGame() { if ( (NextGameRules != None) && NextGameRules.HandleRestartGame() ) return true; return false; } /* CheckEndGame() Allows modification of game ending conditions. Return false to prevent game from ending */ function bool CheckEndGame(PlayerReplicationInfo Winner, string Reason) { if ( NextGameRules != None ) return NextGameRules.CheckEndGame(Winner,Reason); return true; } /* CheckScore() see if this score means the game ends return true to override gameinfo checkscore, or if game was ended (with a call to Level.Game.EndGame() ) */ function bool CheckScore(PlayerReplicationInfo Scorer) { if ( NextGameRules != None ) return NextGameRules.CheckScore(Scorer); return false; } /* OverridePickupQuery() when pawn wants to pickup something, gamerules given a chance to modify it. If this function returns true, bAllowPickup will determine if the object can be picked up. */ function bool OverridePickupQuery(Pawn Other, Pickup item, out byte bAllowPickup) { if ( (NextGameRules != None) && NextGameRules.OverridePickupQuery(Other, item, bAllowPickup) ) return true; return false; } function bool PreventDeath(Pawn Killed, Controller Killer, class damageType, vector HitLocation) { if ( (NextGameRules != None) && NextGameRules.PreventDeath(Killed,Killer, damageType,HitLocation) ) return true; return false; } function ScoreObjective(PlayerReplicationInfo Scorer, Int Score) { if ( NextGameRules != None ) NextGameRules.ScoreObjective(Scorer,Score); } function ScoreKill(Controller Killer, Controller Killed) { if ( NextGameRules != None ) NextGameRules.ScoreKill(Killer,Killed); } function bool CriticalPlayer(Controller Other) { if ( (NextGameRules != None) && (NextGameRules.CriticalPlayer(Other)) ) return true; return false; } function int NetDamage( int OriginalDamage, int Damage, pawn injured, pawn instigatedBy, vector HitLocation, vector Momentum, class DamageType ) { if ( NextGameRules != None ) return NextGameRules.NetDamage( OriginalDamage,Damage,injured,instigatedBy,HitLocation,Momentum,DamageType ); return Damage; } AN//============================================================================= // GameReplicationInfo. //============================================================================= class GameReplicationInfo extends ReplicationInfo native nativereplication; var string GameName; // Assigned by GameInfo. var string GameClass; // Assigned by GameInfo. var bool bTeamGame; // Assigned by GameInfo. var bool bStopCountDown; var bool bMatchHasBegun; var bool bTeamSymbolsUpdated; var int RemainingTime, ElapsedTime, RemainingMinute; var float SecondCount; var int GoalScore; var int TimeLimit; var int MaxLives; var TeamInfo Teams[2]; var() globalconfig string ServerName; // Name of the server, i.e.: Bob's Server. var() globalconfig string ShortName; // Abbreviated name of server, i.e.: B's Serv (stupid example) var() globalconfig string AdminName; // Name of the server admin. var() globalconfig string AdminEmail; // Email address of the server admin. var() globalconfig int ServerRegion; // Region of the game server. var() globalconfig string MOTDLine1; // Message var() globalconfig string MOTDLine2; // Of var() globalconfig string MOTDLine3; // The var() globalconfig string MOTDLine4; // Day var Actor Winner; // set by gameinfo when game ends var() array PRIArray; var vector FlagPos; // replicated 2D position of one object enum ECarriedObjectState { COS_Home, COS_HeldFriendly, COS_HeldEnemy, COS_Down, }; var ECarriedObjectState CarriedObjectState[2]; // stats var int MatchID; replication { reliable if ( bNetDirty && (Role == ROLE_Authority) ) RemainingMinute, bStopCountDown, Winner, Teams, FlagPos, CarriedObjectState, bMatchHasBegun, MatchID; reliable if ( bNetInitial && (Role==ROLE_Authority) ) GameName, GameClass, bTeamGame, RemainingTime, ElapsedTime,MOTDLine1, MOTDLine2, MOTDLine3, MOTDLine4, ServerName, ShortName, AdminName, AdminEmail, ServerRegion, GoalScore, MaxLives, TimeLimit; } simulated function SetCarriedObjectState(int Team, name NewState) { switch( NewState ) { case 'Down': CarriedObjectState[Team] = COS_Down; break; case 'HeldEnemy ': CarriedObjectState[Team] = COS_HeldEnemy; break; case 'Home ': CarriedObjectState[Team] = COS_Home; break; case 'HeldFriendly ': CarriedObjectState[Team] = COS_HeldFriendly; break; } } simulated function name GetCarriedObjectState(int Team) { switch( CarriedObjectState[Team] ) { case COS_Down: return 'Down'; case COS_HeldEnemy: return 'HeldEnemy'; case COS_Home: return 'Home'; case COS_HeldFriendly: return 'HeldFriendly'; } return ''; } simulated function PostNetBeginPlay() { local PlayerReplicationInfo PRI; ForEach DynamicActors(class'PlayerReplicationInfo',PRI) AddPRI(PRI); if ( Level.NetMode == NM_Client ) TeamSymbolNotify(); } simulated function TeamSymbolNotify() { local Actor A; if ( (Teams[0] == None) || (Teams[1] == None) || (Teams[0].TeamIcon == None) || (Teams[1].TeamIcon == None) ) return; bTeamSymbolsUpdated = true; ForEach AllActors(class'Actor', A) A.SetGRI(self); } simulated function PostBeginPlay() { if( Level.NetMode == NM_Client ) { // clear variables so we don't display our own values if the server has them left blank ServerName = ""; AdminName = ""; AdminEmail = ""; MOTDLine1 = ""; MOTDLine2 = ""; MOTDLine3 = ""; MOTDLine4 = ""; } SecondCount = Level.TimeSeconds; SetTimer(1, true); } /* Reset() reset actor to initial state - used when restarting level without reloading. */ function Reset() { Super.Reset(); Winner = None; } simulated function Timer() { if ( Level.NetMode == NM_Client ) { if (Level.TimeSeconds - SecondCount >= Level.TimeDilation) { ElapsedTime++; if ( RemainingMinute != 0 ) { RemainingTime = RemainingMinute; RemainingMinute = 0; } if ( (RemainingTime > 0) && !bStopCountDown ) RemainingTime--; SecondCount += Level.TimeDilation; } if ( !bTeamSymbolsUpdated ) TeamSymbolNotify(); } } simulated function AddPRI(PlayerReplicationInfo PRI) { PRIArray[PRIArray.Length] = PRI; } simulated function RemovePRI(PlayerReplicationInfo PRI) { local int i; for (i=0; i pris) { local int i; local int num; pris.Remove(0, pris.Length); for (i=0; i to use for scoreboards. (gam) var string BotMenuType; // Type of bot menu to display. var string RulesMenuType; // Type of rules menu to display. var string SettingsMenuType; // Type of settings menu to display. var string GameUMenuType; // Type of Game dropdown to display. var string MultiplayerUMenuType; // Type of Multiplayer dropdown to display. var string GameOptionsMenuType; // Type of options dropdown to display. var string HUDType; // HUD class this game uses. var string MapListType; // Maplist this game uses. var string MapPrefix; // Prefix characters for names of maps for this game type. var string BeaconName; // Identifying string used for finding LAN servers. var globalconfig int MaxSpectators; // Maximum number of spectators. var int NumSpectators; // Current number of spectators. var globalconfig int MaxPlayers; var int NumPlayers; // number of human players var int NumBots; // number of non-human players (AI controlled but participating as a player) var int CurrentID; var localized string DefaultPlayerName; var localized string GameName; var float FearCostFallOff; // how fast the FearCost in NavigationPoints falls off var config int GoalScore; // what score is needed to end the match var config int MaxLives; // max number of lives for match, unless overruled by level's GameDetails var config int TimeLimit; // time limit in minutes // Message classes. var class DeathMessageClass; var class GameMessageClass; var name OtherMesgGroup; //------------------------------------- // GameInfo components var string MutatorClass; var Mutator BaseMutator; // linked list of Mutators (for modifying actors as they enter the game) var globalconfig string AccessControlClass; var AccessControl AccessControl; // AccessControl controls whether players can enter and/or become admins var GameRules GameRulesModifiers; // linked list of modifier classes which affect game rules var string BroadcastHandlerClass; var BroadcastHandler BroadcastHandler; // handles message (text and localized) broadcasts var class PlayerControllerClass; // type of player controller to spawn for players logging in var string PlayerControllerClassName; // ReplicationInfo var() class GameReplicationInfoClass; var GameReplicationInfo GameReplicationInfo; var bool bWelcomePending; // Stats - jmw var GameStats GameStats; // Holds the GameStats actor var class GameStatsClass; // Type of GameStats actor to spawn // Voice chat struct VoiceChatterInfo { var controller Controller; var int IpAddr; var int Handle; }; var array VoiceChatters; // Cheat Protection var class SecurityClass; var() String ScreenShotName; var() String DecoTextName; var() String Acronym; // localized PlayInfo descriptions & extra info var private localized string GIPropsDisplayText[11]; var private localized string GIPropsExtras[2]; //------------------------------------------------------------------------------ // Engine notifications. function PreBeginPlay() { StartTime = 0; SetGameSpeed(GameSpeed); GameReplicationInfo = Spawn(GameReplicationInfoClass); InitGameReplicationInfo(); // Create stat logging actor. InitLogging(); } function UpdatePrecacheMaterials() { PrecacheGameTextures(Level); } function UpdatePrecacheStaticMeshes() { PrecacheGameStaticMeshes(Level); } static function PrecacheGameTextures(LevelInfo myLevel); static function PrecacheGameStaticMeshes(LevelInfo myLevel); function string FindPlayerByID( int PlayerID ) { local int i; for( i=0; i 0) ); } function PostBeginPlay() { if (GameStats!=None) { GameStats.NewGame(); GameStats.ServerInfo(); } } /* Reset() reset actor to initial state - used when restarting level without reloading. */ function Reset() { Super.Reset(); bGameEnded = false; bOverTime = false; bWaitingToStartMatch = true; InitGameReplicationInfo(); } /* InitLogging() Set up statistics logging */ function InitLogging() { if ( !bEnableStatLogging || !bLoggingGame || (Level.NetMode == NM_Standalone) || (Level.NetMode == NM_ListenServer) ) return; GameStats = spawn(GameStatsClass); } function Timer() { local NavigationPoint N; local int i; // If we are a server, broadcast a welcome message. if( bWelcomePending ) { bWelcomePending = false; if ( Level.NetMode != NM_Standalone ) { for ( i=0; i=0); return int(Mid(S,i+1)); } function bool SetPause( BOOL bPause, PlayerController P ) { if( bPauseable || P.IsA('Admin') || P.PlayerReplicationInfo.bAdmin || Level.Netmode==NM_Standalone ) { if( bPause ) Level.Pauser=P.PlayerReplicationInfo; else Level.Pauser=None; return True; } else return False; } //------------------------------------------------------------------------------ // Voice chat. function ChangeVoiceChatter( Controller Client, int IpAddr, int Handle, bool Add ) { local int Index; local PlayerController P; if( Add ) { Index = VoiceChatters.length; VoiceChatters.Insert(Index,1); VoiceChatters[Index].Controller = Client; VoiceChatters[Index].IpAddr = IpAddr; VoiceChatters[Index].Handle = Handle; } else { for( Index=0; Index=0 ) Result = Left( Result, InStr(Result,"?") ); // Update options. Options = Mid(Options,1); if( InStr(Options,"?")>=0 ) Options = Mid( Options, InStr(Options,"?") ); else Options = ""; return true; } else return false; } // // Break up a key=value pair into its key and value. // function GetKeyValue( string Pair, out string Key, out string Value ) { if( InStr(Pair,"=")>=0 ) { Key = Left(Pair,InStr(Pair,"=")); Value = Mid(Pair,InStr(Pair,"=")+1); } else { Key = Pair; Value = ""; } } /* ParseOption() Find an option in the options string and return it. */ function string ParseOption( string Options, string InKey ) { local string Pair, Key, Value; while( GrabOption( Options, Pair ) ) { GetKeyValue( Pair, Key, Value ); if( Key ~= InKey ) return Value; } return ""; } /* Initialize the game. The GameInfo's InitGame() function is called before any other scripts (including PreBeginPlay() ), and is used by the GameInfo to initialize parameters and spawn its helper classes. Warning: this is called before actors' PreBeginPlay. */ event InitGame( string Options, out string Error ) { local string InOpt, LeftOpt; local int pos; local class ACClass; local class GRClass; local class BHClass; log( "InitGame:" @ Options ); MaxPlayers = Clamp(GetIntOption( Options, "MaxPlayers", MaxPlayers ),0,32); GameDifficulty = FMax(0,GetIntOption(Options, "Difficulty", GameDifficulty)); InOpt = ParseOption( Options, "GameSpeed"); if( InOpt != "" ) { log("GameSpeed"@InOpt); SetGameSpeed(float(InOpt)); } AddMutator(MutatorClass); BHClass = class(DynamicLoadObject(BroadcastHandlerClass,Class'Class')); BroadcastHandler = spawn(BHClass); InOpt = ParseOption( Options, "AccessControl"); if( InOpt != "" ) ACClass = class(DynamicLoadObject(InOpt, class'Class')); if ( ACClass == None ) { ACClass = class(DynamicLoadObject(AccessControlClass, class'Class')); if (ACClass == None) ACClass = class'Engine.AccessControl'; } LeftOpt = ParseOption( Options, "AdminName" ); InOpt = ParseOption( Options, "AdminPassword"); if( LeftOpt!="" && InOpt!="" ) ACClass.default.bDontAddDefaultAdmin = true; AccessControl = Spawn(ACClass); //FIXME_MERGE if (AccessControl != None && LeftOpt!="" && InOpt!="" ) // AccessControl.SetAdminFromURL(LeftOpt, InOpt); InOpt = ParseOption( Options, "GameRules"); if ( InOpt != "" ) { log("Game Rules"@InOpt); while ( InOpt != "" ) { pos = InStr(InOpt,","); if ( pos > 0 ) { LeftOpt = Left(InOpt, pos); InOpt = Right(InOpt, Len(InOpt) - pos - 1); } else { LeftOpt = InOpt; InOpt = ""; } log("Add game rules "$LeftOpt); GRClass = class(DynamicLoadObject(LeftOpt, class'Class')); if ( GRClass != None ) { if ( GameRulesModifiers == None ) GameRulesModifiers = Spawn(GRClass); else GameRulesModifiers.AddGameRules(Spawn(GRClass)); } } } log("Base Mutator is "$BaseMutator); InOpt = ParseOption( Options, "Mutator"); if ( InOpt != "" ) { log("Mutators"@InOpt); while ( InOpt != "" ) { pos = InStr(InOpt,","); if ( pos > 0 ) { LeftOpt = Left(InOpt, pos); InOpt = Right(InOpt, Len(InOpt) - pos - 1); } else { LeftOpt = InOpt; InOpt = ""; } log("Add mutator "$LeftOpt); AddMutator(LeftOpt, true); } } InOpt = ParseOption( Options, "GamePassword"); if( InOpt != "" ) { AccessControl.SetGamePassWord(InOpt); log( "GamePassword" @ InOpt ); } InOpt = ParseOption( Options,"AllowThrowing"); if ( InOpt != "" ) bAllowWeaponThrowing = bool (InOpt); InOpt = ParseOption(Options, "GameStats"); if ( InOpt != "") bEnableStatLogging = bool(InOpt); else bEnableStatLogging = false; log("GameInfo::InitGame : bEnableStatLogging"@bEnableStatLogging); } function AddMutator(string mutname, optional bool bUserAdded) { local class mutClass; local Mutator mut; mutClass = class(DynamicLoadObject(mutname, class'Class')); if (mutClass == None) return; if ( (mutClass.Default.GroupName != "") && (BaseMutator != None) ) { // make sure no mutators with same groupname for ( mut=BaseMutator; mut!=None; mut=mut.NextMutator ) if ( mut.GroupName == mutClass.Default.GroupName ) return; } mut = Spawn(mutClass); // mc, beware of mut being none if (mut == None) return; // Meant to verify if this mutator was from Command Line parameters or added from other Actors mut.bUserAdded = bUserAdded; if (BaseMutator == None) BaseMutator = mut; else BaseMutator.AddMutator(mut); } // // Return beacon text for serverbeacon. // event string GetBeaconText() { return Level.ComputerName $ " " $ Left(Level.Title,24) $ "\\t" $ BeaconName $ "\\t" $ GetNumPlayers() $ "/" $ MaxPlayers; } /* ProcessServerTravel() Optional handling of ServerTravel for network games. */ function ProcessServerTravel( string URL, bool bItems ) { local playercontroller P, LocalPlayer; EndLogging("mapchange"); // Notify clients we're switching level and give them time to receive. // We call PreClientTravel directly on any local PlayerPawns (ie listen server) log("ProcessServerTravel:"@URL); foreach DynamicActors( class'PlayerController', P ) if( NetConnection( P.Player)!=None ) P.ClientTravel( URL, TRAVEL_Relative, bItems ); else { LocalPlayer = P; P.PreClientTravel(); } if ( (Level.NetMode == NM_ListenServer) && (LocalPlayer != None) ) Level.NextURL = Level.NextURL $"?Team="$LocalPlayer.GetDefaultURL("Team") $"?Name="$LocalPlayer.GetDefaultURL("Name") $"?Class="$LocalPlayer.GetDefaultURL("Class") $"?Character="$LocalPlayer.GetDefaultURL("Character"); // Switch immediately if not networking. if( Level.NetMode!=NM_DedicatedServer && Level.NetMode!=NM_ListenServer ) Level.NextSwitchCountdown = 0.0; } // // Accept or reject a player on the server. // Fails login if you set the Error to a non-empty string. // event PreLogin ( string Options, string Address, out string Error, out string FailCode ) { local bool bSpectator; bSpectator = ( ParseOption( Options, "SpectatorOnly" ) ~= "true" ); AccessControl.PreLogin(Options, Address, Error, FailCode, bSpectator); } function int GetIntOption( string Options, string ParseString, int CurrentValue) { local string InOpt; InOpt = ParseOption( Options, ParseString ); if ( InOpt != "" ) { log(ParseString@InOpt); return int(InOpt); } return CurrentValue; } function bool AtCapacity(bool bSpectator) { if ( Level.NetMode == NM_Standalone ) return false; if ( bSpectator ) return ( (NumSpectators >= MaxSpectators) && ((Level.NetMode != NM_ListenServer) || (NumPlayers > 0)) ); else return ( (MaxPlayers>0) && (NumPlayers>=MaxPlayers) ); } // // Log a player in. // Fails login if you set the Error string. // PreLogin is called before Login, but significant game time may pass before // Login is called, especially if content is downloaded. // event PlayerController Login ( string Portal, string Options, out string Error ) { local NavigationPoint StartSpot; local PlayerController NewPlayer; local Pawn TestPawn; local string InName, InAdminName, InPassword, InChecksum, InClass, InCharacter; local byte InTeam; local bool bSpectator, bAdmin; bSpectator = ( ParseOption( Options, "SpectatorOnly" ) ~= "true" ); //FIXME_MERGE bAdmin = AccessControl.CheckOptionsAdmin(Options); // Make sure there is capacity except for admins. (This might have changed since the PreLogin call). if ( !bAdmin && AtCapacity(bSpectator) ) { Error=GameMessageClass.Default.MaxedOutMessage; return None; } // If admin, force spectate mode if the server already full of reg. players if ( bAdmin && AtCapacity(false)) bSpectator = true; BaseMutator.ModifyLogin(Portal, Options); // Get URL options. InName = Left(ParseOption ( Options, "Name"), 20); InTeam = GetIntOption( Options, "Team", 255 ); // default to "no team" InAdminName= ParseOption ( Options, "AdminName"); InPassword = ParseOption ( Options, "Password" ); InChecksum = ParseOption ( Options, "Checksum" ); log( "Login:" @ InName ); if( InPassword != "" ) log( "Password"@InPassword ); // Pick a team (if need teams) InTeam = PickTeam(InTeam,None); // Find a start spot. StartSpot = FindPlayerStart( None, InTeam, Portal ); if( StartSpot == None ) { Error = GameMessageClass.Default.FailedPlaceMessage; return None; } if ( PlayerControllerClass == None ) //#ifdef __L2 Hunter PlayerControllerClass = class(DynamicLoadObject("ini:Engine.Engine.DefaultPlayerController", class'Class')); //#else //PlayerControllerClass = class(DynamicLoadObject(PlayerControllerClassName, class'Class')); //endif NewPlayer = spawn(PlayerControllerClass,,,StartSpot.Location,StartSpot.Rotation); // Handle spawn failure. if( NewPlayer == None ) { log("Couldn't spawn player controller of class "$PlayerControllerClass); Error = GameMessageClass.Default.FailedSpawnMessage; return None; } NewPlayer.StartSpot = StartSpot; // Init player's replication info NewPlayer.GameReplicationInfo = GameReplicationInfo; NewPlayer.GotoState('Spectating'); // Apply security to this controller NewPlayer.PlayerSecurity = spawn(SecurityClass,self); if (NewPlayer.PlayerSecurity==None) { log("Could not spawn security for player "$NewPlayer,'Security'); } if ( Level.NetMode == NM_Standalone ) NewPlayer.GotoState('AttractMode'); else NewPlayer.GotoState('Spectating'); // Init player's name if( InName=="" ) InName=DefaultPlayerName; if( Level.NetMode!=NM_Standalone || NewPlayer.PlayerReplicationInfo.PlayerName==DefaultPlayerName ) ChangeName( NewPlayer, InName, false ); if ( bSpectator || NewPlayer.PlayerReplicationInfo.bOnlySpectator ) { NewPlayer.PlayerReplicationInfo.bOnlySpectator = true; NewPlayer.PlayerReplicationInfo.bIsSpectator = true; NumSpectators++; return NewPlayer; } // Change player's team. if ( !ChangeTeam(newPlayer, InTeam, false) ) { Error = GameMessageClass.Default.FailedTeamMessage; return None; } newPlayer.StartSpot = StartSpot; // Init player's administrative privileges and log it /*FIXME_MERGE if (AccessControl.AdminLogin(NewPlayer, InAdminName, InPassword)) { AccessControl.AdminEntered(NewPlayer, InAdminName); } */ // Set the player's ID. NewPlayer.PlayerReplicationInfo.PlayerID = CurrentID++; InClass = ParseOption( Options, "Class" ); if (InClass == "") InClass = DefaultPlayerClassName; InCharacter = ParseOption(Options, "Character"); NewPlayer.SetPawnClass(InClass, InCharacter); NumPlayers++; bWelcomePending = true; // if delayed start, don't give a pawn to the player yet // Normal for multiplayer games if ( bDelayedStart ) { NewPlayer.GotoState('PlayerWaiting'); return NewPlayer; } // Try to match up to existing unoccupied player in level, // for savegames and coop level switching. ForEach DynamicActors(class'Pawn', TestPawn ) { if ( (TestPawn!=None) && (PlayerController(TestPawn.Controller)!=None) && (PlayerController(TestPawn.Controller).Player==None) && (TestPawn.Health > 0) && (TestPawn.OwnerName~=InName) ) { NewPlayer.Destroy(); TestPawn.SetRotation(TestPawn.Controller.Rotation); TestPawn.bInitializeAnimation = false; // FIXME - temporary workaround for lack of meshinstance serialization TestPawn.PlayWaiting(); return PlayerController(TestPawn.Controller); } } return newPlayer; } // __L2 kurt ¿©±â °íÃÄÁÖŒŒ¿ä L2NetLogin event PlayerController L2NetLogin ( string Portal, string Options, out string Error ) { local PlayerController NewPlayer; local NavigationPoint StartSpot; // local class DesiredPawnClass; local Pawn TestPawn; local string InName, InPassword, InChecksum, InClass; local byte InTeam; local bool bSpectator; bSpectator = ( ParseOption( Options, "SpectatorOnly" ) != "" ); // Make sure there is capacity. (This might have changed since the PreLogin call). if ( AtCapacity(bSpectator) ) { Error=GameMessageClass.Default.MaxedOutMessage; return None; } BaseMutator.ModifyLogin(Portal, Options); // Get URL options. InName = Left(ParseOption ( Options, "Name"), 20); InTeam = GetIntOption( Options, "Team", 255 ); // default to "no team" InPassword = ParseOption ( Options, "Password" ); InChecksum = ParseOption ( Options, "Checksum" ); // Pick a team (if need teams) InTeam = PickTeam(InTeam, None); // Find a start spot. StartSpot = FindPlayerStart( None, InTeam, Portal ); if( StartSpot == None ) { Error = GameMessageClass.Default.FailedPlaceMessage; return None; } // Init player's administrative privileges if ( AccessControl.AdminLogin(NewPlayer, InPassword) ) { NewPlayer = spawn(AccessControl.AdminClass,,,StartSpot.Location,StartSpot.Rotation); bSpectator = true; } else { if ( PlayerControllerClass == None ) //#ifdef __L2 Hunter PlayerControllerClass = class(DynamicLoadObject("ini:Engine.Engine.DefaultPlayerController", class'Class')); //#else //PlayerControllerClass = class(DynamicLoadObject(PlayerControllerClassName, class'Class')); //endif NewPlayer = spawn(PlayerControllerClass,,,StartSpot.Location,StartSpot.Rotation); } // Handle spawn failure. if( NewPlayer == None ) { log("Couldn't spawn player controller of class "$PlayerControllerClass); Error = GameMessageClass.Default.FailedSpawnMessage; return None; } NewPlayer.StartSpot = StartSpot; // Init player's name if( InName=="" ) InName=DefaultPlayerName; if( Level.NetMode!=NM_Standalone || ( None != NewPlayer.PlayerReplicationInfo && NewPlayer.PlayerReplicationInfo.PlayerName==DefaultPlayerName ) ) ChangeName( NewPlayer, InName, false ); // Init player's replication info NewPlayer.GameReplicationInfo = GameReplicationInfo; NewPlayer.GotoState('Spectating'); if ( bSpectator ) { NewPlayer.PlayerReplicationInfo.bOnlySpectator = true; NumSpectators++; return NewPlayer; } // Set the player's ID. if( None != NewPlayer.PlayerReplicationInfo ) NewPlayer.PlayerReplicationInfo.PlayerID = CurrentID++; InClass = ParseOption( Options, "Class" ); /*if ( InClass != "" ) { DesiredPawnClass = class(DynamicLoadObject(InClass, class'Class')); if ( DesiredPawnClass != None ) NewPlayer.PawnClass = DesiredPawnClass; }*/ // If we are a server, broadcast a welcome message. if( Level.NetMode==NM_DedicatedServer || Level.NetMode==NM_ListenServer ) BroadcastLocalizedMessage(GameMessageClass, 1, NewPlayer.PlayerReplicationInfo); // if delayed start, don't give a pawn to the player yet // Normal for multiplayer games if ( bDelayedStart ) { NewPlayer.GotoState('PlayerWaiting'); return NewPlayer; } // Try to match up to existing unoccupied player in level, // for savegames and coop level switching. ForEach DynamicActors(class'Pawn', TestPawn ) { if ( (TestPawn!=None) && (PlayerController(TestPawn.Controller)!=None) && (PlayerController(TestPawn.Controller).Player==None) && (TestPawn.Health > 0) && (TestPawn.OwnerName~=InName) ) { TestPawn.Controller.Destroy(); NewPlayer.Possess(TestPawn); return NewPlayer; } } // start match, or let player enter, immediately bRestartLevel = false; // let player spawn once in levels that must be restarted after every death if ( bWaitingToStartMatch ) L2NetStartMatch(); else RestartPlayer(newPlayer); bRestartLevel = Default.bRestartLevel; return newPlayer; } /* StartMatch() Start the game - inform all actors that the match is starting, and spawn player pawns */ function StartMatch() { local Controller P; local Actor A; if (GameStats!=None) GameStats.StartGame(); // tell all actors the game is starting ForEach AllActors(class'Actor', A) A.MatchStarting(); // start human players first for ( P = Level.ControllerList; P!=None; P=P.nextController ) if ( P.IsA('PlayerController') && (P.Pawn == None) ) { if ( bGameEnded ) return; // telefrag ended the game with ridiculous frag limit else if ( PlayerController(P).CanRestartPlayer() ) RestartPlayer(P); } // start AI players for ( P = Level.ControllerList; P!=None; P=P.nextController ) if ( P.bIsPlayer && !P.IsA('PlayerController') ) { if ( Level.NetMode == NM_Standalone ) RestartPlayer(P); else P.GotoState('Dead','MPStart'); } bWaitingToStartMatch = false; GameReplicationInfo.bMatchHasBegun = true; } // __L2 Hunter function L2NetStartMatch() { local Controller P; local Actor A; if (GameStats!=None) GameStats.StartGame(); ForEach AllActors(class'Actor', A) A.MatchStarting(); // start players first for ( P = Level.ControllerList; P!=None; P=P.nextController ) if ( P.IsA('PlayerController') && (P.Pawn == None) ) { if ( bGameEnded ) return; // telefrag ended the game with ridiculous frag limit } for ( P = Level.ControllerList; P!=None; P=P.nextController ) if ( P.bIsPlayer && !P.IsA('PlayerController') ) RestartPlayer(P); bWaitingToStartMatch = false; } //Hunter End event SpawnDefaultPlayerPawn( Controller aPlayer ) { local NavigationPoint startSpot; local class DefaultPlayerClass; startSpot = FindPlayerStart(aPlayer, 255); if( startSpot == None ) { log(" Player start not found!!!"); return; } if ( aPlayer.PawnClass != None ) aPlayer.Pawn = Spawn(aPlayer.PawnClass,,,StartSpot.Location,StartSpot.Rotation); if( aPlayer.Pawn==None ) { DefaultPlayerClass = GetDefaultPlayerClass(aPlayer); aPlayer.Pawn = Spawn(DefaultPlayerClass,,,StartSpot.Location,StartSpot.Rotation); } if ( aPlayer.Pawn == None ) { log("Couldn't spawn player of type "$aPlayer.PawnClass$" at "$StartSpot); aPlayer.GotoState('Dead'); return; } aPlayer.Possess(aPlayer.Pawn); aPlayer.PawnClass = aPlayer.Pawn.Class; aPlayer.Pawn.PlayTeleportEffect(true, true); aPlayer.ClientSetRotation(aPlayer.Pawn.Rotation); AddDefaultInventory(aPlayer.Pawn); } // __L2 Hunter event SpawnPlayerPawn( Controller aPlayer, string PawnClassName, vector StartLocation, rotator StartRotation ) { // local bool foundStart; local int TeamNum; local class DefaultPlayerClass; //if( bRestartLevel && Level.NetMode!=NM_DedicatedServer && Level.NetMode!=NM_ListenServer ) // return; if ( (aPlayer.PlayerReplicationInfo == None) || (aPlayer.PlayerReplicationInfo.Team == None) ) TeamNum = 255; else TeamNum = aPlayer.PlayerReplicationInfo.Team.TeamIndex; if( aPlayer.Pawn==None ) { DefaultPlayerClass = class(DynamicLoadObject(PawnClassName, class'Class')); aPlayer.Pawn = Spawn(DefaultPlayerClass,,,StartLocation,StartRotation,true); } if ( aPlayer.Pawn == None ) { log("Couldn't spawn player of type"); aPlayer.GotoState('Dead'); return; } aPlayer.Possess(aPlayer.Pawn); aPlayer.PawnClass = aPlayer.Pawn.Class; //PlayTeleportEffect(aPlayer, true, true); aPlayer.PlayTeleportEffect(true, true); aPlayer.ClientSetRotation(aPlayer.Pawn.Rotation); AddDefaultInventory(aPlayer.Pawn); } //Hunter End // // Restart a player. // function RestartPlayer( Controller aPlayer ) { local NavigationPoint startSpot; local int TeamNum; local class DefaultPlayerClass; if( bRestartLevel && Level.NetMode!=NM_DedicatedServer && Level.NetMode!=NM_ListenServer ) return; if ( (aPlayer.PlayerReplicationInfo == None) || (aPlayer.PlayerReplicationInfo.Team == None) ) TeamNum = 255; else TeamNum = aPlayer.PlayerReplicationInfo.Team.TeamIndex; startSpot = FindPlayerStart(aPlayer, TeamNum); if( startSpot == None ) { log(" Player start not found!!!"); return; } if (aPlayer.PreviousPawnClass!=None && aPlayer.PawnClass != aPlayer.PreviousPawnClass) BaseMutator.PlayerChangedClass(aPlayer); if ( aPlayer.PawnClass != None ) aPlayer.Pawn = Spawn(aPlayer.PawnClass,,,StartSpot.Location,StartSpot.Rotation); if( aPlayer.Pawn==None ) { DefaultPlayerClass = GetDefaultPlayerClass(aPlayer); aPlayer.Pawn = Spawn(DefaultPlayerClass,,,StartSpot.Location,StartSpot.Rotation); } if ( aPlayer.Pawn == None ) { log("Couldn't spawn player of type "$aPlayer.PawnClass$" at "$StartSpot); aPlayer.GotoState('Dead'); return; } aPlayer.Pawn.Anchor = startSpot; aPlayer.Pawn.LastStartSpot = PlayerStart(startSpot); aPlayer.Pawn.LastStartTime = Level.TimeSeconds; aPlayer.PreviousPawnClass = aPlayer.Pawn.Class; aPlayer.Possess(aPlayer.Pawn); aPlayer.PawnClass = aPlayer.Pawn.Class; aPlayer.Pawn.PlayTeleportEffect(true, true); aPlayer.ClientSetRotation(aPlayer.Pawn.Rotation); AddDefaultInventory(aPlayer.Pawn); TriggerEvent( StartSpot.Event, StartSpot, aPlayer.Pawn); } function class GetDefaultPlayerClass(Controller C) { local PlayerController PC; local String PawnClassName; local class PawnClass; PC = PlayerController( C ); if( PC != None ) { PawnClassName = PC.GetDefaultURL( "Class" ); PawnClass = class( DynamicLoadObject( PawnClassName, class'Class') ); if( PawnClass != None ) return( PawnClass ); } return( class( DynamicLoadObject( DefaultPlayerClassName, class'Class' ) ) ); } // // Called after a successful login. This is the first place // it is safe to call replicated functions on the PlayerPawn. // event PostLogin( PlayerController NewPlayer ) { local class HudClass; local class ScoreboardClass; local String SongName; // Log player's login. if (GameStats!=None) { GameStats.ConnectEvent(NewPlayer.PlayerReplicationInfo); GameStats.GameEvent("NameChange",NewPlayer.PlayerReplicationInfo.playername,NewPlayer.PlayerReplicationInfo); } if ( !bDelayedStart ) { // start match, or let player enter, immediately bRestartLevel = false; // let player spawn once in levels that must be restarted after every death if ( bWaitingToStartMatch ) StartMatch(); else RestartPlayer(newPlayer); bRestartLevel = Default.bRestartLevel; } // Start player's music. SongName = Level.Song; if( SongName != "" && SongName != "None" ) NewPlayer.ClientSetMusic( SongName, MTRAN_Fade ); // tell client what hud and scoreboard to use if( HUDType != "" ) HudClass = class(DynamicLoadObject(HUDType, class'Class')); if( ScoreBoardType != "" ) ScoreboardClass = class(DynamicLoadObject(ScoreBoardType, class'Class')); NewPlayer.ClientSetHUD( HudClass, ScoreboardClass ); if ( NewPlayer.Pawn != None ) NewPlayer.Pawn.ClientSetRotation(NewPlayer.Pawn.Rotation); } event L2NetPostLogin( PlayerController NewPlayer ) { if ( !bDelayedStart ) { // start match, or let player enter, immediately bRestartLevel = false; // let player spawn once in levels that must be restarted after every death if ( bWaitingToStartMatch ) L2NetStartMatch(); bRestartLevel = Default.bRestartLevel; } // Start player's music. NewPlayer.ClientSetMusic( Level.Song, MTRAN_Fade ); if ( NewPlayer.Pawn != None ) NewPlayer.Pawn.ClientSetRotation(NewPlayer.Pawn.Rotation); } // // Player exits. // function Logout( Controller Exiting ) { local bool bMessage; local int Index; bMessage = true; if ( PlayerController(Exiting) != None ) { //FIXME_MERGE if ( AccessControl.AdminLogout( PlayerController(Exiting) ) ) // AccessControl.AdminExited( PlayerController(Exiting) ); if ( PlayerController(Exiting).PlayerReplicationInfo.bOnlySpectator ) { bMessage = false; NumSpectators--; } else { NumPlayers--; } if( Level.NetMode != NM_Standalone ) { for( Index=0; Index WeapClass; local Inventory Inv; // Spawn default weapon. WeapClass = BaseMutator.GetDefaultWeapon(); if( (WeapClass!=None) && (p.FindInventoryType(WeapClass)==None) ) { newWeapon = Spawn(WeapClass,,,p.Location); if( newWeapon != None ) { Inv = None; // search pawn's inventory for a bCanThrowWeapon==false, if we find one, don't call Bringup for( Inv=Inventory; Inv!=None; Inv=Inv.Inventory ) { if ( Inv.IsA('Weapon') && Weapon(Inv).bCanThrow==false ) break; } newWeapon.GiveTo(p); newWeapon.bCanThrow = false; // don't allow default weapon to be thrown out } } } // // Spawn any default inventory for the player. // function AddDefaultInventory( pawn PlayerPawn ) { local Weapon newWeapon; local class WeapClass; // Spawn default weapon. WeapClass = BaseMutator.GetDefaultWeapon(); if( (WeapClass!=None) && (PlayerPawn.FindInventoryType(WeapClass)==None) ) { newWeapon = Spawn(WeapClass,,,PlayerPawn.Location); if( newWeapon != None ) { newWeapon.GiveTo(PlayerPawn); //newWeapon.BringUp(); newWeapon.bCanThrow = false; // don't allow default weapon to be thrown out } } SetPlayerDefaults(PlayerPawn); } /* SetPlayerDefaults() first make sure pawn properties are back to default, then give mutators an opportunity to modify them */ function SetPlayerDefaults(Pawn PlayerPawn) { PlayerPawn.AirControl = PlayerPawn.Default.AirControl; PlayerPawn.GroundSpeed = PlayerPawn.Default.GroundSpeed; PlayerPawn.WaterSpeed = PlayerPawn.Default.WaterSpeed; PlayerPawn.AirSpeed = PlayerPawn.Default.AirSpeed; PlayerPawn.Acceleration = PlayerPawn.Default.Acceleration; PlayerPawn.JumpZ = PlayerPawn.Default.JumpZ; BaseMutator.ModifyPlayer(PlayerPawn); } function NotifyKilled(Controller Killer, Controller Killed, Pawn KilledPawn ) { } function Killed( Controller Killer, Controller Killed, Pawn KilledPawn, class damageType ) { if ( (Killed != None) && Killed.bIsPlayer ) { Killed.PlayerReplicationInfo.Deaths += 1; BroadcastDeathMessage(Killer, Killed, damageType); if (GameStats!=None) { if ( (Killer == Killed) || (Killer == None) ) { if ( Killer == None ) GameStats.KillEvent("K", None, Killed.PlayerReplicationInfo, DamageType); //"Kill" else GameStats.KillEvent("K", Killer.PlayerReplicationInfo, Killed.PlayerReplicationInfo, DamageType); //"Kill" } else { if ( bTeamGame && Killer.PlayerReplicationInfo.Team == Killed.PlayerReplicationInfo.Team ) GameStats.KillEvent("TK", Killer.PlayerReplicationInfo, Killed.PlayerReplicationInfo, DamageType); //"Teamkill" else GameStats.KillEvent("K", Killer.PlayerReplicationInfo, Killed.PlayerReplicationInfo, DamageType); //"Kill" } } } if ( Killed != None ) ScoreKill(Killer, Killed); DiscardInventory(KilledPawn); NotifyKilled(Killer,Killed,KilledPawn); } function bool PreventDeath(Pawn Killed, Controller Killer, class damageType, vector HitLocation) { if ( GameRulesModifiers == None ) return false; return GameRulesModifiers.PreventDeath(Killed,Killer, damageType,HitLocation); } function BroadcastDeathMessage(Controller Killer, Controller Other, class damageType) { if ( (Killer == Other) || (Killer == None) ) BroadcastLocalized(self,DeathMessageClass, 1, None, Other.PlayerReplicationInfo, damageType); else BroadcastLocalized(self,DeathMessageClass, 0, Killer.PlayerReplicationInfo, Other.PlayerReplicationInfo, damageType); } // %k = Owner's PlayerName (Killer) // %o = Other's PlayerName (Victim) // %w = Owner's Weapon ItemName static native function string ParseKillMessage( string KillerName, string VictimName, string DeathMessage ); function Kick( string S ) { AccessControl.Kick(S); } function KickBan( string S ) { AccessControl.KickBan(S); } function bool IsOnTeam(Controller Other, int TeamNum) { if ( bTeamGame && (Other != None) && Other.bIsPlayer && (Other.PlayerReplicationInfo.Team != None) && (Other.PlayerReplicationInfo.Team.TeamIndex == TeamNum) ) return true; return false; } //------------------------------------------------------------------------------------- // Level gameplay modification. // // Return whether Viewer is allowed to spectate from the // point of view of ViewTarget. // function bool CanSpectate( PlayerController Viewer, bool bOnlySpectator, actor ViewTarget ) { return true; } /* Use reduce damage for teamplay modifications, etc. */ function int ReduceDamage( int Damage, pawn injured, pawn instigatedBy, vector HitLocation, vector Momentum, class DamageType ) { // 2006/07/27 Removed by NeverDie /* local int OriginalDamage; local armor FirstArmor; OriginalDamage = Damage; if( injured.PhysicsVolume.bNeutralZone ) Damage = 0; else if ( injured.InGodMode() ) // God mode return 0; else if ( (injured.Inventory != None) && (damage > 0) ) //then check if carrying armor { FirstArmor = injured.inventory.PrioritizeArmor(Damage, DamageType, HitLocation); while( (FirstArmor != None) && (Damage > 0) ) { Damage = FirstArmor.ArmorAbsorbDamage(Damage, DamageType, HitLocation); FirstArmor = FirstArmor.nextArmor; } } if ( GameRulesModifiers != None ) return GameRulesModifiers.NetDamage( OriginalDamage, Damage,injured,instigatedBy,HitLocation,Momentum,DamageType ); return Damage; */ return 0; } // // Return whether an item should respawn. // function bool ShouldRespawn( Pickup Other ) { if( Level.NetMode == NM_StandAlone ) return false; return Other.ReSpawnTime!=0.0; } /* Called when pawn has a chance to pick Item up (i.e. when the pawn touches a weapon pickup). Should return true if he wants to pick it up, false if he does not want it. */ function bool PickupQuery( Pawn Other, Pickup item ) { local byte bAllowPickup; if ( (GameRulesModifiers != None) && GameRulesModifiers.OverridePickupQuery(Other, item, bAllowPickup) ) return (bAllowPickup == 1); if ( Other.Inventory == None ) return true; else return !Other.Inventory.HandlePickupQuery(Item); } /* Discard a player's inventory after he dies. */ function DiscardInventory( Pawn Other ) { Other.Weapon = None; Other.SelectedItem = None; while ( Other.Inventory != None ) Other.Inventory.Destroy(); } /* Try to change a player's name. */ function ChangeName( Controller Other, coerce string S, bool bNameChange ) { local Controller C; if( S == "" ) return; Other.PlayerReplicationInfo.SetPlayerName(S); // notify local players if ( bNameChange ) for ( C=Level.ControllerList; C!=None; C=C.NextController ) if ( (PlayerController(C) != None) && (Viewport(PlayerController(C).Player) != None) ) PlayerController(C).ReceiveLocalizedMessage( class'GameMessage', 2, Other.PlayerReplicationInfo ); } /* Return whether a team change is allowed. */ function bool ChangeTeam(Controller Other, int N, bool bNewTeam) { return true; } /* Return a picked team number if none was specified */ function byte PickTeam(byte Current, Controller C) { return Current; } /* Send a player to a URL. */ function SendPlayer( PlayerController aPlayer, string URL ) { aPlayer.ClientTravel( URL, TRAVEL_Relative, true ); } /* Restart the game. */ function RestartGame() { local string NextMap; local MapList MyList; if ( (GameRulesModifiers != None) && GameRulesModifiers.HandleRestartGame() ) return; // these server travels should all be relative to the current URL if ( bChangeLevels && !bAlreadyChanged && (MapListType != "") ) { // open a the nextmap actor for this game type and get the next map bAlreadyChanged = true; MyList = GetMapList(MapListType); if (MyList != None) { NextMap = MyList.GetNextMap(); MyList.Destroy(); } if ( NextMap == "" ) NextMap = GetMapName(MapPrefix, NextMap,1); if ( NextMap != "" ) { Level.ServerTravel(NextMap, false); return; } } Level.ServerTravel( "?Restart", false ); } function MapList GetMapList(string MapListType) { local class MapListClass; if (MapListType != "") { MapListClass = class(DynamicLoadObject(MapListType, class'Class')); if (MapListClass != None) return Spawn(MapListClass); } return None; } //========================================================================== // Message broadcasting functions (handled by the BroadCastHandler) event Broadcast( Actor Sender, coerce string Msg, optional name Type ) { BroadcastHandler.Broadcast(Sender,Msg,Type); } function BroadcastTeam( Controller Sender, coerce string Msg, optional name Type ) { BroadcastHandler.BroadcastTeam(Sender,Msg,Type); } /* Broadcast a localized message to all players. Most message deal with 0 to 2 related PRIs. The LocalMessage class defines how the PRI's and optional actor are used. */ event BroadcastLocalized( actor Sender, class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { BroadcastHandler.AllowBroadcastLocalized(Sender,Message,Switch,RelatedPRI_1,RelatedPRI_2,OptionalObject); } //========================================================================== function bool CheckEndGame(PlayerReplicationInfo Winner, string Reason) { local Controller P; if ( (GameRulesModifiers != None) && !GameRulesModifiers.CheckEndGame(Winner, Reason) ) return false; // all player cameras focus on winner or final scene (picked by gamerules) for ( P=Level.ControllerList; P!=None; P=P.NextController ) { P.ClientGameEnded(); P.GameHasEnded(); } return true; } /* End of game. */ function EndGame( PlayerReplicationInfo Winner, string Reason ) { // don't end game if not really ready if ( !CheckEndGame(Winner, Reason) ) { bOverTime = true; return; } bGameEnded = true; TriggerEvent('EndGame', self, None); EndLogging(Reason); } function EndLogging(string Reason) { if (GameStats == None) return; GameStats.EndGame(Reason); GameStats.Destroy(); GameStats = None; } /* Return the 'best' player start for this player to start from. */ function NavigationPoint FindPlayerStart( Controller Player, optional byte InTeam, optional string incomingName ) { local NavigationPoint N, BestStart; local Teleporter Tel; local float BestRating, NewRating; local byte Team; // always pick StartSpot at start of match if ( (Player != None) && (Player.StartSpot != None) && (Level.NetMode == NM_Standalone) && (bWaitingToStartMatch || ((Player.PlayerReplicationInfo != None) && Player.PlayerReplicationInfo.bWaitingPlayer)) ) { return Player.StartSpot; } if ( GameRulesModifiers != None ) { N = GameRulesModifiers.FindPlayerStart(Player,InTeam,incomingName); if ( N != None ) return N; } // if incoming start is specified, then just use it if( incomingName!="" ) foreach AllActors( class 'Teleporter', Tel ) if( string(Tel.Tag)~=incomingName ) return Tel; // use InTeam if player doesn't have a team yet if ( (Player != None) && (Player.PlayerReplicationInfo != None) ) { if ( Player.PlayerReplicationInfo.Team != None ) Team = Player.PlayerReplicationInfo.Team.TeamIndex; else Team = 0; } else Team = InTeam; for ( N=Level.NavigationPointList; N!=None; N=N.NextNavigationPoint ) { NewRating = RatePlayerStart(N,InTeam,Player); if ( NewRating > BestRating ) { BestRating = NewRating; BestStart = N; } } if ( BestStart == None ) { log("Warning - PATHS NOT DEFINED or NO PLAYERSTART"); foreach AllActors( class 'NavigationPoint', N ) { NewRating = RatePlayerStart(N,0,Player); if ( NewRating > BestRating ) { BestRating = NewRating; BestStart = N; } } } return BestStart; } /* Rate whether player should choose this NavigationPoint as its start default implementation is for single player game */ function float RatePlayerStart(NavigationPoint N, byte Team, Controller Player) { local PlayerStart P; P = PlayerStart(N); if ( P != None ) { if ( P.bSinglePlayerStart ) { if ( P.bEnabled ) return 1000; return 20; } return 10; } return 0; } function ScoreObjective(PlayerReplicationInfo Scorer, Int Score) { if ( Scorer != None ) { Scorer.Score += Score; /* if ( Scorer.Team != None ) Scorer.Team.Score += Score; */ } if ( GameRulesModifiers != None ) GameRulesModifiers.ScoreObjective(Scorer,Score); CheckScore(Scorer); } /* CheckScore() see if this score means the game ends */ function CheckScore(PlayerReplicationInfo Scorer) { if ( (GameRulesModifiers != None) && GameRulesModifiers.CheckScore(Scorer) ) return; } function ScoreKill(Controller Killer, Controller Other) { if( (killer == Other) || (killer == None) ) { Other.PlayerReplicationInfo.Score -= 1; if (GameStats!=None) GameStats.ScoreEvent(Other.PlayerReplicationInfo,-1,"self_frag"); } else if ( killer.PlayerReplicationInfo != None ) { Killer.PlayerReplicationInfo.Score += 1; Killer.PlayerReplicationInfo.Kills++; if (GameStats!=None) GameStats.ScoreEvent(Killer.PlayerReplicationInfo,1,"frag"); } if ( GameRulesModifiers != None ) GameRulesModifiers.ScoreKill(Killer, Other); if ( (Killer != None) || (MaxLives > 0) ) CheckScore(Killer.PlayerReplicationInfo); } function bool TooManyBots() { return false; } static function string FindTeamDesignation(GameReplicationInfo GRI, actor A) // Should be subclassed in various team games { return ""; } // - Parse out % vars for various messages static function string ParseMessageString(Mutator BaseMutator, Controller Who, String Message) { return Message; } function ReviewJumpSpots(name TestLabel); function TeamInfo OtherTeam(TeamInfo Requester) { return None; } exec function KillBots(int num); exec function AdminSay(string Msg) { local controller C; for( C=Level.ControllerList; C!=None; C=C.nextController ) if( C.IsA('PlayerController') ) { PlayerController(C).ClearProgressMessages(); PlayerController(C).SetProgressTime(6); PlayerController(C).SetProgressMessage(0, Msg, class'Canvas'.Static.MakeColor(255,255,255)); } } D~V oYBG1²~x9?€~`x#E~`{# j3//============================================================================= // GameEngine: The game subsystem. // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class GameEngine extends Engine native noexport transient; // URL structure. struct URL { var string Protocol, // Protocol, i.e. "unreal" or "http". Host; // Optional hostname, i.e. "204.157.115.40" or "unreal.epicgames.com", blank if local. var int Port; // Optional host port. var string Map; // Map name, i.e. "SkyCity", default is "Index". var array Op; // Options. var string Portal; // Portal to enter through, default is "". var int Valid; }; var Level GLevel, GEntry; //#ifdef __L2 // gigadeth var Level GSkyLevel; //#endif var PendingLevel GPendingLevel; var URL LastURL; var config array ServerActors, ServerPackages; var array DummyArray; // Do not modify var object DummyObject; // Do not modify //#ifdef __L2 Hunter var int LastHitObject; var bool bClicked; var float ClickedMouseX, ClickedMouseY; var vector ClickLocation; var vector ClickRelativeLocation; // for Vehicle var plane ClickPlane; var Actor ClickActor; var int StartTempNpcID; var int EndTempNpcID; var int CurrentTempNpcID; var float AvgFPS; var float LastDeltaTime; var float LastDeltaSeconds[30]; var int CurTickIndex; var object pFontManager; // lpislhy //#endif //#ifdef __L2 // gigadeth var array LoadingMap; var array CommandMacro; var int LandMark; //#endif //#ifdef __L2 // zodiac var bool bUseUnderWaterEffect; var float FadeTime; var bool bFadeOut; var float FadeElaspedTime; var bool bFadeIn; var Color FadeColor; var int nFadeType; var bool bPlayerObserverMode; var vector TeleportLoc; // for use Teleport var actor TeleportTargetActor; //#ifdef __L2 // zodiac //var bool bTimeCheck; var int RequestedTime; var int ElapsedTimeCheck; var float MusicMaxTime; var float DefaultMusicMaxTime; // nonblock var float BlackOutDuration; var float FadeInTime; var bool bLazyMode; var int UnderWaterEffect; var bool bAttachedUnderWaterEffect; //#endif //#ifdef __L2 hunter var int InspectorCount; var int InspectorParams; var Class InspectorClass; //#ifdef __L2 hunter var array CameraEffects; //#endif //#ifdef __L2 // giga var int AuthData[4]; var bool bConnectionClosed; //ifdef __L2 // solasys var bool bAuthDataFlag; //Camera Effect var object DOFEffect; // yohan var object HDREffect; // NeverDie var object GlowEffect; // NeverDie var object MotionBlur; // jdh84 //#ifdef POSTEFFECT_EDIT var object YCbCrConversionEffect; //elsacred var object HSVConversionEffect; //elsacred var object RGBConversionEffect; //elsacred //endif //var float fElapsedTime; // flagoftiger var int pSceneManager; var bool bForceCurrentColorVariationColor; var Color ColorVariationColor; //#endif //#endif //#ifdef __L2 // yohan //var float fSkillHittime; //var float fSkillCurtime; //var bool bSkillHitting; //#endif FR-J wàBR-`{# MHv C|/Cžrv P*v P.¢¡v D ¢rv P*çpppWarning: 9VŸ Couldn't dynamically load font v Dv P  u2//============================================================================= // Fragment. //============================================================================= class Fragment extends Effects; var() MESH Fragments[11]; var int numFragmentTypes; var bool bFirstHit; var() sound ImpactSound, AltImpactSound; var() float SplashTime; function bool CanSplash() { if ( (Level.TimeSeconds - SplashTime > 0.25) && (Physics == PHYS_Falling) && (Abs(Velocity.Z) > 100) ) { SplashTime = Level.TimeSeconds; return true; } return false; } simulated function CalcVelocity(vector Momentum) { local float ExplosionSize; ExplosionSize = 0.011 * VSize(Momentum); Velocity = 0.0033 * Momentum + 0.7 * VRand()*(ExplosionSize+FRand()*100.0+100.0); Velocity.z += 0.5 * ExplosionSize; } simulated function HitWall (vector HitNormal, actor HitWall) { local float speed; Velocity = 0.5*(( Velocity dot HitNormal ) * HitNormal * (-2.0) + Velocity); // Reflect off Wall w/damping speed = VSize(Velocity); if (bFirstHit && speed<400) { bFirstHit=False; bRotatetoDesired=True; bFixedRotationDir=False; DesiredRotation.Pitch=0; DesiredRotation.Yaw=FRand()*65536; DesiredRotation.roll=0; } RotationRate.Yaw = RotationRate.Yaw*0.75; RotationRate.Roll = RotationRate.Roll*0.75; RotationRate.Pitch = RotationRate.Pitch*0.75; if ( (speed < 60) && (HitNormal.Z > 0.7) ) { SetPhysics(PHYS_none); bBounce = false; GoToState('Dying'); } else if (speed > 80) { if (FRand()<0.5) PlaySound(ImpactSound, SLOT_None,,, 300, 0.85+FRand()*0.3,true); else PlaySound(AltImpactSound, SLOT_None,,, 300, 0.85+FRand()*0.3,true); } } simulated final function RandSpin(float spinRate) { DesiredRotation = RotRand(); RotationRate.Yaw = spinRate * 2 *FRand() - spinRate; RotationRate.Pitch = spinRate * 2 *FRand() - spinRate; RotationRate.Roll = spinRate * 2 *FRand() - spinRate; } auto state Flying { simulated function timer() { GoToState('Dying'); } simulated singular function PhysicsVolumeChange( PhysicsVolume NewVolume ) { if ( NewVolume.bWaterVolume ) { Velocity = 0.2 * Velocity; if (bFirstHit) { bFirstHit=False; bRotatetoDesired=True; bFixedRotationDir=False; DesiredRotation.Pitch=0; DesiredRotation.Yaw=FRand()*65536; DesiredRotation.roll=0; } RotationRate = 0.2 * RotationRate; GotoState('Dying'); } } simulated function BeginState() { RandSpin(125000); if (abs(RotationRate.Pitch)<10000) RotationRate.Pitch=10000; if (abs(RotationRate.Roll)<10000) RotationRate.Roll=10000; LinkMesh(Fragments[int(FRand()*numFragmentTypes)]); if ( Level.NetMode == NM_Standalone ) LifeSpan = 20 + 40 * FRand(); SetTimer(5.0,True); } } state Dying { function TakeDamage( int Dam, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType) { Destroy(); } simulated function timer() { if ( !PlayerCanSeeMe() ) Destroy(); } simulated function BeginState() { SetTimer(1 + FRand(),True); SetCollision(true, false, false); } } €¢JF o$ˆ€DšŒrF P*F P.¢¡F D ¢ŒrF P*çpppWarning: 9V Couldn't dynamically load font F DF P i void UpdateOscillation( FLOAT DeltaTime ); virtual void PostEditChange(); virtual void Destroy(); €¢MKI –þEÂPf-,°Kx9?€¥PM°Kx9? ¥Pn°Kx9?¥P°Kx9?¥P°°Kx9?@¥PCù,P  ] #exec Texture Import File=Textures\S_FluidSurfOsc.pcx Name=S_FluidSurfOsc Mips=Off MASKED=1 //============================================================================= // FluidSurfaceOscillator. //============================================================================= class FluidSurfaceOscillator extends Actor native placeable; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // FluidSurface to oscillate var() edfindable FluidSurfaceInfo FluidInfo; var() float Frequency; var() byte Phase; var() float Strength; var() float Radius; var transient const float OscTime; P€¢vE#exec Texture Import File=Textures\S_FluidSurf.pcx Name=S_FluidSurf Mips=Off MASKED=1 class FluidSurfaceInfo extends Info showcategories(Movement,Collision,Lighting,LightColor,Karma,Force) native noexport placeable; var () enum EFluidGridType { FGT_Square, FGT_Hexagonal } FluidGridType; var () float FluidGridSpacing; // distance between grid points var () int FluidXSize; // num vertices in X direction var () int FluidYSize; // num vertices in Y direction var () float FluidHeightScale; // vertical scale factor var () float FluidSpeed; // wave speed var () float FluidDamping; // between 0 and 1 var () float FluidNoiseFrequency; var () range FluidNoiseStrength; var () bool TestRipple; var () float TestRippleSpeed; var () float TestRippleStrength; var () float TestRippleRadius; var () float UTiles; var () float UOffset; var () float VTiles; var () float VOffset; var () float AlphaCurveScale; var () float AlphaHeightScale; var () byte AlphaMax; var () float ShootStrength; // How hard to ripple water when shot var () float ShootRadius; // How large a radius is affected when water is shot // How much to ripple the water when interacting with actors var () float RippleVelocityFactor; var () float TouchStrength; // Class of effect spawned when water surface it shot or touched by an actor var () class ShootEffect; var () bool OrientShootEffect; var () class TouchEffect; var () bool OrientTouchEffect; // Bitmap indicating which water verts are 'clamped' ie. dont move var const array ClampBitmap; // Terrain used for auto-clamping water verts if below terrain level. var () edfindable TerrainInfo ClampTerrain; var () bool bShowBoundingBox; var () bool bUseNoRenderZ; var () float NoRenderZ; // Amount of time to simulate during postload before water is first displayed var () float WarmUpTime; // Rate at which fluid sim will be updated var () float UpdateRate; var () color FluidColor; // Sim storage var transient const array Verts0; var transient const array Verts1; var transient const array VertAlpha; var transient const int LatestVerts; var transient const box FluidBoundingBox; // Current world-space AABB var transient const vector FluidOrigin; // Current bottom-left corner var transient const float TimeRollover; //var transient const float AverageTimeStep; //var transient const int StepCount; var transient const float TestRippleAng; var transient const FluidSurfacePrimitive Primitive; var transient const array Oscillators; var transient const bool bHasWarmedUp; // Functions // Ripple water at a particlar location. // Ignores 'z' componenet of position. native final function Pling(vector Position, float Strength, optional float Radius); // Default behaviour when shot is to apply an impulse and kick the KActor. simulated function TakeDamage(int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType) { //Log("FS TakeDam:"$hitlocation@damageType); // Vibrate water at hit location. Pling(hitLocation, ShootStrength, ShootRadius); // If present, spawn splashy hit effect. if( (ShootEffect != None) && EffectIsRelevant(HitLocation,false) ) { if(OrientShootEffect) spawn(ShootEffect, self, , hitLocation, rotator(momentum)); else spawn(ShootEffect, self, , hitLocation); } } simulated function Touch(Actor Other) { local vector touchLocation; Super.Touch(Other); if( (Other == None) || !Other.bDisturbFluidSurface ) return; touchLocation = Other.Location; // Now projectiles affect water by Touch instead of TakeDamage, use ShootStrength here. //Log("FS Touch:"$ShootStrength@Other.CollisionRadius); //Pling(touchLocation, TouchStrength, Other.CollisionRadius); Pling(touchLocation, ShootStrength, Other.CollisionRadius); // JTODO: Fix for non-horizontal fluid touchLocation.Z = Location.Z; if( (TouchEffect != None) && EffectIsRelevant(touchLocation,false) ) { if(OrientTouchEffect) spawn(TouchEffect, self, , touchLocation, rotator(Other.Velocity)); else spawn(TouchEffect, self, , touchLocation); } } PP-m$š^GTS %I–S ,?²9?S M$P-xCS ¥S C,  Y V"S €¢Pclass FinalBlend extends Modifier showcategories(Material) native; enum EFrameBufferBlending { FB_Overwrite, FB_Modulate, FB_AlphaBlend, FB_AlphaModulate_MightNotFogCorrectly, FB_Translucent, FB_Darken, FB_Brighten, FB_Invisible, FB_Add, FB_InWaterBlend, FB_Capture, FB_OverwriteAlpha, FB_DarkenInv, }; var() EFrameBufferBlending FrameBufferBlending; var() bool ZWrite; var() bool ZTest; var() bool AlphaTest; var() bool TwoSided; var() byte AlphaRef; var() bool TreatAsTwoSided; TO-l$Ž=HPP %E–P ,;rCP O-Cú%“P ,¥P C,  d V"P €¢R // ==================================================================== // Class: Engine.FileLog // Parent: Engine.Info // // Creates a log device. // ==================================================================== class FileLog extends Info Native; // Internal var int LogAr; // FArchive* // File Names var string LogFileName; // File Manipulation native final function OpenLog(string FName); // No extension, .txt is auto appended native final function CloseLog(); native final function Logf( string LogString ); event Destroyed() { CloseLog(); } X]R ŒñHyrm*m.¢¡~# ¢yrm*çpppWarning: 9V Couldn't dynamically load font ~#m I)m €¢\_g$ÈXJ € ,class FellLava extends Fell abstract; N-kR#aa‚»ÅzQ# R# [Q#Ã-Q-A SÃwA *¬‚w.A *w.¬.A e*.A b C,R#A A TH ls m..class Fell extends DamageType abstract; zclass FailedConnect extends LocalMessage abstract; var localized string FailMessage[4]; static function int GetFailSwitch(string FailString) { if ( FailString ~= "NEEDPW" ) return 0; if ( FailString ~= "WRONGPW" ) return 1; if ( FailString ~="GAMESTARTED" ) return 2; return 3; } static function string GetString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { return Default.FailMessage[Clamp(Switch,0,3)]; } Z // // UConstantMaterial interface // virtual FColor GetColor(FLOAT TimeSeconds); iš[$šiclass FadeColor extends ConstantMaterial native editinlinenew; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) enum EColorFadeType { FC_Linear, FC_Sinusoidal, }; var() Color Color1; var() Color Color2; var() float FadePeriod; var() float FadePhase; var() EColorFadeType ColorFadeType; L‘Je UnºNJ*Jc*LwJ*Ja  yc]$B%i,(„w]$v*w.j]$*'( }class ExtraMeshData extends Object native; var Actor Owner; var Mesh ExtraMesh; var MeshInstance ExtraMeshInstance; var Material ExtraTex; var int ExtraBodyPart; €Zl`84Ÿñ r`* ï„`-S$‚`-A`-^†„Ù#`a/!0f`  -]±ÛØ `  9?%IâPÁº6“IC®«`>¯9?&P«`2P0-]žCáØ `  N¹CáØ `  b$ac$K- Ø Õ«Í̌?CI'£rb$`f`c$ïß-]f`Ø`  Õ`>Iïf`  "zclass EnvCreatureManagerInfo extends Info abstract placeable native; #exec Texture Import File=..\engine\Textures\Ambientcreatures.pcx Name=S_AmbCreature Mips=Off MASKED=1 C9//============================================================================= // Engine: The base class of the global application object classes. // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class Engine extends Subsystem native noexport transient; //#ifdef __L2 struct FWind { var float LifeTime; var Box Area; var vector Direction; var float Force; var float Speed; var float AccelSpeed; var float DeltaSeconds; }; //#endif // Drivers. var(Drivers) config class AudioDevice; var(Drivers) config class FlashDevice; var(Drivers) config class Console; // The default system console var(Drivers) config class DefaultMenu; // The default system menu var(Drivers) config class DefaultPlayerMenu; // The default player menu var(Drivers) config class NetworkDevice; var(Drivers) config class Language; // Variables. var primitive Cylinder; var const client Client; var const audiosubsystem Audio; var const flashsubsystem Flash; var const renderdevice GRenDev; // by nayuta __L2 var config class Network; var int bWaitNetCommand; // by zodiac var config class NConsoleClass; // by kurt var config class NTimer; //by solasys var config class OrcBabo; var int bOrcCheck; // Stats. var int bShowFrameRate; var int bShowRenderStats; var int bShowHardwareStats; var int bShowGameStats; var int bShowNetStats; var int bShowAnimStats; // Show animation statistics. var int bShowHistograph; var int bShowXboxMemStats; var int bShowMatineeStats; // Show Matinee specific information var int bShowAudioStats; var int bShowLightStats; // by kurt __L2 var int bShowL2Stats; // gigadeth var int bShowL2MemStats; var int bShowL2ServerPacketStats; // hunter var int bShowL2ServerExPacketStats; // idearain var int bShowL2ThreadStats; // gigadeth var int bShowScriptStats; // NeverDie var int bShowScenePlayerStats; var int TickCycles, GameCycles, ClientCycles; var(Settings) config int CacheSizeMegs; var(Settings) config bool UseSound; var(Settings) float CurrentTickRate; // __L2 Hunter var(Settings) float MaxTickRate; var(Settings) float MinTickRate; var(Settings) float AverageTickRate; var(Settings) int TotalFrame; var(Settings) int bHideCompass; var int bTurnOnCompass; // End Hunter // __L2 zodiac var int bShowConsoleTime; var int ConsoleDrawTime; var color DefaultWaterVolumeColor; var float DefaultWaterFogStart; var float DefaultWaterFogEnd; var int CurrentRealTimeShadowIndex; // end zodiac // #ifdef __L2 // idearain var bool bStopDraw; // #endif // Color preferences. var(Colors) config color C_WorldBox, C_GroundPlane, C_GroundHighlight, C_BrushWire, C_Pivot, C_Select, C_Current, C_AddWire, C_SubtractWire, C_GreyWire, C_BrushVertex, C_BrushSnap, C_Invalid, C_ActorWire, C_ActorHiWire, C_Black, C_White, C_Mask, C_SemiSolidWire, C_NonSolidWire, C_WireBackground, C_WireGridAxis, C_ActorArrow, C_ScaleBox, C_ScaleBoxHi, C_ZoneWire, C_Mover, C_OrthoBackground, C_StaticMesh, C_VolumeBrush, C_ConstraintLine, C_AnimMesh, C_TerrainWire; //#ifdef __L2 // gigadeth var int L2Fog; var int L2Sky; //#endif // __L2 yohan var int bNextTargetLock; // enb yohan //#ifdef __L2 // gigadeth var int ReplayManager; //#endif var array Wind; a//============================================================================= // The EmitterLight class. //============================================================================= class EmitterLight extends Light native; var(EmitterLight) enum EEmitterLightType { EEL_PawnOnly, EEL_WorldOnly, EEL_All, } EmitterLightType; F‘ ‰uK//============================================================================= // Emitter: An Unreal Emitter Actor. //============================================================================= class Emitter extends Actor native placeable; #exec Texture Import File=Textures\S_Emitter.pcx Name=S_Emitter Mips=Off MASKED=1 var() export editinline array Emitters; var transient array ExtraTickEmitters; var (Global) rangevector GlobalOffsetRange; var (Global) range TimeTillResetRange; var (Global) bool AutoDestroy; var (Global) bool AutoReset; var (Global) bool DisableFogging; //#ifdef __L2 //kurt var (Global) bool AutoReplay;//only editor var (Global) bool bRotEmitter; var (Global) bool FixedBoundingBox; var (Global) rotator RotPerSecond; var (Global) FLOAT FixedBoundingBoxExpand; var float SpeedRate;//for skillspeed rate var (SpawnSound) array SpawnSound; var (SpawnSound) float SoundRadius; var (SpawnSound) float SoundVolume; var (SpawnSound) float SoundPitchMin; var (SpawnSound) float SoundPitchMax; var (SpawnSound) bool SoundLooping; //Sound FadeOut, ttmayrin var (SpawnSound) float SoundFadeInDuration; var (SpawnSound) float SoundFadeOutStart; var (SpawnSound) float SoundFadeOutDuration; //#endif var transient bool ActorForcesEnabled; var transient bool UseParticleProjectors; var transient bool DeleteParticleEmitters; var transient bool bRendered; var transient int Initialized; var transient box BoundingBox; var transient float EmitterRadius; var transient float EmitterHeight; var transient vector GlobalOffset; var transient float TimeTillReset; //nonblock var transient float FixedLifeTime; //kurt var transient vector TrailerPrePivot; var transient bool FirstSpawnParticle; //emitter light var (EmitterLight) bool bUseLight; var (EmitterLight) byte LightType, LightEffect; var (EmitterLight) byte LightBrightness; var (EmitterLight) byte LightHue, LightSaturation; var (EmitterLight) byte EmitterLightingType; var (EmitterLight) float LightRadius; var (EmitterLight) float EL_LifeSpan; var (EmitterLight) float EL_InitialDelay; var transient emitterlight pEmitterLight; //emitter quake var (EmitterQuake) bool bUseQuake; var (EmitterQuake) byte ShakeType; var (EmitterQuake) float ShakeIntensity; var (EmitterQuake) vector ShakeVector; var (EmitterQuake) float ShakeRange; var (EmitterQuake) int ShakeCount; var (EmitterQuake) float ShakeTime; var (EmitterQuake) float EQ_InitialDelay; // by anima var (EmitterQuake) float ShakeScope; // ShakeÀÇ ¿µÇâ ¹üÀ§ var (EmitterQuake) float ShakeLiveTime; // Shake°¡ ÁøÇàµÇŽÂ œÃ°£ var (EmitterQuake) float ShakeStopTime; // Shake°¡ žØÃçÀÖŽÂ œÃ°£ // nonblock // render if the distance is within var (Global) range VisibleLimit; var (Global) float VisibilityInterpRange; // flagoftiger var (Global) bool bSetSizeScale; // anima - Only Use Enchant Effect var (Enchant) bool bSetMatrix; var (Enchant) vector EnchantOffset; var (Enchant) vector EnchantScale; var (Enchant) name EnchantBone; var (Enchant) Matrix EditorEnchantMatrix; // Enchant ¹ß±€ Emitter º¯È¯ Matrix - Editor¿¡Œ­žž »ç¿ë var (Global) bool bIsSkillEffectEmitter; // lpislhy - for parallel processing var bool bUpdate; var bool bAllDead; var bool bAllDisabled; var bool bActorForces; var bool bOnInitialDelay; // For halloween event - lancelot 2009. 10. 7 var transient float m_fLifeTime; var transient float m_fCurTime; //#ifdef__L2 //elsacred var() bool IsScreenEffect; // For Screen Filter on 2009.10.30 //#endif // For Ortho Render - jin 2009. 12. 07 var bool bOrthoRender; var float fOrthoCoordX; var float fOrthoCoordY; var bool bOrthoVisible; // shutdown the emitter and make it auto-destroy when the last active particle dies. native function Kill(); // idearain native final function SetSizeScale(float NewScale); simulated function UpdatePrecacheMaterials() { local int i; for( i=0; i Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { RepReceiveLocalizedMessage( Message, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject ); } //==== Called during demo playback ============================================ /* simulated function Tick(float Delta) { local PlayerController p; local GameReplicationInfo g; // find local playerpawn and attach. if(Level.NetMode == NM_Client) { if(PlaybackActor == None) { foreach DynamicActors(class'PlayerController', p) { if( p.Player.IsA('Viewport') ) { PlaybackActor = p; if(PlaybackGRI != None) PlaybackActor.GameReplicationInfo = PlaybackGRI; Log("Attached to player "$p); break; } } } if(PlaybackGRI == None) { foreach DynamicActors(class'GameReplicationInfo', g) { PlaybackGRI = g; if(PlaybackActor != None) PlaybackActor.GameReplicationInfo = PlaybackGRI; break; } } if(PlaybackActor != None && PlaybackGRI != None) Disable('Tick'); } else { Disable('Tick'); } } */ simulated function RepClientMessage( coerce string S, optional name Type ) { //if(PlaybackActor != None && PlaybackActor.Role == ROLE_Authority) // PlaybackActor.ClientMessage( S, Type ); } simulated function RepClientVoiceMessage(PlayerReplicationInfo Sender, PlayerReplicationInfo Recipient, name messagetype, byte messageID) { //if(PlaybackActor != None && PlaybackActor.Role == ROLE_Authority) // PlaybackActor.ClientVoiceMessage(Sender, Recipient, messagetype, messageID); } simulated function RepReceiveLocalizedMessage( class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { //if(PlaybackActor != None && PlaybackActor.Role == ROLE_Authority) // PlaybackActor.ReceiveLocalizedMessage( Message, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject ); } replication { reliable if ( bDemoRecording ) RepClientMessage, RepClientVoiceMessage, RepReceiveLocalizedMessage; } z|L|J*\ -N ÿÿÿÿÿÿÿÿÿÿ6}Í}~Vz÷ú‚F{J-`$h 9E=lX$Z$Y$J-7š9:9:$b€? T#€~A‘Qoî a B‘€‰€‰@‘U ^ t6t@a@6™V9D¯««U 9?,ÃU 6•V9D¯««U 9?,ÃU 6 V9D¯««U 9?,ÃU  m//============================================================================= // DefaultPhysicsVolume: the default physics volume for areas of the level with // no physics volume specified //============================================================================= class DefaultPhysicsVolume extends PhysicsVolume native notplaceable; function Destroyed() { log(self$" destroyed!"); assert(false); } C‘I-\$~UPW 99H-ÝW ®«ÛI- W ÍÌÌ>cž6“W N-W   m. ‰G.D“TVÚ W €‰~//============================================================================= // DecoVolumeObject. // // A class that allows staticmesh actors to get spawned inside of // deco volumes. These are the actors that you actually see in the level. //============================================================================= class DecoVolumeObject extends Actor native; i$\Ša //============================================================================= // DecorationList: Defines a list of decorations which can be attached to volumes //============================================================================= class DecorationList extends KeyPoint placeable native; #exec Texture Import File=Textures\DecorationList.pcx Name=S_DecorationList Mips=Off MASKED=1 struct DecorationType { var() StaticMesh StaticMesh; var() range Count; var() range DrawScale; var() int bAlign; var() int bRandomPitch; var() int bRandomYaw; var() int bRandomRoll; }; var(List) array Decorations; S‘ff H¹t9‚wJ*Jc fU#T#š9:T#&Rrf*'rf {U# WO//============================================================================= // Decoration. //============================================================================= class Decoration extends Actor abstract placeable native; // If set, the pyrotechnic or explosion when item is damaged. var() class EffectWhenDestroyed; var() bool bPushable; var() bool bDamageable; var bool bPushSoundPlaying; var bool bSplash; var() sound PushSound, EndPushSound; var const int numLandings; // Used by engine physics. var() class contents; // spawned when destroyed var() int NumFrags; // number of fragments to spawn when destroyed var() texture FragSkin; // skin to use for fragments var() class FragType; // type of fragment to use var vector FragMomentum; // momentum to be imparted to frags when destroyed var() int Health; var() float SplashTime; function bool CanSplash() { if ( (Level.TimeSeconds - SplashTime > 0.25) && (Physics == PHYS_Falling) && (Abs(Velocity.Z) > 100) ) { SplashTime = Level.TimeSeconds; return true; } return false; } function Drop(vector newVel); function Landed(vector HitNormal) { local rotator NewRot; if (Velocity.Z<-500) TakeDamage(100,Pawn(Owner),HitNormal,HitNormal*10000,class'Crushed'); Velocity = vect(0,0,0); NewRot = Rotation; NewRot.Pitch = 0; NewRot.Roll = 0; SetRotation(NewRot); } function HitWall (vector HitNormal, actor Wall) { Landed(HitNormal); } function TakeDamage( int NDamage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType) { Instigator = InstigatedBy; if (!bDamageable || (Health<0) ) Return; if ( Instigator != None ) MakeNoise(1.0); Health -= NDamage; FragMomentum = Momentum; if (Health <0) Destroy(); else { SetPhysics(PHYS_Falling); Momentum.Z = 1000; Velocity=Momentum/Mass; } } singular function PhysicsVolumeChange( PhysicsVolume NewVolume ) { if( NewVolume.bWaterVolume ) { if( bSplash && !PhysicsVolume.bWaterVolume && Mass<=Buoyancy && ((Abs(Velocity.Z) < 100) || (Mass == 0)) && (FRand() < 0.05) && !PlayerCanSeeMe() ) { bSplash = false; SetPhysics(PHYS_None); } } if( PhysicsVolume.bWaterVolume && (Buoyancy > Mass) ) { if( Buoyancy > 1.1 * Mass ) Buoyancy = 0.95 * Buoyancy; // waterlog else if( Buoyancy > 1.03 * Mass ) Buoyancy = 0.99 * Buoyancy; } } function Trigger( actor Other, pawn EventInstigator ) { Instigator = EventInstigator; TakeDamage( 1000, Instigator, Location, Vect(0,0,1)*900, class'Crushed'); } singular function BaseChange() { if( Velocity.Z < -500 ) TakeDamage( (1-Velocity.Z/30),Instigator,Location,vect(0,0,0) , class'Crushed'); if( base == None ) { if ( !bInterpolating && bPushable && (Physics == PHYS_None) ) SetPhysics(PHYS_Falling); } else if( Pawn(Base) != None ) { Base.TakeDamage( (1-Velocity.Z/400)* mass/Base.Mass,Instigator,Location,0.5 * Velocity , class'Crushed'); Velocity.Z = 100; if (FRand() < 0.5) Velocity.X += 70; else Velocity.Y += 70; SetPhysics(PHYS_Falling); } else if( Decoration(Base)!=None && Velocity.Z<-500 ) { Base.TakeDamage((1 - Mass/Base.Mass * Velocity.Z/30), Instigator, Location, 0.2 * Velocity, class'Crushed'); Velocity.Z = 100; if (FRand() < 0.5) Velocity.X += 70; else Velocity.Y += 70; SetPhysics(PHYS_Falling); } else instigator = None; } simulated function Destroyed() { local inventory dropped; local int i; local Fragment s; local float BaseSize; if ( Role == ROLE_Authority ) { if( (Contents!=None) && !Level.bStartup ) { dropped = Spawn(Contents); dropped.DropFrom(Location); } TriggerEvent( Event, Self, None); if ( bPushSoundPlaying ) PlaySound(EndPushSound, SLOT_Misc); } if ( (Level.NetMode != NM_DedicatedServer ) && !PhysicsVolume.bDestructive && (NumFrags > 0) && (FragType != None) ) { // spawn fragments BaseSize = 0.8 * sqrt(CollisionRadius*CollisionHeight)/NumFrags; for ( i=0; i 40) ) { oldZ = Velocity.Z; speed = VSize(Other.Velocity); Velocity = Other.Velocity * FMin(120.0, 20 + speed)/speed; if ( Physics == PHYS_None ) { Velocity.Z = 25; if (!bPushSoundPlaying) { PlaySound(PushSound, SLOT_Misc); bPushSoundPlaying = True; } } else Velocity.Z = oldZ; SetPhysics(PHYS_Falling); SetTimer(0.3,False); Instigator = Pawn(Other); } } .class Decal extends Actor; // DEPRECATED €N‘K*ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿP‘ƆÝQï--%‚l$ DamageEffect; // Special effect. var() string DamageWeaponName; // weapon that caused this damage var() bool bArmorStops; // does regular armor provide protection against this damage var() bool bInstantHit; // done by trace hit weapon var() bool bFastInstantHit; // done by fast repeating trace hit weapon var() bool bAlwaysGibs; var() bool bNoSpecificLocation; var() bool bSkeletize; // swap model to skeleton var() bool bCausesBlood; var() bool bKUseOwnDeathVel; // For ragdoll death. Rather than using default - use death velocity specified in this damage type. var() float GibModifier; // these effects should be none if should use the pawn's blood effects var() class PawnDamageEffect; // effect to spawn when pawns are damaged by this damagetype var() class PawnDamageEmitter; // effect to spawn when pawns are damaged by this damagetype var() array PawnDamageSounds; // Sound Effect to Play when Damage occurs var() class LowGoreDamageEffect; // effect to spawn when low gore var() class LowGoreDamageEmitter; // Emitter to use when it's low gore var() array LowGoreDamageSounds; // Sound Effects to play with Damage occurs with low gore var() class LowDetailEffect; // Low Detail effect var() class LowDetailEmitter; // Low Detail emitter var() float FlashScale; //for flashing victim's screen var() vector FlashFog; var() int DamageDesc; // Describes the damage var() int DamageThreshold; // How much damage much occur before playing effects var() vector DamageKick; var(Karma) float KDamageImpulse; // magnitude of impulse applied to KActor due to this damage type. var(Karma) float KDeathVel; // How fast ragdoll moves upon death var(Karma) float KDeathUpKick; // Amount of upwards kick ragdolls get when they die static function IncrementKills(Controller Killer); static function string DeathMessage(PlayerReplicationInfo Killer, PlayerReplicationInfo Victim) { return Default.DeathString; } static function string SuicideMessage(PlayerReplicationInfo Victim) { if ( Victim.bIsFemale ) return Default.FemaleSuicide; else return Default.MaleSuicide; } static function class GetPawnDamageEffect( vector HitLocation, float Damage, vector Momentum, Pawn Victim, bool bLowDetail ) { if ( class'GameInfo'.static.UseLowGore() ) { if ( Default.LowGoreDamageEffect != None ) return Default.LowGoreDamageEffect; else return Victim.LowGoreBlood; } else if ( bLowDetail ) { if ( Default.LowDetailEffect != None ) return Default.LowDetailEffect; else return Victim.BloodEffect; } else { if ( Default.PawnDamageEffect != None ) return Default.PawnDamageEffect; else return Victim.BloodEffect; } } static function class GetPawnDamageEmitter( vector HitLocation, float Damage, vector Momentum, Pawn Victim, bool bLowDetail ) { if ( class'GameInfo'.static.UseLowGore() ) { if ( Default.LowGoreDamageEmitter != None ) return Default.LowGoreDamageEmitter; else return none; } else if ( bLowDetail ) { if ( Default.LowDetailEffect != None ) return Default.LowDetailEmitter; else return none; } else { if ( Default.PawnDamageEmitter != None ) return Default.PawnDamageEmitter; else return none; } } static function Sound GetPawnDamageSound() { if ( class'GameInfo'.static.UseLowGore() ) { if (Default.LowGoreDamageSounds.Length>0) return Default.LowGoreDamageSounds[Rand(Default.LowGoreDamageSounds.Length)]; else return none; } else { if (Default.PawnDamageSounds.Length>0) return Default.PawnDamageSounds[Rand(Default.PawnDamageSounds.Length)]; else return none; } } static function bool IsOfType(int Description) { local int result; result = Description & Default.DamageDesc; return (result == Description); } static function string GetWeaponClass() { return ""; } class Cubemap extends Texture native noexport; var() Texture Faces[6]; var transient int CubemapRenderInterface; 1class Crushed extends DamageType abstract; cŽ//============================================================================= // Controller, the base class of players or AI. // // Controllers are non-physical actors that can be attached to a pawn to control // its actions. PlayerControllers are used by human players to control pawns, while // AIControFllers implement the artificial intelligence for the pawns they control. // Controllers take control of a pawn using their Possess() method, and relinquish // control of the pawn by calling UnPossess(). // // Controllers receive notifications for many of the events occuring for the Pawn they // are controlling. This gives the controller the opportunity to implement the behavior // in response to this event, intercepting the event and superceding the Pawn's default // behavior. // // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class Controller extends Actor native nativereplication abstract; var Pawn Pawn; var const int PlayerNum; // The player number - per-match player number. var float SightCounter; // Used to keep track of when to check player visibility var float FovAngle; // X field of view angle in degrees, usually 90. var globalconfig float Handedness; var bool bIsPlayer; // Pawn is a player or a player-bot. var bool bGodMode; // cheat - when true, can't be killed or hurt //AI flags var const bool bLOSflag; // used for alternating LineOfSight traces var bool bAdvancedTactics; // serpentine movement between pathnodes var bool bCanOpenDoors; var bool bCanDoSpecial; var bool bAdjusting; // adjusting around obstacle var bool bPreparingMove; // set true while pawn sets up for a latent move var bool bControlAnimations; // take control of animations from pawn (don't let pawn play animations based on notifications) var bool bEnemyInfoValid; // false when change enemy, true when LastSeenPos etc updated var bool bNotifyApex; // event NotifyJumpApex() when at apex of jump var bool bUsePlayerHearing; var bool bJumpOverWall; // true when jumping to clear obstacle var bool bEnemyAcquired; var bool bSoaking; // pause and focus on this bot if it encounters a problem var bool bHuntPlayer; // hunting player var bool bAllowedToTranslocate; var bool bAllowedToImpactJump; //#ifdef Hunter __L2 var bool bMoveLocationDone; var bool bDead; var bool bAutoAttacking; var bool bAttackIntend; var bool bMyController; //#ifdef __L2 // anima var bool bCharging; var bool bPrepareCharging; //#endif // Input buttons. var input byte bRun, bDuck, bFire, bAltFire; var vector AdjustLoc; // location to move to while adjusting around obstacle var const Controller nextController; // chained Controller list var float Stimulus; // Strength of stimulus - Set when stimulus happens // Navigation AI var float MoveTimer; var Actor MoveTarget; // actor being moved toward var vector Destination; // location being moved toward var vector FocalPoint; // location being looked at var Actor Focus; // actor being looked at //#ifdef __L2 // ttmayrin var bool bRelativeMove; // if true, update Destination by Relative variable. var vector DestinationRel; // Relative location being moved toward var Actor RelActor; // Relative Actor //#endif // 2006/07/26 Added private attribute - NeverDie var private int SelectedCreatureID; // Creature ID of the selected creature var private Actor SelectedActor; //ÇöÀç Œ±ÅÃµÈ Àû var array ReservedMovePoint; var Actor ReservedMoveActor; var float ReservedMoveDistance; enum PMoveType { PMT_SLOW, PMT_FAST }; enum PStopType { STP_SIT, STP_STAND, STP_FAKE_DEAD, STP_FAKE_DEAD_STAND, STP_CHAIR_SIT }; var PMoveType MoveType; var PStopType WaitType; //#endif var Mover PendingMover; // mover pawn is waiting for to complete its move var Actor GoalList[4]; // used by navigation AI - list of intermediate goals var NavigationPoint home; // set when begin play, used for retreating and attitude checks var float MinHitWall; // Minimum HitNormal dot Velocity.Normal to get a HitWall event from the physics var float RespawnPredictionTime; // how far ahead to predict respawns when looking for inventory var int AcquisitionYawRate; // Enemy information var Pawn Enemy; var Actor Target; var vector LastSeenPos; // enemy position when I last saw enemy (auto updated if EnemyNotVisible() enabled) var vector LastSeeingPos; // position where I last saw enemy (auto updated if EnemyNotVisible enabled) var float LastSeenTime; var string VoiceType; // for speech var float OldMessageTime; // to limit frequency of voice messages // Route Cache for Navigation var Actor RouteCache[16]; var ReachSpec CurrentPath; var vector CurrentPathDir; var Actor RouteGoal; //final destination for current route var float RouteDist; // total distance for current route var float LastRouteFind; // time at which last route finding occured // Replication Info var() class PlayerReplicationInfoClass; var PlayerReplicationInfo PlayerReplicationInfo; var class PawnClass; // class of pawn to spawn (for players) var class PreviousPawnClass; // Holds the player's previous class var float GroundPitchTime; var vector ViewX, ViewY, ViewZ; // Viewrotation encoding for PHYS_Spider var NavigationPoint StartSpot; // where player started the match // for monitoring the position of a pawn var vector MonitorStartLoc; // used by latent function MonitorPawn() var Pawn MonitoredPawn; // used by latent function MonitorPawn() var float MonitorMaxDistSq; var AvoidMarker FearSpots[2]; // avoid these spots when moving var const Actor LastFailedReach; // cache to avoid trying failed actorreachable more than once per frame var const float FailedReachTime; var const vector FailedReachLocation; var Weapon LastPawnWeapon; // used by game stats const LATENT_MOVETOWARD = 503; // LatentAction number for Movetoward() latent function replication { reliable if( bNetDirty && (Role==ROLE_Authority) ) PlayerReplicationInfo, Pawn; reliable if( bNetDirty && (Role== ROLE_Authority) && bNetOwner ) PawnClass; // Functions the server calls on the client side. reliable if( RemoteRole==ROLE_AutonomousProxy ) ClientGameEnded, ClientDying, ClientSetRotation, ClientSetLocation, ClientSwitchToBestWeapon, ClientSetWeapon; reliable if ( (!bDemoRecording || (bClientDemoRecording && bClientDemoNetFunc)) && Role == ROLE_Authority ) ClientVoiceMessage; // Functions the client calls on the server. unreliable if( Role GoalClass, optional bool bWeightDetours); native(525) final function NavigationPoint FindRandomDest(); native(523) final function vector EAdjustJump(float BaseZ, float XYSpeed); //Reachable returns whether direct path from Actor to aPoint is traversable //using the current locomotion method native(521) final function bool pointReachable(vector aPoint); native(520) final function bool actorReachable(actor anActor); /* PickWallAdjust() Check if could jump up over obstruction (only if there is a knee height obstruction) If so, start jump, and return current destination Else, try to step around - return a destination 90 degrees right or left depending on traces out and floor checks */ native(526) final function bool PickWallAdjust(vector HitNormal); /* WaitForLanding() latent function returns when pawn is on ground (no longer falling) */ native(527) final latent function WaitForLanding(); native(540) final function actor FindBestInventoryPath(out float MinWeight); native(529) final function AddController(); native(530) final function RemoveController(); // Pick best pawn target native(531) final function pawn PickTarget(out float bestAim, out float bestDist, vector FireDir, vector projStart, float MaxRange); native(534) final function actor PickAnyTarget(out float bestAim, out float bestDist, vector FireDir, vector projStart); native final function bool InLatentExecution(int LatentActionNumber); //returns true if controller currently performing latent action specified by LatentActionNumber // Force end to sleep native function StopWaiting(); native function EndClimbLadder(); event MayFall(); //return true if allowed to fall - called by engine when pawn is about to fall function PendingStasis() { bStasis = true; Pawn = None; } /* DisplayDebug() list important controller attributes on canvas */ function DisplayDebug(Canvas Canvas, out float YL, out float YPos) { if ( Pawn == None ) { Super.DisplayDebug(Canvas,YL,YPos); return; } Canvas.SetDrawColor(255,0,0); Canvas.DrawText("CONTROLLER "$GetItemName(string(self))$" Pawn "$GetItemName(string(Pawn))); YPos += YL; Canvas.SetPos(4,YPos); if ( Enemy != None ) Canvas.DrawText(" STATE: "$GetStateName()$" Timer: "$TimerCounter$" Enemy "$Enemy.GetHumanReadableName(), false); else Canvas.DrawText(" STATE: "$GetStateName()$" Timer: "$TimerCounter$" NO Enemy ", false); YPos += YL; Canvas.SetPos(4,YPos); if ( PlayerReplicationInfo == None ) Canvas.DrawText(" NO PLAYERREPLICATIONINFO", false); else PlayerReplicationInfo.DisplayDebug(Canvas,YL,YPos); YPos += YL; Canvas.SetPos(4,YPos); } simulated function String GetHumanReadableName() { if ( PlayerReplicationInfo != None ) return PlayerReplicationInfo.PlayerName; return GetItemName(String(self)); } function rotator GetViewRotation() { return Rotation; } /* Reset() reset actor to initial state */ function Reset() { Super.Reset(); Enemy = None; LastSeenTime = 0; StartSpot = None; } function bool AvoidCertainDeath() { return false; } /* ClientSetLocation() replicated function to set location and rotation. Allows server to force new location for teleports, etc. */ function ClientSetLocation( vector NewLocation, rotator NewRotation ) { SetRotation(NewRotation); If ( (Rotation.Pitch > RotationRate.Pitch) && (Rotation.Pitch < 65536 - RotationRate.Pitch) ) { If (Rotation.Pitch < 32768) NewRotation.Pitch = RotationRate.Pitch; else NewRotation.Pitch = 65536 - RotationRate.Pitch; } if ( Pawn != None ) { NewRotation.Roll = 0; Pawn.SetRotation( NewRotation ); Pawn.SetLocation( NewLocation ); } } /* ClientSetRotation() replicated function to set rotation. Allows server to force new rotation. */ function ClientSetRotation( rotator NewRotation ) { SetRotation(NewRotation); if ( Pawn != None ) { NewRotation.Pitch = 0; NewRotation.Roll = 0; Pawn.SetRotation( NewRotation ); } } function ClientDying(class DamageType, vector HitLocation) { if ( Pawn != None ) { Pawn.PlayDying(DamageType, HitLocation); Pawn.GotoState('Dying'); } } /* AIHearSound() Called when AI controlled pawn would hear a sound. Default AI implementation uses MakeNoise() interface for hearing appropriate sounds instead */ event AIHearSound ( actor Actor, int Id, sound S, vector SoundLocation, vector Parameters, bool Attenuate ); event SoakStop(string problem); function Possess(Pawn aPawn) { aPawn.PossessedBy(self); Pawn = aPawn; if ( PlayerReplicationInfo != None ) PlayerReplicationInfo.bIsFemale = Pawn.bIsFemale; // preserve Pawn's rotation initially for placed Pawns FocalPoint = Pawn.Location + 512*vector(Pawn.Rotation); Restart(); } function WasKilledBy(Controller Other); function Weapon GetLastWeapon() { if ( (Pawn == None) || (Pawn.Weapon == None) ) return LastPawnWeapon; return Pawn.Weapon; } /* PawnDied() unpossess a pawn (because pawn was killed) */ function PawnDied(Pawn P) { if ( Pawn != P ) return; if ( Pawn != None ) { SetLocation(Pawn.Location); Pawn.UnPossessed(); } Pawn = None; PendingMover = None; if ( bIsPlayer ) { if ( !IsInState('GameEnded') ) GotoState('Dead'); // can respawn } else Destroy(); } function Restart() { Enemy = None; } event LongFall(); // called when latent function WaitForLanding() doesn't return after 4 seconds // notifications of pawn events (from C++) // if return true, then pawn won't get notified event bool NotifyPhysicsVolumeChange(PhysicsVolume NewVolume); event bool NotifyHeadVolumeChange(PhysicsVolume NewVolume); event bool NotifyLanded(vector HitNormal); event bool NotifyHitWall(vector HitNormal, actor Wall); event bool NotifyBump(Actor Other); event NotifyHitMover(vector HitNormal, mover Wall); event NotifyJumpApex(); event NotifyMissedJump(); // notifications called by pawn in script function NotifyAddInventory(inventory NewItem); function NotifyTakeHit(pawn InstigatedBy, vector HitLocation, int Damage, class damageType, vector Momentum) { if ( (instigatedBy != None) && (instigatedBy != pawn) ) damageAttitudeTo(instigatedBy, Damage); } function SetFall(); //about to fall function PawnIsInPain(PhysicsVolume PainVolume); // called when pawn is taking pain volume damage event PreBeginPlay() { //#ifdef __L2 // hunter if ( IsA('LineagePlayerController') ) //#endif AddController(); Super.PreBeginPlay(); if ( bDeleteMe ) return; SightCounter = 0.2 * FRand(); //offset randomly } event PostBeginPlay() { Super.PostBeginPlay(); if ( bIsPlayer && (Role == ROLE_Authority) ) { PlayerReplicationInfo = Spawn(PlayerReplicationInfoClass, Self,,vect(0,0,0),rot(0,0,0)); InitPlayerReplicationInfo(); } } function InitPlayerReplicationInfo() { if (PlayerReplicationInfo.PlayerName == "") PlayerReplicationInfo.SetPlayerName(class'GameInfo'.Default.DefaultPlayerName); } function bool SameTeamAs(Controller C) { if ( (PlayerReplicationInfo == None) || (C.PlayerReplicationInfo == None) || (PlayerReplicationInfo.Team == None) ) return false; return Level.Game.IsOnTeam(C,PlayerReplicationInfo.Team.TeamIndex); } function HandlePickup(Pickup pick) { if ( MoveTarget == pick ) { if ( pick.MyMarker != None ) { MoveTarget = pick.MyMarker; Pawn.Anchor = pick.MyMarker; MoveTimer = 0.5; } else MoveTimer = -1.0; } } simulated event Destroyed() { if ( Role < ROLE_Authority ) { Super.Destroyed(); return; } RemoveController(); if ( bIsPlayer && (Level.Game != None) ) Level.Game.logout(self); if ( PlayerReplicationInfo != None ) { if ( !PlayerReplicationInfo.bOnlySpectator && (PlayerReplicationInfo.Team != None) ) PlayerReplicationInfo.Team.RemoveFromTeam(self); PlayerReplicationInfo.Destroy(); } Super.Destroyed(); } event bool AllowDetourTo(NavigationPoint N) { return true; } /* AdjustView() by default, check and see if pawn still needs to update eye height (only if some playercontroller still has pawn as its viewtarget) Overridden in playercontroller */ function AdjustView( float DeltaTime ) { local Controller C; for ( C=Level.ControllerList; C!=None; C=C.NextController ) if ( C.IsA('PlayerController') && (PlayerController(C).ViewTarget == Pawn) ) return; Pawn.bUpdateEyeHeight =false; Pawn.Eyeheight = Pawn.BaseEyeheight; } function bool WantsSmoothedView() { return ( (Pawn != None) && ((Pawn.Physics==PHYS_Walking) || (Pawn.Physics==PHYS_Spider)) && !Pawn.bJustLanded ); } function GameHasEnded() { if ( Pawn != None ) Pawn.bNoWeaponFiring = true; GotoState('GameEnded'); } function ClientGameEnded() { GotoState('GameEnded'); } simulated event RenderOverlays( canvas Canvas ); /* GetFacingDirection() returns direction faced relative to movement dir 0 = forward 16384 = right 32768 = back 49152 = left */ function int GetFacingDirection() { return 0; } //------------------------------------------------------------------------------ // Speech related function byte GetMessageIndex(name PhraseName) { return 0; } function SendMessage(PlayerReplicationInfo Recipient, name MessageType, byte MessageID, float Wait, name BroadcastType) { SendVoiceMessage(PlayerReplicationInfo, Recipient, MessageType, MessageID, BroadcastType); } function bool AllowVoiceMessage(name MessageType) { if ( Level.TimeSeconds - OldMessageTime < 10 ) return false; else OldMessageTime = Level.TimeSeconds; return true; } function SendVoiceMessage(PlayerReplicationInfo Sender, PlayerReplicationInfo Recipient, name messagetype, byte messageID, name broadcasttype) { local Controller P; if ( !AllowVoiceMessage(MessageType) ) return; for ( P=Level.ControllerList; P!=None; P=P.NextController ) { if ( PlayerController(P) != None ) { if ( (broadcasttype == 'GLOBAL') || !Level.Game.bTeamGame ) P.ClientVoiceMessage(Sender, Recipient, messagetype, messageID); else if ( Sender.Team == P.PlayerReplicationInfo.Team ) P.ClientVoiceMessage(Sender, Recipient, messagetype, messageID); } else if ( (messagetype == 'ORDER') && ((Recipient == None) || (Recipient == P.PlayerReplicationInfo)) ) P.BotVoiceMessage(messagetype, messageID, self); } } function ClientVoiceMessage(PlayerReplicationInfo Sender, PlayerReplicationInfo Recipient, name messagetype, byte messageID); function BotVoiceMessage(name messagetype, byte MessageID, Controller Sender); //*************************************************************** // interface used by ScriptedControllers to query pending controllers function bool WouldReactToNoise( float Loudness, Actor NoiseMaker) { return false; } function bool WouldReactToSeeing(Pawn Seen) { return false; } //*************************************************************** // AI related /* AdjustToss() return adjustment to Z component of aiming vector to compensate for arc given the target distance */ function vector AdjustToss(float TSpeed, vector Start, vector End, bool bNormalize) { local vector Dest2D, Result, Vel2D; local float Dist2D; if ( Start.Z > End.Z + 64 ) { Dest2D = End; Dest2D.Z = Start.Z; Dist2D = VSize(Dest2D - Start); TSpeed *= Dist2D/VSize(End - Start); Result = SuggestFallVelocity(Dest2D,Start,TSpeed,TSpeed); Vel2D = result; Vel2D.Z = 0; Result.Z = Result.Z + (End.Z - Start.Z) * VSize(Vel2D)/Dist2D; } else { Result = SuggestFallVelocity(End,Start,TSpeed,TSpeed); } if ( bNormalize ) return TSpeed * Normal(Result); else return Result; } event PrepareForMove(NavigationPoint Goal, ReachSpec Path); function WaitForMover(Mover M); function MoverFinished(); function UnderLift(Mover M); function FearThisSpot(AvoidMarker aSpot) { local int i; if ( Pawn == None ) return; if ( !LineOfSightTo(aSpot) ) return; for ( i=0; i<2; i++ ) if ( FearSpots[i] == None ) { FearSpots[i] = aSpot; return; } for ( i=0; i<2; i++ ) if ( VSize(Pawn.Location - FearSpots[i].Location) > VSize(Pawn.Location - aSpot.Location) ) { FearSpots[i] = aSpot; return; } } event float Desireability(Pickup P) { return P.BotDesireability(Pawn); } /* called before start of navigation network traversal to allow setup of transient navigation flags */ event SetupSpecialPathAbilities(); event HearNoise( float Loudness, Actor NoiseMaker); event SeePlayer( Pawn Seen ); // called when a player (bIsPlayer==true) pawn is seen event SeeMonster( Pawn Seen ); // called when a non-player (bIsPlayer==false) pawn is seen event EnemyNotVisible(); function ShakeView( float shaketime, float RollMag, vector OffsetMag, float RollRate, vector OffsetRate, float OffsetTime); function NotifyKilled(Controller Killer, Controller Killed, pawn Other) { if ( Enemy == Other ) Enemy = None; } function damageAttitudeTo(pawn Other, float Damage); function float AdjustDesireFor(Pickup P); function bool FireWeaponAt(Actor A); function StopFiring() { bFire = 0; bAltFire = 0; } simulated function float RateWeapon(Weapon w) { return 0.0; } function float WeaponPreference(Weapon W) { return 0.0; } /* AdjustAim() AIController version does adjustment for non-controlled pawns. PlayerController version does the adjustment for player aiming help. Only adjusts aiming at pawns allows more error in Z direction (full as defined by AutoAim - only half that difference for XY) */ function rotator AdjustAim(Ammunition FiredAmmunition, vector projStart, int aimerror) { return Rotation; } /* ReceiveWarning() AI controlled creatures may duck if not falling, and projectile time is long enough often pick opposite to current direction (relative to shooter axis) */ function ReceiveWarning(Pawn shooter, float projSpeed, vector FireDir) { } exec function SwitchToBestWeapon() { local float rating; if ( Pawn == None || Pawn.Inventory == None ) return; if ( (Pawn.PendingWeapon == None) || (AIController(self) != None) ) { Pawn.PendingWeapon = Pawn.Inventory.RecommendWeapon(rating); if ( Pawn.PendingWeapon == Pawn.Weapon ) Pawn.PendingWeapon = None; if ( Pawn.PendingWeapon == None ) return; } StopFiring(); if ( Pawn.Weapon == None ) Pawn.ChangedWeapon(); else if ( Pawn.Weapon != Pawn.PendingWeapon ) { Pawn.Weapon.PutDown(); } } // server calls this to force client to switch function ClientSwitchToBestWeapon() { SwitchToBestWeapon(); } function ClientSetWeapon( class WeaponClass ) { local Inventory Inv; local int Count; for( Inv = Pawn.Inventory; Inv != None; Inv = Inv.Inventory ) { Count++; if ( Count > 1000 ) return; if( !ClassIsChildOf( Inv.Class, WeaponClass ) ) continue; if( Pawn.Weapon == None ) { Pawn.PendingWeapon = Weapon(Inv); Pawn.ChangedWeapon(); } else if ( Pawn.Weapon != Weapon(Inv) ) { Pawn.PendingWeapon = Weapon(Inv); Pawn.Weapon.PutDown(); } return; } } function SetPawnClass(string inClass, string inCharacter) { local class pClass; pClass = class(DynamicLoadObject(inClass, class'Class')); if ( pClass != None ) PawnClass = pClass; } function bool CheckFutureSight(float DeltaTime) { return true; } function ChangedWeapon(); function ServerReStartPlayer() { if ( Level.NetMode == NM_Client ) return; if ( Pawn != None ) ServerGivePawn(); } function ServerGivePawn(); event MonitoredPawnAlert(); function StartMonitoring(Pawn P, float MaxDist) { MonitoredPawn = P; MonitorStartLoc = P.Location; MonitorMaxDistSq = MaxDist * MaxDist; } function bool AutoTaunt() { return false; } function bool DontReuseTaunt(int T) { return false; } // ********************************************** // Controller States State Dead { ignores SeePlayer, HearNoise, KilledBy; function PawnDied(Pawn P) { if ( Level.NetMode != NM_Client ) warn(self$" Pawndied while dead"); } function ServerReStartPlayer() { if ( Level.NetMode == NM_Client ) return; Level.Game.RestartPlayer(self); } } state GameEnded { ignores SeePlayer, HearNoise, KilledBy, NotifyBump, HitWall, NotifyPhysicsVolumeChange, NotifyHeadVolumeChange, Falling, TakeDamage, ReceiveWarning; function BeginState() { if ( Pawn != None ) { Pawn.bPhysicsAnimUpdate = false; Pawn.StopAnimating(); Pawn.SimAnim.AnimRate = 0; Pawn.SetCollision(true,false,false); Pawn.Velocity = vect(0,0,0); Pawn.SetPhysics(PHYS_None); Pawn.UnPossessed(); Pawn.bIgnoreForces = true; } if ( !bIsPlayer ) Destroy(); } } u // // UConstantMaterial interface // virtual FColor GetColor(FLOAT TimeSeconds) { return FColor(0,0,0,0); } hJ‘Z‘lŽb^‚‚±¯p$€>š9:$9:$±º6“9?,dp$'( €Y‘\‘Z$'Ž €‰c[‘v$w-Ô€@°6“9? þÿÿ1,d.v$Ôv$9?' Z#z6•z%6 z%a+z {class ConstantMaterial extends RenderedMaterial editinlinenew abstract native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) k // // UConstantMaterial interface // virtual FColor GetColor(FLOAT TimeSeconds) { return Color; } ]]‘C-O8Ü wC- €€\`‘B-1>y‰A-%„-G- –~% 8w*b€?¢~B-o${`–~%a‡o‚$6“{zDÖ{H a‘€Š&d‘€‰{€‰Oclass ConstantColor extends ConstantMaterial native editinlinenew; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var() Color Color; €Š&sc‘@-GQï@--W‚‚‚‚‚-j$f-W ²Hy"„°º6“9?,d ŽH9?% °ÃÍÌL=b-j$(o‚$‚f-W ±yHÛ±y«Í̌?Hy«33s?y±y« ׃?Hy«€p}?y "e‘€‰pi‘l‘eû =,1è Ô#€?9?„ Z ,€j‘€mk‘`k O°6“9? þÿÿ19D¯9?&¬6“9?, # ZŠrL*‡‚‚-O-i$š9:$9:$o‚$@w.L*LV19D¬9?Å9D¯9?&¬6“9?HLH Õ? Z6“ÈB(°Ã?ž69?,F8ž6ž9?,Fo‚$‚w.AL*°6“9? þÿÿLO19D¯9?&¬«¬HLH6“9?, ÕÍÌL> Z6“ÈBï°Ã?ž69?,Fÿž6ž9?,Fo‚$* "Xn‘w$@’U‡sš9:9:$S‚wl$*-a!w$al$w$ Q <\*s-oak$$‚‚‚›9:9:$f-i —E% wn$*x$¬«ÍÌL?Á«>29?Ey%–yEoan$ × Õ>üo Ao$Owm$*%o|m$oC«x$®?«333?Ã¥yçX OU//============================================================================= // Console - A quick little command line console that accepts most commands. //============================================================================= class Console extends Interaction; #exec new TrueTypeFontFactory PACKAGE="Engine" Name=ConsoleFont FontName="Verdana" Height=12 AntiAlias=1 CharactersPerPage=256 //#ifdef __L2 Hunter #exec TEXTURE IMPORT NAME=ConsoleBK FILE=..\Engine\TEXTURES\Black.PCX #exec TEXTURE IMPORT NAME=ConsoleBdr FILE=..\Engine\TEXTURES\White.PCX //#else //#exec TEXTURE IMPORT NAME=ConsoleBK FILE=..\UWindow\TEXTURES\Black.PCX //#exec TEXTURE IMPORT NAME=ConsoleBdr FILE=..\UWindow\TEXTURES\White.PCX //#endif // Constants. const MaxHistory=16; // # of command histroy to remember. // Variables var globalconfig byte ConsoleKey; // Key used to bring up the console var int HistoryTop, HistoryBot, HistoryCur; var string TypedStr, History[MaxHistory]; // Holds the current command, and the history var bool bTyping; // Turn when someone is typing on the console var bool bIgnoreKeys; // Ignore Key presses until a new KeyDown is received //----------------------------------------------------------------------------- // Exec functions accessible from the console and key bindings. // Begin typing a command on the console. exec function Type() { TypedStr=""; GotoState( 'Typing' ); } exec function Talk() { TypedStr="Say "; GotoState( 'Typing' ); } exec function TeamTalk() { TypedStr="TeamSay "; GotoState( 'Typing' ); } //----------------------------------------------------------------------------- // Message - By default, the console ignores all output. //----------------------------------------------------------------------------- event Message( coerce string Msg, float MsgLife); //----------------------------------------------------------------------------- // Check for the console key. function bool KeyEvent( EInputKey Key, EInputAction Action, FLOAT Delta ) { if( Action!=IST_Press ) return false; else if( Key==ConsoleKey ) { GotoState('Typing'); return true; } else return false; } //----------------------------------------------------------------------------- // State used while typing a command on the console. state Typing { exec function Type() { TypedStr=""; gotoState( '' ); } function bool KeyType( EInputKey Key, optional string Unicode ) { if (bIgnoreKeys) return true; if( Key>=0x20 && Key<0x100 && Key!=Asc("~") && Key!=Asc("`") ) { if( Unicode != "" ) TypedStr = TypedStr $ Unicode; else TypedStr = TypedStr $ Chr(Key); return true; } } function bool KeyEvent( EInputKey Key, EInputAction Action, FLOAT Delta ) { local string Temp; if (Action== IST_PRess) { bIgnoreKeys=false; } if( Key==IK_Escape ) { if( TypedStr!="" ) { TypedStr=""; HistoryCur = HistoryTop; return true; } else { GotoState( '' ); } } else if( global.KeyEvent( Key, Action, Delta ) ) { return true; } else if( Action != IST_Press ) { return false; } else if( Key==IK_Enter ) { if( TypedStr!="" ) { // Print to console. Message( TypedStr, 6.0 ); History[HistoryTop] = TypedStr; HistoryTop = (HistoryTop+1) % MaxHistory; if ( ( HistoryBot == -1) || ( HistoryBot == HistoryTop ) ) HistoryBot = (HistoryBot+1) % MaxHistory; HistoryCur = HistoryTop; // Make a local copy of the string. Temp=TypedStr; TypedStr=""; if( !ConsoleCommand( Temp ) ) Message( Localize("Errors","Exec","Core"), 6.0 ); Message( "", 6.0 ); GotoState(''); } else GotoState(''); return true; } else if( Key==IK_Up ) { if ( HistoryBot >= 0 ) { if (HistoryCur == HistoryBot) HistoryCur = HistoryTop; else { HistoryCur--; if (HistoryCur<0) HistoryCur = MaxHistory-1; } TypedStr = History[HistoryCur]; } return True; } else if( Key==IK_Down ) { if ( HistoryBot >= 0 ) { if (HistoryCur == HistoryTop) HistoryCur = HistoryBot; else HistoryCur = (HistoryCur+1) % MaxHistory; TypedStr = History[HistoryCur]; } } else if( Key==IK_Backspace || Key==IK_Left ) { if( Len(TypedStr)>0 ) TypedStr = Left(TypedStr,Len(TypedStr)-1); return true; } return true; } function PostRender(Canvas Canvas) { local float xl,yl; local string OutStr; // Blank out a space Canvas.Style = 1; Canvas.Font = font'ConsoleFont'; OutStr = "(>"@TypedStr$"_"; Canvas.Strlen(OutStr,xl,yl); Canvas.SetPos(0,Canvas.ClipY-6-yl); Canvas.DrawTile( texture 'ConsoleBk', Canvas.ClipX, yl+6,0,0,32,32); Canvas.SetPos(0,Canvas.ClipY-8-yl); Canvas.SetDrawColor(0,255,0); Canvas.DrawTile( texture 'ConsoleBdr', Canvas.ClipX, 2,0,0,32,32); Canvas.SetPos(0,Canvas.ClipY-3-yl); Canvas.bCenter = False; Canvas.DrawText( OutStr, false ); } function BeginState() { bTyping = true; bVisible= true; bIgnoreKeys = true; HistoryCur = HistoryTop; } function EndState() { bTyping = false; bVisible = false; } } a void SetColorComplement(BITFIELD complement); void SetAlphaComplement(BITFIELD complement); m// GlowModifier by nonblock class ComplementModifier extends Modifier noteditinlinenew native; var() bool ColorComplement; var() bool AlphaComplement; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) n class Combiner extends Material editinlinenew native; enum EColorOperation { CO_Use_Color_From_Material1, CO_Use_Color_From_Material2, CO_Multiply, CO_Add, CO_Subtract, CO_AlphaBlend_With_Mask, CO_Add_With_Mask_Modulation, CO_Use_Color_From_Mask, }; enum EAlphaOperation { AO_Use_Mask, AO_Multiply, AO_Add, AO_Use_Alpha_From_Material1, AO_Use_Alpha_From_Material2, }; var() EColorOperation CombineOperation; var() EAlphaOperation AlphaOperation; var() editinlineuse Material Material1; var() editinlineuse Material Material2; var() editinlineuse Material Mask; var() bool InvertMask; var() bool Modulate2X; var() bool Modulate4X; jo‘3µsak$$-o( ot‘w lŒõúø‚‚-i$w.w *±w H9?,(z$6“uáw  ÖÔw  ôðB® Auuʚ9:$9:$6“ÈAǁ-oaF-$-o'Ú6“z$o‚$aš™™>(.w  Bclass ColorWheel extends Texture native; var() int Radius; kclass ColorVariationMaterial extends RenderedMaterial native noexport; //#ifdef SEPERATE_MESHDATA var() Texture OriginTexture; var() Color Color; //#endif Pclass ColorModifier extends Modifier noteditinlinenew native; var() color Color; var() bool RenderTwoSided; var() bool AlphaBlend; @L}‘m‘€T$*u•vÿ*öööÿ"ӈ'6¢îø AÓ  " " " " ¿#!@ž®ž®ž®ž®ž®ž®vv€v€v€v€v€v¿¿€ÚðÚðÚððÚððÚððÚðð˜ð€‹ðööööööððððððððððÚ(ð®€ðöÿÿÿÿöööööðöððððð¿ð®‹ðöÿÿöÿÿööÿöööððððÚ(ðð®€ððÿÿöööööööðööðöðð¿ðöž‹ÚðöööðððÚ(ððöž€ðððöÿöÿöÿööÿöððððÚ¿ðöÿŠ‹Úðö(ðððÚÚÚ(ŠŠÚÚ¿€ðððööÿöÿöÿððÿððÚÚÚ¿(ðððð¿‹ÚðððööðððððððÚÚÚÚÚ/ðððÿö¿€ððððððððððÚÚÚÚÚÚÚÚ¿(˜¿ÚÚÚ¿‹ÚðððððÚÚÚÚÚÚÚÚÚÚÚÚ(ðððððð¿€ðÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚ¿(ðÚööÿö¿‹ÚðÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚ/˜¿¿ÚÚÚÚ¿€ðÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚ¿(ðÚððððð¿‹ÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚ(ððððöÿÿö¿€ðÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚ¿(˜¿¿ÚÚÚÚÚ¿‹ÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚ/ððÚðððððð¿€ðÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚ¿(ððððöÿöÿö¿‹ÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚ(ŠŠ¿¿ÚÚÚÚÚÚ¿‹ÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚ¿(ðððÚððððð𿘿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿(ðððððöÿÿÿöö¿(ŠŠ¿¿¿ÚÚÚ¿ÚÚÚ¿®ÿöööööððððððððððððð¿žöÿöÿöÿööööðööÿÿÿÿÿö¿žöÿöÿööÿöööÿöööööÿÚ¿ž®®®ž®¿¿¿¿®¿¿¿¿¿®¿ ~‘‘‰A’B’C’D’E’F’‰G’I’@H’~,J’K’L’M’N’O’P’Q’R’~,T’U’V’ W’X’š{‘€Rclass ColorMask extends RealtimeGenerationTexture native; enum ColorMaskBlendType { COLORMASK_AlphaBlend, COLORMASK_Add, }; var() ColorMaskBlendType ColorMaskBlend; var() Texture OrgTexture; var() MaskTexture MaskTexture; var() Color ModifierColor; šn’Y’q2+·% O //============================================================================= // ClipMarker. // // These are markers for the brush clip mode. You place 2 or 3 of these in // the level and that defines your clipping plane. // // These should NOT be manually added to the level. The editor adds and // deletes them on it's own. // //============================================================================= class ClipMarker extends Keypoint placeable native; #exec Texture Import File=Textures\S_ClipMarker.pcx Name=S_ClipMarker Mips=Off MASKED=1 #exec Texture Import File=Textures\S_ClipMarker1.pcx Name=S_ClipMarker1 Mips=Off MASKED=1 #exec Texture Import File=Textures\S_ClipMarker2.pcx Name=S_ClipMarker2 Mips=Off MASKED=1 #exec Texture Import File=Textures\S_ClipMarker3.pcx Name=S_ClipMarker3 Mips=Off MASKED=1 €^’€B±//============================================================================= // CheatManager // Object within playercontroller that manages "cheat" commands // only spawned in single player mode //============================================================================= class CheatManager extends Object within PlayerController native; var rotator LockedRotation; /* Used for correlating game situation with log file */ exec function ReviewJumpSpots(name TestLabel) { if ( TestLabel == 'Transloc' ) TestLabel = 'Begin'; else if ( TestLabel == 'Jump' ) TestLabel = 'Finished'; else if ( TestLabel == 'Combo' ) TestLabel = 'FinishedJumping'; else if ( TestLabel == 'LowGrav' ) TestLabel = 'FinishedComboJumping'; log("TestLabel is "$TestLabel); Level.Game.ReviewJumpSpots(TestLabel); } exec function ListDynamicActors() { local Actor A; local int i; ForEach DynamicActors(class'Actor',A) { i++; log(i@A); } log("Num dynamic actors: "$i); } exec function FreezeFrame(float delay) { Level.Game.SetPause(true,outer); Level.PauseDelay = Level.TimeSeconds + delay; } exec function WriteToLog() { log("NOW!"); } exec function SetFlash(float F) { FlashScale.X = F; } exec function SetFogR(float F) { FlashFog.X = F; } exec function SetFogG(float F) { FlashFog.Y = F; } exec function SetFogB(float F) { FlashFog.Z = F; } exec function KillViewedActor() { if ( ViewTarget != None ) { if ( (Pawn(ViewTarget) != None) && (Pawn(ViewTarget).Controller != None) ) Pawn(ViewTarget).Controller.Destroy(); ViewTarget.Destroy(); SetViewTarget(None); } } /* LogScriptedSequences() Toggles logging of scripted sequences on and off */ exec function LogScriptedSequences() { local AIScript S; ForEach AllActors(class'AIScript',S) S.bLoggingEnabled = !S.bLoggingEnabled; } /* Teleport() Teleport to surface player is looking at */ exec function Teleport() { local actor HitActor; local vector HitNormal, HitLocation; HitActor = Trace(HitLocation, HitNormal, ViewTarget.Location + 10000 * vector(Rotation),ViewTarget.Location, true); if ( HitActor == None ) HitLocation = ViewTarget.Location + 10000 * vector(Rotation); else HitLocation = HitLocation + ViewTarget.CollisionRadius * HitNormal; ViewTarget.SetLocation(HitLocation); } /* Scale the player's size to be F * default size */ exec function ChangeSize( float F ) { if ( Pawn.SetCollisionSize(Pawn.Default.CollisionRadius * F,Pawn.Default.CollisionHeight * F) ) { Pawn.SetDrawScale(F); Pawn.SetLocation(Pawn.Location); } } exec function LockCamera() { local vector LockedLocation; local rotator LockedRot; local actor LockedActor; if ( !bCameraPositionLocked ) { PlayerCalcView(LockedActor,LockedLocation,LockedRot); Outer.SetLocation(LockedLocation); LockedRotation = LockedRot; SetViewTarget(outer); } else SetViewTarget(Pawn); bCameraPositionLocked = !bCameraPositionLocked; bBehindView = bCameraPositionLocked; bFreeCamera = false; } exec function SetCameraDist( float F ) { CameraDist = FMax(F,2); } /* Stop interpolation */ exec function EndPath() { } /* Camera and pawn aren't rotated together in behindview when bFreeCamera is true */ exec function FreeCamera( bool B ) { bFreeCamera = B; bBehindView = B; } exec function CauseEvent( name EventName ) { TriggerEvent( EventName, Pawn, Pawn); } exec function Amphibious() { Pawn.UnderwaterTime = +999999.0; } exec function Fly() { if ( Pawn == None ) return; Pawn.UnderWaterTime = Pawn.Default.UnderWaterTime; ClientMessage("You feel much lighter"); Pawn.SetCollision(true, true , true); Pawn.bCollideWorld = true; bCheatFlying = true; Outer.GotoState('PlayerFlying'); } exec function Walk() { if ( Pawn != None ) { bCheatFlying = false; Pawn.UnderWaterTime = Pawn.Default.UnderWaterTime; Pawn.SetCollision(true, true , true); Pawn.SetPhysics(PHYS_Walking); Pawn.bCollideWorld = true; ClientReStart(); } } exec function Ghost() { if( Pawn != None && !Pawn.IsA('KVehicle') ) { Pawn.UnderWaterTime = -1.0; ClientMessage("You feel ethereal"); Pawn.SetCollision(false, false, false); Pawn.bCollideWorld = false; bCheatFlying = true; Outer.GotoState('PlayerFlying'); } else Log("Can't Ghost In Vehicles"); } exec function AllAmmo() { local Inventory Inv; for( Inv=Pawn.Inventory; Inv!=None; Inv=Inv.Inventory ) if (Ammunition(Inv)!=None) { Ammunition(Inv).AmmoAmount = 999; Ammunition(Inv).MaxAmmo = 999; } } exec function Invisible(bool B) { Pawn.bHidden = B; if (B) Pawn.Visibility = 0; else Pawn.Visibility = Pawn.Default.Visibility; } exec function God() { if ( bGodMode ) { bGodMode = false; ClientMessage("God mode off"); return; } bGodMode = true; ClientMessage("God Mode on"); } exec function SloMo( float T ) { Level.Game.SetGameSpeed(T); Level.Game.SaveConfig(); Level.Game.GameReplicationInfo.SaveConfig(); } exec function SetJumpZ( float F ) { Pawn.JumpZ = F; } exec function SetGravity( float F ) { PhysicsVolume.Gravity.Z = F; } exec function SetSpeed( float F ) { Pawn.GroundSpeed = Pawn.Default.GroundSpeed * f; Pawn.WaterSpeed = Pawn.Default.WaterSpeed * f; } exec function KillAll(class aClass) { local Actor A; if ( ClassIsChildOf(aClass, class'AIController') ) { Level.Game.KillBots(Level.Game.NumBots); return; } if ( ClassIsChildOf(aClass, class'Pawn') ) { KillAllPawns(class(aClass)); return; } ForEach DynamicActors(class 'Actor', A) if ( ClassIsChildOf(A.class, aClass) ) A.Destroy(); } // Kill non-player pawns and their controllers function KillAllPawns(class aClass) { local Pawn P; Level.Game.KillBots(Level.Game.NumBots); ForEach DynamicActors(class'Pawn', P) if ( ClassIsChildOf(P.Class, aClass) && !P.IsPlayerPawn() ) { if ( P.Controller != None ) P.Controller.Destroy(); P.Destroy(); } } exec function KillPawns() { KillAllPawns(class'Pawn'); } /* Avatar() Possess a pawn of the requested class */ exec function Avatar( string ClassName ) { local class NewClass; local Pawn P; NewClass = class( DynamicLoadObject( ClassName, class'Class' ) ); if( NewClass!=None ) { Foreach DynamicActors(class'Pawn',P) { if ( (P.Class == NewClass) && (P != Pawn) ) { if ( Pawn.Controller != None ) Pawn.Controller.PawnDied(Pawn); Possess(P); break; } } } } exec function Summon( string ClassName ) { local class NewClass; local vector SpawnLoc; log( "Fabricate " $ ClassName ); NewClass = class( DynamicLoadObject( ClassName, class'Class' ) ); if( NewClass!=None ) { if ( Pawn != None ) SpawnLoc = Pawn.Location; else SpawnLoc = Location; Spawn( NewClass,,,SpawnLoc + 72 * Vector(Rotation) + vect(0,0,1) * 15 ); } } exec function PlayersOnly() { Level.bPlayersOnly = !Level.bPlayersOnly; } exec function CheatView( class aClass, optional bool bQuiet ) { ViewClass(aClass,bQuiet,true); } // *********************************************************** // Navigation Aids (for testing) // remember spot for path testing (display path using ShowDebug) exec function RememberSpot() { if ( Pawn != None ) Destination = Pawn.Location; else Destination = Location; } // *********************************************************** // Changing viewtarget exec function ViewSelf(optional bool bQuiet) { bBehindView = false; bViewBot = false; if ( Pawn != None ) SetViewTarget(Pawn); else SetViewtarget(outer); if (!bQuiet ) ClientMessage(OwnCamera, 'Event'); FixFOV(); } //__L2 by Hunter exec function ViewPlayer( string S ) { local Controller P; for ( P=Level.ControllerList; P!=None; P= P.NextController ) { if ( P.bIsPlayer ) { break; } } if ( P.Pawn != None ) { ClientMessage(ViewingFrom@P.PlayerReplicationInfo.PlayerName, 'Event'); SetViewTarget(P.Pawn); } bBehindView = true; if ( bBehindView ) { ViewTarget.BecomeViewTarget(); } } /*exec function ViewPlayer( string S ) { local Controller P; for ( P=Level.ControllerList; P!=None; P= P.NextController ) if ( P.bIsPlayer && (P.PlayerReplicationInfo.PlayerName ~= S) ) break; if ( P.Pawn != None ) { ClientMessage(ViewingFrom@P.PlayerReplicationInfo.PlayerName, 'Event'); SetViewTarget(P.Pawn); } bBehindView = ( ViewTarget != Pawn ); if ( bBehindView ) ViewTarget.BecomeViewTarget(); }*/ // by Hunter End exec function ViewActor( name ActorName) { local Actor A; ForEach AllActors(class'Actor', A) if ( A.Name == ActorName ) { SetViewTarget(A); bBehindView = true; return; } } exec function ViewFlag() { local Controller C; For ( C=Level.ControllerList; C!=None; C=C.NextController ) if ( C.IsA('AIController') && (C.PlayerReplicationInfo != None) && (C.PlayerReplicationInfo.HasFlag != None) ) { SetViewTarget(C.Pawn); return; } } exec function ViewBot() { local actor first; local bool bFound; local Controller C; bViewBot = true; For ( C=Level.ControllerList; C!=None; C=C.NextController ) if ( C.IsA('AIController') && (C.Pawn != None) ) { if ( bFound || (first == None) ) { first = C.Pawn; if ( bFound ) break; } if ( C.Pawn == ViewTarget ) bFound = true; } if ( first != None ) { SetViewTarget(first); bBehindView = true; ViewTarget.BecomeViewTarget(); FixFOV(); } else ViewSelf(true); } exec function ViewClass( class aClass, optional bool bQuiet, optional bool bCheat ) { local actor other, first; local bool bFound; if ( !bCheat && (Level.Game != None) && !Level.Game.bCanViewOthers ) return; first = None; ForEach AllActors( aClass, other ) { if ( bFound || (first == None) ) { first = other; if ( bFound ) break; } if ( other == ViewTarget ) bFound = true; } if ( first != None ) { if ( !bQuiet ) { if ( Pawn(first) != None ) ClientMessage(ViewingFrom@First.GetHumanReadableName(), 'Event'); else ClientMessage(ViewingFrom@first, 'Event'); } SetViewTarget(first); bBehindView = ( ViewTarget != outer ); if ( bBehindView ) ViewTarget.BecomeViewTarget(); FixFOV(); } else ViewSelf(bQuiet); } exec function Loaded() { if( Level.Netmode!=NM_Standalone ) return; //#ifdef __L2 Hunter /* AllWeapons(); AllAmmo(); */ //#endif } exec function AllWeapons() { if( (Level.Netmode!=NM_Standalone) || (Pawn == None) ) return; Pawn.GiveWeapon("WarClassLight.WeapCOGAssaultRifle"); Pawn.GiveWeapon("WarClassLight.WeapCOGLightPlasma"); Pawn.GiveWeapon("WarClassLight.WeapCOGPistol"); Pawn.GiveWeapon("WarClassHeavy.WeapCOGMinigun"); Pawn.GiveWeapon("WarClassLight.WeapGeistSniperRifle"); Pawn.GiveWeapon("WarClassLight.WeapGeistGrenadeLauncher"); } _’€c’€x,€a’€~ INT* GetOptimizedRepList( BYTE* Recent, FPropertyRetirement* Retire, INT* Ptr, UPackageMap* Map, UActorChannel* Channel ); V class CarriedObject extends Actor native nativereplication abstract notplaceable; // (cpptext) // (cpptext) // (cpptext) // (cpptext) var bool bHome; var bool bHeld; var PlayerReplicationInfo HolderPRI; var Pawn Holder; var const NavigationPoint LastAnchor; // recent nearest path var float LastValidAnchorTime; // last time a valid anchor was found replication { reliable if (Role == ROLE_Authority) bHome, bHeld, HolderPRI; } function Actor Position() { if (bHeld) return Holder; return self; } gv//============================================================================= // Canvas: A drawing canvas. // This is a built-in Unreal class and it shouldn't be modified. // // Notes. // To determine size of a drawable object, set Style to STY_None, // remember CurX, draw the thing, then inspect CurX and CurYL. //============================================================================= class Canvas extends Object native noexport; // simple default font, so various stuff doesn't crash #exec Font Import File=Textures\SmallFont.bmp Name="DefaultFont" var int m_CapturingSplit9Tex; var int m_Split9TexCaptureList; // Modifiable properties. var font Font; // Font for DrawText. var float SpaceX, SpaceY; // Spacing for after Draw*. var float OrgX, OrgY; // Origin for drawing. var float ClipX, ClipY; // Bottom right clipping region. var float CurX, CurY; // Current position for drawing. var float Z; // Z location. 1=no screenflash, 2=yes screenflash. var byte Style; // Drawing style STY_None means don't draw. var float CurYL; // Largest Y size since DrawText. var color DrawColor; // Color for drawing. var bool bCenter; // Whether to center the text. var bool bNoSmooth; // Don't bilinear filter. var const int SizeX, SizeY; // Zero-based actual dimensions. // Stock fonts. var font TinyFont, SmallFont, MedFont; var string TinyFontName, SmallFontName, MedFontName; // Internal. var const viewport Viewport; // Viewport that owns the canvas. var const int pCanvasUtil; // #ifdef __L2 by zodiac var bool m_IsClipped; var float m_OldCurX, m_OldCurY; var float m_OldOrgX, m_OldOrgY; var float m_OldClipX, m_OldClipY; var font m_L2Font[3]; // #endif var texture pChatBack1_1; var texture pChatBack1_2; var texture pChatBack1_3; var texture pChatBack1_4; var texture pChatBack1_5; var texture pChatBack1_6; var texture pChatBack1_7; var texture pChatBack1_8; var texture pChatBack1_9; var texture pChatBack1_10; var texture pChatBack2_1; var texture pChatBack2_2; var texture pChatBack2_3; var texture pChatBack2_4; // #ifdef __L2 by idearain var int m_pViewportWindowRenderTarget[2]; var float m_fRecordMarkTimer; var texture m_pReplayRecordTimerTex; // #endif //var float m_FontScaleModifier; var float m_fTimePerFont; var float m_fStartTime; var int m_nTextIndex; var bool m_bTextAnim; var bool m_bTextEnd; var bool m_bFirstTextAnim; // native functions. native(464) final function StrLen( coerce string String, out float XL, out float YL ); // Wrapped! native(465) final function DrawText( coerce string Text, optional bool CR ); native(466) final function DrawTile( material Mat, float XL, float YL, float U, float V, float UL, float VL ); native(467) final function DrawActor( Actor A, bool WireFrame, optional bool ClearZ, optional float DisplayFOV ); native(468) final function DrawTileClipped( Material Mat, float XL, float YL, float U, float V, float UL, float VL ); native(469) final function DrawTextClipped( coerce string Text, optional bool bCheckHotKey ); native(470) final function TextSize( coerce string String, out float XL, out float YL ); // Clipped! native(480) final function DrawPortal( int X, int Y, int Width, int Height, actor CamActor, vector CamLocation, rotator CamRotation, optional int FOV, optional bool ClearZ ); native final function WrapStringToArray(string Text, out array OutArray, float dx, string EOL); // jmw - These are two helper functions. The use the whole texture only. If you need better support, use DrawTile native final function DrawTileStretched(material Mat, float XL, float YL); native final function DrawTileJustified(material Mat, byte Justification, float XL, float YL); native final function DrawTileScaled(material Mat, float XScale, float YScale); native final function DrawTextJustified(coerce string String, byte Justification, float x1, float y1, float x2, float y2); // UnrealScript functions. event Reset() { Font = Default.Font; SpaceX = Default.SpaceX; SpaceY = Default.SpaceY; OrgX = Default.OrgX; OrgY = Default.OrgY; CurX = Default.CurX; CurY = Default.CurY; Style = Default.Style; DrawColor = Default.DrawColor; CurYL = Default.CurYL; bCenter = false; bNoSmooth = false; Z = 1.0; } final function SetPos( float X, float Y ) { CurX = X; CurY = Y; } final function SetOrigin( float X, float Y ) { OrgX = X; OrgY = Y; } final function SetClip( float X, float Y ) { ClipX = X; ClipY = Y; } final function DrawPattern( material Tex, float XL, float YL, float Scale ) { DrawTile( Tex, XL, YL, (CurX-OrgX)*Scale, (CurY-OrgY)*Scale, XL*Scale, YL*Scale ); } final function DrawIcon( texture Tex, float Scale ) { if ( Tex != None ) DrawTile( Tex, Tex.USize*Scale, Tex.VSize*Scale, 0, 0, Tex.USize, Tex.VSize ); } final function DrawRect( texture Tex, float RectX, float RectY ) { DrawTile( Tex, RectX, RectY, 0, 0, Tex.USize, Tex.VSize ); } final function SetDrawColor(byte R, byte G, byte B, optional byte A) { local Color C; C.R = R; C.G = G; C.B = B; if ( A == 0 ) A = 255; C.A = A; DrawColor = C; } static final function Color MakeColor(byte R, byte G, byte B, optional byte A) { local Color C; C.R = R; C.G = G; C.B = B; if ( A == 0 ) A = 255; C.A = A; return C; } // Draw a vertical line final function DrawVertical(float X, float height) { SetPos( X, CurY); DrawRect(Texture'engine.WhiteSquareTexture', 2, height); } // Draw a horizontal line final function DrawHorizontal(float Y, float width) { SetPos(CurX, Y); DrawRect(Texture'engine.WhiteSquareTexture', width, 2); } // Draw Line is special as it saves it's original position final function DrawLine(int direction, float size) { local float X, Y; // Save current position X = CurX; Y = CurY; switch (direction) { case 0: SetPos(X, Y - size); DrawRect(Texture'engine.WhiteSquareTexture', 2, size); break; case 1: DrawRect(Texture'engine.WhiteSquareTexture', 2, size); break; case 2: SetPos(X - size, Y); DrawRect(Texture'engine.WhiteSquareTexture', size, 2); break; case 3: DrawRect(Texture'engine.WhiteSquareTexture', size, 2); break; } // Restore position SetPos(X, Y); } final simulated function DrawBracket(float width, float height, float bracket_size) { local float X, Y; X = CurX; Y = CurY; Width = max(width,5); Height = max(height,5); DrawLine(3, bracket_size); DrawLine(1, bracket_size); SetPos(X + width, Y); DrawLine(2, bracket_size); DrawLine(1, bracket_size); SetPos(X + width, Y + height); DrawLine(0, bracket_size); DrawLine(2, bracket_size); SetPos(X, Y + height); DrawLine(3, bracket_size); DrawLine( 0, bracket_size); SetPos(X, Y); } final simulated function DrawBox(canvas canvas, float width, float height) { local float X, Y; X = canvas.CurX; Y = canvas.CurY; canvas.DrawRect(Texture'engine.WhiteSquareTexture', 2, height); canvas.DrawRect(Texture'engine.WhiteSquareTexture', width, 2); canvas.SetPos(X + width, Y); canvas.DrawRect(Texture'engine.WhiteSquareTexture', 2, height); canvas.SetPos(X, Y + height); canvas.DrawRect(Texture'engine.WhiteSquareTexture', width+1, 2); canvas.SetPos(X, Y); } fclass CameraOverlay extends CameraEffect native noexport editinlinenew collapsecategories; var() color OverlayColor; var() Material OverlayMaterial; j’€€y>ll’Q@뻹±®}$z,G7|$X—G%C%§GaC%|$$|,¥‚wg* XP(–-{,ag P9Pw,¥ag P}$ P€Iclass CameraEffect extends Object abstract native noexport noteditinlinenew; var float Alpha; // Used to transition camera effects. 0 = no effect, 1 = full effect var bool FinalEffect; // Forces the renderer to ignore effects on the stack below this one. // by nonblock. // °ªÀÌ Å¬Œö·Ï Žõ ¿Ü°û¿¡ ÀÖŽÂ ÀÌÆåÆ®ÀÓÀ» ž»ÇÔ. Æ÷œºÆ®·»ŽõŒøŒ­ŽÂ nEmbrace°¡ ÀÛÀº°ÍºÎÅÍ Å«°ÍÀž·Î ÁøÇàµÊ. // ŒÒÆõȰɷΠ°¡Á€ÇÏ°í RenderÇÔ. CameraEffect¿¡ AddÇÒ¶§ ŒÒÆÃÇØŸßÇÔ. // var int nEmbrace; // // Default properties // ^“d’i @³' G€‰U//============================================================================= // A camera, used in UnrealEd. //============================================================================= class Camera extends PlayerController native; // Sprite. #exec Texture Import File=Textures\S_Camera.pcx Name=S_Camera Mips=Off MASKED=1 wclass BumpShader extends RenderedMaterial noexport editinlinenew native; var() editinlineuse Material Diffuse; var() editinlineuse Material BumpMaterial; var Material OldBumpMaterial; var const transient byte BumpRawData; var const transient int BumpTexInterface; function Reset() { } function Trigger( Actor Other, Actor EventInstigator ) { } s’f*t’u’v’w’x’y’z’{’|’}’~’’‰@“v,€E//============================================================================= // The brush class. // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class Brush extends Actor native; //----------------------------------------------------------------------------- // Variables. // CSG operation performed in editor. var() enum ECsgOper { CSG_Active, // Active brush. CSG_Add, // Add to world. CSG_Subtract, // Subtract from world. CSG_Intersect, // Form from intersection with world. CSG_Deintersect, // Form from negative intersection with world. } CsgOper; // Outdated. var const object UnusedLightMesh; var vector PostPivot; // Scaling. // Outdated : these are only here to allow the "ucc mapconvert" commandlet to work. // They are NOT used by the engine/editor for anything else. var scale MainScale; var scale PostScale; var scale TempScale; // Information. var() color BrushColor; var() int PolyFlags; var() bool bColored; }>r’t,P.$ -D%(t,v,-D%(' €€y,C“G“1=Q  H“€I“€J“€‰K“€‰€Š&G  Q“-K6//============================================================================= // BroadcastHandler // // Message broadcasting is delegated to BroadCastHandler by the GameInfo. // The BroadCastHandler handles both text messages (typed by a player) and // localized messages (which are identified by a LocalMessage class and id). // GameInfos produce localized messages using their DeathMessageClass and // GameMessageClass classes. // // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class BroadcastHandler extends Info; var int SentText; var config bool bMuteSpectators; // Whether spectators are allowed to speak. function UpdateSentText() { SentText = 0; } /* Whether actor is allowed to broadcast messages now. */ function bool AllowsBroadcast( actor broadcaster, int Len ) { if ( bMuteSpectators && (PlayerController(Broadcaster) != None) && PlayerController(Broadcaster).PlayerReplicationInfo.bOnlySpectator ) return false; SentText += Len; return ( (Level.Pauser != None) || (SentText < 260) ); } function BroadcastText( PlayerReplicationInfo SenderPRI, PlayerController Receiver, coerce string Msg, optional name Type ) { Receiver.TeamMessage( SenderPRI, Msg, Type ); } function BroadcastLocalized( Actor Sender, PlayerController Receiver, class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { Receiver.ReceiveLocalizedMessage( Message, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject ); } function Broadcast( Actor Sender, coerce string Msg, optional name Type ) { local Controller C; local PlayerController P; local PlayerReplicationInfo PRI; // see if allowed (limit to prevent spamming) if ( !AllowsBroadcast(Sender, Len(Msg)) ) return; if ( Pawn(Sender) != None ) PRI = Pawn(Sender).PlayerReplicationInfo; else if ( Controller(Sender) != None ) PRI = Controller(Sender).PlayerReplicationInfo; For ( C=Level.ControllerList; C!=None; C=C.NextController ) { P = PlayerController(C); if ( P != None ) BroadcastText(PRI, P, Msg, Type); } } function BroadcastTeam( Controller Sender, coerce string Msg, optional name Type ) { local Controller C; local PlayerController P; // see if allowed (limit to prevent spamming) if ( !AllowsBroadcast(Sender, Len(Msg)) ) return; For ( C=Level.ControllerList; C!=None; C=C.NextController ) { P = PlayerController(C); if ( (P != None) && (P.PlayerReplicationInfo.Team == Sender.PlayerReplicationInfo.Team) ) BroadcastText(Sender.PlayerReplicationInfo, P, Msg, Type); } } /* Broadcast a localized message to all players. Most messages deal with 0 to 2 related PRIs. The LocalMessage class defines how the PRI's and optional actor are used. */ event AllowBroadcastLocalized( actor Sender, class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { local Controller C; local PlayerController P; For ( C=Level.ControllerList; C!=None; C=C.NextController ) { P = PlayerController(C); if ( P != None ) BroadcastLocalized(Sender, P, Message, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject); } } {$*tÿ*öööÿ"…-‘?¢îø AÓ  " " " " –!@±±±±†±†óóó±†ó±±±ó±±±óóóóóóóó±±±±±±±±óóóó±±±±±±±±±±±±ÿ±±±±±±±±±±±††††††††±±±±±±±±††††±†±±±±±±†††ó±ó±óóóó± T//============================================================================= // BlockingVolume: a bounding volume // used to block certain classes of actors // primary use is to provide collision for non-zero extent traces around static meshes //============================================================================= //#ifdef __L2 // zodiac class BlockingVolume extends Volume native nativereplication; //#else //class BlockingVolume extends Volume // native; //#endif var() bool bClampFluid; R“-S“-T“-U“‰V“‰W“‰X“‰Y“‰Z“‰[“-L“hH \“s,n#JS)s, `“uj 4±{w‚‚‚‚-}  wu*u-Dwu9*(šu9^u,'( ]“q,k#K“)q, u“r,BüÖ°^ Br, _“b“w-N  €d“-e“-f“-g“-h“-i“-j“-k“-l“-m“-n“-o“-p“-s“--r“-{$*pÿ*öööÿ".¡¥D¢îø AÓ  " " " " wŸ!@ó†ó†ó†±±±±ó†±±±±†±†±±±±ó†±±±ó±ó±†±†±±±±±ó†±±±±ó±ó±±±±ó†±±±ó±ó†±†ó±ó±±±±±±±±±†±†ó±ó±±±±±±±†±†ó±ó±±±±±†±†ó±ó±±±†±†ó±±±±±†ó±±±†ó±†ÿ Z”p,}÷—°^ }p, y“-dclass BlackWhite extends CameraEffect native noexport editinlinenew collapsecategories; {$*uÿ*öööÿ"ž ’G¢îø AÓ  " " " " ª€!@󱆱󱆱óóóóóó±ó±†óóóóóó±±±±±±±±±±ó±†±±±±±±±±±±±±±±±±óÿ†±±±±±±±±±±±±±±±±ó±†±±±±±±±±±†††††††ó±†±†††††±ó±†±ó±† z“-{“-E%-p class BitmapMaterial extends RenderedMaterial abstract native noexport; var(TextureFormat) const editconst enum ETextureFormat { TEXF_P8, TEXF_RGBA7, TEXF_RGB16, TEXF_DXT1, TEXF_RGB8, TEXF_RGBA8, TEXF_NODATA, TEXF_DXT3, TEXF_DXT5, TEXF_L8, TEXF_G16, TEXF_RRRGGGBBB, } Format; var(Texture) enum ETexClampMode { TC_Wrap, TC_Clamp, } UClampMode, VClampMode; var const byte UBits, VBits; var const int USize, VSize; var(Texture) const int UClamp, VClamp; //#ifdef __L2 //zodiac var int LossDetail; var int MinFilter; var int MagFilter; var int MipFilter; //#endif ~“-w-0class Bitmap extends Object; // Deprecated ‚“O*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@”î­r‚€„Ø`‚u[89‡?ÿÿÿÿÿÿÿÿÿA”C”Y#Pæ(u$-w(h nÿÿ@ÿÿÿÿÿÿÿlD”CÊM.š9:u9:$E%F%-w(u$6u$hG C  E”€€B”J”W#r (u$-w(h nÿÿÀÿÿÿÿÿÿÿÿlH”]V /-›9:u9:$u$hG C  I”€€PG”K”OhA B@š9:u9:$E%F%-w(u$hG C  L”€€F”N”V#‰—@ÿÿÿÿÿÿÿÿÿlO”á 3-w-w(-w'hG C  P”€€M”U”U#ŸôÀÿÿÿÿÿÿÿÿÿÿlS”‘“-w'hG C  T”€€PR”V”Ošx-w(hG C  W”€€€@a.//============================================================================= // BeamEmitter: An Unreal Beam Particle Emitter. //============================================================================= class BeamEmitter extends ParticleEmitter native; enum EBeamEndPointType { PTEP_Velocity, PTEP_Distance, PTEP_Offset, PTEP_Actor, PTEP_TraceOffset, PTEP_OffsetAsAbsolute }; struct ParticleBeamData { var vector Location; var float t; }; struct ParticleBeamEndPoint { var () name ActorTag; var () rangevector Offset; var () float Weight; //#ifdef __L2 // anima var () int CreatureID; var () string boneName; //#endif }; struct ParticleBeamScale { var () vector FrequencyScale; var () float RelativeLength; }; struct native BezierContPoint { var () vector oscillationRange; var () float frequency; var () float locationratio; var () vector pivotLocation; }; var (Beam) range BeamDistanceRange; var (Beam) array BeamEndPoints; var (Beam) EBeamEndPointType DetermineEndPointBy; var (Beam) float BeamTextureUScale; var (Beam) float BeamTextureVScale; var (Beam) int RotatingSheets; var (Beam) bool TriggerEndpoint; var (BeamNoise) rangevector LowFrequencyNoiseRange; var (BeamNoise) int LowFrequencyPoints; var (BeamNoise) rangevector HighFrequencyNoiseRange; var (BeamNoise) int HighFrequencyPoints; var (BeamNoise) array LFScaleFactors; var (BeamNoise) array HFScaleFactors; var (BeamNoise) float LFScaleRepeats; var (BeamNoise) float HFScaleRepeats; var (BeamNoise) bool UseHighFrequencyScale; var (BeamNoise) bool UseLowFrequencyScale; var (BeamNoise) bool NoiseDeterminesEndPoint; var (BeamNoise) rangevector DynamicHFNoiseRange; var (BeamNoise) range DynamicHFNoisePointsRange; var (BeamNoise) range DynamicTimeBetweenNoiseRange; var (BeamNoise) bool bApllyLFNoiseSmootly; var (BezierCurve) bool bApllyBezierCurve; var (BezierCurve) array controlPoints; var (BezierCurve) int RenderingDensity; var (BeamBranching) bool UseBranching; var (BeamBranching) range BranchProbability; var (BeamBranching) range BranchHFPointsRange; var (BeamBranching) int BranchEmitter; var (BeamBranching) range BranchSpawnAmountRange; var (BeamBranching) bool LinkupLifetime; var transient int SheetsUsed; var transient int VerticesPerParticle; var transient int IndicesPerParticle; var transient int PrimitivesPerParticle; var transient float BeamValueSum; var transient array HFPoints; var transient array LFPoints; var transient array HitActors; var transient float TimeSinceLastDynamicNoise; var int FindEndPointCnt; h”k,H$ós°)k,)l,)m, ${$*tÿ*öööÿ"F¶K¢îø AÓ  " " " " É»!@±±±±†±†óóó±†ó±±±ó±±±óóóóóóóó±±±±±±±±óóóó±±±±±±±±±±±±ÿ±±±±±±±±±±±††††††††±±±±±±±±††††±†±±±±±±†††ó±ó±óóóó± Z G‘lZkZ M‚š9:o9:$ r}"*çSceneManager : Affected actor is NULL!y-T-J#(-z( p\”g,j=%-J#'-z(#wg,*-B#' h// ==================================================================== // Class: Engine.BaseGUIController // // This is just a stub class that should be subclassed to support menus. // // Written by Joe Wilcox // (c) 2002, Epic Games, Inc. All Rights Reserved // ==================================================================== class BaseGUIController extends Interaction Native; #exec TEXTURE IMPORT NAME=MenuWhite FILE=Textures\White.tga MIPS=0 #exec TEXTURE IMPORT NAME=MenuBlack FILE=Textures\Black.tga MIPS=0 #exec TEXTURE IMPORT NAME=MenuGray FILE=Textures\Gray.tga MIPS=0 var Material DefaultPens[3]; // Contain to hold some default pens for drawing purposes // Delegates Delegate OnAdminReply(string Reply); // Called By PlayerController // ================================================ // OpenMenu - Opens a new menu and places it on top of the stack event bool OpenMenu(string NewMenuName, optional string Param1, optional string Param2) { return false; } // ================================================ // Replaces a menu in the stack. returns true if success event bool ReplaceMenu(string NewMenuName, optional string Param1, optional string Param2) { return false; } event bool CloseMenu(optional bool bCanceled) // Close the top menu. returns true if success. { return true; } event CloseAll(bool bCancel); function SetControllerStatus(bool On) { bActive = On; bVisible = On; bRequiresTick=On; // Add code to pause/unpause/hide/etc the game here. } event InitializeController(); // Should be subclassed. event bool NeedsMenuResolution(); // Big Hack that should be subclassed event SetRequiredGameResolution(string GameRes); hn,`”lˆb^‚‚±¯G%€>š9:$9:$±º6“9?,dG%'( €_”H%Ad_«X94<áH%×ÕÐDX;H%ÔÕ333?ü®®_«ÃÈBÈBž6“«?_ U //============================================================================= // AvoidMarker. // Creatures will tend to back away when near this spot //============================================================================= class AvoidMarker extends Triggers native notPlaceable; function Touch( actor Other ) { if ( (Pawn(Other) != None) && (Pawn(Other).Controller != None) ) Pawn(Other).Controller.FearThisSpot(self); } function StartleBots() { local Pawn P; ForEach CollidingActors(class'Pawn', P, CollisionRadius) { if ( AIController(P.Controller) != None ) AIController(P.Controller).Startle(self); } } 2 virtual UBOOL IsIdentifiedAs(FName ActorName); ]a”]O&Ÿ‘Õ?×ÔÕÛ]]ÀNែ-@°N9?-@(-| '-_(6•@%6™@9D«Ã9?6 @%6™VÅ6™V@?6 VÅ6 V@?6•VÅ6•V@?.‚°N9?,<±6“]333?o‚$-`(q!h±N9?,Pm°Ã?ai,$ –C®š™Y?«Ãš™™>'ah,$ –C®š™Y?«Ãš™™>' d/*============================================================================= // AutoLadder - automatically placed at top and bottom of LadderVolume ============================================================================= */ class AutoLadder extends Ladder notplaceable native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) N€G/*============================================================================= // AutoDoor - automatically placed Door ============================================================================= */ class AutoDoor extends Door notplaceable native; z”\m éz®p@„r\X r\*k^%&*XX#nk^%%\XX# eclass ArmorPickup extends Pickup abstract; function float BotDesireability( pawn Bot ) { // 2006/07/27 Removed by NeverDie /* local Inventory AlreadyHas; local Armor AlreadyHasArmor; local float desire; local bool bChecked; desire = MaxDesireability; if ( RespawnTime < 10 ) { bChecked = true; AlreadyHas = Bot.FindInventoryType(InventoryType); if ( AlreadyHas != None ) { if ( Inventory != None ) { if( Inventory.Charge <= AlreadyHas.Charge ) return -1; } else if ( InventoryType.Default.Charge <= AlreadyHas.Charge ) return -1; } } if ( !bChecked ) AlreadyHasArmor = Armor(Bot.FindInventoryType(InventoryType)); if ( AlreadyHasArmor != None ) desire *= (1 - AlreadyHasArmor.Charge * AlreadyHasArmor.ArmorAbsorption * 0.00003); if ( Armor(Inventory) != None ) { // pointing to specific, existing item desire *= (Inventory.Charge * 0.005); desire *= (Armor(Inventory).ArmorAbsorption * 0.01); } else { desire *= (InventoryType.default.Charge * 0.005); desire *= (class(InventoryType).default.ArmorAbsorption * 0.01); } return desire; */ return 0.f; } f,n”Q#rB ÿÿÿÿÿÿÿÿÿÿj3O q!h sk”e,GTv‘e,-WÕÍÌL>u-@-@(-| '-_(6•@%6™@9D«Ã9?6 @%Va ÍÌL>Vq!h "€£l”)h ±f,$ôG5°º9?6•V9?'6•V'_°º9?6 V9?'6 V'K9D«Ã9?j,n,Šš9:9:$h ® A9?Å,(Ãa @' j”w”h‡¯ ÿÿÿÿÿÿÿÿÿÿ\q”1yÜ a r”€s”€t”€‰u”€‰€Š&jp”3~  ba £v”)„i a®€?Ã'a'((  i”[„P*ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ3x”O N œÀ‚d //============================================================================= // AntiPortalActor. //============================================================================= class AntiPortalActor extends Actor native placeable; // // TriggerControl // state() TriggerControl { // Trigger event Trigger(Actor Other,Pawn EventInstigator) { SetDrawType(DT_None); } // UnTrigger event UnTrigger(Actor Other,Pawn EventInstigator) { SetDrawType(DT_AntiPortal); } } // // TriggerToggle // state() TriggerToggle { // Trigger event Trigger(Actor Other,Pawn EventInstigator) { if(DrawType == DT_AntiPortal) SetDrawType(DT_None); else if(DrawType == DT_None) SetDrawType(DT_AntiPortal); } } // // Default properties // G•a,t≭3 rJ*(Jta,b,c,d, U|”$* {ÿ*Îÿÿÿ"î+S¢îø AÓ  " " " " Û!@ @€ÿÎÿ{ÿBBBÿ÷ÖÆÿ÷÷Îÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpI%~”O™@`, MwI%*J%aI%  ¥@J%R ”€J%€] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); P#O#N#M#K#I#G#E#D#B#~"{"w"r"p"o"m"l"€{//#ifdef __L2 //kurt class AnimNotify_ViewShake extends AnimNotify native; var () enum EViewShakeType { VST_DAMAGE, VST_VIBRATION, VST_USER, VST_UP, VST_DOWN, VST_UPDOWN, VST_DOWNUP, // by anima VST_TERRAIN, // ÁöÇü¿¡ ÀÇÇÑ Shake VST_ABNORMAL, // ÀÌ»ó»óÅ¿¡ ÀÇÇÑ Shake } ShakeType; var() float ShakeIntensity; var() vector ShakeVector; var() float ShakeRange; var() int ShakeCount; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) //#endif ]”]#a8{§”F*%š9:o9:$F}"ƒTw]#*q]#STwq*=qa/!DFqD.F&wD*D #D *#.FZ&ÿp!/a9 t p10&wt *t J D.FqTqqTDƒrF*qSƒwq*lqa/!DFqD.FUwD*D #D *#.FZUÿp!/a9 t p5510Uwt *t J D.FqƒqqTsFq D•`8À£l-z(Lš9:o9:$Lw.F*LwD*.F kDFa-B#(u! U•\L•BmÃ?©Æ‰‚wb*b-Džb9?&m Bb^‰wR*á„rBb rB*«rB*RyK*b^ÞR*yKBb^‰V‚-} 1rB9b9R+yTKBb^‰R*yKBb^€wb*TBbe \#kBb\# €mclass AnimNotify_Trigger extends AnimNotify_Scripted; var() name EventName; event Notify( Actor Owner ) { Owner.TriggerEvent( EventName, Owner, Pawn(Owner) ); } H•€J•€R•K•k¿Ëš N•]]f–\Q•bb‰K–\q ŽðŠÄ\}\}\S\S\m \m \\\ *\ *\^\^u ` \ T•dd–O•\W•hh‰Uq•$*áV¢äø AÓ  " " " " Ñì!@ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓþÕüüüüüüüüüüÖÓÑÓþÖûûûûûûûûûûÑÓÑÓþÕúúúúúúúúúúÖÓÑÓþÖþúþúþúþúþúÕÓÑÿÓþÕûûûûûûûûûûÖÓÑÿîÿÓþÖþþþþþþþþþþÕÓÑÿð÷ðÿÓþÕûûûûûûûûûûÔÓÑÿð÷ÝÝóÿÓþÖÕúþúþúþúþÔÒÓÑð÷ÝßÝÝøÿÓþÕÔÕÔÕÔÕÔÕÔÒÔÓÑ÷ßßßßÝßøÿÓþÔÕÔ×××××ÓÒÔÒÓÑàààßÚßÝÛôÿÓþÕÒÕ×Ñ××ýÑÒþÔÓÑöõßàäááááôÿÓþÒÕÒ×Ñ×××ÑÔþÒÓÑê÷ààäëãããåòÿÓþÕÒÕý×ý×ýÑÒþÔÓÑçõßäêìãåÿÿÿÿÓÓÓÓÓÑÑÑÑÑÑÓÓÓÑÑè÷ÛäêëÞåÿÑÑÑÑÑÑÑÑÑÑÑÑÑÑçïõàäêïÜÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿçïõàäêïÜÙÿÿÿÿÿÿÿÿØ÷õõõêÿÿØ÷õÿéïõàäæïÜáÿ÷õõõêÿÿ÷ïññïáÿÿ÷ïñÿêè÷ÛäêëÞåÿïñïñáÿÿñäääêáÿÿñääÿèë÷ßäêíáÛÿäääêáÿÿÿÿÿÿÿÿÿÿÿÿÿÿõíØ÷ñííéâÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿþþþþÿÿÿÿþþÿÿÿþþÿÿþþÿÿþþÿÿÿÿÿÿÿþþÿÿÿþþÿÿÿþþÿÿÿþþÿÿÿÿÿÿÿÿþþÿÿÿÿþþÿÿÿÿþÿÿÿþþÿÿÿÿÿþþþþþþþÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Z•‰[•‰\•‰]•‰^•‰_•‰`•‰a•‰b•‰c•‰d•‰e•‰f•‰g•‰h•–i•j•k•l•m•n•o•p•Œ‰@{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwwÿ†††ÿ–––ÿ²²²ÿÀÀÀÿÌÌÌÿöööÿ¬AÿîZÿÅZÿs1ÿÕZÿƒAÿÞjÿÍjÿŽZÿŽs1ÿsAÿÍsÿœRÿæƒÿæœAÿæ¬Zÿ՜Jÿ̓ÿöŽ9ÿö¬ ÿöՋÿãšÿÞ¬)ÿìцÿæÅjÿy[ÿÏœ…ÿ²—>ÿîÕsÿöæJÿöî”ÿ¥¢OÿÿÿÌÿÿÿ™ÿÿÿ™™ÿ  €ÿÿÿÿÿÿs•sšt•s›u•s›v•sw•s›s›y•u‰z•u{•|•‰}•¥~•@–@•ªA–B–›C–D–E–¥F–G–I–@H–U,J–Q,¥C™xY Ÿ€—EulŠ‚wE*rx oE*TaE x  ŠwT*T jxT-^(q x M– N–O–UªP–UQ–UR–UªS–UT–UU–V–VK%W–VX–VY–VZ,Z–V[–V\–V^,]–V_–@V^–›`–Va–Vb–Vc–Vd–We–WP,W_˜\‰h–Wi–W›j–@Wk–^‰l–^¥m–^n–^[,o–^›p–^¥q–S›r–~©s–~Y,t–~u–~¥v–~¥w–~x–~y–~z–~{–~‰|–~›}–o~–o–o@—oA—oB—nC—n¥D—n¥E—nG—@nF—V,H—nI—a],J—aK—aŒL—a‰M—a¥N—a¥O—aP—a¥Q—a‰R—]S—]U—@]T—W,V—]W—]¥X—]Y—HX,Z—H[—H‰\—H›^—@2]—R,_—2L%`—2›a—2›b—2L%c—2›d—2›e—of—og—oM%_,p&I•k¡X ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0h—G1–p&ºŸtÉï--%‚j—k—l—m—o—@n—p—q—r—s—Ot—Ou—L›v—L›w—L›x—y—z—›{—|—`¥}—`›~—`‰—`¥@˜`A˜`¥B˜`\,C˜`E˜@`D˜T,F˜`G˜sH˜sJ˜@I˜K˜tL˜tM˜ CN˜ O˜ P˜ R˜ @Q˜S,S˜ T˜ U˜ V˜ ±W˜ ‰X˜ Y˜ Z˜ [˜ \˜ ]˜ ‰^˜ O, p˜\a˜ b˜ c˜ d˜ e˜ f˜ g˜ ‰i˜ @h˜‰j˜ k˜ l˜ m˜ n˜ N)R, x•N,a /)N, o˜‘#/ t˜ @s˜v˜ @u˜x˜ @w˜z˜@Ky˜|˜@K{˜}˜K×~˜K˜K@™KA™ ‰ @B™«N™t|#„'¡óhulñ‚wh*rt oh*eah t  ñwe*R*RÌwR*µ‚Ra/!Kò. R-^(ÌRRwe jte-^( E™‰F™–G™H™€K™L™M™‰‰FšI™c.{u  {š!Q™[J,R™[I,S™[T™[U™[V™[W™[X™[Y™[Z™[\™ @[™L,^™ @]™K,_™ Á`™ Àa™ b™ c™ d™ e™ g™ @f™T'I, P™B E*  O™!M,k™vH,l™v‰m™vn™vo™vH, ‰UJš$*nÿ*ÿÆœÿ">GåX¢äø AÓ  " " " " ƒ"@ r™s™t™‰‰v™C ›w™C ›x™C ›z™ @y™G,{™ Á|™ À}™ ~™ ™ G, ] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); BšC‰CšC‰DšC‰EšC‰Czšct FD™‡-V'w.c*J.c-f-V(ŠGQŠk֛9:9:$H %֖H 7bÌr6WH bcB.c6KH b6EH b(¥H qš9:9:$.cN]‚-V2„š9:9:$š9:9:$Re,c…wR*RW c HšYIšYKšY@€ÿBÿ{ÿÆÿ{ÿÿÿœÆ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLšIE,MšINšIOšIPšIQšYRšYF,SšY‰TšYUšYVšYWšN XšN YšW [š@W Zš\š@‰]š@‰^š@_š@aš@Y`šN%bša cša dša ešYfšYgšYhšYišN jšW kš@lš@mš nš oš pš qš rš N%sš F, uši©všiwšixšiyšQ ‰Gœtg-.—“/-A-G("-i_-G-Gtt `!$‘wt*txt  ~š!}š‰G›!@›EA›E¥B›EC›E@Ef//#ifdef __L2 //kurt class AnimNotify_SwimSound extends AnimNotify native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) //#endif F›e ‰e ›!I›s‰J›sK›ss‰M›b›O›@bN›@B,P›bD,Q›bR›bS›bT›bU›T¥V›TW›T¥X›TZ›@TY›O%\›@T[›O%]›T^›T_›T`›Ta›Tb›T¥c›T›d›T›e›Tf›x h›@x g›A,i›x j›Yk›Y›l›Y›m›Yn›Y›o›Yp› q› r› s› t› v› @u›C,x› @w›‰z› @y›{› A,^ // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); // #ifdef __L2 // zodiac // Load Sound virtual USound *LoadSound( const TCHAR *Name); virtual USound *GetSound(PMoveType MoveType, L2PawnSoundType type); void PostLoad(); // #endif Aœ }›Hœ!@ÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ!!!ÿ"""ÿ###ÿ$$$ÿ%%%ÿ&&&ÿ'''ÿ(((ÿ)))ÿ***ÿ+++ÿ,,,ÿ---ÿ...ÿ///ÿ000ÿ111ÿ222ÿ333ÿ444ÿ555ÿ666ÿ777ÿ888ÿ999ÿ:::ÿ;;;ÿ<<<ÿ===ÿ>>>ÿ???ÿ@@@ÿAAAÿBBBÿCCCÿDDDÿEEEÿFFFÿGGGÿHHHÿIIIÿJJJÿKKKÿLLLÿMMMÿNNNÿOOOÿPPPÿQQQÿRRRÿSSSÿTTTÿUUUÿVVVÿWWWÿXXXÿYYYÿZZZÿ[[[ÿ\\\ÿ]]]ÿ^^^ÿ___ÿ```ÿaaaÿbbbÿcccÿdddÿeeeÿfffÿgggÿhhhÿiiiÿjjjÿkkkÿlllÿmmmÿnnnÿoooÿpppÿqqqÿrrrÿsssÿtttÿuuuÿvvvÿwwwÿxxxÿyyyÿzzzÿ{{{ÿ|||ÿ}}}ÿ~~~ÿÿ€€€ÿÿ‚‚‚ÿƒƒƒÿ„„„ÿ………ÿ†††ÿ‡‡‡ÿˆˆˆÿ‰‰‰ÿŠŠŠÿ‹‹‹ÿŒŒŒÿÿŽŽŽÿÿÿ‘‘‘ÿ’’’ÿ“““ÿ”””ÿ•••ÿ–––ÿ———ÿ˜˜˜ÿ™™™ÿšššÿ›››ÿœœœÿÿžžžÿŸŸŸÿ   ÿ¡¡¡ÿ¢¢¢ÿ£££ÿ€€€ÿ¥¥¥ÿŠŠŠÿ§§§ÿšššÿ©©©ÿªªªÿ«««ÿ¬¬¬ÿ­­­ÿ®®®ÿ¯¯¯ÿ°°°ÿ±±±ÿ²²²ÿ³³³ÿŽŽŽÿµµµÿ¶¶¶ÿ···ÿžžžÿ¹¹¹ÿºººÿ»»»ÿŒŒŒÿœœœÿŸŸŸÿ¿¿¿ÿÀÀÀÿÁÁÁÿÂÂÂÿÃÃÃÿÄÄÄÿÅÅÅÿÆÆÆÿÇÇÇÿÈÈÈÿÉÉÉÿÊÊÊÿËËËÿÌÌÌÿÍÍÍÿÎÎÎÿÏÏÏÿÐÐÐÿÑÑÑÿÒÒÒÿÓÓÓÿÔÔÔÿÕÕÕÿÖÖÖÿ×××ÿØØØÿÙÙÙÿÚÚÚÿÛÛÛÿÜÜÜÿÝÝÝÿÞÞÞÿßßßÿàààÿáááÿâââÿãããÿäääÿåååÿæææÿçççÿèèèÿéééÿêêêÿëëëÿìììÿíííÿîîîÿïïïÿðððÿñññÿòòòÿóóóÿôôôÿõõõÿöööÿ÷÷÷ÿøøøÿùùùÿúúúÿûûûÿüüüÿýýýÿþþþÿÿÿÿÿBœ Cœ Dœ @> x class AnimNotify_Sound extends AnimNotify native; var() sound Sound; var() float Volume; var() int Radius; //#ifdef __L2 Hunter var() int Random; //#endif //#ifdef __L2 zodiac var sound DefaultWalkSound[3]; var sound DefaultRunSound[3]; var sound GrassWalkSound[3]; var sound GrassRunSound[3]; var sound WaterWalkSound[3]; var sound WaterRunSound[3]; var sound DefaultActorWalkSound[3]; var sound DefaultActorRunSound[3]; //#endif enum L2PawnSoundType { LPST_GRASS, LPST_LAND, LPST_WATER, LPST_ACTOR }; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) ] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); Yyv, c’™hwR*RU yR7[ NameChangeyIy¥-A-G(-iy ˜iy-G-GL`!í‚{L{LNoney t L${h%p#P¡h% Š;{i%o#z¡i% Šy]p#o#—wy*yxy  `œ!lclass AnimNotify_Scripted extends AnimNotify native abstract; event Notify( Actor Owner ); // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) LœZP%] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); MœQ%NœQ%OœkYclass AnimNotify_Script extends AnimNotify native; var() name NotifyName; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) ] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); SœTœUœVœWœP%Yœ4Zœ[œ\œ–]œ–^œ_œ aœ tœ!bœ }+cœ dœd eœd fœd gœyhœyiœjœkœ lœmœenœeoœepœeqœerœesœeuœ[!›vœ|+wœxœyœ zœU {œ |œU}œ ~œUœU@UA B DCEP%F  H|  M€ŠK~{+L~ M~]){+~–O @PrT d//#ifdef __L2 // by nonblock class AnimNotify_ScreenFade extends AnimNotify native; var() float FadeOutDuration; var() color FadeOutColor; var() float BlackOutDuration; var() float FadeInDuration; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) //#endif j $*"«`ùn¢îø A\ÓZRQ  "@"@ "@ "@ ADFGHIHGFDA>:62-)$   $).49>CHMPSVWXYXWVSPMHC>94.)$  !'-4:@GLRW\`dgijjjigd`\WRLG@:4-'!  #*18?GNU\bhmrvy{|||{yvrmhb\UNG?81*#  %,3<DLU]elsy~ƒ‡ŠŒŽŒŠ‡ƒ~ysle]ULD<3,%  %-5>GQZclu|ƒŠ•™œžŸŸŸžœ™•Šƒ|ulcZQG>5-%  %.6@JT^hr|„”› ¥©¬®¯°¯®¬©¥ ›”„|rh^TJ@6.%  %-6@KValw‹”œ€ª°µž»œ¿¿¿œ»žµ°ª€œ”‹wlaVK@6-%  #,5@KVbnz…š£«³¹ŸÃÆÉËÌÍÌËÉÆß¹³«£š…znbVK@5,#  !*3>JVbo{ˆ“žš±¹ÀÆËÏÓÕ×ØØØ×ÕÓÏËÆÀ¹±šž“ˆ{obVJ>3*!  '1;GTan{ˆ•¡¬µŸÆÌÒÖÚÝßáâââáßÝÚÖÒÌÆŸµ¬¡•ˆ{naTG;1'  $-8DQ^lz‡•¢­žÁÊÑ×ÜàãæèéêêêéèæãàÜ×ÑÊÁž­¢•‡zl^QD8-$   )3?LZhv…“¡­¹ÃÌÔÚàäèëíîððñððîíëèäàÚÔÌù­¡“…vhZL?3)   $.:GTcrž«žÃÍÕÜâçëîñòóôõõõôóòñîëçâÜÕÍÞ«žrcTG:.$  )4@N\l{‹ššµÁÌÕÝãèíðóõö÷øøùøø÷öõóðíèãÝÕÌÁµšš‹{l\N@4)  #-9FUdt„”£±ŸÊÔÜãéíñôöøùúúûûûúúùøöôñíéãÜÔÊŸ±£”„tdUF9-#  '2>L\l|Œœ«¹ÆÑÚâèíñõ÷ùúûüüýýýüüûúù÷õñíèâÚÑƹ«œŒ|l\L>2'   *6CRbsƒ”€²ÀÌ×àçíñõ÷úûüýýýþþþýýýüûú÷õñíçà×ÌÀ²€”ƒsbRC6*   #.:HWhyŠšª¹ÆÒÜäëðô÷úûüýýþþþþþþþýýüûú÷ôðëäÜÒƹªšŠyhWH:.#  %1>L\m~ °ŸËÖàèîóöùûüýþþþþÿÿÿþþþþýüûùöóîèàÖËŸ° ~m\L>1%  '3AP`qƒ”¥µÃÏÚãëðõøúüýþþþÿÿÿÿÿÿÿþþþýüúøõðëãÚÏõ¥”ƒq`PA3'  )6DSdu‡˜©žÆÓÝæíòöùûýýþþÿÿÿÿÿÿÿÿÿþþýýûùöòíæÝÓÆž©˜‡udSD6)   +7FVgxŠ›¬»ÉÕßèîó÷úüýþþÿÿÿÿÿÿÿÿÿÿÿþþýüú÷óîèßÕÉ»¬›ŠxgVF7+   !,9GWi{Œž®œË×áéðôøúüýþþÿÿÿÿÿÿÿÿÿÿÿþþýüúøôðéá×Ëœ®žŒ{iWG9,!  "-:HXj|Ÿ¯¿ÌØâêðõøûýþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþýûøõðêâØÌ¿¯Ÿ|jXH:-"  "-:IYj|ŽŸ°¿ÍØâêñõùûýþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþýûùõñêâØÍ¿°ŸŽ|jYI:-"  "-:HXj|Ÿ¯¿ÌØâêðõøûýþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþýûøõðêâØÌ¿¯Ÿ|jXH:-"  !,9GWi{Œž®œË×áéðôøúüýþþÿÿÿÿÿÿÿÿÿÿÿþþýüúøôðéá×Ëœ®žŒ{iWG9,!   +7FVgxŠ›¬»ÉÕßèîó÷úüýþþÿÿÿÿÿÿÿÿÿÿÿþþýüú÷óîèßÕÉ»¬›ŠxgVF7+   )6DSdu‡˜©žÆÓÝæíòöùûýýþþÿÿÿÿÿÿÿÿÿþþýýûùöòíæÝÓÆž©˜‡udSD6)  '3AP`qƒ”¥µÃÏÚãëðõøúüýþþþÿÿÿÿÿÿÿþþþýüúøõðëãÚÏõ¥”ƒq`PA3'  %1>L\m~ °ŸËÖàèîóöùûüýþþþþÿÿÿþþþþýüûùöóîèàÖËŸ° ~m\L>1%  #.:HWhyŠšª¹ÆÒÜäëðô÷úûüýýþþþþþþþýýüûú÷ôðëäÜÒƹªšŠyhWH:.#   *6CRbsƒ”€²ÀÌ×àçíñõ÷úûüýýýþþþýýýüûú÷õñíçà×ÌÀ²€”ƒsbRC6*   '2>L\l|Œœ«¹ÆÑÚâèíñõ÷ùúûüüýýýüüûúù÷õñíèâÚÑƹ«œŒ|l\L>2'  #-9FUdt„”£±ŸÊÔÜãéíñôöøùúúûûûúúùøöôñíéãÜÔÊŸ±£”„tdUF9-#  )4@N\l{‹ššµÁÌÕÝãèíðóõö÷øøùøø÷öõóðíèãÝÕÌÁµšš‹{l\N@4)  $.:GTcrž«žÃÍÕÜâçëîñòóôõõõôóòñîëçâÜÕÍÞ«žrcTG:.$   )3?LZhv…“¡­¹ÃÌÔÚàäèëíîððñððîíëèäàÚÔÌù­¡“…vhZL?3)   $-8DQ^lz‡•¢­žÁÊÑ×ÜàãæèéêêêéèæãàÜ×ÑÊÁž­¢•‡zl^QD8-$  '1;GTan{ˆ•¡¬µŸÆÌÒÖÚÝßáâââáßÝÚÖÒÌÆŸµ¬¡•ˆ{naTG;1'  !*3>JVbo{ˆ“žš±¹ÀÆËÏÓÕ×ØØØ×ÕÓÏËÆÀ¹±šž“ˆ{obVJ>3*!  #,5@KVbnz…š£«³¹ŸÃÆÉËÌÍÌËÉÆß¹³«£š…znbVK@5,#  %-6@KValw‹”œ€ª°µž»œ¿¿¿œ»žµ°ª€œ”‹wlaVK@6-%  %.6@JT^hr|„”› ¥©¬®¯°¯®¬©¥ ›”„|rh^TJ@6.%  %-5>GQZclu|ƒŠ•™œžŸŸŸžœ™•Šƒ|ulcZQG>5-%  %,3<DLU]elsy~ƒ‡ŠŒŽŒŠ‡ƒ~ysle]ULD<3,%  #*18?GNU\bhmrvy{|||{yvrmhb\UNG?81*#  !'-4:@GLRW\`dgijjjigd`\WRLG@:4-'!  $).49>CHMPSVWXYXWVSPMHC>94.)$   $)-26:>ADFGHIHGFDA>:62-)$   #'*.13679:::97631.*'#   #%')+,---,+)'%#    !"""!       @@Lx"@@    !$''&#  "*28=@A?;5.&  +7BMV]`a_YRG=1% $2AQ`mx€ƒ„‚|sgYI:+ %6H\o€š¢Š§¥Ÿ•‡xeR?-  $6KaxŸ®¹ÀÄÅÃœŽ§—ƒmV@,  2Ha{”©»ÉÒÙÜÝÛÖ㟈nU<(  +A\x”­ÂÒÝåêìíëèâØÊž¡†jN5" "7Qo©ÂÕâëñôööõóïçÜ̶œ~_C+  *B`€Ÿ»ÒâíôøúûüûùöñèÛÇ®pP5 2MmŽ®ÉÝëôùûýýþýüû÷ðåÔŒŸ~\>& !8Vw™¹ÒåñøûýþþÿþþýúõìÜƪ‰fF, $=]¢ÀÙêôúýþÿÿÿÿþýüøðâͲ‘nL0 '@`ƒŠÄÜìöûýþÿÿÿÿÿþýùòåѶ•rO3 'Aa„§ÅÝíöüþÿÿÿÿÿÿþýùòæÒ·–sP3 &?_‚€ÃÛëõûýþÿÿÿÿÿþüøñäÏŽ“pN1 #;Y|žœÖèóùüþþÿÿÿþýû÷îàÊ®jJ. 5Qs”ŽÎâïöûýýþþþýüùóéÙÂ¥ƒbC)  .Gg‡§ÂØçñ÷úüýýüûùôìàε˜wW:# &<Xw—³ÊÜèðõøùùø÷óìãÔ¿¥‡hJ01IeƒŸžÌÛåìðòòñîéàÔì‘tW<&  %:Rm‡¡¶ÇÔÜâåæäàÙﬕz_E/+?Vn†œ®ŒÆÍÑÒÏʵ¥‘zbJ4"  -@Uj~Ÿª²¶·Ž®¥˜‡t_J6%  ,=N`p~‰‘•–”Ž„whWF4% (6CQ\fnrsqkbWJ=/" "+5>GLOPNJC:0&   &,0331.)#      \|"@  *23, /JbpqfQ6 7_†€³µ©i@ /_“Ÿ×âäÛşl9J†Ÿáò÷øôçɖX& *a£×ñûýþüõà²r52o³â÷ýÿÿþúêÁ?3qŽäøþÿÿþúëÃ@ ,fšÛôüþþü÷ã·w9 PÅçõúú÷ëО`* 6iŸÉàêëãЫwA@l–²Á÷žwK$  :Yrƒw`B$ &5?@9*   l}"@ WŠ_! WŒèêÅd‰èýýî™&Œêýýï(_ÅîïÍm!e™m(&(Œ}"@BF BâæMFæêQ MQ Û}"[``fî}"`] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); qclass AnimNotify_MatSubAction extends AnimNotify native; var() editinline MatSubAction SubAction; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) ] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); mz+eð¹{M.z+cwM*s#M C ClassN¡s# ŠcwN*N¡j% Š Z//#ifdef __L2 //anima - ÀÜ»ó class AnimNotify_Illusion extends AnimNotify native; var() float SpawnDelay; var() float RemainTime; var() bool bUseIllusionColor; var() color IllusionColor; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) //#endif \!j!^V%VN // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); // Load Sound virtual USound* LoadSound( const TCHAR* Name ); virtual USound* GetSound( INT ItemClassID ); aRcF« €e f ¬gh  dv+^· )v+)u+ k!n!it+K)t+)s+)r+)n+)m+ qAiŒ8‰•A‚‚-G›9:9:$›9:9:$ „rA*rA9*v,ÿ¥vA9^SCA9=vèrS*ç Player start not found!!! 3‚wAW*wAfAWu p A…wAf*AaAf S  S ßrA*u#eAAau# S  S JrA*çpppCouldn't spawn player of type 9VAf at 9VSAq!B AOSA\.Y SAZAWAŸAkAAfAŸAP''AxA YA<S\SA o!p!s!vA}+—{…Ž>„rA*rA9*z#,ÿdz#A9^·rA*y#¡o+ ŠAay# p+q+'þrA*çCouldn't spawn player of typeAq!B AkAAfAŸAP''AxA YA ll+Mv)l+)k+)j+)i+ t!u!x!yU~+pðL CU9=,ÿ@rL *ç Player start not found!!! ’wUf*UaUf L   L  ìrU*|#eUUa|# L   L  WrU*çpppCouldn't spawn player of type 9VUf at 9VL Uq!B UkUUfUŸUP''UxU YU rh+Oú3)h+)f+)e+)d+)c+)^+)]+)\+)[+)Z+ @$!|V_V^~wR*R\ /a0 #:#W 10VSŠwV*‚Va/!JrV*-D VVTOVSwV*ú‚V-DVa/!JiVVVTº-i( {!S!Gžty 1z‚wR*R\ /a0 B$:B$W 10tSËwt*Ž‚ta/!Jrt*’-D ŽŽ.tOitttTOtSgwt*P‚t-Dta/!J;š9:9:$itPt q!B!H8ttTß-i(=-V'' @~@ž!q&Až!Dž!wY+P.)Y+)X+)W+)V+)U+)T+)S+)R+)Q+ q€Ež!Fž!Hž!P O$p-®kÕ-c{7T SpectatorOnlyJ{-cAeP*ujO$T r €7T Name,B9=ET Team,ÿH$7T Password_+7T ChecksumBwB*] C*BO$r] *Aej*u^` qH$qa^7 ]   ]  -c'íÁrZ*Z¡ini:Engine.Engine.DefaultPlayerController ŠqaZ ]   ]  Erq*çpCouldn't spawn player controller of class 9VZAei*qw ] pzr r nÓ„›9:9:$5‚w*qzqInaqr (qo=qq!x'-cq-f'¥GqZw*qq{¥b%`+7T ClassÀ„š9:9:$š9:9:$Re&qß-Aqq!~q/a9 Uš™‚‚‚‚wU*w.U * r.U e*—U7%|UBr U aq kU0q10-G(µ-i_Àiq-G-Gq Iž!–Kž @Jžbž @LžNžOžVšRž@QžP+SžP+Už VVž Wž Xž Yž Zž š[ž š\ž ]ž ^ž _ž `ž až  MŸ @~ždžVežšfžhžižjžkžlžVmžnžožpžqžržsž tž N+ N+vž{ wž{ xžyž  puž$1 mzž|žq }ž€€@ŸM–AŸM–BŸMCŸML+ML+C–Xclass AnimNotify_IdleSound extends AnimNotify native; var() sound Sound; var() float Volume; var() int Radius; var() int Random; var sound IdleSound[3]; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) @ // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); #if defined(__L2) // 2006/07/26 NeverDie virtual AActor* GetLastSpawnedEffect(); virtual void SetLastSpawnedEffect( AActor* a_pLastSpawnedEffect ); #endif |class AnimNotify_Effect extends AnimNotify native; var() class EffectClass; var() name Bone; var() vector OffsetLocation; var() rotator OffsetRotation; var() bool Attach; var() name Tag; var() float DrawScale; var() vector DrawScale3D; //kurt var() bool TrailCamera; var() bool IndependentRotation; var() float EffectScale; var private transient Actor LastSpawnedEffect; // Valid only in the editor. // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) ] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); @class AnimNotify_DestroyEffect extends AnimNotify native; var() name DestroyTag; var() bool bExpireParticles; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) ] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); LŸ:NŸ:mŸ OŸ:K+PŸ:QŸ:RŸSŸ:TŸ:UŸ:VŸ:`:f//#ifdef __L2 //anima class AnimNotify_Channeling extends AnimNotify native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) //#endif YŸ:ZŸ:[Ÿ:\Ÿ::pK+$/ÒwO*O$4wR*R$NwT*T$hwU*U$‚wX*X$œw^*^$¶wn*n$Ðw`*`$ m]ŸWCù"$wO*OWXHwR*RWXlwT*TWXwU*UWXŽwX*XWXØw^*^WXüwn*nWX w`*`WX ] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); Lclass AnimNotify_CameraLocation extends AnimNotify native; var() int BoneIndex; //var() bool bCalcWithBone; var() ECameraLocationType eCameraLocType; var() rotator FixedRotation; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) bŸc c –] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); g//#ifdef __L2 // idearain class AnimNotify_BoneScale extends AnimNotify native; enum L2PartialBoneScalerType { LPBST_LINEAR, LPBST_SIN_SOUT, LPBST_SIN_FOUT, LPBST_FIN_SOUT, }; var() int BoneIndex; var() float StartScale; var() float EndScale; var() float StartFrameIndex; var() float EndFrameIndex; var() bool ApplySubBones; var() L2PartialBoneScalerType BoneScalerType; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) //#endif ] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); e//#ifdef __L2 //kurt class AnimNotify_AttackVoice extends AnimNotify native; var() float Volume; var() float Radius; var() int Random; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) //#endif ] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); iŸ| | L–lŸnŸ ±uŸ ‰pŸFqŸFFJ+d €G+@HtŸI+F  |H//#ifdef __L2 //kurt class AnimNotify_AttackShot extends AnimNotify native; var() int TargetIndex; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) //#endif ] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); h//#ifdef __L2 //kurt class AnimNotify_AttackPreShot extends AnimNotify native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) //#endif H+asŸ$/$%Y%Z%-|-| c{Ÿ}Ÿ6¢QG+ %$Y%Z%O <$-|-|O L$-|'O ÿÿ ~Ÿ€€] // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ); g//#ifdef __L2 //kurt class AnimNotify_AttackItem extends AnimNotify native; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) //#endif av$ `v%#—7o%~%o*~*Dw~*~$^wn*n$ cB [%¥v™v7ov%>—7o%~voE~*iw~*~[%\%wn*n[%\% } // AnimNotify interface. virtual void Notify( UMeshInstance *Instance, AActor *Owner ) {}; virtual FString ExportToScript(); // UObject interface. virtual void PostEditChange(); Fclass AnimNotify extends Object native abstract editinlinenew hidecategories(Object) collapsecategories; var transient int Revision; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) N  H RF+I RJ RK RL RM RF+RU¡ ÊQ E+q \$P- Xï-J|7OSpectatorOnlytrue[‚-P$ {-JVeP*x‚-P${(-J'uj\$Og €7OName,L9=EOTeam,ÿM+7OAdminNamen7OPasswordO+7OChecksumçšLogin:g I{nçšPasswordnLwL*d C*L\$“rd *Vej*ßrZ*Z¡ini:Engine.Engine.DefaultPlayerController ŠhaZ d   d  crh*çpCouldn't spawn player controller of class 9VZVei*hw d ho=hq!xh} aQ)ýrh} *çpCould not spawn security for player 9Vh!R )š9:9:$hq!I89hq!xPzg g n„›9:9:$zhInahg („-Jh-fh-f'h-N'¥Gh2Dh9:L(Vel*hw d h{¥b%Z7OClass”zZZj%S$7OCharacterhiZS$¥k-O'÷-Ahq!~h/a9 aæå‚‚‚‚wa*w.a * r.a e*—a7%|aBg haaa+a  a-YB(ac0.a 10h R D+E+vš€C+FC+v+//============================================================================= // Ammunition: the base class of weapon ammunition // // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class Ammunition extends Inventory abstract native nativereplication; var travel int MaxAmmo; // Max amount of ammo var travel int AmmoAmount; // Amount of Ammo current available var travel int PickupAmmo; // Amount of Ammo to give when this is picked up for the first time // Used by Bot AI var bool bRecommendSplashDamage; var bool bTossed; var bool bTrySplash; var bool bLeadTarget; var bool bInstantHit; var bool bSplashDamage; // Damage and Projectile information var class ProjectileClass; var class MyDamageType; var float WarnTargetPct; var float RefireRate; var Sound FireSound; var float MaxAutoAimRange; // Network replication // replication { // Things the server should send to the client. reliable if( bNetOwner && bNetDirty && (Role==ROLE_Authority) ) AmmoAmount; } simulated function bool HasAmmo() { return ( AmmoAmount > 0 ); } function float RateSelf(Pawn Shooter, out name RecommendedFiringMode) { return 0.5; } function WarnTarget(Actor Target,Pawn P ,vector FireDir) { if ( bInstantHit ) return; if ( (FRand() < WarnTargetPct) && (Pawn(Target) != None) && (Pawn(Target).Controller != None) ) Pawn(Target).Controller.ReceiveWarning(P, ProjectileClass.Default.Speed, FireDir); } function SpawnProjectile(vector Start, rotator Dir) { AmmoAmount -= 1; Spawn(ProjectileClass,,, Start,Dir); } function ProcessTraceHit(Weapon W, Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { AmmoAmount -= 1; } simulated function DisplayDebug(Canvas Canvas, out float YL, out float YPos) { Canvas.DrawText("Ammunition "$GetItemName(string(self))$" amount "$AmmoAmount$" Max "$MaxAmmo); YPos += YL; Canvas.SetPos(4,YPos); } function bool HandlePickupQuery( pickup Item ) { if ( class == item.InventoryType ) { if (AmmoAmount==MaxAmmo) return true; item.AnnouncePickup(Pawn(Owner)); AddAmmo(Ammo(item).AmmoAmount); item.SetRespawn(); return true; } if ( Inventory == None ) return false; return Inventory.HandlePickupQuery(Item); } // If we can, add ammo and return true. // If we are at max ammo, return false // function bool AddAmmo(int AmmoToAdd) { AmmoAmount = Min(MaxAmmo, AmmoAmount+AmmoToAdd); return true; } function float GetDamageRadius() { if ( ProjectileClass != None ) return ProjectileClass.Default.DamageRadius; return 0; } Y IZ I[ I\ I] I^ I_ I]%` I]%a Ib Ic d e f ]%šD//============================================================================= // Ammo. //============================================================================= class Ammo extends Pickup abstract native; #exec Texture Import File=Textures\Ammo.pcx Name=S_Ammo Mips=Off MASKED=1 var() int AmmoAmount; /* DetourWeight() value of this path to take a quick detour (usually 0, used when on route to distant objective, but want to grab inventory for example) */ function float DetourWeight(Pawn Other,float PathWeight) { local Ammunition AlreadyHas; if ( Other.Weapon.AIRating >= 0.5 ) return 0; AlreadyHas = Ammunition(Other.FindInventoryType(InventoryType)); if ( AlreadyHas == None ) return 0; if ( AlreadyHas.AmmoAmount == 0 ) return MaxDesireability/PathWeight; return 0; } function float BotDesireability(Pawn Bot) { local Ammunition AlreadyHas; if ( Bot.Controller.bHuntPlayer ) return 0; AlreadyHas = Ammunition(Bot.FindInventoryType(InventoryType)); if ( AlreadyHas == None ) return (0.35 * MaxDesireability); if ( AlreadyHas.AmmoAmount == 0 ) return MaxDesireability; if (AlreadyHas.AmmoAmount >= AlreadyHas.MaxAmmo) return -1; return ( MaxDesireability * FMin(1, 0.15 * AmmoAmount/AlreadyHas.AmmoAmount) ); } function inventory SpawnCopy( Pawn Other ) { local Inventory Copy; Copy = Super.SpawnCopy(Other); Ammunition(Copy).AmmoAmount = AmmoAmount; return Copy; } n//============================================================================= // Ambient sound, sits there and emits its sound. This class is no different // than placing any other actor in a level and setting its ambient sound. //============================================================================= class AmbientSoundObject extends LevelObject placeable native; // Import the sprite. #exec Texture Import File=Textures\Ambient.pcx Name=S_Ambient Mips=Off MASKED=1 //#ifdef __L2 Hunter enum ASType1{ AST1_Always, AST1_Day, AST1_Night, AST1_Water, AST1_RangeTime}; var(Sound) array AmbientSoundRangeTime; // Custom RangeTime for AST_RangeTime 2010.11.22. winkey var(Sound) ASType1 AmbientSoundType; var(Sound) int AmbientRandom; // Radius of ambient sound. var float AmbientSoundStartTime; //Sound Run-Time Variable //#endif // Ambient sound. var(Sound) sound AmbientSound; // Ambient sound effect. var(Sound) float SoundRadius; // Radius of ambient sound. var(Sound) byte SoundVolume; // Volume of ambient sound. var(Sound) byte SoundPitch; // Sound pitch shift, 64.0=none. var(Sound) array ZonePlayState; // Zone Play State by elsacred on 2009.11.5 Cr X//============================================================================= // Ambient sound, sits there and emits its sound. This class is no different // than placing any other actor in a level and setting its ambient sound. //============================================================================= class AmbientSound extends Keypoint native; // Import the sprite. #exec Texture Import File=Textures\Ambient.pcx Name=S_Ambient Mips=Off MASKED=1 //#ifdef __L2 Hunter enum ASType{ AST_Always, AST_Day, AST_Night, AST_Water, AST_RangeTime}; var(Sound) array AmbientSoundRangeTime; // Custom RangeTime for AST_RangeTime 2010.11.22. winkey var(Sound) ASType AmbientSoundType; var(Sound) int AmbientRandom; // Radius of ambient sound. var float AmbientSoundStartTime; //Sound Run-Time Variable //#endif // Ambient sound. var(Sound) sound AmbientSound; // Ambient sound effect. var(Sound) float SoundRadius; // Radius of ambient sound. var(Sound) byte SoundVolume; // Volume of ambient sound. var(Sound) byte SoundPitch; // Sound pitch shift, 64.0=none. // Sound occlusion enum ESoundOcclusion { OCCLUSION_Default, OCCLUSION_None, OCCLUSION_BSP, OCCLUSION_StaticMeshes, }; var(Sound) ESoundOcclusion SoundOcclusion; // Sound occlusion approach. var(Sound) bool bFullVolume; // Whether to apply ambient attenuation. E virtual INT AddMyMarker(AActor *S); virtual void ClearMarker(); y//============================================================================= // AIScript - used by Level Designers to specify special AI scripts for pawns // placed in a level, and to change which type of AI controller to use for a pawn. // AIScripts can be shared by one or many pawns. // Game specific subclasses of AIScript will have editable properties defining game specific behavior and AI // This is a built-in Unreal class and it shouldn't be modified. //============================================================================= class AIScript extends Keypoint native placeable; #exec Texture Import File=Textures\AIScript.pcx Name=S_AIScript Mips=Off MASKED=1 var() class ControllerClass; var bool bNavigate; // if true, put an associated path in the navigation network var bool bLoggingEnabled; var AIMarker myMarker; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) /* SpawnController() Spawn and initialize an AI Controller (called by a non-player controlled Pawn at level startup) */ function SpawnControllerFor(Pawn P) { local AIController C; if ( ControllerClass == None ) { if ( P.ControllerClass == None ) return; C = Spawn(P.ControllerClass,,,P.Location, P.Rotation); } else C = Spawn(ControllerClass,,,P.Location, P.Rotation); C.MyScript = self; C.Possess(P); } function Actor GetMoveTarget() { if ( MyMarker != None ) return MyMarker; return self; } function TakeOver(Pawn P); cd%e%È­n-jd% E$-j(Ce%-D'k h$-j(C€¿-D'k ÿÿ«†›9:d%9:$-j'Ce%-D( L//////////////////////////////////////////// // AirVolume //////////////////////////////////////////// //#ifdef __L2 // by nonblock class AirVolume extends Volume native nativereplication; var(AirVolume) name EffectName; var(AirVolume) float FullFadeSeconds; var(AirVolume) float RelativeOffset; simulated function PostBeginPlay() { Super.PostBeginPlay(); } //#endif €am $5-j(C€¿-D( j¡B+{òàTxš9:9:$(\-B+‚™Gn($„›9:9:$ —k%v‚—Y % ™kY  s IA+t IŒu  v Iw Ix IŒy IŒz IŒA+š| u} u~ u ušA¡q ŒB¡q šOclass AirShip extends Pawn abstract native; var Pawn DriverPawn; Hn xL////////////////////////////// // emitter for Airvolume // - used periodical polling to prevent from mass spawning or despawning which could happen by constant camera movement. // created by nonblock(2004.11.15) ////////////////////////////// class AirEmitter extends Emitter native; var() bool bAttachToPawn; // If False - Attach onto Camera var() bool bByOpacity; // Opacity-based or MaxParticle-based fading var() int NumSteps; // actually transient if bByOpacity=False var() range FadeRange; var() transient float FadeAlpha; var() transient int FadeAlphaByNum; var() transient airvolume RecentVolume; var() transient float RecentFadeSeconds; //var() transient float RecentSizeScale; // how fast to vanish myself if owner has entered different volume. (by modifying FadeAlpha difference) var(Vanish) float BoostVanishCoef; // vanishing speed compared to fading speed. (by modifying TimerRate) var(Vanish) float VanishCoef; var() int IndexPE; // which particleemitter function bool IsInAirVolume() { return ( RecentVolume != None && RecentVolume.EffectName != 'None' ); } simulated function Destroyed() { Super.Destroyed(); ClearL2Game(); } event ClearL2Game() { if(Owner != None && LineagePlayerController(Owner) != None && LineagePlayerController(Owner).AirEffect == self ) { LineagePlayerController(Owner).AirEffect = None; } SetBase(None); } event ForceKill() { if( GetStateName() != '_killpending' ) GotoState('_killpending'); } // inside-state function. forward decl. function TouchVolume(); function UnTouchVolume(); event SetAirVolume(AirVolume NewVolume) { RecentVolume = NewVolume; if( IsInAirVolume() ) RecentFadeSeconds = RecentVolume.FullFadeSeconds; } function Timer() { if( IsInAirVolume() ) TouchVolume(); else UnTouchVolume(); } function ApplyFadeAlpha() { //local int i; if(bByOpacity) { Emitters[IndexPE].Opacity = FadeAlpha; //for( i=0; i 5 ) T = T$"--"$GetItemName(string(RouteCache[i-1])); break; } else if ( i < 5 ) T = T$GetItemName(string(RouteCache[i]))$"-"; } Canvas.DrawText(" RouteCache: "$T, false); YPos += YL; Canvas.SetPos(4,YPos); } function float AdjustDesireFor(Pickup P) { return 0; } /* GetFacingDirection() returns direction faced relative to movement dir 0 = forward 16384 = right 32768 = back 49152 = left */ function int GetFacingDirection() { local float strafeMag; local vector Focus2D, Loc2D, Dest2D, Dir, LookDir, Y; // check for strafe or backup Focus2D = FocalPoint; Focus2D.Z = 0; Loc2D = Pawn.Location; Loc2D.Z = 0; Dest2D = Destination; Dest2D.Z = 0; lookDir = Normal(Focus2D - Loc2D); Dir = Normal(Dest2D - Loc2D); strafeMag = lookDir dot Dir; Y = (lookDir Cross vect(0,0,1)); if ((Y Dot (Dest2D - Loc2D)) < 0) return ( 49152 + 16384 * strafeMag ); else return ( 16384 - 16384 * strafeMag ); } // AdjustView() called if Controller's pawn is viewtarget of a player function AdjustView(float DeltaTime) { local float TargetYaw, TargetPitch; local rotator OldViewRotation,ViewRotation; Super.AdjustView(DeltaTime); if( !Pawn.bUpdateEyeHeight ) return; // update viewrotation ViewRotation = Rotation; OldViewRotation = Rotation; if ( Enemy == None ) { ViewRotation.Roll = 0; if ( DeltaTime < 0.2 ) { OldViewRotation.Yaw = OldViewRotation.Yaw & 65535; OldViewRotation.Pitch = OldViewRotation.Pitch & 65535; TargetYaw = float(Rotation.Yaw & 65535); if ( Abs(TargetYaw - OldViewRotation.Yaw) > 32768 ) { if ( TargetYaw < OldViewRotation.Yaw ) TargetYaw += 65536; else TargetYaw -= 65536; } TargetYaw = float(OldViewRotation.Yaw) * (1 - 5 * DeltaTime) + TargetYaw * 5 * DeltaTime; ViewRotation.Yaw = int(TargetYaw); TargetPitch = float(Rotation.Pitch & 65535); if ( Abs(TargetPitch - OldViewRotation.Pitch) > 32768 ) { if ( TargetPitch < OldViewRotation.Pitch ) TargetPitch += 65536; else TargetPitch -= 65536; } TargetPitch = float(OldViewRotation.Pitch) * (1 - 5 * DeltaTime) + TargetPitch * 5 * DeltaTime; ViewRotation.Pitch = int(TargetPitch); SetRotation(ViewRotation); } } } function SetOrders(name NewOrders, Controller OrderGiver); function actor GetOrderObject() { return None; } function name GetOrders() { return 'None'; } /* PrepareForMove() Give controller a chance to prepare for a move along the navigation network, from Anchor (current node) to Goal, given the reachspec for that movement. Called if the reachspec doesn't support the pawn's current configuration. By default, the pawn will crouch when it hits an actual obstruction. However, Pawns with complex behaviors for setting up their smaller collision may want to call that behavior from here */ event PrepareForMove(NavigationPoint Goal, ReachSpec Path); /* WaitForMover() Wait for Mover M to tell me it has completed its move */ function WaitForMover(Mover M) { if ( (Enemy != None) && (Level.TimeSeconds - LastSeenTime < 3.0) ) Focus = Enemy; PendingMover = M; bPreparingMove = true; Pawn.Acceleration = vect(0,0,0); } /* MoverFinished() Called by Mover when it finishes a move, and this pawn has the mover set as its PendingMover */ function MoverFinished() { if ( PendingMover.MyMarker.ProceedWithMove(Pawn) ) { PendingMover = None; bPreparingMove = false; } } /* UnderLift() called by mover when it hits a pawn with that mover as its pendingmover while moving to its destination */ function UnderLift(Mover M) { local NavigationPoint N; bPreparingMove = false; PendingMover = None; // find nearest lift exit and go for that if ( (MoveTarget == None) || MoveTarget.IsA('LiftCenter') ) for ( N=Level.NavigationPointList; N!=None; N=N.NextNavigationPoint ) if ( N.IsA('LiftExit') && (LiftExit(N).LiftTag == M.Tag) && ActorReachable(N) ) { MoveTarget = N; return; } } function bool PriorityObjective() { return false; } function Startle(Actor A); €aH¡$,A-g(H€¿-I( sclass Admin extends PlayerController; replication { reliable if( Role