浏览代码

日常开发

林旭祥 1 周之前
父节点
当前提交
db3aca4060
共有 44 个文件被更改,包括 3348 次插入212 次删除
  1. 二进制
      public/static/images/fruit/apple-1.png
  2. 二进制
      public/static/images/fruit/apple-2.png
  3. 二进制
      public/static/images/fruit/apple.png
  4. 二进制
      public/static/images/fruit/background.jpg
  5. 二进制
      public/static/images/fruit/banana-1.png
  6. 二进制
      public/static/images/fruit/banana-2.png
  7. 二进制
      public/static/images/fruit/banana.png
  8. 二进制
      public/static/images/fruit/basaha-1.png
  9. 二进制
      public/static/images/fruit/basaha-2.png
  10. 二进制
      public/static/images/fruit/basaha.png
  11. 二进制
      public/static/images/fruit/best.png
  12. 二进制
      public/static/images/fruit/bitmapFont.png
  13. 1922 0
      public/static/images/fruit/bitmapFont.xml
  14. 二进制
      public/static/images/fruit/bomb.png
  15. 二进制
      public/static/images/fruit/dojo.png
  16. 二进制
      public/static/images/fruit/flash.png
  17. 二进制
      public/static/images/fruit/game-over.png
  18. 二进制
      public/static/images/fruit/home-desc.png
  19. 二进制
      public/static/images/fruit/home-mask.png
  20. 二进制
      public/static/images/fruit/logo.png
  21. 二进制
      public/static/images/fruit/lose.png
  22. 二进制
      public/static/images/fruit/new-game.png
  23. 二进制
      public/static/images/fruit/ninja.png
  24. 二进制
      public/static/images/fruit/peach-1.png
  25. 二进制
      public/static/images/fruit/peach-2.png
  26. 二进制
      public/static/images/fruit/peach.png
  27. 二进制
      public/static/images/fruit/preloader.gif
  28. 二进制
      public/static/images/fruit/quit.png
  29. 二进制
      public/static/images/fruit/sandia-1.png
  30. 二进制
      public/static/images/fruit/sandia-2.png
  31. 二进制
      public/static/images/fruit/sandia.png
  32. 二进制
      public/static/images/fruit/score.png
  33. 二进制
      public/static/images/fruit/shadow.png
  34. 二进制
      public/static/images/fruit/smoke.png
  35. 二进制
      public/static/images/fruit/x.png
  36. 二进制
      public/static/images/fruit/xf.png
  37. 二进制
      public/static/images/fruit/xx.png
  38. 二进制
      public/static/images/fruit/xxf.png
  39. 二进制
      public/static/images/fruit/xxx.png
  40. 二进制
      public/static/images/fruit/xxxf.png
  41. 1 0
      src/router/index.ts
  42. 1176 211
      src/views/game/fruit.vue
  43. 248 0
      src/views/game/fruit2.vue
  44. 1 1
      src/views/game/index.vue

二进制
public/static/images/fruit/apple-1.png


二进制
public/static/images/fruit/apple-2.png


二进制
public/static/images/fruit/apple.png


二进制
public/static/images/fruit/background.jpg


二进制
public/static/images/fruit/banana-1.png


二进制
public/static/images/fruit/banana-2.png


二进制
public/static/images/fruit/banana.png


二进制
public/static/images/fruit/basaha-1.png


二进制
public/static/images/fruit/basaha-2.png


二进制
public/static/images/fruit/basaha.png


二进制
public/static/images/fruit/best.png


二进制
public/static/images/fruit/bitmapFont.png


+ 1922 - 0
public/static/images/fruit/bitmapFont.xml

@@ -0,0 +1,1922 @@
+<font>
+    <info face="Desyrel" size="70" bold="0" italic="0" chasrset="" unicode="0" stretchH="100" smooth="1" aa="1" padding="0,0,0,0" spacing="1,1"/>
+    <common lineHeight="87" base="61" scaleW="512" scaleH="512" pages="1" packed="0"/>
+    <pages>
+        <page id="0" file="desyrel.png"/>
+    </pages>
+    <chars count="95">
+        <char id="102" x="1" y="1" width="38" height="74" xoffset="2" yoffset="9" xadvance="28" page="0" chnl="0" letter="f"/>
+        <char id="83" x="40" y="1" width="35" height="74" xoffset="5" yoffset="5" xadvance="31" page="0" chnl="0" letter="S"/>
+        <char id="125" x="76" y="1" width="27" height="74" xoffset="-2" yoffset="4" xadvance="20" page="0" chnl="0" letter="}"/>
+        <char id="123" x="104" y="1" width="27" height="74" xoffset="1" yoffset="4" xadvance="18" page="0" chnl="0" letter="{"/>
+        <char id="93" x="132" y="1" width="23" height="72" xoffset="-3" yoffset="4" xadvance="15" page="0" chnl="0" letter="]"/>
+        <char id="91" x="156" y="1" width="23" height="72" xoffset="2" yoffset="4" xadvance="16" page="0" chnl="0" letter="["/>
+        <char id="124" x="180" y="1" width="14" height="72" xoffset="6" yoffset="6" xadvance="19" page="0" chnl="0" letter="|"/>
+        <char id="71" x="195" y="1" width="55" height="71" xoffset="6" yoffset="11" xadvance="52" page="0" chnl="0" letter="G"/>
+        <char id="74" x="251" y="1" width="32" height="70" xoffset="-6" yoffset="7" xadvance="25" page="0" chnl="0" letter="J"/>
+        <char id="64" x="284" y="1" width="66" height="69" xoffset="0" yoffset="11" xadvance="62" page="0" chnl="0" letter="@"/>
+        <char id="106" x="351" y="1" width="21" height="69" xoffset="-0" yoffset="20" xadvance="17" page="0" chnl="0" letter="j"/>
+        <char id="66" x="373" y="1" width="55" height="68" xoffset="-1" yoffset="14" xadvance="49" page="0" chnl="0" letter="B"/>
+        <char id="41" x="429" y="1" width="32" height="65" xoffset="2" yoffset="10" xadvance="30" page="0" chnl="0" letter=")"/>
+        <char id="40" x="462" y="1" width="31" height="65" xoffset="10" yoffset="10" xadvance="30" page="0" chnl="0" letter="("/>
+        <char id="53" x="1" y="76" width="39" height="64" xoffset="3" yoffset="25" xadvance="36" page="0" chnl="0" letter="5"/>
+        <char id="81" x="41" y="76" width="52" height="63" xoffset="4" yoffset="19" xadvance="52" page="0" chnl="0" letter="Q"/>
+        <char id="68" x="94" y="76" width="48" height="63" xoffset="5" yoffset="10" xadvance="46" page="0" chnl="0" letter="D"/>
+        <char id="88" x="143" y="76" width="42" height="63" xoffset="2" yoffset="15" xadvance="36" page="0" chnl="0" letter="X"/>
+        <char id="47" x="186" y="76" width="45" height="62" xoffset="6" yoffset="11" xadvance="38" page="0" chnl="0" letter="/"/>
+        <char id="92" x="232" y="76" width="44" height="62" xoffset="2" yoffset="11" xadvance="34" page="0" chnl="0" letter="\"/>
+        <char id="89" x="277" y="76" width="48" height="59" xoffset="4" yoffset="16" xadvance="37" page="0" chnl="0" letter="Y"/>
+        <char id="85" x="326" y="76" width="44" height="59" xoffset="7" yoffset="14" xadvance="47" page="0" chnl="0" letter="U"/>
+        <char id="116" x="371" y="76" width="31" height="59" xoffset="2" yoffset="8" xadvance="26" page="0" chnl="0" letter="t"/>
+        <char id="65" x="403" y="76" width="54" height="58" xoffset="1" yoffset="13" xadvance="48" page="0" chnl="0" letter="A"/>
+        <char id="72" x="458" y="76" width="51" height="58" xoffset="4" yoffset="12" xadvance="50" page="0" chnl="0" letter="H"/>
+        <char id="82" x="1" y="141" width="49" height="58" xoffset="1" yoffset="15" xadvance="42" page="0" chnl="0" letter="R"/>
+        <char id="100" x="51" y="141" width="40" height="58" xoffset="5" yoffset="10" xadvance="42" page="0" chnl="0" letter="d"/>
+        <char id="80" x="92" y="141" width="49" height="57" xoffset="1" yoffset="15" xadvance="41" page="0" chnl="0" letter="P"/>
+        <char id="57" x="142" y="141" width="43" height="57" xoffset="3" yoffset="25" xadvance="43" page="0" chnl="0" letter="9"/>
+        <char id="112" x="186" y="141" width="38" height="57" xoffset="3" yoffset="33" xadvance="35" page="0" chnl="0" letter="p"/>
+        <char id="113" x="225" y="141" width="34" height="57" xoffset="6" yoffset="30" xadvance="37" page="0" chnl="0" letter="q"/>
+        <char id="33" x="260" y="141" width="15" height="57" xoffset="10" yoffset="11" xadvance="21" page="0" chnl="0" letter="!"/>
+        <char id="67" x="276" y="141" width="43" height="56" xoffset="7" yoffset="15" xadvance="44" page="0" chnl="0" letter="C"/>
+        <char id="51" x="320" y="141" width="36" height="56" xoffset="3" yoffset="26" xadvance="35" page="0" chnl="0" letter="3"/>
+        <char id="36" x="357" y="141" width="35" height="56" xoffset="5" yoffset="19" xadvance="31" page="0" chnl="0" letter="$"/>
+        <char id="103" x="393" y="141" width="34" height="56" xoffset="5" yoffset="35" xadvance="34" page="0" chnl="0" letter="g"/>
+        <char id="98" x="428" y="141" width="34" height="56" xoffset="6" yoffset="15" xadvance="37" page="0" chnl="0" letter="b"/>
+        <char id="87" x="1" y="200" width="61" height="55" xoffset="8" yoffset="16" xadvance="66" page="0" chnl="0" letter="W"/>
+        <char id="76" x="63" y="200" width="42" height="55" xoffset="6" yoffset="13" xadvance="40" page="0" chnl="0" letter="L"/>
+        <char id="77" x="106" y="200" width="55" height="54" xoffset="7" yoffset="17" xadvance="57" page="0" chnl="0" letter="M"/>
+        <char id="54" x="162" y="200" width="49" height="54" xoffset="5" yoffset="18" xadvance="50" page="0" chnl="0" letter="6"/>
+        <char id="55" x="212" y="200" width="40" height="54" xoffset="2" yoffset="27" xadvance="35" page="0" chnl="0" letter="7"/>
+        <char id="38" x="253" y="200" width="33" height="54" xoffset="3" yoffset="22" xadvance="30" page="0" chnl="0" letter="&amp;"/>
+        <char id="70" x="287" y="200" width="53" height="53" xoffset="1" yoffset="17" xadvance="42" page="0" chnl="0" letter="F"/>
+        <char id="69" x="341" y="200" width="46" height="53" xoffset="5" yoffset="18" xadvance="46" page="0" chnl="0" letter="E"/>
+        <char id="75" x="388" y="200" width="40" height="53" xoffset="7" yoffset="17" xadvance="38" page="0" chnl="0" letter="K"/>
+        <char id="108" x="429" y="200" width="38" height="53" xoffset="7" yoffset="14" xadvance="29" page="0" chnl="0" letter="l"/>
+        <char id="63" x="468" y="200" width="28" height="53" xoffset="9" yoffset="15" xadvance="28" page="0" chnl="0" letter="?"/>
+        <char id="52" x="1" y="256" width="48" height="51" xoffset="3" yoffset="26" xadvance="44" page="0" chnl="0" letter="4"/>
+        <char id="107" x="50" y="256" width="38" height="51" xoffset="6" yoffset="18" xadvance="36" page="0" chnl="0" letter="k"/>
+        <char id="121" x="89" y="256" width="41" height="50" xoffset="5" yoffset="37" xadvance="44" page="0" chnl="0" letter="y"/>
+        <char id="73" x="131" y="256" width="39" height="50" xoffset="3" yoffset="18" xadvance="31" page="0" chnl="0" letter="I"/>
+        <char id="115" x="171" y="256" width="33" height="49" xoffset="3" yoffset="29" xadvance="27" page="0" chnl="0" letter="s"/>
+        <char id="56" x="205" y="256" width="46" height="48" xoffset="5" yoffset="25" xadvance="47" page="0" chnl="0" letter="8"/>
+        <char id="90" x="252" y="256" width="43" height="48" xoffset="3" yoffset="22" xadvance="39" page="0" chnl="0" letter="Z"/>
+        <char id="78" x="296" y="256" width="43" height="48" xoffset="7" yoffset="23" xadvance="47" page="0" chnl="0" letter="N"/>
+        <char id="84" x="340" y="256" width="57" height="47" xoffset="-6" yoffset="21" xadvance="37" page="0" chnl="0" letter="T"/>
+        <char id="104" x="398" y="256" width="52" height="47" xoffset="7" yoffset="18" xadvance="44" page="0" chnl="0" letter="h"/>
+        <char id="37" x="451" y="256" width="49" height="46" xoffset="5" yoffset="25" xadvance="48" page="0" chnl="0" letter="%"/>
+        <char id="62" x="1" y="308" width="41" height="46" xoffset="2" yoffset="24" xadvance="38" page="0" chnl="0" letter=">"/>
+        <char id="60" x="43" y="308" width="41" height="46" xoffset="2" yoffset="24" xadvance="37" page="0" chnl="0" letter="&lt;"/>
+        <char id="35" x="85" y="308" width="39" height="46" xoffset="3" yoffset="24" xadvance="36" page="0" chnl="0" letter="#"/>
+        <char id="105" x="125" y="308" width="33" height="46" xoffset="7" yoffset="22" xadvance="27" page="0" chnl="0" letter="i"/>
+        <char id="79" x="159" y="308" width="55" height="45" xoffset="6" yoffset="24" xadvance="56" page="0" chnl="0" letter="O"/>
+        <char id="86" x="215" y="308" width="52" height="44" xoffset="3" yoffset="24" xadvance="46" page="0" chnl="0" letter="V"/>
+        <char id="48" x="268" y="308" width="44" height="42" xoffset="6" yoffset="28" xadvance="45" page="0" chnl="0" letter="0"/>
+        <char id="49" x="313" y="308" width="22" height="42" xoffset="7" yoffset="24" xadvance="25" page="0" chnl="0" letter="1"/>
+        <char id="120" x="336" y="308" width="46" height="40" xoffset="-3" yoffset="32" xadvance="36" page="0" chnl="0" letter="x"/>
+        <char id="50" x="383" y="308" width="42" height="40" xoffset="5" yoffset="27" xadvance="41" page="0" chnl="0" letter="2"/>
+        <char id="59" x="426" y="308" width="13" height="38" xoffset="9" yoffset="40" xadvance="17" page="0" chnl="0" letter=";"/>
+        <char id="101" x="440" y="308" width="37" height="37" xoffset="4" yoffset="31" xadvance="33" page="0" chnl="0" letter="e"/>
+        <char id="97" x="1" y="355" width="48" height="35" xoffset="5" yoffset="34" xadvance="42" page="0" chnl="0" letter="a"/>
+        <char id="118" x="50" y="355" width="34" height="34" xoffset="4" yoffset="35" xadvance="32" page="0" chnl="0" letter="v"/>
+        <char id="119" x="85" y="355" width="57" height="33" xoffset="6" yoffset="35" xadvance="59" page="0" chnl="0" letter="w"/>
+        <char id="111" x="143" y="355" width="38" height="32" xoffset="6" yoffset="38" xadvance="39" page="0" chnl="0" letter="o"/>
+        <char id="122" x="182" y="355" width="35" height="32" xoffset="5" yoffset="36" xadvance="31" page="0" chnl="0" letter="z"/>
+        <char id="42" x="218" y="355" width="28" height="32" xoffset="4" yoffset="14" xadvance="22" page="0" chnl="0" letter="*"/>
+        <char id="99" x="247" y="355" width="42" height="31" xoffset="5" yoffset="36" xadvance="40" page="0" chnl="0" letter="c"/>
+        <char id="109" x="290" y="355" width="74" height="30" xoffset="8" yoffset="38" xadvance="67" page="0" chnl="0" letter="m"/>
+        <char id="117" x="365" y="355" width="50" height="30" xoffset="7" yoffset="38" xadvance="47" page="0" chnl="0" letter="u"/>
+        <char id="43" x="416" y="355" width="27" height="29" xoffset="2" yoffset="27" xadvance="27" page="0" chnl="0" letter="+"/>
+        <char id="114" x="444" y="355" width="34" height="28" xoffset="7" yoffset="37" xadvance="32" page="0" chnl="0" letter="r"/>
+        <char id="110" x="1" y="391" width="55" height="27" xoffset="7" yoffset="41" xadvance="47" page="0" chnl="0" letter="n"/>
+        <char id="58" x="57" y="391" width="13" height="26" xoffset="4" yoffset="42" xadvance="12" page="0" chnl="0" letter=":"/>
+        <char id="44" x="71" y="391" width="12" height="23" xoffset="3" yoffset="55" xadvance="11" page="0" chnl="0" letter=","/>
+        <char id="61" x="84" y="391" width="29" height="22" xoffset="5" yoffset="34" xadvance="30" page="0" chnl="0" letter="="/>
+        <char id="34" x="114" y="391" width="19" height="20" xoffset="2" yoffset="17" xadvance="16" page="0" chnl="0" letter="&quot;"/>
+        <char id="39" x="134" y="391" width="11" height="20" xoffset="2" yoffset="17" xadvance="9" page="0" chnl="0" letter="'"/>
+        <char id="96" x="146" y="391" width="18" height="16" xoffset="6" yoffset="27" xadvance="18" page="0" chnl="0" letter="`"/>
+        <char id="94" x="165" y="391" width="22" height="15" xoffset="7" yoffset="28" xadvance="23" page="0" chnl="0" letter="^"/>
+        <char id="126" x="188" y="391" width="25" height="14" xoffset="6" yoffset="29" xadvance="25" page="0" chnl="0" letter="~"/>
+        <char id="46" x="214" y="391" width="13" height="13" xoffset="3" yoffset="54" xadvance="11" page="0" chnl="0" letter="."/>
+        <char id="95" x="228" y="391" width="46" height="12" xoffset="-2" yoffset="63" xadvance="35" page="0" chnl="0" letter="_"/>
+        <char id="45" x="275" y="391" width="29" height="11" xoffset="9" yoffset="46" xadvance="34" page="0" chnl="0" letter="-"/>
+        <char id="32" x="305" y="391" width="1" height="1" xoffset="23" yoffset="81" xadvance="23" page="0" chnl="0" letter="space"/>
+    </chars>
+    <kernings count="1816">
+        <kerning first="102" second="102" amount="2"/>
+        <kerning first="102" second="106" amount="-2"/>
+        <kerning first="102" second="41" amount="4"/>
+        <kerning first="102" second="100" amount="-9"/>
+        <kerning first="102" second="103" amount="-8"/>
+        <kerning first="102" second="108" amount="-3"/>
+        <kerning first="102" second="63" amount="1"/>
+        <kerning first="102" second="107" amount="-3"/>
+        <kerning first="102" second="115" amount="-2"/>
+        <kerning first="102" second="104" amount="-3"/>
+        <kerning first="102" second="105" amount="-5"/>
+        <kerning first="102" second="101" amount="-5"/>
+        <kerning first="102" second="97" amount="-9"/>
+        <kerning first="102" second="119" amount="-9"/>
+        <kerning first="102" second="111" amount="-9"/>
+        <kerning first="102" second="99" amount="-9"/>
+        <kerning first="102" second="117" amount="-4"/>
+        <kerning first="102" second="114" amount="-4"/>
+        <kerning first="102" second="110" amount="-4"/>
+        <kerning first="102" second="44" amount="-4"/>
+        <kerning first="102" second="46" amount="-8"/>
+        <kerning first="102" second="45" amount="-8"/>
+        <kerning first="83" second="83" amount="-8"/>
+        <kerning first="83" second="74" amount="3"/>
+        <kerning first="83" second="89" amount="-8"/>
+        <kerning first="83" second="85" amount="-6"/>
+        <kerning first="83" second="116" amount="-6"/>
+        <kerning first="83" second="72" amount="-7"/>
+        <kerning first="83" second="57" amount="-7"/>
+        <kerning first="83" second="112" amount="-6"/>
+        <kerning first="83" second="33" amount="-8"/>
+        <kerning first="83" second="67" amount="-6"/>
+        <kerning first="83" second="69" amount="-5"/>
+        <kerning first="83" second="75" amount="-6"/>
+        <kerning first="83" second="108" amount="-5"/>
+        <kerning first="83" second="63" amount="-6"/>
+        <kerning first="83" second="107" amount="-3"/>
+        <kerning first="83" second="121" amount="-4"/>
+        <kerning first="83" second="73" amount="-3"/>
+        <kerning first="83" second="90" amount="-1"/>
+        <kerning first="83" second="78" amount="-5"/>
+        <kerning first="83" second="84" amount="-2"/>
+        <kerning first="83" second="104" amount="-4"/>
+        <kerning first="83" second="105" amount="-4"/>
+        <kerning first="83" second="79" amount="-3"/>
+        <kerning first="83" second="101" amount="-3"/>
+        <kerning first="83" second="97" amount="-3"/>
+        <kerning first="83" second="118" amount="-3"/>
+        <kerning first="83" second="119" amount="-3"/>
+        <kerning first="83" second="99" amount="-6"/>
+        <kerning first="83" second="109" amount="-5"/>
+        <kerning first="83" second="117" amount="-4"/>
+        <kerning first="83" second="114" amount="-4"/>
+        <kerning first="83" second="110" amount="-4"/>
+        <kerning first="83" second="44" amount="-2"/>
+        <kerning first="83" second="46" amount="-2"/>
+        <kerning first="83" second="45" amount="-8"/>
+        <kerning first="123" second="32" amount="-6"/>
+        <kerning first="124" second="32" amount="-9"/>
+        <kerning first="71" second="71" amount="-4"/>
+        <kerning first="71" second="66" amount="-4"/>
+        <kerning first="71" second="89" amount="-2"/>
+        <kerning first="71" second="85" amount="-3"/>
+        <kerning first="71" second="72" amount="-6"/>
+        <kerning first="71" second="82" amount="-3"/>
+        <kerning first="71" second="33" amount="-7"/>
+        <kerning first="71" second="87" amount="-3"/>
+        <kerning first="71" second="76" amount="-5"/>
+        <kerning first="71" second="70" amount="-1"/>
+        <kerning first="71" second="75" amount="-2"/>
+        <kerning first="71" second="63" amount="-6"/>
+        <kerning first="71" second="121" amount="-5"/>
+        <kerning first="71" second="73" amount="-4"/>
+        <kerning first="71" second="78" amount="-2"/>
+        <kerning first="71" second="105" amount="-4"/>
+        <kerning first="71" second="79" amount="-3"/>
+        <kerning first="71" second="101" amount="-5"/>
+        <kerning first="71" second="97" amount="-6"/>
+        <kerning first="71" second="111" amount="-7"/>
+        <kerning first="71" second="117" amount="-2"/>
+        <kerning first="71" second="114" amount="-5"/>
+        <kerning first="71" second="110" amount="-8"/>
+        <kerning first="71" second="44" amount="-5"/>
+        <kerning first="71" second="46" amount="-7"/>
+        <kerning first="71" second="45" amount="-13"/>
+        <kerning first="74" second="83" amount="-6"/>
+        <kerning first="74" second="71" amount="-6"/>
+        <kerning first="74" second="68" amount="-5"/>
+        <kerning first="74" second="89" amount="-4"/>
+        <kerning first="74" second="65" amount="-3"/>
+        <kerning first="74" second="72" amount="-5"/>
+        <kerning first="74" second="82" amount="-3"/>
+        <kerning first="74" second="33" amount="-12"/>
+        <kerning first="74" second="70" amount="-3"/>
+        <kerning first="74" second="69" amount="-4"/>
+        <kerning first="74" second="75" amount="-6"/>
+        <kerning first="74" second="63" amount="-10"/>
+        <kerning first="74" second="121" amount="-5"/>
+        <kerning first="74" second="73" amount="-4"/>
+        <kerning first="74" second="78" amount="-5"/>
+        <kerning first="74" second="105" amount="-7"/>
+        <kerning first="74" second="86" amount="-3"/>
+        <kerning first="74" second="101" amount="-4"/>
+        <kerning first="74" second="97" amount="-5"/>
+        <kerning first="74" second="111" amount="-6"/>
+        <kerning first="74" second="117" amount="-6"/>
+        <kerning first="74" second="44" amount="-6"/>
+        <kerning first="74" second="46" amount="-4"/>
+        <kerning first="74" second="45" amount="-7"/>
+        <kerning first="64" second="102" amount="-1"/>
+        <kerning first="64" second="106" amount="-5"/>
+        <kerning first="64" second="116" amount="-2"/>
+        <kerning first="64" second="100" amount="-5"/>
+        <kerning first="64" second="112" amount="-2"/>
+        <kerning first="64" second="113" amount="-6"/>
+        <kerning first="64" second="103" amount="-4"/>
+        <kerning first="64" second="98" amount="-6"/>
+        <kerning first="64" second="108" amount="-6"/>
+        <kerning first="64" second="107" amount="-6"/>
+        <kerning first="64" second="121" amount="-5"/>
+        <kerning first="64" second="115" amount="-3"/>
+        <kerning first="64" second="104" amount="-5"/>
+        <kerning first="64" second="105" amount="-6"/>
+        <kerning first="64" second="120" amount="-4"/>
+        <kerning first="64" second="101" amount="-4"/>
+        <kerning first="64" second="97" amount="-6"/>
+        <kerning first="64" second="118" amount="-3"/>
+        <kerning first="64" second="119" amount="-5"/>
+        <kerning first="64" second="111" amount="-6"/>
+        <kerning first="64" second="122" amount="-4"/>
+        <kerning first="64" second="99" amount="-6"/>
+        <kerning first="64" second="109" amount="-7"/>
+        <kerning first="64" second="117" amount="-5"/>
+        <kerning first="64" second="114" amount="-6"/>
+        <kerning first="64" second="110" amount="-6"/>
+        <kerning first="106" second="102" amount="-3"/>
+        <kerning first="106" second="106" amount="-3"/>
+        <kerning first="106" second="116" amount="-3"/>
+        <kerning first="106" second="100" amount="-5"/>
+        <kerning first="106" second="112" amount="-4"/>
+        <kerning first="106" second="33" amount="-10"/>
+        <kerning first="106" second="103" amount="-5"/>
+        <kerning first="106" second="98" amount="-6"/>
+        <kerning first="106" second="63" amount="-9"/>
+        <kerning first="106" second="107" amount="-6"/>
+        <kerning first="106" second="121" amount="-5"/>
+        <kerning first="106" second="115" amount="-4"/>
+        <kerning first="106" second="104" amount="-6"/>
+        <kerning first="106" second="105" amount="-7"/>
+        <kerning first="106" second="59" amount="-10"/>
+        <kerning first="106" second="101" amount="-4"/>
+        <kerning first="106" second="97" amount="-6"/>
+        <kerning first="106" second="118" amount="-5"/>
+        <kerning first="106" second="111" amount="-5"/>
+        <kerning first="106" second="109" amount="-7"/>
+        <kerning first="106" second="117" amount="-6"/>
+        <kerning first="106" second="114" amount="-6"/>
+        <kerning first="106" second="110" amount="-6"/>
+        <kerning first="106" second="58" amount="-4"/>
+        <kerning first="106" second="44" amount="-4"/>
+        <kerning first="106" second="46" amount="-3"/>
+        <kerning first="106" second="45" amount="-8"/>
+        <kerning first="66" second="102" amount="-5"/>
+        <kerning first="66" second="83" amount="-8"/>
+        <kerning first="66" second="71" amount="-3"/>
+        <kerning first="66" second="106" amount="-3"/>
+        <kerning first="66" second="66" amount="-7"/>
+        <kerning first="66" second="68" amount="-5"/>
+        <kerning first="66" second="88" amount="-5"/>
+        <kerning first="66" second="89" amount="-5"/>
+        <kerning first="66" second="85" amount="-5"/>
+        <kerning first="66" second="116" amount="-4"/>
+        <kerning first="66" second="72" amount="-5"/>
+        <kerning first="66" second="100" amount="-3"/>
+        <kerning first="66" second="112" amount="-4"/>
+        <kerning first="66" second="113" amount="-5"/>
+        <kerning first="66" second="33" amount="-10"/>
+        <kerning first="66" second="67" amount="-6"/>
+        <kerning first="66" second="103" amount="-4"/>
+        <kerning first="66" second="98" amount="-4"/>
+        <kerning first="66" second="87" amount="-7"/>
+        <kerning first="66" second="76" amount="-3"/>
+        <kerning first="66" second="77" amount="-5"/>
+        <kerning first="66" second="70" amount="-7"/>
+        <kerning first="66" second="69" amount="-6"/>
+        <kerning first="66" second="75" amount="-6"/>
+        <kerning first="66" second="108" amount="-6"/>
+        <kerning first="66" second="63" amount="-8"/>
+        <kerning first="66" second="107" amount="-4"/>
+        <kerning first="66" second="121" amount="-4"/>
+        <kerning first="66" second="73" amount="-4"/>
+        <kerning first="66" second="115" amount="-4"/>
+        <kerning first="66" second="78" amount="-4"/>
+        <kerning first="66" second="84" amount="4"/>
+        <kerning first="66" second="104" amount="-4"/>
+        <kerning first="66" second="105" amount="-6"/>
+        <kerning first="66" second="79" amount="-3"/>
+        <kerning first="66" second="86" amount="-6"/>
+        <kerning first="66" second="101" amount="-3"/>
+        <kerning first="66" second="97" amount="-3"/>
+        <kerning first="66" second="118" amount="-5"/>
+        <kerning first="66" second="119" amount="-5"/>
+        <kerning first="66" second="111" amount="-5"/>
+        <kerning first="66" second="122" amount="-2"/>
+        <kerning first="66" second="99" amount="-4"/>
+        <kerning first="66" second="109" amount="-6"/>
+        <kerning first="66" second="117" amount="-5"/>
+        <kerning first="66" second="114" amount="-4"/>
+        <kerning first="66" second="110" amount="-5"/>
+        <kerning first="66" second="44" amount="-3"/>
+        <kerning first="66" second="46" amount="-4"/>
+        <kerning first="66" second="45" amount="-7"/>
+        <kerning first="40" second="74" amount="10"/>
+        <kerning first="53" second="53" amount="-2"/>
+        <kerning first="53" second="47" amount="-8"/>
+        <kerning first="53" second="92" amount="-3"/>
+        <kerning first="53" second="57" amount="-2"/>
+        <kerning first="53" second="54" amount="-4"/>
+        <kerning first="53" second="55" amount="3"/>
+        <kerning first="53" second="52" amount="-1"/>
+        <kerning first="53" second="56" amount="-5"/>
+        <kerning first="53" second="37" amount="-3"/>
+        <kerning first="53" second="60" amount="-1"/>
+        <kerning first="53" second="48" amount="-4"/>
+        <kerning first="53" second="50" amount="-4"/>
+        <kerning first="53" second="44" amount="-7"/>
+        <kerning first="53" second="61" amount="-3"/>
+        <kerning first="53" second="46" amount="-6"/>
+        <kerning first="53" second="45" amount="-7"/>
+        <kerning first="81" second="124" amount="-6"/>
+        <kerning first="81" second="41" amount="-5"/>
+        <kerning first="81" second="81" amount="-5"/>
+        <kerning first="81" second="89" amount="-6"/>
+        <kerning first="81" second="85" amount="-5"/>
+        <kerning first="81" second="65" amount="-3"/>
+        <kerning first="81" second="33" amount="-11"/>
+        <kerning first="81" second="87" amount="-7"/>
+        <kerning first="81" second="63" amount="-8"/>
+        <kerning first="81" second="84" amount="3"/>
+        <kerning first="81" second="86" amount="-3"/>
+        <kerning first="81" second="101" amount="-5"/>
+        <kerning first="81" second="97" amount="-6"/>
+        <kerning first="81" second="117" amount="-6"/>
+        <kerning first="81" second="44" amount="-5"/>
+        <kerning first="81" second="46" amount="-7"/>
+        <kerning first="81" second="45" amount="-6"/>
+        <kerning first="68" second="83" amount="-3"/>
+        <kerning first="68" second="74" amount="-6"/>
+        <kerning first="68" second="66" amount="-4"/>
+        <kerning first="68" second="68" amount="-4"/>
+        <kerning first="68" second="88" amount="-5"/>
+        <kerning first="68" second="89" amount="-4"/>
+        <kerning first="68" second="65" amount="-4"/>
+        <kerning first="68" second="72" amount="-2"/>
+        <kerning first="68" second="82" amount="-5"/>
+        <kerning first="68" second="33" amount="-9"/>
+        <kerning first="68" second="87" amount="-4"/>
+        <kerning first="68" second="70" amount="-4"/>
+        <kerning first="68" second="69" amount="-3"/>
+        <kerning first="68" second="75" amount="-4"/>
+        <kerning first="68" second="63" amount="-7"/>
+        <kerning first="68" second="121" amount="-6"/>
+        <kerning first="68" second="73" amount="-5"/>
+        <kerning first="68" second="78" amount="-2"/>
+        <kerning first="68" second="104" amount="-2"/>
+        <kerning first="68" second="105" amount="-3"/>
+        <kerning first="68" second="79" amount="-4"/>
+        <kerning first="68" second="86" amount="-1"/>
+        <kerning first="68" second="101" amount="-3"/>
+        <kerning first="68" second="97" amount="-6"/>
+        <kerning first="68" second="111" amount="-5"/>
+        <kerning first="68" second="117" amount="-3"/>
+        <kerning first="68" second="114" amount="-3"/>
+        <kerning first="68" second="44" amount="-10"/>
+        <kerning first="68" second="46" amount="-10"/>
+        <kerning first="68" second="45" amount="-7"/>
+        <kerning first="88" second="71" amount="-2"/>
+        <kerning first="88" second="66" amount="5"/>
+        <kerning first="88" second="33" amount="-7"/>
+        <kerning first="88" second="67" amount="-4"/>
+        <kerning first="88" second="76" amount="-3"/>
+        <kerning first="88" second="63" amount="-4"/>
+        <kerning first="88" second="121" amount="-3"/>
+        <kerning first="88" second="78" amount="-2"/>
+        <kerning first="88" second="79" amount="-4"/>
+        <kerning first="88" second="86" amount="-4"/>
+        <kerning first="88" second="101" amount="-2"/>
+        <kerning first="88" second="117" amount="-4"/>
+        <kerning first="88" second="45" amount="-13"/>
+        <kerning first="47" second="57" amount="-6"/>
+        <kerning first="47" second="51" amount="-3"/>
+        <kerning first="47" second="54" amount="-7"/>
+        <kerning first="47" second="52" amount="-11"/>
+        <kerning first="47" second="56" amount="-11"/>
+        <kerning first="47" second="48" amount="-10"/>
+        <kerning first="47" second="49" amount="-4"/>
+        <kerning first="47" second="50" amount="-6"/>
+        <kerning first="89" second="71" amount="-8"/>
+        <kerning first="89" second="66" amount="12"/>
+        <kerning first="89" second="81" amount="-7"/>
+        <kerning first="89" second="89" amount="7"/>
+        <kerning first="89" second="65" amount="-4"/>
+        <kerning first="89" second="72" amount="-1"/>
+        <kerning first="89" second="82" amount="2"/>
+        <kerning first="89" second="100" amount="-8"/>
+        <kerning first="89" second="113" amount="-8"/>
+        <kerning first="89" second="33" amount="-1"/>
+        <kerning first="89" second="67" amount="-7"/>
+        <kerning first="89" second="76" amount="-1"/>
+        <kerning first="89" second="73" amount="7"/>
+        <kerning first="89" second="84" amount="15"/>
+        <kerning first="89" second="105" amount="-2"/>
+        <kerning first="89" second="79" amount="-5"/>
+        <kerning first="89" second="86" amount="4"/>
+        <kerning first="89" second="59" amount="-10"/>
+        <kerning first="89" second="101" amount="-6"/>
+        <kerning first="89" second="97" amount="-9"/>
+        <kerning first="89" second="118" amount="-1"/>
+        <kerning first="89" second="111" amount="-13"/>
+        <kerning first="89" second="99" amount="-8"/>
+        <kerning first="89" second="117" amount="-5"/>
+        <kerning first="89" second="58" amount="-4"/>
+        <kerning first="89" second="44" amount="-10"/>
+        <kerning first="89" second="46" amount="-11"/>
+        <kerning first="89" second="45" amount="-10"/>
+        <kerning first="85" second="83" amount="-4"/>
+        <kerning first="85" second="71" amount="-6"/>
+        <kerning first="85" second="74" amount="-6"/>
+        <kerning first="85" second="85" amount="-6"/>
+        <kerning first="85" second="72" amount="-6"/>
+        <kerning first="85" second="100" amount="-6"/>
+        <kerning first="85" second="112" amount="-1"/>
+        <kerning first="85" second="33" amount="-10"/>
+        <kerning first="85" second="67" amount="-7"/>
+        <kerning first="85" second="103" amount="-6"/>
+        <kerning first="85" second="87" amount="-5"/>
+        <kerning first="85" second="77" amount="-8"/>
+        <kerning first="85" second="69" amount="-5"/>
+        <kerning first="85" second="121" amount="-6"/>
+        <kerning first="85" second="73" amount="-3"/>
+        <kerning first="85" second="115" amount="-3"/>
+        <kerning first="85" second="90" amount="-2"/>
+        <kerning first="85" second="101" amount="-7"/>
+        <kerning first="85" second="97" amount="-7"/>
+        <kerning first="85" second="118" amount="-3"/>
+        <kerning first="85" second="109" amount="-6"/>
+        <kerning first="85" second="110" amount="-7"/>
+        <kerning first="85" second="44" amount="-8"/>
+        <kerning first="85" second="46" amount="-8"/>
+        <kerning first="85" second="45" amount="-10"/>
+        <kerning first="116" second="106" amount="-2"/>
+        <kerning first="116" second="41" amount="-3"/>
+        <kerning first="116" second="116" amount="1"/>
+        <kerning first="116" second="100" amount="-5"/>
+        <kerning first="116" second="33" amount="-7"/>
+        <kerning first="116" second="103" amount="-4"/>
+        <kerning first="116" second="54" amount="-2"/>
+        <kerning first="116" second="108" amount="-4"/>
+        <kerning first="116" second="63" amount="-5"/>
+        <kerning first="116" second="121" amount="-5"/>
+        <kerning first="116" second="115" amount="-2"/>
+        <kerning first="116" second="104" amount="-7"/>
+        <kerning first="116" second="105" amount="-4"/>
+        <kerning first="116" second="59" amount="-5"/>
+        <kerning first="116" second="101" amount="-4"/>
+        <kerning first="116" second="97" amount="-7"/>
+        <kerning first="116" second="119" amount="-5"/>
+        <kerning first="116" second="111" amount="-5"/>
+        <kerning first="116" second="122" amount="-3"/>
+        <kerning first="116" second="99" amount="-7"/>
+        <kerning first="116" second="109" amount="-4"/>
+        <kerning first="116" second="117" amount="-4"/>
+        <kerning first="116" second="114" amount="-3"/>
+        <kerning first="116" second="110" amount="-4"/>
+        <kerning first="116" second="39" amount="-5"/>
+        <kerning first="116" second="46" amount="-5"/>
+        <kerning first="116" second="45" amount="-7"/>
+        <kerning first="65" second="102" amount="-2"/>
+        <kerning first="65" second="83" amount="-6"/>
+        <kerning first="65" second="71" amount="-1"/>
+        <kerning first="65" second="66" amount="-7"/>
+        <kerning first="65" second="81" amount="1"/>
+        <kerning first="65" second="68" amount="-4"/>
+        <kerning first="65" second="89" amount="-6"/>
+        <kerning first="65" second="85" amount="-3"/>
+        <kerning first="65" second="116" amount="-4"/>
+        <kerning first="65" second="82" amount="-4"/>
+        <kerning first="65" second="100" amount="-2"/>
+        <kerning first="65" second="80" amount="-4"/>
+        <kerning first="65" second="112" amount="-3"/>
+        <kerning first="65" second="113" amount="-1"/>
+        <kerning first="65" second="33" amount="-6"/>
+        <kerning first="65" second="67" amount="-3"/>
+        <kerning first="65" second="103" amount="-1"/>
+        <kerning first="65" second="98" amount="-3"/>
+        <kerning first="65" second="87" amount="-5"/>
+        <kerning first="65" second="76" amount="-1"/>
+        <kerning first="65" second="77" amount="-1"/>
+        <kerning first="65" second="70" amount="-5"/>
+        <kerning first="65" second="75" amount="-4"/>
+        <kerning first="65" second="108" amount="-5"/>
+        <kerning first="65" second="63" amount="-6"/>
+        <kerning first="65" second="121" amount="-1"/>
+        <kerning first="65" second="78" amount="-2"/>
+        <kerning first="65" second="84" amount="-1"/>
+        <kerning first="65" second="79" amount="-2"/>
+        <kerning first="65" second="86" amount="-4"/>
+        <kerning first="65" second="120" amount="4"/>
+        <kerning first="65" second="101" amount="-1"/>
+        <kerning first="65" second="97" amount="-1"/>
+        <kerning first="65" second="118" amount="-1"/>
+        <kerning first="65" second="119" amount="-1"/>
+        <kerning first="65" second="111" amount="-1"/>
+        <kerning first="65" second="99" amount="-2"/>
+        <kerning first="65" second="117" amount="-2"/>
+        <kerning first="65" second="110" amount="-4"/>
+        <kerning first="65" second="45" amount="-6"/>
+        <kerning first="72" second="83" amount="-6"/>
+        <kerning first="72" second="71" amount="-5"/>
+        <kerning first="72" second="74" amount="-3"/>
+        <kerning first="72" second="66" amount="-4"/>
+        <kerning first="72" second="68" amount="-4"/>
+        <kerning first="72" second="89" amount="-6"/>
+        <kerning first="72" second="85" amount="-4"/>
+        <kerning first="72" second="65" amount="-4"/>
+        <kerning first="72" second="72" amount="-3"/>
+        <kerning first="72" second="82" amount="-4"/>
+        <kerning first="72" second="33" amount="-10"/>
+        <kerning first="72" second="67" amount="-6"/>
+        <kerning first="72" second="103" amount="-4"/>
+        <kerning first="72" second="87" amount="-6"/>
+        <kerning first="72" second="76" amount="-4"/>
+        <kerning first="72" second="70" amount="-5"/>
+        <kerning first="72" second="69" amount="-4"/>
+        <kerning first="72" second="63" amount="-7"/>
+        <kerning first="72" second="121" amount="-4"/>
+        <kerning first="72" second="73" amount="-4"/>
+        <kerning first="72" second="78" amount="-6"/>
+        <kerning first="72" second="105" amount="-7"/>
+        <kerning first="72" second="79" amount="-4"/>
+        <kerning first="72" second="86" amount="-5"/>
+        <kerning first="72" second="101" amount="-5"/>
+        <kerning first="72" second="97" amount="-6"/>
+        <kerning first="72" second="111" amount="-7"/>
+        <kerning first="72" second="117" amount="-5"/>
+        <kerning first="72" second="44" amount="-7"/>
+        <kerning first="72" second="46" amount="-6"/>
+        <kerning first="72" second="45" amount="-7"/>
+        <kerning first="82" second="83" amount="-4"/>
+        <kerning first="82" second="71" amount="-1"/>
+        <kerning first="82" second="74" amount="-4"/>
+        <kerning first="82" second="66" amount="-6"/>
+        <kerning first="82" second="81" amount="1"/>
+        <kerning first="82" second="68" amount="-3"/>
+        <kerning first="82" second="89" amount="-2"/>
+        <kerning first="82" second="85" amount="-4"/>
+        <kerning first="82" second="72" amount="-4"/>
+        <kerning first="82" second="82" amount="-4"/>
+        <kerning first="82" second="33" amount="-5"/>
+        <kerning first="82" second="67" amount="-4"/>
+        <kerning first="82" second="87" amount="-4"/>
+        <kerning first="82" second="77" amount="-2"/>
+        <kerning first="82" second="69" amount="-5"/>
+        <kerning first="82" second="75" amount="-6"/>
+        <kerning first="82" second="63" amount="-7"/>
+        <kerning first="82" second="121" amount="-5"/>
+        <kerning first="82" second="73" amount="-2"/>
+        <kerning first="82" second="78" amount="-2"/>
+        <kerning first="82" second="84" amount="4"/>
+        <kerning first="82" second="105" amount="-5"/>
+        <kerning first="82" second="79" amount="-4"/>
+        <kerning first="82" second="101" amount="-4"/>
+        <kerning first="82" second="97" amount="-3"/>
+        <kerning first="82" second="111" amount="-1"/>
+        <kerning first="82" second="117" amount="-4"/>
+        <kerning first="82" second="45" amount="-8"/>
+        <kerning first="100" second="102" amount="-4"/>
+        <kerning first="100" second="106" amount="-7"/>
+        <kerning first="100" second="100" amount="-5"/>
+        <kerning first="100" second="103" amount="-7"/>
+        <kerning first="100" second="98" amount="-7"/>
+        <kerning first="100" second="63" amount="-9"/>
+        <kerning first="100" second="107" amount="-7"/>
+        <kerning first="100" second="121" amount="-6"/>
+        <kerning first="100" second="115" amount="-6"/>
+        <kerning first="100" second="104" amount="-7"/>
+        <kerning first="100" second="105" amount="-7"/>
+        <kerning first="100" second="101" amount="-5"/>
+        <kerning first="100" second="97" amount="-7"/>
+        <kerning first="100" second="118" amount="-4"/>
+        <kerning first="100" second="119" amount="-7"/>
+        <kerning first="100" second="111" amount="-7"/>
+        <kerning first="100" second="99" amount="-5"/>
+        <kerning first="100" second="109" amount="-7"/>
+        <kerning first="100" second="117" amount="-4"/>
+        <kerning first="100" second="114" amount="-7"/>
+        <kerning first="100" second="58" amount="-5"/>
+        <kerning first="100" second="44" amount="-7"/>
+        <kerning first="100" second="46" amount="-6"/>
+        <kerning first="100" second="45" amount="-7"/>
+        <kerning first="80" second="81" amount="-6"/>
+        <kerning first="80" second="116" amount="1"/>
+        <kerning first="80" second="65" amount="-7"/>
+        <kerning first="80" second="72" amount="-5"/>
+        <kerning first="80" second="80" amount="-2"/>
+        <kerning first="80" second="33" amount="-6"/>
+        <kerning first="80" second="69" amount="-2"/>
+        <kerning first="80" second="121" amount="-7"/>
+        <kerning first="80" second="73" amount="1"/>
+        <kerning first="80" second="115" amount="-1"/>
+        <kerning first="80" second="105" amount="-5"/>
+        <kerning first="80" second="79" amount="-5"/>
+        <kerning first="80" second="101" amount="-5"/>
+        <kerning first="80" second="97" amount="-11"/>
+        <kerning first="80" second="111" amount="-8"/>
+        <kerning first="80" second="117" amount="-4"/>
+        <kerning first="80" second="114" amount="-7"/>
+        <kerning first="80" second="110" amount="-6"/>
+        <kerning first="80" second="44" amount="-19"/>
+        <kerning first="80" second="46" amount="-10"/>
+        <kerning first="80" second="45" amount="-9"/>
+        <kerning first="57" second="53" amount="-4"/>
+        <kerning first="57" second="47" amount="-12"/>
+        <kerning first="57" second="92" amount="-11"/>
+        <kerning first="57" second="57" amount="-3"/>
+        <kerning first="57" second="51" amount="-5"/>
+        <kerning first="57" second="54" amount="-6"/>
+        <kerning first="57" second="55" amount="-2"/>
+        <kerning first="57" second="52" amount="-4"/>
+        <kerning first="57" second="56" amount="-7"/>
+        <kerning first="57" second="37" amount="-4"/>
+        <kerning first="57" second="62" amount="-3"/>
+        <kerning first="57" second="60" amount="-1"/>
+        <kerning first="57" second="48" amount="-6"/>
+        <kerning first="57" second="50" amount="-7"/>
+        <kerning first="57" second="43" amount="-1"/>
+        <kerning first="57" second="44" amount="-8"/>
+        <kerning first="57" second="61" amount="-4"/>
+        <kerning first="57" second="46" amount="-8"/>
+        <kerning first="57" second="45" amount="-7"/>
+        <kerning first="112" second="102" amount="-3"/>
+        <kerning first="112" second="106" amount="-5"/>
+        <kerning first="112" second="116" amount="-3"/>
+        <kerning first="112" second="112" amount="-5"/>
+        <kerning first="112" second="33" amount="-9"/>
+        <kerning first="112" second="108" amount="-4"/>
+        <kerning first="112" second="63" amount="-6"/>
+        <kerning first="112" second="121" amount="-4"/>
+        <kerning first="112" second="115" amount="-3"/>
+        <kerning first="112" second="104" amount="-5"/>
+        <kerning first="112" second="105" amount="-5"/>
+        <kerning first="112" second="59" amount="-7"/>
+        <kerning first="112" second="101" amount="-4"/>
+        <kerning first="112" second="97" amount="-7"/>
+        <kerning first="112" second="119" amount="-3"/>
+        <kerning first="112" second="111" amount="-4"/>
+        <kerning first="112" second="117" amount="-5"/>
+        <kerning first="112" second="114" amount="-5"/>
+        <kerning first="112" second="58" amount="-2"/>
+        <kerning first="112" second="44" amount="-8"/>
+        <kerning first="112" second="46" amount="-6"/>
+        <kerning first="112" second="45" amount="-7"/>
+        <kerning first="113" second="106" amount="-6"/>
+        <kerning first="113" second="113" amount="-7"/>
+        <kerning first="113" second="33" amount="-12"/>
+        <kerning first="113" second="98" amount="-8"/>
+        <kerning first="113" second="63" amount="-10"/>
+        <kerning first="113" second="115" amount="-5"/>
+        <kerning first="113" second="59" amount="-10"/>
+        <kerning first="113" second="101" amount="-5"/>
+        <kerning first="113" second="119" amount="-6"/>
+        <kerning first="113" second="117" amount="-8"/>
+        <kerning first="113" second="58" amount="-5"/>
+        <kerning first="113" second="44" amount="-6"/>
+        <kerning first="113" second="46" amount="-6"/>
+        <kerning first="113" second="45" amount="-9"/>
+        <kerning first="33" second="63" amount="-6"/>
+        <kerning first="33" second="84" amount="5"/>
+        <kerning first="67" second="66" amount="-3"/>
+        <kerning first="67" second="68" amount="-6"/>
+        <kerning first="67" second="65" amount="1"/>
+        <kerning first="67" second="72" amount="-8"/>
+        <kerning first="67" second="82" amount="-5"/>
+        <kerning first="67" second="33" amount="-8"/>
+        <kerning first="67" second="67" amount="-4"/>
+        <kerning first="67" second="69" amount="-6"/>
+        <kerning first="67" second="75" amount="-6"/>
+        <kerning first="67" second="108" amount="-10"/>
+        <kerning first="67" second="63" amount="-8"/>
+        <kerning first="67" second="107" amount="-7"/>
+        <kerning first="67" second="121" amount="-4"/>
+        <kerning first="67" second="78" amount="-4"/>
+        <kerning first="67" second="104" amount="-9"/>
+        <kerning first="67" second="79" amount="-5"/>
+        <kerning first="67" second="86" amount="-9"/>
+        <kerning first="67" second="101" amount="-10"/>
+        <kerning first="67" second="97" amount="-9"/>
+        <kerning first="67" second="111" amount="-13"/>
+        <kerning first="67" second="122" amount="-2"/>
+        <kerning first="67" second="117" amount="-4"/>
+        <kerning first="67" second="114" amount="-7"/>
+        <kerning first="67" second="44" amount="-1"/>
+        <kerning first="67" second="46" amount="-2"/>
+        <kerning first="67" second="45" amount="-10"/>
+        <kerning first="51" second="53" amount="-6"/>
+        <kerning first="51" second="47" amount="-7"/>
+        <kerning first="51" second="92" amount="-10"/>
+        <kerning first="51" second="57" amount="-6"/>
+        <kerning first="51" second="51" amount="-6"/>
+        <kerning first="51" second="54" amount="-4"/>
+        <kerning first="51" second="55" amount="-3"/>
+        <kerning first="51" second="52" amount="-3"/>
+        <kerning first="51" second="56" amount="-4"/>
+        <kerning first="51" second="37" amount="-4"/>
+        <kerning first="51" second="60" amount="-1"/>
+        <kerning first="51" second="48" amount="-5"/>
+        <kerning first="51" second="50" amount="-4"/>
+        <kerning first="51" second="43" amount="-4"/>
+        <kerning first="51" second="44" amount="-4"/>
+        <kerning first="51" second="61" amount="-3"/>
+        <kerning first="51" second="46" amount="-4"/>
+        <kerning first="51" second="45" amount="-7"/>
+        <kerning first="36" second="53" amount="-1"/>
+        <kerning first="36" second="57" amount="-1"/>
+        <kerning first="36" second="36" amount="-4"/>
+        <kerning first="36" second="54" amount="-5"/>
+        <kerning first="36" second="55" amount="3"/>
+        <kerning first="36" second="52" amount="-3"/>
+        <kerning first="36" second="56" amount="-5"/>
+        <kerning first="36" second="48" amount="-6"/>
+        <kerning first="36" second="49" amount="-4"/>
+        <kerning first="36" second="50" amount="-3"/>
+        <kerning first="103" second="102" amount="-2"/>
+        <kerning first="103" second="106" amount="-4"/>
+        <kerning first="103" second="53" amount="-4"/>
+        <kerning first="103" second="116" amount="-2"/>
+        <kerning first="103" second="100" amount="-7"/>
+        <kerning first="103" second="112" amount="-3"/>
+        <kerning first="103" second="33" amount="-11"/>
+        <kerning first="103" second="103" amount="-6"/>
+        <kerning first="103" second="98" amount="-6"/>
+        <kerning first="103" second="55" amount="-6"/>
+        <kerning first="103" second="63" amount="-10"/>
+        <kerning first="103" second="107" amount="-6"/>
+        <kerning first="103" second="121" amount="-7"/>
+        <kerning first="103" second="115" amount="-4"/>
+        <kerning first="103" second="104" amount="-6"/>
+        <kerning first="103" second="105" amount="-7"/>
+        <kerning first="103" second="59" amount="-10"/>
+        <kerning first="103" second="101" amount="-7"/>
+        <kerning first="103" second="97" amount="-7"/>
+        <kerning first="103" second="119" amount="-8"/>
+        <kerning first="103" second="111" amount="-8"/>
+        <kerning first="103" second="109" amount="-8"/>
+        <kerning first="103" second="117" amount="-8"/>
+        <kerning first="103" second="114" amount="-6"/>
+        <kerning first="103" second="110" amount="-8"/>
+        <kerning first="103" second="46" amount="-4"/>
+        <kerning first="103" second="45" amount="-9"/>
+        <kerning first="98" second="102" amount="-3"/>
+        <kerning first="98" second="106" amount="-6"/>
+        <kerning first="98" second="116" amount="-2"/>
+        <kerning first="98" second="100" amount="-6"/>
+        <kerning first="98" second="113" amount="-6"/>
+        <kerning first="98" second="98" amount="-7"/>
+        <kerning first="98" second="108" amount="-7"/>
+        <kerning first="98" second="63" amount="-8"/>
+        <kerning first="98" second="107" amount="-6"/>
+        <kerning first="98" second="121" amount="-6"/>
+        <kerning first="98" second="115" amount="-6"/>
+        <kerning first="98" second="104" amount="-7"/>
+        <kerning first="98" second="105" amount="-7"/>
+        <kerning first="98" second="120" amount="-6"/>
+        <kerning first="98" second="101" amount="-5"/>
+        <kerning first="98" second="97" amount="-8"/>
+        <kerning first="98" second="118" amount="-4"/>
+        <kerning first="98" second="119" amount="-7"/>
+        <kerning first="98" second="111" amount="-8"/>
+        <kerning first="98" second="99" amount="-7"/>
+        <kerning first="98" second="109" amount="-7"/>
+        <kerning first="98" second="117" amount="-6"/>
+        <kerning first="98" second="114" amount="-6"/>
+        <kerning first="98" second="110" amount="-7"/>
+        <kerning first="98" second="58" amount="-3"/>
+        <kerning first="98" second="44" amount="-8"/>
+        <kerning first="98" second="46" amount="-7"/>
+        <kerning first="98" second="45" amount="-8"/>
+        <kerning first="87" second="71" amount="-6"/>
+        <kerning first="87" second="81" amount="-5"/>
+        <kerning first="87" second="88" amount="-5"/>
+        <kerning first="87" second="85" amount="-6"/>
+        <kerning first="87" second="116" amount="-2"/>
+        <kerning first="87" second="65" amount="-3"/>
+        <kerning first="87" second="72" amount="-5"/>
+        <kerning first="87" second="100" amount="-5"/>
+        <kerning first="87" second="67" amount="-7"/>
+        <kerning first="87" second="87" amount="-7"/>
+        <kerning first="87" second="69" amount="-6"/>
+        <kerning first="87" second="63" amount="-9"/>
+        <kerning first="87" second="121" amount="-5"/>
+        <kerning first="87" second="73" amount="-5"/>
+        <kerning first="87" second="78" amount="-7"/>
+        <kerning first="87" second="84" amount="3"/>
+        <kerning first="87" second="104" amount="-6"/>
+        <kerning first="87" second="105" amount="-7"/>
+        <kerning first="87" second="79" amount="-5"/>
+        <kerning first="87" second="59" amount="-10"/>
+        <kerning first="87" second="101" amount="-6"/>
+        <kerning first="87" second="97" amount="-6"/>
+        <kerning first="87" second="111" amount="-6"/>
+        <kerning first="87" second="109" amount="-7"/>
+        <kerning first="87" second="117" amount="-6"/>
+        <kerning first="87" second="114" amount="-6"/>
+        <kerning first="87" second="58" amount="-4"/>
+        <kerning first="87" second="44" amount="-8"/>
+        <kerning first="87" second="46" amount="-6"/>
+        <kerning first="87" second="45" amount="-9"/>
+        <kerning first="76" second="83" amount="-11"/>
+        <kerning first="76" second="106" amount="3"/>
+        <kerning first="76" second="81" amount="2"/>
+        <kerning first="76" second="68" amount="-2"/>
+        <kerning first="76" second="89" amount="-9"/>
+        <kerning first="76" second="85" amount="-1"/>
+        <kerning first="76" second="65" amount="2"/>
+        <kerning first="76" second="82" amount="-4"/>
+        <kerning first="76" second="33" amount="-6"/>
+        <kerning first="76" second="67" amount="-1"/>
+        <kerning first="76" second="87" amount="-3"/>
+        <kerning first="76" second="77" amount="-4"/>
+        <kerning first="76" second="70" amount="-4"/>
+        <kerning first="76" second="69" amount="-4"/>
+        <kerning first="76" second="63" amount="-7"/>
+        <kerning first="76" second="121" amount="1"/>
+        <kerning first="76" second="84" amount="-10"/>
+        <kerning first="76" second="105" amount="-10"/>
+        <kerning first="76" second="79" amount="-2"/>
+        <kerning first="76" second="86" amount="-5"/>
+        <kerning first="76" second="101" amount="-8"/>
+        <kerning first="76" second="117" amount="-8"/>
+        <kerning first="76" second="45" amount="-8"/>
+        <kerning first="77" second="106" amount="1"/>
+        <kerning first="77" second="88" amount="-2"/>
+        <kerning first="77" second="89" amount="-9"/>
+        <kerning first="77" second="82" amount="-6"/>
+        <kerning first="77" second="100" amount="-4"/>
+        <kerning first="77" second="33" amount="-8"/>
+        <kerning first="77" second="98" amount="-6"/>
+        <kerning first="77" second="87" amount="-7"/>
+        <kerning first="77" second="77" amount="-6"/>
+        <kerning first="77" second="69" amount="-5"/>
+        <kerning first="77" second="75" amount="-6"/>
+        <kerning first="77" second="63" amount="-9"/>
+        <kerning first="77" second="121" amount="-4"/>
+        <kerning first="77" second="73" amount="-1"/>
+        <kerning first="77" second="78" amount="-3"/>
+        <kerning first="77" second="105" amount="-7"/>
+        <kerning first="77" second="79" amount="-5"/>
+        <kerning first="77" second="101" amount="-3"/>
+        <kerning first="77" second="97" amount="-4"/>
+        <kerning first="77" second="111" amount="-4"/>
+        <kerning first="77" second="99" amount="-3"/>
+        <kerning first="77" second="117" amount="-4"/>
+        <kerning first="77" second="114" amount="-7"/>
+        <kerning first="77" second="110" amount="-4"/>
+        <kerning first="77" second="44" amount="-1"/>
+        <kerning first="77" second="46" amount="-2"/>
+        <kerning first="77" second="45" amount="-11"/>
+        <kerning first="54" second="53" amount="-2"/>
+        <kerning first="54" second="47" amount="-10"/>
+        <kerning first="54" second="92" amount="-13"/>
+        <kerning first="54" second="57" amount="-2"/>
+        <kerning first="54" second="51" amount="-6"/>
+        <kerning first="54" second="54" amount="-3"/>
+        <kerning first="54" second="55" amount="-8"/>
+        <kerning first="54" second="52" amount="1"/>
+        <kerning first="54" second="56" amount="-4"/>
+        <kerning first="54" second="37" amount="-3"/>
+        <kerning first="54" second="62" amount="-3"/>
+        <kerning first="54" second="50" amount="-4"/>
+        <kerning first="54" second="117" amount="-4"/>
+        <kerning first="54" second="43" amount="-3"/>
+        <kerning first="54" second="44" amount="-6"/>
+        <kerning first="54" second="61" amount="-2"/>
+        <kerning first="54" second="46" amount="-4"/>
+        <kerning first="54" second="45" amount="-5"/>
+        <kerning first="55" second="53" amount="-1"/>
+        <kerning first="55" second="47" amount="-12"/>
+        <kerning first="55" second="57" amount="-1"/>
+        <kerning first="55" second="51" amount="1"/>
+        <kerning first="55" second="54" amount="-6"/>
+        <kerning first="55" second="55" amount="3"/>
+        <kerning first="55" second="52" amount="-6"/>
+        <kerning first="55" second="56" amount="-7"/>
+        <kerning first="55" second="37" amount="-2"/>
+        <kerning first="55" second="60" amount="-3"/>
+        <kerning first="55" second="48" amount="-8"/>
+        <kerning first="55" second="50" amount="-3"/>
+        <kerning first="55" second="119" amount="-9"/>
+        <kerning first="55" second="117" amount="-8"/>
+        <kerning first="55" second="43" amount="1"/>
+        <kerning first="55" second="114" amount="-6"/>
+        <kerning first="55" second="44" amount="-13"/>
+        <kerning first="55" second="61" amount="-2"/>
+        <kerning first="55" second="46" amount="-12"/>
+        <kerning first="55" second="45" amount="-7"/>
+        <kerning first="70" second="71" amount="-6"/>
+        <kerning first="70" second="74" amount="-3"/>
+        <kerning first="70" second="66" amount="8"/>
+        <kerning first="70" second="65" amount="-7"/>
+        <kerning first="70" second="72" amount="-5"/>
+        <kerning first="70" second="82" amount="5"/>
+        <kerning first="70" second="33" amount="-4"/>
+        <kerning first="70" second="76" amount="-3"/>
+        <kerning first="70" second="70" amount="7"/>
+        <kerning first="70" second="63" amount="-1"/>
+        <kerning first="70" second="121" amount="-11"/>
+        <kerning first="70" second="73" amount="5"/>
+        <kerning first="70" second="84" amount="13"/>
+        <kerning first="70" second="105" amount="-2"/>
+        <kerning first="70" second="79" amount="-5"/>
+        <kerning first="70" second="49" amount="-2"/>
+        <kerning first="70" second="101" amount="-5"/>
+        <kerning first="70" second="97" amount="-12"/>
+        <kerning first="70" second="111" amount="-12"/>
+        <kerning first="70" second="117" amount="-10"/>
+        <kerning first="70" second="114" amount="-10"/>
+        <kerning first="70" second="44" amount="-15"/>
+        <kerning first="70" second="46" amount="-14"/>
+        <kerning first="70" second="45" amount="-10"/>
+        <kerning first="69" second="102" amount="-1"/>
+        <kerning first="69" second="83" amount="-6"/>
+        <kerning first="69" second="71" amount="-2"/>
+        <kerning first="69" second="106" amount="1"/>
+        <kerning first="69" second="68" amount="-4"/>
+        <kerning first="69" second="88" amount="-4"/>
+        <kerning first="69" second="89" amount="-3"/>
+        <kerning first="69" second="85" amount="-3"/>
+        <kerning first="69" second="116" amount="-3"/>
+        <kerning first="69" second="72" amount="-4"/>
+        <kerning first="69" second="82" amount="-1"/>
+        <kerning first="69" second="100" amount="-1"/>
+        <kerning first="69" second="112" amount="-1"/>
+        <kerning first="69" second="113" amount="-2"/>
+        <kerning first="69" second="33" amount="-8"/>
+        <kerning first="69" second="103" amount="-3"/>
+        <kerning first="69" second="98" amount="-3"/>
+        <kerning first="69" second="87" amount="-6"/>
+        <kerning first="69" second="76" amount="-4"/>
+        <kerning first="69" second="77" amount="-4"/>
+        <kerning first="69" second="69" amount="-4"/>
+        <kerning first="69" second="75" amount="-5"/>
+        <kerning first="69" second="108" amount="-6"/>
+        <kerning first="69" second="63" amount="-8"/>
+        <kerning first="69" second="107" amount="-2"/>
+        <kerning first="69" second="121" amount="-1"/>
+        <kerning first="69" second="78" amount="-3"/>
+        <kerning first="69" second="104" amount="-3"/>
+        <kerning first="69" second="105" amount="-3"/>
+        <kerning first="69" second="86" amount="-4"/>
+        <kerning first="69" second="120" amount="2"/>
+        <kerning first="69" second="101" amount="-3"/>
+        <kerning first="69" second="118" amount="-3"/>
+        <kerning first="69" second="119" amount="-4"/>
+        <kerning first="69" second="111" amount="-2"/>
+        <kerning first="69" second="122" amount="-2"/>
+        <kerning first="69" second="99" amount="-1"/>
+        <kerning first="69" second="109" amount="-4"/>
+        <kerning first="69" second="117" amount="-3"/>
+        <kerning first="69" second="114" amount="-5"/>
+        <kerning first="69" second="110" amount="-4"/>
+        <kerning first="69" second="44" amount="-1"/>
+        <kerning first="69" second="46" amount="-1"/>
+        <kerning first="69" second="45" amount="-10"/>
+        <kerning first="75" second="83" amount="-4"/>
+        <kerning first="75" second="71" amount="-1"/>
+        <kerning first="75" second="74" amount="-1"/>
+        <kerning first="75" second="66" amount="-4"/>
+        <kerning first="75" second="81" amount="2"/>
+        <kerning first="75" second="65" amount="2"/>
+        <kerning first="75" second="72" amount="-5"/>
+        <kerning first="75" second="82" amount="-3"/>
+        <kerning first="75" second="33" amount="-4"/>
+        <kerning first="75" second="67" amount="-2"/>
+        <kerning first="75" second="76" amount="-1"/>
+        <kerning first="75" second="69" amount="-5"/>
+        <kerning first="75" second="75" amount="-2"/>
+        <kerning first="75" second="108" amount="-4"/>
+        <kerning first="75" second="63" amount="-6"/>
+        <kerning first="75" second="121" amount="-1"/>
+        <kerning first="75" second="78" amount="-1"/>
+        <kerning first="75" second="105" amount="-5"/>
+        <kerning first="75" second="79" amount="-2"/>
+        <kerning first="75" second="86" amount="-1"/>
+        <kerning first="75" second="101" amount="-1"/>
+        <kerning first="75" second="97" amount="-2"/>
+        <kerning first="75" second="118" amount="-2"/>
+        <kerning first="75" second="119" amount="-1"/>
+        <kerning first="75" second="117" amount="-2"/>
+        <kerning first="75" second="114" amount="-4"/>
+        <kerning first="75" second="110" amount="-3"/>
+        <kerning first="75" second="45" amount="-11"/>
+        <kerning first="108" second="106" amount="-2"/>
+        <kerning first="108" second="116" amount="-4"/>
+        <kerning first="108" second="65" amount="12"/>
+        <kerning first="108" second="100" amount="-2"/>
+        <kerning first="108" second="112" amount="-3"/>
+        <kerning first="108" second="33" amount="1"/>
+        <kerning first="108" second="98" amount="-3"/>
+        <kerning first="108" second="87" amount="4"/>
+        <kerning first="108" second="108" amount="-6"/>
+        <kerning first="108" second="63" amount="1"/>
+        <kerning first="108" second="107" amount="-2"/>
+        <kerning first="108" second="121" amount="-2"/>
+        <kerning first="108" second="115" amount="-6"/>
+        <kerning first="108" second="84" amount="10"/>
+        <kerning first="108" second="104" amount="-5"/>
+        <kerning first="108" second="105" amount="-3"/>
+        <kerning first="108" second="59" amount="3"/>
+        <kerning first="108" second="101" amount="-1"/>
+        <kerning first="108" second="97" amount="-2"/>
+        <kerning first="108" second="118" amount="7"/>
+        <kerning first="108" second="119" amount="8"/>
+        <kerning first="108" second="111" amount="-2"/>
+        <kerning first="108" second="109" amount="-4"/>
+        <kerning first="108" second="117" amount="-2"/>
+        <kerning first="108" second="58" amount="7"/>
+        <kerning first="108" second="44" amount="8"/>
+        <kerning first="108" second="46" amount="7"/>
+        <kerning first="108" second="45" amount="-1"/>
+        <kerning first="63" second="33" amount="-7"/>
+        <kerning first="52" second="53" amount="-1"/>
+        <kerning first="52" second="47" amount="-7"/>
+        <kerning first="52" second="92" amount="-14"/>
+        <kerning first="52" second="51" amount="-3"/>
+        <kerning first="52" second="55" amount="-7"/>
+        <kerning first="52" second="56" amount="-6"/>
+        <kerning first="52" second="37" amount="-3"/>
+        <kerning first="52" second="62" amount="-3"/>
+        <kerning first="52" second="48" amount="-1"/>
+        <kerning first="52" second="43" amount="-3"/>
+        <kerning first="52" second="44" amount="-7"/>
+        <kerning first="52" second="46" amount="-7"/>
+        <kerning first="52" second="45" amount="-4"/>
+        <kerning first="107" second="106" amount="-3"/>
+        <kerning first="107" second="116" amount="-2"/>
+        <kerning first="107" second="33" amount="-4"/>
+        <kerning first="107" second="103" amount="-2"/>
+        <kerning first="107" second="98" amount="-3"/>
+        <kerning first="107" second="108" amount="-4"/>
+        <kerning first="107" second="63" amount="-5"/>
+        <kerning first="107" second="121" amount="-1"/>
+        <kerning first="107" second="115" amount="-3"/>
+        <kerning first="107" second="104" amount="-4"/>
+        <kerning first="107" second="105" amount="-3"/>
+        <kerning first="107" second="59" amount="-4"/>
+        <kerning first="107" second="101" amount="-2"/>
+        <kerning first="107" second="119" amount="-3"/>
+        <kerning first="107" second="111" amount="-2"/>
+        <kerning first="107" second="114" amount="-2"/>
+        <kerning first="107" second="110" amount="-2"/>
+        <kerning first="107" second="45" amount="-9"/>
+        <kerning first="121" second="102" amount="-4"/>
+        <kerning first="121" second="106" amount="-4"/>
+        <kerning first="121" second="116" amount="-4"/>
+        <kerning first="121" second="100" amount="-7"/>
+        <kerning first="121" second="112" amount="-5"/>
+        <kerning first="121" second="113" amount="-6"/>
+        <kerning first="121" second="33" amount="-12"/>
+        <kerning first="121" second="103" amount="-6"/>
+        <kerning first="121" second="98" amount="-8"/>
+        <kerning first="121" second="55" amount="-9"/>
+        <kerning first="121" second="108" amount="-8"/>
+        <kerning first="121" second="63" amount="-10"/>
+        <kerning first="121" second="107" amount="-8"/>
+        <kerning first="121" second="121" amount="-6"/>
+        <kerning first="121" second="115" amount="-6"/>
+        <kerning first="121" second="104" amount="-8"/>
+        <kerning first="121" second="105" amount="-9"/>
+        <kerning first="121" second="59" amount="-11"/>
+        <kerning first="121" second="101" amount="-7"/>
+        <kerning first="121" second="97" amount="-6"/>
+        <kerning first="121" second="119" amount="-6"/>
+        <kerning first="121" second="111" amount="-8"/>
+        <kerning first="121" second="99" amount="-5"/>
+        <kerning first="121" second="109" amount="-9"/>
+        <kerning first="121" second="117" amount="-8"/>
+        <kerning first="121" second="114" amount="-7"/>
+        <kerning first="121" second="110" amount="-8"/>
+        <kerning first="121" second="44" amount="-6"/>
+        <kerning first="121" second="46" amount="-5"/>
+        <kerning first="121" second="45" amount="-10"/>
+        <kerning first="73" second="102" amount="1"/>
+        <kerning first="73" second="83" amount="-2"/>
+        <kerning first="73" second="71" amount="-1"/>
+        <kerning first="73" second="106" amount="5"/>
+        <kerning first="73" second="89" amount="3"/>
+        <kerning first="73" second="85" amount="-1"/>
+        <kerning first="73" second="72" amount="-3"/>
+        <kerning first="73" second="82" amount="3"/>
+        <kerning first="73" second="100" amount="-1"/>
+        <kerning first="73" second="80" amount="3"/>
+        <kerning first="73" second="112" amount="1"/>
+        <kerning first="73" second="67" amount="-3"/>
+        <kerning first="73" second="98" amount="1"/>
+        <kerning first="73" second="76" amount="-2"/>
+        <kerning first="73" second="70" amount="4"/>
+        <kerning first="73" second="69" amount="-2"/>
+        <kerning first="73" second="108" amount="-4"/>
+        <kerning first="73" second="63" amount="-3"/>
+        <kerning first="73" second="107" amount="-1"/>
+        <kerning first="73" second="121" amount="-1"/>
+        <kerning first="73" second="73" amount="2"/>
+        <kerning first="73" second="115" amount="-8"/>
+        <kerning first="73" second="84" amount="11"/>
+        <kerning first="73" second="105" amount="-2"/>
+        <kerning first="73" second="79" amount="-2"/>
+        <kerning first="73" second="101" amount="-1"/>
+        <kerning first="73" second="118" amount="-1"/>
+        <kerning first="73" second="119" amount="-1"/>
+        <kerning first="73" second="111" amount="-1"/>
+        <kerning first="73" second="99" amount="-3"/>
+        <kerning first="73" second="109" amount="-2"/>
+        <kerning first="73" second="117" amount="-2"/>
+        <kerning first="73" second="114" amount="-2"/>
+        <kerning first="73" second="110" amount="-2"/>
+        <kerning first="73" second="39" amount="4"/>
+        <kerning first="73" second="45" amount="-9"/>
+        <kerning first="115" second="116" amount="-4"/>
+        <kerning first="115" second="100" amount="-6"/>
+        <kerning first="115" second="112" amount="-2"/>
+        <kerning first="115" second="33" amount="-7"/>
+        <kerning first="115" second="103" amount="-5"/>
+        <kerning first="115" second="98" amount="-2"/>
+        <kerning first="115" second="108" amount="-2"/>
+        <kerning first="115" second="63" amount="-5"/>
+        <kerning first="115" second="107" amount="-2"/>
+        <kerning first="115" second="121" amount="-5"/>
+        <kerning first="115" second="115" amount="-5"/>
+        <kerning first="115" second="104" amount="-3"/>
+        <kerning first="115" second="105" amount="-6"/>
+        <kerning first="115" second="59" amount="-8"/>
+        <kerning first="115" second="101" amount="-4"/>
+        <kerning first="115" second="97" amount="-5"/>
+        <kerning first="115" second="118" amount="-2"/>
+        <kerning first="115" second="119" amount="-3"/>
+        <kerning first="115" second="111" amount="-6"/>
+        <kerning first="115" second="99" amount="-6"/>
+        <kerning first="115" second="109" amount="-5"/>
+        <kerning first="115" second="117" amount="-6"/>
+        <kerning first="115" second="114" amount="-6"/>
+        <kerning first="115" second="110" amount="-6"/>
+        <kerning first="115" second="58" amount="-2"/>
+        <kerning first="115" second="44" amount="-4"/>
+        <kerning first="115" second="45" amount="-8"/>
+        <kerning first="56" second="53" amount="-6"/>
+        <kerning first="56" second="47" amount="-6"/>
+        <kerning first="56" second="92" amount="-15"/>
+        <kerning first="56" second="57" amount="-5"/>
+        <kerning first="56" second="51" amount="-7"/>
+        <kerning first="56" second="54" amount="-3"/>
+        <kerning first="56" second="55" amount="-5"/>
+        <kerning first="56" second="52" amount="-3"/>
+        <kerning first="56" second="56" amount="-3"/>
+        <kerning first="56" second="37" amount="-7"/>
+        <kerning first="56" second="60" amount="-2"/>
+        <kerning first="56" second="48" amount="-4"/>
+        <kerning first="56" second="50" amount="-3"/>
+        <kerning first="56" second="43" amount="-6"/>
+        <kerning first="56" second="114" amount="-5"/>
+        <kerning first="56" second="44" amount="-4"/>
+        <kerning first="56" second="61" amount="-5"/>
+        <kerning first="56" second="46" amount="-4"/>
+        <kerning first="56" second="45" amount="-7"/>
+        <kerning first="90" second="71" amount="-4"/>
+        <kerning first="90" second="88" amount="-2"/>
+        <kerning first="90" second="69" amount="-4"/>
+        <kerning first="90" second="63" amount="-8"/>
+        <kerning first="90" second="121" amount="-3"/>
+        <kerning first="90" second="90" amount="-1"/>
+        <kerning first="90" second="104" amount="-6"/>
+        <kerning first="90" second="105" amount="-5"/>
+        <kerning first="90" second="79" amount="-4"/>
+        <kerning first="90" second="101" amount="-9"/>
+        <kerning first="90" second="97" amount="-2"/>
+        <kerning first="90" second="117" amount="-4"/>
+        <kerning first="90" second="46" amount="-2"/>
+        <kerning first="90" second="45" amount="-11"/>
+        <kerning first="78" second="83" amount="-4"/>
+        <kerning first="78" second="71" amount="-5"/>
+        <kerning first="78" second="74" amount="-10"/>
+        <kerning first="78" second="66" amount="-6"/>
+        <kerning first="78" second="89" amount="-3"/>
+        <kerning first="78" second="65" amount="-4"/>
+        <kerning first="78" second="72" amount="-5"/>
+        <kerning first="78" second="67" amount="-7"/>
+        <kerning first="78" second="76" amount="-7"/>
+        <kerning first="78" second="77" amount="-6"/>
+        <kerning first="78" second="70" amount="-3"/>
+        <kerning first="78" second="69" amount="-4"/>
+        <kerning first="78" second="75" amount="-6"/>
+        <kerning first="78" second="63" amount="-9"/>
+        <kerning first="78" second="121" amount="-5"/>
+        <kerning first="78" second="78" amount="-5"/>
+        <kerning first="78" second="84" amount="4"/>
+        <kerning first="78" second="105" amount="-6"/>
+        <kerning first="78" second="79" amount="-5"/>
+        <kerning first="78" second="86" amount="-2"/>
+        <kerning first="78" second="101" amount="-4"/>
+        <kerning first="78" second="97" amount="-7"/>
+        <kerning first="78" second="111" amount="-6"/>
+        <kerning first="78" second="117" amount="-6"/>
+        <kerning first="78" second="44" amount="-7"/>
+        <kerning first="78" second="39" amount="-2"/>
+        <kerning first="78" second="46" amount="-6"/>
+        <kerning first="78" second="45" amount="-7"/>
+        <kerning first="84" second="71" amount="-3"/>
+        <kerning first="84" second="81" amount="-5"/>
+        <kerning first="84" second="88" amount="7"/>
+        <kerning first="84" second="89" amount="5"/>
+        <kerning first="84" second="65" amount="-6"/>
+        <kerning first="84" second="72" amount="-4"/>
+        <kerning first="84" second="82" amount="3"/>
+        <kerning first="84" second="33" amount="-4"/>
+        <kerning first="84" second="67" amount="-6"/>
+        <kerning first="84" second="87" amount="2"/>
+        <kerning first="84" second="69" amount="2"/>
+        <kerning first="84" second="121" amount="-13"/>
+        <kerning first="84" second="115" amount="-10"/>
+        <kerning first="84" second="78" amount="2"/>
+        <kerning first="84" second="84" amount="3"/>
+        <kerning first="84" second="104" amount="-8"/>
+        <kerning first="84" second="105" amount="-5"/>
+        <kerning first="84" second="79" amount="-4"/>
+        <kerning first="84" second="101" amount="-4"/>
+        <kerning first="84" second="97" amount="-11"/>
+        <kerning first="84" second="119" amount="-13"/>
+        <kerning first="84" second="111" amount="-12"/>
+        <kerning first="84" second="122" amount="-1"/>
+        <kerning first="84" second="109" amount="-4"/>
+        <kerning first="84" second="114" amount="-13"/>
+        <kerning first="84" second="58" amount="-3"/>
+        <kerning first="84" second="46" amount="-6"/>
+        <kerning first="84" second="45" amount="-13"/>
+        <kerning first="104" second="102" amount="-4"/>
+        <kerning first="104" second="106" amount="-5"/>
+        <kerning first="104" second="116" amount="-6"/>
+        <kerning first="104" second="100" amount="-2"/>
+        <kerning first="104" second="103" amount="-2"/>
+        <kerning first="104" second="108" amount="-6"/>
+        <kerning first="104" second="121" amount="-2"/>
+        <kerning first="104" second="115" amount="-6"/>
+        <kerning first="104" second="104" amount="-4"/>
+        <kerning first="104" second="105" amount="-3"/>
+        <kerning first="104" second="59" amount="2"/>
+        <kerning first="104" second="101" amount="-1"/>
+        <kerning first="104" second="97" amount="-2"/>
+        <kerning first="104" second="119" amount="-2"/>
+        <kerning first="104" second="111" amount="-2"/>
+        <kerning first="104" second="109" amount="-4"/>
+        <kerning first="104" second="117" amount="-3"/>
+        <kerning first="104" second="114" amount="-4"/>
+        <kerning first="104" second="58" amount="7"/>
+        <kerning first="104" second="44" amount="7"/>
+        <kerning first="104" second="46" amount="7"/>
+        <kerning first="104" second="45" amount="-6"/>
+        <kerning first="62" second="53" amount="-2"/>
+        <kerning first="62" second="51" amount="-5"/>
+        <kerning first="62" second="54" amount="-4"/>
+        <kerning first="62" second="55" amount="-7"/>
+        <kerning first="62" second="56" amount="-3"/>
+        <kerning first="62" second="48" amount="-3"/>
+        <kerning first="62" second="49" amount="-5"/>
+        <kerning first="62" second="50" amount="-7"/>
+        <kerning first="60" second="53" amount="-5"/>
+        <kerning first="60" second="57" amount="-6"/>
+        <kerning first="60" second="51" amount="-7"/>
+        <kerning first="60" second="52" amount="-9"/>
+        <kerning first="60" second="56" amount="-2"/>
+        <kerning first="60" second="48" amount="-3"/>
+        <kerning first="60" second="49" amount="-5"/>
+        <kerning first="60" second="50" amount="-2"/>
+        <kerning first="35" second="51" amount="-2"/>
+        <kerning first="105" second="102" amount="-5"/>
+        <kerning first="105" second="106" amount="-6"/>
+        <kerning first="105" second="116" amount="-8"/>
+        <kerning first="105" second="100" amount="-4"/>
+        <kerning first="105" second="112" amount="-6"/>
+        <kerning first="105" second="33" amount="-2"/>
+        <kerning first="105" second="103" amount="-5"/>
+        <kerning first="105" second="98" amount="-6"/>
+        <kerning first="105" second="55" amount="-3"/>
+        <kerning first="105" second="108" amount="-9"/>
+        <kerning first="105" second="63" amount="-2"/>
+        <kerning first="105" second="107" amount="-5"/>
+        <kerning first="105" second="121" amount="-4"/>
+        <kerning first="105" second="115" amount="-6"/>
+        <kerning first="105" second="104" amount="-7"/>
+        <kerning first="105" second="105" amount="-5"/>
+        <kerning first="105" second="59" amount="-1"/>
+        <kerning first="105" second="101" amount="-4"/>
+        <kerning first="105" second="97" amount="-4"/>
+        <kerning first="105" second="118" amount="-4"/>
+        <kerning first="105" second="111" amount="-5"/>
+        <kerning first="105" second="122" amount="-6"/>
+        <kerning first="105" second="99" amount="-5"/>
+        <kerning first="105" second="109" amount="-10"/>
+        <kerning first="105" second="117" amount="-5"/>
+        <kerning first="105" second="114" amount="-5"/>
+        <kerning first="105" second="110" amount="-8"/>
+        <kerning first="105" second="58" amount="4"/>
+        <kerning first="105" second="44" amount="5"/>
+        <kerning first="105" second="46" amount="4"/>
+        <kerning first="105" second="45" amount="-8"/>
+        <kerning first="79" second="83" amount="-5"/>
+        <kerning first="79" second="71" amount="-4"/>
+        <kerning first="79" second="66" amount="-7"/>
+        <kerning first="79" second="88" amount="-7"/>
+        <kerning first="79" second="89" amount="-7"/>
+        <kerning first="79" second="85" amount="-4"/>
+        <kerning first="79" second="65" amount="-1"/>
+        <kerning first="79" second="72" amount="-2"/>
+        <kerning first="79" second="82" amount="-5"/>
+        <kerning first="79" second="100" amount="-3"/>
+        <kerning first="79" second="80" amount="-6"/>
+        <kerning first="79" second="112" amount="-2"/>
+        <kerning first="79" second="113" amount="-3"/>
+        <kerning first="79" second="33" amount="-10"/>
+        <kerning first="79" second="67" amount="-4"/>
+        <kerning first="79" second="103" amount="-3"/>
+        <kerning first="79" second="98" amount="-3"/>
+        <kerning first="79" second="87" amount="-5"/>
+        <kerning first="79" second="76" amount="-5"/>
+        <kerning first="79" second="77" amount="-5"/>
+        <kerning first="79" second="69" amount="-3"/>
+        <kerning first="79" second="75" amount="-5"/>
+        <kerning first="79" second="108" amount="-3"/>
+        <kerning first="79" second="63" amount="-7"/>
+        <kerning first="79" second="107" amount="-3"/>
+        <kerning first="79" second="73" amount="-6"/>
+        <kerning first="79" second="115" amount="-1"/>
+        <kerning first="79" second="78" amount="-5"/>
+        <kerning first="79" second="84" amount="-6"/>
+        <kerning first="79" second="104" amount="-3"/>
+        <kerning first="79" second="105" amount="-4"/>
+        <kerning first="79" second="79" amount="-4"/>
+        <kerning first="79" second="86" amount="-4"/>
+        <kerning first="79" second="101" amount="-2"/>
+        <kerning first="79" second="97" amount="-4"/>
+        <kerning first="79" second="118" amount="-4"/>
+        <kerning first="79" second="111" amount="-3"/>
+        <kerning first="79" second="122" amount="-3"/>
+        <kerning first="79" second="99" amount="-3"/>
+        <kerning first="79" second="109" amount="-4"/>
+        <kerning first="79" second="117" amount="-3"/>
+        <kerning first="79" second="114" amount="-3"/>
+        <kerning first="79" second="110" amount="-3"/>
+        <kerning first="79" second="44" amount="-9"/>
+        <kerning first="79" second="46" amount="-5"/>
+        <kerning first="79" second="45" amount="-7"/>
+        <kerning first="86" second="71" amount="-6"/>
+        <kerning first="86" second="74" amount="-5"/>
+        <kerning first="86" second="66" amount="-2"/>
+        <kerning first="86" second="81" amount="-7"/>
+        <kerning first="86" second="67" amount="-7"/>
+        <kerning first="86" second="87" amount="-1"/>
+        <kerning first="86" second="77" amount="-1"/>
+        <kerning first="86" second="69" amount="-1"/>
+        <kerning first="86" second="75" amount="-2"/>
+        <kerning first="86" second="63" amount="-4"/>
+        <kerning first="86" second="121" amount="-9"/>
+        <kerning first="86" second="73" amount="2"/>
+        <kerning first="86" second="105" amount="-4"/>
+        <kerning first="86" second="86" amount="2"/>
+        <kerning first="86" second="120" amount="-7"/>
+        <kerning first="86" second="59" amount="-11"/>
+        <kerning first="86" second="101" amount="-8"/>
+        <kerning first="86" second="97" amount="-11"/>
+        <kerning first="86" second="111" amount="-10"/>
+        <kerning first="86" second="117" amount="-6"/>
+        <kerning first="86" second="114" amount="-6"/>
+        <kerning first="86" second="58" amount="-6"/>
+        <kerning first="86" second="44" amount="-14"/>
+        <kerning first="86" second="46" amount="-12"/>
+        <kerning first="86" second="45" amount="-12"/>
+        <kerning first="48" second="53" amount="-3"/>
+        <kerning first="48" second="47" amount="-9"/>
+        <kerning first="48" second="92" amount="-19"/>
+        <kerning first="48" second="51" amount="-8"/>
+        <kerning first="48" second="54" amount="-3"/>
+        <kerning first="48" second="55" amount="-9"/>
+        <kerning first="48" second="52" amount="-1"/>
+        <kerning first="48" second="56" amount="-3"/>
+        <kerning first="48" second="37" amount="-4"/>
+        <kerning first="48" second="62" amount="-1"/>
+        <kerning first="48" second="60" amount="-1"/>
+        <kerning first="48" second="48" amount="-5"/>
+        <kerning first="48" second="50" amount="-5"/>
+        <kerning first="48" second="43" amount="-6"/>
+        <kerning first="48" second="44" amount="-4"/>
+        <kerning first="48" second="61" amount="-4"/>
+        <kerning first="48" second="46" amount="-4"/>
+        <kerning first="48" second="45" amount="-6"/>
+        <kerning first="49" second="47" amount="-7"/>
+        <kerning first="49" second="92" amount="-10"/>
+        <kerning first="49" second="51" amount="-7"/>
+        <kerning first="49" second="52" amount="-3"/>
+        <kerning first="49" second="37" amount="-5"/>
+        <kerning first="49" second="60" amount="-2"/>
+        <kerning first="49" second="49" amount="-5"/>
+        <kerning first="49" second="50" amount="-6"/>
+        <kerning first="49" second="43" amount="-5"/>
+        <kerning first="49" second="44" amount="-5"/>
+        <kerning first="49" second="61" amount="-5"/>
+        <kerning first="49" second="46" amount="-4"/>
+        <kerning first="49" second="45" amount="-11"/>
+        <kerning first="120" second="100" amount="-1"/>
+        <kerning first="120" second="113" amount="-1"/>
+        <kerning first="120" second="33" amount="-6"/>
+        <kerning first="120" second="103" amount="-3"/>
+        <kerning first="120" second="108" amount="-5"/>
+        <kerning first="120" second="63" amount="-7"/>
+        <kerning first="120" second="105" amount="-5"/>
+        <kerning first="120" second="59" amount="-6"/>
+        <kerning first="120" second="101" amount="-3"/>
+        <kerning first="120" second="97" amount="-7"/>
+        <kerning first="120" second="111" amount="-1"/>
+        <kerning first="120" second="99" amount="-4"/>
+        <kerning first="120" second="110" amount="-3"/>
+        <kerning first="120" second="45" amount="-7"/>
+        <kerning first="50" second="53" amount="-4"/>
+        <kerning first="50" second="47" amount="-5"/>
+        <kerning first="50" second="92" amount="-16"/>
+        <kerning first="50" second="57" amount="-7"/>
+        <kerning first="50" second="51" amount="-9"/>
+        <kerning first="50" second="54" amount="-1"/>
+        <kerning first="50" second="55" amount="-3"/>
+        <kerning first="50" second="52" amount="-8"/>
+        <kerning first="50" second="37" amount="-7"/>
+        <kerning first="50" second="60" amount="-4"/>
+        <kerning first="50" second="48" amount="-2"/>
+        <kerning first="50" second="50" amount="-1"/>
+        <kerning first="50" second="43" amount="-8"/>
+        <kerning first="50" second="44" amount="-1"/>
+        <kerning first="50" second="61" amount="-7"/>
+        <kerning first="50" second="46" amount="-1"/>
+        <kerning first="50" second="45" amount="-11"/>
+        <kerning first="59" second="109" amount="-4"/>
+        <kerning first="101" second="102" amount="-3"/>
+        <kerning first="101" second="64" amount="-2"/>
+        <kerning first="101" second="106" amount="-8"/>
+        <kerning first="101" second="116" amount="-4"/>
+        <kerning first="101" second="100" amount="-8"/>
+        <kerning first="101" second="112" amount="-7"/>
+        <kerning first="101" second="33" amount="-5"/>
+        <kerning first="101" second="103" amount="-7"/>
+        <kerning first="101" second="98" amount="-9"/>
+        <kerning first="101" second="108" amount="-8"/>
+        <kerning first="101" second="107" amount="-7"/>
+        <kerning first="101" second="121" amount="-8"/>
+        <kerning first="101" second="115" amount="-7"/>
+        <kerning first="101" second="104" amount="-8"/>
+        <kerning first="101" second="105" amount="-9"/>
+        <kerning first="101" second="120" amount="-10"/>
+        <kerning first="101" second="59" amount="-4"/>
+        <kerning first="101" second="101" amount="-6"/>
+        <kerning first="101" second="97" amount="-7"/>
+        <kerning first="101" second="118" amount="-8"/>
+        <kerning first="101" second="119" amount="-6"/>
+        <kerning first="101" second="111" amount="-8"/>
+        <kerning first="101" second="122" amount="-6"/>
+        <kerning first="101" second="99" amount="-9"/>
+        <kerning first="101" second="109" amount="-10"/>
+        <kerning first="101" second="117" amount="-8"/>
+        <kerning first="101" second="114" amount="-9"/>
+        <kerning first="101" second="110" amount="-10"/>
+        <kerning first="101" second="39" amount="1"/>
+        <kerning first="101" second="46" amount="1"/>
+        <kerning first="101" second="45" amount="-8"/>
+        <kerning first="97" second="102" amount="-7"/>
+        <kerning first="97" second="106" amount="-8"/>
+        <kerning first="97" second="116" amount="-5"/>
+        <kerning first="97" second="100" amount="-7"/>
+        <kerning first="97" second="112" amount="-6"/>
+        <kerning first="97" second="33" amount="-5"/>
+        <kerning first="97" second="103" amount="-6"/>
+        <kerning first="97" second="98" amount="-7"/>
+        <kerning first="97" second="108" amount="-9"/>
+        <kerning first="97" second="63" amount="-4"/>
+        <kerning first="97" second="107" amount="-7"/>
+        <kerning first="97" second="121" amount="-7"/>
+        <kerning first="97" second="115" amount="-7"/>
+        <kerning first="97" second="104" amount="-8"/>
+        <kerning first="97" second="105" amount="-8"/>
+        <kerning first="97" second="120" amount="-8"/>
+        <kerning first="97" second="59" amount="-2"/>
+        <kerning first="97" second="101" amount="-5"/>
+        <kerning first="97" second="97" amount="-6"/>
+        <kerning first="97" second="118" amount="-6"/>
+        <kerning first="97" second="119" amount="-3"/>
+        <kerning first="97" second="111" amount="-7"/>
+        <kerning first="97" second="122" amount="-4"/>
+        <kerning first="97" second="99" amount="-7"/>
+        <kerning first="97" second="109" amount="-9"/>
+        <kerning first="97" second="117" amount="-7"/>
+        <kerning first="97" second="114" amount="-8"/>
+        <kerning first="97" second="110" amount="-8"/>
+        <kerning first="97" second="46" amount="3"/>
+        <kerning first="97" second="45" amount="-6"/>
+        <kerning first="118" second="100" amount="-7"/>
+        <kerning first="118" second="33" amount="-8"/>
+        <kerning first="118" second="103" amount="-6"/>
+        <kerning first="118" second="98" amount="-5"/>
+        <kerning first="118" second="108" amount="-7"/>
+        <kerning first="118" second="63" amount="-6"/>
+        <kerning first="118" second="121" amount="-7"/>
+        <kerning first="118" second="115" amount="-7"/>
+        <kerning first="118" second="104" amount="-5"/>
+        <kerning first="118" second="105" amount="-6"/>
+        <kerning first="118" second="120" amount="-4"/>
+        <kerning first="118" second="59" amount="-6"/>
+        <kerning first="118" second="101" amount="-5"/>
+        <kerning first="118" second="97" amount="-7"/>
+        <kerning first="118" second="118" amount="-3"/>
+        <kerning first="118" second="111" amount="-6"/>
+        <kerning first="118" second="122" amount="-3"/>
+        <kerning first="118" second="99" amount="-5"/>
+        <kerning first="118" second="114" amount="-4"/>
+        <kerning first="118" second="110" amount="-5"/>
+        <kerning first="118" second="44" amount="-8"/>
+        <kerning first="118" second="46" amount="-6"/>
+        <kerning first="118" second="45" amount="-5"/>
+        <kerning first="119" second="102" amount="-5"/>
+        <kerning first="119" second="106" amount="-7"/>
+        <kerning first="119" second="116" amount="-5"/>
+        <kerning first="119" second="100" amount="-4"/>
+        <kerning first="119" second="112" amount="-5"/>
+        <kerning first="119" second="113" amount="-5"/>
+        <kerning first="119" second="33" amount="-11"/>
+        <kerning first="119" second="103" amount="-4"/>
+        <kerning first="119" second="98" amount="-7"/>
+        <kerning first="119" second="108" amount="-7"/>
+        <kerning first="119" second="63" amount="-8"/>
+        <kerning first="119" second="107" amount="-5"/>
+        <kerning first="119" second="121" amount="-5"/>
+        <kerning first="119" second="115" amount="-6"/>
+        <kerning first="119" second="104" amount="-7"/>
+        <kerning first="119" second="105" amount="-6"/>
+        <kerning first="119" second="120" amount="-4"/>
+        <kerning first="119" second="59" amount="-9"/>
+        <kerning first="119" second="101" amount="-5"/>
+        <kerning first="119" second="97" amount="-6"/>
+        <kerning first="119" second="119" amount="-4"/>
+        <kerning first="119" second="111" amount="-7"/>
+        <kerning first="119" second="99" amount="-3"/>
+        <kerning first="119" second="109" amount="-8"/>
+        <kerning first="119" second="117" amount="-7"/>
+        <kerning first="119" second="114" amount="-7"/>
+        <kerning first="119" second="110" amount="-7"/>
+        <kerning first="119" second="44" amount="-5"/>
+        <kerning first="119" second="46" amount="-4"/>
+        <kerning first="119" second="45" amount="-7"/>
+        <kerning first="119" second="32" amount="4"/>
+        <kerning first="111" second="102" amount="-4"/>
+        <kerning first="111" second="106" amount="-7"/>
+        <kerning first="111" second="116" amount="-3"/>
+        <kerning first="111" second="100" amount="-5"/>
+        <kerning first="111" second="112" amount="-7"/>
+        <kerning first="111" second="33" amount="-11"/>
+        <kerning first="111" second="103" amount="-5"/>
+        <kerning first="111" second="98" amount="-7"/>
+        <kerning first="111" second="108" amount="-7"/>
+        <kerning first="111" second="63" amount="-8"/>
+        <kerning first="111" second="107" amount="-7"/>
+        <kerning first="111" second="121" amount="-4"/>
+        <kerning first="111" second="115" amount="-9"/>
+        <kerning first="111" second="104" amount="-7"/>
+        <kerning first="111" second="105" amount="-8"/>
+        <kerning first="111" second="120" amount="-5"/>
+        <kerning first="111" second="59" amount="-8"/>
+        <kerning first="111" second="101" amount="-6"/>
+        <kerning first="111" second="97" amount="-8"/>
+        <kerning first="111" second="118" amount="-7"/>
+        <kerning first="111" second="119" amount="-8"/>
+        <kerning first="111" second="111" amount="-8"/>
+        <kerning first="111" second="122" amount="-7"/>
+        <kerning first="111" second="99" amount="-7"/>
+        <kerning first="111" second="109" amount="-7"/>
+        <kerning first="111" second="117" amount="-7"/>
+        <kerning first="111" second="114" amount="-7"/>
+        <kerning first="111" second="110" amount="-7"/>
+        <kerning first="111" second="58" amount="-3"/>
+        <kerning first="111" second="44" amount="-7"/>
+        <kerning first="111" second="39" amount="-2"/>
+        <kerning first="111" second="46" amount="-5"/>
+        <kerning first="111" second="45" amount="-9"/>
+        <kerning first="122" second="100" amount="1"/>
+        <kerning first="122" second="63" amount="-5"/>
+        <kerning first="122" second="121" amount="-9"/>
+        <kerning first="122" second="105" amount="-7"/>
+        <kerning first="122" second="101" amount="-5"/>
+        <kerning first="122" second="118" amount="-2"/>
+        <kerning first="122" second="111" amount="-8"/>
+        <kerning first="122" second="58" amount="2"/>
+        <kerning first="122" second="44" amount="2"/>
+        <kerning first="122" second="46" amount="2"/>
+        <kerning first="122" second="45" amount="-9"/>
+        <kerning first="42" second="99" amount="-10"/>
+        <kerning first="99" second="71" amount="-3"/>
+        <kerning first="99" second="116" amount="-9"/>
+        <kerning first="99" second="100" amount="-9"/>
+        <kerning first="99" second="33" amount="-7"/>
+        <kerning first="99" second="98" amount="-10"/>
+        <kerning first="99" second="108" amount="-12"/>
+        <kerning first="99" second="107" amount="-9"/>
+        <kerning first="99" second="121" amount="-8"/>
+        <kerning first="99" second="104" amount="-11"/>
+        <kerning first="99" second="105" amount="-10"/>
+        <kerning first="99" second="120" amount="-3"/>
+        <kerning first="99" second="59" amount="-5"/>
+        <kerning first="99" second="101" amount="-8"/>
+        <kerning first="99" second="97" amount="-9"/>
+        <kerning first="99" second="118" amount="-4"/>
+        <kerning first="99" second="111" amount="-9"/>
+        <kerning first="99" second="99" amount="-9"/>
+        <kerning first="99" second="109" amount="-5"/>
+        <kerning first="99" second="117" amount="-9"/>
+        <kerning first="99" second="114" amount="-10"/>
+        <kerning first="99" second="110" amount="-10"/>
+        <kerning first="99" second="46" amount="-1"/>
+        <kerning first="99" second="45" amount="-5"/>
+        <kerning first="109" second="102" amount="-4"/>
+        <kerning first="109" second="106" amount="-5"/>
+        <kerning first="109" second="100" amount="-3"/>
+        <kerning first="109" second="112" amount="-3"/>
+        <kerning first="109" second="98" amount="-4"/>
+        <kerning first="109" second="107" amount="-2"/>
+        <kerning first="109" second="121" amount="-2"/>
+        <kerning first="109" second="115" amount="-6"/>
+        <kerning first="109" second="104" amount="-5"/>
+        <kerning first="109" second="105" amount="-4"/>
+        <kerning first="109" second="120" amount="-5"/>
+        <kerning first="109" second="59" amount="2"/>
+        <kerning first="109" second="101" amount="-2"/>
+        <kerning first="109" second="97" amount="-2"/>
+        <kerning first="109" second="111" amount="-2"/>
+        <kerning first="109" second="109" amount="-8"/>
+        <kerning first="109" second="117" amount="-3"/>
+        <kerning first="109" second="114" amount="-4"/>
+        <kerning first="109" second="110" amount="-7"/>
+        <kerning first="109" second="58" amount="7"/>
+        <kerning first="109" second="44" amount="6"/>
+        <kerning first="109" second="46" amount="9"/>
+        <kerning first="109" second="45" amount="-4"/>
+        <kerning first="117" second="102" amount="-7"/>
+        <kerning first="117" second="106" amount="-8"/>
+        <kerning first="117" second="116" amount="-8"/>
+        <kerning first="117" second="112" amount="-7"/>
+        <kerning first="117" second="33" amount="-4"/>
+        <kerning first="117" second="67" amount="-7"/>
+        <kerning first="117" second="51" amount="-7"/>
+        <kerning first="117" second="103" amount="-7"/>
+        <kerning first="117" second="98" amount="-8"/>
+        <kerning first="117" second="108" amount="-11"/>
+        <kerning first="117" second="63" amount="-4"/>
+        <kerning first="117" second="107" amount="-8"/>
+        <kerning first="117" second="121" amount="-7"/>
+        <kerning first="117" second="115" amount="-9"/>
+        <kerning first="117" second="104" amount="-8"/>
+        <kerning first="117" second="105" amount="-8"/>
+        <kerning first="117" second="120" amount="-8"/>
+        <kerning first="117" second="59" amount="-3"/>
+        <kerning first="117" second="101" amount="-6"/>
+        <kerning first="117" second="118" amount="-6"/>
+        <kerning first="117" second="119" amount="-7"/>
+        <kerning first="117" second="111" amount="-7"/>
+        <kerning first="117" second="99" amount="-7"/>
+        <kerning first="117" second="109" amount="-8"/>
+        <kerning first="117" second="117" amount="-8"/>
+        <kerning first="117" second="114" amount="-7"/>
+        <kerning first="117" second="110" amount="-9"/>
+        <kerning first="117" second="58" amount="3"/>
+        <kerning first="117" second="44" amount="3"/>
+        <kerning first="117" second="39" amount="1"/>
+        <kerning first="117" second="46" amount="3"/>
+        <kerning first="117" second="45" amount="-11"/>
+        <kerning first="43" second="53" amount="-5"/>
+        <kerning first="43" second="57" amount="-3"/>
+        <kerning first="43" second="51" amount="-7"/>
+        <kerning first="43" second="54" amount="-8"/>
+        <kerning first="43" second="55" amount="-5"/>
+        <kerning first="43" second="52" amount="-7"/>
+        <kerning first="43" second="56" amount="-8"/>
+        <kerning first="43" second="48" amount="-6"/>
+        <kerning first="43" second="49" amount="-8"/>
+        <kerning first="43" second="50" amount="-10"/>
+        <kerning first="43" second="61" amount="-3"/>
+        <kerning first="114" second="106" amount="-3"/>
+        <kerning first="114" second="100" amount="-5"/>
+        <kerning first="114" second="112" amount="-2"/>
+        <kerning first="114" second="113" amount="-2"/>
+        <kerning first="114" second="33" amount="-7"/>
+        <kerning first="114" second="51" amount="-4"/>
+        <kerning first="114" second="103" amount="-4"/>
+        <kerning first="114" second="108" amount="-4"/>
+        <kerning first="114" second="63" amount="-4"/>
+        <kerning first="114" second="107" amount="-2"/>
+        <kerning first="114" second="121" amount="-4"/>
+        <kerning first="114" second="115" amount="-2"/>
+        <kerning first="114" second="104" amount="-3"/>
+        <kerning first="114" second="105" amount="-4"/>
+        <kerning first="114" second="59" amount="-4"/>
+        <kerning first="114" second="101" amount="-2"/>
+        <kerning first="114" second="97" amount="-6"/>
+        <kerning first="114" second="118" amount="1"/>
+        <kerning first="114" second="119" amount="-2"/>
+        <kerning first="114" second="111" amount="-6"/>
+        <kerning first="114" second="99" amount="-5"/>
+        <kerning first="114" second="109" amount="-2"/>
+        <kerning first="114" second="117" amount="-2"/>
+        <kerning first="114" second="114" amount="-3"/>
+        <kerning first="114" second="110" amount="-2"/>
+        <kerning first="114" second="44" amount="-15"/>
+        <kerning first="114" second="46" amount="-6"/>
+        <kerning first="114" second="45" amount="-4"/>
+        <kerning first="110" second="102" amount="-4"/>
+        <kerning first="110" second="106" amount="-5"/>
+        <kerning first="110" second="116" amount="-7"/>
+        <kerning first="110" second="100" amount="-2"/>
+        <kerning first="110" second="33" amount="1"/>
+        <kerning first="110" second="103" amount="-2"/>
+        <kerning first="110" second="98" amount="-4"/>
+        <kerning first="110" second="108" amount="-6"/>
+        <kerning first="110" second="107" amount="-2"/>
+        <kerning first="110" second="121" amount="-2"/>
+        <kerning first="110" second="115" amount="-5"/>
+        <kerning first="110" second="105" amount="-3"/>
+        <kerning first="110" second="120" amount="-5"/>
+        <kerning first="110" second="59" amount="2"/>
+        <kerning first="110" second="101" amount="-1"/>
+        <kerning first="110" second="97" amount="-2"/>
+        <kerning first="110" second="118" amount="-3"/>
+        <kerning first="110" second="111" amount="-2"/>
+        <kerning first="110" second="122" amount="-5"/>
+        <kerning first="110" second="99" amount="-3"/>
+        <kerning first="110" second="109" amount="-5"/>
+        <kerning first="110" second="117" amount="-3"/>
+        <kerning first="110" second="110" amount="-6"/>
+        <kerning first="110" second="58" amount="7"/>
+        <kerning first="110" second="44" amount="7"/>
+        <kerning first="110" second="39" amount="-1"/>
+        <kerning first="110" second="46" amount="8"/>
+        <kerning first="110" second="45" amount="-5"/>
+        <kerning first="44" second="53" amount="-5"/>
+        <kerning first="44" second="57" amount="-8"/>
+        <kerning first="44" second="51" amount="-5"/>
+        <kerning first="44" second="98" amount="-4"/>
+        <kerning first="44" second="54" amount="-3"/>
+        <kerning first="44" second="55" amount="-3"/>
+        <kerning first="44" second="52" amount="-10"/>
+        <kerning first="44" second="56" amount="-2"/>
+        <kerning first="44" second="48" amount="-3"/>
+        <kerning first="44" second="50" amount="-4"/>
+        <kerning first="44" second="99" amount="-1"/>
+        <kerning first="44" second="110" amount="-4"/>
+        <kerning first="61" second="53" amount="-3"/>
+        <kerning first="61" second="57" amount="-3"/>
+        <kerning first="61" second="51" amount="-5"/>
+        <kerning first="61" second="54" amount="-5"/>
+        <kerning first="61" second="55" amount="-3"/>
+        <kerning first="61" second="52" amount="-1"/>
+        <kerning first="61" second="56" amount="-6"/>
+        <kerning first="61" second="48" amount="-7"/>
+        <kerning first="61" second="49" amount="-6"/>
+        <kerning first="61" second="50" amount="-8"/>
+        <kerning first="61" second="43" amount="-1"/>
+        <kerning first="61" second="61" amount="-2"/>
+        <kerning first="61" second="45" amount="-5"/>
+        <kerning first="34" second="102" amount="-4"/>
+        <kerning first="34" second="83" amount="-3"/>
+        <kerning first="34" second="71" amount="-10"/>
+        <kerning first="34" second="74" amount="-5"/>
+        <kerning first="34" second="66" amount="2"/>
+        <kerning first="34" second="53" amount="-3"/>
+        <kerning first="34" second="81" amount="-12"/>
+        <kerning first="34" second="68" amount="-3"/>
+        <kerning first="34" second="88" amount="-3"/>
+        <kerning first="34" second="85" amount="-5"/>
+        <kerning first="34" second="116" amount="-3"/>
+        <kerning first="34" second="65" amount="-10"/>
+        <kerning first="34" second="72" amount="-9"/>
+        <kerning first="34" second="100" amount="-10"/>
+        <kerning first="34" second="57" amount="-4"/>
+        <kerning first="34" second="112" amount="-1"/>
+        <kerning first="34" second="113" amount="-10"/>
+        <kerning first="34" second="67" amount="-9"/>
+        <kerning first="34" second="51" amount="-4"/>
+        <kerning first="34" second="103" amount="-8"/>
+        <kerning first="34" second="98" amount="-4"/>
+        <kerning first="34" second="87" amount="-5"/>
+        <kerning first="34" second="76" amount="-7"/>
+        <kerning first="34" second="77" amount="-5"/>
+        <kerning first="34" second="54" amount="-8"/>
+        <kerning first="34" second="69" amount="-5"/>
+        <kerning first="34" second="75" amount="-6"/>
+        <kerning first="34" second="108" amount="-6"/>
+        <kerning first="34" second="52" amount="-10"/>
+        <kerning first="34" second="107" amount="-5"/>
+        <kerning first="34" second="121" amount="-8"/>
+        <kerning first="34" second="115" amount="-3"/>
+        <kerning first="34" second="56" amount="-9"/>
+        <kerning first="34" second="90" amount="-2"/>
+        <kerning first="34" second="78" amount="-4"/>
+        <kerning first="34" second="84" amount="6"/>
+        <kerning first="34" second="104" amount="-5"/>
+        <kerning first="34" second="105" amount="-7"/>
+        <kerning first="34" second="79" amount="-8"/>
+        <kerning first="34" second="86" amount="-1"/>
+        <kerning first="34" second="48" amount="-9"/>
+        <kerning first="34" second="49" amount="-7"/>
+        <kerning first="34" second="120" amount="-5"/>
+        <kerning first="34" second="50" amount="-6"/>
+        <kerning first="34" second="101" amount="-7"/>
+        <kerning first="34" second="97" amount="-10"/>
+        <kerning first="34" second="118" amount="-3"/>
+        <kerning first="34" second="119" amount="-7"/>
+        <kerning first="34" second="111" amount="-7"/>
+        <kerning first="34" second="122" amount="-5"/>
+        <kerning first="34" second="99" amount="-8"/>
+        <kerning first="34" second="109" amount="-6"/>
+        <kerning first="34" second="117" amount="-9"/>
+        <kerning first="34" second="114" amount="-6"/>
+        <kerning first="34" second="110" amount="-6"/>
+        <kerning first="39" second="116" amount="-2"/>
+        <kerning first="39" second="100" amount="-5"/>
+        <kerning first="39" second="108" amount="-6"/>
+        <kerning first="39" second="115" amount="-5"/>
+        <kerning first="39" second="84" amount="4"/>
+        <kerning first="39" second="101" amount="-3"/>
+        <kerning first="39" second="109" amount="-6"/>
+        <kerning first="39" second="114" amount="-3"/>
+        <kerning first="46" second="83" amount="-4"/>
+        <kerning first="46" second="53" amount="-4"/>
+        <kerning first="46" second="57" amount="-5"/>
+        <kerning first="46" second="51" amount="-10"/>
+        <kerning first="46" second="54" amount="-2"/>
+        <kerning first="46" second="55" amount="-6"/>
+        <kerning first="46" second="52" amount="-10"/>
+        <kerning first="46" second="56" amount="-2"/>
+        <kerning first="46" second="48" amount="-3"/>
+        <kerning first="46" second="49" amount="-3"/>
+        <kerning first="46" second="50" amount="-1"/>
+        <kerning first="46" second="99" amount="-3"/>
+        <kerning first="45" second="102" amount="-4"/>
+        <kerning first="45" second="83" amount="-8"/>
+        <kerning first="45" second="71" amount="-5"/>
+        <kerning first="45" second="74" amount="-9"/>
+        <kerning first="45" second="106" amount="-5"/>
+        <kerning first="45" second="66" amount="-8"/>
+        <kerning first="45" second="53" amount="-4"/>
+        <kerning first="45" second="81" amount="-5"/>
+        <kerning first="45" second="68" amount="-7"/>
+        <kerning first="45" second="88" amount="-10"/>
+        <kerning first="45" second="89" amount="-10"/>
+        <kerning first="45" second="85" amount="-4"/>
+        <kerning first="45" second="116" amount="-4"/>
+        <kerning first="45" second="65" amount="-6"/>
+        <kerning first="45" second="72" amount="-5"/>
+        <kerning first="45" second="82" amount="-7"/>
+        <kerning first="45" second="100" amount="-6"/>
+        <kerning first="45" second="80" amount="-8"/>
+        <kerning first="45" second="57" amount="-3"/>
+        <kerning first="45" second="112" amount="-6"/>
+        <kerning first="45" second="113" amount="-6"/>
+        <kerning first="45" second="67" amount="-6"/>
+        <kerning first="45" second="51" amount="-6"/>
+        <kerning first="45" second="103" amount="-6"/>
+        <kerning first="45" second="98" amount="-7"/>
+        <kerning first="45" second="87" amount="-8"/>
+        <kerning first="45" second="76" amount="-6"/>
+        <kerning first="45" second="77" amount="-4"/>
+        <kerning first="45" second="54" amount="-6"/>
+        <kerning first="45" second="55" amount="-9"/>
+        <kerning first="45" second="70" amount="-7"/>
+        <kerning first="45" second="69" amount="-5"/>
+        <kerning first="45" second="75" amount="-6"/>
+        <kerning first="45" second="108" amount="-6"/>
+        <kerning first="45" second="52" amount="-1"/>
+        <kerning first="45" second="107" amount="-5"/>
+        <kerning first="45" second="121" amount="-6"/>
+        <kerning first="45" second="73" amount="-8"/>
+        <kerning first="45" second="115" amount="-4"/>
+        <kerning first="45" second="56" amount="-6"/>
+        <kerning first="45" second="90" amount="-8"/>
+        <kerning first="45" second="78" amount="-5"/>
+        <kerning first="45" second="84" amount="-12"/>
+        <kerning first="45" second="104" amount="-5"/>
+        <kerning first="45" second="105" amount="-6"/>
+        <kerning first="45" second="79" amount="-4"/>
+        <kerning first="45" second="86" amount="-6"/>
+        <kerning first="45" second="48" amount="-5"/>
+        <kerning first="45" second="49" amount="-10"/>
+        <kerning first="45" second="120" amount="-8"/>
+        <kerning first="45" second="50" amount="-9"/>
+        <kerning first="45" second="101" amount="-4"/>
+        <kerning first="45" second="97" amount="-8"/>
+        <kerning first="45" second="118" amount="-5"/>
+        <kerning first="45" second="119" amount="-7"/>
+        <kerning first="45" second="111" amount="-6"/>
+        <kerning first="45" second="122" amount="-6"/>
+        <kerning first="45" second="99" amount="-7"/>
+        <kerning first="45" second="109" amount="-7"/>
+        <kerning first="45" second="117" amount="-7"/>
+        <kerning first="45" second="114" amount="-5"/>
+        <kerning first="45" second="110" amount="-6"/>
+        <kerning first="45" second="61" amount="-4"/>
+        <kerning first="45" second="45" amount="-5"/>
+    </kernings>
+</font>

二进制
public/static/images/fruit/bomb.png


二进制
public/static/images/fruit/dojo.png


二进制
public/static/images/fruit/flash.png


二进制
public/static/images/fruit/game-over.png


二进制
public/static/images/fruit/home-desc.png


二进制
public/static/images/fruit/home-mask.png


二进制
public/static/images/fruit/logo.png


二进制
public/static/images/fruit/lose.png


二进制
public/static/images/fruit/new-game.png


二进制
public/static/images/fruit/ninja.png


二进制
public/static/images/fruit/peach-1.png


二进制
public/static/images/fruit/peach-2.png


二进制
public/static/images/fruit/peach.png


二进制
public/static/images/fruit/preloader.gif


二进制
public/static/images/fruit/quit.png


二进制
public/static/images/fruit/sandia-1.png


二进制
public/static/images/fruit/sandia-2.png


二进制
public/static/images/fruit/sandia.png


二进制
public/static/images/fruit/score.png


二进制
public/static/images/fruit/shadow.png


二进制
public/static/images/fruit/smoke.png


二进制
public/static/images/fruit/x.png


二进制
public/static/images/fruit/xf.png


二进制
public/static/images/fruit/xx.png


二进制
public/static/images/fruit/xxf.png


二进制
public/static/images/fruit/xxx.png


二进制
public/static/images/fruit/xxxf.png


+ 1 - 0
src/router/index.ts

@@ -33,6 +33,7 @@ const router = createRouter({
         { path: '/game', component: () => import('@/views/game/index.vue') },
         { path: '/game/square', component: () => import('@/views/game/square.vue') },
         { path: '/game/fruit', component: () => import('@/views/game/fruit.vue') },
+        { path: '/game/fruit2', component: () => import('@/views/game/fruit2.vue') },
         { path: '/score', component: () => import('@/views/score/index.vue') },
       ]
     }

+ 1176 - 211
src/views/game/fruit.vue

@@ -1,247 +1,1212 @@
 <template>
-  <div>
-    <canvas ref="canvasRef" :width="clientObj.width" :height="clientObj.height"></canvas>
+  <div class="game-container">
+    <div id="game"></div>
   </div>
 </template>
 
 <script setup name="Fruit" lang="ts">
-import { initSpeech, speckText, playMusic, controlMusic, speckCancel, chineseNumber } from '@/utils/speech';
-import { useWebSocket } from '@/utils/bodyposeWs';
+import { onMounted, ref } from 'vue';
+import Phaser from 'phaser';
 const { proxy } = getCurrentInstance() as any;
 const router = useRouter();
-const { bodyposeWs, startDevice, checkBodypose, openBodypose, terminateBodypose, suspendBodypose, resumeBodypose, getBodyposeState, closeWS } = useWebSocket();
-const canvasRef = ref(null);
-
-const data = reactive<any>({
-  bodyposeData: {},//姿态信息
-  bodyposeState: false,//姿态识别窗口状态
-  parameter: {},//参数
-  deviceInfo: {},//设备信息
-  againNum: 0,//再次启动次数
-  againTimer: null,//定时状态
-  wsState: false,//WS状态
-  clientObj: {},//浏览器对象
-});
+// 游戏容器和尺寸相关
+const gameContainer = ref(null);
+let game = null;
+let width = 0;
+let height = 0;
+let wRatio = 1;
+let hRatio = 1;
+
+// 工具类
+const mathTool = {
+  width: 0,
+  height: 0,
+  wRatio: 1,
+  hRatio: 1,
+
+  init() {
+    this.width = width;
+    this.height = height;
+    this.wRatio = width / 640;
+    this.hRatio = height / 480;
+  },
+
+  // 计算延长线,p2往p1延长
+  calcParallel(p1, p2, L) {
+    const p = {};
+    if (p1.x === p2.x) {
+      if (p1.y - p2.y > 0) {
+        p.x = p1.x;
+        p.y = p1.y + L;
+      } else {
+        p.x = p1.x;
+        p.y = p1.y - L;
+      }
+    } else {
+      const k = (p2.y - p1.y) / (p2.x - p1.x);
+      if (p2.x - p1.x < 0) {
+        p.x = p1.x + L / Math.sqrt(1 + k * k);
+        p.y = p1.y + L * k / Math.sqrt(1 + k * k);
+      } else {
+        p.x = p1.x - L / Math.sqrt(1 + k * k);
+        p.y = p1.y - L * k / Math.sqrt(1 + k * k);
+      }
+    }
+    p.x = Math.round(p.x);
+    p.y = Math.round(p.y);
+    return new Phaser.Math.Vector2(p.x, p.y);
+  },
 
-const { bodyposeData, bodyposeState, parameter, deviceInfo, againNum, againTimer, wsState, clientObj } = toRefs(data);
-
-/**
- * 初始化
- */
-const getInit = async () => {
-  console.log("触发姿态识别")
-  let deviceid = localStorage.getItem('deviceid') || '';
-  if (!deviceid) {
-    proxy?.$modal.msgError(`请重新登录绑定设备号后使用`);
-    return false;
-  }
-  bodyposeState.value = true;
-  if (wsState.value) {
-    proxy?.$modal.msgWarning(`操作过快,请稍后重试`);
-    setTimeout(() => {
-      bodyposeState.value = false;
-    }, 1000)
-    return false;
-  }
-  speckText("正在姿态识别");
-  bodyposeWs((e: any) => {
-    console.log("bodyposeWS", e)
-    if (e?.wksid) {
-      wsState.value = true;
-      //获取设备信息
-      startDevice({ deviceid: deviceid });
-      console.log("获取设备信息")
-    }
-    if (e?.type == 'fe_device_init_result') {
-      //接收设备信息并发送请求
-      if (e?.device_info) {
-        deviceInfo.value = e.device_info;
-        getCheckBodypose();
-        console.log("返回设备信息,检查是否支持姿态识别")
+  // 计算垂直线,p2点开始垂直
+  calcVertical(p1, p2, L, isLeft) {
+    const p = {};
+    if (p1.y === p2.y) {
+      p.x = p2.x;
+      if (isLeft) {
+        if (p2.x - p1.x > 0) {
+          p.y = p2.y - L;
+        } else {
+          p.y = p2.y + L;
+        }
       } else {
-        proxy?.$modal.msgError(`设备信息缺失,请重新登录绑定设备号后使用`);
-      }
-    }
-    if (e?.cmd == 'check_bodyposecontroller_available') {
-      let handcontroller_id = deviceInfo.value.handcontroller_id;
-      if (e?.code == 0) {
-        //查看姿态识别状态,如果不处于关闭就先关闭再重新启动(可能会APP退出然后工作站还在运行的可能性)
-        getBodyposeState(handcontroller_id);
-        againNum.value = 0;
-        againTimer.value = null;
-        clearTimeout(againTimer.value);
-        console.log("查看姿态识别状态")
+        if (p2.x - p1.x > 0) {
+          p.y = p2.y + L;
+        } else {
+          p.y = p2.y - L;
+        }
+      }
+    } else {
+      const k = -(p2.x - p1.x) / (p2.y - p1.y);
+      if (isLeft) {
+        if (p2.y - p1.y > 0) {
+          p.x = p2.x + L / Math.sqrt(1 + k * k);
+          p.y = p2.y + L * k / Math.sqrt(1 + k * k);
+        } else {
+          p.x = p2.x - L / Math.sqrt(1 + k * k);
+          p.y = p2.y - L * k / Math.sqrt(1 + k * k);
+        }
       } else {
-        //尝试多次查询姿态识别状态
-        if (againNum.value <= 2) {
-          againTimer.value = setTimeout(() => {
-            getCheckBodypose();
-          }, 500)
-          againNum.value++;
+        if (p2.y - p1.y > 0) {
+          p.x = p2.x - L / Math.sqrt(1 + k * k);
+          p.y = p2.y - L * k / Math.sqrt(1 + k * k);
         } else {
-          let msg = "";
-          if (e.code == 102402) {
-            msg = `多次连接失败请重试,姿态识别模块被占用`;
-          } else {
-            msg = `多次连接失败请重试,姿态识别模块不可用,code:${e.code}`;
+          p.x = p2.x + L / Math.sqrt(1 + k * k);
+          p.y = p2.y + L * k / Math.sqrt(1 + k * k);
+        }
+      }
+    }
+    p.x = Math.round(p.x);
+    p.y = Math.round(p.y);
+    return new Phaser.Math.Vector2(p.x, p.y);
+  },
+
+  // 形成刀光点
+  generateBlade(points) {
+    const res = [];
+    if (points.length <= 0) {
+      return res;
+    } else if (points.length === 1) {
+      const oneLength = 6;
+      res.push(new Phaser.Math.Vector2(points[0].x - oneLength, points[0].y));
+      res.push(new Phaser.Math.Vector2(points[0].x, points[0].y - oneLength));
+      res.push(new Phaser.Math.Vector2(points[0].x + oneLength, points[0].y));
+      res.push(new Phaser.Math.Vector2(points[0].x, points[0].y + oneLength));
+    } else {
+      const tailLength = 10;
+      const headLength = 20;
+      const tailWidth = 1;
+      const headWidth = 6;
+      res.push(this.calcParallel(points[0], points[1], tailLength));
+
+      for (let i = 0; i < points.length - 1; i++) {
+        res.push(this.calcVertical(
+          points[i + 1],
+          points[i],
+          Math.round((headWidth - tailWidth) * i / (points.length - 1) + tailWidth),
+          true
+        ));
+      }
+
+      res.push(this.calcVertical(
+        points[points.length - 2],
+        points[points.length - 1],
+        headWidth,
+        false
+      ));
+
+      res.push(this.calcParallel(
+        points[points.length - 1],
+        points[points.length - 2],
+        headLength
+      ));
+
+      res.push(this.calcVertical(
+        points[points.length - 2],
+        points[points.length - 1],
+        headWidth,
+        true
+      ));
+
+      for (let i = points.length - 1; i > 0; i--) {
+        res.push(this.calcVertical(
+          points[i],
+          points[i - 1],
+          Math.round((headWidth - tailWidth) * (i - 1) / (points.length - 1) + tailWidth),
+          false
+        ));
+      }
+    }
+    return res;
+  },
+
+  randomMinMax(min, max) {
+    return Math.random() * (max - min) + min;
+  },
+
+  randomPosX() {
+    return this.randomMinMax(-100, width + 100);
+  },
+
+  randomPosY() {
+    return this.randomMinMax(100, 200) + height;
+  },
+
+  randomVelocityX(posX) {
+    if (posX < 0) {
+      return this.randomMinMax(100, 500);
+    } else if (posX >= 0 && posX < width / 2) {
+      return this.randomMinMax(0, 500);
+    } else if (posX >= width / 2 && posX < width) {
+      return this.randomMinMax(-500, 0);
+    } else {
+      return this.randomMinMax(-500, -100);
+    }
+  },
+
+  randomVelocityY() {
+    const myH = height - 480;
+    return this.randomMinMax(-1000 - myH, -950 - myH);
+  },
+
+  degCos(deg) {
+    return Math.cos(deg * Math.PI / 180);
+  },
+
+  degSin(deg) {
+    return Math.sin(deg * Math.PI / 180);
+  },
+
+  shuffle(o) {
+    for (let j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
+    return o;
+  }
+};
+
+// 炸弹类
+class Bomb {
+  constructor(envConfig) {
+    this.env = envConfig;
+    this.game = envConfig.scene;
+    this.sprite = null;
+    this.bombImage = null;
+    this.bombSmoke = null;
+    this.bombEmit = null;
+
+    this.init();
+  }
+
+  init() {
+    // 创建容器
+    this.sprite = this.game.add.container(
+      this.env.x || 0,
+      this.env.y || 0
+    );
+
+    // 炸弹图像
+    this.bombImage = this.game.add.sprite(0, 0, 'bomb');
+    this.bombImage.setOrigin(0.5, 0.5);
+
+    // 烟雾
+    this.bombSmoke = this.game.add.sprite(-55, -55, 'smoke');
+
+    // 创建粒子纹理
+    const bitmap = this.game.make.graphics({ x: 0, y: 0, add: false });
+    this.generateFlame(bitmap);
+    const texture = bitmap.generateTexture('flameParticle', 50, 50);
+
+    // 粒子发射器
+    this.bombEmit = this.game.add.particles(texture.key);
+    this.bombEmit.createEmitter({
+      x: -30,
+      y: -30,
+      speed: { min: -100, max: 100 },
+      scale: { start: 1, end: 0.8 },
+      alpha: { start: 1, end: 0.1 },
+      lifespan: 1500,
+      frequency: 50,
+      maxParticles: 20
+    });
+
+    // 添加到容器
+    this.sprite.add([this.bombImage, this.bombEmit, this.bombSmoke]);
+
+    // 物理属性
+    this.game.physics.add.existing(this.sprite);
+    this.sprite.body.setCollideWorldBounds(false);
+  }
+
+  generateFlame(bitmap) {
+    const len = 5;
+    bitmap.fillStyle(0xffffff);
+    bitmap.beginPath();
+    bitmap.moveTo(25 + len, 25 - len);
+    bitmap.lineTo(25 + len, 25 + len);
+    bitmap.lineTo(25 - len, 25 + len);
+    bitmap.lineTo(25 - len, 25 - len);
+    bitmap.closePath();
+    bitmap.fill();
+  }
+
+  explode(onWhite, onComplete) {
+    const lights = [];
+    const startDeg = Math.floor(Math.random() * 360);
+
+    for (let i = 0; i < 8; i++) {
+      const light = this.game.add.graphics({
+        x: this.sprite.x,
+        y: this.sprite.y
+      });
+
+      const points = [
+        new Phaser.Math.Vector2(0, 0),
+        new Phaser.Math.Vector2(
+          Math.floor(800 * mathTool.degCos(startDeg + i * 45)),
+          Math.floor(800 * mathTool.degSin(startDeg + i * 45))
+        ),
+        new Phaser.Math.Vector2(
+          Math.floor(800 * mathTool.degCos(startDeg + i * 45 + 10)),
+          Math.floor(800 * mathTool.degSin(startDeg + i * 45 + 10))
+        )
+      ];
+
+      light.fillStyle(0xffffff);
+      light.beginPath();
+      light.moveTo(points[0].x, points[0].y);
+      light.lineTo(points[1].x, points[1].y);
+      light.lineTo(points[2].x, points[2].y);
+      light.closePath();
+      light.fill();
+      light.alpha = 0;
+
+      lights.push(light);
+    }
+
+    mathTool.shuffle(lights);
+
+    let firstTween = null;
+    let lastTween = null;
+
+    lights.forEach((light, i) => {
+      const tween = this.game.tweens.add({
+        targets: light,
+        alpha: 1,
+        duration: 100,
+        paused: true
+      });
+
+      if (i === 0) {
+        firstTween = tween;
+      }
+
+      if (lastTween) {
+        lastTween.chain(tween);
+      }
+
+      lastTween = tween;
+
+      if (i === 7) {
+        tween.on('complete', () => {
+          const whiteScreen = this.game.add.graphics({
+            x: 0,
+            y: 0,
+            fillStyle: { color: 0xffffff, alpha: 0 }
+          });
+          whiteScreen.fillRect(0, 0, width, height);
+
+          this.game.tweens.add({
+            targets: whiteScreen,
+            alpha: 1,
+            duration: 100,
+            onComplete: () => {
+              onWhite();
+
+              lights.forEach(light => light.destroy());
+
+              this.game.tweens.add({
+                targets: whiteScreen,
+                alpha: 0,
+                duration: 100,
+                onComplete: () => {
+                  whiteScreen.destroy();
+                  onComplete();
+                }
+              });
+            }
+          });
+        });
+      }
+    });
+
+    firstTween.play();
+  }
+
+  getSprite() {
+    return this.sprite;
+  }
+}
+
+// 水果类
+class Fruit {
+  constructor(envConfig) {
+    this.env = envConfig;
+    this.game = envConfig.scene;
+    this.sprite = null;
+    this.emitterMap = {
+      "apple": 0xFFC3E925,
+      "banana": 0xFFFFE337,
+      "basaha": 0xFFEB2D13,
+      "peach": 0xFFF8C928,
+      "sandia": 0xFF739E0F
+    };
+    this.bitmap = null;
+    this.emitter = null;
+    this.halfOne = null;
+    this.halfTwo = null;
+
+    this.init();
+  }
+
+  init() {
+    this.sprite = this.game.add.sprite(
+      this.env.x || 0,
+      this.env.y || 0,
+      this.env.key
+    );
+    this.sprite.setOrigin(0.5, 0.5);
+
+    // 物理属性
+    this.game.physics.add.existing(this.sprite);
+    this.sprite.body.setCollideWorldBounds(false);
+    this.sprite.body.onWorldBounds = true;
+
+    // 创建粒子纹理
+    this.bitmap = this.game.make.graphics({ x: 0, y: 0, add: false });
+
+    // 粒子发射器
+    this.emitter = this.game.add.particles('flameParticle');
+  }
+
+  half(deg, shouldEmit = false) {
+    // 创建两半水果
+    this.halfOne = this.game.add.sprite(
+      this.sprite.x,
+      this.sprite.y,
+      this.sprite.texture.key + '-1'
+    );
+    this.halfOne.setOrigin(0.5, 0.5);
+    this.halfOne.rotation = Phaser.Math.DegToRad(deg + 45);
+
+    this.game.physics.add.existing(this.halfOne);
+    this.halfOne.body.velocity.x = 100 + this.sprite.body.velocity.x;
+    this.halfOne.body.velocity.y = this.sprite.body.velocity.y;
+    this.halfOne.body.gravity.y = 2000;
+    this.halfOne.body.setCollideWorldBounds(false);
+    this.halfOne.body.onWorldBounds = true;
+    this.halfOne.checkWorldBounds = true;
+    this.halfOne.outOfBoundsKill = true;
+
+    this.halfTwo = this.game.add.sprite(
+      this.sprite.x,
+      this.sprite.y,
+      this.sprite.texture.key + '-2'
+    );
+    this.halfTwo.setOrigin(0.5, 0.5);
+    this.halfTwo.rotation = Phaser.Math.DegToRad(deg + 45);
+
+    this.game.physics.add.existing(this.halfTwo);
+    this.halfTwo.body.velocity.x = -100 + this.sprite.body.velocity.x;
+    this.halfTwo.body.velocity.y = this.sprite.body.velocity.y;
+    this.halfTwo.body.gravity.y = 2000;
+    this.halfTwo.body.setCollideWorldBounds(false);
+    this.halfTwo.checkWorldBounds = true;
+    this.halfTwo.outOfBoundsKill = true;
+
+    this.sprite.destroy();
+
+    if (shouldEmit) {
+      const emitColor = this.emitterMap[this.sprite.texture.key];
+      this.generateFlame(this.bitmap, emitColor);
+      const texture = this.bitmap.generateTexture('fruitParticle', 60, 60);
+
+      this.emitter = this.game.add.particles(texture.key);
+      this.emitter.createEmitter({
+        x: this.sprite.x,
+        y: this.sprite.y,
+        speed: { min: -400, max: 400 },
+        scale: { start: 1, end: 0.1 },
+        alpha: { start: 1, end: 0.1 },
+        lifespan: 4000,
+        maxParticles: 10
+      });
+    }
+  }
+
+  generateFlame(bitmap, color) {
+    const len = 30;
+    bitmap.clear();
+
+    const rgb = Phaser.Display.Color.IntegerToRGB(color);
+    const radgrad = bitmap.context.createRadialGradient(len, len, 4, len, len, len);
+
+    radgrad.addColorStop(0, `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 1)`);
+    radgrad.addColorStop(1, `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0)`);
+
+    bitmap.fillStyle(radgrad);
+    bitmap.fillRect(0, 0, 2 * len, 2 * len);
+  }
+
+  getSprite() {
+    return this.sprite;
+  }
+}
+
+// 刀身类
+class Blade {
+  constructor(envConfig) {
+    this.env = envConfig;
+    this.game = envConfig.scene;
+    this.points = [];
+    this.graphics = null;
+    this.POINTLIFETIME = 200;
+    this.allowBlade = false;
+    this.lastPoint = null;
+
+    this.init();
+  }
+
+  init() {
+    this.graphics = this.game.add.graphics({
+      x: 0,
+      y: 0
+    });
+  }
+
+  update() {
+    if (this.allowBlade) {
+      this.graphics.clear();
+
+      // 清理过期点
+      const now = Date.now();
+      this.points = this.points.filter(point => now - point.time < this.POINTLIFETIME);
+
+      if (this.game.input.activePointer.isDown) {
+        const point = {
+          x: this.game.input.activePointer.x,
+          y: this.game.input.activePointer.y,
+          time: Date.now()
+        };
+
+        if (!this.lastPoint) {
+          this.lastPoint = point;
+          this.points.push(point);
+        } else {
+          const dis = Math.hypot(
+            point.x - this.lastPoint.x,
+            point.y - this.lastPoint.y
+          );
+
+          if (dis > Math.sqrt(300)) { // 相当于距离平方>300
+            this.lastPoint = point;
+            this.points.push(point);
           }
-          proxy?.$modal.msgWarning(msg);
-          againNum.value = 0;
-          againTimer.value = null;
-          clearTimeout(againTimer.value);
-          getCloseBodypose();//直接关闭 
         }
+      }
+
+      if (this.points.length > 0) {
+        const bladePoints = mathTool.generateBlade(this.points);
 
+        if (bladePoints.length > 0) {
+          this.graphics.fillStyle(0xffffff, 0.8);
+          this.graphics.beginPath();
+          this.graphics.moveTo(bladePoints[0].x, bladePoints[0].y);
+
+          bladePoints.forEach((point, i) => {
+            if (i > 0) {
+              this.graphics.lineTo(point.x, point.y);
+            }
+          });
+
+          this.graphics.closePath();
+          this.graphics.fill();
+        }
       }
     }
-    if (e?.cmd == 'get_bodyposecontroller_state') {
-      let handcontroller_id = deviceInfo.value.handcontroller_id;
-      //state说明: 0:关闭,3:空闲,36:工作中
-      if ([3, 36].includes(e.state)) {
-        getCloseBodypose();
-        proxy?.$modal.msgWarning(`请重新姿态识别`);
-      } else {
-        openBodypose(handcontroller_id);
+  }
+
+  checkCollide(sprite, onCollide) {
+    if (this.allowBlade && this.game.input.activePointer.isDown && this.points.length > 2) {
+      const bounds = sprite.getBounds();
+
+      for (const point of this.points) {
+        if (Phaser.Geom.Rectangle.Contains(bounds, point.x, point.y)) {
+          onCollide();
+          break;
+        }
       }
     }
-    if (e?.type == 'bodyposecontroller_result') {
-      let arr = e.data.result.keypoints;
-      let result = [];
-      for (let i = 0; i < arr.length; i += 3) {
-        result.push(arr.slice(i, i + 2));
+  }
+
+  collideDeg() {
+    let deg = 0;
+    const len = this.points.length;
+
+    if (len >= 2) {
+      const p0 = this.points[0];
+      const p1 = this.points[len - 1];
+
+      if (p0.x === p1.x) {
+        deg = 90;
+      } else {
+        const val = (p0.y - p1.y) / (p0.x - p1.x);
+        deg = Math.round(Math.atan(val) * 180 / Math.PI);
+      }
+
+      if (deg < 0) {
+        deg += 180;
       }
-      console.log("result", result)
-      bodyposeData.value = result;
-      getCanvas();
     }
-    if (e?.cmd == 'terminate_bodyposecontroller') {
-      if (e?.code == 0) {
-        closeWS();
-        bodyposeState.value = false;
+
+    return deg;
+  }
+
+  enable() {
+    this.allowBlade = true;
+  }
+}
+
+// 启动场景
+class BootScene extends Phaser.Scene {
+  constructor() {
+    super('boot');
+  }
+
+  preload() {
+    this.load.image('loading', 'static/images/fruit/preloader.gif');
+  }
+
+  create() {
+    this.scene.start('preload');
+  }
+}
+
+// 预加载场景
+class PreloadScene extends Phaser.Scene {
+  constructor() {
+    super('preload');
+  }
+
+  preload() {
+    const preloadSprite = this.add.sprite(10, height / 2, 'loading');
+    this.load.on('progress', (value) => {
+      preloadSprite.setX(10 + (width - 20) * value);
+    });
+
+    // 加载游戏资源
+    this.load.image('apple', 'static/images/fruit/apple.png');
+    this.load.image('apple-1', 'static/images/fruit/apple-1.png');
+    this.load.image('apple-2', 'static/images/fruit/apple-2.png');
+    this.load.image('background', 'static/images/fruit/background.jpg');
+    this.load.image('banana', 'static/images/fruit/banana.png');
+    this.load.image('banana-1', 'static/images/fruit/banana-1.png');
+    this.load.image('banana-2', 'static/images/fruit/banana-2.png');
+    this.load.image('basaha', 'static/images/fruit/basaha.png');
+    this.load.image('basaha-1', 'static/images/fruit/basaha-1.png');
+    this.load.image('basaha-2', 'static/images/fruit/basaha-2.png');
+    this.load.image('best', 'static/images/fruit/best.png');
+    this.load.image('bomb', 'static/images/fruit/bomb.png');
+    this.load.image('dojo', 'static/images/fruit/dojo.png');
+    this.load.image('game-over', 'static/images/fruit/game-over.png');
+    this.load.image('home-desc', 'static/images/fruit/home-desc.png');
+    this.load.image('home-mask', 'static/images/fruit/home-mask.png');
+    this.load.image('logo', 'static/images/fruit/logo.png');
+    this.load.image('lose', 'static/images/fruit/lose.png');
+    this.load.image('new-game', 'static/images/fruit/new-game.png');
+    this.load.image('ninja', 'static/images/fruit/ninja.png');
+    this.load.image('peach', 'static/images/fruit/peach.png');
+    this.load.image('peach-1', 'static/images/fruit/peach-1.png');
+    this.load.image('peach-2', 'static/images/fruit/peach-2.png');
+    this.load.image('quit', 'static/images/fruit/quit.png');
+    this.load.image('sandia', 'static/images/fruit/sandia.png');
+    this.load.image('sandia-1', 'static/images/fruit/sandia-1.png');
+    this.load.image('sandia-2', 'static/images/fruit/sandia-2.png');
+    this.load.image('score', 'static/images/fruit/score.png');
+    this.load.image('shadow', 'static/images/fruit/shadow.png');
+    this.load.image('smoke', 'static/images/fruit/smoke.png');
+    this.load.image('x', 'static/images/fruit/x.png');
+    this.load.image('xf', 'static/images/fruit/xf.png');
+    this.load.image('xx', 'static/images/fruit/xx.png');
+    this.load.image('xxf', 'static/images/fruit/xxf.png');
+    this.load.image('xxx', 'static/images/fruit/xxx.png');
+    this.load.image('xxxf', 'static/images/fruit/xxxf.png');
+    this.load.bitmapFont('number', 'static/images/fruit/bitmapFont.png', 'static/images/fruit/bitmapFont.xml');
+  }
+
+  create() {
+    this.scene.start('main');
+  }
+}
+
+// 主场景
+class MainScene extends Phaser.Scene {
+  constructor() {
+    super('main');
+    this.bg = null;
+    this.blade = null;
+    this.homeGroup = null;
+    this.home_mask = null;
+    this.logo = null;
+    this.home_desc = null;
+    this.sandiaGroup = null;
+    this.new_game = null;
+    this.sandia = null;
+    this.lose = null;
+    this.start = false;
+    this.sandiaRotateSpeed = 0.9;
+    this.newGameRotateSpeed = -0.3;
+  }
+
+  create() {
+    // 初始化物理系统
+    this.physics.world.gravity.y = 0;
+
+    // 背景
+    this.bg = this.add.image(0, 0, "background");
+    this.bg.setScale(wRatio, hRatio);
+    this.bg.setPosition(width / 2, height / 2);
+    this.bg.setOrigin(0.5, 0.5);
+
+    // 刀光
+    this.blade = new Blade({
+      scene: this
+    });
+
+    // 开始动画
+    this.homeGroupAnim();
+  }
+
+  update() {
+    this.updateRotate();
+
+    // 检查是否该跳转到游戏场景
+    if (this.start) {
+      this.gotoNextScene();
+    }
+
+    // 更新刀光
+    this.blade.update();
+
+    // 检查水果碰撞
+    if (this.sandia && this.sandia.getSprite() && this.sandia.getSprite().active && !this.start) {
+      this.blade.checkCollide(
+        this.sandia.getSprite(),
+        () => {
+          this.startGame();
+        }
+      );
+    }
+  }
+
+  homeGroupAnim() {
+    this.homeGroup = this.add.container(0, -height);
+
+    this.home_mask = this.add.image(0, 0, "home-mask");
+    this.home_mask.setY(-200);
+    this.home_mask.setScale(wRatio);
+
+    this.logo = this.add.image(20, 50, "logo");
+
+    this.homeGroup.add([this.home_mask, this.logo]);
+
+    this.tweens.add({
+      targets: this.homeGroup,
+      y: 0,
+      duration: 400,
+      ease: 'Sine.InOut',
+      onComplete: () => this.homeDescAnim()
+    });
+  }
+
+  homeDescAnim() {
+    this.home_desc = this.add.image(0, 0, "home-desc");
+    this.home_desc.setPosition(width - this.home_desc.width - 10, 25);
+    this.fruitAnim();
+  }
+
+  fruitAnim() {
+    // 西瓜组
+    this.sandiaGroup = this.add.container(323 * wRatio, 373 * hRatio);
+    this.sandiaGroup.setScale(0);
+
+    this.new_game = this.add.sprite(0, 0, "new-game");
+    this.new_game.setOrigin(0.5, 0.5);
+
+    this.sandia = new Fruit({
+      scene: this,
+      key: "sandia"
+    });
+
+    this.sandiaGroup.add([this.new_game, this.sandia.getSprite()]);
+
+    this.tweens.add({
+      targets: this.sandiaGroup,
+      scale: 1,
+      duration: 500,
+      ease: 'Linear.None',
+      onComplete: () => this.allowBlade()
+    });
+
+    // 退出按钮
+    this.lose = this.add.image(0, 0, "lose");
+    this.lose.setPosition(width - this.lose.width - 30, height - this.lose.height - 30);
+    this.lose.setInteractive();
+    this.lose.on('pointerdown', () => this.getExit());
+  }
+
+  updateRotate() {
+    if (this.new_game) {
+      this.new_game.rotation += this.newGameRotateSpeed * 0.016;
+    }
+
+    if (this.sandia && this.sandia.getSprite()) {
+      this.sandia.getSprite().rotation += this.sandiaRotateSpeed * 0.016;
+    }
+  }
+
+  allowBlade() {
+    this.blade.enable();
+  }
+
+  startGame() {
+    this.start = true;
+
+    // 隐藏主界面元素
+    this.tweens.add({
+      targets: this.homeGroup,
+      y: -height,
+      duration: 200,
+      ease: 'Sine.InOut'
+    });
+
+    this.tweens.add({
+      targets: this.home_desc,
+      x: -this.home_desc.width,
+      duration: 200,
+      ease: 'Sine.InOut'
+    });
+
+    // 隐藏按钮
+    this.new_game.destroy();
+
+    // 切开西瓜
+    const deg = this.blade.collideDeg();
+    this.sandia.half(deg);
+  }
+
+  gotoNextScene() {
+    this.resetScene();
+    this.scene.start("play");
+  }
+
+  getExit() {
+    console.log("退出");
+    history.back(-1);
+  }
+
+  resetScene() {
+    this.sandia = null;
+    this.start = false;
+  }
+}
+
+// 游戏场景
+class PlayScene extends Phaser.Scene {
+  constructor() {
+    super('play');
+    this.bg = null;
+    this.blade = null;
+    this.fruits = [];
+    this.score = 0;
+    this.playing = true;
+    this.bombExplode = false;
+    this.lostCount = 0;
+    this.scoreImage = null;
+    this.best = null;
+    this.scoreText = null;
+    this.xxxGroup = null;
+    this.x = null;
+    this.xx = null;
+    this.xxx = null;
+    this.gravity = 1000;
+  }
+
+  create() {
+    // 物理系统
+    this.physics.world.gravity.y = this.gravity;
+
+    // 背景
+    this.bg = this.add.image(0, 0, 'background');
+    this.bg.setScale(wRatio, hRatio);
+    this.bg.setPosition(width / 2, height / 2);
+    this.bg.setOrigin(0.5, 0.5);
+
+    // 刀光
+    this.blade = new Blade({
+      scene: this
+    });
+    this.blade.enable();
+
+    // 初始化UI
+    this.scoreAnim();
+    this.scoreTextAnim();
+    this.bestAnim();
+    this.xxxAnim();
+  }
+
+  update() {
+    // 检查是否有水果出界
+    if (!this.bombExplode) {
+      for (let i = this.fruits.length - 1; i >= 0; i--) {
+        const fruit = this.fruits[i];
+        const sprite = fruit.getSprite();
+
+        if (sprite && !sprite.active) continue;
+
+        if (sprite && (
+          sprite.y > height + 100 ||
+          sprite.x < -100 ||
+          sprite.x > width + 100
+        )) {
+          if (fruit.isFruit) {
+            this.onOut(fruit);
+          }
+          sprite.destroy();
+          this.fruits.splice(i, 1);
+        }
       }
     }
-    if (e?.type == 'disconnect') {
-      wsState.value = false;
+
+    // 如果没有水果且游戏进行中,生成新水果
+    if (this.playing && this.fruits.length === 0 && !this.bombExplode) {
+      this.startFruit();
     }
-  });
-};
 
+    // 更新刀光
+    this.blade.update();
 
-/**
- * 查询姿态识别状态
-*/
-const getCheckBodypose = () => {
-  let handcontroller_id = deviceInfo.value.handcontroller_id;
-  //检查是否支持姿态识别
-  checkBodypose(handcontroller_id);
-};
+    // 检查碰撞
+    if (!this.bombExplode) {
+      this.fruits.forEach((fruit, i) => {
+        if (fruit.getSprite() && fruit.getSprite().active) {
+          this.blade.checkCollide(
+            fruit.getSprite(),
+            () => {
+              if (fruit.isFruit) {
+                this.onKill(fruit);
+                this.fruits.splice(i, 1);
+              } else {
+                this.onBomb(fruit);
+              }
+            }
+          );
+        }
+      });
+    }
+  }
 
-/**
- * 关闭姿态识别
-*/
-const getCloseBodypose = () => {
-  let handcontroller_id = deviceInfo.value.handcontroller_id;
-  terminateBodypose(handcontroller_id);
-  bodyposeState.value = false;
-  speckCancel(); //停止播报
-  setTimeout(() => {
-    if (wsState.value) {
-      closeWS();
-    }
-  }, 3000)
-};
+  scoreAnim() {
+    this.scoreImage = this.add.image(-100, 8, 'score');
+    this.tweens.add({
+      targets: this.scoreImage,
+      x: 8,
+      duration: 300,
+      ease: 'Sine.InOut'
+    });
+  }
 
-/**
- * 绘图
-*/
-const getCanvas = () => {
-  const width = document.documentElement.clientWidth;
-  const height = document.documentElement.clientHeight;
-  const canvas: any = canvasRef.value;
-  const ctx = canvas.getContext('2d');
-  // 清空整个画布
-  ctx.clearRect(0, 0, canvas.width, canvas.height);
-  ctx.save(); // 保存当前状态
-
-  // 控制倍数
-  const scaleFactor = 3;
-  const bizi1 = bodyposeData.value[0][0];
-  const bizi2 = bodyposeData.value[1][0];
-  ctx.translate(bizi1 / 1.4, bizi2 / 4); // 可选:以中心为缩放原点
-  ctx.scale(scaleFactor, scaleFactor); // 缩放
-  ctx.translate(-bizi1 / 1.4, -bizi2 / 4); // 恢复原点(若之前移动过)
-
-  // 画面位置
-  // const targetX = bodyposeData.value[0][0];
-  // const targetY = bodyposeData.value[0][1];
-  // ctx.translate(targetX, targetY);
-  // 应用缩放
-  // const scaleFactor = 1.2;
-  // ctx.scale(scaleFactor, scaleFactor);
-  //绘制头部
-  const point1 = { x: bodyposeData.value[4][0], y: bodyposeData.value[4][1] };
-  const point2 = { x: bodyposeData.value[3][0], y: bodyposeData.value[3][1] };
-  // 计算椭圆参数
-  const centerX = (point1.x + point2.x) / 2; // 椭圆中心X
-  const centerY = (point1.y + point2.y) / 2; // 椭圆中心Y
-  const distance = Math.sqrt(
-    Math.pow(point2.x - point1.x, 2) +
-    Math.pow(point2.y - point1.y, 2)
-  ); // 两个焦点之间的距离
-  const radiusX = distance * 0.5; // 水平半径(可调整)
-  const radiusY = distance * 0.6; // 垂直半径(可调整)
-  // 1. 绘制填充椭圆
-  ctx.beginPath();
-  ctx.ellipse(centerX, centerY, radiusX, radiusY, 0, 0, Math.PI * 2);
-  ctx.fillStyle = 'red'; // 填充颜色
-  ctx.fill(); // 填充
-
-  // 2. 绘制边框
-  ctx.strokeStyle = 'red';
-  ctx.lineWidth = 5;
-  ctx.stroke();
-  // 绘制每个点
-  bodyposeData.value.forEach((point: any) => {
-    const [x, y] = point;
-    ctx.beginPath();
-    ctx.arc(x, y, 5, 0, Math.PI * 2); // 绘制半径为5的圆点
-    ctx.fillStyle = 'red';
-    ctx.fill();
-    ctx.lineWidth = 1;
-    ctx.stroke();
-  });
-  // 根据点关系连线
-  const arr = [[10, 8], [8, 6], [6, 5], [5, 7], [7, 9], [6, 12], [5, 11], [12, 11], [12, 14], [14, 16], [11, 13], [13, 15]]
-  arr.forEach((point: any) => {
-    let index1 = point[0];
-    let index2 = point[1];
-    //连线
-    const dian1 = { x: bodyposeData.value[index1][0], y: bodyposeData.value[index1][1] };
-    const dian2 = { x: bodyposeData.value[index2][0], y: bodyposeData.value[index2][1] };
-    // 绘制连线
-    ctx.beginPath();
-    ctx.moveTo(dian1.x, dian1.y); // 起点
-    ctx.lineTo(dian2.x, dian2.y); // 终点
-    ctx.strokeStyle = 'red'; // 线条颜色
-    ctx.lineWidth = 3; // 线条宽度
-    ctx.stroke(); // 描边
-  });
-  ctx.restore(); // 恢复状态
-};
+  bestAnim() {
+    this.best = this.add.image(-100, 52, 'best');
+    this.tweens.add({
+      targets: this.best,
+      x: 5,
+      duration: 300,
+      ease: 'Sine.InOut'
+    });
+  }
+
+  scoreTextAnim() {
+    this.scoreText = this.add.bitmapText(-100, 40, 'number', this.score.toString(), 32);
+    this.tweens.add({
+      targets: this.scoreText,
+      x: 75,
+      duration: 300,
+      ease: 'Sine.InOut'
+    });
+  }
+
+  xxxAnim() {
+    this.xxxGroup = this.add.container(width + 100, 5);
+
+    this.x = this.add.image(0, 0, 'x');
+    this.xx = this.add.image(22, 0, 'xx');
+    this.xxx = this.add.image(49, 0, 'xxx');
 
-onBeforeMount(() => {
-  clientObj.value = {
-    width: document.documentElement.clientWidth,
-    height: document.documentElement.clientHeight,
+    this.xxxGroup.add([this.x, this.xx, this.xxx]);
+
+    this.tweens.add({
+      targets: this.xxxGroup,
+      x: width - 86,
+      duration: 300,
+      ease: 'Sine.InOut'
+    });
   }
-  getInit();
+
+  startFruit() {
+    const number = Math.floor(mathTool.randomMinMax(1, 5));
+    const hasBomb = Math.random() > 0.7; // 30%概率有炸弹
+    const bombIndex = hasBomb ? Math.floor(Math.random() * number) : -1;
+
+    for (let i = 0; i < number; i++) {
+      if (i === bombIndex) {
+        this.fruits.push(this.randomFruit(false));
+      } else {
+        this.fruits.push(this.randomFruit(true));
+      }
+    }
+  }
+
+  randomFruit(isFruit) {
+    const fruitArray = ["apple", "banana", "basaha", "peach", "sandia"];
+    const index = Math.floor(Math.random() * fruitArray.length);
+    const x = mathTool.randomPosX();
+    const y = mathTool.randomPosY();
+    const vx = mathTool.randomVelocityX(x);
+    const vy = mathTool.randomVelocityY();
+
+    let fruit;
+    if (isFruit) {
+      fruit = new Fruit({
+        scene: this,
+        key: fruitArray[index],
+        x: x,
+        y: y
+      });
+    } else {
+      fruit = new Bomb({
+        scene: this,
+        x: x,
+        y: y
+      });
+    }
+
+    fruit.isFruit = isFruit;
+    const sprite = fruit.getSprite();
+
+    if (sprite.body) {
+      sprite.body.velocity.x = vx;
+      sprite.body.velocity.y = vy;
+      sprite.body.gravity.y = this.gravity;
+    }
+
+    return fruit;
+  }
+
+  onOut(fruit) {
+    const sprite = fruit.getSprite();
+    let x, y;
+
+    // 确定失去标记的位置
+    if (sprite.y > height) {
+      x = sprite.x;
+      y = height - 30;
+    } else if (sprite.x < 0) {
+      x = 30;
+      y = sprite.y;
+    } else {
+      x = width - 30;
+      y = sprite.y;
+    }
+
+    // 创建失去标记动画
+    const lose = this.add.sprite(x, y, 'lose');
+    lose.setOrigin(0.5, 0.5);
+    lose.setScale(0);
+
+    const tweenShow = this.tweens.add({
+      targets: lose,
+      scale: 1,
+      duration: 300,
+      ease: 'Sine.InOut',
+      paused: true
+    });
+
+    const tweenHide = this.tweens.add({
+      targets: lose,
+      scale: 0,
+      duration: 300,
+      ease: 'Sine.InOut',
+      paused: true,
+      delay: 1000
+    });
+
+this.tweens.chain({
+  targets: lose,
+  tweens: [
+    {
+      scale: 1,
+      duration: 300,
+      ease: 'Sine.InOut'
+    },
+    {
+      scale: 0,
+      duration: 300,
+      ease: 'Sine.InOut',
+      delay: 1000,
+      onComplete: () => {
+        lose.destroy();
+      }
+    }
+  ]
 });
+    tweenShow.play();
+
+    tweenHide.on('complete', () => {
+      lose.destroy();
+    });
+
+    this.lostCount++;
+    this.loseCount();
+  }
+
+  onKill(fruit) {
+    const deg = this.blade.collideDeg();
+    fruit.half(deg, true);
+    this.score++;
+    this.scoreText.setText(this.score.toString());
+  }
+
+  onBomb(bomb) {
+    this.bombExplode = true;
+
+    // 停止所有水果的物理运动
+    this.fruits.forEach(fruit => {
+      const sprite = fruit.getSprite();
+      if (sprite && sprite.body) {
+        sprite.body.setVelocity(0);
+        sprite.body.setGravity(0);
+      }
+    });
+
+    // 炸弹爆炸
+    bomb.explode(
+      () => {
+        // 爆炸白光显示时的回调
+        this.fruits.forEach(fruit => {
+          const sprite = fruit.getSprite();
+          if (sprite) sprite.destroy();
+        });
+        this.fruits = [];
+      },
+      () => {
+        // 爆炸完成后的回调
+        this.gameOver();
+      }
+    );
+  }
+
+  loseCount() {
+    if (this.lostCount === 1) {
+      this.lostAnim(this.x, 'xf');
+    } else if (this.lostCount === 2) {
+      this.lostAnim(this.xx, 'xxf');
+    } else if (this.lostCount >= 3) {
+      this.lostAnim(this.xxx, 'xxxf');
+      this.gameOver();
+    }
+  }
+
+  lostAnim(removeObj, addKey) {
+    removeObj.destroy();
+    const newObj = this.add.sprite(removeObj.x, removeObj.y, addKey);
+    newObj.setOrigin(0.5, 0.5);
+    newObj.setScale(0);
+    this.xxxGroup.add(newObj);
+
+    this.tweens.add({
+      targets: newObj,
+      scale: 1,
+      duration: 300,
+      ease: 'Sine.InOut'
+    });
+  }
+
+  gameOver() {
+    this.playing = false;
+
+    const gameOverSprite = this.add.sprite(width / 2, height / 2, 'game-over');
+    gameOverSprite.setOrigin(0.5, 0.5);
+    gameOverSprite.setScale(0);
 
+    this.tweens.add({
+      targets: gameOverSprite,
+      scale: 1,
+      duration: 300,
+      ease: 'Sine.InOut'
+    });
+
+    // 点击重新开始
+    this.input.once('pointerup', () => {
+      this.scene.start('main');
+    });
+  }
+}
+
+
+// 初始化游戏
 onMounted(() => {
-})
+  // 获取容器尺寸
+  const container = document.getElementById('game');
+  width = container.clientWidth || window.innerWidth;
+  height = container.clientHeight || window.innerHeight;
+  wRatio = width / 640;
+  hRatio = height / 480;
 
-onBeforeUnmount(() => {
-  closeWS();
+  // 初始化工具类
+  mathTool.init();
+
+  // 创建游戏实例
+  game = new Phaser.Game({
+    type: Phaser.CANVAS,
+    width: width,
+    height: height,
+    parent: 'game',
+    scene: [BootScene, PreloadScene, MainScene, PlayScene],
+    physics: {
+      default: 'arcade',
+      arcade: {
+        debug: false
+      }
+    }
+  });
 });
 </script>
 

+ 248 - 0
src/views/game/fruit2.vue

@@ -0,0 +1,248 @@
+<template>
+  <div>
+    <canvas ref="canvasRef" :width="clientObj.width" :height="clientObj.height"></canvas>
+  </div>
+</template>
+
+<script setup name="Fruit" lang="ts">
+import { initSpeech, speckText, playMusic, controlMusic, speckCancel, chineseNumber } from '@/utils/speech';
+import { useWebSocket } from '@/utils/bodyposeWs';
+const { proxy } = getCurrentInstance() as any;
+const router = useRouter();
+const { bodyposeWs, startDevice, checkBodypose, openBodypose, terminateBodypose, suspendBodypose, resumeBodypose, getBodyposeState, closeWS } = useWebSocket();
+const canvasRef = ref(null);
+
+const data = reactive<any>({
+  bodyposeData: {},//姿态信息
+  bodyposeState: false,//姿态识别窗口状态
+  parameter: {},//参数
+  deviceInfo: {},//设备信息
+  againNum: 0,//再次启动次数
+  againTimer: null,//定时状态
+  wsState: false,//WS状态
+  clientObj: {},//浏览器对象
+});
+
+const { bodyposeData, bodyposeState, parameter, deviceInfo, againNum, againTimer, wsState, clientObj } = toRefs(data);
+
+/**
+ * 初始化
+ */
+const getInit = async () => {
+  console.log("触发姿态识别")
+  let deviceid = localStorage.getItem('deviceid') || '';
+  if (!deviceid) {
+    proxy?.$modal.msgError(`请重新登录绑定设备号后使用`);
+    return false;
+  }
+  bodyposeState.value = true;
+  if (wsState.value) {
+    proxy?.$modal.msgWarning(`操作过快,请稍后重试`);
+    setTimeout(() => {
+      bodyposeState.value = false;
+    }, 1000)
+    return false;
+  }
+  speckText("正在姿态识别");
+  bodyposeWs((e: any) => {
+    console.log("bodyposeWS", e)
+    if (e?.wksid) {
+      wsState.value = true;
+      //获取设备信息
+      startDevice({ deviceid: deviceid });
+      console.log("获取设备信息")
+    }
+    if (e?.type == 'fe_device_init_result') {
+      //接收设备信息并发送请求
+      if (e?.device_info) {
+        deviceInfo.value = e.device_info;
+        getCheckBodypose();
+        console.log("返回设备信息,检查是否支持姿态识别")
+      } else {
+        proxy?.$modal.msgError(`设备信息缺失,请重新登录绑定设备号后使用`);
+      }
+    }
+    if (e?.cmd == 'check_bodyposecontroller_available') {
+      let handcontroller_id = deviceInfo.value.handcontroller_id;
+      if (e?.code == 0) {
+        //查看姿态识别状态,如果不处于关闭就先关闭再重新启动(可能会APP退出然后工作站还在运行的可能性)
+        getBodyposeState(handcontroller_id);
+        againNum.value = 0;
+        againTimer.value = null;
+        clearTimeout(againTimer.value);
+        console.log("查看姿态识别状态")
+      } else {
+        //尝试多次查询姿态识别状态
+        if (againNum.value <= 2) {
+          againTimer.value = setTimeout(() => {
+            getCheckBodypose();
+          }, 500)
+          againNum.value++;
+        } else {
+          let msg = "";
+          if (e.code == 102402) {
+            msg = `多次连接失败请重试,姿态识别模块被占用`;
+          } else {
+            msg = `多次连接失败请重试,姿态识别模块不可用,code:${e.code}`;
+          }
+          proxy?.$modal.msgWarning(msg);
+          againNum.value = 0;
+          againTimer.value = null;
+          clearTimeout(againTimer.value);
+          getCloseBodypose();//直接关闭 
+        }
+
+      }
+    }
+    if (e?.cmd == 'get_bodyposecontroller_state') {
+      let handcontroller_id = deviceInfo.value.handcontroller_id;
+      //state说明: 0:关闭,3:空闲,36:工作中
+      if ([3, 36].includes(e.state)) {
+        getCloseBodypose();
+        proxy?.$modal.msgWarning(`请重新姿态识别`);
+      } else {
+        openBodypose(handcontroller_id);
+      }
+    }
+    if (e?.type == 'bodyposecontroller_result') {
+      let arr = e.data.result.keypoints;
+      let result = [];
+      for (let i = 0; i < arr.length; i += 3) {
+        result.push(arr.slice(i, i + 2));
+      }
+      console.log("result", result)
+      bodyposeData.value = result;
+      getCanvas();
+    }
+    if (e?.cmd == 'terminate_bodyposecontroller') {
+      if (e?.code == 0) {
+        closeWS();
+        bodyposeState.value = false;
+      }
+    }
+    if (e?.type == 'disconnect') {
+      wsState.value = false;
+    }
+  });
+};
+
+
+/**
+ * 查询姿态识别状态
+*/
+const getCheckBodypose = () => {
+  let handcontroller_id = deviceInfo.value.handcontroller_id;
+  //检查是否支持姿态识别
+  checkBodypose(handcontroller_id);
+};
+
+/**
+ * 关闭姿态识别
+*/
+const getCloseBodypose = () => {
+  let handcontroller_id = deviceInfo.value.handcontroller_id;
+  terminateBodypose(handcontroller_id);
+  bodyposeState.value = false;
+  speckCancel(); //停止播报
+  setTimeout(() => {
+    if (wsState.value) {
+      closeWS();
+    }
+  }, 3000)
+};
+
+/**
+ * 绘图
+*/
+const getCanvas = () => {
+  const width = document.documentElement.clientWidth;
+  const height = document.documentElement.clientHeight;
+  const canvas: any = canvasRef.value;
+  const ctx = canvas.getContext('2d');
+  // 清空整个画布
+  ctx.clearRect(0, 0, canvas.width, canvas.height);
+  ctx.save(); // 保存当前状态
+
+  // 控制倍数
+  const scaleFactor = 3;
+  const bizi1 = bodyposeData.value[0][0];
+  const bizi2 = bodyposeData.value[1][0];
+  ctx.translate(bizi1 / 1.4, bizi2 / 4); // 可选:以中心为缩放原点
+  ctx.scale(scaleFactor, scaleFactor); // 缩放
+  ctx.translate(-bizi1 / 1.4, -bizi2 / 4); // 恢复原点(若之前移动过)
+
+  // 画面位置
+  // const targetX = bodyposeData.value[0][0];
+  // const targetY = bodyposeData.value[0][1];
+  // ctx.translate(targetX, targetY);
+  // 应用缩放
+  // const scaleFactor = 1.2;
+  // ctx.scale(scaleFactor, scaleFactor);
+  //绘制头部
+  const point1 = { x: bodyposeData.value[4][0], y: bodyposeData.value[4][1] };
+  const point2 = { x: bodyposeData.value[3][0], y: bodyposeData.value[3][1] };
+  // 计算椭圆参数
+  const centerX = (point1.x + point2.x) / 2; // 椭圆中心X
+  const centerY = (point1.y + point2.y) / 2; // 椭圆中心Y
+  const distance = Math.sqrt(
+    Math.pow(point2.x - point1.x, 2) +
+    Math.pow(point2.y - point1.y, 2)
+  ); // 两个焦点之间的距离
+  const radiusX = distance * 0.5; // 水平半径(可调整)
+  const radiusY = distance * 0.6; // 垂直半径(可调整)
+  // 1. 绘制填充椭圆
+  ctx.beginPath();
+  ctx.ellipse(centerX, centerY, radiusX, radiusY, 0, 0, Math.PI * 2);
+  ctx.fillStyle = 'red'; // 填充颜色
+  ctx.fill(); // 填充
+
+  // 2. 绘制边框
+  ctx.strokeStyle = 'red';
+  ctx.lineWidth = 5;
+  ctx.stroke();
+  // 绘制每个点
+  bodyposeData.value.forEach((point: any) => {
+    const [x, y] = point;
+    ctx.beginPath();
+    ctx.arc(x, y, 5, 0, Math.PI * 2); // 绘制半径为5的圆点
+    ctx.fillStyle = 'red';
+    ctx.fill();
+    ctx.lineWidth = 1;
+    ctx.stroke();
+  });
+  // 根据点关系连线
+  const arr = [[10, 8], [8, 6], [6, 5], [5, 7], [7, 9], [6, 12], [5, 11], [12, 11], [12, 14], [14, 16], [11, 13], [13, 15]]
+  arr.forEach((point: any) => {
+    let index1 = point[0];
+    let index2 = point[1];
+    //连线
+    const dian1 = { x: bodyposeData.value[index1][0], y: bodyposeData.value[index1][1] };
+    const dian2 = { x: bodyposeData.value[index2][0], y: bodyposeData.value[index2][1] };
+    // 绘制连线
+    ctx.beginPath();
+    ctx.moveTo(dian1.x, dian1.y); // 起点
+    ctx.lineTo(dian2.x, dian2.y); // 终点
+    ctx.strokeStyle = 'red'; // 线条颜色
+    ctx.lineWidth = 3; // 线条宽度
+    ctx.stroke(); // 描边
+  });
+  ctx.restore(); // 恢复状态
+};
+
+onBeforeMount(() => {
+  clientObj.value = {
+    width: document.documentElement.clientWidth,
+    height: document.documentElement.clientHeight,
+  }
+  getInit();
+});
+
+onMounted(() => {
+})
+
+onBeforeUnmount(() => {
+  closeWS();
+});
+</script>
+
+<style lang="scss" scoped></style>

+ 1 - 1
src/views/game/index.vue

@@ -70,7 +70,7 @@ onBeforeMount(async () => {
 onMounted(() => {
   //停止播报;
   speckCancel();
-  projectList.value = [{ name: "方块跳一跳", key: "square" }, { name: "水果忍者", key: "fruit" }]
+  projectList.value = [{ name: "方块跳一跳", key: "square" }, { name: "水果忍者", key: "fruit" }, { name: "17点位", key: "fruit2" }]
 });
 
 onBeforeUnmount(() => {