From 877102d4b9d66ddf90ec3e7443c9662ca474c7eb Mon Sep 17 00:00:00 2001
From: Andrey Volk <andywolk@gmail.com>
Date: Tue, 23 Mar 2021 17:33:46 +0000
Subject: [PATCH] swigall

---
 .../src/org/freeswitch/swig/Event.java        |   4 +
 .../org/freeswitch/swig/freeswitchJNI.java    |   1 +
 .../languages/mod_java/switch_swig_wrap.cpp   |  18 ++
 src/mod/languages/mod_lua/mod_lua_wrap.cpp    |  32 +++
 .../languages/mod_managed/freeswitch_wrap.cxx | 229 +++++++++++++++++-
 src/mod/languages/mod_managed/managed/swig.cs | 186 +++++++++++++-
 src/mod/languages/mod_perl/freeswitch.pm      |   1 +
 src/mod/languages/mod_perl/mod_perl_wrap.cpp  |  39 +++
 src/mod/languages/mod_python/freeswitch.py    |   3 +
 .../languages/mod_python/mod_python_wrap.cpp  |  32 +++
 10 files changed, 539 insertions(+), 6 deletions(-)

diff --git a/src/mod/languages/mod_java/src/org/freeswitch/swig/Event.java b/src/mod/languages/mod_java/src/org/freeswitch/swig/Event.java
index fd2c933b20..5c3961dc8c 100644
--- a/src/mod/languages/mod_java/src/org/freeswitch/swig/Event.java
+++ b/src/mod/languages/mod_java/src/org/freeswitch/swig/Event.java
@@ -112,4 +112,8 @@ public class Event {
     return freeswitchJNI.Event_fire(swigCPtr, this);
   }
 
+  public boolean merge(Event to_merge) {
+    return freeswitchJNI.Event_merge(swigCPtr, this, Event.getCPtr(to_merge), to_merge);
+  }
+
 }
diff --git a/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java b/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
index cceea3402a..37786aff1a 100644
--- a/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
+++ b/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
@@ -71,6 +71,7 @@ public class freeswitchJNI {
   public final static native boolean Event_addHeader(long jarg1, Event jarg1_, String jarg2, String jarg3);
   public final static native boolean Event_delHeader(long jarg1, Event jarg1_, String jarg2);
   public final static native boolean Event_fire(long jarg1, Event jarg1_);
+  public final static native boolean Event_merge(long jarg1, Event jarg1_, long jarg2, Event jarg2_);
   public final static native void EventConsumer_events_set(long jarg1, EventConsumer jarg1_, long jarg2);
   public final static native long EventConsumer_events_get(long jarg1, EventConsumer jarg1_);
   public final static native void EventConsumer_e_event_id_set(long jarg1, EventConsumer jarg1_, long jarg2);
diff --git a/src/mod/languages/mod_java/switch_swig_wrap.cpp b/src/mod/languages/mod_java/switch_swig_wrap.cpp
index f1b004dece..efd0211940 100644
--- a/src/mod/languages/mod_java/switch_swig_wrap.cpp
+++ b/src/mod/languages/mod_java/switch_swig_wrap.cpp
@@ -1450,6 +1450,24 @@ SWIGEXPORT jboolean JNICALL Java_org_freeswitch_swig_freeswitchJNI_Event_1fire(J
 }
 
 
+SWIGEXPORT jboolean JNICALL Java_org_freeswitch_swig_freeswitchJNI_Event_1merge(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) {
+  jboolean jresult = 0 ;
+  Event *arg1 = (Event *) 0 ;
+  Event *arg2 = (Event *) 0 ;
+  bool result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  (void)jarg2_;
+  arg1 = *(Event **)&jarg1; 
+  arg2 = *(Event **)&jarg2; 
+  result = (bool)(arg1)->merge(arg2);
+  jresult = (jboolean)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_EventConsumer_1events_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
   EventConsumer *arg1 = (EventConsumer *) 0 ;
   switch_queue_t *arg2 = (switch_queue_t *) 0 ;
diff --git a/src/mod/languages/mod_lua/mod_lua_wrap.cpp b/src/mod/languages/mod_lua/mod_lua_wrap.cpp
index a54f1faf68..7d91ba33ba 100644
--- a/src/mod/languages/mod_lua/mod_lua_wrap.cpp
+++ b/src/mod/languages/mod_lua/mod_lua_wrap.cpp
@@ -4961,6 +4961,37 @@ fail:
 }
 
 
+static int _wrap_Event_merge(lua_State* L) {
+  int SWIG_arg = 0;
+  Event *arg1 = (Event *) 0 ;
+  Event *arg2 = (Event *) 0 ;
+  bool result;
+  
+  SWIG_check_num_args("Event::merge",2,2)
+  if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("Event::merge",1,"Event *");
+  if(!SWIG_isptrtype(L,2)) SWIG_fail_arg("Event::merge",2,"Event *");
+  
+  if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Event,0))){
+    SWIG_fail_ptr("Event_merge",1,SWIGTYPE_p_Event);
+  }
+  
+  
+  if (!SWIG_IsOK(SWIG_ConvertPtr(L,2,(void**)&arg2,SWIGTYPE_p_Event,0))){
+    SWIG_fail_ptr("Event_merge",2,SWIGTYPE_p_Event);
+  }
+  
+  result = (bool)(arg1)->merge(arg2);
+  lua_pushboolean(L,(int)(result!=0)); SWIG_arg++;
+  return SWIG_arg;
+  
+  if(0) SWIG_fail;
+  
+fail:
+  lua_error(L);
+  return SWIG_arg;
+}
+
+
 static void swig_delete_Event(void *obj) {
 Event *arg1 = (Event *) obj;
 delete arg1;
@@ -4991,6 +5022,7 @@ static swig_lua_method swig_Event_methods[]= {
     { "addHeader", _wrap_Event_addHeader},
     { "delHeader", _wrap_Event_delHeader},
     { "fire", _wrap_Event_fire},
+    { "merge", _wrap_Event_merge},
     {0,0}
 };
 static swig_lua_method swig_Event_meta[] = {
diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.cxx
index 7ecadca826..378be590e6 100644
--- a/src/mod/languages/mod_managed/freeswitch_wrap.cxx
+++ b/src/mod/languages/mod_managed/freeswitch_wrap.cxx
@@ -14551,6 +14551,22 @@ SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_session_reset__
 }
 
 
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_session_try_reset___(void * jarg1, int jarg2, int jarg3) {
+  int jresult ;
+  switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
+  switch_bool_t arg2 ;
+  switch_bool_t arg3 ;
+  switch_status_t result;
+  
+  arg1 = (switch_core_session_t *)jarg1; 
+  arg2 = (switch_bool_t)jarg2; 
+  arg3 = (switch_bool_t)jarg3; 
+  result = (switch_status_t)switch_core_session_try_reset(arg1,arg2,arg3);
+  jresult = (int)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_session_write_frame___(void * jarg1, void * jarg2, unsigned long jarg3, int jarg4) {
   int jresult ;
   switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
@@ -15736,6 +15752,22 @@ SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_file_pre_close__
 }
 
 
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_file_handle_dup___(void * jarg1, void * jarg2, void * jarg3) {
+  int jresult ;
+  switch_file_handle_t *arg1 = (switch_file_handle_t *) 0 ;
+  switch_file_handle_t **arg2 = (switch_file_handle_t **) 0 ;
+  switch_memory_pool_t *arg3 = (switch_memory_pool_t *) 0 ;
+  switch_status_t result;
+  
+  arg1 = (switch_file_handle_t *)jarg1; 
+  arg2 = (switch_file_handle_t **)jarg2; 
+  arg3 = (switch_memory_pool_t *)jarg3; 
+  result = (switch_status_t)switch_core_file_handle_dup(arg1,arg2,arg3);
+  jresult = (int)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_file_close___(void * jarg1) {
   int jresult ;
   switch_file_handle_t *arg1 = (switch_file_handle_t *) 0 ;
@@ -18554,6 +18586,18 @@ SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_gen_certs___(cha
 }
 
 
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_check_dtls_pem___(char * jarg1) {
+  int jresult ;
+  char *arg1 = (char *) 0 ;
+  switch_bool_t result;
+  
+  arg1 = (char *)jarg1; 
+  result = (switch_bool_t)switch_core_check_dtls_pem((char const *)arg1);
+  jresult = (int)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_cert_gen_fingerprint___(char * jarg1, void * jarg2) {
   int jresult ;
   char *arg1 = (char *) 0 ;
@@ -41895,7 +41939,7 @@ SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_ivr_originate___(void
 }
 
 
-SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_ivr_enterprise_originate___(void * jarg1, void * jarg2, void * jarg3, char * jarg4, unsigned long jarg5, void * jarg6, char * jarg7, char * jarg8, void * jarg9, void * jarg10, unsigned long jarg11, void * jarg12) {
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_ivr_enterprise_originate___(void * jarg1, void * jarg2, void * jarg3, char * jarg4, unsigned long jarg5, void * jarg6, char * jarg7, char * jarg8, void * jarg9, void * jarg10, unsigned long jarg11, void * jarg12, void * jarg13) {
   int jresult ;
   switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
   switch_core_session_t **arg2 = (switch_core_session_t **) 0 ;
@@ -41909,6 +41953,7 @@ SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_ivr_enterprise_origin
   switch_event_t *arg10 = (switch_event_t *) 0 ;
   switch_originate_flag_t arg11 ;
   switch_call_cause_t *arg12 = (switch_call_cause_t *) 0 ;
+  switch_dial_handle_list_t *arg13 = (switch_dial_handle_list_t *) 0 ;
   switch_status_t result;
   
   arg1 = (switch_core_session_t *)jarg1; 
@@ -41923,7 +41968,8 @@ SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_ivr_enterprise_origin
   arg10 = (switch_event_t *)jarg10; 
   arg11 = (switch_originate_flag_t)jarg11; 
   arg12 = (switch_call_cause_t *)jarg12; 
-  result = (switch_status_t)switch_ivr_enterprise_originate(arg1,arg2,arg3,(char const *)arg4,arg5,(switch_state_handler_table const *)arg6,(char const *)arg7,(char const *)arg8,arg9,arg10,arg11,arg12);
+  arg13 = (switch_dial_handle_list_t *)jarg13; 
+  result = (switch_status_t)switch_ivr_enterprise_originate(arg1,arg2,arg3,(char const *)arg4,arg5,(switch_state_handler_table const *)arg6,(char const *)arg7,(char const *)arg8,arg9,arg10,arg11,arg12,arg13);
   jresult = (int)result; 
   return jresult;
 }
@@ -43694,6 +43740,139 @@ SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_dial_handle_get_total
 }
 
 
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_dial_handle_list_serialize_json_obj___(void * jarg1, void * jarg2) {
+  int jresult ;
+  switch_dial_handle_list_t *arg1 = (switch_dial_handle_list_t *) 0 ;
+  cJSON **arg2 = (cJSON **) 0 ;
+  switch_status_t result;
+  
+  arg1 = (switch_dial_handle_list_t *)jarg1; 
+  arg2 = (cJSON **)jarg2; 
+  result = (switch_status_t)switch_dial_handle_list_serialize_json_obj(arg1,arg2);
+  jresult = (int)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_dial_handle_list_serialize_json___(void * jarg1, void * jarg2) {
+  int jresult ;
+  switch_dial_handle_list_t *arg1 = (switch_dial_handle_list_t *) 0 ;
+  char **arg2 = (char **) 0 ;
+  switch_status_t result;
+  
+  arg1 = (switch_dial_handle_list_t *)jarg1; 
+  arg2 = (char **)jarg2; 
+  result = (switch_status_t)switch_dial_handle_list_serialize_json(arg1,arg2);
+  jresult = (int)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_dial_handle_list_create_json_obj___(void * jarg1, void * jarg2) {
+  int jresult ;
+  switch_dial_handle_list_t **arg1 = (switch_dial_handle_list_t **) 0 ;
+  cJSON *arg2 = (cJSON *) 0 ;
+  switch_status_t result;
+  
+  arg1 = (switch_dial_handle_list_t **)jarg1; 
+  arg2 = (cJSON *)jarg2; 
+  result = (switch_status_t)switch_dial_handle_list_create_json_obj(arg1,arg2);
+  jresult = (int)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_dial_handle_list_create_json___(void * jarg1, char * jarg2) {
+  int jresult ;
+  switch_dial_handle_list_t **arg1 = (switch_dial_handle_list_t **) 0 ;
+  char *arg2 = (char *) 0 ;
+  switch_status_t result;
+  
+  arg1 = (switch_dial_handle_list_t **)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (switch_status_t)switch_dial_handle_list_create_json(arg1,(char const *)arg2);
+  jresult = (int)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_dial_handle_list_create___(void * jarg1) {
+  int jresult ;
+  switch_dial_handle_list_t **arg1 = (switch_dial_handle_list_t **) 0 ;
+  switch_status_t result;
+  
+  arg1 = (switch_dial_handle_list_t **)jarg1; 
+  result = (switch_status_t)switch_dial_handle_list_create(arg1);
+  jresult = (int)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_dial_handle_list_create_handle___(void * jarg1, void * jarg2) {
+  int jresult ;
+  switch_dial_handle_list_t *arg1 = (switch_dial_handle_list_t *) 0 ;
+  switch_dial_handle_t **arg2 = (switch_dial_handle_t **) 0 ;
+  switch_status_t result;
+  
+  arg1 = (switch_dial_handle_list_t *)jarg1; 
+  arg2 = (switch_dial_handle_t **)jarg2; 
+  result = (switch_status_t)switch_dial_handle_list_create_handle(arg1,arg2);
+  jresult = (int)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_dial_handle_list_destroy___(void * jarg1) {
+  switch_dial_handle_list_t **arg1 = (switch_dial_handle_list_t **) 0 ;
+  
+  arg1 = (switch_dial_handle_list_t **)jarg1; 
+  switch_dial_handle_list_destroy(arg1);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_dial_handle_list_add_global_var___(void * jarg1, char * jarg2, char * jarg3) {
+  switch_dial_handle_list_t *arg1 = (switch_dial_handle_list_t *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  
+  arg1 = (switch_dial_handle_list_t *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  switch_dial_handle_list_add_global_var(arg1,(char const *)arg2,(char const *)arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_dial_handle_list_add_global_var_printf___(void * jarg1, char * jarg2, char * jarg3) {
+  switch_dial_handle_list_t *arg1 = (switch_dial_handle_list_t *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  void *arg4 = 0 ;
+  
+  arg1 = (switch_dial_handle_list_t *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  switch_dial_handle_list_add_global_var_printf(arg1,(char const *)arg2,(char const *)arg3,arg4);
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_ivr_enterprise_orig_and_bridge___(void * jarg1, char * jarg2, void * jarg3, void * jarg4) {
+  int jresult ;
+  switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
+  char *arg2 = (char *) 0 ;
+  switch_dial_handle_list_t *arg3 = (switch_dial_handle_list_t *) 0 ;
+  switch_call_cause_t *arg4 = (switch_call_cause_t *) 0 ;
+  switch_status_t result;
+  
+  arg1 = (switch_core_session_t *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (switch_dial_handle_list_t *)jarg3; 
+  arg4 = (switch_call_cause_t *)jarg4; 
+  result = (switch_status_t)switch_ivr_enterprise_orig_and_bridge(arg1,(char const *)arg2,arg3,arg4);
+  jresult = (int)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_ivr_orig_and_bridge___(void * jarg1, char * jarg2, void * jarg3, void * jarg4) {
   int jresult ;
   switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
@@ -49740,6 +49919,38 @@ SWIGEXPORT unsigned long SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_scheduler_a
 }
 
 
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_scheduler_add_task_ex___(void * jarg1, void * jarg2, char * jarg3, char * jarg4, unsigned long jarg5, void * jarg6, unsigned long jarg7, void * jarg8) {
+  unsigned long jresult ;
+  time_t arg1 ;
+  switch_scheduler_func_t arg2 = (switch_scheduler_func_t) 0 ;
+  char *arg3 = (char *) 0 ;
+  char *arg4 = (char *) 0 ;
+  uint32_t arg5 ;
+  void *arg6 = (void *) 0 ;
+  switch_scheduler_flag_t arg7 ;
+  uint32_t *arg8 = (uint32_t *) 0 ;
+  time_t *argp1 ;
+  uint32_t result;
+  
+  argp1 = (time_t *)jarg1; 
+  if (!argp1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null time_t", 0);
+    return 0;
+  }
+  arg1 = *argp1; 
+  arg2 = (switch_scheduler_func_t)jarg2; 
+  arg3 = (char *)jarg3; 
+  arg4 = (char *)jarg4; 
+  arg5 = (uint32_t)jarg5; 
+  arg6 = (void *)jarg6; 
+  arg7 = (switch_scheduler_flag_t)jarg7; 
+  arg8 = (uint32_t *)jarg8; 
+  result = (uint32_t)switch_scheduler_add_task_ex(arg1,arg2,(char const *)arg3,(char const *)arg4,arg5,arg6,arg7,arg8);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT unsigned long SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_scheduler_del_task_id___(unsigned long jarg1) {
   unsigned long jresult ;
   uint32_t arg1 ;
@@ -50809,6 +51020,20 @@ SWIGEXPORT unsigned int SWIGSTDCALL CSharp_FreeSWITCHfNative_Event_Fire___(void
 }
 
 
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_FreeSWITCHfNative_Event_merge___(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  Event *arg1 = (Event *) 0 ;
+  Event *arg2 = (Event *) 0 ;
+  bool result;
+  
+  arg1 = (Event *)jarg1; 
+  arg2 = (Event *)jarg2; 
+  result = (bool)(arg1)->merge(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
 SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_EventConsumer_events_set___(void * jarg1, void * jarg2) {
   EventConsumer *arg1 = (EventConsumer *) 0 ;
   switch_queue_t *arg2 = (switch_queue_t *) 0 ;
diff --git a/src/mod/languages/mod_managed/managed/swig.cs b/src/mod/languages/mod_managed/managed/swig.cs
index 3002981514..25d419680c 100644
--- a/src/mod/languages/mod_managed/managed/swig.cs
+++ b/src/mod/languages/mod_managed/managed/swig.cs
@@ -650,6 +650,11 @@ public partial class Event : global::System.IDisposable {
     return ret;
   }
 
+  public bool merge(Event to_merge) {
+    bool ret = freeswitchPINVOKE.Event_merge(swigCPtr, Event.getCPtr(to_merge));
+    return ret;
+  }
+
 }
 
 }
@@ -4795,6 +4800,35 @@ public class SWIGTYPE_p_p_switch_device_record_s {
 
 namespace FreeSWITCH.Native {
 
+public class SWIGTYPE_p_p_switch_dial_handle_list_s {
+  private global::System.Runtime.InteropServices.HandleRef swigCPtr;
+
+  internal SWIGTYPE_p_p_switch_dial_handle_list_s(global::System.IntPtr cPtr, bool futureUse) {
+    swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+  }
+
+  protected SWIGTYPE_p_p_switch_dial_handle_list_s() {
+    swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
+  }
+
+  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_p_switch_dial_handle_list_s obj) {
+    return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
+  }
+}
+
+}
+//------------------------------------------------------------------------------
+// <auto-generated />
+//
+// This file was automatically generated by SWIG (http://www.swig.org).
+// Version 3.0.12
+//
+// Do not make changes to this file unless you know what you are doing--modify
+// the SWIG interface file instead.
+//------------------------------------------------------------------------------
+
+namespace FreeSWITCH.Native {
+
 public class SWIGTYPE_p_p_switch_dial_handle_s {
   private global::System.Runtime.InteropServices.HandleRef swigCPtr;
 
@@ -6071,6 +6105,35 @@ public class SWIGTYPE_p_switch_core_session {
 
 namespace FreeSWITCH.Native {
 
+public class SWIGTYPE_p_switch_dial_handle_list_s {
+  private global::System.Runtime.InteropServices.HandleRef swigCPtr;
+
+  internal SWIGTYPE_p_switch_dial_handle_list_s(global::System.IntPtr cPtr, bool futureUse) {
+    swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+  }
+
+  protected SWIGTYPE_p_switch_dial_handle_list_s() {
+    swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
+  }
+
+  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_switch_dial_handle_list_s obj) {
+    return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
+  }
+}
+
+}
+//------------------------------------------------------------------------------
+// <auto-generated />
+//
+// This file was automatically generated by SWIG (http://www.swig.org).
+// Version 3.0.12
+//
+// Do not make changes to this file unless you know what you are doing--modify
+// the SWIG interface file instead.
+//------------------------------------------------------------------------------
+
+namespace FreeSWITCH.Native {
+
 public class SWIGTYPE_p_switch_dial_handle_s {
   private global::System.Runtime.InteropServices.HandleRef swigCPtr;
 
@@ -8907,6 +8970,11 @@ else
     freeswitchPINVOKE.switch_core_session_reset(SWIGTYPE_p_switch_core_session.getCPtr(session), (int)flush_dtmf, (int)reset_read_codec);
   }
 
+  public static switch_status_t switch_core_session_try_reset(SWIGTYPE_p_switch_core_session session, switch_bool_t flush_dtmf, switch_bool_t reset_read_codec) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_session_try_reset(SWIGTYPE_p_switch_core_session.getCPtr(session), (int)flush_dtmf, (int)reset_read_codec);
+    return ret;
+  }
+
   public static switch_status_t switch_core_session_write_frame(SWIGTYPE_p_switch_core_session session, switch_frame frame, uint flags, int stream_id) {
     switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_session_write_frame(SWIGTYPE_p_switch_core_session.getCPtr(session), switch_frame.getCPtr(frame), flags, stream_id);
     return ret;
@@ -9328,6 +9396,11 @@ else
     return ret;
   }
 
+  public static switch_status_t switch_core_file_handle_dup(switch_file_handle oldfh, SWIGTYPE_p_p_switch_file_handle newfh, SWIGTYPE_p_apr_pool_t pool) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_file_handle_dup(switch_file_handle.getCPtr(oldfh), SWIGTYPE_p_p_switch_file_handle.getCPtr(newfh), SWIGTYPE_p_apr_pool_t.getCPtr(pool));
+    return ret;
+  }
+
   public static switch_status_t switch_core_file_close(switch_file_handle fh) {
     switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_file_close(switch_file_handle.getCPtr(fh));
     return ret;
@@ -10207,6 +10280,11 @@ else
     return ret;
   }
 
+  public static switch_bool_t switch_core_check_dtls_pem(string file) {
+    switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_core_check_dtls_pem(file);
+    return ret;
+  }
+
   public static int switch_core_cert_gen_fingerprint(string prefix, dtls_fingerprint_t fp) {
     int ret = freeswitchPINVOKE.switch_core_cert_gen_fingerprint(prefix, dtls_fingerprint_t.getCPtr(fp));
     return ret;
@@ -13076,8 +13154,8 @@ else
     return ret;
   }
 
-  public static switch_status_t switch_ivr_enterprise_originate(SWIGTYPE_p_switch_core_session session, SWIGTYPE_p_p_switch_core_session bleg, SWIGTYPE_p_switch_call_cause_t cause, string bridgeto, uint timelimit_sec, switch_state_handler_table table, string cid_name_override, string cid_num_override, switch_caller_profile caller_profile_override, switch_event ovars, uint flags, SWIGTYPE_p_switch_call_cause_t cancel_cause) {
-    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_enterprise_originate(SWIGTYPE_p_switch_core_session.getCPtr(session), SWIGTYPE_p_p_switch_core_session.getCPtr(bleg), SWIGTYPE_p_switch_call_cause_t.getCPtr(cause), bridgeto, timelimit_sec, switch_state_handler_table.getCPtr(table), cid_name_override, cid_num_override, switch_caller_profile.getCPtr(caller_profile_override), switch_event.getCPtr(ovars), flags, SWIGTYPE_p_switch_call_cause_t.getCPtr(cancel_cause));
+  public static switch_status_t switch_ivr_enterprise_originate(SWIGTYPE_p_switch_core_session session, SWIGTYPE_p_p_switch_core_session bleg, SWIGTYPE_p_switch_call_cause_t cause, string bridgeto, uint timelimit_sec, switch_state_handler_table table, string cid_name_override, string cid_num_override, switch_caller_profile caller_profile_override, switch_event ovars, uint flags, SWIGTYPE_p_switch_call_cause_t cancel_cause, SWIGTYPE_p_switch_dial_handle_list_s hl) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_enterprise_originate(SWIGTYPE_p_switch_core_session.getCPtr(session), SWIGTYPE_p_p_switch_core_session.getCPtr(bleg), SWIGTYPE_p_switch_call_cause_t.getCPtr(cause), bridgeto, timelimit_sec, switch_state_handler_table.getCPtr(table), cid_name_override, cid_num_override, switch_caller_profile.getCPtr(caller_profile_override), switch_event.getCPtr(ovars), flags, SWIGTYPE_p_switch_call_cause_t.getCPtr(cancel_cause), SWIGTYPE_p_switch_dial_handle_list_s.getCPtr(hl));
     return ret;
   }
 
@@ -13649,6 +13727,53 @@ else
     return ret;
   }
 
+  public static switch_status_t switch_dial_handle_list_serialize_json_obj(SWIGTYPE_p_switch_dial_handle_list_s hl, SWIGTYPE_p_p_cJSON json) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_dial_handle_list_serialize_json_obj(SWIGTYPE_p_switch_dial_handle_list_s.getCPtr(hl), SWIGTYPE_p_p_cJSON.getCPtr(json));
+    return ret;
+  }
+
+  public static switch_status_t switch_dial_handle_list_serialize_json(SWIGTYPE_p_switch_dial_handle_list_s hl, ref string str) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_dial_handle_list_serialize_json(SWIGTYPE_p_switch_dial_handle_list_s.getCPtr(hl), ref str);
+    return ret;
+  }
+
+  public static switch_status_t switch_dial_handle_list_create_json_obj(SWIGTYPE_p_p_switch_dial_handle_list_s handle, SWIGTYPE_p_cJSON json) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_dial_handle_list_create_json_obj(SWIGTYPE_p_p_switch_dial_handle_list_s.getCPtr(handle), SWIGTYPE_p_cJSON.getCPtr(json));
+    return ret;
+  }
+
+  public static switch_status_t switch_dial_handle_list_create_json(SWIGTYPE_p_p_switch_dial_handle_list_s handle, string handle_string) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_dial_handle_list_create_json(SWIGTYPE_p_p_switch_dial_handle_list_s.getCPtr(handle), handle_string);
+    return ret;
+  }
+
+  public static switch_status_t switch_dial_handle_list_create(SWIGTYPE_p_p_switch_dial_handle_list_s hl) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_dial_handle_list_create(SWIGTYPE_p_p_switch_dial_handle_list_s.getCPtr(hl));
+    return ret;
+  }
+
+  public static switch_status_t switch_dial_handle_list_create_handle(SWIGTYPE_p_switch_dial_handle_list_s hl, SWIGTYPE_p_p_switch_dial_handle_s handle) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_dial_handle_list_create_handle(SWIGTYPE_p_switch_dial_handle_list_s.getCPtr(hl), SWIGTYPE_p_p_switch_dial_handle_s.getCPtr(handle));
+    return ret;
+  }
+
+  public static void switch_dial_handle_list_destroy(SWIGTYPE_p_p_switch_dial_handle_list_s hl) {
+    freeswitchPINVOKE.switch_dial_handle_list_destroy(SWIGTYPE_p_p_switch_dial_handle_list_s.getCPtr(hl));
+  }
+
+  public static void switch_dial_handle_list_add_global_var(SWIGTYPE_p_switch_dial_handle_list_s hl, string var, string val) {
+    freeswitchPINVOKE.switch_dial_handle_list_add_global_var(SWIGTYPE_p_switch_dial_handle_list_s.getCPtr(hl), var, val);
+  }
+
+  public static void switch_dial_handle_list_add_global_var_printf(SWIGTYPE_p_switch_dial_handle_list_s hl, string var, string fmt) {
+    freeswitchPINVOKE.switch_dial_handle_list_add_global_var_printf(SWIGTYPE_p_switch_dial_handle_list_s.getCPtr(hl), var, fmt);
+  }
+
+  public static switch_status_t switch_ivr_enterprise_orig_and_bridge(SWIGTYPE_p_switch_core_session session, string data, SWIGTYPE_p_switch_dial_handle_list_s hl, SWIGTYPE_p_switch_call_cause_t cause) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_enterprise_orig_and_bridge(SWIGTYPE_p_switch_core_session.getCPtr(session), data, SWIGTYPE_p_switch_dial_handle_list_s.getCPtr(hl), SWIGTYPE_p_switch_call_cause_t.getCPtr(cause));
+    return ret;
+  }
+
   public static switch_status_t switch_ivr_orig_and_bridge(SWIGTYPE_p_switch_core_session session, string data, SWIGTYPE_p_switch_dial_handle_s dh, SWIGTYPE_p_switch_call_cause_t cause) {
     switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_orig_and_bridge(SWIGTYPE_p_switch_core_session.getCPtr(session), data, SWIGTYPE_p_switch_dial_handle_s.getCPtr(dh), SWIGTYPE_p_switch_call_cause_t.getCPtr(cause));
     return ret;
@@ -14626,6 +14751,12 @@ else
     return ret;
   }
 
+  public static uint switch_scheduler_add_task_ex(SWIGTYPE_p_time_t task_runtime, SWIGTYPE_p_f_p_switch_scheduler_task__void func, string desc, string group, uint cmd_id, SWIGTYPE_p_void cmd_arg, uint flags, SWIGTYPE_p_unsigned_long task_id) {
+    uint ret = freeswitchPINVOKE.switch_scheduler_add_task_ex(SWIGTYPE_p_time_t.getCPtr(task_runtime), SWIGTYPE_p_f_p_switch_scheduler_task__void.getCPtr(func), desc, group, cmd_id, SWIGTYPE_p_void.getCPtr(cmd_arg), flags, SWIGTYPE_p_unsigned_long.getCPtr(task_id));
+    if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
   public static uint switch_scheduler_del_task_id(uint task_id) {
     uint ret = freeswitchPINVOKE.switch_scheduler_del_task_id(task_id);
     return ret;
@@ -18830,6 +18961,9 @@ class freeswitchPINVOKE {
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_session_reset___")]
   public static extern void switch_core_session_reset(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2, int jarg3);
 
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_session_try_reset___")]
+  public static extern int switch_core_session_try_reset(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2, int jarg3);
+
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_session_write_frame___")]
   public static extern int switch_core_session_write_frame(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2, uint jarg3, int jarg4);
 
@@ -19073,6 +19207,9 @@ class freeswitchPINVOKE {
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_file_pre_close___")]
   public static extern int switch_core_file_pre_close(global::System.Runtime.InteropServices.HandleRef jarg1);
 
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_file_handle_dup___")]
+  public static extern int switch_core_file_handle_dup(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2, global::System.Runtime.InteropServices.HandleRef jarg3);
+
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_file_close___")]
   public static extern int switch_core_file_close(global::System.Runtime.InteropServices.HandleRef jarg1);
 
@@ -19742,6 +19879,9 @@ class freeswitchPINVOKE {
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_gen_certs___")]
   public static extern int switch_core_gen_certs(string jarg1);
 
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_check_dtls_pem___")]
+  public static extern int switch_core_check_dtls_pem(string jarg1);
+
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_cert_gen_fingerprint___")]
   public static extern int switch_core_cert_gen_fingerprint(string jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
 
@@ -25359,7 +25499,7 @@ class freeswitchPINVOKE {
   public static extern int switch_ivr_originate(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2, global::System.Runtime.InteropServices.HandleRef jarg3, string jarg4, uint jarg5, global::System.Runtime.InteropServices.HandleRef jarg6, string jarg7, string jarg8, global::System.Runtime.InteropServices.HandleRef jarg9, global::System.Runtime.InteropServices.HandleRef jarg10, uint jarg11, global::System.Runtime.InteropServices.HandleRef jarg12, global::System.Runtime.InteropServices.HandleRef jarg13);
 
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_ivr_enterprise_originate___")]
-  public static extern int switch_ivr_enterprise_originate(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2, global::System.Runtime.InteropServices.HandleRef jarg3, string jarg4, uint jarg5, global::System.Runtime.InteropServices.HandleRef jarg6, string jarg7, string jarg8, global::System.Runtime.InteropServices.HandleRef jarg9, global::System.Runtime.InteropServices.HandleRef jarg10, uint jarg11, global::System.Runtime.InteropServices.HandleRef jarg12);
+  public static extern int switch_ivr_enterprise_originate(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2, global::System.Runtime.InteropServices.HandleRef jarg3, string jarg4, uint jarg5, global::System.Runtime.InteropServices.HandleRef jarg6, string jarg7, string jarg8, global::System.Runtime.InteropServices.HandleRef jarg9, global::System.Runtime.InteropServices.HandleRef jarg10, uint jarg11, global::System.Runtime.InteropServices.HandleRef jarg12, global::System.Runtime.InteropServices.HandleRef jarg13);
 
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_ivr_bridge_display___")]
   public static extern void switch_ivr_bridge_display(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
@@ -25706,6 +25846,36 @@ class freeswitchPINVOKE {
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_dial_handle_get_total___")]
   public static extern int switch_dial_handle_get_total(global::System.Runtime.InteropServices.HandleRef jarg1);
 
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_dial_handle_list_serialize_json_obj___")]
+  public static extern int switch_dial_handle_list_serialize_json_obj(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_dial_handle_list_serialize_json___")]
+  public static extern int switch_dial_handle_list_serialize_json(global::System.Runtime.InteropServices.HandleRef jarg1, ref string jarg2);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_dial_handle_list_create_json_obj___")]
+  public static extern int switch_dial_handle_list_create_json_obj(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_dial_handle_list_create_json___")]
+  public static extern int switch_dial_handle_list_create_json(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_dial_handle_list_create___")]
+  public static extern int switch_dial_handle_list_create(global::System.Runtime.InteropServices.HandleRef jarg1);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_dial_handle_list_create_handle___")]
+  public static extern int switch_dial_handle_list_create_handle(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_dial_handle_list_destroy___")]
+  public static extern void switch_dial_handle_list_destroy(global::System.Runtime.InteropServices.HandleRef jarg1);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_dial_handle_list_add_global_var___")]
+  public static extern void switch_dial_handle_list_add_global_var(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2, string jarg3);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_dial_handle_list_add_global_var_printf___")]
+  public static extern void switch_dial_handle_list_add_global_var_printf(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2, string jarg3);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_ivr_enterprise_orig_and_bridge___")]
+  public static extern int switch_ivr_enterprise_orig_and_bridge(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2, global::System.Runtime.InteropServices.HandleRef jarg3, global::System.Runtime.InteropServices.HandleRef jarg4);
+
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_ivr_orig_and_bridge___")]
   public static extern int switch_ivr_orig_and_bridge(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2, global::System.Runtime.InteropServices.HandleRef jarg3, global::System.Runtime.InteropServices.HandleRef jarg4);
 
@@ -27158,6 +27328,9 @@ class freeswitchPINVOKE {
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_scheduler_add_task___")]
   public static extern uint switch_scheduler_add_task(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2, string jarg3, string jarg4, uint jarg5, global::System.Runtime.InteropServices.HandleRef jarg6, uint jarg7);
 
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_scheduler_add_task_ex___")]
+  public static extern uint switch_scheduler_add_task_ex(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2, string jarg3, string jarg4, uint jarg5, global::System.Runtime.InteropServices.HandleRef jarg6, uint jarg7, global::System.Runtime.InteropServices.HandleRef jarg8);
+
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_scheduler_del_task_id___")]
   public static extern uint switch_scheduler_del_task_id(uint jarg1);
 
@@ -27416,6 +27589,9 @@ class freeswitchPINVOKE {
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_Event_Fire___")]
   public static extern bool Event_Fire(global::System.Runtime.InteropServices.HandleRef jarg1);
 
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_Event_merge___")]
+  public static extern bool Event_merge(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
+
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_EventConsumer_events_set___")]
   public static extern void EventConsumer_events_set(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
 
@@ -31483,6 +31659,7 @@ public enum switch_channel_flag_t {
   CF_SERVICE,
   CF_TAGGED,
   CF_WINNER,
+  CF_REUSE_CALLER_PROFILE,
   CF_CONTROLLED,
   CF_PROXY_MODE,
   CF_PROXY_OFF,
@@ -36106,7 +36283,8 @@ namespace FreeSWITCH.Native {
   ED_BRIDGE_READ = (1 << 4),
   ED_BRIDGE_WRITE = (1 << 5),
   ED_TAP_READ = (1 << 6),
-  ED_TAP_WRITE = (1 << 7)
+  ED_TAP_WRITE = (1 << 7),
+  ED_STEREO = (1 << 8)
 }
 
 }
diff --git a/src/mod/languages/mod_perl/freeswitch.pm b/src/mod/languages/mod_perl/freeswitch.pm
index 3d511c9225..9717fbb944 100644
--- a/src/mod/languages/mod_perl/freeswitch.pm
+++ b/src/mod/languages/mod_perl/freeswitch.pm
@@ -311,6 +311,7 @@ sub DESTROY {
 *addHeader = *freeswitchc::Event_addHeader;
 *delHeader = *freeswitchc::Event_delHeader;
 *fire = *freeswitchc::Event_fire;
+*merge = *freeswitchc::Event_merge;
 sub DISOWN {
     my $self = shift;
     my $ptr = tied(%$self);
diff --git a/src/mod/languages/mod_perl/mod_perl_wrap.cpp b/src/mod/languages/mod_perl/mod_perl_wrap.cpp
index a6b48e7670..27e98ee3e6 100644
--- a/src/mod/languages/mod_perl/mod_perl_wrap.cpp
+++ b/src/mod/languages/mod_perl/mod_perl_wrap.cpp
@@ -4482,6 +4482,44 @@ XS(_wrap_Event_fire) {
 }
 
 
+XS(_wrap_Event_merge) {
+  {
+    Event *arg1 = (Event *) 0 ;
+    Event *arg2 = (Event *) 0 ;
+    void *argp1 = 0 ;
+    int res1 = 0 ;
+    void *argp2 = 0 ;
+    int res2 = 0 ;
+    int argvi = 0;
+    bool result;
+    dXSARGS;
+    
+    if ((items < 2) || (items > 2)) {
+      SWIG_croak("Usage: Event_merge(self,to_merge);");
+    }
+    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Event, 0 |  0 );
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Event_merge" "', argument " "1"" of type '" "Event *""'"); 
+    }
+    arg1 = reinterpret_cast< Event * >(argp1);
+    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_Event, 0 |  0 );
+    if (!SWIG_IsOK(res2)) {
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Event_merge" "', argument " "2"" of type '" "Event *""'"); 
+    }
+    arg2 = reinterpret_cast< Event * >(argp2);
+    result = (bool)(arg1)->merge(arg2);
+    ST(argvi) = SWIG_From_bool  SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ;
+    
+    
+    XSRETURN(argvi);
+  fail:
+    
+    
+    SWIG_croak_null();
+  }
+}
+
+
 XS(_wrap_EventConsumer_events_set) {
   {
     EventConsumer *arg1 = (EventConsumer *) 0 ;
@@ -10792,6 +10830,7 @@ static swig_command_info swig_commands[] = {
 {"freeswitchc::Event_addHeader", _wrap_Event_addHeader},
 {"freeswitchc::Event_delHeader", _wrap_Event_delHeader},
 {"freeswitchc::Event_fire", _wrap_Event_fire},
+{"freeswitchc::Event_merge", _wrap_Event_merge},
 {"freeswitchc::EventConsumer_events_set", _wrap_EventConsumer_events_set},
 {"freeswitchc::EventConsumer_events_get", _wrap_EventConsumer_events_get},
 {"freeswitchc::EventConsumer_e_event_id_set", _wrap_EventConsumer_e_event_id_set},
diff --git a/src/mod/languages/mod_python/freeswitch.py b/src/mod/languages/mod_python/freeswitch.py
index ac9f655ad9..48ccf472f1 100644
--- a/src/mod/languages/mod_python/freeswitch.py
+++ b/src/mod/languages/mod_python/freeswitch.py
@@ -327,6 +327,9 @@ class Event(_object):
 
     def fire(self):
         return _freeswitch.Event_fire(self)
+
+    def merge(self, to_merge):
+        return _freeswitch.Event_merge(self, to_merge)
 Event_swigregister = _freeswitch.Event_swigregister
 Event_swigregister(Event)
 
diff --git a/src/mod/languages/mod_python/mod_python_wrap.cpp b/src/mod/languages/mod_python/mod_python_wrap.cpp
index 31ec090c6a..227b441b59 100644
--- a/src/mod/languages/mod_python/mod_python_wrap.cpp
+++ b/src/mod/languages/mod_python/mod_python_wrap.cpp
@@ -5765,6 +5765,37 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_Event_merge(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  Event *arg1 = (Event *) 0 ;
+  Event *arg2 = (Event *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  bool result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:Event_merge",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Event, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Event_merge" "', argument " "1"" of type '" "Event *""'"); 
+  }
+  arg1 = reinterpret_cast< Event * >(argp1);
+  res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_Event, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Event_merge" "', argument " "2"" of type '" "Event *""'"); 
+  }
+  arg2 = reinterpret_cast< Event * >(argp2);
+  result = (bool)(arg1)->merge(arg2);
+  resultobj = SWIG_From_bool(static_cast< bool >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *Event_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
@@ -10541,6 +10572,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "Event_addHeader", _wrap_Event_addHeader, METH_VARARGS, NULL},
 	 { "Event_delHeader", _wrap_Event_delHeader, METH_VARARGS, NULL},
 	 { "Event_fire", _wrap_Event_fire, METH_VARARGS, NULL},
+	 { "Event_merge", _wrap_Event_merge, METH_VARARGS, NULL},
 	 { "Event_swigregister", Event_swigregister, METH_VARARGS, NULL},
 	 { "EventConsumer_events_set", _wrap_EventConsumer_events_set, METH_VARARGS, NULL},
 	 { "EventConsumer_events_get", _wrap_EventConsumer_events_get, METH_VARARGS, NULL},