/*****************************************************/
/**  Autogenerated cmu_us_slt f0 carts    */
/*****************************************************/

#include "cst_string.h"
#include "cst_cart.h"
#include "cmu_us_slt_cg_f0_trees.h"

static const cst_cart_node cmu_us_slt_f0_zh_204_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_zh_204_NO_0000, (cst_val *)&val_0000},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0001 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0002 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_zh_204_feat_table[] = {
"lisp_cg_position_in_phrasep",
NULL };

const cst_cart cmu_us_slt_f0_zh_204_cart = {
  cmu_us_slt_f0_zh_204_cart_nodes,
  cmu_us_slt_f0_zh_204_feat_table
};

static const cst_cart_node cmu_us_slt_f0_zh_205_cart_nodes[] = {
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0003 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_zh_205_feat_table[] = {
NULL };

const cst_cart cmu_us_slt_f0_zh_205_cart = {
  cmu_us_slt_f0_zh_205_cart_nodes,
  cmu_us_slt_f0_zh_205_feat_table
};

static const cst_cart_node cmu_us_slt_f0_zh_206_cart_nodes[] = {
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0004 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_zh_206_feat_table[] = {
NULL };

const cst_cart cmu_us_slt_f0_zh_206_cart = {
  cmu_us_slt_f0_zh_206_cart_nodes,
  cmu_us_slt_f0_zh_206_feat_table
};

static const cst_cart_node cmu_us_slt_f0_oy_131_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_oy_131_NO_0000, (cst_val *)&val_0005},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_oy_131_NO_0001, (cst_val *)&val_0006},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0007 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0008 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_oy_131_NO_0004, (cst_val *)&val_0009},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_oy_131_NO_0005, (cst_val *)&val_0010},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0011 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0012 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0013 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_oy_131_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"lisp_cg_phone_rindex",
NULL };

const cst_cart cmu_us_slt_f0_oy_131_cart = {
  cmu_us_slt_f0_oy_131_cart_nodes,
  cmu_us_slt_f0_oy_131_feat_table
};

static const cst_cart_node cmu_us_slt_f0_oy_132_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_oy_132_NO_0000, (cst_val *)&val_0014},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0015 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_oy_132_NO_0002, (cst_val *)&val_0016},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0017 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0018 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_oy_132_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_oy_132_cart = {
  cmu_us_slt_f0_oy_132_cart_nodes,
  cmu_us_slt_f0_oy_132_feat_table
};

static const cst_cart_node cmu_us_slt_f0_oy_133_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_oy_133_NO_0000, (cst_val *)&val_0019},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_oy_133_NO_0001, (cst_val *)&val_0020},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0021 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0022 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_oy_133_NO_0004, (cst_val *)&val_0023},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0024 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0025 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_oy_133_feat_table[] = {
"lisp_cg_position_in_phrasep",
"lisp_cg_state_place",
"R:mcep_link.parent.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_oy_133_cart = {
  cmu_us_slt_f0_oy_133_cart_nodes,
  cmu_us_slt_f0_oy_133_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ch_41_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ch_41_NO_0000, (cst_val *)&val_0026},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ch_41_NO_0001, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0028 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0029 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ch_41_NO_0004, (cst_val *)&val_0030},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ch_41_NO_0005, (cst_val *)&val_0031},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0032 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0033 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ch_41_NO_0008, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0035 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0036 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ch_41_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_vrnd",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
NULL };

const cst_cart cmu_us_slt_f0_ch_41_cart = {
  cmu_us_slt_f0_ch_41_cart_nodes,
  cmu_us_slt_f0_ch_41_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ch_42_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ch_42_NO_0000, (cst_val *)&val_0037},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ch_42_NO_0001, (cst_val *)&val_0038},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0039 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0040 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ch_42_NO_0004, (cst_val *)&val_0041},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ch_42_NO_0005, (cst_val *)&val_0042},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ch_42_NO_0006, (cst_val *)&val_0043},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0044 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0045 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0046 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ch_42_NO_0010, (cst_val *)&val_0047},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0048 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0049 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ch_42_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
"lisp_cg_phone_place",
NULL };

const cst_cart cmu_us_slt_f0_ch_42_cart = {
  cmu_us_slt_f0_ch_42_cart_nodes,
  cmu_us_slt_f0_ch_42_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ch_43_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ch_43_NO_0000, (cst_val *)&val_0050},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ch_43_NO_0001, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0051 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0052 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ch_43_NO_0004, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0053 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ch_43_NO_0006, (cst_val *)&val_0054},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0055 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0056 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ch_43_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_vrnd",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_ch_43_cart = {
  cmu_us_slt_f0_ch_43_cart_nodes,
  cmu_us_slt_f0_ch_43_feat_table
};

static const cst_cart_node cmu_us_slt_f0_aw_21_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_21_NO_0000, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0057 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_21_NO_0002, (cst_val *)&val_0034},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aw_21_NO_0003, (cst_val *)&val_0058},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0059 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0060 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_21_NO_0006, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0062 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aw_21_NO_0008, (cst_val *)&val_0063},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_21_NO_0009, (cst_val *)&val_0064},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_21_NO_0010, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0065 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0066 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0067 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aw_21_NO_0014, (cst_val *)&val_0068},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aw_21_NO_0015, (cst_val *)&val_0020},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0069 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0070 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0071 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_aw_21_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"lisp_cg_state_place",
NULL };

const cst_cart cmu_us_slt_f0_aw_21_cart = {
  cmu_us_slt_f0_aw_21_cart_nodes,
  cmu_us_slt_f0_aw_21_feat_table
};

static const cst_cart_node cmu_us_slt_f0_aw_22_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aw_22_NO_0000, (cst_val *)&val_0072},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_22_NO_0001, (cst_val *)&val_0073},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aw_22_NO_0002, (cst_val *)&val_0074},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0075 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0076 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0077 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_22_NO_0006, (cst_val *)&val_0061},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_22_NO_0007, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0078 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0079 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_22_NO_0010, (cst_val *)&val_0027},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_22_NO_0011, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0080 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0081 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aw_22_NO_0014, (cst_val *)&val_0082},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0083 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aw_22_NO_0016, (cst_val *)&val_0084},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0085 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0086 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_aw_22_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_aw_22_cart = {
  cmu_us_slt_f0_aw_22_cart_nodes,
  cmu_us_slt_f0_aw_22_feat_table
};

static const cst_cart_node cmu_us_slt_f0_aw_23_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_23_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aw_23_NO_0001, (cst_val *)&val_0087},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0088 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0089 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_23_NO_0004, (cst_val *)&val_0073},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aw_23_NO_0005, (cst_val *)&val_0090},
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aw_23_NO_0006, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0091 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0092 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0093 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aw_23_NO_0010, (cst_val *)&val_0094},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0095 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aw_23_NO_0012, (cst_val *)&val_0096},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0097 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0098 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_aw_23_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_aw_23_cart = {
  cmu_us_slt_f0_aw_23_cart_nodes,
  cmu_us_slt_f0_aw_23_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ow_126_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_126_NO_0000, (cst_val *)&val_0099},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_126_NO_0001, (cst_val *)&val_0100},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_126_NO_0002, (cst_val *)&val_0101},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0102 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0103 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_126_NO_0005, (cst_val *)&val_0104},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_126_NO_0006, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0106 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0107 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0108 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_126_NO_0010, (cst_val *)&val_0109},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_126_NO_0011, (cst_val *)&val_0110},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_126_NO_0012, (cst_val *)&val_0111},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0112 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0113 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_126_NO_0015, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0114 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_126_NO_0017, (cst_val *)&val_0115},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0116 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0117 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_126_NO_0020, (cst_val *)&val_0118},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_126_NO_0021, (cst_val *)&val_0119},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_126_NO_0022, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0120 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0121 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0122 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_126_NO_0026, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0124 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0125 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ow_126_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
NULL };

const cst_cart cmu_us_slt_f0_ow_126_cart = {
  cmu_us_slt_f0_ow_126_cart_nodes,
  cmu_us_slt_f0_ow_126_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ow_127_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_127_NO_0000, (cst_val *)&val_0126},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_127_NO_0001, (cst_val *)&val_0127},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_127_NO_0002, (cst_val *)&val_0034},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_127_NO_0003, (cst_val *)&val_0128},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0129 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0130 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_127_NO_0006, (cst_val *)&val_0131},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_127_NO_0007, (cst_val *)&val_0132},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0133 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_127_NO_0009, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0134 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0135 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0136 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_127_NO_0013, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0137 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0138 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_127_NO_0016, (cst_val *)&val_0061},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_127_NO_0017, (cst_val *)&val_0139},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0140 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0141 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_127_NO_0020, (cst_val *)&val_0142},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_127_NO_0021, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0143 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_127_NO_0023, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0144 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_127_NO_0025, (cst_val *)&val_0145},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0146 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0147 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_127_NO_0028, (cst_val *)&val_0148},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_127_NO_0029, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0149 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_127_NO_0031, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0150 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0151 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_127_NO_0034, (cst_val *)&val_0152},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0153 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0154 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ow_127_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"lisp_cg_state_rindex",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
NULL };

const cst_cart cmu_us_slt_f0_ow_127_cart = {
  cmu_us_slt_f0_ow_127_cart_nodes,
  cmu_us_slt_f0_ow_127_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ow_128_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_128_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_128_NO_0001, (cst_val *)&val_0155},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0156 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0157 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_128_NO_0004, (cst_val *)&val_0158},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0159 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_128_NO_0006, (cst_val *)&val_0160},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_128_NO_0007, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0161 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0162 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_128_NO_0010, (cst_val *)&val_0155},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0163 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ow_128_NO_0012, (cst_val *)&val_0034},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ow_128_NO_0013, (cst_val *)&val_0164},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0165 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0166 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0167 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ow_128_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"lisp_cg_phone_index",
NULL };

const cst_cart cmu_us_slt_f0_ow_128_cart = {
  cmu_us_slt_f0_ow_128_cart_nodes,
  cmu_us_slt_f0_ow_128_feat_table
};

static const cst_cart_node cmu_us_slt_f0_b_36_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_36_NO_0000, (cst_val *)&val_0168},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_36_NO_0001, (cst_val *)&val_0169},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0170 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_36_NO_0003, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0171 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0172 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_36_NO_0006, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0173 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_36_NO_0008, (cst_val *)&val_0073},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_b_36_NO_0009, (cst_val *)&val_0174},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0175 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_b_36_NO_0011, (cst_val *)&val_0176},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_b_36_NO_0012, (cst_val *)&val_0177},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0178 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0179 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_36_NO_0015, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0180 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_b_36_NO_0017, (cst_val *)&val_0181},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0182 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0183 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0184 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_b_36_feat_table[] = {
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_b_36_cart = {
  cmu_us_slt_f0_b_36_cart_nodes,
  cmu_us_slt_f0_b_36_feat_table
};

static const cst_cart_node cmu_us_slt_f0_b_37_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_b_37_NO_0000, (cst_val *)&val_0185},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_b_37_NO_0001, (cst_val *)&val_0186},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_37_NO_0002, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0187 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0188 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0189 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_b_37_NO_0006, (cst_val *)&val_0190},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0191 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_b_37_NO_0008, (cst_val *)&val_0192},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_37_NO_0009, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0193 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0194 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_37_NO_0012, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0196 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0197 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_b_37_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
NULL };

const cst_cart cmu_us_slt_f0_b_37_cart = {
  cmu_us_slt_f0_b_37_cart_nodes,
  cmu_us_slt_f0_b_37_feat_table
};

static const cst_cart_node cmu_us_slt_f0_b_38_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_38_NO_0000, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0198 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_38_NO_0002, (cst_val *)&val_0199},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0200 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_38_NO_0004, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0201 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_38_NO_0006, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0203 },
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_b_38_NO_0008, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0204 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0205 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_b_38_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.p.ph_vfront",
NULL };

const cst_cart cmu_us_slt_f0_b_38_cart = {
  cmu_us_slt_f0_b_38_cart_nodes,
  cmu_us_slt_f0_b_38_feat_table
};

static const cst_cart_node cmu_us_slt_f0_g_76_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_g_76_NO_0000, (cst_val *)&val_0206},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_g_76_NO_0001, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0207 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0208 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_g_76_NO_0004, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0209 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0210 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_g_76_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
NULL };

const cst_cart cmu_us_slt_f0_g_76_cart = {
  cmu_us_slt_f0_g_76_cart_nodes,
  cmu_us_slt_f0_g_76_feat_table
};

static const cst_cart_node cmu_us_slt_f0_g_77_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_g_77_NO_0000, (cst_val *)&val_0211},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_g_77_NO_0001, (cst_val *)&val_0212},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0213 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0214 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_g_77_NO_0004, (cst_val *)&val_0215},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0216 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_g_77_NO_0006, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0217 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_g_77_NO_0008, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0218 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0219 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_g_77_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
NULL };

const cst_cart cmu_us_slt_f0_g_77_cart = {
  cmu_us_slt_f0_g_77_cart_nodes,
  cmu_us_slt_f0_g_77_feat_table
};

static const cst_cart_node cmu_us_slt_f0_g_78_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_g_78_NO_0000, (cst_val *)&val_0220},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_g_78_NO_0001, (cst_val *)&val_0221},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_g_78_NO_0002, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0222 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_g_78_NO_0004, (cst_val *)&val_0223},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0224 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0225 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0226 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_g_78_NO_0008, (cst_val *)&val_0073},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_g_78_NO_0009, (cst_val *)&val_0227},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0228 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0229 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_g_78_NO_0012, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0230 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0231 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_g_78_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
NULL };

const cst_cart cmu_us_slt_f0_g_78_cart = {
  cmu_us_slt_f0_g_78_cart_nodes,
  cmu_us_slt_f0_g_78_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ng_121_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_121_NO_0000, (cst_val *)&val_0232},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ng_121_NO_0001, (cst_val *)&val_0034},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ng_121_NO_0002, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0233 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_121_NO_0004, (cst_val *)&val_0234},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0235 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0236 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0237 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ng_121_NO_0008, (cst_val *)&val_0034},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_121_NO_0009, (cst_val *)&val_0238},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0239 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0240 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_121_NO_0012, (cst_val *)&val_0047},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_121_NO_0013, (cst_val *)&val_0241},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ng_121_NO_0014, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0242 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0243 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0244 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0245 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ng_121_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
NULL };

const cst_cart cmu_us_slt_f0_ng_121_cart = {
  cmu_us_slt_f0_ng_121_cart_nodes,
  cmu_us_slt_f0_ng_121_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ng_122_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_122_NO_0000, (cst_val *)&val_0246},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_122_NO_0001, (cst_val *)&val_0247},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0248 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0249 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_122_NO_0004, (cst_val *)&val_0250},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_122_NO_0005, (cst_val *)&val_0251},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0252 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_122_NO_0007, (cst_val *)&val_0253},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0254 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0255 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_122_NO_0010, (cst_val *)&val_0256},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ng_122_NO_0011, (cst_val *)&val_0064},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_122_NO_0012, (cst_val *)&val_0257},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0258 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0259 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_122_NO_0015, (cst_val *)&val_0260},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0261 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_122_NO_0017, (cst_val *)&val_0262},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0263 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0264 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ng_122_NO_0020, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0265 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0266 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ng_122_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
NULL };

const cst_cart cmu_us_slt_f0_ng_122_cart = {
  cmu_us_slt_f0_ng_122_cart_nodes,
  cmu_us_slt_f0_ng_122_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ng_123_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_123_NO_0000, (cst_val *)&val_0267},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_123_NO_0001, (cst_val *)&val_0268},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0269 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0270 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_123_NO_0004, (cst_val *)&val_0271},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ng_123_NO_0005, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0272 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0273 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_123_NO_0008, (cst_val *)&val_0274},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0275 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ng_123_NO_0010, (cst_val *)&val_0276},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0277 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0278 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ng_123_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
NULL };

const cst_cart cmu_us_slt_f0_ng_123_cart = {
  cmu_us_slt_f0_ng_123_cart_nodes,
  cmu_us_slt_f0_ng_123_feat_table
};

static const cst_cart_node cmu_us_slt_f0_uw_179_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_179_NO_0000, (cst_val *)&val_0279},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_179_NO_0001, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0280 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_179_NO_0003, (cst_val *)&val_0281},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_179_NO_0004, (cst_val *)&val_0282},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0283 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0284 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0285 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_179_NO_0008, (cst_val *)&val_0286},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_179_NO_0009, (cst_val *)&val_0034},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_179_NO_0010, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0288 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_179_NO_0012, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0289 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0290 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_179_NO_0015, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0291 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0292 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0293 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_uw_179_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
NULL };

const cst_cart cmu_us_slt_f0_uw_179_cart = {
  cmu_us_slt_f0_uw_179_cart_nodes,
  cmu_us_slt_f0_uw_179_feat_table
};

static const cst_cart_node cmu_us_slt_f0_uw_180_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_180_NO_0000, (cst_val *)&val_0294},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_180_NO_0001, (cst_val *)&val_0295},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0296 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0297 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_180_NO_0004, (cst_val *)&val_0298},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_180_NO_0005, (cst_val *)&val_0027},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_180_NO_0006, (cst_val *)&val_0299},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0300 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0301 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_180_NO_0009, (cst_val *)&val_0034},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_180_NO_0010, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0302 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0303 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0304 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_180_NO_0014, (cst_val *)&val_0305},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0306 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0307 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_uw_180_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_uw_180_cart = {
  cmu_us_slt_f0_uw_180_cart_nodes,
  cmu_us_slt_f0_uw_180_feat_table
};

static const cst_cart_node cmu_us_slt_f0_uw_181_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_181_NO_0000, (cst_val *)&val_0308},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_181_NO_0001, (cst_val *)&val_0309},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_181_NO_0002, (cst_val *)&val_0169},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0310 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0311 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_181_NO_0005, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0312 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0313 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_181_NO_0008, (cst_val *)&val_0314},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_181_NO_0009, (cst_val *)&val_0315},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0316 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0317 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_181_NO_0012, (cst_val *)&val_0318},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_181_NO_0013, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0319 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_uw_181_NO_0015, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0320 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0321 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uw_181_NO_0018, (cst_val *)&val_0322},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0323 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0324 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_uw_181_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:HMMstate.n.name",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.n.ph_vc",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_uw_181_cart = {
  cmu_us_slt_f0_uw_181_cart_nodes,
  cmu_us_slt_f0_uw_181_feat_table
};

static const cst_cart_node cmu_us_slt_f0_sh_156_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_156_NO_0000, (cst_val *)&val_0325},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_156_NO_0001, (cst_val *)&val_0115},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0326 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0327 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_sh_156_NO_0004, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0328 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_sh_156_NO_0006, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0329 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_sh_156_NO_0008, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0330 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_156_NO_0010, (cst_val *)&val_0331},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0332 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0333 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_sh_156_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.n.ph_vfront",
NULL };

const cst_cart cmu_us_slt_f0_sh_156_cart = {
  cmu_us_slt_f0_sh_156_cart_nodes,
  cmu_us_slt_f0_sh_156_feat_table
};

static const cst_cart_node cmu_us_slt_f0_sh_157_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0000, (cst_val *)&val_0334},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_sh_157_NO_0001, (cst_val *)&val_0027},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0002, (cst_val *)&val_0335},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0003, (cst_val *)&val_0336},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0337 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0338 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0339 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0007, (cst_val *)&val_0020},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0008, (cst_val *)&val_0340},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0341 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0342 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0011, (cst_val *)&val_0340},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0343 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0344 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_sh_157_NO_0014, (cst_val *)&val_0061},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0015, (cst_val *)&val_0345},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0346 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0347 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0018, (cst_val *)&val_0348},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_sh_157_NO_0019, (cst_val *)&val_0199},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0349 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0021, (cst_val *)&val_0350},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_sh_157_NO_0022, (cst_val *)&val_0351},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0352 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0024, (cst_val *)&val_0353},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0354 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0355 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0356 },
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0028, (cst_val *)&val_0357},
{ 11, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0029, (cst_val *)&val_0041},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_157_NO_0030, (cst_val *)&val_0358},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0359 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_sh_157_NO_0032, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0360 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0361 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0362 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_sh_157_NO_0036, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0363 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0364 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_sh_157_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"lisp_cg_position_in_phrasep",
"lisp_cg_state_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"lisp_cg_phone_rindex",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
NULL };

const cst_cart cmu_us_slt_f0_sh_157_cart = {
  cmu_us_slt_f0_sh_157_cart_nodes,
  cmu_us_slt_f0_sh_157_feat_table
};

static const cst_cart_node cmu_us_slt_f0_sh_158_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_158_NO_0000, (cst_val *)&val_0365},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0366 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_sh_158_NO_0002, (cst_val *)&val_0367},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_sh_158_NO_0003, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0368 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0369 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0370 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_sh_158_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
NULL };

const cst_cart cmu_us_slt_f0_sh_158_cart = {
  cmu_us_slt_f0_sh_158_cart_nodes,
  cmu_us_slt_f0_sh_158_feat_table
};

static const cst_cart_node cmu_us_slt_f0_uh_174_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uh_174_NO_0000, (cst_val *)&val_0371},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0372 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0373 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_uh_174_feat_table[] = {
"lisp_cg_position_in_phrasep",
NULL };

const cst_cart cmu_us_slt_f0_uh_174_cart = {
  cmu_us_slt_f0_uh_174_cart_nodes,
  cmu_us_slt_f0_uh_174_feat_table
};

static const cst_cart_node cmu_us_slt_f0_uh_175_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uh_175_NO_0000, (cst_val *)&val_0374},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0375 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0376 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_uh_175_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_uh_175_cart = {
  cmu_us_slt_f0_uh_175_cart_nodes,
  cmu_us_slt_f0_uh_175_feat_table
};

static const cst_cart_node cmu_us_slt_f0_uh_176_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_uh_176_NO_0000, (cst_val *)&val_0377},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0378 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0379 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_uh_176_feat_table[] = {
"lisp_cg_position_in_phrasep",
NULL };

const cst_cart cmu_us_slt_f0_uh_176_cart = {
  cmu_us_slt_f0_uh_176_cart_nodes,
  cmu_us_slt_f0_uh_176_feat_table
};

static const cst_cart_node cmu_us_slt_f0_hh_81_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_81_NO_0000, (cst_val *)&val_0380},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_81_NO_0001, (cst_val *)&val_0034},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_81_NO_0002, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0381 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_81_NO_0004, (cst_val *)&val_0038},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_81_NO_0005, (cst_val *)&val_0382},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_81_NO_0006, (cst_val *)&val_0383},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0384 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0385 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0386 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0387 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_81_NO_0011, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0388 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0389 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_81_NO_0014, (cst_val *)&val_0390},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_81_NO_0015, (cst_val *)&val_0391},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0392 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_81_NO_0017, (cst_val *)&val_0393},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0394 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0395 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_81_NO_0020, (cst_val *)&val_0396},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_81_NO_0021, (cst_val *)&val_0397},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0398 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0399 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_81_NO_0024, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0400 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0401 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_hh_81_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_vlng",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
NULL };

const cst_cart cmu_us_slt_f0_hh_81_cart = {
  cmu_us_slt_f0_hh_81_cart_nodes,
  cmu_us_slt_f0_hh_81_feat_table
};

static const cst_cart_node cmu_us_slt_f0_hh_82_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_82_NO_0000, (cst_val *)&val_0402},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_82_NO_0001, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0403 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_82_NO_0003, (cst_val *)&val_0404},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_82_NO_0004, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0405 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0406 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0407 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_82_NO_0008, (cst_val *)&val_0408},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0409 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_82_NO_0010, (cst_val *)&val_0410},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_82_NO_0011, (cst_val *)&val_0411},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0412 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0413 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0414 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_hh_82_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_hh_82_cart = {
  cmu_us_slt_f0_hh_82_cart_nodes,
  cmu_us_slt_f0_hh_82_feat_table
};

static const cst_cart_node cmu_us_slt_f0_hh_83_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_83_NO_0000, (cst_val *)&val_0415},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_83_NO_0001, (cst_val *)&val_0416},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_83_NO_0002, (cst_val *)&val_0417},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_83_NO_0003, (cst_val *)&val_0074},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0418 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0419 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_83_NO_0006, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0420 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0421 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_83_NO_0009, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0422 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0423 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_hh_83_NO_0012, (cst_val *)&val_0424},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_83_NO_0013, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0425 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0426 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_83_NO_0016, (cst_val *)&val_0034},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_83_NO_0017, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0427 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0428 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_83_NO_0020, (cst_val *)&val_0030},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_hh_83_NO_0021, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0429 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0430 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0431 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_hh_83_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_state_rindex",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.n.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
NULL };

const cst_cart cmu_us_slt_f0_hh_83_cart = {
  cmu_us_slt_f0_hh_83_cart_nodes,
  cmu_us_slt_f0_hh_83_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ae_6_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_6_NO_0000, (cst_val *)&val_0432},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_6_NO_0001, (cst_val *)&val_0287},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_6_NO_0002, (cst_val *)&val_0433},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0434 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0435 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_6_NO_0005, (cst_val *)&val_0105},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_6_NO_0006, (cst_val *)&val_0436},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_6_NO_0007, (cst_val *)&val_0437},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0438 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0439 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0440 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_6_NO_0011, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0442 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_6_NO_0013, (cst_val *)&val_0443},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0444 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0445 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_6_NO_0016, (cst_val *)&val_0105},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_6_NO_0017, (cst_val *)&val_0446},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_6_NO_0018, (cst_val *)&val_0447},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_6_NO_0019, (cst_val *)&val_0448},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0449 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0450 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0451 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_6_NO_0023, (cst_val *)&val_0452},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_6_NO_0024, (cst_val *)&val_0448},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0453 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0454 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0455 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_6_NO_0028, (cst_val *)&val_0064},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_6_NO_0029, (cst_val *)&val_0456},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_6_NO_0030, (cst_val *)&val_0457},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0458 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_6_NO_0032, (cst_val *)&val_0351},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0459 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0460 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_6_NO_0035, (cst_val *)&val_0461},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0462 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0463 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_6_NO_0038, (cst_val *)&val_0464},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_6_NO_0039, (cst_val *)&val_0034},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_6_NO_0040, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0465 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0466 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0467 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_6_NO_0044, (cst_val *)&val_0468},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0469 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0470 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ae_6_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"lisp_cg_state_rindex",
"R:mcep_link.parent.R:HMMstate.p.name",
"lisp_cg_state_place",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
NULL };

const cst_cart cmu_us_slt_f0_ae_6_cart = {
  cmu_us_slt_f0_ae_6_cart_nodes,
  cmu_us_slt_f0_ae_6_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ae_7_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0000, (cst_val *)&val_0471},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0001, (cst_val *)&val_0472},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0002, (cst_val *)&val_0473},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0003, (cst_val *)&val_0474},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0475 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0476 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0477 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0007, (cst_val *)&val_0478},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0008, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0479 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0010, (cst_val *)&val_0480},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0481 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0012, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0482 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0014, (cst_val *)&val_0483},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0484 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0016, (cst_val *)&val_0485},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0486 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0018, (cst_val *)&val_0487},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0488 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0489 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0021, (cst_val *)&val_0064},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0022, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0490 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0491 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0492 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0026, (cst_val *)&val_0493},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0027, (cst_val *)&val_0494},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0028, (cst_val *)&val_0127},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0029, (cst_val *)&val_0495},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0030, (cst_val *)&val_0027},
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0031, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0496 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0497 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0034, (cst_val *)&val_0498},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0499 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0500 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0037, (cst_val *)&val_0027},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0038, (cst_val *)&val_0501},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0502 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0503 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0504 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0505 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0043, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0506 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0507 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0046, (cst_val *)&val_0508},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0047, (cst_val *)&val_0027},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0048, (cst_val *)&val_0064},
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0049, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0509 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0510 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0511 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0053, (cst_val *)&val_0073},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0054, (cst_val *)&val_0512},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0513 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0514 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0057, (cst_val *)&val_0351},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0515 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0516 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0060, (cst_val *)&val_0064},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0061, (cst_val *)&val_0517},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_7_NO_0062, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0518 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0519 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0520 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0066, (cst_val *)&val_0521},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0522 },
{ 14, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_7_NO_0068, (cst_val *)&val_0523},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0524 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0525 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ae_7_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.name",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"lisp_cg_state_rindex",
NULL };

const cst_cart cmu_us_slt_f0_ae_7_cart = {
  cmu_us_slt_f0_ae_7_cart_nodes,
  cmu_us_slt_f0_ae_7_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ae_8_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_8_NO_0000, (cst_val *)&val_0526},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_8_NO_0001, (cst_val *)&val_0527},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_8_NO_0002, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0528 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0529 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0530 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_8_NO_0006, (cst_val *)&val_0322},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_8_NO_0007, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0531 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_8_NO_0009, (cst_val *)&val_0532},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_8_NO_0010, (cst_val *)&val_0064},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_8_NO_0011, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0533 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0534 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_8_NO_0014, (cst_val *)&val_0535},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_8_NO_0015, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0536 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0537 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ae_8_NO_0018, (cst_val *)&val_0538},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_8_NO_0019, (cst_val *)&val_0539},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0540 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0541 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0542 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0543 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_8_NO_0024, (cst_val *)&val_0034},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ae_8_NO_0025, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0544 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0545 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0546 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ae_8_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.name",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
NULL };

const cst_cart cmu_us_slt_f0_ae_8_cart = {
  cmu_us_slt_f0_ae_8_cart_nodes,
  cmu_us_slt_f0_ae_8_feat_table
};

static const cst_cart_node cmu_us_slt_f0_y_194_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_y_194_NO_0000, (cst_val *)&val_0547},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_y_194_NO_0001, (cst_val *)&val_0548},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0549 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_y_194_NO_0003, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0550 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0551 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_y_194_NO_0006, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0552 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0553 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_y_194_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
NULL };

const cst_cart cmu_us_slt_f0_y_194_cart = {
  cmu_us_slt_f0_y_194_cart_nodes,
  cmu_us_slt_f0_y_194_feat_table
};

static const cst_cart_node cmu_us_slt_f0_y_195_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_y_195_NO_0000, (cst_val *)&val_0554},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_y_195_NO_0001, (cst_val *)&val_0555},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0556 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0557 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_y_195_NO_0004, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0558 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_y_195_NO_0006, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0559 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_y_195_NO_0008, (cst_val *)&val_0560},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0561 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0562 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_y_195_feat_table[] = {
"lisp_cg_position_in_phrasep",
"lisp_cg_state_rindex",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_y_195_cart = {
  cmu_us_slt_f0_y_195_cart_nodes,
  cmu_us_slt_f0_y_195_feat_table
};

static const cst_cart_node cmu_us_slt_f0_y_196_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_y_196_NO_0000, (cst_val *)&val_0563},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_y_196_NO_0001, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0564 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_y_196_NO_0003, (cst_val *)&val_0565},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0366 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0566 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_y_196_NO_0006, (cst_val *)&val_0567},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_y_196_NO_0007, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0568 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0569 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0570 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_y_196_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
NULL };

const cst_cart cmu_us_slt_f0_y_196_cart = {
  cmu_us_slt_f0_y_196_cart_nodes,
  cmu_us_slt_f0_y_196_feat_table
};

static const cst_cart_node cmu_us_slt_f0_k_101_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_101_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_101_NO_0001, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0571 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_101_NO_0003, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0572 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0573 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_101_NO_0006, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0574 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_101_NO_0008, (cst_val *)&val_0195},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_101_NO_0009, (cst_val *)&val_0575},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0576 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0577 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_101_NO_0012, (cst_val *)&val_0578},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_101_NO_0013, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0579 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_101_NO_0015, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0580 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0581 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_101_NO_0018, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0582 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_101_NO_0020, (cst_val *)&val_0583},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0584 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0585 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_k_101_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"lisp_cg_position_in_phrasep",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
NULL };

const cst_cart cmu_us_slt_f0_k_101_cart = {
  cmu_us_slt_f0_k_101_cart_nodes,
  cmu_us_slt_f0_k_101_feat_table
};

static const cst_cart_node cmu_us_slt_f0_k_102_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_102_NO_0000, (cst_val *)&val_0586},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_102_NO_0001, (cst_val *)&val_0027},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_102_NO_0002, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0587 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0588 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_102_NO_0005, (cst_val *)&val_0064},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_102_NO_0006, (cst_val *)&val_0589},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0590 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0591 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0592 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_102_NO_0010, (cst_val *)&val_0027},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_102_NO_0011, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0593 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0594 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_102_NO_0014, (cst_val *)&val_0262},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_102_NO_0015, (cst_val *)&val_0073},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_102_NO_0016, (cst_val *)&val_0595},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_102_NO_0017, (cst_val *)&val_0596},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0597 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0598 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_102_NO_0020, (cst_val *)&val_0105},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_102_NO_0021, (cst_val *)&val_0599},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0600 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0601 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0602 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_102_NO_0025, (cst_val *)&val_0034},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_102_NO_0026, (cst_val *)&val_0105},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_102_NO_0027, (cst_val *)&val_0603},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0604 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0605 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0606 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0607 },
{ 11, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_102_NO_0032, (cst_val *)&val_0608},
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_102_NO_0033, (cst_val *)&val_0064},
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_102_NO_0034, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0609 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0610 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0611 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0612 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_k_102_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_vrnd",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_vc",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
NULL };

const cst_cart cmu_us_slt_f0_k_102_cart = {
  cmu_us_slt_f0_k_102_cart_nodes,
  cmu_us_slt_f0_k_102_feat_table
};

static const cst_cart_node cmu_us_slt_f0_k_103_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0001, (cst_val *)&val_0608},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0002, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0613 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0004, (cst_val *)&val_0614},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0005, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0615 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0616 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0617 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0618 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0010, (cst_val *)&val_0619},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0011, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0620 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0013, (cst_val *)&val_0621},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0622 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0015, (cst_val *)&val_0073},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0016, (cst_val *)&val_0027},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0017, (cst_val *)&val_0623},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0624 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0625 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0020, (cst_val *)&val_0626},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0627 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0022, (cst_val *)&val_0628},
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0023, (cst_val *)&val_0629},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0630 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0025, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0631 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0632 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0028, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0633 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0634 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0031, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0635 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0033, (cst_val *)&val_0636},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0637 },
{ 13, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0035, (cst_val *)&val_0023},
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0036, (cst_val *)&val_0034},
{ 15, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0037, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0638 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0639 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0040, (cst_val *)&val_0640},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0641 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0642 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0643 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0044, (cst_val *)&val_0644},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0645 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0046, (cst_val *)&val_0646},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_k_103_NO_0047, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0647 },
{ 16, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_k_103_NO_0049, (cst_val *)&val_0648},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0649 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0650 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0651 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_k_103_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.p.ph_vrnd",
"lisp_cg_state_index",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"lisp_cg_phone_place",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.n.ph_vlng",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"lisp_cg_state_place",
NULL };

const cst_cart cmu_us_slt_f0_k_103_cart = {
  cmu_us_slt_f0_k_103_cart_nodes,
  cmu_us_slt_f0_k_103_feat_table
};

static const cst_cart_node cmu_us_slt_f0_aa_1_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_1_NO_0000, (cst_val *)&val_0652},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_1_NO_0001, (cst_val *)&val_0064},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_1_NO_0002, (cst_val *)&val_0653},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0654 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_1_NO_0004, (cst_val *)&val_0655},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0656 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0657 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0658 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_1_NO_0008, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0659 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_1_NO_0010, (cst_val *)&val_0064},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_1_NO_0011, (cst_val *)&val_0660},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_1_NO_0012, (cst_val *)&val_0661},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0662 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0663 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0664 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0665 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_aa_1_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"R:mcep_link.parent.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_aa_1_cart = {
  cmu_us_slt_f0_aa_1_cart_nodes,
  cmu_us_slt_f0_aa_1_feat_table
};

static const cst_cart_node cmu_us_slt_f0_aa_2_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0000, (cst_val *)&val_0666},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0001, (cst_val *)&val_0433},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0667 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0003, (cst_val *)&val_0603},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0668 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0005, (cst_val *)&val_0669},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0670 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0007, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0671 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0009, (cst_val *)&val_0123},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0010, (cst_val *)&val_0672},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0673 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0012, (cst_val *)&val_0674},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0675 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0143 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0015, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0676 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0017, (cst_val *)&val_0677},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0678 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0679 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0020, (cst_val *)&val_0680},
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0021, (cst_val *)&val_0539},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0681 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0023, (cst_val *)&val_0682},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0024, (cst_val *)&val_0064},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0025, (cst_val *)&val_0683},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0026, (cst_val *)&val_0684},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0685 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0686 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0029, (cst_val *)&val_0169},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0687 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0688 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0032, (cst_val *)&val_0689},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0690 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0691 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0035, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0692 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0037, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0693 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0694 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0040, (cst_val *)&val_0105},
{ 14, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0041, (cst_val *)&val_0695},
{ 14, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0042, (cst_val *)&val_0696},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0697 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0044, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0698 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0699 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_2_NO_0047, (cst_val *)&val_0700},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0048, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0701 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0702 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0051, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0703 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0704 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_2_NO_0054, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0705 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0706 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_aa_2_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.name",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"lisp_cg_phone_index",
NULL };

const cst_cart cmu_us_slt_f0_aa_2_cart = {
  cmu_us_slt_f0_aa_2_cart_nodes,
  cmu_us_slt_f0_aa_2_feat_table
};

static const cst_cart_node cmu_us_slt_f0_aa_3_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_3_NO_0000, (cst_val *)&val_0707},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_3_NO_0001, (cst_val *)&val_0708},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_3_NO_0002, (cst_val *)&val_0709},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_3_NO_0003, (cst_val *)&val_0710},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0711 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0712 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_3_NO_0006, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0713 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0714 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_3_NO_0009, (cst_val *)&val_0715},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0716 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0717 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_3_NO_0012, (cst_val *)&val_0718},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_3_NO_0013, (cst_val *)&val_0719},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_3_NO_0014, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0720 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_3_NO_0016, (cst_val *)&val_0721},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0722 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0723 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0724 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_3_NO_0020, (cst_val *)&val_0725},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_3_NO_0021, (cst_val *)&val_0030},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_aa_3_NO_0022, (cst_val *)&val_0726},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0727 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0728 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_3_NO_0025, (cst_val *)&val_0729},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0730 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_aa_3_NO_0027, (cst_val *)&val_0731},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0732 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0733 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0734 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_aa_3_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.name",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"lisp_cg_phone_place",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
NULL };

const cst_cart cmu_us_slt_f0_aa_3_cart = {
  cmu_us_slt_f0_aa_3_cart_nodes,
  cmu_us_slt_f0_aa_3_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ay_31_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_31_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_31_NO_0001, (cst_val *)&val_0735},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0736 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_31_NO_0003, (cst_val *)&val_0027},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_31_NO_0004, (cst_val *)&val_0020},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0737 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0738 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_31_NO_0007, (cst_val *)&val_0739},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0740 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0741 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_31_NO_0010, (cst_val *)&val_0034},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_31_NO_0011, (cst_val *)&val_0742},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0743 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0744 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_31_NO_0014, (cst_val *)&val_0539},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0745 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_31_NO_0016, (cst_val *)&val_0064},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_31_NO_0017, (cst_val *)&val_0746},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_31_NO_0018, (cst_val *)&val_0747},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_31_NO_0019, (cst_val *)&val_0748},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0749 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_31_NO_0021, (cst_val *)&val_0750},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_31_NO_0022, (cst_val *)&val_0751},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0752 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0753 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0754 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0755 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_31_NO_0027, (cst_val *)&val_0756},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_31_NO_0028, (cst_val *)&val_0757},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0758 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0759 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_31_NO_0031, (cst_val *)&val_0760},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0761 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0762 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_31_NO_0034, (cst_val *)&val_0763},
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_31_NO_0035, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0764 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0765 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_31_NO_0038, (cst_val *)&val_0020},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0766 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0767 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ay_31_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"lisp_cg_state_place",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.name",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:HMMstate.p.name",
NULL };

const cst_cart cmu_us_slt_f0_ay_31_cart = {
  cmu_us_slt_f0_ay_31_cart_nodes,
  cmu_us_slt_f0_ay_31_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ay_32_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_32_NO_0000, (cst_val *)&val_0768},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_32_NO_0001, (cst_val *)&val_0064},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_32_NO_0002, (cst_val *)&val_0769},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_32_NO_0003, (cst_val *)&val_0770},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_32_NO_0004, (cst_val *)&val_0771},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0772 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0773 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0774 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_32_NO_0008, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0775 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0776 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_32_NO_0011, (cst_val *)&val_0539},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_32_NO_0012, (cst_val *)&val_0777},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0778 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_32_NO_0014, (cst_val *)&val_0779},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_32_NO_0015, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0780 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0781 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0782 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_32_NO_0019, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0783 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_32_NO_0021, (cst_val *)&val_0155},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0784 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0785 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_32_NO_0024, (cst_val *)&val_0034},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_32_NO_0025, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0786 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_32_NO_0027, (cst_val *)&val_0787},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0788 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0789 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_32_NO_0030, (cst_val *)&val_0155},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_32_NO_0031, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0790 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0514 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_32_NO_0034, (cst_val *)&val_0034},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_32_NO_0035, (cst_val *)&val_0791},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_32_NO_0036, (cst_val *)&val_0792},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0793 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0794 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_32_NO_0039, (cst_val *)&val_0795},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_32_NO_0040, (cst_val *)&val_0779},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_32_NO_0041, (cst_val *)&val_0241},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0796 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0797 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0798 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0799 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0800 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ay_32_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.p.name",
"lisp_cg_state_index",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.syl_final",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
NULL };

const cst_cart cmu_us_slt_f0_ay_32_cart = {
  cmu_us_slt_f0_ay_32_cart_nodes,
  cmu_us_slt_f0_ay_32_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ay_33_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_33_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_33_NO_0001, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0801 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_33_NO_0003, (cst_val *)&val_0064},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0004, (cst_val *)&val_0802},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0803 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0804 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0805 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_33_NO_0008, (cst_val *)&val_0034},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0009, (cst_val *)&val_0806},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0010, (cst_val *)&val_0807},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0011, (cst_val *)&val_0523},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_33_NO_0012, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0808 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0809 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0810 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0811 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0812 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0018, (cst_val *)&val_0054},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_33_NO_0019, (cst_val *)&val_0155},
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0020, (cst_val *)&val_0813},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0814 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_33_NO_0022, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0815 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0816 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_33_NO_0025, (cst_val *)&val_0034},
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_33_NO_0026, (cst_val *)&val_0073},
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_33_NO_0027, (cst_val *)&val_0027},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_33_NO_0028, (cst_val *)&val_0073},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0029, (cst_val *)&val_0817},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0818 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0819 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0820 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0033, (cst_val *)&val_0821},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0822 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0823 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0824 },
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0037, (cst_val *)&val_0825},
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0038, (cst_val *)&val_0826},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0827 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0828 },
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0041, (cst_val *)&val_0829},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0042, (cst_val *)&val_0830},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0831 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ay_33_NO_0044, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0832 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0833 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0834 },
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0048, (cst_val *)&val_0835},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0836 },
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0050, (cst_val *)&val_0837},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0051, (cst_val *)&val_0838},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0839 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0840 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ay_33_NO_0054, (cst_val *)&val_0841},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0842 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0843 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ay_33_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"lisp_cg_phone_index",
"lisp_cg_state_index",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
NULL };

const cst_cart cmu_us_slt_f0_ay_33_cart = {
  cmu_us_slt_f0_ay_33_cart_nodes,
  cmu_us_slt_f0_ay_33_feat_table
};

static const cst_cart_node cmu_us_slt_f0_w_189_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_189_NO_0000, (cst_val *)&val_0844},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_189_NO_0001, (cst_val *)&val_0845},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0846 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_189_NO_0003, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0847 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0848 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_189_NO_0006, (cst_val *)&val_0849},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_189_NO_0007, (cst_val *)&val_0850},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0851 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0852 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_189_NO_0010, (cst_val *)&val_0064},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_189_NO_0011, (cst_val *)&val_0853},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0854 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0855 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_189_NO_0014, (cst_val *)&val_0073},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_189_NO_0015, (cst_val *)&val_0856},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_189_NO_0016, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0857 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0858 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0859 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0860 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_w_189_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"lisp_cg_phone_rindex",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
NULL };

const cst_cart cmu_us_slt_f0_w_189_cart = {
  cmu_us_slt_f0_w_189_cart_nodes,
  cmu_us_slt_f0_w_189_feat_table
};

static const cst_cart_node cmu_us_slt_f0_w_190_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_190_NO_0000, (cst_val *)&val_0861},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_190_NO_0001, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0862 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_190_NO_0003, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0863 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_190_NO_0005, (cst_val *)&val_0864},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_190_NO_0006, (cst_val *)&val_0865},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_190_NO_0007, (cst_val *)&val_0866},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0867 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0868 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_190_NO_0010, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0869 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0870 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0871 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_190_NO_0014, (cst_val *)&val_0351},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_190_NO_0015, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0872 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_190_NO_0017, (cst_val *)&val_0873},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_190_NO_0018, (cst_val *)&val_0874},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_190_NO_0019, (cst_val *)&val_0875},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0876 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_190_NO_0021, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0877 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_190_NO_0023, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0878 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0879 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_190_NO_0026, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0880 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0881 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0882 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_190_NO_0030, (cst_val *)&val_0883},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0884 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0885 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_w_190_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
NULL };

const cst_cart cmu_us_slt_f0_w_190_cart = {
  cmu_us_slt_f0_w_190_cart_nodes,
  cmu_us_slt_f0_w_190_feat_table
};

static const cst_cart_node cmu_us_slt_f0_w_191_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_191_NO_0000, (cst_val *)&val_0886},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_191_NO_0001, (cst_val *)&val_0887},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_191_NO_0002, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0888 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_191_NO_0004, (cst_val *)&val_0073},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_191_NO_0005, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0889 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0890 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_191_NO_0008, (cst_val *)&val_0020},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0891 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0892 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0893 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_191_NO_0012, (cst_val *)&val_0894},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_191_NO_0013, (cst_val *)&val_0155},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0895 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_191_NO_0015, (cst_val *)&val_0896},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_191_NO_0016, (cst_val *)&val_0565},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0897 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0898 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_w_191_NO_0019, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0899 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_191_NO_0021, (cst_val *)&val_0900},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0901 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0902 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_191_NO_0024, (cst_val *)&val_0903},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_w_191_NO_0025, (cst_val *)&val_0227},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0904 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0905 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0906 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_w_191_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_vfront",
"lisp_cg_state_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"R:mcep_link.parent.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_w_191_cart = {
  cmu_us_slt_f0_w_191_cart_nodes,
  cmu_us_slt_f0_w_191_feat_table
};

static const cst_cart_node cmu_us_slt_f0_m_111_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_111_NO_0000, (cst_val *)&val_0907},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_111_NO_0001, (cst_val *)&val_0064},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_111_NO_0002, (cst_val *)&val_0908},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0909 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_111_NO_0004, (cst_val *)&val_0910},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0911 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0912 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_111_NO_0007, (cst_val *)&val_0913},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0914 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0915 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_111_NO_0010, (cst_val *)&val_0916},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_111_NO_0011, (cst_val *)&val_0917},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_111_NO_0012, (cst_val *)&val_0918},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0919 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_111_NO_0014, (cst_val *)&val_0920},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0921 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0922 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0923 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_111_NO_0018, (cst_val *)&val_0924},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_111_NO_0019, (cst_val *)&val_0925},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0926 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0927 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_111_NO_0022, (cst_val *)&val_0928},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0929 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0930 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_m_111_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"lisp_cg_phone_rindex",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_m_111_cart = {
  cmu_us_slt_f0_m_111_cart_nodes,
  cmu_us_slt_f0_m_111_feat_table
};

static const cst_cart_node cmu_us_slt_f0_m_112_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0000, (cst_val *)&val_0931},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0001, (cst_val *)&val_0932},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0002, (cst_val *)&val_0933},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_112_NO_0003, (cst_val *)&val_0027},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0004, (cst_val *)&val_0934},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0935 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0936 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_112_NO_0007, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0937 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0938 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_112_NO_0010, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0939 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0940 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0013, (cst_val *)&val_0941},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0942 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0015, (cst_val *)&val_0719},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_112_NO_0016, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0943 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0497 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0019, (cst_val *)&val_0944},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0945 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0946 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0022, (cst_val *)&val_0947},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0023, (cst_val *)&val_0948},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0024, (cst_val *)&val_0949},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_112_NO_0025, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0950 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0027, (cst_val *)&val_0951},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_112_NO_0028, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0952 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0030, (cst_val *)&val_0953},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0954 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0955 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_112_NO_0033, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0956 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0957 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_112_NO_0036, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0958 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0959 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_112_NO_0039, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0960 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_112_NO_0041, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0961 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0962 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_112_NO_0044, (cst_val *)&val_0027},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_112_NO_0045, (cst_val *)&val_0199},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0963 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0047, (cst_val *)&val_0964},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0965 },
{ 13, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_112_NO_0049, (cst_val *)&val_0966},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0967 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0968 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0969 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_m_112_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_vrnd",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_vrnd",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"lisp_cg_phone_place",
NULL };

const cst_cart cmu_us_slt_f0_m_112_cart = {
  cmu_us_slt_f0_m_112_cart_nodes,
  cmu_us_slt_f0_m_112_feat_table
};

static const cst_cart_node cmu_us_slt_f0_m_113_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_113_NO_0000, (cst_val *)&val_0970},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_113_NO_0001, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0971 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_113_NO_0003, (cst_val *)&val_0034},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_113_NO_0004, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0972 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0973 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_113_NO_0007, (cst_val *)&val_0974},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0975 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0976 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_113_NO_0010, (cst_val *)&val_0977},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_113_NO_0011, (cst_val *)&val_0978},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0979 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_113_NO_0013, (cst_val *)&val_0661},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_m_113_NO_0014, (cst_val *)&val_0195},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_113_NO_0015, (cst_val *)&val_0980},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0981 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0982 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0983 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0984 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_113_NO_0020, (cst_val *)&val_0985},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0986 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_113_NO_0022, (cst_val *)&val_0322},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_113_NO_0023, (cst_val *)&val_0987},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0988 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_113_NO_0025, (cst_val *)&val_0989},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0990 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0991 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_113_NO_0028, (cst_val *)&val_0992},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_m_113_NO_0029, (cst_val *)&val_0993},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0994 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0995 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0996 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_m_113_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.n.ph_vfront",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"lisp_cg_phone_index",
"R:mcep_link.parent.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_m_113_cart = {
  cmu_us_slt_f0_m_113_cart_nodes,
  cmu_us_slt_f0_m_113_feat_table
};

static const cst_cart_node cmu_us_slt_f0_pau_143_cart_nodes[] = {
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0997 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_pau_143_feat_table[] = {
NULL };

const cst_cart cmu_us_slt_f0_pau_143_cart = {
  cmu_us_slt_f0_pau_143_cart_nodes,
  cmu_us_slt_f0_pau_143_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ao_16_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_16_NO_0000, (cst_val *)&val_0998},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_16_NO_0001, (cst_val *)&val_0287},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_16_NO_0002, (cst_val *)&val_0020},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0999 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1000 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_16_NO_0005, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1001 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_16_NO_0007, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1002 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1003 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_16_NO_0010, (cst_val *)&val_0287},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_16_NO_0011, (cst_val *)&val_1004},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1005 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1006 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_16_NO_0014, (cst_val *)&val_1007},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1008 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_16_NO_0016, (cst_val *)&val_1009},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1010 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1011 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ao_16_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"lisp_cg_state_place",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_ao_16_cart = {
  cmu_us_slt_f0_ao_16_cart_nodes,
  cmu_us_slt_f0_ao_16_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ao_17_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0000, (cst_val *)&val_1012},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0001, (cst_val *)&val_1013},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_17_NO_0002, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1014 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0004, (cst_val *)&val_1015},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1016 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1017 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0007, (cst_val *)&val_0719},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1018 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0009, (cst_val *)&val_1019},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1020 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_17_NO_0011, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1021 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1022 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_17_NO_0014, (cst_val *)&val_0105},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0015, (cst_val *)&val_1023},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1024 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0017, (cst_val *)&val_1025},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1026 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1027 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0020, (cst_val *)&val_1028},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_17_NO_0021, (cst_val *)&val_0064},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0022, (cst_val *)&val_1029},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0023, (cst_val *)&val_1030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1031 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1032 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1033 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0027, (cst_val *)&val_1034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1035 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1036 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0030, (cst_val *)&val_1037},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_17_NO_0031, (cst_val *)&val_1038},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1039 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1040 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_17_NO_0034, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1041 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1042 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ao_17_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
NULL };

const cst_cart cmu_us_slt_f0_ao_17_cart = {
  cmu_us_slt_f0_ao_17_cart_nodes,
  cmu_us_slt_f0_ao_17_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ao_18_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_18_NO_0000, (cst_val *)&val_1043},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_18_NO_0001, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1044 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_18_NO_0003, (cst_val *)&val_1004},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_18_NO_0004, (cst_val *)&val_0064},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_18_NO_0005, (cst_val *)&val_1045},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_18_NO_0006, (cst_val *)&val_1046},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1047 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1048 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1049 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_18_NO_0010, (cst_val *)&val_1050},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1051 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1052 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1053 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_18_NO_0014, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1054 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ao_18_NO_0016, (cst_val *)&val_1055},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_18_NO_0017, (cst_val *)&val_0064},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_18_NO_0018, (cst_val *)&val_0483},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_18_NO_0019, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1056 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1057 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_18_NO_0022, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1058 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1059 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1060 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ao_18_NO_0026, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1061 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1062 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ao_18_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:HMMstate.n.name",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
NULL };

const cst_cart cmu_us_slt_f0_ao_18_cart = {
  cmu_us_slt_f0_ao_18_cart_nodes,
  cmu_us_slt_f0_ao_18_feat_table
};

static const cst_cart_node cmu_us_slt_f0_th_169_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_th_169_NO_0000, (cst_val *)&val_1063},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1064 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_th_169_NO_0002, (cst_val *)&val_1065},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_th_169_NO_0003, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1066 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1067 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1068 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_th_169_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
NULL };

const cst_cart cmu_us_slt_f0_th_169_cart = {
  cmu_us_slt_f0_th_169_cart_nodes,
  cmu_us_slt_f0_th_169_feat_table
};

static const cst_cart_node cmu_us_slt_f0_th_170_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_th_170_NO_0000, (cst_val *)&val_1069},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_th_170_NO_0001, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1070 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1071 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_th_170_NO_0004, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1072 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_th_170_NO_0006, (cst_val *)&val_0073},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_th_170_NO_0007, (cst_val *)&val_1073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1074 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1075 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1076 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_th_170_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_vc",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"lisp_cg_position_in_phrasep",
NULL };

const cst_cart cmu_us_slt_f0_th_170_cart = {
  cmu_us_slt_f0_th_170_cart_nodes,
  cmu_us_slt_f0_th_170_feat_table
};

static const cst_cart_node cmu_us_slt_f0_th_171_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_th_171_NO_0000, (cst_val *)&val_1077},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1078 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_th_171_NO_0002, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1079 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1080 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_th_171_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.seg_onsetcoda",
NULL };

const cst_cart cmu_us_slt_f0_th_171_cart = {
  cmu_us_slt_f0_th_171_cart_nodes,
  cmu_us_slt_f0_th_171_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ah_11_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_11_NO_0000, (cst_val *)&val_1081},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_11_NO_0001, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1082 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_11_NO_0003, (cst_val *)&val_1083},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1084 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1085 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_11_NO_0006, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1086 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_11_NO_0008, (cst_val *)&val_1087},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_11_NO_0009, (cst_val *)&val_1088},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_11_NO_0010, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1089 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1090 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_11_NO_0013, (cst_val *)&val_1091},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1092 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1093 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_11_NO_0016, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1094 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1095 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ah_11_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"lisp_cg_phone_place",
NULL };

const cst_cart cmu_us_slt_f0_ah_11_cart = {
  cmu_us_slt_f0_ah_11_cart_nodes,
  cmu_us_slt_f0_ah_11_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ah_12_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_12_NO_0000, (cst_val *)&val_1096},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_12_NO_0001, (cst_val *)&val_1097},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_12_NO_0002, (cst_val *)&val_0027},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_12_NO_0003, (cst_val *)&val_1098},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1099 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1100 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_12_NO_0006, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1101 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_12_NO_0008, (cst_val *)&val_1102},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0313 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1103 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_12_NO_0011, (cst_val *)&val_0027},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_12_NO_0012, (cst_val *)&val_1104},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1105 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1106 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_12_NO_0015, (cst_val *)&val_1107},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1108 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1109 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_12_NO_0018, (cst_val *)&val_1110},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_12_NO_0019, (cst_val *)&val_1111},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1112 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_12_NO_0021, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1113 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_12_NO_0023, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1114 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_12_NO_0025, (cst_val *)&val_1115},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1116 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1117 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_12_NO_0028, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1118 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1119 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ah_12_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
NULL };

const cst_cart cmu_us_slt_f0_ah_12_cart = {
  cmu_us_slt_f0_ah_12_cart_nodes,
  cmu_us_slt_f0_ah_12_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ah_13_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_13_NO_0000, (cst_val *)&val_1120},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_13_NO_0001, (cst_val *)&val_1121},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_13_NO_0002, (cst_val *)&val_0123},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_13_NO_0003, (cst_val *)&val_1122},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1123 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1124 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1099 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1125 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_13_NO_0008, (cst_val *)&val_1126},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_13_NO_0009, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1127 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_13_NO_0011, (cst_val *)&val_1128},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1129 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_13_NO_0013, (cst_val *)&val_1130},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1131 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1132 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ah_13_NO_0016, (cst_val *)&val_1133},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ah_13_NO_0017, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1134 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1135 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1136 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ah_13_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
NULL };

const cst_cart cmu_us_slt_f0_ah_13_cart = {
  cmu_us_slt_f0_ah_13_cart_nodes,
  cmu_us_slt_f0_ah_13_feat_table
};

static const cst_cart_node cmu_us_slt_f0_v_184_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_184_NO_0000, (cst_val *)&val_1137},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_184_NO_0001, (cst_val *)&val_1138},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1139 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1140 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_184_NO_0004, (cst_val *)&val_1141},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_184_NO_0005, (cst_val *)&val_1142},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1143 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_v_184_NO_0007, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1144 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1145 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_184_NO_0010, (cst_val *)&val_1146},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1147 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1148 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_v_184_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
NULL };

const cst_cart cmu_us_slt_f0_v_184_cart = {
  cmu_us_slt_f0_v_184_cart_nodes,
  cmu_us_slt_f0_v_184_feat_table
};

static const cst_cart_node cmu_us_slt_f0_v_185_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_185_NO_0000, (cst_val *)&val_1149},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_185_NO_0001, (cst_val *)&val_1150},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1151 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1152 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_185_NO_0004, (cst_val *)&val_1153},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_185_NO_0005, (cst_val *)&val_0268},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_185_NO_0006, (cst_val *)&val_1154},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1155 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_185_NO_0008, (cst_val *)&val_1156},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1157 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1158 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_185_NO_0011, (cst_val *)&val_1159},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1160 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1161 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1162 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_v_185_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
NULL };

const cst_cart cmu_us_slt_f0_v_185_cart = {
  cmu_us_slt_f0_v_185_cart_nodes,
  cmu_us_slt_f0_v_185_feat_table
};

static const cst_cart_node cmu_us_slt_f0_v_186_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_186_NO_0000, (cst_val *)&val_1163},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_v_186_NO_0001, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1164 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_v_186_NO_0003, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1165 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1166 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_186_NO_0006, (cst_val *)&val_1167},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_186_NO_0007, (cst_val *)&val_1168},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_v_186_NO_0008, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1169 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_v_186_NO_0010, (cst_val *)&val_1170},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1171 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1172 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_v_186_NO_0013, (cst_val *)&val_0195},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_v_186_NO_0014, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1173 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_v_186_NO_0016, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1174 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1175 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1176 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1177 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_v_186_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_vfront",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
NULL };

const cst_cart cmu_us_slt_f0_v_186_cart = {
  cmu_us_slt_f0_v_186_cart_nodes,
  cmu_us_slt_f0_v_186_feat_table
};

static const cst_cart_node cmu_us_slt_f0_dh_51_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_51_NO_0000, (cst_val *)&val_1178},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_51_NO_0001, (cst_val *)&val_1179},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_51_NO_0002, (cst_val *)&val_0771},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_dh_51_NO_0003, (cst_val *)&val_1180},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1181 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1182 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_51_NO_0006, (cst_val *)&val_1183},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1184 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1185 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1186 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_dh_51_NO_0010, (cst_val *)&val_0027},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_51_NO_0011, (cst_val *)&val_1187},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_51_NO_0012, (cst_val *)&val_0020},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1188 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1189 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1190 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_dh_51_NO_0016, (cst_val *)&val_0483},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1191 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_51_NO_0018, (cst_val *)&val_1192},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_51_NO_0019, (cst_val *)&val_0696},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_51_NO_0020, (cst_val *)&val_0128},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_dh_51_NO_0021, (cst_val *)&val_1193},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1194 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1195 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1196 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1197 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1198 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_dh_51_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"lisp_cg_state_place",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"lisp_cg_state_rindex",
"lisp_cg_phone_rindex",
"lisp_cg_state_pos",
NULL };

const cst_cart cmu_us_slt_f0_dh_51_cart = {
  cmu_us_slt_f0_dh_51_cart_nodes,
  cmu_us_slt_f0_dh_51_feat_table
};

static const cst_cart_node cmu_us_slt_f0_dh_52_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_52_NO_0000, (cst_val *)&val_1199},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_dh_52_NO_0001, (cst_val *)&val_0027},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_52_NO_0002, (cst_val *)&val_0777},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1200 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1201 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1202 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_dh_52_NO_0006, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1203 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_52_NO_0008, (cst_val *)&val_1204},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1205 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_52_NO_0010, (cst_val *)&val_1206},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1207 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1208 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_dh_52_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"lisp_cg_phone_index",
"lisp_cg_position_in_phrasep",
NULL };

const cst_cart cmu_us_slt_f0_dh_52_cart = {
  cmu_us_slt_f0_dh_52_cart_nodes,
  cmu_us_slt_f0_dh_52_feat_table
};

static const cst_cart_node cmu_us_slt_f0_dh_53_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_53_NO_0000, (cst_val *)&val_1209},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_dh_53_NO_0001, (cst_val *)&val_0027},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_53_NO_0002, (cst_val *)&val_0128},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1210 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1211 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_53_NO_0005, (cst_val *)&val_1212},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1213 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1214 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_53_NO_0008, (cst_val *)&val_1215},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_dh_53_NO_0009, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1216 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_53_NO_0011, (cst_val *)&val_1217},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_dh_53_NO_0012, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1218 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1219 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1220 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_53_NO_0016, (cst_val *)&val_1221},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_dh_53_NO_0017, (cst_val *)&val_1222},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1223 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1224 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1225 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_dh_53_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"lisp_cg_phone_index",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_vlng",
NULL };

const cst_cart cmu_us_slt_f0_dh_53_cart = {
  cmu_us_slt_f0_dh_53_cart_nodes,
  cmu_us_slt_f0_dh_53_feat_table
};

static const cst_cart_node cmu_us_slt_f0_d_46_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_46_NO_0000, (cst_val *)&val_1226},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_46_NO_0001, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1227 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1228 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_46_NO_0004, (cst_val *)&val_1229},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_46_NO_0005, (cst_val *)&val_1230},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_46_NO_0006, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1231 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1232 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_46_NO_0009, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1233 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_46_NO_0011, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1234 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_46_NO_0013, (cst_val *)&val_0034},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_46_NO_0014, (cst_val *)&val_1235},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_46_NO_0015, (cst_val *)&val_1236},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1237 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1238 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1239 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1240 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_46_NO_0020, (cst_val *)&val_0061},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_46_NO_0021, (cst_val *)&val_0073},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_46_NO_0022, (cst_val *)&val_1241},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1242 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1243 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1244 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_46_NO_0026, (cst_val *)&val_1245},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1246 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_46_NO_0028, (cst_val *)&val_0073},
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_46_NO_0029, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1247 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_46_NO_0031, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1248 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1249 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1250 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_d_46_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.n.ph_vfront",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.stress",
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_state_pos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_vrnd",
NULL };

const cst_cart cmu_us_slt_f0_d_46_cart = {
  cmu_us_slt_f0_d_46_cart_nodes,
  cmu_us_slt_f0_d_46_feat_table
};

static const cst_cart_node cmu_us_slt_f0_d_47_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0000, (cst_val *)&val_1251},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0001, (cst_val *)&val_1252},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0002, (cst_val *)&val_0830},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0003, (cst_val *)&val_1253},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1254 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0005, (cst_val *)&val_1255},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1256 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1257 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1258 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0009, (cst_val *)&val_1259},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1260 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_47_NO_0011, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1261 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1262 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_47_NO_0014, (cst_val *)&val_0061},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0015, (cst_val *)&val_1263},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1264 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0017, (cst_val *)&val_1265},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1266 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1267 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_47_NO_0020, (cst_val *)&val_0064},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0021, (cst_val *)&val_0268},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_47_NO_0022, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1268 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0024, (cst_val *)&val_1269},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1270 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1271 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_47_NO_0027, (cst_val *)&val_0034},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0028, (cst_val *)&val_1272},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1273 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1274 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1275 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0032, (cst_val *)&val_1276},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1277 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_47_NO_0034, (cst_val *)&val_1278},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1279 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1280 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_d_47_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.stress",
"lisp_cg_phone_index",
"lisp_cg_phone_rindex",
NULL };

const cst_cart cmu_us_slt_f0_d_47_cart = {
  cmu_us_slt_f0_d_47_cart_nodes,
  cmu_us_slt_f0_d_47_feat_table
};

static const cst_cart_node cmu_us_slt_f0_d_48_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_48_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_48_NO_0001, (cst_val *)&val_1281},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_48_NO_0002, (cst_val *)&val_1282},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_48_NO_0003, (cst_val *)&val_1283},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_48_NO_0004, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1284 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1285 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1286 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0137 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_48_NO_0009, (cst_val *)&val_1287},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_48_NO_0010, (cst_val *)&val_0073},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_48_NO_0011, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1288 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_48_NO_0013, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1289 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1290 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1291 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_48_NO_0017, (cst_val *)&val_0105},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_48_NO_0018, (cst_val *)&val_1292},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1293 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_48_NO_0020, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1294 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1295 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_48_NO_0023, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1296 },
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_48_NO_0025, (cst_val *)&val_0020},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1297 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1298 },
{ 11, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_48_NO_0028, (cst_val *)&val_1299},
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_48_NO_0029, (cst_val *)&val_0195},
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_48_NO_0030, (cst_val *)&val_0073},
{ 14, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_48_NO_0031, (cst_val *)&val_1300},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1301 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1302 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1303 },
{ 15, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_d_48_NO_0035, (cst_val *)&val_0073},
{ 16, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_d_48_NO_0036, (cst_val *)&val_0555},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1304 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1305 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1306 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1307 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_d_48_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"lisp_cg_position_in_phrasep",
"lisp_cg_state_rindex",
"R:mcep_link.parent.R:segstate.parent.n.ph_vrnd",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"lisp_cg_state_place",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"lisp_cg_state_index",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
NULL };

const cst_cart cmu_us_slt_f0_d_48_cart = {
  cmu_us_slt_f0_d_48_cart_nodes,
  cmu_us_slt_f0_d_48_feat_table
};

static const cst_cart_node cmu_us_slt_f0_n_116_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_116_NO_0000, (cst_val *)&val_1308},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_116_NO_0001, (cst_val *)&val_1309},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0002, (cst_val *)&val_0034},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0003, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1310 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0005, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1311 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1312 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1313 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_116_NO_0009, (cst_val *)&val_1314},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1315 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1316 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_116_NO_0012, (cst_val *)&val_1317},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_116_NO_0013, (cst_val *)&val_0054},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_116_NO_0014, (cst_val *)&val_1318},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0015, (cst_val *)&val_0105},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0016, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1319 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0018, (cst_val *)&val_0073},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0019, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1320 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1321 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1322 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_116_NO_0023, (cst_val *)&val_0041},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1323 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1324 },
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_116_NO_0026, (cst_val *)&val_1325},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_116_NO_0027, (cst_val *)&val_1326},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0028, (cst_val *)&val_0105},
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_116_NO_0029, (cst_val *)&val_0521},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1327 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1328 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1329 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0033, (cst_val *)&val_0073},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0034, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1330 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1331 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1332 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1333 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0039, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1334 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1335 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0042, (cst_val *)&val_0202},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_116_NO_0043, (cst_val *)&val_1336},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1337 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1338 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_116_NO_0046, (cst_val *)&val_1339},
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_116_NO_0047, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1340 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1341 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1342 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_n_116_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.syl_final",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
"lisp_cg_phone_rindex",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.p.ph_vfront",
"R:mcep_link.parent.R:segstate.parent.n.ph_vc",
NULL };

const cst_cart cmu_us_slt_f0_n_116_cart = {
  cmu_us_slt_f0_n_116_cart_nodes,
  cmu_us_slt_f0_n_116_feat_table
};

static const cst_cart_node cmu_us_slt_f0_n_117_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0000, (cst_val *)&val_1343},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0001, (cst_val *)&val_1344},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0002, (cst_val *)&val_0202},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0003, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1345 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0005, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1346 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1347 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0008, (cst_val *)&val_0433},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1348 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0010, (cst_val *)&val_0073},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0011, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1349 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0013, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1350 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1351 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0016, (cst_val *)&val_1352},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1353 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1354 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0019, (cst_val *)&val_1355},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0020, (cst_val *)&val_1356},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0021, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1357 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1358 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0024, (cst_val *)&val_1359},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1360 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1361 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1362 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0028, (cst_val *)&val_1363},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0029, (cst_val *)&val_1364},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0030, (cst_val *)&val_0830},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0031, (cst_val *)&val_1365},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0032, (cst_val *)&val_1366},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0033, (cst_val *)&val_0034},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0034, (cst_val *)&val_1367},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1368 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1369 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1370 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1371 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0039, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0668 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0041, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1372 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0043, (cst_val *)&val_1373},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0579 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1092 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1374 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0047, (cst_val *)&val_0034},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0048, (cst_val *)&val_1375},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0049, (cst_val *)&val_1241},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1376 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1377 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0052, (cst_val *)&val_1378},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1379 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0054, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0055, (cst_val *)&val_0202},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0056, (cst_val *)&val_1380},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0428 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1381 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0059, (cst_val *)&val_1382},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1383 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1384 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0062, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1385 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0064, (cst_val *)&val_1386},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0065, (cst_val *)&val_0073},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0066, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1387 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1388 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1389 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1390 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0071, (cst_val *)&val_1391},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1392 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1393 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0074, (cst_val *)&val_1394},
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0075, (cst_val *)&val_0073},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0076, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1395 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0078, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1396 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1397 },
{ 15, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0081, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1398 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0083, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1399 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1400 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0086, (cst_val *)&val_1401},
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_117_NO_0087, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1402 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1403 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_117_NO_0090, (cst_val *)&val_0148},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1404 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1405 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_n_117_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.p.ph_vfront",
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.syl_final",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
NULL };

const cst_cart cmu_us_slt_f0_n_117_cart = {
  cmu_us_slt_f0_n_117_cart_nodes,
  cmu_us_slt_f0_n_117_feat_table
};

static const cst_cart_node cmu_us_slt_f0_n_118_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0000, (cst_val *)&val_1406},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0001, (cst_val *)&val_1407},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0002, (cst_val *)&val_0027},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0003, (cst_val *)&val_0771},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1408 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1409 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0006, (cst_val *)&val_0034},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0007, (cst_val *)&val_1410},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1411 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1412 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1413 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0011, (cst_val *)&val_0027},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0012, (cst_val *)&val_0830},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1414 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0014, (cst_val *)&val_0314},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1415 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1416 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0017, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1417 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0019, (cst_val *)&val_1418},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0020, (cst_val *)&val_1419},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1420 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1421 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1422 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0024, (cst_val *)&val_1423},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0025, (cst_val *)&val_0802},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0026, (cst_val *)&val_1424},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0027, (cst_val *)&val_1425},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0028, (cst_val *)&val_1426},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1427 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1428 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0031, (cst_val *)&val_0061},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0032, (cst_val *)&val_0357},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1429 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1430 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0035, (cst_val *)&val_0287},
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0036, (cst_val *)&val_1278},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1431 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1432 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0039, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1433 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0041, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1434 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1435 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0044, (cst_val *)&val_1380},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0045, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0958 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1436 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1437 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1438 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0050, (cst_val *)&val_1439},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1440 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0052, (cst_val *)&val_1441},
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0053, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1442 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1443 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0056, (cst_val *)&val_1444},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0057, (cst_val *)&val_1445},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0058, (cst_val *)&val_1446},
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_n_118_NO_0059, (cst_val *)&val_0351},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1447 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_n_118_NO_0061, (cst_val *)&val_1448},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1449 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1450 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1451 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1452 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1453 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_n_118_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:HMMstate.n.name",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"lisp_cg_state_index",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.p.ph_vfront",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
NULL };

const cst_cart cmu_us_slt_f0_n_118_cart = {
  cmu_us_slt_f0_n_118_cart_nodes,
  cmu_us_slt_f0_n_118_feat_table
};

static const cst_cart_node cmu_us_slt_f0_jh_96_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_jh_96_NO_0000, (cst_val *)&val_1454},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_jh_96_NO_0001, (cst_val *)&val_1455},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1456 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1457 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_jh_96_NO_0004, (cst_val *)&val_1458},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_jh_96_NO_0005, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1459 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1460 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1461 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_jh_96_feat_table[] = {
"lisp_cg_position_in_phrasep",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
NULL };

const cst_cart cmu_us_slt_f0_jh_96_cart = {
  cmu_us_slt_f0_jh_96_cart_nodes,
  cmu_us_slt_f0_jh_96_feat_table
};

static const cst_cart_node cmu_us_slt_f0_jh_97_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_jh_97_NO_0000, (cst_val *)&val_1462},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1463 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_jh_97_NO_0002, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1464 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1465 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_jh_97_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
NULL };

const cst_cart cmu_us_slt_f0_jh_97_cart = {
  cmu_us_slt_f0_jh_97_cart_nodes,
  cmu_us_slt_f0_jh_97_feat_table
};

static const cst_cart_node cmu_us_slt_f0_jh_98_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_jh_98_NO_0000, (cst_val *)&val_1466},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_jh_98_NO_0001, (cst_val *)&val_1467},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_jh_98_NO_0002, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1468 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_jh_98_NO_0004, (cst_val *)&val_1469},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1470 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1471 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1472 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_jh_98_NO_0008, (cst_val *)&val_1473},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_jh_98_NO_0009, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1474 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_jh_98_NO_0011, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1475 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1476 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1477 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_jh_98_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
NULL };

const cst_cart cmu_us_slt_f0_jh_98_cart = {
  cmu_us_slt_f0_jh_98_cart_nodes,
  cmu_us_slt_f0_jh_98_feat_table
};

static const cst_cart_node cmu_us_slt_f0_r_146_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_146_NO_0000, (cst_val *)&val_1478},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0001, (cst_val *)&val_0034},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_146_NO_0002, (cst_val *)&val_0212},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1479 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1480 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0005, (cst_val *)&val_1481},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1482 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0007, (cst_val *)&val_0105},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_146_NO_0008, (cst_val *)&val_1483},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_146_NO_0009, (cst_val *)&val_1484},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0010, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1485 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1486 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1487 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0014, (cst_val *)&val_0105},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0015, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1488 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_146_NO_0017, (cst_val *)&val_1489},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1490 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1491 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1492 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1493 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_146_NO_0022, (cst_val *)&val_1494},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0023, (cst_val *)&val_0105},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_146_NO_0024, (cst_val *)&val_1495},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0025, (cst_val *)&val_0034},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_146_NO_0026, (cst_val *)&val_1496},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1497 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0028, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1498 },
{ 11, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_146_NO_0030, (cst_val *)&val_0640},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1499 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1500 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_146_NO_0033, (cst_val *)&val_1501},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1502 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1503 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0036, (cst_val *)&val_0351},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1504 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1505 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0039, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1506 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1109 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0042, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1507 },
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0044, (cst_val *)&val_0064},
{ 15, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_146_NO_0045, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1508 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1509 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1510 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_r_146_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.p.ph_vfront",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.stress",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_vc",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
NULL };

const cst_cart cmu_us_slt_f0_r_146_cart = {
  cmu_us_slt_f0_r_146_cart_nodes,
  cmu_us_slt_f0_r_146_feat_table
};

static const cst_cart_node cmu_us_slt_f0_r_147_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0000, (cst_val *)&val_1511},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0001, (cst_val *)&val_1512},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0002, (cst_val *)&val_0351},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0003, (cst_val *)&val_0041},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0004, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1513 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1514 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0007, (cst_val *)&val_0433},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1515 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0009, (cst_val *)&val_1516},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1517 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1518 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0012, (cst_val *)&val_1519},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1520 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0014, (cst_val *)&val_0034},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0015, (cst_val *)&val_1521},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1522 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1523 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1524 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0019, (cst_val *)&val_0105},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0020, (cst_val *)&val_1525},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1526 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1527 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0023, (cst_val *)&val_1528},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1529 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1530 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0026, (cst_val *)&val_1531},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0027, (cst_val *)&val_0105},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0028, (cst_val *)&val_1532},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0029, (cst_val *)&val_1533},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1534 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0031, (cst_val *)&val_0123},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0032, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1535 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1536 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0035, (cst_val *)&val_0073},
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0036, (cst_val *)&val_1537},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0037, (cst_val *)&val_1538},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1539 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1540 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1541 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0041, (cst_val *)&val_0034},
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0042, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0333 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1542 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1543 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0046, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1544 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1545 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0049, (cst_val *)&val_1546},
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0050, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1547 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1548 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0053, (cst_val *)&val_1549},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1550 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1551 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0056, (cst_val *)&val_0105},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0057, (cst_val *)&val_1552},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0058, (cst_val *)&val_0351},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1553 },
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0060, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1554 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1555 },
{ 15, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_147_NO_0063, (cst_val *)&val_0027},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0064, (cst_val *)&val_1556},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1557 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1558 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0067, (cst_val *)&val_1559},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1560 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1561 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_147_NO_0070, (cst_val *)&val_1562},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1563 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1564 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_r_147_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.syl_final",
"R:mcep_link.parent.R:segstate.parent.seg_onsetcoda",
"lisp_cg_state_index",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
NULL };

const cst_cart cmu_us_slt_f0_r_147_cart = {
  cmu_us_slt_f0_r_147_cart_nodes,
  cmu_us_slt_f0_r_147_feat_table
};

static const cst_cart_node cmu_us_slt_f0_r_148_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_148_NO_0000, (cst_val *)&val_1565},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_148_NO_0001, (cst_val *)&val_0034},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_148_NO_0002, (cst_val *)&val_1566},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1567 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1568 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_148_NO_0005, (cst_val *)&val_0034},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_148_NO_0006, (cst_val *)&val_1569},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_148_NO_0007, (cst_val *)&val_1570},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1571 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_148_NO_0009, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1572 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1573 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1574 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_148_NO_0013, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1575 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1576 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_148_NO_0016, (cst_val *)&val_1577},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_148_NO_0017, (cst_val *)&val_1578},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_148_NO_0018, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1579 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1580 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_148_NO_0021, (cst_val *)&val_0041},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_r_148_NO_0022, (cst_val *)&val_1581},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_148_NO_0023, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1582 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1583 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_148_NO_0026, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1584 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1585 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_148_NO_0029, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1586 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_148_NO_0031, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1587 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1588 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_148_NO_0034, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1589 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_148_NO_0036, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1590 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_r_148_NO_0038, (cst_val *)&val_0735},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1591 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1592 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_r_148_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.syl_final",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
NULL };

const cst_cart cmu_us_slt_f0_r_148_cart = {
  cmu_us_slt_f0_r_148_cart_nodes,
  cmu_us_slt_f0_r_148_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ey_66_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_66_NO_0000, (cst_val *)&val_1593},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_66_NO_0001, (cst_val *)&val_1594},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1595 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_66_NO_0003, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1596 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_66_NO_0005, (cst_val *)&val_0073},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_66_NO_0006, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1597 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_66_NO_0008, (cst_val *)&val_1183},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1598 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1599 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_66_NO_0011, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1600 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1601 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_66_NO_0014, (cst_val *)&val_1602},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_66_NO_0015, (cst_val *)&val_1603},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_66_NO_0016, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1604 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_66_NO_0018, (cst_val *)&val_1605},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1606 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1607 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_66_NO_0021, (cst_val *)&val_0287},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_66_NO_0022, (cst_val *)&val_1608},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1609 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1610 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_66_NO_0025, (cst_val *)&val_0483},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1611 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_66_NO_0027, (cst_val *)&val_1612},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_66_NO_0028, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1613 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1614 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1615 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1616 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ey_66_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
NULL };

const cst_cart cmu_us_slt_f0_ey_66_cart = {
  cmu_us_slt_f0_ey_66_cart_nodes,
  cmu_us_slt_f0_ey_66_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ey_67_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_67_NO_0000, (cst_val *)&val_1617},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_67_NO_0001, (cst_val *)&val_1618},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0002, (cst_val *)&val_0027},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0003, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1619 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1620 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0006, (cst_val *)&val_0351},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_67_NO_0007, (cst_val *)&val_1621},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0008, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1622 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1623 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1624 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_67_NO_0012, (cst_val *)&val_1625},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1626 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1627 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0015, (cst_val *)&val_0123},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_67_NO_0016, (cst_val *)&val_1628},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0017, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1629 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1630 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1631 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0021, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1632 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1633 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_67_NO_0024, (cst_val *)&val_1634},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0025, (cst_val *)&val_0027},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0026, (cst_val *)&val_0603},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1635 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_67_NO_0028, (cst_val *)&val_1636},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1637 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1638 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_67_NO_0031, (cst_val *)&val_1639},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0032, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1640 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1641 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_67_NO_0035, (cst_val *)&val_1642},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1615 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0037, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1643 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0039, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1644 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1645 },
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_67_NO_0042, (cst_val *)&val_1646},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_67_NO_0043, (cst_val *)&val_0351},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1647 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1648 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1649 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ey_67_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"lisp_cg_phone_rindex",
NULL };

const cst_cart cmu_us_slt_f0_ey_67_cart = {
  cmu_us_slt_f0_ey_67_cart_nodes,
  cmu_us_slt_f0_ey_67_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ey_68_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_68_NO_0000, (cst_val *)&val_1650},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_68_NO_0001, (cst_val *)&val_1651},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_68_NO_0002, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1652 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1653 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1654 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_68_NO_0006, (cst_val *)&val_1655},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_68_NO_0007, (cst_val *)&val_1656},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_68_NO_0008, (cst_val *)&val_1241},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1657 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_68_NO_0010, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1658 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1659 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_68_NO_0013, (cst_val *)&val_0064},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_68_NO_0014, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1660 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1661 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1662 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_68_NO_0018, (cst_val *)&val_1663},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_68_NO_0019, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1664 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ey_68_NO_0021, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1665 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1666 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ey_68_NO_0024, (cst_val *)&val_1612},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1667 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1668 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ey_68_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_ey_68_cart = {
  cmu_us_slt_f0_ey_68_cart_nodes,
  cmu_us_slt_f0_ey_68_feat_table
};

static const cst_cart_node cmu_us_slt_f0_f_71_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_71_NO_0000, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1669 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_71_NO_0002, (cst_val *)&val_0105},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_71_NO_0003, (cst_val *)&val_1670},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1671 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1672 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_71_NO_0006, (cst_val *)&val_0064},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_71_NO_0007, (cst_val *)&val_1673},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_71_NO_0008, (cst_val *)&val_0038},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1674 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1675 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1676 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_71_NO_0012, (cst_val *)&val_0917},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_71_NO_0013, (cst_val *)&val_0123},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_71_NO_0014, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1677 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1678 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1679 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1680 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_f_71_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.seg_onsetcoda",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"lisp_cg_phone_place",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
NULL };

const cst_cart cmu_us_slt_f0_f_71_cart = {
  cmu_us_slt_f0_f_71_cart_nodes,
  cmu_us_slt_f0_f_71_feat_table
};

static const cst_cart_node cmu_us_slt_f0_f_72_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0000, (cst_val *)&val_1681},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0001, (cst_val *)&val_1682},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1683 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0003, (cst_val *)&val_1684},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0004, (cst_val *)&val_1685},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_72_NO_0005, (cst_val *)&val_0064},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_72_NO_0006, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1686 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1687 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1688 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_72_NO_0010, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1689 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0012, (cst_val *)&val_1690},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1691 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1692 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1693 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_72_NO_0016, (cst_val *)&val_0027},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0017, (cst_val *)&val_1694},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_72_NO_0018, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1695 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1696 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0021, (cst_val *)&val_1697},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1698 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1699 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_72_NO_0024, (cst_val *)&val_0027},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0025, (cst_val *)&val_1700},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_72_NO_0026, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1701 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1702 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_72_NO_0029, (cst_val *)&val_0539},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1703 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1704 },
{ 13, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0032, (cst_val *)&val_1705},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0033, (cst_val *)&val_1706},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0034, (cst_val *)&val_1707},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1708 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1709 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0037, (cst_val *)&val_1710},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0038, (cst_val *)&val_1711},
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_72_NO_0039, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1712 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_72_NO_0041, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1713 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1714 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1715 },
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_72_NO_0045, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1716 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1717 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0048, (cst_val *)&val_1718},
{ 15, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_72_NO_0049, (cst_val *)&val_0105},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0050, (cst_val *)&val_0817},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0051, (cst_val *)&val_1719},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1720 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1721 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1722 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1723 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_72_NO_0056, (cst_val *)&val_1724},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1725 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1726 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_f_72_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"lisp_cg_state_index",
"lisp_cg_phone_rindex",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.p.name",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
NULL };

const cst_cart cmu_us_slt_f0_f_72_cart = {
  cmu_us_slt_f0_f_72_cart_nodes,
  cmu_us_slt_f0_f_72_feat_table
};

static const cst_cart_node cmu_us_slt_f0_f_73_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_73_NO_0000, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1727 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_73_NO_0002, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1728 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_73_NO_0004, (cst_val *)&val_1729},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1730 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_73_NO_0006, (cst_val *)&val_0539},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1731 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_f_73_NO_0008, (cst_val *)&val_0064},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_73_NO_0009, (cst_val *)&val_1732},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1733 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1734 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_f_73_NO_0012, (cst_val *)&val_1735},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1736 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1737 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_f_73_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.p.name",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_phone_index",
NULL };

const cst_cart cmu_us_slt_f0_f_73_cart = {
  cmu_us_slt_f0_f_73_cart_nodes,
  cmu_us_slt_f0_f_73_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ih_86_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_86_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_86_NO_0001, (cst_val *)&val_0105},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_86_NO_0002, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1738 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0004, (cst_val *)&val_1739},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1740 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1741 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1742 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_86_NO_0008, (cst_val *)&val_0105},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0009, (cst_val *)&val_1743},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0010, (cst_val *)&val_1744},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0011, (cst_val *)&val_0710},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1745 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1746 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0014, (cst_val *)&val_1747},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1748 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1749 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0017, (cst_val *)&val_1750},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1751 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0019, (cst_val *)&val_0020},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1752 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1753 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_86_NO_0022, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1754 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_86_NO_0024, (cst_val *)&val_1755},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0025, (cst_val *)&val_1756},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1757 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1758 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_86_NO_0028, (cst_val *)&val_0441},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0029, (cst_val *)&val_1759},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1760 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1761 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_86_NO_0032, (cst_val *)&val_0064},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0033, (cst_val *)&val_1762},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1763 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0035, (cst_val *)&val_1764},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0036, (cst_val *)&val_0020},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1765 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1766 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_86_NO_0039, (cst_val *)&val_1767},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1768 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1769 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_86_NO_0042, (cst_val *)&val_0735},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1770 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1771 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ih_86_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"lisp_cg_position_in_phrasep",
"lisp_cg_phone_rindex",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_state_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
NULL };

const cst_cart cmu_us_slt_f0_ih_86_cart = {
  cmu_us_slt_f0_ih_86_cart_nodes,
  cmu_us_slt_f0_ih_86_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ih_87_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0000, (cst_val *)&val_1772},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0001, (cst_val *)&val_0287},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0002, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1773 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0004, (cst_val *)&val_1774},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1775 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1776 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0007, (cst_val *)&val_1777},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0008, (cst_val *)&val_0034},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0009, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1778 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1779 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0012, (cst_val *)&val_1780},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0013, (cst_val *)&val_0433},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1781 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0015, (cst_val *)&val_1782},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1783 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0017, (cst_val *)&val_1784},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1785 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1786 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1787 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0021, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1788 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1789 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0024, (cst_val *)&val_0061},
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0025, (cst_val *)&val_1790},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0026, (cst_val *)&val_1791},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1792 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1793 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1794 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0030, (cst_val *)&val_1795},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0031, (cst_val *)&val_0105},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0032, (cst_val *)&val_1796},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1797 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0034, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1798 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1799 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0037, (cst_val *)&val_0064},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0038, (cst_val *)&val_0034},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0039, (cst_val *)&val_1800},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1470 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1801 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0042, (cst_val *)&val_1802},
{ 12, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0043, (cst_val *)&val_0127},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1803 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1804 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1805 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0047, (cst_val *)&val_1806},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1807 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0049, (cst_val *)&val_1808},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0050, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1809 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1810 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1811 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0054, (cst_val *)&val_1812},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0055, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1813 },
{ 13, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0057, (cst_val *)&val_1282},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_87_NO_0058, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1814 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1815 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1816 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_87_NO_0062, (cst_val *)&val_1817},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1818 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1819 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ih_87_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.stress",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"lisp_cg_phone_rindex",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_state_index",
NULL };

const cst_cart cmu_us_slt_f0_ih_87_cart = {
  cmu_us_slt_f0_ih_87_cart_nodes,
  cmu_us_slt_f0_ih_87_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ih_88_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_88_NO_0001, (cst_val *)&val_1820},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0002, (cst_val *)&val_0155},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1821 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_88_NO_0004, (cst_val *)&val_1822},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1823 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0006, (cst_val *)&val_0483},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1824 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1825 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0009, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1826 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1827 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0012, (cst_val *)&val_0034},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0013, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1828 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0015, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1829 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1830 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0018, (cst_val *)&val_0199},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_88_NO_0019, (cst_val *)&val_1831},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1832 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_88_NO_0021, (cst_val *)&val_1833},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1834 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1835 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0024, (cst_val *)&val_0027},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0025, (cst_val *)&val_0064},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_88_NO_0026, (cst_val *)&val_1836},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_88_NO_0027, (cst_val *)&val_1837},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1838 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1839 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0030, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1840 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_88_NO_0032, (cst_val *)&val_1841},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_88_NO_0033, (cst_val *)&val_1842},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1843 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1844 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_88_NO_0036, (cst_val *)&val_1845},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1846 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1847 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1164 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_88_NO_0040, (cst_val *)&val_1848},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0041, (cst_val *)&val_0105},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0042, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1849 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1850 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1851 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_88_NO_0046, (cst_val *)&val_1852},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1853 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ih_88_NO_0048, (cst_val *)&val_1854},
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0049, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1855 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0051, (cst_val *)&val_0351},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1856 },
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0053, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1857 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1858 },
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ih_88_NO_0056, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1859 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1860 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ih_88_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
NULL };

const cst_cart cmu_us_slt_f0_ih_88_cart = {
  cmu_us_slt_f0_ih_88_cart_nodes,
  cmu_us_slt_f0_ih_88_feat_table
};

static const cst_cart_node cmu_us_slt_f0_p_136_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_136_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_136_NO_0001, (cst_val *)&val_0034},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_136_NO_0002, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1861 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1862 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_136_NO_0005, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1863 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_136_NO_0007, (cst_val *)&val_1352},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_136_NO_0008, (cst_val *)&val_1864},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1865 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1866 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_136_NO_0011, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1476 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1867 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_136_NO_0014, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1868 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1869 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_p_136_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.syl_final",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_vfront",
NULL };

const cst_cart cmu_us_slt_f0_p_136_cart = {
  cmu_us_slt_f0_p_136_cart_nodes,
  cmu_us_slt_f0_p_136_feat_table
};

static const cst_cart_node cmu_us_slt_f0_p_137_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_137_NO_0000, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1870 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_137_NO_0002, (cst_val *)&val_0262},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_137_NO_0003, (cst_val *)&val_0030},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_137_NO_0004, (cst_val *)&val_1871},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1872 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1873 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_137_NO_0007, (cst_val *)&val_1767},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_137_NO_0008, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1874 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1875 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_137_NO_0011, (cst_val *)&val_1876},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_137_NO_0012, (cst_val *)&val_0195},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_137_NO_0013, (cst_val *)&val_1469},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1877 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1878 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1879 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1880 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_137_NO_0018, (cst_val *)&val_0027},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_137_NO_0019, (cst_val *)&val_0925},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1881 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1882 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_137_NO_0022, (cst_val *)&val_0064},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_137_NO_0023, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1883 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1459 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_137_NO_0026, (cst_val *)&val_1884},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1885 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1886 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_p_137_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.n.ph_vc",
NULL };

const cst_cart cmu_us_slt_f0_p_137_cart = {
  cmu_us_slt_f0_p_137_cart_nodes,
  cmu_us_slt_f0_p_137_feat_table
};

static const cst_cart_node cmu_us_slt_f0_p_138_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_138_NO_0000, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1887 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_138_NO_0002, (cst_val *)&val_0064},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_138_NO_0003, (cst_val *)&val_0034},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_138_NO_0004, (cst_val *)&val_0199},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1888 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_138_NO_0006, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1889 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_138_NO_0008, (cst_val *)&val_1890},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1891 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1892 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_138_NO_0011, (cst_val *)&val_1893},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_138_NO_0012, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1894 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_138_NO_0014, (cst_val *)&val_1895},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1896 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1897 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1898 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_138_NO_0018, (cst_val *)&val_0034},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_138_NO_0019, (cst_val *)&val_1899},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1900 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1901 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_138_NO_0022, (cst_val *)&val_1183},
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_p_138_NO_0023, (cst_val *)&val_1902},
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_138_NO_0024, (cst_val *)&val_0169},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1903 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1421 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_p_138_NO_0027, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1904 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1905 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1906 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_p_138_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_vc",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_vfront",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_state_rindex",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
NULL };

const cst_cart cmu_us_slt_f0_p_138_cart = {
  cmu_us_slt_f0_p_138_cart_nodes,
  cmu_us_slt_f0_p_138_feat_table
};

static const cst_cart_node cmu_us_slt_f0_iy_91_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0001, (cst_val *)&val_1755},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1907 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_91_NO_0003, (cst_val *)&val_1908},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1909 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1910 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0006, (cst_val *)&val_0061},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_91_NO_0007, (cst_val *)&val_1911},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0008, (cst_val *)&val_0064},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0009, (cst_val *)&val_0748},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1912 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1913 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1914 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1915 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_91_NO_0014, (cst_val *)&val_1299},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0015, (cst_val *)&val_0034},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_91_NO_0016, (cst_val *)&val_1916},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1917 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0018, (cst_val *)&val_0034},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0019, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1918 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0021, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1919 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1920 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1921 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0025, (cst_val *)&val_0034},
{ 11, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_91_NO_0026, (cst_val *)&val_1767},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1922 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1923 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_91_NO_0029, (cst_val *)&val_0729},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_91_NO_0030, (cst_val *)&val_1241},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_91_NO_0031, (cst_val *)&val_1924},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1925 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1926 },
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0034, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1927 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1928 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_91_NO_0037, (cst_val *)&val_1929},
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0038, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1930 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1931 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0041, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1932 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1933 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0044, (cst_val *)&val_0034},
{ 13, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_91_NO_0045, (cst_val *)&val_1934},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1935 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1936 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0048, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1937 },
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_91_NO_0050, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1938 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1939 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_iy_91_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.n.ph_vfront",
"R:mcep_link.parent.R:segstate.parent.n.ph_vlng",
"lisp_cg_state_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"lisp_cg_phone_rindex",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
NULL };

const cst_cart cmu_us_slt_f0_iy_91_cart = {
  cmu_us_slt_f0_iy_91_cart_nodes,
  cmu_us_slt_f0_iy_91_feat_table
};

static const cst_cart_node cmu_us_slt_f0_iy_92_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0000, (cst_val *)&val_1940},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0001, (cst_val *)&val_1941},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0002, (cst_val *)&val_1942},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0003, (cst_val *)&val_0064},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0004, (cst_val *)&val_0105},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0005, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1943 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1944 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1945 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0009, (cst_val *)&val_0472},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0010, (cst_val *)&val_0212},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1946 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1947 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0013, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1948 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1949 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0016, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1950 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0018, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1951 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1952 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0021, (cst_val *)&val_0027},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0022, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1953 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1954 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0025, (cst_val *)&val_1955},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0026, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1956 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0028, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1957 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1958 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0031, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1959 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1960 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0034, (cst_val *)&val_0061},
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0035, (cst_val *)&val_0034},
{ 11, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0036, (cst_val *)&val_1961},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1962 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1963 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0039, (cst_val *)&val_1964},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0040, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1965 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1966 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1967 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0044, (cst_val *)&val_1968},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0045, (cst_val *)&val_1969},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0046, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1970 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1971 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0049, (cst_val *)&val_0199},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1972 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0051, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1973 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1974 },
{ 14, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0054, (cst_val *)&val_1975},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0055, (cst_val *)&val_0027},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0056, (cst_val *)&val_1976},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1977 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0058, (cst_val *)&val_1978},
{ 15, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0059, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1979 },
{ 16, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0061, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1980 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1981 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1982 },
{ 17, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0065, (cst_val *)&val_0483},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1983 },
{ 18, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0067, (cst_val *)&val_0735},
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0068, (cst_val *)&val_0073},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0069, (cst_val *)&val_1908},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1984 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1985 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1986 },
{ 14, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_92_NO_0073, (cst_val *)&val_1987},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0074, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0450 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_92_NO_0076, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1988 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1989 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1990 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1991 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_iy_92_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.p.name",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.syl_final",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.stress",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
NULL };

const cst_cart cmu_us_slt_f0_iy_92_cart = {
  cmu_us_slt_f0_iy_92_cart_nodes,
  cmu_us_slt_f0_iy_92_feat_table
};

static const cst_cart_node cmu_us_slt_f0_iy_93_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_93_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_93_NO_0001, (cst_val *)&val_1992},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1993 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_93_NO_0003, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1994 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_93_NO_0005, (cst_val *)&val_0041},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_93_NO_0006, (cst_val *)&val_1995},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1996 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_93_NO_0008, (cst_val *)&val_1997},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1998 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1999 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2000 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_93_NO_0012, (cst_val *)&val_0034},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_93_NO_0013, (cst_val *)&val_0472},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2001 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2002 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_93_NO_0016, (cst_val *)&val_0034},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_93_NO_0017, (cst_val *)&val_0221},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_93_NO_0018, (cst_val *)&val_0027},
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_93_NO_0019, (cst_val *)&val_2003},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_93_NO_0020, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2004 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2005 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2006 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_93_NO_0024, (cst_val *)&val_0933},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_93_NO_0025, (cst_val *)&val_0169},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2007 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_93_NO_0027, (cst_val *)&val_0073},
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_iy_93_NO_0028, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2008 },
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_93_NO_0030, (cst_val *)&val_2009},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2010 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2011 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_93_NO_0033, (cst_val *)&val_0267},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2012 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2013 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2014 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2015 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_93_NO_0038, (cst_val *)&val_2016},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2017 },
{ 13, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_iy_93_NO_0040, (cst_val *)&val_2018},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2019 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2020 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_iy_93_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.p.name",
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"lisp_cg_state_index",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_vrnd",
"lisp_cg_state_rindex",
NULL };

const cst_cart cmu_us_slt_f0_iy_93_cart = {
  cmu_us_slt_f0_iy_93_cart_nodes,
  cmu_us_slt_f0_iy_93_feat_table
};

static const cst_cart_node cmu_us_slt_f0_l_106_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0001, (cst_val *)&val_0105},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0002, (cst_val *)&val_0105},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0003, (cst_val *)&val_2021},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0004, (cst_val *)&val_2022},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2023 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0006, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2024 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2025 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0009, (cst_val *)&val_2026},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2027 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0011, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2028 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2029 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2030 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0015, (cst_val *)&val_0034},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0016, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2031 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2032 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2033 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0020, (cst_val *)&val_0034},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0021, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2034 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0023, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2035 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2036 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0026, (cst_val *)&val_2037},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2038 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0028, (cst_val *)&val_1236},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0029, (cst_val *)&val_2039},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2040 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0031, (cst_val *)&val_2041},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2042 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2043 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0034, (cst_val *)&val_0054},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0035, (cst_val *)&val_0105},
{ 14, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0036, (cst_val *)&val_2044},
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0037, (cst_val *)&val_0073},
{ 15, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0038, (cst_val *)&val_0034},
{ 14, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0039, (cst_val *)&val_0227},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2045 },
{ 16, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0041, (cst_val *)&val_0027},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0042, (cst_val *)&val_2046},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0043, (cst_val *)&val_2047},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2048 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2049 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0046, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2050 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2051 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0049, (cst_val *)&val_2052},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0050, (cst_val *)&val_0821},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1709 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2053 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2054 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2055 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0055, (cst_val *)&val_2056},
{ 17, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0056, (cst_val *)&val_2057},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2058 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2059 },
{ 18, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0059, (cst_val *)&val_0064},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0060, (cst_val *)&val_2060},
{ 14, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0061, (cst_val *)&val_0802},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2061 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2062 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2063 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0065, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2064 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2065 },
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0068, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0301 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0300 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0071, (cst_val *)&val_2066},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2067 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0073, (cst_val *)&val_2068},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2069 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0075, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0244 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2070 },
{ 19, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_106_NO_0078, (cst_val *)&val_0034},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_106_NO_0079, (cst_val *)&val_2071},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2072 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2073 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2074 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_l_106_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"lisp_cg_position_in_phrasep",
"lisp_cg_phone_rindex",
"R:mcep_link.parent.R:segstate.parent.p.ph_vfront",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.stress",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"R:mcep_link.parent.R:segstate.parent.p.ph_vrnd",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
"R:mcep_link.parent.R:segstate.parent.n.ph_vc",
"R:mcep_link.parent.R:segstate.parent.syl_final",
NULL };

const cst_cart cmu_us_slt_f0_l_106_cart = {
  cmu_us_slt_f0_l_106_cart_nodes,
  cmu_us_slt_f0_l_106_feat_table
};

static const cst_cart_node cmu_us_slt_f0_l_107_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0000, (cst_val *)&val_2075},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0001, (cst_val *)&val_2076},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0002, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2077 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0004, (cst_val *)&val_0061},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0005, (cst_val *)&val_0047},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2078 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2079 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0008, (cst_val *)&val_2080},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0009, (cst_val *)&val_0073},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0010, (cst_val *)&val_1690},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0011, (cst_val *)&val_2081},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2082 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2083 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2084 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2085 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0016, (cst_val *)&val_2086},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2087 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2088 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0019, (cst_val *)&val_2089},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2090 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2091 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0022, (cst_val *)&val_0034},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0023, (cst_val *)&val_2092},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0024, (cst_val *)&val_2093},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2094 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0026, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2095 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0028, (cst_val *)&val_2096},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2097 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2098 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0031, (cst_val *)&val_2099},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2100 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0033, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2101 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2102 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0036, (cst_val *)&val_0195},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0037, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2103 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0039, (cst_val *)&val_2104},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2105 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2106 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0042, (cst_val *)&val_0105},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0043, (cst_val *)&val_2107},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0044, (cst_val *)&val_0750},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0045, (cst_val *)&val_2108},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0046, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2109 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2110 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0049, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2111 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2112 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0052, (cst_val *)&val_2113},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2114 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0054, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2115 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0056, (cst_val *)&val_2116},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2117 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2118 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0059, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2119 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0061, (cst_val *)&val_2120},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_107_NO_0062, (cst_val *)&val_2121},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2122 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2123 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0065, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2124 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2125 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_107_NO_0068, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2126 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2127 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_l_107_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_vfront",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
NULL };

const cst_cart cmu_us_slt_f0_l_107_cart = {
  cmu_us_slt_f0_l_107_cart_nodes,
  cmu_us_slt_f0_l_107_feat_table
};

static const cst_cart_node cmu_us_slt_f0_l_108_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0001, (cst_val *)&val_0105},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_108_NO_0002, (cst_val *)&val_2128},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_108_NO_0003, (cst_val *)&val_2129},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_108_NO_0004, (cst_val *)&val_2130},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2131 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2132 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0007, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2133 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2134 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0010, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2135 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0012, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2136 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0014, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2137 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2138 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2139 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0018, (cst_val *)&val_0034},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0019, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2140 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2141 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_108_NO_0022, (cst_val *)&val_0350},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0023, (cst_val *)&val_0105},
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0024, (cst_val *)&val_0105},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0025, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2142 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2143 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_108_NO_0028, (cst_val *)&val_2144},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2145 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_108_NO_0030, (cst_val *)&val_2146},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0606 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2147 },
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0033, (cst_val *)&val_0195},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_108_NO_0034, (cst_val *)&val_2148},
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0035, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2149 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2150 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2151 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0039, (cst_val *)&val_2152},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2153 },
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0041, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2154 },
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0043, (cst_val *)&val_0199},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2155 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0045, (cst_val *)&val_0603},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2156 },
{ 15, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0047, (cst_val *)&val_0034},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_l_108_NO_0048, (cst_val *)&val_2157},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2158 },
{ 16, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_l_108_NO_0050, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2159 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2160 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2161 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2162 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_l_108_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
"R:mcep_link.parent.R:HMMstate.n.name",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_vlng",
NULL };

const cst_cart cmu_us_slt_f0_l_108_cart = {
  cmu_us_slt_f0_l_108_cart_nodes,
  cmu_us_slt_f0_l_108_feat_table
};

static const cst_cart_node cmu_us_slt_f0_z_199_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_199_NO_0000, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2163 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_199_NO_0002, (cst_val *)&val_0555},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_199_NO_0003, (cst_val *)&val_0034},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_199_NO_0004, (cst_val *)&val_0041},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2164 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_199_NO_0006, (cst_val *)&val_0034},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_199_NO_0007, (cst_val *)&val_2057},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2165 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2166 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1984 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_199_NO_0011, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2167 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2168 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_199_NO_0014, (cst_val *)&val_2169},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2170 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_199_NO_0016, (cst_val *)&val_0041},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2171 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_199_NO_0018, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2172 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2173 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_z_199_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"lisp_cg_state_rindex",
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
NULL };

const cst_cart cmu_us_slt_f0_z_199_cart = {
  cmu_us_slt_f0_z_199_cart_nodes,
  cmu_us_slt_f0_z_199_feat_table
};

static const cst_cart_node cmu_us_slt_f0_z_200_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_200_NO_0000, (cst_val *)&val_2174},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_200_NO_0001, (cst_val *)&val_2175},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_200_NO_0002, (cst_val *)&val_2176},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_200_NO_0003, (cst_val *)&val_0073},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_200_NO_0004, (cst_val *)&val_0729},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2177 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_200_NO_0006, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2178 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2179 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_200_NO_0009, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2180 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2181 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2182 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_200_NO_0013, (cst_val *)&val_0034},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_200_NO_0014, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2183 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2184 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2185 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_200_NO_0018, (cst_val *)&val_2186},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_200_NO_0019, (cst_val *)&val_0433},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2187 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_200_NO_0021, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2188 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2189 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_200_NO_0024, (cst_val *)&val_0030},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_200_NO_0025, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2190 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2191 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_200_NO_0028, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2192 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_200_NO_0030, (cst_val *)&val_2169},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2193 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_200_NO_0032, (cst_val *)&val_0027},
{ 12, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_200_NO_0033, (cst_val *)&val_2194},
{ 13, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_200_NO_0034, (cst_val *)&val_2195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2196 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2197 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2198 },
{ 13, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_200_NO_0038, (cst_val *)&val_2199},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2200 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2201 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_z_200_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.n.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.syl_final",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
NULL };

const cst_cart cmu_us_slt_f0_z_200_cart = {
  cmu_us_slt_f0_z_200_cart_nodes,
  cmu_us_slt_f0_z_200_feat_table
};

static const cst_cart_node cmu_us_slt_f0_z_201_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_201_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_201_NO_0001, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2202 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_201_NO_0003, (cst_val *)&val_0030},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_201_NO_0004, (cst_val *)&val_0073},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_201_NO_0005, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2203 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2204 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2205 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0009, (cst_val *)&val_2206},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_201_NO_0010, (cst_val *)&val_0433},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2207 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0012, (cst_val *)&val_1908},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2208 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2209 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0015, (cst_val *)&val_2210},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_201_NO_0016, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2211 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2212 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0019, (cst_val *)&val_0020},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0020, (cst_val *)&val_2213},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2214 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2215 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0023, (cst_val *)&val_2216},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2217 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2218 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_201_NO_0026, (cst_val *)&val_0195},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_201_NO_0027, (cst_val *)&val_0433},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2219 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0029, (cst_val *)&val_2220},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2221 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0031, (cst_val *)&val_2222},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0032, (cst_val *)&val_1690},
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0033, (cst_val *)&val_1710},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2223 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2224 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2225 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2226 },
{ 11, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0038, (cst_val *)&val_0555},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0039, (cst_val *)&val_2227},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_201_NO_0040, (cst_val *)&val_2169},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2228 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_201_NO_0042, (cst_val *)&val_0202},
{ 12, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0043, (cst_val *)&val_2229},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2230 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2231 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2232 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2233 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0048, (cst_val *)&val_2234},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_z_201_NO_0049, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2235 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_z_201_NO_0051, (cst_val *)&val_2236},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2237 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2238 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2239 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_z_201_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"lisp_cg_state_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"lisp_cg_state_index",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
"lisp_cg_phone_index",
NULL };

const cst_cart cmu_us_slt_f0_z_201_cart = {
  cmu_us_slt_f0_z_201_cart_nodes,
  cmu_us_slt_f0_z_201_feat_table
};

static const cst_cart_node cmu_us_slt_f0_pau_161_cart_nodes[] = {
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0997 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_pau_161_feat_table[] = {
NULL };

const cst_cart cmu_us_slt_f0_pau_161_cart = {
  cmu_us_slt_f0_pau_161_cart_nodes,
  cmu_us_slt_f0_pau_161_feat_table
};

static const cst_cart_node cmu_us_slt_f0_s_151_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_151_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_151_NO_0001, (cst_val *)&val_2240},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_151_NO_0002, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2241 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2242 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_151_NO_0005, (cst_val *)&val_2243},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2244 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2245 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_151_NO_0008, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2246 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_151_NO_0010, (cst_val *)&val_0027},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_151_NO_0011, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2247 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2248 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_151_NO_0014, (cst_val *)&val_1235},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_151_NO_0015, (cst_val *)&val_2249},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2250 },
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_151_NO_0017, (cst_val *)&val_2251},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_151_NO_0018, (cst_val *)&val_0027},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_151_NO_0019, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2252 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2253 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_151_NO_0022, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2254 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2255 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2256 },
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_151_NO_0026, (cst_val *)&val_2257},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_151_NO_0027, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2258 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2259 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_151_NO_0030, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2260 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2261 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_s_151_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.R:segstate.parent.p.ph_vrnd",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
NULL };

const cst_cart cmu_us_slt_f0_s_151_cart = {
  cmu_us_slt_f0_s_151_cart_nodes,
  cmu_us_slt_f0_s_151_feat_table
};

static const cst_cart_node cmu_us_slt_f0_s_152_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0000, (cst_val *)&val_2262},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0001, (cst_val *)&val_0539},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0002, (cst_val *)&val_0034},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0003, (cst_val *)&val_2263},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2264 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2265 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2266 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0007, (cst_val *)&val_0105},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0008, (cst_val *)&val_2267},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0009, (cst_val *)&val_2268},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0010, (cst_val *)&val_0034},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0011, (cst_val *)&val_2269},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2270 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2271 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0014, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2272 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0016, (cst_val *)&val_2273},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0017, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2274 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0019, (cst_val *)&val_0027},
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0020, (cst_val *)&val_2269},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2275 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2276 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2277 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2278 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0025, (cst_val *)&val_0030},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0026, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2279 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2280 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0029, (cst_val *)&val_1378},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2281 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0031, (cst_val *)&val_2282},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2283 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0033, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2284 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2285 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0036, (cst_val *)&val_0202},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2286 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2287 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0039, (cst_val *)&val_0195},
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0040, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2288 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0042, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2289 },
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0044, (cst_val *)&val_0073},
{ 15, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0045, (cst_val *)&val_2290},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2291 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2292 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0048, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2293 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2294 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2295 },
{ 16, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0052, (cst_val *)&val_0064},
{ 17, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0053, (cst_val *)&val_2296},
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0054, (cst_val *)&val_0027},
{ 18, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0055, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2297 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2298 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0058, (cst_val *)&val_2299},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0059, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2300 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2301 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0062, (cst_val *)&val_2302},
{ 17, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0063, (cst_val *)&val_2303},
{ 17, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0064, (cst_val *)&val_2304},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2305 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2306 },
{ 19, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0067, (cst_val *)&val_0190},
{ 15, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0068, (cst_val *)&val_2307},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2308 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2309 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2310 },
{ 15, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0072, (cst_val *)&val_2311},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2312 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2313 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0075, (cst_val *)&val_2299},
{ 20, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0076, (cst_val *)&val_2314},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2315 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2316 },
{ 21, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0079, (cst_val *)&val_0064},
{ 22, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0080, (cst_val *)&val_0695},
{ 15, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0081, (cst_val *)&val_2317},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2318 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2319 },
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0084, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2320 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2321 },
{ 19, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0087, (cst_val *)&val_2322},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0088, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1810 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2323 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0091, (cst_val *)&val_0064},
{ 17, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0092, (cst_val *)&val_2324},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2325 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2326 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2327 },
{ 23, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0096, (cst_val *)&val_2328},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0097, (cst_val *)&val_2329},
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0098, (cst_val *)&val_0073},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0099, (cst_val *)&val_0034},
{ 15, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0100, (cst_val *)&val_2330},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2331 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2332 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0103, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2333 },
{ 24, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0105, (cst_val *)&val_0105},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0106, (cst_val *)&val_2334},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2335 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2336 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2337 },
{ 15, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0110, (cst_val *)&val_2338},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0111, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2339 },
{ 23, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0113, (cst_val *)&val_0322},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2340 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2341 },
{ 15, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0116, (cst_val *)&val_2342},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2343 },
{ 19, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0118, (cst_val *)&val_0181},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2344 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2345 },
{ 19, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0121, (cst_val *)&val_2346},
{ 23, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0122, (cst_val *)&val_2347},
{ 23, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0123, (cst_val *)&val_2348},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0124, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2349 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0126, (cst_val *)&val_2350},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2351 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2352 },
{ 23, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0129, (cst_val *)&val_2353},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2354 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2355 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2356 },
{ 25, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0133, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2357 },
{ 15, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0135, (cst_val *)&val_2358},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0136, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2359 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2360 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2361 },
{ 26, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_152_NO_0140, (cst_val *)&val_0027},
{ 23, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0141, (cst_val *)&val_2362},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2363 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0143, (cst_val *)&val_2364},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_152_NO_0144, (cst_val *)&val_2365},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2366 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2367 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2368 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2369 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_s_152_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.name",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"lisp_cg_state_rindex",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.stress",
"R:mcep_link.parent.R:segstate.parent.n.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.p.ph_vfront",
"R:mcep_link.parent.R:segstate.parent.n.ph_vrnd",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_vc",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"lisp_cg_state_index",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.p.ph_vrnd",
NULL };

const cst_cart cmu_us_slt_f0_s_152_cart = {
  cmu_us_slt_f0_s_152_cart_nodes,
  cmu_us_slt_f0_s_152_feat_table
};

static const cst_cart_node cmu_us_slt_f0_s_153_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_153_NO_0000, (cst_val *)&val_0061},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_153_NO_0001, (cst_val *)&val_0027},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_153_NO_0002, (cst_val *)&val_0064},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_153_NO_0003, (cst_val *)&val_0020},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2370 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2371 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2372 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2373 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_153_NO_0008, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2374 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_153_NO_0010, (cst_val *)&val_0064},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_153_NO_0011, (cst_val *)&val_0672},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_153_NO_0012, (cst_val *)&val_2375},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2376 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_153_NO_0014, (cst_val *)&val_2377},
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_153_NO_0015, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2378 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2379 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2380 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_153_NO_0019, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2381 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2382 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_153_NO_0022, (cst_val *)&val_0314},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2383 },
{ 12, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_153_NO_0024, (cst_val *)&val_1934},
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_153_NO_0025, (cst_val *)&val_0105},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_153_NO_0026, (cst_val *)&val_2384},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2385 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_153_NO_0028, (cst_val *)&val_2386},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2387 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2388 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_153_NO_0031, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2389 },
{ 14, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_153_NO_0033, (cst_val *)&val_2390},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2391 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2392 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_153_NO_0036, (cst_val *)&val_2393},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_153_NO_0037, (cst_val *)&val_0064},
{ 15, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_s_153_NO_0038, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2394 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2395 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2396 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_s_153_NO_0042, (cst_val *)&val_2397},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2398 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2399 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_s_153_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"lisp_cg_state_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_vc",
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"lisp_cg_position_in_phrasep",
"lisp_cg_state_rindex",
"R:mcep_link.parent.R:segstate.parent.n.ph_vfront",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:HMMstate.n.name",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.seg_onsetcoda",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
NULL };

const cst_cart cmu_us_slt_f0_s_153_cart = {
  cmu_us_slt_f0_s_153_cart_nodes,
  cmu_us_slt_f0_s_153_feat_table
};

static const cst_cart_node cmu_us_slt_f0_eh_56_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_56_NO_0000, (cst_val *)&val_2400},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_56_NO_0001, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2401 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_56_NO_0003, (cst_val *)&val_2402},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_56_NO_0004, (cst_val *)&val_2157},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_56_NO_0005, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2403 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2404 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2405 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2406 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_56_NO_0010, (cst_val *)&val_0101},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2407 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_56_NO_0012, (cst_val *)&val_0866},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_56_NO_0013, (cst_val *)&val_2408},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_56_NO_0014, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2409 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2410 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_56_NO_0017, (cst_val *)&val_2411},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2412 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2413 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2414 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_eh_56_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
NULL };

const cst_cart cmu_us_slt_f0_eh_56_cart = {
  cmu_us_slt_f0_eh_56_cart_nodes,
  cmu_us_slt_f0_eh_56_feat_table
};

static const cst_cart_node cmu_us_slt_f0_eh_57_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_57_NO_0000, (cst_val *)&val_2415},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_57_NO_0001, (cst_val *)&val_0287},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_57_NO_0002, (cst_val *)&val_2416},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_57_NO_0003, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2417 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2418 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2419 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_57_NO_0007, (cst_val *)&val_2420},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2421 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_57_NO_0009, (cst_val *)&val_0073},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_57_NO_0010, (cst_val *)&val_2422},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2423 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2424 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_57_NO_0013, (cst_val *)&val_2425},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_57_NO_0014, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2426 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2427 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2428 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_57_NO_0018, (cst_val *)&val_2429},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_57_NO_0019, (cst_val *)&val_2430},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_57_NO_0020, (cst_val *)&val_2431},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2432 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2433 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_57_NO_0023, (cst_val *)&val_0105},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_57_NO_0024, (cst_val *)&val_0027},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_57_NO_0025, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2434 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2435 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_57_NO_0028, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2436 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2437 },
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_57_NO_0031, (cst_val *)&val_2438},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2439 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2440 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_57_NO_0034, (cst_val *)&val_2441},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_57_NO_0035, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2442 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_57_NO_0037, (cst_val *)&val_0640},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2443 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2444 },
{ 11, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_57_NO_0040, (cst_val *)&val_2445},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2446 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2447 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_eh_57_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.p.name",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"lisp_cg_state_rindex",
"lisp_cg_phone_index",
NULL };

const cst_cart cmu_us_slt_f0_eh_57_cart = {
  cmu_us_slt_f0_eh_57_cart_nodes,
  cmu_us_slt_f0_eh_57_feat_table
};

static const cst_cart_node cmu_us_slt_f0_eh_58_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_58_NO_0000, (cst_val *)&val_2448},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_58_NO_0001, (cst_val *)&val_0287},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_58_NO_0002, (cst_val *)&val_2449},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2450 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2451 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_58_NO_0005, (cst_val *)&val_2452},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2453 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_58_NO_0007, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2454 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2455 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_58_NO_0010, (cst_val *)&val_2456},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_58_NO_0011, (cst_val *)&val_2457},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_58_NO_0012, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2458 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2337 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_58_NO_0015, (cst_val *)&val_2459},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_58_NO_0016, (cst_val *)&val_0064},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_58_NO_0017, (cst_val *)&val_0483},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2460 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1671 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_58_NO_0020, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2461 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2462 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_58_NO_0023, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2463 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_58_NO_0025, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2464 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2465 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_eh_58_NO_0028, (cst_val *)&val_2466},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_58_NO_0029, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2467 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_58_NO_0031, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2468 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2469 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_58_NO_0034, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2470 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_eh_58_NO_0036, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2471 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2472 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_eh_58_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.p.name",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
NULL };

const cst_cart cmu_us_slt_f0_eh_58_cart = {
  cmu_us_slt_f0_eh_58_cart_nodes,
  cmu_us_slt_f0_eh_58_feat_table
};

static const cst_cart_node cmu_us_slt_f0_t_164_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0000, (cst_val *)&val_2473},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0001, (cst_val *)&val_0034},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0002, (cst_val *)&val_1418},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0003, (cst_val *)&val_2474},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2475 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0005, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2476 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2477 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0008, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2478 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2479 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0011, (cst_val *)&val_0027},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0012, (cst_val *)&val_0034},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0013, (cst_val *)&val_0933},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0014, (cst_val *)&val_2480},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0015, (cst_val *)&val_2481},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2482 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0017, (cst_val *)&val_1352},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2483 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2484 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0020, (cst_val *)&val_0027},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0021, (cst_val *)&val_2485},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2486 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2487 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0024, (cst_val *)&val_2488},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2489 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2490 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2491 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2492 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0029, (cst_val *)&val_0034},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0030, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2493 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2494 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0033, (cst_val *)&val_0027},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0034, (cst_val *)&val_0199},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2495 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0036, (cst_val *)&val_0287},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0037, (cst_val *)&val_0030},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0038, (cst_val *)&val_2496},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2497 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2498 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2499 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0042, (cst_val *)&val_2500},
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0043, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2501 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2502 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0046, (cst_val *)&val_0443},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0047, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2503 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0049, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2504 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2505 },
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0052, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2506 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2507 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0055, (cst_val *)&val_2508},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2509 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0057, (cst_val *)&val_0073},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0058, (cst_val *)&val_2510},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2511 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1614 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2512 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0062, (cst_val *)&val_2513},
{ 15, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0063, (cst_val *)&val_2514},
{ 16, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0064, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2515 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0066, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2516 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2517 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_164_NO_0069, (cst_val *)&val_2518},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2519 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2520 },
{ 17, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_164_NO_0072, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2521 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2522 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_t_164_feat_table[] = {
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.syl_final",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"R:mcep_link.parent.R:segstate.parent.n.ph_vrnd",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.p.ph_vrnd",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.p.ph_vfront",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
NULL };

const cst_cart cmu_us_slt_f0_t_164_cart = {
  cmu_us_slt_f0_t_164_cart_nodes,
  cmu_us_slt_f0_t_164_feat_table
};

static const cst_cart_node cmu_us_slt_f0_t_165_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0000, (cst_val *)&val_2523},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0001, (cst_val *)&val_0539},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2524 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0003, (cst_val *)&val_0034},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0004, (cst_val *)&val_2510},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0005, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0209 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2525 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0008, (cst_val *)&val_0195},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2526 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2527 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0011, (cst_val *)&val_2528},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0012, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2529 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0014, (cst_val *)&val_2530},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2531 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2532 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0017, (cst_val *)&val_2533},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2534 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2535 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0020, (cst_val *)&val_0027},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0021, (cst_val *)&val_0034},
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0022, (cst_val *)&val_2536},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2537 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2538 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0025, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2539 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0027, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2540 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0029, (cst_val *)&val_0900},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2541 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0031, (cst_val *)&val_2542},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0032, (cst_val *)&val_2543},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0033, (cst_val *)&val_2544},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2545 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2546 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2547 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2548 },
{ 11, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0038, (cst_val *)&val_2549},
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0039, (cst_val *)&val_0034},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0040, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2550 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0042, (cst_val *)&val_0064},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0043, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2551 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2552 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0046, (cst_val *)&val_2553},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2554 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2555 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2556 },
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0050, (cst_val *)&val_0034},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0051, (cst_val *)&val_0034},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0052, (cst_val *)&val_2557},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2558 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0762 },
{ 15, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0055, (cst_val *)&val_2559},
{ 16, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0056, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2560 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0058, (cst_val *)&val_2561},
{ 17, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0059, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2562 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2563 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_165_NO_0062, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2564 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2565 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2566 },
{ 15, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_165_NO_0066, (cst_val *)&val_2567},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2568 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2569 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_t_165_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.name",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.p.ph_vfront",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_vrnd",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"R:mcep_link.parent.R:segstate.parent.p.ph_vc",
"R:mcep_link.parent.R:segstate.parent.syl_final",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.stress",
NULL };

const cst_cart cmu_us_slt_f0_t_165_cart = {
  cmu_us_slt_f0_t_165_cart_nodes,
  cmu_us_slt_f0_t_165_feat_table
};

static const cst_cart_node cmu_us_slt_f0_t_166_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0001, (cst_val *)&val_0034},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0002, (cst_val *)&val_0735},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2570 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0004, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2571 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2572 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_166_NO_0007, (cst_val *)&val_2445},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0008, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2573 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0010, (cst_val *)&val_0027},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0011, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2574 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2575 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0014, (cst_val *)&val_0061},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2576 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_166_NO_0016, (cst_val *)&val_2577},
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0017, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2578 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2579 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_166_NO_0020, (cst_val *)&val_2580},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2581 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2582 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0023, (cst_val *)&val_0199},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2583 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0025, (cst_val *)&val_0105},
{ 12, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0026, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2584 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2585 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0029, (cst_val *)&val_0155},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2586 },
{ 13, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_166_NO_0031, (cst_val *)&val_0619},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0032, (cst_val *)&val_0027},
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0033, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2587 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2588 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_166_NO_0036, (cst_val *)&val_2589},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2590 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_t_166_NO_0038, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2591 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2592 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2593 },
{ 4, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_166_NO_0042, (cst_val *)&val_2594},
{ 15, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_t_166_NO_0043, (cst_val *)&val_0555},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2595 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2596 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2597 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_t_166_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.position_type",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.p.ph_vheight",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.p.ph_vrnd",
"lisp_cg_state_index",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.pos_in_syl",
NULL };

const cst_cart cmu_us_slt_f0_t_166_cart = {
  cmu_us_slt_f0_t_166_cart_nodes,
  cmu_us_slt_f0_t_166_feat_table
};

static const cst_cart_node cmu_us_slt_f0_er_61_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0000, (cst_val *)&val_2598},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0001, (cst_val *)&val_0034},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0002, (cst_val *)&val_0105},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2599 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0004, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2600 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0006, (cst_val *)&val_2601},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2602 },
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0008, (cst_val *)&val_0739},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0009, (cst_val *)&val_0104},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0010, (cst_val *)&val_0034},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0011, (cst_val *)&val_0478},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2603 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2604 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2605 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0015, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2606 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0017, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2607 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2608 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2609 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0021, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2610 },
{ 11, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0023, (cst_val *)&val_2108},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2611 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2612 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0026, (cst_val *)&val_0061},
{ 12, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0027, (cst_val *)&val_2613},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0028, (cst_val *)&val_0073},
{ 5, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0029, (cst_val *)&val_2614},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2615 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2616 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0032, (cst_val *)&val_2617},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2618 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2619 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2620 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0036, (cst_val *)&val_0034},
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0037, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2621 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0039, (cst_val *)&val_0064},
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0040, (cst_val *)&val_0034},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0041, (cst_val *)&val_2622},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2623 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0043, (cst_val *)&val_1130},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2624 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2625 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0046, (cst_val *)&val_0169},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2626 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2627 },
{ 11, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0049, (cst_val *)&val_0695},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0050, (cst_val *)&val_2628},
{ 14, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0051, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2629 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_61_NO_0053, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2630 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0028 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2631 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_61_NO_0057, (cst_val *)&val_2632},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2633 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2634 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2635 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_er_61_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.lisp_is_pau",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:HMMstate.p.name",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.stress",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"lisp_cg_state_index",
"lisp_cg_state_rindex",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
NULL };

const cst_cart cmu_us_slt_f0_er_61_cart = {
  cmu_us_slt_f0_er_61_cart_nodes,
  cmu_us_slt_f0_er_61_feat_table
};

static const cst_cart_node cmu_us_slt_f0_er_62_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_62_NO_0000, (cst_val *)&val_2174},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_62_NO_0001, (cst_val *)&val_2175},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0002, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2636 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_62_NO_0004, (cst_val *)&val_2513},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0005, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2637 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2638 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2639 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0009, (cst_val *)&val_0105},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0010, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2640 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2641 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2642 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0014, (cst_val *)&val_0061},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0015, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2643 },
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0017, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2644 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2645 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_62_NO_0020, (cst_val *)&val_2646},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0021, (cst_val *)&val_0105},
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0022, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2647 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0024, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2648 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2649 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2650 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0028, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2651 },
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_62_NO_0030, (cst_val *)&val_0345},
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0031, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2652 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_62_NO_0033, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2653 },
{ 11, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_62_NO_0035, (cst_val *)&val_2654},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2655 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2505 },
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_62_NO_0038, (cst_val *)&val_2656},
{ 12, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_62_NO_0039, (cst_val *)&val_2657},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2658 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2659 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2660 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_er_62_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.n.seg_onsetcoda",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.n.ph_vlng",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"lisp_cg_state_place",
NULL };

const cst_cart cmu_us_slt_f0_er_62_cart = {
  cmu_us_slt_f0_er_62_cart_nodes,
  cmu_us_slt_f0_er_62_feat_table
};

static const cst_cart_node cmu_us_slt_f0_er_63_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_63_NO_0000, (cst_val *)&val_2661},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_63_NO_0001, (cst_val *)&val_0034},
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_63_NO_0002, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2662 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2663 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_63_NO_0005, (cst_val *)&val_0073},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_63_NO_0006, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2664 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2665 },
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_63_NO_0009, (cst_val *)&val_2666},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2667 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2668 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_63_NO_0012, (cst_val *)&val_2669},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_63_NO_0013, (cst_val *)&val_1744},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_63_NO_0014, (cst_val *)&val_2670},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2671 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_1421 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_63_NO_0017, (cst_val *)&val_2672},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_63_NO_0018, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2673 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_63_NO_0020, (cst_val *)&val_2674},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2675 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2676 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_63_NO_0023, (cst_val *)&val_0287},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2677 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2678 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_63_NO_0026, (cst_val *)&val_2679},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_63_NO_0027, (cst_val *)&val_1934},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2680 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2681 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_63_NO_0030, (cst_val *)&val_0064},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_er_63_NO_0031, (cst_val *)&val_0779},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2682 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_63_NO_0033, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2683 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2684 },
{ 2, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_63_NO_0036, (cst_val *)&val_0073},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2685 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_er_63_NO_0038, (cst_val *)&val_0030},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2686 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2687 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_er_63_feat_table[] = {
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"lisp_cg_phone_index",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.p.ph_ctype",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_er_63_cart = {
  cmu_us_slt_f0_er_63_cart_nodes,
  cmu_us_slt_f0_er_63_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ax_26_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_26_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_26_NO_0001, (cst_val *)&val_0034},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0002, (cst_val *)&val_2688},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2689 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2690 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_26_NO_0005, (cst_val *)&val_0034},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_26_NO_0006, (cst_val *)&val_0441},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2691 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2692 },
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_26_NO_0009, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2693 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0011, (cst_val *)&val_2694},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_26_NO_0012, (cst_val *)&val_0199},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2695 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0014, (cst_val *)&val_2696},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0015, (cst_val *)&val_2697},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2698 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2699 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0018, (cst_val *)&val_2700},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0019, (cst_val *)&val_2701},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2702 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2703 },
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_26_NO_0022, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2704 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2705 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0025, (cst_val *)&val_2706},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0026, (cst_val *)&val_2707},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2708 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2709 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0029, (cst_val *)&val_2710},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2711 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_26_NO_0031, (cst_val *)&val_0123},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0032, (cst_val *)&val_2712},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2713 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2714 },
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0035, (cst_val *)&val_2715},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2716 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2339 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_26_NO_0038, (cst_val *)&val_0061},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0039, (cst_val *)&val_2717},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_26_NO_0040, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2718 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2719 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2720 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0044, (cst_val *)&val_0353},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_26_NO_0045, (cst_val *)&val_2721},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2722 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2723 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2724 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ax_26_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.p.ph_vlng",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_cplace",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
NULL };

const cst_cart cmu_us_slt_f0_ax_26_cart = {
  cmu_us_slt_f0_ax_26_cart_nodes,
  cmu_us_slt_f0_ax_26_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ax_27_cart_nodes[] = {
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_27_NO_0000, (cst_val *)&val_2725},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_27_NO_0001, (cst_val *)&val_2726},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_27_NO_0002, (cst_val *)&val_0603},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_27_NO_0003, (cst_val *)&val_0565},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2727 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2728 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_27_NO_0006, (cst_val *)&val_2729},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2730 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2731 },
{ 3, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_27_NO_0009, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2732 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2733 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_27_NO_0012, (cst_val *)&val_0034},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_27_NO_0013, (cst_val *)&val_0105},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_27_NO_0014, (cst_val *)&val_2734},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2735 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2736 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_27_NO_0017, (cst_val *)&val_2737},
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_27_NO_0018, (cst_val *)&val_2738},
{ 7, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_27_NO_0019, (cst_val *)&val_2086},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2739 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2740 },
{ 6, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_27_NO_0022, (cst_val *)&val_2741},
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_27_NO_0023, (cst_val *)&val_2742},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2743 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2744 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_27_NO_0026, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2745 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2746 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_27_NO_0029, (cst_val *)&val_0064},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2747 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2748 },
{ 9, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_27_NO_0032, (cst_val *)&val_0061},
{ 10, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_27_NO_0033, (cst_val *)&val_2749},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2750 },
{ 0, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_27_NO_0035, (cst_val *)&val_2751},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2752 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2753 },
{ 8, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_27_NO_0038, (cst_val *)&val_0027},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2754 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2755 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ax_27_feat_table[] = {
"R:mcep_link.parent.R:segstate.p.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.p.seg_onsetcoda",
"lisp_cg_position_in_phrasep",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.lisp_cg_break",
"lisp_cg_phone_index",
NULL };

const cst_cart cmu_us_slt_f0_ax_27_cart = {
  cmu_us_slt_f0_ax_27_cart_nodes,
  cmu_us_slt_f0_ax_27_feat_table
};

static const cst_cart_node cmu_us_slt_f0_ax_28_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0000, (cst_val *)&val_0034},
{ 1, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0001, (cst_val *)&val_0034},
{ 2, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_28_NO_0002, (cst_val *)&val_2756},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_28_NO_0003, (cst_val *)&val_0746},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2757 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2758 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2759 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2760 },
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0008, (cst_val *)&val_0034},
{ 5, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0009, (cst_val *)&val_0603},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2761 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2762 },
{ 6, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0012, (cst_val *)&val_0027},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0013, (cst_val *)&val_0027},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_28_NO_0014, (cst_val *)&val_2763},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2764 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2765 },
{ 9, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_28_NO_0017, (cst_val *)&val_0074},
{ 4, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0018, (cst_val *)&val_0199},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2766 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_28_NO_0020, (cst_val *)&val_2767},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2768 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2769 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_28_NO_0023, (cst_val *)&val_2770},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2771 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2772 },
{ 10, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0026, (cst_val *)&val_0034},
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0027, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2773 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_28_NO_0029, (cst_val *)&val_2774},
{ 7, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0030, (cst_val *)&val_0064},
{ 12, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_28_NO_0031, (cst_val *)&val_2775},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2776 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2777 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2778 },
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_28_NO_0035, (cst_val *)&val_2779},
{ 8, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_28_NO_0036, (cst_val *)&val_2780},
{ 3, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_28_NO_0037, (cst_val *)&val_0830},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2781 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2782 },
{ 12, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_ax_28_NO_0040, (cst_val *)&val_2783},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2784 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2785 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0043, (cst_val *)&val_0034},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2786 },
{ 11, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0045, (cst_val *)&val_0123},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2787 },
{ 13, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_ax_28_NO_0047, (cst_val *)&val_0483},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2788 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2789 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2790 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_ax_28_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.n.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.R:Syllable.p.lisp_cg_break",
"lisp_cg_phone_index",
"R:mcep_link.parent.lisp_cg_duration",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.R:Word.p.gpos",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.parent.gpos",
"R:mcep_link.parent.R:segstate.parent.n.ph_cvox",
"R:mcep_link.parent.R:segstate.parent.p.ph_cvox",
"lisp_cg_position_in_phrasep",
"lisp_cg_state_place",
"R:mcep_link.parent.R:segstate.parent.R:SylStructure.parent.accented",
"R:mcep_link.parent.R:segstate.parent.p.ph_cplace",
"lisp_cg_phone_place",
"R:mcep_link.parent.R:segstate.parent.n.ph_ctype",
NULL };

const cst_cart cmu_us_slt_f0_ax_28_cart = {
  cmu_us_slt_f0_ax_28_cart_nodes,
  cmu_us_slt_f0_ax_28_feat_table
};

static const cst_cart_node cmu_us_slt_f0_pau_141_cart_nodes[] = {
{ 0, CST_CART_OP_IS, CTNODE_cmu_us_slt_f0_pau_141_NO_0000, (cst_val *)&val_0195},
{ 1, CST_CART_OP_LESS, CTNODE_cmu_us_slt_f0_pau_141_NO_0001, (cst_val *)&val_0262},
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_2791 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0997 },
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0997 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_pau_141_feat_table[] = {
"R:mcep_link.parent.R:segstate.parent.n.ph_vheight",
"R:mcep_link.parent.R:segstate.n.lisp_cg_duration",
NULL };

const cst_cart cmu_us_slt_f0_pau_141_cart = {
  cmu_us_slt_f0_pau_141_cart_nodes,
  cmu_us_slt_f0_pau_141_feat_table
};

static const cst_cart_node cmu_us_slt_f0_pau_142_cart_nodes[] = {
{ 255, CST_CART_OP_NONE, 0, (cst_val *)&val_0997 },
{ 255, CST_CART_OP_NONE, 0, 0}};


static const char * const cmu_us_slt_f0_pau_142_feat_table[] = {
NULL };

const cst_cart cmu_us_slt_f0_pau_142_cart = {
  cmu_us_slt_f0_pau_142_cart_nodes,
  cmu_us_slt_f0_pau_142_feat_table
};


const cst_cart * const cmu_us_slt_f0_carts[] = {
 &cmu_us_slt_f0_zh_204_cart,
 &cmu_us_slt_f0_zh_205_cart,
 &cmu_us_slt_f0_zh_206_cart,
 &cmu_us_slt_f0_oy_131_cart,
 &cmu_us_slt_f0_oy_132_cart,
 &cmu_us_slt_f0_oy_133_cart,
 &cmu_us_slt_f0_ch_41_cart,
 &cmu_us_slt_f0_ch_42_cart,
 &cmu_us_slt_f0_ch_43_cart,
 &cmu_us_slt_f0_aw_21_cart,
 &cmu_us_slt_f0_aw_22_cart,
 &cmu_us_slt_f0_aw_23_cart,
 &cmu_us_slt_f0_ow_126_cart,
 &cmu_us_slt_f0_ow_127_cart,
 &cmu_us_slt_f0_ow_128_cart,
 &cmu_us_slt_f0_b_36_cart,
 &cmu_us_slt_f0_b_37_cart,
 &cmu_us_slt_f0_b_38_cart,
 &cmu_us_slt_f0_g_76_cart,
 &cmu_us_slt_f0_g_77_cart,
 &cmu_us_slt_f0_g_78_cart,
 &cmu_us_slt_f0_ng_121_cart,
 &cmu_us_slt_f0_ng_122_cart,
 &cmu_us_slt_f0_ng_123_cart,
 &cmu_us_slt_f0_uw_179_cart,
 &cmu_us_slt_f0_uw_180_cart,
 &cmu_us_slt_f0_uw_181_cart,
 &cmu_us_slt_f0_sh_156_cart,
 &cmu_us_slt_f0_sh_157_cart,
 &cmu_us_slt_f0_sh_158_cart,
 &cmu_us_slt_f0_uh_174_cart,
 &cmu_us_slt_f0_uh_175_cart,
 &cmu_us_slt_f0_uh_176_cart,
 &cmu_us_slt_f0_hh_81_cart,
 &cmu_us_slt_f0_hh_82_cart,
 &cmu_us_slt_f0_hh_83_cart,
 &cmu_us_slt_f0_ae_6_cart,
 &cmu_us_slt_f0_ae_7_cart,
 &cmu_us_slt_f0_ae_8_cart,
 &cmu_us_slt_f0_y_194_cart,
 &cmu_us_slt_f0_y_195_cart,
 &cmu_us_slt_f0_y_196_cart,
 &cmu_us_slt_f0_k_101_cart,
 &cmu_us_slt_f0_k_102_cart,
 &cmu_us_slt_f0_k_103_cart,
 &cmu_us_slt_f0_aa_1_cart,
 &cmu_us_slt_f0_aa_2_cart,
 &cmu_us_slt_f0_aa_3_cart,
 &cmu_us_slt_f0_ay_31_cart,
 &cmu_us_slt_f0_ay_32_cart,
 &cmu_us_slt_f0_ay_33_cart,
 &cmu_us_slt_f0_w_189_cart,
 &cmu_us_slt_f0_w_190_cart,
 &cmu_us_slt_f0_w_191_cart,
 &cmu_us_slt_f0_m_111_cart,
 &cmu_us_slt_f0_m_112_cart,
 &cmu_us_slt_f0_m_113_cart,
 &cmu_us_slt_f0_pau_143_cart,
 &cmu_us_slt_f0_ao_16_cart,
 &cmu_us_slt_f0_ao_17_cart,
 &cmu_us_slt_f0_ao_18_cart,
 &cmu_us_slt_f0_th_169_cart,
 &cmu_us_slt_f0_th_170_cart,
 &cmu_us_slt_f0_th_171_cart,
 &cmu_us_slt_f0_ah_11_cart,
 &cmu_us_slt_f0_ah_12_cart,
 &cmu_us_slt_f0_ah_13_cart,
 &cmu_us_slt_f0_v_184_cart,
 &cmu_us_slt_f0_v_185_cart,
 &cmu_us_slt_f0_v_186_cart,
 &cmu_us_slt_f0_dh_51_cart,
 &cmu_us_slt_f0_dh_52_cart,
 &cmu_us_slt_f0_dh_53_cart,
 &cmu_us_slt_f0_d_46_cart,
 &cmu_us_slt_f0_d_47_cart,
 &cmu_us_slt_f0_d_48_cart,
 &cmu_us_slt_f0_n_116_cart,
 &cmu_us_slt_f0_n_117_cart,
 &cmu_us_slt_f0_n_118_cart,
 &cmu_us_slt_f0_jh_96_cart,
 &cmu_us_slt_f0_jh_97_cart,
 &cmu_us_slt_f0_jh_98_cart,
 &cmu_us_slt_f0_r_146_cart,
 &cmu_us_slt_f0_r_147_cart,
 &cmu_us_slt_f0_r_148_cart,
 &cmu_us_slt_f0_ey_66_cart,
 &cmu_us_slt_f0_ey_67_cart,
 &cmu_us_slt_f0_ey_68_cart,
 &cmu_us_slt_f0_f_71_cart,
 &cmu_us_slt_f0_f_72_cart,
 &cmu_us_slt_f0_f_73_cart,
 &cmu_us_slt_f0_ih_86_cart,
 &cmu_us_slt_f0_ih_87_cart,
 &cmu_us_slt_f0_ih_88_cart,
 &cmu_us_slt_f0_p_136_cart,
 &cmu_us_slt_f0_p_137_cart,
 &cmu_us_slt_f0_p_138_cart,
 &cmu_us_slt_f0_iy_91_cart,
 &cmu_us_slt_f0_iy_92_cart,
 &cmu_us_slt_f0_iy_93_cart,
 &cmu_us_slt_f0_l_106_cart,
 &cmu_us_slt_f0_l_107_cart,
 &cmu_us_slt_f0_l_108_cart,
 &cmu_us_slt_f0_z_199_cart,
 &cmu_us_slt_f0_z_200_cart,
 &cmu_us_slt_f0_z_201_cart,
 &cmu_us_slt_f0_pau_161_cart,
 &cmu_us_slt_f0_s_151_cart,
 &cmu_us_slt_f0_s_152_cart,
 &cmu_us_slt_f0_s_153_cart,
 &cmu_us_slt_f0_eh_56_cart,
 &cmu_us_slt_f0_eh_57_cart,
 &cmu_us_slt_f0_eh_58_cart,
 &cmu_us_slt_f0_t_164_cart,
 &cmu_us_slt_f0_t_165_cart,
 &cmu_us_slt_f0_t_166_cart,
 &cmu_us_slt_f0_er_61_cart,
 &cmu_us_slt_f0_er_62_cart,
 &cmu_us_slt_f0_er_63_cart,
 &cmu_us_slt_f0_ax_26_cart,
 &cmu_us_slt_f0_ax_27_cart,
 &cmu_us_slt_f0_ax_28_cart,
 &cmu_us_slt_f0_pau_141_cart,
 &cmu_us_slt_f0_pau_142_cart,
 0 };
