From 9ebf058832fe72439d432dcfa7e5639ca0270466 Mon Sep 17 00:00:00 2001 From: Ari Archer Date: Tue, 23 Jan 2024 19:13:01 +0200 Subject: [PATCH] [docx] split commit for file 3400 Signed-off-by: Ari Archer --- .../observer/ResultsObserver.docx | Bin 0 -> 38561 bytes .../observer/ResultsObserver.scala | 281 - .../observer/ResultsStatsObserver.docx | Bin 0 -> 38330 bytes .../observer/ResultsStatsObserver.scala | 243 - .../shared_library/thrift_client/BUILD | 20 - .../shared_library/thrift_client/BUILD.docx | Bin 0 -> 36836 bytes .../FinagleThriftClientBuilder.docx | Bin 0 -> 39052 bytes .../FinagleThriftClientBuilder.scala | 198 - pushservice/BUILD.bazel | 48 - pushservice/BUILD.docx | Bin 0 -> 37128 bytes pushservice/README.docx | Bin 0 -> 37435 bytes pushservice/README.md | 45 - .../main/python/models/heavy_ranking/BUILD | 169 - .../python/models/heavy_ranking/BUILD.docx | Bin 0 -> 37269 bytes .../python/models/heavy_ranking/README.docx | Bin 0 -> 37379 bytes .../python/models/heavy_ranking/README.md | 20 - .../python/models/heavy_ranking/__init__.docx | Bin 0 -> 36611 bytes .../python/models/heavy_ranking/__init__.py | 0 .../models/heavy_ranking/deep_norm.docx | Bin 0 -> 38340 bytes .../python/models/heavy_ranking/deep_norm.py | 136 - .../python/models/heavy_ranking/eval.docx | Bin 0 -> 37429 bytes .../main/python/models/heavy_ranking/eval.py | 59 - .../python/models/heavy_ranking/features.docx | Bin 0 -> 38178 bytes .../python/models/heavy_ranking/features.py | 138 - .../python/models/heavy_ranking/graph.docx | Bin 0 -> 38176 bytes .../main/python/models/heavy_ranking/graph.py | 129 - .../python/models/heavy_ranking/lib/BUILD | 42 - .../models/heavy_ranking/lib/BUILD.docx | Bin 0 -> 36830 bytes .../models/heavy_ranking/lib/layers.docx | Bin 0 -> 37821 bytes .../python/models/heavy_ranking/lib/layers.py | 128 - .../models/heavy_ranking/lib/model.docx | Bin 0 -> 37481 bytes .../python/models/heavy_ranking/lib/model.py | 76 - .../models/heavy_ranking/lib/params.docx | Bin 0 -> 37070 bytes .../python/models/heavy_ranking/lib/params.py | 49 - .../models/heavy_ranking/model_pools.docx | Bin 0 -> 37074 bytes .../models/heavy_ranking/model_pools.py | 34 - .../python/models/heavy_ranking/params.docx | Bin 0 -> 37546 bytes .../python/models/heavy_ranking/params.py | 89 - .../python/models/heavy_ranking/run_args.docx | Bin 0 -> 37147 bytes .../python/models/heavy_ranking/run_args.py | 59 - .../update_warm_start_checkpoint.docx | Bin 0 -> 37989 bytes .../update_warm_start_checkpoint.py | 146 - pushservice/src/main/python/models/libs/BUILD | 16 - .../src/main/python/models/libs/BUILD.docx | Bin 0 -> 36851 bytes .../src/main/python/models/libs/__init__.docx | Bin 0 -> 36611 bytes .../src/main/python/models/libs/__init__.py | 0 .../models/libs/customized_full_sparse.docx | Bin 0 -> 37420 bytes .../models/libs/customized_full_sparse.py | 56 - .../python/models/libs/get_feat_config.docx | Bin 0 -> 38446 bytes .../python/models/libs/get_feat_config.py | 176 - .../main/python/models/libs/graph_utils.docx | Bin 0 -> 37271 bytes .../main/python/models/libs/graph_utils.py | 42 - .../python/models/libs/group_metrics.docx | Bin 0 -> 37892 bytes .../main/python/models/libs/group_metrics.py | 114 - .../main/python/models/libs/initializer.docx | Bin 0 -> 37967 bytes .../main/python/models/libs/initializer.py | 118 - .../models/libs/light_ranking_metrics.docx | Bin 0 -> 38759 bytes .../models/libs/light_ranking_metrics.py | 255 - .../python/models/libs/metric_fn_utils.docx | Bin 0 -> 39660 bytes .../python/models/libs/metric_fn_utils.py | 294 - .../main/python/models/libs/model_args.docx | Bin 0 -> 38391 bytes .../src/main/python/models/libs/model_args.py | 231 - .../main/python/models/libs/model_utils.docx | Bin 0 -> 39883 bytes .../main/python/models/libs/model_utils.py | 339 -- .../python/models/libs/warm_start_utils.docx | Bin 0 -> 39757 bytes .../python/models/libs/warm_start_utils.py | 309 - .../main/python/models/light_ranking/BUILD | 69 - .../python/models/light_ranking/BUILD.docx | Bin 0 -> 37004 bytes .../python/models/light_ranking/README.docx | Bin 0 -> 37122 bytes .../python/models/light_ranking/README.md | 14 - .../python/models/light_ranking/__init__.docx | Bin 0 -> 36611 bytes .../python/models/light_ranking/__init__.py | 0 .../models/light_ranking/deep_norm.docx | Bin 0 -> 39281 bytes .../python/models/light_ranking/deep_norm.py | 226 - .../models/light_ranking/eval_model.docx | Bin 0 -> 37656 bytes .../python/models/light_ranking/eval_model.py | 89 - .../models/light_ranking/model_pools_mlp.docx | Bin 0 -> 38527 bytes .../models/light_ranking/model_pools_mlp.py | 187 - .../twitter/frigate/pushservice/BUILD.bazel | 337 -- .../twitter/frigate/pushservice/BUILD.docx | Bin 0 -> 40395 bytes .../PushMixerThriftServerWarmupHandler.docx | Bin 0 -> 37825 bytes .../PushMixerThriftServerWarmupHandler.scala | 93 - .../frigate/pushservice/PushServiceMain.docx | Bin 0 -> 38158 bytes .../frigate/pushservice/PushServiceMain.scala | 193 - .../ContentRecommenderMixerAdaptor.docx | Bin 0 -> 39938 bytes .../ContentRecommenderMixerAdaptor.scala | 323 -- .../EarlyBirdFirstDegreeCandidateAdaptor.docx | Bin 0 -> 39590 bytes ...EarlyBirdFirstDegreeCandidateAdaptor.scala | 293 - .../ExploreVideoTweetCandidateAdaptor.docx | Bin 0 -> 38096 bytes .../ExploreVideoTweetCandidateAdaptor.scala | 120 - .../adaptor/FRSTweetCandidateAdaptor.docx | Bin 0 -> 39806 bytes .../adaptor/FRSTweetCandidateAdaptor.scala | 272 - .../adaptor/GenericCandidateAdaptor.docx | Bin 0 -> 37712 bytes .../adaptor/GenericCandidateAdaptor.scala | 107 - .../adaptor/HighQualityTweetsAdaptor.docx | Bin 0 -> 39550 bytes .../adaptor/HighQualityTweetsAdaptor.scala | 280 - .../ListsToRecommendCandidateAdaptor.docx | Bin 0 -> 38304 bytes .../ListsToRecommendCandidateAdaptor.scala | 152 - ...LoggedOutPushCandidateSourceGenerator.docx | Bin 0 -> 37349 bytes ...oggedOutPushCandidateSourceGenerator.scala | 54 - .../OnboardingPushCandidateAdaptor.docx | Bin 0 -> 37877 bytes .../OnboardingPushCandidateAdaptor.scala | 101 - .../adaptor/PushCandidateSourceGenerator.docx | Bin 0 -> 38233 bytes .../PushCandidateSourceGenerator.scala | 162 - .../TopTweetImpressionsCandidateAdaptor.docx | Bin 0 -> 39890 bytes .../TopTweetImpressionsCandidateAdaptor.scala | 326 -- .../adaptor/TopTweetsByGeoAdaptor.docx | Bin 0 -> 40844 bytes .../adaptor/TopTweetsByGeoAdaptor.scala | 413 -- .../adaptor/TrendsCandidatesAdaptor.docx | Bin 0 -> 39132 bytes .../adaptor/TrendsCandidatesAdaptor.scala | 215 - .../adaptor/TripGeoCandidatesAdaptor.docx | Bin 0 -> 38828 bytes .../adaptor/TripGeoCandidatesAdaptor.scala | 188 - .../frigate/pushservice/config/Config.docx | Bin 0 -> 41240 bytes .../frigate/pushservice/config/Config.scala | 461 -- .../pushservice/config/DeployConfig.docx | Bin 0 -> 56039 bytes .../pushservice/config/DeployConfig.scala | 2150 ------- .../config/ExperimentsWithStats.docx | Bin 0 -> 36912 bytes .../config/ExperimentsWithStats.scala | 16 - .../pushservice/config/ProdConfig.docx | Bin 0 -> 39310 bytes .../pushservice/config/ProdConfig.scala | 230 - .../pushservice/config/StagingConfig.docx | Bin 0 -> 38985 bytes .../pushservice/config/StagingConfig.scala | 193 - .../mlconfig/DeepbirdV2ModelConfig.docx | Bin 0 -> 37007 bytes .../mlconfig/DeepbirdV2ModelConfig.scala | 23 - .../controller/PushServiceController.docx | Bin 0 -> 37723 bytes .../controller/PushServiceController.scala | 114 - .../DisplayLocationNotSupportedException.docx | Bin 0 -> 36827 bytes ...DisplayLocationNotSupportedException.scala | 12 - .../InvalidSportDomainException.docx | Bin 0 -> 36844 bytes .../InvalidSportDomainException.scala | 12 - .../TweetNTabRequestHydratorException.docx | Bin 0 -> 36777 bytes .../TweetNTabRequestHydratorException.scala | 7 - .../exception/UnsupportedCrtException.docx | Bin 0 -> 36830 bytes .../exception/UnsupportedCrtException.scala | 11 - .../exception/UttEntityNotFoundException.docx | Bin 0 -> 36850 bytes .../UttEntityNotFoundException.scala | 12 - .../pushservice/ml/HealthFeatureGetter.docx | Bin 0 -> 39102 bytes .../pushservice/ml/HealthFeatureGetter.scala | 220 - .../ml/HydrationContextBuilder.docx | Bin 0 -> 38275 bytes .../ml/HydrationContextBuilder.scala | 179 - .../pushservice/ml/PushMLModelScorer.docx | Bin 0 -> 38477 bytes .../pushservice/ml/PushMLModelScorer.scala | 188 - .../pushservice/model/DiscoverTwitter.docx | Bin 0 -> 37509 bytes .../pushservice/model/DiscoverTwitter.scala | 89 - .../pushservice/model/F1FirstdegreeTweet.docx | Bin 0 -> 37524 bytes .../model/F1FirstdegreeTweet.scala | 60 - .../ListRecommendationPushCandidate.docx | Bin 0 -> 37497 bytes .../ListRecommendationPushCandidate.scala | 72 - .../MagicFanoutCreatorEventPushCandidate.docx | Bin 0 -> 38032 bytes ...MagicFanoutCreatorEventPushCandidate.scala | 136 - .../model/MagicFanoutEventPushCandidate.docx | Bin 0 -> 39747 bytes .../model/MagicFanoutEventPushCandidate.scala | 303 - .../model/MagicFanoutHydratedCandidate.docx | Bin 0 -> 38290 bytes .../model/MagicFanoutHydratedCandidate.scala | 147 - .../model/MagicFanoutNewsEvent.docx | Bin 0 -> 37932 bytes .../model/MagicFanoutNewsEvent.scala | 99 - ...MagicFanoutProductLaunchPushCandidate.docx | Bin 0 -> 37726 bytes ...agicFanoutProductLaunchPushCandidate.scala | 95 - .../model/MagicFanoutSportsPushCandidate.docx | Bin 0 -> 38128 bytes .../MagicFanoutSportsPushCandidate.scala | 119 - .../model/OutOfNetworkTweetPushCandidate.docx | Bin 0 -> 37620 bytes .../OutOfNetworkTweetPushCandidate.scala | 68 - .../frigate/pushservice/model/PushTypes.docx | Bin 0 -> 37277 bytes .../frigate/pushservice/model/PushTypes.scala | 61 - .../model/ScheduledSpaceSpeaker.docx | Bin 0 -> 37660 bytes .../model/ScheduledSpaceSpeaker.scala | 85 - .../model/ScheduledSpaceSubscriber.docx | Bin 0 -> 37718 bytes .../model/ScheduledSpaceSubscriber.scala | 86 - .../SubscribedSearchTweetPushCandidate.docx | Bin 0 -> 37371 bytes .../SubscribedSearchTweetPushCandidate.scala | 56 - .../TopTweetImpressionsPushCandidate.docx | Bin 0 -> 37637 bytes .../TopTweetImpressionsPushCandidate.scala | 70 - .../model/TopicProofTweetPushCandidate.docx | Bin 0 -> 37755 bytes .../model/TopicProofTweetPushCandidate.scala | 71 - .../model/TrendTweetPushCandidate.docx | Bin 0 -> 37389 bytes .../model/TrendTweetPushCandidate.scala | 50 - .../model/TripTweetPushCandidate.docx | Bin 0 -> 37512 bytes .../model/TripTweetPushCandidate.scala | 60 - .../pushservice/model/TweetAction.docx | Bin 0 -> 37050 bytes .../pushservice/model/TweetAction.scala | 26 - .../pushservice/model/TweetFavorite.docx | Bin 0 -> 37364 bytes .../pushservice/model/TweetFavorite.scala | 53 - .../pushservice/model/TweetRetweet.docx | Bin 0 -> 37361 bytes .../pushservice/model/TweetRetweet.scala | 51 - .../pushservice/model/candidate/CopyInfo.docx | Bin 0 -> 37035 bytes .../model/candidate/CopyInfo.scala | 33 - .../pushservice/model/candidate/MLScores.docx | Bin 0 -> 39503 bytes .../model/candidate/MLScores.scala | 307 - .../model/candidate/QualityScribing.docx | Bin 0 -> 37848 bytes .../model/candidate/QualityScribing.scala | 104 - .../pushservice/model/candidate/Scriber.docx | Bin 0 -> 39749 bytes .../pushservice/model/candidate/Scriber.scala | 277 - .../ibis/CustomConfigurationMapForIbis.docx | Bin 0 -> 36975 bytes .../ibis/CustomConfigurationMapForIbis.scala | 25 - .../DiscoverTwitterPushIbis2Hydrator.docx | Bin 0 -> 36944 bytes .../DiscoverTwitterPushIbis2Hydrator.scala | 17 - .../ibis/F1FirstDegreeTweetIbis2Hydrator.docx | Bin 0 -> 37056 bytes .../F1FirstDegreeTweetIbis2Hydrator.scala | 24 - .../pushservice/model/ibis/Ibis2Hydrator.docx | Bin 0 -> 38147 bytes .../model/ibis/Ibis2Hydrator.scala | 127 - .../model/ibis/InlineActionIbis2Hydrator.docx | Bin 0 -> 36843 bytes .../ibis/InlineActionIbis2Hydrator.scala | 12 - .../model/ibis/ListIbis2Hydrator.docx | Bin 0 -> 36990 bytes .../model/ibis/ListIbis2Hydrator.scala | 21 - .../MagicFanoutCreatorEventIbis2Hydrator.docx | Bin 0 -> 37107 bytes ...MagicFanoutCreatorEventIbis2Hydrator.scala | 29 - .../MagicFanoutNewsEventIbis2Hydrator.docx | Bin 0 -> 37839 bytes .../MagicFanoutNewsEventIbis2Hydrator.scala | 103 - ...MagicFanoutProductLaunchIbis2Hydrator.docx | Bin 0 -> 37336 bytes ...agicFanoutProductLaunchIbis2Hydrator.scala | 54 - .../MagicFanoutSportsEventIbis2Hydrator.docx | Bin 0 -> 37703 bytes .../MagicFanoutSportsEventIbis2Hydrator.scala | 89 - .../ibis/OutOfNetworkTweetIbis2Hydrator.docx | Bin 0 -> 37815 bytes .../ibis/OutOfNetworkTweetIbis2Hydrator.scala | 90 - .../model/ibis/OverrideForIbis2Request.docx | Bin 0 -> 39027 bytes .../model/ibis/OverrideForIbis2Request.scala | 210 - .../model/ibis/PushOverrideInfo.docx | Bin 0 -> 39015 bytes .../model/ibis/PushOverrideInfo.scala | 246 - .../RankedSocialContextIbis2Hydrator.docx | Bin 0 -> 36989 bytes .../RankedSocialContextIbis2Hydrator.scala | 22 - .../ScheduledSpaceSpeakerIbis2Hydrator.docx | Bin 0 -> 37204 bytes .../ScheduledSpaceSpeakerIbis2Hydrator.scala | 34 - ...ScheduledSpaceSubscriberIbis2Hydrator.docx | Bin 0 -> 37096 bytes ...cheduledSpaceSubscriberIbis2Hydrator.scala | 29 - .../SubscribedSearchTweetIbis2Hydrator.docx | Bin 0 -> 37158 bytes .../SubscribedSearchTweetIbis2Hydrator.scala | 33 - ...weetImpressionsCandidateIbis2Hydrator.docx | Bin 0 -> 36985 bytes ...eetImpressionsCandidateIbis2Hydrator.scala | 21 - .../ibis/TopicProofTweetIbis2Hydrator.docx | Bin 0 -> 37120 bytes .../ibis/TopicProofTweetIbis2Hydrator.scala | 32 - .../model/ibis/TrendTweetIbis2Hydrator.docx | Bin 0 -> 36934 bytes .../model/ibis/TrendTweetIbis2Hydrator.scala | 16 - .../ibis/TweetCandidateIbis2Hydrator.docx | Bin 0 -> 38308 bytes .../ibis/TweetCandidateIbis2Hydrator.scala | 166 - .../ibis/TweetFavoriteIbis2Hydrator.docx | Bin 0 -> 36980 bytes .../ibis/TweetFavoriteIbis2Hydrator.scala | 21 - .../model/ibis/TweetRetweetIbis2Hydrator.docx | Bin 0 -> 37150 bytes .../ibis/TweetRetweetIbis2Hydrator.scala | 32 - .../model/ntab/CandidateNTabCopy.docx | Bin 0 -> 36961 bytes .../model/ntab/CandidateNTabCopy.scala | 21 - .../DiscoverTwitterNtabRequestHydrator.docx | Bin 0 -> 37504 bytes .../DiscoverTwitterNtabRequestHydrator.scala | 58 - .../model/ntab/EventNTabRequestHydrator.docx | Bin 0 -> 36958 bytes .../model/ntab/EventNTabRequestHydrator.scala | 21 - ...F1FirstDegreeTweetNTabRequestHydrator.docx | Bin 0 -> 36995 bytes ...1FirstDegreeTweetNTabRequestHydrator.scala | 18 - .../ListCandidateNTabRequestHydrator.docx | Bin 0 -> 37128 bytes .../ListCandidateNTabRequestHydrator.scala | 34 - ...FanoutCreatorEventNtabRequestHydrator.docx | Bin 0 -> 37832 bytes ...anoutCreatorEventNtabRequestHydrator.scala | 110 - ...gicFanoutNewsEventNTabRequestHydrator.docx | Bin 0 -> 36984 bytes ...icFanoutNewsEventNTabRequestHydrator.scala | 16 - ...anoutProductLaunchNtabRequestHydrator.docx | Bin 0 -> 37706 bytes ...noutProductLaunchNtabRequestHydrator.scala | 97 - ...cFanoutSportsEventNTabRequestHydrator.docx | Bin 0 -> 37970 bytes ...FanoutSportsEventNTabRequestHydrator.scala | 95 - .../pushservice/model/ntab/NTabRequest.docx | Bin 0 -> 36781 bytes .../pushservice/model/ntab/NTabRequest.scala | 10 - .../model/ntab/NTabRequestHydrator.docx | Bin 0 -> 37588 bytes .../model/ntab/NTabRequestHydrator.scala | 64 - .../model/ntab/NTabSocialContext.docx | Bin 0 -> 37241 bytes .../model/ntab/NTabSocialContext.scala | 46 - .../OutOfNetworkTweetNTabRequestHydrator.docx | Bin 0 -> 37768 bytes ...OutOfNetworkTweetNTabRequestHydrator.scala | 78 - .../ScheduledSpaceNTabRequestHydrator.docx | Bin 0 -> 37907 bytes .../ScheduledSpaceNTabRequestHydrator.scala | 106 - ...scribedSearchTweetNtabRequestHydrator.docx | Bin 0 -> 37096 bytes ...cribedSearchTweetNtabRequestHydrator.scala | 23 - ...opTweetImpressionsNTabRequestHydrator.docx | Bin 0 -> 37175 bytes ...pTweetImpressionsNTabRequestHydrator.scala | 37 - .../TopicProofTweetNtabRequestHydrator.docx | Bin 0 -> 37497 bytes .../TopicProofTweetNtabRequestHydrator.scala | 60 - .../model/ntab/TrendTweetNtabHydrator.docx | Bin 0 -> 37641 bytes .../model/ntab/TrendTweetNtabHydrator.scala | 61 - .../TweetFavoriteNTabRequestHydrator.docx | Bin 0 -> 37175 bytes .../TweetFavoriteNTabRequestHydrator.scala | 38 - .../model/ntab/TweetNTabRequestHydrator.docx | Bin 0 -> 37480 bytes .../model/ntab/TweetNTabRequestHydrator.scala | 55 - .../ntab/TweetRetweetNTabRequestHydrator.docx | Bin 0 -> 37174 bytes .../TweetRetweetNTabRequestHydrator.scala | 38 - .../module/DeployConfigModule.docx | Bin 0 -> 37448 bytes .../module/DeployConfigModule.scala | 68 - .../pushservice/module/FilterModule.docx | Bin 0 -> 36887 bytes .../pushservice/module/FilterModule.scala | 16 - .../pushservice/module/FlagModule.docx | Bin 0 -> 37159 bytes .../pushservice/module/FlagModule.scala | 56 - .../LoggedOutPushTargetUserBuilderModule.docx | Bin 0 -> 36976 bytes ...LoggedOutPushTargetUserBuilderModule.scala | 27 - .../pushservice/module/PushHandlerModule.docx | Bin 0 -> 37396 bytes .../module/PushHandlerModule.scala | 78 - .../module/PushServiceDarkTrafficModule.docx | Bin 0 -> 37250 bytes .../module/PushServiceDarkTrafficModule.scala | 33 - .../module/PushTargetUserBuilderModule.docx | Bin 0 -> 37532 bytes .../module/PushTargetUserBuilderModule.scala | 64 - .../module/ThriftWebFormsModule.docx | Bin 0 -> 36808 bytes .../module/ThriftWebFormsModule.scala | 9 - .../pushservice/params/DeciderKey.docx | Bin 0 -> 38943 bytes .../pushservice/params/DeciderKey.scala | 210 - .../pushservice/params/PushConstants.docx | Bin 0 -> 38736 bytes .../pushservice/params/PushConstants.scala | 126 - .../frigate/pushservice/params/PushEnums.docx | Bin 0 -> 37681 bytes .../pushservice/params/PushEnums.scala | 135 - .../params/PushFeatureSwitchParams.docx | Bin 0 -> 64748 bytes .../params/PushFeatureSwitchParams.scala | 5043 ----------------- .../params/PushFeatureSwitches.docx | Bin 0 -> 44294 bytes .../params/PushFeatureSwitches.scala | 751 --- .../pushservice/params/PushMLModelParams.docx | Bin 0 -> 37277 bytes .../params/PushMLModelParams.scala | 60 - .../pushservice/params/PushParams.docx | Bin 0 -> 40233 bytes .../pushservice/params/PushParams.scala | 534 -- .../params/PushServiceTunableKeys.docx | Bin 0 -> 36813 bytes .../params/PushServiceTunableKeys.scala | 9 - .../pushservice/params/ShardParams.docx | Bin 0 -> 36692 bytes .../pushservice/params/ShardParams.scala | 3 - ...ringEpsilonGreedyExplorationPredicate.docx | Bin 0 -> 37595 bytes ...ingEpsilonGreedyExplorationPredicate.scala | 58 - .../predicate/BqmlHealthModelPredicates.docx | Bin 0 -> 38172 bytes .../predicate/BqmlHealthModelPredicates.scala | 129 - .../predicate/BqmlQualityModelPredicates.docx | Bin 0 -> 38360 bytes .../BqmlQualityModelPredicates.scala | 141 - .../predicate/CaretFeedbackHistoryFilter.docx | Bin 0 -> 37369 bytes .../CaretFeedbackHistoryFilter.scala | 99 - .../predicate/CasLockPredicate.docx | Bin 0 -> 37302 bytes .../predicate/CasLockPredicate.scala | 45 - .../predicate/CrtDeciderPredicate.docx | Bin 0 -> 37006 bytes .../predicate/CrtDeciderPredicate.scala | 25 - .../predicate/DiscoverTwitterPredicate.docx | Bin 0 -> 37386 bytes .../predicate/DiscoverTwitterPredicate.scala | 47 - .../predicate/FatiguePredicate.docx | Bin 0 -> 37376 bytes .../predicate/FatiguePredicate.scala | 74 - .../predicate/HealthPredicates.docx | Bin 0 -> 42633 bytes .../predicate/HealthPredicates.scala | 740 --- .../JointDauAndQualityModelPredicate.docx | Bin 0 -> 37182 bytes .../JointDauAndQualityModelPredicate.scala | 39 - .../pushservice/predicate/ListPredicates.docx | Bin 0 -> 37596 bytes .../predicate/ListPredicates.scala | 110 - .../LoggedOutPreRankingPredicates.docx | Bin 0 -> 37171 bytes .../LoggedOutPreRankingPredicates.scala | 37 - .../predicate/LoggedOutTargetPredicates.docx | Bin 0 -> 37357 bytes .../predicate/LoggedOutTargetPredicates.scala | 53 - .../MlModelsHoldbackExperimentPredicate.docx | Bin 0 -> 37574 bytes .../MlModelsHoldbackExperimentPredicate.scala | 71 - .../predicate/OONSpreadControlPredicate.docx | Bin 0 -> 37715 bytes .../predicate/OONSpreadControlPredicate.scala | 116 - ...ONTweetNegativeFeedbackBasedPredicate.docx | Bin 0 -> 37694 bytes ...NTweetNegativeFeedbackBasedPredicate.scala | 82 - ...tOfNetworkCandidatesQualityPredicates.docx | Bin 0 -> 38945 bytes ...OfNetworkCandidatesQualityPredicates.scala | 221 - .../predicate/PNegMultimodalPredicates.docx | Bin 0 -> 37698 bytes .../predicate/PNegMultimodalPredicates.scala | 83 - .../predicate/PostRankingPredicateHelper.docx | Bin 0 -> 37359 bytes .../PostRankingPredicateHelper.scala | 50 - .../predicate/PreRankingPredicates.docx | Bin 0 -> 38259 bytes .../predicate/PreRankingPredicates.scala | 158 - .../predicate/PredicatesForCandidate.docx | Bin 0 -> 43289 bytes .../predicate/PredicatesForCandidate.scala | 874 --- .../predicate/SGSPredicatesForCandidate.docx | Bin 0 -> 38196 bytes .../predicate/SGSPredicatesForCandidate.scala | 174 - .../predicate/ScarecrowPredicate.docx | Bin 0 -> 37920 bytes .../predicate/ScarecrowPredicate.scala | 138 - .../pushservice/predicate/SpacePredicate.docx | Bin 0 -> 38309 bytes .../predicate/SpacePredicate.scala | 153 - .../predicate/TargetEngagementPredicate.docx | Bin 0 -> 37063 bytes .../predicate/TargetEngagementPredicate.scala | 27 - .../TargetNtabCaretClickFatiguePredicate.docx | Bin 0 -> 37883 bytes ...TargetNtabCaretClickFatiguePredicate.scala | 91 - .../predicate/TargetPredicates.docx | Bin 0 -> 39358 bytes .../predicate/TargetPredicates.scala | 292 - .../TopTweetImpressionsPredicates.docx | Bin 0 -> 37349 bytes .../TopTweetImpressionsPredicates.scala | 56 - .../TweetEngagementRatioPredicate.docx | Bin 0 -> 37922 bytes .../TweetEngagementRatioPredicate.scala | 112 - .../predicate/TweetLanguagePredicate.docx | Bin 0 -> 37967 bytes .../predicate/TweetLanguagePredicate.scala | 109 - .../TweetWithheldContentPredicate.docx | Bin 0 -> 37177 bytes .../TweetWithheldContentPredicate.scala | 35 - .../event/EventPredicatesForCandidate.docx | Bin 0 -> 38265 bytes .../event/EventPredicatesForCandidate.scala | 155 - .../MagicFanoutPredicatesForCandidate.docx | Bin 0 -> 41183 bytes .../MagicFanoutPredicatesForCandidate.scala | 525 -- .../MagicFanoutPredicatesUtil.docx | Bin 0 -> 38822 bytes .../MagicFanoutPredicatesUtil.scala | 218 - .../magic_fanout/MagicFanoutSportsUtil.docx | Bin 0 -> 38850 bytes .../magic_fanout/MagicFanoutSportsUtil.scala | 231 - ...argetingPredicateWrappersForCandidate.docx | Bin 0 -> 37993 bytes ...rgetingPredicateWrappersForCandidate.scala | 133 - ...TBasedNtabCaretClickFatiguePredicates.docx | Bin 0 -> 42150 bytes ...BasedNtabCaretClickFatiguePredicates.scala | 973 ---- .../ContinuousFunction.docx | Bin 0 -> 37854 bytes .../ContinuousFunction.scala | 148 - .../ntab_caret_fatigue/FeedbackModel.docx | Bin 0 -> 37722 bytes .../ntab_caret_fatigue/FeedbackModel.scala | 136 - .../MagicFanoutNtabCaretFatiguePredicate.docx | Bin 0 -> 37101 bytes ...MagicFanoutNtabCaretFatiguePredicate.scala | 28 - ...abCaretClickCandidateFatiguePredicate.docx | Bin 0 -> 37520 bytes ...bCaretClickCandidateFatiguePredicate.scala | 87 - .../NtabCaretClickFatiguePredicate.docx | Bin 0 -> 37320 bytes .../NtabCaretClickFatiguePredicate.scala | 47 - .../NtabCaretClickFatigueUtils.docx | Bin 0 -> 37729 bytes .../NtabCaretClickFatigueUtils.scala | 108 - 400 files changed, 31668 deletions(-) create mode 100644 product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/observer/ResultsObserver.docx delete mode 100644 product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/observer/ResultsObserver.scala create mode 100644 product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/observer/ResultsStatsObserver.docx delete mode 100644 product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/observer/ResultsStatsObserver.scala delete mode 100644 product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/thrift_client/BUILD create mode 100644 product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/thrift_client/BUILD.docx create mode 100644 product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/thrift_client/FinagleThriftClientBuilder.docx delete mode 100644 product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/thrift_client/FinagleThriftClientBuilder.scala delete mode 100644 pushservice/BUILD.bazel create mode 100644 pushservice/BUILD.docx create mode 100644 pushservice/README.docx delete mode 100644 pushservice/README.md delete mode 100644 pushservice/src/main/python/models/heavy_ranking/BUILD create mode 100644 pushservice/src/main/python/models/heavy_ranking/BUILD.docx create mode 100644 pushservice/src/main/python/models/heavy_ranking/README.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/README.md create mode 100644 pushservice/src/main/python/models/heavy_ranking/__init__.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/__init__.py create mode 100644 pushservice/src/main/python/models/heavy_ranking/deep_norm.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/deep_norm.py create mode 100644 pushservice/src/main/python/models/heavy_ranking/eval.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/eval.py create mode 100644 pushservice/src/main/python/models/heavy_ranking/features.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/features.py create mode 100644 pushservice/src/main/python/models/heavy_ranking/graph.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/graph.py delete mode 100644 pushservice/src/main/python/models/heavy_ranking/lib/BUILD create mode 100644 pushservice/src/main/python/models/heavy_ranking/lib/BUILD.docx create mode 100644 pushservice/src/main/python/models/heavy_ranking/lib/layers.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/lib/layers.py create mode 100644 pushservice/src/main/python/models/heavy_ranking/lib/model.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/lib/model.py create mode 100644 pushservice/src/main/python/models/heavy_ranking/lib/params.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/lib/params.py create mode 100644 pushservice/src/main/python/models/heavy_ranking/model_pools.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/model_pools.py create mode 100644 pushservice/src/main/python/models/heavy_ranking/params.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/params.py create mode 100644 pushservice/src/main/python/models/heavy_ranking/run_args.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/run_args.py create mode 100644 pushservice/src/main/python/models/heavy_ranking/update_warm_start_checkpoint.docx delete mode 100644 pushservice/src/main/python/models/heavy_ranking/update_warm_start_checkpoint.py delete mode 100644 pushservice/src/main/python/models/libs/BUILD create mode 100644 pushservice/src/main/python/models/libs/BUILD.docx create mode 100644 pushservice/src/main/python/models/libs/__init__.docx delete mode 100644 pushservice/src/main/python/models/libs/__init__.py create mode 100644 pushservice/src/main/python/models/libs/customized_full_sparse.docx delete mode 100644 pushservice/src/main/python/models/libs/customized_full_sparse.py create mode 100644 pushservice/src/main/python/models/libs/get_feat_config.docx delete mode 100644 pushservice/src/main/python/models/libs/get_feat_config.py create mode 100644 pushservice/src/main/python/models/libs/graph_utils.docx delete mode 100644 pushservice/src/main/python/models/libs/graph_utils.py create mode 100644 pushservice/src/main/python/models/libs/group_metrics.docx delete mode 100644 pushservice/src/main/python/models/libs/group_metrics.py create mode 100644 pushservice/src/main/python/models/libs/initializer.docx delete mode 100644 pushservice/src/main/python/models/libs/initializer.py create mode 100644 pushservice/src/main/python/models/libs/light_ranking_metrics.docx delete mode 100644 pushservice/src/main/python/models/libs/light_ranking_metrics.py create mode 100644 pushservice/src/main/python/models/libs/metric_fn_utils.docx delete mode 100644 pushservice/src/main/python/models/libs/metric_fn_utils.py create mode 100644 pushservice/src/main/python/models/libs/model_args.docx delete mode 100644 pushservice/src/main/python/models/libs/model_args.py create mode 100644 pushservice/src/main/python/models/libs/model_utils.docx delete mode 100644 pushservice/src/main/python/models/libs/model_utils.py create mode 100644 pushservice/src/main/python/models/libs/warm_start_utils.docx delete mode 100644 pushservice/src/main/python/models/libs/warm_start_utils.py delete mode 100644 pushservice/src/main/python/models/light_ranking/BUILD create mode 100644 pushservice/src/main/python/models/light_ranking/BUILD.docx create mode 100644 pushservice/src/main/python/models/light_ranking/README.docx delete mode 100644 pushservice/src/main/python/models/light_ranking/README.md create mode 100644 pushservice/src/main/python/models/light_ranking/__init__.docx delete mode 100644 pushservice/src/main/python/models/light_ranking/__init__.py create mode 100644 pushservice/src/main/python/models/light_ranking/deep_norm.docx delete mode 100644 pushservice/src/main/python/models/light_ranking/deep_norm.py create mode 100644 pushservice/src/main/python/models/light_ranking/eval_model.docx delete mode 100644 pushservice/src/main/python/models/light_ranking/eval_model.py create mode 100644 pushservice/src/main/python/models/light_ranking/model_pools_mlp.docx delete mode 100644 pushservice/src/main/python/models/light_ranking/model_pools_mlp.py delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/BUILD.bazel create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/BUILD.docx create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/PushMixerThriftServerWarmupHandler.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/PushMixerThriftServerWarmupHandler.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/PushServiceMain.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/PushServiceMain.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ContentRecommenderMixerAdaptor.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ContentRecommenderMixerAdaptor.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/EarlyBirdFirstDegreeCandidateAdaptor.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/EarlyBirdFirstDegreeCandidateAdaptor.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ExploreVideoTweetCandidateAdaptor.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ExploreVideoTweetCandidateAdaptor.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/FRSTweetCandidateAdaptor.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/FRSTweetCandidateAdaptor.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/GenericCandidateAdaptor.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/GenericCandidateAdaptor.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/HighQualityTweetsAdaptor.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/HighQualityTweetsAdaptor.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ListsToRecommendCandidateAdaptor.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ListsToRecommendCandidateAdaptor.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/LoggedOutPushCandidateSourceGenerator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/LoggedOutPushCandidateSourceGenerator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/OnboardingPushCandidateAdaptor.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/OnboardingPushCandidateAdaptor.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/PushCandidateSourceGenerator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/PushCandidateSourceGenerator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetImpressionsCandidateAdaptor.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetImpressionsCandidateAdaptor.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetsByGeoAdaptor.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetsByGeoAdaptor.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TrendsCandidatesAdaptor.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TrendsCandidatesAdaptor.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TripGeoCandidatesAdaptor.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TripGeoCandidatesAdaptor.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/config/Config.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/config/Config.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/config/DeployConfig.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/config/DeployConfig.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/config/ExperimentsWithStats.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/config/ExperimentsWithStats.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/config/ProdConfig.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/config/ProdConfig.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/config/StagingConfig.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/config/StagingConfig.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/config/mlconfig/DeepbirdV2ModelConfig.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/config/mlconfig/DeepbirdV2ModelConfig.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/controller/PushServiceController.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/controller/PushServiceController.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/DisplayLocationNotSupportedException.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/DisplayLocationNotSupportedException.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/InvalidSportDomainException.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/InvalidSportDomainException.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/TweetNTabRequestHydratorException.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/TweetNTabRequestHydratorException.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/UnsupportedCrtException.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/UnsupportedCrtException.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/UttEntityNotFoundException.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/UttEntityNotFoundException.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/HealthFeatureGetter.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/HealthFeatureGetter.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/HydrationContextBuilder.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/HydrationContextBuilder.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/PushMLModelScorer.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/PushMLModelScorer.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/DiscoverTwitter.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/DiscoverTwitter.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/F1FirstdegreeTweet.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/F1FirstdegreeTweet.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ListRecommendationPushCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ListRecommendationPushCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutCreatorEventPushCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutCreatorEventPushCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutEventPushCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutEventPushCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutHydratedCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutHydratedCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutNewsEvent.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutNewsEvent.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutProductLaunchPushCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutProductLaunchPushCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutSportsPushCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutSportsPushCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/OutOfNetworkTweetPushCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/OutOfNetworkTweetPushCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/PushTypes.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/PushTypes.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ScheduledSpaceSpeaker.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ScheduledSpaceSpeaker.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ScheduledSpaceSubscriber.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ScheduledSpaceSubscriber.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/SubscribedSearchTweetPushCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/SubscribedSearchTweetPushCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TopTweetImpressionsPushCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TopTweetImpressionsPushCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TopicProofTweetPushCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TopicProofTweetPushCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TrendTweetPushCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TrendTweetPushCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TripTweetPushCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TripTweetPushCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetAction.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetAction.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetFavorite.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetFavorite.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetRetweet.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetRetweet.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/CopyInfo.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/CopyInfo.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/MLScores.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/MLScores.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/QualityScribing.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/QualityScribing.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/Scriber.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/Scriber.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/CustomConfigurationMapForIbis.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/CustomConfigurationMapForIbis.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/DiscoverTwitterPushIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/DiscoverTwitterPushIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/F1FirstDegreeTweetIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/F1FirstDegreeTweetIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/Ibis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/Ibis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/InlineActionIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/InlineActionIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ListIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ListIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutCreatorEventIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutCreatorEventIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutNewsEventIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutNewsEventIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutProductLaunchIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutProductLaunchIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutSportsEventIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutSportsEventIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OutOfNetworkTweetIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OutOfNetworkTweetIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OverrideForIbis2Request.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OverrideForIbis2Request.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/PushOverrideInfo.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/PushOverrideInfo.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/RankedSocialContextIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/RankedSocialContextIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSpeakerIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSpeakerIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSubscriberIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSubscriberIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/SubscribedSearchTweetIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/SubscribedSearchTweetIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TopTweetImpressionsCandidateIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TopTweetImpressionsCandidateIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TopicProofTweetIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TopicProofTweetIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TrendTweetIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TrendTweetIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetCandidateIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetCandidateIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetFavoriteIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetFavoriteIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetRetweetIbis2Hydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetRetweetIbis2Hydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/CandidateNTabCopy.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/CandidateNTabCopy.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/DiscoverTwitterNtabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/DiscoverTwitterNtabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/EventNTabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/EventNTabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/F1FirstDegreeTweetNTabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/F1FirstDegreeTweetNTabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/ListCandidateNTabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/ListCandidateNTabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutCreatorEventNtabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutCreatorEventNtabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutNewsEventNTabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutNewsEventNTabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutProductLaunchNtabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutProductLaunchNtabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutSportsEventNTabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutSportsEventNTabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/NTabRequest.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/NTabRequest.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/NTabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/NTabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/NTabSocialContext.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/NTabSocialContext.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/OutOfNetworkTweetNTabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/OutOfNetworkTweetNTabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/ScheduledSpaceNTabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/ScheduledSpaceNTabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/SubscribedSearchTweetNtabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/SubscribedSearchTweetNtabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TopTweetImpressionsNTabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TopTweetImpressionsNTabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TopicProofTweetNtabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TopicProofTweetNtabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TrendTweetNtabHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TrendTweetNtabHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetFavoriteNTabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetFavoriteNTabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetNTabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetNTabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetRetweetNTabRequestHydrator.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetRetweetNTabRequestHydrator.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/DeployConfigModule.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/DeployConfigModule.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/FilterModule.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/FilterModule.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/FlagModule.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/FlagModule.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/LoggedOutPushTargetUserBuilderModule.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/LoggedOutPushTargetUserBuilderModule.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/PushHandlerModule.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/PushHandlerModule.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/PushServiceDarkTrafficModule.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/PushServiceDarkTrafficModule.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/PushTargetUserBuilderModule.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/PushTargetUserBuilderModule.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/ThriftWebFormsModule.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/module/ThriftWebFormsModule.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/DeciderKey.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/DeciderKey.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushConstants.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushConstants.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushEnums.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushEnums.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushFeatureSwitchParams.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushFeatureSwitchParams.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushFeatureSwitches.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushFeatureSwitches.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushMLModelParams.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushMLModelParams.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushParams.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushParams.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushServiceTunableKeys.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushServiceTunableKeys.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/ShardParams.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/params/ShardParams.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BigFilteringEpsilonGreedyExplorationPredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BigFilteringEpsilonGreedyExplorationPredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlHealthModelPredicates.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlHealthModelPredicates.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlQualityModelPredicates.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlQualityModelPredicates.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CaretFeedbackHistoryFilter.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CaretFeedbackHistoryFilter.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CasLockPredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CasLockPredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CrtDeciderPredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CrtDeciderPredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/DiscoverTwitterPredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/DiscoverTwitterPredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/FatiguePredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/FatiguePredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/HealthPredicates.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/HealthPredicates.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/JointDauAndQualityModelPredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/JointDauAndQualityModelPredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ListPredicates.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ListPredicates.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutPreRankingPredicates.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutPreRankingPredicates.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutTargetPredicates.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutTargetPredicates.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/MlModelsHoldbackExperimentPredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/MlModelsHoldbackExperimentPredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OONSpreadControlPredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OONSpreadControlPredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OONTweetNegativeFeedbackBasedPredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OONTweetNegativeFeedbackBasedPredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OutOfNetworkCandidatesQualityPredicates.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OutOfNetworkCandidatesQualityPredicates.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PNegMultimodalPredicates.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PNegMultimodalPredicates.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PostRankingPredicateHelper.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PostRankingPredicateHelper.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PreRankingPredicates.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PreRankingPredicates.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PredicatesForCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PredicatesForCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SGSPredicatesForCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SGSPredicatesForCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ScarecrowPredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ScarecrowPredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SpacePredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SpacePredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetEngagementPredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetEngagementPredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetNtabCaretClickFatiguePredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetNtabCaretClickFatiguePredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetPredicates.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetPredicates.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TopTweetImpressionsPredicates.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TopTweetImpressionsPredicates.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetEngagementRatioPredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetEngagementRatioPredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetLanguagePredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetLanguagePredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetWithheldContentPredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetWithheldContentPredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/event/EventPredicatesForCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/event/EventPredicatesForCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutPredicatesForCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutPredicatesForCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutPredicatesUtil.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutPredicatesUtil.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutSportsUtil.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutSportsUtil.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutTargetingPredicateWrappersForCandidate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutTargetingPredicateWrappersForCandidate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/CRTBasedNtabCaretClickFatiguePredicates.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/CRTBasedNtabCaretClickFatiguePredicates.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/ContinuousFunction.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/ContinuousFunction.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/FeedbackModel.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/FeedbackModel.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/MagicFanoutNtabCaretFatiguePredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/MagicFanoutNtabCaretFatiguePredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickCandidateFatiguePredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickCandidateFatiguePredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickFatiguePredicate.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickFatiguePredicate.scala create mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickFatigueUtils.docx delete mode 100644 pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickFatigueUtils.scala diff --git a/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/observer/ResultsObserver.docx b/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/observer/ResultsObserver.docx new file mode 100644 index 0000000000000000000000000000000000000000..1f33d1072697eb1bc039bf5103f63fdb63c992bc GIT binary patch literal 38561 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 Int, - statsReceiver: StatsReceiver, - scopes: String* - ): StitchResultsObserver[T] = { - new StitchResultsObserver[T](size, statsReceiver, scopes) - } - - /** - * Helper function to observe a stitch and traversable (e.g. Seq, Set) result counts - * - * @see [[StitchResultsObserver]] - */ - def stitchResults[T <: TraversableOnce[_]]( - statsReceiver: StatsReceiver, - scopes: String* - ): StitchResultsObserver[T] = { - new StitchResultsObserver[T](_.size, statsReceiver, scopes) - } - - /** - * Helper function to observe an arrow and result counts - * - * @see [[ArrowResultsObserver]] - */ - def arrowResults[In, Out]( - size: Out => Int, - statsReceiver: StatsReceiver, - scopes: String* - ): ArrowResultsObserver[In, Out] = { - new ArrowResultsObserver[In, Out](size, statsReceiver, scopes) - } - - /** - * Helper function to observe an arrow and traversable (e.g. Seq, Set) result counts - * - * @see [[ArrowResultsObserver]] - */ - def arrowResults[In, Out <: TraversableOnce[_]]( - statsReceiver: StatsReceiver, - scopes: String* - ): ArrowResultsObserver[In, Out] = { - new ArrowResultsObserver[In, Out](_.size, statsReceiver, scopes) - } - - /** - * Helper function to observe an arrow and result counts - * - * @see [[TransformingArrowResultsObserver]] - */ - def transformingArrowResults[In, Out, Transformed]( - transformer: Out => Try[Transformed], - size: Transformed => Int, - statsReceiver: StatsReceiver, - scopes: String* - ): TransformingArrowResultsObserver[In, Out, Transformed] = { - new TransformingArrowResultsObserver[In, Out, Transformed]( - transformer, - size, - statsReceiver, - scopes) - } - - /** - * Helper function to observe an arrow and traversable (e.g. Seq, Set) result counts - * - * @see [[TransformingArrowResultsObserver]] - */ - def transformingArrowResults[In, Out, Transformed <: TraversableOnce[_]]( - transformer: Out => Try[Transformed], - statsReceiver: StatsReceiver, - scopes: String* - ): TransformingArrowResultsObserver[In, Out, Transformed] = { - new TransformingArrowResultsObserver[In, Out, Transformed]( - transformer, - _.size, - statsReceiver, - scopes) - } - - /** - * Helper function to observe a future and result counts - * - * @see [[FutureResultsObserver]] - */ - def futureResults[T]( - size: T => Int, - statsReceiver: StatsReceiver, - scopes: String* - ): FutureResultsObserver[T] = { - new FutureResultsObserver[T](size, statsReceiver, scopes) - } - - /** - * Helper function to observe a future and traversable (e.g. Seq, Set) result counts - * - * @see [[FutureResultsObserver]] - */ - def futureResults[T <: TraversableOnce[_]]( - statsReceiver: StatsReceiver, - scopes: String* - ): FutureResultsObserver[T] = { - new FutureResultsObserver[T](_.size, statsReceiver, scopes) - } - - /** - * Helper function to observe a function and result counts - * - * @see [[FunctionResultsObserver]] - */ - def functionResults[T]( - size: T => Int, - statsReceiver: StatsReceiver, - scopes: String* - ): FunctionResultsObserver[T] = { - new FunctionResultsObserver[T](size, statsReceiver, scopes) - } - - /** - * Helper function to observe a function and traversable (e.g. Seq, Set) result counts - * - * @see [[FunctionResultsObserver]] - */ - def functionResults[T <: TraversableOnce[_]]( - statsReceiver: StatsReceiver, - scopes: String* - ): FunctionResultsObserver[T] = { - new FunctionResultsObserver[T](_.size, statsReceiver, scopes) - } - - /** [[StitchObserver]] that also records result size */ - class StitchResultsObserver[T]( - override val size: T => Int, - override val statsReceiver: StatsReceiver, - override val scopes: Seq[String]) - extends StitchObserver[T](statsReceiver, scopes) - with ResultsObserver[T] { - - override def apply(stitch: => Stitch[T]): Stitch[T] = - super - .apply(stitch) - .onSuccess(observeResults) - } - - /** [[ArrowObserver]] that also records result size */ - class ArrowResultsObserver[In, Out]( - override val size: Out => Int, - override val statsReceiver: StatsReceiver, - override val scopes: Seq[String]) - extends ArrowObserver[In, Out](statsReceiver, scopes) - with ResultsObserver[Out] { - - override def apply(arrow: Arrow[In, Out]): Arrow[In, Out] = - super - .apply(arrow) - .onSuccess(observeResults) - } - - /** - * [[TransformingArrowResultsObserver]] functions like an [[ArrowObserver]] except - * that it transforms the result using [[transformer]] before recording stats. - * - * The original non-transformed result is then returned. - */ - class TransformingArrowResultsObserver[In, Out, Transformed]( - val transformer: Out => Try[Transformed], - override val size: Transformed => Int, - override val statsReceiver: StatsReceiver, - override val scopes: Seq[String]) - extends Observer[Transformed] - with ResultsObserver[Transformed] { - - /** - * Returns a new Arrow that records stats on the result after applying [[transformer]] when it's run. - * The original, non-transformed, result of the Arrow is passed through. - * - * @note the provided Arrow must contain the parts that need to be timed. - * Using this on just the result of the computation the latency stat - * will be incorrect. - */ - def apply(arrow: Arrow[In, Out]): Arrow[In, Out] = { - Arrow - .time(arrow) - .map { - case (response, stitchRunDuration) => - observe(response.flatMap(transformer), stitchRunDuration) - .onSuccess(observeResults) - response - }.lowerFromTry - } - } - - /** [[FutureObserver]] that also records result size */ - class FutureResultsObserver[T]( - override val size: T => Int, - override val statsReceiver: StatsReceiver, - override val scopes: Seq[String]) - extends FutureObserver[T](statsReceiver, scopes) - with ResultsObserver[T] { - - override def apply(future: => Future[T]): Future[T] = - super - .apply(future) - .onSuccess(observeResults) - } - - /** [[FunctionObserver]] that also records result size */ - class FunctionResultsObserver[T]( - override val size: T => Int, - override val statsReceiver: StatsReceiver, - override val scopes: Seq[String]) - extends FunctionObserver[T](statsReceiver, scopes) - with ResultsObserver[T] { - - override def apply(f: => T): T = observeResults(super.apply(f)) - } - - /** [[ResultsObserver]] provides methods for recording stats for the result size */ - trait ResultsObserver[T] { - protected val statsReceiver: StatsReceiver - - /** Scopes that prefix all stats */ - protected val scopes: Seq[String] - - protected val totalCounter: Counter = statsReceiver.counter(scopes :+ Total: _*) - protected val foundCounter: Counter = statsReceiver.counter(scopes :+ Found: _*) - protected val notFoundCounter: Counter = statsReceiver.counter(scopes :+ NotFound: _*) - - /** given a [[T]] returns it's size. */ - protected val size: T => Int - - /** Records the size of the `results` using [[size]] and return the original value. */ - protected def observeResults(results: T): T = { - val resultsSize = size(results) - observeResultsWithSize(results, resultsSize) - } - - /** - * Records the `resultsSize` and returns the `results` - * - * This is useful if the size is already available and is expensive to calculate. - */ - protected def observeResultsWithSize(results: T, resultsSize: Int): T = { - if (resultsSize > 0) { - totalCounter.incr(resultsSize) - foundCounter.incr() - } else { - notFoundCounter.incr() - } - results - } - } -} diff --git a/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/observer/ResultsStatsObserver.docx b/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/observer/ResultsStatsObserver.docx new file mode 100644 index 0000000000000000000000000000000000000000..12b092bbc74457854b15fcce9a75c439ac18878c GIT binary patch literal 38330 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 QTa_@x1uzfOl<#-{0+&y@+W-In literal 0 HcmV?d00001 diff --git a/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/observer/ResultsStatsObserver.scala b/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/observer/ResultsStatsObserver.scala deleted file mode 100644 index a637e23d8..000000000 --- a/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/observer/ResultsStatsObserver.scala +++ /dev/null @@ -1,243 +0,0 @@ -package com.twitter.product_mixer.shared_library.observer - -import com.twitter.finagle.stats.Stat -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.product_mixer.shared_library.observer.Observer.ArrowObserver -import com.twitter.product_mixer.shared_library.observer.Observer.FunctionObserver -import com.twitter.product_mixer.shared_library.observer.Observer.FutureObserver -import com.twitter.product_mixer.shared_library.observer.Observer.Observer -import com.twitter.product_mixer.shared_library.observer.Observer.StitchObserver -import com.twitter.product_mixer.shared_library.observer.ResultsObserver.ResultsObserver -import com.twitter.stitch.Arrow -import com.twitter.stitch.Stitch -import com.twitter.util.Future -import com.twitter.util.Try - -/** - * Helper functions to observe requests, successes, failures, cancellations, exceptions, latency, - * and result counts and time-series stats. Supports native functions and asynchronous operations. - * - * Note that since time-series stats are expensive to compute (relative to counters), prefer - * [[ResultsObserver]] unless a time-series stat is needed. - */ -object ResultsStatsObserver { - val Size = "size" - - /** - * Helper function to observe a stitch and result counts and time-series stats - */ - def stitchResultsStats[T]( - size: T => Int, - statsReceiver: StatsReceiver, - scopes: String* - ): StitchResultsStatsObserver[T] = { - new StitchResultsStatsObserver[T](size, statsReceiver, scopes) - } - - /** - * Helper function to observe a stitch and traversable (e.g. Seq, Set) result counts and - * time-series stats - */ - def stitchResultsStats[T <: TraversableOnce[_]]( - statsReceiver: StatsReceiver, - scopes: String* - ): StitchResultsStatsObserver[T] = { - new StitchResultsStatsObserver[T](_.size, statsReceiver, scopes) - } - - /** - * Helper function to observe an arrow and result counts and time-series stats - */ - def arrowResultsStats[T, U]( - size: U => Int, - statsReceiver: StatsReceiver, - scopes: String* - ): ArrowResultsStatsObserver[T, U] = { - new ArrowResultsStatsObserver[T, U](size, statsReceiver, scopes) - } - - /** - * Helper function to observe an arrow and traversable (e.g. Seq, Set) result counts and - * * time-series stats - */ - def arrowResultsStats[T, U <: TraversableOnce[_]]( - statsReceiver: StatsReceiver, - scopes: String* - ): ArrowResultsStatsObserver[T, U] = { - new ArrowResultsStatsObserver[T, U](_.size, statsReceiver, scopes) - } - - /** - * Helper function to observe an arrow and result counts - * - * @see [[TransformingArrowResultsStatsObserver]] - */ - def transformingArrowResultsStats[In, Out, Transformed]( - transformer: Out => Try[Transformed], - size: Transformed => Int, - statsReceiver: StatsReceiver, - scopes: String* - ): TransformingArrowResultsStatsObserver[In, Out, Transformed] = { - new TransformingArrowResultsStatsObserver[In, Out, Transformed]( - transformer, - size, - statsReceiver, - scopes) - } - - /** - * Helper function to observe an arrow and traversable (e.g. Seq, Set) result counts - * - * @see [[TransformingArrowResultsStatsObserver]] - */ - def transformingArrowResultsStats[In, Out, Transformed <: TraversableOnce[_]]( - transformer: Out => Try[Transformed], - statsReceiver: StatsReceiver, - scopes: String* - ): TransformingArrowResultsStatsObserver[In, Out, Transformed] = { - new TransformingArrowResultsStatsObserver[In, Out, Transformed]( - transformer, - _.size, - statsReceiver, - scopes) - } - - /** - * Helper function to observe a future and result counts and time-series stats - */ - def futureResultsStats[T]( - size: T => Int, - statsReceiver: StatsReceiver, - scopes: String* - ): FutureResultsStatsObserver[T] = { - new FutureResultsStatsObserver[T](size, statsReceiver, scopes) - } - - /** - * Helper function to observe a future and traversable (e.g. Seq, Set) result counts and - * time-series stats - */ - def futureResultsStats[T <: TraversableOnce[_]]( - statsReceiver: StatsReceiver, - scopes: String* - ): FutureResultsStatsObserver[T] = { - new FutureResultsStatsObserver[T](_.size, statsReceiver, scopes) - } - - /** - * Helper function observe a function and result counts and time-series stats - */ - def functionResultsStats[T]( - size: T => Int, - statsReceiver: StatsReceiver, - scopes: String* - ): FunctionResultsStatsObserver[T] = { - new FunctionResultsStatsObserver[T](size, statsReceiver, scopes) - } - - /** - * Helper function observe a function and traversable (e.g. Seq, Set) result counts and - * time-series stats - */ - def functionResultsStats[T <: TraversableOnce[_]]( - statsReceiver: StatsReceiver, - scopes: String* - ): FunctionResultsStatsObserver[T] = { - new FunctionResultsStatsObserver[T](_.size, statsReceiver, scopes) - } - - class StitchResultsStatsObserver[T]( - override val size: T => Int, - override val statsReceiver: StatsReceiver, - override val scopes: Seq[String]) - extends StitchObserver[T](statsReceiver, scopes) - with ResultsStatsObserver[T] { - - override def apply(stitch: => Stitch[T]): Stitch[T] = - super - .apply(stitch) - .onSuccess(observeResults) - } - - class ArrowResultsStatsObserver[T, U]( - override val size: U => Int, - override val statsReceiver: StatsReceiver, - override val scopes: Seq[String]) - extends ArrowObserver[T, U](statsReceiver, scopes) - with ResultsStatsObserver[U] { - - override def apply(arrow: Arrow[T, U]): Arrow[T, U] = - super - .apply(arrow) - .onSuccess(observeResults) - } - - /** - * [[TransformingArrowResultsStatsObserver]] functions like an [[ArrowObserver]] except - * that it transforms the result using [[transformer]] before recording stats. - * - * The original non-transformed result is then returned. - */ - class TransformingArrowResultsStatsObserver[In, Out, Transformed]( - val transformer: Out => Try[Transformed], - override val size: Transformed => Int, - override val statsReceiver: StatsReceiver, - override val scopes: Seq[String]) - extends Observer[Transformed] - with ResultsStatsObserver[Transformed] { - - /** - * Returns a new Arrow that records stats on the result after applying [[transformer]] when it's run. - * The original, non-transformed, result of the Arrow is passed through. - * - * @note the provided Arrow must contain the parts that need to be timed. - * Using this on just the result of the computation the latency stat - * will be incorrect. - */ - def apply(arrow: Arrow[In, Out]): Arrow[In, Out] = { - Arrow - .time(arrow) - .map { - case (response, stitchRunDuration) => - observe(response.flatMap(transformer), stitchRunDuration) - .onSuccess(observeResults) - response - }.lowerFromTry - } - } - - class FutureResultsStatsObserver[T]( - override val size: T => Int, - override val statsReceiver: StatsReceiver, - override val scopes: Seq[String]) - extends FutureObserver[T](statsReceiver, scopes) - with ResultsStatsObserver[T] { - - override def apply(future: => Future[T]): Future[T] = - super - .apply(future) - .onSuccess(observeResults) - } - - class FunctionResultsStatsObserver[T]( - override val size: T => Int, - override val statsReceiver: StatsReceiver, - override val scopes: Seq[String]) - extends FunctionObserver[T](statsReceiver, scopes) - with ResultsStatsObserver[T] { - - override def apply(f: => T): T = { - observeResults(super.apply(f)) - } - } - - trait ResultsStatsObserver[T] extends ResultsObserver[T] { - private val sizeStat: Stat = statsReceiver.stat(scopes :+ Size: _*) - - protected override def observeResults(results: T): T = { - val resultsSize = size(results) - sizeStat.add(resultsSize) - observeResultsWithSize(results, resultsSize) - } - } -} diff --git a/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/thrift_client/BUILD b/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/thrift_client/BUILD deleted file mode 100644 index 8569f2d61..000000000 --- a/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/thrift_client/BUILD +++ /dev/null @@ -1,20 +0,0 @@ -scala_library( - sources = ["*.scala"], - compiler_option_sets = ["fatal_warnings"], - strict_deps = True, - tags = ["bazel-compatible"], - dependencies = [ - "finagle/finagle-core/src/main", - "finagle/finagle-thriftmux/src/main/scala", - "finatra-internal/mtls-http/src/main/scala", - "finatra-internal/mtls-thriftmux/src/main/scala", - "util/util-core", - ], - exports = [ - "finagle/finagle-core/src/main", - "finagle/finagle-thriftmux/src/main/scala", - "finatra-internal/mtls-http/src/main/scala", - "finatra-internal/mtls-thriftmux/src/main/scala", - "util/util-core", - ], -) diff --git a/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/thrift_client/BUILD.docx b/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/thrift_client/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..9ea04b1d7bc8cc496b89a4ccdd97d01587726080 GIT binary patch literal 36836 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ƹKp@>yXWA zhF;L^O?PAV@JgDD^9x0?eFP?&Yl*sY36a9_dXaFt!PN)BS~kAocxC9OMh8@yCYQ`y zbd#R5Zk8Q6DuR5H$7l&IN`P3?EacB7$LrO|7u&UhQky>qEn$3_i}cD%hmr!V7nP}R z;n+}nQ+z0ET;#d|^)gtCtWj6H(*j~XHf((II#On=?af%=fWu|hH4Z2}t5^3;WNo;R zY>1OP>96;9xW~XsXxpNN4>JWOWkZ~{kM;#U-3Eo~`J)n6=p2}m#JumZn?pMJ@)iVn zlNvTEh4$>6%#+t(Vcn^36}XmpnItai|`t;iEQ$;S`&!wEEkf zbD50Uq$x;2T)$o~hI1mW?DlPxK-PJejm(0k$NkMABg>H;Ay2S%>BDj%L4JCq8Ihgf zDZzHj)lEz$LEG4;XK5r(Fq|+{OB4(V{rI@ND12^gz9^!^r)MO`I^1cZ3e)m=Wa1B8 zP`%qcIzLsZU?w5h@YWGnnUAU%sZO@0a?? zwjIq>bGCX<6Dtx83AQ-asbqXNZSAACUuPoEqE%IF%7A4?y4~2*ppZ|gjGy~`AWJVU zR^)NQxAkBKy2j#7wH@R8#!g3KM3!LSMFCG02t4|;*X&iW?^D*tk#xtMAKd-z*S>uG zc89v5E)_M`k#Fg722fU>vU&COM`>9=gxU?{+`ie4pC2T!4+OHj2qc4@Jbi6$1bI36 zSbdAmC;>rGU5y>!P#lm)X8x%Levwo!0mT1f{O_SXr7%90+1Ld*WC#$l9}><3d;Yuk zINb66o{6TEZ%s@bBLZ@F8W4!>kURp|^Pk+#%jf$^}jr?@8HsF3=I*D+d6= z&jYyj-^o3Z{2X#X<2^uA0*4y60b<(k^8a7?uaMvN0;-DVk0faj$l8P!#CnL-1N*Gp1zDC?vLoUOp0oL`D4lyb_#%Yl3*^oN|H z3`0qvEJPd-xWa!B4wWS+^^{rT1ARI2hn_NrOo^cM-v@{XaldurlmJSjdjJTG{}u2% z+e^u!^o|ECM8dDE!%mWtLTR-QDDjCudgYMuqSRByg9my@@-IW|aCB&>OACykZ=;GG NWCsin?#ypn{{xFuDWCuV literal 0 HcmV?d00001 diff --git a/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/thrift_client/FinagleThriftClientBuilder.scala b/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/thrift_client/FinagleThriftClientBuilder.scala deleted file mode 100644 index b8c25b5a1..000000000 --- a/product-mixer/shared-library/src/main/scala/com/twitter/product_mixer/shared_library/thrift_client/FinagleThriftClientBuilder.scala +++ /dev/null @@ -1,198 +0,0 @@ -package com.twitter.product_mixer.shared_library.thrift_client - -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.ThriftMux -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.mtls.client.MtlsStackClient._ -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.finagle.thrift.ClientId -import com.twitter.finagle.thrift.service.Filterable -import com.twitter.finagle.thrift.service.MethodPerEndpointBuilder -import com.twitter.finagle.thrift.service.ServicePerEndpointBuilder -import com.twitter.finagle.thriftmux.MethodBuilder -import com.twitter.util.Duration -import org.apache.thrift.protocol.TProtocolFactory - -sealed trait Idempotency -case object NonIdempotent extends Idempotency -case class Idempotent(maxExtraLoadPercent: Double) extends Idempotency - -object FinagleThriftClientBuilder { - - /** - * Library to build a Finagle Thrift method per endpoint client is a less error-prone way when - * compared to the builders in Finagle. This is achieved by requiring values for fields that should - * always be set in practice. For example, request timeouts in Finagle are unbounded when not - * explicitly set, and this method requires that timeout durations are passed into the method and - * set on the Finagle builder. - * - * Usage of - * [[com.twitter.inject.thrift.modules.ThriftMethodBuilderClientModule]] is almost always preferred, - * and the Product Mixer component library [[com.twitter.product_mixer.component_library.module]] - * package contains numerous examples. However, if multiple versions of a client are needed e.g. - * for different timeout settings, this method is useful to easily provide multiple variants. - * - * @example - * {{{ - * final val SampleServiceClientName = "SampleServiceClient" - * @Provides - * @Singleton - * @Named(SampleServiceClientName) - * def provideSampleServiceClient( - * serviceIdentifier: ServiceIdentifier, - * clientId: ClientId, - * statsReceiver: StatsReceiver, - * ): SampleService.MethodPerEndpoint = - * buildFinagleMethodPerEndpoint[SampleService.ServicePerEndpoint, SampleService.MethodPerEndpoint]( - * serviceIdentifier = serviceIdentifier, - * clientId = clientId, - * dest = "/s/sample/sample", - * label = "sample", - * statsReceiver = statsReceiver, - * idempotency = Idempotent(5.percent), - * timeoutPerRequest = 200.milliseconds, - * timeoutTotal = 400.milliseconds - * ) - * }}} - * @param serviceIdentifier Service ID used to S2S Auth - * @param clientId Client ID - * @param dest Destination as a Wily path e.g. "/s/sample/sample" - * @param label Label of the client - * @param statsReceiver Stats - * @param idempotency Idempotency semantics of the client - * @param timeoutPerRequest Thrift client timeout per request. The Finagle default is - * unbounded which is almost never optimal. - * @param timeoutTotal Thrift client total timeout. The Finagle default is - * unbounded which is almost never optimal. - * If the client is set as idempotent, which adds a - * [[com.twitter.finagle.client.BackupRequestFilter]], - * be sure to leave enough room for the backup request. A - * reasonable (albeit usually too large) starting point is to - * make the total timeout 2x relative to the per request timeout. - * If the client is set as non-idempotent, the total timeout and - * the per request timeout should be the same, as there will be - * no backup requests. - * @param connectTimeout Thrift client transport connect timeout. The Finagle default - * of one second is reasonable but we lower this to match - * acquisitionTimeout for consistency. - * @param acquisitionTimeout Thrift client session acquisition timeout. The Finagle default - * is unbounded which is almost never optimal. - * @param protocolFactoryOverride Override the default protocol factory - * e.g. [[org.apache.thrift.protocol.TCompactProtocol.Factory]] - * @param servicePerEndpointBuilder implicit service per endpoint builder - * @param methodPerEndpointBuilder implicit method per endpoint builder - * - * @see [[https://twitter.github.io/finagle/guide/MethodBuilder.html user guide]] - * @see [[https://twitter.github.io/finagle/guide/MethodBuilder.html#idempotency user guide]] - * @return method per endpoint Finagle Thrift Client - */ - def buildFinagleMethodPerEndpoint[ - ServicePerEndpoint <: Filterable[ServicePerEndpoint], - MethodPerEndpoint - ]( - serviceIdentifier: ServiceIdentifier, - clientId: ClientId, - dest: String, - label: String, - statsReceiver: StatsReceiver, - idempotency: Idempotency, - timeoutPerRequest: Duration, - timeoutTotal: Duration, - connectTimeout: Duration = 500.milliseconds, - acquisitionTimeout: Duration = 500.milliseconds, - protocolFactoryOverride: Option[TProtocolFactory] = None, - )( - implicit servicePerEndpointBuilder: ServicePerEndpointBuilder[ServicePerEndpoint], - methodPerEndpointBuilder: MethodPerEndpointBuilder[ServicePerEndpoint, MethodPerEndpoint] - ): MethodPerEndpoint = { - val service: ServicePerEndpoint = buildFinagleServicePerEndpoint( - serviceIdentifier = serviceIdentifier, - clientId = clientId, - dest = dest, - label = label, - statsReceiver = statsReceiver, - idempotency = idempotency, - timeoutPerRequest = timeoutPerRequest, - timeoutTotal = timeoutTotal, - connectTimeout = connectTimeout, - acquisitionTimeout = acquisitionTimeout, - protocolFactoryOverride = protocolFactoryOverride - ) - - ThriftMux.Client.methodPerEndpoint(service) - } - - /** - * Build a Finagle Thrift service per endpoint client. - * - * @note [[buildFinagleMethodPerEndpoint]] should be preferred over the service per endpoint variant - * - * @param serviceIdentifier Service ID used to S2S Auth - * @param clientId Client ID - * @param dest Destination as a Wily path e.g. "/s/sample/sample" - * @param label Label of the client - * @param statsReceiver Stats - * @param idempotency Idempotency semantics of the client - * @param timeoutPerRequest Thrift client timeout per request. The Finagle default is - * unbounded which is almost never optimal. - * @param timeoutTotal Thrift client total timeout. The Finagle default is - * unbounded which is almost never optimal. - * If the client is set as idempotent, which adds a - * [[com.twitter.finagle.client.BackupRequestFilter]], - * be sure to leave enough room for the backup request. A - * reasonable (albeit usually too large) starting point is to - * make the total timeout 2x relative to the per request timeout. - * If the client is set as non-idempotent, the total timeout and - * the per request timeout should be the same, as there will be - * no backup requests. - * @param connectTimeout Thrift client transport connect timeout. The Finagle default - * of one second is reasonable but we lower this to match - * acquisitionTimeout for consistency. - * @param acquisitionTimeout Thrift client session acquisition timeout. The Finagle default - * is unbounded which is almost never optimal. - * @param protocolFactoryOverride Override the default protocol factory - * e.g. [[org.apache.thrift.protocol.TCompactProtocol.Factory]] - * - * @return service per endpoint Finagle Thrift Client - */ - def buildFinagleServicePerEndpoint[ServicePerEndpoint <: Filterable[ServicePerEndpoint]]( - serviceIdentifier: ServiceIdentifier, - clientId: ClientId, - dest: String, - label: String, - statsReceiver: StatsReceiver, - idempotency: Idempotency, - timeoutPerRequest: Duration, - timeoutTotal: Duration, - connectTimeout: Duration = 500.milliseconds, - acquisitionTimeout: Duration = 500.milliseconds, - protocolFactoryOverride: Option[TProtocolFactory] = None, - )( - implicit servicePerEndpointBuilder: ServicePerEndpointBuilder[ServicePerEndpoint] - ): ServicePerEndpoint = { - val thriftMux: ThriftMux.Client = ThriftMux.client - .withMutualTls(serviceIdentifier) - .withClientId(clientId) - .withLabel(label) - .withStatsReceiver(statsReceiver) - .withTransport.connectTimeout(connectTimeout) - .withSession.acquisitionTimeout(acquisitionTimeout) - - val protocolThriftMux: ThriftMux.Client = protocolFactoryOverride - .map { protocolFactory => - thriftMux.withProtocolFactory(protocolFactory) - }.getOrElse(thriftMux) - - val methodBuilder: MethodBuilder = protocolThriftMux - .methodBuilder(dest) - .withTimeoutPerRequest(timeoutPerRequest) - .withTimeoutTotal(timeoutTotal) - - val idempotencyMethodBuilder: MethodBuilder = idempotency match { - case NonIdempotent => methodBuilder.nonIdempotent - case Idempotent(maxExtraLoad) => methodBuilder.idempotent(maxExtraLoad = maxExtraLoad) - } - - idempotencyMethodBuilder.servicePerEndpoint[ServicePerEndpoint] - } -} diff --git a/pushservice/BUILD.bazel b/pushservice/BUILD.bazel deleted file mode 100644 index 12efdb2e6..000000000 --- a/pushservice/BUILD.bazel +++ /dev/null @@ -1,48 +0,0 @@ -alias( - name = "frigate-pushservice", - target = ":frigate-pushservice_lib", -) - -target( - name = "frigate-pushservice_lib", - dependencies = [ - "frigate/frigate-pushservice-opensource/src/main/scala/com/twitter/frigate/pushservice", - ], -) - -jvm_binary( - name = "bin", - basename = "frigate-pushservice", - main = "com.twitter.frigate.pushservice.PushServiceMain", - runtime_platform = "java11", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/ch/qos/logback:logback-classic", - "finatra/inject/inject-logback/src/main/scala", - "frigate/frigate-pushservice-opensource/src/main/scala/com/twitter/frigate/pushservice", - "loglens/loglens-logback/src/main/scala/com/twitter/loglens/logback", - "twitter-server/logback-classic/src/main/scala", - ], - excludes = [ - exclude("com.twitter.translations", "translations-twitter"), - exclude("org.apache.hadoop", "hadoop-aws"), - exclude("org.tensorflow"), - scala_exclude("com.twitter", "ckoia-scala"), - ], -) - -jvm_app( - name = "bundle", - basename = "frigate-pushservice-package-dist", - archive = "zip", - binary = ":bin", - tags = ["bazel-compatible"], -) - -python3_library( - name = "mr_model_constants", - sources = [ - "config/deepbird/constants.py", - ], - tags = ["bazel-compatible"], -) diff --git a/pushservice/BUILD.docx b/pushservice/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..f573ffe109a0df568df76ab995fee98810185920 GIT binary patch literal 37128 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 ZG1S&!fHx~J2Z3^xAVVTBdra&B@c?pkZ3F-S literal 0 HcmV?d00001 diff --git a/pushservice/README.docx b/pushservice/README.docx new file mode 100644 index 0000000000000000000000000000000000000000..e65fa2f44c04b586652bbd81858de9c18b6c534b GIT binary patch literal 37435 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 PRe}tO!0aK{3*rF)SY)s3 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/heavy_ranking/README.docx b/pushservice/src/main/python/models/heavy_ranking/README.docx new file mode 100644 index 0000000000000000000000000000000000000000..b68f99a321c9cc47918a45abbe27c81b1b3e1759 GIT binary patch literal 37379 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/heavy_ranking/__init__.py b/pushservice/src/main/python/models/heavy_ranking/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/pushservice/src/main/python/models/heavy_ranking/deep_norm.docx b/pushservice/src/main/python/models/heavy_ranking/deep_norm.docx new file mode 100644 index 0000000000000000000000000000000000000000..e219fcc85f7f34597e18f2bc0ca1ee56b0a62227 GIT binary patch literal 38340 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 None: - args, _ = get_training_arg_parser().parse_known_args() - logging.info(f"Parsed args: {args}") - - params = load_graph_params(args) - logging.info(f"Loaded graph params: {params}") - - param_file = os.path.join(args.save_dir, "params.json") - logging.info(f"Saving graph params to: {param_file}") - with tf.io.gfile.GFile(param_file, mode="w") as file: - json.dump(params.json(), file, ensure_ascii=False, indent=4) - - logging.info(f"Get Feature Config: {args.feature_list}") - feature_list = read_config(args.feature_list).items() - feature_config = get_feature_config( - data_spec_path=args.data_spec, - params=params, - feature_list_provided=feature_list, - ) - feature_list_path = args.feature_list - - warm_start_from = args.warm_start_from - if args.warm_start_base_dir: - logging.info(f"Get warm started model from: {args.warm_start_base_dir}.") - - continuous_binary_feat_list_save_path = os.path.join( - args.warm_start_base_dir, "continuous_binary_feat_list.json" - ) - warm_start_folder = os.path.join(args.warm_start_base_dir, "best_checkpoint") - job_name = os.path.basename(args.save_dir) - ws_output_ckpt_folder = os.path.join(args.warm_start_base_dir, f"warm_start_for_{job_name}") - if tf.io.gfile.exists(ws_output_ckpt_folder): - tf.io.gfile.rmtree(ws_output_ckpt_folder) - - tf.io.gfile.mkdir(ws_output_ckpt_folder) - - warm_start_from = warm_start_checkpoint( - warm_start_folder, - continuous_binary_feat_list_save_path, - feature_list_path, - args.data_spec, - ws_output_ckpt_folder, - ) - logging.info(f"Created warm_start_from_ckpt {warm_start_from}.") - - logging.info("Build Trainer.") - metric_fn = get_metric_fn("OONC_Engagement" if len(params.tasks) == 2 else "OONC", False) - - trainer = twml.trainers.DataRecordTrainer( - name="magic_recs", - params=args, - build_graph_fn=lambda *args: ALL_MODELS[params.model.name](params=params)(*args), - save_dir=args.save_dir, - run_config=None, - feature_config=feature_config, - metric_fn=flip_disliked_labels(metric_fn), - warm_start_from=warm_start_from, - ) - - logging.info("Build train and eval input functions.") - train_input_fn = trainer.get_train_input_fn(shuffle=True) - eval_input_fn = trainer.get_eval_input_fn(repeat=False, shuffle=False) - - learn = trainer.learn - if args.distributed or args.num_workers is not None: - learn = trainer.train_and_evaluate - - if not args.directly_export_best: - logging.info("Starting training") - start = datetime.now() - learn( - early_stop_minimize=False, - early_stop_metric="pr_auc_unweighted_OONC", - early_stop_patience=args.early_stop_patience, - early_stop_tolerance=args.early_stop_tolerance, - eval_input_fn=eval_input_fn, - train_input_fn=train_input_fn, - ) - logging.info(f"Total training time: {datetime.now() - start}") - else: - logging.info("Directly exporting the model") - - if not args.export_dir: - args.export_dir = os.path.join(args.save_dir, "exported_models") - - logging.info(f"Exporting the model to {args.export_dir}.") - start = datetime.now() - twml.contrib.export.export_fn.export_all_models( - trainer=trainer, - export_dir=args.export_dir, - parse_fn=feature_config.get_parse_fn(), - serving_input_receiver_fn=feature_config.get_serving_input_receiver_fn(), - export_output_fn=twml.export_output_fns.batch_prediction_continuous_output_fn, - ) - - logging.info(f"Total model export time: {datetime.now() - start}") - logging.info(f"The MLP directory is: {args.save_dir}") - - continuous_binary_feat_list_save_path = os.path.join( - args.save_dir, "continuous_binary_feat_list.json" - ) - logging.info( - f"Saving the list of continuous and binary features to {continuous_binary_feat_list_save_path}." - ) - continuous_binary_feat_list = get_feature_list_for_heavy_ranking( - feature_list_path, args.data_spec - ) - twml.util.write_file( - continuous_binary_feat_list_save_path, continuous_binary_feat_list, encode="json" - ) - - -if __name__ == "__main__": - main() - logging.info("Done.") diff --git a/pushservice/src/main/python/models/heavy_ranking/eval.docx b/pushservice/src/main/python/models/heavy_ranking/eval.docx new file mode 100644 index 0000000000000000000000000000000000000000..8b383c6f31a85a7a317dfa32d83bd8f144d32874 GIT binary patch literal 37429 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/heavy_ranking/eval.py b/pushservice/src/main/python/models/heavy_ranking/eval.py deleted file mode 100644 index 7f74472fb..000000000 --- a/pushservice/src/main/python/models/heavy_ranking/eval.py +++ /dev/null @@ -1,59 +0,0 @@ -""" -Evaluation job for the heavy ranker of the push notification service. -""" - -from datetime import datetime - -import twml - -from ..libs.metric_fn_utils import get_metric_fn -from ..libs.model_utils import read_config -from .features import get_feature_config -from .model_pools import ALL_MODELS -from .params import load_graph_params -from .run_args import get_eval_arg_parser - -from tensorflow.compat.v1 import logging - - -def main(): - args, _ = get_eval_arg_parser().parse_known_args() - logging.info(f"Parsed args: {args}") - - params = load_graph_params(args) - logging.info(f"Loaded graph params: {params}") - - logging.info(f"Get Feature Config: {args.feature_list}") - feature_list = read_config(args.feature_list).items() - feature_config = get_feature_config( - data_spec_path=args.data_spec, - params=params, - feature_list_provided=feature_list, - ) - - logging.info("Build DataRecordTrainer.") - metric_fn = get_metric_fn("OONC_Engagement" if len(params.tasks) == 2 else "OONC", False) - - trainer = twml.trainers.DataRecordTrainer( - name="magic_recs", - params=args, - build_graph_fn=lambda *args: ALL_MODELS[params.model.name](params=params)(*args), - save_dir=args.save_dir, - run_config=None, - feature_config=feature_config, - metric_fn=metric_fn, - ) - - logging.info("Run the evaluation.") - start = datetime.now() - trainer._estimator.evaluate( - input_fn=trainer.get_eval_input_fn(repeat=False, shuffle=False), - steps=None if (args.eval_steps is not None and args.eval_steps < 0) else args.eval_steps, - checkpoint_path=args.eval_checkpoint, - ) - logging.info(f"Evaluating time: {datetime.now() - start}.") - - -if __name__ == "__main__": - main() - logging.info("Job done.") diff --git a/pushservice/src/main/python/models/heavy_ranking/features.docx b/pushservice/src/main/python/models/heavy_ranking/features.docx new file mode 100644 index 0000000000000000000000000000000000000000..211b698e1f0bf6ef192327536de0d02b5fed6005 GIT binary patch literal 38178 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�*bT3u-@NJhZ#0XiXDRa^v;$5i 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 avE|XBqn#AEg1)XQMZgnW9z{uC|NRTUL3yYE literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/heavy_ranking/features.py b/pushservice/src/main/python/models/heavy_ranking/features.py deleted file mode 100644 index ce6a2686a..000000000 --- a/pushservice/src/main/python/models/heavy_ranking/features.py +++ /dev/null @@ -1,138 +0,0 @@ -import os -from typing import Dict - -from twitter.deepbird.projects.magic_recs.libs.model_utils import filter_nans_and_infs -import twml -from twml.layers import full_sparse, sparse_max_norm - -from .params import FeaturesParams, GraphParams, SparseFeaturesParams - -import tensorflow as tf -from tensorflow import Tensor -import tensorflow.compat.v1 as tf1 - - -FEAT_CONFIG_DEFAULT_VAL = 0 -DEFAULT_FEATURE_LIST_PATH = "./feature_list_default.yaml" -FEATURE_LIST_DEFAULT_PATH = os.path.join( - os.path.dirname(os.path.realpath(__file__)), DEFAULT_FEATURE_LIST_PATH -) - - -def get_feature_config(data_spec_path=None, feature_list_provided=[], params: GraphParams = None): - - a_string_feat_list = [feat for feat, feat_type in feature_list_provided if feat_type != "S"] - - builder = twml.contrib.feature_config.FeatureConfigBuilder( - data_spec_path=data_spec_path, debug=False - ) - - builder = builder.extract_feature_group( - feature_regexes=a_string_feat_list, - group_name="continuous_features", - default_value=FEAT_CONFIG_DEFAULT_VAL, - type_filter=["CONTINUOUS"], - ) - - builder = builder.extract_feature_group( - feature_regexes=a_string_feat_list, - group_name="binary_features", - type_filter=["BINARY"], - ) - - if params.model.features.sparse_features: - builder = builder.extract_features_as_hashed_sparse( - feature_regexes=a_string_feat_list, - hash_space_size_bits=params.model.features.sparse_features.bits, - type_filter=["DISCRETE", "STRING", "SPARSE_BINARY"], - output_tensor_name="sparse_not_continuous", - ) - - builder = builder.extract_features_as_hashed_sparse( - feature_regexes=[feat for feat, feat_type in feature_list_provided if feat_type == "S"], - hash_space_size_bits=params.model.features.sparse_features.bits, - type_filter=["SPARSE_CONTINUOUS"], - output_tensor_name="sparse_continuous", - ) - - builder = builder.add_labels([task.label for task in params.tasks] + ["label.ntabDislike"]) - - if params.weight: - builder = builder.define_weight(params.weight) - - return builder.build() - - -def dense_features(features: Dict[str, Tensor], training: bool) -> Tensor: - """ - Performs feature transformations on the raw dense features (continuous and binary). - """ - with tf.name_scope("dense_features"): - x = filter_nans_and_infs(features["continuous_features"]) - - x = tf.sign(x) * tf.math.log(tf.abs(x) + 1) - x = tf1.layers.batch_normalization( - x, momentum=0.9999, training=training, renorm=training, axis=1 - ) - x = tf.clip_by_value(x, -5, 5) - - transformed_continous_features = tf.where(tf.math.is_nan(x), tf.zeros_like(x), x) - - binary_features = filter_nans_and_infs(features["binary_features"]) - binary_features = tf.dtypes.cast(binary_features, tf.float32) - - output = tf.concat([transformed_continous_features, binary_features], axis=1) - - return output - - -def sparse_features( - features: Dict[str, Tensor], training: bool, params: SparseFeaturesParams -) -> Tensor: - """ - Performs feature transformations on the raw sparse features. - """ - - with tf.name_scope("sparse_features"): - with tf.name_scope("sparse_not_continuous"): - sparse_not_continuous = full_sparse( - inputs=features["sparse_not_continuous"], - output_size=params.embedding_size, - use_sparse_grads=training, - use_binary_values=False, - ) - - with tf.name_scope("sparse_continuous"): - shape_enforced_input = twml.util.limit_sparse_tensor_size( - sparse_tf=features["sparse_continuous"], input_size_bits=params.bits, mask_indices=False - ) - - normalized_continuous_sparse = sparse_max_norm( - inputs=shape_enforced_input, is_training=training - ) - - sparse_continuous = full_sparse( - inputs=normalized_continuous_sparse, - output_size=params.embedding_size, - use_sparse_grads=training, - use_binary_values=False, - ) - - output = tf.concat([sparse_not_continuous, sparse_continuous], axis=1) - - return output - - -def get_features(features: Dict[str, Tensor], training: bool, params: FeaturesParams) -> Tensor: - """ - Performs feature transformations on the dense and sparse features and combine the resulting - tensors into a single one. - """ - with tf.name_scope("features"): - x = dense_features(features, training) - tf1.logging.info(f"Dense features: {x.shape}") - - if params.sparse_features: - x = tf.concat([x, sparse_features(features, training, params.sparse_features)], axis=1) - - return x diff --git a/pushservice/src/main/python/models/heavy_ranking/graph.docx b/pushservice/src/main/python/models/heavy_ranking/graph.docx new file mode 100644 index 0000000000000000000000000000000000000000..6005f888b6592a9806d28d5585741c4c0de3d8d2 GIT binary patch literal 38176 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 X9Xi@cfh*|is!{?x!R1kq`1Rkv tf.Tensor: - pass - - def get_probabilities(self, logits: tf.Tensor) -> tf.Tensor: - return tf.math.cumprod(tf.nn.sigmoid(logits), axis=1, name="probabilities") - - def get_task_weights(self, labels: tf.Tensor) -> tf.Tensor: - oonc_label = tf.reshape(labels[:, 0], shape=(-1, 1)) - task_weights = tf.concat([tf.ones_like(oonc_label), oonc_label], axis=1) - - n_labels = len(self.params.tasks) - task_weights = tf.reshape(task_weights[:, 0:n_labels], shape=(-1, n_labels)) - - return task_weights - - def get_loss(self, labels: tf.Tensor, logits: tf.Tensor, **kwargs: Any) -> tf.Tensor: - with tf.name_scope("weights"): - disliked_mask = generate_disliked_mask(labels) - - labels = tf.reshape(labels[:, 0:2], shape=[-1, 2]) - - labels = labels * tf.cast(tf.logical_not(disliked_mask), dtype=labels.dtype) - - with tf.name_scope("task_weight"): - task_weights = self.get_task_weights(labels) - - with tf.name_scope("batch_size"): - batch_size = tf.cast(tf.shape(labels)[0], dtype=tf.float32, name="batch_size") - - weights = task_weights / batch_size - - with tf.name_scope("loss"): - loss = tf.reduce_sum( - tf.nn.sigmoid_cross_entropy_with_logits(labels=labels, logits=logits) * weights, - ) - - return loss - - def get_score(self, probabilities: tf.Tensor) -> tf.Tensor: - with tf.name_scope("score_weight"): - score_weights = tf.constant([task.score_weight for task in self.params.tasks]) - score_weights = score_weights / tf.reduce_sum(score_weights, axis=0) - - with tf.name_scope("score"): - score = tf.reshape(tf.reduce_sum(probabilities * score_weights, axis=1), shape=[-1, 1]) - - return score - - def get_train_op(self, loss: tf.Tensor, twml_params) -> Any: - with tf.name_scope("optimizer"): - learning_rate = twml_params.learning_rate - optimizer = tf1.train.GradientDescentOptimizer(learning_rate=learning_rate) - - update_ops = set(tf1.get_collection(tf1.GraphKeys.UPDATE_OPS)) - with tf.control_dependencies(update_ops): - train_op = twml.optimizers.optimize_loss( - loss=loss, - variables=tf1.trainable_variables(), - global_step=tf1.train.get_global_step(), - optimizer=optimizer, - learning_rate=None, - ) - - return train_op - - def __call__( - self, - features: Dict[str, tf.Tensor], - labels: tf.Tensor, - mode: tf.estimator.ModeKeys, - params: HParams, - config=None, - ) -> Dict[str, tf.Tensor]: - training = mode == tf.estimator.ModeKeys.TRAIN - logits = self.get_logits(features=features, training=training) - probabilities = self.get_probabilities(logits=logits) - score = None - loss = None - train_op = None - - if mode == tf.estimator.ModeKeys.PREDICT: - score = self.get_score(probabilities=probabilities) - output = {"loss": loss, "train_op": train_op, "prediction": score} - - elif mode in (tf.estimator.ModeKeys.TRAIN, tf.estimator.ModeKeys.EVAL): - loss = self.get_loss(labels=labels, logits=logits) - - if mode == tf.estimator.ModeKeys.TRAIN: - train_op = self.get_train_op(loss=loss, twml_params=params) - - output = {"loss": loss, "train_op": train_op, "output": probabilities} - - else: - raise ValueError( - f""" - Invalid mode. Possible values are: {tf.estimator.ModeKeys.PREDICT}, {tf.estimator.ModeKeys.TRAIN}, and {tf.estimator.ModeKeys.EVAL} - . Passed: {mode} - """ - ) - - return output diff --git a/pushservice/src/main/python/models/heavy_ranking/lib/BUILD b/pushservice/src/main/python/models/heavy_ranking/lib/BUILD deleted file mode 100644 index a0ed713c4..000000000 --- a/pushservice/src/main/python/models/heavy_ranking/lib/BUILD +++ /dev/null @@ -1,42 +0,0 @@ -python3_library( - name = "params_lib", - sources = [ - "params.py", - ], - tags = [ - "bazel-compatible", - "no-mypy", - ], - dependencies = [ - "3rdparty/python/pydantic:default", - ], -) - -python3_library( - name = "layers_lib", - sources = [ - "layers.py", - ], - tags = [ - "bazel-compatible", - "no-mypy", - ], - dependencies = [ - ], -) - -python3_library( - name = "model_lib", - sources = [ - "model.py", - ], - tags = [ - "bazel-compatible", - "no-mypy", - ], - dependencies = [ - ":layers_lib", - ":params_lib", - "3rdparty/python/absl-py:default", - ], -) diff --git a/pushservice/src/main/python/models/heavy_ranking/lib/BUILD.docx b/pushservice/src/main/python/models/heavy_ranking/lib/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..65af4a104f83135d22b509848011ff6235035ac2 GIT binary patch literal 36830 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/heavy_ranking/lib/layers.docx b/pushservice/src/main/python/models/heavy_ranking/lib/layers.docx new file mode 100644 index 0000000000000000000000000000000000000000..9af169236aaa5e0521992ab5c4cf7d64e3807859 GIT binary patch literal 37821 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 None: - assert ( - len(input_shape) == 3 - ), f"Tensor shape must be of length 3. Passed tensor of shape {input_shape}." - - self.features = input_shape[1] - - self.w = tf.keras.layers.Conv1D( - kernel_size=self.kernel_size, - filters=self.filters, - strides=self.strides, - padding=self.padding, - use_bias=self.use_bias, - kernel_initializer=self.kernel_initializer, - bias_initializer=self.bias_initializer, - name=self.name, - ) - - def call(self, inputs: tf.Tensor, **kwargs: Any) -> tf.Tensor: - return self.w(inputs) - - -class ChannelWiseDense(tf.keras.layers.Layer): - """ - Dense layer is applied to each channel separately. This is more memory and computationally - efficient than flattening the channels and performing single dense layers over it which is the - default behavior in tf1. - """ - - def __init__( - self, - output_size: int, - use_bias: bool, - kernel_initializer: str = "uniform_glorot", - bias_initializer: str = "zeros", - **kwargs: Any, - ): - super(ChannelWiseDense, self).__init__(**kwargs) - self.output_size = output_size - self.use_bias = use_bias - self.kernel_initializer = kernel_initializer - self.bias_initializer = bias_initializer - - def build(self, input_shape: tf.TensorShape) -> None: - assert ( - len(input_shape) == 3 - ), f"Tensor shape must be of length 3. Passed tensor of shape {input_shape}." - - input_size = input_shape[1] - channels = input_shape[2] - - self.kernel = self.add_weight( - name="kernel", - shape=(channels, input_size, self.output_size), - initializer=self.kernel_initializer, - trainable=True, - ) - - self.bias = self.add_weight( - name="bias", - shape=(channels, self.output_size), - initializer=self.bias_initializer, - trainable=self.use_bias, - ) - - def call(self, inputs: tf.Tensor, **kwargs: Any) -> tf.Tensor: - x = inputs - - transposed_x = tf.transpose(x, perm=[2, 0, 1]) - transposed_residual = ( - tf.transpose(tf.matmul(transposed_x, self.kernel), perm=[1, 0, 2]) + self.bias - ) - output = tf.transpose(transposed_residual, perm=[0, 2, 1]) - - return output - - -class ResidualLayer(tf.keras.layers.Layer): - """ - Layer implementing a 3D-residual connection. - """ - - def build(self, input_shape: tf.TensorShape) -> None: - assert ( - len(input_shape) == 3 - ), f"Tensor shape must be of length 3. Passed tensor of shape {input_shape}." - - def call(self, inputs: tf.Tensor, residual: tf.Tensor, **kwargs: Any) -> tf.Tensor: - shortcut = tf.keras.layers.Conv1D( - filters=int(residual.shape[2]), strides=1, kernel_size=1, padding="SAME", use_bias=False - )(inputs) - - output = tf.add(shortcut, residual) - - return output diff --git a/pushservice/src/main/python/models/heavy_ranking/lib/model.docx b/pushservice/src/main/python/models/heavy_ranking/lib/model.docx new file mode 100644 index 0000000000000000000000000000000000000000..ba1f867cd0a6753a25cedceb23f1e45b098fe7ce GIT binary patch literal 37481 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 None: - assert ( - len(input_shape) == 3 - ), f"Tensor shape must be of length 3. Passed tensor of shape {input_shape}." - - def call(self, inputs: tf.Tensor, training: bool) -> tf.Tensor: - x = inputs - if self.params.dense: - x = ChannelWiseDense(**self.params.dense.dict())(inputs=x, training=training) - x = tf1.layers.batch_normalization(x, momentum=0.9999, training=training, axis=1) - x = tf.keras.layers.Activation(self.params.activation)(x) - - if self.params.conv: - x = KerasConv1D(**self.params.conv.dict())(inputs=x, training=training) - x = tf1.layers.batch_normalization(x, momentum=0.9999, training=training, axis=1) - x = tf.keras.layers.Activation(self.params.activation)(x) - - if self.params.residual: - x = ResidualLayer()(inputs=inputs, residual=x) - - return x - - -class ClemNet(tf.keras.layers.Layer): - """ - A residual network stacking residual blocks composed of dense layers and convolutions. - """ - - def __init__(self, params: ClemNetParams, **kwargs: Any): - super(ClemNet, self).__init__(**kwargs) - self.params = params - - def build(self, input_shape: tf.TensorShape) -> None: - assert len(input_shape) in ( - 2, - 3, - ), f"Tensor shape must be of length 3. Passed tensor of shape {input_shape}." - - def call(self, inputs: tf.Tensor, training: bool) -> tf.Tensor: - if len(inputs.shape) < 3: - inputs = tf.expand_dims(inputs, axis=-1) - - x = inputs - for block_params in self.params.blocks: - x = Block2(block_params)(inputs=x, training=training) - - x = tf.keras.layers.Flatten(name="flattened")(x) - if self.params.top: - x = tf.keras.layers.Dense(units=self.params.top.n_labels, name="logits")(x) - - return x diff --git a/pushservice/src/main/python/models/heavy_ranking/lib/params.docx b/pushservice/src/main/python/models/heavy_ranking/lib/params.docx new file mode 100644 index 0000000000000000000000000000000000000000..abf1e8544abb1806e7420384b14502a9a1a21795 GIT binary patch literal 37070 zcmagEWmsIvwm*z(a1HM6?hb+A?h@P^2@Z`1cMI0=A1Kg?!E8( zW%E$A)=$>jT~)n%E6GAaVS<5y!GR^Ga%)wp6vicigMp2~fPrCvMs>vj_Mgq{KO3rf zIG8!>Gr8N@HYUj{u8N?3IeWoMW)>px5=X%*+i{?AV2Hz$s7}A((OzOck%M@+o8Svm zpHT{dVT#L0z4IYjtrP6>Zlcl^mpIYa&(O>#gDm#WU(aJYHRs-wj3bp~Y~Thq^Hh#q_cX`u?V>TsqwKugZ;nUeWIi`JLAuMl5(+*Y5{7~_{vrcj_ZP@d`=6j!aPQyw zSKUcJcNXortOn$n$T1|->b@iq7NB*mXmiL4yZvdwB zk1l#p$%@>Ay0-xV28IawYv^QV>&(pb`&t=4`4N&8)$dG5a)h$jzDZr8VA(+8P`*H@ z=j+62kv&klXr-%DSwde6yO-$TY}dqmAw3^|iN44-P}5j@J|K6oS8J2@qM_Yz4K5kJ z!=Kb$Z6`?EHZ9_Y99hJS>W<4?gG7ja17lE^w*GWRv`S3Ekj_pTxg@AG0qq*`GmWN; z592HV1|TKZ#2H>(+4{rQE&N`%>9e$vpU6?H1Da~8f+;HwPXV%wBgVD3%)xYYS!`1=C@mxT30oJH<83WC!{Hk41w(@l4C^hkZs0@<~n4DRY;NKxJQtX`){& zwJB#hjWJ6;aHBK2Txb6*Q0Ny#RV&bKJ_9Nc8mK^~023uAfP*u$3Bbwh_f4J|Kd#Wv zf+~6EEjcHz5q5@O-x<0l^A78M-#)y)Um~Et=e~f#J+eSHpq+ISe|_$|#Q$esu2)xa zjzN8~g#rUZ{d-?NIXL{$7PWEvRTk8aCweIT&*4_EqRP1O0Slrt;_G-d@fpo?V`LxW zpjugXfIbhQSiE1DZ^HQN`JWobo)$&TVH*@I)v?AO@Y2&Lhi(+^=xkt&gAm@kOnEZ~?l8YP@F*sb#zPlel_<>_muq6Wgb|d9bo_R{M z3WgKja9mHKT34zWdKq;R+pQ%!oWsir`65meIr^PE$@&wZ_Zlr*%YV%=w&k|Ils^_( z_7)lHkzZ`-8C!yGMI2U#FgBqn6~ni73~=>}o9A6Z_>tp^uD#3MHt9$-s7JW;29COytzultz^aUJq2htyL#27b<0^@>!A!b#Ep7!Gq1jbZut8AIYoTO~aJ1+5Y8eOba8K-EMQu;{1 zdw(=M{trg%N43_&JpBsJ&H-P)c=9HGe3a}tQe&yNPt?t1VpX6c`lJvJ^gQ;XTl+GbE$ zmUlNK^=`0)yKp3xEw3e07-0n_ls$3#mP>=@ zlLgrknu<<0lwka>&kCtTkQ(_q+g_SG)H_OFAICQIl`yfywHa>KRht5iBO@L7vB0a_ zE22syN*BmdW#p20!(jP~Q)^aFwB+6sF^;#%OEoRVIpGx|`kF1+*5qxNT1E6&uY@Om z@vEPwrWY~^?j1-0i>ho;N-b+*i7}^kOdB0tJ^|ruPhIl2mL3%9Em)muuCL6ld+`IZ zrys>V?qLlXZ%I>0_RvR;1UiE?d5$uQ~yI93cI-Fb0;j6WWqnl4_PDJunt zn|znyD^4jN;?GcP$jWlj$=ul+i9G8vKI_15Tsf(yh|Dm0D0XHT-t*JN`?Xb9^HOos z1eUNHW~dog7GkTfX{>gf2{#5^=dsGP^#QC)gYclMglUph30XG|_~>k)9bz1`LlA&=h(8vBKhHORUk?5} z>m-UQ2D0FOIeSIu3r@f+vX6NGE03z3PO7@lJ6LKZ{#JZ%Q+M5zL43!5_m0aao7!%6 z@>X?WgCCc^;bQ<#Bm@fPY_O6Ux_|{r%5hJvMWyQhA zMEPfg+E&VeIs}TwTzipLtg5JjLn+nxFLm5H5ZV$m@n1iMWM_T$Y$v;ztZKRJtgzV< zUQcuG-BPI62;(uT+SdM0teQvv?7 z7c7MEu25t#!45B>mW}eb=7(d!zVol>{v_0P*v=~@8v90TvOFu-Gu2SM4}ssA|5@v( za%}zxW-u@Vb!ae@f7ROgvxlvj^B+sDzJ9`vRGm+EcV52X^AEe&Ah6*nd$4#{f=^zZ zS+!^E^6ay}zJ0^7j5#s%r6d(0R##Ei_*fQS$KRKQtwg)0nVFzw_VSYL+hKbKG$f8r ze>q*}?(atGYSlf{cq*Pey=n&lUvRzoANEh(bxyOAS6}R3PSb@KhXJn-F>en~i)Ycr z!p+CK`u7j(7wswY?N0}@KX2MYLUxZlUg`v1?cUlpf|-FU#0JU5=hOWMAt`&?s0R3op?Ymd|H}3CG z%10~>??Q?f`+ZZF|?nPhS*1<)lm=)d-&oXTD+!$vJ(vP}&|23A{IC zUVQ?Ia@+LXI6)a7K6zaC;raF=EH){4qPYP&2HJV?N%;~1g(!Tfdz_aCgaFafDDghG!*`x<;I*d+13eQO?ftAt-_41KhPeRzVIJKAH+f^mFbUJv@sec@iN*Iz!T={?r~mpe8E1S{RnPD4_- zPqVlckKcR@&VYhd+4hTX7z16&ku59TCkh9vF@T->A8)lf-BMZjU2VEjTo1I5JzSo5 ztd!KR_pAG^+y{ufr5A&5?V$uzx5hFa2F&@m-S`>^X*+OrUw1zueJV%UE`~^zSF6mtckL6;@r$An@pl+9*yoUpfRBgo%@@r`=}ObYfN5`a+tA6P7BG z=k0I$f7WdJRAHKETN^*8EFSDRI#*y9lsv|uowq(Me!5blwH`>dxDR~m(63sUema?b zbhvYT8J4-d5UnAJxgf`nSbNhl^Y(wrE{Oza z#xQ4Eb;LG@2QO;zx#B#Xyq^EGqt753`i|y}MS2VOUDTVWZK$TwE(iqsO!n zD#KbSVaDd*8p-V`&~+)p4QX(-i^+F5TiWi}DgL1K*FZR+ddI&i2DQ}Ihen|9>cNTO z$npKk`6mCutQ~hdbIS2S9QO414-;-gy$x1*S0dBSz+AjdLWTV>>-bKS;=NtghqpZ+ zpJqu*4N(kxFO|RI<!R6O0E-Bc~7kVmmYkINd|A)$up)Umfq4Hwb_US0>zixdyW z*)~2Cg>}e`rK@}#Pv3fuFXM)$6<;`$m*FF3tDp6-5lxakS@6w}K-Z)wnp-xl^Vl&p zTsU6L7JEPet)Fo6zTP8`qq~o@uc+2NsRJ91F6sAnPtB@7n1r9ZIuSnd%MA|g?D@)a zVSiwD;>NZR@>ta((C@Ni01CXhIRf+4gQ%I^tlIO9@Y>CvXK-!4yb=XYtnR@nd|(GE zeVw67p)ZXZ!Tex(uIiv~eW&S! zrZ>9Z79aKVV^eOGsY`znX6C>)Us&KzifF%tHR<#wA(P`H_Vg>?)$<&*#XzaAL>xz7 zV0jrQo)59sRbrnHB+ha@~&Y+uY(#rU+p`%HDtr}#(K?x{fGrtJD4ptNjT zga7`gV>;$6ar5RG+1qQ{T>G@!*dg(XZwqz2k`DS>22ZUarWo)kps)8j@K69 z%v0xNkS1^?2bdMGxD8tS6=9J+Z(g&5eCr+cap!||kXJ=$d`Ejc8?AsJ%=}7#x z4z<%Pl~&n6z_+UTr)P}rZf|A33r?M9b%}=tk_RNf6IKm2{Y^Yf(?=v*()UY8Y5w@- z$+Bs)Oq|70rV8zD`$1yAu8y)g1gA7vYg`0W-q#QzgE>zhKmUyFg}%_uFPa`zDeNXA z@OH~8$OCAbG-fAJ<&BNs2lGx5g-$rdRpdp?$5&{Sgcv|AX5hfFy-+#wwmp>ZxQy@lHpZZ*8uM!c!yzdTZ$-0F^Dwj+wIns-c+NgX zty3lH25L|CdyTx0ex5u7@%ADioi~)W=re61uQSBHEEYgUG5yxVtpCdCj+d|KNJv{Z zhCfPbT5Fs@tU6g^L8io!*X_2^_iz2vn@y{nt7m8Ni)rfp zNeExw?q44l2yiN7Q8HL~x|iHJYSce*<|8PmQIuKo@hp|q9BT|JUfgBa%2QPT%n4Cu z_uP^gei-!3?@w#Hox@NHUX7&VnTadOTR2437;LduXXv}&YHv24VO5Ihkxiwl#8z0-oB#g#M`$VK7n4KJ2gg>vU#U0cDThg9F>OGw z;1afm-X$;sT9US7cfgrtMh(*j{+Ir7P5d>tNM^&3^Nml-ki|QM7(+}yCirbF)EtWy zc-pBRE}rMG44EZ5MK_Ss*-I7hQ1q%OB(4#@)nIQWIowsy|9GJWVihj9T`AKZW!+YC z&5t5?T+J|f6lPXy6cWc(kM6{c8PCP9@MO}|{NN7*?HvY8;YY5`)F#%7^Q$UUTlAA~ zl4iFg`z|ip)4L><2aYYhsS*mVjD=Z-t%6x^t0VhjGW5|OD|y7~c1jR6Dtv8{3r^Nl zR$HZ;oZF4si@29%be#08M_J=3hY6c0UZuEY*cCob@`$qS79g72TGXc&2o@LKW{@pA zuRwcQw`@nq$6}9q+qkFzSvs>#YpgP7v3;*Syd^k1y4npstU z#T=Uru($>le^y(O_TkHjdi$tRJi}E<+LdS|-IqO zP?DJv)dRy=Eb8(0-n|}=%6oToxQs|Y_)I21-*j%apY=blz0ZfRLsqf8YMSKunGXI~ zK{I9M`}o}v@_KucsbS!;b7j~!(C0Zf2bi#$hzUt6WJbeV8&r!)>5_-ek+JsiITAx5 zWIT9#$s-Ejm^1l$8`52g za*z~(wQqrkXjq-=lU6&)ru5+D z^<4989x~W`b1L3RfmWiO;M|E|ThForwo-pE|^B-LNMZGe&)`m0qWdWEo_%_8tke#*M zzigs6hEC_|aDG9Vy1{qKA6z|Hj(I6LKvWYXe@l;c?(pNznY@6ggX@elgYQg*RM6YJ zlag~Vwy3(r?)*e2jn;`Zy=0!pee1uPmfx(rB{$6O3elGIgU@e+3UV=3y8{-Q`h4sY zeCJP|VMKSx6#{0Gh;R7XAZ*sH0mP0l;ZFe=)Xt67he+z8;fHnWt9E+Sm zIQ|F7IouXPx(s?7fdLrqdo@8DpEGtrH3GP(H8O|+Otr-T`+gYX+0e_-dV{?6i-$<6 zAec!kaX?kr;bimrpr5K&`(7b(PP37K3!y@h%Qk$6la?5OZ|VYK!;fniafIwzDw*=y z{2dRxz~;pzKHZhGdG_xT70lotYz<2juk8{`8tLr8FW&pOeEy)W!vAz*2cxpG6@nMZ zf&A=5K^f|MnFiFW>hc!)wb>^(nnRiTnKq-viAx@klp?=v?pId)vbsAtuaDp?{q+tv zVhfdR`6T96~f3tDV8iwt=&}FvIc~YR5Rwe z7`P%$%08-~UYS9IY?F9hCc@F)O`1%;fqVXYsw4dg*s9}etecOw5#QRE-;ErX2Fv3p z13>B6?|h^>|41+SD}C4(451Bt{s%Y3-5?Y~1_dRo8CO3tO%TQ|8#W-Bv8cPRB> z92N3Pprn-H+{B;6+7<_RdUQs8FTvSZ3RSAM_C@bZ$M^5Z(xGxeyVBF}|J5oOh$#-LCj9pZXsA9_7$WX6m zG=Gfrq}>XJ$WmgSB=u}j>nusJ4Kd}nntQ75-wz9P-A&0MxvT3-6=C9}L3_`>c!lCJ zx2g1jl7tDC2BjD1#wQg>pqV~7EM0hZYMA`CPP{QKb|sNtAs)%fZ=d`V=jDga^`rB( z)IPQ5u-oW@)JLWaMG)6zQbR?y{?9nYm?BoU(||-6J{_!%#`oID}Oh*WKnz z*oXXB)xDNE)jGR$nK@0Iz{5K}`!)>wM;&&;sZnyd9Q&2WR7v21ys&uXy!y3n)JEP0 zASv8!4uHf)R}xAsP-Pma;;TjX=_|qdnsFA>cBRI6N&O8~(sju)OR%^r@LMB~)Sw_j z7geCYjZt zlaW9hCiIF>M_PiY0wRgsn}$!bQaj76&|?4114Z#K9)(>Q9PsVp3njD~Bj=+bW)`{< zI2w?p#P2^v)vj51+gc?>^!s!xkCYF38PuTE7$A;tQ81C!pytkBpIF~pVSBG&gO9q# zHzm-Hv~-p)R#S|%M?{c^s+0v|o#xM<}I_v@%n zo0Sx~*Pa9w(H^|G9j-B#4ZJP@nPN<`4)Qi0>vA|bp|IcdD zj6h|bxd$GP{0xXpZ~b4I#}e)*T$RlQU?$E=QQRiPj)4*C_D<=ja$q_)JL61xv!~n? zy-sg-y|p}dM)(T5wbIt`PN`I12ch7Si4m#^sHE~v{rLwSfmK%m&5Lmk$?ItOt7Gfq zYr2Ma8daU7$-Oz^ z>gu9FknXIZz*O*zu7!7$02(XKi;2F(8f3*U3Gt>LVw}9K3@Rka0V66ySIb7df)(gC zJATssa)hY7exs0NFasJtpwSF}A{ge5*iy3{2Y|Jj_}9Zq-KDn1=HqW24jADHKk0KL z=P!rd>C}DQ={**}h7<;7YRQq}GX-3DPgphB-m*Q*dS)z z_L>0$Rfd8;*9s;?97L)Zi4&MAoW#4(!4X6<>{%>q@wjCL(*iSbntWVppt15Mrz|p#Awsd6qo$j-&F2P{Z^?;+yGM9 z5Bpms6nO1d{aj4J(Xcw)WO57YWQ8gv52=Rn z24-o1E6fgk^_R}acx_uV0}SJxbgd!kE~|{uZ@Wpj7K~+-Q!*L#t0aLu#lSYr{fv1- z+p=bQYS3T;kHw-&{D7&Q(YWPK1}JIj&m^AznUplS$9S`UIlvp{jDGN&>T3m(?YVpg z#`ygJZxs7`&kpp13dzRb^RD=&s0VY3cVij#mo#9qFEn5~8Gnp3Qp(6Jz%-dqPlcIz z?_><6z7sSEb6&{P`90r`#1`s&RP1ForS0JmSO|20bX53bJUQN!i#2soAe)Ce`6A32 z&w}mRopMS$!uk&-Tq7h?rP-%RycT<`_{oo~`2SIuOSn(yB9ehI`KLnH|EcgY<0@n_ zZnJ{RQ#n`kq~yKRs8fj^?Bzi2cgB&~s)G0Idmd_o;=RbdWeaMs+P22e;x(I@(Q%uE zzjx@vht2hFhPQU%j_hD%Tp7I(R4dmthFRvv(Z<7@gTtr^#j5DyxxI&dtNciFn>uEe z;^JikPEP`usn5S^Py731PTM4-cwy^q3_uI}BqPiW0QpPS8H-P4Q~mx*i!#Z6iFKmy z5YdtTC4A6UK&)Qz`j1?dO4m=l`n(L_X#M`7vBB*~k}Hv!Lj7ovH_zeALKJeGFuPPDVu9ff06eY$vmiN-Xmx>D`S4| z`}`gDP_;FVxzo^Kv(vv-@VtlSVm3LKnCGRn5ju6vMi-Z=5#;ZGxo^ zb^nE1OR5rlfPpX+e zS6_VKALzpJW$(BE(fUjQ1SPs-@LAdscO*0Ie|`648r zHrw!sCBcCtF+1jErhU{|7h2@vR|L<|9+&;Ja+CuJA^37iX^twNz}bEAtyCe6>iwO> zEJvOdL=(IERn#oU&(gAdCIFwjO(!7pl%vuW8ciN@rr~nKKiTt4B+rU4#|mPy`^Q07 z6JNN$h+?-FJ)Xp@=_Eklb6G->%#h#=N0eon--+D3_b!LLXW3E7IKIN{%GquyuY9?o zsKl%YM`cG!S>c9klBEu;Wts@PL{Gq5G9N>qtLJswV#U8a>f9BL4*m`7%4^p250gJR zDsQ@m+GZP8{$)~D_o%Zl>`#*+Nxx0x{M7b_(b#G_+Qo_@dCa}amz z*7U04V}1eA@kFy7Y|LD5BtY!UHL5#N1M4CO`Fop$8u90t zg$xDXh6bT^{6=#Zt%TJHx%iF7>~IS+ImE8HG`=!`Skhef1*gUCyv`kb119ENjP%#R ztugENuZ4!xPbj^JsI;gZU~!N=h^VY29bh;VVK_gaZ=jiJICp=t82EX-+lIbv*3UYa z#O^a#pfV8YROjsIIT=nIL_7z|1>uCt-v^A^PUXTQv;PvUd<9bxv9ktuBGD%S9W&g) znWWK~M-Y$T4U~=%W3rrIboI%?4C7>avYYV#YWR!3SktK$-qsIV~YP${8aU5V0(1y?}F|I0zyaoM&tzTYi7fd=Dluk0Z`a1UDnU9 z#!+inb+V*|!@_yA>&aZI7F?zlbGqSjpdW|f9n@+}<|@x_@lU~iW_)vXll5umzi3B3 z=coSq?qJQQN#qMP3r&fj;!RB~P+&g45AQrQnts)>*m^C?p%c4ls=4>JqX%IL@iO!b zZIisKI0`NFEO%)z{fT@koNOJ}@X3yIjyId`BX|s=YwTmAJ>OONy_jOBBRp$2GE4WM z5r+d0nzd+Zc27=@6y1Ek*kh4e41!Gp8DEvHW@4G6SKqUaWx#icD@3ZU1Ft?snTcsI z2ib}02q}{N5EGp7bT8+Nh7GbSn{Lr~zAIHp+AYWJLjRTDJoErjv(n}qvi(KyeeTTZ z1M(>YSNySOC>ZF*mJ%ZD?=yLxYFdzpGmd6Y>S|G|IQxs<{N-F}j-F|GclcA@@xMKqWm< z4LJc|bI6>tpOp*ZQ`!d=FX#dO9ikBsB0u13_IXSEM77ge7E3oa9!68|GlMYP5|+Y( zD*6>W*c$rPaUNRe!!}EI9L~M1(X`w#BU|@vdU6@NuzDf{5za4?n?I?r7gPX4MlG9va;9@pRS9@xW2z4JRe|mbB7*1M0(B!l?{Azf`Xui69Z~&vaT}-iW z0oFpfzbHwLdL>>P!F~18gROXMcY0;h`NGjBBrN%xsB5~~wK9F`c?{oM_Xw#AR0F>U z=-tv|2eP?fHer8JQKaGWkl<^aY9g!!1-;LD%ctAwySG6Pjo%nLqRyV5d$tpMwEw$R z)7hTCRB+fUn@65kgr!CPs-FXFss3>hTleLQ&$*q?ta)gbas#c++CZoC0<KAacxYw;{*uVR zVsfxd)#IO!W%d%Ygsngq#ys`S>Pbo2XKBs~JmZa#2Sr0-&{OCw9mQcX#Jtk-GTL=$ z{USwyGKGTqIIbVsmF(_`wT%Iip+v|PhwzyTCgs@+;*>%kQPp;i-NUMr*d0HMKJLQ` zVm+W1U9XK|EaT>|Wp`}=#u69t4~oUIOM`{32}-JQluA+Nm(+f-yF4npkWVVGlW$sQ zPP$dEg&gf#Lw8?_uh`y*uas9-JX_Z zPs%_Ge?(I|Klbdcj>2GZ>3#Yw_!*VzW{uYwBskzdf&;Qkp@shx-1}Sb`ES8h_{T1; ztPdK;wq0J(!fM2t^!G``qqgP5qjG-%yZ2Tn1;+dfSgGx^X*AB{5E$0;^$k$9sAGdi z80%S%@jmxJ#HZ5_0a!9r1R|P^DZ{sNH5L2^aMS<-FePE8bn64OFp?@1)-!Ik+e?R+ z{(0Afs3Np*B$xTJYGFOA2(++I=Vl^pHTM)~R230;$g5=n>?r8c2cV6VA_8G9@(@+0ET7co#+Il}A%nK_-%vPy4DjKM_7-2^17@CTa{zWgq zJhqZWq*y{-9|2bpr9?OH?z$0Wdc2quF3*$(Ao!_gfuc&Zkz-hIgTU%2Yz$Hz%NFPW zRsp{E;y|_X2xL)dBRxe*j6$Va?s^8aA4{aKfO+QO}I7=VHe{9-0SPNG^WM zJ$tL={DBQ>7(Ut!EtVa68=aNe@x<(xy9KMTUYyhk0Nmgauz#7=F-J%f;;>3IX6_YNy|B%b1$q?qEMI zf&+m!DrE14P_N_mM#WzWbOUDw2%RDPw%ieIhC?tc_;9%4dL4I9W{7z<64|`KhaHnj z!GG;GXDGJ71hr-jd*3S4*)j}@W({kyeUX;!w6r4CWqkyTHq&_EWEiOEqQC+12w(aY~^+KLah~=eaPR#q!19+srf1zeRc;L+TwR^zIo;RWouALE@%3+6Vq@vdev?Kq?fa zQ0y?qc!N_2WIBHiL5HBMz2tes>QENZw`z`dfL?5c2JeV1sOFSbA<40>&U9kl&orR z|FK1{DkX~3$Y{rePa85SZjw48nAxfN#JO(SoyfiGyb_&0!NP2Cs7OEq<_z$$VggEo z3bbD)jpiveD2F9kO^gMEojr6gwG2)uR77fN!)h(N+cGlT;^CUVNf?`<|Ku!Q(=*a% zS{xt4V_~Uf%dGGp8hf7cX0rfrn97IR)v+;ujk5S9xm2M`sX;Y87XD)AQSokLKUwQN z8~ylA)tHQsd-<|UhJC*!J8jdO(@iECJrOJY*g z^TmjHHp+-?zD$K2S?7LYdOA8&%CVUl67E;6RD}f*6SJ)2Rp&V5_LKU$-~$i#3tdJF zv!i!KOXy#RjkYrV!+J^BalxONrj4L-u!4F=$hbf*dk-g!exCvwOMk_OOtIo>ODVo9 z;(s@!z2uy-$VmvRa+A{g<6l%PAS&F*-&8CSgT`C6)7&N?n`~b_ScpAsjYrzl9}Q%( zlCb#2ue9EGh;r1jnQ9~-KPIR8>Cw=SySPrh<1;QaX!u0xRa5qXQlp5K{;IPFX(>Ue z3CrR@D^=tdI{h&Xef`j>?L^fG8~!&?d!(y*_x6i|#`n_hjOGDG#%7>K0#K5VJ%qee z*=)pYT~HQA@E>gJ#@p15%`Ph{mPj&&$F_X>!jeeq*}xUZrpKVR$o}3@2w?~B+o04J zm`YG(n?8zGRPa~Wo<^^M<9o6`p25&n%42Ury3HoX< z(piD;SR*VctfuZzf=UQ0!Z7%I_4t&1o?)g?PU%I_W}|{Y;V`#$WlnP`VA}TfbKlzc zcCER{BxmkKQGsCngT;1bi7CB3&EYnxpdjctZ3(o{p&ap>1KadLl1HowHLllQE;huk zeZ({PjpO#1;qYbnxW&^>L2k@cvENW)zj=Sq34n*ffTKc{i)|{g@B%L;_p=x2O@GQa zq5+n>hy}-2rCF7L0ZL_*a&eS$gSo<>u;A!W)ksQ6e0ywA1E6m;(JS=ksnp;Y0H>3K zfJTK9rSC_KNLX7w8*p^jkaQfI?d1R^(nwrivf8tH*OJ)w+;?g;w(?XZB1)n-C0mbO z+~`y4c4E-J*zW|nAWb%`GnH}+idFFFdhqGc)DB_QEW2bBHgo!xvY80NsN5RGgV&JE za>Q~`$VH(85Yj}Tna`;*GMzvo=+tmMz%7KKuQZN>5GbRBzAJ%m>;>kCG3SUOX5v4> zU_sc}qAV3BvS^MhB4asmt96A1=0J!->*oYu#kp+j%^&Fmr=Gz!-B&KaV|{eZF3yGU zKIRn-HV_HMZo;@jqFb68NUuFEn!u+1w+cj*KUD6G+e}8V&YYvKSa*sM|#Y^?@s>Cvim@4p4^V=I(C+4>vu$?HeT#*~|kwg8X zbW(VHRIU;X{1Q7HYZSr>(DF2GuQIFct@Orj6NGB(hAAgWP>+b4>mMR14qtyEK(X6r zutcQ*`i?4Dpj3y$7KORxMG8-gs#1bMTXKSJjY4~$|6nSF-F2ow68xC0O45D5`((MN>5>(ohnwX;tw@AL*JwZ}E#{`=O7-NRI@a0Kd|TypL^VcOFI#y?^z6b@%9c z@@ZYKdU(BXSzWo*8v5u7R^R#-**&C~1ATqpn)H3$tan$( zeG0lCm|FeMfW96=h8?ACx9<7HZ@h2Dn=KM^0Xz?;i6 z|3<}KdwcaJqbo}JeD&xHWo35-y14MfLi@arlX>gXiADQ7nHL)$q3pD9Ar71GL(QrM zGHm(q{7ZYr&AQ>JdN*^{<|hBtWa&fI^^Ys#mj`dB*4Nuj;<~$3-fLFYhgV?j%WeO! zmA<<(wsnU`@^67F+j;ST#w~OlL&lA{y zC;3+(yKnf!`){R#A(N|~zTP>q zu!3hq`NBlW)j#tx^y&->`k$R2%MY%p+aqhm@d4$>jD#qda>U55Z}scjt@&eef{Zvn zt9-aC8o4MN_F3?80K=5l!{pW$5_8dtb5mbSGU1i^RR>*f(?iHr>g`%ov$EGkqR%Y2 z;dY;vk#g>Vu7Si|+3P*QprOMp&=4+Yi2e3P*h`Dxwd-M9`Wfpi2&dpDzJ!tNtqqK+fTgPd)S@D4M*P2axm0MktaYr~?N#<(Bh;?gCK$I~L zP+ogueY3fISjQ_r{-tuLk9j&GWN&sK^r~Rzlgq=fL0Mcjw;ORZK?$%2-gB>b{-F3p zzb}N?gW-`9ve)cK@w~kuAooXZ3xfkvl_A7B9^#vpP}PRPl;B`*oOeoJv?^d&wKf46 zVY)vuG0H(8tlF4@&^wFzJw5)mdwf_OTJuKe8XXo>li~gTj+TAXH1~A+NpZ8qsk#{h z_W`r(J&~0CieaQfC8J3zZ?gHgD-4>pT*y%HiWg;p(e z#VF(Yo6c+3N+x{seajhJNAoTAdOR|kG27cy)AC}1X^2?cyh80SB<{v~Mz;)oFq z01AT#h1vWS)&sCd++vYz{Ef2?!Sn9>Z=Ame{LOQXR0H&!F4+bs3>_5q+ZwWsQ@P9| z^6k}S^i%L2>7FjtbG1xD2N=+M&X-Y`v3dLka`>1LQ)7CX&M0{Y>Ds9N!D;wT#!okZ zfYqx!X1aWGyRbwU@GjD3)9CHs`7~s2FLSK#4kHp@M%aBExZ%p<`gqFM>iu?L^Zm%? zma}qrmm9IzZ5##X_1^sf?!?LK=gV4V7nVR~`^M8xrYhK`cGK{zDx!Bgt->z5$4Eqx zbDPV11`2{Krkj&D_)X<6F%hN}udPg-+c%dnK0ikf<{!r&ek@-z0_pdFpVpZzScSIJ_7Zig<KgOiTq+p{z_(uj4s!1S8k7-d~nb z_2f|d&yN;hBZ}Fu&H>&_q_JKXrno_7B+UK|hR9ag*x&6r3-qI6U7w(=iUF}j{>7R| zii+d{f~4*SGFBEO$16z7>Zd5|TLNWYuB6E`KKO*xTL@)1*L)V>77Cvw_~lM83o%~} zQ&x>u0^IcHV8>C&EGpIqAMuD6Vbm7RKG(-Q7L7OXKeD4ha_A-QC^Y-JReT+@0VF1bLlv?!E7x?|<+8 z)y1Z$YQ`L6ti4yyHFvK)T^wsTb8Npkn7PBKqOb!#SrE8P^L!eW|BWgl65Rd><2-@7 z4@SBSqwF>nTc^qj{pcYZB=p&;eFYcaV&`6UBi}G+OklA~scGoPBEfyxm&te8p5m^9 z)ZE@=SDbIAefQs1zj%5x`0gTk;10rKTr4$s>I&p}#N0aQA&m|>H-6f7(|ZvIY^`{l zwRe;Gx+Jt=Gi+aGr{(dKz#os#w;CCM8VEL=YE146)MUu6R3{NaqIwhd9>!RZ9lK}@ z+4wkg`HGa@r=vMGE6JEVPJ8^gSWC%>n$f?tGGsRb{lY^RPE3yQTXmJzJ;U(oIA+wISR=2czg0fgR%xV zeS*#7^as_{haQaGHIR`agtc8~^?HT)=Sin`JsR8`4<6MCXTNUNjQUcWl3iR1#br(h zGR>*3Z;v|5MqXTX#vgCKfXh=}r6krItBDuyF}V^723X1a@02S*%=z_{+%jept6GDH8$~=4tEY-r+4S?0cY&J4xcAl zg}<rf4FCtvk6smK@lPciyRt5qfl|0UE^&JS#3@Jcy^{JXC#kJDzf+)wpLUpIY?^ zAsfV+ue>PgkoEPzzScc!!nk;kC6vo!s?{^h*r<_0J;c!YBE7ijz=ex`gb;k$E8OwE6bp{BvS#>&I9-e$r1- z6!Zfx`REB&Rw$}WIdW2%aG6geREPfQ58x=F=H@8kqs>IPsxD^ozXK4wlL+bwub=nh zpEF}p!xm-8%Cc@7f0RREdo_O6GgoUs?!ncnc414_OfY_y8W9_bi>%uLyKKv9th-e_ zG1G(%WzUOIDUYC`B&=J*PlE%Qes9mFyhKf5rtEk?8iCwb1J(i3`86@-sOHQa3pC1H zbzdHq7Jr@5@|(xA)5g8YZ;6G(ihWKzFr2K)*h`#1ls<2e9Sd+t3dYaDxX57@OZwe@ z>8aflk5$z@S5r2GW%e>*xIW>rgghK^mD`Qg8Koh-4r*g_oVZ-L0@UOo6PNAMho$^t?wOl&q`{(Om&vo3!MN= zPiZ#uJQ%4_dq=a$PA$%qDWQ`SFV$(^X{=(pD``nKW@W$b9EQxcGp4e2-y<*Xv&7q* z?`3BR%~tv{X{BYz5?7Pn99dKil{=DPA~r9tu3@2vi?mQ#R|hV-9@yvcfQHc-T(iw= zpZzRy5kV?lHQV6Tqe|=J>{8{Llx05L??=euSFfcD-)O&@8DIAPF!!C_sPHRq^QIfq ze#*5hU8;Wp+lBw-o{8oEIy(9mIQ6`%0G2x)tI^s|Kyd44-wOp?X@)HurhOyCN=qLK ziCF&*@6Mo|ln6U=`yF|Vta!<*&%zlAvCodV#z)8g%WnwamkE)^3Ch+>yn1F%h`A=rGLX1#dpo_W02&O z7y@(WXk%Swp!TQnb!?hO%E5IgJ9$Q3&;2!mWxlr82PTZ!P)UHC7@W3!vC1V9Ls5#8 zt^YtPE6i%?YBitR5Kkmrb?5lrg~wJ&<8w`#(1G5+<;lIz!1dhd;*zH7u2 zU6zF|mLIxYPL8|VN@5!LEf`(kQ{|MK_(t{i2!lOmoOQ9lM?V>AYo}_S#0~Z|xZ%KT zW-Z7EA^a>Q+cV*y`D{Bfdu5#CI9DDM~f@Vuafg z>(|UFrA9w#R^-;Lrbmb^wm3`@AokE}ZS$SjgZ3-UsmQ-0N`4 zIc|<*t9i(>h1{zOg?`rx0=X{+6HM9+Wb{q&uC2&Fp{@~m&03V@8u;s@bq0Gtp*BWI zHnR-w&v~M|>(lG2fFrRD90`@{8O5rt-pMlFY|Wphjn*sCGQS+!(gyP4Is}@!2Rd>c z%Q(9s1dMPIPeg5nTL>L6)KI~wp+VU7B;2MCNV2_ zC=MgI*s^Ywe1Fd43QeP9nz!w}5pcbWfqJuY>S`LLC?v+_I0g7b@f6y&QrxD|uPca4 z+ucId&G}rs%BP~koz0QuH6PMuQPLL5YjjFrwV?~nq5~CL*`|@9C~#4uOo1NOmfBN& ztG2VhI2$j%->8c0Ik{KEc~*mYlR8@i=U4;ls2~{D7K^Zjcmh&p;I>zzeO6axIyIo+yhgoLYSzmZqho%r#+=z!z_sJo13LwC=jD>vcXtn41ut9R-YM0QL0#KH z-6TbsTJk-QA=;S=Y<&+~4KLet@X&7otv#F|Mdn83UbZRg+fCbe5|v*(Y}cpo6o;8^ z$r^F3x6R9l8pnrpZ6CT?1h(%o9Dx+~Y9=hTRuhDJ_7JX?qL{il>3cY*LB&plH@5No z=h;})dRitAAGIB0$Xq{lw_KXXoTOmq`G%U+q~&-?MenwaL|*8KNry z3kb}Ts4LzPi-v#qOh1UQgV4Bp7z~|Uq=gs+2Bicl*|cl&9L1jh_3+Q{~Zzq^xq*b)+~V`-7o(N$@dhx)L{9qkl9cuWWwS7NDBSADw8Fo zV6HZ_wwO2@w2v_;B2lX8%;H9~7^4Ud#!%$qMz`caNNZiGZgk=xMpjUv`CjKz$~-`| zm1PdsR$oLRg!8d77iq#8zz*$0VL)7di`4Rq@7{*OG`@Tig%}Nn`4!bOHSLtJVt(8v z{Tr=Gx7f1+C7>O2U?gY}L=*xBb*%u_X%=UTUgIiL9ghr!y})&SfsW;_&K?HU%?$27 z1m-ehFnxgWj|U9CW^&A*{GADs&!+#IWvJM1D$0NxqA=!}wSNPQP!{_e!qn`_`Tc z={#T@9}YE%p9F_EnUxfQKB=4Z`$>3`Xb|K$1e8wT$56nKf8GEp@jE@z@3E1gwAqar z-NCT?)D7<@MHfDf?q-hOc8;EI>B+DVIhgYM-5bLIKH?vS8RYnwXe{c@_bUJ5ZqA?{o6E(-fc?M4hZpX8AuLD)w3suC> zO#|JCO(AHAp_2EMW!z2nXG(;R(sIAYt~9&8A; zaq)-=1B;HMi({LYGn>ImG(NufUZ@6s--lw;SM%Pakq!D-4L$^j zpbrvF)Bs0Nlr3lU8A1bJG8d^mc zI4+XFNNS$Y$nEI4mqOL$4PE>#Y;~u1^#||@rqjM@l-hgDS_Lv)BzhX|ey^58s@uV- z^TSiL5Q$*8Qg={N$?8qy&0sW~$R7@^GgF+rNNa(qBR23OH|Tp!w(?1^HqNm2Enp4p z#iYYKk+UAUa2)(kl+IP+(LIXHWCoA*qMMhQ3ki?6F*Z?AgO8GPly2Xo?)O_WL6}cZ zP@I*U`NdpcDP2{FA1iQ@pNkboayP%cC1UM80`Z0~((=$^nAsQ^*k_nIM(5f@69#?U z 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%0AC1Q#hyeqG+>GQLu2BN2fBUxfC#Md;7U> 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 tf.Tensor: - - with tf.name_scope("logits"): - inputs = get_features(features=features, training=training, params=self.params.model.features) - - with tf.name_scope("OONC_logits"): - model = ClemNet(params=self.params.model.architecture) - oonc_logit = model(inputs=inputs, training=training) - - with tf.name_scope("EngagementGivenOONC_logits"): - model = ClemNet(params=self.params.model.architecture) - eng_logits = model(inputs=inputs, training=training) - - return tf.concat([oonc_logit, eng_logits], axis=1) - - -ALL_MODELS = {ModelTypeEnum.clemnet: MagicRecsClemNet} diff --git a/pushservice/src/main/python/models/heavy_ranking/params.docx b/pushservice/src/main/python/models/heavy_ranking/params.docx new file mode 100644 index 0000000000000000000000000000000000000000..38a9b367f4db186bba0665a2126a28c90e1f0ed2 GIT binary patch literal 37546 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 GraphParams: - params = DEFAULT_GRAPH_PARAMS - if args.param_file: - with tf.io.gfile.GFile(args.param_file, mode="r+") as file: - params = GraphParams.parse_obj(json.load(file)) - - return params diff --git a/pushservice/src/main/python/models/heavy_ranking/run_args.docx b/pushservice/src/main/python/models/heavy_ranking/run_args.docx new file mode 100644 index 0000000000000000000000000000000000000000..9ea8cb9230ac1c52baccc2263b32a56831f86fb7 GIT binary patch literal 37147 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/heavy_ranking/run_args.py b/pushservice/src/main/python/models/heavy_ranking/run_args.py deleted file mode 100644 index 1cc33a8e0..000000000 --- a/pushservice/src/main/python/models/heavy_ranking/run_args.py +++ /dev/null @@ -1,59 +0,0 @@ -from twml.trainers import DataRecordTrainer - -from .features import FEATURE_LIST_DEFAULT_PATH - - -def get_training_arg_parser(): - parser = DataRecordTrainer.add_parser_arguments() - - parser.add_argument( - "--feature_list", - default=FEATURE_LIST_DEFAULT_PATH, - type=str, - help="Which features to use for training", - ) - - parser.add_argument( - "--param_file", - default=None, - type=str, - help="Path to JSON file containing the graph parameters. If None, model will load default parameters.", - ) - - parser.add_argument( - "--directly_export_best", - default=False, - action="store_true", - help="whether to directly_export best_checkpoint", - ) - - parser.add_argument( - "--warm_start_from", default=None, type=str, help="model dir to warm start from" - ) - - parser.add_argument( - "--warm_start_base_dir", - default=None, - type=str, - help="latest ckpt in this folder will be used to ", - ) - - parser.add_argument( - "--model_type", - default=None, - type=str, - help="Which type of model to train.", - ) - return parser - - -def get_eval_arg_parser(): - parser = get_training_arg_parser() - parser.add_argument( - "--eval_checkpoint", - default=None, - type=str, - help="Which checkpoint to use for evaluation", - ) - - return parser diff --git a/pushservice/src/main/python/models/heavy_ranking/update_warm_start_checkpoint.docx b/pushservice/src/main/python/models/heavy_ranking/update_warm_start_checkpoint.docx new file mode 100644 index 0000000000000000000000000000000000000000..5f07f01c3149d2a4e7f7e38fa565c048ed07e62a GIT binary patch literal 37989 zcmagFWmp_rw=RmidvJGmcL)S`m!Lr#cb5RcJ-EBOH100J-GT&yyPwWlpYDCmy?=^_ zQ8iu}qq^pt)w7l5Afd3pz`)?ZQqp*|t5l2Plfl8j#$dp}FhNm034pzexxI^#x~GG= zvjMY*oo!RHg3_8O+Sl_}>=YJZQf~=V?DAa)S_j5>e94-OTV9=ImQ#6%$NLHX2#s0g zFc{|e%(Q!7;U_pMs5i<}(YPeW`dd*(I4hqWM9X+SW{; z57XS>tb4Wn{6-j|=i<4#LCM;WU@hpL!of0LSxY3H3hRgc^woE>Z->hGHAQ7;vt0n`CHkvea;_U+XPG z@fbn`p#Au1*Td{SuElW-Q(qQ!qo%uwVIBJO6kroVT|0LKnXUD1FOYk(rpfT7Lsut8 z-Ph_kSO(wgUIHcaq$h}urh&{L2_~JrBeu#X-0*&WPQh+MBVYve zE0=~yohnc)Hf5B9kLTU-Sc2U5HaA3Xg-=q^w?ooMh&E7k!2976<@w+<^eWy1QegGH z%u8qSzUx|0zNtK83Z33-GEpIVcl_sP?)y)R288~Y+-_vHD{SPF(<%Kz0x zPii^Q2T=DmA;7>8L4S>$%x#@nnExEB5+*-EvY`c>3rmeqmDo3HNEWUbN**Z`3io`U zI4idIlPO;9>Qs?5(8lQ{K0MzuwOGt3AXsK7whh)Y(OC$}Tk6%`qPuJa8m+^nz;^_a zd8qG(=-8%5-cq25np59%TWFFBGi+iG>d`fv&5BivOB&JJ$)J>mlqI6yAiB_Mx%x8A z0bl^q^37b|N~+p^+PZ&x5NURiF%A$tj&nd)OH(vs!{seRk#)qpk&r!{jwz38%fxAa z0xEyetGHx73YJh(GxVUmftl>U7~r*R6fBu--TQdJL`gBJE9*%xkfR*(DqzY7%p6;aI!beqqD3WN?SkQu;K*$Lp_%wh^~GXHavXC;g)_Oqf% z-TO$*D`-YsqrpkZ(t{s=`y_)ExZHNf$)#XBp3ObEwO44To6F!vyd^Mv?I66t)6@cK z8k!JF5*B|RX!Z?J2m5W!1ZVv@TZ*2qDmkR@yyt1|irSLjbgU;*1s@5aHXBklgUvvG zF`S=bpq`6!{_7N3R;y}p-jTQ(y28p=P0<9}b_!(DeJr|Pfq}#ki4+M9=w&U%#9*1| zrFq~HDFdJ7rwpOymMh?copx-Y-0-V)m3EId_1N&&nvvIBYTKVouh{(kh;)%det#S^ zRz1ixr>%uyCp>j~ghoOI=MYs%Q+03EWZ(XF>g?pWHSGpzP=VAEhJ=#xA#e7yv{E!E z4{lx0Z4)q1R5v_7zq`)lOcfyFV%Ex0i}~6-&P$W}*)MY=4`tY0$TAE*E9w5`(uyr3 zNfxU_EE7t$UFHX4*JS=tga7--w-3vN3=ce)Pbkz|j7)FP|M8{%VW*xcwR{TE{a3l!41PD_AiVyo8`du~~@?{Mv-fmiaOAPw`M~ zY`cEGkKx#SUs-M=1R4aM8^@lP#4KPN6~Aa;k3Z&*C_8Q-G}U|?K3JPPBzJ}?hc3g` z97H#8G@2f(T7Y4KcS+Myt{(FyZ!np-B!+cxR$`cTSw#`uZ1gS$DmwVgyqJqh{dTK+ z7`RAQZd%^_uEMJHtpf73=1YZV>9i2n$GzKQos?u`6lsXhuN+Y0o)uQKE8)_(3Zw*V z#+?@vU!bfJyWhTH5L13eHi8o)9xST+Jap3?Tf(H7(p0^_#hscBsfYqg?~T z{nmKWK&n<>rWJk_eHz!TEjFCX#|8N+K^rytgCg1bGobedJx4om-7&89uAxjI4n^(` z1?ovaeE9`Ol73YJR+lI)u{jOXzite0{hNmuDY5DbQXBl+)z9aHtXj+@Q7gigc63VL zsaavEy7AhIPrJ;OWJ1+LG?Xbs&n6@U45oBvT8D=cOS%S%dePW9T=?j2R6C)5ZQ%O= z8t5b&Aw1=eZo0c9_h0Z|(U>po*bcWJU4;;j-C=nBS{vYrQ%~V-Uq_?Hi33}0w^EaZ zC$+XH1;R3MHN0(=;!_9KWJQXUK6Z9wu)MGkU%+QPUK6}8-2Nu{?;B&7!fV?R77UDA z^6w9=#QyVRV>*#=r1j~vUMMW zQfMnub369ob;e*BJ?c1g){>fs5 zXHKdyB^}yOjJi9Ccy1}ehB)ppap}oDO`!QXJDqqrRxOa!M>I(*L2l4wUKK;LWw>h5 z#>2u#(o~l`UIm54luRvuN9ArC@iETwqbLVOx~op#O+lV3H#rAfhyInK?A{m3u*YIZ z2p1SDRaczrC!C;^)MLc9@VG&m)S|H}4+U9FG;N0k%N1?FxN30f>$j10a3v(S?@dZt z88>pWUmZSR>Px?@CKddX-v)joSC=oTfdWqfl2zBbwZ4r;DQ+k#~Fh}-syayXn-!1Ze#Jj zF5}#WI$O&@D!c6p9nk6dR?O#R`F`X)eJx+mTw^x-8J;~yQW6s?K#Z>S#{;^gbh{FI z6qnBk)SfOG`dV?)jdnOCGByI=$H7#I;^%NlbdI|X(HY4|0f&JZTo*B_8U3(QQfb;& z3qjnr`Ws*r=3}_YCl}_jtEFCZ^G@zmi^(7IGSMNcDPVP2bU#>&(m#phbDpq&cmzA} z#t#yx1M7hS^XqFLJ6DO0K4X)YoA4@4dOv;z0$Fml_F|V>+#jx97l14z=NFSepvWSd z&=%cp+z6J0CMnkxmmC&x<63fNm`&VpYedYL44h^bI8+&-@;PDNCoV9#Ojc-A@m*o6 z;E#;({$P<`czmp^KWAJo#tuxYyjZ9SG8=Scq5FaGo?n428omxr%csi{i6l4MPb(~Pb( z{5S)1ew{17-J6m^gQr zr1amgCm&_b^!aI_K4{2aNy28syTyqWw=P9ZQu+D8%bB|Ka zp;p!|i~1TDiKA1Zz=7;u2t9^bUH9s zh+AR&dP*?^>kik(utpo1NPP)rR+XOLVx63&@Ad7K4z@mxj(8*dNDf;tzlGal;y<`S zvKfd9VMBhi7K|L#Zm0AaX)qB&Y9GxrOYckdZg8;0NgQYKw$UELe>-ca711?hx(3)_ zbMtX#;Cf>TxSh#{+{&Tk^zmlfa{*d^#B8eioF<~jI=WySJDJ_NCS?F#q|a()#C+JTZ+8D7 zb}-M<5_V=&Y;)*)pM(1(TkuM-`kUFnN3no!4!;+5v+cAjB=5lym|L7$4snmApHxqP z5s~fq*M|ti%>(mw(;-`tI^w=h*f9AhmOe-GiBXi*2AOyg_+l{JEo(?S8)GqO)pMLO z1wO&JTfh6iXQZ`Db(5pw7QI82xn?e>F}RiunLOqvv>6T%L3*IqR7gNK+^m*n;iZE2 zs&<4%puWrr#+qUwKYi5?z z2g=5S6G@f)IA8CVS!d>(p9VmBI!oT3CvV&Pu2t__?LFL?_*xLg7_9Bc)%+COte(77 zK(ivQB?RWSi0KGOJdr_knpDT-V!b+I)@>);U3P;5%O|`vG@XS z0~M@~{l4Midzl)xNMBxKFY6wS2DZTHD`0@zI&R#lFYkz;$+?}5imk- zly{B9;WR_F^w}1`>3bXrsKM}O2cOe|<1TJ!2K~4q_@(Uq`8g6M>XaI*8F-8*U{J;2 zezsIhBPHQWkyoS6_(bSYwYV_2a!#XVxZpyeV0u#N>gJ@vwb}Qv`S#~crLTp*XZEfA zdtgg{j|~Y)PP6>9@cR25{#k}pn9{(-EP3$V+#Q2l)a{ek3tYZ+d`u1|zETIYB}yRk zg&~pNRUMkwZe6O)vvxhARDN#LeC{vP3<`9=I7ary4<$VEVWj(`Iu+{5dC1;+FG*c| zZ?PnY?-2hzKHCQnV6cNGZsVYd8zE@o_Sg9Q_p;+ZN9n(pAW33M!K`>+&)*RGLKCry z?IS<@&Zh>_OV1~)XO6&&i-E;fq(AdpQ-l;8a3g9s`ehT7^fej2yN}FwwjdbVUZN&!7pgwe{y5$99 z0}3uG<}i$zl~N%wAv zR0;N?+Dx?_$g2{LNHJcj`gFAro6rxFHoVq1vq=M9itsMpun;19!cirJyL?32HY(#< zA5Vn(F1}*~lG51WIIos!9vH97@vh#?)wUYs^9zh#e%i%_fDKRCgC)2Te)jInt~=*Y;F$Y8GlTmj_SDFq zicFM5LsdibQ+YzYKwmbFGTpvbR-(H3>uZjGhwZta5lKwO>)8fRe>ZYho8GzRbIIh{ zH4xzUisvKncyQ*SdzPKD_GjmHJ-rF}rS^QQ>3{y%jruz@WQulYp*G^h0UdKx-c}he`Dtmi6 zmA>+YN7cXIST*Q+KQF9}d%1rTd3VqT^rPPc_pT3aJwBXPjC?V=4=Y*f_iGX+?zi+? z$sYFBv3Fbg{8jODZtCQ5t;m^3)*Ftnywk@^<(=WM;0Gg?wP%nh_bva;Q`GU{)29tz z-kDbs@kyamtxeGC%+8x%+Mn1@n9`rxfAAgg4mfvtcH%z1XWj6K_X!!+V>y^)o;ySTnkIvPz%X4*IL{dD~Ka}OIYrPBDQaPSH$mVYc zT=(tL*E{cey_I;fP)#N7cih@wLEZBEE=A%alYL6|K2Y=6ZPHsazCfMQ@ZzEy=7*k6 zh3^7{@4VQ=2d0Ync}A)OeFRQ1$!a3vZfa4Xi^9$@_@~1fP{V4fMP6%-e04;8c|%z` zfU)MGxc;wihy51*aIZHTuP*8OFSULv9b1AzRqp3!VW~W4**r=o@4klTenQnb_Dk=W z16?Umt*hOqiic~lfZd0m?{&J}(%A%E?RwJOk91Ex++O!=R5Wi7YX@#ThlqS-mxJ%X za6;-k6Io9~mIAzP0!@VUUAX%1d!LX$SD@~cqOz%y^l6ZoR0+Q zpIQylAQ-AYMg+~N`{i#_B~H&j)o%G#W0~q$o4lkh z9qv0iSK<_wKEb z@U6C7idPgp9$b?6b0K?I&nvL!l7b*|{axGKC-6C^Gzy><%aUc)5!do9bV-}v4fpx< z?c$dmLniUi4|E@FvOBmRVm?Ghw6ak}6ugPT=N1(jBkPhc>SVE>WK?8IF;tT{Dnc0d zu^7nYn3g`lB`CIcSNd-evOH*xbqr%IR(7yu6o9MPUgosCmf?Tb{l@tAykXTTP<=j7 zxbm%*jblr8S=(+m5v`CL@)MkD1_BjS@1dk4*>Pe)2xF6us(9S03mqAptDEqtn4wra5l8xDHzEFs zeae{tN+ktdNB38%E(k3Yg!^Bqe^Wt~(VSb8dHfH8a}^3u1mQ0gDIL&edH+k|zoFv1 zuBvf@QbAY!r!Y4HkRDYukXNk6pG>5PO#ee76Db^xCnDTms^=5ko6tJ`T=lO|p|eEe zlpC-M(=eM~Qg?y0i&)du_xusuU&mjUWD%I$^9eyJFqI}LuC%q;qif5*4O4H~&Y4hB zd;Y)?xH3F$`^Fe0#H^R{az426eCyg~U_aR7ZgTVGnizUxOP#$(41s~1}Wi*t57K$g^# z!+4zO@t>wVi29ps3U0(^oxyqdTSSTn5!MNvrX~A(Y>)5zzA9q~=WH+6uKqsm=dFp9 zs70I3;kApmOloUHlw<8tTFZ$zKf?nSSE{c^7$JsYsh$A{=$1+qujc07X zB$V?&(@89zE6DPbus6(k+K45~oi6%kN@8eH7SFGk)qC!m87-bH<%mC`f}Wpn3jRJL zPosNJb8l$YJ!u1*j; zWAqbzcX#y5*9f6uakl~%7~=yiUS{!ZzP=F$Pps|3DSqVeQ~o|noyt%aJ%+iU!#v+I zcuR>mm&gdNWMWqJl*zDSX|S&^L6JEQPu<@(>|EW!(1xVtgswk&(4G+e>r-=HwV7*w zGFH~W4u3@OFUpvJ#C4gBW?|ElV~&h#|Fw%;^rc|w@5G$PUt#&4Jd}sz7>7}&wxr>< z^Be=Vd6<^~`tse5z#Se6-$Sh9L7vz>`uLqq+SjW2u5+pn- z9}D=tA}X{pbN0IA$@1ubsf<+X_bvIEy>}*9v?aGO2q-Jx(G+<2<(PprN7Ax&PX7Lu zJ`bFBf4UjIdb=7L^a8#*diveJCBHA8KF$4lId)+E-0{{bl6A-OGCd6K^#+EzlHu7Z z3}v(hY)KuyC3{qjf95h?4=E@;b9P3NQW&Qm&$&xQk%=N`?@&L>R&A3D2Fz41JilOe zcl)RWTyp8YXh=Rbl0G5>p0R6j7;Y0_nm-}il6_b{P7frgNRdmQW9BM}Hd6$;AB2ei zzCOhqT!ITQyRcU2(yT$KSrC5$gcVGG16Lkw^0dyauP6=yv1CBph?gM0-> zlAR?YdLJkqu@|}|K4*vnIc$KeQpTO9dH=Q3Js*GZv9OL_tU$E%wDv@mEaDx0&PMaP zF+Xi6Qna8qTjId9VV2~v_uY>1kD31It>!hZwe$0YrF4z{WQ4Ep4{uM4gt(P*sF|$1 z-OC=FwHlwf3J?_4Da*g`^DdXyo@fp#UEXKfDp1z^$_-QD@Y}YmEDNd0H!0>Kob%>JH4S z%B4|P;V7=_FZ^)%8D2*9)%3{g(XoyHciL@5>QORzY`Y&=XeoPR?=l!69clZC2jKim zW-aq3!PowAErNCTC>Eozi_Om~kR`iBm_y7zCj@LQ)g4O|d4bfAmoM|!Ml6z@Vw)%# z9A%35sQT5Ek~au5wK&_!4)>J|KVND5u!|PmuT|)dv+t_77e-M!u4kD&i?V7oi%8;Y zMt9@KOy(0-d9!G1e+oo^#tuW~Z^v#eG^W-{3u~&>+YFO%Qs#H02d=I<(|e>`aYa<8ZvJ5ews(8igcS{j9EB$R!3QyNn*V<&7oq@){VxARQT_=6( zQMLrCVWJkwH)$SO4#iKCykhKog@_immJMlzLM26andB?ZtI*!otvitlaX6!%_nsBi z2`9=41KQf0CaX%Whuc+^6s>y)$9Ot;2(dk6rl=!m^{_viZO>hnIht9hQuoQDdaD`1 zs1z6wpR|`^3LjyCUAZq`RBetvP-5Uq%gU*`wUK#GF-otHF;!PS880=J^oVV!^=vNN zDB#_$lo8z@Mc?yfzn7!f3E^4vS`^vm^QT!5*7pe%26d~rTHvq)me!#X&g&}EKYkt2 z0FD|bFkY9YUyDW2pPT9nVS7n1(CC*jfu*<2Rrzxc=hy?37ZQ|bp~ z%JpA$ApDq|(BU7k|CmZjcH788$4!z}>=+@+6Pcl!&oG+?C6y&vGcb(Js*zyt)9d-9 zvVTvH$AtWo-*f`B(z)GvF>qP`Pyk_vqWa~!d6M&22KZAY?UcFy(+@|;o1IDK#(}5K z)nWf&-h|HV2O`tRFmhMQ-gVC z4KyUax}bi!p0gmp>^!=+z9sGYo<&t)bGRBwq;D=;cKG^sp>@6h8EUaLmEfdECkZ5+ z84|vbbgqOsVzZ#u#e7&rN@$lF3kX?m%vgi&0Jn3)jgu;kW|SM5#QUH82b$0`HOcL(F1aokcBjIhCl~| z&9*&&*byP}IS7-+xvAy|SwrmGksamNO=;?U9&cX9VrLLe;2}ybkEO64qyA=a5T?g| zZOEoe<{qd<09W-UMsa|djyT{T0CPMCdIeg4kgs9s2w4pTGl?w$sE#>gskFeiSFlixVYPxc^nUpMG_hkMQrU zKKapHsx%k6%vL9E1weAD!j45idCBYA-sFM-g0sx`d%VoqsJu`H*&V5RojGnuvE^^s zbeDXQW5{Z7bLDqJGe9eZk;5`Ez?i>3bkXK&TuX9rK84cFWu2MNFEYKawJ($Nue3GcC<+!&Ar*XC=L0+Dn z(LYLYH^LcFX{X8Vhdr8><7DA&qz z4Gon_IgdkmLdfSUR+psCi@o)PGtk91&PQwb^Ihf*>)FP{y^EWd!8kj7eqP*y~Lm{%2StiN6TGcyC zQ*Fb{1gz$tYx)l&g5CB~b4l;(`_e?2xoFWpa4cP;y3TJYf21O1hNVUA^>gQ!4kpyf zm>iZVIzKZ?dEX$}oEE>9EU1)-ViT}W`Gx!XQ}^b{`9}JHMr&B@_{!(HQ5LH#++;H9 zC~t~v(q?bPO{?7EOLDx5sPFv~1{C8^Y4kXRRXO+l)@#Jaf;hGP)_JvhyA0WRE!^Ov zdw%d!GXHgHs%5mD(6w5A$0s(Qc+5j-#f66OhDvFSF(Vd6xt}USCl5|3y3Nxio~ON z_$)iEv)l?j?q57ml>g*W+>^xx-zm9NMz1w?J|1FWr7wk}1zAe^@k>nohLx|qO-j_D zPp|4&<*=7g9ZH=M;usGV3q>7j{^ISK?SmDL&ngc1s9QpFBHc)9*Lid`g(Yf?ywO4< zoJ`j&{leVx;V}b5!nD<{vnv+3XBcKN$W=dl8Ju=4ACV&Ezu7*2`yXt4uK%BGv?CsY zJeM>}@ePMxN@}cip(wY$Bp+M-cD}_1A3fx}Y~%kH(9w`SCnfrzGYKl9J$Ok2e#OVo zTPQ3dEw?%0EG7jh)Zl`QEllOa3r*V~&Aqx#5aB6&>1RP@US)LU{^#>yvqGH>*(-Qzg+WJ|Um#81h^OWvC89KY1z95OPu? z1EznOLm+BWkm`xS6`F{)w?|h_z0j=if(xa=24AE5e^!%r1SYfU*FrDs+s}U}CUC-!Vv$~Tkr8ieXLqjYC(t|DBFAY4iYY~YG zKx@TyInkF?i=y;3F~Q7JoQtoGQI#|$Xhe1Bdd0X`s1n0wH$Wy(o(PREU=)%ZWC z=jb5uwS&hfGD>ejCK7xyPA6Kapo*l+CLA|qySO%u7{sdISvO>)&QuKKUd4ilhe#7A zbplg^lSB$196=<RP;S6K>=U z%xG}}I^^C5GXJ5Gq9R>arFbb%_K)usp+CNR!?ficeNWBUE(qPY3IFyjH41_R9oTAp z*?t6t54wa7Dw{Q9rZt^Ljy4ZXaVwnvhsp!#KPuHo8bK=iVgIOv0FQ#ae6D zRoe3V)qW2aekI+7q29W)`*(q1L`B)zJ@qQaIz1FWX13F@lGZ7C#17e!n;Is8vO{dD z=jHGsZp$}qrTiIPc&>o`cvdSEt*-OT=WGbhclFe*bBMs&)@oU#Q$Xqb8EpK6<0R9qTzE>jKUMOT@jz0|WMRR=c>cBXxlxq5O z-i^Qv?QmY{ek`-$iWW@nl@@F_^RGA)m8|?COtUG?RD`+DZst%Ll8|A9^J2d4pYuRu z_HgIp5^wV<9Z!egB0mR6N5#M5DG6rWY-vk^IlMF}ml4kRmh3kkR8u;U)_*DC9wD77 z%Q;Ktv)pGRNO@u-__xA5q5~pV(M-(AzZJUuZ-rNx*I|?KTb0~iDtTh3r5~I|ol5m# zuLkmdFpbPr7k=Q__f#L0=tb!*UsQ+Hu{C*-sNKqniQgjnGeRFdZf$fkz5_)%aza(` zWc9<)tlZWa=UARbn~rV|kD@1(s$)v#_a6_e3Zg7*>RDJzN>&WHya-{YTz=P`_4mo1 zwM#|w!Pegzf*$OXOfa(ml&{(6tiDyv4F{{ODx?Rc)=B|n`_Un9V_;+j*ARVjbQb23lX5r9@fmmSRHyndJSfbA zs9I|&m!jA(BXI-=7{aKuO?Vm6>m6D?%VyNgS!$c)Zq6Emrs54k-fC8N*3Y$2x0(ya z@GTn_I4M2eb{LGkp;T>t25H)jJ7k7@jJ+8BpCkTI%l$=-0iuSL`!oBVXxm&wPBH$A z+RbbnL@mJmH}wxH%t(~~2lZvw0DMP8j?t!1+s960_~WYbUJU!WY(~aF_upjNK^@JM zz!MS7ND7Z|Efl%h0S9ezvmN{X1a8xk>DmF&&b?lYKeOzj4=vvFNdF+ea~%PZtHJ(7 z-onO-8Oi+rAfGjs-F}Qo-CB402YH{d?4zpI1AokoURoq=sa z4~-n{2w6n$?MGvu@^2rOcE5KPLzNUhGisxJ`xOnSOB(WB&K09y<{fPm)9 z4>gUC2AdAw7X6GcCS`SB5y;bF@~yCqzL(v9B}-ofPp6()7xO!_sW63tySV|n$B1z% zEWQj$l<-@no2_Fi%!L=jFHfmY@+i&~mXyb|ckFOhy$UO&&ow?_OL8Jh&W(AS>l}C1 zhZnmB6vJ}@<8z)@k8>d*gkI06EYK7ZxwM(iQ>ZW!lbjRftm;TDFWQt#{-O)} zC0&$5vM1<0g`cs{&FiLpsq&v5b?=Ku2mb@?+I!CIFO$DGt8Tl7+UFWq|7lWA@3^xl z;%}2-$$w1pBK|SiY4`tUl2^f|dm4DaS>*>ZiCJv*&TpIDN<>_Mi;XW3lkwS{+K~|S zM!7y>ZGU&=^bovtorVeWMk=`xO9oq8SB5!kf#IOVYY=bj&g{DK)0WX^r$-Mz>lqb3 z2#H>uS+qI52|hhINH_%VWizx_1h3`R!C-eZ02Ul{dAe{8S)kXPWgkpv0LipvFmy{O zB@RDm*0Bv4P6#F*5Dxwss+CkWiIk<3hF7fW)+{U@V!{-Tfwj|?I~z8;HMJ=MM;V}j z%;ErywYY@nc&6P6HDPHm79?@z9@U$ug>{vO{4-2KjRbPeL573xK!eaa{-Ak?Rl(|p zUH(C1akzt-9OBSg9$y_mENv;QSSl12@`uEPWJoo&V+5}_hMt(XVhLqG&-~n zuz1KGL^L+i4lrEG2;860x6mxKTzkJ*4Ff!pcA)QC46+X=arz7wsSQOtHMlx@PKT2Q z5ik7YLvX(-JOqu}PUXR)aQqgldIM7xwX+6yA~hfdO*1^enPo6oMi7tT4V6z2Wf;-L8w~)ee*&-l(C=Pg z)N4toSX9!CfE02+5EMSzHzF@&Upw~=dBOV@4*-S3+GYLnW)i)QT`xygG%S)&w~@lF zX31@4Ij{Fk9`xlfyn}kJ>3r4s9l;scugn=YcR636z$FmnLV)Hw(&4&qv*=eER@zb_ zrQ6y#Kf#59KKzUD7=|^+66^JBhfbX4sg~Zmjvj<%#H;Xg^eu|6l4$hs^StH3jAx3e zZ{!kS89pTx!QCPbNjX527(XGYOa(Z%erRf*? z#h;4RV-ai;$@!~owUWvmz58BtzXbh&xJIPzI`r;SlAV|abC8>;iIgTi2s6bU&+vA> zY}_Qjw&@m2;J;RrqT6=dDGFTu!@~d&GcRk&B|lgKKj6ulKBSm3bR!shfr5cajn=)2K1lf~M~;USFLP6_3KC0Hxf!IBgO+O8SI%}c_U=L+n`Rh0qR(GmdUld}bpB_nrgOZ0tKxE0wT!&1ipYrm zqkaysWdjRz6i_j`Gb%A0xvbJB~LNN$Fq~w|nr6{P9 zo8E^gHaYP2QNw=a-oKEU*Zl@HFc8;5C}ENvhL3I@6exw_S3&`nrFQb`soY+2j;PJg zl__6it7cM4?nQ>H65nKV?=qG?6Wq6C%jCp7il6OV|RWDZ9cv8MxAA?!!A;+yqR%oV&`_MEOw zz*y1}!C{GbPFbk%4Pj{wu5uab!m|2r4%a6YSBgnR4vH=7tV#Ep^|0eTYv}GPiB;QM ziPh5Wk90u@encz}O-@+p%pO}Wxg|j)eTCTq4zvW2>KAiM&kAW*UVAU<7aUF7VcC$k zw-EFXdH5L!e#MF+V?^I?_y-bvDqOj@I)g~cV=J&<=MLwacUz~XL)uB;t+->8R|NY-p6Ma)P}H|G0KuKp+%6@ps-)?YTREtybUh89>tWPMWVPZR@90b z*hHa4d^@+2=xTVTKv6YBzau_nBbHo{>$0w$6g>m z!wU$0)!Mz&ML{GWX$qi{n09O$_p)60gk2-UoU}UAKm5YJQNNJ*J|BEJ@4EalTojZu z^v`DgUu)x5@MtomLp!#M0;+E=z_oK5)KPY55rF5z6=*9Az4~K5?%A$ZKxpS>Zd#uq zI|0M=Pvk`y0qyM%10sB|!X)ff`lDjO`b&}KbdKR^m>FO7gDm2zSVc=DH4G5&lu%3c z^6zh&P^ZUBxZv{5XaPc>dlo6H#hN&W^*0Hvjw8k(HLz{{9Kb5U_rD&`&MIg?lqz>? zz>BSq-k(SaUv>Gk_`%x+ZA104O^r~YDUxD$?*8Hi-Rs*Dn?0NXEN~{XYR5mHq%6NBjlgaPJ_Y8$RtJj#=LF z;IGV7bm*`Mj)Jh{&yFAn*>1hOJ3=J{d`jyK*lQhA57-;*$3t)+^g)B{y%g?s+}W)B zhXTFe*#RPFh=6SmM4RC-OiO-T9=Kk|z0+9|-pwR-Z}4HqD@*JDyVcZ)Wc6Y##nBQY+;vvZU}z+&Rz z^z=bVQxO+)pk6~T7@q^EsHNpA3*;wsc_Z0?YOs!M8q6tb_V%Az^{Z2(xr~i>P5E^o zqvI!OB12i6YEGT&S3HP4x-P0P7!obb2ZxFUHDS&HpDHJyG^s)3W%6jga-&K_vem>` zP{jFT2XpJ-gkoiswhpZJiia%|;~hSp#k-`5ImR!pl68G!1LmdiF??3mI`*u}z@f31 zSs!*w0H>KkxLrLv%lBx@-%`t!dQ_U!(_`OW?K~@yHV;y?Kd>{5-&T*wi=reY??261 zz%=QU;o50~F<{~)Yo|?B+G1U?yLB?HDc3qz%9FZ9B)cXhN55Q-SmdCN*cQlE%9D2< zBxPh^FsGiFn$S(+as6)$6aA2#033XJF_ z<-h}fVV*XI%Eb=p9UC8`sGTPI8-wA5mZ4$j z%yy!Bgq>gp)E=1{zWsyZkn#QWd*cOwv57gTkpR?`6Hj4pHFg_uTUXS@5rRkC`tf!R z6Z5Oe%4O2b;jwMszKCS926k{o^64?CZSw!@D1?ZE&s|8`D@+xrvdy2wDk}vlZO>xX z!3n(Bp3yM>gV9Sz2NH%_vpA7!Mq7vVK9di~0Rv)8OoqN5jB-}wKhcaxj;O6alB5>K zjx-AWQ8PYepKp{UoLhETyw#*ASTxL|Qqw%959LbS9@=IMl0IQisB^#daH{-d$nAWetRXjAII^C)i3{WPk zoQJEN7s?$0g$+lKrcPQ)>fd9776g5#g;A-$K&=kP2soP@1T-m@D*rfULdM?q-GrmR zfu!f$0#*Q&$)fQ5$?MJ=+)Cqsc}VKCwhGjxqRL{prQ1(kJQ!0NcH+?fI7mX=kfxi~ zS;~2ZC93%JJp}aV>PN8ZU%F%!w{rWIbC?MusNI_+Lf4VabH(#eDa4?I5Yk1VSuUtE zvz$O8=+*H&!7W9guQg9X5U8Sse<*`*?g!_Jv*d~+W)VEWU_;p0qAr&tv1*MhpaBKkUHT=OggW?0YvvuS6KkdiY&TjwPxRJeqFEC6>0>0r=kaDljaG6>Wv__RGRIbNmkH*^e zCWEI#Q!T}$D?P=rMx}cwcr+8n={i>=4SmYdp(tbpeK&5=PkykdQ4lW%vMf zy^L6?0|HY02N3ojAiaM9+5G{U_n+wWlgWFtT!f>G+9)%R6tu;S`wKy^0`zQgWUELzjc=1u`5l+VQ#ZVsSqd+z2u4PZwJPxG*d~hO?b{6 z-)3b%l^E13QGSl-^de@i49EI(CsrH};X^`61}%=@N)FwWC4LIZi`|$5Ie4GICxhN{ z!(}I8j*><|7G&HFOm)p6FFOoO74N?oF>rbB_v73$um9kU7$VSI~r!XLf49E8_)9xOGD=Ov<(yJ4W zKhd{{JGdOL9kzUEAiZx~!X-<|<$ zYEaM5bM8P}`!_q+ganz4aDd&NmBh^%8wYc50Mv|B_Y9>RP1JFBBc8Qk_bFpu-k0vB z(}T}#Yg9uAk+YlBNa{i~6$*5CFnKe9{@3)I*<@^0hBH%5%Jc-WHxu6<~9E_{R1`}Ru)*RK6iiTMcE-s**j1c>=b1m9g>1U4)0fxwzACO6cIg__Y< zs;cfv3<;5mMc{(3lSSL|sU>iM+?$=BNN!rB2$$Xev3AW81-4>%;T4#9yJ0k{(an;* zwIwh$S@u|c^Yhx|_0h+v?d@)hr2amQ?}m--@y)O9^{)T-YTx}i`-a04#ga-ypqA!V zC(e`oeY=M?k-gcaRk!?Nv)O}M#dHN0=hU*u`(;gw%LESKS>cV@u)#f^Cykg6>3FB@ zew6%frxlk9mr>-k(et6+=cQIjv7=i=TM6audDy7AVv<{DeQQgpq$HRmg{6W-Gd6bo z_W60|vF~>7*zxf_JLSaxJSBE%@120;;Js`xY;w)Z-zQfNR_L6#K!iA@=2w2Ee!XE~ z|BLfe#o-MNFse?108nwlM1+bZPlEFH-mtOLRxlA8Ztr;oIrqWOEtsS$XQL++ z6gt`lh44Tjj=NhCZ*9W2uE!l2B(Co2yXo=OTRWM$%tz4mKvqV4QnkxvL6 z%XDPe{@ej*t6=A|>*KItd3+9!J4p;-sb3Gg*M7;uVacmOUl@re;}aERuldiC1$!ev z-p{;NMhE0-BZv)r#CL7s>P^Ebp~2pGpVYn>HNdc1T_Os?bbnM*w1Z$ojR_@@Pd3d5 z27(=rgot|dmd)^WdTi!qqlbfCZTseFp6QI!k`~J|4Rc1GLl(COVrlzTqbP?eCet>) z9KDcp3slqyi7`m?g$3=Nq~m%<<8KzeIIJ=a%7}QB+I7&Cqf8s`x^G>pS@10nt>^3= zEq6E@2`K0$?C;ObD@%!HVdCu%j-5u;?&AW&iOkU6lc$9c!AiA72-+0OdeD{Vw)GH; zSnhg$a*}J+0b)U~T0Qu^(u~H@4j&J;eboin!|2M1()zJZVi{RaN_0tM;l#3n)aepU!sxdl$XeAj%$g=X$)X z83;j18L)%uJ75RlC16J^U`MTJE4cl?A#j(WT7X{DaeB!1J{tY&(;to8rfh(5i%UOH z8b9Fwp!{cp|3vwpSzxlYfZM0$e+S`|p0fqUg|KJ=LI?;1fU*69>)({VgPhSJ+X0$E z1DaX=-K^Kn7IueGr0D}^6ND3P{sZSf8~lgnTG2-EMJ?hjKr<9Tvkz$qR*n@C&j^oq zx6!|Y4v7x6$X{wC5;}pry%v4w_~}|E9zaLV=}=W?W~lX(_u%jK8=f3TeoFXi`QtKq zR>aIyOzjqx^4q~hT5apUAHQ6M93Ezk_y7D9i6g=9HsQVH%IW%i#ogxherz>=X7$Kc zHL}kETk>@R5##Nb+Y{8Kqvz@CMpic(Z&t_F?^F6}$mR~?@a$@QxV<)hm;G~i{K&=a zwL@Lm&y2>~Qx7=J6|XT7#+7ev^j*6Tw=v&N$BvhtC!P-0?q4kGrnDXLLhpi<+O9Y= zr@fHVULH)^yk5E5dcFo3@mDQR=sfN`42;E0$Yt2ff7?3nonH8wn8J2t|8QiJ<1PHO z@M9*0r)}fQ70LLv}r=w9k5aw9!?J`_&D>{OisO zZ8d**2_zW7cb*HhA3rccWcEBbH!&Buu#O{*`Es&QWsUi=vy45@7lmN-UCa9}%)uH+ zz>Z#?&45Pbav+`jy;g~0J#UOL15F4S{2KKTEOOB2ZP^NSqGDZtgISc=#TNUOsKLw0 zk??*da?_QtFe5zw4!@>yg~+nQTONETPLe71Eu_JWFVm^knU{kvd;#~u4R--#sRp9F z2D#LG+mD->pmf8^s)7(-Ex@f3d2qiwVD$%5XqVt~4bq9z)=iCZFWvqsn1Ag&eL``RDj#`jl^2Lr`TN>WVuCT$b)+UH2~e`HpilUS9XP zv)uLM`nvZMc;D(q;awcpyq;cOVnp~d4!!R*Ul;br>t7oAb=h&H%jsWQ*M4v?;L_P5 z+C46^rbVmVbjyvn?X-D&KDBOS8^#qm3<%jK$Jgz)ix(}jEiH{sr2Q0m8JG=#p?^03h8s#Mn zA12*?oUbOOMNH}3nCr3V1ApbD_AA*>>R-5Nta9L5RrXJ|Ei#f00IUORSapHmzc{2@ zimt{IO|z#mCOXtRwI$l|Fs4~LBcv!!*L%L1$gLGzx@Au5hGCEK!AF^A>7e@TIjJ_Y zEwskvY}>_$*?;%lq?^I4!GII`$)!GTz#}Hh^xODnGZ(peI{B2m{j1em1Z6+jF`Tm% z3Uqg|tOsA*A9)<0IT1K6&))e&d2HK=E?F{&wb;AT{QZ);m_2-rqcr=K6bEi}omJrB zf_T*(r?uMoIA;kbw_U0ntoLq}ai_noSM__68xkEI^Mxf&`qE9vuWk<8ONO4EG)Et< zzk*7WT_(j>9VrVJ?$SHq@n<8nwp(8`E}M{99p_C5Cr=f3SaYT}E}QkO-`&+4I&Njr zGgkbxb%{P0jY-)~fyJA0He1^GtZT4=T79Zea)@7*{=EdB%_ex|zI0tP=FQ8^q$poV z4nut@t01|f!E&6S#@u_HM`=4N`BPRp{)5)lTsf7`+1zkRr)EsF*7=O-W3MH*ESbcF8eo!?|!E&-L|e{&HU5WN=a%6A#3(d4@LXd zqwTkfBY19|DYErKy6$D?QEmhiQf^A#T5XS6;>sLTWRJ}{c;IzHjh7yzHHbReAm3`9 z)Sw*Qm6-*d*>@N$s1dhX)c%$$(#zc{_~Y{P%@Y}0)JN#L4zMjA|CVdgt} zV4ra-TQY;OlB*Uv& z#YuqyntW@`B)dRPVjyd~M;HR%QwGcfr1Get&XUiX*yX8~IB7lKFE0E#rQ$J(Wuc0B zmEIHziWYK>-`5+jNZXAcgBL%mlN|ALObEouLOsu75=!{pdf~3o6^mZcIa^gSfNuOe zrtj#{Q6GI)HV!7zsP^+#MgyncM(WU0vBK|LRfbZ~#kq>}x2ySwC;Bz(oKI(ZTX}bV z<~vEw=5GmSE&bl&FxTl@-E^kHtDE23sGsDOz3FSrGUwZ6(cHzEO>&^bhHdPO$J^D} zk|y|%k3Ezoy(iHNsV~JvnHdy(I|cI>h8 z@Mp5tNmqO^JcD=mWVQ|05npFkw zJqEvqd}#{l830M;o&5|1Iu`>Ciuu;OarHw&UK_G8+1Fm1Ih&sLde^;e6}`>t z_PAu}PH;!!T_+Zg0O4p&!{dUIsKdcvB&m1Z0LgpR`n{jR<#1wB{r$6Ac@9gIJ;*zN6hw&aCW zahgy&KqpGcHgNQ7ZQ%O5PT6Xr0Z(Mp)6hs(JC5n^s&mGK+Q^uf4uJbvOuVblv5`^7 z@3O(=$zkt#u_YZqh$%DiEV9|PYfW$kzk%a8YFUtM_*EaPDbN!Xt~pAumE-kj$s09@ zguKSpNo;pZog2U{iehKWm?g$_z6)z;%bC~c2gFJ);L#cxW4%93Wi@(AJ2)~g2fF+` zg%C7s7XL_1wzvBu^=I))CwJt41gpWVCBs+LtEi#@ft{^Lu#F6B_66B?jw|~;8PG>t zdl&iN$6IcF)_gzz|Jlj1M%?9m-Ed@URS_4C|^ZRJ>lQOI((BVNftl+5Q?k;(VD zlHtvM)*YkQpe3ehfOTp{{0VUd&t=@CAXUdx8>!jf1q`u1Ot_Judw0ee*;$)fTLI{a zEkI8wUQNkWY<7>AaAm6fG^)2)j+FRi+mh0k6Vt}q(An3PZCApIBJp#Htvv~UZ@_0r z;jPu}*R6YpyHsr0~A*C z6f`?@IbEN0H9qO4c_o|UapmGnGs|?H^z$^#^9<{JuFk! z+ogC~-RT3yyQs+5%O_4o5pw)O%ytv9pGhBsTb2u3RC~4fu&6ql$UE7d3Rk!lH90a_ zGd$*kT1<;tg1PihaLw1XKp8b5g3DV})8u&1s}x8-g|sAhRo*CX?=8&43h&h`A-a$6 zRRKeI)LEFjjg|tM&ZNeV|mFPO}R%x7886aSCLwUM%}U0@3b1xcX{cYzs$VNXPNJG**KL4mstiNN z%}Uk7Dit(%+ON5b4XD6GztqDjX>F@v3tOc8tDDu@1h(8D{S9$Fmc^Dy34ZqjFc%_`!pQT@+FdeV4)jJI-C+hkRJODM>qc zr`}nv+2$4q{YE%AD!a=c>q|ySDXyF~SD7ZC5_-9WxZjc&ZV0d$l#gc@UhJ^bL!>OS zrP`u6&R^+mJb%_|zNRB={r;UYiKb!)slXW2&^1K|qmRaszMs5d%U z1626|xZr!lQv&DS;if_*A|N0k7REu;g<1H0%J$Xqm8vQHOIb!BsKqZ%*oTa&zMWIO zKmxY>qb?y()KcN5LSU$5BFMy}y20`J!HK9QPp9p0Q1tke;ptkxkcew_KGl|#>sW;L zX4boEf)Bfv(-RBN?xBh<=}zhgLLm_Y;nh0OohpX{_0Gb`OI1uVrMAyWmecZCiQH%I*lm@Lr_cA2ER^Yy& zfCZp0U{J`bdC>MVn42`Jm+30l#7Hc8PHXejjJGv5P{_{4Fn2*v7is;eeRLll(0Uus z0(-8+%LYLK!A5N=4k!4e1sA_C!I z1-`;6@Ej`FX&ARchDw`lv$jCPd|F`-gyLon;<7?kX9;2o&`RxtLRNnn%>{j|Cd-0B z2Et7DBPz}2o}-a=U_fmTge!Q&*X}}Kd|$xGgQ50r7Jo|49%8(J z-C)trw@<#HTj&|OMzAuV5hHOBwz}D4|2H2=AuvO7XL>D7aM8CWcq0F3X@hPgzt2jT zEUiIUkw|_+F>u`aKQ!mdkbr&jurLkJEO142Ia@zE%=>@tFj+j}Un92;50AHidEeBH z7eH3Psq6H${p5<+j|L2~J_!y9H}}a~KlY7g&$8!*M9KTLH5uHY&mcAwVjL#{27Wvv zA?(w*R>JQ`fpPqPprasQYTh3MegnQaeaHlFGzh;(h6Yk*)~B@kL++B-Jsad4xmi0K zS-V?VyE?_kLxQBBO7C{A_58RAe(0r<;Gm%}sw9p?Uc5vuQjN9{hb`bFDbuy3v^^2N zj%Xj%k3^#NNv~3Co(g@5D#{wGIvUK;ecX3GnyGo|tKgWgAb@P>>nwCEg6Pp5%bZlL zF_t&1P^+gn+?>!1^g(>@Mt;}zmSpW7ZLFPS?U}_C+Uj&;hO3T=g^%l7up3?&*|?b6 z2prjNA0cQrz!f2b)qSM&^1kyx*7f;55S_Y`^D2(0+ry;$&WjJZA8)8Edk8_+bV`$! zuy&gSCu#jl^0BbfTO;E7dG~>1?_okNY#1XAJvr?N1Ka3i-HQ?1&AMh=!OZgdnXA)# za%yW*#_hGr^Hm|!tx|T(Kjkw_&3315;7ZP8EzQw`*=JX`*I~C;Kb{;p$up_eB%H*> z;u>RF(+M?Z%DP>ewS?Pe6T1HMkd^Jw6$XAXY&~O5b<=b`^T<5A1wtrMwPQ-DZEcrg zh?<;%^S^|xYb+n6;z*m9$X;K{XBIp;`Tbi{N;=8d(jzEr*}f<+l?_F)aOSCw(^bKLiTTDPKpE% zWtfRig>pmL8(&}J(RUvJc!TFDIVe#K%yhIYQw*%bvn^lZ`n_DF-ChB%rDk-cWn4e6 z|9q~hakuGjHtLItu`CX(7Dexk2c(Q==)pf7zvWZ%n9vVdHA%YhTQ(3XWv+k>-luZ=Q+d_aK<(r%I7h4l=24SZ?cE_v{TNB; zFN_Ts#YmHcscUU7E3->v|QyL{=NfuEbibpYfTpL+$0iPC|=MZ-+HQ_Wqe zz5@7s#D`!dN;e2vDHM$?=^l9`djXjwN)OvZ&Bwy}ON`_HQ;fM9>u-yu3aYd;T|q^1 zmfxD1JZI|o^<38&<(fIYIW$&Tpj}g%T3Fw?o_&p&shSXUs-;tC=r`Bh8n%ASbJcmO zS9!~H+`qm~?D1z@A~qO1NZ47VF}|hWDXrVaF+IV^?el){@1 z;?M~hC_2^!*Ky#5RGQgiZv~)vu9Yh&qw3wR3kh9u2?)S}NDyceR=7Xc?6lw!Pj<*3zBn44eoQ$l<2Y}Xb+2#E@}_!!YTL7UMW<`qi@fefE0tY1v%I6 zh?*Jq%DdT`RL})DQ1rz1B-jC!2~@WkMK>y@P}aQyw(W?DK?F@reycyISYhi6TGdAV z9+JH7^rN7=pgRsQHf0U*!tRyXgeXcPhJbnCt*Apk(%RbKt=MH=CpLjZ)~#xa!Gw}- zIJR|eXArDRL1z#)W}C?nS#D?MWx%cfEjtLSysk*`z~)SH6e%Tx?=0NmLjff&(^H-m z&Ee8d@w3F1_E5>}TSaAg;6plXbL>Mp4m8!Z z4jqtCetElnk#|-6TZdBaF+j(g)4z1QjcwF36aOzHT=F$CeTE*M<&zb4zx}b|Q|gBm zkBa|-cq|22@#%lDV%XpyXy^dqIHW$|*3ygAeSG3(4SQ(CvfBWz<+C@CYgOzkZHDD+ z`lKb7WMrd_O&eH8&-CUGRK3ZySGMgsS$6Rwm3VXRY;0aTU`tC`gID(*tZK;sYX#%p zK_nv^>{D08cO2#!E3qhi)mKcXV6nB)*mKz*Ar`va2cvU7>*vh}!lVk~Oi)E@r&KBk zm!I4z9DeTs#VbyrI%B>~rXiRdNkg$9nTprDhBx2}Ir@*sTNdI52@HhID*B1iw&kHE z)}Nz9t;Px#`iU2StG{BpG?-u~EjFf}6$K#V1>dw+vaNaX&@DAG!Xa645-!H858U0t znM|97vLRWC-^xTd;R)4iOvGD}P6Vrepw@}f($%0f)}I@GpjP^+|BX6?om6=C2emFZ zu5Uh__dW~VN)rcv@W<%(VugLsSqK6woNn*GL$V7iVn?c z5M^9TkfwuvITRji5IdAj(|0LGfkUfOfeO;UOqcrv$qJL&j}1+^oo<fVTFB?GNqxjaAWs!afLWIWhPH78N3=d+(;=$ z0`8@VTxA_NG$+NRZe_UfL`#J_3K2ADS{OwUjfmXv=L!j5YSU{WQ8ct8%+mZgWu{28 z{j{0Seb%|*AJ;Ex)fJ&JC6RCs%G~g^3Gq_Ho$2F*_(>_-2VzPgw4})~c@eSz6lI06 zY*ZD}T1s&=6FPtDvl$ck^3*;=EEVNcqug*&#UXdh;0CUrU=4oMfGdGZxq4RAXE`*g z`nmvWQ-%U6PK=LCt>;38!Cw(vTX|9CU3lX-3y z;b=o6E_yM7%ye{$#uuB3TD7-jvQlcFeZ@}YMt4D!@g-hNGf2lvaXL%KNQDFNxdQ?- zJNS~b1Hq`z9IHWlh3g7h0=DS3qzbCNY55Tb=(E`38yk9s*R4SqNT?jcR@HBNRK6wO zt|t-SZybTu@T5jvRN*HiL9RYsX$ zQ4Hj=dM1`Dlgzg(JDT`Cn$%OlvNELbX{`F1cN_D8BH3`qy-tg-kw<2wzScnm;y`gc z^HM``d=WUW`vJcTu@hH=iYHtU&oOC}WP35jFG;;+pWxvB6rA&;0<m)E&CB%6ogn1=#n2h4*i61zn*--QKCP)_eqf9+A`BK>|Wn} z1F@-l`V%v5Y%_22009~jMb>?O6fn>rqq^S!F^V0fp`LA5##Z=H8VmzaN~#P{Dl5+i z8f(uTN4F&oZH6i*xut3NfI*5Y&Y6_WY=C<-GP#(QlQ^2Q0Z)64x&3n0z64exf8?)DaBq`GbPSm z_NO;y!{|Nlq6>+1mUi8et1M2O7y28CLYYeGlmbR=!NWBjR5q;{Q?)9u7wL2 zqgS(;6A;x2cUP6fB9!}g$@gzj5cs#%AWdNlR&k(13U1ScG@js45J)p`jj28+a@Qip zOM5X%9e1G`>62i^a=)c%bAn7w9QGr#6Q;w4%m9&Q$||d|DD;Q*uf~*Yyn+MFnl?Fs z|2j#u3q%!b?}3nQj}E9%Fat>&YkyH@Cy@agk`g%~#rfiuLx>@J_g7frG9isP)IVXl z)Aq}LB+*iP`!R_pDx#U|lslFS{ALbP1W!+?h@iF>XoREA0T$=XD)q3;5Bwxnr-o8w z{Qvct$F1KSyIu%Ynor*^&`566LJ>M7p5(VH21)GNyX(ckW z7EKZ9`*CS=UDXmE7~HDrF2w5ga1AWWU}aTKEXhd6HgX!=G^usLlj<;Y^UGB0gU;nZ z+`Iky{?;voMJewd;*MD;f1`BuQNUcU(eG^p z{+ROlP)0LkpWe(SvuWZt-(LanoFXs4H;@ZV;lBV;-ZoZmta*)6ei*lHhVlaf@&6Tw zH!OMj2GUsj3!rTX&mciNw$F6|<)oSpC&S{?JW(jWZw}F$K3H2igdn4#SrC~xP{c3L zJ;c-o*C~w;ZneNAq5Onz`rM+(K0rmY1YckW?1$;K2OT>A|5qdXFdBK6jS%qq{Ssp5 z^!@ncN9)<5UqYB63FiIUrJsktMEwH&g|&xBmrwz?4I&xtMF>}A_SG@WDs0Jg4rKUp-bHv}M@u5}Dp9C8l0 z#d2-RW)jIIADF8}J7b}D__}3gm;?;?1Zgzuz17XY7n>%vlEqJR>oujpv0aiE$KQKc zm$t=$_nH$j2a=FO;9B7|gfq?H|GsW?)1HsjOujZ5y|2L&u`zEzgaHOd#r&=aYYD&0 z_~@vRE8x!uUgD<$JW#4v+skN)DXP))>t1oIc9@^9C-$og-45k|Li3=)CBv$Y4Yo5Uf37Aw~-s%7Gn|Lg$;%h_p`R{^P2!* zS*NdAM*x_T515j_V02_lo)jnWK0c?Fd1QeERzT&n)wZ@92!O_tbs}&zWVj7M=;*JT z_#U>)`gPR;|F_ae*4_UM_F1-s>wK=?B6z_%Xkk)G9^-F1YhjzKc+smryxc3ZFlC)W zvW^rkWJXxL8G9|RsuwmO(05qBS`hBCuCv63%Q{Kq-Qkp^<&JWFNP+iRm{b5q_%~2i zpZQ*llqwkK)T?9q=I&qy#EU*aq)tg2JS_liUZCHi*^Ce^>nQ##lS7t8&_tGV%04~A zCEZ;zr58X9uB45D=f?RW3etoIB=g9dYbx%12J%83;uD;GddE3yiyt`Wln%By=hP!y zVd;XGIwXG=o-`RO)w&s-XbQf^cTRR%(4 z5Zh|oyEBkj1!*i6(wBHJolK2*y;F-(L+M{EUcNu>^2_QT{uV|grT2vLqD+6=_acNT z^6rwRV)*%T=;&}u&-h;DW%HtnDiU`#ZYbgqSl^4O9N!=GSxExsq1&-a>4cQ{Qi_s{ zcuI)oG))y{SawpD0-`Cj!z0WBfp!}~19QHg&xda#-*6t{ zC^v0XusTa_S`#SLc8N4~@)&uBWvw7%5^#|g-G~7@9E3Y8EbP=ybNr%Uf-o+z+n-HE zL0mOKN%0Yq0uYkxG{q4`E}xOQ!pyA$`U{tzBgmmJoSi8(#eN;j*VP~JELKE76x5h1hxuX7NAb@vIm4K5PW6OThjiOMS~)=87(mR3SV<=W>t zVEcvQ&{iXdQX(;9`vGpk05*5CP#(p|oC>%NLANg*iL+3FY#>)6WB4eLQMokOejHyx zdn(;($hi@sc3x&RS^fKC(I21gcG21V*%=|D1P~mntQl;8gj+-zb7mk7m@>q;2I>V# zp!W1J>x*!gNp>$`ShlJu%PKUAGvyOk0v#1wXE_fG67M2^e&lKo=XAg zq9`IDU1auvVnsYG)Ek#T9rm8wTDfb=&CP_Oq1cFs|GbDkE}@qA$?Rfg_yP*60SY%U zVZuTwDdBHU>?|IQzFd?PjOp@|5*EfqQj-;S#=<%jF8l@!*tkQ9cs0tBv)90ge)Nu3g>4 zi@aue+4lTQu(wfyTIkOWD1`rHfu58AaOP0>-_AIqK;~i8I_1@4Cc}?Q;7*#cG&}Zt zkWy0EP*Lz#x&Fp(JFpLH7mk<7gb52&CH9-Jlqgd&S`|*};C6<)5h#x1aazmx%<^r; z%QpL~hFdW1VYfuSnitSzx9O?;-Ev&BAmfe$wYvzpVvGM)DXB`(jKY)bFTgF5wyaiV zG8z|eHt%0CKmD}dAQcVrGK1h2q^K$|{gct@!RRiHRJf3o{(9+%3QDsfecZx~PmF6; zTwn|py@`E~OD8LFY09rZNX(Z<9ktl~61%{Meg(`0{^zx1f_k6~$`!R2m|d?2tZzff z9=os#9l*HbQ)oJ7p~DqT%T-i51nj8UigeHz(}XM_DK(;`G7j6v%;qDIs_nn4=L}F;(zX^~ZLU5sBjXAJp zd4h<@Nt2cYnT^IRWXuZ@mJpUmiVDiQ1U~HBE5=KNH07xa%8D6i#|!&DiBH8Zv@3UL zI7-HuVH`Bt6OCFB+-3V`hPPoEePuL?CcT?5`$MYy4$(K$Ka&~@oNGx?HcQ$3U`yVb zuw<7u+%V-YL)PFv_#^=k{uol63<}^Qv62zU;>sJ9HoGe9s0rvNt}Y201VnQz}ZJSvHbLZlYkN@3~KdtzfF>dDiuHl``y zh%X&qJ5wg-=73m|^LSne81MksTI+D>&_!BB-n5(t9dpfj-K%WsNEHpaEJ`1NUUaw# zHY>g41bQtAPz~2+1e~Fh=eCz zL$f)EudJ<~s!U=&eksh$0{>E%)IC2%_-BTsfnlweh>Z^gIHGc*JJBQ#buFcr7=R)2 z7$hQT)?S+>B3hu264^$8OFJJc+n6jO`+4Q-T4Y9ARmBW#eG~wPc)*Q4yRHY{WC{&O zy>M8JSU=9iBEFtBo>&G&-FWv)?Pzzc_-P_)bHnIt%!co)AP|xt=w&x?Q0m4ydwH}G zh2p$m=o+m^wDkc%sSWhaG|uKe>G3DA*e<1E ziktp_sKfIAP$z`+f7MyT0n~9qb@{%Yq5T`o_~6+o&bj0-AX{`S$h);jnYMqCVy3;l z^-0KjdH=66m<9ZzdOe^(K*!MkQ8doU#M#-x*6hzZt0vV=$M2k|-P}K)ZdK?&)?K9Fb$lgm=w_Pcr0# zVep>=5~iY|X1|+TDY1SrU}a1W4QHg%=i~Op`qut-xzER@PiL71?14mnc<9yIq*{~^ zM%B_A))or`=5JNTRrjlmF6RV?5 zmIU>RmFAb9`*inQ4q6FCv{nfH?8p?@m`8*`YlYQ?EA5F#YXz~CndynilS5g5 zlqC#Ps)Q4-(}7kZxdl;h8a zk<3)Cs%%yELpUhmsiKd3WF>;8p84%sMDkoEV23?>su-^h_d7`+t8D)PX*}4NvjYq? zLx6^tCrns%{OQsyDsxo)#hEb#2gmO1fJ8=)SywB3JSkt0am0aTx=Yt7cfV50Z~P{H zu5@@et2)BY*+e*1TOQd=(YzeHvTHZsR)!tSvGe|beFs=fS4zUWf2=%&>Qw*@^s}h zJe&7`Rlj^q;ytEt1mXjmq8Nj}tgb>K2Ul@~#=L$ZVr}!gI-7BStqej_C^zw{gFY4# z<4>#mp*s|(|%wX7{2N=H;|H&p20xvw9ch`uk@Wxq73OBw3An4h5c)Yvl# zOR#ZxVXM9{%M|i)zHKs=zRG*981X@Jnb?r|DPvQlH?|4EerdXe0zTooO+sKobAk`V zvRZU)ST}{nM*&)3J~RfaYl$?Kc_*8}=J`9SdLXmj<2;Wz`Pb|9aBEta&*9z{V4lL~ z4wT{f_%NR?LLneRdRNN0=n;@wq7SP(yN48nl!)RF38H{Y{DNr_yy9HzRh-jxzy{m& zeeN+|*#`dS^2!siH*&20LcQJvq@SQQ4Lc_7we&MBc}Gdu9mLz1)jM zV}c(cn?}QwP&`mk=;;?QiI?kzy5-={2wy^@28j*JnCm5ukpPcM9>a>v#l>4y$DPAL zHaw%S4dl<-l+AY_F4eU_tA44b#GjA4X`$qdmh5L4Zve(wcE1u7L#CS=pNnbU$frAj zJXQcv=o~q*n}IU%NxOX`FiyM|=M3h>Z?I`pbm*jA9z99K(&&;!?>b>)wFsPNH=y;F zH;(~&a|`}Y$9{9=IvD{f;QodI0z&zhW2S(D z&&mdd)_=<2ZYKBHerLoT{_!oGG9^>eI-v;_nR+<5aRLFy6X+9eE&6)gr9j*K?`a`lSdUAZNm5{cC@g0oaZnb#QZ;Pry(D1G&5)}m{PW?Cbwl(ki&X;R=R9B>!3wK50sM|_D5mD zjMcKII36(5@{`|~5UNMA;mwAgr9}X>);r<2hekjNVaKWwi(~F`cWoz;GDrJYFhwnm z+jxYoD~}q`iU=e!Yndt>jW8Zs;hbDzGGUA7371-#vOI+=(m3&eora1u5BVQuAY-5) z67Q`KkJ{>~t4>d+vvZjizj+Ts5K9&*M>1iA3lzxNAFSsd7nkyg~l?U8NX6Q?#RM4J;M@OcY0G%b4od#&x z4j02IeS*7t?TmfW_2YH}=Dia#Jy5v@DcO1WegWm;(FI>qU8c>!+d6Pw z9Ioa8&5~o}?!ttVDx&J3c{|2Q=bm?G4^lchrls2Ha@ebFl4+Ygbb7kGzA%7zesfnc z!l3uAfWiK_5O3keL50b_BntW+4C!+VQwL{0xrK`0 zc~Mm8{Ad=1c`dDZmaW7rg866<%y+{#C#LtN)*ijdo*X_~X}GYLnOkxciLlCX97cDZ z*iDPuWd3H|9c6v{gTCZDzGS75%Gy0Ua1e&6x*vz%!lqqbQo6~{OFU$%Ma#e4{8s_s zL_y-#VL zhDT`;ifI(qvZhoZJSFXhzjWyJHQ1~jfVpTMsI3x!y_kPZx5aBlIMKtTS_`LCa6B54 z`A!BoLj1(*)uX3)y>uRe5BxjSLHhMk^H9+po^ZPu;c?`$$ur<>Xc>D429wss@EXvba!LM~|RxVZMJ1BN%n~Owfo=_jWE9NC6VnK#j!Q-7Lq8vBH6OxLP zZAdW6&KsU~ZBv4#VId9yAMqPz8#Lh)- zB&&vn#%J~-6>Np+8;oDfoVq(sRQFwngUq-2hAW_97`@#6?P-5KWu~t}j6wJF^WoC| zNDcn0Hdqhzs{_j0(Qk$~?`NuC=TBelvb~ysMiY9seV#8`^m?>?kt7DsYjR$1_SVkr z_}=eAC`4M}AwncJfILG3cus&W21Q zd=cjH>~qEpwL)8&+)JsN&g;X(N0NhE4?VCABNXTJDp!G85-}y#WnOMT+Ez)SSN-gJ zWCoS zC?`)cRuiJL(Z}h9BpXhazs=?q+7HMy)(9E5e^G3OCQiq&?G5wQty7&Pkr=h1-1s8m zS~9teI}!v}%tVZOk2~m2^ou^jl6o_~$wAQACa$bRD7Du!D0V$|p42$u%0=e{e8|IK zTgIPn&y!h+aJ4vJov-}3)+0GO=xr~wJtj`Q{>$co(F$&)rD;Em6PiL-u=E&I{-A3) zk*P<<+1FKm)t)=!4ykqPq*vMIxRq_b*Iw?;;6?+3`jX%4Uj*7KT&SF`L*^FQcL%pc znf+!wzq`xv{ID=9EupKFtoUKYXA-74}PKJs+gWC5uzZG+ZJVM?{8PS8NSSc?z|Te(A>0D%1*04kZTilfG6ht0MbUFR)rj2 zx7}>rH$P{20Y36G&i1#9Q+^3(m9=KF)njJ$r+J9T2$|8%P)_ZnX8IfW;&S%0ak7dg z6^kX!Ma`t2DiJ4RNW12&Uz!<3-3_UmTv&~$JDiD;)?Knd8A(4igBH1*DR6VAPJn8- zy!9IUmCZ1#FkByjBzym`D|OoaA`XHv4I@j_vnA}j78!ad=h>HgJ7+>2ZfaiT9np zq&{=~>fVN<0&i4|jlu{@OIH>XtemrvZah%Rqytvl`e$0_LaK72Do}kY6)4b`*K2;E z-(|yGDHMA%)=~#5(ib~S`s(ZkyUc;jLz7$YwkwiLZn;pftJVq9L6hIVXizeynuR_h zW0e|iDcjcj^4Q6)wO8yqfv~ext}O4izV~#YEN>r{$t&e~$A|2A%&Aa2AZhW_*~slp z=ExU%NVllqfQwx9;2(ifYUlDDxWlky5YiNMbJrlAL{IV{>8bcul4EE!%;O^>6h&!j zR4r~f?0GAodnCbTJ-Xc6w|Tc@~^QL#6&u58!fgg9I5 zlSwK!Fg$@IG{+p2toYusA#bcuSoUCmjjALsVj0Vl7*vdhhGV1|g2mvrAc=35kPvZU zzQN-{*~Ovpv3ULJER&TD*D_Yft^gK`T8dG$hI86s8MP_GHYtNX1w;~Yp%vf9xCnbCEi7d1l4wZ+BI^-Io}Zqa_8el5@YZW=ALV+`kOjm|H~ zf97J@zT7J%fG<1VhH?1#%utwZ!vxi1^OdsdJ#bVyVd;jTVMA+=mNF&O423+`j zRq(mbvd!51CQMk67^{u3#I9;QH zD&jVENXzU31RDZ`WBx<$by4)dB=P0_iROVcOKq$wsHyWHX7lEr$oh;eamASQh_Ouk&^U zI`t+!N}`biCV8b!rB9qMwu8luB0xFrf4d&_)EiCq)}WaqCWX-bG>=VzJULFxekcmLI^{3V!sN|D%lpI zJ(8MS-hcaCJU9w z9HIU9$$RS8i8Ti{lVwwCG`J+5Geh&Pcss^wVLMEcN<%C`){sgSxdkuG>@fSc^Dde4 zn?|Y*oi(8pp=CSaurNjKXjVZ;HR}hW4&?HC;NN=tc6Br3h; zViIYS=Z<$@BJzYorNSqPSn%zr44G+W&_hf8xuiHaxz3goWxzSeBrb#H*gNEWx2NyZ zd_CE4p&6)r(gG;QXll&Brop4l!(kjGpzT&@X}G@qdYmfcLi@TYyUq{3O)kd15q%lf zrK(;2=>&z5+lmUsg2X%ZfTdkkZ8)#D@0O}qV>T(D-7}Zty{j;09N3dlii&jWQ@Wn{-zyf z7OOHSI}fB85^_OkPJ{>ik;e#Mg5e5j`EHv)#U7x!9!jM>9LEw6g&txD z?|%5ay(2Udgc*i%CX}hNMb$l{-+1N1$}*n_TRfYBu$1N0p(%$0vfUtuujKn1N0*Zs za`|gs-=iFU$jus|f8L(rzHQRs_zl$!L9W+zROJA1q`-Q9B9QL&c^j+arb)%@1*#fB zx;i*YCyOhg_uJ&}RWv;}HLq>FZ`{Y_(XQ{^uri`>I5@iqkihb~+CSZNZk(HLclo(> zXju}n-fTVgt=np9bB)aOtFh1*dwE$dsv#b)MjnxmR(h`{YX#wH83#JCS9{@{tn~A+ zAT0HTSSGoG)+pZdw%%d?`4yBux@^`34g?fP2n2)yxMBeccmJQZ&OIEeG>+rrI&Qf% zBScaYEs^_m3oF}J5+$3+-876Lm$A%@%QWO}8TX{ItZI>&+Ll?DtZRwfMQEmId(Q9s`#sNjH(pbK^8)6lud5g4INA@1n*Pz-4`vHD zt|I6w`?QIFqXvi8S83H2s+k?**7F*?pRQM^M)Qw8n`Q~iQF0CL$-Hov{5Rxt%!$yo z$MDP8Tz~5>lF_B_O@Dxj3&W+K9Y)XTo`5^^%)Mb03R*{zo!h4v11mMT3yi=HL&BJE z!Se#=hR*rD1VIfE9%RUOpZ=(6^(~|N8I+uxlGMXO#_1LH!w_$7Pmz{_C%ta=m6(dN zZ-rG8NjlBZI#~`vQigJp#7OjTrT>J023*YQ;F~oXq78TpLX`M$&4>zFG95C@6>OKz zg++Bbb*jdY*)!&pLvEzzw)Fmz>g;)=40T%_-3!M8auVvM192(zLwP@DdC;sz(4sBP z-$;^32>ECS;d9k4p zcIDO_50=UI`_Tz0R(vioxTaKl+YaW?WXV<130TE*^&xM!#Xc8DWQI}JG)6$p@0kvV zkt#{xe^1Vv7hDw5Jt%s@>~Yef@UpaXq3XW8V_7-HK63`8#@_e#$H1;swj5}FLZ-n^ zwX5i&s5S!WMz5CMFdt3Dj@EvL@?=P&&%22qxp%thI0xO*Tj7zJsDAOTMJ8cIaWT6_ zP0o7p@Q2go@e(MX^MRd;gXdluut?$$lbTpR;IB3PLDx>{h-^v}<`wwvfH6Zns?~-2 zXgY~cQ{*td`dtjfp7)cG=bU!1DbFB(zabo03N;>&{K@2QQi%xl;uQngo~SeXG}A(> z$5Mo}vfwFZ8sue`u~stt*RqtCGTH1i_IcExpA_0vVqGp5JBVa{9w6s7;-^Q1{^Hc8 zjZt$BR31kiqF4n$P3uJ)GkVh4Z~GTlo6QsDyMxw-KZW^N2R&JxM=gcdK=Ypd^CF65 zQkU0QA{DPeC#GIRFvAtal$9e{`zz-%>uz-z_ufjyUMU^lL+!W_;(0WxEF()LKg_-! zZH!(Wc;n8*Fwv`XImg8Y6@6j!NDgu6#q@|V6h^qXOeFQ(|ToT znRtG78H6jcNn=o>&Ke`_o$c}4nMQ37nSedWXytL4le5g!ehX@oSnI6J%;Y=oqDo-l ztNg1)rk9N5qF(h+t-Z!*MYHyDbgRmVA4mT*L-k0q<7*4=6d&syoorD~9(!^#zQLM0hc8+R1T> zW*bY0_k6sCRvhU_tR)G>-#POO-rO0h@>XAI!L(jUoj02!Ot}h$m5)jg`xS`~Zwoqz zQsNL!yyH2eKgU`=*3NUSfuvL~<0ffXVT$F0g06%RrwM)TYfSN^RfbHG6O%M&#XTiz z&M_@7TY3r+mg=@Sc!{VnP}?&Q(&2tuY<8~_RLrmCDzPkFL6d;QO#lA+hU9>#9@T|1 z{%$1Kwy+E4a&JxE*Sk}JE*ly5k>6b?K{+5%!Vb|Ob9-D~I-z2|SYg!_Y4`K2QCLe# zuMT`lT1d6QUv)Ty;^Os^XB_Irib-l!>)zwc>P~jfAk(imd`K6}oMs?$W7;iW(qKa| zh1ahq$z`1MnorNIy5C++=$j(d6CO5|r*>-*a6y*SBZ^CShJ2mF%mOW)b;c&Jb+Ru; zKAhE6#+E09zQ6x~68>Rej1rL_*xHxn6pkD!p*>yh8~T=sqkE50lZ}}RFPLE*la;B~ z2ItRmhWLkHLf%f?Xbb))A2QLv|%b!%;Y*6(a(f_Rvhh^WZ5V3N(#XofMy0B(esIkO z$#Y9_(nxed&es5eidyy?JtvBNBzB*~zu)tho4fATv||_RO{^`rxZynO>2U!_=52ku z(o6Tq89;>E0_5D*ZO7M*2(&>U4yS-*Fwz(6d>QA540K$N&cFbil7;CKa48eWBMX03 z14km)GXU{ljK2}ugN3ot!Zu#OC0&3}Vux@HX!-x!<9;JxBNGjle;OK+VgqsvF9agK zLmmON{4aO)^V{vNpCj<^{Gkwto;kSlY+xWZDhB`}$Om}#-Q>PR*}Ymo=dD0jayvRV z5Z#pj_vG6lyN*Iq$-ZwB)FBWjTRw=`4pJd-x^W|cSR4kqQLY4!0r-cKU-d+;YbHCy zpx;Y^Ip8|!7N-sSm9wpg0+xddFI)1ekWD$L36{}Z=uitUUJtu6R~8MHpDBp|N9^!S*(e)caBw+h?< literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/heavy_ranking/update_warm_start_checkpoint.py b/pushservice/src/main/python/models/heavy_ranking/update_warm_start_checkpoint.py deleted file mode 100644 index 04887b9cf..000000000 --- a/pushservice/src/main/python/models/heavy_ranking/update_warm_start_checkpoint.py +++ /dev/null @@ -1,146 +0,0 @@ -""" -Model for modifying the checkpoints of the magic recs cnn Model with addition, deletion, and reordering -of continuous and binary features. -""" - -import os - -from twitter.deepbird.projects.magic_recs.libs.get_feat_config import FEATURE_LIST_DEFAULT_PATH -from twitter.deepbird.projects.magic_recs.libs.warm_start_utils_v11 import ( - get_feature_list_for_heavy_ranking, - mkdirp, - rename_dir, - rmdir, - warm_start_checkpoint, -) -import twml -from twml.trainers import DataRecordTrainer - -import tensorflow.compat.v1 as tf -from tensorflow.compat.v1 import logging - - -def get_arg_parser(): - parser = DataRecordTrainer.add_parser_arguments() - parser.add_argument( - "--model_type", - default="deepnorm_gbdt_inputdrop2_rescale", - type=str, - help="specify the model type to use.", - ) - - parser.add_argument( - "--model_trainer_name", - default="None", - type=str, - help="deprecated, added here just for api compatibility.", - ) - - parser.add_argument( - "--warm_start_base_dir", - default="none", - type=str, - help="latest ckpt in this folder will be used.", - ) - - parser.add_argument( - "--output_checkpoint_dir", - default="none", - type=str, - help="Output folder for warm started ckpt. If none, it will move warm_start_base_dir to backup, and overwrite it", - ) - - parser.add_argument( - "--feature_list", - default="none", - type=str, - help="Which features to use for training", - ) - - parser.add_argument( - "--old_feature_list", - default="none", - type=str, - help="Which features to use for training", - ) - - return parser - - -def get_params(args=None): - parser = get_arg_parser() - if args is None: - return parser.parse_args() - else: - return parser.parse_args(args) - - -def _main(): - opt = get_params() - logging.info("parse is: ") - logging.info(opt) - - if opt.feature_list == "none": - feature_list_path = FEATURE_LIST_DEFAULT_PATH - else: - feature_list_path = opt.feature_list - - if opt.warm_start_base_dir != "none" and tf.io.gfile.exists(opt.warm_start_base_dir): - if opt.output_checkpoint_dir == "none" or opt.output_checkpoint_dir == opt.warm_start_base_dir: - _warm_start_base_dir = os.path.normpath(opt.warm_start_base_dir) + "_backup_warm_start" - _output_folder_dir = opt.warm_start_base_dir - - rename_dir(opt.warm_start_base_dir, _warm_start_base_dir) - tf.logging.info(f"moved {opt.warm_start_base_dir} to {_warm_start_base_dir}") - else: - _warm_start_base_dir = opt.warm_start_base_dir - _output_folder_dir = opt.output_checkpoint_dir - - continuous_binary_feat_list_save_path = os.path.join( - _warm_start_base_dir, "continuous_binary_feat_list.json" - ) - - if opt.old_feature_list != "none": - tf.logging.info("getting old continuous_binary_feat_list") - continuous_binary_feat_list = get_feature_list_for_heavy_ranking( - opt.old_feature_list, opt.data_spec - ) - rmdir(continuous_binary_feat_list_save_path) - twml.util.write_file( - continuous_binary_feat_list_save_path, continuous_binary_feat_list, encode="json" - ) - tf.logging.info(f"Finish writting files to {continuous_binary_feat_list_save_path}") - - warm_start_folder = os.path.join(_warm_start_base_dir, "best_checkpoint") - if not tf.io.gfile.exists(warm_start_folder): - warm_start_folder = _warm_start_base_dir - - rmdir(_output_folder_dir) - mkdirp(_output_folder_dir) - - new_ckpt = warm_start_checkpoint( - warm_start_folder, - continuous_binary_feat_list_save_path, - feature_list_path, - opt.data_spec, - _output_folder_dir, - opt.model_type, - ) - logging.info(f"Created new ckpt {new_ckpt} from {warm_start_folder}") - - tf.logging.info("getting new continuous_binary_feat_list") - new_continuous_binary_feat_list_save_path = os.path.join( - _output_folder_dir, "continuous_binary_feat_list.json" - ) - continuous_binary_feat_list = get_feature_list_for_heavy_ranking( - feature_list_path, opt.data_spec - ) - rmdir(new_continuous_binary_feat_list_save_path) - twml.util.write_file( - new_continuous_binary_feat_list_save_path, continuous_binary_feat_list, encode="json" - ) - tf.logging.info(f"Finish writting files to {new_continuous_binary_feat_list_save_path}") - - -if __name__ == "__main__": - _main() diff --git a/pushservice/src/main/python/models/libs/BUILD b/pushservice/src/main/python/models/libs/BUILD deleted file mode 100644 index 82a014ba5..000000000 --- a/pushservice/src/main/python/models/libs/BUILD +++ /dev/null @@ -1,16 +0,0 @@ -python3_library( - name = "libs", - sources = ["*.py"], - tags = [ - "bazel-compatible", - "no-mypy", - ], - dependencies = [ - "cortex/recsys/src/python/twitter/cortex/recsys/utils", - "magicpony/common/file_access/src/python/twitter/magicpony/common/file_access", - "src/python/twitter/cortex/ml/embeddings/deepbird", - "src/python/twitter/cortex/ml/embeddings/deepbird/grouped_metrics", - "src/python/twitter/deepbird/util/data", - "twml:twml-nodeps", - ], -) diff --git a/pushservice/src/main/python/models/libs/BUILD.docx b/pushservice/src/main/python/models/libs/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..5ade34483a6f31dbaac16ad892f48647cb0b097e GIT binary patch literal 36851 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/libs/__init__.docx b/pushservice/src/main/python/models/libs/__init__.docx new file mode 100644 index 0000000000000000000000000000000000000000..539f73b98879b77c69c1403383d3b6873ca08074 GIT binary patch literal 36611 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/libs/__init__.py b/pushservice/src/main/python/models/libs/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/pushservice/src/main/python/models/libs/customized_full_sparse.docx b/pushservice/src/main/python/models/libs/customized_full_sparse.docx new file mode 100644 index 0000000000000000000000000000000000000000..14488a41dfac8b31cb25b2f5b4dd8127ff57966f GIT binary patch literal 37420 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 Zp|%bKyjg)c2$ZV?84`inV{0#n2LR9{`yc=S literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/libs/customized_full_sparse.py b/pushservice/src/main/python/models/libs/customized_full_sparse.py deleted file mode 100644 index b41f7d694..000000000 --- a/pushservice/src/main/python/models/libs/customized_full_sparse.py +++ /dev/null @@ -1,56 +0,0 @@ -# pylint: disable=no-member, arguments-differ, attribute-defined-outside-init, unused-argument -""" -Implementing Full Sparse Layer, allow specify use_binary_value in call() to -overide default action. -""" - -from twml.layers import FullSparse as defaultFullSparse -from twml.layers.full_sparse import sparse_dense_matmul - -import tensorflow.compat.v1 as tf - - -class FullSparse(defaultFullSparse): - def call(self, inputs, use_binary_values=None, **kwargs): # pylint: disable=unused-argument - """The logic of the layer lives here. - - Arguments: - inputs: - A SparseTensor or a list of SparseTensors. - If `inputs` is a list, all tensors must have same `dense_shape`. - - Returns: - - If `inputs` is `SparseTensor`, then returns `bias + inputs * dense_b`. - - If `inputs` is a `list[SparseTensor`, then returns - `bias + add_n([sp_a * dense_b for sp_a in inputs])`. - """ - - if use_binary_values is not None: - default_use_binary_values = use_binary_values - else: - default_use_binary_values = self.use_binary_values - - if isinstance(default_use_binary_values, (list, tuple)): - raise ValueError( - "use_binary_values can not be %s when inputs is %s" - % (type(default_use_binary_values), type(inputs)) - ) - - outputs = sparse_dense_matmul( - inputs, - self.weight, - self.use_sparse_grads, - default_use_binary_values, - name="sparse_mm", - partition_axis=self.partition_axis, - num_partitions=self.num_partitions, - compress_ids=self._use_compression, - cast_indices_dtype=self._cast_indices_dtype, - ) - - if self.bias is not None: - outputs = tf.nn.bias_add(outputs, self.bias) - - if self.activation is not None: - return self.activation(outputs) # pylint: disable=not-callable - return outputs diff --git a/pushservice/src/main/python/models/libs/get_feat_config.docx b/pushservice/src/main/python/models/libs/get_feat_config.docx new file mode 100644 index 0000000000000000000000000000000000000000..58aa52cf011b18486b50d0682af05824de20c263 GIT binary patch literal 38446 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 L^YY;%ZNDbLRTNkH?-s4 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ΞG%zxuWH1jWP)P$Kpg3l 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

)*0Iau`OFX#HYNwWw1g+P5w8}^V2W*7G0@(pg_ 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 ODnW)sVD{+l0r3FI3}goY literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/light_ranking/README.md b/pushservice/src/main/python/models/light_ranking/README.md deleted file mode 100644 index 9d7bd2682..000000000 --- a/pushservice/src/main/python/models/light_ranking/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Notification Light Ranker Model - -## Model Context -There are 4 major components of Twitter notifications recommendation system: 1) candidate generation 2) light ranking 3) heavy ranking & 4) quality control. This notification light ranker model bridges candidate generation and heavy ranking by pre-selecting highly-relevant candidates from the initial huge candidate pool. It’s a light-weight model to reduce system cost during heavy ranking without hurting user experience. - -## Directory Structure -- BUILD: this file defines python library dependencies -- model_pools_mlp.py: this file defines tensorflow model architecture for the notification light ranker model -- deep_norm.py: this file contains 1) how to build the tensorflow graph with specified model architecture, loss function and training configuration. 2) how to set up the overall model training & evaluation pipeline -- eval_model.py: the main python entry file to set up the overall model evaluation pipeline - - - - diff --git a/pushservice/src/main/python/models/light_ranking/__init__.docx b/pushservice/src/main/python/models/light_ranking/__init__.docx new file mode 100644 index 0000000000000000000000000000000000000000..3e4a34cdb36120205da1ff68f89c6495663c766d GIT binary patch literal 36611 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/light_ranking/__init__.py b/pushservice/src/main/python/models/light_ranking/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/pushservice/src/main/python/models/light_ranking/deep_norm.docx b/pushservice/src/main/python/models/light_ranking/deep_norm.docx new file mode 100644 index 0000000000000000000000000000000000000000..1c07907ab4dd15e03c771fe82b55ba53fbec6a3b GIT binary patch literal 39281 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/light_ranking/deep_norm.py b/pushservice/src/main/python/models/light_ranking/deep_norm.py deleted file mode 100644 index bc90deba4..000000000 --- a/pushservice/src/main/python/models/light_ranking/deep_norm.py +++ /dev/null @@ -1,226 +0,0 @@ -from datetime import datetime -from functools import partial -import os - -from twitter.cortex.ml.embeddings.common.helpers import decode_str_or_unicode -import twml -from twml.trainers import DataRecordTrainer - -from ..libs.get_feat_config import get_feature_config_light_ranking, LABELS_LR -from ..libs.graph_utils import get_trainable_variables -from ..libs.group_metrics import ( - run_group_metrics_light_ranking, - run_group_metrics_light_ranking_in_bq, -) -from ..libs.metric_fn_utils import get_metric_fn -from ..libs.model_args import get_arg_parser_light_ranking -from ..libs.model_utils import read_config -from ..libs.warm_start_utils import get_feature_list_for_light_ranking -from .model_pools_mlp import light_ranking_mlp_ngbdt - -import tensorflow.compat.v1 as tf -from tensorflow.compat.v1 import logging - - -# checkstyle: noqa - - -def build_graph( - features, label, mode, params, config=None, run_light_ranking_group_metrics_in_bq=False -): - is_training = mode == tf.estimator.ModeKeys.TRAIN - this_model_func = light_ranking_mlp_ngbdt - model_output = this_model_func(features, is_training, params, label) - - logits = model_output["output"] - graph_output = {} - # -------------------------------------------------------- - # define graph output dict - # -------------------------------------------------------- - if mode == tf.estimator.ModeKeys.PREDICT: - loss = None - output_label = "prediction" - if params.task_name in LABELS_LR: - output = tf.nn.sigmoid(logits) - output = tf.clip_by_value(output, 0, 1) - - if run_light_ranking_group_metrics_in_bq: - graph_output["trace_id"] = features["meta.trace_id"] - graph_output["target"] = features["meta.ranking.weighted_oonc_model_score"] - - else: - raise ValueError("Invalid Task Name !") - - else: - output_label = "output" - weights = tf.cast(features["weights"], dtype=tf.float32, name="RecordWeights") - - if params.task_name in LABELS_LR: - if params.use_record_weight: - weights = tf.clip_by_value( - 1.0 / (1.0 + weights + params.smooth_weight), params.min_record_weight, 1.0 - ) - - loss = tf.reduce_sum( - tf.nn.sigmoid_cross_entropy_with_logits(labels=label, logits=logits) * weights - ) / (tf.reduce_sum(weights)) - else: - loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=label, logits=logits)) - output = tf.nn.sigmoid(logits) - - else: - raise ValueError("Invalid Task Name !") - - train_op = None - if mode == tf.estimator.ModeKeys.TRAIN: - # -------------------------------------------------------- - # get train_op - # -------------------------------------------------------- - optimizer = tf.train.GradientDescentOptimizer(learning_rate=params.learning_rate) - update_ops = set(tf.get_collection(tf.GraphKeys.UPDATE_OPS)) - variables = get_trainable_variables( - all_trainable_variables=tf.trainable_variables(), trainable_regexes=params.trainable_regexes - ) - with tf.control_dependencies(update_ops): - train_op = twml.optimizers.optimize_loss( - loss=loss, - variables=variables, - global_step=tf.train.get_global_step(), - optimizer=optimizer, - learning_rate=params.learning_rate, - learning_rate_decay_fn=twml.learning_rate_decay.get_learning_rate_decay_fn(params), - ) - - graph_output[output_label] = output - graph_output["loss"] = loss - graph_output["train_op"] = train_op - return graph_output - - -def get_params(args=None): - parser = get_arg_parser_light_ranking() - if args is None: - return parser.parse_args() - else: - return parser.parse_args(args) - - -def _main(): - opt = get_params() - logging.info("parse is: ") - logging.info(opt) - - feature_list = read_config(opt.feature_list).items() - feature_config = get_feature_config_light_ranking( - data_spec_path=opt.data_spec, - feature_list_provided=feature_list, - opt=opt, - add_gbdt=opt.use_gbdt_features, - run_light_ranking_group_metrics_in_bq=opt.run_light_ranking_group_metrics_in_bq, - ) - feature_list_path = opt.feature_list - - # -------------------------------------------------------- - # Create Trainer - # -------------------------------------------------------- - trainer = DataRecordTrainer( - name=opt.model_trainer_name, - params=opt, - build_graph_fn=build_graph, - save_dir=opt.save_dir, - run_config=None, - feature_config=feature_config, - metric_fn=get_metric_fn(opt.task_name, use_stratify_metrics=False), - ) - if opt.directly_export_best: - logging.info("Directly exporting the model without training") - else: - # ---------------------------------------------------- - # Model Training & Evaluation - # ---------------------------------------------------- - eval_input_fn = trainer.get_eval_input_fn(repeat=False, shuffle=False) - train_input_fn = trainer.get_train_input_fn(shuffle=True) - - if opt.distributed or opt.num_workers is not None: - learn = trainer.train_and_evaluate - else: - learn = trainer.learn - logging.info("Training...") - start = datetime.now() - - early_stop_metric = "rce_unweighted_" + opt.task_name - learn( - early_stop_minimize=False, - early_stop_metric=early_stop_metric, - early_stop_patience=opt.early_stop_patience, - early_stop_tolerance=opt.early_stop_tolerance, - eval_input_fn=eval_input_fn, - train_input_fn=train_input_fn, - ) - - end = datetime.now() - logging.info("Training time: " + str(end - start)) - - logging.info("Exporting the models...") - - # -------------------------------------------------------- - # Do the model exporting - # -------------------------------------------------------- - start = datetime.now() - if not opt.export_dir: - opt.export_dir = os.path.join(opt.save_dir, "exported_models") - - raw_model_path = twml.contrib.export.export_fn.export_all_models( - trainer=trainer, - export_dir=opt.export_dir, - parse_fn=feature_config.get_parse_fn(), - serving_input_receiver_fn=feature_config.get_serving_input_receiver_fn(), - export_output_fn=twml.export_output_fns.batch_prediction_continuous_output_fn, - ) - export_model_dir = decode_str_or_unicode(raw_model_path) - - logging.info("Model export time: " + str(datetime.now() - start)) - logging.info("The saved model directory is: " + opt.save_dir) - - tf.logging.info("getting default continuous_feature_list") - continuous_feature_list = get_feature_list_for_light_ranking(feature_list_path, opt.data_spec) - continous_feature_list_save_path = os.path.join(opt.save_dir, "continuous_feature_list.json") - twml.util.write_file(continous_feature_list_save_path, continuous_feature_list, encode="json") - tf.logging.info(f"Finish writting files to {continous_feature_list_save_path}") - - if opt.run_light_ranking_group_metrics: - # -------------------------------------------- - # Run Light Ranking Group Metrics - # -------------------------------------------- - run_group_metrics_light_ranking( - trainer=trainer, - data_dir=os.path.join(opt.eval_data_dir, opt.eval_start_datetime), - model_path=export_model_dir, - parse_fn=feature_config.get_parse_fn(), - ) - - if opt.run_light_ranking_group_metrics_in_bq: - # ---------------------------------------------------------------------------------------- - # Get Light/Heavy Ranker Predictions for Light Ranking Group Metrics in BigQuery - # ---------------------------------------------------------------------------------------- - trainer_pred = DataRecordTrainer( - name=opt.model_trainer_name, - params=opt, - build_graph_fn=partial(build_graph, run_light_ranking_group_metrics_in_bq=True), - save_dir=opt.save_dir + "/tmp/", - run_config=None, - feature_config=feature_config, - metric_fn=get_metric_fn(opt.task_name, use_stratify_metrics=False), - ) - checkpoint_folder = os.path.join(opt.save_dir, "best_checkpoint") - checkpoint = tf.train.latest_checkpoint(checkpoint_folder, latest_filename=None) - tf.logging.info("\n\nPrediction from Checkpoint: {:}.\n\n".format(checkpoint)) - run_group_metrics_light_ranking_in_bq( - trainer=trainer_pred, params=opt, checkpoint_path=checkpoint - ) - - tf.logging.info("Done Training & Prediction.") - - -if __name__ == "__main__": - _main() diff --git a/pushservice/src/main/python/models/light_ranking/eval_model.docx b/pushservice/src/main/python/models/light_ranking/eval_model.docx new file mode 100644 index 0000000000000000000000000000000000000000..596353c91f3176a052ea68bcb62a226b1643b4d5 GIT binary patch literal 37656 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 TFoM2~Dj|pqFg$otza9M_-<>;1 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/light_ranking/model_pools_mlp.py b/pushservice/src/main/python/models/light_ranking/model_pools_mlp.py deleted file mode 100644 index b45c85e47..000000000 --- a/pushservice/src/main/python/models/light_ranking/model_pools_mlp.py +++ /dev/null @@ -1,187 +0,0 @@ -import warnings - -from twml.contrib.layers import ZscoreNormalization - -from ...libs.customized_full_sparse import FullSparse -from ...libs.get_feat_config import FEAT_CONFIG_DEFAULT_VAL as MISSING_VALUE_MARKER -from ...libs.model_utils import ( - _sparse_feature_fixup, - adaptive_transformation, - filter_nans_and_infs, - get_dense_out, - tensor_dropout, -) - -import tensorflow.compat.v1 as tf -# checkstyle: noqa - -def light_ranking_mlp_ngbdt(features, is_training, params, label=None): - return deepnorm_light_ranking( - features, - is_training, - params, - label=label, - decay=params.momentum, - dense_emb_size=params.dense_embedding_size, - base_activation=tf.keras.layers.LeakyReLU(), - input_dropout_rate=params.dropout, - use_gbdt=False, - ) - - -def deepnorm_light_ranking( - features, - is_training, - params, - label=None, - decay=0.99999, - dense_emb_size=128, - base_activation=None, - input_dropout_rate=None, - input_dense_type="self_atten_dense", - emb_dense_type="self_atten_dense", - mlp_dense_type="self_atten_dense", - use_gbdt=False, -): - # -------------------------------------------------------- - # Initial Parameter Checking - # -------------------------------------------------------- - if base_activation is None: - base_activation = tf.keras.layers.LeakyReLU() - - if label is not None: - warnings.warn( - "Label is unused in deepnorm_gbdt. Stop using this argument.", - DeprecationWarning, - ) - - with tf.variable_scope("helper_layers"): - full_sparse_layer = FullSparse( - output_size=params.sparse_embedding_size, - activation=base_activation, - use_sparse_grads=is_training, - use_binary_values=False, - dtype=tf.float32, - ) - input_normalizing_layer = ZscoreNormalization(decay=decay, name="input_normalizing_layer") - - # -------------------------------------------------------- - # Feature Selection & Embedding - # -------------------------------------------------------- - if use_gbdt: - sparse_gbdt_features = _sparse_feature_fixup(features["gbdt_sparse"], params.input_size_bits) - if input_dropout_rate is not None: - sparse_gbdt_features = tensor_dropout( - sparse_gbdt_features, input_dropout_rate, is_training, sparse_tensor=True - ) - - total_embed = full_sparse_layer(sparse_gbdt_features, use_binary_values=True) - - if (input_dropout_rate is not None) and is_training: - total_embed = total_embed / (1 - input_dropout_rate) - - else: - with tf.variable_scope("dense_branch"): - dense_continuous_features = filter_nans_and_infs(features["continuous"]) - - if params.use_missing_sub_branch: - is_missing = tf.equal(dense_continuous_features, MISSING_VALUE_MARKER) - continuous_features_filled = tf.where( - is_missing, - tf.zeros_like(dense_continuous_features), - dense_continuous_features, - ) - normalized_features = input_normalizing_layer( - continuous_features_filled, is_training, tf.math.logical_not(is_missing) - ) - - with tf.variable_scope("missing_sub_branch"): - missing_feature_embed = get_dense_out( - tf.cast(is_missing, tf.float32), - dense_emb_size, - activation=base_activation, - dense_type=input_dense_type, - ) - - else: - continuous_features_filled = dense_continuous_features - normalized_features = input_normalizing_layer(continuous_features_filled, is_training) - - with tf.variable_scope("continuous_sub_branch"): - normalized_features = adaptive_transformation( - normalized_features, is_training, func_type="tiny" - ) - - if input_dropout_rate is not None: - normalized_features = tensor_dropout( - normalized_features, - input_dropout_rate, - is_training, - sparse_tensor=False, - ) - filled_feature_embed = get_dense_out( - normalized_features, - dense_emb_size, - activation=base_activation, - dense_type=input_dense_type, - ) - - if params.use_missing_sub_branch: - dense_embed = tf.concat( - [filled_feature_embed, missing_feature_embed], axis=1, name="merge_dense_emb" - ) - else: - dense_embed = filled_feature_embed - - with tf.variable_scope("sparse_branch"): - sparse_discrete_features = _sparse_feature_fixup( - features["sparse_no_continuous"], params.input_size_bits - ) - if input_dropout_rate is not None: - sparse_discrete_features = tensor_dropout( - sparse_discrete_features, input_dropout_rate, is_training, sparse_tensor=True - ) - - discrete_features_embed = full_sparse_layer(sparse_discrete_features, use_binary_values=True) - - if (input_dropout_rate is not None) and is_training: - discrete_features_embed = discrete_features_embed / (1 - input_dropout_rate) - - total_embed = tf.concat( - [dense_embed, discrete_features_embed], - axis=1, - name="total_embed", - ) - - total_embed = tf.layers.batch_normalization( - total_embed, - training=is_training, - renorm_momentum=decay, - momentum=decay, - renorm=is_training, - trainable=True, - ) - - # -------------------------------------------------------- - # MLP Layers - # -------------------------------------------------------- - with tf.variable_scope("MLP_branch"): - - assert params.num_mlp_layers >= 0 - embed_list = [total_embed] + [None for _ in range(params.num_mlp_layers)] - dense_types = [emb_dense_type] + [mlp_dense_type for _ in range(params.num_mlp_layers - 1)] - - for xl in range(1, params.num_mlp_layers + 1): - neurons = params.mlp_neuron_scale ** (params.num_mlp_layers + 1 - xl) - embed_list[xl] = get_dense_out( - embed_list[xl - 1], neurons, activation=base_activation, dense_type=dense_types[xl - 1] - ) - - if params.task_name in ["Sent", "HeavyRankPosition", "HeavyRankProbability"]: - logits = get_dense_out(embed_list[-1], 1, activation=None, dense_type=mlp_dense_type) - - else: - raise ValueError("Invalid Task Name !") - - output_dict = {"output": logits} - return output_dict diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/BUILD.bazel b/pushservice/src/main/scala/com/twitter/frigate/pushservice/BUILD.bazel deleted file mode 100644 index d53d4e251..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/BUILD.bazel +++ /dev/null @@ -1,337 +0,0 @@ -scala_library( - sources = ["**/*.scala"], - compiler_option_sets = ["fatal_warnings"], - strict_deps = True, - tags = [ - "bazel-compatible", - ], - dependencies = [ - "3rdparty/jvm/com/twitter/bijection:scrooge", - "3rdparty/jvm/com/twitter/storehaus:core", - "abdecider", - "abuse/detection/src/main/thrift/com/twitter/abuse/detection/scoring:thrift-scala", - "ann/src/main/scala/com/twitter/ann/common", - "ann/src/main/thrift/com/twitter/ann/common:ann-common-scala", - "audience-rewards/thrift/src/main/thrift:thrift-scala", - "communities/thrift/src/main/thrift/com/twitter/communities:thrift-scala", - "configapi/configapi-core", - "configapi/configapi-decider", - "content-mixer/thrift/src/main/thrift:thrift-scala", - "content-recommender/thrift/src/main/thrift:thrift-scala", - "copyselectionservice/server/src/main/scala/com/twitter/copyselectionservice/algorithms", - "copyselectionservice/thrift/src/main/thrift:copyselectionservice-scala", - "cortex-deepbird/thrift/src/main/thrift:thrift-java", - "cr-mixer/thrift/src/main/thrift:thrift-scala", - "cuad/projects/hashspace/thrift:thrift-scala", - "cuad/projects/tagspace/thrift/src/main/thrift:thrift-scala", - "detopic/thrift/src/main/thrift:thrift-scala", - "discovery-common/src/main/scala/com/twitter/discovery/common/configapi", - "discovery-common/src/main/scala/com/twitter/discovery/common/ddg", - "discovery-common/src/main/scala/com/twitter/discovery/common/environment", - "discovery-common/src/main/scala/com/twitter/discovery/common/fatigue", - "discovery-common/src/main/scala/com/twitter/discovery/common/nackwarmupfilter", - "discovery-common/src/main/scala/com/twitter/discovery/common/server", - "discovery-ds/src/main/thrift/com/twitter/dds/scio/searcher_aggregate_history_srp:searcher_aggregate_history_srp-scala", - "escherbird/src/scala/com/twitter/escherbird/util/metadatastitch", - "escherbird/src/scala/com/twitter/escherbird/util/uttclient", - "escherbird/src/thrift/com/twitter/escherbird/utt:strato-columns-scala", - "eventbus/client", - "eventdetection/event_context/src/main/scala/com/twitter/eventdetection/event_context/util", - "events-recos/events-recos-service/src/main/thrift:events-recos-thrift-scala", - "explore/explore-ranker/thrift/src/main/thrift:thrift-scala", - "featureswitches/featureswitches-core/src/main/scala", - "featureswitches/featureswitches-core/src/main/scala:dynmap", - "featureswitches/featureswitches-core/src/main/scala:recipient", - "featureswitches/featureswitches-core/src/main/scala:useragent", - "featureswitches/featureswitches-core/src/main/scala/com/twitter/featureswitches/v2/builder", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/authentication", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/server", - "finagle-internal/ostrich-stats", - "finagle/finagle-core/src/main", - "finagle/finagle-http/src/main/scala", - "finagle/finagle-memcached/src/main/scala", - "finagle/finagle-stats", - "finagle/finagle-thriftmux", - "finagle/finagle-tunable/src/main/scala", - "finagle/finagle-zipkin-scribe", - "finatra-internal/abdecider", - "finatra-internal/decider", - "finatra-internal/mtls-http/src/main/scala", - "finatra-internal/mtls-thriftmux/src/main/scala", - "finatra/http-client/src/main/scala", - "finatra/http-core/src/main/java/com/twitter/finatra/http", - "finatra/http-core/src/main/scala/com/twitter/finatra/http/response", - "finatra/http-server/src/main/scala/com/twitter/finatra/http", - "finatra/http-server/src/main/scala/com/twitter/finatra/http/filters", - "finatra/inject/inject-app/src/main/java/com/twitter/inject/annotations", - "finatra/inject/inject-app/src/main/scala", - "finatra/inject/inject-core/src/main/scala", - "finatra/inject/inject-server/src/main/scala", - "finatra/inject/inject-slf4j/src/main/scala/com/twitter/inject", - "finatra/inject/inject-thrift-client/src/main/scala", - "finatra/inject/inject-utils/src/main/scala", - "finatra/utils/src/main/java/com/twitter/finatra/annotations", - "fleets/fleets-proxy/thrift/src/main/thrift:fleet-scala", - "fleets/fleets-proxy/thrift/src/main/thrift/service:baseservice-scala", - "flock-client/src/main/scala", - "flock-client/src/main/thrift:thrift-scala", - "follow-recommendations-service/thrift/src/main/thrift:thrift-scala", - "frigate/frigate-common:base", - "frigate/frigate-common:config", - "frigate/frigate-common:debug", - "frigate/frigate-common:entity_graph_client", - "frigate/frigate-common:history", - "frigate/frigate-common:logger", - "frigate/frigate-common:ml-base", - "frigate/frigate-common:ml-feature", - "frigate/frigate-common:ml-prediction", - "frigate/frigate-common:ntab", - "frigate/frigate-common:predicate", - "frigate/frigate-common:rec_types", - "frigate/frigate-common:score_summary", - "frigate/frigate-common:util", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/candidate", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/experiments", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/filter", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/modules/store:semantic_core_stores", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/store", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/store/deviceinfo", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/store/interests", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/store/strato", - "frigate/push-mixer/thrift/src/main/thrift:thrift-scala", - "geo/geo-prediction/src/main/thrift:local-viral-tweets-thrift-scala", - "geoduck/service/src/main/scala/com/twitter/geoduck/service/common/clientmodules", - "geoduck/util/country", - "gizmoduck/client/src/main/scala/com/twitter/gizmoduck/testusers/client", - "hermit/hermit-core:model-user_state", - "hermit/hermit-core:predicate", - "hermit/hermit-core:predicate-gizmoduck", - "hermit/hermit-core:predicate-scarecrow", - "hermit/hermit-core:predicate-socialgraph", - "hermit/hermit-core:predicate-tweetypie", - "hermit/hermit-core:store-labeled_push_recs", - "hermit/hermit-core:store-metastore", - "hermit/hermit-core:store-timezone", - "hermit/hermit-core:store-tweetypie", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/constants", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/model", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/store", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/store/common", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/store/gizmoduck", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/store/scarecrow", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/store/semantic_core", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/store/user_htl_session_store", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/store/user_interest", - "hmli/hss/src/main/thrift/com/twitter/hss:thrift-scala", - "ibis2/service/src/main/scala/com/twitter/ibis2/lib", - "ibis2/service/src/main/thrift/com/twitter/ibis2/service:ibis2-service-scala", - "interests-service/thrift/src/main/thrift:thrift-scala", - "interests_discovery/thrift/src/main/thrift:batch-thrift-scala", - "interests_discovery/thrift/src/main/thrift:service-thrift-scala", - "kujaku/thrift/src/main/thrift:domain-scala", - "live-video-timeline/client/src/main/scala/com/twitter/livevideo/timeline/client/v2", - "live-video-timeline/domain/src/main/scala/com/twitter/livevideo/timeline/domain", - "live-video-timeline/domain/src/main/scala/com/twitter/livevideo/timeline/domain/v2", - "live-video-timeline/thrift/src/main/thrift/com/twitter/livevideo/timeline:thrift-scala", - "live-video/common/src/main/scala/com/twitter/livevideo/common/domain/v2", - "live-video/common/src/main/scala/com/twitter/livevideo/common/ids", - "notifications-platform/inbound-notifications/src/main/thrift/com/twitter/inbound_notifications:exception-scala", - "notifications-platform/inbound-notifications/src/main/thrift/com/twitter/inbound_notifications:thrift-scala", - "notifications-platform/platform-lib/src/main/thrift/com/twitter/notifications/platform:custom-notification-actions-scala", - "notifications-platform/platform-lib/src/main/thrift/com/twitter/notifications/platform:thrift-scala", - "notifications-relevance/src/scala/com/twitter/nrel/heavyranker", - "notifications-relevance/src/scala/com/twitter/nrel/hydration/base", - "notifications-relevance/src/scala/com/twitter/nrel/hydration/frigate", - "notifications-relevance/src/scala/com/twitter/nrel/hydration/push", - "notifications-relevance/src/scala/com/twitter/nrel/lightranker", - "notificationservice/common/src/main/scala/com/twitter/notificationservice/genericfeedbackstore", - "notificationservice/common/src/main/scala/com/twitter/notificationservice/model:alias", - "notificationservice/common/src/main/scala/com/twitter/notificationservice/model/service", - "notificationservice/common/src/test/scala/com/twitter/notificationservice/mocks", - "notificationservice/scribe/src/main/scala/com/twitter/notificationservice/scribe/manhattan:mh_wrapper", - "notificationservice/thrift/src/main/thrift/com/twitter/notificationservice/api:thrift-scala", - "notificationservice/thrift/src/main/thrift/com/twitter/notificationservice/badgecount-api:thrift-scala", - "notificationservice/thrift/src/main/thrift/com/twitter/notificationservice/generic_notifications:thrift-scala", - "notifinfra/ni-lib/src/main/scala/com/twitter/ni/lib/logged_out_transform", - "observability/observability-manhattan-client/src/main/scala", - "onboarding/service/src/main/scala/com/twitter/onboarding/task/service/models/external", - "onboarding/service/thrift/src/main/thrift:thrift-scala", - "people-discovery/api/thrift/src/main/thrift:thrift-scala", - "periscope/api-proxy-thrift/thrift/src/main/thrift:thrift-scala", - "product-mixer/core/src/main/scala/com/twitter/product_mixer/core/module", - "product-mixer/core/src/main/scala/com/twitter/product_mixer/core/module/stringcenter", - "product-mixer/core/src/main/thrift/com/twitter/product_mixer/core:thrift-scala", - "qig-ranker/thrift/src/main/thrift:thrift-scala", - "rux-ds/src/main/thrift/com/twitter/ruxds/jobs/user_past_aggregate:user_past_aggregate-scala", - "rux/common/src/main/scala/com/twitter/rux/common/encode", - "rux/common/thrift/src/main/thrift/rux-context:rux-context-scala", - "rux/common/thrift/src/main/thrift/strato:strato-scala", - "scribelib/marshallers/src/main/scala/com/twitter/scribelib/marshallers", - "scrooge/scrooge-core", - "scrooge/scrooge-serializer/src/main/scala", - "sensitive-ds/src/main/thrift/com/twitter/scio/nsfw_user_segmentation:nsfw_user_segmentation-scala", - "servo/decider/src/main/scala", - "servo/request/src/main/scala", - "servo/util/src/main/scala", - "src/java/com/twitter/ml/api:api-base", - "src/java/com/twitter/ml/prediction/core", - "src/scala/com/twitter/frigate/data_pipeline/common", - "src/scala/com/twitter/frigate/data_pipeline/embedding_cg:embedding_cg-test-user-ids", - "src/scala/com/twitter/frigate/data_pipeline/features_common", - "src/scala/com/twitter/frigate/news_article_recs/news_articles_metadata:thrift-scala", - "src/scala/com/twitter/frontpage/stream/util", - "src/scala/com/twitter/language/normalization", - "src/scala/com/twitter/ml/api/embedding", - "src/scala/com/twitter/ml/api/util:datarecord", - "src/scala/com/twitter/ml/featurestore/catalog/entities/core", - "src/scala/com/twitter/ml/featurestore/catalog/entities/magicrecs", - "src/scala/com/twitter/ml/featurestore/catalog/features/core:aggregate", - "src/scala/com/twitter/ml/featurestore/catalog/features/cuad:aggregate", - "src/scala/com/twitter/ml/featurestore/catalog/features/embeddings", - "src/scala/com/twitter/ml/featurestore/catalog/features/magicrecs:aggregate", - "src/scala/com/twitter/ml/featurestore/catalog/features/topic_signals:aggregate", - "src/scala/com/twitter/ml/featurestore/lib", - "src/scala/com/twitter/ml/featurestore/lib/data", - "src/scala/com/twitter/ml/featurestore/lib/dynamic", - "src/scala/com/twitter/ml/featurestore/lib/entity", - "src/scala/com/twitter/ml/featurestore/lib/online", - "src/scala/com/twitter/recommendation/interests/discovery/core/config", - "src/scala/com/twitter/recommendation/interests/discovery/core/deploy", - "src/scala/com/twitter/recommendation/interests/discovery/core/model", - "src/scala/com/twitter/recommendation/interests/discovery/popgeo/deploy", - "src/scala/com/twitter/simclusters_v2/common", - "src/scala/com/twitter/storehaus_internal/manhattan", - "src/scala/com/twitter/storehaus_internal/manhattan/config", - "src/scala/com/twitter/storehaus_internal/memcache", - "src/scala/com/twitter/storehaus_internal/memcache/config", - "src/scala/com/twitter/storehaus_internal/util", - "src/scala/com/twitter/taxi/common", - "src/scala/com/twitter/taxi/config", - "src/scala/com/twitter/taxi/deploy", - "src/scala/com/twitter/taxi/trending/common", - "src/thrift/com/twitter/ads/adserver:adserver_rpc-scala", - "src/thrift/com/twitter/clientapp/gen:clientapp-scala", - "src/thrift/com/twitter/core_workflows/user_model:user_model-scala", - "src/thrift/com/twitter/escherbird/common:constants-scala", - "src/thrift/com/twitter/escherbird/metadata:megadata-scala", - "src/thrift/com/twitter/escherbird/metadata:metadata-service-scala", - "src/thrift/com/twitter/escherbird/search:search-service-scala", - "src/thrift/com/twitter/expandodo:only-scala", - "src/thrift/com/twitter/frigate:frigate-common-thrift-scala", - "src/thrift/com/twitter/frigate:frigate-ml-thrift-scala", - "src/thrift/com/twitter/frigate:frigate-notification-thrift-scala", - "src/thrift/com/twitter/frigate:frigate-secondary-accounts-thrift-scala", - "src/thrift/com/twitter/frigate:frigate-thrift-scala", - "src/thrift/com/twitter/frigate:frigate-user-media-representation-thrift-scala", - "src/thrift/com/twitter/frigate/data_pipeline:frigate-user-history-thrift-scala", - "src/thrift/com/twitter/frigate/dau_model:frigate-dau-thrift-scala", - "src/thrift/com/twitter/frigate/magic_events:frigate-magic-events-thrift-scala", - "src/thrift/com/twitter/frigate/magic_events/scribe:thrift-scala", - "src/thrift/com/twitter/frigate/pushcap:frigate-pushcap-thrift-scala", - "src/thrift/com/twitter/frigate/pushservice:frigate-pushservice-thrift-scala", - "src/thrift/com/twitter/frigate/scribe:frigate-scribe-thrift-scala", - "src/thrift/com/twitter/frigate/subscribed_search:frigate-subscribed-search-thrift-scala", - "src/thrift/com/twitter/frigate/user_states:frigate-userstates-thrift-scala", - "src/thrift/com/twitter/geoduck:geoduck-scala", - "src/thrift/com/twitter/gizmoduck:thrift-scala", - "src/thrift/com/twitter/gizmoduck:user-thrift-scala", - "src/thrift/com/twitter/hermit:hermit-scala", - "src/thrift/com/twitter/hermit/pop_geo:hermit-pop-geo-scala", - "src/thrift/com/twitter/hermit/stp:hermit-stp-scala", - "src/thrift/com/twitter/ibis:service-scala", - "src/thrift/com/twitter/manhattan:v1-scala", - "src/thrift/com/twitter/manhattan:v2-scala", - "src/thrift/com/twitter/ml/api:data-java", - "src/thrift/com/twitter/ml/api:data-scala", - "src/thrift/com/twitter/ml/featurestore/timelines:ml-features-timelines-scala", - "src/thrift/com/twitter/ml/featurestore/timelines:ml-features-timelines-strato", - "src/thrift/com/twitter/ml/prediction_service:prediction_service-java", - "src/thrift/com/twitter/permissions_storage:thrift-scala", - "src/thrift/com/twitter/pink-floyd/thrift:thrift-scala", - "src/thrift/com/twitter/recos:recos-common-scala", - "src/thrift/com/twitter/recos/user_tweet_entity_graph:user_tweet_entity_graph-scala", - "src/thrift/com/twitter/recos/user_user_graph:user_user_graph-scala", - "src/thrift/com/twitter/relevance/feature_store:feature_store-scala", - "src/thrift/com/twitter/search:earlybird-scala", - "src/thrift/com/twitter/search/common:features-scala", - "src/thrift/com/twitter/search/query_interaction_graph:query_interaction_graph-scala", - "src/thrift/com/twitter/search/query_interaction_graph/service:qig-service-scala", - "src/thrift/com/twitter/service/metastore/gen:thrift-scala", - "src/thrift/com/twitter/service/scarecrow/gen:scarecrow-scala", - "src/thrift/com/twitter/service/scarecrow/gen:tiered-actions-scala", - "src/thrift/com/twitter/simclusters_v2:simclusters_v2-thrift-scala", - "src/thrift/com/twitter/socialgraph:thrift-scala", - "src/thrift/com/twitter/spam/rtf:safety-level-scala", - "src/thrift/com/twitter/timelinemixer:thrift-scala", - "src/thrift/com/twitter/timelinemixer/server/internal:thrift-scala", - "src/thrift/com/twitter/timelines/author_features/user_health:thrift-scala", - "src/thrift/com/twitter/timelines/real_graph:real_graph-scala", - "src/thrift/com/twitter/timelinescorer:thrift-scala", - "src/thrift/com/twitter/timelinescorer/server/internal:thrift-scala", - "src/thrift/com/twitter/timelineservice/server/internal:thrift-scala", - "src/thrift/com/twitter/timelineservice/server/suggests/logging:thrift-scala", - "src/thrift/com/twitter/trends/common:common-scala", - "src/thrift/com/twitter/trends/trip_v1:trip-tweets-thrift-scala", - "src/thrift/com/twitter/tweetypie:service-scala", - "src/thrift/com/twitter/tweetypie:tweet-scala", - "src/thrift/com/twitter/user_session_store:thrift-scala", - "src/thrift/com/twitter/wtf/candidate:wtf-candidate-scala", - "src/thrift/com/twitter/wtf/interest:interest-thrift-scala", - "src/thrift/com/twitter/wtf/scalding/common:thrift-scala", - "stitch/stitch-core", - "stitch/stitch-gizmoduck", - "stitch/stitch-socialgraph/src/main/scala", - "stitch/stitch-storehaus/src/main/scala", - "stitch/stitch-tweetypie/src/main/scala", - "storage/clients/manhattan/client/src/main/scala", - "strato/config/columns/clients:clients-strato-client", - "strato/config/columns/geo/user:user-strato-client", - "strato/config/columns/globe/curation:curation-strato-client", - "strato/config/columns/interests:interests-strato-client", - "strato/config/columns/ml/featureStore:featureStore-strato-client", - "strato/config/columns/notifications:notifications-strato-client", - "strato/config/columns/notifinfra:notifinfra-strato-client", - "strato/config/columns/periscope:periscope-strato-client", - "strato/config/columns/rux", - "strato/config/columns/rux:rux-strato-client", - "strato/config/columns/rux/open-app:open-app-strato-client", - "strato/config/columns/socialgraph/graphs:graphs-strato-client", - "strato/config/columns/socialgraph/service/soft_users:soft_users-strato-client", - "strato/config/columns/translation/service:service-strato-client", - "strato/config/columns/translation/service/platform:platform-strato-client", - "strato/config/columns/trends/trip:trip-strato-client", - "strato/config/src/thrift/com/twitter/strato/columns/frigate:logged-out-web-notifications-scala", - "strato/config/src/thrift/com/twitter/strato/columns/notifications:thrift-scala", - "strato/src/main/scala/com/twitter/strato/config", - "strato/src/main/scala/com/twitter/strato/response", - "thrift-web-forms", - "timeline-training-service/service/thrift/src/main/thrift:thrift-scala", - "timelines/src/main/scala/com/twitter/timelines/features/app", - "topic-social-proof/server/src/main/thrift:thrift-scala", - "topiclisting/topiclisting-core/src/main/scala/com/twitter/topiclisting", - "topiclisting/topiclisting-utt/src/main/scala/com/twitter/topiclisting/utt", - "trends/common/src/main/thrift/com/twitter/trends/common:thrift-scala", - "tweetypie/src/scala/com/twitter/tweetypie/tweettext", - "twitter-context/src/main/scala", - "twitter-server-internal", - "twitter-server/server/src/main/scala", - "twitter-text/lib/java/src/main/java/com/twitter/twittertext", - "twml/runtime/src/main/scala/com/twitter/deepbird/runtime/prediction_engine:prediction_engine_mkl", - "ubs/common/src/main/thrift/com/twitter/ubs:broadcast-thrift-scala", - "ubs/common/src/main/thrift/com/twitter/ubs:seller_application-thrift-scala", - "user_session_store/src/main/scala/com/twitter/user_session_store/impl/manhattan/readwrite", - "util-internal/scribe", - "util-internal/tunable/src/main/scala/com/twitter/util/tunable", - "util/util-app", - "util/util-hashing/src/main/scala", - "util/util-slf4j-api/src/main/scala", - "util/util-stats/src/main/scala", - "visibility/lib/src/main/scala/com/twitter/visibility/builder", - "visibility/lib/src/main/scala/com/twitter/visibility/interfaces/push_service", - "visibility/lib/src/main/scala/com/twitter/visibility/interfaces/spaces", - "visibility/lib/src/main/scala/com/twitter/visibility/util", - ], - exports = [ - "strato/config/src/thrift/com/twitter/strato/columns/frigate:logged-out-web-notifications-scala", - ], -) diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/BUILD.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..79274f47b68319b4f74e1a2d8c1a82e7a24eacdc GIT binary patch literal 40395 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/PushMixerThriftServerWarmupHandler.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/PushMixerThriftServerWarmupHandler.scala deleted file mode 100644 index b13d3b093..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/PushMixerThriftServerWarmupHandler.scala +++ /dev/null @@ -1,93 +0,0 @@ -package com.twitter.frigate.pushservice - -import com.google.inject.Inject -import com.google.inject.Singleton -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.thrift.ClientId -import com.twitter.finatra.thrift.routing.ThriftWarmup -import com.twitter.util.logging.Logging -import com.twitter.inject.utils.Handler -import com.twitter.frigate.pushservice.{thriftscala => t} -import com.twitter.frigate.thriftscala.NotificationDisplayLocation -import com.twitter.util.Stopwatch -import com.twitter.scrooge.Request -import com.twitter.scrooge.Response -import com.twitter.util.Return -import com.twitter.util.Throw -import com.twitter.util.Try - -/** - * Warms up the refresh request path. - * If service is running as pushservice-send then the warmup does nothing. - * - * When making the warmup refresh requests we - * - Set skipFilters to true to execute as much of the request path as possible - * - Set darkWrite to true to prevent sending a push - */ -@Singleton -class PushMixerThriftServerWarmupHandler @Inject() ( - warmup: ThriftWarmup, - serviceIdentifier: ServiceIdentifier) - extends Handler - with Logging { - - private val clientId = ClientId("thrift-warmup-client") - - def handle(): Unit = { - val refreshServices = Set( - "frigate-pushservice", - "frigate-pushservice-canary", - "frigate-pushservice-canary-control", - "frigate-pushservice-canary-treatment" - ) - val isRefresh = refreshServices.contains(serviceIdentifier.service) - if (isRefresh && !serviceIdentifier.isLocal) refreshWarmup() - } - - def refreshWarmup(): Unit = { - val elapsed = Stopwatch.start() - val testIds = Seq( - 1, - 2, - 3 - ) - try { - clientId.asCurrent { - testIds.foreach { id => - val warmupReq = warmupQuery(id) - info(s"Sending warm-up request to service with query: $warmupReq") - warmup.sendRequest( - method = t.PushService.Refresh, - req = Request(t.PushService.Refresh.Args(warmupReq)))(assertWarmupResponse) - } - } - } catch { - case e: Throwable => - error(e.getMessage, e) - } - info(s"Warm up complete. Time taken: ${elapsed().toString}") - } - - private def warmupQuery(userId: Long): t.RefreshRequest = { - t.RefreshRequest( - userId = userId, - notificationDisplayLocation = NotificationDisplayLocation.PushToMobileDevice, - context = Some( - t.PushContext( - skipFilters = Some(true), - darkWrite = Some(true) - )) - ) - } - - private def assertWarmupResponse( - result: Try[Response[t.PushService.Refresh.SuccessType]] - ): Unit = { - result match { - case Return(_) => // ok - case Throw(exception) => - warn("Error performing warm-up request.") - error(exception.getMessage, exception) - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/PushServiceMain.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/PushServiceMain.docx new file mode 100644 index 0000000000000000000000000000000000000000..61d0bc06bc53d7e5df7e5f6293782750bbb7709f GIT binary patch literal 38158 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 ABLDyZ literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/PushServiceMain.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/PushServiceMain.scala deleted file mode 100644 index c60f6e352..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/PushServiceMain.scala +++ /dev/null @@ -1,193 +0,0 @@ -package com.twitter.frigate.pushservice - -import com.twitter.discovery.common.environment.modules.EnvironmentModule -import com.twitter.finagle.Filter -import com.twitter.finatra.annotations.DarkTrafficFilterType -import com.twitter.finatra.decider.modules.DeciderModule -import com.twitter.finatra.http.HttpServer -import com.twitter.finatra.http.filters.CommonFilters -import com.twitter.finatra.http.routing.HttpRouter -import com.twitter.finatra.mtls.http.{Mtls => HttpMtls} -import com.twitter.finatra.mtls.thriftmux.{Mtls => ThriftMtls} -import com.twitter.finatra.mtls.thriftmux.filters.MtlsServerSessionTrackerFilter -import com.twitter.finatra.thrift.ThriftServer -import com.twitter.finatra.thrift.filters.ExceptionMappingFilter -import com.twitter.finatra.thrift.filters.LoggingMDCFilter -import com.twitter.finatra.thrift.filters.StatsFilter -import com.twitter.finatra.thrift.filters.ThriftMDCFilter -import com.twitter.finatra.thrift.filters.TraceIdMDCFilter -import com.twitter.finatra.thrift.routing.ThriftRouter -import com.twitter.frigate.common.logger.MRLoggerGlobalVariables -import com.twitter.frigate.pushservice.controller.PushServiceController -import com.twitter.frigate.pushservice.module._ -import com.twitter.inject.TwitterModule -import com.twitter.inject.annotations.Flags -import com.twitter.inject.thrift.modules.ThriftClientIdModule -import com.twitter.logging.BareFormatter -import com.twitter.logging.Level -import com.twitter.logging.LoggerFactory -import com.twitter.logging.{Logging => JLogging} -import com.twitter.logging.QueueingHandler -import com.twitter.logging.ScribeHandler -import com.twitter.product_mixer.core.module.product_mixer_flags.ProductMixerFlagModule -import com.twitter.product_mixer.core.module.ABDeciderModule -import com.twitter.product_mixer.core.module.FeatureSwitchesModule -import com.twitter.product_mixer.core.module.StratoClientModule - -object PushServiceMain extends PushServiceFinatraServer - -class PushServiceFinatraServer - extends ThriftServer - with ThriftMtls - with HttpServer - with HttpMtls - with JLogging { - - override val name = "PushService" - - override val modules: Seq[TwitterModule] = { - Seq( - ABDeciderModule, - DeciderModule, - FeatureSwitchesModule, - FilterModule, - FlagModule, - EnvironmentModule, - ThriftClientIdModule, - DeployConfigModule, - ProductMixerFlagModule, - StratoClientModule, - PushHandlerModule, - PushTargetUserBuilderModule, - PushServiceDarkTrafficModule, - LoggedOutPushTargetUserBuilderModule, - new ThriftWebFormsModule(this), - ) - } - - override def configureThrift(router: ThriftRouter): Unit = { - router - .filter[ExceptionMappingFilter] - .filter[LoggingMDCFilter] - .filter[TraceIdMDCFilter] - .filter[ThriftMDCFilter] - .filter[MtlsServerSessionTrackerFilter] - .filter[StatsFilter] - .filter[Filter.TypeAgnostic, DarkTrafficFilterType] - .add[PushServiceController] - } - - override def configureHttp(router: HttpRouter): Unit = - router - .filter[CommonFilters] - - override protected def start(): Unit = { - MRLoggerGlobalVariables.setRequiredFlags( - traceLogFlag = injector.instance[Boolean](Flags.named(FlagModule.mrLoggerIsTraceAll.name)), - nthLogFlag = injector.instance[Boolean](Flags.named(FlagModule.mrLoggerNthLog.name)), - nthLogValFlag = injector.instance[Long](Flags.named(FlagModule.mrLoggerNthVal.name)) - ) - } - - override protected def warmup(): Unit = { - handle[PushMixerThriftServerWarmupHandler]() - } - - override protected def configureLoggerFactories(): Unit = { - loggerFactories.foreach { _() } - } - - override def loggerFactories: List[LoggerFactory] = { - val scribeScope = statsReceiver.scope("scribe") - List( - LoggerFactory( - level = Some(levelFlag()), - handlers = handlers - ), - LoggerFactory( - node = "request_scribe", - level = Some(Level.INFO), - useParents = false, - handlers = QueueingHandler( - maxQueueSize = 10000, - handler = ScribeHandler( - category = "frigate_pushservice_log", - formatter = BareFormatter, - statsReceiver = scribeScope.scope("frigate_pushservice_log") - ) - ) :: Nil - ), - LoggerFactory( - node = "notification_scribe", - level = Some(Level.INFO), - useParents = false, - handlers = QueueingHandler( - maxQueueSize = 10000, - handler = ScribeHandler( - category = "frigate_notifier", - formatter = BareFormatter, - statsReceiver = scribeScope.scope("frigate_notifier") - ) - ) :: Nil - ), - LoggerFactory( - node = "push_scribe", - level = Some(Level.INFO), - useParents = false, - handlers = QueueingHandler( - maxQueueSize = 10000, - handler = ScribeHandler( - category = "test_frigate_push", - formatter = BareFormatter, - statsReceiver = scribeScope.scope("test_frigate_push") - ) - ) :: Nil - ), - LoggerFactory( - node = "push_subsample_scribe", - level = Some(Level.INFO), - useParents = false, - handlers = QueueingHandler( - maxQueueSize = 2500, - handler = ScribeHandler( - category = "magicrecs_candidates_subsample_scribe", - maxMessagesPerTransaction = 250, - maxMessagesToBuffer = 2500, - formatter = BareFormatter, - statsReceiver = scribeScope.scope("magicrecs_candidates_subsample_scribe") - ) - ) :: Nil - ), - LoggerFactory( - node = "mr_request_scribe", - level = Some(Level.INFO), - useParents = false, - handlers = QueueingHandler( - maxQueueSize = 2500, - handler = ScribeHandler( - category = "mr_request_scribe", - maxMessagesPerTransaction = 250, - maxMessagesToBuffer = 2500, - formatter = BareFormatter, - statsReceiver = scribeScope.scope("mr_request_scribe") - ) - ) :: Nil - ), - LoggerFactory( - node = "high_quality_candidates_scribe", - level = Some(Level.INFO), - useParents = false, - handlers = QueueingHandler( - maxQueueSize = 2500, - handler = ScribeHandler( - category = "frigate_high_quality_candidates_log", - maxMessagesPerTransaction = 250, - maxMessagesToBuffer = 2500, - formatter = BareFormatter, - statsReceiver = scribeScope.scope("high_quality_candidates_scribe") - ) - ) :: Nil - ), - ) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ContentRecommenderMixerAdaptor.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ContentRecommenderMixerAdaptor.docx new file mode 100644 index 0000000000000000000000000000000000000000..90a7169965835accd1ea03a355f996b58c50f389 GIT binary patch literal 39938 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 YszZG(3Sb8PnpKP-D`0xWr2hK%KizBL(f|Me literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ContentRecommenderMixerAdaptor.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ContentRecommenderMixerAdaptor.scala deleted file mode 100644 index 946923fb9..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ContentRecommenderMixerAdaptor.scala +++ /dev/null @@ -1,323 +0,0 @@ -package com.twitter.frigate.pushservice.adaptor - -import com.twitter.contentrecommender.thriftscala.MetricTag -import com.twitter.cr_mixer.thriftscala.CrMixerTweetRequest -import com.twitter.cr_mixer.thriftscala.NotificationsContext -import com.twitter.cr_mixer.thriftscala.Product -import com.twitter.cr_mixer.thriftscala.ProductContext -import com.twitter.cr_mixer.thriftscala.{MetricTag => CrMixerMetricTag} -import com.twitter.finagle.stats.Stat -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.AlgorithmScore -import com.twitter.frigate.common.base.CandidateSource -import com.twitter.frigate.common.base.CandidateSourceEligible -import com.twitter.frigate.common.base.CrMixerCandidate -import com.twitter.frigate.common.base.TopicCandidate -import com.twitter.frigate.common.base.TopicProofTweetCandidate -import com.twitter.frigate.common.base.TweetCandidate -import com.twitter.frigate.common.predicate.CommonOutNetworkTweetCandidatesSourcePredicates.filterOutInNetworkTweets -import com.twitter.frigate.common.predicate.CommonOutNetworkTweetCandidatesSourcePredicates.filterOutReplyTweet -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.params.PushParams -import com.twitter.frigate.pushservice.store.CrMixerTweetStore -import com.twitter.frigate.pushservice.store.UttEntityHydrationStore -import com.twitter.frigate.pushservice.util.AdaptorUtils -import com.twitter.frigate.pushservice.util.PushDeviceUtil -import com.twitter.frigate.pushservice.util.TopicsUtil -import com.twitter.frigate.pushservice.util.TweetWithTopicProof -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.hermit.predicate.socialgraph.RelationEdge -import com.twitter.product_mixer.core.thriftscala.ClientContext -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storehaus.ReadableStore -import com.twitter.topiclisting.utt.LocalizedEntity -import com.twitter.tsp.thriftscala.TopicSocialProofRequest -import com.twitter.tsp.thriftscala.TopicSocialProofResponse -import com.twitter.util.Future -import scala.collection.Map - -case class ContentRecommenderMixerAdaptor( - crMixerTweetStore: CrMixerTweetStore, - tweetyPieStore: ReadableStore[Long, TweetyPieResult], - edgeStore: ReadableStore[RelationEdge, Boolean], - topicSocialProofServiceStore: ReadableStore[TopicSocialProofRequest, TopicSocialProofResponse], - uttEntityHydrationStore: UttEntityHydrationStore, - globalStats: StatsReceiver) - extends CandidateSource[Target, RawCandidate] - with CandidateSourceEligible[Target, RawCandidate] { - - override val name: String = this.getClass.getSimpleName - - private[this] val stats = globalStats.scope("ContentRecommenderMixerAdaptor") - private[this] val numOfValidAuthors = stats.stat("num_of_valid_authors") - private[this] val numOutOfMaximumDropped = stats.stat("dropped_due_out_of_maximum") - private[this] val totalInputRecs = stats.counter("input_recs") - private[this] val totalOutputRecs = stats.stat("output_recs") - private[this] val totalRequests = stats.counter("total_requests") - private[this] val nonReplyTweetsCounter = stats.counter("non_reply_tweets") - private[this] val totalOutNetworkRecs = stats.counter("out_network_tweets") - private[this] val totalInNetworkRecs = stats.counter("in_network_tweets") - - /** - * Builds OON raw candidates based on input OON Tweets - */ - def buildOONRawCandidates( - inputTarget: Target, - oonTweets: Seq[TweetyPieResult], - tweetScoreMap: Map[Long, Double], - tweetIdToTagsMap: Map[Long, Seq[CrMixerMetricTag]], - maxNumOfCandidates: Int - ): Option[Seq[RawCandidate]] = { - val cands = oonTweets.flatMap { tweetResult => - val tweetId = tweetResult.tweet.id - generateOONRawCandidate( - inputTarget, - tweetId, - Some(tweetResult), - tweetScoreMap, - tweetIdToTagsMap - ) - } - - val candidates = restrict( - maxNumOfCandidates, - cands, - numOutOfMaximumDropped, - totalOutputRecs - ) - - Some(candidates) - } - - /** - * Builds a single RawCandidate With TopicProofTweetCandidate - */ - def buildTopicTweetRawCandidate( - inputTarget: Target, - tweetWithTopicProof: TweetWithTopicProof, - localizedEntity: LocalizedEntity, - tags: Option[Seq[MetricTag]], - ): RawCandidate with TopicProofTweetCandidate = { - new RawCandidate with TopicProofTweetCandidate { - override def target: Target = inputTarget - override def topicListingSetting: Option[String] = Some( - tweetWithTopicProof.topicListingSetting) - override def tweetId: Long = tweetWithTopicProof.tweetId - override def tweetyPieResult: Option[TweetyPieResult] = Some( - tweetWithTopicProof.tweetyPieResult) - override def semanticCoreEntityId: Option[Long] = Some(tweetWithTopicProof.topicId) - override def localizedUttEntity: Option[LocalizedEntity] = Some(localizedEntity) - override def algorithmCR: Option[String] = tweetWithTopicProof.algorithmCR - override def tagsCR: Option[Seq[MetricTag]] = tags - override def isOutOfNetwork: Boolean = tweetWithTopicProof.isOON - } - } - - /** - * Takes a group of TopicTweets and transforms them into RawCandidates - */ - def buildTopicTweetRawCandidates( - inputTarget: Target, - topicProofCandidates: Seq[TweetWithTopicProof], - tweetIdToTagsMap: Map[Long, Seq[CrMixerMetricTag]], - maxNumberOfCands: Int - ): Future[Option[Seq[RawCandidate]]] = { - val semanticCoreEntityIds = topicProofCandidates - .map(_.topicId) - .toSet - - TopicsUtil - .getLocalizedEntityMap(inputTarget, semanticCoreEntityIds, uttEntityHydrationStore) - .map { localizedEntityMap => - val rawCandidates = topicProofCandidates.collect { - case topicSocialProof: TweetWithTopicProof - if localizedEntityMap.contains(topicSocialProof.topicId) => - // Once we deprecate CR calls, we should replace this code to use the CrMixerMetricTag - val tags = tweetIdToTagsMap.get(topicSocialProof.tweetId).map { - _.flatMap { tag => MetricTag.get(tag.value) } - } - buildTopicTweetRawCandidate( - inputTarget, - topicSocialProof, - localizedEntityMap(topicSocialProof.topicId), - tags - ) - } - - val candResult = restrict( - maxNumberOfCands, - rawCandidates, - numOutOfMaximumDropped, - totalOutputRecs - ) - - Some(candResult) - } - } - - private def generateOONRawCandidate( - inputTarget: Target, - id: Long, - result: Option[TweetyPieResult], - tweetScoreMap: Map[Long, Double], - tweetIdToTagsMap: Map[Long, Seq[CrMixerMetricTag]] - ): Option[RawCandidate with TweetCandidate] = { - val tagsFromCR = tweetIdToTagsMap.get(id).map { _.flatMap { tag => MetricTag.get(tag.value) } } - val candidate = new RawCandidate with CrMixerCandidate with TopicCandidate with AlgorithmScore { - override val tweetId = id - override val target = inputTarget - override val tweetyPieResult = result - override val localizedUttEntity = None - override val semanticCoreEntityId = None - override def commonRecType = - getMediaBasedCRT( - CommonRecommendationType.TwistlyTweet, - CommonRecommendationType.TwistlyPhoto, - CommonRecommendationType.TwistlyVideo) - override def tagsCR = tagsFromCR - override def algorithmScore = tweetScoreMap.get(id) - override def algorithmCR = None - } - Some(candidate) - } - - private def restrict( - maxNumToReturn: Int, - candidates: Seq[RawCandidate], - numOutOfMaximumDropped: Stat, - totalOutputRecs: Stat - ): Seq[RawCandidate] = { - val newCandidates = candidates.take(maxNumToReturn) - val numDropped = candidates.length - newCandidates.length - numOutOfMaximumDropped.add(numDropped) - totalOutputRecs.add(newCandidates.size) - newCandidates - } - - private def buildCrMixerRequest( - target: Target, - countryCode: Option[String], - language: Option[String], - seenTweets: Seq[Long] - ): CrMixerTweetRequest = { - CrMixerTweetRequest( - clientContext = ClientContext( - userId = Some(target.targetId), - countryCode = countryCode, - languageCode = language - ), - product = Product.Notifications, - productContext = Some(ProductContext.NotificationsContext(NotificationsContext())), - excludedTweetIds = Some(seenTweets) - ) - } - - private def selectCandidatesToSendBasedOnSettings( - isRecommendationsEligible: Boolean, - isTopicsEligible: Boolean, - oonRawCandidates: Option[Seq[RawCandidate]], - topicTweetCandidates: Option[Seq[RawCandidate]] - ): Option[Seq[RawCandidate]] = { - if (isRecommendationsEligible && isTopicsEligible) { - Some(topicTweetCandidates.getOrElse(Seq.empty) ++ oonRawCandidates.getOrElse(Seq.empty)) - } else if (isRecommendationsEligible) { - oonRawCandidates - } else if (isTopicsEligible) { - topicTweetCandidates - } else None - } - - override def get(target: Target): Future[Option[Seq[RawCandidate]]] = { - Future - .join( - target.seenTweetIds, - target.countryCode, - target.inferredUserDeviceLanguage, - PushDeviceUtil.isTopicsEligible(target), - PushDeviceUtil.isRecommendationsEligible(target) - ).flatMap { - case (seenTweets, countryCode, language, isTopicsEligible, isRecommendationsEligible) => - val request = buildCrMixerRequest(target, countryCode, language, seenTweets) - crMixerTweetStore.getTweetRecommendations(request).flatMap { - case Some(response) => - totalInputRecs.incr(response.tweets.size) - totalRequests.incr() - AdaptorUtils - .getTweetyPieResults( - response.tweets.map(_.tweetId).toSet, - tweetyPieStore).flatMap { tweetyPieResultMap => - filterOutInNetworkTweets( - target, - filterOutReplyTweet(tweetyPieResultMap.toMap, nonReplyTweetsCounter), - edgeStore, - numOfValidAuthors).flatMap { - outNetworkTweetsWithId: Seq[(Long, TweetyPieResult)] => - totalOutNetworkRecs.incr(outNetworkTweetsWithId.size) - totalInNetworkRecs.incr(response.tweets.size - outNetworkTweetsWithId.size) - val outNetworkTweets: Seq[TweetyPieResult] = outNetworkTweetsWithId.map { - case (_, tweetyPieResult) => tweetyPieResult - } - - val tweetIdToTagsMap = response.tweets.map { tweet => - tweet.tweetId -> tweet.metricTags.getOrElse(Seq.empty) - }.toMap - - val tweetScoreMap = response.tweets.map { tweet => - tweet.tweetId -> tweet.score - }.toMap - - val maxNumOfCandidates = - target.params(PushFeatureSwitchParams.NumberOfMaxCrMixerCandidatesParam) - - val oonRawCandidates = - buildOONRawCandidates( - target, - outNetworkTweets, - tweetScoreMap, - tweetIdToTagsMap, - maxNumOfCandidates) - - TopicsUtil - .getTopicSocialProofs( - target, - outNetworkTweets, - topicSocialProofServiceStore, - edgeStore, - PushFeatureSwitchParams.TopicProofTweetCandidatesTopicScoreThreshold).flatMap { - tweetsWithTopicProof => - buildTopicTweetRawCandidates( - target, - tweetsWithTopicProof, - tweetIdToTagsMap, - maxNumOfCandidates) - }.map { topicTweetCandidates => - selectCandidatesToSendBasedOnSettings( - isRecommendationsEligible, - isTopicsEligible, - oonRawCandidates, - topicTweetCandidates) - } - } - } - case _ => Future.None - } - } - } - - /** - * For a user to be available the following news to happen - */ - override def isCandidateSourceAvailable(target: Target): Future[Boolean] = { - Future - .join( - PushDeviceUtil.isRecommendationsEligible(target), - PushDeviceUtil.isTopicsEligible(target) - ).map { - case (isRecommendationsEligible, isTopicsEligible) => - (isRecommendationsEligible || isTopicsEligible) && - target.params(PushParams.ContentRecommenderMixerAdaptorDecider) - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/EarlyBirdFirstDegreeCandidateAdaptor.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/EarlyBirdFirstDegreeCandidateAdaptor.docx new file mode 100644 index 0000000000000000000000000000000000000000..26751076b996bcb095b9270e2c25f1cb584e0378 GIT binary patch literal 39590 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/EarlyBirdFirstDegreeCandidateAdaptor.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/EarlyBirdFirstDegreeCandidateAdaptor.scala deleted file mode 100644 index ab631841a..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/EarlyBirdFirstDegreeCandidateAdaptor.scala +++ /dev/null @@ -1,293 +0,0 @@ -package com.twitter.frigate.pushservice.adaptor - -import com.twitter.finagle.stats.Stat -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.candidate._ -import com.twitter.frigate.common.predicate.CommonOutNetworkTweetCandidatesSourcePredicates.filterOutReplyTweet -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.params.PushParams -import com.twitter.frigate.pushservice.util.PushDeviceUtil -import com.twitter.hermit.store.tweetypie.UserTweet -import com.twitter.recos.recos_common.thriftscala.SocialProofType -import com.twitter.search.common.features.thriftscala.ThriftSearchResultFeatures -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storehaus.ReadableStore -import com.twitter.timelines.configapi.Param -import com.twitter.util.Future -import com.twitter.util.Time -import scala.collection.Map - -case class EarlyBirdFirstDegreeCandidateAdaptor( - earlyBirdFirstDegreeCandidates: CandidateSource[ - EarlybirdCandidateSource.Query, - EarlybirdCandidate - ], - tweetyPieStore: ReadableStore[Long, TweetyPieResult], - tweetyPieStoreNoVF: ReadableStore[Long, TweetyPieResult], - userTweetTweetyPieStore: ReadableStore[UserTweet, TweetyPieResult], - maxResultsParam: Param[Int], - globalStats: StatsReceiver) - extends CandidateSource[Target, RawCandidate] - with CandidateSourceEligible[Target, RawCandidate] { - - type EBCandidate = EarlybirdCandidate with TweetDetails - private val stats = globalStats.scope("EarlyBirdFirstDegreeAdaptor") - private val earlyBirdCandsStat: Stat = stats.stat("early_bird_cands_dist") - private val emptyEarlyBirdCands = stats.counter("empty_early_bird_candidates") - private val seedSetEmpty = stats.counter("empty_seedset") - private val seenTweetsStat = stats.stat("filtered_by_seen_tweets") - private val emptyTweetyPieResult = stats.stat("empty_tweetypie_result") - private val nonReplyTweetsCounter = stats.counter("non_reply_tweets") - private val enableRetweets = stats.counter("enable_retweets") - private val f1withoutSocialContexts = stats.counter("f1_without_social_context") - private val userTweetTweetyPieStoreCounter = stats.counter("user_tweet_tweetypie_store") - - override val name: String = earlyBirdFirstDegreeCandidates.name - - private def getAllSocialContextActions( - socialProofTypes: Seq[(SocialProofType, Seq[Long])] - ): Seq[SocialContextAction] = { - socialProofTypes.flatMap { - case (SocialProofType.Favorite, scIds) => - scIds.map { scId => - SocialContextAction( - scId, - Time.now.inMilliseconds, - socialContextActionType = Some(SocialContextActionType.Favorite) - ) - } - case (SocialProofType.Retweet, scIds) => - scIds.map { scId => - SocialContextAction( - scId, - Time.now.inMilliseconds, - socialContextActionType = Some(SocialContextActionType.Retweet) - ) - } - case (SocialProofType.Reply, scIds) => - scIds.map { scId => - SocialContextAction( - scId, - Time.now.inMilliseconds, - socialContextActionType = Some(SocialContextActionType.Reply) - ) - } - case (SocialProofType.Tweet, scIds) => - scIds.map { scId => - SocialContextAction( - scId, - Time.now.inMilliseconds, - socialContextActionType = Some(SocialContextActionType.Tweet) - ) - } - case _ => Nil - } - } - - private def generateRetweetCandidate( - inputTarget: Target, - candidate: EBCandidate, - scIds: Seq[Long], - socialProofTypes: Seq[(SocialProofType, Seq[Long])] - ): RawCandidate = { - val scActions = scIds.map { scId => SocialContextAction(scId, Time.now.inMilliseconds) } - new RawCandidate with TweetRetweetCandidate with EarlybirdTweetFeatures { - override val socialContextActions = scActions - override val socialContextAllTypeActions = getAllSocialContextActions(socialProofTypes) - override val tweetId = candidate.tweetId - override val target = inputTarget - override val tweetyPieResult = candidate.tweetyPieResult - override val features = candidate.features - } - } - - private def generateF1CandidateWithoutSocialContext( - inputTarget: Target, - candidate: EBCandidate - ): RawCandidate = { - f1withoutSocialContexts.incr() - new RawCandidate with F1FirstDegree with EarlybirdTweetFeatures { - override val tweetId = candidate.tweetId - override val target = inputTarget - override val tweetyPieResult = candidate.tweetyPieResult - override val features = candidate.features - } - } - - private def generateEarlyBirdCandidate( - id: Long, - result: Option[TweetyPieResult], - ebFeatures: Option[ThriftSearchResultFeatures] - ): EBCandidate = { - new EarlybirdCandidate with TweetDetails { - override val tweetyPieResult: Option[TweetyPieResult] = result - override val tweetId: Long = id - override val features: Option[ThriftSearchResultFeatures] = ebFeatures - } - } - - private def filterOutSeenTweets(seenTweetIds: Seq[Long], inputTweetIds: Seq[Long]): Seq[Long] = { - inputTweetIds.filterNot(seenTweetIds.contains) - } - - private def filterInvalidTweets( - tweetIds: Seq[Long], - target: Target - ): Future[Seq[(Long, TweetyPieResult)]] = { - - val resMap = { - if (target.params(PushFeatureSwitchParams.EnableF1FromProtectedTweetAuthors)) { - userTweetTweetyPieStoreCounter.incr() - val keys = tweetIds.map { tweetId => - UserTweet(tweetId, Some(target.targetId)) - } - - userTweetTweetyPieStore - .multiGet(keys.toSet).map { - case (userTweet, resultFut) => - userTweet.tweetId -> resultFut - }.toMap - } else { - (target.params(PushFeatureSwitchParams.EnableVFInTweetypie) match { - case true => tweetyPieStore - case false => tweetyPieStoreNoVF - }).multiGet(tweetIds.toSet) - } - } - Future.collect(resMap).map { tweetyPieResultMap => - val cands = filterOutReplyTweet(tweetyPieResultMap, nonReplyTweetsCounter).collect { - case (id: Long, Some(result)) => - id -> result - } - - emptyTweetyPieResult.add(tweetyPieResultMap.size - cands.size) - cands.toSeq - } - } - - private def getEBRetweetCandidates( - inputTarget: Target, - retweets: Seq[(Long, TweetyPieResult)] - ): Seq[RawCandidate] = { - retweets.flatMap { - case (_, tweetypieResult) => - tweetypieResult.tweet.coreData.flatMap { coreData => - tweetypieResult.sourceTweet.map { sourceTweet => - val tweetId = sourceTweet.id - val scId = coreData.userId - val socialProofTypes = Seq((SocialProofType.Retweet, Seq(scId))) - val candidate = generateEarlyBirdCandidate( - tweetId, - Some(TweetyPieResult(sourceTweet, None, None)), - None - ) - generateRetweetCandidate( - inputTarget, - candidate, - Seq(scId), - socialProofTypes - ) - } - } - } - } - - private def getEBFirstDegreeCands( - tweets: Seq[(Long, TweetyPieResult)], - ebTweetIdMap: Map[Long, Option[ThriftSearchResultFeatures]] - ): Seq[EBCandidate] = { - tweets.map { - case (id, tweetypieResult) => - val features = ebTweetIdMap.getOrElse(id, None) - generateEarlyBirdCandidate(id, Some(tweetypieResult), features) - } - } - - /** - * Returns a combination of raw candidates made of: f1 recs, topic social proof recs, sc recs and retweet candidates - */ - def buildRawCandidates( - inputTarget: Target, - firstDegreeCandidates: Seq[EBCandidate], - retweetCandidates: Seq[RawCandidate] - ): Seq[RawCandidate] = { - val hydratedF1Recs = - firstDegreeCandidates.map(generateF1CandidateWithoutSocialContext(inputTarget, _)) - hydratedF1Recs ++ retweetCandidates - } - - override def get(inputTarget: Target): Future[Option[Seq[RawCandidate]]] = { - inputTarget.seedsWithWeight.flatMap { seedsetOpt => - val seedsetMap = seedsetOpt.getOrElse(Map.empty) - - if (seedsetMap.isEmpty) { - seedSetEmpty.incr() - Future.None - } else { - val maxResultsToReturn = inputTarget.params(maxResultsParam) - val maxTweetAge = inputTarget.params(PushFeatureSwitchParams.F1CandidateMaxTweetAgeParam) - val earlybirdQuery = EarlybirdCandidateSource.Query( - maxNumResultsToReturn = maxResultsToReturn, - seedset = seedsetMap, - maxConsecutiveResultsByTheSameUser = Some(1), - maxTweetAge = maxTweetAge, - disableTimelinesMLModel = false, - searcherId = Some(inputTarget.targetId), - isProtectTweetsEnabled = - inputTarget.params(PushFeatureSwitchParams.EnableF1FromProtectedTweetAuthors), - followedUserIds = Some(seedsetMap.keySet.toSeq) - ) - - Future - .join(inputTarget.seenTweetIds, earlyBirdFirstDegreeCandidates.get(earlybirdQuery)) - .flatMap { - case (seenTweetIds, Some(candidates)) => - earlyBirdCandsStat.add(candidates.size) - - val ebTweetIdMap = candidates.map { cand => cand.tweetId -> cand.features }.toMap - - val ebTweetIds = ebTweetIdMap.keys.toSeq - - val tweetIds = filterOutSeenTweets(seenTweetIds, ebTweetIds) - seenTweetsStat.add(ebTweetIds.size - tweetIds.size) - - filterInvalidTweets(tweetIds, inputTarget) - .map { validTweets => - val (retweets, tweets) = validTweets.partition { - case (_, tweetypieResult) => - tweetypieResult.sourceTweet.isDefined - } - - val firstDegreeCandidates = getEBFirstDegreeCands(tweets, ebTweetIdMap) - - val retweetCandidates = { - if (inputTarget.params(PushParams.EarlyBirdSCBasedCandidatesParam) && - inputTarget.params(PushParams.MRTweetRetweetRecsParam)) { - enableRetweets.incr() - getEBRetweetCandidates(inputTarget, retweets) - } else Nil - } - - Some( - buildRawCandidates( - inputTarget, - firstDegreeCandidates, - retweetCandidates - )) - } - - case _ => - emptyEarlyBirdCands.incr() - Future.None - } - } - } - } - - override def isCandidateSourceAvailable(target: Target): Future[Boolean] = { - PushDeviceUtil.isRecommendationsEligible(target) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ExploreVideoTweetCandidateAdaptor.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ExploreVideoTweetCandidateAdaptor.docx new file mode 100644 index 0000000000000000000000000000000000000000..20cc932c8b93c7f796fba4690215f32636b3e919 GIT binary patch literal 38096 zcmagFWmp_rw=Rlna1HM6?he7--3bI}Bser4+=IKjySsaEw;+Mw?x(ZXr+c4s@1Npf zR*hH2sIEC?^=xH1NGMD&Ffcf<&z_%%}1YkM|RNVH&f_ zAuvpF8L9U^L~C_|UEWPpdg2nN1_l{g`DBpA-uWAOOlOwd`;u{_GE35Xg!6+iH7yz5 zAE&v%S@vrB`Hawm&&6_d0}{0#!J?@vV>Ho;hl1f$1;?O6tMg~Mb34c#)K!m1sQ2hU z?~f_FzE1eMkv)q0NoKt+Gf`<~eo04Y^XEwkGrrJ}`exh^Kj2*JI!RyeWToL)x7J&T z>^_7DK>hL4u7}BOT#Nk}rmi&dMoo7U-6r_wDd0;GRn6QHWR}*uJ%7&0nkN0{4qcsS zbsy{FKxsVBdvWB9lb!%t>UvUx?=Wd>9Wj;OLHGUl_q2sE6he>7p@#SKa|(778h#@v z-#9gdYgOAtW0FSMdAZ*mkHyJ+ZgYb4R(K^8eL5tJ1Zn(52D~0Fk)IDtpjUApKKNJN zOTTm$?Ypc6U~)%-q;r&yC=(g##Ar_Q~s|i zdQi!UJb}L%2>NT}WMS*f%=G7289ylt$%^WCE+jcZS!~~=AyKemC~>4vAk>pG zaaLpxlrCEB>Qs?1(8lg1Iy~Pqvs_Hi$6ux|vJKQS)maG0UFy}|qP=WrH(G~Fg75Gr zbywdF(y>j8xFtsxv7ox=veYCIqTj?A)T6CGn-#4RlQ5#QlSVEHDosGULHtUi<>JFQ z2Y>-c$v1I^7gx6av~>%A5N`S^ZR{s<9P5Clma1sZio;WYEaQlABQA3|9bFdNnt|Q+ z)UNzlul$nfC{SEU&Cs3V24=DYeSpWRL7;fHW$)7gBL(@SmgkhE%Vwa8ufsIaZPsVo*6%`*w2D0 zdG9Sbub>%rjS43zLkE5wE-Q`czubDq!Kq+7p2an}wO3%Ln?vtPw8cMs?I5(l-PjCi z791Z;91?f#Zyt`QgY~v%ioO1vB}vCynHbb}-t#nfMPn32Juy%NUes`VGnbJ@At9c814aRHJI1hEQ2{2U6Xl7^}g?)-aal9&_8frLg5};Asf=pxrx8M^j+cqcU^AQ)^JWh zb+Ls414I4Kx|ldP{8bk9ar-qE)Q)F*D1)!z*07=~xbXptqO;-~cs21E>bqvT;zY zth+#;$51TZZ_Kx0{Pq0L4P(zsqL#1?ik~&G#vk)WlpQw^8mq&H57s6R$(*6epi8kd z2hj{1ji$#c7ho9Szou#_SB-g*)tgRS62Uq+E74DXT}2kzZ15^-S9I{6d9e_Y{Owx% zFmREm+_=1%qQasSUJm(M{khzuWLl8()86f|PEsNgvJ`~LD?8M>0nXe?Ih1Ff(X4^t zgg2bjlc?2|YK2}!oyK-+iw@`Tazeg}(?pK`AWyV00rcLWWo!GdJI1!$)tBJr8#G^Jwr){X(Le{=JENT|Gm)CLc~`uTj2S%dLi#F}8G4UNKQ zYF0?HcD$xsc9*GwRIqA@nj(qt*_0Tc-i-E4>+n!~N!LJ8FA6K06A#Umawizr3ce4Z zhW`FV5Lfw=tL`rG{b#&aRHjQi*2C>b7eT~hHy9pZOFcYM@+rLS>uBUSk$;QrR&t`y zq}CP%e@F(7hL^2UT=Kx0jBugSr_PRa<`-t73;6WMYy9_x+uy|hePdwlrYo+)f`OHb z{QZG-12~y8gFdw`cA&}W&z-TLzu~;fgX-JeE!Hn?W~nMJ#B@3vugI*xH^D)R@xyD> zoGqL&lBsE5mMv&={T)cZ0)y`$D@)-d;CH*Tk?pG0ULN!FH6(;a!mJP4!qLrY+U}eL z-D{%Qac1Mu)#dK#6d4_TSO{51zKvgv%vFfs{SNr!GBsI>A_oSzA>B!~zdtZNd? z&mGtceRtgp>&EOWzyk(_ zgZU%NdC$w&NNk>f;+ZiQb)vN84->{g7%3ugOTVC5_a2y_BuE?!80s89Z2pRVRJ%<- zsut1`_VxPwKd$!+{N zoKO<3bf@4h?>=pKc_`=I-zM|`~dOVi}SpiyB0DFc@PT`iG^A#XwA?k-Os2! z1f77Hp@gmbo+o625amPgD6xUJhk-43WgPwzoldNiV@CF>)Sq?V^kiInCV1C!P@^sxspDW=R{~ zfmSCS(_u=Nqx*?=U9vZYj)1^d>bx=RmgLUYFjx2mCxT<=j++Xv zQ44E0l;zxKG^x18%5Q;hD?hx;@u47H98=s!sKqh<NOd@L)?Keug683_0XkmU`m) z(Zi2I->}gv2F7kc3)%skSuBVjVHAOqsy*dr*dM0RoN1 z>dVL5Q;w3d?){k>B=y$Aw7@HE1kyx)q>T?Pb$52g{88w zQeTgI-pJLf%6)Sv{IT2z17a{~&JNdv@|A0nAQy8?koW;vTOwm3Z{v6IA@^k3Vt@f; zsOqS|Nnf4wrsOP#*`CWpCq=%FVJ*QyxFu;o7L)xIa&E{p|YLwbJm#HH0+jkcZWln(v|%>0>d& zrVf-%-dVXw7dtZeFD&qEO08S#h6$Xd@*Q2Uwhp@j>=DK2jiOD*k8+pZvE==T|8`dmKG1(bLC24$C z@}`o!{}CTG=1Pc#SbRr3obv6MP4bj!GdnUEYWU#(cUg0nK3!Q@3k?(QPwDH>@@WMd zPu<$};fL-%l`BQx+}pb_xyl*kF$U(L8IPok{TO=&(pr_N1@T6tnsXmRfQj%dbb3<*XMwp)9&e?&_Eb-T5B8d!X$>MAb zjnQy-@Hrm!)uSjM6ADdZWep})JQy&Q)9FQSXBUL7g~Uy(KF_7xXkahf5fC&wgIoNV ziCNh?Z#sCl+%9Czn#A! z^aUqi7THI9{GCVDPA64e=p8Jz8hn z6A6KWITx&Kfi7T$l6=xrFRdZ^rIG}mucnu)b6G%4VfM5(@pHwY?01D1gxXfhfjR_= z#$0=mR;;S1f+H!l_-}RGx)3@Nv+*e=A=z19J=@7HC#zbnIxD_x3vZ-3_iiiJYXBo7wLJo{I2ays?(V#NqnDp{u|Z(NQ}$r-t^_7tomsW#>OtecipqBq_tQ3*RyotrD4F^W6b;G^U`^Av2gRrp25T8#$|i* zLi_XK+^^gAkdVD&kJmbZH@o+?&0uEWDzRZw@x^riVMy}+&iL9%bNTD|$yI~Lx-ECH zFmXk1Pp8s1-q6Up_Z#baU9abbwQ*0kaN&0cZ9qTTef!?^!L9qp)AEteM)x7bOZ~t` zA)J;mkK|A$g}ym&!ZCA%PD@%xljeQEpqlo2Mw_ z!>3OhK0Gt8!eWzxr&^n!g`k}mpOh~VP>8~p%6IS`@veRD^6bQIe9xx-5my!o)_o<& ztTX#GI{o<~@%G9+jgWi%CIaZh==sX)Nq(JBzDMig(dDtaE-WDy;~UKU*0tW%-dr)B zILPX2*S_x4rLTA1^?ED*WT~1=)bF^p!Hlv6Opzq^md-jQeIKZP>^AMK9$%nJs(<;a z8v;a2qs05#4&QmPiPxSi4D^UlZ};Xu#UQN?i@m8qfi4U=L+6_gsYeN^t`dH&G4jz7 z_TdR;?r4v(2*&Y!eLL*8^o4u9*?9e$rvFj{Tn5Ug}NKMP6bKFi`(I(hdoJO>I^ zW!o>kV+?d9MYgPVpDG@%#Q=66e!kc0c1va9ceUwBaXr#L^>BIKvraG7&7PMcH?Uzr0v4hrR>QfnUtgKl%TMx68C8kn^p)7Nce=(dWX&d zU0l0vhEJ^rsSym-AHxFX)PZ^1-Dp^wZ3a@U9s=Jx45}8VpHJtW9PS-ohh^@rg-_3g zGE}4*4Ho7v`VX$Jf1UL^XK>I5w-OX;MZNbQxR()ST+?U-BCgErKT!H!5HBgEHz!Bf zK+S}Hp%1SqljIRWivyP+GAUr|>UnMNxg^JrSbx{H@b-VsE{Oza#V}`Dcf>Y_2QO*! zx#B#ZzFqvXqt753`hn(+MS2JKL)4qlh(;!|kenw$=-jegV`N?8MV&N8R$4{61YPwz zdwCGUJ|;b>9OIHKT)bjicZKg30rP|ASjRBtVnqjQdOo;{?PYfJYbjoeZaBl+^M-XN zf7SUw!Af`yEBltrvbNoB0%`#lq%53jIszqB@1cYv>2X4S5JRJms#xsmS6Wgyt4+)v zBe?4#Kg=KxH4%i>4q6gKyUmKsd}%mUa(eUthxlecl8m1Q{4sH;1z8>C!P}Goa2=je zJrPvJD{R!DgbwHtMzJgG*nrp$=z^R-CqIKuV*m3b)D8szT=XB;S2f~MGC?tWAdd9O zY(o4K`;;Rd6iNcRj`pumT@YF@2=~82|E7W}r9QVIb^jj(=PKl&5rn@~By~WW=l(B= z|Avb7ysE+uNCsW?pTb=6L3&hCL0&N%eln6EGX4*Vj3jW>9*A&%sh&@8Yeen%bJf3w z3Y^6ord->*FbuQ!By<-@x`;Gge9j-ieRX_wi5J@wdt?zL{gbJ`$Ck7-xp!^(wqocl z+c^_RXwM%wwyzA2+rBYG3Nq;>y_^qjJm0#s8rTndiN5qNO}OTMUUt9Mdl;I_uHJF4 z{abhv*onz!>1wIyuOd@Dg5ZNJO3B9f>dea;z&_x|kgL7dTJ+8C8#y_7IxYjB<9 z?hNRX&R& zZk4%9eqyK_Q5R%ZsILc|N0`UE z2jaxsDxdOszac8LFmd#L&6VNS|6CD+Nb67q9_WmO>TNxCTS!~PtkAwAhvDN5&q`>* zt6Nks_UIX+gE84oQjCE%?DNg^tiStQZQiH&XV%`CK;f3$#vq`yY)6y-;g@4N<{WYJ z);ZbxTiSg4wA<6o@YUPZ(4c4gtD^_-{w?u+@$_l#*UPa3i%G{@i*V*0^UL%wwC5Wb z%1XLNix8C2R(o^u@Ga@1YTPrY@p@2x$(ge=vZTT|)p+(@GO~0eep`q7S(a+6Tp(bk zYT@|>qr2N%#qW|+_eDeEv4P|f3Gj?ngH3-M57Q)zWJ~&S`8drVzdT7UZH|evILchH z-R&Sq?DzF?R)^q}7Hf@*fa=E@B4jY<>64dVvAxijdih1uqpF47WCY%BSp|6j9ka&l zM5?^8@rPjEDWcE`r??7(Ad9V}HS>c7m;|eJ8y;lpfB>dE{^pj19u3N7blm|1WG$Rl z1>_}eRzBqzhV>UGXO1HFa;hYCi3=a?=?2rZ!IiM%)n-n><_RM1uVXfC>!E<0{aB@p z_u3WgZg(Zad2-Pb?-LD&q@5B!P6C)kRQ)lUG(i&0BbBTnY+W7IoUqi&)0<$lyC z_(%?omJRWp2(M5x%;G1pU&ujmdWbuguAG*Z;iT6R<$7!AMEUz>p4hVw#Hu*sk}VO` zO&jDXFc9x75z=`>>4?72e&=v1b>JU@M29Em^RFmIQF{RG5#^rKfTqo#<_NW9>0{P(VvL$?fv2HX^{Y@ zLJlQ^g{OPjoufv>gfkyOQJtdfGat`#S0kQI-c3MlDx$uRL#K_dku!ZORn~2(^=NV!P^B(mtM#!#R`2x zdjZ{nc~!Yos!D9db^V1OUw?*{QhqZ#@_ck`<@=p_Tb_KBNEXuu1Pd-hbbr9?OVX zqEmDeIi0;!5f4SbibCQBVWtLqJJI33g8t_#H4v+C(d}A=_BiXVl51fUx#N14$)hl{ zTC)U5FRl2mZIuDaGL-Q?VE++M`J zBBSf1Z!^joPdQB3Oz|egEyJ!TJIN!;wpV~?X=_!VS|C_lc$Y!8;=Bs&Wz(_~p%9Bb z>T&N;UKM|$96z9~&0)H#oR*2GiCBV zS!8b&0~nrx0Qgp#1YLd1Jk#{{!QywKrHWf-TQ=)oc7>h+C z-rl>{<4I-zo(`80=_jAr1ZbsmyYpi3b^T*LgdMW#=j*0Pj$i5EPZcy%7QRnE93gLZ zCYc%ro;p{DeFJ@7a&v$QYu_;;X@x9kcx!`dF)3a0&^a>JWnUsO6hp?-n0l+ZnQ_?H zw1}(r3i8=4>AHV+PbIe(qoj9NJ$*FXV+VfX5qKxWMHAZL`7+qtvWve(3B$?CVqf(1 z=H* zZ+d4>;!?yYIE;b?NTaMLt}>dZSsHuBNax30eK2`M0UYyYDR&{=l_-aa5m*OSc!);T zxjxy|7-u%^hD28vR4>$Vt+$PP6xE5L=zPQFV!Pz(zJ=ui*9q@U3nR0g*pKcx=NOH1 z0n@;1D1x2KUB{5iZPpV;9CY!Mi@&H>=FY}w7QZY2a~A(gu@GcuE%)y)(VIhO^L04C zq0HUjI~5MEA3u+IDLX(^6C}-~M>}`;apz24Le#-^##z93ra~&}Z{17DJD6Hk-C=i{ z&`G0pVofhw=5gQouchTTt8B{;v%5mHCH~~|+oXbAO4aFrg{Hn3GlB2?#WRfP4!KIe zOcF7JuLHtn-5x;f2op95z@T<+tUf~05Dh=FqxiNdMU}_x#p77y48rk0M9$&164GPP z-wX`EaNn;9+WeZa2g(t^MZJ+h3}CJ!1~~A;7|(`Yfz}`7tzSAqQUk$EVu=H)!j2}J zHwOLGyxR8*k#m}j1zZRfi(Gc#JDjw|0DM!I5SxBn!-ykfH&RKIHWpB zepQ#Z(C@82`OzH8)UUJ|ElyktfW%~l9ZSEm;@7pk$pr%hXX%uC+>F`C++cc{9mzVK zIW9=i<>OtoqvUw z{3Cq+U*Si8!UKuKI?H^xZtQq0nN}wc{;oQcb z#@ZGKczSe3{V2iNTn<&Pw(&*pOvm@{$kL^9LAyPuNV9vKwVIa$XU4n;^0Y>t?Jqo* z>@?@6SS!sjG*l|#I1c6xBAYK?U6MR6Qm%0koVO_pEaA3Vur2>Cly8XOp6f?FFXtRe z#H4ZEW>`lUeX6d^T%D|mciV?=jdrYY8j|nE&KSF-7E#5Nx0#_)&uIA+=}EgC43VYG zJW1-=qTX4OY#U&&TI^aPzd}5cmES(;7tZTX-J2)p8>s_otzos}EAQ(D z8O+j9)5*xA+$qw@FMBJlT4k1>6XR4weD0snp%{irqQ)Vt%ed~hUc)}+$ExkO%&XPe zrOV7~;RGJt^Vzpy*gxsA6Hbki%jejyKBYANL62LI+GNFjdjy3rkzU7@sj#ms>GX;6_#LeSKv$|kJO+bLKjt_zpl*}3;r;& zNGmV@bE8jFL`bn+W!9}R-uW73#kJE5T2JKJa|4IRG!R#-)5Q^f7kAg{Pz=i%tJ4UP z2y_q#G4vk`=b5s@iKsqtH^Y_4xtD7Q9{-k5loa9f^6w+%7e3OJ$R{I#HcIFfp^p3v zq6&y4c5fO!%S!Dmvqp>k7Y`K0KY0}QWN^TDiZ7MXYK)zahnQLDO5kWfmcIY^C8~bI z!rRs=DPqv4S9z>**vp^}rOp6xjEjPatPVAQ@%GI6(Hh%(6&rliHNGiwd2+IrX71ryvO1fvM#svo`-PP>MeP?6%_Y$oCVgN@ha z|C5bo#ND6!l6onw{_t~gwT&(m#n$JCmKg^BFf$#O*#2Ov)mIdm>LUwjrRYUO_~v?taJCklaXHm zk?F1fm*TO6`w3TNa{-u%vyzo|2(e>egu1&e$aUNNk?Gal|b`qnnUt7TK?wP`gHYJ03g)xrZ1hZ!3c;Nm9Uw>d^Iyaj#$n`j=flX@7Y_R9?SP zNHUlK&7aU{M!yh@az|{b*-iq$TFw0HVWsXNSv?bKEWZw!*ManZXe2LB(^V;2%9Z)!dqwb%@7@q?c}Jg9bJhz2S1y9TeM^pl zAVCM#8Xwjl0ilCmg9nw(n=n!vPa{T~hNid_&i_N@fz%(BYQzm7mHn`PR6>E*rkD=5 z{_T~*U#5InN zQm7)WHJeIp`TZ*3gC(%IyCB$0cXt2IKZLL_E32nY#aO3@{Kw388s_(P3U1LuHl)V- z$#$6`R@L(|cwyJ&o7NJ(^e$X=_mPUyk}kRmXDadN#U|Uq201NEdKdi!VA=)MEI>w6 zx*HvQ#^vVYSLD34*Rw@5eO128BK8Y0MMtCRaI?v6sMA%d0j@AR^tIo* zvhg~$7KRw6yXo3P)LqsYqceMnxK@m1lv6Sp^=l-7JjK8^t%HmOBipiOdTP*M0*}>_ zYW#q?o$>hR-3(CB)Zalo|2rsga-Z?`;A((3%o+Xg4^>J9lI?{;2FCcq0B;ogN6!xQ z!wSj9Kj&TX%~22MmF~wf>aS?Pc80Nf~ zr~Bu8I}%%{^Kr44#gvYRLtr7$0n$ZHpsXFMym8+Xbnod}!1 zlyHrZOqFJzCGuMBv*IT`vEu(*VJ_hTp^Hcc#^m1$UH`YjtBmWA$+)cwE>D$Q(bJNT zPNPmG`mk36xjz_3=Bf%lvhRDS4~q99_m(ZH!|K?YzKGXsWk$zs5&oH>j~=%+x*6Wv zg*&o?Rd8kWLr|?<*BR!RpGF&xZV!*5CX}k8i|6+r53KVeEx*(;vlJJv7;<_Nz)XGp zU3=EwCv(;&8N~}*cWVfGuun3=%mR?VWu3G5R5sNgthT6-9F*96_Z=cSHn@Th+75`- zFW&f>t6J%5(rduW0FKu09~v9njwHDnnJLtd26-C|BO|be=$);zFpu;-XR{2CVdqYD zst?_r+#-OorG{cDk`*HYTVQ}bgi_m-hXJk5q1i+xy>`w@+cal$))>@^*9&^7S>M?_ z*FfEBE*Qf%Z&+d{^?2E#GxP>iwgL@OwHtOw4S5-Q(fdup{!q*PMU4)khL!u%eNVJ* zE+Qov|3&R;J`SSh=lYxa2PH-X^8bVSvTFdoBP`o!)4TOkr!o9-Wmzw}{ah9UgTLEv zQtg0_CW`hGVT=fJ_fRclxtak7Z8Gy6`~G+?v*PKR0g=wVUi3d*cHzfnulW!EAir}N z0g>`S>B6x_{C zyIZspi8+ouYltRxjq9j6 zj$fr^`Ah&lg)g0e%rlNkS7dd0f=}qwJ!9l_ycrBZwz9M)ow+sflp#m`Bpv%&PvPu0t=dAi*g8hi6 ztpcH&gDJ52KwZZ+WGDfcm|rNk2~-P-%y$yz5^5gN%3Jf0IEV=|IC_>&TdpkFtd``) zFl=Rj1`@MFdyM5JM8`ADPOvF+y|DnXGuNozL=CKqJmjBg5^BVsV-7MDduW$mPS-Yc;pr&h5F$$qX-AJCCd-wS(6b(MQgUM(5d2zm;R3=f#1osj z$E^gzkmk%SeG1l0ak(9oywfsJ@=oDkNBnJDp#D2~cG>#>NM22+ZCA?Vastag6e9E^ z?w=6sjN?;J_CVSgt5N5ay3@dUmJ*;tXwbnzZ^w_Zijqh;sLKqfoO=8C;Y0!2)n&nJ zKK8ri8}(WdC>9nsA$$nB9|#B??HiF7w6B>9M_TZ@#RWiNvvk?KyqQL=W7Wx#77h#N z(QYJhsabKETg~f*%Y(ighIde}F`KVEzr#NR`;{@{>L%yY&VSjCe8Eqh^5JmZr%B`+ zH49CNpwewkEKpz}zYp&sG@5?RvDjuk%b^pyX{x#RuA>KG8SyIg9Bqrdt2hcR^gMTY zF#VZ)Dx7Qs*XY@fbDlSwP8K`{(KYs|(Vp+R{6S2q(-EGv8=0kh(3r!42hBz_HM=J# zM~ZHtU+k$!JqF=R0vTVGt=9K4N3XsY-Om9(Ag&Rqx(>bilw>BR!5ri!sw1RG4noXu z#?!r=FB>+=uD^7P#`9gPNz!gR?iBj3{^6kqh+333=a3yNfgf;ZP9Ks_8M@++y+FZ0 zH@1`zVgH!T^HkS{M4WZBc-BylTEjV5^5!q+O4*|M3H*&feL@@dmq<^+_ID z=;IDccO1@xt?{({2_swgU3yX(yRgQ02qK){B)5N4VK1rz5J5?RoS06X#zssg%q6F} z#=ymFn6CEJ9uew3Rxx>gkr++bO0vumWqLJXn$>N4*xW zjo`k1?ZH+$u{*o|()r5KCnPNShp211+O;x$>SYYyTkjaD3zP%DN9euM69=;SU^ZcY zQBkDf@{r&goN6MhMMeFu`YUHU8hdv^kBu`79Z}~mFFiZodvyM1siw0%f2-oKS2mBl ztO`qu{3Cx3u%!kkMQq(yuRa%cK693#St<>*U)BdYofn~1sB8U2Z)9vg!v&+`e@x0T zA4*bCB{RDZQfzeK>7#=E#ubJ46kdr_QHNETIn_ryJ{I+5M+tLW1KtRU7SYSGR5D8>qI z4qJBDCSdIQ68>SaSaxZ!&<#OJHI8yA%EGexZ+4d_6&LbJMRxKno6JeK>h+N0Jsarm zEAds^Tk+MB?N77;2tY#ShejvNG$!}0mz?4N;=Y0`eg_(SNcD@krDuiIE6=?b^$YgK z?T{?U+gk{_hg`gL1YnV(@EBpr4c|b#cexAKR%ZZlSxh#~i%akGAHgrERJZHA&LF`7{}vpOT?#Gyx8UACf-n9EuEIZYabxtKD1Ygco@{{oI0KmaBu%$9C{f)++ngTi{jt#*6u@G`jQdK6WH7LMey zTv02mXBB}K_UYXEPFu}A1sYXD1Rn7!8!_jAT-TOvTOHrzulECfMtQq#qzn?4Y%hs! z9eaZO3@;!6tF(Kk3j>Hj(iA``G3(eg?q$C44!K5xIcagGd-#QQqkbWtG9P$3@3QFE49af~z@>8=R8cl)VSvZO6=*9Ao%&-Q&e^V(UvTGT zPHLYa8$SK?PozZ{e(mj#1H!zpLd0y9`lF(O`b!ZOw2q;v80p{i11w`JSwxB@Gz<`M zl~79b^6qaMQKrX>IpOlmX#j#IJ&P1oqKzEG`kMsS$6;fT8d$bK2e1n8{cp#!vkDpz zCCc3z@S^LZ_b1{)S6$xCKzO@=ZKz(>sS!$4MUsvPl69xwJr>MtB)FR}ADTB*SS$e7 zWF(tnejLUzZz7jP-&YV>qRZu>c?<>W+Q5c;hcz$=&M^pZgnFa5d3rCI`W%<)2*wYf zzxkZ~O<4#2nV$y>4KmxeF%@dmQyG=z1=9{o|o|kcH&qx81Y1TP_~ipoZb2 z-O!@>yZ9TH74Gab6{&d)>qY;(>z9mnB<0z}`kw%fN`C;3!~OzrxOWTKgBos!8$RtJ zieBDw=c~w2bm*`QjD)b_%L>B}+HSeLJ3=7<$fkDs?X`@l`|S<(<03c^c%wr0UJCU( z?rc{4LxEo4>;R!Ngx|J1;+NqN3@bhyZn$2@z0+A@p3U!UUf{!yiKSq}5tZ?X4g~8| zsejWSa{Pn7*vv{`8yaN(V5bGp9s%BdFv#&g!)YOh_a0tvuu%x8{2=hUJAiH;keCrh zu`-C-0PS;ypcsQfFN(XG)H-_tlJev^9jhKUaSl1@$aTLHJl^-v1 zVLXc!ihs0OW?sxhdY(Y)A1Czgn@UwPat}e`COg^({%W$zeWO4s6s1t=FvWO>Qw(If zcnLv=psc;(dBW;Y5iziCj&^`vYJ~>xh%Kn*lvX9tUyn}m*e%>#j>k=b|G=;m$Hra) z0gHi)-O~ppMM+e|j&cn_Z+s4*q>_@a$d{kc<%wWzSA%tA)nH0ev$vOR(XUF5;xsni zHRIEPjEbA2jtFLUsy=nDTX83H@4Bc&r%$l57#u1R(1bY$$W}~1X;Oja%f!(<$c6?a=khC4i5%XbM=3-n){#q0XU224xiV|XkqwQQLc z{zGFgv)*i001k77P`f%d=9DO_-;&D}dX$<}(_`VUb{-WUHV=}tKeEw}-&T#uiy(hb z+<%(0glW_%#j(={qsPEa)J~nMu*JM$bM0hYQ?7BYkSB2sOLY0381-^FVwsIHVw*2h zAy3wM@I5^pohkXm!U735MLSh-QN+w5>txM24!QlbzApICgZ)yE(aPfZL(wvN%CPZv zrhiy32|F(M3)8eQR1Q{9?+6(e$Yt-*gz=v)pt1CKe8?0lu8x$_ha&zDLpsaO$xEDs zu&TGoy+8j+#R8(jjr>Ce`kjpFcI`B`8OSDEiU$j^r>*Hoo5qu&OjaTmzxcKG#|}}B zS~hddq?4zlR6l(h`f(T6sSkXng@z3#q+T^;pC~npSn01jdytkBl$)@u4z*K7exuW$ z(9qWpo!L%Qjj-X*fXX9X&AWe46g0k{c5l1@FgCRS6%v4wbmAf8rN;I}%+>{EaRmR- zwr;#l!_?xcqGFjOV|Z-ar!Op#w4M!Ik!*SlYMbmoD+(d(;C&aA`U+DC%50OYXhj8o zh3#4NIyk;3>oY3Ge=vIL=s?0yX%;1L&S>kf+-LB%v%`QG6B41X2P2&o`A#&$62ofh zjwGmrup*3te^if8+2s016mjb43@4oh}|7h2qk4$vt{w^vI zY;d^Lt|Bp|zppjiMimqU9j7CK7CMw8etT$}K1lL}HKES+*2~3)n9@f)i{ChIj~NbM zhL2l3?G)t3OcgtW5f%P9(y$YQ_Qn1n z$OUP(X_Kj(TTrZuN7sW-ho*i6tNyu5MsX{rZ#kQZAdJebQ9O7Z$s$KA7lm9DIshR} z1e*DRDkIYgB!W&I*8|*282VcCBnW{rO6Z3&_~w3Kju>-}7-A;=6ATu_7h9C&;_ob4 zBTL9wPTcBUVSzaiqR<980a$S^JNgU9y1}XEuuTt@i||;ouGz)85Z))eqQQnD!Pre0 z_egZhQv>O>Cq)z3)c;a}i1N3J;GSzj#c~zRDjS!|fI}r-B>mLpaAd4Emt}!VQn430 z%#X`KAI8#t%r6PEj&RX?SJGw6U97RkOc%(J+4%Ue|(*w2}C6+64YdLacaGXvGkB`b#f`MOR zhhu|6I01S*P1~!^>3A!@vwsOfwROXkmn5i1#Le{&kraoozZ9U@>oZ)YQUtA0B@2}6 zaM+?Sx4lT=X;D>6Flb9ov29RjAMzi~g|NHM6-k1hvUSJ{SU}&6TlSM3ENbM(i9w=7 zxY>SX!Jl46tk3}gsr~~9>kp9Lzkuxi0L}YObONPw->eqlXd^dDEg}SLabo{M5GV&d zTO65fF=#>W{m4{lR^U^m5H2!fgD~M}=fg3--yt-HU>*xA>IxV9J=+Lhjn@qF;#?O%HD|<#X)!zQ;?K5Re2IcKwrGvdKyh{gb&193Gc0iQiHFd*8mXN5C8}Cm5J>H4GTu zfA8DZvi|y6($dnx?CalK_!)`Sw|l!D^@d&V2h;m!>FPP2 z=eowoC?sn&CuD7K>8EcM($)Ig-sLCe>0$nAdqrN&bBGeP7xzs1p#hC+gcT9$dQyCKK@zti9C<67m!A5evM#yzp;U+_$$^Z!x-} zlrL0|zEW0pSD=dvPb{`C_&8a%E}vSpFOYe$@e#^R3m4+B`99XHSs}xg4==p7XWVWW zjcRl=XKiiqPfeCSR^9x(Hhq2cc4~dQ+aj*JPvyN~Wqo`D*1q2L|6c98KWE!;cp_g? z3G>&|-0H-BvcGS0*Cw<#zqIa_Uu-geP%ED<$K;q=7Jk31ZvHxf4R}^~V=}CFi{nlu zqWy5Z(|SKjcDK`lLy5y6{Mz90Q0M(pqoml;Ev&7C{PsL-)KosnrL(@ZrBqxTNSwr6 zPOKRdGk*L0yz|(1J9q5(_@0$?;(MMHv$Xe)PkiuRIv6s!=IQI5BL^#ZPLwZ9lvMpI zFGIi1u%Q3N`KkQyhPpknRvaHte!@tIf+ydY2wTu3B%`qL!7tArgIV#SORjyn>YT0CWu` z?#kZi2?h-vZG(nzK|}0!x58f91aDoBJJKIGyQ}V|$5(Idq-!&>?o!*0u-66;Pj_#B zG3`Th7agZPUfelOyUmFQq`%c{*{j~^nTZ^jebH)wVYS)>WQ6Jd$nQ}O0%6sr z6olSc)F0{bciiK{>d=}uL)YoBn3{|p4tBNeo2I#^(@%?=t~>{pE< z9V!{kT6weeg3c{bP{PE=AT1Uaw0piE*D)A}Tl!$LNY^VP;!ZBWBT$L!cpi@6Jz?MUseLbWHwLn6I`ssZKaCR|z z4WjHn>|BqRHG?23DFb&z zqLpKXK$%IZ2Z?8okdI9>Di3jkJb9yw@nHd`W?1QO=kPq!zSOGnSs*Nv=hbiS;PtzV}M)zHly#^Kr31n_%p z0xtXK2n3Of+iQoqfKN=u+fxs?%@waP5yq8oZ46zz54SO2Psfgzo+q9T*6v>{>ZY_E z@k8%|l-jPiGN-*z(q0}++Pq%5+j_nP83|M^Pv|`EJPeG*Ovq)}%zxcF@SR@xl9LuB_nxHhpCxUr8Tjrnu3&;Z8#*;&S(=ZnH{ z`mW`D7v>NRq!33h&t@Q_ayigW{$8uZv7R@^Sb-))jDC%Jh!!~*^S11TI#IE%zaT71 z>|%@kO4JbK&(Z=AHINh z;fA*Wwp0UEUV~EVz3s=tLRh+CWmQ2$pcdd(i88p~9kBWxIkZdYxdvwM>wJ_N%5(KAage%5lqgO%S$l%d?)>_U_$YH%r^QgrZ=IGhyBuyG|n=ho0*g zaME2gPZpIsdg43URk3GTP1_o~z$hWJ0zR4IIZkqY8kYHmA|w>p`T*lFhO!4nyac1* zJP}=^#0>r5CKVvyYTmkxjcdAnr?j4{7cj!N&>`P2@O=UAuH?)3n^ad}$9{5lccK&4 zv{BF9^vV}^Pde`%L^teyShVxSI(IF;9Ji<&TW!SQ0f+ieTh7|gB7n_hx6{^65^u-2 z7EHRWi_DZ9uA&b|qjSyrx}duJbtkIhdwf-CQp=SI_>d@`_}vFlrX)v>ssol@wjJI= z#doQwc8&6qh7Xf&-_KW*(jumGZp`&q^+CUI(fF0@C-pDfG*&rquPXZ|+ZGwg1OV58 zHLSWo30xe~FGW{li>2998xtSuo!S!bco@?zoe@zMr|Ui6Oyt%IE#0!Db;EJQ_zYraUT0Nl1r8>QZ3G|j6lDXE>;hJ<0$QZ zCFOw|ePSSW!&k{>s9@po4Fkyf0BFR(59oAf_jmu_z z>vwnchK^fV3``Y2Y+a%cMq^U8Q$FBNIh!qQe9|@8K&w7gC^;mkO8-_uz-|+~a$mZx z8T01lW>S<6r-!0_>(TaG#SwhB&J;ksu&#UAd6XOBgtVKIw^rL@mV`3r6!~Mb4nAa^aO0&1 zSq+koHrUsiCp8#HcV!l#udRVxAP!mL@g5rpJF*1ukD88^cOw_K`_yj_slUj>g$J5G z#1_O`&K2!3MMD zL@AbrQIX@KFg#IjPyyvl3}2Sp3J#_#KmSETL6k0D5$)k%%`IVJ?+W}%&DF$*XBYQ1pR=!(Ut z=$x%88Ne`p9@BU9=%|lAD;tLpZB+YlE31LqZzFx^saWCnwJJj?=;B<(`RmpE!xO`r zbVqij+&o53P!3PV}P#Kr|j#_S*XR&~~;VEq6jZCk-3{oL} z3N2-;z?H*ti=)h9g{q__9_(+2NFtXn#q-nDUyThey1$!vPp+5wl(u-%jA%S&n-wqC zK7;Li`00|4;rlW?{OUjPv?B|aJsGXq+>3{I<73ke1srLHEa|08<71?x4g`g*ef!`- zr;!j3J9P66X@sP3(WA%I0TH3cnz71D)8@-B2;h$i5l3a>``Nf744y95yqt=etitb# z1!3(ZcRTjjc=@ytGm(Oh9+5cpm*7@1s=jo2baU4r%tCf1ZV4Jt()S#+#7iUg(zssU z>@d1tWX-BV_8voCL%%eI^bCNd^38q%r5lvrZk>yP1;=`8-njZMDX$IPnCxq>&63SP zcfIT0wu;f_b$eX0bSJbU`CBIzpAhkAO~d1YinznUU?iz`-2mBp)%tfo(Fq|0`u5@a znq*(~4}+`d6xF2tt6)~rw3@EFD|oY94UgaGFvbH#e$v8l8a9QB7l?EPN%mI0ea*}; zE5$37JkA4L;c%7hqf0v*>U{7JSF#q~AA>!W;*JV&ucj8AzOK-Et{3!NAslNl&37<; z*W$3Z+u4#AR>f^X>j0l9CEvi+ueE{i?>c3#i3UFWO;1B3S?xHczpKs}3uYr@UM2wk zM={B+KIcY8oq)>*wq*4{<_*YTEHpEduF|9^G>wurl&FB^{Rt(+K0;C`O_A6hxr;1sf)?MPN~ zkficCS7h^ju4MVLpLNF=H0VfZ8$LKSBmIE7Lf|%TQjo6Wt&P;|?*fHdA12z!(7ik3 zitMaSt*rp|#1^n86tAY_DmJ^vOSm)Dei+qTEJsTIv~5Z0%ZX{@Yv}B2%eE_FLzVoo z#NM7nus7f{r0~}2_Vd=g!(F;L%abEyXT!fW?`!7%dRuOOG4lN!(qR(JZq@h%$5_40|6QG}d;FpJ#;;1k(naLaOGi)ybHKQ?t|6GbQc zQ{f7aq9$i1TZYG6P>X3%OE9rfuF4zb?Y)JW zSdqPYB_#Lp-75CeD)j5*nJPHDDp)&N{*abv_)UakkP=$r#%&7KOjLxLL`1SOM2gDGl{&S@mlr$Vpa{ z?z#<7PnBWnxLK)sSfzpoPy01@v4a$t=$Cp}C9Q2WY~hHOe{r)~o4}D9WVj)z$F|rq zDIusI9niA6?`Y!Nx=phKQrxW?GgDuQ6X@E7zg&!9=wzquVxI&RJ{DZx!ttGBVN&jD z8b5f@u!|yb`qbHUVG?zmgqh~A%~ht!$An&PVV<|-g&RT~M&;w# zg%>-V^bl!_Z0WWr&hu9W8_yrLny=}ITfcs#4Eb=Z6Pm&z&kv`->SSK3MqG@YIMaRl zov1tdayVd{!;M!-pf*Hov0-qg=zWs62Ai)Dfi6y+_n4rpmB)T>vzI>(c~m8qG!%U* zQhu{~GrIbGsU>vsK#Uf1N^!(kBT1$}5b8xmYOM5VRH_1hXNvWMRaM#DC|NhT+Un9X{Q4Pk%G8bGEVOm`(*Ru;gXt3k>(*o$v~vS zdKCbQ2lGY`FhG+ZfDgV$Iwf@O9d0UAA_f5wW@Q>gTbM=Ir)pmvU#XfRxCAhPz$|`t z!Z~D8_3fPM1rf9r7E9U3584|7}|>{+ncR8UPKJ$WJzs> zjv4>@eDuQUnCTGLJjT5sOxE%QO^( zsD<#LT^NFN3%L)580@1kgf3IYjI^a{44k*W2o1B}auI46Y$IcWm`tvFnpExpo(Z;QtIk5e&0; zv-m@5_7L+0;s%>xzJ2lq!$Qx{HG+*1odlVasMXCL=fC+#2}2lCI5TKzLW;dLArSjV z%NTSc`+ZWvVr>n=jzsnwih<|R|E@V-h79VPhmB=;W`QTB%hmecVc!39hXL?OevaHa zJUre4=Y3N*UVvEvm#)*7_LD0TKUxUr`XqQ{yxb>m{n$6!J*|yk4+)ZnDZSgd*7M^b{H~Wqii?iQq>?xidGQjtNIlv@61ISw zq)gwI()L93I--44KN5-FC$mbUc`E!lswiu$>S!=W_i^9(Xr|_+uYz;Ff)Ki)ud~px z2&zYSEOSz|##r94LameD7rr12BK3}a$Y5nbbFX}fAbMQ@5dV| z0}i3cn@(xd64q{$;H9j8N<9{KdTT^nKkq(p?mbM%g$-k-VI-#=Vd5B_ta~xxxLMb1 zE0|ecKXZ3_Pfl%3%DTN)dA=%Sx>W+k{8K)`)ogd_2Cn2h*3uq5n0<0}dmVOr_2bQv zlRA@bO~OrFEUqyIm`|0L)GLAoc|?kWxIRjJMavq(YUS`-+jnf0Ww`6cpU6}tCU8p*~Y5z!I3i+ z3ZuJJv6WZM=#J-3qt_eD9Sp89mK#4$X@aRC)b%0N?RiNw_lmPHNVD+HV-D^{r@=Xv zwir0K>;HF@_7%e6U9$8*uL+QMcC-md~Gce;1u0cX}suzTFt}!+d&#VlUsw zE#&x0?xaZgP==NGR46x;z47HW9%J_bh&Onil7kw>$U;xYI>pE~Jlpa)uHVZ=#_bj8 zT53jDTE_MB`j6+T8h4xiW&(*0J-64j33IrgfPlVMq(F$9Qh*k6`X4K(7xnH)WI|P8VWpaC$liDdZvE zJ;ApKH9ZQIMxHtYg-AVYYV>Kvw^|h^Rr4 z2I(%{zXUMn!p_0db`qGb7qFZmPhA92zteJM@WJ<0rX<7bB1M>+#B%`V7@v9ti;2@g zA;rQ>yHm|wslNdEyvK)PBThF6S}7EZEa@J3B!2;$Bu)?8L(9j;{!5JG|5J>)8rv_6 zrV8q`G+iM@3f5nmn!IP~1ohn4nB|%|y*ad2S>Rn$np)W3xSxHESg4y2b*g1jXc;!w z-5R#O&vVy#s#kf-cHFd#;r$D5L4!t_uU7_$Vj{4<<>dNmSwf zT(i@HPe|=~v9jdx`)w;~>WfIzr&zF@LmEh*gQi569U=Pwn7u#wM>TT0F2hlN?1x#ppW= zfA~;9g~$AqXGMFs^h4q-v86p!D*IMZSswI|UfUe!klwg}%m zAi)e%w026Zf_VASozmgg9!R|61e!C}+hiJ|$&m~UE3&CXy=!;_p0K0;c)VpHUXb8G z*sP+T7+qT)dSd-KYSe11P@$hh0i^mXmP>;PPSRpy>RC|$VqWk~dnNmt7cc!%BNIHb z6&KNBy!yc1ExgIJStvWQmBg)VgcH7Sy~aem71>0v`a5c!7#)2LdSm^$;X7)jpZedZ zLpVu=XMa%Zg5&z;)A{bRFswAOphDU4kS!%EcS}`w<2OcW>vMU!SZH0g7lzpATFB?>OfyP`&r z3c>>0X7vKaQ8=Y8=UL)qrtY4);zzZTp>&L3P(uXhKuuIDE}B8^MD#tPWx-0~G63bx zSPOR3cjGa3sdJ&qT@iElX`DO~UDes~>Iim2VJKkmC=C4vqs1uo zDSg?caoY&?DJ1Yg97LEVvSs^44i_q`jL$&Rgca3PGS9ITn^cmu3#jM@aR7nI;p~Qo zlvTM&I+#|2!SIF%gE;iPXCtK<^vk7aNW;pE_|Bp1k-9C#TaN#iEDoC0Ter?9RW(1U z8Y1d9Hd~#H)6D!`gn1upm1D1Kt}g*x&`f3e(Vfg?DM|-ZV}lrnRp_d>!56Q~fnEIN zpOBuK#GQ18`pX%rIKI-|Z+MNUCM7zL^9gVd>x$MKvOF!=Ec8eQ8Xug~ia( zkFZMf_{sq5@uJN9L7ja)PR(MbHS66CT>8=3HjpxMVSQbpOm>$XH2bihtl;q7ed1gV+ACaF&=R!8uq9Ja?M=&%Fu<6_k=WSKE4*$E!bC>n z9JZ={+oSd^`FcHx^!vsUR1IHx)I}9xLJI8a<3&yqn)VzBC=o89fV3hF?Fq|E+9}@n zq%*Q5(PARyVie^-E}Lg!xiaZ|yRxH+-=j%A^#?Y_6n>3WU-NEbesE+Pp19X(i8YGI ztkl;!s6bp8&SyRv7|zdv=XKu^cA<9SYS8dS3gS5@ZIWy+#ss8jw(Jue+@FGTzE^-Z z1SwoZ1rFSWBbW@UOK`>7kKd&tih%SK3Xv>T37#va*+70vku;{A?bP1VGyu=H zuzZ3S>^~Jz)%-}F>4qAlFuJK1YfrSR9lT{ff`^J23kF;AeaE4n2>$1jFC=R8C-*){ zay(lW2FBg%yRTq2bx(g{#*J;}O&%b^LZbrQ=SP794RY%H4KSnFQCgbWc4ZueccsB_ zK&52LK&1eAe(+d(o;dm~30N~UIjJp8!v{<UE}*3Q6znIEv-=T_cmo}|0>%IXeOw3UMWet}A7`*Kj-DUy&$TFRYZ zM#w4lBAO|2_9EX>V(mrJQ{wFh5n!aaGNFieo%6#Z;!vYM4l(m$4W2Q+JH;Su*J=c$ zFX0!s;B+lgz!bfj&60qmPPDtKBp#vMze}-yi;5_)tp;uSpF4RGU zl8skLpjp!Z0<3K%IqXFK7^!1PDpdTc;ygb0`C3_ zOHwAR5r_6CEKk~g+4m$m8gD;li9|(obDeU>a=~9LL5h&+DHRbk)`E@jG&!IWTv??a zmid7n#p~2ii;VxjKJ&Wuo8#0Aqsj2=`vn@wZCWV8hGhI57bJBm#_*UNFB*>vt<0`C zZQ+uNV{?J~_Jn(ikHX8i2~p^SqDM$B0``>fY~Y3>t%-oP=Hl@n_+^0AGa1`lm&UGStj z+}!*!_4=T5IS9{gzrO!%k*D4%wFIQGip}*|C`ZM|ym%7pm?xj(F^EsTlmYjIB@H&Y zh)Bw~(Ux7N@Fi>COjADl?%qeA#FEb1dyC&c*OQPShH??@`GyL&kRaya4wILyqBw!@ z3QzV4TB?+;XXP}6@(`WP>ZHIqVK{_fP$>KCAwK^|&hAHxgO+9rUj?TMa)p^07Q(yj z*bL0(1CJV3fCw)f;O*qm=K) zZJVJ2z(4|j1>y@!p1y%L*8U7^8^SwC*pB0KT|hOdro+X!_%u%(D&U(#{H71lmJTJv zWM~#dE&&qp6MPRTwZU~tW-_(JbNT4+HkY4BCT^9l-yqQGA$; zyvs%i`TTwgb8z{-fAYQcY|&3)tdIore(lmv!=Iymg8#(cL!wWp0Nw_X3iok;;VYLS z?au_#cUsQo{u7U52kqSpnGvczq+GOb#CU^!OnCM{&;COSso&25n79! zdP;OV4&wQ(0`Zq)SVGmE`W!h80u1;!ccnB@FisdZ(32XTM|AJRR(+M;B{AU_0A(wl z)cj_G6G!0<9R8;kFTbAwG5=OF_fr@+=_Q%VHFFIVEFk>S2jhqy^FD;@`RYxeQiNjg z-W%LjGw*V4pmFViy|IT>Yy^}e5BG|Uc+?Ot=caDUxrfxtzK3Kw$p{2&UG;vlXj*Rw zKs;UR7_d0x8gPr{-UMV4%OxL}t3^9wV|4hsWoDQJ4EO|TH0!<9%^(z;Cbg2sPxI(C zrNOgbQWVGEdsvsY#X^+ssV-O zL50V?F(!Sr%HRrkHSFqoI{V7a5d4{_uaBN7_Q}}$s}^Q!58^k8Sr8Ccjx!sF9JL@J zZPMVdDQnq&%FgNdfRZ)81>h;gQR2>zg}~RmaA6$s5x|;h$~EZ&tRVbCEVw8{T9Is)*fWp{e`(i<~%eKxM8xC-i%)7%aNy{DOewTva zvoNUuiTH1ztUmL-7->}quBlhY^v&JD45$})&J_CKB4)qbEdmUX(NW~;{{y@rPxtry);O` zP5fd|qecmU>R`%HX2a{wq{_*e*=b&>MYj)j3Ad)QP+T$k!L^Nq(^1n1F4v!CKy&r= zo^av&Gy(5293Fspah6f+vDUXAjnBWx3u<11Jzu5%Fwoe>ZK7a^QbVX|+y*gZ;V%&+G6qi= zFRJvneJ>)oBJVC4YQ`TghmH=n3{1bPylh@n(M03U#tlUs0_%IRl;it@J}F7UJ#;%( zDV>m!TuM`slS~QIo~Egy4g)3ulu%89cB;bkewv0kntPL7PpMgRm>yvkh;-YC8d&rF z{672}`G)gQN4aUELe*Jv)0!Zmwo7EGlgB7CtZM}slfa9#*hUP*;UN5BVPU6sn&W2$ z6U1@J-TrK9N|LGxD$4hel)#YOrzwu8a`{X&6=rT7u%Eg89KjAn;O$IlDEI4FzpQ>o zV6`F^;%>|2P~oPAw=n49CbU)Hwg7jM2OJQsj6cpp2|CkK&QYa8TtJA>1)Bsoq7FCQ zM83LHoyX;7rsicPE@IIs0jQ)9K66uRn`b&IQnAL8BIw$>rzim6l72f@bp$P&Bz}y0 zBnNJe@-pvbxUq*4Lh<=WSBCr?Nh&k#8KoZOwWug{6aZp#ZU-3KE!9+^kcS73-;@sv znF@oxzInBZ9u^`@3US8;X!Alszguxgc2CN=Q^sc=r9x)G@dMt30dDSQVLXaaxD@ajf^J_r5@%ro*}<+v#|TiN zqjG6+{5ZdW_f)#oQ1Bo|?YzutvibMNVmvRqy|JeLB~MKL5`y2#=I!-jNNs5dT&HtapQwQ|>#o0|zkOSusd|7j6pTv9FZquIsG z@C6KZ0}Nhb!i0rVQo`SyI9NRzeYvS99b>I13&cNw%w^9FAPt0Ou|^HmTFV1W3+&PA zAQ_fPg}9l8xv8nEHGz~C)r0<`BqD-`tOgKq#>PGrDf|ix+_+OwzA6Its2)i;)W&+k zfJccs_pWZ@MP9Q!pglhm;%$_$7WPvED$ze#U?e2~ojDZww=<5Y(0Q1(PI>iM$q3_; zc#~$V&5r#ZWK@(k)RY2MuD@{F4(!9)MdD>M;lct{N&F@(CCikIRz;FJc%0#H1dHQ% zoz^lwv3_0gvd#XY;TDW{*e#i_<^^)uZF(wyw;b0j#I)l;<1R{}*y6ucN~RJtqwoay z3A{zpmes0EPV3^$?)@|7hoANvw4y;?W)S>>G<5}*e=-IG1pTFv3OBOSUoRaoAsKe$ z_gk3piE+(}3rwM6H?hCt(#cC)n)2%p67%KJMlE(f$1d<=T!C^!{&_8#pdBcKb4Tq3 zX4mV1>f2Cp#4fDD1~BdT6q=4%=x|5VaTk>ifjVloA|EuyG@%FrM8#M%F!RF%r>Q=U zS?ppv9^6wn;f_*|mc=W?D&Ze2#^l=%cIB-K0tz(v;Mc$q@BR>Q-)T5VB!T7on*hZj z6gN8dm;+muCzz<53|UE#*=XEC#=J052~mlZm=M4v@L}IxF3XhdC+K2JZeFBm+hY!-iB@Tg~=$I>~6yB52^AyB;QQ`Od4!R?j<2W zma_T5mb^7l$u3>EVai{ItiiwYNdhALF{C&d9LPsOoj zu7|*63LRIya9Er~KhDJ>zMd|gL>5)uc=vPdXm_o|X(C#4!{}_xhVQE(?Rj4x3Bsv} zmBztp4iAHzo}Xy*yjr`)0U!JT_HXSvKT+T`2pEP&$_&*63H2?upD6HXj<`UGNSwkq z;El+fISz(M|$#ITT{)SMs@2Tp@GD8Vx&G(4t>HqQZ(jFF)S;%Cg%ora(=%5LId z)Qxra^5`N8CHNpPG+L4A>KW-2dBy@R=~%7@YRNM2{!OTmH`7h&v4eC{8|15LoXvgG z;|~(?T`I#AH~s%mhwcBaP8j+BsJY9})mk{}sgMo--akPi~uZJ$x+LH1+ZV{q||Pr`u_8M2;~N z!8I2l$&eq8(SHs^gqoIy<8E%H#QMd6jVU=aoQYbWpT`&bYx~>fK0muYy=5Ax2QtOs zp;v2@YEeQMbxUtpTPz%ezf~D`-On=4kAQops^Ox8aCJ?2u}cF~NFkPsjnSvtWs*zn zNN)NjHbF>E6v=WNwtPuM-P$+S*j);QR6iqrg-}JhOTORUbM8utMpnibCg^c9( zK$M1p$husJqQFZ#B#)AXv{GdKB@(_Nb+|d5pBpqmKUdh8>m(|5-yGX-Io7F5{yW*# zk8WvoaJfGgpU-ktVO3y$ei=to93g45j3f5-Mi8;SSzKZ(8kPqm(5TL?v?m_D70gn0 zrY9y(4t4zzKoq7_WdSKyJ=XS#X|#4Y(>nlHVRL0z@qQJ)m(loI7mP^zU`8UMB)}g& z^gQh;$DbWDnYmn5*{bZjNKnF4MIXh;N(5~^%iFc6)VWH)4oCJ>F@7E1H_|>fK>q<* zJj9r@0~{=4fQFYRTv&Dd>C!D4OH};DnK2Y6=kD!*WJZozS1Uq18Gn#*#DQhHOV=q+ zzf#LDf+hj(bObl6I-<_mM0izOUO=W;UXESawHs(F;||u?d4IsZ!v`z?)`Y$GC*;Q4 zaGa(<7bjENe9o?IfN)OYo@J}gg9?e9;O{b%Doy8_Fw4_@m42=(y0TiNM9;Rehz%{+ z4SR8U`tljx&3oXgU;ZYE9#eQiiGfWq%)y^lSE0~@tGL2rUO$nrw*_3C&3L|42B9mI zn|Rg19t(?cYT@#*M(Ck;S4@f5h4Ii?)|L*XBPq5UDs=GP*N;v_-xuq0T$qQwJFjY+l1n{G~GgloN(PH zB{ZQuApl`rExIo=1}W^YwbTH7(5N zaBmAZPvLV1&iH(Mm`@*}5D+1=D{Wl#2uv+8hSi{}S5>#JI43+-lgpZo-vm9W82buNk z?mviE+Bc45{v6MOh2N1V)Qn`0N6y>?Tnsh!{DW141FPeng7}oUY|95{ieX1G?|r>J z3zX_!?!}@p;rEbDqhTr-UYID1^b5Ge%k@Ita>!@I&!JI+B!*=y^^(WPz(*yIVMpfT z;jgOW&EcXLo>AHc3S?~p@*PM@buG}VU#h7H=A&*}sJNn~`dP;tKyjDduY|-==%>c# zVwyMd=}(}K6~GiaM^5Z!U`%|{Zr=!v6YnLsg82vjraY;K#2I>!k?JO(-PR#v#=E?B){VTp^%NM$O3K1Hb*6+PI z_H_N=%!OVDyoAqP6TwE*QBTO?{vWr~P!2bm88sJ7sajQ&+p;PsK6rUnx@phvnJOHOFdbUqo?K!v<4EL*lv1 z`5$GVV4@^7+ZFIgui?3jD6De<8cG!yAw7&P`L&x*?IVO0psG)g-}yn zrp?LMI&fYbuI2&Dnq%bd!i<|Ls_LM5JH|!to_A*tRysPSrP}Fo*sE=lX`4NCdb+#5 zFo1M^b5}CLsP|g|ljCtA-olNO2D6><<9yDLG15TnR-A#0Q9pv`Vf?dY{!`&hQ`T;s1FQRo8gl!=;`6#o zc)RGu>g94V0&0tJOrwaFHI)L^Yl2;G8pukJpiM_o z;Qu;Yr(kYF#8d7L8_KNSpBpA{U2H{9d`AwDkr9p~WT#_^nO@uCAX7*t~Ad5i= zSxSBBbkz;(PUZRGVIsrAqCA}q@>;iMX~go?{4=Z%}N zXsghMIJqc|VW!o^o#M$`Y_BGe(S+V@pXZAfy&i2}WXZwv znw;00y|r^Y{@-^Yl%lN&P$7~VAfBNCyeA+R@^UnKjpR7>q@{h36!)Nj4+}aM5uw5b{pWNO>eL;F0XVtqn310ODYL zy}95Hb;QtaRFfwes|nHB7~>4WQVl1|UuW|Q?FVEVYlMy4KP$GvlB8qW_J;ZD)~U{t zN{-r4ZG0AWEty=#8wr9hW+p+q#~XAf{>hMGNwXQ>39>yaEC^tKn;9uuct|9Nx3Xaz6Q(zGAW30L zkhw*U-N9`!7QY$KZ|-uu-!05aOXw@5D!vpDYf23uFVCdOl2vvKN|C^I;p<(``eXnhA(qsIPV1nG&gOPa?t4yO2o++@~%1C=Vm4`cSD*c7d9iB4rdbNb(bt~CbEys;6*NH z3Oqci6W|&yZ@tETWiu=)jMqnC$==`XN}YB;OMqcc!vSb}wnUuQB0~@5Jo|EQ=j_MD zD(ZDE@xL*Y)Mu_=-P>?h;E#&4QyRf&=>o7I%DEcp#{;EJIzDJy|48dxNL5Z$1*uP^ z1_$~4dMzOQt8AD%g>rAkTKYgm=3<9gU!B8XmnE=yXmabf?TXZrTQ1CpRqF(qpviBa zHK>?U%|ahhuuBcMlx^#MdF=pe?G?LDU>xj~E6cmBzk9k+m$whgWLi{kAw{ox2#&z1v~&3n+~HU=h-eGCd1{bOq9=Kg^;CQ-DKNDf z<_VAxi=s3&sus5_BYu1*v6LS^$!~Z{CPA^{{;_RcnH5Mv8`>01ya@mFwNpaLsMs4t z7tl30A;BK|WRl7Qia;m@%Q*)Fkk~sm4nL zBK6G@7A7goH+WnqyErsHmZ)EyWwx^6Ud9gD6~ty$OEHSpa85fcqcKI?CS%m6gi0fg zHl`wjC&&^tWDIWBYm-Z9oCC{ARy$fCH@Xh=qCrf#wzwF&e#sfrE!xl1ujT!{n??ug z7{m2iqw^E`pSf7JFV9K|@Cy$Ln7w`kz8kqXIosK&+gLMNIGfn~`P!?Btb^-kLIe5X zEjkuIR?HKMwxEbiiIN9bE&2QnD!wzm(D3(GXwQz@7yFST8`(E7LN*>ii>RcNJ)GyI z7=ZA{-I3rOa?p8@5OiiWvbmC(xQ0us8ziwDI3~^57}~xzGsYr>Y9N@IeHp?@RVeK1 zs6AGr|Htwn{|IZfWKW7FHXL!rBMb7LH6K-cEP0e?hH5A-gUc%V>`n5ZnpU_BW5>Xy zwg1w^KYqB>1=K?c)J5VWwXr=Fp;#?a~rk-T6x3*eqN4zkfK{_#joZ3Q@$&l@^yL`JUL{J8+ztt@_v|5j8tB z(uy&iffhbr6@2QmY%?~$2@??_!ER$Jv8x)RN2XIrB}$$MLKo+RKgP@y)&>b#3F#*s&h#148U)<@*QQQY3x8X;tF|4tz!%CJHlR-m_dG1l~s`` z>rfSVU3mrjXNNX*$jI&j1sei|WBo(;yJUGsJA0=;y_ywUXB)tTCi$by4)dCa)BH1m$VcOKq$wsHyWHYIREvE<6;eamg zSeC$4uk&^U2F)e|YNC+?7Dc5_r?mGdEa`U);Hpx`7Zpy2bQ6Wo=T7spENfRM(y6L! zHhVf6IdTe3^gRwJM2&#wORu1<>VvSVt)bB0h@Ii*WcT_%`L>un+3HKip?}^bll=Uz zQCjS5NSGCHP9_YP-TiyaVe4XJXyOQ*m3hzZrqnlW_qedSwo3%##I&2j64)Tv8uJBJ zb)v*bo9;j;uxih8Mwyv5uB0!Grf4g(1WLnMWl&uwqCWa;bH8~3ULb$ITnEH&A%>wj zaa;vxm23;s9Z63v@4x*>Iia}tp$NN%iaI^p>LY0Jd-pA7<`>HPJR~YjO$n7c&o|1O z)o&7Mk=DFXoT2^q$$RS8i8Ti{lVwwCw0NYRGeh&P_&dgGVLQxHN<*wc*3e27xdksQ z9B})$^Dde4n?|Y*oi(A9p=CSaAK;4G(XE1zYt|3M94O@XASu)d*wp0bE{2y?YZdw& zl$P?CNmY8y#U;}w&mHeRN92iwN{3Gpvl7@*8?w;OV1$BY!rHCS(Q<$N`8ZX`js9g5ur2_( zO(D*)5q%lfrK(;2@dZ(BckXm~-gSu2PCp+JIZ9m4Y8X-*StU-fvm{62T(^m`RienZ z?xnq`i}Q=zMBSk=HQkUj`nnKHbN&Tus%CTaEPdS158sGy9VO(`3NR_CGNu>EWF@dO zJ$lpRzH-LIW+CdcCq|S}&={w|-_k98Ce@T>P>7@^L+|_WtT4pyw{H1X16+Y?PJVZK zkTD9U_=|3sMZC(O>^zWmNa%!%XPe*Du$X*SL{xp#hDhuD&CXpYE&FDD?RL#A|Cn(I zilWXeYAE{`fXi9?w{XPeuO`ED`yYlK6m`c@L(v3&xbR();)awnw}RzKJv+)N)!mYA zEBF1dR$a5ZS6$aKx*}0s*Ppkc`*hTFh7W=~MH!)Nv(S0Ib$#sa3qxje1%vN3K9kjK z%pFQbCYzyoz5DL-_8YO0Fw8KNE1^u4J*w^*sd;VVf8{wYk9Pgt{XzEsv~}k3P_2I)Ki07h znz2htxQc8kTp@M4l|;$SlHD{Klf<~pjAa^Ymdn^fM5-TZMz@P=$(5yq>=80WW1X?r z#GMbCK6U(ty@>9X}+KP(3QdasfP+RY1gAprC1`eRNVr5($C(e z{0)4HHV$5UjJ$x$xo+J>Hah>4+0QU>VWiCSJ(vZ3W26hu!rS3OLF)*LOFL_L;7e`J z(y)JrA#uW|;6;H;L+9cSqM)`24=U*B$3JRYeafi51|_Fil811>WJP8D2;j}_CDKyx zq}Sb{3R`*Vov=nc`CxO@!3;+sX+s4`QaEO$>iU#`Hd4%L*V{Fk@+)u`1XTI(&B~SX zlnP*;E6^^L3y1D>?$n5;Fz1fv?sg|Pze?>dsmWY4O4G7EsDF09Usl|+8Gn3I#qPXc zGCXNkqZoKg^AD0_@?>DPmzIKiGgD09)D*ojB<`+`_)Xej{yAJxK7q>}{%BY&-O!_^ zVdi&R<-C~SFuQVVjwi$PCpk=9k`!M1}wG+km(Hbzvw&>He~XZN`}q0)>p zX0QU9zRwSGhLa_U{2wTJi-K$+{atWl^T!En;T0K|LJg_B{TW%sR~HN(nRwrmi$+|m zYT4QRghE3cYu~4jrrHRk8ogeAOD|=`jMaUD@uW#&&bW*3y?3JN00-03Tj`k|uXXOW zMLO||3Oln_Q^A_OXZ%EYtOWY%8UId|!PBn|7-aE>2~CWj374AwsL)I52ycoP<`p=) z(_~mYqScjKEtSltBeI83^FA7I;Qc7%wV)Sh#xuy@Z-@ksLX9P$el@+FP$EJ-chNw; zC*q`(PD*giM3Rth1~SQ9o3g?%(M?3&ElX;X&19Z*$fE}Qs?@$O#`Qw6qe%Lv0ZL9I zVP;h5FHT*`1T|}C)dBSGTq{4ASv|ZlttW-~uAjZyd^}#UJ78_(W5`wOfG4Yq=;hE_ zSl-irUPh2jpXD`{NXKedkdn_S(?eCn)YZcoa#aiI&mucadLxr@7avWEQajEDd8tK| zrDg2P4{@l+m|#{1-g?lnbj<2P)&a3W6(2-JIEOU!a%R*7hN#G9j+-#p;M03f28}{=SkWFbv*+?9Udpd=69&V#C%)qNoAo*Iz$w9=Jz+( zBnRM!sIIw_??-cN3%d}m_tq4BygQXDJR$6sK z+5I+e6w;E^dl1Qz5z=V5t}zmn>w2Y)XA=t!lbSJu`Q7SGsjHe2w&kQT) zM7LYE(GWw?g_kcUD5M>^vY47veZRei*vBH*6CXB}CwJ=-@d1`IqbkdUVZ~>Tb4#>T z#z`Ch*6F@z#ZX398B>uM{NetC+|coXiQKS!|JJ??=TOv83GL}h-_VbAe1-P}HPM8= z^pYOJG5x}7ZE*RdU`TlQIq2Qgwf11n@aHe+FoUp>QQBWle}73dT`LICsS`~#@p5{@ z8>JGVOmL8HIAn8!GXKFZpdnUj%BdtOvBNPX*=?W{PyC!DxYF*gJl%M#=oSLawluP` zu-R8#RzJ9AgW`!)nKpt?Dfk#Dqa#*)$4rDFHV{BmA*ZfyItrWeDmH?_9l;zsg( zO^*uz8MhAGJvx7nk_JYoEnv>=tL^yyA%SfG;CKv72BUm%E*J2=D1WD~(HRtgSG6!( z1}~+9d1T@5YVeoD^&CX}8{@Bs_E2F=l(5Ye@RBZ2D6vI20k-`2?D4qfx1NcH%0CVb zNi#t?mKOlTx5&f5mjC2#zP{Vtwd82_*|#tNC^3U}o(WFGdgTB_1Y8BjzMb5MB)>x! z?7S81N?}Xqcj4dU|Bie!WZPLtD3SUxP745>ZTSGPEhI5;RO>h5kHce8>*Y%596(GeQJ`{Y;blXvivK2ulwqI*Xdz;QU`O~y*ix2& z>Y-WV4LvjXn;x1&h9aQ;djr7;-`0&o0Z^m60jP=C4A{>0LRnDnxWOum+|1hQB%u_j v)!Lx6MSYuw6@>_SJ2m0B>}jB%fmkD>%ad4gn&Xr literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ExploreVideoTweetCandidateAdaptor.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ExploreVideoTweetCandidateAdaptor.scala deleted file mode 100644 index 345fdbd3c..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ExploreVideoTweetCandidateAdaptor.scala +++ /dev/null @@ -1,120 +0,0 @@ -package com.twitter.frigate.pushservice.adaptor - -import com.twitter.explore_ranker.thriftscala.ExploreRankerProductResponse -import com.twitter.explore_ranker.thriftscala.ExploreRankerRequest -import com.twitter.explore_ranker.thriftscala.ExploreRankerResponse -import com.twitter.explore_ranker.thriftscala.ExploreRecommendation -import com.twitter.explore_ranker.thriftscala.ImmersiveRecsResponse -import com.twitter.explore_ranker.thriftscala.ImmersiveRecsResult -import com.twitter.explore_ranker.thriftscala.NotificationsVideoRecs -import com.twitter.explore_ranker.thriftscala.Product -import com.twitter.explore_ranker.thriftscala.ProductContext -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.CandidateSource -import com.twitter.frigate.common.base.CandidateSourceEligible -import com.twitter.frigate.common.base.OutOfNetworkTweetCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.util.AdaptorUtils -import com.twitter.frigate.pushservice.util.MediaCRT -import com.twitter.frigate.pushservice.util.PushAdaptorUtil -import com.twitter.frigate.pushservice.util.PushDeviceUtil -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.product_mixer.core.thriftscala.ClientContext -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storehaus.ReadableStore -import com.twitter.util.Future - -case class ExploreVideoTweetCandidateAdaptor( - exploreRankerStore: ReadableStore[ExploreRankerRequest, ExploreRankerResponse], - tweetyPieStore: ReadableStore[Long, TweetyPieResult], - globalStats: StatsReceiver) - extends CandidateSource[Target, RawCandidate] - with CandidateSourceEligible[Target, RawCandidate] { - - override def name: String = this.getClass.getSimpleName - private[this] val stats = globalStats.scope("ExploreVideoTweetCandidateAdaptor") - private[this] val totalInputRecs = stats.stat("input_recs") - private[this] val totalRequests = stats.counter("total_requests") - private[this] val totalEmptyResponse = stats.counter("total_empty_response") - - private def buildExploreRankerRequest( - target: Target, - countryCode: Option[String], - language: Option[String], - ): ExploreRankerRequest = { - ExploreRankerRequest( - clientContext = ClientContext( - userId = Some(target.targetId), - countryCode = countryCode, - languageCode = language, - ), - product = Product.NotificationsVideoRecs, - productContext = Some(ProductContext.NotificationsVideoRecs(NotificationsVideoRecs())), - maxResults = Some(target.params(PushFeatureSwitchParams.MaxExploreVideoTweets)) - ) - } - - override def get(target: Target): Future[Option[Seq[RawCandidate]]] = { - Future - .join( - target.countryCode, - target.inferredUserDeviceLanguage - ).flatMap { - case (countryCode, language) => - val request = buildExploreRankerRequest(target, countryCode, language) - exploreRankerStore.get(request).flatMap { - case Some(response) => - val exploreResonseTweetIds = response match { - case ExploreRankerResponse(ExploreRankerProductResponse - .ImmersiveRecsResponse(ImmersiveRecsResponse(immersiveRecsResult))) => - immersiveRecsResult.collect { - case ImmersiveRecsResult(ExploreRecommendation - .ExploreTweetRecommendation(exploreTweetRecommendation)) => - exploreTweetRecommendation.tweetId - } - case _ => - Seq.empty - } - - totalInputRecs.add(exploreResonseTweetIds.size) - totalRequests.incr() - AdaptorUtils - .getTweetyPieResults(exploreResonseTweetIds.toSet, tweetyPieStore).map { - tweetyPieResultMap => - val candidates = tweetyPieResultMap.values.flatten - .map(buildVideoRawCandidates(target, _)) - Some(candidates.toSeq) - } - case _ => - totalEmptyResponse.incr() - Future.None - } - case _ => - Future.None - } - } - - override def isCandidateSourceAvailable(target: Target): Future[Boolean] = { - PushDeviceUtil.isRecommendationsEligible(target).map { userRecommendationsEligible => - userRecommendationsEligible && target.params(PushFeatureSwitchParams.EnableExploreVideoTweets) - } - } - private def buildVideoRawCandidates( - target: Target, - tweetyPieResult: TweetyPieResult - ): RawCandidate with OutOfNetworkTweetCandidate = { - PushAdaptorUtil.generateOutOfNetworkTweetCandidates( - inputTarget = target, - id = tweetyPieResult.tweet.id, - mediaCRT = MediaCRT( - CommonRecommendationType.ExploreVideoTweet, - CommonRecommendationType.ExploreVideoTweet, - CommonRecommendationType.ExploreVideoTweet - ), - result = Some(tweetyPieResult), - localizedEntity = None - ) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/FRSTweetCandidateAdaptor.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/FRSTweetCandidateAdaptor.docx new file mode 100644 index 0000000000000000000000000000000000000000..e1cbd65f14e1144c761c53a22ab834fd73f900a6 GIT binary patch literal 39806 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 z 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/FRSTweetCandidateAdaptor.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/FRSTweetCandidateAdaptor.scala deleted file mode 100644 index 49610c645..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/FRSTweetCandidateAdaptor.scala +++ /dev/null @@ -1,272 +0,0 @@ -package com.twitter.frigate.pushservice.adaptor - -import com.twitter.cr_mixer.thriftscala.FrsTweetRequest -import com.twitter.cr_mixer.thriftscala.NotificationsContext -import com.twitter.cr_mixer.thriftscala.Product -import com.twitter.cr_mixer.thriftscala.ProductContext -import com.twitter.finagle.stats.Counter -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.CandidateSource -import com.twitter.frigate.common.base.CandidateSourceEligible -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.predicate.CommonOutNetworkTweetCandidatesSourcePredicates.filterOutReplyTweet -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.store.CrMixerTweetStore -import com.twitter.frigate.pushservice.store.UttEntityHydrationStore -import com.twitter.frigate.pushservice.util.MediaCRT -import com.twitter.frigate.pushservice.util.PushAdaptorUtil -import com.twitter.frigate.pushservice.util.PushDeviceUtil -import com.twitter.frigate.pushservice.util.TopicsUtil -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.hermit.constants.AlgorithmFeedbackTokens -import com.twitter.hermit.model.Algorithm.Algorithm -import com.twitter.hermit.model.Algorithm.CrowdSearchAccounts -import com.twitter.hermit.model.Algorithm.ForwardEmailBook -import com.twitter.hermit.model.Algorithm.ForwardPhoneBook -import com.twitter.hermit.model.Algorithm.ReverseEmailBookIbis -import com.twitter.hermit.model.Algorithm.ReversePhoneBook -import com.twitter.hermit.store.tweetypie.UserTweet -import com.twitter.product_mixer.core.thriftscala.ClientContext -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storehaus.ReadableStore -import com.twitter.tsp.thriftscala.TopicSocialProofRequest -import com.twitter.tsp.thriftscala.TopicSocialProofResponse -import com.twitter.util.Future - -object FRSAlgorithmFeedbackTokenUtil { - private val crtsByAlgoToken = Map( - getAlgorithmToken(ReverseEmailBookIbis) -> CommonRecommendationType.ReverseAddressbookTweet, - getAlgorithmToken(ReversePhoneBook) -> CommonRecommendationType.ReverseAddressbookTweet, - getAlgorithmToken(ForwardEmailBook) -> CommonRecommendationType.ForwardAddressbookTweet, - getAlgorithmToken(ForwardPhoneBook) -> CommonRecommendationType.ForwardAddressbookTweet, - getAlgorithmToken(CrowdSearchAccounts) -> CommonRecommendationType.CrowdSearchTweet - ) - - def getAlgorithmToken(algorithm: Algorithm): Int = { - AlgorithmFeedbackTokens.AlgorithmToFeedbackTokenMap(algorithm) - } - - def getCRTForAlgoToken(algorithmToken: Int): Option[CommonRecommendationType] = { - crtsByAlgoToken.get(algorithmToken) - } -} - -case class FRSTweetCandidateAdaptor( - crMixerTweetStore: CrMixerTweetStore, - tweetyPieStore: ReadableStore[Long, TweetyPieResult], - tweetyPieStoreNoVF: ReadableStore[Long, TweetyPieResult], - userTweetTweetyPieStore: ReadableStore[UserTweet, TweetyPieResult], - uttEntityHydrationStore: UttEntityHydrationStore, - topicSocialProofServiceStore: ReadableStore[TopicSocialProofRequest, TopicSocialProofResponse], - globalStats: StatsReceiver) - extends CandidateSource[Target, RawCandidate] - with CandidateSourceEligible[Target, RawCandidate] { - - private val stats = globalStats.scope(this.getClass.getSimpleName) - private val crtStats = stats.scope("CandidateDistribution") - private val totalRequests = stats.counter("total_requests") - - // Candidate Distribution stats - private val reverseAddressbookCounter = crtStats.counter("reverse_addressbook") - private val forwardAddressbookCounter = crtStats.counter("forward_addressbook") - private val frsTweetCounter = crtStats.counter("frs_tweet") - private val nonReplyTweetsCounter = stats.counter("non_reply_tweets") - private val crtToCounterMapping: Map[CommonRecommendationType, Counter] = Map( - CommonRecommendationType.ReverseAddressbookTweet -> reverseAddressbookCounter, - CommonRecommendationType.ForwardAddressbookTweet -> forwardAddressbookCounter, - CommonRecommendationType.FrsTweet -> frsTweetCounter - ) - - private val emptyTweetyPieResult = stats.stat("empty_tweetypie_result") - - private[this] val numberReturnedCandidates = stats.stat("returned_candidates_from_earlybird") - private[this] val numberCandidateWithTopic: Counter = stats.counter("num_can_with_topic") - private[this] val numberCandidateWithoutTopic: Counter = stats.counter("num_can_without_topic") - - private val userTweetTweetyPieStoreCounter = stats.counter("user_tweet_tweetypie_store") - - override val name: String = this.getClass.getSimpleName - - private def filterInvalidTweets( - tweetIds: Seq[Long], - target: Target - ): Future[Map[Long, TweetyPieResult]] = { - val resMap = { - if (target.params(PushFeatureSwitchParams.EnableF1FromProtectedTweetAuthors)) { - userTweetTweetyPieStoreCounter.incr() - val keys = tweetIds.map { tweetId => - UserTweet(tweetId, Some(target.targetId)) - } - userTweetTweetyPieStore - .multiGet(keys.toSet).map { - case (userTweet, resultFut) => - userTweet.tweetId -> resultFut - }.toMap - } else { - (if (target.params(PushFeatureSwitchParams.EnableVFInTweetypie)) { - tweetyPieStore - } else { - tweetyPieStoreNoVF - }).multiGet(tweetIds.toSet) - } - } - - Future.collect(resMap).map { tweetyPieResultMap => - // Filter out replies and generate earlybird candidates only for non-empty tweetypie result - val cands = filterOutReplyTweet(tweetyPieResultMap, nonReplyTweetsCounter).collect { - case (id: Long, Some(result)) => - id -> result - } - - emptyTweetyPieResult.add(tweetyPieResultMap.size - cands.size) - cands - } - } - - private def buildRawCandidates( - target: Target, - ebCandidates: Seq[FRSTweetCandidate] - ): Future[Option[Seq[RawCandidate with TweetCandidate]]] = { - - val enableTopic = target.params(PushFeatureSwitchParams.EnableFrsTweetCandidatesTopicAnnotation) - val topicScoreThre = - target.params(PushFeatureSwitchParams.FrsTweetCandidatesTopicScoreThreshold) - - val ebTweets = ebCandidates.map { ebCandidate => - ebCandidate.tweetId -> ebCandidate.tweetyPieResult - }.toMap - - val tweetIdLocalizedEntityMapFut = TopicsUtil.getTweetIdLocalizedEntityMap( - target, - ebTweets, - uttEntityHydrationStore, - topicSocialProofServiceStore, - enableTopic, - topicScoreThre - ) - - Future.join(target.deviceInfo, tweetIdLocalizedEntityMapFut).map { - case (Some(deviceInfo), tweetIdLocalizedEntityMap) => - val candidates = ebCandidates - .map { ebCandidate => - val crt = ebCandidate.commonRecType - crtToCounterMapping.get(crt).foreach(_.incr()) - - val tweetId = ebCandidate.tweetId - val localizedEntityOpt = { - if (tweetIdLocalizedEntityMap - .contains(tweetId) && tweetIdLocalizedEntityMap.contains( - tweetId) && deviceInfo.isTopicsEligible) { - tweetIdLocalizedEntityMap(tweetId) - } else { - None - } - } - - PushAdaptorUtil.generateOutOfNetworkTweetCandidates( - inputTarget = target, - id = ebCandidate.tweetId, - mediaCRT = MediaCRT( - crt, - crt, - crt - ), - result = ebCandidate.tweetyPieResult, - localizedEntity = localizedEntityOpt) - }.filter { candidate => - // If user only has the topic setting enabled, filter out all non-topic cands - deviceInfo.isRecommendationsEligible || (deviceInfo.isTopicsEligible && candidate.semanticCoreEntityId.nonEmpty) - } - - candidates.map { candidate => - if (candidate.semanticCoreEntityId.nonEmpty) { - numberCandidateWithTopic.incr() - } else { - numberCandidateWithoutTopic.incr() - } - } - - numberReturnedCandidates.add(candidates.length) - Some(candidates) - case _ => Some(Seq.empty) - } - } - - def getTweetCandidatesFromCrMixer( - inputTarget: Target, - showAllResultsFromFrs: Boolean, - ): Future[Option[Seq[RawCandidate with TweetCandidate]]] = { - Future - .join( - inputTarget.seenTweetIds, - inputTarget.pushRecItems, - inputTarget.countryCode, - inputTarget.targetLanguage).flatMap { - case (seenTweetIds, pastRecItems, countryCode, language) => - val pastUserRecs = pastRecItems.userIds.toSeq - val request = FrsTweetRequest( - clientContext = ClientContext( - userId = Some(inputTarget.targetId), - countryCode = countryCode, - languageCode = language - ), - product = Product.Notifications, - productContext = Some(ProductContext.NotificationsContext(NotificationsContext())), - excludedUserIds = Some(pastUserRecs), - excludedTweetIds = Some(seenTweetIds) - ) - crMixerTweetStore.getFRSTweetCandidates(request).flatMap { - case Some(response) => - val tweetIds = response.tweets.map(_.tweetId) - val validTweets = filterInvalidTweets(tweetIds, inputTarget) - validTweets.flatMap { tweetypieMap => - val ebCandidates = response.tweets - .map { frsTweet => - val candidateTweetId = frsTweet.tweetId - val resultFromTweetyPie = tweetypieMap.get(candidateTweetId) - new FRSTweetCandidate { - override val tweetId = candidateTweetId - override val features = None - override val tweetyPieResult = resultFromTweetyPie - override val feedbackToken = frsTweet.frsPrimarySource - override val commonRecType: CommonRecommendationType = feedbackToken - .flatMap(token => - FRSAlgorithmFeedbackTokenUtil.getCRTForAlgoToken(token)).getOrElse( - CommonRecommendationType.FrsTweet) - } - }.filter { ebCandidate => - showAllResultsFromFrs || ebCandidate.commonRecType == CommonRecommendationType.ReverseAddressbookTweet - } - - numberReturnedCandidates.add(ebCandidates.length) - buildRawCandidates( - inputTarget, - ebCandidates - ) - } - case _ => Future.None - } - } - } - - override def get(inputTarget: Target): Future[Option[Seq[RawCandidate with TweetCandidate]]] = { - totalRequests.incr() - val enableResultsFromFrs = - inputTarget.params(PushFeatureSwitchParams.EnableResultFromFrsCandidates) - getTweetCandidatesFromCrMixer(inputTarget, enableResultsFromFrs) - } - - override def isCandidateSourceAvailable(target: Target): Future[Boolean] = { - lazy val enableFrsCandidates = target.params(PushFeatureSwitchParams.EnableFrsCandidates) - PushDeviceUtil.isRecommendationsEligible(target).flatMap { isEnabledForRecosSetting => - PushDeviceUtil.isTopicsEligible(target).map { topicSettingEnabled => - val isEnabledForTopics = - topicSettingEnabled && target.params( - PushFeatureSwitchParams.EnableFrsTweetCandidatesTopicSetting) - (isEnabledForRecosSetting || isEnabledForTopics) && enableFrsCandidates - } - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/GenericCandidateAdaptor.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/GenericCandidateAdaptor.docx new file mode 100644 index 0000000000000000000000000000000000000000..214b177255b6dec8ff3aa89308224b769994f4f7 GIT binary patch literal 37712 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 - candidatesOpt - .map { candidates => - val candidatesSeq = - candidates.collect { - case tweetRetweet: TweetRetweetCandidate - if inputTarget.params(PushParams.MRTweetRetweetRecsParam) => - generateTweetRetweetCandidate( - inputTarget, - tweetRetweet.tweetId, - tweetRetweet.socialContextActions, - tweetRetweet.socialContextAllTypeActions, - tweetRetweet.tweetyPieResult) - case tweetFavorite: TweetFavoriteCandidate - if inputTarget.params(PushParams.MRTweetFavRecsParam) => - generateTweetFavCandidate( - inputTarget, - tweetFavorite.tweetId, - tweetFavorite.socialContextActions, - tweetFavorite.socialContextAllTypeActions, - tweetFavorite.tweetyPieResult) - } - candidatesSeq.foreach { candidate => - stats.counter(s"${candidate.commonRecType}_count").incr() - } - candidatesSeq - } - } - } - - override def isCandidateSourceAvailable(target: Target): Future[Boolean] = { - PushDeviceUtil.isRecommendationsEligible(target).map { isAvailable => - isAvailable && target.params(PushParams.GenericCandidateAdaptorDecider) - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/HighQualityTweetsAdaptor.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/HighQualityTweetsAdaptor.docx new file mode 100644 index 0000000000000000000000000000000000000000..4919c1c0b4fd9166a03395e130a8ebc50863721d GIT binary patch literal 39550 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/HighQualityTweetsAdaptor.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/HighQualityTweetsAdaptor.scala deleted file mode 100644 index 37d11535f..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/HighQualityTweetsAdaptor.scala +++ /dev/null @@ -1,280 +0,0 @@ -package com.twitter.frigate.pushservice.adaptor - -import com.twitter.finagle.stats.Stat -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.CandidateSource -import com.twitter.frigate.common.base.CandidateSourceEligible -import com.twitter.frigate.common.store.interests.InterestsLookupRequestWithContext -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.HighQualityCandidateGroupEnum -import com.twitter.frigate.pushservice.params.HighQualityCandidateGroupEnum._ -import com.twitter.frigate.pushservice.params.PushConstants.targetUserAgeFeatureName -import com.twitter.frigate.pushservice.params.PushConstants.targetUserPreferredLanguage -import com.twitter.frigate.pushservice.params.{PushFeatureSwitchParams => FS} -import com.twitter.frigate.pushservice.predicate.TargetPredicates -import com.twitter.frigate.pushservice.util.MediaCRT -import com.twitter.frigate.pushservice.util.PushAdaptorUtil -import com.twitter.frigate.pushservice.util.PushDeviceUtil -import com.twitter.frigate.pushservice.util.TopicsUtil -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.interests.thriftscala.InterestId.SemanticCore -import com.twitter.interests.thriftscala.UserInterests -import com.twitter.language.normalization.UserDisplayLanguage -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storehaus.ReadableStore -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripDomain -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripTweet -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripTweets -import com.twitter.util.Future - -object HighQualityTweetsHelper { - def getFollowedTopics( - target: Target, - interestsWithLookupContextStore: ReadableStore[ - InterestsLookupRequestWithContext, - UserInterests - ], - followedTopicsStats: Stat - ): Future[Seq[Long]] = { - TopicsUtil - .getTopicsFollowedByUser(target, interestsWithLookupContextStore, followedTopicsStats).map { - userInterestsOpt => - val userInterests = userInterestsOpt.getOrElse(Seq.empty) - val extractedTopicIds = userInterests.flatMap { - _.interestId match { - case SemanticCore(semanticCore) => Some(semanticCore.id) - case _ => None - } - } - extractedTopicIds - } - } - - def getTripQueries( - target: Target, - enabledGroups: Set[HighQualityCandidateGroupEnum.Value], - interestsWithLookupContextStore: ReadableStore[ - InterestsLookupRequestWithContext, - UserInterests - ], - sourceIds: Seq[String], - stat: Stat - ): Future[Set[TripDomain]] = { - - val followedTopicIdsSetFut: Future[Set[Long]] = if (enabledGroups.contains(Topic)) { - getFollowedTopics(target, interestsWithLookupContextStore, stat).map(topicIds => - topicIds.toSet) - } else { - Future.value(Set.empty) - } - - Future - .join(target.featureMap, target.inferredUserDeviceLanguage, followedTopicIdsSetFut).map { - case ( - featureMap, - deviceLanguageOpt, - followedTopicIds - ) => - val ageBucketOpt = if (enabledGroups.contains(AgeBucket)) { - featureMap.categoricalFeatures.get(targetUserAgeFeatureName) - } else { - None - } - - val languageOptions: Set[Option[String]] = if (enabledGroups.contains(Language)) { - val userPreferredLanguages = featureMap.sparseBinaryFeatures - .getOrElse(targetUserPreferredLanguage, Set.empty[String]) - if (userPreferredLanguages.nonEmpty) { - userPreferredLanguages.map(lang => Some(UserDisplayLanguage.toTweetLanguage(lang))) - } else { - Set(deviceLanguageOpt.map(UserDisplayLanguage.toTweetLanguage)) - } - } else Set(None) - - val followedTopicOptions: Set[Option[Long]] = if (followedTopicIds.nonEmpty) { - followedTopicIds.map(topic => Some(topic)) - } else Set(None) - - val tripQueries = followedTopicOptions.flatMap { topicOption => - languageOptions.flatMap { languageOption => - sourceIds.map { sourceId => - TripDomain( - sourceId = sourceId, - language = languageOption, - placeId = None, - topicId = topicOption, - gender = None, - ageBucket = ageBucketOpt - ) - } - } - } - - tripQueries - } - } -} - -case class HighQualityTweetsAdaptor( - tripTweetCandidateStore: ReadableStore[TripDomain, TripTweets], - interestsWithLookupContextStore: ReadableStore[InterestsLookupRequestWithContext, UserInterests], - tweetyPieStore: ReadableStore[Long, TweetyPieResult], - tweetyPieStoreNoVF: ReadableStore[Long, TweetyPieResult], - globalStats: StatsReceiver) - extends CandidateSource[Target, RawCandidate] - with CandidateSourceEligible[Target, RawCandidate] { - - override def name: String = this.getClass.getSimpleName - - private val stats = globalStats.scope("HighQualityCandidateAdaptor") - private val followedTopicsStats = stats.stat("followed_topics") - private val missingResponseCounter = stats.counter("missing_respond_counter") - private val crtFatigueCounter = stats.counter("fatigue_by_crt") - private val fallbackRequestsCounter = stats.counter("fallback_requests") - - override def isCandidateSourceAvailable(target: Target): Future[Boolean] = { - PushDeviceUtil.isRecommendationsEligible(target).map { - _ && target.params(FS.HighQualityCandidatesEnableCandidateSource) - } - } - - private val highQualityCandidateFrequencyPredicate = { - TargetPredicates - .pushRecTypeFatiguePredicate( - CommonRecommendationType.TripHqTweet, - FS.HighQualityTweetsPushInterval, - FS.MaxHighQualityTweetsPushGivenInterval, - stats - ) - } - - private def getTripCandidatesStrato( - target: Target - ): Future[Map[Long, Set[TripDomain]]] = { - val tripQueriesF: Future[Set[TripDomain]] = HighQualityTweetsHelper.getTripQueries( - target = target, - enabledGroups = target.params(FS.HighQualityCandidatesEnableGroups).toSet, - interestsWithLookupContextStore = interestsWithLookupContextStore, - sourceIds = target.params(FS.TripTweetCandidateSourceIds), - stat = followedTopicsStats - ) - - lazy val fallbackTripQueriesFut: Future[Set[TripDomain]] = - if (target.params(FS.HighQualityCandidatesEnableFallback)) - HighQualityTweetsHelper.getTripQueries( - target = target, - enabledGroups = target.params(FS.HighQualityCandidatesFallbackEnabledGroups).toSet, - interestsWithLookupContextStore = interestsWithLookupContextStore, - sourceIds = target.params(FS.HighQualityCandidatesFallbackSourceIds), - stat = followedTopicsStats - ) - else Future.value(Set.empty) - - val initialTweetsFut: Future[Map[TripDomain, Seq[TripTweet]]] = tripQueriesF.flatMap { - tripQueries => getTripTweetsByDomains(tripQueries) - } - - val tweetsByDomainFut: Future[Map[TripDomain, Seq[TripTweet]]] = - if (target.params(FS.HighQualityCandidatesEnableFallback)) { - initialTweetsFut.flatMap { candidates => - val minCandidatesForFallback: Int = - target.params(FS.HighQualityCandidatesMinNumOfCandidatesToFallback) - val validCandidates = candidates.filter(_._2.size >= minCandidatesForFallback) - - if (validCandidates.nonEmpty) { - Future.value(validCandidates) - } else { - fallbackTripQueriesFut.flatMap { fallbackTripDomains => - fallbackRequestsCounter.incr(fallbackTripDomains.size) - getTripTweetsByDomains(fallbackTripDomains) - } - } - } - } else { - initialTweetsFut - } - - val numOfCandidates: Int = target.params(FS.HighQualityCandidatesNumberOfCandidates) - tweetsByDomainFut.map(tweetsByDomain => reformatDomainTweetMap(tweetsByDomain, numOfCandidates)) - } - - private def getTripTweetsByDomains( - tripQueries: Set[TripDomain] - ): Future[Map[TripDomain, Seq[TripTweet]]] = { - Future.collect(tripTweetCandidateStore.multiGet(tripQueries)).map { response => - response - .filter(p => p._2.exists(_.tweets.nonEmpty)) - .mapValues(_.map(_.tweets).getOrElse(Seq.empty)) - } - } - - private def reformatDomainTweetMap( - tweetsByDomain: Map[TripDomain, Seq[TripTweet]], - numOfCandidates: Int - ): Map[Long, Set[TripDomain]] = tweetsByDomain - .flatMap { - case (tripDomain, tripTweets) => - tripTweets - .sortBy(_.score)(Ordering[Double].reverse) - .take(numOfCandidates) - .map { tweet => (tweet.tweetId, tripDomain) } - }.groupBy(_._1).mapValues(_.map(_._2).toSet) - - private def buildRawCandidate( - target: Target, - tweetyPieResult: TweetyPieResult, - tripDomain: Option[scala.collection.Set[TripDomain]] - ): RawCandidate = { - PushAdaptorUtil.generateOutOfNetworkTweetCandidates( - inputTarget = target, - id = tweetyPieResult.tweet.id, - mediaCRT = MediaCRT( - CommonRecommendationType.TripHqTweet, - CommonRecommendationType.TripHqTweet, - CommonRecommendationType.TripHqTweet - ), - result = Some(tweetyPieResult), - tripTweetDomain = tripDomain - ) - } - - private def getTweetyPieResults( - target: Target, - tweetToTripDomain: Map[Long, Set[TripDomain]] - ): Future[Map[Long, Option[TweetyPieResult]]] = { - Future.collect((if (target.params(FS.EnableVFInTweetypie)) { - tweetyPieStore - } else { - tweetyPieStoreNoVF - }).multiGet(tweetToTripDomain.keySet)) - } - - override def get(target: Target): Future[Option[Seq[RawCandidate]]] = { - for { - tweetsToTripDomainMap <- getTripCandidatesStrato(target) - tweetyPieResults <- getTweetyPieResults(target, tweetsToTripDomainMap) - } yield { - val candidates = tweetyPieResults.flatMap { - case (tweetId, tweetyPieResultOpt) => - tweetyPieResultOpt.map(buildRawCandidate(target, _, tweetsToTripDomainMap.get(tweetId))) - } - if (candidates.nonEmpty) { - highQualityCandidateFrequencyPredicate(Seq(target)) - .map(_.head) - .map { isTargetFatigueEligible => - if (isTargetFatigueEligible) Some(candidates) - else { - crtFatigueCounter.incr() - None - } - } - - Some(candidates.toSeq) - } else { - missingResponseCounter.incr() - None - } - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ListsToRecommendCandidateAdaptor.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ListsToRecommendCandidateAdaptor.docx new file mode 100644 index 0000000000000000000000000000000000000000..0368d20c1477c73d0ae367ada811a375037ab288 GIT binary patch literal 38304 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ListsToRecommendCandidateAdaptor.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ListsToRecommendCandidateAdaptor.scala deleted file mode 100644 index 59744b375..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/ListsToRecommendCandidateAdaptor.scala +++ /dev/null @@ -1,152 +0,0 @@ -package com.twitter.frigate.pushservice.adaptor - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.CandidateSource -import com.twitter.frigate.common.base.CandidateSourceEligible -import com.twitter.frigate.common.base.ListPushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.predicate.TargetPredicates -import com.twitter.frigate.pushservice.util.PushDeviceUtil -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.geoduck.service.thriftscala.LocationResponse -import com.twitter.interests_discovery.thriftscala.DisplayLocation -import com.twitter.interests_discovery.thriftscala.NonPersonalizedRecommendedLists -import com.twitter.interests_discovery.thriftscala.RecommendedListsRequest -import com.twitter.interests_discovery.thriftscala.RecommendedListsResponse -import com.twitter.storehaus.ReadableStore -import com.twitter.util.Future - -case class ListsToRecommendCandidateAdaptor( - listRecommendationsStore: ReadableStore[String, NonPersonalizedRecommendedLists], - geoDuckV2Store: ReadableStore[Long, LocationResponse], - idsStore: ReadableStore[RecommendedListsRequest, RecommendedListsResponse], - globalStats: StatsReceiver) - extends CandidateSource[Target, RawCandidate] - with CandidateSourceEligible[Target, RawCandidate] { - - override val name: String = this.getClass.getSimpleName - - private[this] val stats = globalStats.scope(name) - private[this] val noLocationCodeCounter = stats.counter("no_location_code") - private[this] val noCandidatesCounter = stats.counter("no_candidates_for_geo") - private[this] val disablePopGeoListsCounter = stats.counter("disable_pop_geo_lists") - private[this] val disableIDSListsCounter = stats.counter("disable_ids_lists") - - private def getListCandidate( - targetUser: Target, - _listId: Long - ): RawCandidate with ListPushCandidate = { - new RawCandidate with ListPushCandidate { - override val listId: Long = _listId - - override val commonRecType: CommonRecommendationType = CommonRecommendationType.List - - override val target: Target = targetUser - } - } - - private def getListsRecommendedFromHistory( - target: Target - ): Future[Seq[Long]] = { - target.history.map { history => - history.sortedHistory.flatMap { - case (_, notif) if notif.commonRecommendationType == List => - notif.listNotification.map(_.listId) - case _ => None - } - } - } - - private def getIDSListRecs( - target: Target, - historicalListIds: Seq[Long] - ): Future[Seq[Long]] = { - val request = RecommendedListsRequest( - target.targetId, - DisplayLocation.ListDiscoveryPage, - Some(historicalListIds) - ) - if (target.params(PushFeatureSwitchParams.EnableIDSListRecommendations)) { - idsStore.get(request).map { - case Some(response) => - response.channels.map(_.id) - case _ => Nil - } - } else { - disableIDSListsCounter.incr() - Future.Nil - } - } - - private def getPopGeoLists( - target: Target, - historicalListIds: Seq[Long] - ): Future[Seq[Long]] = { - if (target.params(PushFeatureSwitchParams.EnablePopGeoListRecommendations)) { - geoDuckV2Store.get(target.targetId).flatMap { - case Some(locationResponse) if locationResponse.geohash.isDefined => - val geoHashLength = - target.params(PushFeatureSwitchParams.ListRecommendationsGeoHashLength) - val geoHash = locationResponse.geohash.get.take(geoHashLength) - listRecommendationsStore - .get(s"geohash_$geoHash") - .map { - case Some(recommendedLists) => - recommendedLists.recommendedListsByAlgo.flatMap { topLists => - topLists.lists.collect { - case list if !historicalListIds.contains(list.listId) => list.listId - } - } - case _ => Nil - } - case _ => - noLocationCodeCounter.incr() - Future.Nil - } - } else { - disablePopGeoListsCounter.incr() - Future.Nil - } - } - - override def get(target: Target): Future[Option[Seq[RawCandidate]]] = { - getListsRecommendedFromHistory(target).flatMap { historicalListIds => - Future - .join( - getPopGeoLists(target, historicalListIds), - getIDSListRecs(target, historicalListIds) - ) - .map { - case (popGeoListsIds, idsListIds) => - val candidates = (idsListIds ++ popGeoListsIds).map(getListCandidate(target, _)) - Some(candidates) - case _ => - noCandidatesCounter.incr() - None - } - } - } - - private val pushCapFatiguePredicate = TargetPredicates.pushRecTypeFatiguePredicate( - CommonRecommendationType.List, - PushFeatureSwitchParams.ListRecommendationsPushInterval, - PushFeatureSwitchParams.MaxListRecommendationsPushGivenInterval, - stats, - ) - override def isCandidateSourceAvailable(target: Target): Future[Boolean] = { - - val isNotFatigued = pushCapFatiguePredicate.apply(Seq(target)).map(_.head) - - Future - .join( - PushDeviceUtil.isRecommendationsEligible(target), - isNotFatigued - ).map { - case (userRecommendationsEligible, isUnderCAP) => - userRecommendationsEligible && isUnderCAP && target.params( - PushFeatureSwitchParams.EnableListRecommendations) - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/LoggedOutPushCandidateSourceGenerator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/LoggedOutPushCandidateSourceGenerator.docx new file mode 100644 index 0000000000000000000000000000000000000000..e3f51329873ea3bcde76656207a7f21df2e725ee GIT binary patch literal 37349 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/LoggedOutPushCandidateSourceGenerator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/LoggedOutPushCandidateSourceGenerator.scala deleted file mode 100644 index e5ac0b516..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/LoggedOutPushCandidateSourceGenerator.scala +++ /dev/null @@ -1,54 +0,0 @@ -package com.twitter.frigate.pushservice.adaptor - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.CandidateSource -import com.twitter.frigate.common.base.CandidateSourceEligible -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.geoduck.service.thriftscala.LocationResponse -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storehaus.ReadableStore -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripDomain -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripTweets -import com.twitter.content_mixer.thriftscala.ContentMixerRequest -import com.twitter.content_mixer.thriftscala.ContentMixerResponse -import com.twitter.geoduck.common.thriftscala.Location -import com.twitter.hermit.pop_geo.thriftscala.PopTweetsInPlace -import com.twitter.recommendation.interests.discovery.core.model.InterestDomain - -class LoggedOutPushCandidateSourceGenerator( - tripTweetCandidateStore: ReadableStore[TripDomain, TripTweets], - geoDuckV2Store: ReadableStore[Long, LocationResponse], - safeCachedTweetyPieStoreV2: ReadableStore[Long, TweetyPieResult], - cachedTweetyPieStoreV2NoVF: ReadableStore[Long, TweetyPieResult], - cachedTweetyPieStoreV2: ReadableStore[Long, TweetyPieResult], - contentMixerStore: ReadableStore[ContentMixerRequest, ContentMixerResponse], - softUserLocationStore: ReadableStore[Long, Location], - topTweetsByGeoStore: ReadableStore[InterestDomain[String], Map[String, List[(Long, Double)]]], - topTweetsByGeoV2VersionedStore: ReadableStore[String, PopTweetsInPlace], -)( - implicit val globalStats: StatsReceiver) { - val sources: Seq[CandidateSource[Target, RawCandidate] with CandidateSourceEligible[ - Target, - RawCandidate - ]] = { - Seq( - TripGeoCandidatesAdaptor( - tripTweetCandidateStore, - contentMixerStore, - safeCachedTweetyPieStoreV2, - cachedTweetyPieStoreV2NoVF, - globalStats - ), - TopTweetsByGeoAdaptor( - geoDuckV2Store, - softUserLocationStore, - topTweetsByGeoStore, - topTweetsByGeoV2VersionedStore, - cachedTweetyPieStoreV2, - cachedTweetyPieStoreV2NoVF, - globalStats - ) - ) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/OnboardingPushCandidateAdaptor.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/OnboardingPushCandidateAdaptor.docx new file mode 100644 index 0000000000000000000000000000000000000000..93ba7e2a696bb815ca37e54e392078f73c6e267d GIT binary patch literal 37877 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

EPWC;EsPkf{5Lk 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 dp7O~Ola3BuofN FS} -import com.twitter.frigate.pushservice.predicate.DiscoverTwitterPredicate -import com.twitter.frigate.pushservice.predicate.TargetPredicates -import com.twitter.frigate.pushservice.util.PushAppPermissionUtil -import com.twitter.frigate.pushservice.util.PushDeviceUtil -import com.twitter.frigate.thriftscala.{CommonRecommendationType => CRT} -import com.twitter.util.Future - -class OnboardingPushCandidateAdaptor( - globalStats: StatsReceiver) - extends CandidateSource[Target, RawCandidate] - with CandidateSourceEligible[Target, RawCandidate] { - - override val name: String = this.getClass.getSimpleName - - private[this] val stats = globalStats.scope(name) - private[this] val requestNum = stats.counter("request_num") - private[this] val addressBookCandNum = stats.counter("address_book_cand_num") - private[this] val completeOnboardingCandNum = stats.counter("complete_onboarding_cand_num") - - private def generateOnboardingPushRawCandidate( - _target: Target, - _commonRecType: CRT - ): RawCandidate = { - new RawCandidate with DiscoverTwitterCandidate { - override val target = _target - override val commonRecType = _commonRecType - } - } - - private def getEligibleCandsForTarget( - target: Target - ): Future[Option[Seq[RawCandidate]]] = { - val addressBookFatigue = - TargetPredicates - .pushRecTypeFatiguePredicate( - CRT.AddressBookUploadPush, - FS.FatigueForOnboardingPushes, - FS.MaxOnboardingPushInInterval, - stats)(Seq(target)).map(_.head) - val completeOnboardingFatigue = - TargetPredicates - .pushRecTypeFatiguePredicate( - CRT.CompleteOnboardingPush, - FS.FatigueForOnboardingPushes, - FS.MaxOnboardingPushInInterval, - stats)(Seq(target)).map(_.head) - - Future - .join( - target.appPermissions, - addressBookFatigue, - completeOnboardingFatigue - ).map { - case (appPermissionOpt, addressBookPredicate, completeOnboardingPredicate) => - val addressBookUploaded = - PushAppPermissionUtil.hasTargetUploadedAddressBook(appPermissionOpt) - val abUploadCandidate = - if (!addressBookUploaded && addressBookPredicate && target.params( - FS.EnableAddressBookPush)) { - addressBookCandNum.incr() - Some(generateOnboardingPushRawCandidate(target, CRT.AddressBookUploadPush)) - } else if (!addressBookUploaded && (completeOnboardingPredicate || - target.params(FS.DisableOnboardingPushFatigue)) && target.params( - FS.EnableCompleteOnboardingPush)) { - completeOnboardingCandNum.incr() - Some(generateOnboardingPushRawCandidate(target, CRT.CompleteOnboardingPush)) - } else None - - val allCandidates = - Seq(abUploadCandidate).filter(_.isDefined).flatten - if (allCandidates.nonEmpty) Some(allCandidates) else None - } - } - - override def get(inputTarget: Target): Future[Option[Seq[RawCandidate]]] = { - requestNum.incr() - val minDurationForMRElapsed = - DiscoverTwitterPredicate - .minDurationElapsedSinceLastMrPushPredicate( - name, - FS.MrMinDurationSincePushForOnboardingPushes, - stats)(Seq(inputTarget)).map(_.head) - minDurationForMRElapsed.flatMap { minDurationElapsed => - if (minDurationElapsed) getEligibleCandsForTarget(inputTarget) else Future.None - } - } - - override def isCandidateSourceAvailable(target: Target): Future[Boolean] = { - PushDeviceUtil - .isRecommendationsEligible(target).map(_ && target.params(FS.EnableOnboardingPushes)) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/PushCandidateSourceGenerator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/PushCandidateSourceGenerator.docx new file mode 100644 index 0000000000000000000000000000000000000000..65e5102c29f7e8d0ab3c8e00337287403851d963 GIT binary patch literal 38233 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/PushCandidateSourceGenerator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/PushCandidateSourceGenerator.scala deleted file mode 100644 index ea2dcd008..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/PushCandidateSourceGenerator.scala +++ /dev/null @@ -1,162 +0,0 @@ -package com.twitter.frigate.pushservice.adaptor - -import com.twitter.content_mixer.thriftscala.ContentMixerRequest -import com.twitter.content_mixer.thriftscala.ContentMixerResponse -import com.twitter.explore_ranker.thriftscala.ExploreRankerRequest -import com.twitter.explore_ranker.thriftscala.ExploreRankerResponse -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.candidate._ -import com.twitter.frigate.common.store.RecentTweetsQuery -import com.twitter.frigate.common.store.interests.InterestsLookupRequestWithContext -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.store._ -import com.twitter.geoduck.common.thriftscala.Location -import com.twitter.geoduck.service.thriftscala.LocationResponse -import com.twitter.hermit.pop_geo.thriftscala.PopTweetsInPlace -import com.twitter.hermit.predicate.socialgraph.RelationEdge -import com.twitter.hermit.store.tweetypie.UserTweet -import com.twitter.interests.thriftscala.UserInterests -import com.twitter.interests_discovery.thriftscala.NonPersonalizedRecommendedLists -import com.twitter.interests_discovery.thriftscala.RecommendedListsRequest -import com.twitter.interests_discovery.thriftscala.RecommendedListsResponse -import com.twitter.recommendation.interests.discovery.core.model.InterestDomain -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storehaus.ReadableStore -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripDomain -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripTweets -import com.twitter.tsp.thriftscala.TopicSocialProofRequest -import com.twitter.tsp.thriftscala.TopicSocialProofResponse - -/** - * PushCandidateSourceGenerator generates candidate source list for a given Target user - */ -class PushCandidateSourceGenerator( - earlybirdCandidates: CandidateSource[EarlybirdCandidateSource.Query, EarlybirdCandidate], - userTweetEntityGraphCandidates: CandidateSource[UserTweetEntityGraphCandidates.Target, Candidate], - cachedTweetyPieStoreV2: ReadableStore[Long, TweetyPieResult], - safeCachedTweetyPieStoreV2: ReadableStore[Long, TweetyPieResult], - userTweetTweetyPieStore: ReadableStore[UserTweet, TweetyPieResult], - safeUserTweetTweetyPieStore: ReadableStore[UserTweet, TweetyPieResult], - cachedTweetyPieStoreV2NoVF: ReadableStore[Long, TweetyPieResult], - edgeStore: ReadableStore[RelationEdge, Boolean], - interestsLookupStore: ReadableStore[InterestsLookupRequestWithContext, UserInterests], - uttEntityHydrationStore: UttEntityHydrationStore, - geoDuckV2Store: ReadableStore[Long, LocationResponse], - topTweetsByGeoStore: ReadableStore[InterestDomain[String], Map[String, List[(Long, Double)]]], - topTweetsByGeoV2VersionedStore: ReadableStore[String, PopTweetsInPlace], - tweetImpressionsStore: TweetImpressionsStore, - recommendedTrendsCandidateSource: RecommendedTrendsCandidateSource, - recentTweetsByAuthorStore: ReadableStore[RecentTweetsQuery, Seq[Seq[Long]]], - topicSocialProofServiceStore: ReadableStore[TopicSocialProofRequest, TopicSocialProofResponse], - crMixerStore: CrMixerTweetStore, - contentMixerStore: ReadableStore[ContentMixerRequest, ContentMixerResponse], - exploreRankerStore: ReadableStore[ExploreRankerRequest, ExploreRankerResponse], - softUserLocationStore: ReadableStore[Long, Location], - tripTweetCandidateStore: ReadableStore[TripDomain, TripTweets], - listRecsStore: ReadableStore[String, NonPersonalizedRecommendedLists], - idsStore: ReadableStore[RecommendedListsRequest, RecommendedListsResponse] -)( - implicit val globalStats: StatsReceiver) { - - private val earlyBirdFirstDegreeCandidateAdaptor = EarlyBirdFirstDegreeCandidateAdaptor( - earlybirdCandidates, - cachedTweetyPieStoreV2, - cachedTweetyPieStoreV2NoVF, - userTweetTweetyPieStore, - PushFeatureSwitchParams.NumberOfMaxEarlybirdInNetworkCandidatesParam, - globalStats - ) - - private val frsTweetCandidateAdaptor = FRSTweetCandidateAdaptor( - crMixerStore, - cachedTweetyPieStoreV2, - cachedTweetyPieStoreV2NoVF, - userTweetTweetyPieStore, - uttEntityHydrationStore, - topicSocialProofServiceStore, - globalStats - ) - - private val contentRecommenderMixerAdaptor = ContentRecommenderMixerAdaptor( - crMixerStore, - safeCachedTweetyPieStoreV2, - edgeStore, - topicSocialProofServiceStore, - uttEntityHydrationStore, - globalStats - ) - - private val tripGeoCandidatesAdaptor = TripGeoCandidatesAdaptor( - tripTweetCandidateStore, - contentMixerStore, - safeCachedTweetyPieStoreV2, - cachedTweetyPieStoreV2NoVF, - globalStats - ) - - val sources: Seq[ - CandidateSource[Target, RawCandidate] with CandidateSourceEligible[ - Target, - RawCandidate - ] - ] = { - Seq( - earlyBirdFirstDegreeCandidateAdaptor, - GenericCandidateAdaptor( - userTweetEntityGraphCandidates, - cachedTweetyPieStoreV2, - cachedTweetyPieStoreV2NoVF, - globalStats.scope("UserTweetEntityGraphCandidates") - ), - new OnboardingPushCandidateAdaptor(globalStats), - TopTweetsByGeoAdaptor( - geoDuckV2Store, - softUserLocationStore, - topTweetsByGeoStore, - topTweetsByGeoV2VersionedStore, - cachedTweetyPieStoreV2, - cachedTweetyPieStoreV2NoVF, - globalStats - ), - frsTweetCandidateAdaptor, - TopTweetImpressionsCandidateAdaptor( - recentTweetsByAuthorStore, - cachedTweetyPieStoreV2, - cachedTweetyPieStoreV2NoVF, - tweetImpressionsStore, - globalStats - ), - TrendsCandidatesAdaptor( - softUserLocationStore, - recommendedTrendsCandidateSource, - safeCachedTweetyPieStoreV2, - cachedTweetyPieStoreV2NoVF, - safeUserTweetTweetyPieStore, - globalStats - ), - contentRecommenderMixerAdaptor, - tripGeoCandidatesAdaptor, - HighQualityTweetsAdaptor( - tripTweetCandidateStore, - interestsLookupStore, - cachedTweetyPieStoreV2, - cachedTweetyPieStoreV2NoVF, - globalStats - ), - ExploreVideoTweetCandidateAdaptor( - exploreRankerStore, - cachedTweetyPieStoreV2, - globalStats - ), - ListsToRecommendCandidateAdaptor( - listRecsStore, - geoDuckV2Store, - idsStore, - globalStats - ) - ) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetImpressionsCandidateAdaptor.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetImpressionsCandidateAdaptor.docx new file mode 100644 index 0000000000000000000000000000000000000000..982c401087f85cf519dfaba04bafef490cb99e9e GIT binary patch literal 39890 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 z zwy*iRSJlR(GTdBLIyqGS?Sl}R^ctC%6$0}$WL^e`_K;gU~&@o`g0vdP!+NJ>I z1*}gOYX{UBM>jja~DKVjFq~zUaGlJOjU$j&SB(Xid>->-aS$? zS%>8w%-ZK&nr=?wH_+FpbAbmHtk=D=-SzuI;nyy!s8d7eSvg*xc3hV|$7*?G{o`06 zt$ui-W%tt9@Q_o1jN&73D`rGBxZWjxLnl2tCJA z`$l}!39&V3Wp0-WPhUpSh`GI%*&9n@3!wUxn72W@MJIa_d``6jyG6gtVOc23o+pxi zuhe;6ptCCp6oSL!3FY>wIp2w#yJ z;mn@n+xNA$X?Ml1=4hn_{NUfpXcFVr-#R_3Rvp8Hbk_Fl&V-!KscGNt%JXTL7(qjF?~YDke4XoVW% zZ+BZc2V2H~yK1b!^)6h4T{1baVJ?AADxEb!RU&bBT1hIN^+8oaCuhc@hG`zo`!;X4 zFvjY7sTo7s*WtwMSN_XWbT9Urljm^vPSl-2p32qppjK%Gze;_Vyf{9zwcmE>E>FMr z!Q_`9XMOKy`y0re;3n$4#_#Rnp~@|JugZ?aNYtQ{u0n~y{ER|EVbjO!*3()ddX(Nr zBzYN^&mYD0==$0Vgjc1e3+D%!wmK>~?hk*oA)<(m`|J14FpluMu+)U@p-0=7r;UV;$>?f`v?rOw-z z=dU^TS*|AQ_}$t>888KxQY4?B&z0<&rlZh~(UOV|<-_QNBB^>;@B3e}^b#JIhi$5~ z!o(>u_ULnOP_tCeFrkO|(T_7}&A_?QPz#FrdoytuoeJqZ>n2b_!>-=~-itn0r?{Xm z*4N^*Jo!x`1iL@RiM1exuIrI6fiLZ;R9EdZg6NO+8=Sm`mKbh+H|*PEqsF+#45Mar zdwT<270fFcV24_M`oWcL7%Ydg%AKE>$~G+QW3eha;Bj&4<*nfgi(a9!p^FvrxXWY$ zeaV?Q&%+U0yHU!!Z*6B1w+0V-oA6$Sb%}#c^rgG#q;Ia3L+6osYQ%IDwnMD{sO5Bj zyk%-)&8?TSDYR+JW6Lty@^`)bkD-DcSW8yBh)qmqJ?u9uumQ`lSN= zymgkR_;>urcv{R>H}NUc8U~&n3xiQS!P9+Ji#!2=pB@(H2G0)9<%Z;Yb_}Ll1lx_4 z;Tv}cN6!-dYMkb9@k+$ac4E+;@{gsCmzH0-75yJ?`;LEh?GD@<+x~$JQ3#ow!oM*8 z_9I^Tpuk(Q`Dlugz4-@r3Y+e=_-(!}XWIg=EFJL=? zcDLITy71~^NhS+&O9!r}WguK%)jD!uV0R>fe*q5u%RTY^_EUEJ`#}TeKp?Y=Kr-0Q z#mn-#pPQYh`OoN#l)w+BrLqHDN(A!A^#7uPBbw|rK=J<=|5s>F3dBUx8#n-$^Z`Jo zL%=!U%zwVe#?|9jCYlufWpwn|A^=BGfIyH#@DSk4e{gFzx4-@Cu+*M5A{YdUdO$jO z1~3smt{%4H0EM?RVEfmmkXRSGkgO4oF`p`7a(#)~2Dr*;J-Y76j4aw zq=lE?a6$AxaFQ|%DFbOC;x~iooqre(l_f~=q*>$N_~o#F@T56pQVLT2{hMMo=C5j; zlz>#|{w8RO{gdEtvX_*LR6G9Ws=50o*I^||%0eo&ezSCA|CyCT!iyA78V~-)J0$+G a#12P?`dXC03i`RKm_XLR@-R#P`Rjjzl*x_& literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetImpressionsCandidateAdaptor.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetImpressionsCandidateAdaptor.scala deleted file mode 100644 index 25ab31e85..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetImpressionsCandidateAdaptor.scala +++ /dev/null @@ -1,326 +0,0 @@ -package com.twitter.frigate.pushservice.adaptor - -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.CandidateSource -import com.twitter.frigate.common.base.CandidateSourceEligible -import com.twitter.frigate.common.base.TopTweetImpressionsCandidate -import com.twitter.frigate.common.store.RecentTweetsQuery -import com.twitter.frigate.common.util.SnowflakeUtils -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.{PushFeatureSwitchParams => FS} -import com.twitter.frigate.pushservice.store.TweetImpressionsStore -import com.twitter.frigate.pushservice.util.PushDeviceUtil -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storehaus.FutureOps -import com.twitter.storehaus.ReadableStore -import com.twitter.util.Future - -case class TweetImpressionsCandidate( - tweetId: Long, - tweetyPieResultOpt: Option[TweetyPieResult], - impressionsCountOpt: Option[Long]) - -case class TopTweetImpressionsCandidateAdaptor( - recentTweetsFromTflockStore: ReadableStore[RecentTweetsQuery, Seq[Seq[Long]]], - tweetyPieStore: ReadableStore[Long, TweetyPieResult], - tweetyPieStoreNoVF: ReadableStore[Long, TweetyPieResult], - tweetImpressionsStore: TweetImpressionsStore, - globalStats: StatsReceiver) - extends CandidateSource[Target, RawCandidate] - with CandidateSourceEligible[Target, RawCandidate] { - - private val stats = globalStats.scope("TopTweetImpressionsAdaptor") - private val tweetImpressionsCandsStat = stats.stat("top_tweet_impressions_cands_dist") - - private val eligibleUsersCounter = stats.counter("eligible_users") - private val noneligibleUsersCounter = stats.counter("noneligible_users") - private val meetsMinTweetsRequiredCounter = stats.counter("meets_min_tweets_required") - private val belowMinTweetsRequiredCounter = stats.counter("below_min_tweets_required") - private val aboveMaxInboundFavoritesCounter = stats.counter("above_max_inbound_favorites") - private val meetsImpressionsRequiredCounter = stats.counter("meets_impressions_required") - private val belowImpressionsRequiredCounter = stats.counter("below_impressions_required") - private val meetsFavoritesThresholdCounter = stats.counter("meets_favorites_threshold") - private val aboveFavoritesThresholdCounter = stats.counter("above_favorites_threshold") - private val emptyImpressionsMapCounter = stats.counter("empty_impressions_map") - - private val tflockResultsStat = stats.stat("tflock", "results") - private val emptyTflockResult = stats.counter("tflock", "empty_result") - private val nonEmptyTflockResult = stats.counter("tflock", "non_empty_result") - - private val originalTweetsStat = stats.stat("tweets", "original_tweets") - private val retweetsStat = stats.stat("tweets", "retweets") - private val allRetweetsOnlyCounter = stats.counter("tweets", "all_retweets_only") - private val allOriginalTweetsOnlyCounter = stats.counter("tweets", "all_original_tweets_only") - - private val emptyTweetypieMap = stats.counter("", "empty_tweetypie_map") - private val emptyTweetyPieResult = stats.stat("", "empty_tweetypie_result") - private val allEmptyTweetypieResults = stats.counter("", "all_empty_tweetypie_results") - - private val eligibleUsersAfterImpressionsFilter = - stats.counter("eligible_users_after_impressions_filter") - private val eligibleUsersAfterFavoritesFilter = - stats.counter("eligible_users_after_favorites_filter") - private val eligibleUsersWithEligibleTweets = - stats.counter("eligible_users_with_eligible_tweets") - - private val eligibleTweetCands = stats.stat("eligible_tweet_cands") - private val getCandsRequestCounter = - stats.counter("top_tweet_impressions_get_request") - - override val name: String = this.getClass.getSimpleName - - override def get(inputTarget: Target): Future[Option[Seq[RawCandidate]]] = { - getCandsRequestCounter.incr() - val eligibleCandidatesFut = getTweetImpressionsCandidates(inputTarget) - eligibleCandidatesFut.map { eligibleCandidates => - if (eligibleCandidates.nonEmpty) { - eligibleUsersWithEligibleTweets.incr() - eligibleTweetCands.add(eligibleCandidates.size) - val candidate = getMostImpressionsTweet(eligibleCandidates) - Some( - Seq( - generateTopTweetImpressionsCandidate( - inputTarget, - candidate.tweetId, - candidate.tweetyPieResultOpt, - candidate.impressionsCountOpt.getOrElse(0L)))) - } else None - } - } - - private def getTweetImpressionsCandidates( - inputTarget: Target - ): Future[Seq[TweetImpressionsCandidate]] = { - val originalTweets = getRecentOriginalTweetsForUser(inputTarget) - originalTweets.flatMap { tweetyPieResultsMap => - val numDaysSearchForOriginalTweets = - inputTarget.params(FS.TopTweetImpressionsOriginalTweetsNumDaysSearch) - val moreRecentTweetIds = - getMoreRecentTweetIds(tweetyPieResultsMap.keySet.toSeq, numDaysSearchForOriginalTweets) - val isEligible = isEligibleUser(inputTarget, tweetyPieResultsMap, moreRecentTweetIds) - if (isEligible) filterByEligibility(inputTarget, tweetyPieResultsMap, moreRecentTweetIds) - else Future.Nil - } - } - - private def getRecentOriginalTweetsForUser( - targetUser: Target - ): Future[Map[Long, TweetyPieResult]] = { - val tweetyPieResultsMapFut = getTflockStoreResults(targetUser).flatMap { recentTweetIds => - FutureOps.mapCollect((targetUser.params(FS.EnableVFInTweetypie) match { - case true => tweetyPieStore - case false => tweetyPieStoreNoVF - }).multiGet(recentTweetIds.toSet)) - } - tweetyPieResultsMapFut.map { tweetyPieResultsMap => - if (tweetyPieResultsMap.isEmpty) { - emptyTweetypieMap.incr() - Map.empty - } else removeRetweets(tweetyPieResultsMap) - } - } - - private def getTflockStoreResults(targetUser: Target): Future[Seq[Long]] = { - val maxResults = targetUser.params(FS.TopTweetImpressionsRecentTweetsByAuthorStoreMaxResults) - val maxAge = targetUser.params(FS.TopTweetImpressionsTotalFavoritesLimitNumDaysSearch) - val recentTweetsQuery = - RecentTweetsQuery( - userIds = Seq(targetUser.targetId), - maxResults = maxResults, - maxAge = maxAge.days - ) - recentTweetsFromTflockStore - .get(recentTweetsQuery).map { - case Some(tweetIdsAll) => - val tweetIds = tweetIdsAll.headOption.getOrElse(Seq.empty) - val numTweets = tweetIds.size - if (numTweets > 0) { - tflockResultsStat.add(numTweets) - nonEmptyTflockResult.incr() - } else emptyTflockResult.incr() - tweetIds - case _ => Nil - } - } - - private def removeRetweets( - tweetyPieResultsMap: Map[Long, Option[TweetyPieResult]] - ): Map[Long, TweetyPieResult] = { - val nonEmptyTweetyPieResults: Map[Long, TweetyPieResult] = tweetyPieResultsMap.collect { - case (key, Some(value)) => (key, value) - } - emptyTweetyPieResult.add(tweetyPieResultsMap.size - nonEmptyTweetyPieResults.size) - - if (nonEmptyTweetyPieResults.nonEmpty) { - val originalTweets = nonEmptyTweetyPieResults.filter { - case (_, tweetyPieResult) => - tweetyPieResult.sourceTweet.isEmpty - } - val numOriginalTweets = originalTweets.size - val numRetweets = nonEmptyTweetyPieResults.size - originalTweets.size - originalTweetsStat.add(numOriginalTweets) - retweetsStat.add(numRetweets) - if (numRetweets == 0) allOriginalTweetsOnlyCounter.incr() - if (numOriginalTweets == 0) allRetweetsOnlyCounter.incr() - originalTweets - } else { - allEmptyTweetypieResults.incr() - Map.empty - } - } - - private def getMoreRecentTweetIds( - tweetIds: Seq[Long], - numDays: Int - ): Seq[Long] = { - tweetIds.filter { tweetId => - SnowflakeUtils.isRecent(tweetId, numDays.days) - } - } - - private def isEligibleUser( - inputTarget: Target, - tweetyPieResults: Map[Long, TweetyPieResult], - recentTweetIds: Seq[Long] - ): Boolean = { - val minNumTweets = inputTarget.params(FS.TopTweetImpressionsMinNumOriginalTweets) - lazy val totalFavoritesLimit = - inputTarget.params(FS.TopTweetImpressionsTotalInboundFavoritesLimit) - if (recentTweetIds.size >= minNumTweets) { - meetsMinTweetsRequiredCounter.incr() - val isUnderLimit = isUnderTotalInboundFavoritesLimit(tweetyPieResults, totalFavoritesLimit) - if (isUnderLimit) eligibleUsersCounter.incr() - else { - aboveMaxInboundFavoritesCounter.incr() - noneligibleUsersCounter.incr() - } - isUnderLimit - } else { - belowMinTweetsRequiredCounter.incr() - noneligibleUsersCounter.incr() - false - } - } - - private def getFavoriteCounts( - tweetyPieResult: TweetyPieResult - ): Long = tweetyPieResult.tweet.counts.flatMap(_.favoriteCount).getOrElse(0L) - - private def isUnderTotalInboundFavoritesLimit( - tweetyPieResults: Map[Long, TweetyPieResult], - totalFavoritesLimit: Long - ): Boolean = { - val favoritesIterator = tweetyPieResults.valuesIterator.map(getFavoriteCounts) - val totalInboundFavorites = favoritesIterator.sum - totalInboundFavorites <= totalFavoritesLimit - } - - def filterByEligibility( - inputTarget: Target, - tweetyPieResults: Map[Long, TweetyPieResult], - tweetIds: Seq[Long] - ): Future[Seq[TweetImpressionsCandidate]] = { - lazy val minNumImpressions: Long = inputTarget.params(FS.TopTweetImpressionsMinRequired) - lazy val maxNumLikes: Long = inputTarget.params(FS.TopTweetImpressionsMaxFavoritesPerTweet) - for { - filteredImpressionsMap <- getFilteredImpressionsMap(tweetIds, minNumImpressions) - tweetIdsFilteredByFavorites <- - getTweetIdsFilteredByFavorites(filteredImpressionsMap.keySet, tweetyPieResults, maxNumLikes) - } yield { - if (filteredImpressionsMap.nonEmpty) eligibleUsersAfterImpressionsFilter.incr() - if (tweetIdsFilteredByFavorites.nonEmpty) eligibleUsersAfterFavoritesFilter.incr() - - val candidates = tweetIdsFilteredByFavorites.map { tweetId => - TweetImpressionsCandidate( - tweetId, - tweetyPieResults.get(tweetId), - filteredImpressionsMap.get(tweetId)) - } - tweetImpressionsCandsStat.add(candidates.length) - candidates - } - } - - private def getFilteredImpressionsMap( - tweetIds: Seq[Long], - minNumImpressions: Long - ): Future[Map[Long, Long]] = { - getImpressionsCounts(tweetIds).map { impressionsMap => - if (impressionsMap.isEmpty) emptyImpressionsMapCounter.incr() - impressionsMap.filter { - case (_, numImpressions) => - val isValid = numImpressions >= minNumImpressions - if (isValid) { - meetsImpressionsRequiredCounter.incr() - } else { - belowImpressionsRequiredCounter.incr() - } - isValid - } - } - } - - private def getTweetIdsFilteredByFavorites( - filteredTweetIds: Set[Long], - tweetyPieResults: Map[Long, TweetyPieResult], - maxNumLikes: Long - ): Future[Seq[Long]] = { - val filteredByFavoritesTweetIds = filteredTweetIds.filter { tweetId => - val tweetyPieResultOpt = tweetyPieResults.get(tweetId) - val isValid = tweetyPieResultOpt.exists { tweetyPieResult => - getFavoriteCounts(tweetyPieResult) <= maxNumLikes - } - if (isValid) meetsFavoritesThresholdCounter.incr() - else aboveFavoritesThresholdCounter.incr() - isValid - } - Future(filteredByFavoritesTweetIds.toSeq) - } - - private def getMostImpressionsTweet( - filteredResults: Seq[TweetImpressionsCandidate] - ): TweetImpressionsCandidate = { - val maxImpressions: Long = filteredResults.map { - _.impressionsCountOpt.getOrElse(0L) - }.max - - val mostImpressionsCandidates: Seq[TweetImpressionsCandidate] = - filteredResults.filter(_.impressionsCountOpt.getOrElse(0L) == maxImpressions) - - mostImpressionsCandidates.maxBy(_.tweetId) - } - - private def getImpressionsCounts( - tweetIds: Seq[Long] - ): Future[Map[Long, Long]] = { - val impressionCountMap = tweetIds.map { tweetId => - tweetId -> tweetImpressionsStore - .getCounts(tweetId).map(_.getOrElse(0L)) - }.toMap - Future.collect(impressionCountMap) - } - - private def generateTopTweetImpressionsCandidate( - inputTarget: Target, - _tweetId: Long, - result: Option[TweetyPieResult], - _impressionsCount: Long - ): RawCandidate = { - new RawCandidate with TopTweetImpressionsCandidate { - override val target: Target = inputTarget - override val tweetId: Long = _tweetId - override val tweetyPieResult: Option[TweetyPieResult] = result - override val impressionsCount: Long = _impressionsCount - } - } - - override def isCandidateSourceAvailable(target: Target): Future[Boolean] = { - val enabledTopTweetImpressionsNotification = - target.params(FS.EnableTopTweetImpressionsNotification) - - PushDeviceUtil - .isRecommendationsEligible(target).map(_ && enabledTopTweetImpressionsNotification) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetsByGeoAdaptor.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetsByGeoAdaptor.docx new file mode 100644 index 0000000000000000000000000000000000000000..0da5c4bda516a74856974912b100642f30b83379 GIT binary patch literal 40844 zcmagFb9^P;)-4>fW7{@5wr$(C?R0G0X2-Ujj%{>o=|t&Y3PtBF)oQ0QD+J5#lQ5V*vvU?ZRQ!i4oeIF3MkNo)^ieh{p-CDRLIngx)4 zueP5<7cux!AXg(GN$nXRnye~D1rcv37(#)23^cT+V3swngUC)v;beqtkIL*|OwQ$f z!q=7XS~R3*zY1FFrREj3K1Ks(J@gW&66d-Xd7HA!u9p zU;EZQw65c-OebJj~!Taa7mO-SobH~8hs-HHTxud{Kx<|lz- zm>!RUu$iYl0Tg8Q1loyU>5LsQRbD}l{g00nMKQ!Y&YkMncV))UHpBXB>yEA#$T zXy=bf9%W)@{j@(3B=o+|4bog;7n1Sr5Ypu)_vah%e7c5xJ=6zXMSuF{U;QZd)>(Yu zycUpeC`Fx2q4}PKQ;5(Vr~m5t0$oypA;i=Bwp6llz&rLxnE#3_tpgzUA60ZGmE?Q+ zs@^6L008vYr>=vsl_MSPpKVqAqy#Vnyx%2{@CZqXO_Q=v;fjvXv2-C%PwK=)v5k*d z@oHD6ypXmUYA^25<({F*VnzYhGF7ovpsIoTLO|Y9ui6&Hbwj)EIz%#Lhd+Uv(r%Et zReHod5iFlE=_8AY3O*0jCeolLMg7Grf3<*+E~T{?Y-vzg0>T}%6S=ChH_eKlG&C$(L)+yqDfVcDHG?-KzU!gY1}jVpDC9bjWNsK z5Tmo2ESLXjQ0Nb6Mf0!2eD=#AgfD}PYz^fcZ0#KB3~e2Z{~Y95@#8Z6^zg!uUc&Rz zDq*+q5W?b=fG6P+V#xl>tq;uKrLD%ZSthsk3avGAsa$ZkIEQcTcs5uYn}H33Xp_p?O{CMlT!TQg-+^wyloqpBD3IqTE z{@?4OZ)f*cS(L_Y*686oUa3H|ox;t*`Q_2$0~Yyb1vfBj<1?G*#|S0jKw24geY~GT zQP_Xb-G_13bG|l=y)N;afH%mPDWi-(=a0zQZ$LHHgbyFCO&$?Cf|P@np{NWZXxr;f zk5w&z(Lg$-smfK4c@oweOkCrF+d0ZoO*^f^@@+PF7PrgTdCj~T^9i51{Cpa?N|I|_ z-b|IJmkqA~ey=gBa4((a{w}(Af1;k81OqDqr2ozYGVWesPQDT4a+U{oV+tUElKAK_SHlNSTy@*{!)&=<*09ts%X+6GT zU72d=P1Jd8w;KO&F8g=jcR}*V(O*PK7W%fmcL+IZ{_FO!Ef4i&oUyQy53nFFoC3>l zs6v#hg5VlBu?bCSNWMSEY;Vt4*}f%I-2kfrhTrVJ9%j`dCGweLue2c$dr!^s2>%?f zt&rHItt8;C9wH-7#(6cs!=f^zxKKSh5?s>ImeGtt$@z|n;6kz!?9&Q(U`qy?XvvK( zC+ecHi}z@T`3_HeZOw4B{p`#Qec}qn=F?ISiJNi`Y4tuDIgab!Vzrf$#51Y7Ma&tJ ziKgsnB^#GAuqMu1BrDq4kwN!HhkFH?@qCN*xp04m_n!xb*r)$%Dk1umjXbNX{+oNH@3uCdkm@OB3jg+wXs zBCZq<5afFxuYbN=Yl$Tk9&<6sD@zlCV-c4>gNqW`ngQ_rSh}>|-}og(pN-A6cKbTb zl@7vXGTH1Yqn-Y`(e%On86H=8~3?zAn}8bFKBgYFSr;9qb1BXwH+Ym;Ume(r=O)Y>=amN{U$ zQ#T>&YugHjm%lpSOPpWiMJ~3tZv12X@zU`IKdu7?Xb$VugXeh}dW*w~OL+~1{x57)xAk79dVI!jWmdl2oDTS0BcM1Uy zILu8Fm!+DURqfs)_o?`PM5y@rf#c>HsELT9cZeI4tfYi(dy2lGKUg<`Po9|@U=ulr*$l;O7$55}1?I5i(-v}~IWFFiY zhS6i>2vW-%vrF_BW}hyzz-~NP;zpZg`ngpL>g_-`X~2tKngD9w0zr-`pmoemMyNE# z2nS)nEKX6KpT8j6q}d3N^NyUZ8*9puQUF*>Sw6xKDzxWwpnZ~nqu%!v<|xz`o8j1T z34%j{s5j^qMvX$h!}xW5`wJd)qIl`GePF_aL?dF<4^Y`Hh3fXtKznP=9)J|uI|80_ z1X<_3L568R1p4r5{ofo}-P zM-cM|)P_hDK!^yICcX6mpU48<-x-rmTtM_C+}Yr492|8;ZiXq~nB6(C`3?6~wW7wc zr8iNG+1Sq|DHR|ZvKWHA!(l=huOIzJ^ywzdP?>(0aNz($Qzp_mWO>JH2@RwTXDEYA znNk|$0b#$-Q1*j{iY31ykv*IeRrgtm#s(>&0?OpwMli)C*nz(y&tKKPo)&v)820s^ zz~f^(1VupTn+sGJ-;;xhwJDzh-;^`i);M?5@R05EcO6?OlY9KuLBtcnbK&l5<;P1I z!vs$u$9?R#ma9Z|-f`0rE5kLKG6JTvq&E_V=cXMowR>Wn-^^lwDe*?*wWy1#=T|8@ z<2=G@8F&ZqcICCLEV7@Zzf(^0(y|91D=|Rvs#w>JDaq9EOIt>MRHB<1s9YnAiiw!# z!j0ap=H}XdEU2R#>Toz_x#x5vvtP5Z%O>tX*8BxX#*TRHXW0uwu#DS~{ zb>XTA2{G*%$ucp!Aduc;A2YSGJ%rU!rIn&Q;l|qbm&<7og0X%NEpc2KsnIG}7 zFM8^VtLMz=Kcgkns`@3_VzUt#6c-1kB))NZ0@O;I@X{Y`OkrOj8j{%T1y!^Ny*pWT zi~N{Ew4>waqy25`SW6BUIPFV6H9@B_r)ABG9GEyS}ev^-|FBxpO2n@5X+$VAu3W&A8VoC%eq21WOOT-?8&-;`B% zlJsB#S0}q6Q=3Ls-G*8`TE8g>FhrMSUe_AOFjOs|H1wbVGV%mL~BuyQQSE!XV5U3$D}YGWyAv z|4eGqxF~;FCNh>;kN-kj5;|d4uTV6gdQd%)hK7VOfvxz+#XZZk&u~te&#h@*d*;AP zTJ|WqNwf*4Qz9nhye)Z<`Z)2{NSKzy zc_I6uH8Lrj=W$NP4^!x|tC`uB&alK4RW3D4s+t$FgoM+Hw1aZ-W%BXS;`~(a`B_79 zY$d6zGx3c>xhlZBrJvLGK<0ZBQm`Gd+EQ|~WM{2&x2NKLw zNX=7rDl~|AZjWejdu$^#X7eaKdN0Fpc3MmTl6%!+g*74rbP*TJC-oQY)Pe}$i@Y_tA4|Vez--?N(84t~01N-i?={XoVQqtMGL$4^`XENz%+KP`BQ`CIY zlcprBKtC*@i;3}Cw37~W8OuzIgA$j51N)#N9W}NR+_9p&B%et^_JEIX8FI*_iqFCs1`x=$tcsTob<=Tmk1mBXR+2KJ6dBFsF1 zF0~fV{Bin1(sbo)Ore-JBHG5a>CU%_ea;;^UX`p+DUYNip-)=W*f*&c@*pEubzeKr zKBbWNmR6mh8{z0Yt8vZQ37PI$cn|f`D0jMfNJ`H^E=%2Sx~nQ-gGQOG2n|?PMM9%3 za*gH;*yTuMqe?tqDC?f*(QsJ|EtAZ#Z@MxB?p29x5@Sw4OgA>h#% z96TzjqT1Nl74p*(btZ-Vs(rm-g|vPAj_2& z`u3TYxza{$3qy}AB$B&jY)dG=8@p0JM*Y!~rZaOvH%$yfx0aKp@tcrYokslZq{-Q` zymoTp`LMag^V_d!wR*=GajHB%^9gN?{t!|exF2O=Vs?d<`G~cZpcgN!+==TP?`^fi zq&`w$-I@(Bqn?d}97Xu;Gq=&LYchc4FNr|TkL8SX1r9Q$_O{}WMtJj{7Xi`` z(UTsiHJ$gkMH9Jj{?z_E7D-nU%WI5HOT`x|$Cojq=azZlQe@QOvH1`c1D})XzqIuy zr#wg^v{qE{nXIgUNa_2lQMfF29FXz}gJ%!9{5)N^$BVR%2n`-MVY(%sA0(c~d|D6R z!4OEAku$mTxVl6MKI$VLo0)}mR*ck0NU@4*Qxv+&maDQ-unEKCrkGj?glMH2%vfw zyf5QI%aadL64M$w+u|>@}V`2E^X~Dds*N{A5 z7D>*rkkVRnIqFQk`4J9B=3VqEE)2t>(fD2TWX!d@&tG@eCX%u$(4GN}sc0)W1|eTW zB`N3h(bv!hMvIsR9QT{cE21Z~-o5q%1RXfVV}pBpJD9wOFXzxA5`Sw@(Y74Bz7t~f z>L?aPYlE$nFP%C_8+#rGzBg;iCFzmU=Ji?e7-LYO%xEO}4}t?HwNzWSg?X$Gw`uO6 z)E|-9I?(_lY1{*17uYv!D(Xo9A9KX><$|0Axm33sr}Xh$zNFYw`uJyA#)n&%DIP&2 zEMpqNXGkzx#POq`+x8dVT4g-EMV9j}vX|;#iNCc=Rv2!H?6|4JiH!C%ailjlqS4}= zsy>nS?h*n^3mn$qzcsl&pa4b11AAAvh`GFDB{al4LFzu)nC`lW~p`b-q$sIrE8Yv7+Tt zZ-%!6-Fzq_wDu$<+^;E^gOj3XH(&q-MJS<>!c)Tr1*t3pA<MTEVvRqG?PI@6r)!YF4f%}wy(gaviGR^iHZoC zyYQ2D)Xi%sKNRvxEM9J2c$!^6xokN|&NL0H2%#jNVMkou+#KT1^3Y$`&DQaJ7-TP4 zP;7AW1jz={cZnT%@FDj*8K8AjxxJB4xkhbq$OqWgyW%H5{{uQN2!=vc0emUpJh=W7 zjv7;KBf)3>R$uJaD&VJaU^%G&r;gAei$+)I$Zq;=20_y098Gx262u{UXFbAE%23b+ zE0bwo?YZovXz?rTa2|ep=65%WAGUt}-54ir zTN;w6AZGU|Cl%(O{OCTp`_|yI$6OqxDy`VefV)GR@D3=Nt3!igUDNAVT@oj8mg4rv z1rDyTXEjmflv7T$P6d3GEyaZ{l8@R{Dl|YU*l8_OEuM3Tc;lhdF5zD7{6%b!;?gMQRoe=>6$^>sm08Z+7HS+8^=x!4 z4_t7BE_pxIfe}-}p2rDD$u}FG^{n0%yu}A}2~?I1rloja7Y^4s`GMWzdOOqfb`JPU zws?8Go@3C4v)+CQ7t=oIKInF_P0+#ah`yXeyr+25ai*U+JwbMLavq;?`*v-qx=w9B z`T7RzX*>2~$UEV)1)RQm`Yyp4&ZTK(11XK}9k>gT71=6>3IR@T<(v-7vZWNw{nk2B zl%(B`^Q&kAp67mX7zu3N4k02o7~drjv5f%S5g9s=zRz?&8*OQ8FX_MdGm z8$T>W#;^Y7_*Z`u`>VhCR~zf^?)<+uv;OYXC-Tb%(xd;l{DA5UPCzcUiNH9^CvB$` zsVVXb7Fmsd5Ioq@+%TdR-1XmkWbw`+v!0uLP+Z*PM5k(y2w;l@fm|x?}IQOub4#9|FkF54&?!5EX4Y!-L3i31)okWQZ9K)icAktNu>>^N$c^5d$ar`&y4sfhmg zWY(yTtEDQ3dh3#Gt9P?CAneb9zv%wc>!=D;&ImdH03Bse0Jwj8?dargW$gHO!%#b6 zSESCnyF0%?_if)gHV9yN$_60b1zX>>Tk1k$x#{0zvYkxOPSF7fw%4^Bw#cjK-&pWyo=kwu( zo5n?U^4h!2`$Y!t(y;BvbIj-S>(XU(32*c1p7zu8#&vtjLi_8{-0%DLkdVC-_xC!k z59`mi&0sp8RXm;KlB?DFGqM7eJHZl1%951+qmc(cvC^9oFIpQ~ zH}QpdzuS0sO4oX;^;zlI;^MAyy}SrXVZF#^l|B9R*17cIuFkPp`a~M&N{(zjAu~EGa%$0O5qhc=i}_sbvJx&K1c?oqx2jW zFsI~`zfF{sL*62EKn8^?_chc@#VcQH`}OUR`hCCx<5T--LTnkF$3|w&*%%0uvbc@- zeCxe~i<%cNxn|mRc3mS@fw3>7c{pLY3Up}K{^TguYWfxTlTYGLV1 z48m3G>yrMh5{1P;n(0&EXNPw6;`HnJ+>70#{rj-^!!7UmB~PZjNTc?`{8j(q?d|W2 ze#cB^s^C`aBGstR{zJEN+{{~Y-*%O>36a-N>sw)V@t~yZ=K$vbK_vk|07W*LwxhwKPt#(l0 zLtAfFW)+A*C=gL02H3?n`{8HqYjeiL!53zCR0MC6*aE7vjcW42%iN&C2PJfXj?f6) zpvDHoc7PV<{+TrUnneBQB*+f2Eg=6t_OEWlB%uYNbB7-36W;{-C-ymW{8uRc*M1a# zg=&1E1%KiGN9f;FAZ28i76fkpMQ|xk^fdzYmx|;LP@}y6CGlTSu^uQ;6u~=mqZ$T2r_qQh`&_NC%87kcl_Dwe})Pj1skSZ+Pjc+vN?n_ z7Vx`pRh+#qp8t=9FFGiJVkBs zYB%2t;YHi*(ys6&X+>XtkHh?YwfiPW<36niPrY7-lesmxj{k7s*adcl0XbswCNaHyLeBd zxQ0VK))uL{oPgSHQAae{`q8@)HzfZ+snqX~w7z+A?zY-J5S{#(oA~R7l&#yzRncq; zb`&-Aw7kI$7-X1I8Fi;jcQGU2{bS&&SoUa~anlJmtV4V(LqTFZWBV<>oE4NpaPd-F zoCA-se$L&JKS}a@(Kk~FQI)uOe#NNHeb-2L@pLIi;2G}g`UxTJ>oxK+y7w~o0dLWh zHn3^$obhD++N`)w%lp>V2_?ZPH8`|;;48_3DoW?TifYQ^zNUt)-DOSf!}Znv_sLfd zBBOIPZ!gfpY&UtEMYsI%fg3onb^swG%H$)LI!l^DRTeddw4hEq-#mCv3_X`X4Jd11 zRP~ZcwPLD$pe0C@ISxtM-#YAA-9gp*P1ONGYxJ-!KI*qbQ(m=^bAJ+Y*1!%&Sm1Bs zXupJYv5Y1j!_yO{j9cHet6YSoK#^2j=93@b>@RL|Lz2|Puv1$i5Zih7e%q|HOSW24 z-S+J}tVG^##l%a@m%@hCXi*HEX6rC?4pCQxrtt5FoyW*0yN7~!tn#7->_4ETTWFbk zo$|z4wahAGpegLC0RtUj;JwVp?u#gj>7?6tB$2$mAQ^D<*)@s_$DTbx)R89J@k@{p zhP{6nT=aKeD$aYC>}T&?a20JyZVcL%mG7uE-nu0G{79c~pLTt@8@~Ct z85;Cxf46t{dHhKFTs(i7`~7xeN3Y-U(ZZYcK=(F14C?U#0JoCi-ogW-yVc&DGJH?) ztPuD5U2i?8p!CAg5ms1woOC?rAq7?}605C4=^|U9RWi_arh4J^4XL}^OWyDLyT+Tc z&~pR+GmPykN-ZkYeLPr`1dJ5{#_~zJKUPJuWcnQK_mU_hnReI1Ac3>nlk5)eDOHAA zXD$VdT3lEF$LZ6z-?6=**O~>z)1wMS-Gta)uGxk8w(5qBIZ34XW8+W3>{Ga*6Ap2e z+Cj!!$!kW33t$PR>lSRVWB~!R`JBxy2|dar&4?NU+OVo4Pg_C#%ihZ8uM$(SM&Xs+kW3Rm`hCX+TZGpdBTt8BRM~%yun-w}!P%0&lY+w3OvCv^DC%6g1Xa1c}KhCnljrzHDc2gkj|`;O5pIK^vw*ViiVuuxE}{lJJlb~Ev_ z%ycCQ^4(p~zHH^ZtQ;-lCvKjXvU-%iZ`P>|(?G1eBRb&{cHOjgzBD!7&Jqr#7l=Cl z8$}|!BhaBFimkY8#)G?Y|E5uRE-&Mk(v|y@pniNleY`AUqg6`6Wzw^CFS{|rA8&{gY zcnq&H*kYqh-FMB>-fS?-usC?XVB*{hye6!tJnrS;ZXr{trDMaTF)*(nnMPWLDzmP& z@XKjGw2b73;jzcFeJjUV+I>aJaS~xnn-4&6DPu$LG5|IOe%q;=?WI{}E$t@OkN$C0 ztaaB&I^B?~P5l+%l3g66A=>>3PAgL-`w|(pcGBnTw|Nv@I-ySfP1p>kG8s%bt!iSS zJE)mj)a@j@$4aXGcQPN8qD9wRd5V+lhboqZQP_^#Sz7m^tQwUfyttat-MBG>`S?|~ zEb`iY&akh0hYoG{iAyt?p@rx#IBgOZtppdqs8psa*Vkni{jg zs;u+Tc2y-&%iiG$x;i>kOb>w}+z5Of_)lRQe#OE|Au1E=CY+U`u$27&f{^^ zBYXB|Ijl7|x=F7|kxf2FnhADYA7^1ex4g3nDx>YvI!OHG&&qVsA0x``qk8ewx25T~ z{E?KGhFaVx9)eV4T4gi<>8*2BzRbfpHnwsL2{5yB3={8b@VN}k_2`jcu%b*U_i3#Y zRTnB=-YA?7R8&$Zg{9>&oh#t-W%9E255@gT&GyFMS4S+2%0N2~Znh#M`)@j+eoaoO zbBx%Crr;CYH_%bA;H4GYhw-sSWGLiQ&8C3}X9?8|45QF1$J==Iy1&RDJW`_5!0dAv zPJI2+x!-xyc3Q_M0J4TvFuQGK6>1JtiMfHm*+`bOfFqHp{{0mR+nZ60q+K^ftvW&vx%KC6haDP*I-KPJ__D zryhO*J&{x}C$2BAfU1lpDOY93W&^ooSX*DjNj|H}w`yg#e`sF32#Vmrq0w*`!i+MU zx`=;0R#x8AgSkBE>I2Ki4Pc%(OnnIHu7W#CiaaYJbtve$L~tbA}O#uT8+TbG8Qj8djGgmy<7keHrbkrcaWhFYR8@#;<*xXtOPq| zFd@}IdRqM!-zGff7qr}vu?E@!XzhX)D_j~yEjcoYZnnFkv;E3$7N5iP8o42dQW(0a zrn!xN9My>=<9Ns7Y_;U#wuRyh(Fy5A0Vckk)Q{*fXCIAr1=hf>!-ty3T1TD7YSH&JL&s zJ9#D}+OflrHFxqFs1Bkt&KR;Y4Om8N>rq6?&cL+#0ku<~QVgLJWqR2ppY_3iExn*w zep_mo$pxq_X`jPylN5Lm_fY!CgA#&bYdK(z+h>z9sU6u)35Q3P$P!;UALHwOI_J=+h8U~`-GxSVlh zik){LI~>#mY&oW`fj0eEhM`9Y??jSG?o7V1L2_+f-(XSRI-2DCv8Zqs>u7se3~zl8 zPgqam0CMTc+u2D}S%LHQ-Wp6{bvpzzk{R~RftV!J_a@y(tGdgJ=WMG_YBZN5&50tj z#eqfIHYr7V$HcF^#azPu)Q7rWlJ##iPFPKVvN4QRXjs=*1IXs)-5hG9C?Wgrr`HBjVw@5Scl>neDdCDO?w^q4MgJhFnT^7{I!F{@TfsR`N z2I-0R1bFr79m>7LL&Qw`%D0izvS4X6dE2jW)NkG*oqvUw{v&+;f5MOdga_gZbe4Ow z+}ZpBzVWblpA(+XsJCcx7S55U1MQIOK{_d77lKPEN4t+dkF_cZ@Nn;p`c;ayxg082 zW8sU~nStfsk*z`MjBtNgnQr|&YdS9pNQZnCagO;jn{31IC5F2!DQrd-W0*4<=%>m zYPpG7Qk*=W_u~s92=!2D)HslNIm_eLdzffJtl~k-ykebohWNZHTHx^`hfN!j&5H&T z&eSN8RIbhHOPa9HqBO5y)q?V!X4Gc>rfpKV>%1)tBV}nQ8CSJYq=K&+rG6^*#=1c^ z?M{`-cxnATY0_Qk3VpDki_c6Wo5&zHR2ONWzlMdSF=rTIq^YO>rLO1{E=+7!xp`}h zSAlYQ$5>S)tA|@95bEX3)oG|mC`urx7%GgSdD@(CTvAci zW{6Trw+dzMlQSV1VLlE||2_gv-eV1+0z!OH-Gp8~vPiQps(?s5x2EBX?6l5ubA;Ic z;Q=B3Cy&gYI2zzi$+a9pt)An_5FI^bDFpdfN{PRI^DEuav$wSh^J({KR-MQn^-?Q= zC{Y8Qpu-`WDKQb$+ zvCse^-ZD!%F+X#>M*$o?V!m$W2>0u#PoER!ds3hLGSLRGq#m{AY%(jF5ybWDnMoLXXh8;Ib^9mmmHfMf?WUW<*-qq`jxpR2=SWus!TDy;d4Fy zTG%;@-Aj3~FyBp-N?G<0kE)?8-wivrS9LUDE|nZe2eyxtFkcWMK8`lc|0D;6(at6YxpKtrmX>0ctcAA z(&Qtj@J;z`pAy@=D}nsoAQ%5*wBp0Q_2uTd))!iT-n$c;gd7(uN>s<5s1CS%%^R^I zV>}H2Xf^b&2N!uvYmF_y+CCo8!{mL{W`!+S347G2OWo}~qhw)-Y@kxo&4&hnh4~#-C*s87K}YO#t5kKoLUdTj<~j zG$HC73aVh-ij2`BD3AjTjDNp=Q-YeXH^6m{$ld|_dH)6QLc45K(J8$99FUYSAL#;Q%uYk}&r{F<3 zqb8)Z#`B2LrlBbo>C1mpc_{Knr6OL#m&$(dKPo{0f2JA?xBm8`KQt0Vvxf2)19W}` z9`SGZ1P=AbF~p|{Rg+Rx`zCC{8K;g0F>?Pf;o^P%FT^$Gjxvy9)isMMHK~JYpC=Qa zlJ3G_PmS4w2mcV9qU`LRI(a?y9-?0}+v&)O>%^@5M~pCy^^@)5LktR+<&eBC%Xh7% z92s5cN^T>SWu;w|m5!u>(Th!1gAJ0Z$W+c+2|nppq_ei-Dq`J;fHTf_7*4SHYws6} z2wDmp*Tqa%0y6fxHQ|Pn+aTwwq$&9@wKVr&%L6Q7)`)9o8WQp9R>nF=2D=$*Lu6g% znWHm%N$93DNsZQ=a6LmxkHZFEzAw)1x61k0m~YlXm@yR1{s z(Y=f|9^W4wM@`69N0-bWJRh1DM4DLE(b1Qbtmu6Azy_OgI{SIi-zR?2CLF~MUU#qa zbzz^R0h_gj{gHi1?_JeYf4JHrkAGNdk?1>wd!l^<8MGY`t5veGpQljeqTj2{P7R3A z?;jc)+zunW8kxn@j{tlh4JOXD2JMxjzAz7yn7dhyNxk!+Fx7|XMr0g7(o##j6v==T zfyy;N6+)tBz($QwXV-HX_-ANGe@@-J${FKTefKdbMF*3CtjWWB$rU5v)Rs5x2w zrv62O6aoAHpuX-Jfb0m%(cScF746i6JgF-0MYNgArl$6HJtI&H=x8EtKjlS=AaV;; zg_W!wuu~&6+Og@6XE7|9t{vd(-0MaBv&t^QX!e}{_7Cz0=aDaRMex7Kn;DpqB53~~ z+t1M{Tk8)0An(%?e^yX^f>LdkNB-64^b7o0u{DmaQ&(rJ)4!Gbse!2tDhubc z?RZQg|Nd!dH?^}Eq@?hbS`9Y*ca-hV#3AqHTz<+`c9ppTU+K=Qs*`Kiro&ij)AG$Z z01f%`Mk!ewXV?BU)y7UZ-MaLd@Arjm++}t|RwX>i8!Ex018y|2{*d)V!ySje?jUE-xEYefSonmOgv>idp+oj2B_q=0ejTR;J~LSY&3u6qQA_H|@d~ zeRL5g#Wmic2-Csx%~5ny%N~Caq%Q)dlg_O3`&?L77=l3D-L<<$^D|2?z6}YMaG0kX zts_a#g%(3DPbp2Z%FGp(lt;I9>@Zio^GK)9HN2n*F~bPWjd>cYpLEuR7CZYDLo&C= z<-D$*~YDLZ;q2|4m8=lf7I2)5$?|?+wDn(DKuv^Y0KqQo=_}4#68O# zWtQ%DF16sb$1Lqpeo{J)B{R2rxmU(6U7^b_G{?tW)sa$Ov?-ZnrU7o2&c`Iw6Y!bL zLEY!#ao4s~`Oh3R9*ai@{|)TcbI$0mB!4qk-FFSO%{8q4Gf7F!lg^^Bzmp6}`jaFZ z^q(Xz1qZhP4F!`kIz!)>)E@h*qg)rZcCfp0 zegxREPDTTKC!ExPEQX?{Ax0arKy}#cF^E3)V02q4v8Ai;@a*PeF(c0oB-pDy3qPkh z!LA7b3<2f2Yy|%f<+0o{80ZRbiwpr;p3aj);O{YK+6NZwhc|5+2-+M>jLPw~>evPj z#Rd@Y3kB2%X~7py#HTAIW8<&7HwuXZnlOZ*qVKd~$p+7ENofp2m9tfbp|fj`F}Vin zcqQKnHlVB5EzX~hufMxak1b>vQ=X7xJ&ZqfUorRXxi zZwX8riO2sXE{gw;IP{<^fosc=QG;#vvsyfce%uBhKzz_Y8}PcX4Oo*8Ahnpwdq6{O z*EVR;`6$j1G<^&~M~@CN{f!9Et0rA?N@JT3;H}ES6_9I)2P$2UYblZr`Gsr76u6cPueQ^wD|K=?f&L!~q57c@PO*2!vB)NSfGzYC z$#Tow$RRw+un~cjDZxRv?P%S*iSGv)J$Wg&?0s#l57$CL zALdnPG}W4YiN$)hT_gp&%QSevw&Yfx6q_rN1lDM;uF&Vc9Ih{5hD19A%>U4V#3wmfigE z9Jh+X6x;SYMgFUQc&Kdojmw&I2@jV54_ULOkBFvpT(HL8K)^s7TS{?Jf6eB5D5(KM z&)OTmDl0{;p&c%HaaORTZjtZ%oI#PDQiMIH0oa5+JI_E2yvdy*-osxl7txw%*v36K zZk@))HG#?@Kd569`4(-WGZ(8b< zhOzr0Be|T3S2+;~7wruH{%Qk60FHiqS;c>>e*<$>Qb=w8{W9pQX1Bd+No0gb7udE{-CSB&o;{@H<-X`dD| zcHg{vUs-$4nS^G`H&9rv4|F;%g36Qq^yj}5w=#nWM#REM&NUiJmR2A%d<>Flv}5Zd z1^>Zva3wac5e_mi5ZjC`XpkL(iC`SyFAVEbLIjYdc>4RL+(u{)r`5-qCSQ50W>Q%4 zP3(ImroraOv#c)OR~LF)Lw1-DI=`%XGSmF}aQHelK zSuoEXc4-ZoTp8TLveFsT*FWu?i6&*3h_)=UCS7aRLr(TAK)Y`QSFP>^S4+1=DFUE; zaOj>I9gx#$-L~FxO9Jrv3bQ%w$gzNxuI83rrPFRa_TH4Pm>Rc3vVrgKfheEyFf*Wh zie-4ma8mC$2I9RcoLROy1MtdYDp1}iA1=ysCdEN{B@mRZPCa^SqLApFdtd(ueuF2y zUuSpx5*+X^!2vmCpuB$z?)@Y9>W|=RtW#$fhG&&it1eGaUL`zLs;4BpQL75PQK^3b zyY<#21;+dnSgy^m{Y2ms~n?%qeSxMP!z7v)Wg<|*%p&%4tP%BOUw_={*RrX0)M z#fbYqfTISWd{Po-%eF;9d0`YmP~OmMT;Dr9wXeFK`DH2kla{#mwddU98=-fz1f<>j)GI*3!cy~MwD;_;Qw@B)-iwOa3V zQ2^eTH0du(3_CXUdg-pbLT+KePFox)pMImU$b?)5$swg8UudVyj&DX0iluFO}XcxPxe!-pBxoLemj966D`!I`O zoNC(`1HA0uJa~*%TBH1dT1yee6!xKMNEtu00!(77==n;7l(nJIW#LLS^B?aT;ikt+ zzC+|2k=t_X_bd`u^EWaNYi(kipM;G8E2CKX*a1`m9{f0&ot0JwDwXS2hU8x#eLNN9 zx#{w1_JOnx*aqokm>MC0m%;Cdz+ZPb>oKNd#7Ex*`_{Z6Pj75{ONhTI;K!^N^TBsr zoVWr_A6+2@%BI6r*9I`$JFJX^eTjsP#?u?U&DMKO+h@O2hdq7>0?>PnI;Cj$)$t#I z5wKf#^SlF(W-Xe~>9N-`rtG=i^^XT-gXNKm-*(H{Zn=791Q~{mc14Kh?BZ-#mVU5S zks)K#sptRG>lco;Ct%w|`ELMw**^d$VSfSGJ-P<$feg1p44?PlMlWx;R4< zkl(f&wB>LJk|_roD@3pT-uWyZ+h!u8C*ZJsQW?N-L{&Vr9rikD+TZj?%>SS-F*N1c z2K`F@aHqw#Jp!=(aFF@G!zqA=_nzMGP~osi{eUpLJA7Q-fsrG0W5uD>xWL8Y6O%-U zY4YrfE-qU;<3|;XSR|8+TsL!3$|*&ww)rKCJ+4xVCgtQYeI3*DD5Kuxt|DX{zHdeO zq#+Y{pRcz#vwe^1DjTqB-x#jv@o0js(4`CNVOX1_LX!rFlzYC)1M?`6F8S4Fl65r` z>2V6Ib&}9~U?5UM!#V_vo?>qk_`AtE?}Heoh@V)t!vN_MLMD**>MaBjh~(!D+Y3sE zJfF6CbF>}kQY$E6M{HrucQFNgt@Y^tL)cqD#j)()!ng$w?(Xg`!3hi++}+*X-8Hzo zyL)hV2=2ix5S%xhbMAfj{=fI$w`S36F%{5`ObAMGc#UcKoh-OhyPX zDf!@O-UO;iy$sV@4TSbHR<)marWt&V?1KVc|(2hkvr?PCcUZg34HMi>i1#2 z?JWQBJ|b2u&=-bjJ&0WNpuQ0j4xq}uUlV#CwScCwvxLwoW-N7aIrw5;_#yQb$JAwZ zd}zhH)V}?Hg<=AR!ixF`#S}Scuw6IJX$X|b^4*<@(8J1Lr2X5Ij#PFsI5*ER&>1T2 zDHUzQ(1q1R^#}{@3^02nYq$>%i-X1w(*Ni!+Ugk?12fVVDdp5%z*C9E@{5%-($Wa- zqgDNQ`!@sQo65=+qRip3ZSVf@Wa0)EPyosF7{oTof95Edpq@h)Zk9l9*>&+&6M(O1m{Ywfx24Q>+Unk^e|@e)Z6PYzkuyn{ zFIf9%xkEv8O6x#%xSb*>2r^z>6eVmZSLE){(VQ7$*iAsrldo7UzAn#RCE43CWlws&>FD3_Vn*gQqb0_o& z=-b|#Ff_lxY1pMk2xO5-~6;FYPYWGPC8QK!CHe}VMH zfam7`H{7(ylFutFQN*F?#ic<}{spaU)-46t%I#mtVZaNgaBUI^UPmy_{gQ`7DhwF_ zmo5a!ctw$!qm1PaYAOhMt8y9yM;1 z=Ffi+XjZ0vWYnD&Phe2~o5d%jzgYzL-r@r)6jZ7$oT~zk(*gXIfo2IPpAr8GN zI9wR@T!3JiJfO_}>8bSVw$v<|kRtGx>dZSx7urlO$ZqtPJfS<2kzd*;8N{%-$Q-4g zaZ9Z+Es*dhfW_0ajpDqzm;5`cWe~EJE1HZLUc)D>JpWKJ5!i-nKC-=jofQfIu#GBK zC|{4s5{zz`wM}u z0$8@#Gg^J72KM`rC{nEg*Fu21%8Cm@gP~rCKufxZYYIg>5d>%m7XGCJP28UqzrnSD z$x{m}8V$!yt&!NN2%DmxZ4gF@*rTS3`3K?7cPzm^CBc8hWrBOOaj@I_2nFRUF^m@ zP{I2I4l(4G3nmLbLzFli0w3M3f2wm1N!gKqDrceH z0>Sz3ar>&~PG({zCdP(Ne-GjJ)=n)DuRni&L~lA7l*>*5As!v~oNt!T_VDKW=H}l0?A^9e#c}#) z3;vzs;n1edXN9kNDQC;~_ELAxmU3(T{66w-Z`Zv+r~CbI`rsnt{qges>Fw0D<27e` zd_()@`R<~lrUvQqGUpyRw12Z}jh~NR7o(%6tCFBOW8-lC%@!#m)ipydM+IrzRhM&Z z*mX*ei|eIl`TS77ZH;{BF!Js)a^tnEEfqo6k})#$_T3pOQ0nH7g}3?MeGEsrkGtn9hxx5@ovybQf6cvbvGrrBiI1=Ed$YE$tHs{hxOZXCBSV}2 zrH`+>fNp15`@LI1$vgME!MJ1Ma86K0XiMsWhi_|_>)L^%!$8K}h54PwIp^w9LZaM} zI1M4!ZLO|uX!g(C(6zzkecx(?oAtN7YYE2bVcr@Wd#-J)_{Q*YMmHN`+gmS6^(*h> z({!sNAC=R!9$QY^n&l-Gi>lYwHwSZCbtuuFJkbjGvo02#w>#$7=`y*gp_e`{otsve zggJ@4(jG4iV*9VY@5>w7^?dv`1pNmkgKM`wsRZ13Yj5@Z_`C!>gnaMLFT9(Te>ys9 zw&-1uDi&)-U&*U_Dp5rQCzd)Ey&X*2R?ba37D+r=c<{eY3l?Fr_&(OInIb}03@^TR zWZrG)j(+Q5%--7Koti9rtp2@!Yw-H$<*?tq8tf*R(iIVAwv(zA@-D zxW;p)5m3XQ?6mzECAr^e#U#h16MSuSf2j9*sg(nC_6VxUA-+8i>o!+Ra;UFwZON6C z1QMn&RuHPh#*W`TKkq#D-_4)cKfY(Docdm-#4hi>;}Raemkowau6g)+<$i_cza%IS zBuJ?_&d=1U*C`x$aeS&c`c2spRVRXLTX9N{kAx;ei1_y2u(8utFebxKk9l0}%~{#R zLEd=Cgo|lAOl~nuYGEq65F@uR^}RF;R)JS((B(cOlvJ_7x>YGVXG19F(v%Zs?|Bs= z_rb>{kgz*vqc<4%)vs;fS6INWSnuxyJ=O5ux*vBW;n{nt@2AIq-dRi5WoF-}b?9QO z4IZ8E-W@X>KyntJq(5HW+fTdBiv(o6)o$4+-fJ3;+rwCiG1kaMZdj<=MjLSX$f|E{ zY_(JjYj_qUyjBhMGfqc_9?TyChYEH*J3kKVl*i|Ax)R3VmHPC;dK{E29+kXm_lFX? z(>;-c_Zjb(EZXSW=I!UT(%B(Y>w<0Ie0o;vejb_e$-LQL-IYs!K$Kn;wWt zinikmuQ4FQ_sXWkrp4WHO9-z=Y1s^0r$J|E)_pkKRkLZH=A6zrFKIEo_-0JUdBo`Q zKp<}OQ#Z=4ir%n|J4Z9<(gX=9Tx1N~cyUp!H|eCFPA|g58-q!*LH-jKnOYrW`o!tKqnv6!Ir|B{XD+@&;$t;?x*(~z}dm*)sMFOw0$*J z)(nEEqzpVk{S$bC=p1+=4tSzgycN>!-w=39FfAaj>9{@QyB~@Eb@fLgw@GVIyyDUi zl*SMEzfk@&!GEIspIKnBw?Nu`&;JR=B{ORSiU(!h0)iMA1O#LMFRuSk`U!SIk75f< z1`AAP`A@Q5TbobYOkzzRI2&MG@N*wH|C!)FG}nqZLM~{MYyy*^0+W46L$q|Lka|MA zzrBfh4n810(4=^&kxJ|Y@$p*lr5B`c8NUM`KBY%fnVzQ6OW8&Et=I7AF#Jc#Pcs0I z*|Q>cx?*yts8rAvKFV@S@BQfIBJ|)OYpnmz=O|n$LAPr&=s1^W2=fx#xMKejRRlRX zQa*lSHytT+Q=-$K2&>;NkXX0*%0q4?Ni!w9LmNy5G97E3_&5b3=JC$l@aDl5YoN+& zP)dEa{CQXiOV=$eD~JeG1Klc7e(ZGzu3RFAbqPP!!0dX@MXSQRw@crOLjHisRwi}J zN9jxKCUvtC2v`gb5#A9MH^Z9w;;w;kP$o_#_l$TD{wTlHj%6wKDgstLD8hn>?w_U< zQ#M|59}2HD@hG1VT@KeNVt=I~I4dCAr+m#8iY9wkSKKk+ym$+6**zB&ILgg)uP`d#f8kaCTVrdVG0_6%)uf@VV7^o!=X)e`yrd;lPtAXLxB{z2s!Xqqjk_ zygw#(orK7mRojM!{)3rbdYw`p!){ zP|(G!bqO2SWb0OGEmt>im~XyAzG2{U9`Clqb?i;LtFU7)CA&Mx5o^k@=XPq@)!mcM zXB*KCyB`+qbfL~&lP||D`r1YdacIE4o`2Ix>q!)_vE+8#+DYQ$5Z{7Hw|SPCn!{D} z>2PGWSx*O4N1*PP%GfSnRhsltWgeezXb6p@YhRg_li-k8ttrcU0R(c`1Xt z3AfABmE^R@N$qPhT~<9%S1ua=lD*{q`Rm3id+rtGfE1e|LzzI}Jg|lpXDGq51Nz07 zYHaZ|J8C211KndA;%yHj+Qkzh%Hnk0r|a?DTH(bTmb7j-j#ys;)H&7;YJSfN)#)vf zRchWjHV6xT(FPM^?3sxu~{bGWBjJha&z?Zsd;-BD>sPB{(w>3lVwT_ zcZsY!KfKF4PVk&aT<0gBeBwOzEhOhGS)^K=9T~xXX&tN{fyNQqy-Lb`H~P*h$OvKl z>W<@Dt$f^*#9udEDx7S;-74dcAFfvPdQuva931jRrGE9L8&h0dAGDVYJ~?WP++DeX z%aETZCsZ9Oix%!MIN}RtBeu3%oi#2QlUp9;jf2eQ#Vc?OVIOtv7Jk%wk}w z_+#T7vp*7>x|R9~f6~cxah+dBe;uv*SfS*Apep@m2?4ux$nx*fHI3LeFE`_&d=WWJ zwZ*K0l#T|AF~S-%pD|vgt*n&KS?L6KnisR>)V?RPLnWOWu`!ybv+i@hEnZbnA-SE7 z4^SK08^@fD=I%n==G!{T4__Z~_Ds6vOE?OrOn93tPIP$|8%G%z%Am)#glgUluWL7w zA~zY2k5OTFZt0IQ3+Bx18?OBbq z-zW~_yLF}l>P2+i%TA-+2*Kpdyv&2X={Ob*F37i zIJhgb2z$2%ae>%pNhElzBW%kOz~5^)RNfAs-Rx1n-F<&1j}RGX`V?1?U``{5ynemg zwr*ce%KsF46$$-zkG*&p6B5w8~i;&C_bF+DmZbY6<2B;&gNvJ?u_ zquxc!Sh)_V3tO$yfh9>bUjI>IP-HMRqGk*1tRSU3?-S7yzMvQAmpwxupi(%uPWLM#f-6So=SeyGA z4Uym&5toEL-LZ@%@e=3Cn0Ni(c|pKV&aQ2PY7{prCu9mDTs zXy`Ry{Bc_rEPEnGrMVXm@7mY88w%Lc3|-Vsox;aR{XP&JzWVc%Go5;30_@=RPo!az z!Uc~W6MIC29xKKwFAZzgX9(b6Lc|f7gnl;eNd3pNRWHY4Cd-K1Vj);tshy5pHeNnW z#7v~%!+Ru7y+yd?j4IbIk8bW7gc-=rq)j1xO8TDtmV~c}y)-W8*V~NlXIV2UkiAEc zSI{p_p*;g&-}z?vLFsO37UX6X|ZH8&|U4gx2<5bdEFe9 zEZz!lOTBBy;S(YruBv;SQ4x38>klXQuIVHDtXRGG6a6BDK;Jr8Tb1go{-b{pld6)u zcM-x$npV?wdjW5ntM2iR4r4S>v zePnTaU5yVO;zHKk=W~dsQv6{d?#1MSqxUkc=UPF}1;UXg(_9DBr6z}+?e?a;hzf2K zS_k-eDfv3CUad8Jf7da4O$>11VqJCh6xE~H{;oPFESU9-IhjECKgA?FdYtPSb%M_8 z+@73vo@bjffkarc<4ug_OaSUVr5&7^=L22-o+60q z)(d}0O|i56OX{EEw#eHY*L4T>R!$5gaDUIePpzD*a0*#Ywj|3rNYeS7%d+{t7qWcW zPdcLv>U1Qu4WAsFk^VqkAaENsDSWNtt&P&??*fHd8zNfI(78R~it4QWURwdoiA`Wm zC|*p;Rcv&Rm2hXO{xPgKUy71?uxUx{%ZY8{Yv}B2%eF0HLzVio$ljhzush&8sPNY6 z_Hg6g;r_Kb%abE?dp)2v^%m@By*X2I%XBs`LTpA$?DFwNMHRWnvhW6N-cl2?O$f1# zxFPkBzqjlPrHdN~j3x;2xyQ9pC7`B2MioJq&QpDFv~Z9zo4Bmpn38}+e}K|*j*@np zKBw!mj{0YvG_MpheC}M_DHhqTU;VrdbG!q1OiqZ6=S84c^xz_kniVp=S$9iR^|q;= zmbZGq_AVOA)zU9V!$>(n5fia+sF3m&l{7iN(<%kB&!H_TU6t3$Tf6hqaiY8RN=WWwJ5}t* zRp?hK(^YV`Rj{_Q0--H2@EZt6ASF6ZJ5}n(Rr-inJkUSymq4OY{PRw#z7}DzJVF{c&r8L;DY1yxtC?{1-y5lxLJz0jS?PjUs zVfh_AWXiv}iyfrESg+K>GI@2gVG~EJ+||u;bsR_T2g5ZMrZ)re@$iph}yeeGb4}r2 zcf@G1#{@(dLH&}q!cUh5)S5zco)atinZ4Q_%EiLj2B5Y0Ah^90Tm41JUfCyrW9OvB zETVH$MiFO9k#gR;PFrm#h*ZRdk}-O(xJT#--l3*KC1MZ|5mu%jX!A1&dsOW!W6M>O1m^%I5SWE8jyMNQDt?`ly&yt1 zf+NnMFf?ByOhh2i$i+}dMsz|F@LC9i#+aV2P|5lO_MMXq87sab`c2DP2@fp zVzAF55IRg5(_bxAV&QxOL}{4)mx@rsVH+6}#bt8c+cY5hp+p;!uCax}K#0M3*+4I_ z3p@wQwHwAPQDD+$+N{jcu^yK>f?#-9g1IeG)L4U=12w<*!Jw$UjO2pfSCePKp@3ke z`xBRD^UTssQ5yB6j{)z7|IC_24G567JECQLk}G!+2!SsU6d^FX*9(87XAUr5Ag-|) z=GrG-FwAugTq4;R(MgawiCW$4aQ-JBX%Pqm3MU3l4M_2~CIsSu7#aO;WPg4oEY{Xw z>?maa!B}`6y-SU`GGtJ{JZvn36LUOq9j?}o4Dq)ZU1#a;!g_!U7rk(jFDIsI!--1?rI&lJI%lWM%rc)V4>W*I}*0 z`r#<_KA9C7jbo87(M4IKRfj)vbnf?@4yS8g`YJf*DhQz)`Z^08ilBOQMl&Z=YK-I! zDpcz!4>ra%f_#zQyHVbCe5BdBM;dD<*m`ELL^eC!Sm3K;;}GKe=52@Ohu6<0*Mo+) z+J_0-_3^~WKk3|4dHLLWpy>Gi9Ekb8obxJ)q|?K!^Ug;Ay_aC13^;%yZ#t$;OI*E4 zhL^T_kiIYM^ihwzdfK_;+`Su@3m?Kv!$?Ux#KbZDwdTcy<7QQ}rC@4t^~BxjGcmb2 zA?x;9<@u_R=~f9C4M^pOtJ&(*30ls%ucbY_Gv#-2dmVCn_2~+`I1dN?KAl{GD)Ev}kMizQH)=5UTp_!I1@%>)TGH$Ox*S=?TrDa?_t^Ikb zs&TjOZ`Su!FplhcOPK32))5o~)pdJa9XEq}00j268U^0aa#EGa>W*eAdn2L;vK;Uz zpN*n}rZoOv^qe3beA4OrZ#}lY*k4JT5l&CZG=AOP8ebPkZl>Pt?(Bc!ejKPrpq5j$ za8;ag*%s~(B)cPOyY>_jQ2$B=+W!fpT)j#Gyb2}kh{)@CZ^?_=FDbC&KsA$8@+)R0 z#ya|EOsOSFP}OJ#AAAsHd;<@`sf116l4st`!grdb)3daNPg=!2=CaL9Z*5EC3w^nu zSZ0knJC3hSTq?;jjo#THXjHjEviP6N?T+PDT7$Gwy5JqK_gO}aU$u4yvGii4VZSgn zU=|}!5Pe^5dvOL)%!;%79m6Kd>iB~^%;XLPJT1fw3Jr@q-M(8xT%8CbU;UmX%mjIo zDE-bc7}L;?zx)U6?1awuFKmHkCPz2RppwpC`e%9PkS8ZlQi;+R!QqW?^0DRhlFWuw zbyxE$Yv5<;Jh4StKQNx!`XiZp3DE0<%}f|&h|`7H8XO-_K?-?@cYfiUhnXCPeMO!; z0fk~gn1!cel4jeZmAjBnp$s(xipc*9;~x$?MSE!gc9TZYL+@$-vnG3Zm zkk3baC^q7B{ov(7@u-sS;d}BIunFSy@LjZgZ0x_qIQ(D5n5nWon>STZr={r#D^jpN zYiRJEs1ek2UtyMO-fs6kZW{#3Kwf=@{8dA7Xh z@&2|MJ?Sdi#2*Kib3g;>yWf=Lye(|^2{T>X?vpc@oVT4)n36}|t`#8}CRqzguKyto z3*LoKvlW@JGiZ?bFPmQ>_GrxDI?bp$(XoX9_li$#ht!N>=&JIY{lUcwn_tkY*6VkX z<#nd+h24eSaY1pYYDngHE=MVN${^r7O0h6Vp`74D!xCOTGO z15(N_Z#OUUE{gx?P|7_5>UeYfmyWm5^?DYP{|5=@eDzGk~TOYoK-v`8{D(;mo!(t|V z!h%~ms?plI4WgrGYU2`3cVhLGeX9<@A$j;M!Hg#xhtC$&!UCZG>b{L#Egfj3VAT5q z+0Yv2*hTRjmu1>gBAP(u70WS1Vs#|$6mS`8uEVoGGV8l`+Pp7HrXa}-Q?z-I|aRWDxp#YQH0WJ@lhg#@*M+Z%Y} zDbp}^WJ}2#*+@rxk$Uy<1WU5<5Va4~I&nJs8uZ5cQ-crGN`JL~PzQ063s3$+tqY0o zn@i{WorPhkfdv)Dj)!a^Rk>5DvMsMd>!$`@7gDGgz_rX=h!{xMCY}Zz#-0g7k8b$` zbxc#3wu50Q3<3KGP8hp}-(su+r)H%BHFQ9k4$m)SODr0Hc68--`Xx5Oe{)qZ9nPz4 z0I!2GK#+^*3wPY|IBLvg{0Xj$n)slghW~@4r-9Q8i7(5z7@6K>x62nqin#rI%6_Mu$PKdOg?BbYBB>N;1 z_zxUJm?p9%y9EwsD$9&7K+{ANRljAPVktI#OVKKzqWggZ2ug`yH#nfI%1zeBwEPhQ zZ-DRvhrah@xHN-)sT2)qNSP7eDU3Zzr=@t);eV6GL9=}8*5+4H^_Q+8qJCqu(at!| z%-=zn^R@bR~$%qOQ4(|>9I+|QG2kz zoS}-to9_3z*RV=*k`t_YLAz))@#9&-s+*YCi%Ce8eL;c%;-CF=_&MLqM9cN;mYFwj z>RO@d^jrxJN%hZYjZB`{u=IEzmAyt~G;U^P7D^EWU=1uzgxpi{cU*5ik#JHIOhjo< z_Gd{0C_y7K1^pO*3LL4=rh7z)kCfjLL>2Z(%ajIBB8=S2B^Bb~m6<)UW$|m=@S?st z5b`WW<|=E$qdO`lcPqn>C0QucQHr6%(!nW;sYm8UJXJ{f(U@F`h@+z)VwL8{D>Fx# z?xjuh_gUpee3V}_D$63HN@5WnRJjqWG))KZ?1N-k7lrczRp9Q<$8LfHRCB|;1#CtRqd_>Q3b zj|Ez_KnvnOVSHFH*%6WWNc4Lpa=X+6CCNioVK8%{BZ3CXc=MZb9p#_u{C2TfS9J2f z`0fFhrS3!8=!m#+gjb%GEa$=vE(m)Kfwl}-6+&khNZ|QaIVGA}5`mWXO9;Iob#~u2 z11ivdl;oExkTS3@ctXn94M;gLU*dmICIS0z%3R;4O{{bV)Acyy#iC=$D@xP8Zt00U^gI#<+%SlGlngszR!X*^^sz^ioi{&Nl7;kLC3E6^Z zA&GJ!nsOkQ%`>T7nRKpQ*}>TV-ngFn6B}cyfclD`S+|h@II=ZQ{OgqDDn(S*_t!e8 zAY2&ECq5b&&M!izb(aV`P}}h}X!xQ937iww$u?)Bg3>gbc8T`xk0Cji72plQ3TM$l z1GfNfxVwP8HLvA%CVy8PU#kYHe!hgXf!DJi-h0 zAB(DJd?wFyLk(6K+0c!%Bihjl*|ZzRLq&`OgDtt-w(lo`e|YqRM2+Eh?~@|OvteOi z+_}2-2D7ev{3~Ys=tkbeJ|ZkMD!_ei1lZ6Zr~bVTW*9d@OEc51jHB?OGz1Q)luQ|@ z6d*4E9%siBProS%YlW za7vVH*E-tT88k5c2e$jv(g)3xbjMCv&7O+3QmEfQNa7 zBQ@Sm^k-_EooIS$g53`U7-_CdD54#w{D{bS)R@nM%)D4XP8dI&Vi2)yH3ZU^^beYM zyb>*7ido5KNkmd3+F4POh*a+1q1d}YMHJjpg*N$Au!0L4T5yvlqW%bvib$4uV?_PY zk-Hi>R@#e2=CA|P$dLR=BG)@jiwkUW{GcC&gDCw|=rjmfCO}!0RiQt;etsp0vHP%VatlAAe@aBt>*H?Q(~5p=Xw0MacBjibxtOp+`9TCpmjxBV^OEN15U8l0$TP~RbwspL8$^rg@TO( z%Cr($I`gK;^u74B*{*6S4@@2vHD?kvJNO3HC5W;rN7fYNBWpQz9@_79AroqFvvW(- zYd@UIL3noh^#X2+Javz$B_WNzSzn!maa4THOCYg|ee^vVh2Zz24E#-4(qNs7h@^}g zW6@;-U$XksB=w8m&hMCCailYLJ`%s5>Pbit!?=ic{lY|AND%XIhseuTP#i&cMJD=$ zEWVYlW#u%4@erNNXs5zCV%UdbP$>KEB0l{|$?ivshyKbGu>wvN>;f}AB#d{{u@NQ! zvK%Jxow;XW4=G0IWk>M`_BHemLS)}uwt$B~(Cbht#ErODV*H9yzFnkk(=fqCnd-y9 z*TupU#paV=u7ki_yhJX5`AI?@HL2Zgs=MxU%51CeH0jQ69D3C|Ab*?&kO^?w+E`P(s}m%NH=Xv*}#$0WC- zV4nAH5Pv&{C0yO9$C1+@$bf%+TS^lRE`)?()4v>elu$Szw8)_dNVo+^iiE6zGX_b*A5@8c=Bdp>V%D z%A}`S8BzhSid|h#XIHrqia#CgeeaoSmx8^wVs5&6CvlyW1p#s4Fui`jQ412<_7xm9 zbv4^x*(n_#P_pVj4}7FJO56po5crzs&x}Gp16VUnxF)??1gS%*NFk`I`YzhSfiC69{Z_#fA4W*(X&LljUuZnmxN1OcJ30gi+&28=hM zh#mcP<3Gc9*j!i437(aPvu^*-VElj*?$gz{r0FF|5x40!~xg*>kQV@LSClnwN z{|%JYXSN&rRRw};^3@@IW9LT()QcWaq;^Rg0v!--PN?6!*^~%9>oDOYlM}!yYz*L< zv`f!$PIs41?FABpFKJ`sy>>c_hBl@J%RKbqo{T@8hCWk+`V4QE-f_y-;t$C+sf{Da zHF*zTSUT^e1})fyFGK!`dd*Zo*U7b8dc$z4c#C7okm2fRUdLW3ZbVr(4H9sjun^p+ zUIL)npEQtJ_qsK%a&%&LoKtGi>4ROwt*I=OP>i{AX(Qou&@hC{4WJp&Sb6lYO?vG|iQ12Oxc`d%#Mg#KWDB`LVOZigzRUt}cb zU#ZARCPiqE(^OE0022U8sHPxW6%l%W4TBtw-HEQp?^&~$9^vMQbX$n(SabaXz5?s{ z26Iq{xoIQ9)md^=8X#ddi)7y?j!>pqR|_&GfQ7X9dMw1j5BP(^!cMI;hc61oh+|Sa z{n^x%Bvs>7lpi4}fg!n%Qyoy{@|kEVOx-$Qzi|6IfE|d!+nUf&?$xonu3RFpS`rI$ zw`FpC=P}I-OoV@Inh$iQhkRwgAk<)F%EP<9cs9adUdBd zjnB>eo|l=lfJLVSppr)T!cDDZmg%5K#TrM7pkw2nssMmXes`$q2wpNy`W$~x4m=#@ zW&W1o#vV)z!xtD?9`tu0sm!!vl)jhOq@vVT0Eo}J?PF}UR8xgP9_%~(R6ZzVDh&31 z^J*14C`6bL=8g~4;)R6%u;PI1H!0_K8J}6K0}B$cjDMFT8H0@$mseD*lOfG5t%Qlr zwac@|@ejkLt40Z9&Tq~Jc?1c6!02?Z(cf*W?+KY!7ju`2~eS zIbFefD&1-*co3tvUuHDe0{Y`H?jLV=FxUe)n4qJD5FM(l7_C7>Tf~`irlIwjGbFeN z>V-*RcJ;98i}036ch2EhH>;`2D%6WJ<&&0!928q;xDE>CHAp3JUe<3Il4nVE&smnA zN`ciyaU@`Mk;Mas4e6jzcT5Ux$Y)}6`L-!HHxq`Iay>GEe*t4mN;T=T>Dlzq84Pv< z3|>;=xVcht;y;`?SUnp3xTz=|;w&i(BtC)6X3q{F4TNQ}Mi16n$pcIZ?9l2U8J0+e zxtT?{si~_qfRq;0g8!x@DvF1!3J`U|#y$`&^o9i<+^HyE6#=_c_aq#uqdnokyF`t9 zM9Ekqg83$D8Jj`0hyn3t@gfS_+2~*Z) zhkg$-DoSf=O2I0ZXPmZuyYP0=1ldfu@E{cu|8WbcG9|+m(c}&uC-`fj;&@)i)eL@C z?`1EWY*%%+5WItKseDy0kn?VnWBJ>q_-0|IZF?GbF$%?&fXz~}Z^6?FkAMf@E0VUX zR%LQpXCHQ-huA;f*#6efNh_a2{4UgF%8U%#J}FON22zVjt+UI60)lpFG|&!REfzA`v>^lnggy)LMp zH5EtP{0eL!)3$G+$*8$DcMKhOQRyJ4gGMXzeq(GCiV#3doJAcoKU`>v>hq}i4z|Po zZwg1;5$ch$1cf*y{QZU4e7hfAc`HJI0(Cz4RWQWczX-T*H|!^o!1Db=fZ_m(8y$Pp zo-NB0OiWIOtR&cUBz`_)PK2n0s6<*^7~mXqw`ZrAAQjq_rzQ-L(AP>3^?Q_@Oqg$1 z?ofA-jyJ{JZ?q#GF(0H~;Xn8!0}=i*q&Ni}$VX~9BZ$?7FFI{zMbtq9m`~hYQnZK;a1P~0 zK$j$LMwxD;rL*cd&~Qi0ZzSgv0-Po!Ec`OxygNK9iHkzNF0_??Vo2|ai;JwMNWWO0 zqJ$?ocX;hgotT{kVNJ>7eIaDT2bQ%~5i(&5bc%dwId|G-8gn`q*)&n#)aA0Me1&>3 z;K$i5?c|OD?L63p?_8#^Vm^u+q6%x^Wiz5vg@EItB&n=k+)tPRocF<;(v&l`S=>;G zk9-EEvrw*Vt)HumV?Ra;^RXhl)FpS%O%napL(;&w+DptXfC?H}Io_RQ9FMk|+Dih& z5W5c+lQwOy%@PwY&_j)CBgCVdivu*KhynPQU00(r(yA(^>FT3_I3xpZ9NBd}1jdu- zxN3z%5+r)@&gKdAbO|J~sA@(#Uus9XYbB49(3%@YW@6Xk0b5!Ho8w9OIoz{sywaz=pnEjgoEq7bzCH zn;YN6te5xyv0HqBptx=iI0(oQ?0@X7>}c%dWNu^n*F38xl?{iVTxi`}C3>wpCa}%+ zGJDj=WVM^J6js1R0zm4$L9BmsCcx*(ZIP};jHZ};KR-jid7SF$cKk6c$C!!Wl8caR zAOOc0Fbg6|O-sXZJG)$B^`g(lloA%fM6D;l%UIGi2S1_?UXzT2Q5A|m@p!4=R2a~($U}#MJ7z#qNAQD$O+Hp@r92du`(2RGr2$_<4@O7Kf&NaMsa%}euaX_ zI-ifGz)L$IkCuhBRAhY?jaZjH*qF-C4IZbTEo{tn6qEkl9M^9#+NneSp5o$9x480S zsXq>%&tgSkMR0Cz2}eT$A$g;WBkuKD2(i9dLUJ<(mIouqu+Fx$Cjq?`%tCg$CpJ$G zb?qKN6s}Zd4k=eX+Q!c`QahCC6Nsy@u{@;sdj-Ci(dbGCj7V#LS~9XEFaSR6H0?1b zfE_c1xm-orvg}ecIPtNfk79T^lD3}Z?Mh7g^jqLINA_efejVOV(mpmo|2|m)#Hf=! z94up?x|b(hcy+?@;td*0bi&z*5fmrq&dq>SMviG$D?$R9K(JBdzD2ro*D+7OQp+QRhq&yowDkAX7Xq$F}Us4YZYU8*B8mKXA|f6BYn#+)j%hx$!0frzyzU z(S$aivug_=l9RM+(dv8mjYLl9z09~u!>K0R;&|^{Ki36aSuIkMXIok1x+d(porFAn z`84mwZ{Vz7fhNfw6L><&femrY9}kunVbDKTa79MF9+0rN1YMj=d0Z=l(G|*#z3O0( zM8r8Yad}uHb^hqpXYf?t zH4aa-wtr!-J~Pb}@pZasGLpH-d#V`rMRp!vm;EDaU8Fm@0mX4{vWW^g?y^NnXiWQy z0EBg==*pmO5?z22yufU5^plPS@?_>MAcNiWIl6ivv)O~A=elTUwG)j6;_ep3)16PIoJ;!HAZOXYpcw`YM;+08v$ zFe1DR-7p-Yg5iaU#z;SdOFCaG)G3F2Li`dI{e#4yjHO=c2pPCk@+fvxE*}1h8s01} ziopq`O^{&L1|Z*_q*TWoz51n^ieN7Kx`m1>M!KJMtN|2v$^AlD0)>8ZY&N!eJ)iy; z^pOIXLg(-=+i4hM-?W=ILZhVLl3XEt1P#`WiuRp!OC!IMu+_T&7+t^E+029HIP~d! zHhZw`0%TxsHZlARy0hARws!a?Hfm z#z|SbzFR6``KAWFRcte-o5mc#}(pHI0Xecy8A&ujRxSk-N@oF*F;?ITJ=ANf` ztzwzZYo$7VTgQ2v(@v0q2EbrDiAaJIbH7hN8od90#n)(YrK_h9rJ-rP?8UL8>j!5p z^xEeoeCiqxF{F-uM3xBnyp@J>u-?q5F>gZEs*=){RYCE|%d^sX-ANlg3U;8J!k|AI z3vRTQBh_J_g-(#-+L%Z!iXDF@>?AD`q_y4=*F7u}Mg%8Ll|&M2ho@^RnT#bSpn^Gi zam?ByY)yGYpH56DiAB>y;c%Ggz!LY@ITkaHWS(fLr3vd}gd(jYFT`<}So2`OVFn5& zDiX==+R%uNuA0i!R5}N@N%5P{5EO}Yk#ZC>W`t0IoZbFf?!IBi>1rR=SFzt795iOc zCT!_dWSM3P$cE*C*U}k!QmGYmzanCy(n~>CD*L8rW?FV!AkQbtY*hmmO6s)zgSn3b zHEo89;gxb&@+(`6EV@3!-@bOnJ?i-LxPkKBikR$wy8H*7|W9aV8jQd?o#a`oPl#AXy@74~ibYxUhrPKMKSIaolCVTMscxP>X0O|Dl zwq%%5_gw*#<9Mh4vz_ttT+W~o(m>p1yuPzxKZ4K<$g*)X>^lT9e+zR5S3ZUL zH{sKw=&-qwEK0LlIuOl!hy7cWoiT7$@s454^*toL^GADNai~WUIx?y{~cq z`<6@+CTSgl0s-lu0Rch(*DdK}W^8TD_}7v7uN}@bWNp_tu)6=KBDe1^JgqrLw2Pgs zoG%q4ptgv_Hi~LmQ7I4|lXWAU+xPnEZ`2OJoiz{CRtbGNn|n>S!EZ+VrHe(q8bPJt za5yOYlN@@O6DO0x@%NY32Bk;l5UWOksP{98bKNa8MO*q|sNt4+hk2X?tK?``8 zg^mF$vgOTz*s?%ORq|O zjjUyh%+n@p##afrn`4EQphM$r2n5NH%;fyECj$<(i z;wo+Fm{?XKo6+SLmavd8!EBkl>uCf>hx(c=sRT=`_z7sz&%PzfuAcC`X- ziBHt6lUeMwn4yWWd)|ZNPNvZwt~`KM*!QBG;kj?trq`^bcIT00tI~o)>ZNK!;>?o7 zWfyQUyxz>LuH<4tMyjR4lihtkVti6$xo=5M;N_^_ypP)bJzMM267I?;6?>MxGf}%i zN3DzFo}&gH3)E&ZFQ6&;3x>`h!&mRW4b8nCw|TG{&0F}Av(s)qB}O-rMvxL8MGnfQ z+tkW~SENkF3F*zSuj_kFpKl1u;|}03DLrn1Uy`P!;Zq17pUMO8k{V1#PEQT4hZPha z1!%6MrL;A3OioU-70c}$+LmcVQmQG$Klz&ByLz@`@{K6As7E>H$7-fpngYAZyF0dQ z?}&+4OZimL&mUxuy2a?YWz!M0j7fjcOMe?!{G#D?DPLLo*lB%XRolJ!o?z$F#i(gf za*vgekOl~>RD{d4H{UUKl~z9RJ4*9iohqWF+NB1E?ul``ZS)VPiB1=u?u8|&RSx=T z_9xlZBoi1h(JK9mU@^ng2A+f4Z^}hB2U#j0TDDXAllrNrTG8+U!etvFnFc;NA9D_f zr;r6ls|O?Df@cmYA2UeQD?M6JI_;6m%Xri>?m46+b=K7W`Sj3tV)SiE>_Py z7^-B|ifia_n%VX#<5`L}pe}D9$$tv_=Je6)ExHAsSb4CS#_?ZV%Z%T)X{}6Mvmh`j;*0ON7KbaLfh4!1+RAXAdXcYkqZT##ID%R9 zoUc28H3aau;roOpTA)f+3WIkObOiXtvHE&dlQ6sJ(>+Ez_4n|?cjsx0ME2sROAeJe zp^ThhNI1hJ-g!Wqf~LirKq6z+_P!wn;e>Om4B)NXcb{O3j$^4RtZbM+NRW-p?F(_# ze)52zOmIpbE8bVnEyfz(wr@$A36vu%%UD!scJirgd(Cn~p>B4J-`-Jtnkr&hib_x? z-6BrUBXg~c<2n8kGp{KdMkZ67 zZMUKOKl28Ri@z3_zP*3FoXLgl7B6;LV|0djbK%Pc0cT1O3myi-dnG{}Ej-;loE>!? z9e8a$tQ>zYdsQ*DI6Zu%fYZRo14#pKfMC*3PYKzG3UI0wf6QYfwIvmqU&FwiU%b6s zKCC;cT%p_*0;)DXR&;m4@!OG8y?c7JE_Fm0wiPCgnO#k2qiHR#=h@_q&Y*@$!7(sE z`qhx1d=gDN6vf)5>^8g#jD6YfLRlY7QVtD{cF;-lV}%Iak>_2vW$By?(x#cY;hz&? zd}&u>sJAJ%vc6ZKdqRvdC*#6Ukucf-E+%PFQh;?7YNApJz-X^e-5rAnDw?EO$C2w#6RQ&&yHYN^Bt( z@jatfD5`s%YF1&C@Jd@nOS!C7Tk>+|66NL#g|sTGEF%myM;K0d!|-1wtGhY7xc`2u zISI8+A$+8dy*hdhR|fd=(QHV;3IKNdsV7FX-XInSriDkbkm02+wZo6c%FY2UY_mY|+J=Ls&jAig~hbDQ;W1CxT2s4vD^uQByNj^xKKkELjGjzu2g6bn~M)=Hx`rNDk{raf}RSEX)0 zwM1QCS!u{@xlfD<%?n=#3`wOWj73D+BVsa<2=DG6&Ee$fXl~_(h|2u(?mp@+I<1IN zwl9@PCCV8>B9n#Cgz5{Ww2flrm>@?0R?4@VdHwu+pLdmZEIx8p=17)C2`Ur67>Xqc zS`xqVSN(~8_H#cZ35Fj@>MpVyVomefku8j+l64tSLy!_Imj$ ze)NK9VFI0)qo(AZE^wahV0K<1GsfY5tSGqWIBi9DKc!~Xak%WG4krzh-zaqA1??A0 zoyafzPc)%|VGfv@75T4!3W(r*J)H2&R$sKxc5SNxvw_RLMB(BTw~*O~5!NiM%DJ+t zub{K)(h2FPk8i)9)_$we?W#Fdz|W-BWh1YcIlSd|Bokfm2&@z}%pgeT%x*5gIZ6&L z4Hj1t6%*f_PEkP@Wl`J-R}*Pf11*glXM+5MX|Q?OgEB+z4RF?2qm7`)*+k*EDq=g& zaB+$UoSl3u5-0OoR9%onUt*OP`5dz0W&3tzss)I~C*v$CyFPN+0o47eom-24s8*rUg~i;naL zTUX9L(wVsj3v-8a-h~^yPz=^u>sV;+g{qi`;k9h^&IQDL%jML(m9=&w78*zQk{YjF zQQn+w^iZliwe!of^y&^p@0sHsZ2R`H<=ysuW#dP&?fWuInB7J?M(fx&9h zzFy^uv92Ms1($l||8R+_^#Gz}{S&JiU%5Iw)+k3jxhr7!VwTLrTgQKiHUPL$9{1w9 z16M^3kD7WJAM=*FvEiw=(SZl#a9I*)#3h)VbLHgw)uFlOZN7!IX*Cu3WY+`1?P`pZ z-47>3>oZ-u!*8W;bMf`I-I?vebGJ7wpu(^-l@%No51V7VE`VL*-kh-t`=_nj(E)%^ zdH{d|F=HVLcmJNI5XuWNKAp^L9eC_qtgLsm?OjN;NF`eRMA;ob65it`#q4Pn=qlot z;Y1O!oqv-eQp8>38m^eELh_2$%k9dhz9`P*xa)Wut%}M8!UV`X|CVm(5$$G%M}wW)E_RCZh%7}PD2I? zv0H9&{f5OyN}zW4^K}i=N5m`$U`6-oXKJQSYy|Az^3qMYpiXHx7|2?wcV7OP74KIy({}ut3 z;x|}dK=f;V!pIs?j6ILC0^eKa_*IK+Y2p@by*qVUOnG4cAl(M_3(Hl>$9L?a6V%X6 zBYdDq`dXu~h0O}R;0GklA9xq+%}=IHjjU3E={pWs+%E5hE*6u>{4l;I<{e_6;0WKv ze;`vEdxCpTX;Q>Rp2wN~s@(BFtV+VZ_)Y|gPRk%||GUH*64? zZSY#xcTCh&GCO5+Lgr#QD9?r6;AFF9S`4p7j#8T6CCf=h2RDuS3FEq4LllvCyssg&zELn?Gz1!hi-sjlE3rrzI%JB%mJ*E4kH_fS_9X(Kk9Le> zb0Fv?g*uNhBTkAag&O5+^+GZywgRtOLr0AIQ>X$tf3knuMgopNI%$FoU*h?ygg`v$ zYe>Q{RmPTreqOcb3;Gcbu<5gM1H82FbBWn~zB?;8oflon8`ZC9TX?J)a@E{0rF!uD zQa>ecEzO)<^*@TCoAA6|J`QkH_k4GCXnhvgftlC-b09QWvOBM@f+C8q5tO9C1Pf## zU}q0mz0-1#)*Ut~F&UQRp;HCFT|KJmZNnA{NloV{2+;4bld!v*`)mPofZ1Igyy794 zXK^BF47mU;4D75(V3IUuZLLeJo*-85J(l(g>b>}vUNw`{HEF&WTM)pl5Gda~U$?pg zrG18FsY0KiC6(K4t8jKW)x&*Q(u`6ylwfF|YH#z4eOU{l@Ku3cnbcDtP3Y9j_VuiT zK=>;0g>Y*FXm_ni#`+W4R#aC}RypV7+U6j8{6fk{`lz`9H4WpeaWw2}A}ngH?j9 zF~;`teIJ>4a4dix#%Se2X3xPN#S_3xA8Yo6hjzc?A0PwtT8P3Kn-OZ|Ivk11LUk7fJ-rr6I>FH&uq3;(i`tyMHmVp@Dn=VU)d z-$)%2xrF#tWLz6q$V~#?_E#9PTN^z%8nRO8LlB&h$wpgJeDT)q3vNxcI%sw zHoxiZ;2yt9XhYJ3fS-@2%FYVQneQT9x53^~P0Ff*ru)$5bOc@C>NsSJ&d>kro08nX z^|_7QpaS=y>2%{jtA&c1_Vek5`!JtI`;F>&3E0s9EZ{=&a(k%P}@|M_<<2tMhNR9Cu%LW=q;JdOp($Q0GBdRm;Aittbe5iz%4 zvg7X`2yqPnFpxzAgRPuAOrH6;Sh*Yh^3IS6d{~vF&Jef45OHMOztM;z=+=7##s7W$ z->y9}5FC!HX^XgJ904S{0o*`b`Dg91aCZA0iAIJWFDy`OA>a;Z007|)co5>sKX5Y_ zm;ZWdh3l6W83^|?cm%oe3`9qGIlEc%A}Bl^5w`yq+zCWYEP!Zy2+3XD`H7kl&By1pth-&;bNDn1&ErME-sdcMl&2tKaELd%n-waEbG_V{{Z@w*g*gQ literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetsByGeoAdaptor.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetsByGeoAdaptor.scala deleted file mode 100644 index 3228760fd..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TopTweetsByGeoAdaptor.scala +++ /dev/null @@ -1,413 +0,0 @@ -package com.twitter.frigate.pushservice.adaptor - -import com.twitter.finagle.stats.Counter -import com.twitter.finagle.stats.Stat -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.CandidateSource -import com.twitter.frigate.common.base.CandidateSourceEligible -import com.twitter.frigate.common.base.TweetCandidate -import com.twitter.frigate.common.predicate.CommonOutNetworkTweetCandidatesSourcePredicates.filterOutReplyTweet -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.model.PushTypes -import com.twitter.frigate.pushservice.params.PopGeoTweetVersion -import com.twitter.frigate.pushservice.params.PushParams -import com.twitter.frigate.pushservice.params.TopTweetsForGeoCombination -import com.twitter.frigate.pushservice.params.TopTweetsForGeoRankingFunction -import com.twitter.frigate.pushservice.params.{PushFeatureSwitchParams => FS} -import com.twitter.frigate.pushservice.predicate.DiscoverTwitterPredicate -import com.twitter.frigate.pushservice.predicate.TargetPredicates -import com.twitter.frigate.pushservice.util.MediaCRT -import com.twitter.frigate.pushservice.util.PushAdaptorUtil -import com.twitter.frigate.pushservice.util.PushDeviceUtil -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.geoduck.common.thriftscala.{Location => GeoLocation} -import com.twitter.geoduck.service.thriftscala.LocationResponse -import com.twitter.gizmoduck.thriftscala.UserType -import com.twitter.hermit.pop_geo.thriftscala.PopTweetsInPlace -import com.twitter.recommendation.interests.discovery.core.model.InterestDomain -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storehaus.FutureOps -import com.twitter.storehaus.ReadableStore -import com.twitter.util.Future -import com.twitter.util.Time -import scala.collection.Map - -case class PlaceTweetScore(place: String, tweetId: Long, score: Double) { - def toTweetScore: (Long, Double) = (tweetId, score) -} -case class TopTweetsByGeoAdaptor( - geoduckStoreV2: ReadableStore[Long, LocationResponse], - softUserGeoLocationStore: ReadableStore[Long, GeoLocation], - topTweetsByGeoStore: ReadableStore[InterestDomain[String], Map[String, List[(Long, Double)]]], - topTweetsByGeoStoreV2: ReadableStore[String, PopTweetsInPlace], - tweetyPieStore: ReadableStore[Long, TweetyPieResult], - tweetyPieStoreNoVF: ReadableStore[Long, TweetyPieResult], - globalStats: StatsReceiver) - extends CandidateSource[Target, RawCandidate] - with CandidateSourceEligible[Target, RawCandidate] { - - override def name: String = this.getClass.getSimpleName - - private[this] val stats = globalStats.scope("TopTweetsByGeoAdaptor") - private[this] val noGeohashUserCounter: Counter = stats.counter("users_with_no_geohash_counter") - private[this] val incomingRequestCounter: Counter = stats.counter("incoming_request_counter") - private[this] val incomingLoggedOutRequestCounter: Counter = - stats.counter("incoming_logged_out_request_counter") - private[this] val loggedOutRawCandidatesCounter = - stats.counter("logged_out_raw_candidates_counter") - private[this] val emptyLoggedOutRawCandidatesCounter = - stats.counter("logged_out_empty_raw_candidates") - private[this] val outputTopTweetsByGeoCounter: Stat = - stats.stat("output_top_tweets_by_geo_counter") - private[this] val loggedOutPopByGeoV2CandidatesCounter: Counter = - stats.counter("logged_out_pop_by_geo_candidates") - private[this] val dormantUsersSince14DaysCounter: Counter = - stats.counter("dormant_user_since_14_days_counter") - private[this] val dormantUsersSince30DaysCounter: Counter = - stats.counter("dormant_user_since_30_days_counter") - private[this] val nonDormantUsersSince14DaysCounter: Counter = - stats.counter("non_dormant_user_since_14_days_counter") - private[this] val topTweetsByGeoTake100Counter: Counter = - stats.counter("top_tweets_by_geo_take_100_counter") - private[this] val combinationRequestsCounter = - stats.scope("combination_method_request_counter") - private[this] val popGeoTweetVersionCounter = - stats.scope("popgeo_tweet_version_counter") - private[this] val nonReplyTweetsCounter = stats.counter("non_reply_tweets") - - val MaxGeoHashSize = 4 - - private def constructKeys( - geohash: Option[String], - accountCountryCode: Option[String], - keyLengths: Seq[Int], - version: PopGeoTweetVersion.Value - ): Set[String] = { - val geohashKeys = geohash match { - case Some(hash) => keyLengths.map { version + "_geohash_" + hash.take(_) } - case _ => Seq.empty - } - - val accountCountryCodeKeys = - accountCountryCode.toSeq.map(version + "_country_" + _.toUpperCase) - (geohashKeys ++ accountCountryCodeKeys).toSet - } - - def convertToPlaceTweetScore( - popTweetsInPlace: Seq[PopTweetsInPlace] - ): Seq[PlaceTweetScore] = { - popTweetsInPlace.flatMap { - case p => - p.popTweets.map { - case popTweet => PlaceTweetScore(p.place, popTweet.tweetId, popTweet.score) - } - } - } - - def sortGeoHashTweets( - placeTweetScores: Seq[PlaceTweetScore], - rankingFunction: TopTweetsForGeoRankingFunction.Value - ): Seq[PlaceTweetScore] = { - rankingFunction match { - case TopTweetsForGeoRankingFunction.Score => - placeTweetScores.sortBy(_.score)(Ordering[Double].reverse) - case TopTweetsForGeoRankingFunction.GeohashLengthAndThenScore => - placeTweetScores - .sortBy(row => (row.place.length, row.score))(Ordering[(Int, Double)].reverse) - } - } - - def getResultsForLambdaStore( - inputTarget: Target, - geohash: Option[String], - store: ReadableStore[String, PopTweetsInPlace], - topk: Int, - version: PopGeoTweetVersion.Value - ): Future[Seq[(Long, Double)]] = { - inputTarget.accountCountryCode.flatMap { countryCode => - val keys = { - if (inputTarget.params(FS.EnableCountryCodeBackoffTopTweetsByGeo)) - constructKeys(geohash, countryCode, inputTarget.params(FS.GeoHashLengthList), version) - else - constructKeys(geohash, None, inputTarget.params(FS.GeoHashLengthList), version) - } - FutureOps - .mapCollect(store.multiGet(keys)).map { - case geohashTweetMap => - val popTweets = - geohashTweetMap.values.flatten.toSeq - val results = sortGeoHashTweets( - convertToPlaceTweetScore(popTweets), - inputTarget.params(FS.RankingFunctionForTopTweetsByGeo)) - .map(_.toTweetScore).take(topk) - results - } - } - } - - def getPopGeoTweetsForLoggedOutUsers( - inputTarget: Target, - store: ReadableStore[String, PopTweetsInPlace] - ): Future[Seq[(Long, Double)]] = { - inputTarget.countryCode.flatMap { countryCode => - val keys = constructKeys(None, countryCode, Seq(4), PopGeoTweetVersion.Prod) - FutureOps.mapCollect(store.multiGet(keys)).map { - case tweetMap => - val tweets = tweetMap.values.flatten.toSeq - loggedOutPopByGeoV2CandidatesCounter.incr(tweets.size) - val popTweets = sortGeoHashTweets( - convertToPlaceTweetScore(tweets), - TopTweetsForGeoRankingFunction.Score).map(_.toTweetScore) - popTweets - } - } - } - - def getRankedTweets( - inputTarget: Target, - geohash: Option[String] - ): Future[Seq[(Long, Double)]] = { - val MaxTopTweetsByGeoCandidatesToTake = - inputTarget.params(FS.MaxTopTweetsByGeoCandidatesToTake) - val scoringFn: String = inputTarget.params(FS.ScoringFuncForTopTweetsByGeo) - val combinationMethod = inputTarget.params(FS.TopTweetsByGeoCombinationParam) - val popGeoTweetVersion = inputTarget.params(FS.PopGeoTweetVersionParam) - - inputTarget.isHeavyUserState.map { isHeavyUser => - stats - .scope(combinationMethod.toString).scope(popGeoTweetVersion.toString).scope( - "IsHeavyUser_" + isHeavyUser.toString).counter().incr() - } - combinationRequestsCounter.scope(combinationMethod.toString).counter().incr() - popGeoTweetVersionCounter.scope(popGeoTweetVersion.toString).counter().incr() - lazy val geoStoreResults = if (geohash.isDefined) { - val hash = geohash.get.take(MaxGeoHashSize) - topTweetsByGeoStore - .get( - InterestDomain[String](hash) - ) - .map { - case Some(scoringFnToTweetsMapOpt) => - val tweetsWithScore = scoringFnToTweetsMapOpt - .getOrElse(scoringFn, List.empty) - val sortedResults = sortGeoHashTweets( - tweetsWithScore.map { - case (tweetId, score) => PlaceTweetScore(hash, tweetId, score) - }, - TopTweetsForGeoRankingFunction.Score - ).map(_.toTweetScore).take( - MaxTopTweetsByGeoCandidatesToTake - ) - sortedResults - case _ => Seq.empty - } - } else Future.value(Seq.empty) - lazy val versionPopGeoTweetResults = - getResultsForLambdaStore( - inputTarget, - geohash, - topTweetsByGeoStoreV2, - MaxTopTweetsByGeoCandidatesToTake, - popGeoTweetVersion - ) - combinationMethod match { - case TopTweetsForGeoCombination.Default => geoStoreResults - case TopTweetsForGeoCombination.AccountsTweetFavAsBackfill => - Future.join(geoStoreResults, versionPopGeoTweetResults).map { - case (geoStoreTweets, versionPopGeoTweets) => - (geoStoreTweets ++ versionPopGeoTweets).take(MaxTopTweetsByGeoCandidatesToTake) - } - case TopTweetsForGeoCombination.AccountsTweetFavIntermixed => - Future.join(geoStoreResults, versionPopGeoTweetResults).map { - case (geoStoreTweets, versionPopGeoTweets) => - CandidateSource.interleaveSeqs(Seq(geoStoreTweets, versionPopGeoTweets)) - } - } - } - - override def get(inputTarget: Target): Future[Option[Seq[RawCandidate]]] = { - if (inputTarget.isLoggedOutUser) { - incomingLoggedOutRequestCounter.incr() - val rankedTweets = getPopGeoTweetsForLoggedOutUsers(inputTarget, topTweetsByGeoStoreV2) - val rawCandidates = { - rankedTweets.map { rt => - FutureOps - .mapCollect( - tweetyPieStore - .multiGet(rt.map { case (tweetId, _) => tweetId }.toSet)) - .map { tweetyPieResultMap => - val results = buildTopTweetsByGeoRawCandidates( - inputTarget, - None, - tweetyPieResultMap - ) - if (results.isEmpty) { - emptyLoggedOutRawCandidatesCounter.incr() - } - loggedOutRawCandidatesCounter.incr(results.size) - Some(results) - } - }.flatten - } - rawCandidates - } else { - incomingRequestCounter.incr() - getGeoHashForUsers(inputTarget).flatMap { geohash => - if (geohash.isEmpty) noGeohashUserCounter.incr() - getRankedTweets(inputTarget, geohash).map { rt => - if (rt.size == 100) { - topTweetsByGeoTake100Counter.incr(1) - } - FutureOps - .mapCollect((inputTarget.params(FS.EnableVFInTweetypie) match { - case true => tweetyPieStore - case false => tweetyPieStoreNoVF - }).multiGet(rt.map { case (tweetId, _) => tweetId }.toSet)) - .map { tweetyPieResultMap => - Some( - buildTopTweetsByGeoRawCandidates( - inputTarget, - None, - filterOutReplyTweet( - tweetyPieResultMap, - nonReplyTweetsCounter - ) - ) - ) - } - }.flatten - } - } - } - - private def getGeoHashForUsers( - inputTarget: Target - ): Future[Option[String]] = { - - inputTarget.targetUser.flatMap { - case Some(user) => - user.userType match { - case UserType.Soft => - softUserGeoLocationStore - .get(inputTarget.targetId) - .map(_.flatMap(_.geohash.flatMap(_.stringGeohash))) - - case _ => - geoduckStoreV2.get(inputTarget.targetId).map(_.flatMap(_.geohash)) - } - - case None => Future.None - } - } - - private def buildTopTweetsByGeoRawCandidates( - target: PushTypes.Target, - locationName: Option[String], - topTweets: Map[Long, Option[TweetyPieResult]] - ): Seq[RawCandidate with TweetCandidate] = { - val candidates = topTweets.map { tweetIdTweetyPieResultMap => - PushAdaptorUtil.generateOutOfNetworkTweetCandidates( - inputTarget = target, - id = tweetIdTweetyPieResultMap._1, - mediaCRT = MediaCRT( - CommonRecommendationType.GeoPopTweet, - CommonRecommendationType.GeoPopTweet, - CommonRecommendationType.GeoPopTweet - ), - result = tweetIdTweetyPieResultMap._2, - localizedEntity = None - ) - }.toSeq - outputTopTweetsByGeoCounter.add(candidates.length) - candidates - } - - private val topTweetsByGeoFrequencyPredicate = { - TargetPredicates - .pushRecTypeFatiguePredicate( - CommonRecommendationType.GeoPopTweet, - FS.TopTweetsByGeoPushInterval, - FS.MaxTopTweetsByGeoPushGivenInterval, - stats - ) - } - - def getAvailabilityForDormantUser(target: Target): Future[Boolean] = { - lazy val isDormantUserNotFatigued = topTweetsByGeoFrequencyPredicate(Seq(target)).map(_.head) - lazy val enableTopTweetsByGeoForDormantUsers = - target.params(FS.EnableTopTweetsByGeoCandidatesForDormantUsers) - - target.lastHTLVisitTimestamp.flatMap { - case Some(lastHTLTimestamp) => - val minTimeSinceLastLogin = - target.params(FS.MinimumTimeSinceLastLoginForGeoPopTweetPush).ago - val timeSinceInactive = target.params(FS.TimeSinceLastLoginForGeoPopTweetPush).ago - val lastActiveTimestamp = Time.fromMilliseconds(lastHTLTimestamp) - if (lastActiveTimestamp > minTimeSinceLastLogin) { - nonDormantUsersSince14DaysCounter.incr() - Future.False - } else { - dormantUsersSince14DaysCounter.incr() - isDormantUserNotFatigued.map { isUserNotFatigued => - lastActiveTimestamp < timeSinceInactive && - enableTopTweetsByGeoForDormantUsers && - isUserNotFatigued - } - } - case _ => - dormantUsersSince30DaysCounter.incr() - isDormantUserNotFatigued.map { isUserNotFatigued => - enableTopTweetsByGeoForDormantUsers && isUserNotFatigued - } - } - } - - def getAvailabilityForPlaybookSetUp(target: Target): Future[Boolean] = { - lazy val enableTopTweetsByGeoForNewUsers = target.params(FS.EnableTopTweetsByGeoCandidates) - val isTargetEligibleForMrFatigueCheck = target.isAccountAtleastNDaysOld( - target.params(FS.MrMinDurationSincePushForTopTweetsByGeoPushes)) - val isMrFatigueCheckEnabled = - target.params(FS.EnableMrMinDurationSinceMrPushFatigue) - val applyPredicateForTopTweetsByGeo = - if (isMrFatigueCheckEnabled) { - if (isTargetEligibleForMrFatigueCheck) { - DiscoverTwitterPredicate - .minDurationElapsedSinceLastMrPushPredicate( - name, - FS.MrMinDurationSincePushForTopTweetsByGeoPushes, - stats - ).andThen( - topTweetsByGeoFrequencyPredicate - )(Seq(target)).map(_.head) - } else { - Future.False - } - } else { - topTweetsByGeoFrequencyPredicate(Seq(target)).map(_.head) - } - applyPredicateForTopTweetsByGeo.map { predicateResult => - predicateResult && enableTopTweetsByGeoForNewUsers - } - } - - override def isCandidateSourceAvailable(target: Target): Future[Boolean] = { - if (target.isLoggedOutUser) { - Future.True - } else { - PushDeviceUtil - .isRecommendationsEligible(target).map( - _ && target.params(PushParams.PopGeoCandidatesDecider)).flatMap { isAvailable => - if (isAvailable) { - Future - .join(getAvailabilityForDormantUser(target), getAvailabilityForPlaybookSetUp(target)) - .map { - case (isAvailableForDormantUser, isAvailableForPlaybook) => - isAvailableForDormantUser || isAvailableForPlaybook - case _ => false - } - } else Future.False - } - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TrendsCandidatesAdaptor.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TrendsCandidatesAdaptor.docx new file mode 100644 index 0000000000000000000000000000000000000000..c2e6b93263a3f93db8038e1453e84ac8c55594be GIT binary patch literal 39132 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 z%0A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 r<9?3HG2=yyC)R^Uc+Z62rr2?HsG~s+%%C5$iV - softUserGeoLocationStore - .get(user.id) - .map(_.flatMap(_.simpleRgcResult.flatMap(_.countryCodeAlpha2))) - - case _ => target.accountCountryCode - } - } - - for { - countryCode <- getUserCountryCode(target) - inferredLanguage <- target.inferredUserDeviceLanguage - } yield { - Query( - userId = target.targetId, - displayLocation = DisplayLocation.MagicRecs, - languageCode = inferredLanguage, - countryCode = countryCode, - maxResults = target.params(PushFeatureSwitchParams.MaxRecommendedTrendsToQuery) - ) - } - } - - /** - * Query candidates only if sent at most [[PushFeatureSwitchParams.MaxTrendTweetNotificationsInDuration]] - * trend tweet notifications in [[PushFeatureSwitchParams.TrendTweetNotificationsFatigueDuration]] - */ - val trendTweetFatiguePredicate = TargetPredicates.pushRecTypeFatiguePredicate( - CommonRecommendationType.TrendTweet, - PushFeatureSwitchParams.TrendTweetNotificationsFatigueDuration, - PushFeatureSwitchParams.MaxTrendTweetNotificationsInDuration, - trendAdaptorStats - ) - - private val recommendedTrendsWithTweetsCandidateSource: CandidateSource[ - Target, - RawCandidate with TrendsCandidate - ] = recommendedTrendsCandidateSource - .convert[Target, TrendsCandidate]( - getQuery, - recommendedTrendsCandidateSource.identityCandidateMapper - ) - .batchMapValues[Target, RawCandidate with TrendsCandidate]( - trendsCandidatesToTweetCandidates(_, _, getTweetyPieResults)) - - private def getTweetyPieResults( - tweetIds: Seq[TweetId], - target: Target - ): Future[Map[TweetId, TweetyPieResult]] = { - if (target.params(PushFeatureSwitchParams.EnableSafeUserTweetTweetypieStore)) { - Future - .collect( - safeUserTweetTweetyPieStore.multiGet( - tweetIds.toSet.map(UserTweet(_, Some(target.targetId))))).map { - _.collect { - case (userTweet, Some(tweetyPieResult)) => userTweet.tweetId -> tweetyPieResult - } - } - } else { - Future - .collect((target.params(PushFeatureSwitchParams.EnableVFInTweetypie) match { - case true => tweetyPieStore - case false => tweetyPieStoreNoVF - }).multiGet(tweetIds.toSet)).map { tweetyPieResultMap => - filterOutReplyTweet(tweetyPieResultMap, nonReplyTweetsCounter).collect { - case (tweetId, Some(tweetyPieResult)) => tweetId -> tweetyPieResult - } - } - } - } - - /** - * - * @param _target: [[Target]] object representing notificaion recipient user - * @param trendsCandidates: Sequence of [[TrendsCandidate]] returned from ERS - * @return: Seq of trends candidates expanded to associated tweets. - */ - private def trendsCandidatesToTweetCandidates( - _target: Target, - trendsCandidates: Seq[TrendsCandidate], - getTweetyPieResults: (Seq[TweetId], Target) => Future[Map[TweetId, TweetyPieResult]] - ): Future[Seq[RawCandidate with TrendsCandidate]] = { - - def generateTrendTweetCandidates( - trendCandidate: TrendsCandidate, - tweetyPieResults: Map[TweetId, TweetyPieResult] - ) = { - val tweetIds = trendCandidate.context.curatedRepresentativeTweets.getOrElse(Seq.empty) ++ - trendCandidate.context.algoRepresentativeTweets.getOrElse(Seq.empty) - - tweetIds.flatMap { tweetId => - tweetyPieResults.get(tweetId).map { _tweetyPieResult => - new RawCandidate with TrendTweetCandidate { - override val trendId: String = trendCandidate.trendId - override val trendName: String = trendCandidate.trendName - override val landingUrl: String = trendCandidate.landingUrl - override val timeBoundedLandingUrl: Option[String] = - trendCandidate.timeBoundedLandingUrl - override val context: TrendsContext = trendCandidate.context - override val tweetyPieResult: Option[TweetyPieResult] = Some(_tweetyPieResult) - override val tweetId: TweetId = _tweetyPieResult.tweet.id - override val target: Target = _target - } - } - } - } - - // collect all tweet ids associated with all trends - val allTweetIds = trendsCandidates.flatMap { trendsCandidate => - val context = trendsCandidate.context - context.curatedRepresentativeTweets.getOrElse(Seq.empty) ++ - context.algoRepresentativeTweets.getOrElse(Seq.empty) - } - - getTweetyPieResults(allTweetIds, _target) - .map { tweetIdToTweetyPieResult => - val trendTweetCandidates = trendsCandidates.flatMap { trendCandidate => - val allTrendTweetCandidates = generateTrendTweetCandidates( - trendCandidate, - tweetIdToTweetyPieResult - ) - - val (tweetCandidatesFromCuratedTrends, tweetCandidatesFromNonCuratedTrends) = - allTrendTweetCandidates.partition(_.isCuratedTrend) - - tweetCandidatesFromCuratedTrends.filter( - _.target.params(PushFeatureSwitchParams.EnableCuratedTrendTweets)) ++ - tweetCandidatesFromNonCuratedTrends.filter( - _.target.params(PushFeatureSwitchParams.EnableNonCuratedTrendTweets)) - } - - trendTweetCandidateNumber.incr(trendTweetCandidates.size) - trendTweetCandidates - } - } - - /** - * - * @param target: [[Target]] user - * @return: true if customer is eligible to receive trend tweet notifications - * - */ - override def isCandidateSourceAvailable(target: Target): Future[Boolean] = { - PushDeviceUtil - .isRecommendationsEligible(target) - .map(target.params(PushParams.TrendsCandidateDecider) && _) - } - - override def get(target: Target): Future[Option[Seq[RawCandidate with TrendsCandidate]]] = { - recommendedTrendsWithTweetsCandidateSource - .get(target) - .flatMap { - case Some(candidates) if candidates.nonEmpty => - trendTweetFatiguePredicate(Seq(target)) - .map(_.head) - .map { isTargetFatigueEligible => - if (isTargetFatigueEligible) Some(candidates) - else None - } - - case _ => Future.None - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TripGeoCandidatesAdaptor.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TripGeoCandidatesAdaptor.docx new file mode 100644 index 0000000000000000000000000000000000000000..be8584f0b74574a5e19b206b4c8ea0e156011b33 GIT binary patch literal 38828 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%0Ac4v_3V#Btr*H~4 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TripGeoCandidatesAdaptor.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TripGeoCandidatesAdaptor.scala deleted file mode 100644 index 2bdef162c..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/adaptor/TripGeoCandidatesAdaptor.scala +++ /dev/null @@ -1,188 +0,0 @@ -package com.twitter.frigate.pushservice.adaptor - -import com.twitter.content_mixer.thriftscala.ContentMixerProductResponse -import com.twitter.content_mixer.thriftscala.ContentMixerRequest -import com.twitter.content_mixer.thriftscala.ContentMixerResponse -import com.twitter.content_mixer.thriftscala.NotificationsTripTweetsProductContext -import com.twitter.content_mixer.thriftscala.Product -import com.twitter.content_mixer.thriftscala.ProductContext -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.CandidateSource -import com.twitter.frigate.common.base.CandidateSourceEligible -import com.twitter.frigate.common.predicate.CommonOutNetworkTweetCandidatesSourcePredicates.filterOutReplyTweet -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.params.PushParams -import com.twitter.frigate.pushservice.util.MediaCRT -import com.twitter.frigate.pushservice.util.PushAdaptorUtil -import com.twitter.frigate.pushservice.util.PushDeviceUtil -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.geoduck.util.country.CountryInfo -import com.twitter.product_mixer.core.thriftscala.ClientContext -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storehaus.ReadableStore -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripDomain -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripTweets -import com.twitter.util.Future - -case class TripGeoCandidatesAdaptor( - tripTweetCandidateStore: ReadableStore[TripDomain, TripTweets], - contentMixerStore: ReadableStore[ContentMixerRequest, ContentMixerResponse], - tweetyPieStore: ReadableStore[Long, TweetyPieResult], - tweetyPieStoreNoVF: ReadableStore[Long, TweetyPieResult], - statsReceiver: StatsReceiver) - extends CandidateSource[Target, RawCandidate] - with CandidateSourceEligible[Target, RawCandidate] { - - override def name: String = this.getClass.getSimpleName - - private val stats = statsReceiver.scope(name.stripSuffix("$")) - - private val contentMixerRequests = stats.counter("getTripCandidatesContentMixerRequests") - private val loggedOutTripTweetIds = stats.counter("logged_out_trip_tweet_ids_count") - private val loggedOutRawCandidates = stats.counter("logged_out_raw_candidates_count") - private val rawCandidates = stats.counter("raw_candidates_count") - private val loggedOutEmptyplaceId = stats.counter("logged_out_empty_place_id_count") - private val loggedOutPlaceId = stats.counter("logged_out_place_id_count") - private val nonReplyTweetsCounter = stats.counter("non_reply_tweets") - - override def isCandidateSourceAvailable(target: Target): Future[Boolean] = { - if (target.isLoggedOutUser) { - Future.True - } else { - for { - isRecommendationsSettingEnabled <- PushDeviceUtil.isRecommendationsEligible(target) - inferredLanguage <- target.inferredUserDeviceLanguage - } yield { - isRecommendationsSettingEnabled && - inferredLanguage.nonEmpty && - target.params(PushParams.TripGeoTweetCandidatesDecider) - } - } - - } - - private def buildRawCandidate(target: Target, tweetyPieResult: TweetyPieResult): RawCandidate = { - PushAdaptorUtil.generateOutOfNetworkTweetCandidates( - inputTarget = target, - id = tweetyPieResult.tweet.id, - mediaCRT = MediaCRT( - CommonRecommendationType.TripGeoTweet, - CommonRecommendationType.TripGeoTweet, - CommonRecommendationType.TripGeoTweet - ), - result = Some(tweetyPieResult), - localizedEntity = None - ) - } - - override def get(target: Target): Future[Option[Seq[RawCandidate]]] = { - if (target.isLoggedOutUser) { - for { - tripTweetIds <- getTripCandidatesForLoggedOutTarget(target) - tweetyPieResults <- Future.collect(tweetyPieStoreNoVF.multiGet(tripTweetIds)) - } yield { - val candidates = tweetyPieResults.values.flatten.map(buildRawCandidate(target, _)) - if (candidates.nonEmpty) { - loggedOutRawCandidates.incr(candidates.size) - Some(candidates.toSeq) - } else None - } - } else { - for { - tripTweetIds <- getTripCandidatesContentMixer(target) - tweetyPieResults <- - Future.collect((target.params(PushFeatureSwitchParams.EnableVFInTweetypie) match { - case true => tweetyPieStore - case false => tweetyPieStoreNoVF - }).multiGet(tripTweetIds)) - } yield { - val nonReplyTweets = filterOutReplyTweet(tweetyPieResults, nonReplyTweetsCounter) - val candidates = nonReplyTweets.values.flatten.map(buildRawCandidate(target, _)) - if (candidates.nonEmpty && target.params( - PushFeatureSwitchParams.TripTweetCandidateReturnEnable)) { - rawCandidates.incr(candidates.size) - Some(candidates.toSeq) - } else None - } - } - } - - private def getTripCandidatesContentMixer( - target: Target - ): Future[Set[Long]] = { - contentMixerRequests.incr() - Future - .join( - target.inferredUserDeviceLanguage, - target.deviceInfo - ) - .flatMap { - case (languageOpt, deviceInfoOpt) => - contentMixerStore - .get( - ContentMixerRequest( - clientContext = ClientContext( - userId = Some(target.targetId), - languageCode = languageOpt, - userAgent = deviceInfoOpt.flatMap(_.guessedPrimaryDeviceUserAgent.map(_.toString)) - ), - product = Product.NotificationsTripTweets, - productContext = Some( - ProductContext.NotificationsTripTweetsProductContext( - NotificationsTripTweetsProductContext() - )), - cursor = None, - maxResults = - Some(target.params(PushFeatureSwitchParams.TripTweetMaxTotalCandidates)) - ) - ).map { - _.map { rawResponse => - val tripResponse = - rawResponse.contentMixerProductResponse - .asInstanceOf[ - ContentMixerProductResponse.NotificationsTripTweetsProductResponse] - .notificationsTripTweetsProductResponse - - tripResponse.results.map(_.tweetResult.tweetId).toSet - }.getOrElse(Set.empty) - } - } - } - - private def getTripCandidatesForLoggedOutTarget( - target: Target - ): Future[Set[Long]] = { - Future.join(target.targetLanguage, target.countryCode).flatMap { - case (Some(lang), Some(country)) => - val placeId = CountryInfo.lookupByCode(country).map(_.placeIdLong) - if (placeId.nonEmpty) { - loggedOutPlaceId.incr() - } else { - loggedOutEmptyplaceId.incr() - } - val tripSource = "TOP_GEO_V3_LR" - val tripQuery = TripDomain( - sourceId = tripSource, - language = Some(lang), - placeId = placeId, - topicId = None - ) - val response = tripTweetCandidateStore.get(tripQuery) - val tripTweetIds = - response.map { res => - if (res.isDefined) { - res.get.tweets - .sortBy(_.score)(Ordering[Double].reverse).map(_.tweetId).toSet - } else { - Set.empty[Long] - } - } - tripTweetIds.map { ids => loggedOutTripTweetIds.incr(ids.size) } - tripTweetIds - - case (_, _) => Future.value(Set.empty) - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/Config.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/Config.docx new file mode 100644 index 0000000000000000000000000000000000000000..45b206ad2949f95eeb41e18991971d1a252a7b05 GIT binary patch literal 41240 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

b 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/Config.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/Config.scala deleted file mode 100644 index 3a0e1dc70..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/Config.scala +++ /dev/null @@ -1,461 +0,0 @@ -package com.twitter.frigate.pushservice.config - -import com.twitter.abdecider.LoggingABDecider -import com.twitter.abuse.detection.scoring.thriftscala.TweetScoringRequest -import com.twitter.abuse.detection.scoring.thriftscala.TweetScoringResponse -import com.twitter.audience_rewards.thriftscala.HasSuperFollowingRelationshipRequest -import com.twitter.channels.common.thriftscala.ApiList -import com.twitter.datatools.entityservice.entities.sports.thriftscala._ -import com.twitter.decider.Decider -import com.twitter.discovery.common.configapi.ConfigParamsBuilder -import com.twitter.escherbird.common.thriftscala.QualifiedId -import com.twitter.escherbird.metadata.thriftscala.EntityMegadata -import com.twitter.eventbus.client.EventBusPublisher -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.finagle.thrift.ClientId -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.candidate._ -import com.twitter.frigate.common.history._ -import com.twitter.frigate.common.ml.base._ -import com.twitter.frigate.common.ml.feature._ -import com.twitter.frigate.common.store._ -import com.twitter.frigate.common.store.deviceinfo.DeviceInfo -import com.twitter.frigate.common.store.interests.InterestsLookupRequestWithContext -import com.twitter.frigate.common.store.interests.UserId -import com.twitter.frigate.common.util._ -import com.twitter.frigate.data_pipeline.features_common._ -import com.twitter.frigate.data_pipeline.thriftscala.UserHistoryKey -import com.twitter.frigate.data_pipeline.thriftscala.UserHistoryValue -import com.twitter.frigate.dau_model.thriftscala.DauProbability -import com.twitter.frigate.magic_events.thriftscala.FanoutEvent -import com.twitter.frigate.pushcap.thriftscala.PushcapUserHistory -import com.twitter.frigate.pushservice.ml._ -import com.twitter.frigate.pushservice.params.DeciderKey -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.params.PushFeatureSwitches -import com.twitter.frigate.pushservice.params.PushParams -import com.twitter.frigate.pushservice.send_handler.SendHandlerPushCandidateHydrator -import com.twitter.frigate.pushservice.refresh_handler.PushCandidateHydrator -import com.twitter.frigate.pushservice.store._ -import com.twitter.frigate.pushservice.store.{Ibis2Store => PushIbis2Store} -import com.twitter.frigate.pushservice.take.NotificationServiceRequest -import com.twitter.frigate.pushservice.thriftscala.PushRequestScribe -import com.twitter.frigate.scribe.thriftscala.NotificationScribe -import com.twitter.frigate.thriftscala._ -import com.twitter.frigate.user_states.thriftscala.MRUserHmmState -import com.twitter.geoduck.common.thriftscala.{Location => GeoLocation} -import com.twitter.geoduck.service.thriftscala.LocationResponse -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.hermit.pop_geo.thriftscala.PopTweetsInPlace -import com.twitter.hermit.predicate.socialgraph.RelationEdge -import com.twitter.hermit.predicate.tweetypie.Perspective -import com.twitter.hermit.predicate.tweetypie.UserTweet -import com.twitter.hermit.store.semantic_core.SemanticEntityForQuery -import com.twitter.hermit.store.tweetypie.{UserTweet => TweetyPieUserTweet} -import com.twitter.hermit.stp.thriftscala.STPResult -import com.twitter.hss.api.thriftscala.UserHealthSignalResponse -import com.twitter.interests.thriftscala.InterestId -import com.twitter.interests.thriftscala.{UserInterests => Interests} -import com.twitter.interests_discovery.thriftscala.NonPersonalizedRecommendedLists -import com.twitter.interests_discovery.thriftscala.RecommendedListsRequest -import com.twitter.interests_discovery.thriftscala.RecommendedListsResponse -import com.twitter.livevideo.timeline.domain.v2.{Event => LiveEvent} -import com.twitter.ml.api.thriftscala.{DataRecord => ThriftDataRecord} -import com.twitter.ml.featurestore.lib.dynamic.DynamicFeatureStoreClient -import com.twitter.notificationservice.genericfeedbackstore.FeedbackPromptValue -import com.twitter.notificationservice.genericfeedbackstore.GenericFeedbackStore -import com.twitter.notificationservice.scribe.manhattan.GenericNotificationsFeedbackRequest -import com.twitter.notificationservice.thriftscala.CaretFeedbackDetails -import com.twitter.notificationservice.thriftscala.CreateGenericNotificationResponse -import com.twitter.nrel.heavyranker.CandidateFeatureHydrator -import com.twitter.nrel.heavyranker.{FeatureHydrator => MRFeatureHydrator} -import com.twitter.nrel.heavyranker.{TargetFeatureHydrator => RelevanceTargetFeatureHydrator} -import com.twitter.onboarding.task.service.thriftscala.FatigueFlowEnrollment -import com.twitter.permissions_storage.thriftscala.AppPermission -import com.twitter.recommendation.interests.discovery.core.model.InterestDomain -import com.twitter.recos.user_tweet_entity_graph.thriftscala.RecommendTweetEntityRequest -import com.twitter.recos.user_tweet_entity_graph.thriftscala.RecommendTweetEntityResponse -import com.twitter.recos.user_user_graph.thriftscala.RecommendUserRequest -import com.twitter.recos.user_user_graph.thriftscala.RecommendUserResponse -import com.twitter.rux.common.strato.thriftscala.UserTargetingProperty -import com.twitter.scio.nsfw_user_segmentation.thriftscala.NSFWProducer -import com.twitter.scio.nsfw_user_segmentation.thriftscala.NSFWUserSegmentation -import com.twitter.search.common.features.thriftscala.ThriftSearchResultFeatures -import com.twitter.search.earlybird.thriftscala.EarlybirdRequest -import com.twitter.search.earlybird.thriftscala.ThriftSearchResult -import com.twitter.service.gen.scarecrow.thriftscala.Event -import com.twitter.service.gen.scarecrow.thriftscala.TieredActionResult -import com.twitter.service.metastore.gen.thriftscala.Location -import com.twitter.service.metastore.gen.thriftscala.UserLanguages -import com.twitter.servo.decider.DeciderGateBuilder -import com.twitter.simclusters_v2.thriftscala.SimClustersInferredEntities -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storehaus.ReadableStore -import com.twitter.strato.columns.frigate.logged_out_web_notifications.thriftscala.LOWebNotificationMetadata -import com.twitter.strato.columns.notifications.thriftscala.SourceDestUserRequest -import com.twitter.strato.client.{UserId => StratoUserId} -import com.twitter.timelines.configapi -import com.twitter.timelines.configapi.CompositeConfig -import com.twitter.timelinescorer.thriftscala.v1.ScoredTweet -import com.twitter.topiclisting.TopicListing -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripDomain -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripTweets -import com.twitter.tsp.thriftscala.TopicSocialProofRequest -import com.twitter.tsp.thriftscala.TopicSocialProofResponse -import com.twitter.ubs.thriftscala.SellerTrack -import com.twitter.ubs.thriftscala.AudioSpace -import com.twitter.ubs.thriftscala.Participants -import com.twitter.ubs.thriftscala.SellerApplicationState -import com.twitter.user_session_store.thriftscala.UserSession -import com.twitter.util.Duration -import com.twitter.util.Future -import com.twitter.wtf.scalding.common.thriftscala.UserFeatures - -trait Config { - self => - - def isServiceLocal: Boolean - - def localConfigRepoPath: String - - def inMemCacheOff: Boolean - - def historyStore: PushServiceHistoryStore - - def emailHistoryStore: PushServiceHistoryStore - - def strongTiesStore: ReadableStore[Long, STPResult] - - def safeUserStore: ReadableStore[Long, User] - - def deviceInfoStore: ReadableStore[Long, DeviceInfo] - - def edgeStore: ReadableStore[RelationEdge, Boolean] - - def socialGraphServiceProcessStore: ReadableStore[RelationEdge, Boolean] - - def userUtcOffsetStore: ReadableStore[Long, Duration] - - def cachedTweetyPieStoreV2: ReadableStore[Long, TweetyPieResult] - - def safeCachedTweetyPieStoreV2: ReadableStore[Long, TweetyPieResult] - - def userTweetTweetyPieStore: ReadableStore[TweetyPieUserTweet, TweetyPieResult] - - def safeUserTweetTweetyPieStore: ReadableStore[TweetyPieUserTweet, TweetyPieResult] - - def cachedTweetyPieStoreV2NoVF: ReadableStore[Long, TweetyPieResult] - - def tweetContentFeatureCacheStore: ReadableStore[Long, ThriftDataRecord] - - def scarecrowCheckEventStore: ReadableStore[Event, TieredActionResult] - - def userTweetPerspectiveStore: ReadableStore[UserTweet, Perspective] - - def userCountryStore: ReadableStore[Long, Location] - - def pushInfoStore: ReadableStore[Long, UserForPushTargeting] - - def loggedOutPushInfoStore: ReadableStore[Long, LOWebNotificationMetadata] - - def tweetImpressionStore: ReadableStore[Long, Seq[Long]] - - def audioSpaceStore: ReadableStore[String, AudioSpace] - - def basketballGameScoreStore: ReadableStore[QualifiedId, BasketballGameLiveUpdate] - - def baseballGameScoreStore: ReadableStore[QualifiedId, BaseballGameLiveUpdate] - - def cricketMatchScoreStore: ReadableStore[QualifiedId, CricketMatchLiveUpdate] - - def soccerMatchScoreStore: ReadableStore[QualifiedId, SoccerMatchLiveUpdate] - - def nflGameScoreStore: ReadableStore[QualifiedId, NflFootballGameLiveUpdate] - - def topicSocialProofServiceStore: ReadableStore[TopicSocialProofRequest, TopicSocialProofResponse] - - def spaceDeviceFollowStore: ReadableStore[SourceDestUserRequest, Boolean] - - def audioSpaceParticipantsStore: ReadableStore[String, Participants] - - def notificationServiceSender: ReadableStore[ - NotificationServiceRequest, - CreateGenericNotificationResponse - ] - - def ocfFatigueStore: ReadableStore[OCFHistoryStoreKey, FatigueFlowEnrollment] - - def dauProbabilityStore: ReadableStore[Long, DauProbability] - - def hydratedLabeledPushRecsStore: ReadableStore[UserHistoryKey, UserHistoryValue] - - def userHTLLastVisitStore: ReadableStore[Long, Seq[Long]] - - def userLanguagesStore: ReadableStore[Long, UserLanguages] - - def topTweetsByGeoStore: ReadableStore[InterestDomain[String], Map[String, List[ - (Long, Double) - ]]] - - def topTweetsByGeoV2VersionedStore: ReadableStore[String, PopTweetsInPlace] - - lazy val pushRecItemStore: ReadableStore[PushRecItemsKey, RecItems] = PushRecItemStore( - hydratedLabeledPushRecsStore - ) - - lazy val labeledPushRecsVerifyingStore: ReadableStore[ - LabeledPushRecsVerifyingStoreKey, - LabeledPushRecsVerifyingStoreResponse - ] = - LabeledPushRecsVerifyingStore( - hydratedLabeledPushRecsStore, - historyStore - ) - - lazy val labeledPushRecsDecideredStore: ReadableStore[LabeledPushRecsStoreKey, UserHistoryValue] = - LabeledPushRecsDecideredStore( - labeledPushRecsVerifyingStore, - useHydratedLabeledSendsForFeaturesDeciderKey, - verifyHydratedLabeledSendsForFeaturesDeciderKey - ) - - def onlineUserHistoryStore: ReadableStore[OnlineUserHistoryKey, UserHistoryValue] - - def nsfwConsumerStore: ReadableStore[Long, NSFWUserSegmentation] - - def nsfwProducerStore: ReadableStore[Long, NSFWProducer] - - def popGeoLists: ReadableStore[String, NonPersonalizedRecommendedLists] - - def listAPIStore: ReadableStore[Long, ApiList] - - def openedPushByHourAggregatedStore: ReadableStore[Long, Map[Int, Int]] - - def userHealthSignalStore: ReadableStore[Long, UserHealthSignalResponse] - - def reactivatedUserInfoStore: ReadableStore[Long, String] - - def weightedOpenOrNtabClickModelScorer: PushMLModelScorer - - def optoutModelScorer: PushMLModelScorer - - def filteringModelScorer: PushMLModelScorer - - def recentFollowsStore: ReadableStore[Long, Seq[Long]] - - def geoDuckV2Store: ReadableStore[UserId, LocationResponse] - - def realGraphScoresTop500InStore: ReadableStore[Long, Map[Long, Double]] - - def tweetEntityGraphStore: ReadableStore[ - RecommendTweetEntityRequest, - RecommendTweetEntityResponse - ] - - def userUserGraphStore: ReadableStore[RecommendUserRequest, RecommendUserResponse] - - def userFeaturesStore: ReadableStore[Long, UserFeatures] - - def userTargetingPropertyStore: ReadableStore[Long, UserTargetingProperty] - - def timelinesUserSessionStore: ReadableStore[Long, UserSession] - - def optOutUserInterestsStore: ReadableStore[UserId, Seq[InterestId]] - - def ntabCaretFeedbackStore: ReadableStore[GenericNotificationsFeedbackRequest, Seq[ - CaretFeedbackDetails - ]] - - def genericFeedbackStore: ReadableStore[FeedbackRequest, Seq[ - FeedbackPromptValue - ]] - - def genericNotificationFeedbackStore: GenericFeedbackStore - - def semanticCoreMegadataStore: ReadableStore[ - SemanticEntityForQuery, - EntityMegadata - ] - - def tweetHealthScoreStore: ReadableStore[TweetScoringRequest, TweetScoringResponse] - - def earlybirdFeatureStore: ReadableStore[Long, ThriftSearchResultFeatures] - - def earlybirdFeatureBuilder: FeatureBuilder[Long] - - // Feature builders - - def tweetAuthorLocationFeatureBuilder: FeatureBuilder[Location] - - def tweetAuthorLocationFeatureBuilderById: FeatureBuilder[Long] - - def socialContextActionsFeatureBuilder: FeatureBuilder[SocialContextActions] - - def tweetContentFeatureBuilder: FeatureBuilder[Long] - - def tweetAuthorRecentRealGraphFeatureBuilder: FeatureBuilder[RealGraphEdge] - - def socialContextRecentRealGraphFeatureBuilder: FeatureBuilder[Set[RealGraphEdge]] - - def tweetSocialProofFeatureBuilder: FeatureBuilder[TweetSocialProofKey] - - def targetUserFullRealGraphFeatureBuilder: FeatureBuilder[TargetFullRealGraphFeatureKey] - - def postProcessingFeatureBuilder: PostProcessingFeatureBuilder - - def mrOfflineUserCandidateSparseAggregatesFeatureBuilder: FeatureBuilder[ - OfflineSparseAggregateKey - ] - - def mrOfflineUserAggregatesFeatureBuilder: FeatureBuilder[Long] - - def mrOfflineUserCandidateAggregatesFeatureBuilder: FeatureBuilder[OfflineAggregateKey] - - def tweetAnnotationsFeatureBuilder: FeatureBuilder[Long] - - def targetUserMediaRepresentationFeatureBuilder: FeatureBuilder[Long] - - def targetLevelFeatureBuilder: FeatureBuilder[MrRequestContextForFeatureStore] - - def candidateLevelFeatureBuilder: FeatureBuilder[EntityRequestContextForFeatureStore] - - def targetFeatureHydrator: RelevanceTargetFeatureHydrator - - def useHydratedLabeledSendsForFeaturesDeciderKey: String = - DeciderKey.useHydratedLabeledSendsForFeaturesDeciderKey.toString - - def verifyHydratedLabeledSendsForFeaturesDeciderKey: String = - DeciderKey.verifyHydratedLabeledSendsForFeaturesDeciderKey.toString - - def lexServiceStore: ReadableStore[EventRequest, LiveEvent] - - def userMediaRepresentationStore: ReadableStore[Long, UserMediaRepresentation] - - def producerMediaRepresentationStore: ReadableStore[Long, UserMediaRepresentation] - - def mrUserStatePredictionStore: ReadableStore[Long, MRUserHmmState] - - def pushcapDynamicPredictionStore: ReadableStore[Long, PushcapUserHistory] - - def earlybirdCandidateSource: EarlybirdCandidateSource - - def earlybirdSearchStore: ReadableStore[EarlybirdRequest, Seq[ThriftSearchResult]] - - def earlybirdSearchDest: String - - def pushserviceThriftClientId: ClientId - - def simClusterToEntityStore: ReadableStore[Int, SimClustersInferredEntities] - - def fanoutMetadataStore: ReadableStore[(Long, Long), FanoutEvent] - - /** - * PostRanking Feature Store Client - */ - def postRankingFeatureStoreClient: DynamicFeatureStoreClient[MrRequestContextForFeatureStore] - - /** - * ReadableStore to fetch [[UserInterests]] from INTS service - */ - def interestsWithLookupContextStore: ReadableStore[InterestsLookupRequestWithContext, Interests] - - /** - * - * @return: [[TopicListing]] object to fetch paused topics and scope from productId - */ - def topicListing: TopicListing - - /** - * - * @return: [[UttEntityHydrationStore]] object - */ - def uttEntityHydrationStore: UttEntityHydrationStore - - def appPermissionStore: ReadableStore[(Long, (String, String)), AppPermission] - - lazy val userTweetEntityGraphCandidates: UserTweetEntityGraphCandidates = - UserTweetEntityGraphCandidates( - cachedTweetyPieStoreV2, - tweetEntityGraphStore, - PushParams.UTEGTweetCandidateSourceParam, - PushFeatureSwitchParams.NumberOfMaxUTEGCandidatesQueriedParam, - PushParams.AllowOneSocialProofForTweetInUTEGParam, - PushParams.OutNetworkTweetsOnlyForUTEGParam, - PushFeatureSwitchParams.MaxTweetAgeParam - )(statsReceiver) - - def pushSendEventBusPublisher: EventBusPublisher[NotificationScribe] - - // miscs. - - def isProd: Boolean - - implicit def statsReceiver: StatsReceiver - - def decider: Decider - - def abDecider: LoggingABDecider - - def casLock: CasLock - - def pushIbisV2Store: PushIbis2Store - - // scribe - def notificationScribe(data: NotificationScribe): Unit - - def requestScribe(data: PushRequestScribe): Unit - - def init(): Future[Unit] = Future.Done - - def configParamsBuilder: ConfigParamsBuilder - - def candidateFeatureHydrator: CandidateFeatureHydrator - - def featureHydrator: MRFeatureHydrator - - def candidateHydrator: PushCandidateHydrator - - def sendHandlerCandidateHydrator: SendHandlerPushCandidateHydrator - - lazy val overridesConfig: configapi.Config = { - val pushFeatureSwitchConfigs: configapi.Config = PushFeatureSwitches( - deciderGateBuilder = new DeciderGateBuilder(decider), - statsReceiver = statsReceiver - ).config - - new CompositeConfig(Seq(pushFeatureSwitchConfigs)) - } - - def realTimeClientEventStore: RealTimeClientEventStore - - def inlineActionHistoryStore: ReadableStore[Long, Seq[(Long, String)]] - - def softUserGeoLocationStore: ReadableStore[Long, GeoLocation] - - def tweetTranslationStore: ReadableStore[TweetTranslationStore.Key, TweetTranslationStore.Value] - - def tripTweetCandidateStore: ReadableStore[TripDomain, TripTweets] - - def softUserFollowingStore: ReadableStore[User, Seq[Long]] - - def superFollowEligibilityUserStore: ReadableStore[Long, Boolean] - - def superFollowCreatorTweetCountStore: ReadableStore[StratoUserId, Int] - - def hasSuperFollowingRelationshipStore: ReadableStore[ - HasSuperFollowingRelationshipRequest, - Boolean - ] - - def superFollowApplicationStatusStore: ReadableStore[(Long, SellerTrack), SellerApplicationState] - - def recentHistoryCacheClient: RecentHistoryCacheClient - - def openAppUserStore: ReadableStore[Long, Boolean] - - def loggedOutHistoryStore: PushServiceHistoryStore - - def idsStore: ReadableStore[RecommendedListsRequest, RecommendedListsResponse] - - def htlScoreStore(userId: Long): ReadableStore[Long, ScoredTweet] -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/DeployConfig.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/DeployConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..2a16974c1745aca3adeb024b7e27bb60538543b5 GIT binary patch literal 56039 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 DJcz3# literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/DeployConfig.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/DeployConfig.scala deleted file mode 100644 index 8d6e95a67..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/DeployConfig.scala +++ /dev/null @@ -1,2150 +0,0 @@ -package com.twitter.frigate.pushservice.config - -import com.twitter.abuse.detection.scoring.thriftscala.TweetScoringRequest -import com.twitter.abuse.detection.scoring.thriftscala.TweetScoringResponse -import com.twitter.audience_rewards.thriftscala.HasSuperFollowingRelationshipRequest -import com.twitter.bijection.scrooge.BinaryScalaCodec -import com.twitter.bijection.scrooge.CompactScalaCodec -import com.twitter.channels.common.thriftscala.ApiList -import com.twitter.channels.common.thriftscala.ApiListDisplayLocation -import com.twitter.channels.common.thriftscala.ApiListView -import com.twitter.content_mixer.thriftscala.ContentMixer -import com.twitter.conversions.DurationOps._ -import com.twitter.cortex.deepbird.thriftjava.DeepbirdPredictionService -import com.twitter.cr_mixer.thriftscala.CrMixer -import com.twitter.datatools.entityservice.entities.sports.thriftscala.BaseballGameLiveUpdate -import com.twitter.datatools.entityservice.entities.sports.thriftscala.BasketballGameLiveUpdate -import com.twitter.datatools.entityservice.entities.sports.thriftscala.CricketMatchLiveUpdate -import com.twitter.datatools.entityservice.entities.sports.thriftscala.NflFootballGameLiveUpdate -import com.twitter.datatools.entityservice.entities.sports.thriftscala.SoccerMatchLiveUpdate -import com.twitter.discovery.common.configapi.ConfigParamsBuilder -import com.twitter.discovery.common.configapi.FeatureContextBuilder -import com.twitter.discovery.common.environment.{Environment => NotifEnvironment} -import com.twitter.escherbird.common.thriftscala.Domains -import com.twitter.escherbird.common.thriftscala.QualifiedId -import com.twitter.escherbird.metadata.thriftscala.EntityMegadata -import com.twitter.escherbird.metadata.thriftscala.MetadataService -import com.twitter.escherbird.util.metadatastitch.MetadataStitchClient -import com.twitter.escherbird.util.uttclient -import com.twitter.escherbird.util.uttclient.CacheConfigV2 -import com.twitter.escherbird.util.uttclient.CachedUttClientV2 -import com.twitter.escherbird.utt.strato.thriftscala.Environment -import com.twitter.eventbus.client.EventBusPublisherBuilder -import com.twitter.events.recos.thriftscala.EventsRecosService -import com.twitter.explore_ranker.thriftscala.ExploreRanker -import com.twitter.featureswitches.v2.FeatureSwitches -import com.twitter.finagle.Memcached -import com.twitter.finagle.ThriftMux -import com.twitter.finagle.client.BackupRequestFilter -import com.twitter.finagle.client.ClientRegistry -import com.twitter.finagle.loadbalancer.Balancers -import com.twitter.finagle.memcached.Client -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.mtls.client.MtlsStackClient._ -import com.twitter.finagle.mux.transport.OpportunisticTls -import com.twitter.finagle.service.Retries -import com.twitter.finagle.service.RetryPolicy -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.finagle.thrift.ClientId -import com.twitter.finagle.thrift.RichClientParam -import com.twitter.finagle.util.DefaultTimer -import com.twitter.flockdb.client._ -import com.twitter.flockdb.client.thriftscala.FlockDB -import com.twitter.frigate.common.base.RandomRanker -import com.twitter.frigate.common.candidate._ -import com.twitter.frigate.common.config.RateLimiterGenerator -import com.twitter.frigate.common.entity_graph_client.RecommendedTweetEntitiesStore -import com.twitter.frigate.common.filter.DynamicRequestMeterFilter -import com.twitter.frigate.common.history._ -import com.twitter.frigate.common.ml.feature._ -import com.twitter.frigate.common.store._ -import com.twitter.frigate.common.store.deviceinfo.DeviceInfoStore -import com.twitter.frigate.common.store.deviceinfo.MobileSdkStore -import com.twitter.frigate.common.store.interests._ -import com.twitter.frigate.common.store.strato.StratoFetchableStore -import com.twitter.frigate.common.store.strato.StratoScannableStore -import com.twitter.frigate.common.util.Finagle.readOnlyThriftService -import com.twitter.frigate.common.util._ -import com.twitter.frigate.data_pipeline.features_common.FeatureStoreUtil -import com.twitter.frigate.data_pipeline.features_common._ -import com.twitter.frigate.data_pipeline.thriftscala.UserHistoryKey -import com.twitter.frigate.data_pipeline.thriftscala.UserHistoryValue -import com.twitter.frigate.dau_model.thriftscala.DauProbability -import com.twitter.frigate.magic_events.thriftscala.FanoutEvent -import com.twitter.frigate.pushcap.thriftscala.PushcapUserHistory -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.adaptor.LoggedOutPushCandidateSourceGenerator -import com.twitter.frigate.pushservice.adaptor.PushCandidateSourceGenerator -import com.twitter.frigate.pushservice.config.mlconfig.DeepbirdV2ModelConfig -import com.twitter.frigate.pushservice.ml._ -import com.twitter.frigate.pushservice.params._ -import com.twitter.frigate.pushservice.rank.LoggedOutRanker -import com.twitter.frigate.pushservice.rank.RFPHLightRanker -import com.twitter.frigate.pushservice.rank.RFPHRanker -import com.twitter.frigate.pushservice.rank.SubscriptionCreatorRanker -import com.twitter.frigate.pushservice.refresh_handler._ -import com.twitter.frigate.pushservice.refresh_handler.cross.CandidateCopyExpansion -import com.twitter.frigate.pushservice.send_handler.SendHandlerPushCandidateHydrator -import com.twitter.frigate.pushservice.store._ -import com.twitter.frigate.pushservice.take.CandidateNotifier -import com.twitter.frigate.pushservice.take.NotificationSender -import com.twitter.frigate.pushservice.take.NotificationServiceRequest -import com.twitter.frigate.pushservice.take.NotificationServiceSender -import com.twitter.frigate.pushservice.take.NtabOnlyChannelSelector -import com.twitter.frigate.pushservice.take.history.EventBusWriter -import com.twitter.frigate.pushservice.take.history.HistoryWriter -import com.twitter.frigate.pushservice.take.sender.Ibis2Sender -import com.twitter.frigate.pushservice.take.sender.NtabSender -import com.twitter.frigate.pushservice.take.LoggedOutRefreshForPushNotifier -import com.twitter.frigate.pushservice.util.RFPHTakeStepUtil -import com.twitter.frigate.pushservice.util.SendHandlerPredicateUtil -import com.twitter.frigate.scribe.thriftscala.NotificationScribe -import com.twitter.frigate.thriftscala._ -import com.twitter.frigate.user_states.thriftscala.MRUserHmmState -import com.twitter.geoduck.backend.hydration.thriftscala.Hydration -import com.twitter.geoduck.common.thriftscala.PlaceQueryFields -import com.twitter.geoduck.common.thriftscala.PlaceType -import com.twitter.geoduck.common.thriftscala.{Location => GeoLocation} -import com.twitter.geoduck.service.common.clientmodules.GeoduckUserLocate -import com.twitter.geoduck.service.common.clientmodules.GeoduckUserLocateModule -import com.twitter.geoduck.service.thriftscala.LocationResponse -import com.twitter.geoduck.thriftscala.LocationService -import com.twitter.gizmoduck.context.thriftscala.ReadConfig -import com.twitter.gizmoduck.context.thriftscala.TestUserConfig -import com.twitter.gizmoduck.testusers.client.TestUserClientBuilder -import com.twitter.gizmoduck.thriftscala.LookupContext -import com.twitter.gizmoduck.thriftscala.QueryFields -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.gizmoduck.thriftscala.UserService -import com.twitter.hermit.pop_geo.thriftscala.PopTweetsInPlace -import com.twitter.hermit.predicate.socialgraph.SocialGraphPredicate -import com.twitter.hermit.predicate.tweetypie.PerspectiveReadableStore -import com.twitter.hermit.store._ -import com.twitter.hermit.store.common._ -import com.twitter.hermit.store.gizmoduck.GizmoduckUserStore -import com.twitter.hermit.store.metastore.UserCountryStore -import com.twitter.hermit.store.metastore.UserLanguagesStore -import com.twitter.hermit.store.scarecrow.ScarecrowCheckEventStore -import com.twitter.hermit.store.semantic_core.MetaDataReadableStore -import com.twitter.hermit.store.semantic_core.SemanticEntityForQuery -import com.twitter.hermit.store.timezone.GizmoduckUserUtcOffsetStore -import com.twitter.hermit.store.timezone.UtcOffsetStore -import com.twitter.hermit.store.tweetypie.TweetyPieStore -import com.twitter.hermit.store.tweetypie.UserTweet -import com.twitter.hermit.store.user_htl_session_store.UserHTLLastVisitReadableStore -import com.twitter.hermit.stp.thriftscala.STPResult -import com.twitter.hss.api.thriftscala.UserHealthSignal -import com.twitter.hss.api.thriftscala.UserHealthSignal._ -import com.twitter.hss.api.thriftscala.UserHealthSignalResponse -import com.twitter.interests.thriftscala.InterestId -import com.twitter.interests.thriftscala.InterestsThriftService -import com.twitter.interests.thriftscala.{UserInterests => Interests} -import com.twitter.interests_discovery.thriftscala.InterestsDiscoveryService -import com.twitter.interests_discovery.thriftscala.NonPersonalizedRecommendedLists -import com.twitter.interests_discovery.thriftscala.RecommendedListsRequest -import com.twitter.interests_discovery.thriftscala.RecommendedListsResponse -import com.twitter.kujaku.domain.thriftscala.MachineTranslationResponse -import com.twitter.livevideo.timeline.client.v2.LiveVideoTimelineClient -import com.twitter.livevideo.timeline.domain.v2.{Event => LiveEvent} -import com.twitter.livevideo.timeline.thrift.thriftscala.TimelineService -import com.twitter.logging.Logger -import com.twitter.ml.api.thriftscala.{DataRecord => ThriftDataRecord} -import com.twitter.ml.featurestore.catalog.entities.core.{Author => TweetAuthorEntity} -import com.twitter.ml.featurestore.catalog.entities.core.{User => TargetUserEntity} -import com.twitter.ml.featurestore.catalog.entities.core.{UserAuthor => UserAuthorEntity} -import com.twitter.ml.featurestore.catalog.entities.magicrecs.{SocialContext => SocialContextEntity} -import com.twitter.ml.featurestore.catalog.entities.magicrecs.{UserSocialContext => TargetUserSocialContextEntity} -import com.twitter.ml.featurestore.timelines.thriftscala.TimelineScorerScoreView -import com.twitter.notificationservice.api.thriftscala.DeleteCurrentTimelineForUserRequest -import com.twitter.notificationservice.genericfeedbackstore.FeedbackPromptValue -import com.twitter.notificationservice.genericfeedbackstore.GenericFeedbackStore -import com.twitter.notificationservice.genericfeedbackstore.GenericFeedbackStoreBuilder -import com.twitter.notificationservice.scribe.manhattan.FeedbackSignalManhattanClient -import com.twitter.notificationservice.scribe.manhattan.GenericNotificationsFeedbackRequest -import com.twitter.notificationservice.thriftscala.CaretFeedbackDetails -import com.twitter.notificationservice.thriftscala.CreateGenericNotificationRequest -import com.twitter.notificationservice.thriftscala.CreateGenericNotificationResponse -import com.twitter.notificationservice.thriftscala.DeleteGenericNotificationRequest -import com.twitter.notificationservice.thriftscala.GenericNotificationOverrideKey -import com.twitter.notificationservice.thriftscala.NotificationService$FinagleClient -import com.twitter.nrel.heavyranker.CandidateFeatureHydrator -import com.twitter.nrel.heavyranker.FeatureHydrator -import com.twitter.nrel.heavyranker.{PushPredictionServiceStore => RelevancePushPredictionServiceStore} -import com.twitter.nrel.heavyranker.{TargetFeatureHydrator => RelevanceTargetFeatureHydrator} -import com.twitter.nrel.lightranker.MagicRecsServeDataRecordLightRanker -import com.twitter.nrel.lightranker.{Config => LightRankerConfig} -import com.twitter.onboarding.task.service.thriftscala.FatigueFlowEnrollment -import com.twitter.periscope.api.thriftscala.AudioSpacesLookupContext -import com.twitter.permissions_storage.thriftscala.AppPermission -import com.twitter.recommendation.interests.discovery.core.config.{DeployConfig => InterestDeployConfig} -import com.twitter.recommendation.interests.discovery.popgeo.deploy.PopGeoInterestProvider -import com.twitter.recos.user_tweet_entity_graph.thriftscala.UserTweetEntityGraph -import com.twitter.recos.user_user_graph.thriftscala.UserUserGraph -import com.twitter.rux.common.strato.thriftscala.UserTargetingProperty -import com.twitter.scio.nsfw_user_segmentation.thriftscala.NSFWProducer -import com.twitter.scio.nsfw_user_segmentation.thriftscala.NSFWUserSegmentation -import com.twitter.search.earlybird.thriftscala.EarlybirdService -import com.twitter.service.gen.scarecrow.thriftscala.ScarecrowService -import com.twitter.service.metastore.gen.thriftscala.Location -import com.twitter.simclusters_v2.thriftscala.SimClustersInferredEntities -import com.twitter.socialgraph.thriftscala.SocialGraphService -import com.twitter.spam.rtf.thriftscala.SafetyLevel -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storage.client.manhattan.kv.Guarantee -import com.twitter.storage.client.manhattan.kv.ManhattanKVClient -import com.twitter.storage.client.manhattan.kv.ManhattanKVClientMtlsParams -import com.twitter.storage.client.manhattan.kv.ManhattanKVEndpoint -import com.twitter.storage.client.manhattan.kv.ManhattanKVEndpointBuilder -import com.twitter.storehaus.ReadableStore -import com.twitter.storehaus_internal.manhattan.Apollo -import com.twitter.storehaus_internal.manhattan.Athena -import com.twitter.storehaus_internal.manhattan.Dataset -import com.twitter.storehaus_internal.manhattan.ManhattanStore -import com.twitter.storehaus_internal.manhattan.Nash -import com.twitter.storehaus_internal.manhattan.Omega -import com.twitter.storehaus_internal.memcache.MemcacheStore -import com.twitter.storehaus_internal.util.ClientName -import com.twitter.storehaus_internal.util.ZkEndPoint -import com.twitter.strato.catalog.Scan.Slice -import com.twitter.strato.client.Strato -import com.twitter.strato.client.UserId -import com.twitter.strato.columns.frigate.logged_out_web_notifications.thriftscala.LOWebNotificationMetadata -import com.twitter.strato.columns.notifications.thriftscala.SourceDestUserRequest -import com.twitter.strato.generated.client.geo.user.FrequentSoftUserLocationClientColumn -import com.twitter.strato.generated.client.ml.featureStore.TimelineScorerTweetScoresV1ClientColumn -import com.twitter.strato.generated.client.notifications.space_device_follow_impl.SpaceDeviceFollowingClientColumn -import com.twitter.strato.generated.client.periscope.CoreOnAudioSpaceClientColumn -import com.twitter.strato.generated.client.periscope.ParticipantsOnAudioSpaceClientColumn -import com.twitter.strato.generated.client.rux.TargetingPropertyOnUserClientColumn -import com.twitter.strato.generated.client.socialgraph.graphs.creatorSubscriptionTimeline.{CountEdgesBySourceClientColumn => CreatorSubscriptionNumTweetsColumn} -import com.twitter.strato.generated.client.translation.service.IsTweetTranslatableClientColumn -import com.twitter.strato.generated.client.translation.service.platform.MachineTranslateTweetClientColumn -import com.twitter.strato.generated.client.trends.trip.TripTweetsAirflowProdClientColumn -import com.twitter.strato.thrift.ScroogeConvImplicits._ -import com.twitter.taxi.common.AppId -import com.twitter.taxi.deploy.Cluster -import com.twitter.taxi.deploy.Env -import com.twitter.topiclisting.TopicListing -import com.twitter.topiclisting.TopicListingBuilder -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripDomain -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripTweets -import com.twitter.tsp.thriftscala.TopicSocialProofRequest -import com.twitter.tsp.thriftscala.TopicSocialProofResponse -import com.twitter.tweetypie.thriftscala.GetTweetOptions -import com.twitter.tweetypie.thriftscala.Tweet.VisibleTextRangeField -import com.twitter.tweetypie.thriftscala.TweetService -import com.twitter.ubs.thriftscala.AudioSpace -import com.twitter.ubs.thriftscala.Participants -import com.twitter.ubs.thriftscala.SellerApplicationState -import com.twitter.user_session_store.thriftscala.UserSession -import com.twitter.util.Duration -import com.twitter.util.Future -import com.twitter.util.Timer -import com.twitter.util.tunable.TunableMap -import com.twitter.wtf.scalding.common.thriftscala.UserFeatures -import org.apache.thrift.protocol.TCompactProtocol -import com.twitter.timelinescorer.thriftscala.v1.ScoredTweet -import com.twitter.ubs.thriftscala.SellerTrack -import com.twitter.wtf.candidate.thriftscala.CandidateSeq - -trait DeployConfig extends Config { - // Any finagle clients should not be defined as lazy. If defined lazy, - // ClientRegistry.expAllRegisteredClientsResolved() call in init will not ensure that the clients - // are active before thrift endpoint is active. We want the clients to be active, because zookeeper - // resolution triggered by first request(s) might result in the request(s) failing. - - def serviceIdentifier: ServiceIdentifier - - def tunableMap: TunableMap - - def featureSwitches: FeatureSwitches - - override val isProd: Boolean = - serviceIdentifier.environment == PushConstants.ServiceProdEnvironmentName - - def shardParams: ShardParams - - def log: Logger - - implicit def statsReceiver: StatsReceiver - - implicit val timer: Timer = DefaultTimer - - def notifierThriftClientId: ClientId - - def loggedOutNotifierThriftClientId: ClientId - - def pushserviceThriftClientId: ClientId - - def deepbirdv2PredictionServiceDest: String - - def featureStoreUtil: FeatureStoreUtil - - def targetLevelFeaturesConfig: PushFeaturesConfig - - private val manhattanClientMtlsParams = ManhattanKVClientMtlsParams( - serviceIdentifier = serviceIdentifier, - opportunisticTls = OpportunisticTls.Required - ) - - // Commonly used clients - val gizmoduckClient = { - - val client = ThriftMux.client - .withMutualTls(serviceIdentifier) - .withClientId(pushserviceThriftClientId) - .build[UserService.MethodPerEndpoint]( - dest = "/s/gizmoduck/gizmoduck" - ) - - /** - * RequestContext test user config to allow reading test user accounts on pushservice for load - * testing - */ - val GizmoduckTestUserConfig = TestUserConfig( - clientId = Some(pushserviceThriftClientId.name), - readConfig = Some(ReadConfig(includeTestUsers = true)) - ) - - TestUserClientBuilder[UserService.MethodPerEndpoint] - .withClient(client) - .withConfig(GizmoduckTestUserConfig) - .build() - } - - val sgsClient = { - val service = readOnlyThriftService( - "", - "/s/socialgraph/socialgraph", - statsReceiver, - pushserviceThriftClientId, - mTLSServiceIdentifier = Some(serviceIdentifier) - ) - new SocialGraphService.FinagledClient(service) - } - - val tweetyPieClient = { - val service = readOnlyThriftService( - "", - "/s/tweetypie/tweetypie", - statsReceiver, - notifierThriftClientId, - mTLSServiceIdentifier = Some(serviceIdentifier) - ) - new TweetService.FinagledClient(service) - } - - lazy val geoduckHydrationClient: Hydration.MethodPerEndpoint = { - val servicePerEndpoint = ThriftMux.client - .withLabel("geoduck_hydration") - .withClientId(pushserviceThriftClientId) - .withMutualTls(serviceIdentifier) - .methodBuilder("/s/geo/hydration") - .withTimeoutPerRequest(10.seconds) - .withTimeoutTotal(10.seconds) - .idempotent(maxExtraLoad = 0.0) - .servicePerEndpoint[Hydration.ServicePerEndpoint] - Hydration.MethodPerEndpoint(servicePerEndpoint) - } - - lazy val geoduckLocationClient: LocationService.MethodPerEndpoint = { - val servicePerEndpoint = ThriftMux.client - .withLabel("geoduck_location") - .withClientId(pushserviceThriftClientId) - .withMutualTls(serviceIdentifier) - .methodBuilder("/s/geo/geoduck_locationservice") - .withTimeoutPerRequest(10.seconds) - .withTimeoutTotal(10.seconds) - .idempotent(maxExtraLoad = 0.0) - .servicePerEndpoint[LocationService.ServicePerEndpoint] - LocationService.MethodPerEndpoint(servicePerEndpoint) - } - - override val geoDuckV2Store: ReadableStore[Long, LocationResponse] = { - val geoduckLocate: GeoduckUserLocate = GeoduckUserLocateModule.providesGeoduckUserLocate( - locationServiceClient = geoduckLocationClient, - hydrationClient = geoduckHydrationClient, - unscopedStatsReceiver = statsReceiver - ) - - val store: ReadableStore[Long, LocationResponse] = ReadableStore - .convert[GeoduckRequest, Long, LocationResponse, LocationResponse]( - GeoduckStoreV2(geoduckLocate))({ userId: Long => - GeoduckRequest( - userId, - placeTypes = Set( - PlaceType.City, - PlaceType.Metro, - PlaceType.Country, - PlaceType.ZipCode, - PlaceType.Admin0, - PlaceType.Admin1), - placeFields = Set(PlaceQueryFields.PlaceNames), - includeCountryCode = true - ) - })({ locationResponse: LocationResponse => Future.value(locationResponse) }) - - val _cacheName = "geoduckv2_in_memory_cache" - ObservedCachedReadableStore.from( - store, - ttl = 20.seconds, - maxKeys = 1000, - cacheName = _cacheName, - windowSize = 10000L - )(statsReceiver.scope(_cacheName)) - } - - private val deepbirdServiceBase = ThriftMux.client - .withClientId(pushserviceThriftClientId) - .withMutualTls(serviceIdentifier) - .withLoadBalancer(Balancers.p2c()) - .newService(deepbirdv2PredictionServiceDest, "DeepbirdV2PredictionService") - val deepbirdPredictionServiceClient = new DeepbirdPredictionService.ServiceToClient( - Finagle - .retryReadFilter( - tries = 3, - statsReceiver = statsReceiver.scope("DeepbirdV2PredictionService")) - .andThen(Finagle.timeoutFilter(timeout = 10.seconds)) - .andThen(deepbirdServiceBase), - RichClientParam(serviceName = "DeepbirdV2PredictionService", clientStats = statsReceiver) - ) - - val manhattanStarbuckAppId = "frigate_pushservice_starbuck" - val metastoreLocationAppId = "frigate_notifier_metastore_location" - val manhattanMetastoreAppId = "frigate_pushservice_penguin" - - def pushServiceMHCacheDest: String - def pushServiceCoreSvcsCacheDest: String - def poptartImpressionsCacheDest: String = "/srv#/prod/local/cache/poptart_impressions" - def entityGraphCacheDest: String - - val pushServiceCacheClient: Client = MemcacheStore.memcachedClient( - name = ClientName("memcache-pushservice"), - dest = ZkEndPoint(pushServiceMHCacheDest), - statsReceiver = statsReceiver, - timeout = 2.seconds, - serviceIdentifier = serviceIdentifier - ) - - val pushServiceCoreSvcsCacheClient: Client = - MemcacheStore.memcachedClient( - name = ClientName("memcache-pushservice-core-svcs"), - dest = ZkEndPoint(pushServiceCoreSvcsCacheDest), - statsReceiver = statsReceiver, - serviceIdentifier = serviceIdentifier, - timeout = 2.seconds, - ) - - val poptartImpressionsCacheClient: Client = - MemcacheStore.memcachedClient( - name = ClientName("memcache-pushservice-poptart-impressions"), - dest = ZkEndPoint(poptartImpressionsCacheDest), - statsReceiver = statsReceiver, - serviceIdentifier = serviceIdentifier, - timeout = 2.seconds - ) - - val entityGraphCacheClient: Client = MemcacheStore.memcachedClient( - name = ClientName("memcache-pushservice-entity-graph"), - dest = ZkEndPoint(entityGraphCacheDest), - statsReceiver = statsReceiver, - serviceIdentifier = serviceIdentifier, - timeout = 2.seconds - ) - - val stratoClient = { - val pushserviceThriftClient = ThriftMux.client.withClientId(pushserviceThriftClientId) - val baseBuilder = Strato - .Client(pushserviceThriftClient) - .withMutualTls(serviceIdentifier) - val finalBuilder = if (isServiceLocal) { - baseBuilder.withRequestTimeout(Duration.fromSeconds(15)) - } else { - baseBuilder.withRequestTimeout(Duration.fromSeconds(3)) - } - finalBuilder.build() - } - - val interestThriftServiceClient = ThriftMux.client - .withClientId(pushserviceThriftClientId) - .withMutualTls(serviceIdentifier) - .withRequestTimeout(3.seconds) - .configured(Retries.Policy(RetryPolicy.tries(1))) - .configured(BackupRequestFilter.Configured(maxExtraLoad = 0.0, sendInterrupts = false)) - .withStatsReceiver(statsReceiver) - .build[InterestsThriftService.MethodPerEndpoint]( - dest = "/s/interests-thrift-service/interests-thrift-service", - label = "interests-lookup" - ) - - def memcacheCASDest: String - - override val casLock: CasLock = { - val magicrecsCasMemcacheClient = Memcached.client - .withMutualTls(serviceIdentifier) - .withLabel("mr-cas-memcache-client") - .withRequestTimeout(3.seconds) - .withStatsReceiver(statsReceiver) - .configured(Retries.Policy(RetryPolicy.tries(3))) - .newTwemcacheClient(memcacheCASDest) - .withStrings - - MemcacheCasLock(magicrecsCasMemcacheClient) - } - - override val pushInfoStore: ReadableStore[Long, UserForPushTargeting] = { - StratoFetchableStore.withUnitView[Long, UserForPushTargeting]( - stratoClient, - "frigate/magicrecs/pushRecsTargeting.User") - } - - override val loggedOutPushInfoStore: ReadableStore[Long, LOWebNotificationMetadata] = { - StratoFetchableStore.withUnitView[Long, LOWebNotificationMetadata]( - stratoClient, - "frigate/magicrecs/web/loggedOutWebUserStoreMh" - ) - } - - // Setting up model stores - override val dauProbabilityStore: ReadableStore[Long, DauProbability] = { - StratoFetchableStore - .withUnitView[Long, DauProbability](stratoClient, "frigate/magicrecs/dauProbability.User") - } - - override val nsfwConsumerStore = { - StratoFetchableStore.withUnitView[Long, NSFWUserSegmentation]( - stratoClient, - "frigate/nsfw-user-segmentation/nsfwUserSegmentation.User") - } - - override val nsfwProducerStore = { - StratoFetchableStore.withUnitView[Long, NSFWProducer]( - stratoClient, - "frigate/nsfw-user-segmentation/nsfwProducer.User" - ) - } - - override val idsStore: ReadableStore[RecommendedListsRequest, RecommendedListsResponse] = { - val service = Finagle.readOnlyThriftService( - name = "interests-discovery-service", - dest = "/s/interests_discovery/interests_discovery", - statsReceiver, - pushserviceThriftClientId, - requestTimeout = 4.seconds, - tries = 2, - mTLSServiceIdentifier = Some(serviceIdentifier) - ) - val client = new InterestsDiscoveryService.FinagledClient( - service = service, - RichClientParam(serviceName = "interests-discovery-service") - ) - - InterestDiscoveryStore(client) - } - - override val popGeoLists = { - StratoFetchableStore.withUnitView[String, NonPersonalizedRecommendedLists]( - stratoClient, - column = "recommendations/interests_discovery/recommendations_mh/OrganicPopgeoLists" - ) - } - - override val listAPIStore = { - val fetcher = stratoClient - .fetcher[Long, ApiListView, ApiList]("channels/hydration/apiList.List") - StratoFetchableStore.withView[Long, ApiListView, ApiList]( - fetcher, - ApiListView(ApiListDisplayLocation.Recommendations) - ) - } - - override val reactivatedUserInfoStore = { - val stratoFetchableStore = StratoFetchableStore - .withUnitView[Long, String](stratoClient, "ml/featureStore/recentReactivationTime.User") - - ObservedReadableStore( - stratoFetchableStore - )(statsReceiver.scope("RecentReactivationTime")) - } - - override val openedPushByHourAggregatedStore: ReadableStore[Long, Map[Int, Int]] = { - StratoFetchableStore - .withUnitView[Long, Map[Int, Int]]( - stratoClient, - "frigate/magicrecs/opendPushByHourAggregated.User") - } - - private val lexClient: LiveVideoTimelineClient = { - val lexService = - new TimelineService.FinagledClient( - readOnlyThriftService( - name = "lex", - dest = lexServiceDest, - statsReceiver = statsReceiver.scope("lex-service"), - thriftClientId = pushserviceThriftClientId, - requestTimeout = 5.seconds, - mTLSServiceIdentifier = Some(serviceIdentifier) - ), - clientParam = RichClientParam(serviceName = "lex") - ) - new LiveVideoTimelineClient(lexService) - } - - override val lexServiceStore = { - ObservedCachedReadableStore.from[EventRequest, LiveEvent]( - buildStore(LexServiceStore(lexClient), "lexServiceStore"), - ttl = 1.hour, - maxKeys = 1000, - cacheName = "lexServiceStore_cache", - windowSize = 10000L - )(statsReceiver.scope("lexServiceStore_cache")) - } - - val inferredEntitiesFromInterestedInKeyedByClusterColumn = - "recommendations/simclusters_v2/inferred_entities/inferredEntitiesFromInterestedInKeyedByCluster" - override val simClusterToEntityStore: ReadableStore[Int, SimClustersInferredEntities] = { - val store = StratoFetchableStore - .withUnitView[Int, SimClustersInferredEntities]( - stratoClient, - inferredEntitiesFromInterestedInKeyedByClusterColumn) - ObservedCachedReadableStore.from[Int, SimClustersInferredEntities]( - buildStore(store, "simcluster_entity_store_cache"), - ttl = 6.hours, - maxKeys = 1000, - cacheName = "simcluster_entity_store_cache", - windowSize = 10000L - )(statsReceiver.scope("simcluster_entity_store_cache")) - } - - def fanoutMetadataColumn: String - - override val fanoutMetadataStore: ReadableStore[(Long, Long), FanoutEvent] = { - val store = StratoFetchableStore - .withUnitView[(Long, Long), FanoutEvent](stratoClient, fanoutMetadataColumn) - ObservedCachedReadableStore.from[(Long, Long), FanoutEvent]( - buildStore(store, "fanoutMetadataStore"), - ttl = 10.minutes, - maxKeys = 1000, - cacheName = "fanoutMetadataStore_cache", - windowSize = 10000L - )(statsReceiver.scope("fanoutMetadataStore_cache")) - } - - /** - * PostRanking Feature Store Client - */ - override def postRankingFeatureStoreClient = { - val clientStats = statsReceiver.scope("post_ranking_feature_store_client") - val clientConfig = - FeatureStoreClientBuilder.getClientConfig(PostRankingFeaturesConfig(), featureStoreUtil) - - FeatureStoreClientBuilder.getDynamicFeatureStoreClient(clientConfig, clientStats) - } - - /** - * Interests lookup store - */ - override val interestsWithLookupContextStore = { - ObservedCachedReadableStore.from[InterestsLookupRequestWithContext, Interests]( - buildStore( - new InterestsWithLookupContextStore(interestThriftServiceClient, statsReceiver), - "InterestsWithLookupContextStore" - ), - ttl = 1.minute, - maxKeys = 1000, - cacheName = "interestsWithLookupContextStore_cache", - windowSize = 10000L - ) - } - - /** - * OptOutInterestsStore - */ - override lazy val optOutUserInterestsStore: ReadableStore[Long, Seq[InterestId]] = { - buildStore( - InterestsOptOutwithLookUpContextStore(interestThriftServiceClient), - "InterestsOptOutStore" - ) - } - - override val topicListing: TopicListing = - if (isServiceLocal) { - new TopicListingBuilder(statsReceiver.scope("topiclisting"), Some(localConfigRepoPath)).build - } else { - new TopicListingBuilder(statsReceiver.scope("topiclisting"), None).build - } - - val cachedUttClient = { - val DefaultUttCacheConfig = CacheConfigV2(capacity = 100) - val uttClientCacheConfigs = uttclient.UttClientCacheConfigsV2( - DefaultUttCacheConfig, - DefaultUttCacheConfig, - DefaultUttCacheConfig, - DefaultUttCacheConfig - ) - new CachedUttClientV2(stratoClient, Environment.Prod, uttClientCacheConfigs, statsReceiver) - } - - override val uttEntityHydrationStore = - new UttEntityHydrationStore(cachedUttClient, statsReceiver, log) - - private lazy val dbv2PredictionServiceScoreStore: RelevancePushPredictionServiceStore = - DeepbirdV2ModelConfig.buildPredictionServiceScoreStore( - deepbirdPredictionServiceClient, - "deepbirdv2_magicrecs" - ) - - // Customized model to PredictionServiceStoreMap - // It is used to specify the predictionServiceStore for the models not in the default dbv2PredictionServiceScoreStore - private lazy val modelToPredictionServiceStoreMap: Map[ - WeightedOpenOrNtabClickModel.ModelNameType, - RelevancePushPredictionServiceStore - ] = Map() - - override lazy val weightedOpenOrNtabClickModelScorer = new PushMLModelScorer( - PushMLModel.WeightedOpenOrNtabClickProbability, - modelToPredictionServiceStoreMap, - dbv2PredictionServiceScoreStore, - statsReceiver.scope("weighted_oonc_scoring") - ) - - override lazy val optoutModelScorer = new PushMLModelScorer( - PushMLModel.OptoutProbability, - Map.empty, - dbv2PredictionServiceScoreStore, - statsReceiver.scope("optout_scoring") - ) - - override lazy val filteringModelScorer = new PushMLModelScorer( - PushMLModel.FilteringProbability, - Map.empty, - dbv2PredictionServiceScoreStore, - statsReceiver.scope("filtering_scoring") - ) - - private val queryFields: Set[QueryFields] = Set( - QueryFields.Profile, - QueryFields.Account, - QueryFields.Roles, - QueryFields.Discoverability, - QueryFields.Safety, - QueryFields.Takedowns, - QueryFields.Labels, - QueryFields.Counts, - QueryFields.ExtendedProfile - ) - - // Setting up safeUserStore - override val safeUserStore = - // in-memory cache - ObservedCachedReadableStore.from[Long, User]( - ObservedReadableStore( - GizmoduckUserStore.safeStore( - client = gizmoduckClient, - queryFields = queryFields, - safetyLevel = SafetyLevel.FilterNone, - statsReceiver = statsReceiver - ) - )(statsReceiver.scope("SafeUserStore")), - ttl = 1.minute, - maxKeys = 5e4.toInt, - cacheName = "safeUserStore_cache", - windowSize = 10000L - )(statsReceiver.scope("safeUserStore_cache")) - - val mobileSdkStore = MobileSdkStore( - "frigate_mobile_sdk_version_apollo", - "mobile_sdk_versions_scalding", - manhattanClientMtlsParams, - Apollo - ) - - val deviceUserStore = ObservedReadableStore( - GizmoduckUserStore( - client = gizmoduckClient, - queryFields = Set(QueryFields.Devices), - context = LookupContext(includeSoftUsers = true), - statsReceiver = statsReceiver - ) - )(statsReceiver.scope("devicesUserStore")) - - override val deviceInfoStore = DeviceInfoStore( - ObservedMemcachedReadableStore.fromCacheClient( - backingStore = ObservedReadableStore( - mobileSdkStore - )(statsReceiver.scope("uncachedMobileSdkVersionsStore")), - cacheClient = pushServiceCacheClient, - ttl = 12.hours - )( - valueInjection = BinaryScalaCodec(SdkVersionValue), - statsReceiver = statsReceiver.scope("MobileSdkVersionsStore"), - keyToString = { - case SdkVersionKey(Some(userId), Some(clientId)) => - s"DeviceInfoStore/$userId/$clientId" - case SdkVersionKey(Some(userId), None) => s"DeviceInfoStore/$userId/_" - case SdkVersionKey(None, Some(clientId)) => - s"DeviceInfoStore/_/$clientId" - case SdkVersionKey(None, None) => s"DeviceInfoStore/_" - } - ), - deviceUserStore - ) - - // Setting up edgeStore - override val edgeStore = SocialGraphPredicate.buildEdgeStore(sgsClient) - - override val socialGraphServiceProcessStore = SocialGraphServiceProcessStore(edgeStore) - - def userTweetEntityGraphDest: String - def userUserGraphDest: String - def lexServiceDest: String - - // Setting up the history store - def frigateHistoryCacheDest: String - - val notificationHistoryStore: NotificationHistoryStore = { - - val manhattanStackBasedClient = ThriftMux.client - .withClientId(notifierThriftClientId) - .withOpportunisticTls(OpportunisticTls.Required) - .withMutualTls( - serviceIdentifier - ) - - val manhattanHistoryMethodBuilder = manhattanStackBasedClient - .withLabel("manhattan_history_v2") - .withRequestTimeout(10.seconds) - .withStatsReceiver(statsReceiver) - .methodBuilder(Omega.wilyName) - .withMaxRetries(3) - - NotificationHistoryStore.build( - "frigate_notifier", - "frigate_notifications_v2", - manhattanHistoryMethodBuilder, - maxRetryCount = 3 - ) - } - - val emailNotificationHistoryStore: ReadOnlyHistoryStore = { - val client = ManhattanKVClient( - appId = "frigate_email_history", - dest = "/s/manhattan/omega.native-thrift", - mtlsParams = ManhattanKVClientMtlsParams( - serviceIdentifier = serviceIdentifier, - opportunisticTls = OpportunisticTls.Required - ) - ) - val endpoint = ManhattanKVEndpointBuilder(client) - .defaultGuarantee(Guarantee.SoftDcReadMyWrites) - .statsReceiver(statsReceiver) - .build() - - ReadOnlyHistoryStore(ManhattanKVHistoryStore(endpoint, dataset = "frigate_email_history"))( - statsReceiver) - } - - val manhattanKVLoggedOutHistoryStoreEndpoint: ManhattanKVEndpoint = { - val mhClient = ManhattanKVClient( - "frigate_notification_logged_out_history", - Nash.wilyName, - manhattanClientMtlsParams) - ManhattanKVEndpointBuilder(mhClient) - .defaultGuarantee(Guarantee.SoftDcReadMyWrites) - .defaultMaxTimeout(5.seconds) - .maxRetryCount(3) - .statsReceiver(statsReceiver) - .build() - } - - val manhattanKVNtabHistoryStoreEndpoint: ManhattanKVEndpoint = { - val mhClient = ManhattanKVClient("frigate_ntab", Omega.wilyName, manhattanClientMtlsParams) - ManhattanKVEndpointBuilder(mhClient) - .defaultGuarantee(Guarantee.SoftDcReadMyWrites) - .defaultMaxTimeout(5.seconds) - .maxRetryCount(3) - .statsReceiver(statsReceiver) - .build() - } - - val nTabHistoryStore: ReadableWritableStore[(Long, String), GenericNotificationOverrideKey] = { - ObservedReadableWritableStore( - NTabHistoryStore(manhattanKVNtabHistoryStoreEndpoint, "frigate_ntab_generic_notif_history") - )(statsReceiver.scope("NTabHistoryStore")) - } - - override lazy val ocfFatigueStore: ReadableStore[OCFHistoryStoreKey, FatigueFlowEnrollment] = - new OCFPromptHistoryStore( - manhattanAppId = "frigate_pushservice_ocf_fatigue_store", - dataset = "fatigue_v1", - manhattanClientMtlsParams - ) - - def historyStore: PushServiceHistoryStore - - def emailHistoryStore: PushServiceHistoryStore - - def loggedOutHistoryStore: PushServiceHistoryStore - - override val hydratedLabeledPushRecsStore: ReadableStore[UserHistoryKey, UserHistoryValue] = { - val labeledHistoryMemcacheClient = { - MemcacheStore.memcachedClient( - name = ClientName("history-memcache"), - dest = ZkEndPoint(frigateHistoryCacheDest), - statsReceiver = statsReceiver, - timeout = 2.seconds, - serviceIdentifier = serviceIdentifier - ) - } - - implicit val keyCodec = CompactScalaCodec(UserHistoryKey) - implicit val valueCodec = CompactScalaCodec(UserHistoryValue) - val dataset: Dataset[UserHistoryKey, UserHistoryValue] = - Dataset( - "", - "frigate_data_pipeline_pushservice", - "labeled_push_recs_aggregated_hydrated", - Athena - ) - ObservedMemcachedReadableStore.fromCacheClient( - backingStore = ObservedReadableStore(buildManhattanStore(dataset))( - statsReceiver.scope("UncachedHydratedLabeledPushRecsStore") - ), - cacheClient = labeledHistoryMemcacheClient, - ttl = 6.hours - )( - valueInjection = valueCodec, - statsReceiver = statsReceiver.scope("HydratedLabeledPushRecsStore"), - keyToString = { - case UserHistoryKey.UserId(userId) => s"HLPRS/$userId" - case unknownKey => - throw new IllegalArgumentException(s"Unknown userHistoryStore cache key $unknownKey") - } - ) - } - - override val realTimeClientEventStore: RealTimeClientEventStore = { - val client = ManhattanKVClient( - "frigate_eventstream", - "/s/manhattan/omega.native-thrift", - manhattanClientMtlsParams - ) - val endpoint = - ManhattanKVEndpointBuilder(client) - .defaultGuarantee(Guarantee.SoftDcReadMyWrites) - .defaultMaxTimeout(3.seconds) - .statsReceiver(statsReceiver) - .build() - - ManhattanRealTimeClientEventStore(endpoint, "realtime_client_events", statsReceiver, None) - } - - override val onlineUserHistoryStore: ReadableStore[OnlineUserHistoryKey, UserHistoryValue] = { - OnlineUserHistoryStore(realTimeClientEventStore) - } - - override val userMediaRepresentationStore = UserMediaRepresentationStore( - "user_media_representation", - "user_media_representation_dataset", - manhattanClientMtlsParams - ) - - override val producerMediaRepresentationStore = ObservedMemcachedReadableStore.fromCacheClient( - backingStore = UserMediaRepresentationStore( - "user_media_representation", - "producer_media_representation_dataset", - manhattanClientMtlsParams - )(statsReceiver.scope("UncachedProducerMediaRepStore")), - cacheClient = pushServiceCacheClient, - ttl = 4.hours - )( - valueInjection = BinaryScalaCodec(UserMediaRepresentation), - keyToString = { k: Long => s"ProducerMediaRepStore/$k" }, - statsReceiver.scope("ProducerMediaRepStore") - ) - - override val mrUserStatePredictionStore = { - StratoFetchableStore.withUnitView[Long, MRUserHmmState]( - stratoClient, - "frigate/magicrecs/mrUserStatePrediction.User") - } - - override val userHTLLastVisitStore = - UserHTLLastVisitReadableStore( - "pushservice_htl_user_session", - "tls_user_session_store", - statsReceiver.scope("userHTLLastVisitStore"), - manhattanClientMtlsParams - ) - - val crMixerClient: CrMixer.MethodPerEndpoint = new CrMixer.FinagledClient( - readOnlyThriftService( - "cr-mixer", - "/s/cr-mixer/cr-mixer-plus", - statsReceiver, - pushserviceThriftClientId, - requestTimeout = 5.seconds, - mTLSServiceIdentifier = Some(serviceIdentifier) - ), - clientParam = RichClientParam(serviceName = "cr-mixer") - ) - - val crMixerStore = CrMixerTweetStore(crMixerClient)(statsReceiver.scope("CrMixerTweetStore")) - - val contentMixerClient: ContentMixer.MethodPerEndpoint = new ContentMixer.FinagledClient( - readOnlyThriftService( - "content-mixer", - "/s/corgi-shared/content-mixer", - statsReceiver, - pushserviceThriftClientId, - requestTimeout = 5.seconds, - mTLSServiceIdentifier = Some(serviceIdentifier) - ), - clientParam = RichClientParam(serviceName = "content-mixer") - ) - - val exploreRankerClient: ExploreRanker.MethodPerEndpoint = - new ExploreRanker.FinagledClient( - readOnlyThriftService( - "explore-ranker", - "/s/explore-ranker/explore-ranker", - statsReceiver, - pushserviceThriftClientId, - requestTimeout = 5.seconds, - mTLSServiceIdentifier = Some(serviceIdentifier) - ), - clientParam = RichClientParam(serviceName = "explore-ranker") - ) - - val contentMixerStore = { - ObservedReadableStore(ContentMixerStore(contentMixerClient))( - statsReceiver.scope("ContentMixerStore")) - } - - val exploreRankerStore = { - ObservedReadableStore(ExploreRankerStore(exploreRankerClient))( - statsReceiver.scope("ExploreRankerStore") - ) - } - - val gizmoduckUtcOffsetStore = ObservedReadableStore( - GizmoduckUserUtcOffsetStore.fromUserStore(safeUserStore) - )(statsReceiver.scope("GizmoUserUtcOffsetStore")) - - override val userUtcOffsetStore = - UtcOffsetStore - .makeMemcachedUtcOffsetStore( - gizmoduckUtcOffsetStore, - pushServiceCoreSvcsCacheClient, - ReadableStore.empty, - manhattanStarbuckAppId, - manhattanClientMtlsParams - )(statsReceiver) - .mapValues(Duration.fromSeconds) - - override val cachedTweetyPieStoreV2 = { - val getTweetOptions = Some( - GetTweetOptions( - safetyLevel = Some(SafetyLevel.MagicRecsV2), - includeRetweetCount = true, - includeReplyCount = true, - includeFavoriteCount = true, - includeQuotedTweet = true, - additionalFieldIds = Seq(VisibleTextRangeField.id) - ) - ) - buildCachedTweetyPieStore(getTweetOptions, "tp_v2") - } - - override val cachedTweetyPieStoreV2NoVF = { - val getTweetOptions = Some( - GetTweetOptions( - safetyLevel = Some(SafetyLevel.FilterDefault), - includeRetweetCount = true, - includeReplyCount = true, - includeFavoriteCount = true, - includeQuotedTweet = true, - additionalFieldIds = Seq(VisibleTextRangeField.id), - ) - ) - buildCachedTweetyPieStore(getTweetOptions, "tp_v2_noVF") - } - - override val safeCachedTweetyPieStoreV2 = { - val getTweetOptions = Some( - GetTweetOptions( - safetyLevel = Some(SafetyLevel.MagicRecsAggressiveV2), - includeRetweetCount = true, - includeReplyCount = true, - includeFavoriteCount = true, - includeQuotedTweet = true, - additionalFieldIds = Seq(VisibleTextRangeField.id) - ) - ) - buildCachedTweetyPieStore(getTweetOptions, "sftp_v2") - } - - override val userTweetTweetyPieStore: ReadableStore[UserTweet, TweetyPieResult] = { - val getTweetOptions = Some( - GetTweetOptions( - safetyLevel = Some(SafetyLevel.MagicRecsV2), - includeRetweetCount = true, - includeReplyCount = true, - includeFavoriteCount = true, - includeQuotedTweet = true, - additionalFieldIds = Seq(VisibleTextRangeField.id) - ) - ) - TweetyPieStore.buildUserTweetStore( - client = tweetyPieClient, - options = getTweetOptions - ) - } - - override val safeUserTweetTweetyPieStore: ReadableStore[UserTweet, TweetyPieResult] = { - val getTweetOptions = Some( - GetTweetOptions( - safetyLevel = Some(SafetyLevel.MagicRecsAggressiveV2), - includeRetweetCount = true, - includeReplyCount = true, - includeFavoriteCount = true, - includeQuotedTweet = true, - additionalFieldIds = Seq(VisibleTextRangeField.id) - ) - ) - TweetyPieStore.buildUserTweetStore( - client = tweetyPieClient, - options = getTweetOptions - ) - } - - override val tweetContentFeatureCacheStore: ReadableStore[Long, ThriftDataRecord] = { - ObservedMemcachedReadableStore.fromCacheClient( - backingStore = TweetContentFeatureReadableStore(stratoClient), - cacheClient = poptartImpressionsCacheClient, - ttl = 12.hours - )( - valueInjection = BinaryScalaCodec(ThriftDataRecord), - statsReceiver = statsReceiver.scope("TweetContentFeaturesCacheStore"), - keyToString = { k: Long => s"tcf/$k" } - ) - } - - lazy val tweetTranslationStore: ReadableStore[ - TweetTranslationStore.Key, - TweetTranslationStore.Value - ] = { - val isTweetTranslatableStore = - StratoFetchableStore - .withUnitView[IsTweetTranslatableClientColumn.Key, Boolean]( - fetcher = new IsTweetTranslatableClientColumn(stratoClient).fetcher - ) - - val translateTweetStore = - StratoFetchableStore - .withUnitView[MachineTranslateTweetClientColumn.Key, MachineTranslationResponse]( - fetcher = new MachineTranslateTweetClientColumn(stratoClient).fetcher - ) - - ObservedReadableStore( - TweetTranslationStore(translateTweetStore, isTweetTranslatableStore, statsReceiver) - )(statsReceiver.scope("tweetTranslationStore")) - } - - val scarecrowClient = new ScarecrowService.FinagledClient( - readOnlyThriftService( - "", - "/s/abuse/scarecrow", - statsReceiver, - notifierThriftClientId, - requestTimeout = 5.second, - mTLSServiceIdentifier = Some(serviceIdentifier) - ), - clientParam = RichClientParam(serviceName = "") - ) - - // Setting up scarecrow store - override val scarecrowCheckEventStore = { - ScarecrowCheckEventStore(scarecrowClient) - } - - // setting up the perspective store - override val userTweetPerspectiveStore = { - val service = new DynamicRequestMeterFilter( - tunableMap(PushServiceTunableKeys.TweetPerspectiveStoreQpsLimit), - RateLimiterGenerator.asTuple(_, shardParams.numShards, 40), - PushQPSLimitConstants.PerspectiveStoreQPS)(timer) - .andThen( - readOnlyThriftService( - "tweetypie_perspective_service", - "/s/tweetypie/tweetypie", - statsReceiver, - notifierThriftClientId, - mTLSServiceIdentifier = Some(serviceIdentifier) - ) - ) - - val client = new TweetService.FinagledClient( - service, - clientParam = RichClientParam(serviceName = "tweetypie_perspective_client")) - ObservedReadableStore( - PerspectiveReadableStore(client) - )(statsReceiver.scope("TweetPerspectiveStore")) - } - - //user country code store, used in RecsWithheldContentPredicate - wrapped by memcache based cache - override val userCountryStore = - ObservedMemcachedReadableStore.fromCacheClient( - backingStore = ObservedReadableStore( - UserCountryStore(metastoreLocationAppId, manhattanClientMtlsParams) - )(statsReceiver.scope("userCountryStore")), - cacheClient = pushServiceCacheClient, - ttl = 12.hours - )( - valueInjection = BinaryScalaCodec(Location), - statsReceiver = statsReceiver.scope("UserCountryStore"), - keyToString = { k: Long => s"UserCountryStore/$k" } - ) - - override val audioSpaceParticipantsStore: ReadableStore[String, Participants] = { - val store = StratoFetchableStore - .DefaultStratoFetchableStore( - fetcher = new ParticipantsOnAudioSpaceClientColumn(stratoClient).fetcher - ).composeKeyMapping[String](broadcastId => - (broadcastId, AudioSpacesLookupContext(forUserId = None))) - - ObservedCachedReadableStore - .from( - store = buildStore(store, "AudioSpaceParticipantsStore"), - ttl = 20.seconds, - maxKeys = 200, - cacheName = "AudioSpaceParticipantsStore", - windowSize = 200 - ) - - } - - override val topicSocialProofServiceStore: ReadableStore[ - TopicSocialProofRequest, - TopicSocialProofResponse - ] = { - StratoFetchableStore.withUnitView[TopicSocialProofRequest, TopicSocialProofResponse]( - stratoClient, - "topic-signals/tsp/topic-social-proof") - } - - override val spaceDeviceFollowStore: ReadableStore[SourceDestUserRequest, Boolean] = { - StratoFetchableStore.withUnitView( - fetcher = new SpaceDeviceFollowingClientColumn(stratoClient).fetcher - ) - } - - override val audioSpaceStore: ReadableStore[String, AudioSpace] = { - val store = StratoFetchableStore - .DefaultStratoFetchableStore( - fetcher = new CoreOnAudioSpaceClientColumn(stratoClient).fetcher - ).composeKeyMapping[String] { broadcastId => - (broadcastId, AudioSpacesLookupContext(forUserId = None)) - } - - ObservedCachedReadableStore - .from( - store = buildStore(store, "AudioSpaceVisibilityStore"), - ttl = 1.minute, - maxKeys = 5000, - cacheName = "AudioSpaceVisibilityStore", - windowSize = 10000L) - } - - override val userLanguagesStore = UserLanguagesStore( - manhattanMetastoreAppId, - manhattanClientMtlsParams, - statsReceiver.scope("user_languages_store") - ) - - val tflockClient: TFlockClient = new TFlockClient( - new FlockDB.FinagledClient( - readOnlyThriftService( - "tflockClient", - "/s/tflock/tflock", - statsReceiver, - pushserviceThriftClientId, - mTLSServiceIdentifier = Some(serviceIdentifier) - ), - serviceName = "tflock", - stats = statsReceiver - ), - defaultPageSize = 1000 - ) - - val rawFlockClient = ThriftMux.client - .withClientId(pushserviceThriftClientId) - .withMutualTls(serviceIdentifier) - .build[FlockDB.MethodPerEndpoint]("/s/flock/flock") - - val flockClient: FlockClient = new FlockClient( - rawFlockClient, - defaultPageSize = 100 - ) - - override val recentFollowsStore: FlockFollowStore = { - val dStats = statsReceiver.scope("FlockRecentFollowsStore") - FlockFollowStore(flockClient, dStats) - } - - def notificationServiceClient: NotificationService$FinagleClient - - def notificationServiceSend( - target: Target, - request: CreateGenericNotificationRequest - ): Future[CreateGenericNotificationResponse] - - def notificationServiceDelete( - request: DeleteGenericNotificationRequest - ): Future[Unit] - - def notificationServiceDeleteTimeline( - request: DeleteCurrentTimelineForUserRequest - ): Future[Unit] - - override val notificationServiceSender: ReadableStore[ - NotificationServiceRequest, - CreateGenericNotificationResponse - ] = { - new NotificationServiceSender( - notificationServiceSend, - PushParams.EnableWritesToNotificationServiceParam, - PushParams.EnableWritesToNotificationServiceForAllEmployeesParam, - PushParams.EnableWritesToNotificationServiceForEveryoneParam - ) - } - - val eventRecosServiceClient = { - val dest = "/s/events-recos/events-recos-service" - new EventsRecosService.FinagledClient( - readOnlyThriftService( - "EventRecosService", - dest, - statsReceiver, - pushserviceThriftClientId, - mTLSServiceIdentifier = Some(serviceIdentifier) - ), - clientParam = RichClientParam(serviceName = "EventRecosService") - ) - } - - lazy val recommendedTrendsCandidateSource = RecommendedTrendsCandidateSource( - TrendsRecommendationStore(eventRecosServiceClient, statsReceiver)) - - override val softUserGeoLocationStore: ReadableStore[Long, GeoLocation] = - StratoFetchableStore.withUnitView[Long, GeoLocation](fetcher = - new FrequentSoftUserLocationClientColumn(stratoClient).fetcher) - - lazy val candidateSourceGenerator = new PushCandidateSourceGenerator( - earlybirdCandidateSource, - userTweetEntityGraphCandidates, - cachedTweetyPieStoreV2, - safeCachedTweetyPieStoreV2, - userTweetTweetyPieStore, - safeUserTweetTweetyPieStore, - cachedTweetyPieStoreV2NoVF, - edgeStore, - interestsWithLookupContextStore, - uttEntityHydrationStore, - geoDuckV2Store, - topTweetsByGeoStore, - topTweetsByGeoV2VersionedStore, - ruxTweetImpressionsStore, - recommendedTrendsCandidateSource, - recentTweetsByAuthorsStore, - topicSocialProofServiceStore, - crMixerStore, - contentMixerStore, - exploreRankerStore, - softUserGeoLocationStore, - tripTweetCandidateStore, - popGeoLists, - idsStore - ) - - lazy val loCandidateSourceGenerator = new LoggedOutPushCandidateSourceGenerator( - tripTweetCandidateStore, - geoDuckV2Store, - safeCachedTweetyPieStoreV2, - cachedTweetyPieStoreV2NoVF, - cachedTweetyPieStoreV2, - contentMixerStore, - softUserGeoLocationStore, - topTweetsByGeoStore, - topTweetsByGeoV2VersionedStore - ) - - lazy val rfphStatsRecorder = new RFPHStatsRecorder() - - lazy val rfphRestrictStep = new RFPHRestrictStep() - - lazy val rfphTakeStepUtil = new RFPHTakeStepUtil()(statsReceiver) - - lazy val rfphPrerankFilter = new RFPHPrerankFilter()(statsReceiver) - - lazy val rfphLightRanker = new RFPHLightRanker(lightRanker, statsReceiver) - - lazy val sendHandlerPredicateUtil = new SendHandlerPredicateUtil()(statsReceiver) - - lazy val ntabSender = - new NtabSender( - notificationServiceSender, - nTabHistoryStore, - notificationServiceDelete, - notificationServiceDeleteTimeline - ) - - lazy val ibis2Sender = new Ibis2Sender(pushIbisV2Store, tweetTranslationStore, statsReceiver) - - lazy val historyWriter = new HistoryWriter(historyStore, statsReceiver) - - lazy val loggedOutHistoryWriter = new HistoryWriter(loggedOutHistoryStore, statsReceiver) - - lazy val eventBusWriter = new EventBusWriter(pushSendEventBusPublisher, statsReceiver) - - lazy val ntabOnlyChannelSelector = new NtabOnlyChannelSelector - - lazy val notificationSender = - new NotificationSender( - ibis2Sender, - ntabSender, - statsReceiver, - notificationScribe - ) - - lazy val candidateNotifier = - new CandidateNotifier( - notificationSender, - casLock = casLock, - historyWriter = historyWriter, - eventBusWriter = eventBusWriter, - ntabOnlyChannelSelector = ntabOnlyChannelSelector - )(statsReceiver) - - lazy val loggedOutCandidateNotifier = new CandidateNotifier( - notificationSender, - casLock = casLock, - historyWriter = loggedOutHistoryWriter, - eventBusWriter = null, - ntabOnlyChannelSelector = ntabOnlyChannelSelector - )(statsReceiver) - - lazy val rfphNotifier = - new RefreshForPushNotifier(rfphStatsRecorder, candidateNotifier)(statsReceiver) - - lazy val loRfphNotifier = - new LoggedOutRefreshForPushNotifier(rfphStatsRecorder, loggedOutCandidateNotifier)( - statsReceiver) - - lazy val rfphRanker = { - val randomRanker = RandomRanker[Target, PushCandidate]() - val subscriptionCreatorRanker = - new SubscriptionCreatorRanker(superFollowEligibilityUserStore, statsReceiver) - new RFPHRanker( - randomRanker, - weightedOpenOrNtabClickModelScorer, - subscriptionCreatorRanker, - userHealthSignalStore, - producerMediaRepresentationStore, - statsReceiver - ) - } - - lazy val rfphFeatureHydrator = new RFPHFeatureHydrator(featureHydrator) - lazy val loggedOutRFPHRanker = new LoggedOutRanker(cachedTweetyPieStoreV2, statsReceiver) - - override val userFeaturesStore: ReadableStore[Long, UserFeatures] = { - implicit val valueCodec = new BinaryScalaCodec(UserFeatures) - val dataset: Dataset[Long, UserFeatures] = - Dataset( - "", - "user_features_pushservice_apollo", - "recommendations_user_features_apollo", - Apollo) - - ObservedMemcachedReadableStore.fromCacheClient( - backingStore = ObservedReadableStore(buildManhattanStore(dataset))( - statsReceiver.scope("UncachedUserFeaturesStore") - ), - cacheClient = pushServiceCacheClient, - ttl = 24.hours - )( - valueInjection = valueCodec, - statsReceiver = statsReceiver.scope("UserFeaturesStore"), - keyToString = { k: Long => s"ufts/$k" } - ) - } - - override def htlScoreStore(userId: Long): ReadableStore[Long, ScoredTweet] = { - val fetcher = new TimelineScorerTweetScoresV1ClientColumn(stratoClient).fetcher - val htlStore = buildStore( - StratoFetchableStore.withView[Long, TimelineScorerScoreView, ScoredTweet]( - fetcher, - TimelineScorerScoreView(Some(userId)) - ), - "htlScoreStore" - ) - htlStore - } - - override val userTargetingPropertyStore: ReadableStore[Long, UserTargetingProperty] = { - val name = "userTargetingPropertyStore" - val store = StratoFetchableStore - .withUnitView(new TargetingPropertyOnUserClientColumn(stratoClient).fetcher) - buildStore(store, name) - } - - override val timelinesUserSessionStore: ReadableStore[Long, UserSession] = { - implicit val valueCodec = new CompactScalaCodec(UserSession) - val dataset: Dataset[Long, UserSession] = Dataset[Long, UserSession]( - "", - "frigate_realgraph", - "real_graph_user_features", - Apollo - ) - - ObservedMemcachedReadableStore.fromCacheClient( - backingStore = ObservedReadableStore(buildManhattanStore(dataset))( - statsReceiver.scope("UncachedTimelinesUserSessionStore") - ), - cacheClient = pushServiceCacheClient, - ttl = 6.hours - )( - valueInjection = valueCodec, - statsReceiver = statsReceiver.scope("timelinesUserSessionStore"), - keyToString = { k: Long => s"tluss/$k" } - ) - } - - lazy val recentTweetsFromTflockStore: ReadableStore[Long, Seq[Long]] = - ObservedReadableStore( - RecentTweetsByAuthorsStore.usingRecentTweetsConfig( - tflockClient, - RecentTweetsConfig(maxResults = 1, maxAge = 3.days) - ) - )(statsReceiver.scope("RecentTweetsFromTflockStore")) - - lazy val recentTweetsByAuthorsStore: ReadableStore[RecentTweetsQuery, Seq[Seq[Long]]] = - ObservedReadableStore( - RecentTweetsByAuthorsStore(tflockClient) - )(statsReceiver.scope("RecentTweetsByAuthorsStore")) - - val jobConfig = PopGeoInterestProvider - .getPopularTweetsJobConfig( - InterestDeployConfig( - AppId("PopularTweetsByInterestProd"), - Cluster.ATLA, - Env.Prod, - serviceIdentifier, - manhattanClientMtlsParams - )) - .withManhattanAppId("frigate_pop_by_geo_tweets") - - override val topTweetsByGeoStore = TopTweetsStore.withMemCache( - jobConfig, - pushServiceCacheClient, - 10.seconds - )(statsReceiver) - - override val topTweetsByGeoV2VersionedStore: ReadableStore[String, PopTweetsInPlace] = { - StratoFetchableStore.withUnitView[String, PopTweetsInPlace]( - stratoClient, - "recommendations/popgeo/popGeoTweetsVersioned") - } - - override lazy val pushcapDynamicPredictionStore: ReadableStore[Long, PushcapUserHistory] = { - StratoFetchableStore.withUnitView[Long, PushcapUserHistory]( - stratoClient, - "frigate/magicrecs/pushcapDynamicPrediction.User") - } - - override val tweetAuthorLocationFeatureBuilder = - UserLocationFeatureBuilder(Some("TweetAuthor")) - .withStats() - - override val tweetAuthorLocationFeatureBuilderById = - UserLocationFeatureBuilderById( - userCountryStore, - tweetAuthorLocationFeatureBuilder - ).withStats() - - override val socialContextActionsFeatureBuilder = - SocialContextActionsFeatureBuilder().withStats() - - override val tweetContentFeatureBuilder = - TweetContentFeatureBuilder(tweetContentFeatureCacheStore).withStats() - - override val tweetAuthorRecentRealGraphFeatureBuilder = - RecentRealGraphFeatureBuilder( - stratoClient, - UserAuthorEntity, - TargetUserEntity, - TweetAuthorEntity, - TweetAuthorRecentRealGraphFeatures(statsReceiver.scope("TweetAuthorRecentRealGraphFeatures")) - ).withStats() - - override val socialContextRecentRealGraphFeatureBuilder = - SocialContextRecentRealGraphFeatureBuilder( - RecentRealGraphFeatureBuilder( - stratoClient, - TargetUserSocialContextEntity, - TargetUserEntity, - SocialContextEntity, - SocialContextRecentRealGraphFeatures( - statsReceiver.scope("SocialContextRecentRealGraphFeatures")) - )(statsReceiver - .scope("SocialContextRecentRealGraphFeatureBuilder").scope("RecentRealGraphFeatureBuilder")) - ).withStats() - - override val tweetSocialProofFeatureBuilder = - TweetSocialProofFeatureBuilder(Some("TargetUser")).withStats() - - override val targetUserFullRealGraphFeatureBuilder = - TargetFullRealGraphFeatureBuilder(Some("TargetUser")).withStats() - - override val postProcessingFeatureBuilder: PostProcessingFeatureBuilder = - PostProcessingFeatureBuilder() - - override val mrOfflineUserCandidateSparseAggregatesFeatureBuilder = - MrOfflineUserCandidateSparseAggregatesFeatureBuilder(stratoClient, featureStoreUtil).withStats() - - override val mrOfflineUserAggregatesFeatureBuilder = - MrOfflineUserAggregatesFeatureBuilder(stratoClient, featureStoreUtil).withStats() - - override val mrOfflineUserCandidateAggregatesFeatureBuilder = - MrOfflineUserCandidateAggregatesFeatureBuilder(stratoClient, featureStoreUtil).withStats() - - override val tweetAnnotationsFeatureBuilder = - TweetAnnotationsFeatureBuilder(stratoClient).withStats() - - override val targetUserMediaRepresentationFeatureBuilder = - UserMediaRepresentationFeatureBuilder(userMediaRepresentationStore).withStats() - - override val targetLevelFeatureBuilder = - TargetLevelFeatureBuilder(featureStoreUtil, targetLevelFeaturesConfig).withStats() - - override val candidateLevelFeatureBuilder = - CandidateLevelFeatureBuilder(featureStoreUtil).withStats() - - override lazy val targetFeatureHydrator = RelevanceTargetFeatureHydrator( - targetUserFullRealGraphFeatureBuilder, - postProcessingFeatureBuilder, - targetUserMediaRepresentationFeatureBuilder, - targetLevelFeatureBuilder - ) - - override lazy val featureHydrator = - FeatureHydrator(targetFeatureHydrator, candidateFeatureHydrator) - - val pushServiceLightRankerConfig: LightRankerConfig = new LightRankerConfig( - pushserviceThriftClientId, - serviceIdentifier, - statsReceiver.scope("lightRanker"), - deepbirdv2PredictionServiceDest, - "DeepbirdV2PredictionService" - ) - val lightRanker: MagicRecsServeDataRecordLightRanker = - pushServiceLightRankerConfig.lightRanker - - override val tweetImpressionStore: ReadableStore[Long, Seq[Long]] = { - val name = "htl_impression_store" - val store = buildStore( - HtlTweetImpressionStore.createStoreWithTweetIds( - requestTimeout = 6.seconds, - label = "htl_tweet_impressions", - serviceIdentifier = serviceIdentifier, - statsReceiver = statsReceiver - ), - name - ) - val numTweetsReturned = - statsReceiver.scope(name).stat("num_tweets_returned_per_user") - new TransformedReadableStore(store)((userId: Long, tweetIds: Seq[Long]) => { - numTweetsReturned.add(tweetIds.size) - Future.value(Some(tweetIds)) - }) - } - - val ruxTweetImpressionsStore = new TweetImpressionsStore(stratoClient) - - override val strongTiesStore: ReadableStore[Long, STPResult] = { - implicit val valueCodec = new BinaryScalaCodec(STPResult) - val strongTieScoringDataset: Dataset[Long, STPResult] = - Dataset("", "frigate_stp", "stp_result_rerank", Athena) - buildManhattanStore(strongTieScoringDataset) - } - - override lazy val earlybirdFeatureStore = ObservedReadableStore( - EarlybirdFeatureStore( - clientId = pushserviceThriftClientId.name, - earlybirdSearchStore = earlybirdSearchStore - ) - )(statsReceiver.scope("EarlybirdFeatureStore")) - - override lazy val earlybirdFeatureBuilder = EarlybirdFeatureBuilder(earlybirdFeatureStore) - - override lazy val earlybirdSearchStore = { - val earlybirdClientName: String = "earlybird" - val earlybirdSearchStoreName: String = "EarlybirdSearchStore" - - val earlybirdClient = new EarlybirdService.FinagledClient( - readOnlyThriftService( - earlybirdClientName, - earlybirdSearchDest, - statsReceiver, - pushserviceThriftClientId, - tries = 1, - requestTimeout = 3.seconds, - mTLSServiceIdentifier = Some(serviceIdentifier) - ), - clientParam = RichClientParam(protocolFactory = new TCompactProtocol.Factory) - ) - - ObservedReadableStore( - EarlybirdSearchStore(earlybirdClient)(statsReceiver.scope(earlybirdSearchStoreName)) - )(statsReceiver.scope(earlybirdSearchStoreName)) - } - - override lazy val earlybirdCandidateSource: EarlybirdCandidateSource = EarlybirdCandidateSource( - clientId = pushserviceThriftClientId.name, - earlybirdSearchStore = earlybirdSearchStore - ) - - override val realGraphScoresTop500InStore: RealGraphScoresTop500InStore = { - val stratoRealGraphInStore = - StratoFetchableStore - .withUnitView[Long, CandidateSeq]( - stratoClient, - "frigate/magicrecs/fanoutCoi500pRealGraphV2") - - RealGraphScoresTop500InStore( - ObservedMemcachedReadableStore.fromCacheClient( - backingStore = stratoRealGraphInStore, - cacheClient = entityGraphCacheClient, - ttl = 24.hours - )( - valueInjection = BinaryScalaCodec(CandidateSeq), - statsReceiver = statsReceiver.scope("CachedRealGraphScoresTop500InStore"), - keyToString = { k: Long => s"500p_test/$k" } - ) - ) - } - - override val tweetEntityGraphStore = { - val tweetEntityGraphClient = new UserTweetEntityGraph.FinagledClient( - Finagle.readOnlyThriftService( - "user_tweet_entity_graph", - userTweetEntityGraphDest, - statsReceiver, - pushserviceThriftClientId, - requestTimeout = 5.seconds, - mTLSServiceIdentifier = Some(serviceIdentifier) - ) - ) - ObservedReadableStore( - RecommendedTweetEntitiesStore( - tweetEntityGraphClient, - statsReceiver.scope("RecommendedTweetEntitiesStore") - ) - )(statsReceiver.scope("RecommendedTweetEntitiesStore")) - } - - override val userUserGraphStore = { - val userUserGraphClient = new UserUserGraph.FinagledClient( - Finagle.readOnlyThriftService( - "user_user_graph", - userUserGraphDest, - statsReceiver, - pushserviceThriftClientId, - requestTimeout = 5.seconds, - mTLSServiceIdentifier = Some(serviceIdentifier) - ), - clientParam = RichClientParam(serviceName = "user_user_graph") - ) - ObservedReadableStore( - UserUserGraphStore(userUserGraphClient, statsReceiver.scope("UserUserGraphStore")) - )(statsReceiver.scope("UserUserGraphStore")) - } - - override val ntabCaretFeedbackStore: ReadableStore[GenericNotificationsFeedbackRequest, Seq[ - CaretFeedbackDetails - ]] = { - val client = ManhattanKVClient( - "pushservice_ntab_caret_feedback_omega", - Omega.wilyName, - manhattanClientMtlsParams - ) - val endpoint = ManhattanKVEndpointBuilder(client) - .defaultGuarantee(Guarantee.SoftDcReadMyWrites) - .defaultMaxTimeout(3.seconds) - .maxRetryCount(2) - .statsReceiver(statsReceiver) - .build() - - val feedbackSignalManhattanClient = - FeedbackSignalManhattanClient(endpoint, statsReceiver.scope("FeedbackSignalManhattanClient")) - NtabCaretFeedbackStore(feedbackSignalManhattanClient) - } - - override val genericFeedbackStore: ReadableStore[FeedbackRequest, Seq[ - FeedbackPromptValue - ]] = { - FeedbackStore( - GenericFeedbackStoreBuilder.build( - manhattanKVClientAppId = "frigate_pushservice_ntabfeedback_prompt", - environment = NotifEnvironment.apply(serviceIdentifier.environment), - svcIdentifier = serviceIdentifier, - statsReceiver = statsReceiver - )) - } - - override val genericNotificationFeedbackStore: GenericFeedbackStore = { - - GenericFeedbackStoreBuilder.build( - manhattanKVClientAppId = "frigate_pushservice_ntabfeedback_prompt", - environment = NotifEnvironment.apply(serviceIdentifier.environment), - svcIdentifier = serviceIdentifier, - statsReceiver = statsReceiver - ) - } - - override val earlybirdSearchDest = "/s/earlybird-root-superroot/root-superroot" - - // low latency as compared to default `semanticCoreMetadataClient` - private val lowLatencySemanticCoreMetadataClient: MetadataService.MethodPerEndpoint = - new MetadataService.FinagledClient( - Finagle.readOnlyThriftService( - name = "semantic_core_metadata_service", - dest = "/s/escherbird/metadataservice", - statsReceiver = statsReceiver, - thriftClientId = pushserviceThriftClientId, - tries = 2, // total number of tries. number of retries = tries - 1 - requestTimeout = 2.seconds, - mTLSServiceIdentifier = Some(serviceIdentifier) - ) - ) - - private val semanticCoreMetadataStitchClient = new MetadataStitchClient( - lowLatencySemanticCoreMetadataClient - ) - - override val semanticCoreMegadataStore: ReadableStore[SemanticEntityForQuery, EntityMegadata] = { - val name = "semantic_core_megadata_store_cached" - val store = MetaDataReadableStore.getMegadataReadableStore( - metadataStitchClient = semanticCoreMetadataStitchClient, - typedMetadataDomains = Some(Set(Domains.EventsEntityService)) - ) - ObservedCachedReadableStore - .from( - store = ObservedReadableStore(store)( - statsReceiver - .scope("store") - .scope("semantic_core_megadata_store") - ), - ttl = 1.hour, - maxKeys = 1000, - cacheName = "semantic_core_megadata_cache", - windowSize = 10000L - )(statsReceiver.scope("store", name)) - } - - override val basketballGameScoreStore: ReadableStore[QualifiedId, BasketballGameLiveUpdate] = { - StratoFetchableStore.withUnitView[QualifiedId, BasketballGameLiveUpdate]( - stratoClient, - "semanticCore/basketballGameScore.Entity") - } - - override val baseballGameScoreStore: ReadableStore[QualifiedId, BaseballGameLiveUpdate] = { - StratoFetchableStore.withUnitView[QualifiedId, BaseballGameLiveUpdate]( - stratoClient, - "semanticCore/baseballGameScore.Entity") - } - - override val cricketMatchScoreStore: ReadableStore[QualifiedId, CricketMatchLiveUpdate] = { - StratoFetchableStore.withUnitView[QualifiedId, CricketMatchLiveUpdate]( - stratoClient, - "semanticCore/cricketMatchScore.Entity") - } - - override val soccerMatchScoreStore: ReadableStore[QualifiedId, SoccerMatchLiveUpdate] = { - ObservedCachedReadableStore - .from( - store = StratoFetchableStore.withUnitView[QualifiedId, SoccerMatchLiveUpdate]( - stratoClient, - "semanticCore/soccerMatchScore.Entity"), - ttl = 10.seconds, - maxKeys = 100, - cacheName = "SoccerMatchCachedStore", - windowSize = 100L - )(statsReceiver.scope("SoccerMatchCachedStore")) - - } - - override val nflGameScoreStore: ReadableStore[QualifiedId, NflFootballGameLiveUpdate] = { - ObservedCachedReadableStore - .from( - store = StratoFetchableStore.withUnitView[QualifiedId, NflFootballGameLiveUpdate]( - stratoClient, - "semanticCore/nflFootballGameScore.Entity"), - ttl = 10.seconds, - maxKeys = 100, - cacheName = "NFLMatchCachedStore", - windowSize = 100L - )(statsReceiver.scope("NFLMatchCachedStore")) - - } - - override val userHealthSignalStore: ReadableStore[Long, UserHealthSignalResponse] = { - val userHealthSignalFetcher = - stratoClient.fetcher[Long, Seq[UserHealthSignal], UserHealthSignalResponse]( - "hss/user_signals/api/healthSignals.User" - ) - - val store = buildStore( - StratoFetchableStore.withView[Long, Seq[UserHealthSignal], UserHealthSignalResponse]( - userHealthSignalFetcher, - Seq( - AgathaRecentAbuseStrikeDouble, - AgathaCalibratedNsfwDouble, - AgathaCseDouble, - NsfwTextUserScoreDouble, - NsfwConsumerScoreDouble)), - "UserHealthSignalFetcher" - ) - if (!inMemCacheOff) { - ObservedCachedReadableStore - .from( - store = ObservedReadableStore(store)( - statsReceiver.scope("store").scope("user_health_model_score_store")), - ttl = 12.hours, - maxKeys = 16777215, - cacheName = "user_health_model_score_store_cache", - windowSize = 10000L - )(statsReceiver.scope("store", "user_health_model_score_store_cached")) - } else { - store - } - } - - override val tweetHealthScoreStore: ReadableStore[TweetScoringRequest, TweetScoringResponse] = { - val tweetHealthScoreFetcher = - stratoClient.fetcher[TweetScoringRequest, Unit, TweetScoringResponse]( - "abuse/detection/tweetHealthModelScore" - ) - - val store = buildStore( - StratoFetchableStore.withUnitView(tweetHealthScoreFetcher), - "TweetHealthScoreFetcher" - ) - - ObservedCachedReadableStore - .from( - store = ObservedReadableStore(store)( - statsReceiver.scope("store").scope("tweet_health_model_score_store")), - ttl = 30.minutes, - maxKeys = 1000, - cacheName = "tweet_health_model_score_store_cache", - windowSize = 10000L - )(statsReceiver.scope("store", "tweet_health_model_score_store_cached")) - } - - override val appPermissionStore: ReadableStore[(Long, (String, String)), AppPermission] = { - val store = StratoFetchableStore - .withUnitView[(Long, (String, String)), AppPermission]( - stratoClient, - "clients/permissionsState") - ObservedCachedReadableStore.from[(Long, (String, String)), AppPermission]( - buildStore(store, "mr_app_permission_store"), - ttl = 30.minutes, - maxKeys = 1000, - cacheName = "mr_app_permission_store_cache", - windowSize = 10000L - )(statsReceiver.scope("mr_app_permission_store_cached")) - } - - def pushSendEventStreamName: String - - override val pushSendEventBusPublisher = EventBusPublisherBuilder() - .clientId("frigate_pushservice") - .streamName(pushSendEventStreamName) - .thriftStruct(NotificationScribe) - .statsReceiver(statsReceiver.scope("push_send_eventbus")) - .build() - - override lazy val candidateFeatureHydrator: CandidateFeatureHydrator = - CandidateFeatureHydrator( - socialContextActionsFeatureBuilder = Some(socialContextActionsFeatureBuilder), - tweetSocialProofFeatureBuilder = Some(tweetSocialProofFeatureBuilder), - earlybirdFeatureBuilder = Some(earlybirdFeatureBuilder), - tweetContentFeatureBuilder = Some(tweetContentFeatureBuilder), - tweetAuthorRecentRealGraphFeatureBuilder = Some(tweetAuthorRecentRealGraphFeatureBuilder), - socialContextRecentRealGraphFeatureBuilder = Some(socialContextRecentRealGraphFeatureBuilder), - tweetAnnotationsFeatureBuilder = Some(tweetAnnotationsFeatureBuilder), - mrOfflineUserCandidateSparseAggregatesFeatureBuilder = - Some(mrOfflineUserCandidateSparseAggregatesFeatureBuilder), - candidateLevelFeatureBuilder = Some(candidateLevelFeatureBuilder) - )(statsReceiver.scope("push_feature_hydrator")) - - private val candidateCopyCross = - new CandidateCopyExpansion(statsReceiver.scope("refresh_handler/cross")) - - override lazy val candidateHydrator: PushCandidateHydrator = - PushCandidateHydrator( - this.socialGraphServiceProcessStore, - safeUserStore, - listAPIStore, - candidateCopyCross)( - statsReceiver.scope("push_candidate_hydrator"), - weightedOpenOrNtabClickModelScorer) - - override lazy val sendHandlerCandidateHydrator: SendHandlerPushCandidateHydrator = - SendHandlerPushCandidateHydrator( - lexServiceStore, - fanoutMetadataStore, - semanticCoreMegadataStore, - safeUserStore, - simClusterToEntityStore, - audioSpaceStore, - interestsWithLookupContextStore, - uttEntityHydrationStore, - superFollowCreatorTweetCountStore - )( - statsReceiver.scope("push_candidate_hydrator"), - weightedOpenOrNtabClickModelScorer - ) - - def mrRequestScriberNode: String - def loggedOutMrRequestScriberNode: String - - override lazy val configParamsBuilder: ConfigParamsBuilder = ConfigParamsBuilder( - config = overridesConfig, - featureContextBuilder = FeatureContextBuilder(featureSwitches), - statsReceiver = statsReceiver - ) - - def buildStore[K, V](store: ReadableStore[K, V], name: String): ReadableStore[K, V] = { - ObservedReadableStore(store)(statsReceiver.scope("store").scope(name)) - } - - def buildManhattanStore[K, V](dataset: Dataset[K, V]): ReadableStore[K, V] = { - val manhattanKVClientParams = ManhattanKVClientMtlsParams( - serviceIdentifier = serviceIdentifier, - opportunisticTls = OpportunisticTls.Required - ) - ManhattanStore - .fromDatasetWithMtls[K, V]( - dataset, - mtlsParams = manhattanKVClientParams, - statsReceiver = statsReceiver.scope(dataset.datasetName)) - } - - def buildCachedTweetyPieStore( - getTweetOptions: Option[GetTweetOptions], - keyPrefix: String - ): ReadableStore[Long, TweetyPieResult] = { - def discardAdditionalMediaInfo(tweetypieResult: TweetyPieResult) = { - val updatedMedia = tweetypieResult.tweet.media.map { mediaSeq => - mediaSeq.map { media => media.copy(additionalMetadata = None, sizes = Nil.toSet) } - } - val updatedTweet = tweetypieResult.tweet.copy(media = updatedMedia) - tweetypieResult.copy(tweet = updatedTweet) - } - - val tweetypieStoreWithoutAdditionalMediaInfo = TweetyPieStore( - tweetyPieClient, - getTweetOptions, - transformTweetypieResult = discardAdditionalMediaInfo - )(statsReceiver.scope("tweetypie_without_additional_media_info")) - - ObservedMemcachedReadableStore.fromCacheClient( - backingStore = tweetypieStoreWithoutAdditionalMediaInfo, - cacheClient = pushServiceCoreSvcsCacheClient, - ttl = 12.hours - )( - valueInjection = TweetyPieResultInjection, - statsReceiver = statsReceiver.scope("TweetyPieStore"), - keyToString = { k: Long => s"$keyPrefix/$k" } - ) - } - - override def init(): Future[Unit] = - ClientRegistry.expAllRegisteredClientsResolved().map { clients => - log.info("Done resolving clients: " + clients.mkString("[", ", ", "]")) - } - - val InlineActionsMhColumn = - "frigate/magicrecs/inlineActionsMh" - - override val inlineActionHistoryStore: ReadableStore[Long, Seq[(Long, String)]] = - StratoScannableStore - .withUnitView[(Long, Slice[Long]), (Long, Long), String](stratoClient, InlineActionsMhColumn) - .composeKeyMapping[Long] { userId => - (userId, Slice[Long](from = None, to = None, limit = None)) - }.mapValues { response => - response.map { - case (key, value) => (key._2, value) - } - } - - override val tripTweetCandidateStore: ReadableStore[TripDomain, TripTweets] = { - StratoFetchableStore - .withUnitView[TripDomain, TripTweets]( - new TripTweetsAirflowProdClientColumn(stratoClient).fetcher) - } - - override val softUserFollowingStore: ReadableStore[User, Seq[Long]] = new SoftUserFollowingStore( - stratoClient) - - override val superFollowEligibilityUserStore: ReadableStore[Long, Boolean] = { - StratoFetchableStore.withUnitView[Long, Boolean]( - stratoClient, - "audiencerewards/audienceRewardsService/getSuperFollowEligibility.User") - } - - override val superFollowCreatorTweetCountStore: ReadableStore[UserId, Int] = { - ObservedCachedReadableStore - .from( - store = StratoFetchableStore - .withUnitView[UserId, Int](new CreatorSubscriptionNumTweetsColumn(stratoClient).fetcher), - ttl = 5.minutes, - maxKeys = 1000, - cacheName = "SuperFollowCreatorTweetCountStore", - windowSize = 10000L - )(statsReceiver.scope("SuperFollowCreatorTweetCountStore")) - - } - - override val hasSuperFollowingRelationshipStore: ReadableStore[ - HasSuperFollowingRelationshipRequest, - Boolean - ] = { - StratoFetchableStore.withUnitView[HasSuperFollowingRelationshipRequest, Boolean]( - stratoClient, - "audiencerewards/superFollows/hasSuperFollowingRelationshipV2") - } - - override val superFollowApplicationStatusStore: ReadableStore[ - (Long, SellerTrack), - SellerApplicationState - ] = { - StratoFetchableStore.withUnitView[(Long, SellerTrack), SellerApplicationState]( - stratoClient, - "periscope/eligibility/applicationStatus") - } - - def historyStoreMemcacheDest: String - - override lazy val recentHistoryCacheClient = { - RecentHistoryCacheClient.build(historyStoreMemcacheDest, serviceIdentifier, statsReceiver) - } - - override val openAppUserStore: ReadableStore[Long, Boolean] = { - buildStore(OpenAppUserStore(stratoClient), "OpenAppUserStore") - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/ExperimentsWithStats.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/ExperimentsWithStats.docx new file mode 100644 index 0000000000000000000000000000000000000000..5e3b7ca13dd292de70c6a935b452dcb77a804279 GIT binary patch literal 36912 zcmagEWmp~Awl<2pdvJGmcL)S`w_rgR?kqgGyF+kycXtTE-2x;K-2GeW?!9;SKIh!~ zr+Aoij912}nl-CdDa%1ZVS#~x!GWcv^JrJ87R4ungMp31fPrCxM)f2B_Aci3E=KB} z4(84V%pP{OP00#MYochM&t9-oScFNvB~Y=;cO7UQ7~}CJYcg+mb(UF9nB%k3?|g~Z>V>*}nyK|9Bu@+sva|}wAxnG;Hoh>QTJY>k#goY{$?Or$55d&7 zX8F9E;Ra{js~zAs!U#DN&(jS|)_wqsp{a`1#2^_Cfm0P4hYqVLnB~duq;ODIJsPFi zWB9Z`uI%E}-VAmJ~S^RmoLt(k3;iO?Rvn-*?-t|9%|xG`bSxz25hp~1;g!?Av? zuL#9s7!iQ>?Ymtsv-^Y=#}Q0@S=6AfTq6{7dVn>=|xB9>IVlN9cIUMktx7a6}J|MG;TU&(LZ`&gAQ^#PI%&HqeTYLu$PzF9-EaK%vaheDxn zZ`$N(u{}_xc(uDrMbbbUr;qsXY|qqUF|&YRnW5M=Nb94{LSX(p)Z*+s_KU-T%>0bMO!(Tok3w-80v5%XF?_HZVqJgzMZ zr~R=*`IBD71@n&}2_-c{56WwpsZNYRUdu+olG)b1_XkXr6jNGW(-y9qK`MR@GsM4G z>r&5jn_`!J;l^h5xX=Dsps>$~YF41rd=^w7bWnlJ0H(@L00(ClQ-G8C?~^<`VM1|$ z6;0~SM`~U{GyDn-PD+*@{3zms3|7E$+bt)Tg6%{O_te&2p`C6XgB$Udz{r(@@CHv) z3#4gCLI_D{{8@lm1fmZ1>)J=0^`{&udcLaU;Qq7T$GJ;tOMcVw-bfXEB!t==NZCv_ z1Np@;eu}|*F3$PS(`4DLs>S&~#MRIhRz7QrCeXH1Ad~K6(ftevAP!HYNN7MWYbhoM z%R(>B2M`7^* zXkb3vx}Mu6V6doeWPW~koynQXU&O_%m7^B(rFnvvCe;L(wULi9;x1$v3ZI>HcYR^S zmYF1rRU(!JCEG6Zjj?;`%Z~=XxA(8_mI)c|c`l&vjx13O>E_%eUZ49f3I5ra>$Nr9 zV^Cjgp}@e<{@xc82Zuk}qCR22#){VY!~kXB5@7`^rh=CcxF|L&v4LNkkkv9jPW~Yt zs*P?S}sY7ySsB-8s zY|SBb14pBo@u~$FCU}>0E#>NQZ}NtZlNZFW4$evpGcKzrqMME0#T|+cK3|{BMWueZ z)!h%CCo4BCZ>FiRDn(R4zSMlG@GPAX;(EV#bEK1!jEo`;Ve-NOHQ`xdMY|FvjjKRP zz-HWaKKTjC8qwS3rrzu)dY+}79GK()}R9cU;rLZBgLY8)=7%>{Hq` zFx-g7;|5Z-`ZBGs%jlE19&NFaJU%YS7YW*^v2PT~)+T_yYxG?0fOW^X*4u_MfjAVo zTNJ2A0rBN$97+0B30PgCxWwjkOuxEuz|}7vUZljTOGs_-h|BL!2idilNupMSEA8l% zzSFb9Qgsux6(4q)E6IeahiNENh@L)@5HOh1ooXE(N-XIbDC$LH=W^kryHV|g0NcR# z0W{D_HbQvH@7;8FN$x)3zo0Q+*s&dMKe!4Z9=XHt0$Us4iBnJDZC}QsCWr%CZMRaB zg{QQ(Cke=-V*y>Yu6CfC)9*85NJ}qvju#7fsFl|3@{Ub*HJwR1=0TG_?nKc zio5q3ddE|O>w6Gy)5lO?vThV`){`dKUa4kM9|92_h1RHKlNs$z^+jQC*^-L(l!A)G zvU7}WJSsvVX98(=l@}c~QS94%CC57tr3nM)uJ7F~pVcfxIENY(T+=9V=Tp2QFN7#e z#paCdvvy?^wBkZK^p@578wvOIH8HfnZ5l&#V!RPc=D3D`ro69}4Hs=!U$Cfe1K7*C z7}zqd3sdSPrrL}Vc+~|(z!99tS-H0hVMW7CAdhwtoZ2=w2VD(hy?(pMh#=Y)zLv5n zEKhlO2@5hqjfD!U8WP6pHgFy&B=ETzDEt|rM_7EqV2R@vN{uSfvEZ)9$PWjEu{kL? zU3@k%v!H585~Y^|Aleb;Y7K^AS(1@^WAbMoNLPwmWiHK!?5YhPxr|jf0_jXRYpjmg(OqkI7q}mdp--rF`PbFSY2t$9LJwd)~8nmlhnXAhN^jDZrrMDq` zjibDwD=2^-r+++dfTod%c-k78pA-@MTsiQaBzzxTppJI#YDgs@9*Cw>xfI@2GK)1N>#&-*kfg&T5KT0#n>DHq_c@x! z#)jp{P5rcZKa=#aEYY7X6Z};`;{D-|_uME|A~9_f_LuJgTLxA;QCKbQ3Ha6Z4gsEa z^lT+TJmh!VTl#%-6qlZth_y6tZ}kNeYO6{_Q$+-=9z3U1V^cRj9##|pb6l?Z9Pg+K z8jckXqoOi48?I)J=Y7s>*`CA;Ts+?)g&xYL>8QTUAeN7u1h)uQ27Nx&4!Y`VfRV?c zI?a&8j$UnI7!@d>asVGZSg8$|iSAQu&^DgaXL(P9U$i_7ZlXA+Ac9S&0D~R022X(2U_#Iu{KuvC=MLiU7u=t_i6k+l zAXdE3XRiqTA&FSU_L1*?eWC84m#!)D36Wk+xRu!7(%Ud&l-Lc}yW{rFrLmivx>Z}; z6u@I>{1C_+1%Zk+7ou#AA!v!3dfeL}qakKfMGDVf+sECtEGVupds3JDsq*kclEO1W zT^rS4JpyG@zP)H0c6D^&4{5c8&-FaI5IT~x327#wxj8Og9po2N)vcFZl{VWV8yU`h z+lmdEf&J)Eb;}FJ1{7RW#=B>SUvKWs2>o7Q4G}CF7YHSa_XD04^rJD1pfvBYAO|?^ zjjhJ_EEY|{B;9)?QYF}nYO~aKATLWeBE@*A>NC`WZ9?8n+3;Fl&n69eDZ;yW!$OGc z2}hL>?(z|7+o()vy+0P}KTpF5Af>Uxab7LeJTP9D<6XU;t%2fu2>QnI&ss-U;0Q#r zfPoomK!c(FtJcmgp0?)BzZW&oPC0Q`y56^^=SzXn^LM+rV6c&Cd$0sILKE+LR*J*nOG$M(~d^z3V z8R$XoZqqx{d@7kbz3Kn}U+{bc9u7`DbWd|q)?VyiPBTT8MgXr5v2PDgOJ^}9A}z;z z2KNse7age!9Z!dIKW{ohL-&q6U+M*4?cUlqLs)>TB!(#^=Q9I`p{e^j6KlsU6)zLV zmyMq5wmc;wB$a)=T}q$%!lLTmuB{q$y`L7=CcNAuMBW^<0R!lF9eY;?Hy-a!Dn>sU z-G!Dc4FH>ji3co!D>)(vR`q8<(=MNDDRAf2HhL6tUZB5 zxo`Pxo}f;QoIGy$@_v005uXw|(b@!UwCue3rTvJ3!jyj0enW4Fw;gjAr^oISd)5sP zcps2qJywEEyK+xrGM~QEtM0=Lu`I_9qYc``g&*GFE*0WfAKc6J#*0ga{&OvGrE^PAsLK89G&GgxG>1p& z_|4bw3@B8cYrph{IoO>N)wh{V;8PIZSMoJNd@XoDJq*PNxufk$4cQr zN#8I!pRhTgt6TT=$cfbu4T7QiLwMkvI`GRjMRG1}tK>cn0yOW=ONaZ8&XqWYrH`@b=WS0*CRgfo)`RJm_d#!+2Gxr*PbYJa4tI_( zBeJ(wA}43USt`;^1`G4&0|!@EKTijovp5+-+6arZqTdD%Jj#i)u4pxa5LdqL-&6UW zlPoD^wxmW{LwyaiVThJ{AL+9MjSVxCF)ao=U$hLY8~Y@y-#f#mY{$%mQ!~+l$n$1Y+aS3UfLu zLbj;@;5xixdZK8GmpEv_iJj1+OyZX~ae;B2(1m%wCqIEEasD+4wL=L27yB!|x(T0( z8H&XdakO7{6XIXkC!7hOR8mkJ-5;sCAhZw=?mtrhq=G7=IkP77_%DJp6$;P@!XGM9 zI-$+-|A)l?K*f1oR^tSwf};K|%#8q~M->g^6|3<(6DcCoe@SE_g`@FAg!@DFe4=|3 zTIcVme-9NpOEgZqb#!AI=I~4EE|7K;Yr6WLJ%Ib^`00`?b|m+HK#&SZrAdk_ZEg1G z-tue1)LXW5CY02kKXB|=8JVzsWsDMH)=POl8`^lfacwiOAMzG^9$1=m%m1|Oaiw=Z zJeOOu<5BZ-L0IW<|6uIP&VBTjh(XJZBuR|@F7t|LvVP1NS3LgPlLL|jljn>v8smBy zQP$SbI_d2x&}})(9eHT2o7rz9SH|wxDdDi~*I)#oW;dWZ7Ol+ImsYU<>cNTe$no9k z`If-qoE=XGOX~4qJkHF-cT*lj{Y^FnH)6A{pnUu-BE^Gn>x3@TlKnllhqrxSm2reK zw&yEXKOgtA)w1c*w%5Lm_+gb>di4RPj>{W8AfZO+HE?#yj21HkUtR~#i z!#iciGgUuKWNtqvl=DE-Ni3cz$nul0H_Un3h$YLNEc#_hVrWqo&##!(d+wSUEgmoB zia(%&)=xMEKcCUZvAxH+S2XM1^ubL>*UWpnrxvyE%p%X-T?iip>*w>e!$eMts9%vhJuI^-LL(+0W*B?7* zPl*2cp*g?W%yl3cD|>Ke2-(t4iAOzb1~%-=b4mgHEuLp*Qa%47N_WQa!a(A zgRUP~N4p0SBs?nb3-~@GDzq|l_PONC^5}o6j76k#s0I&mMn?0o8ow!`D`rvX*pb8Z z^?_$2GU3xLE*yXG3e~}!>L4w_L?7|}{PA?4=S*$hx8!@y-l<^GmfXe=psajHQ{eum zV*er}SI3K^C-Cky`EBv!aqj2ykprtq=WDA-_ASfv z%m}pCD;VlZre~`#l+jj4OX|oC*@J5Q6PNLNa6##*vong6!UXk1?rkcHOcX(Tr}}A* zYMWdT;A{25(=%pIkB^G~1()u#hU7yd=>sz03A+}D;U)p5`2(^o*}LVVi~xd)6uFE! zX0DQGGsO<~gJAJrS4TOWLepAowXTAy?`nxrz?^4}pMS>nL0{+<6wi#Q7WI%5`ncy5 zegWv1HsvN$e;J>+58<084x4m}uQUiY-%43CJ6M28v|P95MWG1{Wd0)1(wf+-LDhnx zJ7|ESh1;fpvc$v2uN=#`{_Nz;SCH!c$g$uBGjEML1h+W%i zI52NNPATiHZUv{uL&P@r_`T|5M~igf1EZ0kzMoqL!`Cz=p)gV!nHgC zzFs=f8+uW<>+S>r*HUQ>JvLUAxqyG(=HPy8sRugK5Q)0dOFgR4mdMMy7Kv#Qz;%C{ ziqk?tvB51n;rQkFitP`D&dY?}uj7pRYO%j2F&&b>;IC>mY5fQ*K`TvXb;KFohCvO>c+OOV2GE(gWsDdAYQa#B`~n^{Mk@1vm;9pIOJY|k+m zr{au9zC>6*WAH_Rkz{9yh~5WEN9>s{iO(70Kn@!qtCV@`X+Ch}bjQbEd?c)+7b_4g zJ)=EYC5w2ApS#h#Zp=>`f)p+2&6YSgW0);@uPT>LU4^5#uD|fj<$G8e)o0TmUJs6K{J+v~DpG$WlgG9L!9q&e z8~c{Q2=N5V$>b=zgU_ca(Em#l0|w z(s?z@>{*muqgg}}Uo*BFKmKt(VU;(Vw)VR~IOyJC$Q*Ix)G zOM2kysxz}kT6O5y+Ltb==*Co(W7H;;^R_m6ATG-g^P!4YyneS7QM1y|CZ+IXU3INZ zrrEi}xTBb7MON2I-+GKKfog=Ph4NLJN0vkJ!xXO=`(7cUg{@^ndZAEB(QOv_it{S8 zw{`1Iq(U6dnCG2mMRmfla>AgtHs{AxCD+64s!EF1y@Mk>9Xy2CUNTeEQM7v4@6EPn zF3TLvEL5rc42X}~OEHBHupQlb&!1Fne!Qc^z?YVlQ*~=2^PXmuULj+u zu6#6JYAWd!+feJ>T((ibyICnCy897*$CvX~j$$W-XVGU-WdDUf-GZ>bU!X9sN5$0w zhaIrA4wZ0LSDEqt^QcD0m~jH*RcXeRSQP!4slE`lmjnZiei;*3M%!GKALmG}JwSOO z5qWlwZSrLeEsu?}0WS&$Zr9@8Fc6Vc@A6dmO;`yn=5;c<91Ayf#BEt-AzU zR4`m@toFr^4-PM1OQv=_5Td^;1c9YdS$udos#A0hY!AX%$vV-vJu<*I0b0y3VHVbN9%==ZOgm$TM|KR1u%r)pva632LIH}TT zM!C@`yidC;hTBhkpAvF8o}xCCu?xdCwe_~~enfX+Dmq_tyV@?fd2C_3!gay>(80)V zCl6qF%{j*4p2IZq8H(cM^VBou^O*LAlLViC=N2gLlfAVznk6U?#F{0rDG`S3s^j@( z6SFydI$w|b3(CwLzDwco>fzJ4x3U974PnaH%oyiRf1bRl3y6BSu6T3!u5?I6{jED` zd54dd)weiZCiF7sUDz|r7GHR71J*JMT2!{>M>yOd+LOQY`)^W1E~V>q!a~!WkDI`E z{p1}%^nhF?WFd|GN}vP6X4@V_>?)P3!UEl?+>3cs z#3zZGT8?{@a1v)*66odG75%LgcXK&RxyITLqbrjjpfg98+72GDNw~le z!6V>&4BI8bU|EBo(DZ`Mm@B$pl1x=t>rl zlR_IM_KDI&eF9MhMv-_lkDTVDca>YA$NifJit=APihHuS;5#K3%ILMm&PT&6tn{UD zv>;1K-+qdzU$gSHw@HZ_^y^g}sT}q(sza$WLLA|tVxg!*&7Z$MvAwgx@ma+IA9G7+ zPNW-c?LLdHrm#efkvCdsgp=u>rC*p^K0IQ8NSLwOb#}!9_YB1>2Duu5FN4#rH&9qaT5fZ~*-Q#js6hppTbRm;=bE;GntOF!Ai@*)QWHUC zUS)LUfv2+(vqGJ7D?KR6HQ80gVp7wG2GX_g6K;pc@?t5`%V^EAoMB-tQzg+$J|Um# z81g&@WvEU_P;cbHNsz{I+q*3LXwlJv_pgw3nSd)liFGBz zo!R1c`{~>nAq{qWwY?EZxy(Qpq41KK391>Wtcs-Z{GFcAsymVPsZCBW8359 zL#-d8$-HkDA{8w$LG*h=M~XI-VXdHhn$Vi*J1WG&47x|IM!48@J)=9#>MpXBzB~yH z4Y6QI54JF1I(Sz1A`%sV){5(5vOlR7Md@>5f|;i{7hfBrDrrjKsOs?5igBM%C5Fwe zzf6EU5gMQW7$iB&pyqdIbfcdLM){+*H0;NLU~Q%W4Y1O8>1}ZZ1lvCbjqydE40uoq zR>JRe>(h4ojsd5P0tPNeU1!3TR|98z&48H*Vh zKa)3Pk5<;irSmPZdheR&>LBs8gU2W`N^e0X5_~YuAX=%QiloaSoG@iOzcLLU!m8g{ zH)N#FQVif;#e#^3NEat{0#k#NL<$=kMI^_W!^V+_Ur{t$gobc}TMOj_`d zqKwjpXmx4TwRjPeZsZNjXmJ8M(V}swEgs9Jus8NwL=Jy0e5|Z91UoEgA5BGG9_gS)0WrLMv}4+h}Xe|8@;)m zbn`v=58@hUXBkwn)|z#dw)}oI@ZJJg(o-1XtvkDa8xTrVl#|n2uVSpzOY!aNb_Q0` zIwgeMgDwM;iK z%Y)qEb{K2FbU!5M*qR$+e%#H}9;WHG${PE+myBo0R8BQ5o7J#J8pK-yY}Y!-S}?LL zZ(*PT4JPthE~zFAn%NmoeA>+dB~AaC#QQ&!lBf2WZVoO7`NEws4u4anRU+G-D`a6# z+z;|abG-BF#5k;!YWh9zMqq|^IIna!p4D(k3nuqM3$~l}$2b#}to$NOvnkDVxVg`6 z)^IwKkYTv<;uqcD^Bu_SVa`V--saOfo(@4pKnF-i#XrVV63n>S(w78td1+EE!kzIg z*{?mQrgb8%|4_m`N;+MZdz#E=xz9$B^2kQ;ABFiu2Sl!-S(sCQDs=mw3NN#+LZ{-l zD!IK>^2JU{-#LvrmFmM@4(5Mj8l9^ye8;ixsXipphtgNRs1B=R`|(+#b}Kt3ev9b$ z9s0+^)4QZs?+@#9u($*RIRm?OHpi?kvM{b453uoA9)$k>m6E5WHamLEVV!8ZO$5l zw&D#!-fC92)=#xiH<}B^@GTn_I4Ql}b{LF(AyjQZgLLi29Wp~c#y*Szlknfva(_@` zfT&^Re($~~+cp=GQ;h$hb~Bp*Q44VYN&SrqGZN+hpuXrHgzpT`HQMxPd*5XYe^gc8 zhhaaL!^jxm{)yfq?T47ut#zlr$oq|DA5^vO5wu!Vu)g)X ze1rX=))vpwWn{S370@Ph-^kI9kWKW~{$u>Zmz(>g-L$S^sFK1bMs1XcpV5H2q+#FX zJTdxJKFzrTKZUOBs-p|{=7Ts!%ks@RFkO|CCV3?ySNDN6t)?ziqxy`mTsMX7LS+sV zwk5(T8=4_wgC0zA0q{5Cwe#L&XjI2wRG7$%scF17*mQ_k1R7yX$?Co!kY~VrvBEY=E4%wlmazz)LH%`I z40vi&VG0Fzecj<6BgUz)_&h98!f%yfwvMSV7gh|vJgq*(qc~SsQXbRZxx-oYBCL=x z*Z7Dn$%!mEH|}k&bJSHIR_y9u4A0pSpZm0Wlm`hR^m0mNfu@ki)pPN+OfiG{-JRqd z=NBu8W)6+3=sC`xW#t9T0Dc9VERir1Ow7b~JXD~PF{?}y#Z z{1E}7NyyGQvgAi^2B1ZW_ReXeo!Unb@Bj=GA%|1=qz{M#fi;%}2(cK?4Sc@=DWW;zZytAHSrn8j9a{I)r* zM8pNS*!Ti5nI`7cj)b5$%Jt!E`@1VAhv2R2G)$1!Qpt^2GT7R>GR&b13=LTwv0@i9z1~7Usd=ZB>Hq_(dP6f`Sjo*;Sju+&Cp&Dyp~&sg51#nSa8tg8N#__ z0bX;K{V*Z^Br}#l&@Ca9IQ*bp$2MdbA(*&-7`O>kE2(S}DN890uUOTMS!g`Oq$wN& zYnLr|4s1?qYEw9lGC%{F#i1kC;sT=ciFPOCBTIv^Ac-^gnBHV9tgAfa@7pBQXaMIN zWEl7kGzhKpH=2i76|8RP#cwnghg+DbVGgb3iPb^G(w6eixUF{Q^&a4xFtO+2WWNq? zKeFxoT5L==LG43CqeJTii-+t*L}MfE1jD5a$Ndg{1IyL6UPCO_OKIUJJ(iTzrgk9s zmFB`ZgnOtL4ok0lDW)Oqse9%$tf}I12dH=_<)Gr7z`>3N*tSCbvv_v7`hOL#w#&9V zZE87@^)H181Bm;_ggX-iG*i8h*2Zcyd1W57a9(AE7!Vrtu+ZBH<7{H2k`C&!gDNLJ zzW%t;fDZK!;I;1t+zX8QED05hN}3Ung6{?c!^ZkY<%R5P=OU07yl?OTP&lmJ*3YjW zqt~(P<;aRgM842%q;RWQa+_Js>qW?eejJ8(P_H$euR6OWI0gHe_0`Q?&bLG0q66hz zfF=#;aNW0A^fL`BZK;sbO>G=daG{_d|2!;)Va>6`dOgRX3#WOyrSG=07hxIkGVBa} zi=w+E8a?bRe|aeLiDEi}d;`zu$&PEDFPHuUcr2n@++&kH|5e4kxKfuRJX;S6YtN7| zrvop#wOD#?Z(g1>{lb9wW3hTHf=wbhf3>YvQn{md|FiC=z;6&&h}7MO-u+6llQUor za+5WY(xeBWrnnQC-p&_|o8(tEJz@#`S87sp+m1U$0js}x7yx4CWi5H+2TR}wJlQjc z6w`)o1mn+8Fwjk{rNlVjX1{o;YeOQ=I+{Oes7J5i9xV9?RB)$l(S8U1LZCUO3x7xl zvk!l8{R%huto#e(2JL*gh}l9H5dYA$b)=a6Q1%7uy!BkFx5;M1<(P##!< zwNf1{Nl~C(Nz_I1T)p(-C>`6KUfFcLaP|v}Nc|@2o~d!G%A9^4C-BibLhc6D!2bby zuk6@?d_II-BtT3Id88sV~da&R-vg25WAMO z{R9_+LGUgm&ulnFL6zL}E?BY2fw!L;_A~eXxy-z71k~VQTnnMZ$DB}nbo0OfDHLD{ z1z5J)@z2L{d&xPXHlQoh7mcl&DJi*U8LmqFkDH?pN=780x6s?VN+aZmU&<=V={BGZ zij@S*6$=;QxxedFad;%vH3dqA5u;T8fX`kut;k)Jpc4LoroMaZ5nhwb;pigvcmOMe z{eV_{y*`Gyf|tjh+r0@GPg){4ED_Hw3lY91EUm#+E<;^dR{zD}`l#YcF{Q{sv1Oe- zvKkcjGhU7ROQ*NN zdG~{u60}GZx5bKDQ3IPOw1{ulRuWwe&opRM4H5W*PuYki59GS8Y}@kax?p_(@IBhc zZ6j@nsC0WtZ0pDi}&ON ziM08ki+R`O=aHho+~I#U^M9?4TfxJ}VIA7>T@+A#^8l`0+n|oJLyG`B?=L~0!qBTf ze8D~4)$$MNy2wlKH)JPZnE8&p2qU1q{ccc%4_26jy-I&fEJ%MT(wxpQEFClRvwomO zTotQmiKK=B0-h3Tsos~n>n7Bhi4rcjFJ`m=A(P%k%4)GD&Jq1hLaU?jaYzkpTc872 zCHVg5quE&n4Tw_Z9u0W0^|8BS3E|6bpB5mzUEnrUAKUaO6`CSxXC&#m)30807Isp+ zO&Fw>4HZ^%z!f>^rno<+aqO$;MRC#!B5O>AJT$MNV0}B-NZ*JCCgB+-A+B&=%r13T0Re2hDKj6kP+S8a>Q6?>hh z6-_Ct;QKje+y5wC!^ATTiI?hVAM~@?F8`Ghxk!vs zsq-V|8=PVg^Z9cq1_V{zCGR74r;4b7RZENm^imr%cxPN;4VR26ss4IQisx?8=5hjF z8axu?Qan3HDFiGg9!_sRlr$A_F$d}u1cUJzfQnjLzOq1mQkOT9twRmgkxhd+Ma|y+ zL#uvuYBZOz@vbSq4rFxv6is9Zi&M>sbNz}3u}AlL6$V41rTNfsv7jc*8Q??ZB$OsK z=zf_z_C>i-B|O<`ay&5n?4gsnb!bwtGD=$qR(r+6mWlBeAJ5`V@}oJ%Pp*=6ePaXW zrHOHTR@OT9?8<=Q@#k3|c1r-KnL?OdJv&QUwB;|Uhn^f4dQ6t) zM@YrX7-=KM+t~r(eWVH?s$L+cq9#fD__B2mc5-;12qwN}xhO#-y z*a8w)+V48WIP2KWG*gZrQ_}tQX&EM5-KLTFKNcA_nvi+dmcOUcEM{Z4>gq*aPE>Bj zwmj5M7yX67a7@e4Fnnq|Sv|^5@D(1QOLKNiD~;UM%lu7Wf#R;O^Sj=BRo1)c`apt8QWWz{`GGi z+VfG#&OAwCf*}TnOC2hb)B5{bBkk0|!O-zKlIUT>c@j5=wwXhukJyvy+^>Dy?1*Xo zB(nrf6ZTjU@Z|(}B{NRJ?kv=CUs2<}`n=Z-gona}qehdDYc93)1}~xTw-@cpd@3-e z1y;CMS?D)kqr)!`Tcr&B|K zCdE?aZ%0hX*xSCFaP-%Z^qgBA6#!+jC_F#%y0Zqi(zuR%Bz0O_1?o~!Wii~+?Z<8& zjA;!!acDmrBq44{(@pDa<@~}DRebth0(x}yAF%45x@8r&^7@x^nF+(G-J2vr){)Kg z#Pd-p#GnHaGDM+S&Z)Dqoj@Y!)$u&REk&TOG>?N3sG^0xDT8nB2jz*gO9O;InpTRcYS1rP0e{jn!$%pVc z<`WAs6b->?#=JwOU!ES!tUE5A#G(1O3PjXDRfP0j5h+%vXjWUhRs|j^@geJ{w?v>| zzq&39UXY1D(__6`4n`W!_%^>Jv`@xTo*5@;euf4Ym!x37%Yd;*($@iFE1sIUyAL5X zLsQ*D7J6QAFhAx!55+#UPm{Cit@h)p^iwnmb44G}g8^89W`DYAGgN=?RWCD&2j-gPAZ+_n9JT$YZV!MIkHbw{eRB z@`FWZ|7n6gk*CSS2IuUVs12$Y9j z@<{fl17lR0>78=q!Ew>8FvFxU31CH4g*qo3LPGnE=b-`|M}g%v1i~M z9~T&ya}5j_{y)Fl*Rpc?BxPY?ZtC*qC;Yw!sRh#YCr=O9O-DmYIVoUdV-vp97!bpT z6MGlwxA(#o74rre)d@!*=vzQv@r&mAV~obij0T?o)96Is#kFxbkD!Fzzxus;cy>Se zwrx~#AKz^uy>Z_k*tY?f1*;cxxBRZojP?LDTk9vckvDt0o(+cGZwE8`rFJ*11$VN6Sk)c;_t}sEemv`2_R(rQG z+%*%fPM32QPxZ?*e)b|XJXE7v+BUwxsPTfbtvhg1uopWj=vfuFne-r9t3 zVb23|TfiC6&r{f_v#kBrqoCxC@9pD+bK*#DaAs&r>b{p>YnS`lzO&On=FO?qjn@g! z%3?yI(xEgx3GY>{kx^*QYF_Bt(9(CmYUIoH*S(APEHfhlHTI6Y+j#Mf;S($#_GEx7 z9~zx=-{j*A+e4t{@mddn2T-%LsA*mG()#LT#h?Qtxym1{ay#p0&2zP5b&(;Tml}Eo zeD2(|#U;s26!_rv%q;c&#qVut!=PSJ$ey@=zhr3b3YbdFN4WM{FGM6j%ugct=K3tK zS$WsdQM1M5hFY;uGxkDN)l-QfAu_qxvEb`u(YAbI*|9+G&CX9GHzQJn%kKA3yJm?3 zTQRcm(vfwuVKk=E!;-VLB``fz_E3HO{p#b(gO5|&>+Kdv{arfWH5=Q*E3oe6cHq}) z|J@n;hQlMpl1g}hmgZI$&ZGTZyN5QBz1f9TkNje@*}YoDOa&I_^s>m?MNNy#Bo5$7 z;g#92!9AWQotO^kXs7LNjQn<|6_*N^QRJo3^S<8axmHQBvqwZ*3FY-^#HhJqid$!W zYfGu5B#0!1rGi8=Hg@9X>1pSo|7PyU@!>5e<=F2mC3b1=jez9ft!yZCYR${fCr=Jm z=#02PggB+<=a($~dc(qjXXnR?!)uz3s5%J(K*cc=5h|8E3CinR!^Tcq!MMB-6YkGy zU!KY)ZmPxuRsvkW2$l5+g|(&Re2mikbXsXPyo!L@klSr$D1~Z+U8`D7?uKa0nI#Y0 z-qQ+l-aXJQh@?Arqc;RJ^kW+|ga;bpxV;ha)+T)Ie%O&g;_9isotap@v6HFG%DGMN zFv3|IIy~9E`N_Nw%~O1o@o;|YIO9Gi5t#W}yJfF>t7kgl2xlwBQlk{PVXXy-{>Ted z(AnJBYN;5}^)5(wsT%HQnTZVDpF043D%kbp`Y>Wx9-qtOP7*^{3hagV+Amo+EO{~L z4<+$re58WxGyh()U~dG-|DNB<=zv^p1hIjS_@*sfy=gctG}IUGliDAn1{hJROGH7K z8Hh@Xb`T7&`AA9RlSA{4fndiYA-o>FWixD@9-Fz@=>A|=+rD{*XD0Kcq{Z@7!<>=l zkj3quSlWKoD9WLV$+V3xS18PI3IKsjghgGIQ84-_CyAHZ? zjA`Rd_qBU98@}bf^^Co<fpXZFzWYiggIyN_2bhse2uW#js|7FS$WIuu!pnCjSBa9h_d1Xa~gY z^YOA~FcdX)&;;EoXoBaM57qAPpnqlm4)U0?11Bsl z{f*N28~zWJzX$vs<$qU!$JGMukoIL2f>(al9-I)yss#)sC>R9B^$)FoNm_+CVnPRi z!r(z+Hh+cn0_+jDS*4nO<7`0iB7OUf^Y?(id9Iaigr3(U-votWfWm%TL$PtHkbOkC zy}FEf3fU*y*Q0)}kxlFb1NzMSF^Mp>Ox!?@95Z2Q&dksor|cqM8#g>Sjoiul>je_B zc~`{FR7~v@m5Kn6qHMN|-wvNoL-+Ty$NTRvqX=Y0JSKpfZoF=fr~GX`Z-+MDj%;qZ zsz&yB5KG)AP;p=HJs#jroV#)3ubq0KK*2_hHdUJi^!=aM%rx?aosycCXSll zTG=;L6k;{onz|uqu6T)!G^>1VWA56yxs3JwId-`4IPvg(<@(vGZc5*YDC{akt?iUI zYuX1r{rSec&F6)$t;apYRHSNg!r*rMW?(FKLMhYkoA2g#|LHmRq*Sg`hnoYtT%hE` z+}TX3K-;?bDaH8uQq@+f?^^r4(ojp)&#`X+J!jDK>ski!wBK4rjOl5t=jjE>x0mf_ z#%hs>5?CmbRe@jFXJ@#f3cFss8+dbk?+&BPgmbg86wQQlvdz4Y=Oqw~-OBrZeS&JB zfI4`7v;-Sf%7t|f^jRj0^S&^{3pOWZ31~DzvC75yX3te<5FO|C1Z7nMh${{#(Lz>I zq7W1!^DvaPvLroTMPAW3MdjEQEdP8ZLy`5~H?+Z0ILo=#MUY20Vvg{a2jLvVLJdrL z4SFeXD}bM!q;%cJrh=4ME6Ae~eQ>WkX!#5+tV`^%25#5)TeKG3TladXa#r9+F^3!461Q ziz%BZxeY~9n|x4Ch%QIylyE%P6qyxP=u^Mo48>BosVnXna9y}kblW`<5kAbze16&E z&-OG@>g(Q16nw24MRs*s@p*WDj+GM5+y`FizRc~7*FQIk7;+QJmoq=NuAK3(5Hi`L z0&eFy(_=I)x|K#ew%dT-53TDtALEN02PEuM66yr0?emGH)2qH8PVpUTu2kjBTutLP zK|fO?9+@;M@hNvrkhJhAa~#+9?p~fZ%Q?7)q2s=1#l19hn?^khJ2o)kVf@uRSyb-i zP2>cq;>xy}wl{NyQ$yoW6tW<6n&cH4mVZJQ6ANy=fpZ)~--RGsfKzdqh^bLygT3+i z5G3OEsde!kfyLI9+FG7b(1_q%hjPQf*&N|jiTn8Lhpxhoy_B5pBxk&7)1Is8C3jD6 zM&LGz$Gd)btmFAQPd&k0kLU|~eU#w=$9kbn7yU;`#f?RepRJwbK&SW?T*l2`S*f|a zMTiHZv(3i;kFa-uu58=7g=5>cZC7mDwwtpruH;vIA zR8bzf(|1*aM+o89be`4e7T}&Ip5AqL?w4anT-oy!i$yOMaD{P<^Z_TC~UDf-jJR(AHsl*|cm%ZgY}9DVj1}(rL?;*0gNV zzj1%xVC=k|&A?Ro%ib;Ka4a@;ClwZd+SOud^NYUGCR)vzQt1&vb;f!r0lQtu%0t

Z#N6`;+-e&7_1D>U(amK}R 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 GXa57@&yE2A literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/ProdConfig.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/ProdConfig.scala deleted file mode 100644 index 7edc8d46d..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/ProdConfig.scala +++ /dev/null @@ -1,230 +0,0 @@ -package com.twitter.frigate.pushservice.config - -import com.twitter.abdecider.LoggingABDecider -import com.twitter.bijection.scrooge.BinaryScalaCodec -import com.twitter.bijection.Base64String -import com.twitter.bijection.Injection -import com.twitter.conversions.DurationOps._ -import com.twitter.decider.Decider -import com.twitter.featureswitches.v2.FeatureSwitches -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.finagle.thrift.ClientId -import com.twitter.finagle.thrift.RichClientParam -import com.twitter.finagle.util.DefaultTimer -import com.twitter.frigate.common.config.RateLimiterGenerator -import com.twitter.frigate.common.filter.DynamicRequestMeterFilter -import com.twitter.frigate.common.history.ManhattanHistoryStore -import com.twitter.frigate.common.history.InvalidatingAfterWritesPushServiceHistoryStore -import com.twitter.frigate.common.history.ManhattanKVHistoryStore -import com.twitter.frigate.common.history.PushServiceHistoryStore -import com.twitter.frigate.common.history.SimplePushServiceHistoryStore -import com.twitter.frigate.common.util._ -import com.twitter.frigate.data_pipeline.features_common.FeatureStoreUtil -import com.twitter.frigate.data_pipeline.features_common.TargetLevelFeaturesConfig -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.DeciderKey -import com.twitter.frigate.pushservice.params.PushQPSLimitConstants -import com.twitter.frigate.pushservice.params.PushServiceTunableKeys -import com.twitter.frigate.pushservice.params.ShardParams -import com.twitter.frigate.pushservice.store.PushIbis2Store -import com.twitter.frigate.pushservice.thriftscala.PushRequestScribe -import com.twitter.frigate.scribe.thriftscala.NotificationScribe -import com.twitter.ibis2.service.thriftscala.Ibis2Service -import com.twitter.logging.Logger -import com.twitter.notificationservice.api.thriftscala.DeleteCurrentTimelineForUserRequest -import com.twitter.notificationservice.api.thriftscala.NotificationApi -import com.twitter.notificationservice.api.thriftscala.NotificationApi$FinagleClient -import com.twitter.notificationservice.thriftscala.CreateGenericNotificationRequest -import com.twitter.notificationservice.thriftscala.CreateGenericNotificationResponse -import com.twitter.notificationservice.thriftscala.DeleteGenericNotificationRequest -import com.twitter.notificationservice.thriftscala.NotificationService -import com.twitter.notificationservice.thriftscala.NotificationService$FinagleClient -import com.twitter.servo.decider.DeciderGateBuilder -import com.twitter.util.tunable.TunableMap -import com.twitter.util.Future -import com.twitter.util.Timer - -case class ProdConfig( - override val isServiceLocal: Boolean, - override val localConfigRepoPath: String, - override val inMemCacheOff: Boolean, - override val decider: Decider, - override val abDecider: LoggingABDecider, - override val featureSwitches: FeatureSwitches, - override val shardParams: ShardParams, - override val serviceIdentifier: ServiceIdentifier, - override val tunableMap: TunableMap, -)( - implicit val statsReceiver: StatsReceiver) - extends { - // Due to trait initialization logic in Scala, any abstract members declared in Config or - // DeployConfig should be declared in this block. Otherwise the abstract member might initialize to - // null if invoked before object creation finishing. - - val log = Logger("ProdConfig") - - // Deciders - val isPushserviceCanaryDeepbirdv2CanaryClusterEnabled = decider - .feature(DeciderKey.enablePushserviceDeepbirdv2CanaryClusterDeciderKey.toString).isAvailable - - // Client ids - val notifierThriftClientId = ClientId("frigate-notifier.prod") - val loggedOutNotifierThriftClientId = ClientId("frigate-logged-out-notifier.prod") - val pushserviceThriftClientId: ClientId = ClientId("frigate-pushservice.prod") - - // Dests - val frigateHistoryCacheDest = "/s/cache/frigate_history" - val memcacheCASDest = "/s/cache/magic_recs_cas:twemcaches" - val historyStoreMemcacheDest = - "/srv#/prod/local/cache/magic_recs_history:twemcaches" - - val deepbirdv2PredictionServiceDest = - if (serviceIdentifier.service.equals("frigate-pushservice-canary") && - isPushserviceCanaryDeepbirdv2CanaryClusterEnabled) - "/s/frigate/deepbirdv2-magicrecs-canary" - else "/s/frigate/deepbirdv2-magicrecs" - - override val fanoutMetadataColumn = "frigate/magicfanout/prod/mh/fanoutMetadata" - - override val timer: Timer = DefaultTimer - override val featureStoreUtil = FeatureStoreUtil.withParams(Some(serviceIdentifier)) - override val targetLevelFeaturesConfig = TargetLevelFeaturesConfig() - val pushServiceMHCacheDest = "/s/cache/pushservice_mh" - - val pushServiceCoreSvcsCacheDest = "/srv#/prod/local/cache/pushservice_core_svcs" - - val userTweetEntityGraphDest = "/s/cassowary/user_tweet_entity_graph" - val userUserGraphDest = "/s/cassowary/user_user_graph" - val lexServiceDest = "/s/live-video/timeline-thrift" - val entityGraphCacheDest = "/s/cache/pushservice_entity_graph" - - override val pushIbisV2Store = { - val service = Finagle.readOnlyThriftService( - "ibis-v2-service", - "/s/ibis2/ibis2", - statsReceiver, - notifierThriftClientId, - requestTimeout = 3.seconds, - tries = 3, - mTLSServiceIdentifier = Some(serviceIdentifier) - ) - - // according to ibis team, it is safe to retry on timeout, write & channel closed exceptions. - val pushIbisClient = new Ibis2Service.FinagledClient( - new DynamicRequestMeterFilter( - tunableMap(PushServiceTunableKeys.IbisQpsLimitTunableKey), - RateLimiterGenerator.asTuple(_, shardParams.numShards, 20), - PushQPSLimitConstants.IbisOrNTabQPSForRFPH - )(timer).andThen(service), - RichClientParam(serviceName = "ibis-v2-service") - ) - - PushIbis2Store(pushIbisClient) - } - - val notificationServiceClient: NotificationService$FinagleClient = { - val service = Finagle.readWriteThriftService( - "notificationservice", - "/s/notificationservice/notificationservice", - statsReceiver, - pushserviceThriftClientId, - requestTimeout = 10.seconds, - mTLSServiceIdentifier = Some(serviceIdentifier) - ) - - new NotificationService.FinagledClient( - new DynamicRequestMeterFilter( - tunableMap(PushServiceTunableKeys.NtabQpsLimitTunableKey), - RateLimiterGenerator.asTuple(_, shardParams.numShards, 20), - PushQPSLimitConstants.IbisOrNTabQPSForRFPH)(timer).andThen(service), - RichClientParam(serviceName = "notificationservice") - ) - } - - val notificationServiceApiClient: NotificationApi$FinagleClient = { - val service = Finagle.readWriteThriftService( - "notificationservice-api", - "/s/notificationservice/notificationservice-api:thrift", - statsReceiver, - pushserviceThriftClientId, - requestTimeout = 10.seconds, - mTLSServiceIdentifier = Some(serviceIdentifier) - ) - - new NotificationApi.FinagledClient( - new DynamicRequestMeterFilter( - tunableMap(PushServiceTunableKeys.NtabQpsLimitTunableKey), - RateLimiterGenerator.asTuple(_, shardParams.numShards, 20), - PushQPSLimitConstants.IbisOrNTabQPSForRFPH)(timer).andThen(service), - RichClientParam(serviceName = "notificationservice-api") - ) - } - - val mrRequestScriberNode = "mr_request_scribe" - val loggedOutMrRequestScriberNode = "lo_mr_request_scribe" - - override val pushSendEventStreamName = "frigate_pushservice_send_event_prod" -} with DeployConfig { - // Scribe - private val notificationScribeLog = Logger("notification_scribe") - private val notificationScribeInjection: Injection[NotificationScribe, String] = BinaryScalaCodec( - NotificationScribe - ) andThen Injection.connect[Array[Byte], Base64String, String] - - override def notificationScribe(data: NotificationScribe): Unit = { - val logEntry: String = notificationScribeInjection(data) - notificationScribeLog.info(logEntry) - } - - // History Store - Invalidates cached history after writes - override val historyStore = new InvalidatingAfterWritesPushServiceHistoryStore( - ManhattanHistoryStore(notificationHistoryStore, statsReceiver), - recentHistoryCacheClient, - new DeciderGateBuilder(decider) - .idGate(DeciderKey.enableInvalidatingCachedHistoryStoreAfterWrites) - ) - - override val emailHistoryStore: PushServiceHistoryStore = { - statsReceiver.scope("frigate_email_history").counter("request").incr() - new SimplePushServiceHistoryStore(emailNotificationHistoryStore) - } - - override val loggedOutHistoryStore = - new InvalidatingAfterWritesPushServiceHistoryStore( - ManhattanKVHistoryStore( - manhattanKVLoggedOutHistoryStoreEndpoint, - "frigate_notification_logged_out_history"), - recentHistoryCacheClient, - new DeciderGateBuilder(decider) - .idGate(DeciderKey.enableInvalidatingCachedLoggedOutHistoryStoreAfterWrites) - ) - - private val requestScribeLog = Logger("request_scribe") - private val requestScribeInjection: Injection[PushRequestScribe, String] = BinaryScalaCodec( - PushRequestScribe - ) andThen Injection.connect[Array[Byte], Base64String, String] - - override def requestScribe(data: PushRequestScribe): Unit = { - val logEntry: String = requestScribeInjection(data) - requestScribeLog.info(logEntry) - } - - // generic notification server - override def notificationServiceSend( - target: Target, - request: CreateGenericNotificationRequest - ): Future[CreateGenericNotificationResponse] = - notificationServiceClient.createGenericNotification(request) - - // generic notification server - override def notificationServiceDelete( - request: DeleteGenericNotificationRequest - ): Future[Unit] = notificationServiceClient.deleteGenericNotification(request) - - // NTab-api - override def notificationServiceDeleteTimeline( - request: DeleteCurrentTimelineForUserRequest - ): Future[Unit] = notificationServiceApiClient.deleteCurrentTimelineForUser(request) - -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/StagingConfig.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/StagingConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..927868d5f7362dedbf34618d91427c80b5b4d088 GIT binary patch literal 38985 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/StagingConfig.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/StagingConfig.scala deleted file mode 100644 index c93ca0ea8..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/StagingConfig.scala +++ /dev/null @@ -1,193 +0,0 @@ -package com.twitter.frigate.pushservice.config - -import com.twitter.abdecider.LoggingABDecider -import com.twitter.conversions.DurationOps._ -import com.twitter.decider.Decider -import com.twitter.featureswitches.v2.FeatureSwitches -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.finagle.thrift.ClientId -import com.twitter.finagle.thrift.RichClientParam -import com.twitter.finagle.util.DefaultTimer -import com.twitter.frigate.common.config.RateLimiterGenerator -import com.twitter.frigate.common.filter.DynamicRequestMeterFilter -import com.twitter.frigate.common.history.InvalidatingAfterWritesPushServiceHistoryStore -import com.twitter.frigate.common.history.ManhattanHistoryStore -import com.twitter.frigate.common.history.ManhattanKVHistoryStore -import com.twitter.frigate.common.history.ReadOnlyHistoryStore -import com.twitter.frigate.common.history.PushServiceHistoryStore -import com.twitter.frigate.common.history.SimplePushServiceHistoryStore -import com.twitter.frigate.common.util.Finagle -import com.twitter.frigate.data_pipeline.features_common.FeatureStoreUtil -import com.twitter.frigate.data_pipeline.features_common.TargetLevelFeaturesConfig -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.DeciderKey -import com.twitter.frigate.pushservice.params.PushQPSLimitConstants -import com.twitter.frigate.pushservice.params.PushServiceTunableKeys -import com.twitter.frigate.pushservice.params.ShardParams -import com.twitter.frigate.pushservice.store._ -import com.twitter.frigate.pushservice.thriftscala.PushRequestScribe -import com.twitter.frigate.scribe.thriftscala.NotificationScribe -import com.twitter.ibis2.service.thriftscala.Ibis2Service -import com.twitter.logging.Logger -import com.twitter.notificationservice.api.thriftscala.DeleteCurrentTimelineForUserRequest -import com.twitter.notificationservice.thriftscala.CreateGenericNotificationRequest -import com.twitter.notificationservice.thriftscala.CreateGenericNotificationResponse -import com.twitter.notificationservice.thriftscala.CreateGenericNotificationResponseType -import com.twitter.notificationservice.thriftscala.DeleteGenericNotificationRequest -import com.twitter.notificationservice.thriftscala.NotificationService -import com.twitter.notificationservice.thriftscala.NotificationService$FinagleClient -import com.twitter.servo.decider.DeciderGateBuilder -import com.twitter.util.tunable.TunableMap -import com.twitter.util.Future -import com.twitter.util.Timer - -case class StagingConfig( - override val isServiceLocal: Boolean, - override val localConfigRepoPath: String, - override val inMemCacheOff: Boolean, - override val decider: Decider, - override val abDecider: LoggingABDecider, - override val featureSwitches: FeatureSwitches, - override val shardParams: ShardParams, - override val serviceIdentifier: ServiceIdentifier, - override val tunableMap: TunableMap, -)( - implicit val statsReceiver: StatsReceiver) - extends { - // Due to trait initialization logic in Scala, any abstract members declared in Config or - // DeployConfig should be declared in this block. Otherwise the abstract member might initialize to - // null if invoked before object creation finishing. - - val log = Logger("StagingConfig") - - // Client ids - val notifierThriftClientId = ClientId("frigate-notifier.dev") - val loggedOutNotifierThriftClientId = ClientId("frigate-logged-out-notifier.dev") - val pushserviceThriftClientId: ClientId = ClientId("frigate-pushservice.staging") - - override val fanoutMetadataColumn = "frigate/magicfanout/staging/mh/fanoutMetadata" - - // dest - val frigateHistoryCacheDest = "/srv#/test/local/cache/twemcache_frigate_history" - val memcacheCASDest = "/srv#/test/local/cache/twemcache_magic_recs_cas_dev:twemcaches" - val pushServiceMHCacheDest = "/srv#/test/local/cache/twemcache_pushservice_test" - val entityGraphCacheDest = "/srv#/test/local/cache/twemcache_pushservice_test" - val pushServiceCoreSvcsCacheDest = "/srv#/test/local/cache/twemcache_pushservice_core_svcs_test" - val historyStoreMemcacheDest = "/srv#/test/local/cache/twemcache_eventstream_test:twemcaches" - val userTweetEntityGraphDest = "/cluster/local/cassowary/staging/user_tweet_entity_graph" - val userUserGraphDest = "/cluster/local/cassowary/staging/user_user_graph" - val lexServiceDest = "/srv#/staging/local/live-video/timeline-thrift" - val deepbirdv2PredictionServiceDest = "/cluster/local/frigate/staging/deepbirdv2-magicrecs" - - override val featureStoreUtil = FeatureStoreUtil.withParams(Some(serviceIdentifier)) - override val targetLevelFeaturesConfig = TargetLevelFeaturesConfig() - val mrRequestScriberNode = "validation_mr_request_scribe" - val loggedOutMrRequestScriberNode = "lo_mr_request_scribe" - - override val timer: Timer = DefaultTimer - - override val pushSendEventStreamName = "frigate_pushservice_send_event_staging" - - override val pushIbisV2Store = { - val service = Finagle.readWriteThriftService( - "ibis-v2-service", - "/s/ibis2/ibis2", - statsReceiver, - notifierThriftClientId, - requestTimeout = 6.seconds, - mTLSServiceIdentifier = Some(serviceIdentifier) - ) - - val pushIbisClient = new Ibis2Service.FinagledClient( - new DynamicRequestMeterFilter( - tunableMap(PushServiceTunableKeys.IbisQpsLimitTunableKey), - RateLimiterGenerator.asTuple(_, shardParams.numShards, 20), - PushQPSLimitConstants.IbisOrNTabQPSForRFPH - )(timer).andThen(service), - RichClientParam(serviceName = "ibis-v2-service") - ) - - StagingIbis2Store(PushIbis2Store(pushIbisClient)) - } - - val notificationServiceClient: NotificationService$FinagleClient = { - val service = Finagle.readWriteThriftService( - "notificationservice", - "/s/notificationservice/notificationservice", - statsReceiver, - pushserviceThriftClientId, - requestTimeout = 10.seconds, - mTLSServiceIdentifier = Some(serviceIdentifier) - ) - - new NotificationService.FinagledClient( - new DynamicRequestMeterFilter( - tunableMap(PushServiceTunableKeys.NtabQpsLimitTunableKey), - RateLimiterGenerator.asTuple(_, shardParams.numShards, 20), - PushQPSLimitConstants.IbisOrNTabQPSForRFPH)(timer).andThen(service), - RichClientParam(serviceName = "notificationservice") - ) - } -} with DeployConfig { - - // Scribe - private val notificationScribeLog = Logger("StagingNotificationScribe") - - override def notificationScribe(data: NotificationScribe): Unit = { - notificationScribeLog.info(data.toString) - } - private val requestScribeLog = Logger("StagingRequestScribe") - - override def requestScribe(data: PushRequestScribe): Unit = { - requestScribeLog.info(data.toString) - } - - // history store - override val historyStore = new InvalidatingAfterWritesPushServiceHistoryStore( - ReadOnlyHistoryStore( - ManhattanHistoryStore(notificationHistoryStore, statsReceiver) - ), - recentHistoryCacheClient, - new DeciderGateBuilder(decider) - .idGate(DeciderKey.enableInvalidatingCachedHistoryStoreAfterWrites) - ) - - override val emailHistoryStore: PushServiceHistoryStore = new SimplePushServiceHistoryStore( - emailNotificationHistoryStore) - - // history store - override val loggedOutHistoryStore = - new InvalidatingAfterWritesPushServiceHistoryStore( - ReadOnlyHistoryStore( - ManhattanKVHistoryStore( - manhattanKVLoggedOutHistoryStoreEndpoint, - "frigate_notification_logged_out_history")), - recentHistoryCacheClient, - new DeciderGateBuilder(decider) - .idGate(DeciderKey.enableInvalidatingCachedLoggedOutHistoryStoreAfterWrites) - ) - - override def notificationServiceSend( - target: Target, - request: CreateGenericNotificationRequest - ): Future[CreateGenericNotificationResponse] = - target.isTeamMember.flatMap { isTeamMember => - if (isTeamMember) { - notificationServiceClient.createGenericNotification(request) - } else { - log.info(s"Mock creating generic notification $request for user: ${target.targetId}") - Future.value( - CreateGenericNotificationResponse(CreateGenericNotificationResponseType.Success) - ) - } - } - - override def notificationServiceDelete( - request: DeleteGenericNotificationRequest - ): Future[Unit] = Future.Unit - - override def notificationServiceDeleteTimeline( - request: DeleteCurrentTimelineForUserRequest - ): Future[Unit] = Future.Unit -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/mlconfig/DeepbirdV2ModelConfig.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/mlconfig/DeepbirdV2ModelConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..0a0d3e52fce86999d8e1c5b4f377108047cd3d0e GIT binary patch literal 37007 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/mlconfig/DeepbirdV2ModelConfig.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/mlconfig/DeepbirdV2ModelConfig.scala deleted file mode 100644 index c45ccc72e..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/config/mlconfig/DeepbirdV2ModelConfig.scala +++ /dev/null @@ -1,23 +0,0 @@ -package com.twitter.frigate.pushservice.config.mlconfig - -import com.twitter.cortex.deepbird.thriftjava.DeepbirdPredictionService -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.ml.prediction.DeepbirdPredictionEngineServiceStore -import com.twitter.nrel.heavyranker.PushDBv2PredictionServiceStore - -object DeepbirdV2ModelConfig { - def buildPredictionServiceScoreStore( - predictionServiceClient: DeepbirdPredictionService.ServiceToClient, - serviceName: String - )( - implicit statsReceiver: StatsReceiver - ): PushDBv2PredictionServiceStore = { - - val stats = statsReceiver.scope(serviceName) - val serviceStats = statsReceiver.scope("dbv2PredictionServiceStore") - - new PushDBv2PredictionServiceStore( - DeepbirdPredictionEngineServiceStore(predictionServiceClient, batchSize = Some(32))(stats) - )(serviceStats) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/controller/PushServiceController.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/controller/PushServiceController.docx new file mode 100644 index 0000000000000000000000000000000000000000..43b0514df91b3dfb8bfa2f8f74a9010bdb6177d6 GIT binary patch literal 37723 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%0DC2wNVVzBYbGevlnW^s*Wl= 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 YyF+u6Ex-y|T~(407hriXuB~4E50Q_6^8f$< literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/controller/PushServiceController.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/controller/PushServiceController.scala deleted file mode 100644 index d271e5a57..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/controller/PushServiceController.scala +++ /dev/null @@ -1,114 +0,0 @@ -package com.twitter.frigate.pushservice.controller - -import com.google.inject.Inject -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.finagle.thrift.ClientId -import com.twitter.finatra.thrift.Controller -import com.twitter.frigate.pushservice.exception.DisplayLocationNotSupportedException -import com.twitter.frigate.pushservice.refresh_handler.RefreshForPushHandler -import com.twitter.frigate.pushservice.send_handler.SendHandler -import com.twitter.frigate.pushservice.refresh_handler.LoggedOutRefreshForPushHandler -import com.twitter.frigate.pushservice.thriftscala.PushService.Loggedout -import com.twitter.frigate.pushservice.thriftscala.PushService.Refresh -import com.twitter.frigate.pushservice.thriftscala.PushService.Send -import com.twitter.frigate.pushservice.{thriftscala => t} -import com.twitter.frigate.thriftscala.NotificationDisplayLocation -import com.twitter.util.logging.Logging -import com.twitter.util.Future - -class PushServiceController @Inject() ( - sendHandler: SendHandler, - refreshForPushHandler: RefreshForPushHandler, - loggedOutRefreshForPushHandler: LoggedOutRefreshForPushHandler, - statsReceiver: StatsReceiver) - extends Controller(t.PushService) - with Logging { - - private val stats: StatsReceiver = statsReceiver.scope(s"${this.getClass.getSimpleName}") - private val failureCount = stats.counter("failures") - private val failureStatsScope = stats.scope("failures") - private val uncaughtErrorCount = failureStatsScope.counter("uncaught") - private val uncaughtErrorScope = failureStatsScope.scope("uncaught") - private val clientIdScope = stats.scope("client_id") - - handle(t.PushService.Send) { request: Send.Args => - send(request) - } - - handle(t.PushService.Refresh) { args: Refresh.Args => - refresh(args) - } - - handle(t.PushService.Loggedout) { request: Loggedout.Args => - loggedOutRefresh(request) - } - - private def loggedOutRefresh( - request: t.PushService.Loggedout.Args - ): Future[t.PushService.Loggedout.SuccessType] = { - val fut = request.request.notificationDisplayLocation match { - case NotificationDisplayLocation.PushToMobileDevice => - loggedOutRefreshForPushHandler.refreshAndSend(request.request) - case _ => - Future.exception( - new DisplayLocationNotSupportedException( - "Specified notification display location is not supported")) - } - fut.onFailure { ex => - logger.error( - s"Failure in push service for logged out refresh request: $request - ${ex.getMessage} - ${ex.getStackTrace - .mkString(", \n\t")}", - ex) - failureCount.incr() - uncaughtErrorCount.incr() - uncaughtErrorScope.counter(ex.getClass.getCanonicalName).incr() - } - } - - private def refresh( - request: t.PushService.Refresh.Args - ): Future[t.PushService.Refresh.SuccessType] = { - - val fut = request.request.notificationDisplayLocation match { - case NotificationDisplayLocation.PushToMobileDevice => - val clientId: String = - ClientId.current - .flatMap { cid => Option(cid.name) } - .getOrElse("none") - clientIdScope.counter(clientId).incr() - refreshForPushHandler.refreshAndSend(request.request) - case _ => - Future.exception( - new DisplayLocationNotSupportedException( - "Specified notification display location is not supported")) - } - fut.onFailure { ex => - logger.error( - s"Failure in push service for refresh request: $request - ${ex.getMessage} - ${ex.getStackTrace - .mkString(", \n\t")}", - ex - ) - - failureCount.incr() - uncaughtErrorCount.incr() - uncaughtErrorScope.counter(ex.getClass.getCanonicalName).incr() - } - - } - - private def send( - request: t.PushService.Send.Args - ): Future[t.PushService.Send.SuccessType] = { - sendHandler(request.request).onFailure { ex => - logger.error( - s"Failure in push service for send request: $request - ${ex.getMessage} - ${ex.getStackTrace - .mkString(", \n\t")}", - ex - ) - - failureCount.incr() - uncaughtErrorCount.incr() - uncaughtErrorScope.counter(ex.getClass.getCanonicalName).incr() - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/DisplayLocationNotSupportedException.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/DisplayLocationNotSupportedException.docx new file mode 100644 index 0000000000000000000000000000000000000000..614d515ed0d2f13f3e3d6a42c27757e454866e84 GIT binary patch literal 36827 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

21L{|H`UoFw^vaLqP^EsN%V>7yRsbZW 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/InvalidSportDomainException.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/InvalidSportDomainException.scala deleted file mode 100644 index 8f0d2b988..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/InvalidSportDomainException.scala +++ /dev/null @@ -1,12 +0,0 @@ -package com.twitter.frigate.pushservice.exception - -import scala.util.control.NoStackTrace - -/** - * Throw exception if the sport domain is not supported by MagicFanoutSports - * - * @param message Exception message - */ -class InvalidSportDomainException(private val message: String) - extends Exception(message) - with NoStackTrace diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/TweetNTabRequestHydratorException.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/TweetNTabRequestHydratorException.docx new file mode 100644 index 0000000000000000000000000000000000000000..fad02a98a44f571575f0a04077d3ee86776b50d2 GIT binary patch literal 36777 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 Tz#Ih1Re}tO!0chv4dMX+Is&GS literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/TweetNTabRequestHydratorException.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/TweetNTabRequestHydratorException.scala deleted file mode 100644 index 069e65d79..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/TweetNTabRequestHydratorException.scala +++ /dev/null @@ -1,7 +0,0 @@ -package com.twitter.frigate.pushservice.exception - -import scala.util.control.NoStackTrace - -class TweetNTabRequestHydratorException(private val message: String) - extends Exception(message) - with NoStackTrace diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/UnsupportedCrtException.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/UnsupportedCrtException.docx new file mode 100644 index 0000000000000000000000000000000000000000..1da18ef9b31ddce969790377eb556286fe1274ee GIT binary patch literal 36830 zcmagEWmp}_wm*!!dvJGmcL)&N9fAhkNO0JAa1RjN-QC?i1b3G}aQFYt%$##(&b{}2 zzcde3wSKZzcU5)oQvLu5g#`u%1_$;ng-5$WwID7L91Ls}1`G@n)T$=|u>Wjs|Jg|0 z!@=CyfZ5&7wjohLX+;$6%h?Nd5{odYmjo(y>9zx{17jS%WL4S?ug)UNi9E!^-8g@k z#40Bw1%AF7KO07_*cO$i)gye~VLAq8RIb@M{-dZm6sRhrTR2-S?g3J!l>;O!4 zbGrAtDQ4-$S-nJ8@i~2k)K$Y=Wq(XAU7VwchLnvX56Z89ue^ z>O`yiSRDn*;CtRlprjvn2hh>fkr{l2No8-3sqhZE>$|(7D~O>Kepn1Oyqld-up8I# z8%F)Yr6E$I+9np0G{V8h^X7OYLGE*t9i+F!C#mSuE@>o0>o3~xb$@~KwEq!$8Sfs+ zzw%DzxubB;WhEfjRGu-3PVXg=C?CBm?&Fi!BVtk6J4xZ5=Y^uRJ(1Bn^4upZ1w%09 ze^k+f`h(~_sCw%VU|@)#zeY~xw$3cfzpoYX6LOGjXntqHQo~e5_Kg~n`Ade9hYI<^ z-QUJf3+;h2h0C2CDv}1;I6cG%XFH}A^J#emiwuRffm$Xya{)OEJ=z;|7xisMt8hv1 z?fzu$>f1p&wy6;}6eyzR)OXw#nxw)E>zD(2bakiGVwK{OM)Y8}*-tRL}QcP%hPFlFE2delwOcDQL ztw}!9ZHQU)fg73D<39Umfd=Y&9EypI4N0r@S|`!87%+BmRn9P1>3Pq?um_^d^_E223O(@fuSo0;WeIy zCP>rZ_+XNdxHEsVa6}#K*A)|-)u&7;dcKOppx(3Y$C*oNOMcVQ?g$lpB!ucrNZB+t z1Nr$-ev1BDF3#C6lVlmqs)ad+;%ev$OJ6ia<7rzdkV*Hj=zjY96Ne>G#MhyhG!+tq zrK1<;fQKdZf0Umzgqm3_gAa7tvW0TRuhdoAK3vyh!(VAcUinBzTO?$-=edBwJF-MEq?>V*czy1@B=~1tu2)uY zk3n^@g#rUZ`+HqJIyn4M7WFav6;`zNCk7~k&*4_EVk&s?0rO(h5^MO?@##&oqvUdN zP%UiRK%a+DY`!lnH(>&G0#Eg$PYYreu=R?cG_c1Wa)*^2*AN=2!iV-(CJxA*p-Q1k zur&wJ4IGW8Ml0rEnBYIBXen2YdXd+ej9(DLIyfsaOnqKP5nZqMDr{49@c#a6E-LlQ zwdTJ6JW;t}as8VLt5SFwN2@)=5jKj%0U{+B%&u15&{NOx>K!#1BnG)14X?k>?|&PbXTgaU|1R{l^uwUV) zuqa84-C?K48zSqPRUEkVW@#6+1&^zJ$1gwTZVHD-QVAHorX!Jy5TY@s$OXyM1Qrdg z)Qy4Hh?{=awbQrazF-F$DaG>IJde7ky3@7qm3LsX<*WE~T#B_@TxyTR_7#m(~imrpC7aV$vU zqec`MJQP@11>g6|Ez2JoHr?fJnaumQ%36ZXF9yR3K-lUv|8(+Pn`-q0wIW(62`?e{1ZCZM$%UE6-&< z#kmK?cdrZ&X8)XsP6vH@{KFzCjSJ)I;fv!*_>`C^vKf9e4DUK{C`UG&vTA;>A z(vy1U@j+&yk-?i0HuUrgQAe?);_JpjIRDs_pDIlQmvTy+H_OatY7k)097iII(>O=1 zE@CX2f9>%gSP$biiGmhG%R}U%Mr76gMiPVjPS_h#pSn@&G2g{kzsVidY?s#DobBTQ z%-!~z)+Osj@3|}Yt6=L*Ye|b^!WJ)KjK$h6MAXsJ^aC&cLQ{q!u81SHh{3djJ8^5q zyIT)IX3O$yA{=u6NR_Ts1iqF{5pnzi>Uv(Jj6!q?+xU zCsJz}SkhEzD#{!*8WfMr1>V8Z%kj4o zdmDOdW{eWs{yTTvK3Oz&GZVLJ^Xme54E1sWypa&7STn)O<`{yOsL99Obut=aHWj4s z{M9|&9gBkE3ezVwiJ!_3g(S^{FoR0tY zF(fPVvu7Lm#YAQEWkcCkTVLzDJk@vej)y*e^$&Nvh}W`2GDj{7O*#K@P5Oq4`JRYOy*G`?1#Hxoyh zZci&CLEZf2CCj(n_6%r55}o#Py2jJjh1}Vqcc%GNG;w;>1^~X`c?&%3pStUwW+tt? z*uR{ni7X5OULRuK9-bD?qKibDj&}_1AJ#6~lIPl<4rYGdw1tH19C^Id3clLCwXO%V z0GCM&lZwu#`VK;p_qN7Xj+@F}#*Q!RJyvabibP1td%8Q6zVL-c*1la^)#-XY&8>`i zx`m6pIcNj=(C^xIuJ&)--<^~Ve=@oYDO%_QHV6~hE!FGyi^s3(hp>7qUvZ<2vYLJ+e3-?R5EoC&9^NH-YF&7Sw|UtRq??Q>4&WC(5{ zEYOO2>)UrPB~HJh)d)mf`o4Eh<$F%Dpp@2>9AORhJ=BIFyt-71R}?)CT$1=>K6_{P zOI!B^1wq8>o3^>P|5H|RBtR>MCBv#cwkbS#L7U$d_vz&I{HGm5I`QBSbZ>03Teu%$ z-b6;UvXKQ8ya~c*7G)a4tCG*^WHE9wDl)|ws$V(Ef*AL(7|1>_Ey%&eE4Fr(`)&}j z+-r`u4`I!hx3i_?fvebFWHr5%;D6H%XMBBHv+5A2JnPS23a@74*pOY+w%blX%jbra zgHugIpn~c-kaQ$FO2`XhY|v2^k6r#uM+RrPj@4}hcU9HM~Y~-UY?OB z1E)&CfDzyj-{eP{zH1;56Ni?c*?GBMFV-o zs^4WIMP&LfiAf2f{KaBDzo|2^v8P5I6e^^>k`otTE1{F1tJq@Bc?E$iQRGtQvS&_Ut^1#8{IoMd|NQ}7VVq~CADYw9ov?M#%y01BZZjtlAg~7 z)}C%$S`6$5yu_aS7RFt3J}tUm>D>>`WL0gsSN)t5Ryx?*AIaUikJ=D1Xu6RkiMHQn zUJ^~zk3Qpy!+(2nK$2kcm@-CVTrD9=-xydWy*&lGE~dL753F=D`wnHv*d05?AGG}H z4+m6j`&Y)GmDu{w3ie(-I58eMzFR)u5SX8_<7s0_K0b)UnHt+Q_weJ$&g0B0nss+d|GJ|~+P&RV zliDt`$a7~0f}DW-z~J_t?+0$2_bg64IF`a5E82txopy{s!8bQYV6H|G4U3yqTb?m~ zo5k}qp3Rq6;=u8hJvhbp96;r7)6~ffB~hc8b2`kkO#?TSh%*U{;7TTD6_4o*OO^(E z`VtiBWAM~{Ekn+g?F=nQT2AQtBm1rKQ9tDxb1KbT`Vz4+`nUMQ0)J9Q`z5T(q%{hg z9v^X}UHPt@XQM9!N`E8fJo*C5_vo%X_Eu3Gb=&;$f9=L$46CvV^x?7_+_v6@5L0m zqcaVVs4KnHq6%$@yu53Ym=pnA_qM1w&E*vu+_DpnUXCu=9xAk7#&>@oWz<)T`8AH| zkeG|Vtks}(7+Qo@oDy+7YagTDp&E4qwfEsiwSte-;7I8p|FOst4dXOH636)mC@v2P z$C9O!l2Y8X8sZ#p4V@@|-;85>j{aB`XFT!+!rCc=Tm?pwtpy@_ZzvtHXS%O^&Jg<_ zumQ44X}2EceOFF*eEfw+!a8~}0#VXa+T#_nh`0DzYmKYM{ItPHQG#A<3H?)s8Ing{ zw_C<|?W&rQjphXK#LzSP#+Sxn{Nl}LKt>A2$D`9n0#fo6LR z#@-9=wkDHlw)ugZISZE_$Q3DLjWKUe4{OD8eM5Ue-TqnC4=L0YIEt(Kb3Z=shL%u$ zF+KEraBSiKm2y*-e3(cc(+UI&E@rRqSp*}bBW*o)2b_IMuV!8+_|i9~MX>4?$zl|8 zzW#9uvS^zKbC7v=T)@^+-LXiKw~hMY;&~R^h()qPY#k+yqeKxORlkx_@*3fLHO^+D z!(BPU?h6eNyI|h!N`>wy^R|L}ZUm+MYMR-jAfrmNfF!PJWIJxuWHx@8H-ol%S0D_u zb{H~;AGtQsm|82%t*BCOGEBfpnctG`ySV5~?T}U+I5zjBNGiHA6=WK<2xY#l4DXA} zGDOQ&@QT-N7b9wx``RSspRB5`w8%6%w;8t;@+`^fI_X=Fu*Fji5j9c1O7qBaD9TOn zim~tHBU;#6)}`bN6&2j3lP@_hLwi{_Z$&7?;*5CQd6ZSgA1lZAYio0wEGxMjY*v(0 zH1F&m;pyNZ#B`IHq7I|g!tOTOo_${AXk?*E-Xo9fsbmDBQeZ%Q)Lw|re}HZ4%zpl) zYIFFG5(8ga_JgWx3z^p>qx2FPQ)T(1@j^pUx7eCm_xhrZ0^ZG13DMnQ)E!^uTPcd2 z5S~SkMS*=Te~JZRZLdInK$nV(1r9r4VHGO=tfoBm{g+{lwh`la#;fAgE3ruWGgEyb zY)=UW8vPO`u+)~B3SZ8lEPH_RTmtg+4BPn23R*TBXB}Q749a_sB&K4>SSoW*6%Pw8$BGt78{M0n`JTf8;{P0iZ`8&oh{Y^?T$j}Hzn--{-;+!3O@raliK{+zu10dY@N z#`$%1aS2*;BvGRxGd2^#HO7#@+2`Vm=P(Jbq+p(*x=1Hc; zjxqAtQD-kqE^z?otm(Jgkgf{UgTx5zeM@{qqpBRAtSZb?>o!B;%X8}Is~HOd%#Oo5 z>l@O}Zy8j1HV4ZQMEd5kB?m9B=UQiTkiixklkrZ9bdqg^-v@=yC7sJ*4%sZIbusUk zk>XpWM*V^o>(f@C+rjNzabu;5qZmI7PvCvpUNYQ#;`U?@b3IyP4RB;W^_Nje8DL&u1u#lfzTXn8Rb*9Yzv#zRN98 z*du#uZ8S|#8h|xTU{fRv*-^vu%O-k#@N~8o_ZO6z8+?bt!PUd3Q7>f&h$_OQ?`hG_ z?S4Gj6BiJ*a2;{x@Es|TiuxOO(((=_mX)_S9Utjs&^xfF7AP8HyI1M5GfYAY{9oX zX^R8+Codq@{kVq^hsm#{lc=sOka*z*H!dy-=&zhDvVNy1f12Q6b4Z3{b%#XCSa%P8 z;oisP^Lq_dfu|cg7}e#?5d26^lxHVOs!-p{RG@xkr?>F0jb8bYY^s#cbm`4b+zNoi zWQ8pYztW0|aN8Z+Cd<(~&vB46<8NwK_B0kYbDBnRFL?5u?aza5JU1Lf_l0 z5QYy*us`6|*iDu$X+ro&H({NNgDcS{@1qInmm1c8Xq2eUKsegFNtMkrbkBQ7ePl2W zTX}qqeIs`p@x5&cY52G#SOHfB01C%J@{#WNBfR*p@Y#QdAN~#xBo^-|_2Is@{{eaF zY5g)IHJesv-RL5frNRQ;uH21zRKO>Rnp}!|6MqtGTNL2w(Gm5d7TVNw%S(QZeUIFi#NqY}xXH z)LEf&wTsZKb!lKRkL8?g*;nB_Lj?C6KbqMO&Y{H28dt4`wM5Y;>dGut$(r~#y#!Y1 zM;a#~d2Sp`u?uPumCU*8=^AxR7LSphbeq8tnaV5^WS-6H9mUDEA!Y(rvrkoh`(c5u zJIUFkceTAKqRd>h=}f$l1Sd!HApw%0tXR%@3gJFA5oczDNe-->DfsLMe#IYJ?y zZNL1OA_bgR5Rs^u)40})TF+evB!;`q0+8A1i$iGyE6pNReYNR7ej{94HOXY&s?Z!O zuDhX5ye?j14VG{PesAEF9uPw4qz?4gwYD)A2qTZQ^zuJ5dOt~w9NSrH)e_^Kr%_r| zGc~96NRc(ue{e(#ak)HI6ybM%d!-J=xR|~?g%F8A4}lQF@UCE%IV+r)`aMq*T=56@ zG7X`lUy_PaqWoU|y<`F+hq{t^2|c1Tk)J?R0g)u`jYFrIDIKL&=&}Fifuj5u zkK&FjF8Ef_g)(}zvGdU&3oCsw94*Mw*B?K{)UR3jT3e(<4SMw|j#LhM7}cTF86l4F zP_axH+P;zRZ>`@M#~$`)x*hjPSelLEFK&&K*Ud3 zZ9BVQfqR5t7J^*$!I!{kSMw1mQvQeSWB7lu@wxneve6E^`}17TEX36vd@8E4)`g_2L^~?DN8+_z|^P+`6+^@YZbw*0`US|T7M0@a}I{dQt!8cG?L|U#h!Wm2oQmBD> zX&acz3Fn%&0h&8C9U#IJ_~MU(%Dl?x%6(5~LuUCp=T>@9lq<5!iiM=64|Sv~VJF-U zkEMlDqL)#cC7FZ5TBb^(mwZCrmC@wc49ZaLgg|*I(I9eCA_Jy>n?oRKP>|}5#uXZm zvbRT9PCnNx^Mnhg!3JNU`#-ZuI}DY1<{o%F{4*djt>u3y9&5OtNM#l`fQ2M8S!s(1 zCk95i%R9Nf(t-Kh{ERE{&7NvQ>^iN<_4d=bGr~96&E?j5B;^tVU4;BgW+tdcpt35G z#`7*cp;c!B?Tbk^>FY?@t7FUKTH^4n!(iVuGmmhK>|1D1%yo_cS3@lXp~z z`Kfe|T=j4{0rNHP{OFn%Gg%NQ=NicR5LVD;KI&(cBSYXy&1WR%{3Odyam zP9<6@ql%!*BpfqkJHIjw8^EgFS~X;(PFM8jUdDomgGdo4bplg^lSB#~7)B(=nZd@9 zh+9%Ln}>#Qg5@xe`E|q*LH3@fdpd03&}-XNjZwOa1Gd48Z6NQ=oe>5IMqKkvoI4#R zVJTg0#_@Y0S}4|c{{%3;SWH@Q6H!KKL$sQ2mDPCRheJ||{u=Y+1@gn#;$8UaCqE^O64Y(D}*2R;W6D4R86rZk*H zj5H2Tax0wuP36AyZ?mr<>x(_svwSud9?iVh8NV4RsT3vV&}@XQl8Wu8Y?##r$cVc%o=hV{xSxuQP4DjzR*Y7@~#5CDX(;lShv`QcOzLSV& z$y7=;DVtumLK?_h1Z>sXPoFcgEp1|;0W~J@S}v%@_nX-nkA2!s2L(<38N~ZPgAyn9 zm~Qqj`}xA0F%EuHeJe+{Jy%G_9J}x5i{g0a*^Y5gF4ge6-<7}&?O;~vZZy5_k{0a4 z3oY1o`XB8~RI>8(FpZ`(lVRrG+v$TTNJ55T&hxptzx&&e*+ZR=ioDDxbvzsb3xE!g zj*5S@C&im_v!yHuX7SP_U4%K~Te4rfQ%&kbSpT7fdzf^xBZIp9+s^o~B6u)yCaVpk_z3k8V!8ANmng5Ps&qIAc zq6ej?bY2}+$JXRoqIx4EI&OpL_X>UZu(8&~_|_)Uo)xTuC#xTVX63rdIK%Qd(r|cl za2PeNR2f|~yZ5kfl^1DYQ_I3yRJ3Hs5UXFbwwt3`;rg-1fR7Ozz0W^1HnPB_c81@^@l&GF+kL?AAaw?$6MCtk&}%7pmsGI15pcb|4IFW3Nr%b z|De9;?1yg;%Q9N`Zh7Bf41ZKn+Jj*~lgY^F@AivKJD|Ohvh7#|GlIfBR14)pb-#l) zx!IO|Up%*I(NuN6Xva9LY6uYo=W|FRSbA)Q)UVUcYWRF7A?l9F#kL#QN(YRYPO20FcVq` zzc{Hr!J{~nUsM|1+P=kE@gl5{I#d6MEy;;2IWy{Iu5;8;8(Qe%R|wD97MJz3e3T6d zA@p)eWr3!Uz}0o}y+kpU`rV!63}>ztL?egBRn!dU&yvzSW&po}O$Q+3l(WJW8eIW$ zy8d$AKgsh)Yyu$oxiq0rc2H=VGwM^S---O3 z_YS9mXX#P#7=hx<^4U%apF)|DnB}v1G8db!C`C<{0*yJO}VbZ_TdCW5XF#WL|>9x>VE`&CWC)<;|q1Sf_5eSxh7U0@o4;EXb^F9G%0otw}FCnH3I zh^#SW?cIi0te4WlPkJm#$qlVQ@GH%^a|pK(PaKwRw_;2~+Ecf*Nmx_G#Wqm#PD(+^ zJAs28_P1?@`e*X&vh@E-UUi3U=eLQ)1lGS4BJ?5d9TRSi5ztI@Ls}cF(PWpn)53X{ z5Mn@R(8EG+#*eazkxDwK%l50Bc>DO_MgiK?<-n`o^||F4^;i-r78EriAO+p^2ZWCF z4$BMKSI>ka&w1V80ibYLJFTBzO`=w@Yd??`42k5@ttD}*S#q0M&gzBBgMJ)_cTlf3 zovk>#B{&89nf~3??SoI7z(pI%xd6>Kq=QwTM$s=cthB{KN;lQ9K*71ZUi|aWXoeNX zBJ0&mhYp;^$)=v$_HKkl#LLh#^bLy6qA2vxvz*0&v?q$maPl=gqbEDAS-vcKIq(=n z*VxAfd;Y7kdvT=>M|id_6xOZ*V@?NNbZfDctnTb=Y5KW7@y9~-7zCRHa{fwNt*@ny zUcJw{p8|eBTp?0-9(eUC$&OEfIeZweijXGV4>83ZOY?HRs9z_)vgs0w=f6^uqT6)b zD)3+a&BFi?GcRe%Cf{EG-{;AgI-r;|bR`&lhJt}^Xf7tk`7xdAsjdx)IPGZuq@fD#&pFyFV5=Bc$GPaC4_mBVak%%k##8dgOzd5^X-TCV zA{t*Ih;e_B-uy|0Gp`Cj1SJ7-d@5xM2Qir_hl2JB6A!C?s>)M)Sh(v*<>S+{lz!06Wnf`cOQtdd~iYr^6x zT;&qfxkdF~94?P4E))}r926VY853?*t06}_*3ey-63ezX63fM#@96>%fJ7|!4Nh38 z%gO{HPYNlQo;%O#=Nt{2A(@ajHxTsqIrwP^z(PflQKE0x z{QdFXWiH$s9RVbzF=g1#^tY#_Srf9*B68^J=f|EsRZ*C%EmXEg9Hcs zM{qz^3AD(cf_r`oKL0JalHl0ImF+?E*tXLPT11^hi{UGu`JLi28K+Apna93qeFPF{K1nu4Y320FLTM z0466)mu$X=7C}~n!hXi9a(ij_GC1#i5L1E{iR89eQY)xq6NMJ>>Dc&6SH&|4YE?r7 z9`Y$0v1Ef>*OY8p9$n|H_5pUIyj|D64Gxk83HZg!@>|A~FAelGECHt=HBW$}5aARue-U&Z`ibK{!#U^1vfJGzYm z%5OHnrDGFRQFdq%fXDqM=qL=m`a>@6>9&?%aK}Yx5QEVWW^5*tS3iuyXLdFGthU3K|f_%3T`pVyh!}#}dMqo!(7Ac)Ng2 zs2;Y-VJb95()I|_Ri|Iw<}B=_cbONgw|W%AIx zhJv-NU_(7a8kmG=U@j{4^G-51;b@zA^|!t(K(?pd47=MU^qL-5gV=+Oe50`-duw|1I}G`xm&V!yxj zOGP`9@vdY4H-MwkZ-Aq)KL8x=+yZu>hT7nUPP&Ps7dPDb%hMGd+ARVjAuRbb!w7;l zn=ft;Q3(NZDII=0&7*aqb&v7yUnI_>~|H|$KKIE8K0yY#;5s&CVxJsS!C;b8EU-U($mV%qmAoKfM&49KD z@V5N{&i@XlgB;qqf4Rm%C8YL)!0&1Yx_LliMHt1(B5Di5%EW(7l%{0LaVR)FYw3s| zQ7hp7kW}Edo{e2f|Gr{V>_egF`L}`zWfgp1=hPhfs2An)2t_BZjVNFW7Mah(^sn3L4(?d6*FE0d$RjE%QV`E?+p;wES!f?1rZPMm9(+=<;g z&nqw(5-iOJ1`7o>Va@<@<>OGA)S&e;aU@r{UL`EiYJ4;x?ChbPxp`n*u{=^+2UdH@ z-Ij^*79Y>zP13|1<0n_qs=l!S^TOCDJ}YYtdq%nc;OO(TH@hW((@Y`Mu9ltUTa@K5 zsl{?VDoyIC(eM{Lk8-5-{Uq&o>$apiuKdgt80}uR}dCC|n8#}0Hn4BBr zvgdHz`1dZLq2yP5$Rrz{jP>Rb?!Ty5K~#8=zo}Rw223_< zrg%(2Hrc;c`-q`5!>=WJ4N&t2E#EeL*3x1?Re!dJHdBQd1R{i_Vx>d z#`aS0jOPHxCgz|*0#K8VJ%qi~*lomZT~OzT2_9@~$67T^%rDE!7fI8HMmK$W!xG8r z*ufRar$(VR$^Twa2oVSG+n|&em7ov)1p2E>?<2z@mW>8!|qtQnRVR$Y52NiB>WVHEtMYHZRz*C<0cyX2y9 zqd`%yV2DSjBD<*sFlBrDxp(zPoAzvEqBGA|F~MMigM~H~$w~b^t)W)xpdjct9ZB@i z!EA|}1KYF#(nsuZb?(<5Zg#|Py(H5F4P*9L;qavdctulAL2fM6vENZ+zk9#e4Su;J*@)Jcm; zeY}c>u~hfko24zZDjyuvPe8%@|v?c z*W%c=93*vGTLtQ3QDrgQ;?2iS9*jv1J8@`V93&xbNYi!e4CS2sB2|3)ZUTCA^+QiRs1Q6ggWq0 z>-!s62iEs)u(xQ!U1%D?Y)oMy0#Y zdoUBm={!>;4Svkhp~z5m*2XEu}WY8O~xa>sCkhX2oV`&w3?KS^0wn45n7^9a9>L2{mS z?a9*vcEiztQf3ku*~pmBBnHHw;n>ba%I&>yS=p>XYGwS99DNh$6u)SeAI5Nu%y7^N z@Ee`zyVw>E=OL8P`&ZvrcaP2|pO&=>?&G@+q&M#Seft*RqG08G)`suZnb8h_W@Gi_ zHsWSy+oR5~^KE}>?=lSphf4yTxNRY`0 zr>(1_oVYP^b<_VUi!$7<&`n!9Su#p!a!;;D9##@AkirfU)C;q}68b>&iH^!0sfH1Kt^-dP#*$?tk#Zt*_@`g#Z(wU@Nsy5|+W@x7UhIVTKd1*L^F zCGUCqHg~wK>^VF2rQMub-FTkxEX~I!C>==Clki?u8ySUUE@y|V3@q&WRw7@nzV2MS zXPFujsIqtD-NcKl4;y1~w5Yk8tI+R)|P|n4d)O&E;8Oz5K4Nt!jhG6}4=xYUG8gqN^N3LS%ftZO+HZqGj>K zvTcssi=Ch7!<0w?F1znT^@=45Y}wG+J?f?Oh7rH5=Q*E3oF}w(r++@7)>un!_W-f=ZabmgYtW&ZGTZtGhOlz1f9Tm;8LA z*}YoXR2dfMI<+GcFY_qsU9W$9=8$ zbG4FUdzXl|63Xk-kWpjV1h>xW#)eW+Q6NbYOBsn~Ow8EL)6>>N@6F7S34z z-S2N}+c!?}Or@O^HCdi&m^1Pmu(;k6OWQ9SMLJY4nYQp{=>?rxprVFJj6#~v&1rXk zJ*s6i4!7{ZVU?*@ccy8xs&tV21XZILU_yRH`mO(56__gDyw6t%aD!a?=BTkX)(s6AO6J>c;Pp zW;Bj+c)!2tqb|T6LRU(Z(uZ{tJ^nG)^}YRI2u8K^raZhh#VQ1EIl4Xg#Jvv0d}yPe z=ZAhhun@6cCci%XEu8L;Q4WZk=c6T!U?^(ppbolaPzUJ=s3R8CQ7zpJ?eK31!g;tR zu$NSVE~@R{gZ>r$dyxBt9XMfO@o$v+-|&B+{C&XRQT}%ocw9};4&QQ@A$aAd?ZF9Q zteU`30)s$cT>sGem!xHgBPMhJXc#~f zu7{r0BVPv%!vGEYZ4Jf7sZ90}<@V|_`YCviY)_B+xk@&n9SrC_>&qm<)HHSjIdsf~ zr8zZ4Z=AG^d~IC!;52k6>!%k$$mUfRGgUURRZuJfK#H{4Fn&9DJ`LI1%NXsw!;B=5 z6>%Q}uDkNOKA!Toc)uOk{5Z0?<*FFk;Xy2N8$-o?y?1|rJ8|;*`LdePi7lAXw*K^! zxe~Uq%`7~#k{D^bMZ{(27@0V7c4KMJP*I50Y-8evpt0;FCc>=zwS~E3>*g}X=jX`5 z+~e58?$Y(MRn3IH6H(|@uv*J0Z~CM+ddl;Sd5iZ8UrU!;u&GGJ{FuS*=1t#7%$QP| z-4CDjUBAg0x39@urw%v!c3D8lhncgfWPz4d@l%S?)rE?UWS^DRd!>PUd&y1BK;YF}eB+CN7u+PqLLlm|>dDrk}_}(2vnh9rR zU@4jjXJ(jr9nVT27`vAC{Q3k{M*+3}{AdX_tds@o9N@i37VC9kh8JW`%Hm&dgkqJ2 z^TVDi-yka1^$E(V2oPK7U!;Ysq(mVoMCNWNYh_7#yo|i0af-^ZDOmdDN`@l+y-!G; zrEt1)^=CmI;qV#4U+#o65OY;9rB&#~zzu(Xc9P;%8=EpxVy!^;a`gV4&cMYpw9pQ* z$11pOpC3_LaBr=0SCY{EaGB~9?z!ka37r(~w!#5(!C%C-B&9#$eHZu8Mcylsrd4`E z*$aD6o^Qpok$RDUs2q@BN5S?_QHw4aE4mFqQX79zj*luuXqRw2*A$r+R_IZ`;0(c1 zxTz^@>vNgAQgq!u5fMJfPJ4dY;m`0eQtIj4Nf3Ok8Af(-TJnB)evXk6PTK=s>AuYD zjMhHaix_ef%9k=fH!q#>un;oYqXKScIa8uFE;^Nl+&5c*UJuQynI>@sj(rmLN%1v; z)b=^V(kT_Y2NQe;noAX#Q&*F?4bacjh({mmmH3o9#z>m@lsS&8ySFdT8$UR>greiV zXT`lVbDcyz2t79V$iw)nalD|^$&1JdP{Ea9Gih(;0;h(?p(tcQ=rqnNG${XsE+!V# zd;{k=g1!wwHV3Ejc`Uk0jScq3T`o|>^;7fwI|7T1E47tuqrf4-nKtFRzOxy^t0K42 zSGkV-ww!0-> zB^B4^-G4T>lLMXNns6D{f2Aj9@fINN4^KB58-g1O*Bok&ZVOhV$jz505J97R5q0iH zS&;8LY4%xr+qVJ53a`Fl0P2-xO>V~B&yE)pQz9k|EMuIF4;;5*9NvGc&Wr3?pV)%#60kVrFJ$W@cttOcpcCVq3i9d*6He z?)UHR9~0^bMa*Pn=IK6Dr+QA8d?0WiSmUZ2l+eW?<5Elwu4K9+ttsiD!Kppzj;AU8 z(isVLNru7m&17Dk$kHuadJh~|tS=GTJbNeYC$A~ZnQgH(URV2WL7aiRA7(ww7L7(c zuupCc`GcOZ+2-FSK3TXa&NC{d=I>vv-Xf{_1IF>sR;aN&q_Q9U2!7^sgXc!#yFL39 zkmhr4BfDiQAlKpT$_ow1>f`hZHjUBmS5Y6hGj>%&Mu-sBbe`7f72uyGp4@h8aC6+d zSH++HzFsx#O=(PWb}kT?IqA?j?6cF`Goxc&+*PkEV~P<^B(UbM^PLMW7j z)Yf5p(X?zvX>*)EDV{Q2(rL?+*0gNVzkYYuVC=k=&BRjq%ib;KU@SIuI~AUA+SOud z6#&PMAA;#y0e34Yb> z>=g9u45A0!tGNnV-?O=q(k`9Y7~S(ZkNJD+Hw`pMUf0t@w8oC62{+UEhYqvxgd+$hWp29uTK&sRYjr z#2p19ghw6cs=LvP+kM*ihqM>U2(iIt__)FZD>@;RjhnsxU7^QNwvImE%jjF>yg_d# zC7b7N{>`jOrGbmnJFj-4C$Dz>2e3rm$!CSF6gIElD%p z=t*i=Y&bTeb{p)XHM61iM)BBG6E=iBH(I4EoQ9IHb`?Jr4rJ=REsOF3HJO>R{T^u; za!(Cd2T0@B#F(X;HFL<Mwz=qM23z@e{gyk)u9okKXRQN1(s0)qTRn{C z;;WlK+UcH@)O?s~Ewbi20GJ-qY-YJIQX_T_rV|}noXL|y$H$(kQ$ABzMRb?al5EV% zzFpZ28Lg*GrE5Nip4_JiH`hN(Pve^`Kg*<+lp;%9PIz%-Qq@;%OM;15Kfk(!h8!%= zLSsVItd6oul&h1M_;7z5B8y+Xmdt;r z{bp)((eu;HXKKCNx2)BRZdCg*$D(Ah?ip+c{OCJHj zjjvq~6mX>(x@3_0oe(QEZ7?`|?FYOYgLYy9?C{MG3~=y98a-XCdApRb*hJiw2*Wza>~`*P@C)c7Wg!P2JtA`(F2Sv2R)6jG z?BT6NoQ3R4+7dRRX6!v^O^`$Cqx*7sv%~Chkv*#c*>?9yT=R|pn)+MXYn zFs6gW{&He)+IB@M7f1|+$&NOD{Vl98D=pkOJ z@kd4YSJR6w-&W|o)(d;D5RY|P<~vz_>T)?c>})BCY2Y_wbb?QoQEuQH*4ZHpbf0q8 z#sD9MWT35`qIn!U&|U9}1GAAiFCU2TtAuRVkb5JuUdU~O*NfZH>tahjkOW6z@>ycD zd)Jou3ULG9dCa;n#rUfsZgY?qI6_ObNE`Rt(UK2FFgaE27Z<7BEiFDEw`l5}EmQW` zFZ12F!&|NbCO@H8@&F$jnd5!G%mLcHWu4qvmxJB@USdevc8h;WO>uPiOX{zZl`g)h zK^YFCTWjX87+2B7gTgyoQ4kxMwpep|s`|Nra&9Fcdq zUpJgN+qkii!Tr7V;oG>^;FPmn9mrO4k!1_GR}>0-uM`Awp7qC>v>C|g8{u7Akbgm4 zA@Z6wE6dgM*G1_Jbb~^zkC1F+>ffF5M0M4r)l~vVVhcDDDp%8rm76^irMy|1zf2me zmZM~T+qb6n=f<`RG(u8)z|C_=p^%r*#7+nz3 zOV1nADnM$0`dKUxrdilh~BvMgG zjLl&Z@QLCvq;^`8uL13rW($n8rDHUFtjxW zVH5Efq*UK^w_5wO+6W1U5BkUBGDuX4fBspudWqDGrwvB?+-|iQvyFgD`|o>p3g(WB zMX?`l?luaZHo(18s>1`iHUqkeiZV6iyY7Ru)8*Ko-EA~HZPLI)zWcXybAl9_8J2n4 zB(H5XZsAE(e08^3o5WKbV!9z~z_r>kDx=nWgQrxW`x6oRN7wXf)sD=9~f*I~HEw!t`*P^Q0>?1O=bY3=x%chyYE&M=)kip@K6BnFfHqV=+ZaKJKNFo!75Aowp36t(TY7 zVPCFwVsluO`H@uE&smomkr(49t_+_(lJv)34+rgYc?qhBG>1v8HjK_xd`|M$U<IyS>O|2GW^?mMCD-p>t2CX9m!SAEm9w<)s&N%~|x+N`TlU!Obi@8yYRq)q$IednK zNJUyKonZ8id$RlWa7oLeLidoVY9wB1y9xj$fO%&G7-1+4B81!{pAx(FjWidjl7fJU zv9k@A@U=~GP@D5ot{JN(5K!oju#@s?-=;R{I#UL;!B~Z!6 z^g|K~LXt4do=!UuV3>$#A~JM;qmb2oMz1Ta_-qx{m(}n^2Xf>~1rwS0>>h^XlKzxo z5DW?#2w|NQuS#hTUz6K9?FAsR&_QZJ1j`7Q8N3GH?XpOo>9_1+hZJ_NIGgkuml^7K zWGL+UE^G62EVs3GFsQDkaCgBl7wH3O{fvJ+VDK@W1@&4<00hH;AWZk6s45QfWQiw6 zR#$nR9mag276*Z_&gYGG#-SJ9G7keGX(c}B5Q8A!Lg|Mg1w$8u&}YeIyaKZV9(|Xu9Vb_0{`3&g4ao>7 z1bI(BhH>xod)B?L5*PWhX+$<)~9s`Lhn-6y&4sr`8c|oIC|PRy1S$&LWAXC%IdlZFRY`A=JdiA;$MFIE*ZeZd^=n1dVQYj1qSk5lB$N>p#+X``me= z>ihl}j7eL`eUnDk?`75h5FmoyPcT*k970hxpVFr%uH7ah$lCsveJtwo(T==+-hJTS zdze%VAHhz?N=ZM$#xprt_h!L!x2@e)wy?f_=I!#Cn%t@Q@=~UmU#PY#yD^u zy0RU%!Yo9IXJD$MWu9SR8I|v_KmsGFc}yd>t>;z(Rhv6_{iM6PtjZ?oZ(X4UP&dhCxJJe(O^7pD5Ta@apF9+8K#z4 z-$$qt!)~C($XD4cvim(@zS~S+ zNCMQr{cUa167Dx3u)obT@RpvNrd+{bJWK5x5@sOVA)ngCI3{RH)Bi=!8PXxVe*Zu9 zIQZhqk+&e8pHt|ZJlvVx6iRQUKJ4ut!1F#0HXza}YFd9)`Tk``WFU~@fu#M$OH5E( zjs|o99;8CMS{b|=HSCzg`(=OGo7OKWu=7wei(Fa`I}2+A6CGP-SsGL`n#qR{M2*nc zQ|NobmT&0`e^${4-SYWG`XanuNw1Yc3(I@^^5kNF9w?4wlm4#DTQiSFvV7CG91ske zJYfYw^a{sQC5^Tqy_9YQXWRp}F|#+l-C-QVSXo$6mPYInlqr(5wf0vx5S8pW$NLx# zadwv>$}sZ>5b*R6ODGH+$_%F-9Z78xtOD&vwlH&)X_AZwmtbrYzfToIuya%TX`&o~ zmgdK|E1=SDq62gM^C;6(sHr3wOW+8mcm=phhDnwqng(n6Rka9n3|_e6?0+zx+Xo_9 z`-m_bf-TLNU3UG1%7UTSX6=SK%@nY3nNt>RoFQP)l{-UG9f2Kv$z+RcV3^SZJw z18)OvxxhG-^d(9LH)m3!DQKAeW)Th_3TX&fpYmn9(OFV%5x44Kxm8B^B0vQbTTcI^V{W1GuD*)DtZEa_|HkK&`C-MsFTFxHYnYw#ue`LntP8c&A@fKJeLQY^0)zG~RGr zLZsHl;?4m-L#_1r4#wtu*UwuH#3_`eSz(ITPHEMVF3~-xonH1p5>zHJTyfr~(vi%L z4c^@%n0>bh<3zEMzEy~HArx!So=mWz zm<-YSgIX`iz*vjf)NpS62eryy>tCqDc*#X)f1%cg#P`o<2;665+34Uvg>e#~Sj$xH zmTBxLY0&#=f!Bu=sRZz>uofW&GPFykLx*u@!7yUl453ZviqLm5Er%iE4&jAy>i8|i zDs$^rDbqp+lpkvvc+hARU>#klrf@AG_g~Si8LgswsSO? z1W*jB4&8ECvS@vP#+T1ksQ7Gu6g7cV5*OOHXcelA!Krq;&XO*(^z_!3JZhE>XJCbZ z8Y4mn>7d#0&<*h>VeXME3s;er1E_DtTXCCznvQeIo{LoNid%Yo$IBa+xLk&TJfg-- z=o-curQcez<@~?N;$hgl_k8}Oq3JJMOG5k3VgEVvG^=12ao*Qf{n-1O=W8GjG)uW* zOc!f;s_Mb?_z>1%HKxXG$i>@oP`6;kC*-GQDVNW~0~JiwT;CY(H@rtRl9OCvwF^7M zqe-7G64u-$ykE^js+|fG1d)CnWFXA@W+mEeGdN;leT! z{7Lqj)G&Bi)!3-T5P=z3oEW8-%6(j40f|UbGfYHTZw|V&F_e%gg|bnMKNX$~y2U;T z(i3$WqPX%tdAaKFS%j%ag|u=!f*PwAt^#4LJ3*A3Gcn&%WS-h*1WXr|~ zdTI$wSOz#13GK+di04WfKRWYkF-c6!Bb>5=cs152i~aPOPyM!e5r5_{I*k>vaaD;3 zPnx`lwMpqRMxm}ZOtbZ0YWh!tu5 z$hhiiX(o9Qk}AU3}nVTZLA3^e073+J^c-I&MHFAMbQfEL8VWBsvUx-%m2iR6AY za;MA_HOW&`c{ppaGlCAvY)f6Op88i!L5IZLS4_&k`0hjgLEh|)xOG8Lo0G2K!4EDB zdkcZK30M=x5He+t9Kb&F6r6ds@OQDF#D`=7bJHl+9k6k>**o2o!ia09+i@NF6Zn94E zeVMY1&Uas>ORdR61Z`qT0LKE_`BIwE+Br)30CMht*unv^^z1++`V;qR@LtinvaYZ_ zmOX{CMqheCq!HFEp7h3sLD6+vFg6MX_lQl+`yQ=d>9^}Cp|3|Y1 zT6hlTR6*@kKg%9dL2wj1zWBHA(rZ*v*=cX}P(k=G+|L4ZFx;ZT=k-4kccFITYcUAL z3lq4f?2_#-#)V|*wj2|kJf1>we^!Dw1}k4g2MyjuAexP6N%O=xPTZv-NrKm!Dm%eN ziI6Q-3!kf`+d=+Fl`*BC?b6%QF#<2JvVKAk9yk@(&_Sonaz_hR9@{jCb0pc-3)ylU zB|t-p1A{I7x#KiIg7Evv4-zfrlSjV{C4oH~6Z7u%-8V41`lr8Q#*c62PaPn^LZbmZ z=Er~w4NBVk4KS0qF?zb$4mCXGKT1R3fJ!OUfJy;Mg5YtEeDRE1(y$g7in3ce#t+yO z1kyaI`P>_Va zx)wx4#-qic53};)44pCmaf(UIq0IzHU)n!t!R1=KkR@g{hb<9Vi)43IRVq?#V3%tD z77a;gTNBzGzHk*EHni|IT}=B40S$>F>(-R^Pa$_La-yschr)Rmrim#TUMlZfx*iYM z^yJ|HDi=uxeCP}aMHWC!lU;crd|)-UbmI*YXx4YL6U47mq`M%ragLryIgVJsM}yBm zGsHPwlsm{|!iT0tP0I1Sdgqd01MdC~OI9wX9gp!>SibcA@}J2JbUyy9(n%_qmY*w} zD}-Ozf>j_hQY$0rY=xT;=yE}&d9uqqtqX$CrRp`&icSB&KJ&W|SmHH^VaN*_`UjaP zZd$3phGzaNE=byRtno1=K@0&8M!7>t`obj**X9E6?FsL+0F}3CGm;3rif3pZBJQ-< zY|w@Zy_vXc{UJBlTOmDXo2Hqb$FNKxq;lcrA$5AG0)tg^WX67c`doL7j3+jqhL#(d zmLozV`!Ym%wF`R+%CViIHXnUjeaMs++}!*!?fQ^w1qk2nfMLLGv6sOqtu&;my503z z7*{2Fegc_o?33^DIK(GE>cD&A(nh;HBxE)G80&6xgwnMi=Bc87yZ13Capbd(K2rD3 z4P<0UVLT*zeqmy*WJvk=Bb4Q2ZcdJ{^6v>EqCN?2JYu!p>35hm0mUvm^V*JtvwjU*IXF(1Zaf$H0r)ok&d?A`Bo zAR>>%E9edM0&B!?V3hZb)f-y@lhmK4?VDjjz(7KO2NDQR`F;a!swWD3Zz%r|aR;97 zbs^1^=4T$}#ix1FFd@HO(sx6M_6#Ty7GsNGN@jvWwS)1;3;9u+J>)!$AEX3B z{VW8IK+pb53c3I9L72ZC6MoIFyn&|97=B7}KMv;mP>1;2F&vSaE<>)|Mj;2|Kq+X0_^k+19ZD#(+xq-%a1dhfYa)}90juPA(3er(y zf}*>YJ@+1RALkyj`4lq{ux-`n$*Ot1F%ao=t#i=okY~_6j&~D~MXH!`V5u47ii_3h z=bn{m7C7h|tleVpUO$6aVxHVaned&@pgA3Z^OCA0;oj4>tUVsG&ys{Kh@1+Fz=p6f zf^~-I<+{mTZ$3^Z<=SlQzLrqJ&ax314ippv=Z6ZsHR3MIqqB0JaDX6WslPhtV3|Q( zAB#1Pq;~J`dzG!a5h20exUX)EJ2ZpJEknwWd*dvInpGi{2%5Mx4GfM|o1ug=(cd1u zQXNxp_gAef)*hs8lCmKnuAFB!4!P<;LfhrQVN=&~{MB4D2mz&Q{tLiMimTK^5C>79 zW#Pg!6dk~xWzIAGZ8iMc=nX-usf6Fc26L&$S$og?WQ77zNb9oIzP1|#gvJH95Pvadz70j{9H^iC5x&dub=8XKMRhd$?*9z- z2~f&=J~v<$vS1s$Fr})5{VzIe;hU?3F{?klJ*u*C04|}~N6HrpqwGE`eO6aB3mZ^a zI~-rFNOn2a+2bMrE;9Ld_@(K2W4wQ)Ao?y$DMKRt2PnJWaxYd+1A=Gz%{gOpcPJC; z)etE1b7?yw0}yRqc)+T~f&?@BDB&!N8^A7N2H=@?%*b@h@Q_XI0}?|hZD;1calMF! zHlqj2I`ZM2jz6D)zR-d~M{vyOJm+Zjhvb?5j3>=A{fJOhw&1M=E!0gYPYF-EZXsyk z`n5-P)8u=}HrIC(rt9MceJ9npF*Sp9NWe|PVsMjoDS+l++E{+W`_8P|#g)}%UbR)f zA9e}9wyH=f1f>!q4wS{L63z0Mf--X357ozX1$^fMRc` zd1=l9^@hVBQ#<#`!eMG{k>&|I1TOCEidY6YcUq)sBQXo8ZO!f78ED+XbapHGOG3CV z)+WNf>BZ>b3{k7sACJ320R6)kabyZ6FBor{jQ4$S61ZZYZh2bfU$2MGPPa@fAJyJ= zuNoK<@n;jp5>7!4eK=|f1HqqEW#ArqoU2t&D9A45Xei01#pqAdHPA)?QvhnH<{$?R zF-CtK<6ND+sqUw=>^W@Da4RH+Z6s}+`2j&+!Hojrd8nhj^f8f|Y{l<7AYt}P6lqh( zs59(qg_%>pNm_Cv7UFOS;jpNvOE2A7RM`w^LS}a$hnAYGdXk3vPe^KDNZ!*_XEenE z7P?9c_fA+*UVmq>LvaKLb2{q%diJlYKM~n&NJV(tv$)iGX%Vc9x_OE1m3gheU6cR^ zBr6k-^H9RB^we`SX%H6>;tU~XfzD_njW24Q`Gk}W)I$9XXx!RW54n(|Fk|lQr+K4q%ig&OzA};>5-7+2qGdL+u=A zLtQ8Z4>FfCH;6nKmdzeLTxY8UFfVk(sE1@)CKusl72~C)t%d?+{N= z$bt(G(jfDnw3aDXHCYu;?&NbtxDhUi=XY7l{KWok#oIpTtG0Ux!C{X~fu=XeWsmu( z(%o`=iwMh(6Ps(-&eONz*IqWrmqnUECUqO!meCV3P05uZU>>egJ)aFA4> zgfV8dD;l>Th;;?Z3;EY;$qeH_4V*W6FDR$M0MyWqhAVDi6*iD%$G6CQ-0CxL3& zntWw3iJ`cgwD^lu#T~L=RzMaVE+p@g2q0U{@?cBJmZWr-A;LKIZ$s7){_sf#BK&1Y zNeVcSkIYJD5c?N_==9lDac3RiIPrGN&?7m+IainhU6Q&TXStP?&93Ldz#p@^m0m~) zaGjE}_RD(z*6CSAS{y33*j@(Dl+ha(7ui6SakcTC8iDN6`K>E;YHkjMJtd$2m6(|j zIM>=n$cHU5s0gIzK76*+nb*I{p^H-2R?MdH74E}AnB=r^R6GTA@ZlDH@L0e~_^51( zE3bo>&x(I90-P2n$z=E8!(#_hq^Wf#$)tc~@J3Yx zmc+)#bcvQZAd)Ex^kBk_g_g@O6ju37JdBp<=e>M}$RcS02rTV36ov+71{J>Xz)J?U z>%lsTOoIOqD&o&_SAFaxpV9;QW*%>MpZxfXOlp_LIMvdKZHl2U)VDxO48n*44!?rld@6(=A)NLtH*#aLD0MhUc#O|Iu z0U=*;n|wWDJjFci@&fbr>3eUF%h0GIa~9&4Jj7&UK{)1sIS_GLdOEJVxs_7eS0fIV zl&}aET0=oTKiqE}@0a_6oQ90n>7bq{RELM&ZOt0RiQ%-Zec|nKa1a4D<-GO3%em13 z_b$~V#Rm~uI!cn4Mre>CY!@42Pj$;=mwHjWjLjU*cG)s?D>gc!zxEmLd7X3g>Isa18ti?JmIz~uJp~MNq9!gh? zix6~t4J=$)#m4ERuXhSQGMdeLoq!M3#NK@%z|WI=!}lbz(6<>n=*Hgj(Vn| zB)(W66gh^($yDag;sJ?_Ki@!uhrx%8;`Kz5gM!GuT!^M3NI#^ER)DloVSf>i*pNNk z{9ce3Jjpm$)RgBUA$#8vH()*9rBC^h^2MKFX?19MAdXPLdR2K z6gT(o?VwC%u0?knVgiL=uxaFhb%tB_Dc^u<>kCn{5N`&eyG=bw*K87khCM$ZOEN## zq5Rq%w2gTOXZ(C1aNh|Y2Y@r_sP_q_={5qdImpe$oW6j&dmA8@o3v-$=KG*drYQVT zZdR@1S{rVCy01RKbHz|zhn(cqULLuj3%lVcrNmeluK zm7~5WZj&1dzZC3>4aPU2xGv4N&>$zjY?Bk4(Vq~3u&)+h8`n=`3Q~g?S`LrH>szBt zXWaoZIlW$@YX-9#JkRsVQhvW(kF=$S`yTFX0qYdLci_y=$A<-sk;;LQ^1E`T#gD+$ z5^F@u)g!bpv{aI4SOg7H<~Llc$Q938pURxR6CT8--*d0!$~Ndfw^yF%9IAo)q1qgX`~*l-9tlSEpO9SJB|n}M65 zrk{VYYjfdr-cymDl9q4z;!QK{$mIXoZ_fs$v6pwTXiEGubkk&n28JId8Y|-hF6nZ; zNWTK|8A&uOdWg)poUK9T7zOyKZ~E;!v1!u1 zG*5^CQKMaxic=TE^4Lidu68#7tNVnL!zyT=%ZR~8$ufF!{U+Gq$xjL)yR8r1%?S|^ zx|kHp=KXlx?iTW&j=k{axtIXE*}VX}*`fX0F>_$2RW&1H+rRoxZl?6x|6m~)`S~q^ zCN)deHnAB4m2M=YX%Y$F3k02@4r@LBQn-Eo8OVr zEzCL#<}_^@Dec*nRPf$jRc;%upE09g2P>$I2cmJ{#_PCJoe$U;gs5)JNVK9j31`F3 z(j!6I8eH%_!XjbB@ZvPdq;Yony0?=l*kS@IS)-RG>^#HP)y9k%B!rXLbj_8IMp+JR z@J}vrSn;Iu#mj8W*`Fd*=w0|BPQxTxh69c=QL)jG$@bPq#_SEWG`@e&;NmqedG{HC zB9kpvi(&KCkxcB6uvm`a=$f%~svQ$PfsR+E0%`}urtz6N516{4^|4ujCy88w4a;n@xGhnf_{wl)GzkqSo!fC9 zMvweEN3gQ7ab1lrx5GX?vn>0Z;nUOI^@Ty?^P9WUQD%b=Wo)j;g#;^iZaVA^X7u^o zVN>M6xUG02Hwg}83;*u+n%YBkUh1h(BU$n7=6`hFOcEh$8v!=`?W6+%!Tk3r>1t_a zXU6>3k@c?*XF3WF>s&ZJzcf)g4i=x+-6A?9E>OAygo#bTSpb!};sNlqzx5HFqj z{ERm12H`GR2J5PY;VKv+gAd+mCAU%#=HhTrW4=>~GfITBoEJ|HA)9%@<)P8P*tA)Y#fRS#SsqJey zghSP%O>SchCG8alKbUMsH6y~fjgOW?3WQErCNH*b-(c`SdBM8Q5B;&cIR~>2gMd-& zb_oXJ@=g>_+_PiNK+p`k-aMF{C{3S%tjXh*{G|GOslpinlG2#T!M(&?%@&Yk-6!^32zl~qLs2jsPW?aHP4 zd?)qpY)i2O{S(H6PvyLfOdQxS2V{clWVG|9bYgNzielr|sVm+&RfbMTNsi(I9rroD zI=aFqu?3ns1&hLUy9`S_+zfL;g^yd$M*AWwDoee9w{CAV%;r-A;-HJWGu07+xPjR)u30;4@G9^yf*jkW^e7>LGa@)lv<(<5h_$>1H>yVkpBea zLP?R%potQ%fifQ)dym3(kl5u!43a6}A*izdN}kkT!VhVl&@p%1SU0SV)uW8I`Me=q zdNd`Z?a&j?I8tRkziJhvH3>&%UE%cxtbLUNcGcgpSE=mMjC?zAxNQzg}aOTxQIUW2Ib? zYr4&ZW+xF-yZG`_v9vy~;JEd;c?#3SE4R-lki(uv+X?}KdtPj+B&#I_T7nhFb)G3P z!S8!v9kKCR4WgTaCMyI{*5(6nE||*QA@bue1w&sdNX-}?AALz;|?8cJW*MTI*m-Dq8|L+2K`c89hl+5Bg`et0PI|Fp6wD`l*bt^8@~ zxe{^Zd)K)+=QgA3x{hxo`eisNZ(Yy9PcLKSbaJh5&QjnYlDWX2zSsIkQj}IW0Xq&7 znB*|ER$C_%LXkWsee+kgR=XMlQ)c%6eMiU`(ILg#2C7Z;mb=C zN5T08ci&X^Qj)sb=@u84sf#5qZ>`Fe!*LX)V`cZ#JP&?f8l0j=7Y)c~KOdwkrbyE& zG~!uNH=>~(l(8s4J_%&aI7ewZXAz-x%!-U^r`Gute`zT!V<}Ia{nb=Z-9__bAi$w) zGh&$=%XKd>u%&scjEli=FwZXffKbZk0j!-^vl=y_e!IoCe}2yT0&?_My#0%tOF=1k zwXIHy&0|&#`aD!rq{7%{7>{0Z3)2l^Nd?#01Z8Ejy48}-qE7NJ^~jTPlwC^>(H0g- z4`aG!Hx3iJPFFINb+>GA77Fwh@M5_j5{^l6Qk%f&>H}~f zDtMY0CxYb6I^p$ff2DUVq^TuofHb7hf`f>@T?>i5l#lSHQt!>!${nc7U+l0NYH=Cu zvIVsaPi=kJugEUB=fS|Q+9t{ePyGLyvv2U@cL1z)RPMTfadB3y zEbq2`^md~yZy%N`spk76gzk9Gsna>3=n65~Deg_>DiwLkx2oeqN?i349f8y6ab)gqt7O!1=_sQXn>Ve2-|6CooNN9$-;FK$^!{`yH~tu%5{(D;->hHAt6 zYumOeJBW-vtT}{q5#i}um$a%$i4UqipnGUinltXnER7EokysX%dkzL5y?1OZ5GNL% zGZbj2AuE7f&b}lC6YHt%9A$xIHMA{4?w2hlMpjf{^te!dacFuh-LN{#YGcQ{j2pTu zjLWW>Y7(REntoVLXO6T@!E8tkl};XGN<)D_lr3S*9MWRYu9(_12bPsY=gcYNA$VqSY6sUsZvTYH5{Bp7LMXqcU zp^BX=E2&8KJ8`^s;ySZf^|enXX>n?zmt;8uEqcBx{M2vVZfbcGE-pfb+s;zzP(99w z!l0f;k}?^@tHorJo ziJw5|Fv#ApYL5hQ9^2SiLwJN++Oy-=&cK{vWHfxY^Kf8(>W)9GKnxXU$>nW@l{X46Mrh$?m4L zHtqL#aJsikh2tgln!^)0AUK)|gf%`#OOiL=fl%Spo#l?PvTR(*U7AeOS7i&8MX<}G zeVL3#_ub}w_XfN|{(ijiRq+8eMHEjTYYz>YLRc(&!>Gf`cOu~7iaRiEf>CPM z4`<+ym@>$8%`z)no(x=Xy??fZ>#lz$xrbyX|9B7T% z=x4CP$^v-hxOsTbmXj19xhZ8XLln6>75%oq->3U|aT35X)B2_d(u~vBT0ne zbCQ8|SYe>&{r3BDx`-F^>n31b2y&ZBifbe0GQ3+uuLAuQNppAZbb0>Euz-VM0TN2I zl%mZDq#lZTyh>MTuJpNnGj*GEv0wdbM{zgzSH;QtLsMFYVL8lo5w@0s3-&afmY7+_ z_}}n9NN=5`mC_5bsc164FHk5*<7RpGr7M2pj*ZJkGUQB(ET^I~O-Hz8SP~`IQD9Pz zqNTv>hksTc7W7}Yey;`Yz_p~jJ3Yu8gHw577-5sDHYz_4q8}DH;o;jBG&e4xoE4YQ z+O#9lJ%4xb5J}IuSzo(db1yh%9)_Z-w}>9jc>(aa>V1esUcNLNpF93C?xdJNmM}3pfdWpkOIh#e+GF774ZJ3$53<4a#ETL;8T$h zmV!os$G{mOv%cXJz%T&6+1Mve2jFj`-_$c{-(2I!Qz?6a$>j=i(%L?-3t|Iii7-*nxM-}?VcRaV4bKo2z%drWk*W)a z%}apk7ihiP;dBbaf`P0^yzx;>J`J1&L8u@-#>m_8<6A+lLBDDxfx24E>d!KS#-INb z&mlDq7@JO7sq9L->dkvZKO`W9KpiV|MS4fWHtJl_-47^!-bI)&GyYw)r`ojfBaOwNCM9~ zGENcFFw|o>K}UUNYyGTJJ3s)veUy3K#`tmB@UvMmU+SeT45Q-+$IE5{rWe$HeC{pm zBOE6&l7MJ^^dtNejzJLvRxW*NMupuCPqm;;FWjfZls{ybcn$(ks-lMvq&)S8n_Ai9W&($!;2~f{2n9D$f+h{YsFMO9SrN!QyLLiB zbRh2GEN|Gq3WNWETH(b2wnB~YH2Wfy9bJh~qpZn;zYrvi#hU2dbsPuBmWmN4$`b!{ zAjlSrQP>~h_J!m-U6`R-g)TzM!&-dSkmuzdT<=R?;&Dv|VF!~1X^x^Z zwD17ZQ1U|J`S!}=`+h&3|+cT4J^=Hyhm{BJq~)`HgWYa1q8wp-Tk zHyKRGKPc_dTLWMG*2gdR1fkJeGtZ9%4<4Nz9Dh=FSK|MS_5WJCh+muH33c8K0vb5X z@`I&c$ri^Z&9qE@@1GE>;&KAF`!!}Wi1(#(J!QSTo$KisbH)krAH z6V9`0F8De$PcNv3sr`X{irGF{R_9+^&l&toRPZprvsFd)senlQbdtk5eEK|CAd{Zwn>*eG@lYe=Fcd5$pm<{6)B>`FA%6 zJodaQv5FtdTHnH&`;3Vs@--S2G_vD_wqLUk39FZx?PbHN1LhhMSB+uL$#6w6}Ma=d_>mJ+of;cKedF zv|gF1wwa%%%-Ox{+@9)dZ<-EOuQ|GH(j}wn%2MCAk5qqD-IY5S{r>a%DNj6ti%-A0 z)-G4~U(uidu3SGhg=`MQ3)d!J9< ztNm^N_s!|U@n2;utJZw4xc@T$T+Q#h-~Xo9Thu>%w0?i=ufP5F{}+`S9^jo~ml1n| zrA@U(xhhKhuvu{9#1D^)N)LC5y^LMm)_*>F@}$I@8!D^6PvHD{u2}ii5$BaNh10+J zTKRhiYwg~8=+^(>ROVLIS5|y4W%4YP(_4NPJoVx$*}%W7iA^eFK_gb;zj4R6L-qmQ zj7%cTpy6>2h8Z)>Bi05joj4WPLOlf>a|3ldV4wjg#=sEm3>*wj%`1rysVqn>js>;O z&<&_m^LF?FRC*6Mj?4|y4Wt_wj{%Kz?HN zBJfBwy7n)(Z;QVMYR_R|U=TpjUJn$3YfmgFz~<`ZUrLX^0$Q^QIP#5Z`3zt{fM*VX zMwI3P{fEZ+#6Y6NSC_#D{~tfA1mTFkmzpMfDRl$C)W#Uxo^ zXo5{DE~(5(1y5I^hXMM5k}&-Zj90BtG@~6aiEa-1JSoB)w*r_sNRue&+R-Oo5ZX;j zpxV))ySvNA-3h_nf&_xQ|958QoHKLo zz3=;_d8n%OleN04t9zG& zTun=c@7pOJNVc7tJ^^FQ&{K&Vy`UtWdx#j?%2+K-(!o#!HQ`a%@ap_&-rROdM-8>Z zVcH$WkGrEP?$6`?9u)VI0n%B|i!3x+nYQUjZGn7WBTUXTWj>iSB=oz~x=%3HJ6mZw z)vfdtqIwP@1JJ+!uDC$$FvFkaSX5xp{bcUfX>o>br8%sTG3+s z*siA=qv2D zTr*%8?Gv}AXssGZJT`fRlb`q1=}?lw?>Z+$e~Dj8$**0?SePzQtl#JE9QASU1MD*X z-J8IwTiK_MqFuL@pgc1Lreu2k=Op3+jIQ_(k3J8`#pQ3MM0%bUir02UM{gSkx2K4FcPo~AIB&3WP>}63)LP`@cu8>{n zwB7ueX8>>j8HFb9&&8FkKkPg{--$N4%9;d-9mY9gsHZBKv*YmX)Ch90W@$s~dSzUBOMXWA^h|H3$_?x9q&zW2T~<(Dt6RbXyNr^>>^i z`NdY7a;n!DyXc27GOf>Z`p*P~e?nHb2H)n>-~?fS6J!oBQ*j13y0Dr7oGpIe*X-IlWYhMT{?=a z@isO?n}sHXl7_{f2AY3H*2Q^QF~wbd%#vo{uS^Q*J?(y&xuCHUFdOZTR3&(WRFefQ zm(FgeFdr^J*-y{jD@`aXt~G5BW*6-KKw>?V zkYDcxOw{%=Ea+ zaY=<(P%gr%zWX|$zp!>_c6NJ}*@Zel)YZI&vj*$AX^f9H=z&v;0_JoR1>{{GbF zl);wbXboT(IvG!mR?fjOBf6$)t5l8pP}G}_pOe5lx+pVFxh|uMtvC1-fs`D5zdc!q zN&j-Mz3V?qQfXXV|EkKS{J9+Zx%y+dSILwx_q(0zL*3*g6jT|g56_%1V_xOfbW7nf zc#33%>?R#&;~!yckbPXQ>&$;*vIa4Jyoopv2-6t`x(vB)lGRTw+rymVfOi;PMwQ-@RML;e$>t`&aHrl1 z1-3%&0%&2s*b3vTymQyvCcXVg@QluKZqL5IdG98SeCPqk2W+WFBuP0&w0j!7u`5+UM)I)VksaWnE^)< zLaHKsEZSv#BxJ3ag#9u@M zR2>6sb}5I7H3L4HjYWb9zRZW285wp5=1-s^XT{2eo+KO5hJ-pr5ByJfe7JQ(cj@up z4Ytk86yzYoXe7}tHGXpT&tmt#$A&T@nlA{`RqhxaZt3GY^5VC0Xaz`jZN90Q(6~R!1%!xnu6Q<0D@xK+H(dlXgk(-A>p-n@2 znsC%OM==4K%E&fIfk9FmmP2A7VkLh44WKyby^%qA`a*BZ9z3O6d(ptGKK<&io?jdX z`)PRNTo%e)J23orD##EHPqX1sP`7RtE@Kk}5%*82PRFR(!2xi?4UPaLg7&^*YKHff zZ_vj+ia#Ss1=h*2m7Sf=VX{TSOTK+I{uMMc(!S!tQM#9;=Z5=@+$Ie#1u?HBx)ddyF>RJmeu44&~s@xR#J z?(#}=sp-#ES`>X&kiYB3;0xZtFLG+B*ftk}wAnl~k1qM9Wh%}OFhZ7oU?)=Jw?m1L zu=4xfaXO|hRu<42-tBxEAf%;z$KRdIse^A2>F+&qTZ;GT@@Qm#dUfS1?%>-#Ili}s zfGBxan~MB%sx+?KvdQEwM_kc_X-7WPwNawSY?d0*2INjvJa}y2SiY0%dO+(;Gckpx z%C5V?nX47gKG)Xpp6_CJ@%x@hw(^{}?pt3OnDhj>*U|=~M2n51Wr>>Ne8~gI$EK-% z!Pv}wY&#C4SbUk91VaCFvN!|~Vse02(J}BUO7ySE^5-7l?^EW_{lFJ->1jtbjN(X}*}o=v5Ct)N~E znA*iT6GKXFYLo5L{cqQI=0yI_@J2|M4Rb`2MZ1AdiU!e`#xPp98PI*4cP7@OJC^fi z5K)5J}X}>!X?mhd88AwKJkL$8rqP1tTD$lokHC+wEe;@pv^`E(pF2@y&WQBk*(u9RT z`&X`AT)pfpTz)T0;Jt3*woIL0S65!X@zW3cxDbe;Ne74occKqI9a*)foQj+?zrKCL z`xtv{>`zTDMyjc%sr9}rp-!+j3s;4HS35IN!{Yfl+rQoJ6lhEulm2|N#@pA0(%Gti zs`XeradHU)0H5)F1@HGxJoQepl2@J`o=?(67lr^Y_pz_{j|-XCe|S{g>y>rAp3mdl%9yvuXVF(j9Y7z(EokR*@7nY2ary8^>6lhc%)nqM0waA_~s$&Q-RC!h-LNSyvvxqC7VI*N@T0 zhK?WB{P?~-i%LugA8W6Jw@UUt0y6$2KoKf`8vlV;s>% z7Y4*gqb6_#A$FXt6M#}gfnJdsAYZ{_Eb{7zxT_j8*utR}XBtpR}l+hcm}w|V<&csDM) z2ruHGwBlv~MZi$hMs>XL+%Ci!=(njO@FG@UGQtWVb%Q9uDG_bVcIVm6&!q%k^*%GbJg!-H z2v(i;7c70QVdvbCThy`NPDC%@fqsvmmX1UX)3Yz-M1Gi`G6LV6~3j zZH#bP6o4J#r7niF+)hu1Y`M97+ZrNB>8t9vCeYjQfw!KdE3!X-{p)J^zc~RFx9kg7k-q{g3h#BN}RDVuu67w z0(4)@@IV<@>16RA%9gc1a!%N9{nh^&P`w>k6^mYK=SL^hdwK87bm;VU`D{aQe#V{` z#F}!nACEgV_QQ-9*O<_&EMDK zv?Y-Wt#I8Xyk`EIS$&0=YP2m%dod9gWK%~u(fZP}7C)$Z!=TaUoV2=rcNz@VC@T0N@PiUAS22I?pQsepbpy!wVvm)jFF^+Xtl8AP>(R8)< zW9geu31z&n^pf+ZigE&^9Q89^w&F?h$MgOfQkdFQMYBuhbza-%#`8xD*%J3?;Pn$h z(cgFYVPxlF<^|oRJGFn^$u0fP{;^s82aD)aX9v=IL4|?A?OlI)9^7}V&b+u*B3>&x zM24OAOhBPm4<}%rW(X~-hczhQgaBmuG>vcj>4hYCd}S9w=^ZCfI;jV!sWyTmHO<(JfOI15#>llCob%d!A4Q0Q_3ZShk2Jrz+caGgqt(`jPVAjIc4aY{9Y~ok=tZ7B){au#RXMbag1gx`z8fdHj1#VUE?H6tyMl4@U3d@ z@d>M|%U3nvoLlcnQ|i8f>>dU1h*N{hc%1;(^d7~I{O#glS|DM0vV7VM3wLp}xe~}@ zFGS+ku;=>uMN=bcgrCr#_S}T zywS0{Q2t4h@Nwt(3d0bKjpP;cy*aoSj#6enV7kyjDfj z1zvUml~|_LCubL~BF=J}WDTh^Kb@%t)3kx5h{NS(Zov8xGXBp)4jt>kpq$+}<&4+b zCEPAgWusY2@eS|k^pWZxOsGgQMxo_4y_;ekv1~J55yaaR|-f3`l-aP7=@i~ z+hc^>3nkSIIM|gIf&n?}{kyRxo*2vnq#DZ4b!fsHqR(%eB_~AzSG}#O&U5)ihBq8U zqZgw~b_a^>7YW_pMwtxMV}FffIVR;1ENeGvAA}d9m!w7>%{s(tbf`sN!|cj`uTk`q z9vmqf6gU!HqGg&UOy)e3hvD{;bShmsE-k}LuO-R#)zpm+^v^tU;Ovi6b-|}tAgY@( z%u{3{-C7`K@P*M8f1>}w?*g?aj{}fXPQUT8=(}{j6^xdd(iyLmL%t!% zUTa!45ugiw6D{P!p4dNSlqq%SbF*dg{afGEM$-!S%IRssLYih@64IyFyO)P~BD@ND zvC-8qE*f`AA9{RAnCp_!i4*jhann4wn)D_aV8r;n!$J+|VAJ4QvoWgmJOI7;AteZ-nxe?U%%V`#`!pv%| zLelu^k?r_V)7gY&zD&BBAA%9!XNM8X=R@~qS~DBvxfL~qn0%S`&tNPRe;o`!Z42mU}Wmq4ZmaRy|INTAh zTd(q}gd>%NejOby(`9A1{mse>%9fqILwsF)q}Xn9Gqhp!I`|(=cBih3oK39MDZ3O= zJylE))QXJA4>}7m1^4iv&YY)@YPJV&sW1s-UsqWg1S`QEO9vi3#%{*r?nMn z?>-G{f<{adm@Z4wF2$o5PR$I2al9oNX$?x5A<|lBD*d^JvK;^_bBQR^GwkEfE9g1w zT=n=-aH#J%Q?656$16{?eEo0)of#Pwa0*JwVmp@LRZCTsook14zyh|Y?ziwcq=OIlka*7b+jZ9a|W1LQfktE~x^ zhW>|+(U)jMeu~QCLc0V`(fs)x4~DoGaR- zRXYXwoR$n-zq%$lyb+1VV59_}5V zzZFkxc_KyoOt}sq|D3$}4s}Oe&h=$=aS2vyBuTR}D=rJlJ>A~^BwqerTea073-qFY z@*pWgiiXE5T!1pde&jBvb)2QSV}f#e*x3u0M-s#}Yxeaftg8}jKPeJt&x!!qxH{J_ zyBh1n24qBXaYplWIb%tP)p2lZb4}LyHIq8uc7HjN*uX-rbpQF~O#5^WI@EGwGQnAi zUJ69?ZBXP)%B2GCfZdWt59@CEO+uUWXh6tfL;4DAJEXlkUYvAEG?V=B1pdeEC8Nzp z{*MXSoR3j!DmVq<>pJ?I_y^G)SV}HeJZ^Ri?w%VsZU`NSzVvW%n@N3`-ZM@ycxP}8 z{6=E9xx95uxx8lG5u_n!KX?R-dgN|wjHe09g0QCvZHq;qJ8F4<*~Y97p3K(a{em&~ zKZ9TaRZW!qEj`AiJ%Bf7;vA|Dp(EY`u_F~)$zbDFM#0h4s_F)};{$^% zMhDK+qGcZMP2fseezWSP!VsrBR9n&yfq-=y=!I0>c6eCYv(XQT9Y6VokUgQ7iCD=Z zzY*$!vDr8Kk=r9gKLlaXx-?cFplFJJKCq|yv@S!F$LquAROAB23EW4`;k6RcXEIn1 z4#M)>tqECo&Da6w2;ipC$Rq(U*OdV51z?S3!!E%Z4Di=49H6L!VJ2`S0aXzP6U}P_ z0qQ=W-9pryW)mSdVx=OtEyQ+b9SMNI2UWtO)lTaGyg5kq2V}u)zKBs_4}L1Z=j_&!$+l|ig>C3a5(N8Kbej{!b|=N zpZ$0E!SC>35{Zs7Kb|Xx@6Z?CHqSHCv+4CVO>WZJs;sc>D&1Izh5S-zDP?%q3CD4E z#X;U)9ns%Q@YWZ@RjO_LF+0);1KYFoXxuQa_bSrt@29P1%a<3VPm5G)+=ORs%7ROHt>)~?zlh`;A$jHo(9X)cgp;sn zUbY$45yu>BsIXS2Xc1iZ5?W&%Y95E>dvG$xEvQFUvE;31Xx1}ZK16xbZ-zo;sjyCv zd$(wGl%&{&nG0IaK34bbMFhL=q~ws@*7c@}v2fF2yyaZDM01L7QLe8P5T$z8k5@?%oGs+iyH111d9U`g~Clyw=;?Z$J&yZkuy-IiJPI{S3F zS#7-FgIfWIHY|q+Jx=1u5lV#|hvkP9fZy0EL60B%D^L z$~;QVUx(qtSE995(=3*)O0BVy`fHk`tCA(QP)T>-w?;mh0b!(0n&3b^8(Ry(2#P2x zpTJY&catP2ah+w>t+BrOnq|ecQ*+u6l-V==`-gN;7t2${kpX8nml`lkiy6yPNKr@( zP)M7!q*oYL5!h89Vkv@74L`9G)qmJNeEu&sez*Tm zHo9TYK;CoOh4}jYkHytCdN5QQACnHPf4N-aK#uHlowo{n4rs4Wn~@f~)13e((E+l! zo}m0)=rs&Bv9|k+NG7wQG+Jab znYBI))r#D*QW2TieLdMq#4(TKLs^lu*hREfY1W{Kwwbcn1;4OwRSZQAqY6wr5l}%| zEQErL*pT_(=8%XR6{Wjl@Px;s9UL%JQqHu>y%9obaUfUd|IcjF4Z~!edIld2{|t&s zZ~b42$M!iuv?`kiz)G5xqP#_n8w)4W<(tx8<;ZeoamtOj3AewE(re)I9n1?emN z=5kxZ8MAn^&bkC+aWG^G-FHWrw7xy*($RB3?I*_U9 zNC>0f897n5q7G^Y-_eFuPu@}^7o^cYa5o^tuId}#YE^ZRC->w?YHEsyKzp)>15+V0 zI_KX|1L&-|&&PYe)SxPVN=z{KlHlfVWl|$c4jNV)yj(Kr5w5_r-42iqR3Jv@4;X=_ zfa}-#0gGY$6UjJt*p8OtCbO+? z1vZ~;i)`ID{B4jiN=z~v(20caP11;$%Bdsivxvsb*v~G_A_lPQwpNXpXfl)nd6u!E z;-OL{$ebb65v1OP4-6wy;LhOSO2#iKna{&QIm2^W#Qr+uj3j@@+dUmIaNx6Trp_c& z%?aOV&OVTT>d6ELgdnN?D#4Qhm$;OnKI8PQ2t6G8TVNste;gJaq^TH_j1hY6*Qy%) z&*SbC^(^Rdg1Qtwd$NDiNLikyr&_d-EBD*?lJIZeJz+WuPJYMc>}N#oJVbx`mL35^ zf-mefe(c|a!UtSK2UN_Puu>b3BS)GBCwUZ4|E6+J=C?|9(gv`~KKS1%VIXV2nhv%8 z^kv&Km&CJ23Y3L(dxRbiYtGiCsM7Nvr`?t+B>@TZSyyE*DD2??K zAh|(ywbL?0QTN5G))ImAPJ9i|;fm6dPKF8>8p)XXCcA+Kd2MV)H-kiA+8NC>Ku$}x z3ls92+tpiF)V!7FlX(mSHG%UY&NB%mC*$hRW)qt*$ICP+c_=l^*KmvdJQ4PoE5G#K zC+ON)7-5-ir|S&Tc3NkQeA`LFw_+}%o|Ma|Um*+TD+ab{?`6yx+m$sl(t;Zk`K%Vy z68g>UO~yWMXMlqy{|w^$pFv3zyUf>n7ybMZE|~kjslHaA*qte6V2$1N^G9>O^=`-9 zuaIv1-S19lj=n#ud^?&^e?bQ!|4aw5o$*IIGqs$;JY16*?PP?7?{>yu>KkFB2$%Uh zz2E&H6pnD0!(tzcNnJ0;;6k7yw3E^w?a2w|JnX3pLfL$@$>$L+1XdhZp45}Nkv4xQ z;Ta~IEX_Vi;#I?pux>1|# z#q^}K2%>JOp<0My$BM)i>Sqk2)-mN{!l-j>{velLJ7c9|nzKG_0^W+(3;U>B-`G6X zz+7w1nIJZ=S>h&l``BYL^@LKl0u57j8n(!d_?dbz`#wbcrk4MM8WT(nFaLY@J>I%L zkCJTi2erHT7?@g+=TGYI)L4X_JHvIy&+|ZI%n3QYXC#U=xIAkduvit|r{lEnhnY38d~iZkIwh>MdN6TC_@1;u4CZS7lJmCquIX)_HEI8t0FQZu7I z7P^NWb>T&B0Y!*hp!n>^<-;6kDB36UG;eREX1MaKp_(`~FQaF; zewLQyvj7AXZ94#&CtQ{8uo#Na(+wBvfyv&dVtLlYIo41UT|f3an*=@wiYa&bFcL`3 zm`?zNT+0%RN7>+XHkwovgek9xO7BLjZ}yY!hc|HI@@uFC7q!M2%(<$sx! z*FWqijQG=JSkiBke8|5|cG&;_ndDQn?V1AZaa97rCb5dFUj^*4T8K&V@o)$PW70oZ z&^Qr+zbMy5tn6+t9q&W7tkN<=Ur8r5V9Vm@=*hB#%`xsZdk^4`-k4ujyx%bX;C$~1 zwE3pW4<*^7JB>c0KhCd@0F8j;vuKX~jO4x8G7#*64!}l$ElU&0CJ*$UvFe2j4IrJe z3WjYCrNR{e?>aW2!-*gy0>U9bz_gIbeIa8lq2&{=yfzPuhZ;9SU}WpC^0YDsB~ zz*PZgqOdxGVlB_1+8^n*LQPrgO@v5Yct-TcYvA1!pnpFmVTJ>_W}w3%w_w3&?Z44H z#Vg_U!p?uAu{z$sO$>5sFODtuBbPLneZp(8KdbYET!)K2lOX@Ke`CtN^=rN%^#fWD zGCDnaJ48HmH!?aqSvv$CRRrD-*lSo;I_{mHY(@cIZ?<4>nhmq|Cvba>=4p(?IyAZ4 zyN`#y3?QEY6+-YnE8Yc-*iGglqH_KcuY7?}6SKF0bS5(-18*}tAz5TGS%;Ai5sg%i zkfuMhLtNtbA}g?_!(WnHHBycJM_jb{Z*lk`XA#Ol12@AyOam z?h(<}7$NOMH?)n3I&Ds=Cmn)!DG?@=CIdX|X2K}DIGL2AhFrhuv9DhMUNiut@gB0~ zZJ$TJagP;|Qeklu(wmUm{-E%Y-eCn{hnktsD04p7_y8DOwoaR;7t`ofoH}{(!XeQ- z`n6;pbt@iot6BZe3g91y5gj#Z%w{W3ZwOByer9}g_mKAk37&&c&je||zS&>(YZCiJ z%SKlstbAP)2Nasi? zjV&c4xZkJqyft*7k*A$39yK+hSMc^0d{EO?q+}r>N!^C=$G1WY>RE;m)f8kikiS9-m5`!bMIY&ZVTg z#KOmJn5y>H85Zd}RQ>SyBsG+@wy(|YVEonilG$=)X@4J1eXE#i&kCZ2dT&9R68%!L zHj?-9xf@sc$o}Ngw&R(rS433$H&N$QwR>gy=K52%(sSZFrlY+lOZ|W%zQ6T4)mY315!5S7R3zaDq%*FHk z(5>Y3{8HN(BpptIT5*7wId4{;JugWu@*Z7d`^Yn*I*HTCRs3NOUKr;dz36In1ZxRD zhaUQ6pd%e2w8q)Y!lPp9h4;>r#u;bh zW>^;V^)(d3T`oa760k@~bd>n(l|X-jZ@C-KMn@27S!_AZ6T{6(S@wh+tmu0Tjk6=~ zp6X~UHn*O~--4geX|7lKUBH5a{v$XjyA)RRPr*IE1)u#ETt#@~=FWbvb!6A+11qXQ zs?B(pL^@(uPCBCS7qDkfby9HbzkpTRT+L(fCI%sJp02Ke>P7AAe4;o{3e0!8`(l0_ z0Z71-!6GoxOl%pUwY$0SKY*kAk$@?Q)1{m5U`0{XVQ`-Ct396EeGJb!@5Pm2MWc8u zm(&aE*~MT*{W>$dnb zR2Y;!_^)FAueov0zc(G!r5oKw1?M*h;MTDTt|$krD8TFP0(=yPLE}CT?_^s$AhhE= zC$-mzgOG9R2g*F0pw8yoeo=mS5mJsygAwsygM~;7dZ+MItn^O?L6&iqY+}VynubXD z%4j9}dAC=MXj5aw+z5H*bO7NG-Sbpc;*DHG2J1xDhY_RDnmBeqM~Di@-A{+p(~6o< zB`RH-h~ldww?~p97oEP%Kt%hXO_(0`$zf`AC9?KNvQ_6_-4?7IWccfFZ<^Os*(?B; z6lCiX0bC}rFJk9KUzU*BV#*a@`HY0>+8~B{hBUE=PO*saM0#R2`FhS-dYu;Ph{pC{ zAbQSmC)FLnU;O(~Bpg>geXihRcnimkx}6Lx7`o550~28RP(>6HHa)X9Th8t|V1^K5 zJTPJeI|UmS6>sddlxX>k>cxM5>z9skBIjGj`ELLx<=+5@5q|(U-g*S>zzl&9hK{>Q zViq?%1u8O>9NR5}qoAw=vLXmWHe1eb4$z1I?^8Phc3MU?0(J)a@R1yee9@tM&P95h zw$>~DQlK9^-B0WS6|m`vY&#T&WhH>ei_qh=b39GTxBi902Xe?MsT5);vN8eLk!Y1B z^-ubJuD|Gu&8&nrVZrA2wpsw7NJ!A$0M~zq(?bvK+&y36q7l&qKoNAc13kQ;u_KM+ zey7q$a0jFJ6%+R_y#u0X*6&A8RuArJ*R*lSHH740>yKsFm0skxF8>WSL4$cxN zcr1L}?p_!fYLX&Ov`Z*PlT!dSjf_G?zQVX3UnDz79o~sulONuWGJh1^|4Fck|&90=UF8tW1^MCz+jP(7ThV|eZ@G877h4$nKY88(x4iV zWIa9_6mfdr&eAe4u2d1FqYJOIm-J$VKD8Fj)ad7Dd#{Q&>wC#MZ#fvpuB%2B#8AH^ z?LN#{!Zqra;@Rs!Fk;~+>7-6p*kNCAxOXtGsMNSrD3G~FB)NS_ihepDw#-Hww#%2R zP@w48`;wlH$&zwpVS$4GRVP(xUd+rQ>uAL#9u;(4Ul+RX#d)sJY-Mryrf3oK>yXK2 zW?)1Q87DsE6U&qdOb$*+&oBiK*k#YbxXJHbKx65zgs@3=d|eskH${SP26Y!*QWm(0 z;nl8FdVc(iiVaMKAN8AxEpotgvv!Kt3~ZC*s}~!ox1H&5o92U&Tvif}pyZ{_+jeoT zS`Krqh@$bD+c-cf56u`^zFbfYXLsx;wP?dzn9{la8C zqGPNdJh2O#ZOXcZ-Lf78)ryUpMSal(Na6O&*s2cle*1dg;Kk|JvA z4y0&Aa3YOEzgLeQ?47mjb5jZd`j;zk_sUqmo>BzlaNk z8tyNERHY^jcD0AvXhK3@<8`Gl!UuCCulMcJ2gn|9#x;0edU!aHzxI+&6E==HV1Gs| zBg8MBat`rerHT877Wd8fon8E?nx*SWo(6z6l+$+)W}hp(@R~ z1OiYhr;>}Ok{iks0fU3UfUZGSLgwFXiyj1fqm5Z%Fh`?-zyvs%7yvXXm8g6_WJbZ+ z^jk+@xPoTj+5nXURLG<7{V8fs>)lJ@K)G);= zcmWm1nOCDTA~*+19M&)=2q)fc%V6$MFEsTOzUi)V9ueogdv8Es-mBZ8>~kc$iL(NQll;f<;(j zk7t8MJPux-rX18}bbVD`Ic-DG?L4p*q>1X0@pA*iq$LsS&xNRVdW{xol)&$((giAY zcpTB#n?B@-^yq3OSo9^wxHf3?clr0`BDkHWN@SrA*}9YkY~bIGfC>_br{J<)1gg$P9C-1pq>*3dCe{l?rm2G)siRaTvu9LwTz!csB$NPnI(pR*9p4&I^3Yy{PhJbLXhJzsZ z=ed1tYuAs`mX;P~u74ik_cKh%m#I5`yvJ!g98k_mh9Dmq^P9wk8Z;W)IZwU06DcpB zHB75YIDF603_is#mK}gO94k8?y|Had*^U<$$t&->HcH_+} z&)uFwD{xV$YCe0z|MJv$2SB^AdVCXky|e9AZ`Ap^H?@0`{(67<`tWk(0ea4!8e22G zc)UIVRac{(o@U>GkM^&3tOyG+8{>kyIx0w-(%1H8UI1w6DIV#{*;;609>%;YLmrbR ze0)z`3&(pOT34tC_ad)PBiEiwTT@VsZCNA3E??c?g5@r5ZTzfvZen<<$K0GRW-K4; z7HRz*L}|MgfnGk(Jl2 zh;e&q+l^;_@hktU>6lC6PR3n#TK5UqMM?QX++xn+HxrjU~ob_#rIU$?^}%}x}2 z@BPFg{o~pHbz#l0PDt2+q<6P?VC52+Lc&k9@=_;EEJz|iD)j31B)DF23j$SdFuS9b z&sC2+Q&)CXU`mRP&x7XtoGn`ykF7v+6h0gR#PU<3g?JqP_cbe4sPN@ObI+iR>owyM z%`VogjSa!ciPHP3s~?x9&-cF0tuHqlq;q;w{4y}#17`?)?EtoP3Cv%I3dK>0y*=_4Y05S=no1F{f6%2s@8UC^>gP_h8b_ z?6vMtaMQsixCtNJ#CdZq>Z3#S(s{on`-Z!#>Sk(e`PyE#HY4jM6=aONGO&NVef^VV z7nZl^Fzx>A#%ao9MlvYe%%#XFULT-g)8A1<40y$Uiul};^e#R&7-tKLiJawcN) zUCSv)d-DzMS^_GDDaY$$)6znsd6-1ool}Q#mB*N%NFocY&%|*7RIqYQA(9T|qCRW| zhFu-hJhq2EP+n@KDnLBwS-YE{M~2BH+VS1qrk{o&M;Lt>acUp-am@IKIQMrBgJGC8 zGMfsBI+UwWd=(fDkP~;hQ1jtU0p9Zc`Ve8_z03i91Y5Y>AEF(RH_t{(n;=ltHNYM8 z%is>OV{k_txT8j<1=jK35Jd9`%@EINgk99zzX$y*`u8Bu342JQqLSYz4Zq?4K>7QC zzoY!`D)70RVI9BbEkp4sOglgl!C5y$pazG4!MOjS^)E@wP>0MI0PrwG@G#rIhIIoR zkT=<+8-L@hLGiu${u}4-1ODc@My3IFR-a-WJPZ>&?6);kTjz4Q2h^L(i$6oX0fHp-Pr{k`+htz3Y95D~jidF)jA#8zR6 zDBw+$?S{$g{?kd=?r!F2?=4mop`57a7;xR4&;8*+pVH*J4YxaQL`IMyGBaFY~~vi z*Mv>w&#{r_6)&wU9b4BIv3@^C_U9hP?td&@Jz3XI7&sG$Uxuo;p73Q%`eLL$U0byJ zKJ&MBd4!sYR?d$Z-fUj?jl_;Ar`vz`TmKO-Ipgsqh5N+ude1%^D0M$`I+Y^Wx+-x( zIl8(~xsl?x(srjj&|LX*>O7wFvJPhfw z;4hrhQ@k+6ZEwCc{2BhY`%&g1*_qf%<|0{{<~~QWl1L`*Wj((>!qij3>^(hLK@2Nr z!@C6eE|SOjoSWl^Sdg&>HW;H?XXAc%;4UzXj&py6u`UM06$KV+qbMs=3JH^Y8p&B( zksU3gENPygac&BgeY%vT%y{P)R&OPe;ZoxGZ7hUk|k(G1jFHC$OWMhS2uP=JH9 zWYyNToQy;}*s}tof2T8e@f1D0L;Rr{VcYL}v^K(P+xtr?*nWg84NA{EjGn|!N>4kH zpt;ab;#*QOAMw9QctjnH?v%+F`DO{ z%0r%;tw5jqmenlN_(G>XNr&WwS|J*TToReo${+g^{QFuxN9R-$wj^>M=Mx@Oc*GDF4{5nZa2mnbh9aLsP<0)Psa9u)zxI3|Eb9KTW&SOp z<;JD@N{(^xkkAZBrM~ZUhUl``WAx>HM*(OjIji%F3;v{8*X87bhnEi%a1+(@Z7(AB z(QK`kzEHMj^tpop>R_K!o$$J=!Go02+Pvq_mUarDb9^%%)B3NBlx)62K7(T?EKcX!u_MEl)Yub6-a6*<%EanIAE#iZ28 z3B&V`#+)YqkFd7@Zfn`Pgw4#%%*-4!gUsxhnK3cN%*@Qp%*^bVDQ0HJoR~+s_q{jo ze*et;rP5KUN?LoZ)#tQ!_fhu-{mMhuyE5INlr zamct7Q-dp+?nrA&dT4NJPrBo2O22eQLS2$!@O(3wS0}P`%a+~)#}(^Kgf`FKN&Crb zN^@pgY>n5|zFQDy;O>W653@z15fAK>TSNY!XKc3lw~0>{Zi@4aN~!t#SF5*3YW{$6 z{IeBmEDx#d2S0+J`P|^Sk@#-UJ_V%toZHB5*$T*Yc)RjK1G4%!y@E|+^!ruR2kwkr z)sPV)gf*R~b$SK(XNf1b-5T5+_wH5kr@yaP4SQ1>lboFk#AQzUGt8*2ZVo$2ho4<^ z#vZP}g3D80CMQ%MsficuGPw{6v=TC~KOqX=p@}xB_TlBBr-8C3H zZ)G#FRQ|Gei#ZsJP2Em~C!BV*SlalcZ?u6?bE;f=NK~Eiqm+o#E@b7tY+Wbz-P_%) zxIj!1TWcx1Fr~B6dV;vt(r1ESbvru+Jv)QwLHBB|g4XwJZlttJCpJd+e9mM3-ug`g z4U*UO^boDFqiMp;bp9d4eWAUx;^^%OZ{NH}sg$eeyE%We^_cDTz^=FibK{KQ|PDCqm1@=@cgtWZ=L za^$2iVKSdcs1E$n?!i$)%*;^4N1BLmRh>=cU;Gig5((-Eub%eeo-(3SLKkGnN;7X7 zewIODdp3O0GgGTa?#9)sa%M}?j5m6c8WtOlji}uQyJ*d9sJ&4sF8n^FP87=)jVah}a8miW?k;i26fhgI1%TU|Pc zW%@jB=O0U^<(`Ri6e8-Kt~?$Ar6(*Ij^rfTrTxw`AOtNDi~rZwAK^fQC4 z{JVb3on%+b_r$Z-0Uv3&>x``)MsxAi%^&S_PfBV&OtltS^Bn+84{0{DTo|blI|tK= z4lT~)NulFoPt_@(DXb#8OKC|qW@X>5Y=(^1Q>M~2pF>aX(}bJrAEl@9O_rZ!QcFsa zB`zntI5Mf~E4C%UM691*T|z?+7HFX|FZZ2w-LcQ&0QDo&xTYIf-g}wkB7#)9YBoVD zhZR;wStZKV$xD2=KMs+_FJDXMztes*HM;2eY34JvUhZ4g>P0uI{g`7>vRL;Fwgdm$ zEd$H%b!6l%VDf240W4=KMx&*VfZ)d0t_KP@(hOZPNc~QTm6|pf9KQAg-i<*!F#&e? z<_Gd9S<#|ruelQvVy`W8wYQGl*B1!jp9zu1=LHREr<2iWa^JcUiqER;#{kI*F$CuJ;rg0Pf6XtW ztC&=cs*bUxoeeDk1c)mIDP zeTS9b+uVQOdUSfowPbs7h3;$ww58sG{b;aaNp79V;YWizxy{fFH^js0yq|aY& zMzIeewU;!Z9r6FBuuA>K9Rx-fg!Iz$# znWn)Z)ywA25IEk&K)qf*aWRQh6cS@|m;`*HcnoP>E^5{2(-p*}?P{j#;(RJv;ZxD! z&f>`QoC|I>FK!LtH9R4(T-OC>(SZu7Xw^tp6gaO|ra%vEP3f+>QQO{In28hLYfwe@ znAol6JgvsOPMN8ObEt-OP!J4ljX~H%JO(M%cipYlKCL!F!r_Dd@wf~UmExa&R;^wl zHREZ6(LT3ZZN_XP;L`s4o}GfZ<6=?lhnu^Nf~O5|?Ud^9fUeDeZla=04f(G7AnkNH z_Gfn+4Nsdi@R0BRE!~_Tg=U6jo;JyATa8AN|nK*f%Q*SGNe=Ga)&x|=5s9<&{z z$y`2lHD8!TA17ny`h=KPr)GOfM<6>?%Q#f~wR)2o04ciL+`{g=6$Lu*>e~NGD%MT!c%*dWrm*E$1BG7p0aR5jK{2YJiGAffR_;} zXO$z@9?gCJ#$@O9t4`-F18M8!C3V=BYn|8}7G-`U74~!1rAFk%_=zjSr;jB4vDd>v z`&?dvDk9BcQmYN4GZmkc{59AD?MO^1+Wf~vHQjv9d%L}Y3CN>r$>iafQ}K$M)tj-^ z=Sy9YlLu0a*i#~stDphtJCWy~#>K1zCNcJJm`=a*RRi2tn}ssI~`+lf84! z0Hz2lzjemz{$vZ&BKWU3m8SK6)uKnY;p z839HZN`nX?_sFNju6-lTMXIDAAY$w+Ll_IQi2F1hs}n2L(?pj577&<4Q5U>J77f3y z={^u)d!aG6P#8M72y-zA3`z-9vN8RTgo2PH46~=x4g?q`BASQ{-QOr=b)V7eN-I8F zh4p1Me9?g%`BK3|CO*4|A-SYKWf%m5LIy%u=frrb76#Hci-5rTz!4$FZHnzWPJ9Un z`|pq_p#KhezG?vs>2~o~NWRCA#d?c>h0KCNArlVkLsIC=QJE+v1#_{cwZX($r+tV< z5s6eyV-`1@!5BfXH-aJ;H@qPaL|W}kaitRnF|>pV$@4suQsx1wtthp>vivFvA)JSm zu|N}A4|ZS|0t4dwB2vRIzH<`-)A0OB6k;R@=67WG}h$sXM>S{i$;|$Iwy~bsRIvyDcd%nxsJRQqztsM-it0~-FFw8~zKw3ZJ9}gIO zOlLv8RuTZgFdzuieJHAmgFIQ{iILS+o@a+KU#P`FAguFwqn&Z+g}2PZKuB7N4?4sk z$hT1XVMxKy#US)qGH2whHDcj>0>tT9{g;c;!eN`36D8&IJlb_22B5?nlWuT@!$3&E z_&GqYa0|VLD?T?)*r39s&$ioIVd6Zka0S8eu?6$mplY!Pvj*y>^~0cQy^iI9Kh{uY z!=ZxUWcZVobt zUm7j#Spko}%h!&RD>8q22mq+0Vq5+VjU{E@NpM(B`e!2aq#P9S-FQdbQsWa=-x&xtiDeGR1iq3o- zT}>Q4Z5-WQ(i5S2yxTM5Bwd$E%Nqa`hkgU5{pJU;8V$=PQY!8~eM8oQt7)^~bZO zG-^$ij4L%8s1G+Mb%K16KYCC<^nGMGdd8aSrZ{?Mam2Q|+}RLnV&f3w`xhKW7DhKN zrZ<8{w>w6OJB$bzJW=(1e+nH*BkT9F>VF6jLGLFRs{sz7D4S2| z(-YTjlM!TXf6G1=b@^yVUO(?XaPK`#Du$0>r(>n0A7SH}oUD7Z;JMq@ZYx_@UqAD9 z`Aki3O)0p)ReQZDXSr7a#sgA6!PRbe=?AUkKGxA6Jy?AD;{G<`{^rl0t0;RW*OrW* zv{+JW3NWA4WTUCyrC&?DeKunpI1gRf4qIUsqQo;W)zLD~FtCiucUT~Sk<>hx-voE)vdgscx^N zlG&5Mo6cx3o;MUyYpOVLp4tpkORVopuHXBbWa%AmWt48^lg}E`gGq;XEN3-%?lAD5 zC><-rBfAtCNeu35h1bv1=MwI3qimw0`X9w-C|y2@UGF!hf-s*Rp*Slx@`|{=QM#xQ zKa}GnJryYq=WKj^OTgNF0OAdur{7PY!=!5o-p5SrY|G`YT*91Hfag>8xYvvW*T@)&rMUVU@)Gg_6-R$ zknNC9?P44gG^OePqUQ|h5MICkpL!g8aplNc5YNvkbWR@b%x(&$w^ASWb`Rirp9UKc zX%#iCzp8xyvLiAONbx|@e&Z!3s4YhWIsgw+pkY^o2jG=!0(g{33l3UazFrN}+}2y?uFd zu|E$K$FfO(*X6C5M01s622Gx@0wH>Z}=FIY>86q5wE>GtmMSP^YCxljE=0{<2 zDAQ-4P;7{E2sA9R9Q*W&S4t_=p_V`q1%F}uOT?M57{?zGKvw^65z#~9jdI=ke+yvE zgPlX5?;ulP{s48Z`w$H#y?m6oC^k$N1DITtb=w3MmJr#P_OLpn&`gXSc+9T7)(>Eol1Du|)unO8E98T4o7MO{J}Y;1cC6QOxR% zhCLJ|{qK(=9wHw2pm;R3WDC1j7L$@_N!Y@cLAR1l11M{2L$^|w`CWL#GTFBpsYa8k z`Vn}xd0oNq3WZ(4csT85!<2blS(kyg0k>RW97_5UC4-wYDbW-(%zm>7hYy7`1guZ_ zHuQ%}zogHST06pIb8c1Clt2#|^(^rY8BOcHGtv`*9v<2fCt)Z3QE^MhM)8MW8<+gGJ8D*w`)DJcYhKx?COf-!h|b>cn?ErOrqPVO99@I`RdmsralNhcz?^EeWW=HZc>?r2a4PPP}3B;TOCK9ZR2!e$N!)I0eB^lcD zF_Rk3(V|!5M2h^S3n8`MaNHWr@RAps($0zlk@7=sI;uF=y!jcInphA}YqFxE=Q9NEv$1S+aG=6C2~ezMs&>mXc9b;e{j|XALyA-acve`8kOCRnCDWn9IJ00F zF>Qv>CUiyUJDHZl5OIg_!Z>yOmSUB;b*q$Vp##eG`A$%5aOnIwG1WR4mpO#~!&TX0 zG{345ydKIJQ6`$$sm4Sal2qF{8cYHx233b{IV@SUK0xEk=PFcuwm*uRKq`p~?OU`8 zRmR{{yIp5Vmsxsx>q{OrONTSCLO_iXp@VeLYUKJ-*}Rlj&>BPSiwl8jC>zgGXZ-KA0>{W7(+5vKUvSBJmC3g~%EzEKS%) za!w^mDR%VbMHY~Fi5f6~zOm#rnCedn#!PA<2K~tZ8@l0u;LT)Q?r!I z=iz}0rfRNl4EGz}qZ-LcuCUsL9pcfXPZtSm?h@Xw<{{Nig$aU4zYa1G=6$mgZ8maR zXWzkT>x64E@}#(=wb3z}SiEpy843O*drfK>ysT<$)MALh3@lEJ(o5w&uCIVZB&iuD zqO3OuUD_B*$dp3aD8`=(PX^s$p9JZNIt@`=d7r#ob@(j8)T2ULIUYfc)eBdFu-2U* zO3s;>Zz(cQ?K1+Vi%N2j8p1@9wQ@bR1STv4oQi~YWM0H`rHmh)`L&oNCgu@NSwXxS zYm~))`pl<(+q{TB{TH3airBcSM1&_zUc}m@beZwa_v6HbDLMNGG8!?=3#sIpr88gI+w0>k;M&4f#jsA4Np1`d_D?9p= zA|`D^eIT7Vb0IAc_Mc3x_d=aHKm}4yZAvD&NR^dFRaJWUpQuH!|3oE03ZW!ktfNXp zRQs0&dUZex;^DFWSTNlgk@!S%zZ$ty=82l*si{1iwb&U!2W7UUu2xU|tEQksV(u#@ zVaTN<5gkjRh{-Exk^eiw zY@Ux@JjU3Bmr05^D+7zV>D6wsPV;@4vW(7mU!_Z}$wLHfVo3nU0^0dfn$g-hO8EeC z?ts|B0kQP#KqUGT_iFH7(Yms(usxPNg|bFpdO@TS)-0a%#)d)Bbz3kt3I_LxP0jlr ztzYT4>nY@q8)r~WLb)+F4a7-Vuq*V7+++;BIS^11d}1Lv6*~G8w%7Dif{7_t6l;>j zBcKn?ucQh!^7#%mXEXmtvj$pt4(3!r?NvX^9#cVZ6g$57x9`$xR8iS!Z}m_? z_%Phh0(3CkqQd9(KM{AKcH(O>2*nE%xToxr?JvfKWa+jX6P-MsLUMmrf;R>$UqlBD z-bEmqjc7^p#5qpfr6Eaz*P1Fj!9|IXEmaGjtEAgO{z#QErJwE6+tM)tFR-$HLJ%G} z71z)~r_6Fk3sxT6G>CH~+0_f#avUWU z0ZM}4agKcPj9b#M78r`MTRO%M*c1fPJgNEI8?2#0;6*@6yzcW1v84Rs{RiM!(maog z=OoFFZR2fSL4z~DV0+GOd@#JocOBKVoM`B)ga`bCRL}Mmp?XqfAd_{~y1-0OQXR#0 zQsW)Pf277aif5!II1VAg$ns=Ck?gt_L`24;0e78d<;NL1WB%h5lbA!B36Q?Df6#)< zwRj;*%xVr>BC;0A?y9O(q}sqP)&4CSlF+s$v^jj?Dn4vz;cdE@_7egc5=GXnDea$$ z+_lJwvOXLN=Utd4ret`jyl?4xJYdt4hXbfwBpL9bGawXM05wf^<$>^l)!5RFH%Opa z-_1@CzfO_vg3!h}dLrdGVga`cpMhqGbG#^b0B%7Yni@4J$Mfo)OM(r!`#UUIxtMl5 z#$RFi()Y`MCNt3a__InUsbE@uu5hjpeqjq%fy_v)jHI&_ZbG2T1(oK>F7vc52tt>t z*F-Be{r~#R?>=CO*C2)=FKFl=WTLofr2-q8`LDPjY16UB$CLyy1Uwk!4khUemo!|P z3%s`{ywd_y-lok+BJe7np?Qe7(_*th8!Gf>;;!|F++c5o^qg&)W_ljOGKG-Jg`0=e z>7@z`R?U$a`|;^>-8C|v*nApVZe&`H2#xH^5arb_>?tV6c8c13^l9}WQ(ACy^UJjB zL#`Dde7ggN0k_3o2B);rkf!Q(*Joi|mFW2iWVW$SzQ^MbpZur;?}QY~man3^fbfe=^$T08 zm#t^#Hiq$$oXvhtg>%7j3dN#Q^W8&w{*{t5fDsQZ#}cs$P80kEW@bc$;I?x!Ob}!x zOfZeLcX1y%M)-ACWeE2MdWaasH;*IWcOd9ZC=JqP+#4xjWtqSp@{UEAP?LPkQQ%yk z$;&p9P;A9~7>fm}Z(mlk#dorIzu$p~JQA;^-ZxfnYz0hGf10*$h6w=! z3H=>NAUx&!4YaAADDbnP{6oYYc)r(#G*gtaqG)#!(-H=Zb)fc3AmRJ;i&~b!GZ^*e5_`U|!m&L@Ve3V$g z|F;+ykKdnf{`vH5@ozDl&_v4ty|PauqS3#>f8*{UGbUC7Z-dB2_*1pnqPSXO`S3Pl;nOK z%=e)V@wa0*A~juxT)B-xOoTUgWpvRnE?76vQ`%lf41b8N`l#| zL90WaLH9V`O+Xf@V#z zs*;3zPusHgc*s6W61E_6DkuUQ!o~>J8KRf#CU?F0IGvPhv$6YHLJ2#|Mr1fpPz;;D>Y#&V26cTb);N;dy}$2Ow(3TN1bgGYx-st13@Wz_DL?Lw zvlwbtg;XMF;?^`UI96?j63#?_d-O_mOu^k>wX#@ykh)3AhJd(op4m9$ssjmamjj1Q zUCZ%TbIl+Gl&<+N052)7QV&5KM1hut3)4_^0DG1>&-Ay|@Nc6x1g)kLehVASr56U68`y~Zq|_%3Pd5T%U1i^ZV(U}7vMtt#hCdv z6sdEde)327F2~nZE20gk~QpUnq>S`>^y`UDYgXKw<50e6=Fk6q%bx9@$Nk?aZnuBR$`3>(ovuYPtR+o9zR{eh1CH&f|A}N)ahcE49+|D{CaCrfAgF35k_rwc7 zzZ3BT7iXCzAM5-EFa!dMy`ko%ISbSq4ueeX+$Rf%skKF#C+rZoxU(x_8RXn) zk*bZvETFbEw|8ftaSPMgt>iBW;ksCx2>YfNqlYs@tzLgT?g|0)4`0NQDVV%qylFDt z_q|Eriha7}X_JAd)vKgU`WKDO&Ci!1vT{Hs3i;pe^Ql!d+2elRz0C0 zyOg7$B%2naKTX#_8v#rKsG*vJ95loj{dJ6Ub@ryZpVG4Dusy@AkQla+v~lJK1bqcJ z3XJEWj`GsSL~61Xzw3a6*)LI~O&z1ou&)(nP60b<$&FZu!y$yjqM|OnbZ1dzGo%Tb z-GLlhYO?A{8tOkGsevJRPg9-I6bo4BDlObQVMTfUoxu*p5gg3vsQ2sHzpnm7WVay| z;cd_2Qs<>burliACAL@QwE}lh0vwR6Ogzp*3A@r$&(WkoTtJ93gqQ_7qm4A)M7?>? zoX6*7rR8TOE#fe!0%&9rMR{rUEVGkf2=s9xF_e{DHpJeb!I~b_VFLmWD~H_l1eHn_44F-WmPcI zd5-x`c>ZDd3^k}>G$?F%{=l0sz{A}vjAscdk1|1H@a=17(kx66C)kz5I1w6jbRIpP zKlfMg-YWN6Dn6v>o!40%j(~wUtjDLjT`bN3E*9u$VI=2jTV^{D@m5Ke+!<&i)=Vkh z!3Gg>m_0+BhGK$c^4&`~_N^M4@=EQJETyECAZL}fS)RipB^`1pyw{CersO$tgG;uR z=Q3crD2WVA7uh^vIFJvE3?^hSMtr8WR_>bf^0Hv)sW&1MJ}qKR$Y>^^TU^YHT)^Nq z!Vn}SPFkrZC;p2Q7rSSZA1@8HbDRxzp%gsGT+ZAe@?cmtd-QOftrEbz&=I2^l4+S- zgqKx}mzK6h2S{mAEBJ3p;^G7-ngDTET--zPqHnOkg9i=un+jl$=8=p`bG$bkc$R4K z?&>F9 zLpvI-xP?{NK$acfBJ**p&%7}Vyv1e1pw2pNC?1FIN?=) z2lrGi_+zwV@*%Ek--Z5ivZOj6fY+3 zxD!XV7np>iJVj}+#aR48=DZk5DM_iUqzJ$*=waVcB|#>%IbTZzAZ4VNAnx}hJ)N-7 zq1LJGEE{iuebD4cI%Y+DmlKc`(T;2KmBl26;%?I7FH#kE$bMM?S#-FNyh|d0Y&FY+ zEhSr$(p`oKUNyvR#rB-}4&XBBC2sN7E2vPVS*-~d-|0;(rN?ltqo5okT z4+~+E)5cNp6wtwkTlB$W0W0C7vMH{-4qiSh{=EorTAU=4-G>j49l-q<%q>ejTbIoX zmG~rJY%vG*m7@*4+AQ|ZKZOO@5nt<*d*-J}{+c0aWM1ndU)XI zrZMrgibkZ!4CCFb5*ip1$Q01DOm{`=#(L_cPm?fO8pmd1H~ij=>CgN7$q-M)ZL|+o zbNQGQ4g4iq<~2LC4+IbfaX<9x{Uw0YAYfS9sWUW_WVE-q{u02mIr0KAGHII7h(9uG z<~T4xvsW7#3Cl{FT4$0>3OEhksEWXn*!Y+((J}`_GDU$NOqj9Iav6rgD!++`(K7wK zm(LJcBrO1erQL?Y(7?=~!Z#jx$-s6!SVxgb@E<}&{8{d*kDcUGdLZA-cmj~w>nz{pgJCyZojuP%>RIy9z46myO#b9WRHaleYX~+(Ee{y zYz()zzKPkdAOE8!U7?VqK`%H6$T94HRd8}Kb9J?{xA<$FRkOyX^A8@3p6yb@wq0}B z7AN_A+Ea?UEd?rD;3fee4c|cQ?zs~X@)ftq*CWPL%+oF}FmIo}_x899jVdx{A%4k2 zOg0vTV-A=D5vQf66{nqh*xi83R$Y`Ao>WM;ic<9~M ztWlg8PTSfS-W~@B5nxl!TmQS98y#@(Qaw_95TT``Bzb9s1}VaJu`%{kw@h}a7sboi z%;9X8Ekn0rqa*rjpYfj8NjI^W!3Jr73zZrV=ZGYDO~tH>``w_MwCw@#cFV@RA#W&SK4kjVJ+4K#Qde8?zXPb4`g zi0sRSXexsAL&|6cNE;RQ7x9P<*~8861$n`fjB`azc`g#N_bqV)*5h6JlpiTy{27*3 zhn5H82nDQHl~;x4=a=zxq!5!g%ems-ZiJBEs*2WoqJ!G+f(oG#sButg_aoS8y#bMM{`%4FtRbhjZUPzVN_MjlvaxOJcM4XC!h z5H$<&W+1xT)RT10CLw6p^8>OZ^K%`_uiZi0n0Ii-&j$kco#1f*IFpWgpHP}^Bk-Do z++57*3%I+t0b;pHd)95f59(x!!XM>k)jF=V;nt`7>H|Di4CQsmNnY*cksG?O8;(*+ zj1@EdoAJwcz_&6^yA|Vdh;A zdn_i&t&7jc9%+EtQ#mbFAI`^MT~{`ofvnPDtlY_e-!L{Ab6=v*b!k?gI^2CRKgr~! zy=NAlXy^3GS#x2LCFbjT+iWU-mH%8h>WktwxuNh&!LHa~d=rZ6(tHaIa`MYIIk6f2 z2@weUYVoyk{WPW^HF%-r@Ho7_HOh3>9Uzm_>m|BoFss4yJfAG(_uKVITY9+f;ocT- zp2GJIoca0quz)dAIWSUwSI)Hf5tv$HjcB=ggcgRDN)io=ph3#~hHDkM;#uocnbUW| zgV^+Y?zLRm2L0#q$`hSKRS;kasutk$Pj%71>a~3}Ggket3qE?b-+GV*0c6&zXW$?~ zb>B3KRWyMOhp;nAqy^cLfReQtxEN~s`4_u37f$Cr73nEy`IaxsY)~3| zc^8YO#6LqfO-5*7_+g^4GA`hfF4v3nDp!46M;QV7{?edumZh=|a|q*ylZ$Ln^tkpFb-g*VT|1X$tj1r7uR?ca`> z1FNs985!IDRg-cvrQiMs3&F_GZxJ-9S+cf?%^0Y3BOy(bNcdhL=md3G>+zSu?ej0+ z`E6raF6(4E@9p9|FX^W!Km%ZKUB#rqNqIkJo{T^4-w1VDzcMsXiPO=w{p`bYWEcQv zE%H9#Cw}gp3^AdNenOE7K;KSBJ=|zv)>$y8Y12q)&#t6`_x7rC+i?Ai83j97L1jD; zjRQAc$Cc`Qz{Vg%bz?@N6~#$78+Mi+3DVZ!g6|O)2_uFVr%5J_v&+}LolL~mvZ=j{|{d)!%uX)M4&j=KmY_VDtD|Uo%p`zo#dftIa=lNPcj-153Cl{S1 zsX0eRHAR-CGKxt>;Eimip-gHe!%0L;R7M%-YE}Pty4lv39S{eyW= z19k03N)S|Y*$S#!O|84p5$@i);-2*V`P@MT?!?Rw)UUxxcOHIRz_@vKBi7cG>v0RT z4W5@oXnMl3=bCu9vErvmXgKNIj`J{jRdqB>etx90!}#ynmB^YB~vcemHn9;)+FPlX!Eif=dn zqZ((D2wB?*un=%39S8{KzfVb5OEWt&=D&`te^ofsQE*u2!s+>?iPCYf_`L2G(IIiM zdbwPJh}J3=+a#`QOQTG3O3{OO>D1?Ev{^R@chNFfS1k;GG5?lfPuPNVVt_-t7D1!z zd^D`^gA#g_>`B18*FfcZ={%GO^d-zm{_RocP{jk0WV;0EarCm;EAV}I8E*&d8Hr+1 z>av-3&t|3ea~oVO47LZ1blXgAU&|pJsvd1}8)GPGuQ>R@WIL)E5yowNv>Z|(biy)u zv32_fg9pkB)^&d9kLArdm~|KgjAFM-Fc6n_qIlw-9cu=HX4v)S!R$n7`V3@E98)aFgWXR(E_YXCDTIvYA9sWVMz~ zSKV>$)Sn+7CNr(9Dl#}Auk~wJF4gBdsdr~viY4fuFdlp==VfH#z=k;>6I>^woj0Wu zlS@(*8@Enf@y@9-bV5pU6c^~Y&+*mK6+VeA(9|hd6t3H4SmNPkmIJ-Yd!u1Cp9(LKps^Gjn6t{sH8iQr)fO&FXMJ%Ziz#EqGA)26R#{FxZ`y>#ScNvm z%R_CVtbvCmV)LdDX@lz@N?6RAzB^9R@>@rMF0lJXAgpa1v)uFTX@5O+roU2(S^v}X z;nMzSEzz4EL@(@{6WaUH3-i0rGwtv5r>_n<-pwFmiGAC?&ljx*y?TBqGDGLJxovA1Bx5%|S zv@OZzKjZboLy`Zdl|@-8W0h>>PgBp8h%4W_&doWu8C}!%2DTdJcYi86&5Y zYlU-`0tb=I1^)EC)<2S>w89D4age|yhpDyNI++lP6g9eNKtB8VAYCy@O2Mmbby92|vue=ip`s!c#x}!v^pabcZV*c1$sn9y~)lA)}-WrMR&ptpb*yPYZX@uf|I zYrDPonfjN{u&Fa&AAzO#{B$UD*%g%r!~PBjpzqxhcU_ALJ5==Q&%2#-oRF++_J3YyIlpj=Pd@Op24*1V&dMfCEv%)5JItBxlwMuV?!!y=x&&ElC5UA&nLsMD*=i zNbIG2gg2FXZ^l;cKwbV~ht*Jv%V?J^sAYI+>%)FUcF8>t27c8xQ9gL;hp09UOPWR4 zBPwp0@s^r>gCD;GV6CHa*9DA=vub5|x9y|18*O>}uv|$s-zOn-$8%1d&Iv_Vh|x}Q zZz@-*$Wy*m9UoHSs+Z^poJKEC@W2C(J(GmKu!pY}`6OnFAH_i3uZjv=w{e~b8L2p0 zN4t7)%R2JcPcmzzk&}YPrxY?&8{S{rwpH0dWb|RpA*724Pv5$vRZU8KQ1t=bLzB{+ zaZhGxe4vQLvasB9FaYVjV`G6hvGAOsKsyat0pxP_B`KI#Pi^NY3nZ(dZ4q+6Y%wvi zq5`AGh4PC-(_`s|)mc^>JKkm7&|P6%cFk0i7;V?|!*V)vq-_djLu#mW@)%PZ3Iw8T z31jAv7K3)h)TTMG+!W2D1xl0aAa6RP)N8AY;p^AjasA@`e8W2akKJ?zSm#)tx7yFY zq5qkS<@oWflmdV7pn%ycI`GxR&BfKhPRq`g*~-<-?ysM{>Zp3S0Tv99Up^A!3F9Sv zVHgW4DAcI=a5XZ|KcEu25{isJw!(UM+`l@G9@#0pgAsG^0a_(wTpZ!NE+qlPzwVBN z?@)rzgGHdTYEUdyEu^&F+T0;Y6~VFT#>X-C^;oeMAvA)(EF8-bPpZRU-^LtqngY-( zh65sPHB-E(nmO>Kn2)R|d)It52yv89pP6c)c#JNq8FMx%gKOL1GEJR>me&43di|}@IR9OD*gUft7ga5+Xu2>NPO)XxZN9P&4aMS2$Ke(wONw= zOz7@MX-mE?9$oS7rNGB&GWxZ~^=gTqK^+@l#Ivq%eK>K^#T+V62&diVfysV$wrsOR13MZJ+~*+;h;YLc(%}VpX+uc z7TqQjT9Szq4pr6XE;*kuSn{7(z*VKruj<@R8D`3&=PvWJY-?91a%mbIc6*<-a}|}F z8GD^jNtyu9m)^l!H3#9-<6!(U|1-4kdI2uYPpnu<`kp2E2qqMl$&~O{z zoJ=?{yZg_W!`{u#*vuI?EAuD2o7UR2-{ZmQ-Yyl6m(*(xPvn5$Xetoa_#7=s-h2l_ zg;RHyJI2bgaV2+YGEHBVEmRi4E|2zQG8)}?oA=!t@Cy0+^*S(N3n?7Kh3hI%w{%;K z;Ye<3dH?-a>Iv1wFBRA|G_>!tZN9=*AG`0dGcTy?^N?tCwWTy#d_SmfR)0vRN7?d6 zbB7Jwr|fB6C)FO1+54BuguRUKvzwuM%$%qx6lZ%Q+4lCb@fQKvYz_bZQsa-#ibfQw)gQU_T;?Pu@yBJy4s8jBDQeDbtC0FmW zl#)rGI(NPkjm#GhlZ%)lWhZi=HD;rq!3rx2;FaU%;XPYUQh?;9l(`I1DU@ zE*r^^Gbys1iq140;g(@Zlw3!FNjZv^0<$0fS$SB{f8F}M7Ptb}lJf5KAae{(<%MB{ zO{&_c{5*($SmcC14YSE~JuqsysG z#ey~OAJI-f6=zMbK5b9)-8O&beu3$MqB7_{s&;}pQsy{65zg@bw2j+&)2wds3R8n5 zUlS7jIh!}J@7vVNDyD(EruR1CH@@SFm@gka@CuR$`1rd>(4b2CdcWL1-?%p4?h5gJ zW?)auez*7Bw{5Sj%QLYstii=v>=R(WsDXOC8hu1PTIsu*suMwEU>WSfTkS(|u`$fY zg|apjW1r#;UZeiV-}-?6XOC4dwrtT22?7#C0s?{!?6H7_yZ`E@fFm#9^=WTpWy@sk zXl8M#VdIFdjv?6T#Z7BBjY7kS0X@*k)>p(RN)N_m^`j(-tBA4IDMThw0X>7t=<7lX zAUpmUu zPuAV0%M7pAv3;)#5E67P}`@k-U4VWdu zL_y=Cu}+6=yUaE`LsS6ASO`a|E*v&50j6J|^=^mLDGUn+vLf-uM=kj@uoncOg7g?8 zZ^w^s1-S7PuKE%Pf%l|>P_kt zUX!lD%LaAw+%Runtrn#h(*q$1JnP6fMM%R?kKqIz^_i{pvr6p%0rd7!=5-t6$7RFM zX32c1m$opBjw2i|n+cd+Q2X(@x3G_JoWw{1qV>^_@J~1fMGRQE^r;yYb~ilLf;Po? zq3D_&6NF=p@wMn;-|09lYE)s8_?CWeY}H+a9risygC}EJ%NwIm6iW^>y;x5ywwtCz zF)L@wrFgwjKBo0B5-2^A9Z9xCpjz0;yUbGlkX_uqAoJ|n2?f!CxQDa6VgD)&{sU@-7Xw%dHNw;Ei%@oSB|?p| zCJ+8XkTe!+qIcJE92{FJMw}>1{L_ITTP#LlbKDee+PSn&ZjIX)lJ9h3hH4eM2q_P1 z@mWKjmwRx%FMWx}H5r5*Octa$iq6o&14u*33yJ63E06DE;!#BNZXdh%-|Up!8sBd% ze*5%5=XSr22L%ZA=MGh3N3gW|B`A|``A{O$(gq&jb=;)%2hRvD1}C^`R-Yi&%mCai zse_u6Q|a=*=?qv4TEDMtm~7c@S-;<8Fd_e-v`23ZeDPZ!zuXgqMsLkLKN386bart3 zN!eYA|1;MAYwaR_ZHgzoOV~(D&Cpc1=Q@%JWp{0SGsL(sypEUDrShZ7x)}) zX!MptRKFEUzp8XtU8J0Fa(#%CjKi2Pg?jc}qaKjBt|yPPT37fSh0=n#NO%2HZZN$q zl<4_q6UM-uNe%`s1fg z+@5y$*%Z!cZ|^G4X+P(CX1(z3_9ba)y)sj6Ge1q4vwPXOJ=NFVG##p5b9CFJOGed| zrM_<;ss5K7KDzBWCs zF7@{6^?QF_yKQ~1a(njkb^UhtKA*f-``iBSo70Emzsguvt@&PY|7HHUn%{T7|4pyA zsDJoq{r=crfBWtKFDf-Wz&ph*BlZSMn`(=4Rh0N)v*5;wA08K#9_|u*8N0fz|9tf1 zNr^W%R91hV!1?oBvGS`U&MRjMr+@Rc^7jtb+P(GAt^dKP%&n@gtoUBacv;Gfqz*On^eYvMy$kt;t?RnM9aD!{ZzbGiI7ctPNT^aVoHddI~t^2I_Xe zKm$;Wfg#!%I2fFoR}vpmS&&*B3u>LA8&Ij{?eGJr^d4{=nH#1XNH;JZ0~!Ho)+T z&D9Pa57+(!S|b8fB^xXIRF|_nhW$hHtl&0(n3Z+%TEKXl0mWjC~&F~tR3QW zWJ9oqLhouZ>u!AphPY5x27VNi41rDqn^asv;?|-^igAke%=bG ze)KV9bR*FF-v}ev>aq65(G5WF=pqcbhhhM>ZZEo7=zT|oS=SrT9fRmeqML%=)k2u^ rt`Qn4C><|!{pjsMg#OM}q%4NoIt=h;1?C`7t`cNO1ZI!wZV(Ru06^6i literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/UttEntityNotFoundException.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/UttEntityNotFoundException.scala deleted file mode 100644 index 3ac069dac..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/exception/UttEntityNotFoundException.scala +++ /dev/null @@ -1,12 +0,0 @@ -package com.twitter.frigate.pushservice.exception - -import scala.util.control.NoStackTrace - -/** - * Throw exception if UttEntity is not found where it might be a required data field - * - * @param message Exception message - */ -class UttEntityNotFoundException(private val message: String) - extends Exception(message) - with NoStackTrace diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/HealthFeatureGetter.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/HealthFeatureGetter.docx new file mode 100644 index 0000000000000000000000000000000000000000..fce7780b2ebcdc2823f3eb6ea511b3378e4c185a GIT binary patch literal 39102 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

ZQ@IQhBa>~F3{ubQ#NAT4j!PPjY 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 TweetHealthModel} -import com.twitter.abuse.detection.scoring.thriftscala.TweetScoringRequest -import com.twitter.abuse.detection.scoring.thriftscala.TweetScoringResponse -import com.twitter.frigate.common.base.FeatureMap -import com.twitter.frigate.common.base.TweetAuthor -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.common.base.TweetCandidate -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushConstants -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.predicate.HealthPredicates.userHealthSignalValueToDouble -import com.twitter.frigate.pushservice.util.CandidateHydrationUtil -import com.twitter.frigate.pushservice.util.CandidateUtil -import com.twitter.frigate.pushservice.util.MediaAnnotationsUtil -import com.twitter.frigate.thriftscala.UserMediaRepresentation -import com.twitter.hss.api.thriftscala.SignalValue -import com.twitter.hss.api.thriftscala.UserHealthSignal -import com.twitter.hss.api.thriftscala.UserHealthSignal.AgathaCalibratedNsfwDouble -import com.twitter.hss.api.thriftscala.UserHealthSignal.NsfwTextUserScoreDouble -import com.twitter.hss.api.thriftscala.UserHealthSignalResponse -import com.twitter.storehaus.ReadableStore -import com.twitter.util.Future -import com.twitter.util.Time - -object HealthFeatureGetter { - - def getFeatures( - pushCandidate: PushCandidate, - producerMediaRepresentationStore: ReadableStore[Long, UserMediaRepresentation], - userHealthScoreStore: ReadableStore[Long, UserHealthSignalResponse], - tweetHealthScoreStoreOpt: Option[ReadableStore[TweetScoringRequest, TweetScoringResponse]] = - None - ): Future[FeatureMap] = { - - pushCandidate match { - case cand: PushCandidate with TweetCandidate with TweetAuthor with TweetAuthorDetails => - val pMediaNsfwRequest = - TweetScoringRequest(cand.tweetId, TweetHealthModel.ExperimentalHealthModelScore4) - val pTweetTextNsfwRequest = - TweetScoringRequest(cand.tweetId, TweetHealthModel.ExperimentalHealthModelScore1) - - cand.authorId match { - case Some(authorId) => - Future - .join( - userHealthScoreStore.get(authorId), - producerMediaRepresentationStore.get(authorId), - tweetHealthScoreStoreOpt.map(_.get(pMediaNsfwRequest)).getOrElse(Future.None), - tweetHealthScoreStoreOpt.map(_.get(pTweetTextNsfwRequest)).getOrElse(Future.None), - cand.tweetAuthor - ).map { - case ( - healthSignalsResponseOpt, - producerMuOpt, - pMediaNsfwOpt, - pTweetTextNsfwOpt, - tweetAuthorOpt) => - val healthSignalScoreMap = healthSignalsResponseOpt - .map(_.signalValues).getOrElse(Map.empty[UserHealthSignal, SignalValue]) - val agathaNSFWScore = userHealthSignalValueToDouble( - healthSignalScoreMap - .getOrElse(AgathaCalibratedNsfwDouble, SignalValue.DoubleValue(0.5))) - val userTextNSFWScore = userHealthSignalValueToDouble( - healthSignalScoreMap - .getOrElse(NsfwTextUserScoreDouble, SignalValue.DoubleValue(0.15))) - val pMediaNsfwScore = pMediaNsfwOpt.map(_.score).getOrElse(0.0) - val pTweetTextNsfwScore = pTweetTextNsfwOpt.map(_.score).getOrElse(0.0) - - val mediaRepresentationMap = - producerMuOpt.map(_.mediaRepresentation).getOrElse(Map.empty[String, Double]) - val sumScore: Double = mediaRepresentationMap.values.sum - val nudityRate = - if (sumScore > 0) - mediaRepresentationMap.getOrElse( - MediaAnnotationsUtil.nudityCategoryId, - 0.0) / sumScore - else 0.0 - val beautyRate = - if (sumScore > 0) - mediaRepresentationMap.getOrElse( - MediaAnnotationsUtil.beautyCategoryId, - 0.0) / sumScore - else 0.0 - val singlePersonRate = - if (sumScore > 0) - mediaRepresentationMap.getOrElse( - MediaAnnotationsUtil.singlePersonCategoryId, - 0.0) / sumScore - else 0.0 - val dislikeCt = cand.numericFeatures.getOrElse( - "tweet.magic_recs_tweet_real_time_aggregates_v2.pair.v2.magicrecs.realtime.is_ntab_disliked.any_feature.Duration.Top.count", - 0.0) - val sentCt = cand.numericFeatures.getOrElse( - "tweet.magic_recs_tweet_real_time_aggregates_v2.pair.v2.magicrecs.realtime.is_sent.any_feature.Duration.Top.count", - 0.0) - val dislikeRate = if (sentCt > 0) dislikeCt / sentCt else 0.0 - - val authorDislikeCt = cand.numericFeatures.getOrElse( - "tweet_author_aggregate.pair.label.ntab.isDisliked.any_feature.28.days.count", - 0.0) - val authorReportCt = cand.numericFeatures.getOrElse( - "tweet_author_aggregate.pair.label.reportTweetDone.any_feature.28.days.count", - 0.0) - val authorSentCt = cand.numericFeatures - .getOrElse( - "tweet_author_aggregate.pair.any_label.any_feature.28.days.count", - 0.0) - val authorDislikeRate = - if (authorSentCt > 0) authorDislikeCt / authorSentCt else 0.0 - val authorReportRate = - if (authorSentCt > 0) authorReportCt / authorSentCt else 0.0 - - val (isNsfwAccount, authorAccountAge) = tweetAuthorOpt match { - case Some(tweetAuthor) => - ( - CandidateHydrationUtil.isNsfwAccount( - tweetAuthor, - cand.target.params(PushFeatureSwitchParams.NsfwTokensParam)), - (Time.now - Time.fromMilliseconds(tweetAuthor.createdAtMsec)).inHours - ) - case _ => (false, 0) - } - - val tweetSemanticCoreIds = cand.sparseBinaryFeatures - .getOrElse(PushConstants.TweetSemanticCoreIdFeature, Set.empty[String]) - - val continuousFeatures = Map[String, Double]( - "agathaNsfwScore" -> agathaNSFWScore, - "textNsfwScore" -> userTextNSFWScore, - "pMediaNsfwScore" -> pMediaNsfwScore, - "pTweetTextNsfwScore" -> pTweetTextNsfwScore, - "nudityRate" -> nudityRate, - "beautyRate" -> beautyRate, - "singlePersonRate" -> singlePersonRate, - "numSources" -> CandidateUtil.getTagsCRCount(cand), - "favCount" -> cand.numericFeatures - .getOrElse("tweet.core.tweet_counts.favorite_count", 0.0), - "activeFollowers" -> cand.numericFeatures - .getOrElse("RecTweetAuthor.User.ActiveFollowers", 0.0), - "favorsRcvd28Days" -> cand.numericFeatures - .getOrElse("RecTweetAuthor.User.FavorsRcvd28Days", 0.0), - "tweets28Days" -> cand.numericFeatures - .getOrElse("RecTweetAuthor.User.Tweets28Days", 0.0), - "dislikeCount" -> dislikeCt, - "dislikeRate" -> dislikeRate, - "sentCount" -> sentCt, - "authorDislikeCount" -> authorDislikeCt, - "authorDislikeRate" -> authorDislikeRate, - "authorReportCount" -> authorReportCt, - "authorReportRate" -> authorReportRate, - "authorSentCount" -> authorSentCt, - "authorAgeInHour" -> authorAccountAge.toDouble - ) - - val booleanFeatures = Map[String, Boolean]( - "isSimclusterBased" -> RecTypes.simclusterBasedTweets - .contains(cand.commonRecType), - "isTopicTweet" -> RecTypes.isTopicTweetType(cand.commonRecType), - "isHashSpace" -> RecTypes.tagspaceTypes.contains(cand.commonRecType), - "isFRS" -> RecTypes.frsTypes.contains(cand.commonRecType), - "isModelingBased" -> RecTypes.mrModelingBasedTypes.contains(cand.commonRecType), - "isGeoPop" -> RecTypes.GeoPopTweetTypes.contains(cand.commonRecType), - "hasPhoto" -> cand.booleanFeatures - .getOrElse("RecTweet.TweetyPieResult.HasPhoto", false), - "hasVideo" -> cand.booleanFeatures - .getOrElse("RecTweet.TweetyPieResult.HasVideo", false), - "hasUrl" -> cand.booleanFeatures - .getOrElse("RecTweet.TweetyPieResult.HasUrl", false), - "isMrTwistly" -> CandidateUtil.isMrTwistlyCandidate(cand), - "abuseStrikeTop2Percent" -> tweetSemanticCoreIds.contains( - PushConstants.AbuseStrike_Top2Percent_Id), - "abuseStrikeTop1Percent" -> tweetSemanticCoreIds.contains( - PushConstants.AbuseStrike_Top1Percent_Id), - "abuseStrikeTop05Percent" -> tweetSemanticCoreIds.contains( - PushConstants.AbuseStrike_Top05Percent_Id), - "abuseStrikeTop025Percent" -> tweetSemanticCoreIds.contains( - PushConstants.AbuseStrike_Top025Percent_Id), - "allSpamReportsPerFavTop1Percent" -> tweetSemanticCoreIds.contains( - PushConstants.AllSpamReportsPerFav_Top1Percent_Id), - "reportsPerFavTop1Percent" -> tweetSemanticCoreIds.contains( - PushConstants.ReportsPerFav_Top1Percent_Id), - "reportsPerFavTop2Percent" -> tweetSemanticCoreIds.contains( - PushConstants.ReportsPerFav_Top2Percent_Id), - "isNudity" -> tweetSemanticCoreIds.contains( - PushConstants.MediaUnderstanding_Nudity_Id), - "beautyStyleFashion" -> tweetSemanticCoreIds.contains( - PushConstants.MediaUnderstanding_Beauty_Id), - "singlePerson" -> tweetSemanticCoreIds.contains( - PushConstants.MediaUnderstanding_SinglePerson_Id), - "pornList" -> tweetSemanticCoreIds.contains(PushConstants.PornList_Id), - "pornographyAndNsfwContent" -> tweetSemanticCoreIds.contains( - PushConstants.PornographyAndNsfwContent_Id), - "sexLife" -> tweetSemanticCoreIds.contains(PushConstants.SexLife_Id), - "sexLifeOrSexualOrientation" -> tweetSemanticCoreIds.contains( - PushConstants.SexLifeOrSexualOrientation_Id), - "profanity" -> tweetSemanticCoreIds.contains(PushConstants.ProfanityFilter_Id), - "isVerified" -> cand.booleanFeatures - .getOrElse("RecTweetAuthor.User.IsVerified", false), - "hasNsfwToken" -> isNsfwAccount - ) - - val stringFeatures = Map[String, String]( - "tweetLanguage" -> cand.categoricalFeatures - .getOrElse("tweet.core.tweet_text.language", "") - ) - - FeatureMap( - booleanFeatures = booleanFeatures, - numericFeatures = continuousFeatures, - categoricalFeatures = stringFeatures) - } - case _ => Future.value(FeatureMap()) - } - case _ => Future.value(FeatureMap()) - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/HydrationContextBuilder.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/HydrationContextBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..40d9808ccf4690b13a39190f66ad8ed4d87f2f67 GIT binary patch literal 38275 zcmagEb9^RU)-D{|?%1~Nq?3+qbl9SFty~?MYbS+Q$RZBHMMD_)y<$E~%@bS4Y-^f1XAt~RR} z3dIPrq{6ws4j!zmv>fRrzF;YLD*Q z!MLL9+oYcx>64hhM9$kXBc*z_RVG|V0C!rr;ia17cf+QHL8p4xDY`~Sb2W#CwZ38` z_hEQDl%M-Hy^L-X8f+&}4dqd{D%zW9mLdCRc2>cZb#uqyIT|0fe0is9>U7^awY6eY zeJoCbq;NeS#E`O1djn~x8cFn$pfXrHW2?P`9|j&CXo_RW1)r9~^dIKuI>ikHr~`xty&kWSUJk!PuHrl*1k^l8 zy>^uxxU2;h7|YV9(CEA+6BMEL#D9J9dWJ8p{3I^e_qtTNaUeAQKw9vEA*Tzm}wljdl zU3E8D%Q_?SjtoiIl=6YoOr2PeZWDb-hoz0Y&kl;*s~vqJMlcU4dj4QZaB|>W`0#eGS{MoazD&fF< zm~|c3O}oM3`jPqh-E{^h3V$JIlQyk_hB=f_FE#6z^R z?E3mVg<I6{%S&peb zgsSIYFf(4g0L1|7oUWl*Gwwy&Xf%062yO4AKsV#OiX^<*YAP)8+qM32 z@G@Dkd3iHUiCH0{68x?9Tct+vs5P&yfkA64KjW&mlYx!tG-l7i|ms{x!@9eR?m1^!A0D!I?} zte`~wL|x^VUB)UBftq0|@)Uv>BO*LHW14e~qa(2;Z9RFNXv|y=TvS(zoe1>5vQ1M=X}aZ6k08*iBu-sZrYLOZptYEkX0X+F+U7F3z%xgL~v&1}XLrfD(LN zwjN=t_RP*E{1JOa*f(*}GG`ii=1?8Z?_A4rXarzWFiv*+PlUO!+Eh-gt=ZcB{VfF! z+#@8L7U2H(HrwXNb1pL_!V3!bPyqPR+hn$4N7&l2Fl2uV9EDEmrL_m;pmAwQlj>f` zucfoIjZ?U9Q9CrR`w$mkThaz_uNY6B5udC1n!<=#{Pq}8#`)RECH69Xb1fsr3G7PN zxS}YP{koP$~8a+gIhtb3f_%VM4|-NbP+l91*P zhXp_ys&7ZSwHNg&^KK1RKM`CM!E_N9L@`0an1Ui!qsD~0bbaauT*G-!P^3{sX{M@( zKE|yQ-a|(zKQN?Q3@ciqoS*?-(dfKhLi;sdY;zL;T7Tn4Lr=!P7 z!r(X|+cA8x_6Z&8SVZ?t5p`c-D*O4^^w&v$qF}tl1VLgV$^*T<{>kSG%*QI>S05R( zH5}pE&;D_k+b}*NebFT8@b8LnI>@$7UfjPN>5rE$maT*+@7fc+oU2RpPEU2v1fvj? zzR(V*9d6{Z1N@~SAPJH#qHo<6<|vMyNl7E6jDH9q$u{pWTJGV;3IIaIGA^^}hBvZ} zWIap0&NCS;_E(Vmxum5ZIM3kIl4|pIuDkMO%~8K&CW3_Gf1xI;-3gp|jv?uqbYUw3 zEqAgwmM6P-zMG^zbfI)?ASn9Wadb@B*j=2{+@TGqCFIl#e$KfATP?mSDF zb*X@9ro7K&a6|i)g}U$f)tlv0>toB}#D{qn(~AEGl{~%V(?vK}jy=brZ(*-}R;^_Z9+nEs&kdc` zC5>jlLXnA*GZNT_oKl`#y>R%-Vnt)U{?yiLEDqp475v>YD=?u^;Q*fjbDfGg<}4li z+_mZGPMfc#Y{6QNdO{b%RsR98%BUb3ac~DIR!3WVpS`?`;rTt>Uky}MWI5JoqlN~EAf)WVZ~v$fUg~;&u3K2)zPSD z4xR(Afw=K}zrXjgg*NGZ$J7H(EL}NOlI<6tp{`a>3STdL9xf@n7|S4w)-pAMxE03+ zqt{%1&UwvpSDQD=MlGGftS*W}#`oZu^;;pYUVzJ`aETTi;_8+SiV<@ z_M-@6O5&g0cuK=I;m0Ki7Kp)+#*UQ=>u!l?Ih_~30hrPx(L99Zvkj)=wBI5&S`ISe z_LQ`pE@UOrMy2qnE7s_=nQ|wz_`{0)&dOQc&N=Z-Ble|cXv$p&LFAwHt^;>t8POkRhkD-G!UbEJ*;8HQ;>EAkrtd5|gw z1j)lWi-5uyZgtD3ePsV9Q^j=(`qplhmipKIs&rRE1JoDv6+XEW_Opg+mFs zR02_k`E=*#uQXvmf+S_}iw@RKlo!!zm5VHch!cm19$}0MUB^nJ0~&qp8@4heI{iUF zwoxftgMp@_-fz=qu_NynnU1{^htYELQ5uU}Tf22!^h{(N{t2U*_Tzc&YW;`(rP3~K zb#}voI+vfk9;;Jup_d8tKF`1RkHvi@*>I6RLRKwGU7fvOt0;1^dhcdtb~@4p?PDN` zR$yB@0c>mWfo<(y z-OJyLvVZSk{$8LZi6{gy<9xq(hwBeX#3-?i{Peqk561%kGdFdwvbf2IL)Y{rkUI(t8DlO)(G-o}969y0w^2$>#HyMYmbb2tvul}O zRBraHKKWbK(U&B-SGf9iiopgr^5%S7;dacL=%Qmum4xpNT-sn-;-|PJP?*jp~8@s1Wtb3x;}R92ADT7e_zt9!>E5-k|m2%$gSP#YzqW zUgdP7(F`EeAF{v)*d7fn#`nw?jX}iSdc;!2Sc~hjRCd6xOW7htxG5SkRD!KSK22G1 zTi(tl4SLGMI(tEb3GE3+mE!O65NKK{O=x^R73jZALkl3LvcYm%EmJ=Xz;pk6Bi6J zGHnZz;EMm%t1GAef=!NX?)Q%$*xzE$4E!iago)IY)zrUKBsB2#=U^$)9B5=Gs+zvN z<@$A6U-%jj#bmynZ*UFtAa=LwT&Ta4PMzNX?0nyFy!oCE&)v1pb5hpcY~Ri^g_cI_ z-k)MWo?ezNVoHTtPxtg5pEj-lsSALYqq$#qfY8vr6OXqB{&$;?j?EAz-&G?0l+w$Y zfuqpWgPn=B)7HwjiPP&Qk9BLVQX!(MzTPf{?>u2q4Ij4_joMx>3u_aeZV^Hs_L_DB zs1Ja>o5MTzPiK{*-wYl?OP2&W2w#^XtLlUTV& z!t~y~-VJE2nn)gE@v{M}`*iE-Ty($Pi9MSsrxFf0Y;7)+P^L7#I%|jeqGnLwIs;(4E;n%jsY1RUk*WZ1zB6=^+VHsB zI%LS=&~r52nb1b$(ApZIw>kqKEg>K75T;H*tZ4|g-`o4qfSDi6+wI1ibB69~o$pHL z7QaBX+r@ckD%W`qm%{0XkN$^de4qkVM zjwI(3&2ulO=K~7`)%)Yxp)1!BJWu)6&<7w4pYq;F+C!hI5T^%E9WG-RrXg+b3*y&G z(%wG;1-rW2;A8^WIrweJvFV=|u7&vsV zAk4a2q>$N~8fgjfBg~2}qOL-MTNpJSRGjc@5o>qv8=&`!3@>v1 zL(|kd;3c;#%1$GeDchnmt~DZLNt4$V`{nHY@|O)=7UA$uRBud@dzhah-UJ5J(ow}^ z+=+r0W|eBA>*BAfB(Yzll%&egl#|#hgXs@2=tyK3mcGCw$anNq`EB7dJ*tm)j$kZS zb+Tj@f+|^G<+i?+9=;LkqM| zX!R$~+SlWYjYlcU>8uRdrmzFm;vUlxMv=e9LJ3angdAlMy~c_QjO&Cf%KLNj8}KC7 zKTksJklTTZ{NwtXW?TwJ2qq8s(SGSouzzBou_pjSiGkPA{1vJVL<<4p{zvHFR1oD< z7nUUM|3z@2LYcmnm)^3x_- z1SI!ZH703~jvJxwPxq z4ta^Z4lGT&=6_puztMRdp3AM>aj*TgAgFM3a5z@5^BBD)q}O^UP84Ii%eW$(tQ&K| z5s&-vVviuk;4x!}Lcd;4khL|mPJDmv>$;rfhB&m=&FD9hD`j))m~hnodoaSTb~m6V z7Ny+Uhnm0t=E;%%#NpHGje? zGNH@3^k9$W>EpmhX&ml?<@LtJ&)e;yEs-3#c+)AYZt;#mWsQJ*ydz3uIS~tB*+4ec z{@%9{Kdf|5t2*GAyuNvI=Dyl97?bjlm-O?RlDo&*P37A((im3QX+@JeIK&988rDv^ z!D43M+xy^UiNetY>!vedc&GGurt+7G%(MZYX@ zG!62S`4y7}k6jak#nYu+(I;f!^AkqS&wKQFZ0~vQ9mTRYeQ?vkCG*kdrB!90QRub1 z3+@Y_?9lM;fu9T~)@LS1E-Z6Fk2Otvy>1(NU;Ym_2j2p&iTJmd5Tn3UcvIlo~!-Ia2$M`3%OJ%kQ8lRr9W#0I$ zUFM-K1xcn6vY&j1=6QBk9G0OUL7Lu@gxSt_@ZaWQT(Z-Z?QsC?aFO}EmXI&8Uq~3& zU`MlbeOpIla*VztHAi_n>^jCc**z2^;!^rt$nzauu8ons&pBV3OZQt3+`M zIe+n%%*K#idBu)8-{UWbOpH0A)~yTDkN1puz>M4T?a1}}_3)4<;LX9q_u)PHWAW^H z?$_&yJ@ePj_co#Id#2Z!5lGK>5ag9ik2XOFgDpU7>c}0*lXCnEhv9l~VcEHp6Ox47 z1m#5TeJYYv6kbQC>UoZGyG)SXkD7&-SM;79ZzcaL4((Sp@uw!@Cq%m!%sMQ(y9B6~ zFNoG8pO#ND0`MwRWHRO$IZC5V7SOt2+)D+`CKlTPq~THNijJAucsR8~uiiBWCJ=byJZco19Wj><4Zq^j`N zfGn^j^!BM$Y+A_fw!dA;aiOq8@17NZ{Ca%F`dF^>I-&Q+IK8e)?C(i*`{V-LRgGqi zK)dD~dkF6HPuhy$6Qb#guu!($c0yr)7dRP?iWDQuTA5F8$24&^InKjJiH|*f?7JUe9@9Knv>Pi@b|d68!hXGywo8G(fnR4iGwrx+2SW&_dA9^e+LJToj=c6)UZ@hA=eGFB(~xK3Kt{*?Ji21YS`;n!Y35Z>$H}Cz9ljtTWvoqo%OLnP#2u&Zb{F5W>KHfiz7I@j;H|qwF&TtjZhl<>FWn_T zA7(-Eq-@^TbTMD5xkVdx z%iz_k{H#)n&eoOJ+ND~Y0EU1Pt`%u*M_tP?mIR6sf>!c(NiJzN`7cx4BCLBw@MhNL zjp;=KrN#GIq$^IVkY1K;JCSm6SYsX!9+fo-r-})KnwsoJs|qeh+tpQMZF`3&I9fPx zvArb5$fGC?(EBac7tYIUEld=t2c%JbHS{19a&+*|noBW7Ptbtwyw`8aR>z;n(QqZD zWt3gpNxY`%C09roYO0Z>w7e;-u?j2R}--;`zCh(ys|80!jPdWz9e>6SBq zWVFv!`>~Gz*W-!{iHNgvER%0*D0wXGjW|(INT1nK@6y{RtIyTFeK7eP>F8uJi^?iu zyH=o;%9Rux?n?$#TOCX}R!1#O${{-suD2p(2Ch5deojql@s8SlP9-L}Yht3|BuX!F z2p8sx%v3I*n@xw1$QG|19KmE(OR)9s^LSP|c%a2$K-}jwo&>IR?si`FoYy}Ug4rM` zf4ga!V*iy1`dmdlZR+>@(*gW;XNs|D@VRSs#4pI_H9yZcaV-f0oJP=;nx{Uv9)rTA z0F6Cs{mW|7ZWzyng&tLUQr>N8Ewz+p6OITDRO2{&GRSyJvQIZ-25K| zIH-a<+*U)aZM%3|6i^&2%(f-ZPxfy=N~d<*;iA1}oQL3lP2c|nd!(pjPg-AIfm9z$ zR;$j5%K>xEw6QslmwD1qYS+yHyz87li%Ak8V>1X8A&#+}x=O2`<*4l$B3_(y_d^vB z2C~l^r`?D4R3jfHM`9kD?tv0id@ z-@4Np9fs)=%9zgS)bBMvdglgi^7skrxYM{^OGVTp03clRuOYZ3A>D#!MqCHqGe#(!`7^hBuuDq!$um+f} zcvIM}bZ~jytp`b2dn5Cjd#tXnv{I;Dm@~^}1zh(5YZ-;DO53s{Y_4D($@{$io0Q;7 z=~|u8kW`oBUtzm`agV^egRkN<5l8;O(*k0%Y!AYBh6{ZSM5l6Uu02Ln6NxysA^*N9 zNm;<<#qChy1jGqALdxSZ7u2EG-3$sucR#2L-gM5|1LnxiMYWk;)Xqdp)b7w9eIgff z1yXm2r*Y{RQ3VJyg(+rN6Mj6^x-sOh;srP;M#^h7wd0+>0^9WG z9DyGty_HO%xHUuIhUMS7y2hiuaWc#OlcJ(oyrb9f3-#R#KT)3OO+we4-eTT;xsUt- zSV0&)Ef0~yR77H3@==;_fF{j&^vb2&`0*3u8HD-$oEGe?`!1@-Q* zD#PY!)_h(DlnLW9*wX@OcA)q~qRWJje62iBUtgh&{Un4dm~_5!bxGo)M6u3AVBWGK zsEo^e!MZX@uuvb)J>Q>dUdAbmkWuZXL%)F_=1f(QsWw#|_pTq$0`)}gEVR&#jUjGH zC9;OGU^7dtk-_Xa%9Cb01T069X^OUpHRKAbgF?sS&B-i*tjNj}4;D8POZ@!YZ*S7CzgQ zU)XQ^+PBY6w~~ic8Y3zv*WNcx(ir7oMpIG8`O_p*R(mV18Wm>WlH-+xeIB0CAn1q7 zq9?#CDmWju-oif@#;F{%&8sxnWJ=F#U!OvKBr6gF3Jgs zRWGRB>O^lAY}zG9xXs%kveK4?QSsN9L@E1e(tb_D-&i-wVce-!pD1g*qfEXnTVW0n zbM^hv%q=-20M|_!6rgQsWy%*$8fESkaAELynh-IryTYP9*1J%xqO^WyLF1V$cW&_L zgc|I6b*41Z|MLDu6@q>_Yjp-L3XT>GE|%_7@jPR01R>>Tu2z^b8TU#xfs^0j@)E+l zUIG0id_u?C;)SHdkOql;!c`f3fkn{C~1hkGcnNT~RH?Hy(W}t+mvKAm93yd}8t2=?)Wg z?1=rUoj1b2voT{%LikZ@3YbJ&(9%ZS%FiKp5Euj+u5*If40004L4}!H=!%J#>ehkk zd-YvF!ZX;iul$PKil~YMFBc;wMOv2@IuPV*(yQ_%#KupJ#B1Saoc7NZB@)8d(dy+n z!-5*d3c}Ys0^T(-qjDQ=%qI0HM9zhK(CO%}z^Kgj|4Z?hBm9MGayjjoh;mXDb_lRyp#*!pQ#)(y z881yQIFdhXDYiszGh1Enzg;@Pr9p46b~GU|dUg9)}Bk|{4 z(81mq`&2A(`Vu<&@1%{{qgAzW={!r!Uc08bS_nKHpfSMjk6Yl0cwY=N2v#a7B588) zCyZGxZ;Zo-FdBB&_30_I;YqRPFtNnqSL96=A;BD> z*-T@9pRh%eeCFz%4Ieu8+BH_8m#k%jZZ=^VD!g!~hw=p>tWOi=%z{c>$x@kf_)&rq zhVdgH5riiWof_0gm|jvJr9Q2u4ku#Lm9&u&C5}&v)ay{{-!zg{W@sywEagl8@x3DO z$9G?-rmTa{nF-4!zAGpG-@YZrfRMlgOPvqP&%m%D=a3;qlNR*!=CjDLmf>kmxr={O zc_{fur3z6KP~`yhAC(ZG^=U>U?Z3R44^70dZQuf=KwVzIM+2HZz{3IvjENb-G-Wk3 z5hTp`;OGu=nt3MPtHgMYj5X^sJhC$S0!whqVf&~wGqZs z+Yo1~l&J-Xbqse<%Y&TZHfU?VwZ9~2S)1yk8|`Ll4pVhoWR3mUOU5y0sGyjZ&T3pE z4&pBL?a(;PS}?G#Xr-e94kmJ&FDWMsn%EdleA~?e22KAR#Qnd6lBW(B?hda9dBUC0 zj{Z=kRUukm%4MNXJPz_ivwiaHL_4aIX#R8F70(3aXkOuAJgf1V8bs!e8e})?uW<$n zY1u`n7GtXEa8vKytl@M70sU~N#RBa==K+YUVNNHdUZ&Gp9`-@SzV_e_@_&t|B$#lr zq%ZO3a#N*Tg*)Mzv);N>Olw72{-uO-lz6&4_dJ=${D1{7<(UQVe-!2u91^$)XQ5C1 ztK`kr&a>{H#+ zc(~f8M0{9gndCQ2c%pX=8@wGDr(3$QpRZi)`n6AwhaMDlARsI*1b`^98kH?LfC_#W z10~JB2JfA#wJ?vEl($)dOTTlkJl&7xPG%ZN(N;&k6vcubiN!xi7fPXN#7&RdVBh*x zI)saV`wzSKe7sV^A9wr-eVrSy8)pwah*P_+B%rE50rkm&Q! z_n{4Z4gW(e^A|N5kQ!R%Pxn39zPX5)V)z%etH}hAnve5u>Yo(okx2g!>Z|TS*v{}= zgH7-D&s~PFC)E{wXtr}X^z;F4zezL$J6p&Br$XqFWbR=aNHTSU_L`(7JGKJ}oW`Xy zb%VlPdwpnsy6oaltzPp8{~*7283mH7K>tPF%EFEw$@u>upEZ=;eu_!mT6g>hdB36b zld{GmoJOk>#?OA|pU}rD?eR=q2KrlF0qp{hO>7--*#sXQ$KziL?jDzR)4EC^N{e3T zHIX8IMcdUU4f`zTiO{a{sLvJp$#rE{pIo`M9LCX`S8UFKXe*sH%PJ7KxDBjnGdLEu*AwC0PZC-JRNA>NeirQzrP5X#NUjwu$Y3(;S(hR5q;MSqE z@`vvv8H=D9lt0!*e9x^ajUixeZvk#GBJ6UDuft-cycQWI>*#WGVI{E3)2dTk@^eL{ z6)_#1JM7hOf^r#iP0yI(?1 zo~s|_@)?w$9>nL^3oO7|*wk*K=h%OhR}?bZ@yc0s*=3)zSGz)@%7M=|U2g`YcwPt> zSP6?*emCet27W1pA%-U?o6#H-jqrHrVafqLzqpxH}E5cm%iWC^R{ED>YpC9A4C ziZOJ7?y%K!2xt7>5R8?kf}F;f{8 zw@CG!NoYLSq%jN~bC)$|4s=diYI8W2qMaHdlRY5T>)p&ol`!8o)jW9tOGt2}JAsgXS($4Xqt|^#_f~{vK*-m`!7OVs#L{thM4hcAL#* zgFEOZRP3cF$?v0kBbJ@ti%scYk^A6LXiz#q;=z02QCNsOL9ofgvG*bGAepE+_I@$z z`+FelK;F0NI-+Nadh^cjU)}hU;4@hV@Jq6298-z=ffhg{T8Wy2T>Nb zu>^G_)*}YC8SbErQfN%0@F%ePil=b1Upql=aQfk8nKGeoNX(nbC;mrVw8$TEIKh{q zS5~8AM%z5U>xfte2%CICi6Q?Spc{Y(s1{#PdMVepz^1(JZOG!YF@j-u=2()>UVRMa zYe~Tu9j27j<_=%b8})@tFt<=oET&$!GIV|FbGOWCXk+_VLG#wgaes0j>Kq;8tkRXO1slT-pMM5d1J07&g{FDl1@HHy44p z;B|*%2Z6=hZTb3c6upkwAVX3-B2+-Lk;18B&S_#kuM;5){5TA2uUcn3Uwv_pcMkF^ z>xZkGj1PeC3V?LUN0o+fwC>X){GE!Kx=cXft}f1(f1$7+_cAPoZq1?8ay`es3#($je8a3=9e|aeLg={*4bOXoW#fD>^CztjMXe_*I+;g)n?@i^S zs6v+mEK3g(bI*_=yFE9mrAT^iZ(g1x?ZSZQbBSs!oK+$zZ;iD^QiX$8|Eu=5z@K0@ z@RZ$0Ui}KvlQSUpGLyBDlEjCh#@G{?UQSm{o1`~ZJt7IbH!2b|+YUR$0jqy_=xw2=D$fosO@y1^vpdg#u$_TN3&K7v8YJ$VhI+(twsYb71A1-H6`2jQds`wl24&`#Wn9)qzF8--`>qI{Lsk{K=vh7l$x7ljL z`A}n1_J^_^rPO3C_@o`HefGTVoNO?!;vq13!B4OV@P@u%g@I|gmu(4?wT|mK%sp7R z=q-J(^g=MpnDUD%Xg6#i>u5Kp1*l<9JIp=t*pJqRGqR@)tUdRcDHUu&YDr*(*uRPI z{-(lORJMZ$CINhMCVd7AK9wM!jQR#02cv1G)>Cs-u;)bS>&vV7Nb<&!28XRdn!yc& z+1kp{5tPbKDfyu}NE^lBk^~vbjaYpo*Ueimmcpsc`HfZA8+*T?ki;LN?wMNG>dfia zaXfFG6U1&{4*Z`W_sUQ0N#{dYg#tuG5JxIQLvFEa2{9Mtb)9ur&Ue)I?t`D2f6#YE zU%bBd?j-eU{dcKmay@@5W3yGaj=ru6NeTZWfA-MjdZ#6O*B^P zgI!LGkV;hb0V223*56=4(C|K`Z#%ai)4b+;F!kSdV|-D5J*m~|!5nCw4*-TP{jgJS;)tk~gf5`#T8 z41)Q3d*`cC(z(ekg!wAV@R)xj?9=5B=UX;h0wkJ?t-!NzH4*p^;OId(-_*p}^6k%% zLWn95n6EgsZf~7ldY9c#A_|Z~QJiKgD#eW~!jM8fU0X>swOrG{Q5AUKV;)5VraYkQ z`toh_liR}e0lWQZZ`X~qA%e2)C6TQYPoSTX1vuXt&Ayr9Kq8Qe#s`L2e4NY_2}7s+cxn%PHm zH}Ne_!pFhYFs*& z6L&@uuRH$kHDzKY#@U2IXx&g^HnqDUCEgVEXE%&}7rrV{_cUWq`pE!g7>AS+3R+G;1;+CF#>=YIqM~iS>AHzt;&+O?=%aF0yF2$3C9cGZo9faM#i`M zlHTRN*EX)|zc)01180x#jRM|xCD`Y%vsv{I1v){qg9J`s{@d>GRwJS4=DgTkFntbt zXR}1yn@Ox*pd${+M(Qk^Ek@AilThYGh7$iPt>uoOF9MRq7gVunJ zkw!t!7Whg7rr=(dwJADmIglvDr^|dO&r-S4pB-k|mp`IBPr-Fh68jE}Bx@PChQV=C z9c+Vswb02Qgm0hN6K{)L(NyV|FSD>shqM*h4P0LxOh371eS` zDHH3i$E0}d7H=*m;H1GK&@aWavXy~BqvK%p_CrWg5SFkZ-+<8>Uf5AkO3GFh%1&x? zN3sA^pdDD$7*kYiZNIeX)}%&r7#i*x^J;-d$4^m3hA=tSo;fwFxD&c}Usj{hC7PQK z4VUn%LtWT?shWgPrv%QI$zuhIO-kX(7L((F;TKPxjBP`c@>NlqTF{y+?$!+S_qaG_ zAL2%)Xumj0*L4l`7?&o-ahaLxS+lDGhR0uLy;;re*iGcZY#LaZ(xT0OODtFEP^eSR zj7PlLcvK;59;Rr1Vx^n7s~MLSMoLOPc%CzZYSt>pw$TKkL&r(hOrNf@#<*s6?P6F{ ztaGZ8C3X!@c1cQ(e!Uts%S9fwE|jj4CG9#)%FIM#Og%L@ z0-QBAgdBOWUFk5Go1P$)ETg537;a|=g!d7%;efs}&KN@EVFve&l5zrF_8m_e{^Nh%Lo06H(kAm%ZZ9DnC3^C>B7I!=uWBW8i&uVCu>Go@qPfyBUQ_Da99#Naggy~xL{{! zWC|>#9dgR4hoF}VtCgs=3-aP9-jj91M2DJ@>2+1rGI7?(__j}fcrr;NE2uo_%s9k0 z>AzPLOvv8*J~;gisv4NtmMGc zT8^?zSWyJKZ2P&J3vF7>MikNy3qgPr+<4P6TQR?=R2i4H7mpTI^%z?9Ter0QR$l*d zE+c+8rCYOD$U35Fo@hQYnFwScT!t_t(g z$Ld8`%rCCFrTJjqr#vDd`obYtE$9!3w9C_jnf0e7lUP*$QUQ7rrwaJ=QzPB!R_4;VeVPE3?72L?)O7KAvW5mFKj)6+hUlf>Es9Fk~h08{u*C z141RlU>mRa$@lv8mnr3eYgCCM#RhEFXpC(y5?C4(HG`G<`2-k-(;7s zRQ|j9A`DH`M!9JuzcqH;UkLn_z-NmClQlXG@Vy_YGW7~w88r=$+y>xM+F>u{AJITPUgb4Izg4QwPMaLvZ*_Hk6g2{`7 zrSj#A@>5AwB`9JsV8+ruJ@o<2EIMqUd;Qr^neGLoeZxUu^rpC^HZ{hdROD&XaID2`*Y(5!M z$VmYq8JqB#MgtqxpV+%fzkd|0ten@&s7W~aLfZ=5#V?%ek2V@BH5z>8n?@u2DXyK( zX#^?k@!jv;-J|=(r+uTE^Ymd0;e+$>(6-%onZIT+cgyeQ!eGyiYHR)MKJspF*P~It z`{Qut;5_r=>Eh%0{nQQcmOC@Cp?CdqcMhnnMZUPmy$5dX-|Siw;Ab$v0`zoM5w>J* z9L~MlA!nw#Wh&&VBTu*)aIKBFO&fA^zxFJh9e!0dudpv^0O79>RI;n@OtC4xN)gB@X-~hz4t4zc}g|& z_4E5^(erb&+*_OQDe8G*Y!A5b_45!k=q&HJcP}jc;Q26`a7rA>4bBX0O+E1RYwL1b zJ8*Iw$h63h#VSVJQe!A9U$7NT$w5V=b{nqyGXhEk1CBDiVt#m)@ zYRPr8V{w%so0l4T;rrUTX^l;ko5=UY^OaFz|IP1XX+y7pU%-~I|Dbee?Z!8ikOzP5 zy+MG0kC2y$|HI{#Z?ozF0I1z!a7C_Ms2zKwsP3sk6BC+T1T6SCnzb*VnFAI`y;yk( zWM+hlv043|>ekGWpesif-T+y58wO))Jxn=UTYS?~4n~!JRTdoU+Wa)J9~sQ z6_DOvMhsdir#Q9Nx3&~YOM{3~m@0|XV`C@oUS4*d`tRmW9G*UMQcnFYQev0(KJbVR zKgx$fr`A0Eyz^wB1uh5+g$Pq>e-&iuHs}`(ygEHs9^Fy_qUy!)>?%(g2#_&kiICnu z8aH;@3&&*z7_fiU_;6J7_pm!}c^iuhbEH=-E) zGT&ZU&x6v1qtZ9M{!k(h`ezF8KGXfu1>65a*jqrwv2ESLxCIaH?(P;OxHawsclThy z-QC^Y-QC>@?oRLk0rHxhbML$7{@?rl(Sz#2s9kf-Id@g{+Pix9(zVUq&uyWzL#WaP z+ratoTb;jZQ)lYaU~jBva$l5^?XXg9JR;n5e?&s09bag*0U5q$79}<+=`tm?p)(7tMUNsFvi z`3U*Fs`cRXiqYvs+KC@-e^cgV38pT?Pwhv$h?>xkaS^u}3P!CF+m?Y@1kF@)+eKl6v1cIof4BSEe9k_$&0=OdvxT8j_ z1=8-{5O_;4%^=5d8yyVC?_k`ZuNTV5jsbw!mhvz-E?zH|w#r`LN9-+W3yM0mcPC z_m1dpuo)__*}F7EONVmFXT*owo2Xxb2gCWXy9jrB^-m7NKP7#%{P37P%A=>tCwB@<1Z?3WEVuN2AH7@# z9~@+k_5J)9fh#HCI_|aU!sYUO$OAOZ|nN!OVY9R<;tz(Z)slJYl=oU%l;LHx+vPRk-0SuWU6nvsF*F3>ciwaKA3rdIWp~}V zHn8Tov5z8*__H(707m>-nMNLG3&L=EE@i#vW)StH5Qi_%rXVA7+0c%Do-4#L9@j=# z0mej(z74vF=Gho?HtYpoB4b>BL6{fY#uWJ$t0BnAk@9^acGZzIHzhjzjlDFu^OtZ8l}W*%a@0Ruw>oRvYd!O&EK^G zWniz%f8_^qNT<+qHO%g}xkxpb-)&O2B9H?xS<0lYc__W{U8Js7{ChKLo=oO+3lRMV7&J2-{z& z3e57$_9|bq1*6H{*A}(+J1^b>Ty`%6_>XeZUtafkGTn6Ldb{@G`QB(QU+4G6>RuWIbU5&2${1c+R)26Z;?dh6**+|=rADb-cgYRAZnt`QJhiN6 z8N?Ra_Y2!3#ntjr*yIw3rB?1AO>!Tpu2yDE-%epRLcUOZIMr{Etq9;=S+@>Qlv zEmg$hL!x-#ckM@-kQ_Rw_FH(`w0j8^-KL=0HpojF+)udvI9o|f4WImSZKlhr2l|zZ z#u+3s8` zVox5gR`j})>JuCs@@Yau3uGa- zv{{`uEE$tq9_5aUBuy5zTXCf{ESdJM-QLz2IBaGzFqQwbagN#_iB8^1{(wK}WV*Qi zNk@Mjt?ERf_<*1??Rzl+yLHg=UCEke^qZ%vabcdY9H#nWW`0t8y~P+|wVBr#uhLd# z(#Om+f_tsY*)nSH)7hco4$bH&t+QFTxjTzjRa8iBr;`KJ`nHBKXQR3MAlLcU_Oip* zC!9T#F8N}Pf+-W;MvGHjp2dby#)VSou`R*sH^b|ijfC(`#*-6N*xef?d_M(Q-Ahcu zudU8(+;(sF-+fP5yKG!Wn*^q;loHhtgIDbw?+f>=M%r!^hw)uIk^yzXI&P(Bk*@F8o38!p_*s*%2EgMF)hQiE}DQ)UtR))K%4VxK7<=e~}x zElU9Zpy^O?JA8h#NBwr6@{2r7xWDm3On#g>jR5lc^=|Kuz(X)gTaWieaEHczU zfUV?UB=gG`-Xk8b2LJMDH|8lVGAVdolB78Oy6#5_6sCKfi?*?HEm9}8dW8c^f?BNp zllY+UV02jZ7T9@ndR_Ik+>wzQY!GX9q+&@Z6*+$O3T`qS$i!Pq2KhNkA|rY09pWJ5 zt}<{QAca>AZH8jT*fv+S*iq~GZejlMgqqhlhLt+{Rc1ptFiO}ZZclftJas2-6hY#& zR%+PSAwB>%6YVUMSvdYz%ek9IXADMp$4q5$KZeossGfs+dtKCN=@^7)gWAs=VvNT-!A9wpBPrHvOk{cZsy+hnr$aKnZ3oIHurf+z+I(ncF~)N ztZaO5rFoK9_F||u&6sNgpu0)17-z$X4_Vt9jkT$>Cyomo9l0w_cuimw&|FA}u`nul zcVyC~HJ>mPuX-K0bDqRqUwtn=iES|ZBAHxNj3jz7=E0UuQCqep1}0?j{NflKv_DS` zm4313pyi5r8Uv^un#49*&+yz$Cl%tS&{DPxSUxB-Kg=jns7zes!Tx@LBy#amG&e>4 z%}D>e>xZ$|#9FC$NwWvdu*O4{Y0*N>GuZZrN9QyQpO>MbSHJP6ZCS9ai73^k9z48j zZ|g27;7BugQ8#%CA0s)XKQMIl`v+$_jrcg&!Rzlx!z2X@?%gK#hzQ+QjFq06)?a@? z0KZI#I3g3*$HpD5|8&0U=~%>M8FpJF2x}|3)4t2b%cq5yffRW7fW)b{2)CSG`L)x% zi@O?O2C^ezQ&69hzI(qpP8zX?#^vIAo6+q&b4C@i=Lqr&`lT_ryB{otZ{`yy-GKa7 z%WO0(IM!R!`sEKvd2Q&1Bp*9%mMjLks~xx26^vHTo1@~zTcK^q-(OR$)W3{MR!!Wy3}Pist?shD=iGCVO^kjj!2iEXlLou+r$jBT(n%l1DQoWaF~~zH z_OJl=a&p1(+cK@kT7LH>!jTr!TszYbEe<=|?M-=MRoq6jcJT2M@^xIj8f*Bz&J*_P zDB$na>1t>ssU1c4b=Epz!K|mx$@s(nEF#&_<6KX#6>whX_TaShINy}7 z+_56OL|Dgl7_rDtGWe>8-5B5j4&M|h)WZ3CxafrzNJ>%d;wZkesm=rB7D>6iX~Y`s zGS`Vcxaq`a_ycM=2k?76eYEGN2|%N}q@6S4qQBGELl{xRdf|`MBs<$bQhydLcko2? zOS0+TSTKG?yNoRC7u?>AfLKqr;+O}tabDW(%7Q=G*g4DpI@)yYwc`Kz|IZG<7Ji%k zb=`rzg%bk_+}C68Lks6BoI<9PEy;2=l2jh&vTUCBr7U08v(6}k1|11){RhV;q@Pfi z2;4@E3evT_H4&P9ouE)_LqzN8I=81>5gj!tHRZsb*aY^3;^m}V`9{}RF?WXAPs2L% zr3lGKo95)+?C4g$`i|b#EZbr>RLP%<>}`nzyZzpS3U4j0k2h}ZZqiMe9vs2j>wYcC zw_xAv%$X9Kr?YqwqSKqBmrpLsE6LrLg*Iq&ml~06f{1Oz45^2Fzsaspy10VCXn_!4 zxL+Gp0IKt4)DU#(JT&%33kE5(h)c_iDG6Bg`zbBwC~3FpvpYZPXnfR3^-MCu=gz^M zVv+4U?&GbW|azbplCLX(DK!1N&0*OfS%{{GDDH5M{w?u25-KjKYwB&PaeY|5OV{AKL z5dQA$YANe(30ym+G}xzQ*{2mRCs{?hS&I3^)l${nG6g(n%D1VL9VFjauf*Ll zadoqP6Gyb{tE=VeIF8%^!!=1Aw)v)UF+tr(zn0})dn4cGO{y)B;!fqLsrquPK<5tp z#X>kk2Rm&i`vj=)k>J`Uj?XL$lX7R{*#5nSZ6t}~r;f&RN}py=5?vrgSIZmNJ?8>{Tdp0x`@9dflTx+_jy*HnGfmA-wjPUdOqsuz4Ec z=;GA55An)cx$Jk=yLn@fhm~T9gHb0UW!Ed$BP-7rT0+P7#Awkc1VonseG<1q&p!;P zwFK!rCRXw?dcL$P7YStmMbR-E&xm*Fbkg@aSoVNeL5z4Km=_BMx29TXr#kTgdxz#MNvpb zbb{jYf)db-pHAA~VHgOg!qT)Jkx6R4e5@%h`(hr_lTqiQ2|46a#y}!6vx_FSs57A# z0E0{df?s1#f1(@$(lY}O&wS4oCd_Gs=`>1s0SNiekjS9_3VF6-3JmFd{wE~QL(oF4 z>E9tUppZ!fLwXQpd$JVA3W>oSEvPNgvDT>XBawx|l~Nc*^rq2<;BEAwNJaFnN&OL5 z+LN4UL_qY+pn`JTPsJ6ufNIN%Z7$8eeufat!AP5@3a$m)w+?~KmE`)lGDPCT zD=XYj529QsML-}da=9ZNuxJH0O+rA3nhE#Ygds>bk$Yi?!9EH@=rE;EOIxT$!+H6M z&@lTh6{3d1HZaDE$>g}TYC`luiPR@tV+)3W5QFiufnH+gdkmI+sUNdMfk~ZdwK7M? zdRpcPfZ<^Y+!x8AcGAlHiC&Hg23o}P6 z4+pY!9`>9Lr>kFj%Q@%D38CwII|>{Mp}KWOGbU84jpPl=)#@k@HpVprypeu)q5RhI zl49!`X{ecC>z=_9-t2H?fv<{=L5S_0w;h@vUO%5)4;bER8zyYi#}g(0pz}cG>2>Rl zqT~I&KPqK8`&9x-r<+;lHy;7?UYvn4-~fue@q{)te)T31UdrlG>Y<>+OC$X1dFP&U z_kLV1bOyYcKFK@P-)Twk!B5uM$QMD1kWL%Afs&>@Q)Qmllh0=dDg^{=mS7(4esyn(ai zY}80b7J53?Nk+DzndZ;2eV)!TuCGAXQqnt9)32V_em+-LyIJ=&>3b^}hj+fk&2<{< z2#A8}y1uTCo54K-{CiuB{BLMEsY+#aM>CYaA)@=U9PlWgkD`MnHT*yHoFX24(CPiB z9$Rm0Y0@TyvokWywJmLIR4Ra1qJ$g~dH&j4@}%}j@NYj*%OI7I#>~K2NB@W^xg-Iq7Rlg+52B23 z;4Ux~x9MH{i#Ma-H_g)7dFsLk?V@gT*(Rp9)}`@<-W*UYvj&|V$Ja(K)kK+wZ&@H{ zR5^mO_#eycPUKZv0<@Dl;T^E|Sw@UswRZ-w^rEF;KQq;179md%rL4BTID;r=#@O9O zv5Bxc4v>eK+=GCp2AM&jVUefVcWH`g5MktLJg|hAAWssd-8%+i8v1-H8-Sgi&`J5s z=5J9O{QYDj2%doNLTEF>Yj=R=Fz0ymz{qFU3d{-d-0;%4}UeeY) zmFf4YP2)&b1YmgXR_-KlLYM#iA+^8v)P6B6y9B{x0GD1^U(um9sFo8yxWd#9XVV|u zW3@~{8BOA|%5kYevcOJ)~j5yYy+v zwi(U=y;02+JuLy~!GRTF0%pRyiW?dh{J&JVfd-i9ScUXUD!;tlyvVyK{;fkP=Lo3d z&GBD4-bUB!SV;aC63%%V8Qz2U&+MQ$JEr3JfP$kZcCkuzq7SzH5p#SQ&ja?<>Z>3<=Gk|PpjdS9n_#2mH+EP4{K=l>N zF-UxMB<2k8BiLMrXMbeYd+n@gUxZ9Sf*Gc8^@Lgl@#3Q!rTwp6kT}J0G$*XLiBv@6 zLm3!WWD|)xm#}&~VF$mlIEwMLl>elmUWdB%ytkp#&tchC?Kn zC{PTFCe2bv;^$gFRhKUnD7Y-|iW)%53G;25)bkZb;FLO@W{8)Vy1HwN9@L5l(=dWS z4G^FMG*KRAY7bY<*m8F;r%90Uz25^F;^kf&uY{JzA}bNj&F2#>z>1^i3v`y8u@J^ zk;G5uajUMPo-ZarmG=2@{D?pI)8Oa4GvY1Rvzlk#z^Q8ltI~4BIV3bbqBSsiV8hbm zy(fDO%4poo$}E(^2*3<1Mwr|~@h+w(k4Pw?5hkppJL{u_0hE9dnSy?lF9nX|N7Fqb z#3#xW1QCTj(o&_t(=a2qG6{uPcx7e}Y+3wjSG)*m2ST33@EqkY@aT?;iCxO@V+j@t zwUnahuyk;Wq8i~jVbA4~J~Sp*!eZ#?hgcHptK$+S2HR6d@o^K9!3LYys4sGOZl@ZuT6CJD?0ffzI%}G$Q$ipH;(Yivl3-oxPkd0 zuR+k3eyf7$?EG;&Diu>A$;Dx4smFro^~tmQw&_s*_M;@nYCy`sx!?&&V^<*M_&o9d zqD%tzPs&^=(2Kw2(l#5J}me!{(7trc655rtDzs`(Rv0 z{eg`!nO|eY$E?eU9~{}5C-!wpVwEByGv&1wDgYOT^O=tZhV!%FS?v#m9jNWtYBYS2 z{5Z}D>qMLLQ2{BMO}lt|x2K@&ALZcnfePo50sXgO2*yL|5?nEMW49@YV&K(A3ifaj zLL`fof@g}U){x(mC5>ojI7`%XkuH9wMPxS|FsjBMz}*b(h$2W{F7 zK~8MIuy96{XxB2@(h<-<{S&t9%+d?ZgLKDE zS>2wBwnDJaH$drhPY$XpSrRf)OSuEg5INaSL^CQb}064 zP!R>T)Syj1&uk)0!0lgQNlJw^V$uGDMK$%)BOK08~p0*d8I@?(#>5j>xs_smp zZUL>ByRdd}J-B!9$x;8#JK~H#@gPy*A)f2Ewz`r{{N5=%IT;EdgnyVtsWQ z!cqP)H;%+A`pNrf6ylQ)rT-maalLg8B9bz0ltrfreDUgcljP4nJ9kmXF{CqgUgCGp zbtEK+AzVbeJ|V)*B#61VL*%6^D2^b!!V|rM7Ahrcnc4LrJVd86Uy|V*G3zk>?jUkUqcTNB75hs z`91oBUI$YlZp6G2?a#or!Mp>6Z8+Xn z`BW2XU$__-p5}-{1bniI-}E3_)1ZWy3`_&bB|yR-!FQ2T>Rl!^-nrF)7KaEBz3K6Y zp?HH7&Jce7&~G=ypgrKw4*b6g#hb~{t8|!<&-YQ7gUjdr$oJMWg^$8m!SQB&+9jWc zK1V)+KVt79(Z`nqAA?ARdAq&vl}VBIWdP|rE@g55iN~>x_U?tuFx4(n4%&BOyn$XO zJUgIg{~?9c_pu-5FUJI5a?7uwDbog@5?qf0d48)v{N)&yP*sN>M|Qmc1OD}G2~8x7 zBgQrKgoei<-8-=rAEkFmO!)ag*^0;2znS2~QFsG}{;9>&_t8K4-%4g5g@Kb^k~v({ zS3to6!Y{or4(QSEL%8m5UIZ$IDEjZc!EHJHF6SB=*ACblyGTWbKsoYougHjp^>K2p z>NcFaNImSkNG21EK){w2uP5`ywR(TVlhyWq^8>Da*BI^%KnAf~(!QBmloK{ayN_!| zy0L%1cc4a-?py6NLXk;g3whiWk8WcsJo^PjQQV!oRY_|sWRDpUO8_Ya6rLr1eHimJ z!LO?ZSM9kN&7>>ik-KVqQERh$Bsfq|G_3E6A1n}dm>wJyas>VOA&Y%gK>JH{YkHV0 zu*5XFAMX@5YlZ~)yJNmO({EGtD>Mx#JnW7#>8Vu&mBXuHSJlzkRcr*~Pe*=x@JO~x z!rogkH(k9KzfQ=6fVgy+UO(Wd0SRuE28T^v&GJ=tO2Y>fulmjdFDZ^hjPq&IpEP!Kh=Apv5>@cerQ;+#&)%-dX#x~nm zbD|x#HP)CgfTLvYEpBmY&ItFr6a?@22?a>Re*$$!Z~|C`i~(Gec4_I(X>L-CI<7fZK-YTOhaSmr?Q&MT;RiXFgM`$ zOfEzYrhPVl`TnpY0MI%3C4xl8-~r=FmG-vhNd#Bu)hR>G`19q!!TyGU>35~4^@}Q+ zXzb~jfv9~zT@RLWTwmZPB}usZE{95`V=|HpX)1D(NnzTPR8`a=zyyF2sxiP;RhZsa z(;!=OccSwtC36C?;EIK6sl@!8fZfb3_3hEz$N2^kFgKrz|CQ9#+?i|_F#MnKL5z_psxc-MTQ-t)PuYh z73CKNfY_|-KE_sa6;%l2!M?+H<%0sIg1~QYo-LvW1qc&D+_C=JypYiERveJsk#cUA z@|i_Dupj~N@xLWV#$Y4GMDqtdW>~igKd_!>Qs!&3xkXdkife>o7))} z_aYQ71-$yeo0s;48JGZeuuIWV0#xY899kS-&adFz6|U73JcyCoFEg5Ketj_*4^Ou{ z80>x=Owf^nhz^xjjMg9`&0Ehh|bwZ>tyLwo4g?LM(I~Q=Qn^jb$@&J>3JG5Fzh9y!VZf0R_YU(OYAf*NMz`rPoh~Ocs0Ysdz zu@6KFzQF=FZd8=7ihy0J2NDjo(e6;-S)$Ipqmyu++awQY%gcax8zHQL{Zx-i^iLKT ziSa;Z4n+R#i~}lkE@q8mZXH$gQ$z!p}=n zmt*-QVK6|@Ul^)zBP;#&`XVMI!;bv^2s17rwn=fGDMai#=67rwd9ib2Ufq5|o;=!! z`OfE-Q5#VEO(gKyd)YjgCEP&z9){CMqXGRvc(L5<8zhCrngKR4gSX z1aJubk}_&iBW#?7}Ww`({^#hPO7H`o!6m=oS+`DKK)VjF&C zGK?a-9XI_$s_YiYC&Mp;1{;!lQ3#N!Y_`8CZ$(tRLl3c5)|xHXiJP-(04!qF#y{A_{BZ zr86Q^1%Q*n1j)=E+z*(3oDYGVQj{|_ncPtEPkaWZvru2zT0T}9N56kln2#0Vr8co^ zZj$KF3`srXY7a3xKPqT=#dueOaV*+uat{d*L-Zj~RLZoiCR0=_Uk^2+l@O0^E(Xw$ zBntSn{B<=VJ+-oYnyxMqh(prv%8^yuO<+8Uj;mfUBu=6i>uerZM;AvTi>hw4^SNfE zt487^0j;TiWF~su=hcArthbj0;Y7qzV}B)^he1x)SF~wPtxaQ}556D!w|1?sC~z7C z3_~M%nrfVc`Ucxq6nHj=pCg1POycYFhG$G4`NyesYak(Fm`hMB0*n_#iMeT9E1L80i#wM*T17Sg!hO z$kOrtO{jo3!&T{_opeGQvtz7N@n1kT7}(Ias}ZuT|02agcXQ(%pZW6NMQQQ{#B{sCK|qdR|D&Xy zqp_2dxsB;sPeH%w0x6#DG9Ve}+aqJr(BKb+Crn%;Bc3V93D4*8 zg^nPx(iM0!xIn^V&(={tz~DkgaJwT)LqTL-%tun-r5=z+%0gNyvi=eYTbDZ6n99ou z9H*ZxXvlFCmAY$+>9ZK^&>{bwiz{;9l|Vt6^6wvOfP zN>u7h#ebV4YqAKx7VkT0FB_n5pDYey)X5$WmeF6s(*rKFD(+T>0CyUKt7R=w$4mmestqq7Lo7Gjw)Dys zw1sgSYxJzof6x8{765D9PWuyb!%Y}YV}P@x32h!{=N3RXJ7L$N#rs}`L{9K`sd1&I zQ+24t$(~9d*CkzP4N`(fYianp7VNs6xIBH?H1Eb8aMdq=qeQm}JfTGYh8X6+qvd4? z^uP+P@Tlh_684sWi<2qO*NQ-Ng)(E$TG%6DF-|R99@cPO^se$r@!C)xI*Xc;!89br zHUour-n+Vy@u<5Z9gYj*+T_8`^SN;b4~<>p(0FV67xt=i(+pv6r<+D2nakYg@?mde z=kayfpR(44x}zIV92X{=sF33>Tcm`>w8sP>tSg0A2DOvu{FLDNW`m<2bS#i3Gj0Lt z>>j@&tNJtQ+|P1Jk{(~LhFVfXy$^Obf%6pJx8RJ=M+bTI;R^oYGCR^ng%7~g5@Sf+ z$t^fPxLAx}PzV)L@)53C=#p!-M{!oi9tUE>=egT#c?h6FkU_M_1o|oYJ0A1oP)O7A*Ys1feD*J3MmcM&M$o$>*P} z8XQ>dcND}Y#HE|wIFk(9lDY5e?OC8ycXQ4cj0k@OZx{|y!SKRFVx*nJC0wi(=#)V| zBYqBv93U|$WvP=qLI(a+@+fvh4j%rBI^HZUioq$RO@Kh=1|ZL#q(sLYz3QckieN7C zx|xbAN~(`_tR571$?Z}|9EE;zY&N=SJ&*nv`bYsxp=0>ib{fXmJN4#`&?wI0)qN4$4r3bu$A=CxX~JpWQTngIsuAnV5(%swp3bdAGL|U6a^}dzF>CjbHRTa~I#Iy{7A+Hn!(pZaOWflN zEM^>uT#*t>6V|6NMOsH*h?5Y}ra`~MbQDZfB$C~=p%EKhb=9eu&9W% z63~^3-YJ@y<{cNvi-}TOHNS=8+AqF=+$a88HbX`5O4%%V70pH#ogd+EUpr!+bbNVS zLHTZlP4-o;z>2r;zn{Z6yLTc~SCwjW^0oAz6@{s}!?I=@x;ZoBriiNAYu=1<(Yxi| z+JTjfjB2TNI3M(A8)w*L4W69rtj+f$on7A+4>RiiR>0(Vn2$4e<)p!EWBfRmJ!pi~ zAF~;&?`+tIAUFfEY#a&u8v^-LGjlsv9)-Dz&{<(*$lORKrCAM~S*DHT45HacH{5rF zH%I2*jV;}}6W!VTHZt&`FVi;^sFI--W4KIiyfGW*H%S6bI@`*6cKf|axBN*;!xc5V zwvb?qleIq%zJ*RXza)22oE5vvR*98;yZ*28$O%FuEknS{?CmrlAn5-(C7sNSt&JJ~ zY?=R5IMbB1UE{#&`l*K8w!iSa<{Z{0dcJb8RD^)qEF9e+qGd&;Ky*UZg>YftY6H?fh@i2l%VOQeMst?P7d$iFbIa)ZAwZOp=~!N8*xI$wZ+ zIKC0Y5_WA{(BU=0t~K^&#!JwqA*peBBt9uUP84@YW32=iSdYHqyE6#}_klq;5L13v z<$kG`ViuPqjYSio%afV8?-$5q5JHwxUp!fH#ky5_zP}$&H#aX!V}rcXsb0QNnQN!q znQ1B%rF}xX_bQ*0l#BrzWP^-z8jp0?kcdw#N|LMJJaNJ~qe#;XD$0_Zr{O%qRrx6U zNqC;BM%FZc%{t8t2RqG#U-tKnd%aD8Ifa?F-)pBQDthCI;5-p3Q{KJ_v$S+wgW_y; z{(?k?i#u-318U|5IUEiMe){>`t%f%UWK0O~S?hRKHylO*q!@k<1z8(HzeDivyemr~n zYMbTR2r?4iv*rDK-mKfL?Sm{ia8{lDdcC`PX3PKkHkeYh1pz8pavj7Y#Gm&V?Zs_fm$~SJVe_4&N?&)Ickwh1soyy789D zY(urMQQK$57Fd!rOq-riADvp&8B)m+YpV6nqAtY~OL)V9@I}ldXm@x6Zp4oa=@v8_ zagFvuM%J;V#lk5)9)U4yF>_=_@t4kDjv)u#^|xgG_;)>6l!#V}^3?guj%wVKq5|J` zL)xNa)$2ZQ^cybYMOc{h!8xKUbOyEHENe$vr2pgG{r7& z@xS))Yy>sv>(>?kTKg>6R_;vgcojUmz_By1CC1`A?eX1Bj`xSTX-P4Cg;eyI-xDI#L-AO#5W&O- zDb-ur8Q=?K&}kd{Q!MKS@`-Y^H?!%#(dd@kwH?2rB_$zZvfup_=OIMXS_oZQ96Jom z&Aa`kw40RB(Mq$hutZrXc5!1~st}4LClM{Rm*T$vc%gfO5?RnElli=#DwiZdEnAOc zPFatNx?jR13;D#CG3^kc=8!>v(l#SBtdU&fRp`=`U&2(HJoB?5ud;*cd!L_e$wt@` zCx+9mzkgHXW(fzKUVn~t8RUhY|BEn@yHbS_x6Pp;W5sJz?{Yq-l2|L0)st1ZN`q*aTkae5%01lQIsj;r!NP-hT^)6waYte&T{+_adt{W7%d$D7DO3W z1N~Tlv~l|fZL6QD9rG#5392A}w)?CKjXkoK0KK)`?nJhHfxAqz3NEDRWjDbgIF)t||Gpa> zYdR5aeiu(Q(s9%TFS4$RPXz_0R{b0S5@KPbrbgw$rbYPAA0!s?L&tgbPe~*wmfSzL ztST}CNN7VEgNPU4pT2cSC>a)cq38fQ2gW7XW1fstct8;drC>Q{VE_`lM+ST`!l79M z{?@8ed`P9Ni{dcR?ivmerikVPTSBBhnZm*(1$p`p^QGqpMn@8LD>KZN*4#_j!8?N3 ztZK=IQ5sIE2c%~lUaP-6LjN-t%ktq_E(U(!K>@SZkHB|BXGbSn zYjtZYMsp`)>pvfRl@YaYeN1Q|KfOdp<3@{kLeSxDW#n{=7XDyhRQ?3lxIRs6sYVG8NZwZgGVqmIKG6 z868F2(`Lq4fKUwpGqo#4IIawVeI2pGYViA5Hs}{_rIzGD(a44)&Uk1}-o5IrijO6a z^2|^L#if5yNuRYr9$4K1mu}<`u(ahP-_op;$q8?GNtXR0?_g`^ z_@`GhV`^>unb1VPcJPd-e-<>azuKU_Hv#ehh5 zLvWBfd40UzVLH)7Dq+Lv4t3D4gFBijFxlg@6^=o(!GM}zXpcov@ufrBYXp|`2L^Ce zsl$s3r+u2S!sj!`xfzz#%VX&jRW|G0FB;i$3XSyL_9#RRfaeR(z|E@t(8|rhkl%_h)xM)TgfgUbJM05oVH>(-AaeEE zzL-6Q{4OMgIsu!S{OtMAl4^}Yuf5V@E;Ff0kD0h+>cpAD?dR}Zkr3&y31U_PTWSLq z+G&iC5PIAeMAUTe9IiIbmyHpERgHvnq_kXsbu9P3dRp`EJQWglM<)pll2mgZar`E2#_5RoIr z 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 R`es!k5J$i~1S#L{{sp*9m0kb< literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/HydrationContextBuilder.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/HydrationContextBuilder.scala deleted file mode 100644 index 023adb81e..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/HydrationContextBuilder.scala +++ /dev/null @@ -1,179 +0,0 @@ -package com.twitter.frigate.pushservice.ml - -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.ml.feature.TweetSocialProofKey -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.predicate.quality_model_predicate.PDauCohortUtil -import com.twitter.nrel.hydration.base.FeatureInput -import com.twitter.nrel.hydration.push.HydrationContext -import com.twitter.nrel.hydration.frigate.{FeatureInputs => FI} -import com.twitter.util.Future - -object HydrationContextBuilder { - - private def getRecUserInputs( - pushCandidate: PushCandidate - ): Set[FI.RecUser] = { - pushCandidate match { - case userCandidate: UserCandidate => - Set(FI.RecUser(userCandidate.userId)) - case _ => Set.empty - } - } - - private def getRecTweetInputs( - pushCandidate: PushCandidate - ): Set[FI.RecTweet] = - pushCandidate match { - case tweetCandidateWithAuthor: TweetCandidate with TweetAuthor with TweetAuthorDetails => - val authorIdOpt = tweetCandidateWithAuthor.authorId - Set(FI.RecTweet(tweetCandidateWithAuthor.tweetId, authorIdOpt)) - case _ => Set.empty - } - - private def getMediaInputs( - pushCandidate: PushCandidate - ): Set[FI.Media] = - pushCandidate match { - case tweetCandidateWithMedia: TweetCandidate with TweetDetails => - tweetCandidateWithMedia.mediaKeys - .map { mk => - Set(FI.Media(mk)) - }.getOrElse(Set.empty) - case _ => Set.empty - } - - private def getEventInputs( - pushCandidate: PushCandidate - ): Set[FI.Event] = pushCandidate match { - case mrEventCandidate: EventCandidate => - Set(FI.Event(mrEventCandidate.eventId)) - case mfEventCandidate: MagicFanoutEventCandidate => - Set(FI.Event(mfEventCandidate.eventId)) - case _ => Set.empty - } - - private def getTopicInputs( - pushCandidate: PushCandidate - ): Set[FI.Topic] = - pushCandidate match { - case mrTopicCandidate: TopicCandidate => - mrTopicCandidate.semanticCoreEntityId match { - case Some(topicId) => Set(FI.Topic(topicId)) - case _ => Set.empty - } - case _ => Set.empty - } - - private def getTweetSocialProofKey( - pushCandidate: PushCandidate - ): Future[Set[FI.SocialProofKey]] = { - pushCandidate match { - case candidate: TweetCandidate with SocialContextActions => - val target = pushCandidate.target - target.seedsWithWeight.map { seedsWithWeightOpt => - Set( - FI.SocialProofKey( - TweetSocialProofKey( - seedsWithWeightOpt.getOrElse(Map.empty), - candidate.socialContextAllTypeActions - )) - ) - } - case _ => Future.value(Set.empty) - } - } - - private def getSocialContextInputs( - pushCandidate: PushCandidate - ): Future[Set[FeatureInput]] = - pushCandidate match { - case candidateWithSC: Candidate with SocialContextActions => - val tweetSocialProofKeyFut = getTweetSocialProofKey(pushCandidate) - tweetSocialProofKeyFut.map { tweetSocialProofKeyOpt => - val socialContextUsers = FI.SocialContextUsers(candidateWithSC.socialContextUserIds.toSet) - val socialContextActions = - FI.SocialContextActions(candidateWithSC.socialContextAllTypeActions) - val socialProofKeyOpt = tweetSocialProofKeyOpt - Set(Set(socialContextUsers), Set(socialContextActions), socialProofKeyOpt).flatten - } - case _ => Future.value(Set.empty) - } - - private def getPushStringGroupInputs( - pushCandidate: PushCandidate - ): Set[FI.PushStringGroup] = - Set( - FI.PushStringGroup( - pushCandidate.getPushCopy.flatMap(_.pushStringGroup).map(_.toString).getOrElse("") - )) - - private def getCRTInputs( - pushCandidate: PushCandidate - ): Set[FI.CommonRecommendationType] = - Set(FI.CommonRecommendationType(pushCandidate.commonRecType)) - - private def getFrigateNotification( - pushCandidate: PushCandidate - ): Set[FI.CandidateFrigateNotification] = - Set(FI.CandidateFrigateNotification(pushCandidate.frigateNotification)) - - private def getCopyId( - pushCandidate: PushCandidate - ): Set[FI.CopyId] = - Set(FI.CopyId(pushCandidate.pushCopyId, pushCandidate.ntabCopyId)) - - def build(candidate: PushCandidate): Future[HydrationContext] = { - val socialContextInputsFut = getSocialContextInputs(candidate) - socialContextInputsFut.map { socialContextInputs => - val featureInputs: Set[FeatureInput] = - socialContextInputs ++ - getRecUserInputs(candidate) ++ - getRecTweetInputs(candidate) ++ - getEventInputs(candidate) ++ - getTopicInputs(candidate) ++ - getCRTInputs(candidate) ++ - getPushStringGroupInputs(candidate) ++ - getMediaInputs(candidate) ++ - getFrigateNotification(candidate) ++ - getCopyId(candidate) - - HydrationContext( - candidate.target.targetId, - featureInputs - ) - } - } - - def build(target: Target): Future[HydrationContext] = { - val realGraphFeaturesFut = target.realGraphFeatures - for { - realGraphFeaturesOpt <- realGraphFeaturesFut - dauProb <- PDauCohortUtil.getDauProb(target) - mrUserStateOpt <- target.targetMrUserState - historyInputOpt <- - if (target.params(PushFeatureSwitchParams.EnableHydratingOnlineMRHistoryFeatures)) { - target.onlineLabeledPushRecs.map { mrHistoryValueOpt => - mrHistoryValueOpt.map(FI.MrHistory) - } - } else Future.None - } yield { - val realGraphFeaturesInputOpt = realGraphFeaturesOpt.map { realGraphFeatures => - FI.TargetRealGraphFeatures(realGraphFeatures) - } - val dauProbInput = FI.DauProb(dauProb) - val mrUserStateInput = FI.MrUserState(mrUserStateOpt.map(_.name).getOrElse("unknown")) - HydrationContext( - target.targetId, - Seq( - realGraphFeaturesInputOpt, - historyInputOpt, - Some(dauProbInput), - Some(mrUserStateInput) - ).flatten.toSet - ) - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/PushMLModelScorer.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/PushMLModelScorer.docx new file mode 100644 index 0000000000000000000000000000000000000000..a170e0f0ae0a7265e97677cb269948f1e36f2370 GIT binary patch literal 38477 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%0D{vh&n;H+O9J^pTZx;&YJ{y|nj%OL*{6Iv6~; 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/PushMLModelScorer.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/PushMLModelScorer.scala deleted file mode 100644 index fd702cc3c..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/ml/PushMLModelScorer.scala +++ /dev/null @@ -1,188 +0,0 @@ -package com.twitter.frigate.pushservice.ml - -import com.twitter.cortex.deepbird.thriftjava.ModelSelector -import com.twitter.finagle.stats.Counter -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.CandidateDetails -import com.twitter.frigate.common.base.FeatureMap -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.PushMLModel -import com.twitter.frigate.pushservice.params.PushModelName -import com.twitter.frigate.pushservice.params.WeightedOpenOrNtabClickModel -import com.twitter.nrel.heavyranker.PushCandidateHydrationContextWithModel -import com.twitter.nrel.heavyranker.PushPredictionServiceStore -import com.twitter.nrel.heavyranker.TargetFeatureMapWithModel -import com.twitter.timelines.configapi.FSParam -import com.twitter.util.Future - -/** - * PushMLModelScorer scores the Candidates and populates their ML scores - * - * @param pushMLModel Enum to specify which model to use for scoring the Candidates - * @param modelToPredictionServiceStoreMap Supports all other prediction services. Specifies model ID -> dbv2 ReadableStore - * @param defaultDBv2PredictionServiceStore: Supports models that are not specified in the previous maps (which will be directly configured in the config repo) - * @param scoringStats StatsReceiver for scoping stats - */ -class PushMLModelScorer( - pushMLModel: PushMLModel.Value, - modelToPredictionServiceStoreMap: Map[ - WeightedOpenOrNtabClickModel.ModelNameType, - PushPredictionServiceStore - ], - defaultDBv2PredictionServiceStore: PushPredictionServiceStore, - scoringStats: StatsReceiver) { - - val queriesOutsideTheModelMaps: StatsReceiver = - scoringStats.scope("queries_outside_the_model_maps") - val totalQueriesOutsideTheModelMaps: Counter = - queriesOutsideTheModelMaps.counter("total") - - private def scoreByBatchPredictionForModelFromMultiModelService( - predictionServiceStore: PushPredictionServiceStore, - modelVersion: WeightedOpenOrNtabClickModel.ModelNameType, - candidatesDetails: Seq[CandidateDetails[PushCandidate]], - useCommonFeatures: Boolean, - overridePushMLModel: PushMLModel.Value - ): Seq[CandidateDetails[PushCandidate]] = { - val modelName = - PushModelName(overridePushMLModel, modelVersion).toString - val modelSelector = new ModelSelector() - modelSelector.setId(modelName) - - val candidateHydrationWithFeaturesMap = candidatesDetails.map { candidatesDetail => - ( - candidatesDetail.candidate.candidateHydrationContext, - candidatesDetail.candidate.candidateFeatureMap()) - } - if (candidatesDetails.nonEmpty) { - val candidatesWithScore = predictionServiceStore.getBatchPredictionsForModel( - candidatesDetails.head.candidate.target.targetHydrationContext, - candidatesDetails.head.candidate.target.featureMap, - candidateHydrationWithFeaturesMap, - Some(modelSelector), - useCommonFeatures - ) - candidatesDetails.zip(candidatesWithScore).foreach { - case (candidateDetail, (_, scoreOptFut)) => - candidateDetail.candidate.populateQualityModelScore( - overridePushMLModel, - modelVersion, - scoreOptFut - ) - } - } - - candidatesDetails - } - - private def scoreByBatchPrediction( - modelVersion: WeightedOpenOrNtabClickModel.ModelNameType, - candidatesDetails: Seq[CandidateDetails[PushCandidate]], - useCommonFeaturesForDBv2Service: Boolean, - overridePushMLModel: PushMLModel.Value - ): Seq[CandidateDetails[PushCandidate]] = { - if (modelToPredictionServiceStoreMap.contains(modelVersion)) { - scoreByBatchPredictionForModelFromMultiModelService( - modelToPredictionServiceStoreMap(modelVersion), - modelVersion, - candidatesDetails, - useCommonFeaturesForDBv2Service, - overridePushMLModel - ) - } else { - totalQueriesOutsideTheModelMaps.incr() - queriesOutsideTheModelMaps.counter(modelVersion).incr() - scoreByBatchPredictionForModelFromMultiModelService( - defaultDBv2PredictionServiceStore, - modelVersion, - candidatesDetails, - useCommonFeaturesForDBv2Service, - overridePushMLModel - ) - } - } - - def scoreByBatchPredictionForModelVersion( - target: Target, - candidatesDetails: Seq[CandidateDetails[PushCandidate]], - modelVersionParam: FSParam[WeightedOpenOrNtabClickModel.ModelNameType], - useCommonFeaturesForDBv2Service: Boolean = true, - overridePushMLModelOpt: Option[PushMLModel.Value] = None - ): Seq[CandidateDetails[PushCandidate]] = { - scoreByBatchPrediction( - target.params(modelVersionParam), - candidatesDetails, - useCommonFeaturesForDBv2Service, - overridePushMLModelOpt.getOrElse(pushMLModel) - ) - } - - def singlePredicationForModelVersion( - modelVersion: String, - candidate: PushCandidate, - overridePushMLModelOpt: Option[PushMLModel.Value] = None - ): Future[Option[Double]] = { - val modelSelector = new ModelSelector() - modelSelector.setId( - PushModelName(overridePushMLModelOpt.getOrElse(pushMLModel), modelVersion).toString - ) - if (modelToPredictionServiceStoreMap.contains(modelVersion)) { - modelToPredictionServiceStoreMap(modelVersion).get( - PushCandidateHydrationContextWithModel( - candidate.target.targetHydrationContext, - candidate.target.featureMap, - candidate.candidateHydrationContext, - candidate.candidateFeatureMap(), - Some(modelSelector) - ) - ) - } else { - totalQueriesOutsideTheModelMaps.incr() - queriesOutsideTheModelMaps.counter(modelVersion).incr() - defaultDBv2PredictionServiceStore.get( - PushCandidateHydrationContextWithModel( - candidate.target.targetHydrationContext, - candidate.target.featureMap, - candidate.candidateHydrationContext, - candidate.candidateFeatureMap(), - Some(modelSelector) - ) - ) - } - } - - def singlePredictionForTargetLevel( - modelVersion: String, - targetId: Long, - featureMap: Future[FeatureMap] - ): Future[Option[Double]] = { - val modelSelector = new ModelSelector() - modelSelector.setId( - PushModelName(pushMLModel, modelVersion).toString - ) - defaultDBv2PredictionServiceStore.getForTargetLevel( - TargetFeatureMapWithModel(targetId, featureMap, Some(modelSelector)) - ) - } - - def getScoreHistogramCounters( - stats: StatsReceiver, - scopeName: String, - histogramBinSize: Double - ): IndexedSeq[Counter] = { - val histogramScopedStatsReceiver = stats.scope(scopeName) - val numBins = math.ceil(1.0 / histogramBinSize).toInt - - (0 to numBins) map { k => - if (k == 0) - histogramScopedStatsReceiver.counter("candidates_with_scores_zero") - else { - val counterName = "candidates_with_scores_from_%s_to_%s".format( - "%.2f".format(histogramBinSize * (k - 1)).replace(".", ""), - "%.2f".format(math.min(1.0, histogramBinSize * k)).replace(".", "")) - histogramScopedStatsReceiver.counter(counterName) - } - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/DiscoverTwitter.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/DiscoverTwitter.docx new file mode 100644 index 0000000000000000000000000000000000000000..96fd1836f56c4cc7c244af6c8e597a3a638803da GIT binary patch literal 37509 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 F2LP4#8F&By literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/DiscoverTwitter.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/DiscoverTwitter.scala deleted file mode 100644 index dc350a740..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/DiscoverTwitter.scala +++ /dev/null @@ -1,89 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.DiscoverTwitterCandidate -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.config.Config -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.model.candidate.CopyIds -import com.twitter.frigate.pushservice.model.ibis.DiscoverTwitterPushIbis2Hydrator -import com.twitter.frigate.pushservice.model.ntab.DiscoverTwitterNtabRequestHydrator -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.predicate.PredicatesForCandidate -import com.twitter.frigate.pushservice.take.predicates.BasicRFPHPredicates -import com.twitter.frigate.pushservice.take.predicates.OutOfNetworkTweetPredicates -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.hermit.predicate.NamedPredicate - -class DiscoverTwitterPushCandidate( - candidate: RawCandidate with DiscoverTwitterCandidate, - copyIds: CopyIds, -)( - implicit val statsScoped: StatsReceiver, - pushModelScorer: PushMLModelScorer) - extends PushCandidate - with DiscoverTwitterCandidate - with DiscoverTwitterPushIbis2Hydrator - with DiscoverTwitterNtabRequestHydrator { - - override val pushCopyId: Option[Int] = copyIds.pushCopyId - - override val ntabCopyId: Option[Int] = copyIds.ntabCopyId - - override val copyAggregationId: Option[String] = copyIds.aggregationId - - override val target: Target = candidate.target - - override lazy val commonRecType: CommonRecommendationType = candidate.commonRecType - - override val weightedOpenOrNtabClickModelScorer: PushMLModelScorer = pushModelScorer - - override val statsReceiver: StatsReceiver = - statsScoped.scope("DiscoverTwitterPushCandidate") -} - -case class AddressBookPushCandidatePredicates(config: Config) - extends BasicRFPHPredicates[DiscoverTwitterPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override val predicates: List[ - NamedPredicate[DiscoverTwitterPushCandidate] - ] = - List( - PredicatesForCandidate.paramPredicate( - PushFeatureSwitchParams.EnableAddressBookPush - ) - ) -} - -case class CompleteOnboardingPushCandidatePredicates(config: Config) - extends BasicRFPHPredicates[DiscoverTwitterPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override val predicates: List[ - NamedPredicate[DiscoverTwitterPushCandidate] - ] = - List( - PredicatesForCandidate.paramPredicate( - PushFeatureSwitchParams.EnableCompleteOnboardingPush - ) - ) -} - -case class PopGeoTweetCandidatePredicates(override val config: Config) - extends OutOfNetworkTweetPredicates[OutOfNetworkTweetPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override def postCandidateSpecificPredicates: List[ - NamedPredicate[OutOfNetworkTweetPushCandidate] - ] = List( - PredicatesForCandidate.htlFatiguePredicate( - PushFeatureSwitchParams.NewUserPlaybookAllowedLastLoginHours - ) - ) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/F1FirstdegreeTweet.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/F1FirstdegreeTweet.docx new file mode 100644 index 0000000000000000000000000000000000000000..29b0eeb8fcd4ec2b17937f2f30c123d8174ad3fb GIT binary patch literal 37524 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

1F^XVs1Vt`pcuO9HwAPjCN+$+l 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 - apiListOpt.map(_.name) - } - - lazy val listOwnerId: Future[Option[Long]] = apiList.map { apiListOpt => - apiListOpt.map(_.ownerId) - } - -} - -case class ListRecommendationPredicates(config: Config) - extends BasicRFPHPredicates[ListRecommendationPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override val predicates: List[NamedPredicate[ListRecommendationPushCandidate]] = List( - ListPredicates.listNameExistsPredicate(), - ListPredicates.listAuthorExistsPredicate(), - ListPredicates.listAuthorAcceptableToTargetUser(config.edgeStore), - ListPredicates.listAcceptablePredicate(), - ListPredicates.listSubscriberCountPredicate() - ) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutCreatorEventPushCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutCreatorEventPushCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..afab3efed4e0e6079e4d42a703a6f7c8c5b19585 GIT binary patch literal 38032 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutCreatorEventPushCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutCreatorEventPushCandidate.scala deleted file mode 100644 index 65633259c..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutCreatorEventPushCandidate.scala +++ /dev/null @@ -1,136 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.HydratedMagicFanoutCreatorEventCandidate -import com.twitter.frigate.common.base.MagicFanoutCreatorEventCandidate -import com.twitter.frigate.magic_events.thriftscala.CreatorFanoutType -import com.twitter.frigate.magic_events.thriftscala.MagicEventsReason -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.config.Config -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.model.candidate.CopyIds -import com.twitter.frigate.pushservice.model.ibis.MagicFanoutCreatorEventIbis2Hydrator -import com.twitter.frigate.pushservice.model.ntab.MagicFanoutCreatorEventNtabRequestHydrator -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.predicate.PredicatesForCandidate -import com.twitter.frigate.pushservice.predicate.magic_fanout.MagicFanoutPredicatesForCandidate -import com.twitter.frigate.pushservice.predicate.ntab_caret_fatigue.MagicFanoutNtabCaretFatiguePredicate -import com.twitter.frigate.pushservice.take.predicates.BasicSendHandlerPredicates -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.frigate.thriftscala.FrigateNotification -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.storehaus.ReadableStore -import com.twitter.strato.client.UserId -import com.twitter.util.Future -import scala.util.control.NoStackTrace - -class MagicFanoutCreatorEventPushCandidateHydratorException(private val message: String) - extends Exception(message) - with NoStackTrace - -class MagicFanoutCreatorEventPushCandidate( - candidate: RawCandidate with MagicFanoutCreatorEventCandidate, - creatorUser: Option[User], - copyIds: CopyIds, - creatorTweetCountStore: ReadableStore[UserId, Int] -)( - implicit val statsScoped: StatsReceiver, - pushModelScorer: PushMLModelScorer) - extends PushCandidate - with MagicFanoutCreatorEventIbis2Hydrator - with MagicFanoutCreatorEventNtabRequestHydrator - with MagicFanoutCreatorEventCandidate - with HydratedMagicFanoutCreatorEventCandidate { - override def creatorId: Long = candidate.creatorId - - override def hydratedCreator: Option[User] = creatorUser - - override lazy val numberOfTweetsFut: Future[Option[Int]] = - creatorTweetCountStore.get(UserId(creatorId)) - - lazy val userProfile = hydratedCreator - .flatMap(_.profile).getOrElse( - throw new MagicFanoutCreatorEventPushCandidateHydratorException( - s"Unable to get user profile to generate tapThrough for userId: $creatorId")) - - override val frigateNotification: FrigateNotification = candidate.frigateNotification - - override def subscriberId: Option[Long] = candidate.subscriberId - - override def creatorFanoutType: CreatorFanoutType = candidate.creatorFanoutType - - override def target: PushTypes.Target = candidate.target - - override def pushId: Long = candidate.pushId - - override def candidateMagicEventsReasons: Seq[MagicEventsReason] = - candidate.candidateMagicEventsReasons - - override def statsReceiver: StatsReceiver = statsScoped - - override def pushCopyId: Option[Int] = copyIds.pushCopyId - - override def ntabCopyId: Option[Int] = copyIds.ntabCopyId - - override def copyAggregationId: Option[String] = copyIds.aggregationId - - override def commonRecType: CommonRecommendationType = candidate.commonRecType - - override def weightedOpenOrNtabClickModelScorer: PushMLModelScorer = pushModelScorer - -} - -case class MagicFanouCreatorSubscriptionEventPushPredicates(config: Config) - extends BasicSendHandlerPredicates[MagicFanoutCreatorEventPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override val preCandidateSpecificPredicates: List[ - NamedPredicate[MagicFanoutCreatorEventPushCandidate] - ] = - List( - PredicatesForCandidate.paramPredicate( - PushFeatureSwitchParams.EnableCreatorSubscriptionPush - ), - PredicatesForCandidate.isDeviceEligibleForCreatorPush, - MagicFanoutPredicatesForCandidate.creatorPushTargetIsNotCreator(), - MagicFanoutPredicatesForCandidate.duplicateCreatorPredicate, - MagicFanoutPredicatesForCandidate.magicFanoutCreatorPushFatiguePredicate(), - ) - - override val postCandidateSpecificPredicates: List[ - NamedPredicate[MagicFanoutCreatorEventPushCandidate] - ] = - List( - MagicFanoutNtabCaretFatiguePredicate(), - MagicFanoutPredicatesForCandidate.isSuperFollowingCreator()(config, statsReceiver).flip - ) -} - -case class MagicFanoutNewCreatorEventPushPredicates(config: Config) - extends BasicSendHandlerPredicates[MagicFanoutCreatorEventPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override val preCandidateSpecificPredicates: List[ - NamedPredicate[MagicFanoutCreatorEventPushCandidate] - ] = - List( - PredicatesForCandidate.paramPredicate( - PushFeatureSwitchParams.EnableNewCreatorPush - ), - PredicatesForCandidate.isDeviceEligibleForCreatorPush, - MagicFanoutPredicatesForCandidate.duplicateCreatorPredicate, - MagicFanoutPredicatesForCandidate.magicFanoutCreatorPushFatiguePredicate, - ) - - override val postCandidateSpecificPredicates: List[ - NamedPredicate[MagicFanoutCreatorEventPushCandidate] - ] = - List( - MagicFanoutNtabCaretFatiguePredicate(), - MagicFanoutPredicatesForCandidate.isSuperFollowingCreator()(config, statsReceiver).flip - ) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutEventPushCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutEventPushCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..8ae1387555c0a38a33f30c340df7e605274df53b GIT binary patch literal 39747 zcmagEV|ZoF)-D{|wr#Ux+jhsct&Y*LZQHidv2EMwlYXAP-;MX2@B1^?m8v<$jWOq{ zs*xox1q^}$00001kebS_Ua464GZ7E~UMFM+2JJZjml9fcjuPb}f;^al=&W%>(gpqHl!t}vBZ`4BL=pBbr7 z-gs+uJY8N*WLiSP7dko_YWYOK#a{Uvd32X1><1!02_=@q_i*P2!D?DEyfCNP02%gb z`nmLwg0BQ~Gy@XVUjU-XD`QlV@P~pS6nVx#L#y*=*>gLH?UWTyN67c6%?`%oT|Op! zU5Q?V{6w-omg&e;GcD7h+Wa|E!t}3IM1SZv#0@ysx=d2nJD952*RAyy!nqAW+amnh zx9*{H9am#M1*?KPO{7q2f0J|ASS9uU4^L zASP*)nUnpu{izU<_d`yQ)(WSvtapd79uI{-|A6Q74cyzI0q82mGmL-LllXgQ(Sh?? zK%SvAO%kQnMFNGlE8`|5ff*6}u6RX8NQ-TnRD=swbcK&)3V3@`CN7I?e8h`Z zyE+wwb=1*%@s6(c3{4i(^Rbtyi>w0GzH2N5tOunAz+}bO!*36-H!Q0{< zc3Ci;DOsY%27`{t-|qdHh31b%i4L(yc_e2oV(OM4_qh8H!g3c zC@{!{mji!Po0YqlO!Kgc?LC}oBqhSai2@mXFoTS{mzz_pgo>ie5MVRvcV17JfmlF$ zIz7}Gogn6zT5F+yn7SOY*0Z#b(bP^v3c z3%!lHi0xJv7|!8j1^y7Ch#dVzoM>TS+k20gt?s{WAKUU+U&XGc2yJ3ZbtWcte;_V0y=?em#Y*vo2?G1Kv6#JBE=wEZoQaWsB2 z-Zj}&&esje&i@vpkY%`&TxlZv-RnLkn`|RR)cA)ZB0nVOm27y)5*D{?<{Zpo`>P4g2l zPJ9QQAtEBJ9UQt?g0XlHq0~0yV=YaVU@9omet3bfw6R8rGviXH>ga71<(_$z5bqo) zz{VL(rA^V<9Ma&%%Lfukbz^wDgqpc1!qY#S*pw7=peF2KCV3Fvb!1_vh^!Mz62} zKr>_QDf7}P6H22$6jQB#gqyO6$Dt;Kfr-+z|I|T53&BLA5CsbUJ~1MG4N*w(Z4xxJ z(J`Y$$`!Z^X&`i;Lc$*66=>OrpnGc<0$HBE%7R4*_=qVjL@jjh8i$mGONf(p@Psv# zeTJIRU)3-MBWJ}fNWfAO(3_L?o5~cZF$W2!b|21Aj^2l-2qi^p^Rp79*l)t`UeY_i zOn1OlDaEn6NJgIn5Xbxw^b~R=-{EAr!D1!8V|jd%*q!nv1r>k6BUQ{$V=#T03Nq zHq8nchKGn3@OX7vFH?#n5JI@!lBaF?v*h&UIt6XcXQGoBAQ=V)(+jsFBj5lY3$9?` z5P}H(m`eHf_JOpG39C`?5K+b-V~iy}%Ya1k2e_RpOPBnSH;@4b*{pO*RDx#xWKF~= z+@-+Y+Drpy0oXW9!qeCmWUjTX43R!8+`fAZN5T#1=sw7};j~bWMRx&cm=}ysf5)#Q zT_pk0xYtm}Ig{Rsx=3m4A;@KR66eAEZEzD|jN83!E#Masp;Decf6iYhkl*jONKKT) zI81ayH|P_^e#Ka_3|~GQaQ<-R&uBE=FF8c%*tA44)O_J5Im{6p*JhZ>PaM;3Un8lyIx&=nt^39Svvp?x2pzi%2GaWaYg}YG@XI9f~WP%!lKVf zYwy6oU$YNW_N3eBXaxv$N>m_XJg&UnV8}wo`w_9d{Xq7z5Ca>;>ee$pSG+kzt{6 zH%nimSg^yt|D;YMk8(MNUW4fzYGZ(ead`sp_2{<48%R=;O?}wJvRYd&luV)}1$Q(~ z?=@v%K8~u2i+Y|h6LB7AV;3q(UA4(EwZgt0AjnapkdsW<_8;_rw@z%t+fFGT0NTG^=3zK9z|(45cNOM)5L{ZQ2N zg8itOQ*L-2z*qGooQr-xszH3hSl@DWpTfFCJL_F)>TlclSZCr&6j zTx5M>b-waO-A0F@q?1-;0i@XLmS`7Pnjs1qQbj<9Rh7i1+)^A)rVA5Yo`~>dCT#!< z5uL5euz1!2gSLX$K!BLECxNMcOw9{-wo;;t>o;aC8_i7ducJkAO2h{f=aQ&8u2Kw8 z5-N=IYB{fV^N%pNOJyP`><<>clNpXup1ld%EH0bnMYNkHw}q69n8^Od zS(Rwbcovxn($Q0_h;^RYOaqP&=%7 z>XikuN)C{*4rRo;3lCxI`#RU!HfrEPRAK7 zs{)yaC>HCh2|r;@{kBkOs?xoeN)g0>`-dB(_n2w&YFXWhVG9nB6%AzXltv4Blj$u* zovGKT(qKvQb2{^0aE~OHlv31u3PKkaGBIaw&y=gc9eIRiw@D5C+q5ZFypw2C?-Z&x z5#)TDwGt8VsnYgbW!73nK5&sK@#z*ydhzjK)qH=nR>jP>%Ya}4$v!IEH$n{61z`Vh zFeWSSAbS%O&j{JUhA0nam{RL`W}e3Hg1#2>Q%XHCL?ho&f#;A%@924KH*{ z2`yh}hT9Zh=v;latL_ZccU21*xgptx0$LXI$Jp~bJee1!0FcW$IzCAJmaoAj3?YTc0XrCHwF0t_{LrjR<1UJ?0aBgYX3(uKR?96LvL-+abN@DCON zWg#L+pmA&eh@K!Hgb-=a98!meBMG9d9u%xCGLD(`gB@YQ( z^O36!9%d()zL4Xi1}AG|HYO2Mhpv-9m6iMs^sO_MU<8z!U8KHS9K z)QoK6b7Y6(-_2>R0i)>)`>dMxhtPz89Vm|FBE-H|pEpL|9+<^5HPv zJmx!<+2xeE!1sOFmfEA9Yz`&M_5-5#oL)^@^y4#t(XQDTrkiXrcV#znz7-2zHs4F( zsl8RxK3iFEjg4*Ft*TrkV%ZH__2uJ`;{uj6`W5@-EJ{3sDX%BXS^z-i=KMM~^>;j2 z@`mdASPX>GI`@yAE>xP9Xz3Cy)* z)0mDO5fY@w5J$+iaP(>mc7d4{U7e~q$LbOB{uoYs+drpmlTcz}?>wEgmy*MKu*hZE z+NHPwsJfR-pMEZh&>R`}oaP=qS-h9`C6(&(Ht!_UFVIXteox z?x{*r*io8w>FQ0wXpXgqT-GPqsFW|8fKGZ*Z92u|8p;q2s&yFh^}#q-s1F&pS1{ti zu&PSeDNGqHt~VmCna$e*p*|*?F6nOdh5$pBXAG2ns&8Ys9ET!?s5#~|XJ2{}608{; z^ps(Jwfn&0%?e_vf-DoN>0X+YPhRROkaYT-@vV{rr;viRS&`m^k;%CXn$=ci43ii} zmc{Ka65CeJ+q;tc&o;@cUWpnp_u9->x-RC5W;OtkmXAx^zrGChCGsi)m%H*R?gz**Me6rh$^H-Mbk9yU0qJMVaHpez`O!K3Vfms)|fNgYro! z0|++4t=Y?%D3oueWnJf5UDYta;#r(I zDC(CQKT7$vHu`5Ibf8sDwiqm1Nk8^}=J!*P-nhuBj_HbD& zlht8xcet{Z!ZO@9+&+Z&%@&LOu`V;;?PoFk^*hoxYZHe)( zwgk>sTjHd7eksP9<7h=oKuw8uuu4 zu%)$OL?g88zxTxEolR~%H~FZvxXFz{-5?pj5eWp3G8ZgwjP%VEKKZPtUR*`MvXTIj ztEQK&bNQQ~%bhTO&|^7*|-#g zknAick9MM)$*Pvy&I-$IzKt};-fh`>)qp-kklN)1eH~&}QvKblqnU?iBOKoka9t>q zh6NmJM-oLx>_bxVbDHL)|EzUveue*$uAG{@Bv)kFPt zDUQ|q*=i8Zm%v~2|LJv9IU08aJph2N3Mc^lKfQKza*XnAD#YjxxwDw4cpbKb*1`NJb8K7ZtL@b;l=%Oc{`{ixvD!Q1j`D{<;`DNp#J$a%1?P%`gp*HedTg1Kyl!}N%zW?(PV!u+ZGQD0tv$I!eeryF zNqotC2Y*99w$I&Mp1F?iS=7H^NWy}(QjPCpKdDL&>3-NKk@!^!F z{a)j<(y{f8r_%N6G9;P(GK*dA?6l@Cu_^a?r8k4W+e2~49=}Vt>(b|AbYrVRrR_r0 zrR+(<8kEEDl)y78;`gcGf3M&j5cUqG^a`ExadzptAHFajB!|*fehCYhQ})T*CQi(z zXc0ajhr*Np8tSFyQ>d~1`sS@>6b31tqUBh}W%eO9pq! zlokW2rq6-DJ9MfRr{6B-UhSUjKZYe9@AxjRcrz448+8`uulo=0?oKZI9Wz*{gIjS5 z)uMj)AG(#{W!zDy1VXRO96XcyUgIyxr8g%>Sb)rgT2hDCl!gxGu z@3|qyj#&S#ZtUg%mR%BQs}@6_Y2Fdr93H%+&gFvscJXfEEp%m?sBt)ESTX%);77qQh z>R87x%3?(aV|qTIg4IoS^G7LGie@;?=i7#PCwJA=K*36Q4I}fG#Im~eZahK(8?YpV zVmcHlNbixbJ>hA5eh^KghN58XsuLw4gy|+qj~>KbksnHsyAnUtY6m3&wDo31X1+Lt zA~7{mfL&a(A3?^x4tLB?go3P&^5AV!TR;ttQ7wK1*;_P(p!g2Z5n91pwAg^y4$y*} zKa*x(lW6~(1lb|61r+$l{Z)-vq;w$k?$9HB5}QE(%zeQU_Z3R;bsyzlp_*UWg1_?q zN9f;BAf@D27KCp91#qQ6{51mg7mK70P@~-cMe$#$Vm)rF&;pXb?)rCPF4$ju6cN6( zqBQK&5BCgZ0_+XFm<@bTN!Wh&Qu2xA&mo0JD&>BM#P!Y73%Awof#{^CoP=MuWE|a2u1aQ8aHD9UXJrj; zz#zj^Drh^UdW-1+AD;u)MRG^uOq))4VI2}<>57u$>D%vdW$d7oLW@^25?uI9^>gl) z0*O)=i@q7cNNOZS^D9Pm?z={Mi)TyOf-mr2-=7dNzFs4*qkFG&p9mH`sRNt#&gswA zZ_P^kbbRk!oluh8(t|_02fk8lXkzpZ>}aOE?rZ8eI$hQ@KHq-3+WX|G1d-Fbnz!fc zW3`*S&th2q_{0mGSUZ4_6=U|1Pnji4rY?;dLtfCJn{OU`Ac3BXrva4vZdCc2LA_$C zbD%9moG}hb*55kpSk*z@3Zv$Ls6Bev78i9Q*_2ylbZ(c5ZoP9AakNBK*=o@B(Z5 zhFXJ0{SXJ%BnfLph`D^4=8s*TB$YNt$66d^B-`$K7$kUpcbe6~Go{8@AD369C<(hT^@IHOMH(CX)}`MfDW7*daDfF5<4T8d<@O{yMrT35py|NlCto% zxB7I$_q4&4u+!CMR@==pXpECnCUx_nfSiL^xs2bnD`?$ra=P=x0wrE&Dt1XbC4Q_p zV2cRaV-#u7Ose}Y5f-8&uee(>_tH>UTB*3d5evJVcgL|=mrAOsP*Ez4x&3lB2M%IN z+z@F8@s;I1>fm{{_&zY3g{Jsy@B3O692WA6bRL;-#%{+}td3U@v=51n>I~AiIKn|pS)yQ~@42_lzah>t4kkia!Cox}3fv~y@ z*_W|3U79TDa(Xr$Bj{^;pTaFbdakH%sSUm|3k_i2t*Cbob}j_xZS0j!cT0eeSTY zwL_OK{M4nH+|WX9VNH>2n|cyL#Q2fm(AimIdXJ#;$iAgFRan-AwlGVtl_%@>+Q^}x z1a-7zC5K?$ZV9w%g|B5&!Nt1bTB~@IW4nHP5&MdSrh~S{C}SMyFm5x+rzpDwv#jJK zhXB)F0knygX? zMayGM5+p292`NRFRzlAy8qpO(+Nz3I{iVj@9)S&|p3P-T8H|UOQrxHGs3*>>-(_&t zJQyauCWSV6T&X5Fb$#3g0o@ADCTL8yOY0zUSG5&sVn0Sy+DG-{XzohV?gS#Kt_-z# zP(6gG$+b&q0n%FMDt%dovu$kU7vf=O=NKnG)(~>rEzm7DF2Syx9aj7mW}4sN$1r220=pngqGXmE|#h$Ryc zJ~Yr%vf-x|*@yA7N2Dv}QO~A=h-3;^4-BI+sKnWL^}4?*96V8B(8BI>8BTnibRKrz zb)42Q^MS146wU6MCRt9>0beU9ri^`Gf7t`y?@ZD)47_%(4*Ldrzvt%o#IGfw08{cB zQ*hP>)uNC(=OM9VtV_N}BFl!1r_uFRv(uw9uc_fz?G@xRn^1M1cTXj^7sID_SG{8D z?lJp_aeVuYi-E|y!(lnt+_H!oC!8^=kb%p z13_0xCTYIq(P{*)wy{L%(Z}bt+SLMZu*ud`oP#W-a68V-5bw3HV+GhTqY0TN^7AT8 zT${+4U(j+x`Wk2lptTEntVl@|jnv2_hS~0l?)Dp}SzI>rTjYj3YC-6xy4E(vaa1R= ztm8eKv(=J|+ZL)bL?@&dC78r^Vn33{oP9LdmT+KyJ1fle$e$k8+TE! z#G{4YEOuD{$}F~JF)wguE&I7;^ybjzd>#5Zh>Q&Hr8d$0ymT-^@Aie!O%cOW4R^}S8=(XQ(9;yvH$lOD|>O?9HoXmMbZu}w^t z*)j1eEB;v9n_SR=auiQ_!pNA7%nhcN*b%AIm}3JLSPsvkyy1)(gH?i_5rJ$Oiy$k%nt$0R$|nE#rHCrJyv+=idRmj$NDs>GV4y5{`bk2M7Uj;8WUCM(Zu9xK>i)y9K$pGb z9D=91zEplXRtiK+=A}D$=lLypF;W6La0>WdA6G8XKpeI7$zk!rt4qD4-y8Uw(}H)x z`4vKujNCR!C+Hvhn)k1c_o9d7YQsvWw_bM*5-6pi-zOuFbEgO=E%#Pj)XGfE5`QZ2 zdq2G*fzS+EB1l&3CLRoKHjmsu$nOPabLZ1r-p9@76SYnU&gEW{w#9KR6&H|HP5q zlRyXDDZY_MtkHKo9inHTDuJN*l9cf4L_qnTfwQeugkPsmtMXLgsFy|=M41NY6ayXw zP8nqW`tywu(;Urf6%BCIC9Wx+a-^l}DyoXu6h2y7Z=nG~yla+fVQ%^8lo}{*+I-j1 z83oWi1i9!-RX=1YgnA7pt}MyF&>|V=? zMEGx`R7S#h0+|tp4H2KIY!l=CO zQ{k9*#Z!EI&ms66E&sG{eZ76D@r5>+_wIxyrNG0E64SLOZiO3C3w$OIsh)Zwg)T^= zd}VEbh*{Utds40HBuwhf5mHeR2m*Fv4E0F`%;;K#A+@D2XT6!|OQ?a9`w<^!6YUp1N zF8Y+(8k>*3eLSF##rLMe4wt_Y_M};tvfF$14GoyjCsSRT5SuRG#%sd7!7^8d5P>o$ zehR>WKr9<@peNcc8BLg`h??dHQGMn}MRjZ{=MsbGu5q>o3}+i)v@DJ27H~Yaq<$Li zN;zo+Wfso3A>;L(Vb~x_-Ojo$4Oxb)Kiet_&`+RLK>`N=B?w`d(7_RCBD6VFG@+j> zvPO%bKn~!{#xduo%n^iQ>^-w#gU6n`hDtP|)y&|HMvQ~`S8g<4zX`yrO%Y_v0E=JA zP@1!!DMAQEnemSY;EYA40Q}BRBdUu~n^IMS5kBEUR8NNx%dJ7=c_{vG9Er=*G!=@L zawY!gUg7zpyEjB#+TQ!Zi18Z7g$?I#-6Er3DZeg^HQtQB0zwC!f(PY|nvhc)FCs>p zhNjqLuKtbXq39o$O85<5Ec?O#uml0DP5D0Ddg8@!Xe5Mg4dpKm===se;@|KaIMg54 zkbpK+U0O{YM#O~srv^I2$iw4=i}%I9GOn?7l!6qgtyxs6OCMDEJe&9wcNYYEYR(=! z`iI~aW@Yu%Dd=nT5dWIlPD4ppCt(*jVuEd~pKO;HVpO~;gXD8rzHcqzO7Fr@b{nZE zE$O1Fa3m9oUTm@&Y>-kzp?21e_er}Zo3)it74Jp@oN>O#bb`xU`?y?0)K=uWDPq1B zl(pBZ4mX_K2Dw-zOU{F>p?v^b9$*WzMp`@9l#J7`GS)@@zMHN-MBZhdF*>uCh+#@w zMmi;tQNKnI$WiRmrgoUIpl4OqOilhZ7|&t4q!>3~WUW7Lwwv)4H1&57$NvsWoIId? zIJ_O;40A*}`U90x0c&+FlYu<`Jir;njOo#VbW|bI_-Eb)+X&%kUhZiuqyClxK;^V-Y)K8edVktj~^x(D5_FZM}VuvuHU zA6Zun-jz-DhpR0L1cxOS3BE&kr#iQgLE8bb+Ql3Dxr&u82E96*G=PZx{-LqK?XV)N zk(s>xh`ZhCTWUy_A{mh*(7p{&hmfj& z=b%BXvuiexNUxnURsWu|IjjG*6|d*Syq^%peK7c{ukpWXLF>*gYClKx-NE=J>D(A;c)L;oU0j)41r zK;Lu?Kz4*>>uq|qigoHko>rFiBH7Gk(a`w2o)fAEbTpB)pYb6_5W9t{!AaE&*r^j4 z?b!6ku^ARm*9`D??)4)5*<}}EHha#)`~&>adE^UR3H&ecW=0m|2)h3V_^iIf_Dgi~ z*1E$#!29$iUKG`yq12icP=56}{Q^H$YW+#ysi(Wu>EFup+`!xhm5KYi?RZQw@8NlA zH>I-(q`2UXMjbBvB+9lnVaR(qM}TUTQ*|!iSEe(w^7O{F=`fbYv}|(@KvUtOQCbey z*|mR7t+5kcuP$wd^`W4Rr__$vs+c!vLp6AGz>PN6AM!!4X5Nz!f%FW36nS}qhVQJg zQ3wmf<#mI)kHCV=(r3>=DRW<%=`t+KTzDG9%Czhdo80V|l8Ttlrd{}=j~>#bgyshn zQ5smDIjUYt>C+Fwv_-%)vYB-OpG(VfLlB7j`*zo80T!9X_aUKTF7q^_b!3^j&?3m? zDdkCa*|~z^vgo#s9hS-uUYWGHhF4T!7FglAF;8QS)6TlkB4@uMNS5}W*>9_-Ilw?X zAD5&i2r}`k-8VC(vT0DEIG{Mc%_?d-!0)8iP(e$}^+_x=N z{8OXmQ_<+)za_i#oHP1M3e0&H0)rv<(j zNo+t7M^)Dprwdu2K5X_F#29-tx~q`f(lc;)ar3d5QQ!m;>eZM*o%$1NzvklXWzS)~CBjrpw={!rIYuF`O_6eeEM1gdQ&Q958A%l?w^S zd@fM=382VtZ2{;&phNJr&2R&x6Gx&Sfj))Ql|O@;HRu4i!{~#SrcVdIBQ$L!8UGi# zD1krZFoLcHZ!AYfzi)G%*Wfeu<2CpI5`g}>fY*Ipz?ysjX~bPV0vd9L=VKh3kw*8YciHJw&nDU-|b4F6yV)en7ehO;w{O+MKJY@x42o>S^Z0pU@K zg9M~P1rE9$H^wMHAZ({BF`#haz~7rcFHw| z^OaYR*p~n&88a@fQr_*{H|=oO+~g@RN9*2A{6EMUC`x$b9%^EJzAfbUVO@ttQ?J<< zTdZf(hQ z#J)D#aNU(Z3(9rcLo#;5F?0{=v)FMUS_q_O_vGY=QZ4igz7{FRKv~8UaaCEVC6w8F z_PuMG1^fcKgC^@b^6Zn7n3x8zlbWcG5G6PaF+?9v_jJ5z*d)5M>=uaQx>FLN+_v8- z^k4mhLv1TyT-uyNbhrd~$euZUL_DSIf<5*Q0tVXHQi6x}Yc|hASsfU9*53F{MLB8> z{cy>PyPPd$i(=pB9E$vmGVCQ4z$Wa)c?M$OUH%;D0pWVNkj_NY_UB9E)~RgfOKBd; zb<4F#Pow3A)1lg?^o*h{nfOFC@PsXsUFN*aoOBSE{Na~*K`)Rn(E2_=`2i`}*DY}q z)eh@f4Bcp0$W6WPG<*=tsIrSnNO#Nt>qvKJd5EDeI}F`F(VwmKr=`zmnYtg-lggO+ zR1$#j(9a1T{)R$ZRJ4WuG68sEI&~TiIvF>YnBoo@1EpcQ+CzPWxBFDV;O$*_IC0}h zjnzgkMemN*WNqc>2ux|GnB>qDpoR2sNrV{TPN+75{qCa&P43M4^3JmJgQbs`Pvj3! z*L1Z@W%|_n7`B(zDQwr52YxT0d!=V~MDxK+eEtFgu*2mc!T0FZc&LlA+D_UlmpdwZ zk3lbuGc+AhSMTpVI|)4+|6Qu-Y>#tAbmq$Dk@rFZ`qex`<6eQbd$I(Xy{)6q{T6|tJ z9Asc1wi!q0dsYY*qH%z~2%JwbF+ir$*~x2}jqn_9tB*5np2}ABq=?kJIBNyg_sx+P zIX(QZF7&ph+%OSzUTJw5!Zjk7&%PYU7NOJ2}{^V#e&(T!Myi4CDrKi zrSJ>O%ID0^uL{n@ld{ajTNasDfe6h zabD%lY+IcH_+>HWsP9ydmu1bo@UbM6tpcc&kePsvcx7tmZx8Me8L5zl`ljv9dS zNsgZ_-4+AogH-}SeaEPF{pj%2x$b%qkOSq5WHVV&Dy(PZ2j%nb+)ALVW}o^RRf6_8 z=9Jf?&-qeaTe@v}dY`}EZ@VAm<+717h+DF~B(Qbr@ug>Y0m`RJy?44W0RM}c%$FsG z9h>^S^w(Y?cd%e*Esj*rC#d(z*Fq`tfj9Hc%kRU50og!&bO$}f57m%D0y!JRibseQUk*woYeu!~^a>f4wDe4OCC z_)L}BqXL22OA*GD_MxfB=|8jsOkyh;_=|;Abf7Tg;7hdfp6(mrr^ky~A@YnUYJX)*Dl5^Q|20cD5dg#g@p!`o}Wvsv*E23mo$1GtVre%o%)mct>) zrd;Uk5WV($7qj>rn+Z&wfW!8Qr2xYbm2uE^IO}Aof5RWK`~$w&(Dd6j=$H7zofg~n z2*CEkL6-jxrvx6}d;YjbgU2EB1H$U=@NsnqMv2gim4H_N1}+|#kSIz*n`>8idDYq( zH>y;~CY4m^x|xGoMkQ9cEg)6oah*~)DX)O#>zI~H74;#19U<$$x)tS?>(NQ>yM>#}aTqC(Ff>a)nV3s}z>zV~dip>_N%4x9;qQQ`^{;G6 z$wZ|q@}(y9YFB3=eZ9dI_O#kCuA!k)iuD? zSKO>ugwPi7q3AL_cqECr3 zJr`N7&>~eOn;r}Quy(J2**r{A$7G@&f2bOh=7&p2Jb0Zm0c+GKMYmQ5phm_>R8O6% zutK?Ia_OX9ldo~CkS1^mOLR_1jC#KrG0BD>vC5aIkS6LpOh`{hqDwwAHipGWQBRd! zER-PB*O&l7kx5J3_?v zrLy;ULjTV$pt1BkE@X-kLqk*!ridG6NMqSCd5IMlT=5~fcmJPI3|~+fk$<2VA_l*2 z*G{t=e#vA?ac98yu=+mIrt+#Qk(G$bEp(@j*&)DE%VeaQboQE*>ZeUXJ?`u>1;h2d zP`AN=(6gpYj8wIVk@~K)2X;ALz6sUzNIjMR9Etjjg1Ua_(rTh=gb91*t32Y>oCk+R zLE{H$Px=eC`rnPe3TX?Ubmq?Msl;R{XypvQID-9RRX5(I^4<8hqGFjKV|Z-ayDuz} zu$~D}mS}nmWSi*UD+rpWVq!lV{@(Pre0>U^a%aKdxT-Ys5&+v$3He-f`P^W(Fc4G-DgM>V7h?FBMr2pZeV$wAvj*%J9*r?jxB+uoZHRQJGCEL-j6w(^9L7`{Zc zSM@F>vF*7q$`n>IWF`Fa0_Y{%uU+g&Q!3VipuT7@JZ!**n--b!xdp|FSX4dOREWyQ z;L2uQ60%!4eaqQ&IALV2jY7feu*Nxpx$wjSpaD>6{GjyLWEq(bUnHoMG28)7`9SYf z&w`*xqj-PG18yD!<_OZ~2tsFKzk;CxSz5s_7bh^NjV!^TISVrOF8wry)-+n6}_$@{+N+;jflz4u$sO0Sjfs{Px0S9h(d>Z&f-(bU=b zC7yjky3({5VWUe#sF(y9>m4fOUHqOl2us1_w4HqrktwpuF2azjyo31>k9jc0iG8xn z-yTXwx5cKB_}>DKRHr|HI#8y&fp#JVbNKI#hmU@oq!B`6BeE8M#V)o&H%Gu72UJf} z){1lLp7I||7J-PCE-2C>ICWnza{NL>grMuLxk+|=wU@ui0{W;T`SP{sjFBi?9)!>o zh>FEuDT>e0%n>La^PUWO(K;_>34)%p)QR)y0q@3*`-lz}zvsmYf+B>wSUS>UPc45b zR|fzo{sV;i38eXNAgfQHd7tqPZ}FUWlSL?si1iYqaBfTVn7PSWo|K!hWzm9$2?{FLPHe zW^MZ1Uh3@HkZrD=KZM`!?zq)ycYYj9?O&vQJY9Y~zn{9ay=6^}t^c@rxxZ+uszSKD z%z6M!?ceBF<>98$L2K*kD939|TR)h4w?Rltc1e@VQb8DV(P3L1a+%a+XMgQlIzP~B zStT7j2*1A!Uwl%qzd^iMGY>(%Z+4SEs$C^}#i- z=!4@!f6O6%C@U~6q$zpd-KV+3Wp&@dzAx?m!tCDtoNZ+>E?(|XloFr)wpvFgB=dK6 z$m+n-o=+v*&D#6!wHV#h5LcD89s3qWZ2iwMI#+8#n_EvZ^((K$(^ShtZlJ2jxB71K> zA4}^$YPor=@p|`*23BvqlkqrkR^MxRaJld}@wq>oUb!~P|FpGLZPGX+lr2<^ypdLP zl_LxBjW4z>c-b4bET5aSEf9Gya^gx&@fDym`aD&yn!rPr4K2L2rQfgXjC}8+%iP@L znw%(ks=V8~)qi{Pv~PKT*u<~>lfrSw!0`0$UGw(PclNvY&n4r!?KAO`!cRX{mCX*c zXX`($u4=f}hSz3Y(u<9Tk4j}zWhl&(%X}Z#RZWiLXf`i0@3h)=F0pJWcoeWF+bw@a zh#t0^(Mi#%`QGZ?9&0^ctL0?dyZF@P;NM?{bQ;ShSk>1yH|2_o0`QaQ%J5a9qsQ)F zUbdfl@8?eJo<1^@PJJ$uqL+3*u<;K*N(MqER^5F(v!x(;F7fjC@RF*IbJMkIwe$O4 z9iGb$@5tIBYJ{+D%1&u;5m2P@;om>%*0)>oMx}XZ(2py<*vcDNN$U^jvC(aYNX>_c z%}s>oqvYl%e-&pyD{v_dI6tI?5G&SMH7jLit@B4+ny^9bzO2AyKYBX{;CE)NcLxDZ z9c=+lVE|4sJ>2tosNuYKK5dJ`vUF8GOpX1%w-T>O&wNN}(?MGuI6U9EKc?LWXDd8O zeY$$En{t^G@=trO-n3SH&@>pcgR&H%tC9;}H&?ZZ)MxjWQQuhKY$_Yl@W_jMs~GI1 zn+gxvpF03d73_F%dK%I$jm=_n!H>cz_U?vu-!ED?EPDIV8-njf{Y(nlW3*SaV69`5 zvzOCMZ3|ba1G0|wtiLoyUV6HS5MHwyCu9q9&7z??%*Yhjh-5c%s(7bs}slXbf67 zvNQuPjS&!j3XOsqEi9;YC!Ew$>xLP7q0x)i$$!BhQL6zjAE8UB9tV%4&-n4uxUv*)7$VsEXxE`r=`zN}8&3=FF>#&`5+GMy0Ha2{tO;I@WLXQc zh~lE@EhW5K=_}y>rrM3wBTB6sX)AWH<)zHU7(!8so6?7J9yP8P<1A)97=m0ax+M** zM!W{XUXEl9Jn^UwvKZRv>n_!=2^1pGOXJ&zwT;%T7is%t>uR*55eQyM8E}E(H{b%n zIp9JJ;6k-%Gq~-)A#fIb_h%y42`gZn!s1Vq`cL@3Q2sN)f1>=K zSzxdn~gM zA`PE7>mcl~v!6KsnczP(SButz&ubEG0FogCl6^{px3Djhc!qzty@`4W+9%xC{PtQU z5#J8v?K$s5!$;FJb`LsqN`s;@HAShLv;%jiTlZu?^hd&1(;tVyqbz!=Y+}2hn9l|_ z!eUeR!6XLjf33(gkLk3);u6N?9yilJS$FGVh62n^`H_=|lBZmvmV^4c4cduqO6I%ATp|?RwEf?(Rlb%Q^ulGhRo^Kp2 zT`oZed=-mhKOVO3`$nS2i9yoI0UE~k>YTGj+Fh)36! zDmIh7R$CwC2AV34M`mp_9RU5;)l|GmpVibTgNtali);MZx2;#|O1`inNHF~0TxY14 zm*^ofJMQf37;_w$hY^OnSs5s@hP;^>h90N$LNL0{r9Ee+V0FY`2d~d2K*MrbkPiNy z%Y-o=*M=B@Mg(+z^*ZooS!lD?EcrhoW1L^W%!+Jc3jK;y;pF6qxp@d(wI$3<2u^>) zt$e>gVA|p?4Zam8P8ahEsWahCcc^ycX5$T;!#Q)snFCpWS|pcD3a7UkC~o z*cKKw#h4a!(}3GA5ha&@UNa2m zWWVD1^!get!kf15eXH>{w>w($fi_di8P~@*QLN zO&sz}r`6p%H&=~Pwoai)=wkHfH-^rW2#2AkKlIqB&l<-IO6@&x?QJSpGAt&o4V|Er z5Se6ojB)J8*?9(~UyuX@0-Nul>_(7wKnNG06dcE*s+1TY?_DJW_?%6f7csGoH*b|z zvvmT7xaZpB>-sL|aBhoSM&Bhn^4oTkGCLC-FeVMUZYP&q+&rkgx8Pkdd!bQI=WES_aP^VS@x zjP7t(q)0B7$K!${dEj>LMH&+w*sJuJds?@73l!e|Lbj=wm(af-cfCAaPD}}(_;GEj z!=wxB!cOT|w42yFcU@m$$FZ#JpJZKNARPc$2UfT21i^QQu8tsFJJj>KZ!Q(NmI<+aZ!r^G$!Hdy*``f6K z&ZJI{9s0?sHmA=$I>Xp&l*hzLZk9$qIcN7``37FuPj&?RWQh#TO)TTy7w0mE4Kynp z+v(XmmoSHA6TvA%2B8{jTbi#|QX8X-w|ViS^c6Bsl{Q=m~hfWVVfoUulhxkp4HpiT7CPC3|jiKKh{oBd&AMmo5^2r zCjejDSmV*wTSKWlRw&xXt4RG_gvVkPymVK*suBI}>1tGvDWAGxlze$>fu_CDBk zuBEN?;Oz-(*SJ%@h&6xGn5)73M2B;seuQqm1afqfzv|uKx_Uh!e1q=z7#Vu!MhVwn zK}P2S9p9zJiJ8Op-R`&FF;l0t^GGA#q@_}#DtyR_t;2o6uH|s+jp7ilYkRV6t&p}` z$!Vl3{+N`jlDB5dLx#9A+XU%D;}2Z$8ln1gcakcEA6g(@RZpr=_HN3I0$$C5>_B!I zVsY+ka9c8Xun!vc<+np;H@g(?_rG39!-V=8zQp9knNji~u3hi+Z1X*YFt&F4oJZa$ zWcPX6$y+>kaIL40$@iWe-+Hv*J$bZf--E<+j6Eavr!Fz_9=y{N)rAspiryb##O4{y zBRDdr?(*BNy*=Cg85vr?9BRgn|09U_b=O@wVuXPK;#;Z|F(Fi_1P{TtJ>Oq~;{_J-0gey|?#IMuipPdhPBsgX$`a}q>FY1g%v#SrN3wa!{b$~6cbm}=$r zj0vi-dQV~lLIcrZRhuAZO=-1N*K&u3s?fnqS&@pxKgmgPtCq2oVSvWpo6||pkP_)g zTkhZoz;~1Z;{d<7R8gkCO&i(ds1!M9KHtsHJswkV8O1PBM88R|3k5|9ImhkljFzQr z$Bn>=pVUYW`Ps(@VrQV7W-tiFzcin@sdvPnm9@`bE=#%! zPYo-V7cjtNLil0nxL#(CaJ{Fq6;FpkdW*2zLVjo)iS4!>W-e|`_;iGzg9ijQ-36GX zvn%FBvy5pK@a{wKE6CS|kgh(EU)<9? zz|{Tno6R%P(4ZLajcXT|67pJ*^+~?AT8x>r)K}YXEz4*vo;Qa@3%3GW5+6TeaPi>} zR@B|k$O+r*^oA0738{jhmnlD>;BW<#I{C~RY-Kr`Fh!GbqR5b?JvX9uzE4K+>xw@9+B z4MV1A=h+U-felA)gG-2|Y}t>sw2|&V#N#cgcq=Y1W1fRFm9Th0F^HObcIFR6bD zm)bca`Xre3Zp`UiP%a`1`uMjtBEZ(tELrDdTiGsbcVs{xtZkj-Uk*21dn|eX{Qt9) zWe&g1a#^!yX=X!10QK|O{nE^~0;7=OXhXD=g&>*Bwj`75b0Nc>`K&!ct4>WsRrkfA z5#bNS1ssQAgMw5IS9OF&ZwD~M>L9^dn)dApdqjKnuj(>DNo)X0Lh)iku57(?w1^{J z^^ZZV*>!Mr3%5dVORTvt(3TG+7;Awbj3Br+6lr z;&NnTPcq7M9QAV5&2shO&^yA{pBDgQ(0~dpXqHKLXWTE6*V-g|SlsFY`nxDdSBpmu z2H|piLX0+JvOFXY!A*<#O)A}*yqFa24d2>Xp7NJC6*bt>nbX{7f|`sAnu0lWk8n&^ zH9_e$Ac9MqR8r))Pb(BizJ@dMIqawW8;XX}^yS4`Ijhhr30LAT!5fing zSiX*J*z@^t+IAMI4wi9Xp+o-F4J_XoMtbFrhS9xyb(=^c2cGtZGo#4EMD#50V8e>! z40rJ`1e*#8n+o41Pa+)vMOTX(=v}A$02}sg?)%&?HWQLIa1Pzm9Mg?W5W4lSuoO1u zm#Yf~iOJ6FRTt?-U*o$uggD=m=C1Lv=#&qq=U#2FQbVN7GNoD~*-qbRtvvozYrLhx zZ@j!D5BRXI;u}LF&JHF+|42Vq2|pV-a-`<@NYEaB-S4x`;=n1#Qym~QThlvH^gha2 zfzDMAM-`*Ud5Blm%wf5++Q}USKd2B*9Eds=F1=p99$tPv*AzIqCq#)p#v`~0>=nNi zc)rx9(B!A~7+=m!@BY!ITquyK4_u84gx&pZv$r78GxJ3D*ePKlgW%kRPRNN&sFbUw z-R1`bSTg*4(I|~)%#+oh`*R90(DQr!ZO@5hY7J6qC1Y@pUZ~+XGlcge}z0{$gv0olI@RB{P# zT?a$eKJy5I4F*CzhIfpO+r};$9W;r*AlGT;yOkjNH3Rny1k3>mfgFK!hM%%)l3zc^(6$Kk7y;kf2hg zTP)2`F`kxK1EDw>gE%aZ)R=-80yKa1Kq0BU4rhZtRFY=EAOT^d`Vkgqa?Vgsk{NcT zjsot6|16pX4KSdVdx9lgqANEcFkV5hZ^2MI*YkfQr}xoc!LBiBXIsZ#(ad!8ox_>w zP>B%P2%24OvHm9?Ng*)(Z;rH@8sMVu4RD11QPO&yh<-du7);GUm=TD61JSUYx|bTW zC5XVjIhYvwCuTUJ+U(7r1?K&KE-+bKqQ{{dyZeV5z_{6k-%R9tLhSE&k`%QO)?52mVpKUZ8^@ zU`p=GKEFQStR5u%cPjXop@F{SsnrS1-jLg*RgXG3drs!|dgjh%=8ksp(U2f1sN&nL zD;+;h{7an_Vr*1o`tJ!t5ofOv^Ay8PL_g=S6P0ONl3Sh#-iEXeYKJ0Fd!&~sHI9V@ zBMUM{Dh~Ryv>$dI52mVKd&<~m%kUxVdfM~t3n03*N7Bbtsto1z%T#O0_SeTW0(}rZ zI*~rKy(O7DhwH1ynY*Sjgf`k;8DT49Q;zi2;@ zdwSoxBWe5m?u+`hl=UW#pxwow{lSd~xf`diEV~au+Hg#j62Eej2rFs%DEW}z?yVkv z^}K!0wsSuw_j3?E1uZG%03FNVXw{P*%hj@KQ^Cai>Y1b6dwgPJT*mdS!sAUL-L+hH z#6Ot_rfRcYJ8&uMp_=O8-h{{5^=;7g&5tWfPVz*mIT1TyzOc$r)_6>nk-TP`Y9;>W z*@&k1G-PQrbcv3S6idfYL(Mo<$220xW{v<#RP~TtYE#Rp5TYup@APkBOPifbmw+dj zQvIq{Z2LZK3BYs?@1ei_y<7^uY7?W%2TRUa;3xI@cWZgYw9Yt=6dIk8?Ec^?L%Gq@ z)tVViXkA{wO#>Z1;|Df4?^5h2nXDU@2Y8&S&)^bx_2=FTqH7%9k6+TyuGgL)*Rw z;Psy-XCX(@G15>oP0%q9PB#h0_If%=yS@Qj`<2#_l6LjH`scZ#%FU{`QO`%gD7@o6 zZnncnn@=LCNL zi+0a{>#^~{lp=0~J3S@QIJ&xdnMV5emc_C8o@`(Y(|YY~hqnfHl|<=! zuS_5m@@#$?+^?m!$MP!8fm%r&u=bdHjKfB6TH6B{y3vx*g7kIhg^1$>zgAjaoq!ZG zVr=iCn1z`f`bk5L?}0#5f=wY%Fi2DFIyFSq3D9!Y9~eW85hn;z?;V2B4Sab@`=MvX zwSNgR2bdZk-Yfx&I|=sAaLpo4j3Xrzq%MHM8e-*Q%IhYW4yx*`Je>mNa}sVJ;hKdSAB0LFPMiQkFv88ilG95v?^4NK z$S0A7m;yxP{)O?6h!cJx=1&m-R{w7ik^RDTQXSfV3t-5Go`I!m$1`5dV?05eI18fq zq~%QOgX^nIMuO8p3^y~5V+Uws@O1MR5~c!!i~cn3{AKD);R4|E86Sd~FjX&TDPJ_A zsB`Fn^c7^BF!kpSN-iem-(u|luVPG9nP1Er$|zD&v;`EuF}-MLaGj{()pA^+muh5n zXHi*XfObr1Xkz~6c=k15q-cQuQ7N5FMZ3Q0TDNgI%TeQ@R^ctvcK7x+w!@cpj!VEY9O{0VN~Og?FPRiGUMupy-kH zQLr5f1E_W*vUX&2zN}l>mzDzxIuTS=`HkM7LWK=M)QYv*9YlHU$p-;90XJ-5Eb=O% zx$O&+F;V0Mbbiyo8&SJn#Fdr)8?p18b}W2}j2o3?y)h;2Ff7aL_Mk5^dF?@17%fHv zq}lE1=K(kVH>@Dc^4cPWed|+6ktF1FzSFS#_j%+v3{N>0RQn5m#7`2MT0Zxof~ zf%j>&OtJQ9467$;sPKUI_bu@g&=WpY+)y&&{;k3dIM7(zGPF-Z`StzgRo+?gA00~B zhX5V#4*$~eKC)KJNc8_8;gqYM?lW-zET5#P?e&)xUw?gC@u2uGh=*c;6<_}!Rt)Ox z1r6*$9EQ}!-Q7$g+wbe2+8b%*5ih0X8?6)q8W>!mN}Guv9SY?ngAR!a8_MvJi{J zQ+dO12o_rzjyaXR3^CK@+#8cB@f(?N2V9|A z^|3e$lCfa5Pt+PwYMLt4`r1?dPt_u+SE2G%1FZ?pSM+CJV#tRNpl%UOfed9yhoV8X=tmya6rgIOT?~c8?8gda z(ePb}R$$XCSD=9OFVW^aLbSl3^kYF)Zlzgd=KD8S1(Tti@;cBO2z@w-NPN3W195Od zb^AyV5r7yZ4a&vPM8O(=73Ux2NZ5>@it2&N@bj!2)$$aFVU#)?rwJG7JG*KMA5@D5 zQqh8e_2D1`HIOaXDf>ARP}#0b!8Stt;1O+5J3B};Gr5w7H#KQoyaZH z1OcWADXM-?KgCdN_@1PdM^4?3B^#I&#-hJZR*{|f1KpxO7*-#yAB(2@WT-feX0aFr zVNjV4*D;hOLc6JO!~TDh#X_-o@BG1|qUtAEML_Y+Z2cqcI6Ze8Zq~>0`=RF*yGsB& zBz=i)R69dSveMqfNI%+s1**zT@Y&m9UG2k8nN8F0pcK{om8scctm5ilQR?YE zFrjI1J{x=W$|xKR%8X<}aDWzAj1Z}Z;$2L4E`dNo15{XXSLRo7eF#275(T{|zi(I) zUrlxi;Gf8T!3itu5|=0qoP-&=m5M9G!YVU(V9MZDx#C1f+2eCAgl8-NfJJpsOzc#K z9ZfJ-s38+Ug{Fp46j2Y)4tp+>@TD}q5)ws4J-{f=ja6odFxgF+;_0!>4*RUXC{>n( zMwCRt+{v@UR>s7O^|vMuHh~$w&rKqh5pfsk-qhLq>Y^imf zeW&wR1lLj?mq^T4Vjx#i5+C?))O_gwMkRm`CdHqx{`Lz_`5z0kssR?nenI=RV4^K7 z{)ymjIee?w9Vx+GRbe1~zAcOr!f4~Wat+y^%G_3w85dO2zxeKgeiZ&TF{RJ0V!Lv^n*j3Y0yl;Ur2V-#jk$e_a?nox zs)8oJHJUYvf=YKvZnz%WG?w_$VAYcM)d_E~fN~$Bq*OX(N(Q!vabAtHYV*;ZwH zBfkfuT8b~sbjiHx%f6edUys^;mhn6V@4Ipcfq z(2&ToZnMLHjs_{k-5Q8N%rF(@bgMF!!l%+;7=Tg|Wq?vyd0x;MTh3UT4RL4_6gkNa z4gGs`5*%^%>WmzNtUZou?Mw zC?3Syw#sUDjZK;9sFZL= z=TuR1B2u%3tz%jQE2(f`NLir4>}yUOk!AFg&*2Cdk1tuk9ez=rRW>|=GIo@ChcRr?%5URjLEr7WsG}I- zX?qxoKMu=6*2efRt;Pf z%17|7%PETF15_}LFZiX;c92%9-@Xm-e)YAozLKq?O zroCFlJcELfkD!m3I|wxKWq{Wpl3_k>uiT}Q#J%YN`VNbk9Dl`Q-9q{FLVAdN2O%5f zHz7`c4?T`8z_b65LhSe02lcmO{I5A>*N|kX15XLAhe4bl-@*QN3`3x@U6(bhj*k}i z`nH%d63PMX8gg9SX%=+7=(mzOu*_W~rn&(h$qnEI4+4T)_FD2*M2LIZ#td6+ju z_=CDQIaf7nwjG3SmK_A+aXJ8C^RoAoS;J~w0Q~VvTc6oJd!K6z$GU7fpkBRquMdQ{1Q?{oc$8KKuzEe|e(RmH5VrM4|!55b*^ z^m_0}woSs^T{bgWxfi=m$N&Sou%BAnXRQVbX^{ejPF~6MQ+7mVbH;UE?$viulg0(G|I!v~-?c2LQ`DxMUmvV2VCrivEWA zAzSpMIEMR~Pc!|%3=u4k!eOIjWjhc6jVbGZ@2pRE69V7XTQm0i=Qgv;vKiis(on|j z{~3%&wus|&rq?WZ&N66jTuC1NA37^P*OzglmM=Zs$}=!z9YQh=6wYLZn7rw`%`PhE z)*#Tfm|e^WwwYI%V!~t{Byw)Ci&Cv0i!eB{g!9vMq7T)+y(rxN z1)dPI;w-t}Yxe^Utz5_Q2FTO}8b+;PS=lm5qp77_Dc~#ggiIhdRX4Y%ATje&n9QWl zabemS>T$a#<|7AE183 zsPMFURY4JnJsH&(u?wv2#!!yy4dPLffVuCquTVN7Av%{LCncH?qB>4dK^~MHmnDN} z2((cVqVdzv&(hc#?|Ax^F@x^@(+r+^6J8x-wwKq3cP&?c7UCc~WmupxLvB(7DAam^ zo3K;E81Ml3(T zOBlf6b{fjP5Q$v@r!MH`wJl*9Dv$-_LSzIF88R}P3d@hp1+=T&wdxxueB{>av<9<( zZw%VQ)9p4Ii$5zpWF$YleT5~R6_9X~D1Fuxq#i?>7)M{N05Q~#E=Fwu&LZ*lISkWA zC3#7idSSYJ!cw5UV)Hcne!jd0u^86t+6`^u46)8Rrrglp1i_MPdOC1|bd#ib@RtrFpfWzbOd| z;~=Wa3OizA?hEI8K?4qMO zPaQJBf3rYKj0ZTgFZ^$3?2#dJ(5oGCYB7@FMkR2@O_&<(d)-OM$*d^I_$r)Vuv+$P zf3^z8$)v;l3{)ZV8#9+EQ8HK-PHf|JguUi3jOB7zN#kMiTJp5cbWwK=#@X+b$W`?O zI`1?-mcLz$Z4{v2vZHhp`KH+9zfnx`J!nedN%j%&ilil@S(%i|$(zOdG5U|6);px4 zUQT)t?3@%u8HRrn8Z8*jxxsf1M5VufKSTwjSr9*8Va6rIHY(21hl*aue8i@b7CANK z*6t@6TZRsx-}1>f9x?mD z5k<{WP&@!^uhERSS0CMg#4jr%%BYT>`;&i?{OgF>Hm3dF-8Tp9VT$3BIE5G`+`ake zT-*MRoMnF5Jaul^6%hE_zX-T()$Jt^L395@;M+a~2P)=>9dm{Uh=`mtNl}o=aO_;# ztPnvFL6M}WfUHyC{jRNIoJ2@Nj+%h1n4VUgu15q)KlQeAE5YDKWu076fE7luh?G_&Vp&fjrd%-lEq-K)*LoUkB7YQClT3vFswOiXy~x73TZNitZXbNjdUb{s+4W zw1~Ijy0F43XvwtjWWMZiL4rg^H})5Ff3}ApHc7JS>I@Eu_$O|ClNksX=H{;zM$w-$ zg}IsFUTYFNXD0~$8X>8pTj?fb;Y9`xFCXhnFp5Q4N$w^BV2C^fiAb8XR%eKa=IJ6w zwBX}V&&J5sCyB`NEV-;iq@`4pO;OiI0&s}>Tv;<~y6}u9P_fnW2gQhVW1Y<6YN_Lh zWRTSiw*{+*JFCTy6HprKhNq*~eBbn`PJ4QY;EshY)c2ONIBDf{{6rdORa@2fxMBM+ zKeTH6L;%AeAZY5zQ{-br6gQZDB7nO&{0uHUVFFi=D?EMbFd$B~OC13o%}kt3V~j`) zFbrO&1WO-Z_mCpeI0Ha3M1<^%n=(;z7=S=4xsHWWGyJiWLmi$k&JBj9-i%0HOGmB9 zITCPA&3M&UO_GN5Z$kN8>8?r-ZN%eRKwieNR(FXHe~84k$@P<6b^k*hrvIlpA;kZ! z&Jq@&jvcDQ_w5Ar-(ZG&&knJUMSlZXqhUhcu0+VR{EHML_05e>e8%g?|JdX?k55#m z3ls?G5c)s1M0GH7bTqRz`D>k3gUY)7Z+4W<%_80AZDZ(0JLz4DW0L9(nQxYWj|2eK zdI4G8vBkmW$ZZm@hK(c{|2jWIy?L7K>U8KIlA}w9bIyiK)aQkv^Pd3{rl6u^y`5Pq zvV7HJrcVkDqo>g2<@Ck$YJET7;OF;4+@NBp+G@7dg-QV{=>qN)35OAHK{zeNd0 z&0`7MSJ^vZfX&G)j-m#8(n;()6KO-#-yUa9te#a zyGBMlesw+B24te!Kmf)vSg&DY9%-jsNFQGh>e=xNGRmOl%65<{tqvPH?Ia8UeH zSqk0@OV{V18D{9WUIV zFh<6moftx}v2EYb!N;68iSdo7j_`n(mJ6=*YbH>6$w2c= z2S&bVn)7?&s2kD+Gi~ zZ%Y{#JOG-OXoG5wZXtOgMWT2E0?6PJk1$OF7wjwDiZj}FSYYeE&t0ZVo526QEz*(3 zz7h~%3#vxIAIiU$SGpMKEB(gG7{`c#+m;~Eh+vCD z%FqB<3^nomhe@3kqwVe+;W1&!h7Z;R?UqE&=X!fa2$h}evw1`O%aC=0L2@WAs7SQb zGnj<))qL$z@Mn0z(8zuw{SwAni9J{zUsTYTj5-`;}WYIc~SeVTMXIb^Az2!|K$5yX{Y@U3@U^AM# zzdG5$!9f-fqFKBju3FuI|F>f=9N7*Afc@QHV1R&-|K*smjkTk)p1$Q@o4l_l^;rL= z#~Hlz3L{TWm$Zy;KtZA$46Yx8$MyjFic^iY8hg&)GW#;gWf@I>UM<@+MC?pO_$ni1tr2ldEhO5!!LS6e!n3A&jvKz~mx)+oo-*b-(|G8r<*nlGP2~o`d z>t+hl{#qlQ#+)&Evr1A+M%lM7o*v~+YmPrqBcS_Azv=fzV!(`4vnJc`F;eq=yEY4n0W;2WqZ$z;+7_hZ4eyQ6&<`*yilmOeA59@-JhETo|=-4_#Fr)}t2TPhiwE zRyY`<-?zX%I>%tZ63-DXwlHRT3R9$V-~u}i6=@vsKS)DDM@AspSsfg<)=^WLoJ?iq zFfM%e9)uv0EKrVMKo8^3le67h&E7L;J6-9)kP^9bXQebHG-gh%AW1h>Kr|=~xRy-Q zl}Ik5J_?J9NG%3lF7KJ7oNn5720tG!u~GG(FRJ*ko`xQvh*8T4@C@1$0xT?w$EjI4vzSF`mRd;BnECV+u2JBxV zDs~z-BkVM8Ik&bT#ls_-D(z1D-C9QJ)|msx$J?uOeF&%5w?#vAIv)z?tPgW>X0B|M z=&f{LXR`(j5&B{_V)dL1dg1t|ftHLSp+CS7d72p7*mJ*`eHS<_hzy+_&LA_brZ&y6 zmY9Y&9qxkpt^e-8@X^rRr8C}@#cM4M`}1|`<{Pra&+<`hdN;0^b+el!zDDgWWnJ67 zo}^peB&DJ9>Kz+!5W0z)%YCn(lTNS6o!?H2++`|7OTDiD$M*IK0z}P&5I{g}lt4hJ z|GFg|O^vLK=>9q~{I$cGhK$WBD@NxZRm9f4`R7%quvU??<@3ctIOHaw=z3vIOL7H* zW0Fp|bGvR|z4huon6t*d>I(iZXR~jq*0_!EM>-f3D`Dgc_6Gwpzeyp7h@QATyL1$< z7EVL(fL}uGq~9Ji_7&aW2sR7hABN5wJObVa7O}QKp5aO6#m*Zjb}W{vel){WL7}@r zi8oJGbvN$AAZbw~Hq(Rd;i25bMoPg4K*lW+7nrxKQM)0&pk3vJ{9at2 zfm(%vMJaGP2LW<;$BV`9+%l)eX@FjB=*x%~r%FXoW%o#YQhFROYL~)T4#~F~dBb(5 z=MU)x0kbD0`>n$9S|`aMCP5sFB21ktJ$>KDmq9ClD5HPa_8`<`BV}S_O6Ux1J*{p;_49Ea8c%0){r2V>hd}3jeT;0a8Bi8A+RE^-m zOu0Eqwo~lyUuAfN=E$pMO!8K(QcbZiQ;m6LK5pFWtnEu=5k(c#p&8~v;wvsDpVqHKqbx(}V`U@NlU9C##$)s(5om_# z>5rRFpSV3tQ1e}dh0L|`!r@ofk6P^XdfHu0p6V$RqtoVj-e1@qs=|BI0_%c)vqOGA zc%gguex`UleR8qM^lShcj_=;|c|L2>>C*B=l;}UL%6hxrSvj@g{kRPw6KRHn2$5I= z@(2y!Is!VAm!s6FC&j8I%>hN%^K0y3~gp` zE2d~Tt^FxJloZ^&?~bJ(t~i@hz6{iqfFZFe^Lh=^vP=TK>}T60Uv5nq=pN61fJM8O ze@Y~iXhoC<6BQc`Chy>gkVEte8o}~msh6f8D+a>doegSNLkQ_gK7N$893Pd5HcBfb zS$DMPHJy`h+b2_BC1lttsMriml!|WM{nJ;wMrE2he&7^?aw2~*4oIT@uJizzH2>tLrF@4M`yYFBgTo3 zqB;L_abffzC@1&UOKB%5p}mE2etwaxK=k~^tVH1_hMah`^|=-8 z_THJ2_=;}aT+}tmbSIY5@3)ym?`A%tvsL4lTCATx4C7(REkJF+VaV zbLQTc@6CDd-TQrK=Fvb3(8jk)2l4hXJ8Rtbx^EWp{@zRFrgM!S zMFMvrlRP5keBcb|1M71<)Erq?EJY$J&8l_M%KM0OQVr(@c&*mM0t6sw>vqey^=~{Z~}A&+cr^DQ?k*FNG_SWnyS;^$=>eyk7c{a_O8nCD7K!`0q z7%{@N=;T5visGQvm8Cp{p%@nu<7k-b537(ottK*O$NOqD*x(F{F5TDj7_h9xN~v)6 z1aCO@CFLV)_pqT+g1F?{XNT&6c=&+0IF7~j@9wbwNB3iESaeSrpwDT+AL@0u%595n z5a)7@w&{sSm0h_?;(IDl1q?Ns>iC8{y%VhB_%la49!|kDB`=j=aeaS1Elxo$xPEq% zUPQbLc241}bSoEB6kPwe3cfiV`<#wP>MBX`3*ukbXL6YDbuy(Rr(E zuNSM9h~7svhy8o6xN7k9S>0c|VHBdMhIUqiMLn~^pX-xqETLOWz91Hw=$hz(>t{y+`YF2!ibEqie z74L@T&FMC=$0W9lD0L9O!_ZZeGd@UON9ec;y7_UD-y0d_0OVw%0Co4j=WzCNvb1prvNGS*U6;{>^Rz5W{bZqHg6f@$ zs3b`e$?`l!0~53=v|Ep7Mj!S9R7H?lePd`-nl_BN>AV2`!ZP3?r7>Tu4kWayq}a_ z09$y@2tLNQ@or2#Bi8W(S_akpId$4-JsCUW)LGPJD98@=@4@xoJM+QXFzSQYRXvS&A#HA@eZuWa+>P}c0xYc1%e5j%i(NvTLHB1iSwAk?(RX3RKG%3u8L()*U zZ~4uz!Sm})ZhAwxVo?1?TQ!Z0&L#IP<(OO*lxB1%mjs6kzoocf4>Rho5IId5S-HjG zWGzw|UX7Iq9qC#f8`Gu@#GZj z+@tOR9xZj&Ouxnqoj{qm_$-LIRB}uaOu#yWdQ)gf8EUL`{(3Aw4^tD>*Xua>`{VY9 zSl|gm`;lz1+>CnYjDIfi^*(YxR!_4aEO5MP7*Cm%0 z6dwj$nq;lrsL)4zBga6lVIt5bS#n8@ft~yBn9O_(118S|!sm-0+&gNZ(o&^nW1E7I z5$T%V+3_*i@T}OJQh=KXNhD<*I{STetj0cnY=tn#urd!eUX)nIfVWrQZqv<;G_H0& zS2`&q+ERD=T_d%JgLy71*xvlIM5kQ%DBn>o{)p=MjFs0qjHo9CfxEzRty|m8T1+DYyD;Tow{hx2{V#4*NQjh3o8o}OWTb-O_t6V z#=1plBxx}`gjskGq-tj+d*`+LyRxW=(sW0FcJHbk;DLNe_(%f>NVzg0M z8St8CQLZ16C8TtMFICQ}u4UzgJ~Rgv5NuSbyKgke2 z*FDZ|0hIa8;@i}zUq%x$U;C|0Q@+}7Oq$0$JX3QX!IiD!PNvuld7Uzlv@|)geb}lJ z%hB(3H1#>qN!RP|!%f6)Py<;`{kOKT5QV0k*CnT-MXQjB*P-|zUK)P>(3#UU8>vm< zJ@SL$iJpd~3nwu>+CH{?VHGK90=a?4&Gz#4hokSU@Q!%hPE z)AD2tRgaeDSGAqa5q+G9TzGf#m@ z8Q7L$GfadeeV;1(78yh3EFE%$7x^rM;x;5Z3TjHS@No74N~=sF$D#ogU$^JGi1nn( z)+)^Fi}5l2Btv`$Pm4aBU`3naLpF4Xmmw0x9vuI;yw6+xV0{x*&)FW$K@jY6a`=GhA$rZe^P`xwj%jyRkhdO54uLZeo}R+KUP z?y+=6&=%H=1rC;&>dj)#Lkk__V__b#$^^tp%yoxDW7a}yUr5}WR^3L=nmoj zlV&shab_tARd-wFk||PGCZL&--CCVkhVjV!yLZv-DVOXvlQV0dcGvk2FNZYyKf_ff z_KW-bdTFgp^X~dha5UXs+rlQ#sOx!jEDlF<1kLnSEOGb;e0*A%9W*yOpB0M1t#X*h#L45g+VFw<3J1#_EoNWX<@}!Q_)LCs=?>VR*f~H1%LY$P zV_%tkJ&02{%JULyJee$SYx0gHf;SB6XMCzfTJL_s`bT%KmT2ZrCM6MZJ-3q*Ek>XF z`tQV3>~(uU7hhj4%3wfjYr%Ci^#p1wn#YdxY)*vpF2W(7*qvpeh_F4^*{cxG=QK}4 zz^82=-~Z#+kpybHSwUBmh?w!j_w+b9C?iA0sPslbLJFWz+ku?hciZvb2ML@5fo@+0 zlEF64o@O_FU2Qx}zN<4r0$-S>;x2G09>^n8{f7pQNTN3Y#lIT=hqNaIq9UmD?0`%9 z03h8l;5=~V|Fy@;#r;Pnnh^eZeEifB0Cyw-foPAxgMl;u!!2B0|Mah~lAdhRfdFAA z6E>a>bcDByyR`^F;pGIx{wKIIl8s&*XuJbxiv3vQ%z&)@0slAh-%0-13+NK&3o#-f zkf}Z?h~^km2=h-S4^Ll5n;+#$!ag8;q2zyfBoSQo7?|Mol7u{jb<$rvCI0{M{8mIE zgcBBCe!(+>f5HjMFoX<*g@|7a9mt;y$I23fc*3mlFT82!Pds4`nUI3efB&K|jQ*n= zCnO*=y1xiSVtyz1lkFwsBJ_^GxX#7?&UM^L60#6ltzRq(=%2lE%y<#v3H9JF{8;>N bL+rRZ)YT*fM$q?BMF+9~hDT@W_h0`23-@$^ literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutEventPushCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutEventPushCandidate.scala deleted file mode 100644 index e0a5f5386..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutEventPushCandidate.scala +++ /dev/null @@ -1,303 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.escherbird.metadata.thriftscala.EntityMegadata -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.MagicFanoutEventCandidate -import com.twitter.frigate.common.base.RecommendationType -import com.twitter.frigate.common.store.interests.InterestsLookupRequestWithContext -import com.twitter.frigate.common.util.HighPriorityLocaleUtil -import com.twitter.frigate.magic_events.thriftscala.FanoutEvent -import com.twitter.frigate.magic_events.thriftscala.FanoutMetadata -import com.twitter.frigate.magic_events.thriftscala.MagicEventsReason -import com.twitter.frigate.magic_events.thriftscala.NewsForYouMetadata -import com.twitter.frigate.magic_events.thriftscala.ReasonSource -import com.twitter.frigate.magic_events.thriftscala.TargetID -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.model.candidate.CopyIds -import com.twitter.frigate.pushservice.model.ibis.Ibis2HydratorForCandidate -import com.twitter.frigate.pushservice.model.ntab.EventNTabRequestHydrator -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.predicate.magic_fanout.MagicFanoutPredicatesUtil -import com.twitter.frigate.pushservice.store.EventRequest -import com.twitter.frigate.pushservice.store.UttEntityHydrationStore -import com.twitter.frigate.pushservice.util.PushDeviceUtil -import com.twitter.frigate.pushservice.util.TopicsUtil -import com.twitter.frigate.thriftscala.FrigateNotification -import com.twitter.frigate.thriftscala.MagicFanoutEventNotificationDetails -import com.twitter.hermit.store.semantic_core.SemanticEntityForQuery -import com.twitter.interests.thriftscala.InterestId.SemanticCore -import com.twitter.interests.thriftscala.UserInterests -import com.twitter.livevideo.common.ids.CountryId -import com.twitter.livevideo.common.ids.UserId -import com.twitter.livevideo.timeline.domain.v2.Event -import com.twitter.livevideo.timeline.domain.v2.HydrationOptions -import com.twitter.livevideo.timeline.domain.v2.LookupContext -import com.twitter.simclusters_v2.thriftscala.SimClustersInferredEntities -import com.twitter.storehaus.ReadableStore -import com.twitter.topiclisting.utt.LocalizedEntity -import com.twitter.util.Future - -abstract class MagicFanoutEventPushCandidate( - candidate: RawCandidate with MagicFanoutEventCandidate with RecommendationType, - copyIds: CopyIds, - override val fanoutEvent: Option[FanoutEvent], - override val semanticEntityResults: Map[SemanticEntityForQuery, Option[EntityMegadata]], - simClusterToEntities: Map[Int, Option[SimClustersInferredEntities]], - lexServiceStore: ReadableStore[EventRequest, Event], - interestsLookupStore: ReadableStore[InterestsLookupRequestWithContext, UserInterests], - uttEntityHydrationStore: UttEntityHydrationStore -)( - implicit statsScoped: StatsReceiver, - pushModelScorer: PushMLModelScorer) - extends PushCandidate - with MagicFanoutEventHydratedCandidate - with MagicFanoutEventCandidate - with EventNTabRequestHydrator - with RecommendationType - with Ibis2HydratorForCandidate { - - override lazy val eventFut: Future[Option[Event]] = { - eventRequestFut.flatMap { - case Some(eventRequest) => lexServiceStore.get(eventRequest) - case _ => Future.None - } - } - - override val frigateNotification: FrigateNotification = candidate.frigateNotification - - override val pushId: Long = candidate.pushId - - override val candidateMagicEventsReasons: Seq[MagicEventsReason] = - candidate.candidateMagicEventsReasons - - override val eventId: Long = candidate.eventId - - override val momentId: Option[Long] = candidate.momentId - - override val target: Target = candidate.target - - override val eventLanguage: Option[String] = candidate.eventLanguage - - override val details: Option[MagicFanoutEventNotificationDetails] = candidate.details - - override lazy val stats: StatsReceiver = statsScoped.scope("MagicFanoutEventPushCandidate") - - override val weightedOpenOrNtabClickModelScorer: PushMLModelScorer = pushModelScorer - - override val pushCopyId: Option[Int] = copyIds.pushCopyId - - override val ntabCopyId: Option[Int] = copyIds.ntabCopyId - - override val copyAggregationId: Option[String] = copyIds.aggregationId - - override val statsReceiver: StatsReceiver = statsScoped.scope("MagicFanoutEventPushCandidate") - - override val effectiveMagicEventsReasons: Option[Seq[MagicEventsReason]] = Some( - candidateMagicEventsReasons) - - lazy val newsForYouMetadata: Option[NewsForYouMetadata] = - fanoutEvent.flatMap { event => - { - event.fanoutMetadata.collect { - case FanoutMetadata.NewsForYouMetadata(nfyMetadata) => nfyMetadata - } - } - } - - val reverseIndexedTopicIds = candidate.candidateMagicEventsReasons - .filter(_.source.contains(ReasonSource.UttTopicFollowGraph)) - .map(_.reason).collect { - case TargetID.SemanticCoreID(semanticCoreID) => semanticCoreID.entityId - }.toSet - - val ergSemanticCoreIds = candidate.candidateMagicEventsReasons - .filter(_.source.contains(ReasonSource.ErgShortTermInterestSemanticCore)).map( - _.reason).collect { - case TargetID.SemanticCoreID(semanticCoreID) => semanticCoreID.entityId - }.toSet - - override lazy val ergLocalizedEntities = TopicsUtil - .getLocalizedEntityMap(target, ergSemanticCoreIds, uttEntityHydrationStore) - .map { localizedEntityMap => - ergSemanticCoreIds.collect { - case topicId if localizedEntityMap.contains(topicId) => localizedEntityMap(topicId) - } - } - - val eventSemanticCoreEntityIds: Seq[Long] = { - val entityIds = for { - event <- fanoutEvent - targets <- event.targets - } yield { - targets.flatMap { - _.whitelist.map { - _.collect { - case TargetID.SemanticCoreID(semanticCoreID) => semanticCoreID.entityId - } - } - } - } - - entityIds.map(_.flatten).getOrElse(Seq.empty) - } - - val eventSemanticCoreDomainIds: Seq[Long] = { - val domainIds = for { - event <- fanoutEvent - targets <- event.targets - } yield { - targets.flatMap { - _.whitelist.map { - _.collect { - case TargetID.SemanticCoreID(semanticCoreID) => semanticCoreID.domainId - } - } - } - } - - domainIds.map(_.flatten).getOrElse(Seq.empty) - } - - override lazy val followedTopicLocalizedEntities: Future[Set[LocalizedEntity]] = { - - val isNewSignupTargetingReason = candidateMagicEventsReasons.size == 1 && - candidateMagicEventsReasons.headOption.exists(_.source.contains(ReasonSource.NewSignup)) - - val shouldFetchTopicFollows = reverseIndexedTopicIds.nonEmpty || isNewSignupTargetingReason - - val topicFollows = if (shouldFetchTopicFollows) { - TopicsUtil - .getTopicsFollowedByUser( - candidate.target, - interestsLookupStore, - stats.stat("followed_topics") - ).map { _.getOrElse(Seq.empty) }.map { - _.flatMap { - _.interestId match { - case SemanticCore(semanticCore) => Some(semanticCore.id) - case _ => None - } - } - } - } else Future.Nil - - topicFollows.flatMap { followedTopicIds => - val topicIds = if (isNewSignupTargetingReason) { - // if new signup is the only targeting reason then we check the event targeting reason - // against realtime topic follows. - eventSemanticCoreEntityIds.toSet.intersect(followedTopicIds.toSet) - } else { - // check against the fanout reason of topics - followedTopicIds.toSet.intersect(reverseIndexedTopicIds) - } - - TopicsUtil - .getLocalizedEntityMap(target, topicIds, uttEntityHydrationStore) - .map { localizedEntityMap => - topicIds.collect { - case topicId if localizedEntityMap.contains(topicId) => localizedEntityMap(topicId) - } - } - } - } - - lazy val simClusterToEntityMapping: Map[Int, Seq[Long]] = - simClusterToEntities.flatMap { - case (clusterId, Some(inferredEntities)) => - statsReceiver.counter("with_cluster_to_entity_mapping").incr() - Some( - ( - clusterId, - inferredEntities.entities - .map(_.entityId))) - case _ => - statsReceiver.counter("without_cluster_to_entity_mapping").incr() - None - } - - lazy val annotatedAndInferredSemanticCoreEntities: Seq[Long] = - (simClusterToEntityMapping, eventFanoutReasonEntities) match { - case (entityMapping, eventFanoutReasons) => - entityMapping.values.flatten.toSeq ++ - eventFanoutReasons.semanticCoreIds.map(_.entityId) - } - - lazy val shouldHydrateSquareImage = target.deviceInfo.map { deviceInfo => - (PushDeviceUtil.isPrimaryDeviceIOS(deviceInfo) && - target.params(PushFeatureSwitchParams.EnableEventSquareMediaIosMagicFanoutNewsEvent)) || - (PushDeviceUtil.isPrimaryDeviceAndroid(deviceInfo) && - target.params(PushFeatureSwitchParams.EnableEventSquareMediaAndroid)) - } - - lazy val shouldHydratePrimaryImage: Future[Boolean] = target.deviceInfo.map { deviceInfo => - (PushDeviceUtil.isPrimaryDeviceAndroid(deviceInfo) && - target.params(PushFeatureSwitchParams.EnableEventPrimaryMediaAndroid)) - } - - lazy val eventRequestFut: Future[Option[EventRequest]] = - Future - .join( - target.inferredUserDeviceLanguage, - target.accountCountryCode, - shouldHydrateSquareImage, - shouldHydratePrimaryImage).map { - case ( - inferredUserDeviceLanguage, - accountCountryCode, - shouldHydrateSquareImage, - shouldHydratePrimaryImage) => - if (shouldHydrateSquareImage || shouldHydratePrimaryImage) { - Some( - EventRequest( - eventId, - lookupContext = LookupContext( - hydrationOptions = HydrationOptions( - includeSquareImage = shouldHydrateSquareImage, - includePrimaryImage = shouldHydratePrimaryImage - ), - language = inferredUserDeviceLanguage, - countryCode = accountCountryCode, - userId = Some(UserId(target.targetId)) - ) - )) - } else { - Some( - EventRequest( - eventId, - lookupContext = LookupContext( - language = inferredUserDeviceLanguage, - countryCode = accountCountryCode - ) - )) - } - case _ => None - } - - lazy val isHighPriorityEvent: Future[Boolean] = target.accountCountryCode.map { countryCodeOpt => - val isHighPriorityPushOpt = for { - countryCode <- countryCodeOpt - nfyMetadata <- newsForYouMetadata - eventContext <- nfyMetadata.eventContextScribe - } yield { - val highPriorityLocales = HighPriorityLocaleUtil.getHighPriorityLocales( - eventContext = eventContext, - defaultLocalesOpt = nfyMetadata.locales) - val highPriorityGeos = HighPriorityLocaleUtil.getHighPriorityGeos( - eventContext = eventContext, - defaultGeoPlaceIdsOpt = nfyMetadata.placeIds) - val isHighPriorityLocalePush = - highPriorityLocales.flatMap(_.country).map(CountryId(_)).contains(CountryId(countryCode)) - val isHighPriorityGeoPush = MagicFanoutPredicatesUtil - .geoPlaceIdsFromReasons(candidateMagicEventsReasons) - .intersect(highPriorityGeos.toSet) - .nonEmpty - stats.scope("is_high_priority_locale_push").counter(s"$isHighPriorityLocalePush").incr() - stats.scope("is_high_priority_geo_push").counter(s"$isHighPriorityGeoPush").incr() - isHighPriorityLocalePush || isHighPriorityGeoPush - } - isHighPriorityPushOpt.getOrElse(false) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutHydratedCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutHydratedCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..b407e639c0390a8b09ca8c439e473e035400253d GIT binary patch literal 38290 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutHydratedCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutHydratedCandidate.scala deleted file mode 100644 index 36196120b..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutHydratedCandidate.scala +++ /dev/null @@ -1,147 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.escherbird.common.thriftscala.QualifiedId -import com.twitter.escherbird.metadata.thriftscala.BasicMetadata -import com.twitter.escherbird.metadata.thriftscala.EntityIndexFields -import com.twitter.escherbird.metadata.thriftscala.EntityMegadata -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.MagicFanoutCandidate -import com.twitter.frigate.common.base.MagicFanoutEventCandidate -import com.twitter.frigate.common.base.RichEventFutCandidate -import com.twitter.frigate.magic_events.thriftscala -import com.twitter.frigate.magic_events.thriftscala.AnnotationAlg -import com.twitter.frigate.magic_events.thriftscala.FanoutEvent -import com.twitter.frigate.magic_events.thriftscala.MagicEventsReason -import com.twitter.frigate.magic_events.thriftscala.SemanticCoreID -import com.twitter.frigate.magic_events.thriftscala.SimClusterID -import com.twitter.frigate.magic_events.thriftscala.TargetID -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.hermit.store.semantic_core.SemanticEntityForQuery -import com.twitter.livevideo.timeline.domain.v2.Event -import com.twitter.topiclisting.utt.LocalizedEntity -import com.twitter.util.Future - -case class FanoutReasonEntities( - userIds: Set[Long], - placeIds: Set[Long], - semanticCoreIds: Set[SemanticCoreID], - simclusterIds: Set[SimClusterID]) { - val qualifiedIds: Set[QualifiedId] = - semanticCoreIds.map(e => QualifiedId(e.domainId, e.entityId)) -} - -object FanoutReasonEntities { - val empty = FanoutReasonEntities( - userIds = Set.empty, - placeIds = Set.empty, - semanticCoreIds = Set.empty, - simclusterIds = Set.empty - ) - - def from(reasons: Seq[TargetID]): FanoutReasonEntities = { - val userIds: Set[Long] = reasons.collect { - case TargetID.UserID(userId) => userId.id - }.toSet - val placeIds: Set[Long] = reasons.collect { - case TargetID.PlaceID(placeId) => placeId.id - }.toSet - val semanticCoreIds: Set[SemanticCoreID] = reasons.collect { - case TargetID.SemanticCoreID(semanticCoreID) => semanticCoreID - }.toSet - val simclusterIds: Set[SimClusterID] = reasons.collect { - case TargetID.SimClusterID(simClusterID) => simClusterID - }.toSet - - FanoutReasonEntities( - userIds = userIds, - placeIds, - semanticCoreIds = semanticCoreIds, - simclusterIds = simclusterIds - ) - } -} - -trait MagicFanoutHydratedCandidate extends PushCandidate with MagicFanoutCandidate { - lazy val fanoutReasonEntities: FanoutReasonEntities = - FanoutReasonEntities.from(candidateMagicEventsReasons.map(_.reason)) -} - -trait MagicFanoutEventHydratedCandidate - extends MagicFanoutHydratedCandidate - with MagicFanoutEventCandidate - with RichEventFutCandidate { - - def target: PushTypes.Target - - def stats: StatsReceiver - - def fanoutEvent: Option[FanoutEvent] - - def eventFut: Future[Option[Event]] - - def semanticEntityResults: Map[SemanticEntityForQuery, Option[EntityMegadata]] - - def effectiveMagicEventsReasons: Option[Seq[MagicEventsReason]] - - def followedTopicLocalizedEntities: Future[Set[LocalizedEntity]] - - def ergLocalizedEntities: Future[Set[LocalizedEntity]] - - lazy val entityAnnotationAlg: Map[TargetID, Set[AnnotationAlg]] = - fanoutEvent - .flatMap { metadata => - metadata.eventAnnotationInfo.map { eventAnnotationInfo => - eventAnnotationInfo.map { - case (target, annotationInfoSet) => target -> annotationInfoSet.map(_.alg).toSet - }.toMap - } - }.getOrElse(Map.empty) - - lazy val eventSource: Option[String] = fanoutEvent.map { metadata => - val source = metadata.eventSource.getOrElse("undefined") - stats.scope("eventSource").counter(source).incr() - source - } - - lazy val semanticCoreEntityTags: Map[(Long, Long), Set[String]] = - semanticEntityResults.flatMap { - case (semanticEntityForQuery, entityMegadataOpt: Option[EntityMegadata]) => - for { - entityMegadata <- entityMegadataOpt - basicMetadata: BasicMetadata <- entityMegadata.basicMetadata - indexableFields: EntityIndexFields <- basicMetadata.indexableFields - tags <- indexableFields.tags - } yield { - ((semanticEntityForQuery.domainId, semanticEntityForQuery.entityId), tags.toSet) - } - } - - lazy val owningTwitterUserIds: Seq[Long] = semanticEntityResults.values.flatten - .flatMap { - _.basicMetadata.flatMap(_.twitter.flatMap(_.owningTwitterUserIds)) - }.flatten - .toSeq - .distinct - - lazy val eventFanoutReasonEntities: FanoutReasonEntities = - fanoutEvent match { - case Some(fanout) => - fanout.targets - .map { targets: Seq[thriftscala.Target] => - FanoutReasonEntities.from(targets.flatMap(_.whitelist).flatten) - }.getOrElse(FanoutReasonEntities.empty) - case _ => FanoutReasonEntities.empty - } - - override lazy val eventResultFut: Future[Event] = eventFut.map { - case Some(eventResult) => eventResult - case _ => - throw new IllegalArgumentException("event is None for MagicFanoutEventHydratedCandidate") - } - override val rankScore: Option[Double] = None - override val predictionScore: Option[Double] = None -} - -case class MagicFanoutEventHydratedInfo( - fanoutEvent: Option[FanoutEvent], - semanticEntityResults: Map[SemanticEntityForQuery, Option[EntityMegadata]]) diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutNewsEvent.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutNewsEvent.docx new file mode 100644 index 0000000000000000000000000000000000000000..438d0876d949f7ee7951695a1eb942740749007b GIT binary patch literal 37932 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 g!8N`@~l#TcmUIbk-U8LFYkl-5dZ)H literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutNewsEvent.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutNewsEvent.scala deleted file mode 100644 index 61ead1f22..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutNewsEvent.scala +++ /dev/null @@ -1,99 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.escherbird.metadata.thriftscala.EntityMegadata -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.MagicFanoutNewsEventCandidate -import com.twitter.frigate.common.store.interests.InterestsLookupRequestWithContext -import com.twitter.frigate.magic_events.thriftscala.FanoutEvent -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.config.Config -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.model.candidate.CopyIds -import com.twitter.frigate.pushservice.model.ibis.MagicFanoutNewsEventIbis2Hydrator -import com.twitter.frigate.pushservice.model.ntab.MagicFanoutNewsEventNTabRequestHydrator -import com.twitter.frigate.pushservice.predicate.PredicatesForCandidate -import com.twitter.frigate.pushservice.predicate.event.EventPredicatesForCandidate -import com.twitter.frigate.pushservice.predicate.magic_fanout.MagicFanoutPredicatesForCandidate -import com.twitter.frigate.pushservice.predicate.magic_fanout.MagicFanoutTargetingPredicateWrappersForCandidate -import com.twitter.frigate.pushservice.predicate.ntab_caret_fatigue.MagicFanoutNtabCaretFatiguePredicate -import com.twitter.frigate.pushservice.store.EventRequest -import com.twitter.frigate.pushservice.store.UttEntityHydrationStore -import com.twitter.frigate.pushservice.take.predicates.BasicSendHandlerPredicates -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.store.semantic_core.SemanticEntityForQuery -import com.twitter.interests.thriftscala.UserInterests -import com.twitter.livevideo.timeline.domain.v2.Event -import com.twitter.simclusters_v2.thriftscala.SimClustersInferredEntities -import com.twitter.storehaus.ReadableStore - -class MagicFanoutNewsEventPushCandidate( - candidate: RawCandidate with MagicFanoutNewsEventCandidate, - copyIds: CopyIds, - override val fanoutEvent: Option[FanoutEvent], - override val semanticEntityResults: Map[SemanticEntityForQuery, Option[EntityMegadata]], - simClusterToEntities: Map[Int, Option[SimClustersInferredEntities]], - lexServiceStore: ReadableStore[EventRequest, Event], - interestsLookupStore: ReadableStore[InterestsLookupRequestWithContext, UserInterests], - uttEntityHydrationStore: UttEntityHydrationStore -)( - implicit statsScoped: StatsReceiver, - pushModelScorer: PushMLModelScorer) - extends MagicFanoutEventPushCandidate( - candidate, - copyIds, - fanoutEvent, - semanticEntityResults, - simClusterToEntities, - lexServiceStore, - interestsLookupStore, - uttEntityHydrationStore - )(statsScoped, pushModelScorer) - with MagicFanoutNewsEventCandidate - with MagicFanoutNewsEventIbis2Hydrator - with MagicFanoutNewsEventNTabRequestHydrator { - - override lazy val stats: StatsReceiver = statsScoped.scope("MagicFanoutNewsEventPushCandidate") - override val statsReceiver: StatsReceiver = statsScoped.scope("MagicFanoutNewsEventPushCandidate") -} - -case class MagicFanoutNewsEventCandidatePredicates(config: Config) - extends BasicSendHandlerPredicates[MagicFanoutNewsEventPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override val preCandidateSpecificPredicates: List[ - NamedPredicate[MagicFanoutNewsEventPushCandidate] - ] = - List( - EventPredicatesForCandidate.accountCountryPredicateWithAllowlist, - PredicatesForCandidate.isDeviceEligibleForNewsOrSports, - MagicFanoutPredicatesForCandidate.inferredUserDeviceLanguagePredicate, - PredicatesForCandidate.secondaryDormantAccountPredicate(statsReceiver), - MagicFanoutPredicatesForCandidate.highPriorityNewsEventExceptedPredicate( - MagicFanoutTargetingPredicateWrappersForCandidate - .magicFanoutTargetingPredicate(statsReceiver, config) - )(config), - MagicFanoutPredicatesForCandidate.geoOptOutPredicate(config.safeUserStore), - EventPredicatesForCandidate.isNotDuplicateWithEventId, - MagicFanoutPredicatesForCandidate.highPriorityNewsEventExceptedPredicate( - MagicFanoutPredicatesForCandidate.newsNotificationFatigue() - )(config), - MagicFanoutPredicatesForCandidate.highPriorityNewsEventExceptedPredicate( - MagicFanoutNtabCaretFatiguePredicate() - )(config), - MagicFanoutPredicatesForCandidate.escherbirdMagicfanoutEventParam()(statsReceiver), - MagicFanoutPredicatesForCandidate.hasCustomTargetingForNewsEventsParam( - statsReceiver - ) - ) - - override val postCandidateSpecificPredicates: List[ - NamedPredicate[MagicFanoutNewsEventPushCandidate] - ] = - List( - MagicFanoutPredicatesForCandidate.magicFanoutNoOptoutInterestPredicate, - MagicFanoutPredicatesForCandidate.geoTargetingHoldback(), - MagicFanoutPredicatesForCandidate.userGeneratedEventsPredicate, - EventPredicatesForCandidate.hasTitle, - ) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutProductLaunchPushCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutProductLaunchPushCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..8fe0d0c16b9f834ddfc73f2d644afcbf5b8fece2 GIT binary patch literal 37726 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutProductLaunchPushCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutProductLaunchPushCandidate.scala deleted file mode 100644 index 4dc569e2b..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutProductLaunchPushCandidate.scala +++ /dev/null @@ -1,95 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.MagicFanoutProductLaunchCandidate -import com.twitter.frigate.common.util.{FeatureSwitchParams => FS} -import com.twitter.frigate.magic_events.thriftscala.MagicEventsReason -import com.twitter.frigate.magic_events.thriftscala.ProductType -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.predicate.magic_fanout.MagicFanoutPredicatesUtil -import com.twitter.frigate.pushservice.config.Config -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.model.candidate.CopyIds -import com.twitter.frigate.pushservice.model.ibis.MagicFanoutProductLaunchIbis2Hydrator -import com.twitter.frigate.pushservice.model.ntab.MagicFanoutProductLaunchNtabRequestHydrator -import com.twitter.frigate.pushservice.predicate.PredicatesForCandidate -import com.twitter.frigate.pushservice.predicate.magic_fanout.MagicFanoutPredicatesForCandidate -import com.twitter.frigate.pushservice.predicate.ntab_caret_fatigue.MagicFanoutNtabCaretFatiguePredicate -import com.twitter.frigate.pushservice.take.predicates.BasicSendHandlerPredicates -import com.twitter.frigate.thriftscala.FrigateNotification -import com.twitter.hermit.predicate.NamedPredicate - -class MagicFanoutProductLaunchPushCandidate( - candidate: RawCandidate with MagicFanoutProductLaunchCandidate, - copyIds: CopyIds -)( - implicit val statsScoped: StatsReceiver, - pushModelScorer: PushMLModelScorer) - extends PushCandidate - with MagicFanoutProductLaunchCandidate - with MagicFanoutProductLaunchIbis2Hydrator - with MagicFanoutProductLaunchNtabRequestHydrator { - - override val frigateNotification: FrigateNotification = candidate.frigateNotification - - override val pushCopyId: Option[Int] = copyIds.pushCopyId - - override val ntabCopyId: Option[Int] = copyIds.ntabCopyId - - override val pushId: Long = candidate.pushId - - override val productLaunchType: ProductType = candidate.productLaunchType - - override val candidateMagicEventsReasons: Seq[MagicEventsReason] = - candidate.candidateMagicEventsReasons - - override val copyAggregationId: Option[String] = copyIds.aggregationId - - override val target: Target = candidate.target - - override val weightedOpenOrNtabClickModelScorer: PushMLModelScorer = pushModelScorer - - override val statsReceiver: StatsReceiver = - statsScoped.scope("MagicFanoutProductLaunchPushCandidate") -} - -case class MagicFanoutProductLaunchPushCandidatePredicates(config: Config) - extends BasicSendHandlerPredicates[MagicFanoutProductLaunchPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override val preCandidateSpecificPredicates: List[ - NamedPredicate[MagicFanoutProductLaunchPushCandidate] - ] = - List( - PredicatesForCandidate.isDeviceEligibleForCreatorPush, - PredicatesForCandidate.exceptedPredicate( - "excepted_is_target_blue_verified", - MagicFanoutPredicatesUtil.shouldSkipBlueVerifiedCheckForCandidate, - PredicatesForCandidate.isTargetBlueVerified.flip - ), // no need to send if target is already Blue Verified - PredicatesForCandidate.exceptedPredicate( - "excepted_is_target_legacy_verified", - MagicFanoutPredicatesUtil.shouldSkipLegacyVerifiedCheckForCandidate, - PredicatesForCandidate.isTargetLegacyVerified.flip - ), // no need to send if target is already Legacy Verified - PredicatesForCandidate.exceptedPredicate( - "excepted_is_target_super_follow_creator", - MagicFanoutPredicatesUtil.shouldSkipSuperFollowCreatorCheckForCandidate, - PredicatesForCandidate.isTargetSuperFollowCreator.flip - ), // no need to send if target is already Super Follow Creator - PredicatesForCandidate.paramPredicate( - FS.EnableMagicFanoutProductLaunch - ), - MagicFanoutPredicatesForCandidate.magicFanoutProductLaunchFatigue(), - ) - - override val postCandidateSpecificPredicates: List[ - NamedPredicate[MagicFanoutProductLaunchPushCandidate] - ] = - List( - MagicFanoutNtabCaretFatiguePredicate(), - ) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutSportsPushCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutSportsPushCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..8e31cdc3ff9e649b247a17d4e4283a39217322cc GIT binary patch literal 38128 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 XJ9My>0xjsPRVe|Upm|W3U;q6BGU7|s literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutSportsPushCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutSportsPushCandidate.scala deleted file mode 100644 index 84535e4c2..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutSportsPushCandidate.scala +++ /dev/null @@ -1,119 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.escherbird.metadata.thriftscala.EntityMegadata -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.BaseGameScore -import com.twitter.frigate.common.base.MagicFanoutSportsEventCandidate -import com.twitter.frigate.common.base.MagicFanoutSportsScoreInformation -import com.twitter.frigate.common.base.TeamInfo -import com.twitter.frigate.common.store.interests.InterestsLookupRequestWithContext -import com.twitter.frigate.magic_events.thriftscala.FanoutEvent -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.config.Config -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.model.candidate.CopyIds -import com.twitter.frigate.pushservice.model.ibis.MagicFanoutSportsEventIbis2Hydrator -import com.twitter.frigate.pushservice.model.ntab.MagicFanoutSportsEventNTabRequestHydrator -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.predicate.PredicatesForCandidate -import com.twitter.frigate.pushservice.predicate.magic_fanout.MagicFanoutPredicatesForCandidate -import com.twitter.frigate.pushservice.predicate.magic_fanout.MagicFanoutTargetingPredicateWrappersForCandidate -import com.twitter.frigate.pushservice.predicate.ntab_caret_fatigue.MagicFanoutNtabCaretFatiguePredicate -import com.twitter.frigate.pushservice.store.EventRequest -import com.twitter.frigate.pushservice.store.UttEntityHydrationStore -import com.twitter.frigate.pushservice.take.predicates.BasicSendHandlerPredicates -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.store.semantic_core.SemanticEntityForQuery -import com.twitter.interests.thriftscala.UserInterests -import com.twitter.livevideo.timeline.domain.v2.Event -import com.twitter.livevideo.timeline.domain.v2.HydrationOptions -import com.twitter.livevideo.timeline.domain.v2.LookupContext -import com.twitter.simclusters_v2.thriftscala.SimClustersInferredEntities -import com.twitter.storehaus.ReadableStore -import com.twitter.util.Future - -class MagicFanoutSportsPushCandidate( - candidate: RawCandidate - with MagicFanoutSportsEventCandidate - with MagicFanoutSportsScoreInformation, - copyIds: CopyIds, - override val fanoutEvent: Option[FanoutEvent], - override val semanticEntityResults: Map[SemanticEntityForQuery, Option[EntityMegadata]], - simClusterToEntities: Map[Int, Option[SimClustersInferredEntities]], - lexServiceStore: ReadableStore[EventRequest, Event], - interestsLookupStore: ReadableStore[InterestsLookupRequestWithContext, UserInterests], - uttEntityHydrationStore: UttEntityHydrationStore -)( - implicit statsScoped: StatsReceiver, - pushModelScorer: PushMLModelScorer) - extends MagicFanoutEventPushCandidate( - candidate, - copyIds, - fanoutEvent, - semanticEntityResults, - simClusterToEntities, - lexServiceStore, - interestsLookupStore, - uttEntityHydrationStore)(statsScoped, pushModelScorer) - with MagicFanoutSportsEventCandidate - with MagicFanoutSportsScoreInformation - with MagicFanoutSportsEventNTabRequestHydrator - with MagicFanoutSportsEventIbis2Hydrator { - - override val isScoreUpdate: Boolean = candidate.isScoreUpdate - override val gameScores: Future[Option[BaseGameScore]] = candidate.gameScores - override val homeTeamInfo: Future[Option[TeamInfo]] = candidate.homeTeamInfo - override val awayTeamInfo: Future[Option[TeamInfo]] = candidate.awayTeamInfo - - override lazy val stats: StatsReceiver = statsScoped.scope("MagicFanoutSportsPushCandidate") - override val statsReceiver: StatsReceiver = statsScoped.scope("MagicFanoutSportsPushCandidate") - - override lazy val eventRequestFut: Future[Option[EventRequest]] = { - Future.join(target.inferredUserDeviceLanguage, target.accountCountryCode).map { - case (inferredUserDeviceLanguage, accountCountryCode) => - Some( - EventRequest( - eventId, - lookupContext = LookupContext( - hydrationOptions = HydrationOptions( - includeSquareImage = true, - includePrimaryImage = true - ), - language = inferredUserDeviceLanguage, - countryCode = accountCountryCode - ) - )) - } - } -} - -case class MagicFanoutSportsEventCandidatePredicates(config: Config) - extends BasicSendHandlerPredicates[MagicFanoutSportsPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override val preCandidateSpecificPredicates: List[ - NamedPredicate[MagicFanoutSportsPushCandidate] - ] = - List( - PredicatesForCandidate.paramPredicate(PushFeatureSwitchParams.EnableScoreFanoutNotification) - ) - - override val postCandidateSpecificPredicates: List[ - NamedPredicate[MagicFanoutSportsPushCandidate] - ] = - List( - PredicatesForCandidate.isDeviceEligibleForNewsOrSports, - MagicFanoutPredicatesForCandidate.inferredUserDeviceLanguagePredicate, - MagicFanoutPredicatesForCandidate.highPriorityEventExceptedPredicate( - MagicFanoutTargetingPredicateWrappersForCandidate - .magicFanoutTargetingPredicate(statsReceiver, config) - )(config), - PredicatesForCandidate.secondaryDormantAccountPredicate( - statsReceiver - ), - MagicFanoutPredicatesForCandidate.highPriorityEventExceptedPredicate( - MagicFanoutNtabCaretFatiguePredicate() - )(config), - ) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/OutOfNetworkTweetPushCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/OutOfNetworkTweetPushCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..512a26b7f61cb1e23e2e8bea91fedaf4d0e9d9f1 GIT binary patch literal 37620 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

  • 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

    7!ruC`A-IoiKj9!}irs0XUj;|aw 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 T3d}*ETqVem2+SU}eIOnHjSpCs literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/OutOfNetworkTweetPushCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/OutOfNetworkTweetPushCandidate.scala deleted file mode 100644 index 0b8c533ea..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/OutOfNetworkTweetPushCandidate.scala +++ /dev/null @@ -1,68 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.contentrecommender.thriftscala.MetricTag -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.OutOfNetworkTweetCandidate -import com.twitter.frigate.common.base.TopicCandidate -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.config.Config -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.model.candidate.CopyIds -import com.twitter.frigate.pushservice.model.ibis.OutOfNetworkTweetIbis2HydratorForCandidate -import com.twitter.frigate.pushservice.model.ntab.OutOfNetworkTweetNTabRequestHydrator -import com.twitter.frigate.pushservice.predicate.HealthPredicates -import com.twitter.frigate.pushservice.take.predicates.OutOfNetworkTweetPredicates -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.stitch.tweetypie.TweetyPie -import com.twitter.topiclisting.utt.LocalizedEntity -import com.twitter.util.Future - -class OutOfNetworkTweetPushCandidate( - candidate: RawCandidate with OutOfNetworkTweetCandidate with TopicCandidate, - author: Future[Option[User]], - copyIds: CopyIds -)( - implicit stats: StatsReceiver, - pushModelScorer: PushMLModelScorer) - extends PushCandidate - with OutOfNetworkTweetCandidate - with TopicCandidate - with TweetAuthorDetails - with OutOfNetworkTweetNTabRequestHydrator - with OutOfNetworkTweetIbis2HydratorForCandidate { - override val statsReceiver: StatsReceiver = stats - override val weightedOpenOrNtabClickModelScorer: PushMLModelScorer = pushModelScorer - override val tweetId: Long = candidate.tweetId - override lazy val tweetyPieResult: Option[TweetyPie.TweetyPieResult] = - candidate.tweetyPieResult - override lazy val tweetAuthor: Future[Option[User]] = author - override val target: PushTypes.Target = candidate.target - override lazy val commonRecType: CommonRecommendationType = - candidate.commonRecType - override val pushCopyId: Option[Int] = copyIds.pushCopyId - override val ntabCopyId: Option[Int] = copyIds.ntabCopyId - override val copyAggregationId: Option[String] = copyIds.aggregationId - override lazy val semanticCoreEntityId: Option[Long] = candidate.semanticCoreEntityId - override lazy val localizedUttEntity: Option[LocalizedEntity] = candidate.localizedUttEntity - override lazy val algorithmCR: Option[String] = candidate.algorithmCR - override lazy val isMrBackfillCR: Option[Boolean] = candidate.isMrBackfillCR - override lazy val tagsCR: Option[Seq[MetricTag]] = candidate.tagsCR -} - -case class OutOfNetworkTweetCandidatePredicates(override val config: Config) - extends OutOfNetworkTweetPredicates[OutOfNetworkTweetPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override def postCandidateSpecificPredicates: List[ - NamedPredicate[OutOfNetworkTweetPushCandidate] - ] = - List( - HealthPredicates.agathaAbusiveTweetAuthorPredicateMrTwistly(), - ) - -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/PushTypes.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/PushTypes.docx new file mode 100644 index 0000000000000000000000000000000000000000..345a06441548b820ad5a7bf1d9c4ab514c04fbc9 GIT binary patch literal 37277 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 JkEMMe9snz1YPA3W literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ScheduledSpaceSpeaker.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ScheduledSpaceSpeaker.scala deleted file mode 100644 index 6da10ed77..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ScheduledSpaceSpeaker.scala +++ /dev/null @@ -1,85 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.ScheduledSpaceSpeakerCandidate -import com.twitter.frigate.common.base.SpaceCandidateFanoutDetails -import com.twitter.frigate.common.util.FeatureSwitchParams -import com.twitter.frigate.magic_events.thriftscala.SpaceMetadata -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.config.Config -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.model.candidate.CopyIds -import com.twitter.frigate.pushservice.model.ibis.ScheduledSpaceSpeakerIbis2Hydrator -import com.twitter.frigate.pushservice.model.ntab.ScheduledSpaceSpeakerNTabRequestHydrator -import com.twitter.frigate.pushservice.predicate.PredicatesForCandidate -import com.twitter.frigate.pushservice.predicate.SpacePredicate -import com.twitter.frigate.pushservice.take.predicates.BasicSendHandlerPredicates -import com.twitter.frigate.thriftscala.FrigateNotification -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.storehaus.ReadableStore -import com.twitter.ubs.thriftscala.AudioSpace -import com.twitter.util.Future - -class ScheduledSpaceSpeakerPushCandidate( - candidate: RawCandidate with ScheduledSpaceSpeakerCandidate, - hostUser: Option[User], - copyIds: CopyIds, - audioSpaceStore: ReadableStore[String, AudioSpace] -)( - implicit val statsScoped: StatsReceiver, - pushModelScorer: PushMLModelScorer) - extends PushCandidate - with ScheduledSpaceSpeakerCandidate - with ScheduledSpaceSpeakerIbis2Hydrator - with SpaceCandidateFanoutDetails - with ScheduledSpaceSpeakerNTabRequestHydrator { - - override val startTime: Long = candidate.startTime - - override val hydratedHost: Option[User] = hostUser - - override val spaceId: String = candidate.spaceId - - override val hostId: Option[Long] = candidate.hostId - - override val speakerIds: Option[Seq[Long]] = candidate.speakerIds - - override val listenerIds: Option[Seq[Long]] = candidate.listenerIds - - override val frigateNotification: FrigateNotification = candidate.frigateNotification - - override val pushCopyId: Option[Int] = copyIds.pushCopyId - - override val ntabCopyId: Option[Int] = copyIds.ntabCopyId - - override val copyAggregationId: Option[String] = copyIds.aggregationId - - override val target: Target = candidate.target - - override val weightedOpenOrNtabClickModelScorer: PushMLModelScorer = pushModelScorer - - override lazy val audioSpaceFut: Future[Option[AudioSpace]] = audioSpaceStore.get(spaceId) - - override val spaceFanoutMetadata: Option[SpaceMetadata] = None - - override val statsReceiver: StatsReceiver = - statsScoped.scope("ScheduledSpaceSpeakerCandidate") -} - -case class ScheduledSpaceSpeakerCandidatePredicates(config: Config) - extends BasicSendHandlerPredicates[ScheduledSpaceSpeakerPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override val preCandidateSpecificPredicates: List[ - NamedPredicate[ScheduledSpaceSpeakerPushCandidate] - ] = List( - SpacePredicate.scheduledSpaceStarted( - config.audioSpaceStore - ), - PredicatesForCandidate.paramPredicate(FeatureSwitchParams.EnableScheduledSpaceSpeakers) - ) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ScheduledSpaceSubscriber.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ScheduledSpaceSubscriber.docx new file mode 100644 index 0000000000000000000000000000000000000000..e42942eaeace16875871bc327a6f51785807d7fd GIT binary patch literal 37718 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 US%EnSl&b_85`o#Hr5D5l0Mwi0zW@LL literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/SubscribedSearchTweetPushCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/SubscribedSearchTweetPushCandidate.scala deleted file mode 100644 index 4d71a0c75..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/SubscribedSearchTweetPushCandidate.scala +++ /dev/null @@ -1,56 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.SubscribedSearchTweetCandidate -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.config.Config -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.model.candidate.CopyIds -import com.twitter.frigate.pushservice.model.ibis.SubscribedSearchTweetIbis2Hydrator -import com.twitter.frigate.pushservice.model.ntab.SubscribedSearchTweetNtabRequestHydrator -import com.twitter.frigate.pushservice.take.predicates.BasicTweetPredicatesForRFPH -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.stitch.tweetypie.TweetyPie -import com.twitter.util.Future - -class SubscribedSearchTweetPushCandidate( - candidate: RawCandidate with SubscribedSearchTweetCandidate, - author: Option[User], - copyIds: CopyIds -)( - implicit stats: StatsReceiver, - pushModelScorer: PushMLModelScorer) - extends PushCandidate - with SubscribedSearchTweetCandidate - with TweetAuthorDetails - with SubscribedSearchTweetIbis2Hydrator - with SubscribedSearchTweetNtabRequestHydrator { - override def tweetAuthor: Future[Option[User]] = Future.value(author) - - override def weightedOpenOrNtabClickModelScorer: PushMLModelScorer = pushModelScorer - - override def tweetId: Long = candidate.tweetId - - override def pushCopyId: Option[Int] = copyIds.pushCopyId - - override def ntabCopyId: Option[Int] = copyIds.ntabCopyId - - override def copyAggregationId: Option[String] = copyIds.aggregationId - - override def target: PushTypes.Target = candidate.target - - override def searchTerm: String = candidate.searchTerm - - override def timeBoundedLandingUrl: Option[String] = None - - override def statsReceiver: StatsReceiver = stats - - override def tweetyPieResult: Option[TweetyPie.TweetyPieResult] = candidate.tweetyPieResult -} - -case class SubscribedSearchTweetCandidatePredicates(override val config: Config) - extends BasicTweetPredicatesForRFPH[SubscribedSearchTweetPushCandidate] { - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TopTweetImpressionsPushCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TopTweetImpressionsPushCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..e3232dffea51ce430dc3d8cfe129caa7cea7bb55 GIT binary patch literal 37637 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TopTweetImpressionsPushCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TopTweetImpressionsPushCandidate.scala deleted file mode 100644 index b04a16ac3..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TopTweetImpressionsPushCandidate.scala +++ /dev/null @@ -1,70 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.TopTweetImpressionsCandidate -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.config.Config -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.model.candidate.CopyIds -import com.twitter.frigate.pushservice.model.ibis.TopTweetImpressionsCandidateIbis2Hydrator -import com.twitter.frigate.pushservice.model.ntab.TopTweetImpressionsNTabRequestHydrator -import com.twitter.frigate.pushservice.predicate.TopTweetImpressionsPredicates -import com.twitter.frigate.pushservice.take.predicates.BasicTweetPredicatesForRFPH -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.notificationservice.thriftscala.StoryContext -import com.twitter.notificationservice.thriftscala.StoryContextValue -import com.twitter.stitch.tweetypie.TweetyPie - -/** - * This class defines a hydrated [[TopTweetImpressionsCandidate]] - * - * @param candidate: [[TopTweetImpressionsCandidate]] for the candidate representing the user's Tweet with the most impressions - * @param copyIds: push and ntab notification copy - * @param stats: finagle scoped states receiver - * @param pushModelScorer: ML model score object for fetching prediction scores - */ -class TopTweetImpressionsPushCandidate( - candidate: RawCandidate with TopTweetImpressionsCandidate, - copyIds: CopyIds -)( - implicit stats: StatsReceiver, - pushModelScorer: PushMLModelScorer) - extends PushCandidate - with TopTweetImpressionsCandidate - with TopTweetImpressionsNTabRequestHydrator - with TopTweetImpressionsCandidateIbis2Hydrator { - override val target: PushTypes.Target = candidate.target - override val commonRecType: CommonRecommendationType = candidate.commonRecType - override val tweetId: Long = candidate.tweetId - override lazy val tweetyPieResult: Option[TweetyPie.TweetyPieResult] = - candidate.tweetyPieResult - override val impressionsCount: Long = candidate.impressionsCount - - override val statsReceiver: StatsReceiver = stats.scope(getClass.getSimpleName) - override val pushCopyId: Option[Int] = copyIds.pushCopyId - override val ntabCopyId: Option[Int] = copyIds.ntabCopyId - override val copyAggregationId: Option[String] = copyIds.aggregationId - override val weightedOpenOrNtabClickModelScorer: PushMLModelScorer = pushModelScorer - override val storyContext: Option[StoryContext] = - Some(StoryContext(altText = "", value = Some(StoryContextValue.Tweets(Seq(tweetId))))) -} - -case class TopTweetImpressionsPushCandidatePredicates(config: Config) - extends BasicTweetPredicatesForRFPH[TopTweetImpressionsPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override val preCandidateSpecificPredicates: List[ - NamedPredicate[TopTweetImpressionsPushCandidate] - ] = List( - TopTweetImpressionsPredicates.topTweetImpressionsFatiguePredicate - ) - - override val postCandidateSpecificPredicates: List[ - NamedPredicate[TopTweetImpressionsPushCandidate] - ] = List( - TopTweetImpressionsPredicates.topTweetImpressionsThreshold() - ) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TopicProofTweetPushCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TopicProofTweetPushCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..0b3eee0607999de9ec45d1e0ad8bcffdeb091d8e GIT binary patch literal 37755 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 Op|X~x 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 MArY881p7cd0EdDn7ytkO literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TripTweetPushCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TripTweetPushCandidate.scala deleted file mode 100644 index 1981e7bb5..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TripTweetPushCandidate.scala +++ /dev/null @@ -1,60 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.OutOfNetworkTweetCandidate -import com.twitter.frigate.common.base.TopicCandidate -import com.twitter.frigate.common.base.TripCandidate -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.config.Config -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.model.candidate.CopyIds -import com.twitter.frigate.pushservice.model.ibis.OutOfNetworkTweetIbis2HydratorForCandidate -import com.twitter.frigate.pushservice.model.ntab.OutOfNetworkTweetNTabRequestHydrator -import com.twitter.frigate.pushservice.take.predicates.OutOfNetworkTweetPredicates -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.stitch.tweetypie.TweetyPie -import com.twitter.topiclisting.utt.LocalizedEntity -import com.twitter.trends.trip_v1.trip_tweets.thriftscala.TripDomain -import com.twitter.util.Future - -class TripTweetPushCandidate( - candidate: RawCandidate with OutOfNetworkTweetCandidate with TripCandidate, - author: Future[Option[User]], - copyIds: CopyIds -)( - implicit stats: StatsReceiver, - pushModelScorer: PushMLModelScorer) - extends PushCandidate - with TripCandidate - with TopicCandidate - with OutOfNetworkTweetCandidate - with TweetAuthorDetails - with OutOfNetworkTweetNTabRequestHydrator - with OutOfNetworkTweetIbis2HydratorForCandidate { - override val statsReceiver: StatsReceiver = stats - override val weightedOpenOrNtabClickModelScorer: PushMLModelScorer = pushModelScorer - override val tweetId: Long = candidate.tweetId - override lazy val tweetyPieResult: Option[TweetyPie.TweetyPieResult] = - candidate.tweetyPieResult - override lazy val tweetAuthor: Future[Option[User]] = author - override val target: PushTypes.Target = candidate.target - override lazy val commonRecType: CommonRecommendationType = - candidate.commonRecType - override val pushCopyId: Option[Int] = copyIds.pushCopyId - override val ntabCopyId: Option[Int] = copyIds.ntabCopyId - override val copyAggregationId: Option[String] = copyIds.aggregationId - override lazy val semanticCoreEntityId: Option[Long] = None - override lazy val localizedUttEntity: Option[LocalizedEntity] = None - override lazy val algorithmCR: Option[String] = None - override val tripDomain: Option[collection.Set[TripDomain]] = candidate.tripDomain -} - -case class TripTweetCandidatePredicates(override val config: Config) - extends OutOfNetworkTweetPredicates[TripTweetPushCandidate] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetAction.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetAction.docx new file mode 100644 index 0000000000000000000000000000000000000000..21a8188c8d03c2571ec98f965f0e80dbef190f60 GIT binary patch literal 37050 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetAction.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetAction.scala deleted file mode 100644 index 72453224d..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetAction.scala +++ /dev/null @@ -1,26 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.SocialContextActions -import com.twitter.frigate.common.base.TweetCandidate -import com.twitter.frigate.common.base.TweetDetails -import com.twitter.frigate.pushservice.model.PushTypes._ -import com.twitter.frigate.pushservice.config.Config -import com.twitter.frigate.pushservice.predicate._ -import com.twitter.frigate.pushservice.take.predicates.BasicTweetPredicatesForRFPH - -case class TweetActionCandidatePredicates(override val config: Config) - extends BasicTweetPredicatesForRFPH[ - PushCandidate with TweetCandidate with TweetDetails with SocialContextActions - ] { - - implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName) - - override val preCandidateSpecificPredicates = List(PredicatesForCandidate.minSocialContext(1)) - - override val postCandidateSpecificPredicates = List( - PredicatesForCandidate.socialContextBeingFollowed(config.edgeStore), - PredicatesForCandidate.socialContextBlockingOrMuting(config.edgeStore), - PredicatesForCandidate.socialContextNotRetweetFollowing(config.edgeStore) - ) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetFavorite.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetFavorite.docx new file mode 100644 index 0000000000000000000000000000000000000000..3c40ccaa8bbea1e61d5d37acbb096e847fa776b9 GIT binary patch literal 37364 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

    (Gq&fu+dhge^@UGJ1+P$ z)3gy(4pva_2pJd1W$)pH(eGVAW9hHBkSSJNZ7IcfMf~rEw3nQc7dZ)GRc?}dfBcJz z1w@4#@tcYze9(BScADD+WRoq$gN4}B#(1Pn{n0=sD-nxd{7UP6hbTuao2f?9@nce| zpB@eUxQpx5J3iw=gN9F}UNvPOC^d>$>90C_ke1?=ny@Smv{FTWq0=AJ(AN*0+Duf9 zu;G6Ll}EaocW=KaXnZg2&S)NBWNZd1BmgDp*h9!mmCahr#sy_z1pmRNZoEz1*zB^R zVu>VUcx=n3FD#L?o()`qYm;@e}58UTH(iC&>MPo)OO063i-1T-p?D1AR-M8ewg*?^;v5}`L5m6GwDcO4L;zplRw-tl-#eOHq1!=Njm8q0l zP^^MS*Mm=orgjLc_PI+&VKb+1DVvEPjLNN1Ja`SsEJrLCgJj74a!n+0*mIzA~KdEw^~?VvmB)X-kf%Mwr zq6uv3f2%-5`BO!3&lRCUxw1x;l}ly7fg&%GUTX7KWUN=0C4mc4v1dBW_e(+V#?rpe zEeh_DGMA;tNSK|W!o?)W+wIV!?-KX6!`O%=r|;}RNKR8%b(4mi=kL#rdd)$xP3}== zt$3*(UX^@~B&G^H)cp1a)`|J82W%%&ELY^leB@C7D4i4@AC;>F1HZ%;#|njT0yI5M z+o{ZIdn>)MTL+=qxM9jk64WE&=K6<7io@4m2vF?y87xsLfSyq$3zX_`*dj5vyh!0` zQB_JXXiHA8tx#z1^B+uwu)EF_NP-`;waE)uK);Qf_mk}}sOQIuL864a**LS{PcI=> zXoG-M{sO}K4W#>TAlu(SbG{RuK8^i1kvlZ~+^fm_HB%%0Y9B1G5bVE$F=; znF`G^e5w?}d1g!yCLHbDSImT4gvJoeBVh#{;etPWU`qM36V|)svv}#@Mq=W*Yju!A zS_>2EPY14H#fptejc};=0fHzBM5J>S3UZp%O9Vl2XvL4De>yNip`J>3X~cD6|2iWL z%EX{mmrza6pMJVRSThXFe2ybEvQfM&*7c%I^OtBMCT=e=Z$idqL9x3#uD-IhW zQ-l-(k^sYwf3iz9S?Pg)GIxRf!{P<;8_GY=?HhRn%<^)AfjL#ffZ_e~+`guz^JhtO zb2Ag?KacSH=qKk()tx*&U^N~MDrO~tk&cf0Orb*z8I12J>1Vh?ijXwN8+bpNNlG;LYWkf1~2Ay}f#q(G{h9zIyb9va-7Z zU0ir#p?%)R(Y$r(#G-wk%!`eWP=%Y(OL>+9_%aot@i?=>sy!z-}%<+lIVO5fcX+q(TD`J!@|zoy1!C-$S= zU7NcWp`Gc4Ww+cylj*%``E)rZ$JCPW+eLM=^8_~FN&c0|px!N(JC%s`-O+aI-6+}Z zb_)(A4ukMZgU5ZH_j8S+LPxi-mLl@&)39Mv`6QS2+UBNWad9AV5_37RMs)P}&C}EN zL*LEpk;B7VR?@NWSyJ@k?i)Vw{#)r_$mFW0uXm0ttl$|@zA#Zz_0PNvy*h(}{%5Dh z@`G#Y_J~?>d_egzBOwZ=95M3iTmAZWYyOy=AS2GtDj)8OMlQ;ReHMHiz%ZrNFu9e5 z#9Wl(+*C?QCcHAg>Y(dwdI-5ny={wXR`$9`)R_f0-0ssdQqDclHITR~d%Y(Z)O5H7 zYQhCIvESYZdub88c0FuMzvJw#x}6?hxv`b5&B(eoDy$D;|*kTC-`Va;s}H?f_>a$y}`%zHX%nh&1K_%4=_|Z#I_?>v-kIy;KhMF;9nw z?9J|jjtX`@xjYOTl*MLqyAekblmL6+J@<;|4~k#(`$C947#=Ahd(D0n&)XRSa)0Eu zFxVqi8A7b%A--t|Rc#nd2@dwgdMEcqsRD*oYvYj-ru!ojBJBmjs*NcKy|bv_)8lWu z$A#6QHE)Ej(P1$)8Q$;jXxTMQb5EzA6gOL(s+%!zA27S#6G_>v7)IDvGMcpVX6pu> znWLbDiH|{=&ChG~BplT-7=1PO!Df-JS3<<4(5i*57-d|4(|PS$$%JpdZ#iS@Xuic> zk3&W?W_x>TT3(Dd4H0X*cjz>%avSFtif4lMnmj3h2vn>oM9?B%(uJ--v#Envz;x3E z%1W$O`H2R+X!hXsN--Ek+JD&J@=@bw3!yC|Ozp=!iJJHnQtf?xrz8SEtuzngOB_n?18{~qK%X$wwJRPr08;WzvrD1RUDca;BK1ukbZ zw0%n63Ivbbj2$=ujAb(za$pb$jPoB_|B|!VrooJ(-|f0AYB{PKR6EG$@u985U_fcM^BeeZWopa1KvegZyLQF zJfDW_?PZSj-C;!F%Lu!V129*f}Hh%a`&AKHdbDrAY?AvAoB_3warjz+w*ThcA$JQ1rHgSJR?QPNO|eFNnXtY&|nn34bkyg(6E*CDItL z3sc-6GZJS1218`aZ0zrLoCW%kF|JQgmc@XWBL8AdBt=DX0YOrC0~t#TlH(PmW%W}O z_AP<3FIUp!86SK?>MevaoNAl}xP`vX68v%}n1z_HhAFE?D*ukL>~;nIKf>Mty0UHS7LIM(wq3Dp+jde>#kOtRwr!_kI~7+Y6}(;N+F&E-uql@?lH&ObB*;MNZ~y~uXRud-xgyupgudLA4I{2p>kD8JqnQrl6px! zZ21FMLPCZ1Ma3<#=7l}A;g2iCsT6)A97nt;u6APCh`oz|)Q*U-AfN|isKi!Gl|6^S zsZ75pCdO34bc;CMstYXe%MGaBv4x?@JvEee4Y{p6$h#k03-F)jXT7~2^5l3LC=B!- zCh>hVjKjM*Z}_~ty~T;~XC3=KXumHVPBy+Z3+Qv;$yPGFwQv03WW=MlM|5~zX3L0G zyX#dL^VsX~^?qsJ$~8_XaT*e_Pfcv#qp&X^5YMPNI-TJ@Ro|$|oqL$YYyp3xfW0tk zR^V3bnIdfCR%E@b??1S|ZIy9!3rEJ3V8XmNb)Q8%4ZqYg;-tH3oi3?#_QrR1sA12s znYA}{gHl0amH%Rn=RD2zWmNVzvXD@4`xBJY1o8n0@d}iZ>r`x=3Nz%BhjfsDyJh<- zHm>>ZgUV*ULC_fAQkP=W(2pg&hqAAeAJRR=U5BZ;y~!?EvnG8Hvuj^Hz3F`S5InF4 zq0ugv8$5OR@;qYh>~#@FhnyO}?6~T_ipp=VdYrd+llVF(v|-ZiTxF-_ah1THj4!kr z>I3WZH=LF@*IeVoy{;OVYF}a^8wA(~*0k;hA#im}zY<%EEuP^> zZAyG>aBfe$=VeN}azR8{nrZNQH=(}scBZcs5yUy!% z3vn-!&hC5EIoTdPsuRwC-L4zd4C5>1^c?Xu-cZ(g++*nD_sGn+A(N<7%<8^+n%k3$6BCsqC1bCi8n40lQu3+GF{qcHD=LhgnIXhyteON={K~ zSCjQ5VV$M#B(KVDPAY0nCc%@=%|a!$-^IdcS+{mvtj^_v=i;OFyE+Oux9j;aN>gX^ zq?_sDQ>e#MM_1*^`wPyYd9Pv_NAavVZ;SPX0nbYF1mkiA9(gw&R`m%47H* z-D&cTBKn>cmoXlMQ!*YZzB(PxIg+ZJGvv>$didZCBF)!cWOayox**@`UNoSbJyltR zzO@H)0XgMJBzkSZ@5vFsJ!?BxKa5@7A5wojrT-?66d7uPjW0^Hq7gvax;q%y7kCb1 z>FoErj=5LLAM$Zhw0Z5}-Oip;9K1Sz@a`aZ@$S%n0!iYYdPN$}Tw~!s`CuYx3Mb+b ze>%fTC^A__bY;st6m;Bre|7pfF}D3HUL;0DM&cstc0sP%vKs5|6i!VwphH>nVwB4xsL1i_)^XEdfTlm% zv&pZJQy9rR9uY>s4^#nlfOK9Bw0VkoGlv58G8diK$K|D8=hVDr@vPKw@3Pw>A+aLv ziH8Q0RT=w<6Y!E34bo!)&PlQDCk&mvx*B6I zDkj0inl*mj%W2^b+Q}SyD^~@4tI1Lcxw=$y{dTkX^un-Vn}>Q~uv73bV7Zs#YWb0L z(KhHS33Hpd(@SqIy1xCrgXTq1)t8~pB73n@9^F%t#Vij>V${yTbh1;EJ!MMZ^wdjb z+IJeGnC4nioP|-zuRDh>v+bOrY{U21i}O73?)H1xc|xW?C8KT(rq&Hg@MMLGT zIEaw->zhkh=+P22MAr48vyKPmMZA2&=nS^$R<_SU7O4u)k$`#QccPV z5BB$CMA7TF(#2WoZ>C09y+6!+r#CD7%GKL+kO2F2KX`|!nkbWARBj-(aY6_k4q_&P2@wVAhd(je%ApTFP{!VHe$%h zGa{$q3d~wo&DS2UUhX>hdGPM!9YG^X`o5#KL>YvB8u#nFJx0%~oOyNd{!{Q<$hVfT zz9EowzWFb}bi<0f?F(_xpjaQRTQ@(X6m=n+Q~e!vS#lZZZudPq)-gJK?oZ2B9)$L! zKK0`92@y^jgWlTZ9fNz&IrNKcaJwWqy}n#8r{UEsiz#?gtC%m z)b%{vz**#Ld3~ZonGTf%$cVsb*%d2aAfEb6;~Kh|*+%!{O+#x1%Vcj@yFP1v*tu zzJ+U8ZwEKnbIx8D3wS`5ftFUP#%bJOPlGEK)K=D_Y!KYfQj&c`&aJEl0ky|TnJ0}JrXn^-2Y&+)$j8cxP1Ibz*qI4nWnp~mZjT~R@tNsLo z799y~6Rb-s;!lVhcy7}cC7A}^`e^OJ9$<*gQKGFZ{f7&#=;OhW`DR9; zYP)x`j5}N7r%9vLYP8fZ`?j=!ytod&rtX1`T!%6?6seyp?42nD2Sa`%N+0bWzwSM| zJY`yQyg9=5wgTJJ9zeb~S}~=x&E@jK$7Qv}t)1Ug)sTCw32oCBthON8hZ5V1n^2Di ze3M(JboT&)(g7mA_PR5zmai+4)qppk^VT|?C?28AC9bG6qa-W&+9?e z*Fx3L@JY4A=g!BSWs&PS8{}9eaz$vqE&;}(2NhY-sgmu_d0M4vbV&2Ic`yX5 zchQhoC7;aP6#fHG-AgjTkxXDIMp)+mvohP9>kRNtxY9xTnpiykzpAbL*j*RY@0px>s> z)xbE^Ks(6shqcARZNr}emFc_g*Jz#B7$IQsKz@H-1&U4$D7dImE0vh@vO()u*sn2T zwBd8<`1Qz2#@KnaEb`sW!$!`_2C#QZWn@stW>6(tB1|T6pq3$!yQQ@w$+YV8A0RtkdDn`R}0_HeTD;o z;(pD9h2~mP$LH#=<)`!uk~so>@gj{gD+lWI@P^G959Tm+uUA z-aqTL-!l<*e*aDz@#EMeG>1l798H7P%f42Rx|%q1rTg-ktUvyCJY=88jaN;eF+yy$ zWpttJdseUkU8og>ELMdAEKyzW#cxBXssej23rJ zKy(v4DET1t`oox7N082Ydc82aU$0BGR4CUNxE>z}x1VBnuq4GN_d@>MEqNt}=-Pr& z#Env zIiYL+XiKpQF%XalE7LIA(mebjRpwLB9L)UvP(&M}j^fA>s3kf6Q5xLX($ zjZCDu2pAf<7&6JYerRH0Xfm4F%Xudp6axWOWTwt9B$9eP)cUeYJ*)8k>_&HO@KN_l z1`^Tv12pj!{b|EsC?paf{CX$)bJcL5{&_e!<|npD5l&M~*9pRF`SAY^i3I%bkeBNg zfRJuie}&|E4qa}r_*ckm2qY50@O}ij{#@nB5@HY+Yib*GtWD~t7$l)6m2^f?!#T83 zIC~=qQc=S@(jbKOu2feVQ6NK0h|qkm3kfAIfZED3`y0!z!eD~=7@12{VGSThcA-!} z&cB6fc}4f`LZKR8zX*ek21EUd>Y18$OjtELX_Neo(xg-DS%DPL4m>atv;-s!28Fy{ z0PQ%3wN0yjovDUHg2Yx=BI$zUyVDGg=`4A`| zxS4(=6@?+LY|*5snrg3$<5+h}Q6Mnu0`3@RELy=G^Kc-dHo~J$5irsnqyZ>m5L6K` zeWt8A8Ef@87~eoq8s>o25|jw&X2v9O*?i9qZLmQI(Wc}(Y{76KVh~<7;2Z2B?~zKq zrb!!QsEqjzTPt*|mo<)HC?1v&ZX0Ax))3|(o%8`HWX-qne9-4w@*EgsAgs&);__Uc z1-e;E)4t3}z}fKML$jg{2GsFHw1!V|>nQ@pFAPQz3UzR|{8M`V81oJ64x3@IbNUU# z%D~t?ij5JS1c{TV-NO;*fAWzQ0W+p>Wzf+E7yoF1Ck~92HR?qQ_@aWv+8%-(jTA5v z2ghUhLwm6T3D~~?8_W2@3Qt_0tNqV_`Tm~=Odg-)*Vw(&)AK!`?wh{#2FMDy^j*Go zp52fH(1JlWrobWL<-hnE#(&TrSogh=s`$RQr-C~T7{!M}OyVZNz)xl+MW9aVB>jFC zoFo_oItc-$;rlTZFyx;%fK2#7i|~7FWGHQJb4F({>>+j2yGg;BhpoGrt+$=6r(1F| zEJOyX{9*6bAb^MPhd~A@E;`ae#1d|bDt$*<#|zQ>nC?mASTy>8 z>^hD1xrlH~NzO#g$#9T;1D173X3VA!O4)cd>H`M4$dd_OyDPsiJX}MkD3% z_LO$8AL3^(@~6J9G+Xa@bNw`1-#nJcPPYdOTy0!De8Rwz!|2l3*44~b@YrtW7-6Ro zo)|f-{xg-2?}HbzzTfwu*z~o$cS%J3K4$$-J_5+YL}OL?V+it=bJ~ogjr$ZhY1?1Y z&&A!oT2Z&J`%jz)Pg4pJqnH^OsTn7jI3{PCK1?_swspHo7S^|~+}*y@Gdt6A9`7~Y z?@HMo)$$X8XbjLe)a4Cb{w-{6 zw|DIa;0mVEx^0x$f67_|FkK>e9`63AmO-f7#j5keQ7{*Zpu1MHS5(gGP2|p?H<-vD z4y`j)n7mADfvO|a_aoKsdrP+TNw6}?u<|Wn4(&y!!8w(&8oG2C{7;n5HNw$-vdm;U zkBy?+*O^N(kM}VaVPXBxk_)76-=yx3J5zqBFV7I{m0S769N)-YlnI|Iu##Vj6-IKm zzP=}7>^}kUhA-3dP+}Na=;>Hz7}-YW+k_JaecWU{-T|(qXZ2)c-M()Ae66YTv>R+S z@>4R4>iI}q>@m|95Cb;wc;A?^g!v^OG|+AubWh7kRUv0Ek*)d-0X>N2m`C+$0v$ND z`TwHl0^t}|f8d{b9Q?3lNL%4AFUhpeo*vBZiX?Z^o(}epV7Xt08sVuGG_1cW&${mk z4F-`t5p~>oi|}j7Pyr9Z0#$0&D1p`>ho2Jp{61Xuq4rM>>N?iQCY6-I%*NP4N5zy{ zl?2v^VerKVQpGp+5|~Zg@hkhyn_c`#vwC@zu?(wQ+Gi!#%Jk8(I<-8I4~%8mtiSK_ z-omAxBHR2e7YL0iUr-JowbJoiQN2A_H?;@O8T*K3-0WRqfqOaCEOfohA8vNB?QyN z|4ZdC^un}$x-eUirTOXo8nC3B@ZbXPBGSw>avD+Q3MiZ@P9e6UVY20@hQUTbbsgLS zoj0~9>mQ8Qj=?DAeggEy5KD7LS>j9~wkDUCOQ2#N;{7vxt8nv^a2ceT3t$Kq_yssB zCTX@qT7?_MRLU?*fQZ7sF#aXtLQsV5j|c#(|F?*kVbLa;9{s-sFy})rz|nRSm~R%b zTp-O{g;4*Y<<8)T@2^TphSx(1zc7vG1jsSI^b3{}X99zZN0|4fTe?$!1@QS3AA*fI z(3eF*I=Dv=W(D4sSk;OD|%i?A#FA zz=?R~Yj;`RBl6EpKw zwB<`YNZv6GxZhDrvfG}JBP?d7xFf6^m%=wkm2efWfdgAYGEA~IZoxzY&r5$1PnytnIBt`w%XCY4^ zPh4OesydRT{TquZag=0CLCfHKai>9~jg8@ZiR*%H973s_d-XJjk4iGj)eX-J^?YYz#GAc&@dAQ@JA}T!QmjWBwd`L?5?c@GU z(OvmpI#lvc0XjZh{;lIqeenfyuZe%B%d(!&oVMncj&8QI z>j3NOo8A6_W-z_+&c53q&mnoDmT1Y7i^JytY;7%X^zONbT`L`At7O_gjAUYmbMCJE ziOVu)BN0QO{*L7mDzPyhe<}YX%u1iGuIp zqVg1)E7r$!27=j%EEFq}xn!ezWD}lKlNnCRa&!7cNf1Io=v`+u`-TrM{Yo@#TzyYboz`Cyv>~)uIgo3Oxfmgcu0uQnGMqgdiXPo&7-dpNh_;Ji zH5?v$7$=-v+kYiaiBqRqi5fDnLZ9ah$p(uifE``6lYW&=;6GfIEXE3|n?M^NjNzqX z2%Tz8B*BTboMS-50Ai4}X;#Bigc}0Y-Sw)GaasN-Y6hwzEV6IaEK(kaQR#7=CthXh z?Q1A~)+igv#0Uj8hKCH+MzP_d8Rkw#KOkBatR}9Ir@WhJ!*2OuI>9b|DO9~LYUw$P zQ$V7xK0jF-#cnJD0SF$0VfbXSJcD7QD$QhEnTEhKj1wwtD7P|cAH_a{2s(^|0M$aa z>bT6|MrD&F3@}YZSwk)R5=*&7EmgOOif$N3J~%a!-T0WYCO<_F(`Gmn&KQ0ehra(} ztUQZ;wHys`RFx6mHJm+KzpZq~`G1qeL9_Yj)%&8Z5g=VhME${Lua|Y6UAPaw=x3{T z>T}EWHHZt6slqU}o4F!QU}l1hrjX*;!BH!i{8j!B|{CzH@e3y zpE326WLIddqE68m;+Lz$4G%G&H}lXMr=moDgr7&5aEpG~Nj6)#ZSxiauc`-! z?xLL1s|q)nY^~HlDTWSB2cs;e6_p?PS|#OAV}2_lj*fnURbH5&${cNRm@)Tdz&1bf z&-_KBz9urEA{OaIl^?k=C0TB~H+!0tI4xuUL_#Hko-#e5C`KNHqN+5Ji>5|aPbGCqJmQHJ+Qj`6tSNv7FcY{{YUadzQ9!3|YzU$;XDp)T z!u*q|^oL@T&i^K(`)XK>{qs z9}8x>B9mT-9@nGx%Ds@2y)=|YvX{FeX&}sY)KnWNf7TXuiYRHjWvPiUyGePvGw1p#wEQlbd36e7n0A)Ze zcv{NL13)>cP~v}3CIR^;Wv=u&b6fq9OhXPuv6whA1$1tHi-KQ~W{W(mqOry%+zb+g z*_jxW&2M&7^%@_mA9yvN5LdYpwfR_L}m8BH8gIyw6H*P(!SkfzyjOmgyk3C;Ua1=shnX4{yj~~ly<&bcSqX@w9v}>1x|4ATvS~fl|0)6B}8d_ z+aTVNXkRyU$8ih~1tA^;y6nfE(;yMtuNQxCl-Mtx15)I8_ACsH`?n9@KDzC^78t=%HK))ji zZGomBy`ydXgh_@c$(2^Xxy2k73|b7J#O<+27e~x1I&cJvA<6Z;d`Xnz*gnzT9XvGm z6T0`(#uv?-bl*``(}{|+y57(^V}O#t*I1A>=aZbgfjV%Kw7k`OhC z_SaP;qErX>DGu*Z5CnELAkATm)^VZ3itaN+v|iv)5XiFcO{xDBayOzT%lom&ocE!c z8B$;+^1o&1a)HcD9Sj{R%d2XzDh);quE&*ay@LbHnl(Fv|2j>)4@4dB z=!KB$hyi$D{2U}*yyI1cgH#r5SX%Uy4A+}a9ucPe!{1>^Dnzsr(EbX`lW|z_BZZE} zH-K3(SsC3@uhO|v@Hb0{GI(ZMRTPb_U^5&|9HpVfUXMXb zoJJ8eS$@NSU=xLHD`n`gtbfG?N}q`{J|)MC#p6P&a45}Kx~AgTUgEw#6%)ZC~L-hJ10I6u%@IDa~G-|``1tl-*1lR#0^ZNtrqFlI(FB!t<#H_P1kLLbct7 z9C=Lw4ET2sXts#Drf2kga@H_sIk!fy^5``cExB0l$Lc z{-b2!mk6NfC6&)LcMA|KAo4Z<<%}NpX9?H$&6hx}1lj1%XmH!i{gHDAiR%a$jRV9| z6M!5=n0F+Elcq!k4^4Z{1H^vz14Q#_MgU;@y6=ls%Vtv$!udwmkkv8QkVicCwtP0R zLh6yFMyx9~Mwh=wc9vPtkY9*atHDRZ9DJ#HN;`StERR7;1|0h}MQP%rmu-1R0(ieA z5lb*B1q7ZAep4j#9Kr9~W)I!Pc6|d@(!ACPWxuU^J}n%COe(`%KTyO8J6; z{NQB)YQRI~2KD_+)>z_NeZL-+cj`w4`1|6&y3y}Z4Jow_D?J}fFd1r8hgQL9VAnR% zIaY6n;m^fLDz`x{12zU)PL3jfdl>13Z+A%PW9yX<0s&vE^L|-HjRV!w|X#8>YTT?6ZAc zw<7qhGM4l3e+K&^U&ej8FlZIJWE-+Ht)hteFFG3$+w1tT>py%vt8=jAUBYrsl&<8) zSbdrLt!`?UwjeO}*uGj3?XzvN#z)G#NEJNbmSyCRbN`V7@3%Cq1di|@pqv5AgE$#= zFs_+*=gjT>;Vg(ZLx4!VvJQAU0NSG9pjE2{5qi!^;zc&6JgbnIJlBk4W|mu~r*v9B zfEZj^2P5yD>s1V-87)Zmi7)p|!sQ&~l_mr#oMUF!C0knnIM<9GjwIL2GhA``l8+{& zKo7nwIV|<21;2so*IwyuliAW;j#(3i+tVd|CzbedRf7z0`MbpBkY=qid8(rsW7#dA z2eTR%S7w(*l{WnW=oQ?$>S77y*eCZ65>97r6PWx!nj!7=_ea8|AF~9!t1x)-#LM%H z;?MQ|gJ^t#B|Z>~lI(?QjmN>Jb{* zkk~~TtX8tu_%Pkf&G`K@%P}LF!d7qJpZ5ji^^bpxB9bw9L-|l;ejNG`!Ib#+$Wk-@ zd^>h_x@TbetnsmXQ%4g^xR^8+a|&+k$5Krk4EdrW1@qMFT%&SEMsh7fMNTp!LVKQ} zjxs7gEl&y266~NZLLZ=QoTq&--Sd*3vw-OpVTC}qi=c(IILPnEzg1|w2yv31F)mb_ zqcE!t6mGvlmOg!oJjc3Glr;^Qq{X-5z>bIEj*E-Cbu*lWmCO((rS=DNsVPZnrl=_Y zgro$7*)hrn`;h7w8I4Q_}l;y@ANeaj3 zA72{@a3-nFc4U-(R@9-Q)KiidU+_4>*lnw&3I{(va{jJ*T+CD)^6kT?UF^6Rep-k- zAxM`O9P*D9$7GMBoO=~~mT}H3h=4i%Q<7v7I!0VkS-C-$G{3wWDkk5tzzHWH9G9*Z zIh+cK1t$P-69#a2n1}KzMdnh%YYMr4>q?%73T6kn5t|@DfsDzg#R=g23ffogQAfdp z5VQ9-ugw-X7?1J%^01G=9>~E286$|`Tw}{<2PE1i&XhL?X~di*!9CO{L<)6ah}Bqv zw@SKy4a2%qOI1;&Rhq4sycX=N+&<5BT&$=~DuMI1bEtOMZSf6fNaeRN|Lqj7cetWK@f*xzQ^q>?SC@>H!pHTYXE0hB^Bak7U8C*uGI!m zTGkBto06y~9+HN}B!Dx=qW^Km83nQcv)-kk5i1pbQVMU{g0(D_= zdw#{{6IOcMv2@%eA0#>w@w{T6}ODAP5hC5%An=I!Y#i=KB``iem_FbnFQywj6H|F$Gz& zvJi{$gr%%S5u!4pGHG!kdAH!FLr3LAsj!v;O(A&+Bi%$%{};)b#HCKvE-h#21Pjcg zW=G<2E5e7|!0gBlY?H4{Cb47>Qx<=bs(e87&koF{!3O7E5t7eQwLIEUv?VIrr;9XB z``eHWxIcVS00@5>Qkn`1;3Kt`70l|+7n3o+F6yie7$@!?DOv<)80Sh;fJ+kh6HNEg z(m4$rXt?86_mWGAfv(dM*8bTa-@3f2iA%y{mOIK}88Z9g7dpI|=*+!VWwqr$m- zCl7YSvQ$n#E-Yps=W__BH06AK4mU*73!kyY0>oFg zcGMcPxIf<%=3|9_Ye?x`oFV$FLej*z(NE0Ij{+Q3J=L3RmVmaA)=vV!5PJ?0leXxr z&k++ZGDL~)AjG3vjF)dt6_fw6_H`pVE2E}rj;=8VfI~9m!I9h0M_@LCj;mQbDnVkH z;AWNBNS8<=hoWh^FI+#~TQ7N@jMmyTJ|DN`|87isIWRy1e=cgHb+n$x!=PXgAlAC5 z(W!OB2RDTMsoM}B1}KAoU}&YyQB9Fh-(v@e0nX;AEBL778GIw&sO-7ZphS&6Ekpzi zD@jW2DG~`l8N5jajwz|>IYX><0f1zR1UZyAXQAmb0)bI+mjI<{s&`O87ga3D2Zo{5 zjzrhUNT@U-^>&29#fuwl1S`R8K-#|{+BxJ zz(49lkp8ziTR4C^E~p;=_Y3s@fSDe>x+J)k{S9P~ferbv5iQs8Z&ECD_xFBDId7l; zqbp&NfVe>)C=k#o^ndm6axrstwX(PPYoAq%`nL0TF0|g=GQ;+LbLdtl*+c4cvico4 z3R}QK0)QI70ogrrCc+gc?2>LqPNbTrUtgi$zs&aax(tsgFlNKM=fkHM^TRL(E&z#A z)6#G}EUcB;z8SGGrG`f`Q5*8}_+x+T{J1{kXE&s`&H(m8qBuVGX>U<4Ns6Fu>yPM& zhXD(;so-w-Rl$iW|L9UPT5=SrsjVn}ZG-|Y#B#MY{!+h6a;+Q9P2a-iY?mWNvu2|$ z{PU3hk=scpsf5l3VUPov5(n#qC}cy~tef-0poh5qN#6Yjdc)!L<@L~BwDV78jXI3e z;#0WfRC25!%;5}$_(*=ox1gf6bxf=-+6JeP6QlX;*J*fO$^;Cr{1A#)$82!MrLLIx zOf}nCMpua>A=6e4$fttSlwoY%ZXvgv%`ySSVcZXl^eA83?eP>!lb9yo_V= z7&&koW!B%Kkz3No+p~rFAyf1V#m)IHV$zST@q^YA-TLI8sqO)EE9=9ngYo!$*6T{^ z0*i~QINB2MDccns@$Ywn2#u{0k~^``JQ%?y4G!gfiRkSh)^c-waRmw}o6qt@5h^uS z;0m=99bcHn>qoPFgK(9$*G82e*WvmZO>gxiib(KfPt+=@wGss-(F658vd(ntIp-NvY5PskBEX#q?_twG z)IFaJr*6+HpDkXH=TLF$0o=~Ghc$6I75XyQ3m%O9y((Q9_Zva*lWV5wPo* zzeTdo9F9d}_?OL1IOOm;uE>PXFGTEJ0e4pmp0Cv*=t`AlJ`K>PBI2AnxIC;; z2I#$2GZGCEJapFeR{&1laEfLPZ{ZjBpe z(D^Ari!4VbVD+t$X0jjTv)H|V$J7pGH+o$bkfi>4za4GQi10f;*a6fj{2o9VUr&z< z>7$f_qGb1FOiP{tsU^m!rmJUIQCOKc!H5tFxYRG0HlZ7?jeg|?eJ32SZU5Ik%e7tL ze{Qcl(>_)K0<@rN1^oQ!FZ)*us;_3oD*tuC$IK5{4>7?3&3pF_9wn+Annp7VC$eDS zcO?t8B0A!cGq(UXL(RPYWYyxp>UyLgJ}0i&@xz&6*pn*wv)`TtLj55BYT1 zC>0bhR18Mu6-@H=X0d)H_$z{Nc+4<~aRp1G)F~3+QOOh7(fN4z>za5AxX8vAl=i^_ zIotAuP9){}R_L{FwNwO)F?VfLT(Q!FtdmW^xT~HwLK4XIGm{H(ty_ikXOO2#AWGe1 zXAW~vW_}s>AB3jKkCI%Wd<0E)&B{*QbgScM$=F&w@)$j5>}*!SiyTIDzKWJHQ=4}o z4ln)^a5?S$sBTX1@Q@|M7&afLn|Al$|8(p(cfN}WpdsmR7$6{&e>-Ll=)bFKWNiCa zSJLg&0sHSvc%whQMN*|@OWP*3pdr(YhBi+j;Cch0;?-kpCR_`4EdHM5wT)xCu9xb1 zw2Sw;rky4O4uryX6_Erb=Kh>}G5&mf$JcKAO4mpsN<-8BqaVkSZV;5Y*yo6s@U>?u z)Py?b1xX?hbvFa~c&n9Bd&!)tT|KoUr-}mB$Gh5X%T*6O8hWUb!gw$S3udC8BhC4U zg-(Ft&WuPinjL>W{30U?sJ+nz*E2i{N(3ifgG3T*pQmRxg^VROu!=cmWzx12%Q*ar9P8jBf6vOu)l#+>yfQkm9;7wkM-taT*tBnuf61(D=nb9CI^ zKvR8oHj{(fy!69&6oN#$L^YZjGg7cf!SQG_|H!24a$^8XM(ojxgT|8BoGr74EZb5E z$)qyqPCCm_Dy@p{EHXAavmAK6dSI4jzHQ$f{Cc{=K_hUvtU)gzg!?>5$9}XFP9=|} zu)59Ex(5~R;k`TlML&SY1DNkY#QaF@7Nl(N>H8Iwn^zBfU2TOfCtv%}Woe{_7c^_0 ziKiPgZn~JdllJ`t7rke}gCj`!_=Jvnx7%^Qu35Hy?#TK1{^rsU;^o~#*%+h2rxGT| z^HQRf2PX|?CnM@&-iRsUQ2b7Uk(Dc?8SxKA7*uA1=(FE$w{<(|vjT_OfshZ*%t)C{hvClekQtyz$#s_o)J{ z`g^K|jz*fYASaO1fH_*_ko^b!7gl!iLVOA(&Ou3Nl=K1Nn?_CQ_{$d)CpTc{6g*6Q@y zVd|hTJ)tDq=j!@fk71B?sZ-kN!-)GtL64?7kj)6t?h|5U5P~2RS4m5(JGSUNk$z*` z7KD9Y-Cls&gn~mWak~Zqa`_-gAne_?gbh5=bt=YrTQVu7G*zK#=iC+N zk|I+(v@};?iH7qMR}EF}i^vjHy_`kSrd_5b4tAzFzuf1&SCf6Q6@{g4;Cqh`3VO@A z;1UrEQ{j<0vy4n*v+_b+(XwQ=yAw%lIU|N?Ata&lYT9MQPK2Cl!e)zsp|GIqn>X7Tx0yLh~zw7sU)n?GA>yIQgd|8+Ges{2O>A?T_5JoB1 z4i6C~wFTrI9>jYFbfu_3W6(^F(@0(big`fhIz;GlCIZe7_!L|eN6C=|MGpmbIP~ zn~O2YAR^s#w)$Xewj%rI-%)M-S6>lsA zu9TSs?GbO-llT`ymNm_GVvCcIsa--vnMiuScS!tZ{34lY(v6$m8Tg2o(XLz||A9A) z3ekFLp(cOjX}wo!Y{K?a*c;qsFq|o5F&fRc_QSw_yv*9Q(t&;w%Ak-rqeH zcz;+~l$X(0OIQ6c^;(O(@q6gnUT~Y!aoxl<5_TU+&fnB^@Yl^8J)hbrTCn6hiefAb zpzX8%o*bVM&wBvTr3fqq$vEl5bg!dd*9Pav zF~x(jIj=_<3aOIRa!oi^lualoN99a%;4ggHbI#Ek&e;UWo%2FtT50vZCGM?7OhU@)Sy7Z@3#UXzbi($(E`nvdBU(}5z!X)^3)-o#ZL1g8L0VJQ()>eEfOFil*DLj)hzE=NB#Uk zVy!rOR@n5CN`h>|{d3p0IwzQfHoPU2cp2{HTeqZ&NvSWgzI@N{lq7rni&;7kFg&3& zH0J`8yyU^DF<-n$MDB2qow_t1Vg>7p1XP@tmUFZPg4OV@5UGEThzLn>q0#eF#nrLt zsbu5&JhP1*_bPVSz92TMMw&^imTSgw1&ukvE*YaCB}4{ktSJ>496^qlF=J?}L5D(G z^8!d-s>aC@xyfy?4-G=vt<}}Y?OWc2e#v2hVLk8Xeg+-1a~#)uo!&3Vf97Jj{yb}C zfDb$fK=z6X_-*3m;_6_hX=lr5bOX#F6B^J@U$KeAiBg_$v?XOEO5_5V zTB+CX5Q*K1#m1jI;eC4^UmeFz?BqT`2-$e#+r*??9AUh##pMZqKAZ?XAcb6p2tj7o zB3Y_fNNBmWdw>%wfMU{2OrRa=GGi=*sRx5tI99-))r3R8k2_*D2clMv1V-6vq-ChZTP9M|Le%QiOe@ZG0bKlgQ}kuPy2I4+ zE<#j@1iOQ&%%Nt29*IsZohWrGm|K&fXU zr@<++I|#qi#($iVrnw8nge&YRy@4%q-~@YJat`T3T~1B5qDx)ieeE6Op99*`B`dcN z5Nr$(j`a`Wey6-xT)ht0UAduY?9B0hjoo#hnOt+Fs+H-nA91rQ^PUHy8^t4$!Rpzh8>YCg32V7V^yJdn2;<_ynNo-(j&4q&MdNJapEe}8xSoIfqVf8M za@~>Lbj6GYEgq@&+{mIk{+_8u#2&M>$_Q(SEu>0Se$g8X2h8F9qFc7&wu!n^cU?GT zc*R~MEKEr!x=jdD-R6M6CyAZy)t{m8jWaGj2f>g%IjVw! z#xw)&o^C~$R9lWgDVmxLeE{}VX@oyu)B2+humjhU{Nem4YaB-TH{B?UM2%6!WiaiC z&>0ucF2A{PDfzspnC7+}k$zA!l37*#tGs?iS6=CFw^JDE_T;li<-q7R4syRZD@>M4tG-j zx9Q*O=ms7dKD+qecup&0-9LL_<;3A|arY4*ffe<2e|qTMxwhQz3-IXCu_onw*n1t? zcGT79n^+juVq+}#^RZslLOkD$JtLp2_1{d_3&GPd4RzzJ_rtl^7#3hdSR0D4PIHHB zP<|Hde8T>7#wr|Nwder{0tzMq0>T8$Sb)aee@#<>l^5Xpv^TP{Ww3TMv$$5baYR)^ zvyzUYg8NOkd{|DwQOMnn_{wbtzRoC*c+7DU8qO zvjI)jHQPyXA&^H|Oi%(62^I}&l*Iauoe#|b^lodr7+Ntn!C>}kd*i(~`(fKj|@M*?Cv)=}{a;D%wIBZ=B-b32NPJtA=`JDLiS{wovqr zqinyo6VbgP4iob3p`T&c2@&{&8)BYeU$6{{=`iwW(=sdV?zn3BZAx&$P&GOy@yDAI z>QF^yY1l1lRiKi2R(@^m)L(@k_dh{`rl4EP8Y7XFh>tM*ww_$>FinkSRLYS_^?oOR zPVc41Q+y^l5pRt|wy=|RnJ51)y~1@Ah*TXjawOrUJJQ_78b22_5)BImC4|qvjTAg( z2tt`02+j;g;?=zu2BZ!42xEE2`c)A0JH#3{8lV+wq?ehyKu$~*T&eK()&53i4RK0z~ zwg2~l$ z>MdKRPS;vk8+9nlF6-aTJIVKQ?q&V^I7^TJmTI2x_U7LWw@!pM~lK~^#?SFgYMeNw4RudtK<~f1lD%>Fnm+n7z2S5D?XYd@kG%}s;+KNugBlEO9=Lq7 z;(W3j{|6y8cK(7>kqukx6b!3VbKY*ckuQ3a&um@7ycZ81%?Vv{Q8;1gf4RKu3kut% zn>*jJC3AIa7WD{5C?A%b`9e;jd*`QB3jY#QBld^Aa-8 zFu!0=deYu|TK5uf{F6)l@lz*mPdof<3g@)9ca`U~pYuJlUifzVlC-p5nW?s!pQg;& zz3kkc>T7SB4ppx?x^2=Wqw301-?xuce^lL-I~e``^ZF@IJc5f)zq-~gSNG)N*4J{? zHIJ7qpI7(n=JR>=3yV)*n;ut}dVBTyy+5zrw!T-nJ^T5(e!F|0Pu{EjZU6Vp>BI3~ zWh|@Ke6P6wGXGr7@4Mgsrq^54KYX-)f9$Wn{r3MCl^P!4onn^}dxND-wMDrqO8l@{ zaO1=ekBdqVcZt1>UES7yK6>(`#G4x`tG`d+{CTce`PC8Ul{1CYzxi7Edk1Un-g@ZP z|KL>SR@GNld@p74ER@q*eil6S;w#y}zpRN(Dq}$-R^q>L$G1cF0p5&EBFv!SaSn!= zGtDE`1}&X971%;O1srn&bvt070Vu}65bX>c3{K4}i4UnPNG*;9wa(BDs8sWI_yJUU z4>*p@4bu&z8yJrPjexZA!A*N~jU8>=!I?lM7l9fDQ8YdWioolhIQjV76xEdr>1~z`3zt{fM*VXMwI3P{fEI$qm1F&|8&yfwm8VbFu#jLya85rV1SsD0IOfu$$np9j;nUe~hu0#(5 z^aCYf`WqNu+n{JhJ6;mq9Q1ioggG%qFmsS5QP8!cPrM+sdzC@8qfNu0n}9wMfiR(_ z9BKl}v;?|-^igAke*P+`e)KV9bR*FF-v}c(8nO1q(G5WF=pqbwfMNi)ZZEo7=zT|o zSvQ-|9fRmeqML%=)k2u^p&1$~C><|!{pjsMg#PY!q%4NoIt=h;1?C`7t`cNO1ZI!g HUJwrevm?m( literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetFavorite.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetFavorite.scala deleted file mode 100644 index ae31ddc6c..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetFavorite.scala +++ /dev/null @@ -1,53 +0,0 @@ -package com.twitter.frigate.pushservice.model - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.SocialContextAction -import com.twitter.frigate.common.base.SocialContextUserDetails -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.common.base.TweetFavoriteCandidate -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.model.candidate.CopyIds -import com.twitter.frigate.pushservice.model.ibis.TweetFavoriteCandidateIbis2Hydrator -import com.twitter.frigate.pushservice.model.ntab.TweetFavoriteNTabRequestHydrator -import com.twitter.frigate.pushservice.util.CandidateHydrationUtil.TweetWithSocialContextTraits -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.stitch.tweetypie.TweetyPie -import com.twitter.util.Future - -class TweetFavoritePushCandidate( - candidate: RawCandidate with TweetWithSocialContextTraits, - socialContextUserMap: Future[Map[Long, Option[User]]], - author: Future[Option[User]], - copyIds: CopyIds -)( - implicit stats: StatsReceiver, - pushModelScorer: PushMLModelScorer) - extends PushCandidate - with TweetFavoriteCandidate - with SocialContextUserDetails - with TweetAuthorDetails - with TweetFavoriteNTabRequestHydrator - with TweetFavoriteCandidateIbis2Hydrator { - override val statsReceiver: StatsReceiver = stats - override val weightedOpenOrNtabClickModelScorer: PushMLModelScorer = pushModelScorer - override val tweetId: Long = candidate.tweetId - override val socialContextActions: Seq[SocialContextAction] = - candidate.socialContextActions - - override val socialContextAllTypeActions: Seq[SocialContextAction] = - candidate.socialContextAllTypeActions - - override lazy val scUserMap: Future[Map[Long, Option[User]]] = socialContextUserMap - override lazy val tweetAuthor: Future[Option[User]] = author - override lazy val commonRecType: CommonRecommendationType = - candidate.commonRecType - override val target: PushTypes.Target = candidate.target - override lazy val tweetyPieResult: Option[TweetyPie.TweetyPieResult] = - candidate.tweetyPieResult - override val pushCopyId: Option[Int] = copyIds.pushCopyId - override val ntabCopyId: Option[Int] = copyIds.ntabCopyId - override val copyAggregationId: Option[String] = copyIds.aggregationId -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetRetweet.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/TweetRetweet.docx new file mode 100644 index 0000000000000000000000000000000000000000..39ea30c99a6fd0debbc021a57b05ca7d91024862 GIT binary patch literal 37361 zcmagFWmsIvwm*z(a1HM6?hb+A?ruRF2@Z`1cXxMp2<{FcxLc4waQA;_X3jY?=id9i zUp5a_wSKbJ?yB0mtCeISp)kR~z~I2r(zvy%REpw~z`?-AV8FmIK&`ss0Q=A8_MZ*a zJRHoO^_kr5Y@3qg6<0-2znr~bB{K_=c!{H6mG3yvI55QFNz`QA@MteFpU6Qx+)eO> zsm~~dz%a#Srrr4vt=0>6c{fw(ic6g6>t|{fkU^Gs7p&(qomz13Nyd@NEK2VZ&JDuU zwq|<2pXLH**{$v8Gei$Q6U)^JNYZ)$i>9uM(Lg623Wie=9D@$6DVX8T>mYYfQ#l%; z-lhMvH>TwJGU4k+_8{&jnfiU=v-aui&10zfODPeBz=RErMhGN zYHty;`w$`k_4^OI9wxVOP4*+0`m)GtRh);elDJpr`T4W#;sFzIX^F;(6{cl~#Fv_&x#LJv!!26uC_@^%yI zej_MfIMs#gRN6&jl1JHjx!)X*#L0Yaa)Wf2c_kElIwTAQY5YY7yzVcMpZ1NRS8(s& z`B&dbKX(@IxvU1{o60dH)9St?5f-9##~D9)JtCG=yq6H_eO@eC-xD6YBg=onls5oV z`bQN#sANU%LDk!U00Tn={WWwlw{>P_`hBg6pZo~Pit2YJBsoG^V&AMTQMha%aVTFX z)RQ`KT5J!LE?(*CRF=@!!tNzHINLR~SjZ^AU!pIz4b(Kzo)5@d?A6+&y=ZJVT!Tx7 z@9-yeSKA5FwoQ+?Ax9Q5r@G^^&>#__-@q8urENH!5v>-JFr>4SMlKC1OF+9u{7j?i z;=?!#fB{I!HFJiSRJHxEbql{2ZvHH7wu=3reMa3!&8VXz&?uUIw3i3%!&nXL+jX-5zhiRf; zEOjYoI!!T4K5(Nmx?E@fOi<_-L{%%$Z9W4^5E>{!W&l$qCxC-9vnjyI{P#_s6+f=f z&w?s>=PfxWuMu{I3MVN;2YwX(Q5w^KsqL17Q{Hwwn`?4&x6n=}m)@0VlYjWiL1>-3 zsRhzBI6jy-B<{@LEF4iA>vh!xd+jM(l8(13DX8zP=W+Iu%977?tS3Sl?;S#IHl$1j ztG?VqC?EMiJtxQ9mnqV$R+ZwsLorn}`Qc0Rlo;2ZQDY*;#KP??i_CDvf`~aBdva}{rYHn$?6Lv)IkdR z^Gve!bweguPb7N#5 z{T3rwWhKX+h2pyEjML$w^4aQV_;3>`>z#6;?FMp;9>V zB>1dGo#zvupsW$SKHt=v{Y1;Pw9~~Am?alECSq{7oPBpcfbavyv~WuV`0Yl@p(5*) zW)%!4yz#h!M76$5GxRd*B(_^ibU2rn6Y@ozCUW#Ud6Km;p!XUrN6UZBF}C%#p^QHk zS@sqg>XBb;=^0ysZbckchcGswISs?NZVYhsi<{?NLe(Xt7I^sOkEi{tT8u;yD}v>( zXcRtEGeVMe<;nwu2-A(=SpUbc#HDFdrA!bOT7Iy*9$pP7ly;WHkt@ZaWdei8rk#`tRDvHb$N zDJ+Tq{J^>aoXnU(pIR3?(Bky_&X`PF2kh{m_H3Tj)VgnLtb7q^w`HcQq$@uqwQGSZ zJCmnC=_JwC&7CV=@CU zv!L4|UC4;OgW(6p`k0Nbm=cV=ugo_HRG)nfozvd5@2l~yvC6=$M19M70SUuF=Z=UvX~+-$!(nM7f} zK~Zf}e=27D11V1V*a*Zg_c=c$B>K>pl@KmMD3R}z=TaT|YPq-k z^M&UrXL^5DHE#NsRG0QmBz%xa9ZD=8mu`EmN{lJ{j>02nXCWSwep7P-ZwkdZYc6fB z;)z0FO3)22HRf=2B6TGPhtqU6=t3VmKM)0uk|N%Idef=^_C9H?gCpeI_XlVAlD3`U z7P;K>%Dx+)a7)ui@_dy}aJ9lz%OAxu;3VD~KaYYgnTyvx24x^jsI9-MRU0`|!r!t~ zk`UT#Y57wJBl_>p@>fzpg$VkWkX>r|e{<}l3RYp2)Fan^Hy&#a?!s&0GRboB;8I9d zSMp_D6@JHz; zMC5XL6wu8|l(5yaDtzH7(e8*uF)Mfp&vsPa zhik7`Qq|PL%Y)-d14u8bj3YYH`~5e}P<$G*#CP~zgaWw+RrDRTeN>g) zA4gqT3J!j9Ja_6eh}{`P9c`DGTWis$5cr)oNXZ{1+Xn*cmN@q=emI&oo zwDXfdGUv^9vH_0MmT_!;Q3_nap(6v;OWJ{XasF^!YU94_Fxs30#W^F&O3~2|w?p8_ z;Sam#Jt)6ElA!aLoI^X6DV^*neWIA>qBiUe*5N`tl=h`R;#6q2u*jXmlVN>1D^q`# z+;~Iz=Ui#;hmXz%T13Y|^Cbaj5&dJX{BsNV_Zjog?O>v)Vjv6dm$O%dzTgDRV*7~q zzw)Wt>7;6kyo04y;%~+GHg(s{7{qt{ckj4-a;WWQCvR03Hu!Pr8$Sl{L_(lo&IT)) zqYGG~q#XA&NUMw5RFS~*)%J3AE(wUq&z#gHeX2b8m?-~@P}fE|P>(>-lxHu}hE*L^ zcqpYB|D~Q=2SQt7CO*|TBq#f`XFJ)&WOeIhXQj=S@Orv)@0LP?MnE4LRNd0Nkv=&m zrP0pW!MB@xGXmciSOWx$#(4tq;ywRodA%rfLnw{AOvrxrdn2o{U5f=%FbTJA@f2~k zqS{Q=ZOF?K_6SiP%KCKGAe-R#lQulo*E5L&o(k}vy*dVasDSNPZR{~?N&g{A~c6s*MU*Epre2O_S^ra*f zAy!vW*Z5c-U(er{jjcqxrT1(H(|9VGJiTfM z0AFyu`5*RA-E~g0lUHBtUrsZG7l#3_4>4~KPm5>KCBiMoyZZMJ>lf`Q^X*Ruvp;Xz zLqc|sJYMPrUhUq#ZUi#}SBMRgOU|eJ4?;go!JAdpZ@r z@P+_HW$ZpHz%|GQ0~ZS?mWk2@&;M0++Lg zy|nFJ7mdFt80V%;9@Pq;3TM4y3&}ZsxKP?24hg(BWL|v&iE`WY-8exRA3k|p_u={W zA}ls3c%r!h+9}(4@k#j-0fi`hseA|D5O3ROFHVo$#&@k79&kS*!MZO8nRe!!L}xsm zC*54SrxS9IUq=9)7(HKjJ;|>UDt2jIJi0tq)`TU*Vtj*{U%S@2+FL5elLlFR?b_FT zy7Y9>6Cb% z+u=LUH}Kk1gn=FrYVF?qCm5tPVX@b>D9}YAr|5jsAq^-YHPyl|wT3?0!ah8~%pL79 z=D|3=FRusv7QS#V*Xu8z)AgQffy*760)ka;XQv@4+^5;xipOt024_IQ>KyyUH;jR< zxZU^~2dfiA9H*TW}P zgVYEHY7b!nvueQnE%KxsnpTNDY6K!BP*X3xuyQQ`^xr;&a7$I(a?+ zX-A()H1r+K8;kT7?z^Zrp&^Y-WDz+}g3y^oh5E>v#IqV{%tvWu=~8r+MD~gxhCNJr zQd!2uk8tq{U%M-PHwl>UHO4xIF&8R3SThR1m2EF_T3*WVQgy-^UZ2*jI{B;51`3zM zYgyShWtOz;b`nqvxgbBnsbnBfLiHX@kG9D)z$+ z@=z5)Sm~f8LA2Yb%qozEQz55E4{(TY@gvFnq0b)^hgz83Q4zdF2>{pT8Pyd*Rk*}P z4NB;M9$^%_#EuP!?SL-K{oVNq)QSDCPN;1P0J!L148r|K=$}+jWz=WZr0)MkaHdQSYC-rzMREtUS>FGU_#dcP&&z7; zfE3WEzYBB42kB8k1$o76{J}_q$oO9p8A;%%JrLpkP(7F6)`Z&ed(^+13Z2Cpr(D~+ zFbuN!By{FUx`;Gfe9j)geYJgch!@(EdOjjZ`lnDQ#+J4=yLWB+wqfWl**OzPXwB_A zwl5El+rBbH3Nq;?Kc5Y*Ki#;r>Dv!_i9Yu)PPpcMT5`YAy&sy*so8d~`8hA7c(AuW zn!kM?wJEIMaw9<;ZNI~`ERv)bea0Dw_x9xQPMpzW+6a|lt&A{pb8wC1_7v#4l<9^v zxZ1_!JDekJckC2@(DrK}98k04Umb&5X6r*E(0BFV#Bk*Je&u|Ve__^+yPY}Z_#h5@ zdi;keH=^DKtGp|bS!ZA#-X@{KewcN9r)kOFF6+bFo{#bv!WrxHm5Z;p+gWP@1xnF| zb7<|t4WsHRA;s9&NX?}L>~`yV^2xT>-u1X4tQ3BBzv;pn<;^=Nl`qvY*z2FV`jK;yqF{QfC8F7;pBb2M;=Fa zA7@`tt$Wf2HXL0t?(LphRDUoDKX-K^eB_rK9NO9QmF2?z!0g10Z7JljszspRWyb&% zcyn_E=Bo!$GrL)}7Z~BSTRhL;+I)E>3Y=KogH!mx4pd5=p-Q1IiyFh2*Jhe)8N8uD zoK0W=S2QuJdd#F>w$$I#6DQ9cho|aq8+NYlpl^Gp>4c^?y8ksk>gUJiylOL-{v^z- zfo;C9z@HS+ehF*R8O=hb$4BfLSH7#~xoC@lQmI57M_*uhAKjIPWEqB$r#7YFw(=bP zwz!!V0eW)Xj_upr6B+_Qi?0l|K~l zenFIPW#Z`loF~Jr_o*@lk=CIaJkS{l)!S<9riiwfS-yQ+7Q@FIo|Vv;SEsme?7=fc z8)LGaqyz(P*yoGMX@B>b>YPu>kL=x3fuc>>^+7;c`L+iC{ZGdX%vs`=%`>vM*Yvse zX}8Dg;mg;{p+V2~7e^1^-D}d@!pY<8&*vit7UPcBR^hB$=I7~QXwO$Ll;sSMRv{?E z&Gwd*;TzHimAEHPqqU%d(o<(=WJ&pPs_~rL6lCd0{I4Bqr`alPvVnka)$>o!7~S38 z%6=D|I?w774~--bNPs7-T5S58c$nsoNVcT!myXi?@hg&L(`T7DOQOsa+THep#C}~J zWp@ZpX|mS32&lZTB|-*so<4s58QTkep<7TqJ*raFO-A7DmR*<+&^B$#NutUh8@~_c zogxaIaEhzc4>I3OUNzgFhe@zpv*tmj4hUe%=Wl6E=uxL^LDw13N7lq?lSf|UX5~|g zVOV>1a^@&zub@g+lQ{R$nr<{nA6yPQT4~_~Y#bxv{ybvSvKk7=-HTPse5+f=?siu+ zm?IZ0^*&a2NZu~><0ODtK-C+gNk?SU`0)^7Ej98;xG8@vhk&P>M)-zS)a9}>j?cMR zT0@70S!K@em%A~r7gOqv#yCi&QD5z1Cf8yg=Dz81(7*xEt%e0lJsQH;2qRj5OB{BRk=vmO8{`GbaLn(MQ zl8$F4t~7t)5LIKa)n1*U?}Dqn#bkzcVen?&!lf5-Rnka(+}qQ`TA@d_8stoPEly zW!k|1(m$?=zvdRnY#4IBVZ01kvO|b5#Pnl=-_}yiu|$EVo$BG@c@E2vS)x;P1381e zOaTu?ubM*Q8sS?l_EwU^T_ydG7iu6@(SqBRGVM|JZ57x2D00Wu43kGuR*gmxaa_&l zPTZKuT>J`87ESFB{xHzmVZaoAAN{e4N34FQ6j7tn*Cx5}WKCtYO}g2+-Kf2ods#-uNzZze zHJ);qu!Z7Pid%+V;o~HaDBEr!qJ^zxLt3F=NzrX4*|PHrw3l`3c7%K^_Nd35M@4n~ zu~PhimKKM}ilWQGR#hc=>+b#$t~M@0Ob@9k$_Q#b?2l&Kv(HQH&CHZ3dt{Nl)eK;i z^7M$0T8q(z53ucBxzC?eY!2U3pyNr&$f~%uk$O!rNG+2xR#!e6EjE?(h_0*lY%JNx zl_T2;;#%}t6xrwVrCAWv_wg47bSt}9V6y=h*P!Ch>MGMed>K)1 zA2o_+xGGJ*5{;xgGu0Es@)W11)+=KKOK+R4^5q!Lu?Hy4Cm_wtvQE6LqUN%4G~h0E|YE>l)?ye;lmYjHH^Tp6)8D}(OXyWEVB z?Z50m_&zzI%{OBIA%%qWrjePJi#V;=F-(LzB10vgekKh{GE1UnU>J)K5C*W*!n z?~V?a5$Ok?=>+IW=Vtp^|MS}W0th=~l}}gAlN>)Yz#l7Vrp$dGzdJ%+Z%;Bc4m@_Q z4EqN9Jm=*C6IK&3A!&uoX?W{`>M$u?^3gdm*FHW+Vkm@+r!)1|a5LkuuWAxk?-mxY zThMj?>YhqzFG0!Zu6}%Pu*(koz$5TRh>Iq)&0{mz(z=7cNeRQr%3@#q_~7vJtz>fB z9U;nV`tu;-&#Bw*5ciZ79Eod7%g`F5N$OSEvDpx=8FqH3ak3AZ%58et?XSA0kK$6q zC^(FQg-D~U$F4FOC)w(|Mo4EzU41b5L;)Ogrm43f-BlFugtBr;S7Fx0Okz7O^Fa>XC3!1o9K<9)46(_Ur=Ul@SXAp zR}Y`Yyp$XuY6z0QWkfr7_;Ke>UO?2tb;g;)ccwuq=xyFf$vK!$uy`md%Jv?y=M4YRvKd`wA{{T6c+fqoEL2n~40K<}N5l02j3;1~Gt{wisaF4`VzBdKp@8khfv+5J?pTGl?Y*s17@vY*`=lQ}t@! zD?-j~F%obgR48`YhVO9F5(Dr}T|jL3aSbDmkX=h9Q(jxVopPeWuLwzsPfqK} zX)kyq#*kFuX3K8{zqMN-j2x6<$>P-6O_eWeK=??tV4jPCE7GLwqYCPk8#Kx`i`Qo% z9PQnt%M=*67rduB(w~5>KEB4f`FI=gt$q33$Z=V)JdQE|6psDQN2>FW@Y27+=l&gj z_&Yq1NUXEmhwIw@JLILO^~N#2GP$DMvtFH$2 zgwZEzO3XDW8hAH-_*Q5~>L(!uZtRS)i>eXTO!*s`>J5w*kCC3VTfq?7O3ag_o~>$~ zr75-{X8cxjPc{AfVS%o@DY+zf^?hj~Oq?`m@7WixP+aCVl|E3CFu~HG^a9=Zqyh;v zGbV?ni_T6Bli${fH>Sm|Bnm3UBU$>fkAE?s5`7Iy`HYvPd_6h!Ev3iQ{pwlU`qBa5{3@;@{D zFhztE+f{DW7UNx@US3i+J+Jvlo-;dea6|)fxiVc6;dg#}r3S^Yl({mE5Q#tsfe=Ig zzG#jqC!C1t12^bvAzAkdb-|-w5(<(cd|v*2r2N8%IuZqBB+!Nly&}|+pFmUrk;LxJ z!>8G4o#j?&vH#|QqWBk&!mbPs_;$&K5?Za1^U)A93tcH34aidB_n)F_*DSnW+ayKw z`*f?0ln;6t)S%QDAdYZRFp<@u=FVTASl?S=d#_-FkGjS;C(w?xcAZ64lUt%h%Nfo$ z!bx|{(9O>-9URd^#7|r8IJ;nidxT&VgIx8)m%(Y(@)9ag{D;jr{J+?EUH(7WXhz)q zxi6>};~EY=mDE`4Kv8UdN;y8PP)<@Lh>V0# zpYh-35D1&(C3~WA1Sg{G?a`D{&NV7L;ex5Lz*lMi&ur3+KxLn~2Of|742aBV`(KL3 z67DBlox=rSCeBV#+$O}1ff4HVPU)z2U^+KH<4k(9r`#01&S-JH{dDe(kP5rC^0o1u zQklLELg6J7BUCd`N#&jT^A9=#tF8o^7n59)*U^es$F|4Ihgx4m<2j#BL`oVW{HPBG zj^u5~Lz;p2)FCxfca(^Q>9miWjc_q*x`uZe)t#ity}9D*>Y_oA?yRA}H1N!>g?E$y z8Y|9=iN3^IWW_HD@n#-koV;xeDkRAPBPv5z%SOF|mFPA*e$xJOgs8lJqmX1U0~$Y| z(F}hg80L-GQnMWgfVG+WH^55WrM1Nt;BOrc7~u&&>2o6&EQj6c)Ti$B9t&VY3InsW zd?9Pd8mX*_P2*i;@!B!Z z(SFDK6+BvjL245+0so^>I^l8!Wdv?7h8Ki31VVlfY z2Mf;J8DM~5M0KfRT$wNl%bBXPj^Bz=LovVkCxG$BV$gt_h%iVQpw^{U*W!jxxRNz6 zp~muSlX>k+|4k!#MY@i1@nW9LZ{N#;zkTidy{#FSEUYBYz-1gI(W#3F3 z#}2_?8rT#!4Kmc9(3FHRR7*}%>z$+pf1EZB+{n%CgsacVe-KwWI?AAmHCL^x zwB+`xf%g``lJ3G_FP)jaTmKNkqU`LRdSxT+9`f(sw$d>Z*C@C}57>~J8YbIihFDe3 z%Hf4wm#*7N`7*k2)!aua%SyZGDxImsqZgWO2ODKIG3j0O5`gLFR5Jh>4e4%l@NX{H z?>{5wufCivpy{dbT@XjyL0COWV?2!oYIc4{zD1Z2+34g z&S?^_G0;@Fls`vI=Wc-RnYEDx!Ce_WT@DV(vyc9>eyn%2Xe^JGprP zWos?PVk9d@1h&8ceF&wN2@eBWy+ez!Oh(>tH9yy%)ZZyFB9Q+N>Wi)c_>Qm~!wv7Y51mHvM^)v$==QVO3=IBmzeu$LI+`ik zkA*QJ$lXIVk!5QK9JI*Hw(a}lxlBu@YX?L+cYD!)@3M>Dw|LFH`-}Y6Wdua73i}6n z3o8dk1k?XPK4T=a^$?x1x#sj2d7qKYgNo)of@X^{=J&qO-(e3`+v1oz4GlIs{o4fZ z8`-}iWD&l7JskU(e{;XMliFDfRZ{rGpoJX%GYU|bIOMaGD@wP*t1(;PE8m$_b#&p@ zydTS8S-vp~rlWk)B&SH|;?}>a+0=<*SfBol^QQ2tV3`BCZHZ9wx<>HmfIDNXKm3hY z?VJ}WD&;X4CC1VOgYa=vlQ*G3oABi=U4RF_3HS32Q+i6&~mBciZt!4Q>KJ};X zs_Gx~HypwjfQIOkGCD5^Wa%*ZR#=9qWp`gl(-*+gslKg=0#9u!OrhYeuiM?CMLFab zo`=Ls_^i^+)-dE}LyO^;rqm|66=n-d%A>z_Y;#n-2+60P zo=_|^Bsjwn^(o!&L~h=DmqXsO{HSysUtxCTY`2V8zQRycVpfEssw1VmXhSyXlMd{s zbP;xmo`APxK88M5&+D&?mH+anb5}e%_&2aCuUWG{O#bAky6GDFI@`GNFO#ymN1a7s zf0_(Q`fZX2@wdrNyZ=9vJn}Z()9w2lRX~tQjAE-dKHKb8LZSj3EIj_`3}bUDM*`3r z<@&JIy`ANg1Mt>0YDUOw$)rY1X)G-rX{L~Q`u!HqLEN!hv#ZLFn})_t5AHzgZ_2z7 z;=S54sI$5gyt;6Za0p&YW~eU+o=dHRfo`Y(OgQNBbfFwlf6rOVKA2!X;%Uo3=$2p# zY(CJgV+%5r08Gp;6xmmpFdzpk9@#mO@3IQwa0@dz#ICtCzA}JV+EV@nr`7Jf-W_}cCgxm>^w+_y3G4Q+g~l{vlwL$sTGS4( zILIDER92D>FdT|7oFC9P(9ATPyFXbB{5;-mL*KUOXCF*r_Zciu8HjYMb9VHc3?~jE zo&)8AaKh#914eD9^5Bu#e~DJTf~knuS%W)~=#zl98Sdar(&)@1h)3`SO2-H@#vNc+ zxP6Fn%o(s(q?Sz- zkam3uXw2=}f-X84B^*Lzi6QOiF~DTGloEQ& zda?)7+DMf;x6GXe&a;dF9YUQB7J4gwj8&9G!a+@DK>5Vm#}6k8(606oy!L&+TY+J( zC4oXwNi)K`pu2&9(9ymTIYIl{*>I$JuNzzd6gEqj_4BJq)EZX3ENRiOa6avNGMB0) zmzm|9Znzxi%VBs2wOZ4;sYR#*>TSC=Foivk3n>eeQdJlyQ;VsQ|xqvXYEF2=^ixVaNt3+7ER0P$<39bo9`EU zELMv_ut^}}tG3llEO+$kd)E0B@Ezg`k*e#!t4~p8Vj9drcA_Riiex{;6lXlc%lV>l zgY3$tTQr{UN>!3}%W=ENf8{q1JwVjFtR+R>Z*T+8O25!=P|uf& zm@ISvaSu(KM+#XFW%-!rt>=U$KL&pC(rm$M72CqfY6{35yelL~u51%L=j0_4PW+B7y|3Sk~O%@qbNX5(~? zr`Cv2_mQ&k)3d~I()xiWr@djS;T5CB>hi$>jOum?#l9t2E9L&8BsuDpcwGed)k_by z;<4T7l}+ahN1u?eYqsVXtZ#d0r8g7WpfG z4zOkV$Hi>jmoGl&c0RKfq1nofv^Hx4oz4r;%G7oKqSrFEpWuSg@!u!snhhn(tB{%A z1t~N+@bpo^e&O0Xm!8uJhZ-1&Z6Odh$qvCoGY{~WLYf88WMxvLT~9P4wE6~msOP0u0!h=D+-h=6wb$S{m`yrcTcQq z3XlvXLasc7&ss38$XO7l6#9s&wsY(rR+Gf;_*wLEA65|S0k!ygZ4_e}HDYEObp!T7#ohhBCjT_KV%+QQ3ujQh}X((>iO?t!6FcXxAFL`%-+x_C|cA zbn63c00NMZ`M${sGo8tO^EtO9fVi(Po8N&3A5!gncJWC*?b37iS?!#?X)7cf^5zDD z?miDM0|8j9AUsBxdd)Ww?_J@-wb>a!Tpm+_^-OnrTAnj011Hv$rM+gT9^o#RH~abUT2Wtfd2>%$SH#s{!?)8Z^7rk1y|!AySTDGXdK&ic|i-S5o^-lClQa@ zRuGTM{RQmaTay$R^Dkhfub<7LaVCeru%54PfU3nE8$7~T&vK0Sc?Tjsoqhr$DW$h`>W$B}3+1kn6g#Ez6_pg0+6Yk0@`~_0&Pa(yc|&%_C2cpW%4~ zV6|57bWs2?NSZt-C8ix4M!n4E-XT{=FvqRVboW28uGP-PQ|AIN=3JJZhl>JohW=H| z|1~$R1rH`e+B9Q3$e{e@0$e(`KowR;0%KRN2oV?i>LR3sn2n-o?v_*3as}6drH*- z^u~VxNz7r*-Rl}Qn!9MipvO_qoUZ3$$3GsL2U$oie#<>)tM&YW4Qd!Z+6^t5zl*cQS{QLJ6~m{ zfs zX9ftJA^f)75p9M;Ff93SxZ!#ocTZ-Bc{UQ+yugPYlghw`BdX#N9SGK_(*C4B;P{Ka z#MDw?3mRm8f4ddX9s%CIKgjXl;k1y$yZ0~G*eC>4eh_%w9Y8k^NX!VsSQ$hu0a)qy z#3U&S#yp3j)3dhD_)*m&F4^QFw~bt^a=H&yTcWbXp697WlS;~XzRu}+bWtx#=Mf4{ zoSRX=G)z*TleJbC9?qz)vH{!n_2C8~&t}95L*}3!*40UR9C@%vrHAu87|#;Ni*eTjripNcbf5)&G$Hra?0gHi)-O~pp zMM+f5j&cP-Z*&Hrq>_@WERdVf;fY{vSA}(CRcA_8wYUG+s#l#7#c5=;W6Gxu85K84 z9TCjzRCD57zwA!r-gRDuPM=_DJ~&h?paF9R_*gjsr9lN+FOx>|l^T`9lB_1i0>aK7 zI+$7qClo3pwX|WimfdX`8E)}#E#4$d%+Y^xmaOR+=`$^kkKwVf)Ujn%`VWmg&v>(0 z0yxa%L+$F>m{X%He@QM?>QZV@O^=1Y*m+dG+t^Rmde25bep5XrCxV=qwD&k`0n?;i zhGVA%MvsA;q?I;RX^VNu=Gw`)s#NP-DM#WOmgJI{6!m;DVv&O~Vp||nDM!}1pO}$> z&XjU&ZjOYTs+Fd&AYy8seZ1-%hunVBP#=8Y!G593XlZ`*u6PMOb=YVt%Rj7_gdG?B znQ7VxDii;5;179RX5FT3bM(T>cK+nX=^g_RsGRGCOZj>U;IkzeTOJV9h;d(^6_JG znx7sG{kV(k)H^k}%*-xxi$wIN}sG>Q{AziDZ++-35%v%`QG6Oy2>1|yvn_>MKglEP~14<)FCup$hD zzt@aU+2u2ow!-YggsAlmVt~Z$I~~eQ(#Ai%fFnP81ag)<0NmSC*L4 z+tVEWN);3Y9j7gU7CMwGesf@(F-Y==HKE4!+RMd;nA%4?gWoi6j~NbMj*nY1?G)t3 zOcnbLCH9;52b}kusNO#7dZ-p~A%`%G>YIqwf;;w!_$prDW{vK}b$hS9gNQ%QZTnJF?_8BZuDS)0)B@316aoD0Tx4cN< zX;D>5F=$Iqu&q&O?+YHxgs{8L6i9*}bF|3|SwP>7TlACdFQ^y9i9w=7xY>SY!Jl42 ztkebpsr&_m^&3d{-#~W1f#!TCI)T!8ua*mNw2|v&<`Dw6II({q2vmUP7Dr}V3|i28 zKQa}XW%x8Hg!8P}AWS&gxp2(HTZE<%%p+k19pS=1d|*oXvlBMB6|i{e;YMNNxodTh zL)r)v>Q4u*Va17!N{w)+_yK|_3Pq&z6bf^j)k_6IacCuvq<=avLZO~Yd}+dUW)Gi{ z24!MUw?yeFtkaW-sWKGv*hlj-r;{X1Qgpo(UEH5V*m~#yb7~Vh6?Q2?n{v>H( zVQ%{Q&m;Uk`Y8oc^(RjcSWQQRirL9vq@&|LQ|J&w2IIRIX}9-66%}*(>DBQ^AL&{^ zr}#y3{Ln{Yq(_2IfT^@1?_=B8orjS_?_Ygi-95UVeA?ElxQ_2O-@S3&@7uQlmjtR8 zayEUh&J1?})SGK3w-GnHJ01-NU2pr-d#4$14`*+Wug7lfFFDiW>-v{ZH>d42H7I9i zIk%vr{TrRDf&z?&*zMh&l|;=M>-)2>0F;arw+zJ`4U};=L+;gKw<#kYp6BkxlYQg1 zRm!3Lh?}#B^_Q}?6eL3%=7^B1Hy4;dnaewCAFJKlXs()Z7pKcvi>LY}YF~R{>h2|= zht~_2)s;(~p^u(m&8=^--9w56(AW2^S>M;qdUti)r?C5hsm=ck=<6Y5*irWN*1e$Q zjrYxD+&N)5CnzJNC1uakx3$x4bc;bgdwC%~LGeI}j+p1F*3d8{dnGqy zb#U>AZ#B~8+UxGc2j=Nv{u+Bno-N$C#;|c_cY9L6l{dBaxlht@y6pi_<9M|jzzwKb zT+pztdTD)ivZB|9kyzo2QofyWwdTIswz^1{%S{P613q_b*y0f9B=CRqd}fmT@#6co zxUOF>AZSn2w^uT_dId}&;w4yptrsNZC*mU(cyoE?->AH6Z?D;8bVaF{uNi%ztm>{r z7Z;vbXrK3SvS?d6v233w^J3#8l${nX!eR4$s9m*0hOHQ$e`(LWSvMS2?`F>4+~l8{ zEPJTF{&8jU^5E^%_IkTXTz{9wd(F!F@CvMZx$Xb8(sy^pw(jsqzNj4Luc@)wiT!AQ z_tjmC(BACAs#|WM+3a4mV!8s8V`@qG?V_gT^8_~FN&c0|pusJUJB^6;-O+a2-6+}Z zb}J4g4ukMZqsM){_j9eHLPxi-mLl@&)39N4#Uz*Z+UBNWNl74aGIIs7Moi53&C}EN zL*LEpk>kT#cJi_BS#r$c?i)Vw{#)5#$mFW0uXnC2tl$|@fiO{W&CmQyy?TSf{%7aM zii2zF_Q*PMd_cu9BOwZ=95M3iTf_QxTfvx|AS2GtY9H>(CN9dxeHMHiz%ZrtFuAp* z#9XxE+*E357Q8aQ>Y(dwMhLk|gI%j?cFwv;^qD0$-0ssdQtmy_HITR~XT2vF)O5H7 zYQhCIvESYZdub88c0FuMzvJw#zMURlxv`V3%gnw_Yd6GR9XvSMx%tVo2hCl4l>Tsj z>p1N;D;|*XTDxhla;s}P?g(cq$y}otv2Lvih%(^;%4=_|Z?;qn>v$E!zf=wNF;7Q? z?9J|jjtX`@xjYOTl*i?8yAekdlmdI;J@-oH4@zG2`$C947#=Ahd(D58%-b6R@_yvC zGB_Yr8$zt(A--t|Rc{zf2@dwgd8hP6s{)2q>k^O=ru!okqZ|anYD_2yy|by`)8lWu z$A{IUwQPj0(P1$)8{Y5lXxTSUb5CcSl(bl$s+%)#A27S#6G_>x7)Cl&F`BmV=I92U zS)ibViH|{=&(CZ1Bp%f>7=>H-V6#X!C?VofXw^Yijxw&l>AZHWWWl%Gx1OsLeL^#(uJ->v#p0%z;x3E z%1W$O`-uj;X!hXsN--EkIeggP@=@bw3!yD1OzX!yiJmZyb^TyJ6oOtWwIv6yMZN~X zQ;B8|K6$SVu@Ktq=P5g&3l<{U$LQCOw~gIn9OZzxbv{zf z?U0(k0>L9UV-HRMW7PtN92f)wZ=Amm_?zcisYd8IU9t_(Fm%wc-`0?AoGN43P5 zbH0qij4k6gki*A}m>Sd5bVkWLNY_RU4^G2(GJd)N1gu^aG1C>3+eM|qfOnBLn?`R3 z&!-`Kds$#KY{_bP9jln%F7%*xF*%W{S`1 z*L%gmma3nl-vPSLpy$`sbfPKW)%0l7(-@D_3*zrDTh9#D!r>*bP{b?zzp&2Ea6;sF zJbBh}XL;WrM4AcZWML|p31w%Qc^%J*BN(}s_x}0>)j$rl|NLkPHlmmV>m1;{L>lXL zVTK!IPQvWpXozf;gZsss>Q>|dgZq^L+PAV}(NAY)}oa=e1HtbU5Z zz9mrpz&Fy%F9rNB*pJ~ragH5;1>5+cn& z_e!*Z-LAl;Gt|&d(f>!-J3v>qZQa7LZQHghwr$%^DyrDFZQHi(RBWf>s-%Lq>zsS< zyXX7gdw<(4D=n?<^wE2tYt238SbMJVS_gITZ81gz>a$b&K@@x#Dp!@%qY!x@sh8Bl zmOpSMBvfc$RNNA4Uf5F`{f12 z%Jhq3VoW7Ww}{iNy1)Xz+<@vGTNs+$Q$uOjklV_Gy!*km0RL%z*4z6bPmZU7!a(m~ z65mI|IJ}$lhR@5}Tbvkw*0Jw{_WRP|WaC@2fIbJFY$d~6`^FDWMm&0ZM2F{Pwv1S{ zyIzGckG&3G@0a$iT;qfiry&vh)Wilp3i|>A@r;_I(;4nl^^Ka`xrbTI7VtL;*bAd( z1#ZQjDZ(~xMb^vu{)7A5RvAaPaAZsgCd_+N_gTc#@Jl@-PP(hs>5@ukZ+vHm8ulEU zS$k7AC>11D`7h>p&eL39MrD5^3ke0cKS4Q7ARmAbuRtlePQ})#Fhf3hNCyeHTeh!a zC8lb(oslo9u!$Ytr{HyY|)7o6dI+!2^2` z8trnq!BdAX&m-o}UKe3>$f@zmj;rpgsQmV-$9a1#BjN_9Z5=L4bW=P3vwD0$0cME3viM;u((A zro_hv=k~;VUZ%7w7eth$nFg%3mK z5ceYK?7l~xlkL%?I^q1+?Yd!KYE!babD^lz*+8Zl#m(JuXW7WBi}v`_?N?A)^6Qku zniEyg;(Z1ee1Tkq_DU-XT(&}z?>%8m(YGQXD*u-k>MJ(h23$9?#Cn3WWYC}3)?-;a@~Z6Sq@w0z5Rc{(En@T@dXFfLa>PVNfUeVE+UZzo6XFrJ^I zKp)(z;0G$n8QfqJe(i8$<97UT`W|r3+H3DV(JC-&tCFID5Vqmy@>FtYJKlM(JcjSl zohIKXqVHL88RJ1XCF7yutJCqEBdN+cL;l>VhY#K$(tPbjR)?sk3-Yb*MFYy&Qo`fu_`k)amY_@YEB8UduOyMuv!f#)!m z&VIk^n0uxCAs;72o7W!R?d&PV!K?EJ?+$_&?+*PZkRLv)Y*@StG&dMPfu`BrdXU7v!oftFi7*;nY+EI+QgpM!7tKiX6Xg9XAaIX!@f) zoBRqng^|4D5n%-UKow92Naxi+o2QsJb0|xxuoEGk&oy@Vfa#g^$nk)YQuXkHXmeHrR3vKKq$(LE(u%<`ZlM(rF-Cp$ISQ>Fw?PrX#8 zeWx*sX|5&3Ss0c4x^w6<+s+xvHhho0IL{OBZoikECp25?Nu`yRA&Om3db4FwG*s@2 zg9ur_zPW^j9xYKrWL+OR>v&*Z#LG8~&S0BvW&0dtkqYrs=&0HRuN_xfon)6P)ugQO zV1GYG6uo{cU7V%cR`@_t4db7f>yv>_tOzSz6cVxV9oCIbD=86rV~vlt-Phk>fG-mwjLRktvT;WlylNsltJjHalgLXWAwbrnO6tzKLx*qd}|5o z8v;q^oBsk#H>|kZz7PiuiuKXDb@M|?Q5Ui~)!$KKwu=~^|9>kwBYOm*k@%HEbH z9~{_?oRu$XsJBYONiput%(Bb3HCpe@qP`pWQyr$oE~Xzk9F7iqJBlLexGiX1pi|}K zTeybxc5s6|=j?T{fTv>_XlbQtoW>3IG`M0xZDlRW2EqL-CD}LR+{$VYaNFYc=5+MF z+K~++!jhYM72EFFwS(TBC)@t z$phdPL%FwO${Ods*n>T?Q69e z(UH(L!Md~}{)D)J=QeFol4;K^FGbtq#)k@~s9-kCyhFyuF)^wI9|>)x}= zQ>Hb?n__L;t|SR;)+T$N&*(6AxfJ?O4>d8ydG42 zEmZvspHxeH?tI)?7P+3YLEffC-XT0DSA^#45@0NPP>~g#D%t*=r&X#(hcs`S2SdPm z7Y+G#^~}X2N+vD3dlsXl0vvh63MZjS?AZSX*jO^_}YO!O~p3=s}|jqUYp(4f}Zw`fci5 z4U9t#w1XUfSX(UIHvB12nZE0Ojn;XM5dszutb5TkV*Y5j2hu>DWAWweaoSXE*>T z?$=CMXs#s)^z6f3FGn$Sv(xslPXmjb3U2P;_%E<9srIx?9zAI}#E`gr>2A3)i#bif z%<~O3tx3!Al8i)jsF8B0@o)1XF#u5Xu(^jmbSn;W;M(VVDui{Ik#>N0>7VDGZ*7Ax zY=(oQcDVkrxnh!%=FU}jlWm5Y)Xy!#^O3rAM~K6ydOE-K=75tKCS#Q=(-FgY`OaYH z{j*;CJriN)_wTe3KaNd8b7-W+(KKki>}&O?tBEsLx-Xx}`r~iML-u*xc+~_NBg9r) zMi#x^3LT69JXmRHR zL^r{Mk`F?!Ka8n$1nIn|*9)`z^}19`g>sF7>+ykb`zdw@OHzDtFXYeNl2>wwt}Pfv z+$cpVc^kSN^dP{}5SGg(>3!l~?0!C7Q!^>kJY}gEiB{RJ%LC&jhb9(=CZn0XoOi-OF%VEiX6pPxBB|FytuL$8vkLFeZgkfMA9b%} zAQ7EEKoeilpEeAJLLvdeuXmz9R}Ba1pNE5EeqxIh;WWi`ogloH5C89wNWlLNdAV)@ z21!;Er*|q7~dR4+kP@BRuL90VCZ(8h|1OK@|bh zXUdwBu~v_R@eLHEVGdX=L5YBFW=s;7&G+ok1{;JBZA!kw77Pa>2H|A`zQHc?9;wu8 znzTWN%9!u4wL-^wS>p(X;$aElwn5fp4Pg$_Ngseh)_fb!2Ys$3&w)V(!paOFF3;sz zpqr&M?aQ15oDKgyG%MO*Kpjs+YxpF$o+4oU!eA7kPzQI*Kc(l7G2g)Muo)IRr{6HF z42<2Q*cj1CkT{9jJsffVCm(4MFk=c=1|4m1@sAdG;=ov0qh6$dFDh89?IGCFNC6{p za6E=Tv==Lofc*=wv5YUQ@Wl1G+W!og@BewgLWBzUfADQitl@SD!9{tQG7VWByJK6{A5;A1nQ(t((h-% zNrFM3lMrAUz8^yYL;iUK$b=uX2*1ZhhSKIXXLJU`9#S{Gn-rXR*t(n9dfVB0x+N#W zLS&%IANFny0(c027-W#*qN6aWC67g4y+tomkGGLTEa9f8(s!hFyb!&Q>7F!>MWYYM zuG46riwMV*W7hxVBY-?iG**>Ah9GY_r_D&(xKDwTw*4jj zT-@!e6?OZ%|HOIlG^G$RikX3tnsI`OV{*3X!-V5uTequZVSW3`-R(O)vokH{@m}No zu9WRjEk6;M_64SHw_87WE$_LW_Tr#q(w6-`{u2Oi_%baIC5DlOo{n{fk!^IoO*moD$4%Db9pGAeR!>IO?d#^x*P1#{yTMi? zKP9uMo{z-E9y5IbF<=9a_l+q_m|yZi1MQ|k_q3c;6>*{a_V(1Tcxc~q|^(1BB% z|1Wwj5RPH>2mYzY!4F%8v=#pHl1%&T>A~!-NOC9b>0ti|miuL>5uRE>!}_c8toxqO zU=Z08QOBLP2)~vL74RS|P^DIl5@-!__$iUk@55CeYX9V*u49dCQb`%iY>X{*R7|N= zNnni_248$2ReWPFf!V|zzp~%F*~OnUtCv?9%donoeO7X`j)!T!0Q+wc?v5#2B&E9qQN3aazq@jhGnlMX|ris!w zI^NuXlyl-8A7j}>SzU(7!_A+7Kr=!uA<(eMGo5<1#kGhq3bmeD!p)Iph%%pCLNHDI zzf=xGFHGyF3$q1TnxEdU0ZY0G4=(U7BF#)Arx9hYfWn#L6k;nHCR>hb7;F?&*TF5& zd1H&R{=sr`>CqQouu{39tCC(ILYjSzH1S;ks-ao^)3O7FqmqD7j0ES?JUx1@x zl4d)kRk%@1r3|wKh$#FE<6j~!1Vz~Xhybwqe~XA27HyL0(f?Zjb3XI}9Bns&`DPKz z1=7q_2=yOY?hJnT{;HH@cs-=>3)6T`fE?pXzhEhGCNQ{ogn4her91Uk0G~hcA=rpB zjY8In#iPr5$DYaGK&FW^BM#6Cv9bRa)?M;uSoga(b4c?kHzH(iU@9$Fw z0$JCHO{Pv#4ptdVpBwfqz1`yI6;yX^@%!eVBMJHongDSUHO30LtNIItxo!z61%&JQ@DVZpocZM7v6 zasv()KeImzbwXnX)o(@7kBKXm_pE~LIH6_~L)TE;84M{^+7U*t*=jsMQq-S)7V;GG z#0AEosv}w2zp^+ z4zRAi+3g=_2Gbkw?7I!}9Fiw$iIzOMID8Jk*4FYy@1A?uwbDVhN~Zn8NG5hT=kCg% zxGZxv5-|ko?^rIO5*y?3m-0Wttn_(~#uxlHFI$g9$&@6Sp-MK+snrm!Q9UW0ejflO zDo>%gVtq_!Aef!VLa`#5OE$VkHsOgl2Tmqh7vqHp4n@o>2Z+;k6rd+JUZTXT#|sq) zNEU%>zGJyHnc<`?H>Y2e1R)fJ-gQ>9Z}{-iuQW5kA=z*dEhlOYJ>0{Y&02)BBiTsa z%SE~1i!^FYCEAcpg=+pmZ4jrUuS0KcyfprUS{a*|!`ZW;=+SM4Q6_bSXuB9z z!{M=qal+ZP{a50YICZL(s38L@^m)#ZY_Mno*wIxx=~vkV{=-$tVyvLL3A6#i7+xxd z(5co$5}a7eIR-=wAO=~RW;HxTxFJy8U9TD$m*tP5W}qsJ zzJ}6gjk1wUj8I@>c*tOF6dNv@VeVw~1EN*IYT^oc%Dag+?3N#<6YSELLe=}CmY%aX z1tj|F^OLnv?8YJxfZ#D0hEFETGZ;3i(oDvcX$U;SIHA&pax0VeQS38_pu;!_P%UJu zj>{ZwR5n?{0MkU2HPo^%v6NfXQgw@{=!S9RgHt2fjgKj7@>BFMZH7bPjNylI==(3m z%CqQK%h3==RT=SJ!`Y+t+e&ww|2J72G@FlJy)Wt-0n&9u)E{j2dRgb$h5PV}ezt0- zKDS(7gSa4>Dhy-0nJdy%j%Fr?F^+4{)$c>E-dBTr_$$94zO+cV=#30kGSqNJ*J3ez{8A@DTHPGY_qCDoW%>_<58Gx9FFhWV4mqHva)iT`yRhnJ>X1 zsfCKx%;b#?O^^2{*=trs<7QT6p%j4!WMJ_k!24sFKDI0;Xh2 zMzH}DI8vwrk<6ON(peP%-+~?_;nt5(K612JS$Q8s(Ntf zF3Ksrs&JFZ)=CYOV(8FxFv?l^=;$X{<%J2V%+VHy8FOC-Z1W@k z%wII>Ya$aWVv$}{`H>q_lI6yGv!_Xk(=zr?Bvc~kDbo{*V&p+6s!9{NXli8jRFdds z^no-Nb7t_B=>v$^YO3ib`H|wvBc52HP24}hngVD5Gl5&BW=_l(1$64hh9DYq#v*Di z%s-i0-<29;pfb3w>aulg?wbn5{YB*0?) zv0$bvGU*uko=;UQXk8sNAjE>?wpYxx$BK0qJ}#NpI~Ot#kywa71X~0AF@-Boy<7 zb3NpscvDG7&>q8{Oi8^zqcF+{V;)CxYs;Ycwmk$B35|2qruO52+Q01E?KI-&oinfo zzRb9rI{cJ0$PMaMUJ9D-0uV3}E}?*oG7aq+%Ui}d-sH3^k~PtCGUaj%0+mf;!MRZR3djmu;E)?f09}N_zu;69G z5BPnEy@Wb6e9@vr&S|?8`>P27X__6!Bqz_8(7Yd2piLo4S24ju50UU@qneUj@s5)Z z=?LPWb*4&AFwsIJD>Z_b${BXx-_xW_Y3I9jceIT_3$3hQ-~pv3@6+#ZW`am2i$14p13l3dTrmqaO!?Gx?Y!9#OD zp?fcFe9^o~_Z?L=ov3K51qTCyRW1${AbQiJz*BToyFpBl(i}y#(-Is-zo*4Jie{!I zIu64_NpodG5be7bMn)x|#G;Nc^I{EOF#d6hLByfm1VCRhAb82;Rje%4fh_ypl=@F0cOz=DydR6qc^|5o zAq7?<|67JG7s$-i@gOn>Q6_BI91vNyys8GP(qP2kdR*DoJ2=3sS+g_vuhYc)K-BS$ zUI@947=Wk6&q30~J6=^dNM*r>rA1H4aJ~8D5n;+d{2i90LPRS8?XR#r8HW`=Qs`)W z1DGX~mC-HrDxE6@f3t)rgJ-5yMbX#_Hp9{60ZVe_lzUkh2BS(eXrPps{(pVu^%%6o zX%s<|NcZI|VHs+VqCdX-$}g#Z~IfVb@9^p8Y|?!21$! zgL7(0a8otA+lz3HD%65R65F^Jztah@FaDH4kA!7ScKHa1s<^S%J?3y_8{f^-g#Gs) zW6$DA=N)||9$yAg^QSZSEgvGr3cl?t z4`bg!4ih5z<+BC;3Ie_hqe9q@e<#MTD(5>u+_MN5XqK%#30mkk`MrxE5LdYv&SZh? z*Pq>DF-!8{|0@WdOY9B!4swY(@)sb=$JY9tEuTr+57UnAZ~;IdfxiRsMWoK&L7M6c z1Ku0PJ51P#<9Ay`HLan?#kl;kNE|NUpGW**2-cAaA;e^C5kf8r6!i=A05QGEeMajK zw|d~RZ~>wZLmqKtKcJF%LSfh;$595|VdpNu-?hkoOeVe+V}yJGzeG5={QvytpLfrf z{1U+mOR^l)E&nnq9P;XHRNHOH zk=G=^fPeQ;P7?#=f^i2qt>t|}_lMZJzses;O!!3r*~({ipG+_k$h^U$|J33W@GB_p zKS~yUi2#aTQu$nSw*bKcB5wmw&ggM}mT-OFd9)I6y2l z0mxB=c}GGxX-ZV^(6r|~K!@))#az_DLblqNoU*_L-CfcIMx zu>_M+K;YTnH$^hf5&XVw_Rw97*G|1P8-J|B7qhc$LWBVZM#K893~LR)&-Co9lrI>_ z4_+3a20T=5P~XpFjU}$t_v=x4r+!p`zc2o)8~q;DkW%Zg((}Otlc7d+Xce3Wc5Ne_ zWA%0z{#?wrXYVw}RP4ibD~pXMiM!++Ft8ivxvgW4dZ4fl8Bpl7jobiL*Gzo*vW{ z*&mp)zhU&`%U+bH@c;auPWFiv5?B$n%TC9}elP$UTi%7x-I(z{454eVVd{ItKHJxI zD}vuDV>u81XRt5wW!#qwgI1wSwjoQ?DvFr@qO%dPy^bHd{=>(!ItNSMB`oJe=}K;l z)t9N?>ZW#S3j$-0?W+~hKHDa1e5AaKRKWvoSw{Xi_a7wu>Npe+gxTD4jbq34_=USxC1vkIBXbImwrX1Qg0N~iS$ zh{2V0F!J8HUd2F~(Sl^3_;SxAT+TsWX+ogFIc9cUvb6<(bIs`CNOH|Q!xfh=`Dj84 z^x(^q!%}Zr@Ef>(?Umj(nJwMrm^ERzJzdgwQi&f|HOK&$ze`*WY1S%}r#hN3mfiAs zFspHKWp-IqY11EoUcs%aE|yS^eRA(0;dItEfyob~8PZ;Veln+(r$Dt1qOo?xgEH&fL zw_|6gdj_V@8Xvnibu_Vri%DZKr{KnZEY-xpkS{7yFi*YCH7aLhB-b)j zD5LVz@{|xQ!4B#o^a0w&dD;ilJum4w3z%LJRtR*v2wGT+gZzH{TZP7p5GVN=<3hDL z3bWck;r1(J>C>mkbF3RhS<`??T6`-G?06XNxVX4mH^W(2$qZpqYJV`7nv$euii+}2 zNJ>CR?(;Nf6oo=2nkoyAE@)xy0B4Y6Q8)*48p^{4*01Y7;8|^mg}6JiIn=nR;jD~$ zxC!l*xUE246y=YI)+V19Ap~7%DHo{H!LGnW=|atdoKZ%b?xNp4sV)=pv(pQ*lb5mR zROG3o;f1-WbuF`Nr-ir^ zf^>PoA^%u$O!i31xmUqw8RyJ`2$N#1Z~_1~VE~7Rc_^<^WG*GVrjYx$uH<>BV0Mrju?Yec$e4UuoB+;ibWt1;kS?-# zL9rno7aL4Up^f@Z@2owvNJCilL6@>M~rqI_pz zHrU5FVLkMhCKRH7vcO150yuLl`X6VUQ6LL2>s<;Ou~OkDrSPULSX-S3y~wC2?WidQ zYTSS0bR0QGbc!a*Wy3@StCIvwSxZ%@n5>JYbn&>t-3gW^@VabdePR8!=3}4xRm&q3 z@3>d0P{Rl4y4U<%@nJQgRfuWNiN;fmLb)w)r<_bJWKQWt{ukgDNk>k*Dmks2FT3xr zxSs*KACSsM1=%5ROET0|Sb?b+3}E!vCTiSBDu2K9#D!$pk^bDmOiWH_RbFBW7r%@D zOvofJb89JVJW4K9L>sr-7mi=z$G8FJ2LJ1|Vup643d$XG5S-g+0BmSS#Sy=>4jsg_ z=T~e#VWr0%OUGSOJ_78l-HvqB9M^&@C@&_?qJ>!)AvjBgI$^bs?R@k|;etC(JzkNh z6t9ARv>aFHINVdPE+}85#RsaO|jcJDxAxA z@?aN#a#=u&`6_RVDs6&R%!|$z%b%AdOXc+A!eRz;K8J8hQ_k1ta6=@$@EKbyKzwCu zN3Ai7`}0j{UiVkvF8vmX^YPK z95L}CLzL(aLOi;~c=_g3G5IfRUpJz&GHR;k=o(`HI3zI8M zNOX;ibjmyvLDzIFw?p-0S$O{;RLq<0q4L~CI;{)z%{;;GG3EIuiNrpYahiwWf2qR` z{G(0;>3^%Ug#)PLg6i>qzd-*FnCa20OM+|J-$3>l*pLq!(Q+OCCdEQ`fA5!+^Y-~a zS`rosh#T~Q0s);u|5pPq7c*B^D|?H-_F1*4Z##eILhIcvGi={Chi-L}J)}M-tKX5M zumwCM0I2aBkliC^B3yyOF6n0EM5=lE^%eU4%WPk-%kY>2V>Y~dK75KXKMZ5w0+1** zEe*%R!djW_n-LpRYIr0QwIM%`KlZoIkLyEzc0+pW3}7!LisNIS_7?S$qzLM^{)mov z7_dN_3hstq6`ZK@k1jQ%B}b8(+KS@WMkwGyELU6OFZHV=*SgW%^et@8b~#csYc|@# zKM(02xt(;9O6Y75204%^aj;H^LN=7mx;Z}#dWhSfJO5PHsKYod zK7~t8CC3WF9L`XPkK}iJ3o2S$$HeNQZEy-XF`CbQordS7Ou+EU521K<%m!y%>WYca zM1wmKnKt)`iGHOZC%jt17di#U%2MLZ<^qaJxZFa4g~A1o=JrC6fdI?7UW%c>%Qz;F zkps6;X8kQ1xg~wPJzJO`GDW{o+??+sCjHnNKWIJCtxx`$>K;J1vOc^z7?00qy{@z_ zu(-I2qb&iSvR%Ou|9&Tk(AX*=xf2V`gAr`f;85O|h~5rjEjQN}SD=8h`7BQqp;BW7 zu24JC@r7x;el*)R2v=!)ZB+Sj9j>3z^j05)NcU(?GO8>n5H9>O<0UVU9W#}=QeD-i z;)iHR(o59<#n@UDZ6nLat(f$sTF@Rx?o26u1KxMi0XF%;BeF!W30Ef=XvQEdA8(k5 z+Qjpfdo-4q#H$Na2u{xZ`yr{UJd2)o_(U@P5Ywn5>rA(vbDlw!w%-IT0^FJK9ySd` z-Sf$C>h`?y+2RFx4i&c^!0n8CSQD3nL5EJTSn^m?j=Eovn(rfVT7unN%xMcbdv@hT z@{$j%+x?!@NE8G=E6i%NUF#yO&kxlGxo+qx>JgK@J1U~KbfC8!B^2o^=Xkdt0lR+r zTO|9;;Rq#%w#6}rf7#rGLk_RwicI+YLd4z`aCf!f`C1)_fyWU#9(3@g5%nJ2L*h}eV3HbjP{HGh;_Z>*0^B? zou3l4$Z})?R^J+FCi_7?i{1NoOzlv1qt|5tN$Rin+tK!n2*2Zl9YCGJ?*WwY_4K%q zK1wMlN_JnywB#9(T4Ic9x_X8cg_VgDj0mBCOZ|dr6T0Er=vQ9QcftYN_J8fOT-ycy zXIrE*?PC=nKnto?z|WuNvVXOp`f6sZ@?RHx%>01$5EC5Gym#;5QKHJBX*9ENA`2FN zSF%tmq9YzTa|>WI)XeKoRxJ*!u15;ubK;5}Kb#qcJ*k2}`|VjE)DQBnmQ4wNgl(IQ zQbF-T#b9J!!6aXA7VB4nzaj{S#|)DgSFkinogx7ql{|qRosWmVu8FsRi)?&BX&)?* zvn^lfL{hGAgZPj26?IkqSQTh z<}e3k=9h8*L1>!%D9IJdN6=)~tnAcHw>o~7jIGrpkI{3+&Sn+7$YDh1t7sWBwRsof z@Zv84m($*l>gEIw4_QKtVe@giX?G9)Pse_9=ew8yx{>~d0Rlq#w`1mj=DVs!#a14H~QmSBvo3rv~5xg8ZymjX!8^Tt~U@WUOmQU!nI(>;_q2r+c>7{da15Q zyLhi_+G#T2Kqzci5lK*D?$5awmPR5vyZE(-7v6yir3q;Fp%voO|m1$jg!Op|QT1Ns;vXC)R5J?U;N5}0A zG}UKkGdZ};OFw)^AxNZ4RHK_Y3(f;t$5|PyZ_OQHCc$HeH73K zx{C$~2>suuq^qTwof+d_N9MmeoN3EBY;s`r{?tI~JX(I;bc^g1yIQ|qErmyE6NzgU z)v={gB04AQg}-*{_cz+EAA-4R9jdPpguPmP&$P#HML09SqTYz4QgS{Sk^4>#IY#or z=hJ7Pe7kZPMgaUf+)4KRS^HSo6P{?d6ybU7y2U%_V`LR)59AerY+2&Eh5Eo|txm5U zrVa|z6H2muuCBlJ7zSCFI;EXHjJQt}^k}LB*^B_~J|RX1AqX;Ym9)gVV~frc={Lr0 zLD=`z?FFb!C^)ndw`&j}mk)vj!rnb=I=mL>&6c5@BuUy#L=7(Qloyp>(`DT(;K-7P~0-=UYp}XkXBte5)3vq~bwF*uWEAr(&G9C6iK0Qx%$a&RuaX zDKfP~OLG;LXgDu%)llWWh%8an%UKj{+GSeeU}u{1%YEK^HQ5(iQCR8*zW4Z`ptqb0 zE)k(H6&{&0%g8h~D=*X)ElXy*JCVeeGh&z)LJ}&krd>8~L!+%j8sp?6HwaIB8tT^Fnm z`rQfTI+jpPNOmxPr+3KH?qV5V*Ut=_>OrK z#ya8c%%0`cEticEl4Gf%?Z;j?#!O7apQeEs>LP7TD69#qq3S?fu$ zxfqiSBGOG~tKa4eiXDgKn(IVNJB5|op-D0^?fWDA^&8aZNu|c^sJ4W~+{>m{@y0^n zN|{N}9`S}fiGML?hs1BjFOr!i-MHzUfsc3@?aBr6A9%B< z5UrOMYVuc})_bMKhI|}^cg7`XHVSVKnXKVOTbmEUxS%Wbgvw4p6%M;s5}SKvU3^^^ zQ15#%?ULEFO?j7ZO<3FIfA8nn4sA9vYApM`DJk&Jr-^{oPZ6 z_lK25c^Q4Rbkz@2ueHbK73O-NKNkUpjlpCr7RJ@zPGASiojBkjFUc0_d5D@ZE%hp zQ#>e}^Lmt_kSa+n*Mwt5*@S{}RL&#^{=%0%=Nzr!oK1k-IWIJ(l~(Ut;@(fV4y?!cH}B2hU-C4P;1LhIR~BLP`+Kv5x#`)6G#W4Mh$Xe!)~kXz~X}S z75LcC1pD7^E`?>FHMZKRHqY6$sEZKMQF7zk;as{YtqgbYrIj2PljKz`YE~=S%i1YF z)uPTOkoGOvgj<=!J&kEv+}KQLx?D++Hr;YSnaEIEK}*~&lz4d3r$DvbKKe}qD&|?FE~z$S2gNg<9}x;Ys}ufd9>rK z!XKAlr!;}m(U->ptK@2?pA42U>w?v_{h86dl&+er4%C=V4GJXuek&mIyJD0(jq+g5 zR^~`e_G*vWP?N)GpC!0;WP0b*eocDCBOeNO-8M-!Wcs_X78O&vMffu^cDeD6s(qtB zuY>$XXVtz72nT!h+UkD$XI~G>>h5ucqDp~pV%VP7f*Oqzl8ykqox;I%o?@|=Y?~S` zxY$h}!3ijpZa)8!Ck$&A5p7W~PaWb}>@+Wuftr6c1*T5ZA^{>oNsP8u&GL?Q)XyIz z){3KNg-tK1B*-@0KX+}bbAm}|!&^d$m*HN%bxW$4l=>p;%l8aVNwUYkn5FXo!xKtF zb1p#1OCFpW^Tmrq#Q)8a*#nTpgR9 zN;a;~Guzm4uVRPo3u3csq?yEOxn>+!(3m6ak}(=mLS&G}no^O$5#)#&GlsSrbSR`X zFM#BwYMd;Qo7@Kb&>*DUT3wCYzU58mmmC%t*7JVuXV5`A$8o*a>HUKIXD*iO&$Ctr z_`rhzWUr`z-zIJ@t`2sZcD9UGu4ZiLoEcC(RB@d?lyTyT{}#csdMnk#{ba8KY6^;1JFYW&_(bM zU4M6n{g1l8TEoW7H30H+B#6Bp1>$DQN;3kPTr+;;Q($*6wfkrM6FKEwBk$`z{RgOMPCN2J4`L_ zB1DBqusfK_9BL-$k?7RYiBhM6xiuL~a@`tlj4kG~IzJX)`iQ$IRq(_~AB=2^u?V1d z8k{n_gYY|T{Kpw-n!8X;xWb;&8`vTTPO#S{=a4?s<&*%;p1^UiyxYi%@PCy0@*#mamLKu*;cp3bStT(J*OAM@sK|5M2^5rzw2%k2F*4DO0tO) z7DcsQw~X&NH0civz^+o~H#JVDOfx0nOP9rYmW`V;nRInFy8}I~JO!l|`aUOQqGtKm zYoCyv+M|e?ossZQgzm^ovPZ*Td^^nEY>j1;kiQ;MNq+s0Ra*RfScDCrCKCb3?*6mp zuy?aFHgg74W&Y}_uDNZ0z=hSbTPBzwuG@iELjIf5-LaJ2d7rn7?z#QH$x@9YFo2WZ=*M(Dt zSL{W?!jyEP+k_z1Z61j`Q79gOQ)m*fX(%pSjjpQKD-AfQtQ0Vls`Xn+NM%f4IzI?U z6^Mq*L{1a45;#yBv(V0AgqH_$%W!gWU#up}fpd~eU56@gbSe1n&OT=Nd$Z#~GgA9y z1W`@U)>(kfg2!4$!Z=AmJFL;sa)0~vJX6e#{&ib^QviIILV{x}_Bx_RUAGeT4MAgn z;e2(`eT2`!un++$Mnb`66kHccEkU`vEKl-MzlE}0vc$jPt+S+u^Q*#C!?7tf-G~hO zrVvYO;T3DTc5CcBeZnu;@5J}cl8PBcm=si5vrA-hlGxc^{TT}1IOF1T5DeLqqbew9 zOf%r_=~jeEwdEL;qN&Ny2Vh^7M)(6Ztv~7jJ8&(@AI^`m#$l9y(~Yu7)EHG<2GfoR zopJH(@|zo%lFy5ZX>QvQ>0Ev|cnW3Y-feE&Z+H}*GLAq{G+4xpmLLEZu18A3m~!r3urj4@Pc^N!SIT4UaS+<3XMX>t=T=rw<0FNFWYf{dKz1N{_ zM_qlsiG^V;HpX&4AL~^u#PiMAGxEt=|IKv05Ih~zP&dwcKb(t=VF5OTwV?>>G%6Zdm}4b25Uz%i)(coM^rU5 z{w{A$YP%UEDta`?!7i5mVtQd(5Du&FrO6z{^mR_5Qb}^CnG{A}mr~_(5?+Cx!uWhX z8_-l;vz-(d0(q3h1SKGmV9~HfNv!YK`OpkN@3yv!p%sG@3}&ykH{N@*AGTfQxV=y9 z3&#o#hUV{4yrG%kK+Qaa9-Dio>|1IbxvHeE&^cUz&e}Q#_knCcEa4^#o0g5WJ8e6p zc46tF1KGwy+0t}iFuC#2{e!IcJDtvS?BR3J2B* zljBtAfq`dVvn(0$jK?n#p`^}thQCD>F(XCPaYFoXttjvUHb$t~rcC8F=^nanR3ps` z_wmzgRs3ywBp`-k9Tl$tZW!h{lBlgVx3hUsr4`7B+A+qsX=D7nYN%(H!jpDw3q|iZ z%JzFZ5#1Z&Fd^?A`Wc3u5P?s)A?6wO1rUWMpRikqff4nK7 z4pn59hTWo81uB_m<=56u{Z;sJ{}Uu=3c9tdF%nsc_z1&q>&fK~)6{52r5u@5?|1U& z^j>;A#b=Te@zzLW3p-htdGhblD_lo`NYybTM-pDTBh78B@pC~V(Xe1pLiqgKNWoKv zAe700;LLC&Ufp|PK-yrBFqU_$Uj;$GL#%P50a~F(dYQQk^<_45*{`V>UN8LX5 z`FsDIY-zGTIRD6M@h*ey4U+k=pff+QHWIc2`;_m4vT-!MpCfUqyy` z%hsvWwHDS!9m=xH`gikA^1YmUS^qxH(&N9SnkT%y`FF$ZlW!l{u?ugX{rZ{RlW)M< z`@QPk)za_#8_U;UkzPNoitY7Q2FB*22Dc0j2INR&&q!I}al|-9vWPdeP4k7M?T34l zu6wUL%76NUu>(w$T4brBJ|sI_qK+2Pj@(_Ulx7c zbzsTtRoYjczB;AZ|9tuErhQH|x7OV%eJ35Fpt5q(>pAP*SnUdb`9|%idL!_jVk6s( zwF^IFU5tM}*|#$7b55{e-71#JwlC%xo_)f_;?w1A)Y+uc;oFqXcH#YkDwp^Yt^4L` zpB)aV>9frE%{?!YU3lA5!G`Oq4Qpm{M)S?27{XiF5j#; zpX|o}K}e0Azu;74!`3L{ zFW8fwwD+FYy~G>;GzTLhgEv;8(s%_?{DRXu& zJGZC$+MA|B)oYG!n{>&jy0X;w?IYD6Rd?kMM!)~Oe##S%;NsJ-uC>e6J-N8`wOn=0 z<7La|)jhlUd|v&+;?vir$JM3YUcG+r&uh1>?^SNke!i~X?%wB<_iBIJ|9x}%aQs&p z%c?csEAGF{KUeen?)Sgx^%nIHAFbaX`|EGN{r^R!h6i}3*k#1tU};lrQLc&-KWrA< zIPt^dqSC`%VlQJ?xAmWoo;)e>=7!4Z?-MwGo-0;YhshiSkQ=-_;1|t?T~$dHzSh>GiZ36gJI@O z^N6)UOD9eRwop$2$J{{O4j5hb(;i)8M;mu=CQ!*mphiIyjn9E1@VX~CzX&`MjjsL6?c3t7 zf!cFe7#IXlwATYg;Mx-l3b46)S5oD}zd&{A^5~Y&00snj<^X6!X)e(3*tF+0NDCPO zEk6x3LI%b1Bfu~KYlrw8*$}Lu(7Rg9x?7)tAug1afgi;r174^}#U+(Fso?2K^e{j_ zP!guUf$@b6ie|LqCDF}6pC?6_6Ilc^2Wb)oT|4^33qrel8B{ykGz_{4=o1kL6DrH0 zCZJ49pzB8;HAd*?senCeSqllRk49!TnUe6KqRl+5GaKsuTRGJ_;RN0UhVEuku=c8=_5Wo+cUFV%qSpOW+=7`(lXUq2+UjR)83-HXzVarhf9I) z3?TDR-woEWOOL#vKoPZ|zT>vkBo$`Z#2nJ2YdD=1s}`3uqPLepDGe@5M88J-M62cM z%QOdo0Z7X?b48R?wSBj9kGL0U{v>1UFM1T`h_05VXwHVqTZkg-gn2C?dpHwQ9@mzM z)Bf0@{86vsg84^~gp!(}2jw-)R42wDuT`U9$!zQ1`vWFQiYYCxX-n75AQeBy8RB28 zb*X2%O|i?qaAUK2+-LtxP}pZgHEYmqJ_||^Iw(Qr05fH0fTIhG8Nk`%_f4LaFrhfW ziY9gEBQ>v}8GeNZCnZY{eiZRR1}k8>?Us{E!EPd(dunU1&|Wu}!HsxJVC2eCc!Q^@ z1=1`eA%r9}{w%;e0#OJ1bmCu@@3AF7L$fWyNbUyp5*pCUT8fFm zGSN%(z{67pP2{Hyq2`t=;DelZ?4aE6t96xje{AZp;jc9#uYIa*e>A&f^8*s;A_xC^ zKV+lJYKZ_N25@ zG%yctUC(V3Fj!PKGC#k&&g4SnFY?K}m7^B(rFnvvCe;L(xsiu5;x1$r3ZIp9cYR^a zmXRcjRU(!NCEG6Zjj?+w|3`!0+xypd%Y+Q~JQq-SM^-3?baUNQZ}JAy$qQmwM;9fAnNO=IqMME0#T|-{K3|_LM5TVY z)!h%CCo4BCZ+=l>Rf?#9e5v_Z;aNH(#Pxpf=13dUmkE~8K4dbGtxa{0I*UnFRw#=cP`+n50QuF-R}1J<45T5lW51maNS zZc(5f1;m%1aU|(iC17=l;u4$FF#YPr0aw3xc##sTE+MtSBQC!`9c0yFCW%@TuC$|5 z`cBUZOVv%(R(#lHt|Swx9;Ts8A$l?;Az(10JJmWolvvU=P}GaY&f&sGcca<~0k(nf z18AU=Y=!WY-@EDVlH7g7e?eouuxC5mesC2+JaUKO1-3T86Q`cQ+r5lMO%MmP+HIvK z3r}fnQ3`}+;%a!?DaEG_uE~lNDZTIN%wTzDAwGxCc(@{XTe$f}^3NM%HjHkh1riL* z1GFgpeqh}J&gLwjr`FXTv^f2~Gp4ll0BhV>z_S|CXI7eC@-fAOVw>;zjywIR_R+1r z_@DiYX~Ux>F(~bqh;FysWeh4wBM%4NFhyiKv(9`3c~rZ-?g~a{6X>U)V%vpSevprc zhrLrOIBlufYnWjE26KgX7&uqjQQZFIaDQZjJsil0FpdlXRXvbQsY1gc{kgkFRvNLg zD-fNkQ6}oWo@o!sHN;ZF2efjoQUa6i!FIJiY*U^_h{X04)Ihl(9Gk}L zR+N#*hZdfx+ztqa3|S%e8zHX*zn9Vvr3{{D?yX2z!+~CKlqPXv~qFhK$Ws zOyQa}y5c9|^;i$eY3s9B*i!+u+x%wEW-TT8edd}$b{mei4Gb$C%QHVounhZbAzKk& zTCwOa6CT_K4QqqmGfGm_A%=AD+ftuw>j_P9+V2%Vt=tx1AhwB_J>@Cf+Xq31Y_n-6 z$FAzlJ;kS4Xp2K&Q)U+G(+bW6plcJZg#ALwh0rTutd@@%-4=UzWFY0m0nJTc7=dGw@#sqtApf%Gs?@W5h(nj z=?y9^ftjID`9Nf)Uz@D8g_ZG6*gz@ZNoMp0C`nSHzVM-EvPaGII^K25J$B*Em8s0F zYStw4hL(65EqWL5)w^1TOj|6a#SAdmBAR^{i48FtdVZ@p|*0p)TVeOG(R+cV8@;UpM$Ps+6n(SuUKfyPglWiW~u|RaN2i=mS ze!ZQ5&Z%863l6@B+_Z%q{x)gXF1iqAIyYneEq#hMhOX9g!~HxQt$0BJci5G|Rq{K& zGy}~Fmjf@(_X5+pq0hGcNqw@ouG6q$7P;T>t95`;j~Q>1pWh(<`II~O6JW4|rvC}h z^iTM&r~J>&%io{%KQ}T-VoE`*c%RQ+5&ATig`DV`%&k$QuQLiZvIaY=I$Yg_?TY+aRMMW?MxH&tKce z-L)(zt}uI2m;ABv@I#WqGeTV()nGjWWmBGmXd8BQbm0$awS>?0Jh~7%lCue4OhR+A zKY4YKUrbfEUUpU5Zi{TByYy`8had<)l$s^<8?XS z)$7?BD87fFZ!G`Jb#w)eKqLzon4tzV80x=r?efXf&cfyQdAJ@$Sm5JL6E`nEUnhEAGeG6C*z=GEou@RSnG#b9a=d47|FCh%@$RHz^rO*TXvxw5ut}JBzzVpMJ>sq7;I?G)Scq&&^`w))9`@z0U6d~CD^Ph=OiZM={))7(j%RSXW}{%=*;Bx!skVC zl~}Py=jz$*xw!KBk^ddno2z2w6(#4 zx&{0qMdBlqeM0s&So6?h+E+8NK%LU?{7E+yh@MV`|EUAM>wFWxBUJ?G8L8gkBXELA zRudj~U5g4`6ncumKNH%38d_5=@=|N$t0Use8^Y4r5o-~G>-X|{IAG}q_j0}Q@+n>a zxfZz6xg{u6<$iV=n#yyU&7*Yu=4*Hc6spc~SbD=8>`sYlUF|thJY0(f?B0KWtJCd~ z&L-$?*OTUcpnL4)_PS%EqItbvJ8G7<%gnBc#4HmGv}aDZuL?&_qbzg{%Lv z_W{|Y0(GYpl}(kTUxUQ7Qg~3(H;m3FY!2w^)_py4Vm(BIV5t5O9yq5C%-^O+&Y^9U z+^0bxRt7coF^H(t0zm&AFun}hyn8dapOjgK6?RZubG3lLr!Q`&JlT5b6l4@3NvWA} zpIz6DQ)TZDZ5c^iu0mOGxEc6ayX9MrWu{|e`kcCSxbNgriBnkm7>j=1_OxVjrA}uv zm}Ye!^ww!my*Tr9GWY0s=kzindwV5vaweRqBHd)LFn>O9aCP;H*E`_fTx_&D1cThOO|zKTuVgAk~Y5^?$gQZ`A>U>Oyc2h=swtFw{YLYe29!_ zWuuBHcoT)sEGsld*Cn6T$zngqsK}IJs3vh#1T*eqF_6hIEq#DXP;Bq1^xGn2xz`-; z9Kl+w>}1O*09UcQ$Z2^g!~dci!T9>LVcjKAeKuIQ5>d;>u_e2#ZNHm{R>%$c0Zugo zfeNbcP|}I)D6t@zu}Mc&JZ|+99T}X}CRVQz+*PqZRDQFzsAECM+v=9*PKSKYc zf-0jqvmx{NFM=}_3Q!BeA1YEhq0RIDhs6It#d%#;;{>LHM*Urw8v#gFRs-0Pd&b zr%STfk=*+MK`J1XCMmA8wb`S4%dZVnZ`t03P*QvTz^P+pWWw&1F-nM8FXj1cXyfU| zwavg`$Xo1rU}@4V@8hz^mEQgETu#l7N6pU#VWq?UgR%Ub`{*qZgO(dfk{E|w<`vOo z{g^YZc>K2~M3d!7!K)Z@c=oSBL5W;}@cn`{bh#O7T=dH7pI ziU;8~30-C-`+IB;Z~ML~;|OPL&sVN~KJI6&iIk{Cn=WCsi#JSaYebae?NM6Gi8viL z^%PTWuYDWw!z#D*>I2Tn>zhX>9;-crF)4SsN#8E1d3!#&t9_hC8N&%XE^qXJgc_mO zz}YD?TFeN1c^y12Ryv$u-~2=z-YGktq55GWWBWOwoClgtV)0BtmY;;ZVb0T5ELrYk z(JxaHLyNL_e#N}rbJyHx@pvgm`~ej-f5IvF`HVh}?LE%DqS^GO4Q@KQX58C9wWxh( z7J2UOLiivcKQz3%?C!1ozZp_Q4l?^B*EkN(HXSVTI< zYVaTzWHcY^@tY#LVitvt9XU*2A9yw*6F%MI!tn>MP#w&v4$=}#^bz0Brl$ivXKM4l zCEv66P6dm$xQy3>3rbI2 zTu`JGCa5QJZc|ZYq6peM)laik+vI`(U#l0Mo-uoRd{q1|xOAU2Bp(_{ACLi0*tIwe zHwiG!ACT?H-Yp-c2M|=G$feIQbCpD!D|Waa1dIQ=I?C=8n$}{gbrn>7S4)fn<}!2q z{4=f(`a-XucxFtssE3@;$343+AE0B_l#@)IKR$6E!Z%GEHt8H+X%K9&m9l1jumF>2 zwQj?ULK7IsoG;MQn%JvB)q-H+opiB#KXp~9Lu==?Cio>%uzv|qAq#vt3A_b znm)7=eze-c1=u`B#QS-~u5CRWn7bdRl=)V-g45%nWH?VDR_b%C;h3^h>d!?8vxufY zPMeO%uKE2T(nfmpk!VZdS{?ykFOBF8y{OxDcY=UxskDY38>`Afz(03$a6h)x1D$Dz zL|y5n9#v>dWkT=QaYlW$*k6;Fj>-A> zt6EK3Kf+4TO4A~b=N)3zyHulZp!Vgy)hhT(4Ud%%^B;?>&@j#tq;Q?{${`#|Z4J<}!exj-DqVFP59 zGHyLB2Ckg%`1p&Dgmv^{1)`;Av?r@%5pVHxHk#Ls`DsItq6NL#5(j4tvm}qaZ+DEp zeI1zDYF^`7J3C8QO4k@jM)>@8|N6K{h+8R#n#s!Bv+TiHt6{=bfS{;OS^klqce%Xw zSaV3};x5xpfwJajZm0@}*S6%y!;n|OKzjS_Jf?EUS`Rp}hm}!%Hv8fA z;MB(dEA6Ht^+z&!Y&#Gvq?Em}ZyAh`jhuc+^6s>y) zM|e7T2(i6nW~ifR^|0TY?an?eb2PJ1rS6kQ^;I*1Q7JGWK58$;6h6Rqbmu;QRJHx_ zjuHc3T2@Zgt&Plkno)X%jH$Zv(Rit;q*rW1t#@>S(V%NklP8)pMv6b#CHj?|m9w#lkfO&?!u0cQpV zdF;Z{^4P8wSd}srC8yis0reIq3$E2s8}l;g&i%`+NV$Q_PK0k$lREsP4)0S*$!;21 z=(tJJik-qmc_K4Z^BHE-pro=SYX(QKSv3+IeEK{eRrc@b@tBam^P5eA-gItuo((>& zzbk;SM^XKF)jY-dGXwmwl6Km{@9~=xGv1g2Y zcGTSulTRGTIdAsmHngV-^)NXS`@jkx(WoZRH>U>k)TYCb`0||k`D)IR0JH1Ioy`qt z_m?cH0^7sYNFsd;*|Niz*K@721;`M~t?2}3MLNk2!mq=^=aMd!FhAHVsdX{$SCJCh zrN;e(mm4$IpgY0s-EiZiN~0O&MyK#T?yeYaKk za?R~(x8&xrh3yL01@A)#BfFhEfZ;Xg6oY#X)5vEiij&7v&zQ$!)*DU|eEywVptw)= z*2ZX-pga(3mcX_|7_zI5=a+5F=J4r!J?<|kb9eYIg~O|dkK^9Tju173DPJ>UTsr-E za;GjJ>fyTLE#SM-AQknu?xf`%O|7bLak@2$(E)0~f+z<2%R9YOSfTqR^7jr>ZW1Hxw89z^U67cmLMq;YAg`GKq< z7V*QL^7E!Nbv}_ zz(0KfvFXn}f;dWkEuBJjZHdGSFSvDaNkD()Vwv+hMTN5jhub4EB4kL6OOeWJ^3b>>z8B&RCu zSo)WjysYg_Ef^rU$b7lO%bbnM3t^Dmk*e33x9F;ENnbR)d=>zZLr0VT~|) zScWZ!TW3FAzM=`?E8T*1E)K3ln|gpIq+f2>DAz1epM`L=f0Hg-VCYfsj{3-861MvI z8vEwMZRFRE6{OMQvJeGa6#yt42gz5u>yPl#zryGL9sc8Yco4C8SGh0uwZk{aOD~(3 zIjQ-K2AgJAsT>s+=uYKc%%dVcNz~MG+?#}xIJ=TSFVC*%Z>6}K%VEkjHhvgg83X~H z*}BxO=r;$I>Glt^R`YV;ELi8kUe+kH14TztUFHImYh}5HhDxQJMaxP)S%oRqL&cA@41*7Hv_0|((jZhNV@ zq<8iGX`;+rwCL|Rmab4;=eLyKQ;{;m(xUbO-T9@12(>b%Mr4Z4PK{FDHb^#S#IGa^ zDkY-W1RPR+;=X*>y?%7LmOh}-8c{pC^to!3#VQLkor?OAH%&HWySL(|Rc`q)IbKE7 z_wEq`igCC!dIG|_ocnI;CH#FsoZ5ctyjs0|hU~l+ZqScAeus8UheurwqUkXT`CNz9 z$22M6qJoG-)q=*gUi4=ECLlS&eI9_!PG1^EBUo)7rRt|mZ}Nq3W8E~Hd8bNqqO{?L zI{CVEg*8ON4fwT*S9(YYp_@7=K-b3BLLi(x%E~+7%;^0zF>+jYxpiBtPk}~xN!`qX z)+0sE+~DC6EyU&OOi85w`R$cD6ytK{>I^~@0zCvmEW^8^dFGr5V(RxiEpVlB9u*ow zN53Q$r9}C?1NzAXM1JT>7Lb!d8zuIM(nNg(Q3Xbkcr=fkW~X(PTcgMQn+J;WUp$I? zvbf+oB^S!*wZ<+-!z`@yrEs($OG)2;im6|-^0l`~i5m3lRUN4u_A#nMsWU{`yLXD9(T4;om>7J!um|H$PVt`1PvEFrY z#RB&X#ViK78h|f@)2`(sQl$J3n@PlfvGKY7f3nezdIa!X&@9C_9DXdRvC)O1-1?Y& zWc|zK1{-|rkn^IAKf=GWA$?9t^j>EQltc&ck_P;W_aQe>SVUTGbHZ6n3R0*+1sPkI z%8BQic7d9EbzLCB6ZldSL1kWLbmf7kvk~(`opWnFD9Sb2RmEabvxf%KweS;e$H($w zDbdSl&9dxaVJ$Ny(MvudpXwO$Tn1&RPC}r(lxQ$HDUkuwzs(^KH7Q8-#^4G~Mmsp5 zE2o}oR(QdM&|rhF(fyy;Zx7>teD$sTM`)b7F$Ir#Kg1 z8>1>|O5mvK@YRZOpHL-+?XJH}fIJZzpZ^#nIn1EucW88@p9n^Iqjogx$AMsNW&sVb z(syZXaRmh1KL(BQMV<_JPzqMU?{w?G?DicC;y{W3v$W;O2$%yed?u|MZSxe!(CBg# zr@@>_-{*i2_Qp7-;z%+UGcbN8Z^#<0tcgqGTVnOzwaC#y;%f(wQDl_ff=nd%V4P00 zQb83-mrXcf#&&*X7CwYkzq4-0NS&z|z`cqE5f70jPU;M%1}BLWHZ+Pzjx&diBN4x% zXub#y;S9@R5&P?iBa-YrPw#B_&=2ojGc`u(8V=YdbGD&^GY>`>AQ*Ao7jf=Pn8cM# zwK=D+#b{wzUjq`s_~I~W!A(UOr47;QzEs!ZMNGPpH!!2c3Fwe}AISVoBSl5Ju1fJz zp6qYmD?-10_l0W9JNcfNvz-&VaTEUOTWSmh3A(V=`m%is3>*3sGNf$YjG5MS5;@j9 zJk70e_BWLW(!W)zku-u-4#56a2?bvF#dM_Yrw{9axdg5~LVygo>l5T?K;s)^SOAe3 zDN~rXyp}eSl%+tt4ldm2&F!R{@5z4<*El=Npo+EDY^t>7_p5>TmcWvp!VquW+5Ovq zP@F3n509j3$9t`lWuGjBAq2#Z zYFak4VU0A1w*=U(b&$DWWLMt8Km%$_strutHeY#itS)z6;D<*!6==Tc!<6&!~hw-gLq%$W(1y5E#6wTUgopFxkajfab&Eb#e zNu}zTlKK6I1M7k)OWS%D){>GHLoP2unCVZy>P`pxWl!6sqWNI!Zwx^b`xFz*ECA(m z_8F^hRdd6^YO4zAL8(oW-!So!!6kg~c3_--$;S6Q)haiWJ_9~RaP)zIu(*&8WU1At zEa3rk$eS1#S-~|#pB$ZqdE}(r&2oIkomle)F; z{1b<)leoiOAJ` zU`?y33)QGT{VUf^VY^V7BZXawaLR^e$k?CxW|ZbDl9$^OO)_ir<<>1D$Ioy!!J*( zPw^iK@y-OL{mAga{k&44dCXFdfG{8XM;EITYT%NhMK-Ty>>!Do+C z!K?hJbb>%}ZuM-hj8CD$NKA50l(VWcwY+FkF8QM_?8kIb4$0oYw-kQHemAe{_NB^y zdDOit9vk`_*p>I3`5z{Ka#r1R54X=XuKvrUoZeAaQTU%GLz91-L3`iU~&b)AL@@>(jn z5laSJTUUlTbb;ZZ#cK#}{MP)c^23&qiSvU8(B`WOAB04o&MexT-XxzM93&iq_p&+K z3xd~j>rjw88UPCpx;$Mthb+Kr&Z-|K#GhowDhRqIgc64zwCmW03?l>+_YVU%fodg{ zO(JC}rQsE;x-k!phnO^jV_@yFiP zaF6Lt*222VL;hYSp+*BZ=ODwtcc4LNoxjmM#HwI*Loa@#u{hqsObv5rEl;ctB9^w4 zf5vUKKd<)y--L-h7bp95cx%eG^J}p&%>=a%5seP56D%IG7ZHt(v=a=MG933i^bIr% zE!W;pRzrVJq#fwn7K7}=DV%=8MQTIQE)A~E-jk7}A;fc_d@yc=!hPVF-EoQF|M3XHo-F&^E&ZoLL5gWfbuU-cb1%Vb-J*> zoxO%wte4WlPkJmVsZH%b@GH%Qa|riPFC3O$_fkwl+Ee$8X;?GGaJAs28 z4X|s4`e*X&bM*g8UTv3M_m`>VMAp9)A`Bqz9~16O5YSBZLfROs(d3qS(876@5n@1S z(8EG+CycX+kxDwM%MPlX`1tzcMguz3KY-W18*nc$>a!wLEGlV6KnlJa3=A9VAC(t! zsGW;IUhuxb13=-hcH2C^nntf<*UOO=jfmvaZKQCkS#g_N&Fe+TgMJ)_cT}%6o3A>% zB{&89nfcYtUCy^d;GzTNT!7{a(&4&qv*>3UR@zb_rJLF~px{D5KmK`G48xjJiOqVp zV;4^IbW7iDXD`As;$_$w`W8iZNi=%cS>Ezc#uLSK1o;M@(UU#bJYNp|2k=-#x46e9 z2mY&ydvT>MCwR6V6xN<0V@^k2bQ`g>oZj4AY5Ii$@yBBISOnWda{g*Nt)y}%@BU}q zkAdGHt`Moa554=9WG8399OWi!BBe4k@M$-3Z2?pzRl))scS!B%8?` zs<+8@Y4(j!iZ5Sf52xgnpNa1N>B-Z zKvUm6_6V;@=5YEX_ILm*g#Cb4e7!z~xq_F=p3}Vv7*ARvI4lv*DGL$4CM>PNRW3ta zSXTeV;rgiJN-?F#L9u0%HRWEj9(uHA1Ko2ev1)fCv0A$Qo-PmpNW^mAy&$wfC%k&e60Tnhkk#13`bEho6A}ELId5C;D>DKbYWC z;mW<$6-ZJZTY>#de|uVQ-mG2ADUjM-I?jLH86?9o?~92EO6VCD8t z<}tWa!(iCY*Ec}5;?7N85$tDqru)1@QQt0q1YqfKF^Fg`ww%D)&0Odoz|n&Uz|_Rq zvhDZKBFJh`*w1)1?k}C*2It)mVoJ~=QQVd*YDEofqR=9~U0X?XH9XUxRy9Q64?blh zmRykQy0UGnqw9k80l@cYAGeJ!Lqw(9OJZ9`ULZds3kbk!?Y^0!KoXEN1yD-NIya5` zSk8SyuaIGmTV3eye_~&&pG$n154xClU49-Z3d|Y)S26$B+_)7ym=5dEj_;y?@|z2A z?b-%alpR_G;CX)uItoLt{*aG*x~t_M(shxW)^Es8z%cV2c@aiHd;8s>2p_C4344|P zm{^ehQltf)Q&<{i#%KLN%eX35(Gp1w0|Y!J)Kb0tyXz*@nTZlExO{V3fRIV=B4xE$ z6X%HjCZY9F_&B5nwjIzBtP*_x^U>_Af(AsXa*qbQ*!tMrv4rqtw@(WY-ac>}s*i1Y zlnPCev@?=)-T7Cq1q(YV-X;uE%Z3W81>lODbW_})(>V53^rARv1(7wTLLQpeP_Vuo zY@}~Q1C#I!lMq+9FJ_y!?}EACX{nxY;s6S)?*eC9%@Op)e-K&RaoxlF8a9TfXwtCP zN#BCL_hL670h$*@SUzFfBWJty{DB>61U|+cJw~8gpmAB@)?QPQhS#t`?Dw~RsTe0R z-c9WP25?gP4R93x2Y}<9d*B|_NC(`=NiT8C@|FjGWu~HIr)5wSgcW~wI6?4s>&5L4 zR6@Xqv@ZX>)^TD@U#@Xb390=d@OwIe?w*iXkw$T{h}wd%G6_k^(v(bjjzy&r03B`zbKzaDmrs*MFZ2Y$b3)MTU~j%qPxom z?K(C_8ic)?5i5*Xf_vH4rWkM)z@n5N&hucrN)$@IwOeMLe~t1whSWbw?Ate$u3_RC zhQv#CatQj_Y@hc^iCiQ`snltT`39#L#C-l7iUC1Ycgg#R-KipKVBHeq2))z>4c-}7 zSi>cwN~*selj6Bsw7Hys_XQq_aVegiqZ9%b6A!1iA4-~vxR?X=3WCA-3_wLKEnit6 zKdH+b$=0C;>%^wPoTBF7@S#<|IyIWh*m&2BUk5Teeu^eCgvGh$#HD`4gV>|{yb6OM z(aK_IxL8mV<_z$mauQ0D8nj*}kL4>js)Q$7PmTwMpFMOkw+>AzRz_*-z-q5}*fBBQ z;^SGqNt#+<{NyTG*Ecp`UYZ!kXJxHp&#DX<9)F(oVYdQsnk$6a*R!*HiMIMBwOpx3 zrAa+A9`R!DS&6iHkfQyLonhjpdR$%yq8A zi)l@{)}>OO)Ga*OH7Pmz`C`;E2X)l0K(din~F7Z$aK4IhQ|zK zll_Y)D~Xq#>1eygqoHheGPZ!kmG-+%G0r-6bIp|F$CNaGeOiVISGQ>-e$yhuMiVmc z+Vb~Qn#F7kS6#ix%ZbX(*j9(yX`;U{7>;Qf8ir5pCaXu;3BH2LBU8h-e^4Aev7dft zyZ|sZwEz_ofSPjbDeSGrZYyr*in=&T@L*Rz(XL@?aamcpOqw||zU|u|o=n!j4z5T( zGY+*){`ZPPh&cM(2B*EiRDm+v{6Va;QlQfAG-e%~z>Dn(4fAh|UOGCEFw~mGiCkZ` zby)8*`8qgYK#YmW&{soIE{goen&HXewe>$FsfDp4jY7WFOiVlE8)XUSmR%HYH7N=f zjqvDH<+hXoX6$Z1^{;>H(4LPO zLsF-;Q=l#tRTjf7-G1!m!I;*t7l-!4K@#GIG~2YvQqC(ZQN^e4C7?%F{{gH1v0GMg zE4P0+hnX;(+Pz64WF6TeS3D1uLJT?(Azc)j<(xV*%NZnsULDU9+)4!cO7l1vfht<~ zn=<(3eo(GBORhL#7QrJ7HiWGm>T*dEtJdfe3br$kdUtqGE`%7gL2e*+yz7qs!jW!B z+8J!~ebpj7_6N6|k~|2XV?MDEL(veNX3RTe`sL}tjJo6ENgSGgt3X8kQ$6)17cp~X7}ked zvEq0L9}-G3XmJEra_FWk@e@#7?8Y3(!P_K08T6JLE;|u(lr#deAmeU8s%s8;*Oarz8+!)M@o|BHxzxab;s5j8zLxc;k5ZPF7G|IRJi_m5kXj&JfAaKz z-E=ghl$`=bHa6iqjR7%iII(w;c6%>eQ890jUY&6CfxZQFieEIxA7eCDW;FN&_=QgN zU0fT7%Lq!?{j1-rhiCVbZ`(!{_wn5p(i`{vfkPW`S+IIBXUp&E%xDilv$cM58+o(0 z>)Bw~{dO?3f12_3aQ622dhFiuk~1^0VQ~3$bJ|f;gL-zBa|=4!zuC1WB*X}A&OF1z1D?V1$|Y{kgJOGoC-hS8Wt4@>semcaB>*+cd9_bbzv2OsCQ*V`?U z`nxo~Yc{rrS76=C?ZB_q{<|~w4aY}{C6(|1EzPYioJWVdb`NbL2lET-9{I&)^Lw?5 znF=h<>1C0(i<*{ClQ@7Ug;!?72KRWLG-5iWqn)<9G4k7;R$MAvMv<3B&-;3x=UOGj z&K?nMC6w2v5u@gcDQ=zhtu3XJk|2^4mI@Nh*w~4ir>C8V{+qcYr-!%flw-fMl-Q-c zHv*D_x3ZzosWmS@pIkXup)=wF5#p4ZpZS^k^@fE5&n}M@hu1V6QFRgofQn-#B2+AS z5|r1shK-%Jf^m5vCfuLZzC4vp+*FMRtOU4#5h|Mz3L7iQ`52}7=`W>O@G1goLvFVj zp%khO_N{8!IUAxeXI4CLdrvFKx%WV~Ad>E!jouJY(~oUX6CS9E=s^rWQZ?MqG7}lPKX(8+D%kbp`Y>Wx9-qVG zP7*^{3hagV+Amo+EO{~L4<+$re58Wxv-n=J;9vyE`<~az=!jfx1hIjS_@*sfy=gct zG}IUGliDAn1{hJROGH7K8Hh@Xb`%V+F{LE($)bVtddA+_a*MN(fP!wy{`S<*o;mlU%Fz7YlsR>c#JqW;Bj= ze1EX*t1iGEN>@&lHh^^!Gieg%_TFJQ6r)ypTOMAUVjY6F65RoO>Rtz8F|66&OKwmP zEL5zY$$tQU2dCF0+7WU4e7vj~3`I>H)Iqlj>L5JYNcDD9sdnMxCqw*_L5G} zL$&*R(7&R85Av9@2PZ5p{f*N28~zWJzYq93%KxqckE;dR@k{mOSGlC%nO#Doq24TA>_v;AvWFTeqDn^mgmH_iqGFVeT)IDa4TH_x@wjnMOY zye8m{A0>A|4aK zO*dY*$5Z|`pSMHXZ%4MbTva1`JcuRk6R5ba_Z|;$C(hnKU)Hm_u?4d_HlKbnSHm`U zm`7w+6C>@miMZ|^BNIo>Z>{VbDhjchZ%y40G*`UDMw(Z?wlR0@++4=`{v118c$|3n zzHp=+p7wlW(dP5Q*Vf}6VkT0xIAL(ReKRl?JE4?e|IK&v zyZ`i@dr~UbspHLoeGX9aVeV`uRiJHM{FGvReW_|I)pxD^UTLVM>gU)ufSwEJ{dFy! zc-n6*J;v-b*7Nj&kGh?+#LMt z*;(e^$MX^h#%|?(zdk}WP(U3#KU#r}D&@es1o|wK#d%+t;{{ugvII05p;+hOd~@I` zG>DFKdxEkq0mKytlxQI>TIAV_Qmj~e-#6k^Bc@26ga4UeHouqW#*0zF_SS!e*5`A#5J81a~Ev!rIu?B9} z_gl0U+*|vHD@o`9nfvhf{oqnk!Y=Ggs5NP0-KOh({)kN_@&)6C^Es${feFy}Os^&2o;eVd%K;S#dAT z-KJ3w!;TG1co=^*PZpIsdlNYWs<^Ujrya~);ndJL6oo7aohNyPhUK5o#l(VJZ{VE9 z(ElG{Zvh;~wloQgnVFfH*D1@b&%ZXNWH zMu(gmKW)3|y@&(0Ry@wyyUBcA656mCwlA~O@_0(%kH_a*jSN5y1RG8@CiewuGGte( zlL#SEy$O2{V=TyyT{MPld>p!bMN03}(HxtVWK15XJ$_uQrDR0S=-*lyvKxVZ;h_sC zJ4hK^ylt*==3P?@Om!$Rl@9{$18Z7yhZ4FxVqA``#g)u(qBSEuGCXr2-Ssk~Up^}0XJ$a!)Sp%Ft!RB%LgKFwS5612q$Vd^w+OD&Dy+Zu+q|>_|4Q`GHkLrZ8 zUpH$;eW^{!E-r=QGN%KX=2X|WN1bIOFRnV{k2hbyZcO1tcM(wkQ-2R82S8%%FbM#O0!y82MQp%eG+<6&M>D5i+5wVYFw+SOz;NnB^;JISxQlaq>` zlS%Zbdp%!C>vujsTGp)-7pr?Q@44_`^QM6Y$?JA@gx1vAJn3$>@EGc`*wIya{Pv7@ zV9~2o##Q{yg1^P)+>md%d4hSV0(x>sxbEHbwtg!)YMc4&3=MYwPL(iFS;6ocoA^tI zI|r}RyYu&eGxlDG&l9ae-|SRVG?BvAom?MF4(!G|?^MPJJ-X8Xjba9#6&Eoc#8Yw} zs=m4%PdUz*}XTs+m-M838M^ME+#NF{o0BJL^> zAw220RNs$X-W|}sKc@etj1(JcfsZdrw5Ah6*}UB!*b{mRW9#hqyNbC}&L8q|Rx; ze0y>JIWe~NW2_xN>8B_P`hk~x^aLv_6ji1iIVnuI%qJ46L;v&#aFkGUa}@E>W+Gfw z7c=?a0SMkn1oed1&-?MunK7whi!x+oS+|Wp%Av5m8b9lqt2H3^;A&O7uqA6I7(Yvm zh>gTW*6n~@wq-Te-721#X~KrG=f$X$N6=6b)~(^E!GTP_w`WscqNXrYc03@BK<=vn z>j3Heniz9bbLNf(8fC7!FAqzLzs_j+&Ewf=ZP5`E-G@E%IjMS*TquFGq7H7(o(8-CH>a_1PRx#a`v?Lp|vR`)& zLuT6prffEVhyNrNXd|GJ9S79Q*>hNZH6C$4|)IM$2%kSv6mJyn1=- z5a%GfledM9sTunY+Y;rF`sqGj-R?4bUgpecK=z+N-ax;$g!K)9r3=h`0%aIh+G(GU zg9XQVZ{589A)}-R-JI(0q{o)a#Bj6c*|CPz;d6IVwtO$LEAycrPe_b(ysqtaNkiJ@ zY&@3IzhR8xyJq(>NODRHfw^g6UJ<) zBtT9KPTRg%#+n$K;BClao@b9{MsQ%e8=;#$Gl7d_NlHQ~4z z|9WQ0_3J9V_eN3QHR6db%R(2+4_z)N$K7ouF%A3{j4tr0a>`A7qk4OU!JaeDx>(?I zoeZ_LQ#DWG274OZa9}pG7UY8vewLE$8F6oBH3+$H@_KVSd0%eJ2a(_?Oua~K_3YUZ zUn6efyNufurJ8&(!fgrm21jU(5ozasJ6`t12qCAc`|K*Ux2?qoyYChm&Gi##%rv*T}ue^&p`)a5sz*`JS+kWXUsi{tme@XpWy4uYbJtV_n zd}qV_1>-uVWJq{-I~rm$%Z_Ui(8+!6w66gEh*ND7k zEy{8Y{Poc~gFT>78>1wfSqAs#Jkj0t>Gf5>k=O=~gv#}dV%1jfWEpR^=1y>Dk zUk+_)19@>B0!`fm9l4HW9B48>mpMCAi1vs4MwH*%J$~JJc6rLR=6G|3?QRCPr`>~n zZ?tAfX`9XEM~usAi(5UruBxH*S{2!%FIZ_oaR?=KkTj(o4fv|CM*Z0X1V$Hx^vdhj ztQt^PB(I5R$l$GgFi|{0ol9C#X--YVW;{e~yFg99%b3@LZlH~Bkl~YRMaY|v|BX$d z=X8+2X@P%;fW-}|`KkmIhY?(CS+`2QKj(3UrqMCY+xFfFxZcG;y;(VRHH}gf5@U0m z0(_!)3T;~{Zqw-36~v|OZlUVtd@f$)Q_H8c=Xvqh2aC>t&14F~3)1&TK2-+VSgwor1aZa!KsF zyN9iUmo0GblzK5-bmu)(D=(m8@9!`)VbE9%E+m!X~ zrfocl$}b+a>r;4&!%Vkijkwm^=4C{U<3qZ(4_z$++jkj`K#F@c6P8-52|_)42vLHJ)F~^Vkg2I+j#!-Y%FR$Et7|j+Kw?~uAjPFF3n?3Qn2%UL(OW^a=fG?ksWJf z9BcgBe8>!e6g_P3U=Q4jgB*GG1Re|F9cN@65ncP|c;{N%pp2Rk5NI8*erzn8rlfu5 zsk_cLM^EbK72|tPUA!g6V^%wvTYPoI%M6pV&Xwzk;l6ldviJU3uk)6PwEg>c+K3<5 z2C)S!%ED+GtbX>DM%3lRsT;$mk7R@K*P|haJYIroBFzy}>rLZx72nf>b=X4fC`>8Z zf~O=k-2%=B`~AX6$m1Hxl#$po@ygq^+wrxRD_xP(M^cQqGa{1f;6dqok(VDPw7S9! z-qUM^+5P%mYNaB%CZP3%Ao%@MJA)-DKDp9Fi+bW-)hau}c1iZbyA6h%}_7 zvPnjt_-Ff{k5{xTDs+!os>b3~c547o0+@G3fH8*B5JKn!@)@yP|7c6GDk%tv7(2@_ z#^M~}0Zr%Hk1;4BQL5?8;zqL=qX-VhP~_r9x8y-cYh9^s zbmAaJR#2h&UguKEJV3RTWe(R?Uqm5<^RY4)X~G)74(&r>KwN%{)bfk(-iE?7zI+me z7!8K`71c8}?Ub-$e%vPg8?8yV*s}s9pdEBzBxn&t6aofytpL_(7H5lI<0?}fj|_#q zz;%6rj^(b-9tPFT4DLPz<}zb2eSq(5VyEY3!T%iSk{InpQAXKG09N4N!mS} z@cx^RtQdp|l^c_;4y5FJ3nFP?th{kAO28*o9QO7Q+-Q`5kvIfCqaQj86)2$o1-LjS z=hg(020ZP52F&;WJYWDqvR`9&&W}%bz`Aex<|{BO;4yIh(s_DK7C;XH-I#)aLXiLL zYZU)Zzi-p`O0Mer)}9LKJYXCj4mF9N1cx}8l@x(KshjlsNqCZI5ac)nluqEsP{5FX z-T*4`J3Z3xv5}#)*^L?9!La+(4eusJ7e0>eW{%!=j-GDm$*>SPnDYDG8^ZuT;va?? z16AA$Rm9Lu1Kq_gB~X0^6WP-mb!JK?Rho^|M_W@m!G6dey{I1szOo#> z*V%yywYzVb+@rVfni;kmUO#f zf>-mN>gkUkEkAwscpLS23*gUFls%VgPr*-KDy=gESWIcM(KPJQuP5ETm@^Jugstv` zuQCf!;u)IhXjx<$T16K)E|S1VYM#)@?dZ9eLe=FBUHmOx!&9^niD0-=cTiHv>P_U$U^JY_9}cZEQ=Gg=Yk{dFHt-`i z=zC4J@=35Z&an0^U=8iXq{BOrvmUx|9Q;p|&Q;>kJ&Md^29Ncko0pjj36HliHc?T7 zkCJngZr`Nt_ggbTm`_hooRypT#av%0T~&x5D{zvZixo$5H^00kV(mQw@rEzb^3YGz>rDyeIWZk@M{CugY^RypqHTF|BkLr0(T<9@35Rw2j z^mtpJvV!{s2pVWN3%aA{rm0XcoXA%Dii8=&cEqQ4Ie`h9+WddfbB=TbZ!qvrJ&u03 za^$Uu7Z(&dr;qpMw?)$1X^;DRhw!}5Lyd^EikdcGRK9)Q6&VbocqHk#^%fJst$tMv8p%*IW<`ntWje zLi9?fGbN4oV7=5H1Q*;xwsG?}y}c0}qc~YuQI;m`Qj}?u^!1KccMz4Fc&CS04smwZ zVajleM-cFgP%9`59Lh}RUL8qo60Ab)C$?}4lo^uDN7oQ+Q~ytu!?5$y2I-<4K~@$g zcdMY%?xKV9{0k^E)2L}Anakh^W_X3TN=C_6qnd{61=V#3^9F|pX3jyO*bwItXjo)94(JuHl~Sq0tbig4 z|HAl}h;v~vjz1!Rtp493Vur<=V&*0%u^3@u^?9lr$3*QZmA#H{I$p?H3@QKk=bBNHdK?R*NO0%X-J2C||** zNi!q%F$!^U{}$u&e-&e;$?@B|rHVEq!$3rZiv72a4*$6pQ6ujScBM{Ue;&PU4tURu zjxO$Z-WPvUHrf^>{aX1ndZw)nkEZP(3%m{9S~b23T@P<>Q~N?$SIA9f&N7bH87v>` z4lU!k(SWgqd&RSmX+y!wr;MS2bLZvAymCZ~VSGk0V-=T%&<1Y8uxd*uyzL-N@AXP$ zH4MYM4KcB6USVMbFd1SUk}A)ay4^NHVp{LZ)n%`b_wAUOFXAnq;=%Hc=pg+LTaw*( zMV#QVGbNqi-FXzhI;n=MdJXK`5mR7Ow4vq)9MiE8T>G}#QHZ#M21}kgoQ67Mu!0-3 zq8Y@*6$3o0;5&|KnI$kam9_^%N|m=oF>5v(_feD#zCDR}ig@CK;?dNRE$&@gPD!FA zV+&ga-$^@ycZa|$6m^H-;dGdfQ08}MUj^L- z-f@9(C>cnU4sFe*#!%2O`_Ca9Jr>arus#>q(jP7Vls->x>kOC8y;D(B0zG2Xv%))K zG^_u{NKXWMbYw@IjGg>P#T^|R;omAeL4z#}?81j+)L!53UX?zp{7Z*w{s~aWyX(Jo zyiaU4vXT8iNVpejXZwvjz9^-t7<~Q93iR|pRy?Wv8{(-PXa)NJ!-`Sk!;q0fsFSe9 zq&piQ3eU-@+jYE=RhwR8gtkw}ty86Ct{lGAsUVr1< zX#j9ZAFC%?@#W$PID*>P0F2)}cX4ZFgY1;e`iD_W?eWe&t9;aOS8h1te?@UBVD0;Qak_N2T4?!!f?ZRpUyxsKbD7K zN3oD@{2bXtAm$P{nP^i?5F$JjF{ctB$kn#!Bm-j|W^?0($sg3}0Ih$aj^L#fpZ|s05SlQskSXwxgJr9O0~O9mfMO$4y;rWW ztE55iuLa%^TC5Vtv&veG6vWUWnE@TnnGM5;X*-NIsVhR?#k3NRh&zlI&Z*L$yzW3^X($EZ$ts|j*=Wx)^I?FEHLtOB)Q$O*!;rSB81IO zk*0b$Gck;HRD-E;7kc@&65JzL`3d>CMaorwWU!K{hU+WC!=}%eMoO|9taeeScns=clN5FJdN$FKXm`t`&ZlIRH zgk^wJk$Jdul`PEk)IjcLvpNOwMKj#!yKfQ+lI zmTsCKDXB8zi4)qy`xBxmfDSklxL0cB#C%f3q-|^nqO)KwqUFK#wHWrFs3b_Cl*CK*ROyIn|FS@@9%w-VJk}ozX1XGio=G0oqIS!@ zP?Nnhl}ECdx+3YI%(vCm8mNEP7IsR^f5D{ui|+yCALOmB$U9dAwR!1E9{iA^@V8KC z+rV{UOisZ>KK1Hv;%Q}(7#XL+m`!Q(hmKiLLCzCor@z*_LMjJXGpa#Eqxe^Dj_ z`zK|d^jQl#gON-lE+vVWI0{8fUO~%(Uy^7xivyc5ZuUg);d7y%km zJQ!@*k6q_M5`r zDgiAPeT0=CXZW1?k5f!yj_syE`qBZxi>^1~MJ%yvxok`5Ne+s$lQIqBUI20~>FwIOU@KX6-GxT`CW~Pn? zQMpJm;lpM@D6#=+n(WGh5rb=SWt(r1K(oG?pCW#lCfx&}jd$`w%5}m5KIeQEnjzll zvcgd&3qC9@dPD1sTBUr z7NP=~nN}4=XD8f@K$iz9&688^Wm6c8F4drkR$})5^_kye&T98EGRlLIT5pie4=7Kj> z=*`958jiTZ-iqis+cnMgJV#`TAeD=@j;J%r6d0^qqB0K>GUj_~WxTNYG_>5ww44x{ z*jFGbYFyb|)a`H1!?~)^ z3lhof;-39ZCLlifQwKc|mo?evBO$Bd$J+E*Ae60tw@4H9-+PEXjVGUT@|AjcX(S^< z3g;o&_YW6qBSR{{AEm5VLv;n=7n>dswoxzN$jNI8=Oa0v(@%qQ#c~eAqEhqQM|%00 znmdS*04>K7xdu)X@)>4!RD|HJYb#t3WHnqcowaZ206A9pbx&m&_ZE7X7{xE2Bk)%c z=xrDc(pLN%DPdK)z&`S>Ww=nYeC=`2e81`M9VDT+%7t(iOH{x9>=w&!WbgjJf)IHm zUO{i67g-~J0i(QcuHD)Rn5O+O>(~kx0tOQLJCHy`>bF~HGd)q@d&BsLi97N9Zi;B8 zHT8Lzm!20$!-f3wNZ*YhIx?X|SWGNKD5XK7eu3{Jr#F3`(f-4&9<(f6h~(XfPZHG+ zq-2g*6n@BQlu2*cr3?6fEvg@jsc*#?u|U8tF)kkeKcD>b?zxg*VmM(*R)c!wpGHMv zeu4kO-A86jssi2yk&X28d=;paB_GTN(sy0S<^3xj*Dl5%FXYE)_L1{3zLOFR53mq8 z0X_R4Qpf{-4Z-~FnDA>s)h#r2=E!rh$4Lm^hdRXHj^T*Zb{lc!H3=~h-rkqf#lW~? z-9k@mdml6WA-3kP`bQEAVG&Ta%4yvP3!D@xfAHu(wfF@53X1!WlKEd^z@nE-KF{n8 zP_U5L>i~=kX5618T;Eq;BJ~nf<3FRpYdiZ#&Mh>)6L2*4kxNa1a+KiSP>_zB5*0nP z9Ju$9`#JZKEvA`)fbDC(&(s>?EM?6Cw@w{7rY*NM4Lo3Z#H(abPe~;`e z^PnNW5bajO_l8--Qj3&!%EWJchAkNgoL5w(i4R_O1h#}tk*u>s zzi*m7^cLcEQg6)1AL?63kM29mIbJT4wW0$_p{jG zNNV@}dQjP}9~Bbpi~r)zxJxsn+&ZlMv_HXOq*)zWg`kOB+sNQly%k0{8}s$aJIyH- z_h8N1a{W>2HaQ0Z;@V|)^N6b+B&^IaHH*I>ic_lP}?FKgCBzg5R_?*GqVp8#dN z7xRPGp^J7Qi_@w~*#Dxl9>fpkMUYi|$4i$A^*@vp!U07#eSm?fX;{Rc4w0!w_L7Nj`~ z)fD&rXBJZO<>jKwUWb~JbPW}$J5GT5!0Su0Qiz8DodBgb7WWFExkieDr_Q=yR|9m}ialT_>`Ka-+f7QT{ zNI0J~k#G)f?8i|{91QuSDg*b}>r$h7N>z35EDQ?z32qjeEI=LSXN-%~<|uyC0SR|lrbwSYL7in^ zFUpz*PSTQ_aS%tt2uH=m-Fg`=qRQq-lQMgQxwO<|HB&Uye?n3NL-L-bxu7W)vd~po zdUU~x@&>qo9f>12TF_A+G_ZeJ`+>-AODe+KkXk*qaDc+$*5ptM)Bb>$(f)(<;D>(M;TAGR~?b2+e zVd$whqY^(YVNJ?tCZk(k&W>Kf;5NY!BqvQ-tEMFVixU^SSF=Aa4YfgS4fUG}V4voRj7xK(F9LX$Xz}hDBwrS^DginRvmxHciR)oMHKCFGlLb~v z6403=@&7pEf(BiHUGG}Zh?9yqDMK)A$=>QR=tV(8ZBI)rRP*^aUdN$RM5lP7LN;7P zum)Mcl#NVA5e)+hF_t3D37U$i|!366SY3N?K|u6ixbldxusrF31i+Sd^o! z!U;^pVuE12GF9hAQT_X+FDW9=iSp+bW@2(etI8rvxa4j8M?xlLnR`oN<6&~462`do zo@o4{Al5Y~FXUgZWpj)}HE`aT{ove2Lr^1o8m{=oHP|4QUB6Kb~gzz^S^a<-dT$jTKDp&k*+VP4+<#<)X!=<=Fr{SK0HDN%J zwgAF97}EV;1Uz?}4wK1X1^z{V>IjM#6L-RyBgY#|LQ$TgEW~m=VKHk#jHHaDOjc3^ z;2!*V;G~i$6V_6oB?6E#)=L!kf0mv}T$=r%27 zKZS71QqR@r@Ioa$3z%5WLw(_BN3SuD`}0d-0d~aKhLqlg z8Ir#$Bu&ig{iK|NXrNKmQ@zRN2^i~X{bWE4iKh?=SJrn+g5JzyKNInYgX?;aVOalcHgOMC*cPr}m)$!VvChrKxqM$fST}@FrCRmZYYq z42jlxAd(ph^iblgrIzam6jsG;0*scK{(b>NRI#)G1eSI?3PU3^g9_h7&=mvQ%}_l> z7QufA74v6%s6KU(PwRnvwMejkNO}56CbdUnlICIbKh)s{{!u4}^1s#DApq6!!1VaP zon!t7%9|2|D*Mk ztGSz-wS(nf`>a|twp_mRVD#>k8MW_Oz_vQeAJCpr)NdJszr`CDJF>+qN&b2j4Ve8dzJK{)2Xc@S}0dOEKA`PDMJS7Q#A)bL0a zS|dR|f84K~?^g$coJNc`8K7P$R7XcX?JXK5NfESd{Sh7Ua1epE6}%0YBj^4jpqU_7CK&6@I>(89tBo{kh^%2owe{M)TC zQe&%>^mZ&PA6BqwgJXGLB4#_7jlyhST!A9m#uI=fLbb*kQn7ZT;}gqx{b;st5We!( z>Zr=Y8bUv_*^L1hiQeI?bW~YTAVT;>#&cdECw3}prG}bq#Sih2r01#usS80~~w`Y{`N=$BG*d z(01lsoQaFUpaW-k901Oglinwk=DSF|mSA^R3;IIto*jT#Uh=+8yWgWanWFGVg?WvR zTU~_B*@5~X&ox6uJ#w;lM@7`8F6^e0loDg*EdSO6aM!P3i*%m_08d9TrNy8d28>RMR*lKzL=Y+{*MbjW^TY{hy?*;&bxQ;Fj4iuESgm`kqw8iD_Nu!*@=LXwFS5tYUbr9 zyEYe2*8>&l8EM6~AKnbpu1vw7{q}578vFT|OJ>AB!nRCDX<+zaVz4qV;gYX5iVZ3u zUyww@V}{90D%cujPEdf4N}j-t&L<#T(;}G1M>RR8b_f>A*#ZHf}>4pZ%o}a@zaR-JKB;p-V`y zY~N2d?C&7|>DX`Hd{#@4&PY_Mt^*bq)E$` zwM%NjK&2ZEZJt8H_Xa^HsK?q!xDxJI`2CIFE{^4@UZ(58KHlq!ewqR_5C+#xOd6b& z_ha_iF3bxq5D%P0gNqevG4YhG&1_|M0HeCzl<1v;aTl~{2 z99BH(0`YQN3-;$o6?#{Gh_i5s){(&DEL3bXWU~E@(QyYuEsbyAGP!syO5c4)p~z%Q z)S_9jBZZ3;oenqh4^6u+)(3FpBp$rD=&VRBI5KM}vaOU+Oe=$KWwVTA(yACvBV(g8 z%R$$w2foqGwe5X|yqd0X)C^oIYtRn};XMn|br>y0P|ag2tZp;2=|M-hf9sBaHVEMJ z02R0wvp7`00V~^m{C)}J?$v`>S6iXSEzmx6Q5vb~1gmpkpDv-{taCTP!{}LX z?*vvpKB248?S9m+XP)hlJ92imx3M^cd~thUHpXoDp^VM-w3uk^!A*zV$&9{`H)4i7 z6u+Hd>~1=UC_D$UY90go0fF+VjkSxXkjh$J+BsBnoLCXBtDBLfBcs9U8+#4!LFK-)8Rnsy9Sator zBP1B}Ov8_(uMyweU(==pD`%@F8^Kj{9!#%Q7;&Sb3r4$jZO)RciT-T09ndFS37xBuu-`{wv zehBWeb*R2Z82)nMEz^Op73tIvhju-ZM%m?fMBzIn^cdN*fKQ*H%FXgc7!m02aA*0q zC!He|PehWPQlzJ`s}}E|_mLI6U9cAD8vbL_w}s9U{KU+ALV zn`=Dks<2tTJC$ zv?QJV*_kZ1oEgik5SmzJCGDbl3l?Jy+5|5jwVARO9+rsBheD(sZeTcZDSPJrBw5RU z0|C0w{wsm7wn^+t@7L#pjkMW;Dk)}zPcKKy2V-?aZ+Z}Yuy4+2@5jHH-+f67Y%}cB^GA^xzNpK4yWL;Ea1{Kw52Kc7M}!KK*#z+p58^)sxl~f5 zGi;{BYosgy$KI!K8zOc+6@z37dQkzApbPd&5l9UKhb7CzcIc1rH)zn9BbOPsr`Z&h_*^!DpcY6mrDNct;^naNnCvm1M27P)o4#q~0qvHspOj zyfZFAt5I}o$aIw;+QwoK&J|O+Cscj{rf~RkC8>p1*7=t;A&tI!vo5&}yOcLTYr^V| z;9Ec6R%o-aabwx<4N>9FDtB7fo3QyMuD#(MNw$Dl@9&<9{6DNM%gY$6WvhOed96lX z``veK&AZR)x^3Vai+&zS&fm~;^w-NAJ)2rDnzs@-jAAYfpzpK!o*b-_={VVgbg#o-SB7V(F~x)OIWLD9imB4H3Qc&{ z)J0_2}>;Mel+9yLqQc$*M;EE5h$gWsTVz*AMpGRfOYGoYbZ;x&{Coh)SMj z#>rqg^DcNjyPp}|i|J~~8X%47wBR73Z#P0>zbi(0)2R1n?c@&CpQ&^zsD{J>l51 zNa%}t`Rb5QW2gC14AuRssjzjM7Ko6MN@8@hYnHZcqJI7$vr!s7Eo^#DB}294{kdaT zofAw(AKns5x`gojwOd-%wA2^X0MIi$CCwTCY@W^sibyOA%RLVRklsHr5r`Ly$Q=%{ z*N_!Ju3%r5f{F9ec8Rt`vL4`+W=o(IcI)jVFLG`$J-p+ic$ zvA!I+dCi+JC^;xFs^|aM%V2z)Bgqi&s;3mpKrAc_=N`r%wB<=l0i(}UELh* zwe0Pft=-J+|N7diiEe-!WWfOW=_@gjI8n+MjMQpiM%?)d|k~N)kZ)^Zr=)9wp==LbPLL(T=(y0RRv?d((ZQKc`IS{>aBrwWOGu4}_g#%BD`PiDWZ{1IW5Jw61 zg{c;b$M~v-F?WkHq^=z<%giNsdHuh12~Hj@_W<=!19cJoL)YKkVgIA ze0gbQivOw8gEQB;<(i*E3Q4PTGrc6sIcV|AbuVjLpa?FQ$}?jXWWTmNxpy5=r4 zQ=YKL^ahT|fn(e?=~WJIYC9kjt6l?+%j`I)UeE7rBZzX0jK}Tsj`LW}A`}x6#U0U6 z#?0;MX1C>ZE4j1-w-?mWkOBTgj?hfM+fEb~-4+vCvZ*r;RkeP%obNa+`424Mu2Pp* zb#CWOb7j#B*M&K@_3Kl)bPW#seSPgbMdcR8K4(;tX28ppPsn!dVMNXLNcaa*cjN`d zgV8U6ZB}oN#p(ZUO9OGnRZHb`BMdU9S!Z}GotPIW4OZyA5!`eOkcR%i$)cQhs#Ayld=;z(weZ*&tip_ z2lC2s^YEUpBr8C2Q_5V0Dspux`tN*u$nf{(B!Fe6^~(sNnV_$;g!l#-YZVFSECcJf z%0SQi_1Du(F)!wqEx?8lmF}`U=?jAv>UQZ8|AyDjk{<3aic<|oX0!|=a+n(;Y^{Zt?CCnKv2%=< z-nmFCWfWmk(PVvFq)?E?&GzcgQ2fdr7oUS<#F-pbK}BblfpEvLEK07Uz@!{aOMy86 z|Drr17_edUUI*NPYeji~c9=B|r}CR&lufF}xZ)z1enjMyhi^yF!laaPPFzB3%brB{ z;@#0xBqR5BWBqR3qws`z1d6J`GG-+AH-N`Y??Wu=>UWFDh0{-yE~*?f0}&`3pTQ9N&CV5cn)63eQ7C5V-tK?+y?-Dz6GxbY^CVShaK<#eVBPxU!vok( z#jRf~z}PGD8Zgx&f!S_|^B1av&Eu=-EXBfgpYJiwKNROou|Dn0@ZGiObN`0vg`zU- zIj(VrI#%YmI2F$H`Lu)Eb=#tD`3h5uBwrgEqo2c@)cW>2>AGWNYJ2426{g|^l#l-?)HTE^cmQba^4-h4(vMW>hn!4jcReRmih(QFKeNm zuE(BGk5~Jzr|U%!8CZt8@z(kgTy2dCaG`9B#Mq~KL)NK33bsGs|M?YEIKE=p0|^2W zOacOe4V`YIz~`d@L(MJQS!q6yPenpl3K|6- z180=X=9W_c!w~#-bE_CuDLBFK+vV2!TW|LLmg_99_lZN{SfSz2+#Q-XEDHj-xrfL@ zbMKTxORW=6mFy)ZmmA1wTgTuYh%J~E!en97l8H{IU5CsLJVSIK$9O15nl2nRF9D{1 zkj-AF^BD{a2C^dY=0_d*3~&|%p@Q@rC-1;dXal(c{i2l&>Sj4-Fvk#%-TZ-X>BPJ{N< z`CWFI=P(eZI%ech%1dvgxs5%3HfSUo9s)*$P;d(+c*+QjIyn%M6@kpFdp8V32jT(F z>X!YBF!*<X&CXMED6ttf^2aZ zMJ@5uxak+tI(fD3pGm&ag&V0=>LR2*t|w#}0Ye%~f=P79Kl9EPO@KtBfM$qPcebaQ?ZrkSlHj@eY zJEa49ThMR+jfty$L1^^0tczp8!zUL0EO;n$^lL0z@9x+5Y9tgDi5J2zBvN!Ht(?@@%H+(L?9ky-# zv6q2c{8F%dP=mqE1D9`BoKJS+{~)Bs&R=jUvSDkTf?;)P&f85l@<`?WqPuhD=>t5oGe{!ime(J>SX@{Rp;hgsNuJWArbG~QR z3*T;El9tvhGu1Zp)08>8mz~>FeeF%tq3Sh9w@tcaR9#u>`}UFQkE*+J2czGAUO(lD zM{x1!SJ&F*>YiNO`dY5K=JB%S^Xi`6d_J#!Ve#o})8pz=Z?9gz_vf|S*7qv6XFp%p zZ+GwW$$PcG?fc>hmY3pkNx$x-~RuiQo{qh zQ|vNgZ?LqfwkTIci61r#Zk+hxaZ%~vF0q%ftK0g|M^B!VcymK#_4f&!KhG5_zdGW) za;9+lH(x7%?_jOnTMym(ADqhEs`|=`@1;zhg>rh!&w{63d?g$Bmo>3TWh`jKO8htO z_;$!Xz?+dtgc&qE&cQHqrg_BLprsS10$Zr3fMaf;ZU+oB0L2&>qMd<*!KryA@gbE3 zsl~CN))~41m1^D&KY&W_0mqTKVY-2I1LHBE5s)@MxM`2Bv7?PUI1{MkB2c3sipJ+a z5qRB`oL>YUiALA{<@Rmy*Ffz#EDQ_+DBA0RB5>`A1qIk#eX&FH_;z3`v;yd7RLf@o z0|GpA05qaB7wC6v+VdKug^Ylfp9WebgJO9da3~$D9pZCjL$HQI?`kpYZhZ!ZxKLIG zeiV~l0YejPQgKOTPAYi15cMi{Zb9&2wL z-2n8CF2aE64af#y>-M6Xh2D2Wm^Gmh*(}taB)Tc+T`hzu%bTE~g3|Fq*N@&FMCf;F bL&{>Pt-}CsR$vYShQoOKU=} literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/CopyInfo.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/CopyInfo.scala deleted file mode 100644 index 11cc0617a..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/CopyInfo.scala +++ /dev/null @@ -1,33 +0,0 @@ -package com.twitter.frigate.pushservice.model.candidate - -import com.twitter.frigate.common.util.MRPushCopy -import com.twitter.frigate.common.util.MrPushCopyObjects -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.util.CandidateUtil - -case class CopyIds( - pushCopyId: Option[Int] = None, - ntabCopyId: Option[Int] = None, - aggregationId: Option[String] = None) - -trait CopyInfo { - self: PushCandidate => - - import com.twitter.frigate.data_pipeline.common.FrigateNotificationUtil._ - - def getPushCopy: Option[MRPushCopy] = - pushCopyId match { - case Some(pushCopyId) => MrPushCopyObjects.getCopyFromId(pushCopyId) - case _ => - crt2PushCopy( - commonRecType, - CandidateUtil.getSocialContextActionsFromCandidate(self).size - ) - } - - def pushCopyId: Option[Int] - - def ntabCopyId: Option[Int] - - def copyAggregationId: Option[String] -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/MLScores.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/MLScores.docx new file mode 100644 index 0000000000000000000000000000000000000000..dce3297150455c557cffaf1c0692192cd4fb329e GIT binary patch literal 39503 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/MLScores.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/MLScores.scala deleted file mode 100644 index 4ba79f485..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/MLScores.scala +++ /dev/null @@ -1,307 +0,0 @@ -package com.twitter.frigate.pushservice.model.candidate - -import com.twitter.frigate.common.base.FeatureMap -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.ml.HydrationContextBuilder -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.params.PushMLModel -import com.twitter.frigate.pushservice.params.WeightedOpenOrNtabClickModel -import com.twitter.nrel.hydration.push.HydrationContext -import com.twitter.timelines.configapi.FSParam -import com.twitter.util.Future -import java.util.concurrent.ConcurrentHashMap -import scala.collection.concurrent.{Map => CMap} -import scala.collection.convert.decorateAsScala._ - -trait MLScores { - - self: PushCandidate => - - lazy val candidateHydrationContext: Future[HydrationContext] = HydrationContextBuilder.build(self) - - def weightedOpenOrNtabClickModelScorer: PushMLModelScorer - - // Used to store the scores and avoid duplicate prediction - private val qualityModelScores: CMap[ - (PushMLModel.Value, WeightedOpenOrNtabClickModel.ModelNameType), - Future[Option[Double]] - ] = - new ConcurrentHashMap[(PushMLModel.Value, WeightedOpenOrNtabClickModel.ModelNameType), Future[ - Option[Double] - ]]().asScala - - def populateQualityModelScore( - pushMLModel: PushMLModel.Value, - modelVersion: WeightedOpenOrNtabClickModel.ModelNameType, - prob: Future[Option[Double]] - ) = { - val modelAndVersion = (pushMLModel, modelVersion) - if (!qualityModelScores.contains(modelAndVersion)) { - qualityModelScores += modelAndVersion -> prob - } - } - - // The ML scores that also depend on other candidates and are only available after all candidates are processed - // For example, the likelihood info for Importance Sampling - private lazy val crossCandidateMlScores: CMap[String, Double] = - new ConcurrentHashMap[String, Double]().asScala - - def populateCrossCandidateMlScores(scoreName: String, score: Double): Unit = { - if (crossCandidateMlScores.contains(scoreName)) { - throw new Exception( - s"$scoreName has been populated in the CrossCandidateMlScores!\n" + - s"Existing crossCandidateMlScores are ${crossCandidateMlScores}\n" - ) - } - crossCandidateMlScores += scoreName -> score - } - - def getMLModelScore( - pushMLModel: PushMLModel.Value, - modelVersion: WeightedOpenOrNtabClickModel.ModelNameType - ): Future[Option[Double]] = { - qualityModelScores.getOrElseUpdate( - (pushMLModel, modelVersion), - weightedOpenOrNtabClickModelScorer - .singlePredicationForModelVersion(modelVersion, self, Some(pushMLModel)) - ) - } - - def getMLModelScoreWithoutUpdate( - pushMLModel: PushMLModel.Value, - modelVersion: WeightedOpenOrNtabClickModel.ModelNameType - ): Future[Option[Double]] = { - qualityModelScores.getOrElse( - (pushMLModel, modelVersion), - Future.None - ) - } - - def getWeightedOpenOrNtabClickModelScore( - weightedOONCModelParam: FSParam[WeightedOpenOrNtabClickModel.ModelNameType] - ): Future[Option[Double]] = { - getMLModelScore( - PushMLModel.WeightedOpenOrNtabClickProbability, - target.params(weightedOONCModelParam) - ) - } - - /* After we unify the ranking and filtering models, we follow the iteration process below - When improving the WeightedOONC model, - 1) Run experiment which only replace the ranking model - 2) Make decisions according to the experiment results - 3) Use the ranking model for filtering - 4) Adjust percentile thresholds if necessary - */ - lazy val mrWeightedOpenOrNtabClickRankingProbability: Future[Option[Double]] = - target.rankingModelParam.flatMap { modelParam => - getWeightedOpenOrNtabClickModelScore(modelParam) - } - - def getBigFilteringScore( - pushMLModel: PushMLModel.Value, - modelVersion: WeightedOpenOrNtabClickModel.ModelNameType - ): Future[Option[Double]] = { - mrWeightedOpenOrNtabClickRankingProbability.flatMap { - case Some(rankingScore) => - // Adds ranking score to feature map (we must ensure the feature key is also in the feature context) - mergeFeatures( - FeatureMap( - numericFeatures = Map("scribe.WeightedOpenOrNtabClickProbability" -> rankingScore) - ) - ) - getMLModelScore(pushMLModel, modelVersion) - case _ => Future.None - } - } - - def getWeightedOpenOrNtabClickScoreForScribing(): Seq[Future[Map[String, Double]]] = { - Seq( - mrWeightedOpenOrNtabClickRankingProbability.map { - case Some(score) => Map(PushMLModel.WeightedOpenOrNtabClickProbability.toString -> score) - case _ => Map.empty[String, Double] - }, - Future - .join( - target.rankingModelParam, - mrWeightedOpenOrNtabClickRankingProbability - ).map { - case (rankingModelParam, Some(score)) => - Map(target.params(rankingModelParam).toString -> score) - case _ => Map.empty[String, Double] - } - ) - } - - def getNsfwScoreForScribing(): Seq[Future[Map[String, Double]]] = { - val nsfwScoreFut = getMLModelScoreWithoutUpdate( - PushMLModel.HealthNsfwProbability, - target.params(PushFeatureSwitchParams.BqmlHealthModelTypeParam)) - Seq(nsfwScoreFut.map { nsfwScoreOpt => - nsfwScoreOpt - .map(nsfwScore => Map(PushMLModel.HealthNsfwProbability.toString -> nsfwScore)).getOrElse( - Map.empty[String, Double]) - }) - } - - def getBigFilteringSupervisedScoresForScribing(): Seq[Future[Map[String, Double]]] = { - if (target.params( - PushFeatureSwitchParams.EnableMrRequestScribingBigFilteringSupervisedScores)) { - Seq( - mrBigFilteringSupervisedSendingScore.map { - case Some(score) => - Map(PushMLModel.BigFilteringSupervisedSendingModel.toString -> score) - case _ => Map.empty[String, Double] - }, - mrBigFilteringSupervisedWithoutSendingScore.map { - case Some(score) => - Map(PushMLModel.BigFilteringSupervisedWithoutSendingModel.toString -> score) - case _ => Map.empty[String, Double] - } - ) - } else Seq.empty[Future[Map[String, Double]]] - } - - def getBigFilteringRLScoresForScribing(): Seq[Future[Map[String, Double]]] = { - if (target.params(PushFeatureSwitchParams.EnableMrRequestScribingBigFilteringRLScores)) { - Seq( - mrBigFilteringRLSendingScore.map { - case Some(score) => Map(PushMLModel.BigFilteringRLSendingModel.toString -> score) - case _ => Map.empty[String, Double] - }, - mrBigFilteringRLWithoutSendingScore.map { - case Some(score) => Map(PushMLModel.BigFilteringRLWithoutSendingModel.toString -> score) - case _ => Map.empty[String, Double] - } - ) - } else Seq.empty[Future[Map[String, Double]]] - } - - def buildModelScoresSeqForScribing(): Seq[Future[Map[String, Double]]] = { - getWeightedOpenOrNtabClickScoreForScribing() ++ - getBigFilteringSupervisedScoresForScribing() ++ - getBigFilteringRLScoresForScribing() ++ - getNsfwScoreForScribing() - } - - lazy val mrBigFilteringSupervisedSendingScore: Future[Option[Double]] = - getBigFilteringScore( - PushMLModel.BigFilteringSupervisedSendingModel, - target.params(PushFeatureSwitchParams.BigFilteringSupervisedSendingModelParam) - ) - - lazy val mrBigFilteringSupervisedWithoutSendingScore: Future[Option[Double]] = - getBigFilteringScore( - PushMLModel.BigFilteringSupervisedWithoutSendingModel, - target.params(PushFeatureSwitchParams.BigFilteringSupervisedWithoutSendingModelParam) - ) - - lazy val mrBigFilteringRLSendingScore: Future[Option[Double]] = - getBigFilteringScore( - PushMLModel.BigFilteringRLSendingModel, - target.params(PushFeatureSwitchParams.BigFilteringRLSendingModelParam) - ) - - lazy val mrBigFilteringRLWithoutSendingScore: Future[Option[Double]] = - getBigFilteringScore( - PushMLModel.BigFilteringRLWithoutSendingModel, - target.params(PushFeatureSwitchParams.BigFilteringRLWithoutSendingModelParam) - ) - - lazy val mrWeightedOpenOrNtabClickFilteringProbability: Future[Option[Double]] = - getWeightedOpenOrNtabClickModelScore( - target.filteringModelParam - ) - - lazy val mrQualityUprankingProbability: Future[Option[Double]] = - getMLModelScore( - PushMLModel.FilteringProbability, - target.params(PushFeatureSwitchParams.QualityUprankingModelTypeParam) - ) - - lazy val mrNsfwScore: Future[Option[Double]] = - getMLModelScoreWithoutUpdate( - PushMLModel.HealthNsfwProbability, - target.params(PushFeatureSwitchParams.BqmlHealthModelTypeParam) - ) - - // MR quality upranking param - private val qualityUprankingBoost: String = "QualityUprankingBoost" - private val producerQualityUprankingBoost: String = "ProducerQualityUprankingBoost" - private val qualityUprankingInfo: CMap[String, Double] = - new ConcurrentHashMap[String, Double]().asScala - - lazy val mrQualityUprankingBoost: Option[Double] = - qualityUprankingInfo.get(qualityUprankingBoost) - lazy val mrProducerQualityUprankingBoost: Option[Double] = - qualityUprankingInfo.get(producerQualityUprankingBoost) - - def setQualityUprankingBoost(boost: Double) = - if (qualityUprankingInfo.contains(qualityUprankingBoost)) { - qualityUprankingInfo(qualityUprankingBoost) = boost - } else { - qualityUprankingInfo += qualityUprankingBoost -> boost - } - def setProducerQualityUprankingBoost(boost: Double) = - if (qualityUprankingInfo.contains(producerQualityUprankingBoost)) { - qualityUprankingInfo(producerQualityUprankingBoost) = boost - } else { - qualityUprankingInfo += producerQualityUprankingBoost -> boost - } - - private lazy val mrModelScoresFut: Future[Map[String, Double]] = { - if (self.target.isLoggedOutUser) { - Future.value(Map.empty[String, Double]) - } else { - Future - .collectToTry { - buildModelScoresSeqForScribing() - }.map { scoreTrySeq => - scoreTrySeq - .collect { - case result if result.isReturn => result.get() - }.reduce(_ ++ _) - } - } - } - - // Internal model scores (scores that are independent of other candidates) for scribing - lazy val modelScores: Future[Map[String, Double]] = - target.dauProbability.flatMap { dauProbabilityOpt => - val dauProbScoreMap = dauProbabilityOpt - .map(_.probability).map { dauProb => - PushMLModel.DauProbability.toString -> dauProb - }.toMap - - // Avoid unnecessary MR model scribing - if (target.isDarkWrite) { - mrModelScoresFut.map(dauProbScoreMap ++ _) - } else if (RecTypes.isSendHandlerType(commonRecType) && !RecTypes - .sendHandlerTypesUsingMrModel(commonRecType)) { - Future.value(dauProbScoreMap) - } else { - mrModelScoresFut.map(dauProbScoreMap ++ _) - } - } - - // We will scribe both internal ML scores and cross-Candidate scores - def getModelScoresforScribing(): Future[Map[String, Double]] = { - if (RecTypes.notEligibleForModelScoreTracking(commonRecType) || self.target.isLoggedOutUser) { - Future.value(Map.empty[String, Double]) - } else { - modelScores.map { internalScores => - if (internalScores.keySet.intersect(crossCandidateMlScores.keySet).nonEmpty) { - throw new Exception( - "crossCandidateMlScores overlap internalModelScores\n" + - s"internalScores keySet: ${internalScores.keySet}\n" + - s"crossCandidateScores keySet: ${crossCandidateMlScores.keySet}\n" - ) - } - - internalScores ++ crossCandidateMlScores - } - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/QualityScribing.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/QualityScribing.docx new file mode 100644 index 0000000000000000000000000000000000000000..0b31be39a5666070a21998b6eb1fe5df65322e70 GIT binary patch literal 37848 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 CMap} -import scala.collection.convert.decorateAsScala._ - -trait QualityScribing { - self: PushCandidate with MLScores => - - // Use to store other scores (to avoid duplicate queries to other services, e.g. HSS) - private val externalCachedScores: CMap[String, Future[Option[Double]]] = - new ConcurrentHashMap[String, Future[Option[Double]]]().asScala - - /** - * Retrieves the model version as specified by the corresponding FS param. - * This model version will be used for getting the cached score or triggering - * a prediction request. - * - * @param modelName The score we will like to scribe - */ - private def getModelVersion( - modelName: HighQualityScribingScores.Name - ): String = { - modelName match { - case HighQualityScribingScores.HeavyRankingScore => - target.params(PushFeatureSwitchParams.HighQualityCandidatesHeavyRankingModel) - case HighQualityScribingScores.NonPersonalizedQualityScoreUsingCnn => - target.params(PushFeatureSwitchParams.HighQualityCandidatesNonPersonalizedQualityCnnModel) - case HighQualityScribingScores.BqmlNsfwScore => - target.params(PushFeatureSwitchParams.HighQualityCandidatesBqmlNsfwModel) - case HighQualityScribingScores.BqmlReportScore => - target.params(PushFeatureSwitchParams.HighQualityCandidatesBqmlReportModel) - } - } - - /** - * Retrieves the score for scribing either from a cached value or - * by generating a prediction request. This will increase model QPS - * - * @param pushMLModel This represents the prefix of the model name (i.e. [pushMLModel]_[version]) - * @param scoreName The name to be use when scribing this score - */ - def getScribingScore( - pushMLModel: PushMLModel.Value, - scoreName: HighQualityScribingScores.Name - ): Future[(String, Option[Double])] = { - getMLModelScore( - pushMLModel, - getModelVersion(scoreName) - ).map { scoreOpt => - scoreName.toString -> scoreOpt - } - } - - /** - * Retrieves the score for scribing if it has been computed/cached before otherwise - * it will return Future.None - * - * @param pushMLModel This represents the prefix of the model name (i.e. [pushMLModel]_[version]) - * @param scoreName The name to be use when scribing this score - */ - def getScribingScoreWithoutUpdate( - pushMLModel: PushMLModel.Value, - scoreName: HighQualityScribingScores.Name - ): Future[(String, Option[Double])] = { - getMLModelScoreWithoutUpdate( - pushMLModel, - getModelVersion(scoreName) - ).map { scoreOpt => - scoreName.toString -> scoreOpt - } - } - - /** - * Caches the given score future - * - * @param scoreName The name to be use when scribing this score - * @param scoreFut Future mapping scoreName -> scoreOpt - */ - def cacheExternalScore(scoreName: String, scoreFut: Future[Option[Double]]) = { - if (!externalCachedScores.contains(scoreName)) { - externalCachedScores += scoreName -> scoreFut - } - } - - /** - * Returns all external scores future cached as a sequence - */ - def getExternalCachedScores: Seq[Future[(String, Option[Double])]] = { - externalCachedScores.map { - case (modelName, scoreFut) => - scoreFut.map { scoreOpt => modelName -> scoreOpt } - }.toSeq - } - - def getExternalCachedScoreByName(name: String): Future[Option[Double]] = { - externalCachedScores.getOrElse(name, Future.None) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/Scriber.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/Scriber.docx new file mode 100644 index 0000000000000000000000000000000000000000..761681f3efb0dac8e90576a2df23ea8999d2a273 GIT binary patch literal 39749 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/Scriber.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/Scriber.scala deleted file mode 100644 index a43530b44..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/candidate/Scriber.scala +++ /dev/null @@ -1,277 +0,0 @@ -package com.twitter.frigate.pushservice.model.candidate - -import com.twitter.frigate.data_pipeline.features_common.PushQualityModelFeatureContext.featureContext -import com.twitter.frigate.data_pipeline.features_common.PushQualityModelUtil -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.params.PushParams -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.common.util.NotificationScribeUtil -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.OutOfNetworkTweetPushCandidate -import com.twitter.frigate.pushservice.model.TopicProofTweetPushCandidate -import com.twitter.frigate.pushservice.ml.HydrationContextBuilder -import com.twitter.frigate.pushservice.predicate.quality_model_predicate.PDauCohort -import com.twitter.frigate.pushservice.predicate.quality_model_predicate.PDauCohortUtil -import com.twitter.frigate.pushservice.util.Candidate2FrigateNotification -import com.twitter.frigate.pushservice.util.MediaAnnotationsUtil.sensitiveMediaCategoryFeatureName -import com.twitter.frigate.scribe.thriftscala.FrigateNotificationScribeType -import com.twitter.frigate.scribe.thriftscala.NotificationScribe -import com.twitter.frigate.scribe.thriftscala.PredicateDetailedInfo -import com.twitter.frigate.scribe.thriftscala.PushCapInfo -import com.twitter.frigate.thriftscala.ChannelName -import com.twitter.frigate.thriftscala.FrigateNotification -import com.twitter.frigate.thriftscala.OverrideInfo -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.hermit.model.user_state.UserState.UserState -import com.twitter.ibis2.service.thriftscala.Ibis2Response -import com.twitter.ml.api.util.ScalaToJavaDataRecordConversions -import com.twitter.nrel.heavyranker.FeatureHydrator -import com.twitter.util.Future -import java.util.UUID -import java.util.concurrent.ConcurrentHashMap -import scala.collection.concurrent.{Map => CMap} -import scala.collection.Map -import scala.collection.convert.decorateAsScala._ - -trait Scriber { - self: PushCandidate => - - def statsReceiver: StatsReceiver - - def frigateNotification: FrigateNotification = Candidate2FrigateNotification - .getFrigateNotification(self)(statsReceiver) - .copy(copyAggregationId = self.copyAggregationId) - - lazy val impressionId: String = UUID.randomUUID.toString.replaceAll("-", "") - - // Used to store the score and threshold for predicates - // Map(predicate name, (score, threshold, filter?)) - private val predicateScoreAndThreshold: CMap[String, PredicateDetailedInfo] = - new ConcurrentHashMap[String, PredicateDetailedInfo]().asScala - - def cachePredicateInfo( - predName: String, - predScore: Double, - predThreshold: Double, - predResult: Boolean, - additionalInformation: Option[Map[String, Double]] = None - ) = { - if (!predicateScoreAndThreshold.contains(predName)) { - predicateScoreAndThreshold += predName -> PredicateDetailedInfo( - predName, - predScore, - predThreshold, - predResult, - additionalInformation) - } - } - - def getCachedPredicateInfo(): Seq[PredicateDetailedInfo] = predicateScoreAndThreshold.values.toSeq - - def frigateNotificationForPersistence( - channels: Seq[ChannelName], - isSilentPush: Boolean, - overrideInfoOpt: Option[OverrideInfo] = None, - copyFeaturesList: Set[String] - ): Future[FrigateNotification] = { - - // record display location for frigate notification - statsReceiver - .scope("FrigateNotificationForPersistence") - .scope("displayLocation") - .counter(frigateNotification.notificationDisplayLocation.name) - .incr() - - val getModelScores = self.getModelScoresforScribing() - - Future.join(getModelScores, self.target.targetMrUserState).map { - case (mlScores, mrUserState) => - frigateNotification.copy( - impressionId = Some(impressionId), - isSilentPush = Some(isSilentPush), - overrideInfo = overrideInfoOpt, - mlModelScores = Some(mlScores), - mrUserState = mrUserState.map(_.name), - copyFeatures = Some(copyFeaturesList.toSeq) - ) - } - } - // scribe data - private def getNotificationScribe( - notifForPersistence: FrigateNotification, - userState: Option[UserState], - dauCohort: PDauCohort.Value, - ibis2Response: Option[Ibis2Response], - tweetAuthorId: Option[Long], - recUserId: Option[Long], - modelScoresMap: Option[Map[String, Double]], - primaryClient: Option[String], - isMrBackfillCR: Option[Boolean] = None, - tagsCR: Option[Seq[String]] = None, - gizmoduckTargetUser: Option[User], - predicateDetailedInfoList: Option[Seq[PredicateDetailedInfo]] = None, - pushCapInfoList: Option[Seq[PushCapInfo]] = None - ): NotificationScribe = { - NotificationScribe( - FrigateNotificationScribeType.SendMessage, - System.currentTimeMillis(), - targetUserId = Some(self.target.targetId), - timestampKeyForHistoryV2 = Some(createdAt.inSeconds), - sendType = NotificationScribeUtil.convertToScribeDisplayLocation( - self.frigateNotification.notificationDisplayLocation - ), - recommendationType = NotificationScribeUtil.convertToScribeRecommendationType( - self.frigateNotification.commonRecommendationType - ), - commonRecommendationType = Some(self.frigateNotification.commonRecommendationType), - fromPushService = Some(true), - frigateNotification = Some(notifForPersistence), - impressionId = Some(impressionId), - skipModelInfo = target.skipModelInfo, - ibis2Response = ibis2Response, - tweetAuthorId = tweetAuthorId, - scribeFeatures = Some(target.noSkipButScribeFeatures), - userState = userState.map(_.toString), - pDauCohort = Some(dauCohort.toString), - recommendedUserId = recUserId, - modelScores = modelScoresMap, - primaryClient = primaryClient, - isMrBackfillCR = isMrBackfillCR, - tagsCR = tagsCR, - targetUserType = gizmoduckTargetUser.map(_.userType), - predicateDetailedInfoList = predicateDetailedInfoList, - pushCapInfoList = pushCapInfoList - ) - } - - def scribeData( - ibis2Response: Option[Ibis2Response] = None, - isSilentPush: Boolean = false, - overrideInfoOpt: Option[OverrideInfo] = None, - copyFeaturesList: Set[String] = Set.empty, - channels: Seq[ChannelName] = Seq.empty - ): Future[NotificationScribe] = { - - val recTweetAuthorId = self match { - case t: TweetCandidate with TweetAuthor => t.authorId - case _ => None - } - - val recUserId = self match { - case u: UserCandidate => Some(u.userId) - case _ => None - } - - val isMrBackfillCR = self match { - case t: OutOfNetworkTweetPushCandidate => t.isMrBackfillCR - case _ => None - } - - val tagsCR = self match { - case t: OutOfNetworkTweetPushCandidate => - t.tagsCR.map { tags => - tags.map(_.toString) - } - case t: TopicProofTweetPushCandidate => - t.tagsCR.map { tags => - tags.map(_.toString) - } - case _ => None - } - - Future - .join( - frigateNotificationForPersistence( - channels = channels, - isSilentPush = isSilentPush, - overrideInfoOpt = overrideInfoOpt, - copyFeaturesList = copyFeaturesList - ), - target.targetUserState, - PDauCohortUtil.getPDauCohort(target), - target.deviceInfo, - target.targetUser - ) - .flatMap { - case (notifForPersistence, userState, dauCohort, deviceInfo, gizmoduckTargetUserOpt) => - val primaryClient = deviceInfo.flatMap(_.guessedPrimaryClient).map(_.toString) - val cachedPredicateInfo = - if (self.target.params(PushParams.EnablePredicateDetailedInfoScribing)) { - Some(getCachedPredicateInfo()) - } else None - - val cachedPushCapInfo = - if (self.target - .params(PushParams.EnablePushCapInfoScribing)) { - Some(target.finalPushcapAndFatigue.values.toSeq) - } else None - - val data = getNotificationScribe( - notifForPersistence, - userState, - dauCohort, - ibis2Response, - recTweetAuthorId, - recUserId, - notifForPersistence.mlModelScores, - primaryClient, - isMrBackfillCR, - tagsCR, - gizmoduckTargetUserOpt, - cachedPredicateInfo, - cachedPushCapInfo - ) - //Don't scribe features for CRTs not eligible for ML Layer - if ((target.isModelTrainingData || target.scribeFeatureWithoutHydratingNewFeatures) - && !RecTypes.notEligibleForModelScoreTracking(self.commonRecType)) { - // scribe all the features for the model training data - self.getFeaturesForScribing.map { scribedFeatureMap => - if (target.params(PushParams.EnableScribingMLFeaturesAsDataRecord) && !target.params( - PushFeatureSwitchParams.EnableMrScribingMLFeaturesAsFeatureMapForStaging)) { - val scribedFeatureDataRecord = - ScalaToJavaDataRecordConversions.javaDataRecord2ScalaDataRecord( - PushQualityModelUtil.adaptToDataRecord(scribedFeatureMap, featureContext)) - data.copy( - featureDataRecord = Some(scribedFeatureDataRecord) - ) - } else { - data.copy(features = - Some(PushQualityModelUtil.convertFeatureMapToFeatures(scribedFeatureMap))) - } - } - } else Future.value(data) - } - } - - def getFeaturesForScribing: Future[FeatureMap] = { - target.featureMap - .flatMap { targetFeatureMap => - val onlineFeatureMap = targetFeatureMap ++ self - .candidateFeatureMap() // targetFeatureMap includes target core user history features - - val filteredFeatureMap = { - onlineFeatureMap.copy( - sparseContinuousFeatures = onlineFeatureMap.sparseContinuousFeatures.filterKeys( - !_.equals(sensitiveMediaCategoryFeatureName)) - ) - } - - val targetHydrationContext = HydrationContextBuilder.build(self.target) - val candidateHydrationContext = HydrationContextBuilder.build(self) - - val featureMapFut = targetHydrationContext.join(candidateHydrationContext).flatMap { - case (targetContext, candidateContext) => - FeatureHydrator.getFeatures( - candidateHydrationContext = candidateContext, - targetHydrationContext = targetContext, - onlineFeatures = filteredFeatureMap, - statsReceiver = statsReceiver) - } - - featureMapFut - } - } - -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/CustomConfigurationMapForIbis.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/CustomConfigurationMapForIbis.docx new file mode 100644 index 0000000000000000000000000000000000000000..eecd049dc843d741cb1ee626f4cbd0594445925a GIT binary patch literal 36975 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 Q - - lazy val customConfigMapsJsonFut: Future[String] = { - customFieldsMapFut.map { customFields => - JsonMarshal.toJson(customFields) - } - } - - lazy val customConfigMapsFut: Future[Map[String, String]] = { - if (self.target.isLoggedOutUser) { - Future.value(Map.empty[String, String]) - } else { - customConfigMapsJsonFut.map { customConfigMapsJson => - Map("custom_config" -> customConfigMapsJson) - } - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/DiscoverTwitterPushIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/DiscoverTwitterPushIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..ccae5a75797dae9cce8d150fddb0134f21f6db6a GIT binary patch literal 36944 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 - - private lazy val targetModelValues: Map[String, String] = Map( - "target_user" -> target.targetId.toString - ) - - override lazy val modelValues: Future[Map[String, String]] = - mergeFutModelValues(super.modelValues, Future.value(targetModelValues)) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/F1FirstDegreeTweetIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/F1FirstDegreeTweetIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..12334797b395c8ce2ec5e4d0055469c19813fcb7 GIT binary patch literal 37056 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 - - override lazy val scopedStats: StatsReceiver = statsReceiver.scope(getClass.getSimpleName) - - override lazy val tweetModelValues: Future[Map[String, String]] = { - for { - superModelValues <- super.tweetModelValues - tweetInlineModelValues <- tweetInlineActionModelValue - } yield { - superModelValues ++ otherModelValues ++ mediaModelValue ++ tweetInlineModelValues ++ inlineVideoMediaMap - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/Ibis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/Ibis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..72f8338711f890cd7ffb735b3902e1a32be8419c GIT binary patch literal 38147 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/Ibis2Hydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/Ibis2Hydrator.scala deleted file mode 100644 index fd7d26186..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/Ibis2Hydrator.scala +++ /dev/null @@ -1,127 +0,0 @@ -package com.twitter.frigate.pushservice.model.ibis - -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.common.util.MRPushCopy -import com.twitter.frigate.common.util.MrPushCopyObjects -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.{PushFeatureSwitchParams => FS} -import com.twitter.ibis2.service.thriftscala.Flags -import com.twitter.ibis2.service.thriftscala.Ibis2Request -import com.twitter.ibis2.service.thriftscala.RecipientSelector -import com.twitter.ibis2.service.thriftscala.ResponseFlags -import com.twitter.util.Future -import scala.util.control.NoStackTrace -import com.twitter.ni.lib.logged_out_transform.Ibis2RequestTransform - -class PushCopyIdNotFoundException(private val message: String) - extends Exception(message) - with NoStackTrace - -class InvalidPushCopyIdException(private val message: String) - extends Exception(message) - with NoStackTrace - -trait Ibis2HydratorForCandidate - extends CandidatePushCopy - with OverrideForIbis2Request - with CustomConfigurationMapForIbis { - self: PushCandidate => - - lazy val silentPushModelValue: Map[String, String] = - if (RecTypes.silentPushDefaultEnabledCrts.contains(commonRecType)) { - Map.empty - } else { - Map("is_silent_push" -> "true") - } - - private def transformRelevanceScore( - mlScore: Double, - scoreRange: Seq[Double] - ): Double = { - val (lowerBound, upperBound) = (scoreRange.head, scoreRange.last) - (mlScore * (upperBound - lowerBound)) + lowerBound - } - - private def getBoundedMlScore(mlScore: Double): Double = { - if (RecTypes.isMagicFanoutEventType(commonRecType)) { - val mfScoreRange = target.params(FS.MagicFanoutRelevanceScoreRange) - transformRelevanceScore(mlScore, mfScoreRange) - } else { - val mrScoreRange = target.params(FS.MagicRecsRelevanceScoreRange) - transformRelevanceScore(mlScore, mrScoreRange) - } - } - - lazy val relevanceScoreMapFut: Future[Map[String, String]] = { - mrWeightedOpenOrNtabClickRankingProbability.map { - case Some(mlScore) if target.params(FS.IncludeRelevanceScoreInIbis2Payload) => - val boundedMlScore = getBoundedMlScore(mlScore) - Map("relevance_score" -> boundedMlScore.toString) - case _ => Map.empty[String, String] - } - } - - def customFieldsMapFut: Future[Map[String, String]] = relevanceScoreMapFut - - //override is only enabled for RFPH CRT - def modelValues: Future[Map[String, String]] = { - Future.join(overrideModelValueFut, customConfigMapsFut).map { - case (overrideModelValue, customConfig) => - overrideModelValue ++ silentPushModelValue ++ customConfig - } - } - - def modelName: String = pushCopy.ibisPushModelName - - def senderId: Option[Long] = None - - def ibis2Request: Future[Option[Ibis2Request]] = { - Future.join(self.target.loggedOutMetadata, modelValues).map { - case (Some(metadata), modelVals) => - Some( - Ibis2RequestTransform - .apply(metadata, modelName, modelVals).copy( - senderId = senderId, - flags = Some(Flags( - darkWrite = Some(target.isDarkWrite), - skipDupcheck = target.pushContext.flatMap(_.useDebugHandler), - responseFlags = Some(ResponseFlags(stringTelemetry = Some(true))) - )) - )) - case (None, modelVals) => - Some( - Ibis2Request( - recipientSelector = RecipientSelector(Some(target.targetId)), - modelName = modelName, - modelValues = Some(modelVals), - senderId = senderId, - flags = Some( - Flags( - darkWrite = Some(target.isDarkWrite), - skipDupcheck = target.pushContext.flatMap(_.useDebugHandler), - responseFlags = Some(ResponseFlags(stringTelemetry = Some(true))) - ) - ) - )) - } - } -} - -trait CandidatePushCopy { - self: PushCandidate => - - final lazy val pushCopy: MRPushCopy = - pushCopyId match { - case Some(pushCopyId) => - MrPushCopyObjects - .getCopyFromId(pushCopyId) - .getOrElse( - throw new InvalidPushCopyIdException( - s"Invalid push copy id: $pushCopyId for ${self.commonRecType}")) - - case None => - throw new PushCopyIdNotFoundException( - s"PushCopy not found in frigateNotification for ${self.commonRecType}" - ) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/InlineActionIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/InlineActionIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..722709ba8d04736be13a3e2b58eb731a46dd1cd6 GIT binary patch literal 36843 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 z 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/InlineActionIbis2Hydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/InlineActionIbis2Hydrator.scala deleted file mode 100644 index 8e927254a..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/InlineActionIbis2Hydrator.scala +++ /dev/null @@ -1,12 +0,0 @@ -package com.twitter.frigate.pushservice.model.ibis - -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.util.InlineActionUtil -import com.twitter.util.Future - -trait InlineActionIbis2Hydrator { - self: PushCandidate => - - lazy val tweetInlineActionModelValue: Future[Map[String, String]] = - InlineActionUtil.getTweetInlineActionValue(target) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ListIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ListIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..a738cd9f24e292d1b69a9d029d97dbf0704b3f0c GIT binary patch literal 36990 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 lg{~jHJ&4dR+J= - - override lazy val senderId: Option[Long] = Some(0L) - - override lazy val modelValues: Future[Map[String, String]] = - Future.join(listName, listOwnerId).map { - case (nameOpt, authorId) => - Map( - "list" -> listId.toString, - "list_name" -> nameOpt - .getOrElse(""), - "list_author" -> s"${authorId.getOrElse(0L)}" - ) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutCreatorEventIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutCreatorEventIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..7a15510970e6e5578cbf0ff7ff96bf730e38f2a7 GIT binary patch literal 37107 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 - - val userMap = Map( - "handle" -> userProfile.screenName, - "display_name" -> userProfile.name - ) - - override val senderId = hydratedCreator.map(_.id) - - override lazy val modelValues: Future[Map[String, String]] = - mergeModelValues(super.modelValues, userMap) - - override val ibis2Request = creatorFanoutType match { - case CreatorFanoutType.UserSubscription => Future.None - case CreatorFanoutType.NewCreator => super.ibis2Request - case _ => super.ibis2Request - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutNewsEventIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutNewsEventIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..57854af95c8ba982dbefc4542112b4f80cc8798e GIT binary patch literal 37839 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutNewsEventIbis2Hydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutNewsEventIbis2Hydrator.scala deleted file mode 100644 index a1b073a38..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutNewsEventIbis2Hydrator.scala +++ /dev/null @@ -1,103 +0,0 @@ -package com.twitter.frigate.pushservice.model.ibis - -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.MagicFanoutEventHydratedCandidate -import com.twitter.frigate.pushservice.params.PushConstants -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.predicate.magic_fanout.MagicFanoutPredicatesUtil -import com.twitter.frigate.pushservice.util.PushIbisUtil._ -import com.twitter.util.Future - -trait MagicFanoutNewsEventIbis2Hydrator extends Ibis2HydratorForCandidate { - self: PushCandidate with MagicFanoutEventHydratedCandidate => - - override lazy val senderId: Option[Long] = { - val isUgmMoment = self.semanticCoreEntityTags.values.flatten.toSet - .contains(MagicFanoutPredicatesUtil.UgmMomentTag) - - owningTwitterUserIds.headOption match { - case Some(owningTwitterUserId) - if isUgmMoment && target.params( - PushFeatureSwitchParams.MagicFanoutNewsUserGeneratedEventsEnable) => - Some(owningTwitterUserId) - case _ => None - } - } - - lazy val stats = self.statsReceiver.scope("MagicFanout") - lazy val defaultImageCounter = stats.counter("default_image") - lazy val requestImageCounter = stats.counter("request_num") - lazy val noneImageCounter = stats.counter("none_num") - - private def getModelValueMediaUrl( - urlOpt: Option[String], - mapKey: String - ): Option[(String, String)] = { - requestImageCounter.incr() - urlOpt match { - case Some(PushConstants.DefaultEventMediaUrl) => - defaultImageCounter.incr() - None - case Some(url) => Some(mapKey -> url) - case None => - noneImageCounter.incr() - None - } - } - - private lazy val eventModelValuesFut: Future[Map[String, String]] = { - for { - title <- eventTitleFut - squareImageUrl <- squareImageUrlFut - primaryImageUrl <- primaryImageUrlFut - eventDescriptionOpt <- eventDescriptionFut - } yield { - - val authorId = owningTwitterUserIds.headOption match { - case Some(author) - if target.params(PushFeatureSwitchParams.MagicFanoutNewsUserGeneratedEventsEnable) => - Some("author" -> author.toString) - case _ => None - } - - val eventDescription = eventDescriptionOpt match { - case Some(description) - if target.params(PushFeatureSwitchParams.MagicFanoutNewsEnableDescriptionCopy) => - Some("event_description" -> description) - case _ => - None - } - - Map( - "event_id" -> s"$eventId", - "event_title" -> title - ) ++ - getModelValueMediaUrl(squareImageUrl, "square_media_url") ++ - getModelValueMediaUrl(primaryImageUrl, "media_url") ++ - authorId ++ - eventDescription - } - } - - private lazy val topicValuesFut: Future[Map[String, String]] = { - if (target.params(PushFeatureSwitchParams.EnableTopicCopyForMF)) { - followedTopicLocalizedEntities.map(_.headOption).flatMap { - case Some(localizedEntity) => - Future.value(Map("topic_name" -> localizedEntity.localizedNameForDisplay)) - case _ => - ergLocalizedEntities.map(_.headOption).map { - case Some(localizedEntity) - if target.params(PushFeatureSwitchParams.EnableTopicCopyForImplicitTopics) => - Map("topic_name" -> localizedEntity.localizedNameForDisplay) - case _ => Map.empty[String, String] - } - } - } else { - Future.value(Map.empty[String, String]) - } - } - - override lazy val modelValues: Future[Map[String, String]] = - mergeFutModelValues(super.modelValues, mergeFutModelValues(eventModelValuesFut, topicValuesFut)) - -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutProductLaunchIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutProductLaunchIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..a419a8bb4a82b2f30ea72c03e86652c7c54c3648 GIT binary patch literal 37336 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 - - private def getProductInfoMap(productInfo: ProductInfo): Map[String, String] = { - val titleMap = productInfo.title - .map { title => - Map("title" -> title) - }.getOrElse(Map.empty) - val bodyMap = productInfo.body - .map { body => - Map("body" -> body) - }.getOrElse(Map.empty) - val deeplinkMap = productInfo.deeplink - .map { deeplink => - Map("deeplink" -> deeplink) - }.getOrElse(Map.empty) - - titleMap ++ bodyMap ++ deeplinkMap - } - - private lazy val landingPage: Map[String, String] = { - val urlFromFS = target.params(PushFeatureSwitchParams.ProductLaunchLandingPageDeepLink) - Map("push_land_url" -> urlFromFS) - } - - private lazy val customProductLaunchPushDetails: Map[String, String] = { - frigateNotification.magicFanoutProductLaunchNotification match { - case Some(productLaunchNotif) => - productLaunchNotif.productInfo match { - case Some(productInfo) => - getProductInfoMap(productInfo) - case _ => Map.empty - } - case _ => Map.empty - } - } - - override lazy val customFieldsMapFut: Future[Map[String, String]] = - mergeModelValues(super.customFieldsMapFut, customProductLaunchPushDetails) - - override lazy val modelValues: Future[Map[String, String]] = - mergeModelValues(super.modelValues, landingPage) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutSportsEventIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/MagicFanoutSportsEventIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..1b9f3adc9305190c2ec93f473371ea22af165d7a GIT binary patch literal 37703 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 xf-T@si)As6-kue - - lazy val stats = self.statsReceiver.scope("MagicFanoutSportsEvent") - lazy val defaultImageCounter = stats.counter("default_image") - lazy val requestImageCounter = stats.counter("request_num") - lazy val noneImageCounter = stats.counter("none_num") - - override lazy val relevanceScoreMapFut = Future.value(Map.empty[String, String]) - - private def getModelValueMediaUrl( - urlOpt: Option[String], - mapKey: String - ): Option[(String, String)] = { - requestImageCounter.incr() - urlOpt match { - case Some(PushConstants.DefaultEventMediaUrl) => - defaultImageCounter.incr() - None - case Some(url) => Some(mapKey -> url) - case None => - noneImageCounter.incr() - None - } - } - - private lazy val eventModelValuesFut: Future[Map[String, String]] = { - for { - title <- eventTitleFut - squareImageUrl <- squareImageUrlFut - primaryImageUrl <- primaryImageUrlFut - } yield { - Map( - "event_id" -> s"$eventId", - "event_title" -> title - ) ++ - getModelValueMediaUrl(squareImageUrl, "square_media_url") ++ - getModelValueMediaUrl(primaryImageUrl, "media_url") - } - } - - private lazy val sportsScoreValues: Future[Map[String, String]] = { - for { - scores <- gameScores - homeName <- homeTeamInfo.map(_.map(_.name)) - awayName <- awayTeamInfo.map(_.map(_.name)) - } yield { - if (awayName.isDefined && homeName.isDefined && scores.isDefined) { - scores.get match { - case game: SoccerGameScore => - MagicFanoutSportsUtil.getSoccerIbisMap(game) ++ Map( - "away_team" -> awayName.get, - "home_team" -> homeName.get - ) - case game: NflGameScore => - MagicFanoutSportsUtil.getNflIbisMap(game) ++ Map( - "away_team" -> MagicFanoutSportsUtil.getNFLReadableName(awayName.get), - "home_team" -> MagicFanoutSportsUtil.getNFLReadableName(homeName.get) - ) - case baseGameScore: BaseGameScore => - Map.empty[String, String] - } - } else Map.empty[String, String] - } - } - - override lazy val customFieldsMapFut: Future[Map[String, String]] = - mergeFutModelValues(super.customFieldsMapFut, sportsScoreValues) - - override lazy val modelValues: Future[Map[String, String]] = - mergeFutModelValues(super.modelValues, eventModelValuesFut) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OutOfNetworkTweetIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OutOfNetworkTweetIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..fa8c6a79a1c06dce05eac064697a747793b202fa GIT binary patch literal 37815 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 N5FcQ9*rm;V`yU?qyE*^> literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OutOfNetworkTweetIbis2Hydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OutOfNetworkTweetIbis2Hydrator.scala deleted file mode 100644 index c7bd051b7..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OutOfNetworkTweetIbis2Hydrator.scala +++ /dev/null @@ -1,90 +0,0 @@ -package com.twitter.frigate.pushservice.model.ibis - -import com.twitter.frigate.common.base.OutOfNetworkTweetCandidate -import com.twitter.frigate.common.base.TopicCandidate -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.common.rec_types.RecTypes._ -import com.twitter.frigate.common.util.MrPushCopyObjects -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.util.InlineActionUtil -import com.twitter.frigate.pushservice.util.PushIbisUtil.mergeModelValues -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.util.Future - -trait OutOfNetworkTweetIbis2HydratorForCandidate extends TweetCandidateIbis2Hydrator { - self: PushCandidate with OutOfNetworkTweetCandidate with TopicCandidate with TweetAuthorDetails => - - private lazy val useNewOonCopyValue = - if (target.params(PushFeatureSwitchParams.EnableNewMROONCopyForPush)) { - Map( - "use_new_oon_copy" -> "true" - ) - } else Map.empty[String, String] - - override lazy val tweetDynamicInlineActionsModelValues = - if (target.params(PushFeatureSwitchParams.EnableOONGeneratedInlineActions)) { - val actions = target.params(PushFeatureSwitchParams.OONTweetDynamicInlineActionsList) - InlineActionUtil.getGeneratedTweetInlineActions(target, statsReceiver, actions) - } else Map.empty[String, String] - - private lazy val ibtModelValues: Map[String, String] = - Map( - "is_tweet" -> s"${!(hasPhoto || hasVideo)}", - "is_photo" -> s"$hasPhoto", - "is_video" -> s"$hasVideo" - ) - - private lazy val launchVideosInImmersiveExploreValue = - Map( - "launch_videos_in_immersive_explore" -> s"${hasVideo && target.params(PushFeatureSwitchParams.EnableLaunchVideosInImmersiveExplore)}" - ) - - private lazy val oonTweetModelValues = - useNewOonCopyValue ++ ibtModelValues ++ tweetDynamicInlineActionsModelValues ++ launchVideosInImmersiveExploreValue - - lazy val useTopicCopyForMBCGIbis = mrModelingBasedTypes.contains(commonRecType) && target.params( - PushFeatureSwitchParams.EnableMrModelingBasedCandidatesTopicCopy) - lazy val useTopicCopyForFrsIbis = frsTypes.contains(commonRecType) && target.params( - PushFeatureSwitchParams.EnableFrsTweetCandidatesTopicCopy) - lazy val useTopicCopyForTagspaceIbis = tagspaceTypes.contains(commonRecType) && target.params( - PushFeatureSwitchParams.EnableHashspaceCandidatesTopicCopy) - - override lazy val modelName: String = { - if (localizedUttEntity.isDefined && - (useTopicCopyForMBCGIbis || useTopicCopyForFrsIbis || useTopicCopyForTagspaceIbis)) { - MrPushCopyObjects.TopicTweet.ibisPushModelName // uses topic copy - } else super.modelName - } - - lazy val exploreVideoParams: Map[String, String] = { - if (self.commonRecType == CommonRecommendationType.ExploreVideoTweet) { - Map( - "is_explore_video" -> "true" - ) - } else Map.empty[String, String] - } - - override lazy val customFieldsMapFut: Future[Map[String, String]] = - mergeModelValues(super.customFieldsMapFut, exploreVideoParams) - - override lazy val tweetModelValues: Future[Map[String, String]] = - if (localizedUttEntity.isDefined && - (useTopicCopyForMBCGIbis || useTopicCopyForFrsIbis || useTopicCopyForTagspaceIbis)) { - lazy val topicTweetModelValues: Map[String, String] = - Map("topic_name" -> s"${localizedUttEntity.get.localizedNameForDisplay}") - for { - superModelValues <- super.tweetModelValues - tweetInlineModelValue <- tweetInlineActionModelValue - } yield { - superModelValues ++ topicTweetModelValues ++ tweetInlineModelValue - } - } else { - for { - superModelValues <- super.tweetModelValues - tweetInlineModelValues <- tweetInlineActionModelValue - } yield { - superModelValues ++ mediaModelValue ++ oonTweetModelValues ++ tweetInlineModelValues ++ inlineVideoMediaMap - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OverrideForIbis2Request.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OverrideForIbis2Request.docx new file mode 100644 index 0000000000000000000000000000000000000000..45deb3146f3b9929de2f30511a1a405a38bc776a GIT binary patch literal 39027 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 FOc9 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OverrideForIbis2Request.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OverrideForIbis2Request.scala deleted file mode 100644 index e802a6421..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/OverrideForIbis2Request.scala +++ /dev/null @@ -1,210 +0,0 @@ -package com.twitter.frigate.pushservice.model.ibis - -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.common.store.deviceinfo.DeviceInfo -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.params.{PushFeatureSwitchParams => FSParams} -import com.twitter.frigate.pushservice.predicate.ntab_caret_fatigue.ContinuousFunction -import com.twitter.frigate.pushservice.predicate.ntab_caret_fatigue.ContinuousFunctionParam -import com.twitter.frigate.pushservice.util.OverrideNotificationUtil -import com.twitter.frigate.pushservice.util.PushCapUtil -import com.twitter.frigate.pushservice.util.PushDeviceUtil -import com.twitter.frigate.thriftscala.CommonRecommendationType.MagicFanoutSportsEvent -import com.twitter.ibis2.lib.util.JsonMarshal -import com.twitter.util.Future - -trait OverrideForIbis2Request { - self: PushCandidate => - - private lazy val overrideStats = self.statsReceiver.scope("override_for_ibis2") - - private lazy val addedOverrideAndroidCounter = - overrideStats.scope("android").counter("added_override_for_ibis2_request") - private lazy val addedSmartPushConfigAndroidCounter = - overrideStats.scope("android").counter("added_smart_push_config_for_ibis2_request") - private lazy val addedOverrideIosCounter = - overrideStats.scope("ios").counter("added_override_for_ibis2_request") - private lazy val noOverrideCounter = overrideStats.counter("no_override_for_ibis2_request") - private lazy val noOverrideDueToDeviceInfoCounter = - overrideStats.counter("no_override_due_to_device_info") - private lazy val addedMlScoreToPayloadAndroid = - overrideStats.scope("android").counter("added_ml_score") - private lazy val noMlScoreAddedToPayload = - overrideStats.counter("no_ml_score") - private lazy val addedNSlotsToPayload = - overrideStats.counter("added_n_slots") - private lazy val noNSlotsAddedToPayload = - overrideStats.counter("no_n_slots") - private lazy val addedCustomThreadIdToPayload = - overrideStats.counter("added_custom_thread_id") - private lazy val noCustomThreadIdAddedToPayload = - overrideStats.counter("no_custom_thread_id") - private lazy val enableTargetIdOverrideForMagicFanoutSportsEventCounter = - overrideStats.counter("enable_target_id_override_for_mf_sports_event") - - lazy val candidateModelScoreFut: Future[Option[Double]] = { - if (RecTypes.notEligibleForModelScoreTracking(commonRecType)) Future.None - else mrWeightedOpenOrNtabClickRankingProbability - } - - lazy val overrideModelValueFut: Future[Map[String, String]] = { - if (self.target.isLoggedOutUser) { - Future.value(Map.empty[String, String]) - } else { - Future - .join( - target.deviceInfo, - target.accountCountryCode, - OverrideNotificationUtil.getCollapseAndImpressionIdForOverride(self), - candidateModelScoreFut, - target.dynamicPushcap, - target.optoutAdjustedPushcap, - PushCapUtil.getDefaultPushCap(target) - ).map { - case ( - deviceInfoOpt, - countryCodeOpt, - Some((collapseId, impressionIds)), - mlScore, - dynamicPushcapOpt, - optoutAdjustedPushcapOpt, - defaultPushCap) => - val pushCap: Int = (dynamicPushcapOpt, optoutAdjustedPushcapOpt) match { - case (_, Some(optoutAdjustedPushcap)) => optoutAdjustedPushcap - case (Some(pushcapInfo), _) => pushcapInfo.pushcap - case _ => defaultPushCap - } - getClientSpecificOverrideModelValues( - target, - deviceInfoOpt, - countryCodeOpt, - collapseId, - impressionIds, - mlScore, - pushCap) - case _ => - noOverrideCounter.incr() - Map.empty[String, String] - } - } - } - - /** - * Determines the appropriate Override Notification model values based on the client - * @param target Target that will be receiving the push recommendation - * @param deviceInfoOpt Target's Device Info - * @param collapseId Collapse ID determined by OverrideNotificationUtil - * @param impressionIds Impression IDs of previously sent Override Notifications - * @param mlScore Open/NTab click ranking score of the current push candidate - * @param pushCap Push cap for the target - * @return Map consisting of the model values that need to be added to the Ibis2 Request - */ - def getClientSpecificOverrideModelValues( - target: Target, - deviceInfoOpt: Option[DeviceInfo], - countryCodeOpt: Option[String], - collapseId: String, - impressionIds: Seq[String], - mlScoreOpt: Option[Double], - pushCap: Int - ): Map[String, String] = { - - val primaryDeviceIos = PushDeviceUtil.isPrimaryDeviceIOS(deviceInfoOpt) - val primaryDeviceAndroid = PushDeviceUtil.isPrimaryDeviceAndroid(deviceInfoOpt) - - if (primaryDeviceIos || - (primaryDeviceAndroid && - target.params(FSParams.EnableOverrideNotificationsSmartPushConfigForAndroid))) { - - if (primaryDeviceIos) addedOverrideIosCounter.incr() - else addedSmartPushConfigAndroidCounter.incr() - - val impressionIdsSeq = { - if (target.params(FSParams.EnableTargetIdsInSmartPushPayload)) { - if (target.params(FSParams.EnableOverrideNotificationsMultipleTargetIds)) - impressionIds - else Seq(impressionIds.head) - } - // Explicitly enable targetId-based override for MagicFanoutSportsEvent candidates (live sport update notifications) - else if (self.commonRecType == MagicFanoutSportsEvent && target.params( - FSParams.EnableTargetIdInSmartPushPayloadForMagicFanoutSportsEvent)) { - enableTargetIdOverrideForMagicFanoutSportsEventCounter.incr() - Seq(impressionIds.head) - } else Seq.empty[String] - } - - val mlScoreMap = mlScoreOpt match { - case Some(mlScore) - if target.params(FSParams.EnableOverrideNotificationsScoreBasedOverride) => - addedMlScoreToPayloadAndroid.incr() - Map("score" -> mlScore) - case _ => - noMlScoreAddedToPayload.incr() - Map.empty - } - - val nSlotsMap = { - if (target.params(FSParams.EnableOverrideNotificationsNSlots)) { - if (target.params(FSParams.EnableOverrideMaxSlotFn)) { - val nslotFnParam = ContinuousFunctionParam( - target - .params(PushFeatureSwitchParams.OverrideMaxSlotFnPushCapKnobs), - target - .params(PushFeatureSwitchParams.OverrideMaxSlotFnNSlotKnobs), - target - .params(PushFeatureSwitchParams.OverrideMaxSlotFnPowerKnobs), - target - .params(PushFeatureSwitchParams.OverrideMaxSlotFnWeight), - target.params(FSParams.OverrideNotificationsMaxNumOfSlots) - ) - val numOfSlots = ContinuousFunction.safeEvaluateFn( - pushCap, - nslotFnParam, - overrideStats.scope("max_nslot_fn")) - overrideStats.counter("max_notification_slots_num_" + numOfSlots.toString).incr() - addedNSlotsToPayload.incr() - Map("max_notification_slots" -> numOfSlots) - } else { - addedNSlotsToPayload.incr() - val numOfSlots = target.params(FSParams.OverrideNotificationsMaxNumOfSlots) - Map("max_notification_slots" -> numOfSlots) - } - } else { - noNSlotsAddedToPayload.incr() - Map.empty - } - } - - val baseActionDetailsMap = Map("target_ids" -> impressionIdsSeq) - - val actionDetailsMap = - Map("action_details" -> (baseActionDetailsMap ++ nSlotsMap)) - - val baseSmartPushConfigMap = Map("notification_action" -> "REPLACE") - - val customThreadId = { - if (target.params(FSParams.EnableCustomThreadIdForOverride)) { - addedCustomThreadIdToPayload.incr() - Map("custom_thread_id" -> impressionId) - } else { - noCustomThreadIdAddedToPayload.incr() - Map.empty - } - } - - val smartPushConfigMap = - JsonMarshal.toJson( - baseSmartPushConfigMap ++ actionDetailsMap ++ mlScoreMap ++ customThreadId) - - Map("smart_notification_configuration" -> smartPushConfigMap) - } else if (primaryDeviceAndroid) { - addedOverrideAndroidCounter.incr() - Map("notification_id" -> collapseId, "overriding_impression_id" -> impressionIds.head) - } else { - noOverrideDueToDeviceInfoCounter.incr() - Map.empty[String, String] - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/PushOverrideInfo.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/PushOverrideInfo.docx new file mode 100644 index 0000000000000000000000000000000000000000..312cf6cbe4334cbab265fef10fa67e2cf080e950 GIT binary patch literal 39015 zcmagEV|Zj+*Df5}?%1~Nq+{Do$F|k6ZQHi(q+_dtPCB+v_1+KP_nhzhv+An3*0?do zs;Qa^(x6~yKtMoHKpE*A8r4e0@yWnIKobx^K&XILZ4oG zWLfzQL8R}O@8~HE{DfX2i0Bpj_LTOt@z|oZnfIKUs|@EdAkU9e+~KP83ZW46@mcAQ zKKL6Ad_CSRV?FhrQU^G1@sqY9EW1@M3O5K2Y8Fa5Or-?-d|?fff*0# z2D$Z7LN0~#v;vbgo`GU0s${XOb$0!bHz8y{|xV}&M zxe-5$_>1MduhNsNWm{#!bOdmwg&SO{ihnm~N*Hpgcb%qbbTn6WXxQj4MsOd2wL|*x z)25H!ZBm`(6r!O#>P}f}8^to@=eeC#FnQg=322V`r!7z3*@ha;w=ONs7!@Cj(;x|K z&qoo2th2sADvCxT-6V(%=C0Uk@8HM5$49E-SW^Dy)iAxs#RXZLDOLY5#P4jX0`*Fr zLa{01ELj}mX)C5J8> zfd$4gv?)~D@5y*Y$i4A~uU;>(rIlYq`TO5iO1BOLCLW0kUeRRrfE50#iXPh@sBSLjLnua3vpIyO00v_jWm}6^H=&ccBrnKI`uc9QlPs6h}>27gEg%) zBJW8M1Wm~w+0E1l`DwOMhqb91FXn}6ghlnKZ6pxNg3A+;?_ixN)m?n(7VIGG#ARC8 zB1)^!RnNrq4 zFyo%PK7+#{0<#DzrYpI%sWI?994?>Q=(FhQcAFe950bFRKy^%!k_4cHOoc zDy|=0T-@KJb0YH>a5iaUsY88lndGEMHT2Ee%10P=<1-J1&Q5x~yS8A;Op-(^70LpW z?2!0D+cRBo(&+d3_2bJbF3l6iH5k^ZIf5S5f}6<4+rSOZf7j)1V*~RHP#0@3ARwgw ztc#(&{aGkuz(aYQU7Md5?!mdlmYF(TlmWl^!XWIAmc@9J8 z`p$44&eO>A+BEUHB4h^HB==1fee$_rOu=Cbrnxp^^k`%HnAi!d0=yhuZ5UbCL4S6l zdI^FK+Bscap=QF1xY20p8XwZ$NuFlbc^yG;yUDAhQ_kLd?#)zC?6+(E)6iA2Li6f& znj)ioL?!5Z?YBygvROX1uLt+1nkmWf2;v}y?<`=G9+ei9YhmJ;vV=HH2HjUv-@q(k zy`1kGOnxEfncHY%@-C1Fp5fEl-z>mA4Z-}xG%nf|^qspGx3A2;pxgk$jA%M*BvfuF zR}Z_1K9B3w5E{+nVgr2_p^O^;L6U4~XxD#-oU0MA=@8fU&{)nBhamlc0QSNoy!wVA zO1&-usf8Dp*piOwS3hBQ`Ovk&=E_|@3ZV;TlZH>_Qsprtv@8eOE_yKL!JE_V1)9O2j z>9u>?ZSUEFx}95G9Or|>m=W`4I%@sx!TgSI8oc+BED4G<7}bywqjZ;{Ik748$$c;f z5i*9HDBlbiY|%k|*=V4@XAy_-<|W?UeJ>-h+1DuAUG&Ih^=6CsDIP0 z`Q6q@3GBH;=tqKGg6zoaM+~4nzo0$7x|Ja(i(ZfD5~|!z#U~}(xeClDh4A>MS?@Tp z%VLzzhZehH?4Vf$5ItoyHE>g7%JRZZErC(Y`4ijOv&VcHEkr^J7>fTfHiN8DihO%~ z$}>-ps^jy1k-xT!5jr>%7SQk*<9mYsco)hmRp%Bo3I+`Eb*3ySm^%- z7q%}e?3vWLPYWvf`y$mfYj^ELvs&QVIr$McdZ0+Ll*L`G|qjy8f zOs6SP&=q0~9#m@51E=HOU#;0PT-Q2W@?rLQbt|Vs_C1aR7K9<8BENC1;NqCPQBO#d z`P8szg*jzweGC$WGv}dbk9>hAhRfw=_Wi$1xKdl3WXZIT7yRO_vAFAt==5_kE8GdE zm?v9JYmk`Fr2|$<@g(fS4K$SHRCJAXjzN;*>;}gZykd@U5QR9Aa;zKs7DmeIXD;*8 zAuNQy9YiSfC#bD#g>1-4xA!xY=VB7KXZSWM6%vAos4#cQ91jt6N61HjhFYtH3ppiy zvu2XP1UL+5B$7Ca6Vh&sV63@R=3Ykfa4+hVLvTZnVO%aDMitB+lgwjkesI)QR9@k% z%>>Z%+Lr{G9kEmP4DzrMaJ@V~k9#VgR_ILBa!Ohl;D`imGCMGG>p-wOey#Dm+gOw~ z&irjKLpcm;4LX0tF}|SkS5m<_c1N0LdK$fDg%0w`W`%v)R=&da>Qf6}Gv*y##$P`d zYIT=zF7mNm>tAuOULhZ(-4Yu~@^Z<0z;U2LNv`3aO@;G|-@_yhU`4*eu@|vB9LAh1b=Jm=1A$)^+8@6{TBS{YHRA=IE=bc!=RoiDkK&JqEL)piH z_@*?6DC32CBF$pA<~(mG>p{JHJ9OPJsp-jwGDhVUZ}1 zR)ID*ZotG>GS>V#shTIXm%IY1iDbck)(8CY!&l~ZVVcpeK6vXwLY-6Y>+%s|RG*DH z{Pl;*h_mWv_jwif7+5;d9U11f)bw#USrNq9g78k<8J3-FtWyv_pvtZ^ggdCE>MM;4 zw&Y@_sx^ev=LEveQh{7uH;_?OG9A{cuCp7C+FE}oO+|>HYQ~1-NBF0kH|Y19MjLxr zE~5CfUvsZMcFL}wm6e#NX=gNSa|6Zx2BN&s2p21zipoO*C7{+Y{eYrYm%vkB7hx4d z+kS&vHwpE$g$h~$VbEdJhOktI@)ipX7{Ns0`z+Hf;F~keU*zzOGVG)fI#yL=2+Ylo zqZ#s*KAA@HZ1nyhRxEyL*6DR^^X5u>q?h{1t4dQW7xzg$`>@KI670tF97!L-p7rZ$UXuqyioJ5X2%!CrG2Yle2)gJ2ly6K=hEek$ao5aEsS+A zqrje7$?Csij}QRS&G4S;z|&FZg2x_Z)y4%kJ{44%X8xR`Wy|$;+$!;4sg99L8l;e} zXxc8M>V=xxqSNTI{f2?%^#y3m2He{VK~{|QYOurIk^+uPDD03+E{bL5;(`4ND=$wKF1H^>e9g4fkBq$*!d=x@1L={Yt+8q^V}qj7 zG@huAxl~bBxN<`LNS`{y=f2s2!FoP)^5fg&FSq5Hpl#UU*FW;4iqjOzj(?{69ONi8 zU!<@$i3^>>C$Qlk&d&_^tY+1h7$w|lde@xoCtYWJ|F+CWqkfy`I_DA8HMsme+t=)R zHO2|U|LY!Rh6}Pvdv$ew1Y1rF#0f@<1iS^^Ye>3M)7~{!N~D(IZ#UghKKrp!Dg?1) z=}Yc-aB~{B)*`*!{q-BYxh>}fj7jkhj^NE1>G!-noz|fZuxqn?MC_1;;U(4YJRq`< z$kL#l%I{zM} zU^6hVD7t{!%Ia5FIh)~XFSe#$rj2&YQMTSCx>bhNR2#Mie}oufrB<2@9lP|PF?F#_%h~d^ zHa3jcImJ|VjZAi$fGQ?Je05T}ZyM7lC*>#mky$4DOA5pX1=X|hC}Y|!2Uvw;tWFJl zV+3r+&Jf17zF3T-?BGOAn6De(^KlKfRNBf$wBugxEoUfLnIW}k+mU_?%usZ3MlgLd zpMxXj?(#XsO%9Y^VP0dNRgq%G8nSz7>&%rvV-zBVj6b}5&5cRK6~y1Nytsu){I;Ie z@U_Orn8&HLQBribZ~;ZMk+LOTtuX*7p9Hv&i@0^ysXSd_;(&Y9_%wSzP4QOJ+g~o__u%ztQ{R_Ne z$MP@5$pd!L%Oa@7~OQTXnxTC4tw!p^~qDChy zBQ~)S6c%i^%nVJA4Ez`EQ~R@W#8s@?k@=R&)Qapo0w7LLsXa#&=?(%S)+?BDXoMfb zrhbJyl{5_sniR1wnrk%eh!S2?1*5nyUK1l6-)}tr%ybiJRPe?H-W%(Lg`MjmCk^{P zh<>>b9+Pl+9|~S~Z(rE4P2QUxqwK0n;U<&^xAu#Dpgr2YLT5eFe)*=zCis>~$pY!y;HzAUQ>VP$p70=Y zxTC#gLMyT#aPY|PlS^T6}(W9la*H=tNvO;d=vz7KoX)NU8{Pab1@39_UReOQaAdSwn_$ zuvN&HX)8|4yZNLcPdR93FGvu91OBK|+X>UF4)}yxYEC zWD2Z|+I>97em=jhT*j0Nw4NR4K0R+;ccw0Nz8)|9y6+4PJvjAvZ{Yo~`Rv#ZVenli z&`T-3njJh2O+DP3+&F8ke4jkKY4X^#<|q{)sOsFE|B z@M*7MH;DY$d2oAl@BZbya_pP_V`%Bhpl>rj{-C+<f3<*85=KdaX)-t zeo{Yjzu`~Vht7rTi!-;$1Ixx|EGc+M_qAZ-?%ea3%-5^r`y2NRJdVk`NMA=f&v!0Q zlH0_}11cAf9*^}+0a4*tzYvCxp3R=l)~d;R<9N`_59)km+ z=dI3nt!syuuiEYMA~cobB8Nl%?9)f@(wDC$*LLL-b*LvLs%^dZT<&-y)^7jl=V!fE zuXqklPlvWR`!m%`AG_xx6B)(F)5ei2$1yBd`StK;XBaN|gOQ|%9z!8kFOC{a#y(U- z+JO|jVI|^T86uMs!GJ1(Q5FA?s81M`ci4iji)+u_=()u(1&p4`b9mr_if_R#Npdb_ zo9H10488)Osh>tbvCa^uIggSECg1xzRqoZFUL;PilF^?-LmNBsks~~T8pS-V%d>g)v(!5L@Htjm4Z^r zgdqd#KNfW$I!!DLrft?#5{_GUrXqqe-$v`xhq^8CM+^2)7KB;vq9TN~*{;eilz>tq zp+O0>PiXZg%=)Rz6C00Il+#rivP)(MtjRg9Er=v{gMk#B*abdDCwzku7Z}$CUX=Ie z<~P7ijDOw)+at9D7W&8YHO<&$^k57guww&~+aUkMK4(n;gc1UtqxvgU3xE~^!2Pe# zzp22=DK0IE-2Vr`r6LKS1?DdmDP7fF30zfLFAp zpLB$*jm0B}&b84=>krx}K6>qxx69$J z*L#??nk>Z1?Hc z1e0}QF4^L-KVR+PMCd$b4UlLz%ki>yhBpZxE__{Av)tf^H+ty(Msp=>&Kwht+kX#5 z*wyX_)Wjl{Tl-M*4%|LF(w;heS-;xhSzfT==wwJeJC4Vgo&0Ic0jsmkB*D9_cG;Flideku6jrx^3FrM{Yo z(P`O0GTr{szZE~C_&}{P=$O2@eR}S`-a8bN@|c(OD)MV!FTS5f~IF-oqrK}`30dwPmhm}yW z^!c)1mMDrkY02W6NrT6}iT?80O0MuTBB1|-lJ)Z*dl^4?S@=M*>`Ncoc5umjvUzP) z{z)(J*3%6m#UnF3vVZ6&&5rSv!I1;QoZn+Z16Q}lhSrz&)6K!RKsA_x!Ofzx&;YyB z>}?*)>iY+N(A35ul-ySqUxl=J@>H7g=n2#%P5Q;w;d@fpg+y9lc_WkRmn@n!bKOH7 z5t6J)X!61KQKyJ6E`I?TlkI7 zPFXT<{Wh-hkXM4l)9_hOze94pxGRiE(~cs{?1)3{<~#WBa?r2X>B#gtbnbDG_`H>n zuCQK;8P{M&Gj)I4glBM!z9Ke9dOzwuK|9?)5+UGF{94HM9agrDp0(dOUy?)TTU9J9 zm3<9xkP|$Tx5dPLF;xkJZ0DXds*g7`6P_WLR!PysvuCI#>U1YzDJt@)&v&DX!QM;d zMW522IR_WK#XHhl!*=BrdulvSzZ^2r76@8*E{Q)sG8Q{$-CpiSZ$55DhCMsq9Xxy= zKaxL}&tDdPy`9=K8g_lO31mMoyv>e+dwu{Ru4Q_(@q_8_bhf6B-V;45#lNx{Yz7yW zT{t-*h{;ZpPv$mHxWL=+r6UK zVbI(sK(t7~TN8a*Jz>`sOBRb(CX&Podf; z7htceH>;n7l_Hg;N1iR(#;SBHMc;!RO8=;n^${BxuNdJz6Ii35oySRGxsnEB^AK?; zUpp_az|5@2&-Yf`b$sOFE;;4b)Q;te7N6Cas+NR(z|P%j*)-s$41tU0^QAF7mbENt?XSF0MHbIp(b4B&&%(isj)z55g^-OXYR>uivV!FkB(>o-TUFYD zYxd4oqj{#~;rk^smwwOGDZnFJj z70u6g3Sac%Ww%>Js?(f@YWAgZgs$6pdXM7lTD4+=_}cOP_z9!Mgmunr%DSIC;efG2 zk3QnmwUxryQhsSeiF}u48cNLcf$+%1MRWFmu=?1ctv_8<&Xuk>N57pf=W}E1NLZ34 zMyi@qxM9BxR;|jKYMN7s z`Jf2a%-Xy$y@;>0_#umU&1oIn%d%}RQZ^1_+~d)svL@k7Az?^EgVktV-sO0=x{9Rj z;OG=f6ALD`kH{Et45Nk0;TOTsfZ=2sV6J zX8mTxwguejX1EOlJVk-MiY{gt%yuiAU+qp_ ziqKH#l+yuav@cZqv5w~2+9@n0!p|=-O}%d*9zEJb_LFaL# zp^-r^DyxX?UV~IDSCn^nC>c~~bueXHAG0(m2k$z(*@=`Myy=4ZF+HWpJ!bngm5}JZ ziGhlpAicyPT#zF&Q>lPvJ{?RfTeNm)6rE8u!PdLq<3;iCks6B*{wKHb6kw%uzxSr= zy!oXN#0Ej>+ilA<>#t1UmnzB`Q@@uV4xo2?)AUV4FWu{-enCEO`FXyH8%b!ORQ#rt zT=l{AXk;!0D6CnVQg2bHa-owM^!>FQ445n%>I5|hMTIP8)V;rZXHq*$5i@&hUcTrZ zu=sxEI-0+sD})ZATx~pAwK^v*2gEhg#^xek`dMAET_>mWL;K=IM4SK-la8+lew^vdRZ{IdNA=8&g^}@1K5C7(h{OxwZ3tkCLsJrYmHRI>c|{o_jgatSoVY-c9HQI1Nq6L)Te|4P)U3gU#xj9d%#X&o-1 zLu|r7c(o~W1H22^#uYP8tSp*VdTbi&+y0u~?km@~gj|-_s4WHbqOffZ?Om*s=x$Uw zr#p5R>lIh`9ds9{ZfI{R2+7^#K@`sghZxK&h$b#QL5zHk2HJcMkmXO%A$}uGs|%PH{D12;KdQa}?GcbRCz0Fmet@6M)UMI|SPmE?^jlO5xO8djhX2 z6meoh`h8oRynw@t)1kx(fD>?xkjG)puT8779TbS_epna0?VNQ0$dR3kN;9pnor$Kf z-H|`)WG?s`xXv(F?{A9XyYuI1etMjlJA+Obd*9A|m#AOe<%TYtv zj(g@BWZR#86n2dGPCSL|&J2zdns?{=28a6A$t?Fzii+lOj(0~T2sRH0#0<0!p;w-K zT%5nED)GGD+dwF-?}lPWu_C-Vl9Gk_-DLRc)bx1s|K1sp8P6k2cc#i}b7YsbOHP&D zGxM(~ecw2kUebkel1O{R%9@YL522CV6Kl|1U5pPAi5(bv1Og%#4)2YyFl5P=c$c8yRyw8v<)N?QVLVl_{1zB@; zhkh^h5INVm1~+zA9wLjWXa@+#fb$XW{wuufAK{Dt3P1T19)vI4UE#xiXZr*6#?$hB zL2NOz(Xz!wELV{Myi1`E^|Y8v6fv~|^FHA`&blp^NB z;bX%R|V1L|s5C2*ir+nD9sN7(aDY>YQ8FccM3wrB^>OkEa6!CPYzrR1kUZJ36;wP}O0rWDL%{x(?cEiVVd(gj669umwlvcJ>fu%ejCM6^eHJDPh8hGWmgY9qoKoq^No2m>Q^85AYJQqqrKLMnHRTpjIVg1Q6R)u)Qb{j@4zDzqS{Scqr{ zDqxFOAFoVbEHJ#+F@VQi6Iv3f#@c!=qiaaa5o2WZmztm?dgiH@7FLf>X+RQYE%u#U z(11NcQA+@>2BFKLH0rqUp-=G`fdQ>IdqvJuL7q6vcll&<)}%K=9Psu80m)Ox?BmN@pB{LM)*0q{YyoO znBYycT6xY0zq+x!;0+g_cTEg&9*qK67p||2m|!q5A)YSXzs$klHOq?i#bEMHMcdjU zE2LhjReC~&P@n^EQ2jr%NjV0VbLk#*HuftpDzp9nQar{8e}S4@b~^@woK*QeJd9Wf z{$B6Yt{Qv#E7ME1he3x>_(rH}rI1Exrm$aH?-V zsc|iO5-Hz}@(4f1D?c3CUv8f3{9p|ieY#=EDDiQkzv?-Vv?GkD2R%`Q*3LYV!4_pu zy|6Vw#cpcrKdRMq6Q%U$iKway1%tXXh54ofXZ0+@k=apNuw73LB-J6ve@{#>@epR? zYNu5qObHxQ8o6CF=;y0KvD){S2#~=;;_@E{C59MM`w5P${|iPxf6SVK`798q-8i5T zQv5N!J+2UE_hiTbTi{if1EFv&{86hRZNLAF7XwtlH(Nu72!}rK+Iz~P$tqu#2#G2$ zaR$hd@M|vcP+yFFDuyU+2@UOc;>PT;s@k}8t`$bFebZb`IIa%h7&%(;9neG^DT55W zwMw!`svO)&W2UQHka&=EVM0eBWhha&u;DRSVvGfJ43YRX zIg@2@5JyNB)7amqERjTCIr`?qhflorjg@J|Ygr(hO_+uYFWqS&e1Y)m(}dZxAQIQI zlouT4N|3_P<^mFdxZ+SLfsF)d#r2Tt(`xFlBBor48|jhacr=N$V18CEc9K}~Nyj~s6q znPHc`{125!;(t^s6Ep!-4nqD>2?kuBW;ELV%bW4YL*VPXDdY^?xh8$+``lj^C+b_f*UmIxqX;IPO@c19>x)|ATI9p{D2y%b|zLut+~b zf5oy2q^7men@HVGc1-*Z-k%Zrthbn)={$f7XH%&LKbv9xqekIfSoV#fJ*{l(ybT7>%t`Gd43?``|LQGkSe%;TG>zQ zE&(eodZpDsi1-z4SD!TEvzjMFz0Re!Q0OPyon3u;?bdP>M{8cOy#S=8c-|}{kLThx zxS`(Mji}#{F~@da)WKJ7PhwrlpR%PEGCt%^7Z(71FI>0iMTA6l21JIsIz=mR*4!+D z4d(i?MKeHXNp9tPV5pq^Q-=8>JjX(G7R=hb;s}T0+Ye>cue#gz5zD^%DAST!?=Zv} z5Css*moB00i0&l>$L!~a}n$@_p+ z*0bWYY!XLqVg2%;oJ+P+Ur2O8khQuiwW4@iI{BLx86W-+uv@PMlfO*Y3_p$qD<%WVg-#pGi(x ztKQkpBi3qPfJxL6i%)LroHjiCLQHgQo|sHSQ*sAfz>ac5_{QP>+W9eX+a?7a=$%+{ z6Pg6NhL!|<=n~CQtLHG*#DmFgmDG;Dq2sf=ujQN~7l=r|<~-7Z_7s;k6etvo*QyE9 zJB;UQ+i;K@k{ucpctr+(E>VEzg82YMh(E!sc@TJO2q^|PVAin<8iorb>>mbf2-Zd@ znMBA?M!_jmeQy#P4>Dy8MZ?%_&7K39)0WyCj-guRO-UA1qb^Sqe7pjKT3cdb=#$f*dF+IYfzB;)+1Y6cx z@g1|x=BmLRcpD=2N|@;P@q-c5-tXn6bVI~`SR^W>E}(eOK3F6s!Y&|8(s0b5;P>DR zlxzpT81?);;P${DT6J@dr!fZfmdW)5yH(k``p!p_hGDOKWr8syWS;`Zt!MI~5me`^3I_k z#{#U|!2UaVHn}?gNM2pHbx+##Y9ix56v7O`9-iUuP2x~Y_kmg(C{yH>yHi4WmgAy; zs8U0M?u$Fc*%VC=Dc`!I^$L~oELDjpRmpxR1dS2kxiF<;bzkLsuWnD(p?zCGrkQPiZuA*k%6eaONw?Oa$>3mj0^^+agykwG?nHtZUp$ zvn}^+<&&^{w*xd&F9KulumP(*C$gnbdTw7{o;dZ=pzuqHN-T_3A~AQ3wR%#8gV(^D z*0;bPAh)pOJ;z=H@{&`tK=#s8wUOe4N1?`;lbK#l*G=2Rw^qGE3Ea2JVpO{hd&L3k ze|Tu@giOm@^N5dDfR8w`XOBr{^jvW!-oPNho7>9pF@DS!c&ccC!p=LGzN)H3Z(ts+ zc=J@Ur|nSw^!*J(aYhyXoDO6g{_HXbHT0(N8|5D9YPFc&Ov^6*xq0VQF8jH>0PU*n zO02KhYRmaZeOqQu$&OrNsupz0j@dqY(RM*5m|Nipki6h$XgF8{Uy#DUwA`zYlB&tGdkwphs=};76H{H z5PZzvg!g|_VJs`z!2*&1IyIX2 ztDmNSOJ}yRc6yjMzkWDe9ucC;c!f^;iVAIWk1-iIN7W^-|C)&0&oz%L;7hp1<^ z*0nlw=4}GUTl*Bg2ap5*XYhmaGkfC25N3e@AtCtD%FvKI%vyZ(WjP&ZowbWS)q{uN z=jJ)uuIS6Rx4ylkKF$AGs@Yu6-%6M))vaT1>jDyj|Hz*`WV!BH33KnwyU&%4&w^Q4 zj$#v))#gyQ(=xasMSXzKouu_Qs1OvKFDZE@BPp^<#Kw=oa?SRf1LTn3*$=NI7PTV4 zhKAx=aYc-BLa~ue0|Uemd`n4yvX#$%y;RtWF5tEMy3iGdfT8=3=pe-A?al#iVW<69ypFoBnL$32wb zUFpKU(;Y}q5nGA=M*VP6kvlC3E+B=ha&_j}UmK0e=+giCNAMdG`TZuB6F_j_zXb>8 zmV*oYEx7-W;Hy7^YjDn7T$!HL&a8X9zy(wY)M=iQ3C67}3C3mq0qovin;aDTPhf=( zXOkGr=@B6Gx4U~^<&v&#P66~c8M>$ZV?m#8e;D7gkrDvWLTm+&g{ukQe*s4i!T6>o z&X@0g1s8x<219?ts&#ws^3uKPc@~lf7l>jvTT?D>WD*1y@af)3qN?SX0kkT^`krtp z=riO2T-TTHnxEbkZVuZ0jP`cjN*l&2+g%abIrRki8C`<$tWP2HeRbFrfZxj2UHnz>fbAys-VIyVo6L3`g;l zUY~=GDRtlVen0{^Cj!4r!mfMnZrjx}GuS9}j2m(cPY+Mis_cV}nj8hEUZc>Ty?(J6 z2O`dG^#2LqApZy8H2g0B`$xCH1F+FfsL}I2{Fv1pckZezIr}cNpePV??woL(;N7gBMaFAt_m$lrG=C_~Np?J7HY8 zm|Z%h*ljxxy@L8{^{$X~iRV>X@w9>>wx3f*K6UiF!d0Z4Bil~2Z#o*0&-rGX3nyE2 zPx+8_=hkQ=zh?_K7?nfZ0U~o?xb349jW5hJllL_fGJ*(6$%iisW)RJq<(M`aKs2aW$r|Z1Rn}-X z%&y&Z8wzz!RWgLG;mIyZ$=^ww|ZGA9|GN90!HOP3I9J+p~g%Gpawy1x!3&7_O#3>>#nv0jrQ zkyl;CS2DE{CYsysKKRu{g%))4V~upd-zYR^lr)Va7uHiXW6U^nfbvMxavdI(1Wz7j zJQ^(785o%Y3TcO!a^}JBrOa$4Z0&-$JcjdZ-7wjqYGis-Rkcc(H9E2DGZ3Ck)W{4h zM?5DVkC!*y1=#ly%KWZmuYzy?W`SZ%JOLm&& zc#B6lG^_Jk%k5^ZADjm^e{^arMkPCOBnk0`=pL_hDvHkN9IB6YkOv2Y$7_lrhmGWk z+#g$K4imnhPpPnf^s_U=rVS9x<1|m&qD4Sg;9!-`ItIHjkjKp-#?5(u)e3|LLxmzo zl8I|6Gxq{6CGocv?9Y5HG@$gYbP*0osL8M>1F|cZRLI9v$PZx;2SbOVMp7XxBlPRD zLJ9$43-eFsX-y3<){r$7{ijjVD4sq(Ey zQf?=2U^SN>H=Nw9StMi=-ZW1*ACW`|JP;;B5S-zPJS*D~Ac9&2%LCY40Q^?%EEt9? zn*WCa@b+O)o-jk6Fl;u?3j{idl{MmOX%eIQ*a`x=BZo>)cu*dQ5V&q$AbPyZp3c&# zR!I6KWXn_aGBmoBYi?;ii1!(nP>7yj2u2I)BRuu$%ur_iS;-Uz#lKX*BL1x+r0*6_ zu2NC0#?qxa@K~M;UMIaZ0s;NQWtI1uNcfE!?aOK~+(gEY#TC9oB8H00I8oC}B&fI~ zS=)UYlmmkPP6%t^)Xe=u5V2W`nqH#NtHPtjaj!)%=IKLdgj(_7(_#VQ!d+6_%c z47U*$D?cDqOa!{|nwRuoKyQ^?4zNZQD^h5{WR6DL^&*0%LQ*P2r7AneutcPKDttEK z$LP6~BMf=T)g&om1pGH{Hb{K5tXdc^42l@(X6?*~GrI~~r3nC1`UepDA0X|20onWk zTJ)Rh_La#0FkgnEirOkSjpVh)jQb0Lw-V5|I51eFQUUh;h?OYUpwq=+uCn8T(V(an zBhZo_V46eGP6gz&1d9IhfhHcng4gI)$mpem6^(}NuF*vTY9)ZDI~%l#9xpsDKE|r# zZx>8jBq)(DSCrSHTE+*6LoR(G`rCm4BE?M7doz|3OT@ecAQQvdr3$a%-JbaLRbgmS z4?-pJAl?L|MBu_OF2vx?*}~_5xY(@)fP>E|Y$EU-S4?I+`Y3T2cwXB5fK-=U;_~Bw zRE{G1=ap-MPsIN|w{PGPxWL5*1msi;0fhbE=l0btoWF^gnVA|p|9yntM>n-lyy5)y z8NK;*SUx8Oh-iG$X9fjiL~ruoI{o2^zp`>sH=`!uREoM4aEf0r*B@mpR$?sp+&7I% z@Jn1fi_<7V*wcsKhr375t55q@HT&7)4%{dE(~)hv?<#N2a_)}b?WO*K9mUS(`9tLW z!M;bMUeD*z?BPY`=kw*~%g32p=X>t#-|M%Z7t&EW$pvuX#aNi1|Kh-K1OG6 zcNKn1=GM`|haF;Os#~Uft{UQ`n?A?JsN0MIC+A!5%K4FD`v%#_QRMw)j`?WYSwkmSvyrH{qILkxTEq>JOtg4t`sDuth|07dVruZPz=yTz?by}pkQU+sfm ziOqAWnXjMUXN#_%o8`g(A?z)n>sGRDQ8UFHGcz+Y#LO6T%*@QpF*7qWGcz+gW{#O1 z+cCWDoYVdK^uO=^v4^#XrP5q;&XQ`EN-C|jaj$~zC%RU@OK%@HKAn!zwg=bz;&;w> z{c(r*;q1WlkmlqAcb}F{m$d^2`~LL%3$uIobN1DxxOllEQ7U|n+Zr96kgOj$A!~!n z`#x20H|uYE*JAY3!`#)@b{yLnu?^qH>0PY}ZEiiu)vvq~Ptz=qyj4!ux^38Ps+X5k z%qw48-t5h&)ggp`a78LS%sQL1-|m=Qr%C4|hg^EUbZlCp<7dZnOS-?%iR{1nyf1Hj ztK;Fd#_KyM9$dTiPR8TJS$nJF#pTB1!smH+dg0!z_|@KCy+!McP`+3_`bt{aU4bmb zKe5!l=w)x*x^iyPzDVT3#Dyz0&0mPldup=u zsp@Y3R{!8(y1rOD{DUJ}Q+@m!q&ut?<8JS2sIOpxOMEd85;=cZp?B#iN8h*=hYXO7yVP zf=-G~!~fdg_E_inQX?nZ(aoG1z8qgAI(q#6_wSvj zzWezTyQlZ8q*I^Er0C_ncWnH__tL?T$u)N$&m1X8-b=iEe!QgWTJ+;8FZPN?HqwSe25fYjVN&y9VsjJW zg($g&sg#mTXa#PiLFb3`5Msr8s}`lK>FIgj4X0r*|n8$CgQRX?`@ zt1tkom>=%>J=AdCx}J8#VOhJY9;U~C+*^s)W@J62w(Fp+4IZ8E-XGH)fU_5!q&;0d z*iF043;CzN)ofWSK4=<@+d)~1&{xZaZE>(jd$U)84e6z^bftY>mxl#NX?s}>r|+8O*)T0x6HCkL$>q$7NqtOjB_CjM2ub2OXL84X*UNK6$@viaK^&=Cy`LX4asiXM; zZ6gjINuTNcchl-}ykW?fwnw{8ohp}cZoYUraF5CJ0+0Z?nnD;g;uTHs3M9)qkR=os zO>ZgTwJKjh|5w!>tX@$X-AG%p!)-5RZl(~*GThXDl=G+wy%=XP>!A?j8qsZOXf@(> z5RM8YYv9R8b&#ddCSP}{0ZpI~!9H5weykm|9=%B0Puo{xrAGe%EpDO=k}0=L@b@&-WvXxf6>A*2>{M_D{tw;|S<)kFHNp z=k^}Quj`pzs63hNo4=3gsvw)%4a2gk@L+da`JMJo;qW3BwpI_cWqBD4w?r);Kjz^CcpU0o}SMOfTYA3bqaYJu|lv*!1GNwF{QeWP5G>)MHyT~yIox4&%JKH&{Xk<6+?pI|KL7Dy}U#Z zk=b?U*ua?Q#5{^H2 z@whg`2s9#~_iNCBH_Jwwvt}*$78&FG8_cZOCZ@=*SQSoAj+lp+&{bQ)%!J_d2i)q{ z3k2qEp0eOuapDXyuaJ5Zz6^&NM;>;*uz8#_SDbl}#cGJMYNQhHEk7 zQB#bWFK!xe2c@DEa=+mZzCXz?wP9F@yb6I-4GJ;Aqxz*PMU{>hKZL+4O+3lRMV7&I z2-#h!@Xzwe^eSJogrLaW*A}(+J1ySII`5wI^Bv`+zr5~oWxDCe^>*#W^SsrLz&Y8k zdOp3pM2qmHA9&wtyw2~9)x9+EYqQ}ld<4imT-zv(Cj6O|9HNn&doES*^^PzMVpE1b-p>bfVWF$0^@Aj^E5F z&wN_bvwL&ZBxUOqii9r4fPQ1>JcV!+diqU|o#w1*qOi=~1J~ZBk~Py}%G%HgN(qr! zme&}^eu9H{NcuODpkQFjJ(S%j(k=+$B9wyTcvQ6#BjmlSWB|XjY0DBOw(-`j(prvA zz%b8zyL^5B&q?8cJoaZ3l0w|#6gI?d);MshYs;itoq*(P0WU~RtIpDJU! zJe8@EOBM0B;7A_0UHg&7M2Ge&{pOz5?cRb#w<*Xr4e}ED_YL*e3k{?L0Q11=SDYaD&kkr8qpC1PQ*9{?2@iCRtqHf? z4XGDT2*``lbe^xrb7}+^Zv2FoIo0L%yGLgldyVm$ILXb?$|vXUU98-|EBncgVxKINqq&J?-uvQQ=CXrkhhsZE zd*>16vTh+bWy&DbVC_ir_epAFbn`WgQ14Zc@4M1=RDy>I;#RdE*J$NopTz&X=~Q87 zxpS?EJ$}4e(d|yEPq4So6PEbdn`T6IaedHMJoxOOF>-(90xC^DQbTtI(aMk6Yiv= z$>KV%w%$5Q)v-eH0bXU=k77JltKj9kk~NL!H&0ii!aN~4bhX9I{G|4J^D+EtQ|~cu zrLD}Q&zWg>_nH^8Wt2WAvqQxl8qrajr?YNzcjm7u$l#og#|OyuZ4F~ihI9A9uJf(! zWrwd%SbN4@^2KZgQ^wql<|jH_iw&dn3#E`_TLRT@2G=zk3E`Xc$H&OfyEjU>{t7ZW z7wGsdtxhbQwr_Sn{EnHster=j_@^wD5>??tR&5>b3->HX+HMqwaa}u-W$T2r-AYd* zUGc}IT$Q{vTOTsTmDwjrADX`5g4YT)oV$}$BYe{W@v44Og|c^3W)k#j3FH8>%M^=q zUx(Y4!GnF!u&=lsKD*hYe7jHiO&TWD-}oseKhBJbA94M9w|9sCA%v-|$LBoqMj@x) z(@x&vxs!V%V_d%P?D*EB74ONTRr?+!o^$*eaUgA(iSO`@fv7%|fJ^lLCq`_(!2*IK zOWK}*?fUDp-LKK%jmzN{?D$__5I^s^OGk_{GD480Nf8r5g-Y-eknQ`X+<_tn8yO)A z4>jOnD%l%K|Mr9Rh{vhHy?EMyGE{{QX3maOEcs4Bid(&coeTps@z#<-dWMupPuhA1 zKM2073>XJU;Z{YNA)7I>$yF(K(0smIn14K`cB&>+|R2rT`B17^sA%S#oYZ9-Ku5w=M$aH+}mE$?LFhK5ucDtF+B7 zT4UjrjUTO4Px8v%bk!yqb8WJyZsJTv*-&CbRyKxXZECEEr)P^$&z$qJjnYZeu%mxNb}ON>2?d zm)~H3hY8_Fq~rQnIK%ax&Q?7giWn@yZi@tR5tXcxxOWlEOq^QXd3ynClB4ea zjtXViU+5<#1fyj7;oIB92(?_aT*2ko&k+Vw(KfQUy{^Us3w9x6=KVR? zLn-#K0Q+Kc!NF^p+G8!h`vUGrlVPr%;Zl>$)@FNCUPuMI5v3h;yo7WeTerpvwy*P; zwK@v$PDUMd^(57!=)TTcM+~U-^f~DO*k46NJG$)a>9zb$>zp3!wjO7j(g6e*GULx8 z8=X6r_!n^N*!Cml`APaNx|ofD9-y#Ik%BGkuZN4?C_%(z)y@uLJDX};0B(`w+na{W z(av+7n1h>+JO-B#%Q>>|>*=FCzl>$oyGz>HGtT=v{XB%=)vXr(NKLY}`6KmL(Q*e@ zM85=!-iygSD-b{O_Yp*IrA$U;qE?WLd&* zvt8EhSzFlA5J3Gr_CB?+ufix~I@%B|XCp}Fu`kQy`CQ2GWIbz-(y7xBQP+QRXhQe} zaRJ9^*r*^?%Uu(p(bowKu{K1op00g+!V%F?lTuR-sEJKLO(M@iv$pzY?NrYsQ(Vp* z>?tOh&YykU^>f_)I1G;P4d;cx7_^{5i<;%qJ(>4Q6m>Sq9u~K{fa_fpq^qT$4hG?J z{6b7N$nb?U zN5O8u9RU?onPt&4LGhR-jig?GhpK`Jk{hOzL9Q; zyG7#aX8k6XNSTYP#p*bg+yLD*Q5~k)rcp6o-AKQt#a(+N&*n|44S?cK<*13;ax8!6 z4($0tI9&%Tbtmftu+Wjf+9sCoEE9urXXDuZy}C^#kppi>I-3)x0#9|2&}?1rMA7?a?kaSi zdN`^WW$r_~vSu#poz-sM82DkOXyRbhv2fY-%Js;~^SP$r&wE0Y=wm#Bi@-kdTfyf` zeM(IM8jp#Uyo{c2?aD=hS^B^=xIoxFWLtfOiJn;}vd2ydilv(aP$f$oInr-yt01JN67U7AO${ z0SPfP44}-d~v`!U{LYxnCt-(u;w3e3W1`M3Nsc0Lm?GG zA{x;Sj>`*9KrwncZi9uQ!=ngG(|klEs`>W0rnu~zS!hp2owEk`kaHOwk?_neis+*D zgl-@dA`uX7jUDZ=awt&G3@j|;JxiDnyCJ&cDE_%@=zoSp1pZgZ(-jjyNT;(uA-Nuc z7ivxZ4w(UgNF)&2125B)r8rhd2;yK)X@QEdMtL8JC>XAkLNBa4jWPsltp`CYtb0uy z0Kd|nZJr{e7G&Ql7z)V#w_p{w@b+~u zRNXW07qFo~sK@Zm@d?}5C8NV;@!!bxngwp9h<+`=y@LVsKwrS1kXCY`ZKp9ds8!C> zzG4v}GUqz1&QUSkR9itIIU2&;20@*r_NDaFet1CRZ8!t$u^cBG1O)^;*@LJg*Uyn5 z93Ng;;eK)uSqMyAjSaAlwK$#wU?0`(1$A0Oc*2}j5I&Ok}R%SnkjO_?zAz$ z(eR&Dv#0?E)Ot^_j7xOoCIrU!1&k~hYWI5Km*mU=`U}`KCf!`y#0#34j=pm^3q2|k zB0E8gt1Z@l^N|z+(q7M7Rl;Cy3Brs(^c#$Z<m@7pD z_RYn_&_6N55!L2s`KU1O|GC0safu#>Z|v?LZUE!HDeEtQUIB-;gG<}b3nD*iFvz+@ zSVWwhCvV-DH|kyU?iXSu@7I1_4v? zT=x6*`)2nd;lEMC{~jLfPo7?z)a(nnO1bf-YGLW@5FZN(l7cF^-M-TC z#%M(0<~9qg-YXC=u2c_ z=4j>NK(_Y7p5x(k^-FI#`&>CbWPNW(fqfxFxAthpgi5ucyneZA9r?k=xJIB4!h09e zySBF^OV>z4%>+yL42IBVhbt3oRdftoZ123y(ERZF+2nfQ@K)O}ew!YS2`pU8g5TuRA)T!~SH;J&4mXDGT1s&e%;aAT) z_w2j(<8t4J&{NTpQV-Fw41TV8GGMt{R&Obom|s0}c6d)rZcfO!zE*m?DrC4;$d39a z^TJebb!Z1JXFt?XAKshrI=j9OxxV^wXUj>RNVOzlCoB|I8_F7wt1?m4?ohAB-#i=9 z_ML_-Z-p+?^OIuf7;2~)r|FnRfcADG> zRgJIhL#*BXl3?l?Yo?cK=AFwJ+=WVobtGlhe`?eB?+Z5d67CO;@_8IBs>+!4Q8#oyvCvJ+yn3i zPLs2dBk7rFX_zPJS%zkszr^-=I!U{}0$fW;?@Ud;(Y3_gQJvFHFr^*a^4o~3m~~CXub9j z;!~HR0Pgz)RHk0309uI@dPLy)dvD2;(l;TX{XjK?SX>G{18p7kGrGi*IIwCYoi{F! zGOoTm|5V(jPw{W=jDmNnrPH(2g-=>V-DWaP3~#MV;|skxz!;_t+B*)fjT|b8(hXi& zKqwSB0y4Ot%WRM3RayeIk~(4SG5489j9#^N1~GJ_C857C)T0+6P7tK5w!Sz4DQ3pl z-bJwpGdm2Bh8o`kfu;tVLZD!frrC9Ah^iBy<*7d~g&HGH5~STb1fd)F@|F!i&rWEk zd|?SNH9opo1{Qbv(l^UJhd4QbluVGe2nuV6m4_*>n_xPmsz|ZWfk;L6T*UTJAzV zi9EyVL;zU*?;;`xgzKd`wf_>pm;*fvOWlEIyq3>&f;f2=MEOC> zna&5-SDBmyr;`|Nb^^x^(8u8I5hx-|0|poUZrqh(>P+bZ;PVk5f`u?mFKD?yG@`g` z_<{5VWP&j5`z}fzCgxva?Ejx)OjTKan>ChGrlx8ODv~k(*3jTSQNyd_yh1P2$nMFe zw#WqSoYc_7{K5I`YrsU=2>-20I+>boW6iaG^Ky=})uugKm8n`-q23M z#w?ZLebu^gBr8I8c!~02V|7UxT3B?YVlp85f_@<7|1+{rzn-a?(Y(kv9e;`+y4E zXTLGQX-B%!%2R5I&EQCS}N zfL6;C>wwm?5BT7~5vc>-{|gDHJoOBp!TV?VBt>nnKUREB`LN*cv|1VYy>Foy% z?n4}f)WzSJdy=?~jbE=~4KAB^>A^PhdILFE#=O#`o6n?8m~%=-G+0@+g0*)~ZCs-0 zOsu}LZq>@Ni64HAGv&&{;;{iXH<#6Wb=$_Qk_@m^FzgvXG_b-tc2<1HW}3DTi^NlT z#c&7~TOElxmAwox)8^VAne|yaZQ2(mQ4nW@DqKCL{0e{m*^S)p_byPJ;y8*U#@j?H zywRaF6f>f+c%5@tJ&usQ|5%)P0Zx!W|MwY1KT(?2T-1cRQ{>2%7{LNR@qBQ#R}80m zBdo-QhLn@S0QlVC>$VEkRZni(#RdjgL<P zI17^TV6_j_T2UI>YSf0hQ~eLr3O}{KQ3tUS3r_x^)&|G+&ZY6(WujSVU_gYj;vkw! zRP2KJ~1{Wy$b1X9!zz5K@il#z_vSvWhqFM|fk7){0x6>_!!eI_zg|ce+ zE=DV`YgQ;wLi(3#bNxiLz@YMDMOAL2U1H(?H&+Fd;oORP&{_z6IEhGnyD9^5a6)za zNDvW#7$gmnLZRX0F~qCTQ{lYD~`Y@bvn)vE-`d<*A_jf77wPO z1q18DK?Z6dTX0Yfa3-Mc5-bT+5SGf4Uyn9pHeMQzvPzx`R_q9yx=mr_5^1ZI*>tf=8n1-Wx1TqFE?QGU%5j!*dN_1xxD6ERI=+vrZy_4q(AUHIgjZF0eUKSfqae zm?osC`ZePeL$UE|l2$$i%>b5cU{V;X{sDPqPU1Ioi-BNReYgQE+Mbi)l62ao5)_0X zWqMr4P}T_T=Aupe|4SAN#p12&8?TD0pJX)wv?$0UVGF zrMgiajHSs+`;(&sXa|+3DmTGruS@_H(a55@0kqf~AdSEd^q#lZQF+F(%f(eaKVI|#JpT+ed_zg)E^rHO8up~a4 z>=D2}k*B~3E9?=MDh-~58M>8;E5yPoGkRdk;8wfhL`d1=b1jDFD1U=Rbx=&~QidH% zFjuH07eR%lfl(Au56=mEE|>77GQJWLMMXWtD9MXeW{fb|OP%KJwaf|oXuqgbmW4)@ zM8e!Da>7=}#Y^7=%(fU)JOdG+K zrSu|TepOB}$O#iw9CX77uIKy(R_{jzXbGIk)G{M^Y6GZ@>GLT$&_8-=-Dh9v z{T0ErlqVz-3zQfsl$68=|A|@v{ZCW^_+V1}g&MLHIOV@B(5eAg5c>)3!-C27u=po} zyOr?m5_hBocU6VKjD_|vDhQ*^ugbOLzpC=uL}p!3N&oQO1OGtYXb-z_fK{FqFXO-t z$`5@FhP3cs6+mU>i{tuQF(sT_9EOtmQvkI-d3N6>9U{PPl<21_fHGh#ctXO+6+k&Y zPwc-a6M_7bGDpg^v8DE4nl78XNMtmL94aTDN$z8q(Hs}EaFo6QC!H96Mj9G^{DU4P5cbzF;IT`%2Jm!J2}m zfHj&miGoT`YF@Y=+6$A`1JEMb+CbrEjs<)da%(wLP#ZuGEN=3f#CP z$i?Tg>_il;Ss-8nYyA1h25v{mlU#G-Z$s#gSUTYx&v7y+Xd8nY+zX+VxUc&7_Y{yok z;0ou*u}@efTAz*bOHysx#@o3)1!rHDgVqNroJ9uq--f{%4XKH9#MqAArofAWRvRkV z!9)lWEmjJgDyCY2|45cFq@L-}+SJek%`-E9f)(gH7FN;tOq$_}9HcO^p%Y_Eu%i{c zX*-OA3?BmmU3|H1*GB;R_~Z+Y9L4L_D?y55%|u7Pb9L(lVpaR}CuZ#EM()HuJTxS- ztlQiO;6j6x@@^f(AZCP`YNkyYOW{LlFbqH`i84T`tUMoRj4f9z?WQ=i35uNLriT7K zIth+AM{+LvI%7y6XaRr{r|TR|G$FTe?>;D+ILE`nDM6xb%VZxj#W z9b08JI|}Lwfj+-LrIS55h^}M_@I+1J4iE#xWLsg4ek@KSuEcMO4#o zW%gwPznOv*!PAnKF<8eplifyFs8OWe)#0zZq@sv;K}{(pVucI`98suMzy=F{~H zG?3dcQ-lsl|2r;F%4D?u5h+d-4hKr9O;PInIR)FsJm<|%&Pg6JPs2ud!B2|rAvtiE zlR`6r>x$Gy!j82E>>#iC)T}M4Mp|xz68Yc?`5Oo1sl_rhW{u%#d$FmromCR<=v*pl zPDE<9u=UJKV5OA~%t?qxR&wfG)G4*W6KXKCb4!$K1CC`tTswWb{x^jlI>(ga;D%qV zu1-SP%0K7E5m`n*`5cXc@%oYn+~F73TjjtbC}T&NcN)VMul_Jj{^GlH7xgoSc*fRS z?C!aahzLHEgJ9P;RH&Hc6}%p!O6_GWEclDyAU)o zWuIO6=U+)#eJHVzQVd}$pcFyQP}4(#I5+JZp?pBgp?oQf-3xmNQ35YJiUXL}kOTOL zJ~=G@j{(5fAr$Z%F|UNUC`LK#eue0nk(O{R$6 zd>;egI7D86uOa6d!yW-q-qu&HEqM%*FAZBaLiquK`2PyT^F3+m8q!ef3!rQW_W*ty zmd{l_#f0iN4*G?sIl@qW-)zD+U9i?P2tfvYlOR%Ypzue~U4)c+=SlSsZZ*Kgq5K4I zx?G}2K0t*t_+LKt+YZrb4cNB>{;xvvVKDG69mePJdlX{h@cr2Hqx4MSqYy?&ylJ0S z3GdLC$Vbpe%v}W9_;SE)5Xmqfw-=r=N#ec?0DXt0EY3gi*tStVypSHI*hR=e`9X*? z(93{h3-Iheq!9Z(_Cx*Un7~VJ`86bY+Tc@y>roKb`&Y2P9K#T->d ziiC1NyM~-l_c)~aAhzPG^dX4>HyRV#waVO24!>S$~$HbQWxBfTCx zl5LYP_g2hIR`12G6EeZTF6^h*57=seLRzIjp_5m${FEKjaAk{E{pJCu6kD+y9|jyx z)BKrX$Y)vR3}cQ-ua)m!!`C>?h9bW6>-5ELC#_wl*8#w?4lbF80GQ$rnBu=+zR4Cp zDURcQ?5CM=Xod)uPwBAPy1EkxfX0+{z<1WCzX^eF@2egE@qLHIWyK8dx6*Lt?f(qM zD_hKYI@@O!JZ~8^KcOU#{x_Y~?;9()Q7f08ZWWmrvJN4chYDvh!_3|cJ!ThG^Xm|3 z+bk|-1UoEi%rRlI4idSy*u|+iBb*;n;C$vM6u{yC4V2kyx*IK}0>&}WTs}#i)DdRw8zL4Fi}Qf2w|smDfA``O7Ih?j;x;S;B=GdeMg(-#!!`|3XiQ zIdRs!uXP83hE}fQ`Ge%@f{kNVux#v^WzjTJu9WbVdO{`;TdG?-(~y|?smx~5=eRH( zj19OwlM9i9XYHF9OK!(}STL*B8XABmr~ZWnZcElZ5D8ih`7AQi%FERRwuSc0!gMqA}1$ zMTpiC?;3>qa_3Q4#xoRnIo z8TN`4%rV4p+SYE#3bHVX@Aj4LK}$vnpJN|L0gJ=jj5}#g%)$6jT)vUzK|gzq9@$ce9W6+VJ@`{SJ(!@C>6;P2mwz+m#excYjRY;)}h)h_1fSWLY z#qA7~dl3?c0#1F<%}aa23{)U1$c4x#9x`NP4mFk^y9;P{g=;k#7kuRQ%Zvt#e_ssR z!_(~!8mm7W17xHCynUr5y%msfvnWIMG^8G5x)^7FoggvPt}aGhAy3*#WF z$_hJTVjc(=ctHaeZWQFNin6;D4@7LLqut*DM~NEej&{OXZj-!hTV4j(+X#LQG;cjJ z!9Q7`CB_4sIS~H0Gxo@kx#%?xxpf#xaAOiU6DG_}_I>Uo6y#QvCd=FG1@*6joC{;385l(F9a)iAWD2nBFSWV|;_FDF|&T>(A4aPa>lE_o_1Um0B zK9;{-ifs~P*tVl`6CqP<_TMZa`5H8>@Fe>PxJA;M*`iEJ?c~ks{TThrPwNd*Q7<`79ct>??zEM(ze?)#(81T2ZjY%&$NPFl_r27>}BLE>Ij+o)!X8C7? zwPG5$Fc?IU+>V?4AysyZ;G5x}L4^su=7~(5SrN9^0Mrv_rvx>;J&b*sA;2ZEn^A@vNy*GwHWcg;vm5dG zIDf|pF>~LHH?Ma03c|t=sfE^(PjqSBF)`tFWN8=cQ{=Ej=k~81$rH1)K+H+G+%Nd_ zxPZ3SGE6#jfku%hHT(XXsm7f4MHW@WS9Q5e3Lk+UG}v)g3tPEk*)}fBf_DxRXc2G4 z4Pk{f(9#*8cSwPC#j@ADM|>_kGo;KJD!#f;$$rP~Tt4=Ax6+@e^s9Q*Be<=Yj3VeAlY= z69Ei^fS{=-Pg9H&QQlzsi2#n~@H4pZgh^aI?(mH1qkuToZgm8BG&6B>jd3C|z%Y2d z5-dY}{X?oq(<}hV5D~IJZrVi6VGshX^g0$w&G6f9E=_oWI1d<_dJ7^=9X*XA*J!{w z4bxSB4M{rAzX=s^XSgaov=dKg0eKn6THPf+{2~(Dq0mou)%_23nEoH?gb@F)I!jo9 zIu58#-`5k=e}ftBKRd)a7XJlgjfM$%yBZL(LMmiWdI+|IV{F!IfsIp=Ig9D{&t5~;X#~8ZFPI`~>n51S?hRhQ1k^rDOFCeQs z_BhyFxh>+gu+b#rl=Cyxo2RMnE{B0(Ir}VND#EDXw<>}rqfB-axd$AiCViiaeCgr9bx}VQMDTFsNe`TA&C?t0DT}; zE+&l6_9Y;Hc?BJ#ox0X8=umGa<9Py(n>-fHJtv6l*){{5e!e|2CJhDlP-w!~H8SFv zj1>QD9#`-P93x$UJA(r#Joa=Q`4bd2cm$_Ayc7gj=J|Xi8BXc}X`~Feg(CBB;jned zgN>=YoS<>q*@A`~2NB7;rkFnS(GG3W_atXOn#GlYrM?(k9`hB275=%oB`ggwxWtW8 zwwTvz0rRfb{;cRpjAbgy7NwWMLGe%Jy=247 z;na0ZZ&xCcr(XlM*|H{!aBFdX5cjgk_U)6zfsH!a!9ddosC#OAJ^Q)>Q=*T~PA2Ip!~OVBZs0IOonEt?^l zn{88i{v>$YO@v}M!W8+U+NzkH42-Nvx^;{6+< z=mU=y7om^?E7(G#o{tEaTl~(BCR{ERL8uC4MxM3MM?#|Pn%G>-;X0^Y<&$Ey-??ba zYf1*w5ER?=723J)>PE(+?uxY8&W&o52RqN^#_2rNca6TsTiLy^R-Kt-2>CePG#W}@ z_H{L`BA9vm&#y6t=i3h~IQh23bJBi9i4w`Q|IQmK3 z9C0$^RyLj0<9B3Le@31AX)aOHOX_!@gWXNQIEBwGDE;%%K^|?mLO{6mj+9~H z1E6b(Hl*h07Lp%QEQ&WMhzu_A2-7Th!Liz-IIC@k1-9Y)+-iP8Ob{x&IcE!o_?ICY21683+)$BdX=gAA z=W7MpW#G^7UqT}Xi1bUD>LiX30k29P#f-?o!Cg_qnZ-uZKOwgcrY&9fsa(KbV^ zda0ton~S_|rr?N@>|-9Q2gY7-u7hT2mZvaUoqIsmY&Z} zc5rZzg@kApZ%1oZH{kzt>^EnQg8?81_HP&PGpwBopXlt?O0$b_k=S}uFAY-##H84Eo3x$&Pn$Ab+hBcBk({6BA{ zA|0$Z(QC{bQ?#fgwPu!+ee(3Ea9Vf#h8h9gUq+_i7l{EgTEmuXzt2R&Pj+oYpccW3 zI}>`68V=M_=YZ`N8V)6d6{AWdjNK z%y3|V{qr1y5lcK*xWvMk`6*11+JPJFI8>x*(El(U2^|@MXm@RB#9Bv9Wojyojnla3 z&3g!fNU~5lf)PDTAYaaQe=TRins57oIyFccfwUym1?o`wDg}Ag{itjGiMvPIWc0Vh^W|U z+>CP2y5-*5f|QJmYN~WN9rS1!Wmsno9v|)+X)Q4W zZ#vQq^F#m5f$_burCVpBJDbm18ut6k^bHxZ#P^CZYz8;(m<_X=B>pDtZDn2C{obTo zz9gmLike*;a1i>*+RFp4?^8}M$z5cp#qKgyqGev!|CItfL6E3r2m%PGoeBsD^rar|J1>tTn(d8us`9TUfO!UO#*{!2^wRjqW z2mCwKPWtsh<3Q03j$o?@{$cpM(Ien(a0zQ0 zFQ0#%YbW2CX(|+ zVn4g?C+-PKbYzW3V@a*-A|h!BZ&Adk=h z?w>$s@^Vx<4Ww9gq`9EzyCjbN_zpjX!0G(&1Iv3aqzU~*eBtMCZL>%9HA7n%-AX7M zPwT#m4<`k;9JpiYhbzwIR;&OuCtygd$-G>Hw62gqulU(^%U4)a1-i!z9AeR}7n~Bw zBw7*W!$ieKgULHMBIFXifJU&sTk54N$clmR^yGlr)e=IwQcV0zUx|;(LK~wKlC1x^ zJ;nkWt3y63yEcCE?`vBZcK#rhW!=i-SaoZ%qYB1R&VJDdSG z!biGvbE=KFMms@6tJub`9B8!Y2Qm>c)OIG`$Y21}1Zt90KQwo9#9 zCcerx#V&90z4mZz1UKmE)fN9<`y$X*?nLQu6*9ZPwllCL%H%ig@xx7y`_jy$q?oos zvi#D}eL3vH=eB)g)@fSPaSdDVi}PSY&YG5uuU6X7@%U=~tSQfaIDMWUb+`GCgb20o zILsLEAfkihYAx+_um#en)Q$Zq7Ig#p1UXup*|c6%Iwf~)KVMOjlHk!Lhb9xb_-;=ccQu5*kOSznU#-ENCSD`WpUo6miFt z^6PpH?j6rGqAZd{L)hNHGb0K*B81-&D4)^X0aYU2QAh zaR6astyo^#X?gGNL|)oDD3w>r^^ObKcAx!9WrwKAPirN&JCQA4;4a<#6&qaSq8slJ zltL?qZ{H1uIh}wyzl*CH;b+tYH=@p0-wHBx&H6b!1o*;84fV=}P4nEI5B{Syp5Q5>baX1`{s8K6!PBD;X4dBWcTa4vdSl#ylCNZ~?>NOG2~HLdlBn z9_jPM2z}2Q2(VI-4BHs~L2shZ?L*2sb-Mt^8V z+P&(df{P)K^h{R;!J&6vNt?An8dTi^lWu4qxVZXXy7ckrq|zv1&J_Q z8H#NxM`;mhzNQc)jR$h7(HUep)m`YD%%r!y%{_G!wv#L2h!WrGSr%a6L2uUDrF8`0 zwpsX&&{H+EBO7pp+^5vCg!LX`u82<~zNyH3l`d^p;eTCz1^H*^y0KkaW(OcxA0Qm# zAHqK*%iG)7I{c~C%$Qp100tBhm#)5>-BHFIFjJIJaUe>IMagftuD+y}#B0KlWp5rb zT&xDeE>(^fi`+Q;2Z7eQ6*E-ivt%St%H`a-!5JOhtSrPMTvc3rX5gHy0i?r39FERg zcEgqP5OnY)H+cW2t@Dm*B5T8VKsp#Yf*_)iAWeG9A|RrINE0c7bTCMhDkYQ{IvD9y ziXh4YlE|)sl_tfwNCy$5BnXBYI*4cxzL8HC$uWN^+tD)rqqQ}M}l zG0`Ub_4mpTFU{&_n=5)w+FUO*GQml|^x+hFZuoUEG@6JZ#a9yXal7F91oEj3`z>{% z976H0(sstJ^~{r7R4y&KH#XiK$jQV5(cOQZ!z;kk(Zv_Y%6yORx-1D^ldAj;tf$p9rm6yAwM}JrvH- zetIqmZ0TuB*ofHb`w`uodmewFRpMGUGAAup(y=7Z&ay5GNg)WL2j73^*av5e_z!ZI zP4NoR9*m|H4kr5?CODb<)MMks;>tcGu(CX^<#mtdz>bnG`aq2*>7kaw ziWbIw3$F*wpP4lKn7%8LgP1kBUee3yB>S#wCl=|%=_hoaP!PT??kF$W!x#4_N=;uy zRc(GS-GE+2RBtiHNV(1kIo`dIgG49^G0TWYOVdmC&q(Kk2Pe+RFA+rAjgfxcwq{+j*RhlSc#2q)cWwut z%PCkL9bOv_DxQ(SGeE20XnX<1P}Tp&?)k(;3eJ)2{n@b&S~Y{l-xt0s$kw2D$x*Cl zO{+ZP<%erom`1&zp^X-1_lDkyrG}L&wmRsB7431xW*ZBe*Q98~1sMjfd|uc{19xL{ zJcr^PTDB(Vc>}BG5Am5Cr+Os5tuIIH?1G;kk9UkyO)E23LRWp|TMd24YA8RebL;C( zT7|O0D&A`eK(rg}6A1k{Hoe&Sz^HgQbOi0QY}D(-cXqrBwuZA&p)fTvKC!9_Mf z!3i)Ujj`>G&p|e;{LZ@2vu-I-9ahLVrj8)t=2ydVVfuck}pd-MH z1uWdXH%$S~3mBhX4!1ncxOuz47tP(hxy^Vq>JTd8o?RTLrFj@z>g1bBq_rh!m2Zta zNmnkB#`?tQr5SMNLLCC%W*X+Fd*|Y(#G#8;no2GV39Z z&R1MVsdK;hS7y}RadXh##w7!mwdlbl?fqJjLP+IBFnmlYTw~s3Q92G**RDcuvVP&W zE0N+Wl+4O4_gq!2)Np@%G?v?{H6QCi4&^W^l!>I6=>=M}$R(UHsVR7og~ zr)WIsQpgSb^BRTZo=E&XRywA0$215WQ62WQV(BP)IkuA_^&etER&*OIuB!@xT8Bm$ zhSYd~rBD+>T<&P*qbt}jCKjrKZ=-biJU+C! z)24GzxIbWbVk6AcIN`IiX#cKHON#G2r*ogU0ghpbhLIg zvpKp)V<0-!-=cE%Fs8>a$W<%~mysn=6lT@prs1|TJmy67AiC|W=AL065%uD(iKHM$ z-z-jQFml&CAWv(MHi5hMvS>qv;BwO4K)O@>m(oE?CRHJt22xcT;N${G;sj^gZ9%cbnYcaO~#f#kq z)+v@h>snc~;?`%koMsSwbKS#~GrXKG?d)uUTo;Lj?n;8bd_3w@oB;~X(7XIFM90ow zVq68fuGIpSq06SQ7F=iKuAbsV4v8Y4<}h1>3*sTRbhEir_u~wz6bc<0LCN)Bg6FaR ztOW+8#eIoEwsR`9H;5eQ9fAPbmWWz4qFn&%P_(LXTMZ!ABmJhwuOelKo8Arw^*CK* zU*Uo>vU|5*N8-Xo}Tx7?=#q$0NEUZ0wK#^yGpGB(GM`|Ld!2VX}p;<;pQY^Yd zy8o~psXxgsBcvTGE<{|--7u#*niRB)RExCCUEtGNg)>?XA-IMNm#NYy|1@RPL zo!T#t2o5kATJ zV8rKS<}clTkoi~V%W}Bkn+7l=eN%}#T+7I=smq~g(RmnnPRL6Y0+0IQJ#`uE|BU?! zis7j1!@Ixz+Es|#Y|%80Ym%rV$U~d;coA1#XH6R$OueAjnN(A!AtUuMjFOudpfcSrmzZcq53*%x~O>Y5* z^Z`Q71Hu_#&wuwGr`x`JnP_VH#^~q~G9dS$1A#aW$RmI~|H&P^y?=MsT?6XTe!%HQ zMNl`M4Rpj_$YQuhJ%3nhQ*kuIJ#`M58bR&9_YsKL-@0*X z0JYKG2bjkF3izGvrDjok$9>k7_+MEEog_7d+G_1noDzQY$^qj=t*4F$_w_sIUxwJh Y=+Ic79vDI2M-?Z?0T>=DY2Ua02XS2?djJ3c literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/PushOverrideInfo.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/PushOverrideInfo.scala deleted file mode 100644 index 359b876a1..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/PushOverrideInfo.scala +++ /dev/null @@ -1,246 +0,0 @@ -package com.twitter.frigate.pushservice.model.ibis - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.history.History -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.frigate.thriftscala.FrigateNotification -import com.twitter.frigate.thriftscala.OverrideInfo -import com.twitter.util.Duration -import com.twitter.util.Time - -object PushOverrideInfo { - - private val name: String = this.getClass.getSimpleName - - /** - * Gets all eligible time + override push notification pairs from a target's History - * - * @param history: history of push notifications - * @param lookbackDuration: duration to look back up in history for overriding notifications - * @return: list of notifications with send timestamps which are eligible for overriding - */ - def getOverrideEligibleHistory( - history: History, - lookbackDuration: Duration, - ): Seq[(Time, FrigateNotification)] = { - history.sortedHistory - .takeWhile { case (notifTimestamp, _) => lookbackDuration.ago < notifTimestamp } - .filter { - case (_, notification) => notification.overrideInfo.isDefined - } - } - - /** - * Gets all eligible override push notifications from a target's History - * - * @param history Target's History - * @param lookbackDuration Duration in which we would like to obtain the eligible push notifications - * @param stats StatsReceiver to track stats for this function - * @return Returns a list of FrigateNotification - */ - def getOverrideEligiblePushNotifications( - history: History, - lookbackDuration: Duration, - stats: StatsReceiver, - ): Seq[FrigateNotification] = { - val eligibleNotificationsDistribution = - stats.scope(name).stat("eligible_notifications_size_distribution") - val eligibleNotificationsSeq = - getOverrideEligibleHistory(history, lookbackDuration) - .collect { - case (_, notification) => notification - } - - eligibleNotificationsDistribution.add(eligibleNotificationsSeq.size) - eligibleNotificationsSeq - } - - /** - * Gets the OverrideInfo for the last eligible Override Notification FrigateNotification, if it exists - * @param history Target's History - * @param lookbackDuration Duration in which we would like to obtain the last override notification - * @param stats StatsReceiver to track stats for this function - * @return Returns OverrideInfo of the last MR push, else None - */ - def getOverrideInfoOfLastEligiblePushNotif( - history: History, - lookbackDuration: Duration, - stats: StatsReceiver - ): Option[OverrideInfo] = { - val overrideInfoEmptyOfLastPush = stats.scope(name).counter("override_info_empty_of_last_push") - val overrideInfoExistsForLastPush = - stats.scope(name).counter("override_info_exists_for_last_push") - val overrideHistory = - getOverrideEligiblePushNotifications(history, lookbackDuration, stats) - if (overrideHistory.isEmpty) { - overrideInfoEmptyOfLastPush.incr() - None - } else { - overrideInfoExistsForLastPush.incr() - overrideHistory.head.overrideInfo - } - } - - /** - * Gets all the MR Push Notifications in the specified override chain - * @param history Target's History - * @param overrideChainId Override Chain Identifier - * @param stats StatsReceiver to track stats for this function - * @return Returns a sequence of FrigateNotification that exist in the override chain - */ - def getMrPushNotificationsInOverrideChain( - history: History, - overrideChainId: String, - stats: StatsReceiver - ): Seq[FrigateNotification] = { - val notificationInOverrideChain = stats.scope(name).counter("notification_in_override_chain") - val notificationNotInOverrideChain = - stats.scope(name).counter("notification_not_in_override_chain") - history.sortedHistory.flatMap { - case (_, notification) - if isNotificationInOverrideChain(notification, overrideChainId, stats) => - notificationInOverrideChain.incr() - Some(notification) - case _ => - notificationNotInOverrideChain.incr() - None - } - } - - /** - * Gets the timestamp (in milliseconds) for the specified FrigateNotification - * @param notification The FrigateNotification that we would like the timestamp for - * @param history Target's History - * @param stats StatsReceiver to track stats for this function - * @return Returns the timestamp in milliseconds for the specified notification - * if it exists History, else None - */ - def getTimestampInMillisForFrigateNotification( - notification: FrigateNotification, - history: History, - stats: StatsReceiver - ): Option[Long] = { - val foundTimestampOfNotificationInHistory = - stats.scope(name).counter("found_timestamp_of_notification_in_history") - history.sortedHistory - .find(_._2.equals(notification)).map { - case (time, _) => - foundTimestampOfNotificationInHistory.incr() - time.inMilliseconds - } - } - - /** - * Gets the oldest frigate notification based on the user's NTab last read position - * @param overrideCandidatesMap All the NTab Notifications in the override chain - * @return Returns the oldest frigate notification in the chain - */ - def getOldestFrigateNotification( - overrideCandidatesMap: Map[Long, FrigateNotification], - ): FrigateNotification = { - overrideCandidatesMap.minBy(_._1)._2 - } - - /** - * Gets the impression ids of previous eligible push notification. - * @param history Target's History - * @param lookbackDuration Duration in which we would like to obtain previous impression ids - * @param stats StatsReceiver to track stats for this function - * @return Returns the impression identifier for the last eligible push notif. - * if it exists in the target's History, else None. - */ - def getImpressionIdsOfPrevEligiblePushNotif( - history: History, - lookbackDuration: Duration, - stats: StatsReceiver - ): Seq[String] = { - val foundImpressionIdOfLastEligiblePushNotif = - stats.scope(name).counter("found_impression_id_of_last_eligible_push_notif") - val overrideHistoryEmptyWhenFetchingImpressionId = - stats.scope(name).counter("override_history_empty_when_fetching_impression_id") - val overrideHistory = getOverrideEligiblePushNotifications(history, lookbackDuration, stats) - .filter(frigateNotification => - // Exclude notifications of nonGenericOverrideTypes from being overridden - !RecTypes.nonGenericOverrideTypes.contains(frigateNotification.commonRecommendationType)) - - if (overrideHistory.isEmpty) { - overrideHistoryEmptyWhenFetchingImpressionId.incr() - Seq.empty - } else { - foundImpressionIdOfLastEligiblePushNotif.incr() - overrideHistory.flatMap(_.impressionId) - } - } - - /** - * Gets the impressions ids by eventId, for MagicFanoutEvent candidates. - * - * @param history Target's History - * @param lookbackDuration Duration in which we would like to obtain previous impression ids - * @param stats StatsReceiver to track stats for this function - * @param overridableType Specific MagicFanoutEvent CRT - * @param eventId Event identifier for MagicFanoutEventCandidate. - * @return Returns the impression identifiers for the last eligible, eventId-matching - * MagicFanoutEvent push notifications if they exist in the target's history, else None. - */ - def getImpressionIdsForPrevEligibleMagicFanoutEventCandidates( - history: History, - lookbackDuration: Duration, - stats: StatsReceiver, - overridableType: CommonRecommendationType, - eventId: Long - ): Seq[String] = { - val foundImpressionIdOfMagicFanoutEventNotif = - stats.scope(name).counter("found_impression_id_of_magic_fanout_event_notif") - val overrideHistoryEmptyWhenFetchingImpressionId = - stats - .scope(name).counter( - "override_history_empty_when_fetching_impression_id_for_magic_fanout_event_notif") - - val overrideHistory = - getOverrideEligiblePushNotifications(history, lookbackDuration, stats) - .filter(frigateNotification => - // Only override notifications with same CRT and eventId - frigateNotification.commonRecommendationType == overridableType && - frigateNotification.magicFanoutEventNotification.exists(_.eventId == eventId)) - - if (overrideHistory.isEmpty) { - overrideHistoryEmptyWhenFetchingImpressionId.incr() - Seq.empty - } else { - foundImpressionIdOfMagicFanoutEventNotif.incr() - overrideHistory.flatMap(_.impressionId) - } - } - - /** - * Determines if the provided notification is part of the specified override chain - * @param notification FrigateNotification that we're trying to identify as within the override chain - * @param overrideChainId Override Chain Identifier - * @param stats StatsReceiver to track stats for this function - * @return Returns true if the provided FrigateNotification is within the override chain, else false - */ - private def isNotificationInOverrideChain( - notification: FrigateNotification, - overrideChainId: String, - stats: StatsReceiver - ): Boolean = { - val notifIsInOverrideChain = stats.scope(name).counter("notif_is_in_override_chain") - val notifNotInOverrideChain = stats.scope(name).counter("notif_not_in_override_chain") - notification.overrideInfo match { - case Some(overrideInfo) => - val isNotifInOverrideChain = overrideInfo.collapseInfo.overrideChainId == overrideChainId - if (isNotifInOverrideChain) { - notifIsInOverrideChain.incr() - true - } else { - notifNotInOverrideChain.incr() - false - } - case _ => - notifNotInOverrideChain.incr() - false - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/RankedSocialContextIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/RankedSocialContextIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..d4beb60d411e54605b77a1e891c4c586360de3ff GIT binary patch literal 36989 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 - - lazy val socialContextModelValues: Future[Map[String, String]] = - rankedSocialContextActionsFut.map(rankedSocialContextActions => - PushIbisUtil.getSocialContextModelValues(rankedSocialContextActions.map(_.userId))) - - lazy val rankedSocialContextActionsFut: Future[Seq[SocialContextAction]] = - CandidateUtil.getRankedSocialContext( - socialContextActions, - target.seedsWithWeight, - defaultToRecency = false) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSpeakerIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSpeakerIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..d2f5bc485f38386224c8a2efbd68d39695a56af7 GIT binary patch literal 37204 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 D=$50V literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSpeakerIbis2Hydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSpeakerIbis2Hydrator.scala deleted file mode 100644 index d1a439972..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSpeakerIbis2Hydrator.scala +++ /dev/null @@ -1,34 +0,0 @@ -package com.twitter.frigate.pushservice.model.ibis - -import com.twitter.frigate.pushservice.model.ScheduledSpaceSpeakerPushCandidate -import com.twitter.frigate.pushservice.util.PushIbisUtil._ -import com.twitter.frigate.thriftscala.SpaceNotificationType -import com.twitter.util.Future - -trait ScheduledSpaceSpeakerIbis2Hydrator extends Ibis2HydratorForCandidate { - self: ScheduledSpaceSpeakerPushCandidate => - - override lazy val senderId: Option[Long] = None - - private lazy val targetModelValues: Future[Map[String, String]] = { - hostId match { - case Some(spaceHostId) => - audioSpaceFut.map { audioSpace => - val isStartNow = frigateNotification.spaceNotification.exists( - _.spaceNotificationType.contains(SpaceNotificationType.AtSpaceBroadcast)) - - Map( - "host_id" -> s"$spaceHostId", - "space_id" -> spaceId, - "is_start_now" -> s"$isStartNow" - ) ++ audioSpace.flatMap(_.title.map("space_title" -> _)) - } - case _ => - Future.exception( - new IllegalStateException("Unable to get host id for ScheduledSpaceSpeakerIbis2Hydrator")) - } - } - - override lazy val modelValues: Future[Map[String, String]] = - mergeFutModelValues(super.modelValues, targetModelValues) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSubscriberIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSubscriberIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..d2349784330d87e5faf82c5c902abba55d046219 GIT binary patch literal 37096 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%0AC1Q#hye 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSubscriberIbis2Hydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSubscriberIbis2Hydrator.scala deleted file mode 100644 index b1486de3f..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/ScheduledSpaceSubscriberIbis2Hydrator.scala +++ /dev/null @@ -1,29 +0,0 @@ -package com.twitter.frigate.pushservice.model.ibis - -import com.twitter.frigate.pushservice.model.ScheduledSpaceSubscriberPushCandidate -import com.twitter.frigate.pushservice.util.PushIbisUtil._ -import com.twitter.util.Future - -trait ScheduledSpaceSubscriberIbis2Hydrator extends Ibis2HydratorForCandidate { - self: ScheduledSpaceSubscriberPushCandidate => - - override lazy val senderId: Option[Long] = hostId - - private lazy val targetModelValues: Future[Map[String, String]] = { - hostId match { - case Some(spaceHostId) => - audioSpaceFut.map { audioSpace => - Map( - "host_id" -> s"$spaceHostId", - "space_id" -> spaceId, - ) ++ audioSpace.flatMap(_.title.map("space_title" -> _)) - } - case _ => - Future.exception( - new RuntimeException("Unable to get host id for ScheduledSpaceSubscriberIbis2Hydrator")) - } - } - - override lazy val modelValues: Future[Map[String, String]] = - mergeFutModelValues(super.modelValues, targetModelValues) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/SubscribedSearchTweetIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/SubscribedSearchTweetIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..ad7241ee6e92f5730e05577f716adbf6772a3021 GIT binary patch literal 37158 zcmagEWmp}_wm*!!dvJGmcL?t8L4$52IBYz)TX1)GclQw7EkFXn-Tyl?bIzGL_ulvY z(mYhv`pH_otE#(8MII6g3k(bl4lF&5N2f}yC_Wh+3~U?*3=9+0sxJX>_+;Vm$ymeF z(Za=$*~8whDOpi@O%(0(*$Z|Gi!iCT1S)ps1JB!9T( ztV$>hb9`pnoiFiPy->GLGqt{iZgAGU+5vuJjF2<&T)n_#od>WOnyOeW43gmxI5nYh=&+iCS)RO33P%mKqfweY zhL8K>DsC^6e(vNC68=)zFU!o-T3NOk2<-v9U&2k!HKjkBG$stX)VWPDG&oynI@PcB z6`^S-|J2SCG)s9kdCH-%rFTioxL-*$|v}4;O>sDD3((AVL8m`ZhlVDep1ta z6!kNgrbwMyhgfXN7zZEEo70g5x$jMGu>K04q>^u^q_Gfffasw2{RPU?!3XG7ynCd8 z>N}a|uHt>ywZMEc1;!LQ{g-5-LiC>a4^Q5Yh$R*8B!&B)mr6GFMaJ*Q^PjL3jlfj? zQAJN`dC_}N^)?~Ezz{)yjh!v*Tv(WYU#k+P9F$ zewjQib^yv0uXcB-N*e0m^bsGP?U`9FW)u)CGZfneX`AXU1m-RE>1@$mG;~)FrAOXSpom&f-*H=NkqR?xVh-ukHJr|hRf|g+)7#6Slm?e2qF*C^qSbcw zWts!P0HhU~xgtuc+P>SlN8F1vf08lr7d?t|L|0E!GH1i(Eku!Z!n~G{J)DUtk88`s zX@Bfc`KVuU!TcjgLRsC&gYp_?suN?7*Q!ylWVUth{Q(mt#gw+!w5982kgA{K4Dm14 zy3{khrr2d)xUpG%?z4X;DC{$$x;5xFp9Lid9h4w*fSHOjz|n=p4B%|>`zFsym{1yE zMU%Sok(yW33co^wlai$eKZ=l(!3tPzyXE9kw42E0p4!?gwAagJa3kIl7`bv3-r#9! zfiw$A2q6iLKMOFAK-9&4T{Fd5f6A7k=c`H%?mz2&oV%p9;x`-bja0=)La5D#l+9o> zR9Fn-rx>i~;++3HO_tTFR-E@kTpe9;<+GM(0&P15GU+}R-Oqpk;_yU@ga-7omSSSC zO!U$`@bHwu4+_&pP;<)_@IlTyc2I8k)q2XiKQ{H*@YkA=*FM#@Kbl>#`2mUakb{4{ zA2Lxp$h4rXg<&T=aeIJ9LIvj#RZUZKZ`ESojyQ2~cG{Y8gEXu_Y6(R`NqLtyds12{ z8kh&SuJ5)97%ZwAnV;WXXL6zP7x`q~%2A8?(mcUSlllRexsiu5;x1$r3ZIp9cYR^a zmXRcjRU(!NCEG6Zjj?+w|3`!0+xypd%Y+Q~JQq-SM^-3CbaU23p_B2CE)P!e+HSJ26G_E2k z0h>wJ`Q%3^8$|CGE~C`6Bm867X@knRT&zT=t|Zi@oH-bg!EWS!Ek zf#F6p9ygGx*OzIBT}Ge8_2`I=ke=>X94|cUF|`O)9*WDN=F~C#*GEssv*5rq4~%-rgUIw^W9V?g;8`4-}PIn zDc;AQI=kfYP_iqop|5wua^0hCec=U-z}iuXO97G@&D+_I8c%8JTuw|uJ6D4qDgXE6 zmV)s5+NmWc130svFTYp@N-U=bICLGqxp5+!qGR(pN}vTCo6r}0m5q)MIQ&T)l4-+Z z6_2486-^Mnj=9Gc*_(lY?QPhzmr7A438h!iZZ=M%A>h(#VD~v??jzf;$5*oHcgCjc zmXwr^284*o>Otzs+wiW2qui!)Hp^ialaq{E0C*1gEb$AIm|3ICS}O=jG=)pMI$goW z7IJ<+Mx|0k8Ljt92h=P-JrUR`8C#Xo3|3CcKDK^g7A5Xk9{L&N2caP%!=0I^9?kihhn+_(1Qk}+bCfa5;gkjU09HPWk3XkF9f-Z4j+VmA?AW5dY-#ba` z4Bm>qm@!p64LKYoGCl^2Kui#-JpbAm!33riInrU$RIqV_i&#olP0Hm&@1{glG0!Bd zqu`UuxN)4!2c3iLt0<>?j{4+l1Zd=+EUsBNx6L99rcwEmaRL%Mgph4dcSwj8=n=iz zkb;Ya271z?kJ)cIeM-&vQ26R7iQ4qF4&WuqVV~^?*A+i8S<2qivjO}P_|7O;&MoBX z@MNTWrr^ZU%))afd518xW4V1lxLk2eA$+B@o6irfWm{p>pfWjlXmL?~ZS!-|R}uj} zJHiltT|ujf-`ueOLPr-Z&0zmAbxOy0)9U-3LdM2t_^nDZW(*^}8o65jqBe@#Uy)6- zIiwJu#Tr^#T^j6qFh@D#5a|s^i_(1G;fD~p#%j#?;cL9U;L2;3Ef1!|TNEFafAt@q zs6?tvc32G!j&6tLI^`s+QgWU0t7Fv-5iv}Vz0R&nsY^wyvEbS}y+0N<+d zn^^ZMLo+x-;^|N51a_$^KMYlSDVtTIqsZI@Uhl^=+VYaQzIfI)lB{Y@RW@l*6ij17>u;(@SP;}1mxwVzH zuhec)Z{|XM|G}&N^C%M5sb>06j`+x(a;&%CuN;2FSyA1*tt;=R5yTxd)Z}k3K}IFo zugm`fMTf+Zis4i({t6Xq+6WfsDGxMoZY^c4e! z{p~hC$=}zZ6>}>hs4E>Fk;hvnO&glrCGF}+TIozPa(nrj7)wc5^&HM1Yv>jbYWYcd zRQM@8iTu}=$-$ohgB`T;On@dCLeR?d#{~1|zUlAN%%6LxBr)Y6R=m$=uL%7iiCD!B zk?(%xQ+Loy*A)4LNUtW`O6+gxZ;~-Jar@@b*w0PfsxNK|;4w7H1@cBgpkmF1 zs90bKTA`*M_cq9AirH3?!t>Ymad#~XiYv~Z)FpqcJd{gPd`75iqZ+J7plr%>5N*S* zjxPKmt)B3?o<|QtS8_Jt%ZJdM>`z`D=5G)%P2qlX51D+KPqA`r2wC*w?2RQCctjG5(7tO#V-FqZb zCD@BFH1Ng#dxXe)767*L*7l<^4eU_CJlNi!GH3Gg%H^jjw&JCsL<_eXC-P_yu9T2b=sW)jY(oMUQRc726~XY+w{-0o=T=p zuQ~w07d#(TJwHJq%(+rWN5y0z1?AycB(pgN2NXzk_;r+wLMMvsF$J625 z&zp|W(7hwimwLfh`?vPZ5EkGniBU?)`OLs!XzKpX#M*I7#mmI;Wuxc19Z!h}No8Me zm-1)6u&DaCYwHF*@27>e2`~2ukvB&jzySJP$KKV!jmNu_iqVh8ccCRq1HdL>;sGn* zO7@7iu7lgshtEnMa#N>{YDG>(vR-k76`bE+sO*e{2HhL8tUZB5xo`Pxo}f;QoIGy$ z@_v005uXw|(cT1YFYUegrTvJ3!jyj0enW4Fw;gjAr^oISdo~RZcyh?F9xK6ST{$N) z8BgcQHi3RGEhUZUup+NL> zD*R6!@LlJd_#LStK+i~x4j+LNOtPBrxa(R}=%Ub54E~wW2Gr1+YLS;(V_#hnU)~Uw z&W>1%5L~~P*TVrzKe(6cjh9d92G6y?mCh|ep(^*Y)6i6&(`+8)<2PTUGoVm)j>FO$ z=3sY9RO@QbiPGU(EMWKk`&*q}k90Occe}nc_XFKyFSpkn8x_s#{n~*W&mkgT*~QRX zM;IaXt*NZ15laDH4}lg!`Yv4kmpwV;4;838rKoIbB>kEsrj^2jlD=VdK4Eh}SGVr# zkrV478U!Pahw#8T4PgE@MRE>ptK>cn0 zJ{AL+JkydKT!K=2Po>`$AY@m%ophv#_M4Si1u}4I6bu-FjtMRPq?z9h1!CjT3bQ*aLbj;@;JUnH`l4t` zmpEv_iJj1+OyZX~ae;B2(1p3bJ3oRtasJf_wL=L27yD~`brU`nGZc#_;%L9@Cd9w6 zPdF1mp`@U3bbo~EfzU!gxc>bR4G6$2!E(Z>4Y}V`yUej0~P0W zS&b8z3L5oyVQvHIi$vqJ zTSqshQ8vG%-U4Yiv6idv*#o$ruAd&sVn=eX9D-CpDos*cX=}4b_m*E9rv9?M3!$XW z{DD))%E*M>D`S)pvwq6++0e$*jcc2s!;rVw^T5)iTi(ZIk1PHA;klfe9gmuy3&P5W z`v+tBJNMCBB8DwDk|Z$>yUZ)1$p$fJT=DpCPmV|uOrA3)XpHM+M44Md>!i1*K)2;g zcjTe9Zf3uc92xs#=Y+$yUxN{Vn%#ivShO-bUs}Qbs|RPsBd2$(=UW1cbM`zPEUCwb z@i;RR-_3Xs4K~>n-H6S*g7WaUh?EY(Z4$c7O7{2I9^UqSRmTy|*q*Ok{e0ZdS`#Tz zi#A=tY8P*q)Yph8$J?W{mlJV1Z0aed+FtuM;)hjl=`{wNlh-$oPCQn724hn0a+AJY zQuFqFa##O2jWUK4c3j@*0SPriuZgo$X1tgY`0_e$GM-+M~08X-(|aq-w#?8#F}G#%)tXS>j>i zSBYg@e|C1^Eas@7PSKD&_tlwcG)*5`2|rqG;R0+PBjWu$V%M=A4$R$;Q_g&=Tfyn^ zP&S&U5G(aL)^tqSDfQT5<9UZzjV`t58>oHxZ?%fPQp02A z!~Dl0D>RI=1SuTn@=#o!5>92HXXbL;j5^{xA5Gop0Kcqb2adrwRTn(+CBpg{!+b?X zlAR?YdLJlVv1hs@J{O1sd2E2Ja>lKv#lV&G9Up)3k+80QtU$E%jLu}0EaEMG&PMaP z2|sNJQna8qTjJo1QI_P9_wA0!x32>;Tg_`+YiDN(OX->e$q1j{?q44l32`gsQ8QV2 zdzL*oYc)S`6(A^SP?mq>=UpzZJ=PjhzPQV@Q>3i{|vSq$6!V_5hrH z%&cYJB=|fqp-r&v9>roDdcOH#1+rw92y>YE`=o%Km4;J^5^o3f!^QJFwlRxjm)Iss z21l6^KB_@ArQ|ij*IJzIWXHQohVL&lK^Y>d>jR zFHKU(jj1TxxJ@YgZEf^GT$Uk5u8LQ@ezz1+tJ2RlrSN23ZLLkF*`>pzqnKw!R?peM zW{fR?YJ{kT@>QBgmP1KyidT$%uMpAF&Z;4;P^hHnHj{kCWfj`nrgbM$F%DDkYlA?9*;0R9_4e*sJ?1O zFe*g`#7CW_n8F9xj_%y&k7~9*-ce%UOUufuxwVmbPcurdkTF$PKAJ2wmGp{jsP}Fz z+bZJStdtSm{fNHf%YG|Iu@}O#?6WL#$mdV9B&_cjC=BdTb+yD{2P~~aC7jh&roaC@ zs@XASlE8RXntmk~MSo^yAcXBD!9ZhB#srq$Hdp1xIg;Z5P+3Sso}FWxd|5-wW#eqX zi-JLU&yjkQ);3vns^#O0E#S<+pnzRiS{~cA0;^i4s_b-IJfP9yWWlvMYGYmo-MN3c z6)8V(*@^INYEqYf)Zu+9DcMaU3mrE}TCr2OC{JXDT0X;U8kAI)WX<3RHmhcWgHNC5 zqw4-0JsuPCcYd=;(38&1&a>gC^>+mj_9$u}ubQVge`bI`R?<#e_&t7eg1p|DVs0FK z>{=c13-W!=%LOK`C1F9*30u(e)dkmKQMu-0aAvN{Jx5_Gg-)b1_to&Q;Bu^KlT_~& z7I0Y7_x$RaPVFc`&FHCqd}p-B0esIZ_(p_>F1*8QJJiy;ORz-+!^OtxQ2hAd`0}-6 zYR3a1+I!~H5aQ42+iwu}R27^_>&q+9T4TwYRoQXb5N;Xv_NVdk58A422H732`lpW) z(j=(3OhSdoV{FH6vRWtEntLY5XGh)rF!{uRobzU1ZbN&jP!E$Mu@9{95sho|d~<3r zPi;Dkh%e8npReXD2{5~U+}Yfac7MsDDzH6VjU+O#kS#lWc|F%YTYwC)+?q~sR-%*a zApANkd@kuy3G;)^l3EY*eibR9U25Dvc)2lS4Z0KD-VHZSsx+EWesl`&rPt1(bTH?7N_e2y$pI6 z_RO+nKF@8yT6#f?>bAlNhZ{tD@^^m!O=`%cG~G^EXqxl!5Aa<-c}EaEAXf=lNF%=z z=z_4>wg(YA!$m#>V$!%Y)%-x#6pQ#_Px*OMnmV7yo7bt>1%wlDh?2`=C9KbAuo)DH z>9JoMy!k0}50oQ-t40%}IKW(29B|-|Igtas0&OtF*Rb>hSses3g)IT74*xOLvN7bZ z?%lCpgp%80BIrt_RP4F~-|4I)4&a}@fY|is9zh%>zm`s+y0%2(g%{kqxFn#za_E|xRF}B` zXOu1u}ZD0(7a7~P$`eqf?Y+DaDfqmN1i{;yu3>oF|+1X zyHPz+%!!5yOHHa4{!KrDHTsd}NoavP2UFaVdSo?o{${3T1C!-rlo#E02t>9D%M_Vc zt43F8s$HnLfc5-S&A>r;klS8rF6mu;f0`&W7cKfbj-@M9*ZD1#_f(|Ju(YUsKzDxW zAVTeosS%l?vs2@gw+)ib8SyL0f=Y=fHUWo}pSUmI^{yXXuB8uXv`5sBE`6>VWwFY_ zOsArLZZy-U0n&0wO>3Bn!w%p^X#!L}{Wvf~W$c zNIaTHPP5ax%B|7k{>=kL`7a)&Jy~4vostU`^jZ^_qhS_S`cgPrkfo$=KgBezS^3)A zq(lw-^{b9l5BnH3pfngEj_^>iP&AO7vcL3Y0|9hlK|G ziuWNmP*_CTZgav}Oo~#dK?NCGm@0|qT6Te2dv#qP!V~z?4}vPZD(ET$PiG_Mg}Ud~ z`cRZ>va3qPq-GBdq-)_P+>Vds#Zsb|(OPBM!@}BT%A%KiLO#_oW#q_nv8aEKvzjU*Q)S>3!%XVU!(g!vq?J&m3`(BbUgYqFe;<% ze<>boguh624mW^>Bs*1khX^MYM!3f(wX@oh`P|}+EBVcVYD?@oqs8s^Z2uTE!54Wl7-F=sm`bmJ!c)3?+Z2oiK* ztMz6378o}4DP%~+ycsjC=_GQjd3c&z@$7FZ52SyqR3~W!sT_d)tr7~n?u+S2+fN_X z19J&ndxQWPaMvfu(SXJ`$glt+Gg7879R+P2Bq>XQcwJn$(VN>zH{X;0Ag*zCmO&M3 zuh~@TDC}1Q?=68PJ%u6Odb9ht0ii@i+1b7IswTR<6yLsXr(-3pQ}T!%vLiP&Om)Z( zv#Fhx!;82rU$>R=XLRFfc#Kw-m3Grtx=>5REH>K>HOgyaF}NBe0@Kf_X92QWGCdgJ zUtO=?eL~4!dpTW1H&ElhDCRg9S8_70i7=bmhB{fLPR&QIWx9b`9^?+U$5{KNCzqgW zXJLeCx|^XhOw(ZXU~E_3!axIROysp%QcD;# zw>O#ixSI(In*KA0_kRW@Pwg|^99$0ag}Y!J{-*j;iEMYSn29-YKgbu&@y@Fg36>yfjQdYyzqgrAp@e&s zbh<3(G?~w8pN$~pk&WO#3iF5#h+IW8F{l1i==MJqUS?i}PQ`Cka(k)fiJg?ba~^Xp zHGsVw%=^YPI#*rzj$_|bV@RS8rLTNZ16J40^jV^ID=Q{`i|F?X{o`S4qlfXWL!>h& zL={igAQa8oZJlwB<#DX($Iao7=t<@3n3DPZhXd<^C`;RV7S@uI6(cS$LYV1Kzv@m0 z`ejesrK0&@>u-!e6Z;es%q#%qbM_glZ&h={!D_22=|QPYlHV}#k>MqL@OEIFLCMDV zJhdvf4}FGwjNs@40by|=9mrCvQCY$R=#V!tFtUPch(0;G3-icHxtrzqj61h#)BPA8 z6c&M0t+kX(QEZrzID&%=p;S7iyo~7ejx8T#GwSB7bWC$MXH7s`@dhDpb?aN3r&_2R ztpyYKmJLgslwNOp4930?sy3iunoi>mnGqjjAI89k@ZZ$(e^6t9sA1)Q@4hG7HW!go zO#YyDGoJua3vmBQ{f!DU66OD(zUUr=?+ni|-t=jE-(>=SR8`)G;V_rY$Qa=Mi%ci5 zvzfBvSOhbY!Xr!@MZR{>QHR`o$6+9W+pJ`!c2KlyuMgw*F1zSmi}yUzU*xy0qabp1 z*gwcy*f=pGng0*+SrggqhnUo@b?3jx`%PpY)U@vrv|CiMzV(0l2Kz(3EuN*z*l4RO zpiSt$k)s_Ui|DQW$GBYn&Hd8um#$){lENoO9h8Wl(SW+7Vc+FkG5S?Lt+@g}#jdQX zqYL-ugE&U3^36FgJ=K#Y1!W>v_klI-rY=F}dPs6jVC1;@QtjZ4v zXg+>Z*L-id=@_vHG{%^c)q6o8Plw63#y0*^cK4YqeGxpJ`s=zF@YJ@#3<~c0y2Cw2 zj8k#(d03)^-#XoV9aC{GtQdZIT4RbwX|AxOJf^*KhqLNMSTTLB@ex~+6IpU@+}lF; zsH;A#*ww!np0gu9=V|pQ7ZO6~<&?@2O)-(H=i+ObQabg!JIOiDd~1ki4$Z6RInJMD z!7@UGdn^-@vZC=gj{w`IEEirhB-3u5tBWCgt^y zx{AX8G#Q%w+axdIZWV6>WQFIu1CifFP5Y#nx~9cG;~ w6_yRE*A1tVy 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 E08 - - override lazy val tweetDynamicInlineActionsModelValues = { - if (target.params(PushFeatureSwitchParams.EnableOONGeneratedInlineActions)) { - val actions = target.params(PushFeatureSwitchParams.TweetDynamicInlineActionsList) - InlineActionUtil.getGeneratedTweetInlineActions(target, statsReceiver, actions) - } else Map.empty[String, String] - } - - private lazy val searchTermValue: Map[String, String] = - Map( - "search_term" -> searchTerm, - "search_url" -> pushLandingUrl - ) - - private lazy val searchModelValues = searchTermValue ++ tweetDynamicInlineActionsModelValues - - override lazy val tweetModelValues: Future[Map[String, String]] = - for { - superModelValues <- super.tweetModelValues - tweetInlineModelValues <- tweetInlineActionModelValue - } yield { - superModelValues ++ mediaModelValue ++ searchModelValues ++ tweetInlineModelValues ++ inlineVideoMediaMap - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TopTweetImpressionsCandidateIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TopTweetImpressionsCandidateIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..56286e905168ba5ce09a398a03d277b5b851e51a GIT binary patch literal 36985 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 - - private lazy val targetModelValues: Map[String, String] = { - Map( - "target_user" -> target.targetId.toString, - "tweet" -> tweetId.toString, - "impressions_count" -> impressionsCount.toString - ) - } - - override lazy val modelValues: Future[Map[String, String]] = - mergeFutModelValues(super.modelValues, Future.value(targetModelValues)) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TopicProofTweetIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TopicProofTweetIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..7f6fd1616d077635330109709b905a4847973662 GIT binary patch literal 37120 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 Of((hk?9tf+;sF3kOJ3pt literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TopicProofTweetIbis2Hydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TopicProofTweetIbis2Hydrator.scala deleted file mode 100644 index 6a187dfeb..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TopicProofTweetIbis2Hydrator.scala +++ /dev/null @@ -1,32 +0,0 @@ -package com.twitter.frigate.pushservice.model.ibis - -import com.twitter.frigate.pushservice.model.TopicProofTweetPushCandidate -import com.twitter.frigate.pushservice.exception.UttEntityNotFoundException -import com.twitter.util.Future - -trait TopicProofTweetIbis2Hydrator extends TweetCandidateIbis2Hydrator { - self: TopicProofTweetPushCandidate => - - private lazy val implicitTopicTweetModelValues: Map[String, String] = { - val uttEntity = localizedUttEntity.getOrElse( - throw new UttEntityNotFoundException( - s"${getClass.getSimpleName} UttEntity missing for $tweetId")) - - Map( - "topic_name" -> uttEntity.localizedNameForDisplay, - "topic_id" -> uttEntity.entityId.toString - ) - } - - override lazy val modelName: String = pushCopy.ibisPushModelName - - override lazy val tweetModelValues: Future[Map[String, String]] = - for { - superModelValues <- super.tweetModelValues - tweetInlineModelValues <- tweetInlineActionModelValue - } yield { - superModelValues ++ - tweetInlineModelValues ++ - implicitTopicTweetModelValues - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TrendTweetIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TrendTweetIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..43c30dedfca53f0bcefcc35e0518018f86c49bd8 GIT binary patch literal 36934 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 - - lazy val trendNameModelValue = Map("trend_name" -> trendName) - - override lazy val tweetModelValues = for { - tweetValues <- super.tweetModelValues - inlineActionValues <- tweetInlineActionModelValue - } yield tweetValues ++ inlineActionValues ++ trendNameModelValue -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetCandidateIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetCandidateIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..78878713240477bcd0ef0699534fa01b3d49f188 GIT binary patch literal 38308 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 FS} -import com.twitter.frigate.pushservice.util.CopyUtil -import com.twitter.frigate.pushservice.util.EmailLandingPageExperimentUtil -import com.twitter.frigate.pushservice.util.InlineActionUtil -import com.twitter.frigate.pushservice.util.PushToHomeUtil -import com.twitter.frigate.pushservice.util.PushIbisUtil.mergeFutModelValues -import com.twitter.util.Future - -trait TweetCandidateIbis2Hydrator - extends Ibis2HydratorForCandidate - with InlineActionIbis2Hydrator - with CustomConfigurationMapForIbis { - self: PushCandidate with TweetCandidate with TweetDetails with TweetAuthorDetails => - - lazy val scopedStats: StatsReceiver = statsReceiver.scope(getClass.getSimpleName) - - lazy val tweetIdModelValue: Map[String, String] = - Map( - "tweet" -> tweetId.toString - ) - - lazy val authorModelValue: Map[String, String] = { - assert(authorId.isDefined) - Map( - "author" -> authorId.getOrElse(0L).toString - ) - } - - lazy val otherModelValues: Map[String, String] = - Map( - "show_explanatory_text" -> "true", - "show_negative_feedback" -> "true" - ) - - lazy val mediaModelValue: Map[String, String] = - Map( - "show_media" -> "true" - ) - - lazy val inlineVideoMediaMap: Map[String, String] = { - if (hasVideo) { - val isInlineVideoEnabled = target.params(FS.EnableInlineVideo) - val isAutoplayEnabled = target.params(FS.EnableAutoplayForInlineVideo) - Map( - "enable_inline_video_for_ios" -> isInlineVideoEnabled.toString, - "enable_autoplay_for_inline_video_ios" -> isAutoplayEnabled.toString - ) - } else Map.empty - } - - lazy val landingPageModelValues: Future[Map[String, String]] = { - for { - deviceInfoOpt <- target.deviceInfo - } yield { - PushToHomeUtil.getIbis2ModelValue(deviceInfoOpt, target, scopedStats) match { - case Some(pushToHomeModelValues) => pushToHomeModelValues - case _ => - EmailLandingPageExperimentUtil.getIbis2ModelValue( - deviceInfoOpt, - target, - tweetId - ) - } - } - } - - lazy val tweetDynamicInlineActionsModelValues = { - if (target.params(PushFeatureSwitchParams.EnableTweetDynamicInlineActions)) { - val actions = target.params(PushFeatureSwitchParams.TweetDynamicInlineActionsList) - InlineActionUtil.getGeneratedTweetInlineActions(target, statsReceiver, actions) - } else Map.empty[String, String] - } - - lazy val tweetDynamicInlineActionsModelValuesForWeb: Map[String, String] = { - if (target.isLoggedOutUser) { - Map.empty[String, String] - } else { - InlineActionUtil.getGeneratedTweetInlineActionsForWeb( - actions = target.params(PushFeatureSwitchParams.TweetDynamicInlineActionsListForWeb), - enableForDesktopWeb = - target.params(PushFeatureSwitchParams.EnableDynamicInlineActionsForDesktopWeb), - enableForMobileWeb = - target.params(PushFeatureSwitchParams.EnableDynamicInlineActionsForMobileWeb) - ) - } - } - - lazy val copyFeaturesFut: Future[Map[String, String]] = - CopyUtil.getCopyFeatures(self, scopedStats) - - private def getVerifiedSymbolModelValue: Future[Map[String, String]] = { - self.tweetAuthor.map { - case Some(author) => - if (author.safety.exists(_.verified)) { - scopedStats.counter("is_verified").incr() - if (target.params(FS.EnablePushPresentationVerifiedSymbol)) { - scopedStats.counter("is_verified_and_add").incr() - Map("is_author_verified" -> "true") - } else { - scopedStats.counter("is_verified_and_NOT_add").incr() - Map.empty - } - } else { - scopedStats.counter("is_NOT_verified").incr() - Map.empty - } - case _ => - scopedStats.counter("none_author").incr() - Map.empty - } - } - - private def subtextAndroidPushHeader: Map[String, String] = { - self.target.params(PushFeatureSwitchParams.SubtextInAndroidPushHeaderParam) match { - case SubtextForAndroidPushHeader.None => - Map.empty - case SubtextForAndroidPushHeader.TargetHandler => - Map("subtext_target_handler" -> "true") - case SubtextForAndroidPushHeader.TargetTagHandler => - Map("subtext_target_tag_handler" -> "true") - case SubtextForAndroidPushHeader.TargetName => - Map("subtext_target_name" -> "true") - case SubtextForAndroidPushHeader.AuthorTagHandler => - Map("subtext_author_tag_handler" -> "true") - case SubtextForAndroidPushHeader.AuthorName => - Map("subtext_author_name" -> "true") - case _ => - Map.empty - } - } - - lazy val bodyPushMap: Map[String, String] = { - if (self.target.params(PushFeatureSwitchParams.EnableEmptyBody)) { - Map("enable_empty_body" -> "true") - } else Map.empty[String, String] - } - - override def customFieldsMapFut: Future[Map[String, String]] = - for { - superModelValues <- super.customFieldsMapFut - copyFeaturesModelValues <- copyFeaturesFut - verifiedSymbolModelValue <- getVerifiedSymbolModelValue - } yield { - superModelValues ++ copyFeaturesModelValues ++ - verifiedSymbolModelValue ++ subtextAndroidPushHeader ++ bodyPushMap - } - - override lazy val senderId: Option[Long] = authorId - - def tweetModelValues: Future[Map[String, String]] = - landingPageModelValues.map { landingPageModelValues => - tweetIdModelValue ++ authorModelValue ++ landingPageModelValues ++ tweetDynamicInlineActionsModelValues ++ tweetDynamicInlineActionsModelValuesForWeb - } - - override lazy val modelValues: Future[Map[String, String]] = - mergeFutModelValues(super.modelValues, tweetModelValues) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetFavoriteIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetFavoriteIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..0526acd5936039bbda6ab8e4db0071112c11321b GIT binary patch literal 36980 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 iTW-ahBI)B_*-;i{D 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 - - override lazy val tweetModelValues: Future[Map[String, String]] = - for { - socialContextModelValues <- socialContextModelValues - superModelValues <- super.tweetModelValues - tweetInlineModelValues <- tweetInlineActionModelValue - } yield { - superModelValues ++ mediaModelValue ++ otherModelValues ++ socialContextModelValues ++ tweetInlineModelValues - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetRetweetIbis2Hydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetRetweetIbis2Hydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..d5f7860a49ca10a2faea05fba56b124983314c7a GIT binary patch literal 37150 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetRetweetIbis2Hydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetRetweetIbis2Hydrator.scala deleted file mode 100644 index 2b665a8fa..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ibis/TweetRetweetIbis2Hydrator.scala +++ /dev/null @@ -1,32 +0,0 @@ -package com.twitter.frigate.pushservice.model.ibis - -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.common.base.TweetRetweetCandidate -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.util.PushIbisUtil.mergeModelValues - -import com.twitter.util.Future - -trait TweetRetweetCandidateIbis2Hydrator - extends TweetCandidateIbis2Hydrator - with RankedSocialContextIbis2Hydrator { - self: PushCandidate with TweetRetweetCandidate with TweetAuthorDetails => - - override lazy val tweetModelValues: Future[Map[String, String]] = - for { - socialContextModelValues <- socialContextModelValues - superModelValues <- super.tweetModelValues - tweetInlineModelValues <- tweetInlineActionModelValue - } yield { - superModelValues ++ mediaModelValue ++ otherModelValues ++ socialContextModelValues ++ tweetInlineModelValues ++ inlineVideoMediaMap - } - - lazy val socialContextForRetweetMap: Map[String, String] = - if (self.target.params(PushFeatureSwitchParams.EnableSocialContextForRetweet)) { - Map("enable_social_context_retweet" -> "true") - } else Map.empty[String, String] - - override lazy val customFieldsMapFut: Future[Map[String, String]] = - mergeModelValues(super.customFieldsMapFut, socialContextForRetweetMap) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/CandidateNTabCopy.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/CandidateNTabCopy.docx new file mode 100644 index 0000000000000000000000000000000000000000..eb73c77ba9e0945b637233fcfb8261b0f21426e7 GIT binary patch literal 36961 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 G!~+1Euoou) literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/CandidateNTabCopy.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/CandidateNTabCopy.scala deleted file mode 100644 index ef80db5b5..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/CandidateNTabCopy.scala +++ /dev/null @@ -1,21 +0,0 @@ -package com.twitter.frigate.pushservice.model.ntab - -import com.twitter.frigate.common.util.MRNtabCopy -import com.twitter.frigate.common.util.MrNtabCopyObjects -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.take.InvalidNtabCopyIdException -import com.twitter.frigate.pushservice.take.NtabCopyIdNotFoundException - -trait CandidateNTabCopy { - self: PushCandidate => - - def ntabCopy: MRNtabCopy = - ntabCopyId - .map(getNtabCopyFromCopyId).getOrElse( - throw new NtabCopyIdNotFoundException(s"NtabCopyId not found for $commonRecType")) - - private def getNtabCopyFromCopyId(ntabCopyId: Int): MRNtabCopy = - MrNtabCopyObjects - .getCopyFromId(ntabCopyId).getOrElse( - throw new InvalidNtabCopyIdException(s"Unknown NTab Copy ID: $ntabCopyId")) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/DiscoverTwitterNtabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/DiscoverTwitterNtabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..75b836eb107097e99480fbddbb20499cc5495960 GIT binary patch literal 37504 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 CRT} -import com.twitter.notificationservice.thriftscala._ -import com.twitter.util.Future -import com.twitter.util.Time - -trait DiscoverTwitterNtabRequestHydrator extends NTabRequestHydrator { - self: PushCandidate => - - override val senderIdFut: Future[Long] = Future.value(0L) - - override val tapThroughFut: Future[String] = - commonRecType match { - case CRT.AddressBookUploadPush => Future.value(PushConstants.AddressBookUploadTapThrough) - case CRT.InterestPickerPush => Future.value(PushConstants.InterestPickerTapThrough) - case CRT.CompleteOnboardingPush => - Future.value(PushConstants.CompleteOnboardingInterestAddressTapThrough) - case _ => - Future.value(PushConstants.ConnectTabPushTapThrough) - } - - override val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = Future.Nil - - override val facepileUsersFut: Future[Seq[Long]] = Future.Nil - - override val storyContext: Option[StoryContext] = None - - override val inlineCard: Option[InlineCard] = None - - override val socialProofDisplayText: Option[DisplayText] = Some(DisplayText()) - - override lazy val ntabRequest: Future[Option[CreateGenericNotificationRequest]] = - if (self.commonRecType == CRT.ConnectTabPush || RecTypes.isOnboardingFlowType( - self.commonRecType)) { - Future.join(senderIdFut, displayTextEntitiesFut, facepileUsersFut, tapThroughFut).map { - case (senderId, displayTextEntities, facepileUsers, tapThrough) => - Some( - CreateGenericNotificationRequest( - userId = target.targetId, - senderId = senderId, - genericType = GenericType.RefreshableNotification, - displayText = DisplayText(values = displayTextEntities), - facepileUsers = facepileUsers, - timestampMillis = Time.now.inMillis, - tapThroughAction = Some(TapThroughAction(Some(tapThrough))), - impressionId = Some(impressionId), - socialProofText = socialProofDisplayText, - context = storyContext, - inlineCard = inlineCard, - refreshableType = refreshableType - )) - } - } else Future.None -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/EventNTabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/EventNTabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..de542d63c4f3ecc173f60b5ac0e28a26d867a1ab GIT binary patch literal 36958 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⩔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 - - override def senderIdFut: Future[Long] = Future.value(0L) - - override def facepileUsersFut: Future[Seq[Long]] = Future.Nil - - override val storyContext: Option[StoryContext] = None - - override val inlineCard: Option[InlineCard] = None - - override val socialProofDisplayText: Option[DisplayText] = Some(DisplayText()) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/F1FirstDegreeTweetNTabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/F1FirstDegreeTweetNTabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..a9645261c28e46ef02aa83ab6fdc38c267feca62 GIT binary patch literal 36995 zcmagEWmp}_wm*z(a1HM6?hb+A?vh|ZHxe8+9^5UsyE|m#?u6j(5(w`8-8ZRrm1>1?Nstf_BXAH9Sm0KDNr3%lbNkQ6 z8XgYj&W0@RcD9X4iptAk=wD8sagtd@$h;)caLTqE=p2~h2&AghulaNrSdSH;?r+Bg z!ZfE;Lf}~9GE#4SNS5n_JG`4{^d+T^4GlB2^C_TcctUV<>qC#iD&xZ zYFaY9-%j#CvTfJ&3K(MspGxHD1tjU*LqyY7#%N)Z4g@2p36H>rR_9Og=C)BfXs8_y z(QY$-+8t4GeIE05qqvv!lg@fxV4=~o{Y*lclC( z-Ewy!s`~&k0R6{~T^Ebns5a*zTwQ78mAc*re^v8I!pW2UNGlqS&Q*g zo1Sj8hL6=@pe%vstt4v3QC9#xZ9TbRB3v3rTTG>Q&~5MSEq!4OmB{@f_!A*d_eC zH~v+(vQO;W=Hos6_FmIF1Bydlqy&>k~&Z< z5b63lc2Z;ylr387Xjhdo)WPj0*+1PjwU|rKCtP4GvJKS!s5={wJKwFdPJiA2GG0MQ zMr`vZch}eo(zQ*CxTZuEGpD)bvCtwDVO+!N*Qc*PnG&y(kTPbllSM5FDowz+LjFvr z?c&2c4S)m4C^T`07gx6K*t&(^i8g(fHSrTWjCH_JPgOEw$KxwNm2+VwDfL1QUkI?@%PO7I4$CJS0F zo!wAjE>wWBua28*=F0?mW{X-;?tz3lhT`HEEwOmIZ9Z3oH=!(luKD(0dcp1sB-TR- z`t`2gL~Sp_oUR6rgXq}x9`+3yB&V2as+wDi7RN^Tv9puo`lKtgVfmZpkTKM;EsP}z+_wsgui1Cj190vc;64i))+D-E1spo?5pLMxf zUdB5D*TohF0s{T-b@|}n@JCrRM(vl`(AypvVGKWqTfvK~;>QQfiBCzc64b(_&HTurE0{BqW0hq3cYS9`Dvb+kUsc(Z!^@$ct3Q={luQb9zuUe()J;x8L6w2}@XQG_>QQb*w-_pe zr$|P~Zqj}>_6f!s+3WLlo!L)}97{WWJfUeyu_F>Dhl}YqcYR1Zc%}s#V!-d$G7jaL zCv?jYc;O94^ZSkkOR>M00wdi#ms8J*?aj(vaQ-bEPs&<&0c*iw&3l5&h_`#c;uO5)#Q zyPlFHGOoQ&B^Z){r|D&@9GB9!EGJs1{I0z%o%M;8;)IT3sH-M8FEBL8(u>-%He%~46+ROIKeCR&w)nr#SN`5l&nHA}plz0*Dt8kx? z^IfyU^KuH~`l6)jc81D82c2$I_sQ2Z4qI?PBcz-xCNf%M^H_|4%uYP;;K%nv@zDb@ z9EVzMtkuFj8*yfa+gE88(=0~B50;QkmriHP(l~t#49KxV2;xgQKU5FQLIuu*2+dU- zj&LbBM#^ATWpT3JV`BJg(_?uFcOLOl+G)Vd#e?Ko_E!YtTO^J{w9Y$3dbDoP1;gcgzwE8B}-MkoL$S z%WCq$MPnV?W2~*>m(fJtDv6)sE*##lkof3G2Xt5CCj69&Q^WDD^?74zOO0QpDvl^hoSn6l^}1oq-t5JN4l(=MP^4lYE`{!|5F?d4cYN*9e$uD#IVK5v z7e?Xsjyid-D^b)tA!ie6u|yDaU<+Lh`uo)mh(5bLgq2#yyFF(Tk)fB4SOaI&Ui0pj zcBfPX0$RTKO{Vsem?4P+T%_($g5T;Vbs4L%g>mMFMpski`mu+R#Bgio0NMQwfb&F=};%%-@euKCOe{B*?E2I?9ScdZ>IWX2DF>UJ&zSO^6& zy(#Hei9qdZsm3-ITrb-h14iX%$@4&!DcEMOIiEGZFs|P5#F9J)o=c*5W-GW1YjlB0 zFBI=QY3=0lqOSG6(j<`mz25-U-jZKjeP5m)yg^nLbVHy`deK|fJUVhp^ z0shx|#NLk(lLI`hkAkOlBJi~S$J6`gqU7(-@Sh8mL~-RnHvBKAFGxMX3D`yU5pRFx z(SR6astdh?WtQS^BzM>KSIw9txBRznd3>^I?WV_X)aTX&@fjQ52k=Egp_=Hs3O5In7MAevUFV>1v6;*H` zqaOdIj#m##S86K$>xYo+tk0exiu3WRmW%cZn+?&`H0SOOrFyM^9t@b;g;^6rN^WYC zt<(MQ*LP+_zR&PRNEQvVM3P0j{!fYqQJBUsTDKX{y_|O@RwLUMbEXhdZk>`Tk{pFK z8S0zR7sZ?r;(XL~Y3e~X!EeWH_^hv{68k)r5I=jtLy2ySL>3cm@e}LVsE%sCI}+|W z`-Lm}6sKYH~4B zO*Kue_hs>Qf<0NdD)hVBnF$)^&(GPuZMLUCW76pK=aW_5-cFQ`R{c}0$KvsmOAr9~ zjPEUYzjxxUcaoL7{A~Yxk}f(w2za@VdA)y}KaDOHZ9dvIyt`jL2c^t{9`~nzUV}nH zwhuj?>x5qHUcapcvjUe$jgpJcCVTfoQg$~-myepupGS`_8a!5Pd5c9!E4sVdmA~+Z zM%KMvS=H-#J z_OA0Ez9@ajNf|$^5j_#je8Ck_aC&#HvN;$McxTMI{0J81w(h%jj5a!W{IKf7_x)K^ zVqExGdkwsHv-1*=@g)I@Q2EmM_P-+EfTqt+j@(AKt?Tdc-=o00F9w;mXCFtWKb|FB zU%00c^NwCc0G*gUpZPs0FB8hQ>0LZJJeF2Or6gi}gIQlXRysh<6{AW0?7nuO6`u|R z{nL);Ysm)-wG@(G$MscKv~}QDX;N?5tYh-mzUuqVkKNUyvoy)|PoMQdfEa1i1fM~O z?PqHQpcGM{M}!8*Tksf*ygDrQss;_VFysVNU^1j0Eu^|i^tr~^M_1H`FPOCr6k{HY z=llG!-)rHE@O-uU{5j3wsRp>%wk{-G>2`V&lEQnE#jAYu>SJ^Y6t2p)pMS;b>qw4l zS?WAi+Fy#?X+ti9)tQtp8Nb_LALM7^~{dMopnsuKlY*St9k54J{`@4?L z6}SZ@4>1^Lt&j5`E;Z<_`%*3M0$qxL-`omWn8PKmIF`5tP+7+zB* z%_oKt2PsAJp@5^K>lxH_PDvQC@~UI*?f;lv5(&_bVa>E^i){`Mp4Sm@#d|z{Is0kH zm_ah|1H&7K{08BNxHqveom^xgC0~NbsYSWw(2CTP26@bTSykB*OtnPL@*t*NY({c< z=K1#s@k-x1D}2|9Snsq(+6J-bD%#l7^C4Aj&$FAKO9{T}g)_Z8u3EJVR-N`0EQZ&x zbFRxR=-6!~pcn8!zei9@N1}%5-j{MDKTOCEVrtY?lZajVOizwrxrW_kjBr`xhaKdh zE{3$!Mo)%pw^osvFN>f?$%q-?5Z~-ama$_f7!!wHkkwWmyg?0s)a4u27eiONz(o&A zXoDSMmbk!;4Tx=nEy(%Z`3c;K`>#%zO)3DS_+R6z8VRUbU|2nnhkE4Jp#Ft@%oPs~ zB?FJ6|07fnj1~;W{YU7ZR4}Eqr`F`||3z@BN(pX3`a?x>8?0IG|B(0}s94X7D%^k+ z@Tk8Fb0q}pQ9}oN#ctSPCPQZaFNw@#2(%u^2!E)aNpNdKZ~Hy!-%SP1k_{8Cpbjjf zECDIKS+WiiEf=5Ddq`hhUp>+}P*T@>Bx(N?+QitBmL~U(b>CJj{RKN`A}O7jJx9>u z;Hd2jQ=~A9e)7|4|LWtlORJ%MznAz^@BEl+?xzL!OZ~fn>FnxF_v)XsBFg)_d&7B~ zcTwx2hRxSfq|x?UEQ?}E2GOV7aRjfA4sRrxJtj@inN~`PGuHc8$Zk%6t_vA%DE-SF zEWU%;vUW#K@%yd6`oaO#TmDrs=%uzkbV5Cs_fAZQj&GOF)&=LL?RY_~DM$NpxRawh zro6}oYwU`yBxdb_xdiLPN_%0}@$II?yW8ydue&~~BS@$0PnRyf-fpKY2~=o>YtErH zbJxu3%fwV8-y*da5^zD*b(G_+FWswg1FAO+8of?QD{F_x?n|A0(aEf&NCL-}cM+7{aRODoPSK<=mPUG(S8Xlvgu7CrbmaI>6gCCXE_-2fiho7xDLO-^FO$&49GJLqE4*KAZ+A1`fc#C z%mWM*Ivqiqyp%pqMO5=#r_!cXcv0-_pH@&Q*{+uhvYw)Qe2ASTW3Np|c1>M_f?fnTqvVC3F2L>Fru zL{^N2G3fK<<4JGlsrrmh@lMwEiBRFX{Axd-v}{vL@b0H$I`%Ya^ZF^p>r2`UXwvQB zYVhLaVxZp>^z7&XynRV}ojZP*{`qw1!1kf-rA0LJhV^N35Z3br0&OwfqeTS9cpcQ7 zGI&jXuNL>nZL$)SUvlE?j4G`-N;8^$lY%N6N%*Zz<0MP1RXz~#y=wOH39GZyTh;HJ zTklCz>b`;O9tH4-Q-jNR9S_&^9>tdY?ZRQ2KVf;YeA+Y%cX5=N63A^YNaEM!VOE>) zgf@GPi;&ve8WL0p=gFg|pRwJr=lc0Ylf!C-ofJggZdnC+0A16@>?E4JkC0J+JFF-Ji+Fcgf30$W=y?4LsV_NRz=i#UUmVM7^amc zCugoA&T^V$4XHC9oymreY5j{~hfB@efVCrJ{GW#$I#vS#IlHmS8LzdAxSj6GMl+P+ zCEiDx4#}G(e%wTGbLa*mbZN*OT08d<)-pp6#OsPz3P=R{sl=}sg&i(iqlDb^CDjZ# z*p=pjemQG>yD=s17|i{o8p_XgXu|8F&u^P0Cqw~PJ*}!vv-w4aHylJG7bA7%m$SI1*i? zWtt*P<~);!;r5VpEL}VL^yT&Lt$yY6+YDPps_LIPA*!678&ZS!{hs-~Y2R*UuvCJVBN_On z;!5)74$!swTkJKNdd_)3%^#=O=lZW_EnK>xm!(ZKN4-5gtd%MZjO>N<`exMRQ)w!3 zl~xR9e|+8vEv5cqdf<8Q*edWV^}0OeAc-R88xSJ6grlK*0fLC0?Awt$;Pg{Q4a*wg zm)=or!WFkjR^yPfwGWHX#aqN!11vjZg0_|#j>SrRAe#I0rx_e$R;hOJHPm#@QY8X3 zgDNViE2Qr=xEo0hw-t;#&$K|C!a27~Rr<2Zt}`3>2gi;M2$Hd*DqV@r3cl#(lR zVU}^LaMtVc(4K@GWAytHRpLILCGYvW2Z>eQJSlap6q{#iH{Pte17mW`tra?y$$LM|oBJkxG1@ zjtO{~-@yA+Y#RZI}nij2q) zI`h#5_wb;OoTpD}HV1F1FbQPj|@W%=sE0M_4tu+sP8ya zu2WmbDo?b$eQ*Sw7#S6C3QEdi+85zfOI4K}Z;E;~njOu#mxip(N@3e}FV-XEdoS9M zevFUl3Jlr5OCck_ZeXS7Ax$lE3=`vxNLR~aoJxg}&XlU|8^mGLjJNmh_IOa;y=A~> zM%fWC9Rq*qTyH)ZeqMQ-4`qj{_UW=|oa<*g{L zof9dbVzl(ms)x5m+nm66d_u3p_!uIad^Y{fEn9@^)NtJFZ1zPD_YTkBi^n(Jk)pgN zKlda5oVfV`bw^#!mAJC72&*-mq*<92n+4^XZfAEACx5T4+G>ymdeJ|5kdz@s!($dM zKpAE~a+T9M&eGgAK{-9_=z+^43E-MB{dyD9S&6ov6oIp6Nq}rzo$HfbjdfxTG9tM+ zqj|cVwjjg;Z+uu^lXZN}q|Ue5Uy2|$FqbRce||aBKAnXQwpgEtcT%F40ug;55IK`_ zu7EpWx1iC(x?6e^|4n+tFKD45eHpe5(#{nxR=OmLNq%S?|I^l@(Z(bHr}%8n$H-L` zoPy9b9sLdbgQ#{aCFd(17u$JP_jMc>gmy%4dN{d_q+U$VX~$^1Gq?tRBQe}u-a4jS zUem5H(x9^)9>Jn+xf^TaDZ;V<>?uN~)r zsW?DY6D5C7k9KbJp9`S#?8Ukkb|FThfkz-x>|{e5!66JS^?m$OpvspL~PJ?$Ap_tYi`233b8P>>GW^ zZDFDx0Q3Rcx?x#wzLsK5Xpu5U)s}G^pzE7WuW_qcEI9 zo%)$Rqs56w5s;LkxM|^6R{XrYJw9uQGjr4F4Ebmtgvk=U08>O{8DHsWq8-|$Fa7>0iGW1Q9nxX z))qols;zx7+tUgC+p_d%TrjTpD$?xkrz~gWAz87{f;_EIr+NzyrQ6K}sg_G~jEs~^ zxDJDPgD7Uom*%BUi&Sb{glDYF0!w%;XKl+9Me>c1+;jbCXXKqjNmw*5zZumLM;~jb zuvVvN5nT5WT45Y&9*5++aWcowt4CC^3O1-fphg@d6alvb$9EKJT3d8&v~l=IrH>{jC+Q_YyATuxor%0{u`+$7xg*r6pRlg7Itvf^5eW z!|e3J{vjh&{G`>EvkNw)M+jCC*i|oLDS}Q7Kd}X&! zT>bv1;%aL>7^?M8NrzUyoUd^phxfV8TLr@X+UnD$rN!=a$H7Uohb*oqD1R4x4TDXr z?K&-z$*d@i7MP#Dj-`@trezzTwO!i|COk$g`5>gir-Gr<`*=ENR-k)kr4K{3EVrao zL}q$lPqrL(%;WG-RwONU5v5g{H6WsGsw{TFFYH|vO_9T>0@FqWRFD=6q97wSWd64~ zB;rOz>8@xz;jt)tdkmG7Gp%w@gkV}6$YuKfGn;fnFj=SWfk#6>10vH~|Ci#ih5LzC zW%B@7NwZRvH;Hj$;6ysTQ`)K=SkBB(xszV)sn^A?(wkjxKAkxueTCmx`quD9rPNRl zso;Wz8Kw!SqV`7fX@`Nxsw08!`C|^*%W(ONW9!4keT^^jhZ&!CWNJDR!l-vfj+Cva z1KNRiv?0|Kx75f5Y4i`=4G1wS`o_0fRqf=--8qt)n&Lsw?(Ct!RLG2uxi{1RIxFt; zv7W>lROK%T@n#+p-2AOfYGla)Luvz;izeN|6__?#ezN`w#OVBf!_X9PeOf!P7{))5 zjB|%)~Z?Q(I&62{#Vb`Du9|_??ivlxs6vzo# z0?xh1tQu@`70J=*a}p*XoXFl~L-ut=JEY)BF%>Z~eW9q&9IB{}P350w^V%}c)_ueO z4KiAZNoE~7f$+Ua8u4N|bp(AD(Woi=*`;Y%KX%>biV+h{hLS(e5;jyERH_7-6NEZ~ z)SJ-$A!G{NX&hY1xJ4ziIanwscuw<}Ux%C#jL4OT=uh9$!(d48g}ugy{YOA( z|L5R-6|*L+)W+k8;iiEJ9>vqYsoazKtx}z|0j#nY{jyh4Zi6PuDThw3P3>%5V+5RB8sLm0Zg8FTeH{tx0ZS6eAek@m86rH;aG z74XgiSln3ugd*dHMT$q*BRi|pA+eP`~`$ige;tCb7_&x_pWBoWtZh&3wvXVDL?FEbU&DQuTwFTMBiy0+#1HWnSWy~7emNhfdf*TX~Ea%nY`^@Z2Mn7$3 zfP*If4C4ErK}qAg%-4Gtef(k0nESt}zE+^vo+)Nvjo$U~M{&OOY{T5IkZ%0l?@DNf zzCWXUJCadnZ;8)2g`=eaz+-~AvIj!@^r zVlVRvT@Q!ALZAb*qtYMk$?;}9?5XoY*?hFg=V8tSmK;~^)DyZ9)_*AB86uk~%|1!u zx7=kXOnzV|{Exz1;yq#)u?(#7KNY(EPlXp5mm%YE>lHkns=4CFC2yUEok|SgFZyzS zFb_>v6};u#_0Z^->_+V_o6~^Twf*=cS+kxQ9k)*W`we|?zrNbZ^a>Jf%MMn>moo@K zw{l%!nr3|%Zalc&KZqJru8J<6*}dPh%8#_Lsbgg;E?zX^_9TLv`24H(q_;=zspnl0ZW%H?Qs^42`Q6<|eu}<_IAUQO=Kn&Ulh&3o)-N{v}bp6n6 z$j=0c(d!=?8w^5`UW&{V>BWG)j)s#HT1NKH)}5U}Nz7R*BVgLRQJd(&bf+{Apl+$5 znvZ11iog}>V+^6z`N+qFQRmS7K`y;^+EV9Z&f1g-cqv{l?4@pXWBphIbFDRNg4n!j zft%drWrxYs9ZcN{G)&cL*d#aNXX?i6{Sfw>TK*4eOfWUP{O{HGSnJvxO0vlx)UIZu zU}{00KdFCEV@06;AJpd^eTZ#g*~V+$t?$}R5DzQMx-spivzVCt-F}hl1hh3#fsRD6 zA}HNMwNd43`W$p9%r@pLcyXzxB1f2&TB;kx2(N{AU!PHgUjbAxE5HiC=3v-&e6cv-0rVt!Xco z$+B#18bVL?xKTlw*u|}PS-Y_v&A2Y@JNI?LH{ntTO50+QJO&OHrC z77JLVnXOWy;njY~o*F9{n3oUZ- zD?;P~#brM(9p*qo2|u4uTc9f@aCe@6FI7sTd3!50&6Q^b)x@cJ88yxIv$QOq1t6ek z(+gtYhy2@QyWRhvNj^oJ&PmW7S0xZ^606ASRlqi@g_tBC4~IZ7I{kw=jUy3wN4YL+ zd3S5^cptK5g_armN;;_lTNX!0PnIQQmT|Ayvmbxt#_Y1<{kri7r+asx^>TxxeSMWe;4iAL*oJAZ&9m6|Mky z)v*B`N(3R{7Yg|SriDx{k&Ly3mQTF$+AJgvYRnXYk*(d9CksBSC8aS8R|TMn!s-Bu zu{eind!*Y8{>WNyB1G!UGps*W1Mi{${rfcuGvv=T4IK)(2@6JR`;F!_lucqC$ zpsh{RX>&^5=@2|ii7=rw8Q@_z;z!uU$)p@K7 z3X7YN-UQwD1%wXw3@HfP*Gz|_%z9np17L93I;@{wK1QwJ)X9?<4vOZ{uO{=TTk@D$ z&gh3LfPWlDbkL|VovA#%Av}TjnepA#P2LA2cn(566Quq6W`D(}N$d+P8(oR8@^wut zP-r&4hu|zUnsM2&*m@<)p&hqrqPhE~tqW-Z`6BcbW1X_2I0_^5GMSI?8)r+^<&m&i07`(8cDa$}Pa4)SBw5i(?ZA*Ohv>0Zv~4Qmva zHl5<}0+;I2^c#+wh5k#wc^CoW=B3R!6npcKd%T&G`;-$#u7o2`FmSMqEhQwlKc@0L zHFThnryR{6H8rA^@%HAu1JGP}u_~FX$fe z4YCOkDnHp!V*=hOhm;3PngO{PxbBBv1NQqo;w;bS*UR(t9U ziF6*Set3M68cbT<*XFi2{%U;5Y_Yt!zYnLrSxmKO3DH8mH!n?zekoZS!F&1Kg{ypI zcXDad{>;@QA}alxsAIC)wK9F;X@t;Q{}81EoCCjm*zM9I2a1_s4pDz`ag@RGkl-u4 zY7(3|C48*%jj2O4U3e8%9ILb<9K#-D>>a0Ya0Wk zLrG984iGcvOv|(9B&kK-qibv(xrbFJaXNk$f7pW;#<@o?x>^~=TEx%c$nIDJj3mwz z?iWjBmj;Vm5tUTqsg$D4E@=GXba_y9p&VD@q+GYo9Cxc;2|3)hhV8tNT(Z5ETq@ak zM<0L$Bxb#9biz(!abJJRDGng*DaaCZpd*CVIGdh-R7}0_+xh1kvtZQ>V@^}Vz8n< z?dys3)w~nnR&`|H0l$hdYYy0TZRv*P;Z^=hFJLFi+jaG8KXJ*%y!iT|C)m&6EE2Fv zr+cz6fD|lE5u6g!wl$M()-&&rOBA@H7H5XLpEy?dS?J?pYWSrbV znS&G5*?8M0$`3C>%28=BEFNeuA7M`K7@CTe{>31`BDRuEtXN9Z5D8xytwcZX_NozW zan)6G6HM2)UQ))qmw;`FP_oRxzNe+}+U^QtPFIpC6lY)!(C%OvJS z?7S#(5t%KzTmhEPNT}``#9;TJCKk~t77?CEck~8d_c=?C<9r>_=pGD2_c`u_x&wH} zzYj&iVa46+3O<^*aLlO7(ZHOc>wL>U9+nSPL?M2|J$s|&?4AQ=5HZ>fBU-RSuwg;* z#!gF#md~hO{P$kJbhINm-x|(;12`)G1~?4+1Hj?dEnpjF5QH#z+(i<-uUl!4ND<0X$xWZpZE8DN??*L=G>=LC2(0h{1@;cw`5n6`IsP>G!$*qAxbJ z6xx6Vo8Q}P0e~VPL3{mN{~b;bJ-B`Me1(ffMB@iV(Afrb^MJ;VFpiZ&))9i2jZaLH zp<>Q;C_FiBZI2&TFXWL=E_7SV!6{>SSGgfBU*viAwQyWTmB80IEtetcS>-H3$%%VC z3Ydyb?sL4-;=;!r)lu4K3tAnl7x8RDE;nWk>SA9WXT(#4h*Y^h%Z2kSRxJMU%_8&c zd!*+Pw83FQ_wGlTYG&R6X#5mM`@o+~cDXN9D23uw%55L9UJ;Z6SEc%#V%`u(8#0WLEeOj66+wb65hn z%oIcI>Nr@xMp^!nUZ~Kg)}oml34gZpsCcusm#p)agK_k_YD7T{H8E-TVcG(&QMVM& zP6vV!3qMIGb)v!+`+~!@oq1WM#<@a)%rz{@B{3=L>3ql{8*RuoU#>!dqJ1whJsp!J z<;dI|1^=r~s?wa8sd?7XvU40N=(xTvc;AEbT%Xy}{P0cD0_N92lZ{OOux>I=e8?x3 zNfVeHoS^O@3Ldb_?t?Lt->ZPe(qHi*6YTi9GRkj?1m6tkE;y&ma}&d>U8i*K{ELbW zOobo$n~E)>|KmpOB(EvhCdXF~Hd0U9k3-)yAB^O(l5hkiFLmCwiF4I*m}w;+JtU|4 z8PG9~y0}if5%^eW)bN4atETK7wN?>3<7Imn%0hxl6OQG+PO8{1OvWQR#`=L1+p(%4 z4#Mx?^2k>6@9q@^jqax1n#=-BKAM9I2|!Ce@(}S-=dh8mbwQgOBD}Y)8~vvF(fp#K zVu37UaAd=$CoGA)o&!>eVsZp#gW~TMg%Wk}z6nZwhN}c;w&}fiMTKC6?Md_sB%vq! zBRbaK7(I1$q2Xw>iW0cL>*%uGX7GbJ;lPXuNwAmwk^SCWU~;3(YQ5A2Ctx)=SbwDQHsL`Af<`HvYydoWIBOG zFlgX=Kw65zUTPf$AyG$({7`{h+YQW-V9k+0&Ln(*!-2A~MO!FNWYZp+N5ygC)#wNd z%z+YzHOvXXiF4UBm_5`BPCbQhx~rT+#Ch+UU7QQ$eZ(&wY$O(p+k|zC!mu#WmtK2R zG=@w2ZxzUBf2s)Xx+GRASJkSrcBu^5SLR1CNNo;B#d&dA5IQH9cw)eQyAbqdB<;t{ zyznkLYgu}%l=&$-LTsX<{T3tUHfc8q&Q>BNeQOs=dXl!PlRV@se{W{kYX*j6e3v$B z$xHpEwun=sYD@ge7)()@a0I;OS}7 zUTs>}TjiD0CJ5cu4O>B)s2&+V*FQvB60!bVh-$mXXn{rv{EaGIpi+m&5rw_sMUF_1 zu2zCYUvi9VjYfZ$e{Uv&+i|Ky7W|N{OIg4M{%zc%mtt>DGe1rO8ZE-j_A?vdGg%vil7*<2%+4l+AsyoI{|GTrD+^5VFOK{R2U$96Yx;vf5(NgZKR? z)aVuwQ)Q6OGGl|V5$I>au@i5Q8bh!TMV0hK3;ytdE#uEgT<@08=4F5%g-zhD(?$tx zBT8&I8MuNICowED#HHp32%;(wlg(8s$Z66n5eCO$6hDyv>A(byb|Ue)5#O0Jd`cFa ziGKZJmB+AlPZE}jQ0(_N;ze;#-lSCIuo6fv6tIn%635`UnAK^pgV!+va@ciOJPu-( zNEsv)A*L<=6qjs@(tZCF-U5gF`E$}&w11x4H}MFV=I4fhaIS`fAo%CGeQm4HpQJ4; z%uPT4d4%7`FeP86?)dQ@r}3~~IV%~0e0bDn0uyS$XmtBL_2y2bynMzmtt$TTJwr42 z6u(%uALdYu>`>4#@GHI8+t^l4=RwrayBFUVcaM%opVrk%o}=6KH?KT*d-kos1)-|B z>~-JEQ{!y_?fS~`O~m!~mPfr&$LrqY?n(OV{pst&%aI%CIeT(+)$ro+`UF&6jdpsP zeFHw)zt+AiEW~V#3+imIAZbcp-J5;^prxm{r7LG^p^ds3^DYm%O_=cUJ$23>?|o=p zrXJXfxIT?oeJ*WHK{2*rjR?7Xb%6_%ySTOXvD&_g=BXZaak`kcc&uBX^|cqJ?OXtQ zcs=u2UAoj7`xppU-}n~U-KSUpeSKe>41L|Kx0gqK3OesuTK!Lfz8)gRZKdCC-1CcH z`CmVdIwuTf2c?HJr|f$AwzRt~?>am6reB{}U3(t$F3!a#DDTTKkn&yD7#oLVE#-tP z_s{S6R-s(1ylkJpW1SonthRUL+rW=&2peT}wn)PwAXk9qA1kF--aR?C0Pl^`earoZXEL)<&mk-W9gEFpHjfXWmS+myH1t-Q! z@2jqMEF;OmVZ> zf=7+VB>LRoaaZU4RHLla)+wr^jQa98Xxvmj&ZE1szOGzc97vkXT287J6Ek}K__%rB zb3J|Nc>kJ}eB^tY95cWDN=Ul*TG}5nzU=Aiog)t~d`glpN|IdtGcUuS&ZwaG$@!st z|B4nASu05hC_iE*M#EMhMSXd#U)^lYA5joy#`{_2!&}kFL*1~)Mu-O(q_!TUw6>I* ziB_JO_*#;Qs4A%5?|PFSLaA17*P@=4y($)cYRQYR{kVvda|d({B<;vv?Ft4r9c+M` z@WD--H`k(GIz%rW_nWeBxI3$ECP$a9?PO~+vTjmA#<Zdt*TEPHqd6 z14@-K)G7h;tBy$3n$d)Ce|MaBN>8*pU{Jj_0TpSoH!?BGK`5;HBNefC7VTR`!cF)1 zusV$9wa^s?9F`{IyS*(P`=&|W$@JsmX3G;zb0*$>R@XZc8T%#UNQX*h(^md${h(6| zG_)|u5oq(-S)H!L!#XCDa0?$?HraX=WPB=}TG)zV=G9ldmyV@O#OAw}Q;xRg8{E}+ zRE&=tua8ZO^9g1l65s9|+l{N-Mg>I@SYW-zj|-pzm1_!-bSM|}VJk3f>!9Ya-SmO- zQp;6-;sMXvT?E}SOeRqd@Afu)Gz2+9=*x&xd$EtB$3DcmzOx?)!K{(lP(ak7T!G@N zz_5oLzte@93vKfAl<(7r2odjL_Uk3s#O?YJ<$%0#Hd5LIfvTsNnBZZ*t)bdDmCHS#-dtWpKL+oT@9NV$Rm&x`K>)pH ze3?a=n@6vq2alMswI(MSOp>=yu1xChod$2^{PY8e*uBbQCd%Eu_6iOMBPV$Yp#5*4<`bx-mm*MKMrkfxGM*@d6A3VM$zzI?%eMYj-9-I zKCfhU;0R@c)*gSdRKYia%)+y(NZxF;<2NzwmYBkQ;&8oZmkpGq8;d7 zfzh|!5x8)Q9@;McP>rzV^CLUEjDRC3)q78TjgNq>6Y7RdB4R_^ZDP7r#j9YS$&TJ*ku zdWw-2N#6xt>OD_ykJLRih#K(_DU`81wJe_UvJx@dqXBMaxKg7v&pVU{-8Wi+UiU34 zSs&vH9eXA1ljCcJXzX)IWKt`4_Q(16wH7P0CNC%O8eyMkkPkmJDD$hdkCHa?t8gCG zbZuRnHOV`;gks>mW5c^JbDcoj4?Qycz{~WjX{@l!$&1(tP|2NXGhuJ$f}oDhsU&Pc z!+5vw}ck!m+H$o#({%E z(;$`l-qUHK%VM{Y|3}zc0LRg6OTuDiW@cu#m|?^$inQ%&hL3Q>Ul;yvueKcI+o-cPF~w{4nXc`?37h!;8UZ2gx0` z9~R?$q0U2BAjduW#$FF;c)+Rt)0V5=vp8UL$^Epolg!6Ct_7Q6>moBHho=bsXmqyO zP#;uZuhRUrBx7&e&N686iSg-Ems0 zmydszaB|zF!Od~+UKw}#`+CK&C%GZf**RZa=AEMy|MFF786UwFMGG| z2ct15+bQsbQ?3?^8=v%zHZZDBl}iqZs?yg=h&b&+mhVf~bzea~ixOFDI8zU!XPdd%HhziFUB^17ZLqBXQP zj=P!8J%qT=w{?^sy*=UWn|CXfa25VA=Wnt;GvHfn9AjQ6gC5@&u6Z}PsohMB++sdG zMT6bDRV55iRxr52CjQ#y#=-0O?zHBA%HD1NWvp4~hplRoCQ|6Cqsv3lzU^rHt;z_Y zduIxuUQFMk>^$0?ctXxy)knAOF-uyFdy4Y0`75A5vc^Bg6)p;A0Eot>}bMHg5L%c7+~8 z+1h)3FQadja|gVglx&{6_%|~rl=?4D@4VWGp1j)hAHWiLC!SFT)0f!__k|rd-kzO)jg4&n9BIW*_$7*hzV9g?HO9&cMU^f`P6`ty^NED& zz%TV493{le3`KmnkqB4S*;M|;AHgeupqB9JX)pFEJvupbUWTkB^p4qr^q``F>&k_bDyESu8tk%$xkCSnzkT zFY)^Z;}vPU@neY6XLYh8{>}+O_*od|S*&6SFRd3I+Fh|&6`eCxB?DNd&trzpo*nhy z&&tLjBpNk;-709~_uI)GdZ|?Sf2+z+4Zb*6cl~xX_wdBDYMX<8X0Vla*Jrttru!R<24~ z9k%EuQ;9`_0toqWh}*hJhF3&T3d>~`#N@C)c7Wg-V3 zJtA`(F2XHmRDJF8?B=aOoPq32+!8jTX6!j=iI+p_rTcPuv%~Chku{?M*?SCm4gJ~_ z+A{!_Dlqd2lwnY5yLC1O798ijdE@G*jFKL7W3r#49$PjO!}YF5+X_~j_w8}X;+@Ej z%*W?gLSm$&Rc+4;8qy9YqmiWEbt4p?72A(~k`rPG%pwCxI2E|3@sk{oUP`kGl`mW!7w`CJEhBH$|9M;CWC zv;+_!t`w|%&_ldbgnI`3`(ulYzE&vgUD2e^;F=4$MZzoO~d{uVS)YL+*`?Iw7|WUN3G( zuZu1DKoT5woKV$zRY#u4sE##nEZrV&INpIWQ_IxG6!h)ly-1uUJi8mdx;@w+b#T+ zn(XNCSL(0g zK3l zv>C|g8{l1Z&VVhcDDDpymA z6`S4TCA^uMzf9__mZD^S+qb0j<;1iJG<5d0WjmB`pvnANSLKb`_TKz-toUBNDzeA;ZWZTg73OvF zbQPRK6|94TU}(#CgiXX_kP>~@-74+VDkCHuKIpZ_C6K6O|Gcv*^8J2q5B&}{WY~e|ie|5K6oxoEZWV#`%$Fg1&F;+zB(I~HEw!t`*1+Q03R+O=bY3=x%chyYE&Q=)kip@Q@GhFeU4N=+ZmGJJZ|( zW!Q*-K zo!75gowszPt(TXSAz!X_VsluOx#1Mp&zYARkr!hpt_+_(67@%44+rdXcnK1s7 zHjK_xd`|LKVe_>kF{Nnp9uw4b^EmJA_VULekE$e-hQ6PQm*1@1jIKOi>WZ8^kYdD~ z5|La5^-JH0JpVMN)fHy&nq0}x?ET!KRxFZj3|dPFg5OKE-CvaCoqYy4bxT~#BDu6+ z7IUK(E9bB4bodMfk%F{PGS287`(*d);gXg`h3+9k)kwU;b_D=R0Q1fWFv3t8KnS@< zJ|%YT9d0UAB?SQyV`mw}n4dx1r)ggqU#^-Wx&*L*z$}Qm;2pAP_;pV8f(Y9Sjk<-x z(8)!Zi$P#eN}!UB>W9SVha_T{J)O2Az%UWfM5OEfMj@;Hj9yz({@E(5H?#hW4&?Bc zawanInLP~2Mg2*`AQ%)f5W-p~##6O0klq;t1l9+R2r+I`Y}Ya3OF-Cv4~YW$Um?#| zEPx^1F8+q(dkk5qv-nrYOehpG;jmsLh2CtH@gh<%7i(G@Oq_MvhiDX$NYzwkal>hh zVFY_4C~|Sb8}dM;m5yXrI&ly~OQ?`s&oe1y9-!Lt68kI5uc8pbxmfA*G@*512X-Ma zAkHr$)%@Z+Hz6?f&!0pghJ#>!M|Mq2I>s%T9kocmpf%_gdX%B~w}SQ!1l<80DvT&Anzk)g2Xxvb97vE0_!!JxXD!rcYKT%`4<_A&nPfWgOf2Gnag9uN!z zf-u#KqN+H+lPR7MSykzIcKH1ZwKxcbbslfDGY-A*mU$QmNel5oyBGxd7D^usDHysK zgg#5gw4Aj@44hAZI3271QW07>Y$J1mqj}+tQdqbl`E634y5FJ6C!EAcX^|36#q}EIP9&#xKSwn zLoo<^hCg-Y%1}W4@^EpC&#VX}^?6$V44BXVdB6aKWWPslogN-1jaOh+z@zW- zwf*FZ%%2_tx;_a3g&_CI$1wJte$Tq+m0Z>5tu-0asm~}j3~C%d0S<9IBOx4pTsPt6 zQFxrFALJ+)luqF1fd7DBP9G}qJ3Z3N$k0H_^!k);f9PHEx>tjuGapB1BS&{DM^~rx zcxbR3OzGXuwShk$@lS&^a(qlQ7WKrDsEgOA1=`UTvhaEQBsIpil(r|5w-LRg`jIHi zKKT_ool`N<=%TE#s-wXi{l|URqv@L0z6$QS3S#JnzRp7DBB&nyvCK)08dD|X3e9@z z!_5huAYbH(ZPBjZ=X9)RDIvIf$yoyId9U)`aP`r9|A)tGQ?zT1C$`;nw&%B*JlT%xh3hr-J zUT?~o?v;SCfRs;gHQSx~LCZOhwe&|17N5SjzYV*;`Sa%}%AU!!CgCS86xWyn%qKM2 zXzF(9R}*fZ%^3U7LzlP1mYIbp@eE9Lw9L~DETi%q=1E{AHIHfJw)NbKp=xpl&i@g% zyxqP06LK+bgMLbjS0iF&d2J z4u;g2DvqD0G{Mvm>-&=H_q--rddFEArCIspv4(VG(%~J;Sq+>!^#40b`!ezHE=77G zgZpa1_4CxZg!|hFo2aP%N6{Hdr%yuX`;Dm}%%?{v&hm}iLauL=E-J(iWjKjXg^EMj z8(-hzv34JTc!TFDIcU+$Y>W)-Q_LL0GcBTV{oZc!?r%WXQZu^JGOnN3e?3>#c-Zwf z8~G}mMRvW%&vlvU3rT<)xWBDVSi=1V1opL>2Hw(h)08O~jAg2QL&6MXJLFTl7{dfj zZv4OKIYT;x*YEpJJr2IOa^%g3=jRkUCl7aKHwDsLDGz(Q2k^X41NDfsikjA6RepTg z5$O-4cpz!J@e&i%mZJgfhX*Owu2KfCLJd16@qXD~@}~7m4D2}6%p{kV!_LIoz(mKE zS&|0TjArs71W_Y2_7wUNzvWx-R7s;XNH4hy!5Q~}ZPe^dZ+8gCFh&+ul%)Z?7-f2Z6 zG%T_l`}B%eO3BormOv5te=+_g;!IeKjC@?&f5bTdU&UBza=chIRnVrT>5HgPvA^i(@SkZB z)$?9sm+R#8=Fr<@fp<;m=;E&NKKq%l(KaD{u9i=sXWCqMZ`k@d$6M#6Rpq15asT!< zu_u&qiQHi7B;#O}#`3Xh-!z&X1sIvTQ#=ixG!VRaOdIGsb6SkZDMd6N#Ag&UQgN;e zspBRLt+a5&+X}?=S}j*r!!WpA7ZbbU6&6MSlOfh2sqlEN*=ZppruDj5UiAEU--@34 zD&F)d7A)tG4$}9aDba05#1S4lUD6TWjYsjDqiUF{XWyPJF$Fe73u>9!(9|{O*;-gd|!bwyw%IfOit<+^+Cmyj()~!a0(S)jg1fFefXE3}% zL1!=?PMg^fWo~EYW#DbVEf*MvlDr9fR^ z_AuG(TNO1W&_hN&OT0ry)7l@5^hBVChqlCt*ol8s+|scT{-eSJG{{`vHf%sf?e+ck zRq2b$zjUbP9s_l}yZo1q_pyz7HnRT*3AcRhOy8l0XQgBn{cnG*Ku`T+#iPo9K|GcM ztw8^OSTSsL5Il4MbsSosaBJ;N;W0jOvx+ygY~5{y(DKO#T?obMwI||jC?-O*{-D-LGBDO)HrAgT|3R(v*ZLRg5MEN@*(VeP-8^sARROt9=bu^M9e*sCE-faG640>SPO2`Pt!3@*>jP~U2#i~ zA9#6W`WiFi)sdXWVo<=~(O8BLCJR$oHfpjg#^otUe1mu)vW5zapfMl}pxRy8(iF+^Yn7Ar>SrE(wJn@=K=*aQ<%+LMhgZ44!3 zN}+7@-Jc3i2Hj$x1nG%76;WJypS(aBP!g!*!avikl*NA9^rt@C z+=xH(7oEnk*qEwBgeOgI#Oj1}sqxN_EBccnCT)FPAe}jL z0WA;qpG>XiLY+B41yWCKQYNWTm6b+SReI<@Q43-J6O{xhgpzonmMRrd?Ozt?)dDSu zgU9+~!Bj^?!V}5;O5{$dCu*Xnrt(ncLPrE0l-ZWLS{?PT>il+z*{_(CfBEi1{z2aC zh`4n@P@9!5=fMvy2zv{Gwh34j#^e-?=ToozA)ZnafsuA1jM&m*q_E`25${M|C`H@CgGkDS)8wQ2ft-;tR7~I1))$e<>ekI?oCy_sH zoIy1SS^IQm{SC`SNtryO$EVG?D*o|en_uUMP;SF)jA8 z>o|UwiX;hMW2)=~7bQZrSS5U}l4b|FmLg+HKhvqVrDFu1Z)N?2Al!c{uAzfYndy!e ztUS7D5bH>?s~586I6{Di6blAh@^iDd_4kE(H@?=7h?7HShM8=_gM;~J4#~D0h{^Jyrm_w@xkiN8k(7emFcmd1zm29>I zWG#~26;-K7wf0iQbNGT4eAv)}+cYulCj>Mkip*P6+CPQd)yVPEUK|SN zU6@9uBzURZZ)tiwU{e!^{is|d>F}Y`AQYJZHBENq{_y^ln39b*NT69i%uW!$PLl3| z(8fA?B4s;b0iRz!4b2eicv0pclK~%^5;Y;m^Xi>Lf(^L)CoEZ+n06e-->`gX`(;0q z80dWbS)~(IFfBiqJC_T;um!6?rl(Xy(%A|(BGBc4O7moudRpfPp-a_iq7|9`e|_e6 z@3+LO7sHSjH1rQLQQWjrfep?0S6qdLBbE1(3=Gn}^hCB?=5yO_AyQ zacQ$%)iR#gd>UGAWLl004eU!0WmPWh$tcHmirReisdXWfT5z*-OSJ2QuH_(nyZwd% zw?$qCr?k?Lrs{UrXJK3w=y~yEwlPn>$72wm{HO!(iAx&na*>eL@V{GknIn{}u9>HZ z`t9C-KZzxuarBY8f37DZLki;|+4Bn%Yav6*!yl$BTS0XJ;TN0i6Sh__UC+vC2;(C; zoB5mq=Yr)FibbX7yNC4rD>=I#BMw@QC1M4fCin}?^sorQZO3MqAjoofuJ{`G)SAVZ={43r2>1%I~HL=jq=q;fwR3PFWX2$G39e% zEEcG~y_roGKgizweg`7*NW6mHK+m&A{02sO-&nb^6);KpY1+0KCIk#5^iLpx@Z=vi z(58B#!1spo4-&WI`Cb>$Olp4SVP1HeBMlSs%OQO?glJ2L5@9j62&R+q6Lq17VUy!01Vo~@3$6+SDLFW$O-_@wTEG9l>Bg6v!zs0zC{Qmss zpLfp`{T9OsO|b0OEB!Pq8vPsmH|`!XV?qV+Hi&G5ug9xExh#2qCXl|%Qa113cw9Re zf4q<%q1i*u#aJUH80=#qa0Ghx-=vWH{~mz($1&m8yowuW>hz(fMEB!hz7KVXe;mUR zsqQr7%4rZ{BD}dPrHh7f!McH-)b=`J_(N>PPxX%^7QzCcY?YIm4;DBnRQ{mh|J35` z|2r_|-%4hGivf#XGPyj{*FeESVy}HL&X_TOmT*1ae2CPGP>ueK2CvQZA2~PB_>REQ z*h4Nh0m@N=dqY7wYKT{K*Rto{L+<6=LpGme1_HLO_&ixPtv3WBovwBaSRL{VxX1Et z0y0SzlMgI4zq{gMb@;hwW|##I_y%h?8@$&|BNm${wNl3a;4^4SL*TrmDvrPRv@LCm zgY2~=VGAOsf+DaXY=~f;CVIJUbl01U)k(fK8@;a~l(4gGK!yVa#lTrpfwxB7WqEW~ z&J_+2ge>t_2OTIisO@F3#*x(S`F*dlRXZ#s*c1EJjd6!&K)HEP`EhTI#Za>{qyj+` zx4NFev2rt%a60>c+Y41twQE)gXbqzm9YOsXEl6th4A~zPj8RPEF6GKXx5SP zg~ABC4@a*O7 zk<)Iiu;NTKpk-rat3I^GrP=6qe3= zYe5Tj5z14-)2>?x8n}M#mfbY@QM}Fd!-VPjcwXO0HFi|ZAPo|56TcALs9ge}IhZn* z-|)UOt8#H=b(vFb(eHy@#ILC=lv4Tr@THB6+gZm1E;oQ~KxgIco_PM}4O8)e{P`OF0@!vMDk8 z(=-jVVZbDS8mcMCK|_quU&lB{XK%9WDK%>r+cVq>iD4T_8)vRx&{uFH-*^t{C^v0X zq&iFShYm=X{USx`&j0=b{kR=-nL9GbzWKo zE2A!6VtZv?D{vPjzyZnf_~RUuuq!?FEKMrJ1%x<5h*_XB+Hk{7)SCy*d0cL0YF=jI z0uF;JfJPQkl$Tb|GSgXwhCP-XQQzJpMHv8>^x<695xiuUh#vPy2|OI-W!}s4;tnN* z5ekkj5BWQjRc1Oe%RVaU(ola^21w4jA7E{_RMUh(9v(QasT~%w6b65L_imLqEJU0X z;f)K_>1+J z7ZEIx?_R>OZ&lNjRcIGyDkUxlIjgkJ@EjH@>5xm|y>8qxCC!o>T(T`cmjcs8Nn~KU z$mR*dfqYnKFfM~J>@&HweAkqln+Zcty%8DzX#s0oMl%uJ;$nLE0tUAMh9EIv!b&wM z;a{A%*gYHlcxkAeV{NDlq~Jkjvu6j82g0)0qlap3l>p`iju>^2OiSb6qq`ae_Qsp&;F|I z9zt-~Et9Y54RYCSeyVi06xS@mvg1VOAwi|m60lWDp&mS~`~>(7yhYNM)v88G@8-kl z^E>93zur5vicwx>Fv7eXZ3Rw1G8PjA0TJ4I)&I@8)f$~EBeJz?{9H@cwM(+h>*BgKu+R<>u&ac1* zvh4U4nvYq1=KapVTU0s(>a5d>a?lvlgenY>kYv-w&JP#DI>jjala?&srdPJwGM4(**FXA zgGNWvQ7huR?10ROHe8dhEGFM6?j|h$k}AJL_R9>&q{D^eT@(RisaYOuDcO>g>@q|c zr~G5cD#9N=NkD|Zh7>1*1Nq1-X9Tf-5r|HkSrK>E0ge-Imkd3UGn{j|DbOXU+cB0~ zS=p>QE)4upt6S;$_yE^QDQmyX_ir7Zm83x zQzmC;LD-Y?_+N>c34wF1ZG?Q-0)vV`TF%2~OPx9Wt8BU`b#28g8eidFEQAS88%M=c zKsz69;RlZetb~usrnvGtc-f5jk3zs{QKC#%FFrhW0QX}sw=DHcZ5A(7!jpip#VpiU zj#l(4vzR~M6c%7de636Bo|_{1TOny+UhO626hs4!teoghG>gMnP3a{AVn{p&OUPQZ z*Jepb78s&MwGk6A%*6s4lO+J3mcOn>Wu#SAOf%F+198X(+_|#rdWg)XF!8ktho#62 zlxz76wtIxcSUPQyKALS6ET__MrUF+{N9Y|&-?nw5KqNzv=3Ht_?Q$8{3V*_ zG~2Zg1P}&rKlJMSC4glRFf8qqX_^T#+FM+I3E(h3qW9L zx1uoAGc&00jRjsZuw4(-Qe+VPn@}Ntrn~B62l=EP$T#yiyZfZaUu06dG{!0JhW||+ zZonUPVkrMxoh<@T9S=;G-`g4Hzrjooo?YTxOa1|}$HIlaTa8j^`!7;#47azw30bcn z|D!2Qfsmv@53r@wG3S|?g@pqq9lg6g=8V^SIc8Ou@t~qS8ll(sIDMjs; z0+lWBAps!u-$3l{x#JP?6t~IOBgT@=Q!g(tZ=Zhjbh`|WC^Bave#u2lG8Tkm4wwZI zr=Hf@t)U7H=&5Z2C1J5l^PG{h$MJb#jKP2-JpxK^#SnZCuZIL5R*2`xMJUKgpul-rKGpM!}4JTnbbLy_QYehf>|p}_r&BWqOCsyNWxXC ztRNMu$J#!zjMffk`UK)DZ!Qn3+^-DJy#Fh;mV#WCafb^Bk$t?^dC^fLyWmP!ND>IYI}RZ zg;&R)F5Y6WMaN&9nL=@M@7@l`WaL)~&t|>ST(-A7y4$I<7V0)~EaG{XAC;WwpqOUTtNO8@jL?j#5gD<XF(p+O&c|R~TRN1EtkQ0*+`)feKRWUKzF42@(yT6JsOw^Gg2_vJ&n!H_&gqr2 z`obbp%-8j{$yEL-@3~^c7sYL2L*bW#U6H}qCKT7D`4$@F#FuSyVl(;^A`teKqHE*2 zDNI3X@B+)BF?fAzl&Q=+KnADROLX->X1(Wm9$E75x9j27v~b_Uy)9s!!uJlG`T6)T zpD|K7Fj9V3&a~(em|9{DYq@%a7KD~a5)Fx!*z|kuv0UB; z{m<={Cpw3!Aix$>&A^{O?N0x;p!#ZNtoq+B_~@BF>j4%7kQuM;{)2ecebXpb(Rel- z!j43dW@JYKO4cUeW~iy>U+mgkI34#?q^G21TfTTxOgl1pfA-t6L22yeUM!dr{|wzU z8K!~Zhl$2Yzko};TrbowhkQm74T~NmGcIGRmpMiOJ}P+(H!7Eaa7Bw?79Z94jM_d( zC~Fgt??hIrZ-rU?T1`VV7k$%0!}DFXpMAUm6o1L%N<<2kacX=vrg_YE_MO-?@m`uIM1ZKlu2IFQlVNG}BoSA;3xL&i!pUJ3G{YDyl!_3`Jaxx@aDRh0Q+OUz=43E{g-3rz;>`|M#i>( zn`CY#_t~$p5DfqP7D1DeDQlb1gn>#o9MU*}gzp7{PEd=r9(O6+Huv&_-!_KjvR0e%I2~Q<&t5!7hJJ9?Lhl29;^(f3 z5EI(yClsjw^zAg%!;NNUoq2PbR*mGgtO_c4Z?8(X4cE_@QLqE$RL1?$IB;XNTq({6 zYz#tFH)bSSQJjP`VP|QPAg%Q-_#R=AFk*PInq<;AyL?^SNfd0~11eaf7su^9!`9VC zjTj_^6WMglm5)YP4sGyHE^%1#r1Qi}ZOqx9B2?&I_#sZiB$|f;jxtcO(U8gZ)`v&! z4YV|V{7C2GH7|bm8HOU0EmDhO#f}gzP;@+4&pj~dIA86>~?1Kxtt+WLTYw(P49= zS=5%b43=5;GBZe)qdjnI#_ukyA5E=229rHGg7)$V;jh!TRA@5cmE-s<9{jPJR=3GQ z&H6iPhK>h)$#;Uusw0)Pdk&Cb%u{tg55I-~aC=SZraCY2RH&9L|90~~+Jh#FkhKm2 zI}>-%fq-EC*D2|0X=Z1}{P)QEx5Jr^g2Or&PWLZOl=g##=XJM;c8QCX%cWvOv=*_L zMsZzR8fB7Gif+V9r(Qp!&DsIDi{^paDq;AGxwmwC!e*os1034b2pVPQqalSgO6U=? zCjsvs1C{H=^H3ttmoO*!w?~~r6%Ry`?P8?Ik;^8p!1tjgydAJ-B#H&8%O=`Ao8_9% zt#CCk*d8#_tUM9w;wZ z*Lk69OPjMW>o5oyMQ)d1ATIAjam3v_)(iwquByQqUP(`?zb8vN<#1L) z3+=|<2t8SZL;JxXoJpzIG?49tMQ6m_$%ywH8lT+;Q&IpC2A3 zGOVo1(>Wlo^=pcW0W5BWQH>DGjijx%^woYB~ z&Z*LMLW;8$=jpi5@zv24K8elK)GAmMtlOnq;^C&73o3lvdN$Y>T2Wc*1-x~6qhU6k z3eS_EvE(0^v&zZUH>%9m6f8(*esLoEUdoJRnh#B^vXpY(xCx7~0&R?!i`qz84G&Ai z=1n2e3fDInzmPd~cbur@w~hdvZ}*KrSljsfQunu~{q>aTz6vR3{ZG$_i~A!rL~nW! zJ+N<1Xzxca%T;?+~;fn)DcxDF7zoQOd(1v~^*^j*o5`b+pB%@I20 zj2Y{OwX%AY(l(vfhf9wnhqNAg;u%M(%;iMr{lPM(GkrlvwkBfm&a&bk@BYOpp;{32R%1{PKfeG~Hf;-ibLc7yUo@A^f ze9y)jXA+ZbI9d8OlUL|CpwL(&X4)>Q(h5tKj&0u??x$a;F+(mhYDcpnD)FUca*1Fh z7@?Sz4C9_)(1Y|hQ-(F&W_**Ah^bv%S&3L`uUByFdh8s9X~LD;=M%^wPor&x0Kq*k zHdT_9;(RT^^5a_1Ajn1I-zWwA4BRLrf zoAdsc6dy5$?n3y|;`mW;UjE%T)xG4z&NjM*g(d1D$;(@-GUad_Md=vX{Z!9`-$OZX^P3xvXa}V%3Xo3%nbXcun$DR-sO>W%BibpoK1E-e3rbna zQf7WN=2vyntn~*tlx{{Wabvme1qL=ZZIyB{7!KsxMIR7K`8R&d^ zrp|nQ1eWac)1lO5S5z7d`v)9=zGq9^bu}vNP|>R|_jcBCT(YA6^CjULQ%Qa1`qjN1 zcLm|76eqO_jIKTa2cn#(k#Rgo&a4Ao&-PbZ=X|PKq6SEPDlIsO=-aiB*h|?kZwmF^ zw5{BMy8OistDzQ`(Jot1^U&nhhyAkbqI)h3{EBUYeDLI&s5T8tszul%DsHLqmYRLN zAHM@&wY_531&oWca(QXD^`oZ?ZE5?kOi4A*Cq8t?b5@y#~ zWY$WE3<;g=);;qNEZ;EzI95gniTt>>I1q4C!{%JpUhJEKoN;$ zVYz2v0MdKM#saZo;n{4`9_cPWfzC0 z$I|sHGpsgtyi2&DyTZ8ankgpVwO!K=%jnFJwkenmsiD%yznjufAP{9q7&C`78?-5= zG|qzMBx@ecQ<_`{dD9`KTw7fXUBBjx=@;$i8P@WD?4~imI>+$5)qMU9{hzs5wjbYe z3Gf3C3Yfj31Am*ixwtymY1!E_Te+Iq{r%XhimHR_XTbpZ#LXDaS zS1t3r1{L2KUugWX71p!k{?&2h$WGxMjF^KD&>|t@;t1z;DG4C{b$29uhZ1}qECQWb zjbf>4A*Jos>JCY&2#!rRHiogU$BMN8p%DaT;aG-vQWXaKHtLAe7=T_r6cA~vne0W? z#DOQpd}Kx0v+Aosh@*u1%v24{-`23v({;f790h8pOOdqEvfRvqCQs`T4Qy4^k+dRqx;d-}yo!x% zn{aUvGTb(n5{IfWMid71RFdS0AYLtC-)Fb_D`Sh9jQ01rrykM{YE=SB@;f8jLL4I4 ztvaXl&OpL;8^2Lzy2cJP6Q0nA)H;rcz9ZZf>1mXA4Fz@ivJMTQx8*mm{~XY!4ta%L zpkQO5aGd`T{zvlPUi5!QH7mBxK9B`N;%j&R?cNw`E`%jUm^28j&7$mQLU%t(Tk>`B z=<;_j1wKxbk+0RRSBv}vLWe>2hLtmP)U#9+FlrV2c_EpdJ)9imqkPqTf>w~cZGn^{ zWIV24ww*?*=AoF7C~k=k)241tHaaaPo5`i^xjmr{2lVmBvV^93UAH5#=r)1?N zs472q%K41KlK;d4?kaVDRp)j}H&YfpcbS`ETfI7wOV!}8+xx7Yqo~}(*yDss(g=9I z^bX#tJ_xVc8VdVB>Wnz2xHtSQu*K@dQC~6+{rfJN?DzjzrNz#KhT8yZGU34N?%!(; zdpA2{GiP8`=5L>Gtxfwq9-OZ265%*Wy{7O44hW9Md|{2x(URm%cOX za+fAk^p#mcr4j7%XkR9x(S5gh-@O5^kiTEA1LL=l!ZBR9t^##Sw#68Zg1SBjiAGmbLZijEMt!rgCY=^#%OA}h)_}d$br_FjeZ&{tTcdEj+=+~Y$;IzlABWIGDMN9L(y;h$9h zU4*SU|AIYLr}_H~W881}HPTyWX{EFRY$}?JAM+Fn(zuzPy=jWyxMO0okPJB!Bg?4h zOw$l<85Tv!brhJCqi88G`{19IhXnoCt>0^aJ8&&2?@kXgM&VRm7>3!Ts*K9cgXo7u zPI&mX1MWv%vR?o^u6iG0k(Vz` z#^;W|j6106j-!XZ6ZzvKbje5=Q%~OtmnZe?sHIeQ%eXJ!_ruzB&Fo%vUCZl>M|WL| zZbSEd*8Dtt5bPzv3}v5%$+y;p-rX0D!tn(Rq1W_GL8mcyC>e!fn(poHr|1D?L^$_*&K|$ET;}rEdrSB20MMF+TS?3oXk+nU-e##cKWF} zV}kW*dy4P2=`;5WOg9vjLDx~06V#D1$N7nHy7#AT+>VYt!wn5Z`A8_Jpi=d(VB_ zwwl^p6AQy?T&#s&0rrb(sK=|3N7SR`-mA%45kv--flj=YUIZ5#!#rFlYeO;iN#5X9 z>W{pw5BUF_vGPZkEV>{;K!Qj>K(K)`7O-*m-)RcC@&aC;_C{8=OxBKO7MB_}j_B$b zf*oGmw02V{G>jO~{T*z*g^Z%~U|d#f#fe;nj5SUnG6@Rk=~PBv=aT_hanB$Rp#t6? zbr@={nNCWx0emVF!cx#E@EAD5WY#yF0vHD1HyfLUuu4I320tz~SKqob?>1egdA*M9 z^GEUx24-&2ykJ=nz|Gu6?i;%&?3=0`c`9TtFu7boPFmXfcR_5xED^@@8y1Xp+HKop zw&59~0ysuPI8t=suz3kE{Q|9b+nr8fSTK+ki8nrK$ftm_AP5zt$0&Ileq0O4HRxBZ zL{L|Y8T}cC(75xT;@PCe0i#oi%N3oew|q&=>KvQ^dgt`WzDpO6*cQ?pjTF-w#XW1J z@lhJgfPj;)8J5fh#-r!RFfylGgWn^tIXa@+Ow~a8b+ZaDC8GbfP;!C--g<*6Y z=6KnR$Mk~QkIT7*eT3sAMiLOMi++TE!Z9dhz{;UdNiVm%;i(d|DZ&dy*K8jr9BqiJ zK^OZ$$7xZm3X{mU_F_3Da8M7=@xpa){~0dVHbHG&zb{IZH0t>y7d; zwVRPZ>5=S6vN;0P!cN|0hH_1Ik>?-)r80WxK+02ZsIi4Tb~vvVgDLwtmq1aYGq9x{P`ehEY<|? z&f{1(wiJw5QI@!;13|VJjDn`vN!-+PX`P&Ew=X0==)w%u%5@QvA6DZs2R$$M;Cfzq z6OOCX3EP=0NV654p@sXA29xF!&bOBz-$%uxi00frcJII0DY-Sg-&*|k>4whfdL0W2 z5bDbrtiX<7Y4M9!Cg1X*M5d(;Jiu$eN$v}t7F-C9ch#&qL9CtzxLZ;OH6^9c<$crX zw-&U1U)?a-vfZ+Nze#68UZb=}ZwY+yTOYgJ6NE-@$v8g}Ja}|=aQsQxRe}FA#{X;0 z0)9=hC)9Zp2x#CC%Nk3ck}Zx+s%fe8AiF89Goo1t?FsIu>#g`@x#}V0iEG@SXFE1! z?ZC!YdD>;dDtrV%i^~@uE4FMQ2WT&x9nF4MhpnO(^O)xmy@eU&^b3b)~08I)H}k@^CktqqOde2D6|OzBsd z2CIvd9Zs$fagu)czt-2`yU}=l;y#86dwy2FT3^CF&v*Hvi`^A*FU^@^?g{k%yDQln zcdzNAKhqmNm){QCw*J`5z%70$SU#x1;O2qLH!IF3yYYVzQe)>YI2GBjwNAmXIyL9* zrW^U9H~GxgCCq#A;L)7WB^QMgmj0K^%f6tnUAnpR9a}P2w`Ng~V1)8v$(b+YB)WHg zTBYzWF*Ty^gH`RR30F)+-biri94^#(STQdl^9=I~_M|86y{C0A@y0*7)E_@};`X$| z&!%urdwW-TPWw6EGwX$Kw=YRc>y?>moB3(VoZZXL?Ww-@rs+`inxoq$T{5b!EcJc+ zNcBh6UAcqN??11f^28&!`1Gr5?Q(TbE^d7-S6%aX+46aH&u%`SSHH0M^tI`6b*Z;k zuiyLg+HLE5mD{tQuj{wF_xa?#+TZqn-<&=i|5e7aYR&hG`!Dm))%?Eu{cn1`Mg7A^ z>-We0`rB{+e^II70p2Ng8L>B5+EiPVtD?jYn*}#c{P4J_^l+Eh%h=Uz{pX`6PfEPG zp|bk>1kRu5ij`j-ab7u7IQ^TimA`ke*6yu`Zv78VWo}h{WySYWCeK1Sz2#@YQ!l=f z4gAZR*rYNRG-4(G8+Uv=WFO$o$RxrH8Xo6hm_5@xVr|gUiBo|s)KkDQH&C|&1{#23 z3=GlEz`@|uyps5k%7WD5SWxQ>-GE9pZ-*a1rT2j2$lNg9K)QkP7|;kv8z0=XN7vZV z#vPmqRB{ohQ4mGrbD#*k?n%xs0*^$aYyWclw)ktH_8b-l1_2c9^*|B0_QZk$Y_2|f zqGNkMuobGwhi>@{U_gLp4uD3K<^uhWO?zI0w2%?d^3y=8WKb**0}iEwwL^T4YzWp+ z=v^&l-L22S5EshIz>i`Qa2p)Nq~emwoK*01C3+a3A1Dda-@sU9jiMRtcu90~(C0}J z=DaR|nS(Tmg03BX;sv4oW(ia~+B6Kh3Fs3M2ot!=peCS9OQ7pVA2mkkpH~6Zk3NQs zZUlP&8)3xsdaS*1bOX>kx(EaE8;}ja*6l?%3%&1%Fe{@G*(}taB)Tc+T`hzu^-a)F nLFss*>ql=7BJ@kOA!RYt)?t7*D=-Iva+M%MA~1XK^niE(PyH#s literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/F1FirstDegreeTweetNTabRequestHydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/F1FirstDegreeTweetNTabRequestHydrator.scala deleted file mode 100644 index 18662e257..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/F1FirstDegreeTweetNTabRequestHydrator.scala +++ /dev/null @@ -1,18 +0,0 @@ -package com.twitter.frigate.pushservice.model.ntab - -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.common.base.TweetCandidate -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.take.NotificationServiceSender -import com.twitter.notificationservice.thriftscala.DisplayTextEntity -import com.twitter.util.Future - -trait F1FirstDegreeTweetNTabRequestHydrator extends TweetNTabRequestHydrator { - self: PushCandidate with TweetCandidate with TweetAuthorDetails => - - override val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = - NotificationServiceSender.getDisplayTextEntityFromUser(tweetAuthor, "author", true).map(_.toSeq) - - override lazy val facepileUsersFut: Future[Seq[Long]] = senderIdFut.map(Seq(_)) - -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/ListCandidateNTabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/ListCandidateNTabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..7de81413b9cb7b26e247875a0d5bf4aa472c6df5 GIT binary patch literal 37128 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 - - override lazy val senderIdFut: Future[Long] = - listOwnerId.map(_.getOrElse(0L)) - - override lazy val facepileUsersFut: Future[Seq[Long]] = Future.Nil - - override lazy val storyContext: Option[StoryContext] = None - - override lazy val inlineCard: Option[InlineCard] = None - - override lazy val tapThroughFut: Future[String] = Future.value(s"i/lists/${listId}") - - override lazy val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = listName.map { - listNameOpt => - listNameOpt.toSeq.map { name => - DisplayTextEntity(name = "title", value = TextValue.Text(name)) - } - } - - override val socialProofDisplayText: Option[DisplayText] = Some(DisplayText()) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutCreatorEventNtabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutCreatorEventNtabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..a6c3db2b11e2f3c7e7057f6ce61db2cca2110f9a GIT binary patch literal 37832 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 - - override val senderIdFut: Future[Long] = Future.value(creatorId) - - override lazy val tapThroughFut: Future[String] = - Future.value(s"/${userProfile.screenName}/superfollows/subscribe") - - lazy val optionalTweetCountEntityFut: Future[Option[DisplayTextEntity]] = { - creatorFanoutType match { - case CreatorFanoutType.UserSubscription => - numberOfTweetsFut.map { - _.flatMap { - case numberOfTweets if numberOfTweets >= 10 => - Some( - DisplayTextEntity( - name = "tweet_count", - emphasis = true, - value = TextValue.Text(numberOfTweets.toString))) - case _ => None - } - } - case _ => Future.None - } - } - - override lazy val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = - optionalTweetCountEntityFut - .map { tweetCountOpt => - Seq( - NotificationServiceSender - .getDisplayTextEntityFromUser(hydratedCreator, "display_name", isBold = true), - tweetCountOpt).flatten - } - - override lazy val facepileUsersFut: Future[Seq[Long]] = Future.value(Seq(creatorId)) - - override val storyContext: Option[StoryContext] = None - - override val inlineCard: Option[InlineCard] = None - - lazy val refreshableTypeFut = { - creatorFanoutType match { - case CreatorFanoutType.UserSubscription => - numberOfTweetsFut.map { - _.flatMap { - case numberOfTweets if numberOfTweets >= 10 => - Some("MagicFanoutCreatorSubscriptionWithTweets") - case _ => super.refreshableType - } - } - case _ => Future.value(super.refreshableType) - } - } - - override lazy val socialProofDisplayText: Option[DisplayText] = { - creatorFanoutType match { - case CreatorFanoutType.UserSubscription => - Some( - DisplayText(values = Seq( - DisplayTextEntity(name = "handle", value = TextValue.Text(userProfile.screenName))))) - case CreatorFanoutType.NewCreator => None - case _ => None - } - } - - override lazy val ntabRequest = { - Future - .join( - senderIdFut, - displayTextEntitiesFut, - facepileUsersFut, - tapThroughFut, - refreshableTypeFut).map { - case (senderId, displayTextEntities, facepileUsers, tapThrough, refreshableTypeOpt) => - Some( - CreateGenericNotificationRequest( - userId = target.targetId, - senderId = senderId, - genericType = GenericType.RefreshableNotification, - displayText = DisplayText(values = displayTextEntities), - facepileUsers = facepileUsers, - timestampMillis = Time.now.inMillis, - tapThroughAction = Some(TapThroughAction(Some(tapThrough))), - impressionId = Some(impressionId), - socialProofText = socialProofDisplayText, - context = storyContext, - inlineCard = inlineCard, - refreshableType = refreshableTypeOpt - )) - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutNewsEventNTabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutNewsEventNTabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..2d62165bd6cf4e11d69c38f056b48210d240a5b6 GIT binary patch literal 36984 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

      CV~c4FNU%*akJ>ftomOZ$!Mc317P( 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 bNLdWEbr|5y3d}*ETqVem2+SUgJs=(cpnxP+ literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutNewsEventNTabRequestHydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutNewsEventNTabRequestHydrator.scala deleted file mode 100644 index 202533e3c..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutNewsEventNTabRequestHydrator.scala +++ /dev/null @@ -1,16 +0,0 @@ -package com.twitter.frigate.pushservice.model.ntab - -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.MagicFanoutEventHydratedCandidate -import com.twitter.notificationservice.thriftscala.DisplayTextEntity -import com.twitter.notificationservice.thriftscala.TextValue -import com.twitter.util.Future - -trait MagicFanoutNewsEventNTabRequestHydrator extends EventNTabRequestHydrator { - self: PushCandidate with MagicFanoutEventHydratedCandidate => - override lazy val tapThroughFut: Future[String] = Future.value(s"i/events/$eventId") - override lazy val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = - eventTitleFut.map { eventTitle => - Seq(DisplayTextEntity(name = "title", value = TextValue.Text(eventTitle))) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutProductLaunchNtabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutProductLaunchNtabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..1329dd79a790a7f01fc361719e8c64dfedc65296 GIT binary patch literal 37706 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 F)&IKfgF^rS literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutProductLaunchNtabRequestHydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutProductLaunchNtabRequestHydrator.scala deleted file mode 100644 index 797dbe890..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutProductLaunchNtabRequestHydrator.scala +++ /dev/null @@ -1,97 +0,0 @@ -package com.twitter.frigate.pushservice.model.ntab - -import com.twitter.frigate.common.base.MagicFanoutProductLaunchCandidate -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.notificationservice.thriftscala._ -import com.twitter.util.Future -import com.twitter.util.Time - -trait MagicFanoutProductLaunchNtabRequestHydrator extends NTabRequestHydrator { - self: PushCandidate with MagicFanoutProductLaunchCandidate => - - override val senderIdFut: Future[Long] = Future.value(0L) - - override lazy val tapThroughFut: Future[String] = Future.value(getProductLaunchTapThrough()) - - override lazy val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = { - Future.value( - frigateNotification.magicFanoutProductLaunchNotification - .flatMap { - _.productInfo.flatMap { - _.body.map { body => - Seq( - DisplayTextEntity(name = "body", value = TextValue.Text(body)), - ) - } - } - }.getOrElse(Nil)) - } - - override lazy val facepileUsersFut: Future[Seq[Long]] = { - Future.value( - frigateNotification.magicFanoutProductLaunchNotification - .flatMap { - _.productInfo.flatMap { - _.facepileUsers - } - }.getOrElse(Nil)) - } - - override val storyContext: Option[StoryContext] = None - - override val inlineCard: Option[InlineCard] = None - - override lazy val socialProofDisplayText: Option[DisplayText] = { - frigateNotification.magicFanoutProductLaunchNotification.flatMap { - _.productInfo.flatMap { - _.title.map { title => - DisplayText(values = - Seq(DisplayTextEntity(name = "social_context", value = TextValue.Text(title)))) - } - } - } - } - - lazy val defaultTapThrough = target.params(PushFeatureSwitchParams.ProductLaunchTapThrough) - - private def getProductLaunchTapThrough(): String = { - frigateNotification.magicFanoutProductLaunchNotification match { - case Some(productLaunchNotif) => - productLaunchNotif.productInfo match { - case Some(productInfo) => productInfo.tapThrough.getOrElse(defaultTapThrough) - case _ => defaultTapThrough - } - case _ => defaultTapThrough - } - } - - private lazy val productLaunchNtabRequest: Future[Option[CreateGenericNotificationRequest]] = { - Future - .join(senderIdFut, displayTextEntitiesFut, facepileUsersFut, tapThroughFut) - .map { - case (senderId, displayTextEntities, facepileUsers, tapThrough) => - Some( - CreateGenericNotificationRequest( - userId = target.targetId, - senderId = senderId, - genericType = GenericType.RefreshableNotification, - displayText = DisplayText(values = displayTextEntities), - facepileUsers = facepileUsers, - timestampMillis = Time.now.inMillis, - tapThroughAction = Some(TapThroughAction(Some(tapThrough))), - impressionId = Some(impressionId), - socialProofText = socialProofDisplayText, - context = storyContext, - inlineCard = inlineCard, - refreshableType = refreshableType - )) - } - } - - override lazy val ntabRequest: Future[Option[CreateGenericNotificationRequest]] = { - if (target.params(PushFeatureSwitchParams.EnableNTabEntriesForProductLaunchNotifications)) { - productLaunchNtabRequest - } else Future.None - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutSportsEventNTabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutSportsEventNTabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..97678f7eedfd8975ee362d20f5d03b2e0d93aa7c GIT binary patch literal 37970 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 Z-ssTIS_qs$>$6G*a0jQyaN7FW{{do)0}%iK literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutSportsEventNTabRequestHydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutSportsEventNTabRequestHydrator.scala deleted file mode 100644 index ca3d9faf0..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/MagicFanoutSportsEventNTabRequestHydrator.scala +++ /dev/null @@ -1,95 +0,0 @@ -package com.twitter.frigate.pushservice.model.ntab - -import com.twitter.frigate.common.base.MagicFanoutSportsEventCandidate -import com.twitter.frigate.common.base.MagicFanoutSportsScoreInformation -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.MagicFanoutEventHydratedCandidate -import com.twitter.frigate.pushservice.params.{PushFeatureSwitchParams => FS} -import com.twitter.notificationservice.thriftscala.CreateGenericNotificationRequest -import com.twitter.notificationservice.thriftscala.DisplayText -import com.twitter.notificationservice.thriftscala.DisplayTextEntity -import com.twitter.notificationservice.thriftscala.GenericType -import com.twitter.notificationservice.thriftscala.TextValue -import com.twitter.notificationservice.thriftscala.TapThroughAction -import com.twitter.util.Future -import com.twitter.util.Time - -trait MagicFanoutSportsEventNTabRequestHydrator extends EventNTabRequestHydrator { - self: PushCandidate - with MagicFanoutEventHydratedCandidate - with MagicFanoutSportsEventCandidate - with MagicFanoutSportsScoreInformation => - - lazy val stats = self.statsReceiver.scope("MagicFanoutSportsEventNtabHydrator") - lazy val inNetworkOnlyCounter = stats.counter("in_network_only") - lazy val facePilesEnabledCounter = stats.counter("face_piles_enabled") - lazy val facePilesDisabledCounter = stats.counter("face_piles_disabled") - lazy val filterPeopleWhoDontFollowMeCounter = stats.counter("pepole_who_dont_follow_me_counter") - - override lazy val tapThroughFut: Future[String] = { - Future.value(s"i/events/$eventId") - } - override lazy val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = - eventTitleFut.map { eventTitle => - Seq(DisplayTextEntity(name = "title", value = TextValue.Text(eventTitle))) - } - - override lazy val facepileUsersFut: Future[Seq[Long]] = - if (target.params(FS.EnableNTabFacePileForSportsEventNotifications)) { - Future - .join( - target.notificationsFromOnlyPeopleIFollow, - target.filterNotificationsFromPeopleThatDontFollowMe, - awayTeamInfo, - homeTeamInfo).map { - case (inNetworkOnly, filterPeopleWhoDontFollowMe, away, home) - if !(inNetworkOnly || filterPeopleWhoDontFollowMe) => - val awayTeamId = away.flatMap(_.twitterUserId) - val homeTeamId = home.flatMap(_.twitterUserId) - facePilesEnabledCounter.incr - Seq(awayTeamId, homeTeamId).flatten - case (inNetworkOnly, filterPeopleWhoDontFollowMe, _, _) => - facePilesDisabledCounter.incr - if (inNetworkOnly) inNetworkOnlyCounter.incr - if (filterPeopleWhoDontFollowMe) filterPeopleWhoDontFollowMeCounter.incr - Seq.empty[Long] - } - } else Future.Nil - - private lazy val sportsNtabRequest: Future[Option[CreateGenericNotificationRequest]] = { - Future - .join(senderIdFut, displayTextEntitiesFut, facepileUsersFut, tapThroughFut) - .map { - case (senderId, displayTextEntities, facepileUsers, tapThrough) => - Some( - CreateGenericNotificationRequest( - userId = target.targetId, - senderId = senderId, - genericType = GenericType.RefreshableNotification, - displayText = DisplayText(values = displayTextEntities), - facepileUsers = facepileUsers, - timestampMillis = Time.now.inMillis, - tapThroughAction = Some(TapThroughAction(Some(tapThrough))), - impressionId = Some(impressionId), - socialProofText = socialProofDisplayText, - context = storyContext, - inlineCard = inlineCard, - refreshableType = refreshableType - )) - } - } - - override lazy val ntabRequest: Future[Option[CreateGenericNotificationRequest]] = { - if (target.params(FS.EnableNTabEntriesForSportsEventNotifications)) { - self.target.history.flatMap { pushHistory => - val prevEventHistoryExists = pushHistory.sortedHistory.exists { - case (_, notification) => - notification.magicFanoutEventNotification.exists(_.eventId == self.eventId) - } - if (prevEventHistoryExists) { - Future.None - } else sportsNtabRequest - } - } else Future.None - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/NTabRequest.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/NTabRequest.docx new file mode 100644 index 0000000000000000000000000000000000000000..8adbcd66e330cf6c5d1835618e85dfe4183685fb GIT binary patch literal 36781 zcmagFWmufawl<8rdvJGmcL)S`cMIA`aA-WZTX1)GclQw7EkFXn-QUj4?7e69Ip_QS zJX}=Ox@E2Es_KVASq>5k3k(bl4lE;$N4rY3C_Wh+3~U?*3=9+0swV+(_+;Vm$w=MP z(Za=m*~8whDOo{jO%(0(*$Z|Gi!iCT1S)pGLGqs+CZgAGU+5vtejF2<&T;0HA?FX=&+iCS)RO33P*L-qfweY zhL8K>%5E={e(vNC68=)zFU!o-npw6P2<-v9U&4*gHKacqHzo|a)VWPDG&oynIMuK9 z6`^S-|J2SCG)s9kdCH-%peISoxL-*$|v}4;O>sDD3((AVL8n3ZhlU|ep17K z6!kNghDe=ihgfXN7zZEEo70g5x$jMGu-*!vq@r)9q>&J9fasw2{RPU?feG{~-aS%4 z^_|RfSMk2dZVoAk2N#VZdrIL+(k?}k7{3k30Lonrk zRMC@KPV^pBy-f%(FhtN#BWDXc7Z&E<&#Hu}50GqV{%68cqf{jh%^H%0D~6Ik6bglV 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

      MC@bI5 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 z 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 z%0D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 - - // Represents the sender of the recommendation - def senderIdFut: Future[Long] - - // Consists of a sequence representing the social context user ids. - def facepileUsersFut: Future[Seq[Long]] - - // Story Context is required for Tweet Recommendations - // Contains the Tweet ID of the recommended Tweet - def storyContext: Option[StoryContext] - - // Inline card used to render a generic notification. - def inlineCard: Option[InlineCard] - - // Represents where the recommendation should land when clicked - def tapThroughFut: Future[String] - - // Hydration for fields that are used within the NTab copy - def displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] - - // Represents the social proof text that is needed for specific NTab copies - def socialProofDisplayText: Option[DisplayText] - - // MagicRecs NTab entries always use RefreshableType as the Generic Type - final val genericType: GenericType = GenericType.RefreshableNotification - - def refreshableType: Option[String] = ntabCopy.refreshableType - - lazy val ntabRequest: Future[Option[CreateGenericNotificationRequest]] = { - Future.join(senderIdFut, displayTextEntitiesFut, facepileUsersFut, tapThroughFut).map { - case (senderId, displayTextEntities, facepileUsers, tapThrough) => - Some( - CreateGenericNotificationRequest( - userId = target.targetId, - senderId = senderId, - genericType = GenericType.RefreshableNotification, - displayText = DisplayText(values = displayTextEntities), - facepileUsers = facepileUsers, - timestampMillis = Time.now.inMillis, - tapThroughAction = Some(TapThroughAction(Some(tapThrough))), - impressionId = Some(impressionId), - socialProofText = socialProofDisplayText, - context = storyContext, - inlineCard = inlineCard, - refreshableType = refreshableType - )) - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/NTabSocialContext.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/NTabSocialContext.docx new file mode 100644 index 0000000000000000000000000000000000000000..69f4d5cde11a979d9564b8705dc9f20f9e63e0be GIT binary patch literal 37241 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 - - private def ntabDisplayUserIds: Seq[Long] = - socialContextUserIds.take(ntabDisplayUserIdsLength) - - def ntabDisplayUserIdsLength: Int = - if (socialContextUserIds.size == 2) 2 else 1 - - def ntabDisplayNamesAndIds: Future[Seq[(String, Long)]] = - scUserMap.map { userObjMap => - ntabDisplayUserIds.flatMap { id => - userObjMap(id).flatMap(_.profile.map(_.name)).map { name => (name, id) } - } - } - - def rankedNtabDisplayNamesAndIds(defaultToRecency: Boolean): Future[Seq[(String, Long)]] = - scUserMap.flatMap { userObjMap => - val rankedSocialContextActivityFut = - CandidateUtil.getRankedSocialContext( - socialContextActions, - target.seedsWithWeight, - defaultToRecency) - rankedSocialContextActivityFut.map { rankedSocialContextActivity => - val ntabDisplayUserIds = - rankedSocialContextActivity.map(_.userId).take(ntabDisplayUserIdsLength) - ntabDisplayUserIds.flatMap { id => - userObjMap(id).flatMap(_.profile.map(_.name)).map { name => (name, id) } - } - } - } - - def otherCount: Future[Int] = - ntabDisplayNamesAndIds.map { - case namesWithIdSeq => - Math.max(0, socialContextUserIds.length - namesWithIdSeq.size) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/OutOfNetworkTweetNTabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/OutOfNetworkTweetNTabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..7475ca939e3dc040ba05149300f196ef7d091144 GIT binary patch literal 37768 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 - - lazy val useTopicCopyForMBCGNtab = mrModelingBasedTypes.contains(commonRecType) && target.params( - PushFeatureSwitchParams.EnableMrModelingBasedCandidatesTopicCopy) - lazy val useTopicCopyForFrsNtab = frsTypes.contains(commonRecType) && target.params( - PushFeatureSwitchParams.EnableFrsTweetCandidatesTopicCopy) - lazy val useTopicCopyForTagspaceNtab = tagspaceTypes.contains(commonRecType) && target.params( - PushFeatureSwitchParams.EnableHashspaceCandidatesTopicCopy) - - override lazy val tapThroughFut: Future[String] = { - if (hasVideo && self.target.params( - PushFeatureSwitchParams.EnableLaunchVideosInImmersiveExplore)) { - Future.value( - s"i/immersive_timeline?display_location=notification&include_pinned_tweet=true&pinned_tweet_id=${tweetId}&tl_type=imv") - } else { - tweetAuthor.map { - case Some(author) => - val authorProfile = author.profile.getOrElse( - throw new TweetNTabRequestHydratorException( - s"Unable to obtain author profile for: ${author.id}")) - s"${authorProfile.screenName}/status/${tweetId.toString}" - case _ => - throw new TweetNTabRequestHydratorException( - s"Unable to obtain author and target details to generate tap through for Tweet: $tweetId") - } - } - } - - override lazy val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = - if (localizedUttEntity.isDefined && - (useTopicCopyForMBCGNtab || useTopicCopyForFrsNtab || useTopicCopyForTagspaceNtab)) { - NotificationServiceSender - .getDisplayTextEntityFromUser(tweetAuthor, "tweetAuthorName", isBold = true).map(_.toSeq) - } else { - NotificationServiceSender - .getDisplayTextEntityFromUser(tweetAuthor, "author", isBold = true).map(_.toSeq) - } - - override lazy val refreshableType: Option[String] = { - if (localizedUttEntity.isDefined && - (useTopicCopyForMBCGNtab || useTopicCopyForFrsNtab || useTopicCopyForTagspaceNtab)) { - MrNtabCopyObjects.TopicTweet.refreshableType - } else ntabCopy.refreshableType - } - - override def socialProofDisplayText: Option[DisplayText] = { - if (localizedUttEntity.isDefined && - (useTopicCopyForMBCGNtab || useTopicCopyForFrsNtab || useTopicCopyForTagspaceNtab)) { - localizedUttEntity.map(uttEntity => - DisplayText(values = - Seq(DisplayTextEntity("topic_name", TextValue.Text(uttEntity.localizedNameForDisplay))))) - } else None - } - - override lazy val facepileUsersFut: Future[Seq[Long]] = senderIdFut.map(Seq(_)) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/ScheduledSpaceNTabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/ScheduledSpaceNTabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..b793420b6ec7366325dd654ae81ecf279211f74b GIT binary patch literal 37907 zcmagEb9`OR+CLn#F&o=98ly>L+iJLDXUC1**tTukjqRjO8r#3!`#$G9=RA1df7br& znYq5WuC>?9tUZb{kWiRlU|?`y>8aeBmCA*2iQr&hV=!P~7@$@iF@T-3nVqwNs)xOq zlOB`1txaR1oWhzg>bLV(tR!YZ5-%|ntg>Bu8heH~Jn`!ETOO@t=2KaS$NLGsFtu65 z5E!PojMRG{qP04KF7GBP9Wn7!J-rN#d@{&l@BEECrZaQy1Bp0N=_RQ>!udg%nwAXj zkJDV>EPFNmd;VB)O++_ z55^Q-UnhLs$R5S~B(h$YnW)q=t;AjPSV#qTBteHt@Rcn zyAL4(P=D;(_At4PYp@@~)RjiwsAzAZTLtf*0<43mYUX}IW@)_J@#mbZsndV$(AJ7p z^|3q-l*0487emfC=?S2vt|!&|4wJ^#5mV_Mbl-n}Pg@v6A^5l)s((K}CucjM<~M@! zjZ;miR=HgyCTWzNm;2q}Sd7f)HYZ4Dg;!kOr$gL8fW}{V!0X`>`T5WYdKLHKgMZb% z)Jtd4fy-Jzo{20&60Oc_B4Ghqcbw6)*ArrK`A2cV-j}7~jRT>vd$PP|OgVip#s8?H z2bGNQ1E_kN5MW@4picuwGaDynra#xp_{lGjtf+qHf)XQ?#db|<;sq=E;y>jI1bb2@ z&Wh}SQbns>ol4?*n%KQWN9TJc=8Nh1_{;P~Hh~((S_=WWOTC&~w3iL-2J3K1@E!i7 z?y9>%S~h7Bx8%seW>oiF=ISJZ^qUxiI<)m?vm#ZZ;s$iKQphDir3q*^h|V+`Ew z_udloa_V8%sBjX}bl}I~U!*Yoms{^RIOS}{v$!U=_6lsZbLd@(w)lsy?FBcu8=E0b zg5!gUL*mZ;O~Vnju-?{;vDcroBv91*@cx-mEBs@*|x(^og5vurd=WR%0D!Rd_Ye6m^*t~QXw3W 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 ID1GDX|MC*un*aa+ literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/ScheduledSpaceNTabRequestHydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/ScheduledSpaceNTabRequestHydrator.scala deleted file mode 100644 index 4673a001e..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/ScheduledSpaceNTabRequestHydrator.scala +++ /dev/null @@ -1,106 +0,0 @@ -package com.twitter.frigate.pushservice.model.ntab - -import com.twitter.frigate.common.base.SpaceCandidate -import com.twitter.frigate.common.util.MrNtabCopyObjects -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.ScheduledSpaceSpeakerPushCandidate -import com.twitter.frigate.pushservice.model.ScheduledSpaceSubscriberPushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.take.NotificationServiceSender -import com.twitter.frigate.thriftscala.SpaceNotificationType -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.notificationservice.thriftscala._ -import com.twitter.util.Future -import com.twitter.util.Time - -trait ScheduledSpaceSpeakerNTabRequestHydrator extends ScheduledSpaceNTabRequestHydrator { - self: PushCandidate with ScheduledSpaceSpeakerPushCandidate => - - override def refreshableType: Option[String] = { - frigateNotification.spaceNotification.flatMap { spaceNotification => - spaceNotification.spaceNotificationType.flatMap { - case SpaceNotificationType.PreSpaceBroadcast => - MrNtabCopyObjects.ScheduledSpaceSpeakerSoon.refreshableType - case SpaceNotificationType.AtSpaceBroadcast => - MrNtabCopyObjects.ScheduledSpaceSpeakerNow.refreshableType - case _ => - throw new IllegalStateException(s"Unexpected SpaceNotificationType") - } - } - } - - override lazy val facepileUsersFut: Future[Seq[Long]] = Future.Nil - - override val socialProofDisplayText: Option[DisplayText] = Some(DisplayText()) -} - -trait ScheduledSpaceSubscriberNTabRequestHydrator extends ScheduledSpaceNTabRequestHydrator { - self: PushCandidate with ScheduledSpaceSubscriberPushCandidate => - - override lazy val facepileUsersFut: Future[Seq[Long]] = { - hostId match { - case Some(spaceHostId) => Future.value(Seq(spaceHostId)) - case _ => - Future.exception( - new IllegalStateException( - "Unable to get host id for ScheduledSpaceSubscriberNTabRequestHydrator")) - } - } - - override val socialProofDisplayText: Option[DisplayText] = None -} - -trait ScheduledSpaceNTabRequestHydrator extends NTabRequestHydrator { - self: PushCandidate with SpaceCandidate => - - def hydratedHost: Option[User] - - override lazy val senderIdFut: Future[Long] = { - hostId match { - case Some(spaceHostId) => Future.value(spaceHostId) - case _ => throw new IllegalStateException(s"No Space Host Id") - } - } - - override lazy val tapThroughFut: Future[String] = Future.value(s"i/spaces/$spaceId") - - override lazy val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = - NotificationServiceSender - .getDisplayTextEntityFromUser( - Future.value(hydratedHost), - fieldName = "space_host_name", - isBold = true - ).map(_.toSeq) - - override val storyContext: Option[StoryContext] = None - - override val inlineCard: Option[InlineCard] = None - - override lazy val ntabRequest: Future[Option[CreateGenericNotificationRequest]] = { - Future.join(senderIdFut, displayTextEntitiesFut, facepileUsersFut, tapThroughFut).map { - case (senderId, displayTextEntities, facepileUsers, tapThrough) => - val expiryTimeMillis = if (target.params(PushFeatureSwitchParams.EnableSpacesTtlForNtab)) { - Some( - (Time.now + target.params( - PushFeatureSwitchParams.SpaceNotificationsTTLDurationForNTab)).inMillis) - } else None - - Some( - CreateGenericNotificationRequest( - userId = target.targetId, - senderId = senderId, - genericType = GenericType.RefreshableNotification, - displayText = DisplayText(values = displayTextEntities), - facepileUsers = facepileUsers, - timestampMillis = Time.now.inMillis, - tapThroughAction = Some(TapThroughAction(Some(tapThrough))), - impressionId = Some(impressionId), - socialProofText = socialProofDisplayText, - context = storyContext, - inlineCard = inlineCard, - refreshableType = refreshableType, - expiryTimeMillis = expiryTimeMillis - )) - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/SubscribedSearchTweetNtabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/SubscribedSearchTweetNtabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..051ff38f083859e51c4ff13504074213d0e8290f GIT binary patch literal 37096 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/SubscribedSearchTweetNtabRequestHydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/SubscribedSearchTweetNtabRequestHydrator.scala deleted file mode 100644 index caa2a8cd0..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/SubscribedSearchTweetNtabRequestHydrator.scala +++ /dev/null @@ -1,23 +0,0 @@ -package com.twitter.frigate.pushservice.model.ntab - -import com.twitter.frigate.pushservice.model.SubscribedSearchTweetPushCandidate -import com.twitter.frigate.pushservice.take.NotificationServiceSender -import com.twitter.notificationservice.thriftscala.DisplayText -import com.twitter.notificationservice.thriftscala.DisplayTextEntity -import com.twitter.notificationservice.thriftscala.TextValue -import com.twitter.util.Future - -trait SubscribedSearchTweetNtabRequestHydrator extends TweetNTabRequestHydrator { - self: SubscribedSearchTweetPushCandidate => - override def displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = NotificationServiceSender - .getDisplayTextEntityFromUser(tweetAuthor, "tweetAuthor", isBold = true).map(_.toSeq) - - override def socialProofDisplayText: Option[DisplayText] = { - Some(DisplayText(values = Seq(DisplayTextEntity("search_query", TextValue.Text(searchTerm))))) - } - - override lazy val facepileUsersFut: Future[Seq[Long]] = senderIdFut.map(Seq(_)) - - override lazy val tapThroughFut: Future[String] = - Future.value(self.ntabLandingUrl) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TopTweetImpressionsNTabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TopTweetImpressionsNTabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..4221c73a30dc9af8eead5a7ae0538065d2a89f43 GIT binary patch literal 37175 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 - - override lazy val tapThroughFut: Future[String] = - Future.value(s"${target.targetId}/status/$tweetId") - - override val senderIdFut: Future[Long] = Future.value(0L) - - override val facepileUsersFut: Future[Seq[Long]] = Future.Nil - - override val storyContext: Option[StoryContext] = - Some(StoryContext(altText = "", value = Some(StoryContextValue.Tweets(Seq(tweetId))))) - - override val inlineCard: Option[InlineCard] = None - - override lazy val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = { - Future.value( - Seq( - DisplayTextEntity(name = "num_impressions", value = TextValue.Number(self.impressionsCount)) - ) - ) - } - - override def socialProofDisplayText: Option[DisplayText] = None -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TopicProofTweetNtabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TopicProofTweetNtabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..89e92d95929d32d23890d7c66b116e45bd07e305 GIT binary patch literal 37497 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TopicProofTweetNtabRequestHydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TopicProofTweetNtabRequestHydrator.scala deleted file mode 100644 index 17519efda..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TopicProofTweetNtabRequestHydrator.scala +++ /dev/null @@ -1,60 +0,0 @@ -package com.twitter.frigate.pushservice.model.ntab - -import com.twitter.frigate.pushservice.model.TopicProofTweetPushCandidate -import com.twitter.frigate.pushservice.exception.TweetNTabRequestHydratorException -import com.twitter.frigate.pushservice.exception.UttEntityNotFoundException -import com.twitter.frigate.pushservice.take.NotificationServiceSender -import com.twitter.notificationservice.thriftscala.DisplayText -import com.twitter.notificationservice.thriftscala.DisplayTextEntity -import com.twitter.notificationservice.thriftscala.StoryContext -import com.twitter.notificationservice.thriftscala.StoryContextValue -import com.twitter.notificationservice.thriftscala.TextValue -import com.twitter.util.Future - -trait TopicProofTweetNtabRequestHydrator extends NTabRequestHydrator { - self: TopicProofTweetPushCandidate => - - override def displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = NotificationServiceSender - .getDisplayTextEntityFromUser(tweetAuthor, "tweetAuthorName", true) - .map(_.toSeq) - - private lazy val uttEntity = localizedUttEntity.getOrElse( - throw new UttEntityNotFoundException( - s"${getClass.getSimpleName} UttEntity missing for $tweetId") - ) - - override lazy val tapThroughFut: Future[String] = { - tweetAuthor.map { - case Some(author) => - val authorProfile = author.profile.getOrElse( - throw new TweetNTabRequestHydratorException( - s"Unable to obtain author profile for: ${author.id}")) - s"${authorProfile.screenName}/status/${tweetId.toString}" - case _ => - throw new TweetNTabRequestHydratorException( - s"Unable to obtain author and target details to generate tap through for Tweet: $tweetId") - } - } - - override lazy val socialProofDisplayText: Option[DisplayText] = { - Some( - DisplayText(values = - Seq(DisplayTextEntity("topic_name", TextValue.Text(uttEntity.localizedNameForDisplay)))) - ) - } - - override lazy val facepileUsersFut: Future[Seq[Long]] = senderIdFut.map(Seq(_)) - - override val inlineCard = None - - override def storyContext: Option[StoryContext] = Some( - StoryContext("", Some(StoryContextValue.Tweets(Seq(tweetId))))) - - override def senderIdFut: Future[Long] = - tweetAuthor.map { - case Some(author) => author.id - case _ => - throw new TweetNTabRequestHydratorException( - s"Unable to obtain Author ID for: $commonRecType") - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TrendTweetNtabHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TrendTweetNtabHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..9fc5d538927701c039bac27da982e9f3f5620a26 GIT binary patch literal 37641 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 pp@P!!Lf4Pp9z^J0(1Dc2P+Nxq-mJhJ1j - - private lazy val trendTweetNtabStats = self.statsReceiver.scope("trend_tweet_ntab") - - private lazy val ruxLandingOnNtabCounter = - trendTweetNtabStats.counter("use_rux_landing_on_ntab") - - override lazy val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = - NotificationServiceSender - .getDisplayTextEntityFromUser(tweetAuthor, fieldName = "author_name", isBold = true) - .map( - _.toSeq :+ DisplayTextEntity( - name = "trend_name", - value = TextValue.Text(trendName), - emphasis = true) - ) - - override lazy val facepileUsersFut: Future[Seq[Long]] = senderIdFut.map(Seq(_)) - - override lazy val socialProofDisplayText: Option[DisplayText] = None - - override def refreshableType: Option[String] = ntabCopy.refreshableType - - override lazy val tapThroughFut: Future[String] = { - Future.join(tweetAuthor, target.deviceInfo).map { - case (Some(author), Some(deviceInfo)) => - val enableRuxLandingPage = deviceInfo.isRuxLandingPageEligible && target.params( - PushFeatureSwitchParams.EnableNTabRuxLandingPage) - val authorProfile = author.profile.getOrElse( - throw new TweetNTabRequestHydratorException( - s"Unable to obtain author profile for: ${author.id}")) - - if (enableRuxLandingPage) { - ruxLandingOnNtabCounter.incr() - EmailLandingPageExperimentUtil.createNTabRuxLandingURI(authorProfile.screenName, tweetId) - } else { - s"${authorProfile.screenName}/status/${tweetId.toString}" - } - - case _ => - throw new TweetNTabRequestHydratorException( - s"Unable to obtain author and target details to generate tap through for Tweet: $tweetId") - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetFavoriteNTabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetFavoriteNTabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..3daf10713353f4c347e38007add1d45e7f77f2c6 GIT binary patch literal 37175 zcmagEWmsIvwm*!!dvJGmcL)S`m!Lr#2@Z`12oAwLxVyVM1a}V}-2LB~nRCv}x%a;B zm)%cS)%wX=yQ^yNE@e4LC@e5AFgUQZ6dvtz)%@55a4@hD7%(tQP^+E$S+xi3rr4>=MFJ~{XtL-VM}x5|Sqd2I*S4%>??o{>i8({>WiD&BuBxpZ?MbVT;YhsWL1jDHcjX;N1=1%eCv{5*ys~!!} z>@a-V9Z`0D8S`}`e~|E#%6wU5rq;}`NkeGy=S>bXKG%@`Vq6#3=UnYN&QR-Qso_|& z(w&duK7a^7oBnCn#q2h!#c>2vQyg)vrn`<|9sKhIU=u`LHFE%&sr6>#}*K1oHNHc2BPT7S_#uloy>r@fER%Xs%l z{uOsJ&+P@fE-L}wP30LA>GWO_i1N@oV?RE5Jt7vCzLOO0eqJbC+Z7qPBme${rCP={(UWv8~*^whURxBEHy+`Xy2eAnYUypd7zLd z+?70bT3`>9DOm1kSCKT(#_1;BKie_2m`}?kSY#-$4b(ExnG48S=+@q#yQph5T7^r5 zZ}TT}SKkiOu}uxXp+FHer@rI1&?FURSjX(wqpLlg5~~oGG@`eYK`9C-P0tq~WuSv7hKsj03t_ilP}CE^i)+tRv>NgzWxgR7p&8 zI!?=DtMVtk(hKH;KnW!^LwCw+nDI7@K3>Z@!NRGgo%ef8loaDyo)Z=>>wzl14wJ;c zSgVuHbnBxRec*}EQJqr+Omam#jns++CEss|r(nSvX z^}gR&buZnVwhD%w@Wk~28VMDgLsTV2)vZaBee>&yvyxK%yZbwFQ!_2BI6_9~Mzm7mCGvnGxz%$J5yUYewj!1T2oltDKk%MkdCZ+F)h zR%~hCWU&gx(xGHqWTqKA#=jrb`o6t?eYZ%+aL;oAg?D6$Vn{dRCh_{*b4l>ex?HcU z;2wkOVhaTZhW7Wmd~|U5qb%y9_A9JtZBGnP2A{uL!HTKi#RbfZO-ZcbSH-0_&W@0O zh=poq+XnhPgktl3VYvwts1Me_zVhqf-pcqsxieG= zbTPJOKe~aV(d0<^91Iiu=M*jFiV-jJT9dI0Vps=fC5Fk*%P6AjbzTLniVogCp3Oz2 zez{iP_njvw*DtOotFS74Erook{8Z{uG%3XOe&^;$CousTMH=Gc3kTGwN2wLt2J))ouI zpvc{#Ks^eGFFxZ)(l1NE>Jr7oH>6wMTHW=;X}T}e%DEh3&R3EnCZ~!yCh8evUmCg^Ae-(tN`MsQ?{F6 zedAU0Jf|2=Jh}|WyoxAUi4Cj=;g5TS{n~jDh1i+^aE^;|aXG-3>dsA-LwCupG_ynR z8qZJm5}$8VZ4O*yxas#fk`}HBk?GJirzy#e9#4utaVC$65$m6in2ff0)#?10>t7w&$qz?@q;K#CGN$1d6^WL4&uRU6I=h*0&D;Y}qWWrI0=uzAC zUGf~SOeaD!$%31LL*88xmKL!sT$_G;kdBQ!y4L!=uFr^~DYjy%o8g=O;n5ABaX!yh zF(4A#&b82Yn{nWXxs~$?2>!8r36a=z*s!PXUf37(D zb7J#3j{wD9b+hJacNUd6^AF3W_Fcp!qUYE0vO$&Z__Gft93x6RZ~kp=C__?@=~&WK zV3|0{v@h(MMxTb&l_b!ol}Epv5r;FxMHKKQx7=U|#%%cc6e}y^6x;l)dWRQ)lv8d; zs`ZO0lu}pn6GW!dlYX+`?hJZHP$%UyQ!W)T^w(KpEbRkigV*byL8*vlH{68hVbc&> zPJM$5=lNiPzDmUbxziDXV&H7!eNWUszG7%1uZ~ds%3^Y_pqI+b@m5NpSWt#WDibz^ znI1A-S#J`l8AzqFf9a|)1=#R8`k1cB1&dTKsV;d%%q3V4J{y@n?*yalMDsE{E)+_^ zG45^@M38FV8w6k&(?+_N4O5YXobT>r5Z)eQUg-%%N7zv$y!1ht-da-qR2-GYv#F&P zvQ0_EgIo{W5G^fRE*5AK%=a48Jv6vPDifj}%c4i7TSQkv{&o7YVL;{o0d19ksuVW& zrCe1gb(8>(jyGf%=!`RLS&IL~&@JlMeRJwki z^6sX<+-*jjqk%C&iUI=kujDhpyKhJhj*^cnSBd^$l?RWfRunxp8%}H8I%jvi{#>{Q zhaV1ZSJ$_e^m!@sbv@l@k8h7Ec|8Q5rE~KEE~qF`tJW6cCmT`4C!Cn;S0gAT=|A7E zEpR1=V(Pnw(U;gRDUs>EQ}9z$xF}zMS;tax9}UJ-hNdH?t2VzbfX7hxA%Hgm0u^f}SlJvy&=NK2xT{u1L(Ha}6rR7To4b8cP+Vc^q&neK z+5U%b3eO1D%~X9g2$c0X_M*+$6_I%d(rR&EYIt-ZbR?(Zl0SxIWq$T-CBGQ2Xu51K zv)L3`OLgwvRIJqu=s}07UYs*Fpx~l1-agy^adU4*==%a|h+t7SM<`LS>;J5vABkZE zrFoYQ*~@WnY&EiDF>eYc>DDQcB*C6vm9Dl0d0EI2F2+k$ld2YE6Z~%6hS&Of>RX?u zBK&7BSO}3F;fO-QZ9XDx8{j+A3tzEMV}b?Qjv+0XsBvvekh5n5$MUpQKs9~%7|Ate|gFBZL>WC z8j(b$y_~M`^mZb5H0zydJ{69iUbO;%FL>Sp4|}KXx~G|mD=+phr)eS!gMinE=(mTb zg|nzak;da4gZqcIi`JyM)~EfM!<*KSkewrsmm0xWySJA0U>4vqiD6>l`DE{YNYd`s z=*n?p>C5QxWu3>WEl;5cNm+MSyV4iF(1@D1YpYsaucx_{QBSw8B5w}bfL`>w)}5=p z8~1l7r9+>L?m`L|dV%%A#J!flrOZJu9edY>k6#o&W+#mwRf(L6WW3@C%R9ZlP~I90 z3A{IAS$P79a@+7-KS3QGJb7I6;r;OyohIFtqjS`Wwa=e*LxAY1RQR7;;oHyG@mrHbfF9xMt=?gzTZ zE^f~|HY%Fe`;|Rco_$2V;*0*b)=)y~TN7CiLzY~;P6ADY)NQz$cH=t6bV_hO_IAb2*k>urfvoi zl_~(}+aBXfpY^*pgZnX=MOa~b#T6HG2z>g27Rr;2mo`C05t78pNw=w0-56E&o{+}D z_{DORIs2R5!>SFR3M^9{Ym?`sh5cPe=Q5nUqQ_|T^X8|8k5}q+)_p0K_knM11{L#@ zPbV{v4tI_(gR-|*A}43U=_=Co26MCLy?a+zho`;H>6{F~&4l?{k#D_w?j^+OSF{>| zh)X|q@2PyxNfwmS8k54Up?-wgFnp~lk>V9aj|G<`{+P$!(e={WbwNQ8zWSzZ?(P4S zRTKfxie|~MYKv+78oZ#*?~40$@_K$~$B<4uFpchwO?C@6E#^&RL@OJSPr(~6d}dLq zF|;cAtWFmFK}JQU2t)N7M`;k_E*1ls9Mi%FxH!d@&NAN(LY8~Yk+wms`LZ^)v|Ml% z+l#Emmty>6-LH(VPit1~0u^U{c}rib*f=(17q#uS~Psh&5e&&K|&hb$oS6=35iGJ|IZ> zC((S1DQaqP@7VBd#?)K1b0(D3p51e7T^byn5x^ZbXud5ed|7QL&Tu*Mv^4Tew%qoG(kV=j4KxZ?a2X2 zg2`jj7>#kYm?(Xtf0gw16zIB`?uOjI(!uOIm?dL(>=d`({HyOPpmN*4A{wpO)`wQG z=jy?U@yPMr^7)3q{EQt>D@)Sxek{)9=ucA~ME!L(1y^FT_P`wc4I;(8FzdK>)56^y zwuiS}AC(b=Gq&d|7hi9;v!-}T)ckel(5m?xCbbnJ%8`}`t;KkpR_hvy@#fd=wb%ib zTYB|gr-aq@qZ9Y#&c3L`yX3evDeSSLO=!?z#|RXBb8`fK*9f9vakFa8HO6nXc%H(u`SMB}IJUA2 zr}&-&sGK}Soy1TaIf6N-!#vyAe?y5l6VC{)WMWqSn9i_dX|Ss=L6JTRPu<%*=v>jp z(2S(zgswll*Af?b_@N=E!px;N0V|_#i$5&zkTS|IepM!|LD=;8h$HRFcjY`AeIZaf znV9qF3oPHGyYhe>;~>h!hBVw}j-%fu5Ay;*U%u0^b&H3>=edA#f%8ntv;sGht^Ly~ zGK*8>Ik_d;%U=5d*3tH!1PPDI`&_;+hzd>2oZX*uWO?*Il|>`cIaGiLIwPZbTaDc0 z(-p8Nv~I~^`gp^$5q;#-Eyx>r@C?zx9B(Bp#6%zT`C@X~+j*uo>r?nMbLUhre?xAq zA5dJfr73WK=$M8zL(;f$M*jAiI@>zw_IN#b`Fc6f@7em|=mETYO?aC>d7L?XK5}6F z*!J2al5xxOJUIyM`3i=*l;+VS3}v*@+L$zWL-wE=`^06u8kAdf>g4Mk_wfhMB7{(oC_{Z7)dt*VR#Go6v+7Ta}BT>bojp6foz>hB|?_rZJ<#GzwOv1JB9<{ODCW_xom@s_LByeKpQ0nFb8 z8k^#~G^iRebo&fYv~ZghP!@RD_?4p>SD&4nISV*SsT0*D&waEf>r7Jnm%@&g8@T}M z$B1}`N9@{G0|D8)F-qxg)k`>??n;KU6k9MiO%?13j*ZX#(i`>zf`bpH4UTRQ3k+`A2}dqRmTV6c+Aia|evB~ct404B!*odaj=!u`uXPYwh*p#m zemrX*t=_I0c>}d8H(jORBQ-EwGQfWmlObW&V`n^sMnF=9yY|qgbqvDK5zCc(rY4BZvkz{Luh~67YN9>vI8=o`8o*XtnRw?b)!@T#(>5h-T z;7C|UFIpf{dQy9=To&;bKWnXF)tH|)7%5WFi!Huy(lA5v$m@2?c=|{0Xap)_<0vgs*W}Ll`ihmZ51dh z53@s5I6OBc2Os)9b9+-;Zf7x-gI6Nxd8cBFzRw?^Y4$hSYcTd)aJM#^OtH=P-^^LK zbVII48EcGsdwN(amgyVX3+ndGs>-EMm*Xg|>d#Go{ux?K^~LnS^TDy1|5wUQY0^Og zd2|a9EVzihu6q%TkdCzF*d1{8DZPq$o#0FFs20JhTLgi! z)SC?Ba8l;CqfYqpCJHOqW$ z67x=0Racs28k}2=TMKxWWObeNt%up-s0N7|DPN^|WH}T+jPr`I@8ls`*jm=6oU1E$MtDzbDAtGx$JM2mr*qB>>c6h;2}hJk(r_n zq1C|tY_L81yvWhOLY1^j9?@OF2u7vAfcU7r5S8};+uD)+{7Kd3;2k9fzO<~Is%tZu z*94>V5*brP*`x77ePNf_np)TTqKyLH%~CPZ-9h9XU*=m0ik%RiMYl!1{dfKp3&NTn zfxLiD6&DK}cEG|aRNPs0S?c>QLmI8a#&L{SMX6U}5%g!K`a;;A5)3r@#Y|wS%`@e` zoP$~R0Oh%O{8|Kv9v13l^7Y&{!%UVWDfVTYpn>8fFz z^Dqtkv5a=Y-1l+X5%PL#oVl*=v3+^aH_+!fCmR^Q@(l};PS~85uR5q2i^}CY250)} zhvx`P#gNfd=I%-!7F>=MEs~0zyj%_o`p#dS6G^RwsA-)QkM9h3IDqeY1>cD9(1o{n zZTcIVwh1<e0J2)1M{6YfOFO~ z`8K4p9Cbe-9DC0aAJM2X$0w^2^VGW4kofYP`uS?cf&jDq;LiGnv?Do#D%WOzIh;t} zT()@s<@H?aYz{KmVq+rCNs&&nmGH-a@VTUO8O#Bj1+^~b{W4Nqi`0l;&|+QM3UnK| zohxpPR8b_O+|W4Qr|l)f%_qK3aakNs5o^lWd7^1{2ucF5rU+~b zg(2Ikd4AbMtq+{e*5LkvGIN7(SJ=OL_%!0B>;O?onD`?t%DK&tCwu$?q6V%#)*QY) z1yWIe<4#)M!NjuS7N`9qy$pIg_T-|)cb;4SmDJoul}-6U4p)elgrEF=>(r17DLQSi z&@|^GAK}{%c?S{QA(shRNW*^+=zy@VA43(R~{g1hAqVPwEj7L2b3d#i+VkyIKWIt9I)qyIhqB%1g+oC zSG#b4tOkM^$Cdz8gdL1GuJ!w=dA085qhvQ43%U>~7PxG|w>fEx1NbK{AlCi32N8$J zucZ^It}T#w;RQD?E(z$boGr3`rzmfVV1IK^hGcbzM9Nrq7k=U1$K~^T4OM}s8#@@) z<;@WM2u_q|CrYYN-^)~>enp43@UM*?`QdD;l+SeOO-|ejfP^H4EepSr!k3ku@i_wo zXPM+Xy!5GvoL~moEvXuv8E#0i#jlxk7kuF($ZBviCAUI9TCEU<_KUIQaI5VmN|rPs ze54z(&c(r%Xp{EPg!D@c>*N|FYBCUxc5hN;a}C{d-%%eKjKNkMUt`~VxDEf&x`Z@z zTpX-`s{#Op;~@D+xBn4d^jG-ozrzoHhX)dix0m>EU)xVZUV2);%t+0q)mk^WNM)(8 zK({G(VIJl4Nunl|;NHZY#Ml-FczU!)P8Z>>FNP{tTKi(OrxEzKW$IG9px^A3rP@7A zS}XO?p?;lOoE@MT`E9 zW8n(bWp+dPJryZ4EG=p`(2ZX@kWedad{8F;?9?dnZH;7oQv6CXw@e~}O~5|!5clP$ z?)9Vdwe%j1)}Y$arT0~xELL%-$#}#;&IH-G&CZgmR*A)@gjf|(pSwp4D8_-J$WaKZ z67IW=m$3J_F>1R_vuZVVX|l6gxPb?E{Pr!F_K&(8L=(dl^4a#wk10~Xc?A)P@;Qxb zy~y?N>wtu>ZnFSncKV`F8o>&)2vuKg`j5$kYpW)i%v>GDO01fry>m563acmQv>qw4X8QJzXdy0_ zCkw;<&Tp^Op%@p_mnRV-5a=Ngq8Z-h&oXCyC8mDQ(+F22=U%EIbo5J7QA(8G%fE+A zK;%GIGMAhb+9a5;aQRXs!-UrelhJZf0@+hyfyQ(rVk;1q<9G1hW9-su#W( zPP>YaNRjeCY#+b=7aO0;|0f&mkh?$61(L)uzr!iQemsgOX?uURaA?`abvu3X4d~bw)UYNkIxVFgI-jQ#t-z(>6eJr@9?P zcmiMaQBavz8C|*e>1@y}Pv_i94~lX{c3H82)byd2bS3PB+u^aKKuYv7QnNU7Kv>IE zN%WFW$h#tnJexros*MmRFC`j8PD*6J^lx(rMD+?%T~W9~W0Cgu=*mgwnx&p_!8F+5 zD|G*7Hfe{TGSA!tkB1HeBGQ`wm*TO0^%JSc;s&sgWF{$X5#dC`2zPoXwN*GUpPQd? zCA`^FZHQf`HM-t@I(J4$hTU9lsY6mOHqb@LyJTj9Y5*#$B56GTq$jlMh^Kuq$tHar zE`4=ue!P6B@(h=%MN3Q&`QFfxq8VjCEAXBsq;lep3NbI0?vbkwE_zkZ=uWeu zoh-3CTS7xaEC|w_Efkmnp58H!LM2r zxLc?U!)Du0#$TQYjn8iwk{qT_^CvXA(IJ9S&X6q)`*8qRv#EbAtn^(>3ege#i^nDh1Ussev z5{@Ke0R!U~^4g4{vdWkgz6DmVZSyQ0B)%5#C`Cr;4aj(c55}oPOQlrdbeV*srfla| zreXb9HCwBOjMV9h{@lx05U~&`;-pSsYH*TBq5VUMlf}8yVd9t4)n*)j6rhD-{qTwI}m8jTEJ+x+(<=IkLZfFA4qj-5sJW z@91-4#&%BV%1!vEZ>eDrB~AXfq<^ba zBdG(a?1lZU5(>OJ*<`T!(3^G7Oaj*q!Cwa4<}hu}&Ao z^pDL{tZ%E7JYxIo$n~}3t+E4bs%IteBCdQLuJK99rR_+)Dlti4YvJt za#~mnF8cAn)N|@7fUKrWCkFTrm+N<*QNFLdoX(@`tMXqIaGZ-PIvQ1eH67oCI$5Sp z`i@-1bOW>4#~o&evGPmzL!6GSxgn;>cAEA8O@~$b@Qz+Dlq6xffcn?ess|nW$vt=V2O5 zX(qzVy|>c`QjmlU!<^^8>;CR;F`E znSK>A9=lP-?WvL@c2e}tY1pYqANH~@XPRkfrXueh$F7HZzeG1mcgegutd6b8vqaTK zMpWzu(eD-d;9+B}lku%pq%A901y5E#1kK8Im2rmUak&2AX8#~^OsOKOaCY}$&nh>< z!ls6WwXkr>kjs-0X5#a&>eJpH+0z!ONIuw_8$-~aP(gP(3s#>WU1wd4B=jM$eSn_S-}-V z?<}3US>$io>m~S%TeqqcJs9p3<^fbqRg?=6Y?$FVf_)4jRN5xIjOaBEjUQ#xs%I>< zO|sXgj6qxRS|Kkrt6S@*DySRHIb-<7H4B`?E-yO_#_nLMW}rcecHI`4As=HmM(@Y4 z-_&w{P-B3oVdZ}BzQ>x^=aCbQ|Dbj?8wF7daQ{g?O@$eb@_$fYbo9Zug=HD7dpEyt zH-VYj-y6qmS~ywNC)&Q# zjq!Vzo&T=UYZmD*@>`c75V;!cALNZ}oS5Ov{|EV$vFzqURMN(((_iF0#6{u;nuJh!)RHuJ_Dw!a#Am^MC9VuyP{R!j%rks`h)8x zuSKZXfx@;>IB`ugc(~7o*Yag0&qxV~NjAIkM{jiHCsn%V}q z^HDA1r#$;}t~xr9%;u%A*zIV8IR-V*s4dt5!QTNcXxNUW)l%{E-p5{KvddCb81II&>Q8Nu$A5IrIUT|rd1jy$ZM&DIxHD%ZCx4WkU56E zM$dk{kz2E?vJV?ZADtfDf!04%_#h;@b*9i}^v3w~;2_};ycW&SUJyJNoB9LY&;VF) z&?TwDS!Dj6GnPFt!G0u@mVwZX!IU`spk2o%WGEq+xL+vvN2n%J*>9vQMKru(dC1?( zB-D^U=L}>h_!cw>t?f6OyI47_Zpg)NG!}_S9iBW(l2r3}OU34H_2Ld&&t$ZF{4fwTpE z+h~xvKaSI5I8SXT+OEOX)^#%Ytsn6mC?ACTRpCBh*mfcZ9);tVSotfMs;HecxD%-X zDQKJF4$drt!7_w+1aGK(j4<`F4eSc92T`6S4fcx6vYvAEKjI?Aev88kIv2mN85%a( zK=3QgxpN4&5KkPIF1I2~L)uffvVm#|#3K4n{caI6TMhR%fyCAKN)o8Md-D%-GiwQ9xH0WWWH{(Xw#7HF_ z)MfirPP~2ma3cY&>L0+X-u1fW8g*L|D&`k9ARq|y zuy$BKznVm@V%Nx#%5=8;?3UmZ>@fX@tDBrp ztH4Do%DDhdGSdF4PlMZV&!>XcWVWW1;nGrb9bU!$f2EZCe+@ zBI0G}8TtlAM`0v-=vmHUf7%np#8>h)JfkN&u35e;`VZjIh^{e@_4fQ%rT5}W?T+wl zohYoG{l=UQyy(_qDOp|F+0yiLz2c7r>d^=`@#Op!wp!mx9KCv;bw346LtG(JckFxh zD9MgZf;q^IRfbEG?uD4*j;47zU(~IWU)gku#qnRMNzrXOZsq$g|K?!;h?y5RW|QwN zfba2SOzu-m7`hUSJVU`i*Ebar<4jL|_f*%0M4WOof6`EoT*2L2@D?cLPTrvX3H*gX zb4(ZZkOF2O_TcgZuJ2j-7sd_R`C>k^g)SiWp?>2?G2@~5JJxyAxl~uZ&D!TZt#$by zssL)4u}a7>0J}rRto@995Wn&sD0x8-@JNWpK#1IctK;wJp$}WEow2z0w#Jk4$4u;31Cg)^@T zKm;WLa%?hX5(hDfD2Iaf3KI{jZnDx-dq}wRNaf?xv*cjH+P)T-y-~8!6_drv(*8b- z+EyXuo+Vfl)!u>>1=^KFbvVz}OBasPvEAvFP5TRHkFbc;Z=#OLO4stViRTdlZ@nYr z4p0vK9-w!Mj~&QogV{y=#l(;YOGARMaVv?j=N0uo>o1*dY3$qvJ=FhTY>Pa5e(u`( z)}`~`rJBt0{H2P^QQkQ8yeuLk`d9uOV2cfo3)nj^UwqE(d}b^{Gga#7Y*zc)o#&xd zXsZ3iu4QdM!3ARwyi3eB8%R`8B{#hbQml92?V*PK!o7PgGpqX*s;@7mkx;@UGXx*q zJiuQH1z1P{mZ5fh_*h~uIYZP8bYc3gu~9iLCHE}DRfcb}KJ=huL;`vXy{W4-NRIfu zxU__B4ceeUNw7pQZ!VVmr%pMC`?u=)0I5)7l(GZ(jCs@2ta%A4;SXr)+sE!cV1=+B&$ zD{@e5SZ9p8Rj!5{?N~#1UP>(6-bgGLZN8@qKmZc4+}Ar{r82v3JZBdMko4qb3OLXb zK&qe5EIcWsTzc+2tDke!Z-!(--rPXY-{;_`Api>$MMj8{ulf7pyh~lUH`)V8N}@}# zpXqN;OR~mgp+!ERtDhfxc2`DXvbuCX{TBR;Mt!r&=L`}Y@E^eeS;f#Ie+usYE%^Mm z;0l6c7gx3i&12gRFK7{U5-o=N1d?IfQj%f$zkuDlD-!~v{{^hv^4Tm3cYFX0`}z6? zs8-On&MSibEYEbGvoGq??uP&@8Yln}%|w?FSh<=B{R23%4*{4IKUKW>9$Exh4GQ}i zuhQ+M&CB4t<3UUbS|ozoVo5E(mQ55|#HW4Z8(k&O1gKRF5qQ9-Y{Zfca$Q}#X?b*= zyV?u*8R_l1mfTNNw7DR*apVc|GdPC;tkCYB%nu*|NmBr&#I$YQxSQqNJLC!(=D5k3 z{{9gATK!xic{cE3)@AW|Fh3w`;9tf3UvuM{`(QGlLp!pK0?KbTz@>c?R8e+l5rD`2 zCFm#&z52s<+|z9>zu@+Z?35lub^?aUpUCqt0@|DJ`b79(g-O`U^@qg*^%ug;=^R5- zFw?&12Ux_Evx*iXe0MA%eA(gM2!yu_*o5k4n;4=(QzUH*CtY>= z)n(4YPKvhot ziy|x^x9Og>*>wKE4mAiL<%S+5&>>K_sBmkisYt_XSS$AXUB6V6BN^{H_J0F7D*XmH z3i|`V;m$2!2WqetZt$dwIBIdjoxdzy(V@*EFapAoKQoLVXtU|!_5hU-@FAt$Z>MQQ z-EXJA7Z1UK&>Ic1`$D+eacjNoF9mvmQ+-6v5PqBPh&F>En3nvwJaFBPJ10{lyzAfC zy}$<@6NtH=8V=sN*U$Oi;dGFLJNGZw zIH-iweh~PbZ9q2l)+;WNeZtL0DCG_vh zH^t-%JkOK!$CXv^eVtQt=p$d0&%+g+xHckzDOhAaC#y{^yj+nT#eKG|YlF4Io(+hl zMl3;HY%AjoxC&qq$`9u`FrI}9h0`q-8RtJDJdYvukK(&`O{6QCcm^Qxk{s;=4;$=q zUMZ3D#VD29OfcWz6a$&hpF=PpsH!h{AFD@SECX= zw)58)0yDo>nimfVTmJI>277~(C>`v(dHHDS&G zAIip{G^s)BWy0`x$cC3jmU##?+mi#JIVbBsf- z!c~1^1LlR%5qwtGYW9pW|ACR`DQ|X50H>Kks9g;^OLC;;FR8^cJt|G=$&s%wb{=I& z>wAgX@7NheZz@LQMNz&b>^{y|z|`v$P+$BjE@XlY zPe)n_sXzc}Kxff8X@QFfR`n*S`{%!?SV2^H5x=Qe!~0D(t0#F(K{nZwJy=ORZB2$+ zG#(9QGZU}{B(AjIwTW?7vzuuq9zQ0g`03L!jJmi^An}{z8`ga!^QtO&Po-JF#&Ff% zg}fNA+<b8NBEgyGo0wp*!Tv(4isXd;uGU}+bx;s=td1ml=s>o_&Ax3~Kj|a(m^$}s zH#a+Cau3NALH(#b)>rrv0=&XWryw^L>X;v>F+aTD>juC>VZu?P$;UJlS$csNQux`6 zcBeh%8q)$xUBrXqDpIYAzyQUv$~m~oIleVKNK{!2 zw`lXRg9l?m!%iI97Y9j*8`5;$Izu@puTT}AzKeh!UHt%7{Zogm;zoAQViq%D7`0oy zMDQxIdA4{CDuozy079xLG|M@4dWI871id<*2e_pO^p)mu5CT=C@U$}c`fgyhI7_xT zVg|t@3^s&~E$U+7H&(5o1r%&29`%l}z-$OHXoKtk>{ypA{kbFE;FL4ihWqk)c55KptWoLib05rvaXQWvNrNA=bSUyz zLH~_g^pfw*Yvjg?L!ySe*?wjvm|R3G(*Xgg{sn~n8%XcpKz6@@W_`!nfigL-mh*6Q z5o^Wf;exifF@GQkmV)LMM;2R5I?#JRa#h+T_!Mb`^Ng4vEI7K^uUOx15$Z#*jzko7 zMe_defhFzFK~(FO%j%_%7m0=MuH8lfX(K{pFd4Xt9V;%LU@x$cy*=lX&tR9u_W0-cbK} zZr|7=V1|zi49vL_1`Pk7=k~R%K7W$3urN3M{O1vVAA_V^>6(+L2kiQzex=MrFtXuM zp9u_z0mIRqir2+;=$gUh)6HpXWhLs_S=KG+X#aZqijW|a5l(Aodl_*<+S=aCD*!bu z$t_JOOA~d}&4_1Z&~3t)m-o4I;biY)^9t3#Uii&f_}WWxa}u(V4NG{))td`UpzP(H zwU5=#Z4`IqsEgC(jKx#UB8{)T2u`t+Q>&=sPfjg!0sW*0_f}e)?nc4 zX1%jA>XX;`z})PA2K4n1Hfk$wxpmJieB*mF8Fh{y%nC{iX-wMn^lfT)TiJDX>P@>j zwYu><;aQrGi&xs0rYGUOsxmSP$z0A3S?OQ+>05z(x%#?u@t$RJP@vM@k#`d>wk~Xx z#oe9^aOF*-bMBLHoNBud)I4741n>YV7v?ps%U_yaovaviU?i9MBUNsvT&;PowyZ8v z<+GDQ&VbKt>$bQgS@8lNJfE4Re!lp=Evy;T2nyK~_v{w-uUr9>i1`RtUTcJi1c>=b z1m9eq1=h>%T3ahOm|Rgy=PHL^sLDIbFeF6A=3D1{oGh9bPb^#K$i3M4iR30l@^RUH zAF5U?QD934=U!UVZ`O>4H9A=`H#P(&#)}^+u76&cygYb2HNW0&kks6z@LjX9J-h;| zUv7JUE%)4=v9CEiQY@&1`D?7bEDhm5ay z`g&)}!3v!b=ZX*~Rvvy&*RL_m>wR{9EZx7RX^p6sAOMseGZCR;$&;YGzSXX6HRq1V z3o+pyR`~Fg)pJwT?XeQz0tTt92Pv#AC1<0QW+#%1GT>DN)cRd-(?TdzYweoUGPBl1 zqs}aO;C7ytkhAZBu7M;SS!-Rvpr(UOP!k@giR1Q0#7mp-wc}w+28pY);&yU$`NmGB zIz96?rPT;$rGNiq`{s~&7n-NwDD~m|)^XBpMj{~XwQ9p&^;XYx)Dg~BiltI1e9c-5 z5NW~-RM1&p+h{Bu)b+}Zdnq62VVMjM*`3(~9TjYUa(NguEQ!tHaU+Q$ECP1Hd+rv_ z?H9fn^n{RjFg{X2cANh!oU=CqRFoIaaM|{&3u2?sm5bE!a^-k)EQUeUC zRmY<9v4=F-nbsRN{`LlV06E?t!>{h$upUDQrKvD zs$tH^v(MssPb_V}Y!u;8&Scumm!%hUW`T+tCNTnOJ~yY`_3fyJ(fF%{4-TtLtui7W zrFJ!R*)Y@Eo9=7Jat3_kebX6xTjMRxS{w?x3H#eq!_q>$S%`Scy<@vkh1;lra6B`# z*Z4^uM4(btK7uyIq8@Y^x@`@_JeHdtP)>5C!cQ#VMXL+HTbj{0(&7EyrjNP+dk9?# zQA#h?Nz~ZK7}xjq10fhy(wp+|+7zo0yk+S2;N$l?5c8o8ex7oDdSD@9JxqSR_**z# zA0r(QH_u0k8^BQ1)Il9|%b*U@6HrGCsG~}{3EJV`5QOt^jbJaS1f5jdzX$y*`u8CB zaXWCrf}-Cjb-&^NK>7QCzoY!`D)6`(p&gRHFGKLkPuYVL!dNwep#%njz_|XQ^)E@w z5Jybt0MIaa&@h|7hIIk#5jR<->VM;`LGU6?|Hk?IfWLXJlCFcE)gxaA4Z{Ep`)v)y z#;H{H5#{#kGU_RKmuy#$`nggzz6}iMJ?qOP!qhl=137rigrzw-NpGCEjeKof``|Qq zC+nvdK*;7*8a-J$zLj4j0zite*)V?Fe?AS_-OU*3xxa*tRP0(ZWeLb zIYuUqnB7>~HB=O0HQN}!A!sOli4Hd_du?WJ-@3Vs_BkBhpL-mA__=ibY*jt3??e=O z6|B~L%9}pnjh^y+W8Uoj!q?pC7Hld~K0j)3yLr<)96hR(W;gA#{?l(_#_d}Y*QvwJ zo?RAD@?qv|GD)C$Rs57c$&ySX1LrPh&&H>(wWHDYBW_Us7q%8h*MkrQUIMeoAc?OX&u1`=_g@Bj> z|3WQfB_#?$Au@MESu0D@<7MO}jZ;*PO~H~cS27go?|njQErrvat3C_z2!EX+{N+wK z12I<#Q&Ndu1l;iFXD2CIwXrEBCDsabFGKI!=?GjrLkn#ed#r@p_L+{?qj&DQZ#0qlLF2NNQsb%5jk;2yGIM=b9o@!V2B$7n~tj3OCgSt-UUDSBkFNCnCc8 z*=f%&JNy|QMoQfsJMn_A)kDZGPD|bo&(G0P!fCs}E8UlwospX7IuS!|LirNr=cc7I z9u`6-dsM*xBkV1J<5;pTVKFl^Gc#LYF}0YPnI&6fF*7qWGcz-@EM}I)wq(J!-#n3rzMW`7`59Tg;Dq2b|0_jw#^*l_+qC)QTvpHdI2i? zd?JbT>cf+1-V^op>YUm88SG}rS1R~(qb3Dj#qLSsR$fK+i@Lu3yPFnSN4GFkY)KaE zJJT;S$R}YJdPdv~mn~Dp70zCS&JNX_*)}uwrfx7QDC~ew<^;}DJfBA7exr(r1hqZF zIE|z3gOM)7D7j9?)T*#TKf22V3VpF`TfxOQ-?>-W$TJ8W6dy7 zyQuRZC8sCJ1!u;j_kL#etA`hZ&n}WX?f@*t#ZtY8jzF$^^sT)v(#W7w!>4Um-4`*y z){6UCTNjy+b9^f{!}euXYA#PP{PEa)i=jTKzF_^S`oz9Kb-K(-RU#oIsuy9;VYE5f zv9tQ1wYPnzk4VXV8k$3sqO|ejl>3j1wdC~3X}w!Z19n5uuRL`Ar3c9ai?>bHPP}WX z0V(#yCUSwmbzqHaZcsv(M~urcHMkP#j^GB>JJ#lKVPNB@{r7a^dtC@&kdd%iSPE}Q$U)}xr6MMEstD>wK8MgPYAeS@*{b~Y1B1Cx~k;eJ1!-cCu5@vonYub*|?tXnoJ; zM@qZ2V`FqK<~%=w$G z&kgvNo5q=!%AqHAglpeTZtJ#^BDa~(&d^}@?^Fl_l;jPrv5CL7yK(S3zB_&QKV$E) z|1#bpG-Iohtbr7|?&$JZd|*4)ai=^==-!nIXb{!+D8GnyC!UmbSMkwlf6A6p<({T| zYSANvtQT#%@}#Im*3$+1R{N|00P{t~o;PE>PSz{OppTy%SPJE%s60$2t#(}Wo=G%+Y&+*Z%AERyf zi9bK1pdWb3MUAtvLQ!SNl9R%ONq-`tI`m6>07nTiGeZ#@X(GZ^aW<9v?T_GcW z#NTa~9$MXTSe0FK)un@2rZ3}$&YqnOG3VtI5aLZ5KkwwV@CWQPdslO@R5SM$=L2;G#6Xj`rc0Wtf=b4RBMs7 z&;h{okYY2-g^?Vwb1>6goNaRGIRb!YZP>l9FI!R`Tu2X2@tgV=7(uIr8K_ zOSrxHUV0YaWT_{eT2hKEel_96kx5lwu_FN{V*T>!5*l*2NDGyDb>OVyj(r{ns2`ce zHQmhe-p?c#5v0;lwFz21s<1lFDp9IVUgpF7euOM`^;)tpL;KCt=(6XBna|Wlxo=sk z7u~4VQ;tQ+Qr!#KF8nXI3@pFbk&(B6$>&{pu$-wF^_D&Yf?Hp^9w^{QGj!P?b%qct zHEl3BeEmDT8-rG20_^bZcjQsBq9xB>b0;LkUR&mBZ*9A;zafA>CPW&OOBmqbjWl|` zT=#YUNje<1%|r9kTBP@&@{~Ika~WEKOkU6DY%w;!fLqEG#(Ad&}na4{1eR z=%y4uM_slYCWf0mkM=dJcJI5B(&c-RUFi?KI6`8i<8>|1OB&KnC!^8iz6~Q3pEcW$ z0g_W<2+WXUM&oSufuH*m}30Z z5VtwV3ml;(TBMEp?ReP-Bbc13_KS<;-nJ$mkXtnM?zSm=?3aaZ+~I9k0h1q4t9gKr z&CKz>pXLCq-m*^atgFFpe=kuaExV<^q^3AJ{3Z2g$!Zs0)Sxtn(VaE(SB&fE;z8lv z?I?)NOk1u+KnM4=^2^Vdab4|Ib< zZH$m?X6oOc^F(#krPWmeTVfm763W-p3YA+u6Q#Ua8b3`MtX86=f7!RD_UFd73p951 zx92#Na-d27T;}XZCfXnL9aeg8bN_Yc(di-ElI_J6y1Np(3E@N&ty1o{=e!6#xB_VGf{tTOZ_vrwC;{yL60gEeA z(^WAj4kNhevQDL3U-sh)O@l+Km(9H)aJ-9wdb4usViKt!B+BM63HU_u6wxDL#gXYbAKYqQ+#14bcuHWop##pM4HZ(+s-CVOa8a#9fgakL z(p`0{y0gDH8z;8kpn~i%u~*G`R*iX+GFuJjPz~!KFBsYygRq5o0#d5)x>v1rR&9iY z!w3ESX$2%I#XtYNTCGHK*3$-~eSWXnjM+xOrTy0fI|Xyc<&x-kH+LI(PaELcDV5;? z9h(82Lyvm2 zLrk}14Y*d@W~D?8V}m+251q{d+jr>>K#F_S;})8$@j~5u2vc>aZ`@2C+FT%ECx0tX|fY zdgSH!sVl>$k0kxE*P}uETwa1IB8_2Et4*VGWuMdhb=U%}NK8rE{HH`!oqWy*yZwR* z$m42>Gh4(F*?hE(bj*h*YGd(g{ZIxM#bck5{xT z%5;yJDn??Jwrc=T0+@G3fDwk`AVSCk@)@yf-$-+j3MmMPC_Bp##^M~}0Zqr+#A@|4 z(G`FN1ZL^83*Hfnx?k6HABeEM(3o2&44rI*xhMn%r8p|tn0`n?K}ZsY+4ETk0t^!o zO+<#yFBGymJ@mTL3O%c^zO05X+K?k(DwxQ`=Jqipmi4C$gJ4j|KnUxc7|&G0K>Fqo z5Lh2MB1E}Ov0cZBuK;2HGb9S=ze8TESpY-2UH%o4?&v!GDOgv0ufBK+`Eulj4JkKSS zcz|jvO6{*LzkY@g&cn)BqzSDDJG2Xd0df8C?S{U z(XI_K043I#bc-t-20{wP&jEUkTj(`hq1QNJg9?*A*KTWtiSxY56$Hb_7R+mds>vSA z8mN=j4}+@tI+h3iR705!hYEs|;ZItY!#B?`Lv7ldF#$Xq{%6xHYeRsvKa#8xlHGWS zLI{3_pbCN6zg_w%Gk1jj3UQ0ew9qm2ie+VB{3Viu8Iuf!o21R%5%0hG$cRE1Q@Jwf zXhTZ8HzSe;#K;--p!k1M!C`L;#*ISpAC5)fGyI{wP>urXmye5Md~QV`q0iIyr@?&w z&kY73B>Odb=k)k=2b}j!+k6FP1w8sLUpr2($^7Xdpc|4APzds#eGKE?>G!RBU&&Q` z-r78vf0wNBqMeog5z%jYTbKH0ts- zYKeBNl`MP_KUtNrJ+=Lr+x*uYkwv8 zLM1VDV}DnXb1_t}{&?1udabFVaivBB_0iU(c91XfM-S?UzK;w?&sbC46i4qIj_7um zI~zhxY#d^I|Dwal;^^k(^k&fLPRA&5hY^7|CA|I=VXMqSlz0ZF+M4DW z29{Cz4vQo(5*jBovOBtNB~Z1wgBO1bTixkd{Q9lSdB=;UOSAk3yiJpeK-m7Gh zYIksIeeo2`MZy`b)a(_NGkX$v(-{rM^M*odO%*0CQk!9FiS>QS^?P5FEWP8cjMA-q z@>xTAFzN74WUU4-90vXqrDK(NWRD^viNSrn@aARuLfrjrlD0 zL6}cZP@EN;c|}~`C|#6^AIou)o{JQQb2h)eC1CA60`Z0}QghLwnb{Z_*r%B}M&?>S z#}9bB$+^D)T}#XCPS3n~+4%WVUF%^t&|>7PWER=|p0LnurY|H8YT*91K4}T}3lP}f zW*T@$&rMSQ2&G^OePqURjx2wuPcpL!g8ab?L{5HBt$v`-)J z&29^&wo@PX_YUECp9dQdX%#fAzbems*%cWGq)7~C5xSfwTX$2ExjTIsu9iPLkOZuXzVF8ld$bu`kOzi=!0(M z;xc^+Ubm#zO1_2Vy?teJsXq@C$FfO(&*iO|M?G1t>01s622Gx@JRy38R2!F&tv-E<==I=8quY=^>U- z7&w#}PCeQZS|nHnT2E|Y<|xx78ILZ(*d~6TDu!U^r}Wc4a|BwNpWLm2O1XU=nCD+W znVv#TCCOL@M=-@Jz*RI%vK-McSkJGjMVM#s!WCoxgYnWn5Xss{gxL^mY0fN1njyl` z=<<94Qp88PcS>j#W_}zdi!yx<3dM#vk3hpB!*M{baIKg^9cl>_QScYWzeJo1i*o!C z0c7?677;xp)+pPp|F;0vJlJ^z`Ys~#jY76_lVtsZvuAbdw{_PZ2l) zbBs@Y!X=~`ppX*b<~?baUueGq`TU6w#X*{36uep_5mnkV`b7B(Hbt5dzK>CWi~F}2 z=l`o1OAU_SR?U^P>FN3+%2e#XwYB-rHHjK{Z?G%0bNh1XZL-0;r?qu(zw^HMnXu6| zBk9%1rP4EPZMZjX|5)Iy_tLEPk?(wXdz;)B%Dh5uGCE zOv@~esiC+%5L}|P{TZ`*vtb`aQGe!1#6!db9~6(KmTYnF+G0`yEeTuLGU!giX#iz? zedtc|D!&VlSUUSoJ=JJZMLz=1Hm@rfUcRs^7!Rl2Y?v~yE9)xoF5r#}j6+dhyku}| zHYJ*ZhS_fp;pnlDhJf`s--iBZ`KQ!*Qfo(;OwOIMsv_tSqpl_15u<6{3?n@e=+Tia zaT0dY9~F0WY=nQS@Bj@m*S8HDlvaIxzk5~uqWmu%DtRYB9q%sx*6}{R*}z8j{~+O3 zpq1r2{P?1nqOAYzFDuZ~{#fy({BMY-GN2Xc{|_rhj1Gf`51~#%8xrrVy(v5j(cOsw4TeDvgVbEYO=Fyhv@8`+4_NDFtz^1xl<3|k~&sPu;k0Z z6L0{vwgwozdFzAy$_P0Jc;3o^FEc1WOghE!;WGu)$k>vkwDZr zU?Rb~h#**aFnmtgUxJ}MA2X@p0xfziPNc|Rst{814acp~3@>@9Deb&C5Gg<8wxf!3 z-J73rxrqe<#fFDuDM54a{tm%x#v+Up#YXB*KGKCyv_We!!G>ZoMDq`7y#xbeEoM{0 zh4CNMDu2y?p$_9E7oGowS|1YMzmOsDkd0-djRO_NNq}N4UA0%HzN@HC@23e~A5x?o zz_ZF)gcQioE|Cr$#+e1fh-ou~HlZUz-^sKRhKM_a7sjdWw;Zd)ty85$3ms6d&v%Mq zgG1-fiK*JbxWXayAFfIkqxn^h;Pp_(h|>jTuk z=vATOv;9%j1X4*{Xy2k)s5}Oz((O7&y28@aTVL{|Q97J~6#{CE2py!2X2U}_#G8b< zPqHFhMOqG^z8!DHZT?|8&M9*tQne>$=`n+sPo}RvH&GMGX)Fo_3?7YT_-L{;jb)=M z!(v>Kio`dB7b0UQzdT_d$vKS-K7@w^(@e4AxWwf~W0UzAXqu?9hFaDIj&ieFif$nd z!w?=IC?$f^_=vhXFIf-UW+()~7;y-XvG07eER%7i3|u!p$dYpZtReZ%uLkO!Kj+%Tq#wLDejaC&?Q>!=!2 z{VwG4Z6&B%u;LT)bF-w2-ta&LQ#IE&hKEh>QT5~`S6HpW4zXy`=gWk3cX97m^N?z% z!URF2pNAO;3%*&2Hk&!EbMN4^b;30nd6HaGTId)}EMB;81P-*H=IylGF?nQP!J-E@ccQWJ;lA6yr~YCyj1#K!Ws4orWl;bUQN!36px_F>V+#$SnEy@CF@Mgw;Y+Ls)vB-qMY2LiZGF6tyE7fjtR>Er!1}&nHTX= zDeXsRej_S@iFu4uRuHes8f9^iKKrTPHZS5&|3#<1Dmtzr9^pxo7qLDmRc5?9bCQ@a zC2RjkMk9)uJTpBBL$~di z=;ZMnlKZ0)yfIkmGCFARJ_6BfL{o|<&T-;C4M_sL)>O#}E=q)Kxmx%_Io%HOd#bc4 z{alyswzd&?ftB?$g7CnZn7TGPWtKZyu+rF;L7XGWo^Hst<0t_dQXCj;>5pBf0TP5? z&wh|-F`qp8r6~#Q*_fF3ZtlN<+0{S)6*GQ(D}U+`2^Ja+;IS|U9B5F|K5T-S#EsF@ z&2^~aDg99z0tZw|p$b$AP!t4@bL5L>+?Im1z)+Cc);4~`rXY~wNzLcpWDN}hF9K5H zbzfkJCFK|EKLp2;;(1!SAW3#?8*l3h8l3$J+jC*#gW*NK=cuabL_=RCJm4Rsa(nXIGQ1!jVh>L{k28t*9fJvGizEF(3+aR?Dch9?V(WY4uAA~GH=27Q>7A7|*C z`Hxdfq7H2)K>AYtL5nUoVudU*YdLI*$eJX3YbuhFssnpe2X|;lLOUAJ=J17U_^_dc zcj=;9&j@Hp6j^tsw0|aY*CQv&`fw2}u zR5jR@2Eqr{VoNvQAc1Dhn4Kbiog&=>p^bC&M9Oi*0`9p!3(XMccvTf(^L;J1kkbs8&42Ut#&u56XWeGtl|?vq~i?V_ND}I9CY&W(!t^%t)<_q_Y)n zLZHh9mEy@R^RzAqLYJ)9Kr1%=|N6}DK46L0Ac`R;Xy_kgqOfJ93>%vHuecy-)3L@U zlmsyZJQ(E;CFzS-G+bMYymzO((*ji9rp-tq@XDT{d5E~vqH{r;%JgPpuJuRUU~h%= zoNXFrx*o&Qg^)^xTSwICrSc3`&5;=g@#*v3HPW8geCnERWSWi$jqEEB<<&0iDJUm) z3R-;hY4ssfnsD z#~-0AUqf{P;TN6i7q(U_+sMvs4C5m?pVLc)bHQ>7#iCO6-A8))nUXVr5f3fP60rtO z6Z{2cc0`2Wu5&9)5M(t>Fpaf$=>R!K_;pWt2=^9xh#18;k0an$An0u<4boQJ8!2IB znZQ2su0@zolU&Vl;C!FS?;Rwe*ouWP77JA0zN}`88M1f3UxA1`;;*2$(2J}QzkpHR zH`i`$1x!+Zn6__)2>}BM{T)akJZ0t<+En*5@Ux-(L&P0;zBh$5QyO|a%uCM;q+vpS zxuoxg5bYUIA}q!h!IV-Uk-xzAk<%K#Ol$q&RtH)dCPeaX$R~m73sO8s{26}GafC^C z$hi~ve+{ZHi-}M9D6xS5FHtTYzdzsn^Xa+bU!pjniIxMpWuHbqNB;u+vd3Awxcp1*Gq?lEeE~Jg!}gKVHa<((EJWVSFbg80u#sa0GhxKctZR{~Cn( z+cDwS{K{Ks>Wty%B=?hGz7I8sza7I7sp&H0%54;4BD}pXql<=d!McT>((*cH_(N>X zPvws!7Q#ZHY~|D14;DB{RQ{lme`@je{}mYfA0_j@M1hlD(s?|yH$cHcqObih&X}=( zhH$;#e2CPFQH}nz2CvQRA33+s_>REV*helg0m@N?dqY7wZcI>c*Rd~g z1_HLN`8-=SZ!`uXovn8cS{?BWy2tTu0kTLHQVuOOVq9^tI{n(X{X$n zjXl&7irZN>BEx}#V&HsNhPOuCV|j8`$`cL{ge>(}105_gsOw{~#*xtK{q>-{T{j{m z*c1ltQ#ZaRvq!K{`x2A!?v1%)na5nnelUJ%^3hu$0mBsp_+{(&j|8%7UM`m8)j_~&~%S;tl=5QVfZ z+wJRnK|p9+fD7>#W9GY1q|Sl*$?xHN9ADS0h<>Y#X5asx!9D>>c`xP%tU?xTgBPb% z6tVwBXFYstjWA~Ihqp&nHV(igH2YZTQht=(ho#Tzx@K_`3Tv0+s};!}#|C>`1i(c) z{~o_IJ#UQnj}%1T#VI97r2hbA_gn7A%Bn-~Ousp2Z0!wYLcJOSMe3EdBQgNd7K8_^ zS}aH~vyT(bv$z55B4z-dX~&FAw+s)N)IK0Fgwl3q{#)0}XlOHfu&iSr-s$*@S?Ehm zD0BqJjLr*=R)0vIX+1nCp6MrqqOwJAO=zKRLODu!+6@aq1J|!TGFv7yB|BU*CQLUc zi~3F~abv0m>5zcigr(pntx^EZ;k2>bruV&BwTmmO%YsU)en0Foer;8eq;kyTmv%C4 zXKfR>ya2jE?X|ZD;>8~`MEomo1OU>dIcABcI==x7fq-Ifs0As`0=0&tAX7W{$--f3 zEs^F4I|MH7?21?hS$A5bY9mn#s2z=+y;*47!gO{kxhq1rF4iW(zUigt;f&8#uiu~c zgaGIXm4kv3yi}+r6q|h{vB#7>hdvHT2=A zCJY3BQjvyx>~XGEIi(=GlBJ;}n---%OIJr50Zaj?p_+pn)I}NnwT*MN_oup_)3WEW zJ;SY#7OUc=fgyR%Qk~Hh3RvhWE!;a{KlA!KgB^(> zIGEE>AJnsdUHgH^ZbK@<+n&Xx#!HJ}Wz@|}Y_G&?1@58|adh?*Uh|kMP%g;($!eLMW(8wTu=B3rO%yL$yVUHt6)VKFYRRX{z ze>hin2CtYUp~pW_0uRUeSr2l&xWkEIgo0zM!~V`>RauVAGEa&+G}L-Z0Ev0`L#&!>Z$>73 zTEd!;)<{CPxSSoigu!iuAxKJ`v{Fe<{1+!KcF!h1UK(oWI2-ChNqCU?ocTfI!LV%h z=;1nBMSyvsBSt+W(+ar=FRLgoEp3f9kkXQ7@ZXfg#0XF{0AjAVxJP0|-(Z0U4;tz> zWxzho6B(DrcyBoHEYalM(@(n0Z&3tv6l6iXj}h0weriM``6mmk^jkTh*K%I z25gs6s0Gg|Jp+CLACa_Yx2aOnyZLbX{EGeQulo+IY?PlBjIbz6TZt2pg2e>Ecx9r- zi=y)POHV>XjuYk2Bg}-P_!i|wmN1FixR3Y@%2K!Hf`-GS0!555tG&;0i-K6!puCWO zy_U@|4pqTwRoH0a}2d$`Vr4^%GrW3*%C2}*G)gojJ91&%}A`D?;}LM;J=bugs+zX*8j zHXbIC!3z9~0M!u`FDCA|6Gyfen7D!*MQO0bSo~t73Uo>GZk**#Mkc$S3j=@5>P~7gA;5J?(%LWU{adGJ6=`v( z>{5FfJX1z*TwG)WRmSz^3^fATmGfIy>eT!^2zyFC|0^*wA+WEtjgSjlVo(-H&wbRh z)LziP&Y_D^(^AN$@fGgFLYU;Vaa1@1bnxL8eehVoiu)*Ui79P>m(PjK6amhPlcclz z@ZqroxSxW#WvJ)svU#Brp9PF9=ApiFw4qm<#s2xFumC&aYkhLh!ZgWWGbD}7>wTo0 zf@q+TRg*nQX7L#7seNQX4DqL6aT$w_x@>WYLPNBuc47jCg*ZS{ia6lY>euzC%=GHY zS%!vaAP(7}J6BG9FOk_aCcb9Th$NX|yqi@*149CtJesEI-sifpo;sjkIb4q2~5!F)j~$XvXY|Ko+Oh5PJ=h9Ah0AhKBbGd%ma~3QJ@DC zW-T;bhM};^Z{uM!P4)Kk86u0M1R$`q+E5r8m>HD$#sjYy*lq^vC^8BDL#T*9%U$KE zlYB}S4V)pCDe--vC6p}FL1qT5+f&Cw4uw2YsU9Idb{#s|% ztiI*^od=_5r_``*&m6YJN$!C5jG}H^p2`-uNdQR0HxRoA?gWHP>fmwerb#XPg8|C~{S)&%~r04`8DTNXz5PK+HAudAD@ink;bqyP*lfK?5 z_}FMJ>tza&pE@4PGcTCx#W4$#d9gD(E&~JMSaizVJv!=zijw$pkx=9W5+_rMKZ^$> zGX7!{4ITy`GK$v|Nfrts`)V5=ovAU5gpFn)2t<@3bhc$#gX44ye zFcRIvS*ggi}dH*08Z=_)(Ul1oAMuG!HLh6{Zyl?k@O90?>FKy7ixjKTshMv zg!Kg9$@@6~1BVm|5aX^+aInmQTHao8;WY_o%Xb)T(FvF5rcm76dv}AF6Q(F+}%3>(cGkc>o(s$3y30iJ7y z@;c-sulDlDO&!=xM@dD-idp`x2jHq-!Dgvma|B|k!7T~wp^R9g0cD7@LfF zDADJ-GOJG=?!H`@Wb)G5Hw#a+b9&{hxwOa<^>w{#HkG^1f2kbxMRA+ll>aGjS8Oo8 z1;uq`zKsSs`DKTk*o^*^2!wsD_{O+?8dH!OywGxZ9A4iVWjgB~kjd%wJGy2ttHJXk zpDg9q+s#N@dbsb={x)!)!uKAW`Q_xOfH6`jFj8($*0lHum|9|uXu5iY7KWBe5Dkl< zK}!FEYZbZXS?^Px*LT8$*z$YnwOri+{pa$^Q|%)a5MT+a7U18X60Lugp!#ZNtnxoD z_~^NQ>p>O-kU6iOfx`rq1Jfwh&k1Zegq=wuEy#`pl&sCb#Zc2PKiRdoa5^8TNY6;i zw|()ZnRcb~|E#xXgHqqmyIe9Q{t>!mGC~8x4-<`*aS4}nwNa#B0r`UTIV^gJ%($Gb zLHYy*xK;8vZd4ut;hHAFJU*)NIkkO|Q1%v}z=^C(-wLzlwT6ahA^NtJh9^d5fPJD7 z6o19zT0|0+ae87twq>(`@f7+*2~4SL^weP%#>_YU?w!~)=|PGoM1ZK#u1VRci(zH# zGznL$8-Ue)%E@6Bw7_M=;G<|6J-Klk?C|U-iICmahwkQthzMOwie>YDvSD`z`A^4w z^X9pj0Bd^wh64dX`?q7}z!J8qM#i>(753ap>9_yRLNM~vi@Xo{iC?-WLriF+pHUV%}d^WMxe-KidCanu_J^F6&w#Y z@(xWpFV_2UWW^smx#%oO%{elvDY7h;P)sTUZ)GwKrBf>zP9tKXGRi>Ls`_W>=34i@ zKweFiJ7@$fmDcO|2lJi<>e!EzAgJWB6;!pFT6d!(+`o0jJ?s1Pxq}Mai<%#*-GG(u zK7PN1ar5j(tgR{62So&lx^D+uK+iM83GaFCAqz_)x;;dRk1da_6SQ?qEh=$Q?FC9*oKop(> zSv8A>{eVFE)XLh)Q$S^J4nV3}<%J%?mD)(iLD_}zu|qq(iuV5&D) z&|VH9{B`z@3Qan^Y673dgFkM|>Mlj7MSoY-(DAT8_ z^!(I7={Q_^*>H>K5WifzS}8$9YZZ-c64SAzQ6f2`=s~=4>hm+&svCs6Y#FSp7KXoE zc+0RSY(Y9Tz@c4_piy!@9+v-32|Y^oEa2U1pnS7@5lRI5JIqP$?MeGc*#nVerv&L~ z^s3n_@O^j%Zx`$ZiDF6es+o4*X0=wY4Xzdj+XF_bZML?r

      &aJHDosZF@t4of|w@X2U+GgOuP_TK9b^)_qrOdB3w&{rk$(pVN)6=Wa z!ALweMUSuoRV(k{0`DyUITG0i5MZ!_X613vtV{@+mH!%v{(jQ?_rd7zr@n7uO2Mpn zU(eqV`a+YiitVF5{LZKDpqH*G@(Gn*O}vxX-_qMKW0cqp+`H%Y&7rZIo4iw7+!VlL zX#5n!8x4VqH5aOEjv;7?ntIaHAfqAnrHT}uzqXefxGX5HFnd~;Y*l&q>6^j}LR}lx zKs^FwQ=YwO8+LU};gPgj;@5f}T?ie?*~IUk!*a4+ygJA)C#zepfR$giMK;o%d$$!E zG=uukq3V_wj14HbsEl{d4`*&4%n1EoVGR*18W#v9iuVIw6!c>-jG#2{Ga>sq9*nKW z_AC}n!6evFuSH?uWRe2>9D{;Sq86*vM>EMQ=U z8qi><|E#sMi>Ix*^Pk}pw4#x;D_!r~-JM@x^zzd#J_Kxd${sAyjqtNKFuU%YLxE%N z_sk5gRotnOKNXoMiH53%=BM(+dV#)d9A&zFt*j(<^VioL|4!R;KO>UZjMuXbp8js+ zt~R}M&F7NIv+E9k-z%Pvz~jN0hwfQ+%G#^_>sf}#(lFrdG4B2GdFed1M5N_p&*0&4 zQcSlHgN=WD&-o85c+W+;o_Dv4oA$;EX4VOZ+^&iL9%OU3K>$yKB0 zx-CzM2uWpc4^ZhVUwCx=`;B#juJ`l8+PIf{q{zF2HlQE6yFl5ej((usJ+Z=(F1n7m&3yeO`dD)#7HJ-a+t*F_}75{=!W^Br&Hm(bie~IHt{=BMf^OY)H{3xPBF=9BI0jqQK5^%&M^3=!x~V-YN|zE zYmIz$M0|NeSvou7%tLYgU*8VH&(FeAdCszVluq7# z4bT0As&nj@-Z2NdQleW|yH6Dl*Wv)X4?o}Qbi1Xq3A)<#q`4pIo_e^w?%Akl-X7Kt z+;|QV`N}Q_-#fwysqai=Jq=k3@VW^!5z=?z>c8)OLjGKVx>JhErb^PML1I!VJRs>C zPUjOo=jZCybu)ZwJxGIKsQwrcG^g&DzfF;xL)$93PlG_L3<~u!h^W*8K>r;uz7E)Y zcsF>MkXeQmwpUzpHHW~bFK(wi-Fod5WE3GushM`4UDu6QW$z1X8BSWRLRqlC?f+G~ zGhknuay!826oz7+;&GI4mz0;t2ar*gm?#bca@pV}C z?poyZTsTujy2)T+{-Xcj`uf*dzjG!hLueaekygxm|A9w2appCxMlj;a%>DzF{{_jC zQbtQ^lnvBO_!oxA+HxsgQS=0GN#f6i>|H&t9X*#61X1hn+U7oi&pD;h0IfKdEbGqr zmdMa0ZGJc0=hL@~Uv>OTMU+#eI@d zktxMc{l-xd!nlvcKqkku^a(CevAw&}e~XaiL36Bg7;CYzlP#kFT*dY>r{%Q_|GRD^ zT1ZkS^azvq6;6Cmd?$2a?w_4jpq)7X+zGWq2>=)S$MMxo_*BeL zES`uXeX^Sn|HMA!Oa!Hpf{vs6D^(YS77D`skJP`Zpvq{@ZOAQ4%`d6DK-xvD>FRs_2=1@ruS>Gnk=*kMK`Jnn=39JeYqLk! zmVXc#`Q9y z%&oz7(z`Q1x8+QCQ(#}BI) zTLO!7c03&{sV9dCIMd@lO?eRYH`x^2h|Pe(dH7pIiU$!ki9pkm{XMqF_kCZLF@$rr zmupvlANTXtBudnxP3Q31#akw|H6qHf_Gqo;B%BVLdWy-mx899}A(cCN^?s-1_08i` zkJavh*p&O+Z$GZ6dAnWQ)vTsaMsdPV${Rf(p@!)-aCXX!7Bhlg-v%y=JXy*S ze?$dcKj9SoeMX)}_nzk7&}@3r1~wgCGal@oThx9si@bCJ5k3jX4-W0_`^$0Td}MLr z!LbzfT+=2r=(1z<6MT1f^vl->pZ68kYBZr^z_gU&x zhO(G3%mp3h`If<3O2oM&MsOt)v#O^|h80VLeSHav%yD??{Q06>BrPX&{n3N= z#F$^7n)9m7T>F!;vIcheBZ7ZX#s(y<%VabQo1PqVWL*2NUF4!K1xtS?<~;ri%lG7= zJS4|Bj54()4Y!@=7_iO5yadpf?{@6i;i2$-DW+WFJeM-9#*JYETCF3qIK^C$TcW)l z0FSVacMl{;cvLdM)R>AyDg$CW>M(ak;C-$ zfoCK7%%@viIQHljrh_@zL0W=|KJ5F|Z>=I(cPuZ{ z!_Z!DV5ln@o~^=AMq3>%sl&HqkE#jJT*m7m1*K=s&L~m}Sx)i zZF0eYnd*h-7tHQ%AC-VhF5MRm$;U?0M`XY=b}bIWZ6ZwbCuCc)56j2tfdmyPa_Mu- zTqQAPiXH9;A>zNUkFz_4rnJ~#>Lw@janCNy z2k4kKYEL(sqz|q{9Iv);0X9z%@qQh%Yg-Qm z1$JQ zS|}(sxML?AyBb@uJyPhrO6-{#W7JoR`#pi_kerXds@0@*6kdW>nih33Zy%=)RE@cX z+L!xLtKcg&G+I8yexfVJaM6+mgeN zgI)#w>Fsy(n98AR(e%8t38ndqM`)UZt@av>eV5!FEhe*Ui-Wfd7OuUJYf{D<<33)V zHj0({hW3KG1M{kKY1CCXitG9dKU{u>mr;E+J@R^VY~%l(c3Y8pluRDi?gtiH%HG(! z3`R&t+J52zIJe5IW!@zC+CQ#EuTt{Eqa% z)m3MDkF@I0v9&i%Qqhg6DBGw_DEobF+EWK^6%Aa#M#~z@(kc2!t z$2Rf0hL+35*?<=fgYuCh^){_-qUuc3#}`|`iGe{LyRfu84!8oVQl_Hhcvsx7-r{J^ zwK`&BRtDXujiA>{yjY&6Y@`f(+SX%&h5^Nfy?@b0th=4RjcdfNzPvx;7^sbQ|A6p zKO7-%b|#q{2cCed!~Vg(FL}9sNo(J*AnAn7Y5D3x>aeI>^D#Ix*FU{PV=9J?r!)7~ z@UY-=tZ9){?-dqsSkQO>?w(5RC_&BWu73JpxX0o5kyr4Y2oGI&hxf~1OY1Jd78MK^ z8>@Zs)1$-dOv&Vq2SSYZw96pkuc^Bq5D!!poZr@$SD-aVlQpWcjFJKz^3`KGBc_<92~iIROfZKBra>y|Z{17FJD6Bj z-{Am1)61X(v8R_U@_Ft8*U}4GRJP@ZIou%HlYjCDY*IrmrRj9SLepG~eTE1A;vGix zfLtYHA&r_L&;enyZ4V%JMu>b4!lZF-syRZ|5Q{vrqx`xlO`Xr<&Ffg~48jRKM9Jl` z6xL(Z-wY1I^w_Tr*>uU=1JwxNs@}vX4lvUZ2OI=oj^{wHKole@~0RE{JIWn8>k}qluSq*Nk{7z`5!x~}aunb!cx6W>=d_@z&SGoo3LL6L)HuV5a zNWa{$QLb5{J`3S^|2AE=z|f=M1NE`N1Z?%m4fgG)yQrCt6{L}qvQPzF6#yt52gz3& z_*Z)AKho#_m45UmJ(yS=SnkVxWB&v4%FE_;PHH}*!KT?&Do2F{x>LCa^SFpl5;e6P z_crk~-nJyj%M%#$qZD^@Ib6BM#vcQiK@ixPtxN5SetS@vZudBAIWGs!f^`w%WsNf1 zUvw-5G!vj)E6X)BR4U~>4&@0UpRZV5k~%L|u5}ffw}6J_S2MgPFDbdBmdzoq<r*E$>^iJDYD5gdn;~Q^8jRa z`qFS3!D_Q;Rex>z&)*3*)=jdRcd9hUOB-&flW$5_SVJY;{AQYXr3Zx&x~PK#b#1}))$dRsO0XZqOQBtoc zO|%t=Dkz%7qj~r&I}KQFjUN9m9w^Fx@+j`f;)3s#Tq>j28ap2kv9QvY!qI{(ef#lC zO#OzHuf0u5)SyqV>R9Elmr)%`oe|;~4;2eV9cupK?V0U^HIC0J4)~~BVsjGRNNd-5 zOf`iiYOK7`LL;0^*DUBeisi#&28hII>s@D8EO5^-%wmwMe)uvt?OHw}MautS`yBaS zY<#Z&pKP=v9)UcUG)oB$hgKyuHo8!hTUN=(*1w%^vB5_VIWODzBLg}c(&wZ^A9N-` zMYIPmX~3`e7G2c2LutG!k2y)ROVGiSMGm4 zA2uu0xv`ph@@O*po>s=#mofN?5C`Xr1A2Tp3u50iT2ebm-KD4;?1$`>FTl8AMx|N zFA$N6mY5*sqoE^38_JMY@B>X)&D1>=VqrSn6IUZ#+`698y=FC#ETuPBLPJ9=1k!^o z+%FA0vuhEF3P5Ykbve=ZtrkV;Yf_?_r#Kg18>1>|O3;Yv(DjOOuTUk%m)!uFKzSlG zzJO6ka+m?lpU~(=zYvV_Mr>)=PlCYOOamKWrSH?);tL42j|PnKMV<|KPzqKe?sedED<~jwrH^JUz1!gGb)G zrfQ7RH5{-_W^986=N^nOeqh9P-^IBzVUkud)#e;$iqXQcW&)GI_~J2X!A(RNr47;Q zzE{`cMNYVpH!!2c3+Rx0AISWhMv97bU6tacJlQ|KSA_of?hVtHcl13qW4j=9<0kyu zx6~*I60~8f^=11J6h7z@I;d>cjG5MS8a3KHG{voO{%QT zyUB3dFCW$eGYMQfgg_Z^*JsF)z{YpT@IWF{Ql@Zic`a=uDGPxF9bCAP+q(%j-_!p= zT;uF4gDTcqv#HXS->>$2u<$GCE)4b7o!!3+3?nMa&hDvKG1lp!_%XAcj`eMwl1J>2 z9l5DtvO{)=P4&DSUc_zrrmd7eqYF>nW2CaIw2QvdnOY)tvDtR8QBDhs!Bs!WFa3gg z79guB(~SW><9hSK1tov&^=uJcUzPu|nBziR(b1?T(sXhg>U5PlH6OW_=@w>rfIGqt zW9_%@r$ilFb3;s%-3;v^nl9_i(V4wuJWHl>swvsbhBeY)-V(odt%J-3Bir&81{zQ> ziPv&THF3bq&UoBvHxraJ^>-5Q|4vGt+-JHyxEkP#aKvQ zgI6cUVWm{lpZ#tGW@v}=O7~-#4Og^aa<8;tyP1E*nW$vt7h#%BX{I8~eRea4(vXA< zBb*oWb^q+|KxPkjJ}&V#pVIMk2rlw-fOJ&+E1r^Q#?6+tB$&fXlX4m1jBm+)<3Tm0 z6J_(467CVwsj{52WIoG%HiDEVHiG|Am`8L#x^?OPoqsow}(eD6H3*wCG-1_2i67A7GLUFSW8M)47t1r zVWwPu*PZqE$)2@K#qhz_-x`80?2}9|vjCK@+2^djRm}|ttF0=e2cM?_*FxQDE*QhNY*^r=^myB0F!qL0wfPyOX*ceW8S*jqV)TEG_(LuC7c~Zm8dmPl z^gYqGxrm%%{1>&G**J(=fctOiA5@r8DE|-Y%dP?V&WIeNO`o=pKx6phs`6e8`?+jJ z#z6PqWZFTU&6FJ{BA8JW9^qOja{I^j!_w||U@=rl;WMK)O60E?K;5??-{o8}`c*#7 zxdML$U{=-frF-*1Jfmg#<{X%=%4w6l5|OKW|C&}45Y?zYeTM6{uwAIkfx@;#IAudK zbacRjDLxSXR=jrJn+%QW1dIxEd4f^oq^U^)AIj}%gQ1VqhWd-&-eO8c+<+*^!X*yn37q2_f`)MrDDfki^w}Ia8*XPW|Cta*i|K8lss) z<2q)J^H*7U0W*MK;R_Iub;eoc292%&Ioo)(8JOaAE}Cymlxqz!+5PjdtC>GCP*kbg zn*m>P&TJAO=u)0kEITAL%Nb*p9&jqZ;Iqf6;8lKHI!>TCw|c%;#-~tWBqlj0%30N! zT3)m%mu#gAYn3j_A=wl3p2E-A=jL_OzEt^7kGl88ql5njcI`c9_Ls?DoK?47L+x{o ztN%19r*{l2iul`PSn?l}yoi5H0`30)O!6vx>7MR5;H>fknZzu%e&@H%ZY3fvz{SQF zh|TzHPVGntT2Zc#Sli!SIXwh#U8iA!ypc+7#FD|*)|FunTVOb7@fyS%yED74{Iq5C z+3C^4&t^u24??0>XBKTvZ-P$`4iXN*d)W-_6~Sw{buic+4S)p)U7jwSLl)>YXW0i6 z8bC5_84TSLN{Pb{nmV>2!wJE}1H!>SL$#91ej{ZmrQsE;x-|<+fS53aV_*f^a%aP4 zx285l;3xw$kXal$;w&y9I-hBGLQPm2j0H)YxkvRTYGGaFA^+Sap+*8Z=ODwucc4LN zoqy0g#HwI*!!G}zu{hkpOb&5qEsw7bAeOe2f5mOJyQud7--L;~5GVV6cxS@4^Lw!| z?K5gGA{rf9Cs+bx4+1Vs@}ju5f>x&M;uSl7pbbp3A2_3o+iOr`Zr3(+(dj7B5F%?FS!a(S7VDL?@UtFEN@`QPANaNA!UcqT zm=_L9k9#SmA?=xa#uTin;&KP5c&Fu{;+?|5js)7aLj7m)>~i$~QM_89ZP)k7}Q87H8b?18i~R-?%+^Pq+EDkH>z(4dEf-cB526C;&$P?sH0IrZ@kz>NWP zsDA>l{m}1TVAN|#s903ejDQq!KM)i?+BYIEWM4ZMiM-%_iwA(hVePVcc{7Pw$F7$n zD;gHbr`t&3Ri9yAg&RqyAHkklw>ES!5ri!YNDh` z55i1w$1}X0FB><>ufKGQCGuaZNzrXP?i2;C{^4N&h?$qQO&?NB8M+aS zy+FZ0H?@`$KGsF+g;Y<|mkpN#txfqERRFcjL=EHwfZZW$ z-hNI#gkSjpRJ@Q!cqBw)KZt^$?>QH(i4!$W>)EW`IQW>&y)TR+aLd?=i)t9x9AN7h z*C+Yt;g374-3ho4w#L))Crs?!cNr<=93mRuAc%2)livPKg|ny%Km-*5a$-7d8V50z zD35~n8WRtzak|D!dqlYVSmpEci{xP$;MNdhFDmN0=&zjZXzbmEJT}cRcE+5)y!7mR>(Tk|R!!%4{Z_^0 zsA?H`Srw5H{YU*AV9N|nirKrbUVSg@eCI5}vsD`DzN`-bofn~1XzBvRZe(q(;6gD7 zKBVND4W%fklAGR#C^k9p_EE!r<=(%Lnb(bk8W@OgA(Sx54#P(`4+@k*@hhPK%Thb} z^;B*zIY-py=gO3?u~joECHEr3Rf%u1Ir6AvL;_lc-quwbCP&OKt0<@2fHo*r5-e9N zTu9*lsZ+(_@vW{YNGhBdrSb?qYtghKXHkMm_!FA??ukc4O)`h0i`dfvtPu7iTJg>L zDCP=YE_+VbCSdH_62W1KcurZU@C{*U4X$z->cX=6Zw}Wd6<3N$MGlHBo2*Iqn)R^b zJsarmD~VOxTZz@u?T>Up2!2E?4^2*3>C7HmFS#W_Bz=Y10uHnUkm?t6OV0{vS6+KB z>K7bM+hN&|x3>`V4|(_*2!6$iB4b3~Z}YEalOcs1^?o!$l)U5{c) z&?3>?7AtB+4Q!&&BEG<_Z*(<0Q=q6CqTdmpvJp!z$aP)Ww&n3n!FoU7XN-^A#`i&@ z((NU&tz$2cpWy`rziRE?>7pPKkTeBQNlZI8jeA)xe8R4gVNP0|=^uV!->6?me4h`# zoOfM*87>OS8Tw~4|F5-iD|j>+(xDyOMFG_}7vKuq26dDjS_I(va0Pl5hF<+KANOom zDMk%Ih|v88fL~<{UD3@Dpt`F zNeu%8JSEgpz5M%|Ce-Qi5-zxWGg^Sq=blB%YOyBHVf{@)>*I(qNDXXTKL@Z%@cpmH zv$F~s5T(l98t`K4qxUBg!dG2BEq?HJLEBKhY*QmtXo{qrQKaimzkAGC*h%p=VUSuj zR9MXc*W{#|;sKn-ac`oR#otyCSz{~Yp?M7j>)XMGdxteJ3C}SJafN$hw|RRnnfn}< z>IugWpul=Bai-K9Kr8+O$l?y`9^N;wu{=c+hCPn@=JY+6yMc+&yePu*iQ67I+pQOm z>`=q-vF_-x0$l=)%L;dPnu;{Mh7DqW*7~Jl9m#k%vHu&uQRxrBal~H$4)^Xsdr-q2 zaKooP#Ieg;9{iP=iVmF?!O;+w{Miu%A=|B&cSop%fKO?_fW6i+^?<#>emn#RLLW59 z-b>+L$DPf}e<;uko*f`^h6vd9K>RWshH1%<%LCWzxOX~B!n^s6-5Y$^F}VzEII1cU z(SdNCI_+=zL(YHDmzY`#ZbO62AMCUOI-yWmlN^6!y_>+ zC9rdpLcn6;;q>%DNmCIQbD&;BFc_Z$sHmmoD+}Z&ba|uLI@Dkt*)*6_)a>m)wdz-= z#&8)M@0#-KK*l6Y(nN)_IMtjw*ROaGdvsk?VK5|Fnhy>Y3u?lg13pzwKxtBg?w84< z`O1wd5y{pQV?hz;kDbh|gAenk zS?k!dDg%ecUS@sREdiWn3gLG3>@447EPqQaSL#t|QcsUXzS?l}M(vZ%w zbLtWo5v=NMYVXf~Qn7-l@S^`vu|^G=Y}ZZmn1XDwfA?f1@v=1;Y1eo%l+8}Y7Ld5s z{?IALS;uasnR4=!k`|y(%P{WhHig7*Qe@cpnasPk{3DfSF&o1*um^cLNx2!@@=!ZX z^fv~>2`xjz(3$N-^$0t`45&RaHGKOA#UbPS>G#G90Amw#P$L1TDJP!7-fHY$#BE(s z7e@#lZR^L|HB8K}Dl3;sGl$2vefuJk$r{+f70IW^pti~Xy`vB!4nB7wX|FI%9mGeTmBcQP1=+V?kOG*8EzMus`-)Uh~>Mu~M!!ZKRCId&d=M8S9@f~?c>a?~B)TN@zVz{N-PhC71QyO;S z(Ed0`Lfnw1n>Ja>d4(ma`1Cyl^yunGuQ1l zAXovqwm7obV$y-u{m4~mSK!m65iYXgL$KiJ<|DDb-61rEVI7Mo>WUQpEEI(CBisPqV@Y5*XFvQShePq8q!S))`4l!spOME17> zV^o@{Z?8>w&K!}mGN4Kf>Xj%zM*zKunJdGwKHZ5GCqVd+P?AB5Be;@7H)V;Rg7V@v z=0FbKC-BLjx7={qiI}6M5s(ELcLP&hbI8jM15e=JFiQBtoBx}KXVt>UM9}v%#?I{a||kEaUz0{Qc?e#J%G+ zXL@|Y;OhDItfQs|_53{N4)kjOCU8wikjV(AqZ?RB+?=s-F!u&P%}906P|DFn9d|e4 zSsQkrGUnxd>0UZL_}sQeHFOYldmgp%TGp0|Z1jaCD(w2*6((5r>fXlJdhaflyJp1xj6xqg|(-(G~Kd)d#^`<2`J+O^KeS6`^+&cE31G1bD)-~YYYz~9|wZ*APSu=|m@ zE%4mW-&5GAv#kBjqoCxS@7-kFIcYd2BqOXPb>GXs73jXU@9fl{aeHQc>vhVrvY42p zbSOI3ZGCgHX3&9=T;-2Zxtn#f;kn+izD$?TO$|Hud+FS? z#U;r}68Plx!YuXk)&G5I!=PSJ$ey@wzhrRj+Ao!uk8tg+UWiD5n4d)O-StIav+};9 zqh^cA4YgvSX7rV+s=E?HLS$mGW5L(SqHX!qvSWeVo1LFXZd#-Wm)-xdcFht6wqkhU zwIlO(!)R2anj_ z!99T|jhGJUc&F`tl>Ba|6_*N^QRKDJ^P%47rB+F?vs*-43FYm1*r>T;l3QneYfGu5 zB$y(;SEhkbe#kNpyGsy2o+171m*3$VPmJQU`$?!3HMjEFHdC? zH&x>SD*-NGn963D!p2f^K2~Xd>U(Jxyo!L@pxa$W7=>zsU8`Dl&W330xg`(W-t!7_ z?t`COFiBU=Mo%axbhHf$;ekRNcef(m+JtXik2^9*T;0`o)8nhRb~1ID*>`CjMmTGO zho`%@znJ%-d5VwIA2044r`_iyf->G}xBd@dZvhp@wsi~R?!n#N-GT&ncY?dS2X}XO zcXxMpC%8Mo0|dxxa?ZW)p8J3A`$rF|2cve+HRs$_)obtSUCT!CQOj_`9?D9Dp++uZ z(?ZQQ%7D{bMq_JpyQN}8)3YG{t!lWRVJ0HvaN!8>Q^BrZ&d(z{<#9P2t_0DzrQW^J z9)~4M$0cuH`$GuaXN{Wu;U!>4EMP~iXe+qgzaem!p<006(s6po_C6Z@ z>(d{N+@`F7af?eoP#Qnr|DgP5ga1VNpIKnCwSe2D=6?s_l%BHz#)U9%0YV4}1c0&q zgX`avzJr|6A=?6)K?9mu{@twC)&_QmQKabuXA^`IZvF%3KO6jq=33E4@I@`+EkH9A zK(h~N2$l{N5-$jkcel~Mf)0rewa8yCR7~v_mGaxdMOtp_{XTxZ3OPK?8t?!4DH2D5-)+Ks%Z1bB z<%+w_>-Vwc{F&t=Th+)u2W*M!1R}=!liM@YrGw|`+eTJ58gEv|)~{3gYRKjeqwwr% ze7LKu4?X^Q4+0Tqd+fxrX%@uDk5k{5oZS-Bc54SPjPREXyUM8Lo*6v@; z>!!3F@Ivo`l-jO1GpD_f(_SBp+q~Ym+In1r4Ed{;C%!)JJPeG*Ovq(e&wtxG@SR?8 zO-y0CvU@nP&hZw0UidMS!qc|#<%(o{W2I_4<=cAuliW~C)#=#0t(GHT{JNfwKkc)g z9&LCP<9>BRF#opmN?XkzUIGb5@SW!Z?Z*#{5Scv>&P~h(F0A87Bfgw0R9Pdw>?|YC z^F<*TJ(u#n3p20=60oD!7gL~7xg1DGf3H=dSkD_H%s^v82ERsK1oIs9c^kIEuTils zzrf5(Y-5Z4O4Q)x%_~! z7ruad;fA{avQz_6UV{u+r0vJeOi;REX<0#tuNL4|i9ER99kBWXDYQ%Qr3Py6+kBK7 z)bDo5J7MrasBC2tw|wNjgl-ZyD?b0FpkTpWVNo;8*)Q&z@P}ohlybii4#S@1m)kKd zMc#x!s)vM_5zze7l%mTfN*+VtlqR3$GhW~JxwG7L<@&n!6L{b2M&X?u*1VoyUt>i0G7i1(G~X8X$Ln7k`E}TF zrOWAGTi1SYFyPYJAlg1IvZh6=+;q#0xb3ugdp@^rWE;d4*$)WWB*)kBlH26ri>6f_ z98Yl_tFBdL&)iL8G=aa8!=C9k%5lkeO%Swj$+Mi-_U_$YH%r+$hazK$F=E^rxlAJ- zhn|1c=b*i4o-8VN@WgYltzyfvoVGD?hEhUek^O9f>oCdrd06@vvY=pK>jRYi81fzn z(Grw`(?oQQ5)fvoyAs#&cge28j{W59 z?nFn-X~Uko=@nOZPg?IC1UIaHXw>t?I(IGJ9Ji<&8*PN)0sH#TTTa?9!m^voZl|rC z#NG~ZEf}<07nvzJoJFulqjSxAI>0)7btkIhd%RU?lFO9|c;LvMc-;q4Cd5Y$ssk2Y zHXYuA#doPFwvF-<1`m^NKh9T^(jun5-k9mK=mEQOQu~$cC-pDfG*;Pjtt$H`+Y}i} z2LRTAHLN;A@LwF#Ek##jiKf|684(@op4t%Yco@+voe@$Lr|Z7lOyt%IF5NPxb;Gd7 z_~4_=vvg2>_MB9k*%n&ka z-u~6=@433I)2mSk{9t?vFeU(3}Vy=NIpMqCB>3MCU9S#9HiKzymrYbufGQ z8b@jND=7}#=sK&w!v*oGJ5Fo0^Ks4+PHwwYIau%AD&tO{u2=PXk{c2o9P))FPWsY~ z$**n>+e?OC95qKDu3bT;$u5)PtB#a~3wP-q@%Xb5THCEI8kdd9ERXXhgp;R=JFGZU z8<$P{*6;4>4IH+z=ou@1+BioajK-vFr@-P(IhihPeAdz5K&?JiC^^KhO8;Jh&t@IG za$mZx8T0PtW?YmnB!{8ClvR-2(O@x7P-Esj&ZD%QmHa6y9sfb=YOb8h=WK4cq*F5{ zTI+nyeg59!O%(;4%jxtGrJ=oX+}UXUA=qu9t)u+t?HPODq+7m(y>Qxur^(_>mwTyk zjA5}1a(r8$=H2k7b~7AQctILWUt#7udS@hV2qokeeK^64D==I{bYe~47qHuSd$IpHHnRC+q!lOO=NF_; z`ySGfV@ymCUlg~0HrchNRhu0!m?Qm=GiPE?E2e-;}O8j1<8*#^02$*8Znkvle0 zgAQiNiBc>Lqa?$tS;a|#0h)Yo%_O@(PGTTyyGIxT-%|$61Elh(q0W-e8r$ZnmN;s? z+%GOXol@}_$Ffkxyh(2g1w{+F#P92lSETL6kHL$d)k%){IV1$)WTBpCF$pF7YQ1pR z=!!+J=$x%889+CB8Pjv{=%|lAD;ozBX;k}pE2DwaZ!LA`saWCnttvw)=;B<(>D$%( z!!!MwRnDg~-L1U4KC_)9C$sm2vzC5uahU7$t!_FK;nmIWZPd^5%HH%frkV5YvS{w& z%*HuTV#C(9M&s@3Y)KRR$HyK@liri)h18egqRb2mKAl;#=`E-9C2QV?9vr9fH`m`w zPU9NQzDlGNmmrE5P_|1Rfc}E5$doo(Jxfd7r#>cuF0x;4HS<+3J#zRj@9S90r z`wr_&tC0{7J#_OOafG;V(WA%29s$0`ilNF&)7teH7~sc*2&2;R{j6LO`p*|@UXI0# zmf?5B0?@V+yB&M1JiJ;6nTSD0kBA(4OE4=LRjyqg-CQ;Bv*4YHTLStNbUg#cb&4;L<1gzr>mintacpJ-&N;?3AK?i zFC75)vzT~Sk7FaFj^BBM%ag;-^I}UnfDlt=;zeY$YuAe43Vs8}Vbr1^*}zo~t0~YE z6s|c+u$ANOXvrHjh=jbx#Zhc`OPw3QEsA1i%ZMe$Wxfk*Xv>M$@CU?7uI%rPjIrLI zCbAkmr5zlZmjhjXoC^$S2DcWFFIrN8nnbT4X}>Qh(95&;JJ*N6r}2SY9lrKyMQ6qhY2?_ zbnebLBRgwTYbyXfu?6S}#j7c~ip}ov60S_OpN943%aIaKHZ3WAIWcX#4V`^$*|sID zC=x%H*xHlu_Xd216y96io^IVc+@+ecJlR8bHvC&t?m)iRn=>Z0%w+Sx$7Hm`tejp| zRFQeC2yW8kEjJ0qwz^6%`4dqk1H2vnpvjnq@Sl@o@W4;(FvjPvIrQH z4peAKt3tXr>tUI)-ZsV4@=gyh-bF>eUOsU&jF96OVz!--{Y?58+_GHQqS~v)heg%d zMBd5vT)4umsL7GZn&B}Q)M8T963nG{f@`*}1Nik zC)&@y6Lm&k4+m^=xNs}+)rN@7H}uaGy-)Jipz}2%(8Q?n9ut(c^4RXJ_wvWVkE%qI zhN4e}%Wqb1Mps`hwFFNdh)`or@d>X2`^E1BUw#-+X$jDJPOj!>_I~Y9E*8u-0ItOY z!s#X7?k`I6%081lbxvH$BD^$Z5OSsvD(9)|wEYSJmV&TYGEV0e`)vL5;gX6`k@_J+ zNng0aYE>2(7wVl(Rv%S<0513*@sz-+cetrgi3kWth=p+wbzv5MpR#>*e5Gm%|5BC_ z2x{?*BlaPqs&D61FOYx@|EO~a6tz^ii4YhnnFuoRs7`QvesChH@$+dr927l1Wq7*Q z6B2Rl*H5)22iCz*Kn}kIt9gWXZi1oeUp{{U8xDkeis+h{w2NCdK57yF zh0>r^=w628*9zP>6tDpF1q=##H4oZu26K}}^)g)rn;3~D&v9*@n(?;A8VcFT2<9#b z>LRT_wU6$@16psRSzynVc-bH*Ah@YsBqg~4&P?Hih^k7Dv%_c?3Sl5Hi#)C<2TU4) zEt60n!WM#qb|Em5Eu=muB9Ko)U^H z5W)?KH&_CpKtv!stiV@T1)f9YUmM0Pk)hIN+pNsdFrQc01EIK?gSae_)meg=0<=>5 zppeyHM{_|RtI4upkbyAM{fJ7lx#wu7DU5p3#{oyfe|F81CKyoL1K|oD@wK}U7~dB# z@?faFo5i1!vxgY3U^iIw^X-$b=;pcxE)lE@Xv9bygspCN*#FH(QV7g|+=*UG6I}GY z37*J5T3Wvw$?vlgCQEA&RwR<&Pz)Tm-Ve?BG9+N%JSJ4_aj z_-W+U{^9W!Fz=hX@e0TaICUId+fS~D{b;}->yzM+aC4u%^YbE@86d1?v2RaG@rsn-I;5Xo#(}zs(PJ{4kWN08|W_?Pl zKjbcX-LpZ?ft$6nk+r*(wX0KnJS0d8s`PH>TGx-8;D>G+2@V{HUdYs+eZl6^>IbWV09iTy}a){kac{%4@9S~hv(_{N}}n z+>bXS@&YZ zcC)J4Rxq`=e&Oo$o}Aj6lyQ5j@_bXsbgPsd^H2EGKLBSiwZ?V5*zQBd3V`VX{^MZhd!-aY%{FF@ z54N0%U>NPCijBNtMt3|{8lCP~?qG0@k=*!sN)uEKfsPM}PS0zinOB^-eww*=9#e2P z8a4K@l=;B9ZU4Wcw672h?~k`T)#}6i@3dwFn{@?^SkH_sna{5^Zmw%59;$H z1Y7w=ZXx?OGDk&%hce8>=R&!m>px$rYTT{+oArGZj3c_<Q;)3=mJ~@d{P{Vl=E=jI@lApF zR?5TP?g1><^FTd3m7JP|tKziFj$nTP=>uWgji(Twh7=`mKP*tWMwJ3+6>{h?q1Uhd zWiKk<#DI=NwM-ImDU3|?4YW@f63gPiYEkswctFZ{1|Iy=@moG6zj!hWe^W1?U!*O< zY8UsI%QQ2-w=GXB_T>U&nlVk1Zj#e{lPH^!_fD0`5^S%q)zG=)&Mh;4K~cj?d>n zh1^8DCwS(eCP$%CNKAl0SwmjI?*=s7r=PJEN~0_HQMsf!@04_YqtK6t*$6r{LaB=B>Sxb}b?<8!Y- zF;O}&xM-M3cdD5Sl`DYHM|=oYqICVBl|s?TlJ1d5vR9BvqV%vm)O;+gzr;BFKgF1- zvHmh|s-Q|s(-Bl8XZfY6$#bTTU(a=oQLdTOn?qxn1==;GsfG2O>&4fQnW_olYqfL= z4gKc2Tf^3md9FH7^(t?fj{CQ_i9P;|OT-2vdkI_fG{)a+Hcg}1k+LK6cXFpele&Bt zk7)yaXZB0sIi>I>gE(|T`ic&9!F3#XA(f_f*joW;o@?a_%BZ@x>q0_TTmk}cAQA+c zgca^DH9IYM1XP|ED@z`~-?yTsT!ouH$AaV>QiJ;(G$lIk2-?A7q>I|YI&;c>vr`IH z^61;MA|S;eZ9&fUJECUBz4C6hA{BH74ir7HISIB$WdhY{M$w6iDU@}ufNeXXVh}-7 zli%tODpuI~f>yOrzlS8RGyN#&F6fQ}j7?cXys&#^Iw6XZh#_DWcq?k(kF>Tncq?|9 z*NIIak#(z@qCcUe6OL__+ZhBaQ_vZNjoD^AM3&o`c^Po)f6ETSDz76_Jg_;F97RgW z;5!R<_)tKJ%k-RQNpraLQ~WHkr9D(K`&Lm|9{7+>+YI}V&Zu^pjs_q2@X(4N5hL+K z#Vs{6-d`%*fdfr+tU?DQlwaR(U*%mC|JI?DdkoO=?)Wbq?_(SF%*6i-3Fmx`OrN2L z7x`pGoo|1v_>}r##iQcCARbErR($$jtQgim2pT$oI1Z^#xV7*ibswL&S;HP$vFO%^ zYx(RAGQZmEe05z2;(WFb+xTdKMvuS(;q4q6vnsOZnR!c>S5 zK-(so1{unh2}OryIfyc@B}mgjzZ?pWHHaO`rs=yBqrjn6sXztkU#7!-f@FzF?Z<|u z+)lU5%KvY!3Z^4@l?|YE5C-rPQ3UqYhT`Bv8V*q)A^TG1OW&hg|7EtxHyGwsVvE8P@aOo zJ%}AFsVB2EZWF;ag$O!`jR4g|x@@<|?o4T!@daR-kfNGO<~gQflS;C70VVAqwrpT> zIGe#CMOALnR}9O+U^oN#L2SC-vysvay5&+-#9?IyJf~2$NS&7AEreoUQ?!kc?$|(Va|XDM|-ZV}t02RcNZW!544K zfn9v%pAny%#2mj4^_SCEv45kz-|!kyO-giv)+lHfjv{)#h+lIP@p?50uCgzP=R^2; zkPbKRlbK+-k=-);4oX!kP@SGD#xAb$3AK^Y6APLS_aoVBR7T}uQf8(Qf(K+^u|i~? ziubX-`GkUrO;F*bJ=vec4Iuc9NEP&>{m8K;KAG+lB0N*1!V4?xlawh9orN2@my0XJ z!6`F&V#(muxZy@hIS_C!MdT`fg+p^xOzKvK8&9-QsG|@;gQkU16w!#t4S%VS@TE4n z77|56JHjl@k5gufG~G{|`P^rf8~$D4Lr#_o8hA&U;L&Q>1PBqL87gZc`#|&=Z`U%$H zM-8|VIG3wuMSYe-qpGh9pf+JBpyI^%$kci+R2cjf!L^kqC6Wr2m?)K$#E1TgS_u75 zR6>McGJ?fg@>F=`zb(+N1y~RVi~eE3R7ZHiGvWPe#7?OPa-xTt!cgX7M>sWv@s^5m z9mUV;{C1H!S2VIeeD}dWkT*NRZyn*3=ful7ae@j$--016{nrH0*!bePRVt^2Q%b^7 z(@q4?8dByCY%?GN?8k^t)BuzLbHS4m#%=)03Hf6GMVT1npOiUMXH2YghSK%erDH>m`Cu-H+m&r=0efAYQl^fj!QO1{eF-;*I zF2(6A93mACz~>GKOl{#y&JF~lK69)F?G>&oXbIS$+mI@#_NL`W=%deKi*Ib`7GAdo zVIZM$3|m&e?@{@de7l}R{C(p9tcE8w3V2lfge1t-r;D5jo+mrh=SG_DcHkA3KB0>37jjYS%ZI1kuai}?bP1V z)CbKsw|IsV=sy)!)%--3>4p-dFuJK5Ye%@N9lT{Xf{TI>3j$s8W5>Rq5bo*O7aS$} zvwNQe8Lka8J;Uzx-8T^Hy5~PJe4w#*+;MbU;?Sn3a*|t`1`imdxZ<2Cc^n%|A%UQU07_hL^RzKU zJi>hkpy=Y9kBjGoNp`Jct(}1bGe4ob&n>-CJxO-$l-2DiX(|Q!{Q{NF_T?bDQzXEX zw3ItR43Sdogf&y*?1aCk#M%j`r^MS0!b3@NWhhdop5(mNi0ISf0um!76pNSTMg0#wqO+pI;7w>O-SPz z4h4ZU^VW#!VlM)Wl&wGCN^9Y{(1{X{M~Q8jC`I zSpRBF$;KNvz^rNG6L{B2qFo@WSUV4dY&QHU8x+E}}bGFyoZ*pQUS2`SE3uN*=Q z*}K2O5|;^S#G(EP%bm7g_9Kaw+S`vwJW&zN>}$D0xxg>xAVu)>l!^#yD}hEh>KtHk z&a6@oi~PV(Vs&aLMMnQ$pLyK+&9Li*P^J0w`~nT-Hq8~GLo)u33zRw)V{lA{8;#3} zT4r0Ews1+wzPZ44d%`uvOYUXVgdhm3=n;|&k2NJU8@QoJV=U}ccgO+qRzSnns%EV1 zJ|s~9u28UfNRd_|Lu=j?k-i_7HrG`x;eo-es_smzZU@)EvJ6&M<;aqZbZjlB!A+A| z7d)vBGdI6XwLa)n4#d6NujhYTCK?ji1& zhVnN`S04q;^&0-#M&OSrpATg;MfT~1-^k?Uy|Lmo zO!;Bdwi(I~2*m$aAl|U#=^IER?Jt0~Av}Ww?btro1(cI&UpW~TpXZ4}`F(SU-u1xR z(jf#H4NQZ`#DOB7K=%++8(gL|KDgBamxS^YzUy&|BKrUp%@TZp9k3gw*B*4}0Q_H# z?89j2T{c3%>-QwY&guK{$&c2vMNdMQAqi&v+NGa|zeGKOK4I-4(j`;?Zi7gM`?$aI zmP?ZKX9DOuE@yN7iO0T!`r(E22<0APF6wt8+`&FZTsweg{~?9M?`Z()FUJI4^D1s2 zDbk0Y6Wxx3xPPmF{pA>@V0EV+drkvCJ>Jb-DRmT-Bl->Gq=x4a?FX?{U!@O8jCchA z*@`DMzZqe~ka+@!|Ea~x?!DTt~A?F4X#}3dNdx*t`06Fq7Z%7D74e@er>NXsEh`nrkh$fQ^0KnE&?`QL- z^@ae1)3uHP^Fz)7w^*)C*-Rq2dsVJ+Zy86O=Kas~YPz)Sp8fCox-YkL_jFhw2@dw z6q*MW9{0u=_0%eZE8x_ys_SX(DmO#$W}?15dZySVW9_e+o31^G-6Up#fn7PwY#g%J z0)@0mfkLOOW&0^RrQ^w#tobbfPAT>hcRoyb-sXi1qmWOsESV;pQ{Ps@zKz`Awit={ zE^IKAxSzFkpWg%k%R0Jd9RXlUK441zg83?2@~k+4_whNc%p-FoumUQ_t+ut@KmatB ztRsPo0mE$wLPvky#P_gWR@YT?{9j5VS$F?4*k{=iuJgHm^WX)mpoK{#d5pj5tc7i^ z;zh6i@N%!r!jyFk$vRTFkQrg|X6!Y;s$STDK;L0?H7DFZ46tfTm| zOb%HVL1S6YDZBIx=X7_;lwJTaxRN#oo*So&C`e-(kjx`*uBo{58ORHDh)-~K=^f{+ zEq>sfQ(v*gIj0`s3QHHf)FJu1@TAFLsn$*Tbe&wgB{vPHi?`XQ4e76s7j*2EVn>yA z)4*kK;unJ&HA-YD52g&HH@xnQs~nw}9Osom1{ztrO%x1KXb3iqTf?z) zWR=IzO1V)XROt(uLTsyT@6JGC6{NA4OJCx_bTT#K^-e8D4W)lEfBpWr%P*^Q_)8d( zl-?7{i!%Lv--{5Y$h%9Lis9$$p@aP`J>%~xFY8xTRFSx|aRU+i!1`WH<@o-f&q@+7 z58Vz`N++bmmr|5u#8W~vr)jDv!?KgI6c9~;wyHvOewqe3ntPL7K+7#?Bf2(;S> z8kqC_d_H^|`3Cb4N4aUEg4J1a)0#k`HcON{Ww=6o8Oirzs97a`}wZ6{c<-&|kRx96%0*;cQK)Dfa7F zTvvaz;}U9# zpG+@ihA*J78lZ3!6DG`+k`n&r#LnW;=*vY(;Sg&{Q6L5jG?zU$fH)AE#S%4CYb7sh zQecN#2Ts3CBFM!g#6?9_tqGvCs2=neC1GJ)BsE!KCoHT(;lgjwfQ>sP#haq+9_1r3 zyV_V!7~m*T=i1dtyvS>omu=6_1bZJPsD=LAfI|3B7U)R{0A~(`|Lu$e3S=Hetz%w2 zW-|P^1n#6MOS4122Pq|mH5CPamCG;ewgbDccHwxLOqj4hRbsyh3yCr%!&Tv=4sIv7 z8-e0D9>=we&n(|oylk>vHQa)654$Du)x3Z%yG>5z@0R151sQkjsoh1$6Ztkdm)He9^ebR4@IS95W7Gp> zP_C%G!0dWmU_EO}_Sl70=m5qYpF)!{^RHadv|L4{L%{uI91iZu9dSmfM$6(AVwLa?7Gv`52D|cB1!M~}c;VJS5bpjEaNlV-NF;{l z{hI*!Ap{p1)|fqOmM4gaoHS`kkm+dLLdLuhVF_W0q^O{*bKt|ionpL1NK>A=psbj_ zcD%6fv-ni}Lc4N@hJ$3BDaJvg9nq*c!Ckh0W_TNxp(~?dH0j-h=^s+%cZj~3{+ZNR z;9N_BvRTSz2V3%1geAMQ;RY#x8L|fV!6ylT@W+tiWKaMfiIt2%78l;AwAoc*2Tedf zadk=1AUMD{lp6tD61yE^yp@#9s$)mR88yEZUx@d2niR9}&3ymX;ZaFc6e6|QRtig> z-V+-eQBR(JwJ}WrM||n<)|oOnHwVO$oX7J@z<>w1)>?&2hc418@}}iHd^OXY*SX53 zj#SZ*%cArV=tYN{V6(K7JC$wc#wz^HX$mdkt+*+yunt-_D?D8&ds>tzk=2U>i{a1l z7{nn-F|ivY%I6*CI30sw!q^>!ScT z!~<^Z*>yem##3lG>V?B%#Cmbg=JEBk@x(GH>PEX?YDc?k#ZMDan;S-FV>W!>3~0{# z`iS9Ag)KD>R&%)N<#hc-n&;KpH4b>;2C#l>*ZGM6ra?f^HBx3MCy1$TvHU~;M{~pl zd_>|Do<2`R=FD+GyjqV2A_BU(IECf}u^3<)yg><$F`?lxO{94afMkROIS@Z%s_r-h zfnIhK2c>TGbuW)LqEMU{3|*rYiMF1BR*`!w;F6a4dZ3mx1NYyA3VAZ!lpZ@sCbfaS znZ#M&Cq4co7TcvXNO9Bq4|Q1nAL@jV{;xVKIDk4%s4m~PGqit$86CVh#yOSz1!RMc z1$nm?Dbw~ZQp~isw>}A3ufPAR@@N6SsBRA^5YRF7f7I!7GGT~iv;gbybU>N-8fP|@NsM+u4R!Xd1^;sE{L&F)V^!T`avA(sxU+(j<>CsuF z0ec{kA0B$OHmMdRgi*EhhPB1QfcaaNan(JQaeR`!cdQyNItW+Slo!3!M*$aPzStOj zu3aX+)Q;q$Yhrb<&XS;BvDEzXbD!>>%U&y?h}IIJpBUQM z*5wCU-TvhH<-ks)!%s!E8ua7BW4Od*GRy#s!8Ezpa6Y@&fP$4(49pIiI{Tm_{n^Zy zNq8QLICPKPAo3TxOmK#Uj;PplRJbFdNfWoI$QN=lf{O(_!DDdD3YO zC>-!eE)N7L2(YZng(z~|v_rBe8E{KQmS4i*8YK&Hx1yoB(E|2~9pn*S4%sPU4qxBI_P5|Q4TE}Zk7mLwC;*2vAQsBT8rA!p>#yWb_0bDp8NXIiRk-c9rjD( zx|E@=i}?w9PmMj}umo%SSGMX4(@Y^Br`skY>8re#iV+_q=ZOuOpEA}(x?`IV?3X56 zDBu$=+av_WG$;5#EUQJ=26aw$EaK z5e{h9v%CKwUTNPblIcr4GbUa~qF^(k9WEJD6JRma)XPs64R*|qdvc;vqOvU?>?!&k ziM)^X_RJ8fd$|{jMg%`XHVua?;PB)!O^X*&ZGqvWN)X^8I+-`WF13j{V}wbu6!>Oq>6e*67&DGorZk4(afN^U_#ldn%tIEK@RKXS?Rpt z^c5`UNmY@8_m{2{E4R1E|EG+`4wcZiOJv0JJ2s>7dSR8Yg zyK6g%lsVeJf+=cg+}a~_U3pZWRzx6?S<6J>XoT_566fR+lL=cqPq@_5gylJ0k;ah+ z>@-xQdC31L0~rGak$7)?c+^H$U3Gdoot?|1_}zOLf>^RhIg$w@T%bVC?qEIlz_87(@X)$usq;KGDA-yrGoY(JUTMH6nM3=Z<>0xW!DA#ak9*j=QnpHBMiE~6)@Nz7vjy`IH)n&89vSD3>hH~#BRmuI~(@H3(Nwo7)L?> z21EMX!qmZ;Pj0RvcwQ70IzO64VOC3PmSrO`i(od|1M}VB-I3{cQ)`dzWKRyCjWk@? z>&z`VibPoDI1ZybPwb}oZ8Cqe&W^I4-9caS9bdB2NM-GwEjS3nRNarmZ(-BUuPNQ+ z=OrF8)uQF!ZvLz0a-tw{>oB0)dj~ZT5Zb>ENhdR7Yh#8#Tc$r1&NO9g*V!?`s#1i4!~SA57br(z+TM1rQ6^& zBb?}BQmutkDmWYs$$Te+93g(@_3F`8yk0sF!3X{oYA^lvsClU94o|pUjPN*e+2k4U zKD3Oz1M-4Ex+r$pM73wRQuDPHrUnYb9ZI})rlz;~5C&PBDyfw&gs4Xt^kAY5*%%-7 zHZDpEApkOdnWV^~ZG+Yw=@lL^V#&q-Uk4$&yYf%+-)W>#;XH4@QBIeh@GRB8u;-T(1q1Okxrwaj3$y`O>ow z1N>R^f=H6;OQ)-Dn0G2K4-XR==H}(;tl-x=H7l1Y^Boksv&}^!G|#9H-WBr_60smd ztl;rZ6HyME;t5H`$#M-_r%u@CL2Eh{SRh1U%s((;l9H-#RGh0RSQO86u_ul$Wk5H|ha^y3 zPC0MfghpM3G{DY9ZX~OQg~n(0A{A_f=^Kn+%$&MAPE_|@hl9+w{)Q`{VGzCC{q1>w zJ!Ph^LX1J@^ULAV{zwh}n>JVv^qW1(`_V6kckdUfr}Jl5+ib5UpwWchZJ(Em7Tq3g zUnGga^O~Huo4vJjTfX0SArvC5@DL#q8$h0+0X!!_7xHq{x{YMm^<;UV7<;5n0|bsI zLg4iN4}leZSJFg&BEAUocy>8s23n!5Ozx#rP3QGt;v>nyt%n}i1`&$$d6la`Es2;C zfMS<7AZ@Fp(5rrSJ@S<{)PWue0!P^N8-?e@GD+6N1u)TZF<|nJPKbHLub`1^zpeB$ z6lBFfczbg}?dymj-6$tdGFB6!v(d-tg(MqJmcPyB71|BRG}Z_iwSQ4;g(gnNu;~r+ z)u~gRC6O4lrrh`<;!-lXj5`tpSIk6=dXGEkPV_{dVL`na-()XnWF1#lB9z+e85Fx7 zJ5OqqaOM2<1boOte_O_%Z_kriiEy%I_P~bv^^$Hz5dJQfZ+;mq=iX8 zj3b&tSFrRLRQ{k#IgyD+#+mCXziQ8&QHRvJRnnVmbKJ@{-&-&DW^kjvetpTW^)CYL z70y(S*CBI@?7M^8qRf6Xp5NW&cz&3hmX^>}N>=mJK^118SoO7Pha$3jH|Kc)~ zn7giR>#LnUd^)jKFlWYl5W$e|N7G~RJuy-}43`BH0Yr3&LcO(v9axwx2+x<^5ZUR)T#jxe2@uQ%;{JU>Td&!BNZPbg4%M?YT zm$&9+3SpRX;xUr@sU8PUm%69OQHA}|SuY1^a>?RUG7Z?~6b&dS2c?WM;Lp67GY*kz z4w?AK?X!X-8Y#8jMJ~++rHo}Mvp*a2t2!ya_xszHZiX*&pgZja1T;5om9o?74dhx! z9pH(1KY+9ms8u1y*KIdj_07*&T!4@KjI;UW?3iByT4kk~Z26d3{b?Q|GD2o_Gn7+1 zshR!;zPOzIY@Dp3NyU6gb5S$tr%J@h7}Bm8>z8ImQFjCCCTCVd>JBGjq;=;kP)5>E z&7eijXA0chsS}_Y&hNcOeq}SvDh$_0Aj#f8Y)c(?zleiiOvA|1^lS+`twn|&%6azX z-p<*Li&oTsy~O)YUs9jBesyonQGquq#ztWXrKKZ_30BV8NH-oRW!wR)ZS^y)b0JkZ zQ5C2@l?oK-%iA@-(66##t`v&B87rv+73qr|COvg_{axn3=Ap^0-!?0fOK!PPu&Y)H z(m|8ozi3c0rkaL6B4d>rY$@B+`|{YzuC-U}I)bpXRjw@Ww*KzvLRsEEER$Et^NtVM z@t9Mgwnx(9r?ZyZo6M0f^pI{*!2uV!>cKw(rPR*lJ8*|#$snXD=;p3LJc*vSwFwr91^S4fM zCBtHGWF6VA!3lA;*k|KZZeVxEFmG{!hHS5g|dr7qhs;<)mbJ>Yp!LikX->R7PS<^Xbq>d!!l|Ugl$p= zJqn04l4v7JQaJo95d((cX5BWql*T!boMg451v10yKrd>9lxy>gq3hS2F`c6QJiS_; z-@9qF&<-)2Z#7?^Ape<*W&3iklmNc)AOP9xC&0U*v!j!(wYs$xgSnHj^`Ec3s>nK+ zenwQFpWY&4@ngl@p{NUrNEFCR{Jc97xI+p$4-$mTtVS|ZG8NNsZgm4Ek^{w{9veg5*JeUr1XB$JF|{j$ zKdB0ZejByJZ1n$BKI9)^rIzeT-o%P6#&Bd#*0biLiiatW{6b$1!Kr^)MVGxv7F5#; zlVRi#xU}|Py7ahP-_op;$)Jz>9KSzSt>5?OAG%GhYrOZ=* zL;+d*VnA+e5*TO2^5QY3-9+&M{6I%idI4Ln7Pv8@+99AyL)@~Gt*Tc zn74<1?Uufy4AhMsD2ALN52*~Q?_g`^_@`I1V(V-I7*R!ByZdkV z#+Y)!%uqwcfv7B(B){Uh`I1?YtP4k#zkAAXvl))KRy$oS@!;|w2HNOV&Qep%k&{9x zSMcNoXLk0mv675(S99~3gLAb7kc|*?I=O7yk5nx{&?AuE;vc3>-JEQ6noc&8h}&>@ zKpYO};EZMQPxU%&N1#)0(xW6A+GCPee(jX<9)%|Pfeu(z>hP+O?A4mDPIht45BTLK9t&Ju+dV?8~KB&{p+9Sk=~0=x>D1@N?38y(iu+CQsJ-l5xnV zyJX_0{~D#m&W40p0_J4G0NLHY#~e1!)&|B7fLWQ3>~2bZ(`JtovunFVAWl@fDJ+2% zjI}XeK=o^sC`r>D5IJV;Ssg`pD8Eg7e5uD*HBQVXIp&)%zy8`$ISdfUY`d?p{^;R zROkLqakKheJT20SCyFDq|2}z7{W`Jcz)xNVPlp?fjCma^0s2$BR2&rcMK-8XGeh-{n9iLTAe(qv; zS+!Q7&t7RMkBLO3*Gx7ky9I`!QIj>eIe15p;w5cB1P+ieNhkG+)U zGWXtrh@v7|eax5RmfXHPrIbuYuqGM;^~$ig+84I22=%;`bw8J#CC z8rvCSiHim!>`k^-w$G{2sFTW2uY6(HAW^WPDV|^BCNoc?^Nfl0(|e>${zKgg>njTp z8w}p3`{Nzsw9`s2X<{qCi7bWQ<36u8W$5D@;)2HP6g)RncSNjiiC~HRhXcoJjElkA z=If+2hIP{42_u56LPz$6!6wV@++;Lxo1Eei7a!$iXEL+9`X$JA$)B)1st>bOR8Py_ z@Cy0pS%ZIk&k1Rd6BFrcJf=>=L09KrtO`sFG|qQEKE6v)rKNuFyG9;A5Bnl9sJs0M z^-i5=vK*s`!raEWIBt;WUd%L3GiE$?FYyE5m-> zI;csn;upn;mY(I^C{7g~7MGyopPn{!coA^k+U4hH!bklfQ`I%iqYw{fSDyCbCw-3A zwVpL+N4OPlV>H@gG_q{CM0F&D(UI<>wLa4vDnfjw``C22 zWD2~T&g75mvFlNcO_^OVEI8nZX?vAEP+p(C49ifq)X+SC*f%$^Y0fV=x%xoir7UN> z>6kljd)ptv7|c}QT~}oZ$F^BMj_8>|WMG6mR<(6Gv(yq|+xW6}6(5kk5 zU)z%uyx@s01x+N*oFg6f_Un7fV_MvJ<7al33}JU;NB%?iPmzw$-P`+WoHK7LU&uGg zM6JuLW;ZBFn5`b1I8~J(fV^((*CR7{?yWWz!~Y0NqMi=9N_twYp4=Tty3NhXaeSZN zFn?5sJ+oXohE0{{U`YLkSco<2Cob0|^*}hwAap=S2-pfWA;jgTem=IG2Y10rTl`Jb z84=aA(E7<_F10M7WCN9yHL9LklF(m--rfr`#B%Y4 zq+5abK5=|z2y~VJVTvTF45~DldG7JZcK+X)R&{4F-(4;-@>62EiBOHmZV^M5j z=7UFREwJ%b(Uns8MVLg?+W{Kmou^t1bvIqJt_nRr{(l4H8{yf6#*({bhx^87+U1ib zAKt|@7=#Yu1_S2BEu;>Wrq1T!Xs}wVX__oa?iR35v6`-HMbV;rFJd9hB>38jr@26Q z8EcyERDtR%Di^D9f{|K0=1`mo1_|w1xEErG@K+eol3jr}%PO;G)42<-unSg=3!n#N z(2sIBZFmdfrR`X!a>wt)nN+G5Iy69%>(_#3@c!HdCJ&2y6NBugwV1C`_^}(qVpuy0 zX33P9#%oB2R}sDvA>5*`&G%nKtB@Ptkb}CNPVp`7mSyMjZoh&igiEQSTs-Iges@Ed z%zG4PUoiDyEYGr}SJ3`GL(B1(KnzaL1fytJSM5zCN0&0{5Tl(C7E-r%TIcy^+aioAad0NW@==v zP)BGUWSG0KM9a*;c&8=2w55?zYu@AMc>N#qJ-|Tsy576B;}1hUZnat8%!r9uh~;~E zoCA`dqjkCB;{B8iAVO^iYHr`tj-Lk_7=u7;P5{MV7cYN=MX!C+hrx49c|NiP5jYy&5Okzel~ryIVTm1r>jX=q4v z7Qj7OArSs;cmy!=3wQAL-s!I4n4C*g4hY297(974V2I7m0U!}@9eDPga4)p@ZZ%-? z4qz&YZIhSt{lNcw^4~>vv;wwV)&D0Iw27^8?3DyDkNw;+1H-GB<)** yf>pq&)|N_N><_DKOT555I3C>MZzTTaV%wubGb1*@gT8x}0K@@s4~LZRXa52Tq|oI6 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlQualityModelPredicates.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlQualityModelPredicates.scala deleted file mode 100644 index 76d52992b..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlQualityModelPredicates.scala +++ /dev/null @@ -1,141 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.params.PushConstants.TweetMediaEmbeddingBQKeyIds -import com.twitter.frigate.pushservice.params.PushMLModel -import com.twitter.frigate.pushservice.params.PushParams -import com.twitter.frigate.pushservice.util.CandidateUtil -import com.twitter.util.Future -import com.twitter.frigate.pushservice.util.CandidateUtil._ - -object BqmlQualityModelPredicates { - - def ingestExtraFeatures(cand: PushCandidate): Unit = { - val tagsCRCountFeature = "tagsCR_count" - val hasPushOpenOrNtabClickFeature = "has_PushOpenOrNtabClick" - val onlyPushOpenOrNtabClickFeature = "only_PushOpenOrNtabClick" - val firstTweetMediaEmbeddingFeature = "media_embedding_0" - val tweetMediaEmbeddingFeature = - "media.mediaunderstanding.media_embeddings.twitter_clip_as_sparse_continuous_feature" - - if (!cand.numericFeatures.contains(tagsCRCountFeature)) { - cand.numericFeatures(tagsCRCountFeature) = getTagsCRCount(cand) - } - if (!cand.booleanFeatures.contains(hasPushOpenOrNtabClickFeature)) { - cand.booleanFeatures(hasPushOpenOrNtabClickFeature) = isRelatedToMrTwistlyCandidate(cand) - } - if (!cand.booleanFeatures.contains(onlyPushOpenOrNtabClickFeature)) { - cand.booleanFeatures(onlyPushOpenOrNtabClickFeature) = isMrTwistlyCandidate(cand) - } - if (!cand.numericFeatures.contains(firstTweetMediaEmbeddingFeature)) { - val tweetMediaEmbedding = cand.sparseContinuousFeatures - .getOrElse(tweetMediaEmbeddingFeature, Map.empty[String, Double]) - Seq.range(0, TweetMediaEmbeddingBQKeyIds.size).foreach { i => - cand.numericFeatures(s"media_embedding_$i") = - tweetMediaEmbedding.getOrElse(TweetMediaEmbeddingBQKeyIds(i).toString, 0.0) - } - } - } - - def BqmlQualityModelOonPredicate( - bqmlQualityModelScorer: PushMLModelScorer - )( - implicit stats: StatsReceiver - ): NamedPredicate[ - PushCandidate with TweetCandidate with RecommendationType - ] = { - - val name = "bqml_quality_model_based_predicate" - val scopedStatsReceiver = stats.scope(name) - val oonCandidatesCounter = scopedStatsReceiver.counter("oon_candidates") - val inCandidatesCounter = scopedStatsReceiver.counter("in_candidates") - val filteredOonCandidatesCounter = - scopedStatsReceiver.counter("filtered_oon_candidates") - val bucketedCandidatesCounter = scopedStatsReceiver.counter("bucketed_oon_candidates") - val emptyScoreCandidatesCounter = scopedStatsReceiver.counter("empty_score_candidates") - val histogramBinSize = 0.05 - - Predicate - .fromAsync { candidate: PushCandidate with TweetCandidate with RecommendationType => - val target = candidate.target - val crt = candidate.commonRecType - val isOonCandidate = RecTypes.isOutOfNetworkTweetRecType(crt) || - RecTypes.outOfNetworkTopicTweetTypes.contains(crt) - - lazy val enableBqmlQualityModelScoreHistogramParam = - target.params(PushFeatureSwitchParams.EnableBqmlQualityModelScoreHistogramParam) - - lazy val qualityCandidateScoreHistogramCounters = - bqmlQualityModelScorer.getScoreHistogramCounters( - scopedStatsReceiver, - "quality_score_histogram", - histogramBinSize) - - if (CandidateUtil.shouldApplyHealthQualityFilters(candidate) && (isOonCandidate || target - .params(PushParams.EnableBqmlReportModelPredictionForF1Tweets)) - && target.params(PushFeatureSwitchParams.EnableBqmlQualityModelPredicateParam)) { - ingestExtraFeatures(candidate) - - lazy val shouldFilterFutSeq = - target - .params(PushFeatureSwitchParams.BqmlQualityModelBucketModelIdListParam) - .zip(target.params(PushFeatureSwitchParams.BqmlQualityModelBucketThresholdListParam)) - .map { - case (modelId, bucketThreshold) => - val scoreFutOpt = - bqmlQualityModelScorer.singlePredicationForModelVersion(modelId, candidate) - - candidate.populateQualityModelScore( - PushMLModel.FilteringProbability, - modelId, - scoreFutOpt - ) - - if (isOonCandidate) { - oonCandidatesCounter.incr() - scoreFutOpt.map { - case Some(score) => - if (score >= bucketThreshold) { - bucketedCandidatesCounter.incr() - if (modelId == target.params( - PushFeatureSwitchParams.BqmlQualityModelTypeParam)) { - if (enableBqmlQualityModelScoreHistogramParam) { - val scoreHistogramBinId = - math.ceil(score / histogramBinSize).toInt - qualityCandidateScoreHistogramCounters(scoreHistogramBinId).incr() - } - if (score >= target.params( - PushFeatureSwitchParams.BqmlQualityModelPredicateThresholdParam)) { - filteredOonCandidatesCounter.incr() - true - } else false - } else false - } else false - case _ => - emptyScoreCandidatesCounter.incr() - false - } - } else { - inCandidatesCounter.incr() - Future.False - } - } - - Future.collect(shouldFilterFutSeq).flatMap { shouldFilterSeq => - if (shouldFilterSeq.contains(true)) { - Future.False - } else Future.True - } - } else Future.True - } - .withStats(stats.scope(name)) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CaretFeedbackHistoryFilter.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CaretFeedbackHistoryFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..f38ac7fa070304bdeec76253dfaa1156d8b5165a GIT binary patch literal 37369 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 Seq[CaretFeedbackDetails] => Seq[ - CaretFeedbackDetails - ] = { target => caretFeedbackDetailsSeq => - caretFeedbackDetailsSeq.filter { caretFeedbackDetails => - caretFeedbackDetails.genericNotificationMetadata match { - case Some(genericNotificationMetadata) => - isFeedbackSupportedGenericType(genericNotificationMetadata) - case None => false - } - } - } - - private def filterCriteria( - caretFeedbackDetails: CaretFeedbackDetails, - genericTypes: Seq[GenericType] - ): Boolean = { - caretFeedbackDetails.genericNotificationMetadata match { - case Some(genericNotificationMetadata) => - genericTypes.contains(genericNotificationMetadata.genericType) - case None => false - } - } - - def caretFeedbackHistoryFilterByGenericType( - genericTypes: Seq[GenericType] - ): TargetUser with TargetABDecider with CaretFeedbackHistory => Seq[CaretFeedbackDetails] => Seq[ - CaretFeedbackDetails - ] = { target => caretFeedbackDetailsSeq => - caretFeedbackDetailsSeq.filter { caretFeedbackDetails => - filterCriteria(caretFeedbackDetails, genericTypes) - } - } - - def caretFeedbackHistoryFilterByGenericTypeDenyList( - genericTypes: Seq[GenericType] - ): TargetUser with TargetABDecider with CaretFeedbackHistory => Seq[CaretFeedbackDetails] => Seq[ - CaretFeedbackDetails - ] = { target => caretFeedbackDetailsSeq => - caretFeedbackDetailsSeq.filterNot { caretFeedbackDetails => - filterCriteria(caretFeedbackDetails, genericTypes) - } - } - - def caretFeedbackHistoryFilterByRefreshableType( - refreshableTypes: Set[Option[String]] - ): TargetUser with TargetABDecider with CaretFeedbackHistory => Seq[CaretFeedbackDetails] => Seq[ - CaretFeedbackDetails - ] = { target => caretFeedbackDetailsSeq => - caretFeedbackDetailsSeq.filter { caretFeedbackDetails => - caretFeedbackDetails.genericNotificationMetadata match { - case Some(genericNotificationMetadata) => - refreshableTypes.contains(genericNotificationMetadata.refreshableType) - case None => false - } - } - } - - def caretFeedbackHistoryFilterByRefreshableTypeDenyList( - refreshableTypes: Set[Option[String]] - ): TargetUser with TargetABDecider with CaretFeedbackHistory => Seq[CaretFeedbackDetails] => Seq[ - CaretFeedbackDetails - ] = { target => caretFeedbackDetailsSeq => - caretFeedbackDetailsSeq.filter { caretFeedbackDetails => - caretFeedbackDetails.genericNotificationMetadata match { - case Some(genericNotificationMetadata) => - !refreshableTypes.contains(genericNotificationMetadata.refreshableType) - case None => true - } - } - } - - private def isFeedbackSupportedGenericType( - notificationMetadata: GenericNotificationMetadata - ): Boolean = { - val genericNotificationTypeName = - (notificationMetadata.genericType, notificationMetadata.refreshableType) match { - case (GenericType.RefreshableNotification, Some(refreshableType)) => refreshableType - case _ => notificationMetadata.genericType.name - } - - MrNtabCopyObjects.AllNtabCopyTypes - .flatMap(_.refreshableType) - .contains(genericNotificationTypeName) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CasLockPredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CasLockPredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..ffc74d3d508cdd60f49ed268813be75c9eb3b8df GIT binary patch literal 37302 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 z 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

      7!ruC`A-IoiKj9!}irs0XUj;|aw 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 z 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 - if (candidate.target.pushContext.exists(_.darkWrite.exists(_ == true))) { - Future.True - } else if (candidate.commonRecType == CommonRecommendationType.MagicFanoutSportsEvent) { - Future.True - } else { - candidate.target.history flatMap { h => - val now = candidate.createdAt - val expiry = now + expiryDuration - val oldTimestamp = h.lastNotificationTime map { - _.inSeconds - } getOrElse 0 - casLock.cas(candidate.target.targetId, oldTimestamp, now.inSeconds, expiry) map { - casResult => - stats.counter(s"cas_$casResult").incr() - casResult == CasSuccess - } - } - } - } - .withStats(stats) - .withName("add_cas_lock") - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CrtDeciderPredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CrtDeciderPredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..f72eab8fbe76c111de61888b418652fd31abe461 GIT binary patch literal 37006 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

      nl-J%^-)t@)*743y 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CrtDeciderPredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CrtDeciderPredicate.scala deleted file mode 100644 index 4b1abf221..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/CrtDeciderPredicate.scala +++ /dev/null @@ -1,25 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.decider.Decider -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate - -object CrtDeciderPredicate { - val name = "crt_decider" - def apply( - decider: Decider - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate] = { - Predicate - .from { (candidate: PushCandidate) => - val prefix = "frigate_pushservice_" - val deciderKey = prefix + candidate.commonRecType - decider.feature(deciderKey).isAvailable - } - .withStats(statsReceiver.scope(s"predicate_$name")) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/DiscoverTwitterPredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/DiscoverTwitterPredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..da5c67d981d1a7f420548084d7f4bfd7dc55a578 GIT binary patch literal 37386 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 TargetFatiguePredicate} -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.hermit.predicate.Predicate -import com.twitter.timelines.configapi.Param -import com.twitter.util.Duration - -object DiscoverTwitterPredicate { - - /** - * Predicate used to determine if a minimum duration has elapsed since the last MR push - * for a CRT to be valid. - * @param name Identifier of the caller (used for stats) - * @param intervalParam The minimum duration interval - * @param stats StatsReceiver - * @return Target Predicate - */ - def minDurationElapsedSinceLastMrPushPredicate( - name: String, - intervalParam: Param[Duration], - stats: StatsReceiver - ): Predicate[Target] = - Predicate - .fromAsync { target: Target => - val interval = - target.params(intervalParam) - FrigateHistoryFatiguePredicate( - minInterval = interval, - getSortedHistory = { h: History => - val magicRecsOnlyHistory = - TargetFatiguePredicate.magicRecsPushOnlyFilter(h.sortedPushDmHistory) - TargetFatiguePredicate.magicRecsNewUserPlaybookPushFilter(magicRecsOnlyHistory) - } - ).flatContraMap { target: TargetUser with FrigateHistory => - target.history - }.apply(Seq(target)).map { - _.head - } - }.withStats(stats.scope(s"${name}_predicate_mr_push_min_interval")) - .withName(s"${name}_predicate_mr_push_min_interval") -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/FatiguePredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/FatiguePredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..ba322f1022124f77d61f4ae1c57b9eb318bde291 GIT binary patch literal 37376 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 bk+K+S>oCBZ6_|rSxk`{B5tuzXdqF$^v%A|} literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/FatiguePredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/FatiguePredicate.scala deleted file mode 100644 index 457dc879c..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/FatiguePredicate.scala +++ /dev/null @@ -1,74 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.predicate.FatiguePredicate._ -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.frigate.thriftscala.{NotificationDisplayLocation => DisplayLocation} -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.util.Duration - -object FatiguePredicate { - - /** - * Predicate that operates on a candidate, and applies custom fatigue rules for the slice of history only - * corresponding to a given rec type. - * - * @param interval - * @param maxInInterval - * @param minInterval - * @param recommendationType - * @param statsReceiver - * @return - */ - def recTypeOnly( - interval: Duration, - maxInInterval: Int, - minInterval: Duration, - recommendationType: CommonRecommendationType, - notificationDisplayLocation: DisplayLocation = DisplayLocation.PushToMobileDevice - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate] = { - build( - interval = interval, - maxInInterval = maxInInterval, - minInterval = minInterval, - filterHistory = recOnlyFilter(recommendationType), - notificationDisplayLocation = notificationDisplayLocation - ).flatContraMap { candidate: PushCandidate => candidate.target.history } - .withStats(statsReceiver.scope(s"predicate_${recTypeOnlyFatigue}")) - .withName(recTypeOnlyFatigue) - } - - /** - * Predicate that operates on a candidate, and applies custom fatigue rules for the slice of history only - * corresponding to specified rec types - * - * @param interval - * @param maxInInterval - * @param minInterval - * @param statsReceiver - * @return - */ - def recTypeSetOnly( - interval: Duration, - maxInInterval: Int, - minInterval: Duration, - recTypes: Set[CommonRecommendationType], - notificationDisplayLocation: DisplayLocation = DisplayLocation.PushToMobileDevice - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "rec_type_set_fatigue" - build( - interval = interval, - maxInInterval = maxInInterval, - minInterval = minInterval, - filterHistory = recTypesOnlyFilter(recTypes), - notificationDisplayLocation = notificationDisplayLocation - ).flatContraMap { candidate: PushCandidate => candidate.target.history } - .withStats(statsReceiver.scope(s"${name}_predicate")) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/HealthPredicates.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/HealthPredicates.docx new file mode 100644 index 0000000000000000000000000000000000000000..d878d5992c444e002b6d8102bab90bc58e3e6dbc GIT binary patch literal 42633 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 QRB0@LF+@GE^M3yOKZR2u6aWAK literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/HealthPredicates.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/HealthPredicates.scala deleted file mode 100644 index f11ed1400..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/HealthPredicates.scala +++ /dev/null @@ -1,740 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.abuse.detection.scoring.thriftscala.TweetScoringRequest -import com.twitter.abuse.detection.scoring.thriftscala.TweetScoringResponse -import com.twitter.abuse.detection.scoring.thriftscala.{Model => TweetHealthModel} -import com.twitter.finagle.stats.Counter -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.NsfwTextDetectionModel -import com.twitter.frigate.pushservice.params.PushConstants -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.util.CandidateHydrationUtil -import com.twitter.frigate.pushservice.util.CandidateUtil -import com.twitter.frigate.pushservice.util.MediaAnnotationsUtil -import com.twitter.frigate.thriftscala.UserMediaRepresentation -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.hss.api.thriftscala.UserHealthSignal._ -import com.twitter.hss.api.thriftscala.SignalValue -import com.twitter.hss.api.thriftscala.UserHealthSignalResponse -import com.twitter.storehaus.ReadableStore -import com.twitter.util.Future -import com.twitter.util.Time - -object HealthPredicates { - - private val NsfwTextDetectionModelMap: Map[NsfwTextDetectionModel.Value, TweetHealthModel] = - Map( - NsfwTextDetectionModel.ProdModel -> TweetHealthModel.PnsfwTweetText, - NsfwTextDetectionModel.RetrainedModel -> TweetHealthModel.ExperimentalHealthModelScore1, - ) - - private def tweetIsSupportedLanguage( - candidate: PushCandidate, - supportedLanguages: Set[String] - ): Boolean = { - val tweetLanguage = - candidate.categoricalFeatures.getOrElse("RecTweet.TweetyPieResult.Language", "") - supportedLanguages.contains(tweetLanguage) - } - - def tweetHealthSignalScorePredicate( - tweetHealthScoreStore: ReadableStore[TweetScoringRequest, TweetScoringResponse], - applyToQuoteTweet: Boolean = false - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with TweetCandidate with TweetDetails] = { - val name = "tweet_health_signal_store_applyToQuoteTweet_" + applyToQuoteTweet.toString - val scopedStatsReceiver = stats.scope(name) - val numCandidatesStats = scopedStatsReceiver.scope("num_candidates") - val numCandidatesMediaNsfwScoreStats = numCandidatesStats.scope("media_nsfw_score") - - Predicate - .fromAsync { candidate: PushCandidate with TweetCandidate with TweetDetails => - numCandidatesStats.counter("all").incr() - val target = candidate.target - val tweetIdOpt = if (!applyToQuoteTweet) { - Some(candidate.tweetId) - } else candidate.tweetyPieResult.flatMap(_.quotedTweet.map(_.id)) - - tweetIdOpt match { - case Some(tweetId) => - val pMediaNsfwRequest = - TweetScoringRequest(tweetId, TweetHealthModel.ExperimentalHealthModelScore4) - tweetHealthScoreStore.get(pMediaNsfwRequest).map { - case Some(tweetScoringResponse) => - numCandidatesMediaNsfwScoreStats.counter("non_empty").incr() - val pMediaNsfwScore = tweetScoringResponse.score - - if (!applyToQuoteTweet) { - candidate - .cacheExternalScore("NsfwMediaProbability", Future.value(Some(pMediaNsfwScore))) - } - - val pMediaNsfwShouldBucket = - pMediaNsfwScore > target.params( - PushFeatureSwitchParams.PnsfwTweetMediaBucketingThreshold) - if (CandidateUtil.shouldApplyHealthQualityFilters( - candidate) && pMediaNsfwShouldBucket) { - numCandidatesMediaNsfwScoreStats.counter("bucketed").incr() - if (target.params(PushFeatureSwitchParams.PnsfwTweetMediaFilterOonOnly) - && !RecTypes.isOutOfNetworkTweetRecType(candidate.commonRecType)) { - true - } else { - val pMediaNsfwScoreThreshold = - if (applyToQuoteTweet) - target.params(PushFeatureSwitchParams.PnsfwQuoteTweetThreshold) - else if (candidate.hasPhoto) - target.params(PushFeatureSwitchParams.PnsfwTweetImageThreshold) - else target.params(PushFeatureSwitchParams.PnsfwTweetMediaThreshold) - candidate.cachePredicateInfo( - name + "_nsfwMedia", - pMediaNsfwScore, - pMediaNsfwScoreThreshold, - pMediaNsfwScore > pMediaNsfwScoreThreshold) - if (pMediaNsfwScore > pMediaNsfwScoreThreshold) { - numCandidatesMediaNsfwScoreStats.counter("filtered").incr() - false - } else true - } - } else true - case _ => - numCandidatesMediaNsfwScoreStats.counter("empty").incr() - if (candidate.hasPhoto || candidate.hasVideo) { - numCandidatesMediaNsfwScoreStats.counter("media_tweet_with_empty_score").incr() - } - true - } - case _ => Future.True - } - } - .withStats(stats.scope(s"predicate_$name")) - .withName(name) - } - - def healthSignalScoreSpammyTweetPredicate( - tweetHealthScoreStore: ReadableStore[TweetScoringRequest, TweetScoringResponse] - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with TweetCandidate with TweetDetails] = { - val name = "health_signal_store_spammy_tweet" - val statsScope = stats.scope(name) - val allCandidatesCounter = statsScope.counter("all_candidates") - val eligibleCandidatesCounter = statsScope.counter("eligible_candidates") - val oonCandidatesCounter = statsScope.counter("oon_candidates") - val inCandidatesCounter = statsScope.counter("in_candidates") - val bucketedCandidatesCounter = statsScope.counter("num_bucketed") - val nonEmptySpamScoreCounter = statsScope.counter("non_empty_spam_score") - val filteredOonCandidatesCounter = statsScope.counter("num_filtered_oon") - val filteredInCandidatesCounter = statsScope.counter("num_filtered_in") - - Predicate - .fromAsync { candidate: PushCandidate with TweetCandidate with TweetDetails => - allCandidatesCounter.incr() - val crt = candidate.commonRecType - val isOonCandidate = RecTypes.isOutOfNetworkTweetRecType(crt) || - RecTypes.outOfNetworkTopicTweetTypes.contains(crt) - if (isOonCandidate) { - oonCandidatesCounter.incr() - } - val target = candidate.target - if (target.params(PushFeatureSwitchParams.EnableSpammyTweetFilter)) { - eligibleCandidatesCounter.incr() - val tweetSpamScore = - TweetScoringRequest(candidate.tweetId, TweetHealthModel.SpammyTweetContent) - tweetHealthScoreStore.get(tweetSpamScore).map { - case (Some(tweetScoringResponse)) => - nonEmptySpamScoreCounter.incr() - val candidateSpamScore = tweetScoringResponse.score - - candidate - .cacheExternalScore("SpammyTweetScore", Future.value(Some(candidateSpamScore))) - - val tweetSpamShouldBucket = - candidateSpamScore > target.params( - PushFeatureSwitchParams.SpammyTweetBucketingThreshold) - if (CandidateUtil.shouldApplyHealthQualityFilters( - candidate) && tweetSpamShouldBucket) { - bucketedCandidatesCounter.incr() - if (isOonCandidate) { - val spamScoreThreshold = - target.params(PushFeatureSwitchParams.SpammyTweetOonThreshold) - if (candidateSpamScore > spamScoreThreshold) { - filteredOonCandidatesCounter.incr() - false - } else true - } else { - inCandidatesCounter.incr() - val spamScoreThreshold = - target.params(PushFeatureSwitchParams.SpammyTweetInThreshold) - if (candidateSpamScore > spamScoreThreshold) { - filteredInCandidatesCounter.incr() - false - } else true - } - } else true - case _ => true - } - } else Future.True - } - .withStats(stats.scope(s"predicate_$name")) - .withName(name) - } - - def healthSignalScorePnsfwTweetTextPredicate( - tweetHealthScoreStore: ReadableStore[TweetScoringRequest, TweetScoringResponse] - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with TweetCandidate] = { - val name = "health_signal_store_pnsfw_tweet_text" - val statsScope = stats.scope(name) - val allCandidatesCounter = statsScope.counter("all_candidates") - val nonEmptyNsfwTextScoreNum = statsScope.counter("non_empty_nsfw_text_score") - val filteredCounter = statsScope.counter("num_filtered") - val lowScoreCounter = statsScope.counter("low_score_count") - - Predicate - .fromAsync { candidate: PushCandidate with TweetCandidate => - val target = candidate.target - val predEnabled = - target.params(PushFeatureSwitchParams.EnableHealthSignalStorePnsfwTweetTextPredicate) - if (CandidateUtil.shouldApplyHealthQualityFilters( - candidate) && predEnabled && tweetIsSupportedLanguage(candidate, Set(""))) { - allCandidatesCounter.incr() - val pnsfwTextRequest = - TweetScoringRequest(candidate.tweetId, TweetHealthModel.PnsfwTweetText) - tweetHealthScoreStore.get(pnsfwTextRequest).flatMap { - case Some(tweetScoringResponse) => { - nonEmptyNsfwTextScoreNum.incr() - if (tweetScoringResponse.score < 1e-8) { - lowScoreCounter.incr() - } - - candidate - .cacheExternalScore( - "NsfwTextProbability-en", - Future.value(Some(tweetScoringResponse.score))) - val threshold = target.params(PushFeatureSwitchParams.PnsfwTweetTextThreshold) - candidate.cachePredicateInfo( - name, - tweetScoringResponse.score, - threshold, - tweetScoringResponse.score > threshold) - if (tweetScoringResponse.score > threshold) { - filteredCounter.incr() - Future.False - } else Future.True - } - case _ => Future.True - } - } else Future.True - } - .withStats(stats.scope(s"predicate_$name")) - .withName(name) - } - - def healthSignalScoreMultilingualPnsfwTweetTextPredicate( - tweetHealthScoreStore: ReadableStore[TweetScoringRequest, TweetScoringResponse] - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with TweetCandidate] = { - val name = "health_signal_store_multilingual_pnsfw_tweet_text" - val statsScope = stats.scope(name) - - val allLanguagesIdentifier = "all" - val languagesSelectedForStats = - Set("") + allLanguagesIdentifier - - val candidatesCounterMap: Map[String, Counter] = languagesSelectedForStats.map { lang => - lang -> statsScope.counter(f"candidates_$lang") - }.toMap - val nonEmptyHealthScoreMap: Map[String, Counter] = languagesSelectedForStats.map { lang => - lang -> statsScope.counter(f"non_empty_health_score_$lang") - }.toMap - val emptyHealthScoreMap: Map[String, Counter] = languagesSelectedForStats.map { lang => - lang -> statsScope.counter(f"empty_health_score_$lang") - }.toMap - val bucketedCounterMap: Map[String, Counter] = languagesSelectedForStats.map { lang => - lang -> statsScope.counter(f"num_candidates_bucketed_$lang") - }.toMap - val filteredCounterMap: Map[String, Counter] = languagesSelectedForStats.map { lang => - lang -> statsScope.counter(f"num_filtered_$lang") - }.toMap - val lowScoreCounterMap: Map[String, Counter] = languagesSelectedForStats.map { lang => - lang -> statsScope.counter(f"low_score_count_$lang") - }.toMap - - val wrongBucketingModelCounter = statsScope.counter("wrong_bucketing_model_count") - val wrongDetectionModelCounter = statsScope.counter("wrong_detection_model_count") - - def increaseCounterForLanguage(counterMap: Map[String, Counter], language: String): Unit = { - counterMap.get(allLanguagesIdentifier) match { - case Some(counter) => counter.incr() - case _ => - } - counterMap.get(language) match { - case Some(counter) => counter.incr() - case _ => - } - } - - Predicate - .fromAsync { candidate: PushCandidate with TweetCandidate => - val target = candidate.target - - val languageFeatureName = "RecTweet.TweetyPieResult.Language" - - lazy val isPredicateEnabledForTarget = target.params( - PushFeatureSwitchParams.EnableHealthSignalStoreMultilingualPnsfwTweetTextPredicate) - - lazy val targetNsfwTextDetectionModel: NsfwTextDetectionModel.Value = - target.params(PushFeatureSwitchParams.MultilingualPnsfwTweetTextModel) - - lazy val targetPredicateSupportedLanguageSeq: Seq[String] = - target.params(PushFeatureSwitchParams.MultilingualPnsfwTweetTextSupportedLanguages) - - lazy val bucketingModelSeq: Seq[NsfwTextDetectionModel.Value] = - target.params(PushFeatureSwitchParams.MultilingualPnsfwTweetTextBucketingModelList) - - lazy val bucketingThresholdPerLanguageSeq: Seq[Double] = - target.params(PushFeatureSwitchParams.MultilingualPnsfwTweetTextBucketingThreshold) - - lazy val filteringThresholdPerLanguageSeq: Seq[Double] = - target.params(PushFeatureSwitchParams.MultilingualPnsfwTweetTextFilteringThreshold) - - if (CandidateUtil.shouldApplyHealthQualityFilters( - candidate) && isPredicateEnabledForTarget) { - val candidateLanguage = - candidate.categoricalFeatures.getOrElse(languageFeatureName, "") - - val indexOfCandidateLanguage = - targetPredicateSupportedLanguageSeq.indexOf(candidateLanguage) - - val isCandidateLanguageSupported = indexOfCandidateLanguage >= 0 - - if (isCandidateLanguageSupported) { - increaseCounterForLanguage(candidatesCounterMap, candidateLanguage) - - val bucketingModelScoreMap: Map[NsfwTextDetectionModel.Value, Future[Option[Double]]] = - bucketingModelSeq.map { modelName => - NsfwTextDetectionModelMap.get(modelName) match { - case Some(targetNsfwTextDetectionModel) => - val pnsfwTweetTextRequest: TweetScoringRequest = - TweetScoringRequest(candidate.tweetId, targetNsfwTextDetectionModel) - - val scoreOptFut: Future[Option[Double]] = - tweetHealthScoreStore.get(pnsfwTweetTextRequest).map(_.map(_.score)) - - candidate - .cacheExternalScore("NsfwTextProbability", scoreOptFut) - - modelName -> scoreOptFut - case _ => - wrongBucketingModelCounter.incr() - modelName -> Future.None - } - }.toMap - - val candidateLanguageBucketingThreshold = - bucketingThresholdPerLanguageSeq(indexOfCandidateLanguage) - - val userShouldBeBucketedFut: Future[Boolean] = - Future - .collect(bucketingModelScoreMap.map { - case (_, modelScoreOptFut) => - modelScoreOptFut.map { - case Some(score) => - increaseCounterForLanguage(nonEmptyHealthScoreMap, candidateLanguage) - score > candidateLanguageBucketingThreshold - case _ => - increaseCounterForLanguage(emptyHealthScoreMap, candidateLanguage) - false - } - }.toSeq).map(_.contains(true)) - - val candidateShouldBeFilteredFut: Future[Boolean] = userShouldBeBucketedFut.flatMap { - userShouldBeBucketed => - if (userShouldBeBucketed) { - increaseCounterForLanguage(bucketedCounterMap, candidateLanguage) - - val candidateLanguageFilteringThreshold = - filteringThresholdPerLanguageSeq(indexOfCandidateLanguage) - - bucketingModelScoreMap.get(targetNsfwTextDetectionModel) match { - case Some(scoreOptFut) => - scoreOptFut.map { - case Some(score) => - val candidateShouldBeFiltered = - score > candidateLanguageFilteringThreshold - if (candidateShouldBeFiltered) { - increaseCounterForLanguage(filteredCounterMap, candidateLanguage) - } - candidateShouldBeFiltered - case _ => false - } - case _ => - wrongDetectionModelCounter.incr() - Future.False - } - } else { - increaseCounterForLanguage(lowScoreCounterMap, candidateLanguage) - Future.False - } - } - candidateShouldBeFilteredFut.map(result => !result) - } else Future.True - } else Future.True - } - .withStats(stats.scope(s"predicate_$name")) - .withName(name) - } - - def authorProfileBasedPredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with TweetCandidate] = { - val name = "author_profile" - val statsScope = stats.scope(name) - val filterByNsfwToken = statsScope.counter("filter_by_nsfw_token") - val filterByAccountAge = statsScope.counter("filter_by_account_age") - - Predicate - .fromAsync { candidate: PushCandidate with TweetCandidate => - val target = candidate.target - candidate match { - case cand: PushCandidate with TweetAuthorDetails => - cand.tweetAuthor.map { - case Some(author) => - val nsfwTokens = target.params(PushFeatureSwitchParams.NsfwTokensParam) - val accountAgeInHours = - (Time.now - Time.fromMilliseconds(author.createdAtMsec)).inHours - val isNsfwAccount = CandidateHydrationUtil.isNsfwAccount(author, nsfwTokens) - val isVerified = author.safety.map(_.verified).getOrElse(false) - - if (CandidateUtil.shouldApplyHealthQualityFilters(candidate) && !isVerified) { - val enableNsfwTokenCheck = - target.params(PushFeatureSwitchParams.EnableNsfwTokenBasedFiltering) - val minimumAllowedAge = - target.params(PushFeatureSwitchParams.MinimumAllowedAuthorAccountAgeInHours) - cand.cachePredicateInfo( - name + "_nsfwToken", - if (isNsfwAccount) 1.0 else 0.0, - 0.0, - enableNsfwTokenCheck && isNsfwAccount) - cand.cachePredicateInfo( - name + "_authorAge", - accountAgeInHours, - minimumAllowedAge, - accountAgeInHours < minimumAllowedAge) - - if (enableNsfwTokenCheck && isNsfwAccount) { - filterByNsfwToken.incr() - false - } else if (accountAgeInHours < minimumAllowedAge) { - filterByAccountAge.incr() - false - } else true - } else true - case _ => true - } - case _ => Future.value(true) - } - } - .withStats(stats.scope(s"predicate_$name")) - .withName(name) - } - - def authorSensitiveMediaPredicate( - producerMediaRepresentationStore: ReadableStore[Long, UserMediaRepresentation] - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor] = { - val name = "author_sensitive_media_mrtwistly" - val statsScope = stats.scope(name) - val enableQueryNum = statsScope.counter("enable_query") - val nonEmptyMediaRepresentationNum = statsScope.counter("non_empty_media_representation") - val filteredOON = statsScope.counter("filtered_oon") - - Predicate - .fromAsync { candidate: PushCandidate with TweetAuthor => - val target = candidate.target - val useAggressiveThresholds = CandidateUtil.useAggressiveHealthThresholds(candidate) - - if (CandidateUtil.shouldApplyHealthQualityFilters(candidate) && - RecTypes.isOutOfNetworkTweetRecType(candidate.commonRecType) && - target.params(PushFeatureSwitchParams.EnableQueryAuthorMediaRepresentationStore)) { - enableQueryNum.incr() - - candidate.authorId match { - case Some(authorId) => - producerMediaRepresentationStore.get(authorId).map { - case Some(mediaRepresentation) => - nonEmptyMediaRepresentationNum.incr() - val sumScore: Double = mediaRepresentation.mediaRepresentation.values.sum - val nudityScore: Double = mediaRepresentation.mediaRepresentation - .getOrElse(MediaAnnotationsUtil.nudityCategoryId, 0.0) - val nudityRate = if (sumScore > 0) nudityScore / sumScore else 0.0 - - candidate - .cacheExternalScore("AuthorNudityScore", Future.value(Some(nudityScore))) - candidate.cacheExternalScore("AuthorNudityRate", Future.value(Some(nudityRate))) - - val threshold = if (useAggressiveThresholds) { - target.params( - PushFeatureSwitchParams.AuthorSensitiveMediaFilteringThresholdForMrTwistly) - } else { - target.params(PushFeatureSwitchParams.AuthorSensitiveMediaFilteringThreshold) - } - candidate.cachePredicateInfo( - name, - nudityRate, - threshold, - nudityRate > threshold, - Some(Map[String, Double]("sumScore" -> sumScore, "nudityScore" -> nudityScore))) - - if (nudityRate > threshold) { - filteredOON.incr() - false - } else true - case _ => true - } - case _ => Future.True - } - } else { - Future.True - } - } - .withStats(stats.scope(s"predicate_$name")) - .withName(name) - } - - def sensitiveMediaCategoryPredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with TweetCandidate] = { - val name = "sensitive_media_category" - val tweetMediaAnnotationFeature = - "tweet.mediaunderstanding.tweet_annotations.sensitive_category_probabilities" - val scopedStatsReceiver = stats.scope(name) - val allCandidatesCounter = scopedStatsReceiver.counter("all_candidates") - val nonZeroNudityCandidatesCounter = scopedStatsReceiver.counter("non_zero_nudity_candidates") - val nudityScoreStats = scopedStatsReceiver.stat("nudity_scores") - - Predicate - .fromAsync { candidate: PushCandidate => - allCandidatesCounter.incr() - val target = candidate.target - val nudityScore = candidate.sparseContinuousFeatures - .getOrElse(tweetMediaAnnotationFeature, Map.empty[String, Double]).getOrElse( - MediaAnnotationsUtil.nudityCategoryId, - 0.0) - if (nudityScore > 0) nonZeroNudityCandidatesCounter.incr() - nudityScoreStats.add(nudityScore.toFloat) - val threshold = - target.params(PushFeatureSwitchParams.TweetMediaSensitiveCategoryThresholdParam) - candidate.cachePredicateInfo(name, nudityScore, threshold, nudityScore > threshold) - if (CandidateUtil.shouldApplyHealthQualityFilters(candidate) && nudityScore > threshold) { - Future.False - } else { - Future.True - } - } - .withStats(stats.scope(s"predicate_$name")) - .withName(name) - } - - def profanityPredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with TweetCandidate] = { - val name = "profanity_filter" - val scopedStatsReceiver = stats.scope(name) - val allCandidatesCounter = scopedStatsReceiver.counter("all_candidates") - - Predicate - .fromAsync { candidate: PushCandidate => - allCandidatesCounter.incr() - val target = candidate.target - - lazy val enableFilter = - target.params(PushFeatureSwitchParams.EnableProfanityFilterParam) - val tweetSemanticCoreIds = candidate.sparseBinaryFeatures - .getOrElse(PushConstants.TweetSemanticCoreIdFeature, Set.empty[String]) - - if (CandidateUtil.shouldApplyHealthQualityFilters(candidate) && - tweetSemanticCoreIds.contains(PushConstants.ProfanityFilter_Id) && enableFilter) { - Future.False - } else { - Future.True - } - } - .withStats(stats.scope(s"predicate_$name")) - .withName(name) - } - - def agathaAbusiveTweetAuthorPredicateMrTwistly( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with OutOfNetworkTweetCandidate] = { - val name = "agatha_abusive_tweet_author_mr_twistly" - val scopedStatsReceiver = stats.scope(name) - val allCandidatesCounter = scopedStatsReceiver.counter("all_candidates") - val isMrBackfillCRCandidateCounter = scopedStatsReceiver.counter("isMrBackfillCR_candidates") - Predicate - .fromAsync { cand: PushCandidate with OutOfNetworkTweetCandidate => - allCandidatesCounter.incr() - val target = cand.target - val tweetSemanticCoreIds = cand.sparseBinaryFeatures - .getOrElse(PushConstants.TweetSemanticCoreIdFeature, Set.empty[String]) - - val hasAbuseStrikeTop2Percent = - tweetSemanticCoreIds.contains(PushConstants.AbuseStrike_Top2Percent_Id) - val hasAbuseStrikeTop1Percent = - tweetSemanticCoreIds.contains(PushConstants.AbuseStrike_Top1Percent_Id) - val hasAbuseStrikeTop05Percent = - tweetSemanticCoreIds.contains(PushConstants.AbuseStrike_Top05Percent_Id) - - if (hasAbuseStrikeTop2Percent) { - scopedStatsReceiver.counter("abuse_strike_top_2_percent_candidates").incr() - } - if (hasAbuseStrikeTop1Percent) { - scopedStatsReceiver.counter("abuse_strike_top_1_percent_candidates").incr() - } - if (hasAbuseStrikeTop05Percent) { - scopedStatsReceiver.counter("abuse_strike_top_05_percent_candidates").incr() - } - - if (CandidateUtil.shouldApplyHealthQualityFilters(cand) && cand.isMrBackfillCR.getOrElse( - false)) { - isMrBackfillCRCandidateCounter.incr() - if (hasAbuseStrikeTop2Percent) { - if (target.params( - PushFeatureSwitchParams.EnableAbuseStrikeTop2PercentFilterSimCluster) && hasAbuseStrikeTop2Percent || - target.params( - PushFeatureSwitchParams.EnableAbuseStrikeTop1PercentFilterSimCluster) && hasAbuseStrikeTop1Percent || - target.params( - PushFeatureSwitchParams.EnableAbuseStrikeTop05PercentFilterSimCluster) && hasAbuseStrikeTop05Percent) { - Future.False - } else { - Future.True - } - } else { - Future.True - } - } else Future.True - } - .withStats(stats.scope(s"predicate_$name")) - .withName(name) - } - - def userHealthSignalsPredicate( - userHealthSignalStore: ReadableStore[Long, UserHealthSignalResponse] - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with TweetDetails] = { - val name = "agatha_user_health_model_score" - val scopedStatsReceiver = stats.scope(name) - val allCandidatesCounter = scopedStatsReceiver.counter("all_candidates") - val bucketedUserCandidatesCounter = - scopedStatsReceiver.counter("bucketed_user_candidates") - val filteredOON = scopedStatsReceiver.counter("filtered_oon") - - Predicate - .fromAsync { candidate: PushCandidate with TweetDetails => - allCandidatesCounter.incr() - val target = candidate.target - val useAggressiveThresholds = CandidateUtil.useAggressiveHealthThresholds(candidate) - - if (CandidateUtil.shouldApplyHealthQualityFilters(candidate) && target.params( - PushFeatureSwitchParams.EnableAgathaUserHealthModelPredicate)) { - val healthSignalsResponseFutOpt: Future[Option[UserHealthSignalResponse]] = - candidate.authorId match { - case Some(authorId) => userHealthSignalStore.get(authorId) - case _ => Future.None - } - healthSignalsResponseFutOpt.map { - case Some(response) => - val agathaRecentAbuseStrikeScore: Double = userHealthSignalValueToDouble( - response.signalValues - .getOrElse(AgathaRecentAbuseStrikeDouble, SignalValue.DoubleValue(0.0))) - val agathaCalibratedNSFWScore: Double = userHealthSignalValueToDouble( - response.signalValues - .getOrElse(AgathaCalibratedNsfwDouble, SignalValue.DoubleValue(0.0))) - val agathaTextNSFWScore: Double = userHealthSignalValueToDouble(response.signalValues - .getOrElse(NsfwTextUserScoreDouble, SignalValue.DoubleValue(0.0))) - - candidate - .cacheExternalScore( - "agathaRecentAbuseStrikeScore", - Future.value(Some(agathaRecentAbuseStrikeScore))) - candidate - .cacheExternalScore( - "agathaCalibratedNSFWScore", - Future.value(Some(agathaCalibratedNSFWScore))) - candidate - .cacheExternalScore("agathaTextNSFWScore", Future.value(Some(agathaTextNSFWScore))) - - val NSFWShouldBucket = agathaCalibratedNSFWScore > target.params( - PushFeatureSwitchParams.AgathaCalibratedNSFWBucketThreshold) - val textNSFWShouldBucket = agathaTextNSFWScore > target.params( - PushFeatureSwitchParams.AgathaTextNSFWBucketThreshold) - - if (NSFWShouldBucket || textNSFWShouldBucket) { - bucketedUserCandidatesCounter.incr() - if (NSFWShouldBucket) { - scopedStatsReceiver.counter("calibrated_nsfw_bucketed_user_candidates").incr() - } - if (textNSFWShouldBucket) { - scopedStatsReceiver.counter("text_nsfw_bucketed_user_candidates").incr() - } - - val (thresholdAgathaNsfw, thresholdTextNsfw) = if (useAggressiveThresholds) { - ( - target.params( - PushFeatureSwitchParams.AgathaCalibratedNSFWThresholdForMrTwistly), - target - .params(PushFeatureSwitchParams.AgathaTextNSFWThresholdForMrTwistly)) - } else { - ( - target.params(PushFeatureSwitchParams.AgathaCalibratedNSFWThreshold), - target.params(PushFeatureSwitchParams.AgathaTextNSFWThreshold)) - } - candidate.cachePredicateInfo( - name + "_agathaNsfw", - agathaCalibratedNSFWScore, - thresholdAgathaNsfw, - agathaCalibratedNSFWScore > thresholdAgathaNsfw) - candidate.cachePredicateInfo( - name + "_authorTextNsfw", - agathaTextNSFWScore, - thresholdTextNsfw, - agathaTextNSFWScore > thresholdTextNsfw) - - if ((agathaCalibratedNSFWScore > thresholdAgathaNsfw) || - (agathaTextNSFWScore > thresholdTextNsfw)) { - filteredOON.incr() - false - } else true - } else { - true - } - case _ => true - } - } else { - Future.True - } - } - .withStats(stats.scope(s"predicate_$name")) - .withName(name) - } - - def userHealthSignalValueToDouble(signalValue: SignalValue): Double = { - signalValue match { - case SignalValue.DoubleValue(value) => value - case _ => throw new Exception(f"Could not convert signal value to double") - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/JointDauAndQualityModelPredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/JointDauAndQualityModelPredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..133f68fa0f1f41af54a8c2ed234b3aa95222f945 GIT binary patch literal 37182 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 bq%4NoIt=h;1?C`7t`cNO1ZI!pJs=(cWIb`* literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/JointDauAndQualityModelPredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/JointDauAndQualityModelPredicate.scala deleted file mode 100644 index 63095f4db..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/JointDauAndQualityModelPredicate.scala +++ /dev/null @@ -1,39 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams.QualityPredicateIdParam -import com.twitter.frigate.pushservice.predicate.quality_model_predicate._ -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.util.Future - -object JointDauAndQualityModelPredicate { - - val name = "JointDauAndQualityModelPredicate" - - def apply()(implicit statsReceiver: StatsReceiver): NamedPredicate[PushCandidate] = { - val stats = statsReceiver.scope(s"predicate_$name") - - val defaultPred = WeightedOpenOrNtabClickQualityPredicate() - val qualityPredicateMap = QualityPredicateMap() - - Predicate - .fromAsync { candidate: PushCandidate => - if (!candidate.target.skipModelPredicate) { - - val modelPredicate = - qualityPredicateMap.getOrElse( - candidate.target.params(QualityPredicateIdParam), - defaultPred) - - val modelPredicateResultFut = - modelPredicate.apply(Seq(candidate)).map(_.headOption.getOrElse(false)) - - modelPredicateResultFut - } else Future.True - } - .withStats(stats) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ListPredicates.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ListPredicates.docx new file mode 100644 index 0000000000000000000000000000000000000000..67b2a85a27708c5e882b1b8ab2997f57f8e8204b GIT binary patch literal 37596 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ListPredicates.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ListPredicates.scala deleted file mode 100644 index cbfb670d8..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ListPredicates.scala +++ /dev/null @@ -1,110 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.pushservice.model.ListRecommendationPushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.hermit.predicate.socialgraph.Edge -import com.twitter.hermit.predicate.socialgraph.RelationEdge -import com.twitter.hermit.predicate.socialgraph.SocialGraphPredicate -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.socialgraph.thriftscala.RelationshipType -import com.twitter.storehaus.ReadableStore -import com.twitter.util.Future - -object ListPredicates { - - def listNameExistsPredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[ListRecommendationPushCandidate] = { - Predicate - .fromAsync { candidate: ListRecommendationPushCandidate => - candidate.listName.map(_.isDefined) - } - .withStats(stats) - .withName("list_name_exists") - } - - def listAuthorExistsPredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[ListRecommendationPushCandidate] = { - Predicate - .fromAsync { candidate: ListRecommendationPushCandidate => - candidate.listOwnerId.map(_.isDefined) - } - .withStats(stats) - .withName("list_owner_exists") - } - - def listAuthorAcceptableToTargetUser( - edgeStore: ReadableStore[RelationEdge, Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[ListRecommendationPushCandidate] = { - val name = "list_author_acceptable_to_target_user" - val sgsPredicate = SocialGraphPredicate - .anyRelationExists( - edgeStore, - Set( - RelationshipType.Blocking, - RelationshipType.BlockedBy, - RelationshipType.Muting - ) - ) - .withStats(statsReceiver.scope("list_sgs_any_relation_exists")) - .withName("list_sgs_any_relation_exists") - - Predicate - .fromAsync { candidate: ListRecommendationPushCandidate => - candidate.listOwnerId.flatMap { - case Some(ownerId) => - sgsPredicate.apply(Seq(Edge(candidate.target.targetId, ownerId))).map(_.head) - case _ => Future.True - } - } - .withStats(statsReceiver.scope(s"predicate_$name")) - .withName(name) - } - - /** - * Checks if the list is acceptable to Target user => - * - Is Target not following the list - * - Is Target not muted the list - */ - def listAcceptablePredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[ListRecommendationPushCandidate] = { - val name = "list_acceptable_to_target_user" - Predicate - .fromAsync { candidate: ListRecommendationPushCandidate => - candidate.apiList.map { - case Some(apiList) => - !(apiList.following.contains(true) || apiList.muting.contains(true)) - case _ => false - } - } - .withStats(stats.scope(name)) - .withName(name) - } - - def listSubscriberCountPredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[ListRecommendationPushCandidate] = { - val name = "list_subscribe_count" - Predicate - .fromAsync { candidate: ListRecommendationPushCandidate => - candidate.apiList.map { apiListOpt => - apiListOpt.exists { apiList => - apiList.subscriberCount >= candidate.target.params( - PushFeatureSwitchParams.ListRecommendationsSubscriberCount) - } - } - } - .withStats(stats.scope(name)) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutPreRankingPredicates.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutPreRankingPredicates.docx new file mode 100644 index 0000000000000000000000000000000000000000..9fd556985f1d3068d67707cdc893317e21e043b7 GIT binary patch literal 37171 zcmagEWmsIvwm*!!dvJGmcL)S`m!Lr#cNz~6+=IKjySs|M<5U5wN{ z9n75#m_6)l8MXIG$U{8bP4I_n z%qWM#Fvn%2-uV)*)(Lg_G*RnGNS+uNWN77+Ll*nwujetJTJY>i#gWM_%Ip%&4Z_s4 zWca+B<_2fot?B1C!U#DN&(RG`(tZGorm2k4#2^_8fm0P4gAS|CpW(^vpm0!EJsP3e zW%#r=rtJ1I;pa~NAmJ~S^|HiFt(j?)j?fms`!(G7TtoV^aYOuobFJGXL%oxwhGX4o zZy}1u5F!BW`wzPwX7_O|jw6`5(#UHy-3<)ukRK-in_%ji*+a-Itv7ptoa0qZhEE;3 zI??LBR!2cH_+EDsC>h5+fpj$WWCn>aY3v;_l|I3D{daeCg)x-E4@+T&cXP7}b`u)@ zBdDLbG(>7u+r?s%M>+U--W-o4$bD~eg7ud9Bo%!-B#ne<14IYB?=MiE_CG?e;N2qy zRNcuucNXort_J3r$}=X@>AfTo6`*&=eSGqML@X|UCn? z^L661$Q~$Dw9?h7B59zF(@T7Cwrgs!ke*Ml#86}#q-CNrADFw?tG!8g(a>(R2A2%q z5kTglz7wotn-+0Hfg);7eaCH~Nh-{+fjOv0SARMqRwXWJL~kd9QW9L6fPRhWLaXKK z%QOps0Z7X?aeXPSZ2e*D{^eez$wkK4U-T%}0bMOs(Tok3w*W=f5%XF?_Fy`?EVeZR zr|q#_`IBDx1@mE$gp!(}2jw-)WCz9ouVsT^@l4C^`+X)#ib*Z6DGS$)AQeA{Y2sh3 zwJB%1jWJ8UaHBJN+-LtxP}pZgH7n3X>8GeNZCnZY{e)Q#o3|7EW>n$gjg6((~_vGeoft_v+gB$Ut!0?rW@H$Up zGo)!qdu;`RWIgbL0fs*d(CgmeAV?7sT*j>mn6h1TY?)t)t zEj>{dt5_@pO14erJ7d>m-eJAp+xypdON0#fJQq-SN0umtbhGXfug`s#1plnd_3A3_ zF{m!KP+(waf3M3&2Zuk(qCRfF%8J(U!~kXB^2G{POa(7Ka6xQFVjaIGKBIYVjQm3! zR4dyK(Dxw>o9{ErO}Ie4z*EE6)1sIKY=hz_4earUyb)!`b%e(1FT?w*lLzF^P-W1i z*qVdr298G4W0mtTOzRr*p6`BMF<+_Pj_i0l3C&5=%W5;BT3#K#v7sBzD7E868SXA^l$}dDMXKn867TXk?sc&e&CuGY>5KD-AFr>XP(lo zg5iE?IIbsEt1HzCyNo)C?ba3>&f(*Ne377y9Q{s_Wc?A)dySs09kAvY+j3i9DiDhz zcZ&k`C?LM{j3Y_EA_1#Q6r0eLis@H72Dtjg!;6$qc?qcv{^jz=(|%?RW}>JS;c^=~ zrSH^?uvG1MP5Fl%<_a>Qsv#Q6WTGb%5&{NOx>K!#1Bpdl14X?k>})Q4bT_K)5MV3# z9)Jcq(MAYQ`MsO&4$0jo{1-Il3p=)htp`^j#3OeYUSLZ-JaNhiyzR?q%iI7<9Hjh=6Vi zEZjeTuq--j6#J^hJkj!09_9jf^NKT*BI|VDHfUpq6!GDo{)}( zpT9%>oJoSZIBZE&z_~9R4OQGf6<9V^JVSDjdVm-|lxPD5r|+pF{#mocb%!sSoGhxg z&Q!WU*`&yh+~oa)MWiwf=6Cl;`)RI9Nd)mE2B{9wW8z z-Yh9G#CZKG%&CzEg2yK*mCqgypTeVCGwFED@h|$jX9UC$j zxhI*zl4JG|T9HRhMm6YKa}Q+j!9VtDjKu3UH|O<^JHXe?Y=5rT`7W@|bf|@4d0qnE zoO^~Fu~TB)^{)279zBjQPq!91L?c~}dh*Bk2DO6PnlX=Ew@e&07yc^p$!8HQZDlya zAdR7tpJ^*m6TV@XOQLKS_7KdJS<*dlSnoZhbty^|)wWqKElq$!?0(Obv{(DQ__}J~ zqoZ6wNmsktMOsA~$#M zetq1PIFrEmSolo~9cr#yf$O}r|M}eq^+9=GMV%jNo=}QXk*rbb&Ng13%!}P-{9v7^ zswcAoA>azJ)Tc}pD$&Km&72(|dri!~cibW&&uA50?^@FmYklAT`STO%yV__%dfIhG zKh?Z9AUJ#3{!H2Wcc(p?Ktbf0tm7W9DPnpx?-`gRx8qFZaPVk-lqiGJm#Th0?lOY`$Dp|!X0z% zs0bFbbmy9cQW80Ty>8K)^LHbPR52+q;MNy6J=ks7+v#H&CDAV7WfvsbYc@+E2$-C` z=uf{fOO6zCa89z&zBd4*_Y+1x6S2^)+7`Gki+7{AS_*#M-Z9?r(X->~@N7!Wb7;6g z=`g2mN(;@fST#6qFYj_WaS}M$_51e9E+w`#jIsY=@VPyAuWd0Us9UkBa_^h=e$Z(T zQHDMpm86C#aU++`hnXI@rIDfErTrCPBtS z6gO}WD8q4Fk2$Qk;4Z*(A<`vzf&o$o+q(p*r`uaahspGQde`R@{q7d}fjl+altXb? z9@E&9-9at@flI#rUirt|X8rqa@PE!W_WlGI?4V_695mw)f|j8_W}81ZQGcIv{@hR{ ziYW!L;(b1QMd%Ajz$&tjc=s!hx}9FSy3i*?dL{l=VsBG#-HcIUCt&xE+c%rWZg%ok zZDB(IkD=j1Aa5iDD%Na>vN?vJC2GoXPrZzWm`x=qJbz6ucjuCzxWddyZPKTTgAa)c z&j_`xR0DMgl#RLeqOI6fQ3Z$6YVn`zcyu9jBxmBkehkgda`9>>znH9Qx$La4*%Db# zbMDTHMVQ9UGrfT6V%OLUb6i0tKfO?znQ?vdw9o#3n8TiZqm3vh+RFuC}Ay8j?FWp8_Y^|-nG zW&HTE!E?=)r&xrfqPM40=`&wgWZm1fRlTnF)BNhVm-`oyHwSG%Kl)w!?$!Q{$GemA zkxxceoNqT*08sZz1!l)&x#*&QYMdTL{3FAUvY%xo!(z4Zx4qC-5as2 zK7mBJZ~ASVppFlpJg)oletQuSpARY<_m_Yrb9jdS_iPHxiE)swu?%j+^T&sGGpAQY1byStn#~1Jw`R zCcV|;^VG@p&n~*5K=d>!e3y3k&hriY_7oAIXM}pYkH85gS#@~qbqy+XVdyCa|8!_Q zYG`$p$V-ipua1Z>ZwO0AdyIJquHVb+LBE9`+{^X)i%XjRa}990V^dJ5(*5i-G==9h zi%04B&DZb@C{&egzxakZ(3Kq7veJE`c(57+*t!4lR;$}Bokh^qrYFt)K=;_g?RCdS zMe};Uy6?twfXG*RG5FRVMo4{YBI{|$l8@I-pox&S16TKT_XG0Ba@6e-R5n$TJ`EC+ z3gH1s-!M9#uvwt1Ti5mQiPaztf}#3Dc;Ku$FmH<@DVw%Ma*qaqSQ*sR%OIjs0|0&7 zXM7p3e)nc@KOwUOD{Qa0>S_*wPhZqVd9wM^A;>5~l3YFQKC`A9tIFON+B}@FREaWg zf7Ac7X4AI{%T&kOo}{?*mb(|+d+PKJ#tpdg4?d($@e33$pbi3DiH zuw+_w#5R8kS=8ot!+kn=J^yLPkU>239o+|;>=y33m=BQ=t!!i=1#g1znMJwA$eQG{ zI$6vI85Nll4An%A@?ge2ECw<;ro|6%@rrHT6@Ht9EccpY9m7})6&-Bp`QR$H7un4( zrTAZUzc9W&ty^^pRGkeJEPttCBj}`2xCW^4qK}U*cw^5OqF9WAa!GICy5Z~-in(@OxASMp2 zAgiN1WQz&_uERU3CyJ(ciGvoL&;dQdBz}n#8yMRGU6Av;^Ao5O=U<&r+mrxsvA@Pw zHR4k-L$P=wj`YcHK>Q2)gfku#N(vfB_eZEM2rUGJ`;X8+sh~<}&aBBi{)^yDg#y%q z@P~@z4rsI7{~_@|P_bT@RXBkupizGp=0*V0qlyOdiq-Igi4>9Pza%n|!qIpl!u_Fo zF2TJKt>gEoe>W94OEgTmwRd3}X7Nkv&XaZ#Yr6WLJ%Ib^`00`?v?uj^K#&SZp-GG_ zX=(E4+VpG1)LXK1CY02k+jneV9v-)SWsDSJ)=Pdq8(e?7acwoQAM_S`?q8g6%l)+E zaiw=ZG@D($?NR-6URdd1Z+|pz`#x$@#Gv^`k|f%Ghk02vNk96GD-Qqd$pJ}%$#dEm zjd87%C}VSQjr8^u=(d#Mjy$;9#q2knEn|1=6o1hAYv2o@dMBVN2CdZAmsYUv>cNTe z$no9E`KG|atQ}7~OUm&<9M1Ik4^tjQ{S7t+H)6BSpj`Y-BE|i1>-bL7;=NtAhqpan zl`(`fw&yEXKOgtAmIO-F!VTxJnuQxCwN)a@v9?I9r39RI>pF_b*4N(kxFMBWdi8#% zq_vHs6OWbdf#~GBoW$>!)V$p;?rNW=P)2dWj>{T6AfbloHE^~|jTX`aUtR~!i!#iZh(p5iyPfY#Yg@8(3D$c=Gvcxl{v7@A0G6RGTJ|3O(wlb*!1{_BmK&6^*jfCF-ZC=G3U`| zSiVOObz;=chGf7N@9l za!a(A{mw(Iqn&*T5+0TJ`Fx)d6S#?tNq2%6L|NU^tN#FIQ#SY$bt1^$7_p7 z<}J(f^f0v7D;Vl>x@U_pl+k8;bIR}y*@J4_6PNK?aDK_Dvong6!Z`JK_H7D^Oe8^D zhx%!jYO7oj;9J%F(=%pww~vbd1()u#hU7y7=>sz03A+Y|;U*rY=>xJY*}J8qv;czg zWVy6iX0GBWGsSlI{b2E5S4UYLLQ`67HLilH?`nuqz?`R#pMS>oLSN|R7fp|<7Iu>p z`nYEmOwtCI!;e;)xd0o-hSAVHVKz$7s_K*)@MWL|99YJQ8gx zT+1Wi>!lLCp%-?!?u-*~EtXW%V`EjC3;5@34D7{}c%U;4lBg@a)S(J(ioCpQmY5O& zT=%uAIL+r58QiiHj$Mu|+a4-(T*mi&8)MX0i}^Ky>5!C%zoONsbr@ERR+1WVJZB%H z-l-aO1GOjjy+*-TYG|}D$tvyjGi+GElz23BD%ugGF6eZ}*mM}1Fm??SWeYe*TRVwy&O z62j-V``5<>Lfi^D)C^YM?j;Y-8jX)!`3Q>Ylx3gzd6&v+jx`6BF77gH6)3BJ=7g$n zcx_1zKMZ>1_oubp&S5HttVYuF&cv1EEgYh04z}29F!o(=w>O*2uq_PU%v-qjLas^~ zYmEDNd0H!0=o{J#>JH4Q%B50Q;wY}^&wqFM5mrj|+4Rus!LgP9SL#i9%3%_DOdAj^ zq=dbpcL|J;jW;;V zyzSHv7teFpMl6z@VjC#w9Hol*sQOiulGg~|YH+ra9PTO@e!S2Cu?rX6uTw7!)4QaV2aYYhsgjCrOodrStwLFEt0Vj3vJBB5DtX20c1jR6EBtJd3r^Nl zS6gM8oZF4ti+Gl0b)EFBN7>@3hKZUfU!{3uITSxk@`|zV79d*KTGpo)2o)FJW{@vC zuRwcSw`@l!#Nv#4-g%Z+#UCrj4`^$1nye_f9&A-sP_*psAK~fXA;k2MnWB!M)xrK~ zvORNI;%H)_O4%ci?5$!1qf%f%eAHfyE_i@#@5*`pq-t~cjuHc3T2@Zgt(DAsicxx* zjH#;P(Ri`3xJPVVt!HD&Mgi|;xs>ScFzSvk>#YpMP6*GU*P_rqk3ZFdu&z&_Ah27- z)dGhdu($>le^y(O_WtvTM*FC7JmXbK+Lc%&{h6u05Vn^D1C4$u6Ifd7Y^5LPaJD@_ zc|HMoW|nQ@Wfd)ljk6vv5(ecxN6JlV>qOhD zP*Rza)dR!WtQzt5KE0lgDtmYIcudGY_)RB3PdYc-&jv1Q@A4t+P*gu%HBEB;gLTDKb#U!GGxU(H$&V0IqfS>KR$ea)oGw>emeAksINEj@U7 zJ=Z#$hYYdUoQii+q?2qX{5B+fF6mqWbI4{vt&4fTf)w8-HRd0@)R4Xk-2rarh8rtY z62&MtGKu$TXW4M;iSJW{e1ghS#iPH10V}1D~NNPA*R!V=j+rPdG{N`44V^qF&isYoi&0vOugE0-IuC$j(}x zUpCPjL#K0fxWAyx+~GSF4z3HJ79gWicfy=0Nca~rUlmfx(hB|psJ2GN%EgWrFH8gemJrvnz6=6viU zeCJQzVMGte6+#x$h;IZsAZ)g+0mP1Qk&l6xG|r9HhsYXYUk>dkKW|7==ka*+Iu<#D zZ~_ica(FC-^%(Uxf&wu;_G*GRTrze+IRdzo$CcleRd3f9e8a!=HN?afJL@I+^O) z0*M!1aP#7lfd0zaBKvoW3T6lnwuWU$)^&tUEXV`3OwD|!Kkimh2lqY zqC7iMQib_lrUCV$yd7bkMNSe!sq@Se)u~)h*-R{%$NJx{yXHQm-Wl6)LeSKb(5=9wh9Y$hjI_* zQ6ZlsYDyXIP5eo$ZE>KNXJ^#+65NfYFy(4%Ka9?Ff`E=JU20eKoBfJ3yN4OeIXQ3^ ztn*+mE0mf3!Xv3pGXcug(i}rWr4r7g5T0Q2x$>1osk0*G8dsq?>$0E{9?N;#@{qP{S-IN^CySlzqQD!b$^miPKSE#OY zo67I0NSR@2QG0>z{L(>$TIrL+GKFWSM#*pMBpcJ>SCaV^5|L~I_Q^kSUw-IbKRRDa z@6%`vs~uhXTs6pIm4=y2Mjqx)kxkm{F1u-!S$s;0QxWyOd&GcZ94d(#hp;N+zT12W zf1e+#w%0PJR%e$kJEw&kba=;a--c=bsLMe#HA*3$W54p4Dg|6n5Rs^y*SOY;+Q{1g zBzR+&Yr`f1aD{7SgKW|GCcU8y-i0a&a3yjcrZ*T=4DU3uW{gW9OqG7FPNa zI9iaU#P2`F)UR3j+FGSV4f^ydk5mqN8P%cG86l4FP_aX-8kHu&fP=S3_37ypj> zv{@<9d!0#8679i@>+#FqhulD65ox*23THAYNTCMhr*C2^C!A~A25Rosc7g~`;7dLV zD)TC%EB8O04Vx9{oLlKZQLf6aC>D{LKGc)0hM#adJeCzniC#u&mSznJYndvEUh)a~ zR7I2LFepQH5CY|;M1#pmi42(jZ4QB`Q9-IF8dqo{%HAGbIptil+zT#*1{-{p?*Ggt z?FdxXnMcs^$j`vY^w$5Sc&uOiMXIv70W2h0DN5T!I59B7-99NDRSwMO=4V_P)}SbTPKY=26zAe=WmF|i4jfS(x>`2w6{^6n z+3}YNkS9Xp^B;vIhZ)fP0gZ0-6Tv8V#FmErI1sGWG@u?<`YyFKHlJYYaKIQ}o)3e1W0eKz<&Pqae{jwE9d z1LJ4%`pl7v>ey7iMON<}^K2a?zBce^MMmjO$OM89#%V;$|;e%Lp z+iQl5)ESBa+$&fRaS*BEq)uRJaFR%2gCmIKIJ4L|5^>9lW(&{|POu#2F~5#DBFNtJ z^vr}09(wPXsxeAebHFy5u?^;*c`(8N!H8?WigRbcBrIpB%{qQ7LJPzC7LWkO7mG;? zZX(JkZHQL;wWYAsqwk3s z+c}{dH{qYYrA9%JpbJ}#FWdLPutArQL1nWh%+$t{h|#8@DQ<ECk|oaN$O7 zZYSJ)PyU0r%Gps0Riw3QU8ya05*21;_0*{t>-123|F)He zmAFR9BX+=!+*m)^E<41gdR7K6;gKA1A!uk&-+#{q@rP-%Re3pA`1j&zV1piT(OSDhqDw=^g`KLm+|EcgY<0^DA zZnJ{hOC?wAq~x8`s8fkP?Bzi2ccziqs)BbMd!Fip61^zBWee)CI<_Xy5;dEd(Q%tZ zzgOtPht2hF#JX!rvG%L3?##xrf(Z<7@gTtr^rK;%SxxI&dtNcg{n>rTO z;^JjPE-yluDVJZhr~Q4hr)^SEe6V#lhMIU6&^ zpsjelkhhxEt@Tq4)Q#r6F?{p71x|90w;cv!ZwOT@&>&U2VVlg5kFgh{|6}-XYPmnC zF+kL?a=&-q6RjHy$jQckP`jCpgQx|#|D^s-g&BeJe^6g^4ZwGVXB%z!w7%~&hCiw- z>&392&0=H>aQ{W79oW%C*?ug78A0I@riCI`GvJ_2ZnkaTAJ1)CJY6#&+PT|{@q3qD z_^#P|4(TuQTh|c~xf<*r%f-%p`4v-0S|y=gy|(Xwn~7ED*=q)}dp$kn}nRjaWR)u=A*8`n)in^36( zg>A8L^15co=zs@PYykX?c+H$Q85-3w7!~Hy1f$4tW1|EuMAdsiQNyQ*H_ccYWRN9xcYHu<$%2QOs|ZX10c@FdJ3`zci&j$)h-1P+S(>*0If5`68^4 zHrw!sEy;;2IXmWUu5;8`7gprzUj)zD9+&;Ja+CuJA@p)eWr3!Uz}0>6tyD3M`rV!6 zEN7k-L=%U`Rn#o!&(gAdW&po}O(!7pl(W(e8eIW$rr~lUAld6oG|!4C#|mPy`^Q07 z6aSY0QKfEg27Jj`vq^xUOIbpZ?2yn5XVj-O{}cInpIuG`ud<_(aRSBJm9yPaK8124 zG09m`&dQFIvce6yq))oApVCA*BzpqilKC0?+`O*a7AyYcQTMKBbntIrSKhN`f0+Eq zS$Wen)Hd6&@-LHedPkjw;eVP8P5Nz;7xA~rPP_jf&tjwjmf5EGVqV?h#U?oqvo8dz6($luE()JOp5 zEMyq?HZ%yW<2RazSS74(=*4d|7KdAy$srD{rSX*k#FFN+&$umi=XD<78!$2F;$*)L zZcW&>e=Rhmenjm>M59CN0E>g{K}2IC?Eu5249EQeeFM!x%eDKH)zIG)X&d^s*&yp+ z5~t5_f!a{CQ-iCc=VUl>5b+!+AB_7&;XZKGb}APhh2xi4W5XF!Qkk>88zAB`&C22 z)=%631Sf_5eSxh5U0|Ak;EXbEFM$m?U0cwFC!<6|h^#SW9X*Cvte4WlPkJoLDUEGF z@GH&va|riPFC3O0_YzD)+Ee%RDOgj*rFKyAPRc;ZJAs2839xN}`e*X&vi1K;UQMTM z*VoCV1lGS4BJ?Bf9TRSk6VOcdKw2BC(d3kR(876@5@JAT(8EG+#gDOxkxDwK%MPfV z`1tzcMgiK@KY-V~>vzvL>a`?PEG%w9KnlJa2n-wT8<7{XubKUVJnwyj2Y|w1?XrG; zHHliou9G7x92Uu=TTkXzv*b3joYVUv5BhT$-a);_bguI3mf#fZXT~=-cRAm7fs1yO za{-#KNC#`aO`@M^SZPaylx}Kbfr9h-efZ~L(G07O#nx+C4xKnnQ_a1%9X$w3h?ik! z=$jN>#Zl;CXSqv*=}#0>U&z<-jGpYc=J>MdKY+&|y2U;=+VfwP--|1CI>NJcqp)@l z8gn}EqFallX7}XeNYl^vi$4~r#~|1wkn>mBY9*FAdiOo+ehT~!afL|Tb>Q8nBs(z; z<{&pw9U)D+A8Lv_p6=~@(Xc^&Wz#Jd&wr&RMYrX+T^O+Pn}-1)W?tHyL%zQVzR#06 zeLyi~=teO13n80F;4cK4W4iE% zR51JS2iI?K1JBC8FmBM!mkOCJbOCV>jhjb`nGdCTSm!P0Qaz0}>n{6R8}i>&0n{=R z)sPbac8AP4`&s#5e&u~o@`4}Wkr0i65cz>$v(H=NC#s#+vRJ!u@G+ZupBY8qmar8U z)G)3%z}7IXj`PsN9=2J#<8be7ji=?0nb^B;)04|ML^Kj1h;e_B-uy|0v!Dt<1SJ7- zVmfsi2Qh^xmxA^R6A!Cly4p*7M7aA%<>S+{Zk6d%&tn8WdPm4zpd9!= zK<}0wJCM(Xu!{tUi6IY{hlX6^Ruf|{DC)cDFQ0B}?A``HG=5|3h&p?I?%7W4(fRLE zO=o-kQpM${Y#w=D5s?x7D}N5Kr3S}E?A@0yzUOwnvld}lDh+ftYXhCm3(zVwwE<$+ zvbLY#LNEy4CFht8B`c_so8AR0HahV3QNw=b-aD6>)BOT9Fc8~JC}ENnijQs{7$AiL zET#a~SAf z2>Su8=z47wa~Us(J-cfIFqXJTa8N9sT^b^MO;}Qmt6YjYzoh<)!}U?cm10tngJRP< zbJD$fE%a#D8oK*ZV#W4GVx?s3JzXFIkcj2J(FrS!*<-R7e5^VSfnU2M)dWXe<0qc+?9K?GmxY#rX2g3{`Ryi zdr}r!Kj24{ zkK6j!L86kaMX}8zFOZ+%c?4jUcJFjyAPGpC0w^V>9UI2IEayIAc8E?K5O2V3_`ayZ|Ghz4dNDgb!AjguPOKR4hn;F~XeAF)S4`{j+|c zMQkOjXtAV*0Ro;9YKdOn-E|}C^ms8BT%H*%KRG2BFna_!y)Hwk^;B ztO9)R^U=(Vf(As1a<>M&*xKmbv4rqtmrpYg-Y#$ps+VnQgbGcOv?GFa&FNQUf;^r9$n8Id)*TppU&P_V8IY`Aw=1C#I!lMq+9H+qY= z_ky|4aj}kYd>;y|_X1~1%>nere*jtBVa>z)8aA4zaKf<1QQw@t=VB)y9-0?LSU!Hs zBYUgm{DB>67(Ut^JzAhkpkYbj)=pEAhS#uO?DxBVsc1(s-VN;k25?mR4R93x2Y|z! zd*CkAa68=aNe^-K(xwN0MTVk7hec2%ge8AgI6?4M%f;;>Dk0!QYN!8h%b2?V?qEM2 zf&-xs8f5Q%JShC?we`EhyRdL4I9W=ME964|}MhaHnj z!GnfSycX-cMChr-jd*3S4*wL)&Waz$R} zUkfLdRq*|s({kyfUX;%x6rH#>qkyScWWFbBEv~#=QC+12w(aY~^}=3Fh~-8s!98rN zlMJ{DV3EoX=eaOm#R|pW+blBAzeRc-L+T$T^zNBRS2OVpLE@!2+6Vn?vdev?L@pGg zRO&Fne1lUAVm^Nk#ekryz2tqw?obgmuxgHWfL?5c2JeV1sOFMUCDmVxPWId>+*pdo z`wEZ5xEROIQ33&riHFnE2PI8KT*QHT1;Jo^2B4yrmaoW{pU~xvU~5-{b!5|EPFAzG z|Ingel@i5eY`kO2uLBtsH%Su_!s1kY;#{}vLG00WUWvhwU}-)$R3xYga|ZZOF#)AX z4O%agM)Q;#RKk<2CdLB8&mKCMTLvc-DeyMnMp^!nTB^{a(xjdq`|@JvS%I{%pRE0k zonic@YD``fB{6C5an=H+QKuBwP8*B?6E8_Sb*jP^>yq8AlWA4C#<@bC)Ga*8H8Cmb z`C`N(8+F7sU$#P?ymLP>JspEN<=EUD8Skrhs^WsEsd?7%s&gDl`$>IW$bl!vg&vco z`4Ljl62{kI&{siMCy7>;Qf>W5BkC#pu+3BG~KBU8<{w_g-IzL$1qJP$B7F$WbAfSP>lDeSGr zZX<5%in=gD@L*dv-lkzDn(4fAh|UOGCEFw~kw30&W_by)8*_}V#OK#U1V&{ufiEM#E1q@=c4wiE{e~L*&F8&tAUqT%95tGJY*UG)H+V6HzrAR0`cu9! zEwJ2GJS4s<&8h?pP%5jOi>sU)!W|BU4M&frPFh0h*JFbg2z{%CQK3Iitq#WsIGr2> zG%A)Te?MYE#@_PXfTO>Lr03jhF9#@-MdJC9*Phk8mBhB^BB|5bDo~e*DvRNkY&~}I zU`%P)i9`G0API3pnr>KUD(4mytK!r55YVHmAHu4C>XKF5%;{UoW+n`$c5jpjSwl9@ z5zj@X5Q7dxNE3x-Ij7FZbOMQ>SI6@Nw-kZC(mW1Epo$Xyt_;4h7nCE;k|U0oN$?1R z4Pj%8x>TIVsx`8Rg6+hk-W48{10e=&kQ0a<=en&wf213ddIsBcU%3E}{lP7}I2Xd_ zm`^OkP&5Rm3G)t_erakTz4o|h0*B_`DiBfsR1wm1MWk4+qFH6_S{Znt#D}b(+WZ9t z`_*+x@PbVInI7xiQZUk3+V{Cdp*=E|vh-L<^D{KK*hB^U9R`eDlHPV0Tk(|iojnMt zX_~5Tve5JV{kc)^IVkqYJ({c)Z?(g#l21`2)Io<@-`>DFvA*?y?L>*^ir!d^92y*@ zlfe_9ahG5cl-S`~qY_Pkrl)Cp)ma@M`Gpba9avd&v6xNnE89W`DY6&J?$q9}%D&2klgPAZ+*O?+|$YZt+MFA`5zj2Fx z^8E#k{5Ww))ChN57gmDlCBzCH5RmF$K-j;5^!^QG_Zw)=Z=w?@llyA907nacyqNpoU@P`j9 z=>QI*diQ)*Z+*NdEPM~`4hl#c5h8=>pf&6`@loj!PE~(EFlB+LOs--t^S2gay0Q;9E)c+MPOW@JE_7}P6PehTmOB4(}#!}@S5Rul)}LqbUgEso$y4&9h3 zegcY%S)Tf{gWhz*WhY{eltw@nWZVfzam^+#JqSqQDR6jLydZf){pY!TW6!`@ zJ}xjY=V}-*{C}R?*Rpc?BxPY?ZtC*q5q@8Tlzi#Blcxvl#-l-{tYk2<(Q)4?42U7a z@!gBm+k4^i@;QUFs`#T1^v$4C{G!?Z7$Y$jIIn|@bkM!Nu-&9#%;h@0IV&w9hIxBcn8)AYB8v$x0B zWB2x#?CJ4!gUhFz)As6W)U&hfThP(|jm}jeK_(-d_U_IK;->WV{n=LlYI=%$x>B|# z>bScR&+4%Ilrb;wbNAxO{>Ro;s-gXeo3n`Zm(tc0WFs4vh|sGySC}B#%R6gdtKHjZ z?&@(@r^{K3r@AE?KYJ0H?j@k7_Y1exm20h$uf9u%k;27wY?+n7G7LK_&AG)JsIH2 zheqezH|aRd_5i4PyxI-m0aPz8Xj)gkw7fc5G3dZZuJA{x+|IaJ^IUCPU8Kq9q=cRU zpF1{eaY?ch1U`5@GfVw=@q1fbH>eX7vM27_D;`|E0;Ul25w5=02@wep^OFd^xjqYQ zRNS?V^l@5kZu6p_TCCpuE1-uWz^JkI4%$;r^`h z<*8`orfS${CBOv?Q&|sFSX)ZYMJvrseJ#m^R}oMfbh}LtrBJQ6Yf;O}UKfo%v*dx> zeOgA&xd*xhk#uFR_k@6&4!1x}c%UYZ+Zz#YZNk^Chiw@ouI{Sa>G72tJDJ*ytlQLf zBb?R2gOi<`pUivEJVi%o59haz)9$kpf$6U`oA#==dZy!!aJEt`)k+cT)>?ol6JDT# z&c^y?bNR5YcYgd!^|tIVCR$T!?0mlTsDt8Ni<;zum|32uXz5T_{E?v zl*E(qkqWZc{73P;y%8YyM{WzF19FuS#5z9Wo3?P(hT)XZU~imHN?)`ZU|6j-0R>^Y zKQb}OK`^}9gp$Z7i{>2z!L~X)9m0UhtU(Dr&gI7^M09ymn9GQ5~c47Ykn;R+)NbL_A9ETIh;V zru8@7*RGXJ_~!eTGxm<=Tb%WH6m%2zx2LA%#RRiZ@wR)%PNORKaRK23W@zuplLCk! zrJ6znZHgs5=n8b(I*0`|F>0i@LdE)+{QL2@ae6*RIUsJG zkCirop{S{YI_OqF9i%6qj#yAfjdTmN!@nU27vP$~UeXAd;FX`T2PcHFY6e3I3I>63{X^?tl2#y&n9u>B zVep_~Hh&H40oWsMu}U@m##x8pMf(05=kEjl=D9|?0eVi4d;>HL12pWnH541Ca@j|e z+pEjyr;t6eJw58@YT1MiFrd$zACm}E^Y{(q@G%pX=JYhZaqD})9{_Fzg{3A zn|FE4bou0VVTlL;Dbi-s`0e2NG<0t-bFA+UGm=17#A6(|;l}Isc*@`E^LAkK{mAB) zt8#dk2eH_F92NKV-s1u8#L4^T%UWg^wqR!a#?w#cD%hrWvoBdy#7H}>BCfl~$i$Iz zo6CEKibAYro0B&LP312!5oQ&yt<0UTt7fmkpGB zm_3_L5olc#KcyI3Tddqn@m+1ZR~l@t{5kp^pyv#FeqBu?p7L8wi#9!t@jSgC`Tnx? z%vdGzr5F~9WJTZ?_SqS3sKSmH?>gQr-@AiIGvVw^EJZWntV}cS<2eZgW4E&2U!S1r zDWLYBA1%Q~l(J!+1AUgrV!bcS@Pf@rSppi2P^_|XzT0yZ7(~UoJwaI&17eE;inWlH zlqdv+$UF>Xtt?58SCE%APEk3w1j{~O$xvjx_YJML6wYw2aS`MZ{xVDW%Y$$hV!j%t ztQx%pxEa9DPExXFV^dB_tQF)@fj+R?6|{7Q7S<{DSPi%1`#nkv?yc>^l_c~4T$Vb8 zM;>}_LKlUHt#IIc$Y-%_N$F2`-^4w2k@rfaX_cN(_QD^O7uxV_q+TQ-ss<(4QLqD2 z)uKzsi*G}b)FvL3; z`7=F@lzO{%69ivtN042emVF+cpJSwi)AxW^x-YZ4V|C9BB8J?A@@34=Ez4&-EQCz< zsDRr!&eZ=$*joU_wQb$PxVyW%y9Wtwjk~)$Bv^2FcXxMpcXxuj6Fh++uXE15_kHL7 z@4dge*c4UGm}88!_v*Rk?zLx(+HH@*sQYfakJob>aI6aPg zlduatBW{MvmZ{o$hicAjn;CmkHy9NZcEBfd0_Q27Pa|@_QAI?8+8$w?#!>gd zNS9%hTqk2{Ral`P-DLuWzF4-c;NqL_+^cNl83c|BEOsh34*pmqxG()W@h;O{)OnDS z)05?U zi_FJ4z7?Bc`!Xvvm!}y1cx=AKP#;uZu>MqiVqc&-U1p^!kq{Eqi?HV~+MMjzS$)vj z+rHCBq~tyg&7nzA+W2wG{l~>xa(d*n-mRqpyCLXT9y5T~AZ`<#Q71k_>~F+sV8-k>xwK^d2~_ zSYINv1@=zbPhL|Rvpb^eysq}$f;a>B-_3fMEgFq@V4vL@@&`R*v(3Lve6ny;SYT94 z%|EzayF*g-2aMyNuTo=qNM=9!5&X#K2G5PecYEe}XY8tmj1VEL={&2`Ex|7uwecGR4 zMsYWuHDM4WaZ zs}E%x+OhB6?q@28E+Aq zu~kXdKnh)Vba^a3upR5TQywLB?@9$Ui0XTkUqrhTPs+Nh_~^7hWlO1YPg6d%=n+EJ zi#A<(Qq&^r>4JT$eb#_+_E2RL`PLT11LBk|nc%sJxGPVD@TBcrbw7G}cR>68nD(18 zLUgbhKCUpqicSb+^LD>~Pv|L>t)tKPD*8?-Z_wLG(dMO_e=BQJap3ao-m9JH*{fau z5iF5+@&#omW0g(t_??BUF^q&y;_(zGzR+X|*_9*XK-h8f?ZxTm_~_P;(Kh_VpPy0C z4?N|f##vdRs4`^9NnygIKao%!`lUU9qlB25p@@w%5#g#ho67z6NAOA{s3W|7-j93E zh)xMzlqM_9ylwbV28Hd}@I}{5wH~<}SF_5QElDHZ=vi`DbT~Gmb_eXTHM61iR^h}{ z12%*`H(I$YoQ9IHb`3uj4rJ=REsOFJHJO>R{Q+qha$gl#2T0@Bz?h?&GjqsSFLlv* zd01NfbwteqB4CiVH{EFyk2J1-#IY|KO5sBn^iRNciW|h zR(Bj$W!GGF=^&Qr%ebMlXJ|`z?2qT`k`e&szt4q~LBcwtE=O#n!gIx6?fPe@Tlp>2?O?Yu+Qq@=NNPvl0zr4DHh8!-^LSw_ztd6rvl&X`L`Eb7&lN zV^OkH_X4&H|H~}{%kOn$4RXDUX$rH_E%*4M5F3b@h?T{cLaA;d~e8w?I# z{|@iQpp}>aJAC^cd6cYZ$+Oqo2??>+mbuzn+wSXc2;i3qk;dc_1~_;ljh-*py~CdeZ7 z(S5nP-DUQ;%$`$+>^p(Hfqrcc?HvS56PWu1$}pt3(>5Oq3y$;NvU&YOT2U9eDaFrG zmo0~h;bzaHeGRMK`|hN4`CepK`a>^{kQnKBUCZ;5hP2bkXf(NR!wAJ^&Gut}iEqVo#2yYl$-d5b#@2?-DjM&F~H|b8E9#xXq?0jbl1D$z-(qN z$OR(&EFs%73mnf2!-O^uDQyd-slKQh`wTmxmP@2Q&&YJlv#&vY@pz!W?6vSqx zE!QHTgZtWXUmpC)-qB6*_sO<j>!Amuba-CZQNMM;Qn3*@NL}da7x*( z4rHsj$T9`otMUcD*YW~6FZ$z5S`1|Ljqoll$UmX35qV9Um1OJr>!P#=xMDUFu?-vvQr;|$pC%1fD^b$F>|0a&b7R{D8oT=2a~w)J z(4>DZb9N*X?GO46E4{b5|GM+&^pI`I_TmcN-3(|;y$Ac=V8xQ$I-A3f7@OG|yLxtA zSxxD=DzZhNztW6iA3|y`VM06N|4n|4`inaVj1CCtmFKN#6`;0IP6N?^!At94yl9v@ zhqS!HjGBneXpq`wftr4oF}E9CUkhD7-8;pSkT(y1hE2Zvbb!Bcfq#&I#TBXPsu&c9 z5nOaxr&6vj`*DS)!6DVl=H3vv-o-$@SvhqviBu30WpkJWe4=;?XY$M>({_BCAg1O^zN%Xs$yN$f34RG(2%J6`W&45m# zf^-e}p8Fu}bUC)3yN$Z1O&WN}jDJfvCrF{0VVS2*^7?k;HlBFJS9hEBNj!xirdzTG zT&r!fQlf^jK^>ci&Srt_yL1O2#l7lr3(eJdq3%6|tEEV$E>8Mx&M8pQ6XA_*JimE1 z7S-CFW4%N~Q)qbtsWClQr?lyO@2W~}y z4m^7Tj|K1!(=rZ-E`4*nb1khzdFDMsuW5y^GXfYiOn%MW8(9bpEqskMTvKD|!W5|JEZ&^kg8 z{64Ckf#PKEoO8gLTheki$(04Os2jCt1%G{)gB}z_D$-Kv1fzG{v)#|fD_Rz1y2nfv zBe6=`H2^39%sV5%2t#oYA>;x1jM%krq`63i6a+++on;7PaSri-rekelwR)Q93cvya zv-H^o?}$a+uWPywMA%+v%qf?1R>K!<$dNA^ z*0eU5I2*K&(I_I3DrwAOhO-zW2=+!$00hH;AWZk6s3;8bWQiq4R#$nRAH{s376XB>&gYGG#-SJ9 zHV*?KX(c}F5QQM$M(Kwk1w$8w&}YeeAwb$6NmdETZahRG1V2Mi zg~06JF8!35JHmd2xW#2!=$LxNvNACK63M}gNru8r(&p}n_uqVEL?Mi+T$yyVAtm0M z5lI7L5+bq4iBczZcOV8 zgx;rYcr_|G^Ko=FarCrtbazQjga*sPl-=*%82IxM|1d}=$HzotQA-+)x_pgVq8)1` z3tz-fR%L8YZGR?t8`V8-7>&a0ms_LLJ`?>MU7S5$eLR$_|8(GbJX`zPU&*~tNetcC z-&N#X4ArYYo;9UjYpQ5msnI}vv^A+6Jpe(L0ADy4~f@hENk5 zhZx_#=rFQ4x_LRh88o`nF-qKFL?BKHum42j?Q`#ms_*-KFeYs^_e}~}zn4}2Lx2eS zAi-D_a0Er!d`6$1xPF(6AY=PW=BcR5M=SE?W$%%D|8Y_wd;~ikD<%CH8_(o)!rE-ky$UcMkopO(cBe}}Xf^k#j{f-3;?o!Rw-NU@ zfBswrnRD5;Wc;M1l3G)M`J@ILP5mDIdg9%S8RNi3=;}_`DzgwJo`I>hrg?^eWmLYy zA_n?RBi6y#oxkKcY0QT0Iy&=t(ykPy~oT|Ak#&nr=hO*Dp{o39h_QU zJOy)+aE2>2dqw5Uo&?@>MuYLZp^#crg^7#QW|&%HeP43@-q$2c?|3VtbSs~H){q`d zI=mBEtHBG0f&WD5SS23WqsT~Na9=OHd6~WtcYhmY`}|q|qxc-9%O|nx{nk_v=F<}t zXT@e-5!W|L7iHqda-5{+B8B0c&983>SbL8^yrGNKT(oFrHbw^aX=aX*xz^9|1Kw_O z?r%WX(lWc#GjCote!f)Kde{xL82KuhMRva@EOeXc3yFgoxWBDWTEhJT1opR?2Hw$g z)0E2_jAyBSL&6MXJK|Hl9LEGrY5KqDIY&Bz*YE$Q9tU4sS@IUdiwg?v)5m+W+d`@B z)W`k3LwMfj!3IQH1r6)3$}?YfMFs*X9!c77y+j4IWNAPL;6W<1s+GX2QNvD1yni38 zc+>hN1$G{3WRXkBVrOA(VxnV9uSkJvL^Jsif~XQ2dkW1YZ2Ok}=Fcknpj)}POkaZ6 zE$OwAZ((_FUzuF$&jZD=Y|`Izd28lTPnK)?mIH!8lP4@sh+g4%rl{T)q?^)>;Ea37 zHfHvwyElwu7%Kz&nWYiC1Z9dOZN2@~4MaIR&ha6JLyX;Jh%(Il5d=Iv#1aYvhcd&d zM_WRR1gk*ni7m_=Wtt@8(Ipt$#P3tZ5bXSve%fb_KuhzJyH!vrx6cFf{0k`4Q>dvV z8Oz`Zrg#OoiiSy+BN_(l`Bk+D^9)|NV(fn~UfKsDS^J1E8-gv(ndL|`L^v8V&50w-XO@u^R^ zgfs&bQX<^EC(ZH;?N=b5Kk=bBNHdIrSBoT~N_$41C||**NHfCsF$!>T{}$u?e-&e? z!SUOwxso4N=i+USVMbFll0K zl1h)4+TB({Vp^}u)n(6*_wDHEuVT%g;=po`=pcO$o0HsjMI7O=Gb9}0-FOtfIjV%I zc=qqx5>sGPw4&zuAJefBT>G@xQi!;L21%USpN2SLu!8Hipy@})76Cje;oFaCnZ+?R z6t@S0OO&=hV^(iA?4u~^&pe5Ehdsus-M8&>t=TlsZpp?Ff^}xl>kE1U+KZwZuDOG_9Lqq$dJBINuZmxk|D{7E?*yph-R0jp-p4l^*vS4LB-{$LvV4ah zUldc6^}qdP1$x>aE1s194e?Y4v;zJAVa15iVes%F)JbSV;+?fOg~!C??KH%C*$7%_dd^vam4xrZ7 z0HZgLUECU(KwBl#z9AG7JG`?m${+Y_vo?~^MCxxiE+LZZV{sRNAE8$Ie1~K6z8e=U zhhh{;Qmin=>u0oTNLT0{)K0(mK@yZFF@Q^GeXb#@rA(+irgmI$SNZrXtx)6#sXiX;AP)vqs{z0vmU|_7pY-+eL{)1ZO zulX<3VZ7v`^S@B*L*n}vG6Wv7v23()pu#u_P^_h^_R7?E71ineG{Ngbij)I*R#}UX z0vXyR(xJmRvtSr8ZHCY$bVTSonO4FOafk52IJNzjW0kmds+4G<1IqRJPEl-d==?b` zRXZ40IE4PgRmoyBzp4?u9?BR|I-1z2#zYE|RLeOUOdKc%Rhw=lEctVNfch7`DpY*7 zKZ=?_Dv1m2TQm!m$KX`DUFS$wSbBQvOP(}JhcmE3K#dWhgS63Xc<6?BlQ8#5R)nia z%K_B4)>!UF`Q zL~t4(QCH_B>tWjrg&-Is4&gEOosX7fGOm%~- z)HVENYDs9{IqdZ^&$0^k5Ep!H)lR%`c)kYmK(mw^#&ofkr>Y!Ij}KuTRb#5(gWQtecjAc*wy zFau%1H!IO*GpBX#9h|mKxF#b{l1oYp9ixfG3m2A=;7_vGq>91Is>((!iU`cW;zTLE zlpo^y3P?nfnqeZ!dUMdFjG=@~DU^(2{HgGy(Jc;0ke;d25XF=Z$jeoR&m&AdDx{R+ z5mZ^daODYW-3g*(or(FDBlA@C5HMYolY3MVCX%d`>Z!#sVHx0*#kC^yB3>$`{pieZ zL?tjWk8#Qh;#FCrEDq9VKlR(@Mf{n+=+sw5$5q55JZbVG)+eRPjCW^F5)-Cm?H|c# zL@|@6#uddW1JP8K#&a;#DC%gWFwGbP=+0-&5G&I9k#W^j(@gRrB$S6ea6%e+e?m0+ z(*b7!w+hYd=uZlmv<>xvbmq*3v^>~Et36RvHx*so{U37Qy}# zl>{k-l6a|(Dh*NfUl!=r0WFA!$NFQzbZ123Gs(kRDx9AI>o3QWTGl zrBJ}+6|~6z6=Al($1WCQY{JVVNt~5|McwpjH(96gzCu|>=X;>srP|~nf;O=%fMWse zd?m$b?Hr|a2swX9Y~g@ddVVMp{fT=mc)w^vNk`Zo%br3>y)V5W(g4EJZ@i~1jkdr-UawHSnAg$dkKcFFda<3ciY+m4A&9?v1U zKPtf+gOx6$g9h&-5Y0w3rFh~TC+^dbB*1G;m7L(BM97w_g)fxT?I6FWN}JNpb?I(v z8-W*CSwABP51fgqYok+UxuXRujcpmkIg;$@hHN{I5}+Z)fx(vk*mW8pLHPCT2Z-+4ASGV+1%_Bs zezE>Ta4adFr=<&$WXHDgwyvPT*`KgI7dAc^UgUd@s+vwT^i{$G{y{3|2MSOkPG;7A}6!Gg6=^hAeoTDdFjw2TEdF!*#3~`Q^w+M3$$Aa6V$=Vx&;0HKmUs=K7;=J!{y`=RTUN@jp_%`R3z9Y+YkWdU5JSL& zQSMNZzIa8$wYA85cgj00K;>=Pj3ffD>=~Meh&wGh7qqENZzkqif5Z*;R!Gm;reUV* zF)UpOsZ_XiM4etL&tTOYnQ;)GKHps4?zCz5-ER?ZTdda$={T#Ydl3 zA2Ov0H@~n#yD{Wi0m8R8U>I;$>}7C9D+Ot)W_NQQ##M=)pFn0C`|Nu%4)Mv4I`DzG zw9zgP30W0C#=6@ap>+MbdFp4sy@#07IPy71AIXQ81~M|FFdmY9zcA5OGNgR`5z6v4 zR2L9_(W!o6YqheC?A*pMK9ch}y;L|CET>Q`DplWoq?ey5IRhB+(6THMYv44&UtnfO zLK6-SbLWakYj{j_mqclZ=r{XQGD|_0)7R8-iFd3ZN}Q8>?7}5 zgb6jt)f@-T_nG|OK@y6sSO{aWK=tj*YPOgmd-wYlh{z-U3VI8@$Qtnr80CF)?bcSn zB=v`B`&O6`Fp$vSfds-+W^SQPbw2~&8_GXK+=1tNQ%EzVp~u6#^t?bCCghh(`fdo( zo&hDoVr&siDFqVw3w$3rt?|pW)*o(lprv6#B=3fN5~#i)#dE};;RhW@m~@AnJAr@K zp!%|y_>_+l3;6#M<>K-C^Phj-Jy-lo6el#%azMB2)5z!OU*NxR_mLSBD}lE`WFmY$ zUIi*-$Op23^j%hRc>jvWwTtn`3%OC6edIih@1z7n{VW8IK+pb%6mtJxgD`(PCj6RT zc?(UQG5nn5eiF?0p$74{V>lu;U4~q_jY3R>xA$dq(J(Gpx6o5sUdIf7h^_gl{E@^$ zSO}D@d|La#0w;;eA2jk$E#CgW0%QN9Wd4^Zu;?Y7$1{5a6f7kA+7IK58T)4m*Za+f zNUa#v=+9{I+RXlua|?~{2po-lW%baKW+gkXy(OZI6 zQ*pn=P3BUM^Y)&L+dxo&%h&84w;IZ!|OJ$#Sj>zWnOZ1|Zsk@PJi|1qo*M zal&~PH-KHl48Sw(n33t0;USaS2PB42+Rn^>>v|atZAK54b?n1C9e*(keW?kBj^LQl zdBM@@56LsFhbP4|{e)0dw&<-1E!0gYM+r~6VIgSX`n5-9%Vefxhik@!>E>in-$^BI zOw}MA5^$Ta6x^g$3ZOZhHkRA;zBj9Oabz5s z7%~Nu7mPPe#`}Rc30$#Hw;V0=&(|Yor#mK=k7{qbS9J{W`11*4ai^e$J{;AAf#6Rn z(r}MG&ebZX6l7PjG?Zl1qV#9!>S!Z?DF8K8bC83&D5Jl&ajy3MRQGdQ_B^&{xD^t^ z4w4qm!hoQ!;AVmG0@QI{`j|*fw!(}yNSOUHMcUK}>MZ+uVdfNYl9t$vg*X~QI4UaY z(oJ{%tYn5XA-y+{LrYCoJxN3TCnPm6B=1?OGnzsH3tgp!dnfE?UVmq>BQXRAb2{pS zdiJktKM>h%NJV(tv$)iFX%Vc9x_OE1m3XbdT@(R_B&!oo3sAzY^wje-X%LqXVhkZ> zfzD_njki&69yAy6d0A=sSxHMc3@QK`8N|=Lw7QmA&dN0GapZ{l_8zH90J!82=jzVj z6|*Gt_$Nx>;W$6*L5>%9I5CV+aBOwh-$b?TzSQFA3 zN$3`rvm=)5-7+2qGdL+u=ALtQ8d4>F%KKZraSmdzeLTxY8Y zFfVk(sE1@)As69g73HO+t_5&pqe16m*SX|3 z;G`f?LhOw@Q$RQ`VH zNr=dCqWrmqnUECUqP)lwCUG105uZU>>egJ)aF|q}h%sih_c?A+5bGM07xJ&yvKhvq zDmZWSeo#(>0jQxJ4OiUa8f+lTu5Xd~xRoAn3_O$)mq zTzG~CecWmf*ZJ^)$_0OncC0)>DNcp(a4ELHai}|gO&Cz9C4jIFhIIcI0gv6r!z40T zfqxO8I)dWG#2t6y$o2vgSCFG94YnAIU(8$(B`GB-m5~quxCK2PI4UPdhc@SHiU1^y zbQ8q5-h_oGVO$E=k^vv)swZWY=?H;E!3|Ni8M>xK2r0`(?d<>-4N5Ee@4kYA=Il z%IJ-Yi)^6ExZa$hMj*R#e(Oq|nx6+@Ps!(hC1xfB&b77?a$!ph$^z-Rk9wBc3;NeN zbWv(r3fVNi!hKi>lbkk=3TJ>0KHQ=Y9t&7;ALT7Er48`%IkA}{z*%vUbao#;Jaz#0 zQ!uv-^;}&xFI3{QfU(6q)K`u+^lG!%Ki?Dl zkPW(X<<$2QnN4HjYZi@2k{QOkStT?uB#_CYX`1eRt{dyAlR8VnXlWdqi{12lGp4`j z?`gbvbXqapH;K^mh*QW zjGmoR!?rzh*cK!EmrttfG2ga#?XcDXtB zT(?4Yr5nY|*v#Q7%YKe3F}jb!-*;wx>fjwnB@A@nhu-sppo=pN2W zMV1BzAcS3{Kj#K;VyCcHsH@tP{}2mKe6H-L8eNT~Z(w`B5tq483*6<(nJyu$C-_d@ z&jA=Xq)31mcXfh;We(Kx_JRwqNjO`+!(fX}xI8z7;^yAF8wdig`OrQ`9HjO;A z&T#8K;~P+E{Y}&?#G8TWZc|UvHJ5~-ZqED8F$BZDZcW8NV0^JaB@?0pLtJ z>V86Lx{JVT4svrbr!U~{-T{c_Chc3d`97+VDF}a*n^kMO)`nZ39jFcPTr-r{At!mY zmq%{uz-~H9Dl%5g@^3u=cl`=BOZA!~5K9eiNnj8Cvbhd}9$Lc}9ryl)jJqTB#npoE zYgI6&QiYj!J?x371h)=8AA6($W>4j`WPLavgLPfma0aq+hp|#8|3kyrWXwZ}KG&65 zed=)c<-#PBm)5>nc%q%tD`(B6MV6?q>s_;{+;#p-<)|-;+vKMFPkFmygYhjWt}F9x zG|0&>JLJS>^ru81>}$n0#`V*fg4E!Jmc!%l`qn7ZS@(cUPOsn5HG^3Vo)`IKDZk!s zM%vQDeUJ9HfprSsdvNBLlcNI0NTt9?xjk9a;wNBgi8Z3>>JeHPS}H*_EP@6p{R^&D zzialuE=^;-|J zAb`wy^$Z*)s2rF^v3^cq!y)WU5@|tpB%ow%25yF$e)-9+#f8)PKt*~+TE6XzH_fyw zo&RUQJsXtze%|GhDe;fcEt3%%7=D;&tc**zq^pf0{R+qzq|af|LuAI~Yz@*UD8NT0 zkK;z=5fH9v63pYH8lO|!2MJ|w0ScVR%Ji);YhG(;h!&!6TWNS=WCqwL8bR?_Jg!9~ zQ5mNv=3`qn3m8wKPn5uvx<*eOW?{^H)9>DiO_Ls^ctQk-8ts~tow^uS#!i!PwYmXV z-KU%!RzV9~MhrfRmeG?Nx4{n2ev$~;ZGGr&PKb!m#iUp^?aaHAuY}tde$VjR#sdz~H)yN`aH|e#|}_e>}VqYPWu6XrL0K zqig%ohv&#J0M1(EeaKJz(mfesLL2>zA{l_bla6|{*}|;7Xin3np3U_w?AVhU*Mxq(TNjMjFo*oI(*5HEg5f%v}iWjFrCWW)d z*S(WW!4?xx$r`;pVdojPp*m*7ATFH5rem&jJj!xpgMWI3!-^-BFIHw_&i)*sOz*-E zaTX@tG8}N6iHePeOt!xwXwrGH z-j5?I{@}?)XGv<#kx@;NWvPT>QW1D7lW8cOTFG!45fhbB2D(<&KSMXyy7vY0YO35p zBVehtUe7<6_bgDyexw9JC6}$Bs@2rG8y(^Ptt;+X-=EJNRN!9J{7~%%taSJB`z4H< zXE$PPO}Q?&K-=I&NrZ+cEPJkrhZ`$?nz*`?_T4xSqeuR|BUstkxQ=?4+fkpcS(bgy z@Y&hk#^NCI#qE9RD6_$b5;oV zlzPh7NK|~g{jYYWNg`xzBfw6|opc}|nEyT{T`kS*%$WZ=vi{ZKOk3VzgA1qUrv^&L z;nK^7TSSNW<=WLs2_jmnXl#?1jxCK6$r(it;+0dMpV3y`AlzlkU|qE^{N=)1hCN{m z(y0Ls?Ro@_lJoJf{C7&|QL<+N?_LAto8^m8BGBJqPI7Ng+DFPBh$K5DNKd0z&0c}; z!z*~ZU@u4%OOjX3wEH%zwR&xEwJ_KoFj8%^wS6r|aHzVp$!(0Gq`hL`hm-B7W<(fw z@zJtKfzSyn0E2KQrT(tY``ReODk)7Kk0HiTAUF3o zD3r}4f+C~2e75F}bFcRD_&AwqWmS>E0ePceyLzRz&`G^F*HSD_|BUhIQ@J259S1hd z0h!=B8ST6!m6%+TqR_Z~=8AVgm7yI{lB2Ll$9;jXhA#g}bdjb`-lA~BF2fQJH^W>| z{^QQG(Z0xv%2GGrt=k(7v-wPTkpzvU;Lw~^R<@x@dA_!ANh<4$6Io0dGnQ!qG_mqZ z>P6EQEXEqNFiYS63e zhax?6QJedAyT5+nAoy_~N-f@o2o);53E~wN$bSlQsi;6_&_s#XK$#DYy-(pfNbGVd z3dt1k7*yGREl27v?uWEM=$JchtP|G8>QP49e9;gtHJTFAcI1g?9I3pJU$q9(nuH_0 zA^&;{*1kpoyXNoMt5{`E7vz~Je2mAmS#&`rpKM1~2p1C{3!&)ZikwgO3LeGzVQZAB z1ds$1=*t6lswahZr_&d2ZA9F(qBxO)^uA5%}yewcJbw3gleCq-$76R_hTfk_NgYqoVVAr#4B(l-yL*)$9l zlH}=b=Q4hyGbnrLIDNxNNkPKqeE2EJM~tDf6uz=NaU7gqaQ{tZKP9QFoo;Dqg}PYc z>dvZMDI7;ZDpuwo&GYcrmBATmbkTrZ_RC?qLW&fvd?TI}bt4+uVHt}&Lm)HL6h)>UUaf`xoY|FCj;N#@qjPb15hVueQ}rv3bg>L0^E1ij*JQ3ggjD zZehAbEUDl+pP;O4R(du z-Mr(3L}i2C72$WL(uS;!>jyjTO2RQoPHGbv9en@}LQ>pi7ZDkMD{n%$-Sc4J*K8Bz zf~UTJ)}moavj}@a#Vs@5R<&>N<97h8cU11VfN^nFt*-2~ee`ytt?V3?E2`xCB!upI z&a2Tmq38%P+9~W$rn=;jF?dcd(~lF%3S@YN!p#!T^}7^wMG zQDN&eE)XFj6-R4pRWEH@NB;alX014KTG05MLWXL?`*X*(Dm#dbKCC%}bP3`4TbGoI zNr?}tKA?MOQi?O~*({9@6p>g4mU|usAhmyDED$Feo--6^r!FIaT+Y5M2@~t7DoR#VVDz+DetBeiBGs@q$7*B8yMi0KCydLkk!lj7<(hs}PG^p^L&0oF z4V6wFV@gATK$It?fO^1|vV|6)v^O`%ZUwn{nSjYdd zm(Bp|9Lw`otM?1~pSf6$AKz*z@B#k! zbr|g1m?KV80D8r6K%}ikiWgNg2c9JJu@z(>LU7wuD`p({zu(ktzn~Q>w)<>3e;}50%?zy*X0tq{8{KlB+nmW-;ctRi3>Nz6%k8#(eW>MbN z<<;cMJJp5WR^Pz>IiSs*a`JmX!Nx%0IR6m-N3x=`gQLq|qnaI8Zy(5lA^x>z;BJ4M zH4nlPBTNc})@E5okI>zZ(w2NfEV|;|OP-I@Wb|u|>-91}fzVNqyf9ImmR0k>P09fB#Jwtqx9+9)6Fi6sTOi6du~st zqd|TA@ob^#KG&T{EV?Zwv?LQJ9I7h4E?J*3Sn?lOz+I)zuWH;*8D>hKFI*Pp*w(L4 zWz*C-?DqAvaut-C8GD^jNtysJSKh(fHHYEV+rwcWNL>*Z6c2{K1h!edI2uYPpnu(` zkp23vRa)F!Xt)iqCKC?K?*6mpuy?aFHgg76W&UJ$)0$iM`#d<^JEg+$61vUdi5w6d zO$Ea0deIW(&G#TwICbZ_W2`Kj*Roe8)AUu@LS+%`a%f*BqtShLc;CGNuaLi9Zvqpx zk-{-txUK_rN_RvVj%BA-4&HyJo>E=@REAwgLz|gv^A)!G*n5wi{f)Y@0EtFdTS}wJ z_nrE7?YmTZlr4WWci6x~%D(1JQthGLRQa?9JpsAb?C`=D!d+91@Lg6Jm0|W^TWFQa zyuw#DF1Ulc1-C54EfaO8uG%o_u=3pqc(~#YOq*bo+KodACo08#NGeSt4h_Zm%aIlJ zI;DOmmF0X^ad3+MaKk@;d_vJq3H>_iT<#%%PnSYc%Wyt3Rpyyq)P@{rt= z(pMo0T%8JjJ2MaIeqNjeu*|f+>47xk^tBccGmtTs5pYh@unwyX^t|7GJxv$!Vt(BM zYzRT_P)Txa#$1JWtLs*vzanYu&7Z9-d>IySFf2eqiI!Bb8G+PAQHxjZD$SL;&~K)0 zlPdPBf9)vl=KiWMS$||o%P=g9xgo;VQgF$hrri=V#~A+${yXWNvy@_bAvP6F=FB36 zycBMhXJ5L)H}2TDY$QX@q{wnAI@5H7JBH=YQ{FnEmiCO2dNw8`kf&z#X`j zl=o+cnPYIuzZpi@B&&_eFM{ZYMNWD6b_C6hODN~W#5K35+C{eHehX>7LuW?!J-J7mMz``Md+&ucx6mav1C-&J1Orjmh`D8@;DL9EIZx7($=v zxx98$-f#*E#Vp<1{SV*w52PmIaN{tZ#Bz1c==v9|Tkkx00NbgU)r&b8dwFg>rfLK* z+YNU5N_DV#d^MG+P_XX(J=*Dq!kh`#r=4lOyJkJ^-!MH;R0iG0)lN{yN*oub!WrJ5 zc5pjyo7F5{VQP@%YC@v*vUwBxzD@mJ!!&T$@ZKT(#&=Q?^W~!lUS0wLAAb)C8dOnV z_outwt!wk$o)DiN1AAijyS?XuZF_B9o{5EF4KCJFp8)%14b;>1=o9MkYTxx#od_ZW z%U~DYS|5UojbT16l(nHK`xI~RI`v2X_6PhwXRLy;6^m|25Rf1e5D;wOj0J4m{ns=F zTzLVnPkSRPTPABqGm9&A8%K0C48cw>Zd$u(6dFbh=z&hQz9PoY^k7_8-%FCXiWqC1 zLZlPr(KD!wzAmN!vg2Ps9zzAZKk6}5U9+4N=L7hZ#f2rIQQ$FfM#!vhIR!8bz;8FV zieMFk;tgglx7Oc!vhKHBW_i6%>v2hI#vHwkZBKJrokhvyO~YfHVyC7*5buo88_xuha?< zKyM#q-mo!#S~1i!OXf?xvV~!E9O3xAm4N95br7F>2m1uaNsJ`$xjy;{{u#%hhyg2? zJ~gAl?v|%o(54tK6kVfZf^e)cz7}0{hK|#sMg=B`Z~52ecHL#zQQsppcrvE7oG}VT zvBWUbZ|jMrcGHw7W~FS|6t6eRr?ehM0>vk?V~LgsR0}&fmpRJsGRr)N0Vq|`!-tZd zy2DMa>~XV!!%^@MFd~G4TPQ)3hG5i50g$W+WS(8Sp&;524{(;Z>|ce!zeBC^VgOsA zMtGWi5z3CPM5s~H;K5%ElEPw5^zJ%|gJVm@i2KYE|9mLO7K>5X95;oVb|IymTjTbH zWQH!xP_;q_A?0yBK5NMHY9FrmcVFU3O$K2HlLcvxf-|)60MbzMV&cWl>eKs}SQOEM z+sEF+H#Y(Q2RJ#0c+5^^t*6-_^Cfl~#*6+6&Ovv9U?a^BUfBS8WU+oJ* zqqk;W919*k0YANePwI;GkFeEICAeNHvE*4-+7Cmo`ovU1YvIqTk7?FxVS zM(wD2Bk-PLBioF%3qNFCjDJ7bw=(T>POxCzDwfH%FXkDZeZs}!)8%c{*`(6p+mz0B z;r)Utm-rH``{rt&9S*7Kv&{I-Jui}7c-vFKhU=;gYi4pr^Udp2j$?T->uFzy??&VK ziTfBP?D<*wYJCa!Jm2MuE_PSMy)f*F?8g5=NR6Gp;8bM8);a~l>eQUKn{MQb-sCe|moV?egGX~hms}K1 zSo&WsFZ+VRcIoEMcWlXA-I_%`f)UDxC1<{nljz?0X_dmi#MFqs4_39OCR{NQc_YE4 zbGT6FVa2?J%rnd{*pr^L_ny|h#2f$QQh)r^iQCf-Kbyii?d@IVIqm0s&#V`|-M%C( ztygBMZRV#bb9OH~x2O8ro2En6YmRQ4bjhf?veftOBh?>OcjXR7zyG{`$`g;^;?u9L zwae8#xw!SUTy@RkWy|N)J-hjQUj4%2)7PfQ)urBEy?*b{YqzcMRc_CIzOLWy-sh9| zYJc1ReRKM7{8t&vsx{v$?!U}GSM&Ss_rK}&7WEGwt=}K}>uTD!L%y7fOemAO^*l@;GhnLG>S^p>9mPrdj`Ht;WNVw1{P(1?}zZ`|?ikbQtR zBa;X-Xn351VeU-xh_yjWCr$;nP)`BJ+(6w97-#^BF)&0s0|$ds^Gf1FDhpDJV?nJm zbOS2Yyd8c3mEHr6BXh%a1L+3FV?ZMyZG3Rk9$jNc8+ULfP{~E0MnM#f&w(QFx+gim z2s{#vuKmmH+v2Z*+H+VK7z9wX*8@f1+7k;3u(?`0@}ZYKP@M>{ou!AphPY5x27VNiig=(V z6_-@zq=Kg_(Zc}!KuMVX2H0$o4)s4+snUnNvO`WQ005$OGIgc0rySbO8>2B3Fz5eCRN zA{&6M+ly`%dfyRYmP8Y>S*SfpbW_l~S_o70o1vkC((yvqkKP_c=s(qll*Le6hXLNK Tz#Ih1Re}tO!0fT72gCyacV2I) literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutPreRankingPredicates.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutPreRankingPredicates.scala deleted file mode 100644 index 9ba1c9f6f..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutPreRankingPredicates.scala +++ /dev/null @@ -1,37 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.common.base.TweetCandidate -import com.twitter.frigate.common.base.TweetDetails -import com.twitter.frigate.common.predicate.tweet._ -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.hermit.predicate.NamedPredicate - -class LoggedOutPreRankingPredicatesBuilder(implicit statsReceiver: StatsReceiver) { - - private val TweetPredicates = List[NamedPredicate[PushCandidate]]( - TweetObjectExistsPredicate[ - TweetCandidate with TweetDetails - ].applyOnlyToTweetCandidatesWithTweetDetails - .withName("tweet_object_exists"), - PredicatesForCandidate.oldTweetRecsPredicate.applyOnlyToTweetCandidateWithTargetAndABDeciderAndMaxTweetAge - .withName("old_tweet"), - PredicatesForCandidate.tweetIsNotAreply.applyOnlyToTweetCandidateWithoutSocialContextWithTweetDetails - .withName("tweet_candidate_not_a_reply"), - TweetAuthorPredicates - .recTweetAuthorUnsuitable[TweetCandidate with TweetAuthorDetails] - .applyOnlyToTweetCandidateWithTweetAuthorDetails - .withName("tweet_author_unsuitable") - ) - - final def build(): List[NamedPredicate[PushCandidate]] = { - TweetPredicates - } - -} - -object LoggedOutPreRankingPredicates { - def apply(statsReceiver: StatsReceiver): List[NamedPredicate[PushCandidate]] = - new LoggedOutPreRankingPredicatesBuilder()(statsReceiver).build() -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutTargetPredicates.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutTargetPredicates.docx new file mode 100644 index 0000000000000000000000000000000000000000..6f06803b55ef2548a5cfc1b3aca0be78fcaa4576 GIT binary patch literal 37357 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 E05{|6jQ{`u literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutTargetPredicates.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutTargetPredicates.scala deleted file mode 100644 index 085ad73e9..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/LoggedOutTargetPredicates.scala +++ /dev/null @@ -1,53 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.abdecider.GuestRecipient -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.common.predicate.{FatiguePredicate => CommonFatiguePredicate} -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.conversions.DurationOps._ -import com.twitter.frigate.common.util.Experiments.LoggedOutRecsHoldback -import com.twitter.hermit.predicate.Predicate - -object LoggedOutTargetPredicates { - - def targetFatiguePredicate[T <: Target]( - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - val name = "logged_out_target_min_duration_since_push" - CommonFatiguePredicate - .magicRecsPushTargetFatiguePredicate( - minInterval = 24.hours, - maxInInterval = 1 - ).withStats(statsReceiver.scope(name)) - .withName(name) - } - - def loggedOutRecsHoldbackPredicate[T <: Target]( - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - val name = "logged_out_recs_holdback" - val guestIdNotFoundCounter = statsReceiver.scope("logged_out").counter("guest_id_not_found") - val controlBucketCounter = statsReceiver.scope("logged_out").counter("holdback_control") - val allowTrafficCounter = statsReceiver.scope("logged_out").counter("allow_traffic") - Predicate.from { target: T => - val guestId = target.targetGuestId match { - case Some(guest) => guest - case _ => - guestIdNotFoundCounter.incr() - throw new IllegalStateException("guest_id_not_found") - } - target.abDecider - .bucket(LoggedOutRecsHoldback.exptName, GuestRecipient(guestId)).map(_.name) match { - case Some(LoggedOutRecsHoldback.control) => - controlBucketCounter.incr() - false - case _ => - allowTrafficCounter.incr() - true - } - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/MlModelsHoldbackExperimentPredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/MlModelsHoldbackExperimentPredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..207b661e2bfcb1aec0253e98af12068b88b07552 GIT binary patch literal 37574 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 bNLdWEbr|5y3d}*ETqVem2+SV-eIOnH-c>$> literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/MlModelsHoldbackExperimentPredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/MlModelsHoldbackExperimentPredicate.scala deleted file mode 100644 index 014393870..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/MlModelsHoldbackExperimentPredicate.scala +++ /dev/null @@ -1,71 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.params.PushParams -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.util.Future - -object MlModelsHoldbackExperimentPredicate { - - val name = "MlModelsHoldbackExperimentPredicate" - - private val alwaysTruePred = PredicatesForCandidate.alwaysTruePushCandidatePredicate - - def getPredicateBasedOnCandidate( - pc: PushCandidate, - treatmentPred: Predicate[PushCandidate] - )( - implicit statsReceiver: StatsReceiver - ): Future[Predicate[PushCandidate]] = { - - Future - .join(Future.value(pc.target.skipFilters), pc.target.isInModelExclusionList) - .map { - case (skipFilters, isInModelExclusionList) => - if (skipFilters || - isInModelExclusionList || - pc.target.params(PushParams.DisableMlInFilteringParam) || - pc.target.params(PushFeatureSwitchParams.DisableMlInFilteringFeatureSwitchParam) || - pc.target.params(PushParams.DisableAllRelevanceParam) || - pc.target.params(PushParams.DisableHeavyRankingParam)) { - alwaysTruePred - } else { - treatmentPred - } - } - } - - def apply()(implicit statsReceiver: StatsReceiver): NamedPredicate[PushCandidate] = { - val stats = statsReceiver.scope(s"predicate_$name") - val statsProd = stats.scope("prod") - val counterAcceptedByModel = statsProd.counter("accepted") - val counterRejectedByModel = statsProd.counter("rejected") - val counterHoldback = stats.scope("holdback").counter("all") - val jointDauQualityPredicate = JointDauAndQualityModelPredicate() - - new Predicate[PushCandidate] { - def apply(items: Seq[PushCandidate]): Future[Seq[Boolean]] = { - val boolFuts = items.map { item => - getPredicateBasedOnCandidate(item, jointDauQualityPredicate)(statsReceiver) - .flatMap { predicate => - val predictionFut = predicate.apply(Seq(item)).map(_.headOption.getOrElse(false)) - predictionFut.foreach { prediction => - if (item.target.params(PushParams.DisableMlInFilteringParam) || item.target.params( - PushFeatureSwitchParams.DisableMlInFilteringFeatureSwitchParam)) { - counterHoldback.incr() - } else { - if (prediction) counterAcceptedByModel.incr() else counterRejectedByModel.incr() - } - } - predictionFut - } - } - Future.collect(boolFuts) - } - }.withStats(stats) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OONSpreadControlPredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OONSpreadControlPredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..1d4b177413e5ae3bf25bcfdfcf029778f1a61735 GIT binary patch literal 37715 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%0DihRZ#GgoP}g;IydL5TRTtD~Gwp=oWlIyXVJ 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 Pxk`{B5tu#h^nrK)lc;k~ literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OONSpreadControlPredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OONSpreadControlPredicate.scala deleted file mode 100644 index bcd9e30d0..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OONSpreadControlPredicate.scala +++ /dev/null @@ -1,116 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushConstants._ -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.util.CandidateUtil -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.util.Future - -object OONSpreadControlPredicate { - - def oonTweetSpreadControlPredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[ - PushCandidate with TweetCandidate with RecommendationType - ] = { - val name = "oon_tweet_spread_control_predicate" - val scopedStatsReceiver = stats.scope(name) - val allOonCandidatesCounter = scopedStatsReceiver.counter("all_oon_candidates") - val filteredCandidatesCounter = - scopedStatsReceiver.counter("filtered_oon_candidates") - - Predicate - .fromAsync { candidate: PushCandidate with TweetCandidate with RecommendationType => - val target = candidate.target - val crt = candidate.commonRecType - val isOonCandidate = RecTypes.isOutOfNetworkTweetRecType(crt) || - RecTypes.outOfNetworkTopicTweetTypes.contains(crt) - - lazy val minTweetSendsThreshold = - target.params(PushFeatureSwitchParams.MinTweetSendsThresholdParam) - lazy val spreadControlRatio = - target.params(PushFeatureSwitchParams.SpreadControlRatioParam) - lazy val favOverSendThreshold = - target.params(PushFeatureSwitchParams.FavOverSendThresholdParam) - - lazy val sentCount = candidate.numericFeatures.getOrElse(sentFeatureName, 0.0) - lazy val followerCount = - candidate.numericFeatures.getOrElse(authorActiveFollowerFeatureName, 0.0) - lazy val favCount = candidate.numericFeatures.getOrElse(favFeatureName, 0.0) - lazy val favOverSends = favCount / (sentCount + 1.0) - - if (CandidateUtil.shouldApplyHealthQualityFilters(candidate) && isOonCandidate) { - allOonCandidatesCounter.incr() - if (sentCount > minTweetSendsThreshold && - sentCount > spreadControlRatio * followerCount && - favOverSends < favOverSendThreshold) { - filteredCandidatesCounter.incr() - Future.False - } else Future.True - } else Future.True - } - .withStats(stats.scope(name)) - .withName(name) - } - - def oonAuthorSpreadControlPredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[ - PushCandidate with TweetCandidate with RecommendationType - ] = { - val name = "oon_author_spread_control_predicate" - val scopedStatsReceiver = stats.scope(name) - val allOonCandidatesCounter = scopedStatsReceiver.counter("all_oon_candidates") - val filteredCandidatesCounter = - scopedStatsReceiver.counter("filtered_oon_candidates") - - Predicate - .fromAsync { candidate: PushCandidate with TweetCandidate with RecommendationType => - val target = candidate.target - val crt = candidate.commonRecType - val isOonCandidate = RecTypes.isOutOfNetworkTweetRecType(crt) || - RecTypes.outOfNetworkTopicTweetTypes.contains(crt) - - lazy val minAuthorSendsThreshold = - target.params(PushFeatureSwitchParams.MinAuthorSendsThresholdParam) - lazy val spreadControlRatio = - target.params(PushFeatureSwitchParams.SpreadControlRatioParam) - lazy val reportRateThreshold = - target.params(PushFeatureSwitchParams.AuthorReportRateThresholdParam) - lazy val dislikeRateThreshold = - target.params(PushFeatureSwitchParams.AuthorDislikeRateThresholdParam) - - lazy val authorSentCount = - candidate.numericFeatures.getOrElse(authorSendCountFeatureName, 0.0) - lazy val authorReportCount = - candidate.numericFeatures.getOrElse(authorReportCountFeatureName, 0.0) - lazy val authorDislikeCount = - candidate.numericFeatures.getOrElse(authorDislikeCountFeatureName, 0.0) - lazy val followerCount = candidate.numericFeatures - .getOrElse(authorActiveFollowerFeatureName, 0.0) - lazy val reportRate = - authorReportCount / (authorSentCount + 1.0) - lazy val dislikeRate = - authorDislikeCount / (authorSentCount + 1.0) - - if (CandidateUtil.shouldApplyHealthQualityFilters(candidate) && isOonCandidate) { - allOonCandidatesCounter.incr() - if (authorSentCount > minAuthorSendsThreshold && - authorSentCount > spreadControlRatio * followerCount && - (reportRate > reportRateThreshold || dislikeRate > dislikeRateThreshold)) { - filteredCandidatesCounter.incr() - Future.False - } else Future.True - } else Future.True - } - .withStats(stats.scope(name)) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OONTweetNegativeFeedbackBasedPredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OONTweetNegativeFeedbackBasedPredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..3318da1a65bad94ee63243aad029a7f89479f9c4 GIT binary patch literal 37694 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 - val target = candidate.target - val crt = candidate.commonRecType - val isOonCandidate = RecTypes.isOutOfNetworkTweetRecType(crt) || - RecTypes.outOfNetworkTopicTweetTypes.contains(crt) - - lazy val ntabDislikeCountThreshold = - target.params(PushFeatureSwitchParams.TweetNtabDislikeCountThresholdParam) - lazy val ntabDislikeRateThreshold = - target.params(PushFeatureSwitchParams.TweetNtabDislikeRateThresholdParam) - lazy val ntabDislikeCountThresholdForMrTwistly = - target.params(PushFeatureSwitchParams.TweetNtabDislikeCountThresholdForMrTwistlyParam) - lazy val ntabDislikeRateThresholdForMrTwistly = - target.params(PushFeatureSwitchParams.TweetNtabDislikeRateThresholdForMrTwistlyParam) - - val isMrTwistly = CandidateUtil.isMrTwistlyCandidate(candidate) - - lazy val dislikeCount = candidate.numericFeatures.getOrElse(ntabDislikeCountFeature, 0.0) - lazy val sentCount = candidate.numericFeatures.getOrElse(sentFeature, 0.0) - lazy val dislikeRate = if (sentCount > 0) dislikeCount / sentCount else 0.0 - - if (CandidateUtil.shouldApplyHealthQualityFilters(candidate) && isOonCandidate) { - allOonCandidatesCounter.incr() - val (countThreshold, rateThreshold) = if (isMrTwistly) { - (ntabDislikeCountThresholdForMrTwistly, ntabDislikeRateThresholdForMrTwistly) - } else { - (ntabDislikeCountThreshold, ntabDislikeRateThreshold) - } - candidate.cachePredicateInfo( - name + "_count", - dislikeCount, - countThreshold, - dislikeCount > countThreshold) - candidate.cachePredicateInfo( - name + "_rate", - dislikeRate, - rateThreshold, - dislikeRate > rateThreshold) - if (dislikeCount > countThreshold && dislikeRate > rateThreshold) { - filteredCandidatesCounter.incr() - Future.False - } else Future.True - } else Future.True - } - .withStats(stats.scope(name)) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OutOfNetworkCandidatesQualityPredicates.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OutOfNetworkCandidatesQualityPredicates.docx new file mode 100644 index 0000000000000000000000000000000000000000..46c43f0cd4503cb156a0d5e1b6aecc4b8d547c9b GIT binary patch literal 38945 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⪚Lb#0ug3gVcu(WK58-HbjwE?&P(v_pL1 z!b48s6LHQ3dYR2JUG&!?t`YXp<9lLY(-qe*Gn&8_$9W|rCLo+F)-LBiMmR5r5?3Y+ zVa`e#nFX5xQSba76CT|5K)~_hqA#2EHRkag>kI#^3rr0)FLXUPvQtU5tzq};X5J8A zc(FK#5B#V`mtMlK9HW@b0B>KhO4He*J7I%*q>j9QH~&FpVb0ci_2yD#V?|c&izD~4v`duDF0&xGa&S@)x1r;iz(;N%Aji#^-#v#g~r?7Cz5%~&b7b$q&O&-~c% z*QWf{v5;Op}Fo5R^T# zUFNYwdM#*)CEOv4B^1%;(x;S^PF*x9+~zF#KPZAm&xGIdR*`gXr}A-`&61zSq});C#}afn7DLO6qgdP_Rbz5F zdL9jJw7=|RiZIc!4mH+vPm1BO-99O4R_ySkNK%HQT`zfbuJRmOU+D2aDx<#c>w|D- zuWVQ@&5uht@R=rkEJFmz@h-h+g?pVxYcE9KxEi+({v_sFsw7&Zn0vFre_6N6!1wO% zBq95{jy>&vrxS#Z_9$o}@U~o8uvZ&z$PeZ*@0&kx?#LGLIpxlO;O=qKA-Ye;%g3HM z*Hml@%yW=mW!G;sDN9#|`1u96pT zW3MamBHmO~Ei<}dI*ms?S2)dBHT@ICKs{CX4l%7u{07z3u?Qb_S-M9713y#Y#GCVB zI6ePq6m62{3B5UU8h>+7-66!jLaSg-qgKe%>=&8T@uBt2c9UyT17VDbwHSZvu)jA~ z5F1yTIExy;JdZ~kwiG?B+?A|ai^{N(AzzW@lb4U9?5d~xorZ+RWC@m2A;a--8Q$@o`8^NiPi>WLIVx>kJ+YT^AOW5f#)YI1YwtqR4L z@8>$?Q>V*rp_`1ONAM$I3le9f50qz6^YQbrI{VpqC`s-ruurl2VehKqC7*uR#Y~IH z3#)#%0#_>7G7rxbs&!L%*iI#zt7FjzFcxS8N8jS@C==IEg>fC|s!=Och3y6%TzHOC zsOG%@YDgA!Kabl9QizptVVk-6{yN5@TBFFV36$3GDRPbw3NExLE9p;(aGBL%Jx}Jx zZH|fKT*&BUE7p043EilMxX}m#?;5b(dm5!W-27rVqSxa%-;yAdlP|F29Ex~FS`F#t zNBisbC6Qr>HXdF$^L8@duC!kWewQH?;M*r%D-nlX;PBu{kq^Em;2_f`o;M>UmhyO| zLVDB9%i;PGET$vvrKa$_7>`n0kkUj%A^c+3ju}pON)oP9d0?k2WgyixJH7To+f){J z4sA>(KdHx}iy$Be*GEt7Z+O%!2rZ2q<4r@ymopr8EOzm~b%y1ii5Q+Sl#{H=$L}u>k(egYY z#JUB{%G_3=p4d9Vu=U!JAUg+x%t{96${^xD1-?HC34OqK56!XL`}Wn}zA-c~>#c^? z<}9qjJHDmIxj+SZIu2E*@1|!15o!mJbNgmHe!fsZ8wlid6i5bp1%$eui461#asC#a zF#{r@=0+R9p=2PB4F0JGK2a>s0K|VW{`b(HS%^sl+g=0?=?8=Y+l13V%m4Qtk4wSd zGttcQwb9XCR6y>>1_JSKlg9!r|I6J11Alkcap5s=W#Dvmf|)zN0Sv_V$^n1~^9Qc| zck%#~grGXmc_+}7 zd3`TeGLHfC10{dzQ7mFdw~3h^FUibdu9I$Yun|8wzZ6lJ<;;bbEqQqK4>?mAhMB-z zh}a^O$NV5{D@!oznX|@QdVSOnJ#!A38Nuwow-8!Mzjfox0A{1R1=xxC74SRT%gkc- zj$14a?60itPLi3zY_+y1dy;>Q$~NQ0tY?k~xAc#2zf7_1(V?|DJ1~R3%_;$q8!$a8 IGQWNM7xQ=Wg#Z8m literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OutOfNetworkCandidatesQualityPredicates.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OutOfNetworkCandidatesQualityPredicates.scala deleted file mode 100644 index 6f09df0c7..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/OutOfNetworkCandidatesQualityPredicates.scala +++ /dev/null @@ -1,221 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.candidate.TargetABDecider -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.data_pipeline.features_common.MrRequestContextForFeatureStore -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.ml.featurestore.lib.dynamic.DynamicFeatureStoreClient -import com.twitter.util.Future -import com.twitter.frigate.pushservice.predicate.PostRankingPredicateHelper._ -import com.twitter.frigate.pushservice.util.CandidateUtil - -object OutOfNetworkCandidatesQualityPredicates { - - def getTweetCharLengthThreshold( - target: TargetUser with TargetABDecider, - language: String, - useMediaThresholds: Boolean - ): Double = { - lazy val sautOonWithMediaTweetLengthThreshold = - target.params(PushFeatureSwitchParams.SautOonWithMediaTweetLengthThresholdParam) - lazy val nonSautOonWithMediaTweetLengthThreshold = - target.params(PushFeatureSwitchParams.NonSautOonWithMediaTweetLengthThresholdParam) - lazy val sautOonWithoutMediaTweetLengthThreshold = - target.params(PushFeatureSwitchParams.SautOonWithoutMediaTweetLengthThresholdParam) - lazy val nonSautOonWithoutMediaTweetLengthThreshold = - target.params(PushFeatureSwitchParams.NonSautOonWithoutMediaTweetLengthThresholdParam) - val moreStrictForUndefinedLanguages = - target.params(PushFeatureSwitchParams.OonTweetLengthPredicateMoreStrictForUndefinedLanguages) - val isSautLanguage = if (moreStrictForUndefinedLanguages) { - isTweetLanguageInSautOrUndefined(language) - } else isTweetLanguageInSaut(language) - - (useMediaThresholds, isSautLanguage) match { - case (true, true) => - sautOonWithMediaTweetLengthThreshold - case (true, false) => - nonSautOonWithMediaTweetLengthThreshold - case (false, true) => - sautOonWithoutMediaTweetLengthThreshold - case (false, false) => - nonSautOonWithoutMediaTweetLengthThreshold - case _ => -1 - } - } - - def getTweetWordLengthThreshold( - target: TargetUser with TargetABDecider, - language: String, - useMediaThresholds: Boolean - ): Double = { - lazy val argfOonWithMediaTweetWordLengthThresholdParam = - target.params(PushFeatureSwitchParams.ArgfOonWithMediaTweetWordLengthThresholdParam) - lazy val esfthOonWithMediaTweetWordLengthThresholdParam = - target.params(PushFeatureSwitchParams.EsfthOonWithMediaTweetWordLengthThresholdParam) - - lazy val argfOonCandidatesWithMediaCondition = - isTweetLanguageInArgf(language) && useMediaThresholds - lazy val esfthOonCandidatesWithMediaCondition = - isTweetLanguageInEsfth(language) && useMediaThresholds - lazy val afirfOonCandidatesWithoutMediaCondition = - isTweetLanguageInAfirf(language) && !useMediaThresholds - - val afirfOonCandidatesWithoutMediaTweetWordLengthThreshold = 5 - if (argfOonCandidatesWithMediaCondition) { - argfOonWithMediaTweetWordLengthThresholdParam - } else if (esfthOonCandidatesWithMediaCondition) { - esfthOonWithMediaTweetWordLengthThresholdParam - } else if (afirfOonCandidatesWithoutMediaCondition) { - afirfOonCandidatesWithoutMediaTweetWordLengthThreshold - } else -1 - } - - def oonTweetLengthBasedPrerankingPredicate( - characterBased: Boolean - )( - implicit stats: StatsReceiver - ): NamedPredicate[OutOfNetworkTweetCandidate with TargetInfo[ - TargetUser with TargetABDecider - ]] = { - val name = "oon_tweet_length_based_preranking_predicate" - val scopedStats = stats.scope(s"${name}_charBased_$characterBased") - - Predicate - .fromAsync { - cand: OutOfNetworkTweetCandidate with TargetInfo[TargetUser with TargetABDecider] => - cand match { - case candidate: TweetAuthorDetails => - val target = candidate.target - val crt = candidate.commonRecType - - val updatedMediaLogic = - target.params(PushFeatureSwitchParams.OonTweetLengthPredicateUpdatedMediaLogic) - val updatedQuoteTweetLogic = - target.params(PushFeatureSwitchParams.OonTweetLengthPredicateUpdatedQuoteTweetLogic) - val useMediaThresholds = if (updatedMediaLogic || updatedQuoteTweetLogic) { - val hasMedia = updatedMediaLogic && (candidate.hasPhoto || candidate.hasVideo) - val hasQuoteTweet = updatedQuoteTweetLogic && candidate.quotedTweet.nonEmpty - hasMedia || hasQuoteTweet - } else RecTypes.isMediaType(crt) - val enableFilter = - target.params(PushFeatureSwitchParams.EnablePrerankingTweetLengthPredicate) - - val language = candidate.tweet.flatMap(_.language.map(_.language)).getOrElse("") - val tweetTextOpt = candidate.tweet.flatMap(_.coreData.map(_.text)) - - val (length: Double, threshold: Double) = if (characterBased) { - ( - tweetTextOpt.map(_.size.toDouble).getOrElse(9999.0), - getTweetCharLengthThreshold(target, language, useMediaThresholds)) - } else { - ( - tweetTextOpt.map(getTweetWordLength).getOrElse(999.0), - getTweetWordLengthThreshold(target, language, useMediaThresholds)) - } - scopedStats.counter("threshold_" + threshold.toString).incr() - - CandidateUtil.shouldApplyHealthQualityFiltersForPrerankingPredicates(candidate).map { - case true if enableFilter => - length > threshold - case _ => true - } - case _ => - scopedStats.counter("author_is_not_hydrated").incr() - Future.True - } - }.withStats(scopedStats) - .withName(name) - } - - private def isTweetLanguageInAfirf(candidateLanguage: String): Boolean = { - val setAFIRF: Set[String] = Set("") - setAFIRF.contains(candidateLanguage) - } - private def isTweetLanguageInEsfth(candidateLanguage: String): Boolean = { - val setESFTH: Set[String] = Set("") - setESFTH.contains(candidateLanguage) - } - private def isTweetLanguageInArgf(candidateLanguage: String): Boolean = { - val setARGF: Set[String] = Set("") - setARGF.contains(candidateLanguage) - } - - private def isTweetLanguageInSaut(candidateLanguage: String): Boolean = { - val setSAUT = Set("") - setSAUT.contains(candidateLanguage) - } - - private def isTweetLanguageInSautOrUndefined(candidateLanguage: String): Boolean = { - val setSautOrUndefined = Set("") - setSautOrUndefined.contains(candidateLanguage) - } - - def containTargetNegativeKeywords(text: String, denylist: Seq[String]): Boolean = { - if (denylist.isEmpty) - false - else { - denylist - .map { negativeKeyword => - text.toLowerCase().contains(negativeKeyword) - }.reduce(_ || _) - } - } - - def NegativeKeywordsPredicate( - postRankingFeatureStoreClient: DynamicFeatureStoreClient[MrRequestContextForFeatureStore] - )( - implicit stats: StatsReceiver - ): NamedPredicate[ - PushCandidate with TweetCandidate with RecommendationType - ] = { - - val name = "negative_keywords_predicate" - val scopedStatsReceiver = stats.scope(name) - val allOonCandidatesCounter = scopedStatsReceiver.counter("all_oon_candidates") - val filteredOonCandidatesCounter = scopedStatsReceiver.counter("filtered_oon_candidates") - val tweetLanguageFeature = "RecTweet.TweetyPieResult.Language" - - Predicate - .fromAsync { candidate: PushCandidate with TweetCandidate with RecommendationType => - val target = candidate.target - val crt = candidate.commonRecType - val isTwistlyCandidate = RecTypes.twistlyTweets.contains(crt) - - lazy val enableNegativeKeywordsPredicateParam = - target.params(PushFeatureSwitchParams.EnableNegativeKeywordsPredicateParam) - lazy val negativeKeywordsPredicateDenylist = - target.params(PushFeatureSwitchParams.NegativeKeywordsPredicateDenylist) - lazy val candidateLanguage = - candidate.categoricalFeatures.getOrElse(tweetLanguageFeature, "") - - if (CandidateUtil.shouldApplyHealthQualityFilters(candidate) && candidateLanguage.equals( - "en") && isTwistlyCandidate && enableNegativeKeywordsPredicateParam) { - allOonCandidatesCounter.incr() - - val tweetTextFuture: Future[String] = - getTweetText(candidate, postRankingFeatureStoreClient) - - tweetTextFuture.map { tweetText => - val containsNegativeWords = - containTargetNegativeKeywords(tweetText, negativeKeywordsPredicateDenylist) - candidate.cachePredicateInfo( - name, - if (containsNegativeWords) 1.0 else 0.0, - 0.0, - containsNegativeWords) - if (containsNegativeWords) { - filteredOonCandidatesCounter.incr() - false - } else true - } - } else Future.True - } - .withStats(stats.scope(name)) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PNegMultimodalPredicates.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PNegMultimodalPredicates.docx new file mode 100644 index 0000000000000000000000000000000000000000..4e5740c8a57b44dd6d6e8fd79a85960307ea5034 GIT binary patch literal 37698 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

      WZf@K@@P5a@UvN%ZicT#1`QyNp57N9+l8 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 w1srOzEXe4sSz!yjz&v$lmGw# literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PNegMultimodalPredicates.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PNegMultimodalPredicates.scala deleted file mode 100644 index f838d7ae6..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PNegMultimodalPredicates.scala +++ /dev/null @@ -1,83 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.abuse.detection.scoring.thriftscala.Model -import com.twitter.abuse.detection.scoring.thriftscala.TweetScoringRequest -import com.twitter.abuse.detection.scoring.thriftscala.TweetScoringResponse -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.TweetCandidate -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.params.PushParams -import com.twitter.frigate.pushservice.util.CandidateUtil -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.storehaus.ReadableStore -import com.twitter.util.Future - -object PNegMultimodalPredicates { - - def healthSignalScorePNegMultimodalPredicate( - tweetHealthScoreStore: ReadableStore[TweetScoringRequest, TweetScoringResponse] - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with TweetCandidate] = { - val name = "pneg_multimodal_predicate" - val statsScope = stats.scope(name) - val oonCandidatesCounter = statsScope.counter("oon_candidates") - val nonEmptyModelScoreCounter = statsScope.counter("non_empty_model_score") - val bucketedCounter = statsScope.counter("bucketed_oon_candidates") - val filteredCounter = statsScope.counter("filtered_oon_candidates") - - Predicate - .fromAsync { candidate: PushCandidate with TweetCandidate => - val target = candidate.target - val crt = candidate.commonRecType - val isOonCandidate = RecTypes.isOutOfNetworkTweetRecType(crt) || - RecTypes.outOfNetworkTopicTweetTypes.contains(crt) - - lazy val enablePNegMultimodalPredicateParam = - target.params(PushFeatureSwitchParams.EnablePNegMultimodalPredicateParam) - lazy val pNegMultimodalPredicateModelThresholdParam = - target.params(PushFeatureSwitchParams.PNegMultimodalPredicateModelThresholdParam) - lazy val pNegMultimodalPredicateBucketThresholdParam = - target.params(PushFeatureSwitchParams.PNegMultimodalPredicateBucketThresholdParam) - val pNegMultimodalEnabledForF1Tweets = - target.params(PushParams.EnablePnegMultimodalPredictionForF1Tweets) - - if (CandidateUtil.shouldApplyHealthQualityFilters( - candidate) && (isOonCandidate || pNegMultimodalEnabledForF1Tweets) && enablePNegMultimodalPredicateParam) { - - val pNegMultimodalRequest = TweetScoringRequest(candidate.tweetId, Model.PNegMultimodal) - tweetHealthScoreStore.get(pNegMultimodalRequest).map { - case Some(tweetScoringResponse) => - nonEmptyModelScoreCounter.incr() - - val pNegMultimodalScore = 1.0 - tweetScoringResponse.score - - candidate - .cacheExternalScore("PNegMultimodalScore", Future.value(Some(pNegMultimodalScore))) - - if (isOonCandidate) { - oonCandidatesCounter.incr() - - if (pNegMultimodalScore > pNegMultimodalPredicateBucketThresholdParam) { - bucketedCounter.incr() - if (pNegMultimodalScore > pNegMultimodalPredicateModelThresholdParam) { - filteredCounter.incr() - false - } else true - } else true - } else { - true - } - case _ => true - } - } else { - Future.True - } - } - .withStats(stats.scope(name)) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PostRankingPredicateHelper.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PostRankingPredicateHelper.docx new file mode 100644 index 0000000000000000000000000000000000000000..f9e66ac3b66375343d02a6bf99ab980e2c8b6569 GIT binary patch literal 37359 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

      *!a<`DmdJJ1jkMIQKTj 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 - val tweetText = records.head - .getFeatureValue(candidateTweetEntity, Text).getOrElse( - "" - ) - candidate.categoricalFeatures(tweetTextFeature) = tweetText - tweetText - } - } - } - - def getTweetWordLength(tweetText: String): Double = { - val tweetTextWithoutUrl: String = - tweetText.replaceAll("https?://\\S+\\s?", "").replaceAll("[\\s]+", " ") - tweetTextWithoutUrl.trim().split(" ").length.toDouble - } - -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PreRankingPredicates.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PreRankingPredicates.docx new file mode 100644 index 0000000000000000000000000000000000000000..741684b4718b6f7ef613febd7a93415b500fc6d3 GIT binary patch literal 38259 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 z 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PreRankingPredicates.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PreRankingPredicates.scala deleted file mode 100644 index 4b61b23e3..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PreRankingPredicates.scala +++ /dev/null @@ -1,158 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.SocialContextActions -import com.twitter.frigate.common.base.SocialContextUserDetails -import com.twitter.frigate.common.base.TargetInfo -import com.twitter.frigate.common.base.TargetUser -import com.twitter.frigate.common.base.TweetAuthor -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.common.base.TweetCandidate -import com.twitter.frigate.common.base.TweetDetails -import com.twitter.frigate.common.candidate.FrigateHistory -import com.twitter.frigate.common.candidate.TargetABDecider -import com.twitter.frigate.common.candidate.TweetImpressionHistory -import com.twitter.frigate.common.predicate.socialcontext.{Predicates => SocialContextPredicates, _} -import com.twitter.frigate.common.predicate.tweet._ -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.predicate.ntab_caret_fatigue.NtabCaretClickContFnFatiguePredicate -import com.twitter.hermit.predicate.NamedPredicate - -class PreRankingPredicatesBuilder( -)( - implicit statsReceiver: StatsReceiver) { - - private val SocialProofPredicates = List[NamedPredicate[PushCandidate]]( - SocialContextPredicates - .authorInSocialContext() - .applyOnlyToTweetAuthorWithSocialContextActions - .withName("author_social_context"), - SocialContextPredicates - .selfInSocialContext[TargetUser, SocialContextActions with TargetInfo[TargetUser]]() - .applyOnlyToSocialContextActionsWithTargetUser - .withName("self_social_context"), - SocialContextPredicates - .duplicateSocialContext[SocialContextActions]() - .applyOnlyToSocialContextActions - .withName("duplicate_social_context"), - SocialContextPredicates - .socialContextProtected[SocialContextUserDetails]() - .applyOnlyToSocialContextUserDetails - .withName("social_context_protected"), - SocialContextPredicates - .socialContextUnsuitable[SocialContextUserDetails]() - .applyOnlyToSocialContextUserDetails - .withName("social_context_unsuitable"), - SocialContextPredicates - .socialContextBlink[SocialContextUserDetails]() - .applyOnlyToSocialContextUserDetails - .withName("social_context_blink") - ) - - private val CommonPredicates = List[NamedPredicate[PushCandidate]]( - PredicatesForCandidate.candidateEnabledForEmailPredicate(), - PredicatesForCandidate.openAppExperimentUserCandidateAllowList(statsReceiver) - ) - - private val TweetPredicates = List[NamedPredicate[PushCandidate]]( - PredicatesForCandidate.tweetCandidateWithLessThan2SocialContextsIsAReply.applyOnlyToTweetCandidatesWithSocialContextActions - .withName("tweet_candidate_with_less_than_2_social_contexts_is_not_a_reply"), - PredicatesForCandidate.filterOONCandidatePredicate(), - PredicatesForCandidate.oldTweetRecsPredicate.applyOnlyToTweetCandidateWithTargetAndABDeciderAndMaxTweetAge - .withName("old_tweet"), - DuplicatePushTweetPredicate - .apply[ - TargetUser with FrigateHistory, - TweetCandidate with TargetInfo[TargetUser with FrigateHistory] - ] - .applyOnlyToTweetCandidateWithTargetAndFrigateHistory - .withName("duplicate_push_tweet"), - DuplicateEmailTweetPredicate - .apply[ - TargetUser with FrigateHistory, - TweetCandidate with TargetInfo[TargetUser with FrigateHistory] - ] - .applyOnlyToTweetCandidateWithTargetAndFrigateHistory - .withName("duplicate_email_tweet"), - TweetAuthorPredicates - .recTweetAuthorUnsuitable[TweetCandidate with TweetAuthorDetails] - .applyOnlyToTweetCandidateWithTweetAuthorDetails - .withName("tweet_author_unsuitable"), - TweetObjectExistsPredicate[ - TweetCandidate with TweetDetails - ].applyOnlyToTweetCandidatesWithTweetDetails - .withName("tweet_object_exists"), - TweetImpressionPredicate[ - TargetUser with TweetImpressionHistory, - TweetCandidate with TargetInfo[TargetUser with TweetImpressionHistory] - ].applyOnlyToTweetCandidateWithTargetAndTweetImpressionHistory - .withStats(statsReceiver.scope("tweet_impression")) - .withName("tweet_impression"), - SelfTweetPredicate[ - TargetUser, - TweetAuthor with TargetInfo[TargetUser]]().applyOnlyToTweetAuthorWithTargetInfo - .withName("self_author"), - PredicatesForCandidate.tweetIsNotAreply.applyOnlyToTweetCandidateWithoutSocialContextWithTweetDetails - .withName("tweet_candidate_not_a_reply"), - PredicatesForCandidate.f1CandidateIsNotAReply.applyOnlyToF1CandidateWithTargetAndABDecider - .withName("f1_candidate_is_not_a_reply"), - PredicatesForCandidate.outOfNetworkTweetCandidateIsNotAReply.applyOnlyToOutOfNetworkTweetCandidateWithTargetAndABDecider - .withName("out_of_network_tweet_candidate_is_not_a_reply"), - PredicatesForCandidate.outOfNetworkTweetCandidateEnabledCrTag.applyOnlyToOutOfNetworkTweetCandidateWithTargetAndABDecider - .withName("out_of_network_tweet_candidate_enabled_crtag"), - PredicatesForCandidate.outOfNetworkTweetCandidateEnabledCrtGroup.applyOnlyToOutOfNetworkTweetCandidateWithTargetAndABDecider - .withName("out_of_network_tweet_candidate_enabled_crt_group"), - OutOfNetworkCandidatesQualityPredicates - .oonTweetLengthBasedPrerankingPredicate(characterBased = true) - .applyOnlyToOutOfNetworkTweetCandidateWithTargetAndABDecider - .withName("oon_tweet_char_length_too_short"), - OutOfNetworkCandidatesQualityPredicates - .oonTweetLengthBasedPrerankingPredicate(characterBased = false) - .applyOnlyToOutOfNetworkTweetCandidateWithTargetAndABDecider - .withName("oon_tweet_word_length_too_short"), - PredicatesForCandidate - .protectedTweetF1ExemptPredicate[ - TargetUser with TargetABDecider, - TweetCandidate with TweetAuthorDetails with TargetInfo[ - TargetUser with TargetABDecider - ] - ] - .applyOnlyToTweetCandidateWithAuthorDetailsWithTargetABDecider - .withName("f1_exempt_tweet_author_protected"), - ) - - private val SgsPreRankingPredicates = List[NamedPredicate[PushCandidate]]( - SGSPredicatesForCandidate.authorBeingFollowed.applyOnlyToAuthorBeingFollowPredicates - .withName("author_not_being_followed"), - SGSPredicatesForCandidate.authorNotBeingDeviceFollowed.applyOnlyToBasicTweetPredicates - .withName("author_being_device_followed"), - SGSPredicatesForCandidate.recommendedTweetAuthorAcceptableToTargetUser.applyOnlyToBasicTweetPredicates - .withName("recommended_tweet_author_not_acceptable_to_target_user"), - SGSPredicatesForCandidate.disableInNetworkTweetPredicate.applyOnlyToBasicTweetPredicates - .withName("enable_in_network_tweet"), - SGSPredicatesForCandidate.disableOutNetworkTweetPredicate.applyOnlyToBasicTweetPredicates - .withName("enable_out_network_tweet") - ) - - private val SeeLessOftenPredicates = List[NamedPredicate[PushCandidate]]( - NtabCaretClickContFnFatiguePredicate - .ntabCaretClickContFnFatiguePredicates( - ) - .withName("seelessoften_cont_fn_fatigue") - ) - - final def build(): List[NamedPredicate[PushCandidate]] = { - TweetPredicates ++ - CommonPredicates ++ - SocialProofPredicates ++ - SgsPreRankingPredicates ++ - SeeLessOftenPredicates - } -} - -object PreRankingPredicates { - def apply( - statsReceiver: StatsReceiver - ): List[NamedPredicate[PushCandidate]] = - new PreRankingPredicatesBuilder()(statsReceiver).build() -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PredicatesForCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PredicatesForCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..d1e639b29687be90d177cf06095fbb6506d2e7eb GIT binary patch literal 43289 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

      DB!aJmF8F;lWfmMN2u^wc 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�QpmvJ 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 wwfc367ySJ9Kll%m=Kufz literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PredicatesForCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PredicatesForCandidate.scala deleted file mode 100644 index e18667b51..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/PredicatesForCandidate.scala +++ /dev/null @@ -1,874 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.candidate.MaxTweetAge -import com.twitter.frigate.common.candidate.TargetABDecider -import com.twitter.frigate.common.predicate.tweet.TweetAuthorPredicates -import com.twitter.frigate.common.predicate._ -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.common.util.SnowflakeUtils -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.params.PushParams -import com.twitter.frigate.pushservice.util.CandidateUtil -import com.twitter.frigate.thriftscala.ChannelName -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.gizmoduck.thriftscala.UserType -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.hermit.predicate.gizmoduck._ -import com.twitter.hermit.predicate.socialgraph.Edge -import com.twitter.hermit.predicate.socialgraph.MultiEdge -import com.twitter.hermit.predicate.socialgraph.RelationEdge -import com.twitter.hermit.predicate.socialgraph.SocialGraphPredicate -import com.twitter.service.metastore.gen.thriftscala.Location -import com.twitter.socialgraph.thriftscala.RelationshipType -import com.twitter.stitch.tweetypie.TweetyPie.TweetyPieResult -import com.twitter.storehaus.ReadableStore -import com.twitter.timelines.configapi.Param -import com.twitter.util.Duration -import com.twitter.util.Future - -object PredicatesForCandidate { - - def oldTweetRecsPredicate(implicit stats: StatsReceiver): Predicate[ - TweetCandidate with RecommendationType with TargetInfo[ - TargetUser with TargetABDecider with MaxTweetAge - ] - ] = { - val name = "old_tweet" - Predicate - .from[TweetCandidate with RecommendationType with TargetInfo[ - TargetUser with TargetABDecider with MaxTweetAge - ]] { candidate => - { - val crt = candidate.commonRecType - val defaultAge = if (RecTypes.mrModelingBasedTypes.contains(crt)) { - candidate.target.params(PushFeatureSwitchParams.ModelingBasedCandidateMaxTweetAgeParam) - } else if (RecTypes.GeoPopTweetTypes.contains(crt)) { - candidate.target.params(PushFeatureSwitchParams.GeoPopTweetMaxAgeInHours) - } else if (RecTypes.simclusterBasedTweets.contains(crt)) { - candidate.target.params( - PushFeatureSwitchParams.SimclusterBasedCandidateMaxTweetAgeParam) - } else if (RecTypes.detopicTypes.contains(crt)) { - candidate.target.params(PushFeatureSwitchParams.DetopicBasedCandidateMaxTweetAgeParam) - } else if (RecTypes.f1FirstDegreeTypes.contains(crt)) { - candidate.target.params(PushFeatureSwitchParams.F1CandidateMaxTweetAgeParam) - } else if (crt == CommonRecommendationType.ExploreVideoTweet) { - candidate.target.params(PushFeatureSwitchParams.ExploreVideoTweetAgeParam) - } else - candidate.target.params(PushFeatureSwitchParams.MaxTweetAgeParam) - SnowflakeUtils.isRecent(candidate.tweetId, defaultAge) - } - } - .withStats(stats.scope(name)) - .withName(name) - } - - def tweetIsNotAreply( - implicit stats: StatsReceiver - ): NamedPredicate[TweetCandidate with TweetDetails] = { - val name = "tweet_candidate_not_a_reply" - Predicate - .from[TweetCandidate with TweetDetails] { c => - c.isReply match { - case Some(true) => false - case _ => true - } - } - .withStats(stats.scope(name)) - .withName(name) - } - - /** - * Check if tweet contains any optouted free form interests. - * Currently, we use it for media categories and semantic core - * @param stats - * @return - */ - def noOptoutFreeFormInterestPredicate( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "free_form_interest_opt_out" - val tweetMediaAnnotationFeature = - "tweet.mediaunderstanding.tweet_annotations.safe_category_probabilities" - val tweetSemanticCoreFeature = - "tweet.core.tweet.semantic_core_annotations" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - val withOptOutFreeFormInterestsCounter = stats.counter("with_optout_interests") - val withoutOptOutInterestsCounter = stats.counter("without_optout_interests") - val withOptOutFreeFormInterestsFromMediaAnnotationCounter = - stats.counter("with_optout_interests_from_media_annotation") - val withOptOutFreeFormInterestsFromSemanticCoreCounter = - stats.counter("with_optout_interests_from_semantic_core") - Predicate - .fromAsync { candidate: PushCandidate => - val tweetSemanticCoreEntityIds = candidate.sparseBinaryFeatures - .getOrElse(tweetSemanticCoreFeature, Set.empty[String]).map { id => - id.split('.')(2) - }.toSet - val tweetMediaAnnotationIds = candidate.sparseContinuousFeatures - .getOrElse(tweetMediaAnnotationFeature, Map.empty[String, Double]).keys.toSet - - candidate.target.optOutFreeFormUserInterests.map { - case optOutUserInterests: Seq[String] => - withOptOutFreeFormInterestsCounter.incr() - val optOutUserInterestsSet = optOutUserInterests.toSet - val mediaAnnoIntersect = optOutUserInterestsSet.intersect(tweetMediaAnnotationIds) - val semanticCoreIntersect = optOutUserInterestsSet.intersect(tweetSemanticCoreEntityIds) - if (!mediaAnnoIntersect.isEmpty) { - withOptOutFreeFormInterestsFromMediaAnnotationCounter.incr() - } - if (!semanticCoreIntersect.isEmpty) { - withOptOutFreeFormInterestsFromSemanticCoreCounter.incr() - } - semanticCoreIntersect.isEmpty && mediaAnnoIntersect.isEmpty - case _ => - withoutOptOutInterestsCounter.incr() - true - } - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - def tweetCandidateWithLessThan2SocialContextsIsAReply( - implicit stats: StatsReceiver - ): NamedPredicate[TweetCandidate with TweetDetails with SocialContextActions] = { - val name = "tweet_candidate_with_less_than_2_social_contexts_is_not_a_reply" - Predicate - .from[TweetCandidate with TweetDetails with SocialContextActions] { cand => - cand.isReply match { - case Some(true) if cand.socialContextTweetIds.size < 2 => false - case _ => true - } - } - .withStats(stats.scope(name)) - .withName(name) - } - - def f1CandidateIsNotAReply(implicit stats: StatsReceiver): NamedPredicate[F1Candidate] = { - val name = "f1_candidate_is_not_a_reply" - Predicate - .from[F1Candidate] { candidate => - candidate.isReply match { - case Some(true) => false - case _ => true - } - } - .withStats(stats.scope(name)) - .withName(name) - } - - def outOfNetworkTweetCandidateEnabledCrTag( - implicit stats: StatsReceiver - ): NamedPredicate[OutOfNetworkTweetCandidate with TargetInfo[TargetUser with TargetABDecider]] = { - val name = "out_of_network_tweet_candidate_enabled_crtag" - val scopedStats = stats.scope(name) - Predicate - .from[OutOfNetworkTweetCandidate with TargetInfo[TargetUser with TargetABDecider]] { cand => - val disabledCrTag = cand.target - .params(PushFeatureSwitchParams.OONCandidatesDisabledCrTagParam) - val candGeneratedByDisabledSignal = cand.tagsCR.exists { tagsCR => - val tagsCRSet = tagsCR.map(_.toString).toSet - tagsCRSet.nonEmpty && tagsCRSet.subsetOf(disabledCrTag.toSet) - } - if (candGeneratedByDisabledSignal) { - cand.tagsCR.getOrElse(Nil).foreach(tag => scopedStats.counter(tag.toString).incr()) - false - } else true - } - .withStats(scopedStats) - .withName(name) - } - - def outOfNetworkTweetCandidateEnabledCrtGroup( - implicit stats: StatsReceiver - ): NamedPredicate[OutOfNetworkTweetCandidate with TargetInfo[TargetUser with TargetABDecider]] = { - val name = "out_of_network_tweet_candidate_enabled_crt_group" - val scopedStats = stats.scope(name) - Predicate - .from[OutOfNetworkTweetCandidate with TargetInfo[TargetUser with TargetABDecider]] { cand => - val disabledCrtGroup = cand.target - .params(PushFeatureSwitchParams.OONCandidatesDisabledCrtGroupParam) - val crtGroup = CandidateUtil.getCrtGroup(cand.commonRecType) - val candGeneratedByDisabledCrt = disabledCrtGroup.contains(crtGroup) - if (candGeneratedByDisabledCrt) { - scopedStats.counter("filter_" + crtGroup.toString).incr() - false - } else true - } - .withStats(scopedStats) - .withName(name) - } - - def outOfNetworkTweetCandidateIsNotAReply( - implicit stats: StatsReceiver - ): NamedPredicate[OutOfNetworkTweetCandidate] = { - val name = "out_of_network_tweet_candidate_is_not_a_reply" - Predicate - .from[OutOfNetworkTweetCandidate] { cand => - cand.isReply match { - case Some(true) => false - case _ => true - } - } - .withStats(stats.scope(name)) - .withName(name) - } - - def recommendedTweetIsAuthoredBySelf( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate] = - Predicate - .from[PushCandidate] { - case tweetCandidate: PushCandidate with TweetDetails => - tweetCandidate.authorId match { - case Some(authorId) => authorId != tweetCandidate.target.targetId - case None => true - } - case _ => - true - } - .withStats(statsReceiver.scope("predicate_self_author")) - .withName("self_author") - - def authorInSocialContext(implicit statsReceiver: StatsReceiver): NamedPredicate[PushCandidate] = - Predicate - .from[PushCandidate] { - case tweetCandidate: PushCandidate with TweetDetails with SocialContextActions => - tweetCandidate.authorId match { - case Some(authorId) => - !tweetCandidate.socialContextUserIds.contains(authorId) - case None => true - } - case _ => true - } - .withStats(statsReceiver.scope("predicate_author_social_context")) - .withName("author_social_context") - - def selfInSocialContext(implicit statsReceiver: StatsReceiver): NamedPredicate[PushCandidate] = { - val name = "self_social_context" - Predicate - .from[PushCandidate] { - case candidate: PushCandidate with SocialContextActions => - !candidate.socialContextUserIds.contains(candidate.target.targetId) - case _ => - true - } - .withStats(statsReceiver.scope(s"${name}_predicate")) - .withName(name) - } - - def minSocialContext( - threshold: Int - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with SocialContextActions] = { - Predicate - .from { candidate: PushCandidate with SocialContextActions => - candidate.socialContextUserIds.size >= threshold - } - .withStats(statsReceiver.scope("predicate_min_social_context")) - .withName("min_social_context") - } - - private def anyWithheldContent( - userStore: ReadableStore[Long, User], - userCountryStore: ReadableStore[Long, Location] - )( - implicit statsReceiver: StatsReceiver - ): Predicate[TargetRecUser] = - GizmoduckUserPredicate.withheldContentPredicate( - userStore = userStore, - userCountryStore = userCountryStore, - statsReceiver = statsReceiver, - checkAllCountries = true - ) - - def targetUserExists(implicit statsReceiver: StatsReceiver): NamedPredicate[PushCandidate] = { - TargetUserPredicates - .targetUserExists()(statsReceiver) - .flatContraMap { candidate: PushCandidate => Future.value(candidate.target) } - .withName("target_user_exists") - } - - def secondaryDormantAccountPredicate( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "secondary_dormant_account" - TargetUserPredicates - .secondaryDormantAccountPredicate()(statsReceiver) - .on { candidate: PushCandidate => candidate.target } - .withStats(statsReceiver.scope(s"predicate_$name")) - .withName(name) - } - - def socialContextBeingFollowed( - edgeStore: ReadableStore[RelationEdge, Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with SocialContextActions] = - SocialGraphPredicate - .allRelationEdgesExist(edgeStore, RelationshipType.Following) - .on { candidate: PushCandidate with SocialContextActions => - candidate.socialContextUserIds.map { u => Edge(candidate.target.targetId, u) } - } - .withStats(statsReceiver.scope("predicate_social_context_being_followed")) - .withName("social_context_being_followed") - - private def edgeFromCandidate(candidate: PushCandidate with TweetAuthor): Option[Edge] = { - candidate.authorId map { authorId => Edge(candidate.target.targetId, authorId) } - } - - def authorNotBeingDeviceFollowed( - edgeStore: ReadableStore[RelationEdge, Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor] = { - SocialGraphPredicate - .relationExists(edgeStore, RelationshipType.DeviceFollowing) - .optionalOn( - edgeFromCandidate, - missingResult = false - ) - .flip - .withStats(statsReceiver.scope("predicate_author_not_device_followed")) - .withName("author_not_device_followed") - } - - def authorBeingFollowed( - edgeStore: ReadableStore[RelationEdge, Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor] = { - SocialGraphPredicate - .relationExists(edgeStore, RelationshipType.Following) - .optionalOn( - edgeFromCandidate, - missingResult = false - ) - .withStats(statsReceiver.scope("predicate_author_being_followed")) - .withName("author_being_followed") - } - - def authorNotBeingFollowed( - edgeStore: ReadableStore[RelationEdge, Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor] = { - SocialGraphPredicate - .relationExists(edgeStore, RelationshipType.Following) - .optionalOn( - edgeFromCandidate, - missingResult = false - ) - .flip - .withStats(statsReceiver.scope("predicate_author_not_being_followed")) - .withName("author_not_being_followed") - } - - def recommendedTweetAuthorAcceptableToTargetUser( - edgeStore: ReadableStore[RelationEdge, Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor] = { - val name = "recommended_tweet_author_acceptable_to_target_user" - SocialGraphPredicate - .anyRelationExists( - edgeStore, - Set( - RelationshipType.Blocking, - RelationshipType.BlockedBy, - RelationshipType.HideRecommendations, - RelationshipType.Muting - ) - ) - .flip - .optionalOn( - edgeFromCandidate, - missingResult = false - ) - .withStats(statsReceiver.scope(s"predicate_$name")) - .withName(name) - } - - def relationNotExistsPredicate( - edgeStore: ReadableStore[RelationEdge, Boolean], - relations: Set[RelationshipType] - ): Predicate[(Long, Iterable[Long])] = - SocialGraphPredicate - .anyRelationExistsForMultiEdge( - edgeStore, - relations - ) - .flip - .on { - case (targetUserId, userIds) => - MultiEdge(targetUserId, userIds.toSet) - } - - def blocking(edgeStore: ReadableStore[RelationEdge, Boolean]): Predicate[(Long, Iterable[Long])] = - relationNotExistsPredicate( - edgeStore, - Set(RelationshipType.BlockedBy, RelationshipType.Blocking) - ) - - def blockingOrMuting( - edgeStore: ReadableStore[RelationEdge, Boolean] - ): Predicate[(Long, Iterable[Long])] = - relationNotExistsPredicate( - edgeStore, - Set(RelationshipType.BlockedBy, RelationshipType.Blocking, RelationshipType.Muting) - ) - - def socialContextNotRetweetFollowing( - edgeStore: ReadableStore[RelationEdge, Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with SocialContextActions] = { - val name = "social_context_not_retweet_following" - relationNotExistsPredicate(edgeStore, Set(RelationshipType.NotRetweetFollowing)) - .optionalOn[PushCandidate with SocialContextActions]( - { - case candidate: PushCandidate with SocialContextActions - if RecTypes.isTweetRetweetType(candidate.commonRecType) => - Some((candidate.target.targetId, candidate.socialContextUserIds)) - case _ => - None - }, - missingResult = true - ) - .withStats(statsReceiver.scope(s"predicate_$name")) - .withName(name) - } - - def socialContextBlockingOrMuting( - edgeStore: ReadableStore[RelationEdge, Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with SocialContextActions] = - blockingOrMuting(edgeStore) - .on { candidate: PushCandidate with SocialContextActions => - (candidate.target.targetId, candidate.socialContextUserIds) - } - .withStats(statsReceiver.scope("predicate_social_context_blocking_or_muting")) - .withName("social_context_blocking_or_muting") - - /** - * Use hyrated Tweet object for F1 Protected experiment for checking null cast as Tweetypie hydration - * fails for protected Authors without passing in Target id. We do this specifically for - * F1 Protected Tweet Experiment in Earlybird Adaptor. - * For rest of the traffic refer to existing Nullcast Predicate - */ - def nullCastF1ProtectedExperientPredicate( - tweetypieStore: ReadableStore[Long, TweetyPieResult] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetCandidate with TweetDetails] = { - val name = "f1_exempted_null_cast_tweet" - val f1NullCastCheckCounter = statsReceiver.scope(name).counter("f1_null_cast_check") - Predicate - .fromAsync { tweetCandidate: PushCandidate with TweetCandidate with TweetDetails => - if (RecTypes.f1FirstDegreeTypes(tweetCandidate.commonRecType) && tweetCandidate.target - .params(PushFeatureSwitchParams.EnableF1FromProtectedTweetAuthors)) { - f1NullCastCheckCounter.incr() - tweetCandidate.tweet match { - case Some(tweetObj) => - baseNullCastTweet().apply(Seq(TweetyPieResult(tweetObj, None, None))).map(_.head) - case _ => Future.False - } - } else { - nullCastTweet(tweetypieStore).apply(Seq(tweetCandidate)).map(_.head) - } - } - .withStats(statsReceiver.scope(s"predicate_$name")) - .withName(name) - } - - private def baseNullCastTweet(): Predicate[TweetyPieResult] = - Predicate.from { t: TweetyPieResult => !t.tweet.coreData.exists { cd => cd.nullcast } } - - def nullCastTweet( - tweetyPieStore: ReadableStore[Long, TweetyPieResult] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetCandidate] = { - val name = "null_cast_tweet" - baseNullCastTweet() - .flatOptionContraMap[PushCandidate with TweetCandidate]( - f = (tweetCandidate: PushCandidate - with TweetCandidate) => tweetyPieStore.get(tweetCandidate.tweetId), - missingResult = false - ) - .withStats(statsReceiver.scope(s"predicate_$name")) - .withName(name) - } - - /** - * Use the predicate except fn is true. - */ - def exceptedPredicate[T <: PushCandidate]( - name: String, - fn: T => Future[Boolean], - predicate: Predicate[T] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - Predicate - .fromAsync { e: T => fn(e) } - .or(predicate) - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - /** - * - * @param edgeStore [[ReadableStore[RelationEdge, Boolean]]] - * @return - allow only out-network tweets if in-network tweets are disabled - */ - def disableInNetworkTweetPredicate( - edgeStore: ReadableStore[RelationEdge, Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor] = { - val name = "disable_in_network_tweet" - Predicate - .fromAsync { candidate: PushCandidate with TweetAuthor => - if (candidate.target.params(PushParams.DisableInNetworkTweetCandidatesParam)) { - authorNotBeingFollowed(edgeStore) - .apply(Seq(candidate)) - .map(_.head) - } else Future.True - }.withStats(statsReceiver.scope(name)) - .withName(name) - } - - /** - * - * @param edgeStore [[ReadableStore[RelationEdge, Boolean]]] - * @return - allow only in-network tweets if out-network tweets are disabled - */ - def disableOutNetworkTweetPredicate( - edgeStore: ReadableStore[RelationEdge, Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor] = { - val name = "disable_out_network_tweet" - Predicate - .fromAsync { candidate: PushCandidate with TweetAuthor => - if (candidate.target.params(PushFeatureSwitchParams.DisableOutNetworkTweetCandidatesFS)) { - authorBeingFollowed(edgeStore) - .apply(Seq(candidate)) - .map(_.head) - } else Future.True - }.withStats(statsReceiver.scope(name)) - .withName(name) - } - - def alwaysTruePredicate: NamedPredicate[PushCandidate] = { - Predicate - .all[PushCandidate] - .withName("predicate_AlwaysTrue") - } - - def alwaysTruePushCandidatePredicate: NamedPredicate[PushCandidate] = { - Predicate - .all[PushCandidate] - .withName("predicate_AlwaysTrue") - } - - def alwaysFalsePredicate(implicit statsReceiver: StatsReceiver): NamedPredicate[PushCandidate] = { - val name = "predicate_AlwaysFalse" - val scopedStatsReceiver = statsReceiver.scope(name) - Predicate - .from { candidate: PushCandidate => false } - .withStats(scopedStatsReceiver) - .withName(name) - } - - def accountCountryPredicate( - allowedCountries: Set[String] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "AccountCountryPredicate" - val stats = statsReceiver.scope(name) - AccountCountryPredicate(allowedCountries) - .on { candidate: PushCandidate => candidate.target } - .withStats(stats) - .withName(name) - } - - def paramPredicate[T <: PushCandidate]( - param: Param[Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - val name = param.getClass.getSimpleName.stripSuffix("$") - TargetPredicates - .paramPredicate(param) - .on { candidate: PushCandidate => candidate.target } - .withStats(statsReceiver.scope(s"param_${name}_controlled_predicate")) - .withName(s"param_${name}_controlled_predicate") - } - - def isDeviceEligibleForNewsOrSports( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "is_device_eligible_for_news_or_sports" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - Predicate - .fromAsync { candidate: PushCandidate => - candidate.target.deviceInfo.map(_.exists(_.isNewsEligible)) - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - def isDeviceEligibleForCreatorPush( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "is_device_eligible_for_creator_push" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - Predicate - .fromAsync { candidate: PushCandidate => - candidate.target.deviceInfo.map(_.exists(settings => - settings.isNewsEligible || settings.isRecommendationsEligible)) - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - /** - * Like [[TargetUserPredicates.homeTimelineFatigue()]] but for candidate. - */ - def htlFatiguePredicate( - fatigueDuration: Param[Duration] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "htl_fatigue" - Predicate - .fromAsync { candidate: PushCandidate => - val _fatigueDuration = candidate.target.params(fatigueDuration) - TargetUserPredicates - .homeTimelineFatigue( - fatigueDuration = _fatigueDuration - ).apply(Seq(candidate.target)).map(_.head) - } - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - def mrWebHoldbackPredicate( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "mr_web_holdback_for_candidate" - val scopedStats = stats.scope(name) - PredicatesForCandidate.exludeCrtFromPushHoldback - .or( - TargetPredicates - .webNotifsHoldback() - .on { candidate: PushCandidate => candidate.target } - ) - .withStats(scopedStats) - .withName(name) - } - - def candidateEnabledForEmailPredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "candidates_enabled_for_email" - Predicate - .from { candidate: PushCandidate => - if (candidate.target.isEmailUser) - candidate.isInstanceOf[TweetCandidate with TweetAuthor with RecommendationType] - else true - } - .withStats(stats.scope(name)) - .withName(name) - } - - def protectedTweetF1ExemptPredicate[ - T <: TargetUser with TargetABDecider, - Cand <: TweetCandidate with TweetAuthorDetails with TargetInfo[T] - ]( - implicit stats: StatsReceiver - ): NamedPredicate[ - TweetCandidate with TweetAuthorDetails with TargetInfo[ - TargetUser with TargetABDecider - ] - ] = { - val name = "f1_exempt_tweet_author_protected" - val skipForProtectedAuthorScope = stats.scope(name).scope("skip_protected_author_for_f1") - val authorIsProtectedCounter = skipForProtectedAuthorScope.counter("author_protected_true") - val authorIsNotProtectedCounter = skipForProtectedAuthorScope.counter("author_protected_false") - val authorNotFoundCounter = stats.scope(name).counter("author_not_found") - Predicate - .fromAsync[TweetCandidate with TweetAuthorDetails with TargetInfo[ - TargetUser with TargetABDecider - ]] { - case candidate: F1Candidate - if candidate.target.params(PushFeatureSwitchParams.EnableF1FromProtectedTweetAuthors) => - candidate.tweetAuthor.foreach { - case Some(author) => - if (GizmoduckUserPredicate.isProtected(author)) { - authorIsProtectedCounter.incr() - } else authorIsNotProtectedCounter.incr() - case _ => authorNotFoundCounter.incr() - } - Future.True - case cand => - TweetAuthorPredicates.recTweetAuthorProtected.apply(Seq(cand)).map(_.head) - } - .withStats(stats.scope(name)) - .withName(name) - } - - /** - * filter a notification if user has already received ANY prior notification about the space id - * @param stats - * @return - */ - def duplicateSpacesPredicate( - implicit stats: StatsReceiver - ): NamedPredicate[Space with PushCandidate] = { - val name = "duplicate_spaces_predicate" - Predicate - .fromAsync { c: Space with PushCandidate => - c.target.pushRecItems.map { pushRecItems => - !pushRecItems.spaceIds.contains(c.spaceId) - } - } - .withStats(stats.scope(name)) - .withName(name) - } - - def filterOONCandidatePredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "filter_oon_candidate" - - Predicate - .fromAsync[PushCandidate] { cand => - val crt = cand.commonRecType - val isOONCandidate = - RecTypes.isOutOfNetworkTweetRecType(crt) || RecTypes.outOfNetworkTopicTweetTypes - .contains(crt) || RecTypes.isOutOfNetworkSpaceType(crt) || RecTypes.userTypes.contains( - crt) - if (isOONCandidate) { - cand.target.notificationsFromOnlyPeopleIFollow.map { inNetworkOnly => - if (inNetworkOnly) { - stats.scope(name, crt.toString).counter("inNetworkOnlyOn").incr() - } else { - stats.scope(name, crt.toString).counter("inNetworkOnlyOff").incr() - } - !(inNetworkOnly && cand.target.params( - PushFeatureSwitchParams.EnableOONFilteringBasedOnUserSettings)) - } - } else Future.True - } - .withStats(stats.scope(name)) - .withName(name) - } - - def exludeCrtFromPushHoldback( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate] = Predicate - .from { candidate: PushCandidate => - val crtName = candidate.commonRecType.name - val target = candidate.target - target - .params(PushFeatureSwitchParams.CommonRecommendationTypeDenyListPushHoldbacks) - .exists(crtName.equalsIgnoreCase) - } - .withStats(stats.scope("exclude_crt_from_push_holdbacks")) - - def enableSendHandlerCandidates(implicit stats: StatsReceiver): NamedPredicate[PushCandidate] = { - val name = "sendhandler_enable_push_recommendations" - PredicatesForCandidate.exludeCrtFromPushHoldback - .or(PredicatesForCandidate.paramPredicate( - PushFeatureSwitchParams.EnablePushRecommendationsParam)) - .withStats(stats.scope(name)) - .withName(name) - } - - def openAppExperimentUserCandidateAllowList( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "open_app_experiment_user_candidate_allow_list" - Predicate - .fromAsync { candidate: PushCandidate => - val target = candidate.target - Future.join(target.isOpenAppExperimentUser, target.targetUser).map { - case (isOpenAppUser, targetUser) => - val shouldLimitOpenAppCrts = - isOpenAppUser || targetUser.exists(_.userType == UserType.Soft) - - if (shouldLimitOpenAppCrts) { - val listOfAllowedCrt = target - .params(PushFeatureSwitchParams.ListOfCrtsForOpenApp) - .flatMap(CommonRecommendationType.valueOf) - listOfAllowedCrt.contains(candidate.commonRecType) - } else true - } - }.withStats(stats.scope(name)) - .withName(name) - } - - def isTargetBlueVerified( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "is_target_already_blue_verified" - Predicate - .fromAsync { candidate: PushCandidate => - val target = candidate.target - target.isBlueVerified.map(_.getOrElse(false)) - }.withStats(stats.scope(name)) - .withName(name) - } - - def isTargetLegacyVerified( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "is_target_already_legacy_verified" - Predicate - .fromAsync { candidate: PushCandidate => - val target = candidate.target - target.isVerified.map(_.getOrElse(false)) - }.withStats(stats.scope(name)) - .withName(name) - } - - def isTargetSuperFollowCreator(implicit stats: StatsReceiver): NamedPredicate[PushCandidate] = { - val name = "is_target_already_super_follow_creator" - Predicate - .fromAsync { candidate: PushCandidate => - val target = candidate.target - target.isSuperFollowCreator.map( - _.getOrElse(false) - ) - }.withStats(stats.scope(name)) - .withName(name) - } - - def isChannelValidPredicate( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "is_channel_valid" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - Predicate - .fromAsync { candidate: PushCandidate => - candidate - .getChannels().map(channels => - !(channels.toSet.size == 1 && channels.head == ChannelName.None)) - } - .withStats(scopedStatsReceiver) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SGSPredicatesForCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SGSPredicatesForCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..d9caaf871d1de14ba0ca8335426f03b536b8d99e GIT binary patch literal 38196 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SGSPredicatesForCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SGSPredicatesForCandidate.scala deleted file mode 100644 index e335c8d9c..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SGSPredicatesForCandidate.scala +++ /dev/null @@ -1,174 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.SocialGraphServiceRelationshipMap -import com.twitter.frigate.common.base.TweetAuthor -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.params.PushParams -import com.twitter.gizmoduck.thriftscala.UserType -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.hermit.predicate.socialgraph.Edge -import com.twitter.hermit.predicate.socialgraph.RelationEdge -import com.twitter.socialgraph.thriftscala.RelationshipType -import com.twitter.util.Future - -/** - * Refactor SGS predicates so that predicates can use relationshipMap we generate in hydrate step - */ -object SGSPredicatesForCandidate { - - case class RelationshipMapEdge(edge: Edge, relationshipMap: Map[RelationEdge, Boolean]) - - private def relationshipMapEdgeFromCandidate( - candidate: PushCandidate with TweetAuthor with SocialGraphServiceRelationshipMap - ): Option[RelationshipMapEdge] = { - candidate.authorId map { authorId => - RelationshipMapEdge(Edge(candidate.target.targetId, authorId), candidate.relationshipMap) - } - } - - def authorBeingFollowed( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor with SocialGraphServiceRelationshipMap] = { - val name = "author_not_being_followed" - val stats = statsReceiver.scope(name) - val softUserCounter = stats.counter("soft_user") - - val sgsAuthorBeingFollowedPredicate = Predicate - .from { relationshipMapEdge: RelationshipMapEdge => - anyRelationExist(relationshipMapEdge, Set(RelationshipType.Following)) - } - - Predicate - .fromAsync { - candidate: PushCandidate with TweetAuthor with SocialGraphServiceRelationshipMap => - val target = candidate.target - target.targetUser.flatMap { - case Some(gizmoduckUser) if gizmoduckUser.userType == UserType.Soft => - softUserCounter.incr() - target.seedsWithWeight.map { followedUsersWithWeightOpt => - candidate.authorId match { - case Some(authorId) => - val followedUsers = followedUsersWithWeightOpt.getOrElse(Map.empty).keys - followedUsers.toSet.contains(authorId) - - case None => false - } - } - - case _ => - sgsAuthorBeingFollowedPredicate - .optionalOn(relationshipMapEdgeFromCandidate, missingResult = false) - .apply(Seq(candidate)) - .map(_.head) - } - }.withStats(stats) - .withName(name) - } - - def authorNotBeingDeviceFollowed( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor with SocialGraphServiceRelationshipMap] = { - val name = "author_being_device_followed" - Predicate - .from { relationshipMapEdge: RelationshipMapEdge => - { - anyRelationExist(relationshipMapEdge, Set(RelationshipType.DeviceFollowing)) - } - } - .optionalOn(relationshipMapEdgeFromCandidate, missingResult = false) - .flip - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - def recommendedTweetAuthorAcceptableToTargetUser( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor with SocialGraphServiceRelationshipMap] = { - val name = "recommended_tweet_author_not_acceptable_to_target_user" - Predicate - .from { relationshipMapEdge: RelationshipMapEdge => - { - anyRelationExist( - relationshipMapEdge, - Set( - RelationshipType.Blocking, - RelationshipType.BlockedBy, - RelationshipType.HideRecommendations, - RelationshipType.Muting - )) - } - } - .flip - .optionalOn(relationshipMapEdgeFromCandidate, missingResult = false) - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - def authorNotBeingFollowed( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor with SocialGraphServiceRelationshipMap] = { - Predicate - .from { relationshipMapEdge: RelationshipMapEdge => - { - anyRelationExist(relationshipMapEdge, Set(RelationshipType.Following)) - } - } - .optionalOn(relationshipMapEdgeFromCandidate, missingResult = false) - .flip - .withStats(statsReceiver.scope("predicate_author_not_being_followed_pre_ranking")) - .withName("author_not_being_followed") - } - - def disableInNetworkTweetPredicate( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor with SocialGraphServiceRelationshipMap] = { - val name = "enable_in_network_tweet" - Predicate - .fromAsync { - candidate: PushCandidate with TweetAuthor with SocialGraphServiceRelationshipMap => - if (candidate.target.params(PushParams.DisableInNetworkTweetCandidatesParam)) { - authorNotBeingFollowed - .apply(Seq(candidate)) - .map(_.head) - } else Future.True - }.withStats(statsReceiver.scope(name)) - .withName(name) - } - - def disableOutNetworkTweetPredicate( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthor with SocialGraphServiceRelationshipMap] = { - val name = "enable_out_network_tweet" - Predicate - .fromAsync { - candidate: PushCandidate with TweetAuthor with SocialGraphServiceRelationshipMap => - if (candidate.target.params(PushFeatureSwitchParams.DisableOutNetworkTweetCandidatesFS)) { - authorBeingFollowed - .apply(Seq(candidate)) - .map(_.head) - } else Future.True - }.withStats(statsReceiver.scope(name)) - .withName(name) - } - - /** - * Returns true if the provided relationshipEdge exists among - * @param candidate candidate - * @param relationships relaionships - * @return Boolean result - */ - private def anyRelationExist( - relationshipMapEdge: RelationshipMapEdge, - relationships: Set[RelationshipType] - ): Boolean = { - val resultSeq = relationships.map { relationship => - relationshipMapEdge.relationshipMap.getOrElse( - RelationEdge(relationshipMapEdge.edge, relationship), - false) - }.toSeq - resultSeq.contains(true) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ScarecrowPredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ScarecrowPredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..a44df944307878e21b60071458fa863288547a14 GIT binary patch literal 37920 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[iOxk zIy2YiD`fex_Z~a@8)ahw5|y^Llv;!LJJs#lcggf98@_0+uz`n^eT|!>+C$r^@@aKC zd@`@u;RQE>T@&^2T^4EOVYXl!XywYh!dF&KxP!X|*DQrCV>QRF+AylH^4*9}aK#-M z*1^cN8;9bKlnVQhlp2KW>I(ChBP(ikiv5nt%lRy1s(ls`Qt49{PWN9T^F_mCBBn^# z2<>T%Sm|al!^#49WVpC_&R3G;Ah{@{u0rHFJLUa$W**Z0yg2Y-nP_~|1F6U9YRw^L zAY&{d;2fo3?N{mPc)tC5nl9qO___ty5QN;Jl;GTqxeD)A)2TpvMO5FLKU-OF8|Jq+ zC_qGxmXNm|fz&}(jaTX_&6T{+Yo=KKP-c>A!-MCh72Z^vhq! zwB#5SqiD!6`aiuW4h#5iSiRQ*ci>u3+@Bq0j=?GYrXOLIs5UIW2%;MnKIP`!5im0< zp_mgD)7Y{l*1mYR_Yh9cx!qX5TX!!wVH$>_tT&Gy&iM`CcG39|iM;yVY;@u9)2NfO z{v>)hhR`1mzFSJdh-&sus3N&{S0%NkN6LNmVF1>;dv5Q#`$kqzG`jod%MNtEuDb5X zVX&7N6O>&x2JiQ7w4VNOWOg?&_&$?!IjyF=;S^-@S=zVzAHMG&h)qP{Mq%8EUSSkJ3<{RvR|AEWq5zy!RfqhRyBWxsX>&j35nLt=1J`PHuZZAL*HH9 zdxzi~?@2|B+egnQIdOPAygfu{Pz61mpYFQ1F3op)g1ox)Y>CrLWi`38s4No~ORI19hU6vHPll4xI6Diz%kg774&&jiE&oxc(Z;Uc3^390 zX%Q&PeKXE$icI>&OeKMRPsbBG`f^rr3CE!QPy_(#tc}<>sDgP^m0+{23pW-M3FR?-%1+d#e1hlTFUvvd^Y0>Wgw~_vtu^cD*}UnW&1p zd?vJ0f8g{BYd%foUP?3nYx4Kae{d|)I%1lWVbXG6ZAWue=xtt-dopP|RVDYpVv*pGVcM)6+fOWhT-KlU^7o5+*H3V(^~GDcZ>+pG8Eb}}79 zpmq)LrmW`~g4cbbrIzE#y4_*RLmwh9JB2-1n#IjW)j|s%{qG5#W?Ns-RHl(=%Auy8 zMe?Hbl?@GJ_}i*yvg@yRpnI;T6EBpHDX}`f4G-8uugJ5zW=|3vdo=UxTmEEJw&L+zWDj*Uu&87pU z^-cuMz+AsyPc>QiX@w|ZV-3f&j!g5?`|MfG%5BqHQxk6jOR9m5uL>`g*quY^&|mZk zmtPXhWBFUeRu3zw???VTihHguNUSTqS-Q7pWTMqDb@c8{TJ6z@0oFj+d+qajyGzmq z`79x-`og%-pn1lhGdVSDf&aT10L^@XtV_t+JDo0eQefrdUH{{*n%mk#T^jO}=Pw@`F zSrmBJLegp$NE2)#jOlQ_dJ!9C9YPACyzGcC@F*=7u!`<%s+y_G`gL4 zoTHld*FEnK@9;gTJiWyLsvO*Uky;U@XGXyiCVzifaS#;do!HxQrv~`y1lF$ z6xgZ9(T+)YFYBw2WEhgH>WXaCx-q7!nN&4fs<-5gb^U1?71^5BW2q+8R4{J*!FVW~ z>2>L;)ELx?=t1HC%MS{xORu9Y{Xz(vA=(cPS%l2vzhr1 z@3hxYdWEzG%Dv{w^lozsDa>JVSbv_()vb4*nqz13PdSISP4vd;M)A8U1iF-nw|DL` zqu%w8GNTJa+j?_6qp*Wz>_-c|gNJw|PT(jj70sJ_!iyB!E(+TkF&}ko$oD>lzaGER z9wFv_TEs4e2p>vHYBVuaqGB8 zS!`;Ddq%o<|9ukWQ=0rjdnj_E=~&4P1Wx3DaRCJ2csC0Y6{c^ssCZFKV!LvX_ullUhlS%Rz44IOtk_?lvO}h)`RBoZE`+ z`0}FyZ4ik2F(4U?4I*OBlY+6K9xKrq7(gmi$tLQ2`z zLrEqOh^LDTM0o=V1DvkjNGOp+z^;}n!D9ekQ1XkODxqP!K@3`663hYDN!K{>#4nt6 zMHH|cTzFZN18W&Ueh0n_^b!#kiiJB|6W5_#%$`w z!2qz)T>~i6*8?`QyF)`R20H9aR`-4xpx X9Xi>|05fQ1R;fa~f$33_x^nh^R73A$ literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ScarecrowPredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ScarecrowPredicate.scala deleted file mode 100644 index a4728eba2..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ScarecrowPredicate.scala +++ /dev/null @@ -1,138 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base._ -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.thriftscala._ -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.scarecrow.{ScarecrowPredicate => HermitScarecrowPredicate} -import com.twitter.relevance.feature_store.thriftscala.FeatureData -import com.twitter.relevance.feature_store.thriftscala.FeatureValue -import com.twitter.service.gen.scarecrow.thriftscala.Event -import com.twitter.service.gen.scarecrow.thriftscala.TieredActionResult -import com.twitter.storehaus.ReadableStore - -object ScarecrowPredicate { - val name = "" - - def candidateToEvent(candidate: PushCandidate): Event = { - val recommendedUserIdOpt = candidate match { - case tweetCandidate: TweetCandidate with TweetAuthor => - tweetCandidate.authorId - case userCandidate: UserCandidate => - Some(userCandidate.userId) - case _ => None - } - val hashtagsInTweet = candidate match { - case tweetCandidate: TweetCandidate with TweetDetails => - tweetCandidate.tweetyPieResult - .flatMap { tweetPieResult => - tweetPieResult.tweet.hashtags.map(_.map(_.text)) - }.getOrElse(Nil) - case _ => - Nil - } - val urlsInTweet = candidate match { - case tweetCandidate: TweetCandidate with TweetDetails => - tweetCandidate.tweetyPieResult - .flatMap { tweetPieResult => - tweetPieResult.tweet.urls.map(_.flatMap(_.expanded)) - } - case _ => None - } - val tweetIdOpt = candidate match { - case tweetCandidate: TweetCandidate => - Some(tweetCandidate.tweetId) - case _ => - None - } - val urlOpt = candidate match { - case candidate: UrlCandidate => - Some(candidate.url) - case _ => - None - } - val scUserIds = candidate match { - case hasSocialContext: SocialContextActions => Some(hasSocialContext.socialContextUserIds) - case _ => None - } - - val eventTitleOpt = candidate match { - case eventCandidate: EventCandidate with EventDetails => - Some(eventCandidate.eventTitle) - case _ => - None - } - - val urlTitleOpt = candidate match { - case candidate: UrlCandidate => - candidate.title - case _ => - None - } - - val urlDescriptionOpt = candidate match { - case candidate: UrlCandidate with UrlCandidateWithDetails => - candidate.description - case _ => - None - } - - Event( - "magicrecs_recommendation_write", - Map( - "targetUserId" -> FeatureData(Some(FeatureValue.LongValue(candidate.target.targetId))), - "type" -> FeatureData( - Some( - FeatureValue.StrValue(candidate.commonRecType.name) - ) - ), - "recommendedUserId" -> FeatureData(recommendedUserIdOpt map { id => - FeatureValue.LongValue(id) - }), - "tweetId" -> FeatureData(tweetIdOpt map { id => - FeatureValue.LongValue(id) - }), - "url" -> FeatureData(urlOpt map { url => - FeatureValue.StrValue(url) - }), - "hashtagsInTweet" -> FeatureData(Some(FeatureValue.StrListValue(hashtagsInTweet))), - "urlsInTweet" -> FeatureData(urlsInTweet.map(FeatureValue.StrListValue)), - "socialContexts" -> FeatureData(scUserIds.map { sc => - FeatureValue.LongListValue(sc) - }), - "eventTitle" -> FeatureData(eventTitleOpt.map { eventTitle => - FeatureValue.StrValue(eventTitle) - }), - "urlTitle" -> FeatureData(urlTitleOpt map { title => - FeatureValue.StrValue(title) - }), - "urlDescription" -> FeatureData(urlDescriptionOpt map { des => - FeatureValue.StrValue(des) - }) - ) - ) - } - - def candidateToPossibleEvent(c: PushCandidate): Option[Event] = { - if (c.frigateNotification.notificationDisplayLocation == NotificationDisplayLocation.PushToMobileDevice) { - Some(candidateToEvent(c)) - } else { - None - } - } - - def apply( - scarecrowCheckEventStore: ReadableStore[Event, TieredActionResult] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate] = { - HermitScarecrowPredicate(scarecrowCheckEventStore) - .optionalOn( - candidateToPossibleEvent, - missingResult = true - ) - .withStats(statsReceiver.scope(s"predicate_$name")) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SpacePredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SpacePredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..73b0e7997a0f054cf6da939e512ee2041004e838 GIT binary patch literal 38309 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 |Zq&q04{% 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SpacePredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SpacePredicate.scala deleted file mode 100644 index 044c0afdb..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/SpacePredicate.scala +++ /dev/null @@ -1,153 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.SpaceCandidate -import com.twitter.frigate.common.base.SpaceCandidateDetails -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.hermit.predicate.socialgraph.Edge -import com.twitter.hermit.predicate.socialgraph.RelationEdge -import com.twitter.hermit.predicate.socialgraph.SocialGraphPredicate -import com.twitter.socialgraph.thriftscala.RelationshipType -import com.twitter.storehaus.ReadableStore -import com.twitter.strato.response.Err -import com.twitter.ubs.thriftscala.AudioSpace -import com.twitter.ubs.thriftscala.BroadcastState -import com.twitter.ubs.thriftscala.ParticipantUser -import com.twitter.ubs.thriftscala.Participants -import com.twitter.util.Future - -object SpacePredicate { - - /** Filters the request if the target is present in the space as a listener, speakeTestConfigr, or admin */ - def targetInSpace( - audioSpaceParticipantsStore: ReadableStore[String, Participants] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[SpaceCandidateDetails with RawCandidate] = { - val name = "target_in_space" - Predicate - .fromAsync[SpaceCandidateDetails with RawCandidate] { spaceCandidate => - audioSpaceParticipantsStore.get(spaceCandidate.spaceId).map { - case Some(participants) => - val allParticipants: Seq[ParticipantUser] = - (participants.admins ++ participants.speakers ++ participants.listeners).flatten.toSeq - val isInSpace = allParticipants.exists { participant => - participant.twitterUserId.contains(spaceCandidate.target.targetId) - } - !isInSpace - case None => false - } - }.withStats(statsReceiver.scope(name)) - .withName(name) - } - - /** - * - * @param audioSpaceStore: space metadata store - * @param statsReceiver: record stats - * @return: true if the space not started ELSE false to filter out notification - */ - def scheduledSpaceStarted( - audioSpaceStore: ReadableStore[String, AudioSpace] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[SpaceCandidate with RawCandidate] = { - val name = "scheduled_space_started" - Predicate - .fromAsync[SpaceCandidate with RawCandidate] { spaceCandidate => - audioSpaceStore - .get(spaceCandidate.spaceId) - .map(_.exists(_.state.contains(BroadcastState.NotStarted))) - .rescue { - case Err(Err.Authorization, _, _) => - Future.False - } - } - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - private def relationshipMapEdgeFromSpaceCandidate( - candidate: RawCandidate with SpaceCandidate - ): Option[(Long, Seq[Long])] = { - candidate.hostId.map { spaceHostId => - (candidate.target.targetId, Seq(spaceHostId)) - } - } - - /** - * Check only host block for scheduled space reminders - * @return: True if no blocking relation between host and target user, else False - */ - def spaceHostTargetUserBlocking( - edgeStore: ReadableStore[RelationEdge, Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[SpaceCandidate with RawCandidate] = { - val name = "space_host_target_user_blocking" - PredicatesForCandidate - .blocking(edgeStore) - .optionalOn(relationshipMapEdgeFromSpaceCandidate, false) - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - private def edgeFromCandidate( - candidate: PushCandidate with TweetAuthorDetails - ): Future[Option[Edge]] = { - candidate.tweetAuthor.map(_.map { author => Edge(candidate.target.targetId, author.id) }) - } - - def recommendedTweetAuthorAcceptableToTargetUser( - edgeStore: ReadableStore[RelationEdge, Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetAuthorDetails] = { - val name = "recommended_tweet_author_acceptable_to_target_user" - SocialGraphPredicate - .anyRelationExists( - edgeStore, - Set( - RelationshipType.Blocking, - RelationshipType.BlockedBy, - RelationshipType.HideRecommendations, - RelationshipType.Muting - ) - ) - .flip - .flatOptionContraMap( - edgeFromCandidate, - missingResult = false - ) - .withStats(statsReceiver.scope(s"predicate_$name")) - .withName(name) - } - - def narrowCastSpace( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[SpaceCandidateDetails with RawCandidate] = { - val name = "narrow_cast_space" - val narrowCastSpaceScope = statsReceiver.scope(name) - val employeeSpaceCounter = narrowCastSpaceScope.counter("employees") - val superFollowerSpaceCounter = narrowCastSpaceScope.counter("super_followers") - - Predicate - .fromAsync[SpaceCandidateDetails with RawCandidate] { candidate => - candidate.audioSpaceFut.map { - case Some(audioSpace) if audioSpace.narrowCastSpaceType.contains(1L) => - employeeSpaceCounter.incr() - candidate.target.params(PushFeatureSwitchParams.EnableEmployeeOnlySpaceNotifications) - case Some(audioSpace) if audioSpace.narrowCastSpaceType.contains(2L) => - superFollowerSpaceCounter.incr() - false - case _ => true - } - }.withStats(narrowCastSpaceScope) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetEngagementPredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetEngagementPredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..30e2d93ef6167d2b40918eda60e3b66d339a415e GIT binary patch literal 37063 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 H9uN-zU-v>) literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetEngagementPredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetEngagementPredicate.scala deleted file mode 100644 index d02e5b89a..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetEngagementPredicate.scala +++ /dev/null @@ -1,27 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.TweetCandidate -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.tweetypie.EngagementsPredicate -import com.twitter.hermit.predicate.tweetypie.Perspective -import com.twitter.hermit.predicate.tweetypie.UserTweet -import com.twitter.storehaus.ReadableStore - -object TargetEngagementPredicate { - val name = "target_engagement" - def apply( - perspectiveStore: ReadableStore[UserTweet, Perspective], - defaultForMissing: Boolean - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetCandidate] = { - EngagementsPredicate(perspectiveStore, defaultForMissing) - .on { candidate: PushCandidate with TweetCandidate => - UserTweet(candidate.target.targetId, candidate.tweetId) - } - .withStats(statsReceiver.scope(s"predicate_$name")) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetNtabCaretClickFatiguePredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetNtabCaretClickFatiguePredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..57317bc2ad9f46125ab48c3224d4df88b714f921 GIT binary patch literal 37883 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ΞG%zxuWH1jWP)P$Kpg3l*?{;P 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetNtabCaretClickFatiguePredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetNtabCaretClickFatiguePredicate.scala deleted file mode 100644 index c5042bbc8..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetNtabCaretClickFatiguePredicate.scala +++ /dev/null @@ -1,91 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.TargetUser -import com.twitter.frigate.common.candidate.CaretFeedbackHistory -import com.twitter.frigate.common.candidate.FrigateHistory -import com.twitter.frigate.common.candidate.HTLVisitHistory -import com.twitter.frigate.common.candidate.TargetABDecider -import com.twitter.frigate.common.history.History -import com.twitter.frigate.common.predicate.FrigateHistoryFatiguePredicate.TimeSeries -import com.twitter.frigate.common.predicate.ntab_caret_fatigue.NtabCaretClickFatiguePredicateHelper -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.common.util.FeatureSwitchParams -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.notificationservice.thriftscala.CaretFeedbackDetails -import com.twitter.util.Duration -import com.twitter.util.Future -import com.twitter.frigate.common.predicate.{FatiguePredicate => CommonFatiguePredicate} - -object TargetNtabCaretClickFatiguePredicate { - import NtabCaretClickFatiguePredicateHelper._ - - private val MagicRecsCategory = "MagicRecs" - - def apply[ - T <: TargetUser with TargetABDecider with CaretFeedbackHistory with FrigateHistory with HTLVisitHistory - ]( - filterHistory: TimeSeries => TimeSeries = - CommonFatiguePredicate.recTypesOnlyFilter(RecTypes.sharedNTabCaretFatigueTypes), - filterCaretFeedbackHistory: TargetUser with TargetABDecider with CaretFeedbackHistory => Seq[ - CaretFeedbackDetails - ] => Seq[CaretFeedbackDetails] = - CaretFeedbackHistoryFilter.caretFeedbackHistoryFilter(Seq(MagicRecsCategory)), - calculateFatiguePeriod: Seq[CaretFeedbackDetails] => Duration = calculateFatiguePeriodMagicRecs, - useMostRecentDislikeTime: Boolean = false, - name: String = "NtabCaretClickFatiguePredicate" - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - - val scopedStats = statsReceiver.scope(name) - val crtStats = scopedStats.scope("crt") - Predicate - .fromAsync { target: T => - Future.join(target.history, target.caretFeedbacks).map { - case (history, Some(feedbackDetails)) => { - val feedbackDetailsDeduped = dedupFeedbackDetails( - filterCaretFeedbackHistory(target)(feedbackDetails), - scopedStats - ) - - val fatiguePeriod = - if (hasUserDislikeInLast30Days(feedbackDetailsDeduped) && target.params( - PushFeatureSwitchParams.EnableReducedFatigueRulesForSeeLessOften)) { - durationToFilterMRForSeeLessOftenExpt( - feedbackDetailsDeduped, - target.params(FeatureSwitchParams.NumberOfDaysToFilterMRForSeeLessOften), - target.params(FeatureSwitchParams.NumberOfDaysToReducePushCapForSeeLessOften), - scopedStats - ) - } else { - calculateFatiguePeriod(feedbackDetailsDeduped) - } - - val crtlist = feedbackDetailsDeduped - .flatMap { fd => - fd.genericNotificationMetadata.map { gm => - gm.genericType.name - } - }.distinct.sorted.mkString("-") - - if (fatiguePeriod > 0.days) { - crtStats.scope(crtlist).counter("fatigued").incr() - } else { - crtStats.scope(crtlist).counter("non_fatigued").incr() - } - - val hasRecentSent = - hasRecentSend(History(filterHistory(history.history.toSeq).toMap), fatiguePeriod) - !hasRecentSent - } - case _ => true - } - } - .withStats(scopedStats) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetPredicates.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetPredicates.docx new file mode 100644 index 0000000000000000000000000000000000000000..fa6704467b9ec187dda647cfc4aecdf9cd1dafee GIT binary patch literal 39358 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

      %XUbuxBYzyI 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 He;)k}AS$Dw literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetPredicates.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetPredicates.scala deleted file mode 100644 index 45d0b7578..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TargetPredicates.scala +++ /dev/null @@ -1,292 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.TargetUser -import com.twitter.frigate.common.candidate.FrigateHistory -import com.twitter.frigate.common.candidate.HTLVisitHistory -import com.twitter.frigate.common.candidate.TargetABDecider -import com.twitter.frigate.common.candidate.UserDetails -import com.twitter.frigate.common.predicate.TargetUserPredicates -import com.twitter.frigate.common.predicate.{FatiguePredicate => CommonFatiguePredicate} -import com.twitter.frigate.common.store.deviceinfo.MobileClientType -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.target.TargetScoringDetails -import com.twitter.frigate.pushservice.util.PushCapUtil -import com.twitter.frigate.thriftscala.NotificationDisplayLocation -import com.twitter.frigate.thriftscala.{CommonRecommendationType => CRT} -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.timelines.configapi.FSBoundedParam -import com.twitter.timelines.configapi.Param -import com.twitter.util.Duration -import com.twitter.util.Future - -object TargetPredicates { - - def paramPredicate[T <: Target]( - param: Param[Boolean] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - val name = param.getClass.getSimpleName.stripSuffix("$") - Predicate - .from { target: T => target.params(param) } - .withStats(statsReceiver.scope(s"param_${name}_controlled_predicate")) - .withName(s"param_${name}_controlled_predicate") - } - - /** - * Use the predicate except fn is true., Same as the candidate version but for Target - */ - def exceptedPredicate[T <: TargetUser]( - name: String, - fn: T => Future[Boolean], - predicate: Predicate[T] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - Predicate - .fromAsync { e: T => fn(e) } - .or(predicate) - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - /** - * Refresh For push handler target user predicate to fatigue on visiting Home timeline - */ - def targetHTLVisitPredicate[ - T <: TargetUser with UserDetails with TargetABDecider with HTLVisitHistory - ]( - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - val name = "target_htl_visit_predicate" - Predicate - .fromAsync { target: T => - val hoursToFatigue = target.params(PushFeatureSwitchParams.HTLVisitFatigueTime) - TargetUserPredicates - .homeTimelineFatigue(hoursToFatigue.hours) - .apply(Seq(target)) - .map(_.head) - } - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - def targetPushBitEnabledPredicate[T <: Target]( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - val name = "push_bit_enabled" - val scopedStats = statsReceiver.scope(s"targetpredicate_$name") - - Predicate - .fromAsync { target: T => - target.deviceInfo - .map { info => - info.exists { deviceInfo => - deviceInfo.isRecommendationsEligible || - deviceInfo.isNewsEligible || - deviceInfo.isTopicsEligible || - deviceInfo.isSpacesEligible - } - } - }.withStats(scopedStats) - .withName(name) - } - - def targetFatiguePredicate[T <: Target]( - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - val name = "target_fatigue_predicate" - val predicateStatScope = statsReceiver.scope(name) - Predicate - .fromAsync { target: T => - PushCapUtil - .getPushCapFatigue(target, predicateStatScope) - .flatMap { pushCapInfo => - CommonFatiguePredicate - .magicRecsPushTargetFatiguePredicate( - interval = pushCapInfo.fatigueInterval, - maxInInterval = pushCapInfo.pushcap - ) - .apply(Seq(target)) - .map(_.headOption.getOrElse(false)) - } - } - .withStats(predicateStatScope) - .withName(name) - } - - def teamExceptedPredicate[T <: TargetUser]( - predicate: NamedPredicate[T] - )( - implicit stats: StatsReceiver - ): NamedPredicate[T] = { - Predicate - .fromAsync { t: T => t.isTeamMember } - .or(predicate) - .withStats(stats.scope(predicate.name)) - .withName(predicate.name) - } - - def targetValidMobileSDKPredicate[T <: Target]( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - val name = "valid_mobile_sdk" - val scopedStats = statsReceiver.scope(s"targetpredicate_$name") - - Predicate - .fromAsync { target: T => - TargetUserPredicates.validMobileSDKPredicate - .apply(Seq(target)).map(_.headOption.getOrElse(false)) - }.withStats(scopedStats) - .withName(name) - } - - def magicRecsMinDurationSinceSent[T <: Target]( - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - val name = "target_min_duration_since_push" - Predicate - .fromAsync { target: T => - PushCapUtil.getMinDurationSincePush(target, statsReceiver).flatMap { minDurationSincePush => - CommonFatiguePredicate - .magicRecsMinDurationSincePush(interval = minDurationSincePush) - .apply(Seq(target)).map(_.head) - } - } - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - def optoutProbPredicate[ - T <: TargetUser with TargetABDecider with TargetScoringDetails with FrigateHistory - ]( - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[T] = { - val name = "target_has_high_optout_probability" - Predicate - .fromAsync { target: T => - val isNewUser = target.is30DayNewUserFromSnowflakeIdTime - if (isNewUser) { - statsReceiver.scope(name).counter("all_new_users").incr() - } - target.bucketOptoutProbability - .flatMap { - case Some(optoutProb) => - if (optoutProb >= target.params(PushFeatureSwitchParams.BucketOptoutThresholdParam)) { - CommonFatiguePredicate - .magicRecsPushTargetFatiguePredicate( - interval = 24.hours, - maxInInterval = target.params(PushFeatureSwitchParams.OptoutExptPushCapParam) - ) - .apply(Seq(target)) - .map { values => - val isValid = values.headOption.getOrElse(false) - if (!isValid && isNewUser) { - statsReceiver.scope(name).counter("filtered_new_users").incr() - } - isValid - } - } else Future.True - case _ => Future.True - } - } - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - /** - * Predicate used to specify CRT fatigue given interval and max number of candidates within interval. - * @param crt The specific CRT that this predicate is being applied to - * @param intervalParam The fatigue interval - * @param maxInIntervalParam The max number of the given CRT's candidates that are acceptable - * in the interval - * @param stats StatsReceiver - * @return Target Predicate - */ - def pushRecTypeFatiguePredicate( - crt: CRT, - intervalParam: Param[Duration], - maxInIntervalParam: FSBoundedParam[Int], - stats: StatsReceiver - ): Predicate[Target] = - Predicate.fromAsync { target: Target => - val interval = target.params(intervalParam) - val maxIninterval = target.params(maxInIntervalParam) - CommonFatiguePredicate - .recTypeTargetFatiguePredicate( - interval = interval, - maxInInterval = maxIninterval, - recommendationType = crt, - notificationDisplayLocation = NotificationDisplayLocation.PushToMobileDevice, - minInterval = 30.minutes - )(stats.scope(s"${crt}_push_candidate_fatigue")).apply(Seq(target)).map(_.head) - } - - def inlineActionFatiguePredicate( - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[Target] = { - val name = "inline_action_fatigue" - val predicateRequests = statsReceiver.scope(name).counter("requests") - val targetIsInExpt = statsReceiver.scope(name).counter("target_in_expt") - val predicateEnabled = statsReceiver.scope(name).counter("enabled") - val predicateDisabled = statsReceiver.scope(name).counter("disabled") - val inlineFatigueDisabled = statsReceiver.scope(name).counter("inline_fatigue_disabled") - - Predicate - .fromAsync { target: Target => - predicateRequests.incr() - if (target.params(PushFeatureSwitchParams.TargetInInlineActionAppVisitFatigue)) { - targetIsInExpt.incr() - target.inlineActionHistory.map { inlineHistory => - if (inlineHistory.nonEmpty && target.params( - PushFeatureSwitchParams.EnableInlineActionAppVisitFatigue)) { - predicateEnabled.incr() - val inlineFatigue = target.params(PushFeatureSwitchParams.InlineActionAppVisitFatigue) - val lookbackInMs = inlineFatigue.ago.inMilliseconds - val filteredHistory = inlineHistory.filter { - case (time, _) => time > lookbackInMs - } - filteredHistory.isEmpty - } else { - inlineFatigueDisabled.incr() - true - } - } - } else { - predicateDisabled.incr() - Future.True - } - } - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - def webNotifsHoldback[T <: TargetUser with UserDetails with TargetABDecider]( - )( - implicit stats: StatsReceiver - ): NamedPredicate[T] = { - val name = "mr_web_notifs_holdback" - Predicate - .fromAsync { targetUserContext: T => - targetUserContext.deviceInfo.map { deviceInfoOpt => - val isPrimaryWeb = deviceInfoOpt.exists { - _.guessedPrimaryClient.exists { clientType => - clientType == MobileClientType.Web - } - } - !(isPrimaryWeb && targetUserContext.params(PushFeatureSwitchParams.MRWebHoldbackParam)) - } - } - .withStats(stats.scope(s"predicate_$name")) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TopTweetImpressionsPredicates.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TopTweetImpressionsPredicates.docx new file mode 100644 index 0000000000000000000000000000000000000000..6b85b2e5eb5f8dd99500075c7d034b4139e7d45b GIT binary patch literal 37349 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%0DV^32AO=^~!N_~(dKCj{ zMhlXC;>$gga5)Egr3rxw=a|`b$<`JC&NZWlBgr-M3|Cyf_H;?#NhN+<)gS|0{w{Gjq*<#>p6Y1ESa!?j!K}u`mDy!crA>bT zdIh(xx>!Ov_Q}12gwt8u1SUU_W=MPe{gH6#$1DNwDh!@H@$x*Q_;bDgAR1p_i4Vl0 zBzvJ+<8iR5oySzs2&I-#%cLC~2WL)Y9G#2@HA0P%hy}#1#_s+cBz92-tCj3EK1?@r zGk*Wfa?D7ku+`i5=Y0Wr{o~)Fh-3`jP(D2I_q?R%EMR&?SRv5uB4}YP4)Xi)ZxtFZLY(Ahj0@G~D9maDh1;)?rB9zC z&#`V4WlaMnY4NQ%u;XF4NK7UJ&6=1}9NhO;v2;U=_K;R&J0b%`dNpiph5@aKZ@)$EB-94yQt5!3hA|gaI5L z=Apbwk-3!cnnLd1x{~Lig4scC#3l$(AY<}raRNBMg7#H=)KTyt#O%GzYqJFo#$!Cc zJnUnz2XZh$#t0%f*Vr=J0g1MWGv&=e8Zl={a1S*KkwP69Vl|fFt&;9v!?5nuQdLxG zm1Zj@uLV0Rx6gAO7b|L$O5nV0-7};tkQ!XGti6^4(nWDZK)T4{1;vJVTx>8Yg*NIt zy|ebvlAoUqMN7FAmH1^DV^T^Z8P(!yZuANYy9o*}IcdsDB_-)!oH$s$n*F({D4pYN zD2pUuffjNXh7gCsb68_W>TMO}&5In-8o(J=NrkwXMYyS{YqbHCmNi5ErX(tghom7d z>WYnhEL!{x8gTHWqI_4DKcIRh;n0}qivXM@n%w*P$yWufit?R>*t6G7 z#fQ~|Rw1T6CmK&N3gx!IopLg@kU6Cn`CourBpo^Js^qk8zU;og;(i9`en2W46=a9N zEy++!Y6Bm+YNBVOMGch@#Re6aiT>LKnGa-|_%&n!c@hG`a z5pCRRUpRh=AL9m?8~m@=iW%CGDkyi%L2z!P0kEMR6-WHiI&=`zo?o%~gq0q5EFE`A z`3SJHc01Bhb6g9upuCtkixy^Kgy1X{>V(xkw)4>=g$wRD^>{_1QoIWO(Q;g&<8V*G zx}bcK79ZRO2*Sf(1U&bej*>~B`Tj+K;uwM(9ecuwEyo)~OhJ~cEW~0wVJT}-gs6-Yxj)&`~*2Dy*eIQ%GLINHgNi5mJl*M19DjyL2vjekfu)(=kgyeHnEsu5-ZHdbE=^~BO{x)O-?hl_70K#8} zl%|3L_(-i~1+%*I#bnH{i#lrq#)-Q}iWb2c#<|iI;F84s1k=5=bWQ^Y8t%B&z2s72 zpzE}RwSV@4gO#*3<&tH$p~y zz+7t^DI2~_r_7g;_oQd3y{LbaOB1c8rI17AC)kexH^pw_sBkXd$%9?|$z=g8=BvCd zsEPq~-ES1xb3yT@Z`5eM2O*vnm!wr%2!e?x;0P&Tr9ks?R?$0-c`B>rK z8d7=}XNdl)kTfxF^b@o5qX0)$PxU67C7^Aj^^*WF#GXUMq%At@bHv1p3{j#x2=V9^ z%E#pJ)Necg!8%BZQDqic)-;E)V?aO5`h5tz-O<7yUPxLGAO(j}6}p=g@! z3)heL)=QozqqR1T&&O@~zZ=tD4h)dMpNraP9j)i_Fen%Vh_xNW(3 z0m>jC7+Ps_R8u6>_t*hqfU`O33O*`%2H%J`DtqoUC{d$N3lRasN|I80ibMiX25(Y< zV@hgz&Jb%|03ewnK@KI(S!lY9KwwndB|vGK>Kzo&MHNf(fnjL1BhfW7(kb&y1YOgy z+z!=~W#RpYP%&?|hstvo>9j7;H}eF$$CT%vBog~n#%Ugg|D_H)@Q*qXr2nnX77n0} z3#!Ne{Q~_zV5Uc}E(xw>e*@WLU_(A^M9X#jn-mM({k>mO&fDkzXhT>eAa2kH3Iuct z{a;PHT+Ccut?VuS+Go|GzU};-3$1sz%&>jm9J_K^CVtbRw1!WQt50HDTiKz5Iu ziEsr9yQG_u6RGCu*H`HGFSC8UF2iFAjM?z+`S2;m{4k7x3qYdOv@{$K3u|SzZ$@lP zso{}K)Q0>#{@C9-Kduk?*$wHfGl0F2D2|VP+FR61k|LlW+vP~ntl4M_|2(9B*oA0=pk-@l6U`s-f%d5c|Eij?fg?&qYmS=_!KTVl^iPwb2vjG zK9b+@EvRU19TTgIw!tan#ArVIbsCTBwcK1^T!8}0=CeFegi4JSxI*nj#}}sY`q6CP zAY7&GwNd5Ab+~>;(_4KIBHg1o$*8iRK)CSBjF-GXcFa`fN_AD6iXWmONiS6c6k}^q zw2dquw_?(lYC(G(xih8s4S3&42iW8XkH`|iCS09hpc#X-e7s>IY7@^_?$KCc60a^y zAvihr?}wza@+^AV;SC8p3lV!)z}?k?=WBHcx>BW?PXqL+h&ZPXE)Q#z0eWxMj6_2O51n;= z`A89Te~>_gzv#Gukr(AlCJgTjPcqbbdzXwpp*VE%d`Y5HKDA|1((~@UE zYKbwb>FOC)6jmlqFd~EkF7*qhP3VSeqhEPJ-w6k7+yAxCa%~s*pW7?Xw2xJQ04=Cm z0Y85l%Kp`Y>Z_Tt%70z(G4lh~Lric$^WMFKM~NzjrqRs8i7Z(7UCBbNh>m#V%q@V; zP&2PTS+zK@x*jQr&xtE`{BUL%_M{5_?6+ruP(R4OS~ey85w>kIN(IFW6@!s^1(STe zS*%|P{)!+R9y3g0T*1;Pb&3RdRPqFNbUq&bx+dNNF0%0jrG2nK&bEA^6G^$g6?*Mk zEfv9H%v~E5SFH3P>tqu!?yBdFkOVUQ%;Z8`>sBHC8RV%Fh*J01nZq2EnP0~J2cc>5 zqa;@-A3>8{v$9h+-Rk&RGPYKaJVwtMJDXMTB8L&3ucBql)aG4?!;8NJTuysGs+$u$ zJY)$mhRw(6rrkaGKOOtco$q1-=s@}#1_%h{-;S9B8t$qZ8QcEVhIBi1!2UZE-sq2S zkyL5f(zZ!0Xvj39q0LhWxZXghc=Z^Y3D<%hi@#@iZR41(>!rFL?c%+zX{X761EH{8 zMI=Fqxj*M#j6WaW@wMB&(lt_u($KX3=*MxS8w6!8_BrAueC?SEHKC4qL6QhW-OWHg z-fCskUNWa@S5NK8siJ`O@ve5;a@9kRh90VhGQH^HCj1(+Va6H<~KQigM+!(-;5qtFFps^%2XUnW1%eGWPGN}x@lg=`fN~@wf zi;RuVEC*h%9+;(>Z`*eVzn-pe&EYtRb_;XV)2u^%mkQ^{i~tZp;4?m>lnc<+vX z(GTG90OorTF+Wnf1u5Hm`hErF=G6mVS6iXW$=5z~SsJO~1H?F z59Yh^hYRy(OM9QebYC97y)0bB+uS_`id01PBrcODZ~V5^eX2mK{+_C#gy*sA7Vn^skyV^MkXHnI0j#I=yz7Iw(v}D9QG@y8hN< z7-U`Qly>?s;yzK(qp1#LGXk{xgcuowAjrg3(h}>AEjmx6-x#+AVc%D`7oaww;Lu9k zu0eoYJ_r&Bd-tsA@LHfZTZVFyBxy4dHMqP}UQ~Wfmvzfvt%nucO}yiKF$snZf`B;_ zQ+`+Heru9umXIP%Kog}al%0PX63Af?LXy^8IbZj{dQf|PdYa0zvZ~Bv1HaX;Tf0_U z?4sPCZ!Hm{eL;Kjty+|liU%2C15b3FigDhSOiC$DRcP8dcg4A+$kYxk%~e>U;k?9E zLzVj?vP4xcXHm3imuZQEooUW5_j&KtWM6DWVW}JV-s6LU-f}LuM1;arcx28jBh%Qd zyiixPESc@@L=s!hh+$d?NvOPSn1y>E+$Px#L`6DdiJLXLo>x8#6dzMqTTsB5X zj-`gSAA8{#M=38BRIdZIC1Xi#%DvrzbgYv>uLn5xDOTIl1bZb3p5QQS66}G zO|zZY;v{5hmrzkAlHTtf62BS0NM@RJtHcTWZ0A66FSW%Sk3RXekwM{7plv0@>B zh>uWews$eW70aU2whX1)G!7RLin3@J;0)HMzTkW_fv)vPAs)-l{?=0!u+MPWmw2>*&|D!8vkF@t|zZ>rsY6swA~s z6OI*S6AH>vIg=dt3t#q}bF_wYHUVtt6qbS3 z*lMTRJZIOUEU6-YawS39bjtx{B13HjEpfY0;^9f30@ZT+=r;|hm}606ygdO)_5I;c?y@f| z34%EbBTw76BkH;l9e%9fJ&=FD;5aE>)u?xk|DB<%F?;jo(T=kUe_Vo{(gaFJUmgpr zlB=11GFZl}3s%?mXGZr@x@xjIP-8kZD3I{`t$@hyic#(~%7ZyunIkpXt375zO%9`d zmf+Tr>77seHR%F>f?R7~j>;m^p}<;FXz_Kp6$4)PnFRr@X=9PHI= ztNZPreLX0vyT=uZDh0lYVS8Q+YBWwrIs)`|3J249ip5^CZECpSVmEyRC!kci`TR$o zFsxZbv_-uN z+_kOF2_~TpZwVz{hI{$eEvaHs>Wi!|-!nWV$sYe=md*nVPbdw|xd0_Ed2njX7cUZ# zI~-)EF3pEn!MY*=73Zbp9BqMMHM}cC>YpPbLQ-64^t@DYb!>Vn*|Y-7j0iXFBu zh|Q{zW)iFAnsHn~V~(&(#%M?hkwF@3N<{`okRxWy7}{#kp^(bv1JPmN%haa#&zk&-=NbK?m&|$Ms&P_Y3l$xmd10&srJa0}ld_y`lnso4C2S zI@oF2*)m$Wn%VvJu~!q_05iyh2K3WcY$9=@lqVc*Ng0U}xd5hC>h(KBVs~P(@#ju> z-=4=;$FUPTxepLRHXivlF)0^E81HLwdBUF$CxQ=1A(tUSklD3JmMRt!T5jzg;KT}` zm^2d;XotGY7|USl!5|in74T;@;n45nj#$lssFfpuQMMYX-V`ltI1-E}R^)vfe(LyG zipZ}FwGdoJ*ERIH+vFj2?J!xU&cQ1i|3er5re``M=uwK_G^iZfjR7r)*VeHpOsFtxmk5EUZ9?qDi&sF|Qg zqEkyJN}USk)?_frb!)sawwTZA{8)VHBkrP9!4oHaFtRPiB7oj$aLVis!tb>4A7`X# z?m{u)3VTX#V2d0$!Cse~L;6scQ{DjhSl>llnWGOP^wkD1)MT^8qAHg3*j($(4Q4)nD06qH)%`<#%8n&n@weL{9>k0NSzM#4W4 zx+5>i9u0r-?J#?@HI_|6{(49y`Sm|mY4P)65jKFDOavgi`_G!g-p$U~%o$LX`IFtv zXl~mdaAEcAmI)?^>$XHBv4OEQ7YeHD#fX!(JOEK()nDX|Gc#@7$XuJu&{pRNlt;44 zqPS1Rp!)4{fB4A1f&Y5D4NBZWh(L4UxCzoJ+ZCZZk(pjS{P>x6Msf918F~W+Wp=*Z zPtfXf|08bhH}d8pI0{W&8I>l_cgnlWoZ6?>7eFeRPnHX%rL zn@8eK6p9Dn6q*EV8j1^7qpRxmN&`+RD+SD?YWn!Qv{Hie3aBNCVHzI?+Da6uRc*UBo-5NVj zpYRLzJMq1=K!rBzCq}e}=+0&bas-1Vi@Zs0s=i(+s$Kx)otkZ8-*| zXlgR_0oYfi5&nQp>yJ9X4qQv}hx4PXaTw*_bfYX1HAWSe!L%bnXIwnH{N~1`f4HhvYxxeMPTy;N1qOO0p7+*U6H148kIE@*J zB?!QU>yeT$rkuMMtW4?KQ%$SwmGW479E7&%ncu(Zxs}xyjp?}+-h~{{)6g3|3h@?W zgs{&+=lR})+B*<|#O4kH*Kc|ur`?=Cl8Qt&NAv#h!|&r0p_wqkIGih~LY+OP;T7Y~ zCm&Xx2RhB$qtINUn9p3YJz-0=Axz?hMa;iyr51 zs9p#PgPxNbCx{azw#zfYOrI~i*j;xmY8G!$wFt7cp)q7jS$+H$`yz@taUnw0Zl?{#R~QCFXDVqsW|jj`O% z$9h!@@q9D(jC``ze=}V#1W(5_)Qz*=59eZISbz;-Z79Mz%^k8q`B|{@3H#3(t8jeP zq6ZuZD3}Nc2oo@40UCGzHBA9lUV!V<-pI<9!P?Qx;#%Ft5mgP1zssAG+HMAkiXIJe zu#2U?m|mC`gv084X);GKeVtRNRFWKOCWX=0rBwNxgjb-aFg~Bp1~gUIY$wHqKptf= zK?z7CSTw9r66-s5J~RW+yRGeFXvN?JgW0R?jrZQ{hi#WRZtqk3!m&bwq4|3hZ)hes zP%{sq$L8KC`<7Zqt}5v(bPiXbv$l@GeIOeUOSs9xre$O8PTLNtU0Ay4K(_Hvwlp0W zOl~}M{~+uAPN#DyCNx9^!mZCb(iy-k2t)zyIZoPvo6rVy3;b0x8Q9fgUVol0EaCEp zXfCmF;P_1PT2*)YJx>aw8XLPjt#fA7z_p8Kd>e6|dYWmS!htoy+E;crnz%t#S+oDe@;D+;`TjS*_LDO0&kx`(bC)kyQgef%_A6@Qx^35elX zN5w0E8-{s~Bxpvi;spME8a`Ovt;3 zeuiNuMBo!{h#Pa6r@!(P`1Fnz!KlTQEF*3FXLrI)Ta z&%cP>;Sk@Esh20ezJLAOzY{J!a+gZ~Km1ag8&JCW->38+b^F-o@BMSKrOE!_{3ENy zy9~BBObS%KSEtIasoDHQYS+hU2V2kEU1^t}XPz5#3R_o{nWOTX`LEMI>` zdi}I2w%1!37@Ln8+%h;AkRy>jBV~oh5#toeBHq+C%@>lkAMQ=M?!E3P|LG5s?_WL0 zUbzc+@zuh}l@38xGA&oHzxjV7$EfXz&~MY-+Zx_I-QkpeS@d<+fhDt7XXc^x z^X0Rf_BqwuT6e4TopgwT%F0Qv=d62UwJZGP8?~eAjlg?~jcha4F8q*nG5-Bz-^#Sl zIl+Q;t5_!6zL;lt_6Zk@PnWk*XOl{YZ&Nzkh4%}pT;fZ#?whN9b~vP_&objT_q<4U z;cZU^8?LK1teMFf%{Q-8IgaJUtfze)z8j6_C+=gIu;*vxtMw(^^L&>ty4YP2_tKmx z=AJV(V zTk8}It5b8{Zn}{#dXvv=UBbK<4<5}4U2;)4Vd;OlyzC1K+ohX3-?1fgb!!&&2u3I$ zmYn%QPNI9~r&S975>q4kK3LVBnsCKL#6w6}Ma=d_>mJ+of;cKedFv|gF1wwa%%%-Ox{+@9)dZ<-EOuQ|GH z(j}wn%2MCAk5qqD-IY5S{r>a%DNj6ti%-A0)-G4~U(uidu3SGhg=`MQ3)d!J9%w0?i=ufP5F{}+`S9^jo~ml1n|rA@U(xhhKhuvu{9#1D^)N)LC5y^LMm z)_*>F@}$I@8!D^6PvHD{u2}ii5$BaNh10+JTKRhiYwg~8=+^(>ROVLIS5|y4W%4YP z(_4NPJoVx$*}%W7iA^eFK_gb;zj4R6L-qmQj7%cTpy6>2h6OXtBi05joj4WPLOlf> za|3ldV4wjg#=sEm3>*wj%`1rysVqn>js>;O&<&_m^LF?FRC*6Mj?4|y4Wt_wj{%K< zwDG}BdvuK*ZQQ|`KqVJ}8U;}_J_m}x>z?HNBJfBwy7n)(Z;QVMYR_R|U=TpjUJn$3 zYfmgFz~<^p*2kDX0@XDsqFX)#7!cr@1E3M5xj?^T)1KELEo20={4~%A85GNR0K)*R z9pZCjL$HQI?`kpYZhZ!ZxKLIGeiV~bc%dd0msIAYf~PCd!vOt2Ntpfy#yd7Bn$eDz zL^lV0o)lq@ZxPHKq)8NX?dTIP2<_HoQ0-{bFz6n=B^!_)(h@TBud*kQ^pm%f;23%}JHUL|<7u_uMz9Yh{Q%%Tbq4p%vO+oK! uAxwGL3=I{Oju*Oq^!6Y^e@#157DH_v26(dqa}X$32{I%CvqxSphz9@{713${ literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TopTweetImpressionsPredicates.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TopTweetImpressionsPredicates.scala deleted file mode 100644 index be5993b71..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TopTweetImpressionsPredicates.scala +++ /dev/null @@ -1,56 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.pushservice.model.TopTweetImpressionsPushCandidate -import com.twitter.frigate.pushservice.params.{PushFeatureSwitchParams => FS} -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate - -object TopTweetImpressionsPredicates { - - def topTweetImpressionsFatiguePredicate( - implicit stats: StatsReceiver - ): NamedPredicate[TopTweetImpressionsPushCandidate] = { - val name = "top_tweet_impressions_fatigue" - val scopedStats = stats.scope(name) - val bucketImpressionCounter = scopedStats.counter("bucket_impression_count") - Predicate - .fromAsync { candidate: TopTweetImpressionsPushCandidate => - val interval = candidate.target.params(FS.TopTweetImpressionsNotificationInterval) - val maxInInterval = candidate.target.params(FS.MaxTopTweetImpressionsNotifications) - val minInterval = candidate.target.params(FS.TopTweetImpressionsFatigueMinIntervalDuration) - bucketImpressionCounter.incr() - - val fatiguePredicate = FatiguePredicate.recTypeOnly( - interval = interval, - maxInInterval = maxInInterval, - minInterval = minInterval, - recommendationType = CommonRecommendationType.TweetImpressions - ) - fatiguePredicate.apply(Seq(candidate)).map(_.head) - } - .withStats(stats.scope(s"predicate_${name}")) - .withName(name) - } - - def topTweetImpressionsThreshold( - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[TopTweetImpressionsPushCandidate] = { - val name = "top_tweet_impressions_threshold" - val scopedStats = statsReceiver.scope(name) - val meetsImpressionsCounter = scopedStats.counter("meets_impressions_count") - val bucketImpressionCounter = scopedStats.counter("bucket_impression_count") - Predicate - .from[TopTweetImpressionsPushCandidate] { candidate => - val meetsImpressionsThreshold = - candidate.impressionsCount >= candidate.target.params(FS.TopTweetImpressionsThreshold) - if (meetsImpressionsThreshold) meetsImpressionsCounter.incr() - bucketImpressionCounter.incr() - meetsImpressionsThreshold - } - .withStats(statsReceiver.scope(s"predicate_${name}")) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetEngagementRatioPredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetEngagementRatioPredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..4ca7f59545af39c68f1f04b7f45a1989f545f931 GIT binary patch literal 37922 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⪚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μf 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 XLq|Iaa0ac+Dn-BxoF4Slm7{+E=!WD+ literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetEngagementRatioPredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetEngagementRatioPredicate.scala deleted file mode 100644 index d1a3a1c64..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetEngagementRatioPredicate.scala +++ /dev/null @@ -1,112 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushConstants -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.util.CandidateUtil -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.util.Future - -object TweetEngagementRatioPredicate { - - def QTtoNtabClickBasedPredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[ - PushCandidate with TweetCandidate with RecommendationType - ] = { - val name = "oon_tweet_engagement_filter_qt_to_ntabclick_ratio_based_predicate" - val scopedStatsReceiver = stats.scope(name) - val allOonCandidatesCounter = scopedStatsReceiver.counter("all_oon_candidates") - val filteredCandidatesCounter = - scopedStatsReceiver.counter("filtered_oon_candidates") - - val quoteCountFeature = - "tweet.core.tweet_counts.quote_count" - val ntabClickCountFeature = - "tweet.magic_recs_tweet_real_time_aggregates_v2.pair.v2.magicrecs.realtime.is_ntab_clicked.any_feature.Duration.Top.count" - - Predicate - .fromAsync { candidate: PushCandidate with TweetCandidate with RecommendationType => - val target = candidate.target - val crt = candidate.commonRecType - val isOonCandidate = RecTypes.isOutOfNetworkTweetRecType(crt) || - RecTypes.outOfNetworkTopicTweetTypes.contains(crt) - - lazy val QTtoNtabClickRatioThreshold = - target.params(PushFeatureSwitchParams.TweetQTtoNtabClickRatioThresholdParam) - lazy val quoteCount = candidate.numericFeatures.getOrElse(quoteCountFeature, 0.0) - lazy val ntabClickCount = candidate.numericFeatures.getOrElse(ntabClickCountFeature, 0.0) - lazy val quoteRate = if (ntabClickCount > 0) quoteCount / ntabClickCount else 1.0 - - if (isOonCandidate) allOonCandidatesCounter.incr() - if (CandidateUtil.shouldApplyHealthQualityFilters(candidate) && isOonCandidate) { - val ntabClickThreshold = 1000 - candidate.cachePredicateInfo( - name + "_count", - ntabClickCount, - ntabClickThreshold, - ntabClickCount >= ntabClickThreshold) - candidate.cachePredicateInfo( - name + "_ratio", - quoteRate, - QTtoNtabClickRatioThreshold, - quoteRate < QTtoNtabClickRatioThreshold) - if (ntabClickCount >= ntabClickThreshold && quoteRate < QTtoNtabClickRatioThreshold) { - filteredCandidatesCounter.incr() - Future.False - } else Future.True - } else Future.True - } - .withStats(stats.scope(name)) - .withName(name) - } - - def TweetReplyLikeRatioPredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with TweetCandidate] = { - val name = "tweet_reply_like_ratio" - val scopedStatsReceiver = stats.scope(name) - val allCandidatesCounter = scopedStatsReceiver.counter("all_candidates") - val filteredCandidatesCounter = scopedStatsReceiver.counter("filtered_candidates") - val bucketedCandidatesCounter = scopedStatsReceiver.counter("bucketed_candidates") - - Predicate - .fromAsync { candidate: PushCandidate => - allCandidatesCounter.incr() - val target = candidate.target - val likeCount = candidate.numericFeatures - .getOrElse(PushConstants.TweetLikesFeatureName, 0.0) - val replyCount = candidate.numericFeatures - .getOrElse(PushConstants.TweetRepliesFeatureName, 0.0) - val ratio = replyCount / likeCount.max(1) - val isOonCandidate = RecTypes.isOutOfNetworkTweetRecType(candidate.commonRecType) || - RecTypes.outOfNetworkTopicTweetTypes.contains(candidate.commonRecType) - - if (isOonCandidate - && CandidateUtil.shouldApplyHealthQualityFilters(candidate) - && replyCount > target.params( - PushFeatureSwitchParams.TweetReplytoLikeRatioReplyCountThreshold)) { - bucketedCandidatesCounter.incr() - if (ratio > target.params( - PushFeatureSwitchParams.TweetReplytoLikeRatioThresholdLowerBound) - && ratio < target.params( - PushFeatureSwitchParams.TweetReplytoLikeRatioThresholdUpperBound)) { - filteredCandidatesCounter.incr() - Future.False - } else { - Future.True - } - } else { - Future.True - } - } - .withStats(stats.scope(s"predicate_$name")) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetLanguagePredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetLanguagePredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..c2474f1e9e5b3809a808b442ea547be51a43f818 GIT binary patch literal 37967 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 ToI$IzN)m7Zr^nmG)uVp^uzmmr literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetLanguagePredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetLanguagePredicate.scala deleted file mode 100644 index 4ff24ae77..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetLanguagePredicate.scala +++ /dev/null @@ -1,109 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.util.CandidateUtil -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.language.normalization.UserDisplayLanguage -import com.twitter.util.Future - -object TweetLanguagePredicate { - - def oonTweeetLanguageMatch( - )( - implicit stats: StatsReceiver - ): NamedPredicate[ - PushCandidate with RecommendationType with TweetDetails - ] = { - val name = "oon_tweet_language_predicate" - val scopedStatsReceiver = stats.scope(name) - val oonCandidatesCounter = - scopedStatsReceiver.counter("oon_candidates") - val enableFilterCounter = - scopedStatsReceiver.counter("enabled_filter") - val skipMediaTweetsCounter = - scopedStatsReceiver.counter("skip_media_tweets") - - Predicate - .fromAsync { candidate: PushCandidate with RecommendationType with TweetDetails => - val target = candidate.target - val crt = candidate.commonRecType - val isOonCandidate = RecTypes.isOutOfNetworkTweetRecType(crt) || - RecTypes.outOfNetworkTopicTweetTypes.contains(crt) - - if (CandidateUtil.shouldApplyHealthQualityFilters(candidate) && isOonCandidate) { - oonCandidatesCounter.incr() - - target.featureMap.map { featureMap => - val userPreferredLanguages = featureMap.sparseBinaryFeatures - .getOrElse("user.language.user.preferred_contents", Set.empty[String]) - val userEngagementLanguages = featureMap.sparseContinuousFeatures.getOrElse( - "user.language.user.engagements", - Map.empty[String, Double]) - val userFollowLanguages = featureMap.sparseContinuousFeatures.getOrElse( - "user.language.user.following_accounts", - Map.empty[String, Double]) - val userProducedTweetLanguages = featureMap.sparseContinuousFeatures - .getOrElse("user.language.user.produced_tweets", Map.empty) - val userDeviceLanguages = featureMap.sparseContinuousFeatures.getOrElse( - "user.language.user.recent_devices", - Map.empty[String, Double]) - val tweetLanguageOpt = candidate.categoricalFeatures - .get(target.params(PushFeatureSwitchParams.TweetLanguageFeatureNameParam)) - - if (userPreferredLanguages.isEmpty) - scopedStatsReceiver.counter("userPreferredLanguages_empty").incr() - if (userEngagementLanguages.isEmpty) - scopedStatsReceiver.counter("userEngagementLanguages_empty").incr() - if (userFollowLanguages.isEmpty) - scopedStatsReceiver.counter("userFollowLanguages_empty").incr() - if (userProducedTweetLanguages.isEmpty) - scopedStatsReceiver - .counter("userProducedTweetLanguages_empty") - .incr() - if (userDeviceLanguages.isEmpty) - scopedStatsReceiver.counter("userDeviceLanguages_empty").incr() - if (tweetLanguageOpt.isEmpty) scopedStatsReceiver.counter("tweetLanguage_empty").incr() - - val tweetLanguage = tweetLanguageOpt.getOrElse("und") - val undefinedTweetLanguages = Set("") - - if (!undefinedTweetLanguages.contains(tweetLanguage)) { - lazy val userInferredLanguageThreshold = - target.params(PushFeatureSwitchParams.UserInferredLanguageThresholdParam) - lazy val userDeviceLanguageThreshold = - target.params(PushFeatureSwitchParams.UserDeviceLanguageThresholdParam) - lazy val enableTweetLanguageFilter = - target.params(PushFeatureSwitchParams.EnableTweetLanguageFilter) - lazy val skipLanguageFilterForMediaTweets = - target.params(PushFeatureSwitchParams.SkipLanguageFilterForMediaTweets) - - lazy val allLanguages = userPreferredLanguages ++ - userEngagementLanguages.filter(_._2 > userInferredLanguageThreshold).keySet ++ - userFollowLanguages.filter(_._2 > userInferredLanguageThreshold).keySet ++ - userProducedTweetLanguages.filter(_._2 > userInferredLanguageThreshold).keySet ++ - userDeviceLanguages.filter(_._2 > userDeviceLanguageThreshold).keySet - - if (enableTweetLanguageFilter && allLanguages.nonEmpty) { - enableFilterCounter.incr() - val hasMedia = candidate.hasPhoto || candidate.hasVideo - - if (hasMedia && skipLanguageFilterForMediaTweets) { - skipMediaTweetsCounter.incr() - true - } else { - allLanguages.map(UserDisplayLanguage.toTweetLanguage).contains(tweetLanguage) - } - } else true - } else true - } - } else Future.True - } - .withStats(stats.scope(name)) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetWithheldContentPredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetWithheldContentPredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..684c04b17b14285d48d20f65f6f47be1c0bc1fac GIT binary patch literal 37177 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 b%3`Rk!vJqqU=9N1DnW)sVD>oF1L6SyLxz0s literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetWithheldContentPredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetWithheldContentPredicate.scala deleted file mode 100644 index c05536909..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/TweetWithheldContentPredicate.scala +++ /dev/null @@ -1,35 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.TweetDetails -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.hermit.predicate.tweetypie.UserLocationAndTweet -import com.twitter.hermit.predicate.tweetypie.WithheldTweetPredicate -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.service.metastore.gen.thriftscala.Location -import com.twitter.util.Future - -object TweetWithheldContentPredicate { - val name = "withheld_content" - val defaultLocation = Location(city = "", region = "", countryCode = "", confidence = 0.0) - - def apply( - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with TweetDetails] = { - Predicate - .fromAsync { candidate: PushCandidate with TweetDetails => - candidate.tweet match { - case Some(tweet) => - WithheldTweetPredicate(checkAllCountries = true) - .apply(Seq(UserLocationAndTweet(defaultLocation, tweet))) - .map(_.head) - case None => - Future.value(false) - } - } - .withStats(statsReceiver.scope(s"predicate_$name")) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/event/EventPredicatesForCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/event/EventPredicatesForCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..71d35a4ff2dae4ab103c3f8ae0d55fc6bc38613b GIT binary patch literal 38265 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 K4{plWU;hUJ)47lU literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/event/EventPredicatesForCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/event/EventPredicatesForCandidate.scala deleted file mode 100644 index 86c1f8abd..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/event/EventPredicatesForCandidate.scala +++ /dev/null @@ -1,155 +0,0 @@ -package com.twitter.frigate.pushservice.predicate.event - -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.EventCandidate -import com.twitter.frigate.common.base.TargetInfo -import com.twitter.frigate.common.base.TargetUser -import com.twitter.frigate.common.candidate.FrigateHistory -import com.twitter.frigate.common.history.RecItems -import com.twitter.frigate.magic_events.thriftscala.Locale -import com.twitter.frigate.pushservice.model.MagicFanoutEventHydratedCandidate -import com.twitter.frigate.pushservice.model.MagicFanoutEventPushCandidate -import com.twitter.frigate.pushservice.model.MagicFanoutNewsEventPushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.pushservice.predicate.magic_fanout.MagicFanoutPredicatesUtil._ -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.util.Future - -object EventPredicatesForCandidate { - def hasTitle( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[MagicFanoutEventHydratedCandidate] = { - val name = "event_title_available" - val scopedStatsReceiver = statsReceiver.scope(s"predicate_$name") - Predicate - .fromAsync { candidate: MagicFanoutEventHydratedCandidate => - candidate.eventTitleFut.map(_.nonEmpty) - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - def isNotDuplicateWithEventId( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[MagicFanoutEventHydratedCandidate] = { - val name = "duplicate_event_id" - Predicate - .fromAsync { candidate: MagicFanoutEventHydratedCandidate => - val useRelaxedFatigueLengthFut: Future[Boolean] = - candidate match { - case mfNewsEvent: MagicFanoutNewsEventPushCandidate => - mfNewsEvent.isHighPriorityEvent - case _ => Future.value(false) - } - Future.join(candidate.target.history, useRelaxedFatigueLengthFut).map { - case (history, useRelaxedFatigueLength) => - val filteredNotifications = if (useRelaxedFatigueLength) { - val relaxedFatigueInterval = - candidate.target - .params( - PushFeatureSwitchParams.MagicFanoutRelaxedEventIdFatigueIntervalInHours).hours - history.notificationMap.filterKeys { time => - time.untilNow <= relaxedFatigueInterval - }.values - } else history.notificationMap.values - !RecItems(filteredNotifications.toSeq).events.exists(_.eventId == candidate.eventId) - } - } - .withStats(statsReceiver.scope(s"predicate_$name")) - .withName(name) - } - - def isNotDuplicateWithEventIdForCandidate[ - T <: TargetUser with FrigateHistory, - Cand <: EventCandidate with TargetInfo[T] - ]( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[Cand] = { - val name = "is_not_duplicate_event" - Predicate - .fromAsync { candidate: Cand => - candidate.target.pushRecItems.map { - !_.events.map(_.eventId).contains(candidate.eventId) - } - } - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - def accountCountryPredicateWithAllowlist( - implicit stats: StatsReceiver - ): NamedPredicate[MagicFanoutEventPushCandidate] = { - val name = "account_country_predicate_with_allowlist" - val scopedStats = stats.scope(name) - - val skipPredicate = Predicate - .from { candidate: MagicFanoutEventPushCandidate => - candidate.target.params(PushFeatureSwitchParams.MagicFanoutSkipAccountCountryPredicate) - } - .withStats(stats.scope("skip_account_country_predicate_mf")) - .withName("skip_account_country_predicate_mf") - - val excludeEventFromAccountCountryPredicateFiltering = Predicate - .from { candidate: MagicFanoutEventPushCandidate => - val eventId = candidate.eventId - val target = candidate.target - target - .params(PushFeatureSwitchParams.MagicFanoutEventAllowlistToSkipAccountCountryPredicate) - .exists(eventId.equals) - } - .withStats(stats.scope("exclude_event_from_account_country_predicate_filtering")) - .withName("exclude_event_from_account_country_predicate_filtering") - - skipPredicate - .or(excludeEventFromAccountCountryPredicateFiltering) - .or(accountCountryPredicate) - .withStats(scopedStats) - .withName(name) - } - - /** - * Check if user's country is targeted - * @param stats - */ - def accountCountryPredicate( - implicit stats: StatsReceiver - ): NamedPredicate[MagicFanoutEventPushCandidate] = { - val name = "account_country_predicate" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - val internationalLocalePassedCounter = - scopedStatsReceiver.counter("international_locale_passed") - val internationalLocaleFilteredCounter = - scopedStatsReceiver.counter("international_locale_filtered") - Predicate - .fromAsync { candidate: MagicFanoutEventPushCandidate => - candidate.target.countryCode.map { - case Some(countryCode) => - val denyListedCountryCodes: Seq[String] = - if (candidate.commonRecType == CommonRecommendationType.MagicFanoutNewsEvent) { - candidate.target - .params(PushFeatureSwitchParams.MagicFanoutDenyListedCountries) - } else if (candidate.commonRecType == CommonRecommendationType.MagicFanoutSportsEvent) { - candidate.target - .params(PushFeatureSwitchParams.MagicFanoutSportsEventDenyListedCountries) - } else Seq() - val eventCountries = - candidate.newsForYouMetadata - .flatMap(_.locales).getOrElse(Seq.empty[Locale]).flatMap(_.country) - if (isInCountryList(countryCode, eventCountries) - && !isInCountryList(countryCode, denyListedCountryCodes)) { - internationalLocalePassedCounter.incr() - true - } else { - internationalLocaleFilteredCounter.incr() - false - } - case _ => false - } - } - .withStats(scopedStatsReceiver) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutPredicatesForCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutPredicatesForCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..1be3f50d1af0bb7ed16177106ae0310a2d067a43 GIT binary patch literal 41183 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 - candidate.target.isHeavyUserState.map { isHeavyUser => - lazy val rankThreshold = - if (isHeavyUser) { - candidate.target.params(PushFeatureSwitchParams.MagicFanoutRankErgThresholdHeavy) - } else { - candidate.target.params(PushFeatureSwitchParams.MagicFanoutRankErgThresholdNonHeavy) - } - MagicFanoutPredicatesUtil - .checkIfValidErgScEntityReasonExists( - candidate.effectiveMagicEventsReasons, - rankThreshold - ) - } - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - def newsNotificationFatigue( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val name = "news_notification_fatigue" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - Predicate - .fromAsync { candidate: PushCandidate => - FatiguePredicate - .recTypeSetOnly( - notificationDisplayLocation = NotificationDisplayLocation.PushToMobileDevice, - recTypes = Set(CommonRecommendationType.MagicFanoutNewsEvent), - maxInInterval = - candidate.target.params(PushFeatureSwitchParams.MFMaxNumberOfPushesInInterval), - interval = candidate.target.params(PushFeatureSwitchParams.MFPushIntervalInHours), - minInterval = candidate.target.params(PushFeatureSwitchParams.MFMinIntervalFatigue) - ) - .apply(Seq(candidate)) - .map(_.headOption.getOrElse(false)) - - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - /** - * Check if reason contains any optouted semantic core entity interests. - * - * @param stats - * - * @return - */ - def magicFanoutNoOptoutInterestPredicate( - implicit stats: StatsReceiver - ): NamedPredicate[MagicFanoutEventPushCandidate] = { - val name = "magicfanout_optout_interest_predicate" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - val withOptOutInterestsCounter = stats.counter("with_optout_interests") - val withoutOptOutInterestsCounter = stats.counter("without_optout_interests") - Predicate - .fromAsync { candidate: MagicFanoutEventPushCandidate => - candidate.target.optOutSemanticCoreInterests.map { - case ( - optOutUserInterests: Seq[SemanticCoreEntityId] - ) => - withOptOutInterestsCounter.incr() - optOutUserInterests - .intersect(candidate.annotatedAndInferredSemanticCoreEntities).isEmpty - case _ => - withoutOptOutInterestsCounter.incr() - true - } - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - /** - * Checks if the target has only one device language language, - * and that language is targeted for that event - * - * @param statsReceiver - * - * @return - */ - def inferredUserDeviceLanguagePredicate( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[MagicFanoutEventPushCandidate] = { - val name = "inferred_device_language" - val scopedStats = statsReceiver.scope(s"predicate_$name") - Predicate - .fromAsync { candidate: MagicFanoutEventPushCandidate => - val target = candidate.target - target.deviceInfo.map { - _.flatMap { deviceInfo => - val languages = deviceInfo.deviceLanguages.getOrElse(Seq.empty[String]) - val distinctDeviceLanguages = - IbisAppPushDeviceSettingsUtil.distinctDeviceLanguages(languages) - - candidate.newsForYouMetadata.map { newsForYouMetadata => - val eventLocales = newsForYouMetadata.locales.getOrElse(Seq.empty) - val eventLanguages = eventLocales.flatMap(_.language).map(_.toLowerCase).distinct - - eventLanguages.intersect(distinctDeviceLanguages).nonEmpty - } - }.getOrElse(false) - } - } - .withStats(scopedStats) - .withName(name) - } - - /** - * Bypass predicate if high priority push - */ - def highPriorityNewsEventExceptedPredicate( - predicate: NamedPredicate[MagicFanoutNewsEventPushCandidate] - )( - implicit config: Config - ): NamedPredicate[MagicFanoutNewsEventPushCandidate] = { - PredicatesForCandidate.exceptedPredicate( - name = "high_priority_excepted_" + predicate.name, - fn = MagicFanoutPredicatesUtil.checkIfHighPriorityNewsEventForCandidate, - predicate - )(config.statsReceiver) - } - - /** - * Bypass predicate if high priority push - */ - def highPriorityEventExceptedPredicate( - predicate: NamedPredicate[MagicFanoutEventPushCandidate] - )( - implicit config: Config - ): NamedPredicate[MagicFanoutEventPushCandidate] = { - PredicatesForCandidate.exceptedPredicate( - name = "high_priority_excepted_" + predicate.name, - fn = MagicFanoutPredicatesUtil.checkIfHighPriorityEventForCandidate, - predicate - )(config.statsReceiver) - } - - def magicFanoutSimClusterTargetingPredicate( - implicit stats: StatsReceiver - ): NamedPredicate[MagicFanoutEventPushCandidate] = { - val name = "simcluster_targeting" - val scopedStats = stats.scope(s"predicate_$name") - val userStateCounters = scopedStats.scope("user_state") - Predicate - .fromAsync { candidate: MagicFanoutEventPushCandidate => - candidate.target.isHeavyUserState.map { isHeavyUser => - val simClusterEmbeddings = candidate.newsForYouMetadata.flatMap( - _.eventContextScribe.flatMap(_.simClustersEmbeddings)) - val TopKSimClustersCount = 50 - val eventSimClusterVectorOpt: Option[MagicFanoutPredicatesUtil.SimClusterScores] = - MagicFanoutPredicatesUtil.getEventSimClusterVector( - simClusterEmbeddings.map(_.toMap), - (ModelVersion.Model20m145kUpdated, EmbeddingType.FollowBasedTweet), - TopKSimClustersCount - ) - val userSimClusterVectorOpt: Option[MagicFanoutPredicatesUtil.SimClusterScores] = - MagicFanoutPredicatesUtil.getUserSimClusterVector(candidate.effectiveMagicEventsReasons) - (eventSimClusterVectorOpt, userSimClusterVectorOpt) match { - case ( - Some(eventSimClusterVector: MagicFanoutPredicatesUtil.SimClusterScores), - Some(userSimClusterVector)) => - val score = eventSimClusterVector - .normedDotProduct(userSimClusterVector, eventSimClusterVector) - val threshold = if (isHeavyUser) { - candidate.target.params( - PushFeatureSwitchParams.MagicFanoutSimClusterDotProductHeavyUserThreshold) - } else { - candidate.target.params( - PushFeatureSwitchParams.MagicFanoutSimClusterDotProductNonHeavyUserThreshold) - } - val isPassed = score >= threshold - userStateCounters.scope(isHeavyUser.toString).counter(s"$isPassed").incr() - isPassed - - case (None, Some(userSimClusterVector)) => - candidate.commonRecType == CommonRecommendationType.MagicFanoutSportsEvent - - case _ => false - } - } - } - .withStats(scopedStats) - .withName(name) - } - - def geoTargetingHoldback( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with MagicFanoutCandidate] = { - Predicate - .from[PushCandidate with MagicFanoutCandidate] { candidate => - if (MagicFanoutPredicatesUtil.reasonsContainGeoTarget( - candidate.candidateMagicEventsReasons)) { - candidate.target.params(PushFeatureSwitchParams.EnableMfGeoTargeting) - } else true - } - .withStats(stats.scope("geo_targeting_holdback")) - .withName("geo_targeting_holdback") - } - - def geoOptOutPredicate( - userStore: ReadableStore[Long, User] - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with MagicFanoutCandidate] = { - Predicate - .fromAsync[PushCandidate with MagicFanoutCandidate] { candidate => - if (MagicFanoutPredicatesUtil.reasonsContainGeoTarget( - candidate.candidateMagicEventsReasons)) { - userStore.get(candidate.target.targetId).map { userOpt => - val isGeoAllowed = userOpt - .flatMap(_.account) - .exists(_.allowLocationHistoryPersonalization) - isGeoAllowed - } - } else { - Future.True - } - } - .withStats(stats.scope("geo_opt_out_predicate")) - .withName("geo_opt_out_predicate") - } - - /** - * Check if Semantic Core reasons contains valid utt reason & reason is within top k topics followed by user - */ - def magicFanoutTopicFollowsTargetingPredicate( - implicit stats: StatsReceiver, - interestsLookupStore: ReadableStore[InterestsLookupRequestWithContext, UserInterests] - ): NamedPredicate[MagicFanoutEventHydratedCandidate] = { - val name = "magicfanout_topic_follows_targeting" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - Predicate - .fromAsync[PushCandidate with MagicFanoutEventHydratedCandidate] { candidate => - candidate.followedTopicLocalizedEntities.map(_.nonEmpty) - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - /** Requires the magicfanout candidate to have a UserID reason which ranks below the follow - * rank threshold. If no UserID target exists the candidate is dropped. */ - def followRankThreshold( - threshold: Param[Int] - )( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with MagicFanoutCandidate] = { - val name = "follow_rank_threshold" - Predicate - .from[PushCandidate with MagicFanoutCandidate] { c => - c.candidateMagicEventsReasons.exists { fanoutReason => - fanoutReason.reason match { - case TargetID.UserID(_) => - fanoutReason.rank.exists { rank => - rank <= c.target.params(threshold) - } - case _ => false - } - } - } - .withStats(statsReceiver.scope(name)) - .withName(name) - } - - def userGeneratedEventsPredicate( - implicit statsReceiver: StatsReceiver - ): NamedPredicate[PushCandidate with MagicFanoutEventHydratedCandidate] = { - val name = "user_generated_moments" - val stats = statsReceiver.scope(name) - - Predicate - .from { candidate: PushCandidate with MagicFanoutEventHydratedCandidate => - val isUgmMoment = candidate.semanticCoreEntityTags.values.flatten.toSet - .contains(MagicFanoutPredicatesUtil.UgmMomentTag) - if (isUgmMoment) { - candidate.target.params(PushFeatureSwitchParams.MagicFanoutNewsUserGeneratedEventsEnable) - } else true - }.withStats(stats) - .withName(name) - } - def escherbirdMagicfanoutEventParam( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with MagicFanoutEventPushCandidate] = { - val name = "magicfanout_escherbird_fs" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - - Predicate - .fromAsync[PushCandidate with MagicFanoutEventPushCandidate] { candidate => - val candidateFrigateNotif = candidate.frigateNotification.magicFanoutEventNotification - val isEscherbirdEvent = candidateFrigateNotif.exists(_.isEscherbirdEvent.contains(true)) - scopedStatsReceiver.counter(s"with_escherbird_flag_$isEscherbirdEvent").incr() - - if (isEscherbirdEvent) { - - val listOfEventsSemanticCoreDomainIds = - candidate.target.params(PushFeatureSwitchParams.ListOfEventSemanticCoreDomainIds) - - val candScDomainEvent = - if (listOfEventsSemanticCoreDomainIds.nonEmpty) { - candidate.eventSemanticCoreDomainIds - .intersect(listOfEventsSemanticCoreDomainIds).nonEmpty - } else { - false - } - scopedStatsReceiver - .counter( - s"with_escherbird_fs_in_list_of_event_semantic_core_domains_$candScDomainEvent").incr() - Future.value(candScDomainEvent) - } else { - Future.True - } - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - /** - * Checks if the user has custom targeting enabled.If so, bucket the user in experiment. This custom targeting refers to adding - * tweet authors as targets in the eventfanout service. - * @param stats [StatsReceiver] - * @return NamedPredicate[PushCandidate with MagicFanoutEventPushCandidate] - */ - def hasCustomTargetingForNewsEventsParam( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with MagicFanoutEventPushCandidate] = { - val name = "magicfanout_hascustomtargeting" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - - Predicate - .from[PushCandidate with MagicFanoutEventPushCandidate] { candidate => - candidate.candidateMagicEventsReasons.exists { fanoutReason => - fanoutReason.reason match { - case userIdReason: TargetID.UserID => - if (userIdReason.userID.hasCustomTargeting.contains(true)) { - candidate.target.params( - PushFeatureSwitchParams.MagicFanoutEnableCustomTargetingNewsEvent) - } else true - case _ => true - } - } - } - .withStats(scopedStatsReceiver) - .withName(name) - - } - - def magicFanoutProductLaunchFatigue( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with MagicFanoutProductLaunchCandidate] = { - val name = "magic_fanout_product_launch_fatigue" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - Predicate - .fromAsync { candidate: PushCandidate with MagicFanoutProductLaunchCandidate => - val target = candidate.target - val (interval, maxInInterval, minInterval) = { - candidate.productLaunchType match { - case ProductType.BlueVerified => - ( - target.params(PushFeatureSwitchParams.ProductLaunchPushIntervalInHours), - target.params(PushFeatureSwitchParams.ProductLaunchMaxNumberOfPushesInInterval), - target.params(PushFeatureSwitchParams.ProductLaunchMinIntervalFatigue)) - case _ => - (Duration.fromDays(1), 0, Duration.Zero) - } - } - build( - interval = interval, - maxInInterval = maxInInterval, - minInterval = minInterval, - filterHistory = productLaunchTypeRecTypesOnlyFilter( - Set(CommonRecommendationType.MagicFanoutProductLaunch), - candidate.productLaunchType.toString), - notificationDisplayLocation = NotificationDisplayLocation.PushToMobileDevice - ).flatContraMap { candidate: PushCandidate => candidate.target.history } - .apply(Seq(candidate)) - .map(_.headOption.getOrElse(false)) - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - def creatorPushTargetIsNotCreator( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with MagicFanoutCreatorEventCandidate] = { - val name = "magic_fanout_creator_is_self" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - Predicate - .from { candidate: PushCandidate with MagicFanoutCreatorEventCandidate => - candidate.target.targetId != candidate.creatorId - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - def duplicateCreatorPredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with MagicFanoutCreatorEventCandidate] = { - val name = "magic_fanout_creator_duplicate_creator_id" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - Predicate - .fromAsync { cand: PushCandidate with MagicFanoutCreatorEventCandidate => - cand.target.pushRecItems.map { recItems: RecItems => - !recItems.creatorIds.contains(cand.creatorId) - } - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - def isSuperFollowingCreator( - )( - implicit config: Config, - stats: StatsReceiver - ): NamedPredicate[PushCandidate with MagicFanoutCreatorEventCandidate] = { - val name = "magic_fanout_is_already_superfollowing_creator" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - Predicate - .fromAsync { cand: PushCandidate with MagicFanoutCreatorEventCandidate => - config.hasSuperFollowingRelationshipStore - .get( - HasSuperFollowingRelationshipRequest( - sourceUserId = cand.target.targetId, - targetUserId = cand.creatorId)).map(_.getOrElse(false)) - } - .withStats(scopedStatsReceiver) - .withName(name) - } - - def magicFanoutCreatorPushFatiguePredicate( - )( - implicit stats: StatsReceiver - ): NamedPredicate[PushCandidate with MagicFanoutCreatorEventCandidate] = { - val name = "magic_fanout_creator_fatigue" - val scopedStatsReceiver = stats.scope(s"predicate_$name") - Predicate - .fromAsync { candidate: PushCandidate with MagicFanoutCreatorEventCandidate => - val target = candidate.target - val (interval, maxInInterval, minInterval) = { - candidate.creatorFanoutType match { - case CreatorFanoutType.UserSubscription => - ( - target.params(PushFeatureSwitchParams.CreatorSubscriptionPushIntervalInHours), - target.params( - PushFeatureSwitchParams.CreatorSubscriptionPushMaxNumberOfPushesInInterval), - target.params(PushFeatureSwitchParams.CreatorSubscriptionPushhMinIntervalFatigue)) - case CreatorFanoutType.NewCreator => - ( - target.params(PushFeatureSwitchParams.NewCreatorPushIntervalInHours), - target.params(PushFeatureSwitchParams.NewCreatorPushMaxNumberOfPushesInInterval), - target.params(PushFeatureSwitchParams.NewCreatorPushMinIntervalFatigue)) - case _ => - (Duration.fromDays(1), 0, Duration.Zero) - } - } - build( - interval = interval, - maxInInterval = maxInInterval, - minInterval = minInterval, - filterHistory = recOnlyFilter(candidate.commonRecType), - notificationDisplayLocation = NotificationDisplayLocation.PushToMobileDevice - ).flatContraMap { candidate: PushCandidate => candidate.target.history } - .apply(Seq(candidate)) - .map(_.headOption.getOrElse(false)) - } - .withStats(scopedStatsReceiver) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutPredicatesUtil.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutPredicatesUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..855fdb4f34c111f9baab06eeeb4ab1d82876adc7 GIT binary patch literal 38822 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 uts_cN?DthUX1vJtKRPEFc>oJS0-TefuBn0-Ux0 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutPredicatesUtil.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutPredicatesUtil.scala deleted file mode 100644 index 306f2b3b6..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutPredicatesUtil.scala +++ /dev/null @@ -1,218 +0,0 @@ -package com.twitter.frigate.pushservice.predicate.magic_fanout - -import com.twitter.eventdetection.event_context.util.SimClustersUtil -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.magic_events.thriftscala._ -import com.twitter.frigate.pushservice.model.MagicFanoutEventPushCandidate -import com.twitter.frigate.pushservice.model.MagicFanoutNewsEventPushCandidate -import com.twitter.frigate.pushservice.model.MagicFanoutProductLaunchPushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.simclusters_v2.common.SimClustersEmbedding -import com.twitter.simclusters_v2.thriftscala.EmbeddingType -import com.twitter.simclusters_v2.thriftscala.ModelVersion -import com.twitter.simclusters_v2.thriftscala.SimClustersEmbeddingId -import com.twitter.simclusters_v2.thriftscala.{SimClustersEmbedding => ThriftSimClustersEmbedding} -import com.twitter.util.Future - -object MagicFanoutPredicatesUtil { - - val UttDomain: Long = 0L - type DomainId = Long - type EntityId = Long - val BroadCategoryTag = "utt:broad_category" - val UgmMomentTag = "MMTS.isUGMMoment" - val TopKSimClustersCount = 50 - - case class SimClusterScores(simClusterScoreVector: Map[Int, Double]) { - def dotProduct(other: SimClusterScores): Double = { - simClusterScoreVector - .map { - case (clusterId, score) => other.simClusterScoreVector.getOrElse(clusterId, 0.0) * score - }.foldLeft(0.0) { _ + _ } - } - - def norm(): Double = { - val sumOfSquares: Double = simClusterScoreVector - .map { - case (clusterId, score) => score * score - }.foldLeft(0.0)(_ + _) - scala.math.sqrt(sumOfSquares) - } - - def normedDotProduct(other: SimClusterScores, normalizer: SimClusterScores): Double = { - val denominator = normalizer.norm() - val score = dotProduct(other) - if (denominator != 0.0) { - score / denominator - } else { - score - } - } - } - - private def isSemanticCoreEntityBroad( - semanticCoreEntityTags: Map[(DomainId, EntityId), Set[String]], - scEntityId: SemanticCoreID - ): Boolean = { - semanticCoreEntityTags - .getOrElse((scEntityId.domainId, scEntityId.entityId), Set.empty).contains(BroadCategoryTag) - } - - def isInCountryList(accountCountryCode: String, locales: Seq[String]): Boolean = { - locales.map(_.toLowerCase).contains(accountCountryCode.toLowerCase) - } - - /** - * Boolean check of if a MagicFanout is high priority push - */ - def checkIfHighPriorityNewsEventForCandidate( - candidate: MagicFanoutNewsEventPushCandidate - ): Future[Boolean] = { - candidate.isHighPriorityEvent.map { isHighPriority => - isHighPriority && (candidate.target.params(PushFeatureSwitchParams.EnableHighPriorityPush)) - } - } - - /** - * Boolean check of if a MagicFanout event is high priority push - */ - def checkIfHighPriorityEventForCandidate( - candidate: MagicFanoutEventPushCandidate - ): Future[Boolean] = { - candidate.isHighPriorityEvent.map { isHighPriority => - candidate.commonRecType match { - case CommonRecommendationType.MagicFanoutSportsEvent => - isHighPriority && (candidate.target.params( - PushFeatureSwitchParams.EnableHighPrioritySportsPush)) - case _ => false - } - } - } - - /** - * Boolean check if to skip target blue verified - */ - def shouldSkipBlueVerifiedCheckForCandidate( - candidate: MagicFanoutProductLaunchPushCandidate - ): Future[Boolean] = - Future.value( - candidate.target.params(PushFeatureSwitchParams.DisableIsTargetBlueVerifiedPredicate)) - - /** - * Boolean check if to skip target is legacy verified - */ - def shouldSkipLegacyVerifiedCheckForCandidate( - candidate: MagicFanoutProductLaunchPushCandidate - ): Future[Boolean] = - Future.value( - candidate.target.params(PushFeatureSwitchParams.DisableIsTargetLegacyVerifiedPredicate)) - - def shouldSkipSuperFollowCreatorCheckForCandidate( - candidate: MagicFanoutProductLaunchPushCandidate - ): Future[Boolean] = - Future.value( - !candidate.target.params(PushFeatureSwitchParams.EnableIsTargetSuperFollowCreatorPredicate)) - - /** - * Boolean check of if a reason of a MagicFanout is higher than the rank threshold of an event - */ - def checkIfErgScEntityReasonMeetsThreshold( - rankThreshold: Int, - reason: MagicEventsReason, - ): Boolean = { - reason.reason match { - case TargetID.SemanticCoreID(scEntityId: SemanticCoreID) => - reason.rank match { - case Some(rank) => rank < rankThreshold - case _ => false - } - case _ => false - } - } - - /** - * Check if MagicEventsReasons contains a reason that matches the thresholdw - */ - def checkIfValidErgScEntityReasonExists( - magicEventsReasons: Option[Seq[MagicEventsReason]], - rankThreshold: Int - )( - implicit stats: StatsReceiver - ): Boolean = { - magicEventsReasons match { - case Some(reasons) if reasons.exists(_.isNewUser.contains(true)) => true - case Some(reasons) => - reasons.exists { reason => - reason.source.contains(ReasonSource.ErgShortTermInterestSemanticCore) && - checkIfErgScEntityReasonMeetsThreshold( - rankThreshold, - reason - ) - } - - case _ => false - } - } - - /** - * Get event simcluster vector from event context - */ - def getEventSimClusterVector( - simClustersEmbeddingOption: Option[Map[SimClustersEmbeddingId, ThriftSimClustersEmbedding]], - embeddingMapKey: (ModelVersion, EmbeddingType), - topKSimClustersCount: Int - ): Option[SimClusterScores] = { - simClustersEmbeddingOption.map { thriftSimClustersEmbeddings => - val simClustersEmbeddings: Map[SimClustersEmbeddingId, SimClustersEmbedding] = - thriftSimClustersEmbeddings.map { - case (simClustersEmbeddingId, simClustersEmbeddingValue) => - (simClustersEmbeddingId, SimClustersEmbedding(simClustersEmbeddingValue)) - }.toMap - val emptySeq = Seq[(Int, Double)]() - val simClusterScoreTuple: Map[(ModelVersion, EmbeddingType), Seq[(Int, Double)]] = - SimClustersUtil - .getMaxTopKTweetSimClusters(simClustersEmbeddings, topKSimClustersCount) - SimClusterScores(simClusterScoreTuple.getOrElse(embeddingMapKey, emptySeq).toMap) - } - } - - /** - * Get user simcluster vector magic events reasons - */ - def getUserSimClusterVector( - magicEventsReasonsOpt: Option[Seq[MagicEventsReason]] - ): Option[SimClusterScores] = { - magicEventsReasonsOpt.map { magicEventsReasons: Seq[MagicEventsReason] => - val reasons: Seq[(Int, Double)] = magicEventsReasons.flatMap { reason => - reason.reason match { - case TargetID.SimClusterID(simClusterId: SimClusterID) => - Some((simClusterId.clusterId, reason.score.getOrElse(0.0))) - case _ => - None - } - } - SimClusterScores(reasons.toMap) - } - } - - def reasonsContainGeoTarget(reasons: Seq[MagicEventsReason]): Boolean = { - reasons.exists { reason => - val isGeoGraphSource = reason.source.contains(ReasonSource.GeoGraph) - reason.reason match { - case TargetID.PlaceID(_) if isGeoGraphSource => true - case _ => false - } - } - } - - def geoPlaceIdsFromReasons(reasons: Seq[MagicEventsReason]): Set[Long] = { - reasons.flatMap { reason => - val isGeoGraphSource = reason.source.contains(ReasonSource.GeoGraph) - reason.reason match { - case TargetID.PlaceID(PlaceID(id)) if isGeoGraphSource => Some(id) - case _ => None - } - }.toSet - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutSportsUtil.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutSportsUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..fe9c69f64f5846d76f55050f29f81260a230b3ea GIT binary patch literal 38850 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 - val _isGameEnd = game.status.get match { - case SportsEventStatus.Completed(_) => true - case _ => false - } - - val _isHalfTime = game.period.exists { period => - period match { - case SoccerPeriod.Halftime(_) => true - case _ => false - } - } - - val _isOvertime = game.period.exists { period => - period match { - case SoccerPeriod.PreOvertime(_) => true - case _ => false - } - } - - val _isPenaltyKicks = game.period.exists { period => - period match { - case SoccerPeriod.PrePenalty(_) => true - case SoccerPeriod.Penalty(_) => true - case _ => false - } - } - - val _gameMinute = game.gameMinute.map { soccerGameMinute => - game.minutesInInjuryTime match { - case Some(injuryTime) => s"($soccerGameMinute+$injuryTime′)" - case None => s"($soccerGameMinute′)" - } - } - - SoccerGameScore( - score.home, - score.away, - isGameOngoing = score.isGameOngoing, - penaltyKicks = _penaltyKicks, - gameMinute = _gameMinute, - isHalfTime = _isHalfTime, - isOvertime = _isOvertime, - isPenaltyKicks = _isPenaltyKicks, - isGameEnd = _isGameEnd - ) - } - } - - def transformNFLGameScore(game: NflFootballGameLiveUpdate): Option[NflGameScore] = { - require(game.status.isDefined) - - val gameScore = transformToGameScore(game.score, game.status.get) - gameScore.map { score => - val _isGameEnd = game.status.get match { - case SportsEventStatus.Completed(_) => true - case _ => false - } - - val _matchTime = (game.quarter, game.remainingSecondsInQuarter) match { - case (Some(quarter), Some(remainingSeconds)) if remainingSeconds != 0L => - val m = (remainingSeconds / 60) % 60 - val s = remainingSeconds % 60 - val formattedSeconds = "%02d:%02d".format(m, s) - s"(Q$quarter - $formattedSeconds)" - case (Some(quarter), None) => s"(Q$quarter)" - case _ => "" - } - - NflGameScore( - score.home, - score.away, - isGameOngoing = score.isGameOngoing, - isGameEnd = _isGameEnd, - matchTime = _matchTime - ) - } - } - - /** - Takes a score from Strato columns and turns it into an easier to handle structure (GameScore class) - We do this to easily access the home/away scenario for copy setting - */ - def transformToGameScore( - scoreOpt: Option[SportsEventHomeAwayTeamScore], - status: SportsEventStatus - ): Option[GenericGameScore] = { - val isGameOngoing = status match { - case SportsEventStatus.InProgress(_) => true - case SportsEventStatus.Completed(_) => false - case _ => false - } - - val scoresWithTeam = scoreOpt - .map { score => - score.scores.map { score => (score.score, score.participantAlignment, score.participantId) } - }.getOrElse(Seq()) - - val tuple = scoresWithTeam match { - case Seq(teamOne, teamTwo, _*) => Some((teamOne, teamTwo)) - case _ => None - } - tuple.flatMap { - case ((Some(teamOneScore), teamOneAlignment, teamOne), (Some(teamTwoScore), _, teamTwo)) => - teamOneAlignment.flatMap { - case Home(_) => - val home = TeamScore(teamOneScore, teamOne.entityId, teamOne.domainId) - val away = TeamScore(teamTwoScore, teamTwo.entityId, teamTwo.domainId) - Some(GenericGameScore(home, away, isGameOngoing)) - case Away(_) => - val away = TeamScore(teamOneScore, teamOne.entityId, teamOne.domainId) - val home = TeamScore(teamTwoScore, teamTwo.entityId, teamTwo.domainId) - Some(GenericGameScore(home, away, isGameOngoing)) - case _ => None - } - case _ => None - } - } - - def getTeamInfo( - team: TeamScore, - semanticCoreMegadataStore: ReadableStore[SemanticEntityForQuery, EntityMegadata] - ): Future[Option[TeamInfo]] = { - semanticCoreMegadataStore - .get(SemanticEntityForQuery(team.teamDomainId, team.teamEntityId)).map { - _.flatMap { - _.basicMetadata.map { metadata => - TeamInfo( - name = metadata.name, - twitterUserId = metadata.twitter.flatMap(_.preferredTwitterUserId)) - } - } - } - } - - def getNFLReadableName(name: String): String = { - val teamNames = - Seq("") - teamNames.find(teamName => name.contains(teamName)).getOrElse(name) - } - - def getSoccerIbisMap(game: SoccerGameScore): Map[String, String] = { - val gameMinuteMap = game.gameMinute - .map { gameMinute => Map("match_time" -> gameMinute) } - .getOrElse(Map.empty) - - val updateTypeMap = { - if (game.isGameEnd) Map("is_game_end" -> "true") - else if (game.isHalfTime) Map("is_half_time" -> "true") - else if (game.isOvertime) Map("is_overtime" -> "true") - else if (game.isPenaltyKicks) Map("is_penalty_kicks" -> "true") - else Map("is_score_update" -> "true") - } - - val awayScore = game match { - case SoccerGameScore(_, away, _, None, _, _, _, _, _) => - away.score.toString - case SoccerGameScore(_, away, _, Some(penaltyKick), _, _, _, _, _) => - s"${away.score} (${penaltyKick.away.score}) " - case _ => "" - } - - val homeScore = game match { - case SoccerGameScore(home, _, _, None, _, _, _, _, _) => - home.score.toString - case SoccerGameScore(home, _, _, Some(penaltyKick), _, _, _, _, _) => - s"${home.score} (${penaltyKick.home.score}) " - case _ => "" - } - - val scoresMap = Map( - "away_score" -> awayScore, - "home_score" -> homeScore, - ) - - gameType(SportGameEnum.Soccer) ++ updateTypeMap ++ gameMinuteMap ++ scoresMap - } - - def getNflIbisMap(game: NflGameScore): Map[String, String] = { - val gameMinuteMap = Map("match_time" -> game.matchTime) - - val updateTypeMap = { - if (game.isGameEnd) Map("is_game_end" -> "true") - else Map("is_score_update" -> "true") - } - - val awayScore = game.away.score - val homeScore = game.home.score - - val scoresMap = Map( - "away_score" -> awayScore.toString, - "home_score" -> homeScore.toString, - ) - - gameType(SportGameEnum.Nfl) ++ updateTypeMap ++ gameMinuteMap ++ scoresMap - } - - private def gameType(game: SportGameEnum.Value): Map[String, String] = { - game match { - case SportGameEnum.Soccer => Map("is_soccer_game" -> "true") - case SportGameEnum.Nfl => Map("is_nfl_game" -> "true") - case _ => Map.empty - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutTargetingPredicateWrappersForCandidate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutTargetingPredicateWrappersForCandidate.docx new file mode 100644 index 0000000000000000000000000000000000000000..7578a379ec00ea74f1114afc0c4a5a1ca63b62ba GIT binary patch literal 37993 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutTargetingPredicateWrappersForCandidate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutTargetingPredicateWrappersForCandidate.scala deleted file mode 100644 index 758c9ef34..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/magic_fanout/MagicFanoutTargetingPredicateWrappersForCandidate.scala +++ /dev/null @@ -1,133 +0,0 @@ -package com.twitter.frigate.pushservice.predicate.magic_fanout - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.store.interests.InterestsLookupRequestWithContext -import com.twitter.frigate.common.util.FeatureSwitchParams -import com.twitter.frigate.common.util.MagicFanoutTargetingPredicatesEnum -import com.twitter.frigate.common.util.MagicFanoutTargetingPredicatesEnum.MagicFanoutTargetingPredicatesEnum -import com.twitter.frigate.pushservice.model.MagicFanoutEventPushCandidate -import com.twitter.frigate.pushservice.config.Config -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.interests.thriftscala.UserInterests -import com.twitter.storehaus.ReadableStore -import com.twitter.timelines.configapi.FSEnumParam - -object MagicFanoutTargetingPredicateWrappersForCandidate { - - /** - * Combine Prod and Experimental Targeting predicate logic - * @return: NamedPredicate[MagicFanoutNewsEventPushCandidate] - */ - def magicFanoutTargetingPredicate( - stats: StatsReceiver, - config: Config - ): NamedPredicate[MagicFanoutEventPushCandidate] = { - val name = "magic_fanout_targeting_predicate" - Predicate - .fromAsync { candidate: MagicFanoutEventPushCandidate => - val mfTargetingPredicateParam = getTargetingPredicateParams(candidate) - val mfTargetingPredicate = MagicFanoutTargetingPredicateMapForCandidate - .apply(config) - .get(candidate.target.params(mfTargetingPredicateParam)) - mfTargetingPredicate match { - case Some(predicate) => - predicate.apply(Seq(candidate)).map(_.head) - case None => - throw new Exception( - s"MFTargetingPredicateMap doesnt contain value for TargetingParam: ${FeatureSwitchParams.MFTargetingPredicate}") - } - } - .withStats(stats.scope(name)) - .withName(name) - } - - private def getTargetingPredicateParams( - candidate: MagicFanoutEventPushCandidate - ): FSEnumParam[MagicFanoutTargetingPredicatesEnum.type] = { - if (candidate.commonRecType == CommonRecommendationType.MagicFanoutSportsEvent) { - FeatureSwitchParams.MFCricketTargetingPredicate - } else FeatureSwitchParams.MFTargetingPredicate - } - - /** - * SimCluster and ERG and Topic Follows Targeting Predicate - */ - def simClusterErgTopicFollowsTargetingPredicate( - implicit stats: StatsReceiver, - interestsLookupStore: ReadableStore[InterestsLookupRequestWithContext, UserInterests] - ): NamedPredicate[MagicFanoutEventPushCandidate] = { - simClusterErgTargetingPredicate - .or(MagicFanoutPredicatesForCandidate.magicFanoutTopicFollowsTargetingPredicate) - .withName("sim_cluster_erg_topic_follows_targeting") - } - - /** - * SimCluster and ERG and Topic Follows Targeting Predicate - */ - def simClusterErgTopicFollowsUserFollowsTargetingPredicate( - implicit stats: StatsReceiver, - interestsLookupStore: ReadableStore[InterestsLookupRequestWithContext, UserInterests] - ): NamedPredicate[MagicFanoutEventPushCandidate] = { - simClusterErgTopicFollowsTargetingPredicate - .or( - MagicFanoutPredicatesForCandidate.followRankThreshold( - PushFeatureSwitchParams.MagicFanoutRealgraphRankThreshold)) - .withName("sim_cluster_erg_topic_follows_user_follows_targeting") - } - - /** - * SimCluster and ERG Targeting Predicate - */ - def simClusterErgTargetingPredicate( - implicit stats: StatsReceiver - ): NamedPredicate[MagicFanoutEventPushCandidate] = { - MagicFanoutPredicatesForCandidate.magicFanoutSimClusterTargetingPredicate - .or(MagicFanoutPredicatesForCandidate.magicFanoutErgInterestRankThresholdPredicate) - .withName("sim_cluster_erg_targeting") - } -} - -/** - * Object to initalze and get predicate map - */ -object MagicFanoutTargetingPredicateMapForCandidate { - - /** - * Called from the Config.scala at the time of server initialization - * @param statsReceiver: implict stats receiver - * @return Map[MagicFanoutTargetingPredicatesEnum, NamedPredicate[MagicFanoutNewsEventPushCandidate]] - */ - def apply( - config: Config - ): Map[MagicFanoutTargetingPredicatesEnum, NamedPredicate[MagicFanoutEventPushCandidate]] = { - Map( - MagicFanoutTargetingPredicatesEnum.SimClusterAndERGAndTopicFollows -> MagicFanoutTargetingPredicateWrappersForCandidate - .simClusterErgTopicFollowsTargetingPredicate( - config.statsReceiver, - config.interestsWithLookupContextStore), - MagicFanoutTargetingPredicatesEnum.SimClusterAndERG -> MagicFanoutTargetingPredicateWrappersForCandidate - .simClusterErgTargetingPredicate(config.statsReceiver), - MagicFanoutTargetingPredicatesEnum.SimCluster -> MagicFanoutPredicatesForCandidate - .magicFanoutSimClusterTargetingPredicate(config.statsReceiver), - MagicFanoutTargetingPredicatesEnum.ERG -> MagicFanoutPredicatesForCandidate - .magicFanoutErgInterestRankThresholdPredicate(config.statsReceiver), - MagicFanoutTargetingPredicatesEnum.TopicFollows -> MagicFanoutPredicatesForCandidate - .magicFanoutTopicFollowsTargetingPredicate( - config.statsReceiver, - config.interestsWithLookupContextStore), - MagicFanoutTargetingPredicatesEnum.UserFollows -> MagicFanoutPredicatesForCandidate - .followRankThreshold( - PushFeatureSwitchParams.MagicFanoutRealgraphRankThreshold - )(config.statsReceiver), - MagicFanoutTargetingPredicatesEnum.SimClusterAndERGAndTopicFollowsAndUserFollows -> - MagicFanoutTargetingPredicateWrappersForCandidate - .simClusterErgTopicFollowsUserFollowsTargetingPredicate( - config.statsReceiver, - config.interestsWithLookupContextStore - ) - ) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/CRTBasedNtabCaretClickFatiguePredicates.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/CRTBasedNtabCaretClickFatiguePredicates.docx new file mode 100644 index 0000000000000000000000000000000000000000..2a26ad2d91c34bc6147dcf12ce58e3ec2f11a06e GIT binary patch literal 42150 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/CRTBasedNtabCaretClickFatiguePredicates.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/CRTBasedNtabCaretClickFatiguePredicates.scala deleted file mode 100644 index 704f300a5..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/CRTBasedNtabCaretClickFatiguePredicates.scala +++ /dev/null @@ -1,973 +0,0 @@ -package com.twitter.frigate.pushservice.predicate.ntab_caret_fatigue - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.notificationservice.thriftscala.GenericType -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.notificationservice.genericfeedbackstore.FeedbackPromptValue -import com.twitter.hermit.predicate.Predicate -import com.twitter.frigate.common.base.Candidate -import com.twitter.frigate.common.base.RecommendationType -import com.twitter.frigate.common.base.TargetInfo -import com.twitter.frigate.thriftscala.CommonRecommendationType -import com.twitter.frigate.thriftscala.SeeLessOftenType -import com.twitter.frigate.common.history.History -import com.twitter.frigate.common.predicate.FrigateHistoryFatiguePredicate.TimeSeries -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.frigate.common.predicate.ntab_caret_fatigue.NtabCaretClickFatiguePredicateHelper -import com.twitter.frigate.pushservice.predicate.CaretFeedbackHistoryFilter -import com.twitter.notificationservice.thriftscala.CaretFeedbackDetails -import com.twitter.util.Duration -import com.twitter.util.Future -import com.twitter.frigate.common.predicate.FatiguePredicate -import com.twitter.frigate.pushservice.util.PushCapUtil -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.util.PushDeviceUtil - -object CRTBasedNtabCaretClickFatiguePredicates { - - private val MagicRecsCategory = "MagicRecs" - - private val HighQualityRefreshableTypes: Set[Option[String]] = Set( - Some("MagicRecHighQualityTweet"), - ) - - private def getUserStateWeight(target: Target): Future[Double] = { - PushDeviceUtil.isNtabOnlyEligible.map { - case true => - target.params(PushFeatureSwitchParams.SeeLessOftenNtabOnlyNotifUserPushCapWeight) - case _ => 1.0 - } - } - - def crtToSeeLessOftenType( - crt: CommonRecommendationType, - candidate: Candidate - with RecommendationType - with TargetInfo[ - Target - ], - ): SeeLessOftenType = { - val crtToSeeLessOftenTypeMap: Map[CommonRecommendationType, SeeLessOftenType] = { - RecTypes.f1FirstDegreeTypes.map((_, SeeLessOftenType.F1Type)).toMap - } - - crtToSeeLessOftenTypeMap.getOrElse(crt, SeeLessOftenType.OtherTypes) - } - - def genericTypeToSeeLessOftenType( - genericType: GenericType, - candidate: Candidate - with RecommendationType - with TargetInfo[ - Target - ] - ): SeeLessOftenType = { - val genericTypeToSeeLessOftenTypeMap: Map[GenericType, SeeLessOftenType] = { - Map(GenericType.MagicRecFirstDegreeTweetRecent -> SeeLessOftenType.F1Type) - } - - genericTypeToSeeLessOftenTypeMap.getOrElse(genericType, SeeLessOftenType.OtherTypes) - } - - def getWeightForCaretFeedback( - dislikedType: SeeLessOftenType, - candidate: Candidate - with RecommendationType - with TargetInfo[ - Target - ] - ): Double = { - def getWeightFromDislikedAndCurrentType( - dislikedType: SeeLessOftenType, - currentType: SeeLessOftenType - ): Double = { - val weightMap: Map[(SeeLessOftenType, SeeLessOftenType), Double] = { - - Map( - (SeeLessOftenType.F1Type, SeeLessOftenType.F1Type) -> candidate.target.params( - PushFeatureSwitchParams.SeeLessOftenF1TriggerF1PushCapWeight), - (SeeLessOftenType.OtherTypes, SeeLessOftenType.OtherTypes) -> candidate.target.params( - PushFeatureSwitchParams.SeeLessOftenNonF1TriggerNonF1PushCapWeight), - (SeeLessOftenType.F1Type, SeeLessOftenType.OtherTypes) -> candidate.target.params( - PushFeatureSwitchParams.SeeLessOftenF1TriggerNonF1PushCapWeight), - (SeeLessOftenType.OtherTypes, SeeLessOftenType.F1Type) -> candidate.target.params( - PushFeatureSwitchParams.SeeLessOftenNonF1TriggerF1PushCapWeight) - ) - } - - weightMap - .getOrElse( - (dislikedType, currentType), - candidate.target.params(PushFeatureSwitchParams.SeeLessOftenDefaultPushCapWeight)) - } - - getWeightFromDislikedAndCurrentType( - dislikedType, - crtToSeeLessOftenType(candidate.commonRecType, candidate)) - } - - private def isOutsideCrtBasedNtabCaretClickFatiguePeriodContFn( - candidate: Candidate - with RecommendationType - with TargetInfo[ - Target - ], - history: History, - feedbackDetails: Seq[CaretFeedbackDetails], - filterHistory: TimeSeries => TimeSeries = - FatiguePredicate.recTypesOnlyFilter(RecTypes.sharedNTabCaretFatigueTypes), - filterCaretFeedbackHistory: Target => Seq[ - CaretFeedbackDetails - ] => Seq[CaretFeedbackDetails] = - CaretFeedbackHistoryFilter.caretFeedbackHistoryFilter(Seq(MagicRecsCategory)), - knobs: Seq[Double], - pushCapKnobs: Seq[Double], - powerKnobs: Seq[Double], - f1Weight: Double, - nonF1Weight: Double, - defaultPushCap: Int, - stats: StatsReceiver, - tripHqTweetWeight: Double = 0.0, - ): Boolean = { - val filteredFeedbackDetails = filterCaretFeedbackHistory(candidate.target)(feedbackDetails) - val weight = { - if (RecTypes.HighQualityTweetTypes.contains( - candidate.commonRecType) && (tripHqTweetWeight != 0)) { - tripHqTweetWeight - } else if (RecTypes.isF1Type(candidate.commonRecType)) { - f1Weight - } else { - nonF1Weight - } - } - val filteredHistory = History(filterHistory(history.history.toSeq).toMap) - isOutsideFatiguePeriod( - filteredHistory, - filteredFeedbackDetails, - Seq(), - ContinuousFunctionParam( - knobs, - pushCapKnobs, - powerKnobs, - weight, - defaultPushCap - ), - stats.scope( - if (RecTypes.isF1Type(candidate.commonRecType)) "mr_ntab_dislike_f1_candidate_fn" - else if (RecTypes.HighQualityTweetTypes.contains(candidate.commonRecType)) - "mr_ntab_dislike_high_quality_candidate_fn" - else "mr_ntab_dislike_nonf1_candidate_fn") - ) - } - - private def isOutsideFatiguePeriod( - history: History, - feedbackDetails: Seq[CaretFeedbackDetails], - feedbacks: Seq[FeedbackModel], - param: ContinuousFunctionParam, - stats: StatsReceiver - ): Boolean = { - val fatiguePeriod: Duration = - NtabCaretClickFatigueUtils.durationToFilterForFeedback( - feedbackDetails, - feedbacks, - param, - param.defaultValue, - stats - ) - - val hasRecentSent = - NtabCaretClickFatiguePredicateHelper.hasRecentSend(history, fatiguePeriod) - !hasRecentSent - - } - - def genericCRTBasedNtabCaretClickFnFatiguePredicate[ - Cand <: Candidate with RecommendationType with TargetInfo[ - Target - ] - ]( - filterHistory: TimeSeries => TimeSeries = - FatiguePredicate.recTypesOnlyFilter(RecTypes.sharedNTabCaretFatigueTypes), - filterCaretFeedbackHistory: Target => Seq[ - CaretFeedbackDetails - ] => Seq[CaretFeedbackDetails] = CaretFeedbackHistoryFilter - .caretFeedbackHistoryFilter(Seq(MagicRecsCategory)), - filterInlineFeedbackHistory: Seq[FeedbackModel] => Seq[FeedbackModel] = - NtabCaretClickFatigueUtils.feedbackModelFilterByCRT(RecTypes.sharedNTabCaretFatigueTypes) - )( - implicit stats: StatsReceiver - ): NamedPredicate[Cand] = { - val predicateName = "generic_crt_based_ntab_dislike_fatigue_fn" - Predicate - .fromAsync[Cand] { cand: Cand => - { - if (!cand.target.params(PushFeatureSwitchParams.EnableGenericCRTBasedFatiguePredicate)) { - Future.True - } else { - val scopedStats = stats.scope(predicateName) - val totalRequests = scopedStats.counter("mr_ntab_dislike_total") - val total90Day = - scopedStats.counter("mr_ntab_dislike_90day_dislike") - val totalDisabled = - scopedStats.counter("mr_ntab_dislike_not_90day_dislike") - val totalSuccess = scopedStats.counter("mr_ntab_dislike_success") - val totalFiltered = scopedStats.counter("mr_ntab_dislike_filtered") - val totalWithHistory = - scopedStats.counter("mr_ntab_dislike_with_history") - val totalWithoutHistory = - scopedStats.counter("mr_ntab_dislike_without_history") - totalRequests.incr() - - Future - .join( - cand.target.history, - cand.target.caretFeedbacks, - cand.target.dynamicPushcap, - cand.target.optoutAdjustedPushcap, - PushCapUtil.getDefaultPushCap(cand.target), - getUserStateWeight(cand.target) - ).map { - case ( - history, - Some(feedbackDetails), - dynamicPushcapOpt, - optoutAdjustedPushcapOpt, - defaultPushCap, - userStateWeight) => { - totalWithHistory.incr() - - val feedbackDetailsDeduped = - NtabCaretClickFatiguePredicateHelper.dedupFeedbackDetails( - filterCaretFeedbackHistory(cand.target)(feedbackDetails), - stats - ) - - val pushCap: Int = (dynamicPushcapOpt, optoutAdjustedPushcapOpt) match { - case (_, Some(optoutAdjustedPushcap)) => optoutAdjustedPushcap - case (Some(pushcapInfo), _) => pushcapInfo.pushcap - case _ => defaultPushCap - } - val filteredHistory = History(filterHistory(history.history.toSeq).toMap) - - val hasUserDislikeInLast90Days = - NtabCaretClickFatigueUtils.hasUserDislikeInLast90Days(feedbackDetailsDeduped) - val isF1TriggerFatigueEnabled = cand.target - .params(PushFeatureSwitchParams.EnableContFnF1TriggerSeeLessOftenFatigue) - val isNonF1TriggerFatigueEnabled = cand.target.params( - PushFeatureSwitchParams.EnableContFnNonF1TriggerSeeLessOftenFatigue) - - val isOutisdeSeeLessOftenFatigue = - if (hasUserDislikeInLast90Days && (isF1TriggerFatigueEnabled || isNonF1TriggerFatigueEnabled)) { - total90Day.incr() - - val feedbackDetailsGroupedBySeeLessOftenType: Map[Option[ - SeeLessOftenType - ], Seq[ - CaretFeedbackDetails - ]] = feedbackDetails.groupBy(feedbackDetail => - feedbackDetail.genericNotificationMetadata.map(x => - genericTypeToSeeLessOftenType(x.genericType, cand))) - - val isOutsideFatiguePeriodSeq = - for (elem <- feedbackDetailsGroupedBySeeLessOftenType if elem._1.isDefined) - yield { - val dislikedSeeLessOftenType: SeeLessOftenType = elem._1.get - val seqCaretFeedbackDetails: Seq[CaretFeedbackDetails] = elem._2 - - val weight = getWeightForCaretFeedback( - dislikedSeeLessOftenType, - cand) * userStateWeight - - if (isOutsideFatiguePeriod( - history = filteredHistory, - feedbackDetails = seqCaretFeedbackDetails, - feedbacks = Seq(), - param = ContinuousFunctionParam( - knobs = cand.target - .params(PushFeatureSwitchParams.SeeLessOftenListOfDayKnobs), - knobValues = cand.target - .params( - PushFeatureSwitchParams.SeeLessOftenListOfPushCapWeightKnobs).map( - _ * pushCap), - powers = cand.target - .params(PushFeatureSwitchParams.SeeLessOftenListOfPowerKnobs), - weight = weight, - defaultValue = pushCap - ), - scopedStats - )) { - true - } else { - false - } - } - - isOutsideFatiguePeriodSeq.forall(identity) - } else { - totalDisabled.incr() - true - } - - if (isOutisdeSeeLessOftenFatigue) { - totalSuccess.incr() - } else totalFiltered.incr() - - isOutisdeSeeLessOftenFatigue - } - - case _ => - totalSuccess.incr() - totalWithoutHistory.incr() - true - } - } - } - }.withStats(stats.scope(predicateName)) - .withName(predicateName) - } - - def f1TriggeredCRTBasedNtabCaretClickFnFatiguePredicate[ - Cand <: Candidate with RecommendationType with TargetInfo[ - Target - ] - ]( - filterHistory: TimeSeries => TimeSeries = - FatiguePredicate.recTypesOnlyFilter(RecTypes.sharedNTabCaretFatigueTypes), - filterCaretFeedbackHistory: Target => Seq[ - CaretFeedbackDetails - ] => Seq[CaretFeedbackDetails] = CaretFeedbackHistoryFilter - .caretFeedbackHistoryFilter(Seq(MagicRecsCategory)), - filterInlineFeedbackHistory: Seq[FeedbackModel] => Seq[FeedbackModel] = - NtabCaretClickFatigueUtils.feedbackModelFilterByCRT(RecTypes.sharedNTabCaretFatigueTypes) - )( - implicit stats: StatsReceiver - ): NamedPredicate[Cand] = { - val predicateName = "f1_triggered_crt_based_ntab_dislike_fatigue_fn" - Predicate - .fromAsync[Cand] { cand: Cand => - { - val scopedStats = stats.scope(predicateName) - val totalRequests = scopedStats.counter("mr_ntab_dislike_total") - val total90Day = - scopedStats.counter("mr_ntab_dislike_90day_dislike") - val totalDisabled = - scopedStats.counter("mr_ntab_dislike_not_90day_dislike") - val totalSuccess = scopedStats.counter("mr_ntab_dislike_success") - val totalFiltered = scopedStats.counter("mr_ntab_dislike_filtered") - val totalWithHistory = - scopedStats.counter("mr_ntab_dislike_with_history") - val totalWithoutHistory = - scopedStats.counter("mr_ntab_dislike_without_history") - totalRequests.incr() - - Future - .join( - cand.target.history, - cand.target.caretFeedbacks, - cand.target.dynamicPushcap, - cand.target.optoutAdjustedPushcap, - cand.target.notificationFeedbacks, - PushCapUtil.getDefaultPushCap(cand.target), - getUserStateWeight(cand.target) - ).map { - case ( - history, - Some(feedbackDetails), - dynamicPushcapOpt, - optoutAdjustedPushcapOpt, - Some(feedbacks), - defaultPushCap, - userStateWeight) => - totalWithHistory.incr() - - val feedbackDetailsDeduped = - NtabCaretClickFatiguePredicateHelper.dedupFeedbackDetails( - filterCaretFeedbackHistory(cand.target)(feedbackDetails), - stats - ) - - val pushCap: Int = (dynamicPushcapOpt, optoutAdjustedPushcapOpt) match { - case (_, Some(optoutAdjustedPushcap)) => optoutAdjustedPushcap - case (Some(pushcapInfo), _) => pushcapInfo.pushcap - case _ => defaultPushCap - } - val filteredHistory = History(filterHistory(history.history.toSeq).toMap) - - val isOutsideInlineDislikeFatigue = - if (cand.target - .params(PushFeatureSwitchParams.EnableContFnF1TriggerInlineFeedbackFatigue)) { - val weight = - if (RecTypes.isF1Type(cand.commonRecType)) { - cand.target - .params(PushFeatureSwitchParams.InlineFeedbackF1TriggerF1PushCapWeight) - } else { - cand.target - .params(PushFeatureSwitchParams.InlineFeedbackF1TriggerNonF1PushCapWeight) - } - - val inlineFeedbackFatigueParam = ContinuousFunctionParam( - cand.target - .params(PushFeatureSwitchParams.InlineFeedbackListOfDayKnobs), - cand.target - .params(PushFeatureSwitchParams.InlineFeedbackListOfPushCapWeightKnobs) - .map(_ * pushCap), - cand.target - .params(PushFeatureSwitchParams.InlineFeedbackListOfPowerKnobs), - weight, - pushCap - ) - - isInlineDislikeOutsideFatiguePeriod( - cand, - feedbacks - .collect { - case feedbackPromptValue: FeedbackPromptValue => - InlineFeedbackModel(feedbackPromptValue, None) - }, - filteredHistory, - Seq( - filterInlineFeedbackHistory, - NtabCaretClickFatigueUtils.feedbackModelFilterByCRT( - RecTypes.f1FirstDegreeTypes)), - inlineFeedbackFatigueParam, - scopedStats - ) - } else true - - lazy val isOutsidePromptDislikeFatigue = - if (cand.target - .params(PushFeatureSwitchParams.EnableContFnF1TriggerPromptFeedbackFatigue)) { - val weight = - if (RecTypes.isF1Type(cand.commonRecType)) { - cand.target - .params(PushFeatureSwitchParams.PromptFeedbackF1TriggerF1PushCapWeight) - } else { - cand.target - .params(PushFeatureSwitchParams.PromptFeedbackF1TriggerNonF1PushCapWeight) - } - - val promptFeedbackFatigueParam = ContinuousFunctionParam( - cand.target - .params(PushFeatureSwitchParams.PromptFeedbackListOfDayKnobs), - cand.target - .params(PushFeatureSwitchParams.PromptFeedbackListOfPushCapWeightKnobs) - .map(_ * pushCap), - cand.target - .params(PushFeatureSwitchParams.PromptFeedbackListOfPowerKnobs), - weight, - pushCap - ) - - isPromptDislikeOutsideFatiguePeriod( - feedbacks - .collect { - case feedbackPromptValue: FeedbackPromptValue => - PromptFeedbackModel(feedbackPromptValue, None) - }, - filteredHistory, - Seq( - filterInlineFeedbackHistory, - NtabCaretClickFatigueUtils.feedbackModelFilterByCRT( - RecTypes.f1FirstDegreeTypes)), - promptFeedbackFatigueParam, - scopedStats - ) - } else true - - isOutsideInlineDislikeFatigue && isOutsidePromptDislikeFatigue - - case _ => - totalSuccess.incr() - totalWithoutHistory.incr() - true - } - } - }.withStats(stats.scope(predicateName)) - .withName(predicateName) - } - - def nonF1TriggeredCRTBasedNtabCaretClickFnFatiguePredicate[ - Cand <: Candidate with RecommendationType with TargetInfo[ - Target - ] - ]( - filterHistory: TimeSeries => TimeSeries = - FatiguePredicate.recTypesOnlyFilter(RecTypes.sharedNTabCaretFatigueTypes), - filterCaretFeedbackHistory: Target => Seq[ - CaretFeedbackDetails - ] => Seq[CaretFeedbackDetails] = CaretFeedbackHistoryFilter - .caretFeedbackHistoryFilter(Seq(MagicRecsCategory)), - filterInlineFeedbackHistory: Seq[FeedbackModel] => Seq[FeedbackModel] = - NtabCaretClickFatigueUtils.feedbackModelFilterByCRT(RecTypes.sharedNTabCaretFatigueTypes) - )( - implicit stats: StatsReceiver - ): NamedPredicate[Cand] = { - val predicateName = "non_f1_triggered_crt_based_ntab_dislike_fatigue_fn" - Predicate - .fromAsync[Cand] { cand: Cand => - { - val scopedStats = stats.scope(predicateName) - val totalRequests = scopedStats.counter("mr_ntab_dislike_total") - val total90Day = - scopedStats.counter("mr_ntab_dislike_90day_dislike") - val totalDisabled = - scopedStats.counter("mr_ntab_dislike_not_90day_dislike") - val totalSuccess = scopedStats.counter("mr_ntab_dislike_success") - val totalFiltered = scopedStats.counter("mr_ntab_dislike_filtered") - val totalWithHistory = - scopedStats.counter("mr_ntab_dislike_with_history") - val totalWithoutHistory = - scopedStats.counter("mr_ntab_dislike_without_history") - val totalFeedbackSuccess = scopedStats.counter("mr_total_feedback_success") - totalRequests.incr() - - Future - .join( - cand.target.history, - cand.target.caretFeedbacks, - cand.target.dynamicPushcap, - cand.target.optoutAdjustedPushcap, - cand.target.notificationFeedbacks, - PushCapUtil.getDefaultPushCap(cand.target), - getUserStateWeight(cand.target), - ).map { - case ( - history, - Some(feedbackDetails), - dynamicPushcapOpt, - optoutAdjustedPushcapOpt, - Some(feedbacks), - defaultPushCap, - userStateWeight) => - totalWithHistory.incr() - - val filteredfeedbackDetails = - if (cand.target.params( - PushFeatureSwitchParams.AdjustTripHqTweetTriggeredNtabCaretClickFatigue)) { - val refreshableTypeFilter = CaretFeedbackHistoryFilter - .caretFeedbackHistoryFilterByRefreshableTypeDenyList( - HighQualityRefreshableTypes) - refreshableTypeFilter(cand.target)(feedbackDetails) - } else { - feedbackDetails - } - - val feedbackDetailsDeduped = - NtabCaretClickFatiguePredicateHelper.dedupFeedbackDetails( - filterCaretFeedbackHistory(cand.target)(filteredfeedbackDetails), - stats - ) - - val pushCap: Int = (dynamicPushcapOpt, optoutAdjustedPushcapOpt) match { - case (_, Some(optoutAdjustedPushcap)) => optoutAdjustedPushcap - case (Some(pushcapInfo), _) => pushcapInfo.pushcap - case _ => defaultPushCap - } - val filteredHistory = History(filterHistory(history.history.toSeq).toMap) - - val isOutsideInlineDislikeFatigue = - if (cand.target - .params( - PushFeatureSwitchParams.EnableContFnNonF1TriggerInlineFeedbackFatigue)) { - val weight = - if (RecTypes.isF1Type(cand.commonRecType)) - cand.target - .params(PushFeatureSwitchParams.InlineFeedbackNonF1TriggerF1PushCapWeight) - else - cand.target - .params( - PushFeatureSwitchParams.InlineFeedbackNonF1TriggerNonF1PushCapWeight) - - val inlineFeedbackFatigueParam = ContinuousFunctionParam( - cand.target - .params(PushFeatureSwitchParams.InlineFeedbackListOfDayKnobs), - cand.target - .params(PushFeatureSwitchParams.InlineFeedbackListOfPushCapWeightKnobs) - .map(_ * pushCap), - cand.target - .params(PushFeatureSwitchParams.InlineFeedbackListOfPowerKnobs), - weight, - pushCap - ) - - val excludedCRTs: Set[CommonRecommendationType] = - if (cand.target.params( - PushFeatureSwitchParams.AdjustTripHqTweetTriggeredNtabCaretClickFatigue)) { - RecTypes.f1FirstDegreeTypes ++ RecTypes.HighQualityTweetTypes - } else { - RecTypes.f1FirstDegreeTypes - } - - isInlineDislikeOutsideFatiguePeriod( - cand, - feedbacks - .collect { - case feedbackPromptValue: FeedbackPromptValue => - InlineFeedbackModel(feedbackPromptValue, None) - }, - filteredHistory, - Seq( - filterInlineFeedbackHistory, - NtabCaretClickFatigueUtils.feedbackModelExcludeCRT(excludedCRTs)), - inlineFeedbackFatigueParam, - scopedStats - ) - } else true - - lazy val isOutsidePromptDislikeFatigue = - if (cand.target - .params( - PushFeatureSwitchParams.EnableContFnNonF1TriggerPromptFeedbackFatigue)) { - val weight = - if (RecTypes.isF1Type(cand.commonRecType)) - cand.target - .params(PushFeatureSwitchParams.PromptFeedbackNonF1TriggerF1PushCapWeight) - else - cand.target - .params( - PushFeatureSwitchParams.PromptFeedbackNonF1TriggerNonF1PushCapWeight) - - val promptFeedbackFatigueParam = ContinuousFunctionParam( - cand.target - .params(PushFeatureSwitchParams.PromptFeedbackListOfDayKnobs), - cand.target - .params(PushFeatureSwitchParams.PromptFeedbackListOfPushCapWeightKnobs) - .map(_ * pushCap), - cand.target - .params(PushFeatureSwitchParams.PromptFeedbackListOfPowerKnobs), - weight, - pushCap - ) - - isPromptDislikeOutsideFatiguePeriod( - feedbacks - .collect { - case feedbackPromptValue: FeedbackPromptValue => - PromptFeedbackModel(feedbackPromptValue, None) - }, - filteredHistory, - Seq( - filterInlineFeedbackHistory, - NtabCaretClickFatigueUtils.feedbackModelExcludeCRT( - RecTypes.f1FirstDegreeTypes)), - promptFeedbackFatigueParam, - scopedStats - ) - } else true - - isOutsideInlineDislikeFatigue && isOutsidePromptDislikeFatigue - case _ => - totalFeedbackSuccess.incr() - totalWithoutHistory.incr() - true - } - } - }.withStats(stats.scope(predicateName)) - .withName(predicateName) - } - - def tripHqTweetTriggeredCRTBasedNtabCaretClickFnFatiguePredicate[ - Cand <: Candidate with RecommendationType with TargetInfo[ - Target - ] - ]( - filterHistory: TimeSeries => TimeSeries = - FatiguePredicate.recTypesOnlyFilter(RecTypes.sharedNTabCaretFatigueTypes), - filterCaretFeedbackHistory: Target => Seq[ - CaretFeedbackDetails - ] => Seq[CaretFeedbackDetails] = CaretFeedbackHistoryFilter - .caretFeedbackHistoryFilter(Seq(MagicRecsCategory)), - filterInlineFeedbackHistory: Seq[FeedbackModel] => Seq[FeedbackModel] = - NtabCaretClickFatigueUtils.feedbackModelFilterByCRT(RecTypes.sharedNTabCaretFatigueTypes) - )( - implicit stats: StatsReceiver - ): NamedPredicate[Cand] = { - val predicateName = "trip_hq_tweet_triggered_crt_based_ntab_dislike_fatigue_fn" - Predicate - .fromAsync[Cand] { cand: Cand => - { - val scopedStats = stats.scope(predicateName) - val totalRequests = scopedStats.counter("mr_ntab_dislike_total") - val total90Day = - scopedStats.counter("mr_ntab_dislike_90day_dislike") - val totalDisabled = - scopedStats.counter("mr_ntab_dislike_not_90day_dislike") - val totalSuccess = scopedStats.counter("mr_ntab_dislike_success") - val totalFiltered = scopedStats.counter("mr_ntab_dislike_filtered") - val totalWithHistory = - scopedStats.counter("mr_ntab_dislike_with_history") - val totalWithoutHistory = - scopedStats.counter("mr_ntab_dislike_without_history") - val totalFeedbackSuccess = scopedStats.counter("mr_total_feedback_success") - totalRequests.incr() - - Future - .join( - cand.target.history, - cand.target.caretFeedbacks, - cand.target.dynamicPushcap, - cand.target.optoutAdjustedPushcap, - cand.target.notificationFeedbacks, - PushCapUtil.getDefaultPushCap(cand.target), - getUserStateWeight(cand.target), - ).map { - case ( - history, - Some(feedbackDetails), - dynamicPushcapOpt, - optoutAdjustedPushcapOpt, - Some(feedbacks), - defaultPushCap, - userStateWeight) => - totalWithHistory.incr() - if (cand.target.params( - PushFeatureSwitchParams.AdjustTripHqTweetTriggeredNtabCaretClickFatigue)) { - - val refreshableTypeFilter = CaretFeedbackHistoryFilter - .caretFeedbackHistoryFilterByRefreshableType(HighQualityRefreshableTypes) - val filteredfeedbackDetails = refreshableTypeFilter(cand.target)(feedbackDetails) - - val feedbackDetailsDeduped = - NtabCaretClickFatiguePredicateHelper.dedupFeedbackDetails( - filterCaretFeedbackHistory(cand.target)(filteredfeedbackDetails), - stats - ) - - val pushCap: Int = (dynamicPushcapOpt, optoutAdjustedPushcapOpt) match { - case (_, Some(optoutAdjustedPushcap)) => optoutAdjustedPushcap - case (Some(pushcapInfo), _) => pushcapInfo.pushcap - case _ => defaultPushCap - } - val filteredHistory = History(filterHistory(history.history.toSeq).toMap) - - val isOutsideInlineDislikeFatigue = - if (cand.target - .params( - PushFeatureSwitchParams.EnableContFnNonF1TriggerInlineFeedbackFatigue)) { - val weight = { - if (RecTypes.HighQualityTweetTypes.contains(cand.commonRecType)) { - cand.target - .params( - PushFeatureSwitchParams.InlineFeedbackNonF1TriggerNonF1PushCapWeight) - } else { - cand.target - .params( - PushFeatureSwitchParams.InlineFeedbackNonF1TriggerF1PushCapWeight) - } - } - - val inlineFeedbackFatigueParam = ContinuousFunctionParam( - cand.target - .params(PushFeatureSwitchParams.InlineFeedbackListOfDayKnobs), - cand.target - .params(PushFeatureSwitchParams.InlineFeedbackListOfPushCapWeightKnobs) - .map(_ * pushCap), - cand.target - .params(PushFeatureSwitchParams.InlineFeedbackListOfPowerKnobs), - weight, - pushCap - ) - - val includedCRTs: Set[CommonRecommendationType] = - RecTypes.HighQualityTweetTypes - - isInlineDislikeOutsideFatiguePeriod( - cand, - feedbacks - .collect { - case feedbackPromptValue: FeedbackPromptValue => - InlineFeedbackModel(feedbackPromptValue, None) - }, - filteredHistory, - Seq( - filterInlineFeedbackHistory, - NtabCaretClickFatigueUtils.feedbackModelFilterByCRT(includedCRTs)), - inlineFeedbackFatigueParam, - scopedStats - ) - } else true - - lazy val isOutsidePromptDislikeFatigue = - if (cand.target - .params( - PushFeatureSwitchParams.EnableContFnNonF1TriggerPromptFeedbackFatigue)) { - val weight = - if (RecTypes.isF1Type(cand.commonRecType)) - cand.target - .params( - PushFeatureSwitchParams.PromptFeedbackNonF1TriggerF1PushCapWeight) - else - cand.target - .params( - PushFeatureSwitchParams.PromptFeedbackNonF1TriggerNonF1PushCapWeight) - - val promptFeedbackFatigueParam = ContinuousFunctionParam( - cand.target - .params(PushFeatureSwitchParams.PromptFeedbackListOfDayKnobs), - cand.target - .params(PushFeatureSwitchParams.PromptFeedbackListOfPushCapWeightKnobs) - .map(_ * pushCap), - cand.target - .params(PushFeatureSwitchParams.PromptFeedbackListOfPowerKnobs), - weight, - pushCap - ) - - isPromptDislikeOutsideFatiguePeriod( - feedbacks - .collect { - case feedbackPromptValue: FeedbackPromptValue => - PromptFeedbackModel(feedbackPromptValue, None) - }, - filteredHistory, - Seq( - filterInlineFeedbackHistory, - NtabCaretClickFatigueUtils.feedbackModelExcludeCRT( - RecTypes.f1FirstDegreeTypes)), - promptFeedbackFatigueParam, - scopedStats - ) - } else true - - isOutsideInlineDislikeFatigue && isOutsidePromptDislikeFatigue - } else { - true - } - case _ => - totalFeedbackSuccess.incr() - totalWithoutHistory.incr() - true - } - } - }.withStats(stats.scope(predicateName)) - .withName(predicateName) - } - - private def getDedupedInlineFeedbackByType( - inlineFeedbacks: Seq[FeedbackModel], - feedbackType: FeedbackTypeEnum.Value, - revertedFeedbackType: FeedbackTypeEnum.Value - ): Seq[FeedbackModel] = { - inlineFeedbacks - .filter(feedback => - feedback.feedbackTypeEnum == feedbackType || - feedback.feedbackTypeEnum == revertedFeedbackType) - .groupBy(feedback => feedback.notificationImpressionId.getOrElse("")) - .toSeq - .collect { - case (impressionId, feedbacks: Seq[FeedbackModel]) if (feedbacks.nonEmpty) => - val latestFeedback = feedbacks.maxBy(feedback => feedback.timestampMs) - if (latestFeedback.feedbackTypeEnum == feedbackType) - Some(latestFeedback) - else None - case _ => None - } - .flatten - } - - private def getDedupedInlineFeedback( - inlineFeedbacks: Seq[FeedbackModel], - target: Target - ): Seq[FeedbackModel] = { - val inlineDislikeFeedback = - if (target.params(PushFeatureSwitchParams.UseInlineDislikeForFatigue)) { - getDedupedInlineFeedbackByType( - inlineFeedbacks, - FeedbackTypeEnum.InlineDislike, - FeedbackTypeEnum.InlineRevertedDislike) - } else Seq() - val inlineDismissFeedback = - if (target.params(PushFeatureSwitchParams.UseInlineDismissForFatigue)) { - getDedupedInlineFeedbackByType( - inlineFeedbacks, - FeedbackTypeEnum.InlineDismiss, - FeedbackTypeEnum.InlineRevertedDismiss) - } else Seq() - val inlineSeeLessFeedback = - if (target.params(PushFeatureSwitchParams.UseInlineSeeLessForFatigue)) { - getDedupedInlineFeedbackByType( - inlineFeedbacks, - FeedbackTypeEnum.InlineSeeLess, - FeedbackTypeEnum.InlineRevertedSeeLess) - } else Seq() - val inlineNotRelevantFeedback = - if (target.params(PushFeatureSwitchParams.UseInlineNotRelevantForFatigue)) { - getDedupedInlineFeedbackByType( - inlineFeedbacks, - FeedbackTypeEnum.InlineNotRelevant, - FeedbackTypeEnum.InlineRevertedNotRelevant) - } else Seq() - - inlineDislikeFeedback ++ inlineDismissFeedback ++ inlineSeeLessFeedback ++ inlineNotRelevantFeedback - } - - private def isInlineDislikeOutsideFatiguePeriod( - candidate: Candidate - with RecommendationType - with TargetInfo[ - Target - ], - inlineFeedbacks: Seq[FeedbackModel], - filteredHistory: History, - feedbackFilters: Seq[Seq[FeedbackModel] => Seq[FeedbackModel]], - inlineFeedbackFatigueParam: ContinuousFunctionParam, - stats: StatsReceiver - ): Boolean = { - val scopedStats = stats.scope("inline_dislike_fatigue") - - val inlineNegativeFeedback = - getDedupedInlineFeedback(inlineFeedbacks, candidate.target) - - val hydratedInlineNegativeFeedback = FeedbackModelHydrator.HydrateNotification( - inlineNegativeFeedback, - filteredHistory.history.toSeq.map(_._2)) - - if (isOutsideFatiguePeriod( - filteredHistory, - Seq(), - feedbackFilters.foldLeft(hydratedInlineNegativeFeedback)((feedbacks, feedbackFilter) => - feedbackFilter(feedbacks)), - inlineFeedbackFatigueParam, - scopedStats - )) { - scopedStats.counter("feedback_inline_dislike_success").incr() - true - } else { - scopedStats.counter("feedback_inline_dislike_filtered").incr() - false - } - } - - private def isPromptDislikeOutsideFatiguePeriod( - feedbacks: Seq[FeedbackModel], - filteredHistory: History, - feedbackFilters: Seq[Seq[FeedbackModel] => Seq[FeedbackModel]], - inlineFeedbackFatigueParam: ContinuousFunctionParam, - stats: StatsReceiver - ): Boolean = { - val scopedStats = stats.scope("prompt_dislike_fatigue") - - val promptDislikeFeedback = feedbacks - .filter(feedback => feedback.feedbackTypeEnum == FeedbackTypeEnum.PromptIrrelevant) - val hydratedPromptDislikeFeedback = FeedbackModelHydrator.HydrateNotification( - promptDislikeFeedback, - filteredHistory.history.toSeq.map(_._2)) - - if (isOutsideFatiguePeriod( - filteredHistory, - Seq(), - feedbackFilters.foldLeft(hydratedPromptDislikeFeedback)((feedbacks, feedbackFilter) => - feedbackFilter(feedbacks)), - inlineFeedbackFatigueParam, - scopedStats - )) { - scopedStats.counter("feedback_prompt_dislike_success").incr() - true - } else { - scopedStats.counter("feedback_prompt_dislike_filtered").incr() - false - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/ContinuousFunction.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/ContinuousFunction.docx new file mode 100644 index 0000000000000000000000000000000000000000..530f3f94fc90672e57eca4edc59633e53a20743f GIT binary patch literal 37854 zcmagFWmp{9wm*z(a1HM6?hb+A?h-T*pmC@10Kq*t1b5fQ-6gnNkU((ve`jXSIWy

      Qtx|#3eyOK#agaKwyDK^(6uJE*ADK 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%0AAKn`6a01`)3B3~I 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 L5tu#F`$0Sa7Szf5 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/ContinuousFunction.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/ContinuousFunction.scala deleted file mode 100644 index 862541b63..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/ContinuousFunction.scala +++ /dev/null @@ -1,148 +0,0 @@ -package com.twitter.frigate.pushservice.predicate.ntab_caret_fatigue - -import com.twitter.finagle.stats.StatsReceiver - -case class ContinuousFunctionParam( - knobs: Seq[Double], - knobValues: Seq[Double], - powers: Seq[Double], - weight: Double, - defaultValue: Double) { - - def validateParams(): Boolean = { - knobs.size > 0 && knobs.size - 1 == powers.size && knobs.size == knobValues.size - } -} - -object ContinuousFunction { - - /** - * Evalutate the value for function f(x) = w(x - b)^power - * where w and b are decided by the start, startVal, end, endVal - * such that - * w(start - b) ^ power = startVal - * w(end - b) ^ power = endVal - * - * @param value the value at which we will evaluate the param - * @return weight * f(value) - */ - def evaluateFn( - value: Double, - start: Double, - startVal: Double, - end: Double, - endVal: Double, - power: Double, - weight: Double - ): Double = { - val b = - (math.pow(startVal / endVal, 1 / power) * end - start) / (math.pow( - startVal / endVal, - 1 / power) - 1) - val w = startVal / math.pow(start - b, power) - weight * w * math.pow(value - b, power) - } - - /** - * Evaluate value for function f(x), and return weight * f(x) - * - * f(x) is a piecewise function - * f(x) = w_i * (x - b_i)^powers[i] for knobs[i] <= x < knobs[i+1] - * such that - * w(knobs[i] - b) ^ power = knobVals[i] - * w(knobs[i+1] - b) ^ power = knobVals[i+1] - * - * @return Evaluate value for weight * f(x), for the function described above. If the any of the input is invalid, returns defaultVal - */ - def safeEvaluateFn( - value: Double, - knobs: Seq[Double], - knobVals: Seq[Double], - powers: Seq[Double], - weight: Double, - defaultVal: Double, - statsReceiver: StatsReceiver - ): Double = { - val totalStats = statsReceiver.counter("safe_evalfn_total") - val validStats = - statsReceiver.counter("safe_evalfn_valid") - val validEndCaseStats = - statsReceiver.counter("safe_evalfn_valid_endcase") - val invalidStats = statsReceiver.counter("safe_evalfn_invalid") - - totalStats.incr() - if (knobs.size <= 0 || knobs.size - 1 != powers.size || knobs.size != knobVals.size) { - invalidStats.incr() - defaultVal - } else { - val endIndex = knobs.indexWhere(knob => knob > value) - validStats.incr() - endIndex match { - case -1 => { - validEndCaseStats.incr() - knobVals(knobVals.size - 1) * weight - } - case 0 => { - validEndCaseStats.incr() - knobVals(0) * weight - } - case _ => { - val startIndex = endIndex - 1 - evaluateFn( - value, - knobs(startIndex), - knobVals(startIndex), - knobs(endIndex), - knobVals(endIndex), - powers(startIndex), - weight) - } - } - } - } - - def safeEvaluateFn( - value: Double, - fnParams: ContinuousFunctionParam, - statsReceiver: StatsReceiver - ): Double = { - val totalStats = statsReceiver.counter("safe_evalfn_total") - val validStats = - statsReceiver.counter("safe_evalfn_valid") - val validEndCaseStats = - statsReceiver.counter("safe_evalfn_valid_endcase") - val invalidStats = statsReceiver.counter("safe_evalfn_invalid") - - totalStats.incr() - - if (fnParams.validateParams()) { - val endIndex = fnParams.knobs.indexWhere(knob => knob > value) - validStats.incr() - endIndex match { - case -1 => { - validEndCaseStats.incr() - fnParams.knobValues(fnParams.knobValues.size - 1) * fnParams.weight - } - case 0 => { - validEndCaseStats.incr() - fnParams.knobValues(0) * fnParams.weight - } - case _ => { - val startIndex = endIndex - 1 - evaluateFn( - value, - fnParams.knobs(startIndex), - fnParams.knobValues(startIndex), - fnParams.knobs(endIndex), - fnParams.knobValues(endIndex), - fnParams.powers(startIndex), - fnParams.weight - ) - } - } - } else { - invalidStats.incr() - fnParams.defaultValue - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/FeedbackModel.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/FeedbackModel.docx new file mode 100644 index 0000000000000000000000000000000000000000..bacba95fe035ab6d240fc0301ca6280dc24345ad GIT binary patch literal 37722 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 W26(dqa}X$32{I%Cv&Z8;5Dx&I2#dS` literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/FeedbackModel.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/FeedbackModel.scala deleted file mode 100644 index 654889901..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/FeedbackModel.scala +++ /dev/null @@ -1,136 +0,0 @@ -package com.twitter.frigate.pushservice.predicate.ntab_caret_fatigue - -import com.twitter.notificationservice.thriftscala.GenericType -import com.twitter.frigate.thriftscala.FrigateNotification -import com.twitter.notificationservice.genericfeedbackstore.FeedbackPromptValue -import com.twitter.notificationservice.thriftscala.CaretFeedbackDetails -import com.twitter.notificationservice.feedback.thriftscala.FeedbackMetadata -import com.twitter.notificationservice.feedback.thriftscala.InlineFeedback -import com.twitter.notificationservice.feedback.thriftscala.FeedbackValue -import com.twitter.notificationservice.feedback.thriftscala.YesOrNoAnswer - -object FeedbackTypeEnum extends Enumeration { - val Unknown = Value - val CaretDislike = Value - val InlineDislike = Value - val InlineLike = Value - val InlineRevertedLike = Value - val InlineRevertedDislike = Value - val PromptRelevant = Value - val PromptIrrelevant = Value - val InlineDismiss = Value - val InlineRevertedDismiss = Value - val InlineSeeLess = Value - val InlineRevertedSeeLess = Value - val InlineNotRelevant = Value - val InlineRevertedNotRelevant = Value - - def safeFindByName(name: String): Value = - values.find(_.toString.toLowerCase() == name.toLowerCase()).getOrElse(Unknown) -} - -trait FeedbackModel { - - def timestampMs: Long - - def feedbackTypeEnum: FeedbackTypeEnum.Value - - def notificationImpressionId: Option[String] - - def notification: Option[FrigateNotification] = None -} - -case class CaretFeedbackModel( - caretFeedbackDetails: CaretFeedbackDetails, - notificationOpt: Option[FrigateNotification] = None) - extends FeedbackModel { - - override def timestampMs: Long = caretFeedbackDetails.eventTimestamp - - override def feedbackTypeEnum: FeedbackTypeEnum.Value = FeedbackTypeEnum.CaretDislike - - override def notificationImpressionId: Option[String] = caretFeedbackDetails.impressionId - - override def notification: Option[FrigateNotification] = notificationOpt - - def notificationGenericType: Option[GenericType] = { - caretFeedbackDetails.genericNotificationMetadata match { - case Some(genericNotificationMetadata) => - Some(genericNotificationMetadata.genericType) - case None => None - } - } -} - -case class InlineFeedbackModel( - feedback: FeedbackPromptValue, - notificationOpt: Option[FrigateNotification] = None) - extends FeedbackModel { - - override def timestampMs: Long = feedback.createdAt.inMilliseconds - - override def feedbackTypeEnum: FeedbackTypeEnum.Value = { - feedback.feedbackValue match { - case FeedbackValue( - _, - _, - _, - Some(FeedbackMetadata.InlineFeedback(InlineFeedback(Some(answer))))) => - FeedbackTypeEnum.safeFindByName("inline" + answer) - case _ => FeedbackTypeEnum.Unknown - } - } - - override def notificationImpressionId: Option[String] = Some(feedback.feedbackValue.impressionId) - - override def notification: Option[FrigateNotification] = notificationOpt -} - -case class PromptFeedbackModel( - feedback: FeedbackPromptValue, - notificationOpt: Option[FrigateNotification] = None) - extends FeedbackModel { - - override def timestampMs: Long = feedback.createdAt.inMilliseconds - - override def feedbackTypeEnum: FeedbackTypeEnum.Value = { - feedback.feedbackValue match { - case FeedbackValue(_, _, _, Some(FeedbackMetadata.YesOrNoAnswer(answer))) => - answer match { - case YesOrNoAnswer.Yes => FeedbackTypeEnum.PromptRelevant - case YesOrNoAnswer.No => FeedbackTypeEnum.PromptIrrelevant - case _ => FeedbackTypeEnum.Unknown - } - case _ => FeedbackTypeEnum.Unknown - } - } - - override def notificationImpressionId: Option[String] = Some(feedback.feedbackValue.impressionId) - - override def notification: Option[FrigateNotification] = notificationOpt -} - -object FeedbackModelHydrator { - - def HydrateNotification( - feedbacks: Seq[FeedbackModel], - history: Seq[FrigateNotification] - ): Seq[FeedbackModel] = { - feedbacks.map { - case feedback @ (inlineFeedback: InlineFeedbackModel) => - inlineFeedback.copy(notificationOpt = history.find( - _.impressionId - .equals(feedback.notificationImpressionId))) - case feedback @ (caretFeedback: CaretFeedbackModel) => - caretFeedback.copy(notificationOpt = history.find( - _.impressionId - .equals(feedback.notificationImpressionId))) - case feedback @ (promptFeedback: PromptFeedbackModel) => - promptFeedback.copy(notificationOpt = history.find( - _.impressionId - .equals(feedback.notificationImpressionId))) - case feedback => feedback - } - - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/MagicFanoutNtabCaretFatiguePredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/MagicFanoutNtabCaretFatiguePredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..4bc8fea94f07b872b877c2a813e50ae94d8c4955 GIT binary patch literal 37101 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

      _Z*@i8 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 L^YY;%ZNDbLRTNkH?-s4eLT!c3PlyL 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 UtiT)u%2k34iNNe3*$3hQ0A~#|C;$Ke literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickCandidateFatiguePredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickCandidateFatiguePredicate.scala deleted file mode 100644 index 376d9b11f..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickCandidateFatiguePredicate.scala +++ /dev/null @@ -1,87 +0,0 @@ -package com.twitter.frigate.pushservice.predicate.ntab_caret_fatigue - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.predicate.FatiguePredicate -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.frigate.common.base.Candidate -import com.twitter.frigate.common.base.TargetInfo -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.common.base.{RecommendationType => BaseRecommendationType} -import com.twitter.frigate.common.predicate.CandidateWithRecommendationTypeAndTargetInfoWithCaretFeedbackHistory -import com.twitter.frigate.common.predicate.FrigateHistoryFatiguePredicate.TimeSeries -import com.twitter.notificationservice.thriftscala.CaretFeedbackDetails -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.predicate.CaretFeedbackHistoryFilter - -object NtabCaretClickContFnFatiguePredicate { - - private val MagicRecsCategory = "MagicRecs" - - def ntabCaretClickContFnFatiguePredicates( - filterHistory: TimeSeries => TimeSeries = - FatiguePredicate.recTypesOnlyFilter(RecTypes.sharedNTabCaretFatigueTypes), - filterCaretFeedbackHistory: Target => Seq[ - CaretFeedbackDetails - ] => Seq[CaretFeedbackDetails] = - CaretFeedbackHistoryFilter.caretFeedbackHistoryFilter(Seq(MagicRecsCategory)), - filterInlineFeedbackHistory: Seq[FeedbackModel] => Seq[FeedbackModel] = - NtabCaretClickFatigueUtils.feedbackModelFilterByCRT(RecTypes.sharedNTabCaretFatigueTypes), - name: String = "NTabCaretClickFnCandidatePredicates" - )( - implicit globalStats: StatsReceiver - ): NamedPredicate[PushCandidate] = { - val scopedStats = globalStats.scope(name) - CRTBasedNtabCaretClickFatiguePredicates - .f1TriggeredCRTBasedNtabCaretClickFnFatiguePredicate[ - Candidate with BaseRecommendationType with TargetInfo[ - Target - ] - ]( - filterHistory = filterHistory, - filterCaretFeedbackHistory = filterCaretFeedbackHistory, - filterInlineFeedbackHistory = filterInlineFeedbackHistory - ) - .applyOnlyToCandidateWithRecommendationTypeAndTargetWithCaretFeedbackHistory - .withName("f1_triggered_fn_seelessoften_fatigue") - .andThen( - CRTBasedNtabCaretClickFatiguePredicates - .nonF1TriggeredCRTBasedNtabCaretClickFnFatiguePredicate[ - Candidate with BaseRecommendationType with TargetInfo[ - Target - ] - ]( - filterHistory = filterHistory, - filterCaretFeedbackHistory = filterCaretFeedbackHistory, - filterInlineFeedbackHistory = filterInlineFeedbackHistory - ) - .applyOnlyToCandidateWithRecommendationTypeAndTargetWithCaretFeedbackHistory) - .withName("nonf1_triggered_fn_seelessoften_fatigue") - .andThen( - CRTBasedNtabCaretClickFatiguePredicates - .tripHqTweetTriggeredCRTBasedNtabCaretClickFnFatiguePredicate[ - Candidate with BaseRecommendationType with TargetInfo[ - Target - ] - ]( - filterHistory = filterHistory, - filterCaretFeedbackHistory = filterCaretFeedbackHistory, - filterInlineFeedbackHistory = filterInlineFeedbackHistory - ) - .applyOnlyToCandidateWithRecommendationTypeAndTargetWithCaretFeedbackHistory) - .withName("trip_hq_tweet_triggered_fn_seelessoften_fatigue") - .andThen( - CRTBasedNtabCaretClickFatiguePredicates - .genericCRTBasedNtabCaretClickFnFatiguePredicate[ - Candidate with BaseRecommendationType with TargetInfo[ - Target - ] - ]( - filterHistory = filterHistory, - filterCaretFeedbackHistory = filterCaretFeedbackHistory, - filterInlineFeedbackHistory = filterInlineFeedbackHistory) - .applyOnlyToCandidateWithRecommendationTypeAndTargetWithCaretFeedbackHistory - .withName("generic_fn_seelessoften_fatigue") - ) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickFatiguePredicate.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickFatiguePredicate.docx new file mode 100644 index 0000000000000000000000000000000000000000..1ec19d572e75397322a323ae818d7358247648f1 GIT binary patch literal 37320 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%0Dybl;KYynuwCYNveKF1gSe5mn5{50>| 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 - val isSpacesType = RecTypes.isRecommendedSpacesType(candidate.commonRecType) - isTeamMember && isSpacesType - } - } - - def apply()(implicit globalStats: StatsReceiver): NamedPredicate[PushCandidate] = { - val scopedStats = globalStats.scope(name) - val genericTypeCategories = Seq("MagicRecs") - val crts = RecTypes.sharedNTabCaretFatigueTypes - val recTypeNtabCaretClickFatiguePredicate = - RecTypeNtabCaretClickFatiguePredicate.apply( - genericTypeCategories, - crts, - NtabCaretClickFatiguePredicateHelper.calculateFatiguePeriodMagicRecs, - useMostRecentDislikeTime = false - ) - Predicate - .fromAsync { candidate: PushCandidate => - isSpacesTypeAndTeamMember(candidate).flatMap { isSpacesTypeAndTeamMember => - if (RecTypes.sharedNTabCaretFatigueTypes( - candidate.commonRecType) && !isSpacesTypeAndTeamMember) { - recTypeNtabCaretClickFatiguePredicate - .apply(Seq(candidate)).map(_.headOption.getOrElse(false)) - } else { - Future.True - } - } - } - .withStats(scopedStats) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickFatigueUtils.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/ntab_caret_fatigue/NtabCaretClickFatigueUtils.docx new file mode 100644 index 0000000000000000000000000000000000000000..06666246a1e03d20fde6192dd2c94e9f3febc8f3 GIT binary patch literal 37729 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 CRT} - -object NtabCaretClickFatigueUtils { - - private def pushCapForFeedback( - feedbackDetails: Seq[CaretFeedbackDetails], - feedbacks: Seq[FeedbackModel], - param: ContinuousFunctionParam, - statsReceiver: StatsReceiver - ): Double = { - val stats = statsReceiver.scope("mr_seelessoften_contfn_pushcap") - val pushCapTotal = stats.counter("pushcap_total") - val pushCapInvalid = - stats.counter("pushcap_invalid") - - pushCapTotal.incr() - val timeSinceMostRecentDislikeMs = - NtabCaretClickFatiguePredicateHelper.getDurationSinceMostRecentDislike(feedbackDetails) - val mostRecentFeedbackTimestamp: Option[Long] = - feedbacks - .map { feedback => - feedback.timestampMs - }.reduceOption(_ max _) - val timeSinceMostRecentFeedback: Option[Duration] = - mostRecentFeedbackTimestamp.map(Time.now - Time.fromMilliseconds(_)) - - val nTabDislikePushCap = timeSinceMostRecentDislikeMs match { - case Some(lastDislikeTimeMs) => { - ContinuousFunction.safeEvaluateFn(lastDislikeTimeMs.inDays.toDouble, param, stats) - } - case _ => { - pushCapInvalid.incr() - param.defaultValue - } - } - val feedbackPushCap = timeSinceMostRecentFeedback match { - case Some(lastDislikeTimeVal) => { - ContinuousFunction.safeEvaluateFn(lastDislikeTimeVal.inDays.toDouble, param, stats) - } - case _ => { - pushCapInvalid.incr() - param.defaultValue - } - } - - min(nTabDislikePushCap, feedbackPushCap) - } - - def durationToFilterForFeedback( - feedbackDetails: Seq[CaretFeedbackDetails], - feedbacks: Seq[FeedbackModel], - param: ContinuousFunctionParam, - defaultPushCap: Double, - statsReceiver: StatsReceiver - ): Duration = { - val pushCap = min( - pushCapForFeedback(feedbackDetails, feedbacks, param, statsReceiver), - defaultPushCap - ) - if (pushCap <= 0) { - Duration.Top - } else { - 24.hours / pushCap - } - } - - def hasUserDislikeInLast90Days(feedbackDetails: Seq[CaretFeedbackDetails]): Boolean = { - val timeSinceMostRecentDislike = - NtabCaretClickFatiguePredicateHelper.getDurationSinceMostRecentDislike(feedbackDetails) - - timeSinceMostRecentDislike.exists(_ < 90.days) - } - - def feedbackModelFilterByCRT( - crts: Set[CRT] - ): Seq[FeedbackModel] => Seq[ - FeedbackModel - ] = { feedbacks => - feedbacks.filter { feedback => - feedback.notification match { - case Some(notification) => crts.contains(notification.commonRecommendationType) - case None => false - } - } - } - - def feedbackModelExcludeCRT( - crts: Set[CRT] - ): Seq[FeedbackModel] => Seq[ - FeedbackModel - ] = { feedbacks => - feedbacks.filter { feedback => - feedback.notification match { - case Some(notification) => !crts.contains(notification.commonRecommendationType) - case None => true - } - } - } -}

      T{mo~YLF_g4d4E%7i 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 Y)Yf5uH!Cm)fpV1~Ln1JH9Owb@07YSd%>V!Z literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetFavoriteNTabRequestHydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetFavoriteNTabRequestHydrator.scala deleted file mode 100644 index 52a643b84..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetFavoriteNTabRequestHydrator.scala +++ /dev/null @@ -1,38 +0,0 @@ -package com.twitter.frigate.pushservice.model.ntab - -import com.twitter.frigate.common.base.SocialContextActions -import com.twitter.frigate.common.base.SocialContextUserDetails -import com.twitter.frigate.common.base.TweetAuthor -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.common.base.TweetCandidate -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.take.NotificationServiceSender -import com.twitter.notificationservice.thriftscala.DisplayTextEntity -import com.twitter.util.Future - -trait TweetFavoriteNTabRequestHydrator extends TweetNTabRequestHydrator with NTabSocialContext { - self: PushCandidate - with TweetCandidate - with TweetAuthor - with TweetAuthorDetails - with SocialContextActions - with SocialContextUserDetails => - - override lazy val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = { - Future - .join( - NotificationServiceSender - .getDisplayTextEntityFromUser(tweetAuthor, "tweetAuthorName", isBold = false), - NotificationServiceSender - .generateSocialContextTextEntities( - rankedNtabDisplayNamesAndIds(defaultToRecency = false), - otherCount) - ) - .map { - case (authorDisplay, socialContextDisplay) => - socialContextDisplay ++ authorDisplay - } - } - - override lazy val facepileUsersFut: Future[Seq[Long]] = Future.value(socialContextUserIds) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetNTabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetNTabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..d769d0b78cc6dbebfa0c0e184ed5881ce95b25bd GIT binary patch literal 37480 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 bBV{qv)?t7*D=-Iva+M%MA~1V=>;>@vErAd> literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetNTabRequestHydrator.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetNTabRequestHydrator.scala deleted file mode 100644 index bfa8507f0..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetNTabRequestHydrator.scala +++ /dev/null @@ -1,55 +0,0 @@ -package com.twitter.frigate.pushservice.model.ntab - -import com.twitter.frigate.common.base.TweetAuthorDetails -import com.twitter.frigate.common.base.TweetCandidate -import com.twitter.frigate.pushservice.exception.TweetNTabRequestHydratorException -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.notificationservice.thriftscala.InlineCard -import com.twitter.notificationservice.thriftscala.StoryContext -import com.twitter.notificationservice.thriftscala.StoryContextValue -import com.twitter.frigate.pushservice.util.EmailLandingPageExperimentUtil -import com.twitter.notificationservice.thriftscala._ -import com.twitter.util.Future - -trait TweetNTabRequestHydrator extends NTabRequestHydrator { - self: PushCandidate with TweetCandidate with TweetAuthorDetails => - - override def senderIdFut: Future[Long] = - tweetAuthor.map { - case Some(author) => author.id - case _ => - throw new TweetNTabRequestHydratorException( - s"Unable to obtain Author ID for: $commonRecType") - } - - override def storyContext: Option[StoryContext] = Some( - StoryContext( - altText = "", - value = Some(StoryContextValue.Tweets(Seq(tweetId))), - details = None - )) - - override def inlineCard: Option[InlineCard] = Some(InlineCard.TweetCard(TweetCard(tweetId))) - - override lazy val tapThroughFut: Future[String] = { - Future.join(tweetAuthor, target.deviceInfo).map { - case (Some(author), Some(deviceInfo)) => - val enableRuxLandingPage = deviceInfo.isRuxLandingPageEligible && target.params( - PushFeatureSwitchParams.EnableNTabRuxLandingPage) - val authorProfile = author.profile.getOrElse( - throw new TweetNTabRequestHydratorException( - s"Unable to obtain author profile for: ${author.id}")) - if (enableRuxLandingPage) { - EmailLandingPageExperimentUtil.createNTabRuxLandingURI(authorProfile.screenName, tweetId) - } else { - s"${authorProfile.screenName}/status/${tweetId.toString}" - } - case _ => - throw new TweetNTabRequestHydratorException( - s"Unable to obtain author and target details to generate tap through for Tweet: $tweetId") - } - } - - override def socialProofDisplayText: Option[DisplayText] = None -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetRetweetNTabRequestHydrator.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/ntab/TweetRetweetNTabRequestHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..4ab0b2f9906409256aa831bba18811449819c3a5 GIT binary patch literal 37174 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 - - override lazy val displayTextEntitiesFut: Future[Seq[DisplayTextEntity]] = { - Future - .join( - NotificationServiceSender - .getDisplayTextEntityFromUser(tweetAuthor, "tweetAuthorName", isBold = false), - NotificationServiceSender - .generateSocialContextTextEntities( - rankedNtabDisplayNamesAndIds(defaultToRecency = false), - otherCount) - ) - .map { - case (authorDisplay, socialContextDisplay) => - socialContextDisplay ++ authorDisplay - } - } - - override lazy val facepileUsersFut: Future[Seq[Long]] = Future.value(socialContextUserIds) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/module/DeployConfigModule.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/module/DeployConfigModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..48f4a2896cfc90018b0668666809094aacef3dbf GIT binary patch literal 37448 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 v)k2u!(gF - StagingConfig( - isServiceLocal = isServiceLocal, - localConfigRepoPath = localConfigRepoPath, - inMemCacheOff = inMemCacheOff, - decider = decider, - abDecider = abDecider, - featureSwitches = featureSwitches, - serviceIdentifier = serviceIdentifier, - tunableMap = tunableMap, - shardParams = shardParams - )(statsReceiver) - case "prod" => - ProdConfig( - isServiceLocal = isServiceLocal, - localConfigRepoPath = localConfigRepoPath, - inMemCacheOff = inMemCacheOff, - decider = decider, - abDecider = abDecider, - featureSwitches = featureSwitches, - serviceIdentifier = serviceIdentifier, - tunableMap = tunableMap, - shardParams = shardParams - )(statsReceiver) - case env => throw new Exception(s"Unknown environment $env") - } - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/module/FilterModule.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/module/FilterModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..c0a79de07c1a2a42be47c9bda7eb9bda064fb088 GIT binary patch literal 36887 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 ZP+Nxq-mJhJ1j>1_Z2 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/module/FilterModule.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/module/FilterModule.scala deleted file mode 100644 index 579f65acf..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/module/FilterModule.scala +++ /dev/null @@ -1,16 +0,0 @@ -package com.twitter.frigate.pushservice.module - -import com.google.inject.Provides -import javax.inject.Singleton -import com.twitter.discovery.common.nackwarmupfilter.NackWarmupFilter -import com.twitter.inject.TwitterModule -import com.twitter.inject.annotations.Flag -import com.twitter.util.Duration - -object FilterModule extends TwitterModule { - @Singleton - @Provides - def providesNackWarmupFilter( - @Flag(FlagName.nackWarmupDuration) warmupDuration: Duration - ): NackWarmupFilter = new NackWarmupFilter(warmupDuration) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/module/FlagModule.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/module/FlagModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..bf407be9e8184f198d5e2bf3221069153ae075c9 GIT binary patch literal 37159 zcmagFWmsIvwm*z(a1HM6?hb+A?h-U;Bf+8Z;O_43?(Po3-2x;K-2LB~nRCv}x%a;B zm(4@fT0dE9Q@eV1p(G0lg$V`*1_zdr%B@wYQW%>E4hA*`0|tfx8r2mC*nKgx`(mi( zZg1wK&*Wxn)0il)xF&-7_3Q;JiCKumQyc}WY}cN~o*@=bqB{MCM|+w1L=NKNZh|jV zeO4(LhAB29_0F4UtxmAZtBFciT;fDuKSML046@iOeJD{l zy@kkbLx=#>Z{KZum|Vv-*^glAN+YgSbvDthg1(;stOKcP=6*nCX};O<=NzwT(0}gG z(T-B{wmb@u#`CxnN6t9z@u#J(C)H1YNn`7XuJj7L>%Y6BEsUlRdRPuIxSOAox1CV; z9YOiZsV-cr(k>dEG|JA){pN5aPUd}+6R5kwE1}@sAz>&;<0mrUd4GZYbnpp!75Dy~ zU)7!Tb7#@M^O}F2i5x=`t?o-AVF6lq?58KsN5tat_Yy+A&r8J{`@&;)WO+}R@&;f^ z|LCGSm8{4;sC%0bU|@)#pN5WRHcre;zps^XlOG{jQGL&ZBu6NV?V8jj3RVmxe#jRH z^`uOk7TE!%i&ncjl_m7GuzQIP&-P5r7t{0cm+6aa0yK@a7yNUVdbPG_FB;kn*Wr@j zJN!u9)OG{4ZPLPT$dN_NsP4GTHAsZ$H!%ivY3omCMXSUl4C!p8kxK$g};4MWt%dR;TdUVqAxq~onj4D37Wd7QhXvfwir>j_uJdxuby1u2ux zsxP+~!bd(($H_7Ob&52zMWrbBhnOmw{K{7ikvN(*awL*{OxmA*eng@1Rs7x!|Em1E1uk44~$g%i#kYcWj_s@TznacYkc^vf`~ZA+3F>X?rxeWc2|O>L3OF z`Y>pua*$z0Qv<_BaN_a+{SF13T|_xm#kEC)Z9DA5$6-E~GMN?+kGrY-C>7%xrZJk-gbfEgRP$iuFJ7QyhD33t~Q zmaORsGML4p8Bj89(%%@mCi8yO`@DU4eZNdVf6sjZg?nUyY(P8bD*pQ1cZvVczFe=Z z;T(hdVgm&RhWhuue6qLyqb+LVc55uC9Z&R7`d`8-0YT`1Q=f}uC z#zM8S?gG6ZLa=zhGT(&q*YiI$j6E%hn!`3Id{)OAf5;nAa@as^ zF2&LqMALULoF1!OfMJCHlB%gxHRefHZ#;291Z(f4NI(5$6XI?pFQLs=nuez~bL{fU-iVXKQHFh?$OOvGS+Irr{<0O321Nx`-VaOOtJzC81k zW(^D{tl_wxM76F|GvqSzB&J(SbU25X6Y@ozCSvp(d7{-PK<_nLwwB+zLrlwUeJOto zvg|D~)FZ#x@-wys-KsdO4q;4uQ!0i}?HJ(d7dOwl_{vL2E%30*?@tGrH5dsZmINzp zXcXR4vqF-!<2B_UcbO_k1*?XrDUt}EjEV8-O=wRw4-dtcbo3Q;BeAkM@z7i-cY=Ve z;QIh-=mcv)T%`{#I=jSopYdK$nJ#Qu54Rtj1rd*2VR(Qo_3%W=C-62eqY>joel0dz z$%#Ufnp+h7!5KK}o;HfH$pdRL!i9<-Iy=&tpP7ly;nN?k@ZT10ei8rk#=zL$U1tZ~ z6c+@4{=vEe98H-)f3?oGpoi1%JL5!K7qG^K3EZkCx!%RrqTn4}p9s;nfmgx({4Hm+ zDfko1=diftbC|fgbfl*DJ3WAw-IC)}l(Gm!S^OwSol{ZxL1xg^~s3d?OW!aq0MGivE4-rvs*T zoT{HK4KC|g*?f>hsB|GMIfo8yyu{N53zO_BjaVhL6SWpoEs_;aZq`>S7R#_F2QMgR zD&2^uh=d|^K2y^WJjV$9bO1QjLthYKuz$sj~h-826 zfCUp1`n;RU)K6Jrb!m<|?HvU;@5lUV;KS*ij`Wd>py+N+B$Nt`pL(=Hqm?*L3fQ8Y5SEco|_Sy z!XMCEW-_mzwh=L*9>r-xB05wrM;CxYfa^CLt7*y-^s7N>w6gp7($Vty1Vgm^0{u#+ zMv3J1vj;(=_x_+fClxnOJ{(V=-C#yOl^oJ|O@1zuja{iWM6FUu!S?*LD`i+|P1mUL zbp$V#EL8*BDY8t3v)hnE)B8f$oz!QEP{iu;qX)!_S5eg<69EB6xzx2L(*PRnZ1*P4 z8__lUS4BxR#txs@=xu0h%$FMo#JhA`8`0Ss?uJ~0HjWgs1h&wfiQw$XS{ZZrw459? zmle!wV}0!1G2MForx_k*-sLRmp0966_{u+|U|pBjk57WJ>e<~D2I0SczbBP%Pv|=G zfESwUb``l*R}j6f&qt?lpq{g7Bg~RN&y{xOnr<Ps8H)8$N4t?ERtrlZtA7O^Q`*}XxA>6+B#M|(_?7w+w*8Suv|P-%E!=nU`0Ip`c? zvogP3?eWd#sa8L)SIID5q0243%lkU@b7ltNaTd~LGt2NI35kkh5ZZOKGi5E=?f#j2 z?6hxRX_o~og(ayb_?Y;47+eGpF3etqzixk4T+{U!s)|8_IdB6e3i zG^3JdYV4|+KzWPUWAX*N16gF0+MollH1qE z>%Nr~C8I0z?m)#v$4o1YmO7nu@-W@cm5|%R36r5@XYXVMxZPA_Mlv3iId2>F?{zpPQ%zQN;ij+^=V^2z^2E zm_>Hs?|nc=ZSzo z!JG?HGD8=zKuJFCsh3t4wXP(A=d0=E>Rc8Olb=1QP5fMO_%T8L8KJh7a-a@@qA}M_ zq!p_wvfzi5YTVa4ZXF11iP^Z6Pr=z)Up(5$E+(s5E;}o%w}m&-oO-tv>NWiP(4cCU z7mW1DIVp{H&kkp9?oA1NUSJIn%o`R6#EbU*p5^r-(G8(A?lK_z+3$@k$M(z@O~52v zyTy~m*$QhiRCgdRi`m0Pc_{1BR0FMp-cMTdSY6L140tHOfANHc5Z)7tC??qDCDgK3 z9@qSEEZBFRg6>B`ZHw)+TB31av@XlDdOceW#rqKOjrpIed1N^@e>gK3n1MPp7|OqD z?exXn#?0xDwOn66epjl_ySqCt-|+dnZA>88@RS``oD0Dx&(5scGj@6QxnDCgIG>|W z41Fj`MTpf^)HObq#ntimWnnAP?rUbotC_vLWczg3oB<7qqtahaH@N$|k-A!S&orKj zCr_{10l*hrFaC#vQ#YN{tfaLUyO+~+;iX}~>qGS0!_(4PRIzaL@t*$u!^TB>@XBlnj&fmhqNw#^`B;3}~}Qt|n8|6y?Q{?7Q?adY|0`0-_f`??Kxu`qE( zZ%?Pe~dL7TFg|%@H*D&EXdo4ge+FkqJ)xnM1`;+pK&xUuw#Y_FbMj@hp z3*buDu&1`2%hIQ>3ZHV4Cy#1`PlYpIv4!LuKU^s73BRZ{))7oA`r zS{fzZmv;Eh^G&?=WMQCtxLUgx{|N?Zb!g0W4GMH&@F_aqbZ|XNaCMdNOO2towy-x( z5OYU+v{?|2&&%s!zqt?G%k{>~mo&ZS8sJLDmVjWT>)B~=GWTf~x8m`ex4{`uuqxYb z=?!C`D=DI7wfjWja4j0Jd;k5dR;ODk3%{#PSBmR__OXY{ z@U1X5!>H&x=GyC_HKIg!hI95&9 zRE0}y)WG--=n+P-OY9i`m=5TIoZpk5L6g}3nuOY+0Dz1B6<^heN67@m?2b6nC$kCh zFYFVJI8Z7HD311zR2>jn5D51lsee*Il~SKsk-GgC!I?5SXawO86-gb?rn&z^;(wrG zJT9xS{gXjae;4M057MK83i68C@STwak@3GIGLpbiyCcH=p?W^vwGp-BchtX!3Y^3n zrd-;)FbuNzBy<)?x`;HKz0V%NeYAaah!@)vdp;sa`Xy5*#FVr&xpi&%v|{Kk+d2_Q zXw4ruw66@0+q^PF2r}s=J)aG3Jl#0A>e~%^iaz%*O}ONKUUs|Ey&sy(uHJF0{<$Ee zc({KsnzwTwxh1UMd?P^|Ww*<;B9f>Vb;cQs_x5D}PMpzw+6a|ly_7IxYjB<9_7v!{ zoZ*TzxYotwGn_4Ld+Zo@*!pWA3{bu6R~3y~YU52K(0BFV$Z+KFe)W8de{s&1yPY}t z_%IfGdi=WyH=^DqtGo-5X=gw#-WH+4L8w(+r%Cbt9_z!~zPIui!WrxHm9vkR>sd=Y z1xn$jQ%KF?4WsHBA;nl*gywQQcDq#_`DE*B??&v9@-3ZOzhmP1=Fy4UYWF}?(p^r% zw@WIX?k}#YpQn&Vu|tl_8r&eEhUwI?cS;Qx)BRsw2hNKW569UyzYv9X$c&|{d>l{T zevT{ShNcx?Jd>BXs^6J}pSwB{KJv>A4(;yy$Z}zSV0Prjwh(e((<0FC zvSk1Yytz66^V9>WnO!a0^NsM@&7Ws+t-rn!1x&2%!zp}V2P&n^QYF)uMvh@DXfw?> z58hB9&c!o;D;k?tK4#FbSm^KTiIZoH!&CLQ4m(wK(6_$RbVSn|J!p%I{Q0pdx60JH zKM^x?V23X>;3q|tZ~VG+dXtdJ@ezCamCxFF4%$+HR0nM*S%zWcsVynE z?OX@nZEmI|fSz2pL;DUlx%YDs#S+Jvq)8P{Bx~pAbtGoT$a69a)R%+KADBnG2jaxs z${+H1zaq-FFmd#L$(7;O`&SZ~0Q%GCHEZ@E(i{b4B&r0}-SEs08 z?7<^g8)LGaq!b>b!UH_pH5Bfx<1>jX^+Z*^UPP{ZEH<%sJxbtuwN> z*R=WeY1hZ=;mg;{p+S%K7YBFX-D~38;>qLO&*vk1mQNk8Ey9_%%+J%q&>pW~C@bmi zEkaO+TkXxs!#AW4DzQ(TM(ct3C8thK$ddBoRO8vV$;i?X_-!3(r&%hkvH^gZs)eU# zjP7nPW#0=&}R#gV28?XCxb zV!y7AvN{B(G+Aq$1ytVG5Fvv(O&>r1jOm5G(9JKJ9#tvqCL{22%__(PXqz-*bRL%`EbC456G>~h{6 z$LCxssiwoitTf~I&Dk8-k1laTV;m$_Q+%mI5!@1fdEYEPB@DRkYgKk!$S=~rWg{57 z99yyZA>VNs*E2K5pr;!BYXZYQF%NH5vr+R$NHJRU(u0}wr(_kq|~(5M5PSkEnfCU z)4CBKP0+hY0Z-QWfoX$Gi6hV39iwkE{nJ}bYn*FmXK_nu>ivlbU*GOu9~TL5Dr8YI zSa`aZ-8gF0KXK+GD5z1Cedgm?E~`1#7*xEt%dnBBsQ#G~tjzAQEiwEs=#k%_)^{0hS z_wuT^W2LwOEiDe?RYm8+?aB)Bmc4@`Ty0#0=pIrNlo8ZA*zZj?XJ3}to0ut+_sJr9 zs~Es2<>?V0wU(j^9$?$Ma-Kh{SpRrWfsQ97Bdg-lO6obqAhkluSXJ?8wA5JKBf6p5 zv$#5ZAodywEO>FV&o&u8+UKzgyYa9GeZWvQc`>0VI!&OPzm1qRrnTehtmWMb!wO%PBSX%2`r4Pq&wjDreAs%UVj&%MCGZ5mp2x_BR#zwRzXQwbmt1Ja;dVS!);N&TC;;0=jw=+X(@Ea z{^eG|K1H)J>>Tz~n zz3z|7`*(D>j7Z=4OeR2|bZ&N@^}npY&xf!@R{4C@G|BNZ9sIF^X3EUx@tXtW_0A+y z!@y(b>ab6M_j7IzFn%oo6OvZQjE1*1uojcjIS-v9WBucE1cpNJcp6i0H8(R3`8M!{heEI=A%J$8}NILT7qGeSB$>gt2ZBl72%H%Yk-?yf{RObo|5u)sq!tj_h$ zuEsdEYBwOdJg0iTnls18==^bKbwkpXl1Z6weYhGwm~Y^6L;4zY2e_>ZPK;zpB!le8B<|`xIJN>~LUn_9ZtxIZF0F%+Dxxtwj5T->&>oZ&j*y=Y-%wiEl&J?0#uaL!>G zcnw6bbGhpna=A@`2}U_ z3g0Pzc=hmk%u~r8qM9ISCOyij!0Q&ezWqn+%UTfL|fu_KHp6$$fZ>64p?aF^RZ9xoj-Yo5#1nH37AR3 zXYjQ_*sR+Fh#jHApZqbXof@luAgPOn{jjC@x+z7K$L-1EP~-%{@jFD$;kFRcWzgFU z@W*i5uL<1zlCcM>5x`lkkwFY#sx1aM@WmLmO)Y{ljV2Jeanhp*7hbB^bwq-Q|@pxW+QTg=w)^!>$K;% zAVrtMvS=@O!^exY0TbUWUL#YSjsE}6zCAkdeChjE0 zrr6)Zy)*J#3C`wnh*Gtc4|-=hzF$X{4wW<7%|S()?Zd3ayev2~=6RrpCGu>4;gMvg zDL=(pX^w$`VhP7l5O*NieEI5<B0fJkuFZH~vQwR~0 z`c<1j9bwdoni6w$vIgEwAHF5pk@`t+zAHOp%#vz&6;s}3hI&1t`D26!?RF4EmJ;(M zsYi=iXGyY6uqnUg{8M%RL1=)>UUCk}U0q+Q2oom_+I#k;D-`GXEu{~XBuub0D7`>e zKB)i#&GgA(>B6&9!=$$j;>~HXD~bFH@d#FayQH5uFW+^pADynH4yZMURgW&ct{P-8 zOGAt&BYxygkxp9gt+;5GnSV}0|gewZRcis>q|Y>oEHS1&8BonFvSk73TMuj- zB#?}RP@nPN<`4)QY_$-+_8daU7NxeDZ>gu9_kZ!CYz*O*z zuElqh02)iqi;2F38f3+<@o}c^Vw}9K3@Ri^{v#?wS1U%nf)(i2yS~zXa)hY7zN3(2 zFasLjq0tO~A{ge5*if?_`-8Qb_|?No-KDn1fkA2uG9Le-m*Q=pbg@&bk2uRfd8e*D5AN zEJUgpi6fXQoW#43!4X6<>^UrK@z@mw(?w_qM_6{V=wC1!H8;8#JDnG;#V?M=Nx8=P(v_h{NllQV=!pIjYSxw3{Y!Rs%mh< zCS1tsnNVZ+waGjWr2nRoygW@uxo9a@=C|(^!QZ}ngSF%wyiZJ7&k0<(2>$dfISPUV zU07?pS-<&*41Nh3R5ESCNNqd`A8i_%;*vl6o5};J-zrs!8$c@iVSlTH0nB@VkP+Ro1UpgP- zv~A1`FpPK8wT7s>EHg%D_7ZU|7|ST9WHRd4NCJ3@fo+-x84HFsWzF=|puu<^izSt~ z0aII}@z1*%prolklX(7TQsU%3Xn3N`cE%@|63Cuk7rw3w&! zd%hisEyU@l*wbuE+uc5(5NHqSpzz0dQk*FlYwD6fHV<{uMW_>=1>3b7<&<`~)gMZ@ zMo6YgvriLwE%sUQlO9>||D!OM@PN=+Bm-mePlYc3Q{iRCRq$l&Rt1-ba<1q}$$Q69 z#}Yl*%Yoc)j3aYZ1@GDS-PH!gdy#v~7S&+2ZH%AAYqm0@Vz&r?KcRm-Y;ANiytNB= zWCtnZ%IF27TDq(=%rQTXHvYId{1G{!SQS+~zyEMxnIBIkI^gM z_@1j$>GG*ppO*m~t=}&sCa4`ray24Ts2>gTCJIJIU=7hLTYF(1DIsUG43A;wR%NOW z-HqJLpR%QfVkv?ZBOF^`fIgT~%b14&tj z`FAu?v>yv&gp<34Xd=tj4A^UtneN#2$8nhyPuC2Hbnf+{|K4R6zHj!NfA<&pt@8+o zTov{Y@@7^JjBuv^gM8LVX8R#3d28MAFY-PknFkfkdj!p9Wz27VU%tWqP;HH6?ld&m z>hx_2&%Z?i9riF>}MpPHetwnIY*Rkl~-df-$%YP zv-0S|wdo*+!J=$)4opY+q)|?h(Al+rO|!8R#jq}IhV!PNO|aCS+@@G4X+tAubij=< z#t;5RtY+Sm6qWKAj1pscfs7a^f&Fp7J-K7lQKFl2xMt6d6rm)DW!K`Nz)d=)2L?FMS-W*&uXf-k3(=BV=VoZS~Qr3z_O@9!k$IPxqZn%LE^BIh`M zmX_r+0r=#tI{}%e9F;E6X!4M=4VRmKNgih+d6tAZmJpNO-w(T*_`>`|6uUj?@g(L< zCjkOq%HoS;h6HChB0s13p2#hD?QzI^lpU3f<15Uqp6!+L%9k68O3aCHRCXkn6>iEV ze%68goF>99(c}M?#K+L*;&I)!RPis5I(J2*gMS0N@|-jM!{kqn%A2mCwz-DYf0>lk zJ?bnB{nKP{;%}2Yh`&vC+W!BUOM!i#n$}!K(`g35VdhY>N7V;IZ5?7~qNuz=VS?OB2c__4Ams=z|IJC7!kj zfNl<=z~%$(I<_H02*AXAL%=^lwUEdpkT91}^N3d7mEBmH%FYs|XyYq25q6G|^4 zDlKXUSS(}@A}T9M2N(`TD9(528)#-4&b^;32EOj^cA#&Y^|KBqvHJ`bsSHFq)j2zQ zPKFZ(5zm2gfjD9E_x__cQ@QZS?7u`SU%^yFY^}f@N%ToT+YC2wCTVo$5yT^S1Ephx z*-sr{SGawMa?I(lSELq=6yyI97b*H%9B$yb*oF1TsPQ)MuNq?3exe2-I0^Lc3v3Rxh@7BZ&0HALg69n`01BI>%j)^nIC34UPL{NASU8V% zBZ*7Zg3HumUN=k*^yM(Ty;_aQeC63K{wdhcj2RbKS?_lKi+1F5e(IEWhwI)=B44Rl zXi5YXZ)#$I0t@+lc;_Ke^lJ{qR_j^zo!CuN&AqoBJqXK)mmz0pTjX8Ek!T@jxyys; zPvlc!WE;4KPqv)%yxDXg!J`pfVjdgq_^!(D#S}Xo;90woS-J;}IP7`QtVC0@dvbE5 z=ob3L9*fkX5v=3M_^NC)6UrPs`<`_^`+tMDLZs?C^z2iVnV1H%mz}5%mm)a`Ho+NB z_jI~w*d)8M?iP*XyHb^;-FDb1^jrPSLk|!&D{ampJ6Hlg;Le;rB%d;H!5@2uf`M*q zDIvoCHk;?6rUi*O>tObzt`@n5bFk#aU(S`XMe`l_3xWEWHuNDC%r5l7c?NFaS?L%0 z4eI%FA(OcdAoihg>qsH8o^!m zX_3F`XAfJde_X`Yefi>jZtFc~9+IWpKx@4|(CM@YtxR3(CweVo^BFD(9shk&j_FX6 zyb77gU7$jvJx?DM>{qV+bLn}VFsOlnm}UZT5A>J)jm{ua9D^;O4Mp zcWna35|;1}i^Z}_gM_XLN~&>`N>LV;)qb%%KPo$uPb#pJZ&_tdx>m0TAMIH|cVCLH z+T4h*mTZ5Z^+x~_GT%2kVx}>CD-HDXQr z`$XbVn{wh&xxawjdaDxyqW=Y~)b__#WxyvXL@KShBq&x^?6M z@-w`E0IbsLoi6kz21%0#mBgfD)2NsE+$;DB3Ff%PiSGU<*0tKXc*=ah#k}+K^KhYm z_RznY`M=i2CI7*ANSkJC7a3IF9DsA@HmIX)(82)s`%BPK7&^6wJe<>AP2Zr-i=5Ox z12%m6>F-F3F#KBE?+1i=VTFjiL_;RI-Q^OQ`E3;3}e& z=;qyBH=<0B7jwepnbH6RKlLn9REain4C`$YSRRFrL8@cf0PVpl!1uo%&CbfJLzF0W ztHX<~kKP@N3te`3H3Q*o{kNfdS*J!QQ58r!!b#R0fAyF#vytF#!n|wVP-Za$T#=D% ziurOFMZbz%6eX-6vP6~3LGu_0)U|;P_YSLL5S(EU;0X0bZS(YAF!ebs)e(#zK!NpM zU{9&qgWmWLAc@(pyLn#2MsXKT81y*knbGxJ?E1w)^B@b!#cjJ~Z?~L3ut5#ON4cU! z@pthzEX&{8YA8_i7}SgYe%CJ<ATl5rslgh*pG`~PvC_L*?S?>>#(y~ z@s|SKfY|{;CkWqdH$>~|s#FE+6d*oFp~KiFvjw1=@bs*;Gj3G1kV`hH&~-BhtBmeL<+iA7k;i#T;iQr>o{v*nE?wk{ z(s{UoBj;8mFcp*3`((YvnTIp7t8~DoePg&@$fF6d+>kl2hjnd|9!DN5Lh0c=7sjJl zzW7_4dFJ^{gvT+Y-cfw-zOhs_Bli#_ZnA@2z|SVz+*b;uLQx9E4r7crIE4VF^XFi6 z2+G<^o=2<>Wf6VL<|upUrB-P0j+laKPH7bqz4fRh_uazH?l_d^hRd@N-8P2ihQ{V9iDL3c2!shR&}N%RXe+nEqYbSk(@?GyC!_v zkdd*I)ZszQj@2hlbt`T}Ze8b<==AXxW`jdT0va%9fR7auP#RRA=Vjt(o>GHyXrkrB zn1ATmLkCmK;Dka&gqAj}){2`ABf~8ouKAmUu^IYL&f;}FBYmc&@i9CWmRh#V3csPT z=UFc{3jl|ye28rw8*@se#V^U_3SCMKs_C(?7hCs=cbf-ETJPED$8V~}6SY#ODr_(>*<3mq*OY3UD&$C9LKB@65+k24M$EHOMr`tBD&)vI z4-(ST(V3Eu&CHN+Q?ybQ7DY_VvX0lBVv*ZV>g$3I-Ptd687<6?-W4sQrwkiyXZnTq zlCa}~KQm1mLFHft_KuKofn4_fm@xXi3ur9;6&F0kimNT9_^ycm-H`UOQ}PlgA*{+x za_{$lQL%uia3g+Gv4jsAZ`V$9n}BSxrMR;Yd)OF{w5dND$YdpA@rz$+z3&j^sAV(N zNIHH@O7+#Fp&xg4nR>@(TxihniPW>E>;t7n5i9*wXAjbHyiyaE#i3TJ$S-vIV;cJU zp;McQsu4E)8Blwqt9kbiiUP;?)9#EG07k}Uphf~vl8)VlJXP7O#cZ5W7DwniyJB_d|k8 z2rJw$=v(#plwF=-rch4lMbTEHf4?6zvP#ADjsB$q)B^I9G#pJ$rBE9KP`9?Ira%ZuixT-YE5->oi zj8ZO+Qf?4eC=?bP9jY2h35idSHL5@KttNVf-U5{x90TBVauCp{P@?qhh!F{E+j|p^ z?i!MgW2?O!phOyh>qAz1R_{_0)1LcIjmAcvszgLd6sKhSv5OmhO5Iir+6VicAQz;` zrd6g=Zb7jM9$gPU9h%w?ShdexG74KceaqQQ1ff)}jp9M;NM<==xhUkK(EbQ%BGAm| zR2i9$AQ5zGxbENST(#1J#_A7QW{tZh)1ixXHhN0yMW z9J$rHLIZLjM4|O_{IO!4ck~vHbb?aPV4LnM7vZr!x?~sULUaz8}pGL`bX)c@c5`)B^dZ6wm4QO zgcG3UY1&R@PTNcAjomsB)y5T5PLiM=5jWQ_SW+Cm{z8Caug_qaN&)m4RkA>-4u>rg zbK8>?o)%T51cSEZ1ltOQ_CEi?R0zB4Oo1fmF!J>M8tQaIpxU0<< z7X0aD#0qT?kjh^`SigaE{|#jO8))8Vq7x{c`)aWWM;ozGY8EbFgA?-yf z!Jq}b_ajrGS%FWLLO9Qi3B-h>oe#rIxJ76T#yk>M&=D^9!w066A3I^aYd(vo9&RKi zo|{$&Ii$5Pq5gEhI##UMsMH9DiZ39LqCiACSD_%MNxei6l!sRQNcyJ(BNXbXgqKEK zC-$&eX;38wb&HjrLOVT(m?}arKi-NK#X@)yQ;?J5Re2IcKwo_v&l*i{gSy0>>rjch~H5Dd2Zjx-G7dk6Aa9$8U_sSpXc^9 zEx&x0G&eUh`SRxxesBHce5tyVrw6RYqd~>2Brwv^aqlT~h#`aVy^GY_d!h1j&_5Pc z#T|X5YX+U-7s>WTABmP82|NL&(2Bf|X=QgBMh>}u^?7x3?|SlX-KgX`zT0~D#&v&S z*9u$~s9Mb4^0_)Q+yhW=t)JY6-|X$W*Bf-b9Zc_^roTO$y*<7jySBe%PmgctUq0QO zwpUl9oSkLgf{ylYcCHBuFdAaFcXw70HKlJH%)J6o(vw}&6|*%^#$64$*M?oEjCgpS zyO&N5KDDk<4jqKwoP}?^l(r@#8Co-k2VcE8!vx4&-dTBD?%hUlRgXJ6Ue1|6)h$!| z*a=g2F9Y2@U$`uKCV`KYvbMp-49HyerG@*cOk=$ z(zaW-{Ngv>H{)@q_~Gop^x)>?eGi|OPS>@4C&&Kun^Vghj}z{d#khFILn%69o~s%| z!{DsdoZz*=rSCpfNSEucdlw&=r-%8g?HqWvabp`o$C=&iNC8(~)Y|9XiN|R+hd_aP7<<-%WUK>VYl`m5HcGks;`)bGXB26wQIrt3t+_7ncL!2GY|Iy=_ zN%H%P&)d?5ew~1z9Z}zY@!;AOFqw##VC}U|kdU8NYcw(`A!Q0Wib@{}ieSyrAjgL@vTDTC0&F7(J%>o&=e0brdJ>zD>a8$jU zIcsZ+e`>Pyq3ZhkmGR4imt*Ve?G|y}T`KQ2E9=86u=eG)|JQ2Y-5J}4{UiC3a;TrC z##SfxqupJbn--y+>4jyt++vgIy=wV%IVQ){vhdqQb@P`AY`~NJE0aOJYb z=<%DUr=5qso4F&0hqtVxW1q96=%u|keBy(*(!t=#H4h)J99dYwGopN9qNM7dc^P_j z1_k}kPLJh>*VOG1wc_}I@?%Cq6ihi{XVD+`JFD8>1yl#)z%Wq#E`m)rDUa+P}97S*im4Uwob3vRf*rxm1}d!S1IaaZ<6 zPY`J6$2MpP7c|6vdn4?rMey47up|ABv%BhcdVKZ9R=PGL>o&FB5PNO#@MQPqC(}MO zchOPW!}+blwCkL>fBI|9mYvG2uF1FqoQ))NwPN^&l_nt4m8I9UiCU$3dq=f7>`(C_Y zX9&psp4-A;k5pv{v4My9rX^IhX)q-?*cY;me?#=w2Z>~c>eWw&Y=VPDB; z(#o5y8+c}pf)Xk|25Gjipw*LbRL5WxX6}v6B3-Y9h)bbW3tchFxbdd*+O?Vq-+bS4 z#@5k%i@gztjAqRC_SCep6mJ?V)^_jEX;|et&My?t1noI_QUDR4SW}3gMZT;HU4dp( z2eF9hstc5rSgZ0C^?%Xq!RwV`Fp9MQaIo#I#?KZ^TSl1Lk9iU`@hQgTgWXUtdX3b! z9K06!Is{JznjQG$y*9*RNRzLJ?0_ySV3Ntp3-#`u@Gh%8?PtzGC?IK+p)jv26-^uvu`V+8vmPb#QPwo_!2m{_l zSZ^7<9X_81@9$@h_1$4a;L8ZRjRQAbcw8P&`C7f+4z0f(S>JM24)1Xz7Q2q4;Jn_u zJ;0qfdj5P_&+Nhy$ZX$y`pHxU+th9vmQ_XcZnss~dG8pBC}MtVW#2$Ski~Rs@&>=D z{3SZvwBogusdMM%GTQs+=;6ZS_`~;=>u1Z_Nj*oxkgFio)>EF0DKE6t=Nq$DuNU6d zZr30a;mXBv{oC!E{?X`h#dOi3j4M|+1D#+@{AAO!SxnG8BR4{1h|F5<_Lbd5zIj>RKt{2qm=-+{P@_2OV+Ke z%Snhd1KcXm2KKrFmd{W_Iz=C=;dZ^hMQXymwSByjfF6L$QX_ZEL+g$2B6qV9@?Qx0 zD!L;f^%-|Y%v}d*zf_7w@d$<&2w|fYA;Ga68YD8l`^Gr8w-i z-3s)4Xj%V%guMk&T-(+yjJvzLyL*t}*0{U7LxKf&cXxMpcXubaJHZnO@;c|-d*40Z z|K9tni%n70j5)?wd#|2r?p}N57{?bo4T{>QB-9H~+2<2Uq*ouFO!Js&?XCQw>P5FE)`21nvWCTyujGx;$cB zj;X-47oP&se9j$Yw`_UjI=nqOp#d3voL<4EG5Uil>O*(Nu4>2# z5yG0zvpU@Z{PV=qyKZ%EjtBRu__JR(YlgikjY-bV1!B^t{TXId*SALsPEI&3eSR?H}EPVy(kQl?8fZF$m~RxJ8A?(Z9nowu`@ zSSo+oyTu%i#is70!V^xrS}bpV(l^?~s5w(AJtC^k_+CoHX&18kP`05R`|j;-R$L&e zfUUWlU6|6@Xgxt(Yw0t=udI>jt0r= zdUk}?*wHlMX1eeg;=b74S#kXKjCWw(qgcvSG-J-+Y<+IPx7;+&yi^W7u_IjjZgN|< zl@z(ne0GKgyML!b7@#C?aE(p;wcU+_*YVxyyZ;$`kNubN7NHqim1GU1&~-dIWi7}9XH=zoPLgvZv7Z-!%zJA83p~oQ!Z+pl@*FALzbKr zCQSMh3Du!r+5JkcJ`mRe^PYG=2??IjT7`hkW%?7oC@frNv)owESjq?6k3O za$BOoF`{1*4h$wL)Atg_5v9)SWk&s-6NB)xF)p%MMH7FwU3zGB$6-}=%~h8UVwt{- z8#;S-HpHBlPe6z_Y5csC*TNsLlRffMuJr#_ov9Lhd7kG-Ls;q4^yp0)-RH=Y`z+!1=6mT`e3PY~bZSW{viQ}6 z7e^*leZ`Ihn27but4nCe;UXeQTttvcN7W{1^{B$? zIIBddI(eB7_xlmD*wt&v!VK*Xdd(EAY5PNNztG%`DzW#;)ewh$yOfF%7gE!LX`EuRcrG&*M;=V)}) zKnE!cIr#VqncHv~ZZ)&|Yqw_)Z!O{+WLMI*un{$5?_q0#EK(ocm#f=dW{=D4Id#as z6UZCr*XGdPL9jG|xlf=BLy9|X^RcktIPWc+*FU5cb)lP5{2X=Ja+nxy_B`6xu-d)v zPD+>WMRuh>^x_DKk&f53JTGZTJDrS1llwM|P<+;GKL$uni6Jm|jyBe%`)ht0UB{%V zCm&pgu#>0PcHdtkSmbGWeqh3w4i@{%io$8x6)9gLF%%{{+W7Uiu)?gCtXA>44)R36 zRdtLl?`~=eAV6HpTlt`ec&Wr67vWz|FS&eMrT5w>?7c=j(P3HWWci`P<>;`xtthIF z-;B`-K3PV&iEmhEhcM86##tK!e5RCvmR5?!N$fy(y(Au>%tV{uZFnIL0;epEzu%v+;7LrJ{ZB| zRJC7RB=@#8`GDM_sdu+c*<-&fbmICD;2jfD*E?{xs*#=Q=wl!eCo>r*b>X|6z&C>X3(qOd`CH>33HMKuCwq2mHtG_+Rp_Btn`sXrdM>5g=pzpBK zdz<^OJC9Be*_LcCuF&1hfVR|ou311(yV3Qv(Dl>3Q!EL2^YCZb zQoU^M4T0-j4Ah&IQx}s+1tC#3he^OEil>m)m7-SlJ{>_^+OB4*F3#toRX$~H?ktW> z&-vh1^WxSJUc*xY%MBfH7Hz1IidOY>1%ZodB?|P=)|Bq5Th*QY#o0Kq{RS0ekBPl% z&a-OFo0QpVIEQLj2YJEJ))<5>#1oKGeb>Eet+Q$)Bpg2I?@ucrQ7QiU=hbQ@lCz#R z813_W)n?2#0xs>p9@r_EJ1&<*zq`5H$a~rV_fDw{59rto=p-sg*O2eI57JJTW9zxw zsC(L^frrfaw{&xY6q*^9dDl0#Hoto__6@lzfE$vY4*Xm7X0Ho+{a|e6iRut&KvnTLa0Pip@r^cf$uS14BLu2~>7NWQ0#rFx5hh0KCNArlVkLz3^yQJyF!1#_{cwZX*MpnZ%+5s6eu zV-_=<#TY@bH-aJ;GrT1aL|W@iaitRjF|>pV$@4syRN?`utthp>w*2}TLO2gAW05Ab z9_-LA1O~+Uw@3}Y*zRozOvB5k&k!R)Fux+ZC#M|aSImxErGBF|>J)jDqxiRh_74Xx zf_#R6L0!v-b)3c7qF2AlP{SibVb6D2U!Y^TtF?ncbv1>%4~Dr+A4uzG{Nn+GkLet! z*J=VF7zPAkx(`J~VUQJ`h%!1zlf2Qwxa3O7lcyCdHJrVNB)9q@xWf@!pI`8W1CA)Pv&xNdbo_r8*=_`J2HKsxms#f3pl;3vW%PGlyA zqfh80{(cgkAQ}KU4hE$Y_%Y}|=$G4%O8icb^m}x8Fm-lgT4x~iK4rtJQNfvyqpOLd zr;Ve#OKKuCSQe)2e)q<}pO5&5K{`1;CK`)c(rDD>Yt$0$SSwlhB7U+eV|!}*Gs)Yi z?s3Ct6lTBN8lCo;=;!F-?D6X3pEb#;SlLD9YwD`t-#0 zyJQ3z+g~zIMO{8xkvA`UkKFr@lM3M@*y&g)>Brc3CZ`+TEO_p=wL3}{);BM_T|QIO z+f(xHZ`EFJN?GnzfboFTPjIz6UHU<*xleWU$B!1DzPP`QxWD=H=PJmY%eE!sCoPrK zngYxxHP~qC_vqIX?_SIp2QETacfwYgg(&e1Otm%5GYl-F@*NgQU?en7Xk>SE-AbTp za|bW}7Ph+6v-$&g1=DHWG)V3}X08I6E)qQrb-h=~BGvBT)cWEnn2UrnT&dYBDrfd2 z@TM~wjOPu7)S4P^kCBAoyb}ZUN{W=CrZaE z@yH%UMiPVjdg0B>^o6+l+bG-T&-x$5=O|r1iCyovrh+h^o}f4@HuH+OzEQd;6F-*Y zBs~`?4CicqeM`XFdj#SQU8LrsMKiN8GO$lGbBxTjevTjTc9U~|1G<)$*`1zw^Rn^t zrMlL`ZlJ};SII20`#oWy+e}|b9Mr)5ZGF-b?iV1izs)r8j-H#QT;5Sz(thhDDySt(13CZ?QlV9?1YV6Ac0%I)`(VYJ)-Nfr^GG9$TuK%@ z3u_Y-9b0-u3REMS$%ha`mC)EzXeMFXxAZrER?!FD%Ee{+61;9nua$fY%X|CE5{+`QQGmm<*T+_E45Dc0;VR=II3db`=^|m10lx_rP+(Wi8vp3znVI0F)8Q9M( zjo2k9QzU8Y?XPYi%Gq&_4>25K>@Gu;Vdjq@;OQZjP#8Fr8BRUg5?Ul!1zJyRVdf~) zBpHt`!Pq8#pDKo6=cn}3K63A}K$)IGO(n@#21hW(E5KDWOtKu& zFj&v8szsP*@WK^i|AX<;J`l;;M}*lBY-!FcN17qR(dhDg0aC20#XyQj5vaKH1u_?fWLHY4fP$feRVZEd(WZvR-|t@qNb z_L1*=czc`N7s|XsZZvh0cCbok`B=Aa9?OXWj4s?OoCQxA2wpy=5B8rsEl1>*A({{2 zGm081JJ*NQa}$PESvcZt2V#1yS174s7~E}$ieB>y3nPF@6Kj)Hdc4%`wh|K4dR?wA zdw#rcM^AqhYyK1mmU~18>3i6mqwvj9B}~P$f8Umv0-K^0HP8Q; zj*Z~jr^S{+#0@k^;?({$#0i5HT)zcPKRUJu;86+ReoV_Oj;W!zJrG=?wEY>gdb434 zMNxm|NyJ0M10NKRrj~4R@7iKg0xbz!*fQu&!f60yeSPRo@+!Xzk61eUPCeCVQbj)k z&o-|s7+$`xD;N)_-E5dLuPf^+@Gjtv3yeciU%X^+Yc?gCf`-{|4&msrkcNQuIp2o< zX!)nqc~Wafm`u){vZ^BJ5u>gp-Vvi|-3%i=5$Ms8EpZZd(jOIfbZmrwtMC8~GS{~a z8fn4+xz?Jq0P)BafT zr2KD)r!t@w=>HEZMvM-FhYz7nLK_nAti35bCMIv!@rGBedyEiTKly-ssg8SN$h4lz zn6l=TiE6U5YlrCUo!R<PqfnA!g(+S?qg6w? zLieC{`n?a5pgf7;it|2|j%0Q$2g8nHF4gcQqLDz5{8I7gcruC?YA7O#H~}ML<=2IuFrRhVuM5H&xxtp!MMU9^dGKD7Nhx9 zjo|fA#)#6<#7;FPQjnxt&e34vKryJ=bSq)WpX&qEzvxw=;dIW%y{aG>v7WD#K!2k&47Ogcl-XD8D>mAIUk5 z3_gU11k+5h;<&`+Mq`ut8EBfQvW8mL1&(sFT8eHV4Z{!~ASfk*)A)$GIxkrd+h!;P z!5DD}kFoE3v@DZxr3?dkM3tG)HH}MHfm8sUcj5>7tz6qlz$*WUW+BEshDx0H-Xj6`2?DQYr06XMQ6pfr)vHQ&teK${J;H zkUsmV-!?De&-_KFzA8GdA|ByMlNYf*DOF~?J9CnlFePjMNJb-ynLIVFC{7uOrm8fa zgP}%IM6UzcP7SPUDQjFHlQA&r9^M}M1 z4v3}aha%CRxYvUBi#C*Wgzd5HDU{Uv(hDMuu;%cjHa885ZrXyeQ82hiY--;3Y5hvS z-Ao~W+&Y755Xz3ZsUuFxfL)_s<|bq4&VzuG;1dhUD$~)Qvc0CC5ll?EqF9qGB~dR$ zQxE2GcqLV+k}q_qI-B`FnKjVDb1Z0V0(rvVa#U(bG!XfdBW`lTre?Ae%@_ipaL zf!WnR{}nTSd@FzI5D69<4dAgb23%-R(mrg0nZ%9J)6I3L;wk-68UhDYN}&o=3Q!aT zk8|XUXWW*8wZKr2+156G#HJvS;z`Zt-ee680xtqm;&oqOh$ZD0>puj?lHz$ zF>5(&iO8BHduu9^k*WiGR0nrxNJ2Xr(B|-kYxuCCg?H(qTF(e*NEBIjrnG+wx$BV= zWqmjl&U-LTOv&()dEe4?dBCP8j|Nb=NHX9v*FY;a z{r~#R?>=CO*C2`^Cury&WTLQTr3@RI`LDPjY16UBCzJ#+1Uwk!4khV}S2SE(i@bNI zywd_y-lok+BJj$dp?Qe7)1q@ho67WNVy^W^++c5o^qg%PX1X53(uI&pg80`v zR?U$a2l46i-8Isl*nH}mZe*H{2#xG35arb_>?tTGb_!a2^l9}WQ<`w|3oEo6L#`Dd ze0u|i0e8h-24}QVkfv&OH|JqomFW2iWVW%-z9-`lpZur;ABamE?edV2RqKC?FE8ED< zZ4BchIiJ%@g>%7j3dN#Q_1#B$`I(Y4fDsQZ%M!5$P80kEW_Cn`;I4BkOb}!>OfZeL zcj*8*M)-A4c?kCwdWaasH;*IWS0LzZC=Jq9+#4xjWtqS}@~%agP?KEEao~KP$?qK` zq1cLrFcu3`-@dG7iy5+azh8lfJmRmQx6q5M5x;;@-Z$57Z3RqHf0(v!g$V%z3H=>N zAUtK}7TQ$zGw{8k{6oYYc)mAYZpbHr>I+glNBkLn&~b!GcgVRD_;(GeFN=v!`6#h~|1VK4 z9=|{T`RCnp#lJ*xLK7_qbjv=Ce2)GF{tI^>nK7{vcpF3}!q?+fphAXxAPY#}WhICA zuXtR$7=OHw8>QJt&cpalN-)&VLf{DW?7yUt`~Mn*`P(t!*Zj&`XzGmN=Op)&V7?DE zh`$}f5vl1iA<@@<7-!7bKTEjYZ$3n7#i&MqMuXR8_K%!f zXnaTDXzU}Gm;mJ{!o8s&9XBQ@xNF*T?<4nd?jxH|F#`eH)_k6=nl~B)kmgTBF9Ee7xPvxp_;$!(MgGkgZk=?I)xR3!-y zp0;J}@sNF%By2(CR8RyqgpCobvqZmdn%s34;ME9D6X2ttc+TBGpN)ur1Z2u&SI!h z6;g?yfm_qS;8?X4N;n(+?a3?EF$MQv&B|i^QSvq^8v^3md3N)Ns}3ZzT^1ZRbv?&l z)ir|xVmwKGH_gvft zf&yH=W*-A#O8>x={tcrCD1BC*B>eM#I$6h7C=i9TF5B(vdqF^GT!0Jl7h~qTP^8X* z`pNI%dmLZatcZTAjAq~epTRx>N_j8l2dqLCZG#u5R1~rQMQ1&HYmG2w?T5EVRW=U5 zB{ch3=~8}_-G`;m>bhoe6AEjW)fITm-;HI{zNOG(B&O_m31r-^D2>_3Wo@vL7 zOt%aVnbbZYF@(}~X8v2(%V=mbda$fxAKvNsi&^MPO(=8($BfPkj#ht2o@qTiDW2&k zgrc%VZ%t^SZbCUqc-jpMK?B#XJu+J+GbKA*GbT(oCyV+{Dsf|~2I-K1+k~ayCaqEc z&Ed4M+@|-vS+$ERtIL8)tA0Q1GJb7Uk)(3WR++&H}ZDqaaf|_sPOxYAuoG2|ENX?(B+K23dDnq-rBk z3#c89oxNFT+`@ErE4eE|xGvTv!oKOH=;4gdR ziha7}XqkV$9yvSRF|mA9d)vLLV~EF}PZ*0k1vT{Hs3r^qe^QZ#d+c$pRyn00yOO1$ zB%2ncKTB6f8v#rKsG*vJ9MnY_{k4sAwfCpGpVPAEu|31BkQjE5v~U&%1bqcJ3yc?_ zj`PyTL~61XX0$=V?3XFhrcO|2+1Cp*r+|~R#AYnS(GbE>QBjv}y7OlxGo%UWy@4EB zYO?A{8tOkGsevJR&r+Sy6be}ADlObQVL$WwJA)mGAvl=RQ6JQ^e_i{5$ZkU_!rPw3 zrN&E(U}ereTjGN7T3XNL2#BC4V?qcLuMRC85VZQ34Og`B@Kg zytu=OVT6KXtHb`zWK~&?%rZ}kIyBUJN&ty@_d~3m)*6~H$fHB&@2W>dEJeZJ-o4wz zkBShdM0n!^b@?Ho|5$NE@j%YKTP|Q3>&%7>oZ~;F$R=Q;B@~sF>*dJv%BoOpQ*TBld|JYqkk&{-x44`gxrD)Ogds>u zoU~F&PW%@qE_Tl*KVBMY=QtbcLP>a#`JDMd|=nxbPr#GXF_y>2ej5HL>JQK39ZW;gWcMm-Wm~?B7!0dJACXSb96|^t!$K^6^yVbOIwK(kb=bo!FXk&#*3oz_e)PgM2-{X&n?V^r1%!) zMV2s$+qjST49Zfs=7NU9qyj~ZF{{1Laf^aj*Py(Rf4!E?Fb-A0d87A(avBUk4ee;S z;uhCn16g)`i_FKZ^mt^2@Ik--Z5ivZOT6fY+3xD!XV z7nrz$97Soc#aR4e=7K0mDM_h}gb2Vb=<&c&IYBzKIbTx*AZetVAm;ZhHJz~7q1vhC zEE8{mec0qkI%Y+DpA(Q3(T;2KmBl26;(pTNFH#lv$bMM?S#-FNyvrhhY*ov{ZADv> z(mjR<OUUj(Al=hnoWwSnWr+bvCx-}4&XBBC2sO(aE89Y-)Z(Lkt169WL<_t9g z*_HEKSL)RKJP3PAKL0B*Ga+!UwT+MqTVhZaNY8!Lv(#SDzs{kHQqxk%rtuZ-!$O$k zv~g5819b4=7Jcwoz>51QZ;2^wfS1pS%@hI7ij$auyE5}yT( zE#{%VaE+3PE zfxmdmf<}kdp#Z`l?uTx@zc{cA0*0lPI!iN2Mtg_rFAhALBQFsnlcouc_#?AsPXZG( zdbN;|u&ku0wI|6Wfo1SU6$F;V#;0`gmU$qODGKyp!mNd+%PTD5!>Udzf{oc+o{{v=v_~H`pTKYGTJr*wX{d$yq`@c!CG2Gqx zCT72W{EwzIg+dYrz2G1qC$Rt3_R7V~)z!-0;;(&H&FWju-+3^4c1jJ~_RL{hoa7E@ z&nW7)<*96e4+#Ki_y%J4z@31QudqYD5iy=(o_2MKdG|ci+v74cs=%Cu_$3c9*;o*c zIba?{jFz5`>wbQ<)b`bggC!*_f`!&lkk1eITgUs=fgqHl#FY^mqzK#P=Gb%H3fYxz6fa{lhqGO_ zG~KF=_UE4mj1Rm{I*G*$Hb?_psML5k$0Wh)%4S{M?*`qZZI6I2KQQYLrY^1qccYwt zDr?kYofMrQB&AT|1Y!@RE5t9oSdFBOEy*Oq; zGB0*U$7Nt39E(nwyGKX8P*DBFREQWM3^t zQxT*eQAW!{+9nHIlx8?fphv=0YuSmn&zwgs`6AJ9$3`VBnA<0b<S0!oAN*9?TQV?x1hML%(u}XC%^2F6PwYW5`nO< z72g=wPh$#FgBMy3kHhO*qfBSr12Q?ien-~~W;J+Tr@0Rgt4Y61TIY03Im3#zYX#w!1H!AH;aTMx1zfXsRI3>+q?9GFJ2 zeokP+A?!>NX+d@*pk!?ZZibqE`N^)uh12;!MS4bBzU_-Q&9p0>|7X8F8eh@zGm4XNF6=x#5~Quc1>Ykq5=Im+PJ>JeXOFLYCz*mRCZLivdU?Xm zGi*b3%!ol;IEhWiTP{HwVBk$0p^J2XpM^^m7lZ(!h)SM%u znj*_m3B{x$@Kz?%P&&1e;WQ#9Dx(Z^t*U>9ZmxCj3*^;Qxr0W)Qfa-Oe=zS^ppN}W z34%&4TR~N;sdYCx!u?xU+_SzvpF60)y{P%2+6`Fg?&J4M7&p&u#M+v2U2cK4!Hbdz z4NqA1ToVsBR{S(^btmn+aUMpG{Ch{RvaxX;^)9!gK3%gc`<&skv%QVQLF9|u`_fTn zgAXNauBXKWD|c=>><(u1h1_9NSG43^pU(sM|bW4&n5XN19DNI)aeGbep}Hvbl&_Jf_;&k0T9_t@ zkhP5fyC-+jfq-EC`;>IGG_x~f{_Dv4SBEogd0@9noSvT=C>@7OFB@(V9paa3S1Tom zXsx2LO=3E>G)g3A6g`MnPJMnxTXlnQmo0;J)xz+X3vU_rge^#?1~|0q5j0B9$HVg9 zDWONno&~&n4U}(|FG7hxe}_5Ay*+6kDSIH2?35rqjb1f-1-=ij;O&CFAWe42+F@}=%ih&%OV9rC#;YcTeojA zc%b~oy2%gyzOpqBvjKyEQS5dF2IBHg6i?iw8(D!jnI=tICKCE!kLu%yE^Y{qYSI0GF+~c57Hj@a7jOOy$nmf+D z+RNkPWTur>MFt1tjehOwmD)ll_1;`du{ixR#-mT=g0yrT*f0lVg6m|o^OjU%a!HCp z=-UU^Lc1TH%!Xh2_1-=@({3p>xnmT!l!VS9&OFY~Rb3yr!JI_Y@A}cCO-GH}l zZ#2y2GvP%NG?s!xb5>c|h9>3t+QKENtS?SvF=fnHrUlT%$}6cCOwkJVT0R)9 zC3@3^=!JcALVG{{&HV23Li_9D`Kv>YcQeRXV&9JM%Vn!UudW}8^w33Z?%VDD`h|nw z$9*WZcpD;AsPra?S6CqbDafUw0-Zqn&LO8U^f{zhkdr zl|5aMXQJ>i9@A#g1(|%Z9a$kNImLF(wCVf=N`S@pR?eTz-+`pnOxUsA77Cjdm8P? z2MF$av8j-(l@w?SR-Dv%ro;rl?}v57#%nfw-WoJnC5W;%AAobgRO$|q8;2$Ir5R4Zj)MdyF-)!5*2#oWB!@}gJeX$FFjPpAr@NiY_>In>?4jfI z4I?E537hlbrz9UShR#y>%JRfVu`Cet8%4q90jRZnS(UX z!(UehXQn~J=@zl1g6n*Ova(st zYFT?pJNc(t*0kGatx#t4L#aXqwve)*}+l{ueb5yRVlJAocy6ZWwM(2d0BgAN@us@Zn zSmY_!s)i3Ke%(uS3{In)CwS-q$DT<-U)aM}i+mb0#gAg3=2u09t<$(bgp5=it*uqP zv~3;v^9Px=;>c-1<8ulbstxbY9owqxATs)}<`B{)gy(NvQYt1TKB)SD?x9I3&bVi@ zG(J#7Vi{QOc^H7y{)w?boM?E?P@tWu`?4fVtf!W9lm(L2(2fYXU$&?ySy6$} z(_;DMk?Dz4!`d9HjUDd_Zs?vcF1tpmNsN|j`cXNZInoXVvmrH9I(dvK4Fv*Gwzx5K zNQ*(cLTb}ISZ<2O@gk+kO^`PoQtFM>1($h^N(Iuy13II86cQ6~h6M zwi+p3RLvZClFY|el)dY|>V!Cos4q-4P&`Ig)r>h?l)<%aaG9pgLCfp^Lzm#h(Q-FX z4>eF1(LZ$k-5vHn>i%jC8$DYO%+FDvcDofwn=C8LENJpIpU}Y8KRc3E#?7{b6{B~^ zN^SQPsDR_LZ4-X{bg}bAu51&bik&YjsYv!ab$oE*I=5K!wNEB#acZKMU^xdZdbuwA z)NkExYIz$jCPIeW&Qj`7J2pq56GG8x3H$z+n_)^KfXF_+o#zVO^j+DWZKAVGd_ zWLtzo1iM}Dl+hJP*kR*0#!T1LiDtqR`j}SF5z&8)yCyY@@~$qgCRg66F7&qg2KLVZ zZSItl-vbIZ1`5adhwwj=6`dU%UH%%??6`XSKo$(~uRQ~I`{S&65SAEWQXsT8%QAX| z?tYZELNOsx+z}n6Pv4$yc3DidkW1NfdqN!z>f?`R3r+XA?nGkI zZ84!GnKx4?u1bDgf4&JUg46oiE4*NjrinyS7F#IL3&FaO`P&xtq>pq3-*Z)|h#m$9=+W>1a z;lS+fKWh$qH#=i9XJA$4Pj)x0xn;l4gVViJDjYAN+Z>+A0m0E!AgrzzEkWLV4?=}g zcb+@O%CdPadu1|BUzIIX7Qrru_GK~}-FJug-5c-<`Rny2Fku@h9K(g{I#8!{N0i}M zc53C|{b%Ya)#XoR*mX3tnYlJ!VXKe5_t@Frs2dBAXmquuG@5+hsc+Z5OQlEI@<(%r z4LqdmYu+T)9@UUCE&Sxc8>$8-U zPM^APzW*GVFBT>nF-6Kw8Dkj%=Ohj5u*yKs`|a1$bP+G+*Db(?5abS(B-dulRd~0$ zZUy=)lE&Wr*~-F~VF3rj0wk1ZNd=n`NL>`Qc;&9rT&WBFX6iPnV!!&=j^b|auL_g( zN2at4!?KtgB5W-Mm+WcUEirS9@xS1|lioQ?DW(@)fon;5e|DHT2B-X+VT4Vx z+Nk^@h<;e)l!tFe(A>C$a!yQKbIXoI=i=SLLnJ-tc4Pf+-M!$1c^HbS-XeN9=Qn`I zRrfe)Ntisas1)zq3EY4_EK0a%;vxxMS| z8##Tk=G(!JgP z@O}S4Y9bCd4&zBISLckbf5E!-&VvWAor+n#n1ivG=hkDYMgX(jV5hHC2b;%NQ<(|{ z>)zj^oqj0HnP7d|ndZA|*5m#S(*s3i(0yF(1a+*$ad9e~;r(d`xAV4H&EgfN21%|a zBw8<EgB@poO_mH4L74>z0y6fG#Hs9?D@#!(J zCuYCfdmh-f*Vg5kSQyseVlDLvuwT|dJzbAJp&qaHT~F1CATqEFcHyn{A-LEW=Ho(H z8;Y_|@dmF`f8=j}!2ff`Di~X_=!OIV2_gXj!3NG)z{cHwO;f;?7x4PDH?p#2vUW7H zxKg)qL|4NQ?DXQMwVOtvVZ?wQ=w$0FV*E@G#%1-rB#EntvDPU>I#C`ygUaaZVhSKT z{srVQRKWYA9z)eN%SmxQfKORmSP~iq9s_5D%=(s70K)+Mc5|x;Rxv2vVCHgb{jDeK ze#>Q+*XzW-V6?zsaPAJx3zh`|+{|6%p{ZxmzPZMcr&8t;lgkz4w6%R;55xw{5@DjC zamiS_!?s;|2c97+fMYC#BUJ|uo0kC7FVK3g!|4o$1p`@uc=Mx{d>S|lf>1$vjFGqF z$G3vqfPU3X0(G^R)1PAqjlcLImP2YBFgBgETG^F$$Cu2k#=!}ocg~3HzjE=2YbDK9 zPc^Mo*tbTS7^A@q2sr(kX~|4rJa&N$BYn0#^ewWG6(ziu8|sH^dA=v8F;evwbqcRZ z*Wguy8hLJ*x36Z4;&0PKA#ptG$T$T^!%&am1Z}n1?TzzFtpEY^_EF{y8{?-HLp`%( zzSJvQ7)Hktj^A4em|jo^@ws=fPjH;XNCKbhqo3fPaSVzWuyW~BGb-$Ed8!3%it$3x zH995;#~R~n(M4zII4x>aV3PQje{F8pU4|X?Jwk&gV_M4@qfit}3^V<*!(O^ISw z%9c&>dZTtQ5Nd?GuRXo*0zu#$j%ySrkQWZUXDCwy?+|w?C45_8YK-L z{KX(CEY?Ktu9G-8wp5I`&n)rJhk|Ue7=_JoQ@CjtQrfvSZeK`d=)w$DD|8T29@pcu zhCHwK;d+1fC7#q|5Oy$Gkme{jLkkZe4J9uoUhJ$sy^o1S5iPiV>^*$5Q*>*5zq9z| z(*vE`{W=~LAk?2bREZtI((0F>M854qiA+lyc!<|=o6;XVE4UP#;Hpu5idZuXaJQrm zYEDk2%m1c5U@d6V{B(oD;whS*JUoe|AKXisrJ-E1fPuU+?E zca;D12g&!Z9%QfF1-$rbVdP4OAS;=ctJmNBzma3q_C)Bn>F#X}@1E{(O1~`ny6eD_ z*{ig#JbiUav;X<>*-iVLYHqE&Rr*dkL_uZcq}OxSy|LOA{_>65QT0aPJ;g@08EY4Q z$hsK+ezI?6+UJ~L!Mar}lWkwjGd%l*i^ZqQ+o-cirNg%=o$bQ=1ywHbC0h5*)jm5M zQqyOd@tb>IB)jmor-BXFRU6jKRF-+L=v+~vY67G4v z%NJeju84bS&J=S`p!eTh$=U>&7JSq zlDWDyi+Thjln+bJd?6>%z4Oy5g@1{u5q%%5YEMnLVj}WJf=lOcq0YmKc?p?km|w6b zJ!$Vft$T?#{>i2O_^A`OryYJag>%~5yUKIg&-tENFMPXwNm^R3%v9UVPgCaXUUqIz z^|d!mhpN{c-8SixQFUdh@7qVJKdSD^9gKeedHs|p9>K+@UtMdLt9x>B>ub5{n#aqQ z&#QZO^ZC5`g~g|@O^>Tfy}f$<-k;ZQTi>hPp8b4XzumphC-2q%w*UL)^x^ogGL}_q zzE|9TnSZY4_ucP*)9WqjA3j>YKlaz(e*6E6N(~S2PO-~~y}{C^+M-+)C4Sf}xN+i# z$3>-wyTo3`u5Rl;A3b?e;>`_})!!#@{ybN#{OXAF%9+CH-+Zn7y@R!OZ#{JDe{d>u ztLiH&zLzq27Ru=@KMS6E@s(`gU)IDXm9d}^EAijBoywMc{Q$a()qbBpO}&m)p0+Ujw!0 zurM$PplGiLiomre78GD}weZtNcZ`ARKFXk5J_8sK;F$xU5v936zhl#$*B~uq1ho7# z&ctdWOj&V2Vkn3 z(|z7eaf7q&RQK^4VT7ECXX^$gYCnKQ(^SN0Vvr1mz^Mw2LWfo5P4ncmQ#h)t9uCv& zFnrt_Rd#zB_j4zIknoqvd|70s*37U?Lud`){T6O~t|9%|xIVt$rN(W7q0ZS#!>M+q zrvSxc5D|d(W7oc$*?mll;}E8{B=TBKcOAnfWcLJM8%$k2^Aj>t>&-zR`)Eaz;bXh5 zPPDqO^RQC3m3ZLM+zPmfRf*4BShs7|%yV)59`*98b zVbsrD8X`5SZDKJ=BOH7@Z%&62ZsgN(+ z{cZfT&;ck@xZK&HB59zF(?fi4wqs^FpO#0k$WUk(q-Clz7nrlqqrE|QQQu~?3YP@m z9zf=yz8$P%ml|uYX>3b6 zPU~Zv@<+Y03+A6e5=v@@9+cNG6YUuNyjJysMbphY@AsJ~DJHbMCM{jpgH-$+r-+YP zYm(1&8)6oH;YOzQxX=ExKw+N|)vQ6M`823N=%50b1I(120gf&#W&mf4-zRxS{Fq`N zE1J}ukJPM!X808voRlm*_~DliGFSnNEw`Lp3U*_e+!Gr+`S!Zm3~t050z+4h!fQMY zO^{|G@gXFkac2SMUl4V$Usp_VR-ZDZ==mxVgL}`qA7?J9t@zDGyCYQakr1jgA!XCp z4CLp-_$m5pxj1J(Pm*Ocs}|<`6jwu6So*9f8c*9wflRuGMfWQpfH*vXBEAm2q^Xb? zEFHZ#2RuBf-$Z`W5Nc+z3_i$t%MQv7zfxCe`{%kI8~#co^2(>`)frca8? zMFVr-R`uN00sRFvL$kBnt4uCb{vw~un>ng6UmC}FX_8HV>1#PCL+(OWq3{`B@2)Sb z+0wqsVik#{L&>(v{9x>y$o*O8_xAqv-6A2wJE9-#OrhKCBc98<$7fW z_XyM%J18(Pw14)+#L@AOwy2LetgxcBKQTZVeEMPyE2e@MA2=^IEwP4Q9iQGbJ4*f` z4yuK18|eEGhRyexvqu%6orsEgHu#PTD3{#($QAF44y$jnE9eut(TZl>> zyVczHpC>9eEUtf3VO9E42KiF;vCOl0N{H+I&ds4tQX(>nG=#|u2h^BnnKkWFm^7{e zDFK^t$NBh2C>uoYPdByZztFR-?DcR3XDCFEh#4I(XOQmu5q5FS@;60+-*2QH%Q8-B zSHN(;)F0K6s@0Zggo!0do#b=1zF<`uc&L3-c2$>Gbr6@Zjtl0E@AJAQP#u}rf$ z8e)ocAB#Ir5w3(OVp&5W0B9LLLg zi1w-T;%5}K+$|3Jh9g&8Q!1=73GfX!D=yQHY_?)<#LX^?iTD{LIM=ocT8nnzcX1>O z(o%*D8&SLnw_#yHi`vH&TVz&c`Q8tjQ!WY%Ex$}UU$S%5^*EjImMhvfj7`Yy-<4BK zujQrm^^bFuvIZdFtQTT%8tfLs2`R2d5z5!_Gm#p$X==ozxJ_tDYi`BwPaA`KEWP|H z=+Y@8b}OZAE25(*?x|xiVOlWEmHNPRr*6&OcY_h)3EgionbA?9{3+^2E%KGa&L%Ne zIoqC!9a_fa6#gNR<7k4DQEGg`q&Jf^#SF~ZL5w)1;KqIYU8b1#g6j&V966^Np_YTa@4R2i`bFOdctf~;C1@GP-HQR02$L?7^-LKE2M-Nl=8w(W%T z@N$ajoR*vZ9-~WD^muqPv8sdnO^?~a=lzPpn2bH(j#5}`Y5l~BG~Gp2^8xZv+dxv2 z6S%>1yd(wX+2ETd^|>}9arqtn;qF|Jo#3yy;|;U+HB_iy?axS^pRMrkY$&#;rb*!( zDyjX_*N~P=Qrr@HD8Ho}G$goimRe3t(&WkB92pf{oi%^Sa?ZQB7jzWhIPU7~?lc12 zOA^IEKW`Ie#H_0ulTRGGg{d-OtvF34Oxg_6txtYDx76>U0c+%tm(xQg;D>4HS)vAW zP~swje9D$Ot`6DdFnL!hm3!oM%o zKX)MiykP&_jeHeT3S!0keD;da8y`v{zD*dBm^qfOo*}thM*N{@=*=rkUW)LaykQ|kc7!8~2)Fr&v~5+!wB8>H^`3vj2q2}g$8lLM*4#HTz)T#pq+NYwsfs;S66PH(eti-Y%ti+ zqyt#I8=;AJM`q0#hXTjU@%QhzA7f68{HVx8Ni21KJ6rV5G@ptlPOsVkz!y9pfrtH558czuq?H$km(w(ng(1M} zL(JR5)52MFkx0|gj=}xI+C^LPT-(#Z%&(ia(9oSj&zD-kSNpft^$-@|GKpbQ(fL&0 zL1^;c*4WBXQ`yVd(Ph2osvS>}2uXQQcZbqvzOcyJw`=P1(VN;CfUgoht(pdA{nnZ!t&1V zFO;{2LWAy&SXQ1uqTDz9)=yB!hE5*We0jgWh=@-JooKCtHfr|X{L+5JKw(NhYQKRu z#M`!+i_;_bu^pSb2fPo+upUdnW*u24(P>ZTi8q%XsYEwx;s2!~r%x`?gizPJO+z&X*gBM@!XY;y$O1H5Swj;5R7} zADPS(vbX-Khc45es-cTSB0$dw^)?@Y6HKzI@Yw5W zROo`xQw;v8&^px6s!EZUY9n7A5ntXAmiD$7ix6DDm)C$R6psrt{=z@_#L zL7@uwv(wOIp3_VorK2}r!!w{zWtPLj8)koJQe^XT*NNi6N(^B8e)p|Lw@W&cptDs^ zn)`w7v76iLj*W`u^?qgFjpqQ7ujFFjtu2g@`qos|(~u<(uZutvA$1$B_S?<}WRo(~ ztzuL*Rgzu}64P?weo5ajI-jr^psQQw_0Wm+01bkn`a^i&j5;uPlOi#TwpntI27y=^ zG}OZ&qEZb2{kPBf(r@$b&ES4qW)W7{L2<>^0s^1Du$A&;!iM=7WriOfiP)SB|n^#yuVnWhK)C;r`X?1s3C)=e zna6(-oT*TNMiBl`k<<=tp7TE>{u?UR>#`CjFc}o}PhoBZAU&#RAg@^UyG*2rO#da3 zi4=~;6A|tY)w2oi4QTDZqy9CN?;=q@>DJbXX_(0`sXIs7Nv!GWd-eeCr{kwfGT)Zi z{Q*HLAerWCY;kj=N9TrL3#Q(py$hkF_Uyh>+tSdO-790H5VKy=^Vz`K(~WD3fy02e z*mK{)xLeN0MUN}J`@xy4sx6PIUvt7r2YdS?xm)*98zKfxHX$5=@>`#%PSIB}C~P1FNLBr$D#Gba&)|l}={Ap)48uBj@;omgD{}fU50)${4f~ zJ6~GC-m3>^#zUuf%jX*c^E385Z7j)02XQ!4W4mTNi2Cbn3U0*a9YHzx8$^ox;WqId zW<`5DY!7dHzAB>#XKc?`u6{o5XUz$es0HgTVb$|DOlm7cl%uVYT8jxdZ8o(O6D_Yj zYjJ}rxAf|L&WWq*hbJD(UH#EXciCTmTvGFPeR5a(IEgZX6LwTu?*R!lM6ZFfRbn)s z7Wneoe_p6`Fvh$6`+{wIOx+I1c zW#R0Sd9CNRxzYU5LYDXgDro(LQ}FW{ejM3(oOwmF=}zficXCa;w|{C<+hrDc?(9JL zARs?5xV`5m$Bpxz#hC}kO4xHno6w-so)IYc=I#W{)d;3xakp;EGsbVTe4fU${rpNC zG`_M2r}&-&sQhi3I+>v)Y7}!$hk3SX;D!=$CV>%L$<(~!F`Z$_%3x1lf+Bqkp1QAP z$fdHKp#@3H8C`#5zcoJU*N4WON^{q~M68VdE&lMJUzE}Q39B+`jlyO}ha72Fek$=zAQxmb zAM4SZ0=hyLg|;m@OkW>(HX;)~-NO9Q2d_{a%!xMAB24rl-_NF}eO+g2v%W>UnLDR~ z1sif}1Avm!Elq*@UruRQGbBwLXXJ0Msk3cU?vK|)m#>$D172+}PM*NK*TlE^lgF7~ z&xekzChf1yA{n|==K|+XyLXfpe*pP@hitLu0A`va29fuQ75TOp8IM~)tjacEQKE~ zH*o>hj}Y;G9kOd%4+duM#VV!0)hyw3c_5tN;BC>1l zK1A3^4?hxZC|t`U;OnIjy`dL$x^9mVa4i&9(PLv(SP1xMulMi86nmgE4UniSz0{%# zZHTK6OLYvF4_H5Xupi_{yxg6uNHGWj_H_~i@&VZp!GAX z2(36J;%L?(M!iEd>IQ00?nkwPuhig3=^+1+$Px|XG(i%_xf~Rir-W0<(n(1vZdwg- zj*o^;RDfT`kpoA6tcnXB`2u0>ltHcnBgxhR5xozTj@UEZS3VbreK~A^tWw&or$yhD z^Bo_5;i0gOUW`DL^py5^g)HJNe%4y!sxd!p2vU@wH(NsglwpSCq4({U@sIC)QyYyd zTq|d1@e8RMeTfL4-|k-@=LvDkra92;puyOC!QIwmI?Xme za5HD=+5@>FWvnsgM;?H)kLlIS>ja_^ z-LF*W4l{2nxaUSt+OMXWJqt3bGz&=Lsz$csMonkqmw7X2t9J#$LH7i!)SClkZcGK4MlC{_Z!5$5;<60UA1ZjoYqyIL zHOu{Mlk!hiRaaVM8eQ6q+X{J>WObeOZARGQsfLJ}C|{*{WH}T+Oz?`a@8ly|+F8}5 zxQ+@_N+xhz9_+ca-QD8%B7c;0!IRmLAF$M>uLk;333x zlbN9oqt(LhHrkziTI6VCp-SE(kL;;r1fx=5Kz!6*h|Yh2ZR^Z_{-|pE^BpAyzO<~I zs#^=0_avkA5*brv`J?edLs7Tbnp*ezqOAhn%~A=`-Os2yzRb5$6nh~&%O1-Dhg|*? zOTyY-f&9QO6<13fcEG|aRQy>@dFuPm!y0WP#_^0-#i>_fk@RO~`a;-V5)3r@B}`zc zEi)B>DoRebg?;KxP8M9t!#3t6(CvGd8xeASm+c5YCdPI6haKK0lak%kv(Ryqq!c=Z zi}FOIspc|Fr$9+%NLKX^VY6z)JNWc?KC0~9(c>{8@A8|CgFflpY&{!%T78!XVUMEv z@v3ox^H&=9V>#`lh2P^3C&=rq3Fi9#$ByM8zaZb|oNQpi%2zB%I$;Z1zM9|~EGpMr z49@h`56_X9ilJkv%so{+EVvviS|pV_`FR|c^j*hYlgVvGsA*l5kM9h3IDqeY1>cD9 z(1o{nZ3mi~w+S|=V7S;=9SR>G9ACZ{O>B7}M0rnr8bJItdHVz6o~n%V>+0eXwB|^n zMnz_9CWKp>z5QvN+=G@%i+*O?tKR9Ogfs~%E|X9`@(A0Jo2=$ZrpAsj^4Vc$FHA0R zAm^;vx7*OJ3egTH&O9IS}pLaGlq@CX~sPb$N zmLrJtEo4g$US7|&&gLLPEH@_OofYXM+X%l83ZF~5l*9aFv!vF=ykAC&ZTK zTY+u|w|B#hl`4*6lpCJF`?$SixcS8QF+PjqDRNC2J3nk)TW=HZXH*BKqRTb6tKEW| z#|E}5TnD@l9gOT|VjqUrj8io3IZQpDp(sucPc35(k6Cv(N$~kDw?JW!?5&N_G(l+~ z)--`_kuYRO4bQP{^!niGY%T6Fl({>6hr+?t!^cr?Wk-lA!ldtM(Jt-&JlPW$5Vdd} zaTf3$DUgc#8+X$3j;2TXp^fKrj*i(y^xjeT4E2()+Dx2~{9BvS;iM#y%>(r17 zDLU=2&@|_xCh#4Hs(vDCh<*8KPx*OW znmU)qo7bt(1%wlDfRfE)C9KD&zaA8b>9JQGy#6VD2UH_~t9k>YIKW&-9I)??IhF;z z1g$^7SGVvJSq%g;fh_^34F5UNv^LfLQnE z9zq-@zm`s-y0%2(g%{koxFn#za$`Z?i@iJ}AMK!>zHO zEM3xs@Re@DIu{35qD|gM6Vfj=te0z)sLen)+`CDY%`^1Kdq;g}Fb-RJbd7!U;WpxX z+Y-|7QAvmbt_lE@j)UYY-SJ0y@n7k)|4RS)J3WY4yra~Y``Y0L3v|13H|AjhpCoE>Deg`DNvvH_pqFPy)Q@7^^~EsdDjPqHjx>UR_Do%BSM;0x z@>KhWX{%W|a2BldU@vQw>Ar$PsSa}i%9WCALqnxv&chI%VDj0rK zpkf}YIlHp2!g+=W9y$IrvvMwB#LOC3t%kKk(I@K4ELF*x_&2=-*64>CC!u-n989qb zY7v#px$Ef~bxf9zkzRD0ArP6$EE8m2&FUS+$#$XU0@kxnRek&6L2f(A*`#;1y(yy1 zT(s!#I2Nu@U1v9x-&2t?!_uPm0Nweeg9x?KCWd4R&Q6Vz-quLgr^K%$^U5V6*#sPt ze&N3C>Rvy(TublMXbq_yUiw_s%VL#;nNCFh%$X#cu-#d5(<-(6m>8!b>U;Ny0mV32 z95n`EUCMp8@e=+%FIH`@c~-5~K23I33peQJ9lt{>ro*Ey2hrpRg?zTd@?(k=a9%+~ zqGC?tS}$rncO8)U#eEil%uZh%Mk82h9;xc5O>gpzaBbBzlXEfT|M~5eIuzq#`tlS)BmzAILJY&Zf?4LQFT~XEd79vgl6W)@oo1$Vlv<<5{)-2S@^2o+9a&uPt)dHM z^lD?5!$B5S`eHa*kfpCbeu=4Hv+}jJNQoNs>Qx-79P}`%L#Z=D9O9v3p{PU6p1(e^ zy|c#gS;he$af@$Epc`)PJd3KNutJTNH=3)5lj)qMpPN}cIAnl`pR(R|am51n48<%2 zx$1*2fzz($BT}UNH=D_q|6=2F{r_a69rg&|xu98yt2_8uRAr+JMY-`Y@zDC%Vc>g;JuIQJN*0 zgTh*7N}`v1LOzwzW;=08jo^tKvzya*DUjb z3!%XVU!nUyt4TWym3ih7bTs@cFfy&>e`y};7k`n;EN%b`NoKOr77n!kRV0n)U3x<6&IH;Q z(`?e$k+N5(mdDG7YClAiS>FysDq3QKsP~3W6fG!&T0!?Tp;eQ2REYVhbdOy1a51ZT zMt7Q(9b`#8*%BHWV!@CeY+=9@@bu1kBq{){HP^*>@7HP+rOyfR=APnQd@YQsq)CCp zs)JWc#yvvi7`EH~G6C{LXng)7kmNA^n!C{GM!yh@a)#|_*pC9iTFe6KV5RR;T4M7E zHh=aTXQI2~NL;hWoWH{X+gBd&0^mp~P2t=Lp(%kNbJ?=68vUHKv2y3>2N0ii?%nVH?S zD#kk96hFRireb|vrQ{JiU`KAKn`o0AWK%sWg%@#KylyGxPwT`}_ZTiODej~%ccGSu zo^P}psF%~iVsO<@0H&T(PXlB%Wx6oHzq?+)`-GCa@^U(luCK~}QOI#FuIOY`^~G#r z6Y6A{Iyo1)n&}2+v7bBK9%JQL_d~pnorNK$>2{j-AWf%r`pEa4L_8~|QmRSW^tu(& zAl@QitJZ${oRM8=69WxsFoD-_ z@SEyeIkMfkLOSNyeLr6m$2+ffjDvEihTrpU1m2;U1U~(_CVB6_`j5ATm z%Fn|zn$b*#Tlj3J52hdq8HT&e=j#5RZ$oAeb2%*XwwToMbPOs0Izl=r{xO~uZ_dq@ zvLKknOOtdF?t*W{e(gausS{!IhZ62#(#evn(?mY2JvM@*M>c|gE6gFyE$kCaFw+2(&zWbez7>si z`^(KLr2EA-U;PG&4-GEigEs?X^^4Yab5twbOnMCX7{Sr|0>WZL+K{D|BQu2i&>?T4 zVPpkY5Phjn@-m{=IyRZe zrq#??X`5!RPaA`_;&npaYSy34oN!{M|7>qq3R4qV*6z%#gGDAMb z9*jPd@ZZ#Oe^6t9sA1)P@4m-d*5{FvjQ^l^Gamy{3vmBQ{eucK0_FdpzUb_SZx7Eh zTK8#r-(d`YSW()8;V_fQ$Qa;$Or{;!-bmSYB!U@1;Sr{VB3Iq-s7-FZ<>uP!Y@C=8%>M`Zw6W~wLv-@Ss`Fpuy~eT+ zs#^C5T1_fgKYBm?fc>e~635bEWVq20&?0nS&(VsILG;%8bM!;*&Hcjmw~j)nqWmXD zZImy+q5w5t2YnZ_#psv$G-vYs6go004lmpr_hT8YO4nz=bX86o+-Q>3ll{iw^6$vM;X@-pSdoaZYz~6{h&w7)gQ5}I%VJ?m{iX1gGNZ>=cJ+3kI zlG;$)0(VT*GIr(JPs1~Z>(|B*N?)YUMXoN8#tNVgLo(hv|jcxR; zO6QV_4idV;Hhny85G?0b(?#%7^lMg^Pof#zjdnlDyG6rSRwr4r1}Jp;!J)~ zX>@D*7H7qautMrg{Uf#{C$i+ssJDgAVMlFPp{su(JZD>6*3Bdcak%lxz-Sk92!?qGn~IlO7oZj{0g=mfQ(bl3O8tU1<2|8%k_XHuQSnH zYocsxh>5PcW0Z73GlZ4tz`EXY6(Jx^7)4|J$SPUE#>U zKftcMXUzXF`HQpSrgN}$rhfTvlX7~89R=ZknhZ_+ZIT!9x5*Cs|38zw3btKSZTp-R zK#)nyLhCnvyUb=H;yheze1YgR6ANl5LeLZC+VGXV?WL0g@a9z-Cdg~4#Cj|lY;9c` z=FmBY{U)ygywO|ptMU&UMkdY=9zdJ#Dtr(UJv!59GkW8EdT@|%2;Ph4XfFs}i_HT; z?q~okIOx(;;ViNMuNkXem=J%GDXSpprVvUTe$cLC6EchtOx!;V+yttbRQ4+=OEC?v zSjCNbXdJ}285{#^haGn&Y-V$ELpY8yKm(b@u`R~(0;2tib}Ph`rOsH8#D#lAZ@e1T zRUY#9Z4zoYfO7^i415b3gx3BW%|omLRyXwGHyVrMEzHCqht}fQazA2mQ|V{iX8ZG6 z5Ab!Em~(NmIU#y1y zo=98Jw@n6_2NO8GhV#^hq8%Ds?cFCsUk4D+f%3t)Uli^GN9-nZ;88e^#VTIGR7LG= zz@14ANI}~S4{&A~43=TULwG~wBZO&_cCahFUPO78G}tRLs|L!ke~XI}`z;PH_+0$L zc6h{elkd2igsqRb9tchf{rdo03p&6w0>K$&++G6fvpYAT3rdX_K&Kii>Ta;+>R&igyABI~-uw4E3MI zv(M81t9aENcAeiQ786+iQi#xpxOYUjHAX-)(G6*1tVWYv;z0}NRYHgXp+OG|y%|5s zCPpghs4m;Da^mCbj~fMOQ~v;7{jSeF?WP_dw>5dkUqu0Jqrq<2_e$f0`X3-X-z z4ITgrhqcq@`PDRP6}wiBtYAnamu@YITg{5w+-g?ui#+JdVR%RNYO~pjvs;2wuwUul z-Q4AT+XOD!P|gKtz9Ai~`ZkJwreUQm7E-#Yjs*(N<@Ms9heb22I2GBfW;%A@G)^}4 z+_rZkEFxZpouO|~bQVRShn?jt4x~L%OnxC>!!vra=bGiqqW=IMgXk9f*xdpi2UM1P_DKJO5@u~=E()~~~+_5xomy7y!@+;dev3UL~H7UAHr>%m3<=;FE05OY_ zrfl;41@L{IjHv^PNkcb+(Pt{;Sa9g;rgGIk1=l0&KC=qEp-8L4-FfKiWv_jxmf4T=ThAbwrijE zwbtdos{*KH#;YL50ql+$vko)z!TiempyCBTz#}0V10nJPzh#{_$B$PzuV%7#;oxI7 z_B=C+z%61c&Z}Wuae%F2Tpi`2hdpeucE#b|+Zj*EA2G3a-KHg#a)@Yrg&@W~CcXKS z3TIvwfCwrA0N&m4${}<5m%4&nxPG(qB5=(%88TerWj4*dBHE z{M^0uwOi-ETQ!yCb*zfZQPDK~yeuLk`d9rNVM`2-3fa3ZUwqH)eP=AgGF9s7Y*+g` zT;`!wXleq)u4U~$!i8WEyi3Y9A52nEB{#bZR%~$O?WKnO%)NImGpqXrs=q(BiBQ5c zGZY`)A}~M-1z1D@mZ5g^>#@{9a)zh{=*pCwwX(3j_y6;#nmj!qgOB{o1vMIH#ZRU_c{1!2*5%`kx`;=*ZlqQK4q@l8y$fp zr7>mL&-AyarCAfQ&>|nu)z6Q-da9x@SzUXcehYp^qrO??a{&ns{I}r1tP*IEKLz*v z7JU9&a3#T!s~g*c=8;{eH?)X4i5A0sBFTtd8OezJU%(zcRf$0{e*-JGelm~7ofrhe ze!ji|sui}c^NL_U%QM~Q9EkdM_#*&|2Ma+&GclzE)^6rP{{bA;j{rkQEfUFXxujN5$0iCb;@h$Dm9C0s5;UrY2>i*XY{Zfca$Qrh zX?1v=x7r8Tjq-6@`!+ySytyE@ap(o|Gc<<)tkmwADhMP2NmBro#H@YYxQFH3C-e## z=BU|){{9#Cwfeclx7nbJS=Ytqp@P7y!M~gNzt+Yr@4<9Xhjw%u1ytW`fNRGlsH5!A zA^^|(OVFz@^y&|}xTo7%{vjO~*(tq->;w!`yU6n}0@|DJ`bGF)g-O^e^hd;k^cNy5 z=$yh*Fw;Kk2U^Bfu! z(r9y=VY3M zcl|57H~5fKVhPw#L`6KJBjGA_%AfQHoPW_5nOO;LLW9ijZ#4tjBEZ}B2RQ#boepwn z=lLenhQ+TP~@U9irkGrz*ZH@C31t<0KbO=T`luJ>^9V&}u8k;Q3Kp5~$!fDJFIQA&Nxxm&+EAUa zS0iGX5le74+sXt3t^!!3^22!!j8~CD(T`TkjPvi2UPqAnhY3AD@ zSEG|Ww+q%6sKa6aTyzLoAK*FM#W9gM1-(7SDm=jE_o1pbe>mWFeF%63=9?u zYQmfWK9r9`X;Opkmx&{}%JnMYiPqzzf#GKl?aa*sOCEMijJNoBmT!`# z78t*{idOZF4VV|kM)6r$YuGc&0|rN*r+wJ10G#FuVfMA`EZ?H6j-?jM^{6zdr$)cL z*n5^Et?wskzhh?@yQv(N7e)D+xc4|?3Dclcf@`l0#(;^JsGTxdZijWr?$*JyqFn7# zE>G$fp6L2DG3xnZ*fI-s*e*}DT%NpR|7%(r26OU}g#|L+H|-R~c~LWq%%c^TIFz=N zy4sKfPmT*cCM%0Wq{2mvZ$rkL83Exvq#StQ&&*TCP}$hQJ;UVOAeTKq$BlpQ0vbw= z<3lIe@N}e=kO~Em26Yx)k{7s$U{!CDdv^b(Vg*s*MgFE@jTkW9teN651KDK%=E+Lp zWoJ6vs_|$jo0*6$AaSMru3e0?hTU8<>F6;j#b2M6Va(NS5{cimz_8wg%)7euJ(Xr5 z8^cvcH}YbFawE3Yfp&`MF$TjCEkoVlsoi+xFgw9_Pe#^*$)`r4Hp&0l zQ3w%7pWEP+7nllAWg9<;m6r>Y+nq+Qf)jYLJ)vR#gV9Sz2NH%_voL|{yS5JNT{>SI z2MmZYArbm&AksyV|41`DF}%9=rzEv7c7##LkE*drhg_o!;p~!&!i@$+!Ga+kor>(H z62O$*?Wf+=A8p#Rk%=xmU&RDN3=S6BR3s<$_q2vuse^-|<8&m^!v?b@ZVv3y21p;V z$JM!Cd$`#Vzx9$#6EuuDV10ovCBQ41at?N9p^p8I8vEVny>1{p6eb)sntW_yv6VM? z5rw~lXiwTxo-r-3%vC%jzB1Li7z|J%tDJ+YoD;$w4uuUzkETvqOzPKdixvodtA$an zKS!+&#|Su`7yvXV7AyZaWJ1Q?^j(LezlNme+-NHUD3e9v`H|P0)wvbNw&ftH)7mLe z7mF&3;TCT`cJg3MYS@cI`{5u7aYLG|+hi!`_RVgGwO=9f*)B3e9p(ou1(g5<#zy=Lv2l0)3@<6pTO>CHzAfe0?t{ zTbw0Z95I975e6H=)(&;C=qsz%@B#|9Gmm;_cu+Qk7_>olAaPu}|#LWG;KF{k$sv7)3%I^i%8m8(0U{_inK5 zDDfQ88_VIJ28U^6@C0bw#h3)e_P92vMB||4Y05!$M#o3_jl(t=&CVT5UW%{|5icho zR7wKA?n01qr`K?iS`qXaRVrV(7MDE=Ytx$yo(@g57?ZB}1jh!I?mq9qTo|YGOp!F? zF-wOcpB41oxMd&t{=7zBoH!(EguC4*R)VQT#Bv=Fkm_GR*uR1F{sm%*;BVH|`H z2_+e{ID#uVbVG*t2`DdSZ3g7vZ5*ErdczHuorpP78Ub05aXTQ{HH*CDARw71-|=DL zg5>SLej{P*892ko1qS9)1p|ivpYQE!S%3N{Woc<)_UX@8_+rr^8 zgc5fD>i6p5+4*^>cZcJO- zpLqqKrX{lGa;~yrMV0H`6hfgrTh9w9uyHJukoJ4)>Kk z7w5jTn^Wr>uM?i7`S=8-18I5^-m7XOqtMLd?9i2ggbz z5-GrC_j{;bu|k0@8=8A*OTSq&8qw%t$=uiwn4BnisJ!02GJSdQac+6N-5{yGOX0g_ zV|#c7*1X*I9WVFZow2VuK2j{Gga>G8Zgk*0I^4B-XcIY@Us!j^&o`RitCdZaVR23_ zio9J^HGLY#0X!+ZG8@*p$MK{P(;*#hwcL%6-)=SIQsFX+ywrQ%*ZMqHD=D^jiD)aK zygm&XHI_|q>#S~UC>0e2ktDH{k!Z%mjNLpvZ9Vkf%p5vByk#aG`JE-jEbP1yknF#e z41`Xsc=`Ec%fSkr5$A~zCsqB*P1mnA%} zW6L-8GBxR$w<&E#I4c7OC)+o_nD?N03J+5s&TpNj+-D>L(_X7L98_=h%*LGH?4($# zlp@w_v;a}2yg&t=^|g(rvLRjXy!e-j!CscBh|s;6ebB3d9Z#+gLx!bsSv>9}(S*go zZg{V~qPc^j7lYnV5>LiQD##v--J&@MBS6k>PBWt;a-|W(8b0Eiws7UT;iS+&Pn=J3 zZ?qaCY{cUZB#wnhu zw3DJHt5XdNMxFx}w|in~hh?Kk#|kF17QQUK;4@29)NqMWNQ=2S?e4FKwT#AJEPZiU zW$Kg>@hG)xpvy;?*4}hqJC`%yo9>&>*xQ?Kan|Bd&`sIjo*I`H63j!zTkoAZj4Iv7 z1cVcqp}i+g@*#qhstXXbDHiph%hBy>A?C5%^?-7cE0z9YfiGI!_&w5$#!-&%_cwjj z1=vIBN{LeXuuh`KO=8{NI}Cp;whHTrwW_3MF!iuE%2 z_u+5hbelvuB5t0KmNbH)sHuY{=$1hfq$i+>SkOeZbThQ$zaR+b;hMl+QVF`Kwtolx zo&7t=W5OPsu(0?yO8sy6KT!S|@K2QgT?HOj6SU*E++_$}`Dq7mLKy2NFqEKR5E$2g zX#GplGQ=ShIsg;~4+^vWE36yffVjyj)$ki<4T2Zx$8Vf}2K>WwwRAo7tRDF~C=3G> z_S+hYt#g^|Bg*a7W%N_X9@(BA^>dYMLOU4HXV#BNgsExl26E_#2}^ToirzSB8~NI} z?!kHJPS#&9kdV#0EM}@~VymE71b`H2yJ7rx@O&D&x0f;6dxsfGAS>cA23&XJb$dMJ zZ}E9Mu>Empd&^ZZw8Mi~e;#MpqXqHj;f;TJMzxnks&c`~c{=fIh#jq!Lg1t)xbq zoyK^cUXc8F*?eZK6!}sF3q`UlaEyI+h8wD|?Zvx>H^cYtAkthoD+5c>TsSks-1}%& z0>Rj=wCDIER2>D>{_~?1*sxL-tV^KJB3Z2Wg*jfZ1u08Fy%CCa7S0a`u6%>2ShpuA z>mopGVL*`CrOslEx`2$EINE=PMbC^!L7@bymXZF4dm|d4#{r z5FUFF&Oppn!IV~^7Xvo}_}NK{S8Z*}NQt$AJj&7gcRGU>&(Oj;#2%~Qwtas@X~Dg< zez=l^?uW}%r|`%{?@8#S@URmOoD2CZwk0Y35%0UWr!Mkdi8QU!6UturgYtYUo~_i2 z1VrV41Um|LK#E#)$ym{CD3aRvgK~USDMGu1)48U|w6H>t`UPhwmcmUg-MA45;ABu$^=;cZE|!<4_c`By=9<6&jR(LKhPYZoYwY8bRNNAe)0z z`7{S9w=HDiu3*50eI&p}#N0aQA&m|>H-6f7 z(|ZvIY^`{lwRe;Gx+Jt=Gi+aGr{(dKz#os#w;CCM8VEL=YE146)MUu6R3{NaqIwhd z9>!RZ9lK}@+4wkg`HGa@r=vMGE6JEVPJ8^gSWC%>n$f?tGGsRb{lY^RPE3yQTXmJzJ;U(oIA+wISR=2 zczg0fgR%xVeS*#7^as_{haQaGHIR`agtc8~^?HT)=Sin`JsR8`4<6MCXTNUNjQUcW zl3iR1#br(hGR>*3Z;v|5MqXTX#vgCKfXh=}r6krItBDuyF}V^723X1a@02S*%=z_{+%jept6GDH8$~=4tEY-r+4S? z0cY&J4xcAlg}<rf4FCtvk6smK@lPciyRt5qfl|0UE^&JS#3@Jcy^{JXC#kJDzf+ z)wpLUpIY?^AsfV+ue>PgkoEPzzScc!!nk;kC6vo!s?{^h*r<_0J;c!YBE7ijz=ex`gb;k$E8OwE6bp{BvS# z>&I9-e$r1-6!Zfx`REB&Rw$}WIdW2%aG6geREPfQ58x=F=H@8kqs>IPsxD^ozXK4w zlL+bwub=nhpEF}p!xm-8%Cc@7f0RREdo_O6GgoUs?!ncnc414_OfY_y8W9_bi>%uL zyKKv9th-e_G1G(%WzUOIDUYC`B&=J*PlE%Qes9mFyhKf5rtEk?8iCwb1J(i3`86@- zsOHQa3pC1HbzdHq7Jr@5@|(xA)5g8YZ;6G(ihWKzFr2K)*h`#1ls<2e9Sd+t3dYaD zxX57@OZwe@>8aflk5$z@S5r2GW%e>*xIW>rgghK^mD`Qg8Koh-4r*g_oVZ-L0@UOo6PNAMho$^t?wOl&q`{( zOm&vo3!MN=PiZ#uJQ%4_dq=a$PA$%qDWQ`SFV$(^X{=(pD``nKW@W$b9EQxcGp4e2 z-y<*Xv&7q*?`3BR%~tv{X{BYz5?7Pn99dKil{=DPA~r9tu3@2vi?mQ#R|hV-9@yvc zfQHc-T(iw=pZzRy5kV?lHQV6Tqe|=J>{8{Llx05L??=euSFfcD-)O&@8DIAPF!!C_ zsPHRq^QIfqe#*5hU8;Wp+lBw-o{8oEIy(9mIQ6`%0G2x)tI^s|Kyd44-wOp?X@)Hu zrhOyCN=qLKiCF&*@6Mo|ln6U=`yF|Vta!<*&%zlAvCodV#z)8g%WnwamkE)^3Ch+>yn1F%h`A=rGLX1 z#dpo_W02&O7y@(WXk%Swp!TQnb!?hO%E5IgJ9$Q3&;2!mWxlr82PTZ!P)UHC7@W3! zvC1V9Ls5#8t^YtPE6i%?YBitR5Kkmrb?5lrg~wJ&<8w`#(1G5+<;lIz!1 zdhd;*zH7u2U6zF|mLIxYPL8|VN@5!LEf`(kQ{|MK_(t{i2!lOmoOQ9lhcg*!Yo}_S z#0~Z|xZ%KTW-Z7EA^a>Q+cV*y`D{Bfdu5#CI9D zDM~f@Vuafg>(|UFrA9w#R^-;Lrbmb^wm3`@AokE}ZS$SjgZ3 z-UsmQ-0N`4Ic|<*t9i(>h1{zOg?`rx0=X{+6HM9+Wb{q&uC2&Fp{@~m&03V@8u;s@ zbq0Gtp*BWIHnR-w&v~M|>(lG2fFrRD90`@{8O5rt-pMlFY|Wphjn*sCGQS+!(gyP4 zIs}@!2Rd>c%Q(9s1dMPIPeg5nTL>L6)KI~wp+VU7B;2MCNV2_C=MgI*s^Ywe1Fd43QeP9nz!w}5pcbWfqJuY>S`LLC?v+_I0g7b@f6y& zQrxD|uPca4+ucId&G}rs%BP~koz0QuH6PMuQPLL5YjjFrwV?~nq5~CL*`|@9C~#4u zOo1NOmfBN&tG2VhI2$j%->8c0Ik{KEc~*mYlR8@i=U4;ls2~{D7K^Zjcmh&p;I>zz zeO6axIyIo+yhgoLYSzmZqho%r#+=z!z_sJo13LwC=jD>vcXtn41ut9R z-YM0QL0#KH-6TbsTJk-QA=;S=Y<&+~4KLet@X&7otv#F|Mdn83UbZRg+fCbe5|v*( zY}cpo6o;8^$r^F3x6R9l8pnrpZ6CT?1h(%o9Dx+~Y9=hTRuhDJ_7JX?qL{il>3cY* zLB&plH@5No=h;})dRitAAGIB0$Xq{lw_KXXoTOmq`G%U+q~&-?Men zwaL|*8KNry3kb}Ts4LzPi-v#qOh1UQgV4Bp7z~|Uq=gs+2Bicl*|cl&9L1jh_3+Q{~Zzq^xq*b)+~V`-7o(N$@dhx)L{9qkl9cuWWwS7 zNDBSADw8FoV6HZ_wwO2@w2v_;B2lX8%;H9~7^4Ud#!%$qMz`caNNZiGZgk=xMpjUv z`CjKz$~-`|m1PdsR$oLRg!8d77iq#8zz*$0VL)7di`4Rq@7{*OG`@Tig%}Nn`4!bO zHSLtJVt(8v{Tr=Gx7f1+C7>O2U?gY}L=*xBb*%u_X%=UTUgIiL9ghr!y})&SfsW;_ z&K?HU%?$271m-ehFnxgWj|U9CW^&A*{GADs&!+#IWvJM1D$0Nxq zA=!}wSNPQP!{ z_e!qn`_`Tc={#T@9}YE%p9F_EnUxfQKB=4Z`$>3`Xb|K$1e8wT$56nKf8GEp@jE@z z@3E1gwAqar-NCT?)D7<@MHfDf?q-hOc8;EI>B+DVIhgYM-5bLIKH?vS8RYnwXe{c< zW6_td(Mz=BZDbLP_$g|P9cdlUByVGS$Bkprm;>@_bUJ5ZqA?{o6E(-fc?M4hZpX8A zuLD)w3suC>O#|JCO(AHAp_2EMW!z2nXG(;R(s zIAYt~9&8A;aq)-=1B;HMi({LYGn>ImG(NufUZ@6s--lw;SM%Pa zkq!D-4L$^jpbrvF)Bs0Nlr3lU8A1bJG8d^mcI4+XFNNS$Y$nEI4mqOL$4PE>#Y;~u1^#||@rqjM@l-hgDS_Lv)BzhX| zey^58s@uV-^TSiL5Q$*8Qg={N$?8qy&0sW~$R7@^GgF+rNNa(qBR23OH|Tp!w(?1^ zHqNm2Enp4p#iYYKk+UAUa2)(kl+IP+(LIXHWCoA*qMMhQ3ki?6F*Z?AgO8GPly2Xo z?)O_WL6}cZP@I*U`NdpcDP2{FA1iQ@pNkboayP%cC1UM80`Z0~((=$^nAsQ^*k_nI zM(5f@69#?U=ccJpFr3I%`-+4a#CF7|b~%9wn%ew-(Q}S;1aC0#Pd$!)xN_vJh!+^FaQ z@dw??#bw44yk2RawL&Y)d&kPu(m*~aj#ab4p6go+k4B1o^VeJu44Qml1w!;nr!ysu z_F%o#9t0QML$-1AH@&?P9HTf{SW%WH>{66zlJxbCS9cJVoOq{)SPpS^*I~+Vi$@Uf zj8H2m3>?Z#=UyF2Z4#_P?I*Ty3zQj>%tzM{Y*YVFmBX;}(+26H96?qVCwHr$((a;z z^ZW}aGt;PPB$>AR>jl+y2=ffyxZ>=8FkU(aqgeZiFdIXxESTj< zGetO>T%RvMiup+QP6@5UEsn$GP-f0Sq1X`T5olOsIS%L*ua#1%!>oWJ3jf0Rmxyy= zF^)eXfUN%CB4UQco8)>7{uaQR4?B-Q-%Vt(QN(tRGIJS1`-j$NCO<-dHEIfi9&*I_ zX#!_pj`68qxRf*#6jCz6qBq^@Gwl~3pFi=TI7l;%Lsp9=qsw~7o+w|zrb#m+_Av@^ zasL+M@_!X$rOENzx}}OXBf~&Mg^K;Rjt>917EvSb4R)nYUVk3FZ4P+PjE*kucitC& zQ#RTbB>h_XG))_1x>kcjBxzT{J zg?q)bkZD7~%cqQ?fph2O$h>kyi(!05F=G{%hR_CX!mw&fC%o+-Oz-tdWi<@LyA3h1 zYhGbt1TYz59g-@~m%80HLSkC)%hhGCkN54EnJ?lkpW?ytj_4r$4qKAlcSW4wu`?x| z;N5u?zdEUgt9lLW+YwV>Q?#Mx2OQI}5nTJW+EIwOg9b~UI-G_&W3Yl7w4xcr#1#WP ztKd71X_+N3HI=ppLrRsmMKNnO8~0I^48A>yc#3%9gW}QDkuC0BTTV%$C1VR)1>Z?J z52CEE58p{$6?Eef%jDc?q!~}C8bspR<#&g`D-?By;Nf(bk5J}!XI}-~1>SLiaVQx` zln!mprp8dvF#FFT96c7%5U@TM*wP;@|CByYZtDz}&An4mQvy9=)U(1nVl=D&#z;>D zdURw*oQ$3PN5vf-8{yw7JVApk4D7;(WYk{Y?_QNYtNcrcYW@jO$Ghvlb-Yh(HnNfZ zKS;P2YG?b6JiaKUsu+Cz%L?@LKUO@c{2St_9B2jl|HFz=sV}!O(z964#;@=puZ00hjZFps)o9*p8AiDa#ZT-M7oL+z9+-U%CNgt~x zTJh!L2{?k<*Z_>*Ja=(xWrOUL&H9H?OzrW`KC67-v(4H{#Sm${;kbrMt&hiF0Dgp7 z8}J>D&--m$v>u96C`+@#l&qi8sv}*Ydr~|9-UmrknZj_xd7sWeGC!7wVMno$Zu}hC zL?Gr8IGJcuOb{YG6fvg~Aj!~CfSKHQfflnCFH#&JT?DE1hU4C3j+e63oPJ&sgj5iE z+gZ)I?!(Wx+{}W2V#`Cal&Cdye}`cH%`%)5#a8-GAHw{Op^o6C6rcZv+7OyBu#hS6kb`Bbg98=LNq}M_Q@vNNv8$v(@2>^k z5L&Df$g|2?j11 z=1s=jCs`4$CanNa-%hmQw)`-g;FP@(sooQ}^8AKZKxUvZH(49SX(9#%3?74J^k}*? zgJr8G%VJWQhQv3F7bvUAVGSjPDd11J|M49 z9XXFQ^Q@FsPC!s&^~O~otn(mqVTs+XxqSbVN6cJ zL_YQEZ{lfXkr)}L!kA5I^M{UEP(jWUWT%=y%D`Iiw2Zk2kaAL?)c>GN2KGw@%n7o3P1-~NA7x>u4V@*tXnWTubGqI?fU+t&rHQ!e#%jx_MRJzrg zJw?zamj!SvpsZnMVG&bph2RlpA-~K%9~VyGFmvOTo~a2LUC) zCl-=Zp`$-#d(Ai_n4ES)u_0MXre2Dn9?IwNPOelVU+7eGF%Nh$Z={9iU``X%Uh}u= zH4_9!vFA&8`zF0k6`hm*)&LcZ55xT;KnKGuDtyuK191;(H=z!LP`oISd)hw5;c`Mq zmTucA$=UNcH19_hcvFb-WlZqUeI%m!sFpNOywl`;I+7%Kotd&TT(k(;a*gnXN`^h; z_cR$Z`nhhsZ5?CqLTj661mVFmaSa`G%4`p`5asbL!+0l>J-yIvr!fLFqAZk5-cUFtz+_tO+g^dlUBgJ$r=_6 zUJRtf>#@KPN6Ifga0rei&GWQ$L6YLsKGEJCJT&_gw)eu;7sH!;&q+}#2njAf%K&Vf)`zH#EV#B*K*mCkhMtm)>NgU)CTvc4(`y9gmyHcE#QmR z@L|J>?lQ!*pApcID6;R&X#W&)*P|xO`*A2-_F$TsQsAZXzh>z1fXz%D4We?9WWtBd zf>2}w)HKtGPAc1CmGe1TAGEKS%LL2Yog_P@r1$rM!a(O6z$%@rf@!5+=~5~Dn=M2IGBd3z ziq1~B8G$YjRGKHJ+{>mg7+tDC6RpJT|LZfq$DkEnqZo#~piw}usp6Kk3T#-`zv6v@jI6hSH%Z5>f(lqoP+w?t(gBxKC@)XI2a^J!?glW932G_kKhRMfb# zr=pzLD{Ax6r#FO7Yr)Mgtk7-@yH$el?F||Q-j#S8p3zD}nyK60oQHE&p%)~Q*~LBk zolHP{@}~}ZATDdN&qqR5!;iJ;u|OzW|89{c>c968dm2wZ=j1E(@X|;|h7`_2vhN=* z)<%X@fImuEv4-jj!Y?*GAZ(*vzLAsH6wXI-KBu1s=ZfVVhDD|3w~zGlGc|V*BLP~D zC2|d%Cgd~B?5GIAUDsB)AjoRCU^;8x(gAX;@avw+Fzzk%Ffoc>K1blMAkf<|8lqJ&+}EFQkHx$8%W=EC71WFcwD;}f4q<%quEE!$M{Z4Fg(CQ-~{ySzod`{ z{2GG!+cDwSf~s3+>dcYnWRH^&z7KVXza7I7sqHr6%4-s0BD}pXr;CAc#kz%_*7iPT z_(N>XU-ge97Q!N+Y?afx4;DBnRQ}-6e`@gw_!SiQA0_j@#DGOFnS7qv8=znzvDX0@ z7tFXnOSrzTzC`LJsK$RrgV%QUkDOa*d?(;&>?4<&0_7;dy`dl-Hzg{1XgP52BlmOe zBU?-}0|DFDe4njbHkyKv&epqztdDqxJmPt`0NJF9sfSjYv2M6nUH%@~S>{1Qej(be zhVKoth@}=O?Uae%_zYVz5IC=>N)sQv?8-Y5Ap5OI*n-Kapa^UUn<80fiGJTSd+061 z>!jY8k3ZBAO4wU9A;W=!V&HsNfww{2V|j8>&KC|8ge(hC2OTOmtnX*B!I9MN`}Lr* zT|X)$*cboBopG0DNV#=b`DuTG#YnR{vnuVbQ*t0Eo zX1=aPd>y+bXfu=WU)*Fa^E~h9y|@hm1-O36IR?U%{eda_8%7^c_N+2R_~-w0vyZJ& zAc|;Rw>#GNf`QPu09WGACd_wXNL_;sQ{N-@IKHe|6a7{l%entQgM9*&@m|aiT8A#$ zg)C01Dq;VN&U(bw8e#0(4TR!hHhVaWw%VfmF{qT zGiACtSu}7~jUQJt%zy;kCN70EYnK6N4rff{H+}BSYh2w}T^Cf_38!my5HJ4tM#R4YM*tvQnq!uHs`nqn5C|;sfm)E}EL3ki3O2L% zm?|2f))r}*v`66L&Z&%Jkn^BLsxcO`gxb;E*_(yNEy`fGmcJr|>t<~x?4MbR8Oap2 ze*ONmCj>A!`Yn!3!Q>6&LzDS_;6nme;@cxn%lz~8$i?}NiRGil$Np6VLn7gP(nP{J zxUnBcEpag9ld25dW3Nk%>L~@;l^hKv*^C(dS%wDMC}0{u4b>9ts3FD}pktD!vp?PQ zoSrj}?G<5-#IS>;jk7Q)=qI>YXtDrxoS!i+Qk$drO$Q|0VVNR*`UG{BeZ44a8aPQy zZpJ|z4I>;C7kBGrxQHs7BTdTe4d&8PlhsVoQ2z-@4GhV9mga({Sja+GW$DocE6N+- z0(K;h;AlZdebB)EW$gzdyDg~*Z$~zlIxj7PwQ&zGv4b+NHMpx1;E-f>@@WA|*o~fg zo+cgQ5<;9I)I7)qZM5k&`puK(A|XFJy&yYz35P)yKqHGN%1f(fmF=QJ!yZqLXyD+P zrVM~f`EaS}3Ry8vMo)O61RjnHvLEDmaYvHE2?fVjM*>{Ps`?O0O6(dfI@FoQ5@k2uYvEqp0ft-7{Lcl7{g$)@v z$A3tZO~S@VDygV6$dl)nSHr~QI~6$N1%%@>)S`ydps?Wu0B^zo5BGC0UZto!$^=az zcduQ^b1=c2VAm28L}<`4`Sf@J++V=^sy*tc_>f|DU*~i<0te%>!%7N*kBr-5vWb=aIKt3uqoRq;B^_|{cy>H3S&xWC= z-i%88w1hP&qnV6uc{w|J34_}NLy(*_Wv!Z$^e;|a>|V|OyfoA<@wU`OQt%-2x${HF zL*Y5>F(dVMN&t%@CyWM2rWJA#URE()TH0D2Af+X(kiRL3ixZ$|0>s^LagW4{zrq3! zo;1{NDu8{OCo(S0iM|NnS)#?eXOMhZ(5eLJEX;;@A1AJd{nUg;@=q36DM>(Qj>P}t zj0+lc0d~D>K_gBo;-n10v?Y71%b*tp4YfTjwNTCH-*_E|P7$5ri3-_p5y2W{0aG?I z6{@Cd;wfExZV0!+r3w75>sg=JzpnZ?$G# zl%P^+3*0WJP!E|^eg^yk-XiJ9X;-79clYJ={T25!K<^z|#ke3l1YuE*whAXO6^jXi z@yb-47e)2&m%gNkJSWPZTbPN-39TxNEa8&3@gE79lx6NMg^h>Fg-RIX)_bDyi-K6! zpuCWOy_U@}4%NVUWA=k{8x28?>}j~-7uR5eSa$u2Ehen>d1D!POUg$;U3A(}4x8gz zP=x^!l5E=8g%QHvXwWCD_i$YfAE;dM$7#na5|!gs2@jXz3Y~^~3f6=HMcM)g>tIOt ze-ZH9Z8}UQgBAD}0jeV?UQFBxXO0|iFbPF@in0*P@r1>!1u>E`k}_FI5rBK}2M)=mqh?MYF3BaN_He=dkm2#X@48Cj_`+13J~EhLrPP@fqZ0Evx3<_ z3&dp1t%7-2}^>tZYsL7Y6>g^_}!$VxZf!l#PG(``0e7 zYSNN0xuuSBc&5z0`1q(ss?6)nZ`256S1xbeY18xbAnd6H{IA5!guuDhE>b>xi9tmm zBkxh)N@u~~I+re5U0X4S#!t8(3t@`W)=BXU(8-5e{J~=hE8(lMC9b>yUNI;Btr&1t zk}Q+cj}MO>$o&+;ElWLDpTi54^ekXvIS=)PqaD4*Jnqjog$39VUmH?-7iLKQs*p4> zulJL33Zj8VRZsOMnvJR|i;U2sJBSGw7UBWTsS3GUX3jSPuo3TRqpd!qH@z4g*($r!Co z<8yJF{%X8QXD3{l0>0uWf*?I;Y5%nT}g6G2xDY&S#o6j=oSAymwt z?V=zg5185E zi)(^g+2248Sh&#l>(L4w|0c!8aChgIl=J%WKRV(S2}v6E0sBXt!2VbNC|7egH){vW zzxG+RXl%KB=fUXRDKl!{vw&@NmOr39qp06jpt1u#BmkuGD~SCAcOpW8;tu&n~eEzs! zJKwJk1UZcuZ8AW;P^gZMeA-(yN|GXI+xjCq;^80yZ7X;iepPUz10Gy!MoSJOwRDsu zuZ+He#jK#d~tKW ztAy-BYy67>%7wSQ~ zT)8u)gbf7W$p<(9gNGD}5EE|BaInll+CJWJ5w(eD%Xb)TF^QMwW>DPRdv`-JS$UQ{ z?TCpKf+1#6hc=n+J!gD_s%^iCT7-Br5j|`hNV?~e5i}h50ojrTd5#q~9-!^ayEqdU zgFy$*@HhaRDJQ*8D9v|~crC&1t`_u#+&w!0vApDcn|8lPbuvZaj|%e|9k;p&o3jJ; zL7r=dihAT^?~aP7O!4~O03j|{6p)E=5;a|4b;n2ft_+k@2 zzmRcvgg(1j@_nfe!Bnm^_i2DV5tHQB#ph#>GQ{kynvrUV;A60A75(V)EABH;+iNcYfupy|m00^K-jvF_XV8c&QrmLvf$lRQRc2 zUt&111;uq`v5f{f^?8S!*qr{92!wsDXxpZ)f1P#XLBmrG{EKf<<5M`>XAVPdc{FX57}Hi``@AzzS0!()cY zOe)wKWlm6lk4m1vjm{?^T+k7wQd$No)^z zGpvlCCgW=N0I+&aIXSF@7r2ZWe3h(XrZ#Rv9H0HA5OUi4(cPU95ur;+v25Q@Htg>p z|LNFo-h5Y6U^C3$a3COP|8~p**!xw@*u?Iyj+k4i0}kI=2u6Q=jigD-mbFW2!9b-O z4Q-x6!uJM2C#c8TNVpR2Sor;o-!6{js$Qn+!9L#Wihh~`G!O>YO-ve`l=oxy+2rHl zjZmlU3qvE7I2~R4kA6HShCy)FVxL2P;+LMOP*d8NXB4SG^qmaUqs>-koka_pc8%1I zoGL1KAMa}SO*ehaXxO1jDwDw&9Jq;kt~8fJHU=T8TXPbvXimbp@bio)koHDbe9!PG z7%{wfO)_bmJ-(iu6biQ3z$(_5N7yBU}8_D;!ol=>qX` zTMPE*NELcleu%ShiPn+8<1AEcG-R^Mo<^8gjN7qd82 zzX2=Tef)k2^N4XX@$Bik~i_;jD8v!NcfTaPI_GK0cwV z(d~ZJuV zh$uVb+p9>R5ICz9S?U^Gw5! zqpuO)++WjrsV>UA6lx_azux|jUZBY$WbLECHpE?YARw6kJ|*3(% z!Eu8Nr}w8OO6TFy%Z7Vor^Myj)k-NMTANs0v$(DujWWp@MK9u&bHBgwR{ap%W$RFV zjWGP>!ds>TVJp(9Ar9?&B#pAm@rc5AO6W1NX91r+LzSE5i!dV4-{H>kZ%;Z$DxQcW zJEcfZV^=NSLGL3gc)MUPNEAy_S1q*rwySme?QnH4*q$)b?Xz|Ltw(UEdbBC+jA5jG z;^2o<9jN9+7L* z@#tH%AR`kGHo^g!=r$GOvL&6AQktsRw0-7=cR`h@6Iz<9xJbu+fv=9P@JVcure49a zXv03!3J*8aLQvu3&a26x*qX{pFYv9$2Mx33On8w5jivC=f>lngu~}ulu4qX*`?E7y zY&kQQSs^sB%1YWr^A;?|8ng*sK58>%Ej%m{n-7IZJKVr<;!^g^{YkQx{{{kdq5W3^ zVQrJxmENz<2ODX#165MY2A^JzmJi12h~D%d`e5Ij(cX`LGr#-3(Ehr3{^FSH(*iP{ z)W75Ra@l6sr{|9%Gkj5(_jbF#e&HziaUVu4(T)feCbJ3R9UjDg3UaBWNN3ngiPuP3 z0FJ#+;Wk9xvG z){yBcL9~s2MJ7agj%b;iwU7v z9+SRhDBZSkxQHZQZ#$3iE1hBaL+9xmMrtY&Hs`}nDL!Hh-KB_?<;mlag2MZ+s{5(Q z-5qpGODohRl2>=u70MAfiqdhi2kBmizpf0=P-BV*<#S#RGZa&$X%(9Atf`yO&<@L4 z6d<1kvS(eQHC?iaP&?;D#&K7L~J9q|N zRCJWW_*OWNUP>#|En;aU*ZCx6Rg1dyvd)rD%1`yE(+QM4D-O|C7D-PNx)yg1Q@SoU zGL#MX9B>v2^j7c^_j6@FzVs<@ZTI(nvw(_OHg)EkW3W`;ACBd&d!o`{*x%p)^nKgn zZtKzEM~dD9`FHb9laf`9`d5VCnaUcoH?AM-xvL1rr8ucgVRQ`uI1rUQ&5V=5a^_v| zdUiiEx);;ck~KgY(`ms$MBi?N#C}(d@}^Pm&)Ufys>@&QvKnb|8Sk+Lw~kD2e>kkl zE_>v|z^~aQ$%jmT7uBX=Nw*AtLd7jN*;aFC^yha3tan!Jxq@+VRgdRo}@oJxjj%lmW3t~w`}j6S?2 zlynK<`D?eds%fb&ssW&9cuJZx{@Fa84-}DD7M6P+1|YqEVj>VP7Lhv~WUnDBfLy`8 zECmzirR@@JiDW&zBSP+xTxk5XSaEq|b|T%lHpgmf&%1&fwkM3su9;>UtL>I? zR6%Efv_rvcL=BZe9&1KJfk2caVZt2RYS^Ke);tfEm#TTZNNIW#>_dl?c4K`xa`T!u zVNh~VU{uflv6sOB>k`NFR;T|9`k%R2u0P*u8Sn!S3Yfj31Am*kySh2rYuVc|Tf3Rt z|Mjs~6Wste$btd#(^q05aiWwj9Ai-hg&MU0u2$ydJ5*wKVzJ4`c6i^e#}}uuV|#^n zFk%iqK%0b&s}r2}l_Y@p=l!wpJxa($hzN9cEsB+@rIfaNy9XqxA~-hP#018H9xK)o zghnu!rBemsX-zon+qe@>b0B)_I}7!?IKih^W~+LDgLKU z56)cYmTP_vDI~4V&GeEi=b*(e*F~QOY&y)WZX?7+$Z$JY${cGZ7*QD1(@9dNf_b%= zOmp2EuT3oHvO3=vp8H66*LHOnJf{(;GM< z2aa*qq-RmyH5An4E4nm<-d5kh{yCs6UGfThK*1(J;W+;g{zvj(jpzRw)tvYShaeUV zi7&l_cl#5p`4CnZ;nE78 zsOPCDVAQJk3qrHI`#3qs$N6gc1g#-?JAx?3$avg7?>LXuEJ86MQQQ$7Wz5{3ZgyKv zw~|XcaC<==4H@81~lsXX$HJp`GjoO9!At`kA#09bw^%MJQ)2F*k<+S zXe^tA{&k;9_UnJF(&FdBB5Z**nFwHZ_n$R~gS)+nxeKr=^C!ET(b{s@=fUaODHBeR z)N6@I;(*|2E)>?#kC7yAxd)-bsXxyfXJy&Emb)^Yp|8#nDvxBBNBcY#gYLJ(`|bmH zh5Yq;6O_1(6oKK&bseNzwj;)HEH}M!@cuLHl+PArOKVj>Sz4y4;->4f4 zkZ5#uWi(oR->GlczDs9B+wsS6hYvoa?rYs7*B#nVSIlVA6Oen)jx2m8+%?mT*kzSf z9bpf#gI2A|FM4I;f;+fdaL-oSGSzVIt_!CQuh@-*hb!sCv<*S2+c=bTrc&C6q|zed z&{Ueg99_|xe8U}>QeOI`Sy_E@6Aa7%S`K+5kxaVUuOyN4Kmg$63$r$)^U}Ap7-mo zrIo{{ zWqHyU1})U>(k1>4ubm}5++P%@8jj3p8AjwVH$>Q43oqHzby{QR7!!WMet)t{mGl{+pz2g!&tIjVw+&MX7rj$v7pTt|UPIhvLNa{&HDc|BNbYX{kDK0ySk%?;7LyC7pC(;Y4JR=pu|xs*2t6`VCe*Wc z!j&m~yJ~5*y)quF4}-9_J#%~4JvZ_O;xRopqC3z7`kMNqhauh)%uo(Fn0()R(0d0W zP&ht=A@rM_E9f-mkEEhd%+kHx|L}YNKx!tAFbU^Ls?gw!X?Vf9^~r|^u$_uqzgU2= zSL8Kdszm~`-4N$5R0o^KSJPRFh3h`wW1N2|&Y5C;+L__IYtiTa4buxnW!Q6E;|z7I z%yDrloaysv2e<3CMcwihrWQ%QHZ(>*hc~JJ>-6t6OhXS%pB=)ld?%H$pFeux6(kYx z@%NCRL6r>jetPKNy0zTx3GwMOuqWlbJ9r(~b=1}8n_3#x;$kiJ3$S0-LOorNJ)s`2 z_Fqreiy$(v40YqJ^&`028WrF|*%*njPxFSXQ-2g}f5889#wr|NvFw2a0SP7n0l@~& zSir{Je@#=sl^5{(bTGEIW3q8Fx4hD@bwXFi5bW~irnR3zp<%>;9_(W4FJ=^_2jjB- zUYg8R%vk3fDwCvuo=Ii=Wib_ylkfua7$)HJ(SV`mmhG%GAIPU7AuI)r0*`?+N@jD* zDS%-Je!IC<4678JVEFBFYyGV^`+m!Hme>2lp>V9waA@uh%^Q{l0o>d}5%nD($uxZIer_-)OW(S@jI*?;Llp{?S4x5(%(?7^&uhaPq zh6Mvzk$Cf?j(i3<3xZHVdXAHK;3u?!+<<=3N(ObaoHLkX2ury5A)ZTW5;#7Syjstj@s+pm)iP8n|-xjBg{&(?~O`Q{1;fnjELW3=BN|l4ZqAU^0Gz3?p;4J^VGQ zh!rKGjvMNSTSb8vs0mWd7IiAGY4^}oqdIwBxR0M!tI}_?Lm>$~o2Yn2NTV>%kwhK! z+3k(&k1wk3FB=$f6AgyT&Kb?9Q>=r}EFRbi6(mVa$-*I$Mo^*=&` zr(oL1o1jpXNRBZ5wwYY&FiVYQR?d-2^?sv#O7CSPPXz{9QoW!qT0lU9Mp(YH3@F***ruD6 zOAoV~;kqE2hti(ne!AICT$QUGL7uw7{c*l)ThR$@d{v-bA*{kj5WKv4`LSll7J7*G zo3pFc|N5w1)N&E?BC@|YtCD`{=zNkk?xZX$uvgUQd+m4kYkV~lii*UG?AlAdPR+AR zsuAh{V4q^PPgXSrH#YNzKavzYE$;19QGF{Rl0Kd0vd$dBLC8nSu|)(@gewGELe2fi z_YyaBqub%8x)&a#Vuncn4WFwGjox~M>c2|qU!4J~iK&{J*x3 zVZxrDm9N&9aL@ByzUX3iMchksrkHyIz5nh?_Qu_7`smN}hR@}+asw+!<-#$|PQFT}DVD$UX>!&>N2rfST>RP*8 z-II%3U&~e3JYKeZUfr{s&*#-IEIxg0dR$%V?bYk|{=9bE`d;Ps?C0zH?e2X(d9U`j z{ogmI566F%v8-D2z2g4M{Bt$G?|%QAUT;zV@X`AHvA_QI+y7rwYIuNmid{zR4VE_5 z7Uila@xx}pjT1jSE-F3TCH69QbzA@W=*g23Z*Hip{yu^8=ec6#S4W&z&J<4n=4<8e z9jvu`>!Dl!gHxGXRbN^0y_CtbP)=|8S@6`0uVe%NvL-gEj0KHYiT}nO-wxRacr!AI zFoTB2IT+^5G>=#tv~=QBU<>sWaLf(V?SO#>pcn%~v@>upI5n>%KBTfBwKx{kIzu<0 zQq9}p2TK^X9AU61ZosS(fAxF0~BhdTb2qRkRvG&H%4M6YcA`FOW zKsEqdw-?FmCA+jNuVGgV^AO<=)hJTF@T-3nVqwNs)xOq zlOChHtxaQ+oWiOw%9rz3%w#4(VlOdd%(5MOYJ2*4T=DAkTW+l-rc+t4$NLH1aJ3o5 zP$;VBRJ(Ma z_s0}nUnl(BNFT-gC9+Rp#0dg?O}8q*I+w_sw<7UQPJK&vkKWe1y~1D*32G(XKB3K@#UPXs?&Y$(AJ7k z^|3q-lEU@87emT8=?SEvswdI=3YEs%5nJgUeBXb6Pg596F8H_>G{A2as}rBA)xAB z>ZP-2-(@v0&qS6!nMUU|iJ$j}QN{DZh)@5^HG`o7TEJ!#%EhMYc#;yas=O%+Hg^G%v;+E$nDpUvOj%rO23Ffs zyW(e^@=L~}ATb3MeRuL3sL2kr0d9*1{^FUI-H!(hS&78$n8b_S1yFm}^tc zwHsrXd|*arbU4rdnV_&Q@G6$T+k6I?AXH$2OaUf}jsSZnCKG_8+3%Y?Ghtl5pBY8s z-dkc$PCfh@1x7-e7W6pclN3h4QtKT%hn&rL7U$&VZh@_K4xKCECg1S2z2G`mV>7r( zNJ0ovX#9DAX#~6$=G&?<*4lHH1T9ZxQgGjS&(rJ`r3J6aSWl!9E&^Ol7Pxdei=OO4 z7%$mC9S8f|mno9W7UiPcBT*Gpx#chF!U@!EWQfH37&Jcv0tmws$r9>OOPh-bK{8NF zazVqB2aIH=^dV-K%3*^Xw{0L?ajUcyc8)f5Sa4UH5LcaR+MZ0VSp0kmv=M`UeH=7Y zKFBbmu7P63KXrYCL_h{*6IM!9c56{*-HJGMa&*|7b_LffM`#X3KuZ3QJ9Ao6Asm&^0T?K(9iE%pSz~ab@E3A6ZDFfHe{CA)rb;pL%~;Px8g>(~2!+l3dVh0i$&&t6 z8lzYw146n@>IZ$-WZqG|-}}e64@>xT4_ucJIL8)9`ZTj{Vs9^fS9t%d%gyR4_6e{q zHV_~nD1Wbuk-hyNWlf|A*6GRzgDW>`$ zs-A&mm=z+*!C$LCmwS{<3vhhgy*<`SPC`VI1T%VNgBbTHx1?SUlf;%I#$z$; zyqNe5VFmByd|PMw6E(-eRtKAZmQ47Bkly}k7U5w4ZV%g}U`yEd`>mvXdFC1QDhPH& z!%01{N?oZ&*j4mtT(_pka1IX#_^TLo)aVbgBr798?+t3UX26<5T+3a3DPJ6t%pDTM z6QAhP3zj(TiWsyuL0n=}D!O0o7~uLB7dJv;BneJx zY?AYZW?-v%*(k)P46I5E6)Jq}>_}&NVIsVMO@F+`d!N7kMfA@bcSLHtfK^Tu-%SIOqe0m3BaR7esVMFJ_$@TwZ6q^(HO7@D z4oIT$B-EuNK5x1`SuQ87vp4Ozjz=o#ntV03kKq&YEk?-kc0Br zRu{Oy)BG^W22_O2#j392iZ9y0z#t|_f2wpvtvXfa{$Pr-$+S1CgWurWWcaDkr@yuM zV@qX=Z#jo~Bo5HL#FiZwKOoMtLxZC3gC$iq*zB(VxvclrHS(0N*SM=e(yjhZ(39GB zTk?XT=?Y)1n9>cL?bbF1o|=5Yi^;ez3o;Cbtcn7&6xqQojpdN#@!;pMIJrS~SX0e` zEAw{?gvd_5j$g@bH)4pba)dU>>;r}+kZN$j+i=Ira0rAl27%wmn8{4#@r7CS3)RKV zPty5avsoy`q{XI!KZ$rod4S@uKS79pK<_=618v2tspd{K1_M*1U#U-F-C(ancXR)> zWtC2u-7M_CLo@$%I1PbL$2}(sdE&a~Q9vDiZoRP1>(`aFEO@aRKbS7)kN2ZpEquf5 z)d~S~QW4ioX`KNv%{}Gm7BIq^VWpMNGws16G-51+lFy)uci@ts>&nn-L^I}BJrZS-qWBpCf{tFP5RwlbGv7Nj){S@HD-|*3sL>vN3!Cs=cbN zdV(uZqVv#P#zriD+u3@5@&Nw?;gH{~miPjR6lF9#O3{&1GwaY=APtH__iS@z23)m< z-pn?bJoEN8zn+FTq>O`}!a$VSa(|)jM?S)#10HOf*bi2DJWFtCku`NCj31mR7^|G144YuMI2u%?Z zlYLc6O##rGVGw7QCb%WHHkBnSJy!vqU1h5-bP>4)b@*eloz zZ<{8kNjFV>^E!0Jh>-I)gdLp2E8}%d59_?iE31Rx0W?cPrwD?1u)8w0xVNBy;Lb@p3)q}Ob>Vmr=J=j^N#+s~i7*C+7aXXXTU zzXoEB@%Ilqxk_vI;H;L#OCmzXT|w+5PJ*IWSB3qY($d^Ms3a9(mp7!glhMafPol@& zNDm^BokO^wt+EHgszE4a-A?igYq9?r{*`UHzEAWy^d0P<)2W?59vUlfogD|Rv-rSu z_K)fG&t2l*C)Gc9j9*0*f|zl>oWH^Kg(PAW*+qW%l}Fi5D_LFW9U{4sa3{9Esk3fM zFSZk~d(Y{UO=UYfd8e|l!G}ZF@F|cx3Je)zHbl`3jo$(}<)o)xN=?MNk{Fh^rkAsG ziCm{rjQN0KTDU+TED!L-C@622LQW@kBj zwv%2?R<&GpR#XC6!819@Oe!qP%#rJ!K)`v51n8z0@ z+7Eb<(~U+mfKb2B0PkmeFti-oHD53R5qIkrOA%u&tjSQ>2EQt1ixlCes7q4`whs9) zY0YhQGxK%8Qy$jY3mQylS1_s=e}{)a(^_d<|tZ(^vA-br@R}CI(HeAI*L>0X~oeE!g!lLTlZ!GJzy`JY+$35L5gx>8n z0sW}=?Yq|px9%TK%SS#N+=mt~_WL#p682m8E@usUY1z3h8hw#B%1N0#t`RyD%6!8T zly&@gskl8H8uVbmwE7Gb<+ka!af&=XeEPKR!~OkLNOV%*RAU3UnYQ)fmGmR@6(skg z^c#GKziXepJUek4-?gfL#QB5>?YbbIBVM!+?G6Y1;7;Q7kqNp_uB zzDwic(dDtSCL}Hz>lecG*0t8v-dr)BG|1v-+rH-0rK@w^^?EDzWUib-*zd5p&V;<_ z`%Qw#TPo|6(}dVHQTx&FmjJJc67jRM!X9k%mg1Ghaz$k!uMwcVTV6rH3x zJnp6j8L}|+42^d>v>rLMx=QG^#=u8Q$cHnw{);pE*%|J+xgD%)=H9etoHIjUu)`&9mLH5Rb*u=if8-7T4g z*VU#Y$@xh0)Whj{&q6`<_ON>3%5@0OQ+hf0-X4Zed1ox`q0f|$(~YMNm$m~__igtR zqER{Wb_p_zGEtuzk#U9KfVfW>jd$3ruZwHf&G4z^AQhax>SK7|tg3I`7Fkj@b&L2u z6&#@=u&I|$NT~(@{O^GNb-?PwyWYcu)DpCyo&2hc85k~YQ5*T`=4%H(y%14y^|af} zns%HrYhP&daN<%W(!AYm|IeCDpDGL!Ei2=fl*Pk+2d4_Gf|93L)Qi^VMWbs~8moa+ zi-(~14!x>{>F3kgC;NMc*J0_qYoXI~!3-tIM!osDi~fV_>z`-+P8sZUA+7j@8qx3l z2kvEr8Q0WmLGa7p_a7+yE{GNt(wkEvtsuUKS<^+-lu2+4qsD`Z6B-q;cJ;ir_gs?U zMXtSTnt2C2XO~0)G-8=DEj!|xBSIE6d0nxePv0(n+R|kZ4*fv&#w59e`61#>U_dP$ zRY=C2D0psOt~RnJ{-R0}`$D_eOm{XPaAi44QyCzu5Jw(bhQO?;*Y^|6j& zjD?C0mh^m3C7a9a=GRi(Z`u*`Z_n$NoqSd20|mf_W!HFG^BMhQfSaE@I9gqb%zdJtz zJF))N39(HM02TRbd{rYZ1tSEL2mDB%^aj|!uus_&fT6^|aWsE~Y6Hl6 zXrVo+=M$VnKnm5@xRRD8_pVL9R&<>uTPJ*R&A9`I_T}Mmn>YF>0Y;tVm-E5(=UbOn zJ-b0Kk(d6(3D?}uOYYY?4@0xr)!XjXKj#G%4)+g6^R^$NH-+??Z^emX>~UVN(nMH2iJ)2&U{^$GTaacSGySfhO?z?PaG2tTYn8i0IGKa zs$x+}ZG5Qt`>r1y>5m;gtXypJEzH_-wKJuh9L8f!kMEgq!Rv0Y$hi`lb_V6*ZW72J zgj*$aniTKvvOK=;`zVdUowK}LyZCv#owp>CBNuKsh1D$FGN`N)kdL)RX)GmTwOiGZ zO}4)EuE!54-O;M{J0`7d9G|+cbPvQN-{*Y&aYf19?d+!Vc?xM1E9|7K!5ti8m{tvI zyVPJIJ@EBy;G#(3aGZ6+nJ~OVdMsV}(|G#UOF|hJB#qd@xtugF5o`UdhqXwO%;|z( zhB%rAdC}amX`RQ8slmd@Vz%fbGI0Kck@NE&c^ch)ntemD>Pa2gaBxX~uzhY;*<%!X z>FR|0#3wsAw6pIg!-@5g$&m}oLeOJX6JM{(mfn~D-Oa%_Pc4{=$<4Ao-w?Om{AC8m z`pX+((8TIKjQmG7U&U`Tlqqzj(PQZIT8wkegSX`Hvx)Se3dW|DPZ@N}7JB=-Vq_WP zu$29+!%kHlbgc*)j;Ok$2W<(_KR-3)R++l=Ct+j`Z1aW({Und^Ph68qZxS>)Ic7`0 z_FKKkL0t@z{6@%r`~{ll$z5?shJF}nYEu$sE7!q)i;Hm)pex($(7w$@=JQfSzQ}$q zVN!)1&C>aK4Ux$)`hwH~<@KQR2;+F?K#Yh>>0>_67kIfAM)qFkTxl-d&lR!oH1<`X zK~9J$-j-vxg)~J>a_!qP=sw=CECfb8+C>FpkDj4g=#%Zl#ptNRK3|N_`n%6n=6s6x zvUbn-3pZuf2LYvJ+vCfz8u>#8+E+32xZ;j%VMcAW22xwRNbTWhuAH1OdKR%|E}OcXxX$`CoEqzo>~nHV{7|0-iBzu;^|R zpqf4*+K_x$I!+6~D^He5n`PuEjy9EVcRL6c{dIku)gdsY!BXSGul%8g5DCO-`sC$j zTrcFMPJYq!sB&R9DZaN`RzV&>%cL=O^+g(9_j!dM)`$Ww?dAr1)10QMuMR$xk z4W3nf?=jL!a^#6%Q|?9<4p%3Y;2pKF%VlRAk7Kc5<*<(nb8bX}vr-dZO(`0$OhfEs+$qGLfVomjqT$!X1rN@@5z-0bzHHA7zN5QJ!cFP6lCY5h#`W3Rhy!yn)K zr#G8cIabfl6Bg6d`jgE#PBU$RKAhb9XPfv)8B@apc3vtCE*}=H*^0t2t30 zRJgp)u#qFL{+Sc1#OAprKKwZ7nctt*b~lHv7_u5g%RLiclDBY#qCVJSr$*m*$=Tj) zJj1ducsp9l?df49U!kjS$FDswr!137S&1dTraS+`c`vM#;)}_V=c7X_ z@2}L`@|2?_(%3d%kdPAAhTbI*d>Z1m6L-M*=ZqT04ZJV?;~IEtZc$7Ip%)uQ%izU3 z1n5JIdlP&%7OD=#^4#r|kC!iVm1?I)xX8LyqSwD??$HL90O4`|8Mns5D*7r%GCVct5KE&ieZ9g@;6B?X*T&!liVV#y9My( zHWu}%1p>u|cNwJ1PAiaJRxR6+a&cIr9`_#QRS74G2?Ls%?8Yk!E{9u{6=W^D2gf*C zIB>B&BqqosD0R?#O*ZGwOKeR{6e;_pQN304AQWeP0>p(lQ2|OJQ*%F7Was(tMqIvSlf^73 zDU0n~hE^(7QgFB{>Q`-cFymMmu`(@%?AX8BjFjoW>VW$(IibZnV)rqHnB=yBiH4IX zwa6h{m@6_}Igf586+$9Yyn0|5lUXgn&b!y+NooI{7KZ_GkJn@Z_@r~Y{i5f*_8}k4 z7D@T@b<-sK&vekI3hF5{zo#D#;5XZoj12=%oh!qBK|U|JIlhUjUopUG1kI>rPWWf)OHOK&yTzM zpz;U<+2>5Y-Gz2nA|ED2VjfuF!W&fQ`eaw5pINo*6JA|VzFg0my-<(Qtl&2AI$NxSgcp>go0d>S;PN|Llu!4}#CNbt8 zyws4s3fTc_>xvyGQ4&orGct+ud1qOF>zU_sLN?oT)Vd;OLD+_-&KAy5bSJvJ(+#JK z&7!OOCZ-EaC#*LOl=N0oKbq&PLk#u>R0EH`Fjg*C9epmBNl!RY@Wmb{Us130ot421 zURfZ<44!qdAb4jj*DvdsjiIx-I_zH%rf#sEa);NCpU1ou?ZK+?lfS3OICc1Q2b8(UP}VRahON}+aQPA{3~aoq*1rsX#)ZOIO^xq`JN?eY3= zP=YU}YIQ(EQeBK0!FK-S9)@=ZU%_W0j{J_N1;l3A8i4Nz7cvS&r*dknK0;Izi8!() z|FR)TnaAbD?NH(VYaL(8T<_O@T+DI=7Fx3(T9QdP; zXG1PS>JIYMFCHPP0AVIE#Q;^|N0ZI#gZ?UB?fZpDIn9RrE(G#LF59pjj+&wX-l{rPJlbm~^X%U#Dwx4L+!~f5TH7U(Fx1|MU3~CyasH^L z%=dh23#GiW6^a|hj`ZS4P7&sJmFBBk)#WYtYqL*wG>0P9nI@yfky8$klp?on?q62? zy1F|#uLtKO_3a)fVA^w5k^i*L*%fP0Kjl81Ru%HKf+7?3ZMIT_|fn1AVSg3G9S(xyC2|Jo>s535_9SG zR!uGv*-A{19g02Z$AvuN$SGymw+W|lHpPLS9-YxYO0YMU!W65m{Lnhn@d7%sv?*Os zZx1TcY#(PV=43#bFfM{UEs%+O{`cuuxIE4{1s$I9~*Ac{=swy&7r>NuJ_TgEg9;=;(=DV>m z#4V~sRx##nWT@3Mm_J2%(rkr*WhpXEl6bbLc9x{rgqreM&OKN6AA|?F?xy4r-`Dk} z3Nvz0qkdppyhe7J+f@8WLCgqEjoj<&#w!_wuaQ1EELC`ZW{~{8PP8#CdM%z`Ar{5L zXP5jF`*lzI=E>mHn1El{(vW={XJTprdC#gYCOch{;A^h+5l({NF6v|wtkqp(&AOq^0XTx{AyKIY!oCz5zz6Yle1ycIoh#4lH5Xa>vO91JolF zy$I;4AGQ=mvxbL2p8P*-MiKwT#^dt;$wocm9>8@;wHRN2__?^+N*jWF^K;U%*`yv{?z^2dzn9674{X>v79JhTKA65NNp03T86MNgxO1r*EPwCSIu9 z1gh`Wb^-}cVM~no6}c5r75kshhfNE#E-ZB*$XBITt{!Xr;Em>dI^ij(3Gt#o>N}9NA`NK-Jy3;KPu)|%7o^cVaWufh zuIU)ut531^TyVnfAx5(v_25>O8A;^sL8)l)oH)uU+?Tr}u;(3tY%IQ&W}%k1_Dld&088I#-Sag(fF)3dE84 zV>akOPmFyEmNbO*%MP{!ZvurH{o;J`Jd3woB@I<^%hG_)LyShJW|V)4uJrVEf@ zj?ipovA>SlB1t}S^~{719(nDUsL)GRvq3kSvJB>*yVFDYf)Lhz6Xnc+N?guRnRWPH zgc64FJs=T;Ck~w&)L58aQXi%ETU8BC#DptpJtImSpBAatfz;nLl9i`vD-|u~O8@q~ zEb!ZRZ>XlMgU_ic%LTqGC;p$lB}Rdezza)_56h3hutDdLK}FLh^wh@F$kC>uDNecb zzo|Ts{H;=jr~#<5ANsdS2+-PZ#>1^Yy_pY8#jtJR0;E7)p20@~8s5Rf0tifq8NxJW zH8c?<%=zNAuwh1S?G@U z)l;WrsMSOE7yI(q-zdQby;SNe&0>Pv0x~pn3B$@ zUnLIWF7|EHILMecuqkV%qXIT2a$77aCk&X{8jgS7$p8jT{TamlKZBAc_Ze;vt_FC* zozM<{Q+=yIw7HPWKp%e?;E87Y;Msw8SRv8)yWbVh6yf5 zJh%UNV3{9fZe7R3TwJ`Y&*6y=HRb%P_N>28`m9YNng_b>Rv$RAPclHw0Fb_9oiqDX zHq{@jv?viDlvsWB8zMZ`yMhhg3XIb&Uf;`Au5>l()#ITDMePp=iwkK-lvs(%6zoR@ zzm0*C=3j;P&eocrL;RYvQHD#ueWyIthvrUZ7D&-jL%tZrf*y&*KR_2sp=r!bk6LHn zY$TmtJ8Pk7oU<`w2;7R-3wWtm-dR1@K-{X&8^SiPn`0&Sc-f-S_l8ik`s$@>Hf)pV z^U(LA^&5r%rk44G8VyJdE%ST#J<+fnH3RmVq^8?;{Rx~V z#nUwd!kxRlXuo&ag&&%|<`DiOzjGM@lB+=fLEg;5jvmSQe~`}@N^d>Jq-?G^{zcwr zDE+9c@c^gM4E)00=llcuNToHNsnbAzvooMo;Gu!74K9=5z3pi1Q{L^v;?B3uB8cLG zXL?Pfh@a7b+OI=COF1I6D?IA6`F?VpnU%+vZcPVq^cH0svmn|^r;V}-1TJpH3JRD6M^WjZ`xCWLeL`vn<7@A#5zl4)CZx|4>o;sJCGsvEXZfHYu(B3P+j-m1l`* z@U8Uz3rX4nXd31BH4)!4>v9tan46n+w-^z2xrLV@v0`4!G}AS7x!JHH*rh4eNiO-> zg5t86wvKJ~%2z?TwAqFyOmTKZ@!2siGp*y!y09V_{~}oS_W11QmE#<6FoD-I3Ud^> zM2_yu@1^o-lppTJXW8>C!J63AuA^t!f0mZzGXi+!tUCdjXY7@(kf?ItGYwZ80m+`{ z!g-biIhJ6P-Ft^!O}r5S!V2A9bhzTPrjr1E=d#2i=^=p`_UO-P{-?6@-n;B_o@K`+ z<9PD3E9bkVJaXj*BI2{c?3EoUWrZ6uNuRZ$Kc@+^iT4D)C-c(xxq9BTEmr)?qxOB# z=-}VLuDxbW|1kNJz4EqesBN}k`*DZnc&fZ0f&L}S~5j>h4Wl$ z84Pkm0bsyDmZb@1lLUCqTJ%AM_!CWA1VJ{3kYn)zcO6^cVfY}T{$Zd-5G};gUx}GY zsJKNcZ%sqv!6r;#=$JcgIJ2O$T2dOru@nJnh)nkFvF4Xx9naL;A;wJghWtcMoTEAu zHP9}y;J=qih>-yHS@1B>ZAc(m$8R)ukxFRo(97RwO!jwBlS6D8OXDj8@FmS?f}6i569kvyoF?<=Ggto ztncrEunl?Fte15-iPfjSK&da>sm9UKb2|KW5dOkfHW)iX?jdm0W-1pJiS3t2h0r?9Svw#{RCR`q2Ddvpw|LlzOc9n4k7q{ATVsSZ$wtWu4Xm@ zao+0|2LOS^+-3FhW*ohSStmnMI4qP$v!2YUV!>%@F{cwD3;Z|?Yp+^kGFN$ihj#|@ zGvm9fn~YC8-(@?}1s~Nngu^wTCgCqs%+w_U3b!?JzWnp~eYh84F?6dA#a3%s_MKQw zQ_a119X)VM@K<5ysGDS6#nGr?=ebLR>Ca?S5v1!l2G6z}b3EC!pFm^bUE`h_?Rc-t zA4C;89bj3yk(j#&4cYCvQLRK$vwL!KBx&dSMW2dPW8th5NqMVmG`^NOc=f$#e-8Ws zb`4M2b?DWnAU!b+VlOjM9VtnC5Nd)wp6=yz*|0%+ZQU)Bz^&^!n8?xV(0hCe`)!-8VR{P93yII*_Ud01o@`4{>5#SAd!SVyYWnZ);OjJ9rWifYS z;i5P7zR(N7EMdwosGwc5fvlljpX8y2J#I61$74U(7*5NcFtB#tr6-rM38{SrBgFni zeETOA)`Bts9+(91iRsj7Ecg_HTr%owbR3L^>1t2S5y9?bC8OsT@!_QPLk$i)gKq}c z4CbrLhlfxq+r{Ju79cGY2a6J9DA!`OkzCiWJy;4SwrAJYov-YDfkk@tAT|V1Z+r0~ZZ2V5& z5qgAkep*Wlq{!AYH}Ye-)PU>M+yCfbN@nWPCEi(U?8p; zU(7fw6c^PjFhByyx0nnhQ|096Q<iX+&}1(WjZ1u+W2PbjK8 zC+^|ZNo)?zB2Nd<0+^2|MK^1s=*u`ctl3=~fU&QOc!$NJ*`*#a2qTKGFoj`4TWaG&*9WF}iQQM7iAH7r0(S4MP6~?s7qDWRvuORrKw-DxwEW<-v$XvwiZP;k3E5YhUejYt2BG33j>LO(&T_CG3nSa>}9&} z4!uT%I%#pDefWuaqk19sZ7%3?&SmLkxG*q#=wHSBUvuM{|7bj8w zSW#9;A%Mrj74Rqwt?FYQ_Suexe@N$LPHLY%D<0kS9^wKNpXSzw0U;h}K_b>l-BFPs z-Ni^V8i%k{^z<*ff#z|Q%)-UuYI<-u3dkiodG|Ms$kXG+958vN)Bpjao(1wMkw*4m z-3@%p6gmxC$rqdmMDl zXnQVq0ums(kpyKEw%oI~S}q=0A%qUOQ>z9aeAmQG? z{BHmUh2H?j;ePYwz7?0?Z0n^^E~K?2PmY_|Z~BSG5_2HF2R zoCbV&_u=&h3mKo%9}KsoP8wd5A6hEmYmy{6L#}<{*?DVc!l+6ir%ZC8 z+eQv%8STf)EfJX_&x>z`lZr~Xz~iR5w9&7M7m@Og9GlU;sTd?ar)w=P+#Jzer2{tY z>%;Yeo=x!O228;{EUS}r*m59IijNn$P@ctd#Xs82GcUeJd7gml9w+wh8%tI*a1DXu zq&V0G{cN($eIrLK6d_mWFh+lekq=_LcnL)Vqo}>&e!}cf64tY9j`&0%P`W5TNi9vweP6&b?hSbgeLx9m>n-gQxlMwe(| zHaJwouMTw%_*5|gp-u^0FOx>|6dRPnlPo930>jTAI~ZFAC*&)lG_{~Lm)&g`=M<^kkKr;i*Rp0-1PqP6%y_d}0N73C!ffkUnZ89^{E}Fz(4kPL zoF0pKwe_e#*f>bm{J=^#ep@vrD~$9tY5!@~9I8>P6x&u4gbp1iNi%h-!Up4t)wPph zRk6mYLYCMyJjvy2QuNE^hrbK9&DF73>Id`2t`Y1--ZphG6TYUiP>;KUl^wiA#yN-dq+q)fi8QGCJcY? z0vbzyC4^3~;AlxIAQbT-3~4Pnr7Us~Kr7#-^zQwOiWx|S6ZM;lIdaf=t9F{p1Zb1> zn+G$Ir;YJQo7$7UbXF23pV+nLhYk_;T2@o_E*d*218zCu+3Gu!k@q@sea!saYy4HVClP3kh-!-+E z?=yJX*`R=oiAj*xgHcZMyeI16N#QkhN8*%%n2`n{KdQ&4?D7mU1#?O-i#8kO`3r}+ zv?_C&O99h1cg}rlKiW0tqLQ4rzKZaN=p8P$D~V6(?rRLUQ3eM?#%qbAh7IM2-5%Pc z4-!9NPN;Ie^>VVpf9oTf!D}41!-#+_!^0__b_{l7qKx~F9QWP(qjn%H1Ud{Qifmj{ ziG>$vF`2)eaBuo^z9F@5xr=B>LRFe&2?(H6S}_+}F*k%W90C)D7Dbh~gxIgg8YK|& zP6Mq%cb-xeh8}P>IS6Q!FH!t)%z%iw<+A}pdjn3(zS&+5P$Y@M@guE0uXinpYtKbc zrM8iyED=@|!7kZ)>f%D1QnM9>^ut0B-~>0>u*y`-EhtvTrR~9^MO8h5R{h*1Ex(!5 zx0KC@A5Q7kC>FAYXqF?Ii%cd083>mq49RpsnUU!T6hW(s;{j?R1bMA~5)4NXE%-wb zbYnj#N0cc?6h0I02?`U;+6H;4_$#x<$RZM^BbRDdcu)?Q2&7(4AZEPFw(k6~c1Y?u zbkjrS0xaey*X-h4Fz*u{kq~|15UeKjdqmo$se$y`lcEVMs(-71NB&bqNY6Eae7TZ( zm6c0n;GqH!qHbz)1QO<(%M$-3iRcS0#)qX~gt4?AbBhA|Bur)LapGp@C@^tf+o5bkQ_^?#!6c@ss=7%+FY*uOM!n`BSSR2SM-x#79cg@j2kFH4 z-UG4|Et)HQYd&(McbrZFi-*Elf{s^Wi*1EWFaeyNrtOqxwY(MI*{p+6Y}_zpCGhLv zadHDfCB$IsFZs!L`}CJ6<$=$r5(SEN*sReQTV5ovG$_g?=rkp#SXRh15BZO#f>>SW z^28xe*;-@;%)oEs=KZ7x3u^iCqTtApZZ^)$c+*Sp6|7*o5cbQP1Jg+StP#=cHAEb{N=#8#evBNod)>ck5rj@88%fC?jkcT7z2i8E&}80 z9b985#<7sRwot(zJ}@K$*a+&~@|nGKaiTGB-8DPNz^#P{^rnN>Fylo>B}dqm{Q<$` z1;SFf@&!3fY9#`|IMm`Nl0O|7B2!I$eQm^XVvCrO0%l@Rr&#ehywj7Au_6rP)163B zJeW5TISHgFoC_&rW2WdSFfMj|7UI z{&De==pFf==k^Uf0%v(RKtPpZb2I5&jU@ z%H}kT6!!4u_vY@=_3YESUdefKzlre9`EX#@>bt~WwUE8(cYSWK3!vIuJH3m%-QDr1 z*YA2inBG52e}6oGe|kG{Yk$q29$(kHdcHktudYTuKhM4c9_`=gTovGFFu-c>?yMke zN?$*ieFGq;r?{mnWUC{OyBTn;4!cbma&y0QFPgEm8T|2~l+~`FeQ0a#~)y)EfBc3RK_u71=(f znEU$qy*KIkxmoS5j{6jJKQgukocsED2pV*hw%xhs7r*no8;?6B4rd3ahc>6|d-}C> zx~=XzIrgXDo>|^{o^mZOBqS;vO41T>U)LBIgl4Vegsu)Q?)giEjuWXL7eA0bF}iXi7lh2>bSn2Uo9sQwVwR zSKsOc2>1wjiTK}LUidaD?%Ug|HyK=!%jc^{UnwfPE6~J*CKlS~eH_hOmrgC(=SjU- zc?o2ug$l7*{T^#pEs&tghv#40Gj7)nM%B8RvNkvQrY1`tt8VtLjb9(V9b4b-Hi_!) zQ+aM!SRUVeYhUmBf35W0pR=ypKanjeg$HP;Z+2om+10f>bzfS6y!U) zg)|kA-kygIn#w0RwbnK_6^e_4h?1GgiPU3b$8VpXw;%g%XOA5o-?NfW{LYhO7kA(B zhz{OM2SX=UJ^j3MWS|Ak3G;;rldFH`W$4!F7xce4J(VBcP_;+Zis1puPZ$W0F=UC5 z-rnoiw_EeaWCa+oe^&W$RWx!^G#oJFVFQLKtcJ;~EX3zx6y~PBm1M#y@u>{D-ld0< zDc9S!sAOfY3&)&WaKY?8FC*qW___uWb!D&jgaDh4wt!7Iz$Ui4TOlt^{I{;hZ7Bqf z?y9@#@s(R!soIRJyVQ0AtkuE8)1BL&jQfyWMaOB67k3WRZnI*6>2EcgcFK1;CgTn; zHWEzL3X$tp8h~hHZeKaAjrGmu@?mYS{Djxap+2VR$k6@S1K?4?&S#g$Vg0iBY%VvV z82l379$3%);`zhkSG~SaA`ki}3h-XDz2bR013>OxZVSCVVwC~dIxhUXreM{E{*=IA zZ@hO(UyKT1Sfw@*32wSS>T9$;e|WVqIe~W;)dxDfZTE!mI@IQkur*pt#wLS@gB?w~ zrfII}^wZ*Ii!(Jddagqz*9SsLyA^{d`$`6rR-SB~;B#|i+jlcT`QTe%?~Z-tR2mFSnCN$sK%`C&rQpViKd~VZ4VBe z232n3e1eILkY1Cg1z#LaOkbRPU9mBJ5YU++0T1|f##@muiW69x?R>1kTS zEt!}>?Z;d^O+oj`mRukzUG^2zPO5+MLWl=Y_J`{B!3=>C4@Sl>N*6rQw@`?&9h zE4S;@8E>oi`=RxZW9vJP%Hdru_+qzlWbC&G_eYphN3Wl+Ynfe`{F&_=&p#QfpqtuF zBeJRp5q4UITy{?o38UsVm-qGM1(;1YCvWkZ%3ot6O)K7789TRcuVQ_EjvmfGjX&-! z-@I7XPU<=mgk6WIw4QNiOnIZGzTBF%dcX3tcDsd`2vshO>)mbL_K(JnE2P{0@Y&e& zpPF_1n!<5re|un??JNE`dp@1Q*SaQpMmDy#Sh<R&rI?gQ5hr=jS!R$;7c~ilx zOjECuIWagx*RtMUpCRhWAP!!hEI>vSvZ0*^~g3XAT0vZgEEVHqG*l`r- zMaQ{5Ls%9A;)()_H4qgP$oK_F-1Vg`Er?H65SP`?klD8Q%f4Jok!5`J39Yvf%y6o4 z=I0WOn8p8pguMk&T-(+yjJvzLyL)h##@*c=5-hm8ySux)JHaiuJHZnO@;c|-d*65N z|K9tni%n70j5)?wd#|2r?p}LddJrsvE!RO+)}faB?ga3$5tnb;+E$SeX$E;zqYfYR z2Ce--3GWekse{@7x)7rY^U*1LFAg~jldDGVQHVN_)JyJRCm6UK5-PGME@_1`C+ew# zcvK-tqxc)?DB@XZr4z?i;!O;!c0`N~2{Rx=HMU}^>?sUEb^2K;F{To(Tg>@JLug)5 zVL->-Ft`FUQkRaiI4gN#MO<9MRon-RJrBHBLe> z>&W+B=WX#|vhlT9$bgGLzLM#+efCH9N@{{6d~ zRyim4a8zt57VJB-&)<+w!Y}lVxfw27r%Nhbya`<#YdCXkzd4w>!>FRL13p<0xJ>hW z8kPTzDk2ix{s`kdfw~Vyx(uW2HWgc^$_oAHAsZz0*{Xd77vEy%UUehiFlbC*u}i6G z=*J?#ec6}EciEoeu7lLv-egytZ>D|s-&VhPdNcU$B6;8r!eU%3HF)X@5eICoc$~F&lli(Nv|%%BUuLJ}@sz+HkI%On8GsrHHk@iq?hDjp$gWf; z5kjJR6ZRg)SdbmNXbjo-ICS}nl-{SKIW{ZFm^@B<{J2<4$%vZKzqK-CHv;{_Ll;nX zkTSS<+g#(!yQUVH>QG`T9|YV7*0kmhC3JbjxEx!HE1BU$Yesrxc;-O5>t#m2d`?1L znrZlQJC$EAvV6yu(F?~F=SPILz}`js$$MIJc1LWT*Uh0v5NGiIyLm6OWs@-v?6Z4g z!H`#6j>Xr>PnPbA3yex>1qat_cSvdhfC>EbRcb6xshmfDf*%Fk;CWH_?k~QDqy?Ni z$nH4`$n|)8@ZyH?LR@Y~0^Bnz(G|FtJqqba0P79FI%eNrNYxakE_B{A6If ziBWr|Ty{iMlli@jh|@lF^`U%2C+^+H!@Q(WOc7gaIj1PKtI1}PxX#LVl3#TvClx&> zlju?RdcKm@?|go=tXn58R`+7wbK$|}O#=;**X`^Gt*Ntl(%o#~G1OzRqpR}x?HTXD zqF1SmtN5D*e~ZnzA>VTI1oKh_^yH3k-Mi^+{Z?|+HuKpT8tnd^Dq*0qg5fnb@s|#F z4qm5s=kEb$?7a@3Ct8KR*{P;zB89CxxjvR0*o}AIsf-bNbf*Ct#SAAT2$sY<^@1{-xymMZ{LVtw6i&h?`FM(xP-MDItu(_v4>4V^YHwWys31ZX17;Lt%S0e%3QrYe4S7)v9)3OV&&$ z8;Ogo+X1_5%WAByFB!B!|j6m0ju2>xg^R_`>X}Fur?OsL;@wKh* z9dyr1YQ9W$me~uP08CG5HuF3fsZo1Jv&l{^&Xg&klM^r1Y2RtAV!A77Nj7F>zwR7{ z%(gS8vUT4hFYdF%+neuYX9>+#`Z8&yWylg&linOzR1K9ol3*e>FR!j)p@)mKP+3<8 zF1jAr=kb7s(HUH`&1|3jEOHS+DqS_(;MJo_>*MTF<(iabKHTp|$l_P8r3>F^znU3e z_Wm&Uo!+SMD{u3r8`FNuwJcq#e*xQt|K*;E<^MW5`W86#ysH3~I~}Xh+D|}m>u28! z1zc%{EgPnNBg9He9}0jYQFS%_43vs z&Ovr3Zwnh!Gxi;}CCVZ7(|x|W-DUQ?%$d`G>_36LfqrcX>l*?~7nu75$}p_7(>@;u z3y$;Nx_SLWMoAC4Io01uk1dyp;bzaXV-2gr=kBCz`CepK=0iW8kQnKBUEAxDhP2Ds zcr2xV!x+VP&F*86w-}PP{nB4jQ=J_DlKQiBwVN+`NQT4s z&W8C5#&t}|knrwyG{k0>9oHhDll$6fUjh8d!O30e_sO=$fSusa|9^G>j;Q;*FPko$ z?c7+%-~rwT@a^2|aLPGuj%2HO$g+jps|tmF*9ro;F9s7#+6-j$P4KR*$UmX35qZs8 zl;s-u>!WoBdqAN!MoBia4DQc)qPy$U>#Kkxu?-vvmFpSBs;%D1GTv;>pQer0E73B) z9NN+b^5QxKnz{!%avjS!&}4otb9SZ>?GO2lD8ILR{JQh(@|0`M@#YHK-3)9`y9fK; zXw8z+Hk-?j7?;%+w|aJ6RYU2uDzZgiu+oC!5K8JGX-Yd9@Ks@r`m+ZJj4lZ2mDjCV zHK49YUK7!f!CU)aqIiTlm$ahNoSKNuc!=6|ftr4oF|P;RKpWj4!za~>kT)Oy8=FGU z=^%g80{;*JiyKn&RS75#Be>YIZk2q0&f^MAqhp%4?Y$9jy^Dc*vvTTc8l@;C#^yK$ z_(bs(+O|^MrqQn}h)dhuLexcX(q>W87RqaMN?^623(leg6^Lb?=l>L6!&T-EVWh>gnIT6u9l*h zx;g24IHy6yPJ}nM@%-o6Sk!u2CJ!IA9b?E`KXtcUn#Y`^VCVUUn$@J`cu7YhJJ!fJ z*7&#ikQo9gdf48<9=I0=Ir8iYJQl(`&d534^sLP2{H-=9i$p+)EM?(&Iyad%mnj@svo5trVzNZE2u!Y)Dm{PO_ zPf2RJ1)LA|`-PK`$2F2EBe7@VmA7lR<7+Qhx+15Kq!@8$L?qY2gVOgRFF#CZb%hzc zr`HOz`}MojN=0%_Ks3h_HjuxO*53om`}a7z75T1S;9ML1DWf z#6gU#phEM#&ZU%jfNCqt9Imath(ZYGV`VPVgf)O2+K0k`xcnBW-qv6%Uzv4462(M+#eo zVfffWcx_R&*h5%@bkhf5P_*M{zJ?lA&;uw0k(= z{Wl+3F$fbXHzr*jNXhpWMAE=mdE;J`fKRG8?Cl}A(I^2UaR_`yKXeuH;OS727aW8nIw^Yof5fF1(6F$DpIAphCd zDE^&(-=^=CT-EojJr&Yq})9KG!vJ>AliVIgub<@dWch5>xUKMXU- z@iEa@)RV`eFJGgVXvf>gA{Oye)EGO`I-W`1#`KOG$D%O@^*YtKTat| zjACbCrDhysb@OJx7&umXCc)ZnkzbR*XR0Adg(>}q~?Q|Oi zujW0~(;q)te){b3HtO*fz@MimdoI_Wf}gxpT4x5Zn9^jUY1pG*Pr7?CXB@l;Tipp? zWfr2uGc?oDvdA>FiY{(Q_|_s>>U?_*>ZOPVedu;1x`#ebXql_n5T` zWV%T7G~E4OEr(RMgHz{+r)VJ(!EmMSprn%3o5-8NXgHBS99n0lIC+uQ0#iq9;74xI z_nK_wlVEL}VeMPM8rq9Vhj$`pJ#^tX_@5}9tHh&w6q(5k9_vLnFEbYs9&cl8qM`;L zCFdyJzDeEhw`PJcpPryND>w6txxP}mst`X`;3Pj6D~{xDetAp8+Is}z4PT_?p~Wz> zF*2~vFmsH~wTUJS`nbz`ya8QH&+5s@x_R07`BGEoX+PL%?5AuV)$^XX&|_{OBmrvZ z@wPr?1@{XOG|+AqbVtukQ=wouk*)R>2{VZ8h)?Zu0uwZ~`TwHl9O($&VBnv69Q| z=#@@qN*e9KdZ|4KF1Uwmm9G|ASyZWP7kph;_R-& zl;IYSAmACHR!|r?l$p-GI+EHXScTe8Y~dCtGbEXht|8c_{+}v`Vdtj}(nUFftSnCM zRzaoRMF;2k7f@!VQPW5=m%$Ot@CtF2jFPQJH4WDbs_PKu8N6}D+5cd?bPPtZ_7h9)Z4_$YP_2?Hpz1GKBUItUa_frttf`)?f`{&Ov&M&29jN}as^JbK$4@SYhR zUEJ@yFaD-%v@J;bweo57Oj{csP1`>fcpJR6YJ3&C9^T%j_Jy*pkeke$WgM+DSU%Pr zTE=su0b>jIif19yhJu$*8AAi-&dZT`<%kx;_>5x4DlQG74cvrb)s{|p+d-J#>y^rC z7>0KnVq(|4!omn(GQ>J0Rh}<(yKRKTwBDDi%U&Pv+c7g=#9KbagXJC3LHZrGB)jj5 zIKg9QN;<*2^C*6GQVm!28rZiZrog6XL(LC3rehR26$G%cO26)OJHg$Z4ZW&DsPKo)@(NJqbM1CdlK;!@x%wkqp2fX+`G1%l0-|! z7Pbn$lXMDc4#Iwuq4uMxF>JGuf=`bIm%$_g?Geg zR{xEWo(S~l$c{J}JNb`_J32PPzg2jG23r`|g%8Q7y}sYQDt%V@mk!nZ6QGWF*MIAH zpV(|=;?o~cvAT{#8WxY3iSVn6{E(7AtQ%SCt;0A zcQ!s0o|99z>v$upHoe9OZJ&HWKG(#*F=W}yWlr1h%0@Ta+jl^8^?lp=fnhkk{>Hh} z0N|27R!_9z%f%CL1hugN7{7V$;?~Lr*(sa#52KjcB3%nt;SS65Wm9-cth@nF=13H{D8-@|nb{K6^SA@QcX(b#HcNj06Q^$WfPMKS` zTA3C)u)=`v6vY;YE`SqLt&?$uL+C$Tl`Y2#s++(YpiB^DVu+nYQ$!mAH9qTCqvEsuQPd1lMO@_2s#T;i4yW4VHb=U`(%aWi`lMMll8F@xYJvzI ztb=CDLpRKujJZ#;B3w;c0ieE}Xv1y!VK%`jdm&Q2CvN5W4X=RAKx1yQHj2|k3sI9w0b1lGEgfx+XtGAKP{~6u|^>7>}|4e5^c+aitssc~p&=&@G%Z z+Mum;+vR_g#lx_D@74dLp&1}sM?(9~;h>*&mR-1qxZr1}e&Tb(^CgG}nx(=hwwtvg zP4#eQVi@bF22zp?V?Wc7}Dp< z#B~n|pI3{}8t0-!L8PCDnFtGh*-5sWxovar;I#F^wVC-+T+-U;7|kr+xUh@_f0Dgs zH4I)>H8yH7L|_IMFGlID@(|x&NFtKl0ux!@my0fK0wrWdp==x*K!qoRZh1h0^h}+O zD6V`!UZFa29%<%TDXpA@um9M6cfa$7|(yN9rnQWunKrMj@ z%K)b$p&gYU`BEk0PiJu>CW(o8j8k5ipvD?)d5|&tX}~T&^3VK5r?DzFp(+vSMUx-7 zJ|$glvit2MDRElP;gO6+3^QeVLP>%$2u)3SA{RrQqMk+?)0{Do?tIo9u`+!C8CP8` z-84T^Qf0&wC$x$8Cqz>K9dIUauhhzk`J{+R+t?69XTe-V%Y*$VQ|r4_XAV?>)Ki<5 zNhwxkrBPLt9{DF~G3-B4NsvM*iI?iB(h=4EWr1Ej(1HYbtUngabVVjTlRT_N?Us9? zCVOcrk7O@(Mbbf;Z>y^{Q2(qg?39@Qf=T%o-vh`$$Xi{JcdiI(^U{?(_#s8%Z=uk( zf$PGUoPvpb>eb)G)5;<-GERjto6_bF9kZZyQ)tWs;&?c7!a4ex+uA~`lT%wf^A?FW?Egccd&JRUmK5?&w>=$n+>k2zyIZ!BT z^k)=C8Dq`iNpEf%7T>goV54AgkJ{G0@6-C1eZ84R{G zKE>g3LP(Zw+bPM}^Eou{M-_Nei1KAj@X&oEqWP$nG*7(KfvNK$?2-$Lt z@P$f-J>>T^88iC1ZoO?CWAH+2n`Z>!!836U9dycU53~^F@h!u6Cz3tA&~2wN0yLy} zFxavmyUv3o2)~~FA<<$#c@D@>5;(9iG4I{ne+9E|c>XJ9!o*g=^dS-~G#bEjVH~*7 zprn1+1T&2vr>C3iRKrvLqcju_sFXqts1%?i2p;dmm%z9!4Qq*^D7&p=@`z1AAkC9j zz`e;D77Shtq{Qp7zz|2uFFtSxjwQ|Wv~)p|;?zFT-W@zN`xCbJ!qykVn|#knP0N{v zzFK%NAXxSMKoP1pO$IVWSFIb&6eZ0`TqiBTN&I_SypwolTB6f1B8)6gHWbO8TVZ5W z0$MEk2rEC%@Hz7zrPAC|vennwe7IrSiXK=<$HfOdSoP za*<@hhs}aeWCPSR*_8()2G`=sHs2tDW_>e1Mf@^Nx(7lV@8pG)>x2b-p!_T}L%h>v zg`-Rsd{|oalpN2iPaX+2;QsHhWEEoC2^fEc<;ysz_>sau=NrH(oveasrC;e%Dg2u) zLr^2Di>`XQD>AXFj%)lWgaAC%=gsFcwzHtXt|SVIUzK$ zuRv7PxU#3BoY*UB^UBLhE#w*N?Ean>I%XyHa#G0qh7v|lh+i^M{+)=p9bfO{yR{QAP5WWiu@x=^3?%e-Ac2U~Z@189dZNJhhVc&*cjEco6wyp; z>hmx!Jui@k3;E}fz8gVwWI~Csm{^8TN`plG0^dhYZ~8o={fApUXj!-r$-5DsB&r`s z$sDmL{E*WqlisjP7x3>|R6iC|--JWcBh9gqjZN!z=B*a8`dtXi$1LKNy z3q7svea!HO*qXoUA4x2PML^jqr*$7Ja8juJ!K44w;uG*IDDFQ>=6{I+i(WGMJhL}I z!9rrM128U_aetO@eP4Zv)Jsr}|BME&?d%^px6t@bz|q)8E;R+pQG$CzK{{?qRP@kt z;NC~>=iEoOm}Uk7wy*g#*|E{sfDWW_4&4f+lWlBZE`*Rv6)I%-1LHG^bSD zgEec*^+&1OYAO#Gg%=@4}F}1{;wbU9<~XoK{uB{uiC~h^;lk*tH)%p4B-x0N1dbW93VQF?L^;e(USn#Z4%zU5+o- zBzqhi?D3HRSDAu){IZPvao#^t5d9XXl_8P-1C%phwI3&^0l_o#=90O!H=G6aY6KLi zU)F)h07P359<*+?B*Dx%PCU=%2C$2m19)bfGPB$>J!RASfy5BXI+*!y-7aIG&FR6i zk9~P(5-w(;FSVf15u7r+E;!l(AbDo=@uYcXo)C)57k#v#g?b3(DdA~1ECmhSzVym& znSLwX;reFEbaS$3;H(-yu4b443AjyM3Tf6Z1JE4Kn8W{PB&5e+7;JK)N)?EcsOLKZqd^SmFb!L5oylEM^I{qq(y;3yoWp!EP;oMF`i;+DzC# zvlKIuDQf-t{b^4KU~u$X9GQa28^(tw^Zmew1g^xlN1m4X=j)M+^Boh*M~#pDs|JQd z!uh0$gmZ9XKaN`BV8|y`8Mwz@mm1Ym3bHFX8cMPmG5WI%4YX0fG=LhaCD>6zj4?pR zBu{65y5~7PXCB)t!WxNT2T2=eVNlRdaI?^40qQtEV_c**NAa5uNVvl?Mf&s!>MZ+u zQPwnYl9t?zgE$&SI4Umg*2{1aRW?VOl-V21rKKjTnWCZo6OtMjlJ_jl1x>M#g|5od zqYGA)H^2q#NF2e@f{yy2f&I(c4@7obQW4&cY%XaS}I76s;kPF&q({1#dC(T7des+36cJdMqgDQYV7EzR!R?jNiMTLev zo*dD@!81)60GIONQqvW(VxEki@I(nb92aCi$n)ZkB!v?Sj<1dcxR6z6J2A^XDe2Ns z>nj5!=RFRwcG_xb!Xb|iUB0Uw6|)qFe0}$6mpCd$oEG6t2-4$+g#Kg25yb;J_ilxN zRh$bOGH{OnkS3dijgeGRQE8AT&o8friOF{=aK;M=$7iTT4W~h2!wUf3gaIDz=U}`_ zQF)XJnnLbgyOQT%f;qviB_@c_pkwms@dCKNfcI5<)KT#v#q7S$>2L%N#$!D_-|t~@ z26C}L#|R_2)YviGgNV0DvgFM|8?$Cf@eVbLki+a7;WU;ItdQ?r!Le`G(o|Gwmu4#^ zuLirQw9oMz6)WkGOX0n4-Z7=jlN(;Kt-h24(?v;SV7kcW1;c@SRBSjYgE8tmy}f$h zlAoUqLr=XKmH251Yf?rt8Qt=7cJvYkw+V(IIcdsTH6`g^oVeJ%n*Dics9oZ1sf(oG zLFRMkhmeQDbJ$}>>g|*O7DY}N4UkML^K+yzrsTo3!H3612REU;3N zfX*C=|Hl~@H0T2Cde?$RoK(a~8G>m`_EwicFA5rJds=Ftn$N%SIu4y8I>i$evf(0v zHOK;{Y-B1_P1nRzy7=4>ZiPz|_+8htKCypY^>N7kqU{k%aMUYPsObZ8)oXF4bib0& zD#EhsOy?;%L3Rkjq8x1% zPGBk)69nUxsX8x;>fbMYNfCKYls~sH6O$8KRTf#oC2!+D5;7^v+*=A850eX(FvhL- zMB^6)v93XRA^& z1rXN3knaB?;JMp$m`nyM@Gk;XM^L<&xD(DCIo@Crit-d?A(rC_i&+a|BxNLJvXUYI z_u$6^CzV8*u$BTX5rCAjUZS}Fv-C{jVy9Y{wu@|nCH7&n6Y01$@qKP!c4P;x=@%B$ zSc>~8%fCof-Xr^G2WHdZLh>$)0CLo<4!4!;NXqsYB2Ci%He?;)51$ku!e54zrh)_c z$gE}svws$d$(UOcchLck6K{_UJ(3HYOQjjmC8@g!mOEM5oCYoo{Bi3$>BYoAw`nOG z|Lpg#U0&6sC1G+)9p&&$nSJr`QH@lY*PGv{5y-Aw-n!GK=jTD#Qw#WCiJ1w3bFE#Z zeE1TBia}y+ zPW)Rj;H)HBCZ``C9y^fxDTG^=dagc)7b@vlz{GMM>I+9ZdX0J9pKl5aup_=Ur1UP# zko;94X<}aQC*>4G1C6Sl>P&JWR zrO%QvTARk_;x_%?Oz1BL2FMW4#BH??*Yfz76b%C;S{F1swGRalhHyXh8UiGMWe_kd z?X+2%DKgqS+yDvS*&KC=7?nIjXv`m#J$n+AsM)8DjD%$^O|3IUCIu{mH>o19BsD!{ zNVLuak<3t_hZ1KkwOmJ_uqtj7V6@Ei_X`-Jilqf0u(aDz7#f)wRQM)>t{B*EhUzJ@ z2>wH;m_OS?^{I<|S`Xx_MS}f9%F|CWsXZE#G!LWyp$<3jk2*1w|EY5W`{4X32tS7136&fLf@}PD|Gyu6dS|conKPU>&Jg}Ei4j}H0%Qh0Xc#FA3eTY z&E4Fr9W4LaXVs#y*dBFI<>#Unp!eEOu$c0Lc zhjUC4vaVv@&HZlJL)!ib`1}L2;b8jWYG^mw<)?~f9o9+l2|{uzB~B3baE4-hq@dGl zP|@ldHcl6PgLBBS@m%)HG$KEB0+v^P2-S;IHYD?6S4?~+2Ewt}w1r1Z^a~Xw@#P|+ z$O$A)mNI`f4@gwP#U>g&3_fHuuNRUW6hzL|Vhj~Q#t~(V0;H`9`)~2cP1&QZZ-x0G zQ;hS)&H1hpvJb8CgEkZ029zJEp92_{*M?UH;|T?9)|A(T78X|Ubfgedwko*d-)@DG z8e65Lw_{=Xu!2n+9LxI>G26jx6lVM43KY>co&Y2fsx{V-inS9RpIFB0N3(r{@Rhe# zM^zry5c-+TZVbRk^bTjGqsoE;5yCGrp7R1Zu~S(qHPmb?eu#%8Jy#7-jjcw}H?qCo zNXTBO2kmm@&Xf{15PT;e-~bFBQY1o5xH-eYG6!k|?#ux%jeo=Zm1aNq}IOBUogR@``i zwlnYIOk4~G9XP||0C1+9^gf|9-$mlJ1iQOh&=+#|>;S~_lJ{-e{T|iH6oo%3%xiSq z>LP5;4%7#Et{E!ok(0eUDxx-ZVK<$mlo%^#`L`Z`yM6^*r28xoh^2?NB(aBo*}JXLr8)#txzgOH0ro^pl3N#_k3Gr|v$twSsv&}p!KS`^BokSs z(?q$8|DkbwD)yn&fa}Voe_Ze}a|1R*EC?WT-o1l|iK+)?(X670Y&e8n$s(=DP6U*!Ex^rCGcP~c zwYhM*9;isqNGrDe@Mf5HWeWc6w`YUW*w4RQG9&&Gwq-g>1H%s!gOzy+mwdHRY)}dL zf+QLqGfZYu!PY2qf&zS0@&s;lJ^|sH7Qs9|s>wOEL$FZJ7NF3XtlYpFv-Y)?hG-$? zwvC1-R(6nmvI!J_#q(N33YBqYaz3tgvykx=`a~H_xqIx?aTdnhFXQf=*ev-$nkQ6% zsL8%r#kredW&AW5SGxy*)pN?pVI91{Wz68KWEC^DaU0_J>@S6o)83En?u>{CT|$aw z`+l-ve+T(b$A0tXyP5(Umi~qV0YUq>V-~>vylTcKc7Js(-AWyB_|8Hw`r~UPOq;}*~QNjCoSG#Yz>0?I24pmZ_494KVP1JLxxg4@F2vOadlW0YA63&I6XGDRt zH@f0`hDX7O;l*o`N#pGC_3Wfju*C*evBoS<+Ixj>sEr#lNC+ph=~^fskFgxt;-6mO zu;NJg1{85^Bh z4!Tx7@QrS+ZSOPW)pUiUX5dm;gML5=?^%$p!)PgjY93o*b(@(@4?4pATX+1kK>(iz zsKC9L#i9BQSlRC5_e&UeuO7s@+6p~xf%c(`(nw7&SoS4ISw*&NLJ&0aNkYd zU0FX`+WQQr`|<=GVE+4*bh9$IH)sCq z$oh9{P6c3VPMqGKnkb!zOD`Mlk)0BkYga3!h-htMan0hob~MT)XB54NSI+(Z##{A6 zaF?w^^)yb3dF2^GZ-zlNT$esm!`V3WWmM_AHK!1lj%fCJ8 z9I1FBlI)ZsJ&j$pcn7_Ytl;f}y&zF6NnN$j?%S@`>9@nx!C-sBNVm_{^|v0uq3Y45 zv@?d0_KAZZPIaJ~6JgvX#K<89K_{+|m)LY{GI*l=#=0p8`@XU@53>P-fKlRp1qR~! zPLx30yKBQh&;q;BGL(}fO`nOZ$>W{!tom!ZtXmFeEv(pn;*HRYML28_48nz!`nv}2 zYm+Rilni+ShB!l^{M_S^P!5v_imcZ1*_sE=z52`J<5ZTlb!8?8XrIJ7xms; zYl#H?GsdHD)q;#nJlF^aWTM+tjLVjEQc7v6V$=4S8{P#~rcP*SuHqsc_XWN>y22;1 zMVfjA%c2eYOe;LxObbDUk2|j>hhl3gE4{$C9v?K!mNVf+5;T^=Lkm_pxyELd`MRPd z>Fm$WWU=MUSZ0OL#40Ok7tLF+7;Dfbc=@Q!l(q1%L~K43BJFSk!--4TGxsOSTK*dd z(1rG2352yxVpn>}XE`$GHc;`xhX zu1^cdcvAn4-^*p2VV|Bqip=muUEbU6{`!TZ;KzL!wM082RG7>rh!d zgp#Wpask;Zcr@pSopF{jKnhHtKOfw=ffU+s&#x(~v@Q zotRmts7gC5Sthnae}un5gT@@W%(y+xrl`c{vgs9qu@Hn(Rx*qSf?-e6UrbpxbX$on z&LU>^2^D2x>HXdz@f-0A6lO`+?)s;YBVNWk3W0+A-fXHQYo&!+f|V!rUa7Gm@B87M zaS2+DqFY0zs|3+D7K3oEn94n&@)IzH!=EcjExfYMzpM#q^xd0v$!*xBya8GhR(Ay7 z`uVm(n~jYd%YJW&3U^ky)4JY-%`b874ev;@1y7lYAIzJ1Igp_K09Y4QgV;POII(!o1BTrH zPuaET3sBKf3gcVhJbEduOt*-om0ahOlvOS2*2_9eIw?QZqfRGK_N+KWTUjJMP3T(O zIZWxg+{jQi+;hNLD9~HMOWeX4%x4Z;ruIeSbKXyY7ifgJFMz z1JL(vi@U8yhaV|=59Hs?J55SfHR@jxerGCc%-*h9%uH{0SAe++w)$DTz( zU)0N2hkP14&5vTJ?q5xXt=qIfgp5=YqoZB3v~3gh^9PxY(&%Yn({m~rsx9x&9lPqB zU^4pfmQd0qgy*l_(yFGVzNiL(p5ZBJ&iH5ZbUsi-Vp&-3c^H87{)ve|yjVo;aFD%* ztN?Na`?3^FoR_vsv?Y@D@Qw(%e~y?KS#hE9(_+Qtk=coK{|Hobi1FTCN&s&}TFX(^fV!8f&t7X6sJSbrHiVpm3>h9|1Xs=~& z$87CpZvWTEUQKiZ+#m}E$WLF1iNuLgzHp316%=aJ0=Qb4m+w%C-HF8}AKT%5yB=Sh z#*Xb3-oc1D_yBDZGOkW=-dBA9!bQ2R8 z2YRenOAs2tV3tl5h^IB-uy5l|IL(3Rl_P;scABZ)R4p8MQq0HJlzr=d8iY7Xs4q;l zP&~$0HH^7ilp%HPa9L(9!OQFarAu(~Xt@WdhZ?Ah=pVZN?hgAOb$_*njhSr#=I1C- zyFH4e%~qA>mNW%gPiSE4qE4h$@w2VrCFq@U(%Zd-s^GY6+k_uKUG4pltJ+1V;^xas zD^vVWogSRI&Mnvc98ySHotx<;ScG~)nGt)J9p_%f8 zJ*GEsL=GI|u1U|LylW_^%U5)12)(Vo{Z~iamM(dPJ)mF{pm3aj2>&Bl$;Hvh^{-LQ ziEnTSV!@F3(mQy!Kf#(0VTBPc4MJWMdXA2Io{9oSt%|=OG`qWxlY@Mmua-~H8j`moh;odK$L;fu^H|Ly6cZA~9nn$7 z%ssWT2$wSKpp?>H>^4=muWQkPeC zZs$yMWzh@Qg*mqM>r=UO4G#N#eeFC&| zPR~x6aDt>>OGFX}1V?kBu!eq&Bzem{2o+BKdEPiH%jUJ*mFWz9b&gPZB)dG?=cyQU zza8FpAHXZ*uh*NP#BHPq3|Fq}Al6L@`pJ}I5mp@ft*U`|v&9(apTYv1m z$Ibpm-B^G`qpK^U(c=3~eY^HuIwRVSKZZMe@F8_y>n6GG(0;mNMw6a^+dx#yhYE^#GD;pQw!QFy;w$hfVhI4maICXf%ZX`ThNhhXl2uj_?p`T0(){JJ!~s3KRFqW{jfhYWvjP6AkFTEC1SnhE+kONeifu~w0A&N8r$ zs|@tKUw=K#6!T(!*#c|`LGDmVac#z4Mf7OsRieKlY3|LRtt@;V5pXmrL_&#?QnVd~ z)I(8EQ0XqqlfE!$p>CHh@o#wTEa~C?qBzxXWJb#{B8Ryl!q!@N$)2v$8av0B@C*Js z>79$TQbrLr6;0N+MG6IJ+-$G@48^b9aq&4wMx4n}6;yO)83=a_%cA5u3QWq;v=o>F z@Gr_Ef&m*g?{&Z(xK@<+XNOtia4NqUM%kolj4LjJ=|@CPdH8k&Elf%&=fownw(LoC zFWwzJMKW@4H`edgJqk~lN1&)0EMrD;e*<{j^ghI*u707r^li5ZC{3cyF` zk&!Z?p1l*UOzGQIORMdb@mPHrgthIN+q>?$kv9;J>A4ZzfgaG;)E_+z@s?nQa>&8t z``&}zI}m}w@fi%E-|SpLr#XKl6@_A!?(P1E-}?trGjW7TI8RcA24_se3)ZbqK0JW! zRNVT-0*t*PuK`mn5}56VIDer!*gU?P&QdH~_xT><{6lfh6zkK@4BuUgKKE~!UMMQV zp5q#4sAFZ0i&NoDpHDluUAHajmaj0iNb%gv~u0G$?(x?^}YpGv={jwJ7 z>3Zx5^?0@adb(Z&k%48X8*i;2!PVBN02j)}NQ`}&H)NgqqhR|3{+}N~h2txhJ&+(E z!6YCc*uWVJ*tq+zX$rXV0$!gE#@2RBHcsZ2R~oiX=;|1PUEbWZ_A@9nj2O^^U2Ofu zjH2{lT-M)9levl+>zqSnk`&N0sf@oYrUG&jUO*nh1bjXkFx1?#ot5ST`BWr?rJzyZ zF>pr7Y;HLPFbu(OH@Avmm4Xutzg=#vzx8I{Z@JF$dY?EHjujdX&E27S!?GZNn|p{n zH1|$9wA4EBRLNdqa=C$=wsj2df!KmsAxsuFEt%+a+I7h6z%xV#a*T&^r0K$8^AceC z2ifd(I-kL?U?3|JZ+_H~&j4pZ5GqK|aqVWp9Vmd_F~+=MYx1;Wq;H_DsnN{JIdZAqZPeG(7HmWB~8%98N>zxKq= zs9$99)(K}MXT0`^n!m2JOyQhXM?%P|Xr5_bZ%&+Zr0VS>uKm9cOn$y@mh3LQbj5l8 zMeGiT_>N4yJo)wg>)-yJaOsh|RQmtnm)hKb(#`)qrT?hg$3B1WpOY<3_6O%5SuNgW zu)SeYpz^&sRenv)<|k6SK2AH>dfx6z>!gzKwJ&(ro%gHAP;c2fb-LEV+NeWWc3J;! z-bucfb1&=P$60#(w^Z|lw>ST8xP9{NBRh8C?XzD$vwQLlSbM)$-Md=)eSc&5`YY1w zr&Y1N-pat(eAM8U!NGtWiR>9ED?E-Er$`p@rnYImkhJ}9Z_;(|bw~M6e~^6t>OuC( zUBHX47Dldg2(prCxqAK0{~I|*ZBK-Lo9^D$@b2jjr}WFBue%N`nY~K;%F|b;H2a?~ zpWU?2spi(YTcz)$Lljh2PI^6O-5aZ2;V<8)9aV1x-cxL3o3VD`hpdb7?NAvJxL8Na#bMY0QT zdn(v)UA1A&OwMS&d7a8}EH7p~?d$N}Xgoi0AH#$_KPz9YFX5i&yL{2b?uxjV=1ej7 z1bYA7mF$hX*Ywe!=?$ODZ-;GLf9z%87QYlMAJkxQ^T6es73Y)P_&*4#vGW(4ifq_g zr(jr}n)7zkjeOCYd}iws=Dm3EXin&oi^2&@|I6iNUr^XC-Q4+(Et#uZv#3WfLiw=d z%olPJ-8(<6Quvpc8qxQ`s`k``D<&duB)D`A7wSB$n3s@whWQ11(v$Yy)4G><|6Q-#b`q_trzV{s*Trx2nFf;(IBRXQ7RPqYEuR4l2=L4S(1_Appx?1+&ufqtG6GtD8fcXaisjFNVF1<+ z@j0>~SVN(AwU~9cJ_AEsC@TX$ib=t|P?L&FDsxi7)0OC9fPSDPOn(C-w=IfhwBsew z%|V|hMVM1l1TzO|5(Qm5`os%DdsZ1#JK8i1x(VnL5eO6JltWEGnU+A;k3MRQ(63(w z)sH@gjBW&a{~KY1MkChVIJyDo9bJS03{A)eVC(jxn}yzYM40sx#VpjGB)Tc+T`hzu s0xi%`LFss*>ql=7BJ{6rN6KQTt-}CsR$vYSbMJlMe|CSm zs@4~4?XIf5yA-6sAuvEdKwv;J(>OJ%l#1e$K|w&qp+G>;fvwu206S+>J7;|r4|`K5 zT?Thso2F!0`86SwFJ~{9DU1TdUZTjD<-7J&_H^;MVl^2zT$;;_Co*6UcauEfs>zX?H$^YxVry-pv%+qGBhyx|!+)q~Imq1snMcr)He{;_)O>OOks8^FvUzt(o2* zW;j5Z_G$-s^wC1jL~^wPlQkYdVkoO()zFBBLtvEn$05UN3T8R;I?3!+l#WIz_h>El z#}!;(CjHznlQX zABG2@eE(tF%iuPl&Uyq@Ulw((thI?|74qW*U>!_RJNFYjTm8+BH}`l=jn<-5OEX5r z$MPsh64&!i6e;t#H;|gLfkZb6DxIY>w#qyBZs6{Yx+wOez{7Hw-rfA1tnH+#|0wbo zc2&VTr4HfPlrdIr&Nqi6QBt3q++gh$ZZSEZPBDFcssN!uuloz6rvpRCRh)Z-fa*KR z=dR*?m$krrV;Q;>YVDU~f{;ufwFkb_S5R ztLz4A+N4L`kRb_~QrvNvsSyj%ZlVuqQ#YK>3RjDW>C@OsB9#W0C8A!#J5#B<_|VS* zpa2pw&Fm2+Rc$|P+#>D;o1G;M{DqF<>`|4|tr4DCe%H!HHvDzOy z6fCqWE*O3WiOMVMxqrNdn(9Ows)b*nz=%uHfF4DBmc$5HZo6e;m$jM5=9t>rE40neeVn_bFy}EI?~PQ%MS!c#2A9fU)|FWd z;~^WYXJ?!LGEI`zs#Ki!Q$!h6cIAtjPy$su86xpM2KBFi0K)J@vV;cIvX){(kWAFl zJkaozK|`5oJ&3vG3fLgW9UBN&+-fcP-JhG<%(!dKh-=QZ?T^Nn%znNET8P2FKMffu z9b}qP)k3l0pSV6iA|QjZ3Mr;3xwWdXY)70pIXZ03xPt3eAhd)cAf{J56bj6P zS=V;m1Pm6{jm*#QuG2e_`wKdow6fNszcf#9QKlODW^Uvmjkxifhr(th-CbW;GG`=7 zVU!4GLP)hsey8i6%KzEm_x9=a!!kbYJ?8}k&XGBi9`&4?=<9R;CEkD5<$7%m`xsak z8wd~(lz-O6(BA%!vZzehtudi=KG8zxI!9PS3oGIz1TG5Cif-W6CS2kUy&6umRUp6ESkIHg!nq1W^uIhN(7$ zs_URXGhVd-MGxzormj#u?nT;QG~wXyl;$b^mw>Fh7(5bg)zeqb9HZVUN-yOFT3$U3E31Hq1H zJZ>OXt}jy$yNo`G>(LM%$>nATe-WjM8v9O`Y-I@OyGG5?2v~QBYrSnKQnW@L(wHIT{-P&%p7)HR9Ety5Z^Y?eE=n7 zk~Ke$!Y5a)U7|Y++!qvv3tQ&H?FScr_#-zcF5lJ$Si;m3Seuuzs0qS=R-3KVWPvI5 zt&hB+nb@jcHuCYQgKJWPMe?7zIx`rb841r}Gajz+-WG0t6aD9nalW{N8Uws3=7CGq z`w!L);Ap}K{MEYH0vD(EJ7Y>i+G&jgrTb3(_qhUhc0{3#x`U>)l-1G)BEEvU^~90A z0LeHp1TYwo&uY9cXS(MkWl{xPDO_bpV4z?fM7J08y$zi5kfGcQU!<6i5T9$IRR&oM zN%3x8Tf2Ve-1cgaqV*T$7HlS@Z)RK|n@3W`J7_8xf|A3a)2r}ZI$En@Ku}Cu3PfsQIv#LiYZcm;53X<#Xq63pz%I8vn!(`=~Ni!wLbY?uZ}mI7eIc zi^PZq-YkE;%y7(6D}pL5m{J?Ljo6#SDMU2{!oty2wdNaAGqurqfU&~qO&NyYp(_Yp zbqty5xRWrfeWPw%Xi#q2IQ>;cnvT(%uB3Bva%v}C*WFVC)6Vu2v(7O-(##nxAZn`2 zf?$FETHf!tRLCDbA3a@2^|MV2((0#^dm0a7JdH*{yRlgq%u^^9m%7*#L5nVI;o~B8 z)J}A1oR_aF`a7J|+~i=t%s$yY!=dl7Sj2oUt$+*x{n33mcwNms=%$TCm@eC5?rF9; z1-mz`2Ti{wU{iY%H1PvkJGB{F+$Bmg#+fAC@Wh6$bMZou9hhffZr?cCI@^5P~h4sGM-K&~h-WQ@5G1yeLWbL7`s5!u<3x@3#W!_P^w&v12Z zY8aZ6?d;h>dNEbqdf8QJy)C$r?$oy}*Ps^Ij|x$@ykMY9#!haqdv^Hk=H3L~?*&>9 z&a80(U$l5X;8|8D8ciQU?Jg61fc4(Ma(vHh(HKO`tw%Ifl%=RPQ+WscvV=8Kn2WqV zT{+k~dNp@^=);*Dek0nt;11VR2g*G|qJHl|MR%LMS*BXL)v-lwN0 zzd--_hizOi$jG!ENP;WAp;uRS-5IMa>)h{e->@xWPxSrBNrZ@0l~mO}mnYQo_Ge=$ zQ17c}C90UdyyWiJ%6-`Y1r z7=2fX^ioRBX9f;KQ}=f!){a{$UM7w&8$H%-I78=w&k~Zf;=&D^0?u{_3cGaWQzYpeG|BKwe{kW z@FVmU_~=LBH}nR7+c9@>dh9l_XVvh4^BED^eI?kqE9WF8?*NhkJ`nf+hcWIP)sD&FNE>6d%e4(rE(&9h}qA!W8J4)NBgY%*0WzAI!`3 z#*1^h&U3BrO6L|If0f(WX=p0vX*Q?)@tcp{nJ<5Jj@{B5`e1iTRO@QbiQM5@EMWKk z$6K9Nk3=?Jce}O(#{>0aFNfzHGdbn!{n~*m=OH|I*~QRXM;JcEt&x<69%BJc51txa z`YufU*S*h(h84&=rO3=mME$BnMwJ4CVm@Ki-eGgTF0S3zBPW(alyG_~58;7xD!%#K zWXU;Htz!F>aD)oLraoFh#aaOH+X3Cnpw)*r-TO(&WoQ9AxiuG4FkG7A_Kzo9FP(gJ zfK*WuQyK+Ok7dlV?2K!P2wBqLam9W*c|HGSOPfhJ{2kRBljIiW zyRbKbK9y8d5gAvaz?oTv>gc-IvkFPY5JwlFbQ()J(Yf2 z_>A{zcdOVrYfM_8= z-2VvulM14Y^300F{l5s#6v==saDS*s>4Y@N`yUej4Hf5kS&bE#3LN!MVXk;UJxVA* zuNaL#=!xO!|4Sl0F$|>#Jj@@e=M&wUP&(g7{i~_aNwjg=wWAwdFPle9Yk|0%P|d~X z>;cqI(@%?Nu_L+nGn{xpDrHh!X=}54_m*E9y7scI6TXiDoU)SYKH^iZ}ZU(=R97)?_$ArVS z--8i=n%#ivSd=mwA1c27s|QEABZm*G=UcpsbGDovjH$;2;>gJtrEJ7OZNAeAKvzT6vyGtn4hm){Jh=HS`$Aa7i~I))h^!9E3XlJ9B+?O zUrxm8u&O7UYJ2V5h#ywGrBNAhOkUqSI&oj^8H`D}%T4-zNx{|Q?51onjWmW8c3j@* z4h}Iwql&dtroWgG`0_erQtaQ=jm_46Km9NT-GdquJ8O&i>FaLKs0 zeQHtu!65kD-39lVS7vB;n}ct@YA_|En`K9V z0d9xc^DK__msi4|$+dkLxlgRV3SVa_QfbSg$I%xw8RlDtZa%`#CDMV)8<|u+X40;h z>+b7_l4VZ7QVg_>I8}GjwjroHqUwwtv?oOW`rMpXZQ?SJjFC0C!xJ9#>tl?6;<{u; zvw-pO5o^Yk-`aUD>Qa!zS3VWW=cMK+F9%&eF^+Z*M2R>RKNWC)ftPJ%VC!?vlj78| zsEmcDwyy>aazaG$wj94HqAq5X?bwk<_wj~hCNSjIDlQy<@C?;NpXwkkK}Q|&`C@cB z&~v6d?^E(4d+(I5XiIuy2vAnOqsDvx%OL|}j;LkpjP&g_eZFJH?eTi#^7V3f$g|_c z!Nd3NHTiAvGMsgo0uxav<7vN)Un%Sk(M}_c@$#l)}I}n*os*zC{k3! z&V4jy8jaG2R>F@~Ti5}c$M876j#xA-hXZr>Q=CN+~xJ=$%IS2k5%ncc1r!( z@u3z`bjGRD;aSvvJVaVaj6M=<$zIFA;cBN5yrC9#yX;Qju`iX@&|qRznezJQZVv9p zmb#+tV)+s^bN$m^!Hj>AMxR_@?oB1!4*onS-ce1b7=^6 z4^fA*m6Nh^?2J0XJa1La=m5X0V>{NtI7KHM(k1-*8QpwYI-;E=0vc}!P2p$iByK0L z18Gcvlzhgmhv~qT;~h6o@sWV0b}VnS#Eiydl@$CfZq7#Yx&aSW2tqWU7jxp^j9!-5 zk=N~x!S`}zLd2}|j!1Ich--tJ!?7xA$xrI9n4xO$e|*=kh{*$d$0R6dql z@Ng}c*B+}4$zR-M+Q@#a`IQ^0$m+Q*Hu5m!Sul{^emjq@5V96U!!;XUn!orHMQy0n zPL;0zf}^9wXqI_#=w`vpr4M{f+(320+tb5Ju2M(Oj!$cFUP(HQq6$lHU1#CD^N+AH z@-N0eJs%v}cz&ndRHXh)CXH?P1qmr-Y3y4D!KWr}KXwP4S!C8SY~pZ9!2DvpIQq|U2Z29Khw8nq&#_?ofZ_;I88gjKFAs@fmC z;lQ;+k0Ij7wT05yN`7HYiDH{}3P#-YmiWNMMRR74xa!cMwJ%Lf&Xv9>TfdDz`)zIX zKtzf*=5rO7Nd0apyjrE7bxPsMy3$&kWV2I;K}Rv?ijoH9;x$btu|h&$UHNFR)Kt4v}zHSDF6l%cyF{m_Y*FRcZQ_a1_m% zu?|0`rzkC@P8mH&dfQx;AKOTd9YA3r5pi~odGciqC6}440VfIy=@V<}O^nWDVIZSjCgi-Rfq>Zp}T8D!`F99` zsl+5Vjf~VBL}|qi;X<5|8A|!IvuP0GSzIqcQiQkh(CCYCxK5o zH#^U|&g&lvz-*C}EUucT*nVYzK2}mqoBBO|cL2ZMnPO-heC%2s@eA^K&dc>pTuZ_L zrxq}!;;sv>!ytFbM`O!e|NI<J4L$A#Cg$@9snK|i(X&?CG&r+B`aGs8pg z`gvz{L)`r}i@d=4a5a)Z$5g89@a6Sf{cHg|#B6Ii!BLJ{tONhsu)w*PQzg_-W-|&c z^!rtWgm&?9|KR1uj5WwkP+M2*IPubGI_c3V9E;r*z3nG%i-a83r>G4D%)+ou4ef25 zpV3|Da!%JAE;dW9?pv5HFkP_T)KF5}$pdJfa}F`s=TME@dO}!vob_~hoW{N3M8W4j zICzWuq;9SBXYtAdF=p|sO9a5X>NtN}$7~Lt&evoAhA?r1?UFsbdaxMxQm_ZB!B6>? z5#!Y9&zU=Q0ag#w6>kdLl?E=SvvnsSV{c?$eT&s)NF#~bg*mfqmd|+`u$ErXqPQ(H z!s-gvp8SKyf0F`yDNVBz8j|vS+z__w7uN{9JNPO-BXQ(6JWU`r^Y$QoXSkqYAUdT} zQ_W9ARpE%AwjaN2N>Jo;dT}`vI{|S54v}&>%>}gSbT)$m(cSlJgEyTs_kcM9xTrMI zi2zJAMF0o>=o2}RE08)v+zm@V5tV^3Q<$QF>hPaaEgM7r%3dA&MM$|V27E3Aa>Xt? zu$_(?A^@K03$RUpjuH4#(rbwn@@q2$E?B;;i%UG3D<`v@_Y@V*;vH^}ND{5@5s4dU z?ZYnJ`?xrNQdQ!8y0L{)THOxCjbcN3cKk>l=69Lyt5e{4kvRqDlddqYDc_YbB+UCcsU}Q`hq)h98no&uKbq& zTZbjw=wTVAGWnJXPue3cpUdUZZrgXnhvk(f&=kRDqs*!3T;X z-AU-`<7>>D&$p4^I#v)ykIO=2u@wQpa4ZBLiLO7wOaBU=|5y0W_wXP>k*;zdj%&N` z;Fq3OFLUDa84Xs=F5)?gjF6oQz34|p++xV7<=8g~Cvi3gmasvK@tR29wTL ztS*V46)V)b@XuS72bFS~FW6Kh2^8qTx##&)&PzLm5i+P=wd>Ur#GI%oFxI51;okJ) zS)v}Po`e>-vC_vaDMwZ_@LJA4)eIbj z2f6O0<`Uo4_ooRluv4LaU|qUGcA4K&_(V?308NG5=j+BJ5rnUvF*PDtbatwr^0q;= zIU{lexX)?|AIm(d{0!SP7=b z$YgTuRv**EeHUc~MXMH6ueGB$^EUy>5pMGUL>8LTFiO5^lPD!W4I0C*_#5j+*$g{X zY7?amHx$X&r7KJ!qOQK*nz$r}_~E)Kf&#RxtW9~tNu$iY0?zb5O%o!@!IvQqVqA7);0$NJ?{!3Wpnu)u;O<9-L14#v9{`~cc`GX~v_bL|Xm}^3FBK2r%_gQo`nK^QdjQ&C+jAZvL&BEOB;SnuZ z!i?pvlM4o@M<{wR(A5BJ8H`3PH-X&8f3q1z{1+Ry%l{`E)u?*_=LO|be8ZtdNsW~j z#K$d*>XID#fw@!lA0 z{>f-NJ5+_#bF~Ujm=H=#&^7A+Gn-VS5ZPz$LC2%N0;4k8{+Hr0MfeL==WqZRiLz7W zcL=azp#*xoQ#-5e8O}}5*puJv$hU;AGg@44EzX_bzCv%Wwl^Xul<8{06<#vXLp1v; zC?Tjm|DeIQ>`tV5G0G)=9jkbCXnVYTsP%(4ocHO1C#NFBi~gkNK-PvdtR8ev8Co-a zM-E?@PW{N<2ot-mt$(Lh-9?hpmn*8ODjW>%&K%~O2AbKuh(HdYvSh!Q>`$silK+yJ zVB#Ud&fP|*M4S>hsx*AHV$jE5iDtd)FBu?1fWqxR22Kh!sP+RARsR>9e%`1JCChOj zNSkp$1GL0lT3cKJ-uBNy16;u;T~4HemGC>Q`meiv$9!1eg1%WAG9-8mffwGBmW|eV zvLqMmGKnHtc>{GGC=!$9SzK}L#jaJsgrExDYdF`6!Xd-a8gT~0wNo;{9 z;(azqCs?TU_*Q2AzlndZk#Q=*3OA{e>1W|?&LkJrhg(t65<$4*(5XO;gyx{@|9pv3WNl6oCT{zD^K zMY@(^@lu}DyYChLci(-X8Zr((Cnn72_^urIfBF_51405X%(Xtu-vh&joI{2bOq$Wt znoc6enun)3WY7Mg@<8HUr7}??P~`yhyGjVqy01nfZNI#k4opO`ZQ%kWL0z7}M*|w) zz{3IvjEU*PG-T8@5X8-R<2A8iMsIE>U42gejkw0vSq4$8zGhXWA+ulYdvE4j(o-1X zr8T>M8xTrRl%3sMuV|pzOZNTSb~;AV`bSRTLl(rQhN%vzVP>VXa#%svH@)|};+dcv&dcA8XEt0? zfk?klf$V1f(N0e;C9??CY)m;FZtA_8Ih=;TuNUsLn6LHT-+{;y=5$ozWjd|tVINfF zYY*-q_eXn5f(Zw6+7e$57iG#txD&29%e6cCv}UB$A4)hziKokQPLsLK_nGlh9+~m} ztuT+^fWSp46MgDWg|7co;brDk=v4exC5NYCp72TO2gfnTQXS~a!MyMEqjS}TA6WN2 zRE9+Rkow9ORiHI(jGjenx3Xg5w+P->=${W;8$EPy9fF-XA&NLsI-w|*uIqGjjE`eY zKW`3yMo-FD$CS+PKO9&VM44IFGcuKwtmv_O;zLb4|E@b7=$ATe7mwzKuD{U(PV7_k zP_qD}FWF~IK2^;P2dk}$#0RBTNq)nGN4l4=!P|jxIwc!F@|3Dv4f}Mt=|E8j0>a`# zIuONIqp}1BP{D6vprrWL;JtG+7v>R@ayQFy>2_|Fru)&{$xH*uTWdcqMKPmCV(|^q zhLUR-anYgH+qW1>Wz@}?YZ&Ej&Kdx>;tl*>%9giQPqh#?Y6}LiEgNQ7DZO5{Xmouc z1{!We_ ziS&O^Uvv+`c82HZZ+f?V>N0>msw(e8vzyDNqYH5RO`;Ll+5EBNSP(su%sosUNxF8> zUW3$R$8I2j!?Me>G-}{}vL;qB6i)ZZ8*W2m}XydZ46b zX}!RarbFdhV(Nb_yZb_tz6hF5@oin$_td(=7y{<{y2C9-m`!%^d04cB$1>ey9bI-V ztQdBAT4jn;ZmzJTJf^*Khpp;GKsJ4@@exyu4N+`v+{;w+sH;A#*u}pXmaQW`=V|pQ z7aWZL<&@kEMK+PW=i*zLTsp;vJFz*od`qxqR@JNMIksPAZXF78LjhpGK$fQqTAm(Mognexz3?c^#GN46AH%VK zK;A$yQnBy-V$$>XK-hu2ZPCp>oWknYTcpqv>QZIz>^&Jt8iGIfl?ldPW0h4BTe8gEB~>F^<9?!Rjd-!_69Yf?VPB!^<#cKwpuVH+`J= zx43BGcX2qu=OP!@qhm(f+`nsymq}r`Zud51(a9LW zFg#N%NoTJf2Gga4z>_v(N@`QPFX)xp!a0~*s3#ULx8w?B^ z>mQZjx2v6tKwR*;!2v*EF?Cx#zZylaW7bQP6paYxQ*WejD4TPbn9plR$N>KwhP79z zHJ-0JyTv;N`IY(2)lJ%`gZH8X>71AHE5hNrPqWY$N+zmOe)*f)IA6Ynf_~iduo&7k zhZ3vxZ2K;(=INHc+sO?Et2755_YT@J9!JxEMFLk4X2T&PyUX*s>Qxe_!B10s*bDzR|ZiKIN$HtI>` z4qpAwS{8xd!LHybx(~hj<)tQPKNxCo;U8E*dvUudI876L_wa#i_R) zc8UU4-+5>O!lq>{xuge6pa+~;Glyi;daiim&k#_MO|7MbSl?&!JykTo;b$F8pHx+% z*RT(kym>1)zHU+d@cj)(c}yMtkOpEG{^0TrX7E|zH`)!#`En71nHC`ap=s+#F6*Hz zALG3BT)el*dc*lZeN*O}5`aQ-vIcw-z+#^@Z#O3s%%gAsOkVH5D7!~L_QZ#&e78^<4 zI8>5JMML8X3ot4ua z)xF!`ho*0IozZ8{&%HZIy_)}Bs+ktAdh3f91~}x=i=Dn5F0P#pm4C zXU;4vTd|SadVR3VX%SM9vMxaQTFS-(CIk)dLrSj6aEh!FsqtN~T$4RlKLzv`j{S4V zd94VD!NIr|d{Lw9P+U~gzyNV1-x4yAEal^0kL7k^a|CU^F7)}TTQyVS($A9YmAFQm zqYv`>M8LPu+gkD?r11G=73I_$kh;b4eC2Y53-KI3G^<$Mlj@oR#lr}ZDu2ReEgDzk zEQ*o~d`3~(J$4VTNoI9$7JfW{=ErACl;a?aYc9hwb(a|1?mpNE?P=UXf%I8N~O znrASa_RCL}NA;L}N040lW9rBnQR* z4Xn`aY!ZV#H4K9Je0}4qT->?IC5ZVfLw}!lDCE=S59eDtTnr?di!H~qbT#4s58&uQ zIN#L7*|P0Vkb;QH5SY(6HEu7RUb^Sq55n@0f>9i1E6PO;%tDZYK3!W$)HR&bz*c2= z-=EwH`i!|i*L7vv=112B>jQuv(cZ2bUxx@vx0i&sjy!>WMi$_Ft2O#&iUNs%(qw@t zG49+n=wm$h4!uHzI&O8Mx&MWEt#U5@fKzQ~-X% z-o=mA!cA-=I-B^GN8#h(s+cyu_8^s@`(KV`XJu8vN)>ukVTISn?v6zTF1x*3d|_<^ zw;}qNr$@XiPs%}_nI=Y5aVn@A+&5LGMNIdNQpN^{Mig*UxhA;lUCrFVk%@H zx%Bwz+d)S9MpV)9&(QI)1^QyPx%w^``W=?)@h1)-K>9AQrj_l1Z~O-lMeNtzy{@5S zIEyCrdL493X?ibq0}>#)kOX8Bw%v2KThAX@AVy$g+)!h9yLlUzWp8cO z+pQP3KauePpVPYh_gcqQ{P%_iaNz9my-~pXE(H1jQlK3)J4oOJ=D+O@Z#@!< zZq9?v3Df7WcQQ-FwVA}?1v=u8Tm~`{S(N~9kH1cl_9y)z+h6o0#^!w6kU;YXJFS3@ zNYIXhA-4Yxrv@L{yMMXHLdK`?2gB{@^mX$9$B5LAlY-aagO*H4N|yLYpJ!imde+vJ zFs59@A)Qj>wwa4rPV=d1TUff-^ZaYkl!79zpHq4sP4tVxd8C{p`&P7X8U~5a$$F~` z7khMf*`Q6w#z=#JXES_-K4Wk%^V$?Gwk$}L!oztUlxK--$@g}%tn+VCp2y%iM~Qv= zMiMpjoWtNasSb8QznX3HUOyrh34fIDG(vxakqcrte-1?hBd@#Udc^Eh6w27gx%-+O|OwoR^m#pg;=rSx#jN>vf)v;t%1`Lls&w8_%1K3Pt!))tW7{5lF z{}x}a)FxM>m>G|FvGu4#*gQzl_`pItaZ^1mBZQQcy#F|72GyilhHa|>LW_=*tdTZd zX@hae;@U;OrcmotDMRcUp6rs89Q}MTYLu#*lh!YKn;SRU=Jq zQOMXd`*_VM9;xG`p+4l$gY`n2-rV#Ep?DeX>xjX2RzP?kF)I$}GsBDlL@s7<-zX^u z&}HAxNrU%YKvUW8gwSbb98C#%gkoNVVa;Wy)FpNTXr-Ifz8`;6F#)M?qTZ>PB8QB& z>t;BOfi_vbdN2`r+8B+tt3K*UWhZ0uie71a=oDtFV=+-nIett@^VgxGop5oTM&L0j z(rYv%@v1HVM6OoMOncSUi@2Pq(2Qw*sF5c08;$muind|+)Mm1Jlm+h_uso7A-1`T` z!4v!GcLoap10z#lApyuK#~uP+$}H9*HZI7Eqj(QC^%L!?My8jQmCMALBjejX{o%`ZBAp>LGe79pHR^M!RV=}2@XY} zR-DNGO+%CEE|a^16$;3hm<)L}6y+qxbF3Dg99~=hQ;b3YGg3d~d(FhOUA}&nKyKMZ z@m7-@U(pDsW>s!W8DPfd*13QEdxyq+RI(Fik}zM0?%`60qS&;~zWPWzMQ|`=yrvjx z*l@1s&7n=k5b-1CqzcDt9|sHk*M6c|yru~|j0o6rJe-ml$6z-`inwpcao@Z@X$8VU zpul! zbQX@ZLekEloA0X@VKG0u=9J`tc^`8Nhv*4~U^S!PA<`^Q4`$RI7f)hQ{!0Zs@}DX~ zdanrNDiqbKtz4=C59PTLb<$cQkT73emiaD7M4o9dJ}d_#jHiE}U*g{iz zF<_|YBQTO~;hI7*js)ej1PlN0fgusVO3>g|z~rTa6ODoEuF**bZY@ZlI}@~y880#> zG0LXo4+#EPC?uIDSD4$ZTFMWMLoInE`O|>`GUasAOB0S0Ys9Q1FcU-CB??dBU7myt zm0=j4Z-tBF!Muq+l0b^UxsXCOWr>^s<6<}FfDYa!aY-PzT(MaQ7@{QL5c%kK15#ab zNXrfbQaKClAC@kN-jM(E+`fTF;2bwQ2#8Y+6bSBrp4(TqbhZ#TGcz@I{__aGk8Wy# zME%Lr17_3FkbHIu2+7!l&omm?u-?SpMcVDXKt;v8ZhCdX(Px?#;3H8sd*XF0dPqy3v*Yy5ol z`dA%3U6q8*85;+4uK?tXRJRQI95v(#H+{~v5w~drF0SXErIQ20wl(tMgUFk+$c>k> zwp2uYYsSdXt2Y;@AgRkcD<8|f+Zc|T2^Yu9IkTtwWlBFgLCT(GUk|Sr4$CW-I(;7< z{+e6AV%vvQGhaWyw`N^GH>zghcs62^u1r$LThQzG}y7JpfKX&C;TpRn<%DtD_~Y zCY0DJPqgCgtg990)sE#wx=e0r=$Y?x=cWxdQBET7XU}H_@gFaKZ%Z4x^?dwxg#G&^ zLu*&Qsf674Yp?bE1iXYiM0{^9&%B$JcO4xyTlB8T6$>?EFXUA{m1v@ZlZzb-K8|K> z%O~a?3#48wJOt7+f<@RYeh;;4=19;LBMUDbnKv8yW2!xj*;`w@(^F*+)z?3+j9wnR z9ot@Sw}|TR(zvggnIB$#>t1dLey{f5ow01#Kawpeh6kvtZFONi+TFFgYY^C(Tv+zV zEH<0mD_6`^V6aUu3%*^{v^Y;<0iI-E8T1<5;yKd@sS%EL+U~|kZ+BX;$+77KUm88` z>%E_A<>fki1U2N5UY|zvn=7U`G}pJb}Zb?0pKh5(y>ZUdWefK9BoH-cUo z_^;g$JCX?OJ=M1}6RS72l69Hcw`m>vSZhOvC%ZSl81^AKi;vPD&Tk!N+~!0BGhS=A z?38Y`jVBynY{VIB_dH=Qa5v%pVHgMtJ zGz6+Q^``lU`r^G)`(u;=Bg%D&NN_U)QAyGEeBm`l9|^p(DL>HS?YJj|*Q2&)zcY7nE7BaNj50J<9yVpgRC5*-+0q{?Ox4-ZMknfW9e+U#o9q(yw-#;1x(@fb^O=DFh3WuPuVpAY0aktVFe`2V2B&)Ap4XTdVdL4t!DX z#qE=zGl;hTbg=EC!pjm$T~3fTfN>HtX&C4F$!<6ltyW@N23CV?9gM3I)edy(UK4CF ztl8gFdQclARJfnse*kv}tJg5v9)A0LysQ}nNm&KhLA?s>AU*+h!~r{MC0Zfv{{?}+ z2-5=cl8)CyzWYAt@96hI?o+m)_{F8~D2?y%f1vzxz&}y`cNIA7Es*wK^H;&RWM=I^ z@u4hRK#+ohfneISd5;w3iHr1G_mp=;;nGS=tU z*x|zC#KVu3>u1ZlDIG_Gu&WT|wo|UmX>ZiD=Nr>D?-%a29=8x%s&l*p!$tpiv*m zG6(Cs9ebf}be!uGgk=dJt~j7X9Z_DMjE|qhT~Er=ocMSZaYgkMnRT15{L7UjS>`97 z&<1mXOs86BK2Cv%IsD)5_;X+jHBjX>sHMJJ0X!^3rR&z#6~u(8IYzNQ#Mg@8;YPj`Jj*xT@KeN>Ts?mI4dCAr*gp- ziXnUR{|I{vpt!cJTNrnDcX#(7!L4z3cb8zn-QC^Y-QC>@?oRLo0_1hhx%a+%zW=@V zR~MV2su^>PvG!g)*WA7KY$)v-a$9)-xF1{#37+O>y}cju<#-w>4D=o*34An+Bf2?n z_`JNm#fb}M9s53Lzb_q5Hoi3r>2ndtRWiM`Z+z!wCSbHjc6eUq$cRs1)@*z551 zereyzHBKmT8WOcnO>7XLvM(T#$f!9wo#8!I->Au*dzi&;fqbKazc6Z6;8pCIB5vbV zWWTKMKe)ebm34FrN5z(8!M-KLvV9d7-+cE$Wi#I( zXiQ+KOR;I_`x3!J*_X)=nV#aV!_?f~WEY%SlfH-9wJ)CD48D6v9=L-Ty+_Po$!g0m<5uq)zchP?Gp4OP#72V)!-8p~5M=gFVodjU6iUKGCD zt8XD`0p~8VTaG+(J>I^Y(4dSyPM=`&IQ?NY^^pf-cMW8u2w`p4dA)8S{zcN+eUCaf z$D>De!uikJb;G{YretU5LNV#HflM>1o4e!AvXNI8?eVAEFW_>N*C~lLC#qt_`%Er` zLb*uoowirat7eoorv+1DsWYWrwmj+0s}=*B4-bvT&O13wELA`3-C~c%bJwHZk>TI5LGhKWN^;qiY zsyumr!8-gdHE#REJ*WP`iRcO{$B}D@%Y{SvzspQahyz^dpjL@Sy4bUj6?^$sf z<3T(n>!ISS)A5`mrOG`+`P`~U2-zUoeC?y^;tMdo%4x$(D4*e&vB;Ki4l;O-ZHo=n*7P6*r53lqDyH377svLUrVy{s@i|YG#Ha zHrh;ttKw`b_bULwJBgs4@aE+p{v|UeHEcWW-P!tDHuNo<1&X;H0f9Sm8VuuJXTfrd`;O9mg(z+p|e+4W9&u6B!qag#*ce> zE&M?{*<)|zs(`OGSt=n{mujwGZx)|km^N(l&@T*j3LXY5_flLfKawum27RUAZZmg! z8O_Dkx4(7Jy(p^sGSyjRFLnYjJ*C*p@?a!K?Ho)eJ2g2|ri4yUy;P=sr?HCZuB9Z{ zn3ep1kIl$zJ7+4}@ICh8K2N;6{Z@9K&}^wEomN_gEPg%d&5=dbP`N7sCSv{i<`Ncq zv_uP)b$#fp*j!8P5=_BqHR7ZIe=QMCzPJFc`k$u3o@Nm=2;{dSBjcKuem zI7|E0)aa`ByP5CwW`$pQn>XE<)^n~!>2m!m*dF{(w@fVmx6#q}z^Ru#d9d8+SoPL^ z0)jg~yIv^ZN;7Q5AZ?ZqD=mE}Bx2(myc>g7QX=fg-8bYhvf^d0K657|#6DZ*8Xs-D zFTWswUnWEvmrESv;EghRx!Uk?DP^&Vd?*!$b&%fgI^f_J&_T*Z4mo*7<~Ce`Tg$5X z(&N?3TZcFg*`2&2Y(&l2chr_Bi_}l&etoyc?0J~LT zuPYkTE+?b0l>SX46yJ5*--9G)#1NRf$D13{1GPVlZer8aQx0!J*~v5NdLC{NEb_Iy zeq+Lz4wVGRio$8x6)RsMF%+dZ+V~H&vcjyDu2u874)H|7Rd}_cZAVA#6Tlu1g zdaERy6yx8_EW3PNqxaq{>bpTa)nQreV)?Ga<>;`tqbRD5--6KvK2=V+g>P7IhcMW4 z&RG`=d|Z`*mR739Y208>gDVcqR@S0i5W!MWSFNU}+!QS8qtuZ3)-0vqVz8E3oRCVqylKVTFd_Zn7)O$Oo z>~ZdkJ-8z~t^y|Cq1N&Nzqhg``hS=MwED`sxU;W^dIG#fk+kfV|B{;O=H7cRU7c1%LeivjcEM zJ>-4aa^`I3#zF=U@IHiZ=iY!*%5ildTgyY1Ddb+0FZ8>S7s!3ppJ38rAfs=BcWFib z0d<4OYuchD+rVERtv%QS3bi>(vX!O(aKRJZU7ucG1ssVT;7BOn%qUcC_fD4aW^4Q~ zX|!66mi}qqmNt+V*CEiWG zV0+pF*tbS2mXx-+Tz%7JY35O5*+w&?&bZS7sMU7giRvYK;Gwettv#F|MP`QO zUN$KkJ54)y;+0=KY&NFw6o#4Z$Qp62cFf9%8pnrpY#zH>1a|H-9Do$}YbGo-*Aj$! z_7Sd^qnNrm>3cY*K}Ao6H+S&-7uZ--ds-%sp0pfd$Xq^kw_KUUoTgys`G%U-q~&-? zMIt-YNITT{xA~A604aLd+`}Ha6$d%+>v!Ypuh%*vXHTRUapy!NH^GBa4QR=a*aXj2|@7tsdfiTQhahR0OxMWD>)?B7R;h<)S{LA4c!iU zP!MTI%Vm>{KJhPhKc22>S(NFXvQ&)3s%+N*pad`=7NOMsL3`%iS zvT^;;#KO>I46~Q>P6QYxBAUodou4RV^?K;_WtDnX;r-c-?%I%}?v+erV)F+W5-a-C zhQTl>WFUm~PK@WO;UN9<2neiC9Fd~jrr53%#MglE{|<=)`tOjJ>lVO}ZdZSWDba<;fCKFc)iD8%&%{+NT&4ktmgPW--G#j8O!8BPen)!#naI zr1h>;S2{5eLrbX8e6I^hB_5#K$};;K%P*fHg!8d7muSKoz>e%fVL+UJiPZ9o?cIgK zG`@cN3^5uE^E0YvYT7Yj)$F8A>K9s*PO)bNNb$2pvBdiCo} zH9RsD_5zoUMLL%IIy)FtS5vr$5SXis!Sn&fKOQjnn$ClIuO$LPU_cON`cYIAhIq2Y zlA>y=y)KSp-KoVuAgl{`W1Mm5g?G%uK}gz&k2*ym$ahc%U`WBxMIrQAvgTy1)#KoN z1I6fA16E7WB4C@DlO*KwJv+1^2BE~7lJ9VZ!$C;F_&GptaErW0D)pKsZBSt{<~wYy zFmYbixPoE$*g|-1P&L^@Sc7!Z2VhV&-^TO7pKB>|;7~zuG6P7&z9}YE%p9F_EnUxfQKB<%R>sfe`Xb|Ki1e8wT z`%u7;f8GEp@drK9ud$J#w7Jb0ox!k&)J^Xu1!q2v?q-hOc8;EIsmZVqS(x&Ny<39- zKH~2N8RYnwXe?^UW6@V{(aW^sZDbKk_$jK49cdjeB=2LoCyis#m;-X_blT^lpJPgL zCTdQG^Yot&T~Frf-Uh0;7psV&n+CdzolBtl^e3{X)$2?ZjjJ>osgJj(w1fSSfA^yP z*7ud+=pApapXTVB#}VD>_FzM(jf+Q27+7)`T^ifEn%N2-+wB}9?ldA0r-avkrt$H8 z@Iux1`!*DtzLxhcg{LM5SQT&#McHyrpOLh2pMoG``%~t*xZ77N>h^X2 ziTmJbN+DttI|C~<;{+Se$PpME3h{?&|e z@G@*|H++p*h!W4hR9n+L)4(#iz+s65MndD1Ms`=%trV&*Z|L%GVQag+Yu|xaFrC(I zqvZZm)*6uM64CQ;_eZrXQr#|2ogbcpxkv=VwVJ)6a#n95Zw8~mME-DSovFg)Wm*eN z9kIS2xqjbUvZYUgl~IP3Zvks)FD4z{sjSt|rNiKVqI9kikM2`sCNp?!6y3hgT#9?V zkFkCJtpB^@0;StGsr%#3R1oIVGZbg#R(>(pS4tOU;-?Cn?}=FZPe8ok z%d|YS7-lv`2KE_dj?wwH&k2J*ZgL*)K-bcLD z_@^ERKU`VzR>aFo3hlF}2eZ2(shzZ^gZ(3T-j|_9L|O$6>o3Z)?t3DGK@?9U9e3WM zf?BdPpo8!rm0C4Q;5De>rzAeV4p)6>{gZ>bjy1B$rDUVLv87j~Ks92Rd3FWF-X5%*+JoSXd&D+w_O81>f@2sb1N)h!3A+?!nk0Rr_Q{^!1!nA(+ zXO19C^V9n^P${?1gA4qNC^OTjX(X8|;0UI8g}91_$(ExU1{(#{bqEU#-ne4ye=uG< z2BTQ}i7*>OEX|qaNHaw^np|EkL5lfE_s@Wl?4>K%v+W7Z7MzWH=7#6>bz$ zslzORA`1V)_?L(aVNs4hB7m&^-y&j$#hPS$^#2yXnh(2xK;KPdzFEX}fiiOyLi>l7 zJCh%wzbZ8aK@U0N!Zd*sFvs}RFI-BR2?{9@Vcwf==}!9v$mdUdC=Sw0qmZ>?iRiN4 zv1iIRuxZlFhy#p5T-?9KIR9V8SZZ+mvTCWK&B)LfQKn-5rLE0>p-I%pdy8GEo!6g7 zZ<7PwGo!78`;GV2--L~}1xc?~E{&dPd()$7=lddWgSTdluYA|z`}@>^P}Vhalc|%m zgH;C0?+yEw@!V*@*y4l2dC0VZ;MH@+(7=V$N@QL+qWLgBqo|Rxb3$jrm$HWx_JgeY4PH36MF*Ou-2181fc0Oa)Y&9OBDC*BXi+GB7;)CMR)R8Ui z-&jmZpe17qTL#}tI1Qp~Yz*H^UKe!Z5liRXtEU-Fspv=I+2(hLz{?kPhv4CKn2k{8 zcV}M*-3Q)tfpIA6idXCE$CQl|J9m_=4Z&W$Td`g_0C2Ov%PMts2rbx+k^MuLF=or2!P|ZK64H68Db(qbKm&Siks{=Iug*t+lQhf0jYC~wkz+$GrV-A*$HV#xcCjpAJ zboG9@`ktaXy}u@SLuj#bAkP|WF;WmiheQT+IA=BtBc{zT+N6#MeHYVeI3n&aUO1<= z|4N(^w@$SZEp%XoKHnLN4GvuZC#GsA<0^;Hf4C}Hj1^Qjfj2-IBTB~*JJp&GirN?!ibd{yIuc7o=qiiG- zD-_fi5jt2K&4!0=m^T^ofMiv;nzRByeK*mD+w$FXf>Y*Fq(sLHCfJ|R~ezG=- z(^wP=7(52c@X2I(2FpfOhQ+ut4T*0UFI2`*er3`=igN}Td>9W2riEhFahc1F#wP1C z&@@qH4Ylk`9OV|ZRNW#PhG9HFaB3u{@iBExeu^Hp&2T7!G2$>DWBxFAG^Ch{Yw9qk{S-f#! z843O*d(EmCysWBh)S`&M3@l!h(p&j4zQ2$}B)J79vb--BUCJ0r$dp3KC^mo!Pa56g zkOb+4Ivr6=>5#laW#l5#)U#4bDFH#1)f-oyu+D=ZTGpAEZzU>URSyBvMLDHc6=5>j zTB(6r921rSPFY+lDnIhIO4^^!{8m%~6Y~V8yf8tPHQM4ZWA4*{ZGPmR`HN0{O>{y< zJkpCMKXPMAs@!;Q_B1JRTGsxFj7AhQWqLwUoH7VaRcRs@Lye-IMher6F_7+J&J3|K zeE=C(O*P#lKT<+@#1kj9iT4LYQve-sCUC3N%!&D=fJxif5JYFrTtv%*{U=lFyHaBg zREE@5ot921R$--4QIQ(?Cu%Y5KT%1LLMe%t>#5QaRsUsyZavU~1bD1J7R+=-CcTh6 zu1D>ad!Z(KX()|kFLy=KL7DBSsWwpms4eUiU-*Ja`4`_q$Un&2U6J=L2&xNGl|1+% zMd9zE&^Cb^!kC*c%D`Iiw6vKAkaAL? zd2KGw?Mn7o1(1wSLr7Wvr4VvS9BnIws`GqI?f-|VL9 zH9l4;%jx_MmAh4&Jw?zaR|Ie@pq;O!7_FV7m5v}6j)*NB5X&x(L}EU1uZJ8IZz|~s z+hf^ND5>{n6h;|g&ErXJZ5b5bwufM&U~rGx)P5Y$`j>sZoksqB=M1VrC_C<^jyNR) zc7uMEmx7_Y00K&aPb?&>Ohir z)<_G_!JHZ)wt|^z+@iJK9Fzg;v%t2*QKsV(QxHl-V9=Axh)h2Jwz0`?{e! zj$;I9Nbz8>W#9Ll21yWpzW76;#eVV}kftQCXJcaCzkT=$X4mlYSImTo?SkneBv@!P zfal^kaG^m-`?v*W5r}Rf@C>&5Jg(^@fKv57p-jOeXaYqW)0z*M&N89)b zn}R@!C#`^ci#045yckG{*JF_(j+9?);0PQ`isyOxk|f2keWJZPcxdhiZ11IwFNQby zzN4z96AgW}@L)i&%Eh4qRBxIzWQvYzH<$@ZnxmL@T7sk4x3qXivCOnY$6-Vm8J=t? zl6}|0$fyLgSo9HAew^V8=08p`i8{2K0O?Bw1TVSViWRZMuII8PA#0NCud7H#sSfT_ z9p0lM3GHe?o5L5a0BxNi!DSMGBd3ziq2NJ8G$YjREj63+{?N!7+tbK1FgjL|LZfq$Dk!%qbP=)pkY9; ziNdy(GHh7Zzv63WVx7eOi&Z68x-l*uz#wM1neCS)x1)Jl6{^QmjP zk!d<2G_kKjRMfbzr=pzNDQNN0r#FO7Yr-uouF`G}yHR%SS?1#gDb_F-Iud_-3B=*?<2r_AH)!-qBa` z@wJhR3@Mz4 zK1blsAke!o8l>&`cT&Qta)ATnJ&SOmX1UsvpoM;uU%N;`ag~eVEEcGK{n;%Rvt%Fs zKZ6i?#NR;gpqE%9e*&X?Y^~qf3YesQH|^LC7Xk(n`a6(7MC$Avw5jfA;CsXPhlxA! z{BDbArZx043&+|>7Qigmm8%W<}HJA6VcwBoJf4qdcXsWRKGjzTavPe>;XFQrm6FmDeQ1M0od5 zP8S2?f^`Qyt>t~f@Q2vCzses;EQCcs*~({izggfUQTc;M|Ea|%;Ac?Wf0Qiz6a^N& zr1N>^Zh?Y@MBfHroH676EaCdT`Vy&?pc?%d4PKkMKXUG%@g0Gqae!QE0+gc&_l|;e z(v+y+p=r;3fZWe{fNVa^3_vHs@X!D0WS>}}Korrs>~w7G2LqvT0WQSu#?1F&NL_;sQ{N)?Ilio05&cpb%X#=e zgM9*&@m?+rT7@pzhAd61C}RJM&PK%cI$`YkcOTE{92|g4Sk8&kmHZgHFH67GP3_Va z6xJTc7b}u|j!pLXNPvrU!2^C-M*cYOA1R1_OVdh_NdE!K8L&KvlU0Y{nR$24+}wOWv1=A0y6WOD=9Ma%#^Gme>AZke7kY5hQA2xT42{CBQb zG0T4DG9UqWiOV6)T4ey5qZwnlEuROo8W&eqmqnE} z{Q=k&{JQF5N#)ol_YN{{XKfR>{6M-P?e+IZ;-&AiMEt981OU?Id1i^{djCNTfxr?U zs6{ExLbb-@U{gDfsiF~TEs>TNk<8ClZ{MExg#h};zr>I!n7mB-G)?zw`G6)K$8w}1tG=|Y8K>-HrjL-{q9L~nUJ5IUXY!WIxLB;*KPR6AF&6jRZK8RcAXg z%RDRU&`|3s0VEbYj<9yyYH7kDkB^+csU8=z6o-8M@M#x6E=HUd;Y|qA<%fj+W5qGW zBRTh8g@9$8GaE8+j{hx1HVGRep{T6fAV;2GUJVnI?^xi37Z8rmP>UK)gTjUv0K5qU zJUq<9c$K2^C=oP;+`n}t&%*?Bg58Ku5TQZG$Knj+Vu6kkMslvPWwrwmYm;Efn}arD&64CDY7`-dIWWX&EFoAW-@k@q->Idk zsM0FUR!m+Cc2;hm=Q%D`)Fzk2d)vBaN?9N`xMo{>EeEEH63D=Gk+z#ns&C6%1|@3_)_zl$AQM@8-+t`!nuGfbIvhvQa^H z2*Q#qZ52*nDi#w236gD0u z7b;?mTkU_2UlPQ+0p*4K>$PHraij{)8*>nx+h_o4Xh*{pzqAe;#IomCY(8P7#~aJQ zTT(s(>a5+4a?~8xf+`FUmtfPvE{qVKr9q#t+Q)T1dZco}AEzC!NK}efAv{`+D|8(0 zDOeW<6ln<{Y=9v>{6)ZXujwe63|8P@1gMUocrkG&oH%m4!Ne8hD9S=C#uJvZ7DY+Q zNXld+L;!BVPlt}miPB*$1)3rNNh94vG5;5-nZ%_|)h;b(nFI^$qh?3aaVz47+`#O} z4qTHjEGDrO4^tL@k*a(^_RkK?ro)BgT@eA~s9GNFDB6;g?K4Cgr~Pfn2ErdcDL{n3 z3@J?o2lA0#%L-<97l_H2Ul()M296VNk2F1!Gn{j!DbOX!`w5nN8JV00E)4u}t9z-X z#6Z_+No)V?kFQ-`)ubh1vdbOi@JyL~@$pfORGBwhv(yM=*Us$o(9`EkiwDpTi54^dewvu>kdjqaD4*Ebh-Yg$39V z-x^YS7iUQRs*p4>Z}gLL3Zj8VRZsOMnvO~X<{NIh~F9!z55YNSIw2s#E_?Q$70>oPvH9ED91Q3RBf9o~` zhy%+YU|3pdb2L+AwD-6H;=r>x>IyL`d4|x4KPr3fG$>J{PYW3d%Swt`dx}gFSO#xW zL10O0dd?7UT>v7PqCgKN&RJ->j6h*k+$F$hn(7@CFhmtg2|!?JwWBaJGBYUiO$1#t zu-y*TQ)ChRhfpzpwuj1d7x}a<$XD|OyT_F0A7qmIG{$KjhX17wH}H=-QI!9!&K3cv zjt8d4|NR2jm9JbX-?vVDJqJBr7$`<&L0FcJ7Aa;-3 zi3kM>yX2dZ6RGCu*H@VLFSC8UF2iFA%-M+U`G_gTf^f`%3m{^&^mJSg3u|SzZ$=y} zso{|*oG2=pk)?0=R$2Y&e|0ydK(%cK)HPQHOO}e2S2qN{JJMJ)EHs zA1Ubg7F4vhj*Zhr-{2H-Vl zNqn_LC~^vklcmI;%>xpZaJhvB4}%XG&Fh6E3k8vLy%a-5ka0{IBM)h#%>GL(a!clT zd$uq?WQuX2xH;cNT;{Pge$aZNTc7fGs(S##%KGr?U_7CK^}5o!(Bk4Mp0*@n%60`; z{QI3SQe&&6)J`lcA6BqQgF|^=B4#_7wftOPT!8}G<}-jKLZ!wEQlWOD;}gqx{b;st z5Wdp(+Nkp5Izm6Q>8(B(iSE&yR8(0|AVTrA(vbG|{9wqHaoLcE!X9ySdm-Sf!^>h}DAY>9$A zhl*Pd(01lMoQcc9phG8k901OgqwXh^=KDyzmS8s*bNWK=o?U=wUh;u;yWf)PsKi#>T_M2HKdL7TrEy9d21b*MI_ldy>ZrFS!9d)x!$*!%H0&a zR*m_gxJ_-z|B$yUF__qf;<`59L4%xf-z6tDqdy}8VP7w~HEx)}6r=_(vK*O!*SAKQ z$$kK2aeDuXsU6C0^tvn{Oa1wNJKCNR;dgwn1FTc{J%BU6o*ox6MkxhF$?eOUmOKMf zORP~%SI@Aburdjv5fL;<>7Q_IA~!r6{mKjaPIwU8{;z$OYrCNT++KO6eXIfkY(dou z{Q1-E^{@VUU(AeE{_BE|nIEtoVnG0z_wF4$N>n*Cjb{Cv$c97Ml`PVV>_|Y#+5+4R zHS_v|U5g8+>ye7|oU~%c4{wHPPrBgGetR}3^@IGYWmDqsVcRC7G%)-yF<6;baLL!3 z#rlu6N}j-t&L<#T*CbfLM>W2nwhtD{*#;Ckk(KLPVb;FY z(hx1i+_lm0#L5h^Pd0(#uX^5yNTM>%OfJN=ZWS_~L7ystDRqyXIn2SB`DNUH5Su1H zO7VmW5H;B~D?4>Ftd5^0<7)K)uzJooIjn*gxr`Wm6)j_?Ht#|lUi>8ya@zaR-JB2+ zp-V`yY(7pm?d~D}>DVvcd>0d7d(dBSARuV}cFY{u4Oi93*!Hg;q1&kg_TN|tM!$cJ zq)E$`u}x~hK&2ZEZJt8H_Xa^HsK?q&xEAhM{58vO8^>~8FWvQM7w>gVKTQD|2!rb? zDg{o;`+M%i`1j*Gp?2FBhDIteI=c4n{dkTHgW#;iK1ck-uRT+tCbTgxD3XEbyBVm* zTdmC6OXf7~>Zu($RaEdk-qmhfu6mf!utSwp#)C09a1-@hY0gJ%3_?_QW+a-?oP_h? z7a36??Ts$@p5ak2qImHdWKuZ$d_B7<6l}49Rje^9lXhO=o2uhR4C2DcY&zyjCu1zf zHuz`PIIMV51!Cnk=Ik$#%JeS$5a;3Its{XaS*X}($YckbqvQ4ln(DK&nOwZ)r60bd zP-HSCs?n_2k-|j^jz^pMMVGFgVwX;lno zk+IR4<)G`;1G9AVZTs$!*V7da8iC7Y4SE3~yyrnW_M@c;DtT;$)orHMJ?IDz@7?h) z`T=|%paKt~=0|F`U}bwx->zWXym}DpYAbZP1=@!$OCvSBVA=CbJl$CF)5X=DwC^W) z7(ELf9Kp)RCv?=i-H!Wp&9d!tN6ydpH~VhCun$#@fYGNM)r4Y;YG7zBrykZCTG?nPV?Kk7POC z2lvhR!-e&COM9QebYGsJy&OWs+uS`Bnsh|5ii+JtS z?{BnSKLmHxI#gdH41cxwo@r0migadxL%R`4qvU)tBL9sNdW`Hvz^BhZ`F7Z+eL{>ZQV?|FDtU=@#}dG2)ns36MP;cQ_}=4#hS_p1yhMV=Qg~#}Dl6OA zth`WHv@DhF?nD+_&WvSR2u-ZKns(W|4U4f3ZH$+X+Duss4@<=6Lm|=*H!z&IoIUe! znyl%+i2z+__mx0c%Q$wm_v_2yX4>39l_azNr`O|^!?8M|cU_1+*mozikCR`_AHJ`& zKQCXtIOO`YfQ%>g@A|!7wHfs3`lCn>U)JTl-yLjRItc!L2%{EnM}!KK-U9Is58^)q zxl&Z1Giav7Yosgy$3CEN9U^u)6NO|7d{G0^rwjH<5Tm3p; zQ0zD)-&`kZ+WA?z9hNK;+rB@-U%x?po?Lp|j%Mq#xO>_3D#2I?LMba5#v{S7C+Sb7 zENi;$#1 ztqE(pg75u&+o8=yMvY~^Ha`n@R=Lr-+=eYIbL|iBO0WgYd4Ka%;QwxAQC`MaEmQT~ z)N3vB#_yqPd%w`G_%emLpbI zCQm{N3Ln0z9Hb_9chD^_uTqytT;E$&C`I5XNX5wVSkq1OZ7|TG zd^>WL8_V?|D5$k%r<{wya46p{=7>c3^SA`U-OFM}qw?HnxKT@!v|Dr?N%ym_?at|A(b!2+yxBZ&Tibp;S{JL$DT*&md&ssDr=@#M7sJP|EJF51L{`?Mrjn1ll7cef) z>b2GV_TPOyXsf%&6^beazKLObUJGh;PAED;jCKkK(|L-;UUF?}_>kf^eMBeVG`jhM zN1kx(StRsDy?k}ZXR*`#C`c9 z@c!7fte=$qv14Sg3f#qI+0Z1L38VkgW zM&u3$*{RD2AXl)jNW#QDUG7aBb;Ra_mLo=P>Y&$HUt@vh>A z?F-|wYowXPYPn_{SJ0Uw?NTrsQbT2s$C}bmAQ0t<8#9Nt8gwY6H7|hWrD~ikQJUNa z`_Lh!-CA9Z+`i>a=$9N87}oRu-p^owb&lhCuhaVp{m)!1*Pm~#4ETWu1a}=n(9tF~7%Stl~ngY#dG_Z}&j-*xbbFJYe=$*1sJH3S};J9o%guj2d*!dw> zwTn>2EtHp5rud&ZK00w-SgiZmr;xNdHPcJ5T!0q8-V}WruhGRbvoyfL<%LAwDBKj zrfcp(GvNt)N^jtZ95}&UmzqQQP?uMetLRb}dS817`{#hRbjiu@0|grch2#7~_#erN z&JK<)e~oHRe1m-u3x@cY-og8W3D$fFON?+S5L%lR89hP|e@a{OO|h8D4{v!sPLr`O zwXQcS`~*VB!S;sL^K{e;R1`3(Rs02^+1-7d9OUDCwS0nBkh~p1lw)K(uI{@|V>L@q zOh^>>M8_F3cV}DO7SpZdQuf?lP{%|1_!BuoGySf+QCM`_OlZj_PB>K6dfl?Vl&a-XYoXMuEbJ!i|Y2_&>wJ`QMp^`KMUax&Zc506zYIa7# zeMow1oSuqyL+ zoAYh^10I~7-7?_>3Eh^6Bn}9U=0ah0y%-7dmIn|jocfEraaNYC8`*1<8T#rRq4G#} zIW+gF7<9i~-VYzZ8|2To+n~f9qzDWbuA3m8vRzSz6WQt2!;c?nXH-`|lwmi}&}Qe` z{e-Q4?|;P2{X*SbghZpOE2Gim`$m1Y{!J<)+Lk|tJACjl^+5ABx$ekrx?)Cyo`BqY zZe-D&aL-gDVvkiuWrRJ%7Fwk$zvzvP3-0iK(JfnX+eF=|yDpqMykajB9?yQaWS$()rbjNaZ%7*Z3+Jng?jr&YhJ{Ed zF_H>4qma5NY6;5SWqDGU`YqJ$QYHQkZ=EGQ++P%?8jekA8AfC=H$~W53$NJIwOeE7 z854fOed#R4${iP~DTw9(= zDVml7a{&HTX+$t!)B2+hxC7Uc^5Og_YaCAb7sDuyK%!Z@5KsY0DIrr{Oq z&LTw!v#f}FK=4DN&2fLS6;7B(##Yj@gqNbkZkLBJmcF)^VHK!>l6;GktWA!Farb6zGPW4 z6Bv(QBEv|Z?+ky9Dq=;6sN;tE?pjgc1!{~`vrV1KYtlV*-Ka*M7w+Sy*{b-<^hih? z&pIkz0n#wcb0kq)ZEk1tqDm`J0KH?3dDF)DdDT$QEQK%a+7^bghWB@!b{zpN*hJ4{ofnU!*6Q@!6QpVNC82^62nP9$0* zQ7!D`T;?gi$*k}k1)@~Pj2uaN>5eqFvB%E^jYPvkz=#kEZleTG8G=zK2STzUka>0Q zg@I^8Ji=Mtv40T;{|2?jivetf8tG-`E|e2fg;1-c!GpgPEQQ6IEe@loC4L$={ZdLhuhz|-WR@=6P_C`T(x)SAWuJZ6;wSlLcw6 zf-|)6AkuKkQqtw_+VjV_STxb1+wc9yuXc)VO&|9bKYe?l^LpMUf&+yH@`kIhBU#$~ z6P3t!d?}G>X@idNI`2{kLgoaQLlRvzYR(XA=Kvm-)WIz&X>c{I^u|gts^UZn%B&?ISyO;q9|uKeK!C4On}>SKYf>`h9<6`T8r;>!($* zz23^e*nHIBmchY*9Et21DJwjV7^g@U@us$EzL2#2aBtFe?{!D{Pk)en|LQ^Z%3Z*V zuNFqGbO^GNX}Nm+&Ho!YMr}`oew*&z*6{A>4yW|XqOZFSESbGZ`^wW-r!@PYFQ47C z&#C6tx?831q(c-`R!(|7XWbjCUEwd^s2x>r1m06@WSg;e;fJh?@$V=5R;GQ<2^Oqd z#WLCU#XQ5aPqaV#%pJ?-o8-Do^NaUa8kJwGd7tuNu8=evB-#qNr@m*z|{_XK+X z-IeT(yVvy5pXm*s%WsEmTYv0j;1<6WEFaWhaPz?Bn-%Ai-S|HUsj>4HoQiDNTBl%G zotpD@(~W%5n|x;L66U>l@Muoxl8eF#OaIH|WnWO(F5TSujxCw1TeGM~FhcpTSXd!K(JugexW@ZzQ;M4j1Y?teBUOd4~A~d(xBk-qX65c;la3>W`l~ zaeLa~XHz(*y}heEr~RDonf1cA+n1!J^~y}O&HOZF&hBOB_EcYc({!kM&CzX>E*Vu< zmioSZr23=kuH3=s_n+5KdEyaVeEQY3cDcGI7q`BatFC#xZ27#pXE&eEt6x}r`r7ok zy42gN*YEv#?Y8y3%I(?D*Y(@o`+V|V?Qi?PZ%!YM|0-iywdQ-p{g?UYYJT7S{x`ke zqWzet29|dbmsMW$fy<{`1k3 zCnet8P+9$b0_V?j#mcXaIIo;3oc_(%%HKO!YxmYexBdsGGPkO}vf_IwlV_ov-tx2H zsTW_#2L5GDY*HBu8nF`pjXS;_vJdcPWD;Qp4Ucm$%$aE(u{LPw#Hqj*>M7uu8>rg> z0}Vhi28L*7;9ziSUP*jNWkG6jEU0ycZa}4)x5E#h(tE&hWNw&lAl<-t3}^(TjSp_x zqigJF;||UQD!B;MD2Sr*IZy;%_ax^Rfk&dzwST#NTl_UpdkzZ&g8+*5dY}kgdtyNW zHdlYR_E4}7sO}0dBv37%0SpN6%mL7d(p;e5v1!k1kQOomT7DX6gba%1p};TzYlrw8 z*$}Lu(7Rg9x?7)tAug1afgi=BgFH}^ic2bUQo+-e=wX0qFx_0!57lig3rBLl?(=g~Jpie{~OyDYqnt(Dbfvz8Y)EJ?EZY5Md z`WQ005$OGIgb~vku=d8$4M6YcA`HlDL^c3hw-? Boolean = { - val decider = injector.instance[Decider] - _ => decider.isAvailable("frigate_pushservice_dark_traffic_percent", Some(RandomRecipient)) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/module/PushTargetUserBuilderModule.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/module/PushTargetUserBuilderModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..4833e94c9f7550601c6dad12713599862753dce4 GIT binary patch literal 37532 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%0D9~HL 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 X8tF3tE9mR0;)K`(%VR9<>$iUaKzoZd literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushConstants.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushConstants.scala deleted file mode 100644 index cd96b4934..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushConstants.scala +++ /dev/null @@ -1,126 +0,0 @@ -package com.twitter.frigate.pushservice.params - -import com.twitter.conversions.DurationOps._ -import com.twitter.frigate.user_states.thriftscala.UserState -import java.util.Locale - -object PushConstants { - - final val ServiceProdEnvironmentName = "prod" - - final val RestrictLightRankingCandidatesThreshold = 1 - - final val DownSampleLightRankingScribeCandidatesRate = 1 - - final val NewUserLookbackWindow = 1.days - - final val PushCapInactiveUserAndroid = 1 - final val PushCapInactiveUserIos = 1 - final val PushCapLightOccasionalOpenerUserAndroid = 1 - final val PushCapLightOccasionalOpenerUserIos = 1 - - final val UserStateToPushCapIos = Map( - UserState.Inactive.name -> PushCapInactiveUserIos, - UserState.LightOccasionalOpener.name -> PushCapLightOccasionalOpenerUserIos - ) - final val UserStateToPushCapAndroid = Map( - UserState.Inactive.name -> PushCapInactiveUserAndroid, - UserState.LightOccasionalOpener.name -> PushCapLightOccasionalOpenerUserAndroid - ) - - final val AcceptableTimeSinceLastNegativeResponse = 1.days - - final val DefaultLookBackForHistory = 1.hours - - final val DefaultEventMediaUrl = "" - - final val ConnectTabPushTapThrough = "i/connect_people" - - final val AddressBookUploadTapThrough = "i/flow/mr-address-book-upload" - final val InterestPickerTapThrough = "i/flow/mr-interest-picker" - final val CompleteOnboardingInterestAddressTapThrough = "i/flow/mr-interest-address" - - final val IndiaCountryCode = "IN" - final val JapanCountryCode = Locale.JAPAN.getCountry.toUpperCase - final val UKCountryCode = Locale.UK.getCountry.toUpperCase - - final val IndiaTimeZoneCode = "Asia/Kolkata" - final val JapanTimeZoneCode = "Asia/Tokyo" - final val UKTimeZoneCode = "Europe/London" - - final val countryCodeToTimeZoneMap = Map( - IndiaCountryCode -> IndiaTimeZoneCode, - JapanCountryCode -> JapanTimeZoneCode, - UKCountryCode -> UKTimeZoneCode - ) - - final val AbuseStrike_Top2Percent_Id = "AbuseStrike_Top2Percent_Id" - final val AbuseStrike_Top1Percent_Id = "AbuseStrike_Top1Percent_Id" - final val AbuseStrike_Top05Percent_Id = "AbuseStrike_Top05Percent_Id" - final val AbuseStrike_Top025Percent_Id = "AbuseStrike_Top025Percent_Id" - final val AllSpamReportsPerFav_Top1Percent_Id = "AllSpamReportsPerFav_Top1Percent_Id" - final val ReportsPerFav_Top1Percent_Id = "ReportsPerFav_Top1Percent_Id" - final val ReportsPerFav_Top2Percent_Id = "ReportsPerFav_Top2Percent_Id" - final val MediaUnderstanding_Nudity_Id = "MediaUnderstanding_Nudity_Id" - final val MediaUnderstanding_Beauty_Id = "MediaUnderstanding_Beauty_Id" - final val MediaUnderstanding_SinglePerson_Id = "MediaUnderstanding_SinglePerson_Id" - final val PornList_Id = "PornList_Id" - final val PornographyAndNsfwContent_Id = "PornographyAndNsfwContent_Id" - final val SexLife_Id = "SexLife_Id" - final val SexLifeOrSexualOrientation_Id = "SexLifeOrSexualOrientation_Id" - final val ProfanityFilter_Id = "ProfanityFilter_Id" - final val TweetSemanticCoreIdFeature = "tweet.core.tweet.semantic_core_annotations" - final val targetUserGenderFeatureName = "Target.User.Gender" - final val targetUserAgeFeatureName = "Target.User.AgeBucket" - final val targetUserPreferredLanguage = "user.language.user.preferred_contents" - final val tweetAgeInHoursFeatureName = "RecTweet.TweetyPieResult.TweetAgeInHrs" - final val authorActiveFollowerFeatureName = "RecTweetAuthor.User.ActiveFollowers" - final val favFeatureName = "tweet.core.tweet_counts.favorite_count" - final val sentFeatureName = - "tweet.magic_recs_tweet_real_time_aggregates_v2.pair.v2.magicrecs.realtime.is_sent.any_feature.Duration.Top.count" - final val authorSendCountFeatureName = - "tweet_author_aggregate.pair.any_label.any_feature.28.days.count" - final val authorReportCountFeatureName = - "tweet_author_aggregate.pair.label.reportTweetDone.any_feature.28.days.count" - final val authorDislikeCountFeatureName = - "tweet_author_aggregate.pair.label.ntab.isDisliked.any_feature.28.days.count" - final val TweetLikesFeatureName = "tweet.core.tweet_counts.favorite_count" - final val TweetRepliesFeatureName = "tweet.core.tweet_counts.reply_count" - - final val EnableCopyFeaturesForIbis2ModelValues = "has_copy_features" - - final val EmojiFeatureNameForIbis2ModelValues = "emoji" - - final val TargetFeatureNameForIbis2ModelValues = "target" - - final val CopyBodyExpIbisModelValues = "enable_body_exp" - - final val TweetMediaEmbeddingBQKeyIds = Seq( - 230, 110, 231, 111, 232, 233, 112, 113, 234, 235, 114, 236, 115, 237, 116, 117, 238, 118, 239, - 119, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 240, 120, 241, 121, 242, 0, 1, 122, 243, 244, 123, - 2, 124, 245, 3, 4, 246, 125, 5, 126, 247, 127, 248, 6, 128, 249, 7, 8, 129, 9, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 250, 130, 251, 252, 131, 132, 253, 133, 254, 134, 255, 135, 136, 137, - 138, 139, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 100, 221, 101, 222, 223, 102, 224, 103, 104, 225, 105, 226, - 227, 106, 107, 228, 108, 229, 109 - ) - - final val SportsEventDomainId = 6L - - final val OoncQualityCombinedScore = "OoncQualityCombinedScore" -} - -object PushQPSLimitConstants { - - final val PerspectiveStoreQPS = 100000 - - final val IbisOrNTabQPSForRFPH = 100000 - - final val SocialGraphServiceBatchSize = 100000 -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushEnums.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushEnums.docx new file mode 100644 index 0000000000000000000000000000000000000000..8135a9f9e8da44c8324bbb6fdde0c0343da1369f GIT binary patch literal 37681 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 I+&KXLA6;~2pa1{> literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushFeatureSwitchParams.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushFeatureSwitchParams.scala deleted file mode 100644 index 262b3a8b7..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushFeatureSwitchParams.scala +++ /dev/null @@ -1,5043 +0,0 @@ -package com.twitter.frigate.pushservice.params - -import com.twitter.conversions.DurationOps._ -import com.twitter.frigate.pushservice.params.InlineActionsEnum._ -import com.twitter.frigate.pushservice.params.HighQualityCandidateGroupEnum._ -import com.twitter.timelines.configapi.DurationConversion -import com.twitter.timelines.configapi.FSBoundedParam -import com.twitter.timelines.configapi.FSEnumParam -import com.twitter.timelines.configapi.FSEnumSeqParam -import com.twitter.timelines.configapi.FSParam -import com.twitter.timelines.configapi.HasDurationConversion -import com.twitter.util.Duration - -object PushFeatureSwitchParams { - - /** - * List of CRTs to uprank. Last CRT in sequence ends up on top of list - */ - object ListOfCrtsToUpRank - extends FSParam[Seq[String]]("rerank_candidates_crt_to_top", default = Seq.empty[String]) - - object ListOfCrtsForOpenApp - extends FSParam[Seq[String]]( - "open_app_allowed_crts", - default = Seq( - "f1firstdegreetweet", - "f1firstdegreephoto", - "f1firstdegreevideo", - "geopoptweet", - "frstweet", - "trendtweet", - "hermituser", - "triangularloopuser" - )) - - /** - * List of CRTs to downrank. Last CRT in sequence ends up on bottom of list - */ - object ListOfCrtsToDownRank - extends FSParam[Seq[String]]( - name = "rerank_candidates_crt_to_downrank", - default = Seq.empty[String]) - - /** - * Param to enable VF filtering in Tweetypie (vs using VisibilityLibrary) - */ - object EnableVFInTweetypie - extends FSParam[Boolean]( - name = "visibility_filtering_enable_vf_in_tweetypie", - default = true - ) - - /** - * Number of max earlybird candidates - */ - object NumberOfMaxEarlybirdInNetworkCandidatesParam - extends FSBoundedParam( - name = "frigate_push_max_earlybird_in_network_candidates", - default = 100, - min = 0, - max = 800 - ) - - /** - * Number of max UserTweetEntityGraph candidates to query - */ - object NumberOfMaxUTEGCandidatesQueriedParam - extends FSBoundedParam( - name = "frigate_push_max_uteg_candidates_queried", - default = 30, - min = 0, - max = 300 - ) - - /** - * Param to control the max tweet age for users - */ - object MaxTweetAgeParam - extends FSBoundedParam[Duration]( - name = "tweet_age_max_hours", - default = 24.hours, - min = 1.hours, - max = 72.hours - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the max tweet age for modeling-based candidates - */ - object ModelingBasedCandidateMaxTweetAgeParam - extends FSBoundedParam[Duration]( - name = "tweet_age_candidate_generation_model_max_hours", - default = 24.hours, - min = 1.hours, - max = 72.hours - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the max tweet age for simcluster-based candidates - */ - object GeoPopTweetMaxAgeInHours - extends FSBoundedParam[Duration]( - name = "tweet_age_geo_pop_max_hours", - default = 24.hours, - min = 1.hours, - max = 120.hours - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the max tweet age for simcluster-based candidates - */ - object SimclusterBasedCandidateMaxTweetAgeParam - extends FSBoundedParam[Duration]( - name = "tweet_age_simcluster_max_hours", - default = 24.hours, - min = 24.hours, - max = 48.hours - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the max tweet age for Detopic-based candidates - */ - object DetopicBasedCandidateMaxTweetAgeParam - extends FSBoundedParam[Duration]( - name = "tweet_age_detopic_max_hours", - default = 24.hours, - min = 24.hours, - max = 48.hours - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the max tweet age for F1 candidates - */ - object F1CandidateMaxTweetAgeParam - extends FSBoundedParam[Duration]( - name = "tweet_age_f1_max_hours", - default = 24.hours, - min = 1.hours, - max = 96.hours - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the max tweet age for Explore Video Tweet - */ - object ExploreVideoTweetAgeParam - extends FSBoundedParam[Duration]( - name = "explore_video_tweets_age_max_hours", - default = 48.hours, - min = 1.hours, - max = 336.hours // Two weeks - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to no send for new user playbook push if user login for past hours - */ - object NewUserPlaybookAllowedLastLoginHours - extends FSBoundedParam[Duration]( - name = "new_user_playbook_allowed_last_login_hours", - default = 0.hours, - min = 0.hours, - max = 72.hours - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * The batch size of RefreshForPushHandler's Take step - */ - object NumberOfMaxCandidatesToBatchInRFPHTakeStep - extends FSBoundedParam( - name = "frigate_push_rfph_batch_take_max_size", - default = 1, - min = 1, - max = 10 - ) - - /** - * The maximum number of candidates to batch for Importance Sampling - */ - object NumberOfMaxCandidatesToBatchForImportanceSampling - extends FSBoundedParam( - name = "frigate_push_rfph_max_candidates_to_batch_for_importance_sampling", - default = 65, - min = 1, - max = 500 - ) - - /** - * Maximum number of regular MR push in 24.hours/daytime/nighttime - */ - object MaxMrPushSends24HoursParam - extends FSBoundedParam( - name = "pushcap_max_sends_24hours", - default = 5, - min = 0, - max = 12 - ) - - /** - * Maximum number of regular MR ntab only channel in 24.hours/daytime/nighttime - */ - object MaxMrNtabOnlySends24HoursParamV3 - extends FSBoundedParam( - name = "pushcap_max_sends_24hours_ntabonly_v3", - default = 5, - min = 0, - max = 12 - ) - - /** - * Maximum number of regular MR ntab only in 24.hours/daytime/nighttime - */ - object MaxMrPushSends24HoursNtabOnlyUsersParam - extends FSBoundedParam( - name = "pushcap_max_sends_24hours_ntab_only", - default = 5, - min = 0, - max = 10 - ) - - /** - * Customized PushCap offset (e.g., to the predicted value) - */ - object CustomizedPushCapOffset - extends FSBoundedParam[Int]( - name = "pushcap_customized_offset", - default = 0, - min = -2, - max = 4 - ) - - /** - * Param to enable restricting minimum pushcap assigned with ML models - * */ - object EnableRestrictedMinModelPushcap - extends FSParam[Boolean]( - name = "pushcap_restricted_model_min_enable", - default = false - ) - - /** - * Param to specify the minimum pushcap allowed to be assigned with ML models - * */ - object RestrictedMinModelPushcap - extends FSBoundedParam[Int]( - name = "pushcap_restricted_model_min_value", - default = 1, - min = 0, - max = 9 - ) - - object EnablePushcapRefactor - extends FSParam[Boolean]( - name = "pushcap_enable_refactor", - default = false - ) - - /** - * Enables the restrict step in pushservice for a given user - * - * Setting this to false may cause a large number of candidates to be passed on to filtering/take - * step in RefreshForPushHandler, increasing the service latency significantly - */ - object EnableRestrictStep extends FSParam[Boolean]("frigate_push_rfph_restrict_step_enable", true) - - /** - * The number of candidates that are able to pass through the restrict step. - */ - object RestrictStepSize - extends FSBoundedParam( - name = "frigate_push_rfph_restrict_step_size", - default = 65, - min = 65, - max = 200 - ) - - /** - * Number of max crMixer candidates to send. - */ - object NumberOfMaxCrMixerCandidatesParam - extends FSBoundedParam( - name = "cr_mixer_migration_max_num_of_candidates_to_return", - default = 400, - min = 0, - max = 2000 - ) - - /** - * Duration between two MR pushes - */ - object MinDurationSincePushParam - extends FSBoundedParam[Duration]( - name = "pushcap_min_duration_since_push_hours", - default = 4.hours, - min = 0.hours, - max = 72.hours - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Each Phase duration to gradually ramp up MagicRecs for new users - */ - object GraduallyRampUpPhaseDurationDays - extends FSBoundedParam[Duration]( - name = "pushcap_gradually_ramp_up_phase_duration_days", - default = 3.days, - min = 2.days, - max = 7.days - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Param to specify interval for target pushcap fatigue - */ - object TargetPushCapFatigueIntervalHours - extends FSBoundedParam[Duration]( - name = "pushcap_fatigue_interval_hours", - default = 24.hours, - min = 1.hour, - max = 240.hours - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to specify interval for target ntabOnly fatigue - */ - object TargetNtabOnlyCapFatigueIntervalHours - extends FSBoundedParam[Duration]( - name = "pushcap_ntabonly_fatigue_interval_hours", - default = 24.hours, - min = 1.hour, - max = 240.hours - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to use completely explicit push cap instead of LTV/modeling-based - */ - object EnableExplicitPushCap - extends FSParam[Boolean]( - name = "pushcap_explicit_enable", - default = false - ) - - /** - * Param to control explicit push cap (non-LTV) - */ - object ExplicitPushCap - extends FSBoundedParam[Int]( - name = "pushcap_explicit_value", - default = 1, - min = 0, - max = 20 - ) - - /** - * Parameters for percentile thresholds of OpenOrNtabClick model in MR filtering model refreshing DDG - */ - object PercentileThresholdCohort1 - extends FSBoundedParam[Double]( - name = "frigate_push_modeling_percentile_threshold_cohort1", - default = 0.65, - min = 0.0, - max = 1.0 - ) - - object PercentileThresholdCohort2 - extends FSBoundedParam[Double]( - name = "frigate_push_modeling_percentile_threshold_cohort2", - default = 0.03, - min = 0.0, - max = 1.0 - ) - object PercentileThresholdCohort3 - extends FSBoundedParam[Double]( - name = "frigate_push_modeling_percentile_threshold_cohort3", - default = 0.03, - min = 0.0, - max = 1.0 - ) - object PercentileThresholdCohort4 - extends FSBoundedParam[Double]( - name = "frigate_push_modeling_percentile_threshold_cohort4", - default = 0.06, - min = 0.0, - max = 1.0 - ) - object PercentileThresholdCohort5 - extends FSBoundedParam[Double]( - name = "frigate_push_modeling_percentile_threshold_cohort5", - default = 0.06, - min = 0.0, - max = 1.0 - ) - object PercentileThresholdCohort6 - extends FSBoundedParam[Double]( - name = "frigate_push_modeling_percentile_threshold_cohort6", - default = 0.8, - min = 0.0, - max = 1.0 - ) - - /** - * Parameters for percentile threshold list of OpenOrNtabCLick model in MR percentile grid search experiments - */ - object MrPercentileGridSearchThresholdsCohort1 - extends FSParam[Seq[Double]]( - name = "frigate_push_modeling_percentile_grid_search_thresholds_cohort1", - default = Seq(0.8, 0.75, 0.65, 0.55, 0.45, 0.35, 0.25) - ) - object MrPercentileGridSearchThresholdsCohort2 - extends FSParam[Seq[Double]]( - name = "frigate_push_modeling_percentile_grid_search_thresholds_cohort2", - default = Seq(0.15, 0.12, 0.1, 0.08, 0.06, 0.045, 0.03) - ) - object MrPercentileGridSearchThresholdsCohort3 - extends FSParam[Seq[Double]]( - name = "frigate_push_modeling_percentile_grid_search_thresholds_cohort3", - default = Seq(0.15, 0.12, 0.1, 0.08, 0.06, 0.045, 0.03) - ) - object MrPercentileGridSearchThresholdsCohort4 - extends FSParam[Seq[Double]]( - name = "frigate_push_modeling_percentile_grid_search_thresholds_cohort4", - default = Seq(0.15, 0.12, 0.1, 0.08, 0.06, 0.045, 0.03) - ) - object MrPercentileGridSearchThresholdsCohort5 - extends FSParam[Seq[Double]]( - name = "frigate_push_modeling_percentile_grid_search_thresholds_cohort5", - default = Seq(0.3, 0.2, 0.15, 0.1, 0.08, 0.06, 0.05) - ) - object MrPercentileGridSearchThresholdsCohort6 - extends FSParam[Seq[Double]]( - name = "frigate_push_modeling_percentile_grid_search_thresholds_cohort6", - default = Seq(0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2) - ) - - /** - * Parameters for threshold list of OpenOrNtabClick model in MF grid search experiments - */ - object MfGridSearchThresholdsCohort1 - extends FSParam[Seq[Double]]( - name = "frigate_push_modeling_mf_grid_search_thresholds_cohort1", - default = Seq(0.030, 0.040, 0.050, 0.062, 0.070, 0.080, 0.090) // default: 0.062 - ) - object MfGridSearchThresholdsCohort2 - extends FSParam[Seq[Double]]( - name = "frigate_push_modeling_mf_grid_search_thresholds_cohort2", - default = Seq(0.005, 0.010, 0.015, 0.020, 0.030, 0.040, 0.050) // default: 0.020 - ) - object MfGridSearchThresholdsCohort3 - extends FSParam[Seq[Double]]( - name = "frigate_push_modeling_mf_grid_search_thresholds_cohort3", - default = Seq(0.010, 0.015, 0.020, 0.025, 0.035, 0.045, 0.055) // default: 0.025 - ) - object MfGridSearchThresholdsCohort4 - extends FSParam[Seq[Double]]( - name = "frigate_push_modeling_mf_grid_search_thresholds_cohort4", - default = Seq(0.015, 0.020, 0.025, 0.030, 0.040, 0.050, 0.060) // default: 0.030 - ) - object MfGridSearchThresholdsCohort5 - extends FSParam[Seq[Double]]( - name = "frigate_push_modeling_mf_grid_search_thresholds_cohort5", - default = Seq(0.035, 0.040, 0.045, 0.050, 0.060, 0.070, 0.080) // default: 0.050 - ) - object MfGridSearchThresholdsCohort6 - extends FSParam[Seq[Double]]( - name = "frigate_push_modeling_mf_grid_search_thresholds_cohort6", - default = Seq(0.040, 0.045, 0.050, 0.055, 0.065, 0.075, 0.085) // default: 0.055 - ) - - /** - * Param to specify which global optout models to use to first predict the global scores for users - */ - object GlobalOptoutModelParam - extends FSParam[Seq[OptoutModel.ModelNameType]]( - name = "optout_model_global_model_ids", - default = Seq.empty[OptoutModel.ModelNameType] - ) - - /** - * Param to specify which optout model to use according to the experiment bucket - */ - object BucketOptoutModelParam - extends FSParam[OptoutModel.ModelNameType]( - name = "optout_model_bucket_model_id", - default = OptoutModel.D0_has_realtime_features - ) - - /* - * Param to enable candidate generation model - * */ - object EnableCandidateGenerationModelParam - extends FSParam[Boolean]( - name = "candidate_generation_model_enable", - default = false - ) - - object EnableOverrideForSportsCandidates - extends FSParam[Boolean](name = "magicfanout_sports_event_enable_override", default = true) - - object EnableEventIdBasedOverrideForSportsCandidates - extends FSParam[Boolean]( - name = "magicfanout_sports_event_enable_event_id_based_override", - default = true) - - /** - * Param to specify the threshold to determine if a user’s optout score is high enough to enter the experiment. - */ - object GlobalOptoutThresholdParam - extends FSParam[Seq[Double]]( - name = "optout_model_global_thresholds", - default = Seq(1.0, 1.0) - ) - - /** - * Param to specify the threshold to determine if a user’s optout score is high enough to be assigned - * with a reduced pushcap based on the bucket membership. - */ - object BucketOptoutThresholdParam - extends FSBoundedParam[Double]( - name = "optout_model_bucket_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Param to specify the reduced pushcap value if the optout probability predicted by the bucket - * optout model is higher than the specified bucket optout threshold. - */ - object OptoutExptPushCapParam - extends FSBoundedParam[Int]( - name = "optout_model_expt_push_cap", - default = 10, - min = 0, - max = 10 - ) - - /** - * Param to specify the thresholds to determine which push cap slot the user should be assigned to - * according to the optout score. For example,the slot thresholds are [0.1, 0.2, ..., 1.0], the user - * is assigned to the second slot if the optout score is in (0.1, 0.2]. - */ - object BucketOptoutSlotThresholdParam - extends FSParam[Seq[Double]]( - name = "optout_model_bucket_slot_thresholds", - default = Seq.empty[Double] - ) - - /** - * Param to specify the adjusted push cap of each slot. For example, if the slot push caps are [1, 2, ..., 10] - * and the user is assigned to the 2nd slot according to the optout score, the push cap of the user - * will be adjusted to 2. - */ - object BucketOptoutSlotPushcapParam - extends FSParam[Seq[Int]]( - name = "optout_model_bucket_slot_pushcaps", - default = Seq.empty[Int] - ) - - /** - * Param to specify if the optout score based push cap adjustment is enabled - */ - object EnableOptoutAdjustedPushcap - extends FSParam[Boolean]( - "optout_model_enable_optout_adjusted_pushcap", - false - ) - - /** - * Param to specify which weighted open or ntab click model to use - */ - object WeightedOpenOrNtabClickRankingModelParam - extends FSParam[WeightedOpenOrNtabClickModel.ModelNameType]( - name = "frigate_push_modeling_oonc_ranking_model_id", - default = WeightedOpenOrNtabClickModel.Periodically_Refreshed_Prod_Model - ) - - /** - * Param to disable heavy ranker - */ - object DisableHeavyRankingModelFSParam - extends FSParam[Boolean]( - name = "frigate_push_modeling_disable_heavy_ranking", - default = false - ) - - /** - * Param to specify which weighted open or ntab click model to use for Android modelling experiment - */ - object WeightedOpenOrNtabClickRankingModelForAndroidParam - extends FSParam[WeightedOpenOrNtabClickModel.ModelNameType]( - name = "frigate_push_modeling_oonc_ranking_model_for_android_id", - default = WeightedOpenOrNtabClickModel.Periodically_Refreshed_Prod_Model - ) - - /** - * Param to specify which weighted open or ntab click model to use for FILTERING - */ - object WeightedOpenOrNtabClickFilteringModelParam - extends FSParam[WeightedOpenOrNtabClickModel.ModelNameType]( - name = "frigate_push_modeling_oonc_filtering_model_id", - default = WeightedOpenOrNtabClickModel.Periodically_Refreshed_Prod_Model - ) - - /** - * Param to specify which quality predicate to use for ML filtering - */ - object QualityPredicateIdParam - extends FSEnumParam[QualityPredicateEnum.type]( - name = "frigate_push_modeling_quality_predicate_id", - default = QualityPredicateEnum.WeightedOpenOrNtabClick, - enum = QualityPredicateEnum - ) - - /** - * Param to control threshold for any quality predicates using explicit thresholds - */ - object QualityPredicateExplicitThresholdParam - extends FSBoundedParam[Double]( - name = "frigate_push_modeling_quality_predicate_explicit_threshold", - default = 0.1, - min = 0, - max = 1) - - /** - * MagicFanout relaxed eventID fatigue interval (when we want to enable multiple updates for the same event) - */ - object MagicFanoutRelaxedEventIdFatigueIntervalInHours - extends FSBoundedParam[Int]( - name = "frigate_push_magicfanout_relaxed_event_id_fatigue_interval_in_hours", - default = 24, - min = 0, - max = 720 - ) - - /** - * MagicFanout DenyListed Countries - */ - object MagicFanoutDenyListedCountries - extends FSParam[Seq[String]]( - "frigate_push_magicfanout_denylisted_countries", - Seq.empty[String]) - - object MagicFanoutSportsEventDenyListedCountries - extends FSParam[Seq[String]]( - "magicfanout_sports_event_denylisted_countries", - Seq.empty[String]) - - /** - * MagicFanout maximum erg rank for a given push event for non heavy users - */ - object MagicFanoutRankErgThresholdNonHeavy - extends FSBoundedParam[Int]( - name = "frigate_push_magicfanout_erg_rank_threshold_non_heavy", - default = 25, - min = 1, - max = 50 - ) - - /** - * MagicFanout maximum erg rank for a given push event for heavy users - */ - object MagicFanoutRankErgThresholdHeavy - extends FSBoundedParam[Int]( - name = "frigate_push_magicfanout_erg_rank_threshold_heavy", - default = 20, - min = 1, - max = 50 - ) - - object EnablePushMixerReplacingAllSources - extends FSParam[Boolean]( - name = "push_mixer_enable_replacing_all_sources", - default = false - ) - - object EnablePushMixerReplacingAllSourcesWithControl - extends FSParam[Boolean]( - name = "push_mixer_enable_replacing_all_sources_with_control", - default = false - ) - - object EnablePushMixerReplacingAllSourcesWithExtra - extends FSParam[Boolean]( - name = "push_mixer_enable_replacing_all_sources_with_extra", - default = false - ) - - object EnablePushMixerSource - extends FSParam[Boolean]( - name = "push_mixer_enable_source", - default = false - ) - - object PushMixerMaxResults - extends FSBoundedParam[Int]( - name = "push_mixer_max_results", - default = 10, - min = 1, - max = 5000 - ) - - /** - * Enable tweets from trends that have been annotated by curators - */ - object EnableCuratedTrendTweets - extends FSParam[Boolean](name = "trend_tweet_curated_trends_enable", default = false) - - /** - * Enable tweets from trends that haven't been annotated by curators - */ - object EnableNonCuratedTrendTweets - extends FSParam[Boolean](name = "trend_tweet_non_curated_trends_enable", default = false) - - /** - * Maximum trend tweet notifications in fixed duration - */ - object MaxTrendTweetNotificationsInDuration - extends FSBoundedParam[Int]( - name = "trend_tweet_max_notifications_in_duration", - min = 0, - default = 0, - max = 20) - - /** - * Duration in days over which trend tweet notifications fatigue is applied - */ - object TrendTweetNotificationsFatigueDuration - extends FSBoundedParam[Duration]( - name = "trend_tweet_notifications_fatigue_in_days", - default = 1.day, - min = Duration.Bottom, - max = Duration.Top - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Maximum number of trends candidates to query from event-recos endpoint - */ - object MaxRecommendedTrendsToQuery - extends FSBoundedParam[Int]( - name = "trend_tweet_max_trends_to_query", - min = 0, - default = 0, - max = 100) - - /** - * Fix missing event-associated interests in MagicFanoutNoOptoutInterestsPredicate - */ - object MagicFanoutFixNoOptoutInterestsBugParam - extends FSParam[Boolean]("frigate_push_magicfanout_fix_no_optout_interests", default = true) - - object EnableSimclusterOfflineAggFeatureForExpt - extends FSParam[Boolean]("frigate_enable_simcluster_offline_agg_feature", false) - - /** - * Param to enable removal of UTT domain for - */ - object ApplyMagicFanoutBroadEntityInterestRankThresholdPredicate - extends FSParam[Boolean]( - "frigate_push_magicfanout_broad_entity_interest_rank_threshold_predicate", - false - ) - - object HydrateEventReasonsFeatures - extends FSParam[Boolean]( - name = "frigate_push_magicfanout_hydrate_event_reasons_features", - false - ) - - /** - * Param to enable online MR history features - */ - object EnableHydratingOnlineMRHistoryFeatures - extends FSParam[Boolean]( - name = "feature_hydration_online_mr_history", - default = false - ) - - /** - * Param to enable bold title on favorite and retweet push copy for Android in DDG 10220 - */ - object MRBoldTitleFavoriteAndRetweetParam - extends FSEnumParam[MRBoldTitleFavoriteAndRetweetExperimentEnum.type]( - name = "frigate_push_bold_title_favorite_and_retweet_id", - default = MRBoldTitleFavoriteAndRetweetExperimentEnum.ShortTitle, - enum = MRBoldTitleFavoriteAndRetweetExperimentEnum - ) - - /** - * Param to enable high priority push - */ - object EnableHighPriorityPush - extends FSParam[Boolean]("frigate_push_magicfanout_enable_high_priority_push", false) - - /** - * Param to redirect sports crt event to a custom url - */ - object EnableSearchURLRedirectForSportsFanout - extends FSParam[Boolean]("magicfanout_sports_event_enable_search_url_redirect", false) - - /** - * Param to enable score fanout notification for sports - */ - object EnableScoreFanoutNotification - extends FSParam[Boolean]("magicfanout_sports_event_enable_score_fanout", false) - - /** - * Param to add custom search url for sports crt event - */ - object SearchURLRedirectForSportsFanout - extends FSParam[String]( - name = "magicfanout_sports_event_search_url_redirect", - default = "https://twitter.com/explore/tabs/ipl", - ) - - /** - * Param to enable high priority sports push - */ - object EnableHighPrioritySportsPush - extends FSParam[Boolean]("magicfanout_sports_event_enable_high_priority_push", false) - - /** - * Param to control rank threshold for magicfanout user follow - */ - object MagicFanoutRealgraphRankThreshold - extends FSBoundedParam[Int]( - name = "magicfanout_realgraph_threshold", - default = 500, - max = 500, - min = 100 - ) - - /** - * Topic score threshold for topic proof tweet candidates topic annotations - * */ - object TopicProofTweetCandidatesTopicScoreThreshold - extends FSBoundedParam[Double]( - name = "topics_as_social_proof_topic_score_threshold", - default = 0.0, - min = 0.0, - max = 100.0 - ) - - /** - * Enable Topic Proof Tweet Recs - */ - object EnableTopicProofTweetRecs - extends FSParam[Boolean](name = "topics_as_social_proof_enable", default = true) - - /** - * Enable health filters for topic tweet notifications - */ - object EnableHealthFiltersForTopicProofTweet - extends FSParam[Boolean]( - name = "topics_as_social_proof_enable_health_filters", - default = false) - - /** - * Disable health filters for CrMixer candidates - */ - object DisableHealthFiltersForCrMixerCandidates - extends FSParam[Boolean]( - name = "health_and_quality_filter_disable_for_crmixer_candidates", - default = false) - - object EnableMagicFanoutNewsForYouNtabCopy - extends FSParam[Boolean](name = "send_handler_enable_nfy_ntab_copy", default = false) - - /** - * Param to enable semi-personalized high quality candidates in pushservice - * */ - object HighQualityCandidatesEnableCandidateSource - extends FSParam[Boolean]( - name = "high_quality_candidates_enable_candidate_source", - default = false - ) - - /** - * Param to decide semi-personalized high quality candidates - * */ - object HighQualityCandidatesEnableGroups - extends FSEnumSeqParam[HighQualityCandidateGroupEnum.type]( - name = "high_quality_candidates_enable_groups_ids", - default = Seq(AgeBucket, Language), - enum = HighQualityCandidateGroupEnum - ) - - /** - * Param to decide semi-personalized high quality candidates - * */ - object HighQualityCandidatesNumberOfCandidates - extends FSBoundedParam[Int]( - name = "high_quality_candidates_number_of_candidates", - default = 0, - min = 0, - max = Int.MaxValue - ) - - /** - * Param to enable small domain falling back to bigger domains for high quality candidates in pushservice - * */ - object HighQualityCandidatesEnableFallback - extends FSParam[Boolean]( - name = "high_quality_candidates_enable_fallback", - default = false - ) - - /** - * Param to decide whether to fallback to bigger domain for high quality candidates - * */ - object HighQualityCandidatesMinNumOfCandidatesToFallback - extends FSBoundedParam[Int]( - name = "high_quality_candidates_min_num_of_candidates_to_fallback", - default = 50, - min = 0, - max = Int.MaxValue - ) - - /** - * Param to specific source ids for high quality candidates - * */ - object HighQualityCandidatesFallbackSourceIds - extends FSParam[Seq[String]]( - name = "high_quality_candidates_fallback_source_ids", - default = Seq("HQ_C_COUNT_PASS_QUALITY_SCORES")) - - /** - * Param to decide groups for semi-personalized high quality candidates - * */ - object HighQualityCandidatesFallbackEnabledGroups - extends FSEnumSeqParam[HighQualityCandidateGroupEnum.type]( - name = "high_quality_candidates_fallback_enabled_groups_ids", - default = Seq(Country), - enum = HighQualityCandidateGroupEnum - ) - - /** - * Param to control what heavy ranker model to use for scribing scores - */ - object HighQualityCandidatesHeavyRankingModel - extends FSParam[String]( - name = "high_quality_candidates_heavy_ranking_model", - default = "Periodically_Refreshed_Prod_Model_V11" - ) - - /** - * Param to control what non personalized quality "Cnn" model to use for scribing scores - */ - object HighQualityCandidatesNonPersonalizedQualityCnnModel - extends FSParam[String]( - name = "high_quality_candidates_non_personalized_quality_cnn_model", - default = "Q1_2023_Mr_Tf_Quality_Model_cnn" - ) - - /** - * Param to control what nsfw health model to use for scribing scores - */ - object HighQualityCandidatesBqmlNsfwModel - extends FSParam[String]( - name = "high_quality_candidates_bqml_nsfw_model", - default = "Q2_2022_Mr_Bqml_Health_Model_NsfwV0" - ) - - /** - * Param to control what reportodel to use for scribing scores - */ - object HighQualityCandidatesBqmlReportModel - extends FSParam[String]( - name = "high_quality_candidates_bqml_report_model", - default = "Q3_2022_15266_Mr_Bqml_Non_Personalized_Report_Model_with_Media_Embeddings" - ) - - /** - * Param to specify the threshold to determine if a tweet contains nudity media - */ - object TweetMediaSensitiveCategoryThresholdParam - extends FSBoundedParam[Double]( - name = "tweet_media_sensitive_category_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Param to boost candidates from subscription creators - */ - object BoostCandidatesFromSubscriptionCreators - extends FSParam[Boolean]( - name = "subscription_enable_boost_candidates_from_active_creators", - default = false - ) - - /** - * Param to soft rank candidates from subscription creators - */ - object SoftRankCandidatesFromSubscriptionCreators - extends FSParam[Boolean]( - name = "subscription_enable_soft_rank_candidates_from_active_creators", - default = false - ) - - /** - * Param as factor to control how much we want to boost creator tweets - */ - object SoftRankFactorForSubscriptionCreators - extends FSBoundedParam[Double]( - name = "subscription_soft_rank_factor_for_boost", - default = 1.0, - min = 0.0, - max = Double.MaxValue - ) - - /** - * Param to enable new OON copy for Push Notifications - */ - object EnableNewMROONCopyForPush - extends FSParam[Boolean]( - name = "mr_copy_enable_new_mr_oon_copy_push", - default = true - ) - - /** - * Param to enable generated inline actions on OON Notifications - */ - object EnableOONGeneratedInlineActions - extends FSParam[Boolean]( - name = "mr_inline_enable_oon_generated_actions", - default = false - ) - - /** - * Param to control dynamic inline actions for Out-of-Network copies - */ - object OONTweetDynamicInlineActionsList - extends FSEnumSeqParam[InlineActionsEnum.type]( - name = "mr_inline_oon_tweet_dynamic_action_ids", - default = Seq(Follow, Retweet, Favorite), - enum = InlineActionsEnum - ) - - object HighOONCTweetFormat - extends FSEnumParam[IbisTemplateFormatEnum.type]( - name = "mr_copy_high_oonc_format_id", - default = IbisTemplateFormatEnum.template1, - enum = IbisTemplateFormatEnum - ) - - object LowOONCTweetFormat - extends FSEnumParam[IbisTemplateFormatEnum.type]( - name = "mr_copy_low_oonc_format_id", - default = IbisTemplateFormatEnum.template1, - enum = IbisTemplateFormatEnum - ) - - /** - * Param to enable dynamic inline actions based on FSParams for Tweet copies (not OON) - */ - object EnableTweetDynamicInlineActions - extends FSParam[Boolean]( - name = "mr_inline_enable_tweet_dynamic_actions", - default = false - ) - - /** - * Param to control dynamic inline actions for Tweet copies (not OON) - */ - object TweetDynamicInlineActionsList - extends FSEnumSeqParam[InlineActionsEnum.type]( - name = "mr_inline_tweet_dynamic_action_ids", - default = Seq(Reply, Retweet, Favorite), - enum = InlineActionsEnum - ) - - object UseInlineActionsV1 - extends FSParam[Boolean]( - name = "mr_inline_use_inline_action_v1", - default = true - ) - - object UseInlineActionsV2 - extends FSParam[Boolean]( - name = "mr_inline_use_inline_action_v2", - default = false - ) - - object EnableInlineFeedbackOnPush - extends FSParam[Boolean]( - name = "mr_inline_enable_inline_feedback_on_push", - default = false - ) - - object InlineFeedbackSubstitutePosition - extends FSBoundedParam[Int]( - name = "mr_inline_feedback_substitute_position", - min = 0, - max = 2, - default = 2, // default to substitute or append last inline action - ) - - /** - * Param to control dynamic inline actions for web notifications - */ - object EnableDynamicInlineActionsForDesktopWeb - extends FSParam[Boolean]( - name = "mr_inline_enable_dynamic_actions_for_desktop_web", - default = false - ) - - object EnableDynamicInlineActionsForMobileWeb - extends FSParam[Boolean]( - name = "mr_inline_enable_dynamic_actions_for_mobile_web", - default = false - ) - - /** - * Param to define dynamic inline action types for web notifications (both desktop web + mobile web) - */ - object TweetDynamicInlineActionsListForWeb - extends FSEnumSeqParam[InlineActionsEnum.type]( - name = "mr_inline_tweet_dynamic_action_for_web_ids", - default = Seq(Retweet, Favorite), - enum = InlineActionsEnum - ) - - /** - * Param to enable MR Override Notifications for Android - */ - object EnableOverrideNotificationsForAndroid - extends FSParam[Boolean]( - name = "mr_override_enable_override_notifications_for_android", - default = false - ) - - /** - * Param to enable MR Override Notifications for iOS - */ - object EnableOverrideNotificationsForIos - extends FSParam[Boolean]( - name = "mr_override_enable_override_notifications_for_ios", - default = false - ) - - /** - * Param to enable gradually ramp up notification - */ - object EnableGraduallyRampUpNotification - extends FSParam[Boolean]( - name = "pushcap_gradually_ramp_up_enable", - default = false - ) - - /** - * Param to control the minInrerval for fatigue between consecutive MFNFY pushes - */ - object MFMinIntervalFatigue - extends FSBoundedParam[Duration]( - name = "frigate_push_magicfanout_fatigue_min_interval_consecutive_pushes_minutes", - default = 240.minutes, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromMinutes - } - - /** - * Param to control the interval for MFNFY pushes - */ - object MFPushIntervalInHours - extends FSBoundedParam[Duration]( - name = "frigate_push_magicfanout_fatigue_push_interval_in_hours", - default = 24.hours, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the maximum number of Sports MF pushes in a period of time - */ - object SportsMaxNumberOfPushesInInterval - extends FSBoundedParam[Int]( - name = "magicfanout_sports_event_fatigue_max_pushes_in_interval", - default = 2, - min = 0, - max = 6) - - /** - * Param to control the minInterval for fatigue between consecutive sports pushes - */ - object SportsMinIntervalFatigue - extends FSBoundedParam[Duration]( - name = "magicfanout_sports_event_fatigue_min_interval_consecutive_pushes_minutes", - default = 240.minutes, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromMinutes - } - - /** - * Param to control the interval for sports pushes - */ - object SportsPushIntervalInHours - extends FSBoundedParam[Duration]( - name = "magicfanout_sports_event_fatigue_push_interval_in_hours", - default = 24.hours, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the maximum number of same event sports MF pushes in a period of time - */ - object SportsMaxNumberOfPushesInIntervalPerEvent - extends FSBoundedParam[Int]( - name = "magicfanout_sports_event_fatigue_max_pushes_in_per_event_interval", - default = 2, - min = 0, - max = 6) - - /** - * Param to control the minInterval for fatigue between consecutive same event sports pushes - */ - object SportsMinIntervalFatiguePerEvent - extends FSBoundedParam[Duration]( - name = "magicfanout_sports_event_fatigue_min_interval_consecutive_pushes_per_event_minutes", - default = 240.minutes, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromMinutes - } - - /** - * Param to control the interval for same event sports pushes - */ - object SportsPushIntervalInHoursPerEvent - extends FSBoundedParam[Duration]( - name = "magicfanout_sports_event_fatigue_push_interval_per_event_in_hours", - default = 24.hours, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the maximum number of MF pushes in a period of time - */ - object MFMaxNumberOfPushesInInterval - extends FSBoundedParam[Int]( - name = "frigate_push_magicfanout_fatigue_max_pushes_in_interval", - default = 2, - min = 0, - max = 6) - - /** - * Param to enable custom duration for fatiguing - */ - object GPEnableCustomMagicFanoutCricketFatigue - extends FSParam[Boolean]( - name = "global_participation_cricket_magicfanout_enable_custom_fatigue", - default = false - ) - - /** - * Param to enable e2e scribing for target filtering step - */ - object EnableMrRequestScribingForTargetFiltering - extends FSParam[Boolean]( - name = "mr_request_scribing_enable_for_target_filtering", - default = false - ) - - /** - * Param to enable e2e scribing for candidate filtering step - */ - object EnableMrRequestScribingForCandidateFiltering - extends FSParam[Boolean]( - name = "mr_request_scribing_enable_for_candidate_filtering", - default = false - ) - - /** - * Param to enable e2e scribing with feature hydrating - */ - object EnableMrRequestScribingWithFeatureHydrating - extends FSParam[Boolean]( - name = "mr_request_scribing_enable_with_feature_hydrating", - default = false - ) - - /* - * TargetLevel Feature list for Mr request scribing - */ - object TargetLevelFeatureListForMrRequestScribing - extends FSParam[Seq[String]]( - name = "mr_request_scribing_target_level_feature_list", - default = Seq.empty - ) - - /** - * Param to enable \eps-greedy exploration for BigFiltering/LTV-based filtering - */ - object EnableMrRequestScribingForEpsGreedyExploration - extends FSParam[Boolean]( - name = "mr_request_scribing_eps_greedy_exploration_enable", - default = false - ) - - /** - * Param to control epsilon in \eps-greedy exploration for BigFiltering/LTV-based filtering - */ - object MrRequestScribingEpsGreedyExplorationRatio - extends FSBoundedParam[Double]( - name = "mr_request_scribing_eps_greedy_exploration_ratio", - default = 0.0, - min = 0.0, - max = 1.0 - ) - - /** - * Param to enable scribing dismiss model score - */ - object EnableMrRequestScribingDismissScore - extends FSParam[Boolean]( - name = "mr_request_scribing_dismiss_score_enable", - default = false - ) - - /** - * Param to enable scribing BigFiltering supervised model(s) score(s) - */ - object EnableMrRequestScribingBigFilteringSupervisedScores - extends FSParam[Boolean]( - name = "mr_request_scribing_bigfiltering_supervised_scores_enable", - default = false - ) - - /** - * Param to enable scribing BigFiltering RL model(s) score(s) - */ - object EnableMrRequestScribingBigFilteringRLScores - extends FSParam[Boolean]( - name = "mr_request_scribing_bigfiltering_rl_scores_enable", - default = false - ) - - /** - * Param to flatten mr request scribe - */ - object EnableFlattenMrRequestScribing - extends FSParam[Boolean]( - name = "mr_request_scribing_enable_flatten", - default = false - ) - - /** - * Param to enable NSFW token based filtering - */ - object EnableNsfwTokenBasedFiltering - extends FSParam[Boolean]( - name = "health_and_quality_filter_enable_nsfw_token_based_filtering", - default = false - ) - - object NsfwTokensParam - extends FSParam[Seq[String]]( - name = "health_and_quality_filter_nsfw_tokens", - default = Seq("nsfw", "18+", "\uD83D\uDD1E")) - - object MinimumAllowedAuthorAccountAgeInHours - extends FSBoundedParam[Int]( - name = "health_and_quality_filter_minimum_allowed_author_account_age_in_hours", - default = 0, - min = 0, - max = 168 - ) - - /** - * Param to enable the profanity filter - */ - object EnableProfanityFilterParam - extends FSParam[Boolean]( - name = "health_and_quality_filter_enable_profanity_filter", - default = false - ) - - /** - * Param to enable query the author media representation store - */ - object EnableQueryAuthorMediaRepresentationStore - extends FSParam[Boolean]( - name = "health_and_quality_filter_enable_query_author_media_representation_store", - default = false - ) - - /** - * Threshold to filter a tweet based on the author sensitive media score - */ - object AuthorSensitiveMediaFilteringThreshold - extends FSBoundedParam[Double]( - name = "health_and_quality_filter_author_sensitive_media_filtering_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Threshold to filter a tweet based on the author sensitive media score - */ - object AuthorSensitiveMediaFilteringThresholdForMrTwistly - extends FSBoundedParam[Double]( - name = "health_and_quality_filter_author_sensitive_media_filtering_threshold_for_mrtwistly", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Param to enable filtering the SimCluster tweet if it has AbuseStrike_Top2Percent entitiy - */ - object EnableAbuseStrikeTop2PercentFilterSimCluster - extends FSParam[Boolean]( - name = "health_signal_store_enable_abuse_strike_top_2_percent_filter_sim_cluster", - default = false - ) - - /** - * Param to enable filtering the SimCluster tweet if it has AbuseStrike_Top1Percent entitiy - */ - object EnableAbuseStrikeTop1PercentFilterSimCluster - extends FSParam[Boolean]( - name = "health_signal_store_enable_abuse_strike_top_1_percent_filter_sim_cluster", - default = false - ) - - /** - * Param to enable filtering the SimCluster tweet if it has AbuseStrike_Top0.5Percent entitiy - */ - object EnableAbuseStrikeTop05PercentFilterSimCluster - extends FSParam[Boolean]( - name = "health_signal_store_enable_abuse_strike_top_05_percent_filter_sim_cluster", - default = false - ) - - object EnableAgathaUserHealthModelPredicate - extends FSParam[Boolean]( - name = "health_signal_store_enable_agatha_user_health_model_predicate", - default = false - ) - - /** - * Threshold to filter a tweet based on the agatha_calibrated_nsfw score of its author for MrTwistly - */ - object AgathaCalibratedNSFWThresholdForMrTwistly - extends FSBoundedParam[Double]( - name = "health_signal_store_agatha_calibrated_nsfw_threshold_for_mrtwistly", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Threshold to filter a tweet based on the agatha_calibrated_nsfw score of its author - */ - object AgathaCalibratedNSFWThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_agatha_calibrated_nsfw_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Threshold to filter a tweet based on the agatha_nsfw_text_user score of its author for MrTwistly - */ - object AgathaTextNSFWThresholdForMrTwistly - extends FSBoundedParam[Double]( - name = "health_signal_store_agatha_text_nsfw_threshold_for_mrtwistly", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Threshold to filter a tweet based on the agatha_nsfw_text_user score of its author - */ - object AgathaTextNSFWThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_agatha_text_nsfw_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Threshold to bucket a user based on the agatha_calibrated_nsfw score of the tweet author - */ - object AgathaCalibratedNSFWBucketThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_agatha_calibrated_nsfw_bucket_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Threshold to bucket a user based on the agatha_nsfw_text_user score of the tweet author - */ - object AgathaTextNSFWBucketThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_agatha_text_nsfw_bucket_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Param to enable filtering using pnsfw_text_tweet model. - */ - object EnableHealthSignalStorePnsfwTweetTextPredicate - extends FSParam[Boolean]( - name = "health_signal_store_enable_pnsfw_tweet_text_predicate", - default = false - ) - - /** - * Threshold score for filtering based on pnsfw_text_tweet Model. - */ - object PnsfwTweetTextThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_pnsfw_tweet_text_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Threshold score for bucketing based on pnsfw_text_tweet Model. - */ - object PnsfwTweetTextBucketingThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_pnsfw_tweet_text_bucketing_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Enable filtering tweets with media based on pnsfw_media_tweet Model for OON tweets only. - */ - object PnsfwTweetMediaFilterOonOnly - extends FSParam[Boolean]( - name = "health_signal_store_pnsfw_tweet_media_filter_oon_only", - default = true - ) - - /** - * Threshold score for filtering tweets with media based on pnsfw_media_tweet Model. - */ - object PnsfwTweetMediaThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_pnsfw_tweet_media_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Threshold score for filtering tweets with images based on pnsfw_media_tweet Model. - */ - object PnsfwTweetImageThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_pnsfw_tweet_image_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Threshold score for filtering quote/reply tweets based on source tweet's media - */ - object PnsfwQuoteTweetThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_pnsfw_quote_tweet_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Threshold score for bucketing based on pnsfw_media_tweet Model. - */ - object PnsfwTweetMediaBucketingThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_pnsfw_tweet_media_bucketing_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Param to enable filtering using multilingual psnfw predicate - */ - object EnableHealthSignalStoreMultilingualPnsfwTweetTextPredicate - extends FSParam[Boolean]( - name = "health_signal_store_enable_multilingual_pnsfw_tweet_text_predicate", - default = false - ) - - /** - * Language sequence we will query pnsfw scores for - */ - object MultilingualPnsfwTweetTextSupportedLanguages - extends FSParam[Seq[String]]( - name = "health_signal_store_multilingual_pnsfw_tweet_supported_languages", - default = Seq.empty[String], - ) - - /** - * Threshold score per language for bucketing based on pnsfw scores. - */ - object MultilingualPnsfwTweetTextBucketingThreshold - extends FSParam[Seq[Double]]( - name = "health_signal_store_multilingual_pnsfw_tweet_text_bucketing_thresholds", - default = Seq.empty[Double], - ) - - /** - * Threshold score per language for filtering based on pnsfw scores. - */ - object MultilingualPnsfwTweetTextFilteringThreshold - extends FSParam[Seq[Double]]( - name = "health_signal_store_multilingual_pnsfw_tweet_text_filtering_thresholds", - default = Seq.empty[Double], - ) - - /** - * List of models to threshold scores for bucketing purposes - */ - object MultilingualPnsfwTweetTextBucketingModelList - extends FSEnumSeqParam[NsfwTextDetectionModel.type]( - name = "health_signal_store_multilingual_pnsfw_tweet_text_bucketing_models_ids", - default = Seq(NsfwTextDetectionModel.ProdModel), - enum = NsfwTextDetectionModel - ) - - object MultilingualPnsfwTweetTextModel - extends FSEnumParam[NsfwTextDetectionModel.type]( - name = "health_signal_store_multilingual_pnsfw_tweet_text_model", - default = NsfwTextDetectionModel.ProdModel, - enum = NsfwTextDetectionModel - ) - - /** - * Param to determine media should be enabled for android - */ - object EnableEventSquareMediaAndroid - extends FSParam[Boolean]( - name = "mr_enable_event_media_square_android", - default = false - ) - - /** - * Param to determine expanded media should be enabled for android - */ - object EnableEventPrimaryMediaAndroid - extends FSParam[Boolean]( - name = "mr_enable_event_media_primary_android", - default = false - ) - - /** - * Param to determine media should be enabled for ios for MagicFanout - */ - object EnableEventSquareMediaIosMagicFanoutNewsEvent - extends FSParam[Boolean]( - name = "mr_enable_event_media_square_ios_mf", - default = false - ) - - /** - * Param to configure HTL Visit fatigue - */ - object HTLVisitFatigueTime - extends FSBoundedParam[Int]( - name = "frigate_push_htl_visit_fatigue_time", - default = 20, - min = 0, - max = 72) { - - // Fatigue duration for HTL visit - final val DefaultHoursToFatigueAfterHtlVisit = 20 - final val OldHoursToFatigueAfterHtlVisit = 8 - } - - object MagicFanoutNewsUserGeneratedEventsEnable - extends FSParam[Boolean]( - name = "magicfanout_news_user_generated_events_enable", - default = false) - - object MagicFanoutSkipAccountCountryPredicate - extends FSParam[Boolean]("magicfanout_news_skip_account_country_predicate", false) - - object MagicFanoutNewsEnableDescriptionCopy - extends FSParam[Boolean](name = "magicfanout_news_enable_description_copy", default = false) - - /** - * Enables Custom Targeting for MagicFnaout News events in Pushservice - */ - object MagicFanoutEnableCustomTargetingNewsEvent - extends FSParam[Boolean]("magicfanout_news_event_custom_targeting_enable", false) - - /** - * Enable Topic Copy in MF - */ - object EnableTopicCopyForMF - extends FSParam[Boolean]( - name = "magicfanout_enable_topic_copy", - default = false - ) - - /** - * Enable Topic Copy in MF for implicit topics - */ - object EnableTopicCopyForImplicitTopics - extends FSParam[Boolean]( - name = "magicfanout_enable_topic_copy_erg_interests", - default = false - ) - - /** - * Enable NewCreator push - */ - object EnableNewCreatorPush - extends FSParam[Boolean]( - name = "new_creator_enable_push", - default = false - ) - - /** - * Enable CreatorSubscription push - */ - object EnableCreatorSubscriptionPush - extends FSParam[Boolean]( - name = "creator_subscription_enable_push", - default = false - ) - - /** - * Featureswitch param to enable/disable push recommendations - */ - object EnablePushRecommendationsParam - extends FSParam[Boolean](name = "push_recommendations_enabled", default = false) - - object DisableMlInFilteringFeatureSwitchParam - extends FSParam[Boolean]( - name = "frigate_push_modeling_disable_ml_in_filtering", - default = false - ) - - object EnableMinDurationModifier - extends FSParam[Boolean]( - name = "min_duration_modifier_enable_hour_modifier", - default = false - ) - - object EnableMinDurationModifierV2 - extends FSParam[Boolean]( - name = "min_duration_modifier_enable_hour_modifier_v2", - default = false - ) - - object MinDurationModifierStartHourList - extends FSParam[Seq[Int]]( - name = "min_duration_modifier_start_time_list", - default = Seq(), - ) - - object MinDurationModifierEndHourList - extends FSParam[Seq[Int]]( - name = "min_duration_modifier_start_end_list", - default = Seq(), - ) - - object MinDurationTimeModifierConst - extends FSParam[Seq[Int]]( - name = "min_duration_modifier_const_list", - default = Seq(), - ) - - object EnableQueryUserOpenedHistory - extends FSParam[Boolean]( - name = "min_duration_modifier_enable_query_user_opened_history", - default = false - ) - - object EnableMinDurationModifierByUserHistory - extends FSParam[Boolean]( - name = "min_duration_modifier_enable_hour_modifier_by_user_history", - default = false - ) - - object EnableRandomHourForQuickSend - extends FSParam[Boolean]( - name = "min_duration_modifier_enable_random_hour_for_quick_send", - default = false - ) - - object SendTimeByUserHistoryMaxOpenedThreshold - extends FSBoundedParam[Int]( - name = "min_duration_modifier_max_opened_threshold", - default = 4, - min = 0, - max = 100) - - object SendTimeByUserHistoryNoSendsHours - extends FSBoundedParam[Int]( - name = "min_duration_modifier_no_sends_hours", - default = 1, - min = 0, - max = 24) - - object SendTimeByUserHistoryQuickSendBeforeHours - extends FSBoundedParam[Int]( - name = "min_duration_modifier_quick_send_before_hours", - default = 0, - min = 0, - max = 24) - - object SendTimeByUserHistoryQuickSendAfterHours - extends FSBoundedParam[Int]( - name = "min_duration_modifier_quick_send_after_hours", - default = 0, - min = 0, - max = 24) - - object SendTimeByUserHistoryQuickSendMinDurationInMinute - extends FSBoundedParam[Int]( - name = "min_duration_modifier_quick_send_min_duration", - default = 0, - min = 0, - max = 1440) - - object SendTimeByUserHistoryNoSendMinDuration - extends FSBoundedParam[Int]( - name = "min_duration_modifier_no_send_min_duration", - default = 24, - min = 0, - max = 24) - - object EnableMfGeoTargeting - extends FSParam[Boolean]( - name = "frigate_push_magicfanout_geo_targeting_enable", - default = false) - - /** - * Enable RUX Tweet landing page for push open. When this param is enabled, user will go to RUX - * landing page instead of Tweet details page when opening MagicRecs push. - */ - object EnableRuxLandingPage - extends FSParam[Boolean](name = "frigate_push_enable_rux_landing_page", default = false) - - /** - * Enable RUX Tweet landing page for Ntab Click. When this param is enabled, user will go to RUX - * landing page instead of Tweet details page when click MagicRecs entry on Ntab. - */ - object EnableNTabRuxLandingPage - extends FSParam[Boolean](name = "frigate_push_enable_ntab_rux_landing_page", default = false) - - /** - * Param to enable Onboarding Pushes - */ - object EnableOnboardingPushes - extends FSParam[Boolean]( - name = "onboarding_push_enable", - default = false - ) - - /** - * Param to enable Address Book Pushes - */ - object EnableAddressBookPush - extends FSParam[Boolean]( - name = "onboarding_push_enable_address_book_push", - default = false - ) - - /** - * Param to enable Complete Onboarding Pushes - */ - object EnableCompleteOnboardingPush - extends FSParam[Boolean]( - name = "onboarding_push_enable_complete_onboarding_push", - default = false - ) - - /** - * Param to enable Smart Push Config for MR Override Notifs on Android - */ - object EnableOverrideNotificationsSmartPushConfigForAndroid - extends FSParam[Boolean]( - name = "mr_override_enable_smart_push_config_for_android", - default = false) - - /** - * Param to control the min duration since last MR push for Onboarding Pushes - */ - object MrMinDurationSincePushForOnboardingPushes - extends FSBoundedParam[Duration]( - name = "onboarding_push_min_duration_since_push_days", - default = 4.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Param to control the push fatigue for Onboarding Pushes - */ - object FatigueForOnboardingPushes - extends FSBoundedParam[Duration]( - name = "onboarding_push_fatigue_days", - default = 30.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Param to specify the maximum number of Onboarding Push Notifs in a specified period of time - */ - object MaxOnboardingPushInInterval - extends FSBoundedParam[Int]( - name = "onboarding_push_max_in_interval", - default = 1, - min = 0, - max = 10 - ) - - /** - * Param to disable the Onboarding Push Notif Fatigue - */ - object DisableOnboardingPushFatigue - extends FSParam[Boolean]( - name = "onboarding_push_disable_push_fatigue", - default = false - ) - - /** - * Param to control the inverter for fatigue between consecutive TopTweetsByGeoPush - */ - object TopTweetsByGeoPushInterval - extends FSBoundedParam[Duration]( - name = "top_tweets_by_geo_interval_days", - default = 0.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Param to control the inverter for fatigue between consecutive TripTweets - */ - object HighQualityTweetsPushInterval - extends FSBoundedParam[Duration]( - name = "high_quality_candidates_push_interval_days", - default = 1.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Expiry TTL duration for Tweet Notification types written to history store - */ - object FrigateHistoryTweetNotificationWriteTtl - extends FSBoundedParam[Duration]( - name = "frigate_notification_history_tweet_write_ttl_days", - default = 60.days, - min = Duration.Bottom, - max = Duration.Top - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Expiry TTL duration for Notification written to history store - */ - object FrigateHistoryOtherNotificationWriteTtl - extends FSBoundedParam[Duration]( - name = "frigate_notification_history_other_write_ttl_days", - default = 90.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Param to control maximum number of TopTweetsByGeoPush pushes to receive in an interval - */ - object MaxTopTweetsByGeoPushGivenInterval - extends FSBoundedParam[Int]( - name = "top_tweets_by_geo_push_given_interval", - default = 1, - min = 0, - max = 10 - ) - - /** - * Param to control maximum number of HighQualityTweet pushes to receive in an interval - */ - object MaxHighQualityTweetsPushGivenInterval - extends FSBoundedParam[Int]( - name = "high_quality_candidates_max_push_given_interval", - default = 3, - min = 0, - max = 10 - ) - - /** - * Param to downrank/backfill top tweets by geo candidates - */ - object BackfillRankTopTweetsByGeoCandidates - extends FSParam[Boolean]( - name = "top_tweets_by_geo_backfill_rank", - default = false - ) - - /** - * Determine whether to use aggressive thresholds for Health filtering on SearchTweet - */ - object PopGeoTweetEnableAggressiveThresholds - extends FSParam[Boolean]( - name = "top_tweets_by_geo_enable_aggressive_health_thresholds", - default = false - ) - - /** - * Param to apply different scoring functions to select top tweets by geo candidates - */ - object ScoringFuncForTopTweetsByGeo - extends FSParam[String]( - name = "top_tweets_by_geo_scoring_function", - default = "Pop8H", - ) - - /** - * Param to query different stores in pop geo service. - */ - object TopTweetsByGeoCombinationParam - extends FSEnumParam[TopTweetsForGeoCombination.type]( - name = "top_tweets_by_geo_combination_id", - default = TopTweetsForGeoCombination.Default, - enum = TopTweetsForGeoCombination - ) - - /** - * Param for popgeo tweet version - */ - object PopGeoTweetVersionParam - extends FSEnumParam[PopGeoTweetVersion.type]( - name = "top_tweets_by_geo_version_id", - default = PopGeoTweetVersion.Prod, - enum = PopGeoTweetVersion - ) - - /** - * Param to query what length of hash for geoh store - */ - object GeoHashLengthList - extends FSParam[Seq[Int]]( - name = "top_tweets_by_geo_hash_length_list", - default = Seq(4), - ) - - /** - * Param to include country code results as back off . - */ - object EnableCountryCodeBackoffTopTweetsByGeo - extends FSParam[Boolean]( - name = "top_tweets_by_geo_enable_country_code_backoff", - default = false, - ) - - /** - * Param to decide ranking function for fetched top tweets by geo - */ - object RankingFunctionForTopTweetsByGeo - extends FSEnumParam[TopTweetsForGeoRankingFunction.type]( - name = "top_tweets_by_geo_ranking_function_id", - default = TopTweetsForGeoRankingFunction.Score, - enum = TopTweetsForGeoRankingFunction - ) - - /** - * Param to enable top tweets by geo candidates - */ - object EnableTopTweetsByGeoCandidates - extends FSParam[Boolean]( - name = "top_tweets_by_geo_enable_candidate_source", - default = false - ) - - /** - * Param to enable top tweets by geo candidates for dormant users - */ - object EnableTopTweetsByGeoCandidatesForDormantUsers - extends FSParam[Boolean]( - name = "top_tweets_by_geo_enable_candidate_source_dormant_users", - default = false - ) - - /** - * Param to specify the maximum number of Top Tweets by Geo candidates to take - */ - object MaxTopTweetsByGeoCandidatesToTake - extends FSBoundedParam[Int]( - name = "top_tweets_by_geo_candidates_to_take", - default = 10, - min = 0, - max = 100 - ) - - /** - * Param to min duration since last MR push for top tweets by geo pushes - */ - object MrMinDurationSincePushForTopTweetsByGeoPushes - extends FSBoundedParam[Duration]( - name = "top_tweets_by_geo_min_duration_since_last_mr_days", - default = 3.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Param to enable FRS candidate tweets - */ - object EnableFrsCandidates - extends FSParam[Boolean]( - name = "frs_tweet_candidate_enable_adaptor", - default = false - ) - - /** - * Param to enable FRSTweet candidates for topic setting users - * */ - object EnableFrsTweetCandidatesTopicSetting - extends FSParam[Boolean]( - name = "frs_tweet_candidate_enable_adaptor_for_topic_setting", - default = false - ) - - /** - * Param to enable topic annotations for FRSTweet candidates tweets - * */ - object EnableFrsTweetCandidatesTopicAnnotation - extends FSParam[Boolean]( - name = "frs_tweet_candidate_enable_topic_annotation", - default = false - ) - - /** - * Param to enable topic copy for FRSTweet candidates tweets - * */ - object EnableFrsTweetCandidatesTopicCopy - extends FSParam[Boolean]( - name = "frs_tweet_candidate_enable_topic_copy", - default = false - ) - - /** - * Topic score threshold for FRSTweet candidates topic annotations - * */ - object FrsTweetCandidatesTopicScoreThreshold - extends FSBoundedParam[Double]( - name = "frs_tweet_candidate_topic_score_threshold", - default = 0.0, - min = 0.0, - max = 100.0 - ) - - /** - * Param to enable mr modeling-based candidates tweets - * */ - object EnableMrModelingBasedCandidates - extends FSParam[Boolean]( - name = "candidate_generation_model_enable_adaptor", - default = false - ) - - /** - Param to enable mr modeling-based candidates tweets for topic setting users - * */ - object EnableMrModelingBasedCandidatesTopicSetting - extends FSParam[Boolean]( - name = "candidate_generation_model_enable_adaptor_for_topic_setting", - default = false - ) - - /** - * Param to enable topic annotations for mr modeling-based candidates tweets - * */ - object EnableMrModelingBasedCandidatesTopicAnnotation - extends FSParam[Boolean]( - name = "candidate_generation_model_enable_adaptor_topic_annotation", - default = false - ) - - /** - * Topic score threshold for mr modeling based candidates topic annotations - * */ - object MrModelingBasedCandidatesTopicScoreThreshold - extends FSBoundedParam[Double]( - name = "candidate_generation_model_topic_score_threshold", - default = 0.0, - min = 0.0, - max = 100.0 - ) - - /** - * Param to enable topic copy for mr modeling-based candidates tweets - * */ - object EnableMrModelingBasedCandidatesTopicCopy - extends FSParam[Boolean]( - name = "candidate_generation_model_enable_topic_copy", - default = false - ) - - /** - * Number of max mr modeling based candidates - * */ - object NumberOfMaxMrModelingBasedCandidates - extends FSBoundedParam[Int]( - name = "candidate_generation_model_max_mr_modeling_based_candidates", - default = 200, - min = 0, - max = 1000 - ) - - /** - * Enable the traffic to use fav threshold - * */ - object EnableThresholdOfFavMrModelingBasedCandidates - extends FSParam[Boolean]( - name = "candidate_generation_model_enable_fav_threshold", - default = false - ) - - /** - * Threshold of fav for mr modeling based candidates - * */ - object ThresholdOfFavMrModelingBasedCandidates - extends FSBoundedParam[Int]( - name = "candidate_generation_model_fav_threshold", - default = 0, - min = 0, - max = 500 - ) - - /** - * Filtered threshold for mr modeling based candidates - * */ - object CandidateGenerationModelCosineThreshold - extends FSBoundedParam[Double]( - name = "candidate_generation_model_cosine_threshold", - default = 0.9, - min = 0.0, - max = 1.0 - ) - - /* - * ANN hyparameters - * */ - object ANNEfQuery - extends FSBoundedParam[Int]( - name = "candidate_generation_model_ann_ef_query", - default = 300, - min = 50, - max = 1500 - ) - - /** - * Param to do real A/B impression for FRS candidates to avoid dilution - */ - object EnableResultFromFrsCandidates - extends FSParam[Boolean]( - name = "frs_tweet_candidate_enable_returned_result", - default = false - ) - - /** - * Param to enable hashspace candidate tweets - */ - object EnableHashspaceCandidates - extends FSParam[Boolean]( - name = "hashspace_candidate_enable_adaptor", - default = false - ) - - /** - * Param to enable hashspace candidates tweets for topic setting users - * */ - object EnableHashspaceCandidatesTopicSetting - extends FSParam[Boolean]( - name = "hashspace_candidate_enable_adaptor_for_topic_setting", - default = false - ) - - /** - * Param to enable topic annotations for hashspace candidates tweets - * */ - object EnableHashspaceCandidatesTopicAnnotation - extends FSParam[Boolean]( - name = "hashspace_candidate_enable_topic_annotation", - default = false - ) - - /** - * Param to enable topic copy for hashspace candidates tweets - * */ - object EnableHashspaceCandidatesTopicCopy - extends FSParam[Boolean]( - name = "hashspace_candidate_enable_topic_copy", - default = false - ) - - /** - * Topic score threshold for hashspace candidates topic annotations - * */ - object HashspaceCandidatesTopicScoreThreshold - extends FSBoundedParam[Double]( - name = "hashspace_candidate_topic_score_threshold", - default = 0.0, - min = 0.0, - max = 100.0 - ) - - /** - * Param to do real A/B impression for hashspace candidates to avoid dilution - */ - object EnableResultFromHashspaceCandidates - extends FSParam[Boolean]( - name = "hashspace_candidate_enable_returned_result", - default = false - ) - - /** - * Param to enable detopic tweet candidates in adaptor - */ - object EnableDeTopicTweetCandidates - extends FSParam[Boolean]( - name = "detopic_tweet_candidate_enable_adaptor", - default = false - ) - - /** - * Param to enable detopic tweet candidates results (to avoid dilution) - */ - object EnableDeTopicTweetCandidateResults - extends FSParam[Boolean]( - name = "detopic_tweet_candidate_enable_results", - default = false - ) - - /** - * Param to specify whether to provide a custom list of topics in request - */ - object EnableDeTopicTweetCandidatesCustomTopics - extends FSParam[Boolean]( - name = "detopic_tweet_candidate_enable_custom_topics", - default = false - ) - - /** - * Param to specify whether to provide a custom language in request - */ - object EnableDeTopicTweetCandidatesCustomLanguages - extends FSParam[Boolean]( - name = "detopic_tweet_candidate_enable_custom_languages", - default = false - ) - - /** - * Number of detopic tweet candidates in the request - * */ - object NumberOfDeTopicTweetCandidates - extends FSBoundedParam[Int]( - name = "detopic_tweet_candidate_num_candidates_in_request", - default = 600, - min = 0, - max = 3000 - ) - - /** - * Max Number of detopic tweet candidates returned in adaptor - * */ - object NumberOfMaxDeTopicTweetCandidatesReturned - extends FSBoundedParam[Int]( - name = "detopic_tweet_candidate_max_num_candidates_returned", - default = 200, - min = 0, - max = 3000 - ) - - /** - * Param to enable F1 from protected Authors - */ - object EnableF1FromProtectedTweetAuthors - extends FSParam[Boolean]( - "f1_enable_protected_tweets", - false - ) - - /** - * Param to enable safe user tweet tweetypie store - */ - object EnableSafeUserTweetTweetypieStore - extends FSParam[Boolean]( - "mr_infra_enable_use_safe_user_tweet_tweetypie", - false - ) - - /** - * Param to min duration since last MR push for top tweets by geo pushes - */ - object EnableMrMinDurationSinceMrPushFatigue - extends FSParam[Boolean]( - name = "top_tweets_by_geo_enable_min_duration_since_mr_fatigue", - default = false - ) - - /** - * Param to check time since last time user logged in for geo top tweets by geo push - */ - object TimeSinceLastLoginForGeoPopTweetPush - extends FSBoundedParam[Duration]( - name = "top_tweets_by_geo_time_since_last_login_in_days", - default = 14.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Param to check time since last time user logged in for geo top tweets by geo push - */ - object MinimumTimeSinceLastLoginForGeoPopTweetPush - extends FSBoundedParam[Duration]( - name = "top_tweets_by_geo_minimum_time_since_last_login_in_days", - default = 14.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** How long we wait after a user visited the app before sending them a space fanout rec */ - object SpaceRecsAppFatigueDuration - extends FSBoundedParam[Duration]( - name = "space_recs_app_fatigue_duration_hours", - default = 4.hours, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** The fatigue time-window for OON space fanout recs, e.g. 1 push every 3 days */ - object OONSpaceRecsFatigueDuration - extends FSBoundedParam[Duration]( - name = "space_recs_oon_fatigue_duration_days", - default = 1.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** The global fatigue time-window for space fanout recs, e.g. 1 push every 3 days */ - object SpaceRecsGlobalFatigueDuration - extends FSBoundedParam[Duration]( - name = "space_recs_global_fatigue_duration_days", - default = 1.day, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** The min-interval between space fanout recs. - * After receiving a space fanout rec, they must wait a minimum of this - * interval before eligibile for another */ - object SpaceRecsFatigueMinIntervalDuration - extends FSBoundedParam[Duration]( - name = "space_recs_fatigue_mininterval_duration_minutes", - default = 30.minutes, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromMinutes - } - - /** Space fanout user-follow rank threshold. - * Users targeted by a follow that is above this threshold will be filtered */ - object SpaceRecsRealgraphThreshold - extends FSBoundedParam[Int]( - name = "space_recs_realgraph_threshold", - default = 50, - max = 500, - min = 0 - ) - - object EnableHydratingRealGraphTargetUserFeatures - extends FSParam[Boolean]( - name = "frigate_push_modeling_enable_hydrating_real_graph_target_user_feature", - default = true - ) - - /** Param to reduce dillution when checking if a space is featured or not */ - object CheckFeaturedSpaceOON - extends FSParam[Boolean](name = "space_recs_check_if_its_featured_space", default = false) - - /** Enable Featured Spaces Rules for OON spaces */ - object EnableFeaturedSpacesOON - extends FSParam[Boolean](name = "space_recs_enable_featured_spaces_oon", default = false) - - /** Enable Geo Targeting */ - object EnableGeoTargetingForSpaces - extends FSParam[Boolean](name = "space_recs_enable_geo_targeting", default = false) - - /** Number of max pushes within the fatigue duration for OON Space Recs */ - object OONSpaceRecsPushLimit - extends FSBoundedParam[Int]( - name = "space_recs_oon_push_limit", - default = 1, - max = 3, - min = 0 - ) - - /** Space fanout recs, number of max pushes within the fatigue duration */ - object SpaceRecsGlobalPushLimit - extends FSBoundedParam[Int]( - name = "space_recs_global_push_limit", - default = 3, - max = 50, - min = 0 - ) - - /** - * Param to enable score based override. - */ - object EnableOverrideNotificationsScoreBasedOverride - extends FSParam[Boolean]( - name = "mr_override_enable_score_ranking", - default = false - ) - - /** - * Param to determine the lookback duration when searching for override info. - */ - object OverrideNotificationsLookbackDurationForOverrideInfo - extends FSBoundedParam[Duration]( - name = "mr_override_lookback_duration_override_info_in_days", - default = 30.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Param to determine the lookback duration when searching for impression ids. - */ - object OverrideNotificationsLookbackDurationForImpressionId - extends FSBoundedParam[Duration]( - name = "mr_override_lookback_duration_impression_id_in_days", - default = 30.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Param to enable sending multiple target ids in the payload. - */ - object EnableOverrideNotificationsMultipleTargetIds - extends FSParam[Boolean]( - name = "mr_override_enable_multiple_target_ids", - default = false - ) - - /** - * Param for MR Web Notifications holdback - */ - object MRWebHoldbackParam - extends FSParam[Boolean]( - name = "mr_web_notifications_holdback", - default = false - ) - - object CommonRecommendationTypeDenyListPushHoldbacks - extends FSParam[Seq[String]]( - name = "crt_to_exclude_from_holdbacks_push_holdbacks", - default = Seq.empty[String] - ) - - /** - * Param to enable sending number of slots to maintain in the payload. - */ - object EnableOverrideNotificationsNSlots - extends FSParam[Boolean]( - name = "mr_override_enable_n_slots", - default = false - ) - - /** - * Enable down ranking of NUPS and pop geo topic follow candidates for new user playbook. - */ - object EnableDownRankOfNewUserPlaybookTopicFollowPush - extends FSParam[Boolean]( - name = "topic_follow_new_user_playbook_enable_down_rank", - default = false - ) - - /** - * Enable down ranking of NUPS and pop geo topic tweet candidates for new user playbook. - */ - object EnableDownRankOfNewUserPlaybookTopicTweetPush - extends FSParam[Boolean]( - name = "topic_tweet_new_user_playbook_enable_down_rank", - default = false - ) - - /** - * Param to enable/disable employee only spaces for fanout of notifications - */ - object EnableEmployeeOnlySpaceNotifications - extends FSParam[Boolean](name = "space_recs_employee_only_enable", default = false) - - /** - * NTab spaces ttl experiments - */ - object EnableSpacesTtlForNtab - extends FSParam[Boolean]( - name = "ntab_spaces_ttl_enable", - default = false - ) - - /** - * Param to determine the ttl duration for space notifications on NTab. - */ - object SpaceNotificationsTTLDurationForNTab - extends FSBoundedParam[Duration]( - name = "ntab_spaces_ttl_hours", - default = 1.hour, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /* - * NTab override experiments - * see go/ntab-override experiment brief for more details - */ - - /** - * Override notifications for Spaces on lockscreen. - */ - object EnableOverrideForSpaces - extends FSParam[Boolean]( - name = "mr_override_spaces", - default = false - ) - - /** - * Param to enable storing the Generic Notification Key. - */ - object EnableStoringNtabGenericNotifKey - extends FSParam[Boolean]( - name = "ntab_enable_storing_generic_notif_key", - default = false - ) - - /** - * Param to enable deleting the Target's timeline. - */ - object EnableDeletingNtabTimeline - extends FSParam[Boolean]( - name = "ntab_enable_delete_timeline", - default = false - ) - - /** - * Param to enable sending the overrideId - * to NTab which enables override support in NTab-api - */ - object EnableOverrideIdNTabRequest - extends FSParam[Boolean]( - name = "ntab_enable_override_id_in_request", - default = false - ) - - /** - * [Override Workstream] Param to enable NTab override n-slot feature. - */ - object EnableNslotsForOverrideOnNtab - extends FSParam[Boolean]( - name = "ntab_enable_override_max_count", - default = false - ) - - /** - * Param to determine the lookback duration for override candidates on NTab. - */ - object OverrideNotificationsLookbackDurationForNTab - extends FSBoundedParam[Duration]( - name = "ntab_override_lookback_duration_days", - default = 30.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Param to determine the max count for candidates on NTab. - */ - object OverrideNotificationsMaxCountForNTab - extends FSBoundedParam[Int]( - name = "ntab_override_limit", - min = 0, - max = Int.MaxValue, - default = 4) - - //// end override experiments //// - /** - * Param to enable top tweet impressions notification - */ - object EnableTopTweetImpressionsNotification - extends FSParam[Boolean]( - name = "top_tweet_impressions_notification_enable", - default = false - ) - - /** - * Param to control the inverter for fatigue between consecutive TweetImpressions - */ - object TopTweetImpressionsNotificationInterval - extends FSBoundedParam[Duration]( - name = "top_tweet_impressions_notification_interval_days", - default = 7.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * The min-interval between TweetImpressions notifications. - * After receiving a TweetImpressions notif, they must wait a minimum of this - * interval before being eligible for another - */ - object TopTweetImpressionsFatigueMinIntervalDuration - extends FSBoundedParam[Duration]( - name = "top_tweet_impressions_fatigue_mininterval_duration_days", - default = 1.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Maximum number of top tweet impressions notifications to receive in an interval - */ - object MaxTopTweetImpressionsNotifications - extends FSBoundedParam( - name = "top_tweet_impressions_fatigue_max_in_interval", - default = 0, - min = 0, - max = 10 - ) - - /** - * Param for min number of impressions counts to be eligible for lonely_birds_tweet_impressions model - */ - object TopTweetImpressionsMinRequired - extends FSBoundedParam[Int]( - name = "top_tweet_impressions_min_required", - default = 25, - min = 0, - max = Int.MaxValue - ) - - /** - * Param for threshold of impressions counts to notify for lonely_birds_tweet_impressions model - */ - object TopTweetImpressionsThreshold - extends FSBoundedParam[Int]( - name = "top_tweet_impressions_threshold", - default = 25, - min = 0, - max = Int.MaxValue - ) - - /** - * Param for the number of days to search up to for a user's original tweets - */ - object TopTweetImpressionsOriginalTweetsNumDaysSearch - extends FSBoundedParam[Int]( - name = "top_tweet_impressions_original_tweets_num_days_search", - default = 3, - min = 0, - max = 21 - ) - - /** - * Param for the minimum number of original tweets a user needs to be considered an original author - */ - object TopTweetImpressionsMinNumOriginalTweets - extends FSBoundedParam[Int]( - name = "top_tweet_impressions_num_original_tweets", - default = 3, - min = 0, - max = Int.MaxValue - ) - - /** - * Param for the max number of favorites any original Tweet can have - */ - object TopTweetImpressionsMaxFavoritesPerTweet - extends FSBoundedParam[Int]( - name = "top_tweet_impressions_max_favorites_per_tweet", - default = 3, - min = 0, - max = Int.MaxValue - ) - - /** - * Param for the max number of total inbound favorites for a user's tweets - */ - object TopTweetImpressionsTotalInboundFavoritesLimit - extends FSBoundedParam[Int]( - name = "top_tweet_impressions_total_inbound_favorites_limit", - default = 60, - min = 0, - max = Int.MaxValue - ) - - /** - * Param for the number of days to search for tweets to count the total inbound favorites - */ - object TopTweetImpressionsTotalFavoritesLimitNumDaysSearch - extends FSBoundedParam[Int]( - name = "top_tweet_impressions_total_favorites_limit_num_days_search", - default = 7, - min = 0, - max = 21 - ) - - /** - * Param for the max number of recent tweets Tflock should return - */ - object TopTweetImpressionsRecentTweetsByAuthorStoreMaxResults - extends FSBoundedParam[Int]( - name = "top_tweet_impressions_recent_tweets_by_author_store_max_results", - default = 50, - min = 0, - max = 1000 - ) - - /* - * Param to represent the max number of slots to maintain for Override Notifications - */ - object OverrideNotificationsMaxNumOfSlots - extends FSBoundedParam[Int]( - name = "mr_override_max_num_slots", - default = 1, - max = 10, - min = 1 - ) - - object EnableOverrideMaxSlotFn - extends FSParam[Boolean]( - name = "mr_override_enable_max_num_slots_fn", - default = false - ) - - object OverrideMaxSlotFnPushCapKnobs - extends FSParam[Seq[Double]]("mr_override_fn_pushcap_knobs", default = Seq.empty[Double]) - - object OverrideMaxSlotFnNSlotKnobs - extends FSParam[Seq[Double]]("mr_override_fn_nslot_knobs", default = Seq.empty[Double]) - - object OverrideMaxSlotFnPowerKnobs - extends FSParam[Seq[Double]]("mr_override_fn_power_knobs", default = Seq.empty[Double]) - - object OverrideMaxSlotFnWeight - extends FSBoundedParam[Double]( - "mr_override_fn_weight", - default = 1.0, - min = 0.0, - max = Double.MaxValue) - - /** - * Use to enable sending target ids in the Smart Push Payload - */ - object EnableTargetIdsInSmartPushPayload - extends FSParam[Boolean](name = "mr_override_enable_target_ids", default = true) - - /** - * Param to enable override by target id for MagicFanoutSportsEvent candidates - */ - object EnableTargetIdInSmartPushPayloadForMagicFanoutSportsEvent - extends FSParam[Boolean]( - name = "mr_override_enable_target_id_for_magic_fanout_sports_event", - default = true) - - /** - * Param to enable secondary account predicate on MF NFY - */ - object EnableSecondaryAccountPredicateMF - extends FSParam[Boolean]( - name = "frigate_push_magicfanout_secondary_account_predicate", - default = false - ) - - /** - * Enables showing our customers videos on their notifications - */ - object EnableInlineVideo - extends FSParam[Boolean](name = "mr_inline_enable_inline_video", default = false) - - /** - * Enables autoplay for inline videos - */ - object EnableAutoplayForInlineVideo - extends FSParam[Boolean](name = "mr_inline_enable_autoplay_for_inline_video", default = false) - - /** - * Enable OON filtering based on MentionFilter. - */ - object EnableOONFilteringBasedOnUserSettings - extends FSParam[Boolean](name = "oon_filtering_enable_based_on_user_settings", false) - - /** - * Enables Custom Thread Ids which is used to ungroup notifications for N-slots on iOS - */ - object EnableCustomThreadIdForOverride - extends FSParam[Boolean](name = "mr_override_enable_custom_thread_id", default = false) - - /** - * Enables showing verified symbol in the push presentation - */ - object EnablePushPresentationVerifiedSymbol - extends FSParam[Boolean](name = "push_presentation_enable_verified_symbol", default = false) - - /** - * Decide subtext in Android push header - */ - object SubtextInAndroidPushHeaderParam - extends FSEnumParam[SubtextForAndroidPushHeader.type]( - name = "push_presentation_subtext_in_android_push_header_id", - default = SubtextForAndroidPushHeader.None, - enum = SubtextForAndroidPushHeader) - - /** - * Enable SimClusters Targeting For Spaces. If false we just drop all candidates with such targeting reason - */ - object EnableSimClusterTargetingSpaces - extends FSParam[Boolean](name = "space_recs_send_simcluster_recommendations", default = false) - - /** - * Param to control threshold for dot product of simcluster based targeting on Spaces - */ - object SpacesTargetingSimClusterDotProductThreshold - extends FSBoundedParam[Double]( - "space_recs_simclusters_dot_product_threshold", - default = 0.0, - min = 0.0, - max = 10.0) - - /** - * Param to control top-k clusters simcluster based targeting on Spaces - */ - object SpacesTopKSimClusterCount - extends FSBoundedParam[Int]( - "space_recs_simclusters_top_k_count", - default = 1, - min = 1, - max = 50) - - /** SimCluster users host/speaker must meet this follower count minimum threshold to be considered for sends */ - object SpaceRecsSimClusterUserMinimumFollowerCount - extends FSBoundedParam[Int]( - name = "space_recs_simcluster_user_min_follower_count", - default = 5000, - max = Int.MaxValue, - min = 0 - ) - - /** - * Target has been bucketed into the Inline Action App Visit Fatigue Experiment - */ - object TargetInInlineActionAppVisitFatigue - extends FSParam[Boolean](name = "inline_action_target_in_app_visit_fatigue", default = false) - - /** - * Enables Inline Action App Visit Fatigue - */ - object EnableInlineActionAppVisitFatigue - extends FSParam[Boolean](name = "inline_action_enable_app_visit_fatigue", default = false) - - /** - * Determines the fatigue that we should apply when the target user has performed an inline action - */ - object InlineActionAppVisitFatigue - extends FSBoundedParam[Duration]( - name = "inline_action_app_visit_fatigue_hours", - default = 8.hours, - min = 1.hour, - max = 48.hours) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Weight for reranking(oonc - weight * nudityRate) - */ - object AuthorSensitiveScoreWeightInReranking - extends FSBoundedParam[Double]( - name = "rerank_candidates_author_sensitive_score_weight_in_reranking", - default = 0.0, - min = -100.0, - max = 100.0 - ) - - /** - * Param to control the last active space listener threshold to filter out based on that - */ - object SpaceParticipantHistoryLastActiveThreshold - extends FSBoundedParam[Duration]( - name = "space_recs_last_active_space_listener_threshold_in_hours", - default = 0.hours, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /* - * Param to enable mr user simcluster feature set (v2020) hydration for modeling-based candidate generation - * */ - object HydrateMrUserSimclusterV2020InModelingBasedCG - extends FSParam[Boolean]( - name = "candidate_generation_model_hydrate_mr_user_simcluster_v2020", - default = false) - - /* - * Param to enable mr semantic core feature set hydration for modeling-based candidate generation - * */ - object HydrateMrUserSemanticCoreInModelingBasedCG - extends FSParam[Boolean]( - name = "candidate_generation_model_hydrate_mr_user_semantic_core", - default = false) - - /* - * Param to enable mr semantic core feature set hydration for modeling-based candidate generation - * */ - object HydrateOnboardingInModelingBasedCG - extends FSParam[Boolean]( - name = "candidate_generation_model_hydrate_onboarding", - default = false) - - /* - * Param to enable mr topic follow feature set hydration for modeling-based candidate generation - * */ - object HydrateTopicFollowInModelingBasedCG - extends FSParam[Boolean]( - name = "candidate_generation_model_hydrate_topic_follow", - default = false) - - /* - * Param to enable mr user topic feature set hydration for modeling-based candidate generation - * */ - object HydrateMrUserTopicInModelingBasedCG - extends FSParam[Boolean]( - name = "candidate_generation_model_hydrate_mr_user_topic", - default = false) - - /* - * Param to enable mr user topic feature set hydration for modeling-based candidate generation - * */ - object HydrateMrUserAuthorInModelingBasedCG - extends FSParam[Boolean]( - name = "candidate_generation_model_hydrate_mr_user_author", - default = false) - - /* - * Param to enable user penguin language feature set hydration for modeling-based candidate generation - * */ - object HydrateUserPenguinLanguageInModelingBasedCG - extends FSParam[Boolean]( - name = "candidate_generation_model_hydrate_user_penguin_language", - default = false) - /* - * Param to enable user geo feature set hydration for modeling-based candidate generation - * */ - object HydrateUseGeoInModelingBasedCG - extends FSParam[Boolean]( - name = "candidate_generation_model_hydrate_user_geo", - default = false) - - /* - * Param to enable mr user hashspace embedding feature set hydration for modeling-based candidate generation - * */ - object HydrateMrUserHashspaceEmbeddingInModelingBasedCG - extends FSParam[Boolean]( - name = "candidate_generation_model_hydrate_mr_user_hashspace_embedding", - default = false) - /* - * Param to enable user tweet text feature hydration - * */ - object EnableMrUserEngagedTweetTokensFeature - extends FSParam[Boolean]( - name = "feature_hydration_mr_user_engaged_tweet_tokens", - default = false) - - /** - * Params for CRT based see less often fatigue rules - */ - object EnableF1TriggerSeeLessOftenFatigue - extends FSParam[Boolean]( - name = "seelessoften_enable_f1_trigger_fatigue", - default = false - ) - - object EnableNonF1TriggerSeeLessOftenFatigue - extends FSParam[Boolean]( - name = "seelessoften_enable_nonf1_trigger_fatigue", - default = false - ) - - /** - * Adjust the NtabCaretClickFatigue for candidates if it is triggered by - * TripHqTweet candidates - */ - object AdjustTripHqTweetTriggeredNtabCaretClickFatigue - extends FSParam[Boolean]( - name = "seelessoften_adjust_trip_hq_tweet_triggered_fatigue", - default = false - ) - - object NumberOfDaysToFilterForSeeLessOftenForF1TriggerF1 - extends FSBoundedParam[Duration]( - name = "seelessoften_for_f1_trigger_f1_tofiltermr_days", - default = 7.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - object NumberOfDaysToReducePushCapForSeeLessOftenForF1TriggerF1 - extends FSBoundedParam[Duration]( - name = "seelessoften_for_f1_trigger_f1_toreduce_pushcap_days", - default = 30.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - object NumberOfDaysToFilterForSeeLessOftenForF1TriggerNonF1 - extends FSBoundedParam[Duration]( - name = "seelessoften_for_f1_trigger_nonf1_tofiltermr_days", - default = 7.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - object NumberOfDaysToReducePushCapForSeeLessOftenForF1TriggerNonF1 - extends FSBoundedParam[Duration]( - name = "seelessoften_for_f1_trigger_non_f1_toreduce_pushcap_days", - default = 30.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - object NumberOfDaysToFilterForSeeLessOftenForNonF1TriggerF1 - extends FSBoundedParam[Duration]( - name = "seelessoften_for_nonf1_trigger_f1_tofiltermr_days", - default = 7.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - object NumberOfDaysToReducePushCapForSeeLessOftenForNonF1TriggerF1 - extends FSBoundedParam[Duration]( - name = "seelessoften_for_nonf1_trigger_f1_toreduce_pushcap_days", - default = 30.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - object NumberOfDaysToFilterForSeeLessOftenForNonF1TriggerNonF1 - extends FSBoundedParam[Duration]( - name = "seelessoften_for_nonf1_trigger_nonf1_tofiltermr_days", - default = 7.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - object NumberOfDaysToReducePushCapForSeeLessOftenForNonF1TriggerNonF1 - extends FSBoundedParam[Duration]( - name = "seelessoften_for_nonf1_trigger_nonf1_toreduce_pushcap_days", - default = 30.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - object EnableContFnF1TriggerSeeLessOftenFatigue - extends FSParam[Boolean]( - name = "seelessoften_fn_enable_f1_trigger_fatigue", - default = false - ) - - object EnableContFnNonF1TriggerSeeLessOftenFatigue - extends FSParam[Boolean]( - name = "seelessoften_fn_enable_nonf1_trigger_fatigue", - default = false - ) - - object SeeLessOftenListOfDayKnobs - extends FSParam[Seq[Double]]("seelessoften_fn_day_knobs", default = Seq.empty[Double]) - - object SeeLessOftenListOfPushCapWeightKnobs - extends FSParam[Seq[Double]]("seelessoften_fn_pushcap_knobs", default = Seq.empty[Double]) - - object SeeLessOftenListOfPowerKnobs - extends FSParam[Seq[Double]]("seelessoften_fn_power_knobs", default = Seq.empty[Double]) - - object SeeLessOftenF1TriggerF1PushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_f1_trigger_f1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object SeeLessOftenF1TriggerNonF1PushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_f1_trigger_nonf1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object SeeLessOftenNonF1TriggerF1PushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_nonf1_trigger_f1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object SeeLessOftenNonF1TriggerNonF1PushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_nonf1_trigger_nonf1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object SeeLessOftenTripHqTweetTriggerF1PushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_trip_hq_tweet_trigger_f1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object SeeLessOftenTripHqTweetTriggerNonF1PushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_trip_hq_tweet_trigger_nonf1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object SeeLessOftenTripHqTweetTriggerTripHqTweetPushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_trip_hq_tweet_trigger_trip_hq_tweet_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object SeeLessOftenTopicTriggerTopicPushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_topic_trigger_topic_weight", - default = 1.0, - min = 0.0, - max = Double.MaxValue) - - object SeeLessOftenTopicTriggerF1PushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_topic_trigger_f1_weight", - default = 100000.0, - min = 0.0, - max = Double.MaxValue) - - object SeeLessOftenTopicTriggerOONPushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_topic_trigger_oon_weight", - default = 100000.0, - min = 0.0, - max = Double.MaxValue) - - object SeeLessOftenF1TriggerTopicPushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_f1_trigger_topic_weight", - default = 100000.0, - min = 0.0, - max = Double.MaxValue) - - object SeeLessOftenOONTriggerTopicPushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_oon_trigger_topic_weight", - default = 1.0, - min = 0.0, - max = Double.MaxValue) - - object SeeLessOftenDefaultPushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_default_weight", - default = 100000.0, - min = 0.0, - max = Double.MaxValue) - - object SeeLessOftenNtabOnlyNotifUserPushCapWeight - extends FSBoundedParam[Double]( - "seelessoften_fn_ntab_only_user_weight", - default = 1.0, - min = 0.0, - max = Double.MaxValue) - - // Params for inline feedback fatigue - object EnableContFnF1TriggerInlineFeedbackFatigue - extends FSParam[Boolean]( - name = "feedback_inline_fn_enable_f1_trigger_fatigue", - default = false - ) - - object EnableContFnNonF1TriggerInlineFeedbackFatigue - extends FSParam[Boolean]( - name = "feedback_inline_fn_enable_nonf1_trigger_fatigue", - default = false - ) - - object UseInlineDislikeForFatigue - extends FSParam[Boolean]( - name = "feedback_inline_fn_use_dislike", - default = true - ) - object UseInlineDismissForFatigue - extends FSParam[Boolean]( - name = "feedback_inline_fn_use_dismiss", - default = false - ) - object UseInlineSeeLessForFatigue - extends FSParam[Boolean]( - name = "feedback_inline_fn_use_see_less", - default = false - ) - object UseInlineNotRelevantForFatigue - extends FSParam[Boolean]( - name = "feedback_inline_fn_use_not_relevant", - default = false - ) - object InlineFeedbackListOfDayKnobs - extends FSParam[Seq[Double]]("feedback_inline_fn_day_knobs", default = Seq.empty[Double]) - - object InlineFeedbackListOfPushCapWeightKnobs - extends FSParam[Seq[Double]]("feedback_inline_fn_pushcap_knobs", default = Seq.empty[Double]) - - object InlineFeedbackListOfPowerKnobs - extends FSParam[Seq[Double]]("feedback_inline_fn_power_knobs", default = Seq.empty[Double]) - - object InlineFeedbackF1TriggerF1PushCapWeight - extends FSBoundedParam[Double]( - "feedback_inline_fn_f1_trigger_f1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object InlineFeedbackF1TriggerNonF1PushCapWeight - extends FSBoundedParam[Double]( - "feedback_inline_fn_f1_trigger_nonf1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object InlineFeedbackNonF1TriggerF1PushCapWeight - extends FSBoundedParam[Double]( - "feedback_inline_fn_nonf1_trigger_f1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object InlineFeedbackNonF1TriggerNonF1PushCapWeight - extends FSBoundedParam[Double]( - "feedback_inline_fn_nonf1_trigger_nonf1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - // Params for prompt feedback - object EnableContFnF1TriggerPromptFeedbackFatigue - extends FSParam[Boolean]( - name = "feedback_prompt_fn_enable_f1_trigger_fatigue", - default = false - ) - - object EnableContFnNonF1TriggerPromptFeedbackFatigue - extends FSParam[Boolean]( - name = "feedback_prompt_fn_enable_nonf1_trigger_fatigue", - default = false - ) - object PromptFeedbackListOfDayKnobs - extends FSParam[Seq[Double]]("feedback_prompt_fn_day_knobs", default = Seq.empty[Double]) - - object PromptFeedbackListOfPushCapWeightKnobs - extends FSParam[Seq[Double]]("feedback_prompt_fn_pushcap_knobs", default = Seq.empty[Double]) - - object PromptFeedbackListOfPowerKnobs - extends FSParam[Seq[Double]]("feedback_prompt_fn_power_knobs", default = Seq.empty[Double]) - - object PromptFeedbackF1TriggerF1PushCapWeight - extends FSBoundedParam[Double]( - "feedback_prompt_fn_f1_trigger_f1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object PromptFeedbackF1TriggerNonF1PushCapWeight - extends FSBoundedParam[Double]( - "feedback_prompt_fn_f1_trigger_nonf1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object PromptFeedbackNonF1TriggerF1PushCapWeight - extends FSBoundedParam[Double]( - "feedback_prompt_fn_nonf1_trigger_f1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - object PromptFeedbackNonF1TriggerNonF1PushCapWeight - extends FSBoundedParam[Double]( - "feedback_prompt_fn_nonf1_trigger_nonf1_weight", - default = 1.0, - min = 0.0, - max = 10000000.0) - - /* - * Param to enable cohost join event notif - */ - object EnableSpaceCohostJoinEvent - extends FSParam[Boolean](name = "space_recs_cohost_join_enable", default = true) - - /* - * Param to bypass global push cap when target is device following host/speaker. - */ - object BypassGlobalSpacePushCapForSoftDeviceFollow - extends FSParam[Boolean](name = "space_recs_bypass_global_pushcap_for_soft_follow", false) - - /* - * Param to bypass active listener predicate when target is device following host/speaker. - */ - object CheckActiveListenerPredicateForSoftDeviceFollow - extends FSParam[Boolean](name = "space_recs_check_active_listener_for_soft_follow", false) - - object SpreadControlRatioParam - extends FSBoundedParam[Double]( - name = "oon_spread_control_ratio", - default = 1000.0, - min = 0.0, - max = 100000.0 - ) - - object FavOverSendThresholdParam - extends FSBoundedParam[Double]( - name = "oon_spread_control_fav_over_send_threshold", - default = 0.14, - min = 0.0, - max = 1000.0 - ) - - object AuthorReportRateThresholdParam - extends FSBoundedParam[Double]( - name = "oon_spread_control_author_report_rate_threshold", - default = 7.4e-6, - min = 0.0, - max = 1000.0 - ) - - object AuthorDislikeRateThresholdParam - extends FSBoundedParam[Double]( - name = "oon_spread_control_author_dislike_rate_threshold", - default = 1.0, - min = 0.0, - max = 1000.0 - ) - - object MinTweetSendsThresholdParam - extends FSBoundedParam[Double]( - name = "oon_spread_control_min_tweet_sends_threshold", - default = 10000000000.0, - min = 0.0, - max = 10000000000.0 - ) - - object MinAuthorSendsThresholdParam - extends FSBoundedParam[Double]( - name = "oon_spread_control_min_author_sends_threshold", - default = 10000000000.0, - min = 0.0, - max = 10000000000.0 - ) - - /* - * Tweet Ntab-dislike predicate related params - */ - object TweetNtabDislikeCountThresholdParam - extends FSBoundedParam[Double]( - name = "oon_tweet_ntab_dislike_count_threshold", - default = 10000.0, - min = 0.0, - max = 10000.0 - ) - object TweetNtabDislikeRateThresholdParam - extends FSBoundedParam[Double]( - name = "oon_tweet_ntab_dislike_rate_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Param for tweet language feature name - */ - object TweetLanguageFeatureNameParam - extends FSParam[String]( - name = "language_tweet_language_feature_name", - default = "tweet.language.tweet.identified") - - /** - * Threshold for user inferred language filtering - */ - object UserInferredLanguageThresholdParam - extends FSBoundedParam[Double]( - name = "language_user_inferred_language_threshold", - default = 0.0, - min = 0.0, - max = 1.0 - ) - - /** - * Threshold for user device language filtering - */ - object UserDeviceLanguageThresholdParam - extends FSBoundedParam[Double]( - name = "language_user_device_language_threshold", - default = 0.0, - min = 0.0, - max = 1.0 - ) - - /** - * Param to enable/disable tweet language filter - */ - object EnableTweetLanguageFilter - extends FSParam[Boolean]( - name = "language_enable_tweet_language_filter", - default = false - ) - - /** - * Param to skip language filter for media tweets - */ - object SkipLanguageFilterForMediaTweets - extends FSParam[Boolean]( - name = "language_skip_language_filter_for_media_tweets", - default = false - ) - - /* - * Tweet Ntab-dislike predicate related params for MrTwistly - */ - object TweetNtabDislikeCountThresholdForMrTwistlyParam - extends FSBoundedParam[Double]( - name = "oon_tweet_ntab_dislike_count_threshold_for_mrtwistly", - default = 10000.0, - min = 0.0, - max = 10000.0 - ) - object TweetNtabDislikeRateThresholdForMrTwistlyParam - extends FSBoundedParam[Double]( - name = "oon_tweet_ntab_dislike_rate_threshold_for_mrtwistly", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - object TweetNtabDislikeCountBucketThresholdParam - extends FSBoundedParam[Double]( - name = "oon_tweet_ntab_dislike_count_bucket_threshold", - default = 10.0, - min = 0.0, - max = 10000.0 - ) - - /* - * Tweet engagement ratio predicate related params - */ - object TweetQTtoNtabClickRatioThresholdParam - extends FSBoundedParam[Double]( - name = "oon_tweet_engagement_filter_qt_to_ntabclick_ratio_threshold", - default = 0.0, - min = 0.0, - max = 100000.0 - ) - - /** - * Lower bound threshold to filter a tweet based on its reply to like ratio - */ - object TweetReplytoLikeRatioThresholdLowerBound - extends FSBoundedParam[Double]( - name = "oon_tweet_engagement_filter_reply_to_like_ratio_threshold_lower_bound", - default = Double.MaxValue, - min = 0.0, - max = Double.MaxValue - ) - - /** - * Upper bound threshold to filter a tweet based on its reply to like ratio - */ - object TweetReplytoLikeRatioThresholdUpperBound - extends FSBoundedParam[Double]( - name = "oon_tweet_engagement_filter_reply_to_like_ratio_threshold_upper_bound", - default = 0.0, - min = 0.0, - max = Double.MaxValue - ) - - /** - * Upper bound threshold to filter a tweet based on its reply to like ratio - */ - object TweetReplytoLikeRatioReplyCountThreshold - extends FSBoundedParam[Int]( - name = "oon_tweet_engagement_filter_reply_count_threshold", - default = Int.MaxValue, - min = 0, - max = Int.MaxValue - ) - - /* - * oonTweetLengthBasedPrerankingPredicate related params - */ - object OonTweetLengthPredicateUpdatedMediaLogic - extends FSParam[Boolean]( - name = "oon_quality_filter_tweet_length_updated_media_logic", - default = false - ) - - object OonTweetLengthPredicateUpdatedQuoteTweetLogic - extends FSParam[Boolean]( - name = "oon_quality_filter_tweet_length_updated_quote_tweet_logic", - default = false - ) - - object OonTweetLengthPredicateMoreStrictForUndefinedLanguages - extends FSParam[Boolean]( - name = "oon_quality_filter_tweet_length_more_strict_for_undefined_languages", - default = false - ) - - object EnablePrerankingTweetLengthPredicate - extends FSParam[Boolean]( - name = "oon_quality_filter_enable_preranking_filter", - default = false - ) - - /* - * LengthLanguageBasedOONTweetCandidatesQualityPredicate related params - */ - object SautOonWithMediaTweetLengthThresholdParam - extends FSBoundedParam[Double]( - name = "oon_quality_filter_tweet_length_threshold_for_saut_oon_with_media", - default = 0.0, - min = 0.0, - max = 70.0 - ) - object NonSautOonWithMediaTweetLengthThresholdParam - extends FSBoundedParam[Double]( - name = "oon_quality_filter_tweet_length_threshold_for_non_saut_oon_with_media", - default = 0.0, - min = 0.0, - max = 70.0 - ) - object SautOonWithoutMediaTweetLengthThresholdParam - extends FSBoundedParam[Double]( - name = "oon_quality_filter_tweet_length_threshold_for_saut_oon_without_media", - default = 0.0, - min = 0.0, - max = 70.0 - ) - object NonSautOonWithoutMediaTweetLengthThresholdParam - extends FSBoundedParam[Double]( - name = "oon_quality_filter_tweet_length_threshold_for_non_saut_oon_without_media", - default = 0.0, - min = 0.0, - max = 70.0 - ) - - object ArgfOonWithMediaTweetWordLengthThresholdParam - extends FSBoundedParam[Double]( - name = "oon_quality_filter_tweet_word_length_threshold_for_argf_oon_with_media", - default = 0.0, - min = 0.0, - max = 18.0 - ) - object EsfthOonWithMediaTweetWordLengthThresholdParam - extends FSBoundedParam[Double]( - name = "oon_quality_filter_tweet_word_length_threshold_for_esfth_oon_with_media", - default = 0.0, - min = 0.0, - max = 10.0 - ) - - /** - * Param to enable/disable sentiment feature hydration - */ - object EnableMrTweetSentimentFeatureHydrationFS - extends FSParam[Boolean]( - name = "feature_hydration_enable_mr_tweet_sentiment_feature", - default = false - ) - - /** - * Param to enable/disable feature map scribing for staging test log - */ - object EnableMrScribingMLFeaturesAsFeatureMapForStaging - extends FSParam[Boolean]( - name = "frigate_pushservice_enable_scribing_ml_features_as_featuremap_for_staging", - default = false - ) - - /** - * Param to enable timeline health signal hydration - * */ - object EnableTimelineHealthSignalHydration - extends FSParam[Boolean]( - name = "timeline_health_signal_hydration", - default = false - ) - - /** - * Param to enable timeline health signal hydration for model training - * */ - object EnableTimelineHealthSignalHydrationForModelTraining - extends FSParam[Boolean]( - name = "timeline_health_signal_hydration_for_model_training", - default = false - ) - - /** - * Param to enable/disable mr user social context agg feature hydration - */ - object EnableMrUserSocialContextAggregateFeatureHydration - extends FSParam[Boolean]( - name = "frigate_push_modeling_hydrate_mr_user_social_context_agg_feature", - default = true - ) - - /** - * Param to enable/disable mr user semantic core agg feature hydration - */ - object EnableMrUserSemanticCoreAggregateFeatureHydration - extends FSParam[Boolean]( - name = "frigate_push_modeling_hydrate_mr_user_semantic_core_agg_feature", - default = true - ) - - /** - * Param to enable/disable mr user candidate sparse agg feature hydration - */ - object EnableMrUserCandidateSparseOfflineAggregateFeatureHydration - extends FSParam[Boolean]( - name = "frigate_push_modeling_hydrate_mr_user_candidate_sparse_agg_feature", - default = true - ) - - /** - * Param to enable/disable mr user candidate agg feature hydration - */ - object EnableMrUserCandidateOfflineAggregateFeatureHydration - extends FSParam[Boolean]( - name = "frigate_push_modeling_hydrate_mr_user_candidate_agg_feature", - default = true - ) - - /** - * Param to enable/disable mr user candidate compact agg feature hydration - */ - object EnableMrUserCandidateOfflineCompactAggregateFeatureHydration - extends FSParam[Boolean]( - name = "frigate_push_modeling_hydrate_mr_user_candidate_compact_agg_feature", - default = false - ) - - /** - * Param to enable/disable mr real graph user-author/social-context feature hydration - */ - object EnableRealGraphUserAuthorAndSocialContxtFeatureHydration - extends FSParam[Boolean]( - name = "frigate_push_modeling_hydrate_real_graph_user_social_feature", - default = true - ) - - /** - * Param to enable/disable mr user author agg feature hydration - */ - object EnableMrUserAuthorOfflineAggregateFeatureHydration - extends FSParam[Boolean]( - name = "frigate_push_modeling_hydrate_mr_user_author_agg_feature", - default = true - ) - - /** - * Param to enable/disable mr user author compact agg feature hydration - */ - object EnableMrUserAuthorOfflineCompactAggregateFeatureHydration - extends FSParam[Boolean]( - name = "frigate_push_modeling_hydrate_mr_user_author_compact_agg_feature", - default = false - ) - - /** - * Param to enable/disable mr user compact agg feature hydration - */ - object EnableMrUserOfflineCompactAggregateFeatureHydration - extends FSParam[Boolean]( - name = "frigate_push_modeling_hydrate_mr_user_compact_agg_feature", - default = false - ) - - /** - * Param to enable/disable mr user simcluster agg feature hydration - */ - object EnableMrUserSimcluster2020AggregateFeatureHydration - extends FSParam[Boolean]( - name = "frigate_push_modeling_hydrate_mr_user_simcluster_agg_feature", - default = true - ) - - /** - * Param to enable/disable mr user agg feature hydration - */ - object EnableMrUserOfflineAggregateFeatureHydration - extends FSParam[Boolean]( - name = "frigate_push_modeling_hydrate_mr_user_agg_feature", - default = true - ) - - /** - * Param to enable/disable topic engagement RTA in the ranking model - */ - object EnableTopicEngagementRealTimeAggregatesFS - extends FSParam[Boolean]( - "feature_hydration_enable_htl_topic_engagement_real_time_agg_feature", - false) - - /* - * Param to enable mr user semantic core feature hydration for heavy ranker - * */ - object EnableMrUserSemanticCoreFeatureForExpt - extends FSParam[Boolean]( - name = "frigate_push_modeling_hydrate_mr_user_semantic_core", - default = false) - - /** - * Param to enable hydrating user duration since last visit features - */ - object EnableHydratingUserDurationSinceLastVisitFeatures - extends FSParam[Boolean]( - name = "feature_hydration_user_duration_since_last_visit", - default = false) - - /** - Param to enable/disable user-topic aggregates in the ranking model - */ - object EnableUserTopicAggregatesFS - extends FSParam[Boolean]("feature_hydration_enable_htl_topic_user_agg_feature", false) - - /* - * PNegMultimodalPredicate related params - */ - object EnablePNegMultimodalPredicateParam - extends FSParam[Boolean]( - name = "pneg_multimodal_filter_enable_param", - default = false - ) - object PNegMultimodalPredicateModelThresholdParam - extends FSBoundedParam[Double]( - name = "pneg_multimodal_filter_model_threshold_param", - default = 1.0, - min = 0.0, - max = 1.0 - ) - object PNegMultimodalPredicateBucketThresholdParam - extends FSBoundedParam[Double]( - name = "pneg_multimodal_filter_bucket_threshold_param", - default = 0.4, - min = 0.0, - max = 1.0 - ) - - /* - * NegativeKeywordsPredicate related params - */ - object EnableNegativeKeywordsPredicateParam - extends FSParam[Boolean]( - name = "negative_keywords_filter_enable_param", - default = false - ) - object NegativeKeywordsPredicateDenylist - extends FSParam[Seq[String]]( - name = "negative_keywords_filter_denylist", - default = Seq.empty[String] - ) - /* - * LightRanking related params - */ - object EnableLightRankingParam - extends FSParam[Boolean]( - name = "light_ranking_enable_param", - default = false - ) - object LightRankingNumberOfCandidatesParam - extends FSBoundedParam[Int]( - name = "light_ranking_number_of_candidates_param", - default = 100, - min = 0, - max = 1000 - ) - object LightRankingModelTypeParam - extends FSParam[String]( - name = "light_ranking_model_type_param", - default = "WeightedOpenOrNtabClickProbability_Q4_2021_13172_Mr_Light_Ranker_Dbv2_Top3") - object EnableRandomBaselineLightRankingParam - extends FSParam[Boolean]( - name = "light_ranking_random_baseline_enable_param", - default = false - ) - - object LightRankingScribeCandidatesDownSamplingParam - extends FSBoundedParam[Double]( - name = "light_ranking_scribe_candidates_down_sampling_param", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /* - * Quality Upranking related params - */ - object EnableProducersQualityBoostingForHeavyRankingParam - extends FSParam[Boolean]( - name = "quality_upranking_enable_producers_quality_boosting_for_heavy_ranking_param", - default = false - ) - - object QualityUprankingBoostForHighQualityProducersParam - extends FSBoundedParam[Double]( - name = "quality_upranking_boost_for_high_quality_producers_param", - default = 1.0, - min = 0.0, - max = 10000.0 - ) - - object QualityUprankingDownboostForLowQualityProducersParam - extends FSBoundedParam[Double]( - name = "quality_upranking_downboost_for_low_quality_producers_param", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - object EnableQualityUprankingForHeavyRankingParam - extends FSParam[Boolean]( - name = "quality_upranking_enable_for_heavy_ranking_param", - default = false - ) - object QualityUprankingModelTypeParam - extends FSParam[WeightedOpenOrNtabClickModel.ModelNameType]( - name = "quality_upranking_model_id", - default = "Q4_2022_Mr_Bqml_Quality_Model_wALL" - ) - object QualityUprankingTransformTypeParam - extends FSEnumParam[MrQualityUprankingTransformTypeEnum.type]( - name = "quality_upranking_transform_id", - default = MrQualityUprankingTransformTypeEnum.Sigmoid, - enum = MrQualityUprankingTransformTypeEnum - ) - - object QualityUprankingBoostForHeavyRankingParam - extends FSBoundedParam[Double]( - name = "quality_upranking_boost_for_heavy_ranking_param", - default = 1.0, - min = -10.0, - max = 10.0 - ) - object QualityUprankingSigmoidBiasForHeavyRankingParam - extends FSBoundedParam[Double]( - name = "quality_upranking_sigmoid_bias_for_heavy_ranking_param", - default = 0.0, - min = -10.0, - max = 10.0 - ) - object QualityUprankingSigmoidWeightForHeavyRankingParam - extends FSBoundedParam[Double]( - name = "quality_upranking_sigmoid_weight_for_heavy_ranking_param", - default = 1.0, - min = -10.0, - max = 10.0 - ) - object QualityUprankingLinearBarForHeavyRankingParam - extends FSBoundedParam[Double]( - name = "quality_upranking_linear_bar_for_heavy_ranking_param", - default = 1.0, - min = 0.0, - max = 10.0 - ) - object EnableQualityUprankingCrtScoreStatsForHeavyRankingParam - extends FSParam[Boolean]( - name = "quality_upranking_enable_crt_score_stats_for_heavy_ranking_param", - default = false - ) - /* - * BQML Health Model related params - */ - object EnableBqmlHealthModelPredicateParam - extends FSParam[Boolean]( - name = "bqml_health_model_filter_enable_param", - default = false - ) - - object EnableBqmlHealthModelPredictionForInNetworkCandidatesParam - extends FSParam[Boolean]( - name = "bqml_health_model_enable_prediction_for_in_network_candidates_param", - default = false - ) - - object BqmlHealthModelTypeParam - extends FSParam[HealthNsfwModel.ModelNameType]( - name = "bqml_health_model_id", - default = HealthNsfwModel.Q2_2022_Mr_Bqml_Health_Model_NsfwV0 - ) - object BqmlHealthModelPredicateFilterThresholdParam - extends FSBoundedParam[Double]( - name = "bqml_health_model_filter_threshold_param", - default = 1.0, - min = 0.0, - max = 1.0 - ) - object BqmlHealthModelPredicateBucketThresholdParam - extends FSBoundedParam[Double]( - name = "bqml_health_model_bucket_threshold_param", - default = 0.005, - min = 0.0, - max = 1.0 - ) - - object EnableBqmlHealthModelScoreHistogramParam - extends FSParam[Boolean]( - name = "bqml_health_model_score_histogram_enable_param", - default = false - ) - - /* - * BQML Quality Model related params - */ - object EnableBqmlQualityModelPredicateParam - extends FSParam[Boolean]( - name = "bqml_quality_model_filter_enable_param", - default = false - ) - object EnableBqmlQualityModelScoreHistogramParam - extends FSParam[Boolean]( - name = "bqml_quality_model_score_histogram_enable_param", - default = false - ) - object BqmlQualityModelTypeParam - extends FSParam[WeightedOpenOrNtabClickModel.ModelNameType]( - name = "bqml_quality_model_id", - default = "Q1_2022_13562_Mr_Bqml_Quality_Model_V2" - ) - - /** - * Param to specify which quality models to use to get the scores for determining - * whether to bucket a user for the DDG - */ - object BqmlQualityModelBucketModelIdListParam - extends FSParam[Seq[WeightedOpenOrNtabClickModel.ModelNameType]]( - name = "bqml_quality_model_bucket_model_id_list", - default = Seq( - "Q1_2022_13562_Mr_Bqml_Quality_Model_V2", - "Q2_2022_DDG14146_Mr_Personalised_BQML_Quality_Model", - "Q2_2022_DDG14146_Mr_NonPersonalised_BQML_Quality_Model" - ) - ) - - object BqmlQualityModelPredicateThresholdParam - extends FSBoundedParam[Double]( - name = "bqml_quality_model_filter_threshold_param", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Param to specify the threshold to determine if a user’s quality score is high enough to enter the experiment. - */ - object BqmlQualityModelBucketThresholdListParam - extends FSParam[Seq[Double]]( - name = "bqml_quality_model_bucket_threshold_list", - default = Seq(0.7, 0.7, 0.7) - ) - - /* - * TweetAuthorAggregates related params - */ - object EnableTweetAuthorAggregatesFeatureHydrationParam - extends FSParam[Boolean]( - name = "tweet_author_aggregates_feature_hydration_enable_param", - default = false - ) - - /** - * Param to determine if we should include the relevancy score of candidates in the Ibis payload - */ - object IncludeRelevanceScoreInIbis2Payload - extends FSParam[Boolean]( - name = "relevance_score_include_in_ibis2_payload", - default = false - ) - - /** - * Param to specify supervised model to predict score by sending the notification - */ - object BigFilteringSupervisedSendingModelParam - extends FSParam[BigFilteringSupervisedModel.ModelNameType]( - name = "ltv_filtering_bigfiltering_supervised_sending_model_param", - default = BigFilteringSupervisedModel.V0_0_BigFiltering_Supervised_Sending_Model - ) - - /** - * Param to specify supervised model to predict score by not sending the notification - */ - object BigFilteringSupervisedWithoutSendingModelParam - extends FSParam[BigFilteringSupervisedModel.ModelNameType]( - name = "ltv_filtering_bigfiltering_supervised_without_sending_model_param", - default = BigFilteringSupervisedModel.V0_0_BigFiltering_Supervised_Without_Sending_Model - ) - - /** - * Param to specify RL model to predict score by sending the notification - */ - object BigFilteringRLSendingModelParam - extends FSParam[BigFilteringSupervisedModel.ModelNameType]( - name = "ltv_filtering_bigfiltering_rl_sending_model_param", - default = BigFilteringRLModel.V0_0_BigFiltering_Rl_Sending_Model - ) - - /** - * Param to specify RL model to predict score by not sending the notification - */ - object BigFilteringRLWithoutSendingModelParam - extends FSParam[BigFilteringSupervisedModel.ModelNameType]( - name = "ltv_filtering_bigfiltering_rl_without_sending_model_param", - default = BigFilteringRLModel.V0_0_BigFiltering_Rl_Without_Sending_Model - ) - - /** - * Param to specify the threshold (send notification if score >= threshold) - */ - object BigFilteringThresholdParam - extends FSBoundedParam[Double]( - name = "ltv_filtering_bigfiltering_threshold_param", - default = 0.0, - min = Double.MinValue, - max = Double.MaxValue - ) - - /** - * Param to specify normalization used for BigFiltering - */ - object BigFilteringNormalizationTypeIdParam - extends FSEnumParam[BigFilteringNormalizationEnum.type]( - name = "ltv_filtering_bigfiltering_normalization_type_id", - default = BigFilteringNormalizationEnum.NormalizationDisabled, - enum = BigFilteringNormalizationEnum - ) - - /** - * Param to specify histograms of model scores in BigFiltering - */ - object BigFilteringEnableHistogramsParam - extends FSParam[Boolean]( - name = "ltv_filtering_bigfiltering_enable_histograms_param", - default = false - ) - - /* - * Param to enable sending requests to Ins Sender - */ - object EnableInsSender extends FSParam[Boolean](name = "ins_enable_dark_traffic", default = false) - - /** - * Param to specify the range of relevance scores for MagicFanout types. - */ - object MagicFanoutRelevanceScoreRange - extends FSParam[Seq[Double]]( - name = "relevance_score_mf_range", - default = Seq(0.75, 1.0) - ) - - /** - * Param to specify the range of relevance scores for MR types. - */ - object MagicRecsRelevanceScoreRange - extends FSParam[Seq[Double]]( - name = "relevance_score_mr_range", - default = Seq(0.25, 0.5) - ) - - /** - * Param to enable backfilling OON candidates if number of F1 candidates is greater than a threshold K. - */ - object EnableOONBackfillBasedOnF1Candidates - extends FSParam[Boolean](name = "oon_enable_backfill_based_on_f1", default = false) - - /** - * Threshold for the minimum number of F1 candidates required to enable backfill of OON candidates. - */ - object NumberOfF1CandidatesThresholdForOONBackfill - extends FSBoundedParam[Int]( - name = "oon_enable_backfill_f1_threshold", - min = 0, - default = 5000, - max = 5000) - - /** - * Event ID allowlist to skip account country predicate - */ - object MagicFanoutEventAllowlistToSkipAccountCountryPredicate - extends FSParam[Seq[Long]]( - name = "magicfanout_event_allowlist_skip_account_country_predicate", - default = Seq.empty[Long] - ) - - /** - * MagicFanout Event Semantic Core Domain Ids - */ - object ListOfEventSemanticCoreDomainIds - extends FSParam[Seq[Long]]( - name = "magicfanout_automated_events_semantic_core_domain_ids", - default = Seq()) - - /** - * Adhoc id for detailed rank flow stats - */ - object ListOfAdhocIdsForStatsTracking - extends FSParam[Set[Long]]( - name = "stats_enable_detailed_stats_tracking_ids", - default = Set.empty[Long] - ) - - object EnableGenericCRTBasedFatiguePredicate - extends FSParam[Boolean]( - name = "seelessoften_enable_generic_crt_based_fatigue_predicate", - default = false) - - /** - * Param to enable copy features such as Emojis and Target Name - */ - object EnableCopyFeaturesForF1 - extends FSParam[Boolean](name = "mr_copy_enable_features_f1", default = false) - - /** - * Param to enable copy features such as Emojis and Target Name - */ - object EnableCopyFeaturesForOon - extends FSParam[Boolean](name = "mr_copy_enable_features_oon", default = false) - - /** - * Param to enable Emoji in F1 Copy - */ - object EnableEmojiInF1Copy - extends FSParam[Boolean](name = "mr_copy_enable_f1_emoji", default = false) - - /** - * Param to enable Target in F1 Copy - */ - object EnableTargetInF1Copy - extends FSParam[Boolean](name = "mr_copy_enable_f1_target", default = false) - - /** - * Param to enable Emoji in OON Copy - */ - object EnableEmojiInOonCopy - extends FSParam[Boolean](name = "mr_copy_enable_oon_emoji", default = false) - - /** - * Param to enable Target in OON Copy - */ - object EnableTargetInOonCopy - extends FSParam[Boolean](name = "mr_copy_enable_oon_target", default = false) - - /** - * Param to enable split fatigue for Target and Emoji copy for OON and F1 - */ - object EnableTargetAndEmojiSplitFatigue - extends FSParam[Boolean](name = "mr_copy_enable_target_emoji_split_fatigue", default = false) - - /** - * Param to enable experimenting string on the body - */ - object EnableF1CopyBody extends FSParam[Boolean](name = "mr_copy_f1_enable_body", default = false) - - object EnableOONCopyBody - extends FSParam[Boolean](name = "mr_copy_oon_enable_body", default = false) - - object EnableIosCopyBodyTruncate - extends FSParam[Boolean](name = "mr_copy_enable_body_truncate", default = false) - - object EnableNsfwCopy extends FSParam[Boolean](name = "mr_copy_enable_nsfw", default = false) - - /** - * Param to determine F1 candidate nsfw score threshold - */ - object NsfwScoreThresholdForF1Copy - extends FSBoundedParam[Double]( - name = "mr_copy_nsfw_threshold_f1", - default = 0.3, - min = 0.0, - max = 1.0 - ) - - /** - * Param to determine OON candidate nsfw score threshold - */ - object NsfwScoreThresholdForOONCopy - extends FSBoundedParam[Double]( - name = "mr_copy_nsfw_threshold_oon", - default = 0.2, - min = 0.0, - max = 1.0 - ) - - /** - * Param to determine the lookback duration when searching for prev copy features. - */ - object CopyFeaturesHistoryLookbackDuration - extends FSBoundedParam[Duration]( - name = "mr_copy_history_lookback_duration_in_days", - default = 30.days, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Param to determine the F1 emoji copy fatigue in # of hours. - */ - object F1EmojiCopyFatigueDuration - extends FSBoundedParam[Duration]( - name = "mr_copy_f1_emoji_copy_fatigue_in_hours", - default = 24.hours, - min = 0.hours, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to determine the F1 target copy fatigue in # of hours. - */ - object F1TargetCopyFatigueDuration - extends FSBoundedParam[Duration]( - name = "mr_copy_f1_target_copy_fatigue_in_hours", - default = 24.hours, - min = 0.hours, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to determine the OON emoji copy fatigue in # of hours. - */ - object OonEmojiCopyFatigueDuration - extends FSBoundedParam[Duration]( - name = "mr_copy_oon_emoji_copy_fatigue_in_hours", - default = 24.hours, - min = 0.hours, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to determine the OON target copy fatigue in # of hours. - */ - object OonTargetCopyFatigueDuration - extends FSBoundedParam[Duration]( - name = "mr_copy_oon_target_copy_fatigue_in_hours", - default = 24.hours, - min = 0.hours, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to turn on/off home timeline based fatigue rule, where once last home timeline visit - * is larger than the specified will evalute to not fatigue - */ - object EnableHTLBasedFatigueBasicRule - extends FSParam[Boolean]( - name = "mr_copy_enable_htl_based_fatigue_basic_rule", - default = false) - - /** - * Param to determine f1 emoji copy fatigue in # of pushes - */ - object F1EmojiCopyNumOfPushesFatigue - extends FSBoundedParam[Int]( - name = "mr_copy_f1_emoji_copy_number_of_pushes_fatigue", - default = 0, - min = 0, - max = 200 - ) - - /** - * Param to determine oon emoji copy fatigue in # of pushes - */ - object OonEmojiCopyNumOfPushesFatigue - extends FSBoundedParam[Int]( - name = "mr_copy_oon_emoji_copy_number_of_pushes_fatigue", - default = 0, - min = 0, - max = 200 - ) - - /** - * If user haven't visited home timeline for certain duration, we will - * exempt user from feature copy fatigue. This param is used to control - * how long it is before we enter exemption. - */ - object MinFatigueDurationSinceLastHTLVisit - extends FSBoundedParam[Duration]( - name = "mr_copy_min_duration_since_last_htl_visit_hours", - default = Duration.Top, - min = 0.hour, - max = Duration.Top, - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * If a user haven't visit home timeline very long, the user will return - * to fatigue state under the home timeline based fatigue rule. There will - * only be a window, where the user is out of fatigue state under the rule. - * This param control the length of the non fatigue period. - */ - object LastHTLVisitBasedNonFatigueWindow - extends FSBoundedParam[Duration]( - name = "mr_copy_last_htl_visit_based_non_fatigue_window_hours", - default = 48.hours, - min = 0.hour, - max = Duration.Top, - ) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - object EnableOONCBasedCopy - extends FSParam[Boolean]( - name = "mr_copy_enable_oonc_based_copy", - default = false - ) - - object HighOONCThresholdForCopy - extends FSBoundedParam[Double]( - name = "mr_copy_high_oonc_threshold_for_copy", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - object LowOONCThresholdForCopy - extends FSBoundedParam[Double]( - name = "mr_copy_low_oonc_threshold_for_copy", - default = 0.0, - min = 0.0, - max = 1.0 - ) - - object EnableTweetTranslation - extends FSParam[Boolean](name = "tweet_translation_enable", default = false) - - object TripTweetCandidateReturnEnable - extends FSParam[Boolean](name = "trip_tweet_candidate_enable", default = false) - - object TripTweetCandidateSourceIds - extends FSParam[Seq[String]]( - name = "trip_tweet_candidate_source_ids", - default = Seq("TOP_GEO_V3")) - - object TripTweetMaxTotalCandidates - extends FSBoundedParam[Int]( - name = "trip_tweet_max_total_candidates", - default = 500, - min = 10, - max = 1000) - - object EnableEmptyBody - extends FSParam[Boolean](name = "push_presentation_enable_empty_body", default = false) - - object EnableSocialContextForRetweet - extends FSParam[Boolean](name = "push_presentation_social_context_retweet", default = false) - - /** - * Param to enable/disable simcluster feature hydration - */ - object EnableMrTweetSimClusterFeatureHydrationFS - extends FSParam[Boolean]( - name = "feature_hydration_enable_mr_tweet_simcluster_feature", - default = false - ) - - /** - * Param to disable OON candidates based on tweetAuthor - */ - object DisableOutNetworkTweetCandidatesFS - extends FSParam[Boolean](name = "oon_filtering_disable_oon_candidates", default = false) - - /** - * Param to enable Local Viral Tweets - */ - object EnableLocalViralTweets - extends FSParam[Boolean](name = "local_viral_tweets_enable", default = true) - - /** - * Param to enable Explore Video Tweets - */ - object EnableExploreVideoTweets - extends FSParam[Boolean](name = "explore_video_tweets_enable", default = false) - - /** - * Param to enable List Recommendations - */ - object EnableListRecommendations - extends FSParam[Boolean](name = "list_recommendations_enable", default = false) - - /** - * Param to enable IDS List Recommendations - */ - object EnableIDSListRecommendations - extends FSParam[Boolean](name = "list_recommendations_ids_enable", default = false) - - /** - * Param to enable PopGeo List Recommendations - */ - object EnablePopGeoListRecommendations - extends FSParam[Boolean](name = "list_recommendations_pop_geo_enable", default = false) - - /** - * Param to control the inverter for fatigue between consecutive ListRecommendations - */ - object ListRecommendationsPushInterval - extends FSBoundedParam[Duration]( - name = "list_recommendations_interval_days", - default = 24.hours, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromDays - } - - /** - * Param to control the granularity of GeoHash for ListRecommendations - */ - object ListRecommendationsGeoHashLength - extends FSBoundedParam[Int]( - name = "list_recommendations_geo_hash_length", - default = 5, - min = 3, - max = 5) - - /** - * Param to control maximum number of ListRecommendation pushes to receive in an interval - */ - object MaxListRecommendationsPushGivenInterval - extends FSBoundedParam[Int]( - name = "list_recommendations_push_given_interval", - default = 1, - min = 0, - max = 10 - ) - - /** - * Param to control the subscriber count for list recommendation - */ - object ListRecommendationsSubscriberCount - extends FSBoundedParam[Int]( - name = "list_recommendations_subscriber_count", - default = 0, - min = 0, - max = Integer.MAX_VALUE) - - /** - * Param to define dynamic inline action types for web notifications (both desktop web + mobile web) - */ - object LocalViralTweetsBucket - extends FSParam[String]( - name = "local_viral_tweets_bucket", - default = "high", - ) - - /** - * List of CrTags to disable - */ - object OONCandidatesDisabledCrTagParam - extends FSParam[Seq[String]]( - name = "oon_enable_oon_candidates_disabled_crtag", - default = Seq.empty[String] - ) - - /** - * List of Crt groups to disable - */ - object OONCandidatesDisabledCrtGroupParam - extends FSEnumSeqParam[CrtGroupEnum.type]( - name = "oon_enable_oon_candidates_disabled_crt_group_ids", - default = Seq.empty[CrtGroupEnum.Value], - enum = CrtGroupEnum - ) - - /** - * Param to enable launching video tweets in the Immersive Explore timeline - */ - object EnableLaunchVideosInImmersiveExplore - extends FSParam[Boolean](name = "launch_videos_in_immersive_explore", default = false) - - /** - * Param to enable Ntab Entries for Sports Event Notifications - */ - object EnableNTabEntriesForSportsEventNotifications - extends FSParam[Boolean]( - name = "magicfanout_sports_event_enable_ntab_entries", - default = false) - - /** - * Param to enable Ntab Facepiles for teams in Sport Notifs - */ - object EnableNTabFacePileForSportsEventNotifications - extends FSParam[Boolean]( - name = "magicfanout_sports_event_enable_ntab_facepiles", - default = false) - - /** - * Param to enable Ntab Override for Sports Event Notifications - */ - object EnableNTabOverrideForSportsEventNotifications - extends FSParam[Boolean]( - name = "magicfanout_sports_event_enable_ntab_override", - default = false) - - /** - * Param to control the interval for MF Product Launch Notifs - */ - object ProductLaunchPushIntervalInHours - extends FSBoundedParam[Duration]( - name = "product_launch_fatigue_push_interval_in_hours", - default = 24.hours, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the maximum number of MF Product Launch Notifs in a period of time - */ - object ProductLaunchMaxNumberOfPushesInInterval - extends FSBoundedParam[Int]( - name = "product_launch_fatigue_max_pushes_in_interval", - default = 1, - min = 0, - max = 10) - - /** - * Param to control the minInterval for fatigue between consecutive MF Product Launch Notifs - */ - object ProductLaunchMinIntervalFatigue - extends FSBoundedParam[Duration]( - name = "product_launch_fatigue_min_interval_consecutive_pushes_in_hours", - default = 24.hours, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the interval for MF New Creator Notifs - */ - object NewCreatorPushIntervalInHours - extends FSBoundedParam[Duration]( - name = "new_creator_fatigue_push_interval_in_hours", - default = 24.hours, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the maximum number of MF New Creator Notifs in a period of time - */ - object NewCreatorPushMaxNumberOfPushesInInterval - extends FSBoundedParam[Int]( - name = "new_creator_fatigue_max_pushes_in_interval", - default = 1, - min = 0, - max = 10) - - /** - * Param to control the minInterval for fatigue between consecutive MF New Creator Notifs - */ - object NewCreatorPushMinIntervalFatigue - extends FSBoundedParam[Duration]( - name = "new_creator_fatigue_min_interval_consecutive_pushes_in_hours", - default = 24.hours, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the interval for MF New Creator Notifs - */ - object CreatorSubscriptionPushIntervalInHours - extends FSBoundedParam[Duration]( - name = "creator_subscription_fatigue_push_interval_in_hours", - default = 24.hours, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to control the maximum number of MF New Creator Notifs in a period of time - */ - object CreatorSubscriptionPushMaxNumberOfPushesInInterval - extends FSBoundedParam[Int]( - name = "creator_subscription_fatigue_max_pushes_in_interval", - default = 1, - min = 0, - max = 10) - - /** - * Param to control the minInterval for fatigue between consecutive MF New Creator Notifs - */ - object CreatorSubscriptionPushhMinIntervalFatigue - extends FSBoundedParam[Duration]( - name = "creator_subscription_fatigue_min_interval_consecutive_pushes_in_hours", - default = 24.hours, - min = Duration.Bottom, - max = Duration.Top) - with HasDurationConversion { - override val durationConversion = DurationConversion.FromHours - } - - /** - * Param to define the landing page deeplink of product launch notifications - */ - object ProductLaunchLandingPageDeepLink - extends FSParam[String]( - name = "product_launch_landing_page_deeplink", - default = "" - ) - - /** - * Param to define the tap through of product launch notifications - */ - object ProductLaunchTapThrough - extends FSParam[String]( - name = "product_launch_tap_through", - default = "" - ) - - /** - * Param to skip checking isTargetBlueVerified - */ - object DisableIsTargetBlueVerifiedPredicate - extends FSParam[Boolean]( - name = "product_launch_disable_is_target_blue_verified_predicate", - default = false - ) - - /** - * Param to enable Ntab Entries for Sports Event Notifications - */ - object EnableNTabEntriesForProductLaunchNotifications - extends FSParam[Boolean](name = "product_launch_enable_ntab_entry", default = true) - - /** - * Param to skip checking isTargetLegacyVerified - */ - object DisableIsTargetLegacyVerifiedPredicate - extends FSParam[Boolean]( - name = "product_launch_disable_is_target_legacy_verified_predicate", - default = false - ) - - /** - * Param to enable checking isTargetSuperFollowCreator - */ - object EnableIsTargetSuperFollowCreatorPredicate - extends FSParam[Boolean]( - name = "product_launch_is_target_super_follow_creator_predicate_enabled", - default = false - ) - - /** - * Param to enable Spammy Tweet filter - */ - object EnableSpammyTweetFilter - extends FSParam[Boolean]( - name = "health_signal_store_enable_spammy_tweet_filter", - default = false) - - /** - * Param to enable Push to Home Android - */ - object EnableTweetPushToHomeAndroid - extends FSParam[Boolean](name = "push_to_home_tweet_recs_android", default = false) - - /** - * Param to enable Push to Home iOS - */ - object EnableTweetPushToHomeiOS - extends FSParam[Boolean](name = "push_to_home_tweet_recs_iOS", default = false) - - /** - * Param to set Spammy Tweet score threshold for OON candidates - */ - object SpammyTweetOonThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_spammy_tweet_oon_threshold", - default = 1.1, - min = 0.0, - max = 1.1 - ) - - object NumFollowerThresholdForHealthAndQualityFilters - extends FSBoundedParam[Double]( - name = "health_signal_store_num_follower_threshold_for_health_and_quality_filters", - default = 10000000000.0, - min = 0.0, - max = 10000000000.0 - ) - - object NumFollowerThresholdForHealthAndQualityFiltersPreranking - extends FSBoundedParam[Double]( - name = - "health_signal_store_num_follower_threshold_for_health_and_quality_filters_preranking", - default = 10000000.0, - min = 0.0, - max = 10000000000.0 - ) - - /** - * Param to set Spammy Tweet score threshold for IN candidates - */ - object SpammyTweetInThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_spammy_tweet_in_threshold", - default = 1.1, - min = 0.0, - max = 1.1 - ) - - /** - * Param to control bucketing for the Spammy Tweet score - */ - object SpammyTweetBucketingThreshold - extends FSBoundedParam[Double]( - name = "health_signal_store_spammy_tweet_bucketing_threshold", - default = 1.0, - min = 0.0, - max = 1.0 - ) - - /** - * Param to specify the maximum number of Explore Video Tweets to request - */ - object MaxExploreVideoTweets - extends FSBoundedParam[Int]( - name = "explore_video_tweets_max_candidates", - default = 100, - min = 0, - max = 500 - ) - - /** - * Param to enable social context feature set - */ - object EnableBoundedFeatureSetForSocialContext - extends FSParam[Boolean]( - name = "feature_hydration_user_social_context_bounded_feature_set_enable", - default = true) - - /** - * Param to enable stp user social context feature set - */ - object EnableStpBoundedFeatureSetForUserSocialContext - extends FSParam[Boolean]( - name = "feature_hydration_stp_social_context_bounded_feature_set_enable", - default = true) - - /** - * Param to enable core user history social context feature set - */ - object EnableCoreUserHistoryBoundedFeatureSetForSocialContext - extends FSParam[Boolean]( - name = "feature_hydration_core_user_history_social_context_bounded_feature_set_enable", - default = true) - - /** - * Param to enable skipping post-ranking filters - */ - object SkipPostRankingFilters - extends FSParam[Boolean]( - name = "frigate_push_modeling_skip_post_ranking_filters", - default = false) - - object MagicFanoutSimClusterDotProductNonHeavyUserThreshold - extends FSBoundedParam[Double]( - name = "frigate_push_magicfanout_simcluster_non_heavy_user_dot_product_threshold", - default = 0.0, - min = 0.0, - max = 100.0 - ) - - object MagicFanoutSimClusterDotProductHeavyUserThreshold - extends FSBoundedParam[Double]( - name = "frigate_push_magicfanout_simcluster_heavy_user_dot_product_threshold", - default = 10.0, - min = 0.0, - max = 100.0 - ) - - object EnableReducedFatigueRulesForSeeLessOften - extends FSParam[Boolean]( - name = "seelessoften_enable_reduced_fatigue", - default = false - ) -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushFeatureSwitches.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushFeatureSwitches.docx new file mode 100644 index 0000000000000000000000000000000000000000..e4833200d501cbe48b84c4f64c862bc8ea343c98 GIT binary patch literal 44294 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 I^yjz#0Y+g?$N&HU literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushFeatureSwitches.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushFeatureSwitches.scala deleted file mode 100644 index 96167c134..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushFeatureSwitches.scala +++ /dev/null @@ -1,751 +0,0 @@ -package com.twitter.frigate.pushservice.params - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.util.{FeatureSwitchParams => Common} -import com.twitter.frigate.pushservice.params.{PushFeatureSwitchParams => Pushservice} -import com.twitter.logging.Logger -import com.twitter.servo.decider.DeciderGateBuilder -import com.twitter.timelines.configapi.BaseConfigBuilder -import com.twitter.timelines.configapi.FeatureSwitchOverrideUtil -import com.twitter.timelines.configapi.decider.DeciderUtils - -case class PushFeatureSwitches( - deciderGateBuilder: DeciderGateBuilder, - statsReceiver: StatsReceiver) { - - private[this] val logger = Logger(classOf[PushFeatureSwitches]) - private[this] val stat = statsReceiver.scope("PushFeatureSwitches") - - private val booleanDeciderOverrides = DeciderUtils.getBooleanDeciderOverrides( - deciderGateBuilder, - PushParams.DisableAllRelevanceParam, - PushParams.DisableHeavyRankingParam, - PushParams.RestrictLightRankingParam, - PushParams.UTEGTweetCandidateSourceParam, - PushParams.EnableWritesToNotificationServiceParam, - PushParams.EnableWritesToNotificationServiceForAllEmployeesParam, - PushParams.EnableWritesToNotificationServiceForEveryoneParam, - PushParams.EnablePromptFeedbackFatigueResponseNoPredicate, - PushParams.EarlyBirdSCBasedCandidatesParam, - PushParams.MRTweetFavRecsParam, - PushParams.MRTweetRetweetRecsParam, - PushParams.EnablePushSendEventBus, - PushParams.DisableMlInFilteringParam, - PushParams.DownSampleLightRankingScribeCandidatesParam, - PushParams.EnableMrRequestScribing, - PushParams.EnableHighQualityCandidateScoresScribing, - PushParams.EnablePnegMultimodalPredictionForF1Tweets, - PushParams.EnableScribeOonFavScoreForF1Tweets, - PushParams.EnableMrUserSemanticCoreFeaturesHydration, - PushParams.EnableMrUserSemanticCoreNoZeroFeaturesHydration, - PushParams.EnableHtlOfflineUserAggregatesExtendedHydration, - PushParams.EnableNerErgFeatureHydration, - PushParams.EnableDaysSinceRecentResurrectionFeatureHydration, - PushParams.EnableUserPastAggregatesFeatureHydration, - PushParams.EnableMrUserSimclusterV2020FeaturesHydration, - PushParams.EnableMrUserSimclusterV2020NoZeroFeaturesHydration, - PushParams.EnableTopicEngagementRealTimeAggregatesFeatureHydration, - PushParams.EnableUserTopicAggregatesFeatureHydration, - PushParams.EnableHtlUserAuthorRTAFeaturesFromFeatureStoreHydration, - PushParams.EnableDurationSinceLastVisitFeatures, - PushParams.EnableTweetAnnotationFeaturesHydration, - PushParams.EnableSpaceVisibilityLibraryFiltering, - PushParams.EnableUserTopicFollowFeatureSetHydration, - PushParams.EnableOnboardingNewUserFeatureSetHydration, - PushParams.EnableMrUserAuthorSparseContFeatureSetHydration, - PushParams.EnableMrUserTopicSparseContFeatureSetHydration, - PushParams.EnableUserPenguinLanguageFeatureSetHydration, - PushParams.EnableMrUserHashspaceEmbeddingFeatureHydration, - PushParams.EnableMrUserEngagedTweetTokensFeatureHydration, - PushParams.EnableMrCandidateTweetTokensFeatureHydration, - PushParams.EnableMrTweetSentimentFeatureHydration, - PushParams.EnableMrTweetAuthorAggregatesFeatureHydration, - PushParams.EnableUserGeoFeatureSetHydration, - PushParams.EnableAuthorGeoFeatureSetHydration, - PushParams.EnableTwHINUserEngagementFeaturesHydration, - PushParams.EnableTwHINUserFollowFeaturesHydration, - PushParams.EnableTwHINAuthorFollowFeaturesHydration, - PushParams.EnableAuthorFollowTwhinEmbeddingFeatureHydration, - PushParams.RampupUserGeoFeatureSetHydration, - PushParams.RampupAuthorGeoFeatureSetHydration, - PushParams.EnablePredicateDetailedInfoScribing, - PushParams.EnablePushCapInfoScribing, - PushParams.EnableUserSignalLanguageFeatureHydration, - PushParams.EnableUserPreferredLanguageFeatureHydration, - PushParams.PopGeoCandidatesDecider, - PushParams.TrendsCandidateDecider, - PushParams.EnableInsTrafficDecider, - PushParams.EnableModelBasedPushcapAssignments, - PushParams.TripGeoTweetCandidatesDecider, - PushParams.ContentRecommenderMixerAdaptorDecider, - PushParams.GenericCandidateAdaptorDecider, - PushParams.TripGeoTweetContentMixerDarkTrafficDecider, - PushParams.EnableIsTweetTranslatableCheck, - PushParams.EnableMrTweetSimClusterFeatureHydration, - PushParams.EnableTwistlyAggregatesFeatureHydration, - PushParams.EnableTweetTwHINFavFeatureHydration, - PushParams.EnableRealGraphV2FeatureHydration, - PushParams.EnableTweetBeTFeatureHydration, - PushParams.EnableMrOfflineUserTweetTopicAggregateHydration, - PushParams.EnableMrOfflineUserTweetSimClusterAggregateHydration, - PushParams.EnableUserSendTimeFeatureHydration, - PushParams.EnableMrUserUtcSendTimeAggregateFeaturesHydration, - PushParams.EnableMrUserLocalSendTimeAggregateFeaturesHydration, - PushParams.EnableBqmlReportModelPredictionForF1Tweets, - PushParams.EnableUserTwhinEmbeddingFeatureHydration, - PushParams.EnableScribingMLFeaturesAsDataRecord, - PushParams.EnableAuthorVerifiedFeatureHydration, - PushParams.EnableAuthorCreatorSubscriptionFeatureHydration, - PushParams.EnableDirectHydrationForUserFeatures - ) - - private val intFeatureSwitchOverrides = FeatureSwitchOverrideUtil.getBoundedIntFSOverrides( - Pushservice.SportsMaxNumberOfPushesInIntervalPerEvent, - Pushservice.SportsMaxNumberOfPushesInInterval, - Pushservice.PushMixerMaxResults, - Pushservice.MaxTrendTweetNotificationsInDuration, - Pushservice.MaxRecommendedTrendsToQuery, - Pushservice.NumberOfMaxEarlybirdInNetworkCandidatesParam, - Pushservice.NumberOfMaxCandidatesToBatchInRFPHTakeStep, - Pushservice.MaxMrPushSends24HoursParam, - Pushservice.MaxMrPushSends24HoursNtabOnlyUsersParam, - Pushservice.NumberOfMaxCrMixerCandidatesParam, - Pushservice.RestrictStepSize, - Pushservice.MagicFanoutRankErgThresholdHeavy, - Pushservice.MagicFanoutRankErgThresholdNonHeavy, - Pushservice.MagicFanoutRelaxedEventIdFatigueIntervalInHours, - Pushservice.NumberOfMaxUTEGCandidatesQueriedParam, - Pushservice.HTLVisitFatigueTime, - Pushservice.MaxOnboardingPushInInterval, - Pushservice.MaxTopTweetsByGeoPushGivenInterval, - Pushservice.MaxHighQualityTweetsPushGivenInterval, - Pushservice.MaxTopTweetsByGeoCandidatesToTake, - Pushservice.SpaceRecsRealgraphThreshold, - Pushservice.SpaceRecsGlobalPushLimit, - Pushservice.OptoutExptPushCapParam, - Pushservice.MaxTopTweetImpressionsNotifications, - Pushservice.TopTweetImpressionsMinRequired, - Pushservice.TopTweetImpressionsThreshold, - Pushservice.TopTweetImpressionsOriginalTweetsNumDaysSearch, - Pushservice.TopTweetImpressionsMinNumOriginalTweets, - Pushservice.TopTweetImpressionsMaxFavoritesPerTweet, - Pushservice.TopTweetImpressionsTotalInboundFavoritesLimit, - Pushservice.TopTweetImpressionsTotalFavoritesLimitNumDaysSearch, - Pushservice.TopTweetImpressionsRecentTweetsByAuthorStoreMaxResults, - Pushservice.ANNEfQuery, - Pushservice.NumberOfMaxMrModelingBasedCandidates, - Pushservice.ThresholdOfFavMrModelingBasedCandidates, - Pushservice.LightRankingNumberOfCandidatesParam, - Pushservice.NumberOfDeTopicTweetCandidates, - Pushservice.NumberOfMaxDeTopicTweetCandidatesReturned, - Pushservice.OverrideNotificationsMaxNumOfSlots, - Pushservice.OverrideNotificationsMaxCountForNTab, - Pushservice.MFMaxNumberOfPushesInInterval, - Pushservice.SpacesTopKSimClusterCount, - Pushservice.SpaceRecsSimClusterUserMinimumFollowerCount, - Pushservice.OONSpaceRecsPushLimit, - Pushservice.MagicFanoutRealgraphRankThreshold, - Pushservice.CustomizedPushCapOffset, - Pushservice.NumberOfF1CandidatesThresholdForOONBackfill, - Pushservice.MinimumAllowedAuthorAccountAgeInHours, - Pushservice.RestrictedMinModelPushcap, - Pushservice.ListRecommendationsGeoHashLength, - Pushservice.ListRecommendationsSubscriberCount, - Pushservice.MaxListRecommendationsPushGivenInterval, - Pushservice.SendTimeByUserHistoryMaxOpenedThreshold, - Pushservice.SendTimeByUserHistoryNoSendsHours, - Pushservice.SendTimeByUserHistoryQuickSendBeforeHours, - Pushservice.SendTimeByUserHistoryQuickSendAfterHours, - Pushservice.SendTimeByUserHistoryQuickSendMinDurationInMinute, - Pushservice.SendTimeByUserHistoryNoSendMinDuration, - Pushservice.F1EmojiCopyNumOfPushesFatigue, - Pushservice.OonEmojiCopyNumOfPushesFatigue, - Pushservice.TripTweetMaxTotalCandidates, - Pushservice.InlineFeedbackSubstitutePosition, - Pushservice.HighQualityCandidatesNumberOfCandidates, - Pushservice.HighQualityCandidatesMinNumOfCandidatesToFallback, - Pushservice.ProductLaunchMaxNumberOfPushesInInterval, - Pushservice.CreatorSubscriptionPushMaxNumberOfPushesInInterval, - Pushservice.NewCreatorPushMaxNumberOfPushesInInterval, - Pushservice.TweetReplytoLikeRatioReplyCountThreshold, - Pushservice.MaxExploreVideoTweets, - ) - - private val doubleFeatureSwitchOverrides = - FeatureSwitchOverrideUtil.getBoundedDoubleFSOverrides( - Pushservice.PercentileThresholdCohort1, - Pushservice.PercentileThresholdCohort2, - Pushservice.PercentileThresholdCohort3, - Pushservice.PercentileThresholdCohort4, - Pushservice.PercentileThresholdCohort5, - Pushservice.PercentileThresholdCohort6, - Pushservice.PnsfwTweetTextThreshold, - Pushservice.PnsfwTweetTextBucketingThreshold, - Pushservice.PnsfwTweetMediaThreshold, - Pushservice.PnsfwTweetImageThreshold, - Pushservice.PnsfwQuoteTweetThreshold, - Pushservice.PnsfwTweetMediaBucketingThreshold, - Pushservice.AgathaCalibratedNSFWThreshold, - Pushservice.AgathaCalibratedNSFWThresholdForMrTwistly, - Pushservice.AgathaTextNSFWThreshold, - Pushservice.AgathaTextNSFWThresholdForMrTwistly, - Pushservice.AgathaCalibratedNSFWBucketThreshold, - Pushservice.AgathaTextNSFWBucketThreshold, - Pushservice.BucketOptoutThresholdParam, - Pushservice.TweetMediaSensitiveCategoryThresholdParam, - Pushservice.CandidateGenerationModelCosineThreshold, - Pushservice.MrModelingBasedCandidatesTopicScoreThreshold, - Pushservice.HashspaceCandidatesTopicScoreThreshold, - Pushservice.FrsTweetCandidatesTopicScoreThreshold, - Pushservice.TopicProofTweetCandidatesTopicScoreThreshold, - Pushservice.SpacesTargetingSimClusterDotProductThreshold, - Pushservice.SautOonWithMediaTweetLengthThresholdParam, - Pushservice.NonSautOonWithMediaTweetLengthThresholdParam, - Pushservice.SautOonWithoutMediaTweetLengthThresholdParam, - Pushservice.NonSautOonWithoutMediaTweetLengthThresholdParam, - Pushservice.ArgfOonWithMediaTweetWordLengthThresholdParam, - Pushservice.EsfthOonWithMediaTweetWordLengthThresholdParam, - Pushservice.BqmlQualityModelPredicateThresholdParam, - Pushservice.LightRankingScribeCandidatesDownSamplingParam, - Pushservice.QualityUprankingBoostForHeavyRankingParam, - Pushservice.QualityUprankingSigmoidBiasForHeavyRankingParam, - Pushservice.QualityUprankingSigmoidWeightForHeavyRankingParam, - Pushservice.QualityUprankingLinearBarForHeavyRankingParam, - Pushservice.QualityUprankingBoostForHighQualityProducersParam, - Pushservice.QualityUprankingDownboostForLowQualityProducersParam, - Pushservice.BqmlHealthModelPredicateFilterThresholdParam, - Pushservice.BqmlHealthModelPredicateBucketThresholdParam, - Pushservice.PNegMultimodalPredicateModelThresholdParam, - Pushservice.PNegMultimodalPredicateBucketThresholdParam, - Pushservice.SeeLessOftenF1TriggerF1PushCapWeight, - Pushservice.SeeLessOftenF1TriggerNonF1PushCapWeight, - Pushservice.SeeLessOftenNonF1TriggerF1PushCapWeight, - Pushservice.SeeLessOftenNonF1TriggerNonF1PushCapWeight, - Pushservice.SeeLessOftenTripHqTweetTriggerF1PushCapWeight, - Pushservice.SeeLessOftenTripHqTweetTriggerNonF1PushCapWeight, - Pushservice.SeeLessOftenTripHqTweetTriggerTripHqTweetPushCapWeight, - Pushservice.SeeLessOftenNtabOnlyNotifUserPushCapWeight, - Pushservice.PromptFeedbackF1TriggerF1PushCapWeight, - Pushservice.PromptFeedbackF1TriggerNonF1PushCapWeight, - Pushservice.PromptFeedbackNonF1TriggerF1PushCapWeight, - Pushservice.PromptFeedbackNonF1TriggerNonF1PushCapWeight, - Pushservice.InlineFeedbackF1TriggerF1PushCapWeight, - Pushservice.InlineFeedbackF1TriggerNonF1PushCapWeight, - Pushservice.InlineFeedbackNonF1TriggerF1PushCapWeight, - Pushservice.InlineFeedbackNonF1TriggerNonF1PushCapWeight, - Pushservice.TweetNtabDislikeCountThresholdParam, - Pushservice.TweetNtabDislikeRateThresholdParam, - Pushservice.TweetNtabDislikeCountThresholdForMrTwistlyParam, - Pushservice.TweetNtabDislikeRateThresholdForMrTwistlyParam, - Pushservice.TweetNtabDislikeCountBucketThresholdParam, - Pushservice.MinAuthorSendsThresholdParam, - Pushservice.MinTweetSendsThresholdParam, - Pushservice.AuthorDislikeRateThresholdParam, - Pushservice.AuthorReportRateThresholdParam, - Pushservice.FavOverSendThresholdParam, - Pushservice.SpreadControlRatioParam, - Pushservice.TweetQTtoNtabClickRatioThresholdParam, - Pushservice.TweetReplytoLikeRatioThresholdLowerBound, - Pushservice.TweetReplytoLikeRatioThresholdUpperBound, - Pushservice.AuthorSensitiveMediaFilteringThreshold, - Pushservice.AuthorSensitiveMediaFilteringThresholdForMrTwistly, - Pushservice.MrRequestScribingEpsGreedyExplorationRatio, - Pushservice.SeeLessOftenTopicTriggerTopicPushCapWeight, - Pushservice.SeeLessOftenTopicTriggerF1PushCapWeight, - Pushservice.SeeLessOftenTopicTriggerOONPushCapWeight, - Pushservice.SeeLessOftenF1TriggerTopicPushCapWeight, - Pushservice.SeeLessOftenOONTriggerTopicPushCapWeight, - Pushservice.SeeLessOftenDefaultPushCapWeight, - Pushservice.OverrideMaxSlotFnWeight, - Pushservice.QualityPredicateExplicitThresholdParam, - Pushservice.AuthorSensitiveScoreWeightInReranking, - Pushservice.BigFilteringThresholdParam, - Pushservice.NsfwScoreThresholdForF1Copy, - Pushservice.NsfwScoreThresholdForOONCopy, - Pushservice.HighOONCThresholdForCopy, - Pushservice.LowOONCThresholdForCopy, - Pushservice.UserDeviceLanguageThresholdParam, - Pushservice.UserInferredLanguageThresholdParam, - Pushservice.SpammyTweetOonThreshold, - Pushservice.SpammyTweetInThreshold, - Pushservice.SpammyTweetBucketingThreshold, - Pushservice.NumFollowerThresholdForHealthAndQualityFilters, - Pushservice.NumFollowerThresholdForHealthAndQualityFiltersPreranking, - Pushservice.SoftRankFactorForSubscriptionCreators, - Pushservice.MagicFanoutSimClusterDotProductHeavyUserThreshold, - Pushservice.MagicFanoutSimClusterDotProductNonHeavyUserThreshold - ) - - private val doubleSeqFeatureSwitchOverrides = - FeatureSwitchOverrideUtil.getDoubleSeqFSOverrides( - Pushservice.MfGridSearchThresholdsCohort1, - Pushservice.MfGridSearchThresholdsCohort2, - Pushservice.MfGridSearchThresholdsCohort3, - Pushservice.MfGridSearchThresholdsCohort4, - Pushservice.MfGridSearchThresholdsCohort5, - Pushservice.MfGridSearchThresholdsCohort6, - Pushservice.MrPercentileGridSearchThresholdsCohort1, - Pushservice.MrPercentileGridSearchThresholdsCohort2, - Pushservice.MrPercentileGridSearchThresholdsCohort3, - Pushservice.MrPercentileGridSearchThresholdsCohort4, - Pushservice.MrPercentileGridSearchThresholdsCohort5, - Pushservice.MrPercentileGridSearchThresholdsCohort6, - Pushservice.GlobalOptoutThresholdParam, - Pushservice.BucketOptoutSlotThresholdParam, - Pushservice.BqmlQualityModelBucketThresholdListParam, - Pushservice.SeeLessOftenListOfDayKnobs, - Pushservice.SeeLessOftenListOfPushCapWeightKnobs, - Pushservice.SeeLessOftenListOfPowerKnobs, - Pushservice.PromptFeedbackListOfDayKnobs, - Pushservice.PromptFeedbackListOfPushCapWeightKnobs, - Pushservice.PromptFeedbackListOfPowerKnobs, - Pushservice.InlineFeedbackListOfDayKnobs, - Pushservice.InlineFeedbackListOfPushCapWeightKnobs, - Pushservice.InlineFeedbackListOfPowerKnobs, - Pushservice.OverrideMaxSlotFnPushCapKnobs, - Pushservice.OverrideMaxSlotFnPowerKnobs, - Pushservice.OverrideMaxSlotFnPushCapKnobs, - Pushservice.MagicRecsRelevanceScoreRange, - Pushservice.MagicFanoutRelevanceScoreRange, - Pushservice.MultilingualPnsfwTweetTextBucketingThreshold, - Pushservice.MultilingualPnsfwTweetTextFilteringThreshold, - ) - - private val booleanFeatureSwitchOverrides = FeatureSwitchOverrideUtil.getBooleanFSOverrides( - Pushservice.EnablePushRecommendationsParam, - Pushservice.DisableHeavyRankingModelFSParam, - Pushservice.EnablePushMixerReplacingAllSources, - Pushservice.EnablePushMixerReplacingAllSourcesWithControl, - Pushservice.EnablePushMixerReplacingAllSourcesWithExtra, - Pushservice.EnablePushMixerSource, - Common.EnableScheduledSpaceSpeakers, - Common.EnableScheduledSpaceSubscribers, - Pushservice.MagicFanoutNewsUserGeneratedEventsEnable, - Pushservice.MagicFanoutSkipAccountCountryPredicate, - Pushservice.MagicFanoutNewsEnableDescriptionCopy, - Pushservice.EnableF1TriggerSeeLessOftenFatigue, - Pushservice.EnableNonF1TriggerSeeLessOftenFatigue, - Pushservice.AdjustTripHqTweetTriggeredNtabCaretClickFatigue, - Pushservice.EnableCuratedTrendTweets, - Pushservice.EnableNonCuratedTrendTweets, - Pushservice.DisableMlInFilteringFeatureSwitchParam, - Pushservice.EnableTopicCopyForMF, - Pushservice.EnableTopicCopyForImplicitTopics, - Pushservice.EnableRestrictStep, - Pushservice.EnableHighPriorityPush, - Pushservice.BoostCandidatesFromSubscriptionCreators, - Pushservice.SoftRankCandidatesFromSubscriptionCreators, - Pushservice.EnableNewMROONCopyForPush, - Pushservice.EnableQueryAuthorMediaRepresentationStore, - Pushservice.EnableProfanityFilterParam, - Pushservice.EnableAbuseStrikeTop2PercentFilterSimCluster, - Pushservice.EnableAbuseStrikeTop1PercentFilterSimCluster, - Pushservice.EnableAbuseStrikeTop05PercentFilterSimCluster, - Pushservice.EnableAgathaUserHealthModelPredicate, - Pushservice.PnsfwTweetMediaFilterOonOnly, - Pushservice.EnableHealthSignalStorePnsfwTweetTextPredicate, - Pushservice.EnableHealthSignalStoreMultilingualPnsfwTweetTextPredicate, - Pushservice.DisableHealthFiltersForCrMixerCandidates, - Pushservice.EnableOverrideNotificationsForAndroid, - Pushservice.EnableOverrideNotificationsForIos, - Pushservice.EnableMrRequestScribingForTargetFiltering, - Pushservice.EnableMrRequestScribingForCandidateFiltering, - Pushservice.EnableMrRequestScribingWithFeatureHydrating, - Pushservice.EnableFlattenMrRequestScribing, - Pushservice.EnableMrRequestScribingForEpsGreedyExploration, - Pushservice.EnableMrRequestScribingDismissScore, - Pushservice.EnableMrRequestScribingBigFilteringSupervisedScores, - Pushservice.EnableMrRequestScribingBigFilteringRLScores, - Pushservice.EnableEventPrimaryMediaAndroid, - Pushservice.EnableEventSquareMediaIosMagicFanoutNewsEvent, - Pushservice.EnableEventSquareMediaAndroid, - Pushservice.EnableMagicFanoutNewsForYouNtabCopy, - Pushservice.EnableMfGeoTargeting, - Pushservice.EnableRuxLandingPage, - Pushservice.EnableNTabRuxLandingPage, - Pushservice.EnableGraduallyRampUpNotification, - Pushservice.EnableOnboardingPushes, - Pushservice.EnableAddressBookPush, - Pushservice.EnableCompleteOnboardingPush, - Pushservice.EnableOverrideNotificationsSmartPushConfigForAndroid, - Pushservice.DisableOnboardingPushFatigue, - Pushservice.EnableTopTweetsByGeoCandidates, - Pushservice.BackfillRankTopTweetsByGeoCandidates, - Pushservice.PopGeoTweetEnableAggressiveThresholds, - Pushservice.EnableMrMinDurationSinceMrPushFatigue, - Pushservice.EnableF1FromProtectedTweetAuthors, - Pushservice.MagicFanoutEnableCustomTargetingNewsEvent, - Pushservice.EnableSafeUserTweetTweetypieStore, - Pushservice.EnableMrMinDurationSinceMrPushFatigue, - Pushservice.EnableHydratingOnlineMRHistoryFeatures, - Common.SpaceRecsEnableHostNotifs, - Common.SpaceRecsEnableSpeakerNotifs, - Common.SpaceRecsEnableListenerNotifs, - Common.EnableMagicFanoutProductLaunch, - Pushservice.EnableTopTweetsByGeoCandidatesForDormantUsers, - Pushservice.EnableOverrideNotificationsScoreBasedOverride, - Pushservice.EnableOverrideNotificationsMultipleTargetIds, - Pushservice.EnableMinDurationModifier, - Pushservice.EnableMinDurationModifierV2, - Pushservice.EnableMinDurationModifierByUserHistory, - Pushservice.EnableQueryUserOpenedHistory, - Pushservice.EnableRandomHourForQuickSend, - Pushservice.EnableFrsCandidates, - Pushservice.EnableFrsTweetCandidatesTopicSetting, - Pushservice.EnableFrsTweetCandidatesTopicAnnotation, - Pushservice.EnableFrsTweetCandidatesTopicCopy, - Pushservice.EnableCandidateGenerationModelParam, - Pushservice.EnableOverrideForSportsCandidates, - Pushservice.EnableEventIdBasedOverrideForSportsCandidates, - Pushservice.EnableMrModelingBasedCandidates, - Pushservice.EnableMrModelingBasedCandidatesTopicSetting, - Pushservice.EnableMrModelingBasedCandidatesTopicAnnotation, - Pushservice.EnableMrModelingBasedCandidatesTopicCopy, - Pushservice.EnableResultFromFrsCandidates, - Pushservice.EnableHashspaceCandidates, - Pushservice.EnableHashspaceCandidatesTopicSetting, - Pushservice.EnableHashspaceCandidatesTopicAnnotation, - Pushservice.EnableHashspaceCandidatesTopicCopy, - Pushservice.EnableResultFromHashspaceCandidates, - Pushservice.EnableDownRankOfNewUserPlaybookTopicFollowPush, - Pushservice.EnableDownRankOfNewUserPlaybookTopicTweetPush, - Pushservice.EnableTopTweetImpressionsNotification, - Pushservice.EnableLightRankingParam, - Pushservice.EnableRandomBaselineLightRankingParam, - Pushservice.EnableQualityUprankingForHeavyRankingParam, - Pushservice.EnableQualityUprankingCrtScoreStatsForHeavyRankingParam, - Pushservice.EnableProducersQualityBoostingForHeavyRankingParam, - Pushservice.EnableMrScribingMLFeaturesAsFeatureMapForStaging, - Pushservice.EnableMrTweetSentimentFeatureHydrationFS, - Pushservice.EnableTimelineHealthSignalHydration, - Pushservice.EnableTopicEngagementRealTimeAggregatesFS, - Pushservice.EnableMrUserSemanticCoreFeatureForExpt, - Pushservice.EnableHydratingRealGraphTargetUserFeatures, - Pushservice.EnableHydratingUserDurationSinceLastVisitFeatures, - Pushservice.EnableRealGraphUserAuthorAndSocialContxtFeatureHydration, - Pushservice.EnableUserTopicAggregatesFS, - Pushservice.EnableTimelineHealthSignalHydrationForModelTraining, - Pushservice.EnableMrUserSocialContextAggregateFeatureHydration, - Pushservice.EnableMrUserSemanticCoreAggregateFeatureHydration, - Pushservice.EnableMrUserCandidateSparseOfflineAggregateFeatureHydration, - Pushservice.EnableMrUserCandidateOfflineAggregateFeatureHydration, - Pushservice.EnableMrUserCandidateOfflineCompactAggregateFeatureHydration, - Pushservice.EnableMrUserAuthorOfflineAggregateFeatureHydration, - Pushservice.EnableMrUserAuthorOfflineCompactAggregateFeatureHydration, - Pushservice.EnableMrUserOfflineCompactAggregateFeatureHydration, - Pushservice.EnableMrUserSimcluster2020AggregateFeatureHydration, - Pushservice.EnableMrUserOfflineAggregateFeatureHydration, - Pushservice.EnableBqmlQualityModelPredicateParam, - Pushservice.EnableBqmlQualityModelScoreHistogramParam, - Pushservice.EnableBqmlHealthModelPredicateParam, - Pushservice.EnableBqmlHealthModelPredictionForInNetworkCandidatesParam, - Pushservice.EnableBqmlHealthModelScoreHistogramParam, - Pushservice.EnablePNegMultimodalPredicateParam, - Pushservice.EnableNegativeKeywordsPredicateParam, - Pushservice.EnableTweetAuthorAggregatesFeatureHydrationParam, - Pushservice.OonTweetLengthPredicateUpdatedMediaLogic, - Pushservice.OonTweetLengthPredicateUpdatedQuoteTweetLogic, - Pushservice.OonTweetLengthPredicateMoreStrictForUndefinedLanguages, - Pushservice.EnablePrerankingTweetLengthPredicate, - Pushservice.EnableDeTopicTweetCandidates, - Pushservice.EnableDeTopicTweetCandidateResults, - Pushservice.EnableDeTopicTweetCandidatesCustomTopics, - Pushservice.EnableDeTopicTweetCandidatesCustomLanguages, - Pushservice.EnableMrTweetSimClusterFeatureHydrationFS, - Pushservice.DisableOutNetworkTweetCandidatesFS, - Pushservice.EnableLaunchVideosInImmersiveExplore, - Pushservice.EnableStoringNtabGenericNotifKey, - Pushservice.EnableDeletingNtabTimeline, - Pushservice.EnableOverrideNotificationsNSlots, - Pushservice.EnableNslotsForOverrideOnNtab, - Pushservice.EnableOverrideMaxSlotFn, - Pushservice.EnableTargetIdInSmartPushPayloadForMagicFanoutSportsEvent, - Pushservice.EnableOverrideIdNTabRequest, - Pushservice.EnableOverrideForSpaces, - Pushservice.EnableTopicProofTweetRecs, - Pushservice.EnableHealthFiltersForTopicProofTweet, - Pushservice.EnableTargetIdsInSmartPushPayload, - Pushservice.EnableSecondaryAccountPredicateMF, - Pushservice.EnableInlineVideo, - Pushservice.EnableAutoplayForInlineVideo, - Pushservice.EnableOONGeneratedInlineActions, - Pushservice.EnableInlineFeedbackOnPush, - Pushservice.UseInlineActionsV1, - Pushservice.UseInlineActionsV2, - Pushservice.EnableFeaturedSpacesOON, - Pushservice.CheckFeaturedSpaceOON, - Pushservice.EnableGeoTargetingForSpaces, - Pushservice.EnableEmployeeOnlySpaceNotifications, - Pushservice.EnableSpacesTtlForNtab, - Pushservice.EnableCustomThreadIdForOverride, - Pushservice.EnableSimClusterTargetingSpaces, - Pushservice.TargetInInlineActionAppVisitFatigue, - Pushservice.EnableInlineActionAppVisitFatigue, - Pushservice.EnableThresholdOfFavMrModelingBasedCandidates, - Pushservice.HydrateMrUserSimclusterV2020InModelingBasedCG, - Pushservice.HydrateMrUserSemanticCoreInModelingBasedCG, - Pushservice.HydrateOnboardingInModelingBasedCG, - Pushservice.HydrateTopicFollowInModelingBasedCG, - Pushservice.HydrateMrUserTopicInModelingBasedCG, - Pushservice.HydrateMrUserAuthorInModelingBasedCG, - Pushservice.HydrateUserPenguinLanguageInModelingBasedCG, - Pushservice.EnableMrUserEngagedTweetTokensFeature, - Pushservice.HydrateMrUserHashspaceEmbeddingInModelingBasedCG, - Pushservice.HydrateUseGeoInModelingBasedCG, - Pushservice.EnableSpaceCohostJoinEvent, - Pushservice.EnableOONFilteringBasedOnUserSettings, - Pushservice.EnableContFnF1TriggerSeeLessOftenFatigue, - Pushservice.EnableContFnNonF1TriggerSeeLessOftenFatigue, - Pushservice.EnableContFnF1TriggerPromptFeedbackFatigue, - Pushservice.EnableContFnNonF1TriggerPromptFeedbackFatigue, - Pushservice.EnableContFnF1TriggerInlineFeedbackFatigue, - Pushservice.EnableContFnNonF1TriggerInlineFeedbackFatigue, - Pushservice.UseInlineDislikeForFatigue, - Pushservice.UseInlineDismissForFatigue, - Pushservice.UseInlineSeeLessForFatigue, - Pushservice.UseInlineNotRelevantForFatigue, - Pushservice.GPEnableCustomMagicFanoutCricketFatigue, - Pushservice.IncludeRelevanceScoreInIbis2Payload, - Pushservice.BypassGlobalSpacePushCapForSoftDeviceFollow, - Pushservice.EnableCountryCodeBackoffTopTweetsByGeo, - Pushservice.EnableNewCreatorPush, - Pushservice.EnableCreatorSubscriptionPush, - Pushservice.EnableInsSender, - Pushservice.EnableOptoutAdjustedPushcap, - Pushservice.EnableOONBackfillBasedOnF1Candidates, - Pushservice.EnableVFInTweetypie, - Pushservice.EnablePushPresentationVerifiedSymbol, - Pushservice.EnableHighPrioritySportsPush, - Pushservice.EnableSearchURLRedirectForSportsFanout, - Pushservice.EnableScoreFanoutNotification, - Pushservice.EnableExplicitPushCap, - Pushservice.EnableNsfwTokenBasedFiltering, - Pushservice.EnableRestrictedMinModelPushcap, - Pushservice.EnableGenericCRTBasedFatiguePredicate, - Pushservice.EnableCopyFeaturesForF1, - Pushservice.EnableEmojiInF1Copy, - Pushservice.EnableTargetInF1Copy, - Pushservice.EnableCopyFeaturesForOon, - Pushservice.EnableEmojiInOonCopy, - Pushservice.EnableTargetInOonCopy, - Pushservice.EnableF1CopyBody, - Pushservice.EnableOONCopyBody, - Pushservice.EnableIosCopyBodyTruncate, - Pushservice.EnableHTLBasedFatigueBasicRule, - Pushservice.EnableTargetAndEmojiSplitFatigue, - Pushservice.EnableNsfwCopy, - Pushservice.EnableOONCopyBody, - Pushservice.EnableTweetDynamicInlineActions, - Pushservice.EnablePushcapRefactor, - Pushservice.BigFilteringEnableHistogramsParam, - Pushservice.EnableTweetTranslation, - Pushservice.TripTweetCandidateReturnEnable, - Pushservice.EnableSocialContextForRetweet, - Pushservice.EnableEmptyBody, - Pushservice.EnableLocalViralTweets, - Pushservice.EnableExploreVideoTweets, - Pushservice.EnableDynamicInlineActionsForDesktopWeb, - Pushservice.EnableDynamicInlineActionsForMobileWeb, - Pushservice.EnableNTabEntriesForSportsEventNotifications, - Pushservice.EnableNTabFacePileForSportsEventNotifications, - Pushservice.DisableIsTargetBlueVerifiedPredicate, - Pushservice.EnableNTabEntriesForProductLaunchNotifications, - Pushservice.DisableIsTargetLegacyVerifiedPredicate, - Pushservice.EnableNTabOverrideForSportsEventNotifications, - Pushservice.EnableOONCBasedCopy, - Pushservice.HighQualityCandidatesEnableCandidateSource, - Pushservice.HighQualityCandidatesEnableFallback, - Pushservice.EnableTweetLanguageFilter, - Pushservice.EnableListRecommendations, - Pushservice.EnableIDSListRecommendations, - Pushservice.EnablePopGeoListRecommendations, - Pushservice.SkipLanguageFilterForMediaTweets, - Pushservice.EnableSpammyTweetFilter, - Pushservice.EnableTweetPushToHomeAndroid, - Pushservice.EnableTweetPushToHomeiOS, - Pushservice.EnableBoundedFeatureSetForSocialContext, - Pushservice.EnableStpBoundedFeatureSetForUserSocialContext, - Pushservice.EnableCoreUserHistoryBoundedFeatureSetForSocialContext, - Pushservice.SkipPostRankingFilters, - Pushservice.MRWebHoldbackParam, - Pushservice.EnableIsTargetSuperFollowCreatorPredicate - ) - - private val longSeqFeatureSwitchOverrides = - FeatureSwitchOverrideUtil.getLongSeqFSOverrides( - Pushservice.MagicFanoutEventAllowlistToSkipAccountCountryPredicate - ) - - private val longSetFeatureSwitchOverrides = - FeatureSwitchOverrideUtil.getLongSetFSOverrides( - Pushservice.ListOfAdhocIdsForStatsTracking - ) - - private val stringSeqFeatureSwitchOverrides = - FeatureSwitchOverrideUtil.getStringSeqFSOverrides( - Pushservice.ListOfCrtsForOpenApp, - Pushservice.ListOfCrtsToUpRank, - Pushservice.OONCandidatesDisabledCrTagParam, - Pushservice.ListOfCrtsToDownRank, - Pushservice.MagicFanoutDenyListedCountries, - Pushservice.GlobalOptoutModelParam, - Pushservice.BqmlQualityModelBucketModelIdListParam, - Pushservice.CommonRecommendationTypeDenyListPushHoldbacks, - Pushservice.TargetLevelFeatureListForMrRequestScribing, - Pushservice.MagicFanoutSportsEventDenyListedCountries, - Pushservice.MultilingualPnsfwTweetTextSupportedLanguages, - Pushservice.NegativeKeywordsPredicateDenylist, - Pushservice.TripTweetCandidateSourceIds, - Pushservice.NsfwTokensParam, - Pushservice.HighQualityCandidatesFallbackSourceIds - ) - - private val intSeqFeatureSwitchOverrides = - FeatureSwitchOverrideUtil.getIntSeqFSOverrides( - Pushservice.BucketOptoutSlotPushcapParam, - Pushservice.GeoHashLengthList, - Pushservice.MinDurationModifierStartHourList, - Pushservice.MinDurationModifierEndHourList, - Pushservice.MinDurationTimeModifierConst - ) - - private val enumFeatureSwitchOverrides = FeatureSwitchOverrideUtil.getEnumFSOverrides( - stat, - logger, - Pushservice.MRBoldTitleFavoriteAndRetweetParam, - Pushservice.QualityUprankingTransformTypeParam, - Pushservice.QualityPredicateIdParam, - Pushservice.BigFilteringNormalizationTypeIdParam, - Common.PushcapModelType, - Common.MFCricketTargetingPredicate, - Pushservice.RankingFunctionForTopTweetsByGeo, - Pushservice.TopTweetsByGeoCombinationParam, - Pushservice.PopGeoTweetVersionParam, - Pushservice.SubtextInAndroidPushHeaderParam, - Pushservice.HighOONCTweetFormat, - Pushservice.LowOONCTweetFormat, - ) - - private val enumSeqFeatureSwitchOverrides = FeatureSwitchOverrideUtil.getEnumSeqFSOverrides( - stat, - logger, - Pushservice.OONTweetDynamicInlineActionsList, - Pushservice.TweetDynamicInlineActionsList, - Pushservice.TweetDynamicInlineActionsListForWeb, - Pushservice.HighQualityCandidatesEnableGroups, - Pushservice.HighQualityCandidatesFallbackEnabledGroups, - Pushservice.OONCandidatesDisabledCrtGroupParam, - Pushservice.MultilingualPnsfwTweetTextBucketingModelList, - ) - - private val stringFeatureSwitchOverrides = FeatureSwitchOverrideUtil.getStringFSOverrides( - Common.PushcapModelPredictionVersion, - Pushservice.WeightedOpenOrNtabClickRankingModelParam, - Pushservice.WeightedOpenOrNtabClickFilteringModelParam, - Pushservice.BucketOptoutModelParam, - Pushservice.ScoringFuncForTopTweetsByGeo, - Pushservice.LightRankingModelTypeParam, - Pushservice.BigFilteringSupervisedSendingModelParam, - Pushservice.BigFilteringSupervisedWithoutSendingModelParam, - Pushservice.BigFilteringRLSendingModelParam, - Pushservice.BigFilteringRLWithoutSendingModelParam, - Pushservice.BqmlQualityModelTypeParam, - Pushservice.BqmlHealthModelTypeParam, - Pushservice.QualityUprankingModelTypeParam, - Pushservice.SearchURLRedirectForSportsFanout, - Pushservice.LocalViralTweetsBucket, - Pushservice.HighQualityCandidatesHeavyRankingModel, - Pushservice.HighQualityCandidatesNonPersonalizedQualityCnnModel, - Pushservice.HighQualityCandidatesBqmlNsfwModel, - Pushservice.HighQualityCandidatesBqmlReportModel, - Pushservice.ProductLaunchLandingPageDeepLink, - Pushservice.ProductLaunchTapThrough, - Pushservice.TweetLanguageFeatureNameParam - ) - - private val durationFeatureSwitchOverrides = - FeatureSwitchOverrideUtil.getBoundedDurationFSOverrides( - Common.NumberOfDaysToFilterMRForSeeLessOften, - Common.NumberOfDaysToReducePushCapForSeeLessOften, - Pushservice.NumberOfDaysToFilterForSeeLessOftenForF1TriggerF1, - Pushservice.NumberOfDaysToReducePushCapForSeeLessOftenForF1TriggerF1, - Pushservice.NumberOfDaysToFilterForSeeLessOftenForF1TriggerNonF1, - Pushservice.NumberOfDaysToReducePushCapForSeeLessOftenForF1TriggerNonF1, - Pushservice.NumberOfDaysToFilterForSeeLessOftenForNonF1TriggerF1, - Pushservice.NumberOfDaysToReducePushCapForSeeLessOftenForNonF1TriggerF1, - Pushservice.NumberOfDaysToFilterForSeeLessOftenForNonF1TriggerNonF1, - Pushservice.NumberOfDaysToReducePushCapForSeeLessOftenForNonF1TriggerNonF1, - Pushservice.TrendTweetNotificationsFatigueDuration, - Pushservice.MinDurationSincePushParam, - Pushservice.MFMinIntervalFatigue, - Pushservice.SimclusterBasedCandidateMaxTweetAgeParam, - Pushservice.DetopicBasedCandidateMaxTweetAgeParam, - Pushservice.F1CandidateMaxTweetAgeParam, - Pushservice.MaxTweetAgeParam, - Pushservice.ModelingBasedCandidateMaxTweetAgeParam, - Pushservice.GeoPopTweetMaxAgeInHours, - Pushservice.MinDurationSincePushParam, - Pushservice.GraduallyRampUpPhaseDurationDays, - Pushservice.MrMinDurationSincePushForOnboardingPushes, - Pushservice.FatigueForOnboardingPushes, - Pushservice.FrigateHistoryOtherNotificationWriteTtl, - Pushservice.FrigateHistoryTweetNotificationWriteTtl, - Pushservice.TopTweetsByGeoPushInterval, - Pushservice.HighQualityTweetsPushInterval, - Pushservice.MrMinDurationSincePushForTopTweetsByGeoPushes, - Pushservice.TimeSinceLastLoginForGeoPopTweetPush, - Pushservice.NewUserPlaybookAllowedLastLoginHours, - Pushservice.SpaceRecsAppFatigueDuration, - Pushservice.OONSpaceRecsFatigueDuration, - Pushservice.SpaceRecsFatigueMinIntervalDuration, - Pushservice.SpaceRecsGlobalFatigueDuration, - Pushservice.MinimumTimeSinceLastLoginForGeoPopTweetPush, - Pushservice.MinFatigueDurationSinceLastHTLVisit, - Pushservice.LastHTLVisitBasedNonFatigueWindow, - Pushservice.SpaceNotificationsTTLDurationForNTab, - Pushservice.OverrideNotificationsLookbackDurationForOverrideInfo, - Pushservice.OverrideNotificationsLookbackDurationForImpressionId, - Pushservice.OverrideNotificationsLookbackDurationForNTab, - Pushservice.TopTweetImpressionsNotificationInterval, - Pushservice.TopTweetImpressionsFatigueMinIntervalDuration, - Pushservice.MFPushIntervalInHours, - Pushservice.InlineActionAppVisitFatigue, - Pushservice.SpaceParticipantHistoryLastActiveThreshold, - Pushservice.SportsMinIntervalFatigue, - Pushservice.SportsPushIntervalInHours, - Pushservice.SportsMinIntervalFatiguePerEvent, - Pushservice.SportsPushIntervalInHoursPerEvent, - Pushservice.TargetNtabOnlyCapFatigueIntervalHours, - Pushservice.TargetPushCapFatigueIntervalHours, - Pushservice.CopyFeaturesHistoryLookbackDuration, - Pushservice.F1EmojiCopyFatigueDuration, - Pushservice.F1TargetCopyFatigueDuration, - Pushservice.OonEmojiCopyFatigueDuration, - Pushservice.OonTargetCopyFatigueDuration, - Pushservice.ProductLaunchPushIntervalInHours, - Pushservice.ExploreVideoTweetAgeParam, - Pushservice.ListRecommendationsPushInterval, - Pushservice.ProductLaunchMinIntervalFatigue, - Pushservice.NewCreatorPushIntervalInHours, - Pushservice.NewCreatorPushMinIntervalFatigue, - Pushservice.CreatorSubscriptionPushIntervalInHours, - Pushservice.CreatorSubscriptionPushhMinIntervalFatigue - ) - - private[params] val allFeatureSwitchOverrides = - booleanDeciderOverrides ++ - booleanFeatureSwitchOverrides ++ - intFeatureSwitchOverrides ++ - doubleFeatureSwitchOverrides ++ - doubleSeqFeatureSwitchOverrides ++ - enumFeatureSwitchOverrides ++ - stringSeqFeatureSwitchOverrides ++ - stringFeatureSwitchOverrides ++ - durationFeatureSwitchOverrides ++ - intSeqFeatureSwitchOverrides ++ - longSeqFeatureSwitchOverrides ++ - enumSeqFeatureSwitchOverrides ++ - longSetFeatureSwitchOverrides - - val config = BaseConfigBuilder(allFeatureSwitchOverrides).build() -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushMLModelParams.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushMLModelParams.docx new file mode 100644 index 0000000000000000000000000000000000000000..4aa7a4dbf0b32a38716796b75ded483dcbf516d5 GIT binary patch literal 37277 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 H4dMX+TyMVD literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushServiceTunableKeys.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushServiceTunableKeys.scala deleted file mode 100644 index 7920bb6cd..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/PushServiceTunableKeys.scala +++ /dev/null @@ -1,9 +0,0 @@ -package com.twitter.frigate.pushservice.params - -import com.twitter.util.tunable.TunableMap - -object PushServiceTunableKeys { - final val IbisQpsLimitTunableKey = TunableMap.Key[Int]("ibis2.qps.limit") - final val NtabQpsLimitTunableKey = TunableMap.Key[Int]("ntab.qps.limit") - final val TweetPerspectiveStoreQpsLimit = TunableMap.Key[Int]("tweetperspective.qps.limit") -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/ShardParams.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/params/ShardParams.docx new file mode 100644 index 0000000000000000000000000000000000000000..0d4f391eb766a4bf0df2b2f5f215e34878c5451d GIT binary patch literal 36692 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 Dr-*7O0|Z(82)E`%BPO7&^6wJe<=VP5+S2i=5Ox z12%m6=^sc7F#K9u?+1i=VTFjjhfGRWrg)X~%nt|~4fm=|$tWzVDs0t(<5hQEQzk1A>*+_6VVBR&aE3=pbuE z#QZsoVqQfqiV~L*S)$A3pm_`g>e|4DdxzCA2+lAFaD;lJw|IIlnEIR+>j=j8p}=}C zu%}cVK_~tLNMep_9^Tim(cFa-20c!C=5#$5I|1>~JjgKpsN%1$pQTQJKj(6^XyHLaJaKk4(MA1u| z9()xU3XUBXL6H!ad|Bc6!CNgCw}&VMfRCx2{<|$>YW}-}{kRB@1U{&cy%$2gPTLz5 ze<{!nni(K;f$-n*K(rkW#jxbV;fCvV+C7;e=GjPO^9CPwN-6~#j;M@BbR<}#O8t}m zfa5RvVpB_jEoe~i``aym_6YFy{XvfZcBh3L-o1ah#zrBa@`u3d?f|-bLSjZ3#>yaS z3BXFnCniZzFy=ZIo}RUK#*eBNa>*tax^LuQmC=2u+!B>7@;d)oIH{zJ=jW1^OBeN` zbRMDL%()o_OvNPiJy~mU<>8F#Djl$EUmva)@@hgXH)Ia(VO^c1$B_q%RC+kih4Ctu zFaF+Uk$L_t((4#f?n&qS)4k$VUdH^s>z=x39C?kfdSp(ur7hY7|ToI()O`Ew{b z1ZC|d&m&fcvWUKQbF?G$Vk?l_d^hRd@N-8P2ihQ{V9i9l*c2!s>R&}OiRR@QUEqYZcQJh9bJEnZv zkWq1y)Da=f&ebO_b;}+^9$n{^==2Ge=7U2;0va%9fR7auP#RRA^)hKRPpLsUJjr@u zEHM1+p@XSqa6+LXQcD|FYuUq&k>M5(*WyjW#2o!6XYrbzkv`Mn_!u4wOD$VwMZnP5 z^NbIhC4j?BKFq$3jrnVo6?6wcfMQkKa^{$%!B*Cha}W zTEH}Fm*UuKfze~&CTXQkRoG!(vbl9Kt}4~IRLGIIg(tZtCPh78j96r&jM(MNRLGHa z?kA?Fqcf!(o0}uye$`4Ebsjmw;@MOQxWwbOudRMfB{&m=BD>ERx zmxLV`{F!Om2r36FxOaq%3lwGV;e^reT|i^$ulUd@R$Of<#dk&g?}oIOTv8S}31L-k zQhI;51DUKOEPnATt@j~K}ffhEDBYtyWmp(}Hh&7?c_1eqDhWNFQcm}_5+yV0od>KA& z@w9WWJ2O@6HRO9Hrb4u5c(UI671{k`fZX9$VBv=vz(n3cYzMH8=*q>Es}wQK3ZX`w=4&)|T%E z9Nje}9mi&SIY5at64#Hc_N?BmB(^>Gof?guJXMK^k|<8e)?*hp`joo87_=YuJ3%f; z(+!(UrQCvI6+F5gd^$9>Ls&JdE*XW*oW7-OCW3G(_eSxMH6-&Kv0M~#QRqN~G!ba# zbE=F?XOIXwHC#_{OJV3MjpJYh$|#}lO5huNK{;Z~Ibw*J_>VAH5Vm$GOT~#Snj?$I zSkByPUEx7F5TelfIe}PluG@O^M>-*?XRuB8l?(7#AKkKxb0K_=c|}7EL_)BeFz%4( zmZk>MYmbX2u&Mv80ukj;6(K!WgbL-#8dWx~m4OF}yhwVf&0mnQUR{?2E=a|m=`i0f z1-~0h`#!fQxJSxdmL4l%eufGcn<($FLyx{o+}jRgCzg`Fvj-tLOViiS96?CZi?G3CG^IH$tPLx=#$c@Fwq5e@iDLg(ZR|y7wi9L=D z3gHB3dYX1nnbr1DdSkZ@MzwRtl#?W=N5sty2$d9vufGtW*zGe|qEY~TMwKj3s>5N6 z!rbyEg{MVTDZ!vEIl;C;p}o(4FcZS=I#VDCdCb-(FJJ+EH*V2Sw!fgBA14Nh65($5 zi3NXp39&*O1f=p85Y}%X-G2kw{|1`#o9F~e=e}Alz|lsomzqZi*x|(ffgn&0np>Qh z?J#IT=YC`=G|TX*QV8dnvB8*dv~yoD6K@e3Lottp6?B9P{)hupDuA7^-aVhiTMsu1 z6VF4dgB;RUm{5N@Xbme)Y*cE5L&YBuOi>^rovTog)1+P^2=YTKekA=f0wWaasl=B? zTo?8)Gt!_;4C)puJ%x9A5iwPSVSc<7EsBHiA*LXO7DI3)gKo?eI|2E{tj~fXc$>f@ zh2C_-VIyRUltMrfVAu&ram^+xJqSqQE^vHUydZu<`RBcTBhSEDUQRGDmueU=yno)? z*R=j*C23({Zu;rZEBwCtDfv=$Cr=MpjYoruS;=6eqvO6)=nz8&6$^e_(ih)(MMvWM}kj)Uui|&$F{P&3?ql#zxus;cy>Mcwysxl9p7!fd*iy_ zcW4DJ2~;g)Z~9%G8SVn8H`h*XBW`wgJnId*-u9>WPSf8W&fXqhkKNl}vZu$_^)H`p zPTQ-iQO?e?Z$Vf4H#%1Z1sDyn+q*j}h?>&Z_h(-LDCsHg>5ADJDC6#i+^fUxQ${>I z&)thB`^K%SltcRwH)j#+FQu(1NQSn|5usOat}sC|mv=V4*1NaST-D>Q&X=Up>LnCGg- z&@eP>B`0)saPfy<71HI}>+Zz|=ILSnY6mBtE!?<<@Ns4j2U5V554HBWZ_;s^-2qVJ zc(ohA4X9pR(6Fg|X?bHyl;( zX3pB&eW<$rab@!I;N#r-db>$ncbCe0&C2@l3aov(?f1q3+?`HPM>ESIa`PlC)Ic9P94WD@bt#mMSa@EVvCr1`m@Qf&5m?*jWXI_S0 zok2nWv&&=o!8LVzWUV+pp!}GT5Cv0?82RFLy;F7iGgf3qB5D zn9^pL+{RL3E?RMJ>T5|RyfVM)pxbSFD7i|#eT!;V_PR*)nI$*e?$a_-&OOjAh`1|z zy(a|Jbhrg-!UZ+4-`)s&YZ1J5J#0(A`Gv+1C6t7|&$1ZOA7T&)I3iUULagHnn=^19FuUCoNja<-Mmkn9 znzr(0>js}$prC|{k3pKx&ujH09@Q}zeX;PxW|6K}Ld2!es)eo?Wn6#LdF@)sgm1oY zIb-W+zQtaTM@BPYdwXhHUQ93x6>Gb9>NKo!ALkcJV1o9ZJSl((QmiRN&>~;bg|0xe ztAkj;bk_ySN~~7-iw3@E_TcqOF&ITTe%RmgRpVz1r7a^&?Z-Tco-mGe``|DXie4kN zB?qrXz6QZlf#v`{d9Mwz5Z2`HB|D%C7Ao4u=--dGjoo7$<%qa-K33WUhODXv>Y!Z# zb&#BZI$}W`HBv3mj{k-rSb%E=dr8CZrrh~$^e^we_zfl@~!~cQucZ0v9 z{O>AoIh&y!zvit#@W{0L$-A;mw80Ky}FEk3fUvw)1`W@ zmPzOU1NzMQF$yy_kKaHJA2VWVOi$ApCGQ|z8`VEJ58ui7>jo0AdY8vcmrrgNmIwph zMcQr}y&XKChVJcUj`iJPMB>W`dyE4&+<4p`Px)GX-VSWPAKBh=Ru1oSBNn@lqu{*W zdpy9MID7wmS2jy1>4ka_9d%|=-p1Mue#b=JK9_f*_08=Hv~2 zQ~66wgjvOFD^ut8&1H=5&(VYV$MJ_B%h%7=wUc_zgke`9s;#Fy8B;!Jsn0j&tv)Zj zt=;Y+roxpAV+PRYmC z7ArSXd{^7<6$hIue~x|!=(>PDzpkbcP5G^+MVp?+c%EJme}CC}W~dVWQVa`4yu$wr z>+B3CRDQ>cXB~Hz_x(YnnNW5nrh=JJR;HQv@tinO6g*IGU$ro{mszGr!WUPQx)#%dk;@i-7suK@N z@lj<69pX;s8p1O|^1W&o9HE%9W{jT#@3T`_m!a@f*>CZ2_e3_nxioIRC2?DRR zBS@~!%RUd!&oPoh>3hH{otN3&vAX95VFNA#xiY5bmgO^UW&%bB6u|8qM{2bCMVI2R z$5t!Q`=Mnm%OtMQsbAb7Ilfka$|09XDz);*!6fg2#&TuW^wktjBlI&B;*oKKBCk^C zIB_$t68mvY&(7s}ldPj_7#hw87Mx2nw<(l^uw#8=ZiZh?6NP2Y-h|G8O3qB%DF-uG zI8{`31wjh}=LsIcA-N|sQPJR*8#t#?v>gc2c{t@yd%W+1$2^{^ z_0$!}_K3Q0&_f>Tcd8TI_@wtJp|HN-@w26a4Cox!jKi?;Dhs+y)g0oz1 z$m|Gw*GFI;X)fm`%Kszm9iS`Qwr=6rwr$%L+qP||DyrDFZQHg}u`0Gxam9JN&bjx# zd%pj@_qW}$T1#tt_tATwYt238SbMJFmMw=^hqEgyFd(gu)yv;BM!R1{dEidpRSg~? zgkRHnTBlopdzN@|+pW&YcJE#lfBJO2YS^37nB?qSAS!jzpJ7IEb#vHJI{f0IJ@#<@ z4OEu=GC868NL93Gm%#;JAP1qX!}g+S*^J!gIDb+!WxAx(mMg7k*`j~_?ykYuc`KWN zsq(kITg<^&Z0dF@EdI2s#nQ$XeWMMunp36HLxSpzpQQxsb|EYGW$W6pAKva}#RVb? zn3_x3g(;nl))R!amOc}_D%;s9sM#3=4?0(K71X|Gb0ei)+OaV@=W`zO_tx*~DB#?# zr-vww9ZeH%rt=RW?hEam6-V#SIQ!;3ilrPyKg@ZXtWBJjgjC0PR@bj{J_p?KeR ztm9UB6yLooRlY$)-=q9I+MRGx#$Clnr~NToQk8R>{INw3AG}_q>C%&|7EwW_!CSMmsv!DiUF!UQWC0i=za zz5ZQ+$557zKHtmeTcx}~Zzn~Ymu}w8tVzXzi_<%=c7kWGcKrvCMDEEKq@j!z7XG6T zCX&W5A|COF6Rh|`lSM>Vwv2s2$Bp+Fr{CkFo4-cea1(zEBcbkl%0`VdGeb~h$dD34 zg-LxOqB!tNy9Y%IF*8FF9cd!KR&h3!ef5X)O2n(fzk1$_d(MbX30;sPDb2iT_*Djh z>DlmA*G#n@u^U^n%9$leBi`s)VpwE2HllVLxh$ND9KUuI zHx&kG>Z2`-`~o?dk-YsLVHkW*6;KCAO0VdX@@%vUz3wOXy=Fm&I(*JvPrb_U|xtix``)dUMg$&7bWw&x)!(47CoALrwpZQK8K#1rwKRLKTA*Jn=JLDQcFq^#V#kj z*fJ^VE4IZ!gsflQTtY(*7N{XIFZZ2w+%eDMoLcoWU=lAWC!-iEd#^v zZDiyT*Q0$Equu-V zxOC}GXh-T(FAkp&;b=|E^MZ=F)5&Nwxo_PF$!FE}bAafC5Db0$aD7dxzvj2mRZOaS z^8Qr_D`|Rd_uUnoMV^-DCpwhrV6nf92#l6pk@5usU174LjbDEYGt^4SN)?amAXfxT zRma%U&W0u*9N3kdl@Dr&mrDFm5$@IWqRaOcTCerO-YfWH9j5tCre8W7jt)CpiX!T` z&1jvVlV#)^xQ2Cha0A_^?6om~2M`%(X{Bf!#}0JYyJA6YWX{V5!u>8G*)`$BE1$_Ph?P9~&yCFSzTf8ZTD@hRoLQHH-Tq!8 z2wHZFe@RVobofi^?~;`+o~S`7Hltf>#&2j>(Zz#;J6lm;8=1Bo3-TSDSB`sfppW*B zZi=tRTkid~{J;PI*~zm--sOJVaAt4g#6Se~_u7YT<6MJL%64@iS;<9|F5p~|EAYLN zTl0+C}l&D`n|;7kxZ~R=sT?R z(dPbi>(S{U(~|AQ5xTPx(3W}!^0UE;DYiHk|3f`AB%!=(Hdvd56t<)T*gJ{^8+>aJ#rF81f56&_`6&MdY} z&$-}M^WxSJZo?Bi%XJ-4CT)n2idOY>1-|oYB{I~|)|Bq58`bT-g_$_fy#^ITkBQxC z_S0(g>y(*l7>8m)n<$~d@k)z_pD@$9T$rtKi%AI8?QWhpc+hf)CUN=F z)qG(VeVmM$>l0#Hoto__8G-0fE#*+{*Xm7T0HEk@a|^xiRut&KwafQV0P8Rg=G41}%M*VJKOj&(wFXr%d(RA{}dOZCW$@e^0NFP};JV{eCp_PN}6 zRRkKt#8w+dXUaY&`D@SxT9N1y)cKEzsyg}X_jY>)6W~YH;>p7?r=k@%t2bk-FPAz( zClADEv8Mz?S3v`kcS0|}jHz`5>Aa>^3$pt3I#o-Aa*ToN@PTmqD7FWRlf84!U1Ef_`IC`BrG>$@EEAiz=)7E34Sz2lzkem`7NGbz(NWU3g6R@$!01LHw`(90X4 zDGtJg+#{Y6y7rAU7pV{f0g13O4WTW}!tYactWK;{PZM0qGXX&@3cKJOGO7D@P4@u_ z+6#=ig+kHDM3{?!p^=LrlZ@$yBou@sp_x6OcECX~5Ku*A=sY2j)ajwtl~(9kh4p1M zeANaY`C7q1B09T=CcdOUWf%m7L;{3g=R|+18V1xi3kS#iz!o9GX^QDOPIxIF_TM3q zfd3uxeANOF((U4}kUWnei}e=&3Yi6gL?Rg0halINqdZYe4B}!} zkT4h&@@hV`;|$g&t@>q#8V(5(Yrf0cJPp%rtsNAyt0~M~Fw{l*Kw3Zj9}nn!OlN_; zRubfcp@86~`;b%=2D!3C6C}KD3T~N)0THzl9(0I+k!~UN zLlJ|Zih$`eWzNW0tH;9l1c=fw`!5%xghMwmCW_1Ed9-VT4M2!CCf#5Qh5-?S@Uj74 zVHbK0SLiiP*dRlt&$ioIp<_L-a0Ef|ump44AZxM)GY9IV^+O?RzK!L9KGu+D!yp4; zW%v`9hJxKmvRIpgv zg0Z8J{D))Vcnp7O&zBpMvyWli2koA9?;EL#&wE=6xKqDTTo}XzZXyi)L}p?* z>V!_>>!aWV!2r-vFfa|@uR;GozubOg!Vg-6*U{m@)S2~Zoq^E1ly$F01!o?%t|qpg zHn#3A$%)Wl8K|QM+>7=;mC`@Weqfr-cQH#`Ltt84**G}@;k!qLUqb0hd z#+4ckl!u#>+CjdEpFPN*`aaTZJ!4IEQ*6DnSRz|p?ksRMv2pP6{R<8w3!@ts(;Gpf z+a05X9Y%O!i$0B{_fA4s~~+Q)0T{zv{+JW zDsMii!9rEPOS_hM`(j2va2~p{9k#+KK#pTzs;z0BVPF}R@324wC9ZKyC9|#TRsvC* zJ9z%Lu$Aqem0y4>m`3ZmL1OnIa|OV3f#7kd>!V5rp>`Xq))z;?TqvCGQq5jbIkP8$ zJDuKOJZ~tZ)>L8QJhd6BmQdf9RKNEv$cu!Za7xqvMb8<+A*_D?KlM2HV#|=Wz@ML!X`ejYncWmhZlyl#?H<5#KMyv*Q!8j# ze^dVPbw_9*knDk|{l-g#UrUAxcmNitLaSN{v>G|=n8^Eef7zSbFDbC|P$P>}QU)^% zV*?!(Q)*cfSR&N5YnG=__wm(I?IF`9=C7tZqrKm0SzcNBi>RVt*bm zmSvOvuFHEfmwK{n)At-8G^#v7IegR#$5Tc1wjkYV>^R5!7&cK>mm%^n^9LZ%^bku3G%WHArygx_Eh3Bptw)wHbEIja zj0cxsOcTE^6+_T-Q~GJbY=M^M$G0oMl5WBSbG-9N(^JT)L>WtMm+%^78hGlbY0U7pW@ig<{3Pw=h6%#XrkkfzUo zAz0w&;Ha3S+4gA_t`t)!LoER!3jV_Qmxwb#5w<@f0IdGsBBF;x8)drn{}#ZU2R#Qz z+eKi$UdVEWG<^|F{fE|9248$XRZ23vZc_NUDLf}Yj`5{Wu!J}R7+gHuyeG}_EA=-3 zpFi;-*oZTXf>(;fqe^>5AIaZ9rie4b_s|NkvHuq1{C^c=sloPY)m%xPo~|#XOu_o9 zt<8I;NzlN3jai|c+m}mglMUKEt*wLoll#TbgoU~pL9a$Om6l<1-Mw+^*F1Nntk(FPL%xU{GGyS@RR}n#bf$l|C!TLL~a?p`4BF> zh>@~$eMmhgerT12BhFSJy4PBTk}8_P?YfA_6}O-u9EcR5Hc_R=OYKf8J|VT&#mbWB z=f_s`^f%GwFL5Bbhcw{62hB-tJ3@}Im>J@Zux?xm-yK!LR6P6lYzfIQ$y$-~{Eui@ z@UDDXY{`V&fP=(O>`y|R(3nB>TTt|)V~gZHDq-7?s2Ro3H59i7f=iUPgwd-v8upMB z^?y7Hc?fyn0^?BCk}T|ASxkzfBw-3#2HlD~4Ir(p4c$sy=6B%`N@d@wry5PF=ttn# z=5+EYD*sD|O5QO*$A`X!%L>%AKUO>{ z{~O}53}6N7|HFzAql4h#1Bm0$hQwQIZ!(XG$(uEt;T7v1Be>QtK0sfq#SEkUUaLu;j_X;d21Cww5<~_t?R%kq)#~GVL2e zGO@!s{i^(l%Q9ml5lx`}j^z>}u{IWWF8?dkN}uOoY|eN6yyZZYOi7X%s(9^`S`Fb6 z)q~RMbq^>(c@oVP>tiY%!R$yDiWSLRvf*n)Bc6zJz(j&|5niz1VEC-Ezc^icK6+Ba zIZE_uoKTU!WFffbJC<9c8BX$IQ`%W^AVPk~O-B{`nl~@~QWFy#k_{KpVuI%2-7TEi z4~sB%Bpbo`i`PHt)C`neMpgV0M`n05keqcyLdWe7<(2JJ-W>h z%7l&(Z70KW7(Dh6P8hqk-%_j+r%sg;HDo}!KF2*@>D+c4H9;K=5b`!v~YaX$%`xX(r=}R0N(OoDgY4xupsFNcL$& z&>as*L!qVeC=*ttDH||C=lhn$1U#-WPQZf9YBx>JK)1z0A|B zf?fD|Ut6_f?`y7afn1PG<%Tg`%;l*n2h-z27>Cv9>bD^m@5@2m{1smipPMCI^o9p2 z7^*qG)7@`)kE$mpxk76dc8Eq3KVKxQxr=$fnTJ$66(;Z_{65HloA=F1wAsjMo&5l% zt`n@u$dllZ)IvpTV)DX@}&PaWkv3P>R3Q0h_c=s zR7qn90aG$1qZoe*94Sdu$ zo~6hHYo&ThF?47;7-cc7$h?S`N+~}Y^J@`tbo3*vvVwS3<|vE( z^qDXHws{eM<}Vuc6_Ifju?SD9yoj|)$ui@eAIFIaQ!@4sBvc~k$y4KsV&s7+s!HQI zXli72RFdds^Z_(yGiLA=Y5j=UYN}}_c@g5u!yZ^6joiP%8vSViGl5%$W_I)!1$63$ z`al|U#zJZ?%s-i0?}Zv;fHJtQ>XcM+kqR@Fii+g$KT(UI|A|V35JFD4SVxftulg?w zbn5^X#KU6zv0%D0BJr8%el>EZ%o91uQ$uMuYq2we2EuGhO|_o#cTGWu*xWaC^1t}* zga1L^?2Nc|fm5B6tl+{8E)07QfwT!&6GUg{PvB9j`XQQH8iAI6B8c9YI(OiZ2@&Wt zPI96FpbV%5Pf3}%11KjJNc<1VBq0B!%#}7{ZmU0>VaTB<79C5bfX>Ztk^dB7HqXN< z8e?q2%^*RTm4QLo^kz3%r}42&UPj})uiT~Dq8{Oi8^jy&%#EV-`npW5b~6x-A$J35|2arsiXh+OPEc z^%UagjWe(YzRZ}LI{c(G$Q9~EZZewg91t)OE}?*oG7aqs%Uk*>-o%tEk~Ps{66Inv z3oN(vzh;+SpzjJ8)GWJ)~cUnk10PWk{wU{`wz)Aim2?g_j-sRTqw>L zJ{l-aVZrnIU+}vSJMpz>_@adgoKtqm_7~#<(llF+iB2BRA-TUQK^udWE~0}5?;_yM zMl>b4;v6UL(h$T!YfY7$V4{RbmZ}BMmDBCOf2K;A($042ZfP5V7Fbz7!wC+YimGd) zl4rT21S^eg8pJsg?dpbXIga9?AjE+{m;Tyu8X$sudiDcHiTUEuFGY@L&%(gCdwusE z#IFANubA=UoB2}*2+)uy@*eYJfQ1G*_5B8jN!%DM&1{D%j?y2cAus@?WU2tA@{0VR zagIFk^jnh97HA66TiV7Cm}Gd8T&ek-8_c0WphW;m-0t&qvBbQh{Rf~Jl3b6A=S0bl zZR2fSL4z~Dp?l74e9*i|cO6wVov3K51PA{@UyFg5kQXNILQ{x>) zf2PJcie{uHI1a%>NpodE5be4aL`24;#Gno{^I{F1G5&FiLByfW1VCTXKWM?_TC|WU zW;KT;5mA$9cU46qQgvXLV*eHeL10@0(j2yM6&E_R@HSmU>lqFOfh_CRl=@F0cP(InfvDpgJrQyoF#r$bo`Ix`bG#^bkjjJ&O^uqA;d=AVCBl@y`#UU2xrkOg+FxOL z()Y`MCDYOP_%ll;DWhBJRXA4&zOn=>gJ+~xM$*^{Ho?*40!wmbmw8$j1ffdQYoHXH z{(pVubswZ_{Q3Ay{S4&^&nTX_48W4P{z0QP=uIPLTIPTJ|;#GhL5isX}n2!p%d<^inxG ztLDgz{rL2`?iwjiOdfSjHxf-pxJK4xu<~jb))b^;I|VHs+O+zRDNUHU`DN<$A=e5Z zp4|b%fZJj(gHvira8otA>$5P9O4R%W65H5k-{WzxFMgDP_k^X5c6kVhs<<)M-R5wm zYd_6Xh5dH#V@~2oXB~Yc?q3>6ND#ufi1z%#L|RD@@^MGV%U6+IfOtiw`US1k%GR@U z8^d^r&Sv#eVO%hrLNO>*efJPvey8LNpv6PVFh#6_QU!m7ni&zoyY1Wz;|E#^<4TtX93n*W&0`CA3Ix6hr9#+@dnd-PEaTfl+_4A~Xp*ft3Y_aRdEG`3 zh^?3pW3oW@?aOMm_(AgF_Y?@vCH4k<1G&H)@dSwSv9Wq%%V(1M%d~wnOaKr_;O{_u z;VD0EAWe0J0q+gv9U|<&@x3mjn$pnYVqAQlCk_+v%O(CW1Z&TL5Mna62qu>VihKgy zLriP@I<57GTODv|m;lj-A&)q+FHrF;p)l;A;|PQ9kaH*C{~BapCKI3XQ9?fdClL-V zzdxV+^X}Q=ClRdBM9Tr)vM(dT(NCaH*n5cdiIsrcAkq=O9&daV(xd}f0QxS=IoyB6 ze8KKGnef zb_`3Xrpu5cw^4ur|K_fYCK}2G;|6j{%j<~l53yB0l|Pc0@CyO5l}~CvnP4Q4d4op& zsm0s>DKPdwO6HzK07WmUJg%8*fM5ZUw|*#R^w>X3xZdwR1Zu^|Mt??w+h*pEoEu17 zN5E+8A(of`w9_Ob6FnoltT0NYl5o~@eK8v_we*E$ES4!H*1 zoB~gSA==KI&)SOU#qo$P<3>7&NEDv0qY@B;0%2 zmbJ%&_gNCL1d&oe;Mw3eMljD1yk0lC>(0k%r(Bzj-Phua*;zIs!TtnLU64&Z|x>w$+8xi2|jr-s)H0;>xHryZs8JPC z38#Tw(?I7~wHb;(6aD?sE7dUtdwX?8_HEUQ;8kTb`|ke?_C>yw`+RP|DrCVncwtIK5%XVk*1|Ve@ncqhd3#i4W68UO zW*;eC$c?i4F!fno)huj4VC=Acvm)AMTW5`nkav;Fzr!s}&l}_ZBL&`fVM+-c;Xgpx z{g!*NGU{Ml)9=n1o4Z4q5O0P6k$R==@N@vQdBFjz77HTu?4yLUEKYe=Av1ZdX~&FA zw+s*I)II<)xYBk;-W%78Xh<_!kgOvg?&>U9f#1J`do(winfO13$Em@r%)FX%g|#Eq#Mq=U=fBrFCuX_d-T z9ZVa`Zg}6BRlB${yUeS!>i0u0;nr3aNhrrWd~GM;bk;V3$qS$v)LwnRCtUdTgMfD# z22Y-Nah6g1vCeM*jW3|s8)9CPy+EzuFv!%-eX?+vQcI|L!VZpuGrJ;|PR5-Yq1s5q z0%BWZdv^vByD**AO7;>Tri-}=zi)amdN@Pa>h0&_u7JG$;j1Vj8G{#;H&w>RzBds} zu}`-wHRJEMLuaR32ByzyZ@V{jG_m-z31cy*poTsy)r5iIFDgV{;3I$9wl@{)u(8ApQ&LD@Pa1Q1)l>7Cp-&TLYv)T{~akpo2 zsBu%nSs8V66WS|rTYG$`C0d} z+}Oj3Vfg%GE5rWIBvo0CjM9&aI#iT;O7h}!?gtp#tu<6(;D-m!KUEKln2LhGe|Wcv z9Tve)330~<>hgj^{;}ea?4Fc!r<~6+)|mwnFvovNl1xBHiz_NC*UOUTl~qAS=Q-v( z;rNH)($ye`Q6aJ5_ycaj01kJvP@W~oTuOM2!MAUnNwZKv>>yWS;{+&>(Rs8u{+!=H zd#l`QDR>Z~civ{T*#ZXQFdm=pb}`rkIG7-#1reO9Z5i!=L|es~a%Uiom@_4~2OES) zq4o^18jA6jNp~+{Shs4Z$}6=>vJ{h6f}EAxX1NZF6tzhuaNag<8ItEn4K7($UdjOJ zqBtTTU1afuVnaMEGMJD;8}XUiTDfb^%gchIrQC>2__ByGA*GRoYH=|$ash?i2!)rF zIBBJlocJ$J9IT#Ae%w@)&T%%Bg%Yqpb2)Q^h=XC-tkJ`Dwu^&!uoy1 z+dk);mU{@^VUJXShBweD zIjx%yyU$bXZ-3nnNM)n^tYEkW8R|-`fD{Y{F#1aqHEtx8zh8RdLbB{ge{NwWB*nKV zFEE9P-^6{!XONe=H5W7-Bo!#4jalsq$1U(2e$@-aQ7DhkDbPYBob)8e-WTKgy2TU9(Q8P z_5u-8kR>Y(wit_F$eb4;DkUnF78jCt3wqdhR8EizZO+#el9w>jO%U~amYhyl=uqv{ za+Z#_z&vPjBp$OOyvqs5ifG3+`Nm`tLv}Z5@fWFzJ4C;%fGiqpaPB1``D|6ogDpi{ zqS9Tu2;qWbxOk8FYDubr)L#$aj48 zIFd`}_pa2bxj7)#lziSdLPmVRTx%O48@5QN%$J_~pl7K)uYZ+86Q!o5kWJ+)*oOf( z$!_DQa4O%ygI)B=WdSYbqr54qv<_N6EBd2I{`5|N%B?Vh zKJ_VC-Ig4ME#M&mKn>r4?Cv=e;PMr=N!KIBQ_RyYFVJtFfAsda42>!TKdozZa_XmCd&Q|9i`Q7;tagcl3=LdW1(nM%A_TtJcW=Nl-nP`Kbx+@1(B5MbGt z3(*vK>4)Uea^N<~tgoUG8`6iHKML}KC+X*kn(|!4r0-ke2CT=s^vOR{zWUQGtqv^@ z#NqQyN znlVtz+Y2VVCgF7H7L6r3;o{5`f|GOic2Fua*P^=(K7ous*fjFMI>W8|lxIMt^_8Gm zfI9=;-KL(XYc>f^-JVxIOFTc|QTGc{(`^J!bC8>h zIc))F_qM!9ZqlB0o9}}fiGtu~xmmTgYi+po>Aux^HYKrS`LrH>RTgCXWhwXvU|No*9>Mgc%J8zq&&S}kF=$S`yTFX0qPXK zcc6?f$A<;-#gBm05@STu)g!bpv{am6SO^7N>ItS*=!$EtPkBz?2?uP` z@1@srWgGaP+bd7B4^@BwEvQ-me}DRS{?&r&o0+l7e_im=v;EeCOmIN6UOfW`2`c-h zQOv>#ELixRNkT1%j(FtE&4A5N(=WeSwK%Xk?3gJw#$$&e9-tj0AX8@;G)>9v=RxCf*z_ zvhf+EeUL!*rhI`DNtwPCdd*u66~TP;O)C{wjPwBOL?bZnvd5K>1Ty{f#9VC4Mgjc^ zW9ESV zrm9B9wtsbf+)U}W|H*_m@~4ShYL>KZVlx^t%}7YoBm%A%5Gr0B#(MmvVEg>*4_@0? zrpr31&U?E!&r8}VGT;CxY*!IUP-5=SnP=nA`*(cp)^BtT6rwaVZNK_(9O(u?nTxy+ zcnM#+CqqoAqo0u^0#LWpkqo`)K4_N2~C~nM%G^5z@XT#3YBZ1l)TyQ%V6n7b&p(*^G*HKW zqy$bSm!+Vp)zrEh74Gi6EACm}pT`}T?@q-0KFMtJ!XV=L&0Xmz zqrs;VCdcDKf|WZb4Q2-;>U{37DdJ$b3> z;^?sXv204qIy%d2d#PCj%duXVpT-|9%%9C|y#`agx%~FBaN%z=w-hK+;Z+m3Odh;( zn^w0e0xkMGs)mjS{V8|+DJr8?b$brrAdJ)XzYf2L|8RRt?V&g?^^~g-ulRoRKl)uJ z36Zpo09x&K(f|RW|NE45wKTIcWBlvL{8xuFZ8?W^4y>Nv8b}=ni!bYL5glR|tC!0q z@F=Y!u}z{nwp2<)r(`|wmri|tMw@kmFc&R@b=88f7xV8K_V_IbCk9y5YY|jR&PT&? zKgl6SNuK$my#hammvMGLUJ%F@B`%w( z_iR>b_1a)+p)ft5B->_c`&tfRkaek(+vr1ydqqJHCfkwC2+(fhqh$~RArqEKi>=!? z=sb{KF|PANe=cv%L9Ii{!#`HAAmA4`wGy(q0U3JI0 zQ+s)Mn9Q`Ys>omizt*o^xm26)q}-itDHfxBMtkt7oR^Y{0~uxmPjH=#cHWdsOfE@L zXxut=#W|;o}iX-%yQ57=l%86nf^)%M*S}@hfDjT zwFK|FV7<`qPADHouZ$l)FVs)x&)*z!yqkf>68pA&UoKh=dUgGfq=wFGbKh_F*3KRH zKkq^*#oFK@LZvo+=eZTaTM3Gflj5(>nnl_B7g- z3*g`LVo@PlEh*6CuQ;yrOo<8p*bD23jn`}t-W)Vp!HcpsAAoT|SLzOt9fv9y`dUG3 z?wNV^ZB; z`3@o(3;bz&t$!v(X@=vmVj+Nt4^wKkbuz#e$)eLX52o2P3>6aP>2BrHf2T1hyYD!8 zM@vaTz+}JwEx|*Grn4BnyfkqXoL_MFU1cvNsjHo4adDZlSp4$Vs$3}?OF=SLdOywc z;OWxf6gj$RKsNj3AYCCvl3K12$BMEM1?8ZONe=v(FKfm*O2ave0J&pUXjCh;&Zqcm zOJNyPdFt%%rh@7&s-FV^4rQAW%bXaldx3#1&0A$0bcTa@cF_m;5!vuaT1A)+GX#x}#abdy^cZs1EQIL;=>E1T7< zmb4eOlYgs4o{S^yTCxeZFo}B@(=@xWnb35)k|3?SWrH%2p|*e)yPYZV@T5(GYPo&% znfjN{u&6O!AAzL!{BkIB*%g)q!TbRuPusgC>be#ccBtUhpLaXwI3Zrypm&M?lcBUB zYyIlpj?HC%A9t6qX5P%7O#{sRvf)=VPW!XBPl#FLmQUL*rGzbXn$oyK_rM1LDrY=9-5S7k9#&t z;{k>zl!oSRX4ObFiP3URKP;y)N7yD~G^B(`CygQVRIOg8*c&fBMXuxVgAG*lF6?GFrKs+5PpkR~=OkGr)uf^xH>lJYl?qCk$;t z8Ho}(AErj?iAfS$S({v5L`x=)$}==i%jC8$DAG$j^}=cDfaan=C8LEU5A|A5lQogdK@1<7QgIicvdc zB)57BR6wy=w(viHyV&_6R<;RI#LktKR3!VIINm#PoLQ{;+9wmWI5p9VGo1k!y<8Q3 z>9=k-wY&)z6(YfIXDW559;Zj5Q%fUCnGE9AWH8BbYq&DDn9c0?n1Aji?xa+~6DPeh zvMs_QfZnQi%IFHj@38S3W29;7L^0tCeMqZki|9YXUX`3d`cRislP&L57kFQJ2l?lK zHh0R(?E(ZF1B7G!L--%be>GSCYgDu2>g@xW(8Rv=4BYOGGv|R>qJ>EUQQIs@>*2fm zk=v54i$+&`c**gwn~Z*|alKmN#S=ITvNx=nrJgr`@BOT+Z;o-Le z=WY)qA0^>({krWmTD<_lfIxOjaF{-QbF$H8G1WpUY0v2iaX6@tJDx2t-RHU;i9xf; zfRbe5ghf%M*CpdK22J`41F);q`Av<}DZ@-j_}pcFmSyegL?%t0&2CRmD_23OnZDNv znW#zr<;w_0`loDh2-gftkU9UL&I$VHJNZg zcK4q(hrOGfv6(ZVD)T41o7UX4-{ZpS-Yyl47uRhLPh_*NYY>ZN3Adz^XgT z9b;zNxRSXvnWnAE7AT8gl|}hF8I9_@&Hdpm{|5f_b{&|og%FPB!f_R-Q@SlecO)~l zy#Mh#^@QT$w=(n^3d)b!HeW%j&)tvMnOEfXd2ke(+EOY_o}ZLAt3M^vqilJjIl~6- zQ}#5klWGs_rpl)^Xz@tBW`^g#;_sMhgzqp*s|>RS+d`^T<`urNaKP-}&bwtPZknh& zb=8JZhL!I`z`_)FpxXo^)vh0iJ5ea^fm3J_uxTjHU5qTN*D3WosVwC)ldAPuN=T(o zojczNN9K!$$wW*Mvl2K^8?(^PV1$(gaLaIVai1+G$$@i{OI?O2aC9p8ZU4AW_w!=M zgJz`mO%J3Rr>(UB`vD$f83E%Y1?{jxN6Y>F>2bP<8~xj+{JH@6HiZPoM$Bb+x4Lcx z>KlT_?%e6}{MTVV2g3pcq-Y5Rn-OqbB(-?uuF_n|bNyz@HpybY`nQhaZq9ECll6zD z)O5o#=<7l(Ed>{>Y1%C@v-I&#us?}!oh2313o$9EGJhP>P}^L+^)uQ5xp=U$_3K1?<4JB)>a7$Q*-Fex(~>k*GE* zKM$fE7CPbL+2%JlE+L;471P|bBhoqlaPSaH&$(G&yIpfHIA$D%ps2Tq9?p4{=W^Bk z6p6fiZ8ko4{B7JxQGXmg97Eub3)d|rVN5x5D_D`-yQ7*~(<9}+az6lV(>=R;)qO3i zFB;u_ExZlcucx6mauDn##t31bjn4D48?~oD9Et5K2wb1(nVfc0-f#*M*$mD5-7nvd zPlP7IaN{tp#Bz1^==v9o8}B?=d6pAVs~2++*7DqXbkztzwj1p9jbeY}=yEDkp=Q*y3`TE%dD<=+zi@S>e39P8E``cab#w!OA4&&0y81{-6skB{}D2IBE*^bz@JrSEF0P6(ckX|M}twGYn4#xNfn!rD-T zb&5N9jq)>p>l5~$GgiUavPCyI5Ks^i5D+F{#sW0%{%e{7th@l%r@fJtErYeAnZ>2L zjU%cW8h@u3C$-%)5*0lfxvZwo2%+3_zx z521YCpY>>}u31isa{)ZcVuBKoNU&&FBP7;0?0jejpf?+vMbL^t@diIGHrL*JvhFrr zX1KkM?F&W=3cPTsG7*OXf+v zw1uK~9ASIiOhEU7*pJV>g?@x#Cq&>Au8)3%ea12} z;`L7cnASs&r}#*6B;FE%Y+)zsGE4qbdWq{G0I4c^_&~x_cetsQHEt$wI0_aFN(i5S z6DerY5QH)*0Gt_)#ItKB6i6HF9>(&9^_w8*Ply$6G(aoV2v4)G0@=}(a5YLAT(}EC zk{Ha1-d)FWFf6HPal%aT&j_)o*?La*rPpwKenni2vZx*}?G_d3Po5 zuUP+YwTrm5DV`AL%|O6`!%RP!`W0=lY|>22B!^f{v7O<~La0x$zg%x6tjN?1BTimp z|2o^TDenL@zRK4s7gXlK3tC#a_*}JR2{}M{W$$e9yE<$Wwpc(vkLWAPte{;yJe#17 zJub}*=n?k*S@YBF3RjhgtUTd7tLB2IL*w*REG*dVu1(o;}WLU14+NN(<&9-Stm7L3Fo}qCYmV zqxH7}ZWKT+5JX=ETbiG`fnYJ`RS1>+nAZ9h*4$@I#1XGiC?F9XC$#*UeTbO7%xo_k zRvpmS5IAZKb53^lveb&^Pz{Se3G8iViCS?3!>=GrU?QoVqmVU82eH#n2(TjCZ!3sC zjLbA+u6e#s#4WO+U0}h`4LZ^7y5|^LO@W?38Xts4PtwoB8yw8X8YIWJnhzc&L8n}9 zl4gbekejMST@NiXH;=|k{$h2Tl+{`CqswdgB4EI)YPcm~p2f?9Vr*>Wg>&%s>tIf0k=eo1ML&(Yd(j&HupuTD!L%y7fOemAO^*l@;GhnLG>S^p>9mPrdj`Ht;WNVw1{P(1?}z zZ`|?ikbQtRBa;X-Xn351Va`nRh_yjWCr$;nP)`BJ+(6w97-#^BF)&0s0|$ds^Gf1F zDhpDJV?nJmbOS2Yyd8c3mEHr6BXh%a1L+3FV?ZMyZG3Rk9$jNc8+ULfP{~E0MnM#f z&w(QFx+gim2s{#vuKmmH+v2Z*+H+VK7z9wX*8@f1+7k;3u(`VK5ubhn(3&`QbjxP| z0|GpA05qaB7wC6v+VdKug^Ylfp9WebgJQWlaH10`Yl8yLN{zBaFzX!`d51 zHvqk(i!i{U9@zkF-ClIF(EE-Evn(5s%|h)-qML%=)k2sO&Rz?otZi3%$$4g z`+jL2s@D3+TDy1E-d!s4&@k8#5D*9unQ6Q_Rcb}?Nstf_qi_%qSm058Nq~c^g@dcH zhL@v-iy@1ry0;!seYd+mY)?)>z``dAW z2+e7gFgTX@%(PoSl9hVlPTyu4eMzZfL&Hq%0t)C7--5M#mJ>_fUFmpoxdquB;@JVX z+SW|pw^KZjY&*4m0>+r3rxLk(K}kCI5HYk>v09jS6>!&rLMP*X%qV67+@PhQ#*42ovr=qAeei!qQ&^J zT~9Yg!_WFKSeC&1RuVPys5^+Bwt?L63tT!!du)|&$Zg;4EqzfemB{^KxY6zGjH3Ox zX23AoCvHvAIyI1ZZ1M;vKkuv4p(KUhb#93M62Fv^U%QmCFkPTnzt7z{>f_!A*k$~? zH-Xi+vQHhwyKXB%`DO}C$@KcqNyLR1UGX0teIAfYD&9(o^gJz;tnG@9-csa0Vk;U! zsQjagUNrJzci`@=LqR|wgZ~;kTiCg+Bz2%z zDAJueep2iJlr3KF>`;|5)WPi`*+1Pevz*T;AY5cDwhPua)tw8l7w2Wg6nFJ8TbhBtDk-G*wEJP^g2qa~Y_vO4mEa9hZ8o%A z2D_oce7FE*e?2$X?59cctX8$+yaNe!48^5ST4D)wUnx<@cCqPy1_qKuBvK|cV3f5K zlR#u*l;%N3B=>(%m^6Z!S*$<|cHXjsaVMzOQ{FyU*JmeKX+~Lbt^N97cERosB-TR- z`SotVL~SqAg02>hgXq}(9`+3yB&V2anwm$e7RTo2V;5(qjVX6%!-_X8VQ)~A-{wsp zmsW}e0j=3cl~EcDou;)sj6(spDUoBYd%(Zl}-tBzuUP!)J;x8L6w2}@XQG_=2c-$w-hde zr$|P~Zqji!{t?Co*~j&|-ux#oiAJDniuc4A`{vhRDxldc$z+T%JC`vD{`Vm%I`YbGgzNkNzM>6?k@>n=dOQ|{`0~(=|&RY zhlPOHCj0XX>j7{!X9a(2-R!}O)9))|LQmgih7TLKVN5Rc#tr|F%AVI18c~wQC9i(5=KC^oa&iWT@MFnEE}bsZB?XPF#(s)?1ZqWTvikbh zxy_*;-%AaDFKxPhX>aK03T^DM4sVmSwzXBbp0Bt8u)dp6iDSwu6DK2|n~0}kX62FL zsnAq3O*bK?ilWOK=!TJ^(qzYHlc=D~>pfJeGICK?LzHNOa|`1mHa*7K#;i+kgh?FP zQL1W2J7vlmZH+bxe;c zSb_+V-WQ?_7r8RHCl+bRAz1~*k>jko)#l93aYwA~J|Y-a;T`^-FgC zb{_d5zL)Z&C6sm`>0TmcHf5KgX-Bh!RAuyoxpO#dv0j$aLfrGjupexBO&Kv6LC{MudxHti5&iMIg5% zdl4)y8&r0HmmlPak$qRCQde7swY&n0lN5#t!g%;wNli8trru9*95Z#rHVEBNWgmwT zuJkYl5!KpS1?j6^`ZI~>rfo6q+;#b`=R2t&o`Y*DpzN!E>EANPF3^f2_7 z6El4yh$i*SD)53uB0t6vm&wMd@7yDp`K=a|hSU0Wz8=T&(|K;<(&jURTA9dNfPL~# z20=JB-P?96^)KG`SJ)jg>Q)qs@)$|!;;L=L^zZxF^Np$D8Cq~AA~`-hNvg^QwtWmw z71yDR8V=z^FOeMGcO(crQ>jId$1lM!7vx~idPK#Fr$HK(xuZ%eB!UrT!~%+P;_^bT z_M4|(vg4D5@~j}0q@d=R9R>3ayoR;qDMkuCDTzqmga z8rKaU-Y77NZ?a0*saiDK3po1m;1G{}5>uHhHAKzCYgS@Ci|L#sm0YbZ&y9@@^?Tj0 zXX=V`05{63Qp(a!N{WT!?ond|k5)00x~6qLG&$b@J&f}N(PN+@j~SOI2Dai+eD39m z@oINp-2COk18wogqbKBrTHk48mm0^gygJbIGLiSo)=-_Hlf zxit%7z%aSKgYibHI(Q38sL6<}v1_*^=G{@@=;hu8WHO@HclE%u);v?l;G9jy4{y3g zmLEh1=shyOJV0JX<_4(Z;aM?xkP>Ax!#GN|*+}T?Zh2}kc=-@G z@clwKIU)A>Gg^~~6^sp!us;RUe&CD};sWePFZU9_5f?S|LNzso1 zGZ1eLNJL&obRI5!**Lg2Mg=+JC~sJ8(SvpnmdgLO!}JMOqYO_4*XRfAAv70D5oIHn z;OIp3y>E8XU|i4D7_S&v^d;r5caK$zPohaV9f=2$R)dD9Q;u+m$pJyGN(fhUaMsHzFupa_wRQ}w(V+G zw7t63@}KID!k)ZcQ|ez<$Tr~nZKc|b9>ZJmd80;o&L0=i>=_K--4i%xzxmXhd5OHv zAV@mebSO|O+Spn@=mD}@+T-(Uw!5$wzX&*zrv-JiQD~~0enlE&nCNXt)~;|vCG`L0 z-Y%!Dy)>y;Fuy3A>3U<5aJ05&J4<*{W6p8-3~&67xu&zBLA!y{%=5*MG`r$Hpk?up zT|(m3=(!DRFn@8}2(lbwQfp;XtB73zU z_7ADLZ=;s<$IHiMyT?2>p~238)}f~<;M|fwZR0EaKUW2Z076U-@OEJgyj>syZx{Yp z75?1p{(WuubL0C(TsfEx|I_IUQg3J?cCka`+h6%KAO@M5BHvJ%<%Ao_-3|RUb0*2{ zz@1wjzZ_conTZ?q`E@~j#>V$Sd{Izn*fXIj7MMa-XemeC4YHczwpC<^0<}Fn9g9K| ziqpq+Ngpfs-+xhjLaJ+{?ypCpYRYpEYs0CIEMG$y8rF^&YZ~q8QuuVvT=?`vUoS} zNzou0(-=nUHWRv!^UlP2bjNbu3_{AIOEN{0qo_7heGB@cgfmi{kGeixJ;XNj?Sw6# z&DHdmes3j2S08vN(H)Vf5~6K>VjWx6G3|Fp!o6pyn1N)p_P8#~rCNI?tMYuySJO2x z{P)4%S^rt<=n7oHNLC04BTZNcw13sw#nsEs!sYk+3x23e+?J{L>*~rcFn;=B9~S~K zH0c15;7;_xrz5-Wlv9y&=GV7xcpqbrjs2;~#Yi>PG_~HBC)5k}X5*^R?`mfyYFIo! z=lHkVodS(XV=|sk)_D86P&(W6PqiLPCQdFv0N^veui*XOiKpI4cJj)z!}Cdo=)w@- zc0JGyA}TD9XX5hbnc>F!Ye#2+42|9WNJpy%^Aw=(AK@mciMQ3ue6 zaSPhH+`IOCdt5R6(fBs3WT6k(Btp_>1zgG=^3ip0U-}|XF4(O*i|IZnc4f9-<$F>v0{hb z&8yREc~w+OBGx~Y^`&#Q6Vy^UmNdZbZx34a>om|m?R>tLe6UnYA?b74SYt)o0H#Wl z`pRY>lfU-Y+;^Gw)Qrv1BsV;{>V*L@(y0ktL5Lk^>ja<_QJ`0(2FO?N7>m3nBJQdd z4Ynxk1XExttN|^ordss5*4R&1)Q>NewH*{|5sK&k{IcI?>5uSywf5|qZtzqKTx#DC z60Y(%Jqb(UJ;~-(K6>>tIt2<>=Qu39V)b_>N3||@9V_jx!~(YOe!SM{b;)ECc7D~D z;kl=O=;rahWv8Znxm($D=iNuMr=T z-LQIo>hXBy!SUAVc}VW&QuO##BvVzU$#8D=tZ(n~^5;pPOC}d%Xd6+HcJyoCo@Y5p z<|UnGF!Iv3-8*XkGtvd+jFyy08<=n5wv3-^%cc3mFybMlNIn#Dbap?3y3Z*IBUfK_ zEPMkWb4sHC+Oe!z*6ndEpF=^}+s&?l&Eze~Hsd}H8ULM!1I|Qpw`wN#o*RpeN$SvyFZzrM`@<6{wP|HA~hUwXt zaw0!WEC^w0(p8g)TXv-|;8_^d-SGvGO4@qo?9cGrez>N!vYlkh&{XO{+Jc;|S zNti7v0HpX|@zqTP)GRQpUdY3}a_dn4!an9o0H>0H!afvNoKDp6LhB4GUCjQfmO1b6QKKIrU%NvN+*l|P>!tqk#oX++pqr5fST>V>R9wL zJ3l(1-phMurbDN<%V!&c^E39mAl8(l{dnA|u^(o<$Oh}|itZ%l9l?178^lU`5jF`O zW+l5j?Dwy`eyXELr|eIcZvMU=r>%)pXhrKT;kEPE%<3z|RHI*`v=Sx^n`{PV$j6hDl?wX z2zq|$KPy(=ALCeeC5dR48_iIAKbEoilu*tKOD{QpswgKw%F!_6WhDTS#` zRXn?7UhlPSZajaqkRx%A2EKnHDEj*jKaA`=%)Fr6bf@*NJGo`t**~_Z|6mb)>g+&z zFQ_muxV`Hy&x8Ap)tML9O2lhLhsdzgo(U-Q>fr>;*9@U$^{@sNm=J(0pQiC`KfRCy zkFV?^D81tZs-#ZSq%f96k7CW~vdp#&TvH*>Br-uNo0?ZWWHK&U8SWZLQf7`J()6_r zxm33^w!P7I#xNM!`>t?8EInNm5?bcLn^PkQG~5xO!akmUJJ61ymyP%-^ zT8~~A(HFBSg0|$b{CpAFi9hh`6&H@)dxz;_O@PQsurP-FKAE2Mb)Blu`j!01-Z>E} z+K^ux0F;$)X$ju_bjrYrFeZwp9M{MJX{T3yj%LcX z4jtJ(w7;~9X5FwpO%1_%zd)cZWq7rUz!-0UT2h9t$?w(TAGu9dLkdbyTwGA46~}1C za&A&kWupkcwriYZtF_4o1HM(yJw9P|b@{3WoOA0vX-eHUlHH>K9&u`M8Lt!In%|?? zk-uF$Ob;ZiNS05ZVc{-`Hdg|9?1f1Dx;)Ho7oOB+uXPhrds|C_3gI$!^z<{X2liaQ zpm=ITt*DEF$k!vgFdv|6)|8V(lRr9k7s@|L5gWpc2cp`sD1wRm@pIldK_i=BG2&XqrB-6mhuR z!VOqILdO4j$f09B7?iskr=0m(w}ji}scbY$DPHP(r0JNvRT{ue1UHXvFiMw>%%Sz; zKGH^J_zFXIcv?UCIWP!Z=!{K*c1DwjIyK-eQvf)zJKeR+Gt+k zUO7EYSV-6GOG5hediU}$PlQ(~kCw^C*R|-$Rjc`dy8uZ^gR1vg1+>xH?vqOp({}geADrz`SSPnoPatJfIfSY4-Vn z>p4re9_STm6U{MSZ!a6AN&_PYA-(=tHTg7}DqN*igSqdnKf=qXKbakP-#fJl{7Sp7 zNI6KNi2VwL2rcDk>{)~$q9^-$}>tR5_HKnG1ef< zk8wdeD-EX-B|Z?%{rS@@jxnoLhxj^b24|TP0h&QImDCl|w_4oIB*)uI#vjkLK%Am^ zk4shh!|aI+nvw1JQPbIkWxg!B+8=@u;I+eu<@2F?3$2-r z^4y9V%_idng0#gA*`Ax5?$i!h)xJ|}PnwjHJ9AOCahq`V>&oz+gdAhc`zk((`t4F= ztxA8}P3cEj#KIV1fMv^P9d_TomE3x zp>RpjO(w;X%QCEwP3u;qVjS*>*R5AYb;6NKLcfjXcoIsGe#j2x>(}X4nw^Wz}GIH{2 z?rr2glT0#8fP&$wu<=IOJ&5j2hq3u*{|iO_QLp6hYB45wxW!Z_ZNjI;)2%n<2q zGgbavLpcrrmAOQe=^6I%=N0r^cCH5eC^*!2oGI67ZR1rZTE2cbg3gSL3OI$O<*^-0 z@Tz61%1$@MeHtxJ7Tn9jHs)op?YkEnk@9^P?MUAz#&rdT9p0sokzY5m(({m}6+1VM^*cH z**wAZGXwIWl5Wz%|KYn6^wrh`OJn~-$MTSWu-{W&E--QB3pO;phy@*gT}T}^wOc+W zSLW*brzk9?u(5QOo*G_OJkAwu((0YU0!~YYu3ue~DWDRxjIQd3w?;dhz;}E?uf+Hm zB3pd611+uFgd5aw-0W-)#Siz6&)-TWwmgxdeWqLokbh3ze22QDuHgEzy0`?ZHIk%R zl^vH2<(^@0e-bZ$udUil)9+%Z8pJ?!j-%O?rq znl($k3G1pt+fRzb*|Q=*Hm=F@%c;RSu>l#8T%6H7UCvk%Vs#wc+FX-$re;wW*zPY! z5*t{^mF+*joN1rVL5EsyOeQ!h(My4dz72|;Nx4+Q9k5%{=waP0ze)HiJsJ?Q*qE^b z+YV{(ju$6g8qFj>Jc0jld&y|?k^f^t4(DUknhH)~__~h%CjLQm2bPk{6_13b)!PxAZ{mAVRq91~=XkD6W4p213KOfjreOi~H z$>;Uqb1HTL;{@)b=JHyJ=rb9t2M1w!?$(B^yJqfyYXor9XkwB8nCnUa_5!fRa$uKW z4F>od77kF6MVe3 zhf`bL3?qo*LVa?kq7L`JNCz5JclwI_+UQjn$)!$nrO#}2=1~MBr6_J$29%dPuk1|B z86vsJrrzRbPDka1GRkd9*Xz#kK#MPa&Za--j~qo&N0=$U5&j0UMjGBP!;#0Uv!5(q z(t`4nX~8~|fK;YS*+UmLC^u@9ZkMz>N(r5pje(*azm_(wZ+>htV;XCw&x6Sj6^lV0hO|zSH zjw&l`yGl3KVG+L+T1q+Ib;5C+T}hC)S4Z^sQoQxWaFrSxf6R^y!oc=yJsLNR>%Gc! z`}=9DS$RlS?6VMWYt-q!qC@Epb3v+=vRor0CWO2HHB?w@QnU!JdkL*E4mFR%3OqQO;}+B- zt6B2bGc_BSEgz!1={G~6vQ=0o$h})NI!aUQ!psG&XCG_&_9BAacT#f6ZtHu~#8|lL zFy3-5T%x(nZm7JYCS!r8L+b&02*?BzX=h9f$rhcS7$?83k*-fkTuK#GN=C5@Iwb$Z zd;Xz!_26c;$1$X_m0?qQ0x~Vzs2g;n8{{2Hb zsEg&PlE{Fwn@bHCrp3(VDWoVQ1}LOh#?IczJQHsRhe-oQg9+*o9}OE-17`N@<&piZ zHLmY6F64-NLUSVhaBJsjbTy?FT8x76TqA;P=QP9I%;NqbBUHka^|p%}Hl$Y=Rx#LB zA7UATPAxyN64ig$K79T!Hh#DNPd2(?&p_UD+J*Rr{f{LzHhM5r8y}Mnt$(>(<3Nt= zbDg&dd=6-DNS~1wyVIQj7tsN-q=BH~UFbCoHnFz*j7S!5zG$?wPed4AqLesE~5%eI}uPpS}cTujM$L*-{z2rn-rzHWAKE>qa7SDR8r2gD!dUw zX>lM|=>N}Z(hb98pLzx#4gU;^%4qvvn#cAzK(soC2f#|2oua%&j2jCl(&d}dUhT+o zW^u}$^y)ypA%2z7;(qh-%mpbGeslS2;~SMSLp`Lz3l?UWW}u4N8_lO53`EwQiFD7V zxnwUR6)#S04;S~f{>UF@{W_4T=|~8p-x)bkwxJGc2j9_#)lA+}BNwLAKX5l9#IEWa z-)dENkSF)#N@{9~hd_I>hXd0fGdt(sPy^_!xzERYzto~Ce@aX+_mbe|Z(~v;OAZ=V z8@yaH=@G8PwA~Jn4OAdT=MNZxrhx0$`T>h!{1eGIZ`h8O<0uHC%`C71UgkEfEv|rY z^Pt~^K=jd&7qwt1;#RLdb-U+C2p3uun5CmYPRJ5;?mKSXXq%@9dK( z%-GK^%_0V{>$g^om}oMU0(q9Pq2i&^B*>g0)DfiKgbxfOQ{c|v;7Z0XDVfj1LOH{8 zTEzZ3v6sZKlp7Q^N`0WX?WNaO%kf2ZSK0OO@csgiBn?RG)GBR*W8w z{VgyNf!}tm*65{U*C+o`yKxWafPeB45nCn#imL}VYeE1X9+CnDh&0}o8G+%3?nYe&hD;P zHPP*+{Qhk-9sA2F6|eX{2TD`J1W0a>UG20SQPh3$s;yKYqZ41lbGWjsw3DIIg+?-F zzS(Y|QC=IH(aj(cn0`hx4Up54?ZSlo=63bg6*Yh5`D7l$KuzGhnDb0R$;r6pv)RNZ z%<(c!N7-_+SiF{TIY6<=3_9kN=w==;>lYb`h{m-PNiCyOFy^DVS2p7!# z-&CoUD0XLxnOI|Y{ru6KZ@t?w_ba8Fe$TrTnxpT}D&LM~HeAp_$UoCTY-j#4&P*+* zFb~&kMmrf{;k%tVnD$24D8gkvU+?!k2!$iu<*>xZVp7-3F}Mim2<@cw$9QsrIS+f< zf=~`0ZSr}93xO5Kl_&M2Zluj0N_d9JCd+b8lK8E5*$I;$*a`omFpqeT*i9@GYvNCZ z?*CKaMdoGLMEpi2kGE=`_;Kl5=Mm>p1Ne*nyzk7zGu4G}Id{D@1|)k>d&=iE;C1ax zpCoHHvSQ*lh<~rp2lpFmT}-ba(e|8BReU*vFm!A8Ri+u%hmod(>-~f1apmfmlG)w+ zJ?nxfOWS%@wvv)1BW`aZxJlPvbtiqjawlJ{B+ss^*5h zLQ6u9p)qZQZC%_F{TcS_DzI)>17*v13Kz3iUIFQR|rUF=5m@wtSGw zsGG6UG0k0{HUV$N8-#t-t#51|YhkXn=1dS<)+}+8yM632nR-I0+kl2?I*nW8M*K`Y zn0+52epAc;L5&HfhL``n`yOvwpGQeH`GeZsd<;x2$nz)lcWSIi)c=F}yt5y%JtD_= z-M8&shY8|gRe2Al!%Q|4Q=rE$a-E>|W-8E;C{`q;XSg=1d~Ls@4u$!aLtg@qS;Emk>9utgUQw5{~&K+=fa9)`9H{~P2@K3V^TI&o&O^5HIchl z)4oH}Zc)Yl-s}1u{y@Dgp0&f+Xrm*rP57>n^D9yo@$1)v(f9e+cMIF89mOyug^x@+ zsGomE1M0pE`Yq;)Gc5CK%@p`6c4So@o_jR!#W7ixug^f}sU9~eC=qCxCeFQ;`wK&csdeqb;NdV*iu*TR+ zW2UehIL4`E zx1Y$<=ONQ+zO9M_Pi!m9U=XgZKprvTT#EBggOViz*6HS}Sc)^@#fXcO8WX%qGleDP zF<;xaxT>B-6w_xKA8@3&P^4x?eJpejJLgz(~zdY*Q7LN@4 z4eZiq#{3VHKe?)|I|skcG%o+kq`dxNM^VI|Cc~0`o8&|OZL-7u|IZ|!qHWg{XpgH3 z2sVjTZ2c-=m)%NCQheF5K4N8ed+B%|vUQb~8Tv{(sS#TiM@LVV zC2Wpyuf=-+fAq%uvhw|g@dxL7PoT{=RemVR9^Gm58U1m7eFSI(B%eid^k*dR#nypf z4|D)F0&ID@NDg_R_l#99TxbC4lvOZnODGkt0C?B22^~%ZArTM``2nVtOzsOAYbhcTUkKVA#( zrU3nWnS>b*cz^QvM0A)&8vB z6LK9c_Dq8O*Zz$u`_`}d#}2f_cvKO1KVYw6S?RcUezF+_ zc)i(zy=gJb-k-qjHJYa}66?_9Ztp%G`Z9og22=>a`>c2uG-5ZIhltAgOT6j@LQTxx z2GW_#kPN)d@PuTM#bg~uK14K9IYOHL&<=5l-;1okngM@FZq-CJ_8)Q4;=je=hnz{A z+YXPIZu0-CC1vj;X#_%&!T$b$uLpm?H3K1;WZj>G8gn~0VT+DOhzF6`V#(XPjj-7+ zWJDhIS(8(mz5*dHwdT&CJi@$jS-U+-v5e?WJTfNX&6E~F;Nl&ZgNt{J06!dP*9!B` z;@RgI{8hZ#4!h3OiN!>=zZ4?%A@3d$ZH*DqPIN=tn5fg{mU+@4c$X1jLTNIi*kKpO8MYv1;H6d3nd5h)dwG$XwUx$O@MAL$)d5O%1Y`HV8> zbBzyx!DZ{Td3rI8Ud5@GCodWj&8J^W=25reF}Ir4|EvK1aTw82qthy;21mb7r zH+K(tKak)#2=z>mHucT^s$a9%Ct5bTQeoxm+Bl%lTtP3vS$GWNic^WrYPMqsZu4YI z&rN$b(jxLj_$kH)WoJn=M)+yo;y}hD<>Y6IHGJbod+u5O9ESIhvB>Um4^0jNmlbys z${kLK>|LmAT>~auj(iw4;%PbExw$e7bA1vI#Tv0lwuux1)ppun%AI_ApY%QkeTTY4 zrs>@G=~b2+pMr3dAFqj&A=?Wx!yC)+aXD{Xr?|B35>F7gRF|gTblNHkT>j0&2oSd@ zYssb9TY%i-&6?V$oHTML9DRa;gKcUpCBgkZo$sxo1C2cGWbvq}5xs)9x8N&S!IQc{ z_XGF~iS~#-;yw++A>!Wc8$$n+$}h}o^s~hx7E3)q{C(5Lp;Fd;Sw8kz>zQDJd+rc>1_>$Rj zWodsOPJOF{YR?Lym3nVMniBm|vM!SM^0^yV`N;m{(zfH7t5-x+`ZrPMRE>L8#^lo| zp|AcSN+-Am0r#*wWk-$_v!NWKf#TvQLlt46S9mofIP*#dt_DjdTbesJA@@z+nA)RH zpPst6zI5yUcdMpyynm_TaaOeqKP`*Oiv3kTNBAv;}@sf zgQ^?lgc2v^hE3LlN6l*3;f@V#*M;P=-L>R$>E=87AS56$>s^yGb~=ma##3%d5NU5= zwxA;&A+*NX%)+B$+J*Pdlg1fm(`HyU^z}6q!(ARh1`@DXNpzGr^-7>W!MDPVXQLyC zv^=%~=ZWFwq&#Or4p#I%hQ`^EcTY_;7Moko<8Q%F=rq@>{4QX@LH`jPlv4&P`lsNY z--6G63$7+Sa&u?D*E+K6^nn%CAk}8POClYys~{aw_zT#xrzR;l_Fup%UtP^(@FoT! zaGtKNf$GKW>wKa(PYTR;dHZ619RWzd(!pXd(M)VPp|!iY@IQc~`;mYtiPL49?_fny z)M0R*@M}Dt+kFhrI`74mVMU{OESJ=a8ra2PMg2N9zR=h3PJ&0(k%0&ND#on2VApkJ zn^uQc1*?64AJM+4HX6D4F0Q`|7&gB3+_z^b?HX8QNi`i1-Nx=f;-9q zD+=(sy8s`BVbHkG$2-~94hZcy&rRz!;vi(4`hhYJC#bXewqKMVUWAmR%3wr1*kB>j zg5D`S4J+f5L6Bu!6`NRzl%^pPzA{>=e*W!M6WY{R2{%H%IUPXwL-#yYwRjWPkij~U z^-}Ot!IFa+Mc3_4;2t&u+Br%H{o&uGbN{;Q8!BJ3F0@)FSA)Bq|HwS1$fcI$~ z0Xwau8UZ^4efUU@M84?IJ?A1lPFw4he<{!pp6(}hfeP64M7A9Y!?F^<<3;Fk+Bu#k z`1gqllCY5KG$FLC1zGao3LQ>dt0plP$VR1Z-DE+)9Imy zcJ7|9aM6fp0-y-G+JPQk(Abg2adOByLh!N)Uy@{~nDZQqPEOl85=PXEc;u6dJl1n@ z${F5OZHmhmd!MBiO{l06_`9U%F+@MBoJA@*b8kcg)3C|?j#pdV__(7x%lhp=YeNkp z-p$Ar#;hUT>?;$Dc#05FD)(o3aNZ?~CEveVW}SVD@;-t#I85x>HI=Dh<{gB_PjPYx z{@HAw_deyEvrUm zuo{!>wOzEnn1G*(_=agAo`bU#3LXm|x4RcchMJ_96YUa;(c~0BO(UaFS)eek#}~;C zQipe9*JMdncW`*$YEYdL&23_`Z6=@#9UVVG8yU*#TyyMFzvM~c*?Crl$(U$mF)&yx zqy={hcwadVqeTN=FOx>{RT@QigcOpShi zw)d)hv%Z(C^Ol2g?7DhXK@9av((c2IC0vtk8J@ik1S1xHl1|!Wr5*MKhkFO}ib}0Z zr2?6IM3UQ=r0A#fVapt}VY>pkN(G9Jy)PLVm@Fwr78WS@sXA#&^I~Qe*+(lb@u;BV zhWgNbFV1s)W-E)sH^qyXsY524S%DEfWSsbrPb^a=Fu6D(J;M|{V3$1y<0ij%0ZnDU z62d0g@pWaC-xLeJ8Pr{LNm<|~hF7~z>G|<5DmE|`e$;O&w#Wg~&AKUGGq6pLR4+DC zZ#&cBubK}=a@k2Zf|8dyZ`;MW>Nw1`l8+ve(*g|W7{}b)C*KH|78x~uAor;)e@CrV z%+7e((T%d0sM3sMwXc&V_6w8oh>o#g@WgJsdYFUo8@N5PHT=7K#UW$6>9;0x025OS za3cX|$wyuyKI$B{5_WEA^TUMqcJ*UlHBBupDk~SsGKWSt{dyyk$Qw8yl_;i0VKyoL z-ccw~N8g)}v}d>~aAlj{i&s_(R@$A!tU?lcvp=F^{f*IER~H(NMyoiH`V*8BYZGd@_OGcV}R@d zXIz8lrH6+DIklH`ny_ii0sAvzIU#<@lyis&D^1)tw774+@AQHYVXzQr&=umEORan$ zODF>z#CkFw3ry&M6>but3DxP=r4WEJIh8y-mAp`%2pAj$26PRwQZoN;Tl65<8*R)= zgE<-v1SY`A!~md4sZ{0rAu|fjrr$aO!xc0G*9NEpph6yn?@v*8+TdOq2g-Y+L1(8( zQ!1t+j#s+*(8-HAscA0(>yP_JmeUgKk@oYF>a?_v%M zQ3Q=glVs>BibbwO9vY=MY!Fhq7%b}~!3ne{8Tirz-c2=-AJK{47!!fZ-o4xF#esEd(F`ASn_(1#HD?|tOw{D2- zXo)z3D@aNRO^oibY>~jBA5Ne^+pCE`r;6szet0 zkfTdk$Oisx+_H~iZ(g$?UIH2|(!YudVbO!%`%$RTEg`1KAf08!g-g0#BWGN@!bAV#BH6Rh)Q<5t(5wwE#c}RiT({ zo>F0Mvu3FE7@QZoHUoC>I!-_iyWx(lk@mP1jtADF^h=y< zdsDk78L#)JuMaOr9-!x(sj)S~i^uB|P)!Zm>1oal_-Oxn$BM8JvoS8HtD};nIb&^a z<^_P3k>Zh|oTG&{=3&gcGUPF7!pHa2wQ#)mp>2hFa4+)uG;-~^tStq_*p@Xi?DEwO zE?Dm3*2d3z=O%`yX3Wj`V#e~Zev#JSL6o*@5$NUf%wv7&R%h&IAY60fUu=J$VhQy3 ze{DAO_psSn8S^Xbx@Tz%JO%oDi5Rz+eZBE4D0$_7H63$F9LfpF2y02%_4aS=@L1V( zaqi2wKC!;`KIUDTPe@eWmti2~yR0=f4$EH74OqTqY8K|TY^t7HU!1KOb>XCz1)^1Nrrm9L zFSo4E(-m@4!cKut?dx`Uq&bO#@4cT`q<=j7zb>p9)(Z(cko4}B46IxNQ%LxUR$l6b zi3LdnNQGYAo&?t`Z$Y4%4Q6+=in*GRXX>i1N=!-7@p;gkpR;A#;;|KIj>3mSfLMM? zv|Z5+wBO&%~mTOH6D}bbEDT?z3)@4vQm4OsE#t~ z%j1x7bHxOY?&`*da!E-rX)E3JE zK-k2Jx4&<$JiPEJNr5Oya?Q{DOoMu(!oDY$hl>3xT2NG-Bq5;Uh?y7-TY(hy<+WjL ztF2&EL6{luXSE-1WfKo|;~pC!9$<*tW{A?pN@_Mnd3G|jGz(ExP<_DtCL@eet--!k zJv(PjEaudT7h&gd2_^Rq=pIbknX}d%3LZMx1P|eZhd6JpMSXOLUOMl$WZ!UiRo_gF zEnnNq)@5ejq=AfaR|fWvx37P)?85REAEw`*-8fBo%t!`hywq+usNLwBjX5FMNwd}{ zN3Pju1ENj&fQq{7Ya1;ULwY_13C~r7y{uD_VY@SX;G=>ak8bxvM&}htxS$6)y7b31jw&CBGv0glfnZ%@xCd& zG3tOJ^}0kUA|ywlE#~HQy1yLOGnst0^uuM7 zZBRkRr_!l|tsG%qd)0gCT+TvlxobV;Xm7c}T}wd4Fy(lCY+hPOG!K*bdgs((Toaj&2o=--|2cD>vX@zzCHw4iff^hF2IKyR z*1sezLme_>0Kj30;4s_2!ny$t$eV1^O}}y0p!nW=|BdtafWLXJm1%^X)u&hohhc)l zep^Geb*_+mK)t!VhV{1)KF_ckPs0-TeHf9_%I{>ReQlXcyM zfirRVWvF`F318-=;J5_q{jYegDk- zrP5KUN?LoZ)#tQ!_fhwDd_1t#yJKrV7j~`fJ^7~%gTiA;{I49Aj z0(m*;08@e798>R$B~ds-_sW4wONb^ih~w863y^VzJZP6dpEZ(r?^{#sU^8N-fMx?k zt31pFdyZngn0WW!5LRUl@udM}8VCvsWc;5=JoKflEQl|@Bdn`kBeCuBSBBn8k!4GM z4QsLx$ablB<>wNJT*SZhz+VJgu7j$qLn-&&3E*WVD&MrRsUjxS2=b^#89wL@TKj<< z-Xr`{2ebcmAw~n{qf_Qy400GISC!185M>~#m(0UfAaFS(RCrHJ!V-H<#8VsLs6v8T z;Wy$@#Ixc`C$^3FnP2L~T5ZY!~(Y`*%03vW{-y zC|HurSa+uG-;hqiFZ7JK=r3ERODdhc37j2jIC5;h*_*n-s35ZeKAYn^Pji1BmHUk% zEF9ea2;($?vJXbG45Q>a63w$*J#YqL(Jz)7Jazc#6wKQNe1pUHI8&GzTGPro# zT;s&ErW%-PUt%H`1Y8H!wB`mSczMLI99xSck>N;VN^)dyW>2!~WlFbvPE1vrY4CD8 zm0vHse8-y63&$DfM~J$>)<=E*31`1<)(rbn zo06TK3&o^Q2QtkluWye!%SK*Yw8tNBzJSY7T%{z|9IJ{I?=iX%2<9TTciLVyub5HT zoD@unrOuRg*>a~huUHIh+}}4EJ8$POGFSbycZ)q7k4xK0`$RC~YO%ceS>I?Az4lD0 z?1-=?^LrT~hh6CEL-~ew+`Es5SxKR&0+!}-PEl%Cll3G~ou%(2pUO^7Dq2n^;iJy= zd?k(F`TS^Ew{~2t&c(dv!h`jjIw~ZO>)8=%Q)ly}o9V)1sK;VQSLN~BGwy+TuVNWz z@i%k67VC2Z-sR>Arlkt#$sM7(caz)tt>ma}rn56t*!?>df9 z-viFrdhOjOS_Qw^s-$QjhOIlgJeC~Tj(6TEj}drurvVy8^*t*tVmyeZWIa@TbvmAM zq*S?PD4tsN2p}6oo3Fgc>yY$x!M@f#Yrr^rspGEQx381$j7gl~v&Qotd;LoS0YQ@f16u$Ycr0l|A!7$Z_-S#p&n7 z*w&A+cD$sYBFJb5UUJbBEG$rznX+UgFyYdli75~L(;vW*L(R;P#YUS6aa5d5<$edi zdne)76I?&<$3JJrq=qd@la^)OHvTAw!t!c#*ELgZKAZ|uCv73o9|_33C)&z(rKk-Na9zM-t1YF4V60*V8YffuP$Mshl?~&Syu@Vi05dIpC?sP2`zJSgt)xWQk=yS`W2D7PUVY|HhzNbQOf^2*c3*x&0RK#gI4+ks z$j%dG^nAJQ<5J3O6M0`M1nVHZ*R{{i$FGB!jTCbHgv4dI47Zw9^QFhDm!}S44zfFW zTgZrtq3^IQQ5LbE*8S>sm&x-oXHFfm{{->|`n4sjZwM@%f9^9V{jlOr`+OWMIQDz% z=JgM0MP2CTRDVZZ)?7yVn?28tHOvm5yOXlzd*NN_550H-BE;i$Ew4*zk}fBsv6TJ| zBV^w-+mAuwQz8hAouiF)>4DmxM%S@v>L~};p=@Lsbv^gj@D}-6ULP1Rrb8tGvZ8QW zcE!qFBrK{Dvu0!0BaMhjT%e$MJ{O}Oh@>afRq24M9$HjQpGfOUC zSLwVriu$e*PIQi4c+00sy3xfYyO1fvrwVBl*=(fq@&E@EQxh)q&j4eO)BEHqLXG?UAu!-k9 zZe5gW{KXKbCDhH7`)lr7GEp$BJV+m+ws z2h?gl;A1muqW`BkK&!93i!1wTs3*W%6j94==`X3Njt+lG{aL!&%^N)=&2DsO&GZHR zI;LbuXm>jrVl&H@a}m(Vb?vw>5B_BD=%)DlWZPrFR^aFVKRW<>)P3HUO=pgFE=(lw z0PllO?Of|{N;$3$q^o&IGKE~L@`Zla^8C3k`V)*=^rUo6pIlmzenMR%@R+tJ$u{uS zM{5uEfI@AI5^rYd-=A|wch{%aR{>jM8`u)c*E0%LTfLKIJlPsQO&YCMqNRV?x1|l_ z#dYvEbq{ppI+U@aO8;Eu=u9EpAMzVfdT;mmb?4dTDchRk%^9}48Q7k75B9y$iaDii zHkS_}E~_nW_3XN;hQe!Ac#E!Jr3KkOl*C@bgl070tNa?3y9Wr24hYGW*R5$apsq+x z1HpjaTkBw=c!VmKq@vP{ijdW4h{|Sxif)%7uLn(E3r#=6C)JXGCm-({t9;MtAYao0 z-w-~tD`N9i2`DxLxahJ@m0W+$;|g`7Lz=hEy&-VCi;i-$a_V9dr64HE>M#ZPO#T$w zwo=@t-mfEoL(|yvnPr&6UlbDp zqePAt)|T2+eXF{&zc?E&w%@3NmV->))ouDg>V8=rti8} zqjgqegow=x{rzbLBsw*q;JikyRC3nK2EAi`uf~kYhTo;**8>|lQ|IN9=yx{{8+k7q z;MysbkwG1sL7gN8=~}Wqk0F|w3M@Sj8+9+6bnwt`0j)h8AVp?|)TD+xZ;&x zJZ#pda219bZ%G?*thUX{2ph+TbZj2FTKKo`G8}*u_i83AG*=S@d-mY3mZBKDIp}&g zra?tdgf_Nu{pVSkReM?{47V17Yi)xvY=(!Yak%=iv22o(=FVMroo$Ae z)XyWz`<}XZON7g$dNQ~8>VTUWCTo=|+Y!Tc@y2N9{j*;CEfaD3_wTe3Kh6yzb6Dhs z(KJ}S>?`%C%ZXE0`p+N9`s1%hL-u(*_|=3OBP3RvM(4`Drv>Y#KT>j^;c`YCq?OHzDt&jDv{$;&y!R~Ag7Zd9U`d=1?WdQcE)h)ZRY3_kJC zc0V7lXqc60AG1`9#Hwu90HF9V?+gGVbj2a~&-WmSPnW5D-x|=3(^3IfMi1 z&b7(ani;|?05b^8l86iL5wp5~_e?*CkiFozTNn(jY^1p;1UiK{3hB6hXkuY#GP>FG zStmRUBO!HUrp_;9(t16#`m#zrtMLBpMt5zkSm38E`N`2P%v4Epbo7i$*4kZzZMh2(t-U23rSSIBHAWKyB< zenk2HT;<6U5-=BQ8XFAk4VuRoWZ@{4bS5#wS@cnOdm|_^F~eK3AjGwo|+OMW=q1sfJ66%vRvCzCg=- zS7!%<;%W+a9|CikF_=EU@W%ssU(-2I@6|*=2n-1POh2-U!Vq`1SW;9?wb%JktUHw$ z2!wS3PmD7*ozS*gP2uqMo`Tz`y=IeMq_){%K4jc*yc4h!cc`olf{WmJpzRXGB+3-J`W?35oq~noz zm4NidQxrl#1cEXYX8(5Sr_9_D)+@v<4&y@S^ed*7fw6lOI}-*eG8b{Xha>KP^N|sS zFs5{6)X|2NcyB=<35=C9>O~Ittb)zf9)c5%9550G&ujQYd!Ygu)V}}++xXlHUqYX| z{ZE7W{+}BRKtTFy?9S=&=?*yWo4)x9%nG>mUA}alUXupUK|nXAz$4@5Kl>WSztino z_q~#-_`bELLOKl?#fL*p;w8Z$OlBoTpiSx|{eBXfBpd`e4gsa*|1lIW8v}e)q;8fS2fpK?WHf1}d{! z@>ulcYxEM$cpGWNB3_CrLq}T2Gx6J)?s4N-G{%738m;!3s7Opn&P2`eaGw6tf$Q;X z-RnRV*FqH$bkjh0v2zJjpZ-Mlw0fPXqH&c*Bh}H?lyu z9Jc6ow+AbHZCpG;!oZ@#=;GMs<;-UA*iPpdQKu2UIK?OZCu$$xdoL7yzwbk_>8p8f zQb_uJEcze(gwO|x#;SlLD2kRdx{RdtyA*gC+g~zI#ofMIQ8zDpk6inYQwkBISQ(h9 z8OK<-CZ`)d%(x!5bvsHH);BLa-M-T^+tczMZ#CX;O4%OOfQi7g&v11+-TJ|+c~A9p z$B!1D-96q$J>CNN@)TswW!qEml9x*BOabOo8m!a}dvxnbcQ0lPgBM||JK?KLf)uz0 zrrMh3nFf~81rCeEFcKOk)UrFeZlzFlc|#X}3tQdkUHt*Pf@!sG8YTB0vsQsj7YUz+ zyWgv25$kra>-=yP%!MQ9uhi@nm9u&ic`_IbCh~_v>r53UFVb3I>WK9H$n^VOlP!G` ztc)_Od<$4YdogHnPh_ozE*u8`6Qy&NXmpP}Gnw9Fz3Ap;=0e=#ZH!e!ME|4Y9J$*! zsr&ubQ~>7l6BI|~W_~f}R|*$pqQ?sCB)?bvrx$g=O29ZA!ciei53TVkvgARTIsnn`b z0{KOy${eX!y~0J}dcF=J$@3silE@P;AR){XLhr7H;(vx#q9AAn4TjLh=M?m5yhM z>g~b0sXg${IESp`W^cNCBiM#vSAy_8)_|Z0Y{$RXx3`Vi^6Jj)mSei4* zkz@+9H@Q4tfE4qR?41%=g_|FT%OcO5gF>+)%)?VN%dj8NDO@Y2QiWLpMHK#p@h=hQ zLZa+{L;zX+zeU6hi#5si=>IK%B_DPkp01nFe4~i<9C_w4gys(|cSb(~e^n}S{2nrd z`DuJ7V2<&*U#OHM6BJS+!n`-#(w*iDkk6m^Q0yd`Mj@-k647P7V^0*XVACX-5&P(c zI5>ZcasI!GvD9GyZPijmlaZk>tW3%FTU(p&T$8Yo=LV}%JFh>F&L#)E2e`K=&Uc;{ ze-l=k7DT;TximV)tqqT+?H>y~4c?kHzVclUZ*Nokf>~EcO{PxL4pte=AM5rl6fy<|ip@DO!<;c8p1oL4$22mqr=Z4S*E`qRX3rF1TAPn#IN+nfvgS!n; z(Q6(dA$TxpB5mR-&zHL0HUc6V@5|L?uaEcbn3*qPEuZ7T@{VXB{SI4_-FAf?KVfA` zIDT^DR`}|u60YJkuy0F5jz!*vk{@tP%Zh*P+iFWL>;@VvacX}W>V(b$uHTBP9}`y$ z@T~gOaZJM`j-jErJs47|v@L>Bv)QF(N!U}^6Au)Zx{h>l@7iKY0yP;+$TIj& z!f6nBeSP>&@~WU4mqd`MdL_5JQu(OvmpI#lvcfI8k?{;lJEVzZHz z^#4J^txzl5Z{+bsF;!Xr>t9x&rT?+wN%`LpPvt->(EcA*j2az=j2uFpgf%AJS^JQC zPEOsfsef9-$uZe%7&$6D&oVMnXiEg&D>wxI$`?mE1-C%nCjbo<)z$taC zmT1YFi_7l-YHbZLdh^`Hsg((`RWj`#MmDj-J#$z7z+;`Yk&Gc!f5UbOm0TZ>zX1FQ zv(o219G~~wxM)2TBUh4Qfhk!(qftY=Li40@`n?a5s62)4iv2#FfoOIt2g8PJF4gEB z*@Q3Z95|V1U5p9LT-OQj8cx-yx9!9nO&r!+>Ekj5?_!OxMM@5{`f~j2q6O?Y|tS#HCZML<1dI zq0f7YY=cc3z=5IK$*{sM_#duH7Gnj~P2des#t70eL{7CPQjjEC&M{!(KrtxVv@78$ zA`OA+?t0ZIc&vXEHG@=UmDRg+WzsBS0Pa9VztPH@Ov2v_fkS$clMEg;obpPQ_W;xHD40tS!4G<-B! zn!&VDm0>onOhe=y#toG*lwY2-kK&j?0w2ajglQpPaa`hbqqfNs0h%VNtf7{Dfvw!4 zma1DsO+Sna2u_XUFg~KH$xqS4vKbDAH%1u7W#~U2E6-wBDMv>dRb?V@4d;l~Z!6t) z{@-MA(QV#)^**a>1jy78)4a3W>t&r~7w#b}_}QwR_}p-R3F3xkt}u-4W~oS1Ih>go z#yqOQP`?Ykd|L_b5vcr(^xPupqBk;F$ymermHuJVXG}dM*%el+s8cM47z_DIJhi zsEnLPntE1BDJ8(GvUuaj6V!R&N6R`B@h(T@tLnjHxG1Oes=`kuTPrnCiDSUh!zqhv zMde4nR7v~On%{^@U|<|$mlr0evP4@PWXygZu+5MB(|^&buZm8nh(~%+=SQwjNtGM# zemhA@oR+nJB&8O`NSU5c6sHJ6RaKhEMOP!Qrid9&s zRaB%#{)t))`%hG2#83*NrFzPA1l508pj!{LAmJ0{9}8x>B9oqpAJ(FF%e_#Ny)=|Y zvX{CdX`#%v)l?g(e%2OtiqC(+p!kdL0puU#t**#B7kJfqsY-6VkfQLnP-vULbs-E6 zfka-l>ThCcWs&F^r$QJ_Y4e8;Sx`Yv6QrjaK+3?m;Av?y4B76rc|%@%ms#A1z2co-##vNJKMnqTdv>NVb1D9UO54wSo9 zn>~e5CztuLEufvRq!_H7qm>RJ=MRZ291zOR4~1hsbFGE!7jG!(2-#!WlPjtBXB0*m zVb0-7ZEhMA-?WEdA)|AR+SI=9)A*Nty_rV(xOE2AAdnq*Q%9JR0lP-K%u7Mnod*FW z#v>AxRi>poWqr*!!=IdXMYbkhN~T(hp&H6(_fD=%9@b*n=oiaKn{jC8i7!QW)g`XCNOGN0R;RnJV)NVo@I)PYGBGHvfni$;)&gBYW?S3%5sMsOiaV`Y~T4G@Lv3;VwJ9udJCv5M9jW4=4*`A}SrV}+?wa{Qd zu*&&?0#t9BG-Qg7YB!h(a+;%S>BIL?z{)n%$V{?GXHCaE;rcB)X^XcCvoPd zuvrlDY=Ei;o6=y!;96YS<{Ko?tZ!zg2w$d2_CRRj9la299WjCX;?F|U$2(qDI7nxG z3QLQglI4E&$s@)B-2WYxv_e!X0sXJAycq`-KT_yveFIpel9e$m^(vh!g?_V!C_`qZ zRYlR-3N^#i=7CCa=ahR{7Y3tAHfW%hnEro#=JOb|#BCHsmlH4y2sTmJvQmZ(%lcPb zko1{2;}Z(}SbT2u3Ww5+#Vcygtwo-@Q=S=qN*~h}MBz`$USatNI5VPi!JEo-W@4@l zM_gcUMRXkP8fLnlBhp2XN<~{oR2gOR^j0lVnFk3O^F6iFURb>9nr@_;j_^%vD-abm zE^MjDCw2;2ymaXeq0^dh^9w698^f-ZAiR5nhJkk_-UeqhQjn%03HLiWPd@Qy#{-g&rnC_RD7v{1pUx8%B+| z75_#;P*u*qkF;wMF4!zrdmJ?1Z}NKwQ82D@A)MI)#jiiR#o`<3yZ^5s1a9$H&|Bz5 zmdIbgDDRtVx3>HyX+KOmw!#I0fdu~!#2=CR?H1ZpR|NRkFuq};PF%m6BI;=kJ#MC@ z=LM2*LH|6GcSDGdOekSyV~Y?9DUhgN;QL7FP3|*Vf4J3ymW2xvzZ>#Op!k85%n^xv z8gd+E)E##20=}=|4S4&=_Q@dJ$nNbEGYUq z0OO1i_h$&#_tlqBtpvsBPiyel%>I#c3ytRpY>j=SQWKyYMYuO)#N(z!1rJSou6?9_ zj(sHaX(k|G`ep#r+pInaVuRJ9;l}gFpc;UviFtFlB#W%KnDY1C%{0PZ9k2o=*0$ z6*5E-jmvh&`d%;)8VBG)@r?mb+M#! z?4x@JDVMXh30!_4?U44`+XKR+0=RCLW`h2irI?XS z5v$klPkVv@{iEMvNaT#(Fh10o?*~4_a3#Jyax_doUyq!f?iiUrYJBWo)zQTh&L@q< zoq`+tu~icXLq4lW!#(yo*QlJ5lU~VEQ;^Px(w$|fqmBZm0aQ>e!4B%83<284dD{Ea zJ;v{VNTY+u%XAh6kx2=jDgbE@&sz*`yh@DSN6@mPVoC;|?NS0|qqpoCoM zsOG8DAub`r=tIqdoKZ)cZlm8ksey$lveOH)lb5jRRRGj72qHW*x|Z3_%G7M}WC;59 zo@q(|xRej)ny!!)vt+b{Cko)$^|8_)#&!v@lOXkS-r2^dBpZ$REhKb}RTTvjD(`Ha)TUMet9)aOul1*6K+5_9(^rJI5jdWZUFEm4DfJ22jf+W!mWhg z6ms|4l{^O%%mH>SK0$~I9g|Oo8^HAiysz4$j*=HKX7_bYn>}za9`ot>eh-r)kdqlY zMhMZl#+JzrM66AMId2x)h$TysXQ)w_3})XDyRig+g>3H%j%~Y^x}r*}G+QxwHP~6X zeUAI6SW%ly68ClUjxlAP%;1W3^`#t`E=nK)(?wP<7?9W3@Iq#5!zB{4C4WDS6rD-O<)Sn*d_ z;K7rc>P;E2PyIy7sWH(P0X$1IdG_>^FAG`~0iA`}5bxte^{}6tP>KJ^0y8BE=**GW zf1Ghfg)YFVcPVJZPDPlM#-FxeYjqy`;~-NVdh;Y zT2FCG<+i}>a&onhS*2&dFW@bbj+}N?3OYAm4&PsKKLd2%p_PpavP0k(WofFg15+^> zAsDVq)Oe6p{(k652+MIG|G9;kn4Hk6yvQ6baU1`UkV#SI)>7Dbm|UocK5n%q62B;b zc@4?~`PXCF4E<0QoF`^KIJeON)X_1 zt_4L1ATGhGg;f|K^o<&A!fFr4`S5|#1#g^YydqI4UWMRrDX!3QxTj!E2vDTO55EqE zc>fmx&)ufOWKvlEe-WTOg5trznQ&sy@dguDkRvY(u^3NS%vum7E+a0Jkq`#B1wS4* zDkn;ZwG?Oy10;=f6UF?WrDhTrJ5{^1oMjR$unwCYNye>+?sEgPBRg8#6$q>Yi%Rt!k6fk z`7`n!^(?g)^sjSiqt&z&a;W`;`Z3|BIBXmh&H$afIK>~_7O>*J%3ESe8{idlV&94Z zXC=wfIsJH_umZWBLbzn8=IV2Jppu^XjV$pi$LRy~$B)aVW(eENlWKy#`%;PdL2 z_2{gOnyOj)#uy+D>5vC!ZbKiT*$f7rX7Q*bsbPYfRbnH3BB?y8rsfw-q7)*(Oq5YC5gLx4DN8UzeeD{Yo~ zij?LKCqNu{Hb-3|L?zD<81Y4A&z=M&YV>I#A!1rdQE5++N&=_Bn^fSLlbW6~#9QZq zNT$fpLy5B%nl2+ym=(7PFq)=%`vvq-#Zvqbm|E?~^o>mP%DfXnSM;nmL-piY`2QhP z%$Mz<^3+8(tqbziJi+cE<>@D>4P=^!vN1Z70|5j%U4^+nu)8qekj`1Hb z)58~+1lO{^f$TAHpzqhCxBX;K0@JMDFLjhiY zoUfhlR|f(dh78sjpkBz7M@K&GE$Ssn5j1W65gqYx5P>!oJPp4pxX=I(E;XYihmo4v ziV{~wsF1>}mz(3y^(&-Ty3srgE$q&AInuPNHrgUT4;UVJoOF^(=xq=OIZ>!^v5$#E z)|Jh=x!w(WNZKC(?msXZ4yG@zhIXT!e=2L#VV)G9z$d3tU-tuQ}iiebLE zIp0NG=Akuy(0ZaYI%`bg<+&*o7uVk1kaSj_ zMNd0IBDp|_Y1E;0rd!V$@1RQCZ^9Nqo=gM}n+D?Uxny{Cdp}Hz6WG+c>j*6 z9m;O>x+ow`{q=S;+MW^NceK9^oTu=+2WNUYIVxm`QVNQa+mkgdc><=En4_Amo?%5{ zWfFuV!l;nazu?-0uesOzmFM-Ha3Qw*U-~RpcR>HSyz*50NCgB~f~pnx{8L8vuM$*W z%#2n3#|0lVH()))3=cBr-8*=gsB&N$%_5S>icQd!EZmCZh)==N0$dC=^YW8Tixa!+ zfs*8mq+;6-cZP9Sy5P@xdsZm*{rt-%Q=%VXTPCB_FnlmEn3Fo>LBXtKbDrBYIy&%b2N++YpCme@Xb9_I@-sCj)3Rl3lUmSG zXh%bvrx5YHLD2B)F*g#fggO>}f8(=_W4@}F?s~9`_qw8+CI=0K!EqIp0w>}5n0+?> zcz7ewZu>&tNGV23+y0{;*O7h@oTb?3kdNr4XDZZ$CgvGgG7xPi1LbJ5l}UTioVr~- zwIipB@{^BuwcDnv9!50mP$i}DU<@|gL_KGk^C2s}AmyzYv1T*}!Cd%xMifYUqYIvA zcod8%ZoCGm6!so(&rS+CYiwW@OU&}5omcpV>bMcTxKJ{yj=9qD81s=0-su%K3$9dw zShHfy(xV?d<`nPYHoIK{G@4ll@q%tL{(JWYz zLPZLWha35aCS4cn1K6_S4_=(KmL%rvnKk6umP*Jbl|i>MS%%VSRrIHkvC*03plj6w z-)QIB_S_+_rYjsY0+-4f^a4V7&VqF8M@!*V@>mP2+f1!{(BSXiy5pbq19&|^`R_%| z57lnK%61>WU&6R~^&r&MR_Jo^w+~&EMrwG$vgMh0y0PG;i>o_n-%W5ccoy6{f|ZX? z=%{zQ9rf#)W!vYDoSp4$EDj-E+}@XsF&TU)VR1e!CR%xL(PDKnp)KT%m?90uZzmYJ znG7Nb&4H|%#lU_*Ab)OS>EbS=v{DnkD2WMQ7|)@ytf#lkv6r4hv>fk)`)>U1!t&A5 z-e)k~mnUE^2Ose|dq;^X9Z@}r$Lz@$zh!loD%h&Ot7_po`HL%FR6v3Fa^gBg<$mpRIXd->bbmK2Bv>Syg7TL*D4utzM}ubW!ciwU&s} zJ)=MRRxLW@?9)<|-`Ga$Vr5p~-(1U8Js; zw+wOwXgL#FBt~T}JTzyKm2GTRp06uflFD{> zB8@F)!Za;}CQ@EWyJ+5mMPGw9#?41*rl|b{OUUX&F5C_`Fr2uQJ#&AOtm(f24_#>Y z6<+``z+U!7;B$NK5xJa-LNW$E23HMS%aH_#`y(z8IOa_l>x8$nc$U+&Tr@^VjirXRA9>*# zM=389RIh=wC1Xo($iLo#b*z!Yt_3*uDOTIl274t59pf@?7GIFcr`VAe!Nn%TK`6So zA{CInf=6?F*cxRi0VKir`}4t_8c3i$sHab}){l5%Nsrr6Z;FV!mrbwWkA=XOvXG)b;17F}{9??qrrkCA(pp@&;&4SltnL>*w7H zZ8kD$Ec?A7BGg&sM&oi5HowHVH@qXk8Zhhq-BW?@hm}Qn8AG*9)elpz)yQkV`>w5d zw^<$64LlwZvB zYs+>yC%xfNzFo{Afu!#vSO<|t4N79ePOI&}!o2k*OZg=OG1w%VySPuaC- z3sBKf^5a|K+`1{PjJF7-m7M336jd#1R?FH;+9^NPqE07}_bk~(TA3w0jcHrl*iC4= zTuG5P+;YH~$AwOomiY8Dz1h)a3AlIpW4lp{)iT3Te&rV0oz;$BPsuH^Dx%h-o)gmm@c? zc@z322L*=pd>?xm^svrx+;4Syzy7O$YOX);Y8mhc4+@yQq5)q`++188>@@9cnXFvR z?Ed=MtBG!a8)QZY`ROY@kvLJx8;-uHj7)`609Pyh@*OI%JF(dKV>`TW*W-)h*s-1b zI~Wl=FQ83a+Qkvh`$_^p^z;5$=pH%bB19NEyB66}#X?fct=$8XL;)O&c47kkK$it` z2|_&>%)+q(;j|_k_HEn|yEzc8awIUyRwLD$vV|R2lIhrrqHo<#od8=A<%O{pireU_ zh9P&0BBZVzF3Z$8czON5bO}rzE%yNRPyuxj{zKQ_)nWgm?yu6YF|!T8{2Uo-w?~1b z*|O5ig1SKS2^DNz#F3;bezrBd1g%q6YP+{k1ssQUo8aT8i=7`*Rl6`{+N%H>k4@}^yQs-ASE~iX0 zC6No4g*n#s>r>fub#}XbJ*_+ir51)hClumlz{{0S$ad{vM9ua{_y=Nl8qWimroog-Kt$tH*DJ{5!Jx5M-9 z19*k}^?DPOxQ!Tr?!tK;q*JydN`EXny>jsWGwqb}@~1NFIx6b7xpqGxtB<|+xY^$* z8w-%Av~^|Fn!MksZr8p`WklQZ#c+iWKBVqz-Xzx@+D%u?Xwc!4dC!h4xD)J}YDDa^ z$f%64h1f!?ROJ`FvU0*5+%33eD{h&nJ9XEEQ-xRTMt*`T>BO)JL9W|4lyIU{+=ryp zBxKi6oWC4hQLk4Ta8g+=U?EfMx0IC5n7(kn7l|qm3zvM z;^sMDNtTD?qL97{Rp9JW@Zb6Nkm2vmfe*_>#NgCE+m7b30 z>#wJoVjheyTYwEg$Q?>a&du1Xh#qy_O0-u*jlKD^l?C?^eh0%sMC2Gr1)EVwU1YTc zmhlkL@?q41R}E3{9h8$zy(~HuG zK){CedmV5Et|i6&*~k=9zxSZ^ z4n!ccyMw{^o1V*SH|LL}B9qV3zTN-ud;dUeCWR5^W;#4Tp=kpFu*KLcM#VbrLqFilgj9v~;QvcWK-)k5K9vVJ71YdbiDr4P0dOyia zz~kZVAwq*H>g)dW(7SbQx!V)u)uU%i%6Yf0pl2TH#$D@&cd;=nz=5(h6lI&{30bH5DA@k^^v@ovaD2t02NDD%m>2{E z3)o`;3wQt3O#w$*_zt2Ylx~glolj3|Jud=w1BsB6TbnH=5 z>stkZ>L0(=gg>qD;LlBHj+H`G}AhTeQU(YacYdfz|${TmQ47@;}=LU(r4Sl zU!#gxkR$52pnkYk6nKFeBi3wDrSh0`4_!5?k>!Q^_-VE({x&@n6vwrWidTR%4D%dG z)K;6_-Z-z)3gk!Y7-QP7F@9Px)H6%rO}ny%VQ?H}|Gkxn;SF_=kaq|B1jj*y$S?B0 zwz2mc_fLuVB|2jBwWrTomHW|RtzGs~sdnM;U8iJEY@WDY*!i56Y5KZgjwx1Gf84pZ z;Z4WW17F#hr;29zBnhZ2bvvr}JL}Yyohj3L^aJO5Ppkf``fbKOU73JyO3&Q3bqS{D z`V?PKz2$Y);z^Uhn%<*N+^b@aZrN@;;e7Ma9&Q#6M_IeO0xhQ#nAE2+~t&W6{Rna`tzTTWT=SbDtM_l`VADH}n-7MK% zdg+Su{EOHf4)GnCdU^8e``5qyJK@qJcd7LM!!NbD0i~P&eMn(PnG zKeAf9%V2xMq(J3+b*lWDn$1t7c72?7u=Tv%mDWim;cH*;t~>8nk)htQb?S7jg|$(K zvh1?{-Mo{0FXvv?zmK!@_;0D^32$%y-EjNl+edcn!rN!RerEUN8?g3%uex`&^!xtC z^7U7w*H5crd%cx`vH7UMErWvrITG13QdW2zF;0;z;!SPSd?9K3;ohX{-s_I?pZ*~E z{?&u*mAil!UoDJW=@4Wk({lCtoBua*jM|N9%9Zu<&MPGLvSTcK+_LZlv zPHFZ(Up~8OpHt1Pb+=02Nrxz?teo_E&bl{NyTV_-Q9G*M2)w7*$Tnl`!Vg&&Ri-u6_m;ks(Wnwgx@eDgY$<5*tIdfM0FyU}=l;y#86dwy2FT3^CF&v*Hvi`^A* zFU^@^?g{k%yDQlncdzNAKhqmNm){QCw*J`5z%70$SU#x1;O2qLH!IF3yYYVzQe)>Y zI2GBjwNAmXIyL9*rW^U9H~GxgCCq#A;L)7WB^QMgmj0K^%f6tnUAnpR9a}P2w`Ng~ zV1)8v$(b+YB)WHgTBYzWF*Ty^gH`RR30F)+-biri94^#(STQdl^9=I~_M|86y{C0A z@y0*7)E_@};`X$|&!%urdwW-TPWw6EGwX$Kw=YRc>y?>moB3(VoZZXL?Ww-@rs+`i znxoq$T{5b!EcJc+NcBh6UAcqN??11f^28&!`1Gr5?Q(TbE^d7-S6%aX+46aH&u%`S zSHH0M^tI`6b*Z;kuiyLg+HLE5mD{tQuj{wF_xa?#+TZqn-<&=i|5e7aYR&hG`!Dm) z)%?Eu{cn1`Mg7A^>-We0`rB{+e^II70p2Ng8L>B5+EiPVtD?jYn*}#c{P4J_^l+Eh z%h=Uz{pX`6PfEPGp|bk>1kRu5ij`j-ab7u7IQ^TimA`ke*6yu`Zv78VWo}h{WySYW zCeK1Sz2#@YQ!l=f4gAZR*rYNRG-4(G8+Uv=WFO$o$RxrH8Xo6hm^0HnVr|gUiBo|s z)KkDQH&C|&1{#233=GlEz`@|uyps5k%7WD5SWxQ>-GE9pZ-*a1rT2j2$lNg9K)QkP z7|;kv8z0=XN7vZV#vPmqRB{ohQ4mGrbD#*k?n%xs0*^$aYyWclw)ktH_8b-l1_2c9 z^*|B0_QZk$Y_5KHfD1UC#lY}L0p0Q$z<>bH8~}|d%?0`$oA$g0X(1z^<)?vG$)H%i zjt8n8;&Ws}u!chKYBB3>eFlcOP*w(h6qBU*pe7ZUROY0Drz_FJ0R2EonEnRFOSUMQ z(T@LbM}%1invu;y?Mb4W wg5K3am~y=Z8Y(CqFLeFr?Lmb8q7I}ihT1v|@MZ<(AW*InWJm<%#6A!Y08fZRIRF3v literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BigFilteringEpsilonGreedyExplorationPredicate.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BigFilteringEpsilonGreedyExplorationPredicate.scala deleted file mode 100644 index 67a117cc5..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BigFilteringEpsilonGreedyExplorationPredicate.scala +++ /dev/null @@ -1,58 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.finagle.tracing.Trace -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.model.PushTypes.Target -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.hashing.KeyHasher -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.util.Future - -/* - * A predicate for epsilon-greedy exploration; - * We defined it as a candidate level predicate to avoid changing the predicate and scribing pipeline, - * but it is actually a post-ranking target level predicate: - * if a target user IS ENABLED for \epsilon-greedy exploration, - * then with probability epsilon, the user (and thus all candidates) will be blocked - */ -object BigFilteringEpsilonGreedyExplorationPredicate { - - val name = "BigFilteringEpsilonGreedyExplorationPredicate" - - private def shouldFilterBasedOnEpsilonGreedyExploration( - target: Target - ): Boolean = { - val seed = KeyHasher.FNV1A_64.hashKey(s"${target.targetId}".getBytes("UTF8")) - val hashKey = KeyHasher.FNV1A_64 - .hashKey( - s"${Trace.id.traceId.toString}:${seed.toString}".getBytes("UTF8") - ) - - math.abs(hashKey).toDouble / Long.MaxValue < - target.params(PushFeatureSwitchParams.MrRequestScribingEpsGreedyExplorationRatio) - } - - def apply()(implicit statsReceiver: StatsReceiver): NamedPredicate[PushCandidate] = { - val stats = statsReceiver.scope(s"predicate_$name") - - val enabledForEpsilonGreedyCounter = stats.counter("enabled_for_eps_greedy") - - new Predicate[PushCandidate] { - def apply(candidates: Seq[PushCandidate]): Future[Seq[Boolean]] = { - val results = candidates.map { candidate => - if (!candidate.target.skipFilters && candidate.target.params( - PushFeatureSwitchParams.EnableMrRequestScribingForEpsGreedyExploration)) { - enabledForEpsilonGreedyCounter.incr() - !shouldFilterBasedOnEpsilonGreedyExploration(candidate.target) - } else { - true - } - } - Future.value(results) - } - }.withStats(stats) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlHealthModelPredicates.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlHealthModelPredicates.docx new file mode 100644 index 0000000000000000000000000000000000000000..b8573ece3d8a699174a156f9276684b58380de16 GIT binary patch literal 38172 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�*bT3u-@NJhZ#0XiXDRa^v;$5i5p8=L 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlHealthModelPredicates.scala b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlHealthModelPredicates.scala deleted file mode 100644 index f7ff95c9b..000000000 --- a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlHealthModelPredicates.scala +++ /dev/null @@ -1,129 +0,0 @@ -package com.twitter.frigate.pushservice.predicate - -import com.twitter.abuse.detection.scoring.thriftscala.TweetScoringRequest -import com.twitter.abuse.detection.scoring.thriftscala.TweetScoringResponse -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base._ -import com.twitter.frigate.common.rec_types.RecTypes -import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate -import com.twitter.frigate.pushservice.ml.HealthFeatureGetter -import com.twitter.frigate.pushservice.params.PushFeatureSwitchParams -import com.twitter.hermit.predicate.NamedPredicate -import com.twitter.hermit.predicate.Predicate -import com.twitter.frigate.pushservice.ml.PushMLModelScorer -import com.twitter.frigate.pushservice.params.PushMLModel -import com.twitter.util.Future -import com.twitter.frigate.pushservice.util.CandidateUtil -import com.twitter.frigate.thriftscala.UserMediaRepresentation -import com.twitter.hss.api.thriftscala.UserHealthSignalResponse -import com.twitter.storehaus.ReadableStore - -object BqmlHealthModelPredicates { - - def healthModelOonPredicate( - bqmlHealthModelScorer: PushMLModelScorer, - producerMediaRepresentationStore: ReadableStore[Long, UserMediaRepresentation], - userHealthScoreStore: ReadableStore[Long, UserHealthSignalResponse], - tweetHealthScoreStore: ReadableStore[TweetScoringRequest, TweetScoringResponse] - )( - implicit stats: StatsReceiver - ): NamedPredicate[ - PushCandidate with TweetCandidate with RecommendationType with TweetAuthor - ] = { - val name = "bqml_health_model_based_predicate" - val scopedStatsReceiver = stats.scope(name) - - val allCandidatesCounter = scopedStatsReceiver.counter("all_candidates") - val oonCandidatesCounter = scopedStatsReceiver.counter("oon_candidates") - val filteredOonCandidatesCounter = - scopedStatsReceiver.counter("filtered_oon_candidates") - val emptyScoreCandidatesCounter = scopedStatsReceiver.counter("empty_score_candidates") - val healthScoreStat = scopedStatsReceiver.stat("health_model_dist") - - Predicate - .fromAsync { candidate: PushCandidate with TweetCandidate with RecommendationType => - val target = candidate.target - val isOonCandidate = RecTypes.isOutOfNetworkTweetRecType(candidate.commonRecType) || - RecTypes.outOfNetworkTopicTweetTypes.contains(candidate.commonRecType) - - lazy val enableBqmlHealthModelPredicateParam = - target.params(PushFeatureSwitchParams.EnableBqmlHealthModelPredicateParam) - lazy val enableBqmlHealthModelPredictionForInNetworkCandidates = - target.params( - PushFeatureSwitchParams.EnableBqmlHealthModelPredictionForInNetworkCandidatesParam) - lazy val bqmlHealthModelPredicateFilterThresholdParam = - target.params(PushFeatureSwitchParams.BqmlHealthModelPredicateFilterThresholdParam) - lazy val healthModelId = target.params(PushFeatureSwitchParams.BqmlHealthModelTypeParam) - lazy val enableBqmlHealthModelScoreHistogramParam = - target.params(PushFeatureSwitchParams.EnableBqmlHealthModelScoreHistogramParam) - val healthModelScoreFeature = "bqml_health_model_score" - - val histogramBinSize = 0.05 - lazy val healthCandidateScoreHistogramCounters = - bqmlHealthModelScorer.getScoreHistogramCounters( - scopedStatsReceiver, - "health_score_histogram", - histogramBinSize) - - candidate match { - case candidate: PushCandidate with TweetAuthor with TweetAuthorDetails - if enableBqmlHealthModelPredicateParam && (isOonCandidate || enableBqmlHealthModelPredictionForInNetworkCandidates) => - HealthFeatureGetter - .getFeatures( - candidate, - producerMediaRepresentationStore, - userHealthScoreStore, - Some(tweetHealthScoreStore)) - .flatMap { healthFeatures => - allCandidatesCounter.incr() - candidate.mergeFeatures(healthFeatures) - - val healthModelScoreFutOpt = - if (candidate.numericFeatures.contains(healthModelScoreFeature)) { - Future.value(candidate.numericFeatures.get(healthModelScoreFeature)) - } else - bqmlHealthModelScorer.singlePredicationForModelVersion( - healthModelId, - candidate - ) - - candidate.populateQualityModelScore( - PushMLModel.HealthNsfwProbability, - healthModelId, - healthModelScoreFutOpt - ) - - healthModelScoreFutOpt.map { - case Some(healthModelScore) => - healthScoreStat.add((healthModelScore * 10000).toFloat) - if (enableBqmlHealthModelScoreHistogramParam) { - healthCandidateScoreHistogramCounters( - math.ceil(healthModelScore / histogramBinSize).toInt).incr() - } - - if (CandidateUtil.shouldApplyHealthQualityFilters( - candidate) && isOonCandidate) { - oonCandidatesCounter.incr() - val threshold = bqmlHealthModelPredicateFilterThresholdParam - candidate.cachePredicateInfo( - name, - healthModelScore, - threshold, - healthModelScore > threshold) - if (healthModelScore > threshold) { - filteredOonCandidatesCounter.incr() - false - } else true - } else true - case _ => - emptyScoreCandidatesCounter.incr() - true - } - } - case _ => Future.True - } - } - .withStats(stats.scope(name)) - .withName(name) - } -} diff --git a/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlQualityModelPredicates.docx b/pushservice/src/main/scala/com/twitter/frigate/pushservice/predicate/BqmlQualityModelPredicates.docx new file mode 100644 index 0000000000000000000000000000000000000000..1596a9ab1981e68c8b4f0528eb4e38665ea91595 GIT binary patch literal 38360 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

  • u}V}rKbW|XPy5Ht`v*hyK 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/libs/light_ranking_metrics.py b/pushservice/src/main/python/models/libs/light_ranking_metrics.py deleted file mode 100644 index b83fcf3ae..000000000 --- a/pushservice/src/main/python/models/libs/light_ranking_metrics.py +++ /dev/null @@ -1,255 +0,0 @@ -from functools import partial - -from twitter.cortex.ml.embeddings.deepbird.grouped_metrics.configuration import ( - GroupedMetricsConfiguration, -) -from twitter.cortex.ml.embeddings.deepbird.grouped_metrics.helpers import ( - extract_prediction_from_prediction_record, -) - - -# checkstyle: noqa - - -def score_loss_at_n(labels, predictions, lightN): - """ - Compute the absolute ScoreLoss ranking metric - Args: - labels (list) : A list of label values (HeavyRanking Reference) - predictions (list): A list of prediction values (LightRanking Predictions) - lightN (int): size of the list at which of Initial candidates to compute ScoreLoss. (LightRanking) - """ - assert len(labels) == len(predictions) - - if lightN <= 0: - return None - - labels_with_predictions = zip(labels, predictions) - labels_with_sorted_predictions = sorted( - labels_with_predictions, key=lambda x: x[1], reverse=True - )[:lightN] - labels_top1_light = max([label for label, _ in labels_with_sorted_predictions]) - labels_top1_heavy = max(labels) - - return labels_top1_heavy - labels_top1_light - - -def cgr_at_nk(labels, predictions, lightN, heavyK): - """ - Compute Cumulative Gain Ratio (CGR) ranking metric - Args: - labels (list) : A list of label values (HeavyRanking Reference) - predictions (list): A list of prediction values (LightRanking Predictions) - lightN (int): size of the list at which of Initial candidates to compute CGR. (LightRanking) - heavyK (int): size of the list at which of Refined candidates to compute CGR. (HeavyRanking) - """ - assert len(labels) == len(predictions) - - if (not lightN) or (not heavyK): - out = None - elif lightN <= 0 or heavyK <= 0: - out = None - else: - - labels_with_predictions = zip(labels, predictions) - labels_with_sorted_predictions = sorted( - labels_with_predictions, key=lambda x: x[1], reverse=True - )[:lightN] - labels_topN_light = [label for label, _ in labels_with_sorted_predictions] - - if lightN <= heavyK: - cg_light = sum(labels_topN_light) - else: - labels_topK_heavy_from_light = sorted(labels_topN_light, reverse=True)[:heavyK] - cg_light = sum(labels_topK_heavy_from_light) - - ideal_ordering = sorted(labels, reverse=True) - cg_heavy = sum(ideal_ordering[: min(lightN, heavyK)]) - - out = 0.0 - if cg_heavy != 0: - out = max(cg_light / cg_heavy, 0) - - return out - - -def _get_weight(w, atK): - if not w: - return 1.0 - elif len(w) <= atK: - return 0.0 - else: - return w[atK] - - -def recall_at_nk(labels, predictions, n=None, k=None, w=None): - """ - Recall at N-K ranking metric - Args: - labels (list): A list of label values - predictions (list): A list of prediction values - n (int): size of the list at which of predictions to compute recall. (Light Ranking Predictions) - The default is None in which case the length of the provided predictions is used as L - k (int): size of the list at which of labels to compute recall. (Heavy Ranking Predictions) - The default is None in which case the length of the provided labels is used as L - w (list): weight vector sorted by labels - """ - assert len(labels) == len(predictions) - - if not any(labels): - out = None - else: - - safe_n = len(predictions) if not n else min(len(predictions), n) - safe_k = len(labels) if not k else min(len(labels), k) - - labels_with_predictions = zip(labels, predictions) - sorted_labels_with_predictions = sorted( - labels_with_predictions, key=lambda x: x[0], reverse=True - ) - - order_sorted_labels_predictions = zip(range(len(labels)), *zip(*sorted_labels_with_predictions)) - - order_with_predictions = [ - (order, pred) for order, label, pred in order_sorted_labels_predictions - ] - order_with_sorted_predictions = sorted(order_with_predictions, key=lambda x: x[1], reverse=True) - - pred_sorted_order_at_n = [order for order, _ in order_with_sorted_predictions][:safe_n] - - intersection_weight = [ - _get_weight(w, order) if order < safe_k else 0 for order in pred_sorted_order_at_n - ] - - intersection_score = sum(intersection_weight) - full_score = sum(w) if w else float(safe_k) - - out = 0.0 - if full_score != 0: - out = intersection_score / full_score - - return out - - -class ExpectedLossGroupedMetricsConfiguration(GroupedMetricsConfiguration): - """ - This is the Expected Loss Grouped metric computation configuration. - """ - - def __init__(self, lightNs=[]): - """ - Args: - lightNs (list): size of the list at which of Initial candidates to compute Expected Loss. (LightRanking) - """ - self.lightNs = lightNs - - @property - def name(self): - return "ExpectedLoss" - - @property - def metrics_dict(self): - metrics_to_compute = {} - for lightN in self.lightNs: - metric_name = "ExpectedLoss_atLight_" + str(lightN) - metrics_to_compute[metric_name] = partial(score_loss_at_n, lightN=lightN) - return metrics_to_compute - - def extract_label(self, prec, drec, drec_label): - return drec_label - - def extract_prediction(self, prec, drec, drec_label): - return extract_prediction_from_prediction_record(prec) - - -class CGRGroupedMetricsConfiguration(GroupedMetricsConfiguration): - """ - This is the Cumulative Gain Ratio (CGR) Grouped metric computation configuration. - CGR at the max length of each session is the default. - CGR at additional positions can be computed by specifying a list of 'n's and 'k's - """ - - def __init__(self, lightNs=[], heavyKs=[]): - """ - Args: - lightNs (list): size of the list at which of Initial candidates to compute CGR. (LightRanking) - heavyK (int): size of the list at which of Refined candidates to compute CGR. (HeavyRanking) - """ - self.lightNs = lightNs - self.heavyKs = heavyKs - - @property - def name(self): - return "cgr" - - @property - def metrics_dict(self): - metrics_to_compute = {} - for lightN in self.lightNs: - for heavyK in self.heavyKs: - metric_name = "cgr_atLight_" + str(lightN) + "_atHeavy_" + str(heavyK) - metrics_to_compute[metric_name] = partial(cgr_at_nk, lightN=lightN, heavyK=heavyK) - return metrics_to_compute - - def extract_label(self, prec, drec, drec_label): - return drec_label - - def extract_prediction(self, prec, drec, drec_label): - return extract_prediction_from_prediction_record(prec) - - -class RecallGroupedMetricsConfiguration(GroupedMetricsConfiguration): - """ - This is the Recall Grouped metric computation configuration. - Recall at the max length of each session is the default. - Recall at additional positions can be computed by specifying a list of 'n's and 'k's - """ - - def __init__(self, n=[], k=[], w=[]): - """ - Args: - n (list): A list of ints. List of prediction rank thresholds (for light) - k (list): A list of ints. List of label rank thresholds (for heavy) - """ - self.predN = n - self.labelK = k - self.weight = w - - @property - def name(self): - return "group_recall" - - @property - def metrics_dict(self): - metrics_to_compute = {"group_recall_unweighted": recall_at_nk} - if not self.weight: - metrics_to_compute["group_recall_weighted"] = partial(recall_at_nk, w=self.weight) - - if self.predN and self.labelK: - for n in self.predN: - for k in self.labelK: - if n >= k: - metrics_to_compute[ - "group_recall_unweighted_at_L" + str(n) + "_at_H" + str(k) - ] = partial(recall_at_nk, n=n, k=k) - if self.weight: - metrics_to_compute[ - "group_recall_weighted_at_L" + str(n) + "_at_H" + str(k) - ] = partial(recall_at_nk, n=n, k=k, w=self.weight) - - if self.labelK and not self.predN: - for k in self.labelK: - metrics_to_compute["group_recall_unweighted_at_full_at_H" + str(k)] = partial( - recall_at_nk, k=k - ) - if self.weight: - metrics_to_compute["group_recall_weighted_at_full_at_H" + str(k)] = partial( - recall_at_nk, k=k, w=self.weight - ) - return metrics_to_compute - - def extract_label(self, prec, drec, drec_label): - return drec_label - - def extract_prediction(self, prec, drec, drec_label): - return extract_prediction_from_prediction_record(prec) diff --git a/pushservice/src/main/python/models/libs/metric_fn_utils.docx b/pushservice/src/main/python/models/libs/metric_fn_utils.docx new file mode 100644 index 0000000000000000000000000000000000000000..cfb7853d38775cae34270a98db061e40cb2b8500 GIT binary patch literal 39660 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 L!^mN3bQyT4gAr2ey3Z>=+LH#< zM@3p%*e7pEalWT938g}M6dai=#?tRJdvKKovlSA9qg_l>(C{+ZV_Fh3j)Jd;f=rHc z8M1sog9j^GFBXeujS7YlUNJnf^9ubiL}8b5>-2|Oz#bvMF1`bH{Zk$GKkI&#hQ)Q2 z0QwvX{#0vlveco_9(g*)Y=f0*NZsRPQCwF!_91nsj_`)7v$Ox#*P| zJhtbrXNAd_Igc-%^7F{SAh%@xa?esxP09H~dEb|woNsWdv~yUE)KELcT`8IGUfd!M z6*ErbPiYHPGCO0N<@0jM2HE|nYPa{>>yy<&M!cG^b!(SAE<$y-)g~%C13Od)A81+iWxa90U>m@2t^T4fh*ia>mlT9-}&NE zOCQeis!WHvSv~I-5$b^p9KKd`HYYrz=CzzGtQmnvC_BGI$?f2+u%x>_-juV{!;z#i-BPz{8VHyiHO~U z)I^a5zF2LYBT1oUU*@;cZLO!A+M@8%;<_Uuoq?E4B%tp8^EupnTy5;VfT+w*b=P4w z>NcUsRXdii8n1b)EHY7+Mz%Cp)x;d92`gI%!MR?{XE#epeq7RBwCxamo~iOzl+0z; zJ8d|&pfRQ0K>Z)ITR&Dp5=f9pc5nHmkem5q7sO_C+xsVXH&f@}3!7KzhgexVyI%#V zI_{0{#&&J9jP%m7iV*Ton<0jURtJZ*(;v8;#VKGLzoblIZ%Nynh&cCQRlsJ4x^+!}_$KYD>A7d6HYfWwyvi*RVj`w`-@4Z7j=Wdk?f#S3b zoZr&kf*QwPt;x^UCR>yVz0!V)Dfv6=0tqaJZqC~YhMZ}o$ZJTF;-5M9o zMqT-Dl6T$x)zY(8M~2ph{Bma{h+udL5=YG1)>lN`+Pe_FxLsyL_Sm$khL_CZh%tQk zd6;T-v}}aB)>I3VUw^umim%i08~D;l?_AqGzErz%*+K(XyP`fu*I;gH{&p%1eNh7J zmdSw_u4Suhh=j`Cp<=4Ho7cNh`k0sk73dP#Sziv?-Gh{#h_t~fCKi~;;Yz-9t_D74 z)R&&qaQuFoN~R#YgyUKipmxJNec_WIXBOKZ8RQNH4&ywR4Z3YP&yRH=*2>Hkwhz~V z;g+>C#h&1qE3)J{)rW!S$GEFk%Z!mf4&x!0@!>f0Or^y7yY1V99F~5jfn&$-B4!I? z?(Eeu>S;3Z@Qg#~4jEe9+VnGDMU}0Mt02t9WD+xX-2x_EDhV$h+aj&-+??<0&&e#{ z!5d5OHdtl`>X+JIs2vfLY^pgnSkL6`Y?Z?ecCxx4)2YP5o|YX|hSI6GZqwRC-+ zxVk8nyyNh*B>6mXf@io+q8{5rxV3LzihgGNchJ{}bAfv$?AK5ko`yZah^rS>wdkOX z>|Ae8Ijzc_W4EMU{WzLOZx|YH*|{(}v{RR{KI+}2gr0TFeV1$5)V;=vrk7-*w)a!} zQd-yMR)+UbEV{J7A&&yhRa7>PgPf@xm|AoHes6Q5%B50gj8W`CuxxXpVzSto6R zn>&&QifYo<5Xln8vU2*OUJs)i7QOxBDo$pbq}mY-CY&Ix&8InngXer7IY{u@G?SSR z>wG4?xf}gN3K~gJ0578oasm$7K#E6&Qj~0KnigLg!?Lk~L1yKK+jdhb7mqnb#~ILC zMfejFZWwowM&^sI2cKiBd?zvDY_rjCWp1C0NL_R}Ebj4Ec6&5|0}Y;x&t9Y7V30cj zIj3HN+hF|0Wtk_&nJt?7u+Vi?u~^yp>9Ghl)2i0v&40%e*e-O6$RY7Yhm#N=wmyXPx_rj(^) z*`JifwR5MDwQpqOeeUpgieRm-72ae@`8pJz@g`t#g5mXcec~+s;qj_7$dg$HUUaIB zkT=PFiR7_?jooIA2YkIgd*fg3x*GcYy}O3ox>rY+UHhXYG+3n}`%Tf&D9H*;!W9_l zo*=WZaLClLs@0T+urB5IVF@VH;<+REE`2`-q0qAARFRy!HyWLkopy&l+LByIPP?lQ z&oB=Qy0KM+Y-2`R7AKVH*eV{8XOyQlfZcmpu(pV2IrhFU;XMx_B>+q=104z>N)Agl z7`kvdr`i3b{YJ))+v|vZxbPhJ`4v*afG(cM+_u8KJpakLpb98_m2k)ML4vsONus-NlIIULj55`ME5qjwuG3%Tc=0k--93 zyG+6b4RN!w=3x=zPdKFxv|5X3xBr@slwiiBCv%srfr!RnRB zWLwvP;%dJ6&l6CLS$g@oJ<)y^pB1QXk)XKUQEr?CDR|X@Y5}6Lty*5TRSRM~+G}*; zDn@dszHi8{%T|+lg%wW6?9qB1Q+AJE3T^MQ_;S#lV+bOTx5}FPG?8JP*TZJ@bdS%? zxtqU&CnRzSY|9WW?Dc@f4A#V*KF7xuUAb1sziVx87PEr5+Zy*?mVJSXL9EGBY}_x) z%CVh#j?QK(0@o(qd&F|8H`X#azT$S%OcH&{;wUU5qEoM(z%~+*cl$PuH~GBdT2e;! zv(6fH|3Yvh`Z=*Yp;sF1@1wUkA-EMV%GYpnd7Y3nrETQhHs2q?cW9HY+H{yRARf;-39T5ux^5|HxUAe}(fbK318u-a@*&t+KPw)@1pWS1I86rr+3S z_s+oW(ajxXkYdpI1mU&$_nlaky<8uu`Xfoo4(5Y2;ew&CfE!1f#2k7HQ2e9u ze@S~vAU2%Q$Pu`t2LQ4h0L}s}|Lr}t?q0tl(UkBnBO^!20NjNJ1cDxb2LUbr!L2DVPHw+J}G|+h)&=v22&R+vV`wRY$ z<^NCe$5Fr)ah{Eq0D&xwX+g{fm_#{$GkK%@UF?6QD=Ei-@`IB9;xUINFCG9>d|r~0 zhcZvP&vOm^FVFuaQ7GY*iI;u2deCn;MH+^Zfie-X&w#@GW;l?Rpu|%~jrZ|%A;0mI zF=R>#O8Wy o4me(vcuGCEj}M9azbST59UAJ=0yF66tYQIK1JlDN<>%S|0Gp^-bN~PV literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/libs/metric_fn_utils.py b/pushservice/src/main/python/models/libs/metric_fn_utils.py deleted file mode 100644 index fc26a1305..000000000 --- a/pushservice/src/main/python/models/libs/metric_fn_utils.py +++ /dev/null @@ -1,294 +0,0 @@ -""" -Utilties for constructing a metric_fn for magic recs. -""" - -from twml.contrib.metrics.metrics import ( - get_dual_binary_tasks_metric_fn, - get_numeric_metric_fn, - get_partial_multi_binary_class_metric_fn, - get_single_binary_task_metric_fn, -) - -from .model_utils import generate_disliked_mask - -import tensorflow.compat.v1 as tf - - -METRIC_BOOK = { - "OONC": ["OONC"], - "OONC_Engagement": ["OONC", "Engagement"], - "Sent": ["Sent"], - "HeavyRankPosition": ["HeavyRankPosition"], - "HeavyRankProbability": ["HeavyRankProbability"], -} - -USER_AGE_FEATURE_NAME = "accountAge" -NEW_USER_AGE_CUTOFF = 0 - - -def remove_padding_and_flatten(tensor, valid_batch_size): - """Remove the padding of the input padded tensor given the valid batch size tensor, - then flatten the output with respect to the first dimension. - Args: - tensor: A tensor of size [META_BATCH_SIZE, BATCH_SIZE, FEATURE_DIM]. - valid_batch_size: A tensor of size [META_BATCH_SIZE], with each element indicating - the effective batch size of the BATCH_SIZE dimension. - - Returns: - A tesnor of size [tf.reduce_sum(valid_batch_size), FEATURE_DIM]. - """ - unpadded_ragged_tensor = tf.RaggedTensor.from_tensor(tensor=tensor, lengths=valid_batch_size) - - return unpadded_ragged_tensor.flat_values - - -def safe_mask(values, mask): - """Mask values if possible. - - Boolean mask inputed values if and only if values is a tensor of the same dimension as mask (or can be broadcasted to that dimension). - - Args: - values (Any or Tensor): Input tensor to mask. Dim 0 should be size N. - mask (boolean tensor): A boolean tensor of size N. - - Returns Values or Values masked. - """ - if values is None: - return values - if not tf.is_tensor(values): - return values - values_shape = values.get_shape() - if not values_shape or len(values_shape) == 0: - return values - if not mask.get_shape().is_compatible_with(values_shape[0]): - return values - return tf.boolean_mask(values, mask) - - -def add_new_user_metrics(metric_fn): - """Will stratify the metric_fn by adding new user metrics. - - Given an input metric_fn, double every metric: One will be the orignal and the other will only include those for new users. - - Args: - metric_fn (python function): Base twml metric_fn. - - Returns a metric_fn with new user metrics included. - """ - - def metric_fn_with_new_users(graph_output, labels, weights): - if USER_AGE_FEATURE_NAME not in graph_output: - raise ValueError( - "In order to get metrics stratified by user age, {name} feature should be added to model graph output. However, only the following output keys were found: {keys}.".format( - name=USER_AGE_FEATURE_NAME, keys=graph_output.keys() - ) - ) - - metric_ops = metric_fn(graph_output, labels, weights) - - is_new = tf.reshape( - tf.math.less_equal( - tf.cast(graph_output[USER_AGE_FEATURE_NAME], tf.int64), - tf.cast(NEW_USER_AGE_CUTOFF, tf.int64), - ), - [-1], - ) - - labels = safe_mask(labels, is_new) - weights = safe_mask(weights, is_new) - graph_output = {key: safe_mask(values, is_new) for key, values in graph_output.items()} - - new_user_metric_ops = metric_fn(graph_output, labels, weights) - new_user_metric_ops = {name + "_new_users": ops for name, ops in new_user_metric_ops.items()} - metric_ops.update(new_user_metric_ops) - return metric_ops - - return metric_fn_with_new_users - - -def get_meta_learn_single_binary_task_metric_fn( - metrics, classnames, top_k=(5, 5, 5), use_top_k=False -): - """Wrapper function to use the metric_fn with meta learning evaluation scheme. - - Args: - metrics: A list of string representing metric names. - classnames: A list of string repsenting class names, In case of multiple binary class models, - the names for each class or label. - top_k: A tuple of int to specify top K metrics. - use_top_k: A boolean value indicating of top K of metrics is used. - - Returns: - A customized metric_fn function. - """ - - def get_eval_metric_ops(graph_output, labels, weights): - """The op func of the eval_metrics. Comparing with normal version, - the difference is we flatten the output, label, and weights. - - Args: - graph_output: A dict of tensors. - labels: A tensor of int32 be the value of either 0 or 1. - weights: A tensor of float32 to indicate the per record weight. - - Returns: - A dict of metric names and values. - """ - metric_op_weighted = get_partial_multi_binary_class_metric_fn( - metrics, predcols=0, classes=classnames - ) - classnames_unweighted = ["unweighted_" + classname for classname in classnames] - metric_op_unweighted = get_partial_multi_binary_class_metric_fn( - metrics, predcols=0, classes=classnames_unweighted - ) - - valid_batch_size = graph_output["valid_batch_size"] - graph_output["output"] = remove_padding_and_flatten(graph_output["output"], valid_batch_size) - labels = remove_padding_and_flatten(labels, valid_batch_size) - weights = remove_padding_and_flatten(weights, valid_batch_size) - - tf.ensure_shape(graph_output["output"], [None, 1]) - tf.ensure_shape(labels, [None, 1]) - tf.ensure_shape(weights, [None, 1]) - - metrics_weighted = metric_op_weighted(graph_output, labels, weights) - metrics_unweighted = metric_op_unweighted(graph_output, labels, None) - metrics_weighted.update(metrics_unweighted) - - if use_top_k: - metric_op_numeric = get_numeric_metric_fn(metrics=None, topK=top_k, predcol=0, labelcol=1) - metrics_numeric = metric_op_numeric(graph_output, labels, weights) - metrics_weighted.update(metrics_numeric) - return metrics_weighted - - return get_eval_metric_ops - - -def get_meta_learn_dual_binary_tasks_metric_fn( - metrics, classnames, top_k=(5, 5, 5), use_top_k=False -): - """Wrapper function to use the metric_fn with meta learning evaluation scheme. - - Args: - metrics: A list of string representing metric names. - classnames: A list of string repsenting class names, In case of multiple binary class models, - the names for each class or label. - top_k: A tuple of int to specify top K metrics. - use_top_k: A boolean value indicating of top K of metrics is used. - - Returns: - A customized metric_fn function. - """ - - def get_eval_metric_ops(graph_output, labels, weights): - """The op func of the eval_metrics. Comparing with normal version, - the difference is we flatten the output, label, and weights. - - Args: - graph_output: A dict of tensors. - labels: A tensor of int32 be the value of either 0 or 1. - weights: A tensor of float32 to indicate the per record weight. - - Returns: - A dict of metric names and values. - """ - metric_op_weighted = get_partial_multi_binary_class_metric_fn( - metrics, predcols=[0, 1], classes=classnames - ) - classnames_unweighted = ["unweighted_" + classname for classname in classnames] - metric_op_unweighted = get_partial_multi_binary_class_metric_fn( - metrics, predcols=[0, 1], classes=classnames_unweighted - ) - - valid_batch_size = graph_output["valid_batch_size"] - graph_output["output"] = remove_padding_and_flatten(graph_output["output"], valid_batch_size) - labels = remove_padding_and_flatten(labels, valid_batch_size) - weights = remove_padding_and_flatten(weights, valid_batch_size) - - tf.ensure_shape(graph_output["output"], [None, 2]) - tf.ensure_shape(labels, [None, 2]) - tf.ensure_shape(weights, [None, 1]) - - metrics_weighted = metric_op_weighted(graph_output, labels, weights) - metrics_unweighted = metric_op_unweighted(graph_output, labels, None) - metrics_weighted.update(metrics_unweighted) - - if use_top_k: - metric_op_numeric = get_numeric_metric_fn(metrics=None, topK=top_k, predcol=2, labelcol=2) - metrics_numeric = metric_op_numeric(graph_output, labels, weights) - metrics_weighted.update(metrics_numeric) - return metrics_weighted - - return get_eval_metric_ops - - -def get_metric_fn(task_name, use_stratify_metrics, use_meta_batch=False): - """Will retrieve the metric_fn for magic recs. - - Args: - task_name (string): Which task is being used for this model. - use_stratify_metrics (boolean): Should we add stratified metrics (new user metrics). - use_meta_batch (boolean): If the output/label/weights are passed in 3D shape instead of - 2D shape. - - Returns: - A metric_fn function to pass in twml Trainer. - """ - if task_name not in METRIC_BOOK: - raise ValueError( - "Task name of {task_name} not recognized. Unable to retrieve metrics.".format( - task_name=task_name - ) - ) - class_names = METRIC_BOOK[task_name] - if use_meta_batch: - get_n_binary_task_metric_fn = ( - get_meta_learn_single_binary_task_metric_fn - if len(class_names) == 1 - else get_meta_learn_dual_binary_tasks_metric_fn - ) - else: - get_n_binary_task_metric_fn = ( - get_single_binary_task_metric_fn if len(class_names) == 1 else get_dual_binary_tasks_metric_fn - ) - - metric_fn = get_n_binary_task_metric_fn(metrics=None, classnames=METRIC_BOOK[task_name]) - - if use_stratify_metrics: - metric_fn = add_new_user_metrics(metric_fn) - - return metric_fn - - -def flip_disliked_labels(metric_fn): - """This function returns an adapted metric_fn which flips the labels of the OONCed evaluation data to 0 if it is disliked. - Args: - metric_fn: A metric_fn function to pass in twml Trainer. - - Returns: - _adapted_metric_fn: A customized metric_fn function with disliked OONC labels flipped. - """ - - def _adapted_metric_fn(graph_output, labels, weights): - """A customized metric_fn function with disliked OONC labels flipped. - - Args: - graph_output: A dict of tensors. - labels: labels of training samples, which is a 2D tensor of shape batch_size x 3: [OONCs, engagements, dislikes] - weights: A tensor of float32 to indicate the per record weight. - - Returns: - A dict of metric names and values. - """ - # We want to multiply the label of the observation by 0 only when it is disliked - disliked_mask = generate_disliked_mask(labels) - - # Extract OONC and engagement labels only. - labels = tf.reshape(labels[:, 0:2], shape=[-1, 2]) - - # Labels will be set to 0 if it is disliked. - adapted_labels = labels * tf.cast(tf.logical_not(disliked_mask), dtype=labels.dtype) - - return metric_fn(graph_output, adapted_labels, weights) - - return _adapted_metric_fn diff --git a/pushservice/src/main/python/models/libs/model_args.docx b/pushservice/src/main/python/models/libs/model_args.docx new file mode 100644 index 0000000000000000000000000000000000000000..7caacc506bff66d90f49bca3aa7ca24394081dff GIT binary patch literal 38391 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 kf$`vca2a5xdaR#Obj<|aDA7qR7d;kCd literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/libs/model_args.py b/pushservice/src/main/python/models/libs/model_args.py deleted file mode 100644 index ae142d818..000000000 --- a/pushservice/src/main/python/models/libs/model_args.py +++ /dev/null @@ -1,231 +0,0 @@ -from twml.trainers import DataRecordTrainer - - -# checkstyle: noqa - - -def get_arg_parser(): - parser = DataRecordTrainer.add_parser_arguments() - - parser.add_argument( - "--input_size_bits", - type=int, - default=18, - help="number of bits allocated to the input size", - ) - parser.add_argument( - "--model_trainer_name", - default="magic_recs_mlp_calibration_MTL_OONC_Engagement", - type=str, - help="specify the model trainer name.", - ) - - parser.add_argument( - "--model_type", - default="deepnorm_gbdt_inputdrop2_rescale", - type=str, - help="specify the model type to use.", - ) - parser.add_argument( - "--feat_config_type", - default="get_feature_config_with_sparse_continuous", - type=str, - help="specify the feature configure function to use.", - ) - - parser.add_argument( - "--directly_export_best", - default=False, - action="store_true", - help="whether to directly_export best_checkpoint", - ) - - parser.add_argument( - "--warm_start_base_dir", - default="none", - type=str, - help="latest ckpt in this folder will be used to ", - ) - - parser.add_argument( - "--feature_list", - default="none", - type=str, - help="Which features to use for training", - ) - parser.add_argument( - "--warm_start_from", default=None, type=str, help="model dir to warm start from" - ) - - parser.add_argument( - "--momentum", default=0.99999, type=float, help="Momentum term for batch normalization" - ) - parser.add_argument( - "--dropout", - default=0.2, - type=float, - help="input_dropout_rate to rescale output by (1 - input_dropout_rate)", - ) - parser.add_argument( - "--out_layer_1_size", default=256, type=int, help="Size of MLP_branch layer 1" - ) - parser.add_argument( - "--out_layer_2_size", default=128, type=int, help="Size of MLP_branch layer 2" - ) - parser.add_argument("--out_layer_3_size", default=64, type=int, help="Size of MLP_branch layer 3") - parser.add_argument( - "--sparse_embedding_size", default=50, type=int, help="Dimensionality of sparse embedding layer" - ) - parser.add_argument( - "--dense_embedding_size", default=128, type=int, help="Dimensionality of dense embedding layer" - ) - - parser.add_argument( - "--use_uam_label", - default=False, - type=str, - help="Whether to use uam_label or not", - ) - - parser.add_argument( - "--task_name", - default="OONC_Engagement", - type=str, - help="specify the task name to use: OONC or OONC_Engagement.", - ) - parser.add_argument( - "--init_weight", - default=0.9, - type=float, - help="Initial OONC Task Weight MTL: OONC+Engagement.", - ) - parser.add_argument( - "--use_engagement_weight", - default=False, - action="store_true", - help="whether to use engagement weight for base model.", - ) - parser.add_argument( - "--mtl_num_extra_layers", - type=int, - default=1, - help="Number of Hidden Layers for each TaskBranch.", - ) - parser.add_argument( - "--mtl_neuron_scale", type=int, default=4, help="Scaling Factor of Neurons in MTL Extra Layers." - ) - parser.add_argument( - "--use_oonc_score", - default=False, - action="store_true", - help="whether to use oonc score only or combined score.", - ) - parser.add_argument( - "--use_stratified_metrics", - default=False, - action="store_true", - help="Use stratified metrics: Break out new-user metrics.", - ) - parser.add_argument( - "--run_group_metrics", - default=False, - action="store_true", - help="Will run evaluation metrics grouped by user.", - ) - parser.add_argument( - "--use_full_scope", - default=False, - action="store_true", - help="Will add extra scope and naming to graph.", - ) - parser.add_argument( - "--trainable_regexes", - default=None, - nargs="*", - help="The union of variables specified by the list of regexes will be considered trainable.", - ) - parser.add_argument( - "--fine_tuning.ckpt_to_initialize_from", - dest="fine_tuning_ckpt_to_initialize_from", - type=str, - default=None, - help="Checkpoint path from which to warm start. Indicates the pre-trained model.", - ) - parser.add_argument( - "--fine_tuning.warm_start_scope_regex", - dest="fine_tuning_warm_start_scope_regex", - type=str, - default=None, - help="All variables matching this will be restored.", - ) - - return parser - - -def get_params(args=None): - parser = get_arg_parser() - if args is None: - return parser.parse_args() - else: - return parser.parse_args(args) - - -def get_arg_parser_light_ranking(): - parser = get_arg_parser() - - parser.add_argument( - "--use_record_weight", - default=False, - action="store_true", - help="whether to use record weight for base model.", - ) - parser.add_argument( - "--min_record_weight", default=0.0, type=float, help="Minimum record weight to use." - ) - parser.add_argument( - "--smooth_weight", default=0.0, type=float, help="Factor to smooth Rank Position Weight." - ) - - parser.add_argument( - "--num_mlp_layers", type=int, default=3, help="Number of Hidden Layers for MLP model." - ) - parser.add_argument( - "--mlp_neuron_scale", type=int, default=4, help="Scaling Factor of Neurons in MLP Layers." - ) - parser.add_argument( - "--run_light_ranking_group_metrics", - default=False, - action="store_true", - help="Will run evaluation metrics grouped by user for Light Ranking.", - ) - parser.add_argument( - "--use_missing_sub_branch", - default=False, - action="store_true", - help="Whether to use missing value sub-branch for Light Ranking.", - ) - parser.add_argument( - "--use_gbdt_features", - default=False, - action="store_true", - help="Whether to use GBDT features for Light Ranking.", - ) - parser.add_argument( - "--run_light_ranking_group_metrics_in_bq", - default=False, - action="store_true", - help="Whether to get_predictions for Light Ranking to compute group metrics in BigQuery.", - ) - parser.add_argument( - "--pred_file_path", - default=None, - type=str, - help="path", - ) - parser.add_argument( - "--pred_file_name", - default=None, - type=str, - help="path", - ) - return parser diff --git a/pushservice/src/main/python/models/libs/model_utils.docx b/pushservice/src/main/python/models/libs/model_utils.docx new file mode 100644 index 0000000000000000000000000000000000000000..8fc1007f4780df379bb23fa926d321f72a2d860c GIT binary patch literal 39883 zcmagFV|ZlU)-D{|?%1}Cj&0kv?T&5Rwr$%^I_TI==cJ!!?|0)p=llMwx@yif#*MLR z&ACQZ$w>l(pa1{>Kmeqqv8h!l6vZV00sxGI0RSL>jcN+o+Bg~8IO!_6+Zj7*)4Ew( zH6=;QZtx@gxcWd%rsKu;6of}D-?t;TqmIKAs>yg@S6`*OkOF#nn&b>qo|6j!qm9c< zd-BHJsORbSY9`eb6uQvX&QvWR1TOI^*vhB9G+{dwjw29X5j((H90IFt&Gh;e>ixhnIJy#s%TGt6xrcd{Kx=BI&T zm>y4paG7Vl0Tg5n1loyU>5QE*RbD|)15ZyBMKQ#@FRP(CPm2rE)|1M9qwqgil=-qy{rLwypKsvaj`Ts-F`i-ktDnT)yNVB; zHv;kvrKpoBG(VDX3K4ta^xr&Rp-U>h3Gw#5uas;Z@{Kj238M-|;kCHbGf zs<#aU008~~KU;CICu+}Y~v$V zyx!dywXsA{0T6p**lr?x|J)7YWA36Tuh=}+LMv>&8y zl^*dx1jlbo`owCYg3n8}jXb1D(Qr8@Q2kvf8}U8ZR439PyJ;hL$z1D!=n)Mu(Uhvkw2AX}puDf$4DLC7UCNb4Q_QM2 z#MqoB>(zf66#4^N(fsQ&pZhWh@yj41TSGYqTRTTOLt6*qKNopc{DjN^J%aF)m++#r zO4uC&gs?az;Ayyo7>fUD+aoiJwADm5>(tIcp|wUXl?(0;*T|h6?-pBA3$S5ud@x=} z+?BskIJ7$I?+pXA&9`h}N{*_ep#H1g*M(bBQ%=M2-UxY27^vE8VDStFZK>r@PNKnj z7Usnt(*#+q3dMOR-xU$1*M6w*$CI}c!QvmHQ2g@u#|=v$if=$HYbnMB$V4p70}M+Z z)R&sp0a;kBfDCllvjTC!tk#g-KiSq~z}#qt-EgXHe>J>i@b$sbfDJkq9nw=c$}}dg z1!Kg%aCrfRfd^#bmrql0ZB=314Zm=7u-}<+0oJa7X$gUWOa7KOcTrl&ACL#Jsp+z9 zJ6KdVvbeavN#jW3$LD0!%2bQ|(LBLUmZI;Ixs?Yu;>u$h0-2Tgbbn*ckdY{kQX-HE zBHk`GPu)G0f70OlDf;`{DmK+K+YJcDsVSTe#e%Eg@Av*&tpBXb{l*6R*;iexKmY&` z{=F{xc6NW2MQOrjgC3#tjS58DDcl@fKprDLU|C>Ja0|0GKC@+UoKPYTq>W+U$NMD| zmE#B9Ll{>B*IVQG+lqh*c%zJ&GU~)j{-~V&7F1JB_{h=5)G?tWNI7U3s>%?ew!QAm zc-0aZ4Wv_=s$BKBCt-uZo(gI?G5q#1|> zw5QWUz0ohkTvKaJbnXQr{xe)^yW0hr=Rv5S=!S*6{64b}B6by7m*g7&=;4iL4fu-n zWvZdKQ5Ug2Y62s<94x>eg5;57^F&D&`nG-dh&gKhoA$A-j}2v9v2c=)a3HT--&fz! zgecbq!8LGV6PnYIee1?;@6OrSVG^otfz<%RZ-2fWWz`}l@|$C?wIdRHPtWlR*G<$` zNbJ*A67WXhxytuwWv(kn9Efv;iL4l7S{#@?gk` zx@hds35lBlRTphOS&qVis3XpX}~Hq>s;8eBl+`4#*YZY z(#3}CBR;O4a4E*(FT5Hdlh_^ohwFvzc)D$Qc@=iNed7jyW*){zEP66x!sH+%gAxAx zHR*Z#Ho^u@myJ+nhB>cRIO$n$bUXG$_j$8rfE}JIrdAGdA3J_S2+eI;t;EX9o!FO2 zq6CM8`}2Fa7%Wg6b~yPyAeUAsH#awC^p97{3E|#C5W5;P51ArGmz2+3v1# zX>XVoe7BFEZ$$ag4jeH(rN~I9&ufG@_6_!fzYsB}ErLUp`bgnr z6r69L;VkOPufr^En6Us5BbM4U{_uFxU3@g4f@5?>??)_{ZK;y&PVbTmx7;FO#wbGm zZILzrNNH8CtOWy}7$yTB8naVDwsP$`pPP zLE;l>u=4;aS0_oat%_WD!Eus1A`t=3-2`2fG)vH73F#R%$?Q7 zU3)Qd2DhZ-oJ0sjiqLdLVE|O5exlaEIG{X`I!PQ2SRxRE05 zwi-9lP5AU6JQh$-Lxb++LTU=C{P>`flFJzHdQvz7S&x#EmcpMb5H(>K_5zlGTe{&! z`e6GF&p9{Bpx#T%>tdNHIrI`lX;CRCfT?K)21J zXGqhH_2dmZEP3VX*>C#-YZq5wT$`jG!vOj~(4HV+dz(*`BA+6})N@dfijpL*40U=} z5=o`_>P~T4$}w8}UqO`G6e$6lsr5*`^-*gdCu^AH#HY=t?Kx>5N+D%N^mccbAYvf$ zgK*uzirJg2v>ybF-7*8u_l)U7trP?)rS6MB9*2F7uQ3WeU?ET5JPFe z@*_aa7&Occ*Pf7`0Zeqn=H4O68JX=?tYQK#6EK3!ya_kY^?My%8X7aXkuI655}x#X zfkV0kALV>+Rx3tZ zPHX8|38=`jW-s46yC;|agT{kzn-N~zrwz|I@3)7s2*z>e`wP&t2Nk> z=3JYFBv;z46ed9SYp(=IQBP8*v7lp(Z_8=dRx?2%`u+5L@1}jLWJfmUvt$W@bJh)g zuDnRs_$hG3FkmH0pm*(IX!X;^6PH0%;bfg6R{H1$({@2VgmzsuVx4=tn$M=_CMCU- z03Af7Kk_SjorXVbjUvh??^J}ho6P;x9Ulj@jM(W~ICfYQU}0y9TYoC4qmD!~S88-D z+%raKxdL1iT{s{{bbTfoF)SQn7NV%;V?cklix*roAS zfdHPpG4s-B2TfD?1QAwX0lJpQK(v{bYKIT z3VC_cOaPPyt~E^HI;tV3#rmU9xjg|Ta6#dT!QYVzq; z8xIF_;Wrx-ddou-RYsG;8cn(@WG$5yW#nw+^t8Y&H!w1sHVywF8cgI0Liv~po9;Dv zZf%WVd!S7RKf50`fYM=N2P86wy`KlPQ4YDBeL<`DV<;wSOvR(e>D%ztv~Ie}`eC(t z{;C>3NaT}nSDSh_Udmi2np5g%xH@Yp(fdXNsrUfD-%uY>Kk29mH?~+CKko%Q!pBzV zD)`kOpH|yFNK$Ix0;|@*7i@@ViGK4Hh4yJ|*^P;+5Y=?{w(WDxs3_=31NG%@3Q{#_ zs(~hcYv;EF-dq8_JOi@Lyn!*GJY*#!EB3ABzp#T;Cy)*XnyPm*&pZWemkrSTOeRJ! zhXM{_9o{!sXlEQWfdp2?B$+18Gq$J`<7g$iy*z#j1uf{y+?AN-fQQCZC5zbn%^$+G z0^}W(R5Jj#GX(4TVRAjcYOia%&XnQICUdVAqa~7j27s_4z(l34y8+%|?*^>10ZwI+ zn@<%>#R|N*ltL@Ei9{xSvYZ88EK0HtjSRSNGgU4%{HP_ELwHBG|11KC7CCd&tm+Dp z7Fo@JLe|V+mf3x(?QvfI0hAfKuMV_5PRy;Hve<0{Y;-edEKO}_{=gq>Qy{jXEUXbx z@>D(K1|hn_>4g`*!9FobOuH1(hs&3d~0EPbPO1)#)qKcQYX zH4=JvQnc4En>_0t7#L5~Z!uElc=2lsBznuRSvTgsbik$(w=2c;TBmn#_Wc$ey>{A+ zD{}UlGZ#OYD+FyX9bLDq?=)j*S{~j^Y|gqDG-6n}nq-BySXM{k!|Qil(b_@kWs6^t z?XoiO_j;6p_L41d4TL0nIj2tzf1O`(WjX%Z5uC5crWd{FO!@padY$r+c6azfch+zm z_0q8Bx7m+;wF<7r_4o@1VAJ#wSK8#NeQ;X_S*P+=!&z;^T5KcJ)d_j! z$YZ6>yJTmYta+NneZA2hId?=nE6TbManA4o-^whNY|CXNYc+kci5r@^3ED@}qK&)C z2et}46L+VCA5R==(aHkOo4Y9F$cz*zolZM7Md=&eyCs~_O(sXT*8(<@99lNc`qq$E z7EHtUerK5IO!0}@mhZaS>rW_ixke+sb|qdJpw}kgPg5bhP%){8%xjWs1BvzN0!6vM zPVzVb$?05q&ofVwN(@05X5N3zXL|0dh??|blkQP$2SI!IqpMJ4*Ms(x&t$fNl)TdT zW0k58S~=&AgdB}AP!*mY7?v~KtJa`)4g?yuqa%Ej+hoesWrEL(I^QF6I96Z=2Z@WD z^3#^|xL{PM8@0UKq@#&-Ebn&O<0_064_OT_tmR7MwK$WmhjSj9lFco*$5!W%Deo;` zl!-jbqHDl@VqR{tXtt}4NB-cIWNfNYSAM6G34Zn#yq@EKMCGkWe;yOd>bGl zm0&J5LPPQkEZ#ja^;0aDb&XC~%Fv{Dh1>s53sB?o*NLChZ4^pgu9r{pMQq+jfl3%9RFyZj4KD7tn7jDbk+buMjxjsi^sXK($XT| zex4NChVDt*MR_;@xm?4gh>$=pzG1H)#fS8`Puo2oE#0)tY_l&_J#lPf|tMT|!Jw&~0JD&qQsrMRNT zuN-OY)N?X_c!8sU0NARVV}48Yd+G3sdfxpCk`_MyAsXsZT~s$t_^$P|;CV*LIS=^F zZKmnSKs^5s%vT4>{-SQboD(+Gu6Mrwd~d---cQpRd^zz82_W5O#?_>Xf8fgKO`sH$)khtW~#dNwyV-| zmv1ZGv2RzVK_#Fc5u|Q)Nl%-Ig+y=v>Uj3y*$CVB16&8nq;Uybu=vpbU0N#&Nf$)r zDHC{r=~>Tw{J><{5J1SaM=(W@v8XmvaS!;mgegLRouocpF~~Cb+mt1{#r<63poa{k zlP5S3-vMuA3HCk*j+&+XgsSKnPycl)l0QC~HJamksmhVwrX>6N{ag(Q$4lTm-G6!= zRe{D8K?eY!qYMfF|4*+So!qUA9slY#Xlp0zi`0Af^yC-lzW=n24FVXMwgHHD!PfWe z%C5U&l4e>spPfZFi@DJCB_ZI)Q&vz`ktmO^=jzW!lcP9P%}P)*{`ko8?XN8L|ES67%`;wsI9+ z!q;+kp#A)^b<>fu)bVz_@av%?B;?@K{iB}yxAkZHb}*gKI-X8)$@R>@aY)MH-o(aP zOU1{;*=?iyrWIQWA6{i&ZZ&wKL*4bQiwjR_CeaK2AFHQNEir;dZWqX)Nd z7Zsysx=$e`D+4}Fyto6VK5N+{p6WI(EBZfV^m9|DPHXut`Lcea@k%*}-pK8Zgakh8 z(rvtbk#gPf-M)aI7`b@e@@Aj?;QKzsbD_HZ)dRKm1$SEuGVIE^h|YMsPI|a?OUGfGxR3C0pz-+N@F2QNs5qc-cJFpy-{cee z9^)HK_q%(uyQ8IYB58=h*ScfVyIV{1s{7+X@YO^i1$V%HXNwMg$0t=7&r2-(g5Yzo z=B3A=uV!M2G`Zp3Nh8DuF`Wd{sROd>dKjIgeCM@>879O-H(ymQ z3fpBio9x-Ax6YLhPj!yX$|v$*cXDLwde4Q-@kWg8{`1ezI*lHYY^?5fO%c`?iq~FN zk0%Bavfs}eM=or~&>UqqL!TX?*rbmJ;_f3XVJPiD*-SMtQF;urOcu!e5KD2kNL@O+PjX}I_dt1@JQ=+gKOf!8B{Or`OUY>co zSa`L2vi}$nf4t+nxZ=%}7irR7TD%@Oy1V;zIpCPdOcmUQU8EZIIdJ4wj+=Q$t{e!x zHhcI?;(Lv^BAd~Y5@7){8)``vURy5A&W{)eD1@tD$k^Tc(b0QDgcY&*sb=iu|CUo4 zX{#DTmu21=+Y%nUqQ>ch{&w;E`j<6TChqV&q8BQ`BgDLb7mhBucw`X~djjv3Nrm$0 zrqH_*L5zf$yjUrcLLyT|5cMGn6@etpiUdTwOnXnI?+!NIv&wkq2+DG0CqqU7puE*h zPRmCbW~xRw_3yVW^DeIHtHHvx@LC3@9r0B)>-_|TLRMf22!#wN5|F-QA$x+;gn}UI zCUu4HvFlD01Q4d%D80H6cg21vLGFtDQ0tu(_|Vqdm01O15DG+8NC9^7Eq?f!Kef4H z;t&e6J1c^BNo)bt*~c{b5oB)B5P}jqK}Tu6-=f6^#CC!f=Kh&9`u~G?HAt$`e*J7=J>Br{IByU{tDIj$`<^U_di1ah5{)gyRsl~`!9ei zd7`fosJ~bwcY+$_{V$6DN)_vITa6Zw@^#j~6LZ1(;-i4@r4^;|Ck;L{&3{p(!G|Do zhlcoz^ov;JqO&{42)+NGl#StpxQNMi}V8&}2I`|1VISKU_wZ@D9>R{~1d zKZPtYwzRd`t$W9}4Ow&5+7VkwZSlyyV{K%@>Nj;H53OeM`_<6a+k9X{=r2O+#@n|<0f{v@sFE0#FS&o?_5 zK^pfNJp}5_GMvnvp-ue9OCOijOjp>Ujc!`sksLAWGl%%&w)4So+nRm<>KKGFD{pe{ z{<{|k>Qnn~>(@J6%L~?Q9ds#Y$8l&g6F&{vptZIcq+M{0x&rescW`8m!Ytyu3`-6V z7+yXPz2(QDt{C3$oPE7quUZp`;fuB%Lu;2GXcRYah{xL_RaX-3Jy}Juaf=g;> zc>mB>k`+yq&Vdchl-GSj4O_e0n%al^)79Q5Upa`3&ego5Ko7ISy(iEz)sBz>ab=t+2p$B5CqSp%c0*G#H4Q|&`7L88nFNYa6}5y$FI zsx}x^2Sly0qxSfyUlPrE)ke+(Nhn!^dz@i`zlfv#5;ny$nt2V+PMI?9d^fIh5my35 zQgNA2e}Hqmy2%YoQjfq*?}$L`=Gpu0veB;CYDx9jckHnddA}DEuP|Q;8&;!7F?5-2 z!qPcJT@#ujd>nP1pq%a>3F5KIixzPFfR=8hW$tsz6KB&htBirBu&V|Pbc99lG9P~^ zq9~@5?%0z=_V$8gz|rT>C@vg-@d!~zp6b9aK}H<${$X%A&~v4@=w0$N`{0thXh(8u z$hNF}PlfCGmwg7x0$$6`72)Ua^u>-D*Vp@z+uygtLmnL;_U=AUzmqv#Tc<;!}cd!HEr_4o|{zn0V{1@Nu>GX6VJgM)3~9N4sn&*LB>1D8%9Sn$v{ z+h@=izfKv|%!dPV4`XFBKkL@edfa4n7KsE(z0Q>FlJ`peSg^sC5wyn1)1etve!fIl zh>X7C>`32BL1Aj9;d~+%bvy4*V6m)})=;9NR2g&mW@0}f|)>4c)pG3Ax%Ew$+ZBji6EkP(v zi#S`fiBalOh|inAvIGVA;63 zieE`r9!P@v@%jAwbr~DIQW8Fsp1o()jk#7?pQQjwMv1uGjFWw}y!K3GNcQF_(@L7S z=2vcrJd?++(8$Y>N5MdP`{N?AT<}IDCHq`lY5wvFg33^!5qW#(8H36 zb06@Au%7aSmxsHBOr@5N4Y$VNqJm@^X%(8xrqizTCVoqUzEKbqQ?4WiXY=V8Uxv6ARr#&DNsrCfPkzQvLiO^Fb|IcD<9Q zIL&^nVqF@8>%5zzbuY@QQ7OWUs~Ovm8#h>tUuVxEul>mt_O*8C(1xG7w2&EE$S!Rt zknU1VK?oZ^;vYFXtIr(ZR~_58_N58QxX=`3>$dS^e{PH(eHW*SmZ)O?UcX-oty1Z0 znOu0Wsj$%|*6i4!*HO&2Ca&S2WiiGOPcnkjLi}5VO`J(aVv1dW@t_de#LBcGt&pdr z=rNOU&2b&n)1q}RLOK?0%>Bu|qB{OeE`Cr=joDyb*7~cyP1OJ$v0voOc8NO1(!Ag z&uMCrH3FLI%2&OWrjlNPEydpLRZD4%hqW@Cr<15Bj_l8JIBOmZlRlFon|#hR6YTna zuEKyGd1n(eM%$H5koc>*%5>2mqskp)dhyhErRjG9k(5`4T0E#8f>dN$Wi$ZkZ3|Vt z%p*BAwsK1euyYFxlOG!hxeUw=7?EIbqD)^6u(rvnOBF9~R4xZ9Dk;>$((;(DHE{Vd zd0G3%;sK==dt;XMQ46Co(9Xl#oe0T++fJzYsY!LtQ5(?|e1eBYIto_2v|{@(ezu4V zg?y^HG!Wq|p_;)FRC?uj8?Qe1SNX#yN(>sQ?wY5V ze`Nr^R+3K}`@YWG1K;mW(KZggcCC;22715e<@zLSB%%OQ@EVhI)CJX{kT~ZfF=uW{ zyhkF-giNH<_SLY_p)+l$;#D6M7BHDm_MG=jr*xFSXY^FRe$zQ%@)2d{{=~sRmahNlpAjN!~hT;(EL`9Kf$>a@EbEFU+3dC@TS zF{Gyo{x~TD^~e+xTDK<8JEsQu(xO8L_x76f{cgbo3%Tp$$>IUOJ2i`>!18!K0!PbO zyzKbn_qFQP5^%7|&UCzk424h!_Uth4wUA>a*a?FPsRr`%I!t`K@VH;lYGcL*XeXex z3wo?@X%w~O=oE(8{+iD28;4nZ4%1uYmKz-UBB2zpxuDivFY$5X0g=2ax?4>LU)Go=?5T_IX2atz$y!bpI8(B*cKtpXY*vY zFLwOO<9`g7%Vx@}Nv*XV7=Y|{SR1tMlzH&wk*%{*6ZLmnBlYjLM}Ei?IiPExT0ZTqo~K#vmM zizJiWo4~L`a_`*SVo}~Xn&kYksBjMJcy~k$Z}R|8SWn{+a^>0E*-2Dcf$QzT8cbn* zHv}`18SdSIm?YHqHr+?7y4#EQe5YS(ESDtBi6XPrfmPZzDMfnE#IL;MW8+|INgK*h zEcFQ^b1pJ3m`Z$4xL$pM6rJD@Ci$`JyOR=G~2WV2v>7S!qCL%Mi@j$6Su(o^k8@anUB)CY;jh}n)cn9;Mc zU}19881m3y<^+sp&sdRTlc2rp(dSTs8e=g8B6 zcFOf4pB8Zl!Kaj?Kg3_eT9pKNxOYX(m!fa4hRW4g_#$;>VEK1uYmho4J{(o1TffYi zE=mH@p^6s2wxS;)jIPmT9gNtvY9Sf zRV4Bj=s>yU`H?M3I)>uXD&Mv1)Z;{7D9O>)q^Mv%^kbPLo+@926u2_c#I7htRMX~f zXDT<)n7l@MQ0xW+Wy{e`5qPvJb(N-Ag&1*}FTT|b9EAnC9HivpKh^iA@zb)9BYtCA zxr29J+>sL{!KVc$hwt-o$Pt<9h~nw3*IlDHN?EAEROCtCG{KbR!J3O|xrtd)oIJnx(<>4P^>As_1dw?- z>(kChm}o();$iEeV!d^S_@XL$;K>uGO*^v9s|FL!^cay;uFd*uny}BZG@oGAlJdP~ z)OP;1ZBn@FqAe^VWoalGcePQZg0C8-ek%6Xra?CCUX{v3X~P3)(tYU~eXyX5&ukOB z$Pf=yH)){1hJ~duR~TWWsi*&yuIMx_Y;1SAd0UKEfpU3C-OQ5eD^bqE;PELr(Czw6 zNrd0^r)Jh;q)Ig^g@F;LfAdA<(-x$7`qj{~P z0gk!EHz!bxwsv1dRTG)QM@#80HA0AW&rvQdtRA0I0maXl?>jo90J?`D7k{Z5fGmSh ztL4CvA^sPde)xZ(aX9~fqLGif`Lo@St;97Po0Zg9Xn+v!m?fQ>pF2LF0*)Os-?VXt z`*k*?F9`ELt51EIXaiW%fLS3L`~ZT2qw2E2n?)ln3?EpKv4bp^aIIn$pmI>x^#ynV zS*p)1$1aB`H}G~fVpOPpZLSGIydl0WQ;cu;(ty7acEM`*T3#&7e;cJzmOad?YADNp z%faJS9Zi@^B?r=p?IR`3A4G_cqfPTa;-GMvq=kE<(Rn7LY-|waQm$1hJRpL}Pysh6 z{-17=kAh@hxdon${tAf9X#2kuk3QUwuR4d-mJTmFMRpGdEe4FY$1A0?+K%?x_=+Xz z(}rY6;69_p<vEO z@l+yN?)!=POW`1J_>BP*f(@$t1Vz;S1*MxeYDLC)768y@=-&V?@|4yVTY$BDGN^~i z_omGTSFjfLq*0%`-*?812F&M^r6xsyMH_JAHEG^xnI}zvK#`j;4d8$;ngcl48*P_@ zCPZCKMg4=YA#1dhFW9?H~~vSFCAyCf+T_>8+*c#;rh-n zYzU=(Z&QbwG*iZ(bsYsL4k+zAz5{?Fgb+;V&?qz^+5#$?VBDIF(K0BI12~g$%=sx( z1c4}9?_Ai>iRZqdBDF{j6L^ym!%)GM8#R~@0B&9Cch*d>gtbh?1^d}zgiw@O{{#Sz zSY&cQ1Ab}|9fZ2n>ROEONf*KfT7+0GbwbZ0v47)8RFSSBU%Zkh{zvy3&mY}=A!<_g z-WNs;*Vrzs*njI59{Wo9bzrFVW|$8M9dZgDk~3;XPHVb|7;7G$W|hABHhM1}Y%277AE9X|Sp;1p$N_twknsrM4i z&+ew9ByJM32^=%RHZ@Fjhz~O;T$Mxexvbu|m2zfuV<@?eR+g1^Q&u{X3PvwCTMacz zs-jRiYbE%kUz5(+imQnAAOX%g-+yz0%is98Tt?JV;Jhhjy8bR>uUivtIJFCMu}+$j z4_iy~0Jb{F8fJ~Oajqc|uWn_mgKV&$p*Bp`ZJs$cdys@-N>ffUEuPu1fgi|T;?u5r zl)0p9Ro+5H_BEKmZn~lnKWJpFH(|D)`4u$%cM$vk4oaFjqW?PdNNPmVWYWk_4$&S57@ zz6o>0G-bSZBbio@u=tA!>nQ$oS1$z zybGC%+o@#rkk1piDE;Oz=1{5yemj^qPcynuUHFaZ&|PUrun(@Ud|3%x-OAuyuy!Xa zI&KH&&kB9=va{7g{n^3SnG-CJA+8mIVD7R>y+HRm)^zf4d=fP&TOD1pc=&Q;UJz+w zSx-k_QnIGQ;(-k|?Q~vuInXbD*)AN#0bc*0^L1mNq5+$;h5M0xMekkJ+;FtsDvy6u zYLVzWjC-nm3mLQ<5UW+P^)pYQ%0<6Vn}Zq+pEwTX7= zL7rBX_aWIVWK&c7yPgxM1#~tOcbxGdM-aJ%s=`Uu4%(>^8tvH(#IqWf%+wC@cOCR0 z{n=#~eQWVtg!u>fqx0w&xFYyp;4KWy$Pu*v5AZoX@!gl`l$}k7e}MPviN7eQK0~Rt z$fL~nJI#ZiD7MAXb?NHtbosaOJU246LuKK7wx5hk3kt0)U46MU#{)jpFz1^CH8UySMJ+J@Dl0FbwdIty?6S?eWUg`nMU)1fYrNg|PxiRt&o{@(H3ypN z`FY&k%o*;_FWciug(Ahf{GT-BLUUbHQlWTpXbmd?*4)En@b%t_tv;&I=;Qu$Af8c)SzL;sfS&U3-& zFOk2Ps~)~E1FNq$7y`<3)d=AO%44;4D9{zb76k&d zJe@a(z~5uRv>z)C5*Rcy6iVg7HFBDK8q!nL05udJst#^eU5^NoBj*nqA0(}(YaMxa3G1c(Ffg+^e&?*u?64nzM5`T$Bt&T{aJUdPWJW)JkS zMLYX=3awvfnN)|rOPQs!_hKY*2>RMbDhNGX`Z-|CYB~=Rj_F*W>NkJ_zqJLR1HLx? z*EYiqkX8(dZWQ_yQb+C#YEHis;0~i7T8b_M{Eoo1iFo2)NbuC5KA-{CZm%+ZN(2sc?8cnrfUt+PDZP$g?Jl)dw*x3uU z3Vj=Tg}6i1T@r;DdX=|2l<`J19ZtA~q5EddvdED`DFGM*?GpRiWW#w^@%&x3%N~-U z2adjHNRQc$9nnG{EvGj(SA=qD;QMQ_QVf)30wHI$m1<(Sy=VWshFQQo&>b{s_pxWc ztoY;%fSu%IO@s*kQHUY>M24s1P2)D%M0pqfkT*9Lj zz$3P-nPZ}99T%+ecMveprq)tiwE4Mw4<$8V=sA1iH)W-$4fLZGFRlvK)E)AlKIc$m zXB1&CX#h51FV3?NgYRCH%;(J=NrW+az0@hK+);i8}8Kl}}awya34cQSw==`#Z za*8cb?P6K(a+$)VIM$!)RZMP)bxi@np}26BCy-goh7~!>f+V~W2uk~BZecY^O!iI! zuSeiKs4ob`_nTwLYZ$qVIo;c~v<;vifR+Y|~oL}XgiKb+j zh;}Tprd(?_LrxDYKznWl*R37|*GqRrDFUE;aOj?!98l6}-FDt{O9Jrv3$wZG$gzNx zt`}C`q|o5aZ>L&2jjgeoLP6e0`SUXDp21k zA1}*uro=({BoLLZ&pi5SqLAsG``-Q#en%jE*yM2hA{_89!T~vDpnQK5?)yXd`VZl1 ztTSg9h8LAHt8PzFJ|#R=s^=uUF{=u^F{ytfcI&H23XJ(@V!3uFqiFQ0VF1+k`v)Jz z;?8Y$KGb(9n&-S@e(x?nD4){d;xC|um~t$07bBkkNE|f?<&%;ySGFq($_J|mg8Gh8 z3^z^=9 zbHMgzl$Xm^>JU!p?ux+9smGU|ktHafYPG(Zq5!-vYSLep7h1|h{owYhr zKL0|!SGpEVT@1WgbY6WQDGJCL{%0}&uim&6yci6tlaKGiefgVf>)f^bRZ&JzK3n(a z+pnL(P%6FTqhIc;`UQ90SLl(YNGymzn34Ugxgasnsh}@P(zjv9qTA+z}L~9${{4{JF zSQ*vI#}1$p@bJg!+?=#BP^nyxGNi!f*wdLH?`^kNiw~rAz%EE1!}KT#f((9V1pcPO zd9N`YBR~OqN@w;w0yRFwRj36VB(XNQmT-{uatJ06wDl%m3It>DUdi}!D_5|$PsQ;b7UiMFd z)3Co1*gd%h9Ds~;K#W}U;zqCTxN%ly%Gh<91V#dxa%P8N1?{%pJf6T~+e)N$`5m;5 zEBPG^4PZdoVS6C}_ucUJ+3#&v{)2&L;M^dNBaq*&8?@y}2(l?BIvYfv{lUc?9{YA8 zqbJ~qeNq{~NJLdUv>o;)Y1-fL$ISnLFEKRb-Ua;+kGGr`{hQR!XTl8}l>RTfB1YOqHzbSQ$` zGbqz0E85sdv}#qSM6u}U?Hh8c14qS8kwpa4In-P@)~~tYx^-VyAyFlm8V?N@bE|+| z*-BJSf~b&wt(Qq-`Erf&VM*qb;{jn;FP*flLz6OFXG?D*cDY-{-s-O>LQtq(iOi8R=4^OwWZ^D>X?}NN2{wKdjv= zVYZKw)xI%OO*~YOOYy@cCLO*mn1D5@m!Vs$0Z<`hB&nrMS6ZRmGP-opY{=C*R!ZT! zge5sACPls9jGE-Yk6IOoS4t6f9VKRDAkn6r85_f5q^hOKEb|*0XP<32#=&)5G}H$l zyEENr(wG{b!W6F}rGEWqEz3Ww51$DG@SS!>4n$)w(&T|iUWd3?w; z1BSYYEKD&M%&_{ZW6BB(4!FWYO5e|aLeYOgVMP9cqK_Cd*sYskGyIatnCecC=V4_q z+OGVnBc7dv$|ZQG_N`NZxsK6DCHd?%In7UtoNB_^Wg3Rlph%}tpTM)WT$Dtmn1Sl9 zs~2`PL9Q9q^jIy8{~U?xjGU@r_|j^!dXy1s_NzQ%H5`XW#X%E?=}&q~wt5D}Uxl=V zPd;)jugM9{zpC_^|i4zf%5?-d2& zv-5fkO8Wq-`f|2eLZGsetJ3N+dJ_=KgW(MU`QH#d)YXB(NL7jxSZ3AK>7Oz=I+(z| z5EGI>?}j2BWjN1N!ji&j>raG8c~K*DgXe1|rfu?dvv_mMZi;uBWVnk)*wm|XTgq%_ ztR9{EH|IOl79*1!*%Ae~gSC%WI^>0>wGLHB+DU_gK;zVf5JQJ^1s{&BGKTP9Q74sH zfA_I6LZ|lQ&0#f7*r0?%mSbU*%s2$O(vil_!pF{fiE0Euf*?bXB1pwHmzsJ4mJs>b z@b_iB73h)sR5*VRj;~HPF9onI6PL?Fm&*%g4Ff@iphQr@FU9xmwL}O2eN;uN)LJ4{ zf}pm&oEoxik|~v&Kc#_1-Sysvpu7jBWZvnhu$3c-#PB7oyJ~PLjqS*TQ6jgJCN1Tc z6F@KBeeGsLnpU>{4(f{r!@~+}xNVUomseP#fJxblMTw|%0Hi_@9iTI5_HW_Xp4gn&wrxy2 zv2EKEI}_WsZCew2VrSyqC-3{7bIIa3s$OubtW)j)3;=yux!$B=ky!inS61HL3D`I?!1QnYo zYqLv@vPaO{4q+vflD>NYB05c8)lC$7m4CP}>bU^MGCL_PUpQIB(;~=q>e8DNP#;`!dn*dZ#(>6-;8eR$?%$7k&R<5Wr zqPX?2n7RI;qQcPi*F2&ROW*S2gg_A^T&MK=O8)?%eFACy8_4<- zXu)@)(?=rr-E;|xGIFETID*FtBla%@o^n9lVoz`Ng%U9CN32A#3Y{tjbCnqzgbGEu z5RRJo0Mi(XdcrTK$zSl74pcFJX1sdWdyU>G6&4H!t@W?bX$YmzUWOfT{hPool>2w7Tf+ z-JKQqP3aql^Y6BZ=_#)1^4Y40B-5P_06e=NMs_a36zs>hujZstv1>Q=~oZTQK%SA5((-`LD=oojWywRx)_ ze2c7~QcQe&eLtGM`?^}}t&MvZbU)Fx`d|9^y7TFFl(s#%rH3}B z9C-M)bh@q`I6CyF-(Q&Ddz`bcF2yIvABj;BaNO4D>V{_h$_ZT?T;BJsg1=dR-@6v4 zpC0C}wz22f#*AzDF;4GhLu7mFMXqt>ophRJb>yRZy4G#WZd<*)q-s(5*7ELPPOSkU z@{21<@nP1*g8g>K{5nl0CnfaK=e1+g3WFd!fm_Psl}>d3&G%z@<9i(suMK|RLGj?) ztxpO*C+^yN9WNd?J{JMchx04d`l{%I*pjVg8Aw_C;?8lh&1U z)AmJTPbMxr>1qB#3?|>Fnl)1d$nxRExAu(t4c*ai-Sk;oTijEVrB79N`?m&fPhJkK z?+;r9b$?Ph?-&`M-hFD{9{SII_5HbI+OT^jSyuevuco@yiT-T!r_D_r&&KH5yjy0e z$>>qJe7YQ!Wom{0JQ?cAZW^|EuG3`OzJDdt|LJj&1oV zEgmAO3<1LXNBzc5YyOxFFD=G#l{b4uBO6)6Ap;JE?J$|eFo}h!$U?OI!qm@_OlU=J z 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 PF@P+9<#99l=db?(eaf&f literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/libs/model_utils.py b/pushservice/src/main/python/models/libs/model_utils.py deleted file mode 100644 index 1c5306911..000000000 --- a/pushservice/src/main/python/models/libs/model_utils.py +++ /dev/null @@ -1,339 +0,0 @@ -import sys - -import twml - -from .initializer import customized_glorot_uniform - -import tensorflow.compat.v1 as tf -import yaml - - -# checkstyle: noqa - - -def read_config(whitelist_yaml_file): - with tf.gfile.FastGFile(whitelist_yaml_file) as f: - try: - return yaml.safe_load(f) - except yaml.YAMLError as exc: - print(exc) - sys.exit(1) - - -def _sparse_feature_fixup(features, input_size_bits): - """Rebuild a sparse tensor feature so that its dense shape attribute is present. - - Arguments: - features (SparseTensor): Sparse feature tensor of shape ``(B, sparse_feature_dim)``. - input_size_bits (int): Number of columns in ``log2`` scale. Must be positive. - - Returns: - SparseTensor: Rebuilt and non-faulty version of `features`.""" - sparse_feature_dim = tf.constant(2**input_size_bits, dtype=tf.int64) - sparse_shape = tf.stack([features.dense_shape[0], sparse_feature_dim]) - sparse_tf = tf.SparseTensor(features.indices, features.values, sparse_shape) - return sparse_tf - - -def self_atten_dense(input, out_dim, activation=None, use_bias=True, name=None): - def safe_concat(base, suffix): - """Concats variables name components if base is given.""" - if not base: - return base - return f"{base}:{suffix}" - - input_dim = input.shape.as_list()[1] - - sigmoid_out = twml.layers.FullDense( - input_dim, dtype=tf.float32, activation=tf.nn.sigmoid, name=safe_concat(name, "sigmoid_out") - )(input) - atten_input = sigmoid_out * input - mlp_out = twml.layers.FullDense( - out_dim, - dtype=tf.float32, - activation=activation, - use_bias=use_bias, - name=safe_concat(name, "mlp_out"), - )(atten_input) - return mlp_out - - -def get_dense_out(input, out_dim, activation, dense_type): - if dense_type == "full_dense": - out = twml.layers.FullDense(out_dim, dtype=tf.float32, activation=activation)(input) - elif dense_type == "self_atten_dense": - out = self_atten_dense(input, out_dim, activation=activation) - return out - - -def get_input_trans_func(bn_normalized_dense, is_training): - gw_normalized_dense = tf.expand_dims(bn_normalized_dense, -1) - group_num = bn_normalized_dense.shape.as_list()[1] - - gw_normalized_dense = GroupWiseTrans(group_num, 1, 8, name="groupwise_1", activation=tf.tanh)( - gw_normalized_dense - ) - gw_normalized_dense = GroupWiseTrans(group_num, 8, 4, name="groupwise_2", activation=tf.tanh)( - gw_normalized_dense - ) - gw_normalized_dense = GroupWiseTrans(group_num, 4, 1, name="groupwise_3", activation=tf.tanh)( - gw_normalized_dense - ) - - gw_normalized_dense = tf.squeeze(gw_normalized_dense, [-1]) - - bn_gw_normalized_dense = tf.layers.batch_normalization( - gw_normalized_dense, - training=is_training, - renorm_momentum=0.9999, - momentum=0.9999, - renorm=is_training, - trainable=True, - ) - - return bn_gw_normalized_dense - - -def tensor_dropout( - input_tensor, - rate, - is_training, - sparse_tensor=None, -): - """ - Implements dropout layer for both dense and sparse input_tensor - - Arguments: - input_tensor: - B x D dense tensor, or a sparse tensor - rate (float32): - dropout rate - is_training (bool): - training stage or not. - sparse_tensor (bool): - whether the input_tensor is sparse tensor or not. Default to be None, this value has to be passed explicitly. - rescale_sparse_dropout (bool): - Do we need to do rescaling or not. - Returns: - tensor dropped out""" - if sparse_tensor == True: - if is_training: - with tf.variable_scope("sparse_dropout"): - values = input_tensor.values - keep_mask = tf.keras.backend.random_binomial( - tf.shape(values), p=1 - rate, dtype=tf.float32, seed=None - ) - keep_mask.set_shape([None]) - keep_mask = tf.cast(keep_mask, tf.bool) - - keep_indices = tf.boolean_mask(input_tensor.indices, keep_mask, axis=0) - keep_values = tf.boolean_mask(values, keep_mask, axis=0) - - dropped_tensor = tf.SparseTensor(keep_indices, keep_values, input_tensor.dense_shape) - return dropped_tensor - else: - return input_tensor - elif sparse_tensor == False: - return tf.layers.dropout(input_tensor, rate=rate, training=is_training) - - -def adaptive_transformation(bn_normalized_dense, is_training, func_type="default"): - assert func_type in [ - "default", - "tiny", - ], f"fun_type can only be one of default and tiny, but get {func_type}" - - gw_normalized_dense = tf.expand_dims(bn_normalized_dense, -1) - group_num = bn_normalized_dense.shape.as_list()[1] - - if func_type == "default": - gw_normalized_dense = FastGroupWiseTrans( - group_num, 1, 8, name="groupwise_1", activation=tf.tanh, init_multiplier=8 - )(gw_normalized_dense) - - gw_normalized_dense = FastGroupWiseTrans( - group_num, 8, 4, name="groupwise_2", activation=tf.tanh, init_multiplier=8 - )(gw_normalized_dense) - - gw_normalized_dense = FastGroupWiseTrans( - group_num, 4, 1, name="groupwise_3", activation=tf.tanh, init_multiplier=8 - )(gw_normalized_dense) - elif func_type == "tiny": - gw_normalized_dense = FastGroupWiseTrans( - group_num, 1, 2, name="groupwise_1", activation=tf.tanh, init_multiplier=8 - )(gw_normalized_dense) - - gw_normalized_dense = FastGroupWiseTrans( - group_num, 2, 1, name="groupwise_2", activation=tf.tanh, init_multiplier=8 - )(gw_normalized_dense) - - gw_normalized_dense = FastGroupWiseTrans( - group_num, 1, 1, name="groupwise_3", activation=tf.tanh, init_multiplier=8 - )(gw_normalized_dense) - - gw_normalized_dense = tf.squeeze(gw_normalized_dense, [-1]) - bn_gw_normalized_dense = tf.layers.batch_normalization( - gw_normalized_dense, - training=is_training, - renorm_momentum=0.9999, - momentum=0.9999, - renorm=is_training, - trainable=True, - ) - - return bn_gw_normalized_dense - - -class FastGroupWiseTrans(object): - """ - used to apply group-wise fully connected layers to the input. - it applies a tiny, unique MLP to each individual feature.""" - - def __init__(self, group_num, input_dim, out_dim, name, activation=None, init_multiplier=1): - self.group_num = group_num - self.input_dim = input_dim - self.out_dim = out_dim - self.activation = activation - self.init_multiplier = init_multiplier - - self.w = tf.get_variable( - name + "_group_weight", - [1, group_num, input_dim, out_dim], - initializer=customized_glorot_uniform( - fan_in=input_dim * init_multiplier, fan_out=out_dim * init_multiplier - ), - trainable=True, - ) - self.b = tf.get_variable( - name + "_group_bias", - [1, group_num, out_dim], - initializer=tf.constant_initializer(0.0), - trainable=True, - ) - - def __call__(self, input_tensor): - """ - input_tensor: batch_size x group_num x input_dim - output_tensor: batch_size x group_num x out_dim""" - input_tensor_expand = tf.expand_dims(input_tensor, axis=-1) - - output_tensor = tf.add( - tf.reduce_sum(tf.multiply(input_tensor_expand, self.w), axis=-2, keepdims=False), - self.b, - ) - - if self.activation is not None: - output_tensor = self.activation(output_tensor) - return output_tensor - - -class GroupWiseTrans(object): - """ - Used to apply group fully connected layers to the input. - """ - - def __init__(self, group_num, input_dim, out_dim, name, activation=None): - self.group_num = group_num - self.input_dim = input_dim - self.out_dim = out_dim - self.activation = activation - - w_list, b_list = [], [] - for idx in range(out_dim): - this_w = tf.get_variable( - name + f"_group_weight_{idx}", - [1, group_num, input_dim], - initializer=tf.keras.initializers.glorot_uniform(), - trainable=True, - ) - this_b = tf.get_variable( - name + f"_group_bias_{idx}", - [1, group_num, 1], - initializer=tf.constant_initializer(0.0), - trainable=True, - ) - w_list.append(this_w) - b_list.append(this_b) - self.w_list = w_list - self.b_list = b_list - - def __call__(self, input_tensor): - """ - input_tensor: batch_size x group_num x input_dim - output_tensor: batch_size x group_num x out_dim - """ - out_tensor_list = [] - for idx in range(self.out_dim): - this_res = ( - tf.reduce_sum(input_tensor * self.w_list[idx], axis=-1, keepdims=True) + self.b_list[idx] - ) - out_tensor_list.append(this_res) - output_tensor = tf.concat(out_tensor_list, axis=-1) - - if self.activation is not None: - output_tensor = self.activation(output_tensor) - return output_tensor - - -def add_scalar_summary(var, name, name_scope="hist_dense_feature/"): - with tf.name_scope("summaries/"): - with tf.name_scope(name_scope): - tf.summary.scalar(name, var) - - -def add_histogram_summary(var, name, name_scope="hist_dense_feature/"): - with tf.name_scope("summaries/"): - with tf.name_scope(name_scope): - tf.summary.histogram(name, tf.reshape(var, [-1])) - - -def sparse_clip_by_value(sparse_tf, min_val, max_val): - new_vals = tf.clip_by_value(sparse_tf.values, min_val, max_val) - return tf.SparseTensor(sparse_tf.indices, new_vals, sparse_tf.dense_shape) - - -def check_numerics_with_msg(tensor, message="", sparse_tensor=False): - if sparse_tensor: - values = tf.debugging.check_numerics(tensor.values, message=message) - return tf.SparseTensor(tensor.indices, values, tensor.dense_shape) - else: - return tf.debugging.check_numerics(tensor, message=message) - - -def pad_empty_sparse_tensor(tensor): - dummy_tensor = tf.SparseTensor( - indices=[[0, 0]], - values=[0.00001], - dense_shape=tensor.dense_shape, - ) - result = tf.cond( - tf.equal(tf.size(tensor.values), 0), - lambda: dummy_tensor, - lambda: tensor, - ) - return result - - -def filter_nans_and_infs(tensor, sparse_tensor=False): - if sparse_tensor: - sparse_values = tensor.values - filtered_val = tf.where( - tf.logical_or(tf.is_nan(sparse_values), tf.is_inf(sparse_values)), - tf.zeros_like(sparse_values), - sparse_values, - ) - return tf.SparseTensor(tensor.indices, filtered_val, tensor.dense_shape) - else: - return tf.where( - tf.logical_or(tf.is_nan(tensor), tf.is_inf(tensor)), tf.zeros_like(tensor), tensor - ) - - -def generate_disliked_mask(labels): - """Generate a disliked mask where only samples with dislike labels are set to 1 otherwise set to 0. - Args: - labels: labels of training samples, which is a 2D tensor of shape batch_size x 3: [OONCs, engagements, dislikes] - Returns: - 1D tensor of shape batch_size x 1: [dislikes (booleans)] - """ - return tf.equal(tf.reshape(labels[:, 2], shape=[-1, 1]), 1) diff --git a/pushservice/src/main/python/models/libs/warm_start_utils.docx b/pushservice/src/main/python/models/libs/warm_start_utils.docx new file mode 100644 index 0000000000000000000000000000000000000000..07ea51cdaccb1d76b4c2aaa050619206435974d2 GIT binary patch literal 39757 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 literal 0 HcmV?d00001 diff --git a/pushservice/src/main/python/models/libs/warm_start_utils.py b/pushservice/src/main/python/models/libs/warm_start_utils.py deleted file mode 100644 index ca83df585..000000000 --- a/pushservice/src/main/python/models/libs/warm_start_utils.py +++ /dev/null @@ -1,309 +0,0 @@ -from collections import OrderedDict -import json -import os -from os.path import join - -from twitter.magicpony.common import file_access -import twml - -from .model_utils import read_config - -import numpy as np -from scipy import stats -import tensorflow.compat.v1 as tf - - -# checkstyle: noqa - - -def get_model_type_to_tensors_to_change_axis(): - model_type_to_tensors_to_change_axis = { - "magic_recs/model/batch_normalization/beta": ([0], "continuous"), - "magic_recs/model/batch_normalization/gamma": ([0], "continuous"), - "magic_recs/model/batch_normalization/moving_mean": ([0], "continuous"), - "magic_recs/model/batch_normalization/moving_stddev": ([0], "continuous"), - "magic_recs/model/batch_normalization/moving_variance": ([0], "continuous"), - "magic_recs/model/batch_normalization/renorm_mean": ([0], "continuous"), - "magic_recs/model/batch_normalization/renorm_stddev": ([0], "continuous"), - "magic_recs/model/logits/EngagementGivenOONC_logits/clem_net_1/block2_4/channel_wise_dense_4/kernel": ( - [1], - "all", - ), - "magic_recs/model/logits/OONC_logits/clem_net/block2/channel_wise_dense/kernel": ([1], "all"), - } - - return model_type_to_tensors_to_change_axis - - -def mkdirp(dirname): - if not tf.io.gfile.exists(dirname): - tf.io.gfile.makedirs(dirname) - - -def rename_dir(dirname, dst): - file_access.hdfs.mv(dirname, dst) - - -def rmdir(dirname): - if tf.io.gfile.exists(dirname): - if tf.io.gfile.isdir(dirname): - tf.io.gfile.rmtree(dirname) - else: - tf.io.gfile.remove(dirname) - - -def get_var_dict(checkpoint_path): - checkpoint = tf.train.get_checkpoint_state(checkpoint_path) - var_dict = OrderedDict() - with tf.Session() as sess: - all_var_list = tf.train.list_variables(checkpoint_path) - for var_name, _ in all_var_list: - # Load the variable - var = tf.train.load_variable(checkpoint_path, var_name) - var_dict[var_name] = var - return var_dict - - -def get_continunous_mapping_from_feat_list(old_feature_list, new_feature_list): - """ - get var_ind for old_feature and corresponding var_ind for new_feature - """ - new_var_ind, old_var_ind = [], [] - for this_new_id, this_new_name in enumerate(new_feature_list): - if this_new_name in old_feature_list: - this_old_id = old_feature_list.index(this_new_name) - new_var_ind.append(this_new_id) - old_var_ind.append(this_old_id) - return np.asarray(old_var_ind), np.asarray(new_var_ind) - - -def get_continuous_mapping_from_feat_dict(old_feature_dict, new_feature_dict): - """ - get var_ind for old_feature and corresponding var_ind for new_feature - """ - old_cont = old_feature_dict["continuous"] - old_bin = old_feature_dict["binary"] - - new_cont = new_feature_dict["continuous"] - new_bin = new_feature_dict["binary"] - - _dummy_sparse_feat = [f"sparse_feature_{_idx}" for _idx in range(100)] - - cont_old_var_ind, cont_new_var_ind = get_continunous_mapping_from_feat_list(old_cont, new_cont) - - all_old_var_ind, all_new_var_ind = get_continunous_mapping_from_feat_list( - old_cont + old_bin + _dummy_sparse_feat, new_cont + new_bin + _dummy_sparse_feat - ) - - _res = { - "continuous": (cont_old_var_ind, cont_new_var_ind), - "all": (all_old_var_ind, all_new_var_ind), - } - - return _res - - -def warm_start_from_var_dict( - old_ckpt_path, - var_ind_dict, - output_dir, - new_len_var, - var_to_change_dict_fn=get_model_type_to_tensors_to_change_axis, -): - """ - Parameters: - old_ckpt_path (str): path to the old checkpoint path - new_var_ind (array of int): index to overlapping features in new var between old and new feature list. - old_var_ind (array of int): index to overlapping features in old var between old and new feature list. - - output_dir (str): dir that used to write modified checkpoint - new_len_var ({str:int}): number of feature in the new feature list. - var_to_change_dict_fn (dict): A function to get the dictionary of format {var_name: dim_to_change} - """ - old_var_dict = get_var_dict(old_ckpt_path) - - ckpt_file_name = os.path.basename(old_ckpt_path) - mkdirp(output_dir) - output_path = join(output_dir, ckpt_file_name) - - tensors_to_change = var_to_change_dict_fn() - tf.compat.v1.reset_default_graph() - - with tf.Session() as sess: - var_name_shape_list = tf.train.list_variables(old_ckpt_path) - count = 0 - - for var_name, var_shape in var_name_shape_list: - old_var = old_var_dict[var_name] - if var_name in tensors_to_change.keys(): - _info_tuple = tensors_to_change[var_name] - dims_to_remove_from, var_type = _info_tuple - - new_var_ind, old_var_ind = var_ind_dict[var_type] - - this_shape = list(old_var.shape) - for this_dim in dims_to_remove_from: - this_shape[this_dim] = new_len_var[var_type] - - stddev = np.std(old_var) - truncated_norm_generator = stats.truncnorm(-0.5, 0.5, loc=0, scale=stddev) - size = np.prod(this_shape) - new_var = truncated_norm_generator.rvs(size).reshape(this_shape) - new_var = new_var.astype(old_var.dtype) - - new_var = copy_feat_based_on_mapping( - new_var, old_var, dims_to_remove_from, new_var_ind, old_var_ind - ) - count = count + 1 - else: - new_var = old_var - var = tf.Variable(new_var, name=var_name) - assert count == len(tensors_to_change.keys()), "not all variables are exchanged.\n" - saver = tf.train.Saver() - sess.run(tf.global_variables_initializer()) - saver.save(sess, output_path) - return output_path - - -def copy_feat_based_on_mapping(new_array, old_array, dims_to_remove_from, new_var_ind, old_var_ind): - if dims_to_remove_from == [0, 1]: - for this_new_ind, this_old_ind in zip(new_var_ind, old_var_ind): - new_array[this_new_ind, new_var_ind] = old_array[this_old_ind, old_var_ind] - elif dims_to_remove_from == [0]: - new_array[new_var_ind] = old_array[old_var_ind] - elif dims_to_remove_from == [1]: - new_array[:, new_var_ind] = old_array[:, old_var_ind] - else: - raise RuntimeError(f"undefined dims_to_remove_from pattern: ({dims_to_remove_from})") - return new_array - - -def read_file(filename, decode=False): - """ - Reads contents from a file and optionally decodes it. - - Arguments: - filename: - path to file where the contents will be loaded from. - Accepts HDFS and local paths. - decode: - False or 'json'. When decode='json', contents is decoded - with json.loads. When False, contents is returned as is. - """ - graph = tf.Graph() - with graph.as_default(): - read = tf.read_file(filename) - - with tf.Session(graph=graph) as sess: - contents = sess.run(read) - if not isinstance(contents, str): - contents = contents.decode() - - if decode == "json": - contents = json.loads(contents) - - return contents - - -def read_feat_list_from_disk(file_path): - return read_file(file_path, decode="json") - - -def get_feature_list_for_light_ranking(feature_list_path, data_spec_path): - feature_list = read_config(feature_list_path).items() - string_feat_list = [f[0] for f in feature_list if f[1] != "S"] - - feature_config_builder = twml.contrib.feature_config.FeatureConfigBuilder( - data_spec_path=data_spec_path - ) - feature_config_builder = feature_config_builder.extract_feature_group( - feature_regexes=string_feat_list, - group_name="continuous", - default_value=-1, - type_filter=["CONTINUOUS"], - ) - feature_config = feature_config_builder.build() - feature_list = feature_config_builder._feature_group_extraction_configs[0].feature_map[ - "CONTINUOUS" - ] - return feature_list - - -def get_feature_list_for_heavy_ranking(feature_list_path, data_spec_path): - feature_list = read_config(feature_list_path).items() - string_feat_list = [f[0] for f in feature_list if f[1] != "S"] - - feature_config_builder = twml.contrib.feature_config.FeatureConfigBuilder( - data_spec_path=data_spec_path - ) - feature_config_builder = feature_config_builder.extract_feature_group( - feature_regexes=string_feat_list, - group_name="continuous", - default_value=-1, - type_filter=["CONTINUOUS"], - ) - - feature_config_builder = feature_config_builder.extract_feature_group( - feature_regexes=string_feat_list, - group_name="binary", - default_value=False, - type_filter=["BINARY"], - ) - - feature_config_builder = feature_config_builder.build() - - continuous_feature_list = feature_config_builder._feature_group_extraction_configs[0].feature_map[ - "CONTINUOUS" - ] - - binary_feature_list = feature_config_builder._feature_group_extraction_configs[1].feature_map[ - "BINARY" - ] - return {"continuous": continuous_feature_list, "binary": binary_feature_list} - - -def warm_start_checkpoint( - old_best_ckpt_folder, - old_feature_list_path, - feature_allow_list_path, - data_spec_path, - output_ckpt_folder, - *args, -): - """ - Reads old checkpoint and the old feature list, and create a new ckpt warm started from old ckpt using new features . - - Arguments: - old_best_ckpt_folder: - path to the best_checkpoint_folder for old model - old_feature_list_path: - path to the json file that stores the list of continuous features used in old models. - feature_allow_list_path: - yaml file that contain the feature allow list. - data_spec_path: - path to the data_spec file - output_ckpt_folder: - folder that contains the modified ckpt. - - Returns: - path to the modified ckpt.""" - old_ckpt_path = tf.train.latest_checkpoint(old_best_ckpt_folder, latest_filename=None) - - new_feature_dict = get_feature_list(feature_allow_list_path, data_spec_path) - old_feature_dict = read_feat_list_from_disk(old_feature_list_path) - - var_ind_dict = get_continuous_mapping_from_feat_dict(new_feature_dict, old_feature_dict) - - new_len_var = { - "continuous": len(new_feature_dict["continuous"]), - "all": len(new_feature_dict["continuous"] + new_feature_dict["binary"]) + 100, - } - - warm_started_ckpt_path = warm_start_from_var_dict( - old_ckpt_path, - var_ind_dict, - output_dir=output_ckpt_folder, - new_len_var=new_len_var, - ) - - return warm_started_ckpt_path diff --git a/pushservice/src/main/python/models/light_ranking/BUILD b/pushservice/src/main/python/models/light_ranking/BUILD deleted file mode 100644 index e88d7de7c..000000000 --- a/pushservice/src/main/python/models/light_ranking/BUILD +++ /dev/null @@ -1,69 +0,0 @@ -#":mlwf_libs", - -python37_binary( - name = "eval_model", - source = "eval_model.py", - dependencies = [ - ":libs", - "3rdparty/python/_closures/frigate/frigate-pushservice-opensource/src/main/python/models/light_ranking:eval_model", - ], -) - -python37_binary( - name = "train_model", - source = "deep_norm.py", - dependencies = [ - ":libs", - "3rdparty/python/_closures/frigate/frigate-pushservice-opensource/src/main/python/models/light_ranking:train_model", - ], -) - -python37_binary( - name = "train_model_local", - source = "deep_norm.py", - dependencies = [ - ":libs", - "3rdparty/python/_closures/frigate/frigate-pushservice-opensource/src/main/python/models/light_ranking:train_model_local", - "twml", - ], -) - -python37_binary( - name = "eval_model_local", - source = "eval_model.py", - dependencies = [ - ":libs", - "3rdparty/python/_closures/frigate/frigate-pushservice-opensource/src/main/python/models/light_ranking:eval_model_local", - "twml", - ], -) - -python37_binary( - name = "mlwf_model", - source = "deep_norm.py", - dependencies = [ - ":mlwf_libs", - "3rdparty/python/_closures/frigate/frigate-pushservice-opensource/src/main/python/models/light_ranking:mlwf_model", - ], -) - -python3_library( - name = "libs", - sources = ["**/*.py"], - tags = ["no-mypy"], - dependencies = [ - "src/python/twitter/deepbird/projects/magic_recs/libs", - "src/python/twitter/deepbird/util/data", - "twml:twml-nodeps", - ], -) - -python3_library( - name = "mlwf_libs", - sources = ["**/*.py"], - tags = ["no-mypy"], - dependencies = [ - "src/python/twitter/deepbird/projects/magic_recs/libs", - "twml", - ], -) diff --git a/pushservice/src/main/python/models/light_ranking/BUILD.docx b/pushservice/src/main/python/models/light_ranking/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..827c8085149480c4caa2d8d8e6543b35092362f4 GIT binary patch literal 37004 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≤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