+\r
+\r
+//std::function<std::wstring()> channel_cg_add_command::parse(const std::wstring& message, const std::vector<renderer::render_device_ptr>& channels)\r
+//{\r
+// static boost::wregex expr(L"^CG\\s(?<video_channel>\\d+)-?(?<LAYER>\\d+)?\\sADD\\s(?<FLASH_LAYER>\\d+)\\s(?<TEMPLATE>\\S+)\\s?(?<START_LABEL>\\S\\S+)?\\s?(?<PLAY_ON_LOAD>\\d)?\\s?(?<DATA>.*)?");\r
+//\r
+// boost::wsmatch what;\r
+// if(!boost::regex_match(message, what, expr))\r
+// return nullptr;\r
+//\r
+// auto info = channel_info::parse(what, channels);\r
+//\r
+// int flash_layer_index = boost::lexical_cast<int>(what["FLASH_LAYER"].str());\r
+//\r
+// std::wstring templatename = what["TEMPLATE"].str();\r
+// bool play_on_load = what["PLAY_ON_LOAD"].matched ? what["PLAY_ON_LOAD"].str() != L"0" : 0;\r
+// std::wstring start_label = what["START_LABEL"].str(); \r
+// std::wstring data = get_data(what["DATA"].str());\r
+// \r
+// boost::replace_all(templatename, "\"", "");\r
+//\r
+// return [=]() -> std::wstring\r
+// { \r
+// std::wstring fullFilename = flash::flash_producer::find_template(server::template_folder() + templatename);\r
+// if(fullFilename.empty())\r
+// BOOST_THROW_EXCEPTION(file_not_found());\r
+// \r
+// std::wstring extension = boost::filesystem::wpath(fullFilename).extension();\r
+// std::wstring filename = templatename;\r
+// filename.append(extension);\r
+//\r
+// flash::flash::get_default_cg_producer(info.video_channel, std::max<int>(DEFAULT_CHANNEL_LAYER+1, info.layer_index))\r
+// ->add(flash_layer_index, filename, play_on_load, start_label, data);\r
+//\r
+// CASPAR_LOG(info) << L"Executed [amcp_channel_cg_add]";\r
+// return L"";\r
+// };\r
+\r