]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7648 foundation for QA testing config
authorBrian West <brian@freeswitch.org>
Fri, 12 Jun 2015 14:18:53 +0000 (09:18 -0500)
committerBrian West <brian@freeswitch.org>
Fri, 12 Jun 2015 14:18:53 +0000 (09:18 -0500)
69 files changed:
conf/testing/autoload_configs/acl.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/cdr_csv.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/conference.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/conference_layouts.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/console.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/directory.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/event_socket.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/fifo.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/hash.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/local_stream.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/logfile.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/lua.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/modules.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/opus.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/post_load_modules.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/presence_map.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/shout.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/sofia.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/spandsp.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/switch.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/timezones.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/verto.conf.xml [new file with mode: 0644]
conf/testing/autoload_configs/voicemail.conf.xml [new file with mode: 0644]
conf/testing/chatplan/default.xml [new file with mode: 0644]
conf/testing/dialplan/default.xml [new file with mode: 0644]
conf/testing/dialplan/default/0000_local_extensions.xml [new file with mode: 0644]
conf/testing/dialplan/default/0001_vmain.xml [new file with mode: 0644]
conf/testing/dialplan/public.xml [new file with mode: 0644]
conf/testing/dialplan/public/0000_local_extensions.xml [new file with mode: 0644]
conf/testing/directory/default.xml [new file with mode: 0644]
conf/testing/directory/default/1000.xml [new file with mode: 0644]
conf/testing/directory/default/1001.xml [new file with mode: 0644]
conf/testing/directory/default/1002.xml [new file with mode: 0644]
conf/testing/directory/default/1003.xml [new file with mode: 0644]
conf/testing/directory/default/1004.xml [new file with mode: 0644]
conf/testing/directory/default/1005.xml [new file with mode: 0644]
conf/testing/directory/default/1006.xml [new file with mode: 0644]
conf/testing/directory/default/1007.xml [new file with mode: 0644]
conf/testing/directory/default/1008.xml [new file with mode: 0644]
conf/testing/directory/default/1009.xml [new file with mode: 0644]
conf/testing/directory/default/1010.xml [new file with mode: 0644]
conf/testing/directory/default/1011.xml [new file with mode: 0644]
conf/testing/directory/default/1012.xml [new file with mode: 0644]
conf/testing/directory/default/1013.xml [new file with mode: 0644]
conf/testing/directory/default/1014.xml [new file with mode: 0644]
conf/testing/directory/default/1015.xml [new file with mode: 0644]
conf/testing/directory/default/1016.xml [new file with mode: 0644]
conf/testing/directory/default/1017.xml [new file with mode: 0644]
conf/testing/directory/default/1018.xml [new file with mode: 0644]
conf/testing/directory/default/1019.xml [new file with mode: 0644]
conf/testing/directory/default/default.xml [new file with mode: 0644]
conf/testing/freeswitch.xml [new file with mode: 0644]
conf/testing/lang/en/demo/demo-ivr.xml [new file with mode: 0644]
conf/testing/lang/en/demo/demo.xml [new file with mode: 0644]
conf/testing/lang/en/demo/funnies.xml [new file with mode: 0644]
conf/testing/lang/en/demo/new-demo-ivr.xml [new file with mode: 0644]
conf/testing/lang/en/dir/sounds.xml [new file with mode: 0644]
conf/testing/lang/en/dir/tts.xml [new file with mode: 0644]
conf/testing/lang/en/en.xml [new file with mode: 0644]
conf/testing/lang/en/ivr/sounds.xml [new file with mode: 0644]
conf/testing/lang/en/vm/sounds.xml [new file with mode: 0644]
conf/testing/lang/en/vm/tts.xml [new file with mode: 0644]
conf/testing/lang/en/vm/voicemail_ivr.xml [new file with mode: 0644]
conf/testing/sip_profiles/external-ipv6.xml [new file with mode: 0644]
conf/testing/sip_profiles/external.xml [new file with mode: 0644]
conf/testing/sip_profiles/external/example.xml [new file with mode: 0644]
conf/testing/sip_profiles/internal-ipv6.xml [new file with mode: 0644]
conf/testing/sip_profiles/internal.xml [new file with mode: 0644]
conf/testing/vars.xml [new file with mode: 0644]

diff --git a/conf/testing/autoload_configs/acl.conf.xml b/conf/testing/autoload_configs/acl.conf.xml
new file mode 100644 (file)
index 0000000..6355ebc
--- /dev/null
@@ -0,0 +1,10 @@
+<configuration name="acl.conf" description="Network Lists">
+  <network-lists>
+
+    <list name="domains" default="deny">
+      <node type="allow" domain="$${domain}"/>
+    </list>
+    
+  </network-lists>
+</configuration>
+
diff --git a/conf/testing/autoload_configs/cdr_csv.conf.xml b/conf/testing/autoload_configs/cdr_csv.conf.xml
new file mode 100644 (file)
index 0000000..8d796c6
--- /dev/null
@@ -0,0 +1,23 @@
+<configuration name="cdr_csv.conf" description="CDR CSV Format">
+  <settings>
+    <!-- 'cdr-csv' will always be appended to log-base -->
+    <!--<param name="log-base" value="/var/log"/>-->
+    <param name="default-template" value="example"/>
+    <!-- This is like the info app but after the call is hung up -->
+    <!--<param name="debug" value="true"/>-->
+    <param name="rotate-on-hup" value="true"/>
+    <!-- may be a b or ab -->
+    <param name="legs" value="a"/>
+       <!-- Only log in Master.csv -->
+       <!-- <param name="master-file-only" value="true"/> -->
+  </settings>
+  <templates>
+    <template name="sql">INSERT INTO cdr VALUES ("${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}", "${accountcode}");</template>
+    <template name="example">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}","${read_codec}","${write_codec}"</template>
+    <template name="snom">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}", "${accountcode}","${read_codec}","${write_codec}","${sip_user_agent}","${call_clientcode}","${sip_rtp_rxstat}","${sip_rtp_txstat}","${sofia_record_file}"</template>
+    <template name="linksys">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}","${read_codec}","${write_codec}","${sip_user_agent}","${sip_p_rtp_stat}"</template>
+    <template name="asterisk">"${accountcode}","${caller_id_number}","${destination_number}","${context}","${caller_id}","${channel_name}","${bridge_channel}","${last_app}","${last_arg}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${amaflags}","${uuid}","${userfield}"</template>
+    <template name="opencdrrate">"${uuid}","${signal_bond}","${direction}","${ani}","${destination_number}","${answer_stamp}","${end_stamp}","${billsec}","${accountcode}","${userfield}","${network_addr}","${regex('${original_caller_id_name}'|^.)}","${sip_gateway_name}"</template>
+  </templates>
+</configuration>
+
diff --git a/conf/testing/autoload_configs/conference.conf.xml b/conf/testing/autoload_configs/conference.conf.xml
new file mode 100644 (file)
index 0000000..9dfb75b
--- /dev/null
@@ -0,0 +1,276 @@
+<!-- http://wiki.freeswitch.org/wiki/Mod_conference --> 
+<!-- None of these paths are real if you want any of these options you need to really set them up -->
+<configuration name="conference.conf" description="Audio Conference">
+  <!-- Advertise certain presence on startup . -->
+  <advertise>
+    <room name="3001@$${domain}" status="FreeSWITCH"/>
+  </advertise>
+
+  <!-- These are the default keys that map when you do not specify a caller control group -->  
+  <!-- Note: none and default are reserved names for group names.  Disabled if dist-dtmf member flag is set. -->       
+  <caller-controls>
+    <group name="default">
+      <control action="mute" digits="0"/>
+      <control action="deaf mute" digits="*"/>
+      <control action="energy up" digits="9"/>
+      <control action="energy equ" digits="8"/>
+      <control action="energy dn" digits="7"/>
+      <control action="vol talk up" digits="3"/>
+      <control action="vol talk zero" digits="2"/>
+      <control action="vol talk dn" digits="1"/>
+      <control action="vol listen up" digits="6"/>
+      <control action="vol listen zero" digits="5"/>
+      <control action="vol listen dn" digits="4"/>
+      <control action="hangup" digits="#"/>
+    </group>
+  </caller-controls>
+
+  <!-- Profiles are collections of settings you can reference by name. -->
+  <profiles>
+    <!--If no profile is specified it will default to "default"-->
+    <profile name="default">
+      <!-- Directory to drop CDR's 
+          'auto' means $PREFIX/logs/conference_cdr/<confernece_uuid>.cdr.xml
+          a non-absolute path means $PREFIX/logs/<value>/<confernece_uuid>.cdr.xml
+          absolute path means <value>/<confernece_uuid>.cdr.xml
+      -->
+      <!-- <param name="cdr-log-dir" value="auto"/> -->
+      
+      <!-- Domain (for presence) -->
+      <param name="domain" value="$${domain}"/>
+      <!-- Sample Rate-->
+      <param name="rate" value="8000"/>
+      <!-- Number of milliseconds per frame -->
+      <param name="interval" value="20"/>
+      <!-- Energy level required for audio to be sent to the other users -->
+      <param name="energy-level" value="300"/>
+
+      <!--Can be | delim of waste|mute|deaf|dist-dtmf waste will always transmit data to each channel
+          even during silence.  dist-dtmf propagates dtmfs to all other members, but channel controls
+         via dtmf will be disabled. -->
+      <!-- <param name="member-flags" value="waste"/> -->
+
+      <!-- Name of the caller control group to use for this profile -->
+      <!-- <param name="caller-controls" value="some name"/> -->
+      <!-- Name of the caller control group to use for the moderator in this profile -->
+      <!-- <param name="moderator-controls" value="some name"/> -->
+      <!-- TTS Engine to use -->
+      <!-- <param name="tts-engine" value="cepstral"/> -->
+      <!-- TTS Voice to use -->
+      <!-- <param name="tts-voice" value="david"/> -->
+
+      <!-- If TTS is enabled all audio-file params beginning with -->
+      <!-- 'say:' will be considered text to say with TTS -->
+      <!-- Override the default path here, after which you use relative paths in the other sound params -->
+      <!-- Note: The default path is the conference's first caller's sound_prefix -->
+      <!-- <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> -->
+      <!-- File to play to acknowledge succees -->
+      <!-- <param name="ack-sound" value="beep.wav"/> -->
+      <!-- File to play to acknowledge failure -->
+      <!-- <param name="nack-sound" value="beeperr.wav"/> -->
+      <!-- File to play to acknowledge muted -->
+      <param name="muted-sound" value="conference/conf-muted.wav"/>
+      <!-- File to play to acknowledge unmuted -->
+      <param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
+      <!-- File to play if you are alone in the conference -->
+      <param name="alone-sound" value="conference/conf-alone.wav"/>
+      <!-- File to play endlessly (nobody will ever be able to talk) -->
+      <!-- <param name="perpetual-sound" value="perpetual.wav"/> -->
+      <!-- File to play when you're alone (music on hold)-->
+      <param name="moh-sound" value="$${hold_music}"/>
+      <!-- File to play when you join the conference -->
+      <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
+      <!-- File to play when you leave the conference -->
+      <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
+      <!-- File to play when you are ejected from the conference -->
+      <param name="kicked-sound" value="conference/conf-kicked.wav"/>
+      <!-- File to play when the conference is locked -->
+      <param name="locked-sound" value="conference/conf-locked.wav"/>
+      <!-- File to play when the conference is locked during the call-->
+      <param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
+      <!-- File to play when the conference is unlocked during the call-->
+      <param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
+      <!-- File to play to prompt for a pin -->
+      <param name="pin-sound" value="conference/conf-pin.wav"/>
+      <!-- File to play to when the pin is invalid -->
+      <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
+      <!-- Conference pin -->
+      <!-- <param name="pin" value="12345"/> -->
+      <!-- <param name="moderator-pin" value="54321"/> -->
+      <!-- Max number of times the user can be prompted for PIN -->
+      <!-- <param name="pin-retries" value="3"/> -->
+      <!-- Default Caller ID Name for outbound calls -->
+      <param name="caller-id-name" value="$${outbound_caller_name}"/>
+      <!-- Default Caller ID Number for outbound calls -->
+      <param name="caller-id-number" value="$${outbound_caller_id}"/>
+      <!-- Suppress start and stop talking events -->
+      <!-- <param name="suppress-events" value="start-talking,stop-talking"/> -->
+      <!-- enable comfort noise generation -->
+      <param name="comfort-noise" value="true"/>
+      <!-- Uncomment auto-record to toggle recording every conference call. -->
+      <!-- Another valid value is   shout://user:pass@server.com/live.mp3   -->
+      <!--
+      <param name="auto-record" value="$${recordings_dir}/${conference_name}_${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
+      -->
+
+      <!-- IVR digit machine timeouts -->
+      <!-- How much to wait between DTMF digits to match caller-controls -->
+      <!-- <param name="ivr-dtmf-timeout" value="500"/> -->
+      <!-- How much to wait for the first DTMF, 0 forever -->
+      <!-- <param name="ivr-input-timeout" value="0" /> -->
+      <!-- Delay before a conference is asked to be terminated -->
+      <!-- <param name="endconf-grace-time" value="120" /> -->
+      <!-- Can be | delim of wait-mod|audio-always|video-bridge|video-floor-only
+           wait_mod will wait until the moderator in,
+           audio-always will always mix audio from all members regardless they are talking or not -->
+      <!-- <param name="conference-flags" value="audio-always"/> -->
+      <!-- Allow live array sync for Verto -->
+      <!-- <param name="conference-flags" value="livearray-sync"/> -->
+    </profile>
+
+    <profile name="wideband">
+      <param name="domain" value="$${domain}"/>
+      <param name="rate" value="16000"/>
+      <param name="interval" value="20"/>
+      <param name="energy-level" value="300"/>
+      <!-- <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> -->
+      <param name="muted-sound" value="conference/conf-muted.wav"/>
+      <param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
+      <param name="alone-sound" value="conference/conf-alone.wav"/>
+      <param name="moh-sound" value="$${hold_music}"/>
+      <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
+      <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
+      <param name="kicked-sound" value="conference/conf-kicked.wav"/>
+      <param name="locked-sound" value="conference/conf-locked.wav"/>
+      <param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
+      <param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
+      <param name="pin-sound" value="conference/conf-pin.wav"/>
+      <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
+      <param name="caller-id-name" value="$${outbound_caller_name}"/>
+      <param name="caller-id-number" value="$${outbound_caller_id}"/>
+      <param name="comfort-noise" value="true"/>
+      <!-- <param name="tts-engine" value="flite"/> -->
+      <!-- <param name="tts-voice" value="kal16"/> -->
+    </profile>
+
+    <profile name="ultrawideband">
+      <param name="domain" value="$${domain}"/>
+      <param name="rate" value="32000"/>
+      <param name="interval" value="20"/>
+      <param name="energy-level" value="300"/>
+      <!-- <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> -->
+      <param name="muted-sound" value="conference/conf-muted.wav"/>
+      <param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
+      <param name="alone-sound" value="conference/conf-alone.wav"/>
+      <param name="moh-sound" value="$${hold_music}"/>
+      <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
+      <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
+      <param name="kicked-sound" value="conference/conf-kicked.wav"/>
+      <param name="locked-sound" value="conference/conf-locked.wav"/>
+      <param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
+      <param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
+      <param name="pin-sound" value="conference/conf-pin.wav"/>
+      <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
+      <param name="caller-id-name" value="$${outbound_caller_name}"/>
+      <param name="caller-id-number" value="$${outbound_caller_id}"/>
+      <param name="comfort-noise" value="true"/>
+
+      <!-- <param name="conference-flags" value="video-floor-only|rfc-4579|livearray-sync|auto-3d-position|transcode-video|minimize-video-encoding"/> -->
+
+      <!-- <param name="video-mode" value="mux"/> -->
+      <!-- <param name="video-layout-name" value="3x3"/> -->
+      <!-- <param name="video-layout-name" value="group:grid"/> -->
+      <!-- <param name="video-canvas-size" value="1280x720"/> -->
+      <!-- <param name="video-canvas-bgcolor" value="#333333"/> -->
+      <!-- <param name="video-layout-bgcolor" value="#000000"/> -->
+      <!-- <param name="video-codec-bandwidth" value="2mb"/> -->
+      <!-- <param name="video-fps" value="15"/> -->
+      <!-- <param name="video-auto-floor-msec" value="100"/> -->
+
+
+      <!-- <param name="tts-engine" value="flite"/> -->
+      <!-- <param name="tts-voice" value="kal16"/> -->
+    </profile>
+
+    <profile name="cdquality">
+      <param name="domain" value="$${domain}"/>
+      <param name="rate" value="48000"/>
+      <param name="interval" value="20"/>
+      <param name="energy-level" value="300"/>
+      <!-- <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> -->
+      <param name="muted-sound" value="conference/conf-muted.wav"/>
+      <param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
+      <param name="alone-sound" value="conference/conf-alone.wav"/>
+      <param name="moh-sound" value="$${hold_music}"/>
+      <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
+      <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
+      <param name="kicked-sound" value="conference/conf-kicked.wav"/>
+      <param name="locked-sound" value="conference/conf-locked.wav"/>
+      <param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
+      <param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
+      <param name="pin-sound" value="conference/conf-pin.wav"/>
+      <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
+      <param name="caller-id-name" value="$${outbound_caller_name}"/>
+      <param name="caller-id-number" value="$${outbound_caller_id}"/>
+      <param name="comfort-noise" value="true"/>
+
+      <!-- <param name="conference-flags" value="video-floor-only|rfc-4579|livearray-sync|auto-3d-position|minimize-video-encoding"/> -->
+
+      <!-- <param name="video-mode" value="mux"/> -->
+      <!-- <param name="video-layout-name" value="3x3"/> -->
+      <!-- <param name="video-layout-name" value="group:grid"/> -->
+      <!-- <param name="video-canvas-size" value="1920x1080"/> -->
+      <!-- <param name="video-canvas-bgcolor" value="#333333"/> -->
+      <!-- <param name="video-layout-bgcolor" value="#000000"/> -->
+      <!-- <param name="video-codec-bandwidth" value="2mb"/> -->
+      <!-- <param name="video-fps" value="15"/> -->
+
+    </profile>
+
+    <profile name="video-mcu-stereo">
+      <param name="domain" value="$${domain}"/>
+      <param name="rate" value="48000"/>
+      <param name="channels" value="2"/>
+      <param name="interval" value="20"/>
+      <param name="energy-level" value="200"/>
+      <!-- <param name="tts-engine" value="flite"/> -->
+      <!-- <param name="tts-voice" value="kal16"/> -->
+      <param name="muted-sound" value="conference/conf-muted.wav"/>
+      <param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
+      <param name="alone-sound" value="conference/conf-alone.wav"/>
+      <param name="moh-sound" value="local_stream://stereo"/>
+      <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
+      <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
+      <param name="kicked-sound" value="conference/conf-kicked.wav"/>
+      <param name="locked-sound" value="conference/conf-locked.wav"/>
+      <param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
+      <param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
+      <param name="pin-sound" value="conference/conf-pin.wav"/>
+      <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
+      <param name="caller-id-name" value="$${outbound_caller_name}"/>
+      <param name="caller-id-number" value="$${outbound_caller_id}"/>
+      <param name="comfort-noise" value="false"/>
+      <param name="conference-flags" value="video-floor-only|rfc-4579|livearray-sync|minimize-video-encoding"/>
+      <param name="video-mode" value="mux"/> 
+      <param name="video-layout-name" value="3x3"/>
+      <param name="video-layout-name" value="group:grid"/>
+      <param name="video-canvas-size" value="1920x1080"/>
+      <param name="video-canvas-bgcolor" value="#333333"/>
+      <param name="video-layout-bgcolor" value="#000000"/>
+      <param name="video-codec-bandwidth" value="1mb"/>
+      <param name="video-fps" value="15"/>
+    </profile>
+
+    
+    <profile name="sla">
+      <param name="domain" value="$${domain}"/>
+      <param name="rate" value="16000"/>
+      <param name="interval" value="20"/>
+      <param name="caller-controls" value="none"/>
+      <param name="energy-level" value="200"/>
+      <param name="moh-sound" value="silence"/>
+      <param name="comfort-noise" value="true"/>
+    </profile>
+
+  </profiles>
+</configuration>
diff --git a/conf/testing/autoload_configs/conference_layouts.conf.xml b/conf/testing/autoload_configs/conference_layouts.conf.xml
new file mode 100644 (file)
index 0000000..3620f64
--- /dev/null
@@ -0,0 +1,326 @@
+<configuration name="conference_layouts.conf" description="Audio Conference">
+  <layout-settings>
+    <layouts>
+      <layout name="1x1">
+       <image x="0" y="0" scale="360" floor="true"/>
+      </layout>
+      <layout name="1x2" auto-3d-position="true">
+       <image x="90" y="0" scale="180"/>
+       <image x="90" y="180" scale="180"/>
+      </layout>
+      <layout name="2x1" auto-3d-position="true">
+       <image x="0" y="90" scale="180"/>
+       <image x="180" y="90" scale="180"/>
+      </layout>
+      <layout name="2x2" auto-3d-position="true">
+       <image x="0" y="0" scale="180"/>
+       <image x="180" y="0" scale="180"/>
+       <image x="0" y="180" scale="180"/>
+       <image x="180" y="180" scale="180"/>
+      </layout>
+      <layout name="3x3" auto-3d-position="true">
+       <image x="0" y="0" scale="120"/>
+       <image x="120" y="0" scale="120"/>
+       <image x="240" y="0" scale="120"/>
+       <image x="0" y="120" scale="120"/>
+       <image x="120" y="120" scale="120"/>
+       <image x="240" y="120" scale="120"/>
+       <image x="0" y="240" scale="120"/>
+       <image x="120" y="240" scale="120"/>
+       <image x="240" y="240" scale="120"/>
+      </layout>
+      <layout name="4x4" auto-3d-position="true">
+       <image x="0" y="0" scale="90"/>
+       <image x="90" y="0" scale="90"/>
+       <image x="180" y="0" scale="90"/>
+       <image x="270" y="0" scale="90"/>
+       <image x="0" y="90" scale="90"/>
+       <image x="90" y="90" scale="90"/>
+       <image x="180" y="90" scale="90"/>
+       <image x="270" y="90" scale="90"/>
+       <image x="0" y="180" scale="90"/>
+       <image x="90" y="180" scale="90"/>
+       <image x="180" y="180" scale="90"/>
+       <image x="270" y="180" scale="90"/>
+       <image x="0" y="270" scale="90"/>
+       <image x="90" y="270" scale="90"/>
+       <image x="180" y="270" scale="90"/>
+       <image x="270" y="270" scale="90"/>
+      </layout>
+      <layout name="5x5" auto-3d-position="true">
+       <image x="0" y="0" scale="72"/>
+       <image x="72" y="0" scale="72"/>
+       <image x="144" y="0" scale="72"/>
+       <image x="216" y="0" scale="72"/>
+       <image x="288" y="0" scale="72"/>
+       <image x="0" y="72" scale="72"/>
+       <image x="72" y="72" scale="72"/>
+       <image x="144" y="72" scale="72"/>
+       <image x="216" y="72" scale="72"/>
+       <image x="288" y="72" scale="72"/>
+       <image x="0" y="144" scale="72"/>
+       <image x="72" y="144" scale="72"/>
+       <image x="144" y="144" scale="72"/>
+       <image x="216" y="144" scale="72"/>
+       <image x="288" y="144" scale="72"/>
+       <image x="0" y="216" scale="72"/>
+       <image x="72" y="216" scale="72"/>
+       <image x="144" y="216" scale="72"/>
+       <image x="216" y="216" scale="72"/>
+       <image x="288" y="216" scale="72"/>
+       <image x="0" y="288" scale="72"/>
+       <image x="72" y="288" scale="72"/>
+       <image x="144" y="288" scale="72"/>
+       <image x="216" y="288" scale="72"/>
+       <image x="288" y="288" scale="72"/>
+      </layout>
+      <layout name="6x6" auto-3d-position="true">
+       <image x="0" y="0" scale="60"/>
+       <image x="60" y="0" scale="60"/>
+       <image x="120" y="0" scale="60"/>
+       <image x="180" y="0" scale="60"/>
+       <image x="240" y="0" scale="60"/>
+       <image x="300" y="0" scale="60"/>
+       <image x="0" y="60" scale="60"/>
+       <image x="60" y="60" scale="60"/>
+       <image x="120" y="60" scale="60"/>
+       <image x="180" y="60" scale="60"/>
+       <image x="240" y="60" scale="60"/>
+       <image x="300" y="60" scale="60"/>
+       <image x="0" y="120" scale="60"/>
+       <image x="60" y="120" scale="60"/>
+       <image x="120" y="120" scale="60"/>
+       <image x="180" y="120" scale="60"/>
+       <image x="240" y="120" scale="60"/>
+       <image x="300" y="120" scale="60"/>
+       <image x="0" y="180" scale="60"/>
+       <image x="60" y="180" scale="60"/>
+       <image x="120" y="180" scale="60"/>
+       <image x="180" y="180" scale="60"/>
+       <image x="240" y="180" scale="60"/>
+       <image x="300" y="180" scale="60"/>
+       <image x="0" y="240" scale="60"/>
+       <image x="60" y="240" scale="60"/>
+       <image x="120" y="240" scale="60"/>
+       <image x="180" y="240" scale="60"/>
+       <image x="240" y="240" scale="60"/>
+       <image x="300" y="240" scale="60"/>
+       <image x="0" y="300" scale="60"/>
+       <image x="60" y="300" scale="60"/>
+       <image x="120" y="300" scale="60"/>
+       <image x="180" y="300" scale="60"/>
+       <image x="240" y="300" scale="60"/>
+       <image x="300" y="300" scale="60"/>
+      </layout>
+      <layout name="8x8" auto-3d-position="true">
+       <image x="0" y="0" scale="45"/>
+       <image x="45" y="0" scale="45"/>
+       <image x="90" y="0" scale="45"/>
+       <image x="135" y="0" scale="45"/>
+       <image x="180" y="0" scale="45"/>
+       <image x="225" y="0" scale="45"/>
+       <image x="270" y="0" scale="45"/>
+       <image x="315" y="0" scale="45"/>
+       <image x="0" y="45" scale="45"/>
+       <image x="45" y="45" scale="45"/>
+       <image x="90" y="45" scale="45"/>
+       <image x="135" y="45" scale="45"/>
+       <image x="180" y="45" scale="45"/>
+       <image x="225" y="45" scale="45"/>
+       <image x="270" y="45" scale="45"/>
+       <image x="315" y="45" scale="45"/>
+       <image x="0" y="90" scale="45"/>
+       <image x="45" y="90" scale="45"/>
+       <image x="90" y="90" scale="45"/>
+       <image x="135" y="90" scale="45"/>
+       <image x="180" y="90" scale="45"/>
+       <image x="225" y="90" scale="45"/>
+       <image x="270" y="90" scale="45"/>
+       <image x="315" y="90" scale="45"/>
+       <image x="0" y="135" scale="45"/>
+       <image x="45" y="135" scale="45"/>
+       <image x="90" y="135" scale="45"/>
+       <image x="135" y="135" scale="45"/>
+       <image x="180" y="135" scale="45"/>
+       <image x="225" y="135" scale="45"/>
+       <image x="270" y="135" scale="45"/>
+       <image x="315" y="135" scale="45"/>
+       <image x="0" y="180" scale="45"/>
+       <image x="45" y="180" scale="45"/>
+       <image x="90" y="180" scale="45"/>
+       <image x="135" y="180" scale="45"/>
+       <image x="180" y="180" scale="45"/>
+       <image x="225" y="180" scale="45"/>
+       <image x="270" y="180" scale="45"/>
+       <image x="315" y="180" scale="45"/>
+       <image x="0" y="225" scale="45"/>
+       <image x="45" y="225" scale="45"/>
+       <image x="90" y="225" scale="45"/>
+       <image x="135" y="225" scale="45"/>
+       <image x="180" y="225" scale="45"/>
+       <image x="225" y="225" scale="45"/>
+       <image x="270" y="225" scale="45"/>
+       <image x="315" y="225" scale="45"/>
+       <image x="0" y="270" scale="45"/>
+       <image x="45" y="270" scale="45"/>
+       <image x="90" y="270" scale="45"/>
+       <image x="135" y="270" scale="45"/>
+       <image x="180" y="270" scale="45"/>
+       <image x="225" y="270" scale="45"/>
+       <image x="270" y="270" scale="45"/>
+       <image x="315" y="270" scale="45"/>
+       <image x="0" y="315" scale="45"/>
+       <image x="45" y="315" scale="45"/>
+       <image x="90" y="315" scale="45"/>
+       <image x="135" y="315" scale="45"/>
+       <image x="180" y="315" scale="45"/>
+       <image x="225" y="315" scale="45"/>
+       <image x="270" y="315" scale="45"/>
+       <image x="315" y="315" scale="45"/>
+      </layout>
+      <layout name="1up_top_left+5" auto-3d-position="true">
+       <image x="0" y="0" scale="240" floor="true"/>
+       <image x="240" y="0" scale="120"/>
+       <image x="240" y="120" scale="120"/>
+       <image x="0" y="240" scale="120"/>
+       <image x="120" y="240" scale="120"/>
+       <image x="240" y="240" scale="120"/>
+      </layout>
+      <layout name="1up_top_left+7" auto-3d-position="true">
+       <image x="0" y="0" scale="270" floor="true"/>
+       <image x="270" y="0" scale="90"/>
+       <image x="270" y="90" scale="90"/>
+       <image x="270" y="180" scale="90"/>
+       <image x="0" y="270" scale="90"/>
+       <image x="90" y="270" scale="90"/>
+       <image x="180" y="270" scale="90"/>
+       <image x="270" y="270" scale="90"/>
+      </layout>
+      <layout name="1up_top_left+9" auto-3d-position="true">
+       <image x="0" y="0" scale="288" floor="true"/>
+       <image x="288" y="0" scale="72"/>
+       <image x="288" y="72" scale="72"/>
+       <image x="288" y="144" scale="72"/>
+       <image x="288" y="216" scale="72"/>
+       <image x="0" y="288" scale="72"/>
+       <image x="72" y="288" scale="72"/>
+       <image x="144" y="288" scale="72"/>
+       <image x="216" y="288" scale="72"/>
+       <image x="288" y="288" scale="72"/>
+      </layout>
+      <layout name="2up_top+8" auto-3d-position="true">
+       <image x="0" y="0" scale="180" floor="true"/>
+       <image x="180" y="0" scale="180" reservation_id="secondary"/>
+       <image x="0" y="180" scale="90"/>
+       <image x="90" y="180" scale="90"/>
+       <image x="180" y="180" scale="90"/>
+       <image x="270" y="180" scale="90"/>
+       <image x="0" y="270" scale="90"/>
+       <image x="90" y="270" scale="90"/>
+       <image x="180" y="270" scale="90"/>
+       <image x="270" y="270" scale="90"/>
+      </layout>
+      <layout name="2up_middle+8" auto-3d-position="true">
+       <image x="0" y="90" scale="180" floor="true"/>
+       <image x="180" y="90" scale="180" reservation_id="secondary"/>
+       <image x="0" y="0" scale="90"/>
+       <image x="90" y="0" scale="90"/>
+       <image x="180" y="0" scale="90"/>
+       <image x="270" y="0" scale="90"/>
+       <image x="0" y="270" scale="90"/>
+       <image x="90" y="270" scale="90"/>
+       <image x="180" y="270" scale="90"/>
+       <image x="270" y="270" scale="90"/>
+      </layout>
+      <layout name="2up_bottom+8" auto-3d-position="true">
+       <image x="0" y="180" scale="180" floor="true"/>
+       <image x="180" y="180" scale="180" reservation_id="secondary"/>
+       <image x="0" y="0" scale="90"/>
+       <image x="90" y="0" scale="90"/>
+       <image x="180" y="0" scale="90"/>
+       <image x="270" y="0" scale="90"/>
+       <image x="0" y="90" scale="90"/>
+       <image x="90" y="90" scale="90"/>
+       <image x="180" y="90" scale="90"/>
+       <image x="270" y="90" scale="90"/>
+      </layout>
+      <layout name="3up+4" auto-3d-position="true">
+       <image x="0" y="0" scale="180" floor="true"/>
+       <image x="180" y="0" scale="180" reservation_id="secondary"/>
+       <image x="0" y="180" scale="180" reservation_id="third"/>
+       <image x="180" y="180" scale="90"/>
+       <image x="270" y="180" scale="90"/>
+       <image x="180" y="270" scale="90"/>
+       <image x="270" y="270" scale="90"/>
+      </layout>
+      <layout name="3up+9" auto-3d-position="true">
+       <image x="0" y="0" scale="180" floor="true"/>
+       <image x="180" y="0" scale="180" reservation_id="secondary"/>
+       <image x="0" y="180" scale="180" reservation_id="third"/>
+       <image x="180" y="180" scale="60"/>
+       <image x="240" y="180" scale="60"/>
+       <image x="300" y="180" scale="60"/>
+       <image x="180" y="240" scale="60"/>
+       <image x="240" y="240" scale="60"/>
+       <image x="300" y="240" scale="60"/>
+       <image x="180" y="300" scale="60"/>
+       <image x="240" y="300" scale="60"/>
+       <image x="300" y="300" scale="60"/>
+      </layout>
+      <layout name="presenter-dual-vertical">
+       <image x="90" y="0" scale="180" floor-only="true"/>
+       <image x="90" y="180" scale="180" reservation_id="presenter"/>
+      </layout>
+      <layout name="presenter-dual-horizontal">
+       <image x="0" y="90" scale="180" floor-only="true"/>
+       <image x="180" y="90" scale="180" reservation_id="presenter"/>
+      </layout>
+      <layout name="presenter-overlap-small-top-right">
+       <image x="0" y="0" scale="360" floor-only="true"/>
+       <image x="300" y="0" scale="60" overlap="true" reservation_id="presenter"/>
+      </layout>
+      <layout name="presenter-overlap-small-bot-right">
+       <image x="0" y="0" scale="360" floor-only="true"/>
+       <image x="300" y="300" scale="60" overlap="true" reservation_id="presenter"/>
+      </layout>
+      <layout name="presenter-overlap-large-top-right">
+       <image x="0" y="0" scale="360" floor-only="true"/>
+       <image x="180" y="0" scale="180" overlap="true" reservation_id="presenter"/>
+      </layout>
+      <layout name="presenter-overlap-large-bot-right">
+       <image x="0" y="0" scale="360" floor-only="true"/>
+       <image x="180" y="180" scale="180" overlap="true" reservation_id="presenter"/>
+      </layout>
+      <layout name="overlaps" auto-3d-position="true">
+       <image x="0" y="0" scale="360"/>
+       <image x="300" y="300" scale="60" overlap="true"/>
+       <image x="240" y="300" scale="60" overlap="true"/>
+       <image x="180" y="300" scale="60" overlap="true"/>
+       <image x="120" y="300" scale="60" overlap="true"/>
+       <image x="60" y="300" scale="60" overlap="true"/>
+       <image x="0" y="300" scale="60" overlap="true"/>
+      </layout>
+    </layouts>
+    <groups>
+      <group name="grid">
+       <layout>1x1</layout>
+       <layout>2x1</layout>
+       <layout>2x2</layout>
+       <layout>3x3</layout>
+       <layout>4x4</layout>
+       <layout>5x5</layout>
+       <layout>6x6</layout>
+       <layout>8x8</layout>
+      </group>
+      <group name="1up_top_left_plus">
+       <layout>1up_top_left+5</layout>
+       <layout>1up_top_left+7</layout>
+       <layout>1up_top_left+9</layout>
+      </group>
+      <group name="3up_plus">
+       <layout>3up+4</layout>
+       <layout>3up+9</layout>
+      </group>
+    </groups>
+  </layout-settings>
+</configuration>
diff --git a/conf/testing/autoload_configs/console.conf.xml b/conf/testing/autoload_configs/console.conf.xml
new file mode 100644 (file)
index 0000000..6c2b828
--- /dev/null
@@ -0,0 +1,56 @@
+<configuration name="console.conf" description="Console Logger">
+  <!-- pick a file name, a function name or 'all' -->
+  <!-- map as many as you need for specific debugging -->
+  <mappings>
+    <!-- 
+      name can be a file name, function name or 'all' 
+      value is one or more of debug,info,notice,warning,err,crit,alert,all
+      See examples below
+
+
+      The following map is the default, which is all debug levels enabled:
+      <map name="all" value="debug,info,notice,warning,err,crit,alert"/>
+
+
+      Example: the following turns on debugging for error and critical levels only
+      <map name="all" value="err,crit"/>
+
+      NOTE: using map name="all" will override any other settings!  If you 
+            want a more specific set of console messages then you will need
+            to specify which files and/or functions you want to have debug
+            messages.  One option is to turn on just the more critical 
+            messages with map name="all", then specify the other types of 
+            console messages you want to see for various files and functions.
+
+      Example: turn on ERROR, CRIT, ALERT for all modules, then specify other
+               levels for various modules and functions
+
+        <map name="all" value="err,crit,alert"/>
+        <map name="switch_loadable_module_process" value="all"/>
+        <map name="mod_local_stream.c" value="warning,debug"/>
+        <map name="mod_sndfile.c" value="warning,info,debug"/>
+     -->
+    <map name="all" value="console,debug,info,notice,warning,err,crit,alert"/>
+    
+    <!--
+      You can use or modify this sample set of mappings.  It turns on higher
+      level messages for all modules and then specifies extra lower level
+      messages for freetdm, Sofia, and switch core messages.
+      
+    <map name="all"                         value="warning,err,crit,alert"/>
+    <map name="zap_analog.c"                value="all"/>
+    <map name="zap_io.c"                    value="all"/>
+    <map name="zap_isdn.c"                  value="all"/>
+    <map name="zap_zt.c"                    value="all"/>
+    <map name="mod_freetdm"                 value="all"/>
+    <map name="sofia.c"                     value="notice"/>
+    <map name="switch_core_state_machine.c" value="all"/>      
+    
+    -->
+  </mappings>
+  <settings>
+    <!-- comment or set to false for no color logging -->
+    <param name="colorize" value="true"/>
+    <param name="loglevel" value="$${console_loglevel}"/>
+  </settings>
+</configuration>
diff --git a/conf/testing/autoload_configs/directory.conf.xml b/conf/testing/autoload_configs/directory.conf.xml
new file mode 100644 (file)
index 0000000..748b233
--- /dev/null
@@ -0,0 +1,21 @@
+<configuration name="directory.conf" description="Directory">
+  <settings>
+      <!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
+      <!--<param name="dbname" value="directory"/>-->
+  </settings>
+  <profiles>
+    <profile name="default">
+      <param name="max-menu-attempts" value="3"/>
+      <param name="min-search-digits" value="3"/>
+      <param name="terminator-key" value="#"/>
+      <param name="digit-timeout" value="3000"/>
+      <param name="max-result" value="5"/>
+      <param name="next-key" value="6"/>
+      <param name="prev-key" value="4"/>
+      <param name="switch-order-key" value="*"/>
+      <param name="select-name-key" value="1"/>
+      <param name="new-search-key" value="3"/>
+      <param name="search-order" value="last_name"/>
+    </profile>
+  </profiles>
+</configuration> 
diff --git a/conf/testing/autoload_configs/event_socket.conf.xml b/conf/testing/autoload_configs/event_socket.conf.xml
new file mode 100644 (file)
index 0000000..d62dd34
--- /dev/null
@@ -0,0 +1,10 @@
+<configuration name="event_socket.conf" description="Socket Client">
+  <settings>
+    <param name="nat-map" value="false"/>
+    <param name="listen-ip" value="::"/>
+    <param name="listen-port" value="8021"/>
+    <param name="password" value="ClueCon"/>
+    <!--<param name="apply-inbound-acl" value="loopback.auto"/>-->
+    <!--<param name="stop-on-bind-error" value="true"/>-->
+  </settings>
+</configuration>
diff --git a/conf/testing/autoload_configs/fifo.conf.xml b/conf/testing/autoload_configs/fifo.conf.xml
new file mode 100644 (file)
index 0000000..b1db4dd
--- /dev/null
@@ -0,0 +1,10 @@
+<configuration name="fifo.conf" description="FIFO Configuration">
+  <settings>
+    <param name="delete-all-outbound-member-on-startup" value="false"/>
+  </settings>
+  <fifos>
+    <fifo name="cool_fifo@$${domain}" importance="0">
+      <!--<member timeout="60" simo="1" lag="20">{member_wait=nowait}user/1005@$${domain}</member>-->
+    </fifo>
+  </fifos>
+</configuration>
diff --git a/conf/testing/autoload_configs/hash.conf.xml b/conf/testing/autoload_configs/hash.conf.xml
new file mode 100644 (file)
index 0000000..95b7928
--- /dev/null
@@ -0,0 +1,6 @@
+<configuration name="hash.conf" description="Hash Configuration">
+  <remotes>
+       <!-- List of hosts from where to pull usage data -->
+       <!-- <remote name="Test1" host="10.0.0.10" port="8021" password="ClueCon" interval="1000" /> -->
+  </remotes>
+</configuration>
diff --git a/conf/testing/autoload_configs/local_stream.conf.xml b/conf/testing/autoload_configs/local_stream.conf.xml
new file mode 100644 (file)
index 0000000..16371d2
--- /dev/null
@@ -0,0 +1,49 @@
+<configuration name="local_stream.conf" description="stream files from local dir">
+  <!-- fallback to default if requested moh class isn't found -->
+  <directory name="default" path="$${sounds_dir}/music/8000">
+    <param name="rate" value="8000"/>
+    <param name="shuffle" value="true"/>
+    <param name="channels" value="1"/>
+    <param name="interval" value="20"/>
+    <param name="timer-name" value="soft"/>
+    <!-- list of short files to break in with every so often -->
+    <!--<param name="chime-list" value="file1.wav,file2.wav"/>-->
+    <!-- frequency of break-in (seconds)-->
+    <!--<param name="chime-freq" value="30"/>-->
+    <!-- limit to how many seconds the file will play -->
+    <!--<param name="chime-max" value="500"/>-->
+  </directory>
+
+  <directory name="moh/8000" path="$${sounds_dir}/music/8000">
+    <param name="rate" value="8000"/>
+    <param name="shuffle" value="true"/>
+    <param name="channels" value="1"/>
+    <param name="interval" value="20"/>
+    <param name="timer-name" value="soft"/>
+  </directory>
+
+  <directory name="moh/16000" path="$${sounds_dir}/music/16000">
+    <param name="rate" value="16000"/>
+    <param name="shuffle" value="true"/>
+    <param name="channels" value="1"/>
+    <param name="interval" value="20"/>
+    <param name="timer-name" value="soft"/>
+  </directory>
+
+  <directory name="moh/32000" path="$${sounds_dir}/music/32000">
+    <param name="rate" value="32000"/>
+    <param name="shuffle" value="true"/>
+    <param name="channels" value="1"/>
+    <param name="interval" value="20"/>
+    <param name="timer-name" value="soft"/>
+  </directory>
+
+  <directory name="moh/48000" path="$${sounds_dir}/music/48000">
+    <param name="rate" value="48000"/>
+    <param name="shuffle" value="true"/>
+    <param name="channels" value="1"/>
+    <param name="interval" value="10"/>
+    <param name="timer-name" value="soft"/>
+  </directory>
+
+</configuration>
diff --git a/conf/testing/autoload_configs/logfile.conf.xml b/conf/testing/autoload_configs/logfile.conf.xml
new file mode 100644 (file)
index 0000000..8e7f6c2
--- /dev/null
@@ -0,0 +1,29 @@
+<configuration name="logfile.conf" description="File Logging">
+  <settings>
+   <!-- true to auto rotate on HUP, false to open/close -->
+   <param name="rotate-on-hup" value="true"/>
+  </settings>
+  <profiles>
+    <profile name="default">
+      <settings>
+        <!-- File to log to -->
+       <!--<param name="logfile" value="/var/log/freeswitch.log"/>-->
+        <!-- At this length in bytes rotate the log file (0 for never) -->
+        <param name="rollover" value="10485760"/>
+               <!-- Maximum number of log files to keep before wrapping -->
+               <!-- If this parameter is enabled, the log filenames will not include a date stamp -->
+               <!-- <param name="maximum-rotate" value="32"/> -->
+        <!-- Prefix all log lines by the session's uuid  -->
+        <param name="uuid" value="true" />
+      </settings>
+      <mappings>
+       <!-- 
+            name can be a file name, function name or 'all' 
+            value is one or more of debug,info,notice,warning,err,crit,alert,all
+            Please see comments in console.conf.xml for more information
+       -->
+       <map name="all" value="console,debug,info,notice,warning,err,crit,alert"/>
+      </mappings>
+    </profile>
+  </profiles>
+</configuration>
diff --git a/conf/testing/autoload_configs/lua.conf.xml b/conf/testing/autoload_configs/lua.conf.xml
new file mode 100644 (file)
index 0000000..fafd336
--- /dev/null
@@ -0,0 +1,32 @@
+<configuration name="lua.conf" description="LUA Configuration">
+  <settings>
+
+    <!-- 
+    Specify local directories that will be searched for LUA modules
+    These entries will be pre-pended to the LUA_CPATH environment variable
+    -->
+    <!-- <param name="module-directory" value="/usr/lib/lua/5.1/?.so"/> -->
+    <!-- <param name="module-directory" value="/usr/local/lib/lua/5.1/?.so"/> -->
+
+    <!-- 
+    Specify local directories that will be searched for LUA scripts
+    These entries will be pre-pended to the LUA_PATH environment variable
+    -->
+    <!-- <param name="script-directory" value="/usr/local/lua/?.lua"/> -->
+    <!-- <param name="script-directory" value="$${script_dir}/?.lua"/> -->
+
+    <!--<param name="xml-handler-script" value="/dp.lua"/>-->
+    <!--<param name="xml-handler-bindings" value="dialplan"/>-->
+
+    <!--
+       The following options identifies a lua script that is launched
+       at startup and may live forever in the background.
+       You can define multiple lines, one for each script you 
+       need to run.
+    -->
+    <!--<param name="startup-script" value="startup_script_1.lua"/>-->
+    <!--<param name="startup-script" value="startup_script_2.lua"/>-->
+    
+    <!--<hook event="CUSTOM" subclass="conference::maintenance" script="catch-event.lua"/>-->
+  </settings>
+</configuration>
diff --git a/conf/testing/autoload_configs/modules.conf.xml b/conf/testing/autoload_configs/modules.conf.xml
new file mode 100644 (file)
index 0000000..31d4a51
--- /dev/null
@@ -0,0 +1,33 @@
+<configuration name="modules.conf" description="Modules">
+  <modules>
+    
+    <load module="mod_console"/>
+    <load module="mod_logfile"/>
+    <load module="mod_cdr_csv"/>
+    <load module="mod_event_socket"/>
+    <load module="mod_sofia"/>
+    <load module="mod_loopback"/>
+    <load module="mod_rtc"/>
+    <load module="mod_verto"/>
+    <load module="mod_commands"/>
+    <load module="mod_conference"/>
+    <load module="mod_av"/>
+    <load module="mod_dptools"/>
+    <load module="mod_fifo"/>
+    <load module="mod_voicemail"/>
+    <load module="mod_valet_parking"/>
+    <load module="mod_dialplan_xml"/>
+    <load module="mod_spandsp"/>
+    <load module="mod_g723_1"/>
+    <load module="mod_g729"/>
+    <load module="mod_amr"/>
+    <load module="mod_vpx"/>
+    <load module="mod_opus"/>
+    <load module="mod_sndfile"/>
+    <load module="mod_native_file"/>
+    <load module="mod_local_stream"/>
+    <load module="mod_tone_stream"/>
+    <load module="mod_lua"/>
+    <load module="mod_say_en"/>
+  </modules>
+</configuration>
diff --git a/conf/testing/autoload_configs/opus.conf.xml b/conf/testing/autoload_configs/opus.conf.xml
new file mode 100644 (file)
index 0000000..2ac3f66
--- /dev/null
@@ -0,0 +1,19 @@
+<configuration name="opus.conf">
+    <settings>
+        <param name="use-vbr" value="1"/>
+        <param name="complexity" value="10"/>
+
+        <!--
+           maxaveragebitrate: the maximum average codec bitrate (values: 6000 to 510000 in bps) 0 is not considered
+           maxplaybackrate: the maximum codec internal frequency (values: 8000, 12000, 16000, 24000, 48000 in Hz) 0 is not considered
+           This will set the local encoder and instruct the remote encoder trough specific "fmtp" attibute in the SDP.
+
+           Example: if you receive "maxaveragebitrate=20000" from SDP and you have set "maxaveragebitrate=24000" in this configuration
+                    the lowest will prevail in this case "20000" is set on the encoder and the corresponding fmtp attribute will be set
+                    to instruct the remote encoder to do the same.
+        -->
+        <param name="maxaveragebitrate" value="0"/>
+        <param name="maxplaybackrate" value="0"/>
+
+    </settings>
+</configuration>
diff --git a/conf/testing/autoload_configs/post_load_modules.conf.xml b/conf/testing/autoload_configs/post_load_modules.conf.xml
new file mode 100644 (file)
index 0000000..8f4e132
--- /dev/null
@@ -0,0 +1,4 @@
+<configuration name="post_load_modules.conf" description="Modules">
+  <modules>
+  </modules>
+</configuration>
diff --git a/conf/testing/autoload_configs/presence_map.conf.xml b/conf/testing/autoload_configs/presence_map.conf.xml
new file mode 100644 (file)
index 0000000..8a9d1dd
--- /dev/null
@@ -0,0 +1,7 @@
+<configuration name="presence_map.conf" description="PRESENCE MAP">
+  <domains>
+    <domain name="$${domain}">
+      <exten regex="3\d+" proto="conf"/>
+    </domain>
+  </domains>
+</configuration>
diff --git a/conf/testing/autoload_configs/shout.conf.xml b/conf/testing/autoload_configs/shout.conf.xml
new file mode 100644 (file)
index 0000000..3f381e6
--- /dev/null
@@ -0,0 +1,8 @@
+<configuration name="shout.conf" description="mod shout config">
+  <settings>
+    <!-- Don't change these unless you are insane -->
+    <!--<param name="decoder" value="i586"/>-->
+    <!--<param name="volume" value=".1"/>-->
+    <!--<param name="outscale" value="8192"/>-->
+  </settings>
+</configuration>
diff --git a/conf/testing/autoload_configs/sofia.conf.xml b/conf/testing/autoload_configs/sofia.conf.xml
new file mode 100644 (file)
index 0000000..a5e8614
--- /dev/null
@@ -0,0 +1,19 @@
+<configuration name="sofia.conf" description="sofia Endpoint">
+
+  <global_settings>
+    <param name="log-level" value="0"/>
+    <!-- <param name="auto-restart" value="false"/> -->
+    <param name="debug-presence" value="0"/>
+    <!-- <param name="capture-server" value="udp:homer.domain.com:5060"/> -->
+  </global_settings>
+
+  <!--
+      The rabbit hole goes deep.  This includes all the
+      profiles in the sip_profiles directory that is up
+      one level from this directory.
+  -->
+  <profiles>
+    <X-PRE-PROCESS cmd="include" data="../sip_profiles/*.xml"/>
+  </profiles>
+
+</configuration>
diff --git a/conf/testing/autoload_configs/spandsp.conf.xml b/conf/testing/autoload_configs/spandsp.conf.xml
new file mode 100644 (file)
index 0000000..2471ca5
--- /dev/null
@@ -0,0 +1,118 @@
+<configuration name="spandsp.conf" description="SpanDSP config">
+    <modem-settings>
+<!--
+    total-modems set to N will create that many soft-modems.  
+    If you use them with Hylafax you need the following for each one numbered 0..N:
+
+    1) A line like this in /etc/inittab:
+
+      f0:2345:respawn:/usr/lib/fax/faxgetty /dev/FS0
+
+    2) copy conf/config.FS0 to /var/spool/hylafax/etc (or wherver the appropriate dir is on your system)
+
+    Subsequent modem configs would incrment the 0 to 1 and so on.
+
+-->
+      <param name="total-modems" value="0"/>
+      <!-- Change the directory of the devices created from /dev. Needed if FS runs as non-root -->
+      <!-- <param name="directory" value="/dev/FS"/> -->
+
+      <!-- Default context and dialplan to use on inbound calls from the modems -->
+      <param name="context" value="default"/>
+      <param name="dialplan" value="XML"/>
+
+      <!-- Extra tracing for debugging -->
+      <param name="verbose" value="false"/>
+    </modem-settings>
+
+    <fax-settings>
+       <param name="use-ecm"           value="true"/>
+       <param name="verbose"           value="false"/>
+       <param name="disable-v17"       value="false"/>
+       <param name="ident"             value="SpanDSP Fax Ident"/>
+       <param name="header"            value="SpanDSP Fax Header"/>
+
+       <param name="spool-dir"         value="$${temp_dir}"/>
+       <param name="file-prefix"       value="faxrx"/>
+       <!-- How many packets to process before sending the re-invite on tx/rx -->
+       <!-- <param name="t38-rx-reinvite-packet-count" value="50"/> -->
+       <!-- <param name="t38-tx-reinvite-packet-count" value="100"/> -->
+    </fax-settings>
+
+    <descriptors>
+
+     <!-- These tones are defined in Annex to ITU Operational Bulletin No. 781 - 1.II.2003 -->
+     <!-- Various Tones Used in National Networks (According to ITU-T Recommendation E.180)(03/1998) -->
+
+     <!-- North America -->
+     <descriptor name="1">
+       <tone name="CED_TONE">
+         <element freq1="2100" freq2="0" min="700" max="0"/>
+       </tone>
+       <tone name="SIT">
+         <element freq1="950" freq2="0" min="256" max="400"/>
+         <element freq1="1400" freq2="0" min="256" max="400"/>
+         <element freq1="1800" freq2="0" min="256" max="400"/>
+       </tone>
+       <tone name="RING_TONE" description="North America ring">
+         <element freq1="440" freq2="480" min="1200" max="0"/>
+       </tone>
+       <tone name="REORDER_TONE">
+         <element freq1="480" freq2="620" min="224" max="316"/>
+         <element freq1="0" freq2="0" min="168" max="352"/>
+         <element freq1="480" freq2="620" min="224" max="316"/>
+       </tone>
+       <tone name="BUSY_TONE">
+         <element freq1="480" freq2="620" min="464" max="536"/>
+         <element freq1="0" freq2="0" min="464" max="572"/>
+         <element freq1="480" freq2="620" min="464" max="536"/>
+       </tone>
+     </descriptor>
+
+     <!-- United Kingdom -->
+     <descriptor name="44">
+       <tone name="CED_TONE">
+         <element freq1="2100" freq2="0" min="500" max="0"/>
+       </tone>
+       <tone name="SIT">
+         <element freq1="950" freq2="0" min="256" max="400"/>
+         <element freq1="1400" freq2="0" min="256" max="400"/>
+         <element freq1="1800" freq2="0" min="256" max="400"/>
+       </tone>
+       <tone name="REORDER_TONE">
+         <element freq1="400" freq2="0" min="368" max="416"/>
+         <element freq1="0" freq2="0" min="336" max="368"/>
+         <element freq1="400" freq2="0" min="256" max="288"/>
+         <element freq1="0" freq2="0" min="512" max="544"/>
+       </tone>
+       <tone name="BUSY_TONE">
+         <element freq1="400" freq2="0" min="352" max="384"/>
+         <element freq1="0" freq2="0" min="352" max="384"/>
+         <element freq1="400" freq2="0" min="352" max="384"/>
+         <element freq1="0" freq2="0" min="352" max="384"/>
+       </tone>
+     </descriptor>
+
+     <!-- Germany -->
+     <descriptor name="49">
+       <tone name="CED_TONE">
+         <element freq1="2100" freq2="0" min="500" max="0"/>
+       </tone>
+       <tone name="SIT">
+         <element freq1="900" freq2="0" min="256" max="400"/>
+         <element freq1="1400" freq2="0" min="256" max="400"/>
+         <element freq1="1800" freq2="0" min="256" max="400"/>
+       </tone>
+       <tone name="REORDER_TONE">
+         <element freq1="425" freq2="0" min="224" max="272"/>
+         <element freq1="0" freq2="0" min="224" max="272"/>
+       </tone>
+       <tone name="BUSY_TONE">
+         <element freq1="425" freq2="0" min="464" max="516"/>
+         <element freq1="0" freq2="0" min="464" max="516"/>
+       </tone>
+     </descriptor>
+   </descriptors>
+
+</configuration>
+
diff --git a/conf/testing/autoload_configs/switch.conf.xml b/conf/testing/autoload_configs/switch.conf.xml
new file mode 100644 (file)
index 0000000..4ffe878
--- /dev/null
@@ -0,0 +1,176 @@
+<configuration name="switch.conf" description="Core Configuration">
+
+  <cli-keybindings>
+    <key name="1" value="help"/>
+    <key name="2" value="status"/>
+    <key name="3" value="show channels"/>
+    <key name="4" value="show calls"/>
+    <key name="5" value="sofia status"/>
+    <key name="6" value="reloadxml"/>
+    <key name="7" value="console loglevel 0"/>
+    <key name="8" value="console loglevel 7"/>
+    <key name="9" value="sofia status profile internal"/>
+    <key name="10" value="sofia profile internal siptrace on"/>
+    <key name="11" value="sofia profile internal siptrace off"/>
+    <key name="12" value="version"/>
+  </cli-keybindings> 
+  
+  <default-ptimes>
+    <!-- Set this to override the 20ms assumption of various codecs in the sdp with no ptime defined -->
+    <!-- <codec name="G729" ptime="40"/> -->
+  </default-ptimes>
+  
+  <settings>
+    <!-- Colorize the Console -->
+    <param name="colorize-console" value="true"/>
+
+    <!--Include full timestamps in dialplan logs -->
+    <param name="dialplan-timestamps" value="false"/>
+
+    <!-- Run the timer at 20ms by default and drop down as needed unless you set 1m-timer=true which was previous default -->
+    <!-- <param name="1ms-timer" value="true"/> -->
+
+    <!--
+       Set the Switch Name for HA environments.
+       When setting the switch name, it will override the system hostname for all DB and CURL requests
+       allowing cluster environments such as RHCS to have identical FreeSWITCH configurations but run
+       as different hostnames.
+    -->
+    <!-- <param name="switchname" value="freeswitch"/> -->
+    <!-- <param name="cpu-idle-smoothing-depth" value="30"/> -->
+
+
+    <!-- Maximum number of simultaneous DB handles open -->
+    <param name="max-db-handles" value="50"/>
+    <!-- Maximum number of seconds to wait for a new DB handle before failing -->
+    <param name="db-handle-timeout" value="10"/>
+
+    <!-- Minimum idle CPU before refusing calls -->
+    <!-- <param name="min-idle-cpu" value="25"/> -->
+
+    <!--
+       Max number of sessions to allow at any given time.
+       
+       NOTICE: If you're driving 28 T1's in a single box you should set this to 644*2 or 1288
+       this will ensure you're able to use the entire DS3 without a problem.  Otherwise you'll
+       be 144 channels short of always filling that DS3 up which can translate into waste.
+    -->
+    <param name="max-sessions" value="1000"/>
+    <!--Most channels to create per second -->
+    <param name="sessions-per-second" value="30"/>
+    <!-- Default Global Log Level - value is one of debug,info,notice,warning,err,crit,alert -->
+    <param name="loglevel" value="debug"/>
+
+    <!-- Set the core DEBUG level (0-10) -->
+    <!-- <param name="debug-level" value="10"/> -->
+
+    <!-- SQL Buffer length within rage of 32k to 10m -->
+    <!-- <param name="sql-buffer-len" value="1m"/> -->
+    <!-- Maximum SQL Buffer length must be greater than sql-buffer-len -->
+    <!-- <param name="max-sql-buffer-len" value="2m"/> -->
+
+    <!-- 
+        The min-dtmf-duration specifies the minimum DTMF duration to use on 
+        outgoing events. Events shorter than this will be increased in duration
+        to match min_dtmf_duration. You cannot configure a dtmf duration on a 
+        profile that is less than this setting. You may increase this value,
+        but cannot set it lower than 400. This value cannot exceed 
+        max-dtmf-duration. -->
+    <!-- <param name="min-dtmf-duration" value="400"/> -->
+
+    <!-- 
+        The max-dtmf-duration caps the playout of a DTMF event at the specified
+        duration. Events exceeding this duration will be truncated to this
+        duration. You cannot configure a duration on a profile that exceeds
+        this setting. This setting can be lowered, but cannot exceed 192000. 
+        This setting cannot be set lower than min_dtmf_duration. -->
+    <!-- <param name="max-dtmf-duration" value="192000"/> -->
+
+    <!-- 
+        The default_dtmf_duration specifies the DTMF duration to use on
+        originated DTMF events or on events that are received without a
+        duration specified. This value can be increased or lowered. This
+        value is lower-bounded by min_dtmf_duration and upper-bounded by
+        max-dtmf-duration\. -->
+    <!-- <param name="default-dtmf-duration" value="2000"/> -->
+
+    <!--
+       If you want to send out voicemail notifications via Windows you'll need to change the mailer-app
+       variable to the setting below:
+       
+       <param name="mailer-app" value="msmtp"/>
+       
+       Do not change mailer-app-args.
+       You will also need to download a sendmail clone for Windows (msmtp). This version works without issue:
+       http://msmtp.sourceforge.net/index.html. Download and copy the .exe to %winddir%\system32.
+       You'll need to create a small config file for smtp credentials (host name, authentication, tls, etc.) in
+       %USERPROFILE%\Application Data\ called "msmtprc.txt". Below is a sample copy of this file:
+       
+       ###################################
+       # The SMTP server of the provider.
+       account provider
+       host smtp.myisp.com
+       from john@myisp.com
+       auth login
+       user johndoe
+       password mypassword
+       
+       # Set a default account
+       account default : provider
+       ###################################
+       
+    -->    
+
+    <param name="mailer-app" value="sendmail"/>
+    <param name="mailer-app-args" value="-t"/>
+    <param name="dump-cores" value="yes"/>
+
+    <!-- Enable verbose channel events to include every detail about a channel on every event  -->
+    <!-- <param name="verbose-channel-events" value="no"/> -->
+
+    <!-- Enable clock nanosleep -->
+    <!-- <param name="enable-clock-nanosleep" value="true"/> -->
+
+    <!-- Enable monotonic timing -->
+    <!-- <param name="enable-monotonic-timing" value="true"/> -->
+
+    <!-- NEEDS DOCUMENTATION -->
+    <!-- <param name="enable-softtimer-timerfd" value="true"/> -->
+    <!-- <param name="enable-cond-yield" value="true"/> -->
+    <!-- <param name="enable-timer-matrix" value="true"/> -->
+    <!-- <param name="threaded-system-exec" value="true"/> -->
+    <!-- <param name="tipping-point" value="0"/> -->
+    <!-- <param name="timer-affinity" value="disabled"/> -->
+    <!-- NEEDS DOCUMENTATION -->
+
+    <!-- RTP port range -->
+    <!-- <param name="rtp-start-port" value="16384"/> -->
+    <!-- <param name="rtp-end-port" value="32768"/> -->
+
+    <!-- Test each port to make sure it is not in use by some other process before allocating it to RTP -->
+    <!-- <param name="rtp-port-usage-robustness" value="true"/> -->
+
+    <param name="rtp-enable-zrtp" value="false"/>
+
+    <!-- <param name="core-db-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE'" /> -->
+    <!-- <param name="core-db-dsn" value="dsn:username:password" /> -->
+    <!-- 
+        Allow to specify the sqlite db at a different location (In this example, move it to ramdrive for
+        better performance on most linux distro (note, you loose the data if you reboot))
+    -->
+    <!-- <param name="core-db-name" value="/dev/shm/core.db" /> -->
+
+    <!-- The system will create all the db schemas automatically, set this to false to avoid this behaviour -->
+    <!-- <param name="auto-create-schemas" value="true"/> -->
+    <!-- <param name="auto-clear-sql" value="true"/> -->
+    <!-- <param name="enable-early-hangup" value="true"/> -->
+
+    <!-- <param name="core-dbtype" value="MSSQL"/> -->
+
+    <!-- Allow multiple registrations to the same account in the central registration table -->
+    <!-- <param name="multiple-registrations" value="true"/> -->
+
+  </settings>
+
+</configuration>
+
diff --git a/conf/testing/autoload_configs/timezones.conf.xml b/conf/testing/autoload_configs/timezones.conf.xml
new file mode 100644 (file)
index 0000000..757d16c
--- /dev/null
@@ -0,0 +1,1850 @@
+<configuration name="timezones.conf" description="Timezones">
+    <timezones>
+       <zone name="Africa/Abidjan" value="GMT0" />
+       <zone name="Africa/Accra" value="GMT0" />
+       <zone name="Africa/Addis_Ababa" value="EAT-3" />
+       <zone name="Africa/Algiers" value="CET-1" />
+       <zone name="Africa/Asmara" value="EAT-3" />
+       <zone name="Africa/Asmera" value="EAT-3" />
+       <zone name="Africa/Bamako" value="GMT0" />
+       <zone name="Africa/Bangui" value="WAT-1" />
+       <zone name="Africa/Banjul" value="GMT0" />
+       <zone name="Africa/Bissau" value="GMT0" />
+       <zone name="Africa/Blantyre" value="CAT-2" />
+       <zone name="Africa/Brazzaville" value="WAT-1" />
+       <zone name="Africa/Bujumbura" value="CAT-2" />
+       <zone name="Africa/Cairo" value="EEST" />
+       <zone name="Africa/Casablanca" value="WET0WEST,M3.5.0,M10.5.0/3" />
+       <zone name="Africa/Ceuta" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Africa/Conakry" value="GMT0" />
+       <zone name="Africa/Dakar" value="GMT0" />
+       <zone name="Africa/Dar_es_Salaam" value="EAT-3" />
+       <zone name="Africa/Djibouti" value="EAT-3" />
+       <zone name="Africa/Douala" value="WAT-1" />
+       <zone name="Africa/El_Aaiun" value="WET0WEST,M3.5.0,M10.5.0/3" />
+       <zone name="Africa/Freetown" value="GMT0" />
+       <zone name="Africa/Gaborone" value="CAT-2" />
+       <zone name="Africa/Harare" value="CAT-2" />
+       <zone name="Africa/Johannesburg" value="SAST-2" />
+       <zone name="Africa/Juba" value="EAT-3" />
+       <zone name="Africa/Kampala" value="EAT-3" />
+       <zone name="Africa/Khartoum" value="EAT-3" />
+       <zone name="Africa/Kigali" value="CAT-2" />
+       <zone name="Africa/Kinshasa" value="WAT-1" />
+       <zone name="Africa/Lagos" value="WAT-1" />
+       <zone name="Africa/Libreville" value="WAT-1" />
+       <zone name="Africa/Lome" value="GMT0" />
+       <zone name="Africa/Luanda" value="WAT-1" />
+       <zone name="Africa/Lubumbashi" value="CAT-2" />
+       <zone name="Africa/Lusaka" value="CAT-2" />
+       <zone name="Africa/Malabo" value="WAT-1" />
+       <zone name="Africa/Maputo" value="CAT-2" />
+       <zone name="Africa/Maseru" value="SAST-2" />
+       <zone name="Africa/Mbabane" value="SAST-2" />
+       <zone name="Africa/Mogadishu" value="EAT-3" />
+       <zone name="Africa/Monrovia" value="GMT0" />
+       <zone name="Africa/Nairobi" value="EAT-3" />
+       <zone name="Africa/Ndjamena" value="WAT-1" />
+       <zone name="Africa/Niamey" value="WAT-1" />
+       <zone name="Africa/Nouakchott" value="GMT0" />
+       <zone name="Africa/Ouagadougou" value="GMT0" />
+       <zone name="Africa/Porto-Novo" value="WAT-1" />
+       <zone name="Africa/Sao_Tome" value="GMT0" />
+       <zone name="Africa/Timbuktu" value="GMT0" />
+       <zone name="Africa/Tripoli" value="EET-2" />
+       <zone name="Africa/Tunis" value="CET-1" />
+       <zone name="Africa/Windhoek" value="WAT-1WAST,M9.1.0,M4.1.0" />
+
+       <zone name="America/Adak" value="HAST10HADT,M3.2.0,M11.1.0" />
+       <zone name="America/Anchorage" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="America/Anguilla" value="AST4" />
+       <zone name="America/Antigua" value="AST4" />
+       <zone name="America/Araguaina" value="BRT3" />
+       <zone name="America/Argentina/Buenos_Aires" value="ART3" />
+       <zone name="America/Argentina/Catamarca" value="ART3" />
+       <zone name="America/Argentina/ComodRivadavia" value="ART3" />
+       <zone name="America/Argentina/Cordoba" value="ART3" />
+       <zone name="America/Argentina/Jujuy" value="ART3" />
+       <zone name="America/Argentina/La_Rioja" value="ART3" />
+       <zone name="America/Argentina/Mendoza" value="ART3" />
+       <zone name="America/Argentina/Rio_Gallegos" value="ART3" />
+       <zone name="America/Argentina/Salta" value="ART3" />
+       <zone name="America/Argentina/San_Juan" value="ART3" />
+       <zone name="America/Argentina/San_Luis" value="ART3" />
+       <zone name="America/Argentina/Tucuman" value="ART3" />
+       <zone name="America/Argentina/Ushuaia" value="ART3" />
+       <zone name="America/Aruba" value="AST4" />
+       <zone name="America/Asuncion" value="PYT4PYST,M10.1.0/0,M3.4.0/0" />
+       <zone name="America/Atikokan" value="EST5" />
+       <zone name="America/Atka" value="HAST10HADT,M3.2.0,M11.1.0" />
+       <zone name="America/Bahia" value="BRT3" />
+       <zone name="America/Bahia_Banderas" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="America/Barbados" value="AST4" />
+       <zone name="America/Belem" value="BRT3" />
+       <zone name="America/Belize" value="CST6" />
+       <zone name="America/Blanc-Sablon" value="AST4" />
+       <zone name="America/Boa_Vista" value="AMT4" />
+       <zone name="America/Bogota" value="COT5" />
+       <zone name="America/Boise" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="America/Buenos_Aires" value="ART3" />
+       <zone name="America/Cambridge_Bay" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="America/Campo_Grande" value="AMT4AMST,M10.3.0/0,M2.3.0/0" />
+       <zone name="America/Cancun" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="America/Caracas" value="VET4:30" />
+       <zone name="America/Catamarca" value="ART3" />
+       <zone name="America/Cayenne" value="GFT3" />
+       <zone name="America/Cayman" value="EST5" />
+       <zone name="America/Chicago" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/Chihuahua" value="MST7MDT,M4.1.0,M10.5.0" />
+       <zone name="America/Coral_Harbour" value="EST5" />
+       <zone name="America/Cordoba" value="ART3" />
+       <zone name="America/Costa_Rica" value="CST6" />
+       <zone name="America/Creston" value="MST7" />
+       <zone name="America/Cuiaba" value="AMT4AMST,M10.3.0/0,M2.3.0/0" />
+       <zone name="America/Curacao" value="AST4" />
+       <zone name="America/Danmarkshavn" value="GMT0" />
+       <zone name="America/Dawson" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="America/Dawson_Creek" value="MST7" />
+       <zone name="America/Denver" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="America/Detroit" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Dominica" value="AST4" />
+       <zone name="America/Edmonton" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="America/Eirunepe" value="ACT5" />
+       <zone name="America/El_Salvador" value="CST6" />
+       <zone name="America/Ensenada" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="America/Fort_Wayne" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Fortaleza" value="BRT3" />
+       <zone name="America/Glace_Bay" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="America/Godthab" value="WGST" />
+       <zone name="America/Goose_Bay" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="America/Grand_Turk" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Grenada" value="AST4" />
+       <zone name="America/Guadeloupe" value="AST4" />
+       <zone name="America/Guatemala" value="CST6" />
+       <zone name="America/Guayaquil" value="ECT5" />
+       <zone name="America/Guyana" value="GYT4" />
+       <zone name="America/Halifax" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="America/Havana" value="CST5CDT,M3.2.0/0,M11.1.0/1" />
+       <zone name="America/Hermosillo" value="MST7" />
+       <zone name="America/Indiana/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Indiana/Knox" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/Indiana/Marengo" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Indiana/Petersburg" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Indiana/Tell_City" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/Indiana/Vevay" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Indiana/Vincennes" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Indiana/Winamac" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Inuvik" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="America/Iqaluit" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Jamaica" value="EST5" />
+       <zone name="America/Jujuy" value="ART3" />
+       <zone name="America/Juneau" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="America/Kentucky/Louisville" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Kentucky/Monticello" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Knox_IN" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/Kralendijk" value="AST4" />
+       <zone name="America/La_Paz" value="BOT4" />
+       <zone name="America/Lima" value="PET5" />
+       <zone name="America/Los_Angeles" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="America/Louisville" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Lower_Princes" value="AST4" />
+       <zone name="America/Maceio" value="BRT3" />
+       <zone name="America/Managua" value="CST6" />
+       <zone name="America/Manaus" value="AMT4" />
+       <zone name="America/Marigot" value="AST4" />
+       <zone name="America/Martinique" value="AST4" />
+       <zone name="America/Matamoros" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/Mazatlan" value="MST7MDT,M4.1.0,M10.5.0" />
+       <zone name="America/Mendoza" value="ART3" />
+       <zone name="America/Menominee" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/Merida" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="America/Metlakatla" value="MeST8" />
+       <zone name="America/Mexico_City" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="America/Miquelon" value="PMST3PMDT,M3.2.0,M11.1.0" />
+       <zone name="America/Moncton" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="America/Monterrey" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="America/Montevideo" value="UYT3UYST,M10.1.0,M3.2.0" />
+       <zone name="America/Montreal" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Montserrat" value="AST4" />
+       <zone name="America/Nassau" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/New_York" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Nipigon" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Nome" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="America/Noronha" value="FNT2" />
+       <zone name="America/North_Dakota/Beulah" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/North_Dakota/Center" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/North_Dakota/New_Salem" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/Ojinaga" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="America/Panama" value="EST5" />
+       <zone name="America/Pangnirtung" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Paramaribo" value="SRT3" />
+       <zone name="America/Phoenix" value="MST7" />
+       <zone name="America/Port-au-Prince" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Port_of_Spain" value="AST4" />
+       <zone name="America/Porto_Acre" value="ACT5" />
+       <zone name="America/Porto_Velho" value="AMT4" />
+       <zone name="America/Puerto_Rico" value="AST4" />
+       <zone name="America/Rainy_River" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/Rankin_Inlet" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/Recife" value="BRT3" />
+       <zone name="America/Regina" value="CST6" />
+       <zone name="America/Resolute" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/Rio_Branco" value="ACT5" />
+       <zone name="America/Rosario" value="ART3" />
+       <zone name="America/Santa_Isabel" value="PST8PDT,M4.1.0,M10.5.0" />
+       <zone name="America/Santarem" value="BRT3" />
+       <zone name="America/Santiago" value="CLST" />
+       <zone name="America/Santo_Domingo" value="AST4" />
+       <zone name="America/Sao_Paulo" value="BRT3BRST,M10.3.0/0,M2.3.0/0" />
+       <zone name="America/Scoresbysund" value="EGT1EGST,M3.5.0/0,M10.5.0/1" />
+       <zone name="America/Shiprock" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="America/Sitka" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="America/St_Barthelemy" value="AST4" />
+       <zone name="America/St_Johns" value="NST3:30NDT,M3.2.0,M11.1.0" />
+       <zone name="America/St_Kitts" value="AST4" />
+       <zone name="America/St_Lucia" value="AST4" />
+       <zone name="America/St_Thomas" value="AST4" />
+       <zone name="America/St_Vincent" value="AST4" />
+       <zone name="America/Swift_Current" value="CST6" />
+       <zone name="America/Tegucigalpa" value="CST6" />
+       <zone name="America/Thule" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="America/Thunder_Bay" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Tijuana" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="America/Toronto" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="America/Tortola" value="AST4" />
+       <zone name="America/Vancouver" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="America/Virgin" value="AST4" />
+       <zone name="America/Whitehorse" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="America/Winnipeg" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="America/Yakutat" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="America/Yellowknife" value="MST7MDT,M3.2.0,M11.1.0" />
+
+       <zone name="Antarctica/Casey" value="WST-8" />
+       <zone name="Antarctica/Davis" value="DAVT-7" />
+       <zone name="Antarctica/DumontDUrville" value="DDUT-10" />
+       <zone name="Antarctica/Macquarie" value="MIST-11" />
+       <zone name="Antarctica/Mawson" value="MAWT-5" />
+       <zone name="Antarctica/McMurdo" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
+       <zone name="Antarctica/Palmer" value="CLST" />
+       <zone name="Antarctica/Rothera" value="ROTT3" />
+       <zone name="Antarctica/South_Pole" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
+       <zone name="Antarctica/Syowa" value="SYOT-3" />
+       <zone name="Antarctica/Troll" value="UTC0CEST-2,M3.5.0/1,M10.5.0/3" />
+       <zone name="Antarctica/Vostok" value="VOST-6" />
+
+       <zone name="Arctic/Longyearbyen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+
+       <zone name="Asia/Aden" value="AST-3" />
+       <zone name="Asia/Almaty" value="ALMT-6" />
+       <zone name="Asia/Amman" value="EEST" />
+       <zone name="Asia/Anadyr" value="ANAT-12" />
+       <zone name="Asia/Aqtau" value="AQTT-5" />
+       <zone name="Asia/Aqtobe" value="AQTT-5" />
+       <zone name="Asia/Ashgabat" value="TMT-5" />
+       <zone name="Asia/Ashkhabad" value="TMT-5" />
+       <zone name="Asia/Baghdad" value="AST-3" />
+       <zone name="Asia/Bahrain" value="AST-3" />
+       <zone name="Asia/Baku" value="AZT-4AZST,M3.5.0/4,M10.5.0/5" />
+       <zone name="Asia/Bangkok" value="ICT-7" />
+       <zone name="Asia/Beirut" value="EET-2EEST,M3.5.0/0,M10.5.0/0" />
+       <zone name="Asia/Bishkek" value="KGT-6" />
+       <zone name="Asia/Brunei" value="BNT-8" />
+       <zone name="Asia/Calcutta" value="IST-5:30" />
+       <zone name="Asia/Choibalsan" value="CHOT-8" />
+       <zone name="Asia/Chongqing" value="CST-8" />
+       <zone name="Asia/Chungking" value="CST-8" />
+       <zone name="Asia/Colombo" value="IST-5:30" />
+       <zone name="Asia/Dacca" value="BDT-6" />
+       <zone name="Asia/Damascus" value="EET-2EEST,M3.5.5/0,M10.5.5/0" />
+       <zone name="Asia/Dhaka" value="BDT-6" />
+       <zone name="Asia/Dili" value="TLT-9" />
+       <zone name="Asia/Dubai" value="GST-4" />
+       <zone name="Asia/Dushanbe" value="TJT-5" />
+       <zone name="Asia/Gaza" value="EEST" />
+       <zone name="Asia/Harbin" value="CST-8" />
+       <zone name="Asia/Hebron" value="EEST" />
+       <zone name="Asia/Ho_Chi_Minh" value="ICT-7" />
+       <zone name="Asia/Hong_Kong" value="HKT-8" />
+       <zone name="Asia/Hovd" value="HOVT-7" />
+       <zone name="Asia/Irkutsk" value="IRKT-9" />
+       <zone name="Asia/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Asia/Jakarta" value="WIB-7" />
+       <zone name="Asia/Jayapura" value="WIT-9" />
+       <zone name="Asia/Jerusalem" value="IDDT" />
+       <zone name="Asia/Kabul" value="AFT-4:30" />
+       <zone name="Asia/Kamchatka" value="PETT-12" />
+       <zone name="Asia/Karachi" value="PKT-5" />
+       <zone name="Asia/Kashgar" value="CST-8" />
+       <zone name="Asia/Kathmandu" value="NPT-5:45" />
+       <zone name="Asia/Katmandu" value="NPT-5:45" />
+       <zone name="Asia/Khandyga" value="YAKT-10" />
+       <zone name="Asia/Kolkata" value="IST-5:30" />
+       <zone name="Asia/Krasnoyarsk" value="KRAT-8" />
+       <zone name="Asia/Kuala_Lumpur" value="MYT-8" />
+       <zone name="Asia/Kuching" value="MYT-8" />
+       <zone name="Asia/Kuwait" value="AST-3" />
+       <zone name="Asia/Macao" value="CST-8" />
+       <zone name="Asia/Macau" value="CST-8" />
+       <zone name="Asia/Magadan" value="MAGT-12" />
+       <zone name="Asia/Makassar" value="WITA-8" />
+       <zone name="Asia/Manila" value="PHT-8" />
+       <zone name="Asia/Muscat" value="GST-4" />
+       <zone name="Asia/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Asia/Novokuznetsk" value="NOVT-7" />
+       <zone name="Asia/Novosibirsk" value="NOVT-7" />
+       <zone name="Asia/Omsk" value="OMST-7" />
+       <zone name="Asia/Oral" value="ORAT-5" />
+       <zone name="Asia/Phnom_Penh" value="ICT-7" />
+       <zone name="Asia/Pontianak" value="WIB-7" />
+       <zone name="Asia/Pyongyang" value="KST-9" />
+       <zone name="Asia/Qatar" value="AST-3" />
+       <zone name="Asia/Qyzylorda" value="QYZT-6" />
+       <zone name="Asia/Rangoon" value="MMT-6:30" />
+       <zone name="Asia/Riyadh" value="AST-3" />
+       <zone name="Asia/Saigon" value="ICT-7" />
+       <zone name="Asia/Sakhalin" value="SAKT-11" />
+       <zone name="Asia/Samarkand" value="UZT-5" />
+       <zone name="Asia/Seoul" value="KST-9" />
+       <zone name="Asia/Shanghai" value="CST-8" />
+       <zone name="Asia/Singapore" value="SGT-8" />
+       <zone name="Asia/Taipei" value="CST-8" />
+       <zone name="Asia/Tashkent" value="UZT-5" />
+       <zone name="Asia/Tbilisi" value="GET-4" />
+       <zone name="Asia/Tehran" value="IRDT" />
+       <zone name="Asia/Tel_Aviv" value="IDDT" />
+       <zone name="Asia/Thimbu" value="BTT-6" />
+       <zone name="Asia/Thimphu" value="BTT-6" />
+       <zone name="Asia/Tokyo" value="JST-9" />
+       <zone name="Asia/Ujung_Pandang" value="WITA-8" />
+       <zone name="Asia/Ulaanbaatar" value="ULAT-8" />
+       <zone name="Asia/Ulan_Bator" value="ULAT-8" />
+       <zone name="Asia/Urumqi" value="CST-8" />
+       <zone name="Asia/Ust-Nera" value="VLAT-11" />
+       <zone name="Asia/Vientiane" value="ICT-7" />
+       <zone name="Asia/Vladivostok" value="VLAT-11" />
+       <zone name="Asia/Yakutsk" value="YAKT-10" />
+       <zone name="Asia/Yekaterinburg" value="YEKT-6" />
+       <zone name="Asia/Yerevan" value="AMT-4" />
+
+       <zone name="Atlantic/Azores" value="AZOT1AZOST,M3.5.0/0,M10.5.0/1" />
+       <zone name="Atlantic/Bermuda" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="Atlantic/Canary" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="Atlantic/Cape_Verde" value="CVT1" />
+       <zone name="Atlantic/Faeroe" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="Atlantic/Faroe" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="Atlantic/Jan_Mayen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Atlantic/Madeira" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="Atlantic/Reykjavik" value="GMT0" />
+       <zone name="Atlantic/South_Georgia" value="GST2" />
+       <zone name="Atlantic/St_Helena" value="GMT0" />
+       <zone name="Atlantic/Stanley" value="FKST3" />
+
+       <zone name="Australia/ACT" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="Australia/Adelaide" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
+       <zone name="Australia/Brisbane" value="EST-10" />
+       <zone name="Australia/Broken_Hill" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
+       <zone name="Australia/Canberra" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="Australia/Currie" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="Australia/Darwin" value="CST-9:30" />
+       <zone name="Australia/Eucla" value="CWST-8:45" />
+       <zone name="Australia/Hobart" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="Australia/LHI" value="LHST-10:30LHST-11,M10.1.0,M4.1.0" />
+       <zone name="Australia/Lindeman" value="EST-10" />
+       <zone name="Australia/Lord_Howe" value="LHST-10:30LHST-11,M10.1.0,M4.1.0" />
+       <zone name="Australia/Melbourne" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="Australia/NSW" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="Australia/North" value="CST-9:30" />
+       <zone name="Australia/Perth" value="WST-8" />
+       <zone name="Australia/Queensland" value="EST-10" />
+       <zone name="Australia/South" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
+       <zone name="Australia/Sydney" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="Australia/Tasmania" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="Australia/Victoria" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="Australia/West" value="WST-8" />
+       <zone name="Australia/Yancowinna" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
+
+       <zone name="Brazil/Acre" value="ACT5" />
+       <zone name="Brazil/DeNoronha" value="FNT2" />
+       <zone name="Brazil/East" value="BRT3BRST,M10.3.0/0,M2.3.0/0" />
+       <zone name="Brazil/West" value="AMT4" />
+
+       <zone name="CET" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+
+       <zone name="CST6CDT" value="CST6CDT,M3.2.0,M11.1.0" />
+
+       <zone name="Canada/Atlantic" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="Canada/Central" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="Canada/East-Saskatchewan" value="CST6" />
+       <zone name="Canada/Eastern" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="Canada/Mountain" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="Canada/Newfoundland" value="NST3:30NDT,M3.2.0,M11.1.0" />
+       <zone name="Canada/Pacific" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="Canada/Saskatchewan" value="CST6" />
+       <zone name="Canada/Yukon" value="PST8PDT,M3.2.0,M11.1.0" />
+
+       <zone name="Chile/Continental" value="CLST" />
+       <zone name="Chile/EasterIsland" value="EASST" />
+
+       <zone name="Cuba" value="CST5CDT,M3.2.0/0,M11.1.0/1" />
+
+       <zone name="EET" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+
+       <zone name="EST" value="EST5" />
+
+       <zone name="EST5EDT" value="EST5EDT,M3.2.0,M11.1.0" />
+
+       <zone name="Egypt" value="EEST" />
+
+       <zone name="Eire" value="GMT0IST,M3.5.0/1,M10.5.0" />
+
+       <zone name="Etc/GMT" value="GMT0" />
+       <zone name="Etc/GMT+0" value="GMT0" />
+       <zone name="Etc/GMT+1" value="<GMT+1>1" />
+       <zone name="Etc/GMT+10" value="<GMT+10>10" />
+       <zone name="Etc/GMT+11" value="<GMT+11>11" />
+       <zone name="Etc/GMT+12" value="<GMT+12>12" />
+       <zone name="Etc/GMT+2" value="<GMT+2>2" />
+       <zone name="Etc/GMT+3" value="<GMT+3>3" />
+       <zone name="Etc/GMT+4" value="<GMT+4>4" />
+       <zone name="Etc/GMT+5" value="<GMT+5>5" />
+       <zone name="Etc/GMT+6" value="<GMT+6>6" />
+       <zone name="Etc/GMT+7" value="<GMT+7>7" />
+       <zone name="Etc/GMT+8" value="<GMT+8>8" />
+       <zone name="Etc/GMT+9" value="<GMT+9>9" />
+       <zone name="Etc/GMT-0" value="GMT0" />
+       <zone name="Etc/GMT-1" value="<GMT-1>-1" />
+       <zone name="Etc/GMT-10" value="<GMT-10>-10" />
+       <zone name="Etc/GMT-11" value="<GMT-11>-11" />
+       <zone name="Etc/GMT-12" value="<GMT-12>-12" />
+       <zone name="Etc/GMT-13" value="<GMT-13>-13" />
+       <zone name="Etc/GMT-14" value="<GMT-14>-14" />
+       <zone name="Etc/GMT-2" value="<GMT-2>-2" />
+       <zone name="Etc/GMT-3" value="<GMT-3>-3" />
+       <zone name="Etc/GMT-4" value="<GMT-4>-4" />
+       <zone name="Etc/GMT-5" value="<GMT-5>-5" />
+       <zone name="Etc/GMT-6" value="<GMT-6>-6" />
+       <zone name="Etc/GMT-7" value="<GMT-7>-7" />
+       <zone name="Etc/GMT-8" value="<GMT-8>-8" />
+       <zone name="Etc/GMT-9" value="<GMT-9>-9" />
+       <zone name="Etc/GMT0" value="GMT0" />
+       <zone name="Etc/Greenwich" value="GMT0" />
+       <zone name="Etc/UCT" value="UCT0" />
+       <zone name="Etc/UTC" value="UTC0" />
+       <zone name="Etc/Universal" value="UTC0" />
+       <zone name="Etc/Zulu" value="UTC0" />
+
+       <zone name="Europe/Amsterdam" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Andorra" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Athens" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Belfast" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="Europe/Belgrade" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Berlin" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Bratislava" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Brussels" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Bucharest" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Budapest" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Busingen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Chisinau" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Copenhagen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Dublin" value="GMT0IST,M3.5.0/1,M10.5.0" />
+       <zone name="Europe/Gibraltar" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Guernsey" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="Europe/Helsinki" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Isle_of_Man" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="Europe/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Jersey" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="Europe/Kaliningrad" value="FET-3" />
+       <zone name="Europe/Kiev" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Lisbon" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="Europe/Ljubljana" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/London" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="Europe/Luxembourg" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Madrid" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Malta" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Mariehamn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Minsk" value="FET-3" />
+       <zone name="Europe/Monaco" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Moscow" value="MSK-4" />
+       <zone name="Europe/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Oslo" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Paris" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Podgorica" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Prague" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Riga" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Rome" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Samara" value="SAMT-4" />
+       <zone name="Europe/San_Marino" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Sarajevo" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Simferopol" value="MSK-4" />
+       <zone name="Europe/Skopje" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Sofia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Stockholm" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Tallinn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Tirane" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Tiraspol" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Uzhgorod" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Vaduz" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Vatican" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Vienna" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Vilnius" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Volgograd" value="VOLT-4" />
+       <zone name="Europe/Warsaw" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Zagreb" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="Europe/Zaporozhye" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="Europe/Zurich" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+
+       <zone name="Factory" value="<Local time zone must be set--see zic manual page>0" />
+
+       <zone name="GB" value="GMT0BST,M3.5.0/1,M10.5.0" />
+
+       <zone name="GB-Eire" value="GMT0BST,M3.5.0/1,M10.5.0" />
+
+       <zone name="GMT" value="GMT0" />
+
+       <zone name="GMT+0" value="GMT0" />
+
+       <zone name="GMT-0" value="GMT0" />
+
+       <zone name="GMT0" value="GMT0" />
+
+       <zone name="Greenwich" value="GMT0" />
+
+       <zone name="HST" value="HST10" />
+
+       <zone name="Hongkong" value="HKT-8" />
+
+       <zone name="Iceland" value="GMT0" />
+
+       <zone name="Indian/Antananarivo" value="EAT-3" />
+       <zone name="Indian/Chagos" value="IOT-6" />
+       <zone name="Indian/Christmas" value="CXT-7" />
+       <zone name="Indian/Cocos" value="CCT-6:30" />
+       <zone name="Indian/Comoro" value="EAT-3" />
+       <zone name="Indian/Kerguelen" value="TFT-5" />
+       <zone name="Indian/Mahe" value="SCT-4" />
+       <zone name="Indian/Maldives" value="MVT-5" />
+       <zone name="Indian/Mauritius" value="MUT-4" />
+       <zone name="Indian/Mayotte" value="EAT-3" />
+       <zone name="Indian/Reunion" value="RET-4" />
+
+       <zone name="Iran" value="IRDT" />
+
+       <zone name="Israel" value="IDDT" />
+
+       <zone name="Jamaica" value="EST5" />
+
+       <zone name="Japan" value="JST-9" />
+
+       <zone name="Kwajalein" value="MHT-12" />
+
+       <zone name="Libya" value="EET-2" />
+
+       <zone name="MET" value="MET-1MEST,M3.5.0,M10.5.0/3" />
+
+       <zone name="MST" value="MST7" />
+
+       <zone name="MST7MDT" value="MST7MDT,M3.2.0,M11.1.0" />
+
+       <zone name="Mexico/BajaNorte" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="Mexico/BajaSur" value="MST7MDT,M4.1.0,M10.5.0" />
+       <zone name="Mexico/General" value="CST6CDT,M4.1.0,M10.5.0" />
+
+       <zone name="NZ" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
+
+       <zone name="NZ-CHAT" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" />
+
+       <zone name="Navajo" value="MST7MDT,M3.2.0,M11.1.0" />
+
+       <zone name="PRC" value="CST-8" />
+
+       <zone name="PST8PDT" value="PST8PDT,M3.2.0,M11.1.0" />
+
+       <zone name="Pacific/Apia" value="WST-13WSDT,M9.5.0/3,M4.1.0/4" />
+       <zone name="Pacific/Auckland" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
+       <zone name="Pacific/Chatham" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" />
+       <zone name="Pacific/Chuuk" value="CHUT-10" />
+       <zone name="Pacific/Easter" value="EASST" />
+       <zone name="Pacific/Efate" value="VUT-11" />
+       <zone name="Pacific/Enderbury" value="PHOT-13" />
+       <zone name="Pacific/Fakaofo" value="TKT-13" />
+       <zone name="Pacific/Fiji" value="FJST" />
+       <zone name="Pacific/Funafuti" value="TVT-12" />
+       <zone name="Pacific/Galapagos" value="GALT6" />
+       <zone name="Pacific/Gambier" value="GAMT9" />
+       <zone name="Pacific/Guadalcanal" value="SBT-11" />
+       <zone name="Pacific/Guam" value="ChST-10" />
+       <zone name="Pacific/Honolulu" value="HST10" />
+       <zone name="Pacific/Johnston" value="HST10" />
+       <zone name="Pacific/Kiritimati" value="LINT-14" />
+       <zone name="Pacific/Kosrae" value="KOST-11" />
+       <zone name="Pacific/Kwajalein" value="MHT-12" />
+       <zone name="Pacific/Majuro" value="MHT-12" />
+       <zone name="Pacific/Marquesas" value="MART9:30" />
+       <zone name="Pacific/Midway" value="SST11" />
+       <zone name="Pacific/Nauru" value="NRT-12" />
+       <zone name="Pacific/Niue" value="NUT11" />
+       <zone name="Pacific/Norfolk" value="NFT-11:30" />
+       <zone name="Pacific/Noumea" value="NCT-11" />
+       <zone name="Pacific/Pago_Pago" value="SST11" />
+       <zone name="Pacific/Palau" value="PWT-9" />
+       <zone name="Pacific/Pitcairn" value="PST8" />
+       <zone name="Pacific/Pohnpei" value="PONT-11" />
+       <zone name="Pacific/Ponape" value="PONT-11" />
+       <zone name="Pacific/Port_Moresby" value="PGT-10" />
+       <zone name="Pacific/Rarotonga" value="CKT10" />
+       <zone name="Pacific/Saipan" value="ChST-10" />
+       <zone name="Pacific/Samoa" value="SST11" />
+       <zone name="Pacific/Tahiti" value="TAHT10" />
+       <zone name="Pacific/Tarawa" value="GILT-12" />
+       <zone name="Pacific/Tongatapu" value="TOT-13" />
+       <zone name="Pacific/Truk" value="CHUT-10" />
+       <zone name="Pacific/Wake" value="WAKT-12" />
+       <zone name="Pacific/Wallis" value="WFT-12" />
+       <zone name="Pacific/Yap" value="CHUT-10" />
+
+       <zone name="Poland" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+
+       <zone name="Portugal" value="WET0WEST,M3.5.0/1,M10.5.0" />
+
+       <zone name="ROC" value="CST-8" />
+
+       <zone name="ROK" value="KST-9" />
+
+       <zone name="Singapore" value="SGT-8" />
+
+       <zone name="SystemV/AST4" value="AST4" />
+       <zone name="SystemV/AST4ADT" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="SystemV/CST6" value="CST6" />
+       <zone name="SystemV/CST6CDT" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="SystemV/EST5" value="EST5" />
+       <zone name="SystemV/EST5EDT" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="SystemV/HST10" value="HST10" />
+       <zone name="SystemV/MST7" value="MST7" />
+       <zone name="SystemV/MST7MDT" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="SystemV/PST8" value="PST8" />
+       <zone name="SystemV/PST8PDT" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="SystemV/YST9" value="GAMT9" />
+       <zone name="SystemV/YST9YDT" value="AKST9AKDT,M3.2.0,M11.1.0" />
+
+       <zone name="Turkey" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+
+       <zone name="UCT" value="UCT0" />
+
+       <zone name="US/Alaska" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="US/Aleutian" value="HAST10HADT,M3.2.0,M11.1.0" />
+       <zone name="US/Arizona" value="MST7" />
+       <zone name="US/Central" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="US/East-Indiana" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="US/Eastern" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="US/Hawaii" value="HST10" />
+       <zone name="US/Indiana-Starke" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="US/Michigan" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="US/Mountain" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="US/Pacific" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="US/Pacific-New" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="US/Samoa" value="SST11" />
+
+       <zone name="UTC" value="UTC0" />
+
+       <zone name="Universal" value="UTC0" />
+
+       <zone name="W-SU" value="MSK-4" />
+
+       <zone name="WET" value="WET0WEST,M3.5.0/1,M10.5.0" />
+
+       <zone name="Zulu" value="UTC0" />
+
+       <zone name="localtime" value="CST6CDT,M3.2.0,M11.1.0" />
+
+       <zone name="posix/Africa/Abidjan" value="GMT0" />
+       <zone name="posix/Africa/Accra" value="GMT0" />
+       <zone name="posix/Africa/Addis_Ababa" value="EAT-3" />
+       <zone name="posix/Africa/Algiers" value="CET-1" />
+       <zone name="posix/Africa/Asmara" value="EAT-3" />
+       <zone name="posix/Africa/Asmera" value="EAT-3" />
+       <zone name="posix/Africa/Bamako" value="GMT0" />
+       <zone name="posix/Africa/Bangui" value="WAT-1" />
+       <zone name="posix/Africa/Banjul" value="GMT0" />
+       <zone name="posix/Africa/Bissau" value="GMT0" />
+       <zone name="posix/Africa/Blantyre" value="CAT-2" />
+       <zone name="posix/Africa/Brazzaville" value="WAT-1" />
+       <zone name="posix/Africa/Bujumbura" value="CAT-2" />
+       <zone name="posix/Africa/Cairo" value="EEST" />
+       <zone name="posix/Africa/Casablanca" value="WET0WEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Africa/Ceuta" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Africa/Conakry" value="GMT0" />
+       <zone name="posix/Africa/Dakar" value="GMT0" />
+       <zone name="posix/Africa/Dar_es_Salaam" value="EAT-3" />
+       <zone name="posix/Africa/Djibouti" value="EAT-3" />
+       <zone name="posix/Africa/Douala" value="WAT-1" />
+       <zone name="posix/Africa/El_Aaiun" value="WET0WEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Africa/Freetown" value="GMT0" />
+       <zone name="posix/Africa/Gaborone" value="CAT-2" />
+       <zone name="posix/Africa/Harare" value="CAT-2" />
+       <zone name="posix/Africa/Johannesburg" value="SAST-2" />
+       <zone name="posix/Africa/Juba" value="EAT-3" />
+       <zone name="posix/Africa/Kampala" value="EAT-3" />
+       <zone name="posix/Africa/Khartoum" value="EAT-3" />
+       <zone name="posix/Africa/Kigali" value="CAT-2" />
+       <zone name="posix/Africa/Kinshasa" value="WAT-1" />
+       <zone name="posix/Africa/Lagos" value="WAT-1" />
+       <zone name="posix/Africa/Libreville" value="WAT-1" />
+       <zone name="posix/Africa/Lome" value="GMT0" />
+       <zone name="posix/Africa/Luanda" value="WAT-1" />
+       <zone name="posix/Africa/Lubumbashi" value="CAT-2" />
+       <zone name="posix/Africa/Lusaka" value="CAT-2" />
+       <zone name="posix/Africa/Malabo" value="WAT-1" />
+       <zone name="posix/Africa/Maputo" value="CAT-2" />
+       <zone name="posix/Africa/Maseru" value="SAST-2" />
+       <zone name="posix/Africa/Mbabane" value="SAST-2" />
+       <zone name="posix/Africa/Mogadishu" value="EAT-3" />
+       <zone name="posix/Africa/Monrovia" value="GMT0" />
+       <zone name="posix/Africa/Nairobi" value="EAT-3" />
+       <zone name="posix/Africa/Ndjamena" value="WAT-1" />
+       <zone name="posix/Africa/Niamey" value="WAT-1" />
+       <zone name="posix/Africa/Nouakchott" value="GMT0" />
+       <zone name="posix/Africa/Ouagadougou" value="GMT0" />
+       <zone name="posix/Africa/Porto-Novo" value="WAT-1" />
+       <zone name="posix/Africa/Sao_Tome" value="GMT0" />
+       <zone name="posix/Africa/Timbuktu" value="GMT0" />
+       <zone name="posix/Africa/Tripoli" value="EET-2" />
+       <zone name="posix/Africa/Tunis" value="CET-1" />
+       <zone name="posix/Africa/Windhoek" value="WAT-1WAST,M9.1.0,M4.1.0" />
+       <zone name="posix/America/Adak" value="HAST10HADT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Anchorage" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Anguilla" value="AST4" />
+       <zone name="posix/America/Antigua" value="AST4" />
+       <zone name="posix/America/Araguaina" value="BRT3" />
+       <zone name="posix/America/Argentina/Buenos_Aires" value="ART3" />
+       <zone name="posix/America/Argentina/Catamarca" value="ART3" />
+       <zone name="posix/America/Argentina/ComodRivadavia" value="ART3" />
+       <zone name="posix/America/Argentina/Cordoba" value="ART3" />
+       <zone name="posix/America/Argentina/Jujuy" value="ART3" />
+       <zone name="posix/America/Argentina/La_Rioja" value="ART3" />
+       <zone name="posix/America/Argentina/Mendoza" value="ART3" />
+       <zone name="posix/America/Argentina/Rio_Gallegos" value="ART3" />
+       <zone name="posix/America/Argentina/Salta" value="ART3" />
+       <zone name="posix/America/Argentina/San_Juan" value="ART3" />
+       <zone name="posix/America/Argentina/San_Luis" value="ART3" />
+       <zone name="posix/America/Argentina/Tucuman" value="ART3" />
+       <zone name="posix/America/Argentina/Ushuaia" value="ART3" />
+       <zone name="posix/America/Aruba" value="AST4" />
+       <zone name="posix/America/Asuncion" value="PYT4PYST,M10.1.0/0,M3.4.0/0" />
+       <zone name="posix/America/Atikokan" value="EST5" />
+       <zone name="posix/America/Atka" value="HAST10HADT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Bahia" value="BRT3" />
+       <zone name="posix/America/Bahia_Banderas" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="posix/America/Barbados" value="AST4" />
+       <zone name="posix/America/Belem" value="BRT3" />
+       <zone name="posix/America/Belize" value="CST6" />
+       <zone name="posix/America/Blanc-Sablon" value="AST4" />
+       <zone name="posix/America/Boa_Vista" value="AMT4" />
+       <zone name="posix/America/Bogota" value="COT5" />
+       <zone name="posix/America/Boise" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Buenos_Aires" value="ART3" />
+       <zone name="posix/America/Cambridge_Bay" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Campo_Grande" value="AMT4AMST,M10.3.0/0,M2.3.0/0" />
+       <zone name="posix/America/Cancun" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="posix/America/Caracas" value="VET4:30" />
+       <zone name="posix/America/Catamarca" value="ART3" />
+       <zone name="posix/America/Cayenne" value="GFT3" />
+       <zone name="posix/America/Cayman" value="EST5" />
+       <zone name="posix/America/Chicago" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Chihuahua" value="MST7MDT,M4.1.0,M10.5.0" />
+       <zone name="posix/America/Coral_Harbour" value="EST5" />
+       <zone name="posix/America/Cordoba" value="ART3" />
+       <zone name="posix/America/Costa_Rica" value="CST6" />
+       <zone name="posix/America/Creston" value="MST7" />
+       <zone name="posix/America/Cuiaba" value="AMT4AMST,M10.3.0/0,M2.3.0/0" />
+       <zone name="posix/America/Curacao" value="AST4" />
+       <zone name="posix/America/Danmarkshavn" value="GMT0" />
+       <zone name="posix/America/Dawson" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Dawson_Creek" value="MST7" />
+       <zone name="posix/America/Denver" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Detroit" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Dominica" value="AST4" />
+       <zone name="posix/America/Edmonton" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Eirunepe" value="ACT5" />
+       <zone name="posix/America/El_Salvador" value="CST6" />
+       <zone name="posix/America/Ensenada" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Fort_Wayne" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Fortaleza" value="BRT3" />
+       <zone name="posix/America/Glace_Bay" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Godthab" value="WGST" />
+       <zone name="posix/America/Goose_Bay" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Grand_Turk" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Grenada" value="AST4" />
+       <zone name="posix/America/Guadeloupe" value="AST4" />
+       <zone name="posix/America/Guatemala" value="CST6" />
+       <zone name="posix/America/Guayaquil" value="ECT5" />
+       <zone name="posix/America/Guyana" value="GYT4" />
+       <zone name="posix/America/Halifax" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Havana" value="CST5CDT,M3.2.0/0,M11.1.0/1" />
+       <zone name="posix/America/Hermosillo" value="MST7" />
+       <zone name="posix/America/Indiana/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Indiana/Knox" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Indiana/Marengo" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Indiana/Petersburg" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Indiana/Tell_City" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Indiana/Vevay" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Indiana/Vincennes" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Indiana/Winamac" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Inuvik" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Iqaluit" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Jamaica" value="EST5" />
+       <zone name="posix/America/Jujuy" value="ART3" />
+       <zone name="posix/America/Juneau" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Kentucky/Louisville" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Kentucky/Monticello" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Knox_IN" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Kralendijk" value="AST4" />
+       <zone name="posix/America/La_Paz" value="BOT4" />
+       <zone name="posix/America/Lima" value="PET5" />
+       <zone name="posix/America/Los_Angeles" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Louisville" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Lower_Princes" value="AST4" />
+       <zone name="posix/America/Maceio" value="BRT3" />
+       <zone name="posix/America/Managua" value="CST6" />
+       <zone name="posix/America/Manaus" value="AMT4" />
+       <zone name="posix/America/Marigot" value="AST4" />
+       <zone name="posix/America/Martinique" value="AST4" />
+       <zone name="posix/America/Matamoros" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Mazatlan" value="MST7MDT,M4.1.0,M10.5.0" />
+       <zone name="posix/America/Mendoza" value="ART3" />
+       <zone name="posix/America/Menominee" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Merida" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="posix/America/Metlakatla" value="MeST8" />
+       <zone name="posix/America/Mexico_City" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="posix/America/Miquelon" value="PMST3PMDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Moncton" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Monterrey" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="posix/America/Montevideo" value="UYT3UYST,M10.1.0,M3.2.0" />
+       <zone name="posix/America/Montreal" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Montserrat" value="AST4" />
+       <zone name="posix/America/Nassau" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/New_York" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Nipigon" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Nome" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Noronha" value="FNT2" />
+       <zone name="posix/America/North_Dakota/Beulah" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/North_Dakota/Center" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/North_Dakota/New_Salem" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Ojinaga" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Panama" value="EST5" />
+       <zone name="posix/America/Pangnirtung" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Paramaribo" value="SRT3" />
+       <zone name="posix/America/Phoenix" value="MST7" />
+       <zone name="posix/America/Port-au-Prince" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Port_of_Spain" value="AST4" />
+       <zone name="posix/America/Porto_Acre" value="ACT5" />
+       <zone name="posix/America/Porto_Velho" value="AMT4" />
+       <zone name="posix/America/Puerto_Rico" value="AST4" />
+       <zone name="posix/America/Rainy_River" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Rankin_Inlet" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Recife" value="BRT3" />
+       <zone name="posix/America/Regina" value="CST6" />
+       <zone name="posix/America/Resolute" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Rio_Branco" value="ACT5" />
+       <zone name="posix/America/Rosario" value="ART3" />
+       <zone name="posix/America/Santa_Isabel" value="PST8PDT,M4.1.0,M10.5.0" />
+       <zone name="posix/America/Santarem" value="BRT3" />
+       <zone name="posix/America/Santiago" value="CLST" />
+       <zone name="posix/America/Santo_Domingo" value="AST4" />
+       <zone name="posix/America/Sao_Paulo" value="BRT3BRST,M10.3.0/0,M2.3.0/0" />
+       <zone name="posix/America/Scoresbysund" value="EGT1EGST,M3.5.0/0,M10.5.0/1" />
+       <zone name="posix/America/Shiprock" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Sitka" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/St_Barthelemy" value="AST4" />
+       <zone name="posix/America/St_Johns" value="NST3:30NDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/St_Kitts" value="AST4" />
+       <zone name="posix/America/St_Lucia" value="AST4" />
+       <zone name="posix/America/St_Thomas" value="AST4" />
+       <zone name="posix/America/St_Vincent" value="AST4" />
+       <zone name="posix/America/Swift_Current" value="CST6" />
+       <zone name="posix/America/Tegucigalpa" value="CST6" />
+       <zone name="posix/America/Thule" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Thunder_Bay" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Tijuana" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Toronto" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Tortola" value="AST4" />
+       <zone name="posix/America/Vancouver" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Virgin" value="AST4" />
+       <zone name="posix/America/Whitehorse" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Winnipeg" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Yakutat" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="posix/America/Yellowknife" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Antarctica/Casey" value="WST-8" />
+       <zone name="posix/Antarctica/Davis" value="DAVT-7" />
+       <zone name="posix/Antarctica/DumontDUrville" value="DDUT-10" />
+       <zone name="posix/Antarctica/Macquarie" value="MIST-11" />
+       <zone name="posix/Antarctica/Mawson" value="MAWT-5" />
+       <zone name="posix/Antarctica/McMurdo" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
+       <zone name="posix/Antarctica/Palmer" value="CLST" />
+       <zone name="posix/Antarctica/Rothera" value="ROTT3" />
+       <zone name="posix/Antarctica/South_Pole" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
+       <zone name="posix/Antarctica/Syowa" value="SYOT-3" />
+       <zone name="posix/Antarctica/Troll" value="UTC0CEST-2,M3.5.0/1,M10.5.0/3" />
+       <zone name="posix/Antarctica/Vostok" value="VOST-6" />
+       <zone name="posix/Arctic/Longyearbyen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Asia/Aden" value="AST-3" />
+       <zone name="posix/Asia/Almaty" value="ALMT-6" />
+       <zone name="posix/Asia/Amman" value="EEST" />
+       <zone name="posix/Asia/Anadyr" value="ANAT-12" />
+       <zone name="posix/Asia/Aqtau" value="AQTT-5" />
+       <zone name="posix/Asia/Aqtobe" value="AQTT-5" />
+       <zone name="posix/Asia/Ashgabat" value="TMT-5" />
+       <zone name="posix/Asia/Ashkhabad" value="TMT-5" />
+       <zone name="posix/Asia/Baghdad" value="AST-3" />
+       <zone name="posix/Asia/Bahrain" value="AST-3" />
+       <zone name="posix/Asia/Baku" value="AZT-4AZST,M3.5.0/4,M10.5.0/5" />
+       <zone name="posix/Asia/Bangkok" value="ICT-7" />
+       <zone name="posix/Asia/Beirut" value="EET-2EEST,M3.5.0/0,M10.5.0/0" />
+       <zone name="posix/Asia/Bishkek" value="KGT-6" />
+       <zone name="posix/Asia/Brunei" value="BNT-8" />
+       <zone name="posix/Asia/Calcutta" value="IST-5:30" />
+       <zone name="posix/Asia/Choibalsan" value="CHOT-8" />
+       <zone name="posix/Asia/Chongqing" value="CST-8" />
+       <zone name="posix/Asia/Chungking" value="CST-8" />
+       <zone name="posix/Asia/Colombo" value="IST-5:30" />
+       <zone name="posix/Asia/Dacca" value="BDT-6" />
+       <zone name="posix/Asia/Damascus" value="EET-2EEST,M3.5.5/0,M10.5.5/0" />
+       <zone name="posix/Asia/Dhaka" value="BDT-6" />
+       <zone name="posix/Asia/Dili" value="TLT-9" />
+       <zone name="posix/Asia/Dubai" value="GST-4" />
+       <zone name="posix/Asia/Dushanbe" value="TJT-5" />
+       <zone name="posix/Asia/Gaza" value="EEST" />
+       <zone name="posix/Asia/Harbin" value="CST-8" />
+       <zone name="posix/Asia/Hebron" value="EEST" />
+       <zone name="posix/Asia/Ho_Chi_Minh" value="ICT-7" />
+       <zone name="posix/Asia/Hong_Kong" value="HKT-8" />
+       <zone name="posix/Asia/Hovd" value="HOVT-7" />
+       <zone name="posix/Asia/Irkutsk" value="IRKT-9" />
+       <zone name="posix/Asia/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Asia/Jakarta" value="WIB-7" />
+       <zone name="posix/Asia/Jayapura" value="WIT-9" />
+       <zone name="posix/Asia/Jerusalem" value="IDDT" />
+       <zone name="posix/Asia/Kabul" value="AFT-4:30" />
+       <zone name="posix/Asia/Kamchatka" value="PETT-12" />
+       <zone name="posix/Asia/Karachi" value="PKT-5" />
+       <zone name="posix/Asia/Kashgar" value="CST-8" />
+       <zone name="posix/Asia/Kathmandu" value="NPT-5:45" />
+       <zone name="posix/Asia/Katmandu" value="NPT-5:45" />
+       <zone name="posix/Asia/Khandyga" value="YAKT-10" />
+       <zone name="posix/Asia/Kolkata" value="IST-5:30" />
+       <zone name="posix/Asia/Krasnoyarsk" value="KRAT-8" />
+       <zone name="posix/Asia/Kuala_Lumpur" value="MYT-8" />
+       <zone name="posix/Asia/Kuching" value="MYT-8" />
+       <zone name="posix/Asia/Kuwait" value="AST-3" />
+       <zone name="posix/Asia/Macao" value="CST-8" />
+       <zone name="posix/Asia/Macau" value="CST-8" />
+       <zone name="posix/Asia/Magadan" value="MAGT-12" />
+       <zone name="posix/Asia/Makassar" value="WITA-8" />
+       <zone name="posix/Asia/Manila" value="PHT-8" />
+       <zone name="posix/Asia/Muscat" value="GST-4" />
+       <zone name="posix/Asia/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Asia/Novokuznetsk" value="NOVT-7" />
+       <zone name="posix/Asia/Novosibirsk" value="NOVT-7" />
+       <zone name="posix/Asia/Omsk" value="OMST-7" />
+       <zone name="posix/Asia/Oral" value="ORAT-5" />
+       <zone name="posix/Asia/Phnom_Penh" value="ICT-7" />
+       <zone name="posix/Asia/Pontianak" value="WIB-7" />
+       <zone name="posix/Asia/Pyongyang" value="KST-9" />
+       <zone name="posix/Asia/Qatar" value="AST-3" />
+       <zone name="posix/Asia/Qyzylorda" value="QYZT-6" />
+       <zone name="posix/Asia/Rangoon" value="MMT-6:30" />
+       <zone name="posix/Asia/Riyadh" value="AST-3" />
+       <zone name="posix/Asia/Saigon" value="ICT-7" />
+       <zone name="posix/Asia/Sakhalin" value="SAKT-11" />
+       <zone name="posix/Asia/Samarkand" value="UZT-5" />
+       <zone name="posix/Asia/Seoul" value="KST-9" />
+       <zone name="posix/Asia/Shanghai" value="CST-8" />
+       <zone name="posix/Asia/Singapore" value="SGT-8" />
+       <zone name="posix/Asia/Taipei" value="CST-8" />
+       <zone name="posix/Asia/Tashkent" value="UZT-5" />
+       <zone name="posix/Asia/Tbilisi" value="GET-4" />
+       <zone name="posix/Asia/Tehran" value="IRDT" />
+       <zone name="posix/Asia/Tel_Aviv" value="IDDT" />
+       <zone name="posix/Asia/Thimbu" value="BTT-6" />
+       <zone name="posix/Asia/Thimphu" value="BTT-6" />
+       <zone name="posix/Asia/Tokyo" value="JST-9" />
+       <zone name="posix/Asia/Ujung_Pandang" value="WITA-8" />
+       <zone name="posix/Asia/Ulaanbaatar" value="ULAT-8" />
+       <zone name="posix/Asia/Ulan_Bator" value="ULAT-8" />
+       <zone name="posix/Asia/Urumqi" value="CST-8" />
+       <zone name="posix/Asia/Ust-Nera" value="VLAT-11" />
+       <zone name="posix/Asia/Vientiane" value="ICT-7" />
+       <zone name="posix/Asia/Vladivostok" value="VLAT-11" />
+       <zone name="posix/Asia/Yakutsk" value="YAKT-10" />
+       <zone name="posix/Asia/Yekaterinburg" value="YEKT-6" />
+       <zone name="posix/Asia/Yerevan" value="AMT-4" />
+       <zone name="posix/Atlantic/Azores" value="AZOT1AZOST,M3.5.0/0,M10.5.0/1" />
+       <zone name="posix/Atlantic/Bermuda" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="posix/Atlantic/Canary" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Atlantic/Cape_Verde" value="CVT1" />
+       <zone name="posix/Atlantic/Faeroe" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Atlantic/Faroe" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Atlantic/Jan_Mayen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Atlantic/Madeira" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Atlantic/Reykjavik" value="GMT0" />
+       <zone name="posix/Atlantic/South_Georgia" value="GST2" />
+       <zone name="posix/Atlantic/St_Helena" value="GMT0" />
+       <zone name="posix/Atlantic/Stanley" value="FKST3" />
+       <zone name="posix/Australia/ACT" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Australia/Adelaide" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Australia/Brisbane" value="EST-10" />
+       <zone name="posix/Australia/Broken_Hill" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Australia/Canberra" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Australia/Currie" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Australia/Darwin" value="CST-9:30" />
+       <zone name="posix/Australia/Eucla" value="CWST-8:45" />
+       <zone name="posix/Australia/Hobart" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Australia/LHI" value="LHST-10:30LHST-11,M10.1.0,M4.1.0" />
+       <zone name="posix/Australia/Lindeman" value="EST-10" />
+       <zone name="posix/Australia/Lord_Howe" value="LHST-10:30LHST-11,M10.1.0,M4.1.0" />
+       <zone name="posix/Australia/Melbourne" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Australia/NSW" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Australia/North" value="CST-9:30" />
+       <zone name="posix/Australia/Perth" value="WST-8" />
+       <zone name="posix/Australia/Queensland" value="EST-10" />
+       <zone name="posix/Australia/South" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Australia/Sydney" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Australia/Tasmania" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Australia/Victoria" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Australia/West" value="WST-8" />
+       <zone name="posix/Australia/Yancowinna" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
+       <zone name="posix/Brazil/Acre" value="ACT5" />
+       <zone name="posix/Brazil/DeNoronha" value="FNT2" />
+       <zone name="posix/Brazil/East" value="BRT3BRST,M10.3.0/0,M2.3.0/0" />
+       <zone name="posix/Brazil/West" value="AMT4" />
+       <zone name="posix/CET" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/CST6CDT" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Canada/Atlantic" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="posix/Canada/Central" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Canada/East-Saskatchewan" value="CST6" />
+       <zone name="posix/Canada/Eastern" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Canada/Mountain" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Canada/Newfoundland" value="NST3:30NDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Canada/Pacific" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Canada/Saskatchewan" value="CST6" />
+       <zone name="posix/Canada/Yukon" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Chile/Continental" value="CLST" />
+       <zone name="posix/Chile/EasterIsland" value="EASST" />
+       <zone name="posix/Cuba" value="CST5CDT,M3.2.0/0,M11.1.0/1" />
+       <zone name="posix/EET" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/EST" value="EST5" />
+       <zone name="posix/EST5EDT" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Egypt" value="EEST" />
+       <zone name="posix/Eire" value="GMT0IST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Etc/GMT" value="GMT0" />
+       <zone name="posix/Etc/GMT+0" value="GMT0" />
+       <zone name="posix/Etc/GMT+1" value="<GMT+1>1" />
+       <zone name="posix/Etc/GMT+10" value="<GMT+10>10" />
+       <zone name="posix/Etc/GMT+11" value="<GMT+11>11" />
+       <zone name="posix/Etc/GMT+12" value="<GMT+12>12" />
+       <zone name="posix/Etc/GMT+2" value="<GMT+2>2" />
+       <zone name="posix/Etc/GMT+3" value="<GMT+3>3" />
+       <zone name="posix/Etc/GMT+4" value="<GMT+4>4" />
+       <zone name="posix/Etc/GMT+5" value="<GMT+5>5" />
+       <zone name="posix/Etc/GMT+6" value="<GMT+6>6" />
+       <zone name="posix/Etc/GMT+7" value="<GMT+7>7" />
+       <zone name="posix/Etc/GMT+8" value="<GMT+8>8" />
+       <zone name="posix/Etc/GMT+9" value="<GMT+9>9" />
+       <zone name="posix/Etc/GMT-0" value="GMT0" />
+       <zone name="posix/Etc/GMT-1" value="<GMT-1>-1" />
+       <zone name="posix/Etc/GMT-10" value="<GMT-10>-10" />
+       <zone name="posix/Etc/GMT-11" value="<GMT-11>-11" />
+       <zone name="posix/Etc/GMT-12" value="<GMT-12>-12" />
+       <zone name="posix/Etc/GMT-13" value="<GMT-13>-13" />
+       <zone name="posix/Etc/GMT-14" value="<GMT-14>-14" />
+       <zone name="posix/Etc/GMT-2" value="<GMT-2>-2" />
+       <zone name="posix/Etc/GMT-3" value="<GMT-3>-3" />
+       <zone name="posix/Etc/GMT-4" value="<GMT-4>-4" />
+       <zone name="posix/Etc/GMT-5" value="<GMT-5>-5" />
+       <zone name="posix/Etc/GMT-6" value="<GMT-6>-6" />
+       <zone name="posix/Etc/GMT-7" value="<GMT-7>-7" />
+       <zone name="posix/Etc/GMT-8" value="<GMT-8>-8" />
+       <zone name="posix/Etc/GMT-9" value="<GMT-9>-9" />
+       <zone name="posix/Etc/GMT0" value="GMT0" />
+       <zone name="posix/Etc/Greenwich" value="GMT0" />
+       <zone name="posix/Etc/UCT" value="UCT0" />
+       <zone name="posix/Etc/UTC" value="UTC0" />
+       <zone name="posix/Etc/Universal" value="UTC0" />
+       <zone name="posix/Etc/Zulu" value="UTC0" />
+       <zone name="posix/Europe/Amsterdam" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Andorra" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Athens" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Belfast" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Europe/Belgrade" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Berlin" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Bratislava" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Brussels" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Bucharest" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Budapest" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Busingen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Chisinau" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Copenhagen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Dublin" value="GMT0IST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Europe/Gibraltar" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Guernsey" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Europe/Helsinki" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Isle_of_Man" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Europe/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Jersey" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Europe/Kaliningrad" value="FET-3" />
+       <zone name="posix/Europe/Kiev" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Lisbon" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Europe/Ljubljana" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/London" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Europe/Luxembourg" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Madrid" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Malta" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Mariehamn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Minsk" value="FET-3" />
+       <zone name="posix/Europe/Monaco" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Moscow" value="MSK-4" />
+       <zone name="posix/Europe/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Oslo" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Paris" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Podgorica" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Prague" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Riga" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Rome" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Samara" value="SAMT-4" />
+       <zone name="posix/Europe/San_Marino" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Sarajevo" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Simferopol" value="MSK-4" />
+       <zone name="posix/Europe/Skopje" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Sofia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Stockholm" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Tallinn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Tirane" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Tiraspol" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Uzhgorod" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Vaduz" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Vatican" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Vienna" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Vilnius" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Volgograd" value="VOLT-4" />
+       <zone name="posix/Europe/Warsaw" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Zagreb" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Europe/Zaporozhye" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/Europe/Zurich" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Factory" value="<Local time zone must be set--see zic manual page>0" />
+       <zone name="posix/GB" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/GB-Eire" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/GMT" value="GMT0" />
+       <zone name="posix/GMT+0" value="GMT0" />
+       <zone name="posix/GMT-0" value="GMT0" />
+       <zone name="posix/GMT0" value="GMT0" />
+       <zone name="posix/Greenwich" value="GMT0" />
+       <zone name="posix/HST" value="HST10" />
+       <zone name="posix/Hongkong" value="HKT-8" />
+       <zone name="posix/Iceland" value="GMT0" />
+       <zone name="posix/Indian/Antananarivo" value="EAT-3" />
+       <zone name="posix/Indian/Chagos" value="IOT-6" />
+       <zone name="posix/Indian/Christmas" value="CXT-7" />
+       <zone name="posix/Indian/Cocos" value="CCT-6:30" />
+       <zone name="posix/Indian/Comoro" value="EAT-3" />
+       <zone name="posix/Indian/Kerguelen" value="TFT-5" />
+       <zone name="posix/Indian/Mahe" value="SCT-4" />
+       <zone name="posix/Indian/Maldives" value="MVT-5" />
+       <zone name="posix/Indian/Mauritius" value="MUT-4" />
+       <zone name="posix/Indian/Mayotte" value="EAT-3" />
+       <zone name="posix/Indian/Reunion" value="RET-4" />
+       <zone name="posix/Iran" value="IRDT" />
+       <zone name="posix/Israel" value="IDDT" />
+       <zone name="posix/Jamaica" value="EST5" />
+       <zone name="posix/Japan" value="JST-9" />
+       <zone name="posix/Kwajalein" value="MHT-12" />
+       <zone name="posix/Libya" value="EET-2" />
+       <zone name="posix/MET" value="MET-1MEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/MST" value="MST7" />
+       <zone name="posix/MST7MDT" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Mexico/BajaNorte" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Mexico/BajaSur" value="MST7MDT,M4.1.0,M10.5.0" />
+       <zone name="posix/Mexico/General" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="posix/NZ" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
+       <zone name="posix/NZ-CHAT" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" />
+       <zone name="posix/Navajo" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/PRC" value="CST-8" />
+       <zone name="posix/PST8PDT" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Pacific/Apia" value="WST-13WSDT,M9.5.0/3,M4.1.0/4" />
+       <zone name="posix/Pacific/Auckland" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
+       <zone name="posix/Pacific/Chatham" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" />
+       <zone name="posix/Pacific/Chuuk" value="CHUT-10" />
+       <zone name="posix/Pacific/Easter" value="EASST" />
+       <zone name="posix/Pacific/Efate" value="VUT-11" />
+       <zone name="posix/Pacific/Enderbury" value="PHOT-13" />
+       <zone name="posix/Pacific/Fakaofo" value="TKT-13" />
+       <zone name="posix/Pacific/Fiji" value="FJST" />
+       <zone name="posix/Pacific/Funafuti" value="TVT-12" />
+       <zone name="posix/Pacific/Galapagos" value="GALT6" />
+       <zone name="posix/Pacific/Gambier" value="GAMT9" />
+       <zone name="posix/Pacific/Guadalcanal" value="SBT-11" />
+       <zone name="posix/Pacific/Guam" value="ChST-10" />
+       <zone name="posix/Pacific/Honolulu" value="HST10" />
+       <zone name="posix/Pacific/Johnston" value="HST10" />
+       <zone name="posix/Pacific/Kiritimati" value="LINT-14" />
+       <zone name="posix/Pacific/Kosrae" value="KOST-11" />
+       <zone name="posix/Pacific/Kwajalein" value="MHT-12" />
+       <zone name="posix/Pacific/Majuro" value="MHT-12" />
+       <zone name="posix/Pacific/Marquesas" value="MART9:30" />
+       <zone name="posix/Pacific/Midway" value="SST11" />
+       <zone name="posix/Pacific/Nauru" value="NRT-12" />
+       <zone name="posix/Pacific/Niue" value="NUT11" />
+       <zone name="posix/Pacific/Norfolk" value="NFT-11:30" />
+       <zone name="posix/Pacific/Noumea" value="NCT-11" />
+       <zone name="posix/Pacific/Pago_Pago" value="SST11" />
+       <zone name="posix/Pacific/Palau" value="PWT-9" />
+       <zone name="posix/Pacific/Pitcairn" value="PST8" />
+       <zone name="posix/Pacific/Pohnpei" value="PONT-11" />
+       <zone name="posix/Pacific/Ponape" value="PONT-11" />
+       <zone name="posix/Pacific/Port_Moresby" value="PGT-10" />
+       <zone name="posix/Pacific/Rarotonga" value="CKT10" />
+       <zone name="posix/Pacific/Saipan" value="ChST-10" />
+       <zone name="posix/Pacific/Samoa" value="SST11" />
+       <zone name="posix/Pacific/Tahiti" value="TAHT10" />
+       <zone name="posix/Pacific/Tarawa" value="GILT-12" />
+       <zone name="posix/Pacific/Tongatapu" value="TOT-13" />
+       <zone name="posix/Pacific/Truk" value="CHUT-10" />
+       <zone name="posix/Pacific/Wake" value="WAKT-12" />
+       <zone name="posix/Pacific/Wallis" value="WFT-12" />
+       <zone name="posix/Pacific/Yap" value="CHUT-10" />
+       <zone name="posix/Poland" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="posix/Portugal" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/ROC" value="CST-8" />
+       <zone name="posix/ROK" value="KST-9" />
+       <zone name="posix/Singapore" value="SGT-8" />
+       <zone name="posix/SystemV/AST4" value="AST4" />
+       <zone name="posix/SystemV/AST4ADT" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="posix/SystemV/CST6" value="CST6" />
+       <zone name="posix/SystemV/CST6CDT" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/SystemV/EST5" value="EST5" />
+       <zone name="posix/SystemV/EST5EDT" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/SystemV/HST10" value="HST10" />
+       <zone name="posix/SystemV/MST7" value="MST7" />
+       <zone name="posix/SystemV/MST7MDT" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/SystemV/PST8" value="PST8" />
+       <zone name="posix/SystemV/PST8PDT" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/SystemV/YST9" value="GAMT9" />
+       <zone name="posix/SystemV/YST9YDT" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="posix/Turkey" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="posix/UCT" value="UCT0" />
+       <zone name="posix/US/Alaska" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="posix/US/Aleutian" value="HAST10HADT,M3.2.0,M11.1.0" />
+       <zone name="posix/US/Arizona" value="MST7" />
+       <zone name="posix/US/Central" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/US/East-Indiana" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/US/Eastern" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/US/Hawaii" value="HST10" />
+       <zone name="posix/US/Indiana-Starke" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="posix/US/Michigan" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="posix/US/Mountain" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="posix/US/Pacific" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/US/Pacific-New" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="posix/US/Samoa" value="SST11" />
+       <zone name="posix/UTC" value="UTC0" />
+       <zone name="posix/Universal" value="UTC0" />
+       <zone name="posix/W-SU" value="MSK-4" />
+       <zone name="posix/WET" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="posix/Zulu" value="UTC0" />
+
+       <zone name="posixrules" value="EST5EDT,M3.2.0,M11.1.0" />
+
+       <zone name="right/Africa/Abidjan" value="GMT0" />
+       <zone name="right/Africa/Accra" value="GMT0" />
+       <zone name="right/Africa/Addis_Ababa" value="EAT-3" />
+       <zone name="right/Africa/Algiers" value="CET-1" />
+       <zone name="right/Africa/Asmara" value="EAT-3" />
+       <zone name="right/Africa/Asmera" value="EAT-3" />
+       <zone name="right/Africa/Bamako" value="GMT0" />
+       <zone name="right/Africa/Bangui" value="WAT-1" />
+       <zone name="right/Africa/Banjul" value="GMT0" />
+       <zone name="right/Africa/Bissau" value="GMT0" />
+       <zone name="right/Africa/Blantyre" value="CAT-2" />
+       <zone name="right/Africa/Brazzaville" value="WAT-1" />
+       <zone name="right/Africa/Bujumbura" value="CAT-2" />
+       <zone name="right/Africa/Cairo" value="EEST" />
+       <zone name="right/Africa/Casablanca" value="WET0WEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Africa/Ceuta" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Africa/Conakry" value="GMT0" />
+       <zone name="right/Africa/Dakar" value="GMT0" />
+       <zone name="right/Africa/Dar_es_Salaam" value="EAT-3" />
+       <zone name="right/Africa/Djibouti" value="EAT-3" />
+       <zone name="right/Africa/Douala" value="WAT-1" />
+       <zone name="right/Africa/El_Aaiun" value="WET0WEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Africa/Freetown" value="GMT0" />
+       <zone name="right/Africa/Gaborone" value="CAT-2" />
+       <zone name="right/Africa/Harare" value="CAT-2" />
+       <zone name="right/Africa/Johannesburg" value="SAST-2" />
+       <zone name="right/Africa/Juba" value="EAT-3" />
+       <zone name="right/Africa/Kampala" value="EAT-3" />
+       <zone name="right/Africa/Khartoum" value="EAT-3" />
+       <zone name="right/Africa/Kigali" value="CAT-2" />
+       <zone name="right/Africa/Kinshasa" value="WAT-1" />
+       <zone name="right/Africa/Lagos" value="WAT-1" />
+       <zone name="right/Africa/Libreville" value="WAT-1" />
+       <zone name="right/Africa/Lome" value="GMT0" />
+       <zone name="right/Africa/Luanda" value="WAT-1" />
+       <zone name="right/Africa/Lubumbashi" value="CAT-2" />
+       <zone name="right/Africa/Lusaka" value="CAT-2" />
+       <zone name="right/Africa/Malabo" value="WAT-1" />
+       <zone name="right/Africa/Maputo" value="CAT-2" />
+       <zone name="right/Africa/Maseru" value="SAST-2" />
+       <zone name="right/Africa/Mbabane" value="SAST-2" />
+       <zone name="right/Africa/Mogadishu" value="EAT-3" />
+       <zone name="right/Africa/Monrovia" value="GMT0" />
+       <zone name="right/Africa/Nairobi" value="EAT-3" />
+       <zone name="right/Africa/Ndjamena" value="WAT-1" />
+       <zone name="right/Africa/Niamey" value="WAT-1" />
+       <zone name="right/Africa/Nouakchott" value="GMT0" />
+       <zone name="right/Africa/Ouagadougou" value="GMT0" />
+       <zone name="right/Africa/Porto-Novo" value="WAT-1" />
+       <zone name="right/Africa/Sao_Tome" value="GMT0" />
+       <zone name="right/Africa/Timbuktu" value="GMT0" />
+       <zone name="right/Africa/Tripoli" value="EET-2" />
+       <zone name="right/Africa/Tunis" value="CET-1" />
+       <zone name="right/Africa/Windhoek" value="WAT-1WAST,M9.1.0,M4.1.0" />
+       <zone name="right/America/Adak" value="HAST10HADT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Anchorage" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Anguilla" value="AST4" />
+       <zone name="right/America/Antigua" value="AST4" />
+       <zone name="right/America/Araguaina" value="BRT3" />
+       <zone name="right/America/Argentina/Buenos_Aires" value="ART3" />
+       <zone name="right/America/Argentina/Catamarca" value="ART3" />
+       <zone name="right/America/Argentina/ComodRivadavia" value="ART3" />
+       <zone name="right/America/Argentina/Cordoba" value="ART3" />
+       <zone name="right/America/Argentina/Jujuy" value="ART3" />
+       <zone name="right/America/Argentina/La_Rioja" value="ART3" />
+       <zone name="right/America/Argentina/Mendoza" value="ART3" />
+       <zone name="right/America/Argentina/Rio_Gallegos" value="ART3" />
+       <zone name="right/America/Argentina/Salta" value="ART3" />
+       <zone name="right/America/Argentina/San_Juan" value="ART3" />
+       <zone name="right/America/Argentina/San_Luis" value="ART3" />
+       <zone name="right/America/Argentina/Tucuman" value="ART3" />
+       <zone name="right/America/Argentina/Ushuaia" value="ART3" />
+       <zone name="right/America/Aruba" value="AST4" />
+       <zone name="right/America/Asuncion" value="PYT4PYST,M10.1.0/0,M3.4.0/0" />
+       <zone name="right/America/Atikokan" value="EST5" />
+       <zone name="right/America/Atka" value="HAST10HADT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Bahia" value="BRT3" />
+       <zone name="right/America/Bahia_Banderas" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="right/America/Barbados" value="AST4" />
+       <zone name="right/America/Belem" value="BRT3" />
+       <zone name="right/America/Belize" value="CST6" />
+       <zone name="right/America/Blanc-Sablon" value="AST4" />
+       <zone name="right/America/Boa_Vista" value="AMT4" />
+       <zone name="right/America/Bogota" value="COT5" />
+       <zone name="right/America/Boise" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Buenos_Aires" value="ART3" />
+       <zone name="right/America/Cambridge_Bay" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Campo_Grande" value="AMT4AMST,M10.3.0/0,M2.3.0/0" />
+       <zone name="right/America/Cancun" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="right/America/Caracas" value="VET4:30" />
+       <zone name="right/America/Catamarca" value="ART3" />
+       <zone name="right/America/Cayenne" value="GFT3" />
+       <zone name="right/America/Cayman" value="EST5" />
+       <zone name="right/America/Chicago" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Chihuahua" value="MST7MDT,M4.1.0,M10.5.0" />
+       <zone name="right/America/Coral_Harbour" value="EST5" />
+       <zone name="right/America/Cordoba" value="ART3" />
+       <zone name="right/America/Costa_Rica" value="CST6" />
+       <zone name="right/America/Creston" value="MST7" />
+       <zone name="right/America/Cuiaba" value="AMT4AMST,M10.3.0/0,M2.3.0/0" />
+       <zone name="right/America/Curacao" value="AST4" />
+       <zone name="right/America/Danmarkshavn" value="GMT0" />
+       <zone name="right/America/Dawson" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Dawson_Creek" value="MST7" />
+       <zone name="right/America/Denver" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Detroit" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Dominica" value="AST4" />
+       <zone name="right/America/Edmonton" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Eirunepe" value="ACT5" />
+       <zone name="right/America/El_Salvador" value="CST6" />
+       <zone name="right/America/Ensenada" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Fort_Wayne" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Fortaleza" value="BRT3" />
+       <zone name="right/America/Glace_Bay" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Godthab" value="WGST" />
+       <zone name="right/America/Goose_Bay" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Grand_Turk" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Grenada" value="AST4" />
+       <zone name="right/America/Guadeloupe" value="AST4" />
+       <zone name="right/America/Guatemala" value="CST6" />
+       <zone name="right/America/Guayaquil" value="ECT5" />
+       <zone name="right/America/Guyana" value="GYT4" />
+       <zone name="right/America/Halifax" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Havana" value="CST5CDT,M3.2.0/0,M11.1.0/1" />
+       <zone name="right/America/Hermosillo" value="MST7" />
+       <zone name="right/America/Indiana/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Indiana/Knox" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Indiana/Marengo" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Indiana/Petersburg" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Indiana/Tell_City" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Indiana/Vevay" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Indiana/Vincennes" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Indiana/Winamac" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Inuvik" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Iqaluit" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Jamaica" value="EST5" />
+       <zone name="right/America/Jujuy" value="ART3" />
+       <zone name="right/America/Juneau" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Kentucky/Louisville" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Kentucky/Monticello" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Knox_IN" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Kralendijk" value="AST4" />
+       <zone name="right/America/La_Paz" value="BOT4" />
+       <zone name="right/America/Lima" value="PET5" />
+       <zone name="right/America/Los_Angeles" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Louisville" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Lower_Princes" value="AST4" />
+       <zone name="right/America/Maceio" value="BRT3" />
+       <zone name="right/America/Managua" value="CST6" />
+       <zone name="right/America/Manaus" value="AMT4" />
+       <zone name="right/America/Marigot" value="AST4" />
+       <zone name="right/America/Martinique" value="AST4" />
+       <zone name="right/America/Matamoros" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Mazatlan" value="MST7MDT,M4.1.0,M10.5.0" />
+       <zone name="right/America/Mendoza" value="ART3" />
+       <zone name="right/America/Menominee" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Merida" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="right/America/Metlakatla" value="MeST8" />
+       <zone name="right/America/Mexico_City" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="right/America/Miquelon" value="PMST3PMDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Moncton" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Monterrey" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="right/America/Montevideo" value="UYT3UYST,M10.1.0,M3.2.0" />
+       <zone name="right/America/Montreal" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Montserrat" value="AST4" />
+       <zone name="right/America/Nassau" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/New_York" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Nipigon" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Nome" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Noronha" value="FNT2" />
+       <zone name="right/America/North_Dakota/Beulah" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/North_Dakota/Center" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/North_Dakota/New_Salem" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Ojinaga" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Panama" value="EST5" />
+       <zone name="right/America/Pangnirtung" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Paramaribo" value="SRT3" />
+       <zone name="right/America/Phoenix" value="MST7" />
+       <zone name="right/America/Port-au-Prince" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Port_of_Spain" value="AST4" />
+       <zone name="right/America/Porto_Acre" value="ACT5" />
+       <zone name="right/America/Porto_Velho" value="AMT4" />
+       <zone name="right/America/Puerto_Rico" value="AST4" />
+       <zone name="right/America/Rainy_River" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Rankin_Inlet" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Recife" value="BRT3" />
+       <zone name="right/America/Regina" value="CST6" />
+       <zone name="right/America/Resolute" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Rio_Branco" value="ACT5" />
+       <zone name="right/America/Rosario" value="ART3" />
+       <zone name="right/America/Santa_Isabel" value="PST8PDT,M4.1.0,M10.5.0" />
+       <zone name="right/America/Santarem" value="BRT3" />
+       <zone name="right/America/Santiago" value="CLST" />
+       <zone name="right/America/Santo_Domingo" value="AST4" />
+       <zone name="right/America/Sao_Paulo" value="BRT3BRST,M10.3.0/0,M2.3.0/0" />
+       <zone name="right/America/Scoresbysund" value="EGT1EGST,M3.5.0/0,M10.5.0/1" />
+       <zone name="right/America/Shiprock" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Sitka" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/St_Barthelemy" value="AST4" />
+       <zone name="right/America/St_Johns" value="NST3:30NDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/St_Kitts" value="AST4" />
+       <zone name="right/America/St_Lucia" value="AST4" />
+       <zone name="right/America/St_Thomas" value="AST4" />
+       <zone name="right/America/St_Vincent" value="AST4" />
+       <zone name="right/America/Swift_Current" value="CST6" />
+       <zone name="right/America/Tegucigalpa" value="CST6" />
+       <zone name="right/America/Thule" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Thunder_Bay" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Tijuana" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Toronto" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Tortola" value="AST4" />
+       <zone name="right/America/Vancouver" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Virgin" value="AST4" />
+       <zone name="right/America/Whitehorse" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Winnipeg" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Yakutat" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="right/America/Yellowknife" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/Antarctica/Casey" value="WST-8" />
+       <zone name="right/Antarctica/Davis" value="DAVT-7" />
+       <zone name="right/Antarctica/DumontDUrville" value="DDUT-10" />
+       <zone name="right/Antarctica/Macquarie" value="MIST-11" />
+       <zone name="right/Antarctica/Mawson" value="MAWT-5" />
+       <zone name="right/Antarctica/McMurdo" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
+       <zone name="right/Antarctica/Palmer" value="CLST" />
+       <zone name="right/Antarctica/Rothera" value="ROTT3" />
+       <zone name="right/Antarctica/South_Pole" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
+       <zone name="right/Antarctica/Syowa" value="SYOT-3" />
+       <zone name="right/Antarctica/Troll" value="UTC0CEST-2,M3.5.0/1,M10.5.0/3" />
+       <zone name="right/Antarctica/Vostok" value="VOST-6" />
+       <zone name="right/Arctic/Longyearbyen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Asia/Aden" value="AST-3" />
+       <zone name="right/Asia/Almaty" value="ALMT-6" />
+       <zone name="right/Asia/Amman" value="EEST" />
+       <zone name="right/Asia/Anadyr" value="ANAT-12" />
+       <zone name="right/Asia/Aqtau" value="AQTT-5" />
+       <zone name="right/Asia/Aqtobe" value="AQTT-5" />
+       <zone name="right/Asia/Ashgabat" value="TMT-5" />
+       <zone name="right/Asia/Ashkhabad" value="TMT-5" />
+       <zone name="right/Asia/Baghdad" value="AST-3" />
+       <zone name="right/Asia/Bahrain" value="AST-3" />
+       <zone name="right/Asia/Baku" value="AZT-4AZST,M3.5.0/4,M10.5.0/5" />
+       <zone name="right/Asia/Bangkok" value="ICT-7" />
+       <zone name="right/Asia/Beirut" value="EET-2EEST,M3.5.0/0,M10.5.0/0" />
+       <zone name="right/Asia/Bishkek" value="KGT-6" />
+       <zone name="right/Asia/Brunei" value="BNT-8" />
+       <zone name="right/Asia/Calcutta" value="IST-5:30" />
+       <zone name="right/Asia/Choibalsan" value="CHOT-8" />
+       <zone name="right/Asia/Chongqing" value="CST-8" />
+       <zone name="right/Asia/Chungking" value="CST-8" />
+       <zone name="right/Asia/Colombo" value="IST-5:30" />
+       <zone name="right/Asia/Dacca" value="BDT-6" />
+       <zone name="right/Asia/Damascus" value="EET-2EEST,M3.5.5/0,M10.5.5/0" />
+       <zone name="right/Asia/Dhaka" value="BDT-6" />
+       <zone name="right/Asia/Dili" value="TLT-9" />
+       <zone name="right/Asia/Dubai" value="GST-4" />
+       <zone name="right/Asia/Dushanbe" value="TJT-5" />
+       <zone name="right/Asia/Gaza" value="EEST" />
+       <zone name="right/Asia/Harbin" value="CST-8" />
+       <zone name="right/Asia/Hebron" value="EEST" />
+       <zone name="right/Asia/Ho_Chi_Minh" value="ICT-7" />
+       <zone name="right/Asia/Hong_Kong" value="HKT-8" />
+       <zone name="right/Asia/Hovd" value="HOVT-7" />
+       <zone name="right/Asia/Irkutsk" value="IRKT-9" />
+       <zone name="right/Asia/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Asia/Jakarta" value="WIB-7" />
+       <zone name="right/Asia/Jayapura" value="WIT-9" />
+       <zone name="right/Asia/Jerusalem" value="IDDT" />
+       <zone name="right/Asia/Kabul" value="AFT-4:30" />
+       <zone name="right/Asia/Kamchatka" value="PETT-12" />
+       <zone name="right/Asia/Karachi" value="PKT-5" />
+       <zone name="right/Asia/Kashgar" value="CST-8" />
+       <zone name="right/Asia/Kathmandu" value="NPT-5:45" />
+       <zone name="right/Asia/Katmandu" value="NPT-5:45" />
+       <zone name="right/Asia/Khandyga" value="YAKT-10" />
+       <zone name="right/Asia/Kolkata" value="IST-5:30" />
+       <zone name="right/Asia/Krasnoyarsk" value="KRAT-8" />
+       <zone name="right/Asia/Kuala_Lumpur" value="MYT-8" />
+       <zone name="right/Asia/Kuching" value="MYT-8" />
+       <zone name="right/Asia/Kuwait" value="AST-3" />
+       <zone name="right/Asia/Macao" value="CST-8" />
+       <zone name="right/Asia/Macau" value="CST-8" />
+       <zone name="right/Asia/Magadan" value="MAGT-12" />
+       <zone name="right/Asia/Makassar" value="WITA-8" />
+       <zone name="right/Asia/Manila" value="PHT-8" />
+       <zone name="right/Asia/Muscat" value="GST-4" />
+       <zone name="right/Asia/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Asia/Novokuznetsk" value="NOVT-7" />
+       <zone name="right/Asia/Novosibirsk" value="NOVT-7" />
+       <zone name="right/Asia/Omsk" value="OMST-7" />
+       <zone name="right/Asia/Oral" value="ORAT-5" />
+       <zone name="right/Asia/Phnom_Penh" value="ICT-7" />
+       <zone name="right/Asia/Pontianak" value="WIB-7" />
+       <zone name="right/Asia/Pyongyang" value="KST-9" />
+       <zone name="right/Asia/Qatar" value="AST-3" />
+       <zone name="right/Asia/Qyzylorda" value="QYZT-6" />
+       <zone name="right/Asia/Rangoon" value="MMT-6:30" />
+       <zone name="right/Asia/Riyadh" value="AST-3" />
+       <zone name="right/Asia/Saigon" value="ICT-7" />
+       <zone name="right/Asia/Sakhalin" value="SAKT-11" />
+       <zone name="right/Asia/Samarkand" value="UZT-5" />
+       <zone name="right/Asia/Seoul" value="KST-9" />
+       <zone name="right/Asia/Shanghai" value="CST-8" />
+       <zone name="right/Asia/Singapore" value="SGT-8" />
+       <zone name="right/Asia/Taipei" value="CST-8" />
+       <zone name="right/Asia/Tashkent" value="UZT-5" />
+       <zone name="right/Asia/Tbilisi" value="GET-4" />
+       <zone name="right/Asia/Tehran" value="IRDT" />
+       <zone name="right/Asia/Tel_Aviv" value="IDDT" />
+       <zone name="right/Asia/Thimbu" value="BTT-6" />
+       <zone name="right/Asia/Thimphu" value="BTT-6" />
+       <zone name="right/Asia/Tokyo" value="JST-9" />
+       <zone name="right/Asia/Ujung_Pandang" value="WITA-8" />
+       <zone name="right/Asia/Ulaanbaatar" value="ULAT-8" />
+       <zone name="right/Asia/Ulan_Bator" value="ULAT-8" />
+       <zone name="right/Asia/Urumqi" value="CST-8" />
+       <zone name="right/Asia/Ust-Nera" value="VLAT-11" />
+       <zone name="right/Asia/Vientiane" value="ICT-7" />
+       <zone name="right/Asia/Vladivostok" value="VLAT-11" />
+       <zone name="right/Asia/Yakutsk" value="YAKT-10" />
+       <zone name="right/Asia/Yekaterinburg" value="YEKT-6" />
+       <zone name="right/Asia/Yerevan" value="AMT-4" />
+       <zone name="right/Atlantic/Azores" value="AZOT1AZOST,M3.5.0/0,M10.5.0/1" />
+       <zone name="right/Atlantic/Bermuda" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="right/Atlantic/Canary" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Atlantic/Cape_Verde" value="CVT1" />
+       <zone name="right/Atlantic/Faeroe" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Atlantic/Faroe" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Atlantic/Jan_Mayen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Atlantic/Madeira" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Atlantic/Reykjavik" value="GMT0" />
+       <zone name="right/Atlantic/South_Georgia" value="GST2" />
+       <zone name="right/Atlantic/St_Helena" value="GMT0" />
+       <zone name="right/Atlantic/Stanley" value="FKST3" />
+       <zone name="right/Australia/ACT" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Australia/Adelaide" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Australia/Brisbane" value="EST-10" />
+       <zone name="right/Australia/Broken_Hill" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Australia/Canberra" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Australia/Currie" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Australia/Darwin" value="CST-9:30" />
+       <zone name="right/Australia/Eucla" value="CWST-8:45" />
+       <zone name="right/Australia/Hobart" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Australia/LHI" value="LHST-10:30LHST-11,M10.1.0,M4.1.0" />
+       <zone name="right/Australia/Lindeman" value="EST-10" />
+       <zone name="right/Australia/Lord_Howe" value="LHST-10:30LHST-11,M10.1.0,M4.1.0" />
+       <zone name="right/Australia/Melbourne" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Australia/NSW" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Australia/North" value="CST-9:30" />
+       <zone name="right/Australia/Perth" value="WST-8" />
+       <zone name="right/Australia/Queensland" value="EST-10" />
+       <zone name="right/Australia/South" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Australia/Sydney" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Australia/Tasmania" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Australia/Victoria" value="EST-10EST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Australia/West" value="WST-8" />
+       <zone name="right/Australia/Yancowinna" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
+       <zone name="right/Brazil/Acre" value="ACT5" />
+       <zone name="right/Brazil/DeNoronha" value="FNT2" />
+       <zone name="right/Brazil/East" value="BRT3BRST,M10.3.0/0,M2.3.0/0" />
+       <zone name="right/Brazil/West" value="AMT4" />
+       <zone name="right/CET" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/CST6CDT" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/Canada/Atlantic" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="right/Canada/Central" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/Canada/East-Saskatchewan" value="CST6" />
+       <zone name="right/Canada/Eastern" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/Canada/Mountain" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/Canada/Newfoundland" value="NST3:30NDT,M3.2.0,M11.1.0" />
+       <zone name="right/Canada/Pacific" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/Canada/Saskatchewan" value="CST6" />
+       <zone name="right/Canada/Yukon" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/Chile/Continental" value="CLST" />
+       <zone name="right/Chile/EasterIsland" value="EASST" />
+       <zone name="right/Cuba" value="CST5CDT,M3.2.0/0,M11.1.0/1" />
+       <zone name="right/EET" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/EST" value="EST5" />
+       <zone name="right/EST5EDT" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/Egypt" value="EEST" />
+       <zone name="right/Eire" value="GMT0IST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Etc/GMT" value="GMT0" />
+       <zone name="right/Etc/GMT+0" value="GMT0" />
+       <zone name="right/Etc/GMT+1" value="<GMT+1>1" />
+       <zone name="right/Etc/GMT+10" value="<GMT+10>10" />
+       <zone name="right/Etc/GMT+11" value="<GMT+11>11" />
+       <zone name="right/Etc/GMT+12" value="<GMT+12>12" />
+       <zone name="right/Etc/GMT+2" value="<GMT+2>2" />
+       <zone name="right/Etc/GMT+3" value="<GMT+3>3" />
+       <zone name="right/Etc/GMT+4" value="<GMT+4>4" />
+       <zone name="right/Etc/GMT+5" value="<GMT+5>5" />
+       <zone name="right/Etc/GMT+6" value="<GMT+6>6" />
+       <zone name="right/Etc/GMT+7" value="<GMT+7>7" />
+       <zone name="right/Etc/GMT+8" value="<GMT+8>8" />
+       <zone name="right/Etc/GMT+9" value="<GMT+9>9" />
+       <zone name="right/Etc/GMT-0" value="GMT0" />
+       <zone name="right/Etc/GMT-1" value="<GMT-1>-1" />
+       <zone name="right/Etc/GMT-10" value="<GMT-10>-10" />
+       <zone name="right/Etc/GMT-11" value="<GMT-11>-11" />
+       <zone name="right/Etc/GMT-12" value="<GMT-12>-12" />
+       <zone name="right/Etc/GMT-13" value="<GMT-13>-13" />
+       <zone name="right/Etc/GMT-14" value="<GMT-14>-14" />
+       <zone name="right/Etc/GMT-2" value="<GMT-2>-2" />
+       <zone name="right/Etc/GMT-3" value="<GMT-3>-3" />
+       <zone name="right/Etc/GMT-4" value="<GMT-4>-4" />
+       <zone name="right/Etc/GMT-5" value="<GMT-5>-5" />
+       <zone name="right/Etc/GMT-6" value="<GMT-6>-6" />
+       <zone name="right/Etc/GMT-7" value="<GMT-7>-7" />
+       <zone name="right/Etc/GMT-8" value="<GMT-8>-8" />
+       <zone name="right/Etc/GMT-9" value="<GMT-9>-9" />
+       <zone name="right/Etc/GMT0" value="GMT0" />
+       <zone name="right/Etc/Greenwich" value="GMT0" />
+       <zone name="right/Etc/UCT" value="UCT0" />
+       <zone name="right/Etc/UTC" value="UTC0" />
+       <zone name="right/Etc/Universal" value="UTC0" />
+       <zone name="right/Etc/Zulu" value="UTC0" />
+       <zone name="right/Europe/Amsterdam" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Andorra" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Athens" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Belfast" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Europe/Belgrade" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Berlin" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Bratislava" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Brussels" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Bucharest" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Budapest" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Busingen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Chisinau" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Copenhagen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Dublin" value="GMT0IST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Europe/Gibraltar" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Guernsey" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Europe/Helsinki" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Isle_of_Man" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Europe/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Jersey" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Europe/Kaliningrad" value="FET-3" />
+       <zone name="right/Europe/Kiev" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Lisbon" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Europe/Ljubljana" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/London" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Europe/Luxembourg" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Madrid" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Malta" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Mariehamn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Minsk" value="FET-3" />
+       <zone name="right/Europe/Monaco" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Moscow" value="MSK-4" />
+       <zone name="right/Europe/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Oslo" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Paris" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Podgorica" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Prague" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Riga" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Rome" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Samara" value="SAMT-4" />
+       <zone name="right/Europe/San_Marino" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Sarajevo" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Simferopol" value="MSK-4" />
+       <zone name="right/Europe/Skopje" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Sofia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Stockholm" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Tallinn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Tirane" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Tiraspol" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Uzhgorod" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Vaduz" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Vatican" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Vienna" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Vilnius" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Volgograd" value="VOLT-4" />
+       <zone name="right/Europe/Warsaw" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Zagreb" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Europe/Zaporozhye" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/Europe/Zurich" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Factory" value="<Local time zone must be set--see zic manual page>0" />
+       <zone name="right/GB" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="right/GB-Eire" value="GMT0BST,M3.5.0/1,M10.5.0" />
+       <zone name="right/GMT" value="GMT0" />
+       <zone name="right/GMT+0" value="GMT0" />
+       <zone name="right/GMT-0" value="GMT0" />
+       <zone name="right/GMT0" value="GMT0" />
+       <zone name="right/Greenwich" value="GMT0" />
+       <zone name="right/HST" value="HST10" />
+       <zone name="right/Hongkong" value="HKT-8" />
+       <zone name="right/Iceland" value="GMT0" />
+       <zone name="right/Indian/Antananarivo" value="EAT-3" />
+       <zone name="right/Indian/Chagos" value="IOT-6" />
+       <zone name="right/Indian/Christmas" value="CXT-7" />
+       <zone name="right/Indian/Cocos" value="CCT-6:30" />
+       <zone name="right/Indian/Comoro" value="EAT-3" />
+       <zone name="right/Indian/Kerguelen" value="TFT-5" />
+       <zone name="right/Indian/Mahe" value="SCT-4" />
+       <zone name="right/Indian/Maldives" value="MVT-5" />
+       <zone name="right/Indian/Mauritius" value="MUT-4" />
+       <zone name="right/Indian/Mayotte" value="EAT-3" />
+       <zone name="right/Indian/Reunion" value="RET-4" />
+       <zone name="right/Iran" value="IRDT" />
+       <zone name="right/Israel" value="IDDT" />
+       <zone name="right/Jamaica" value="EST5" />
+       <zone name="right/Japan" value="JST-9" />
+       <zone name="right/Kwajalein" value="MHT-12" />
+       <zone name="right/Libya" value="EET-2" />
+       <zone name="right/MET" value="MET-1MEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/MST" value="MST7" />
+       <zone name="right/MST7MDT" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/Mexico/BajaNorte" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/Mexico/BajaSur" value="MST7MDT,M4.1.0,M10.5.0" />
+       <zone name="right/Mexico/General" value="CST6CDT,M4.1.0,M10.5.0" />
+       <zone name="right/NZ" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
+       <zone name="right/NZ-CHAT" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" />
+       <zone name="right/Navajo" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/PRC" value="CST-8" />
+       <zone name="right/PST8PDT" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/Pacific/Apia" value="WST-13WSDT,M9.5.0/3,M4.1.0/4" />
+       <zone name="right/Pacific/Auckland" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
+       <zone name="right/Pacific/Chatham" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" />
+       <zone name="right/Pacific/Chuuk" value="CHUT-10" />
+       <zone name="right/Pacific/Easter" value="EASST" />
+       <zone name="right/Pacific/Efate" value="VUT-11" />
+       <zone name="right/Pacific/Enderbury" value="PHOT-13" />
+       <zone name="right/Pacific/Fakaofo" value="TKT-13" />
+       <zone name="right/Pacific/Fiji" value="FJST" />
+       <zone name="right/Pacific/Funafuti" value="TVT-12" />
+       <zone name="right/Pacific/Galapagos" value="GALT6" />
+       <zone name="right/Pacific/Gambier" value="GAMT9" />
+       <zone name="right/Pacific/Guadalcanal" value="SBT-11" />
+       <zone name="right/Pacific/Guam" value="ChST-10" />
+       <zone name="right/Pacific/Honolulu" value="HST10" />
+       <zone name="right/Pacific/Johnston" value="HST10" />
+       <zone name="right/Pacific/Kiritimati" value="LINT-14" />
+       <zone name="right/Pacific/Kosrae" value="KOST-11" />
+       <zone name="right/Pacific/Kwajalein" value="MHT-12" />
+       <zone name="right/Pacific/Majuro" value="MHT-12" />
+       <zone name="right/Pacific/Marquesas" value="MART9:30" />
+       <zone name="right/Pacific/Midway" value="SST11" />
+       <zone name="right/Pacific/Nauru" value="NRT-12" />
+       <zone name="right/Pacific/Niue" value="NUT11" />
+       <zone name="right/Pacific/Norfolk" value="NFT-11:30" />
+       <zone name="right/Pacific/Noumea" value="NCT-11" />
+       <zone name="right/Pacific/Pago_Pago" value="SST11" />
+       <zone name="right/Pacific/Palau" value="PWT-9" />
+       <zone name="right/Pacific/Pitcairn" value="PST8" />
+       <zone name="right/Pacific/Pohnpei" value="PONT-11" />
+       <zone name="right/Pacific/Ponape" value="PONT-11" />
+       <zone name="right/Pacific/Port_Moresby" value="PGT-10" />
+       <zone name="right/Pacific/Rarotonga" value="CKT10" />
+       <zone name="right/Pacific/Saipan" value="ChST-10" />
+       <zone name="right/Pacific/Samoa" value="SST11" />
+       <zone name="right/Pacific/Tahiti" value="TAHT10" />
+       <zone name="right/Pacific/Tarawa" value="GILT-12" />
+       <zone name="right/Pacific/Tongatapu" value="TOT-13" />
+       <zone name="right/Pacific/Truk" value="CHUT-10" />
+       <zone name="right/Pacific/Wake" value="WAKT-12" />
+       <zone name="right/Pacific/Wallis" value="WFT-12" />
+       <zone name="right/Pacific/Yap" value="CHUT-10" />
+       <zone name="right/Poland" value="CET-1CEST,M3.5.0,M10.5.0/3" />
+       <zone name="right/Portugal" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="right/ROC" value="CST-8" />
+       <zone name="right/ROK" value="KST-9" />
+       <zone name="right/Singapore" value="SGT-8" />
+       <zone name="right/SystemV/AST4" value="AST4" />
+       <zone name="right/SystemV/AST4ADT" value="AST4ADT,M3.2.0,M11.1.0" />
+       <zone name="right/SystemV/CST6" value="CST6" />
+       <zone name="right/SystemV/CST6CDT" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/SystemV/EST5" value="EST5" />
+       <zone name="right/SystemV/EST5EDT" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/SystemV/HST10" value="HST10" />
+       <zone name="right/SystemV/MST7" value="MST7" />
+       <zone name="right/SystemV/MST7MDT" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/SystemV/PST8" value="PST8" />
+       <zone name="right/SystemV/PST8PDT" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/SystemV/YST9" value="GAMT9" />
+       <zone name="right/SystemV/YST9YDT" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="right/Turkey" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
+       <zone name="right/UCT" value="UCT0" />
+       <zone name="right/US/Alaska" value="AKST9AKDT,M3.2.0,M11.1.0" />
+       <zone name="right/US/Aleutian" value="HAST10HADT,M3.2.0,M11.1.0" />
+       <zone name="right/US/Arizona" value="MST7" />
+       <zone name="right/US/Central" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/US/East-Indiana" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/US/Eastern" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/US/Hawaii" value="HST10" />
+       <zone name="right/US/Indiana-Starke" value="CST6CDT,M3.2.0,M11.1.0" />
+       <zone name="right/US/Michigan" value="EST5EDT,M3.2.0,M11.1.0" />
+       <zone name="right/US/Mountain" value="MST7MDT,M3.2.0,M11.1.0" />
+       <zone name="right/US/Pacific" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/US/Pacific-New" value="PST8PDT,M3.2.0,M11.1.0" />
+       <zone name="right/US/Samoa" value="SST11" />
+       <zone name="right/UTC" value="UTC0" />
+       <zone name="right/Universal" value="UTC0" />
+       <zone name="right/W-SU" value="MSK-4" />
+       <zone name="right/WET" value="WET0WEST,M3.5.0/1,M10.5.0" />
+       <zone name="right/Zulu" value="UTC0" />
+    </timezones>
+</configuration>
diff --git a/conf/testing/autoload_configs/verto.conf.xml b/conf/testing/autoload_configs/verto.conf.xml
new file mode 100644 (file)
index 0000000..772c679
--- /dev/null
@@ -0,0 +1,37 @@
+<configuration name="verto.conf" description="HTML5 Verto Endpoint">
+
+  <settings>
+    <param name="debug" value="0"/>
+  </settings>
+
+  <profiles>
+    <profile name="default">
+      <param name="bind-local" value="$${local_ip_v4}:8081"/>
+      <param name="bind-local" value="$${local_ip_v4}:8082" secure="true"/>
+      <param name="bind-local" value="[$${local_ip_v6}]:8081"/>
+      <param name="bind-local" value="[$${local_ip_v6}]:8082" secure="true"/>
+      <param name="force-register-domain" value="$${domain}"/>
+      <param name="secure-combined" value="$${certs_dir}/wss.pem"/>
+      <param name="secure-chain" value="$${certs_dir}/wss.pem"/>
+      <param name="userauth" value="true"/>
+      <!-- setting this to true will allow anyone to register even with no account so use with care -->
+      <param name="blind-reg" value="false"/>
+      <param name="mcast-ip" value="224.1.1.1"/>
+      <param name="mcast-port" value="1337"/>
+      <param name="rtp-ip" value="$${local_ip_v6}"/>
+      <param name="rtp-ip" value="$${local_ip_v4}"/>
+      <!--  <param name="ext-rtp-ip" value=""/> -->
+      <param name="local-network" value="localnet.auto"/>
+      <param name="outbound-codec-string" value="OPUS,VP8"/>
+      <param name="inbound-codec-string" value="OPUS,VP8"/>
+      <param name="apply-candidate-acl" value="localnet.auto"/>
+      <param name="apply-candidate-acl" value="wan_v6.auto"/>
+      <param name="apply-candidate-acl" value="wan_v4.auto"/>
+      <param name="apply-candidate-acl" value="rfc1918.auto"/>
+      <param name="apply-candidate-acl" value="any_v6.auto"/>
+      <param name="apply-candidate-acl" value="any_v4.auto"/>
+      <param name="timer-name" value="soft"/>
+      
+    </profile>
+  </profiles>
+</configuration>
diff --git a/conf/testing/autoload_configs/voicemail.conf.xml b/conf/testing/autoload_configs/voicemail.conf.xml
new file mode 100644 (file)
index 0000000..33d5a97
--- /dev/null
@@ -0,0 +1,74 @@
+<configuration name="voicemail.conf" description="Voicemail">
+  <settings>
+  </settings>
+  <profiles>
+    <profile name="default">
+      <param name="file-extension" value="wav"/>
+      <param name="terminator-key" value="#"/>
+      <param name="max-login-attempts" value="3"/>
+      <param name="digit-timeout" value="10000"/>
+      <param name="min-record-len" value="3"/>
+      <param name="max-record-len" value="300"/>
+      <param name="max-retries" value="3"/>
+      <param name="tone-spec" value="%(1000, 0, 640)"/>
+      <param name="callback-dialplan" value="XML"/>
+      <param name="callback-context" value="default"/>
+      <param name="play-new-messages-key" value="1"/>
+      <param name="play-saved-messages-key" value="2"/>
+      <!-- play-new-messages-lifo and play-saved-messages-lifo default is false, playing oldest messages first
+          <param name="play-new-messages-lifo" value="false"/>
+          <param name="play-saved-messages-lifo" value="false"/>
+      -->
+      <param name="login-keys" value="0"/>
+      <param name="main-menu-key" value="0"/>
+      <param name="config-menu-key" value="5"/>
+      <param name="record-greeting-key" value="1"/>
+      <param name="choose-greeting-key" value="2"/>
+      <param name="change-pass-key" value="6"/>
+      <param name="record-name-key" value="3"/>
+      <param name="record-file-key" value="3"/>
+      <param name="listen-file-key" value="1"/>
+      <param name="save-file-key" value="2"/>
+      <param name="delete-file-key" value="7"/>
+      <param name="undelete-file-key" value="8"/>
+      <param name="email-key" value="4"/>
+      <param name="pause-key" value="0"/>
+      <param name="restart-key" value="1"/>
+      <param name="ff-key" value="6"/>
+      <param name="rew-key" value="4"/>
+      <param name="skip-greet-key" value="#"/>
+      <param name="previous-message-key" value="1"/>
+      <param name="next-message-key" value="3"/>
+      <param name="skip-info-key" value="*"/>
+      <param name="repeat-message-key" value="0"/>
+      <param name="record-silence-threshold" value="200"/>
+      <param name="record-silence-hits" value="2"/>
+      <param name="web-template-file" value="web-vm.tpl"/>
+      <param name="db-password-override" value="false"/>
+      <param name="allow-empty-password-auth" value="true"/>
+      <!-- if you need to change the sample rate of the recorded files e.g. gmail voicemail player -->
+      <!--<param name="record-sample-rate" value="11025"/>-->
+      <!-- the next two both must be set for this to be enabled
+           the extension is in the format of <dest> [<dialplan>] [<context>]
+       -->
+      <param name="operator-extension" value="operator XML default"/>
+      <param name="operator-key" value="9"/>
+      <param name="vmain-extension" value="vmain XML default"/>
+      <param name="vmain-key" value="*"/>
+      <!-- playback created files as soon as they were recorded by default -->
+      <!--<param name="auto-playback-recordings" value="true"/>-->
+      <email>
+       <param name="template-file" value="voicemail.tpl"/>
+       <param name="notify-template-file" value="notify-voicemail.tpl"/>
+       <!-- this is the format voicemail_time will have -->
+        <param name="date-fmt" value="%A, %B %d %Y, %I %M %p"/>
+        <param name="email-from" value="${voicemail_account}@${voicemail_domain}"/>
+      </email>
+      <!--<param name="storage-dir" value="$${storage_dir}"/>-->
+      <!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
+      <!--<param name="record-comment" value="Your Comment"/>-->
+      <!--<param name="record-title" value="Your Title"/>-->
+      <!--<param name="record-copyright" value="Your Copyright"/>-->
+    </profile>
+  </profiles>
+</configuration> 
diff --git a/conf/testing/chatplan/default.xml b/conf/testing/chatplan/default.xml
new file mode 100644 (file)
index 0000000..da97f18
--- /dev/null
@@ -0,0 +1,7 @@
+<context name="default">
+  <extension name="demo">
+    <condition field="to" expression="^(.*)$">
+      <action application="reply" data="Hello, you said: ${_body}"/>
+    </condition>
+  </extension>
+</context>
diff --git a/conf/testing/dialplan/default.xml b/conf/testing/dialplan/default.xml
new file mode 100644 (file)
index 0000000..5085cbf
--- /dev/null
@@ -0,0 +1,5 @@
+<context name="default">
+  
+  <X-PRE-PROCESS cmd="include" data="default/*.xml"/>
+  
+</context>
diff --git a/conf/testing/dialplan/default/0000_local_extensions.xml b/conf/testing/dialplan/default/0000_local_extensions.xml
new file mode 100644 (file)
index 0000000..3ffeab8
--- /dev/null
@@ -0,0 +1,11 @@
+<extension name="Local_Extension">
+  <condition field="destination_number" expression="^(10[01][0-9])$">
+    <action application="set" data="hangup_after_bridge=true"/>
+    <action application="set" data="continue_on_fail=true"/>
+    <action application="bridge" data="user/$1@${domain_name}"/>
+    <action application="answer"/>
+    <action application="sleep" data="1000"/>
+    <action application="bridge" data="loopback/app=voicemail:default $1 ${dialed_extension}"/>
+  </condition>
+</extension>
+  
diff --git a/conf/testing/dialplan/default/0001_vmain.xml b/conf/testing/dialplan/default/0001_vmain.xml
new file mode 100644 (file)
index 0000000..e43745d
--- /dev/null
@@ -0,0 +1,8 @@
+<extension name="vmain">
+  <condition field="destination_number" expression="^vmain$|^4000$|^\*98$">
+    <action application="answer"/>
+    <action application="sleep" data="1000"/>
+    <action application="voicemail" data="check default ${domain_name}"/>  
+  </condition>
+</extension>
+
diff --git a/conf/testing/dialplan/public.xml b/conf/testing/dialplan/public.xml
new file mode 100644 (file)
index 0000000..0c3eed5
--- /dev/null
@@ -0,0 +1,6 @@
+<context name="public">
+  
+  <X-PRE-PROCESS cmd="include" data="public/*.xml"/>
+  
+</context>
+
diff --git a/conf/testing/dialplan/public/0000_local_extensions.xml b/conf/testing/dialplan/public/0000_local_extensions.xml
new file mode 100644 (file)
index 0000000..a0578f3
--- /dev/null
@@ -0,0 +1,6 @@
+<extension name="public_extensions">
+  <condition field="destination_number" expression="^(10[01][0-9])$">
+    <action application="transfer" data="$1 XML default"/>
+  </condition>
+</extension>
+
diff --git a/conf/testing/directory/default.xml b/conf/testing/directory/default.xml
new file mode 100644 (file)
index 0000000..273d0e6
--- /dev/null
@@ -0,0 +1,21 @@
+<domain name="$${domain}">
+
+  <params>
+    <param name="dial-string" value="{^^:sip_invite_domain=${dialed_domain}:presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(*/${dialed_user}@${dialed_domain})},${verto_contact(${dialed_user}@${dialed_domain}"/>
+    <param name="jsonrpc-allowed-methods" value="verto"/>
+  </params>
+  
+  <variables>
+    <!--<variable name="record_stereo" value="true"/>-->
+  </variables>
+  
+  <groups>
+    <group name="default">
+      <users>
+       <X-PRE-PROCESS cmd="include" data="default/*.xml"/>
+      </users>
+    </group>
+  </groups>
+  
+</domain>
+
diff --git a/conf/testing/directory/default/1000.xml b/conf/testing/directory/default/1000.xml
new file mode 100644 (file)
index 0000000..9bee406
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1000">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1000"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1000"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1000"/>
+      <variable name="effective_caller_id_number" value="1000"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1001.xml b/conf/testing/directory/default/1001.xml
new file mode 100644 (file)
index 0000000..97c1931
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1001">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1001"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1001"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1001"/>
+      <variable name="effective_caller_id_number" value="1001"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1002.xml b/conf/testing/directory/default/1002.xml
new file mode 100644 (file)
index 0000000..d33691d
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1002">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1002"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1002"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1002"/>
+      <variable name="effective_caller_id_number" value="1002"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1003.xml b/conf/testing/directory/default/1003.xml
new file mode 100644 (file)
index 0000000..f8b5926
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1003">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1003"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1003"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1003"/>
+      <variable name="effective_caller_id_number" value="1003"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1004.xml b/conf/testing/directory/default/1004.xml
new file mode 100644 (file)
index 0000000..c3e7da5
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1004">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1004"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1004"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1004"/>
+      <variable name="effective_caller_id_number" value="1004"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1005.xml b/conf/testing/directory/default/1005.xml
new file mode 100644 (file)
index 0000000..0e1165f
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1005">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1005"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1005"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1005"/>
+      <variable name="effective_caller_id_number" value="1005"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1006.xml b/conf/testing/directory/default/1006.xml
new file mode 100644 (file)
index 0000000..beaaa7e
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1006">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1006"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1006"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1006"/>
+      <variable name="effective_caller_id_number" value="1006"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1007.xml b/conf/testing/directory/default/1007.xml
new file mode 100644 (file)
index 0000000..10470a5
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1007">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1007"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1007"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1007"/>
+      <variable name="effective_caller_id_number" value="1007"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1008.xml b/conf/testing/directory/default/1008.xml
new file mode 100644 (file)
index 0000000..0e63fcf
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1008">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1008"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1008"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1008"/>
+      <variable name="effective_caller_id_number" value="1008"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1009.xml b/conf/testing/directory/default/1009.xml
new file mode 100644 (file)
index 0000000..24db7f8
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1009">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1009"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1009"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1009"/>
+      <variable name="effective_caller_id_number" value="1009"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1010.xml b/conf/testing/directory/default/1010.xml
new file mode 100644 (file)
index 0000000..6d8e0c1
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1010">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1010"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1010"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1010"/>
+      <variable name="effective_caller_id_number" value="1010"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1011.xml b/conf/testing/directory/default/1011.xml
new file mode 100644 (file)
index 0000000..79d731d
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1011">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1011"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1011"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1011"/>
+      <variable name="effective_caller_id_number" value="1011"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1012.xml b/conf/testing/directory/default/1012.xml
new file mode 100644 (file)
index 0000000..3839824
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1012">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1012"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1012"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1012"/>
+      <variable name="effective_caller_id_number" value="1012"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1013.xml b/conf/testing/directory/default/1013.xml
new file mode 100644 (file)
index 0000000..6f9c8e4
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1013">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1013"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1013"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1013"/>
+      <variable name="effective_caller_id_number" value="1013"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1014.xml b/conf/testing/directory/default/1014.xml
new file mode 100644 (file)
index 0000000..6a554c0
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1014">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1014"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1014"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1014"/>
+      <variable name="effective_caller_id_number" value="1014"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1015.xml b/conf/testing/directory/default/1015.xml
new file mode 100644 (file)
index 0000000..e94b888
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1015">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1015"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1015"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1015"/>
+      <variable name="effective_caller_id_number" value="1015"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1016.xml b/conf/testing/directory/default/1016.xml
new file mode 100644 (file)
index 0000000..4f856fc
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1016">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1016"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1016"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1016"/>
+      <variable name="effective_caller_id_number" value="1016"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1017.xml b/conf/testing/directory/default/1017.xml
new file mode 100644 (file)
index 0000000..b0e43a0
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1017">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1017"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1017"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1017"/>
+      <variable name="effective_caller_id_number" value="1017"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1018.xml b/conf/testing/directory/default/1018.xml
new file mode 100644 (file)
index 0000000..6d70719
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1018">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1018"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1018"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1018"/>
+      <variable name="effective_caller_id_number" value="1018"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/1019.xml b/conf/testing/directory/default/1019.xml
new file mode 100644 (file)
index 0000000..f23a95f
--- /dev/null
@@ -0,0 +1,18 @@
+<include>
+  <user id="1019">
+    <params>
+      <param name="password" value="$${default_password}"/>
+      <param name="vm-password" value="1019"/>
+    </params>
+    <variables>
+      <variable name="toll_allow" value="domestic,international,local"/>
+      <variable name="accountcode" value="1019"/>
+      <variable name="user_context" value="default"/>
+      <variable name="effective_caller_id_name" value="Extension 1019"/>
+      <variable name="effective_caller_id_number" value="1019"/>
+      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
+      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
+      <variable name="callgroup" value="techsupport"/>
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/directory/default/default.xml b/conf/testing/directory/default/default.xml
new file mode 100644 (file)
index 0000000..f9dd424
--- /dev/null
@@ -0,0 +1,7 @@
+<include>
+  <user id="default">
+    <variables>
+      <!--<variable name="numbering_plan" value="$${default_country}"/>-->
+    </variables>
+  </user>
+</include>
diff --git a/conf/testing/freeswitch.xml b/conf/testing/freeswitch.xml
new file mode 100644 (file)
index 0000000..a78af2a
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<document type="freeswitch/xml">
+  <X-PRE-PROCESS cmd="include" data="vars.xml"/>
+
+  <section name="configuration" description="Various Configuration">
+    <X-PRE-PROCESS cmd="include" data="autoload_configs/*.xml"/>
+  </section>
+  
+  <section name="dialplan" description="Regex/XML Dialplan">
+    <X-PRE-PROCESS cmd="include" data="dialplan/*.xml"/>
+  </section>
+
+  <section name="chatplan" description="Regex/XML Chatplan">
+    <X-PRE-PROCESS cmd="include" data="chatplan/*.xml"/>
+  </section>
+
+  <section name="directory" description="User Directory">
+    <X-PRE-PROCESS cmd="include" data="directory/*.xml"/>
+  </section>
+
+  <section name="languages" description="Language Management">
+    <X-PRE-PROCESS cmd="include" data="lang/en/*.xml"/>
+  </section>
+</document>
diff --git a/conf/testing/lang/en/demo/demo-ivr.xml b/conf/testing/lang/en/demo/demo-ivr.xml
new file mode 100644 (file)
index 0000000..98f155a
--- /dev/null
@@ -0,0 +1,156 @@
+<include>
+
+  <macro name="demo_ivr_count">
+    <input pattern="^(\d+)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-you_have.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-messages.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="demo_ivr_main_menu" pause="100"> <!-- See conf/autoload_config/ivr.conf.xml for an example on how to use this macro in an IVR -->
+    <input pattern="(.*)">
+      <match>
+        <!-- string together several existing sound files to create one long greeting -->
+        <action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
+        <action function="play-file" data="ivr/ivr-this_ivr_will_let_you_test_features.wav"/>
+        <action function="play-file" data="ivr/ivr-you_may_exit_by_hanging_up.wav"/>
+        <!-- note that you can do more than just play files, e.g. have pauses and do TTS -->
+
+        <!-- Menu option 1: Call FreeSWITCH conference-->
+        <action function="play-file" data="ivr/ivr-enter_ext_pound.wav"/>
+        <action function="play-file" data="silence_stream://1500"/>
+        <action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/1.wav"/>
+
+        <!-- Menu option 2: Do FreeSWITCH echo test -->
+        <action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/2.wav"/>
+
+        <!-- Menu option 3: Listen to Music on Hold -->
+        <action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/3.wav"/>
+
+        <!-- Menu option 4: Register for ClueCon -->
+        <action function="play-file" data="ivr/ivr-register_for_cluecon.wav"/>
+        <action function="play-file" data="digits/4.wav"/>
+
+        <!-- Menu option 5: Listen to screaming monkeys -->
+        <action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/5.wav"/>
+
+        <!-- Menu option 6: Hear a sample submenu -->
+        <action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/6.wav"/>
+
+        <!-- Menu option 9: Repeat these options -->
+        <action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/9.wav"/>
+        <action function="play-file" data="silence_stream://2000"/>
+      </match>
+    </input>
+  </macro>
+
+  <!-- The following macro is the same as demo_ivr_main_menu except it is the "short" version -->
+  <!-- The short version has all the options but not the initial greeting -->
+  <macro name="demo_ivr_main_menu_short" pause="100">
+    <input pattern="(.*)">
+      <match>
+        <!-- Menu option 1: Call FreeSWITCH conference-->
+        <action function="play-file" data="silence_stream://1000"/>
+        <action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/1.wav"/>
+
+        <!-- Menu option 2: Do FreeSWITCH echo test -->
+        <action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/2.wav"/>
+
+        <!-- Menu option 3: Listen to Music on Hold -->
+        <action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/3.wav"/>
+
+        <!-- Menu option 4: Hear a sample submenu -->
+        <action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/4.wav"/>
+
+        <!-- Menu option 5: Listen to screaming monkeys -->
+        <action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/5.wav"/>
+
+        <!-- Menu option 9: Repeat these options -->
+        <action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/9.wav"/>
+        <action function="play-file" data="silence_stream://2000"/>
+      </match>
+    </input>
+  </macro>
+
+  <!-- The following macro is the "long" greeting for the demo_ivr_sub_menu -->
+  <macro name="demo_ivr_sub_menu">
+    <input pattern="(.*)">
+      <match>
+        <action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
+        <action function="play-file" data="ivr/ivr-sample_submenu.wav"/>
+
+        <!-- Menu option *: Return to top menu -->
+        <action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/star.wav"/>
+
+      </match>
+    </input>
+  </macro>
+
+  <!-- The following macro is the same as demo_ivr_sub_menu except it is the "short" version -->
+  <!-- The short version has all the options but not the initial greeting -->
+  <macro name="demo_ivr_sub_menu_short">
+    <input pattern="(.*)">
+      <match>
+        <!-- Menu option *: Return to top menu -->
+        <action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/star.wav"/>
+      </match>
+    </input>
+  </macro>
+
+</include>
+<!--
+For Emacs:
+Local Variables:
+mode:xml
+indent-tabs-mode:nil
+tab-width:2
+c-basic-offset:2
+End:
+For VIM:
+vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
+-->
diff --git a/conf/testing/lang/en/demo/demo.xml b/conf/testing/lang/en/demo/demo.xml
new file mode 100644 (file)
index 0000000..bcfe6a8
--- /dev/null
@@ -0,0 +1,82 @@
+<include>
+  <macro name="msgcount">
+    <input pattern="(.*)">
+      <match>
+        <action function="execute" data="sleep(1000)"/>
+        <action function="play-file" data="voicemail/vm-you_have.wav"/>
+        <action function="say" data="$1" method="pronounced" type="items"/>
+        <action function="play-file" data="voicemail/vm-messages.wav"/>
+        <!-- or -->
+        <!--<action function="speak-text" data="you have $1 messages"/>-->
+      </match>
+    </input>
+  </macro>
+  <macro name="saydate">
+    <input pattern="(.*)">
+      <match>
+        <action function="say" data="$1" method="pronounced" type="current_date_time"/>
+      </match>
+    </input>
+  </macro>
+  <macro name="timespec">
+    <input pattern="(.*)">
+      <match>
+        <action function="say" data="$1" method="pronounced" type="time_measurement"/>
+      </match>
+    </input>
+  </macro>
+  <macro name="ip-addr">
+    <input pattern="(.*)">
+      <match>
+        <action function="say" data="$1" method="iterated" type="ip_address"/>
+        <action function="say" data="$1" method="pronounced" type="ip_address"/>
+      </match>
+    </input>
+  </macro>
+  <macro name="spell">
+    <input pattern="(.*)">
+      <match>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+  <macro name="spell-phonetic">
+    <input pattern="(.*)">
+      <match>
+        <action function="say" data="$1" method="pronounced" type="name_phonetic"/>
+      </match>
+    </input>
+  </macro>
+  <macro name="tts-timeleft">
+    <!-- The parser will visit each <input> tag and execute the actions in <match> or <nomatch> depending on the pattern param -->
+    <!-- If the function "break" is encountered all parsing will cease -->
+    <input pattern="(\d+):(\d+)">
+      <match>
+        <action function="speak-text" data="You have $1 minutes, $2 seconds remaining $strftime(%Y-%m-%d)"/>
+        <action function="break"/>
+      </match>
+      <nomatch>
+        <action function="speak-text" data="That input was invalid."/>
+      </nomatch>
+    </input>
+    <input pattern="(\d+) min (\d+) sec">
+      <match>
+        <action function="speak-text" data="You have $1 minutes, $2 seconds remaining $strftime(%Y-%m-%d)"/>
+      </match>
+      <nomatch>
+        <action function="speak-text" data="That input was invalid."/>
+      </nomatch>
+    </input>
+  </macro>
+</include>
+<!--
+For Emacs:
+Local Variables:
+mode:xml
+indent-tabs-mode:nil
+tab-width:2
+c-basic-offset:2
+End:
+For VIM:
+vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
+-->
diff --git a/conf/testing/lang/en/demo/funnies.xml b/conf/testing/lang/en/demo/funnies.xml
new file mode 100644 (file)
index 0000000..e901c5a
--- /dev/null
@@ -0,0 +1,35 @@
+<include>
+  <macro name="funny_prompts" pause="750">
+    <input pattern="(.*)">
+      <match>
+        <action function="play-file" data="ivr/ivr-wakey_wakey_sunshine.wav"/>
+        <action function="play-file" data="ivr/ivr-no_no_no.wav"/>
+        <action function="play-file" data="ivr/ivr-did_you_mean_to_press_key.wav"/>
+        <action function="play-file" data="ivr/ivr-seriously_mean_to_press_key.wav"/>
+        <action function="play-file" data="ivr/ivr-oh_whatever.wav"/>
+        <action function="play-file" data="ivr/ivr-one_more_mistake.wav"/>
+        <action function="play-file" data="ivr/ivr-congratulations_you_pressed_star.wav"/>
+        <action function="play-file" data="ivr/ivr-engineers_busy_assisting_other_sales.wav"/>
+        <action function="play-file" data="ivr/ivr-message_self_destruct.wav"/>
+        <action function="play-file" data="ivr/ivr-all_your_call_are_belong_to_us.wav"/>
+        <action function="play-file" data="ivr/ivr-love_those_touch_tones.wav"/>
+        <action function="play-file" data="ivr/ivr-yes_we_have_no_bananas.wav"/>
+        <action function="play-file" data="ivr/ivr-dude_you_suck.wav"/>
+        <action function="play-file" data="ivr/ivr-on_hold_indefinitely.wav"/>
+        <action function="play-file" data="ivr/ivr-youre_doing_it_wrong.wav"/>
+        <action function="play-file" data="ivr/ivr-were_asterisk_free.wav"/>
+        <action function="play-file" data="ivr/ivr-douche_telecom.wav"/>
+        <action function="play-file" data="ivr/ivr-asterisk_like_syphilis.wav"/>
+        <action function="play-file" data="ivr/ivr-freeguipy.wav"/>
+        <action function="play-file" data="ivr/ivr-terribly_wrong_awkward.wav"/>
+        <action function="play-file" data="ivr/ivr-it_was_that_bug.wav"/>
+        <action function="play-file" data="ivr/ivr-concentrate.wav"/>
+        <action function="play-file" data="ivr/ivr-founder_of_freesource.wav"/>
+        <action function="play-file" data="ivr/ivr-cold_foolish.wav"/>
+        <action function="play-file" data="ivr/ivr-trollover_minutes.wav"/>
+        <action function="play-file" data="ivr/ivr-yuno_silent_drill.wav"/>
+        <action function="play-file" data="ivr/ivr-beacuase.wav"/>
+      </match>
+    </input>
+  </macro>
+</include>
\ No newline at end of file
diff --git a/conf/testing/lang/en/demo/new-demo-ivr.xml b/conf/testing/lang/en/demo/new-demo-ivr.xml
new file mode 100644 (file)
index 0000000..619d992
--- /dev/null
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<include><!--This line will be ignored it's here to validate the xml and is optional -->
+
+  <macro name="new_demo_ivr_main_menu" pause="100"> <!-- See conf/ivr_menus/ivr.conf.xml for an example on how to use this macro in an IVR -->
+    <input pattern="(.*)">
+      <match>
+        <action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
+        <action function="play-file" data="silence_stream://500"/>
+
+        <!-- Menu option 1: For information about FreeSWITCH... -->
+        <action function="play-file" data="misc/misc-information_about_freeswitch.wav"/>
+        <action function="play-file" data="digits/1.wav"/>
+
+        <!-- Menu option 2: To learn more about FreeSWITCH Solutions... -->
+        <action function="play-file" data="misc/misc-learn_more_about_freeswitch_solutions.wav"/>
+        <action function="play-file" data="digits/2.wav"/>
+
+        <!-- Menu option 3: To hear about ClueCon -->
+        <action function="play-file" data="misc/misc-to_hear_about_cluecon.wav"/>
+        <action function="play-file" data="digits/3.wav"/>
+
+        <!-- Menu option 4: For other options -->
+        <action function="play-file" data="ivr/ivr-for_other_options.wav"/>
+        <action function="play-file" data="digits/4.wav"/>
+
+        <!-- Menu option 9: Repeat these options -->
+        <action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/9.wav"/>
+        <action function="play-file" data="silence_stream://2000"/>
+      </match>
+    </input>
+  </macro>
+
+  <!-- The following macro is the same as new_demo_ivr_main_menu except it is the "short" version -->
+  <!-- The short version has all the options but not the initial greeting -->
+  <macro name="new_demo_ivr_main_menu_short" pause="100"> 
+    <input pattern="(.*)">
+      <match>
+        <!-- Menu option 1: For information about FreeSWITCH... -->
+        <action function="play-file" data="misc/misc-information_about_freeswitch.wav"/>
+        <action function="play-file" data="digits/1.wav"/>
+
+        <!-- Menu option 2: To learn more about FreeSWITCH Solutions... -->
+        <action function="play-file" data="misc/misc-learn_more_about_freeswitch_solutions.wav"/>
+        <action function="play-file" data="digits/2.wav"/>
+
+        <!-- Menu option 3: To hear about ClueCon -->
+        <action function="play-file" data="misc/misc-to_hear_about_cluecon.wav"/>
+        <action function="play-file" data="digits/3.wav"/>
+
+        <!-- Menu option 4: For other options -->
+        <action function="play-file" data="ivr/ivr-for_other_options.wav"/>
+        <action function="play-file" data="digits/4.wav"/>
+
+        <!-- Menu option 9: Repeat these options -->
+        <action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/9.wav"/>
+        <action function="play-file" data="silence_stream://2000"/>
+
+      </match>
+    </input>
+  </macro>
+
+  <!-- More information about FreeSWITCH... -->
+  <macro name="learn_about_freeswitch_sub_menu">
+    <input pattern="(.*)">
+      <match>
+        <!-- Information about FreeSWITCH and OSTAG... -->
+        <action function="play-file" data="misc-freeswitch_is_state_of_the_art.wav"/>
+        <action function="play-file" data="silence_stream://50"/>
+        <action function="play-file" data="misc-it_is_stable_scalable_extensible.wav"/>
+        <action function="play-file" data="silence_stream://50"/>
+        <action function="play-file" data="misc-free_to_download.wav"/>
+        <action function="play-file" data="silence_stream://50"/>
+        <action function="play-file" data="misc-freeswitch_sponsored_by_ostag.wav"/>
+        <action function="play-file" data="silence_stream://50"/>
+        <action function="play-file" data="misc-ostag_learn_more.wav"/>
+        <action function="play-file" data="silence_stream://50"/>
+
+        <!-- Menu option 9: Repeat this information -->
+        <action function="play-file" data="ivr/ivr-repeat_this_information.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/9.wav"/>
+        <action function="play-file" data="silence_stream://2000"/>
+
+        <!-- Menu option *: Return to top menu -->
+        <action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/star.wav"/>
+
+      </match>
+    </input>
+  </macro>
+
+  <!-- More information about FreeSWITCH Solutions... -->
+  <macro name="learn_about_freeswitch_solutions_sub_menu">
+    <input pattern="(.*)">
+      <match>
+        <!-- Information about FreeSWITCH Solutions... -->
+        <action function="play-file" data="[[sounds from tony/brian]]"/>
+        <action function="play-file" data="silence_stream://50"/>
+        <action function="play-file" data="[[sounds from tony/brian]]"/>
+        <action function="play-file" data="silence_stream://50"/>
+        <action function="play-file" data="[[sounds from tony/brian]]"/>
+        <action function="play-file" data="silence_stream://50"/>
+        <action function="play-file" data="[[sounds from tony/brian]]"/>
+        <action function="play-file" data="silence_stream://50"/>
+        <action function="play-file" data="[[sounds from tony/brian]]"/>
+        <action function="play-file" data="silence_stream://50"/>
+
+        <!-- Menu option 9: Repeat this information -->
+        <action function="play-file" data="ivr/ivr-repeat_this_information.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/9.wav"/>
+        <action function="play-file" data="silence_stream://2000"/>
+
+        <!-- Menu option *: Return to top menu -->
+        <action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/star.wav"/>
+
+      </match>
+    </input>
+  </macro>
+
+  <!-- More information about ClueCon -->
+  <macro name="learn_about_cluecon_sub_menu">
+    <input pattern="(.*)">
+      <match>
+        <!-- Information about ClueCon... -->
+        <action function="play-file" data="misc-cluecon_is_premier_conference.wav"/>
+        <action function="play-file" data="silence_stream://50"/>
+        <action function="play-file" data="misc-chicago_each_summer.wav"/>
+        <action function="play-file" data="silence_stream://50"/>
+        <action function="play-file" data="misc-wide_range_of_persons.wav"/>
+        <action function="play-file" data="silence_stream://50"/>
+        <action function="play-file" data="misc-support_open_source_by_attending.wav"/>
+        <action function="play-file" data="silence_stream://500"/>
+        <action function="play-file" data="ivr-register_for_cluecon.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/1.wav"/>
+        <action function="play-file" data="silence_stream://500"/>
+
+        <!-- Menu option 9: Repeat this information -->
+        <action function="play-file" data="ivr/ivr-repeat_this_information.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/9.wav"/>
+        <action function="play-file" data="silence_stream://2000"/>
+
+        <!-- Menu option *: Return to top menu -->
+        <action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
+        <action function="play-file" data="ivr/ivr-please.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="play-file" data="digits/star.wav"/>
+
+      </match>
+    </input>
+  </macro>
+
+
+</include><!--This line will be ignored it's here to validate the xml and is optional -->
diff --git a/conf/testing/lang/en/dir/sounds.xml b/conf/testing/lang/en/dir/sounds.xml
new file mode 100644 (file)
index 0000000..b715a7f
--- /dev/null
@@ -0,0 +1,130 @@
+<include>
+
+  <macro name="directory_intro">
+    <input pattern="^(last_name)" break_on_match="false">
+      <match>
+        <action function="play-file" data="directory/dir-enter_person.wav"/>
+        <action function="play-file" data="directory/dir-last_name.wav"/>
+      </match>
+    </input>
+    <input pattern="^(first_name)" break_on_match="false">
+      <match>
+        <action function="play-file" data="directory/dir-enter_person.wav"/>
+        <action function="play-file" data="directory/dir-first_name.wav"/>
+      </match>
+    </input>
+    <input pattern="^(last_name):([0-9#*])$" break_on_match="false">
+      <match>
+        <action function="play-file" data="directory/dir-to_search_by.wav"/>
+        <action function="play-file" data="directory/dir-first_name.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$2" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+    <input pattern="^(first_name):([0-9#*])$" break_on_match="false">
+      <match>
+        <action function="play-file" data="directory/dir-to_search_by.wav"/>
+        <action function="play-file" data="directory/dir-last_name.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$2" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_min_search_digits">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="directory/dir-specify_mininum.wav"/>
+        <action function="say" data="$1" method="pronounced" type="items"/>
+        <action function="play-file" data="directory/dir-letters_of_person_name.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_count">
+    <input pattern="^0$" break_on_match="true">
+      <match>
+        <action function="play-file" data="directory/dir-no_matching_results.wav"/>
+      </match>
+    </input>
+    <input pattern="^(.*)$">
+      <match>
+        <action function="say" data="$1" method="pronounced" type="items"/>
+        <action function="play-file" data="directory/dir-result_match.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_count_too_large">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="directory/dir-too_many_result.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_last">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="directory/dir-no_more_results.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_item">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="directory/dir-result_number.wav"/>
+        <action function="say" data="$1" method="pronounced" type="items"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_at">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="directory/dir-at_extension.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_menu">
+    <input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
+      <match>
+        <action function="play-file" data="directory/dir-to_select_entry.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="directory/dir-for_next.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$2" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="directory/dir-for_prev.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$3" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="directory/dir-start_new_search.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$4" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_say_name">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+</include>
+<!--
+For Emacs:
+Local Variables:
+mode:xml
+indent-tabs-mode:nil
+tab-width:2
+c-basic-offset:2
+End:
+For VIM:
+vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
+-->
diff --git a/conf/testing/lang/en/dir/tts.xml b/conf/testing/lang/en/dir/tts.xml
new file mode 100644 (file)
index 0000000..d5f112d
--- /dev/null
@@ -0,0 +1,106 @@
+<include>
+
+  <macro name="directory_intro">
+    <input pattern="^(last_name)" break_on_match="false">
+      <match>
+        <action function="speak-text" data="Please enter the first few digit of the person last name"/>
+      </match>
+    </input>
+    <input pattern="^(first_name)" break_on_match="false">
+      <match>
+        <action function="speak-text" data="Please enter the first few digit of the person first name"/>
+      </match>
+    </input>
+    <input pattern="^(last_name):([0-9#*])$" break_on_match="false">
+      <match>
+        <action function="speak-text" data="to search by first name, press $2"/>
+      </match>
+    </input>
+    <input pattern="^(first_name):([0-9#*])$" break_on_match="false">
+      <match>
+        <action function="speak-text" data="to search by last name, press $2"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_min_search_digits">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="You need to specify a minimum the first $1 letters of the person name, try again."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_count">
+    <input pattern="^0$" break_on_match="true">
+      <match>
+        <action function="speak-text" data="Your search match no user on this system, try again."/>
+      </match>
+    </input>
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="$1 result match your search"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_count_too_large">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="Your search returned too many result, please try again"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_last">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="No more result"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_item">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="Result number $1"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_menu">
+    <input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
+      <match>
+        <action function="speak-text" data="To select this entry press $1, for the next entry press $2, for the previous entry press $3, to make a new search press $4"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_at">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="at extension $1"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="directory_result_say_name">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="$1"/>
+      </match>
+    </input>
+  </macro>
+
+</include>
+<!--
+For Emacs:
+Local Variables:
+mode:xml
+indent-tabs-mode:nil
+tab-width:2
+c-basic-offset:2
+End:
+For VIM:
+vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
+-->
diff --git a/conf/testing/lang/en/en.xml b/conf/testing/lang/en/en.xml
new file mode 100644 (file)
index 0000000..3d27bce
--- /dev/null
@@ -0,0 +1,25 @@
+<include>
+  <language name="en" say-module="en" sound-prefix="$${sounds_dir}/en/us/callie" tts-engine="cepstral" tts-voice="callie">
+    <phrases>
+      <macros>
+        <X-PRE-PROCESS cmd="include" data="demo/*.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml -->
+        <!-- voicemail_en_tts is purely implemented with tts, we have the files based one that is the default. -->
+        <X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/> <!-- vm/tts.xml if you want to use tts and have cepstral -->
+        <X-PRE-PROCESS cmd="include" data="dir/sounds.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral -->
+        <X-PRE-PROCESS cmd="include" data="ivr/*.xml"/>  <!-- IVR and custom phrases go here -->
+      </macros>
+      <X-PRE-PROCESS cmd="include" data="vm/voicemail_ivr.xml"/>
+    </phrases>
+  </language>
+</include>
+<!--
+For Emacs:
+Local Variables:
+mode:xml
+indent-tabs-mode:nil
+tab-width:2
+c-basic-offset:2
+End:
+For VIM:
+vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
+-->
diff --git a/conf/testing/lang/en/ivr/sounds.xml b/conf/testing/lang/en/ivr/sounds.xml
new file mode 100644 (file)
index 0000000..9de7fa4
--- /dev/null
@@ -0,0 +1,163 @@
+<include>
+  <macro name="fifo_position">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="ivr/ivr-you_are_number.wav"/>
+        <action function="say" data="${fifo_position}" method="pronounced" type="items"/>
+        <action function="play-file" data="ivr/ivr-in_line.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="queue_position">
+    <input pattern="^(\d+)$">
+      <match>
+        <action function="play-file" data="ivr/ivr-you_are_number.wav"/>
+        <action function="say" data="$1" method="pronounced" type="items"/>
+        <action function="play-file" data="ivr/ivr-in_line.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="has_called_conf">
+    <input pattern="^(\d+)$">
+      <match>
+        <action function="play-file" data="$1"/>
+        <action function="sleep" data="100"/>
+        <action function="play-file" data="conference/conf-has_joined.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="has_left_conf">
+    <input pattern="^(\d+)$">
+      <match>
+        <action function="play-file" data="$1"/>
+        <action function="sleep" data="100"/>
+        <action function="play-file" data="conference/conf-has_left.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="callers_in_conf">
+    <input pattern="^1$" break_on_match="true">
+      <match>
+        <action function="sleep" data="500"/>
+        <!--<action function="play-file" data="ivr/ivr-there_is.wav"/>-->
+        <action function="play-file" data="digits/1.wav"/>
+        <action function="sleep" data="100"/>
+        <action function="play-file" data="conference/conf-listener_in_conference.wav"/>
+      </match>
+    </input>
+    <input pattern="^(\d+)$">
+      <match>
+        <action function="sleep" data="500"/>
+        <action function="play-file" data="ivr/ivr-there_are.wav"/>
+        <action function="say" data="$1" method="pronounced" type="items"/>
+        <action function="sleep" data="100"/>
+        <action function="play-file" data="conference/conf-members_in_conference.wav"/>
+      </match>
+      <nomatch>
+        <action function="sleep" data="500"/>
+        <action function="play-file" data="ivr/ivr-there_are.wav"/>
+        <action function="play-file" data="digits/0.wav"/>
+        <action function="sleep" data="100"/>
+        <action function="play-file" data="conference/conf-members_in_conference.wav"/>
+      </nomatch>
+    </input>
+  </macro>
+
+  <macro name="enter_dest_number">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="sleep" data="1000"/>
+        <action function="play-file" data="ivr/ivr-enter_destination_telephone_number.wav"/>
+        <action function="sleep" data="1000"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="enter_src_number">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="sleep" data="1000"/>
+        <action function="play-file" data="ivr/ivr-enter_source_telephone_number.wav"/>
+        <action function="sleep" data="1000"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="call_forward_set">
+    <input pattern="^(\d+):(\d+)$">
+      <match>
+        <action function="sleep" data="1000"/>
+        <action function="play-file" data="ivr/ivr-extension_number.wav"/>
+        <action function="sleep" data="400"/>
+        <action function="say" data="$1" method="iterated" type="number"/>
+        <action function="sleep" data="400"/>
+        <action function="play-file" data="digits/2.wav"/>
+        <action function="sleep" data="1000"/>
+        <action function="play-file" data="ivr/ivr-extension_number.wav"/>
+        <action function="sleep" data="400"/>
+        <action function="say" data="$2" method="iterated" type="number"/>
+        <action function="sleep" data="1000"/>
+        <action function="play-file" data="ivr/ivr-call_forwarding_has_been_set.wav"/>
+        <action function="sleep" data="1500"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="call_forward_cancel">
+    <input pattern="^(\d+)$">
+      <match>
+        <action function="sleep" data="1000"/>
+        <action function="play-file" data="ivr/ivr-extension_number.wav"/>
+        <action function="sleep" data="400"/>
+        <action function="say" data="$1" method="iterated" type="number"/>
+        <action function="play-file" data="ivr/ivr-call_forwarding_has_been_cancelled.wav"/>
+        <action function="sleep" data="1500"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="screen_confirm">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="sleep" data="500"/>
+        <action function="play-file" data="ivr/ivr-call_from.wav"/>
+        <action function="sleep" data="250"/>
+        <!-- Note, be sure to pass in the full path to the file or else!! -->
+        <action function="play-file" data="$1"/>
+        <action function="sleep" data="500"/>
+        <action function="play-file" data="ivr/ivr-to_accept_press_one.wav"/>
+        <action function="sleep" data="500"/>
+        <action function="play-file" data="ivr/ivr-to_reject.wav"/>
+        <action function="sleep" data="50"/>
+        <action function="play-file" data="ivr/ivr-hang_up.wav"/>
+        <action function="sleep" data="1500"/>
+        <action function="play-file" data="ivr/ivr-call_from.wav"/>
+        <action function="sleep" data="250"/>
+        <action function="play-file" data="$1"/>
+        <action function="sleep" data="500"/>
+        <action function="play-file" data="ivr/ivr-to_accept_press_one.wav"/>
+        <action function="sleep" data="500"/>
+        <action function="play-file" data="ivr/ivr-to_reject.wav"/>
+        <action function="sleep" data="50"/>
+        <action function="play-file" data="ivr/ivr-hang_up.wav"/>
+        <action function="sleep" data="1500"/>
+      </match>
+    </input>
+  </macro>
+
+</include>
+<!--
+For Emacs:
+Local Variables:
+mode:xml
+indent-tabs-mode:nil
+tab-width:2
+c-basic-offset:2
+End:
+For VIM:
+vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
+-->
diff --git a/conf/testing/lang/en/vm/sounds.xml b/conf/testing/lang/en/vm/sounds.xml
new file mode 100644 (file)
index 0000000..9545d81
--- /dev/null
@@ -0,0 +1,444 @@
+<include>
+
+  <macro name="voicemail_enter_id">
+    <input pattern="(.*)">
+      <match>
+        <action function="play-file" data="voicemail/vm-enter_id.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_enter_pass">
+    <input pattern="(.*)">
+      <match>
+        <action function="play-file" data="voicemail/vm-enter_pass.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_fail_auth">
+    <input pattern="(.*)">
+      <match>
+        <action function="play-file" data="voicemail/vm-fail_auth.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_change_pass_success">
+    <input pattern="(.*)">
+      <match>
+        <action function="play-file" data="voicemail/vm-password_has_been_changed.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_change_pass_fail">
+    <input pattern="(.*)">
+      <match>
+        <action function="play-file" data="voicemail/vm-password_not_valid.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_hello">
+    <input pattern="(.*)">
+      <match>
+        <!--<action function="play-file" data="voicemail/vm-hello.wav"/> -->
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_goodbye">
+    <input pattern="(.*)">
+      <match>
+        <action function="play-file" data="voicemail/vm-goodbye.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_abort">
+    <input pattern="(.*)">
+      <match>
+        <action function="play-file" data="voicemail/vm-abort.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_message_count">
+    <input pattern="^(1):(.*)$" break_on_match="true">
+      <match>
+        <action function="play-file" data="voicemail/vm-you_have.wav"/>
+        <action function="say" data="$1" method="pronounced" type="items"/>
+        <action function="play-file" data="voicemail/vm-$2.wav"/>
+        <action function="play-file" data="voicemail/vm-message.wav"/>
+      </match>
+    </input>
+    <input pattern="^(\d+):(.*)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-you_have.wav"/>
+        <action function="say" data="$1" method="pronounced" type="items"/>
+        <action function="play-file" data="voicemail/vm-$2.wav"/>
+        <action function="play-file" data="voicemail/vm-messages.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_menu">
+    <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
+      <match>
+        <!-- To listen to new messages -->
+        <action function="play-file" data="voicemail/vm-listen_new.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        <action function="execute" data="sleep(100)"/>
+
+        <!-- To listen to saved messages -->
+        <action function="play-file" data="voicemail/vm-listen_saved.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$2" method="pronounced" type="name_spelled"/>
+        <action function="execute" data="sleep(100)"/>
+
+        <!-- For advanced options -->
+        <action function="play-file" data="voicemail/vm-advanced.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$3" method="pronounced" type="name_spelled"/>
+        <action function="execute" data="sleep(100)"/>
+
+        <!-- To exit -->
+        <action function="play-file" data="voicemail/vm-to_exit.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$4" method="pronounced" type="name_phonetic"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_config_menu">
+    <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
+      <match>
+        <!-- To record a greeting -->
+        <action function="play-file" data="voicemail/vm-to_record_greeting.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        <action function="execute" data="sleep(100)"/>
+
+        <!-- To choose greeting -->
+        <action function="play-file" data="voicemail/vm-choose_greeting.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$2" method="pronounced" type="name_spelled"/>
+        <action function="execute" data="sleep(100)"/>
+
+        <!-- To record your name -->
+        <action function="play-file" data="voicemail/vm-record_name2.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$3" method="pronounced" type="name_spelled"/>
+        <action function="execute" data="sleep(100)"/>
+
+        <!-- To change password -->
+        <action function="play-file" data="voicemail/vm-change_password.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$4" method="pronounced" type="name_spelled"/>
+        <action function="execute" data="sleep(100)"/>
+
+        <!-- To return to main menu -->
+        <action function="play-file" data="voicemail/vm-main_menu.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$5" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_record_name">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-record_name1.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_record_file_check">
+    <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
+      <match>
+        <action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-save_recording.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$2" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-rerecord.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$3" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_record_urgent_check">
+    <input pattern="^([0-9#*]):([0-9#*])$">
+      <match>
+        <action function="play-file" data="voicemail/vm-mark-urgent.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-continue.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$2" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_forward_prepend">
+    <input pattern="^([0-9#*]):([0-9#*])$">
+      <match>
+        <action function="play-file" data="voicemail/vm-forward_add_intro.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-send_message_now.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$2" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_forward_message_enter_extension">
+    <input pattern="^([0-9#*])$">
+      <match>
+        <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/>
+        <action function="play-file" data="voicemail/vm-followed_by.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_invalid_extension">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_listen_file_check">
+    <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):(.*)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-save_recording.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$2" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-delete_recording.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$3" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-forward_to_email.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$4" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-return_call.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$5" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-to_forward.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$6" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+    <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
+      <match>
+        <action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-save_recording.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$2" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-delete_recording.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$3" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-return_call.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$5" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-to_forward.wav"/>
+        <action function="play-file" data="voicemail/vm-press.wav"/>
+        <action function="say" data="$6" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_choose_greeting">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_choose_greeting_fail">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_record_greeting">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-record_greeting.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_record_message">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-record_message.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_greeting_selected">
+    <input pattern="^(\d+)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-greeting.wav"/>
+        <action function="say" data="$1" method="pronounced" type="items"/>
+        <action function="play-file" data="voicemail/vm-selected.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_play_greeting">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-person.wav"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        <action function="play-file" data="voicemail/vm-not_available.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_say_number">
+    <input pattern="^(\d+)$">
+      <match>
+        <action function="say" data="$1" method="pronounced" type="items"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_say_message_number">
+    <input pattern="^([a-z]+):(\d+)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-$1.wav"/>
+        <action function="play-file" data="voicemail/vm-message_number.wav"/>
+        <action function="say" data="$2" method="pronounced" type="items"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_say_phone_number">
+    <input pattern="^000|^$|^[Aa]non|^[Pp]rivate" break_on_match="true">
+      <match>
+        <action function="play-file" data="voicemail/vm-message_from.wav"/>
+        <action function="execute" data="sleep(100)"/>
+        <action function="play-file" data="ivr/ivr-anonymous_caller.wav"/>
+        <action function="execute" data="sleep(500)"/>
+      </match>
+    </input>
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-message_from.wav"/>
+        <action function="execute" data="sleep(100)"/>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        <action function="execute" data="sleep(500)"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_say_name">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+  <!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded -->
+  <macro name="voicemail_ack">
+    <input pattern="^(too-small)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-too-small.wav"/>
+      </match>
+    </input>
+    <input pattern="^(deleted)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-message.wav"/>
+        <action function="play-file" data="voicemail/vm-$1.wav"/>
+      </match>
+    </input>
+    <input pattern="^(saved)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-message.wav"/>
+        <action function="play-file" data="voicemail/vm-$1.wav"/>
+      </match>
+    </input>
+    <input pattern="^(emailed)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-message.wav"/>
+        <action function="play-file" data="voicemail/vm-$1.wav"/>
+      </match>
+    </input>
+    <input pattern="^(marked-urgent)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-message.wav"/>
+        <action function="play-file" data="voicemail/vm-$1.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_say_date">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="say" data="$1" method="pronounced" type="short_date_time"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_disk_quota_exceeded">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="voicemail/vm-mailbox_full.wav"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="valet_announce_ext">
+    <input pattern="^([^\:]+):(.*)$">
+      <match>
+        <action function="say" data="$2" method="pronounced" type="name_spelled"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="valet_lot_full">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="valet_lot_empty">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
+      </match>
+    </input>
+  </macro>
+
+</include>
+<!--
+For Emacs:
+Local Variables:
+mode:xml
+indent-tabs-mode:nil
+tab-width:2
+c-basic-offset:2
+End:
+For VIM:
+vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
+-->
diff --git a/conf/testing/lang/en/vm/tts.xml b/conf/testing/lang/en/vm/tts.xml
new file mode 100644 (file)
index 0000000..2de4b37
--- /dev/null
@@ -0,0 +1,249 @@
+<include>
+
+  <macro name="voicemail_enter_id">
+    <input pattern="(.*)">
+      <match>
+        <action function="speak-text" data="please enter your i d, followed by $1."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_enter_pass">
+    <input pattern="(.*)">
+      <match>
+        <action function="speak-text" data="please enter your password, followed by $1."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_fail_auth">
+    <input pattern="(.*)">
+      <match>
+        <action function="speak-text" data="login incorrect."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_hello">
+    <input pattern="(.*)">
+      <match>
+        <action function="speak-text" data="welcome to your voicemail."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_goodbye">
+    <input pattern="(.*)">
+      <match>
+        <action function="speak-text" data="goodbye."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_abort">
+    <input pattern="(.*)">
+      <match>
+        <action function="speak-text" data="too many failed attempts."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_message_count">
+    <input pattern="^1:(.*)$" break_on_match="true">
+      <match>
+        <action function="speak-text" data="you have 1 $1 message in folder ${voicemail_current_folder}."/>
+      </match>
+    </input>
+    <input pattern="^(\d+):(.*)$">
+      <match>
+        <action function="speak-text" data="you have $1 $2 messages in folder ${voicemail_current_folder}."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_menu">
+    <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
+      <match>
+        <action function="speak-text"
+                data="To listen to new messages, press $1, To listen to saved messages, press $2, For advanced options, press $3, to exit, press $4."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_config_menu">
+    <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
+      <match>
+        <action function="speak-text"
+                data="To record a greeting, press $1, To choose a greeting, press $2, To record your name, press $3, to change your password, press $5, to return to the main menu, press $5."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_record_name">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="at the tone, please record your name, press any key or stop talking to end the recording."/>
+
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_record_file_check">
+    <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
+      <match>
+        <action function="speak-text"
+                data="To listen to the recording, press $1, To save the recording, press $2, To re record, press $3."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_record_urgent_check">
+    <input pattern="^([0-9#*]):([0-9#*])$">
+      <match>
+        <action function="speak-text"
+                data="To mark this message urgent, press $1, To continue, press $2."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_invalid_extension">
+    <input pattern="^([0-9#*])$">
+      <match>
+        <action function="speak-text" data="$1 is not a valid extension."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_forward_message_enter_extension">
+    <input pattern="^([0-9#*])$">
+      <match>
+        <action function="speak-text" data="enter the extension you wish to forward to, then press $1"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_forward_prepend">
+    <input pattern="^([0-9#*])$">
+      <match>
+        <action function="speak-text" data="To record an announcement, press $1."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_listen_file_check">
+    <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
+      <match>
+        <action function="speak-text"
+                data="To listen to the recording again, press $1, To save the recording, press $2,  To delete the recording, press $3, to forward the recording to your email, press $4, to call the caller now, press $5, To forward this message to another extension, press $6."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_choose_greeting">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="choose a greeting between 1 and 3."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_choose_greeting_fail">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="invalid value."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_record_greeting">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="record your greeting at the tone, press any key or stop talking to end the recording."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_record_message">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="record your message at the tone, press any key or stop talking to end the recording."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_greeting_selected">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="greeting $1 selected."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_play_greeting">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="$1 is not available."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_say_number">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="$1"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_say_message_number">
+    <input pattern="^([a-z]+):(.*)$">
+      <match>
+        <action function="speak-text" data="$1 message number $2."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_say_phone_number">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="$1."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_say_name">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="$1."/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_ack">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="message $1"/>
+      </match>
+    </input>
+  </macro>
+
+  <macro name="voicemail_say_date">
+    <input pattern="^(.*)$">
+      <match>
+        <action function="speak-text" data="${strftime($1|%A, %B %d %Y, %I:%M %p)}"/>
+      </match>
+    </input>
+  </macro>
+
+</include>
+<!--
+For Emacs:
+Local Variables:
+mode:xml
+indent-tabs-mode:nil
+tab-width:2
+c-basic-offset:2
+End:
+For VIM:
+vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
+-->
diff --git a/conf/testing/lang/en/vm/voicemail_ivr.xml b/conf/testing/lang/en/vm/voicemail_ivr.xml
new file mode 100644 (file)
index 0000000..1c48299
--- /dev/null
@@ -0,0 +1,417 @@
+<include>
+
+  <macros name="voicemail_ivr">
+    <macro name="press_key">
+      <input pattern="^(.*):(.*)$">
+        <match>
+          <action function="play-file" data="$2"/>
+          <action function="play-file" data="voicemail/vm-press.wav"/>
+          <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="plural_msg">
+      <input pattern="^[1]:(.*):(.*)$" break_on_match="true">
+        <match>
+          <action function="play-file" data="$1"/>
+        </match>
+      </input>
+      <input pattern="^.*:(.*):(.*)$" break_on_match="true">
+        <match>
+          <action function="play-file" data="$2"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="enter_id">
+      <input pattern="(.+)">
+        <match>
+          <action function="play-file" data="voicemail/vm-enter_id.wav"/>
+          <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        </match>
+        <nomatch>
+          <action function="play-file" data="voicemail/vm-enter_id.wav"/>
+          <action function="say" data="${VM-Key-Terminator}" method="pronounced" type="name_spelled"/>
+        </nomatch>
+      </input>
+    </macro>
+
+    <macro name="enter_pass">
+      <input pattern="(.+)">
+        <match>
+          <action function="play-file" data="voicemail/vm-enter_pass.wav"/>
+          <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        </match>
+        <nomatch>
+          <action function="play-file" data="voicemail/vm-enter_pass.wav"/>
+          <action function="say" data="${VM-Key-Terminator}" method="pronounced" type="name_spelled"/>
+        </nomatch>
+
+      </input>
+    </macro>
+
+    <macro name="fail_auth">
+      <input>
+        <match>
+          <action function="play-file" data="voicemail/vm-fail_auth.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="hello">
+      <input>
+        <match>
+          <!--<action function="play-file" data="voicemail/vm-hello.wav"/> -->
+        </match>
+      </input>
+    </macro>
+
+    <macro name="goodbye">
+      <input>
+        <match>
+          <action function="play-file" data="voicemail/vm-goodbye.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="abort">
+      <input>
+        <match>
+          <action function="play-file" data="voicemail/vm-abort.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="message_count">
+      <input field="${VM-Total-New-Urgent-Messages}" pattern="^(0)$">
+        <nomatch>
+          <action function="play-file" data="voicemail/vm-you_have.wav"/>
+          <action function="say" data="${VM-Total-New-Urgent-Messages}" method="pronounced" type="items"/>
+          <action function="play-file" data="voicemail/vm-urgent-new.wav"/>
+          <action function="phrase" phrase="plural_msg@voicemail_ivr" data="${VM-Total-New-Urgent-Messages}:voicemail/vm-message.wav:voicemail/vm-messages.wav"/>
+        </nomatch>
+      </input>
+      <input field="${VM-Total-New-Messages}" pattern="^(\d+)$">
+        <match>
+          <action function="play-file" data="voicemail/vm-you_have.wav"/>
+          <action function="say" data="${VM-Total-New-Messages}" method="pronounced" type="items"/>
+          <action function="play-file" data="voicemail/vm-new.wav"/>
+          <action function="phrase" phrase="plural_msg@voicemail_ivr" data="${VM-Total-New-Messages}:voicemail/vm-message.wav:voicemail/vm-messages.wav"/>
+        </match>
+      </input>
+      <input field="${VM-Total-Saved-Messages}" pattern="^(0)$">
+        <nomatch>
+          <action function="play-file" data="currency/and.wav"/>
+          <action function="say" data="${VM-Total-Saved-Messages}" method="pronounced" type="items"/>
+          <action function="play-file" data="voicemail/vm-saved.wav"/>
+          <action function="phrase" phrase="plural_msg@voicemail_ivr" data="${VM-Total-Saved-Messages}:voicemail/vm-message.wav:voicemail/vm-messages.wav"/>
+        </nomatch>
+      </input>
+    </macro>
+
+    <macro name="menu">
+      <input field="${VM-Total-New-Messages}" pattern="^(0)$">
+        <nomatch>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Play-New-Messages}:voicemail/vm-listen_new.wav"/>
+       </nomatch>
+      </input>
+      <input field="${VM-Total-Saved-Messages}" pattern="^(0)$">
+       <nomatch>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Play-Saved-Messages}:voicemail/vm-listen_saved.wav"/>
+       </nomatch>
+      </input>
+      <input>
+       <match>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Config-Menu}:voicemail/vm-advanced.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Terminator}:voicemail/vm-to_exit.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="config_menu">
+      <input>
+        <match>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Record-Greeting}:voicemail/vm-to_record_greeting.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Choose-Greeting}:voicemail/vm-choose_greeting.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Record-Name}:voicemail/vm-record_name2.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Change-Password}:voicemail/vm-change_password.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Menu}:voicemail/vm-main_menu.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="record_name">
+      <input>
+        <match>
+          <action function="play-file" data="voicemail/vm-record_name1.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="forward_ask_prepend">
+      <input>
+        <match>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Prepend}:voicemail/vm-forward_add_intro.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Forward}:voicemail/vm-send_message_now.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="forward_ask_extension">
+      <input>
+        <match>
+          <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/>
+          <!--<action function="phrase" phrase="play-file" data="voicemail/vm-followed_by.wav"/>-->
+          <!--<action function="say" data="${VM-Key-Terminate}" method="pronounced" type="name_spelled"/>-->
+        </match>
+      </input>
+    </macro>
+
+    <macro name="record_file_check">
+      <input>
+        <match>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Listen-File}:voicemail/vm-listen_to_recording.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Save-File}:voicemail/vm-save_recording.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Record-File}:voicemail/vm-rerecord.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="record_urgent_check">
+      <input>
+        <match>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Urgent}:voicemail/vm-mark-urgent.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Terminator}:voicemail/vm-continue.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="forward_prepend">
+      <input>
+        <match>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Prepend}:voicemail/vm-forward_add_intro.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Forward}:voicemail/vm-send_message_now.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="forward_message_enter_extension">
+      <input pattern="^([0-9#*])$">
+        <match>
+          <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/>
+          <action function="play-file" data="voicemail/vm-followed_by.wav"/>
+          <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="invalid_extension">
+      <input>
+        <match>
+          <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="listen_file_check">
+      <input>
+        <match>
+          <!--<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Next-Msg}:voicemail/vm-for_next_msg.wav"/>--> <!-- Not existant in callie recordings -->
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Listen-File}:voicemail/vm-listen_to_recording.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Save-File}:voicemail/vm-save_recording.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Delete-File}:voicemail/vm-delete_recording.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Forward}:voicemail/vm-to_forward.wav"/>
+        </match>
+      </input>
+      <input field="${VM-Message-Email}" pattern="^$">
+        <nomatch>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Email}:voicemail/vm-forward_to_email.wav"/>
+        </nomatch>
+      </input>
+      <input>
+        <match>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Callback}:voicemail/vm-return_call.wav"/>
+          <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Forward}:voicemail/vm-to_forward.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="choose_greeting">
+      <input>
+        <match>
+          <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="choose_greeting_fail">
+      <input>
+        <match>
+          <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="record_greeting">
+      <input>
+        <match>
+          <action function="play-file" data="voicemail/vm-record_greeting.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="record_message">
+      <input>
+        <match>
+          <action function="play-file" data="voicemail/vm-record_message.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="greeting_selected">
+      <input pattern="^(\d+)$">
+        <match>
+         <action function="play-file" data="${VM-Preference-Greeting-File-Path}"/>
+          <action function="play-file" data="voicemail/vm-greeting.wav"/>
+          <action function="say" data="$1" method="pronounced" type="items"/>
+          <action function="play-file" data="voicemail/vm-selected.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="play_greeting">
+      <input pattern="^(.*)$">
+        <match>
+          <action function="play-file" data="voicemail/vm-person.wav"/>
+          <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+          <action function="play-file" data="voicemail/vm-not_available.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="say_number">
+      <input pattern="^(\d+)$">
+        <match>
+          <action function="say" data="$1" method="pronounced" type="items"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="say_message_number">
+      <input>
+        <match>
+          <action function="play-file" data="voicemail/vm-${VM-Message-Type}.wav"/>
+          <action function="play-file" data="voicemail/vm-message_number.wav"/>
+          <action function="say" data="${VM-Message-Number}" method="pronounced" type="items"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="say_phone_number">
+      <input pattern="^(.*)$">
+        <match>
+          <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="say_name">
+      <input pattern="^(.*)$">
+        <match>
+          <action function="say" data="$1" method="pronounced" type="name_spelled"/>
+        </match>
+      </input>
+    </macro>
+    <!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded -->
+    <macro name="ack">
+      <input pattern="^(too-small)$">
+        <match>
+          <action function="play-file" data="voicemail/vm-too-small.wav"/>
+        </match>
+      </input>
+      <input pattern="^(undeleted)$">
+        <match>
+          <action function="play-file" data="voicemail/vm-message.wav"/>
+          <action function="play-file" data="voicemail/vm-$1.wav"/>
+        </match>
+      </input>
+      <input pattern="^(deleted)$">
+        <match>
+          <action function="play-file" data="voicemail/vm-message.wav"/>
+          <action function="play-file" data="voicemail/vm-$1.wav"/>
+        </match>
+      </input>
+      <input pattern="^(saved)$">
+        <match>
+          <action function="play-file" data="voicemail/vm-message.wav"/>
+          <action function="play-file" data="voicemail/vm-$1.wav"/>
+        </match>
+      </input>
+      <input pattern="^(emailed)$">
+        <match>
+          <action function="play-file" data="voicemail/vm-message.wav"/>
+          <action function="play-file" data="voicemail/vm-$1.wav"/>
+        </match>
+      </input>
+      <input pattern="^(marked-urgent)$">
+        <match>
+          <action function="play-file" data="voicemail/vm-message.wav"/>
+          <action function="play-file" data="voicemail/vm-$1.wav"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="say_date">
+      <input pattern="^(.*)$">
+        <match>
+          <action function="say" data="$1" method="pronounced" type="short_date_time"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="say_date_event">
+      <input>
+        <match>
+          <action function="say" data="${VM-Message-Received-Epoch}" method="pronounced" type="short_date_time"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="play_message">
+      <input>
+        <match>
+          <action function="play-file" data="${VM-Message-File-Path}"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="play_recording">
+      <input>
+        <match>
+          <action function="play-file" data="${VM-Record-File-Path}"/>
+        </match>
+      </input>
+    </macro>
+
+    <macro name="disk_quota_exceeded">
+      <input>
+        <match>
+          <action function="play-file" data="voicemail/vm-mailbox_full.wav"/>
+        </match>
+      </input>
+    </macro>
+  </macros>
+
+</include>
+<!--
+For Emacs:
+Local Variables:
+mode:xml
+indent-tabs-mode:nil
+tab-width:2
+c-basic-offset:2
+End:
+For VIM:
+vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
+-->
diff --git a/conf/testing/sip_profiles/external-ipv6.xml b/conf/testing/sip_profiles/external-ipv6.xml
new file mode 100644 (file)
index 0000000..7dc5906
--- /dev/null
@@ -0,0 +1,96 @@
+<profile name="external-ipv6">
+  <!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files -->
+  <!-- This profile is only for outbound registrations to providers -->
+  <gateways>
+    <X-PRE-PROCESS cmd="include" data="external-ipv6/*.xml"/>
+  </gateways>
+
+  <aliases>
+    <!--
+        <alias name="outbound"/>
+        <alias name="nat"/>
+    -->
+  </aliases>
+
+  <domains>
+    <domain name="all" alias="false" parse="true"/>
+  </domains>
+
+  <settings>
+    <param name="debug" value="0"/>
+    <!-- If you want FreeSWITCH to shutdown if this profile fails to load, uncomment the next line. -->
+    <!-- <param name="shutdown-on-fail" value="true"/> -->
+    <param name="sip-trace" value="no"/>
+    <param name="sip-capture" value="no"/>
+    <param name="rfc2833-pt" value="101"/>
+    <!-- RFC 5626 : Send reg-id and sip.instance -->
+    <!--<param name="enable-rfc-5626" value="true"/> -->
+    <param name="sip-port" value="$${external_sip_port}"/>
+    <param name="dialplan" value="XML"/>
+    <param name="context" value="public"/>
+    <param name="dtmf-duration" value="2000"/>
+    <param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
+    <param name="outbound-codec-prefs" value="$${outbound_codec_prefs}"/>
+    <param name="hold-music" value="$${hold_music}"/>
+    <param name="rtp-timer-name" value="soft"/>
+    <!--<param name="enable-100rel" value="true"/>-->
+    <!--<param name="disable-srv503" value="true"/>-->
+    <!-- This could be set to "passive" -->
+    <param name="local-network-acl" value="localnet.auto"/>
+    <param name="manage-presence" value="false"/>
+
+    <!-- used to share presence info across sofia profiles
+         manage-presence needs to be set to passive on this profile
+         if you want it to behave as if it were the internal profile
+         for presence.
+    -->
+    <!-- Name of the db to use for this profile -->
+    <!--<param name="dbname" value="share_presence"/>-->
+    <!--<param name="presence-hosts" value="$${domain}"/>-->
+    <!--<param name="force-register-domain" value="$${domain}"/>-->
+    <!--all inbound reg will stored in the db using this domain -->
+    <!--<param name="force-register-db-domain" value="$${domain}"/>-->
+    <!-- ************************************************* -->
+
+    <!--<param name="aggressive-nat-detection" value="true"/>-->
+    <param name="inbound-codec-negotiation" value="generous"/>
+    <param name="nonce-ttl" value="60"/>
+    <param name="auth-calls" value="false"/>
+    <param name="inbound-late-negotiation" value="true"/>
+    <param name="inbound-zrtp-passthru" value="true"/> <!-- (also enables late negotiation) -->
+    <!--
+        DO NOT USE HOSTNAMES, ONLY IP ADDRESSES IN THESE SETTINGS!
+    -->
+    <param name="rtp-ip" value="$${local_ip_v6}"/>
+    <param name="sip-ip" value="$${local_ip_v6}"/>
+    <param name="ext-rtp-ip" value="auto-nat"/>
+    <param name="ext-sip-ip" value="auto-nat"/>
+    <param name="rtp-timeout-sec" value="300"/>
+    <param name="rtp-hold-timeout-sec" value="1800"/>
+    <!--<param name="enable-3pcc" value="true"/>-->
+
+    <!-- TLS: disabled by default, set to "true" to enable -->
+    <param name="tls" value="$${external_ssl_enable}"/>
+    <!-- Set to true to not bind on the normal sip-port but only on the TLS port -->
+    <param name="tls-only" value="false"/>
+    <!-- additional bind parameters for TLS -->
+    <param name="tls-bind-params" value="transport=tls"/>
+    <!-- Port to listen on for TLS requests. (5081 will be used if unspecified) -->
+    <param name="tls-sip-port" value="$${external_tls_port}"/>
+    <!-- Location of the agent.pem and cafile.pem ssl certificates (needed for TLS server) -->
+    <!--<param name="tls-cert-dir" value=""/>-->
+    <!-- Optionally set the passphrase password used by openSSL to encrypt/decrypt TLS private key files -->
+    <param name="tls-passphrase" value=""/>
+    <!-- Verify the date on TLS certificates -->
+    <param name="tls-verify-date" value="true"/>
+    <!-- TLS verify policy, when registering/inviting gateways with other servers (outbound) or handling inbound registration/invite requests how should we verify their certificate -->
+    <!-- set to 'in' to only verify incoming connections, 'out' to only verify outgoing connections, 'all' to verify all connections, also 'in_subjects', 'out_subjects' and 'all_subjects' for subject validation. Multiple policies can be split with a '|' pipe -->
+    <param name="tls-verify-policy" value="none"/>
+    <!-- Certificate max verify depth to use for validating peer TLS certificates when the verify policy is not none -->
+    <param name="tls-verify-depth" value="2"/>
+    <!-- If the tls-verify-policy is set to subjects_all or subjects_in this sets which subjects are allowed, multiple subjects can be split with a '|' pipe -->
+    <param name="tls-verify-in-subjects" value=""/>
+    <!-- TLS version ("sslv23" (default), "tlsv1"). NOTE: Phones may not work with TLSv1 -->
+    <param name="tls-version" value="$${sip_tls_version}"/>
+  </settings>
+</profile>
diff --git a/conf/testing/sip_profiles/external.xml b/conf/testing/sip_profiles/external.xml
new file mode 100644 (file)
index 0000000..6edc878
--- /dev/null
@@ -0,0 +1,96 @@
+<profile name="external">
+  <!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files -->
+  <!-- This profile is only for outbound registrations to providers -->
+  <gateways>
+    <X-PRE-PROCESS cmd="include" data="external/*.xml"/>
+  </gateways>
+
+  <aliases>
+    <!--
+        <alias name="outbound"/>
+        <alias name="nat"/>
+    -->
+  </aliases>
+
+  <domains>
+    <domain name="all" alias="false" parse="true"/>
+  </domains>
+
+  <settings>
+    <param name="debug" value="0"/>
+    <!-- If you want FreeSWITCH to shutdown if this profile fails to load, uncomment the next line. -->
+    <!-- <param name="shutdown-on-fail" value="true"/> -->
+    <param name="sip-trace" value="no"/>
+    <param name="sip-capture" value="no"/>
+    <param name="rfc2833-pt" value="101"/>
+    <!-- RFC 5626 : Send reg-id and sip.instance -->
+    <!--<param name="enable-rfc-5626" value="true"/> -->
+    <param name="sip-port" value="$${external_sip_port}"/>
+    <param name="dialplan" value="XML"/>
+    <param name="context" value="public"/>
+    <param name="dtmf-duration" value="2000"/>
+    <param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
+    <param name="outbound-codec-prefs" value="$${outbound_codec_prefs}"/>
+    <param name="hold-music" value="$${hold_music}"/>
+    <param name="rtp-timer-name" value="soft"/>
+    <!--<param name="enable-100rel" value="true"/>-->
+    <!--<param name="disable-srv503" value="true"/>-->
+    <!-- This could be set to "passive" -->
+    <param name="local-network-acl" value="localnet.auto"/>
+    <param name="manage-presence" value="false"/>
+
+    <!-- used to share presence info across sofia profiles
+         manage-presence needs to be set to passive on this profile
+         if you want it to behave as if it were the internal profile
+         for presence.
+    -->
+    <!-- Name of the db to use for this profile -->
+    <!--<param name="dbname" value="share_presence"/>-->
+    <!--<param name="presence-hosts" value="$${domain}"/>-->
+    <!--<param name="force-register-domain" value="$${domain}"/>-->
+    <!--all inbound reg will stored in the db using this domain -->
+    <!--<param name="force-register-db-domain" value="$${domain}"/>-->
+    <!-- ************************************************* -->
+
+    <!--<param name="aggressive-nat-detection" value="true"/>-->
+    <param name="inbound-codec-negotiation" value="generous"/>
+    <param name="nonce-ttl" value="60"/>
+    <param name="auth-calls" value="false"/>
+    <param name="inbound-late-negotiation" value="true"/>
+    <param name="inbound-zrtp-passthru" value="true"/> <!-- (also enables late negotiation) -->
+    <!--
+        DO NOT USE HOSTNAMES, ONLY IP ADDRESSES IN THESE SETTINGS!
+    -->
+    <param name="rtp-ip" value="$${local_ip_v4}"/>
+    <param name="sip-ip" value="$${local_ip_v4}"/>
+    <param name="ext-rtp-ip" value="auto-nat"/>
+    <param name="ext-sip-ip" value="auto-nat"/>
+    <param name="rtp-timeout-sec" value="300"/>
+    <param name="rtp-hold-timeout-sec" value="1800"/>
+    <!--<param name="enable-3pcc" value="true"/>-->
+
+    <!-- TLS: disabled by default, set to "true" to enable -->
+    <param name="tls" value="$${external_ssl_enable}"/>
+    <!-- Set to true to not bind on the normal sip-port but only on the TLS port -->
+    <param name="tls-only" value="false"/>
+    <!-- additional bind parameters for TLS -->
+    <param name="tls-bind-params" value="transport=tls"/>
+    <!-- Port to listen on for TLS requests. (5081 will be used if unspecified) -->
+    <param name="tls-sip-port" value="$${external_tls_port}"/>
+    <!-- Location of the agent.pem and cafile.pem ssl certificates (needed for TLS server) -->
+    <!--<param name="tls-cert-dir" value=""/>-->
+    <!-- Optionally set the passphrase password used by openSSL to encrypt/decrypt TLS private key files -->
+    <param name="tls-passphrase" value=""/>
+    <!-- Verify the date on TLS certificates -->
+    <param name="tls-verify-date" value="true"/>
+    <!-- TLS verify policy, when registering/inviting gateways with other servers (outbound) or handling inbound registration/invite requests how should we verify their certificate -->
+    <!-- set to 'in' to only verify incoming connections, 'out' to only verify outgoing connections, 'all' to verify all connections, also 'in_subjects', 'out_subjects' and 'all_subjects' for subject validation. Multiple policies can be split with a '|' pipe -->
+    <param name="tls-verify-policy" value="none"/>
+    <!-- Certificate max verify depth to use for validating peer TLS certificates when the verify policy is not none -->
+    <param name="tls-verify-depth" value="2"/>
+    <!-- If the tls-verify-policy is set to subjects_all or subjects_in this sets which subjects are allowed, multiple subjects can be split with a '|' pipe -->
+    <param name="tls-verify-in-subjects" value=""/>
+    <!-- TLS version ("sslv23" (default), "tlsv1"). NOTE: Phones may not work with TLSv1 -->
+    <param name="tls-version" value="$${sip_tls_version}"/>
+  </settings>
+</profile>
diff --git a/conf/testing/sip_profiles/external/example.xml b/conf/testing/sip_profiles/external/example.xml
new file mode 100644 (file)
index 0000000..d8fe395
--- /dev/null
@@ -0,0 +1,41 @@
+<include>
+  <!--<gateway name="asterlink.com">-->
+  <!--/// account username *required* ///-->
+  <!--<param name="username" value="cluecon"/>-->
+  <!--/// auth realm: *optional* same as gateway name, if blank ///-->
+  <!--<param name="realm" value="asterlink.com"/>-->
+  <!--/// username to use in from: *optional* same as  username, if blank ///-->
+  <!--<param name="from-user" value="cluecon"/>-->
+  <!--/// domain to use in from: *optional* same as  realm, if blank ///-->
+  <!--<param name="from-domain" value="asterlink.com"/>-->
+  <!--/// account password *required* ///-->
+  <!--<param name="password" value="2007"/>-->
+  <!--/// extension for inbound calls: *optional* same as username, if blank ///-->
+  <!--<param name="extension" value="cluecon"/>-->
+  <!--/// proxy host: *optional* same as realm, if blank ///-->
+  <!--<param name="proxy" value="asterlink.com"/>-->
+  <!--/// send register to this proxy: *optional* same as proxy, if blank ///-->
+  <!--<param name="register-proxy" value="mysbc.com"/>-->
+  <!--/// expire in seconds: *optional* 3600, if blank ///-->
+  <!--<param name="expire-seconds" value="60"/>-->
+  <!--/// do not register ///-->
+  <!--<param name="register" value="false"/>-->
+  <!-- which transport to use for register -->
+  <!--<param name="register-transport" value="udp"/>-->
+  <!--How many seconds before a retry when a failure or timeout occurs -->
+  <!--<param name="retry-seconds" value="30"/>-->
+  <!--Use the callerid of an inbound call in the from field on outbound calls via this gateway -->
+  <!--<param name="caller-id-in-from" value="false"/>-->
+  <!--extra sip params to send in the contact-->
+  <!--<param name="contact-params" value=""/>-->
+  <!-- Put the extension in the contact -->
+  <!--<param name="extension-in-contact" value="true"/>-->
+  <!--send an options ping every x seconds, failure will unregister and/or mark it down-->
+  <!--<param name="ping" value="25"/>-->
+  <!--<param name="cid-type" value="rpid"/>-->
+  <!--rfc5626 : Abilitazione rfc5626 ///-->
+  <!--<param name="rfc-5626" value="true"/>-->
+  <!--rfc5626 : extra sip params to send in the contact-->
+  <!--<param name="reg-id" value="1"/>-->
+  <!--</gateway>-->
+</include>
diff --git a/conf/testing/sip_profiles/internal-ipv6.xml b/conf/testing/sip_profiles/internal-ipv6.xml
new file mode 100644 (file)
index 0000000..98efa2f
--- /dev/null
@@ -0,0 +1,133 @@
+<profile name="internal-ipv6">
+  <!--
+      This is an example of a sofia profile setup to listen on IPv6.
+  -->
+  <!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files -->
+  <!--aliases are other names that will work as a valid profile name for this profile-->
+  <settings>
+    <!-- Can be set to "_undef_" to remove the User-Agent header -->
+    <!-- <param name="user-agent-string" value="FreeSWITCH Rocks!"/> -->
+    <param name="debug" value="0"/>
+    <param name="sip-trace" value="no"/>
+    <param name="context" value="public"/>
+    <param name="rfc2833-pt" value="101"/>
+    <!-- port to bind to for sip traffic -->
+    <param name="sip-port" value="$${internal_sip_port}"/>
+    <param name="dialplan" value="XML"/>
+    <param name="dtmf-duration" value="2000"/>
+    <param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
+    <param name="outbound-codec-prefs" value="$${global_codec_prefs}"/>
+    <param name="use-rtp-timer" value="true"/>
+    <param name="rtp-timer-name" value="soft"/>
+    <!-- ip address to use for rtp -->
+    <param name="rtp-ip" value="$${local_ip_v6}"/>
+    <!-- ip address to bind to -->
+    <param name="sip-ip" value="$${local_ip_v6}"/>
+    <param name="hold-music" value="$${hold_music}"/>
+    <!--<param name="enable-100rel" value="false"/>-->
+    <!--<param name="disable-srv503" value="true"/>-->
+    <param name="apply-inbound-acl" value="domains"/>
+    <!--<param name="apply-register-acl" value="domains"/>-->
+    <!--<param name="dtmf-type" value="info"/>-->
+    <param name="record-template" value="$${recordings_dir}/${caller_id_number}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
+    <!--enable to use presence and mwi -->
+    <param name="manage-presence" value="true"/>
+    <!-- This setting is for AAL2 bitpacking on G726 -->
+    <!-- <param name="bitpacking" value="aal2"/> -->
+    <!--max number of open dialogs in proceeding -->
+    <!--<param name="max-proceeding" value="1000"/>-->
+    <!--session timers for all call to expire after the specified seconds -->
+    <!--<param name="session-timeout" value="1800"/>-->
+    <!--<param name="multiple-registrations" value="true"/>-->
+    <!--set to 'greedy' if you want your codec list to take precedence -->
+    <param name="inbound-codec-negotiation" value="generous"/>
+    <!-- if you want to send any special bind params of your own -->
+    <!--<param name="bind-params" value="transport=udp"/>-->
+    <!--<param name="unregister-on-options-fail" value="true"/>-->
+
+    <!-- TLS: disabled by default, set to "true" to enable -->
+    <param name="tls" value="$${internal_ssl_enable}"/>
+    <!-- additional bind parameters for TLS -->
+    <param name="tls-bind-params" value="transport=tls"/>
+    <!-- Port to listen on for TLS requests. (5061 will be used if unspecified) -->
+    <param name="tls-sip-port" value="$${internal_tls_port}"/>
+    <!-- Location of the agent.pem and cafile.pem ssl certificates (needed for TLS server) -->
+    <param name="tls-cert-dir" value="$${internal_ssl_dir}"/>
+    <!-- TLS version ("sslv23" (default), "tlsv1"). NOTE: Phones may not work with TLSv1 -->
+    <param name="tls-version" value="$${sip_tls_version}"/>
+
+    <!--If you don't want to pass through timestampes from 1 RTP call to another (on a per call basis with rtp_rewrite_timestamps chanvar)-->
+    <!--<param name="rtp-rewrite-timestamps" value="true"/>-->
+    <!--<param name="pass-rfc2833" value="true"/>-->
+    <!--If you have ODBC support and a working dsn you can use it instead of SQLite-->
+    <!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
+
+    <!--Uncomment to set all inbound calls to no media mode-->
+    <!--<param name="inbound-bypass-media" value="true"/>-->
+
+    <!--Uncomment to set all inbound calls to proxy media mode-->
+    <!--<param name="inbound-proxy-media" value="true"/>-->
+
+    <!-- Let calls hit the dialplan before selecting codec for the a-leg -->
+    <param name="inbound-late-negotiation" value="true"/>
+
+    <!-- Allow ZRTP clients to negotiate end-to-end security associations (also enables late negotiation) -->
+    <param name="inbound-zrtp-passthru" value="true"/>
+
+    <!-- this lets anything register -->
+    <!--  comment the next line and uncomment one or both of the other 2 lines for call authentication -->
+    <!-- <param name="accept-blind-reg" value="true"/> -->
+
+    <!-- accept any authentication without actually checking (not a good feature for most people) -->
+    <!-- <param name="accept-blind-auth" value="true"/> -->
+
+    <!-- suppress CNG on this profile or per call with the 'suppress_cng' variable -->
+    <!-- <param name="suppress-cng" value="true"/> -->
+
+    <!--TTL for nonce in sip auth-->
+    <param name="nonce-ttl" value="60"/>
+    <!--Uncomment if you want to force the outbound leg of a bridge to only offer the codec
+        that the originator is using-->
+    <!--<param name="disable-transcoding" value="true"/>-->
+    <!-- Used for when phones respond to a challenged ACK with method INVITE in the hash -->
+    <!--<param name="NDLB-broken-auth-hash" value="true"/>-->
+    <!-- add a ;received="<ip>:<port>" to the contact when replying to register for nat handling -->
+    <!--<param name="NDLB-received-in-nat-reg-contact" value="true"/>-->
+    <param name="auth-calls" value="$${internal_auth_calls}"/>
+    <!-- on authed calls, authenticate *all* the packets not just invite -->
+    <param name="auth-all-packets" value="false"/>
+    <!-- <param name="ext-rtp-ip" value="$${external_rtp_ip}"/> -->
+    <!-- <param name="ext-sip-ip" value="$${external_sip_ip}"/> -->
+    <!-- rtp inactivity timeout -->
+    <param name="rtp-timeout-sec" value="300"/>
+    <param name="rtp-hold-timeout-sec" value="1800"/>
+    <!-- VAD choose one (out is a good choice); -->
+    <!-- <param name="vad" value="in"/> -->
+    <!-- <param name="vad" value="out"/> -->
+    <!-- <param name="vad" value="both"/> -->
+    <!--<param name="alias" value="sip:10.0.1.251:5555"/>-->
+    <!--
+        These are enabled to make the default config work better out of the box.
+        If you need more than ONE domain you'll need to not use these options.
+
+    -->
+    <!--all inbound reg will look in this domain for the users -->
+    <param name="force-register-domain" value="$${domain}"/>
+    <!--all inbound reg will stored in the db using this domain -->
+    <param name="force-register-db-domain" value="$${domain}"/>
+    <!-- disable register and transfer which may be undesirable in a public switch -->
+    <!--<param name="disable-transfer" value="true"/>-->
+    <!--<param name="disable-register" value="true"/>-->
+    <!--<param name="enable-3pcc" value="true"/>-->
+    <!-- use stun when specified (default is true) -->
+    <!--<param name="stun-enabled" value="true"/>-->
+    <!-- use stun when specified (default is true) -->
+    <!-- set to true to have the profile determine stun is not useful and turn it off globally-->
+    <!--<param name="stun-auto-disable" value="true"/>-->
+
+    <!-- the following can be used as workaround with bogus SRV/NAPTR records -->
+    <!--<param name="disable-srv" value="false" />-->
+    <!--<param name="disable-naptr" value="false" />-->
+
+  </settings>
+</profile>
diff --git a/conf/testing/sip_profiles/internal.xml b/conf/testing/sip_profiles/internal.xml
new file mode 100644 (file)
index 0000000..a574932
--- /dev/null
@@ -0,0 +1,422 @@
+<profile name="internal">
+  <!--
+      This is a sofia sip profile/user agent.  This will service exactly one ip and port.
+      In FreeSWITCH you can run multiple sip user agents on their own ip and port.
+
+      When you hear someone say "sofia profile" this is what they are talking about.
+  -->
+
+  <!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files -->
+  <!--aliases are other names that will work as a valid profile name for this profile-->
+  <aliases>
+    <!--
+        <alias name="default"/>
+    -->
+  </aliases>
+  <!-- Outbound Registrations -->
+  <gateways>
+  </gateways>
+
+  <domains>
+    <!-- indicator to parse the directory for domains with parse="true" to get gateways-->
+    <!--<domain name="$${domain}" parse="true"/>-->
+    <!-- indicator to parse the directory for domains with parse="true" to get gateways and alias every domain to this profile -->
+    <!--<domain name="all" alias="true" parse="true"/>-->
+    <domain name="all" alias="true" parse="false"/>
+  </domains>
+
+  <settings>
+
+
+    <!-- inject delay between dtmf digits on send to help some slow interpreters (also per channel with rtp_digit_delay var -->
+    <!-- <param name="rtp-digit-delay" value="40"/>-->
+
+    <!--
+        When calls are in no media this will bring them back to media
+        when you press the hold button.
+    -->
+    <!--<param name="media-option" value="resume-media-on-hold"/> -->
+
+    <!--
+        This will allow a call after an attended transfer go back to
+        bypass media after an attended transfer.
+    -->
+    <!--<param name="media-option" value="bypass-media-after-att-xfer"/>-->
+
+    <!-- Can be set to "_undef_" to remove the User-Agent header -->
+    <!-- <param name="user-agent-string" value="FreeSWITCH Rocks!"/> -->
+
+    <param name="debug" value="0"/>
+    <!-- If you want FreeSWITCH to shutdown if this profile fails to load, uncomment the next line. -->
+    <!-- <param name="shutdown-on-fail" value="true"/> -->
+    <param name="sip-trace" value="no"/>
+    <param name="sip-capture" value="no"/>
+
+    <!-- Use presence_map.conf.xml to convert extension regex to presence protos for routing -->
+    <!-- <param name="presence-proto-lookup" value="true"/> -->
+
+
+    <!-- Don't be picky about negotiated DTMF just always offer 2833 and accept both 2833 and INFO -->
+    <!--<param name="liberal-dtmf" value="true"/>-->
+
+
+    <!--
+        Sometimes, in extremely rare edge cases, the Sofia SIP stack may stop
+        responding. These options allow you to enable and control a watchdog
+        on the Sofia SIP stack so that if it stops responding for the
+        specified number of milliseconds, it will cause FreeSWITCH to crash
+        immediately. This is useful if you run in an HA environment and
+        need to ensure automated recovery from such a condition. Note that if
+        your server is idle a lot, the watchdog may fire due to not receiving
+        any SIP messages. Thus, if you expect your system to be idle, you
+        should leave the watchdog disabled. It can be toggled on and off
+        through the FreeSWITCH CLI either on an individual profile basis or
+        globally for all profiles. So, if you run in an HA environment with a
+        master and slave, you should use the CLI to make sure the watchdog is
+        only enabled on the master.
+        If such crash occurs, FreeSWITCH will dump core if allowed. The
+        stacktrace will include function watchdog_triggered_abort().
+    -->
+    <param name="watchdog-enabled" value="no"/>
+    <param name="watchdog-step-timeout" value="30000"/>
+    <param name="watchdog-event-timeout" value="30000"/>
+
+    <param name="log-auth-failures" value="false"/>
+    <param name="forward-unsolicited-mwi-notify" value="false"/>
+
+    <param name="context" value="public"/>
+    <param name="rfc2833-pt" value="101"/>
+    <!-- port to bind to for sip traffic -->
+    <param name="sip-port" value="$${internal_sip_port}"/>
+    <param name="dialplan" value="XML"/>
+    <param name="dtmf-duration" value="2000"/>
+    <param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
+    <param name="outbound-codec-prefs" value="$${global_codec_prefs}"/>
+    <param name="rtp-timer-name" value="soft"/>
+    <!-- ip address to use for rtp, DO NOT USE HOSTNAMES ONLY IP ADDRESSES -->
+    <param name="rtp-ip" value="$${local_ip_v4}"/>
+    <!-- ip address to bind to, DO NOT USE HOSTNAMES ONLY IP ADDRESSES -->
+    <param name="sip-ip" value="$${local_ip_v4}"/>
+    <param name="hold-music" value="$${hold_music}"/>
+    <param name="apply-nat-acl" value="nat.auto"/>
+
+
+    <!-- (default true) set to false if you do not wish to have called party info in 1XX responses -->
+    <!-- <param name="cid-in-1xx" value="false"/> -->
+
+    <!-- extended info parsing -->
+    <!-- <param name="extended-info-parsing" value="true"/> -->
+
+    <!--<param name="aggressive-nat-detection" value="true"/>-->
+    <!--
+        There are known issues (asserts and segfaults) when 100rel is enabled.
+        It is not recommended to enable 100rel at this time.
+    -->
+    <!--<param name="enable-100rel" value="true"/>-->
+
+    <!-- uncomment if you don't wish to try a next SRV destination on 503 response -->
+    <!-- RFC3263 Section 4.3 -->
+    <!--<param name="disable-srv503" value="true"/>-->
+
+    <!-- Enable Compact SIP headers. -->
+    <!--<param name="enable-compact-headers" value="true"/>-->
+    <!--
+        enable/disable session timers
+    -->
+    <!--<param name="enable-timer" value="false"/>-->
+    <!--<param name="minimum-session-expires" value="120"/>-->
+    <param name="apply-inbound-acl" value="domains"/>
+    <!--
+        This defines your local network, by default we detect your local network
+        and create this localnet.auto ACL for this.
+    -->
+    <param name="local-network-acl" value="localnet.auto"/>
+    <!--<param name="apply-register-acl" value="domains"/>-->
+    <!--<param name="dtmf-type" value="info"/>-->
+
+
+    <!-- 'true' means every time 'first-only' means on the first register -->
+    <!--<param name="send-message-query-on-register" value="true"/>-->
+
+    <!-- 'true' means every time 'first-only' means on the first register -->
+    <!--<param name="send-presence-on-register" value="first-only"/> -->
+
+
+    <!-- Caller-ID type (choose one, can be overridden by inbound call type and/or sip_cid_type channel variable -->
+    <!-- Remote-Party-ID header -->
+    <!--<param name="caller-id-type" value="rpid"/>-->
+
+    <!-- P-*-Identity family of headers -->
+    <!--<param name="caller-id-type" value="pid"/>-->
+
+    <!-- neither one -->
+    <!--<param name="caller-id-type" value="none"/>-->
+
+
+
+    <param name="record-path" value="$${recordings_dir}"/>
+    <param name="record-template" value="${caller_id_number}.${target_domain}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
+    <!--enable to use presence -->
+    <param name="manage-presence" value="true"/>
+    <!-- send a presence probe on each register to query devices to send presence instead of sending presence with less info -->
+    <!--<param name="presence-probe-on-register" value="true"/>-->
+    <!--<param name="manage-shared-appearance" value="true"/>-->
+    <!-- used to share presence info across sofia profiles -->
+    <!-- Name of the db to use for this profile -->
+    <!--<param name="dbname" value="share_presence"/>-->
+    <param name="presence-hosts" value="$${domain},$${local_ip_v4}"/>
+    <param name="presence-privacy" value="$${presence_privacy}"/>
+    <!-- ************************************************* -->
+
+    <!-- This setting is for AAL2 bitpacking on G726 -->
+    <!-- <param name="bitpacking" value="aal2"/> -->
+    <!--max number of open dialogs in proceeding -->
+    <!--<param name="max-proceeding" value="1000"/>-->
+    <!--session timers for all call to expire after the specified seconds -->
+    <!--<param name="session-timeout" value="1800"/>-->
+    <!-- Can be 'true' or 'contact' -->
+    <!--<param name="multiple-registrations" value="contact"/>-->
+    <!--set to 'greedy' if you want your codec list to take precedence -->
+    <param name="inbound-codec-negotiation" value="generous"/>
+    <!-- if you want to send any special bind params of your own -->
+    <!--<param name="bind-params" value="transport=udp"/>-->
+    <!--<param name="unregister-on-options-fail" value="true"/>-->
+    <!-- Send an OPTIONS packet to all registered endpoints -->
+    <!--<param name="all-reg-options-ping" value="true"/>-->
+    <!-- Send an OPTIONS packet to NATed registered endpoints. Can be 'true' or 'udp-only'. -->
+    <!--<param name="nat-options-ping" value="true"/>-->
+    <!--<param name="sip-options-respond-503-on-busy" value="true"/>-->
+    <!--<param name="sip-messages-respond-200-ok" value="true"/>-->
+    <!--<param name="sip-subscribe-respond-200-ok" value="true"/>-->
+
+    <!-- TLS: disabled by default, set to "true" to enable -->
+    <param name="tls" value="$${internal_ssl_enable}"/>
+    <!-- Set to true to not bind on the normal sip-port but only on the TLS port -->
+    <param name="tls-only" value="false"/>
+    <!-- additional bind parameters for TLS -->
+    <param name="tls-bind-params" value="transport=tls"/>
+    <!-- Port to listen on for TLS requests. (5061 will be used if unspecified) -->
+    <param name="tls-sip-port" value="$${internal_tls_port}"/>
+    <!-- Location of the agent.pem and cafile.pem ssl certificates (needed for TLS server) -->
+    <!--<param name="tls-cert-dir" value=""/>-->
+    <!-- Optionally set the passphrase password used by openSSL to encrypt/decrypt TLS private key files -->
+    <param name="tls-passphrase" value=""/>
+    <!-- Verify the date on TLS certificates -->
+    <param name="tls-verify-date" value="true"/>
+    <!-- TLS verify policy, when registering/inviting gateways with other servers (outbound) or handling inbound registration/invite requests how should we verify their certificate -->
+    <!-- set to 'in' to only verify incoming connections, 'out' to only verify outgoing connections, 'all' to verify all connections, also 'in_subjects', 'out_subjects' and 'all_subjects' for subject validation. Multiple policies can be split with a '|' pipe -->
+    <param name="tls-verify-policy" value="none"/>
+    <!-- Certificate max verify depth to use for validating peer TLS certificates when the verify policy is not none -->
+    <param name="tls-verify-depth" value="2"/>
+    <!-- If the tls-verify-policy is set to subjects_all or subjects_in this sets which subjects are allowed, multiple subjects can be split with a '|' pipe -->
+    <param name="tls-verify-in-subjects" value=""/>
+    <!-- TLS version default: tlsv1,tlsv1.1,tlsv1.2 -->
+    <param name="tls-version" value="$${sip_tls_version}"/>
+
+    <!-- TLS ciphers default: ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH  -->
+    <param name="tls-ciphers" value="$${sip_tls_ciphers}"/>
+
+    <!-- turn on auto-flush during bridge (skip timer sleep when the socket already has data)
+         (reduces delay on latent connections default true, must be disabled explicitly)-->
+    <!--<param name="rtp-autoflush-during-bridge" value="false"/>-->
+
+    <!--If you don't want to pass through timestamps from 1 RTP call to another (on a per call basis with rtp_rewrite_timestamps chanvar)-->
+    <!--<param name="rtp-rewrite-timestamps" value="true"/>-->
+    <!--<param name="pass-rfc2833" value="true"/>-->
+    <!--If you have ODBC support and a working dsn you can use it instead of SQLite-->
+    <!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
+
+    <!-- Or, if you have PGSQL support, you can use that -->
+    <!--<param name="odbc-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE' application_name='freeswitch'" />-->
+
+    <!--Uncomment to set all inbound calls to no media mode-->
+    <!--<param name="inbound-bypass-media" value="true"/>-->
+
+    <!--Uncomment to set all inbound calls to proxy media mode-->
+    <!--<param name="inbound-proxy-media" value="true"/>-->
+
+    <!-- Let calls hit the dialplan before selecting codec for the a-leg -->
+    <param name="inbound-late-negotiation" value="true"/>
+
+    <!-- Allow ZRTP clients to negotiate end-to-end security associations (also enables late negotiation) -->
+    <param name="inbound-zrtp-passthru" value="true"/>
+
+    <!-- this lets anything register -->
+    <!--  comment the next line and uncomment one or both of the other 2 lines for call authentication -->
+    <!-- <param name="accept-blind-reg" value="true"/> -->
+
+    <!-- accept any authentication without actually checking (not a good feature for most people) -->
+    <!-- <param name="accept-blind-auth" value="true"/> -->
+
+    <!-- suppress CNG on this profile or per call with the 'suppress_cng' variable -->
+    <!-- <param name="suppress-cng" value="true"/> -->
+
+    <!--TTL for nonce in sip auth-->
+    <param name="nonce-ttl" value="60"/>
+    <!--Uncomment if you want to force the outbound leg of a bridge to only offer the codec
+        that the originator is using-->
+    <!--<param name="disable-transcoding" value="true"/>-->
+    <!-- Handle 302 Redirect in the dialplan -->
+    <!--<param name="manual-redirect" value="true"/> -->
+    <!-- Disable Transfer -->
+    <!--<param name="disable-transfer" value="true"/> -->
+    <!-- Disable Register -->
+    <!--<param name="disable-register" value="true"/> -->
+    <!-- Used for when phones respond to a challenged ACK with method INVITE in the hash -->
+    <!--<param name="NDLB-broken-auth-hash" value="true"/>-->
+    <!-- add a ;received="<ip>:<port>" to the contact when replying to register for nat handling -->
+    <!--<param name="NDLB-received-in-nat-reg-contact" value="true"/>-->
+    <param name="auth-calls" value="$${internal_auth_calls}"/>
+    <!-- Force the user and auth-user to match. -->
+    <param name="inbound-reg-force-matching-username" value="true"/>
+    <!-- on authed calls, authenticate *all* the packets not just invite -->
+    <param name="auth-all-packets" value="false"/>
+
+    <!-- external_sip_ip
+         Used as the public IP address for SDP.
+         Can be an one of:
+         ip address            - "12.34.56.78"
+         a stun server lookup  - "stun:stun.server.com"
+         a DNS name            - "host:host.server.com"
+         auto                  - Use guessed ip.
+         auto-nat              - Use ip learned from NAT-PMP or UPNP
+    -->
+    <param name="ext-rtp-ip" value="auto-nat"/>
+    <param name="ext-sip-ip" value="auto-nat"/>
+
+    <!-- rtp inactivity timeout -->
+    <param name="rtp-timeout-sec" value="300"/>
+    <param name="rtp-hold-timeout-sec" value="1800"/>
+    <!-- VAD choose one (out is a good choice); -->
+    <!-- <param name="vad" value="in"/> -->
+    <!-- <param name="vad" value="out"/> -->
+    <!-- <param name="vad" value="both"/> -->
+    <!--<param name="alias" value="sip:10.0.1.251:5555"/>-->
+    <!--
+        These are enabled to make the default config work better out of the box.
+        If you need more than ONE domain you'll need to not use these options.
+
+    -->
+    <!--all inbound reg will look in this domain for the users -->
+    <param name="force-register-domain" value="$${domain}"/>
+    <!--force the domain in subscriptions to this value -->
+    <param name="force-subscription-domain" value="$${domain}"/>
+    <!--all inbound reg will stored in the db using this domain -->
+    <param name="force-register-db-domain" value="$${domain}"/>
+
+
+    <!-- for sip over websocket support -->
+    <param name="ws-binding"  value=":5066"/>
+
+    <!-- for sip over secure websocket support -->
+    <!-- You need wss.pem in $${certs_dir} for wss or one will be created for you -->
+    <param name="wss-binding" value=":7443"/>    
+
+    <!--<param name="delete-subs-on-register" value="false"/>-->
+
+    <!-- launch a new thread to process each new inbound register when using heavier backends -->
+    <!-- <param name="inbound-reg-in-new-thread" value="true"/> -->
+
+    <!-- enable rtcp on every channel also can be done per leg basis with rtcp_audio_interval_msec variable set to passthru to pass it across a call-->
+    <!--<param name="rtcp-audio-interval-msec" value="5000"/>-->
+    <!--<param name="rtcp-video-interval-msec" value="5000"/>-->
+
+    <!--force suscription expires to a lower value than requested-->
+    <!--<param name="force-subscription-expires" value="60"/>-->
+
+    <!-- add a random deviation to the expires value of the 202 Accepted -->
+    <!--<param name="sip-subscription-max-deviation" value="120"/>-->
+
+    <!-- disable register and transfer which may be undesirable in a public switch -->
+    <!--<param name="disable-transfer" value="true"/>-->
+    <!--<param name="disable-register" value="true"/>-->
+
+    <!--
+        enable-3pcc can be set to either 'true' or 'proxy', true accepts the call
+        right away, proxy waits until the call has been answered then sends accepts
+    -->
+    <!--<param name="enable-3pcc" value="true"/>-->
+
+    <!-- use at your own risk or if you know what this does.-->
+    <!--<param name="NDLB-force-rport" value="true"/>-->
+    <!--
+        Choose the realm challenge key. Default is auto_to if not set.
+
+        auto_from  - uses the from field as the value for the sip realm.
+        auto_to    - uses the to field as the value for the sip realm.
+        <anyvalue> - you can input any value to use for the sip realm.
+
+        If you want URL dialing to work you'll want to set this to auto_from.
+
+        If you use any other value besides auto_to or auto_from you'll
+        loose the ability to do multiple domains.
+
+        Note: comment out to restore the behavior before 2008-09-29
+    -->
+    <param name="challenge-realm" value="auto_from"/>
+    <!--<param name="disable-rtp-auto-adjust" value="true"/>-->
+    <!-- on inbound calls make the uuid of the session equal to the sip call id of that call -->
+    <!--<param name="inbound-use-callid-as-uuid" value="true"/>-->
+    <!-- on outbound calls set the callid to match the uuid of the session -->
+    <!--<param name="outbound-use-uuid-as-callid" value="true"/>-->
+    <!-- set to false disable this feature -->
+    <!--<param name="rtp-autofix-timing" value="false"/>-->
+
+    <!-- set this param to false if your gateway for some reason hates X- headers that it is supposed to ignore-->
+    <!--<param name="pass-callee-id" value="false"/>-->
+
+    <!-- clear clears them all or supply the name to add or the name
+         prefixed with ~ to remove valid values:
+
+           clear
+           CISCO_SKIP_MARK_BIT_2833
+           SONUS_SEND_INVALID_TIMESTAMP_2833
+
+    -->
+    <!--<param name="auto-rtp-bugs" data="clear"/>-->
+
+    <!-- the following can be used as workaround with bogus SRV/NAPTR records -->
+    <!--<param name="disable-srv" value="false" />-->
+    <!--<param name="disable-naptr" value="false" />-->
+
+    <!-- The following can be used to fine-tune timers within sofia's transport layer
+         Those settings are for advanced users and can safely be left as-is -->
+
+    <!-- Initial retransmission interval (in milliseconds).
+         Set the T1 retransmission interval used by the SIP transaction engine.
+         The T1 is the initial duration used by request retransmission timers A and E (UDP) as well as response retransmission timer G.   -->
+    <!-- <param name="timer-T1" value="500" /> -->
+
+    <!--  Transaction timeout (defaults to T1 * 64).
+         Set the T1x64 timeout value used by the SIP transaction engine.
+         The T1x64 is duration used for timers B, F, H, and J (UDP) by the SIP transaction engine.
+         The timeout value T1x64 can be adjusted separately from the initial retransmission interval T1. -->
+    <!-- <param name="timer-T1X64" value="32000" /> -->
+
+
+    <!-- Maximum retransmission interval (in milliseconds).
+         Set the maximum retransmission interval used by the SIP transaction engine.
+         The T2 is the maximum duration used for the timers E (UDP) and G by the SIP transaction engine.
+         Note that the timer A is not capped by T2. Retransmission interval of INVITE requests grows exponentially
+         until the timer B fires.  -->
+    <!-- <param name="timer-T2" value="4000" /> -->
+
+    <!--
+        Transaction lifetime (in milliseconds).
+        Set the lifetime for completed transactions used by the SIP transaction engine.
+        A completed transaction is kept around for the duration of T4 in order to catch late responses.
+        The T4 is the maximum duration for the messages to stay in the network and the duration of SIP timer K. -->
+    <!-- <param name="timer-T4" value="4000" /> -->
+
+    <!-- Turn on a jitterbuffer for every call -->
+    <!-- <param name="auto-jitterbuffer-msec" value="60"/> -->
+
+
+    <!-- By default mod_sofia will ignore the codecs in the sdp for hold/unhold operations
+         Set this to true if you want to actually parse the sdp and re-negotiate the codec during hold/unhold.
+         It's probably not what you want so stick with the default unless you really need to change this.
+    -->
+    <!--<param name="renegotiate-codec-on-hold" value="true"/>-->
+
+  </settings>
+</profile>
diff --git a/conf/testing/vars.xml b/conf/testing/vars.xml
new file mode 100644 (file)
index 0000000..fe8f4dc
--- /dev/null
@@ -0,0 +1,82 @@
+<include>
+  <X-PRE-PROCESS cmd="set" data="default_password=1234"/>
+  <X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/en/us/callie"/>
+  <X-PRE-PROCESS cmd="set" data="domain=$${local_ip_v4}"/>
+  <X-PRE-PROCESS cmd="set" data="domain_name=$${domain}"/>
+  <X-PRE-PROCESS cmd="set" data="hold_music=local_stream://moh"/>
+  <X-PRE-PROCESS cmd="set" data="use_profile=external"/>
+  <X-PRE-PROCESS cmd="set" data="rtp_sdes_suites=AEAD_AES_256_GCM_8|AEAD_AES_128_GCM_8|AES_CM_256_HMAC_SHA1_80|AES_CM_192_HMAC_SHA1_80|AES_CM_128_HMAC_SHA1_80|AES_CM_256_HMAC_SHA1_32|AES_CM_192_HMAC_SHA1_32|AES_CM_128_HMAC_SHA1_32|AES_CM_128_NULL_AUTH"/>
+  <X-PRE-PROCESS cmd="set" data="zrtp_secure_media=true"/>
+  <X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,VP8,H264"/>
+  <X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,G722,PCMU,PCMA,VP8,H264"/>
+  <X-PRE-PROCESS cmd="set" data="outbound_caller_name=FreeSWITCH"/>
+  <X-PRE-PROCESS cmd="set" data="outbound_caller_id=0000000000"/>
+
+  <X-PRE-PROCESS cmd="set" data="call_debug=false"/>
+  <X-PRE-PROCESS cmd="set" data="console_loglevel=debug"/>
+  <X-PRE-PROCESS cmd="set" data="presence_privacy=false"/>
+
+  <X-PRE-PROCESS cmd="set" data="au-ring=%(400,200,383,417);%(400,2000,383,417)"/>
+  <X-PRE-PROCESS cmd="set" data="be-ring=%(1000,3000,425)"/>
+  <X-PRE-PROCESS cmd="set" data="ca-ring=%(2000,4000,440,480)"/>
+  <X-PRE-PROCESS cmd="set" data="cn-ring=%(1000,4000,450)"/>
+  <X-PRE-PROCESS cmd="set" data="cy-ring=%(1500,3000,425)"/>
+  <X-PRE-PROCESS cmd="set" data="cz-ring=%(1000,4000,425)"/>
+  <X-PRE-PROCESS cmd="set" data="de-ring=%(1000,4000,425)"/>
+  <X-PRE-PROCESS cmd="set" data="dk-ring=%(1000,4000,425)"/>
+  <X-PRE-PROCESS cmd="set" data="dz-ring=%(1500,3500,425)"/>
+  <X-PRE-PROCESS cmd="set" data="eg-ring=%(2000,1000,475,375)"/>
+  <X-PRE-PROCESS cmd="set" data="es-ring=%(1500,3000,425)"/>
+  <X-PRE-PROCESS cmd="set" data="fi-ring=%(1000,4000,425)"/>
+  <X-PRE-PROCESS cmd="set" data="fr-ring=%(1500,3500,440)"/>
+  <X-PRE-PROCESS cmd="set" data="hk-ring=%(400,200,440,480);%(400,3000,440,480)"/>
+  <X-PRE-PROCESS cmd="set" data="hu-ring=%(1250,3750,425)"/>
+  <X-PRE-PROCESS cmd="set" data="il-ring=%(1000,3000,400)"/>
+  <X-PRE-PROCESS cmd="set" data="in-ring=%(400,200,425,375);%(400,2000,425,375)"/>
+  <X-PRE-PROCESS cmd="set" data="jp-ring=%(1000,2000,420,380)"/>
+  <X-PRE-PROCESS cmd="set" data="ko-ring=%(1000,2000,440,480)"/>
+  <X-PRE-PROCESS cmd="set" data="pk-ring=%(1000,2000,400)"/>
+  <X-PRE-PROCESS cmd="set" data="pl-ring=%(1000,4000,425)"/>
+  <X-PRE-PROCESS cmd="set" data="ro-ring=%(1850,4150,475,425)"/>
+  <X-PRE-PROCESS cmd="set" data="rs-ring=%(1000,4000,425)"/>
+  <X-PRE-PROCESS cmd="set" data="ru-ring=%(800,3200,425)"/>
+  <X-PRE-PROCESS cmd="set" data="sa-ring=%(1200,4600,425)"/>
+  <X-PRE-PROCESS cmd="set" data="tr-ring=%(2000,4000,450)"/>
+  <X-PRE-PROCESS cmd="set" data="uk-ring=%(400,200,400,450);%(400,2000,400,450)"/>
+  <X-PRE-PROCESS cmd="set" data="us-ring=%(2000,4000,440,480)"/>
+  <X-PRE-PROCESS cmd="set" data="bong-ring=v=-7;%(100,0,941.0,1477.0);v=-7;>=2;+=.1;%(1400,0,350,440)"/>
+  <X-PRE-PROCESS cmd="set" data="beep=%(1000,0,640)"/>
+  <X-PRE-PROCESS cmd="set" data="sit=%(274,0,913.8);%(274,0,1370.6);%(380,0,1776.7)"/>
+
+  <X-PRE-PROCESS cmd="set" data="sip_tls_version=tlsv1,tlsv1.1,tlsv1.2"/>
+  <X-PRE-PROCESS cmd="set" data="sip_tls_ciphers=ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"/>
+  
+  <!-- Internal SIP Profile -->
+  <X-PRE-PROCESS cmd="set" data="internal_auth_calls=true"/>
+  <X-PRE-PROCESS cmd="set" data="internal_sip_port=5080"/>
+  <X-PRE-PROCESS cmd="set" data="internal_tls_port=5081"/>
+  <X-PRE-PROCESS cmd="set" data="internal_ssl_enable=false"/>
+
+  <!-- External SIP Profile -->
+  <X-PRE-PROCESS cmd="set" data="external_auth_calls=false"/>
+  <X-PRE-PROCESS cmd="set" data="external_sip_port=5090"/>
+  <X-PRE-PROCESS cmd="set" data="external_tls_port=5091"/>
+  <X-PRE-PROCESS cmd="set" data="external_ssl_enable=false"/>
+
+  <!-- Setting the max bandwdith -->
+  <X-PRE-PROCESS cmd="set" data="rtp_video_max_bandwidth_in=1mb"/>
+  <X-PRE-PROCESS cmd="set" data="rtp_video_max_bandwidth_out=1mb"/>
+
+  <!-- WebRTC Video -->
+  <!-- Suppress CNG for WebRTC Audio -->
+  <X-PRE-PROCESS cmd="set" data="suppress_cng=true"/>
+  <!-- Enable liberal DTMF for those that can't get it right -->
+  <X-PRE-PROCESS cmd="set" data="rtp_liberal_dtmf=true"/>
+  <!-- Helps with WebRTC Audio -->
+  <X-PRE-PROCESS cmd="set" data="answer_delay=4000"/>
+
+  <!-- Stock Video Avatars -->
+  <X-PRE-PROCESS cmd="set" data="video_mute_png=$${images_dir}/default-mute.png"/>
+  <X-PRE-PROCESS cmd="set" data="video_no_avatar_png=$${images_dir}/default-avatar.png"/>
+
+</include>