<snapdata remixID="8956890"><project name='Music Project: U3' app='Snap! 5.1, http://snap.berkeley.edu' version='1'>
  <notes/>
  <thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAADOUlEQVR4Xu3XQUpjYRCF0V9RcOIW3I8bEHSgBtyJ28kmsh5x4iQEB6/BWQ+U5nLpAjkZp6rIeR88crZt27Z8CAwJnAlwSN7ZLwEBCmFUQICj/I4LUAOjAgIc5XdcgBoYFRDgKL/jAtTAqIAAR/kdF6AGRgUEOMrvuAA1MCogwFF+xwWogVEBAY7yOy5ADYwKCHCU33EBamBUQICj/I4LUAOjAgIc5XdcgBoYFRDgKL/jAtTAqIAAR/kdF6AGRgUEOMrvuAA1MCogwFF+xwWogVEBAY7yOy5ADYwKCHCU33EBamBUQICj/I4LUAOjAgIc5XdcgBoYFRDgKL/jAtTAqIAAR/kdF6AGRgUEOMrvuAA1MCogwFF+xwWogVEBAY7yOy5ADYwKCHCU33EBamBUQICj/I4LUAOjAgIc5XdcgBoYFRDgKL/jAtTAqIAAv+Hf7/fr/f193d7erpubm9GH9JuPC/Cbp/vx8bFeXl7W5+fnent7W/f39+vi4mI9PT2tq6ur39zEf/1tAvyB+3A4rNfX13V9ff3Xt47H43p+fl7btn2F6ZMLCDAI8HQ6rcfHx3V+fr7u7u5yfZNLgP/4Cn54ePh6Be92u3V5eSmdkoAA/QkppZStEWDmZqokIMASpDWZgAAzN1MlAQGWIK3JBASYuZkqCQiwBGlNJiDAzM1USUCAJUhrMgEBZm6mSgICLEFakwkIMHMzVRIQYAnSmkxAgJmbqZKAAEuQ1mQCAszcTJUEBFiCtCYTEGDmZqokIMASpDWZgAAzN1MlAQGWIK3JBASYuZkqCQiwBGlNJiDAzM1USUCAJUhrMgEBZm6mSgICLEFakwkIMHMzVRIQYAnSmkxAgJmbqZKAAEuQ1mQCAszcTJUEBFiCtCYTEGDmZqokIMASpDWZgAAzN1MlAQGWIK3JBASYuZkqCQiwBGlNJiDAzM1USUCAJUhrMgEBZm6mSgICLEFakwkIMHMzVRIQYAnSmkxAgJmbqZKAAEuQ1mQCAszcTJUEBFiCtCYTEGDmZqokIMASpDWZgAAzN1MlAQGWIK3JBASYuZkqCQiwBGlNJiDAzM1USUCAJUhrMgEBZm6mSgJ/AE38F7dMeMlrAAAAAElFTkSuQmCC</thumbnail>
  <stage inheritance='true' id='1' volume='100' height='360' tempo='60' lines='round' width='480' name='Stage' sublistIDs='false' threadsafe='false' codify='false' color='255,255,255,1' scheduled='false' pan='0' ternary='false' costume='0'>
    <pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails>
    <costumes>
      <list id='2' struct='atomic'/>
    </costumes>
    <sounds>
      <list id='3' struct='atomic'/>
    </sounds>
    <variables/>
    <blocks/>
    <scripts/>
    <sprites>
      <sprite x='0' pen='tip' id='8' y='0' name='Sprite' idx='1' volume='100' rotation='1' scale='1' heading='90' costume='0' color='80,80,80,1' pan='0' draggable='true'>
        <costumes>
          <list id='9' struct='atomic'/>
        </costumes>
        <sounds>
          <list id='10' struct='atomic'/>
        </sounds>
        <blocks/>
        <variables/>
        <scripts>
          <script x='10.000000000000114' y='10.000000000000028'>
            <block s='doPlayNote'>
              <block s='reportListItem'>
                <l>
                  <option>any</option>
                </l>
                <block s='reportNewList'>
                  <list>
                    <l>60</l>
                    <l>64</l>
                    <l>67</l>
                    <l>72</l>
                    <l>60</l>
                  </list>
                </block>
              </block>
              <l>1</l>
            </block>
          </script>
          <script x='10' y='66.66666666666674'>
            <block s='doForEach'>
              <l>note</l>
              <block s='reportNewList'>
                <list>
                  <l>60</l>
                  <l>64</l>
                  <l>67</l>
                  <l>72</l>
                  <l>60</l>
                </list>
              </block>
              <script>
                <block s='doPlayNote'>
                  <block var='note'/>
                  <l>1</l>
                </block>
              </script>
            </block>
          </script>
          <script x='11.666666666666742' y='177.33333333333292'>
            <block s='doForEach'>
              <l>note</l>
              <l/>
              <script/>
            </block>
          </script>
          <script x='199.66666666666657' y='205.33333333333252'>
            <custom-block s='for each %upvar of %l %cs'>
              <l>note</l>
              <block s='reportMap'>
                <block s='reifyReporter'>
                  <autolambda>
                    <block s='reportSum'>
                      <l/>
                      <l>5</l>
                    </block>
                  </autolambda>
                  <list/>
                </block>
                <block s='reportNewList'>
                  <list>
                    <l>60</l>
                    <l>64</l>
                    <l>67</l>
                    <l>72</l>
                    <l>60</l>
                  </list>
                </block>
              </block>
              <script>
                <block s='doPlayNote'>
                  <block var='note'/>
                  <l>1</l>
                </block>
              </script>
            </custom-block>
          </script>
          <script x='169.66666666666646' y='447.3333333333338'>
            <custom-block s='for each %upvar of %l %cs'>
              <l>note</l>
              <custom-block s='keep items such that %predRing from %l'>
                <block s='reifyPredicate'>
                  <autolambda>
                    <block s='reportLessThan'>
                      <l/>
                      <l>65</l>
                    </block>
                  </autolambda>
                  <list/>
                </block>
                <block s='reportNewList'>
                  <list>
                    <l>60</l>
                    <l>64</l>
                    <l>67</l>
                    <l>72</l>
                    <l>60</l>
                  </list>
                </block>
              </custom-block>
              <script>
                <block s='doPlayNote'>
                  <block var='note'/>
                  <l>1</l>
                </block>
              </script>
            </custom-block>
          </script>
          <script x='50.823243187500196' y='661.0000019999951'>
            <custom-block s='note, pitch: %n length: %n'>
              <l>30</l>
              <l>1</l>
            </custom-block>
          </script>
          <script x='14.333333333333542' y='696.6666666666619'>
            <custom-block s='play song %l'>
              <block s='reportNewList'>
                <list>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>70</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>68</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>66</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>68</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>70</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>70</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>70</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>68</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>68</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>68</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>70</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>73</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>73</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>70</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>68</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>66</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>68</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>70</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>70</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>70</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>70</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>68</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>68</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>70</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>68</l>
                    <l>0.75</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>66</l>
                    <l>0.75</l>
                  </custom-block>
                </list>
              </block>
            </custom-block>
          </script>
          <script x='141.33333333333195' y='551.6666666666639'>
            <custom-block s='play song %l'>
              <block s='reportNewList'>
                <list>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>60</l>
                    <l>1</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>64</l>
                    <l>1</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>67</l>
                    <l>1</l>
                  </custom-block>
                  <custom-block s='note, pitch: %n length: %n'>
                    <l>72</l>
                    <l>1</l>
                  </custom-block>
                </list>
              </block>
            </custom-block>
          </script>
          <script x='140.00000000000006' y='286.99999999999994'>
            <custom-block s='for each %upvar of %l %cs'>
              <l>item</l>
              <l/>
              <script/>
            </custom-block>
          </script>
          <script x='282.6666666666669' y='124.00000000000097'>
            <custom-block s='for each %upvar of %l %cs'>
              <l>note</l>
              <block s='reportNewList'>
                <list>
                  <l>60</l>
                  <l>64</l>
                  <l>67</l>
                  <l>72</l>
                  <l>60</l>
                </list>
              </block>
              <script>
                <block s='doPlayNote'>
                  <block var='note'/>
                  <l>1</l>
                </block>
              </script>
            </custom-block>
          </script>
          <script x='95.00000000000006' y='388.66666666666634'>
            <custom-block s='play song %l'>
              <custom-block s='transpose %l by %n'>
                <custom-block s='mary had a little lamb'/>
                <l>5</l>
              </custom-block>
            </custom-block>
          </script>
          <script x='566' y='709.666666666666'>
            <custom-block s='play song %l'>
              <custom-block s='mary had a little lamb'/>
            </custom-block>
          </script>
        </scripts>
      </sprite>
    </sprites>
  </stage>
  <hidden/>
  <headers/>
  <code/>
  <blocks>
    <block-definition s='append %&apos;lists&apos;' category='lists' type='reporter'>
      <comment x='0' w='287' collapsed='false' y='0'>Take any number of input lists, and create a new listcontaining the items of the input lists.  SoAPPEND [A B] [C D]where the [...] are lists reports the list[A B C D]not [[A B] [C D]].</comment>
      <header/>
      <code/>
      <translations>ca:concatena _</translations>
      <inputs>
        <input type='%mult%l'/>
      </inputs>
      <script>
        <block s='doWarp'>
          <script>
            <block s='doIf'>
              <block s='reportEquals'>
                <block var='lists'/>
                <block s='reportNewList'>
                  <list/>
                </block>
              </block>
              <script>
                <block s='doReport'>
                  <block s='reportNewList'>
                    <list/>
                  </block>
                </block>
              </script>
            </block>
            <block s='doIf'>
              <block s='reportEquals'>
                <block s='reportListLength'>
                  <block var='lists'/>
                </block>
                <l>1</l>
              </block>
              <script>
                <block s='doReport'>
                  <block s='reportListItem'>
                    <l>1</l>
                    <block var='lists'/>
                  </block>
                </block>
              </script>
            </block>
            <block s='doIf'>
              <block s='reportEquals'>
                <block s='reportListItem'>
                  <l>1</l>
                  <block var='lists'/>
                </block>
                <block s='reportNewList'>
                  <list/>
                </block>
              </block>
              <script>
                <block s='doReport'>
                  <custom-block s='append %mult%l'>
                    <block s='reportCDR'>
                      <block var='lists'/>
                    </block>
                  </custom-block>
                </block>
              </script>
            </block>
            <block s='doReport'>
              <block s='reportCONS'>
                <block s='reportListItem'>
                  <l>1</l>
                  <block s='reportListItem'>
                    <l>1</l>
                    <block var='lists'/>
                  </block>
                </block>
                <custom-block s='append %mult%l'>
                  <block s='reportCONS'>
                    <block s='reportCDR'>
                      <block s='reportListItem'>
                        <l>1</l>
                        <block var='lists'/>
                      </block>
                    </block>
                    <block s='reportCDR'>
                      <block var='lists'/>
                    </block>
                  </block>
                </custom-block>
              </block>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='reverse %&apos;data&apos;' category='lists' type='reporter'>
      <comment x='0' w='223' collapsed='false' y='0'>Reports a new list containing the items of the input list, but in the opposite order.</comment>
      <header/>
      <code/>
      <translations>ca:capgira _</translations>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>helper</l>
          </list>
        </block>
        <block s='doSetVar'>
          <l>helper</l>
          <block s='reifyScript'>
            <script>
              <block s='doIf'>
                <block s='reportEquals'>
                  <block var='input'/>
                  <block s='reportNewList'>
                    <list/>
                  </block>
                </block>
                <script>
                  <block s='doReport'>
                    <block var='result'/>
                  </block>
                </script>
              </block>
              <block s='doReport'>
                <block s='evaluate'>
                  <block var='helper'/>
                  <list>
                    <block s='reportCDR'>
                      <block var='input'/>
                    </block>
                    <block s='reportCONS'>
                      <block s='reportListItem'>
                        <l>1</l>
                        <block var='input'/>
                      </block>
                      <block var='result'/>
                    </block>
                  </list>
                </block>
              </block>
            </script>
            <list>
              <l>input</l>
              <l>result</l>
            </list>
          </block>
        </block>
        <block s='doWarp'>
          <script>
            <block s='doReport'>
              <block s='evaluate'>
                <block var='helper'/>
                <list>
                  <block var='data'/>
                  <block s='reportNewList'>
                    <list/>
                  </block>
                </list>
              </block>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='remove duplicates from %&apos;data&apos;' category='lists' type='reporter'>
      <comment x='0' w='209' collapsed='false' y='0'>Reports a new list whose items are the same as in the input list, except that if two or more equal items appear in the input list, only the last one is kept in the result.</comment>
      <header/>
      <code/>
      <translations>ca:elimina els duplicats de _</translations>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doWarp'>
          <script>
            <block s='doIf'>
              <block s='reportEquals'>
                <block var='data'/>
                <block s='reportNewList'>
                  <list/>
                </block>
              </block>
              <script>
                <block s='doReport'>
                  <block s='reportNewList'>
                    <list/>
                  </block>
                </block>
              </script>
            </block>
            <block s='doIfElse'>
              <block s='reportListContainsItem'>
                <block s='reportCDR'>
                  <block var='data'/>
                </block>
                <block s='reportListItem'>
                  <l>1</l>
                  <block var='data'/>
                </block>
              </block>
              <script>
                <block s='doReport'>
                  <custom-block s='remove duplicates from %l'>
                    <block s='reportCDR'>
                      <block var='data'/>
                    </block>
                  </custom-block>
                </block>
              </script>
              <script>
                <block s='doReport'>
                  <block s='reportCONS'>
                    <block s='reportListItem'>
                      <l>1</l>
                      <block var='data'/>
                    </block>
                    <custom-block s='remove duplicates from %l'>
                      <block s='reportCDR'>
                        <block var='data'/>
                      </block>
                    </custom-block>
                  </block>
                </block>
              </script>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='sort %&apos;data&apos; ordering with %&apos;function&apos;' category='lists' type='reporter'>
      <comment x='0' w='161.14285714285708' collapsed='false' y='0'>Reports a sorted version of the list in its first input slot, using the comparison function in the second input slot.  For a list of numbers, using &lt; as the comparison function will sort from low to high; using &gt; will sort from high to low.</comment>
      <header/>
      <code/>
      <translations>ca:ordena _ segons criteri _</translations>
      <inputs>
        <input type='%l'/>
        <input type='%predRing'/>
      </inputs>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>even items</l>
            <l>odd items</l>
            <l>merge</l>
            <l>split</l>
            <l>copy of data</l>
            <l>id</l>
          </list>
        </block>
        <block s='doSetVar'>
          <l>id</l>
          <block s='reifyScript'>
            <script>
              <block s='doReport'>
                <l/>
              </block>
            </script>
            <list/>
          </block>
        </block>
        <block s='doSetVar'>
          <l>copy of data</l>
          <block s='reportMap'>
            <block var='id'/>
            <block var='data'/>
          </block>
        </block>
        <block s='doSetVar'>
          <l>split</l>
          <block s='reifyScript'>
            <script>
              <block s='doSetVar'>
                <l>even items</l>
                <block s='reportNewList'>
                  <list/>
                </block>
              </block>
              <block s='doSetVar'>
                <l>odd items</l>
                <block s='reportNewList'>
                  <list/>
                </block>
              </block>
              <block s='doUntil'>
                <block s='reportListIsEmpty'>
                  <block var='copy of data'/>
                </block>
                <script>
                  <block s='doAddToList'>
                    <block s='reportListItem'>
                      <l>1</l>
                      <block var='copy of data'/>
                    </block>
                    <block var='odd items'/>
                  </block>
                  <block s='doDeleteFromList'>
                    <l>1</l>
                    <block var='copy of data'/>
                  </block>
                  <block s='doIf'>
                    <block s='reportNot'>
                      <block s='reportListIsEmpty'>
                        <block var='copy of data'/>
                      </block>
                    </block>
                    <script>
                      <block s='doAddToList'>
                        <block s='reportListItem'>
                          <l>1</l>
                          <block var='copy of data'/>
                        </block>
                        <block var='even items'/>
                      </block>
                      <block s='doDeleteFromList'>
                        <l>1</l>
                        <block var='copy of data'/>
                      </block>
                    </script>
                  </block>
                </script>
              </block>
            </script>
            <list/>
          </block>
        </block>
        <block s='doSetVar'>
          <l>merge</l>
          <block s='reifyScript'>
            <script>
              <block s='doIf'>
                <block s='reportEquals'>
                  <block var='#1'/>
                  <block s='reportNewList'>
                    <list/>
                  </block>
                </block>
                <script>
                  <block s='doReport'>
                    <block var='#2'/>
                  </block>
                </script>
              </block>
              <block s='doIf'>
                <block s='reportEquals'>
                  <block var='#2'/>
                  <block s='reportNewList'>
                    <list/>
                  </block>
                </block>
                <script>
                  <block s='doReport'>
                    <block var='#1'/>
                  </block>
                </script>
              </block>
              <block s='doIfElse'>
                <block s='evaluate'>
                  <block var='function'/>
                  <list>
                    <block s='reportListItem'>
                      <l>1</l>
                      <block var='#1'/>
                    </block>
                    <block s='reportListItem'>
                      <l>1</l>
                      <block var='#2'/>
                    </block>
                  </list>
                </block>
                <script>
                  <block s='doReport'>
                    <block s='reportCONS'>
                      <block s='reportListItem'>
                        <l>1</l>
                        <block var='#1'/>
                      </block>
                      <block s='evaluate'>
                        <block var='merge'/>
                        <list>
                          <block s='reportCDR'>
                            <block var='#1'/>
                          </block>
                          <block var='#2'/>
                        </list>
                      </block>
                    </block>
                  </block>
                </script>
                <script>
                  <block s='doReport'>
                    <block s='reportCONS'>
                      <block s='reportListItem'>
                        <l>1</l>
                        <block var='#2'/>
                      </block>
                      <block s='evaluate'>
                        <block var='merge'/>
                        <list>
                          <block var='#1'/>
                          <block s='reportCDR'>
                            <block var='#2'/>
                          </block>
                        </list>
                      </block>
                    </block>
                  </block>
                </script>
              </block>
            </script>
            <list>
              <l>#1</l>
              <l>#2</l>
            </list>
          </block>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='data'/>
            <block s='reportNewList'>
              <list/>
            </block>
          </block>
          <script>
            <block s='doReport'>
              <block s='reportNewList'>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block s='reportCDR'>
              <block var='data'/>
            </block>
            <block s='reportNewList'>
              <list/>
            </block>
          </block>
          <script>
            <block s='doReport'>
              <block var='data'/>
            </block>
          </script>
        </block>
        <block s='doRun'>
          <block var='split'/>
          <list/>
        </block>
        <block s='doReport'>
          <block s='evaluate'>
            <block var='merge'/>
            <list>
              <custom-block s='sort %l ordering with %predRing'>
                <block var='odd items'/>
                <block var='function'/>
              </custom-block>
              <custom-block s='sort %l ordering with %predRing'>
                <block var='even items'/>
                <block var='function'/>
              </custom-block>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='assoc %&apos;key&apos; %&apos;a-list&apos;' category='lists' type='reporter'>
      <comment x='0' w='289.3333333333333' collapsed='false' y='0'>The second input is an "association list," a list of two-item lists.  Each of those smaller lists has a "key" as its first item and a "value" as its second.  ASSOC reports the first key-value pair in the association list whose key matches the first input.</comment>
      <header/>
      <code/>
      <translations>ca:associació _ _</translations>
      <inputs>
        <input type='%s'/>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='a-list'/>
            <block s='reportNewList'>
              <list/>
            </block>
          </block>
          <script>
            <block s='doReport'>
              <block s='reportNewList'>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='key'/>
            <block s='reportListItem'>
              <l>1</l>
              <block s='reportListItem'>
                <l>1</l>
                <block var='a-list'/>
              </block>
            </block>
          </block>
          <script>
            <block s='doReport'>
              <block s='reportListItem'>
                <l>1</l>
                <block var='a-list'/>
              </block>
            </block>
          </script>
        </block>
        <block s='doReport'>
          <custom-block s='assoc %s %l'>
            <block var='key'/>
            <block s='reportCDR'>
              <block var='a-list'/>
            </block>
          </custom-block>
        </block>
      </script>
    </block-definition>
    <block-definition s='%&apos;#&apos; map %&apos;function&apos; over %&apos;lists&apos;' category='lists' type='reporter'>
      <comment x='0' w='225.00000000000003' collapsed='false' y='0'>This block applies the given function to each item of the given list, like the primitive MAP block, but with two differences:1.  The # variable provided will contain the item number of the item currently being used in the given function: 1 for item 1, and so on.  You read the variable in your function; don&apos;t set it.2.  You can provide more than one input list.  If so, the lengths of all the lists should be the same, and the function you supply must expect as many inputs as you have lists (i.e., that many empty input slots in the function).</comment>
      <header/>
      <code/>
      <translations>ca:_ mapeja _ sobre _</translations>
      <inputs>
        <input type='%upvar'/>
        <input type='%repRing'/>
        <input type='%mult%l'/>
      </inputs>
      <script>
        <block s='doWarp'>
          <script>
            <block s='doDeclareVariables'>
              <list>
                <l>mapone</l>
                <l>mapmany</l>
              </list>
            </block>
            <block s='doSetVar'>
              <l>mapone</l>
              <block s='reifyScript'>
                <script>
                  <block s='doIf'>
                    <block s='reportListIsEmpty'>
                      <block var='data'/>
                    </block>
                    <script>
                      <block s='doReport'>
                        <block s='reportNewList'>
                          <list/>
                        </block>
                      </block>
                    </script>
                  </block>
                  <block s='doSetVar'>
                    <l>#</l>
                    <block var='count'/>
                  </block>
                  <block s='doReport'>
                    <block s='reportCONS'>
                      <block s='evaluate'>
                        <block var='function'/>
                        <list>
                          <block s='reportListItem'>
                            <l>1</l>
                            <block var='data'/>
                          </block>
                        </list>
                      </block>
                      <block s='evaluate'>
                        <block var='mapone'/>
                        <list>
                          <block s='reportCDR'>
                            <block var='data'/>
                          </block>
                          <block s='reportSum'>
                            <block var='count'/>
                            <l>1</l>
                          </block>
                        </list>
                      </block>
                    </block>
                  </block>
                </script>
                <list>
                  <l>data</l>
                  <l>count</l>
                </list>
              </block>
            </block>
            <block s='doSetVar'>
              <l>mapmany</l>
              <block s='reifyScript'>
                <script>
                  <block s='doIf'>
                    <block s='reportListIsEmpty'>
                      <block s='reportListItem'>
                        <l>1</l>
                        <block var='data lists'/>
                      </block>
                    </block>
                    <script>
                      <block s='doReport'>
                        <block s='reportNewList'>
                          <list/>
                        </block>
                      </block>
                    </script>
                  </block>
                  <block s='doSetVar'>
                    <l>#</l>
                    <block var='count'/>
                  </block>
                  <block s='doReport'>
                    <block s='reportCONS'>
                      <block s='evaluate'>
                        <block var='function'/>
                        <custom-block s='%upvar map %repRing over %mult%l'>
                          <l>#</l>
                          <block s='reifyReporter'>
                            <autolambda>
                              <block s='reportListItem'>
                                <l>1</l>
                                <l/>
                              </block>
                            </autolambda>
                            <list/>
                          </block>
                          <list>
                            <block var='data lists'/>
                          </list>
                        </custom-block>
                      </block>
                      <block s='evaluate'>
                        <block var='mapmany'/>
                        <list>
                          <custom-block s='%upvar map %repRing over %mult%l'>
                            <l>#</l>
                            <block s='reifyReporter'>
                              <autolambda>
                                <block s='reportCDR'>
                                  <l/>
                                </block>
                              </autolambda>
                              <list/>
                            </block>
                            <list>
                              <block var='data lists'/>
                            </list>
                          </custom-block>
                          <block s='reportSum'>
                            <block var='count'/>
                            <l>1</l>
                          </block>
                        </list>
                      </block>
                    </block>
                  </block>
                </script>
                <list>
                  <l>data lists</l>
                  <l>count</l>
                </list>
              </block>
            </block>
            <block s='doIfElse'>
              <block s='reportListIsEmpty'>
                <block s='reportCDR'>
                  <block var='lists'/>
                </block>
              </block>
              <script>
                <block s='doReport'>
                  <block s='evaluate'>
                    <block var='mapone'/>
                    <list>
                      <block s='reportListItem'>
                        <l>1</l>
                        <block var='lists'/>
                      </block>
                      <l>1</l>
                    </list>
                  </block>
                </block>
              </script>
              <script>
                <block s='doReport'>
                  <block s='evaluate'>
                    <block var='mapmany'/>
                    <list>
                      <block var='lists'/>
                      <l>1</l>
                    </list>
                  </block>
                </block>
              </script>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='%&apos;#&apos; keep items %&apos;pred&apos; from %&apos;data&apos;' category='lists' type='reporter'>
      <comment x='0' w='217.1428571428572' collapsed='false' y='0'>This block makes a new list containing selected items from the given list, like the primitive KEEP block.What&apos;s different is that it provides the # variable for use in your predicate function.  It will contain the item number (in the original list) of the item being examined by the predicate.</comment>
      <header/>
      <code/>
      <translations>ca:_ manté els elements on _ de _</translations>
      <inputs>
        <input type='%upvar'/>
        <input type='%predRing'/>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>keep-helper</l>
          </list>
        </block>
        <block s='doSetVar'>
          <l>keep-helper</l>
          <block s='reifyScript'>
            <script>
              <block s='doWarp'>
                <script>
                  <block s='doIf'>
                    <block s='reportListIsEmpty'>
                      <block var='data'/>
                    </block>
                    <script>
                      <block s='doReport'>
                        <block s='reportNewList'>
                          <list/>
                        </block>
                      </block>
                    </script>
                  </block>
                  <block s='doSetVar'>
                    <l>#</l>
                    <block var='count'/>
                  </block>
                  <block s='doIfElse'>
                    <block s='evaluate'>
                      <block var='pred'/>
                      <list>
                        <block s='reportListItem'>
                          <l>1</l>
                          <block var='data'/>
                        </block>
                      </list>
                    </block>
                    <script>
                      <block s='doReport'>
                        <block s='reportCONS'>
                          <block s='reportListItem'>
                            <l>1</l>
                            <block var='data'/>
                          </block>
                          <block s='evaluate'>
                            <block var='keep-helper'/>
                            <list>
                              <block s='reportCDR'>
                                <block var='data'/>
                              </block>
                              <block s='reportSum'>
                                <block var='count'/>
                                <l>1</l>
                              </block>
                            </list>
                          </block>
                        </block>
                      </block>
                    </script>
                    <script>
                      <block s='doReport'>
                        <block s='evaluate'>
                          <block var='keep-helper'/>
                          <list>
                            <block s='reportCDR'>
                              <block var='data'/>
                            </block>
                            <block s='reportSum'>
                              <block var='count'/>
                              <l>1</l>
                            </block>
                          </list>
                        </block>
                      </block>
                    </script>
                  </block>
                </script>
              </block>
            </script>
            <list>
              <l>data</l>
              <l>count</l>
            </list>
          </block>
        </block>
        <block s='doReport'>
          <block s='evaluate'>
            <block var='keep-helper'/>
            <list>
              <block var='data'/>
              <l>1</l>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='%&apos;#&apos; for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;' category='lists' type='command'>
      <comment x='0' w='228.57142857142858' collapsed='false' y='0'>This block carries out the given script for each item of the given list, like the primitive FOR EACH.What&apos;s different is that it provides the # variable, which will contain the item number in the list of each item in turn, 1 while processing item 1, and so on.</comment>
      <header/>
      <code/>
      <translations>ca:_ per cada _ de _ _</translations>
      <inputs>
        <input type='%upvar'/>
        <input type='%upvar'/>
        <input type='%l'/>
        <input type='%ca'/>
      </inputs>
      <script>
        <block s='doSetVar'>
          <l>#</l>
          <l>1</l>
        </block>
        <block s='doUntil'>
          <block s='reportListIsEmpty'>
            <block var='data'/>
          </block>
          <script>
            <block s='doSetVar'>
              <l>item</l>
              <block s='reportListItem'>
                <l>1</l>
                <block var='data'/>
              </block>
            </block>
            <block s='doRun'>
              <block var='action'/>
              <list>
                <block s='reportListItem'>
                  <l>1</l>
                  <block var='data'/>
                </block>
              </list>
            </block>
            <block s='doSetVar'>
              <l>data</l>
              <block s='reportCDR'>
                <block var='data'/>
              </block>
            </block>
            <block s='doChangeVar'>
              <l>#</l>
              <l>1</l>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='empty? %&apos;data&apos;' category='lists' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportEquals'>
            <block var='data'/>
            <block s='reportNewList'>
              <list/>
            </block>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='keep items such that %&apos;pred&apos; from %&apos;data&apos;' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%predRing'/>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doWarp'>
          <script>
            <block s='doIf'>
              <custom-block s='empty? %l'>
                <block var='data'/>
              </custom-block>
              <script>
                <block s='doReport'>
                  <block s='reportNewList'>
                    <list/>
                  </block>
                </block>
              </script>
            </block>
            <block s='doIfElse'>
              <block s='evaluate'>
                <block var='pred'/>
                <list>
                  <block s='reportListItem'>
                    <l>1</l>
                    <block var='data'/>
                  </block>
                </list>
              </block>
              <script>
                <block s='doReport'>
                  <block s='reportCONS'>
                    <block s='reportListItem'>
                      <l>1</l>
                      <block var='data'/>
                    </block>
                    <custom-block s='keep items such that %predRing from %l'>
                      <block var='pred'/>
                      <block s='reportCDR'>
                        <block var='data'/>
                      </block>
                    </custom-block>
                  </block>
                </block>
              </script>
              <script>
                <block s='doReport'>
                  <custom-block s='keep items such that %predRing from %l'>
                    <block var='pred'/>
                    <block s='reportCDR'>
                      <block var='data'/>
                    </block>
                  </custom-block>
                </block>
              </script>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;' category='lists' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%upvar'/>
        <input type='%l'/>
        <input type='%cs'/>
      </inputs>
      <script>
        <block s='doUntil'>
          <custom-block s='empty? %l'>
            <block var='data'/>
          </custom-block>
          <script>
            <block s='doSetVar'>
              <l>item</l>
              <block s='reportListItem'>
                <l>1</l>
                <block var='data'/>
              </block>
            </block>
            <block s='doRun'>
              <block var='action'/>
              <list>
                <block s='reportListItem'>
                  <l>1</l>
                  <block var='data'/>
                </block>
              </list>
            </block>
            <block s='doSetVar'>
              <l>data</l>
              <block s='reportCDR'>
                <block var='data'/>
              </block>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='map %&apos;function&apos; over %&apos;lists&apos;' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%repRing'/>
        <input type='%mult%l'/>
      </inputs>
      <script>
        <block s='doWarp'>
          <script>
            <block s='doDeclareVariables'>
              <list>
                <l>mapone</l>
                <l>mapmany</l>
              </list>
            </block>
            <block s='doSetVar'>
              <l>mapone</l>
              <block s='reifyScript'>
                <script>
                  <block s='doIf'>
                    <custom-block s='empty? %l'>
                      <block var='data'/>
                    </custom-block>
                    <script>
                      <block s='doReport'>
                        <block s='reportNewList'>
                          <list/>
                        </block>
                      </block>
                    </script>
                  </block>
                  <block s='doReport'>
                    <block s='reportCONS'>
                      <block s='evaluate'>
                        <block var='function'/>
                        <list>
                          <block s='reportListItem'>
                            <l>1</l>
                            <block var='data'/>
                          </block>
                        </list>
                      </block>
                      <block s='evaluate'>
                        <block var='mapone'/>
                        <list>
                          <block s='reportCDR'>
                            <block var='data'/>
                          </block>
                        </list>
                      </block>
                    </block>
                  </block>
                </script>
                <list>
                  <l>data</l>
                </list>
              </block>
            </block>
            <block s='doSetVar'>
              <l>mapmany</l>
              <block s='reifyScript'>
                <script>
                  <block s='doIf'>
                    <custom-block s='empty? %l'>
                      <block s='reportListItem'>
                        <l>1</l>
                        <block var='data lists'/>
                      </block>
                    </custom-block>
                    <script>
                      <block s='doReport'>
                        <block s='reportNewList'>
                          <list/>
                        </block>
                      </block>
                    </script>
                  </block>
                  <block s='doReport'>
                    <block s='reportCONS'>
                      <block s='evaluate'>
                        <block var='function'/>
                        <custom-block s='map %repRing over %mult%l'>
                          <block s='reifyReporter'>
                            <autolambda>
                              <block s='reportListItem'>
                                <l>1</l>
                                <l/>
                              </block>
                            </autolambda>
                            <list/>
                          </block>
                          <list>
                            <block var='data lists'/>
                          </list>
                        </custom-block>
                      </block>
                      <block s='evaluate'>
                        <block var='mapmany'/>
                        <list>
                          <custom-block s='map %repRing over %mult%l'>
                            <block s='reifyReporter'>
                              <autolambda>
                                <block s='reportCDR'>
                                  <l/>
                                </block>
                              </autolambda>
                              <list/>
                            </block>
                            <list>
                              <block var='data lists'/>
                            </list>
                          </custom-block>
                        </list>
                      </block>
                    </block>
                  </block>
                </script>
                <list>
                  <l>data lists</l>
                </list>
              </block>
            </block>
            <block s='doIfElse'>
              <custom-block s='empty? %l'>
                <block s='reportCDR'>
                  <block var='lists'/>
                </block>
              </custom-block>
              <script>
                <block s='doReport'>
                  <block s='evaluate'>
                    <block var='mapone'/>
                    <list>
                      <block s='reportListItem'>
                        <l>1</l>
                        <block var='lists'/>
                      </block>
                    </list>
                  </block>
                </block>
              </script>
              <script>
                <block s='doReport'>
                  <block s='evaluate'>
                    <block var='mapmany'/>
                    <list>
                      <block var='lists'/>
                    </list>
                  </block>
                </block>
              </script>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='note, pitch: %&apos;pitch&apos; length: %&apos;length&apos;' category='sound' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%n'/>
        <input type='%n'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportNewList'>
            <list>
              <block var='pitch'/>
              <block var='length'/>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='pitch from note: %&apos;pitch list&apos;' category='sound' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportListItem'>
            <l>1</l>
            <block var='pitch list'/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='play song %&apos;song list&apos;' category='sound' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <custom-block s='for each %upvar of %l %cs'>
          <l>item</l>
          <block var='song list'/>
          <script>
            <block s='doPlayNote'>
              <custom-block s='pitch from note: %l'>
                <block var='item'/>
              </custom-block>
              <custom-block s='length from note: %l'>
                <block var='item'/>
              </custom-block>
            </block>
          </script>
        </custom-block>
      </script>
    </block-definition>
    <block-definition s='length from note: %&apos;note list&apos;' category='sound' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportListItem'>
            <l>2</l>
            <block var='note list'/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='mary had a little lamb' category='sound' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doReport'>
          <block s='reportNewList'>
            <list>
              <custom-block s='note, pitch: %n length: %n'>
                <l>70</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>68</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>66</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>68</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>70</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>70</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>70</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>68</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>68</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>68</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>70</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>73</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>73</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>70</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>68</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>66</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>68</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>70</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>70</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>70</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>70</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>68</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>68</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>70</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>68</l>
                <l>0.75</l>
              </custom-block>
              <custom-block s='note, pitch: %n length: %n'>
                <l>66</l>
                <l>0.75</l>
              </custom-block>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='transpose %&apos;notes&apos; by %&apos;shift&apos;' category='sound' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
        <input type='%n'/>
      </inputs>
      <script>
        <block s='doReport'>
          <custom-block s='map %repRing over %mult%l'>
            <block s='reifyReporter'>
              <autolambda>
                <custom-block s='note, pitch: %n length: %n'>
                  <block s='reportSum'>
                    <custom-block s='pitch from note: %l'>
                      <l/>
                    </custom-block>
                    <block var='shift'/>
                  </block>
                  <custom-block s='length from note: %l'>
                    <l/>
                  </custom-block>
                </custom-block>
              </autolambda>
              <list/>
            </block>
            <list>
              <block var='notes'/>
            </list>
          </custom-block>
        </block>
      </script>
    </block-definition>
  </blocks>
  <variables/>
</project><media name="Music Project: U3" app="Snap! 5.1, http://snap.berkeley.edu" version="1"></media></snapdata>