# frozen_string_literal: true Config.aggregated_metric_types = %w( click conversion impression video_25 video_50 video_75 video_100 ).freeze Config.non_aggregated_metric_types = %w( bot decision non_bot non_viewable viewable win render ).freeze Config.cost_metrics = %w( win_cost decision_cost ).freeze Config.compound_metrics = { 'bot_click' => %w(bot click), 'bot_decision_win_click' => %w(bot decision win click), 'bot_decision_win_impression' => %w(bot decision win impression), 'bot_decision_win_render_click' => %w(bot decision win click render), 'bot_decision_win_render_impression' => %w(bot decision win render impression), 'bot_impression' => %w(impression bot), 'bot_loaded_impression' => %w(impression win bot), 'bot_loaded_click' => %w(bot click win), 'bot_loaded_render_impression' => %w(impression win bot render), 'bot_render_impression' => %w(impression bot render), 'decision_win_click' => %w(decision win click), 'decision_win_impression' => %w(impression decision win), 'decision_win_render_click' => %w(decision win click render), 'decision_win_render_impression' => %w(decision win render impression), 'loaded_click' => %w(click win), 'loaded_impression' => %w(impression win), 'loaded_render_click' => %w(click win render), 'loaded_render_impression' => %w(impression render win), 'non_bot_decision_win_click' => %w(non_bot decision win click), 'non_bot_decision_win_impression' => %w(non_bot decision win impression), 'non_bot_decision_win_render_click' => %w(non_bot decision win click render), 'non_bot_decision_win_render_impression' => %w(non_bot decision win render impression), 'non_bot_impression' => %w(impression non_bot), 'non_bot_click' => %w(non_bot click), 'non_bot_loaded_impression' => %w(impression win non_bot), 'non_bot_loaded_click' => %w(non_bot win click), 'non_bot_loaded_render_impression' => %w(impression win non_bot render), 'non_bot_render_impression' => %w(impression non_bot render), 'non_viewable_bot_decision_win_click' => %w(non_viewable bot decision win click), 'non_viewable_bot_decision_win_impression' => %w(non_viewable bot decision win impression), 'non_viewable_bot_decision_win_render_click' => %w(non_viewable bot decision win click render), 'non_viewable_bot_decision_win_render_impression' => %w(non_viewable bot decision win render impression), 'non_viewable_bot_loaded_click' => %w(non_viewable bot win click), 'non_viewable_bot_loaded_impression' => %w(non_viewable bot win impression), 'non_viewable_bot_loaded_render_click' => %w(non_viewable bot win click render), 'non_viewable_bot_loaded_render_impression' => %w(non_viewable bot win render impression), 'non_viewable_click' => %w(click non_viewable), 'non_viewable_decision_win_click' => %w(non_viewable decision win click), 'non_viewable_decision_win_impression' => %w(non_viewable decision win impression), 'non_viewable_decision_win_render_click' => %w(non_viewable decision win click render), 'non_viewable_decision_win_render_impression' => %w(non_viewable decision win render impression), 'non_viewable_impression' => %w(impression non_viewable), 'non_viewable_loaded_click' => %w(non_viewable click win), 'non_viewable_loaded_impression' => %w(non_viewable impression win), 'non_viewable_loaded_render_click' => %w(non_viewable click win render), 'non_viewable_loaded_render_impression' => %w(non_viewable impression win render), 'non_viewable_non_bot_impression' => %w(non_viewable non_bot impression), 'non_viewable_non_bot_click' => %w(non_viewable non_bot click), 'non_viewable_non_bot_decision_win_click' => %w(non_viewable non_bot decision win click), 'non_viewable_non_bot_decision_win_impression' => %w(non_viewable non_bot decision win impression), 'non_viewable_non_bot_decision_win_render_click' => %w(non_viewable non_bot decision win click render), 'non_viewable_non_bot_decision_win_render_impression' => %w(non_viewable non_bot decision win render impression), 'non_viewable_non_bot_loaded_click' => %w(non_viewable non_bot win click), 'non_viewable_non_bot_loaded_impression' => %w(non_viewable non_bot win impression), 'non_viewable_non_bot_loaded_render_click' => %w(non_viewable non_bot win click render), 'non_viewable_non_bot_loaded_render_impression' => %w(non_viewable non_bot win render impression), 'non_viewable_render_click' => %w(click non_viewable render), 'non_viewable_render_impression' => %w(impression non_viewable render), 'render_click' => %w(click render), 'render_impression' => %w(impression render), 'viewable_bot_impression' => %w(viewable bot impression), 'viewable_bot_click' => %w(viewable bot click), 'viewable_bot_decision_win_click' => %w(viewable bot decision win click), 'viewable_bot_decision_win_impression' => %w(viewable bot decision win impression), 'viewable_bot_decision_win_render_click' => %w(viewable bot decision win click render), 'viewable_bot_decision_win_render_impression' => %w(viewable bot decision win render impression), 'viewable_bot_loaded_click' => %w(viewable bot click win), 'viewable_bot_loaded_impression' => %w(viewable bot impression win), 'viewable_bot_loaded_render_click' => %w(viewable bot click win render), 'viewable_bot_loaded_render_impression' => %w(viewable bot impression win render), 'viewable_click' => %w(click viewable), 'viewable_decision_win_click' => %w(viewable decision click win), 'viewable_decision_win_impression' => %w(viewable decision impression win), 'viewable_decision_win_render_click' => %w(viewable decision click win render), 'viewable_decision_win_render_impression' => %w(viewable decision win render impression), 'viewable_impression' => %w(impression viewable), 'viewable_loaded_click' => %w(viewable click win), 'viewable_loaded_impression' => %w(viewable impression win), 'viewable_loaded_render_click' => %w(viewable click win render), 'viewable_loaded_render_impression' => %w(viewable impression win render), 'viewable_non_bot_impression' => %w(viewable non_bot impression), 'viewable_non_bot_click' => %w(viewable non_bot click), 'viewable_non_bot_decision_win_click' => %w(viewable non_bot decision win click), 'viewable_non_bot_decision_win_impression' => %w(viewable non_bot decision win impression), 'viewable_non_bot_decision_win_render_click' => %w(viewable non_bot decision win click render), 'viewable_non_bot_decision_win_render_impression' => %w(viewable non_bot decision win render impression), 'viewable_non_bot_loaded_click' => %w(viewable non_bot win click), 'viewable_non_bot_loaded_impression' => %w(viewable non_bot win impression), 'viewable_non_bot_loaded_render_click' => %w(viewable non_bot win click render), 'viewable_non_bot_loaded_render_impression' => %w(viewable non_bot win render impression), 'viewable_render_click' => %w(click viewable render), 'viewable_render_impression' => %w(impression viewable render), 'loaded_video_25' => %w(video_25 win), 'decision_win_video_25' => %w(video_25 decision win), 'bot_video_25' => %w(video_25 bot), 'loaded_bot_video_25' => %w(video_25 bot win), 'bot_decision_win_video_25' => %w(bot video_25 decision win), 'non_bot_video_25' => %w(video_25 non_bot), 'non_bot_loaded_video_25' => %w(video_25 non_bot win), 'non_bot_decision_win_video_25' => %w(video_25 non_bot decision win), 'viewable_video_25' => %w(viewable video_25), 'viewable_loaded_video_25' => %w(viewable video_25 win), 'viewable_decision_win_video_25' => %w(viewable video_25 decision win), 'non_viewable_video_25' => %w(non_viewable video_25), 'non_viewable_loaded_video_25' => %w(non_viewable video_25 win), 'non_viewable_decision_win_video_25' => %w(non_viewable video_25 decision win), 'render_video_25' => %w(render video_25), 'loaded_render_video_25' => %w(render win video_25), 'decision_win_render_video_25' => %w(render decision win video_25), 'viewable_bot_video_25' => %w(viewable bot video_25), 'viewable_bot_loaded_video_25' => %w(viewable bot win video_25), 'viewable_bot_decision_win_video_25' => %w(viewable bot decision win video_25), 'viewable_non_bot_video_25' => %w(viewable non_bot video_25), 'viewable_non_bot_loaded_video_25' => %w(viewable non_bot win video_25), 'viewable_non_bot_decision_win_video_25' => %w(viewable non_bot decision win video_25), 'viewable_render_video_25' => %w(viewable render video_25), 'viewable_loaded_render_video_25' => %w(viewable render win video_25), 'viewable_decision_win_render_video_25' => %w(viewable render decision win video_25), 'vieawable_bot_render_video_25' => %w(viewable bot render video_25), 'viewable_bot_loaded_render_video_25' => %w(viewable bot render win video_25), 'viewable_bot_decision_win_render_video_25' => %w(viewable bot render decision win video_25), 'viewable_non_bot_render_video_25' => %w(viewable non_bot render video_25), 'viewable_non_bot_loaded_render_video_25' => %w(viewable non_bot render win video_25), 'viewable_non_bot_decision_win_render_video_25' => %w(viewable non_bot render decision win video_25), 'non_viewable_bot_video_25' => %w(non_viewable bot video_25), 'non_viewable_bot_loaded_video_25' => %w(non_viewable bot win video_25), 'non_viewable_bot_decision_win_video_25' => %w(non_viewable bot decision win video_25), 'non_viewable_non_bot_video_25' => %w(non_viewable non_bot video_25), 'non_viewable_non_bot_loaded_video_25' => %w(non_viewable non_bot win video_25), 'non_viewable_non_bot_decision_win_video_25' => %w(non_viewable non_bot decision win video_25), 'non_viewable_render_video_25' => %w(non_viewable render video_25), 'non_viewable_loaded_render_video_25' => %w(non_viewable render win video_25), 'non_viewable_decision_win_render_video_25' => %w(non_viewable render decision win video_25), 'non_viewable_bot_render_video_25' => %w(non_viewable bot render video_25), 'non_viewable_bot_loaded_render_video_25' => %w(non_viewable bot render win video_25), 'non_viewable_bot_decision_win_render_video_25' => %w(non_viewable bot render decision win video_25), 'non_viewable_non_bot_render_video_25' => %w(non_viewable non_bot render video_25), 'non_viewable_non_bot_loaded_render_video_25' => %w(non_viewable non_bot render win video_25), 'non_viewable_non_bot_decision_win_render_video_25' => %w(non_viewable non_bot render decision win video_25), 'bot_render_video_25' => %w(bot render video_25), 'bot_loaded_render_video_25' => %w(bot render video_25 win), 'bot_decision_win_render_video_25' => %w(bot render video_25 decision win), 'non_bot_render_video_25' => %w(non_bot render video_25), 'non_bot_loaded_render_video_25' => %w(non_bot render win video_25), 'non_bot_decision_win_render_video_25' => %w(non_bot render decision win video_25), 'loaded_video_50' => %w(video_50 win), 'decision_win_video_50' => %w(video_50 decision win), 'bot_video_50' => %w(video_50 bot), 'loaded_bot_video_50' => %w(video_50 bot win), 'bot_decision_win_video_50' => %w(bot video_50 decision win), 'non_bot_video_50' => %w(video_50 non_bot), 'non_bot_loaded_video_50' => %w(video_50 non_bot win), 'non_bot_decision_win_video_50' => %w(video_50 non_bot decision win), 'viewable_video_50' => %w(viewable video_50), 'viewable_loaded_video_50' => %w(viewable video_50 win), 'viewable_decision_win_video_50' => %w(viewable video_50 decision win), 'non_viewable_video_50' => %w(non_viewable video_50), 'non_viewable_loaded_video_50' => %w(non_viewable video_50 win), 'non_viewable_decision_win_video_50' => %w(non_viewable video_50 decision win), 'render_video_50' => %w(render video_50), 'loaded_render_video_50' => %w(render win video_50), 'decision_win_render_video_50' => %w(render decision win video_50), 'viewable_bot_video_50' => %w(viewable bot video_50), 'viewable_bot_loaded_video_50' => %w(viewable bot win video_50), 'viewable_bot_decision_win_video_50' => %w(viewable bot decision win video_50), 'viewable_non_bot_video_50' => %w(viewable non_bot video_50), 'viewable_non_bot_loaded_video_50' => %w(viewable non_bot win video_50), 'viewable_non_bot_decision_win_video_50' => %w(viewable non_bot decision win video_50), 'viewable_render_video_50' => %w(viewable render video_50), 'viewable_loaded_render_video_50' => %w(viewable render win video_50), 'viewable_decision_win_render_video_50' => %w(viewable render decision win video_50), 'vieawable_bot_render_video_50' => %w(viewable bot render video_50), 'viewable_bot_loaded_render_video_50' => %w(viewable bot render win video_50), 'viewable_bot_decision_win_render_video_50' => %w(viewable bot render decision win video_50), 'viewable_non_bot_render_video_50' => %w(viewable non_bot render video_50), 'viewable_non_bot_loaded_render_video_50' => %w(viewable non_bot render win video_50), 'viewable_non_bot_decision_win_render_video_50' => %w(viewable non_bot render decision win video_50), 'non_viewable_bot_video_50' => %w(non_viewable bot video_50), 'non_viewable_bot_loaded_video_50' => %w(non_viewable bot win video_50), 'non_viewable_bot_decision_win_video_50' => %w(non_viewable bot decision win video_50), 'non_viewable_non_bot_video_50' => %w(non_viewable non_bot video_50), 'non_viewable_non_bot_loaded_video_50' => %w(non_viewable non_bot win video_50), 'non_viewable_non_bot_decision_win_video_50' => %w(non_viewable non_bot decision win video_50), 'non_viewable_render_video_50' => %w(non_viewable render video_50), 'non_viewable_loaded_render_video_50' => %w(non_viewable render win video_50), 'non_viewable_decision_win_render_video_50' => %w(non_viewable render decision win video_50), 'non_viewable_bot_render_video_50' => %w(non_viewable bot render video_50), 'non_viewable_bot_loaded_render_video_50' => %w(non_viewable bot render win video_50), 'non_viewable_bot_decision_win_render_video_50' => %w(non_viewable bot render decision win video_50), 'non_viewable_non_bot_render_video_50' => %w(non_viewable non_bot render video_50), 'non_viewable_non_bot_loaded_render_video_50' => %w(non_viewable non_bot render win video_50), 'non_viewable_non_bot_decision_win_render_video_50' => %w(non_viewable non_bot render decision win video_50), 'bot_render_video_50' => %w(bot render video_50), 'bot_loaded_render_video_50' => %w(bot render video_50 win), 'bot_decision_win_render_video_50' => %w(bot render video_50 decision win), 'non_bot_render_video_50' => %w(non_bot render video_50), 'non_bot_loaded_render_video_50' => %w(non_bot render win video_50), 'non_bot_decision_win_render_video_50' => %w(non_bot render decision win video_50), 'loaded_video_75' => %w(video_75 win), 'decision_win_video_75' => %w(video_75 decision win), 'bot_video_75' => %w(video_75 bot), 'loaded_bot_video_75' => %w(video_75 bot win), 'bot_decision_win_video_75' => %w(bot video_75 decision win), 'non_bot_video_75' => %w(video_75 non_bot), 'non_bot_loaded_video_75' => %w(video_75 non_bot win), 'non_bot_decision_win_video_75' => %w(video_75 non_bot decision win), 'viewable_video_75' => %w(viewable video_75), 'viewable_loaded_video_75' => %w(viewable video_75 win), 'viewable_decision_win_video_75' => %w(viewable video_75 decision win), 'non_viewable_video_75' => %w(non_viewable video_75), 'non_viewable_loaded_video_75' => %w(non_viewable video_75 win), 'non_viewable_decision_win_video_75' => %w(non_viewable video_75 decision win), 'render_video_75' => %w(render video_75), 'loaded_render_video_75' => %w(render win video_75), 'decision_win_render_video_75' => %w(render decision win video_75), 'viewable_bot_video_75' => %w(viewable bot video_75), 'viewable_bot_loaded_video_75' => %w(viewable bot win video_75), 'viewable_bot_decision_win_video_75' => %w(viewable bot decision win video_75), 'viewable_non_bot_video_75' => %w(viewable non_bot video_75), 'viewable_non_bot_loaded_video_75' => %w(viewable non_bot win video_75), 'viewable_non_bot_decision_win_video_75' => %w(viewable non_bot decision win video_75), 'viewable_render_video_75' => %w(viewable render video_75), 'viewable_loaded_render_video_75' => %w(viewable render win video_75), 'viewable_decision_win_render_video_75' => %w(viewable render decision win video_75), 'vieawable_bot_render_video_75' => %w(viewable bot render video_75), 'viewable_bot_loaded_render_video_75' => %w(viewable bot render win video_75), 'viewable_bot_decision_win_render_video_75' => %w(viewable bot render decision win video_75), 'viewable_non_bot_render_video_75' => %w(viewable non_bot render video_75), 'viewable_non_bot_loaded_render_video_75' => %w(viewable non_bot render win video_75), 'viewable_non_bot_decision_win_render_video_75' => %w(viewable non_bot render decision win video_75), 'non_viewable_bot_video_75' => %w(non_viewable bot video_75), 'non_viewable_bot_loaded_video_75' => %w(non_viewable bot win video_75), 'non_viewable_bot_decision_win_video_75' => %w(non_viewable bot decision win video_75), 'non_viewable_non_bot_video_75' => %w(non_viewable non_bot video_75), 'non_viewable_non_bot_loaded_video_75' => %w(non_viewable non_bot win video_75), 'non_viewable_non_bot_decision_win_video_75' => %w(non_viewable non_bot decision win video_75), 'non_viewable_render_video_75' => %w(non_viewable render video_75), 'non_viewable_loaded_render_video_75' => %w(non_viewable render win video_75), 'non_viewable_decision_win_render_video_75' => %w(non_viewable render decision win video_75), 'non_viewable_bot_render_video_75' => %w(non_viewable bot render video_75), 'non_viewable_bot_loaded_render_video_75' => %w(non_viewable bot render win video_75), 'non_viewable_bot_decision_win_render_video_75' => %w(non_viewable bot render decision win video_75), 'non_viewable_non_bot_render_video_75' => %w(non_viewable non_bot render video_75), 'non_viewable_non_bot_loaded_render_video_75' => %w(non_viewable non_bot render win video_75), 'non_viewable_non_bot_decision_win_render_video_75' => %w(non_viewable non_bot render decision win video_75), 'bot_render_video_75' => %w(bot render video_75), 'bot_loaded_render_video_75' => %w(bot render video_75 win), 'bot_decision_win_render_video_75' => %w(bot render video_75 decision win), 'non_bot_render_video_75' => %w(non_bot render video_75), 'non_bot_loaded_render_video_75' => %w(non_bot render win video_75), 'non_bot_decision_win_render_video_75' => %w(non_bot render decision win video_75), 'loaded_video_100' => %w(video_100 win), 'decision_win_video_100' => %w(video_100 decision win), 'bot_video_100' => %w(video_100 bot), 'loaded_bot_video_100' => %w(video_100 bot win), 'bot_decision_win_video_100' => %w(bot video_100 decision win), 'non_bot_video_100' => %w(video_100 non_bot), 'non_bot_loaded_video_100' => %w(video_100 non_bot win), 'non_bot_decision_win_video_100' => %w(video_100 non_bot decision win), 'viewable_video_100' => %w(viewable video_100), 'viewable_loaded_video_100' => %w(viewable video_100 win), 'viewable_decision_win_video_100' => %w(viewable video_100 decision win), 'non_viewable_video_100' => %w(non_viewable video_100), 'non_viewable_loaded_video_100' => %w(non_viewable video_100 win), 'non_viewable_decision_win_video_100' => %w(non_viewable video_100 decision win), 'render_video_100' => %w(render video_100), 'loaded_render_video_100' => %w(render win video_100), 'decision_win_render_video_100' => %w(render decision win video_100), 'viewable_bot_video_100' => %w(viewable bot video_100), 'viewable_bot_loaded_video_100' => %w(viewable bot win video_100), 'viewable_bot_decision_win_video_100' => %w(viewable bot decision win video_100), 'viewable_non_bot_video_100' => %w(viewable non_bot video_100), 'viewable_non_bot_loaded_video_100' => %w(viewable non_bot win video_100), 'viewable_non_bot_decision_win_video_100' => %w(viewable non_bot decision win video_100), 'viewable_render_video_100' => %w(viewable render video_100), 'viewable_loaded_render_video_100' => %w(viewable render win video_100), 'viewable_decision_win_render_video_100' => %w(viewable render decision win video_100), 'vieawable_bot_render_video_100' => %w(viewable bot render video_100), 'viewable_bot_loaded_render_video_100' => %w(viewable bot render win video_100), 'viewable_bot_decision_win_render_video_100' => %w(viewable bot render decision win video_100), 'viewable_non_bot_render_video_100' => %w(viewable non_bot render video_100), 'viewable_non_bot_loaded_render_video_100' => %w(viewable non_bot render win video_100), 'viewable_non_bot_decision_win_render_video_100' => %w(viewable non_bot render decision win video_100), 'non_viewable_bot_video_100' => %w(non_viewable bot video_100), 'non_viewable_bot_loaded_video_100' => %w(non_viewable bot win video_100), 'non_viewable_bot_decision_win_video_100' => %w(non_viewable bot decision win video_100), 'non_viewable_non_bot_video_100' => %w(non_viewable non_bot video_100), 'non_viewable_non_bot_loaded_video_100' => %w(non_viewable non_bot win video_100), 'non_viewable_non_bot_decision_win_video_100' => %w(non_viewable non_bot decision win video_100), 'non_viewable_render_video_100' => %w(non_viewable render video_100), 'non_viewable_loaded_render_video_100' => %w(non_viewable render win video_100), 'non_viewable_decision_win_render_video_100' => %w(non_viewable render decision win video_100), 'non_viewable_bot_render_video_100' => %w(non_viewable bot render video_100), 'non_viewable_bot_loaded_render_video_100' => %w(non_viewable bot render win video_100), 'non_viewable_bot_decision_win_render_video_100' => %w(non_viewable bot render decision win video_100), 'non_viewable_non_bot_render_video_100' => %w(non_viewable non_bot render video_100), 'non_viewable_non_bot_loaded_render_video_100' => %w(non_viewable non_bot render win video_100), 'non_viewable_non_bot_decision_win_render_video_100' => %w(non_viewable non_bot render decision win video_100), 'bot_render_video_100' => %w(bot render video_100), 'bot_loaded_render_video_100' => %w(bot render video_100 win), 'bot_decision_win_render_video_100' => %w(bot render video_100 decision win), 'non_bot_render_video_100' => %w(non_bot render video_100), 'non_bot_loaded_render_video_100' => %w(non_bot render win video_100), 'non_bot_decision_win_render_video_100' => %w(non_bot render decision win video_100) }.freeze Config.compound_metric_types = Config.compound_metrics.keys Config.metrics = (Config.aggregated_metric_types + Config.non_aggregated_metric_types).freeze Config.metric_types = (Config.metrics + Config.compound_metrics.keys)