asmrobot
2019-11-21 589ed88a5924a7494e21b95b6bbff5e46ff49ddd
kalete map
80 files added
59 files deleted
388 files renamed
48 files modified
1 files copied
526076 ■■■■■ changed files
doc/CNNClassifier/App.config 6 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/CNNClassifier.csproj 106 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/CNNClassifier.sln 25 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/Form1.Designer.cs 328 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/Form1.cs 472 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/Form1.resx 120 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/Program.cs 22 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/Properties/AssemblyInfo.cs 36 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/Properties/Resources.Designer.cs 71 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/Properties/Resources.resx 117 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/Properties/Settings.Designer.cs 30 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/Properties/Settings.settings 7 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/changeFileName.Designer.cs 60 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/changeFileName.cs 34 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/changeFileName.resx 120 ●●●●● patch | view | raw | blame | history
doc/Hog.xml 518671 ●●●●● patch | view | raw | blame | history
doc/ThingItemColors.txt 17 ●●●●● patch | view | raw | blame | history
doc/apk说明.txt 3 ●●●●● patch | view | raw | blame | history
doc/chi_sim.traineddata patch | view | raw | blame | history
doc/npk对应表_old.txt 788 ●●●●● patch | view | raw | blame | history
doc/skill.txt 46 ●●●●● patch | view | raw | blame | history
doc/地图/卡勒特_800x600/map.txt 2 ●●●●● patch | view | raw | blame | history
doc/坐标计算方法.txt 2 ●●●●● patch | view | raw | blame | history
doc/打法.txt 9 ●●●●● patch | view | raw | blame | history
doc/按键.txt 29 ●●●●● patch | view | raw | blame | history
doc/流程图/打怪刷图状态机.vsdx patch | view | raw | blame | history
doc/流程图/杀怪KillMonster.vsd patch | view | raw | blame | history
doc/补丁/(A Lingdong)sprite_map_pathgate_timegate(门).NPK patch | view | raw | blame | history
doc/补丁/(A)装备金币色块.NPK patch | view | raw | blame | history
doc/补丁/npk对应表.txt 84 ●●●●● patch | view | raw | blame | history
doc/补丁/t.txt 67 ●●●●● patch | view | raw | blame | history
doc/补丁/凛冬/list.txt 420 ●●●●● patch | view | raw | blame | history
doc/补丁/凛冬/sprite_common_activestatus.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_map_act5.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_map_act5_scasalair.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_map_breakableobject.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_map_cataclysm_skytower_draconiantower_object.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_map_cataclysm_snow_mountain_innet_cave_bright_object.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_map_cataclysm_snow_mountain_snow_mountain_low_object.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_map_minimap.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_map_pathgate_timegate.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_map_realskycastle.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_map_season4_buff.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_map_timegate.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_map_towers_deadtower.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_monster_dragondungeon_babydragon.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_monster_dragonknight.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_monster_flydragon.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_monster_impossible_bakal.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_monster_lizardman.NPK patch | view | raw | blame | history
doc/补丁/凛冬/sprite_monster_timegate_beginning.NPK patch | view | raw | blame | history
doc/补丁/凛冬/原始_素材/(A)sprite_map_pathgate_timegate.NPK patch | view | raw | blame | history
doc/补丁/凛冬/原始_素材/(A)sprite_map_pathgate_timegate_source.NPK patch | view | raw | blame | history
doc/补丁/凛冬/备份_怪/(A)sprite_monster_dragondungeon_babydragon.NPK patch | view | raw | blame | history
doc/补丁/凛冬/备份_怪/(A)sprite_monster_dragonknight.NPK patch | view | raw | blame | history
doc/补丁/凛冬/备份_怪/(A)sprite_monster_flydragon.NPK patch | view | raw | blame | history
doc/补丁/凛冬/备份_怪/(A)sprite_monster_impossible_bakal.NPK patch | view | raw | blame | history
doc/补丁/凛冬/备份_怪/(A)sprite_monster_lizardman.NPK patch | view | raw | blame | history
doc/补丁/凛冬/备份_怪/(A)sprite_monster_timegate_beginning.NPK patch | view | raw | blame | history
doc/补丁/卡勒特之初/npk files.txt 27 ●●●●● patch | view | raw | blame | history
doc/补丁/卡勒特之初/sprite_map_timegate.NPK patch | view | raw | blame | history
doc/补丁/卡勒特之初/sprite_map_westerndungeon.NPK patch | view | raw | blame | history
doc/补丁/坐标计算方法.txt 2 ●●●●● patch | view | raw | blame | history
doc/补丁/天空之城/(A)sprite_monster_soldier.NPK patch | view | raw | blame | history
doc/补丁/天空之城/(A)侍剑骑兵.NPK patch | view | raw | blame | history
doc/补丁/天空之城/(A)勒格恩.NPK patch | view | raw | blame | history
doc/补丁/天空之城/(A)罪恶之眼.NPK patch | view | raw | blame | history
doc/补丁/天空之城/(A)阿克雄.NPK patch | view | raw | blame | history
doc/补丁原图/Hsv颜色定义.png patch | view | raw | blame | history
doc/补丁原图/color说明.txt 6 ●●●●● patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/1.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/1.psd patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/2.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/2.psd patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/凛冬_怪.txt patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/10_0.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/10_1.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/12_0.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/12_1.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/13_0.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/13_1.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/14_0.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/14_1.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/15_0.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/15_1.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/18_0.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/18_1.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/1_0.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/1_1.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/2_0.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/2_1.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/4_0.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/4_1.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/5_0.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/5_1.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/8_0.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/9_0.png patch | view | raw | blame | history
doc/补丁原图/地图/凛冬/原图/9_1.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/0/0.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/0/0.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/0/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/0/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/0/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/0/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/1/1.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/1/1.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/1/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/1/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/1/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/1/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/11/11.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/11/11.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/11/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/11/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/12/12.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/12/12.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/12/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/12/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/13/13.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/13/13.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/13/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/13/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/13/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/13/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/14/14.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/14/14.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/14/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/14/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/14/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/14/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/16终关/16.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/16终关/16.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/16终关/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/16终关/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/16终关/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/16终关/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/17/17.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/17/17.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/17/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/17/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/19/19.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/19/19.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/19/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/19/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/3/3.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/3/3.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/3/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/3/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/3/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/3/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/6/6.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/6/6.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/6/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/6/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/6/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/6/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/7/7.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/7/7.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/7/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/7/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/7/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/7/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/8/8.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/8/8.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/8/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/8/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/9/9.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/9/9.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/9/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/9/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_1024x768/map.txt patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/0/0.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/0/0.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/0/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/0/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/0/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/0/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/1/1.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/1/1.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/1/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/1/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/1/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/1/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/11/11.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/11/11.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/11/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/11/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/11/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/11/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/12/12.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/12/12.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/12/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/12/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/12/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/12/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/13/13.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/13/13.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/13/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/13/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/13/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/13/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/14/14.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/14/14.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/14/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/14/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/14/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/14/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/16/16.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/16/16.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/16/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/16/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/16/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/16/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/17/17.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/17/17.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/17/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/17/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/17/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/17/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/3/3.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/3/3.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/3/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/3/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/3/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/3/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/6/6.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/6/6.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/6/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/6/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/6/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/6/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/7/7.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/7/7.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/7/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/7/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/7/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/7/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/8/8.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/8/8.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/8/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/8/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/8/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/8/左下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/9/9.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/9/9.psd patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/9/右上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/9/右下.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/9/左上.png patch | view | raw | blame | history
doc/补丁原图/地图/卡勒特_800x600/9/左下.png patch | view | raw | blame | history
doc/补丁原图/数/0.png patch | view | raw | blame | history
doc/补丁原图/数/1.png patch | view | raw | blame | history
doc/补丁原图/数/10.png patch | view | raw | blame | history
doc/补丁原图/数/11.png patch | view | raw | blame | history
doc/补丁原图/数/12.png patch | view | raw | blame | history
doc/补丁原图/数/13.png patch | view | raw | blame | history
doc/补丁原图/数/14.png patch | view | raw | blame | history
doc/补丁原图/数/15.png patch | view | raw | blame | history
doc/补丁原图/数/2.png patch | view | raw | blame | history
doc/补丁原图/数/3.png patch | view | raw | blame | history
doc/补丁原图/数/4.png patch | view | raw | blame | history
doc/补丁原图/数/5.png patch | view | raw | blame | history
doc/补丁原图/数/6.png patch | view | raw | blame | history
doc/补丁原图/数/7.png patch | view | raw | blame | history
doc/补丁原图/数/8.png patch | view | raw | blame | history
doc/补丁原图/数/9.png patch | view | raw | blame | history
doc/补丁原图/数/Number1.psd patch | view | raw | blame | history
doc/补丁原图/数字/0.png patch | view | raw | blame | history
doc/补丁原图/数字/1.png patch | view | raw | blame | history
doc/补丁原图/数字/10.png patch | view | raw | blame | history
doc/补丁原图/数字/100.png patch | view | raw | blame | history
doc/补丁原图/数字/101.png patch | view | raw | blame | history
doc/补丁原图/数字/102.png patch | view | raw | blame | history
doc/补丁原图/数字/103.png patch | view | raw | blame | history
doc/补丁原图/数字/104.png patch | view | raw | blame | history
doc/补丁原图/数字/105.png patch | view | raw | blame | history
doc/补丁原图/数字/106.png patch | view | raw | blame | history
doc/补丁原图/数字/107.png patch | view | raw | blame | history
doc/补丁原图/数字/108.png patch | view | raw | blame | history
doc/补丁原图/数字/109.png patch | view | raw | blame | history
doc/补丁原图/数字/11.png patch | view | raw | blame | history
doc/补丁原图/数字/110.png patch | view | raw | blame | history
doc/补丁原图/数字/111.png patch | view | raw | blame | history
doc/补丁原图/数字/112.png patch | view | raw | blame | history
doc/补丁原图/数字/113.png patch | view | raw | blame | history
doc/补丁原图/数字/114.png patch | view | raw | blame | history
doc/补丁原图/数字/115.png patch | view | raw | blame | history
doc/补丁原图/数字/116.png patch | view | raw | blame | history
doc/补丁原图/数字/117.png patch | view | raw | blame | history
doc/补丁原图/数字/118.png patch | view | raw | blame | history
doc/补丁原图/数字/119.png patch | view | raw | blame | history
doc/补丁原图/数字/12.png patch | view | raw | blame | history
doc/补丁原图/数字/120.png patch | view | raw | blame | history
doc/补丁原图/数字/121.png patch | view | raw | blame | history
doc/补丁原图/数字/122.png patch | view | raw | blame | history
doc/补丁原图/数字/123.png patch | view | raw | blame | history
doc/补丁原图/数字/124.png patch | view | raw | blame | history
doc/补丁原图/数字/125.png patch | view | raw | blame | history
doc/补丁原图/数字/126.png patch | view | raw | blame | history
doc/补丁原图/数字/127.png patch | view | raw | blame | history
doc/补丁原图/数字/128.png patch | view | raw | blame | history
doc/补丁原图/数字/129.png patch | view | raw | blame | history
doc/补丁原图/数字/13.png patch | view | raw | blame | history
doc/补丁原图/数字/130.png patch | view | raw | blame | history
doc/补丁原图/数字/131.png patch | view | raw | blame | history
doc/补丁原图/数字/132.png patch | view | raw | blame | history
doc/补丁原图/数字/133.png patch | view | raw | blame | history
doc/补丁原图/数字/134.png patch | view | raw | blame | history
doc/补丁原图/数字/135.png patch | view | raw | blame | history
doc/补丁原图/数字/136.png patch | view | raw | blame | history
doc/补丁原图/数字/137.png patch | view | raw | blame | history
doc/补丁原图/数字/138.png patch | view | raw | blame | history
doc/补丁原图/数字/139.png patch | view | raw | blame | history
doc/补丁原图/数字/14.png patch | view | raw | blame | history
doc/补丁原图/数字/140.png patch | view | raw | blame | history
doc/补丁原图/数字/141.png patch | view | raw | blame | history
doc/补丁原图/数字/142.png patch | view | raw | blame | history
doc/补丁原图/数字/143.png patch | view | raw | blame | history
doc/补丁原图/数字/144.png patch | view | raw | blame | history
doc/补丁原图/数字/145.png patch | view | raw | blame | history
doc/补丁原图/数字/146.png patch | view | raw | blame | history
doc/补丁原图/数字/147.png patch | view | raw | blame | history
doc/补丁原图/数字/148.png patch | view | raw | blame | history
doc/补丁原图/数字/149.png patch | view | raw | blame | history
doc/补丁原图/数字/15.png patch | view | raw | blame | history
doc/补丁原图/数字/150.png patch | view | raw | blame | history
doc/补丁原图/数字/151.png patch | view | raw | blame | history
doc/补丁原图/数字/152.png patch | view | raw | blame | history
doc/补丁原图/数字/153.png patch | view | raw | blame | history
doc/补丁原图/数字/154.png patch | view | raw | blame | history
doc/补丁原图/数字/155.png patch | view | raw | blame | history
doc/补丁原图/数字/156.png patch | view | raw | blame | history
doc/补丁原图/数字/157.png patch | view | raw | blame | history
doc/补丁原图/数字/158.png patch | view | raw | blame | history
doc/补丁原图/数字/159.png patch | view | raw | blame | history
doc/补丁原图/数字/16.png patch | view | raw | blame | history
doc/补丁原图/数字/160.png patch | view | raw | blame | history
doc/补丁原图/数字/161.png patch | view | raw | blame | history
doc/补丁原图/数字/162.png patch | view | raw | blame | history
doc/补丁原图/数字/163.png patch | view | raw | blame | history
doc/补丁原图/数字/164.png patch | view | raw | blame | history
doc/补丁原图/数字/165.png patch | view | raw | blame | history
doc/补丁原图/数字/166.png patch | view | raw | blame | history
doc/补丁原图/数字/167.png patch | view | raw | blame | history
doc/补丁原图/数字/168.png patch | view | raw | blame | history
doc/补丁原图/数字/169.png patch | view | raw | blame | history
doc/补丁原图/数字/17.png patch | view | raw | blame | history
doc/补丁原图/数字/170.png patch | view | raw | blame | history
doc/补丁原图/数字/171.png patch | view | raw | blame | history
doc/补丁原图/数字/172.png patch | view | raw | blame | history
doc/补丁原图/数字/173.png patch | view | raw | blame | history
doc/补丁原图/数字/174.png patch | view | raw | blame | history
doc/补丁原图/数字/175.png patch | view | raw | blame | history
doc/补丁原图/数字/176.png patch | view | raw | blame | history
doc/补丁原图/数字/177.png patch | view | raw | blame | history
doc/补丁原图/数字/178.png patch | view | raw | blame | history
doc/补丁原图/数字/179.png patch | view | raw | blame | history
doc/补丁原图/数字/18.png patch | view | raw | blame | history
doc/补丁原图/数字/180.png patch | view | raw | blame | history
doc/补丁原图/数字/181.png patch | view | raw | blame | history
doc/补丁原图/数字/182.png patch | view | raw | blame | history
doc/补丁原图/数字/183.png patch | view | raw | blame | history
doc/补丁原图/数字/184.png patch | view | raw | blame | history
doc/补丁原图/数字/185.png patch | view | raw | blame | history
doc/补丁原图/数字/186.png patch | view | raw | blame | history
doc/补丁原图/数字/187.png patch | view | raw | blame | history
doc/补丁原图/数字/188.png patch | view | raw | blame | history
doc/补丁原图/数字/189.png patch | view | raw | blame | history
doc/补丁原图/数字/19.png patch | view | raw | blame | history
doc/补丁原图/数字/190.png patch | view | raw | blame | history
doc/补丁原图/数字/191.png patch | view | raw | blame | history
doc/补丁原图/数字/192.png patch | view | raw | blame | history
doc/补丁原图/数字/193.png patch | view | raw | blame | history
doc/补丁原图/数字/194.png patch | view | raw | blame | history
doc/补丁原图/数字/195.png patch | view | raw | blame | history
doc/补丁原图/数字/196.png patch | view | raw | blame | history
doc/补丁原图/数字/197.png patch | view | raw | blame | history
doc/补丁原图/数字/198.png patch | view | raw | blame | history
doc/补丁原图/数字/199.png patch | view | raw | blame | history
doc/补丁原图/数字/2.png patch | view | raw | blame | history
doc/补丁原图/数字/20.png patch | view | raw | blame | history
doc/补丁原图/数字/200.png patch | view | raw | blame | history
doc/补丁原图/数字/201.png patch | view | raw | blame | history
doc/补丁原图/数字/202.png patch | view | raw | blame | history
doc/补丁原图/数字/203.png patch | view | raw | blame | history
doc/补丁原图/数字/204.png patch | view | raw | blame | history
doc/补丁原图/数字/205.png patch | view | raw | blame | history
doc/补丁原图/数字/206.png patch | view | raw | blame | history
doc/补丁原图/数字/207.png patch | view | raw | blame | history
doc/补丁原图/数字/208.png patch | view | raw | blame | history
doc/补丁原图/数字/209.png patch | view | raw | blame | history
doc/补丁原图/数字/21.png patch | view | raw | blame | history
doc/补丁原图/数字/210.png patch | view | raw | blame | history
doc/补丁原图/数字/211.png patch | view | raw | blame | history
doc/补丁原图/数字/212.png patch | view | raw | blame | history
doc/补丁原图/数字/213.png patch | view | raw | blame | history
doc/补丁原图/数字/214.png patch | view | raw | blame | history
doc/补丁原图/数字/215.png patch | view | raw | blame | history
doc/补丁原图/数字/216.png patch | view | raw | blame | history
doc/补丁原图/数字/217.png patch | view | raw | blame | history
doc/补丁原图/数字/218.png patch | view | raw | blame | history
doc/补丁原图/数字/219.png patch | view | raw | blame | history
doc/补丁原图/数字/22.png patch | view | raw | blame | history
doc/补丁原图/数字/220.png patch | view | raw | blame | history
doc/补丁原图/数字/221.png patch | view | raw | blame | history
doc/补丁原图/数字/222.png patch | view | raw | blame | history
doc/补丁原图/数字/223.png patch | view | raw | blame | history
doc/补丁原图/数字/224.png patch | view | raw | blame | history
doc/补丁原图/数字/225.png patch | view | raw | blame | history
doc/补丁原图/数字/226.png patch | view | raw | blame | history
doc/补丁原图/数字/227.png patch | view | raw | blame | history
doc/补丁原图/数字/228.png patch | view | raw | blame | history
doc/补丁原图/数字/229.png patch | view | raw | blame | history
doc/补丁原图/数字/23.png patch | view | raw | blame | history
doc/补丁原图/数字/230.png patch | view | raw | blame | history
doc/补丁原图/数字/231.png patch | view | raw | blame | history
doc/补丁原图/数字/232.png patch | view | raw | blame | history
doc/补丁原图/数字/233.png patch | view | raw | blame | history
doc/补丁原图/数字/234.png patch | view | raw | blame | history
doc/补丁原图/数字/235.png patch | view | raw | blame | history
doc/补丁原图/数字/236.png patch | view | raw | blame | history
doc/补丁原图/数字/237.png patch | view | raw | blame | history
doc/补丁原图/数字/238.png patch | view | raw | blame | history
doc/补丁原图/数字/239.png patch | view | raw | blame | history
doc/补丁原图/数字/24.png patch | view | raw | blame | history
doc/补丁原图/数字/240.png patch | view | raw | blame | history
doc/补丁原图/数字/241.png patch | view | raw | blame | history
doc/补丁原图/数字/242.png patch | view | raw | blame | history
doc/补丁原图/数字/243.png patch | view | raw | blame | history
doc/补丁原图/数字/244.png patch | view | raw | blame | history
doc/补丁原图/数字/245.png patch | view | raw | blame | history
doc/补丁原图/数字/246.png patch | view | raw | blame | history
doc/补丁原图/数字/247.png patch | view | raw | blame | history
doc/补丁原图/数字/248.png patch | view | raw | blame | history
doc/补丁原图/数字/249.png patch | view | raw | blame | history
doc/补丁原图/数字/25.png patch | view | raw | blame | history
doc/补丁原图/数字/250.png patch | view | raw | blame | history
doc/补丁原图/数字/251.png patch | view | raw | blame | history
doc/补丁原图/数字/252.png patch | view | raw | blame | history
doc/补丁原图/数字/253.png patch | view | raw | blame | history
doc/补丁原图/数字/254.png patch | view | raw | blame | history
doc/补丁原图/数字/255.png patch | view | raw | blame | history
doc/补丁原图/数字/26.png patch | view | raw | blame | history
doc/补丁原图/数字/27.png patch | view | raw | blame | history
doc/补丁原图/数字/28.png patch | view | raw | blame | history
doc/补丁原图/数字/29.png patch | view | raw | blame | history
doc/补丁原图/数字/3.png patch | view | raw | blame | history
doc/补丁原图/数字/30.png patch | view | raw | blame | history
doc/补丁原图/数字/31.png patch | view | raw | blame | history
doc/补丁原图/数字/32.png patch | view | raw | blame | history
doc/补丁原图/数字/33.png patch | view | raw | blame | history
doc/补丁原图/数字/34.png patch | view | raw | blame | history
doc/补丁原图/数字/35.png patch | view | raw | blame | history
doc/补丁原图/数字/36.png patch | view | raw | blame | history
doc/补丁原图/数字/37.png patch | view | raw | blame | history
doc/补丁原图/数字/38.png patch | view | raw | blame | history
doc/补丁原图/数字/39.png patch | view | raw | blame | history
doc/补丁原图/数字/4.png patch | view | raw | blame | history
doc/补丁原图/数字/40.png patch | view | raw | blame | history
doc/补丁原图/数字/41.png patch | view | raw | blame | history
doc/补丁原图/数字/42.png patch | view | raw | blame | history
doc/补丁原图/数字/43.png patch | view | raw | blame | history
doc/补丁原图/数字/44.png patch | view | raw | blame | history
doc/补丁原图/数字/45.png patch | view | raw | blame | history
doc/补丁原图/数字/46.png patch | view | raw | blame | history
doc/补丁原图/数字/47.png patch | view | raw | blame | history
doc/补丁原图/数字/48.png patch | view | raw | blame | history
doc/补丁原图/数字/49.png patch | view | raw | blame | history
doc/补丁原图/数字/5.png patch | view | raw | blame | history
doc/补丁原图/数字/50.png patch | view | raw | blame | history
doc/补丁原图/数字/51.png patch | view | raw | blame | history
doc/补丁原图/数字/52.png patch | view | raw | blame | history
doc/补丁原图/数字/53.png patch | view | raw | blame | history
doc/补丁原图/数字/54.png patch | view | raw | blame | history
doc/补丁原图/数字/55.png patch | view | raw | blame | history
doc/补丁原图/数字/56.png patch | view | raw | blame | history
doc/补丁原图/数字/57.png patch | view | raw | blame | history
doc/补丁原图/数字/58.png patch | view | raw | blame | history
doc/补丁原图/数字/59.png patch | view | raw | blame | history
doc/补丁原图/数字/6.png patch | view | raw | blame | history
doc/补丁原图/数字/60.png patch | view | raw | blame | history
doc/补丁原图/数字/61.png patch | view | raw | blame | history
doc/补丁原图/数字/62.png patch | view | raw | blame | history
doc/补丁原图/数字/63.png patch | view | raw | blame | history
doc/补丁原图/数字/64.png patch | view | raw | blame | history
doc/补丁原图/数字/65.png patch | view | raw | blame | history
doc/补丁原图/数字/66.png patch | view | raw | blame | history
doc/补丁原图/数字/67.png patch | view | raw | blame | history
doc/补丁原图/数字/68.png patch | view | raw | blame | history
doc/补丁原图/数字/69.png patch | view | raw | blame | history
doc/补丁原图/数字/7.png patch | view | raw | blame | history
doc/补丁原图/数字/70.png patch | view | raw | blame | history
doc/补丁原图/数字/71.png patch | view | raw | blame | history
doc/补丁原图/数字/72.png patch | view | raw | blame | history
doc/补丁原图/数字/73.png patch | view | raw | blame | history
doc/补丁原图/数字/74.png patch | view | raw | blame | history
doc/补丁原图/数字/75.png patch | view | raw | blame | history
doc/补丁原图/数字/76.png patch | view | raw | blame | history
doc/补丁原图/数字/77.png patch | view | raw | blame | history
doc/补丁原图/数字/78.png patch | view | raw | blame | history
doc/补丁原图/数字/79.png patch | view | raw | blame | history
doc/补丁原图/数字/8.png patch | view | raw | blame | history
doc/补丁原图/数字/80.png patch | view | raw | blame | history
doc/补丁原图/数字/81.png patch | view | raw | blame | history
doc/补丁原图/数字/82.png patch | view | raw | blame | history
doc/补丁原图/数字/83.png patch | view | raw | blame | history
doc/补丁原图/数字/84.png patch | view | raw | blame | history
doc/补丁原图/数字/85.png patch | view | raw | blame | history
doc/补丁原图/数字/86.png patch | view | raw | blame | history
doc/补丁原图/数字/87.png patch | view | raw | blame | history
doc/补丁原图/数字/88.png patch | view | raw | blame | history
doc/补丁原图/数字/89.png patch | view | raw | blame | history
doc/补丁原图/数字/9.png patch | view | raw | blame | history
doc/补丁原图/数字/90.png patch | view | raw | blame | history
doc/补丁原图/数字/91.png patch | view | raw | blame | history
doc/补丁原图/数字/92.png patch | view | raw | blame | history
doc/补丁原图/数字/93.png patch | view | raw | blame | history
doc/补丁原图/数字/94.png patch | view | raw | blame | history
doc/补丁原图/数字/95.png patch | view | raw | blame | history
doc/补丁原图/数字/96.png patch | view | raw | blame | history
doc/补丁原图/数字/97.png patch | view | raw | blame | history
doc/补丁原图/数字/98.png patch | view | raw | blame | history
doc/补丁原图/数字/99.png patch | view | raw | blame | history
doc/补丁原图/称号/影子杀手称号(灰).png patch | view | raw | blame | history
doc/补丁原图/称号/影子杀手称号(蓝).png patch | view | raw | blame | history
doc/补丁原图/门/timegate_left01.png patch | view | raw | blame | history
doc/补丁原图/门/timegate_left01.psd patch | view | raw | blame | history
doc/补丁原图/门/timegate_up01.png patch | view | raw | blame | history
doc/补丁原图/门/timegate_up01.psd patch | view | raw | blame | history
doc/补丁原图/门/门上的定位点说明.txt 8 ●●●● patch | view | raw | blame | history
src/RichCreator.Editor/App.xaml 2 ●●● patch | view | raw | blame | history
src/RichCreator.Editor/MainWindow.xaml 5 ●●●●● patch | view | raw | blame | history
src/RichCreator.Editor/MainWindow.xaml.cs 22 ●●●●● patch | view | raw | blame | history
src/RichCreator.Editor/Tools/MapEditor.xaml.cs 10 ●●●●● patch | view | raw | blame | history
src/RichCreator.Utility/CV/CVHelper.cs 97 ●●●●● patch | view | raw | blame | history
src/RichCreator.Utility/CV/ChannelCVHelper.cs 19 ●●●● patch | view | raw | blame | history
src/RichCreator.Utility/CV/DnfCVHelper.cs 208 ●●●● patch | view | raw | blame | history
src/RichCreator.Utility/CV/KaleteCVHelper.cs 12 ●●●● patch | view | raw | blame | history
src/RichCreator.Utility/CV/LindongCVHelper.cs 176 ●●●●● patch | view | raw | blame | history
src/RichCreator.Utility/CV/ShikongzhimenCVHelper.cs 158 ●●●●● patch | view | raw | blame | history
src/RichCreator.Utility/CV/SkillCVHelper.cs 7 ●●●●● patch | view | raw | blame | history
src/RichCreator.Utility/CV/WeGameCVHelper.cs 34 ●●●●● patch | view | raw | blame | history
src/RichCreator.Utility/Dnf/MoveIntent.cs 6 ●●●●● patch | view | raw | blame | history
src/RichCreator.Utility/Dnf/SpeedProvider.cs 2 ●●● patch | view | raw | blame | history
src/RichCreator.Utility/InputControl/HardwareInputControl.cs 2 ●●●●● patch | view | raw | blame | history
src/RichCreator.Utility/Maps/HouseInfo.cs 243 ●●●● patch | view | raw | blame | history
src/RichCreator.Utility/Maps/HousePathInfo.cs 142 ●●●● patch | view | raw | blame | history
src/RichCreator.Utility/PathFinding/Dijkstra.cs 8 ●●●● patch | view | raw | blame | history
src/RichCreator.Utility/RichCreator.Utility.csproj 3 ●●●● patch | view | raw | blame | history
src/RichCreator.Utility/Skills/SkillInfo.cs 64 ●●●●● patch | view | raw | blame | history
src/RichCreator.Utility/Skills/SkillQueue.cs 4 ●●● patch | view | raw | blame | history
src/RichCreator.Utility/Structs/ZTLinePoint.cs 2 ●●● patch | view | raw | blame | history
src/RichCreator.Utility/Utilitys/GeoHelper.cs 36 ●●●●● patch | view | raw | blame | history
src/RichCreator/Dnf/DnfRole.cs 437 ●●●●● patch | view | raw | blame | history
src/RichCreator/Dnf/MapInfo.cs 141 ●●●●● patch | view | raw | blame | history
src/RichCreator/Jobs/DNFJob.cs 223 ●●●● patch | view | raw | blame | history
src/RichCreator/Jobs/WeGameJob.cs 142 ●●●● patch | view | raw | blame | history
src/RichCreator/MainWindow.xaml.cs 55 ●●●● patch | view | raw | blame | history
src/RichCreator/Maps/Kalete/KaleteMap.cs 337 ●●●● patch | view | raw | blame | history
src/RichCreator/Maps/Kalete/KaleteMiniMap.cs 2 ●●● patch | view | raw | blame | history
src/RichCreator/Maps/Kalete/OutOfBounds.cs 87 ●●●●● patch | view | raw | blame | history
src/RichCreator/Maps/Lindong/LindongMap.cs 620 ●●●●● patch | view | raw | blame | history
src/RichCreator/Maps/Lindong/LindongMiniMap.cs 2 ●●● patch | view | raw | blame | history
src/RichCreator/Maps/Lindong/OutOfBounds.cs 3 ●●●● patch | view | raw | blame | history
src/RichCreator/Maps/ShikongzhimenMapBase.cs 130 ●●●●● patch | view | raw | blame | history
src/RichCreator/Maps/SkillSetting/SkillSettingMap.cs 46 ●●●● patch | view | raw | blame | history
src/RichCreator/Maps/Test/TestMap.cs 38 ●●●● patch | view | raw | blame | history
src/RichCreator/RichCreator.csproj 15 ●●●● patch | view | raw | blame | history
src/RichCreator/StateMachines/ChannelStateMachine.cs 45 ●●●● patch | view | raw | blame | history
src/RichCreator/StateMachines/KillMonsterStateMachine.cs 509 ●●●● patch | view | raw | blame | history
src/RichCreator/Utilitys/AttackRectangle.cs 41 ●●●● patch | view | raw | blame | history
src/RichCreator/Utilitys/FuncUtils.cs 8 ●●●● patch | view | raw | blame | history
src/RichCreator/Utilitys/GameUtils.cs 68 ●●●●● patch | view | raw | blame | history
src/RichCreator/Utilitys/Utils.cs 43 ●●●●● patch | view | raw | blame | history
src/RichCreator/configs/RichCreator.config 7 ●●●● patch | view | raw | blame | history
src/RichCreator/configs/kalete.txt 40 ●●●●● patch | view | raw | blame | history
src/RichCreator/configs/lingdong.txt 40 ●●●●● patch | view | raw | blame | history
doc/CNNClassifier/App.config
File was deleted
doc/CNNClassifier/CNNClassifier.csproj
File was deleted
doc/CNNClassifier/CNNClassifier.sln
File was deleted
doc/CNNClassifier/Form1.Designer.cs
File was deleted
doc/CNNClassifier/Form1.cs
File was deleted
doc/CNNClassifier/Form1.resx
File was deleted
doc/CNNClassifier/Program.cs
File was deleted
doc/CNNClassifier/Properties/AssemblyInfo.cs
File was deleted
doc/CNNClassifier/Properties/Resources.Designer.cs
File was deleted
doc/CNNClassifier/Properties/Resources.resx
File was deleted
doc/CNNClassifier/Properties/Settings.Designer.cs
File was deleted
doc/CNNClassifier/Properties/Settings.settings
File was deleted
doc/CNNClassifier/changeFileName.Designer.cs
File was deleted
doc/CNNClassifier/changeFileName.cs
File was deleted
doc/CNNClassifier/changeFileName.resx
File was deleted
doc/Hog.xml
File was deleted
doc/ThingItemColors.txt
File was deleted
doc/apk说明.txt
File was deleted
doc/chi_sim.traineddata
Binary files differ
doc/npk对应表_old.txt
File was deleted
doc/skill.txt
@@ -1,8 +1,48 @@
1图空格加G若怪不死完补ead技能
q    朔风牵引
w    风卷残云
e    双翼风刃
r    风暴之眼
t    九霄风雷
y    万象风龙阵
a    风鸣冲击
s    真空旋风破
d    游离之风
f    风暴之拳
g    游龙惊风破
h    无限风域
2图w补技能
1.御风之力   2.风神决
1.第一行第一个 2.第三行第二个 3.第二行倒数第三个 4.第二行倒数第五个 5第二行倒数第一个
3图q加T若怪不死补那三个技能
凛冬
1 空格+G 补技能EAD
2 W 补技能EAD
3 Q+T补技能EAD
4 E 补技能EAD
5 W补技能EAD
6 R+T
7 Q 补技能EAD
8 W 补技能EAD
9 H+Y+T+R+F     最后一个房间就是有技能就放的那种的
卡勒特之初(第一行第一个为0房间)
0:  R   E
1:  Q   w
6:  g
7:  r
8:  h
13: Q   E
12: t
17: Q   f(w)
16: y
doc/地图/卡勒特_800x600/map.txt
File was deleted
doc/坐标计算方法.txt
File was deleted
doc/打法.txt
File was deleted
doc/按键.txt
File was deleted
doc/流程图/打怪刷图状态机.vsdx
Binary files differ
doc/流程图/杀怪KillMonster.vsd
Binary files differ
doc/补丁/(A Lingdong)sprite_map_pathgate_timegate(门).NPK
Binary files differ
doc/补丁/(A)装备金币色块.NPK
Binary files differ
doc/补丁/npk对应表.txt
File was renamed from doc/npk对应表.txt
@@ -1,3 +1,87 @@
sprite_item_common 装备
sprite_item_weapon_fighter
凛冬
sprite_interface2_dungeonloading.NPK 没啥用
sprite_map_timegate_beginning.NPK 蛋和地图
sprite_map_timegate.NPK 一些效果不知用在哪儿
sprite_map_cataclysm_skytower_draconiantower_object.NPK 地图物品
sprite_monster.NPK 怪物头像和红底
sprite_common_commoneffect_new_superarmor.NPK 怪物被攻击后的防护罩
sprite_common_barrier.NPK 怪物被攻击后的防护罩
sprite_monster_dragonknight.NPK 各种怪和攻击效果
sprite_monster_common.NPK 怪自身的各种效果
sprite_common_commoneffect.NPK
sprite_common_hiteffect_elementalhiteffect.NPK
sprite_common_etc_damagefontskin.NPK
sprite_common_hiteffect.NPK
sprite_monster.NPK
sprite_item.NPK
sprite_common_digit_sp.NPK
sprite_common_commoneffect_new_superarmor.NPK
sprite_common_barrier.NPK
sprite_item_new_equipment_01_weapon_fighter_tonfa.NPK
sprite_common_commoneffect_glow.NPK
sprite_common_commoneffect_status_effect.NPK
sprite_item_new_equipment_10_support.NPK
sprite_item_new_equipment_01_weapon_mage_pole.NPK
sprite_item_new_equipment_08_necklace.NPK
sprite_item_new_equipment_03_leather_coat.NPK
sprite_common_digit_level02.NPK
sprite_item_title_event_chn_sod_2.NPK
卡勒特之初
sprite_map_timegate_formacartel.NPK
sprite_map_act7_supplycut.NPK    SUCCESS    Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened
sprite_map_arden.NPK    SUCCESS    Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened
sprite_map_haze.NPK    SUCCESS    Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened
sprite_monster_timegate.NPK    SUCCESS    Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened
sprite_monster_haze.NPK    SUCCESS    Offset: 1,468,628, Length: 512
sprite_monster_snowman.NPK    SUCCESS    Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened
sprite_interface2_common_digit_pvp_room_number.NPK    SUCCESS    Offset: 348, Length: 512
sprite_map_minimap.NPK    SUCCESS    Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened
sprite_monster_championbreak.NPK    SUCCESS    Offset: 316, Length: 512
sprite_monster_ghoul.NPK    SUCCESS    Offset: 136,607, Length: 512
sprite_monster_heaven_mechanicgiselle.NPK    SUCCESS    Offset: 883,199, Length: 512
打完后出现的
sprite_monster_headlessknight.NPK    SUCCESS    Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened
sprite_monster_apc_sand_doll.NPK    SUCCESS    Offset: 920,643, Length: 4,096, Priority: Normal
sprite_monster_apc.NPK    SUCCESS    Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened
sprite_monster_cartel_smokegranade.NPK    SUCCESS    Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened
sprite_monster_draconian.NPK    SUCCESS    Offset: 816,051, Length: 512
sprite_interface2_result_ver2.0.NPK    SUCCESS    Offset: 141,206, Length: 4,608
sprite_interface2_secret_shop.NPK    SUCCESS    Offset: 1,572, Length: 6,144
sprite_interface2_result_ver2.0_rank_letter.NPK    SUCCESS    Offset: 936, Length: 8,192, Priority: Normal
sprite_common_digit.NPK    SUCCESS    Offset: 128,513, Length: 512
sprite_interface2_reward_ver2.0.NPK    SUCCESS    Offset: 2,751,716, Length: 1,024
sprite_interface_digit.NPK    SUCCESS    Offset: 5,086, Length: 512
sprite_interface_expertjob.NPK    SUCCESS    Offset: 82,109, Length: 512
common常见贴图
sprite_common_activestatus.NPK 异常状态效果
sprite_common_changedeffect.NPK 之前赛MM卖的花
doc/补丁/t.txt
File was deleted
doc/补丁/凛冬/list.txt
File was deleted
doc/补丁/凛冬/sprite_common_activestatus.NPK
Binary files differ
doc/补丁/凛冬/sprite_map_act5.NPK
Binary files differ
doc/补丁/凛冬/sprite_map_act5_scasalair.NPK
Binary files differ
doc/补丁/凛冬/sprite_map_breakableobject.NPK
Binary files differ
doc/补丁/凛冬/sprite_map_cataclysm_skytower_draconiantower_object.NPK
Binary files differ
doc/补丁/凛冬/sprite_map_cataclysm_snow_mountain_innet_cave_bright_object.NPK
Binary files differ
doc/补丁/凛冬/sprite_map_cataclysm_snow_mountain_snow_mountain_low_object.NPK
Binary files differ
doc/补丁/凛冬/sprite_map_minimap.NPK
Binary files differ
doc/补丁/凛冬/sprite_map_pathgate_timegate.NPK
Binary files differ
doc/补丁/凛冬/sprite_map_realskycastle.NPK
Binary files differ
doc/补丁/凛冬/sprite_map_season4_buff.NPK
Binary files differ
doc/补丁/凛冬/sprite_map_timegate.NPK
Binary files differ
doc/补丁/凛冬/sprite_map_towers_deadtower.NPK
Binary files differ
doc/补丁/凛冬/sprite_monster_dragondungeon_babydragon.NPK
Binary files differ
doc/补丁/凛冬/sprite_monster_dragonknight.NPK
Binary files differ
doc/补丁/凛冬/sprite_monster_flydragon.NPK
Binary files differ
doc/补丁/凛冬/sprite_monster_impossible_bakal.NPK
Binary files differ
doc/补丁/凛冬/sprite_monster_lizardman.NPK
Binary files differ
doc/补丁/凛冬/sprite_monster_timegate_beginning.NPK
Binary files differ
doc/补丁/凛冬/原始_素材/(A)sprite_map_pathgate_timegate.NPK
Binary files differ
doc/补丁/凛冬/原始_素材/(A)sprite_map_pathgate_timegate_source.NPK
Binary files differ
doc/补丁/凛冬/备份_怪/(A)sprite_monster_dragondungeon_babydragon.NPK
Binary files differ
doc/补丁/凛冬/备份_怪/(A)sprite_monster_dragonknight.NPK
Binary files differ
doc/补丁/凛冬/备份_怪/(A)sprite_monster_flydragon.NPK
Binary files differ
doc/补丁/凛冬/备份_怪/(A)sprite_monster_impossible_bakal.NPK
Binary files differ
doc/补丁/凛冬/备份_怪/(A)sprite_monster_lizardman.NPK
Binary files differ
doc/补丁/凛冬/备份_怪/(A)sprite_monster_timegate_beginning.NPK
Binary files differ
doc/补丁/卡勒特之初/npk files.txt
File was deleted
doc/补丁/卡勒特之初/sprite_map_timegate.NPK
copy from "doc/\350\241\245\344\270\201/\345\207\233\345\206\254/\345\216\237\345\247\213_\345\234\260\345\233\276/sprite_map_timegate.NPK" copy to "doc/\350\241\245\344\270\201/\345\215\241\345\213\222\347\211\271\344\271\213\345\210\235/sprite_map_timegate.NPK" Binary files differ
doc/补丁/卡勒特之初/sprite_map_westerndungeon.NPK
Binary files differ
doc/补丁/坐标计算方法.txt
New file
@@ -0,0 +1,2 @@
(原坐标+原宽高)-现宽高=现在应该的坐标
另 现宽高+现坐标应<帧域宽高
doc/补丁/天空之城/(A)sprite_monster_soldier.NPK
Binary files differ
doc/补丁/天空之城/(A)侍剑骑兵.NPK
Binary files differ
doc/补丁/天空之城/(A)勒格恩.NPK
Binary files differ
doc/补丁/天空之城/(A)罪恶之眼.NPK
Binary files differ
doc/补丁/天空之城/(A)阿克雄.NPK
Binary files differ
doc/补丁原图/Hsv颜色定义.png

doc/补丁原图/color说明.txt
@@ -52,4 +52,10 @@
    rgb  0    0    255
    rgb  0    0    ff
    hsv  0.6667 1.0    1.0
金币和装备 黄
        rgb 255  229 0
        rgb ff   e5  00
        hsv 0.15  1.0   1.0
    
doc/补丁原图/地图/凛冬/1.png

doc/补丁原图/地图/凛冬/1.psd
Binary files differ
doc/补丁原图/地图/凛冬/2.png

doc/补丁原图/地图/凛冬/2.psd
Binary files differ
doc/补丁原图/地图/凛冬/凛冬_怪.txt
doc/补丁原图/地图/凛冬/原图/10_0.png

doc/补丁原图/地图/凛冬/原图/10_1.png

doc/补丁原图/地图/凛冬/原图/12_0.png

doc/补丁原图/地图/凛冬/原图/12_1.png

doc/补丁原图/地图/凛冬/原图/13_0.png

doc/补丁原图/地图/凛冬/原图/13_1.png

doc/补丁原图/地图/凛冬/原图/14_0.png

doc/补丁原图/地图/凛冬/原图/14_1.png

doc/补丁原图/地图/凛冬/原图/15_0.png

doc/补丁原图/地图/凛冬/原图/15_1.png

doc/补丁原图/地图/凛冬/原图/18_0.png

doc/补丁原图/地图/凛冬/原图/18_1.png

doc/补丁原图/地图/凛冬/原图/1_0.png

doc/补丁原图/地图/凛冬/原图/1_1.png

doc/补丁原图/地图/凛冬/原图/2_0.png

doc/补丁原图/地图/凛冬/原图/2_1.png

doc/补丁原图/地图/凛冬/原图/4_0.png

doc/补丁原图/地图/凛冬/原图/4_1.png

doc/补丁原图/地图/凛冬/原图/5_0.png

doc/补丁原图/地图/凛冬/原图/5_1.png

doc/补丁原图/地图/凛冬/原图/8_0.png

doc/补丁原图/地图/凛冬/原图/9_0.png

doc/补丁原图/地图/凛冬/原图/9_1.png

doc/补丁原图/地图/卡勒特_1024x768/0/0.png

doc/补丁原图/地图/卡勒特_1024x768/0/0.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/0/右上.png

doc/补丁原图/地图/卡勒特_1024x768/0/右下.png

doc/补丁原图/地图/卡勒特_1024x768/0/左上.png

doc/补丁原图/地图/卡勒特_1024x768/0/左下.png

doc/补丁原图/地图/卡勒特_1024x768/1/1.png

doc/补丁原图/地图/卡勒特_1024x768/1/1.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/1/右上.png

doc/补丁原图/地图/卡勒特_1024x768/1/右下.png

doc/补丁原图/地图/卡勒特_1024x768/1/左上.png

doc/补丁原图/地图/卡勒特_1024x768/1/左下.png

doc/补丁原图/地图/卡勒特_1024x768/11/11.png

doc/补丁原图/地图/卡勒特_1024x768/11/11.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/11/右上.png

doc/补丁原图/地图/卡勒特_1024x768/11/左上.png

doc/补丁原图/地图/卡勒特_1024x768/12/12.png

doc/补丁原图/地图/卡勒特_1024x768/12/12.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/12/右上.png

doc/补丁原图/地图/卡勒特_1024x768/12/左上.png

doc/补丁原图/地图/卡勒特_1024x768/13/13.png

doc/补丁原图/地图/卡勒特_1024x768/13/13.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/13/右上.png

doc/补丁原图/地图/卡勒特_1024x768/13/右下.png

doc/补丁原图/地图/卡勒特_1024x768/13/左上.png

doc/补丁原图/地图/卡勒特_1024x768/13/左下.png

doc/补丁原图/地图/卡勒特_1024x768/14/14.png

doc/补丁原图/地图/卡勒特_1024x768/14/14.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/14/右上.png

doc/补丁原图/地图/卡勒特_1024x768/14/右下.png

doc/补丁原图/地图/卡勒特_1024x768/14/左上.png

doc/补丁原图/地图/卡勒特_1024x768/14/左下.png

doc/补丁原图/地图/卡勒特_1024x768/16终关/16.png

doc/补丁原图/地图/卡勒特_1024x768/16终关/16.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/16终关/右上.png

doc/补丁原图/地图/卡勒特_1024x768/16终关/右下.png

doc/补丁原图/地图/卡勒特_1024x768/16终关/左上.png

doc/补丁原图/地图/卡勒特_1024x768/16终关/左下.png

doc/补丁原图/地图/卡勒特_1024x768/17/17.png

doc/补丁原图/地图/卡勒特_1024x768/17/17.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/17/右上.png

doc/补丁原图/地图/卡勒特_1024x768/17/左上.png

doc/补丁原图/地图/卡勒特_1024x768/19/19.png

doc/补丁原图/地图/卡勒特_1024x768/19/19.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/19/右上.png

doc/补丁原图/地图/卡勒特_1024x768/19/左上.png

doc/补丁原图/地图/卡勒特_1024x768/3/3.png

doc/补丁原图/地图/卡勒特_1024x768/3/3.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/3/右上.png

doc/补丁原图/地图/卡勒特_1024x768/3/右下.png

doc/补丁原图/地图/卡勒特_1024x768/3/左上.png

doc/补丁原图/地图/卡勒特_1024x768/3/左下.png

doc/补丁原图/地图/卡勒特_1024x768/6/6.png

doc/补丁原图/地图/卡勒特_1024x768/6/6.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/6/右上.png

doc/补丁原图/地图/卡勒特_1024x768/6/右下.png

doc/补丁原图/地图/卡勒特_1024x768/6/左上.png

doc/补丁原图/地图/卡勒特_1024x768/6/左下.png

doc/补丁原图/地图/卡勒特_1024x768/7/7.png

doc/补丁原图/地图/卡勒特_1024x768/7/7.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/7/右上.png

doc/补丁原图/地图/卡勒特_1024x768/7/右下.png

doc/补丁原图/地图/卡勒特_1024x768/7/左上.png

doc/补丁原图/地图/卡勒特_1024x768/7/左下.png

doc/补丁原图/地图/卡勒特_1024x768/8/8.png

doc/补丁原图/地图/卡勒特_1024x768/8/8.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/8/右上.png

doc/补丁原图/地图/卡勒特_1024x768/8/左上.png

doc/补丁原图/地图/卡勒特_1024x768/9/9.png

doc/补丁原图/地图/卡勒特_1024x768/9/9.psd
Binary files differ
doc/补丁原图/地图/卡勒特_1024x768/9/右上.png

doc/补丁原图/地图/卡勒特_1024x768/9/左上.png

doc/补丁原图/地图/卡勒特_1024x768/map.txt
doc/补丁原图/地图/卡勒特_800x600/0/0.png

doc/补丁原图/地图/卡勒特_800x600/0/0.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/0/右上.png

doc/补丁原图/地图/卡勒特_800x600/0/右下.png

doc/补丁原图/地图/卡勒特_800x600/0/左上.png

doc/补丁原图/地图/卡勒特_800x600/0/左下.png

doc/补丁原图/地图/卡勒特_800x600/1/1.png
doc/补丁原图/地图/卡勒特_800x600/1/1.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/1/右上.png
doc/补丁原图/地图/卡勒特_800x600/1/右下.png
doc/补丁原图/地图/卡勒特_800x600/1/左上.png
doc/补丁原图/地图/卡勒特_800x600/1/左下.png
doc/补丁原图/地图/卡勒特_800x600/11/11.png
doc/补丁原图/地图/卡勒特_800x600/11/11.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/11/右上.png
doc/补丁原图/地图/卡勒特_800x600/11/右下.png
doc/补丁原图/地图/卡勒特_800x600/11/左上.png
doc/补丁原图/地图/卡勒特_800x600/11/左下.png
doc/补丁原图/地图/卡勒特_800x600/12/12.png
doc/补丁原图/地图/卡勒特_800x600/12/12.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/12/右上.png
doc/补丁原图/地图/卡勒特_800x600/12/右下.png
doc/补丁原图/地图/卡勒特_800x600/12/左上.png
doc/补丁原图/地图/卡勒特_800x600/12/左下.png
doc/补丁原图/地图/卡勒特_800x600/13/13.png
doc/补丁原图/地图/卡勒特_800x600/13/13.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/13/右上.png
doc/补丁原图/地图/卡勒特_800x600/13/右下.png
doc/补丁原图/地图/卡勒特_800x600/13/左上.png
doc/补丁原图/地图/卡勒特_800x600/13/左下.png
doc/补丁原图/地图/卡勒特_800x600/14/14.png
doc/补丁原图/地图/卡勒特_800x600/14/14.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/14/右上.png
doc/补丁原图/地图/卡勒特_800x600/14/右下.png
doc/补丁原图/地图/卡勒特_800x600/14/左上.png
doc/补丁原图/地图/卡勒特_800x600/14/左下.png
doc/补丁原图/地图/卡勒特_800x600/16/16.png
doc/补丁原图/地图/卡勒特_800x600/16/16.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/16/右上.png
doc/补丁原图/地图/卡勒特_800x600/16/右下.png
doc/补丁原图/地图/卡勒特_800x600/16/左上.png
doc/补丁原图/地图/卡勒特_800x600/16/左下.png
doc/补丁原图/地图/卡勒特_800x600/17/17.png
doc/补丁原图/地图/卡勒特_800x600/17/17.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/17/右上.png
doc/补丁原图/地图/卡勒特_800x600/17/右下.png
doc/补丁原图/地图/卡勒特_800x600/17/左上.png
doc/补丁原图/地图/卡勒特_800x600/17/左下.png
doc/补丁原图/地图/卡勒特_800x600/3/3.png
doc/补丁原图/地图/卡勒特_800x600/3/3.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/3/右上.png
doc/补丁原图/地图/卡勒特_800x600/3/右下.png
doc/补丁原图/地图/卡勒特_800x600/3/左上.png
doc/补丁原图/地图/卡勒特_800x600/3/左下.png
doc/补丁原图/地图/卡勒特_800x600/6/6.png
doc/补丁原图/地图/卡勒特_800x600/6/6.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/6/右上.png
doc/补丁原图/地图/卡勒特_800x600/6/右下.png
doc/补丁原图/地图/卡勒特_800x600/6/左上.png
doc/补丁原图/地图/卡勒特_800x600/6/左下.png
doc/补丁原图/地图/卡勒特_800x600/7/7.png
doc/补丁原图/地图/卡勒特_800x600/7/7.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/7/右上.png
doc/补丁原图/地图/卡勒特_800x600/7/右下.png
doc/补丁原图/地图/卡勒特_800x600/7/左上.png
doc/补丁原图/地图/卡勒特_800x600/7/左下.png
doc/补丁原图/地图/卡勒特_800x600/8/8.png
doc/补丁原图/地图/卡勒特_800x600/8/8.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/8/右上.png
doc/补丁原图/地图/卡勒特_800x600/8/右下.png
doc/补丁原图/地图/卡勒特_800x600/8/左上.png
doc/补丁原图/地图/卡勒特_800x600/8/左下.png
doc/补丁原图/地图/卡勒特_800x600/9/9.png
doc/补丁原图/地图/卡勒特_800x600/9/9.psd
Binary files differ
doc/补丁原图/地图/卡勒特_800x600/9/右上.png
doc/补丁原图/地图/卡勒特_800x600/9/右下.png
doc/补丁原图/地图/卡勒特_800x600/9/左上.png
doc/补丁原图/地图/卡勒特_800x600/9/左下.png
doc/补丁原图/数/0.png
Binary files differ
doc/补丁原图/数/1.png
Binary files differ
doc/补丁原图/数/10.png
Binary files differ
doc/补丁原图/数/11.png
Binary files differ
doc/补丁原图/数/12.png
Binary files differ
doc/补丁原图/数/13.png
Binary files differ
doc/补丁原图/数/14.png
Binary files differ
doc/补丁原图/数/15.png
Binary files differ
doc/补丁原图/数/2.png
Binary files differ
doc/补丁原图/数/3.png
Binary files differ
doc/补丁原图/数/4.png
Binary files differ
doc/补丁原图/数/5.png
Binary files differ
doc/补丁原图/数/6.png
Binary files differ
doc/补丁原图/数/7.png
Binary files differ
doc/补丁原图/数/8.png
Binary files differ
doc/补丁原图/数/9.png
Binary files differ
doc/补丁原图/数/Number1.psd
Binary files differ
doc/补丁原图/数字/0.png

doc/补丁原图/数字/1.png

doc/补丁原图/数字/10.png

doc/补丁原图/数字/100.png

doc/补丁原图/数字/101.png

doc/补丁原图/数字/102.png

doc/补丁原图/数字/103.png

doc/补丁原图/数字/104.png

doc/补丁原图/数字/105.png

doc/补丁原图/数字/106.png

doc/补丁原图/数字/107.png

doc/补丁原图/数字/108.png

doc/补丁原图/数字/109.png

doc/补丁原图/数字/11.png

doc/补丁原图/数字/110.png

doc/补丁原图/数字/111.png

doc/补丁原图/数字/112.png

doc/补丁原图/数字/113.png

doc/补丁原图/数字/114.png

doc/补丁原图/数字/115.png

doc/补丁原图/数字/116.png

doc/补丁原图/数字/117.png

doc/补丁原图/数字/118.png

doc/补丁原图/数字/119.png

doc/补丁原图/数字/12.png

doc/补丁原图/数字/120.png

doc/补丁原图/数字/121.png

doc/补丁原图/数字/122.png

doc/补丁原图/数字/123.png

doc/补丁原图/数字/124.png

doc/补丁原图/数字/125.png

doc/补丁原图/数字/126.png

doc/补丁原图/数字/127.png

doc/补丁原图/数字/128.png

doc/补丁原图/数字/129.png

doc/补丁原图/数字/13.png

doc/补丁原图/数字/130.png

doc/补丁原图/数字/131.png

doc/补丁原图/数字/132.png

doc/补丁原图/数字/133.png

doc/补丁原图/数字/134.png

doc/补丁原图/数字/135.png

doc/补丁原图/数字/136.png

doc/补丁原图/数字/137.png

doc/补丁原图/数字/138.png

doc/补丁原图/数字/139.png

doc/补丁原图/数字/14.png

doc/补丁原图/数字/140.png

doc/补丁原图/数字/141.png

doc/补丁原图/数字/142.png

doc/补丁原图/数字/143.png

doc/补丁原图/数字/144.png

doc/补丁原图/数字/145.png

doc/补丁原图/数字/146.png

doc/补丁原图/数字/147.png

doc/补丁原图/数字/148.png

doc/补丁原图/数字/149.png

doc/补丁原图/数字/15.png

doc/补丁原图/数字/150.png

doc/补丁原图/数字/151.png

doc/补丁原图/数字/152.png

doc/补丁原图/数字/153.png

doc/补丁原图/数字/154.png

doc/补丁原图/数字/155.png

doc/补丁原图/数字/156.png

doc/补丁原图/数字/157.png

doc/补丁原图/数字/158.png

doc/补丁原图/数字/159.png

doc/补丁原图/数字/16.png

doc/补丁原图/数字/160.png

doc/补丁原图/数字/161.png

doc/补丁原图/数字/162.png

doc/补丁原图/数字/163.png

doc/补丁原图/数字/164.png

doc/补丁原图/数字/165.png

doc/补丁原图/数字/166.png

doc/补丁原图/数字/167.png

doc/补丁原图/数字/168.png

doc/补丁原图/数字/169.png

doc/补丁原图/数字/17.png

doc/补丁原图/数字/170.png

doc/补丁原图/数字/171.png

doc/补丁原图/数字/172.png

doc/补丁原图/数字/173.png

doc/补丁原图/数字/174.png

doc/补丁原图/数字/175.png

doc/补丁原图/数字/176.png

doc/补丁原图/数字/177.png

doc/补丁原图/数字/178.png

doc/补丁原图/数字/179.png

doc/补丁原图/数字/18.png

doc/补丁原图/数字/180.png

doc/补丁原图/数字/181.png

doc/补丁原图/数字/182.png

doc/补丁原图/数字/183.png

doc/补丁原图/数字/184.png

doc/补丁原图/数字/185.png

doc/补丁原图/数字/186.png

doc/补丁原图/数字/187.png

doc/补丁原图/数字/188.png

doc/补丁原图/数字/189.png

doc/补丁原图/数字/19.png

doc/补丁原图/数字/190.png

doc/补丁原图/数字/191.png

doc/补丁原图/数字/192.png

doc/补丁原图/数字/193.png

doc/补丁原图/数字/194.png

doc/补丁原图/数字/195.png

doc/补丁原图/数字/196.png

doc/补丁原图/数字/197.png

doc/补丁原图/数字/198.png

doc/补丁原图/数字/199.png

doc/补丁原图/数字/2.png

doc/补丁原图/数字/20.png

doc/补丁原图/数字/200.png

doc/补丁原图/数字/201.png

doc/补丁原图/数字/202.png

doc/补丁原图/数字/203.png

doc/补丁原图/数字/204.png

doc/补丁原图/数字/205.png

doc/补丁原图/数字/206.png

doc/补丁原图/数字/207.png

doc/补丁原图/数字/208.png

doc/补丁原图/数字/209.png

doc/补丁原图/数字/21.png

doc/补丁原图/数字/210.png

doc/补丁原图/数字/211.png

doc/补丁原图/数字/212.png

doc/补丁原图/数字/213.png

doc/补丁原图/数字/214.png

doc/补丁原图/数字/215.png

doc/补丁原图/数字/216.png

doc/补丁原图/数字/217.png

doc/补丁原图/数字/218.png

doc/补丁原图/数字/219.png

doc/补丁原图/数字/22.png

doc/补丁原图/数字/220.png

doc/补丁原图/数字/221.png

doc/补丁原图/数字/222.png

doc/补丁原图/数字/223.png

doc/补丁原图/数字/224.png

doc/补丁原图/数字/225.png

doc/补丁原图/数字/226.png

doc/补丁原图/数字/227.png

doc/补丁原图/数字/228.png

doc/补丁原图/数字/229.png

doc/补丁原图/数字/23.png

doc/补丁原图/数字/230.png

doc/补丁原图/数字/231.png

doc/补丁原图/数字/232.png

doc/补丁原图/数字/233.png

doc/补丁原图/数字/234.png

doc/补丁原图/数字/235.png

doc/补丁原图/数字/236.png

doc/补丁原图/数字/237.png

doc/补丁原图/数字/238.png

doc/补丁原图/数字/239.png

doc/补丁原图/数字/24.png

doc/补丁原图/数字/240.png

doc/补丁原图/数字/241.png

doc/补丁原图/数字/242.png

doc/补丁原图/数字/243.png

doc/补丁原图/数字/244.png

doc/补丁原图/数字/245.png

doc/补丁原图/数字/246.png

doc/补丁原图/数字/247.png

doc/补丁原图/数字/248.png

doc/补丁原图/数字/249.png

doc/补丁原图/数字/25.png

doc/补丁原图/数字/250.png

doc/补丁原图/数字/251.png

doc/补丁原图/数字/252.png

doc/补丁原图/数字/253.png

doc/补丁原图/数字/254.png

doc/补丁原图/数字/255.png

doc/补丁原图/数字/26.png

doc/补丁原图/数字/27.png

doc/补丁原图/数字/28.png

doc/补丁原图/数字/29.png

doc/补丁原图/数字/3.png

doc/补丁原图/数字/30.png

doc/补丁原图/数字/31.png

doc/补丁原图/数字/32.png

doc/补丁原图/数字/33.png

doc/补丁原图/数字/34.png

doc/补丁原图/数字/35.png

doc/补丁原图/数字/36.png

doc/补丁原图/数字/37.png

doc/补丁原图/数字/38.png

doc/补丁原图/数字/39.png

doc/补丁原图/数字/4.png

doc/补丁原图/数字/40.png

doc/补丁原图/数字/41.png

doc/补丁原图/数字/42.png

doc/补丁原图/数字/43.png

doc/补丁原图/数字/44.png

doc/补丁原图/数字/45.png

doc/补丁原图/数字/46.png

doc/补丁原图/数字/47.png

doc/补丁原图/数字/48.png

doc/补丁原图/数字/49.png

doc/补丁原图/数字/5.png

doc/补丁原图/数字/50.png

doc/补丁原图/数字/51.png

doc/补丁原图/数字/52.png

doc/补丁原图/数字/53.png

doc/补丁原图/数字/54.png

doc/补丁原图/数字/55.png

doc/补丁原图/数字/56.png

doc/补丁原图/数字/57.png

doc/补丁原图/数字/58.png

doc/补丁原图/数字/59.png

doc/补丁原图/数字/6.png

doc/补丁原图/数字/60.png

doc/补丁原图/数字/61.png

doc/补丁原图/数字/62.png

doc/补丁原图/数字/63.png

doc/补丁原图/数字/64.png

doc/补丁原图/数字/65.png

doc/补丁原图/数字/66.png

doc/补丁原图/数字/67.png

doc/补丁原图/数字/68.png

doc/补丁原图/数字/69.png

doc/补丁原图/数字/7.png

doc/补丁原图/数字/70.png

doc/补丁原图/数字/71.png

doc/补丁原图/数字/72.png

doc/补丁原图/数字/73.png

doc/补丁原图/数字/74.png

doc/补丁原图/数字/75.png

doc/补丁原图/数字/76.png

doc/补丁原图/数字/77.png

doc/补丁原图/数字/78.png

doc/补丁原图/数字/79.png

doc/补丁原图/数字/8.png

doc/补丁原图/数字/80.png

doc/补丁原图/数字/81.png

doc/补丁原图/数字/82.png

doc/补丁原图/数字/83.png

doc/补丁原图/数字/84.png

doc/补丁原图/数字/85.png

doc/补丁原图/数字/86.png

doc/补丁原图/数字/87.png

doc/补丁原图/数字/88.png

doc/补丁原图/数字/89.png

doc/补丁原图/数字/9.png

doc/补丁原图/数字/90.png

doc/补丁原图/数字/91.png

doc/补丁原图/数字/92.png

doc/补丁原图/数字/93.png

doc/补丁原图/数字/94.png

doc/补丁原图/数字/95.png

doc/补丁原图/数字/96.png

doc/补丁原图/数字/97.png

doc/补丁原图/数字/98.png

doc/补丁原图/数字/99.png

doc/补丁原图/称号/影子杀手称号(灰).png

doc/补丁原图/称号/影子杀手称号(蓝).png

doc/补丁原图/门/timegate_left01.png

doc/补丁原图/门/timegate_left01.psd
Binary files differ
doc/补丁原图/门/timegate_up01.png

doc/补丁原图/门/timegate_up01.psd
Binary files differ
doc/补丁原图/门/门上的定位点说明.txt
@@ -1,5 +1,5 @@
使用的数字
左0-9
右10-19
上20-29
下30-39
右0-9
左10-19
下20-29
上30-39
src/RichCreator.Editor/App.xaml
@@ -2,7 +2,7 @@
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:RichCreator.Editor"
             StartupUri="Tools/MapEditor.xaml">
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         
    </Application.Resources>
src/RichCreator.Editor/MainWindow.xaml
@@ -47,8 +47,9 @@
                <Separator/>
                <MenuItem Header="测试找线" Click="FindLines" />
                <Separator/>
                <MenuItem Header="查找关闭窗" Click="FindCloseButton_Click" />
            </MenuItem>
            <MenuItem Header="工具(T)">
                <MenuItem Header="测距" IsEnabled="False"/>
src/RichCreator.Editor/MainWindow.xaml.cs
@@ -538,6 +538,25 @@
        }
        /// <summary>
        /// 测试找关闭按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FindCloseButton_Click(object sender, RoutedEventArgs e)
        {
            ZTRectangle closeButtonRect = ZTRectangle.Empty;
            if (!DnfCVHelper.GetAlertWindow(out closeButtonRect, this.targetImage, new ZTRectangle (0,0, targetImage.Width, targetImage.Height)))
            {
                MessageBox.Show("未找到关闭按钮");
                return;
            }
            DrawRectangle(closeButtonRect.Start.X, closeButtonRect.Start.Y, closeButtonRect.End.X-closeButtonRect.Start.X, closeButtonRect.End.Y-closeButtonRect.Start.Y, Colors.Yellow);
        }
        #endregion
        /// <summary>
@@ -1118,7 +1137,8 @@
            window.ShowDialog();
        }
src/RichCreator.Editor/Tools/MapEditor.xaml.cs
@@ -83,7 +83,7 @@
            {
                return;
            }
            string json = this.housePathInfo.ToJsonString();
            string json = this.housePathInfo.ToJsonString(image.Width,image.Height);
            Clipboard.SetDataObject(json, true);
            MessageBox.Show("copy success");
        }
@@ -166,8 +166,6 @@
                Polygon pg = CreatePathGuideUI(info.PathGuides[i]);
                this.PathGuideShapeLayer.Children.Add(pg);
            }
            this.housePathInfo = info;
        }
@@ -389,7 +387,7 @@
            ZTPoint end = this.startEndFindPathPoint[1];
            HouseInfo house = new HouseInfo(this.housePathInfo);
            List<ZTPoint> path = house.FindPath(ref start, ref end);
            List<ZTPoint> path = house.FindPath(start, end);
            if (path == null || path.Count <= 0)
            {
@@ -975,9 +973,7 @@
                this.HouseInfoLayer.Children.Remove(c);
            }
        }
        /// <summary>
        /// 创建障碍物UI
        /// </summary>
src/RichCreator.Utility/CV/CVHelper.cs
@@ -595,8 +595,6 @@
                }
                ZTRectangle zrect = new ZTRectangle(rect.X, rect.Y, rect.X + rect.Width - 1, rect.Y + rect.Height - 1);
                rects.Add(zrect);
            }
            return rects;
@@ -687,6 +685,101 @@
            return false;
        }
        /// <summary>
        /// 查找颜色数组
        /// </summary>
        /// <param name="position"></param>
        /// <param name="image"></param>
        /// <param name="colorArray"></param>
        /// <param name="limitRectangle"></param>
        /// <param name="filter"></param>
        /// <param name="xSkip"></param>
        /// <param name="ySkip"></param>
        /// <returns></returns>
        public static bool FindColorArray(out ZTRectangle position, Image<Rgb, byte> image, ColorArray colorArray, ZTRectangle limitRectangle, Func<ZTRectangle, bool> filter, Int32 xSkip = 1, Int32 ySkip = 1)
        {
            position = ZTRectangle.Empty;
            if (xSkip < 1 || ySkip < 1)
            {
                throw new ArgumentOutOfRangeException("skip不能小于1");
            }
            for (int y = limitRectangle.Start.Y; y <= limitRectangle.End.Y; y += ySkip)
            {
                //超出高度
                if ((limitRectangle.End.Y - y + 1) < colorArray.Size.Height)
                {
                    return false;
                }
                for (int x = limitRectangle.Start.X; x <= limitRectangle.End.X; x += xSkip)
                {
                    //超出宽度
                    if ((limitRectangle.End.X - x + 1) < colorArray.Size.Width)
                    {
                        break;
                    }
                    if (colorArray.Compare(image.Data, x, y))
                    {
                        position = new ZTRectangle(x, y, x + colorArray.Size.Width - 1, y + colorArray.Size.Height - 1);
                        if (filter(position))
                        {
                            return true;
                        }
                    }
                }
            }
            return false;
        }
        /// <summary>
        /// 查找所有数组方框
        /// </summary>
        /// <param name="image"></param>
        /// <param name="colorArray"></param>
        /// <param name="limitRectangle"></param>
        /// <param name="xSkip"></param>
        /// <param name="ySkip"></param>
        /// <returns></returns>
        public static List<ZTRectangle> FindColorArray(Image<Rgb, byte> image, ColorArray colorArray, ZTRectangle limitRectangle, Int32 xSkip = 1, Int32 ySkip = 1)
        {
            List<ZTRectangle> rects = new List<ZTRectangle>();
            if (xSkip < 1 || ySkip < 1)
            {
                throw new ArgumentOutOfRangeException("skip不能小于1");
            }
            for (int y = limitRectangle.Start.Y; y <= limitRectangle.End.Y; y += ySkip)
            {
                //超出高度
                if ((limitRectangle.End.Y - y + 1) < colorArray.Size.Height)
                {
                    break;
                }
                for (int x = limitRectangle.Start.X; x <= limitRectangle.End.X; x += xSkip)
                {
                    //超出宽度
                    if ((limitRectangle.End.X - x + 1) < colorArray.Size.Width)
                    {
                        break;
                    }
                    if (colorArray.Compare(image.Data, x, y))
                    {
                        rects.Add(new ZTRectangle(x, y, x + colorArray.Size.Width - 1, y + colorArray.Size.Height - 1));
                    }
                }
            }
            return rects;
        }
        /// <summary>
        /// 查找数组
        /// </summary>
src/RichCreator.Utility/CV/ChannelCVHelper.cs
@@ -44,7 +44,7 @@
        /// <returns></returns>
        public static bool IsInJijingchengChannel(ZTRectangle gameRect)
        {
            ZTRectangle limit = new ZTRectangle(gameRect.End.X - 200, gameRect.Start.Y, gameRect.End.X, gameRect.Start.Y + 30);
            ZTRectangle limit = new ZTRectangle(gameRect.Start.X +604, gameRect.Start.Y, gameRect.End.X, gameRect.Start.Y + 24);
            return CVHelper.RectExistsArray(limit, JijingchengText);
        }
@@ -62,22 +62,7 @@
        }
        //公告:爆满频道服务器自动连接失败,请再次连接或选择其他频道
        private static ColorArray BaomanText = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "720,329,0,0,0$699,329,0,0,0$700,329,255,255,255$701,329,0,0,0$705,329,0,0,0$706,329,255,255,255$707,329,0,0,0$710,329,0,0,0$711,329,255,255,255$712,329,0,0,0$715,329,255,255,255$714,329,0,0,0$716,329,0,0,0$720,336,0,0,0$719,336,255,255,255$716,336,255,255,255$714,336,255,255,255$711,336,255,255,255$710,336,0,0,0$708,336,0,0,0$707,336,255,255,255$702,336,255,255,255$699,336,255,255,255$698,336,0,0,0$636,365,255,255,255$638,365,255,255,255$641,365,255,255,255$643,365,255,255,255$645,365,255,255,255$650,365,255,255,255$653,365,255,255,255$656,365,255,255,255$658,365,255,255,255$660,365,255,255,255$663,365,255,255,255$666,365,255,255,255$670,365,255,255,255$672,365,255,255,255$674,365,255,255,255$676,365,255,255,255$682,365,255,255,255$685,365,255,255,255$687,365,255,255,255$688,365,255,255,255$690,365,255,255,255$692,365,255,255,255$693,365,255,255,255$698,365,255,255,255$699,365,255,255,255$703,365,255,255,255$704,365,255,255,255$713,365,255,255,255$717,365,255,255,255$720,365,255,255,255$728,365,255,255,255$730,365,255,255,255$733,365,255,255,255$734,365,255,255,255$737,365,255,255,255$740,365,255,255,255$746,365,255,255,255$749,365,255,255,255$756,365,255,255,255$760,365,255,255,255$762,365,255,255,255$767,365,255,255,255$771,365,255,255,255$774,385,255,255,255$772,385,255,255,255$770,385,255,255,255$766,385,255,255,255$761,385,255,255,255$753,385,255,255,255$747,385,255,255,255$742,385,255,255,255$741,385,255,255,255$738,385,255,255,255$734,385,255,255,255$732,385,255,255,255$728,385,255,255,255$726,385,255,255,255$720,385,255,255,255$714,385,255,255,255$713,385,255,255,255$710,385,255,255,255$708,385,255,255,255$706,385,255,255,255$705,385,255,255,255$702,385,255,255,255$699,385,255,255,255$696,385,255,255,255$694,385,255,255,255$692,385,255,255,255$690,385,255,255,255$682,385,255,255,255$677,385,255,255,255$675,385,255,255,255$669,385,255,255,255$665,385,255,255,255$664,385,255,255,255$660,385,255,255,255$657,385,255,255,255$646,385,255,255,255$645,385,255,255,255$641,385,255,255,255$640,385,255,255,255$636,385,255,255,255$646,398,255,255,255$646,395,255,255,255$646,392,255,255,255$646,390,255,255,255$646,387,255,255,255$646,385,255,255,255$646,377,255,255,255$646,371,255,255,255$646,369,255,255,255");
        /// <summary>
        ///  是否切换失败
        /// </summary>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        public static bool IsChangeFailed(ZTRectangle gameRect)
        {
            ZTRectangle rect = ZTRectangle.Empty;
            return CVHelper.RectExistsArray(out rect, gameRect, BaomanText);
        }
        //网格连接中断
        //关闭后自动打开了频道选择
src/RichCreator.Utility/CV/DnfCVHelper.cs
@@ -25,7 +25,7 @@
        /// <summary>
        /// 选择角色界面中的“开始游戏”按钮
        /// </summary>
        private static ColorArray startGameButton = ColorArray.FromThresholdString(130, "1055,813,255,255,255$1034,813,0,0,0$1035,813,0,0,0$1036,813,0,0,0$1037,813,0,0,0$1038,813,0,0,0$1040,813,255,255,255$1041,813,255,255,255$1044,813,0,0,0$1045,813,0,0,0$1047,813,255,255,255$1048,813,255,255,255$1049,813,255,255,255$1051,813,0,0,0$1052,813,0,0,0$1053,813,255,255,255$1054,813,255,255,255$1057,813,0,0,0$1058,813,0,0,0$1059,813,0,0,0$1062,813,255,255,255$1063,813,255,255,255$1064,813,255,255,255$1065,813,255,255,255$1066,813,255,255,255$1067,813,255,255,255$1068,813,255,255,255$1072,813,255,255,255$1073,813,255,255,255$1074,813,255,255,255$1075,813,0,0,0$1076,813,0,0,0$1078,813,255,255,255$1082,813,255,255,255$1083,813,255,255,255$1084,813,255,255,255$1085,813,255,255,255$1086,813,255,255,255$1087,813,255,255,255$1088,813,255,255,255$1089,813,255,255,255$1090,813,255,255,255$1091,813,255,255,255$1092,813,255,255,255$1093,813,255,255,255$1094,813,255,255,255$1095,813,255,255,255$1096,813,255,255,255$1097,813,255,255,255$1098,813,255,255,255$1099,813,255,255,255$1102,813,0,0,0$1104,813,255,255,255$1105,813,255,255,255$1109,813,255,255,255$1110,813,255,255,255$1112,813,0,0,0$1113,813,0,0,0$1115,813,255,255,255$1116,813,255,255,255$1117,813,255,255,255$1119,813,0,0,0$1120,813,0,0,0$1121,813,0,0,0$1122,813,0,0,0$1123,813,0,0,0$1124,813,0,0,0$1125,813,0,0,0$1126,813,0,0,0$1127,813,0,0,0$1128,813,0,0,0$1034,814,0,0,0$1035,814,0,0,0$1036,814,0,0,0$1037,814,0,0,0$1038,814,0,0,0$1040,814,255,255,255$1041,814,255,255,255$1047,814,255,255,255$1048,814,255,255,255$1049,814,255,255,255$1053,814,255,255,255$1054,814,255,255,255$1055,814,255,255,255$1056,814,255,255,255$1057,814,255,255,255$1058,814,255,255,255$1061,814,255,255,255$1062,814,255,255,255$1063,814,255,255,255$1064,814,255,255,255$1065,814,255,255,255$1066,814,255,255,255$1067,814,255,255,255$1068,814,255,255,255$1070,814,0,0,0$1072,814,255,255,255$1073,814,255,255,255$1074,814,255,255,255$1077,814,255,255,255$1078,814,255,255,255$1082,814,255,255,255$1083,814,255,255,255$1084,814,255,255,255$1085,814,255,255,255$1086,814,255,255,255$1087,814,255,255,255$1088,814,255,255,255$1089,814,255,255,255$1090,814,255,255,255$1091,814,255,255,255$1092,814,255,255,255$1093,814,255,255,255$1094,814,255,255,255$1095,814,255,255,255$1096,814,255,255,255$1097,814,255,255,255$1098,814,255,255,255$1099,814,255,255,255$1100,814,255,255,255$1104,814,255,255,255$1105,814,255,255,255$1108,814,255,255,255$1109,814,255,255,255$1110,814,255,255,255$1112,814,0,0,0$1115,814,255,255,255$1116,814,255,255,255$1119,814,0,0,0$1120,814,0,0,0$1121,814,0,0,0$1122,814,0,0,0$1123,814,0,0,0$1124,814,0,0,0$1125,814,0,0,0$1126,814,0,0,0$1127,814,0,0,0$1128,814,0,0,0$1034,815,0,0,0$1035,815,0,0,0$1036,815,0,0,0$1037,815,0,0,0$1038,815,0,0,0$1041,815,255,255,255$1042,815,255,255,255$1045,815,255,255,255$1046,815,255,255,255$1047,815,255,255,255$1048,815,255,255,255$1049,815,255,255,255$1050,815,255,255,255$1051,815,255,255,255$1052,815,255,255,255$1053,815,255,255,255$1054,815,255,255,255$1055,815,255,255,255$1056,815,255,255,255$1057,815,255,255,255$1058,815,255,255,255$1062,815,255,255,255$1063,815,255,255,255$1064,815,255,255,255$1065,815,255,255,255$1066,815,255,255,255$1067,815,255,255,255$1068,815,255,255,255$1070,815,0,0,0$1071,815,0,0,0$1073,815,255,255,255$1074,815,255,255,255$1076,815,255,255,255$1077,815,255,255,255$1080,815,0,0,0$1083,815,255,255,255$1084,815,255,255,255$1085,815,255,255,255$1086,815,255,255,255$1096,815,255,255,255$1097,815,255,255,255$1098,815,255,255,255$1099,815,255,255,255$1104,815,255,255,255$1105,815,255,255,255$1106,815,255,255,255$1107,815,255,255,255$1108,815,255,255,255$1109,815,255,255,255$1110,815,255,255,255$1111,815,255,255,255$1114,815,255,255,255$1115,815,255,255,255$1116,815,255,255,255$1122,815,0,0,0$1123,815,0,0,0$1124,815,0,0,0$1125,815,0,0,0$1126,815,0,0,0$1127,815,0,0,0$1128,815,0,0,0$1034,816,0,0,0$1035,816,0,0,0$1036,816,0,0,0$1037,816,0,0,0$1038,816,0,0,0$1039,816,0,0,0$1041,816,255,255,255$1042,816,255,255,255$1043,816,255,255,255$1045,816,255,255,255$1046,816,255,255,255$1047,816,255,255,255$1048,816,255,255,255$1049,816,255,255,255$1050,816,255,255,255$1051,816,255,255,255$1052,816,255,255,255$1066,816,255,255,255$1067,816,255,255,255$1068,816,255,255,255$1072,816,255,255,255$1073,816,255,255,255$1074,816,255,255,255$1076,816,255,255,255$1077,816,255,255,255$1080,816,0,0,0$1081,816,0,0,0$1084,816,255,255,255$1085,816,255,255,255$1097,816,255,255,255$1098,816,255,255,255$1099,816,255,255,255$1101,816,0,0,0$1103,816,255,255,255$1104,816,255,255,255$1105,816,255,255,255$1106,816,255,255,255$1107,816,255,255,255$1108,816,255,255,255$1109,816,255,255,255$1110,816,255,255,255$1111,816,255,255,255$1114,816,255,255,255$1115,816,255,255,255$1117,816,0,0,0$1119,816,255,255,255$1120,816,255,255,255$1122,816,0,0,0$1123,816,0,0,0$1124,816,0,0,0$1125,816,0,0,0$1126,816,0,0,0$1127,816,0,0,0$1128,816,0,0,0$1034,817,0,0,0$1035,817,0,0,0$1036,817,0,0,0$1037,817,0,0,0$1038,817,0,0,0$1039,817,0,0,0$1040,817,0,0,0$1042,817,255,255,255$1046,817,255,255,255$1047,817,255,255,255$1054,817,0,0,0$1055,817,0,0,0$1056,817,0,0,0$1057,817,0,0,0$1058,817,0,0,0$1059,817,0,0,0$1060,817,0,0,0$1067,817,255,255,255$1068,817,255,255,255$1071,817,255,255,255$1072,817,255,255,255$1073,817,255,255,255$1074,817,255,255,255$1075,817,255,255,255$1076,817,255,255,255$1077,817,255,255,255$1078,817,255,255,255$1080,817,0,0,0$1081,817,0,0,0$1082,817,0,0,0$1084,817,255,255,255$1085,817,255,255,255$1087,817,0,0,0$1088,817,0,0,0$1089,817,0,0,0$1090,817,0,0,0$1091,817,0,0,0$1092,817,0,0,0$1093,817,0,0,0$1094,817,0,0,0$1095,817,0,0,0$1097,817,255,255,255$1098,817,255,255,255$1099,817,255,255,255$1100,817,0,0,0$1101,817,0,0,0$1104,817,255,255,255$1105,817,255,255,255$1106,817,255,255,255$1108,817,255,255,255$1109,817,255,255,255$1110,817,255,255,255$1113,817,255,255,255$1114,817,255,255,255$1115,817,255,255,255$1117,817,0,0,0$1119,817,255,255,255$1120,817,255,255,255$1122,817,0,0,0$1123,817,0,0,0$1124,817,0,0,0$1125,817,0,0,0$1126,817,0,0,0$1127,817,0,0,0$1128,817,0,0,0$1034,818,0,0,0$1035,818,0,0,0$1036,818,0,0,0$1037,818,0,0,0$1038,818,0,0,0$1039,818,0,0,0$1040,818,0,0,0$1041,818,0,0,0$1042,818,0,0,0$1043,818,0,0,0$1044,818,0,0,0$1046,818,255,255,255$1047,818,255,255,255$1049,818,0,0,0$1050,818,0,0,0$1051,818,0,0,0$1053,818,255,255,255$1054,818,255,255,255$1055,818,255,255,255$1056,818,255,255,255$1057,818,255,255,255$1058,818,255,255,255$1060,818,0,0,0$1062,818,255,255,255$1063,818,255,255,255$1066,818,255,255,255$1067,818,255,255,255$1069,818,0,0,0$1071,818,255,255,255$1072,818,255,255,255$1073,818,255,255,255$1074,818,255,255,255$1075,818,255,255,255$1076,818,255,255,255$1077,818,255,255,255$1078,818,255,255,255$1080,818,0,0,0$1081,818,0,0,0$1082,818,0,0,0$1084,818,255,255,255$1085,818,255,255,255$1087,818,0,0,0$1088,818,0,0,0$1089,818,0,0,0$1090,818,0,0,0$1091,818,0,0,0$1092,818,0,0,0$1093,818,0,0,0$1094,818,0,0,0$1095,818,0,0,0$1097,818,255,255,255$1098,818,255,255,255$1100,818,0,0,0$1101,818,0,0,0$1102,818,0,0,0$1104,818,255,255,255$1105,818,255,255,255$1107,818,0,0,0$1109,818,255,255,255$1110,818,255,255,255$1113,818,255,255,255$1114,818,255,255,255$1116,818,0,0,0$1117,818,0,0,0$1119,818,255,255,255$1120,818,255,255,255$1122,818,0,0,0$1123,818,0,0,0$1124,818,0,0,0$1125,818,0,0,0$1126,818,0,0,0$1127,818,0,0,0$1128,818,0,0,0$1034,819,0,0,0$1035,819,0,0,0$1036,819,0,0,0$1037,819,0,0,0$1038,819,0,0,0$1040,819,255,255,255$1041,819,255,255,255$1043,819,0,0,0$1044,819,0,0,0$1046,819,255,255,255$1047,819,255,255,255$1048,819,255,255,255$1049,819,255,255,255$1050,819,255,255,255$1052,819,255,255,255$1053,819,255,255,255$1054,819,255,255,255$1055,819,255,255,255$1056,819,255,255,255$1057,819,255,255,255$1058,819,255,255,255$1060,819,0,0,0$1062,819,255,255,255$1063,819,255,255,255$1066,819,255,255,255$1067,819,255,255,255$1069,819,0,0,0$1070,819,0,0,0$1071,819,0,0,0$1073,819,255,255,255$1074,819,255,255,255$1076,819,0,0,0$1077,819,0,0,0$1078,819,0,0,0$1079,819,0,0,0$1080,819,0,0,0$1081,819,0,0,0$1082,819,0,0,0$1084,819,255,255,255$1085,819,255,255,255$1087,819,0,0,0$1088,819,0,0,0$1089,819,0,0,0$1090,819,0,0,0$1091,819,0,0,0$1092,819,0,0,0$1093,819,0,0,0$1094,819,0,0,0$1095,819,0,0,0$1097,819,255,255,255$1098,819,255,255,255$1100,819,0,0,0$1101,819,0,0,0$1102,819,0,0,0$1104,819,255,255,255$1105,819,255,255,255$1107,819,0,0,0$1109,819,255,255,255$1110,819,255,255,255$1112,819,255,255,255$1113,819,255,255,255$1114,819,255,255,255$1119,819,255,255,255$1120,819,255,255,255$1122,819,0,0,0$1123,819,0,0,0$1124,819,0,0,0$1125,819,0,0,0$1126,819,0,0,0$1127,819,0,0,0$1128,819,0,0,0$1034,820,0,0,0$1035,820,0,0,0$1036,820,0,0,0$1037,820,0,0,0$1038,820,0,0,0$1039,820,0,0,0$1040,820,255,255,255$1041,820,255,255,255$1046,820,255,255,255$1047,820,255,255,255$1048,820,255,255,255$1049,820,255,255,255$1050,820,255,255,255$1052,820,0,0,0$1053,820,0,0,0$1054,820,0,0,0$1056,820,255,255,255$1057,820,255,255,255$1060,820,0,0,0$1063,820,255,255,255$1064,820,255,255,255$1065,820,255,255,255$1066,820,255,255,255$1069,820,0,0,0$1070,820,0,0,0$1071,820,0,0,0$1073,820,255,255,255$1074,820,255,255,255$1076,820,0,0,0$1080,820,0,0,0$1081,820,0,0,0$1082,820,0,0,0$1084,820,255,255,255$1085,820,255,255,255$1087,820,0,0,0$1088,820,0,0,0$1089,820,0,0,0$1090,820,0,0,0$1091,820,0,0,0$1092,820,0,0,0$1093,820,0,0,0$1094,820,0,0,0$1095,820,0,0,0$1097,820,255,255,255$1098,820,255,255,255$1100,820,0,0,0$1101,820,0,0,0$1102,820,0,0,0$1104,820,255,255,255$1105,820,255,255,255$1107,820,0,0,0$1109,820,255,255,255$1110,820,255,255,255$1112,820,255,255,255$1113,820,255,255,255$1114,820,255,255,255$1115,820,255,255,255$1116,820,255,255,255$1117,820,255,255,255$1118,820,255,255,255$1119,820,255,255,255$1120,820,255,255,255$1122,820,0,0,0$1123,820,0,0,0$1124,820,0,0,0$1125,820,0,0,0$1126,820,0,0,0$1127,820,0,0,0$1128,820,0,0,0$1034,821,0,0,0$1035,821,0,0,0$1036,821,0,0,0$1037,821,0,0,0$1038,821,0,0,0$1039,821,0,0,0$1041,821,255,255,255$1042,821,255,255,255$1046,821,255,255,255$1047,821,255,255,255$1050,821,255,255,255$1052,821,0,0,0$1056,821,255,255,255$1057,821,255,255,255$1059,821,0,0,0$1060,821,0,0,0$1061,821,0,0,0$1063,821,255,255,255$1064,821,255,255,255$1065,821,255,255,255$1066,821,255,255,255$1068,821,0,0,0$1069,821,0,0,0$1070,821,0,0,0$1071,821,0,0,0$1074,821,255,255,255$1077,821,255,255,255$1080,821,0,0,0$1081,821,0,0,0$1083,821,255,255,255$1084,821,255,255,255$1085,821,255,255,255$1086,821,255,255,255$1096,821,255,255,255$1097,821,255,255,255$1098,821,255,255,255$1099,821,255,255,255$1101,821,0,0,0$1102,821,0,0,0$1104,821,255,255,255$1105,821,255,255,255$1107,821,0,0,0$1109,821,255,255,255$1110,821,255,255,255$1112,821,255,255,255$1113,821,255,255,255$1114,821,255,255,255$1115,821,255,255,255$1116,821,255,255,255$1117,821,255,255,255$1118,821,255,255,255$1119,821,255,255,255$1122,821,0,0,0$1123,821,0,0,0$1124,821,0,0,0$1125,821,0,0,0$1126,821,0,0,0$1127,821,0,0,0$1128,821,0,0,0$1034,822,0,0,0$1035,822,0,0,0$1036,822,0,0,0$1037,822,0,0,0$1038,822,0,0,0$1039,822,0,0,0$1040,822,0,0,0$1046,822,255,255,255$1050,822,255,255,255$1052,822,0,0,0$1054,822,255,255,255$1055,822,255,255,255$1056,822,255,255,255$1057,822,255,255,255$1058,822,0,0,0$1059,822,0,0,0$1060,822,0,0,0$1061,822,0,0,0$1063,822,255,255,255$1064,822,255,255,255$1065,822,255,255,255$1066,822,255,255,255$1068,822,0,0,0$1069,822,0,0,0$1070,822,0,0,0$1071,822,0,0,0$1074,822,255,255,255$1075,822,255,255,255$1077,822,255,255,255$1080,822,0,0,0$1081,822,0,0,0$1082,822,255,255,255$1083,822,255,255,255$1084,822,255,255,255$1085,822,255,255,255$1086,822,255,255,255$1087,822,255,255,255$1088,822,255,255,255$1089,822,255,255,255$1090,822,255,255,255$1091,822,255,255,255$1092,822,255,255,255$1093,822,255,255,255$1094,822,255,255,255$1095,822,255,255,255$1096,822,255,255,255$1097,822,255,255,255$1098,822,255,255,255$1099,822,255,255,255$1100,822,255,255,255$1102,822,0,0,0$1104,822,255,255,255$1105,822,255,255,255$1107,822,0,0,0$1109,822,255,255,255$1110,822,255,255,255$1122,822,0,0,0$1123,822,0,0,0$1124,822,0,0,0$1125,822,0,0,0$1126,822,0,0,0$1127,822,0,0,0$1128,822,0,0,0$1034,823,0,0,0$1035,823,0,0,0$1036,823,0,0,0$1037,823,0,0,0$1038,823,0,0,0$1039,823,0,0,0$1040,823,0,0,0$1046,823,255,255,255$1050,823,255,255,255$1052,823,0,0,0$1056,823,255,255,255$1057,823,255,255,255$1058,823,0,0,0$1059,823,0,0,0$1060,823,0,0,0$1061,823,0,0,0$1062,823,0,0,0$1064,823,255,255,255$1065,823,255,255,255$1068,823,0,0,0$1069,823,0,0,0$1070,823,0,0,0$1071,823,0,0,0$1072,823,0,0,0$1074,823,255,255,255$1075,823,255,255,255$1077,823,255,255,255$1079,823,0,0,0$1080,823,0,0,0$1081,823,0,0,0$1083,823,255,255,255$1084,823,255,255,255$1085,823,255,255,255$1086,823,255,255,255$1096,823,255,255,255$1097,823,255,255,255$1098,823,255,255,255$1099,823,255,255,255$1101,823,0,0,0$1102,823,0,0,0$1104,823,255,255,255$1105,823,255,255,255$1107,823,0,0,0$1109,823,255,255,255$1122,823,0,0,0$1123,823,0,0,0$1124,823,0,0,0$1125,823,0,0,0$1126,823,0,0,0$1127,823,0,0,0$1128,823,0,0,0$1034,824,0,0,0$1035,824,0,0,0$1036,824,0,0,0$1037,824,0,0,0$1038,824,0,0,0$1039,824,0,0,0$1040,824,0,0,0$1041,824,0,0,0$1046,824,255,255,255$1050,824,255,255,255$1052,824,0,0,0$1053,824,0,0,0$1054,824,0,0,0$1056,824,255,255,255$1057,824,255,255,255$1058,824,0,0,0$1059,824,0,0,0$1060,824,0,0,0$1061,824,0,0,0$1062,824,0,0,0$1064,824,255,255,255$1065,824,255,255,255$1067,824,0,0,0$1068,824,0,0,0$1069,824,0,0,0$1070,824,0,0,0$1071,824,0,0,0$1072,824,0,0,0$1074,824,255,255,255$1075,824,255,255,255$1077,824,255,255,255$1079,824,0,0,0$1080,824,0,0,0$1081,824,0,0,0$1082,824,0,0,0$1084,824,255,255,255$1085,824,255,255,255$1087,824,0,0,0$1088,824,0,0,0$1089,824,0,0,0$1090,824,0,0,0$1091,824,0,0,0$1092,824,0,0,0$1093,824,0,0,0$1094,824,0,0,0$1095,824,0,0,0$1097,824,255,255,255$1098,824,255,255,255$1100,824,0,0,0$1101,824,0,0,0$1102,824,0,0,0$1104,824,255,255,255$1105,824,255,255,255$1107,824,0,0,0$1109,824,255,255,255$1113,824,255,255,255$1114,824,255,255,255$1115,824,255,255,255$1116,824,255,255,255$1117,824,255,255,255$1118,824,255,255,255$1119,824,255,255,255$1120,824,255,255,255$1122,824,0,0,0$1123,824,0,0,0$1124,824,0,0,0$1125,824,0,0,0$1126,824,0,0,0$1127,824,0,0,0$1128,824,0,0,0$1034,825,0,0,0$1035,825,0,0,0$1036,825,0,0,0$1037,825,0,0,0$1038,825,0,0,0$1039,825,0,0,0$1040,825,0,0,0$1046,825,255,255,255$1050,825,255,255,255$1056,825,255,255,255$1057,825,255,255,255$1059,825,0,0,0$1060,825,0,0,0$1061,825,0,0,0$1062,825,0,0,0$1064,825,255,255,255$1065,825,255,255,255$1067,825,0,0,0$1068,825,0,0,0$1069,825,0,0,0$1070,825,0,0,0$1071,825,0,0,0$1072,825,0,0,0$1074,825,255,255,255$1075,825,255,255,255$1076,825,255,255,255$1079,825,0,0,0$1080,825,0,0,0$1081,825,0,0,0$1082,825,0,0,0$1084,825,255,255,255$1085,825,255,255,255$1087,825,0,0,0$1088,825,0,0,0$1089,825,0,0,0$1090,825,0,0,0$1091,825,0,0,0$1092,825,0,0,0$1093,825,0,0,0$1094,825,0,0,0$1095,825,0,0,0$1097,825,255,255,255$1098,825,255,255,255$1100,825,0,0,0$1101,825,0,0,0$1102,825,0,0,0$1104,825,255,255,255$1105,825,255,255,255$1109,825,255,255,255$1111,825,0,0,0$1113,825,255,255,255$1114,825,255,255,255$1119,825,255,255,255$1120,825,255,255,255$1122,825,0,0,0$1123,825,0,0,0$1124,825,0,0,0$1125,825,0,0,0$1126,825,0,0,0$1127,825,0,0,0$1128,825,0,0,0$1034,826,0,0,0$1035,826,0,0,0$1036,826,0,0,0$1037,826,0,0,0$1038,826,0,0,0$1039,826,0,0,0$1040,826,0,0,0$1042,826,255,255,255$1046,826,255,255,255$1050,826,255,255,255$1055,826,255,255,255$1056,826,255,255,255$1057,826,255,255,255$1059,826,0,0,0$1060,826,0,0,0$1061,826,0,0,0$1062,826,0,0,0$1064,826,255,255,255$1065,826,255,255,255$1067,826,0,0,0$1068,826,0,0,0$1069,826,0,0,0$1074,826,255,255,255$1075,826,255,255,255$1076,826,255,255,255$1078,826,0,0,0$1079,826,0,0,0$1080,826,0,0,0$1081,826,0,0,0$1082,826,0,0,0$1087,826,0,0,0$1088,826,0,0,0$1089,826,0,0,0$1090,826,0,0,0$1091,826,0,0,0$1092,826,0,0,0$1093,826,0,0,0$1094,826,0,0,0$1095,826,0,0,0$1097,826,255,255,255$1098,826,255,255,255$1100,826,0,0,0$1101,826,0,0,0$1102,826,0,0,0$1103,826,0,0,0$1105,826,255,255,255$1106,826,255,255,255$1108,826,255,255,255$1111,826,0,0,0$1116,826,0,0,0$1117,826,0,0,0$1118,826,0,0,0$1120,826,255,255,255$1122,826,0,0,0$1123,826,0,0,0$1124,826,0,0,0$1125,826,0,0,0$1126,826,0,0,0$1127,826,0,0,0$1128,826,0,0,0$1034,827,0,0,0$1035,827,0,0,0$1036,827,0,0,0$1037,827,0,0,0$1038,827,0,0,0$1039,827,0,0,0$1040,827,0,0,0$1042,827,255,255,255$1044,827,0,0,0$1046,827,255,255,255$1056,827,255,255,255$1057,827,255,255,255$1059,827,0,0,0$1060,827,0,0,0$1061,827,0,0,0$1062,827,0,0,0$1064,827,255,255,255$1065,827,255,255,255$1068,827,0,0,0$1069,827,0,0,0$1073,827,255,255,255$1074,827,255,255,255$1075,827,255,255,255$1076,827,255,255,255$1078,827,0,0,0$1079,827,0,0,0$1080,827,0,0,0$1081,827,0,0,0$1082,827,0,0,0$1087,827,0,0,0$1088,827,0,0,0$1089,827,0,0,0$1090,827,0,0,0$1091,827,0,0,0$1092,827,0,0,0$1093,827,0,0,0$1094,827,0,0,0$1095,827,0,0,0$1097,827,255,255,255$1098,827,255,255,255$1100,827,0,0,0$1101,827,0,0,0$1102,827,0,0,0$1103,827,0,0,0$1106,827,255,255,255$1107,827,255,255,255$1108,827,255,255,255$1110,827,0,0,0$1111,827,0,0,0$1116,827,0,0,0$1117,827,0,0,0$1118,827,0,0,0$1120,827,255,255,255$1122,827,0,0,0$1123,827,0,0,0$1124,827,0,0,0$1125,827,0,0,0$1126,827,0,0,0$1127,827,0,0,0$1128,827,0,0,0$1034,828,0,0,0$1035,828,0,0,0$1036,828,0,0,0$1037,828,0,0,0$1038,828,0,0,0$1039,828,0,0,0$1040,828,0,0,0$1044,828,0,0,0$1052,828,0,0,0$1053,828,0,0,0$1056,828,255,255,255$1059,828,0,0,0$1060,828,0,0,0$1061,828,0,0,0$1062,828,0,0,0$1063,828,255,255,255$1064,828,255,255,255$1065,828,255,255,255$1066,828,255,255,255$1068,828,0,0,0$1069,828,0,0,0$1075,828,255,255,255$1077,828,0,0,0$1078,828,0,0,0$1079,828,0,0,0$1080,828,0,0,0$1081,828,0,0,0$1082,828,0,0,0$1087,828,0,0,0$1088,828,0,0,0$1089,828,0,0,0$1090,828,0,0,0$1091,828,0,0,0$1092,828,0,0,0$1093,828,0,0,0$1094,828,0,0,0$1095,828,0,0,0$1097,828,255,255,255$1100,828,0,0,0$1101,828,0,0,0$1102,828,0,0,0$1103,828,0,0,0$1104,828,0,0,0$1106,828,255,255,255$1107,828,255,255,255$1108,828,255,255,255$1110,828,0,0,0$1111,828,0,0,0$1116,828,0,0,0$1117,828,0,0,0$1118,828,0,0,0$1120,828,255,255,255$1122,828,0,0,0$1123,828,0,0,0$1124,828,0,0,0$1125,828,0,0,0$1126,828,0,0,0$1127,828,0,0,0$1128,828,0,0,0$1034,829,0,0,0$1035,829,0,0,0$1036,829,0,0,0$1037,829,0,0,0$1038,829,0,0,0$1039,829,0,0,0$1044,829,0,0,0$1052,829,0,0,0$1053,829,0,0,0$1054,829,0,0,0$1056,829,255,255,255$1058,829,0,0,0$1059,829,0,0,0$1060,829,0,0,0$1061,829,0,0,0$1063,829,255,255,255$1064,829,255,255,255$1065,829,255,255,255$1066,829,255,255,255$1068,829,0,0,0$1069,829,0,0,0$1070,829,0,0,0$1071,829,0,0,0$1072,829,0,0,0$1075,829,255,255,255$1077,829,0,0,0$1078,829,0,0,0$1079,829,0,0,0$1080,829,0,0,0$1081,829,0,0,0$1082,829,0,0,0$1087,829,0,0,0$1088,829,0,0,0$1089,829,0,0,0$1090,829,0,0,0$1091,829,0,0,0$1092,829,0,0,0$1093,829,0,0,0$1094,829,0,0,0$1095,829,0,0,0$1097,829,255,255,255$1100,829,0,0,0$1101,829,0,0,0$1102,829,0,0,0$1103,829,0,0,0$1104,829,0,0,0$1106,829,255,255,255$1107,829,255,255,255$1108,829,255,255,255$1111,829,0,0,0$1116,829,0,0,0$1117,829,0,0,0$1118,829,0,0,0$1120,829,255,255,255$1122,829,0,0,0$1123,829,0,0,0$1124,829,0,0,0$1125,829,0,0,0$1126,829,0,0,0$1127,829,0,0,0$1128,829,0,0,0$1034,830,0,0,0$1035,830,0,0,0$1036,830,0,0,0$1037,830,0,0,0$1038,830,0,0,0$1039,830,0,0,0$1041,830,255,255,255$1044,830,0,0,0$1046,830,255,255,255$1052,830,0,0,0$1056,830,255,255,255$1058,830,0,0,0$1059,830,0,0,0$1060,830,0,0,0$1063,830,255,255,255$1069,830,0,0,0$1070,830,0,0,0$1071,830,0,0,0$1072,830,0,0,0$1073,830,0,0,0$1075,830,255,255,255$1079,830,0,0,0$1080,830,0,0,0$1081,830,0,0,0$1084,830,255,255,255$1087,830,0,0,0$1088,830,0,0,0$1089,830,0,0,0$1090,830,0,0,0$1091,830,0,0,0$1092,830,0,0,0$1093,830,0,0,0$1094,830,0,0,0$1095,830,0,0,0$1097,830,255,255,255$1100,830,0,0,0$1101,830,0,0,0$1102,830,0,0,0$1105,830,255,255,255$1109,830,255,255,255$1120,830,255,255,255$1122,830,0,0,0$1123,830,0,0,0$1124,830,0,0,0$1125,830,0,0,0$1126,830,0,0,0$1127,830,0,0,0$1128,830,0,0,0$1034,831,0,0,0$1035,831,0,0,0$1036,831,0,0,0$1037,831,0,0,0$1038,831,0,0,0$1043,831,0,0,0$1052,831,0,0,0$1058,831,0,0,0$1059,831,0,0,0$1060,831,0,0,0$1070,831,0,0,0$1071,831,0,0,0$1072,831,0,0,0$1073,831,0,0,0$1080,831,0,0,0$1087,831,0,0,0$1088,831,0,0,0$1089,831,0,0,0$1090,831,0,0,0$1091,831,0,0,0$1092,831,0,0,0$1093,831,0,0,0$1094,831,0,0,0$1095,831,0,0,0$1100,831,0,0,0$1101,831,0,0,0$1102,831,0,0,0$1107,831,0,0,0$1122,831,0,0,0$1123,831,0,0,0$1124,831,0,0,0$1125,831,0,0,0$1126,831,0,0,0$1127,831,0,0,0$1128,831,0,0,0$1034,832,0,0,0$1035,832,0,0,0$1036,832,0,0,0$1037,832,0,0,0$1038,832,0,0,0$1039,832,0,0,0$1041,832,0,0,0$1042,832,0,0,0$1043,832,0,0,0$1044,832,0,0,0$1046,832,0,0,0$1047,832,0,0,0$1048,832,0,0,0$1050,832,0,0,0$1051,832,0,0,0$1052,832,0,0,0$1057,832,0,0,0$1058,832,0,0,0$1059,832,0,0,0$1060,832,0,0,0$1064,832,0,0,0$1065,832,0,0,0$1066,832,0,0,0$1069,832,0,0,0$1070,832,0,0,0$1071,832,0,0,0$1072,832,0,0,0$1073,832,0,0,0$1074,832,0,0,0$1075,832,0,0,0$1079,832,0,0,0$1080,832,0,0,0$1081,832,0,0,0$1085,832,0,0,0$1086,832,0,0,0$1087,832,0,0,0$1088,832,0,0,0$1089,832,0,0,0$1090,832,0,0,0$1091,832,0,0,0$1092,832,0,0,0$1093,832,0,0,0$1094,832,0,0,0$1095,832,0,0,0$1096,832,0,0,0$1097,832,0,0,0$1098,832,0,0,0$1099,832,0,0,0$1100,832,0,0,0$1101,832,0,0,0$1102,832,0,0,0$1106,832,0,0,0$1107,832,0,0,0$1108,832,0,0,0$1109,832,0,0,0$1120,832,0,0,0$1121,832,0,0,0$1122,832,0,0,0$1123,832,0,0,0$1124,832,0,0,0$1125,832,0,0,0$1126,832,0,0,0$1127,832,0,0,0$1128,832,0,0,0$1034,833,0,0,0$1035,833,0,0,0$1036,833,0,0,0$1037,833,0,0,0$1038,833,0,0,0$1039,833,0,0,0$1040,833,0,0,0$1041,833,0,0,0$1042,833,0,0,0$1043,833,0,0,0$1044,833,0,0,0$1045,833,0,0,0$1046,833,0,0,0$1047,833,0,0,0$1048,833,0,0,0$1049,833,0,0,0$1050,833,0,0,0$1051,833,0,0,0$1052,833,0,0,0$1053,833,0,0,0$1054,833,0,0,0$1055,833,0,0,0$1056,833,0,0,0$1057,833,0,0,0$1058,833,0,0,0$1059,833,0,0,0$1060,833,0,0,0$1061,833,0,0,0$1062,833,0,0,0$1063,833,0,0,0$1064,833,0,0,0$1065,833,0,0,0$1066,833,0,0,0$1067,833,0,0,0$1068,833,0,0,0$1069,833,0,0,0$1070,833,0,0,0$1071,833,0,0,0$1072,833,0,0,0$1073,833,0,0,0$1074,833,0,0,0$1075,833,0,0,0$1076,833,0,0,0$1077,833,0,0,0$1078,833,0,0,0$1079,833,0,0,0$1080,833,0,0,0$1081,833,0,0,0$1082,833,0,0,0$1083,833,0,0,0$1084,833,0,0,0$1085,833,0,0,0$1086,833,0,0,0$1087,833,0,0,0$1088,833,0,0,0$1089,833,0,0,0$1090,833,0,0,0$1091,833,0,0,0$1092,833,0,0,0$1093,833,0,0,0$1094,833,0,0,0$1095,833,0,0,0$1096,833,0,0,0$1097,833,0,0,0$1098,833,0,0,0$1099,833,0,0,0$1100,833,0,0,0$1101,833,0,0,0$1102,833,0,0,0$1103,833,0,0,0$1104,833,0,0,0$1105,833,0,0,0$1106,833,0,0,0$1107,833,0,0,0$1108,833,0,0,0$1109,833,0,0,0$1110,833,0,0,0$1111,833,0,0,0$1112,833,0,0,0$1113,833,0,0,0$1114,833,0,0,0$1115,833,0,0,0$1116,833,0,0,0$1117,833,0,0,0$1118,833,0,0,0$1119,833,0,0,0$1120,833,0,0,0$1121,833,0,0,0$1122,833,0,0,0$1123,833,0,0,0$1124,833,0,0,0$1125,833,0,0,0$1126,833,0,0,0$1127,833,0,0,0$1128,833,0,0,0");
        private static ColorArray startGameButton = ColorArray.FromThresholdString(130, "756,744,0,0,0$749,744,0,0,0$750,744,0,0,0$752,744,255,255,255$753,744,255,255,255$755,744,0,0,0$757,744,255,255,255$758,744,255,255,255$760,744,0,0,0$761,744,0,0,0$762,744,0,0,0$764,744,255,255,255$765,744,255,255,255$766,744,255,255,255$767,744,255,255,255$768,744,255,255,255$769,744,255,255,255$771,744,0,0,0$773,744,255,255,255$774,744,255,255,255$775,744,0,0,0$776,744,0,0,0$777,744,255,255,255$778,744,255,255,255$779,744,0,0,0$781,744,255,255,255$782,744,255,255,255$783,744,255,255,255$784,744,255,255,255$785,744,255,255,255$786,744,255,255,255$787,744,255,255,255$788,744,255,255,255$789,744,255,255,255$790,744,255,255,255$791,744,255,255,255$792,744,255,255,255$793,744,255,255,255$794,744,255,255,255$795,744,255,255,255$796,744,255,255,255$797,744,0,0,0$798,744,0,0,0$799,744,255,255,255$800,744,255,255,255$802,744,0,0,0$803,744,255,255,255$804,744,255,255,255$806,744,0,0,0$807,744,0,0,0$749,745,0,0,0$751,745,255,255,255$752,745,255,255,255$753,745,255,255,255$754,745,255,255,255$756,745,255,255,255$757,745,255,255,255$758,745,255,255,255$759,745,255,255,255$760,745,255,255,255$761,745,255,255,255$762,745,0,0,0$764,745,255,255,255$765,745,255,255,255$766,745,255,255,255$767,745,255,255,255$768,745,255,255,255$769,745,255,255,255$771,745,0,0,0$773,745,255,255,255$774,745,255,255,255$776,745,255,255,255$777,745,255,255,255$778,745,255,255,255$779,745,0,0,0$781,745,255,255,255$782,745,255,255,255$783,745,255,255,255$784,745,255,255,255$785,745,255,255,255$786,745,255,255,255$787,745,255,255,255$788,745,255,255,255$789,745,255,255,255$790,745,255,255,255$791,745,255,255,255$792,745,255,255,255$793,745,255,255,255$794,745,255,255,255$795,745,255,255,255$796,745,255,255,255$797,745,0,0,0$799,745,255,255,255$800,745,255,255,255$803,745,255,255,255$804,745,255,255,255$806,745,0,0,0$808,745,255,255,255$750,746,255,255,255$751,746,255,255,255$752,746,255,255,255$753,746,255,255,255$754,746,255,255,255$755,746,255,255,255$756,746,255,255,255$757,746,255,255,255$758,746,255,255,255$759,746,255,255,255$760,746,255,255,255$761,746,255,255,255$762,746,0,0,0$768,746,255,255,255$769,746,255,255,255$771,746,0,0,0$772,746,0,0,0$773,746,255,255,255$774,746,255,255,255$776,746,255,255,255$779,746,0,0,0$780,746,0,0,0$782,746,255,255,255$783,746,255,255,255$784,746,255,255,255$793,746,255,255,255$794,746,255,255,255$795,746,255,255,255$797,746,0,0,0$799,746,255,255,255$800,746,255,255,255$801,746,255,255,255$802,746,255,255,255$803,746,255,255,255$804,746,255,255,255$805,746,255,255,255$806,746,0,0,0$808,746,255,255,255$751,747,255,255,255$752,747,255,255,255$757,747,0,0,0$758,747,0,0,0$759,747,0,0,0$760,747,0,0,0$761,747,0,0,0$762,747,0,0,0$766,747,0,0,0$767,747,0,0,0$768,747,255,255,255$769,747,255,255,255$770,747,0,0,0$772,747,255,255,255$773,747,255,255,255$774,747,255,255,255$775,747,255,255,255$776,747,255,255,255$777,747,255,255,255$778,747,255,255,255$779,747,0,0,0$780,747,0,0,0$781,747,0,0,0$782,747,255,255,255$783,747,255,255,255$784,747,255,255,255$785,747,0,0,0$786,747,0,0,0$787,747,0,0,0$788,747,0,0,0$789,747,0,0,0$790,747,0,0,0$791,747,0,0,0$792,747,0,0,0$793,747,255,255,255$794,747,255,255,255$795,747,255,255,255$796,747,0,0,0$797,747,0,0,0$799,747,255,255,255$800,747,255,255,255$801,747,255,255,255$802,747,255,255,255$803,747,255,255,255$804,747,255,255,255$805,747,255,255,255$806,747,0,0,0$807,747,255,255,255$808,747,255,255,255$749,748,0,0,0$750,748,0,0,0$751,748,255,255,255$752,748,255,255,255$753,748,0,0,0$754,748,0,0,0$755,748,0,0,0$757,748,255,255,255$758,748,255,255,255$759,748,255,255,255$760,748,255,255,255$761,748,255,255,255$762,748,0,0,0$763,748,0,0,0$764,748,255,255,255$765,748,255,255,255$768,748,255,255,255$769,748,255,255,255$770,748,0,0,0$771,748,255,255,255$772,748,255,255,255$773,748,255,255,255$774,748,255,255,255$775,748,255,255,255$776,748,255,255,255$777,748,255,255,255$778,748,255,255,255$779,748,0,0,0$780,748,0,0,0$781,748,0,0,0$782,748,255,255,255$783,748,255,255,255$784,748,255,255,255$785,748,0,0,0$786,748,0,0,0$787,748,0,0,0$788,748,0,0,0$789,748,0,0,0$790,748,0,0,0$791,748,0,0,0$792,748,0,0,0$793,748,255,255,255$794,748,255,255,255$795,748,255,255,255$796,748,0,0,0$797,748,0,0,0$798,748,0,0,0$799,748,255,255,255$800,748,255,255,255$802,748,0,0,0$803,748,255,255,255$804,748,255,255,255$807,748,255,255,255$808,748,255,255,255$749,749,0,0,0$751,749,255,255,255$752,749,255,255,255$753,749,255,255,255$754,749,255,255,255$755,749,255,255,255$756,749,255,255,255$757,749,255,255,255$758,749,255,255,255$759,749,255,255,255$760,749,255,255,255$761,749,255,255,255$762,749,0,0,0$763,749,0,0,0$765,749,255,255,255$767,749,255,255,255$768,749,255,255,255$770,749,0,0,0$771,749,0,0,0$772,749,0,0,0$773,749,255,255,255$774,749,255,255,255$776,749,0,0,0$777,749,0,0,0$778,749,0,0,0$779,749,0,0,0$780,749,0,0,0$781,749,0,0,0$782,749,255,255,255$783,749,255,255,255$784,749,255,255,255$785,749,0,0,0$786,749,0,0,0$787,749,0,0,0$788,749,0,0,0$789,749,0,0,0$790,749,0,0,0$791,749,0,0,0$792,749,0,0,0$793,749,255,255,255$794,749,255,255,255$795,749,255,255,255$796,749,0,0,0$797,749,0,0,0$798,749,0,0,0$799,749,255,255,255$800,749,255,255,255$802,749,0,0,0$803,749,255,255,255$804,749,255,255,255$806,749,255,255,255$807,749,255,255,255$808,749,255,255,255$751,750,255,255,255$752,750,255,255,255$753,750,255,255,255$754,750,255,255,255$755,750,255,255,255$756,750,0,0,0$757,750,0,0,0$758,750,0,0,0$759,750,255,255,255$760,750,255,255,255$762,750,0,0,0$763,750,0,0,0$765,750,255,255,255$766,750,255,255,255$767,750,255,255,255$768,750,255,255,255$770,750,0,0,0$771,750,0,0,0$772,750,0,0,0$774,750,255,255,255$775,750,255,255,255$777,750,255,255,255$779,750,0,0,0$780,750,0,0,0$781,750,0,0,0$782,750,255,255,255$783,750,255,255,255$784,750,255,255,255$785,750,0,0,0$786,750,0,0,0$787,750,0,0,0$788,750,0,0,0$789,750,0,0,0$790,750,0,0,0$791,750,0,0,0$792,750,0,0,0$793,750,255,255,255$794,750,255,255,255$795,750,255,255,255$796,750,0,0,0$797,750,0,0,0$798,750,0,0,0$799,750,255,255,255$800,750,255,255,255$802,750,0,0,0$803,750,255,255,255$804,750,255,255,255$806,750,255,255,255$807,750,255,255,255$808,750,255,255,255$751,751,255,255,255$754,751,255,255,255$756,751,0,0,0$757,751,255,255,255$758,751,255,255,255$759,751,255,255,255$760,751,255,255,255$761,751,0,0,0$762,751,0,0,0$763,751,0,0,0$764,751,0,0,0$765,751,255,255,255$766,751,255,255,255$767,751,255,255,255$768,751,255,255,255$769,751,0,0,0$770,751,0,0,0$771,751,0,0,0$772,751,0,0,0$774,751,255,255,255$775,751,255,255,255$777,751,255,255,255$779,751,0,0,0$780,751,0,0,0$781,751,255,255,255$782,751,255,255,255$783,751,255,255,255$784,751,255,255,255$785,751,255,255,255$786,751,255,255,255$787,751,255,255,255$788,751,255,255,255$789,751,255,255,255$790,751,255,255,255$791,751,255,255,255$792,751,255,255,255$793,751,255,255,255$794,751,255,255,255$795,751,255,255,255$796,751,255,255,255$797,751,0,0,0$798,751,0,0,0$799,751,255,255,255$800,751,255,255,255$802,751,0,0,0$803,751,255,255,255$804,751,255,255,255$751,752,255,255,255$754,752,255,255,255$756,752,0,0,0$758,752,255,255,255$759,752,255,255,255$760,752,255,255,255$761,752,0,0,0$762,752,0,0,0$763,752,0,0,0$764,752,0,0,0$765,752,255,255,255$766,752,255,255,255$767,752,255,255,255$769,752,0,0,0$770,752,0,0,0$771,752,0,0,0$772,752,0,0,0$774,752,255,255,255$775,752,255,255,255$777,752,255,255,255$779,752,0,0,0$780,752,0,0,0$781,752,255,255,255$782,752,255,255,255$783,752,255,255,255$784,752,255,255,255$785,752,255,255,255$786,752,255,255,255$787,752,255,255,255$788,752,255,255,255$789,752,255,255,255$790,752,255,255,255$791,752,255,255,255$792,752,255,255,255$793,752,255,255,255$794,752,255,255,255$795,752,255,255,255$797,752,0,0,0$798,752,0,0,0$799,752,255,255,255$800,752,255,255,255$802,752,0,0,0$803,752,255,255,255$804,752,255,255,255$749,753,0,0,0$751,753,255,255,255$754,753,255,255,255$756,753,0,0,0$757,753,0,0,0$759,753,255,255,255$760,753,255,255,255$761,753,0,0,0$762,753,0,0,0$763,753,0,0,0$764,753,0,0,0$766,753,255,255,255$767,753,255,255,255$769,753,0,0,0$770,753,0,0,0$771,753,0,0,0$772,753,0,0,0$774,753,255,255,255$775,753,255,255,255$777,753,255,255,255$778,753,0,0,0$779,753,0,0,0$780,753,0,0,0$781,753,0,0,0$783,753,255,255,255$785,753,0,0,0$786,753,0,0,0$787,753,0,0,0$788,753,0,0,0$789,753,0,0,0$790,753,0,0,0$791,753,0,0,0$792,753,0,0,0$793,753,255,255,255$794,753,255,255,255$796,753,0,0,0$797,753,0,0,0$798,753,0,0,0$799,753,255,255,255$800,753,255,255,255$802,753,0,0,0$803,753,255,255,255$804,753,255,255,255$807,753,255,255,255$808,753,255,255,255$751,754,255,255,255$754,754,255,255,255$759,754,255,255,255$760,754,255,255,255$762,754,0,0,0$763,754,0,0,0$764,754,0,0,0$766,754,255,255,255$767,754,255,255,255$768,754,0,0,0$769,754,0,0,0$770,754,0,0,0$771,754,0,0,0$772,754,0,0,0$773,754,0,0,0$774,754,255,255,255$775,754,255,255,255$776,754,255,255,255$778,754,0,0,0$779,754,0,0,0$780,754,0,0,0$781,754,0,0,0$783,754,255,255,255$785,754,0,0,0$786,754,0,0,0$787,754,0,0,0$788,754,0,0,0$789,754,0,0,0$790,754,0,0,0$791,754,0,0,0$792,754,0,0,0$793,754,255,255,255$794,754,255,255,255$796,754,0,0,0$797,754,0,0,0$798,754,0,0,0$799,754,255,255,255$800,754,255,255,255$803,754,255,255,255$804,754,255,255,255$805,754,0,0,0$807,754,255,255,255$808,754,255,255,255$749,755,0,0,0$751,755,255,255,255$754,755,255,255,255$756,755,255,255,255$757,755,255,255,255$758,755,255,255,255$759,755,255,255,255$760,755,255,255,255$761,755,255,255,255$762,755,0,0,0$763,755,0,0,0$764,755,0,0,0$766,755,255,255,255$767,755,255,255,255$769,755,0,0,0$770,755,0,0,0$774,755,255,255,255$775,755,255,255,255$776,755,255,255,255$778,755,0,0,0$779,755,0,0,0$780,755,0,0,0$781,755,0,0,0$783,755,255,255,255$785,755,0,0,0$786,755,0,0,0$787,755,0,0,0$788,755,0,0,0$789,755,0,0,0$790,755,0,0,0$791,755,0,0,0$792,755,0,0,0$793,755,255,255,255$794,755,255,255,255$796,755,0,0,0$797,755,0,0,0$798,755,0,0,0$800,755,255,255,255$801,755,255,255,255$802,755,255,255,255$803,755,255,255,255$805,755,0,0,0$807,755,255,255,255$749,756,0,0,0$751,756,255,255,255$754,756,255,255,255$759,756,255,255,255$760,756,255,255,255$762,756,0,0,0$763,756,0,0,0$764,756,0,0,0$766,756,255,255,255$767,756,255,255,255$769,756,0,0,0$770,756,0,0,0$771,756,255,255,255$772,756,255,255,255$773,756,255,255,255$774,756,255,255,255$775,756,255,255,255$776,756,255,255,255$777,756,0,0,0$778,756,0,0,0$779,756,0,0,0$780,756,0,0,0$781,756,0,0,0$783,756,255,255,255$785,756,0,0,0$786,756,0,0,0$787,756,0,0,0$788,756,0,0,0$789,756,0,0,0$790,756,0,0,0$791,756,0,0,0$792,756,0,0,0$793,756,255,255,255$794,756,255,255,255$796,756,0,0,0$797,756,0,0,0$798,756,0,0,0$799,756,0,0,0$801,756,255,255,255$802,756,255,255,255$804,756,0,0,0$805,756,0,0,0$807,756,255,255,255$749,757,0,0,0$750,757,0,0,0$751,757,255,255,255$753,757,0,0,0$754,757,255,255,255$756,757,0,0,0$757,757,0,0,0$758,757,0,0,0$759,757,255,255,255$760,757,255,255,255$761,757,0,0,0$762,757,0,0,0$763,757,0,0,0$764,757,0,0,0$765,757,255,255,255$766,757,255,255,255$767,757,255,255,255$768,757,255,255,255$769,757,0,0,0$770,757,0,0,0$771,757,0,0,0$772,757,0,0,0$773,757,0,0,0$775,757,255,255,255$777,757,0,0,0$778,757,0,0,0$779,757,0,0,0$780,757,0,0,0$781,757,0,0,0$783,757,255,255,255$785,757,0,0,0$786,757,0,0,0$787,757,0,0,0$788,757,0,0,0$789,757,0,0,0$790,757,0,0,0$791,757,0,0,0$792,757,0,0,0$793,757,255,255,255$794,757,255,255,255$796,757,0,0,0$797,757,0,0,0$798,757,0,0,0$799,757,0,0,0$801,757,255,255,255$802,757,255,255,255$803,757,255,255,255$805,757,0,0,0$807,757,255,255,255");
        /// <summary>
        /// 查找DNF窗口
        /// </summary>
@@ -68,11 +68,11 @@
        public static bool IsInSaiLiYaHouse(ZTRectangle gameRect)
        {
            ZTRectangle mailText = ZTRectangle.Empty;
            Structs.ZTPoint limitPoint = gameRect.GetRatioPoint(0.667f);
            ZTRectangle limit = new ZTRectangle(limitPoint.X, gameRect.Start.Y, gameRect.End.X, gameRect.End.Y);
            ZTRectangle limit = new ZTRectangle(gameRect.End.X-210, gameRect.Start.Y, gameRect.End.X, gameRect.Start.Y+60);
            //截图
            System.Drawing.Bitmap bitmap = ScreenCapture.Instance.CaptureScreen();
            Image<Rgb, byte> image = new Image<Rgb, byte>(bitmap);
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            //查找地图右上边的艾尔文防线文字
            if (CVHelper.FindColorArray(out mailText, image, AierwenText, gameRect))
@@ -87,10 +87,56 @@
            return false;
        }
        private static ColorArray UpButton = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "960,295,221,197,147$953,296,221,197,147$953,300,221,197,147$953,305,221,197,147$954,306,221,197,147$957,306,221,197,147$960,306,221,197,147$961,305,221,197,147$961,301,221,197,147$961,296,221,197,147$957,295,221,197,147$954,295,221,197,147$957,299,221,197,147$956,300,221,197,147$958,300,221,197,147$958,301,221,197,147$957,301,221,197,147$956,301,221,197,147$955,302,221,197,147$957,302,221,197,147$959,302,221,197,147");
        private static ColorArray DownButton = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "953,700,221,197,147$954,699,221,197,147$957,699,221,197,147$960,699,221,197,147$961,700,221,197,147$961,704,221,197,147$961,709,221,197,147$960,710,221,197,147$957,710,221,197,147$954,710,221,197,147$953,709,221,197,147$953,705,221,197,147$955,703,221,197,147$957,703,221,197,147$959,703,221,197,147$958,704,221,197,147$956,704,221,197,147$957,704,221,197,147$957,705,221,197,147$957,706,221,197,147$956,705,221,197,147$958,705,221,197,147");
        private static ColorArray ScrollButton = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "961,452,221,197,147$954,328,221,197,147$957,328,221,197,147$960,328,221,197,147$961,329,221,197,147$961,333,221,197,147$961,337,221,197,147$961,341,221,197,147$961,345,221,197,147$961,349,221,197,147$961,353,221,197,147$961,451,221,197,147$961,504,221,197,147$961,505,221,197,147$961,549,221,197,147$961,550,221,197,147$961,576,221,197,147$961,575,221,197,147$961,574,221,197,147$961,569,221,197,147$961,567,221,197,147$960,577,221,197,147$958,577,221,197,147$956,577,221,197,147$954,577,221,197,147$953,576,221,197,147$953,575,221,197,147$953,558,221,197,147$953,516,221,197,147$953,515,221,197,147$953,432,221,197,147$953,431,221,197,147$953,388,221,197,147$953,387,221,197,147$953,336,221,197,147$953,331,221,197,147$953,330,221,197,147$953,329,221,197,147");
        /// <summary>
        /// 查找选择角色界面的滚动条
        /// </summary>
        /// <param name="upButtonRect"></param>
        /// <param name="downButtonRect"></param>
        /// <param name="scrollButtonRect"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        public static bool FindSelectRoleScroll(out ZTRectangle upButtonRect, out ZTRectangle downButtonRect, out ZTRectangle scrollButtonRect, ZTRectangle gameRect)
        {
            upButtonRect = ZTRectangle.Empty;
            downButtonRect = ZTRectangle.Empty;
            scrollButtonRect = ZTRectangle.Empty;
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            //查找向上按钮
            if (!CVHelper.FindColorArray(out upButtonRect, image, UpButton, gameRect))
            {
                return false;
            }
            //查找向下按钮
            if (!CVHelper.FindColorArray(out downButtonRect, image, DownButton, gameRect))
            {
                return false;
            }
            //查找滚动条
            if (!CVHelper.FindColorArray(out scrollButtonRect, image, ScrollButton, gameRect))
            {
                return false;
            }
            return true;
        }
        /// <summary>
        /// 弹出窗关闭按钮
        /// </summary>
        private static ColorArray AlterWindowCloseButton = ColorArray.FromThresholdString(107, "1153,291,255,255,255$1151,289,255,255,255$1152,289,255,255,255$1161,289,255,255,255$1162,289,255,255,255$1151,290,0,0,0$1152,290,255,255,255$1153,290,255,255,255$1160,290,255,255,255$1161,290,255,255,255$1152,291,0,0,0$1154,291,255,255,255$1159,291,255,255,255$1160,291,255,255,255$1161,291,0,0,0$1153,292,0,0,0$1154,292,255,255,255$1155,292,255,255,255$1158,292,255,255,255$1159,292,255,255,255$1160,292,0,0,0$1154,293,0,0,0$1155,293,255,255,255$1156,293,255,255,255$1157,293,255,255,255$1158,293,255,255,255$1159,293,0,0,0$1155,294,0,0,0$1156,294,255,255,255$1157,294,255,255,255$1158,294,0,0,0$1148,295,0,0,0$1149,295,0,0,0$1150,295,0,0,0$1151,295,0,0,0$1152,295,0,0,0$1153,295,0,0,0$1155,295,255,255,255$1156,295,255,255,255$1157,295,255,255,255$1158,295,255,255,255$1159,295,0,0,0$1160,295,0,0,0$1161,295,0,0,0$1162,295,0,0,0$1148,296,0,0,0$1149,296,0,0,0$1150,296,0,0,0$1151,296,0,0,0$1152,296,0,0,0$1154,296,255,255,255$1155,296,255,255,255$1156,296,0,0,0$1157,296,0,0,0$1158,296,255,255,255$1159,296,255,255,255$1161,296,0,0,0$1162,296,0,0,0$1148,297,0,0,0$1149,297,0,0,0$1150,297,0,0,0$1151,297,0,0,0$1153,297,255,255,255$1154,297,255,255,255$1155,297,0,0,0$1156,297,0,0,0$1157,297,0,0,0$1158,297,0,0,0$1159,297,255,255,255$1160,297,255,255,255$1162,297,0,0,0$1152,298,255,255,255$1153,298,255,255,255$1154,298,0,0,0$1159,298,0,0,0$1160,298,255,255,255$1161,298,255,255,255$1151,299,255,255,255$1152,299,255,255,255$1153,299,0,0,0$1160,299,0,0,0$1161,299,255,255,255$1162,299,255,255,255$1151,300,0,0,0$1152,300,0,0,0$1161,300,0,0,0$1162,300,0,0,0");
        private static ColorArray AlterWindowCloseButton = ColorArray.FromThresholdString(107, "965,236,0,0,0$964,234,255,255,255$965,234,255,255,255$970,234,255,255,255$971,234,255,255,255$964,235,0,0,0$965,235,255,255,255$966,235,255,255,255$969,235,255,255,255$970,235,255,255,255$971,235,0,0,0$966,236,255,255,255$967,236,255,255,255$968,236,255,255,255$969,236,255,255,255$970,236,0,0,0$963,237,0,0,0$964,237,0,0,0$965,237,0,0,0$966,237,0,0,0$967,237,255,255,255$968,237,255,255,255$969,237,0,0,0$970,237,0,0,0$971,237,0,0,0$972,237,0,0,0$973,237,0,0,0$974,237,0,0,0$966,238,255,255,255$967,238,255,255,255$968,238,255,255,255$969,238,255,255,255$965,239,255,255,255$966,239,255,255,255$967,239,0,0,0$968,239,0,0,0$969,239,255,255,255$970,239,255,255,255$964,240,255,255,255$965,240,255,255,255$966,240,0,0,0$969,240,0,0,0$970,240,255,255,255$971,240,255,255,255$964,241,0,0,0$965,241,0,0,0$970,241,0,0,0$971,241,0,0,0");
        /// <summary>
        /// 弹出公告的关闭按钮,比弹出窗的关闭按钮小一点
@@ -123,7 +169,7 @@
            }
            ZTLine rightLine = ZTLine.Empty;
            limit = new ZTRectangle(upLine.X + upLine.Length, upLine.Y, upLine.X + upLine.Length + 8, upLine.Y + 30);
            limit = new ZTRectangle(upLine.X + upLine.Length, upLine.Y, upLine.X + upLine.Length + 3, upLine.Y + 30);
            //找右线
            if (!CVHelper.FindLine(out rightLine, image, 10, limit, Orientation.Vertical, new ZTColor(0, 0, 0)))
            {
@@ -131,7 +177,7 @@
            }
            ZTLine downLine = ZTLine.Empty;
            limit = new ZTRectangle(upLine.X, rightLine.Y + rightLine.Length, rightLine.X, rightLine.Y + rightLine.Length + 14);
            limit = new ZTRectangle(upLine.X, rightLine.Y + rightLine.Length, rightLine.X, rightLine.Y + rightLine.Length + 10);
            //找下线
            if (!CVHelper.FindLine(out downLine, image, 10, limit, Orientation.Horizontal, new ZTColor(0, 0, 0)))
            {
@@ -142,8 +188,8 @@
        }
        private static ZTHsvFloatColor minPilaozhi = new ZTHsvFloatColor(0.566f, 0.998f, 0.943f);
        private static ZTHsvFloatColor maxPilaozhi = new ZTHsvFloatColor(0.570f, 1.0f, 0.947f);
        private static ZTHsvFloatColor minPilaozhi = new ZTHsvFloatColor(0.498f, 0.998f, 0.898f);
        private static ZTHsvFloatColor maxPilaozhi = new ZTHsvFloatColor(0.504f, 1.0f, 0.904f);
        private static ZTHsvFloatColor minPilaozhi_last = new ZTHsvFloatColor(0.963f, 0.998f, 0.700f);
        private static ZTHsvFloatColor maxPilaozhi_last = new ZTHsvFloatColor(0.967f, 1.0f, 0.704f);
@@ -154,12 +200,12 @@
        public static Int32 GetPiLaoZhi(ZTRectangle gameRect)
        {
            //疲劳值范围
            ZTRectangle findLimitRect = new ZTRectangle(gameRect.Start.X + 550, gameRect.End.Y - 55, gameRect.Start.X + 750, gameRect.End.Y - 35);
            ZTRectangle findLimitRect = new ZTRectangle(gameRect.Start.X + 331, gameRect.Start.Y+546, gameRect.Start.X + 500, gameRect.Start.Y+565);
            //截图
            System.Drawing.Bitmap bitmap = ScreenCapture.Instance.CaptureScreen();
            Image<Rgb, byte> image = new Image<Rgb, byte>(bitmap);
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            ZTLine line = ZTLine.Empty;
@@ -217,12 +263,12 @@
        /// <summary>
        /// 所有房间刷完之后奖励文字
        /// </summary>
        public static ColorArray Jiangli = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "649,65,255,255,255$672,66,255,255,255$600,62,255,255,255$608,67,255,255,255$630,67,255,255,255$669,94,255,255,255$645,90,255,255,255$620,92,255,255,255$654,79,255,255,255");
        public static ColorArray JiangliText = ColorArray.FromThresholdString(180, "1488,185,255,255,255$1475,185,0,0,0$1476,185,0,0,0$1477,185,0,0,0$1479,185,255,255,255$1480,185,255,255,255$1481,185,255,255,255$1482,185,255,255,255$1484,185,0,0,0$1486,185,255,255,255$1487,185,255,255,255$1489,185,255,255,255$1490,185,255,255,255$1492,185,0,0,0$1493,185,0,0,0$1496,185,255,255,255$1497,185,255,255,255$1498,185,255,255,255$1499,185,255,255,255$1500,185,255,255,255$1501,185,255,255,255$1502,185,255,255,255$1503,185,255,255,255$1504,185,255,255,255$1505,185,255,255,255$1506,185,255,255,255$1507,185,255,255,255$1508,185,255,255,255$1509,185,255,255,255$1510,185,0,0,0$1511,185,0,0,0$1512,185,0,0,0$1513,185,0,0,0$1514,185,0,0,0$1515,185,0,0,0$1516,185,0,0,0$1517,185,0,0,0$1518,185,0,0,0$1519,185,0,0,0$1520,185,255,255,255$1521,185,255,255,255$1522,185,255,255,255$1523,185,255,255,255$1524,185,255,255,255$1525,185,255,255,255$1526,185,255,255,255$1527,185,255,255,255$1528,185,255,255,255$1529,185,255,255,255$1530,185,255,255,255$1531,185,255,255,255$1532,185,255,255,255$1533,185,255,255,255$1534,185,255,255,255$1535,185,255,255,255$1536,185,255,255,255$1538,185,0,0,0$1540,185,255,255,255$1541,185,255,255,255$1542,185,255,255,255$1543,185,255,255,255$1475,186,0,0,0$1476,186,0,0,0$1478,186,255,255,255$1479,186,255,255,255$1480,186,255,255,255$1481,186,255,255,255$1482,186,255,255,255$1483,186,255,255,255$1485,186,255,255,255$1486,186,255,255,255$1487,186,255,255,255$1488,186,255,255,255$1489,186,255,255,255$1490,186,255,255,255$1492,186,0,0,0$1495,186,255,255,255$1496,186,255,255,255$1497,186,255,255,255$1498,186,255,255,255$1499,186,255,255,255$1500,186,255,255,255$1501,186,255,255,255$1502,186,255,255,255$1503,186,255,255,255$1504,186,255,255,255$1505,186,255,255,255$1506,186,255,255,255$1507,186,255,255,255$1508,186,255,255,255$1509,186,255,255,255$1510,186,0,0,0$1511,186,0,0,0$1512,186,0,0,0$1513,186,0,0,0$1514,186,0,0,0$1515,186,0,0,0$1516,186,0,0,0$1517,186,0,0,0$1518,186,0,0,0$1520,186,255,255,255$1521,186,255,255,255$1522,186,255,255,255$1523,186,255,255,255$1524,186,255,255,255$1525,186,255,255,255$1526,186,255,255,255$1527,186,255,255,255$1528,186,255,255,255$1529,186,255,255,255$1530,186,255,255,255$1531,186,255,255,255$1532,186,255,255,255$1533,186,255,255,255$1534,186,255,255,255$1535,186,255,255,255$1536,186,255,255,255$1538,186,0,0,0$1540,186,255,255,255$1541,186,255,255,255$1542,186,255,255,255$1543,186,255,255,255$1475,187,0,0,0$1476,187,0,0,0$1478,187,255,255,255$1479,187,255,255,255$1480,187,255,255,255$1481,187,255,255,255$1482,187,255,255,255$1483,187,255,255,255$1484,187,255,255,255$1485,187,255,255,255$1486,187,255,255,255$1487,187,255,255,255$1488,187,255,255,255$1489,187,255,255,255$1490,187,255,255,255$1494,187,255,255,255$1495,187,255,255,255$1496,187,255,255,255$1497,187,255,255,255$1498,187,255,255,255$1499,187,255,255,255$1500,187,255,255,255$1501,187,255,255,255$1502,187,255,255,255$1503,187,255,255,255$1504,187,255,255,255$1505,187,255,255,255$1506,187,255,255,255$1507,187,255,255,255$1508,187,255,255,255$1510,187,0,0,0$1511,187,0,0,0$1512,187,0,0,0$1513,187,0,0,0$1514,187,0,0,0$1515,187,0,0,0$1516,187,0,0,0$1517,187,0,0,0$1518,187,0,0,0$1520,187,255,255,255$1521,187,255,255,255$1522,187,255,255,255$1523,187,255,255,255$1524,187,255,255,255$1525,187,255,255,255$1526,187,255,255,255$1527,187,255,255,255$1528,187,255,255,255$1529,187,255,255,255$1530,187,255,255,255$1531,187,255,255,255$1532,187,255,255,255$1533,187,255,255,255$1534,187,255,255,255$1535,187,255,255,255$1536,187,255,255,255$1538,187,0,0,0$1539,187,255,255,255$1540,187,255,255,255$1541,187,255,255,255$1542,187,255,255,255$1543,187,255,255,255$1475,188,0,0,0$1476,188,0,0,0$1477,188,0,0,0$1479,188,255,255,255$1480,188,255,255,255$1481,188,255,255,255$1482,188,255,255,255$1483,188,255,255,255$1484,188,255,255,255$1485,188,255,255,255$1486,188,255,255,255$1487,188,255,255,255$1488,188,255,255,255$1489,188,255,255,255$1490,188,255,255,255$1493,188,255,255,255$1494,188,255,255,255$1495,188,255,255,255$1496,188,255,255,255$1497,188,255,255,255$1498,188,255,255,255$1499,188,255,255,255$1500,188,255,255,255$1501,188,255,255,255$1502,188,255,255,255$1503,188,255,255,255$1504,188,255,255,255$1505,188,255,255,255$1506,188,255,255,255$1507,188,255,255,255$1508,188,255,255,255$1510,188,0,0,0$1511,188,0,0,0$1512,188,0,0,0$1513,188,0,0,0$1514,188,0,0,0$1515,188,0,0,0$1516,188,0,0,0$1517,188,0,0,0$1518,188,0,0,0$1520,188,255,255,255$1521,188,255,255,255$1522,188,255,255,255$1523,188,255,255,255$1524,188,255,255,255$1525,188,255,255,255$1526,188,255,255,255$1527,188,255,255,255$1528,188,255,255,255$1529,188,255,255,255$1530,188,255,255,255$1531,188,255,255,255$1532,188,255,255,255$1533,188,255,255,255$1534,188,255,255,255$1535,188,255,255,255$1536,188,255,255,255$1539,188,255,255,255$1540,188,255,255,255$1541,188,255,255,255$1542,188,255,255,255$1543,188,255,255,255$1475,189,0,0,0$1476,189,0,0,0$1477,189,0,0,0$1479,189,255,255,255$1480,189,255,255,255$1481,189,255,255,255$1482,189,255,255,255$1483,189,255,255,255$1484,189,255,255,255$1485,189,255,255,255$1486,189,255,255,255$1487,189,255,255,255$1488,189,255,255,255$1489,189,255,255,255$1492,189,255,255,255$1493,189,255,255,255$1494,189,255,255,255$1495,189,255,255,255$1496,189,255,255,255$1497,189,255,255,255$1498,189,255,255,255$1499,189,255,255,255$1500,189,255,255,255$1501,189,255,255,255$1502,189,255,255,255$1503,189,255,255,255$1504,189,255,255,255$1505,189,255,255,255$1506,189,255,255,255$1507,189,255,255,255$1508,189,255,255,255$1510,189,0,0,0$1511,189,0,0,0$1512,189,0,0,0$1513,189,0,0,0$1514,189,0,0,0$1515,189,0,0,0$1516,189,0,0,0$1517,189,0,0,0$1518,189,0,0,0$1520,189,255,255,255$1521,189,255,255,255$1522,189,255,255,255$1523,189,255,255,255$1537,189,255,255,255$1538,189,255,255,255$1539,189,255,255,255$1540,189,255,255,255$1541,189,255,255,255$1542,189,255,255,255$1543,189,255,255,255$1544,189,255,255,255$1475,190,0,0,0$1476,190,0,0,0$1477,190,0,0,0$1478,190,0,0,0$1480,190,255,255,255$1481,190,255,255,255$1482,190,255,255,255$1485,190,255,255,255$1486,190,255,255,255$1487,190,255,255,255$1488,190,255,255,255$1489,190,255,255,255$1490,190,255,255,255$1491,190,255,255,255$1492,190,255,255,255$1493,190,255,255,255$1494,190,255,255,255$1495,190,255,255,255$1496,190,255,255,255$1497,190,255,255,255$1503,190,255,255,255$1504,190,255,255,255$1505,190,255,255,255$1506,190,255,255,255$1507,190,255,255,255$1508,190,255,255,255$1510,190,0,0,0$1511,190,0,0,0$1512,190,0,0,0$1513,190,0,0,0$1514,190,0,0,0$1515,190,0,0,0$1516,190,0,0,0$1517,190,0,0,0$1518,190,0,0,0$1519,190,255,255,255$1520,190,255,255,255$1521,190,255,255,255$1522,190,255,255,255$1523,190,255,255,255$1525,190,0,0,0$1526,190,0,0,0$1527,190,0,0,0$1528,190,0,0,0$1529,190,0,0,0$1530,190,0,0,0$1531,190,0,0,0$1532,190,0,0,0$1533,190,0,0,0$1534,190,0,0,0$1535,190,0,0,0$1537,190,255,255,255$1538,190,255,255,255$1539,190,255,255,255$1540,190,255,255,255$1541,190,255,255,255$1542,190,255,255,255$1543,190,255,255,255$1544,190,255,255,255$1475,191,0,0,0$1476,191,0,0,0$1477,191,0,0,0$1478,191,0,0,0$1480,191,255,255,255$1481,191,255,255,255$1483,191,0,0,0$1485,191,255,255,255$1486,191,255,255,255$1487,191,255,255,255$1488,191,255,255,255$1489,191,255,255,255$1490,191,255,255,255$1491,191,255,255,255$1492,191,255,255,255$1493,191,255,255,255$1494,191,255,255,255$1495,191,255,255,255$1499,191,0,0,0$1500,191,0,0,0$1501,191,0,0,0$1503,191,255,255,255$1504,191,255,255,255$1505,191,255,255,255$1506,191,255,255,255$1507,191,255,255,255$1509,191,0,0,0$1510,191,0,0,0$1511,191,0,0,0$1512,191,0,0,0$1513,191,0,0,0$1514,191,0,0,0$1515,191,0,0,0$1516,191,0,0,0$1517,191,0,0,0$1519,191,255,255,255$1520,191,255,255,255$1521,191,255,255,255$1522,191,255,255,255$1523,191,255,255,255$1524,191,255,255,255$1525,191,255,255,255$1526,191,255,255,255$1527,191,255,255,255$1528,191,255,255,255$1529,191,255,255,255$1530,191,255,255,255$1531,191,255,255,255$1532,191,255,255,255$1533,191,255,255,255$1534,191,255,255,255$1535,191,255,255,255$1537,191,255,255,255$1538,191,255,255,255$1539,191,255,255,255$1540,191,255,255,255$1541,191,255,255,255$1542,191,255,255,255$1543,191,255,255,255$1544,191,255,255,255$1475,192,0,0,0$1476,192,0,0,0$1477,192,0,0,0$1478,192,0,0,0$1479,192,0,0,0$1484,192,255,255,255$1485,192,255,255,255$1486,192,255,255,255$1487,192,255,255,255$1488,192,255,255,255$1489,192,255,255,255$1490,192,255,255,255$1491,192,255,255,255$1492,192,255,255,255$1493,192,255,255,255$1494,192,255,255,255$1495,192,255,255,255$1496,192,255,255,255$1497,192,255,255,255$1498,192,255,255,255$1502,192,255,255,255$1503,192,255,255,255$1504,192,255,255,255$1505,192,255,255,255$1506,192,255,255,255$1508,192,0,0,0$1509,192,0,0,0$1510,192,0,0,0$1511,192,0,0,0$1512,192,0,0,0$1513,192,0,0,0$1514,192,0,0,0$1515,192,0,0,0$1516,192,0,0,0$1517,192,0,0,0$1519,192,255,255,255$1520,192,255,255,255$1521,192,255,255,255$1522,192,255,255,255$1523,192,255,255,255$1524,192,255,255,255$1525,192,255,255,255$1526,192,255,255,255$1527,192,255,255,255$1528,192,255,255,255$1529,192,255,255,255$1530,192,255,255,255$1531,192,255,255,255$1532,192,255,255,255$1533,192,255,255,255$1534,192,255,255,255$1535,192,255,255,255$1537,192,255,255,255$1538,192,255,255,255$1539,192,255,255,255$1540,192,255,255,255$1541,192,255,255,255$1542,192,255,255,255$1543,192,255,255,255$1544,192,255,255,255$1475,193,0,0,0$1476,193,0,0,0$1477,193,0,0,0$1478,193,0,0,0$1479,193,0,0,0$1482,193,255,255,255$1483,193,255,255,255$1484,193,255,255,255$1485,193,255,255,255$1486,193,255,255,255$1487,193,255,255,255$1488,193,255,255,255$1489,193,255,255,255$1490,193,255,255,255$1491,193,255,255,255$1492,193,255,255,255$1493,193,255,255,255$1494,193,255,255,255$1495,193,255,255,255$1496,193,255,255,255$1497,193,255,255,255$1498,193,255,255,255$1501,193,255,255,255$1502,193,255,255,255$1503,193,255,255,255$1504,193,255,255,255$1505,193,255,255,255$1506,193,255,255,255$1508,193,0,0,0$1509,193,0,0,0$1510,193,0,0,0$1511,193,0,0,0$1512,193,0,0,0$1513,193,0,0,0$1514,193,0,0,0$1515,193,0,0,0$1516,193,0,0,0$1517,193,0,0,0$1519,193,255,255,255$1520,193,255,255,255$1521,193,255,255,255$1522,193,255,255,255$1523,193,255,255,255$1524,193,255,255,255$1525,193,255,255,255$1526,193,255,255,255$1527,193,255,255,255$1528,193,255,255,255$1529,193,255,255,255$1530,193,255,255,255$1531,193,255,255,255$1532,193,255,255,255$1533,193,255,255,255$1534,193,255,255,255$1537,193,255,255,255$1538,193,255,255,255$1539,193,255,255,255$1540,193,255,255,255$1541,193,255,255,255$1542,193,255,255,255$1543,193,255,255,255$1544,193,255,255,255$1475,194,0,0,0$1476,194,0,0,0$1477,194,0,0,0$1480,194,255,255,255$1481,194,255,255,255$1482,194,255,255,255$1483,194,255,255,255$1484,194,255,255,255$1485,194,255,255,255$1486,194,255,255,255$1487,194,255,255,255$1488,194,255,255,255$1491,194,255,255,255$1494,194,255,255,255$1495,194,255,255,255$1496,194,255,255,255$1497,194,255,255,255$1498,194,255,255,255$1499,194,255,255,255$1500,194,255,255,255$1501,194,255,255,255$1502,194,255,255,255$1503,194,255,255,255$1504,194,255,255,255$1505,194,255,255,255$1507,194,0,0,0$1508,194,0,0,0$1509,194,0,0,0$1510,194,0,0,0$1511,194,0,0,0$1512,194,0,0,0$1513,194,0,0,0$1514,194,0,0,0$1515,194,0,0,0$1516,194,0,0,0$1517,194,0,0,0$1519,194,255,255,255$1520,194,255,255,255$1521,194,255,255,255$1522,194,255,255,255$1523,194,255,255,255$1524,194,255,255,255$1525,194,255,255,255$1526,194,255,255,255$1527,194,255,255,255$1528,194,255,255,255$1529,194,255,255,255$1530,194,255,255,255$1531,194,255,255,255$1532,194,255,255,255$1533,194,255,255,255$1534,194,255,255,255$1538,194,255,255,255$1539,194,255,255,255$1540,194,255,255,255$1541,194,255,255,255$1542,194,255,255,255$1544,194,255,255,255$1475,195,0,0,0$1477,195,255,255,255$1478,195,255,255,255$1479,195,255,255,255$1480,195,255,255,255$1481,195,255,255,255$1482,195,255,255,255$1483,195,255,255,255$1484,195,255,255,255$1485,195,255,255,255$1486,195,255,255,255$1487,195,255,255,255$1488,195,255,255,255$1490,195,0,0,0$1492,195,0,0,0$1494,195,255,255,255$1495,195,255,255,255$1496,195,255,255,255$1497,195,255,255,255$1498,195,255,255,255$1499,195,255,255,255$1500,195,255,255,255$1501,195,255,255,255$1502,195,255,255,255$1503,195,255,255,255$1504,195,255,255,255$1506,195,0,0,0$1507,195,0,0,0$1508,195,0,0,0$1509,195,0,0,0$1510,195,0,0,0$1511,195,0,0,0$1512,195,0,0,0$1513,195,0,0,0$1514,195,0,0,0$1515,195,0,0,0$1516,195,0,0,0$1517,195,0,0,0$1519,195,255,255,255$1520,195,255,255,255$1521,195,255,255,255$1522,195,255,255,255$1523,195,255,255,255$1524,195,255,255,255$1525,195,255,255,255$1526,195,255,255,255$1527,195,255,255,255$1528,195,255,255,255$1529,195,255,255,255$1530,195,255,255,255$1531,195,255,255,255$1532,195,255,255,255$1533,195,255,255,255$1534,195,255,255,255$1536,195,0,0,0$1538,195,255,255,255$1539,195,255,255,255$1540,195,255,255,255$1541,195,255,255,255$1544,195,255,255,255$1475,196,0,0,0$1476,196,255,255,255$1477,196,255,255,255$1478,196,255,255,255$1479,196,255,255,255$1480,196,255,255,255$1481,196,255,255,255$1482,196,255,255,255$1483,196,255,255,255$1484,196,255,255,255$1485,196,255,255,255$1486,196,255,255,255$1487,196,255,255,255$1488,196,255,255,255$1490,196,0,0,0$1491,196,0,0,0$1492,196,0,0,0$1493,196,0,0,0$1495,196,255,255,255$1496,196,255,255,255$1497,196,255,255,255$1498,196,255,255,255$1499,196,255,255,255$1500,196,255,255,255$1501,196,255,255,255$1502,196,255,255,255$1503,196,255,255,255$1505,196,0,0,0$1506,196,0,0,0$1507,196,0,0,0$1508,196,0,0,0$1509,196,0,0,0$1510,196,0,0,0$1511,196,0,0,0$1512,196,0,0,0$1513,196,0,0,0$1514,196,0,0,0$1515,196,0,0,0$1516,196,0,0,0$1517,196,0,0,0$1518,196,255,255,255$1519,196,255,255,255$1520,196,255,255,255$1521,196,255,255,255$1522,196,255,255,255$1525,196,255,255,255$1526,196,255,255,255$1527,196,255,255,255$1528,196,255,255,255$1536,196,0,0,0$1538,196,255,255,255$1539,196,255,255,255$1540,196,255,255,255$1541,196,255,255,255$1544,196,255,255,255$1475,197,0,0,0$1477,197,255,255,255$1478,197,255,255,255$1479,197,255,255,255$1480,197,255,255,255$1481,197,255,255,255$1482,197,255,255,255$1483,197,255,255,255$1484,197,255,255,255$1485,197,255,255,255$1486,197,255,255,255$1487,197,255,255,255$1488,197,255,255,255$1490,197,0,0,0$1494,197,255,255,255$1495,197,255,255,255$1496,197,255,255,255$1497,197,255,255,255$1498,197,255,255,255$1499,197,255,255,255$1500,197,255,255,255$1501,197,255,255,255$1502,197,255,255,255$1504,197,0,0,0$1505,197,0,0,0$1506,197,0,0,0$1507,197,0,0,0$1508,197,0,0,0$1509,197,0,0,0$1510,197,0,0,0$1511,197,0,0,0$1512,197,0,0,0$1513,197,0,0,0$1514,197,0,0,0$1515,197,0,0,0$1516,197,0,0,0$1518,197,255,255,255$1519,197,255,255,255$1520,197,255,255,255$1521,197,255,255,255$1522,197,255,255,255$1525,197,255,255,255$1526,197,255,255,255$1527,197,255,255,255$1528,197,255,255,255$1530,197,0,0,0$1531,197,0,0,0$1532,197,0,0,0$1533,197,0,0,0$1534,197,0,0,0$1535,197,0,0,0$1536,197,0,0,0$1537,197,255,255,255$1538,197,255,255,255$1539,197,255,255,255$1540,197,255,255,255$1541,197,255,255,255$1544,197,255,255,255$1475,198,0,0,0$1477,198,255,255,255$1478,198,255,255,255$1479,198,255,255,255$1480,198,255,255,255$1481,198,255,255,255$1482,198,255,255,255$1483,198,255,255,255$1484,198,255,255,255$1485,198,255,255,255$1486,198,255,255,255$1487,198,255,255,255$1488,198,255,255,255$1491,198,255,255,255$1492,198,255,255,255$1493,198,255,255,255$1494,198,255,255,255$1495,198,255,255,255$1496,198,255,255,255$1497,198,255,255,255$1498,198,255,255,255$1499,198,255,255,255$1500,198,255,255,255$1501,198,255,255,255$1503,198,0,0,0$1504,198,0,0,0$1505,198,0,0,0$1506,198,0,0,0$1507,198,0,0,0$1508,198,0,0,0$1509,198,0,0,0$1510,198,0,0,0$1511,198,0,0,0$1512,198,0,0,0$1513,198,0,0,0$1514,198,0,0,0$1515,198,0,0,0$1516,198,0,0,0$1518,198,255,255,255$1519,198,255,255,255$1520,198,255,255,255$1521,198,255,255,255$1522,198,255,255,255$1523,198,0,0,0$1524,198,255,255,255$1525,198,255,255,255$1526,198,255,255,255$1527,198,255,255,255$1528,198,255,255,255$1529,198,255,255,255$1530,198,255,255,255$1531,198,255,255,255$1532,198,255,255,255$1533,198,255,255,255$1535,198,0,0,0$1537,198,255,255,255$1538,198,255,255,255$1539,198,255,255,255$1540,198,255,255,255$1541,198,255,255,255$1543,198,255,255,255$1544,198,255,255,255$1475,199,0,0,0$1477,199,255,255,255$1478,199,255,255,255$1479,199,255,255,255$1483,199,255,255,255$1484,199,255,255,255$1485,199,255,255,255$1486,199,255,255,255$1487,199,255,255,255$1488,199,255,255,255$1489,199,0,0,0$1491,199,255,255,255$1492,199,255,255,255$1493,199,255,255,255$1494,199,255,255,255$1495,199,255,255,255$1496,199,255,255,255$1497,199,255,255,255$1498,199,255,255,255$1499,199,255,255,255$1502,199,0,0,0$1503,199,0,0,0$1504,199,0,0,0$1505,199,0,0,0$1506,199,0,0,0$1507,199,0,0,0$1508,199,0,0,0$1509,199,0,0,0$1510,199,0,0,0$1511,199,0,0,0$1512,199,0,0,0$1513,199,0,0,0$1514,199,0,0,0$1515,199,0,0,0$1516,199,0,0,0$1518,199,255,255,255$1519,199,255,255,255$1520,199,255,255,255$1521,199,255,255,255$1524,199,255,255,255$1525,199,255,255,255$1526,199,255,255,255$1527,199,255,255,255$1528,199,255,255,255$1529,199,255,255,255$1530,199,255,255,255$1531,199,255,255,255$1532,199,255,255,255$1533,199,255,255,255$1535,199,0,0,0$1537,199,255,255,255$1538,199,255,255,255$1539,199,255,255,255$1540,199,255,255,255$1541,199,255,255,255$1543,199,255,255,255$1544,199,255,255,255$1475,200,0,0,0$1476,200,0,0,0$1480,200,0,0,0$1481,200,0,0,0$1483,200,255,255,255$1484,200,255,255,255$1485,200,255,255,255$1486,200,255,255,255$1487,200,255,255,255$1492,200,255,255,255$1493,200,255,255,255$1494,200,255,255,255$1495,200,255,255,255$1496,200,255,255,255$1497,200,255,255,255$1500,200,0,0,0$1501,200,0,0,0$1502,200,0,0,0$1503,200,0,0,0$1504,200,0,0,0$1505,200,0,0,0$1506,200,0,0,0$1507,200,0,0,0$1508,200,0,0,0$1509,200,0,0,0$1510,200,0,0,0$1511,200,0,0,0$1512,200,0,0,0$1513,200,0,0,0$1514,200,0,0,0$1515,200,0,0,0$1516,200,0,0,0$1518,200,255,255,255$1519,200,255,255,255$1520,200,255,255,255$1521,200,255,255,255$1524,200,255,255,255$1525,200,255,255,255$1526,200,255,255,255$1527,200,255,255,255$1528,200,255,255,255$1529,200,255,255,255$1530,200,255,255,255$1531,200,255,255,255$1532,200,255,255,255$1533,200,255,255,255$1535,200,0,0,0$1537,200,255,255,255$1538,200,255,255,255$1539,200,255,255,255$1540,200,255,255,255$1543,200,255,255,255$1544,200,255,255,255$1475,201,0,0,0$1476,201,0,0,0$1478,201,0,0,0$1479,201,0,0,0$1480,201,0,0,0$1481,201,0,0,0$1483,201,255,255,255$1484,201,255,255,255$1485,201,255,255,255$1486,201,255,255,255$1487,201,255,255,255$1488,201,255,255,255$1489,201,255,255,255$1490,201,255,255,255$1491,201,255,255,255$1492,201,255,255,255$1493,201,255,255,255$1494,201,255,255,255$1495,201,255,255,255$1498,201,0,0,0$1499,201,0,0,0$1500,201,0,0,0$1501,201,0,0,0$1502,201,0,0,0$1503,201,0,0,0$1504,201,0,0,0$1505,201,0,0,0$1506,201,0,0,0$1507,201,0,0,0$1508,201,0,0,0$1509,201,0,0,0$1510,201,0,0,0$1511,201,0,0,0$1512,201,0,0,0$1513,201,0,0,0$1514,201,0,0,0$1515,201,0,0,0$1516,201,0,0,0$1517,201,255,255,255$1518,201,255,255,255$1519,201,255,255,255$1520,201,255,255,255$1521,201,255,255,255$1524,201,255,255,255$1525,201,255,255,255$1526,201,255,255,255$1527,201,255,255,255$1528,201,255,255,255$1529,201,255,255,255$1530,201,255,255,255$1531,201,255,255,255$1532,201,255,255,255$1533,201,255,255,255$1535,201,0,0,0$1536,201,255,255,255$1537,201,255,255,255$1538,201,255,255,255$1539,201,255,255,255$1540,201,255,255,255$1543,201,255,255,255$1544,201,255,255,255$1475,202,0,0,0$1476,202,0,0,0$1477,202,0,0,0$1478,202,0,0,0$1479,202,0,0,0$1480,202,0,0,0$1481,202,0,0,0$1482,202,0,0,0$1483,202,0,0,0$1484,202,0,0,0$1485,202,0,0,0$1486,202,0,0,0$1488,202,255,255,255$1489,202,255,255,255$1490,202,255,255,255$1491,202,255,255,255$1492,202,255,255,255$1493,202,255,255,255$1496,202,0,0,0$1497,202,0,0,0$1498,202,0,0,0$1499,202,0,0,0$1500,202,0,0,0$1501,202,0,0,0$1502,202,0,0,0$1503,202,0,0,0$1504,202,0,0,0$1505,202,0,0,0$1506,202,0,0,0$1507,202,0,0,0$1508,202,0,0,0$1509,202,0,0,0$1510,202,0,0,0$1511,202,0,0,0$1512,202,0,0,0$1513,202,0,0,0$1514,202,0,0,0$1515,202,0,0,0$1517,202,255,255,255$1518,202,255,255,255$1519,202,255,255,255$1520,202,255,255,255$1521,202,255,255,255$1524,202,255,255,255$1525,202,255,255,255$1526,202,255,255,255$1527,202,255,255,255$1528,202,255,255,255$1529,202,255,255,255$1530,202,255,255,255$1531,202,255,255,255$1532,202,255,255,255$1533,202,255,255,255$1536,202,255,255,255$1537,202,255,255,255$1538,202,255,255,255$1539,202,255,255,255$1540,202,255,255,255$1543,202,255,255,255$1544,202,255,255,255$1475,203,255,255,255$1476,203,255,255,255$1477,203,255,255,255$1478,203,255,255,255$1479,203,255,255,255$1480,203,255,255,255$1481,203,255,255,255$1482,203,255,255,255$1483,203,255,255,255$1484,203,255,255,255$1485,203,255,255,255$1486,203,255,255,255$1487,203,255,255,255$1488,203,255,255,255$1489,203,255,255,255$1490,203,255,255,255$1491,203,255,255,255$1492,203,255,255,255$1493,203,255,255,255$1494,203,255,255,255$1495,203,255,255,255$1496,203,255,255,255$1497,203,255,255,255$1498,203,255,255,255$1499,203,255,255,255$1500,203,255,255,255$1501,203,255,255,255$1502,203,255,255,255$1503,203,255,255,255$1504,203,255,255,255$1505,203,255,255,255$1507,203,0,0,0$1508,203,0,0,0$1509,203,0,0,0$1510,203,0,0,0$1511,203,0,0,0$1512,203,0,0,0$1513,203,0,0,0$1514,203,0,0,0$1515,203,0,0,0$1517,203,255,255,255$1518,203,255,255,255$1519,203,255,255,255$1520,203,255,255,255$1521,203,255,255,255$1523,203,255,255,255$1524,203,255,255,255$1525,203,255,255,255$1526,203,255,255,255$1527,203,255,255,255$1529,203,255,255,255$1530,203,255,255,255$1531,203,255,255,255$1532,203,255,255,255$1533,203,255,255,255$1534,203,0,0,0$1536,203,255,255,255$1537,203,255,255,255$1538,203,255,255,255$1539,203,255,255,255$1540,203,255,255,255$1541,203,0,0,0$1543,203,255,255,255$1544,203,255,255,255$1475,204,255,255,255$1476,204,255,255,255$1477,204,255,255,255$1478,204,255,255,255$1479,204,255,255,255$1480,204,255,255,255$1481,204,255,255,255$1482,204,255,255,255$1483,204,255,255,255$1484,204,255,255,255$1485,204,255,255,255$1486,204,255,255,255$1487,204,255,255,255$1488,204,255,255,255$1489,204,255,255,255$1490,204,255,255,255$1491,204,255,255,255$1492,204,255,255,255$1493,204,255,255,255$1494,204,255,255,255$1495,204,255,255,255$1496,204,255,255,255$1497,204,255,255,255$1498,204,255,255,255$1499,204,255,255,255$1500,204,255,255,255$1501,204,255,255,255$1502,204,255,255,255$1503,204,255,255,255$1504,204,255,255,255$1505,204,255,255,255$1507,204,0,0,0$1508,204,0,0,0$1509,204,0,0,0$1510,204,0,0,0$1511,204,0,0,0$1512,204,0,0,0$1513,204,0,0,0$1514,204,0,0,0$1515,204,0,0,0$1517,204,255,255,255$1518,204,255,255,255$1519,204,255,255,255$1520,204,255,255,255$1523,204,255,255,255$1524,204,255,255,255$1525,204,255,255,255$1526,204,255,255,255$1527,204,255,255,255$1529,204,255,255,255$1530,204,255,255,255$1531,204,255,255,255$1532,204,255,255,255$1534,204,0,0,0$1535,204,255,255,255$1536,204,255,255,255$1537,204,255,255,255$1538,204,255,255,255$1539,204,255,255,255$1541,204,0,0,0$1542,204,255,255,255$1543,204,255,255,255$1544,204,255,255,255$1475,205,255,255,255$1476,205,255,255,255$1477,205,255,255,255$1478,205,255,255,255$1479,205,255,255,255$1480,205,255,255,255$1481,205,255,255,255$1482,205,255,255,255$1483,205,255,255,255$1484,205,255,255,255$1485,205,255,255,255$1486,205,255,255,255$1487,205,255,255,255$1488,205,255,255,255$1489,205,255,255,255$1490,205,255,255,255$1491,205,255,255,255$1492,205,255,255,255$1493,205,255,255,255$1494,205,255,255,255$1495,205,255,255,255$1496,205,255,255,255$1497,205,255,255,255$1498,205,255,255,255$1499,205,255,255,255$1500,205,255,255,255$1501,205,255,255,255$1502,205,255,255,255$1503,205,255,255,255$1504,205,255,255,255$1505,205,255,255,255$1507,205,0,0,0$1508,205,0,0,0$1509,205,0,0,0$1510,205,0,0,0$1511,205,0,0,0$1512,205,0,0,0$1513,205,0,0,0$1514,205,0,0,0$1515,205,0,0,0$1516,205,255,255,255$1517,205,255,255,255$1518,205,255,255,255$1519,205,255,255,255$1520,205,255,255,255$1523,205,255,255,255$1524,205,255,255,255$1525,205,255,255,255$1526,205,255,255,255$1529,205,255,255,255$1530,205,255,255,255$1531,205,255,255,255$1532,205,255,255,255$1535,205,255,255,255$1536,205,255,255,255$1537,205,255,255,255$1538,205,255,255,255$1539,205,255,255,255$1542,205,255,255,255$1543,205,255,255,255$1544,205,255,255,255$1475,206,255,255,255$1476,206,255,255,255$1477,206,255,255,255$1478,206,255,255,255$1479,206,255,255,255$1480,206,255,255,255$1481,206,255,255,255$1482,206,255,255,255$1483,206,255,255,255$1484,206,255,255,255$1485,206,255,255,255$1486,206,255,255,255$1487,206,255,255,255$1488,206,255,255,255$1489,206,255,255,255$1490,206,255,255,255$1491,206,255,255,255$1492,206,255,255,255$1493,206,255,255,255$1494,206,255,255,255$1495,206,255,255,255$1496,206,255,255,255$1497,206,255,255,255$1498,206,255,255,255$1499,206,255,255,255$1500,206,255,255,255$1501,206,255,255,255$1502,206,255,255,255$1503,206,255,255,255$1504,206,255,255,255$1505,206,255,255,255$1507,206,0,0,0$1508,206,0,0,0$1509,206,0,0,0$1510,206,0,0,0$1511,206,0,0,0$1512,206,0,0,0$1513,206,0,0,0$1514,206,0,0,0$1516,206,255,255,255$1517,206,255,255,255$1518,206,255,255,255$1519,206,255,255,255$1520,206,255,255,255$1522,206,255,255,255$1523,206,255,255,255$1524,206,255,255,255$1525,206,255,255,255$1526,206,255,255,255$1529,206,255,255,255$1530,206,255,255,255$1531,206,255,255,255$1532,206,255,255,255$1535,206,255,255,255$1536,206,255,255,255$1537,206,255,255,255$1538,206,255,255,255$1539,206,255,255,255$1540,206,0,0,0$1542,206,255,255,255$1543,206,255,255,255$1544,206,255,255,255$1475,207,255,255,255$1476,207,255,255,255$1477,207,255,255,255$1478,207,255,255,255$1479,207,255,255,255$1480,207,255,255,255$1481,207,255,255,255$1482,207,255,255,255$1483,207,255,255,255$1484,207,255,255,255$1485,207,255,255,255$1486,207,255,255,255$1487,207,255,255,255$1488,207,255,255,255$1489,207,255,255,255$1490,207,255,255,255$1491,207,255,255,255$1492,207,255,255,255$1493,207,255,255,255$1494,207,255,255,255$1495,207,255,255,255$1496,207,255,255,255$1497,207,255,255,255$1498,207,255,255,255$1499,207,255,255,255$1500,207,255,255,255$1501,207,255,255,255$1502,207,255,255,255$1503,207,255,255,255$1504,207,255,255,255$1505,207,255,255,255$1507,207,0,0,0$1508,207,0,0,0$1509,207,0,0,0$1510,207,0,0,0$1511,207,0,0,0$1512,207,0,0,0$1513,207,0,0,0$1514,207,0,0,0$1516,207,255,255,255$1517,207,255,255,255$1518,207,255,255,255$1519,207,255,255,255$1520,207,255,255,255$1522,207,255,255,255$1523,207,255,255,255$1524,207,255,255,255$1525,207,255,255,255$1526,207,255,255,255$1527,207,0,0,0$1528,207,255,255,255$1529,207,255,255,255$1530,207,255,255,255$1531,207,255,255,255$1532,207,255,255,255$1534,207,255,255,255$1535,207,255,255,255$1536,207,255,255,255$1537,207,255,255,255$1538,207,255,255,255$1540,207,0,0,0$1542,207,255,255,255$1543,207,255,255,255$1544,207,255,255,255$1484,208,255,255,255$1485,208,255,255,255$1486,208,255,255,255$1487,208,255,255,255$1488,208,255,255,255$1489,208,255,255,255$1490,208,255,255,255$1491,208,255,255,255$1492,208,255,255,255$1493,208,255,255,255$1494,208,255,255,255$1495,208,255,255,255$1506,208,0,0,0$1507,208,0,0,0$1508,208,0,0,0$1509,208,0,0,0$1510,208,0,0,0$1511,208,0,0,0$1512,208,0,0,0$1513,208,0,0,0$1515,208,255,255,255$1516,208,255,255,255$1517,208,255,255,255$1518,208,255,255,255$1519,208,255,255,255$1520,208,255,255,255$1521,208,255,255,255$1522,208,255,255,255$1523,208,255,255,255$1524,208,255,255,255$1525,208,255,255,255$1528,208,255,255,255$1529,208,255,255,255$1530,208,255,255,255$1531,208,255,255,255$1532,208,255,255,255$1533,208,255,255,255$1534,208,255,255,255$1535,208,255,255,255$1536,208,255,255,255$1537,208,255,255,255$1538,208,255,255,255$1541,208,255,255,255$1542,208,255,255,255$1543,208,255,255,255$1544,208,255,255,255$1475,209,0,0,0$1476,209,0,0,0$1477,209,0,0,0$1478,209,0,0,0$1483,209,255,255,255$1484,209,255,255,255$1485,209,255,255,255$1486,209,255,255,255$1487,209,255,255,255$1488,209,255,255,255$1489,209,255,255,255$1490,209,255,255,255$1491,209,255,255,255$1492,209,255,255,255$1493,209,255,255,255$1494,209,255,255,255$1495,209,255,255,255$1496,209,255,255,255$1503,209,0,0,0$1504,209,0,0,0$1505,209,0,0,0$1506,209,0,0,0$1507,209,0,0,0$1508,209,0,0,0$1509,209,0,0,0$1510,209,0,0,0$1511,209,0,0,0$1512,209,0,0,0$1513,209,0,0,0$1515,209,255,255,255$1516,209,255,255,255$1517,209,255,255,255$1518,209,255,255,255$1519,209,255,255,255$1520,209,255,255,255$1521,209,255,255,255$1522,209,255,255,255$1523,209,255,255,255$1524,209,255,255,255$1525,209,255,255,255$1528,209,255,255,255$1529,209,255,255,255$1530,209,255,255,255$1531,209,255,255,255$1532,209,255,255,255$1533,209,255,255,255$1534,209,255,255,255$1535,209,255,255,255$1536,209,255,255,255$1537,209,255,255,255$1540,209,255,255,255$1541,209,255,255,255$1542,209,255,255,255$1543,209,255,255,255$1544,209,255,255,255$1475,210,255,255,255$1476,210,255,255,255$1477,210,255,255,255$1478,210,255,255,255$1479,210,255,255,255$1480,210,255,255,255$1481,210,255,255,255$1482,210,255,255,255$1483,210,255,255,255$1484,210,255,255,255$1485,210,255,255,255$1486,210,255,255,255$1487,210,255,255,255$1488,210,255,255,255$1489,210,255,255,255$1490,210,255,255,255$1491,210,255,255,255$1492,210,255,255,255$1493,210,255,255,255$1494,210,255,255,255$1495,210,255,255,255$1496,210,255,255,255$1497,210,255,255,255$1498,210,255,255,255$1499,210,255,255,255$1500,210,255,255,255$1501,210,255,255,255$1502,210,255,255,255$1503,210,255,255,255$1504,210,255,255,255$1506,210,0,0,0$1507,210,0,0,0$1508,210,0,0,0$1509,210,0,0,0$1510,210,0,0,0$1511,210,0,0,0$1512,210,0,0,0$1514,210,255,255,255$1515,210,255,255,255$1516,210,255,255,255$1517,210,255,255,255$1518,210,255,255,255$1519,210,255,255,255$1520,210,255,255,255$1521,210,255,255,255$1522,210,255,255,255$1523,210,255,255,255$1524,210,255,255,255$1525,210,255,255,255$1526,210,255,255,255$1527,210,255,255,255$1528,210,255,255,255$1529,210,255,255,255$1530,210,255,255,255$1531,210,255,255,255$1532,210,255,255,255$1533,210,255,255,255$1534,210,255,255,255$1535,210,255,255,255$1536,210,255,255,255$1537,210,255,255,255$1538,210,255,255,255$1539,210,255,255,255$1540,210,255,255,255$1541,210,255,255,255$1542,210,255,255,255$1543,210,255,255,255$1544,210,255,255,255$1475,211,255,255,255$1476,211,255,255,255$1477,211,255,255,255$1478,211,255,255,255$1479,211,255,255,255$1480,211,255,255,255$1481,211,255,255,255$1482,211,255,255,255$1483,211,255,255,255$1484,211,255,255,255$1485,211,255,255,255$1486,211,255,255,255$1487,211,255,255,255$1488,211,255,255,255$1490,211,255,255,255$1491,211,255,255,255$1492,211,255,255,255$1493,211,255,255,255$1494,211,255,255,255$1495,211,255,255,255$1496,211,255,255,255$1497,211,255,255,255$1498,211,255,255,255$1499,211,255,255,255$1500,211,255,255,255$1501,211,255,255,255$1502,211,255,255,255$1503,211,255,255,255$1504,211,255,255,255$1506,211,0,0,0$1507,211,0,0,0$1508,211,0,0,0$1509,211,0,0,0$1510,211,0,0,0$1511,211,0,0,0$1512,211,0,0,0$1513,211,255,255,255$1514,211,255,255,255$1515,211,255,255,255$1516,211,255,255,255$1517,211,255,255,255$1518,211,255,255,255$1519,211,255,255,255$1520,211,255,255,255$1521,211,255,255,255$1522,211,255,255,255$1523,211,255,255,255$1524,211,255,255,255$1525,211,255,255,255$1526,211,255,255,255$1527,211,255,255,255$1528,211,255,255,255$1529,211,255,255,255$1530,211,255,255,255$1531,211,255,255,255$1532,211,255,255,255$1533,211,255,255,255$1534,211,255,255,255$1535,211,255,255,255$1536,211,255,255,255$1537,211,255,255,255$1538,211,255,255,255$1539,211,255,255,255$1540,211,255,255,255$1541,211,255,255,255$1542,211,255,255,255$1543,211,255,255,255$1544,211,255,255,255$1475,212,255,255,255$1476,212,255,255,255$1477,212,255,255,255$1478,212,255,255,255$1479,212,255,255,255$1480,212,255,255,255$1481,212,255,255,255$1482,212,255,255,255$1483,212,255,255,255$1484,212,255,255,255$1485,212,255,255,255$1486,212,255,255,255$1489,212,0,0,0$1491,212,255,255,255$1492,212,255,255,255$1493,212,255,255,255$1494,212,255,255,255$1495,212,255,255,255$1496,212,255,255,255$1497,212,255,255,255$1498,212,255,255,255$1499,212,255,255,255$1500,212,255,255,255$1501,212,255,255,255$1502,212,255,255,255$1503,212,255,255,255$1505,212,0,0,0$1506,212,0,0,0$1507,212,0,0,0$1508,212,0,0,0$1509,212,0,0,0$1510,212,0,0,0$1511,212,0,0,0$1512,212,0,0,0$1514,212,255,255,255$1515,212,255,255,255$1516,212,255,255,255$1517,212,255,255,255$1518,212,255,255,255$1519,212,255,255,255$1520,212,255,255,255$1521,212,255,255,255$1522,212,255,255,255$1523,212,255,255,255$1524,212,255,255,255$1525,212,255,255,255$1526,212,255,255,255$1527,212,255,255,255$1528,212,255,255,255$1529,212,255,255,255$1530,212,255,255,255$1531,212,255,255,255$1532,212,255,255,255$1533,212,255,255,255$1534,212,255,255,255$1535,212,255,255,255$1536,212,255,255,255$1537,212,255,255,255$1538,212,255,255,255$1539,212,255,255,255$1540,212,255,255,255$1541,212,255,255,255$1542,212,255,255,255$1543,212,255,255,255$1544,212,255,255,255$1475,213,255,255,255$1476,213,255,255,255$1477,213,255,255,255$1478,213,255,255,255$1479,213,255,255,255$1480,213,255,255,255$1481,213,255,255,255$1482,213,255,255,255$1483,213,255,255,255$1484,213,255,255,255$1485,213,255,255,255$1487,213,0,0,0$1488,213,0,0,0$1489,213,0,0,0$1490,213,0,0,0$1493,213,255,255,255$1494,213,255,255,255$1495,213,255,255,255$1496,213,255,255,255$1497,213,255,255,255$1498,213,255,255,255$1499,213,255,255,255$1500,213,255,255,255$1501,213,255,255,255$1502,213,255,255,255$1503,213,255,255,255$1505,213,0,0,0$1506,213,0,0,0$1507,213,0,0,0$1508,213,0,0,0$1509,213,0,0,0$1510,213,0,0,0$1511,213,0,0,0$1512,213,0,0,0$1515,213,255,255,255$1516,213,255,255,255$1517,213,255,255,255$1518,213,255,255,255$1519,213,255,255,255$1520,213,255,255,255$1521,213,255,255,255$1522,213,255,255,255$1525,213,255,255,255$1526,213,255,255,255$1527,213,255,255,255$1528,213,255,255,255$1529,213,255,255,255$1530,213,255,255,255$1531,213,255,255,255$1532,213,255,255,255$1533,213,255,255,255$1534,213,255,255,255$1535,213,255,255,255$1538,213,255,255,255$1539,213,255,255,255$1540,213,255,255,255$1541,213,255,255,255$1542,213,255,255,255$1543,213,255,255,255$1476,214,255,255,255$1477,214,255,255,255$1478,214,255,255,255$1479,214,255,255,255$1480,214,255,255,255$1481,214,255,255,255$1482,214,255,255,255$1486,214,0,0,0$1487,214,0,0,0$1488,214,0,0,0$1489,214,0,0,0$1490,214,0,0,0$1491,214,0,0,0$1492,214,0,0,0$1495,214,255,255,255$1496,214,255,255,255$1497,214,255,255,255$1498,214,255,255,255$1499,214,255,255,255$1500,214,255,255,255$1501,214,255,255,255$1502,214,255,255,255$1504,214,0,0,0$1505,214,0,0,0$1506,214,0,0,0$1507,214,0,0,0$1508,214,0,0,0$1509,214,0,0,0$1510,214,0,0,0$1511,214,0,0,0$1512,214,0,0,0$1513,214,0,0,0$1515,214,255,255,255$1516,214,255,255,255$1519,214,255,255,255$1520,214,255,255,255$1521,214,255,255,255$1523,214,0,0,0$1525,214,255,255,255$1526,214,255,255,255$1527,214,255,255,255$1528,214,255,255,255$1529,214,255,255,255$1532,214,255,255,255$1533,214,255,255,255$1534,214,255,255,255$1535,214,255,255,255$1538,214,255,255,255$1539,214,255,255,255$1540,214,255,255,255$1541,214,255,255,255$1542,214,255,255,255$1543,214,255,255,255");
        public static bool IsJiangli(Image<Rgb, byte> image, ZTRectangle gameRect)
        {
            ZTRectangle limit = new ZTRectangle(gameRect.Start.X + 575, gameRect.Start.Y + 35, gameRect.Start.X + 700, gameRect.Start.Y + 110);
            ZTRectangle limit = new ZTRectangle(300,20, 455,  100);
            ZTRectangle position = ZTRectangle.Empty;
            return CVHelper.FindColorArray(out position, image, Jiangli, limit);
            return CVHelper.FindColorArrayForThreshold(out position, image, JiangliText, limit);
        }
@@ -233,14 +279,14 @@
        public static bool IsCompleteRoom(Image<Rgb, byte> image, ZTRectangle gameRect)
        {
            ZTRectangle limit = new ZTRectangle(gameRect.End.X - 185, gameRect.Start.Y + 150, gameRect.End.X - 85, gameRect.Start.Y + 205);
            ZTRectangle limit = new ZTRectangle(gameRect.Start.X +630, gameRect.Start.Y + 162, gameRect.Start.X +700, gameRect.Start.Y + 200);
            ZTRectangle position = ZTRectangle.Empty;
            return CVHelper.FindColorArray(out position, image, LindongPlus, limit);
        }
        /// <summary>
        /// 加百利关闭按钮
        /// 出售物品的关闭按钮
        /// </summary>
        public static ColorArray shopCloseButton = ColorArray.FromThresholdString(130, "550,457,255,255,255$542,450,255,255,255$543,450,255,255,255$552,450,255,255,255$553,450,255,255,255$542,451,0,0,0$543,451,255,255,255$544,451,255,255,255$551,451,255,255,255$552,451,255,255,255$553,451,0,0,0$543,452,0,0,0$544,452,255,255,255$545,452,255,255,255$550,452,255,255,255$551,452,255,255,255$552,452,0,0,0$544,453,0,0,0$545,453,255,255,255$546,453,255,255,255$549,453,255,255,255$550,453,255,255,255$551,453,0,0,0$545,454,0,0,0$546,454,255,255,255$547,454,255,255,255$548,454,255,255,255$549,454,255,255,255$550,454,0,0,0$546,455,0,0,0$547,455,255,255,255$548,455,255,255,255$549,455,0,0,0$546,456,255,255,255$547,456,255,255,255$548,456,255,255,255$549,456,255,255,255$545,457,255,255,255$546,457,255,255,255$547,457,0,0,0$548,457,0,0,0$549,457,255,255,255$544,458,255,255,255$545,458,255,255,255$546,458,0,0,0$549,458,0,0,0$550,458,255,255,255$551,458,255,255,255$543,459,255,255,255$544,459,255,255,255$545,459,0,0,0$550,459,0,0,0$551,459,255,255,255$552,459,255,255,255$542,460,255,255,255$543,460,255,255,255$544,460,0,0,0$551,460,0,0,0$552,460,255,255,255$553,460,255,255,255$542,461,0,0,0$543,461,0,0,0$552,461,0,0,0$553,461,0,0,0");
        /// <summary>
@@ -262,20 +308,12 @@
            return false;
        }
        /// <summary>
        /// 加百利对话框的出售按钮
        /// </summary>
        public static bool HasJiabailiSaleButton(out ZTRectangle buttonPosition, Image<Rgb, byte> image, ZTRectangle gameRect)
        {
            return CVHelper.FindColorArray(out buttonPosition, image, shopSaleButton, gameRect);
        }
        /// <summary>
        /// 魔王的契约黄金牌
        /// </summary>
        public static ColorArray glodMowangdeqiyueText = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "373,624,254,252,88$355,612,246,238,83$363,612,243,238,83$369,624,250,242,85$377,624,250,242,84$371,612,242,236,83$378,612,242,237,83$430,619,253,251,88");
        public static ColorArray glodMowangdeqiyueText = ColorArray.FromThresholdString(160, "1422,632,0,0,0$1410,632,0,0,0$1411,632,0,0,0$1412,632,0,0,0$1413,632,0,0,0$1414,632,0,0,0$1415,632,0,0,0$1416,632,0,0,0$1417,632,0,0,0$1418,632,0,0,0$1419,632,0,0,0$1420,632,0,0,0$1421,632,0,0,0$1423,632,0,0,0$1424,632,0,0,0$1425,632,0,0,0$1426,632,0,0,0$1427,632,0,0,0$1428,632,0,0,0$1429,632,0,0,0$1430,632,0,0,0$1431,632,0,0,0$1432,632,0,0,0$1433,632,0,0,0$1434,632,0,0,0$1435,632,0,0,0$1436,632,0,0,0$1437,632,0,0,0$1438,632,0,0,0$1439,632,0,0,0$1440,632,0,0,0$1441,632,0,0,0$1442,632,0,0,0$1443,632,0,0,0$1444,632,0,0,0$1445,632,0,0,0$1446,632,0,0,0$1447,632,0,0,0$1448,632,0,0,0$1449,632,0,0,0$1450,632,0,0,0$1451,632,0,0,0$1452,632,0,0,0$1453,632,0,0,0$1454,632,0,0,0$1455,632,0,0,0$1456,632,0,0,0$1457,632,0,0,0$1458,632,0,0,0$1459,632,0,0,0$1460,632,0,0,0$1461,632,0,0,0$1462,632,0,0,0$1463,632,0,0,0$1464,632,0,0,0$1465,632,0,0,0$1466,632,0,0,0$1467,632,0,0,0$1468,632,0,0,0$1469,632,0,0,0$1470,632,0,0,0$1471,632,0,0,0$1472,632,0,0,0$1473,632,0,0,0$1474,632,0,0,0$1410,633,0,0,0$1411,633,0,0,0$1412,633,0,0,0$1413,633,0,0,0$1414,633,0,0,0$1415,633,0,0,0$1416,633,0,0,0$1417,633,0,0,0$1418,633,0,0,0$1419,633,0,0,0$1420,633,0,0,0$1421,633,0,0,0$1422,633,0,0,0$1423,633,0,0,0$1424,633,0,0,0$1425,633,0,0,0$1426,633,0,0,0$1427,633,0,0,0$1428,633,0,0,0$1429,633,0,0,0$1430,633,0,0,0$1431,633,0,0,0$1432,633,0,0,0$1433,633,0,0,0$1434,633,0,0,0$1435,633,0,0,0$1436,633,0,0,0$1437,633,0,0,0$1438,633,0,0,0$1439,633,0,0,0$1440,633,0,0,0$1441,633,0,0,0$1442,633,0,0,0$1443,633,0,0,0$1444,633,0,0,0$1445,633,0,0,0$1446,633,0,0,0$1447,633,0,0,0$1448,633,0,0,0$1449,633,0,0,0$1450,633,0,0,0$1451,633,0,0,0$1452,633,0,0,0$1453,633,0,0,0$1454,633,0,0,0$1455,633,0,0,0$1456,633,0,0,0$1457,633,0,0,0$1458,633,0,0,0$1459,633,0,0,0$1460,633,0,0,0$1461,633,0,0,0$1462,633,0,0,0$1463,633,0,0,0$1464,633,0,0,0$1465,633,0,0,0$1466,633,0,0,0$1467,633,0,0,0$1468,633,0,0,0$1469,633,0,0,0$1470,633,0,0,0$1471,633,0,0,0$1472,633,0,0,0$1473,633,0,0,0$1474,633,0,0,0$1410,634,0,0,0$1411,634,0,0,0$1412,634,0,0,0$1413,634,0,0,0$1414,634,0,0,0$1415,634,0,0,0$1416,634,0,0,0$1417,634,0,0,0$1418,634,0,0,0$1419,634,0,0,0$1420,634,0,0,0$1421,634,0,0,0$1422,634,0,0,0$1423,634,0,0,0$1424,634,0,0,0$1425,634,0,0,0$1426,634,0,0,0$1427,634,0,0,0$1428,634,0,0,0$1429,634,0,0,0$1430,634,0,0,0$1431,634,0,0,0$1432,634,0,0,0$1433,634,0,0,0$1434,634,0,0,0$1435,634,0,0,0$1436,634,0,0,0$1437,634,0,0,0$1438,634,0,0,0$1439,634,0,0,0$1440,634,0,0,0$1441,634,0,0,0$1442,634,0,0,0$1443,634,0,0,0$1444,634,0,0,0$1445,634,0,0,0$1446,634,0,0,0$1447,634,0,0,0$1448,634,0,0,0$1449,634,0,0,0$1450,634,0,0,0$1451,634,0,0,0$1452,634,0,0,0$1453,634,0,0,0$1454,634,0,0,0$1455,634,0,0,0$1456,634,0,0,0$1457,634,0,0,0$1458,634,0,0,0$1459,634,0,0,0$1460,634,0,0,0$1461,634,0,0,0$1462,634,0,0,0$1463,634,0,0,0$1464,634,0,0,0$1465,634,0,0,0$1466,634,0,0,0$1467,634,0,0,0$1468,634,0,0,0$1469,634,0,0,0$1470,634,0,0,0$1471,634,0,0,0$1472,634,0,0,0$1473,634,0,0,0$1474,634,0,0,0$1410,635,0,0,0$1411,635,0,0,0$1412,635,0,0,0$1413,635,0,0,0$1414,635,0,0,0$1417,635,0,0,0$1418,635,0,0,0$1419,635,0,0,0$1420,635,0,0,0$1421,635,0,0,0$1422,635,0,0,0$1423,635,0,0,0$1424,635,0,0,0$1425,635,0,0,0$1426,635,0,0,0$1427,635,0,0,0$1428,635,0,0,0$1429,635,0,0,0$1430,635,0,0,0$1431,635,0,0,0$1432,635,0,0,0$1433,635,0,0,0$1434,635,0,0,0$1435,635,0,0,0$1436,635,0,0,0$1437,635,0,0,0$1438,635,0,0,0$1439,635,0,0,0$1440,635,0,0,0$1441,635,0,0,0$1443,635,255,255,255$1444,635,0,0,0$1445,635,0,0,0$1446,635,0,0,0$1447,635,0,0,0$1448,635,0,0,0$1449,635,0,0,0$1450,635,0,0,0$1451,635,0,0,0$1452,635,0,0,0$1453,635,0,0,0$1456,635,0,0,0$1457,635,0,0,0$1461,635,0,0,0$1462,635,0,0,0$1463,635,0,0,0$1464,635,0,0,0$1465,635,0,0,0$1466,635,0,0,0$1469,635,0,0,0$1470,635,0,0,0$1471,635,0,0,0$1472,635,0,0,0$1474,635,0,0,0$1411,636,255,255,255$1412,636,255,255,255$1413,636,255,255,255$1414,636,255,255,255$1415,636,255,255,255$1416,636,255,255,255$1417,636,255,255,255$1418,636,255,255,255$1419,636,255,255,255$1420,636,255,255,255$1422,636,0,0,0$1423,636,0,0,0$1424,636,255,255,255$1425,636,255,255,255$1426,636,255,255,255$1427,636,255,255,255$1428,636,255,255,255$1429,636,255,255,255$1430,636,255,255,255$1431,636,255,255,255$1432,636,255,255,255$1433,636,255,255,255$1435,636,0,0,0$1436,636,0,0,0$1437,636,0,0,0$1438,636,0,0,0$1439,636,0,0,0$1440,636,0,0,0$1441,636,0,0,0$1443,636,255,255,255$1444,636,0,0,0$1445,636,0,0,0$1446,636,0,0,0$1447,636,0,0,0$1448,636,0,0,0$1449,636,0,0,0$1450,636,0,0,0$1454,636,255,255,255$1455,636,255,255,255$1459,636,255,255,255$1460,636,255,255,255$1462,636,255,255,255$1463,636,0,0,0$1464,636,0,0,0$1465,636,0,0,0$1466,636,0,0,0$1467,636,255,255,255$1469,636,0,0,0$1470,636,0,0,0$1471,636,0,0,0$1473,636,255,255,255$1474,636,0,0,0$1418,637,255,255,255$1420,637,0,0,0$1421,637,0,0,0$1422,637,0,0,0$1423,637,0,0,0$1424,637,0,0,0$1429,637,255,255,255$1432,637,0,0,0$1433,637,0,0,0$1434,637,0,0,0$1435,637,0,0,0$1436,637,0,0,0$1437,637,0,0,0$1438,637,0,0,0$1439,637,0,0,0$1440,637,0,0,0$1441,637,0,0,0$1444,637,0,0,0$1445,637,0,0,0$1446,637,0,0,0$1447,637,0,0,0$1448,637,0,0,0$1449,637,0,0,0$1450,637,0,0,0$1451,637,0,0,0$1454,637,255,255,255$1458,637,0,0,0$1459,637,255,255,255$1462,637,255,255,255$1463,637,0,0,0$1464,637,0,0,0$1465,637,0,0,0$1467,637,255,255,255$1468,637,0,0,0$1470,637,0,0,0$1471,637,0,0,0$1472,637,255,255,255$1410,638,255,255,255$1412,638,255,255,255$1413,638,255,255,255$1414,638,255,255,255$1417,638,255,255,255$1418,638,255,255,255$1421,638,0,0,0$1422,638,0,0,0$1423,638,0,0,0$1424,638,0,0,0$1425,638,0,0,0$1426,638,0,0,0$1427,638,0,0,0$1430,638,0,0,0$1431,638,0,0,0$1432,638,0,0,0$1433,638,0,0,0$1434,638,0,0,0$1435,638,0,0,0$1436,638,0,0,0$1437,638,0,0,0$1438,638,255,255,255$1439,638,255,255,255$1440,638,255,255,255$1441,638,255,255,255$1442,638,255,255,255$1443,638,255,255,255$1444,638,255,255,255$1445,638,255,255,255$1446,638,255,255,255$1447,638,255,255,255$1448,638,0,0,0$1449,638,0,0,0$1450,638,0,0,0$1454,638,255,255,255$1456,638,255,255,255$1457,638,0,0,0$1459,638,255,255,255$1463,638,0,0,0$1464,638,0,0,0$1466,638,255,255,255$1469,638,255,255,255$1472,638,255,255,255$1410,639,255,255,255$1412,639,255,255,255$1413,639,255,255,255$1414,639,255,255,255$1417,639,255,255,255$1418,639,255,255,255$1420,639,0,0,0$1421,639,0,0,0$1422,639,0,0,0$1423,639,0,0,0$1424,639,0,0,0$1425,639,0,0,0$1426,639,0,0,0$1427,639,0,0,0$1430,639,0,0,0$1431,639,0,0,0$1432,639,0,0,0$1433,639,0,0,0$1434,639,0,0,0$1435,639,0,0,0$1436,639,0,0,0$1437,639,0,0,0$1438,639,0,0,0$1445,639,255,255,255$1446,639,255,255,255$1448,639,0,0,0$1449,639,0,0,0$1450,639,0,0,0$1451,639,0,0,0$1458,639,255,255,255$1461,639,255,255,255$1463,639,0,0,0$1465,639,255,255,255$1466,639,255,255,255$1468,639,255,255,255$1471,639,255,255,255$1473,639,0,0,0$1474,639,0,0,0$1410,640,255,255,255$1411,640,255,255,255$1413,640,255,255,255$1415,640,255,255,255$1417,640,255,255,255$1421,640,0,0,0$1422,640,0,0,0$1423,640,0,0,0$1428,640,255,255,255$1433,640,0,0,0$1434,640,0,0,0$1435,640,0,0,0$1436,640,0,0,0$1437,640,0,0,0$1438,640,0,0,0$1439,640,0,0,0$1440,640,0,0,0$1441,640,0,0,0$1442,640,0,0,0$1444,640,255,255,255$1446,640,0,0,0$1447,640,0,0,0$1448,640,0,0,0$1449,640,0,0,0$1451,640,255,255,255$1452,640,255,255,255$1453,640,255,255,255$1454,640,255,255,255$1455,640,255,255,255$1456,640,255,255,255$1457,640,255,255,255$1461,640,255,255,255$1462,640,0,0,0$1463,640,0,0,0$1464,640,0,0,0$1467,640,255,255,255$1470,640,255,255,255$1473,640,0,0,0$1474,640,0,0,0$1412,641,255,255,255$1413,641,255,255,255$1414,641,255,255,255$1415,641,255,255,255$1416,641,255,255,255$1417,641,255,255,255$1418,641,255,255,255$1420,641,0,0,0$1421,641,0,0,0$1422,641,0,0,0$1423,641,0,0,0$1428,641,255,255,255$1433,641,0,0,0$1434,641,0,0,0$1435,641,0,0,0$1436,641,0,0,0$1437,641,0,0,0$1438,641,0,0,0$1439,641,0,0,0$1440,641,0,0,0$1442,641,255,255,255$1443,641,255,255,255$1445,641,0,0,0$1446,641,0,0,0$1447,641,0,0,0$1448,641,0,0,0$1449,641,0,0,0$1450,641,0,0,0$1451,641,0,0,0$1452,641,0,0,0$1453,641,255,255,255$1462,641,0,0,0$1463,641,0,0,0$1464,641,0,0,0$1465,641,0,0,0$1469,641,0,0,0$1472,641,255,255,255$1473,641,0,0,0$1474,641,0,0,0$1412,642,255,255,255$1414,642,255,255,255$1415,642,255,255,255$1418,642,255,255,255$1420,642,0,0,0$1421,642,0,0,0$1422,642,0,0,0$1423,642,0,0,0$1424,642,0,0,0$1425,642,0,0,0$1426,642,0,0,0$1428,642,255,255,255$1429,642,0,0,0$1430,642,0,0,0$1431,642,0,0,0$1432,642,0,0,0$1433,642,0,0,0$1434,642,0,0,0$1435,642,0,0,0$1436,642,0,0,0$1437,642,0,0,0$1438,642,0,0,0$1439,642,0,0,0$1441,642,255,255,255$1443,642,0,0,0$1444,642,0,0,0$1445,642,0,0,0$1446,642,0,0,0$1447,642,0,0,0$1448,642,0,0,0$1449,642,0,0,0$1450,642,0,0,0$1451,642,0,0,0$1452,642,0,0,0$1456,642,255,255,255$1458,642,0,0,0$1460,642,0,0,0$1461,642,0,0,0$1462,642,0,0,0$1463,642,0,0,0$1464,642,0,0,0$1466,642,255,255,255$1470,642,0,0,0$1472,642,255,255,255$1411,643,255,255,255$1414,643,255,255,255$1418,643,255,255,255$1419,643,0,0,0$1420,643,0,0,0$1421,643,0,0,0$1422,643,0,0,0$1423,643,0,0,0$1424,643,0,0,0$1425,643,0,0,0$1426,643,0,0,0$1428,643,255,255,255$1429,643,0,0,0$1430,643,0,0,0$1431,643,0,0,0$1432,643,0,0,0$1433,643,0,0,0$1434,643,0,0,0$1435,643,0,0,0$1436,643,0,0,0$1437,643,0,0,0$1438,643,0,0,0$1440,643,255,255,255$1442,643,0,0,0$1443,643,0,0,0$1444,643,0,0,0$1445,643,0,0,0$1446,643,0,0,0$1447,643,0,0,0$1448,643,0,0,0$1449,643,0,0,0$1450,643,255,255,255$1451,643,255,255,255$1452,643,255,255,255$1453,643,255,255,255$1454,643,255,255,255$1455,643,255,255,255$1456,643,255,255,255$1457,643,255,255,255$1458,643,255,255,255$1459,643,255,255,255$1460,643,255,255,255$1461,643,255,255,255$1463,643,0,0,0$1464,643,0,0,0$1465,643,255,255,255$1466,643,255,255,255$1470,643,0,0,0$1471,643,0,0,0$1473,643,0,0,0$1410,644,0,0,0$1413,644,255,255,255$1414,644,255,255,255$1415,644,255,255,255$1417,644,255,255,255$1419,644,0,0,0$1420,644,0,0,0$1421,644,0,0,0$1422,644,0,0,0$1423,644,0,0,0$1424,644,0,0,0$1425,644,0,0,0$1426,644,0,0,0$1429,644,0,0,0$1430,644,0,0,0$1431,644,0,0,0$1432,644,0,0,0$1433,644,0,0,0$1434,644,0,0,0$1435,644,0,0,0$1436,644,0,0,0$1438,644,255,255,255$1439,644,255,255,255$1441,644,0,0,0$1442,644,0,0,0$1443,644,0,0,0$1444,644,0,0,0$1445,644,0,0,0$1446,644,0,0,0$1447,644,0,0,0$1448,644,0,0,0$1449,644,0,0,0$1454,644,255,255,255$1456,644,255,255,255$1457,644,255,255,255$1462,644,0,0,0$1463,644,0,0,0$1464,644,0,0,0$1465,644,0,0,0$1466,644,0,0,0$1467,644,0,0,0$1470,644,0,0,0$1471,644,0,0,0$1472,644,0,0,0$1473,644,0,0,0$1410,645,0,0,0$1411,645,0,0,0$1413,645,255,255,255$1415,645,255,255,255$1416,645,255,255,255$1417,645,255,255,255$1418,645,255,255,255$1420,645,0,0,0$1421,645,0,0,0$1427,645,255,255,255$1431,645,0,0,0$1432,645,0,0,0$1433,645,0,0,0$1434,645,0,0,0$1436,645,255,255,255$1437,645,255,255,255$1439,645,255,255,255$1440,645,255,255,255$1445,645,0,0,0$1446,645,0,0,0$1448,645,0,0,0$1449,645,0,0,0$1450,645,0,0,0$1451,645,0,0,0$1457,645,255,255,255$1460,645,0,0,0$1461,645,0,0,0$1462,645,0,0,0$1463,645,0,0,0$1466,645,255,255,255$1467,645,255,255,255$1468,645,255,255,255$1470,645,0,0,0$1471,645,0,0,0$1472,645,0,0,0$1473,645,0,0,0$1474,645,255,255,255$1411,646,255,255,255$1412,646,255,255,255$1415,646,255,255,255$1419,646,255,255,255$1420,646,0,0,0$1422,646,255,255,255$1423,646,255,255,255$1424,646,255,255,255$1425,646,255,255,255$1426,646,255,255,255$1427,646,255,255,255$1428,646,255,255,255$1429,646,255,255,255$1430,646,255,255,255$1431,646,255,255,255$1432,646,255,255,255$1434,646,0,0,0$1436,646,255,255,255$1437,646,0,0,0$1438,646,0,0,0$1439,646,0,0,0$1441,646,255,255,255$1442,646,255,255,255$1443,646,255,255,255$1444,646,255,255,255$1445,646,255,255,255$1446,646,255,255,255$1448,646,0,0,0$1451,646,255,255,255$1452,646,255,255,255$1454,646,0,0,0$1455,646,0,0,0$1456,646,0,0,0$1458,646,255,255,255$1459,646,255,255,255$1460,646,255,255,255$1462,646,0,0,0$1463,646,0,0,0$1464,646,255,255,255$1467,646,0,0,0$1468,646,0,0,0$1469,646,0,0,0$1470,646,0,0,0$1471,646,0,0,0$1473,646,255,255,255$1474,646,255,255,255$1410,647,255,255,255$1412,647,0,0,0$1413,647,0,0,0$1414,647,0,0,0$1419,647,0,0,0$1420,647,0,0,0$1421,647,0,0,0$1422,647,0,0,0$1423,647,0,0,0$1424,647,0,0,0$1425,647,0,0,0$1426,647,0,0,0$1427,647,0,0,0$1428,647,0,0,0$1429,647,0,0,0$1430,647,0,0,0$1431,647,0,0,0$1432,647,0,0,0$1433,647,0,0,0$1434,647,0,0,0$1435,647,0,0,0$1436,647,0,0,0$1437,647,0,0,0$1438,647,0,0,0$1439,647,0,0,0$1440,647,0,0,0$1441,647,0,0,0$1442,647,0,0,0$1443,647,0,0,0$1444,647,0,0,0$1445,647,0,0,0$1446,647,0,0,0$1447,647,0,0,0$1448,647,0,0,0$1452,647,0,0,0$1453,647,0,0,0$1454,647,0,0,0$1455,647,0,0,0$1456,647,0,0,0$1457,647,0,0,0$1458,647,0,0,0$1462,647,0,0,0$1463,647,0,0,0$1464,647,0,0,0$1465,647,0,0,0$1466,647,0,0,0$1467,647,0,0,0$1468,647,0,0,0$1469,647,0,0,0$1470,647,0,0,0$1471,647,0,0,0$1410,648,0,0,0$1411,648,0,0,0$1412,648,0,0,0$1413,648,0,0,0$1414,648,0,0,0$1415,648,0,0,0$1416,648,0,0,0$1417,648,0,0,0$1418,648,0,0,0$1419,648,0,0,0$1420,648,0,0,0$1421,648,0,0,0$1422,648,0,0,0$1423,648,0,0,0$1424,648,0,0,0$1425,648,0,0,0$1426,648,0,0,0$1427,648,0,0,0$1428,648,0,0,0$1429,648,0,0,0$1430,648,0,0,0$1431,648,0,0,0$1432,648,0,0,0$1433,648,0,0,0$1434,648,0,0,0$1435,648,0,0,0$1436,648,0,0,0$1437,648,0,0,0$1438,648,0,0,0$1439,648,0,0,0$1440,648,0,0,0$1441,648,0,0,0$1442,648,0,0,0$1443,648,0,0,0$1444,648,0,0,0$1445,648,0,0,0$1446,648,0,0,0$1447,648,0,0,0$1448,648,0,0,0$1449,648,0,0,0$1450,648,0,0,0$1451,648,0,0,0$1452,648,0,0,0$1453,648,0,0,0$1454,648,0,0,0$1455,648,0,0,0$1456,648,0,0,0$1457,648,0,0,0$1458,648,0,0,0$1459,648,0,0,0$1460,648,0,0,0$1461,648,0,0,0$1462,648,0,0,0$1463,648,0,0,0$1464,648,0,0,0$1465,648,0,0,0$1466,648,0,0,0$1467,648,0,0,0$1468,648,0,0,0$1469,648,0,0,0$1470,648,0,0,0$1471,648,0,0,0$1472,648,0,0,0$1473,648,0,0,0$1474,648,0,0,0$1410,649,0,0,0$1411,649,0,0,0$1412,649,0,0,0$1413,649,0,0,0$1414,649,0,0,0$1415,649,0,0,0$1416,649,0,0,0$1417,649,0,0,0$1418,649,0,0,0$1419,649,0,0,0$1420,649,0,0,0$1421,649,0,0,0$1422,649,0,0,0$1423,649,0,0,0$1424,649,0,0,0$1425,649,0,0,0$1426,649,0,0,0$1427,649,0,0,0$1428,649,0,0,0$1429,649,0,0,0$1430,649,0,0,0$1431,649,0,0,0$1432,649,0,0,0$1433,649,0,0,0$1434,649,0,0,0$1435,649,0,0,0$1436,649,0,0,0$1437,649,0,0,0$1438,649,0,0,0$1439,649,0,0,0$1440,649,0,0,0$1441,649,0,0,0$1442,649,0,0,0$1443,649,0,0,0$1444,649,0,0,0$1445,649,0,0,0$1446,649,0,0,0$1447,649,0,0,0$1448,649,0,0,0$1449,649,0,0,0$1450,649,0,0,0$1451,649,0,0,0$1452,649,0,0,0$1453,649,0,0,0$1454,649,0,0,0$1455,649,0,0,0$1456,649,0,0,0$1457,649,0,0,0$1458,649,0,0,0$1459,649,0,0,0$1460,649,0,0,0$1461,649,0,0,0$1462,649,0,0,0$1463,649,0,0,0$1464,649,0,0,0$1465,649,0,0,0$1466,649,0,0,0$1467,649,0,0,0$1468,649,0,0,0$1469,649,0,0,0$1470,649,0,0,0$1471,649,0,0,0$1472,649,0,0,0$1473,649,0,0,0$1474,649,0,0,0");
        /// <summary>
        /// 是否有魔王契约卡牌
@@ -283,12 +321,12 @@
        /// <param name="image"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        public static bool HasMowangqiyueCard(ZTRectangle gameRect)
        public static bool HasGoldCard(ZTRectangle gameRect)
        {
            using (Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage())
            {
                ZTRectangle o = ZTRectangle.Empty;
                return CVHelper.FindColorArray(out o, image, glodMowangdeqiyueText, new ZTRectangle(gameRect.Start.X, gameRect.Start.Y + (gameRect.End.Y - gameRect.Start.Y) / 2, gameRect.End.X, gameRect.End.Y));
                ZTRectangle tempRect = ZTRectangle.Empty;
                return CVHelper.FindColorArrayForThreshold(out tempRect, image, glodMowangdeqiyueText, new ZTRectangle(gameRect.Start.X+89,gameRect.Start.Y+469,gameRect.Start.X+723,gameRect.Start.Y+543));
            }
        }
@@ -296,7 +334,7 @@
        /// <summary>
        /// 系统菜单面板
        /// </summary>
        public static ColorArray SystemPanelTitle = ColorArray.FromThresholdString(60, "674,173,0,0,0$627,173,0,0,0$628,173,0,0,0$629,173,0,0,0$630,173,0,0,0$647,173,0,0,0$648,173,0,0,0$661,173,0,0,0$662,173,0,0,0$673,173,0,0,0$675,173,0,0,0$682,173,0,0,0$683,173,0,0,0$684,173,0,0,0$685,173,0,0,0$686,173,0,0,0$697,173,0,0,0$698,173,0,0,0$699,173,0,0,0$700,173,0,0,0$701,173,0,0,0$609,174,0,0,0$610,174,0,0,0$611,174,0,0,0$612,174,0,0,0$613,174,0,0,0$614,174,0,0,0$615,174,0,0,0$616,174,0,0,0$617,174,0,0,0$618,174,0,0,0$619,174,0,0,0$620,174,0,0,0$621,174,0,0,0$622,174,0,0,0$623,174,0,0,0$624,174,0,0,0$625,174,0,0,0$626,174,0,0,0$627,174,0,0,0$628,174,0,0,0$629,174,0,0,0$630,174,0,0,0$631,174,0,0,0$635,174,0,0,0$636,174,0,0,0$637,174,0,0,0$638,174,0,0,0$639,174,0,0,0$640,174,0,0,0$645,174,0,0,0$646,174,0,0,0$647,174,0,0,0$648,174,0,0,0$649,174,0,0,0$650,174,0,0,0$659,174,0,0,0$660,174,0,0,0$661,174,0,0,0$662,174,0,0,0$663,174,0,0,0$664,174,0,0,0$671,174,0,0,0$672,174,0,0,0$673,174,0,0,0$674,174,0,0,0$675,174,0,0,0$676,174,0,0,0$677,174,0,0,0$681,174,0,0,0$682,174,0,0,0$683,174,0,0,0$684,174,0,0,0$685,174,0,0,0$686,174,0,0,0$687,174,0,0,0$696,174,0,0,0$697,174,0,0,0$698,174,0,0,0$699,174,0,0,0$700,174,0,0,0$701,174,0,0,0$702,174,0,0,0$608,175,0,0,0$609,175,0,0,0$610,175,0,0,0$611,175,0,0,0$612,175,0,0,0$613,175,0,0,0$614,175,0,0,0$615,175,0,0,0$616,175,0,0,0$617,175,0,0,0$618,175,0,0,0$619,175,0,0,0$620,175,0,0,0$621,175,0,0,0$622,175,0,0,0$623,175,0,0,0$624,175,0,0,0$625,175,0,0,0$626,175,0,0,0$631,175,0,0,0$632,175,0,0,0$634,175,0,0,0$635,175,0,0,0$636,175,0,0,0$637,175,0,0,0$638,175,0,0,0$639,175,0,0,0$640,175,0,0,0$641,175,0,0,0$642,175,0,0,0$643,175,0,0,0$644,175,0,0,0$645,175,0,0,0$646,175,0,0,0$647,175,0,0,0$648,175,0,0,0$649,175,0,0,0$650,175,0,0,0$651,175,0,0,0$652,175,0,0,0$653,175,0,0,0$654,175,0,0,0$655,175,0,0,0$656,175,0,0,0$657,175,0,0,0$658,175,0,0,0$659,175,0,0,0$660,175,0,0,0$661,175,0,0,0$662,175,0,0,0$663,175,0,0,0$664,175,0,0,0$665,175,0,0,0$666,175,0,0,0$667,175,0,0,0$668,175,0,0,0$669,175,0,0,0$670,175,0,0,0$671,175,0,0,0$672,175,0,0,0$673,175,0,0,0$674,175,0,0,0$675,175,0,0,0$676,175,0,0,0$677,175,0,0,0$678,175,0,0,0$679,175,0,0,0$680,175,0,0,0$681,175,0,0,0$686,175,0,0,0$687,175,0,0,0$688,175,0,0,0$689,175,0,0,0$690,175,0,0,0$691,175,0,0,0$692,175,0,0,0$693,175,0,0,0$694,175,0,0,0$695,175,0,0,0$696,175,0,0,0$697,175,0,0,0$702,175,0,0,0$703,175,0,0,0$607,176,0,0,0$608,176,0,0,0$628,176,255,255,255$629,176,255,255,255$631,176,0,0,0$632,176,0,0,0$633,176,0,0,0$634,176,0,0,0$635,176,0,0,0$636,176,255,255,255$637,176,255,255,255$638,176,255,255,255$640,176,0,0,0$641,176,0,0,0$642,176,0,0,0$643,176,0,0,0$644,176,0,0,0$645,176,0,0,0$646,176,255,255,255$647,176,255,255,255$648,176,255,255,255$649,176,255,255,255$650,176,0,0,0$651,176,0,0,0$652,176,0,0,0$653,176,0,0,0$654,176,0,0,0$655,176,0,0,0$656,176,0,0,0$657,176,0,0,0$658,176,0,0,0$659,176,0,0,0$660,176,255,255,255$661,176,255,255,255$662,176,255,255,255$663,176,255,255,255$664,176,0,0,0$665,176,0,0,0$666,176,0,0,0$667,176,0,0,0$668,176,0,0,0$669,176,0,0,0$670,176,0,0,0$671,176,0,0,0$673,176,255,255,255$674,176,255,255,255$675,176,255,255,255$676,176,0,0,0$677,176,0,0,0$678,176,0,0,0$679,176,0,0,0$680,176,0,0,0$681,176,0,0,0$683,176,255,255,255$684,176,255,255,255$685,176,255,255,255$687,176,0,0,0$688,176,0,0,0$689,176,0,0,0$690,176,0,0,0$691,176,0,0,0$692,176,0,0,0$693,176,0,0,0$694,176,0,0,0$695,176,0,0,0$696,176,0,0,0$698,176,255,255,255$699,176,255,255,255$700,176,255,255,255$702,176,0,0,0$703,176,0,0,0$607,177,0,0,0$608,177,0,0,0$610,177,255,255,255$611,177,255,255,255$612,177,255,255,255$613,177,255,255,255$614,177,255,255,255$615,177,255,255,255$616,177,255,255,255$617,177,255,255,255$618,177,255,255,255$619,177,255,255,255$620,177,255,255,255$621,177,255,255,255$622,177,255,255,255$623,177,255,255,255$624,177,255,255,255$625,177,255,255,255$626,177,255,255,255$627,177,255,255,255$628,177,255,255,255$629,177,255,255,255$631,177,0,0,0$632,177,0,0,0$633,177,0,0,0$634,177,0,0,0$636,177,255,255,255$637,177,255,255,255$638,177,255,255,255$640,177,0,0,0$642,177,255,255,255$643,177,255,255,255$644,177,255,255,255$645,177,255,255,255$646,177,255,255,255$647,177,255,255,255$648,177,255,255,255$649,177,255,255,255$650,177,255,255,255$651,177,255,255,255$652,177,255,255,255$653,177,255,255,255$654,177,255,255,255$655,177,0,0,0$656,177,0,0,0$658,177,255,255,255$659,177,255,255,255$660,177,255,255,255$661,177,255,255,255$662,177,255,255,255$663,177,255,255,255$664,177,255,255,255$665,177,255,255,255$666,177,255,255,255$667,177,255,255,255$668,177,255,255,255$669,177,255,255,255$670,177,255,255,255$671,177,255,255,255$672,177,255,255,255$673,177,255,255,255$674,177,255,255,255$675,177,255,255,255$676,177,255,255,255$677,177,255,255,255$679,177,0,0,0$680,177,0,0,0$682,177,255,255,255$683,177,255,255,255$684,177,255,255,255$685,177,255,255,255$686,177,255,255,255$687,177,255,255,255$688,177,255,255,255$689,177,255,255,255$690,177,255,255,255$691,177,255,255,255$692,177,255,255,255$693,177,255,255,255$694,177,255,255,255$695,177,255,255,255$696,177,255,255,255$697,177,255,255,255$698,177,255,255,255$699,177,255,255,255$700,177,255,255,255$701,177,255,255,255$703,177,0,0,0$607,178,0,0,0$608,178,0,0,0$610,178,255,255,255$611,178,255,255,255$612,178,255,255,255$613,178,255,255,255$614,178,255,255,255$615,178,255,255,255$616,178,255,255,255$617,178,255,255,255$618,178,255,255,255$619,178,255,255,255$620,178,255,255,255$621,178,255,255,255$622,178,255,255,255$623,178,255,255,255$624,178,255,255,255$625,178,255,255,255$626,178,255,255,255$627,178,255,255,255$628,178,255,255,255$629,178,255,255,255$631,178,0,0,0$632,178,0,0,0$633,178,0,0,0$634,178,0,0,0$635,178,255,255,255$636,178,255,255,255$637,178,255,255,255$639,178,0,0,0$640,178,0,0,0$642,178,255,255,255$643,178,255,255,255$644,178,255,255,255$645,178,255,255,255$646,178,255,255,255$647,178,255,255,255$648,178,255,255,255$649,178,255,255,255$650,178,255,255,255$651,178,255,255,255$652,178,255,255,255$653,178,255,255,255$654,178,255,255,255$655,178,0,0,0$656,178,0,0,0$658,178,255,255,255$659,178,255,255,255$660,178,255,255,255$661,178,255,255,255$662,178,255,255,255$663,178,255,255,255$664,178,255,255,255$665,178,255,255,255$666,178,255,255,255$667,178,255,255,255$668,178,255,255,255$669,178,255,255,255$670,178,255,255,255$671,178,255,255,255$672,178,255,255,255$673,178,255,255,255$674,178,255,255,255$675,178,255,255,255$676,178,255,255,255$677,178,255,255,255$679,178,0,0,0$680,178,0,0,0$682,178,255,255,255$683,178,255,255,255$684,178,255,255,255$685,178,255,255,255$686,178,255,255,255$687,178,255,255,255$688,178,255,255,255$689,178,255,255,255$690,178,255,255,255$691,178,255,255,255$692,178,255,255,255$693,178,255,255,255$694,178,255,255,255$695,178,255,255,255$696,178,255,255,255$697,178,255,255,255$698,178,255,255,255$699,178,255,255,255$700,178,255,255,255$701,178,255,255,255$703,178,0,0,0$607,179,0,0,0$608,179,0,0,0$613,179,255,255,255$614,179,255,255,255$615,179,255,255,255$616,179,255,255,255$617,179,255,255,255$618,179,255,255,255$630,179,0,0,0$631,179,0,0,0$632,179,0,0,0$633,179,0,0,0$635,179,255,255,255$636,179,255,255,255$637,179,255,255,255$638,179,0,0,0$639,179,0,0,0$640,179,0,0,0$642,179,255,255,255$643,179,255,255,255$644,179,255,255,255$645,179,255,255,255$646,179,255,255,255$647,179,255,255,255$648,179,255,255,255$649,179,255,255,255$650,179,255,255,255$651,179,255,255,255$652,179,255,255,255$653,179,255,255,255$654,179,255,255,255$655,179,0,0,0$656,179,0,0,0$658,179,255,255,255$659,179,255,255,255$660,179,255,255,255$661,179,255,255,255$662,179,255,255,255$663,179,255,255,255$664,179,255,255,255$665,179,255,255,255$666,179,255,255,255$667,179,255,255,255$668,179,255,255,255$669,179,255,255,255$670,179,255,255,255$671,179,255,255,255$672,179,255,255,255$673,179,255,255,255$674,179,255,255,255$675,179,255,255,255$676,179,255,255,255$677,179,255,255,255$679,179,0,0,0$680,179,0,0,0$682,179,255,255,255$683,179,255,255,255$684,179,255,255,255$685,179,255,255,255$686,179,255,255,255$687,179,255,255,255$688,179,255,255,255$689,179,255,255,255$690,179,255,255,255$691,179,255,255,255$692,179,255,255,255$693,179,255,255,255$694,179,255,255,255$695,179,255,255,255$696,179,255,255,255$697,179,255,255,255$698,179,255,255,255$699,179,255,255,255$700,179,255,255,255$701,179,255,255,255$703,179,0,0,0$607,180,0,0,0$608,180,0,0,0$609,180,0,0,0$610,180,0,0,0$613,180,255,255,255$614,180,255,255,255$615,180,255,255,255$616,180,255,255,255$619,180,0,0,0$620,180,0,0,0$621,180,0,0,0$622,180,0,0,0$623,180,0,0,0$624,180,0,0,0$625,180,0,0,0$626,180,0,0,0$627,180,0,0,0$628,180,0,0,0$629,180,0,0,0$630,180,0,0,0$631,180,0,0,0$632,180,0,0,0$633,180,0,0,0$634,180,255,255,255$635,180,255,255,255$636,180,255,255,255$642,180,0,0,0$644,180,255,255,255$645,180,255,255,255$646,180,255,255,255$647,180,0,0,0$648,180,0,0,0$649,180,0,0,0$650,180,0,0,0$651,180,0,0,0$652,180,0,0,0$653,180,0,0,0$654,180,0,0,0$655,180,0,0,0$656,180,0,0,0$657,180,0,0,0$658,180,0,0,0$659,180,0,0,0$660,180,255,255,255$661,180,255,255,255$662,180,255,255,255$663,180,255,255,255$664,180,0,0,0$665,180,0,0,0$666,180,0,0,0$667,180,0,0,0$668,180,0,0,0$669,180,0,0,0$670,180,0,0,0$671,180,0,0,0$673,180,255,255,255$674,180,255,255,255$675,180,255,255,255$676,180,0,0,0$677,180,0,0,0$678,180,0,0,0$679,180,0,0,0$680,180,0,0,0$682,180,255,255,255$683,180,255,255,255$685,180,0,0,0$686,180,0,0,0$687,180,0,0,0$688,180,0,0,0$689,180,0,0,0$691,180,255,255,255$692,180,255,255,255$694,180,0,0,0$695,180,0,0,0$696,180,0,0,0$697,180,0,0,0$698,180,0,0,0$700,180,255,255,255$701,180,255,255,255$703,180,0,0,0$607,181,0,0,0$608,181,0,0,0$611,181,255,255,255$612,181,255,255,255$613,181,255,255,255$614,181,255,255,255$615,181,255,255,255$617,181,0,0,0$618,181,0,0,0$619,181,0,0,0$620,181,0,0,0$621,181,0,0,0$623,181,255,255,255$624,181,255,255,255$625,181,255,255,255$626,181,255,255,255$627,181,255,255,255$629,181,0,0,0$630,181,0,0,0$631,181,0,0,0$632,181,0,0,0$634,181,255,255,255$635,181,255,255,255$636,181,255,255,255$637,181,0,0,0$638,181,255,255,255$639,181,255,255,255$640,181,255,255,255$642,181,0,0,0$643,181,255,255,255$644,181,255,255,255$645,181,255,255,255$647,181,0,0,0$648,181,0,0,0$649,181,0,0,0$650,181,0,0,0$651,181,0,0,0$652,181,255,255,255$653,181,255,255,255$654,181,255,255,255$655,181,0,0,0$656,181,0,0,0$657,181,0,0,0$658,181,0,0,0$659,181,0,0,0$664,181,0,0,0$665,181,0,0,0$666,181,0,0,0$667,181,0,0,0$668,181,0,0,0$669,181,0,0,0$670,181,0,0,0$671,181,0,0,0$679,181,0,0,0$680,181,0,0,0$682,181,255,255,255$683,181,255,255,255$685,181,0,0,0$686,181,0,0,0$687,181,0,0,0$688,181,0,0,0$689,181,0,0,0$691,181,255,255,255$692,181,255,255,255$694,181,0,0,0$695,181,0,0,0$696,181,0,0,0$697,181,0,0,0$698,181,0,0,0$700,181,255,255,255$701,181,255,255,255$703,181,0,0,0$607,182,0,0,0$608,182,0,0,0$610,182,255,255,255$611,182,255,255,255$612,182,255,255,255$613,182,255,255,255$614,182,255,255,255$615,182,255,255,255$616,182,255,255,255$617,182,255,255,255$618,182,255,255,255$619,182,255,255,255$620,182,255,255,255$621,182,255,255,255$622,182,255,255,255$623,182,255,255,255$624,182,255,255,255$625,182,255,255,255$627,182,0,0,0$628,182,0,0,0$629,182,0,0,0$630,182,0,0,0$631,182,0,0,0$632,182,0,0,0$633,182,255,255,255$634,182,255,255,255$635,182,255,255,255$636,182,255,255,255$637,182,255,255,255$638,182,255,255,255$639,182,255,255,255$640,182,255,255,255$641,182,0,0,0$643,182,255,255,255$644,182,255,255,255$645,182,255,255,255$646,182,0,0,0$647,182,0,0,0$648,182,0,0,0$649,182,0,0,0$650,182,0,0,0$651,182,0,0,0$652,182,255,255,255$653,182,255,255,255$654,182,255,255,255$655,182,0,0,0$656,182,0,0,0$675,182,255,255,255$676,182,255,255,255$677,182,255,255,255$679,182,0,0,0$680,182,0,0,0$682,182,255,255,255$683,182,255,255,255$684,182,255,255,255$690,182,255,255,255$691,182,255,255,255$692,182,255,255,255$693,182,255,255,255$699,182,255,255,255$700,182,255,255,255$701,182,255,255,255$703,182,0,0,0$607,183,0,0,0$608,183,0,0,0$610,183,255,255,255$611,183,255,255,255$612,183,255,255,255$613,183,255,255,255$614,183,255,255,255$615,183,255,255,255$616,183,255,255,255$617,183,255,255,255$618,183,255,255,255$619,183,255,255,255$620,183,255,255,255$621,183,255,255,255$622,183,255,255,255$623,183,255,255,255$625,183,0,0,0$626,183,0,0,0$627,183,0,0,0$628,183,0,0,0$629,183,0,0,0$630,183,0,0,0$631,183,0,0,0$632,183,0,0,0$633,183,255,255,255$634,183,255,255,255$635,183,255,255,255$636,183,255,255,255$637,183,255,255,255$638,183,255,255,255$639,183,255,255,255$641,183,0,0,0$642,183,255,255,255$643,183,255,255,255$644,183,255,255,255$646,183,0,0,0$647,183,0,0,0$648,183,0,0,0$649,183,0,0,0$650,183,0,0,0$651,183,0,0,0$652,183,255,255,255$653,183,255,255,255$654,183,255,255,255$655,183,0,0,0$656,183,0,0,0$658,183,255,255,255$659,183,255,255,255$660,183,255,255,255$661,183,255,255,255$662,183,255,255,255$663,183,255,255,255$664,183,255,255,255$665,183,255,255,255$666,183,255,255,255$667,183,255,255,255$668,183,255,255,255$669,183,255,255,255$670,183,255,255,255$671,183,255,255,255$672,183,255,255,255$673,183,255,255,255$674,183,255,255,255$675,183,255,255,255$676,183,255,255,255$677,183,255,255,255$679,183,0,0,0$680,183,0,0,0$682,183,255,255,255$683,183,255,255,255$684,183,255,255,255$685,183,255,255,255$686,183,255,255,255$687,183,255,255,255$688,183,255,255,255$689,183,255,255,255$690,183,255,255,255$691,183,255,255,255$692,183,255,255,255$693,183,255,255,255$694,183,255,255,255$695,183,255,255,255$696,183,255,255,255$697,183,255,255,255$698,183,255,255,255$699,183,255,255,255$700,183,255,255,255$701,183,255,255,255$703,183,0,0,0$607,184,0,0,0$608,184,0,0,0$616,184,255,255,255$617,184,255,255,255$618,184,255,255,255$619,184,255,255,255$620,184,255,255,255$621,184,255,255,255$623,184,0,0,0$624,184,0,0,0$625,184,0,0,0$626,184,0,0,0$628,184,255,255,255$629,184,255,255,255$631,184,0,0,0$632,184,0,0,0$633,184,255,255,255$634,184,255,255,255$635,184,255,255,255$636,184,255,255,255$637,184,255,255,255$638,184,255,255,255$639,184,255,255,255$640,184,0,0,0$642,184,255,255,255$643,184,255,255,255$644,184,255,255,255$645,184,255,255,255$646,184,255,255,255$647,184,255,255,255$648,184,255,255,255$649,184,255,255,255$650,184,255,255,255$651,184,255,255,255$652,184,255,255,255$653,184,255,255,255$654,184,255,255,255$655,184,0,0,0$656,184,0,0,0$658,184,255,255,255$659,184,255,255,255$660,184,255,255,255$661,184,255,255,255$662,184,255,255,255$663,184,255,255,255$664,184,255,255,255$665,184,255,255,255$666,184,255,255,255$667,184,255,255,255$668,184,255,255,255$669,184,255,255,255$670,184,255,255,255$671,184,255,255,255$672,184,255,255,255$673,184,255,255,255$674,184,255,255,255$675,184,255,255,255$676,184,255,255,255$677,184,255,255,255$678,184,0,0,0$679,184,0,0,0$680,184,0,0,0$682,184,255,255,255$683,184,255,255,255$684,184,255,255,255$685,184,255,255,255$686,184,255,255,255$687,184,255,255,255$688,184,255,255,255$689,184,255,255,255$690,184,255,255,255$691,184,255,255,255$692,184,255,255,255$693,184,255,255,255$694,184,255,255,255$695,184,255,255,255$696,184,255,255,255$697,184,255,255,255$698,184,255,255,255$699,184,255,255,255$700,184,255,255,255$701,184,255,255,255$703,184,0,0,0$607,185,0,0,0$608,185,0,0,0$609,185,0,0,0$610,185,0,0,0$611,185,0,0,0$612,185,0,0,0$614,185,255,255,255$615,185,255,255,255$616,185,255,255,255$617,185,255,255,255$618,185,255,255,255$619,185,255,255,255$621,185,0,0,0$622,185,0,0,0$623,185,0,0,0$624,185,0,0,0$625,185,0,0,0$626,185,0,0,0$628,185,255,255,255$629,185,255,255,255$631,185,0,0,0$632,185,0,0,0$636,185,255,255,255$637,185,255,255,255$638,185,255,255,255$640,185,0,0,0$642,185,255,255,255$643,185,255,255,255$644,185,255,255,255$645,185,255,255,255$646,185,255,255,255$647,185,255,255,255$648,185,255,255,255$649,185,255,255,255$650,185,255,255,255$651,185,255,255,255$652,185,255,255,255$653,185,255,255,255$654,185,255,255,255$655,185,0,0,0$656,185,0,0,0$657,185,0,0,0$658,185,0,0,0$659,185,0,0,0$660,185,255,255,255$661,185,255,255,255$662,185,255,255,255$663,185,255,255,255$665,185,255,255,255$669,185,0,0,0$670,185,0,0,0$671,185,0,0,0$672,185,255,255,255$673,185,255,255,255$674,185,255,255,255$676,185,0,0,0$677,185,0,0,0$678,185,0,0,0$679,185,0,0,0$680,185,0,0,0$682,185,255,255,255$683,185,255,255,255$684,185,255,255,255$690,185,255,255,255$691,185,255,255,255$692,185,255,255,255$693,185,255,255,255$699,185,255,255,255$700,185,255,255,255$701,185,255,255,255$703,185,0,0,0$607,186,0,0,0$608,186,0,0,0$609,186,0,0,0$612,186,255,255,255$613,186,255,255,255$614,186,255,255,255$615,186,255,255,255$616,186,255,255,255$617,186,255,255,255$620,186,0,0,0$621,186,0,0,0$622,186,0,0,0$623,186,0,0,0$624,186,0,0,0$625,186,0,0,0$627,186,255,255,255$628,186,255,255,255$629,186,255,255,255$631,186,0,0,0$632,186,0,0,0$633,186,0,0,0$634,186,0,0,0$635,186,255,255,255$636,186,255,255,255$637,186,255,255,255$639,186,0,0,0$640,186,0,0,0$642,186,255,255,255$643,186,255,255,255$644,186,255,255,255$645,186,255,255,255$646,186,255,255,255$647,186,255,255,255$648,186,255,255,255$649,186,255,255,255$650,186,255,255,255$651,186,255,255,255$652,186,255,255,255$653,186,255,255,255$655,186,0,0,0$656,186,0,0,0$659,186,255,255,255$660,186,255,255,255$661,186,255,255,255$662,186,255,255,255$664,186,0,0,0$666,186,255,255,255$667,186,255,255,255$668,186,255,255,255$669,186,255,255,255$673,186,255,255,255$674,186,255,255,255$675,186,255,255,255$676,186,255,255,255$679,186,0,0,0$680,186,0,0,0$682,186,255,255,255$683,186,255,255,255$685,186,0,0,0$686,186,0,0,0$687,186,0,0,0$688,186,0,0,0$689,186,0,0,0$691,186,255,255,255$692,186,255,255,255$694,186,0,0,0$695,186,0,0,0$696,186,0,0,0$697,186,0,0,0$698,186,0,0,0$700,186,255,255,255$701,186,255,255,255$703,186,0,0,0$607,187,0,0,0$608,187,0,0,0$610,187,255,255,255$611,187,255,255,255$612,187,255,255,255$613,187,255,255,255$614,187,255,255,255$615,187,255,255,255$616,187,255,255,255$617,187,255,255,255$618,187,255,255,255$619,187,255,255,255$620,187,255,255,255$621,187,255,255,255$622,187,255,255,255$623,187,255,255,255$624,187,255,255,255$625,187,255,255,255$626,187,255,255,255$627,187,255,255,255$628,187,255,255,255$629,187,255,255,255$631,187,0,0,0$632,187,0,0,0$633,187,0,0,0$635,187,255,255,255$636,187,255,255,255$637,187,255,255,255$638,187,0,0,0$639,187,0,0,0$640,187,0,0,0$641,187,0,0,0$642,187,0,0,0$643,187,0,0,0$648,187,0,0,0$649,187,255,255,255$650,187,255,255,255$651,187,255,255,255$652,187,0,0,0$653,187,0,0,0$654,187,0,0,0$655,187,0,0,0$656,187,0,0,0$657,187,255,255,255$658,187,255,255,255$659,187,255,255,255$660,187,255,255,255$661,187,255,255,255$663,187,0,0,0$664,187,0,0,0$665,187,0,0,0$666,187,255,255,255$667,187,255,255,255$668,187,255,255,255$669,187,255,255,255$670,187,255,255,255$672,187,0,0,0$673,187,255,255,255$674,187,255,255,255$675,187,255,255,255$676,187,255,255,255$677,187,255,255,255$679,187,0,0,0$680,187,0,0,0$682,187,255,255,255$683,187,255,255,255$685,187,0,0,0$686,187,0,0,0$687,187,0,0,0$688,187,0,0,0$689,187,0,0,0$691,187,255,255,255$692,187,255,255,255$694,187,0,0,0$695,187,0,0,0$696,187,0,0,0$697,187,0,0,0$698,187,0,0,0$699,187,255,255,255$700,187,255,255,255$701,187,255,255,255$703,187,0,0,0$607,188,0,0,0$608,188,0,0,0$610,188,255,255,255$611,188,255,255,255$612,188,255,255,255$613,188,255,255,255$614,188,255,255,255$615,188,255,255,255$616,188,255,255,255$617,188,255,255,255$618,188,255,255,255$619,188,255,255,255$620,188,255,255,255$621,188,255,255,255$622,188,255,255,255$623,188,255,255,255$624,188,255,255,255$625,188,255,255,255$626,188,255,255,255$627,188,255,255,255$628,188,255,255,255$629,188,255,255,255$631,188,0,0,0$632,188,0,0,0$634,188,255,255,255$635,188,255,255,255$636,188,255,255,255$638,188,0,0,0$639,188,0,0,0$640,188,0,0,0$641,188,0,0,0$642,188,0,0,0$643,188,0,0,0$644,188,255,255,255$645,188,255,255,255$646,188,255,255,255$648,188,0,0,0$649,188,255,255,255$650,188,255,255,255$651,188,255,255,255$652,188,0,0,0$653,188,0,0,0$654,188,0,0,0$655,188,0,0,0$656,188,0,0,0$658,188,255,255,255$659,188,255,255,255$660,188,255,255,255$662,188,0,0,0$663,188,0,0,0$664,188,0,0,0$665,188,0,0,0$668,188,255,255,255$669,188,255,255,255$670,188,255,255,255$672,188,0,0,0$673,188,0,0,0$675,188,255,255,255$676,188,255,255,255$677,188,255,255,255$679,188,0,0,0$680,188,0,0,0$682,188,255,255,255$683,188,255,255,255$684,188,255,255,255$685,188,255,255,255$686,188,255,255,255$687,188,255,255,255$688,188,255,255,255$689,188,255,255,255$690,188,255,255,255$691,188,255,255,255$692,188,255,255,255$693,188,255,255,255$694,188,255,255,255$695,188,255,255,255$696,188,255,255,255$697,188,255,255,255$698,188,255,255,255$699,188,255,255,255$700,188,255,255,255$701,188,255,255,255$703,188,0,0,0$607,189,0,0,0$608,189,0,0,0$618,189,255,255,255$619,189,255,255,255$620,189,255,255,255$621,189,255,255,255$630,189,0,0,0$631,189,0,0,0$632,189,0,0,0$633,189,255,255,255$634,189,255,255,255$635,189,255,255,255$636,189,255,255,255$642,189,0,0,0$643,189,0,0,0$644,189,255,255,255$645,189,255,255,255$646,189,255,255,255$648,189,0,0,0$649,189,255,255,255$650,189,255,255,255$651,189,255,255,255$652,189,0,0,0$653,189,0,0,0$654,189,0,0,0$655,189,0,0,0$656,189,0,0,0$657,189,0,0,0$658,189,0,0,0$659,189,0,0,0$660,189,0,0,0$661,189,0,0,0$662,189,0,0,0$663,189,0,0,0$664,189,0,0,0$665,189,0,0,0$667,189,255,255,255$668,189,255,255,255$670,189,0,0,0$671,189,0,0,0$672,189,0,0,0$673,189,0,0,0$674,189,0,0,0$675,189,0,0,0$676,189,0,0,0$677,189,0,0,0$678,189,0,0,0$679,189,0,0,0$680,189,0,0,0$682,189,255,255,255$683,189,255,255,255$684,189,255,255,255$685,189,255,255,255$686,189,255,255,255$687,189,255,255,255$688,189,255,255,255$689,189,255,255,255$690,189,255,255,255$691,189,255,255,255$692,189,255,255,255$693,189,255,255,255$694,189,255,255,255$695,189,255,255,255$696,189,255,255,255$697,189,255,255,255$698,189,255,255,255$699,189,255,255,255$700,189,255,255,255$701,189,255,255,255$703,189,0,0,0$607,190,0,0,0$608,190,0,0,0$609,190,0,0,0$610,190,0,0,0$611,190,0,0,0$612,190,0,0,0$617,190,0,0,0$618,190,255,255,255$619,190,255,255,255$620,190,255,255,255$622,190,0,0,0$627,190,0,0,0$628,190,0,0,0$629,190,0,0,0$630,190,0,0,0$631,190,0,0,0$632,190,0,0,0$633,190,255,255,255$634,190,255,255,255$635,190,255,255,255$636,190,255,255,255$637,190,255,255,255$638,190,255,255,255$639,190,255,255,255$640,190,255,255,255$642,190,0,0,0$643,190,0,0,0$644,190,255,255,255$645,190,255,255,255$646,190,255,255,255$647,190,0,0,0$648,190,0,0,0$649,190,255,255,255$650,190,255,255,255$651,190,255,255,255$652,190,0,0,0$653,190,0,0,0$654,190,0,0,0$655,190,0,0,0$656,190,0,0,0$658,190,255,255,255$659,190,255,255,255$660,190,255,255,255$661,190,255,255,255$662,190,255,255,255$663,190,255,255,255$664,190,255,255,255$665,190,255,255,255$666,190,255,255,255$667,190,255,255,255$668,190,255,255,255$669,190,255,255,255$670,190,255,255,255$671,190,255,255,255$672,190,255,255,255$673,190,255,255,255$674,190,255,255,255$675,190,255,255,255$676,190,255,255,255$677,190,255,255,255$679,190,0,0,0$680,190,0,0,0$690,190,255,255,255$691,190,255,255,255$692,190,255,255,255$693,190,255,255,255$702,190,0,0,0$703,190,0,0,0$608,191,0,0,0$609,191,0,0,0$610,191,0,0,0$611,191,0,0,0$612,191,0,0,0$613,191,255,255,255$614,191,255,255,255$615,191,255,255,255$617,191,0,0,0$618,191,255,255,255$619,191,255,255,255$620,191,255,255,255$622,191,0,0,0$624,191,255,255,255$625,191,255,255,255$626,191,255,255,255$627,191,0,0,0$628,191,0,0,0$629,191,0,0,0$630,191,0,0,0$631,191,0,0,0$632,191,0,0,0$633,191,255,255,255$634,191,255,255,255$635,191,255,255,255$636,191,255,255,255$637,191,255,255,255$638,191,255,255,255$639,191,255,255,255$640,191,255,255,255$642,191,0,0,0$644,191,255,255,255$645,191,255,255,255$646,191,255,255,255$647,191,0,0,0$648,191,0,0,0$649,191,255,255,255$650,191,255,255,255$651,191,255,255,255$652,191,0,0,0$653,191,0,0,0$654,191,0,0,0$655,191,0,0,0$656,191,0,0,0$658,191,255,255,255$659,191,255,255,255$660,191,255,255,255$661,191,255,255,255$662,191,255,255,255$663,191,255,255,255$664,191,255,255,255$665,191,255,255,255$666,191,255,255,255$667,191,255,255,255$668,191,255,255,255$669,191,255,255,255$670,191,255,255,255$671,191,255,255,255$672,191,255,255,255$673,191,255,255,255$674,191,255,255,255$675,191,255,255,255$676,191,255,255,255$677,191,255,255,255$679,191,0,0,0$680,191,0,0,0$681,191,0,0,0$682,191,0,0,0$683,191,0,0,0$684,191,0,0,0$685,191,0,0,0$686,191,0,0,0$687,191,0,0,0$688,191,0,0,0$689,191,0,0,0$691,191,255,255,255$692,191,255,255,255$694,191,0,0,0$695,191,0,0,0$696,191,0,0,0$697,191,0,0,0$698,191,0,0,0$699,191,0,0,0$700,191,0,0,0$701,191,0,0,0$702,191,0,0,0$703,191,0,0,0$609,192,0,0,0$610,192,0,0,0$611,192,0,0,0$613,192,255,255,255$614,192,255,255,255$615,192,255,255,255$617,192,0,0,0$618,192,255,255,255$619,192,255,255,255$620,192,255,255,255$622,192,0,0,0$624,192,255,255,255$625,192,255,255,255$626,192,255,255,255$628,192,0,0,0$629,192,0,0,0$631,192,0,0,0$632,192,0,0,0$642,192,0,0,0$644,192,255,255,255$645,192,255,255,255$647,192,0,0,0$648,192,0,0,0$649,192,255,255,255$650,192,255,255,255$651,192,255,255,255$652,192,0,0,0$653,192,0,0,0$654,192,0,0,0$655,192,0,0,0$656,192,0,0,0$667,192,255,255,255$668,192,255,255,255$669,192,255,255,255$679,192,0,0,0$680,192,0,0,0$691,192,255,255,255$692,192,255,255,255$703,192,0,0,0$608,193,0,0,0$609,193,0,0,0$610,193,0,0,0$611,193,0,0,0$613,193,255,255,255$614,193,255,255,255$616,193,0,0,0$617,193,0,0,0$619,193,255,255,255$620,193,255,255,255$622,193,0,0,0$623,193,0,0,0$624,193,255,255,255$625,193,255,255,255$626,193,255,255,255$628,193,0,0,0$629,193,0,0,0$630,193,0,0,0$631,193,0,0,0$632,193,0,0,0$633,193,0,0,0$634,193,0,0,0$635,193,0,0,0$636,193,0,0,0$637,193,0,0,0$638,193,0,0,0$639,193,0,0,0$640,193,0,0,0$641,193,0,0,0$642,193,0,0,0$644,193,255,255,255$645,193,255,255,255$647,193,0,0,0$648,193,0,0,0$649,193,255,255,255$650,193,255,255,255$651,193,255,255,255$652,193,0,0,0$653,193,0,0,0$654,193,0,0,0$655,193,0,0,0$656,193,0,0,0$657,193,0,0,0$658,193,0,0,0$659,193,0,0,0$660,193,0,0,0$662,193,255,255,255$663,193,255,255,255$664,193,255,255,255$667,193,255,255,255$668,193,255,255,255$670,193,0,0,0$671,193,255,255,255$672,193,255,255,255$673,193,255,255,255$674,193,255,255,255$675,193,0,0,0$676,193,0,0,0$677,193,0,0,0$678,193,0,0,0$679,193,0,0,0$680,193,0,0,0$682,193,255,255,255$683,193,255,255,255$684,193,255,255,255$685,193,255,255,255$686,193,255,255,255$687,193,255,255,255$688,193,255,255,255$689,193,255,255,255$690,193,255,255,255$691,193,255,255,255$692,193,255,255,255$693,193,255,255,255$694,193,255,255,255$695,193,255,255,255$696,193,255,255,255$697,193,255,255,255$698,193,255,255,255$699,193,255,255,255$700,193,255,255,255$701,193,255,255,255$703,193,0,0,0$607,194,0,0,0$608,194,0,0,0$613,194,255,255,255$614,194,255,255,255$616,194,0,0,0$617,194,0,0,0$619,194,255,255,255$620,194,255,255,255$622,194,0,0,0$623,194,0,0,0$625,194,255,255,255$626,194,255,255,255$628,194,0,0,0$629,194,0,0,0$630,194,0,0,0$631,194,0,0,0$632,194,0,0,0$633,194,0,0,0$634,194,0,0,0$635,194,0,0,0$636,194,0,0,0$637,194,0,0,0$638,194,0,0,0$639,194,0,0,0$640,194,0,0,0$641,194,0,0,0$644,194,255,255,255$645,194,255,255,255$647,194,0,0,0$648,194,0,0,0$649,194,255,255,255$651,194,255,255,255$655,194,0,0,0$656,194,0,0,0$657,194,0,0,0$658,194,0,0,0$659,194,0,0,0$662,194,255,255,255$663,194,255,255,255$665,194,0,0,0$667,194,255,255,255$668,194,255,255,255$670,194,0,0,0$672,194,255,255,255$674,194,255,255,255$676,194,0,0,0$677,194,0,0,0$678,194,0,0,0$679,194,0,0,0$680,194,0,0,0$682,194,255,255,255$683,194,255,255,255$684,194,255,255,255$685,194,255,255,255$686,194,255,255,255$687,194,255,255,255$688,194,255,255,255$689,194,255,255,255$690,194,255,255,255$693,194,255,255,255$694,194,255,255,255$695,194,255,255,255$696,194,255,255,255$697,194,255,255,255$698,194,255,255,255$699,194,255,255,255$700,194,255,255,255$701,194,255,255,255$703,194,0,0,0$607,195,0,0,0$608,195,0,0,0$610,195,255,255,255$614,195,255,255,255$616,195,0,0,0$617,195,0,0,0$622,195,0,0,0$623,195,0,0,0$629,195,255,255,255$631,195,0,0,0$632,195,0,0,0$633,195,255,255,255$634,195,255,255,255$635,195,255,255,255$636,195,255,255,255$637,195,255,255,255$638,195,255,255,255$639,195,255,255,255$640,195,255,255,255$642,195,255,255,255$645,195,255,255,255$647,195,0,0,0$648,195,0,0,0$649,195,255,255,255$654,195,255,255,255$655,195,0,0,0$656,195,0,0,0$665,195,0,0,0$670,195,0,0,0$671,195,0,0,0$679,195,0,0,0$680,195,0,0,0$703,195,0,0,0$607,196,0,0,0$608,196,0,0,0$615,196,0,0,0$616,196,0,0,0$617,196,0,0,0$622,196,0,0,0$623,196,0,0,0$624,196,0,0,0$631,196,0,0,0$632,196,0,0,0$633,196,255,255,255$646,196,0,0,0$647,196,0,0,0$648,196,0,0,0$654,196,255,255,255$655,196,0,0,0$656,196,0,0,0$658,196,255,255,255$664,196,0,0,0$665,196,0,0,0$670,196,0,0,0$671,196,0,0,0$673,196,255,255,255$679,196,0,0,0$680,196,0,0,0$681,196,0,0,0$682,196,0,0,0$683,196,0,0,0$684,196,0,0,0$685,196,0,0,0$686,196,0,0,0$687,196,0,0,0$688,196,0,0,0$689,196,0,0,0$694,196,0,0,0$695,196,0,0,0$696,196,0,0,0$697,196,0,0,0$698,196,0,0,0$699,196,0,0,0$700,196,0,0,0$701,196,0,0,0$702,196,0,0,0$703,196,0,0,0$607,197,0,0,0$608,197,0,0,0$615,197,0,0,0$616,197,0,0,0$617,197,0,0,0$622,197,0,0,0$623,197,0,0,0$624,197,0,0,0$631,197,0,0,0$632,197,0,0,0$646,197,0,0,0$647,197,0,0,0$648,197,0,0,0$655,197,0,0,0$656,197,0,0,0$664,197,0,0,0$665,197,0,0,0$670,197,0,0,0$671,197,0,0,0$672,197,0,0,0$679,197,0,0,0$680,197,0,0,0$681,197,0,0,0$682,197,0,0,0$683,197,0,0,0$684,197,0,0,0$685,197,0,0,0$686,197,0,0,0$687,197,0,0,0$688,197,0,0,0$689,197,0,0,0$694,197,0,0,0$695,197,0,0,0$696,197,0,0,0$697,197,0,0,0$698,197,0,0,0$699,197,0,0,0$700,197,0,0,0$701,197,0,0,0$702,197,0,0,0$607,198,0,0,0$608,198,0,0,0$609,198,0,0,0$610,198,0,0,0$611,198,0,0,0$612,198,0,0,0$613,198,0,0,0$614,198,0,0,0$615,198,0,0,0$616,198,0,0,0$617,198,0,0,0$618,198,0,0,0$619,198,0,0,0$620,198,0,0,0$621,198,0,0,0$622,198,0,0,0$623,198,0,0,0$624,198,0,0,0$625,198,0,0,0$626,198,0,0,0$627,198,0,0,0$628,198,0,0,0$629,198,0,0,0$630,198,0,0,0$631,198,0,0,0$632,198,0,0,0$633,198,0,0,0$634,198,0,0,0$635,198,0,0,0$636,198,0,0,0$637,198,0,0,0$638,198,0,0,0$639,198,0,0,0$640,198,0,0,0$641,198,0,0,0$642,198,0,0,0$643,198,0,0,0$644,198,0,0,0$645,198,0,0,0$646,198,0,0,0$647,198,0,0,0$648,198,0,0,0$649,198,0,0,0$650,198,0,0,0$651,198,0,0,0$652,198,0,0,0$653,198,0,0,0$654,198,0,0,0$655,198,0,0,0$656,198,0,0,0$657,198,0,0,0$658,198,0,0,0$659,198,0,0,0$660,198,0,0,0$661,198,0,0,0$662,198,0,0,0$663,198,0,0,0$664,198,0,0,0$665,198,0,0,0$666,198,0,0,0$667,198,0,0,0$668,198,0,0,0$669,198,0,0,0$670,198,0,0,0$671,198,0,0,0$672,198,0,0,0$673,198,0,0,0$674,198,0,0,0$675,198,0,0,0$676,198,0,0,0$677,198,0,0,0$678,198,0,0,0$679,198,0,0,0$680,198,0,0,0$688,198,0,0,0$689,198,0,0,0$690,198,0,0,0$691,198,0,0,0$692,198,0,0,0$693,198,0,0,0$694,198,0,0,0$695,198,0,0,0$608,199,0,0,0$609,199,0,0,0$610,199,0,0,0$611,199,0,0,0$612,199,0,0,0$613,199,0,0,0$614,199,0,0,0$615,199,0,0,0$617,199,0,0,0$618,199,0,0,0$619,199,0,0,0$620,199,0,0,0$621,199,0,0,0$622,199,0,0,0$625,199,0,0,0$626,199,0,0,0$627,199,0,0,0$628,199,0,0,0$629,199,0,0,0$630,199,0,0,0$631,199,0,0,0$632,199,0,0,0$633,199,0,0,0$634,199,0,0,0$635,199,0,0,0$636,199,0,0,0$637,199,0,0,0$638,199,0,0,0$639,199,0,0,0$640,199,0,0,0$641,199,0,0,0$642,199,0,0,0$643,199,0,0,0$644,199,0,0,0$645,199,0,0,0$649,199,0,0,0$650,199,0,0,0$651,199,0,0,0$652,199,0,0,0$653,199,0,0,0$654,199,0,0,0$655,199,0,0,0$656,199,0,0,0$657,199,0,0,0$658,199,0,0,0$659,199,0,0,0$660,199,0,0,0$661,199,0,0,0$662,199,0,0,0$663,199,0,0,0$665,199,0,0,0$666,199,0,0,0$667,199,0,0,0$668,199,0,0,0$669,199,0,0,0$670,199,0,0,0$673,199,0,0,0$674,199,0,0,0$675,199,0,0,0$676,199,0,0,0$677,199,0,0,0$678,199,0,0,0$679,199,0,0,0$680,199,0,0,0$689,199,0,0,0$690,199,0,0,0$691,199,0,0,0$692,199,0,0,0$693,199,0,0,0$694,199,0,0,0$610,200,0,0,0$651,200,0,0,0$652,200,0,0,0$656,200,0,0,0$660,200,0,0,0$667,200,0,0,0$668,200,0,0,0$669,200,0,0,0$670,200,0,0,0$674,200,0,0,0$675,200,0,0,0$676,200,0,0,0$677,200,0,0,0$678,200,0,0,0$679,200,0,0,0$680,200,0,0,0$681,200,0,0,0$645,201,0,0,0$646,201,0,0,0$651,201,0,0,0$652,201,0,0,0$656,201,0,0,0$662,201,0,0,0$681,201,0,0,0$682,201,0,0,0$687,201,0,0,0$688,201,0,0,0$627,202,0,0,0$628,202,0,0,0$644,202,0,0,0$650,202,0,0,0$681,202,0,0,0$682,202,0,0,0");
        private static ColorArray SystemPanelTitle = ColorArray.FromThresholdString(60, "674,173,0,0,0$627,173,0,0,0$628,173,0,0,0$629,173,0,0,0$630,173,0,0,0$647,173,0,0,0$648,173,0,0,0$661,173,0,0,0$662,173,0,0,0$673,173,0,0,0$675,173,0,0,0$682,173,0,0,0$683,173,0,0,0$684,173,0,0,0$685,173,0,0,0$686,173,0,0,0$697,173,0,0,0$698,173,0,0,0$699,173,0,0,0$700,173,0,0,0$701,173,0,0,0$609,174,0,0,0$610,174,0,0,0$611,174,0,0,0$612,174,0,0,0$613,174,0,0,0$614,174,0,0,0$615,174,0,0,0$616,174,0,0,0$617,174,0,0,0$618,174,0,0,0$619,174,0,0,0$620,174,0,0,0$621,174,0,0,0$622,174,0,0,0$623,174,0,0,0$624,174,0,0,0$625,174,0,0,0$626,174,0,0,0$627,174,0,0,0$628,174,0,0,0$629,174,0,0,0$630,174,0,0,0$631,174,0,0,0$635,174,0,0,0$636,174,0,0,0$637,174,0,0,0$638,174,0,0,0$639,174,0,0,0$640,174,0,0,0$645,174,0,0,0$646,174,0,0,0$647,174,0,0,0$648,174,0,0,0$649,174,0,0,0$650,174,0,0,0$659,174,0,0,0$660,174,0,0,0$661,174,0,0,0$662,174,0,0,0$663,174,0,0,0$664,174,0,0,0$671,174,0,0,0$672,174,0,0,0$673,174,0,0,0$674,174,0,0,0$675,174,0,0,0$676,174,0,0,0$677,174,0,0,0$681,174,0,0,0$682,174,0,0,0$683,174,0,0,0$684,174,0,0,0$685,174,0,0,0$686,174,0,0,0$687,174,0,0,0$696,174,0,0,0$697,174,0,0,0$698,174,0,0,0$699,174,0,0,0$700,174,0,0,0$701,174,0,0,0$702,174,0,0,0$608,175,0,0,0$609,175,0,0,0$610,175,0,0,0$611,175,0,0,0$612,175,0,0,0$613,175,0,0,0$614,175,0,0,0$615,175,0,0,0$616,175,0,0,0$617,175,0,0,0$618,175,0,0,0$619,175,0,0,0$620,175,0,0,0$621,175,0,0,0$622,175,0,0,0$623,175,0,0,0$624,175,0,0,0$625,175,0,0,0$626,175,0,0,0$631,175,0,0,0$632,175,0,0,0$634,175,0,0,0$635,175,0,0,0$636,175,0,0,0$637,175,0,0,0$638,175,0,0,0$639,175,0,0,0$640,175,0,0,0$641,175,0,0,0$642,175,0,0,0$643,175,0,0,0$644,175,0,0,0$645,175,0,0,0$646,175,0,0,0$647,175,0,0,0$648,175,0,0,0$649,175,0,0,0$650,175,0,0,0$651,175,0,0,0$652,175,0,0,0$653,175,0,0,0$654,175,0,0,0$655,175,0,0,0$656,175,0,0,0$657,175,0,0,0$658,175,0,0,0$659,175,0,0,0$660,175,0,0,0$661,175,0,0,0$662,175,0,0,0$663,175,0,0,0$664,175,0,0,0$665,175,0,0,0$666,175,0,0,0$667,175,0,0,0$668,175,0,0,0$669,175,0,0,0$670,175,0,0,0$671,175,0,0,0$672,175,0,0,0$673,175,0,0,0$674,175,0,0,0$675,175,0,0,0$676,175,0,0,0$677,175,0,0,0$678,175,0,0,0$679,175,0,0,0$680,175,0,0,0$681,175,0,0,0$686,175,0,0,0$687,175,0,0,0$688,175,0,0,0$689,175,0,0,0$690,175,0,0,0$691,175,0,0,0$692,175,0,0,0$693,175,0,0,0$694,175,0,0,0$695,175,0,0,0$696,175,0,0,0$697,175,0,0,0$702,175,0,0,0$703,175,0,0,0$607,176,0,0,0$608,176,0,0,0$628,176,255,255,255$629,176,255,255,255$631,176,0,0,0$632,176,0,0,0$633,176,0,0,0$634,176,0,0,0$635,176,0,0,0$636,176,255,255,255$637,176,255,255,255$638,176,255,255,255$640,176,0,0,0$641,176,0,0,0$642,176,0,0,0$643,176,0,0,0$644,176,0,0,0$645,176,0,0,0$646,176,255,255,255$647,176,255,255,255$648,176,255,255,255$649,176,255,255,255$650,176,0,0,0$651,176,0,0,0$652,176,0,0,0$653,176,0,0,0$654,176,0,0,0$655,176,0,0,0$656,176,0,0,0$657,176,0,0,0$658,176,0,0,0$659,176,0,0,0$660,176,255,255,255$661,176,255,255,255$662,176,255,255,255$663,176,255,255,255$664,176,0,0,0$665,176,0,0,0$666,176,0,0,0$667,176,0,0,0$668,176,0,0,0$669,176,0,0,0$670,176,0,0,0$671,176,0,0,0$673,176,255,255,255$674,176,255,255,255$675,176,255,255,255$676,176,0,0,0$677,176,0,0,0$678,176,0,0,0$679,176,0,0,0$680,176,0,0,0$681,176,0,0,0$683,176,255,255,255$684,176,255,255,255$685,176,255,255,255$687,176,0,0,0$688,176,0,0,0$689,176,0,0,0$690,176,0,0,0$691,176,0,0,0$692,176,0,0,0$693,176,0,0,0$694,176,0,0,0$695,176,0,0,0$696,176,0,0,0$698,176,255,255,255$699,176,255,255,255$700,176,255,255,255$702,176,0,0,0$703,176,0,0,0$607,177,0,0,0$608,177,0,0,0$610,177,255,255,255$611,177,255,255,255$612,177,255,255,255$613,177,255,255,255$614,177,255,255,255$615,177,255,255,255$616,177,255,255,255$617,177,255,255,255$618,177,255,255,255$619,177,255,255,255$620,177,255,255,255$621,177,255,255,255$622,177,255,255,255$623,177,255,255,255$624,177,255,255,255$625,177,255,255,255$626,177,255,255,255$627,177,255,255,255$628,177,255,255,255$629,177,255,255,255$631,177,0,0,0$632,177,0,0,0$633,177,0,0,0$634,177,0,0,0$636,177,255,255,255$637,177,255,255,255$638,177,255,255,255$640,177,0,0,0$642,177,255,255,255$643,177,255,255,255$644,177,255,255,255$645,177,255,255,255$646,177,255,255,255$647,177,255,255,255$648,177,255,255,255$649,177,255,255,255$650,177,255,255,255$651,177,255,255,255$652,177,255,255,255$653,177,255,255,255$654,177,255,255,255$655,177,0,0,0$656,177,0,0,0$658,177,255,255,255$659,177,255,255,255$660,177,255,255,255$661,177,255,255,255$662,177,255,255,255$663,177,255,255,255$664,177,255,255,255$665,177,255,255,255$666,177,255,255,255$667,177,255,255,255$668,177,255,255,255$669,177,255,255,255$670,177,255,255,255$671,177,255,255,255$672,177,255,255,255$673,177,255,255,255$674,177,255,255,255$675,177,255,255,255$676,177,255,255,255$677,177,255,255,255$679,177,0,0,0$680,177,0,0,0$682,177,255,255,255$683,177,255,255,255$684,177,255,255,255$685,177,255,255,255$686,177,255,255,255$687,177,255,255,255$688,177,255,255,255$689,177,255,255,255$690,177,255,255,255$691,177,255,255,255$692,177,255,255,255$693,177,255,255,255$694,177,255,255,255$695,177,255,255,255$696,177,255,255,255$697,177,255,255,255$698,177,255,255,255$699,177,255,255,255$700,177,255,255,255$701,177,255,255,255$703,177,0,0,0$607,178,0,0,0$608,178,0,0,0$610,178,255,255,255$611,178,255,255,255$612,178,255,255,255$613,178,255,255,255$614,178,255,255,255$615,178,255,255,255$616,178,255,255,255$617,178,255,255,255$618,178,255,255,255$619,178,255,255,255$620,178,255,255,255$621,178,255,255,255$622,178,255,255,255$623,178,255,255,255$624,178,255,255,255$625,178,255,255,255$626,178,255,255,255$627,178,255,255,255$628,178,255,255,255$629,178,255,255,255$631,178,0,0,0$632,178,0,0,0$633,178,0,0,0$634,178,0,0,0$635,178,255,255,255$636,178,255,255,255$637,178,255,255,255$639,178,0,0,0$640,178,0,0,0$642,178,255,255,255$643,178,255,255,255$644,178,255,255,255$645,178,255,255,255$646,178,255,255,255$647,178,255,255,255$648,178,255,255,255$649,178,255,255,255$650,178,255,255,255$651,178,255,255,255$652,178,255,255,255$653,178,255,255,255$654,178,255,255,255$655,178,0,0,0$656,178,0,0,0$658,178,255,255,255$659,178,255,255,255$660,178,255,255,255$661,178,255,255,255$662,178,255,255,255$663,178,255,255,255$664,178,255,255,255$665,178,255,255,255$666,178,255,255,255$667,178,255,255,255$668,178,255,255,255$669,178,255,255,255$670,178,255,255,255$671,178,255,255,255$672,178,255,255,255$673,178,255,255,255$674,178,255,255,255$675,178,255,255,255$676,178,255,255,255$677,178,255,255,255$679,178,0,0,0$680,178,0,0,0$682,178,255,255,255$683,178,255,255,255$684,178,255,255,255$685,178,255,255,255$686,178,255,255,255$687,178,255,255,255$688,178,255,255,255$689,178,255,255,255$690,178,255,255,255$691,178,255,255,255$692,178,255,255,255$693,178,255,255,255$694,178,255,255,255$695,178,255,255,255$696,178,255,255,255$697,178,255,255,255$698,178,255,255,255$699,178,255,255,255$700,178,255,255,255$701,178,255,255,255$703,178,0,0,0$607,179,0,0,0$608,179,0,0,0$613,179,255,255,255$614,179,255,255,255$615,179,255,255,255$616,179,255,255,255$617,179,255,255,255$618,179,255,255,255$630,179,0,0,0$631,179,0,0,0$632,179,0,0,0$633,179,0,0,0$635,179,255,255,255$636,179,255,255,255$637,179,255,255,255$638,179,0,0,0$639,179,0,0,0$640,179,0,0,0$642,179,255,255,255$643,179,255,255,255$644,179,255,255,255$645,179,255,255,255$646,179,255,255,255$647,179,255,255,255$648,179,255,255,255$649,179,255,255,255$650,179,255,255,255$651,179,255,255,255$652,179,255,255,255$653,179,255,255,255$654,179,255,255,255$655,179,0,0,0$656,179,0,0,0$658,179,255,255,255$659,179,255,255,255$660,179,255,255,255$661,179,255,255,255$662,179,255,255,255$663,179,255,255,255$664,179,255,255,255$665,179,255,255,255$666,179,255,255,255$667,179,255,255,255$668,179,255,255,255$669,179,255,255,255$670,179,255,255,255$671,179,255,255,255$672,179,255,255,255$673,179,255,255,255$674,179,255,255,255$675,179,255,255,255$676,179,255,255,255$677,179,255,255,255$679,179,0,0,0$680,179,0,0,0$682,179,255,255,255$683,179,255,255,255$684,179,255,255,255$685,179,255,255,255$686,179,255,255,255$687,179,255,255,255$688,179,255,255,255$689,179,255,255,255$690,179,255,255,255$691,179,255,255,255$692,179,255,255,255$693,179,255,255,255$694,179,255,255,255$695,179,255,255,255$696,179,255,255,255$697,179,255,255,255$698,179,255,255,255$699,179,255,255,255$700,179,255,255,255$701,179,255,255,255$703,179,0,0,0$607,180,0,0,0$608,180,0,0,0$609,180,0,0,0$610,180,0,0,0$613,180,255,255,255$614,180,255,255,255$615,180,255,255,255$616,180,255,255,255$619,180,0,0,0$620,180,0,0,0$621,180,0,0,0$622,180,0,0,0$623,180,0,0,0$624,180,0,0,0$625,180,0,0,0$626,180,0,0,0$627,180,0,0,0$628,180,0,0,0$629,180,0,0,0$630,180,0,0,0$631,180,0,0,0$632,180,0,0,0$633,180,0,0,0$634,180,255,255,255$635,180,255,255,255$636,180,255,255,255$642,180,0,0,0$644,180,255,255,255$645,180,255,255,255$646,180,255,255,255$647,180,0,0,0$648,180,0,0,0$649,180,0,0,0$650,180,0,0,0$651,180,0,0,0$652,180,0,0,0$653,180,0,0,0$654,180,0,0,0$655,180,0,0,0$656,180,0,0,0$657,180,0,0,0$658,180,0,0,0$659,180,0,0,0$660,180,255,255,255$661,180,255,255,255$662,180,255,255,255$663,180,255,255,255$664,180,0,0,0$665,180,0,0,0$666,180,0,0,0$667,180,0,0,0$668,180,0,0,0$669,180,0,0,0$670,180,0,0,0$671,180,0,0,0$673,180,255,255,255$674,180,255,255,255$675,180,255,255,255$676,180,0,0,0$677,180,0,0,0$678,180,0,0,0$679,180,0,0,0$680,180,0,0,0$682,180,255,255,255$683,180,255,255,255$685,180,0,0,0$686,180,0,0,0$687,180,0,0,0$688,180,0,0,0$689,180,0,0,0$691,180,255,255,255$692,180,255,255,255$694,180,0,0,0$695,180,0,0,0$696,180,0,0,0$697,180,0,0,0$698,180,0,0,0$700,180,255,255,255$701,180,255,255,255$703,180,0,0,0$607,181,0,0,0$608,181,0,0,0$611,181,255,255,255$612,181,255,255,255$613,181,255,255,255$614,181,255,255,255$615,181,255,255,255$617,181,0,0,0$618,181,0,0,0$619,181,0,0,0$620,181,0,0,0$621,181,0,0,0$623,181,255,255,255$624,181,255,255,255$625,181,255,255,255$626,181,255,255,255$627,181,255,255,255$629,181,0,0,0$630,181,0,0,0$631,181,0,0,0$632,181,0,0,0$634,181,255,255,255$635,181,255,255,255$636,181,255,255,255$637,181,0,0,0$638,181,255,255,255$639,181,255,255,255$640,181,255,255,255$642,181,0,0,0$643,181,255,255,255$644,181,255,255,255$645,181,255,255,255$647,181,0,0,0$648,181,0,0,0$649,181,0,0,0$650,181,0,0,0$651,181,0,0,0$652,181,255,255,255$653,181,255,255,255$654,181,255,255,255$655,181,0,0,0$656,181,0,0,0$657,181,0,0,0$658,181,0,0,0$659,181,0,0,0$664,181,0,0,0$665,181,0,0,0$666,181,0,0,0$667,181,0,0,0$668,181,0,0,0$669,181,0,0,0$670,181,0,0,0$671,181,0,0,0$679,181,0,0,0$680,181,0,0,0$682,181,255,255,255$683,181,255,255,255$685,181,0,0,0$686,181,0,0,0$687,181,0,0,0$688,181,0,0,0$689,181,0,0,0$691,181,255,255,255$692,181,255,255,255$694,181,0,0,0$695,181,0,0,0$696,181,0,0,0$697,181,0,0,0$698,181,0,0,0$700,181,255,255,255$701,181,255,255,255$703,181,0,0,0$607,182,0,0,0$608,182,0,0,0$610,182,255,255,255$611,182,255,255,255$612,182,255,255,255$613,182,255,255,255$614,182,255,255,255$615,182,255,255,255$616,182,255,255,255$617,182,255,255,255$618,182,255,255,255$619,182,255,255,255$620,182,255,255,255$621,182,255,255,255$622,182,255,255,255$623,182,255,255,255$624,182,255,255,255$625,182,255,255,255$627,182,0,0,0$628,182,0,0,0$629,182,0,0,0$630,182,0,0,0$631,182,0,0,0$632,182,0,0,0$633,182,255,255,255$634,182,255,255,255$635,182,255,255,255$636,182,255,255,255$637,182,255,255,255$638,182,255,255,255$639,182,255,255,255$640,182,255,255,255$641,182,0,0,0$643,182,255,255,255$644,182,255,255,255$645,182,255,255,255$646,182,0,0,0$647,182,0,0,0$648,182,0,0,0$649,182,0,0,0$650,182,0,0,0$651,182,0,0,0$652,182,255,255,255$653,182,255,255,255$654,182,255,255,255$655,182,0,0,0$656,182,0,0,0$675,182,255,255,255$676,182,255,255,255$677,182,255,255,255$679,182,0,0,0$680,182,0,0,0$682,182,255,255,255$683,182,255,255,255$684,182,255,255,255$690,182,255,255,255$691,182,255,255,255$692,182,255,255,255$693,182,255,255,255$699,182,255,255,255$700,182,255,255,255$701,182,255,255,255$703,182,0,0,0$607,183,0,0,0$608,183,0,0,0$610,183,255,255,255$611,183,255,255,255$612,183,255,255,255$613,183,255,255,255$614,183,255,255,255$615,183,255,255,255$616,183,255,255,255$617,183,255,255,255$618,183,255,255,255$619,183,255,255,255$620,183,255,255,255$621,183,255,255,255$622,183,255,255,255$623,183,255,255,255$625,183,0,0,0$626,183,0,0,0$627,183,0,0,0$628,183,0,0,0$629,183,0,0,0$630,183,0,0,0$631,183,0,0,0$632,183,0,0,0$633,183,255,255,255$634,183,255,255,255$635,183,255,255,255$636,183,255,255,255$637,183,255,255,255$638,183,255,255,255$639,183,255,255,255$641,183,0,0,0$642,183,255,255,255$643,183,255,255,255$644,183,255,255,255$646,183,0,0,0$647,183,0,0,0$648,183,0,0,0$649,183,0,0,0$650,183,0,0,0$651,183,0,0,0$652,183,255,255,255$653,183,255,255,255$654,183,255,255,255$655,183,0,0,0$656,183,0,0,0$658,183,255,255,255$659,183,255,255,255$660,183,255,255,255$661,183,255,255,255$662,183,255,255,255$663,183,255,255,255$664,183,255,255,255$665,183,255,255,255$666,183,255,255,255$667,183,255,255,255$668,183,255,255,255$669,183,255,255,255$670,183,255,255,255$671,183,255,255,255$672,183,255,255,255$673,183,255,255,255$674,183,255,255,255$675,183,255,255,255$676,183,255,255,255$677,183,255,255,255$679,183,0,0,0$680,183,0,0,0$682,183,255,255,255$683,183,255,255,255$684,183,255,255,255$685,183,255,255,255$686,183,255,255,255$687,183,255,255,255$688,183,255,255,255$689,183,255,255,255$690,183,255,255,255$691,183,255,255,255$692,183,255,255,255$693,183,255,255,255$694,183,255,255,255$695,183,255,255,255$696,183,255,255,255$697,183,255,255,255$698,183,255,255,255$699,183,255,255,255$700,183,255,255,255$701,183,255,255,255$703,183,0,0,0$607,184,0,0,0$608,184,0,0,0$616,184,255,255,255$617,184,255,255,255$618,184,255,255,255$619,184,255,255,255$620,184,255,255,255$621,184,255,255,255$623,184,0,0,0$624,184,0,0,0$625,184,0,0,0$626,184,0,0,0$628,184,255,255,255$629,184,255,255,255$631,184,0,0,0$632,184,0,0,0$633,184,255,255,255$634,184,255,255,255$635,184,255,255,255$636,184,255,255,255$637,184,255,255,255$638,184,255,255,255$639,184,255,255,255$640,184,0,0,0$642,184,255,255,255$643,184,255,255,255$644,184,255,255,255$645,184,255,255,255$646,184,255,255,255$647,184,255,255,255$648,184,255,255,255$649,184,255,255,255$650,184,255,255,255$651,184,255,255,255$652,184,255,255,255$653,184,255,255,255$654,184,255,255,255$655,184,0,0,0$656,184,0,0,0$658,184,255,255,255$659,184,255,255,255$660,184,255,255,255$661,184,255,255,255$662,184,255,255,255$663,184,255,255,255$664,184,255,255,255$665,184,255,255,255$666,184,255,255,255$667,184,255,255,255$668,184,255,255,255$669,184,255,255,255$670,184,255,255,255$671,184,255,255,255$672,184,255,255,255$673,184,255,255,255$674,184,255,255,255$675,184,255,255,255$676,184,255,255,255$677,184,255,255,255$678,184,0,0,0$679,184,0,0,0$680,184,0,0,0$682,184,255,255,255$683,184,255,255,255$684,184,255,255,255$685,184,255,255,255$686,184,255,255,255$687,184,255,255,255$688,184,255,255,255$689,184,255,255,255$690,184,255,255,255$691,184,255,255,255$692,184,255,255,255$693,184,255,255,255$694,184,255,255,255$695,184,255,255,255$696,184,255,255,255$697,184,255,255,255$698,184,255,255,255$699,184,255,255,255$700,184,255,255,255$701,184,255,255,255$703,184,0,0,0$607,185,0,0,0$608,185,0,0,0$609,185,0,0,0$610,185,0,0,0$611,185,0,0,0$612,185,0,0,0$614,185,255,255,255$615,185,255,255,255$616,185,255,255,255$617,185,255,255,255$618,185,255,255,255$619,185,255,255,255$621,185,0,0,0$622,185,0,0,0$623,185,0,0,0$624,185,0,0,0$625,185,0,0,0$626,185,0,0,0$628,185,255,255,255$629,185,255,255,255$631,185,0,0,0$632,185,0,0,0$636,185,255,255,255$637,185,255,255,255$638,185,255,255,255$640,185,0,0,0$642,185,255,255,255$643,185,255,255,255$644,185,255,255,255$645,185,255,255,255$646,185,255,255,255$647,185,255,255,255$648,185,255,255,255$649,185,255,255,255$650,185,255,255,255$651,185,255,255,255$652,185,255,255,255$653,185,255,255,255$654,185,255,255,255$655,185,0,0,0$656,185,0,0,0$657,185,0,0,0$658,185,0,0,0$659,185,0,0,0$660,185,255,255,255$661,185,255,255,255$662,185,255,255,255$663,185,255,255,255$665,185,255,255,255$669,185,0,0,0$670,185,0,0,0$671,185,0,0,0$672,185,255,255,255$673,185,255,255,255$674,185,255,255,255$676,185,0,0,0$677,185,0,0,0$678,185,0,0,0$679,185,0,0,0$680,185,0,0,0$682,185,255,255,255$683,185,255,255,255$684,185,255,255,255$690,185,255,255,255$691,185,255,255,255$692,185,255,255,255$693,185,255,255,255$699,185,255,255,255$700,185,255,255,255$701,185,255,255,255$703,185,0,0,0$607,186,0,0,0$608,186,0,0,0$609,186,0,0,0$612,186,255,255,255$613,186,255,255,255$614,186,255,255,255$615,186,255,255,255$616,186,255,255,255$617,186,255,255,255$620,186,0,0,0$621,186,0,0,0$622,186,0,0,0$623,186,0,0,0$624,186,0,0,0$625,186,0,0,0$627,186,255,255,255$628,186,255,255,255$629,186,255,255,255$631,186,0,0,0$632,186,0,0,0$633,186,0,0,0$634,186,0,0,0$635,186,255,255,255$636,186,255,255,255$637,186,255,255,255$639,186,0,0,0$640,186,0,0,0$642,186,255,255,255$643,186,255,255,255$644,186,255,255,255$645,186,255,255,255$646,186,255,255,255$647,186,255,255,255$648,186,255,255,255$649,186,255,255,255$650,186,255,255,255$651,186,255,255,255$652,186,255,255,255$653,186,255,255,255$655,186,0,0,0$656,186,0,0,0$659,186,255,255,255$660,186,255,255,255$661,186,255,255,255$662,186,255,255,255$664,186,0,0,0$666,186,255,255,255$667,186,255,255,255$668,186,255,255,255$669,186,255,255,255$673,186,255,255,255$674,186,255,255,255$675,186,255,255,255$676,186,255,255,255$679,186,0,0,0$680,186,0,0,0$682,186,255,255,255$683,186,255,255,255$685,186,0,0,0$686,186,0,0,0$687,186,0,0,0$688,186,0,0,0$689,186,0,0,0$691,186,255,255,255$692,186,255,255,255$694,186,0,0,0$695,186,0,0,0$696,186,0,0,0$697,186,0,0,0$698,186,0,0,0$700,186,255,255,255$701,186,255,255,255$703,186,0,0,0$607,187,0,0,0$608,187,0,0,0$610,187,255,255,255$611,187,255,255,255$612,187,255,255,255$613,187,255,255,255$614,187,255,255,255$615,187,255,255,255$616,187,255,255,255$617,187,255,255,255$618,187,255,255,255$619,187,255,255,255$620,187,255,255,255$621,187,255,255,255$622,187,255,255,255$623,187,255,255,255$624,187,255,255,255$625,187,255,255,255$626,187,255,255,255$627,187,255,255,255$628,187,255,255,255$629,187,255,255,255$631,187,0,0,0$632,187,0,0,0$633,187,0,0,0$635,187,255,255,255$636,187,255,255,255$637,187,255,255,255$638,187,0,0,0$639,187,0,0,0$640,187,0,0,0$641,187,0,0,0$642,187,0,0,0$643,187,0,0,0$648,187,0,0,0$649,187,255,255,255$650,187,255,255,255$651,187,255,255,255$652,187,0,0,0$653,187,0,0,0$654,187,0,0,0$655,187,0,0,0$656,187,0,0,0$657,187,255,255,255$658,187,255,255,255$659,187,255,255,255$660,187,255,255,255$661,187,255,255,255$663,187,0,0,0$664,187,0,0,0$665,187,0,0,0$666,187,255,255,255$667,187,255,255,255$668,187,255,255,255$669,187,255,255,255$670,187,255,255,255$672,187,0,0,0$673,187,255,255,255$674,187,255,255,255$675,187,255,255,255$676,187,255,255,255$677,187,255,255,255$679,187,0,0,0$680,187,0,0,0$682,187,255,255,255$683,187,255,255,255$685,187,0,0,0$686,187,0,0,0$687,187,0,0,0$688,187,0,0,0$689,187,0,0,0$691,187,255,255,255$692,187,255,255,255$694,187,0,0,0$695,187,0,0,0$696,187,0,0,0$697,187,0,0,0$698,187,0,0,0$699,187,255,255,255$700,187,255,255,255$701,187,255,255,255$703,187,0,0,0$607,188,0,0,0$608,188,0,0,0$610,188,255,255,255$611,188,255,255,255$612,188,255,255,255$613,188,255,255,255$614,188,255,255,255$615,188,255,255,255$616,188,255,255,255$617,188,255,255,255$618,188,255,255,255$619,188,255,255,255$620,188,255,255,255$621,188,255,255,255$622,188,255,255,255$623,188,255,255,255$624,188,255,255,255$625,188,255,255,255$626,188,255,255,255$627,188,255,255,255$628,188,255,255,255$629,188,255,255,255$631,188,0,0,0$632,188,0,0,0$634,188,255,255,255$635,188,255,255,255$636,188,255,255,255$638,188,0,0,0$639,188,0,0,0$640,188,0,0,0$641,188,0,0,0$642,188,0,0,0$643,188,0,0,0$644,188,255,255,255$645,188,255,255,255$646,188,255,255,255$648,188,0,0,0$649,188,255,255,255$650,188,255,255,255$651,188,255,255,255$652,188,0,0,0$653,188,0,0,0$654,188,0,0,0$655,188,0,0,0$656,188,0,0,0$658,188,255,255,255$659,188,255,255,255$660,188,255,255,255$662,188,0,0,0$663,188,0,0,0$664,188,0,0,0$665,188,0,0,0$668,188,255,255,255$669,188,255,255,255$670,188,255,255,255$672,188,0,0,0$673,188,0,0,0$675,188,255,255,255$676,188,255,255,255$677,188,255,255,255$679,188,0,0,0$680,188,0,0,0$682,188,255,255,255$683,188,255,255,255$684,188,255,255,255$685,188,255,255,255$686,188,255,255,255$687,188,255,255,255$688,188,255,255,255$689,188,255,255,255$690,188,255,255,255$691,188,255,255,255$692,188,255,255,255$693,188,255,255,255$694,188,255,255,255$695,188,255,255,255$696,188,255,255,255$697,188,255,255,255$698,188,255,255,255$699,188,255,255,255$700,188,255,255,255$701,188,255,255,255$703,188,0,0,0$607,189,0,0,0$608,189,0,0,0$618,189,255,255,255$619,189,255,255,255$620,189,255,255,255$621,189,255,255,255$630,189,0,0,0$631,189,0,0,0$632,189,0,0,0$633,189,255,255,255$634,189,255,255,255$635,189,255,255,255$636,189,255,255,255$642,189,0,0,0$643,189,0,0,0$644,189,255,255,255$645,189,255,255,255$646,189,255,255,255$648,189,0,0,0$649,189,255,255,255$650,189,255,255,255$651,189,255,255,255$652,189,0,0,0$653,189,0,0,0$654,189,0,0,0$655,189,0,0,0$656,189,0,0,0$657,189,0,0,0$658,189,0,0,0$659,189,0,0,0$660,189,0,0,0$661,189,0,0,0$662,189,0,0,0$663,189,0,0,0$664,189,0,0,0$665,189,0,0,0$667,189,255,255,255$668,189,255,255,255$670,189,0,0,0$671,189,0,0,0$672,189,0,0,0$673,189,0,0,0$674,189,0,0,0$675,189,0,0,0$676,189,0,0,0$677,189,0,0,0$678,189,0,0,0$679,189,0,0,0$680,189,0,0,0$682,189,255,255,255$683,189,255,255,255$684,189,255,255,255$685,189,255,255,255$686,189,255,255,255$687,189,255,255,255$688,189,255,255,255$689,189,255,255,255$690,189,255,255,255$691,189,255,255,255$692,189,255,255,255$693,189,255,255,255$694,189,255,255,255$695,189,255,255,255$696,189,255,255,255$697,189,255,255,255$698,189,255,255,255$699,189,255,255,255$700,189,255,255,255$701,189,255,255,255$703,189,0,0,0$607,190,0,0,0$608,190,0,0,0$609,190,0,0,0$610,190,0,0,0$611,190,0,0,0$612,190,0,0,0$617,190,0,0,0$618,190,255,255,255$619,190,255,255,255$620,190,255,255,255$622,190,0,0,0$627,190,0,0,0$628,190,0,0,0$629,190,0,0,0$630,190,0,0,0$631,190,0,0,0$632,190,0,0,0$633,190,255,255,255$634,190,255,255,255$635,190,255,255,255$636,190,255,255,255$637,190,255,255,255$638,190,255,255,255$639,190,255,255,255$640,190,255,255,255$642,190,0,0,0$643,190,0,0,0$644,190,255,255,255$645,190,255,255,255$646,190,255,255,255$647,190,0,0,0$648,190,0,0,0$649,190,255,255,255$650,190,255,255,255$651,190,255,255,255$652,190,0,0,0$653,190,0,0,0$654,190,0,0,0$655,190,0,0,0$656,190,0,0,0$658,190,255,255,255$659,190,255,255,255$660,190,255,255,255$661,190,255,255,255$662,190,255,255,255$663,190,255,255,255$664,190,255,255,255$665,190,255,255,255$666,190,255,255,255$667,190,255,255,255$668,190,255,255,255$669,190,255,255,255$670,190,255,255,255$671,190,255,255,255$672,190,255,255,255$673,190,255,255,255$674,190,255,255,255$675,190,255,255,255$676,190,255,255,255$677,190,255,255,255$679,190,0,0,0$680,190,0,0,0$690,190,255,255,255$691,190,255,255,255$692,190,255,255,255$693,190,255,255,255$702,190,0,0,0$703,190,0,0,0$608,191,0,0,0$609,191,0,0,0$610,191,0,0,0$611,191,0,0,0$612,191,0,0,0$613,191,255,255,255$614,191,255,255,255$615,191,255,255,255$617,191,0,0,0$618,191,255,255,255$619,191,255,255,255$620,191,255,255,255$622,191,0,0,0$624,191,255,255,255$625,191,255,255,255$626,191,255,255,255$627,191,0,0,0$628,191,0,0,0$629,191,0,0,0$630,191,0,0,0$631,191,0,0,0$632,191,0,0,0$633,191,255,255,255$634,191,255,255,255$635,191,255,255,255$636,191,255,255,255$637,191,255,255,255$638,191,255,255,255$639,191,255,255,255$640,191,255,255,255$642,191,0,0,0$644,191,255,255,255$645,191,255,255,255$646,191,255,255,255$647,191,0,0,0$648,191,0,0,0$649,191,255,255,255$650,191,255,255,255$651,191,255,255,255$652,191,0,0,0$653,191,0,0,0$654,191,0,0,0$655,191,0,0,0$656,191,0,0,0$658,191,255,255,255$659,191,255,255,255$660,191,255,255,255$661,191,255,255,255$662,191,255,255,255$663,191,255,255,255$664,191,255,255,255$665,191,255,255,255$666,191,255,255,255$667,191,255,255,255$668,191,255,255,255$669,191,255,255,255$670,191,255,255,255$671,191,255,255,255$672,191,255,255,255$673,191,255,255,255$674,191,255,255,255$675,191,255,255,255$676,191,255,255,255$677,191,255,255,255$679,191,0,0,0$680,191,0,0,0$681,191,0,0,0$682,191,0,0,0$683,191,0,0,0$684,191,0,0,0$685,191,0,0,0$686,191,0,0,0$687,191,0,0,0$688,191,0,0,0$689,191,0,0,0$691,191,255,255,255$692,191,255,255,255$694,191,0,0,0$695,191,0,0,0$696,191,0,0,0$697,191,0,0,0$698,191,0,0,0$699,191,0,0,0$700,191,0,0,0$701,191,0,0,0$702,191,0,0,0$703,191,0,0,0$609,192,0,0,0$610,192,0,0,0$611,192,0,0,0$613,192,255,255,255$614,192,255,255,255$615,192,255,255,255$617,192,0,0,0$618,192,255,255,255$619,192,255,255,255$620,192,255,255,255$622,192,0,0,0$624,192,255,255,255$625,192,255,255,255$626,192,255,255,255$628,192,0,0,0$629,192,0,0,0$631,192,0,0,0$632,192,0,0,0$642,192,0,0,0$644,192,255,255,255$645,192,255,255,255$647,192,0,0,0$648,192,0,0,0$649,192,255,255,255$650,192,255,255,255$651,192,255,255,255$652,192,0,0,0$653,192,0,0,0$654,192,0,0,0$655,192,0,0,0$656,192,0,0,0$667,192,255,255,255$668,192,255,255,255$669,192,255,255,255$679,192,0,0,0$680,192,0,0,0$691,192,255,255,255$692,192,255,255,255$703,192,0,0,0$608,193,0,0,0$609,193,0,0,0$610,193,0,0,0$611,193,0,0,0$613,193,255,255,255$614,193,255,255,255$616,193,0,0,0$617,193,0,0,0$619,193,255,255,255$620,193,255,255,255$622,193,0,0,0$623,193,0,0,0$624,193,255,255,255$625,193,255,255,255$626,193,255,255,255$628,193,0,0,0$629,193,0,0,0$630,193,0,0,0$631,193,0,0,0$632,193,0,0,0$633,193,0,0,0$634,193,0,0,0$635,193,0,0,0$636,193,0,0,0$637,193,0,0,0$638,193,0,0,0$639,193,0,0,0$640,193,0,0,0$641,193,0,0,0$642,193,0,0,0$644,193,255,255,255$645,193,255,255,255$647,193,0,0,0$648,193,0,0,0$649,193,255,255,255$650,193,255,255,255$651,193,255,255,255$652,193,0,0,0$653,193,0,0,0$654,193,0,0,0$655,193,0,0,0$656,193,0,0,0$657,193,0,0,0$658,193,0,0,0$659,193,0,0,0$660,193,0,0,0$662,193,255,255,255$663,193,255,255,255$664,193,255,255,255$667,193,255,255,255$668,193,255,255,255$670,193,0,0,0$671,193,255,255,255$672,193,255,255,255$673,193,255,255,255$674,193,255,255,255$675,193,0,0,0$676,193,0,0,0$677,193,0,0,0$678,193,0,0,0$679,193,0,0,0$680,193,0,0,0$682,193,255,255,255$683,193,255,255,255$684,193,255,255,255$685,193,255,255,255$686,193,255,255,255$687,193,255,255,255$688,193,255,255,255$689,193,255,255,255$690,193,255,255,255$691,193,255,255,255$692,193,255,255,255$693,193,255,255,255$694,193,255,255,255$695,193,255,255,255$696,193,255,255,255$697,193,255,255,255$698,193,255,255,255$699,193,255,255,255$700,193,255,255,255$701,193,255,255,255$703,193,0,0,0$607,194,0,0,0$608,194,0,0,0$613,194,255,255,255$614,194,255,255,255$616,194,0,0,0$617,194,0,0,0$619,194,255,255,255$620,194,255,255,255$622,194,0,0,0$623,194,0,0,0$625,194,255,255,255$626,194,255,255,255$628,194,0,0,0$629,194,0,0,0$630,194,0,0,0$631,194,0,0,0$632,194,0,0,0$633,194,0,0,0$634,194,0,0,0$635,194,0,0,0$636,194,0,0,0$637,194,0,0,0$638,194,0,0,0$639,194,0,0,0$640,194,0,0,0$641,194,0,0,0$644,194,255,255,255$645,194,255,255,255$647,194,0,0,0$648,194,0,0,0$649,194,255,255,255$651,194,255,255,255$655,194,0,0,0$656,194,0,0,0$657,194,0,0,0$658,194,0,0,0$659,194,0,0,0$662,194,255,255,255$663,194,255,255,255$665,194,0,0,0$667,194,255,255,255$668,194,255,255,255$670,194,0,0,0$672,194,255,255,255$674,194,255,255,255$676,194,0,0,0$677,194,0,0,0$678,194,0,0,0$679,194,0,0,0$680,194,0,0,0$682,194,255,255,255$683,194,255,255,255$684,194,255,255,255$685,194,255,255,255$686,194,255,255,255$687,194,255,255,255$688,194,255,255,255$689,194,255,255,255$690,194,255,255,255$693,194,255,255,255$694,194,255,255,255$695,194,255,255,255$696,194,255,255,255$697,194,255,255,255$698,194,255,255,255$699,194,255,255,255$700,194,255,255,255$701,194,255,255,255$703,194,0,0,0$607,195,0,0,0$608,195,0,0,0$610,195,255,255,255$614,195,255,255,255$616,195,0,0,0$617,195,0,0,0$622,195,0,0,0$623,195,0,0,0$629,195,255,255,255$631,195,0,0,0$632,195,0,0,0$633,195,255,255,255$634,195,255,255,255$635,195,255,255,255$636,195,255,255,255$637,195,255,255,255$638,195,255,255,255$639,195,255,255,255$640,195,255,255,255$642,195,255,255,255$645,195,255,255,255$647,195,0,0,0$648,195,0,0,0$649,195,255,255,255$654,195,255,255,255$655,195,0,0,0$656,195,0,0,0$665,195,0,0,0$670,195,0,0,0$671,195,0,0,0$679,195,0,0,0$680,195,0,0,0$703,195,0,0,0$607,196,0,0,0$608,196,0,0,0$615,196,0,0,0$616,196,0,0,0$617,196,0,0,0$622,196,0,0,0$623,196,0,0,0$624,196,0,0,0$631,196,0,0,0$632,196,0,0,0$633,196,255,255,255$646,196,0,0,0$647,196,0,0,0$648,196,0,0,0$654,196,255,255,255$655,196,0,0,0$656,196,0,0,0$658,196,255,255,255$664,196,0,0,0$665,196,0,0,0$670,196,0,0,0$671,196,0,0,0$673,196,255,255,255$679,196,0,0,0$680,196,0,0,0$681,196,0,0,0$682,196,0,0,0$683,196,0,0,0$684,196,0,0,0$685,196,0,0,0$686,196,0,0,0$687,196,0,0,0$688,196,0,0,0$689,196,0,0,0$694,196,0,0,0$695,196,0,0,0$696,196,0,0,0$697,196,0,0,0$698,196,0,0,0$699,196,0,0,0$700,196,0,0,0$701,196,0,0,0$702,196,0,0,0$703,196,0,0,0$607,197,0,0,0$608,197,0,0,0$615,197,0,0,0$616,197,0,0,0$617,197,0,0,0$622,197,0,0,0$623,197,0,0,0$624,197,0,0,0$631,197,0,0,0$632,197,0,0,0$646,197,0,0,0$647,197,0,0,0$648,197,0,0,0$655,197,0,0,0$656,197,0,0,0$664,197,0,0,0$665,197,0,0,0$670,197,0,0,0$671,197,0,0,0$672,197,0,0,0$679,197,0,0,0$680,197,0,0,0$681,197,0,0,0$682,197,0,0,0$683,197,0,0,0$684,197,0,0,0$685,197,0,0,0$686,197,0,0,0$687,197,0,0,0$688,197,0,0,0$689,197,0,0,0$694,197,0,0,0$695,197,0,0,0$696,197,0,0,0$697,197,0,0,0$698,197,0,0,0$699,197,0,0,0$700,197,0,0,0$701,197,0,0,0$702,197,0,0,0$607,198,0,0,0$608,198,0,0,0$609,198,0,0,0$610,198,0,0,0$611,198,0,0,0$612,198,0,0,0$613,198,0,0,0$614,198,0,0,0$615,198,0,0,0$616,198,0,0,0$617,198,0,0,0$618,198,0,0,0$619,198,0,0,0$620,198,0,0,0$621,198,0,0,0$622,198,0,0,0$623,198,0,0,0$624,198,0,0,0$625,198,0,0,0$626,198,0,0,0$627,198,0,0,0$628,198,0,0,0$629,198,0,0,0$630,198,0,0,0$631,198,0,0,0$632,198,0,0,0$633,198,0,0,0$634,198,0,0,0$635,198,0,0,0$636,198,0,0,0$637,198,0,0,0$638,198,0,0,0$639,198,0,0,0$640,198,0,0,0$641,198,0,0,0$642,198,0,0,0$643,198,0,0,0$644,198,0,0,0$645,198,0,0,0$646,198,0,0,0$647,198,0,0,0$648,198,0,0,0$649,198,0,0,0$650,198,0,0,0$651,198,0,0,0$652,198,0,0,0$653,198,0,0,0$654,198,0,0,0$655,198,0,0,0$656,198,0,0,0$657,198,0,0,0$658,198,0,0,0$659,198,0,0,0$660,198,0,0,0$661,198,0,0,0$662,198,0,0,0$663,198,0,0,0$664,198,0,0,0$665,198,0,0,0$666,198,0,0,0$667,198,0,0,0$668,198,0,0,0$669,198,0,0,0$670,198,0,0,0$671,198,0,0,0$672,198,0,0,0$673,198,0,0,0$674,198,0,0,0$675,198,0,0,0$676,198,0,0,0$677,198,0,0,0$678,198,0,0,0$679,198,0,0,0$680,198,0,0,0$688,198,0,0,0$689,198,0,0,0$690,198,0,0,0$691,198,0,0,0$692,198,0,0,0$693,198,0,0,0$694,198,0,0,0$695,198,0,0,0$608,199,0,0,0$609,199,0,0,0$610,199,0,0,0$611,199,0,0,0$612,199,0,0,0$613,199,0,0,0$614,199,0,0,0$615,199,0,0,0$617,199,0,0,0$618,199,0,0,0$619,199,0,0,0$620,199,0,0,0$621,199,0,0,0$622,199,0,0,0$625,199,0,0,0$626,199,0,0,0$627,199,0,0,0$628,199,0,0,0$629,199,0,0,0$630,199,0,0,0$631,199,0,0,0$632,199,0,0,0$633,199,0,0,0$634,199,0,0,0$635,199,0,0,0$636,199,0,0,0$637,199,0,0,0$638,199,0,0,0$639,199,0,0,0$640,199,0,0,0$641,199,0,0,0$642,199,0,0,0$643,199,0,0,0$644,199,0,0,0$645,199,0,0,0$649,199,0,0,0$650,199,0,0,0$651,199,0,0,0$652,199,0,0,0$653,199,0,0,0$654,199,0,0,0$655,199,0,0,0$656,199,0,0,0$657,199,0,0,0$658,199,0,0,0$659,199,0,0,0$660,199,0,0,0$661,199,0,0,0$662,199,0,0,0$663,199,0,0,0$665,199,0,0,0$666,199,0,0,0$667,199,0,0,0$668,199,0,0,0$669,199,0,0,0$670,199,0,0,0$673,199,0,0,0$674,199,0,0,0$675,199,0,0,0$676,199,0,0,0$677,199,0,0,0$678,199,0,0,0$679,199,0,0,0$680,199,0,0,0$689,199,0,0,0$690,199,0,0,0$691,199,0,0,0$692,199,0,0,0$693,199,0,0,0$694,199,0,0,0$610,200,0,0,0$651,200,0,0,0$652,200,0,0,0$656,200,0,0,0$660,200,0,0,0$667,200,0,0,0$668,200,0,0,0$669,200,0,0,0$670,200,0,0,0$674,200,0,0,0$675,200,0,0,0$676,200,0,0,0$677,200,0,0,0$678,200,0,0,0$679,200,0,0,0$680,200,0,0,0$681,200,0,0,0$645,201,0,0,0$646,201,0,0,0$651,201,0,0,0$652,201,0,0,0$656,201,0,0,0$662,201,0,0,0$681,201,0,0,0$682,201,0,0,0$687,201,0,0,0$688,201,0,0,0$627,202,0,0,0$628,202,0,0,0$644,202,0,0,0$650,202,0,0,0$681,202,0,0,0$682,202,0,0,0");
        public static bool IsOpenSystemPanel(ZTRectangle gameRect)
        {
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
@@ -306,7 +344,7 @@
        }
        public static ColorArray ExitPanelOkButtonText = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "647,448,221,197,147$637,443,221,197,147$640,443,221,197,147$640,447,221,197,147$638,447,221,197,147$638,451,221,197,147$640,451,221,197,147$642,450,221,197,147$642,452,221,197,147$644,452,221,197,147$647,452,221,197,147$647,450,221,197,147$644,450,221,197,147$644,448,221,197,147$647,446,221,197,147$642,446,221,197,147$643,443,221,197,147$646,443,221,197,147$651,443,221,197,147$651,446,221,197,147$651,452,221,197,147$653,453,221,197,147$659,453,221,197,147$656,442,221,197,147");
        private static ColorArray ExitPanelOkButtonText = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "647,448,221,197,147$637,443,221,197,147$640,443,221,197,147$640,447,221,197,147$638,447,221,197,147$638,451,221,197,147$640,451,221,197,147$642,450,221,197,147$642,452,221,197,147$644,452,221,197,147$647,452,221,197,147$647,450,221,197,147$644,450,221,197,147$644,448,221,197,147$647,446,221,197,147$642,446,221,197,147$643,443,221,197,147$646,443,221,197,147$651,443,221,197,147$651,446,221,197,147$651,452,221,197,147$653,453,221,197,147$659,453,221,197,147$656,442,221,197,147");
        /// <summary>
        /// 查找退出时的确认按钮
        /// </summary>
@@ -323,7 +361,7 @@
        /// <summary>
        /// 个人面板右下角的金币文字
        /// </summary>
        public static ColorArray GoldText = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "957,616,230,200,155$957,609,230,200,155$967,609,230,200,155$962,605,230,200,155$962,609,230,200,155$962,612,230,200,155$966,612,230,200,155$958,612,230,200,155$967,616,230,200,155$970,615,230,200,155$974,616,230,200,155$977,615,230,200,155$978,615,230,200,155$978,609,230,200,155$974,609,230,200,155$974,606,230,200,155$969,606,230,200,155$979,605,230,200,155");
        private static ColorArray GoldText = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "957,616,230,200,155$957,609,230,200,155$967,609,230,200,155$962,605,230,200,155$962,609,230,200,155$962,612,230,200,155$966,612,230,200,155$958,612,230,200,155$967,616,230,200,155$970,615,230,200,155$974,616,230,200,155$977,615,230,200,155$978,615,230,200,155$978,609,230,200,155$974,609,230,200,155$974,606,230,200,155$969,606,230,200,155$979,605,230,200,155");
        public static bool GetGoldTextPosition(out ZTRectangle goldTextRect, ZTRectangle gameRect)
        {
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
@@ -335,11 +373,11 @@
        /// <summary>
        /// 已选中的武器文字
        /// </summary>
        public static ColorArray SelectedEquipmentText = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "711,333,255,255,184$722,336,255,255,184$722,334,255,255,184$722,332,255,255,184$722,329,255,255,184$722,327,255,255,184$721,327,255,255,184$720,327,255,255,184$719,327,255,255,184$708,327,255,255,184$708,331,255,255,184$708,333,255,255,184$712,333,255,255,184$713,333,255,255,184$715,333,255,255,184$715,337,255,255,184$714,337,255,255,184$709,337,255,255,184$708,337,255,255,184$708,336,255,255,184$708,335,255,255,184$707,335,255,255,184$710,328,255,255,184$712,328,255,255,184$714,328,255,255,184$712,327,255,255,184$712,330,255,255,184$712,331,255,255,184$713,331,255,255,184$711,331,255,255,184");
        private static ColorArray SelectedEquipmentText = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "711,333,255,255,184$722,336,255,255,184$722,334,255,255,184$722,332,255,255,184$722,329,255,255,184$722,327,255,255,184$721,327,255,255,184$720,327,255,255,184$719,327,255,255,184$708,327,255,255,184$708,331,255,255,184$708,333,255,255,184$712,333,255,255,184$713,333,255,255,184$715,333,255,255,184$715,337,255,255,184$714,337,255,255,184$709,337,255,255,184$708,337,255,255,184$708,336,255,255,184$708,335,255,255,184$707,335,255,255,184$710,328,255,255,184$712,328,255,255,184$714,328,255,255,184$712,327,255,255,184$712,330,255,255,184$712,331,255,255,184$713,331,255,255,184$711,331,255,255,184");
        /// <summary>
        /// 未选中的武器文字
        /// </summary>
        public static ColorArray UnSelectedEquipmentText = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "710,331,221,197,147$708,326,221,197,147$708,328,221,197,147$708,331,221,197,147$710,328,221,197,147$712,328,221,197,147$715,328,221,197,147$712,326,221,197,147$712,331,221,197,147$714,331,221,197,147$710,332,221,197,147$710,333,221,197,147$712,333,221,197,147$715,333,221,197,147$705,333,221,197,147$709,334,221,197,147$709,337,221,197,147$708,337,221,197,147$714,337,221,197,147$715,337,221,197,147$719,336,221,197,147$722,336,221,197,147$725,336,221,197,147$725,334,221,197,147$722,334,221,197,147$719,334,221,197,147$719,332,221,197,147$722,332,221,197,147$725,332,221,197,147$725,330,221,197,147$724,330,221,197,147$723,329,221,197,147$721,329,221,197,147$722,329,221,197,147$725,327,221,197,147$723,327,221,197,147$721,327,221,197,147$720,327,221,197,147");
        private static ColorArray UnSelectedEquipmentText = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "710,331,221,197,147$708,326,221,197,147$708,328,221,197,147$708,331,221,197,147$710,328,221,197,147$712,328,221,197,147$715,328,221,197,147$712,326,221,197,147$712,331,221,197,147$714,331,221,197,147$710,332,221,197,147$710,333,221,197,147$712,333,221,197,147$715,333,221,197,147$705,333,221,197,147$709,334,221,197,147$709,337,221,197,147$708,337,221,197,147$714,337,221,197,147$715,337,221,197,147$719,336,221,197,147$722,336,221,197,147$725,336,221,197,147$725,334,221,197,147$722,334,221,197,147$719,334,221,197,147$719,332,221,197,147$722,332,221,197,147$725,332,221,197,147$725,330,221,197,147$724,330,221,197,147$723,329,221,197,147$721,329,221,197,147$722,329,221,197,147$725,327,221,197,147$723,327,221,197,147$721,327,221,197,147$720,327,221,197,147");
        /// <summary>
        /// 获取装备的选择状态
@@ -426,9 +464,9 @@
        private static Hsv minRoleHsv = new Hsv(118, 250, 250);
        private static Hsv maxRoleHsv = new Hsv(122, 255, 255);
        //private static ZTSize roleBlockSize = new ZTSize(60, 22);
        private static ZTSize roleBlockSize = new ZTSize(40, 20);
        private static ZTSize rolePositionOffset = new ZTSize(60, 145);//查找到角色色块后,角色的水平和垂直偏移
        /// <summary>
        /// 查找主角
@@ -445,9 +483,7 @@
            }
            //主角位置
            ZTPoint rolePosition = gameRect.Start.Add(rects[0].Start.X + rolePositionOffset.Width, rects[0].Start.Y + rolePositionOffset.Height);
            return rolePosition;
            return  gameRect.Start.Add(rects[0].GetCenterPoint());
        }
@@ -735,6 +771,73 @@
        }
        /// <summary>
        /// 获取定位点
        /// </summary>
        /// <param name="image"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        public static ParametersPoint GetLocationPoint(Image<Rgb, byte> image, ZTRectangle gameRect,Dictionary<Int32,bool> withoutNumber)
        {
            if (withoutNumber.Count <= 0)
            {
                return GetLocationPoint(image, gameRect);
            }
            ZTRectangle rect = ZTRectangle.Empty;
            bool result = CVHelper.FindColorArray(out rect, image, LocationPoint, gameRect, (lpRect) => {
                ParametersPoint pp = GetLocationPointParameter(image, lpRect);
                if (withoutNumber.ContainsKey(pp.Parameter))
                {
                    return false;
                }
                return true;
            });
            if (result)
            {
                return GetLocationPointParameter(image, rect);
            }
            return ParametersPoint.Empty;
        }
        /// <summary>
        /// 获取定位点参数
        /// </summary>
        /// <param name="image"></param>
        /// <param name="rect"></param>
        /// <returns></returns>
        private static ParametersPoint GetLocationPointParameter(Image<Rgb,byte> image,ZTRectangle rect)
        {
            //获取定位标记,解析参数
            byte number = 0;
            bool bitValue = true;
            Int32 x = 0, y = 0;
            for (int bitIndex = 0; bitIndex <= 7; bitIndex++)
            {
                //获取图像中存值的坐标
                GetBitCoordinate(out x, out y, bitIndex);
                //解析并设置值
                if (!ParseBit(out bitValue, image, rect.Start.Add(x, y)))
                {
                    return ParametersPoint.Empty;
                }
                else
                {
                    number = SetBit(number, bitIndex, bitValue);
                }
            }
            return new ParametersPoint(rect.GetCenterPoint(), number);
        }
        /// <summary>
        /// 设置指定位
        /// </summary>
        /// <param name="number"></param>
@@ -923,6 +1026,7 @@
        }
        #endregion
        #region minimap
        /// <summary>
@@ -1033,5 +1137,29 @@
        }
        #endregion
        #region Monsters
        private static Hsv minMonsterHsv = new Hsv(165, 247, 175);
        private static Hsv maxMonsterHsv = new Hsv(173, 255, 230);
        private static ZTSize monsterBlockSize = new ZTSize(30, 30);
        /// <summary>
        /// 查找所有怪的位置
        /// </summary>
        /// <param name="image"></param>
        /// <returns></returns>
        public static Structs.ZTPoint[] FindMonster(Image<Hsv, byte> image, ZTRectangle gameRect)
        {
            List<ZTRectangle> rects = CVHelper.FindBlocks(image, minMonsterHsv, maxMonsterHsv, monsterBlockSize);
            Structs.ZTPoint[] monsterPoints = new Structs.ZTPoint[rects.Count];
            for (int i = 0; i < rects.Count; i++)
            {
                monsterPoints[i] = rects[i].GetCenterPoint().Add(gameRect.Start);
            }
            return monsterPoints;
        }
        #endregion
    }
}
src/RichCreator.Utility/CV/KaleteCVHelper.cs
@@ -15,11 +15,11 @@
        /// 卡勒特难度,1¬5级
        /// </summary>
        private static ColorArray[] KaleteNandu = new ColorArray[] {
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "835,221,0,88,149$821,221,255,255,255$822,221,255,255,255$834,221,0,88,149$861,221,143,0,119$862,221,143,0,119$874,221,149,0,17$875,221,149,0,17"),
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "848,221,88,0,149$821,221,88,149,0$822,221,88,149,0$834,221,255,255,255$835,221,255,255,255$849,221,88,0,149$861,221,143,0,119$862,221,143,0,119$874,221,149,0,17$875,221,149,0,17"),
            ColorArray.FromHsvFloatString(0.002f,0.002f,0.002f,"848,221,255,255,255$822,221,88,149,0$835,221,0,88,149$862,221,143,0,119$875,221,149,0,17"),
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "848,221,88,0,149$822,221,88,149,0$835,221,0,88,149$862,221,255,255,255$875,221,149,0,17"),
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "848,221,88,0,149$822,221,88,149,0$835,221,0,88,149$862,221,143,0,119$874,221,255,255,255")
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1579,344,102,0,170$1557,344,255,255,255$1567,344,0,102,170$1590,344,160,0,136$1600,344,170,0,17"),
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1579,344,102,0,170$1557,344,102,170,0$1568,344,255,255,255$1590,344,160,0,136$1601,344,170,0,17"),
            ColorArray.FromHsvFloatString(0.002f,0.002f,0.002f,"1579,344,255,255,255$1557,344,102,170,0$1568,344,0,102,170$1590,344,160,0,136$1601,344,170,0,17"),
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1568,344,0,102,170$1557,344,102,170,0$1579,344,102,0,170$1590,344,255,255,255$1601,344,170,0,17"),
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1590,344,160,0,136$1557,344,102,170,0$1568,344,0,102,170$1579,344,102,0,170$1601,344,255,255,255")
        };
@@ -33,7 +33,7 @@
        /// <returns></returns>
        public static bool GetChoiceKaleteNandu(out Int32 choiceNandu, Image<Rgb, byte> image, ZTRectangle gameRect)
        {
            ZTRectangle limit = new ZTRectangle(gameRect.Start.X + 780, gameRect.Start.Y + 191, gameRect.Start.X + 911, gameRect.Start.Y + 234);
            ZTRectangle limit = new ZTRectangle(gameRect.Start.X + 533, gameRect.Start.Y + 171, gameRect.Start.X + 607, gameRect.Start.Y + 193);
            ZTRectangle position = ZTRectangle.Empty;
            for (int i = 0; i < KaleteNandu.Length; i++)
            {
src/RichCreator.Utility/CV/LindongCVHelper.cs
@@ -19,170 +19,6 @@
    /// </summary>
    public class LindongCVHelper
    {
        private static Hsv minMonsterHsv = new Hsv(165, 247, 175);
        private static Hsv maxMonsterHsv = new Hsv(173, 255, 230);
        private static ZTSize monsterBlockSize = new ZTSize(30, 30);
        /// <summary>
        /// 查找所有怪的位置
        /// </summary>
        /// <param name="image"></param>
        /// <returns></returns>
        public static Structs.ZTPoint[] FindMonster(Image<Hsv, byte> image,ZTRectangle gameRect)
        {
            List<ZTRectangle> rects = CVHelper.FindBlocks(image, minMonsterHsv, maxMonsterHsv, monsterBlockSize);
            Structs.ZTPoint[] monsterPoints = new Structs.ZTPoint[rects.Count];
            for (int i = 0; i < rects.Count; i++)
            {
                monsterPoints[i] = rects[i].GetCenterPoint().Add(gameRect.Start);
            }
            return monsterPoints;
        }
        public static ZTSize minDoorBlockSize = new ZTSize(25, 25);//门的最小大小
        public static Hsv minUpDoorColor = new Hsv(17, 254, 254);
        public static Hsv maxUpDoorColor = new Hsv(19, 255, 255);
        public static Hsv minRightDoorColor = new Hsv(143, 254, 254);
        public static Hsv maxRightDoorColor = new Hsv(145, 255, 255);
        public static Hsv minBottomDoorColor = new Hsv(17, 254, 254);
        public static Hsv maxBottomDoorColor = new Hsv(19, 255, 255);
        public static Hsv minLeftDoorColor = new Hsv(107, 254, 254);
        public static Hsv maxLeftDoorColor = new Hsv(109, 255, 255);
        public static Hsv minRealBottomDoorColor = new Hsv(35, 254, 254);
        public static Hsv maxRealBottomDoorColor = new Hsv(37, 255, 255);
        /// <summary>
        /// 查找门
        /// </summary>
        /// <param name="directions"></param>
        /// <returns></returns>
        public static ZTPoint FindDoor(out Direction targetDirection, Image<Hsv, byte> image, Direction[] directions, ZTRectangle gameRect)
        {
            targetDirection = Direction.None;
            Int32 height = gameRect.End.Y - gameRect.Start.Y;
            Int32 width = gameRect.End.X - gameRect.Start.X;
            Int32 yHalf = height / 2;
            Int32 xHalf = width / 2;
            ZTRectangle limitRect = ZTRectangle.Empty;
            Hsv minDoorHsvColor = default(Hsv), maxDoorHsvColor = default(Hsv);
            for (int doorIndex = 0; doorIndex < directions.Length; doorIndex++)
            {
                targetDirection = directions[doorIndex];
                switch (targetDirection)
                {
                    case Direction.Up:
                        minDoorHsvColor = minUpDoorColor;
                        maxDoorHsvColor = maxUpDoorColor;
                        limitRect = new ZTRectangle(0, 0, width, yHalf);
                        break;
                    case Direction.Right:
                        minDoorHsvColor = minRightDoorColor;
                        maxDoorHsvColor = maxRightDoorColor;
                        limitRect = new ZTRectangle(xHalf, 0, width, height);
                        break;
                    case Direction.Bottom:
                        minDoorHsvColor = minBottomDoorColor;
                        maxDoorHsvColor = maxBottomDoorColor;
                        limitRect = new ZTRectangle(0, yHalf, width, height);
                        break;
                    case Direction.Left:
                        minDoorHsvColor = minLeftDoorColor;
                        maxDoorHsvColor = maxLeftDoorColor;
                        limitRect = new ZTRectangle(0, 0, xHalf, height);
                        break;
                }
                List<ZTRectangle> doors = CVHelper.FindBlocks(image, minDoorHsvColor, maxDoorHsvColor, minDoorBlockSize);
                if (doors.Count <= 0)
                {
                    continue;
                }
                Structs.ZTPoint doorPosition = Structs.ZTPoint.Empty;
                for (int i = 0; i < doors.Count; i++)
                {
                    doorPosition = new Structs.ZTPoint(doors[i].Start.X + (doors[i].End.X - doors[i].Start.X) / 2, doors[i].Start.Y + (doors[i].End.Y - doors[i].Start.Y) / 2);
                    if (doorPosition.X >= limitRect.Start.X &&
                        doorPosition.X <= limitRect.End.X &&
                        doorPosition.Y >= limitRect.Start.Y &&
                        doorPosition.Y <= limitRect.End.Y)
                    {
                        return doorPosition + gameRect.Start;
                    }
                }
            }
            return Structs.ZTPoint.Empty;
        }
        /// <summary>
        /// 地图右上角素喃文字
        /// </summary>
        public static ColorArray MapTopSunan = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1401,72,230,200,155$1381,69,230,200,155$1380,68,0,0,0$1385,68,0,0,0$1386,68,230,200,155$1386,67,0,0,0$1387,67,0,0,0$1387,68,0,0,0$1391,68,0,0,0$1391,69,230,200,155$1392,69,0,0,0$1393,69,230,200,155$1393,68,0,0,0$1396,69,0,0,0$1395,69,230,200,155$1397,69,230,200,155$1399,68,0,0,0$1401,68,0,0,0$1404,69,0,0,0$1404,72,0,0,0$1403,72,230,200,155$1402,72,0,0,0$1400,72,0,0,0$1399,72,230,200,155$1398,72,0,0,0$1397,72,230,200,155$1396,72,0,0,0$1395,72,230,200,155$1394,72,0,0,0$1393,72,230,200,155$1392,72,0,0,0$1381,79,0,0,0$1382,79,230,200,155$1383,79,0,0,0$1385,79,230,200,155$1387,79,0,0,0$1390,79,230,200,155$1391,79,0,0,0$1396,79,0,0,0$1397,79,230,200,155$1398,79,0,0,0$1397,80,0,0,0$1401,79,0,0,0$1402,79,230,200,155$1402,80,0,0,0$1403,80,0,0,0$1403,79,230,200,155$1404,79,0,0,0$1404,80,0,0,0");
        /// <summary>
        /// 是否进入素喃
        /// </summary>
        /// <param name="image"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        public static bool IsInSunan(ZTRectangle gameRect)
        {
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            ZTRectangle limit = new ZTRectangle(gameRect.End.X - 130, gameRect.Start.Y, gameRect.End.X, gameRect.Start.Y + 60);
            ZTRectangle position = ZTRectangle.Empty;
            return CVHelper.FindColorArray(out position, image, MapTopSunan, limit);
        }
        /// <summary>
        /// 地图右上角时空之门文字
        /// </summary>
        public static ColorArray MapTopShikongzhimen = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1187,48,230,200,155$1177,46,230,200,155$1180,46,230,200,155$1180,55,230,200,155$1177,55,230,200,155$1184,56,230,200,155$1186,56,230,200,155$1186,45,230,200,155$1189,48,230,200,155$1193,45,230,200,155$1196,48,230,200,155$1199,47,230,200,155$1199,48,230,200,155$1201,48,230,200,155$1209,48,230,200,155$1204,45,230,200,155$1212,45,230,200,155$1213,46,230,200,155$1215,45,230,200,155$1221,45,230,200,155$1221,56,230,200,155$1219,56,230,200,155$1212,56,230,200,155$1210,56,230,200,155$1205,56,230,200,155$1199,56,230,200,155$1189,56,230,200,155$1194,55,230,200,155");
        /// <summary>
        /// 是否进入时空之门
        /// </summary>
        /// <param name="image"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        public static bool IsInShikongzhimen(ZTRectangle gameRect)
        {
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            ZTRectangle limit = new ZTRectangle(gameRect.End.X - 210, gameRect.Start.Y, gameRect.End.X, gameRect.Start.Y + 60);
            ZTRectangle position = ZTRectangle.Empty;
            return CVHelper.FindColorArray(out position, image, MapTopShikongzhimen, limit);
        }
        /// <summary>
        /// 选择进那个副本界面的下方space区域
        /// </summary>
        public static ColorArray ChoiceTaskPage_0 = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "873,736,201,176,126$855,736,17,15,11$854,736,17,15,11$851,736,206,181,130$858,736,206,181,130$860,736,10,9,6$862,736,17,15,11$865,736,204,178,128$868,736,17,15,11$869,736,17,15,11$876,736,17,15,11$880,736,203,178,128$883,736,17,15,11$888,736,208,182,131$888,738,208,182,131$884,738,52,45,33$879,738,179,156,113$874,738,55,48,35$871,738,12,11,8$865,738,158,139,100$862,738,208,182,131$859,738,50,43,31$854,738,52,45,33$850,738,208,182,131$850,740,208,182,131$852,740,128,112,80$854,740,208,182,131$858,740,201,176,127$859,740,50,43,31$862,740,208,182,131$867,740,89,78,56$869,740,208,182,131$876,740,208,182,131$881,740,21,18,13$884,740,208,182,131$886,740,145,127,91$887,742,208,182,131$884,742,17,15,11$880,742,208,182,131$877,742,17,15,11$874,742,158,138,99$870,742,17,15,11$865,742,208,182,131$862,742,17,15,11$859,742,50,43,31$858,742,208,182,131$855,742,17,15,11$851,742,208,182,131");
        public static ColorArray ChoiceTaskPage_1 = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "889,793,119,104,75$872,788,208,182,131$935,786,203,177,128$939,793,208,182,131$868,795,208,182,131$879,792,208,182,131$889,793,119,104,75$916,796,17,15,11$916,796,17,15,11$916,796,17,15,11$916,796,17,15,11");
        /// <summary>
        /// 是否打开选择副本界面
        /// </summary>
        /// <param name="image"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        public static bool IsInChoiceTaskPage(Image<Rgb, byte> image, ZTRectangle gameRect)
        {
            ZTRectangle limit = new ZTRectangle(gameRect.Start.X + 600, gameRect.End.Y - 35, gameRect.Start.X + 800, gameRect.End.Y);
            ZTRectangle position = ZTRectangle.Empty;
            if (CVHelper.FindColorArray(out position, image, ChoiceTaskPage_0, gameRect))
            {
                return true;
            }
            return CVHelper.FindColorArray(out position, image, ChoiceTaskPage_1, gameRect);
        }
        /// <summary>
        /// 凛冬难度选择向右的箭头
        /// </summary>
@@ -223,11 +59,11 @@
        /// 凛冬难度,1¬5级
        /// </summary>
        private static ColorArray[] LindongNandu = new ColorArray[] {
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "591,625,157,0,17$537,625,255,255,255$551,625,0,93,157$564,625,93,0,157$577,625,150,0,126"),
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "577,625,150,0,126$537,625,93,157,0$551,625,255,255,255$564,625,93,0,157$590,625,157,0,17"),
            ColorArray.FromHsvFloatString(0.002f,0.002f,0.002f,"591,625,157,0,17$538,625,93,157,0$551,625,0,93,157$564,625,255,255,255$577,625,150,0,126"),
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "577,625,255,255,255$538,625,93,157,0$551,625,0,93,157$564,625,93,0,157$590,625,157,0,17"),
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "590,625,255,255,255$537,625,93,157,0$551,625,0,93,157$564,625,93,0,157$577,625,150,0,126")
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1391,650,102,0,170$1368,650,255,255,255$1380,650,0,102,170$1402,650,160,0,136$1413,650,170,0,17"),
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1391,650,102,0,170$1369,650,102,170,0$1380,650,255,255,255$1402,650,160,0,136$1413,650,170,0,17"),
            ColorArray.FromHsvFloatString(0.002f,0.002f,0.002f,"1390,650,255,255,255$1369,650,102,170,0$1380,650,0,102,170$1402,650,160,0,136$1413,650,170,0,17"),
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1402,650,255,255,255$1369,650,102,170,0$1380,650,0,102,170$1391,650,102,0,170$1413,650,170,0,17"),
            ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1391,650,102,0,170$1369,650,102,170,0$1380,650,0,102,170$1401,650,160,0,136$1412,650,255,255,255")
        };
@@ -241,7 +77,7 @@
        /// <returns></returns>
        public static bool GetChoiceLingdongNandu(out Int32 choiceNandu,Image<Rgb, byte> image, ZTRectangle gameRect)
        {
            ZTRectangle limit = new ZTRectangle(gameRect.Start.X + 400, gameRect.End.Y - 150, gameRect.Start.X + 650, gameRect.End.Y-90);
            ZTRectangle limit = new ZTRectangle(gameRect.Start.X + 270, gameRect.Start.Y +505, gameRect.Start.X + 354, gameRect.Start.Y+519);
            ZTRectangle position = ZTRectangle.Empty;
            for (int i = 0; i < LindongNandu.Length; i++)
            {
src/RichCreator.Utility/CV/ShikongzhimenCVHelper.cs
New file
@@ -0,0 +1,158 @@
using Emgu.CV;
using Emgu.CV.Structure;
using RichCreator.Utility.Captures;
using RichCreator.Utility.Structs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RichCreator.Utility.CV
{
    public class ShikongzhimenCVHelper
    {
        public static ZTSize minDoorBlockSize = new ZTSize(25, 25);//门的最小大小
        public static Hsv minUpDoorColor = new Hsv(17, 254, 254);
        public static Hsv maxUpDoorColor = new Hsv(19, 255, 255);
        public static Hsv minRightDoorColor = new Hsv(143, 254, 254);
        public static Hsv maxRightDoorColor = new Hsv(145, 255, 255);
        public static Hsv minBottomDoorColor = new Hsv(17, 254, 254);
        public static Hsv maxBottomDoorColor = new Hsv(19, 255, 255);
        public static Hsv minLeftDoorColor = new Hsv(107, 254, 254);
        public static Hsv maxLeftDoorColor = new Hsv(109, 255, 255);
        public static Hsv minRealBottomDoorColor = new Hsv(35, 254, 254);
        public static Hsv maxRealBottomDoorColor = new Hsv(37, 255, 255);
        /// <summary>
        /// 查找门
        /// </summary>
        /// <param name="directions"></param>
        /// <returns></returns>
        public static Dictionary<ZTPoint,Direction> FindDoor(Image<Hsv, byte> image, Direction[] directions, ZTRectangle gameRect)
        {
            Dictionary<ZTPoint,Direction> doorDir = new Dictionary<ZTPoint,Direction>();
            Direction targetDirection = Direction.None;
            Int32 height = gameRect.End.Y - gameRect.Start.Y;
            Int32 width = gameRect.End.X - gameRect.Start.X;
            Int32 yHalf = height / 2;
            Int32 xHalf = width / 2;
            ZTRectangle limitRect = ZTRectangle.Empty;
            Hsv minDoorHsvColor = default(Hsv), maxDoorHsvColor = default(Hsv);
            for (int doorIndex = 0; doorIndex < directions.Length; doorIndex++)
            {
                targetDirection = directions[doorIndex];
                switch (targetDirection)
                {
                    case Direction.Up:
                        minDoorHsvColor = minUpDoorColor;
                        maxDoorHsvColor = maxUpDoorColor;
                        limitRect = new ZTRectangle(0, 0, width, yHalf);
                        break;
                    case Direction.Right:
                        minDoorHsvColor = minRightDoorColor;
                        maxDoorHsvColor = maxRightDoorColor;
                        limitRect = new ZTRectangle(xHalf, 0, width, height);
                        break;
                    case Direction.Bottom:
                        minDoorHsvColor = minBottomDoorColor;
                        maxDoorHsvColor = maxBottomDoorColor;
                        limitRect = new ZTRectangle(0, yHalf, width, height);
                        break;
                    case Direction.Left:
                        minDoorHsvColor = minLeftDoorColor;
                        maxDoorHsvColor = maxLeftDoorColor;
                        limitRect = new ZTRectangle(0, 0, xHalf, height);
                        break;
                }
                List<ZTRectangle> doors = CVHelper.FindBlocks(image, minDoorHsvColor, maxDoorHsvColor, minDoorBlockSize);
                if (doors.Count <= 0)
                {
                    continue;
                }
                Structs.ZTPoint doorPosition = Structs.ZTPoint.Empty;
                for (int i = 0; i < doors.Count; i++)
                {
                    doorPosition = new Structs.ZTPoint(doors[i].Start.X + (doors[i].End.X - doors[i].Start.X) / 2, doors[i].Start.Y + (doors[i].End.Y - doors[i].Start.Y) / 2);
                    if (doorPosition.X >= limitRect.Start.X &&
                        doorPosition.X <= limitRect.End.X &&
                        doorPosition.Y >= limitRect.Start.Y &&
                        doorPosition.Y <= limitRect.End.Y)
                    {
                        ZTPoint door = doorPosition + gameRect.Start;
                        if (!doorDir.ContainsKey(door))
                        {
                            doorDir.Add(door, targetDirection);
                        }
                    }
                }
            }
            return doorDir;
        }
        /// <summary>
        /// 地图右上角素喃文字
        /// </summary>
        public static ColorArray MapTopSunan = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1401,72,230,200,155$1381,69,230,200,155$1380,68,0,0,0$1385,68,0,0,0$1386,68,230,200,155$1386,67,0,0,0$1387,67,0,0,0$1387,68,0,0,0$1391,68,0,0,0$1391,69,230,200,155$1392,69,0,0,0$1393,69,230,200,155$1393,68,0,0,0$1396,69,0,0,0$1395,69,230,200,155$1397,69,230,200,155$1399,68,0,0,0$1401,68,0,0,0$1404,69,0,0,0$1404,72,0,0,0$1403,72,230,200,155$1402,72,0,0,0$1400,72,0,0,0$1399,72,230,200,155$1398,72,0,0,0$1397,72,230,200,155$1396,72,0,0,0$1395,72,230,200,155$1394,72,0,0,0$1393,72,230,200,155$1392,72,0,0,0$1381,79,0,0,0$1382,79,230,200,155$1383,79,0,0,0$1385,79,230,200,155$1387,79,0,0,0$1390,79,230,200,155$1391,79,0,0,0$1396,79,0,0,0$1397,79,230,200,155$1398,79,0,0,0$1397,80,0,0,0$1401,79,0,0,0$1402,79,230,200,155$1402,80,0,0,0$1403,80,0,0,0$1403,79,230,200,155$1404,79,0,0,0$1404,80,0,0,0");
        /// <summary>
        /// 是否进入素喃
        /// </summary>
        /// <param name="image"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        public static bool IsInSunan(ZTRectangle gameRect)
        {
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            ZTRectangle limit = new ZTRectangle(gameRect.Start.X + 716, gameRect.Start.Y, gameRect.End.X, gameRect.Start.Y + 54);
            ZTRectangle position = ZTRectangle.Empty;
            return CVHelper.FindColorArray(out position, image, MapTopSunan, limit);
        }
        /// <summary>
        /// 地图右上角时空之门文字
        /// </summary>
        public static ColorArray MapTopShikongzhimen = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1187,48,230,200,155$1177,46,230,200,155$1180,46,230,200,155$1180,55,230,200,155$1177,55,230,200,155$1184,56,230,200,155$1186,56,230,200,155$1186,45,230,200,155$1189,48,230,200,155$1193,45,230,200,155$1196,48,230,200,155$1199,47,230,200,155$1199,48,230,200,155$1201,48,230,200,155$1209,48,230,200,155$1204,45,230,200,155$1212,45,230,200,155$1213,46,230,200,155$1215,45,230,200,155$1221,45,230,200,155$1221,56,230,200,155$1219,56,230,200,155$1212,56,230,200,155$1210,56,230,200,155$1205,56,230,200,155$1199,56,230,200,155$1189,56,230,200,155$1194,55,230,200,155");
        /// <summary>
        /// 是否进入时空之门
        /// </summary>
        /// <param name="image"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        public static bool IsInShikongzhimen(ZTRectangle gameRect)
        {
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            ZTRectangle limit = new ZTRectangle(gameRect.Start.X + 662, gameRect.Start.Y, gameRect.End.X, gameRect.Start.Y + 54);
            ZTRectangle position = ZTRectangle.Empty;
            return CVHelper.FindColorArray(out position, image, MapTopShikongzhimen, limit);
        }
        /// <summary>
        /// 选择进那个副本界面的下方"space"文字
        /// </summary>
        public static ColorArray ChoiceTaskPage_Space = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "1522,728,0,0,0$1505,728,208,182,131$1506,728,0,0,0$1508,728,0,0,0$1509,728,208,182,131$1510,728,208,182,131$1511,728,0,0,0$1513,728,0,0,0$1514,728,0,0,0$1515,728,208,182,131$1517,728,208,182,131$1518,728,0,0,0$1519,728,0,0,0$1520,728,0,0,0$1521,728,208,182,131$1523,728,208,182,131$1524,728,0,0,0$1526,728,0,0,0$1527,728,208,182,131$1529,728,208,182,131$1530,728,0,0,0$1532,728,0,0,0$1533,728,208,182,131$1533,727,0,0,0$1532,727,208,182,131$1530,727,208,182,131$1529,727,0,0,0$1528,727,208,182,131$1527,727,0,0,0$1524,727,208,182,131$1523,727,0,0,0$1522,727,208,182,131$1521,727,0,0,0$1520,727,208,182,131$1518,727,208,182,131$1517,727,0,0,0$1516,727,208,182,131$1515,727,0,0,0$1514,727,208,182,131$1512,727,208,182,131$1511,727,0,0,0$1510,727,208,182,131$1509,727,0,0,0$1508,727,208,182,131$1506,727,208,182,131$1505,727,0,0,0$1505,725,208,182,131$1506,725,0,0,0$1507,725,0,0,0$1508,725,208,182,131$1510,725,208,182,131$1511,725,0,0,0$1512,725,208,182,131$1514,725,208,182,131$1515,725,0,0,0$1517,725,208,182,131$1518,725,0,0,0$1520,725,0,0,0$1521,725,0,0,0$1522,725,208,182,131$1523,725,0,0,0$1524,725,208,182,131$1528,725,208,182,131$1529,725,0,0,0$1531,725,0,0,0$1533,725,0,0,0$1534,725,208,182,131$1533,723,208,182,131$1532,723,0,0,0$1530,723,0,0,0$1529,723,208,182,131$1527,723,208,182,131$1526,723,0,0,0$1524,723,0,0,0$1523,723,208,182,131$1521,723,208,182,131$1520,723,0,0,0$1518,723,0,0,0$1517,723,208,182,131$1515,723,208,182,131$1514,723,0,0,0$1511,723,0,0,0$1510,723,208,182,131$1509,723,208,182,131$1508,723,0,0,0$1506,723,0,0,0$1505,723,208,182,131");
        /// <summary>
        /// 是否打开选择副本界面
        /// </summary>
        /// <param name="image"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        public static bool IsInChoiceTaskPage(Image<Rgb, byte> image, ZTRectangle gameRect)
        {
            ZTRectangle limit = new ZTRectangle(gameRect.Start.X + 420, gameRect.Start.Y + 576, gameRect.Start.X + 467, gameRect.End.Y);
            ZTRectangle position = ZTRectangle.Empty;
            //if (CVHelper.FindColorArray(out position, image, ChoiceTaskPage_0, gameRect))
            //{
            //    return true;
            //}
            return CVHelper.FindColorArray(out position, image, ChoiceTaskPage_Space, limit);
        }
    }
}
src/RichCreator.Utility/CV/SkillCVHelper.cs
@@ -24,6 +24,7 @@
        /// </summary>
        private static ColorArray skillTitleTextWhite = ColorArray.FromHsvFloatString(0.002f,0.002f,0.002f, "633,93,0,0,0$619,93,0,0,0$620,93,255,255,255$621,93,0,0,0$624,93,0,0,0$625,93,255,255,255$626,93,0,0,0$631,93,0,0,0$632,93,255,255,255$635,93,0,0,0$636,93,255,255,255$637,93,0,0,0$638,93,0,0,0$639,93,255,255,255$640,93,0,0,0$643,93,0,0,0$644,93,255,255,255$645,93,0,0,0$646,93,0,0,0$647,93,255,255,255$648,93,0,0,0$650,93,0,0,0$651,93,255,255,255$652,93,0,0,0$652,100,0,0,0$651,100,255,255,255$648,100,255,255,255$647,100,255,255,255$646,100,0,0,0$645,100,0,0,0$644,100,255,255,255$643,100,0,0,0$642,100,255,255,255$641,100,0,0,0$640,100,0,0,0$639,100,255,255,255$638,100,0,0,0$637,100,0,0,0$636,100,255,255,255$635,100,0,0,0$634,100,255,255,255$633,100,0,0,0$632,100,0,0,0$631,100,255,255,255$630,100,0,0,0$628,100,0,0,0$627,100,255,255,255$626,100,0,0,0$624,100,0,0,0$623,100,255,255,255$622,100,0,0,0$621,100,0,0,0$620,100,255,255,255$619,100,255,255,255$618,100,255,255,255$617,100,0,0,0$618,104,0,0,0$619,104,255,255,255$620,104,255,255,255$621,104,0,0,0$622,104,255,255,255$623,104,255,255,255$624,104,0,0,0$624,103,255,255,255$625,103,0,0,0$626,103,255,255,255$627,103,0,0,0$630,103,0,0,0$631,103,255,255,255$632,103,0,0,0$633,103,0,0,0$634,103,255,255,255$635,103,0,0,0$636,103,255,255,255$644,103,255,255,255$645,103,0,0,0$645,104,0,0,0$646,104,255,255,255$648,104,255,255,255$650,104,255,255,255$652,104,255,255,255$653,104,0,0,0");
        private static ColorArray skillTitleTextGray = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "633,103,0,0,0$619,93,0,0,0$620,93,170,170,170$621,93,0,0,0$624,93,0,0,0$625,93,170,170,170$626,93,0,0,0$631,93,0,0,0$632,93,170,170,170$633,93,0,0,0$635,93,0,0,0$636,93,170,170,170$637,93,0,0,0$638,93,0,0,0$639,93,170,170,170$640,93,0,0,0$643,93,0,0,0$644,93,170,170,170$645,93,0,0,0$646,93,0,0,0$647,93,170,170,170$648,93,0,0,0$650,93,0,0,0$651,93,170,170,170$652,93,0,0,0$652,100,0,0,0$651,100,170,170,170$649,100,170,170,170$647,100,170,170,170$646,100,0,0,0$645,100,0,0,0$644,100,170,170,170$643,100,0,0,0$642,100,170,170,170$641,100,0,0,0$640,100,0,0,0$639,100,170,170,170$638,100,0,0,0$637,100,0,0,0$636,100,170,170,170$635,100,0,0,0$634,100,170,170,170$633,100,0,0,0$632,100,0,0,0$631,100,170,170,170$630,100,0,0,0$628,100,0,0,0$627,100,170,170,170$618,104,0,0,0$619,104,170,170,170$620,104,170,170,170$621,104,0,0,0$622,104,170,170,170$623,104,170,170,170$624,104,0,0,0$626,104,0,0,0$627,104,170,170,170$628,104,170,170,170$630,104,0,0,0$631,104,170,170,170$632,104,0,0,0$633,104,170,170,170$634,103,170,170,170$635,103,0,0,0$636,103,170,170,170$637,103,0,0,0$638,103,0,0,0$638,104,170,170,170$640,104,170,170,170$641,104,0,0,0$643,104,0,0,0$644,104,170,170,170$645,104,0,0,0$646,104,170,170,170$648,104,170,170,170$650,104,170,170,170$652,104,170,170,170$653,104,0,0,0");
        /// <summary>
        /// lv文字
        /// </summary>
@@ -94,12 +95,12 @@
        }
        public static bool FindCommonUpDownKey(out ZTRectangle upKeyRect, out ZTRectangle downKeyRect, ZTRectangle titleRect, ZTRectangle gameRect)
        public static bool FindCommonUpDownKey(out ZTRectangle upKeyRect, out ZTRectangle downKeyRect,ZTRectangle gameRect)
        {
            upKeyRect = downKeyRect = ZTRectangle.Empty;
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            ZTRectangle updownkeylimit = new ZTRectangle(titleRect.Start.X, titleRect.Start.Y, titleRect.Start.X + 222, gameRect.End.Y);
            ZTRectangle updownkeylimit = new ZTRectangle(gameRect.Start.X+535,gameRect.Start.Y+180,gameRect.Start.X+562,gameRect.Start.Y+535);
            if (!CVHelper.FindColorArray(out upKeyRect, image, upKey, updownkeylimit))
            {
@@ -355,7 +356,7 @@
            return false;
        }
        private static Int32 tt = 0;
        ///// <summary>
        ///// 灰色学习按钮
        ///// </summary>
src/RichCreator.Utility/CV/WeGameCVHelper.cs
@@ -23,7 +23,7 @@
        private static ColorArray loginByQQFastText = ColorArray.FromThresholdString(122, "1422,674,0,0,0$1410,674,0,0,0$1411,674,0,0,0$1412,674,0,0,0$1413,674,0,0,0$1414,674,0,0,0$1415,674,0,0,0$1416,674,0,0,0$1417,674,0,0,0$1418,674,0,0,0$1419,674,0,0,0$1420,674,0,0,0$1421,674,0,0,0$1423,674,0,0,0$1424,674,0,0,0$1425,674,0,0,0$1426,674,0,0,0$1427,674,0,0,0$1428,674,0,0,0$1429,674,0,0,0$1430,674,0,0,0$1431,674,0,0,0$1432,674,0,0,0$1433,674,0,0,0$1434,674,0,0,0$1435,674,0,0,0$1436,674,0,0,0$1437,674,0,0,0$1438,674,0,0,0$1439,674,0,0,0$1440,674,0,0,0$1441,674,0,0,0$1442,674,0,0,0$1443,674,0,0,0$1444,674,0,0,0$1445,674,0,0,0$1446,674,0,0,0$1447,674,0,0,0$1448,674,0,0,0$1449,674,0,0,0$1450,674,0,0,0$1451,674,0,0,0$1452,674,0,0,0$1453,674,0,0,0$1454,674,0,0,0$1455,674,0,0,0$1456,674,0,0,0$1457,674,0,0,0$1458,674,0,0,0$1459,674,0,0,0$1460,674,0,0,0$1461,674,0,0,0$1462,674,0,0,0$1463,674,0,0,0$1464,674,0,0,0$1465,674,0,0,0$1466,674,0,0,0$1467,674,0,0,0$1468,674,0,0,0$1469,674,0,0,0$1470,674,0,0,0$1471,674,0,0,0$1472,674,0,0,0$1473,674,0,0,0$1474,674,0,0,0$1475,674,0,0,0$1476,674,0,0,0$1477,674,0,0,0$1478,674,0,0,0$1479,674,0,0,0$1480,674,0,0,0$1481,674,0,0,0$1482,674,0,0,0$1483,674,0,0,0$1484,674,0,0,0$1485,674,0,0,0$1410,675,0,0,0$1411,675,0,0,0$1412,675,0,0,0$1413,675,0,0,0$1414,675,0,0,0$1415,675,0,0,0$1416,675,0,0,0$1417,675,0,0,0$1418,675,0,0,0$1419,675,0,0,0$1420,675,0,0,0$1421,675,0,0,0$1422,675,0,0,0$1423,675,0,0,0$1424,675,0,0,0$1425,675,0,0,0$1426,675,0,0,0$1427,675,0,0,0$1428,675,0,0,0$1429,675,0,0,0$1430,675,0,0,0$1431,675,0,0,0$1432,675,0,0,0$1433,675,0,0,0$1434,675,0,0,0$1435,675,0,0,0$1436,675,0,0,0$1437,675,0,0,0$1438,675,0,0,0$1439,675,0,0,0$1440,675,0,0,0$1441,675,0,0,0$1442,675,0,0,0$1443,675,0,0,0$1444,675,0,0,0$1445,675,0,0,0$1446,675,0,0,0$1447,675,0,0,0$1448,675,0,0,0$1449,675,0,0,0$1450,675,0,0,0$1451,675,0,0,0$1452,675,0,0,0$1453,675,0,0,0$1454,675,0,0,0$1455,675,0,0,0$1456,675,0,0,0$1457,675,0,0,0$1458,675,0,0,0$1459,675,0,0,0$1460,675,0,0,0$1461,675,0,0,0$1462,675,0,0,0$1463,675,0,0,0$1464,675,0,0,0$1465,675,0,0,0$1466,675,0,0,0$1467,675,0,0,0$1468,675,0,0,0$1469,675,0,0,0$1470,675,0,0,0$1471,675,0,0,0$1472,675,0,0,0$1473,675,0,0,0$1474,675,0,0,0$1475,675,0,0,0$1476,675,0,0,0$1477,675,0,0,0$1478,675,0,0,0$1479,675,0,0,0$1480,675,0,0,0$1481,675,0,0,0$1482,675,0,0,0$1483,675,0,0,0$1484,675,0,0,0$1485,675,0,0,0$1410,676,0,0,0$1411,676,0,0,0$1413,676,0,0,0$1414,676,0,0,0$1416,676,0,0,0$1417,676,0,0,0$1419,676,0,0,0$1420,676,0,0,0$1422,676,0,0,0$1423,676,0,0,0$1425,676,0,0,0$1426,676,0,0,0$1428,676,0,0,0$1429,676,0,0,0$1431,676,0,0,0$1432,676,0,0,0$1434,676,0,0,0$1437,676,0,0,0$1438,676,0,0,0$1443,676,0,0,0$1444,676,0,0,0$1449,676,0,0,0$1450,676,0,0,0$1452,676,0,0,0$1455,676,0,0,0$1456,676,0,0,0$1460,676,255,255,255$1461,676,255,255,255$1462,676,255,255,255$1470,676,0,0,0$1472,676,255,255,255$1473,676,255,255,255$1474,676,255,255,255$1475,676,255,255,255$1476,676,255,255,255$1477,676,255,255,255$1478,676,255,255,255$1479,676,255,255,255$1482,676,0,0,0$1483,676,0,0,0$1485,676,0,0,0$1410,677,0,0,0$1411,677,0,0,0$1412,677,0,0,0$1413,677,0,0,0$1414,677,0,0,0$1415,677,0,0,0$1418,677,255,255,255$1419,677,255,255,255$1420,677,255,255,255$1422,677,0,0,0$1423,677,0,0,0$1424,677,0,0,0$1425,677,0,0,0$1428,677,255,255,255$1429,677,255,255,255$1430,677,255,255,255$1432,677,0,0,0$1433,677,0,0,0$1434,677,0,0,0$1437,677,0,0,0$1438,677,0,0,0$1439,677,0,0,0$1442,677,0,0,0$1443,677,0,0,0$1444,677,0,0,0$1445,677,0,0,0$1446,677,0,0,0$1450,677,255,255,255$1451,677,255,255,255$1452,677,255,255,255$1453,677,255,255,255$1454,677,255,255,255$1455,677,255,255,255$1456,677,255,255,255$1459,677,0,0,0$1460,677,0,0,0$1466,677,255,255,255$1468,677,0,0,0$1469,677,0,0,0$1470,677,0,0,0$1471,677,0,0,0$1472,677,0,0,0$1473,677,0,0,0$1474,677,0,0,0$1475,677,0,0,0$1476,677,0,0,0$1477,677,0,0,0$1481,677,0,0,0$1482,677,0,0,0$1483,677,0,0,0$1484,677,0,0,0$1485,677,0,0,0$1410,678,0,0,0$1411,678,0,0,0$1412,678,0,0,0$1413,678,0,0,0$1414,678,0,0,0$1416,678,255,255,255$1418,678,0,0,0$1419,678,0,0,0$1423,678,0,0,0$1424,678,0,0,0$1426,678,255,255,255$1428,678,0,0,0$1429,678,0,0,0$1433,678,0,0,0$1439,678,255,255,255$1440,678,255,255,255$1441,678,255,255,255$1442,678,255,255,255$1443,678,255,255,255$1445,678,0,0,0$1446,678,0,0,0$1447,678,0,0,0$1450,678,0,0,0$1451,678,0,0,0$1452,678,0,0,0$1455,678,0,0,0$1456,678,0,0,0$1457,678,0,0,0$1459,678,255,255,255$1463,678,0,0,0$1464,678,0,0,0$1467,678,0,0,0$1470,678,0,0,0$1473,678,255,255,255$1474,678,255,255,255$1475,678,255,255,255$1476,678,255,255,255$1477,678,255,255,255$1478,678,255,255,255$1479,678,255,255,255$1481,678,0,0,0$1482,678,0,0,0$1483,678,0,0,0$1484,678,0,0,0$1485,678,0,0,0$1410,679,0,0,0$1411,679,0,0,0$1413,679,0,0,0$1417,679,0,0,0$1419,679,0,0,0$1420,679,0,0,0$1422,679,255,255,255$1428,679,0,0,0$1429,679,0,0,0$1432,679,255,255,255$1446,679,0,0,0$1447,679,0,0,0$1449,679,0,0,0$1451,679,255,255,255$1452,679,255,255,255$1453,679,255,255,255$1454,679,255,255,255$1455,679,255,255,255$1456,679,255,255,255$1458,679,0,0,0$1460,679,255,255,255$1463,679,255,255,255$1464,679,255,255,255$1465,679,255,255,255$1466,679,255,255,255$1467,679,255,255,255$1470,679,0,0,0$1471,679,0,0,0$1473,679,0,0,0$1474,679,0,0,0$1476,679,0,0,0$1477,679,0,0,0$1482,679,0,0,0$1483,679,0,0,0$1485,679,0,0,0$1410,680,0,0,0$1411,680,0,0,0$1412,680,0,0,0$1413,680,0,0,0$1417,680,0,0,0$1418,680,0,0,0$1419,680,0,0,0$1420,680,0,0,0$1427,680,0,0,0$1428,680,0,0,0$1429,680,0,0,0$1430,680,0,0,0$1437,680,0,0,0$1438,680,0,0,0$1439,680,0,0,0$1442,680,0,0,0$1445,680,0,0,0$1447,680,255,255,255$1449,680,0,0,0$1452,680,0,0,0$1455,680,0,0,0$1458,680,0,0,0$1461,680,0,0,0$1462,680,0,0,0$1463,680,0,0,0$1464,680,0,0,0$1465,680,0,0,0$1469,680,0,0,0$1471,680,255,255,255$1472,680,255,255,255$1473,680,255,255,255$1474,680,255,255,255$1475,680,255,255,255$1476,680,255,255,255$1477,680,255,255,255$1478,680,255,255,255$1479,680,255,255,255$1480,680,255,255,255$1482,680,0,0,0$1483,680,0,0,0$1484,680,0,0,0$1485,680,0,0,0$1410,681,0,0,0$1411,681,0,0,0$1412,681,0,0,0$1413,681,0,0,0$1417,681,0,0,0$1418,681,0,0,0$1419,681,0,0,0$1420,681,0,0,0$1427,681,0,0,0$1428,681,0,0,0$1429,681,0,0,0$1430,681,0,0,0$1437,681,0,0,0$1438,681,0,0,0$1439,681,0,0,0$1442,681,0,0,0$1445,681,0,0,0$1446,681,0,0,0$1449,681,0,0,0$1451,681,255,255,255$1452,681,255,255,255$1453,681,255,255,255$1454,681,255,255,255$1455,681,255,255,255$1456,681,255,255,255$1461,681,255,255,255$1462,681,255,255,255$1463,681,255,255,255$1464,681,255,255,255$1465,681,255,255,255$1466,681,255,255,255$1471,681,0,0,0$1472,681,0,0,0$1473,681,0,0,0$1474,681,0,0,0$1477,681,0,0,0$1478,681,0,0,0$1479,681,0,0,0$1480,681,0,0,0$1481,681,0,0,0$1482,681,0,0,0$1483,681,0,0,0$1484,681,0,0,0$1485,681,0,0,0$1410,682,0,0,0$1411,682,0,0,0$1413,682,0,0,0$1417,682,0,0,0$1419,682,0,0,0$1420,682,0,0,0$1428,682,0,0,0$1429,682,0,0,0$1434,682,0,0,0$1439,682,255,255,255$1440,682,255,255,255$1441,682,255,255,255$1442,682,255,255,255$1443,682,255,255,255$1444,682,255,255,255$1446,682,0,0,0$1449,682,0,0,0$1450,682,0,0,0$1453,682,255,255,255$1455,682,0,0,0$1456,682,0,0,0$1458,682,0,0,0$1459,682,0,0,0$1462,682,0,0,0$1464,682,0,0,0$1465,682,0,0,0$1470,682,0,0,0$1472,682,255,255,255$1474,682,0,0,0$1482,682,0,0,0$1483,682,0,0,0$1485,682,0,0,0$1410,683,0,0,0$1411,683,0,0,0$1412,683,0,0,0$1413,683,0,0,0$1417,683,0,0,0$1418,683,0,0,0$1419,683,0,0,0$1420,683,0,0,0$1422,683,255,255,255$1427,683,0,0,0$1428,683,0,0,0$1429,683,0,0,0$1430,683,0,0,0$1432,683,255,255,255$1434,683,0,0,0$1437,683,0,0,0$1438,683,0,0,0$1439,683,0,0,0$1441,683,255,255,255$1443,683,0,0,0$1444,683,0,0,0$1445,683,0,0,0$1446,683,0,0,0$1449,683,0,0,0$1454,683,255,255,255$1455,683,255,255,255$1457,683,0,0,0$1458,683,0,0,0$1459,683,0,0,0$1461,683,255,255,255$1462,683,255,255,255$1463,683,255,255,255$1464,683,255,255,255$1465,683,255,255,255$1466,683,255,255,255$1469,683,0,0,0$1470,683,0,0,0$1471,683,0,0,0$1476,683,255,255,255$1481,683,0,0,0$1482,683,0,0,0$1483,683,0,0,0$1484,683,0,0,0$1485,683,0,0,0$1410,684,0,0,0$1411,684,0,0,0$1412,684,0,0,0$1413,684,0,0,0$1414,684,0,0,0$1416,684,255,255,255$1418,684,0,0,0$1419,684,0,0,0$1423,684,0,0,0$1424,684,0,0,0$1426,684,255,255,255$1428,684,0,0,0$1429,684,0,0,0$1433,684,0,0,0$1434,684,0,0,0$1437,684,0,0,0$1438,684,0,0,0$1444,684,0,0,0$1445,684,0,0,0$1446,684,0,0,0$1452,684,0,0,0$1458,684,0,0,0$1459,684,0,0,0$1463,684,0,0,0$1464,684,0,0,0$1468,684,0,0,0$1469,684,0,0,0$1470,684,0,0,0$1471,684,0,0,0$1479,684,0,0,0$1480,684,0,0,0$1481,684,0,0,0$1482,684,0,0,0$1483,684,0,0,0$1484,684,0,0,0$1485,684,0,0,0$1410,685,0,0,0$1411,685,0,0,0$1413,685,0,0,0$1414,685,0,0,0$1418,685,255,255,255$1419,685,255,255,255$1420,685,255,255,255$1423,685,0,0,0$1425,685,0,0,0$1427,685,255,255,255$1428,685,255,255,255$1429,685,255,255,255$1430,685,255,255,255$1434,685,0,0,0$1437,685,0,0,0$1439,685,255,255,255$1441,685,0,0,0$1443,685,255,255,255$1447,685,255,255,255$1448,685,255,255,255$1450,685,0,0,0$1452,685,0,0,0$1453,685,0,0,0$1455,685,0,0,0$1456,685,0,0,0$1458,685,0,0,0$1459,685,0,0,0$1467,685,0,0,0$1468,685,0,0,0$1470,685,0,0,0$1472,685,255,255,255$1474,685,0,0,0$1477,685,0,0,0$1482,685,0,0,0$1483,685,0,0,0$1485,685,0,0,0$1410,686,0,0,0$1411,686,0,0,0$1412,686,0,0,0$1413,686,0,0,0$1414,686,0,0,0$1415,686,0,0,0$1416,686,0,0,0$1417,686,0,0,0$1418,686,0,0,0$1419,686,0,0,0$1420,686,0,0,0$1422,686,255,255,255$1425,686,0,0,0$1426,686,0,0,0$1427,686,0,0,0$1428,686,0,0,0$1429,686,0,0,0$1430,686,0,0,0$1432,686,255,255,255$1439,686,0,0,0$1440,686,0,0,0$1441,686,0,0,0$1442,686,0,0,0$1450,686,255,255,255$1451,686,255,255,255$1452,686,255,255,255$1453,686,255,255,255$1454,686,255,255,255$1455,686,255,255,255$1456,686,255,255,255$1459,686,255,255,255$1460,686,255,255,255$1461,686,255,255,255$1462,686,255,255,255$1463,686,255,255,255$1464,686,255,255,255$1465,686,255,255,255$1466,686,255,255,255$1467,686,255,255,255$1468,686,255,255,255$1472,686,0,0,0$1474,686,255,255,255$1475,686,255,255,255$1477,686,0,0,0$1478,686,0,0,0$1482,686,0,0,0$1483,686,0,0,0$1484,686,0,0,0$1485,686,0,0,0$1410,687,0,0,0$1411,687,0,0,0$1412,687,0,0,0$1413,687,0,0,0$1414,687,0,0,0$1415,687,0,0,0$1416,687,0,0,0$1417,687,0,0,0$1418,687,0,0,0$1419,687,0,0,0$1420,687,0,0,0$1421,687,0,0,0$1422,687,0,0,0$1423,687,0,0,0$1424,687,0,0,0$1425,687,0,0,0$1426,687,0,0,0$1427,687,0,0,0$1428,687,0,0,0$1429,687,0,0,0$1430,687,0,0,0$1431,687,0,0,0$1432,687,0,0,0$1433,687,0,0,0$1434,687,0,0,0$1435,687,0,0,0$1436,687,0,0,0$1437,687,0,0,0$1438,687,0,0,0$1439,687,0,0,0$1440,687,0,0,0$1441,687,0,0,0$1442,687,0,0,0$1443,687,0,0,0$1444,687,0,0,0$1445,687,0,0,0$1446,687,0,0,0$1447,687,0,0,0$1448,687,0,0,0$1449,687,0,0,0$1450,687,0,0,0$1451,687,0,0,0$1452,687,0,0,0$1453,687,0,0,0$1454,687,0,0,0$1455,687,0,0,0$1456,687,0,0,0$1457,687,0,0,0$1458,687,0,0,0$1459,687,0,0,0$1460,687,0,0,0$1461,687,0,0,0$1462,687,0,0,0$1463,687,0,0,0$1464,687,0,0,0$1465,687,0,0,0$1466,687,0,0,0$1467,687,0,0,0$1468,687,0,0,0$1469,687,0,0,0$1470,687,0,0,0$1471,687,0,0,0$1472,687,0,0,0$1473,687,0,0,0$1474,687,0,0,0$1475,687,0,0,0$1476,687,0,0,0$1477,687,0,0,0$1478,687,0,0,0$1479,687,0,0,0$1480,687,0,0,0$1481,687,0,0,0$1482,687,0,0,0$1483,687,0,0,0$1484,687,0,0,0$1485,687,0,0,0$1410,688,0,0,0$1411,688,0,0,0$1413,688,0,0,0$1414,688,0,0,0$1416,688,0,0,0$1417,688,0,0,0$1419,688,0,0,0$1420,688,0,0,0$1422,688,0,0,0$1423,688,0,0,0$1425,688,0,0,0$1426,688,0,0,0$1428,688,0,0,0$1429,688,0,0,0$1431,688,0,0,0$1432,688,0,0,0$1434,688,0,0,0$1435,688,0,0,0$1437,688,0,0,0$1438,688,0,0,0$1440,688,0,0,0$1441,688,0,0,0$1443,688,0,0,0$1444,688,0,0,0$1446,688,0,0,0$1447,688,0,0,0$1449,688,0,0,0$1450,688,0,0,0$1452,688,0,0,0$1453,688,0,0,0$1455,688,0,0,0$1456,688,0,0,0$1458,688,0,0,0$1459,688,0,0,0$1461,688,0,0,0$1462,688,0,0,0$1464,688,0,0,0$1465,688,0,0,0$1467,688,0,0,0$1468,688,0,0,0$1470,688,0,0,0$1471,688,0,0,0$1473,688,0,0,0$1474,688,0,0,0$1476,688,0,0,0$1477,688,0,0,0$1479,688,0,0,0$1480,688,0,0,0$1482,688,0,0,0$1483,688,0,0,0$1485,688,0,0,0");
        //通过用户名登陆字的颜色数组
        private static ColorArray loginByUserName = ColorArray.FromThresholdString(103, "1254,634,0,0,0$1237,634,0,0,0$1238,634,0,0,0$1239,634,0,0,0$1240,634,0,0,0$1241,634,0,0,0$1242,634,0,0,0$1243,634,0,0,0$1244,634,0,0,0$1245,634,0,0,0$1246,634,0,0,0$1247,634,0,0,0$1248,634,0,0,0$1249,634,0,0,0$1250,634,0,0,0$1251,634,0,0,0$1252,634,0,0,0$1253,634,0,0,0$1255,634,0,0,0$1256,634,0,0,0$1257,634,0,0,0$1258,634,0,0,0$1259,634,0,0,0$1260,634,0,0,0$1261,634,0,0,0$1262,634,0,0,0$1263,634,0,0,0$1264,634,0,0,0$1265,634,0,0,0$1266,634,0,0,0$1267,634,0,0,0$1268,634,0,0,0$1269,634,0,0,0$1270,634,0,0,0$1271,634,0,0,0$1272,634,0,0,0$1273,634,0,0,0$1274,634,0,0,0$1275,634,0,0,0$1276,634,0,0,0$1277,634,0,0,0$1278,634,0,0,0$1279,634,0,0,0$1280,634,0,0,0$1281,634,0,0,0$1282,634,0,0,0$1283,634,0,0,0$1284,634,0,0,0$1285,634,0,0,0$1286,634,0,0,0$1287,634,0,0,0$1288,634,0,0,0$1289,634,0,0,0$1290,634,0,0,0$1291,634,0,0,0$1292,634,0,0,0$1293,634,0,0,0$1294,634,0,0,0$1295,634,0,0,0$1296,634,0,0,0$1297,634,0,0,0$1298,634,0,0,0$1299,634,0,0,0$1300,634,0,0,0$1301,634,0,0,0$1302,634,0,0,0$1303,634,0,0,0$1304,634,0,0,0$1305,634,0,0,0$1306,634,0,0,0$1307,634,0,0,0$1308,634,0,0,0$1309,634,0,0,0$1310,634,0,0,0$1311,634,0,0,0$1237,635,0,0,0$1239,635,0,0,0$1240,635,0,0,0$1242,635,0,0,0$1243,635,0,0,0$1245,635,0,0,0$1246,635,0,0,0$1248,635,0,0,0$1249,635,0,0,0$1251,635,0,0,0$1252,635,0,0,0$1254,635,0,0,0$1255,635,0,0,0$1257,635,0,0,0$1258,635,0,0,0$1260,635,0,0,0$1261,635,0,0,0$1263,635,0,0,0$1264,635,0,0,0$1266,635,0,0,0$1267,635,0,0,0$1269,635,0,0,0$1270,635,0,0,0$1272,635,0,0,0$1273,635,0,0,0$1275,635,0,0,0$1276,635,0,0,0$1278,635,0,0,0$1279,635,0,0,0$1281,635,0,0,0$1282,635,0,0,0$1284,635,0,0,0$1285,635,0,0,0$1287,635,0,0,0$1288,635,0,0,0$1290,635,0,0,0$1291,635,0,0,0$1293,635,0,0,0$1294,635,0,0,0$1296,635,0,0,0$1297,635,0,0,0$1299,635,0,0,0$1300,635,0,0,0$1302,635,0,0,0$1303,635,0,0,0$1305,635,0,0,0$1306,635,0,0,0$1308,635,0,0,0$1309,635,0,0,0$1311,635,0,0,0$1237,636,0,0,0$1238,636,0,0,0$1239,636,0,0,0$1240,636,0,0,0$1241,636,0,0,0$1242,636,0,0,0$1243,636,0,0,0$1244,636,0,0,0$1245,636,0,0,0$1246,636,0,0,0$1247,636,0,0,0$1248,636,0,0,0$1249,636,0,0,0$1250,636,0,0,0$1251,636,0,0,0$1252,636,0,0,0$1253,636,0,0,0$1254,636,0,0,0$1255,636,0,0,0$1256,636,0,0,0$1257,636,0,0,0$1258,636,0,0,0$1259,636,0,0,0$1260,636,0,0,0$1261,636,0,0,0$1262,636,0,0,0$1263,636,0,0,0$1264,636,0,0,0$1265,636,0,0,0$1266,636,0,0,0$1267,636,0,0,0$1268,636,0,0,0$1269,636,0,0,0$1270,636,0,0,0$1271,636,0,0,0$1272,636,0,0,0$1273,636,0,0,0$1274,636,0,0,0$1275,636,0,0,0$1276,636,0,0,0$1277,636,0,0,0$1278,636,0,0,0$1279,636,0,0,0$1280,636,0,0,0$1281,636,0,0,0$1282,636,0,0,0$1283,636,0,0,0$1284,636,0,0,0$1285,636,0,0,0$1286,636,0,0,0$1287,636,0,0,0$1288,636,0,0,0$1289,636,0,0,0$1290,636,0,0,0$1291,636,0,0,0$1292,636,0,0,0$1293,636,0,0,0$1294,636,0,0,0$1295,636,0,0,0$1296,636,0,0,0$1297,636,0,0,0$1298,636,0,0,0$1299,636,0,0,0$1300,636,0,0,0$1301,636,0,0,0$1302,636,0,0,0$1303,636,0,0,0$1304,636,0,0,0$1305,636,0,0,0$1306,636,0,0,0$1307,636,0,0,0$1308,636,0,0,0$1309,636,0,0,0$1310,636,0,0,0$1311,636,0,0,0$1237,637,0,0,0$1238,637,0,0,0$1239,637,0,0,0$1240,637,255,255,255$1242,637,0,0,0$1244,637,255,255,255$1246,637,0,0,0$1247,637,0,0,0$1250,637,0,0,0$1252,637,255,255,255$1253,637,255,255,255$1254,637,255,255,255$1255,637,255,255,255$1256,637,255,255,255$1257,637,255,255,255$1258,637,255,255,255$1259,637,255,255,255$1261,637,0,0,0$1262,637,0,0,0$1263,637,0,0,0$1264,637,0,0,0$1265,637,0,0,0$1266,637,0,0,0$1267,637,255,255,255$1268,637,255,255,255$1269,637,0,0,0$1270,637,0,0,0$1271,637,0,0,0$1272,637,0,0,0$1273,637,0,0,0$1275,637,255,255,255$1276,637,255,255,255$1277,637,255,255,255$1278,637,255,255,255$1279,637,255,255,255$1280,637,255,255,255$1281,637,255,255,255$1282,637,255,255,255$1283,637,255,255,255$1284,637,255,255,255$1287,637,255,255,255$1288,637,255,255,255$1289,637,255,255,255$1290,637,255,255,255$1292,637,255,255,255$1294,637,0,0,0$1295,637,255,255,255$1297,637,0,0,0$1298,637,0,0,0$1300,637,255,255,255$1301,637,255,255,255$1302,637,255,255,255$1303,637,255,255,255$1304,637,255,255,255$1305,637,255,255,255$1306,637,255,255,255$1307,637,255,255,255$1309,637,0,0,0$1310,637,0,0,0$1311,637,0,0,0$1237,638,0,0,0$1239,638,0,0,0$1240,638,255,255,255$1242,638,0,0,0$1243,638,0,0,0$1244,638,255,255,255$1246,638,0,0,0$1247,638,255,255,255$1249,638,0,0,0$1252,638,255,255,255$1254,638,0,0,0$1255,638,0,0,0$1257,638,0,0,0$1259,638,255,255,255$1261,638,0,0,0$1263,638,255,255,255$1264,638,255,255,255$1265,638,255,255,255$1266,638,255,255,255$1267,638,255,255,255$1268,638,255,255,255$1269,638,255,255,255$1270,638,255,255,255$1271,638,255,255,255$1272,638,255,255,255$1275,638,0,0,0$1278,638,0,0,0$1279,638,0,0,0$1281,638,0,0,0$1282,638,0,0,0$1284,638,255,255,255$1285,638,0,0,0$1287,638,0,0,0$1288,638,0,0,0$1290,638,255,255,255$1293,638,255,255,255$1294,638,255,255,255$1296,638,0,0,0$1297,638,0,0,0$1299,638,0,0,0$1300,638,0,0,0$1302,638,0,0,0$1303,638,0,0,0$1305,638,0,0,0$1307,638,255,255,255$1309,638,0,0,0$1311,638,0,0,0$1237,639,0,0,0$1239,639,255,255,255$1240,639,255,255,255$1241,639,255,255,255$1242,639,255,255,255$1244,639,255,255,255$1246,639,255,255,255$1248,639,0,0,0$1249,639,0,0,0$1250,639,0,0,0$1252,639,255,255,255$1253,639,255,255,255$1254,639,255,255,255$1255,639,255,255,255$1256,639,255,255,255$1257,639,255,255,255$1258,639,255,255,255$1259,639,255,255,255$1261,639,0,0,0$1264,639,0,0,0$1265,639,0,0,0$1267,639,255,255,255$1269,639,0,0,0$1274,639,0,0,0$1275,639,0,0,0$1276,639,255,255,255$1278,639,0,0,0$1280,639,255,255,255$1282,639,0,0,0$1285,639,0,0,0$1287,639,255,255,255$1289,639,255,255,255$1291,639,0,0,0$1292,639,0,0,0$1293,639,255,255,255$1295,639,0,0,0$1296,639,255,255,255$1298,639,0,0,0$1300,639,255,255,255$1301,639,255,255,255$1302,639,255,255,255$1303,639,255,255,255$1304,639,255,255,255$1305,639,255,255,255$1306,639,255,255,255$1307,639,255,255,255$1309,639,0,0,0$1310,639,0,0,0$1311,639,0,0,0$1237,640,0,0,0$1240,640,255,255,255$1242,640,255,255,255$1244,640,255,255,255$1247,640,0,0,0$1248,640,0,0,0$1249,640,0,0,0$1250,640,0,0,0$1252,640,255,255,255$1254,640,0,0,0$1255,640,0,0,0$1256,640,0,0,0$1257,640,0,0,0$1259,640,255,255,255$1261,640,0,0,0$1262,640,0,0,0$1264,640,255,255,255$1268,640,255,255,255$1269,640,255,255,255$1271,640,0,0,0$1272,640,0,0,0$1273,640,0,0,0$1274,640,0,0,0$1277,640,0,0,0$1278,640,0,0,0$1280,640,255,255,255$1281,640,0,0,0$1282,640,0,0,0$1285,640,0,0,0$1286,640,0,0,0$1288,640,255,255,255$1289,640,255,255,255$1290,640,255,255,255$1291,640,255,255,255$1292,640,255,255,255$1293,640,255,255,255$1294,640,255,255,255$1295,640,255,255,255$1297,640,0,0,0$1298,640,0,0,0$1299,640,0,0,0$1300,640,0,0,0$1301,640,0,0,0$1302,640,0,0,0$1303,640,0,0,0$1304,640,0,0,0$1305,640,0,0,0$1307,640,255,255,255$1309,640,0,0,0$1310,640,0,0,0$1311,640,0,0,0$1237,641,0,0,0$1240,641,255,255,255$1242,641,255,255,255$1244,641,255,255,255$1246,641,0,0,0$1248,641,0,0,0$1249,641,0,0,0$1251,641,0,0,0$1252,641,0,0,0$1254,641,0,0,0$1255,641,0,0,0$1257,641,0,0,0$1258,641,0,0,0$1260,641,0,0,0$1261,641,0,0,0$1263,641,255,255,255$1267,641,255,255,255$1268,641,255,255,255$1272,641,255,255,255$1275,641,255,255,255$1276,641,255,255,255$1277,641,255,255,255$1280,641,255,255,255$1281,641,0,0,0$1282,641,0,0,0$1283,641,255,255,255$1285,641,0,0,0$1287,641,255,255,255$1288,641,255,255,255$1290,641,0,0,0$1291,641,0,0,0$1293,641,0,0,0$1295,641,255,255,255$1297,641,0,0,0$1298,641,255,255,255$1299,641,255,255,255$1300,641,255,255,255$1301,641,255,255,255$1302,641,255,255,255$1303,641,255,255,255$1304,641,255,255,255$1305,641,255,255,255$1306,641,255,255,255$1307,641,255,255,255$1308,641,255,255,255$1309,641,255,255,255$1311,641,0,0,0$1237,642,0,0,0$1240,642,255,255,255$1242,642,255,255,255$1243,642,255,255,255$1244,642,255,255,255$1245,642,255,255,255$1246,642,255,255,255$1247,642,255,255,255$1248,642,255,255,255$1250,642,255,255,255$1251,642,255,255,255$1252,642,255,255,255$1253,642,255,255,255$1254,642,255,255,255$1255,642,255,255,255$1256,642,255,255,255$1257,642,255,255,255$1258,642,255,255,255$1259,642,255,255,255$1260,642,255,255,255$1261,642,255,255,255$1263,642,0,0,0$1265,642,255,255,255$1266,642,255,255,255$1268,642,0,0,0$1269,642,0,0,0$1273,642,255,255,255$1275,642,255,255,255$1280,642,255,255,255$1281,642,255,255,255$1282,642,255,255,255$1283,642,255,255,255$1284,642,255,255,255$1286,642,255,255,255$1288,642,255,255,255$1289,642,255,255,255$1290,642,255,255,255$1291,642,255,255,255$1292,642,255,255,255$1293,642,255,255,255$1294,642,255,255,255$1295,642,255,255,255$1296,642,255,255,255$1297,642,255,255,255$1299,642,0,0,0$1300,642,0,0,0$1301,642,0,0,0$1302,642,0,0,0$1305,642,0,0,0$1306,642,0,0,0$1307,642,0,0,0$1308,642,0,0,0$1309,642,0,0,0$1310,642,0,0,0$1311,642,0,0,0$1237,643,0,0,0$1240,643,255,255,255$1242,643,255,255,255$1244,643,255,255,255$1246,643,255,255,255$1248,643,0,0,0$1249,643,0,0,0$1250,643,0,0,0$1251,643,0,0,0$1254,643,0,0,0$1255,643,0,0,0$1256,643,0,0,0$1257,643,0,0,0$1258,643,0,0,0$1259,643,0,0,0$1260,643,0,0,0$1261,643,0,0,0$1263,643,255,255,255$1264,643,255,255,255$1266,643,255,255,255$1267,643,255,255,255$1268,643,255,255,255$1269,643,255,255,255$1270,643,255,255,255$1272,643,0,0,0$1273,643,0,0,0$1275,643,255,255,255$1279,643,0,0,0$1280,643,0,0,0$1281,643,0,0,0$1282,643,0,0,0$1283,643,0,0,0$1286,643,0,0,0$1287,643,0,0,0$1288,643,255,255,255$1290,643,0,0,0$1291,643,0,0,0$1292,643,0,0,0$1293,643,0,0,0$1295,643,255,255,255$1297,643,0,0,0$1298,643,0,0,0$1300,643,255,255,255$1302,643,0,0,0$1304,643,255,255,255$1306,643,0,0,0$1308,643,255,255,255$1309,643,0,0,0$1310,643,0,0,0$1311,643,0,0,0$1237,644,0,0,0$1240,644,255,255,255$1241,644,255,255,255$1242,644,255,255,255$1244,644,255,255,255$1247,644,255,255,255$1248,644,0,0,0$1249,644,0,0,0$1252,644,255,255,255$1253,644,255,255,255$1254,644,255,255,255$1255,644,255,255,255$1256,644,255,255,255$1257,644,255,255,255$1258,644,255,255,255$1259,644,255,255,255$1261,644,0,0,0$1266,644,0,0,0$1268,644,255,255,255$1269,644,0,0,0$1270,644,0,0,0$1273,644,0,0,0$1278,644,255,255,255$1279,644,255,255,255$1280,644,255,255,255$1281,644,255,255,255$1282,644,255,255,255$1283,644,255,255,255$1284,644,255,255,255$1287,644,0,0,0$1288,644,255,255,255$1289,644,255,255,255$1290,644,255,255,255$1291,644,255,255,255$1292,644,255,255,255$1293,644,255,255,255$1294,644,255,255,255$1295,644,255,255,255$1297,644,0,0,0$1299,644,0,0,0$1301,644,255,255,255$1302,644,255,255,255$1303,644,255,255,255$1304,644,255,255,255$1306,644,255,255,255$1307,644,255,255,255$1309,644,0,0,0$1311,644,0,0,0$1237,645,0,0,0$1238,645,0,0,0$1239,645,0,0,0$1240,645,255,255,255$1242,645,0,0,0$1243,645,0,0,0$1244,645,255,255,255$1246,645,255,255,255$1247,645,255,255,255$1249,645,0,0,0$1250,645,0,0,0$1251,645,0,0,0$1252,645,0,0,0$1253,645,0,0,0$1254,645,0,0,0$1255,645,0,0,0$1256,645,0,0,0$1257,645,0,0,0$1258,645,0,0,0$1259,645,255,255,255$1261,645,0,0,0$1262,645,0,0,0$1265,645,0,0,0$1266,645,0,0,0$1269,645,0,0,0$1270,645,0,0,0$1273,645,0,0,0$1274,645,0,0,0$1279,645,0,0,0$1280,645,0,0,0$1281,645,0,0,0$1282,645,0,0,0$1283,645,0,0,0$1284,645,255,255,255$1286,645,0,0,0$1287,645,0,0,0$1289,645,255,255,255$1291,645,0,0,0$1292,645,0,0,0$1294,645,255,255,255$1296,645,0,0,0$1297,645,0,0,0$1298,645,0,0,0$1299,645,0,0,0$1301,645,255,255,255$1304,645,255,255,255$1305,645,255,255,255$1307,645,0,0,0$1308,645,0,0,0$1309,645,0,0,0$1310,645,0,0,0$1311,645,0,0,0$1237,646,0,0,0$1238,646,0,0,0$1239,646,0,0,0$1240,646,255,255,255$1242,646,0,0,0$1243,646,0,0,0$1244,646,255,255,255$1245,646,255,255,255$1247,646,0,0,0$1248,646,255,255,255$1249,646,255,255,255$1251,646,0,0,0$1252,646,0,0,0$1253,646,0,0,0$1254,646,0,0,0$1255,646,0,0,0$1256,646,0,0,0$1257,646,0,0,0$1259,646,255,255,255$1261,646,0,0,0$1262,646,0,0,0$1264,646,255,255,255$1265,646,255,255,255$1266,646,255,255,255$1267,646,255,255,255$1268,646,255,255,255$1269,646,255,255,255$1270,646,255,255,255$1271,646,255,255,255$1273,646,0,0,0$1274,646,0,0,0$1275,646,255,255,255$1276,646,255,255,255$1277,646,255,255,255$1279,646,0,0,0$1280,646,0,0,0$1281,646,0,0,0$1282,646,0,0,0$1283,646,0,0,0$1284,646,255,255,255$1286,646,0,0,0$1287,646,0,0,0$1288,646,0,0,0$1290,646,255,255,255$1293,646,255,255,255$1295,646,0,0,0$1296,646,0,0,0$1297,646,0,0,0$1298,646,0,0,0$1299,646,255,255,255$1300,646,255,255,255$1302,646,0,0,0$1305,646,0,0,0$1306,646,255,255,255$1307,646,255,255,255$1309,646,0,0,0$1310,646,0,0,0$1311,646,0,0,0$1237,647,0,0,0$1239,647,0,0,0$1240,647,255,255,255$1242,647,0,0,0$1244,647,255,255,255$1246,647,0,0,0$1248,647,0,0,0$1249,647,0,0,0$1251,647,0,0,0$1252,647,0,0,0$1255,647,255,255,255$1256,647,255,255,255$1257,647,255,255,255$1258,647,255,255,255$1259,647,255,255,255$1260,647,0,0,0$1261,647,0,0,0$1263,647,0,0,0$1264,647,0,0,0$1266,647,0,0,0$1267,647,0,0,0$1269,647,0,0,0$1270,647,0,0,0$1273,647,0,0,0$1279,647,0,0,0$1282,647,255,255,255$1283,647,255,255,255$1284,647,255,255,255$1286,647,255,255,255$1287,647,255,255,255$1288,647,255,255,255$1289,647,255,255,255$1290,647,255,255,255$1291,647,255,255,255$1292,647,255,255,255$1293,647,255,255,255$1294,647,255,255,255$1295,647,255,255,255$1296,647,255,255,255$1297,647,255,255,255$1298,647,255,255,255$1300,647,0,0,0$1301,647,255,255,255$1302,647,255,255,255$1303,647,255,255,255$1305,647,0,0,0$1306,647,0,0,0$1308,647,255,255,255$1309,647,255,255,255$1311,647,0,0,0$1237,648,0,0,0$1238,648,0,0,0$1239,648,0,0,0$1240,648,0,0,0$1241,648,0,0,0$1242,648,0,0,0$1243,648,0,0,0$1244,648,0,0,0$1245,648,0,0,0$1246,648,0,0,0$1247,648,0,0,0$1248,648,0,0,0$1249,648,0,0,0$1250,648,0,0,0$1251,648,0,0,0$1252,648,0,0,0$1253,648,0,0,0$1254,648,0,0,0$1255,648,0,0,0$1256,648,0,0,0$1257,648,0,0,0$1258,648,0,0,0$1259,648,0,0,0$1260,648,0,0,0$1261,648,0,0,0$1262,648,0,0,0$1263,648,0,0,0$1264,648,0,0,0$1265,648,0,0,0$1266,648,0,0,0$1267,648,0,0,0$1268,648,0,0,0$1269,648,0,0,0$1270,648,0,0,0$1271,648,0,0,0$1272,648,0,0,0$1273,648,0,0,0$1274,648,0,0,0$1275,648,0,0,0$1276,648,0,0,0$1277,648,0,0,0$1278,648,0,0,0$1279,648,0,0,0$1280,648,0,0,0$1281,648,0,0,0$1282,648,0,0,0$1283,648,0,0,0$1284,648,0,0,0$1285,648,0,0,0$1286,648,0,0,0$1287,648,0,0,0$1288,648,0,0,0$1289,648,0,0,0$1290,648,0,0,0$1291,648,0,0,0$1292,648,0,0,0$1293,648,0,0,0$1294,648,0,0,0$1295,648,0,0,0$1296,648,0,0,0$1297,648,0,0,0$1298,648,0,0,0$1299,648,0,0,0$1300,648,0,0,0$1301,648,0,0,0$1302,648,0,0,0$1303,648,0,0,0$1304,648,0,0,0$1305,648,0,0,0$1306,648,0,0,0$1307,648,0,0,0$1308,648,0,0,0$1309,648,0,0,0$1310,648,0,0,0$1311,648,0,0,0$1237,649,0,0,0$1238,649,0,0,0$1239,649,0,0,0$1240,649,0,0,0$1241,649,0,0,0$1242,649,0,0,0$1243,649,0,0,0$1244,649,0,0,0$1245,649,0,0,0$1246,649,0,0,0$1247,649,0,0,0$1248,649,0,0,0$1249,649,0,0,0$1250,649,0,0,0$1251,649,0,0,0$1252,649,0,0,0$1253,649,0,0,0$1254,649,0,0,0$1255,649,0,0,0$1256,649,0,0,0$1257,649,0,0,0$1258,649,0,0,0$1259,649,0,0,0$1260,649,0,0,0$1261,649,0,0,0$1262,649,0,0,0$1263,649,0,0,0$1264,649,0,0,0$1265,649,0,0,0$1266,649,0,0,0$1267,649,0,0,0$1268,649,0,0,0$1269,649,0,0,0$1270,649,0,0,0$1271,649,0,0,0$1272,649,0,0,0$1273,649,0,0,0$1274,649,0,0,0$1275,649,0,0,0$1276,649,0,0,0$1277,649,0,0,0$1278,649,0,0,0$1279,649,0,0,0$1280,649,0,0,0$1281,649,0,0,0$1282,649,0,0,0$1283,649,0,0,0$1284,649,0,0,0$1285,649,0,0,0$1286,649,0,0,0$1287,649,0,0,0$1288,649,0,0,0$1289,649,0,0,0$1290,649,0,0,0$1291,649,0,0,0$1292,649,0,0,0$1293,649,0,0,0$1294,649,0,0,0$1295,649,0,0,0$1296,649,0,0,0$1297,649,0,0,0$1298,649,0,0,0$1299,649,0,0,0$1300,649,0,0,0$1301,649,0,0,0$1302,649,0,0,0$1303,649,0,0,0$1304,649,0,0,0$1305,649,0,0,0$1306,649,0,0,0$1307,649,0,0,0$1308,649,0,0,0$1309,649,0,0,0$1310,649,0,0,0$1311,649,0,0,0");
        private static ColorArray loginByAccount = ColorArray.FromThresholdString(70, "1282,639,0,0,0$1245,634,0,0,0$1246,634,0,0,0$1247,634,0,0,0$1248,634,0,0,0$1249,634,0,0,0$1250,634,0,0,0$1251,634,0,0,0$1252,634,0,0,0$1253,634,0,0,0$1254,634,0,0,0$1255,634,0,0,0$1256,634,0,0,0$1257,634,0,0,0$1258,634,0,0,0$1259,634,0,0,0$1260,634,0,0,0$1261,634,0,0,0$1262,634,0,0,0$1263,634,0,0,0$1264,634,0,0,0$1265,634,0,0,0$1266,634,0,0,0$1267,634,0,0,0$1268,634,0,0,0$1269,634,0,0,0$1270,634,0,0,0$1271,634,0,0,0$1272,634,0,0,0$1273,634,0,0,0$1274,634,0,0,0$1275,634,0,0,0$1276,634,0,0,0$1277,634,0,0,0$1278,634,0,0,0$1279,634,0,0,0$1280,634,0,0,0$1281,634,0,0,0$1282,634,0,0,0$1283,634,0,0,0$1284,634,0,0,0$1285,634,0,0,0$1286,634,0,0,0$1287,634,0,0,0$1288,634,0,0,0$1289,634,0,0,0$1290,634,0,0,0$1291,634,0,0,0$1292,634,0,0,0$1293,634,0,0,0$1294,634,0,0,0$1295,634,0,0,0$1296,634,0,0,0$1297,634,0,0,0$1298,634,0,0,0$1299,634,0,0,0$1300,634,0,0,0$1301,634,0,0,0$1302,634,0,0,0$1303,634,0,0,0$1304,634,0,0,0$1245,635,0,0,0$1246,635,0,0,0$1248,635,0,0,0$1249,635,0,0,0$1251,635,0,0,0$1252,635,0,0,0$1254,635,0,0,0$1255,635,0,0,0$1257,635,0,0,0$1258,635,0,0,0$1260,635,0,0,0$1261,635,0,0,0$1263,635,0,0,0$1264,635,0,0,0$1266,635,0,0,0$1267,635,0,0,0$1269,635,0,0,0$1270,635,0,0,0$1272,635,0,0,0$1273,635,0,0,0$1275,635,0,0,0$1276,635,0,0,0$1278,635,0,0,0$1279,635,0,0,0$1281,635,0,0,0$1282,635,0,0,0$1284,635,0,0,0$1285,635,0,0,0$1287,635,0,0,0$1288,635,0,0,0$1290,635,0,0,0$1291,635,0,0,0$1293,635,0,0,0$1294,635,0,0,0$1296,635,0,0,0$1297,635,0,0,0$1299,635,0,0,0$1300,635,0,0,0$1302,635,0,0,0$1303,635,0,0,0$1245,636,0,0,0$1246,636,0,0,0$1247,636,0,0,0$1248,636,0,0,0$1249,636,0,0,0$1250,636,0,0,0$1251,636,0,0,0$1252,636,0,0,0$1253,636,0,0,0$1254,636,0,0,0$1255,636,0,0,0$1256,636,0,0,0$1257,636,0,0,0$1258,636,0,0,0$1259,636,0,0,0$1260,636,0,0,0$1261,636,0,0,0$1262,636,0,0,0$1263,636,0,0,0$1264,636,0,0,0$1265,636,0,0,0$1266,636,0,0,0$1267,636,0,0,0$1268,636,0,0,0$1269,636,0,0,0$1270,636,0,0,0$1271,636,0,0,0$1272,636,0,0,0$1273,636,0,0,0$1274,636,0,0,0$1275,636,0,0,0$1276,636,0,0,0$1277,636,0,0,0$1278,636,0,0,0$1279,636,0,0,0$1280,636,0,0,0$1281,636,0,0,0$1282,636,0,0,0$1283,636,0,0,0$1284,636,0,0,0$1285,636,0,0,0$1286,636,0,0,0$1287,636,0,0,0$1288,636,0,0,0$1289,636,0,0,0$1290,636,0,0,0$1291,636,0,0,0$1292,636,0,0,0$1293,636,0,0,0$1294,636,0,0,0$1295,636,0,0,0$1296,636,0,0,0$1297,636,0,0,0$1298,636,0,0,0$1299,636,0,0,0$1300,636,0,0,0$1301,636,0,0,0$1302,636,0,0,0$1303,636,0,0,0$1304,636,0,0,0$1246,637,0,0,0$1247,637,0,0,0$1250,637,0,0,0$1252,637,255,255,255$1253,637,255,255,255$1254,637,255,255,255$1255,637,255,255,255$1256,637,255,255,255$1257,637,255,255,255$1258,637,255,255,255$1259,637,255,255,255$1261,637,0,0,0$1262,637,0,0,0$1263,637,0,0,0$1264,637,0,0,0$1265,637,0,0,0$1266,637,0,0,0$1269,637,0,0,0$1270,637,0,0,0$1271,637,0,0,0$1272,637,0,0,0$1273,637,0,0,0$1275,637,255,255,255$1276,637,255,255,255$1277,637,255,255,255$1278,637,255,255,255$1280,637,255,255,255$1281,637,255,255,255$1282,637,255,255,255$1283,637,255,255,255$1284,637,255,255,255$1287,637,255,255,255$1288,637,255,255,255$1289,637,255,255,255$1290,637,255,255,255$1292,637,255,255,255$1295,637,255,255,255$1297,637,0,0,0$1298,637,0,0,0$1300,637,255,255,255$1301,637,255,255,255$1302,637,255,255,255$1303,637,255,255,255$1304,637,255,255,255$1246,638,0,0,0$1249,638,0,0,0$1252,638,255,255,255$1254,638,0,0,0$1255,638,0,0,0$1257,638,0,0,0$1259,638,255,255,255$1261,638,0,0,0$1263,638,255,255,255$1264,638,255,255,255$1265,638,255,255,255$1266,638,255,255,255$1267,638,255,255,255$1268,638,255,255,255$1269,638,255,255,255$1270,638,255,255,255$1271,638,255,255,255$1272,638,255,255,255$1275,638,0,0,0$1278,638,0,0,0$1279,638,0,0,0$1281,638,0,0,0$1282,638,0,0,0$1285,638,0,0,0$1287,638,0,0,0$1288,638,0,0,0$1290,638,255,255,255$1293,638,255,255,255$1294,638,255,255,255$1296,638,0,0,0$1297,638,0,0,0$1299,638,0,0,0$1300,638,0,0,0$1302,638,0,0,0$1303,638,0,0,0$1246,639,255,255,255$1248,639,0,0,0$1249,639,0,0,0$1250,639,0,0,0$1252,639,255,255,255$1253,639,255,255,255$1254,639,255,255,255$1255,639,255,255,255$1256,639,255,255,255$1257,639,255,255,255$1258,639,255,255,255$1259,639,255,255,255$1261,639,0,0,0$1264,639,0,0,0$1265,639,0,0,0$1267,639,255,255,255$1269,639,0,0,0$1274,639,0,0,0$1278,639,0,0,0$1280,639,255,255,255$1285,639,0,0,0$1287,639,255,255,255$1289,639,255,255,255$1291,639,0,0,0$1293,639,255,255,255$1296,639,255,255,255$1298,639,0,0,0$1300,639,255,255,255$1301,639,255,255,255$1302,639,255,255,255$1303,639,255,255,255$1304,639,255,255,255$1247,640,0,0,0$1248,640,0,0,0$1249,640,0,0,0$1250,640,0,0,0$1252,640,255,255,255$1254,640,0,0,0$1255,640,0,0,0$1256,640,0,0,0$1257,640,0,0,0$1259,640,255,255,255$1261,640,0,0,0$1262,640,0,0,0$1269,640,255,255,255$1271,640,0,0,0$1272,640,0,0,0$1273,640,0,0,0$1274,640,0,0,0$1277,640,0,0,0$1278,640,0,0,0$1281,640,0,0,0$1282,640,0,0,0$1285,640,0,0,0$1286,640,0,0,0$1288,640,255,255,255$1289,640,255,255,255$1290,640,255,255,255$1291,640,255,255,255$1292,640,255,255,255$1293,640,255,255,255$1294,640,255,255,255$1295,640,255,255,255$1297,640,0,0,0$1298,640,0,0,0$1299,640,0,0,0$1300,640,0,0,0$1301,640,0,0,0$1302,640,0,0,0$1303,640,0,0,0$1304,640,0,0,0$1246,641,0,0,0$1248,641,0,0,0$1249,641,0,0,0$1251,641,0,0,0$1252,641,0,0,0$1254,641,0,0,0$1255,641,0,0,0$1257,641,0,0,0$1258,641,0,0,0$1260,641,0,0,0$1261,641,0,0,0$1263,641,255,255,255$1268,641,255,255,255$1272,641,255,255,255$1275,641,255,255,255$1276,641,255,255,255$1277,641,255,255,255$1281,641,0,0,0$1283,641,255,255,255$1285,641,0,0,0$1287,641,255,255,255$1290,641,0,0,0$1291,641,0,0,0$1293,641,0,0,0$1295,641,255,255,255$1297,641,0,0,0$1299,641,255,255,255$1300,641,255,255,255$1301,641,255,255,255$1302,641,255,255,255$1303,641,255,255,255$1304,641,255,255,255$1245,642,255,255,255$1246,642,255,255,255$1247,642,255,255,255$1248,642,255,255,255$1250,642,255,255,255$1251,642,255,255,255$1252,642,255,255,255$1253,642,255,255,255$1254,642,255,255,255$1255,642,255,255,255$1256,642,255,255,255$1257,642,255,255,255$1258,642,255,255,255$1259,642,255,255,255$1260,642,255,255,255$1261,642,255,255,255$1263,642,0,0,0$1265,642,255,255,255$1266,642,255,255,255$1268,642,0,0,0$1269,642,0,0,0$1275,642,255,255,255$1280,642,255,255,255$1281,642,255,255,255$1282,642,255,255,255$1283,642,255,255,255$1284,642,255,255,255$1286,642,255,255,255$1288,642,255,255,255$1289,642,255,255,255$1290,642,255,255,255$1291,642,255,255,255$1292,642,255,255,255$1293,642,255,255,255$1294,642,255,255,255$1295,642,255,255,255$1296,642,255,255,255$1297,642,255,255,255$1299,642,0,0,0$1300,642,0,0,0$1301,642,0,0,0$1302,642,0,0,0$1246,643,255,255,255$1248,643,0,0,0$1249,643,0,0,0$1250,643,0,0,0$1251,643,0,0,0$1254,643,0,0,0$1255,643,0,0,0$1256,643,0,0,0$1257,643,0,0,0$1258,643,0,0,0$1259,643,0,0,0$1260,643,0,0,0$1261,643,0,0,0$1263,643,255,255,255$1264,643,255,255,255$1266,643,255,255,255$1267,643,255,255,255$1268,643,255,255,255$1269,643,255,255,255$1270,643,255,255,255$1272,643,0,0,0$1273,643,0,0,0$1279,643,0,0,0$1280,643,0,0,0$1281,643,0,0,0$1282,643,0,0,0$1283,643,0,0,0$1286,643,0,0,0$1290,643,0,0,0$1291,643,0,0,0$1292,643,0,0,0$1293,643,0,0,0$1295,643,255,255,255$1297,643,0,0,0$1298,643,0,0,0$1300,643,255,255,255$1302,643,0,0,0$1304,643,255,255,255$1248,644,0,0,0$1249,644,0,0,0$1252,644,255,255,255$1253,644,255,255,255$1254,644,255,255,255$1255,644,255,255,255$1256,644,255,255,255$1257,644,255,255,255$1258,644,255,255,255$1259,644,255,255,255$1261,644,0,0,0$1266,644,0,0,0$1269,644,0,0,0$1270,644,0,0,0$1273,644,0,0,0$1279,644,255,255,255$1280,644,255,255,255$1281,644,255,255,255$1282,644,255,255,255$1283,644,255,255,255$1288,644,255,255,255$1289,644,255,255,255$1290,644,255,255,255$1291,644,255,255,255$1292,644,255,255,255$1293,644,255,255,255$1294,644,255,255,255$1295,644,255,255,255$1297,644,0,0,0$1299,644,0,0,0$1301,644,255,255,255$1304,644,255,255,255$1247,645,255,255,255$1249,645,0,0,0$1250,645,0,0,0$1251,645,0,0,0$1252,645,0,0,0$1253,645,0,0,0$1254,645,0,0,0$1255,645,0,0,0$1256,645,0,0,0$1257,645,0,0,0$1258,645,0,0,0$1261,645,0,0,0$1262,645,0,0,0$1265,645,0,0,0$1266,645,0,0,0$1269,645,0,0,0$1270,645,0,0,0$1273,645,0,0,0$1274,645,0,0,0$1279,645,0,0,0$1280,645,0,0,0$1281,645,0,0,0$1282,645,0,0,0$1283,645,0,0,0$1286,645,0,0,0$1287,645,0,0,0$1289,645,255,255,255$1291,645,0,0,0$1292,645,0,0,0$1294,645,255,255,255$1296,645,0,0,0$1297,645,0,0,0$1298,645,0,0,0$1299,645,0,0,0$1301,645,255,255,255$1245,646,255,255,255$1248,646,255,255,255$1249,646,255,255,255$1251,646,0,0,0$1252,646,0,0,0$1253,646,0,0,0$1254,646,0,0,0$1255,646,0,0,0$1256,646,0,0,0$1257,646,0,0,0$1259,646,255,255,255$1261,646,0,0,0$1262,646,0,0,0$1264,646,255,255,255$1265,646,255,255,255$1266,646,255,255,255$1267,646,255,255,255$1268,646,255,255,255$1269,646,255,255,255$1270,646,255,255,255$1271,646,255,255,255$1273,646,0,0,0$1274,646,0,0,0$1276,646,255,255,255$1277,646,255,255,255$1279,646,0,0,0$1280,646,0,0,0$1281,646,0,0,0$1282,646,0,0,0$1284,646,255,255,255$1286,646,0,0,0$1287,646,0,0,0$1288,646,0,0,0$1290,646,255,255,255$1293,646,255,255,255$1295,646,0,0,0$1296,646,0,0,0$1297,646,0,0,0$1299,646,255,255,255$1300,646,255,255,255$1302,646,0,0,0$1246,647,0,0,0$1248,647,0,0,0$1249,647,0,0,0$1251,647,0,0,0$1252,647,0,0,0$1255,647,255,255,255$1256,647,255,255,255$1257,647,255,255,255$1258,647,255,255,255$1260,647,0,0,0$1261,647,0,0,0$1263,647,0,0,0$1264,647,0,0,0$1266,647,0,0,0$1267,647,0,0,0$1269,647,0,0,0$1270,647,0,0,0$1273,647,0,0,0$1279,647,0,0,0$1282,647,255,255,255$1283,647,255,255,255$1284,647,255,255,255$1287,647,255,255,255$1288,647,255,255,255$1289,647,255,255,255$1290,647,255,255,255$1291,647,255,255,255$1292,647,255,255,255$1293,647,255,255,255$1294,647,255,255,255$1295,647,255,255,255$1296,647,255,255,255$1297,647,255,255,255$1300,647,0,0,0$1302,647,255,255,255$1303,647,255,255,255$1245,648,0,0,0$1246,648,0,0,0$1247,648,0,0,0$1248,648,0,0,0$1249,648,0,0,0$1250,648,0,0,0$1251,648,0,0,0$1252,648,0,0,0$1253,648,0,0,0$1254,648,0,0,0$1255,648,0,0,0$1256,648,0,0,0$1257,648,0,0,0$1258,648,0,0,0$1259,648,0,0,0$1260,648,0,0,0$1261,648,0,0,0$1262,648,0,0,0$1263,648,0,0,0$1264,648,0,0,0$1265,648,0,0,0$1266,648,0,0,0$1267,648,0,0,0$1268,648,0,0,0$1269,648,0,0,0$1270,648,0,0,0$1271,648,0,0,0$1272,648,0,0,0$1273,648,0,0,0$1274,648,0,0,0$1275,648,0,0,0$1276,648,0,0,0$1277,648,0,0,0$1278,648,0,0,0$1279,648,0,0,0$1280,648,0,0,0$1281,648,0,0,0$1282,648,0,0,0$1283,648,0,0,0$1284,648,0,0,0$1285,648,0,0,0$1286,648,0,0,0$1287,648,0,0,0$1288,648,0,0,0$1289,648,0,0,0$1290,648,0,0,0$1291,648,0,0,0$1292,648,0,0,0$1293,648,0,0,0$1294,648,0,0,0$1295,648,0,0,0$1296,648,0,0,0$1297,648,0,0,0$1298,648,0,0,0$1299,648,0,0,0$1300,648,0,0,0$1301,648,0,0,0$1302,648,0,0,0$1303,648,0,0,0$1304,648,0,0,0");
        //未选中WeGame主页
        private static ColorArray UnSelectHome = ColorArray.FromThresholdString(160, "844,130,255,255,255$844,129,0,0,0$845,129,255,255,255$846,129,255,255,255$847,129,0,0,0$847,128,0,0,0$846,128,0,0,0$845,128,0,0,0$843,130,0,0,0$845,130,255,255,255$846,130,255,255,255$847,130,255,255,255$848,130,0,0,0$848,131,255,255,255$849,131,0,0,0$849,132,255,255,255$850,132,0,0,0$851,133,255,255,255$852,133,0,0,0$852,134,255,255,255$853,134,0,0,0$853,135,255,255,255$854,135,0,0,0$854,136,255,255,255$855,136,0,0,0$855,137,255,255,255$856,137,255,255,255$857,137,0,0,0$857,138,255,255,255$858,138,0,0,0$858,139,255,255,255$859,139,0,0,0$859,140,255,255,255$860,140,0,0,0$860,141,255,255,255$861,141,0,0,0$861,142,255,255,255$862,142,0,0,0$862,143,0,0,0$861,143,255,255,255$861,144,255,255,255$862,144,0,0,0$862,145,0,0,0$861,145,255,255,255$861,146,255,255,255$862,146,0,0,0$862,147,0,0,0$861,147,255,255,255$861,148,255,255,255$862,148,0,0,0$862,149,0,0,0$861,149,255,255,255$861,150,255,255,255$862,150,0,0,0$862,151,0,0,0$861,151,255,255,255$861,152,255,255,255$862,152,0,0,0$862,153,0,0,0$861,153,255,255,255$861,154,0,0,0$860,154,255,255,255$860,155,0,0,0$859,155,255,255,255$859,156,0,0,0$858,156,0,0,0$858,155,255,255,255$857,155,255,255,255$857,156,0,0,0$856,156,0,0,0$856,155,255,255,255$855,155,255,255,255$855,156,0,0,0$854,156,0,0,0$854,155,255,255,255$853,155,255,255,255$853,156,0,0,0$852,156,0,0,0$852,155,255,255,255$851,155,255,255,255$851,156,0,0,0$850,156,0,0,0$850,155,255,255,255$849,155,255,255,255$849,156,0,0,0$848,156,0,0,0$848,155,255,255,255$847,155,255,255,255$847,156,0,0,0$846,156,0,0,0$846,155,255,255,255$845,155,255,255,255$845,156,0,0,0$844,156,0,0,0$844,155,255,255,255$843,155,255,255,255$843,156,0,0,0$842,156,0,0,0$842,155,255,255,255$841,155,255,255,255$841,156,0,0,0$840,156,0,0,0$840,155,255,255,255$839,155,255,255,255$839,156,0,0,0$838,156,0,0,0$838,155,255,255,255$837,155,255,255,255$837,156,0,0,0$836,156,0,0,0$836,155,255,255,255$835,155,255,255,255$835,156,0,0,0$834,156,0,0,0$834,155,255,255,255$833,155,255,255,255$833,156,0,0,0$832,156,0,0,0$832,155,255,255,255$831,155,255,255,255$831,156,0,0,0$830,156,0,0,0$830,155,0,0,0$831,155,255,255,255$831,154,255,255,255$830,154,0,0,0$830,153,255,255,255$829,153,0,0,0$829,152,0,0,0$830,152,255,255,255$830,151,255,255,255$829,151,0,0,0$829,150,0,0,0$830,150,255,255,255$830,149,255,255,255$829,149,0,0,0$829,148,0,0,0$830,148,255,255,255$830,147,255,255,255$829,147,0,0,0$829,146,0,0,0$830,146,255,255,255$830,145,255,255,255$829,145,0,0,0$829,144,0,0,0$830,144,255,255,255$830,143,255,255,255$829,143,0,0,0$829,142,0,0,0$830,142,255,255,255$830,141,0,0,0$831,141,255,255,255$831,140,0,0,0$832,140,255,255,255$832,139,0,0,0$833,139,255,255,255$833,138,0,0,0$834,138,255,255,255$834,137,0,0,0$835,137,255,255,255$835,136,0,0,0$836,136,0,0,0$836,137,255,255,255$837,136,255,255,255$837,135,0,0,0$838,135,255,255,255$838,134,0,0,0$839,134,255,255,255$839,133,0,0,0$840,133,255,255,255$841,132,0,0,0$842,132,255,255,255$842,131,0,0,0");
@@ -34,8 +34,7 @@
        //DNF游戏项
        private static ColorArray DNFItem = ColorArray.FromThresholdString(126, "932,316,0,0,0$931,312,0,0,0$931,313,255,255,255$932,313,0,0,0$932,312,0,0,0$932,314,0,0,0$931,314,255,255,255$931,315,255,255,255$932,315,0,0,0$932,316,0,0,0$931,316,255,255,255$931,317,255,255,255$932,317,255,255,255$933,316,0,0,0$934,316,0,0,0$935,316,0,0,0$936,316,0,0,0$937,316,0,0,0$938,316,0,0,0$938,317,0,0,0$937,317,255,255,255$936,317,255,255,255$935,317,255,255,255$934,317,255,255,255$933,317,255,255,255$932,318,0,0,0$933,318,0,0,0$934,318,0,0,0$935,318,0,0,0$936,318,0,0,0$937,318,0,0,0$932,319,0,0,0$931,319,255,255,255$931,320,255,255,255$932,320,0,0,0$932,321,0,0,0$931,321,255,255,255$931,322,255,255,255$932,322,0,0,0$932,323,0,0,0$933,323,0,0,0$934,323,0,0,0$935,323,0,0,0$936,323,0,0,0$937,323,0,0,0$937,324,0,0,0$936,324,255,255,255$935,324,255,255,255$934,324,255,255,255$933,324,255,255,255$932,324,255,255,255$932,325,0,0,0$933,325,0,0,0$934,325,0,0,0$935,325,0,0,0$936,325,0,0,0$929,325,0,0,0$929,324,255,255,255$928,324,255,255,255$928,325,0,0,0$927,325,0,0,0$927,324,255,255,255$926,324,255,255,255$926,325,0,0,0$925,325,0,0,0$925,324,255,255,255$924,324,0,0,0$924,323,0,0,0$925,323,0,0,0$926,323,0,0,0$927,323,0,0,0$928,323,0,0,0$929,323,0,0,0$929,322,0,0,0$929,321,0,0,0$930,321,255,255,255$930,320,255,255,255$929,320,0,0,0$929,319,0,0,0$930,319,255,255,255$930,318,255,255,255$929,318,0,0,0$929,317,255,255,255$928,317,255,255,255$928,318,0,0,0$927,318,0,0,0$927,317,255,255,255$926,317,255,255,255$926,318,0,0,0$925,318,0,0,0$925,317,255,255,255$924,317,255,255,255$924,318,0,0,0$923,318,0,0,0$923,317,0,0,0$923,316,0,0,0$924,316,0,0,0$925,316,0,0,0$926,316,0,0,0$927,316,0,0,0$928,316,0,0,0$929,316,0,0,0$930,316,255,255,255$930,315,255,255,255$929,315,0,0,0$929,314,0,0,0$930,314,255,255,255$930,313,255,255,255$929,313,0,0,0$929,312,0,0,0$930,312,0,0,0$824,312,255,255,255$820,312,0,0,0$821,312,255,255,255$822,312,0,0,0$823,312,0,0,0$824,312,255,255,255$825,312,255,255,255$826,312,255,255,255$827,312,0,0,0$828,312,0,0,0$829,312,0,0,0$830,312,0,0,0$843,312,0,0,0$845,312,0,0,0$844,312,255,255,255$845,313,0,0,0$843,313,0,0,0$829,313,0,0,0$828,313,255,255,255$826,313,255,255,255$825,313,0,0,0$822,313,0,0,0$821,313,255,255,255$820,313,0,0,0$820,314,0,0,0$821,314,255,255,255$822,314,0,0,0$826,314,0,0,0$827,314,255,255,255$829,314,255,255,255$830,314,0,0,0$843,314,0,0,0$844,314,255,255,255$845,314,0,0,0$845,315,0,0,0$844,315,255,255,255$843,315,0,0,0$842,315,0,0,0$841,315,255,255,255$839,315,255,255,255$838,315,0,0,0$831,315,0,0,0$830,315,255,255,255$827,315,255,255,255$826,315,0,0,0$822,315,0,0,0$821,315,255,255,255$820,315,0,0,0$820,316,0,0,0$821,316,255,255,255$822,316,0,0,0$825,316,0,0,0$826,316,255,255,255$827,316,255,255,255$828,316,0,0,0$829,316,255,255,255$830,316,255,255,255$831,316,0,0,0$834,316,0,0,0$835,316,255,255,255$836,316,0,0,0$837,316,0,0,0$838,316,255,255,255$839,316,255,255,255$841,316,255,255,255$842,316,0,0,0$843,316,0,0,0$844,316,255,255,255$845,316,0,0,0$845,317,0,0,0$844,317,255,255,255$843,317,0,0,0$841,317,0,0,0$834,317,255,255,255$833,317,0,0,0$832,317,255,255,255$829,317,255,255,255$828,317,0,0,0$827,317,0,0,0$826,317,255,255,255$825,317,255,255,255$824,317,0,0,0$822,317,0,0,0$821,317,255,255,255$820,317,0,0,0$820,329,0,0,0$821,329,255,255,255$822,329,0,0,0$822,330,255,255,255$821,330,0,0,0$822,331,0,0,0$844,330,0,0,0$843,330,255,255,255$843,329,0,0,0$844,329,255,255,255$845,329,0,0,0$845,328,0,0,0$844,328,255,255,255$843,328,0,0,0$843,309,0,0,0$844,309,255,255,255$845,309,0,0,0$845,308,0,0,0$844,308,255,255,255$843,308,255,255,255$842,308,0,0,0$842,307,255,255,255$843,307,255,255,255$844,307,0,0,0$844,306,0,0,0$843,306,0,0,0");
        //需要更新按钮
        private static ColorArray UpdateButton = ColorArray.FromThresholdString(251, "1701,839,0,0,0$1699,839,0,0,0$1700,839,0,0,0$1702,839,0,0,0$1703,839,0,0,0$1704,839,0,0,0$1705,839,0,0,0$1706,839,0,0,0$1707,839,0,0,0$1708,839,0,0,0$1709,839,0,0,0$1710,839,0,0,0$1711,839,0,0,0$1712,839,0,0,0$1713,839,0,0,0$1714,839,0,0,0$1715,839,0,0,0$1716,839,0,0,0$1717,839,0,0,0$1718,839,0,0,0$1719,839,0,0,0$1720,839,0,0,0$1721,839,0,0,0$1722,839,0,0,0$1723,839,0,0,0$1724,839,0,0,0$1725,839,0,0,0$1726,839,0,0,0$1727,839,0,0,0$1728,839,0,0,0$1729,839,0,0,0$1730,839,255,255,255$1731,839,0,0,0$1732,839,0,0,0$1733,839,0,0,0$1734,839,0,0,0$1735,839,0,0,0$1736,839,0,0,0$1737,839,0,0,0$1738,839,0,0,0$1739,839,0,0,0$1740,839,0,0,0$1741,839,0,0,0$1742,839,255,255,255$1743,839,255,255,255$1744,839,255,255,255$1745,839,0,0,0$1746,839,0,0,0$1747,839,0,0,0$1748,839,0,0,0$1749,839,0,0,0$1750,839,0,0,0$1751,839,0,0,0$1752,839,0,0,0$1753,839,0,0,0$1754,839,0,0,0$1755,839,0,0,0$1756,839,0,0,0$1699,840,0,0,0$1700,840,0,0,0$1701,840,0,0,0$1702,840,255,255,255$1703,840,255,255,255$1704,840,255,255,255$1705,840,255,255,255$1706,840,255,255,255$1707,840,255,255,255$1708,840,255,255,255$1709,840,255,255,255$1710,840,255,255,255$1711,840,255,255,255$1712,840,255,255,255$1713,840,255,255,255$1714,840,255,255,255$1715,840,255,255,255$1716,840,255,255,255$1717,840,255,255,255$1718,840,255,255,255$1719,840,255,255,255$1720,840,255,255,255$1721,840,255,255,255$1722,840,0,0,0$1723,840,0,0,0$1724,840,0,0,0$1725,840,0,0,0$1726,840,0,0,0$1727,840,0,0,0$1728,840,0,0,0$1729,840,0,0,0$1730,840,255,255,255$1731,840,255,255,255$1732,840,0,0,0$1733,840,0,0,0$1734,840,0,0,0$1735,840,0,0,0$1736,840,0,0,0$1737,840,0,0,0$1738,840,255,255,255$1739,840,255,255,255$1740,840,255,255,255$1741,840,255,255,255$1742,840,0,0,0$1743,840,0,0,0$1744,840,0,0,0$1745,840,0,0,0$1746,840,0,0,0$1747,840,0,0,0$1748,840,0,0,0$1749,840,0,0,0$1750,840,0,0,0$1751,840,0,0,0$1752,840,0,0,0$1753,840,0,0,0$1754,840,0,0,0$1755,840,0,0,0$1756,840,0,0,0$1699,841,0,0,0$1700,841,0,0,0$1701,841,0,0,0$1702,841,0,0,0$1703,841,0,0,0$1704,841,0,0,0$1705,841,0,0,0$1706,841,0,0,0$1707,841,0,0,0$1708,841,0,0,0$1709,841,0,0,0$1710,841,0,0,0$1711,841,255,255,255$1712,841,255,255,255$1713,841,0,0,0$1714,841,0,0,0$1715,841,0,0,0$1716,841,0,0,0$1717,841,0,0,0$1718,841,0,0,0$1719,841,0,0,0$1720,841,0,0,0$1721,841,0,0,0$1722,841,0,0,0$1723,841,0,0,0$1724,841,0,0,0$1725,841,0,0,0$1726,841,255,255,255$1727,841,255,255,255$1728,841,255,255,255$1729,841,255,255,255$1730,841,255,255,255$1731,841,255,255,255$1732,841,255,255,255$1733,841,255,255,255$1734,841,255,255,255$1735,841,255,255,255$1736,841,0,0,0$1737,841,255,255,255$1738,841,255,255,255$1739,841,0,0,0$1740,841,0,0,0$1741,841,0,0,0$1742,841,0,0,0$1743,841,0,0,0$1744,841,0,0,0$1745,841,0,0,0$1746,841,0,0,0$1747,841,0,0,0$1748,841,0,0,0$1749,841,0,0,0$1750,841,0,0,0$1751,841,0,0,0$1752,841,0,0,0$1753,841,0,0,0$1754,841,0,0,0$1755,841,0,0,0$1756,841,0,0,0$1699,842,0,0,0$1700,842,0,0,0$1701,842,0,0,0$1702,842,0,0,0$1703,842,0,0,0$1704,842,0,0,0$1705,842,0,0,0$1706,842,0,0,0$1707,842,0,0,0$1708,842,0,0,0$1709,842,0,0,0$1710,842,0,0,0$1711,842,255,255,255$1712,842,255,255,255$1713,842,0,0,0$1714,842,0,0,0$1715,842,0,0,0$1716,842,0,0,0$1717,842,0,0,0$1718,842,0,0,0$1719,842,0,0,0$1720,842,0,0,0$1721,842,0,0,0$1722,842,0,0,0$1723,842,0,0,0$1724,842,0,0,0$1725,842,0,0,0$1726,842,0,0,0$1727,842,0,0,0$1728,842,0,0,0$1729,842,0,0,0$1730,842,0,0,0$1731,842,0,0,0$1732,842,0,0,0$1733,842,0,0,0$1734,842,0,0,0$1735,842,0,0,0$1736,842,0,0,0$1737,842,255,255,255$1738,842,255,255,255$1739,842,0,0,0$1740,842,0,0,0$1741,842,0,0,0$1742,842,0,0,0$1743,842,0,0,0$1744,842,0,0,0$1745,842,0,0,0$1746,842,0,0,0$1747,842,0,0,0$1748,842,0,0,0$1749,842,0,0,0$1750,842,0,0,0$1751,842,0,0,0$1752,842,0,0,0$1753,842,0,0,0$1754,842,0,0,0$1755,842,0,0,0$1756,842,0,0,0$1699,843,0,0,0$1700,843,0,0,0$1701,843,0,0,0$1702,843,0,0,0$1703,843,0,0,0$1704,843,255,255,255$1705,843,255,255,255$1706,843,255,255,255$1707,843,255,255,255$1708,843,255,255,255$1709,843,255,255,255$1710,843,255,255,255$1711,843,255,255,255$1712,843,255,255,255$1713,843,255,255,255$1714,843,255,255,255$1715,843,255,255,255$1716,843,255,255,255$1717,843,255,255,255$1718,843,255,255,255$1719,843,255,255,255$1720,843,0,0,0$1721,843,0,0,0$1722,843,0,0,0$1723,843,0,0,0$1724,843,0,0,0$1725,843,0,0,0$1726,843,0,0,0$1727,843,0,0,0$1728,843,255,255,255$1729,843,0,0,0$1730,843,0,0,0$1731,843,0,0,0$1732,843,0,0,0$1733,843,255,255,255$1734,843,0,0,0$1735,843,0,0,0$1736,843,0,0,0$1737,843,255,255,255$1738,843,255,255,255$1739,843,0,0,0$1740,843,0,0,0$1741,843,0,0,0$1742,843,0,0,0$1743,843,0,0,0$1744,843,0,0,0$1745,843,0,0,0$1746,843,0,0,0$1747,843,0,0,0$1748,843,0,0,0$1749,843,0,0,0$1750,843,0,0,0$1751,843,0,0,0$1752,843,0,0,0$1753,843,0,0,0$1754,843,0,0,0$1755,843,0,0,0$1756,843,0,0,0$1699,844,0,0,0$1700,844,0,0,0$1701,844,0,0,0$1702,844,0,0,0$1703,844,0,0,0$1704,844,255,255,255$1705,844,0,0,0$1706,844,0,0,0$1707,844,0,0,0$1708,844,0,0,0$1709,844,0,0,0$1710,844,0,0,0$1711,844,255,255,255$1712,844,255,255,255$1713,844,0,0,0$1714,844,0,0,0$1715,844,0,0,0$1716,844,0,0,0$1717,844,0,0,0$1718,844,0,0,0$1719,844,255,255,255$1720,844,0,0,0$1721,844,0,0,0$1722,844,0,0,0$1723,844,0,0,0$1724,844,0,0,0$1725,844,0,0,0$1726,844,0,0,0$1727,844,0,0,0$1728,844,255,255,255$1729,844,0,0,0$1730,844,0,0,0$1731,844,0,0,0$1732,844,255,255,255$1733,844,255,255,255$1734,844,0,0,0$1735,844,0,0,0$1736,844,0,0,0$1737,844,255,255,255$1738,844,255,255,255$1739,844,0,0,0$1740,844,0,0,0$1741,844,0,0,0$1742,844,0,0,0$1743,844,0,0,0$1744,844,0,0,0$1745,844,0,0,0$1746,844,0,0,0$1747,844,0,0,0$1748,844,0,0,0$1749,844,0,0,0$1750,844,0,0,0$1751,844,0,0,0$1752,844,0,0,0$1753,844,0,0,0$1754,844,0,0,0$1755,844,0,0,0$1756,844,0,0,0$1699,845,0,0,0$1700,845,0,0,0$1701,845,0,0,0$1702,845,0,0,0$1703,845,0,0,0$1704,845,255,255,255$1705,845,0,0,0$1706,845,0,0,0$1707,845,0,0,0$1708,845,0,0,0$1709,845,0,0,0$1710,845,0,0,0$1711,845,255,255,255$1712,845,255,255,255$1713,845,0,0,0$1714,845,0,0,0$1715,845,0,0,0$1716,845,0,0,0$1717,845,0,0,0$1718,845,0,0,0$1719,845,255,255,255$1720,845,0,0,0$1721,845,0,0,0$1722,845,0,0,0$1723,845,0,0,0$1724,845,0,0,0$1725,845,0,0,0$1726,845,0,0,0$1727,845,0,0,0$1728,845,0,0,0$1729,845,0,0,0$1730,845,0,0,0$1731,845,0,0,0$1732,845,255,255,255$1733,845,0,0,0$1734,845,0,0,0$1735,845,0,0,0$1736,845,0,0,0$1737,845,255,255,255$1738,845,255,255,255$1739,845,0,0,0$1740,845,0,0,0$1741,845,0,0,0$1742,845,0,0,0$1743,845,0,0,0$1744,845,0,0,0$1745,845,0,0,0$1746,845,0,0,0$1747,845,0,0,0$1748,845,0,0,0$1749,845,0,0,0$1750,845,0,0,0$1751,845,0,0,0$1752,845,0,0,0$1753,845,0,0,0$1754,845,0,0,0$1755,845,0,0,0$1756,845,0,0,0$1699,846,0,0,0$1700,846,0,0,0$1701,846,0,0,0$1702,846,0,0,0$1703,846,0,0,0$1704,846,255,255,255$1705,846,0,0,0$1706,846,0,0,0$1707,846,0,0,0$1708,846,0,0,0$1709,846,0,0,0$1710,846,0,0,0$1711,846,255,255,255$1712,846,255,255,255$1713,846,0,0,0$1714,846,0,0,0$1715,846,0,0,0$1716,846,0,0,0$1717,846,0,0,0$1718,846,0,0,0$1719,846,255,255,255$1720,846,0,0,0$1721,846,0,0,0$1722,846,0,0,0$1723,846,0,0,0$1724,846,0,0,0$1725,846,255,255,255$1726,846,255,255,255$1727,846,255,255,255$1728,846,255,255,255$1729,846,255,255,255$1730,846,255,255,255$1731,846,255,255,255$1732,846,255,255,255$1733,846,255,255,255$1734,846,255,255,255$1735,846,255,255,255$1736,846,0,0,0$1737,846,255,255,255$1738,846,255,255,255$1739,846,255,255,255$1740,846,255,255,255$1741,846,255,255,255$1742,846,255,255,255$1743,846,255,255,255$1744,846,255,255,255$1745,846,255,255,255$1746,846,255,255,255$1747,846,0,0,0$1748,846,0,0,0$1749,846,0,0,0$1750,846,0,0,0$1751,846,0,0,0$1752,846,0,0,0$1753,846,0,0,0$1754,846,0,0,0$1755,846,0,0,0$1756,846,0,0,0$1699,847,0,0,0$1700,847,0,0,0$1701,847,0,0,0$1702,847,0,0,0$1703,847,0,0,0$1704,847,255,255,255$1705,847,255,255,255$1706,847,255,255,255$1707,847,255,255,255$1708,847,255,255,255$1709,847,255,255,255$1710,847,255,255,255$1711,847,255,255,255$1712,847,255,255,255$1713,847,255,255,255$1714,847,255,255,255$1715,847,255,255,255$1716,847,255,255,255$1717,847,255,255,255$1718,847,255,255,255$1719,847,255,255,255$1720,847,0,0,0$1721,847,0,0,0$1722,847,0,0,0$1723,847,0,0,0$1724,847,0,0,0$1725,847,0,0,0$1726,847,0,0,0$1727,847,0,0,0$1728,847,0,0,0$1729,847,0,0,0$1730,847,255,255,255$1731,847,0,0,0$1732,847,0,0,0$1733,847,0,0,0$1734,847,0,0,0$1735,847,0,0,0$1736,847,0,0,0$1737,847,255,255,255$1738,847,255,255,255$1739,847,0,0,0$1740,847,0,0,0$1741,847,0,0,0$1742,847,255,255,255$1743,847,255,255,255$1744,847,0,0,0$1745,847,0,0,0$1746,847,0,0,0$1747,847,0,0,0$1748,847,0,0,0$1749,847,0,0,0$1750,847,0,0,0$1751,847,0,0,0$1752,847,0,0,0$1753,847,0,0,0$1754,847,0,0,0$1755,847,0,0,0$1756,847,0,0,0$1699,848,0,0,0$1700,848,0,0,0$1701,848,0,0,0$1702,848,0,0,0$1703,848,0,0,0$1704,848,255,255,255$1705,848,0,0,0$1706,848,0,0,0$1707,848,0,0,0$1708,848,0,0,0$1709,848,0,0,0$1710,848,0,0,0$1711,848,255,255,255$1712,848,255,255,255$1713,848,0,0,0$1714,848,0,0,0$1715,848,0,0,0$1716,848,0,0,0$1717,848,0,0,0$1718,848,0,0,0$1719,848,255,255,255$1720,848,0,0,0$1721,848,0,0,0$1722,848,0,0,0$1723,848,0,0,0$1724,848,0,0,0$1725,848,0,0,0$1726,848,0,0,0$1727,848,0,0,0$1728,848,0,0,0$1729,848,0,0,0$1730,848,255,255,255$1731,848,0,0,0$1732,848,0,0,0$1733,848,0,0,0$1734,848,0,0,0$1735,848,0,0,0$1736,848,0,0,0$1737,848,255,255,255$1738,848,255,255,255$1739,848,0,0,0$1740,848,0,0,0$1741,848,0,0,0$1742,848,0,0,0$1743,848,255,255,255$1744,848,0,0,0$1745,848,0,0,0$1746,848,0,0,0$1747,848,0,0,0$1748,848,0,0,0$1749,848,0,0,0$1750,848,0,0,0$1751,848,0,0,0$1752,848,0,0,0$1753,848,0,0,0$1754,848,0,0,0$1755,848,0,0,0$1756,848,0,0,0$1699,849,0,0,0$1700,849,0,0,0$1701,849,0,0,0$1702,849,0,0,0$1703,849,0,0,0$1704,849,255,255,255$1705,849,0,0,0$1706,849,0,0,0$1707,849,0,0,0$1708,849,0,0,0$1709,849,0,0,0$1710,849,0,0,0$1711,849,255,255,255$1712,849,255,255,255$1713,849,0,0,0$1714,849,0,0,0$1715,849,0,0,0$1716,849,0,0,0$1717,849,0,0,0$1718,849,0,0,0$1719,849,255,255,255$1720,849,0,0,0$1721,849,0,0,0$1722,849,0,0,0$1723,849,0,0,0$1724,849,0,0,0$1725,849,0,0,0$1726,849,0,0,0$1727,849,0,0,0$1728,849,0,0,0$1729,849,0,0,0$1730,849,255,255,255$1731,849,0,0,0$1732,849,0,0,0$1733,849,0,0,0$1734,849,0,0,0$1735,849,0,0,0$1736,849,0,0,0$1737,849,255,255,255$1738,849,255,255,255$1739,849,0,0,0$1740,849,0,0,0$1741,849,0,0,0$1742,849,0,0,0$1743,849,255,255,255$1744,849,0,0,0$1745,849,0,0,0$1746,849,0,0,0$1747,849,0,0,0$1748,849,0,0,0$1749,849,0,0,0$1750,849,0,0,0$1751,849,0,0,0$1752,849,0,0,0$1753,849,0,0,0$1754,849,0,0,0$1755,849,0,0,0$1756,849,0,0,0$1699,850,0,0,0$1700,850,0,0,0$1701,850,0,0,0$1702,850,0,0,0$1703,850,0,0,0$1704,850,255,255,255$1705,850,0,0,0$1706,850,0,0,0$1707,850,0,0,0$1708,850,0,0,0$1709,850,0,0,0$1710,850,0,0,0$1711,850,255,255,255$1712,850,255,255,255$1713,850,0,0,0$1714,850,0,0,0$1715,850,0,0,0$1716,850,0,0,0$1717,850,0,0,0$1718,850,0,0,0$1719,850,255,255,255$1720,850,0,0,0$1721,850,0,0,0$1722,850,0,0,0$1723,850,0,0,0$1724,850,0,0,0$1725,850,255,255,255$1726,850,255,255,255$1727,850,255,255,255$1728,850,255,255,255$1729,850,255,255,255$1730,850,255,255,255$1731,850,255,255,255$1732,850,255,255,255$1733,850,255,255,255$1734,850,255,255,255$1735,850,255,255,255$1736,850,0,0,0$1737,850,255,255,255$1738,850,255,255,255$1739,850,0,0,0$1740,850,0,0,0$1741,850,0,0,0$1742,850,0,0,0$1743,850,255,255,255$1744,850,0,0,0$1745,850,0,0,0$1746,850,0,0,0$1747,850,0,0,0$1748,850,0,0,0$1749,850,0,0,0$1750,850,0,0,0$1751,850,0,0,0$1752,850,0,0,0$1753,850,0,0,0$1754,850,0,0,0$1755,850,0,0,0$1756,850,0,0,0$1699,851,0,0,0$1700,851,0,0,0$1701,851,0,0,0$1702,851,0,0,0$1703,851,0,0,0$1704,851,255,255,255$1705,851,255,255,255$1706,851,255,255,255$1707,851,255,255,255$1708,851,255,255,255$1709,851,255,255,255$1710,851,255,255,255$1711,851,255,255,255$1712,851,255,255,255$1713,851,255,255,255$1714,851,255,255,255$1715,851,255,255,255$1716,851,255,255,255$1717,851,255,255,255$1718,851,255,255,255$1719,851,255,255,255$1720,851,0,0,0$1721,851,0,0,0$1722,851,0,0,0$1723,851,0,0,0$1724,851,0,0,0$1725,851,0,0,0$1726,851,0,0,0$1727,851,0,0,0$1728,851,0,0,0$1729,851,0,0,0$1730,851,255,255,255$1731,851,0,0,0$1732,851,0,0,0$1733,851,0,0,0$1734,851,0,0,0$1735,851,0,0,0$1736,851,0,0,0$1737,851,255,255,255$1738,851,0,0,0$1739,851,0,0,0$1740,851,0,0,0$1741,851,0,0,0$1742,851,0,0,0$1743,851,255,255,255$1744,851,0,0,0$1745,851,0,0,0$1746,851,0,0,0$1747,851,0,0,0$1748,851,0,0,0$1749,851,0,0,0$1750,851,0,0,0$1751,851,0,0,0$1752,851,0,0,0$1753,851,0,0,0$1754,851,0,0,0$1755,851,0,0,0$1756,851,0,0,0$1699,852,0,0,0$1700,852,0,0,0$1701,852,0,0,0$1702,852,0,0,0$1703,852,0,0,0$1704,852,0,0,0$1705,852,0,0,0$1706,852,0,0,0$1707,852,0,0,0$1708,852,0,0,0$1709,852,0,0,0$1710,852,0,0,0$1711,852,255,255,255$1712,852,0,0,0$1713,852,0,0,0$1714,852,0,0,0$1715,852,0,0,0$1716,852,0,0,0$1717,852,0,0,0$1718,852,0,0,0$1719,852,0,0,0$1720,852,0,0,0$1721,852,0,0,0$1722,852,0,0,0$1723,852,0,0,0$1724,852,0,0,0$1725,852,0,0,0$1726,852,0,0,0$1727,852,0,0,0$1728,852,0,0,0$1729,852,0,0,0$1730,852,255,255,255$1731,852,0,0,0$1732,852,0,0,0$1733,852,0,0,0$1734,852,0,0,0$1735,852,0,0,0$1736,852,0,0,0$1737,852,255,255,255$1738,852,0,0,0$1739,852,0,0,0$1740,852,0,0,0$1741,852,0,0,0$1742,852,0,0,0$1743,852,255,255,255$1744,852,0,0,0$1745,852,0,0,0$1746,852,0,0,0$1747,852,0,0,0$1748,852,0,0,0$1749,852,0,0,0$1750,852,0,0,0$1751,852,0,0,0$1752,852,0,0,0$1753,852,0,0,0$1754,852,0,0,0$1755,852,0,0,0$1756,852,0,0,0$1699,853,0,0,0$1700,853,0,0,0$1701,853,0,0,0$1702,853,0,0,0$1703,853,0,0,0$1704,853,0,0,0$1705,853,255,255,255$1706,853,255,255,255$1707,853,0,0,0$1708,853,0,0,0$1709,853,0,0,0$1710,853,255,255,255$1711,853,255,255,255$1712,853,0,0,0$1713,853,0,0,0$1714,853,0,0,0$1715,853,0,0,0$1716,853,0,0,0$1717,853,0,0,0$1718,853,0,0,0$1719,853,0,0,0$1720,853,0,0,0$1721,853,0,0,0$1722,853,0,0,0$1723,853,0,0,0$1724,853,0,0,0$1725,853,0,0,0$1726,853,0,0,0$1727,853,255,255,255$1728,853,0,0,0$1729,853,0,0,0$1730,853,255,255,255$1731,853,0,0,0$1732,853,0,0,0$1733,853,255,255,255$1734,853,0,0,0$1735,853,0,0,0$1736,853,0,0,0$1737,853,255,255,255$1738,853,0,0,0$1739,853,0,0,0$1740,853,0,0,0$1741,853,0,0,0$1742,853,0,0,0$1743,853,255,255,255$1744,853,0,0,0$1745,853,0,0,0$1746,853,0,0,0$1747,853,0,0,0$1748,853,0,0,0$1749,853,0,0,0$1750,853,0,0,0$1751,853,0,0,0$1752,853,0,0,0$1753,853,0,0,0$1754,853,0,0,0$1755,853,0,0,0$1756,853,0,0,0$1699,854,0,0,0$1700,854,0,0,0$1701,854,0,0,0$1702,854,0,0,0$1703,854,0,0,0$1704,854,0,0,0$1705,854,0,0,0$1706,854,255,255,255$1707,854,255,255,255$1708,854,0,0,0$1709,854,0,0,0$1710,854,255,255,255$1711,854,0,0,0$1712,854,0,0,0$1713,854,0,0,0$1714,854,0,0,0$1715,854,0,0,0$1716,854,0,0,0$1717,854,0,0,0$1718,854,0,0,0$1719,854,0,0,0$1720,854,0,0,0$1721,854,0,0,0$1722,854,0,0,0$1723,854,0,0,0$1724,854,0,0,0$1725,854,0,0,0$1726,854,0,0,0$1727,854,255,255,255$1728,854,0,0,0$1729,854,0,0,0$1730,854,255,255,255$1731,854,0,0,0$1732,854,0,0,0$1733,854,0,0,0$1734,854,255,255,255$1735,854,0,0,0$1736,854,0,0,0$1737,854,255,255,255$1738,854,0,0,0$1739,854,0,0,0$1740,854,0,0,0$1741,854,0,0,0$1742,854,0,0,0$1743,854,255,255,255$1744,854,0,0,0$1745,854,0,0,0$1746,854,0,0,0$1747,854,0,0,0$1748,854,0,0,0$1749,854,0,0,0$1750,854,0,0,0$1751,854,0,0,0$1752,854,0,0,0$1753,854,0,0,0$1754,854,0,0,0$1755,854,0,0,0$1756,854,0,0,0$1699,855,0,0,0$1700,855,0,0,0$1701,855,0,0,0$1702,855,0,0,0$1703,855,0,0,0$1704,855,0,0,0$1705,855,0,0,0$1706,855,0,0,0$1707,855,255,255,255$1708,855,255,255,255$1709,855,255,255,255$1710,855,255,255,255$1711,855,0,0,0$1712,855,0,0,0$1713,855,0,0,0$1714,855,0,0,0$1715,855,0,0,0$1716,855,0,0,0$1717,855,0,0,0$1718,855,0,0,0$1719,855,0,0,0$1720,855,0,0,0$1721,855,0,0,0$1722,855,0,0,0$1723,855,0,0,0$1724,855,0,0,0$1725,855,0,0,0$1726,855,255,255,255$1727,855,0,0,0$1728,855,0,0,0$1729,855,0,0,0$1730,855,255,255,255$1731,855,0,0,0$1732,855,0,0,0$1733,855,0,0,0$1734,855,255,255,255$1735,855,0,0,0$1736,855,0,0,0$1737,855,255,255,255$1738,855,0,0,0$1739,855,0,0,0$1740,855,0,0,0$1741,855,0,0,0$1742,855,0,0,0$1743,855,255,255,255$1744,855,0,0,0$1745,855,0,0,0$1746,855,0,0,0$1747,855,0,0,0$1748,855,0,0,0$1749,855,0,0,0$1750,855,0,0,0$1751,855,0,0,0$1752,855,0,0,0$1753,855,0,0,0$1754,855,0,0,0$1755,855,0,0,0$1756,855,0,0,0$1699,856,0,0,0$1700,856,0,0,0$1701,856,0,0,0$1702,856,0,0,0$1703,856,0,0,0$1704,856,0,0,0$1705,856,0,0,0$1706,856,0,0,0$1707,856,255,255,255$1708,856,255,255,255$1709,856,255,255,255$1710,856,255,255,255$1711,856,0,0,0$1712,856,0,0,0$1713,856,0,0,0$1714,856,0,0,0$1715,856,0,0,0$1716,856,0,0,0$1717,856,0,0,0$1718,856,0,0,0$1719,856,0,0,0$1720,856,0,0,0$1721,856,0,0,0$1722,856,0,0,0$1723,856,0,0,0$1724,856,0,0,0$1725,856,255,255,255$1726,856,0,0,0$1727,856,0,0,0$1728,856,0,0,0$1729,856,0,0,0$1730,856,255,255,255$1731,856,0,0,0$1732,856,0,0,0$1733,856,0,0,0$1734,856,0,0,0$1735,856,0,0,0$1736,856,255,255,255$1737,856,255,255,255$1738,856,0,0,0$1739,856,0,0,0$1740,856,0,0,0$1741,856,0,0,0$1742,856,0,0,0$1743,856,255,255,255$1744,856,0,0,0$1745,856,0,0,0$1746,856,0,0,0$1747,856,0,0,0$1748,856,0,0,0$1749,856,0,0,0$1750,856,0,0,0$1751,856,0,0,0$1752,856,0,0,0$1753,856,0,0,0$1754,856,0,0,0$1755,856,0,0,0$1756,856,0,0,0$1699,857,0,0,0$1700,857,0,0,0$1701,857,0,0,0$1702,857,0,0,0$1703,857,0,0,0$1704,857,0,0,0$1705,857,255,255,255$1706,857,255,255,255$1707,857,255,255,255$1708,857,0,0,0$1709,857,0,0,0$1710,857,255,255,255$1711,857,255,255,255$1712,857,255,255,255$1713,857,255,255,255$1714,857,0,0,0$1715,857,0,0,0$1716,857,0,0,0$1717,857,0,0,0$1718,857,0,0,0$1719,857,0,0,0$1720,857,0,0,0$1721,857,0,0,0$1722,857,0,0,0$1723,857,0,0,0$1724,857,0,0,0$1725,857,0,0,0$1726,857,0,0,0$1727,857,0,0,0$1728,857,0,0,0$1729,857,0,0,0$1730,857,255,255,255$1731,857,0,0,0$1732,857,0,0,0$1733,857,0,0,0$1734,857,0,0,0$1735,857,0,0,0$1736,857,255,255,255$1737,857,0,0,0$1738,857,0,0,0$1739,857,0,0,0$1740,857,0,0,0$1741,857,0,0,0$1742,857,0,0,0$1743,857,255,255,255$1744,857,0,0,0$1745,857,0,0,0$1746,857,0,0,0$1747,857,0,0,0$1748,857,0,0,0$1749,857,0,0,0$1750,857,0,0,0$1751,857,0,0,0$1752,857,0,0,0$1753,857,0,0,0$1754,857,0,0,0$1755,857,0,0,0$1756,857,0,0,0$1699,858,0,0,0$1700,858,0,0,0$1701,858,0,0,0$1702,858,255,255,255$1703,858,255,255,255$1704,858,255,255,255$1705,858,255,255,255$1706,858,0,0,0$1707,858,0,0,0$1708,858,0,0,0$1709,858,0,0,0$1710,858,0,0,0$1711,858,0,0,0$1712,858,0,0,0$1713,858,0,0,0$1714,858,255,255,255$1715,858,255,255,255$1716,858,255,255,255$1717,858,255,255,255$1718,858,255,255,255$1719,858,255,255,255$1720,858,255,255,255$1721,858,255,255,255$1722,858,0,0,0$1723,858,0,0,0$1724,858,0,0,0$1725,858,0,0,0$1726,858,0,0,0$1727,858,0,0,0$1728,858,255,255,255$1729,858,255,255,255$1730,858,255,255,255$1731,858,0,0,0$1732,858,0,0,0$1733,858,0,0,0$1734,858,0,0,0$1735,858,0,0,0$1736,858,255,255,255$1737,858,0,0,0$1738,858,0,0,0$1739,858,0,0,0$1740,858,0,0,0$1741,858,0,0,0$1742,858,0,0,0$1743,858,255,255,255$1744,858,0,0,0$1745,858,0,0,0$1746,858,0,0,0$1747,858,0,0,0$1748,858,0,0,0$1749,858,0,0,0$1750,858,0,0,0$1751,858,0,0,0$1752,858,0,0,0$1753,858,0,0,0$1754,858,0,0,0$1755,858,0,0,0$1756,858,0,0,0$1699,859,0,0,0$1700,859,0,0,0$1701,859,0,0,0$1702,859,0,0,0$1703,859,0,0,0$1704,859,0,0,0$1705,859,0,0,0$1706,859,0,0,0$1707,859,0,0,0$1708,859,0,0,0$1709,859,0,0,0$1710,859,0,0,0$1711,859,0,0,0$1712,859,0,0,0$1713,859,0,0,0$1714,859,0,0,0$1715,859,0,0,0$1716,859,0,0,0$1717,859,0,0,0$1718,859,0,0,0$1719,859,0,0,0$1720,859,0,0,0$1721,859,0,0,0$1722,859,0,0,0$1723,859,0,0,0$1724,859,0,0,0$1725,859,0,0,0$1726,859,0,0,0$1727,859,0,0,0$1728,859,0,0,0$1729,859,0,0,0$1730,859,0,0,0$1731,859,0,0,0$1732,859,0,0,0$1733,859,0,0,0$1734,859,0,0,0$1735,859,0,0,0$1736,859,0,0,0$1737,859,0,0,0$1738,859,0,0,0$1739,859,0,0,0$1740,859,0,0,0$1741,859,0,0,0$1742,859,0,0,0$1743,859,0,0,0$1744,859,0,0,0$1745,859,0,0,0$1746,859,0,0,0$1747,859,0,0,0$1748,859,0,0,0$1749,859,0,0,0$1750,859,0,0,0$1751,859,0,0,0$1752,859,0,0,0$1753,859,0,0,0$1754,859,0,0,0$1755,859,0,0,0$1756,859,0,0,0$1699,860,0,0,0$1700,860,0,0,0$1701,860,0,0,0$1702,860,0,0,0$1703,860,0,0,0$1704,860,0,0,0$1705,860,0,0,0$1706,860,0,0,0$1707,860,0,0,0$1708,860,0,0,0$1709,860,0,0,0$1710,860,0,0,0$1711,860,0,0,0$1712,860,0,0,0$1713,860,0,0,0$1714,860,0,0,0$1715,860,0,0,0$1716,860,0,0,0$1717,860,0,0,0$1718,860,0,0,0$1719,860,0,0,0$1720,860,0,0,0$1721,860,0,0,0$1722,860,0,0,0$1723,860,0,0,0$1724,860,0,0,0$1725,860,0,0,0$1726,860,0,0,0$1727,860,0,0,0$1728,860,0,0,0$1729,860,0,0,0$1730,860,0,0,0$1731,860,0,0,0$1732,860,0,0,0$1733,860,0,0,0$1734,860,0,0,0$1735,860,0,0,0$1736,860,0,0,0$1737,860,0,0,0$1738,860,0,0,0$1739,860,0,0,0$1740,860,0,0,0$1741,860,0,0,0$1742,860,0,0,0$1743,860,0,0,0$1744,860,0,0,0$1745,860,0,0,0$1746,860,0,0,0$1747,860,0,0,0$1748,860,0,0,0$1749,860,0,0,0$1750,860,0,0,0$1751,860,0,0,0$1752,860,0,0,0$1753,860,0,0,0$1754,860,0,0,0$1755,860,0,0,0$1756,860,0,0,0$1699,861,0,0,0$1700,861,0,0,0$1701,861,0,0,0$1702,861,0,0,0$1703,861,0,0,0$1704,861,0,0,0$1705,861,0,0,0$1706,861,0,0,0$1707,861,0,0,0$1708,861,0,0,0$1709,861,0,0,0$1710,861,0,0,0$1711,861,0,0,0$1712,861,0,0,0$1713,861,0,0,0$1714,861,0,0,0$1715,861,0,0,0$1716,861,0,0,0$1717,861,0,0,0$1718,861,0,0,0$1719,861,0,0,0$1720,861,0,0,0$1721,861,0,0,0$1722,861,0,0,0$1723,861,0,0,0$1724,861,0,0,0$1725,861,0,0,0$1726,861,0,0,0$1727,861,0,0,0$1728,861,0,0,0$1729,861,0,0,0$1730,861,0,0,0$1731,861,0,0,0$1732,861,0,0,0$1733,861,0,0,0$1734,861,0,0,0$1735,861,0,0,0$1736,861,0,0,0$1737,861,0,0,0$1738,861,0,0,0$1739,861,0,0,0$1740,861,0,0,0$1741,861,0,0,0$1742,861,0,0,0$1743,861,0,0,0$1744,861,0,0,0$1745,861,0,0,0$1746,861,0,0,0$1747,861,0,0,0$1748,861,0,0,0$1749,861,0,0,0$1750,861,0,0,0$1751,861,0,0,0$1752,861,0,0,0$1753,861,0,0,0$1754,861,0,0,0$1755,861,0,0,0$1756,861,0,0,0$1699,862,0,0,0$1700,862,0,0,0$1701,862,0,0,0$1702,862,0,0,0$1703,862,0,0,0$1704,862,0,0,0$1705,862,0,0,0$1706,862,0,0,0$1707,862,0,0,0$1708,862,0,0,0$1709,862,0,0,0$1710,862,0,0,0$1711,862,0,0,0$1712,862,0,0,0$1713,862,0,0,0$1714,862,0,0,0$1715,862,0,0,0$1716,862,0,0,0$1717,862,0,0,0$1718,862,0,0,0$1719,862,0,0,0$1720,862,0,0,0$1721,862,0,0,0$1722,862,0,0,0$1723,862,0,0,0$1724,862,0,0,0$1725,862,0,0,0$1726,862,0,0,0$1727,862,0,0,0$1728,862,0,0,0$1729,862,0,0,0$1730,862,0,0,0$1731,862,0,0,0$1732,862,0,0,0$1733,862,0,0,0$1734,862,0,0,0$1735,862,0,0,0$1736,862,0,0,0$1737,862,0,0,0$1738,862,0,0,0$1739,862,0,0,0$1740,862,0,0,0$1741,862,0,0,0$1742,862,0,0,0$1743,862,0,0,0$1744,862,0,0,0$1745,862,0,0,0$1746,862,0,0,0$1747,862,0,0,0$1748,862,0,0,0$1749,862,0,0,0$1750,862,0,0,0$1751,862,0,0,0$1752,862,0,0,0$1753,862,0,0,0$1754,862,0,0,0$1755,862,0,0,0$1756,862,0,0,0$1699,863,0,0,0$1700,863,0,0,0$1701,863,0,0,0$1702,863,0,0,0$1703,863,0,0,0$1704,863,0,0,0$1705,863,0,0,0$1706,863,0,0,0$1707,863,0,0,0$1708,863,0,0,0$1709,863,0,0,0$1710,863,0,0,0$1711,863,0,0,0$1712,863,0,0,0$1713,863,0,0,0$1714,863,0,0,0$1715,863,0,0,0$1716,863,0,0,0$1717,863,0,0,0$1718,863,0,0,0$1719,863,0,0,0$1720,863,0,0,0$1721,863,0,0,0$1722,863,0,0,0$1723,863,0,0,0$1724,863,0,0,0$1725,863,0,0,0$1726,863,0,0,0$1727,863,0,0,0$1728,863,0,0,0$1729,863,0,0,0$1730,863,0,0,0$1731,863,0,0,0$1732,863,0,0,0$1733,863,0,0,0$1734,863,0,0,0$1735,863,0,0,0$1736,863,0,0,0$1737,863,0,0,0$1738,863,0,0,0$1739,863,0,0,0$1740,863,0,0,0$1741,863,0,0,0$1742,863,0,0,0$1743,863,0,0,0$1744,863,0,0,0$1745,863,0,0,0$1746,863,0,0,0$1747,863,0,0,0$1748,863,0,0,0$1749,863,0,0,0$1750,863,0,0,0$1751,863,0,0,0$1752,863,0,0,0$1753,863,0,0,0$1754,863,0,0,0$1755,863,0,0,0$1756,863,0,0,0$1699,864,0,0,0$1700,864,0,0,0$1701,864,0,0,0$1702,864,0,0,0$1703,864,0,0,0$1704,864,0,0,0$1705,864,0,0,0$1706,864,0,0,0$1707,864,0,0,0$1708,864,0,0,0$1709,864,0,0,0$1710,864,0,0,0$1711,864,0,0,0$1712,864,0,0,0$1713,864,0,0,0$1714,864,0,0,0$1715,864,0,0,0$1716,864,0,0,0$1717,864,0,0,0$1718,864,0,0,0$1719,864,0,0,0$1720,864,0,0,0$1721,864,0,0,0$1722,864,0,0,0$1723,864,0,0,0$1724,864,0,0,0$1725,864,0,0,0$1726,864,0,0,0$1727,864,0,0,0$1728,864,0,0,0$1729,864,0,0,0$1730,864,0,0,0$1731,864,0,0,0$1732,864,0,0,0$1733,864,0,0,0$1734,864,0,0,0$1735,864,0,0,0$1736,864,0,0,0$1737,864,0,0,0$1738,864,0,0,0$1739,864,0,0,0$1740,864,0,0,0$1741,864,0,0,0$1742,864,0,0,0$1743,864,0,0,0$1744,864,0,0,0$1745,864,0,0,0$1746,864,0,0,0$1747,864,0,0,0$1748,864,0,0,0$1749,864,0,0,0$1750,864,0,0,0$1751,864,0,0,0$1752,864,0,0,0$1753,864,0,0,0$1754,864,0,0,0$1755,864,0,0,0$1756,864,0,0,0$1699,865,0,0,0$1700,865,0,0,0$1701,865,0,0,0$1702,865,0,0,0$1703,865,0,0,0$1704,865,0,0,0$1705,865,0,0,0$1706,865,0,0,0$1707,865,0,0,0$1708,865,0,0,0$1709,865,0,0,0$1710,865,0,0,0$1711,865,0,0,0$1712,865,0,0,0$1713,865,0,0,0$1714,865,0,0,0$1715,865,0,0,0$1716,865,0,0,0$1717,865,0,0,0$1718,865,0,0,0$1719,865,0,0,0$1720,865,0,0,0$1721,865,0,0,0$1722,865,0,0,0$1723,865,0,0,0$1724,865,0,0,0$1725,865,0,0,0$1726,865,0,0,0$1727,865,0,0,0$1728,865,0,0,0$1729,865,0,0,0$1730,865,0,0,0$1731,865,0,0,0$1732,865,0,0,0$1733,865,0,0,0$1734,865,0,0,0$1735,865,0,0,0$1736,865,0,0,0$1737,865,0,0,0$1738,865,0,0,0$1739,865,0,0,0$1740,865,0,0,0$1741,865,0,0,0$1742,865,0,0,0$1743,865,0,0,0$1744,865,0,0,0$1745,865,0,0,0$1746,865,0,0,0$1747,865,0,0,0$1748,865,0,0,0$1749,865,0,0,0$1750,865,0,0,0$1751,865,0,0,0$1752,865,0,0,0$1753,865,0,0,0$1754,865,0,0,0$1755,865,0,0,0$1756,865,0,0,0$1699,866,0,0,0$1700,866,0,0,0$1701,866,0,0,0$1702,866,0,0,0$1703,866,0,0,0$1704,866,0,0,0$1705,866,0,0,0$1706,866,0,0,0$1707,866,0,0,0$1708,866,0,0,0$1709,866,0,0,0$1710,866,0,0,0$1711,866,0,0,0$1712,866,0,0,0$1713,866,0,0,0$1714,866,0,0,0$1715,866,0,0,0$1716,866,0,0,0$1717,866,0,0,0$1718,866,0,0,0$1719,866,0,0,0$1720,866,0,0,0$1721,866,0,0,0$1722,866,0,0,0$1723,866,0,0,0$1724,866,0,0,0$1725,866,0,0,0$1726,866,0,0,0$1727,866,0,0,0$1728,866,0,0,0$1729,866,0,0,0$1730,866,0,0,0$1731,866,0,0,0$1732,866,0,0,0$1733,866,0,0,0$1734,866,0,0,0$1735,866,0,0,0$1736,866,0,0,0$1737,866,0,0,0$1738,866,0,0,0$1739,866,0,0,0$1740,866,0,0,0$1741,866,0,0,0$1742,866,0,0,0$1743,866,0,0,0$1744,866,0,0,0$1745,866,0,0,0$1746,866,0,0,0$1747,866,0,0,0$1748,866,0,0,0$1749,866,0,0,0$1750,866,0,0,0$1751,866,0,0,0$1752,866,0,0,0$1753,866,0,0,0$1754,866,0,0,0$1755,866,0,0,0$1756,866,0,0,0$1699,867,0,0,0$1700,867,0,0,0$1701,867,0,0,0$1702,867,0,0,0$1703,867,0,0,0$1704,867,0,0,0$1705,867,0,0,0$1706,867,0,0,0$1707,867,0,0,0$1708,867,0,0,0$1709,867,0,0,0$1710,867,0,0,0$1711,867,0,0,0$1712,867,0,0,0$1713,867,0,0,0$1714,867,0,0,0$1715,867,0,0,0$1716,867,0,0,0$1717,867,0,0,0$1718,867,0,0,0$1719,867,0,0,0$1720,867,0,0,0$1721,867,0,0,0$1722,867,0,0,0$1723,867,0,0,0$1724,867,0,0,0$1725,867,0,0,0$1726,867,0,0,0$1727,867,0,0,0$1728,867,0,0,0$1729,867,0,0,0$1730,867,0,0,0$1731,867,0,0,0$1732,867,0,0,0$1733,867,0,0,0$1734,867,0,0,0$1735,867,0,0,0$1736,867,0,0,0$1737,867,0,0,0$1738,867,0,0,0$1739,867,0,0,0$1740,867,0,0,0$1741,867,0,0,0$1742,867,0,0,0$1743,867,0,0,0$1744,867,0,0,0$1745,867,0,0,0$1746,867,0,0,0$1747,867,0,0,0$1748,867,0,0,0$1749,867,0,0,0$1750,867,0,0,0$1751,867,0,0,0$1752,867,0,0,0$1753,867,0,0,0$1754,867,0,0,0$1755,867,0,0,0$1756,867,0,0,0");
        //开始游戏按钮
        private static ColorArray StartGameButton = ColorArray.FromThresholdString(253, "1704,838,0,0,0$1698,838,0,0,0$1699,838,0,0,0$1700,838,0,0,0$1701,838,0,0,0$1702,838,0,0,0$1703,838,0,0,0$1705,838,0,0,0$1706,838,0,0,0$1707,838,0,0,0$1708,838,0,0,0$1709,838,0,0,0$1710,838,0,0,0$1711,838,0,0,0$1712,838,0,0,0$1713,838,0,0,0$1714,838,255,255,255$1715,838,0,0,0$1716,838,0,0,0$1717,838,0,0,0$1718,838,0,0,0$1719,838,0,0,0$1720,838,0,0,0$1721,838,0,0,0$1722,838,0,0,0$1723,838,0,0,0$1724,838,0,0,0$1725,838,0,0,0$1726,838,0,0,0$1727,838,0,0,0$1728,838,0,0,0$1729,838,0,0,0$1730,838,0,0,0$1731,838,0,0,0$1732,838,0,0,0$1733,838,0,0,0$1734,838,0,0,0$1735,838,0,0,0$1736,838,0,0,0$1737,838,0,0,0$1738,838,0,0,0$1739,838,0,0,0$1740,838,0,0,0$1741,838,0,0,0$1742,838,0,0,0$1743,838,0,0,0$1744,838,0,0,0$1745,838,0,0,0$1746,838,0,0,0$1747,838,0,0,0$1748,838,0,0,0$1749,838,0,0,0$1750,838,0,0,0$1751,838,0,0,0$1752,838,0,0,0$1753,838,0,0,0$1754,838,0,0,0$1755,838,0,0,0$1756,838,0,0,0$1757,838,0,0,0$1758,838,0,0,0$1759,838,0,0,0$1698,839,0,0,0$1699,839,0,0,0$1700,839,0,0,0$1701,839,0,0,0$1702,839,0,0,0$1703,839,0,0,0$1704,839,0,0,0$1705,839,0,0,0$1706,839,0,0,0$1707,839,0,0,0$1708,839,0,0,0$1709,839,0,0,0$1710,839,0,0,0$1711,839,0,0,0$1712,839,0,0,0$1713,839,0,0,0$1714,839,255,255,255$1715,839,255,255,255$1716,839,0,0,0$1717,839,0,0,0$1718,839,0,0,0$1719,839,0,0,0$1720,839,0,0,0$1721,839,0,0,0$1722,839,0,0,0$1723,839,0,0,0$1724,839,0,0,0$1725,839,0,0,0$1726,839,0,0,0$1727,839,0,0,0$1728,839,0,0,0$1729,839,0,0,0$1730,839,0,0,0$1731,839,0,0,0$1732,839,0,0,0$1733,839,0,0,0$1734,839,0,0,0$1735,839,0,0,0$1736,839,0,0,0$1737,839,0,0,0$1738,839,0,0,0$1739,839,0,0,0$1740,839,0,0,0$1741,839,0,0,0$1742,839,0,0,0$1743,839,255,255,255$1744,839,0,0,0$1745,839,0,0,0$1746,839,0,0,0$1747,839,0,0,0$1748,839,0,0,0$1749,839,0,0,0$1750,839,0,0,0$1751,839,0,0,0$1752,839,0,0,0$1753,839,0,0,0$1754,839,0,0,0$1755,839,0,0,0$1756,839,0,0,0$1757,839,0,0,0$1758,839,0,0,0$1759,839,0,0,0$1698,840,0,0,0$1699,840,0,0,0$1700,840,0,0,0$1701,840,0,0,0$1702,840,0,0,0$1703,840,0,0,0$1704,840,0,0,0$1705,840,0,0,0$1706,840,0,0,0$1707,840,0,0,0$1708,840,0,0,0$1709,840,0,0,0$1710,840,0,0,0$1711,840,0,0,0$1712,840,0,0,0$1713,840,0,0,0$1714,840,0,0,0$1715,840,255,255,255$1716,840,0,0,0$1717,840,0,0,0$1718,840,0,0,0$1719,840,0,0,0$1720,840,0,0,0$1721,840,0,0,0$1722,840,0,0,0$1723,840,0,0,0$1724,840,0,0,0$1725,840,0,0,0$1726,840,0,0,0$1727,840,0,0,0$1728,840,0,0,0$1729,840,255,255,255$1730,840,255,255,255$1731,840,255,255,255$1732,840,255,255,255$1733,840,255,255,255$1734,840,255,255,255$1735,840,255,255,255$1736,840,255,255,255$1737,840,255,255,255$1738,840,0,0,0$1739,840,0,0,0$1740,840,0,0,0$1741,840,0,0,0$1742,840,0,0,0$1743,840,255,255,255$1744,840,0,0,0$1745,840,0,0,0$1746,840,0,0,0$1747,840,0,0,0$1748,840,0,0,0$1749,840,0,0,0$1750,840,0,0,0$1751,840,0,0,0$1752,840,0,0,0$1753,840,0,0,0$1754,840,0,0,0$1755,840,0,0,0$1756,840,0,0,0$1757,840,0,0,0$1758,840,0,0,0$1759,840,0,0,0$1698,841,0,0,0$1699,841,0,0,0$1700,841,0,0,0$1701,841,0,0,0$1702,841,0,0,0$1703,841,0,0,0$1704,841,0,0,0$1705,841,0,0,0$1706,841,0,0,0$1707,841,0,0,0$1708,841,0,0,0$1709,841,0,0,0$1710,841,0,0,0$1711,841,0,0,0$1712,841,0,0,0$1713,841,0,0,0$1714,841,0,0,0$1715,841,255,255,255$1716,841,0,0,0$1717,841,0,0,0$1718,841,0,0,0$1719,841,0,0,0$1720,841,0,0,0$1721,841,0,0,0$1722,841,0,0,0$1723,841,0,0,0$1724,841,0,0,0$1725,841,0,0,0$1726,841,0,0,0$1727,841,0,0,0$1728,841,0,0,0$1729,841,0,0,0$1730,841,0,0,0$1731,841,0,0,0$1732,841,0,0,0$1733,841,0,0,0$1734,841,0,0,0$1735,841,0,0,0$1736,841,0,0,0$1737,841,0,0,0$1738,841,0,0,0$1739,841,0,0,0$1740,841,0,0,0$1741,841,0,0,0$1742,841,0,0,0$1743,841,255,255,255$1744,841,0,0,0$1745,841,0,0,0$1746,841,0,0,0$1747,841,0,0,0$1748,841,0,0,0$1749,841,0,0,0$1750,841,0,0,0$1751,841,0,0,0$1752,841,0,0,0$1753,841,0,0,0$1754,841,0,0,0$1755,841,0,0,0$1756,841,0,0,0$1757,841,0,0,0$1758,841,0,0,0$1759,841,0,0,0$1698,842,0,0,0$1699,842,0,0,0$1700,842,0,0,0$1701,842,0,0,0$1702,842,0,0,0$1703,842,0,0,0$1704,842,0,0,0$1705,842,0,0,0$1706,842,0,0,0$1707,842,255,255,255$1708,842,255,255,255$1709,842,255,255,255$1710,842,255,255,255$1711,842,255,255,255$1712,842,255,255,255$1713,842,255,255,255$1714,842,255,255,255$1715,842,255,255,255$1716,842,255,255,255$1717,842,255,255,255$1718,842,255,255,255$1719,842,255,255,255$1720,842,255,255,255$1721,842,255,255,255$1722,842,255,255,255$1723,842,0,0,0$1724,842,0,0,0$1725,842,0,0,0$1726,842,0,0,0$1727,842,0,0,0$1728,842,0,0,0$1729,842,0,0,0$1730,842,0,0,0$1731,842,0,0,0$1732,842,0,0,0$1733,842,0,0,0$1734,842,0,0,0$1735,842,0,0,0$1736,842,0,0,0$1737,842,0,0,0$1738,842,0,0,0$1739,842,0,0,0$1740,842,0,0,0$1741,842,0,0,0$1742,842,0,0,0$1743,842,255,255,255$1744,842,0,0,0$1745,842,0,0,0$1746,842,0,0,0$1747,842,0,0,0$1748,842,0,0,0$1749,842,0,0,0$1750,842,0,0,0$1751,842,0,0,0$1752,842,0,0,0$1753,842,0,0,0$1754,842,0,0,0$1755,842,0,0,0$1756,842,0,0,0$1757,842,0,0,0$1758,842,0,0,0$1759,842,0,0,0$1698,843,0,0,0$1699,843,0,0,0$1700,843,0,0,0$1701,843,0,0,0$1702,843,0,0,0$1703,843,0,0,0$1704,843,0,0,0$1705,843,0,0,0$1706,843,0,0,0$1707,843,255,255,255$1708,843,0,0,0$1709,843,0,0,0$1710,843,0,0,0$1711,843,0,0,0$1712,843,0,0,0$1713,843,0,0,0$1714,843,0,0,0$1715,843,0,0,0$1716,843,0,0,0$1717,843,0,0,0$1718,843,0,0,0$1719,843,0,0,0$1720,843,0,0,0$1721,843,0,0,0$1722,843,255,255,255$1723,843,0,0,0$1724,843,0,0,0$1725,843,0,0,0$1726,843,0,0,0$1727,843,0,0,0$1728,843,0,0,0$1729,843,0,0,0$1730,843,0,0,0$1731,843,0,0,0$1732,843,0,0,0$1733,843,0,0,0$1734,843,0,0,0$1735,843,0,0,0$1736,843,0,0,0$1737,843,0,0,0$1738,843,0,0,0$1739,843,0,0,0$1740,843,0,0,0$1741,843,0,0,0$1742,843,255,255,255$1743,843,255,255,255$1744,843,0,0,0$1745,843,0,0,0$1746,843,0,0,0$1747,843,0,0,0$1748,843,0,0,0$1749,843,0,0,0$1750,843,0,0,0$1751,843,0,0,0$1752,843,0,0,0$1753,843,0,0,0$1754,843,0,0,0$1755,843,0,0,0$1756,843,0,0,0$1757,843,0,0,0$1758,843,0,0,0$1759,843,0,0,0$1698,844,0,0,0$1699,844,0,0,0$1700,844,0,0,0$1701,844,0,0,0$1702,844,0,0,0$1703,844,0,0,0$1704,844,0,0,0$1705,844,0,0,0$1706,844,0,0,0$1707,844,255,255,255$1708,844,0,0,0$1709,844,0,0,0$1710,844,0,0,0$1711,844,0,0,0$1712,844,0,0,0$1713,844,0,0,0$1714,844,0,0,0$1715,844,0,0,0$1716,844,0,0,0$1717,844,0,0,0$1718,844,0,0,0$1719,844,0,0,0$1720,844,0,0,0$1721,844,0,0,0$1722,844,255,255,255$1723,844,0,0,0$1724,844,0,0,0$1725,844,0,0,0$1726,844,0,0,0$1727,844,0,0,0$1728,844,0,0,0$1729,844,0,0,0$1730,844,0,0,0$1731,844,0,0,0$1732,844,0,0,0$1733,844,0,0,0$1734,844,0,0,0$1735,844,0,0,0$1736,844,0,0,0$1737,844,0,0,0$1738,844,0,0,0$1739,844,255,255,255$1740,844,255,255,255$1741,844,255,255,255$1742,844,255,255,255$1743,844,255,255,255$1744,844,255,255,255$1745,844,255,255,255$1746,844,255,255,255$1747,844,255,255,255$1748,844,255,255,255$1749,844,0,0,0$1750,844,0,0,0$1751,844,0,0,0$1752,844,0,0,0$1753,844,0,0,0$1754,844,0,0,0$1755,844,0,0,0$1756,844,0,0,0$1757,844,0,0,0$1758,844,0,0,0$1759,844,0,0,0$1698,845,0,0,0$1699,845,0,0,0$1700,845,0,0,0$1701,845,0,0,0$1702,845,0,0,0$1703,845,0,0,0$1704,845,0,0,0$1705,845,0,0,0$1706,845,0,0,0$1707,845,255,255,255$1708,845,0,0,0$1709,845,0,0,0$1710,845,0,0,0$1711,845,0,0,0$1712,845,0,0,0$1713,845,0,0,0$1714,845,0,0,0$1715,845,0,0,0$1716,845,0,0,0$1717,845,0,0,0$1718,845,0,0,0$1719,845,0,0,0$1720,845,0,0,0$1721,845,0,0,0$1722,845,255,255,255$1723,845,0,0,0$1724,845,0,0,0$1725,845,0,0,0$1726,845,0,0,0$1727,845,0,0,0$1728,845,0,0,0$1729,845,0,0,0$1730,845,0,0,0$1731,845,0,0,0$1732,845,0,0,0$1733,845,0,0,0$1734,845,0,0,0$1735,845,0,0,0$1736,845,0,0,0$1737,845,0,0,0$1738,845,0,0,0$1739,845,0,0,0$1740,845,0,0,0$1741,845,0,0,0$1742,845,0,0,0$1743,845,255,255,255$1744,845,0,0,0$1745,845,0,0,0$1746,845,0,0,0$1747,845,0,0,0$1748,845,255,255,255$1749,845,0,0,0$1750,845,0,0,0$1751,845,0,0,0$1752,845,0,0,0$1753,845,0,0,0$1754,845,0,0,0$1755,845,0,0,0$1756,845,0,0,0$1757,845,0,0,0$1758,845,0,0,0$1759,845,0,0,0$1698,846,0,0,0$1699,846,0,0,0$1700,846,0,0,0$1701,846,0,0,0$1702,846,0,0,0$1703,846,0,0,0$1704,846,0,0,0$1705,846,0,0,0$1706,846,0,0,0$1707,846,255,255,255$1708,846,0,0,0$1709,846,0,0,0$1710,846,0,0,0$1711,846,0,0,0$1712,846,0,0,0$1713,846,0,0,0$1714,846,0,0,0$1715,846,0,0,0$1716,846,0,0,0$1717,846,0,0,0$1718,846,0,0,0$1719,846,0,0,0$1720,846,0,0,0$1721,846,0,0,0$1722,846,255,255,255$1723,846,0,0,0$1724,846,0,0,0$1725,846,0,0,0$1726,846,0,0,0$1727,846,0,0,0$1728,846,255,255,255$1729,846,255,255,255$1730,846,255,255,255$1731,846,255,255,255$1732,846,255,255,255$1733,846,255,255,255$1734,846,255,255,255$1735,846,255,255,255$1736,846,255,255,255$1737,846,255,255,255$1738,846,0,0,0$1739,846,0,0,0$1740,846,0,0,0$1741,846,0,0,0$1742,846,0,0,0$1743,846,255,255,255$1744,846,0,0,0$1745,846,0,0,0$1746,846,0,0,0$1747,846,0,0,0$1748,846,255,255,255$1749,846,0,0,0$1750,846,0,0,0$1751,846,0,0,0$1752,846,0,0,0$1753,846,0,0,0$1754,846,0,0,0$1755,846,0,0,0$1756,846,0,0,0$1757,846,0,0,0$1758,846,0,0,0$1759,846,0,0,0$1698,847,0,0,0$1699,847,0,0,0$1700,847,0,0,0$1701,847,0,0,0$1702,847,0,0,0$1703,847,0,0,0$1704,847,0,0,0$1705,847,0,0,0$1706,847,0,0,0$1707,847,255,255,255$1708,847,255,255,255$1709,847,255,255,255$1710,847,255,255,255$1711,847,255,255,255$1712,847,255,255,255$1713,847,255,255,255$1714,847,255,255,255$1715,847,255,255,255$1716,847,255,255,255$1717,847,255,255,255$1718,847,255,255,255$1719,847,255,255,255$1720,847,255,255,255$1721,847,255,255,255$1722,847,255,255,255$1723,847,0,0,0$1724,847,0,0,0$1725,847,0,0,0$1726,847,0,0,0$1727,847,0,0,0$1728,847,0,0,0$1729,847,0,0,0$1730,847,0,0,0$1731,847,0,0,0$1732,847,255,255,255$1733,847,0,0,0$1734,847,0,0,0$1735,847,0,0,0$1736,847,0,0,0$1737,847,0,0,0$1738,847,0,0,0$1739,847,0,0,0$1740,847,0,0,0$1741,847,0,0,0$1742,847,255,255,255$1743,847,255,255,255$1744,847,0,0,0$1745,847,0,0,0$1746,847,0,0,0$1747,847,0,0,0$1748,847,255,255,255$1749,847,0,0,0$1750,847,0,0,0$1751,847,0,0,0$1752,847,0,0,0$1753,847,0,0,0$1754,847,0,0,0$1755,847,0,0,0$1756,847,0,0,0$1757,847,0,0,0$1758,847,0,0,0$1759,847,0,0,0$1698,848,0,0,0$1699,848,0,0,0$1700,848,0,0,0$1701,848,0,0,0$1702,848,0,0,0$1703,848,0,0,0$1704,848,0,0,0$1705,848,0,0,0$1706,848,0,0,0$1707,848,255,255,255$1708,848,0,0,0$1709,848,0,0,0$1710,848,0,0,0$1711,848,0,0,0$1712,848,0,0,0$1713,848,0,0,0$1714,848,0,0,0$1715,848,0,0,0$1716,848,0,0,0$1717,848,0,0,0$1718,848,0,0,0$1719,848,0,0,0$1720,848,0,0,0$1721,848,0,0,0$1722,848,0,0,0$1723,848,0,0,0$1724,848,0,0,0$1725,848,0,0,0$1726,848,0,0,0$1727,848,0,0,0$1728,848,0,0,0$1729,848,0,0,0$1730,848,0,0,0$1731,848,255,255,255$1732,848,255,255,255$1733,848,0,0,0$1734,848,0,0,0$1735,848,0,0,0$1736,848,0,0,0$1737,848,0,0,0$1738,848,0,0,0$1739,848,0,0,0$1740,848,0,0,0$1741,848,0,0,0$1742,848,255,255,255$1743,848,255,255,255$1744,848,0,0,0$1745,848,0,0,0$1746,848,0,0,0$1747,848,0,0,0$1748,848,255,255,255$1749,848,0,0,0$1750,848,0,0,0$1751,848,0,0,0$1752,848,0,0,0$1753,848,0,0,0$1754,848,0,0,0$1755,848,0,0,0$1756,848,0,0,0$1757,848,0,0,0$1758,848,0,0,0$1759,848,0,0,0$1698,849,0,0,0$1699,849,0,0,0$1700,849,0,0,0$1701,849,0,0,0$1702,849,0,0,0$1703,849,0,0,0$1704,849,0,0,0$1705,849,0,0,0$1706,849,0,0,0$1707,849,255,255,255$1708,849,0,0,0$1709,849,0,0,0$1710,849,0,0,0$1711,849,0,0,0$1712,849,0,0,0$1713,849,0,0,0$1714,849,0,0,0$1715,849,0,0,0$1716,849,0,0,0$1717,849,0,0,0$1718,849,0,0,0$1719,849,0,0,0$1720,849,0,0,0$1721,849,0,0,0$1722,849,0,0,0$1723,849,0,0,0$1724,849,0,0,0$1725,849,0,0,0$1726,849,0,0,0$1727,849,0,0,0$1728,849,0,0,0$1729,849,0,0,0$1730,849,0,0,0$1731,849,255,255,255$1732,849,0,0,0$1733,849,0,0,0$1734,849,0,0,0$1735,849,0,0,0$1736,849,0,0,0$1737,849,0,0,0$1738,849,0,0,0$1739,849,0,0,0$1740,849,0,0,0$1741,849,0,0,0$1742,849,255,255,255$1743,849,0,0,0$1744,849,0,0,0$1745,849,0,0,0$1746,849,0,0,0$1747,849,0,0,0$1748,849,255,255,255$1749,849,0,0,0$1750,849,0,0,0$1751,849,0,0,0$1752,849,0,0,0$1753,849,0,0,0$1754,849,0,0,0$1755,849,0,0,0$1756,849,0,0,0$1757,849,0,0,0$1758,849,0,0,0$1759,849,0,0,0$1698,850,0,0,0$1699,850,0,0,0$1700,850,0,0,0$1701,850,0,0,0$1702,850,0,0,0$1703,850,0,0,0$1704,850,0,0,0$1705,850,0,0,0$1706,850,0,0,0$1707,850,255,255,255$1708,850,0,0,0$1709,850,0,0,0$1710,850,0,0,0$1711,850,0,0,0$1712,850,0,0,0$1713,850,0,0,0$1714,850,0,0,0$1715,850,0,0,0$1716,850,0,0,0$1717,850,0,0,0$1718,850,0,0,0$1719,850,0,0,0$1720,850,0,0,0$1721,850,0,0,0$1722,850,0,0,0$1723,850,0,0,0$1724,850,0,0,0$1725,850,0,0,0$1726,850,0,0,0$1727,850,0,0,0$1728,850,0,0,0$1729,850,0,0,0$1730,850,0,0,0$1731,850,255,255,255$1732,850,0,0,0$1733,850,0,0,0$1734,850,0,0,0$1735,850,0,0,0$1736,850,255,255,255$1737,850,0,0,0$1738,850,0,0,0$1739,850,0,0,0$1740,850,0,0,0$1741,850,0,0,0$1742,850,255,255,255$1743,850,0,0,0$1744,850,0,0,0$1745,850,0,0,0$1746,850,0,0,0$1747,850,0,0,0$1748,850,255,255,255$1749,850,0,0,0$1750,850,0,0,0$1751,850,0,0,0$1752,850,0,0,0$1753,850,0,0,0$1754,850,0,0,0$1755,850,0,0,0$1756,850,0,0,0$1757,850,0,0,0$1758,850,0,0,0$1759,850,0,0,0$1698,851,0,0,0$1699,851,0,0,0$1700,851,0,0,0$1701,851,0,0,0$1702,851,0,0,0$1703,851,0,0,0$1704,851,0,0,0$1705,851,0,0,0$1706,851,0,0,0$1707,851,255,255,255$1708,851,0,0,0$1709,851,0,0,0$1710,851,255,255,255$1711,851,255,255,255$1712,851,255,255,255$1713,851,255,255,255$1714,851,255,255,255$1715,851,255,255,255$1716,851,255,255,255$1717,851,255,255,255$1718,851,255,255,255$1719,851,255,255,255$1720,851,255,255,255$1721,851,255,255,255$1722,851,255,255,255$1723,851,255,255,255$1724,851,0,0,0$1725,851,0,0,0$1726,851,0,0,0$1727,851,0,0,0$1728,851,0,0,0$1729,851,0,0,0$1730,851,0,0,0$1731,851,255,255,255$1732,851,0,0,0$1733,851,0,0,0$1734,851,0,0,0$1735,851,0,0,0$1736,851,255,255,255$1737,851,0,0,0$1738,851,0,0,0$1739,851,0,0,0$1740,851,0,0,0$1741,851,0,0,0$1742,851,255,255,255$1743,851,0,0,0$1744,851,0,0,0$1745,851,0,0,0$1746,851,0,0,0$1747,851,0,0,0$1748,851,255,255,255$1749,851,0,0,0$1750,851,0,0,0$1751,851,0,0,0$1752,851,0,0,0$1753,851,0,0,0$1754,851,0,0,0$1755,851,0,0,0$1756,851,0,0,0$1757,851,0,0,0$1758,851,0,0,0$1759,851,0,0,0$1698,852,0,0,0$1699,852,0,0,0$1700,852,0,0,0$1701,852,0,0,0$1702,852,0,0,0$1703,852,0,0,0$1704,852,0,0,0$1705,852,0,0,0$1706,852,255,255,255$1707,852,255,255,255$1708,852,0,0,0$1709,852,0,0,0$1710,852,255,255,255$1711,852,0,0,0$1712,852,0,0,0$1713,852,0,0,0$1714,852,0,0,0$1715,852,0,0,0$1716,852,0,0,0$1717,852,0,0,0$1718,852,0,0,0$1719,852,0,0,0$1720,852,0,0,0$1721,852,0,0,0$1722,852,255,255,255$1723,852,255,255,255$1724,852,0,0,0$1725,852,0,0,0$1726,852,0,0,0$1727,852,0,0,0$1728,852,0,0,0$1729,852,0,0,0$1730,852,255,255,255$1731,852,255,255,255$1732,852,0,0,0$1733,852,0,0,0$1734,852,0,0,0$1735,852,0,0,0$1736,852,0,0,0$1737,852,255,255,255$1738,852,0,0,0$1739,852,0,0,0$1740,852,0,0,0$1741,852,0,0,0$1742,852,255,255,255$1743,852,0,0,0$1744,852,0,0,0$1745,852,0,0,0$1746,852,0,0,0$1747,852,0,0,0$1748,852,255,255,255$1749,852,0,0,0$1750,852,0,0,0$1751,852,0,0,0$1752,852,0,0,0$1753,852,0,0,0$1754,852,0,0,0$1755,852,0,0,0$1756,852,0,0,0$1757,852,0,0,0$1758,852,0,0,0$1759,852,0,0,0$1698,853,0,0,0$1699,853,0,0,0$1700,853,0,0,0$1701,853,0,0,0$1702,853,0,0,0$1703,853,0,0,0$1704,853,0,0,0$1705,853,0,0,0$1706,853,255,255,255$1707,853,0,0,0$1708,853,0,0,0$1709,853,0,0,0$1710,853,255,255,255$1711,853,0,0,0$1712,853,0,0,0$1713,853,0,0,0$1714,853,0,0,0$1715,853,0,0,0$1716,853,0,0,0$1717,853,0,0,0$1718,853,0,0,0$1719,853,0,0,0$1720,853,0,0,0$1721,853,0,0,0$1722,853,255,255,255$1723,853,255,255,255$1724,853,0,0,0$1725,853,0,0,0$1726,853,0,0,0$1727,853,0,0,0$1728,853,0,0,0$1729,853,0,0,0$1730,853,255,255,255$1731,853,0,0,0$1732,853,0,0,0$1733,853,0,0,0$1734,853,0,0,0$1735,853,0,0,0$1736,853,0,0,0$1737,853,255,255,255$1738,853,0,0,0$1739,853,0,0,0$1740,853,0,0,0$1741,853,255,255,255$1742,853,255,255,255$1743,853,0,0,0$1744,853,0,0,0$1745,853,0,0,0$1746,853,0,0,0$1747,853,0,0,0$1748,853,255,255,255$1749,853,0,0,0$1750,853,0,0,0$1751,853,0,0,0$1752,853,0,0,0$1753,853,0,0,0$1754,853,0,0,0$1755,853,0,0,0$1756,853,0,0,0$1757,853,0,0,0$1758,853,0,0,0$1759,853,0,0,0$1698,854,0,0,0$1699,854,0,0,0$1700,854,0,0,0$1701,854,0,0,0$1702,854,0,0,0$1703,854,0,0,0$1704,854,0,0,0$1705,854,0,0,0$1706,854,255,255,255$1707,854,0,0,0$1708,854,0,0,0$1709,854,0,0,0$1710,854,255,255,255$1711,854,0,0,0$1712,854,0,0,0$1713,854,0,0,0$1714,854,0,0,0$1715,854,0,0,0$1716,854,0,0,0$1717,854,0,0,0$1718,854,0,0,0$1719,854,0,0,0$1720,854,0,0,0$1721,854,0,0,0$1722,854,255,255,255$1723,854,255,255,255$1724,854,0,0,0$1725,854,0,0,0$1726,854,0,0,0$1727,854,0,0,0$1728,854,0,0,0$1729,854,255,255,255$1730,854,255,255,255$1731,854,0,0,0$1732,854,0,0,0$1733,854,255,255,255$1734,854,255,255,255$1735,854,255,255,255$1736,854,255,255,255$1737,854,255,255,255$1738,854,0,0,0$1739,854,0,0,0$1740,854,0,0,0$1741,854,255,255,255$1742,854,0,0,0$1743,854,0,0,0$1744,854,0,0,0$1745,854,0,0,0$1746,854,0,0,0$1747,854,255,255,255$1748,854,255,255,255$1749,854,0,0,0$1750,854,0,0,0$1751,854,0,0,0$1752,854,0,0,0$1753,854,0,0,0$1754,854,0,0,0$1755,854,0,0,0$1756,854,0,0,0$1757,854,0,0,0$1758,854,0,0,0$1759,854,0,0,0$1698,855,0,0,0$1699,855,0,0,0$1700,855,0,0,0$1701,855,0,0,0$1702,855,0,0,0$1703,855,0,0,0$1704,855,0,0,0$1705,855,0,0,0$1706,855,255,255,255$1707,855,0,0,0$1708,855,0,0,0$1709,855,0,0,0$1710,855,255,255,255$1711,855,0,0,0$1712,855,0,0,0$1713,855,0,0,0$1714,855,0,0,0$1715,855,0,0,0$1716,855,0,0,0$1717,855,0,0,0$1718,855,0,0,0$1719,855,0,0,0$1720,855,0,0,0$1721,855,0,0,0$1722,855,255,255,255$1723,855,255,255,255$1724,855,0,0,0$1725,855,0,0,0$1726,855,0,0,0$1727,855,0,0,0$1728,855,0,0,0$1729,855,255,255,255$1730,855,255,255,255$1731,855,255,255,255$1732,855,255,255,255$1733,855,0,0,0$1734,855,0,0,0$1735,855,0,0,0$1736,855,0,0,0$1737,855,0,0,0$1738,855,255,255,255$1739,855,0,0,0$1740,855,255,255,255$1741,855,255,255,255$1742,855,0,0,0$1743,855,0,0,0$1744,855,0,0,0$1745,855,0,0,0$1746,855,0,0,0$1747,855,255,255,255$1748,855,255,255,255$1749,855,0,0,0$1750,855,0,0,0$1751,855,0,0,0$1752,855,0,0,0$1753,855,0,0,0$1754,855,0,0,0$1755,855,0,0,0$1756,855,0,0,0$1757,855,0,0,0$1758,855,0,0,0$1759,855,0,0,0$1698,856,0,0,0$1699,856,0,0,0$1700,856,0,0,0$1701,856,0,0,0$1702,856,0,0,0$1703,856,0,0,0$1704,856,0,0,0$1705,856,255,255,255$1706,856,255,255,255$1707,856,0,0,0$1708,856,0,0,0$1709,856,0,0,0$1710,856,255,255,255$1711,856,0,0,0$1712,856,0,0,0$1713,856,0,0,0$1714,856,0,0,0$1715,856,0,0,0$1716,856,0,0,0$1717,856,0,0,0$1718,856,0,0,0$1719,856,0,0,0$1720,856,0,0,0$1721,856,0,0,0$1722,856,255,255,255$1723,856,255,255,255$1724,856,0,0,0$1725,856,0,0,0$1726,856,0,0,0$1727,856,0,0,0$1728,856,0,0,0$1729,856,255,255,255$1730,856,0,0,0$1731,856,0,0,0$1732,856,0,0,0$1733,856,0,0,0$1734,856,0,0,0$1735,856,0,0,0$1736,856,0,0,0$1737,856,0,0,0$1738,856,0,0,0$1739,856,0,0,0$1740,856,255,255,255$1741,856,0,0,0$1742,856,0,0,0$1743,856,0,0,0$1744,856,0,0,0$1745,856,0,0,0$1746,856,0,0,0$1747,856,255,255,255$1748,856,0,0,0$1749,856,0,0,0$1750,856,0,0,0$1751,856,0,0,0$1752,856,0,0,0$1753,856,0,0,0$1754,856,0,0,0$1755,856,0,0,0$1756,856,0,0,0$1757,856,0,0,0$1758,856,0,0,0$1759,856,0,0,0$1698,857,0,0,0$1699,857,0,0,0$1700,857,0,0,0$1701,857,0,0,0$1702,857,0,0,0$1703,857,0,0,0$1704,857,0,0,0$1705,857,255,255,255$1706,857,0,0,0$1707,857,0,0,0$1708,857,0,0,0$1709,857,0,0,0$1710,857,255,255,255$1711,857,255,255,255$1712,857,255,255,255$1713,857,255,255,255$1714,857,255,255,255$1715,857,255,255,255$1716,857,255,255,255$1717,857,255,255,255$1718,857,255,255,255$1719,857,255,255,255$1720,857,255,255,255$1721,857,255,255,255$1722,857,255,255,255$1723,857,255,255,255$1724,857,0,0,0$1725,857,0,0,0$1726,857,0,0,0$1727,857,0,0,0$1728,857,0,0,0$1729,857,0,0,0$1730,857,0,0,0$1731,857,0,0,0$1732,857,0,0,0$1733,857,0,0,0$1734,857,0,0,0$1735,857,0,0,0$1736,857,0,0,0$1737,857,0,0,0$1738,857,0,0,0$1739,857,255,255,255$1740,857,255,255,255$1741,857,0,0,0$1742,857,0,0,0$1743,857,0,0,0$1744,857,0,0,0$1745,857,0,0,0$1746,857,0,0,0$1747,857,255,255,255$1748,857,0,0,0$1749,857,0,0,0$1750,857,0,0,0$1751,857,0,0,0$1752,857,0,0,0$1753,857,0,0,0$1754,857,0,0,0$1755,857,0,0,0$1756,857,0,0,0$1757,857,0,0,0$1758,857,0,0,0$1759,857,0,0,0$1698,858,0,0,0$1699,858,0,0,0$1700,858,0,0,0$1701,858,0,0,0$1702,858,0,0,0$1703,858,0,0,0$1704,858,255,255,255$1705,858,255,255,255$1706,858,0,0,0$1707,858,0,0,0$1708,858,0,0,0$1709,858,0,0,0$1710,858,255,255,255$1711,858,0,0,0$1712,858,0,0,0$1713,858,0,0,0$1714,858,0,0,0$1715,858,0,0,0$1716,858,0,0,0$1717,858,0,0,0$1718,858,0,0,0$1719,858,0,0,0$1720,858,0,0,0$1721,858,0,0,0$1722,858,255,255,255$1723,858,255,255,255$1724,858,0,0,0$1725,858,0,0,0$1726,858,0,0,0$1727,858,0,0,0$1728,858,0,0,0$1729,858,0,0,0$1730,858,0,0,0$1731,858,0,0,0$1732,858,0,0,0$1733,858,0,0,0$1734,858,0,0,0$1735,858,0,0,0$1736,858,0,0,0$1737,858,0,0,0$1738,858,255,255,255$1739,858,255,255,255$1740,858,0,0,0$1741,858,0,0,0$1742,858,0,0,0$1743,858,255,255,255$1744,858,255,255,255$1745,858,255,255,255$1746,858,255,255,255$1747,858,255,255,255$1748,858,0,0,0$1749,858,0,0,0$1750,858,0,0,0$1751,858,0,0,0$1752,858,0,0,0$1753,858,0,0,0$1754,858,0,0,0$1755,858,0,0,0$1756,858,0,0,0$1757,858,0,0,0$1758,858,0,0,0$1759,858,0,0,0$1698,859,0,0,0$1699,859,0,0,0$1700,859,0,0,0$1701,859,0,0,0$1702,859,0,0,0$1703,859,0,0,0$1704,859,0,0,0$1705,859,0,0,0$1706,859,0,0,0$1707,859,0,0,0$1708,859,0,0,0$1709,859,0,0,0$1710,859,0,0,0$1711,859,0,0,0$1712,859,0,0,0$1713,859,0,0,0$1714,859,0,0,0$1715,859,0,0,0$1716,859,0,0,0$1717,859,0,0,0$1718,859,0,0,0$1719,859,0,0,0$1720,859,0,0,0$1721,859,0,0,0$1722,859,0,0,0$1723,859,0,0,0$1724,859,0,0,0$1725,859,0,0,0$1726,859,0,0,0$1727,859,0,0,0$1728,859,0,0,0$1729,859,0,0,0$1730,859,0,0,0$1731,859,0,0,0$1732,859,0,0,0$1733,859,0,0,0$1734,859,0,0,0$1735,859,0,0,0$1736,859,0,0,0$1737,859,0,0,0$1738,859,0,0,0$1739,859,0,0,0$1740,859,0,0,0$1741,859,0,0,0$1742,859,0,0,0$1743,859,0,0,0$1744,859,0,0,0$1745,859,0,0,0$1746,859,0,0,0$1747,859,0,0,0$1748,859,0,0,0$1749,859,0,0,0$1750,859,0,0,0$1751,859,0,0,0$1752,859,0,0,0$1753,859,0,0,0$1754,859,0,0,0$1755,859,0,0,0$1756,859,0,0,0$1757,859,0,0,0$1758,859,0,0,0$1759,859,0,0,0$1698,860,0,0,0$1699,860,0,0,0$1700,860,0,0,0$1701,860,0,0,0$1702,860,0,0,0$1703,860,0,0,0$1704,860,0,0,0$1705,860,0,0,0$1706,860,0,0,0$1707,860,0,0,0$1708,860,0,0,0$1709,860,0,0,0$1710,860,0,0,0$1711,860,0,0,0$1712,860,0,0,0$1713,860,0,0,0$1714,860,0,0,0$1715,860,0,0,0$1716,860,0,0,0$1717,860,0,0,0$1718,860,0,0,0$1719,860,0,0,0$1720,860,0,0,0$1721,860,0,0,0$1722,860,0,0,0$1723,860,0,0,0$1724,860,0,0,0$1725,860,0,0,0$1726,860,0,0,0$1727,860,0,0,0$1728,860,0,0,0$1729,860,0,0,0$1730,860,0,0,0$1731,860,0,0,0$1732,860,0,0,0$1733,860,0,0,0$1734,860,0,0,0$1735,860,0,0,0$1736,860,0,0,0$1737,860,0,0,0$1738,860,0,0,0$1739,860,0,0,0$1740,860,0,0,0$1741,860,0,0,0$1742,860,0,0,0$1743,860,0,0,0$1744,860,0,0,0$1745,860,0,0,0$1746,860,0,0,0$1747,860,0,0,0$1748,860,0,0,0$1749,860,0,0,0$1750,860,0,0,0$1751,860,0,0,0$1752,860,0,0,0$1753,860,0,0,0$1754,860,0,0,0$1755,860,0,0,0$1756,860,0,0,0$1757,860,0,0,0$1758,860,0,0,0$1759,860,0,0,0$1698,861,0,0,0$1699,861,0,0,0$1700,861,0,0,0$1701,861,0,0,0$1702,861,0,0,0$1703,861,0,0,0$1704,861,0,0,0$1705,861,0,0,0$1706,861,0,0,0$1707,861,0,0,0$1708,861,0,0,0$1709,861,0,0,0$1710,861,0,0,0$1711,861,0,0,0$1712,861,0,0,0$1713,861,0,0,0$1714,861,0,0,0$1715,861,0,0,0$1716,861,0,0,0$1717,861,0,0,0$1718,861,0,0,0$1719,861,0,0,0$1720,861,0,0,0$1721,861,0,0,0$1722,861,0,0,0$1723,861,0,0,0$1724,861,0,0,0$1725,861,0,0,0$1726,861,0,0,0$1727,861,0,0,0$1728,861,0,0,0$1729,861,0,0,0$1730,861,0,0,0$1731,861,0,0,0$1732,861,0,0,0$1733,861,0,0,0$1734,861,0,0,0$1735,861,0,0,0$1736,861,0,0,0$1737,861,0,0,0$1738,861,0,0,0$1739,861,0,0,0$1740,861,0,0,0$1741,861,0,0,0$1742,861,0,0,0$1743,861,0,0,0$1744,861,0,0,0$1745,861,0,0,0$1746,861,0,0,0$1747,861,0,0,0$1748,861,0,0,0$1749,861,0,0,0$1750,861,0,0,0$1751,861,0,0,0$1752,861,0,0,0$1753,861,0,0,0$1754,861,0,0,0$1755,861,0,0,0$1756,861,0,0,0$1757,861,0,0,0$1758,861,0,0,0$1759,861,0,0,0$1698,862,0,0,0$1699,862,0,0,0$1700,862,0,0,0$1701,862,0,0,0$1702,862,0,0,0$1703,862,0,0,0$1704,862,0,0,0$1705,862,0,0,0$1706,862,0,0,0$1707,862,0,0,0$1708,862,0,0,0$1709,862,0,0,0$1710,862,0,0,0$1711,862,0,0,0$1712,862,0,0,0$1713,862,0,0,0$1714,862,0,0,0$1715,862,0,0,0$1716,862,0,0,0$1717,862,0,0,0$1718,862,0,0,0$1719,862,0,0,0$1720,862,0,0,0$1721,862,0,0,0$1722,862,0,0,0$1723,862,0,0,0$1724,862,0,0,0$1725,862,0,0,0$1726,862,0,0,0$1727,862,0,0,0$1728,862,0,0,0$1729,862,0,0,0$1730,862,0,0,0$1731,862,0,0,0$1732,862,0,0,0$1733,862,0,0,0$1734,862,0,0,0$1735,862,0,0,0$1736,862,0,0,0$1737,862,0,0,0$1738,862,0,0,0$1739,862,0,0,0$1740,862,0,0,0$1741,862,0,0,0$1742,862,0,0,0$1743,862,0,0,0$1744,862,0,0,0$1745,862,0,0,0$1746,862,0,0,0$1747,862,0,0,0$1748,862,0,0,0$1749,862,0,0,0$1750,862,0,0,0$1751,862,0,0,0$1752,862,0,0,0$1753,862,0,0,0$1754,862,0,0,0$1755,862,0,0,0$1756,862,0,0,0$1757,862,0,0,0$1758,862,0,0,0$1759,862,0,0,0$1698,863,0,0,0$1699,863,0,0,0$1700,863,0,0,0$1701,863,0,0,0$1702,863,0,0,0$1703,863,0,0,0$1704,863,0,0,0$1705,863,0,0,0$1706,863,0,0,0$1707,863,0,0,0$1708,863,0,0,0$1709,863,0,0,0$1710,863,0,0,0$1711,863,0,0,0$1712,863,0,0,0$1713,863,0,0,0$1714,863,0,0,0$1715,863,0,0,0$1716,863,0,0,0$1717,863,0,0,0$1718,863,0,0,0$1719,863,0,0,0$1720,863,0,0,0$1721,863,0,0,0$1722,863,0,0,0$1723,863,0,0,0$1724,863,0,0,0$1725,863,0,0,0$1726,863,0,0,0$1727,863,0,0,0$1728,863,0,0,0$1729,863,0,0,0$1730,863,0,0,0$1731,863,0,0,0$1732,863,0,0,0$1733,863,0,0,0$1734,863,0,0,0$1735,863,0,0,0$1736,863,0,0,0$1737,863,0,0,0$1738,863,0,0,0$1739,863,0,0,0$1740,863,0,0,0$1741,863,0,0,0$1742,863,0,0,0$1743,863,0,0,0$1744,863,0,0,0$1745,863,0,0,0$1746,863,0,0,0$1747,863,0,0,0$1748,863,0,0,0$1749,863,0,0,0$1750,863,0,0,0$1751,863,0,0,0$1752,863,0,0,0$1753,863,0,0,0$1754,863,0,0,0$1755,863,0,0,0$1756,863,0,0,0$1757,863,0,0,0$1758,863,0,0,0$1759,863,0,0,0$1698,864,0,0,0$1699,864,0,0,0$1700,864,0,0,0$1701,864,0,0,0$1702,864,0,0,0$1703,864,0,0,0$1704,864,0,0,0$1705,864,0,0,0$1706,864,0,0,0$1707,864,0,0,0$1708,864,0,0,0$1709,864,0,0,0$1710,864,0,0,0$1711,864,0,0,0$1712,864,0,0,0$1713,864,0,0,0$1714,864,0,0,0$1715,864,0,0,0$1716,864,0,0,0$1717,864,0,0,0$1718,864,0,0,0$1719,864,0,0,0$1720,864,0,0,0$1721,864,0,0,0$1722,864,0,0,0$1723,864,0,0,0$1724,864,0,0,0$1725,864,0,0,0$1726,864,0,0,0$1727,864,0,0,0$1728,864,0,0,0$1729,864,0,0,0$1730,864,0,0,0$1731,864,0,0,0$1732,864,0,0,0$1733,864,0,0,0$1734,864,0,0,0$1735,864,0,0,0$1736,864,0,0,0$1737,864,0,0,0$1738,864,0,0,0$1739,864,0,0,0$1740,864,0,0,0$1741,864,0,0,0$1742,864,0,0,0$1743,864,0,0,0$1744,864,0,0,0$1745,864,0,0,0$1746,864,0,0,0$1747,864,0,0,0$1748,864,0,0,0$1749,864,0,0,0$1750,864,0,0,0$1751,864,0,0,0$1752,864,0,0,0$1753,864,0,0,0$1754,864,0,0,0$1755,864,0,0,0$1756,864,0,0,0$1757,864,0,0,0$1758,864,0,0,0$1759,864,0,0,0$1698,865,0,0,0$1699,865,0,0,0$1700,865,0,0,0$1701,865,0,0,0$1702,865,0,0,0$1703,865,0,0,0$1704,865,0,0,0$1705,865,0,0,0$1706,865,0,0,0$1707,865,0,0,0$1708,865,0,0,0$1709,865,0,0,0$1710,865,0,0,0$1711,865,0,0,0$1712,865,0,0,0$1713,865,0,0,0$1714,865,0,0,0$1715,865,0,0,0$1716,865,0,0,0$1717,865,0,0,0$1718,865,0,0,0$1719,865,0,0,0$1720,865,0,0,0$1721,865,0,0,0$1722,865,0,0,0$1723,865,0,0,0$1724,865,0,0,0$1725,865,0,0,0$1726,865,0,0,0$1727,865,0,0,0$1728,865,0,0,0$1729,865,0,0,0$1730,865,0,0,0$1731,865,0,0,0$1732,865,0,0,0$1733,865,0,0,0$1734,865,0,0,0$1735,865,0,0,0$1736,865,0,0,0$1737,865,0,0,0$1738,865,0,0,0$1739,865,0,0,0$1740,865,0,0,0$1741,865,0,0,0$1742,865,0,0,0$1743,865,0,0,0$1744,865,0,0,0$1745,865,0,0,0$1746,865,0,0,0$1747,865,0,0,0$1748,865,0,0,0$1749,865,0,0,0$1750,865,0,0,0$1751,865,0,0,0$1752,865,0,0,0$1753,865,0,0,0$1754,865,0,0,0$1755,865,0,0,0$1756,865,0,0,0$1757,865,0,0,0$1758,865,0,0,0$1759,865,0,0,0$1698,866,0,0,0$1699,866,0,0,0$1700,866,0,0,0$1701,866,0,0,0$1702,866,0,0,0$1703,866,0,0,0$1704,866,0,0,0$1705,866,0,0,0$1706,866,0,0,0$1707,866,0,0,0$1708,866,0,0,0$1709,866,0,0,0$1710,866,0,0,0$1711,866,0,0,0$1712,866,0,0,0$1713,866,0,0,0$1714,866,0,0,0$1715,866,0,0,0$1716,866,0,0,0$1717,866,0,0,0$1718,866,0,0,0$1719,866,0,0,0$1720,866,0,0,0$1721,866,0,0,0$1722,866,0,0,0$1723,866,0,0,0$1724,866,0,0,0$1725,866,0,0,0$1726,866,0,0,0$1727,866,0,0,0$1728,866,0,0,0$1729,866,0,0,0$1730,866,0,0,0$1731,866,0,0,0$1732,866,0,0,0$1733,866,0,0,0$1734,866,0,0,0$1735,866,0,0,0$1736,866,0,0,0$1737,866,0,0,0$1738,866,0,0,0$1739,866,0,0,0$1740,866,0,0,0$1741,866,0,0,0$1742,866,0,0,0$1743,866,0,0,0$1744,866,0,0,0$1745,866,0,0,0$1746,866,0,0,0$1747,866,0,0,0$1748,866,0,0,0$1749,866,0,0,0$1750,866,0,0,0$1751,866,0,0,0$1752,866,0,0,0$1753,866,0,0,0$1754,866,0,0,0$1755,866,0,0,0$1756,866,0,0,0$1757,866,0,0,0$1758,866,0,0,0$1759,866,0,0,0$1698,867,0,0,0$1699,867,0,0,0$1700,867,0,0,0$1701,867,0,0,0$1702,867,0,0,0$1703,867,0,0,0$1704,867,0,0,0$1705,867,0,0,0$1706,867,0,0,0$1707,867,0,0,0$1708,867,0,0,0$1709,867,0,0,0$1710,867,0,0,0$1711,867,0,0,0$1712,867,0,0,0$1713,867,0,0,0$1714,867,0,0,0$1715,867,0,0,0$1716,867,0,0,0$1717,867,0,0,0$1718,867,0,0,0$1719,867,0,0,0$1720,867,0,0,0$1721,867,0,0,0$1722,867,0,0,0$1723,867,0,0,0$1724,867,0,0,0$1725,867,0,0,0$1726,867,0,0,0$1727,867,0,0,0$1728,867,0,0,0$1729,867,0,0,0$1730,867,0,0,0$1731,867,0,0,0$1732,867,0,0,0$1733,867,0,0,0$1734,867,0,0,0$1735,867,0,0,0$1736,867,0,0,0$1737,867,0,0,0$1738,867,0,0,0$1739,867,0,0,0$1740,867,0,0,0$1741,867,0,0,0$1742,867,0,0,0$1743,867,0,0,0$1744,867,0,0,0$1745,867,0,0,0$1746,867,0,0,0$1747,867,0,0,0$1748,867,0,0,0$1749,867,0,0,0$1750,867,0,0,0$1751,867,0,0,0$1752,867,0,0,0$1753,867,0,0,0$1754,867,0,0,0$1755,867,0,0,0$1756,867,0,0,0$1757,867,0,0,0$1758,867,0,0,0$1759,867,0,0,0$1698,868,0,0,0$1699,868,0,0,0$1700,868,0,0,0$1701,868,0,0,0$1702,868,0,0,0$1703,868,0,0,0$1704,868,0,0,0$1705,868,0,0,0$1706,868,0,0,0$1707,868,0,0,0$1708,868,0,0,0$1709,868,0,0,0$1710,868,0,0,0$1711,868,0,0,0$1712,868,0,0,0$1713,868,0,0,0$1714,868,0,0,0$1715,868,0,0,0$1716,868,0,0,0$1717,868,0,0,0$1718,868,0,0,0$1719,868,0,0,0$1720,868,0,0,0$1721,868,0,0,0$1722,868,0,0,0$1723,868,0,0,0$1724,868,0,0,0$1725,868,0,0,0$1726,868,0,0,0$1727,868,0,0,0$1728,868,0,0,0$1729,868,0,0,0$1730,868,0,0,0$1731,868,0,0,0$1732,868,0,0,0$1733,868,0,0,0$1734,868,0,0,0$1735,868,0,0,0$1736,868,0,0,0$1737,868,0,0,0$1738,868,0,0,0$1739,868,0,0,0$1740,868,0,0,0$1741,868,0,0,0$1742,868,0,0,0$1743,868,0,0,0$1744,868,0,0,0$1745,868,0,0,0$1746,868,0,0,0$1747,868,0,0,0$1748,868,0,0,0$1749,868,0,0,0$1750,868,0,0,0$1751,868,0,0,0$1752,868,0,0,0$1753,868,0,0,0$1754,868,0,0,0$1755,868,0,0,0$1756,868,0,0,0$1757,868,0,0,0$1758,868,0,0,0$1759,868,0,0,0");
@@ -43,11 +42,13 @@
        /// <summary>
        /// 是否登陆界面
        /// </summary>
        /// <param name="isQQFastLogin">是否QQ快速登录</param>
        /// <param name="wegameRect"></param>
        /// <param name="changeMethodButtonRect"></param>
        /// <returns></returns>
        public static bool IsLoginPage(out ZTRectangle wegameRect,out ZTRectangle changeMethodButtonRect)
        public static bool IsLoginPage(out bool isQQFastLogin, out ZTRectangle wegameRect, out ZTRectangle changeMethodButtonRect)
        {
            isQQFastLogin = false;
            changeMethodButtonRect = ZTRectangle.Empty;
            wegameRect = ZTRectangle.Empty;
            //查找程序区域
@@ -56,11 +57,17 @@
                return false;
            }
            //截图
            System.Drawing.Bitmap bitmap = ScreenCapture.Instance.CaptureScreen();
            Image<Rgb, byte> image = new Image<Rgb, byte>(bitmap);
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            if (CVHelper.FindColorArrayForThreshold(out changeMethodButtonRect, image, loginByQQFastText, wegameRect))
            {
                isQQFastLogin = false;
                return true;
            }
            if (CVHelper.FindColorArrayForThreshold(out changeMethodButtonRect, image, loginByAccount, wegameRect))
            {
                isQQFastLogin = true;
                return true;
            }
@@ -94,15 +101,16 @@
            return CVHelper.FindColorArrayForThreshold(out dnfItemRect, image, DNFItem, wegameRect);
        }
        //需要更新按钮
        private static ColorArray UpdateButton = ColorArray.FromThresholdString(200, "1470,892,0,0,0$1478,891,0,0,0$1479,891,0,0,0$1452,892,0,0,0$1454,892,0,0,0$1456,892,0,0,0$1458,892,0,0,0$1460,892,0,0,0$1462,892,0,0,0$1464,892,0,0,0$1466,892,0,0,0$1468,892,0,0,0$1478,892,0,0,0$1480,892,0,0,0$1490,892,0,0,0$1492,892,0,0,0$1494,892,0,0,0$1449,893,0,0,0$1450,893,0,0,0$1451,893,0,0,0$1452,893,0,0,0$1453,893,0,0,0$1454,893,0,0,0$1455,893,0,0,0$1456,893,0,0,0$1457,893,0,0,0$1458,893,0,0,0$1459,893,0,0,0$1460,893,0,0,0$1461,893,0,0,0$1462,893,0,0,0$1463,893,0,0,0$1464,893,0,0,0$1465,893,0,0,0$1466,893,0,0,0$1467,893,0,0,0$1468,893,0,0,0$1469,893,0,0,0$1470,893,0,0,0$1471,893,0,0,0$1472,893,0,0,0$1476,893,0,0,0$1481,893,0,0,0$1486,893,0,0,0$1487,893,0,0,0$1488,893,0,0,0$1489,893,0,0,0$1490,893,0,0,0$1491,893,0,0,0$1495,893,0,0,0$1472,894,0,0,0$1474,894,0,0,0$1476,894,0,0,0$1479,894,255,255,255$1482,894,0,0,0$1484,894,0,0,0$1486,894,0,0,0$1491,894,255,255,255$1492,894,255,255,255$1493,894,255,255,255$1496,894,0,0,0$1448,895,0,0,0$1449,895,0,0,0$1451,895,255,255,255$1452,895,255,255,255$1453,895,255,255,255$1454,895,255,255,255$1455,895,255,255,255$1456,895,255,255,255$1457,895,255,255,255$1458,895,255,255,255$1459,895,255,255,255$1460,895,255,255,255$1461,895,255,255,255$1462,895,255,255,255$1463,895,255,255,255$1464,895,255,255,255$1465,895,255,255,255$1466,895,255,255,255$1467,895,255,255,255$1468,895,255,255,255$1469,895,255,255,255$1470,895,255,255,255$1472,895,0,0,0$1473,895,0,0,0$1479,895,255,255,255$1480,895,255,255,255$1487,895,255,255,255$1488,895,255,255,255$1489,895,255,255,255$1490,895,255,255,255$1494,895,0,0,0$1495,895,0,0,0$1496,895,0,0,0$1450,896,0,0,0$1452,896,0,0,0$1454,896,0,0,0$1456,896,0,0,0$1458,896,0,0,0$1460,896,255,255,255$1461,896,255,255,255$1462,896,0,0,0$1464,896,0,0,0$1466,896,0,0,0$1468,896,0,0,0$1470,896,0,0,0$1472,896,0,0,0$1475,896,255,255,255$1476,896,255,255,255$1477,896,255,255,255$1478,896,255,255,255$1479,896,255,255,255$1480,896,255,255,255$1481,896,255,255,255$1482,896,255,255,255$1483,896,255,255,255$1484,896,255,255,255$1486,896,255,255,255$1487,896,255,255,255$1490,896,0,0,0$1492,896,0,0,0$1494,896,0,0,0$1450,897,0,0,0$1451,897,0,0,0$1452,897,0,0,0$1453,897,0,0,0$1454,897,0,0,0$1455,897,0,0,0$1456,897,0,0,0$1457,897,0,0,0$1458,897,0,0,0$1460,897,255,255,255$1461,897,255,255,255$1462,897,0,0,0$1463,897,0,0,0$1464,897,0,0,0$1465,897,0,0,0$1466,897,0,0,0$1467,897,0,0,0$1468,897,0,0,0$1469,897,0,0,0$1470,897,0,0,0$1471,897,0,0,0$1472,897,0,0,0$1473,897,0,0,0$1474,897,0,0,0$1478,897,0,0,0$1479,897,0,0,0$1480,897,0,0,0$1484,897,0,0,0$1485,897,0,0,0$1486,897,255,255,255$1487,897,255,255,255$1488,897,0,0,0$1489,897,0,0,0$1490,897,0,0,0$1491,897,0,0,0$1492,897,0,0,0$1450,898,0,0,0$1453,898,255,255,255$1454,898,255,255,255$1455,898,255,255,255$1456,898,255,255,255$1457,898,255,255,255$1458,898,255,255,255$1459,898,255,255,255$1460,898,255,255,255$1461,898,255,255,255$1462,898,255,255,255$1463,898,255,255,255$1464,898,255,255,255$1465,898,255,255,255$1466,898,255,255,255$1467,898,255,255,255$1468,898,255,255,255$1470,898,0,0,0$1474,898,0,0,0$1477,898,255,255,255$1480,898,0,0,0$1482,898,255,255,255$1484,898,0,0,0$1486,898,255,255,255$1487,898,255,255,255$1488,898,0,0,0$1450,899,0,0,0$1451,899,0,0,0$1453,899,255,255,255$1460,899,255,255,255$1461,899,255,255,255$1468,899,255,255,255$1470,899,0,0,0$1471,899,0,0,0$1473,899,0,0,0$1474,899,0,0,0$1475,899,0,0,0$1477,899,255,255,255$1479,899,0,0,0$1481,899,255,255,255$1482,899,255,255,255$1484,899,0,0,0$1485,899,0,0,0$1486,899,255,255,255$1487,899,255,255,255$1488,899,0,0,0$1489,899,0,0,0$1490,899,0,0,0$1491,899,0,0,0$1492,899,0,0,0$1493,899,0,0,0$1494,899,0,0,0$1495,899,0,0,0$1496,899,0,0,0$1450,900,0,0,0$1453,900,255,255,255$1456,900,0,0,0$1458,900,0,0,0$1460,900,255,255,255$1461,900,255,255,255$1462,900,0,0,0$1464,900,0,0,0$1466,900,0,0,0$1468,900,255,255,255$1470,900,0,0,0$1472,900,0,0,0$1474,900,0,0,0$1481,900,255,255,255$1484,900,0,0,0$1486,900,255,255,255$1487,900,255,255,255$1488,900,0,0,0$1490,900,0,0,0$1492,900,0,0,0$1494,900,0,0,0$1496,900,0,0,0$1450,901,0,0,0$1451,901,0,0,0$1453,901,255,255,255$1460,901,255,255,255$1461,901,255,255,255$1468,901,255,255,255$1470,901,0,0,0$1471,901,0,0,0$1472,901,0,0,0$1474,901,255,255,255$1475,901,255,255,255$1476,901,255,255,255$1477,901,255,255,255$1478,901,255,255,255$1479,901,255,255,255$1480,901,255,255,255$1481,901,255,255,255$1482,901,255,255,255$1483,901,255,255,255$1484,901,255,255,255$1486,901,255,255,255$1487,901,255,255,255$1488,901,255,255,255$1489,901,255,255,255$1490,901,255,255,255$1491,901,255,255,255$1492,901,255,255,255$1493,901,255,255,255$1494,901,255,255,255$1495,901,255,255,255$1496,901,0,0,0$1450,902,0,0,0$1453,902,255,255,255$1454,902,255,255,255$1455,902,255,255,255$1456,902,255,255,255$1457,902,255,255,255$1458,902,255,255,255$1459,902,255,255,255$1460,902,255,255,255$1461,902,255,255,255$1462,902,255,255,255$1463,902,255,255,255$1464,902,255,255,255$1465,902,255,255,255$1466,902,255,255,255$1467,902,255,255,255$1468,902,255,255,255$1470,902,0,0,0$1472,902,0,0,0$1479,902,255,255,255$1486,902,255,255,255$1487,902,255,255,255$1491,902,255,255,255$1492,902,255,255,255$1496,902,0,0,0$1450,903,0,0,0$1451,903,0,0,0$1453,903,255,255,255$1455,903,0,0,0$1456,903,0,0,0$1457,903,0,0,0$1458,903,0,0,0$1460,903,255,255,255$1461,903,255,255,255$1462,903,0,0,0$1463,903,0,0,0$1464,903,0,0,0$1465,903,0,0,0$1466,903,0,0,0$1468,903,255,255,255$1470,903,0,0,0$1471,903,0,0,0$1472,903,0,0,0$1473,903,0,0,0$1474,903,0,0,0$1475,903,0,0,0$1476,903,0,0,0$1477,903,0,0,0$1479,903,255,255,255$1481,903,0,0,0$1482,903,0,0,0$1483,903,0,0,0$1484,903,0,0,0$1485,903,0,0,0$1486,903,255,255,255$1487,903,255,255,255$1488,903,0,0,0$1489,903,0,0,0$1490,903,0,0,0$1492,903,255,255,255$1494,903,0,0,0$1495,903,0,0,0$1496,903,0,0,0$1450,904,0,0,0$1453,904,255,255,255$1456,904,0,0,0$1458,904,0,0,0$1460,904,255,255,255$1461,904,255,255,255$1462,904,0,0,0$1464,904,0,0,0$1466,904,0,0,0$1468,904,255,255,255$1470,904,0,0,0$1472,904,0,0,0$1474,904,0,0,0$1476,904,0,0,0$1479,904,255,255,255$1482,904,0,0,0$1484,904,0,0,0$1486,904,255,255,255$1487,904,255,255,255$1488,904,0,0,0$1490,904,0,0,0$1492,904,255,255,255$1494,904,0,0,0$1450,905,0,0,0$1451,905,0,0,0$1453,905,255,255,255$1460,905,255,255,255$1461,905,255,255,255$1468,905,255,255,255$1470,905,0,0,0$1471,905,0,0,0$1472,905,0,0,0$1474,905,255,255,255$1475,905,255,255,255$1476,905,255,255,255$1477,905,255,255,255$1478,905,255,255,255$1479,905,255,255,255$1480,905,255,255,255$1481,905,255,255,255$1482,905,255,255,255$1483,905,255,255,255$1484,905,255,255,255$1486,905,255,255,255$1487,905,255,255,255$1488,905,0,0,0$1489,905,0,0,0$1490,905,0,0,0$1492,905,255,255,255$1494,905,0,0,0$1450,906,0,0,0$1453,906,255,255,255$1454,906,255,255,255$1455,906,255,255,255$1456,906,255,255,255$1457,906,255,255,255$1458,906,255,255,255$1459,906,255,255,255$1460,906,255,255,255$1461,906,255,255,255$1462,906,255,255,255$1463,906,255,255,255$1464,906,255,255,255$1465,906,255,255,255$1466,906,255,255,255$1467,906,255,255,255$1468,906,255,255,255$1470,906,0,0,0$1472,906,0,0,0$1479,906,255,255,255$1486,906,255,255,255$1488,906,0,0,0$1490,906,0,0,0$1492,906,255,255,255$1494,906,0,0,0$1451,907,0,0,0$1452,907,0,0,0$1456,907,0,0,0$1457,907,0,0,0$1458,907,0,0,0$1460,907,255,255,255$1462,907,0,0,0$1463,907,0,0,0$1464,907,0,0,0$1465,907,0,0,0$1466,907,0,0,0$1467,907,0,0,0$1468,907,0,0,0$1469,907,0,0,0$1470,907,0,0,0$1471,907,0,0,0$1472,907,0,0,0$1473,907,0,0,0$1474,907,0,0,0$1479,907,255,255,255$1484,907,0,0,0$1486,907,255,255,255$1488,907,0,0,0$1489,907,0,0,0$1490,907,0,0,0$1492,907,255,255,255$1494,907,0,0,0$1452,908,0,0,0$1454,908,255,255,255$1455,908,255,255,255$1459,908,255,255,255$1460,908,255,255,255$1462,908,0,0,0$1464,908,0,0,0$1466,908,0,0,0$1468,908,0,0,0$1470,908,0,0,0$1474,908,0,0,0$1476,908,255,255,255$1479,908,255,255,255$1482,908,255,255,255$1484,908,0,0,0$1486,908,255,255,255$1488,908,0,0,0$1490,908,0,0,0$1492,908,255,255,255$1494,908,0,0,0$1452,909,0,0,0$1453,909,0,0,0$1455,909,255,255,255$1456,909,255,255,255$1459,909,255,255,255$1461,909,0,0,0$1462,909,0,0,0$1473,909,0,0,0$1476,909,255,255,255$1479,909,255,255,255$1483,909,255,255,255$1486,909,255,255,255$1488,909,0,0,0$1489,909,0,0,0$1490,909,0,0,0$1492,909,255,255,255$1494,909,0,0,0$1452,910,0,0,0$1454,910,0,0,0$1456,910,255,255,255$1457,910,255,255,255$1458,910,255,255,255$1459,910,255,255,255$1462,910,0,0,0$1464,910,0,0,0$1472,910,0,0,0$1475,910,255,255,255$1479,910,255,255,255$1483,910,255,255,255$1486,910,255,255,255$1488,910,0,0,0$1490,910,0,0,0$1492,910,255,255,255$1494,910,0,0,0$1449,911,0,0,0$1450,911,0,0,0$1451,911,0,0,0$1452,911,0,0,0$1453,911,0,0,0$1454,911,0,0,0$1456,911,255,255,255$1457,911,255,255,255$1458,911,255,255,255$1459,911,255,255,255$1462,911,0,0,0$1463,911,0,0,0$1464,911,0,0,0$1465,911,0,0,0$1466,911,0,0,0$1467,911,0,0,0$1468,911,0,0,0$1469,911,0,0,0$1470,911,0,0,0$1471,911,0,0,0$1472,911,0,0,0$1474,911,255,255,255$1477,911,0,0,0$1479,911,255,255,255$1481,911,0,0,0$1485,911,255,255,255$1486,911,255,255,255$1487,911,0,0,0$1488,911,0,0,0$1489,911,0,0,0$1490,911,0,0,0$1492,911,255,255,255$1494,911,0,0,0$1448,912,0,0,0$1450,912,0,0,0$1454,912,255,255,255$1455,912,255,255,255$1456,912,255,255,255$1459,912,255,255,255$1460,912,255,255,255$1461,912,255,255,255$1462,912,255,255,255$1470,912,0,0,0$1472,912,0,0,0$1476,912,0,0,0$1479,912,255,255,255$1482,912,0,0,0$1485,912,255,255,255$1488,912,0,0,0$1490,912,0,0,0$1492,912,255,255,255$1494,912,0,0,0$1448,913,0,0,0$1451,913,255,255,255$1452,913,255,255,255$1453,913,255,255,255$1454,913,255,255,255$1457,913,0,0,0$1458,913,0,0,0$1463,913,255,255,255$1464,913,255,255,255$1465,913,255,255,255$1466,913,255,255,255$1467,913,255,255,255$1468,913,255,255,255$1469,913,255,255,255$1470,913,255,255,255$1473,913,0,0,0$1474,913,0,0,0$1475,913,0,0,0$1477,913,255,255,255$1478,913,255,255,255$1479,913,255,255,255$1481,913,0,0,0$1482,913,0,0,0$1485,913,255,255,255$1487,913,0,0,0$1488,913,0,0,0$1489,913,0,0,0$1490,913,0,0,0$1492,913,255,255,255$1494,913,0,0,0$1448,914,0,0,0$1456,914,0,0,0$1458,914,0,0,0$1460,914,0,0,0$1462,914,0,0,0$1472,914,0,0,0$1476,914,0,0,0$1480,914,0,0,0$1482,914,0,0,0$1486,914,0,0,0$1490,914,0,0,0$1494,914,0,0,0$1449,915,0,0,0$1450,915,0,0,0$1451,915,0,0,0$1452,915,0,0,0$1453,915,0,0,0$1454,915,0,0,0$1455,915,0,0,0$1456,915,0,0,0$1460,915,0,0,0$1461,915,0,0,0$1462,915,0,0,0$1463,915,0,0,0$1464,915,0,0,0$1465,915,0,0,0$1466,915,0,0,0$1467,915,0,0,0$1468,915,0,0,0$1469,915,0,0,0$1470,915,0,0,0$1471,915,0,0,0$1472,915,0,0,0$1476,915,0,0,0$1477,915,0,0,0$1478,915,0,0,0$1479,915,0,0,0$1480,915,0,0,0$1483,915,0,0,0$1484,915,0,0,0$1485,915,0,0,0$1486,915,0,0,0$1490,915,0,0,0$1491,915,0,0,0$1492,915,0,0,0$1493,915,0,0,0$1494,915,0,0,0$1450,916,0,0,0$1452,916,0,0,0$1466,916,0,0,0$1468,916,0,0,0$1470,916,0,0,0$1478,916,0,0,0$1492,916,0,0,0");
        /// <summary>
        /// 查找更新按钮
        /// </summary>
        /// <param name="updateButtonRect"></param>
        /// <returns></returns>
        public static bool FindUpdateButton(out ZTRectangle updateButtonRect)
        public static bool FindUpdateButton(out ZTRectangle updateButtonRect, Image<Rgb, byte> image)
        {
            System.Drawing.Bitmap bitmap = ScreenCapture.Instance.CaptureScreen();
            Image<Rgb, byte> image = new Image<Rgb, byte>(bitmap);
            //Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            ZTRectangle wegameRect = new ZTRectangle(0, 0, image.Width, image.Height);
            return CVHelper.FindColorArrayForThreshold(out updateButtonRect, image, UpdateButton, wegameRect);
        }
@@ -112,12 +120,12 @@
        /// </summary>
        /// <param name="startButtonRect"></param>
        /// <returns></returns>
        public static bool FindStartGameButton(out ZTRectangle startButtonRect)
        public static bool FindStartGameButton(out ZTRectangle startButtonRect,Image<Rgb,byte> image)
        {
            System.Drawing.Bitmap bitmap = ScreenCapture.Instance.CaptureScreen();
            Image<Rgb, byte> image = new Image<Rgb, byte>(bitmap);
            //Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            ZTRectangle wegameRect = new ZTRectangle(0, 0, image.Width, image.Height);
            return CVHelper.FindColorArrayForThreshold(out startButtonRect, image, StartGameButton, wegameRect);
        }
    }
}
src/RichCreator.Utility/Dnf/MoveIntent.cs
@@ -14,8 +14,10 @@
    {
        None,//没移动
        AttackMove,//去攻击
        FindDoorMove,//去找门
        FindRoleMove,//找主角
        PickupMove//去拾取
        PickupMove,//去拾取
        ToNextGatePoint,//移至进门点
        ToLoopPoint,//移至巡逻点
        EntryDoor//进门
    }
}
src/RichCreator.Utility/Dnf/SpeedProvider.cs
@@ -53,7 +53,7 @@
            runX = (runPixelPerSpeedX * speed) / 800;
            RunThresold = stepX * RandomUtils.KeyPressDurationMax +runX * RandomUtils.KeyPressDurationMax;
            RunThresold = stepX * RandomUtils.KeyPressDurationMax +runX * RandomUtils.KeyPressDurationMax+50;
            RandomMoveMillSecond = (Int32)(300 / stepX);
        }
src/RichCreator.Utility/InputControl/HardwareInputControl.cs
@@ -17,8 +17,6 @@
        private SerialPortConnect connect;
        private bool isfinalize = false;
        private Int32 receiveCounter = 0;//接收计数
        private byte[] mouseBuffer = new byte[5];//鼠标移动缓存
        private byte[] keyBuffer = new byte[9];//键盘输入缓存
src/RichCreator.Utility/Maps/HouseInfo.cs
@@ -19,10 +19,10 @@
        public HouseInfo(HousePathInfo houseInfo)
        {
            this.HousePathInfo = houseInfo;
            InitPathInfo();
            InitPathInfo(null);
        }
        public HouseInfo(Int32 index,MapType mapType,bool isEnd, HIDCode[] skills)
        public HouseInfo(Int32 index,MapType mapType,bool isEnd, HIDCode[] skills,Int32[] withoutNumber)
        {
            this.Index = index;
            this.MapType = mapType;
@@ -48,7 +48,7 @@
                throw e;
            }
            InitPathInfo();
            InitPathInfo(withoutNumber);
        }
        
@@ -57,32 +57,24 @@
        /// </summary>
        public Int32 Index { get; set; }
        ///// <summary>
        ///// 下一房间编号
        ///// </summary>
        //public Int32 NextIndex { get; set; }
        ///// <summary>
        ///// 判断下一房间是否打开索引
        ///// </summary>
        //public Int32 OpenStatusDetectIndex { get; set; }
        private Direction[] doorDirection = null;
        /// <summary>
        /// 门的位置
        /// todo:cacel
        /// </summary>
        public Direction[] DoorDirection { get; set; }
        public Direction[] DoorDirection
        {
            get
            {
                return doorDirection;
            }
        }
        /// <summary>
        /// 技能队列
        /// </summary>
        public SkillQueue Skills { get; set; }
        /// <summary>
        /// 房间的Y轴中间线,为负值,代表从游戏框向上移的像素值
        /// </summary>
        public Int32 HouseCenterMoveLine { get; set; }
        /// <summary>
        /// 是否为结束房间
        /// </summary>
@@ -108,6 +100,11 @@
        /// 定位字典
        /// </summary>
        private Dictionary<Int32, ZTPoint> LocationDic = new Dictionary<int, ZTPoint>();
        /// <summary>
        /// 排除数字
        /// </summary>
        public Dictionary<Int32, bool> WithoutNumber = new Dictionary<int, bool>();
        /// <summary>
        /// 屏幕坐标转地图坐标
@@ -150,9 +147,8 @@
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        public List<ZTPoint> FindPath(ref ZTPoint start, ref ZTPoint end)
        public List<ZTPoint> FindPath(ZTPoint start, ZTPoint end)
        {
            if (start.Equals(end))
            {
                return new List<ZTPoint>();
@@ -166,38 +162,108 @@
            }
            //确保两点不在障碍物里
            bool inObstacle = EnsureNotInObstacle(ref start);
            inObstacle = EnsureNotInObstacle(ref end) || inObstacle;
            ZTPoint startPathGuid = ZTPoint.Empty;
            ZTPoint endPathGuid = ZTPoint.Empty;
            bool inObstacle = EnsureNotInObstacle(out startPathGuid, start);
            inObstacle = EnsureNotInObstacle(out endPathGuid, end) || inObstacle;
            //查询两点间是否连通
            if (inObstacle && Iscross(start, end))
            if (inObstacle && Iscross(startPathGuid, endPathGuid))
            {
                //两点直接连通
                return new List<ZTPoint>() { end };
                List<ZTPoint> points = new List<ZTPoint>();
                if (!start.Equals(startPathGuid))
                {
                    points.Add(startPathGuid);
                }
                if (!end.Equals(endPathGuid))
                {
                    points.Add(endPathGuid);
                }
                points.Add(end);
                return points;
            }
            //把两点添加到寻路网中
            AddConnectivityEdgeToFinder(start, end);
            AddConnectivityEdgeToFinder(startPathGuid, endPathGuid);
            //寻路,组合路径
            List<ZTPoint> paths = this.PathFinder.ShortestPath(start, end);
            List<ZTPoint> paths = this.PathFinder.ShortestPath(startPathGuid, endPathGuid);
            //去除寻路网中
            RemoveStartAndEndVerticeFromFinder(start, end);
            RemoveStartAndEndVerticeFromFinder(endPathGuid, endPathGuid);
            //生成的路径不包含第一个点,拟如果第一个点是路径引导,则加入路径
            if (!start.Equals(startPathGuid))
            {
                paths.Insert(0, startPathGuid);
            }
            //如果最后一个点是路径引导点,测加上终点
            if (!end.Equals(endPathGuid))
            {
                paths.Add(end);
            }
            return paths;
        }
        /// <summary>
        /// 是否在下一关进门点区域内
        /// </summary>
        /// <param name="nextGatePoint"></param>
        /// <param name="rolePosition"></param>
        /// <returns></returns>
        public bool IsInNextGatePoint(out ParametersPoint nextGatePoint, ZTPoint rolePosition)
        {
            nextGatePoint = ParametersPoint.Empty;
            const Int32 X_OFFSET = 5;
            const Int32 Y_OFFSET = 5;
            for (Int32 i = 0; i < this.HousePathInfo.NextGates.Count; i++)
            {
                ParametersPoint nextGate = this.HousePathInfo.NextGates[i];
                if (GeoHelper.IsInRect(rolePosition, new ZTRectangle(nextGate.Point.X- X_OFFSET, nextGate.Point.Y- Y_OFFSET, nextGate.Point.X+ X_OFFSET, nextGate.Point.Y+ Y_OFFSET)))
                {
                    nextGatePoint = nextGate;
                    return true;
                }
            }
            return false;
        }
        /// <summary>
        /// 查找到下一关进门点
        /// 获取指定方向的进门点
        /// </summary>
        /// <param name="rolePosition"></param>
        /// <param name="dir"></param>
        /// <returns></returns>
        public List<ZTPoint> FindDoorPath(out Int32 doorIndex,ZTPoint rolePosition)
        public ZTPoint GetNextGatePoint(Direction dir)
        {
            doorIndex = 0;
            ZTPoint end = this.HousePathInfo.NextGates[0].Point;
            return FindPath(ref rolePosition, ref end);
            int dirNumber = 0;
            switch (dir)
            {
                case Direction.Up:
                    dirNumber = 0;
                    break;
                case Direction.Right:
                    dirNumber = 1;
                    break;
                case Direction.Bottom:
                    dirNumber = 2;
                    break;
                case Direction.Left:
                    dirNumber = 3;
                    break;
            }
            for (int i = 0; i < this.HousePathInfo.NextGates.Count; i++)
            {
                if (dirNumber == this.HousePathInfo.NextGates[i].Parameter)
                {
                    return this.HousePathInfo.NextGates[i].Point;
                }
            }
            throw new ArgumentOutOfRangeException("house index:" + this.Index.ToString() + ",direction :" + dir.ToString() + " is not exists!~");
        }
        /// <summary>
@@ -208,10 +274,9 @@
        /// <returns></returns>
        private bool Iscross(ZTPoint start, ZTPoint end)
        {
            for (int i = 0; i < this.HousePathInfo.Obstacles.Count; i++)
            {
                Intersection interSection = GeometryHelper.IntersectionOf(new ZTLinePoint(start, end), this.HousePathInfo.Obstacles[i]);
                Intersection interSection = GeoHelper.IntersectionOf(new ZTLinePoint(start, end), this.HousePathInfo.Obstacles[i]);
                if (interSection != Intersection.None)
                {
                    return false;
@@ -223,16 +288,18 @@
        /// <summary>
        /// 是否在障碍物里,如果在障碍物里则返回最近的不在障碍物点
        /// </summary>
        /// <param name="point"></param>
        /// <param name="pathGuidePoint"></param>
        /// <returns>true:在障碍物,false:不在障碍物里</returns>
        private bool EnsureNotInObstacle(ref ZTPoint point)
        private bool EnsureNotInObstacle(out ZTPoint pathGuidePoint,ZTPoint source)
        {
            ZTPoint source = new ZTPoint(point.X, point.Y);
            pathGuidePoint = ZTPoint.Empty;
            //点是否在障碍物里
            ZTPolygon obstacle = ZTPolygon.Empty;
            for (int i = 0; i < this.HousePathInfo.Obstacles.Count; i++)
            {
                ZTPolygon temp = this.HousePathInfo.Obstacles[i];
                if (GeometryHelper.IntersectionOf(point, temp) != Intersection.None)
                if (GeoHelper.IntersectionOf(source, temp) != Intersection.None)
                {
                    obstacle = this.HousePathInfo.Obstacles[i];
                    break;
@@ -241,8 +308,21 @@
            if (obstacle.Equals(ZTPolygon.Empty))
            {
                //不在障碍物内
                pathGuidePoint = source;
                return false;
            }
            //点是否在路径导引区域
            for (int i = 0; i < this.HousePathInfo.PathGuides.Count; i++)
            {
                ZTTargetPolygon temp = this.HousePathInfo.PathGuides[i];
                if (GeoHelper.IntersectionOf(source, temp.Polygon) != Intersection.None)
                {
                    pathGuidePoint = temp.Target;
                    return true;
                }
            }
            //计算距离障碍物外最近的距离
            double distance = 0;
@@ -252,9 +332,9 @@
                if (i == 0)
                {
                    lastPoint = obstacle.Points[i];
                    distance = GeometryHelper.GetPointDistance(lastPoint, point);
                    distance = GeoHelper.GetPointDistance(lastPoint, pathGuidePoint);
                }
                double lastDistance = GeometryHelper.GetNearestDistance(new ZTLinePoint(lastPoint, obstacle[i]), point);
                double lastDistance = GeoHelper.GetNearestDistance(new ZTLinePoint(lastPoint, obstacle[i]), pathGuidePoint);
                if (lastDistance < distance)
                {
                    distance = lastDistance;
@@ -267,55 +347,55 @@
            }
            //查找最近离开障碍物的点
            ZTPoint testPoint = new ZTPoint(point.X, point.Y);
            Int32 maxDistance = Math.Max(Math.Max(point.X, this.HousePathInfo.Width - point.X), Math.Max(point.Y, this.HousePathInfo.Height - point.Y));
            ZTPoint testPoint = ZTPoint.Empty;
            Int32 maxDistance = Math.Max(Math.Max(source.X, this.HousePathInfo.Width - source.X), Math.Max(source.Y, this.HousePathInfo.Height - source.Y));
            for (int i = (Int32)distance; i < maxDistance; i++)
            {
                //下
                if (point.Y + i <= this.HousePathInfo.Height)
                if (source.Y + i <= this.HousePathInfo.Height)
                {
                    testPoint = new ZTPoint(point.X, point.Y + i);
                    if (GeometryHelper.IntersectionOf(testPoint, obstacle) == Intersection.None)
                    testPoint = new ZTPoint(source.X, source.Y + i);
                    if (GeoHelper.IntersectionOf(testPoint, obstacle) == Intersection.None)
                    {
                        testPoint.Y += 10;
                        point = testPoint;
                        pathGuidePoint = testPoint;
                        break;
                    }
                }
                //右
                if (point.X <= this.HousePathInfo.Width)
                if (source.X <= this.HousePathInfo.Width)
                {
                    testPoint = new ZTPoint(point.X + i, point.Y);
                    if (GeometryHelper.IntersectionOf(testPoint, obstacle) == Intersection.None)
                    testPoint = new ZTPoint(source.X + i, source.Y);
                    if (GeoHelper.IntersectionOf(testPoint, obstacle) == Intersection.None)
                    {
                        testPoint.X += 10;
                        point = testPoint;
                        pathGuidePoint = testPoint;
                        break;
                    }
                }
                //左
                if (point.X - i >= 0)
                if (source.X - i >= 0)
                {
                    testPoint = new ZTPoint(point.X - i, point.Y);
                    if (GeometryHelper.IntersectionOf(testPoint, obstacle) == Intersection.None)
                    testPoint = new ZTPoint(source.X - i, source.Y);
                    if (GeoHelper.IntersectionOf(testPoint, obstacle) == Intersection.None)
                    {
                        testPoint.X -= 10;
                        point = testPoint;
                        pathGuidePoint = testPoint;
                        break;
                    }
                }
                //上
                if (point.Y - i >= 0)
                if (source.Y - i >= 0)
                {
                    testPoint = new ZTPoint(point.X, point.Y - i);
                    if (GeometryHelper.IntersectionOf(testPoint, obstacle) == Intersection.None)
                    testPoint = new ZTPoint(source.X, source.Y - i);
                    if (GeoHelper.IntersectionOf(testPoint, obstacle) == Intersection.None)
                    {
                        testPoint.Y -= 10;
                        point = testPoint;
                        pathGuidePoint = testPoint;
                        break;
                    }
                }
@@ -327,7 +407,7 @@
        /// <summary>
        /// 初始化寻路器
        /// </summary>
        private void InitPathInfo()
        private void InitPathInfo(Int32[] withoutNumber)
        {
            this.PathFinder = new Dijkstra<ZTPoint>();
@@ -349,6 +429,39 @@
                    this.LocationDic.Add(pp.Parameter, pp.Point);
                }
            }
            //计算门朝向
            doorDirection = new Direction[this.HousePathInfo.NextGates.Count];
            for (Int32 i = 0; i < this.HousePathInfo.NextGates.Count; i++)
            {
                switch (this.HousePathInfo.NextGates[i].Parameter)
                {
                    case 0:
                        doorDirection[i] = Direction.Up;
                        break;
                    case 1:
                        doorDirection[i] = Direction.Right;
                        break;
                    case 2:
                        doorDirection[i] = Direction.Bottom;
                        break;
                    case 3:
                        doorDirection[i] = Direction.Left;
                        break;
                }
            }
            if (withoutNumber != null)
            {
                for (int i = 0; i < withoutNumber.Length; i++)
                {
                    if (!this.WithoutNumber.ContainsKey(withoutNumber[i]))
                    {
                        this.WithoutNumber.Add(withoutNumber[i], true);
                    }
                }
            }
        }
        /// <summary>
@@ -365,13 +478,13 @@
                point = this.HousePathInfo.FindPathPoints[i];
                if (Iscross(start, point))
                {
                    distance = (Int32)GeometryHelper.GetPointDistance(start, point);
                    distance = (Int32)GeoHelper.GetPointDistance(start, point);
                    this.PathFinder.AddEdge(start, point, distance);
                }
                if (Iscross(end, point))
                {
                    distance = (Int32)GeometryHelper.GetPointDistance(end, point);
                    distance = (Int32)GeoHelper.GetPointDistance(end, point);
                    this.PathFinder.AddEdge(end, point, distance);
                }
            }
src/RichCreator.Utility/Maps/HousePathInfo.cs
@@ -343,7 +343,7 @@
            index = -1;
            for (int i = 0; i < this.NextGates.Count; i++)
            {
                if (this.NextGates.Equals(point))
                if (this.NextGates[i].Equals(point))
                {
                    index = i;
                    return true;
@@ -397,7 +397,7 @@
            index = -1;
            for (int i = 0; i < this.PathGuides.Count; i++)
            {
                if (this.PathGuides.Equals(polygon))
                if (this.PathGuides[i].Equals(polygon))
                {
                    index = i;
                    return true;
@@ -410,94 +410,14 @@
        #region json info
        //凛冬
        private static readonly string[] Lingdong = new string[] {
            //0
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //1
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //2
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //3
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //4
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //5
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //6
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //7
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //8
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //9
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //10
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //11
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //12
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //13
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //14
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //15
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //16
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //17
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //18
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}",
            //19
            "{\"Width\":1350,\"Height\":901,\"Obstacles\":[],\"LocationPoints\":[],\"FindPathPoints\":[],\"LoopLines\":[],\"FindPathLines\":[]}"
        };
        //卡勒特
        private static readonly string[] Kalete = new string[] {
            //0:
            "{\"Width\":896,\"Height\":686,\"Obstacles\":[{\"Points\":[{\"X\":2,\"Y\":320},{\"X\":460,\"Y\":310},{\"X\":493,\"Y\":319},{\"X\":556,\"Y\":334},{\"X\":668,\"Y\":344},{\"X\":759,\"Y\":330},{\"X\":873,\"Y\":308},{\"X\":893,\"Y\":300},{\"X\":891,\"Y\":1},{\"X\":2,\"Y\":3}],\"Length\":10},{\"Points\":[{\"X\":2,\"Y\":552},{\"X\":71,\"Y\":545},{\"X\":76,\"Y\":427},{\"X\":165,\"Y\":439},{\"X\":166,\"Y\":521},{\"X\":253,\"Y\":559},{\"X\":703,\"Y\":550},{\"X\":703,\"Y\":521},{\"X\":823,\"Y\":513},{\"X\":834,\"Y\":568},{\"X\":893,\"Y\":559},{\"X\":893,\"Y\":684},{\"X\":4,\"Y\":683}],\"Length\":13}],\"LocationPoints\":[{\"Point\":{\"X\":797,\"Y\":348},\"Parameter\":0},{\"Point\":{\"X\":671,\"Y\":348},\"Parameter\":1},{\"Point\":{\"X\":547,\"Y\":348},\"Parameter\":2},{\"Point\":{\"X\":423,\"Y\":348},\"Parameter\":3},{\"Point\":{\"X\":298,\"Y\":347},\"Parameter\":4},{\"Point\":{\"X\":172,\"Y\":348},\"Parameter\":5},{\"Point\":{\"X\":47,\"Y\":348},\"Parameter\":6}],\"FindPathPoints\":[{\"X\":51,\"Y\":392},{\"X\":438,\"Y\":418},{\"X\":775,\"Y\":400}],\"LoopLines\":[],\"FindPathLines\":[{\"P1\":{\"X\":51,\"Y\":392},\"P2\":{\"X\":775,\"Y\":400}},{\"P1\":{\"X\":438,\"Y\":418},\"P2\":{\"X\":775,\"Y\":400}},{\"P1\":{\"X\":438,\"Y\":418},\"P2\":{\"X\":51,\"Y\":392}}],\"NextGates\":[{\"Point\":{\"X\":778,\"Y\":346},\"Parameter\":1}],\"PathGuides\":[]}",
            //1:
            "{\"Width\":1349,\"Height\":900,\"Obstacles\":[{\"Points\":[{\"X\":124,\"Y\":324},{\"X\":760,\"Y\":310},{\"X\":956,\"Y\":414},{\"X\":1124,\"Y\":372},{\"X\":1113,\"Y\":301},{\"X\":1346,\"Y\":297},{\"X\":1345,\"Y\":3},{\"X\":0,\"Y\":2},{\"X\":0,\"Y\":375}],\"Length\":9},{\"Points\":[{\"X\":1342,\"Y\":675},{\"X\":1189,\"Y\":675},{\"X\":1191,\"Y\":713},{\"X\":949,\"Y\":712},{\"X\":867,\"Y\":772},{\"X\":840,\"Y\":897},{\"X\":1345,\"Y\":899}],\"Length\":7},{\"Points\":[{\"X\":651,\"Y\":668},{\"X\":459,\"Y\":671},{\"X\":446,\"Y\":641},{\"X\":247,\"Y\":641},{\"X\":236,\"Y\":608},{\"X\":155,\"Y\":612},{\"X\":150,\"Y\":549},{\"X\":295,\"Y\":541},{\"X\":376,\"Y\":557},{\"X\":472,\"Y\":592},{\"X\":473,\"Y\":609},{\"X\":627,\"Y\":606}],\"Length\":12},{\"Points\":[{\"X\":565,\"Y\":815},{\"X\":464,\"Y\":737},{\"X\":0,\"Y\":721},{\"X\":1,\"Y\":896},{\"X\":839,\"Y\":894},{\"X\":851,\"Y\":815}],\"Length\":6}],\"LocationPoints\":[{\"Point\":{\"X\":270,\"Y\":462},\"Parameter\":0},{\"Point\":{\"X\":732,\"Y\":461},\"Parameter\":1},{\"Point\":{\"X\":1192,\"Y\":461},\"Parameter\":2},{\"Point\":{\"X\":708,\"Y\":344},\"Parameter\":8},{\"Point\":{\"X\":706,\"Y\":197},\"Parameter\":9},{\"Point\":{\"X\":706,\"Y\":53},\"Parameter\":10}],\"FindPathPoints\":[{\"X\":1211,\"Y\":323},{\"X\":193,\"Y\":419},{\"X\":1251,\"Y\":446},{\"X\":746,\"Y\":498},{\"X\":769,\"Y\":657},{\"X\":111,\"Y\":660}],\"LoopLines\":[{\"P1\":{\"X\":193,\"Y\":419},\"P2\":{\"X\":1251,\"Y\":446}}],\"FindPathLines\":[{\"P1\":{\"X\":193,\"Y\":419},\"P2\":{\"X\":746,\"Y\":498}},{\"P1\":{\"X\":746,\"Y\":498},\"P2\":{\"X\":1251,\"Y\":446}},{\"P1\":{\"X\":746,\"Y\":498},\"P2\":{\"X\":769,\"Y\":657}},{\"P1\":{\"X\":769,\"Y\":657},\"P2\":{\"X\":1251,\"Y\":446}},{\"P1\":{\"X\":769,\"Y\":657},\"P2\":{\"X\":193,\"Y\":419}},{\"P1\":{\"X\":1251,\"Y\":446},\"P2\":{\"X\":1211,\"Y\":323}},{\"P1\":{\"X\":769,\"Y\":657},\"P2\":{\"X\":1211,\"Y\":323}},{\"P1\":{\"X\":111,\"Y\":660},\"P2\":{\"X\":193,\"Y\":419}},{\"P1\":{\"X\":111,\"Y\":660},\"P2\":{\"X\":769,\"Y\":657}}]}",
            string.Empty,//2
            //3:
            "{\"Width\":1348,\"Height\":900,\"Obstacles\":[{\"Points\":[{\"X\":0,\"Y\":313},{\"X\":927,\"Y\":295},{\"X\":963,\"Y\":334},{\"X\":1275,\"Y\":314},{\"X\":1343,\"Y\":300},{\"X\":1343,\"Y\":2},{\"X\":1,\"Y\":1}],\"Length\":7},{\"Points\":[{\"X\":878,\"Y\":366},{\"X\":750,\"Y\":369},{\"X\":733,\"Y\":354},{\"X\":740,\"Y\":325},{\"X\":876,\"Y\":324}],\"Length\":5},{\"Points\":[{\"X\":1345,\"Y\":551},{\"X\":1170,\"Y\":587},{\"X\":1173,\"Y\":643},{\"X\":1275,\"Y\":713},{\"X\":1346,\"Y\":706}],\"Length\":5},{\"Points\":[{\"X\":285,\"Y\":307},{\"X\":312,\"Y\":576},{\"X\":195,\"Y\":626},{\"X\":208,\"Y\":691},{\"X\":153,\"Y\":723},{\"X\":150,\"Y\":897},{\"X\":2,\"Y\":896},{\"X\":0,\"Y\":319}],\"Length\":8},{\"Points\":[{\"X\":156,\"Y\":752},{\"X\":369,\"Y\":714},{\"X\":793,\"Y\":734},{\"X\":932,\"Y\":822},{\"X\":1032,\"Y\":814},{\"X\":1058,\"Y\":896},{\"X\":159,\"Y\":894}],\"Length\":7},{\"Points\":[{\"X\":1037,\"Y\":824},{\"X\":1243,\"Y\":820},{\"X\":1229,\"Y\":748},{\"X\":1269,\"Y\":718},{\"X\":1344,\"Y\":709},{\"X\":1345,\"Y\":896},{\"X\":1064,\"Y\":897}],\"Length\":7}],\"LocationPoints\":[{\"Point\":{\"X\":1108,\"Y\":329},\"Parameter\":8},{\"Point\":{\"X\":1107,\"Y\":182},\"Parameter\":9},{\"Point\":{\"X\":1107,\"Y\":37},\"Parameter\":10}],\"FindPathPoints\":[{\"X\":358,\"Y\":342},{\"X\":378,\"Y\":505},{\"X\":1270,\"Y\":415},{\"X\":1038,\"Y\":650}],\"LoopLines\":[{\"P1\":{\"X\":358,\"Y\":342},\"P2\":{\"X\":1038,\"Y\":650}}],\"FindPathLines\":[{\"P1\":{\"X\":358,\"Y\":342},\"P2\":{\"X\":1270,\"Y\":415}},{\"P1\":{\"X\":1270,\"Y\":415},\"P2\":{\"X\":1038,\"Y\":650}},{\"P1\":{\"X\":1270,\"Y\":415},\"P2\":{\"X\":378,\"Y\":505}},{\"P1\":{\"X\":378,\"Y\":505},\"P2\":{\"X\":358,\"Y\":342}},{\"P1\":{\"X\":378,\"Y\":505},\"P2\":{\"X\":1038,\"Y\":650}}]}",
            string.Empty,//4
            string.Empty,//5
            //6:
            "{\"Width\":1350,\"Height\":900,\"Obstacles\":[{\"Points\":[{\"X\":325,\"Y\":425},{\"X\":437,\"Y\":447},{\"X\":567,\"Y\":437},{\"X\":565,\"Y\":395},{\"X\":631,\"Y\":398},{\"X\":675,\"Y\":410},{\"X\":809,\"Y\":405},{\"X\":810,\"Y\":375},{\"X\":933,\"Y\":329},{\"X\":1279,\"Y\":303},{\"X\":1345,\"Y\":367},{\"X\":1345,\"Y\":5},{\"X\":1,\"Y\":6}],\"Length\":13},{\"Points\":[{\"X\":1347,\"Y\":481},{\"X\":1246,\"Y\":501},{\"X\":1235,\"Y\":551},{\"X\":1188,\"Y\":617},{\"X\":1192,\"Y\":669},{\"X\":1348,\"Y\":673}],\"Length\":6},{\"Points\":[{\"X\":1349,\"Y\":701},{\"X\":791,\"Y\":719},{\"X\":803,\"Y\":659},{\"X\":396,\"Y\":665},{\"X\":361,\"Y\":723},{\"X\":2,\"Y\":711},{\"X\":0,\"Y\":896},{\"X\":1345,\"Y\":898}],\"Length\":8}],\"LocationPoints\":[{\"Point\":{\"X\":1080,\"Y\":425},\"Parameter\":4},{\"Point\":{\"X\":592,\"Y\":427},\"Parameter\":5},{\"Point\":{\"X\":103,\"Y\":427},\"Parameter\":6}],\"FindPathPoints\":[{\"X\":174,\"Y\":537},{\"X\":1197,\"Y\":430},{\"X\":602,\"Y\":502}],\"LoopLines\":[{\"P1\":{\"X\":174,\"Y\":537},\"P2\":{\"X\":1197,\"Y\":430}}],\"FindPathLines\":[{\"P1\":{\"X\":174,\"Y\":537},\"P2\":{\"X\":602,\"Y\":502}},{\"P1\":{\"X\":602,\"Y\":502},\"P2\":{\"X\":1197,\"Y\":430}}]}",
            //7:
            "{\"Width\":1350,\"Height\":900,\"Obstacles\":[{\"Points\":[{\"X\":31,\"Y\":409},{\"X\":127,\"Y\":312},{\"X\":505,\"Y\":351},{\"X\":570,\"Y\":394},{\"X\":733,\"Y\":418},{\"X\":888,\"Y\":410},{\"X\":896,\"Y\":334},{\"X\":1066,\"Y\":328},{\"X\":1100,\"Y\":401},{\"X\":1315,\"Y\":425},{\"X\":1349,\"Y\":427},{\"X\":1343,\"Y\":1},{\"X\":4,\"Y\":4},{\"X\":1,\"Y\":341}],\"Length\":14},{\"Points\":[{\"X\":467,\"Y\":896},{\"X\":472,\"Y\":733},{\"X\":325,\"Y\":676},{\"X\":178,\"Y\":636},{\"X\":0,\"Y\":625},{\"X\":2,\"Y\":900}],\"Length\":6}],\"LocationPoints\":[{\"Point\":{\"X\":270,\"Y\":462},\"Parameter\":0},{\"Point\":{\"X\":730,\"Y\":463},\"Parameter\":1},{\"Point\":{\"X\":1191,\"Y\":463},\"Parameter\":2},{\"Point\":{\"X\":1078,\"Y\":499},\"Parameter\":4},{\"Point\":{\"X\":589,\"Y\":497},\"Parameter\":5},{\"Point\":{\"X\":100,\"Y\":498},\"Parameter\":6}],\"FindPathPoints\":[{\"X\":146,\"Y\":440},{\"X\":1226,\"Y\":720}],\"LoopLines\":[{\"P1\":{\"X\":146,\"Y\":440},\"P2\":{\"X\":1226,\"Y\":720}}],\"FindPathLines\":[]}",
            //8:
            "{\"Width\":1686,\"Height\":720,\"Obstacles\":[{\"Points\":[{\"X\":2,\"Y\":420},{\"X\":130,\"Y\":439},{\"X\":311,\"Y\":462},{\"X\":313,\"Y\":400},{\"X\":221,\"Y\":319},{\"X\":453,\"Y\":288},{\"X\":632,\"Y\":5},{\"X\":4,\"Y\":2}],\"Length\":8},{\"Points\":[{\"X\":574,\"Y\":104},{\"X\":743,\"Y\":319},{\"X\":961,\"Y\":306},{\"X\":1014,\"Y\":343},{\"X\":1099,\"Y\":326},{\"X\":1165,\"Y\":369},{\"X\":1534,\"Y\":365},{\"X\":1684,\"Y\":309},{\"X\":1680,\"Y\":4},{\"X\":633,\"Y\":5}],\"Length\":10},{\"Points\":[{\"X\":1682,\"Y\":470},{\"X\":1540,\"Y\":514},{\"X\":1442,\"Y\":590},{\"X\":1173,\"Y\":641},{\"X\":858,\"Y\":670},{\"X\":814,\"Y\":708},{\"X\":1681,\"Y\":715}],\"Length\":7}],\"LocationPoints\":[{\"Point\":{\"X\":277,\"Y\":501},\"Parameter\":0},{\"Point\":{\"X\":735,\"Y\":502},\"Parameter\":1},{\"Point\":{\"X\":1196,\"Y\":502},\"Parameter\":2},{\"Point\":{\"X\":1418,\"Y\":390},\"Parameter\":4},{\"Point\":{\"X\":930,\"Y\":387},\"Parameter\":5},{\"Point\":{\"X\":441,\"Y\":388},\"Parameter\":6}],\"FindPathPoints\":[{\"X\":186,\"Y\":483},{\"X\":1565,\"Y\":393},{\"X\":549,\"Y\":448}],\"LoopLines\":[{\"P1\":{\"X\":186,\"Y\":483},\"P2\":{\"X\":1565,\"Y\":393}}],\"FindPathLines\":[{\"P1\":{\"X\":186,\"Y\":483},\"P2\":{\"X\":549,\"Y\":448}},{\"P1\":{\"X\":549,\"Y\":448},\"P2\":{\"X\":1565,\"Y\":393}}]}",
            //9:
            "{\"Width\":1688,\"Height\":720,\"Obstacles\":[{\"Points\":[{\"X\":3,\"Y\":333},{\"X\":390,\"Y\":305},{\"X\":600,\"Y\":389},{\"X\":746,\"Y\":389},{\"X\":766,\"Y\":327},{\"X\":890,\"Y\":334},{\"X\":914,\"Y\":247},{\"X\":1092,\"Y\":225},{\"X\":1305,\"Y\":396},{\"X\":1489,\"Y\":346},{\"X\":1684,\"Y\":411},{\"X\":1683,\"Y\":3},{\"X\":3,\"Y\":3}],\"Length\":13},{\"Points\":[{\"X\":389,\"Y\":671},{\"X\":398,\"Y\":614},{\"X\":868,\"Y\":605},{\"X\":1037,\"Y\":631},{\"X\":1125,\"Y\":589},{\"X\":1536,\"Y\":632},{\"X\":1678,\"Y\":682},{\"X\":1682,\"Y\":715},{\"X\":378,\"Y\":715}],\"Length\":9}],\"LocationPoints\":[{\"Point\":{\"X\":274,\"Y\":500},\"Parameter\":0},{\"Point\":{\"X\":738,\"Y\":502},\"Parameter\":1},{\"Point\":{\"X\":1200,\"Y\":501},\"Parameter\":2},{\"Point\":{\"X\":1658,\"Y\":503},\"Parameter\":3}],\"FindPathPoints\":[{\"X\":216,\"Y\":456},{\"X\":1545,\"Y\":466},{\"X\":985,\"Y\":515}],\"LoopLines\":[{\"P1\":{\"X\":216,\"Y\":456},\"P2\":{\"X\":1545,\"Y\":466}}],\"FindPathLines\":[{\"P1\":{\"X\":216,\"Y\":456},\"P2\":{\"X\":985,\"Y\":515}},{\"P1\":{\"X\":985,\"Y\":515},\"P2\":{\"X\":1545,\"Y\":466}}]}",
            string.Empty,//10
            //11:
            "{\"Width\":1686,\"Height\":720,\"Obstacles\":[{\"Points\":[{\"X\":1678,\"Y\":410},{\"X\":1576,\"Y\":341},{\"X\":1258,\"Y\":344},{\"X\":1241,\"Y\":379},{\"X\":1153,\"Y\":380},{\"X\":849,\"Y\":377},{\"X\":765,\"Y\":353},{\"X\":598,\"Y\":352},{\"X\":498,\"Y\":387},{\"X\":0,\"Y\":360},{\"X\":1,\"Y\":1},{\"X\":1681,\"Y\":2}],\"Length\":12},{\"Points\":[{\"X\":1566,\"Y\":714},{\"X\":1502,\"Y\":662},{\"X\":875,\"Y\":654},{\"X\":780,\"Y\":660},{\"X\":550,\"Y\":636},{\"X\":365,\"Y\":614},{\"X\":183,\"Y\":626},{\"X\":72,\"Y\":636},{\"X\":10,\"Y\":655},{\"X\":0,\"Y\":715}],\"Length\":10}],\"LocationPoints\":[{\"Point\":{\"X\":929,\"Y\":450},\"Parameter\":5},{\"Point\":{\"X\":440,\"Y\":452},\"Parameter\":6},{\"Point\":{\"X\":1416,\"Y\":451},\"Parameter\":4}],\"FindPathPoints\":[{\"X\":71,\"Y\":469},{\"X\":1529,\"Y\":462},{\"X\":826,\"Y\":576}],\"LoopLines\":[{\"P1\":{\"X\":71,\"Y\":469},\"P2\":{\"X\":1529,\"Y\":462}}],\"FindPathLines\":[{\"P1\":{\"X\":71,\"Y\":469},\"P2\":{\"X\":826,\"Y\":576}},{\"P1\":{\"X\":826,\"Y\":576},\"P2\":{\"X\":1529,\"Y\":462}}]}",
            //12:
            "{\"Width\":2024,\"Height\":720,\"Obstacles\":[{\"Points\":[{\"X\":795,\"Y\":351},{\"X\":1897,\"Y\":323},{\"X\":2019,\"Y\":271},{\"X\":2019,\"Y\":4},{\"X\":1,\"Y\":2},{\"X\":3,\"Y\":347},{\"X\":111,\"Y\":400},{\"X\":200,\"Y\":377},{\"X\":294,\"Y\":344},{\"X\":560,\"Y\":351},{\"X\":623,\"Y\":381}],\"Length\":11},{\"Points\":[{\"X\":2020,\"Y\":614},{\"X\":1464,\"Y\":615},{\"X\":1137,\"Y\":589},{\"X\":895,\"Y\":606},{\"X\":855,\"Y\":715},{\"X\":2020,\"Y\":716}],\"Length\":6},{\"Points\":[{\"X\":525,\"Y\":715},{\"X\":451,\"Y\":589},{\"X\":156,\"Y\":603},{\"X\":2,\"Y\":495},{\"X\":2,\"Y\":716}],\"Length\":5}],\"LocationPoints\":[{\"Point\":{\"X\":270,\"Y\":461},\"Parameter\":0},{\"Point\":{\"X\":731,\"Y\":461},\"Parameter\":1},{\"Point\":{\"X\":1192,\"Y\":462},\"Parameter\":2},{\"Point\":{\"X\":1650,\"Y\":463},\"Parameter\":3},{\"Point\":{\"X\":1278,\"Y\":347},\"Parameter\":5},{\"Point\":{\"X\":788,\"Y\":347},\"Parameter\":6},{\"Point\":{\"X\":301,\"Y\":346},\"Parameter\":7},{\"Point\":{\"X\":628,\"Y\":175},\"Parameter\":8},{\"Point\":{\"X\":627,\"Y\":28},\"Parameter\":9}],\"FindPathPoints\":[{\"X\":201,\"Y\":457},{\"X\":1894,\"Y\":423},{\"X\":699,\"Y\":513}],\"LoopLines\":[{\"P1\":{\"X\":201,\"Y\":457},\"P2\":{\"X\":1894,\"Y\":423}}],\"FindPathLines\":[{\"P1\":{\"X\":201,\"Y\":457},\"P2\":{\"X\":699,\"Y\":513}},{\"P1\":{\"X\":699,\"Y\":513},\"P2\":{\"X\":1894,\"Y\":423}}]}",
            //13:
            "{\"Width\":2024,\"Height\":900,\"Obstacles\":[{\"Points\":[{\"X\":1607,\"Y\":189},{\"X\":1761,\"Y\":360},{\"X\":2022,\"Y\":405},{\"X\":2022,\"Y\":1},{\"X\":1565,\"Y\":1}],\"Length\":5},{\"Points\":[{\"X\":1350,\"Y\":400},{\"X\":1605,\"Y\":186},{\"X\":1562,\"Y\":1},{\"X\":121,\"Y\":1},{\"X\":335,\"Y\":410},{\"X\":385,\"Y\":402}],\"Length\":6},{\"Points\":[{\"X\":2017,\"Y\":719},{\"X\":1228,\"Y\":729},{\"X\":1137,\"Y\":666},{\"X\":667,\"Y\":689},{\"X\":417,\"Y\":671},{\"X\":123,\"Y\":649},{\"X\":121,\"Y\":891},{\"X\":2020,\"Y\":896}],\"Length\":8},{\"Points\":[{\"X\":294,\"Y\":564},{\"X\":121,\"Y\":566},{\"X\":122,\"Y\":19},{\"X\":322,\"Y\":394},{\"X\":233,\"Y\":457}],\"Length\":5},{\"Points\":[{\"X\":1,\"Y\":2},{\"X\":127,\"Y\":3},{\"X\":128,\"Y\":896},{\"X\":0,\"Y\":894}],\"Length\":4}],\"LocationPoints\":[{\"Point\":{\"X\":537,\"Y\":496},\"Parameter\":0},{\"Point\":{\"X\":997,\"Y\":497},\"Parameter\":1},{\"Point\":{\"X\":1458,\"Y\":497},\"Parameter\":2},{\"Point\":{\"X\":1918,\"Y\":496},\"Parameter\":3},{\"Point\":{\"X\":777,\"Y\":484},\"Parameter\":6},{\"Point\":{\"X\":1266,\"Y\":484},\"Parameter\":5},{\"Point\":{\"X\":1753,\"Y\":485},\"Parameter\":4}],\"FindPathPoints\":[{\"X\":425,\"Y\":495},{\"X\":1885,\"Y\":496},{\"X\":1294,\"Y\":541}],\"LoopLines\":[{\"P1\":{\"X\":425,\"Y\":495},\"P2\":{\"X\":1885,\"Y\":496}}],\"FindPathLines\":[{\"P1\":{\"X\":425,\"Y\":495},\"P2\":{\"X\":1294,\"Y\":541}},{\"P1\":{\"X\":1294,\"Y\":541},\"P2\":{\"X\":1885,\"Y\":496}}]}",
            //14:
            "{\"Width\":1687,\"Height\":901,\"Obstacles\":[{\"Points\":[{\"X\":98,\"Y\":310},{\"X\":408,\"Y\":314},{\"X\":418,\"Y\":425},{\"X\":530,\"Y\":416},{\"X\":593,\"Y\":451},{\"X\":721,\"Y\":452},{\"X\":762,\"Y\":449},{\"X\":783,\"Y\":337},{\"X\":840,\"Y\":302},{\"X\":1207,\"Y\":300},{\"X\":1239,\"Y\":321},{\"X\":1418,\"Y\":320},{\"X\":1584,\"Y\":378},{\"X\":1679,\"Y\":377},{\"X\":1681,\"Y\":4},{\"X\":4,\"Y\":4},{\"X\":0,\"Y\":436}],\"Length\":17},{\"Points\":[{\"X\":1681,\"Y\":717},{\"X\":1319,\"Y\":706},{\"X\":1165,\"Y\":653},{\"X\":1053,\"Y\":654},{\"X\":835,\"Y\":609},{\"X\":732,\"Y\":624},{\"X\":680,\"Y\":667},{\"X\":0,\"Y\":650},{\"X\":0,\"Y\":898},{\"X\":1682,\"Y\":898}],\"Length\":10}],\"LocationPoints\":[{\"Point\":{\"X\":278,\"Y\":481},\"Parameter\":0},{\"Point\":{\"X\":739,\"Y\":481},\"Parameter\":1},{\"Point\":{\"X\":1200,\"Y\":479},\"Parameter\":2},{\"Point\":{\"X\":1656,\"Y\":480},\"Parameter\":3}],\"FindPathPoints\":[{\"X\":140,\"Y\":474},{\"X\":1453,\"Y\":466},{\"X\":763,\"Y\":520},{\"X\":373,\"Y\":565}],\"LoopLines\":[{\"P1\":{\"X\":140,\"Y\":474},\"P2\":{\"X\":1453,\"Y\":466}}],\"FindPathLines\":[{\"P1\":{\"X\":140,\"Y\":474},\"P2\":{\"X\":373,\"Y\":565}},{\"P1\":{\"X\":140,\"Y\":474},\"P2\":{\"X\":763,\"Y\":520}},{\"P1\":{\"X\":373,\"Y\":565},\"P2\":{\"X\":763,\"Y\":520}},{\"P1\":{\"X\":763,\"Y\":520},\"P2\":{\"X\":1453,\"Y\":466}},{\"P1\":{\"X\":373,\"Y\":565},\"P2\":{\"X\":1453,\"Y\":466}}]}",
            string.Empty,//15
            //16:
            "{\"Width\":1687,\"Height\":901,\"Obstacles\":[{\"Points\":[{\"X\":3,\"Y\":385},{\"X\":257,\"Y\":388},{\"X\":655,\"Y\":320},{\"X\":711,\"Y\":264},{\"X\":1682,\"Y\":279},{\"X\":1682,\"Y\":1},{\"X\":0,\"Y\":4}],\"Length\":7},{\"Points\":[{\"X\":5,\"Y\":713},{\"X\":265,\"Y\":754},{\"X\":432,\"Y\":862},{\"X\":405,\"Y\":900},{\"X\":1,\"Y\":896}],\"Length\":5},{\"Points\":[{\"X\":720,\"Y\":883},{\"X\":825,\"Y\":776},{\"X\":1034,\"Y\":851},{\"X\":985,\"Y\":900},{\"X\":712,\"Y\":900}],\"Length\":5},{\"Points\":[{\"X\":1173,\"Y\":871},{\"X\":1569,\"Y\":644},{\"X\":1674,\"Y\":661},{\"X\":1684,\"Y\":772},{\"X\":1679,\"Y\":887},{\"X\":1187,\"Y\":893},{\"X\":1200,\"Y\":852}],\"Length\":7}],\"LocationPoints\":[{\"Point\":{\"X\":1391,\"Y\":410},\"Parameter\":4},{\"Point\":{\"X\":905,\"Y\":409},\"Parameter\":5},{\"Point\":{\"X\":416,\"Y\":410},\"Parameter\":6}],\"FindPathPoints\":[{\"X\":633,\"Y\":693},{\"X\":1494,\"Y\":434},{\"X\":139,\"Y\":505},{\"X\":834,\"Y\":367}],\"LoopLines\":[{\"P1\":{\"X\":139,\"Y\":505},\"P2\":{\"X\":1494,\"Y\":434}}],\"FindPathLines\":[{\"P1\":{\"X\":139,\"Y\":505},\"P2\":{\"X\":834,\"Y\":367}},{\"P1\":{\"X\":834,\"Y\":367},\"P2\":{\"X\":1494,\"Y\":434}},{\"P1\":{\"X\":633,\"Y\":693},\"P2\":{\"X\":1494,\"Y\":434}},{\"P1\":{\"X\":633,\"Y\":693},\"P2\":{\"X\":834,\"Y\":367}},{\"P1\":{\"X\":633,\"Y\":693},\"P2\":{\"X\":139,\"Y\":505}}]}",
            //17:
            "{\"Width\":1687,\"Height\":720,\"Obstacles\":[{\"Points\":[{\"X\":1681,\"Y\":368},{\"X\":1591,\"Y\":363},{\"X\":1487,\"Y\":252},{\"X\":1475,\"Y\":4},{\"X\":1683,\"Y\":3}],\"Length\":5},{\"Points\":[{\"X\":1348,\"Y\":358},{\"X\":544,\"Y\":345},{\"X\":534,\"Y\":453},{\"X\":115,\"Y\":450},{\"X\":0,\"Y\":390},{\"X\":0,\"Y\":3},{\"X\":1480,\"Y\":3},{\"X\":1487,\"Y\":245}],\"Length\":8},{\"Points\":[{\"X\":108,\"Y\":685},{\"X\":76,\"Y\":720},{\"X\":1682,\"Y\":718},{\"X\":1684,\"Y\":683}],\"Length\":4}],\"LocationPoints\":[{\"Point\":{\"X\":276,\"Y\":499},\"Parameter\":0},{\"Point\":{\"X\":736,\"Y\":502},\"Parameter\":1},{\"Point\":{\"X\":1198,\"Y\":500},\"Parameter\":2},{\"Point\":{\"X\":1655,\"Y\":502},\"Parameter\":3}],\"FindPathPoints\":[{\"X\":196,\"Y\":514},{\"X\":1622,\"Y\":491},{\"X\":605,\"Y\":518}],\"LoopLines\":[{\"P1\":{\"X\":196,\"Y\":514},\"P2\":{\"X\":1622,\"Y\":491}}],\"FindPathLines\":[{\"P1\":{\"X\":196,\"Y\":514},\"P2\":{\"X\":605,\"Y\":518}},{\"P1\":{\"X\":605,\"Y\":518},\"P2\":{\"X\":1622,\"Y\":491}}]}",
        };
        /// <summary>
        /// 获取json
        /// </summary>
        /// <returns></returns>
        public string ToJsonString()
        public string ToJsonString(Int32 width,Int32 height)
        {
            this.Width = width;
            this.Height = height;
            HousePathInfoObj obj=HousePathInfoObj.From(this);
            string json = ZTImage.Json.JsonBuilder.ToJsonString(obj);
            return json;
@@ -516,23 +436,7 @@
        public static HousePathInfo From(MapType mapType, Int32 houseIndex)
        {
            string info = null;
            if (mapType == MapType.Lingdong)
            {
                if (houseIndex > Lingdong.Length - 1)
                {
                    throw new ArgumentOutOfRangeException("houseIndex");
                }
                info = Lingdong[houseIndex];
            }
            else if (mapType == MapType.Kalete)
            {
                if (houseIndex > Kalete.Length - 1)
                {
                    throw new ArgumentOutOfRangeException("houseIndex");
                }
                info = Kalete[houseIndex];
            }
            string info = ReadConfig(mapType, houseIndex);
            try
            {
@@ -543,6 +447,40 @@
                throw e;
            }
        }
        private static String ReadConfig(MapType mapType, Int32 houseIndex)
        {
            string file = string.Empty;
            if (mapType == MapType.Lingdong)
            {
                file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "configs", "lingdong.txt");
            }
            else if (mapType == MapType.Kalete)
            {
                file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "configs", "kalete.txt");
            }
            if (!File.Exists(file))
            {
                throw new FieldAccessException("config file not exists," + file);
            }
            string content = System.IO.File.ReadAllText(file);
            if (string.IsNullOrEmpty(content))
            {
                throw new FieldAccessException("file empty," + file);
            }
            string[] lines = content.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            Int32 row = houseIndex * 2 + 1;
            if (row > lines.Length)
            {
                throw new ArgumentOutOfRangeException("超出的行");
            }
            return lines[row];
        }
        #endregion
    }
src/RichCreator.Utility/PathFinding/Dijkstra.cs
@@ -74,10 +74,7 @@
                }
            }
        }
        /// <summary>
        /// 查找最短路径
        /// </summary>
@@ -91,7 +88,7 @@
            var distances = new Dictionary<T, Int32>();
            var nodes = new List<T>();
            List<T> path = null;
            List<T> path = new List<T>();
            foreach (var vertex in edges)
            {
@@ -116,7 +113,6 @@
                if (smallest.Equals(finish))
                {
                    path = new List<T>();
                    while (previous.ContainsKey(smallest))
                    {
                        path.Add(smallest);
src/RichCreator.Utility/RichCreator.Utility.csproj
@@ -91,6 +91,7 @@
    <Compile Include="CV\ChannelCVHelper.cs" />
    <Compile Include="CV\GroupCVHelper.cs" />
    <Compile Include="CV\KaleteCVHelper.cs" />
    <Compile Include="CV\ShikongzhimenCVHelper.cs" />
    <Compile Include="CV\SkillCVHelper.cs" />
    <Compile Include="CV\DnfCVHelper.cs" />
    <Compile Include="CV\LindongCVHelper.cs" />
@@ -142,7 +143,7 @@
    <Compile Include="Structs\ZTSizeDouble.cs" />
    <Compile Include="Structs\ZTTargetPolygon.cs" />
    <Compile Include="Utilitys\ColorUtils.cs" />
    <Compile Include="Utilitys\GeometryHelper.cs" />
    <Compile Include="Utilitys\GeoHelper.cs" />
    <Compile Include="Utilitys\ProcessUtils.cs" />
    <Compile Include="Utilitys\RandomUtils.cs" />
    <Compile Include="Utilitys\SystemHotKey.cs" />
src/RichCreator.Utility/Skills/SkillInfo.cs
@@ -20,22 +20,22 @@
        /// 技能列表
        /// </summary>
        private static Dictionary<HIDCode, SkillInfo> Skills = new Dictionary<HIDCode, SkillInfo>() {
            { HIDCode.Q,new SkillInfo (){ Key=HIDCode.Q,Range=new ZTSize (700,200),WaitTime=9,              AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseTime=2000,SkillName="朔风牵引"} },
            { HIDCode.W,new SkillInfo (){ Key=HIDCode.W,Range=new ZTSize (620,240),WaitTime=45,             AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Center,ReleaseTime=2000,SkillName="风卷残云"} },
            { HIDCode.E,new SkillInfo (){ Key=HIDCode.E,Range=new ZTSize (1280,200),WaitTime=12.6f,         AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseTime=2000,SkillName="双翼风刃"} },
            { HIDCode.R,new SkillInfo (){ Key=HIDCode.R,Range=new ZTSize (400,200),WaitTime=14.4f,          AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseTime=600,SkillName="风暴之眼"} },
            { HIDCode.T,new SkillInfo (){ Key=HIDCode.T,Range=new ZTSize (120,300),WaitTime=40.5f,          AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseTime=2000,SkillName="九霄风雷"} },
            { HIDCode.Y,new SkillInfo (){ Key=HIDCode.Y,Range=new ZTSize (1280,720),WaitTime=145,           AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Center,ReleaseTime=2000,SkillName="万象风龙阵"} },
            { HIDCode.A,new SkillInfo (){ Key=HIDCode.A,Range=new ZTSize (240,148),WaitTime=7.7f,           AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Nearly,ReleaseAnchor=SkillAnchor.Side,ReleaseTime=600,SkillName="风鸣冲击"} },
            { HIDCode.S,new SkillInfo (){ Key=HIDCode.S,Range=new ZTSize (180,430),WaitTime=22.5f,          AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseTime=2000,SkillName="真空旋风破"} },
            { HIDCode.D,new SkillInfo (){ Key=HIDCode.D,Range=new ZTSize (1280,240),WaitTime=6.3f,          AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseTime=500,SkillName="游离之风"} },
            { HIDCode.F,new SkillInfo (){ Key=HIDCode.F,Range=new ZTSize (370,224),WaitTime=40.5f,          AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseTime=2000,SkillName="风暴之拳"} },
            { HIDCode.G,new SkillInfo (){ Key=HIDCode.G,Range=new ZTSize (730,218),WaitTime=36,             AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseTime=2000,SkillName="游龙惊风破"} },
            { HIDCode.H,new SkillInfo (){ Key=HIDCode.H,Range=new ZTSize (1280,720),WaitTime=180,           AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Center,ReleaseTime=2000,SkillName="无限风域"} },
            { HIDCode.X,new SkillInfo (){ Key=HIDCode.X,Range=new ZTSize (200,170),WaitTime=0.5f,           AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Nearly,ReleaseAnchor=SkillAnchor.Side,ReleaseTime=500,SkillName="普通攻击"} },
            { HIDCode.Space,new SkillInfo (){ Key=HIDCode.Space,Range=new ZTSize (1280,720),WaitTime=300,   AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Nearly,ReleaseAnchor=SkillAnchor.Center,ReleaseTime=2000,SkillName="技能加成"} }
            { HIDCode.Q,    new SkillInfo (){ Key=HIDCode.Q,AttackRange=new ZTRectangle(0,0,700,200),Range=new ZTSize (700,200),CDTime=9,              AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseWaitTime=1300,SkillName="朔风牵引"} },
            { HIDCode.W,    new SkillInfo (){ Key=HIDCode.W,AttackRange=new ZTRectangle(0,0,620,240),Range=new ZTSize (620,240),CDTime=45,             AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Center,ReleaseWaitTime=1000,SkillName="风卷残云"} },
            { HIDCode.E,    new SkillInfo (){ Key=HIDCode.E,AttackRange=new ZTRectangle(0,0,800,200),Range=new ZTSize (1280,200),CDTime=12.6f,         AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseWaitTime=1000,  SkillName="双翼风刃"} },
            { HIDCode.R,    new SkillInfo (){ Key=HIDCode.R,AttackRange=new ZTRectangle(0,0,400,200),Range=new ZTSize (400,200),CDTime=14.4f,          AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseWaitTime=1240,   SkillName="风暴之眼"} },
            { HIDCode.T,    new SkillInfo (){ Key=HIDCode.T,AttackRange=new ZTRectangle(0,0,120,300),Range=new ZTSize (120,300),CDTime=40.5f,          AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseWaitTime=2000,SkillName="九霄风雷"} },
            { HIDCode.Y,    new SkillInfo (){ Key=HIDCode.Y,AttackRange=new ZTRectangle(-800,-600,800,600),Range=new ZTSize (1280,720),CDTime=145,           AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Center,ReleaseWaitTime=2000,SkillName="万象风龙阵"} },
            { HIDCode.A,    new SkillInfo (){ Key=HIDCode.A,AttackRange=new ZTRectangle(0,0,240,148),Range=new ZTSize (240,148),CDTime=7.7f,           AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Nearly,ReleaseAnchor=SkillAnchor.Side,ReleaseWaitTime=600,SkillName="风鸣冲击"} },
            { HIDCode.S,    new SkillInfo (){ Key=HIDCode.S,AttackRange=new ZTRectangle(0,0,180,430),Range=new ZTSize (180,430),CDTime=22.5f,          AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseWaitTime=2000,SkillName="真空旋风破"} },
            { HIDCode.D,    new SkillInfo (){ Key=HIDCode.D,AttackRange=new ZTRectangle(0,0,800,240),Range=new ZTSize (1280,240),CDTime=6.3f,          AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseWaitTime=500,SkillName="游离之风"} },
            { HIDCode.F,    new SkillInfo (){ Key=HIDCode.F,AttackRange=new ZTRectangle(0,0,370,224),Range=new ZTSize (370,224),CDTime=40.5f,          AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseWaitTime=2000,SkillName="风暴之拳"} },
            { HIDCode.G,    new SkillInfo (){ Key=HIDCode.G,AttackRange=new ZTRectangle(0,0,730,218),Range=new ZTSize (730,218),CDTime=36,             AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Side,ReleaseWaitTime=2000,SkillName="游龙惊风破"} },
            { HIDCode.H,    new SkillInfo (){ Key=HIDCode.H,AttackRange=new ZTRectangle(-800,-600,800,600),Range=new ZTSize (1280,720),CDTime=180,           AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Quantity,ReleaseAnchor=SkillAnchor.Center,ReleaseWaitTime=2000,SkillName="无限风域"} },
            { HIDCode.X,    new SkillInfo (){ Key=HIDCode.X,AttackRange=new ZTRectangle(0,0,200,170),Range=new ZTSize (200,170),CDTime=0.5f,           AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Nearly,ReleaseAnchor=SkillAnchor.Side,ReleaseWaitTime=500,SkillName="普通攻击"} },
            { HIDCode.Space,new SkillInfo (){ Key=HIDCode.Space ,AttackRange=new ZTRectangle(-800,-600,800,600),Range=new ZTSize (1280,720),CDTime=300,   AnchorOffset=new ZTSize(0,-50),MovePriority=MovePriority.Nearly,ReleaseAnchor=SkillAnchor.Center,ReleaseWaitTime=2000,SkillName="技能加成"} }
        };
        /// <summary>
@@ -63,9 +63,9 @@
        public ZTSize Range;
        /// <summary>
        /// 释放后需要等多少秒
        /// 技能恢复时间(秒)
        /// </summary>
        public float WaitTime;
        public float CDTime;
        /// <summary>
        /// 技能名称
@@ -73,14 +73,11 @@
        public string SkillName;
        /// <summary>
        /// 技能释放时长
        /// 技能释放和释放完后可以移动的等待时长(毫秒)
        /// </summary>
        public float ReleaseTime { get; set; }
        public float ReleaseWaitTime { get; set; }
        /// <summary>
        /// 技能释放锚点
        /// </summary>
        public SkillAnchor ReleaseAnchor { get; set; }
        /// <summary>
        /// 技能释放锚点编移
@@ -97,12 +94,25 @@
        /// <summary>
        /// 技能释放锚点枚举
        /// 技能释放位置
        /// </summary>
        public SkillAnchor ReleaseAnchor { get; set; }
        /// <summary>
        /// 攻击范围
        /// (0,0)为角色位置
        /// </summary>
        public ZTRectangle AttackRange { get; set; }
        /// <summary>
        /// 技能释放时角色位置
        /// </summary>
        public enum SkillAnchor
        {
            Side,
            Center
            Side,//两边
            Center//中间
        }
src/RichCreator.Utility/Skills/SkillQueue.cs
@@ -14,8 +14,6 @@
    public class SkillQueue
    {
        private List<SKillCallTime> callTimes = new List<SKillCallTime>();//可调用的技能列表
        private SkillInfo lastSkill = null;//最后一个调用的技能
        private DateTime lastSkillCallTime = DateTime.MinValue;//最后一个技能的调用时间
        public SkillQueue()
        {
@@ -102,7 +100,7 @@
                {
                    callTime = callTimes[i];
                    double dimMS = (DateTime.Now - callTime.LastCallTime).TotalMilliseconds;
                    if (dimMS > (callTime.Skill.WaitTime * 1000))
                    if (dimMS > (callTime.Skill.CDTime * 1000))
                    {
                        //已经过了技能等待时间
                        if (!callTime.IsOnce || callTime.CallCount <= 0)
src/RichCreator.Utility/Structs/ZTLinePoint.cs
@@ -26,7 +26,7 @@
        public Int32 GetDistance()
        {
            return (Int32)GeometryHelper.GetPointDistance(this.P1, this.P2);
            return (Int32)GeoHelper.GetPointDistance(this.P1, this.P2);
        }
        
src/RichCreator.Utility/Utilitys/GeoHelper.cs
File was renamed from src/RichCreator.Utility/Utilitys/GeometryHelper.cs
@@ -23,8 +23,42 @@
    /// <summary>
    /// 与几何相关的辅助类
    /// </summary>
    public static class GeometryHelper
    public static class GeoHelper
    {
        /// <summary>
        /// 计算两点之间的距离
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public static double GetDistance(ZTPoint start, ZTPoint end)
        {
            Int32 subX = end.X - start.X;
            Int32 subY = end.Y - start.Y;
            return Math.Sqrt(subX * subX + subY * subY);
        }
        /// <summary>
        /// 指定点是否在方框内
        /// </summary>
        /// <param name="point"></param>
        /// <param name="rect"></param>
        /// <returns></returns>
        public static bool IsInRect(ZTPoint point, ZTRectangle rect)
        {
            if (point.Y >= rect.Start.Y &&
                point.Y <= rect.End.Y &&
                point.X >= rect.Start.X &&
                point.X <= rect.End.X)
            {
                return true;
            }
            return false;
        }
        /// <summary>
        /// 获取点到点的距离
        /// </summary>
src/RichCreator/Dnf/DnfRole.cs
@@ -2,8 +2,11 @@
using RichCreator.Utility.Dnf;
using RichCreator.Utility.InputControl;
using RichCreator.Utility.Maps;
using RichCreator.Utility.Skills;
using RichCreator.Utility.Structs;
using RichCreator.Utility.Utilitys;
using System;
using System.Collections.Generic;
using System.Threading;
@@ -14,37 +17,61 @@
    /// </summary>
    public class DnfRole
    {
        private SpeedProvider speed;//速度
        private const Int32 PaddingLeft = 140;//左边框内边距
        private const Int32 PaddingRight = 140;//右边框内边距
        /// <summary>
        /// 角色脚部距色块中央的偏移
        /// </summary>
        public static readonly ZTPoint RoleFootOffset = new ZTPoint(0, 143);
        /// <summary>
        /// 角色身体中间距色块中央的偏移
        /// </summary>
        public static readonly ZTPoint RoleHalfOffset = new ZTPoint(0, 88);
        public DnfRole(ZTRectangle gameRect)
        {
            this.gameRect = gameRect;
            speed = SpeedProvider.Define;
            moveCancelToken = new CancellationTokenSource();
        }
        private SpeedProvider speed;//速度
        private HouseInfo house;//所在房间
        private ZTRectangle gameRect = ZTRectangle.Empty;
        private MoveIntent movingIntent = MoveIntent.AttackMove;//移动意图
        private CancellationTokenSource moveCancelToken;//移动取消令牌
        /// <summary>
        /// 角色色块位置
        /// </summary>
        public ZTPoint RoleCBPosition { get; private set; }
        /// <summary>
        /// 角色脚部位置
        /// </summary>
        public ZTPoint Position
        {
            get
            {
                return CBToFootPosition(RoleCBPosition);
            }
        }
        /// <summary>
        /// 身体中间位置
        /// </summary>
        public ZTPoint HalfPosition
        {
            get
            {
                return CBToHalfPosition(RoleCBPosition);
            }
        }
        
        private Int32 minCenterLineY;
        private Int32 maxCenterLineY;
        private Int32 centerLineErrorRange = 35;//中间性可允许的误差
        private HouseInfo house;
        private ZTRectangle gameRect = ZTRectangle.Empty;
        private MoveIntent movingIntent = MoveIntent.AttackMove;//移动意图
        private MoveMethod movingMethod = MoveMethod.Vertical;//移动方式,默认垂直移动
        private ZTSize movingDistance;//移动距离
        public ZTPoint Position { get; private set; }//角色位置
        /// <summary>
        /// 按下的键,0:横向,1:纵向
        /// </summary>
@@ -58,8 +85,6 @@
        public void SetHouse(HouseInfo house)
        {
            this.house = house;
            minCenterLineY = this.gameRect.End.Y + this.house.HouseCenterMoveLine - centerLineErrorRange;
            maxCenterLineY = this.gameRect.End.Y + this.house.HouseCenterMoveLine + centerLineErrorRange;
        }
        /// <summary>
@@ -74,10 +99,10 @@
        /// <summary>
        /// 更新位置
        /// </summary>
        /// <param name="position"></param>
        public void UpdatePosition(ZTPoint position)
        /// <param name="roleCBPosition"></param>
        public void UpdatePosition(ZTPoint roleCBPosition)
        {
            this.Position = position;
            this.RoleCBPosition = roleCBPosition;
        }
@@ -113,14 +138,56 @@
        /// <param name="moveDistance"></param>
        public void AttackMove(ZTSize moveDistance)
        {
            PutKey(moveDistance);
            PutDirectionKey(moveDistance);
            movingIntent = MoveIntent.AttackMove;
        }
        /// <summary>
        /// 攻击移动至
        /// </summary>
        /// <param name="skillReleasePoint"></param>
        public void AttackMoveTo(ZTPoint skillReleasePoint,ParametersPoint locationPoint)
        {
            //屏幕坐标转地图坐标
            ZTPoint start= this.house.ScreenToMapCoordinate(this.Position, locationPoint);
            ZTPoint end = this.house.ScreenToMapCoordinate(DnfRole.HalfToFootPosition(skillReleasePoint), locationPoint);
            List<ZTPoint> paths = this.house.FindPath(start, end);
            MovePaths(start, paths);
        }
        /// <summary>
        /// 移动到指定地图点
        /// </summary>
        public void MoveToMapPoint(ZTPoint start,ZTPoint end)
        {
            List<ZTPoint> paths = this.house.FindPath(start, end);
            MovePaths(start, paths);
        }
        /// <summary>
        /// 移动指定路径
        /// </summary>
        /// <param name="start"></param>
        /// <param name="paths"></param>
        public void MovePaths(ZTPoint start, List<ZTPoint> paths)
        {
            ZTPoint lastPoint = start;
            if (paths != null && paths.Count > 0)
            {
                for (int i = 0; i < paths.Count; i++)
                {
                    ZTPoint distance = paths[i].Sub(lastPoint);
                    this.SyncMove(distance);
                    lastPoint = paths[i];
                }
            }
        }
        private Int32 findRoleDir = 0;//寻找角色行走的方向
        private DateTime findRoleMoveTimeout = DateTime.MinValue;//方向移动过期时间
        private static HIDCode[][] dir = new HIDCode[][] { new HIDCode[] { HIDCode.LeftArrow ,HIDCode.NoEvent}, new HIDCode[] { HIDCode.NoEvent, HIDCode.UpArrow }, new HIDCode[] { HIDCode.RightArrow, HIDCode.NoEvent }, new HIDCode[] { HIDCode.NoEvent, HIDCode.DownArrow } };
        
        /// <summary>
@@ -140,23 +207,48 @@
                findRoleDir++;
                HIDCode[]  tempKeys = dir[findRoleDir % 4];
                Int32 stepms = 0, runms = 0;
                PutKey(out stepms, out runms, tempKeys[0], tempKeys[1], true);
                PutDirectionKey(out stepms, out runms, tempKeys[0], tempKeys[1], true);
                findRoleMoveTimeout = DateTime.Now.AddMilliseconds(speed.RandomMoveMillSecond);
            }
            //if (!IsMoving || (IsMoving && KeyIsChange(tempKeys)))
            //{
            //    //Int32 stepms = 0, runms = 0;
            //    //PutKey(out stepms, out runms, tempKeys[0], tempKeys[1], true);
            //}
            movingIntent = MoveIntent.FindRoleMove;
        }
        public void EntryDoorMove()
        {
            if (IsMoving && !IsMoveIntent(MoveIntent.EntryDoor))
            {
                StopMove();
            }
        }
        public void ToLoopMove()
        {
            if (IsMoving && !IsMoveIntent(MoveIntent.ToLoopPoint))
            {
                StopMove();
            }
        }
        public void ToNextGateMove()
        {
            if (IsMoving && !IsMoveIntent(MoveIntent.ToNextGatePoint))
            {
                StopMove();
            }
        }
        /// <summary>
        /// 拾起物品移动
        /// </summary>
        public void PickupMove(ZTPoint rolePosition, ZTPoint thingItemPosition)
        {
            if (IsMoving && !IsMoveIntent(MoveIntent.PickupMove))
            {
                StopMove();
            }
            ZTSize moveDistance = new ZTSize(thingItemPosition.X - rolePosition.X, thingItemPosition.Y - rolePosition.Y - 97);
            if (Math.Abs(moveDistance.Width) < 100 && Math.Abs(moveDistance.Height) < 100)
            {
@@ -168,39 +260,10 @@
            }
            //G.Instance.DebugWriter("pickup distance:" + moveDistance.ToString());
            PutKey(moveDistance);
            PutDirectionKey(moveDistance);
            movingIntent = MoveIntent.PickupMove;
        }
        /// <summary>
        /// 找门移动
        /// </summary>
        /// <param name="rolePosition"></param>
        public void FindDoorMove(ZTPoint rolePosition)
        {
            ComputeMoveInfo(rolePosition);
            HIDCode dirKey = HIDCode.NoEvent;
            switch (movingMethod)
            {
                case MoveMethod.ToLeft:
                    dirKey = HIDCode.LeftArrow;
                    break;
                case MoveMethod.ToRight:
                    dirKey = HIDCode.RightArrow;
                    break;
                case MoveMethod.Vertical:
                    dirKey = movingDistance.Height > 0 ? HIDCode.DownArrow : HIDCode.UpArrow;
                    break;
                case MoveMethod.Fixed:
                    SyncMove(new ZTPoint(movingDistance.Width,movingDistance.Height));
                    StopMove();
                    return;
            }
            PutKey(movingDistance);
            movingIntent = MoveIntent.FindDoorMove;
        }
        
        /// <summary>
        /// 同步移动指定距离
@@ -241,7 +304,7 @@
                horizontal = HIDCode.LeftArrow;
            }
            PutKey(out stepms, out runms, horizontal, vertical, isRun);
            PutDirectionKey(out stepms, out runms, horizontal, vertical, isRun);
            if (stepms > 0)
            {
                Int32 mdistance = (Int32)(stepms * speed.StepX);
@@ -258,9 +321,7 @@
            {
                xtime = (Int32)(Math.Abs(distance.Width) / speed.RunX);
            }
            Int32 mintime = Math.Min(xtime, ytime);
            if (xtime <= 0)
            {
@@ -276,15 +337,20 @@
            ytime -= mintime;
            if (xtime > 0)
            {
                PutKey(out stepms, out runms, horizontal, HIDCode.NoEvent, isRun);
                PutDirectionKey(out stepms, out runms, horizontal, HIDCode.NoEvent, isRun);
                Thread.Sleep(xtime);
            }
            if (ytime > 0)
            {
                PutKey(out stepms, out runms, HIDCode.NoEvent, vertical, false);
                PutDirectionKey(out stepms, out runms, HIDCode.NoEvent, vertical, false);
                Thread.Sleep(ytime);
            }
            StopMove();
            //StopMove();
            G.Instance.InputControl.PutDown(false, false, false, false, false, false, false, false);
            pressKeys[0] = HIDCode.NoEvent;
            pressKeys[1] = HIDCode.NoEvent;
            isRun = false;
        }
        
        /// <summary>
@@ -294,6 +360,9 @@
        {
            if (IsMoving)
            {
                this.moveCancelToken.Cancel();
                this.moveCancelToken = new CancellationTokenSource();
                //停止
                G.Instance.InputControl.PutDown(false, false, false, false, false, false, false, false);
                pressKeys[0] = HIDCode.NoEvent;
@@ -310,181 +379,23 @@
        {
            Thread.Sleep(millSecond);
        }
        /// <summary>
        /// 释放技能
        /// </summary>
        /// <param name="key"></param>
        public void ReleaseSkill(HIDCode key)
        {
            ReleaseSkill(key, 0);
        }
        public void ReleaseSkill(HIDCode key, Int32 skillTimeout)
        {
            Int32 dur = RandomUtils.KeyPressDuration;
            G.Instance.InputControl.PressKey(dur,key);
            Int32 subTime = skillTimeout - dur;
            if (subTime > 0)
            SkillInfo skill=SkillInfo.GetSkillInfo(key);
            if (skill != null)
            {
                Thread.Sleep(subTime);
            }
        }
        private ZTPoint roleLastPosition = ZTPoint.Empty;
        private bool StaticTimerIsStart = false;//静止计时是否开始
        private Int32 StaticTimerCounter = 0;//静止计时计数器
        private DateTime DetectLastNoMoveTime = DateTime.MaxValue;//最后没移动时间
        private const Int32 NoMoveMaxMillSecond = 2000;//最大未移动容忍毫秒数
        /// <summary>
        /// 得到循环移动的距离
        /// </summary>
        /// <returns></returns>
        private void ComputeMoveInfo(ZTPoint rolePosition)
        {
            ZTRectangle limitRect = ZTRectangle.Empty;
            //达到未移动阀值,可能有障碍物,先攻击,如果攻击后还是无效则上下左右移
            if (rolePosition.Equals(this.roleLastPosition))
            {
                if (StaticTimerIsStart)
                Int32 subTime = (Int32)(skill.ReleaseWaitTime - dur);
                if (subTime > 0)
                {
                    if ((DateTime.Now - DetectLastNoMoveTime).TotalMilliseconds > NoMoveMaxMillSecond)
                    {
                        G.Instance.DebugWriter($"find door not move,role position:{rolePosition.ToString()}");
                        this.StopMove();
                        if (StaticTimerCounter == 0)
                        {
                            //清除障碍物
                            G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.X);
                        }
                        else
                        {
                            //无法清除障碍物,随机移动一下
                            switch (StaticTimerCounter % 4)
                            {
                                case 0:
                                    G.Instance.DebugWriter("random up");
                                    //上
                                    movingDistance = new ZTSize(0, -300);
                                    break;
                                case 1:
                                    //右
                                    movingDistance = new ZTSize(600, 0);
                                    break;
                                case 2:
                                    //下
                                    movingDistance = new ZTSize(0, 300);
                                    break;
                                case 3:
                                    //左
                                    movingDistance = new ZTSize(-600, 0);
                                    break;
                            }
                            movingMethod = MoveMethod.Fixed;
                        }
                        StaticTimerCounter++;
                        DetectLastNoMoveTime = DateTime.Now;
                        if (StaticTimerCounter > 1)
                        {
                            return;
                        }
                    }
                    Sleep(subTime);
                }
                else if (!StaticTimerIsStart)
                {
                    //没开始计时 则 开始计时
                    StaticTimerIsStart = true;
                    DetectLastNoMoveTime = DateTime.Now;
                }
            }
            else
            {
                //移动了 取消计时
                this.roleLastPosition = rolePosition;
                StaticTimerIsStart = false;
                StaticTimerCounter = 0;
            }
            if (!IsMoving)
            {
                //刚开始移动
                movingMethod = MoveMethod.Vertical;
            }
            if (movingMethod == MoveMethod.Vertical && rolePosition.Y >= minCenterLineY && rolePosition.Y <= maxCenterLineY)
            {
                //不需要上下移动,计算左右
                if (this.house.DoorDirection[0] == Direction.Left)
                {
                    movingMethod = MoveMethod.ToLeft;
                }
                else if (this.house.DoorDirection[0] == Direction.Right)
                {
                    movingMethod = MoveMethod.ToRight;
                }
                else
                {
                    //计算是向左还是右,哪边大往哪边
                    if (rolePosition.X > (this.gameRect.Start.X + (this.gameRect.End.X - this.gameRect.Start.X) / 2))
                    {
                        //左边空间大
                        movingMethod = MoveMethod.ToLeft;
                    }
                    else
                    {
                        movingMethod = MoveMethod.ToRight;
                    }
                }
            }
            if (movingMethod == MoveMethod.ToLeft)
            {
                //计算左边界范围
                limitRect = new ZTRectangle(gameRect.Start.X, gameRect.Start.Y, gameRect.Start.X + PaddingLeft, gameRect.End.Y);
                //判断是否到左边界
                if (RichCreator.Utilitys.Utils.IsInRect(rolePosition, limitRect))
                {
                    //到左边界就向右走
                    movingMethod = MoveMethod.ToRight;
                    movingDistance = new ZTSize(gameRect.End.X - rolePosition.X, 0);
                }
                else
                {
                    //没到继续向左走
                    movingMethod = MoveMethod.ToLeft;
                    movingDistance = new ZTSize(limitRect.Start.X - rolePosition.X, 0);
                }
            }
            else if (movingMethod == MoveMethod.ToRight)
            {
                //计算右边界范围
                limitRect = new ZTRectangle(gameRect.End.X - PaddingRight, gameRect.Start.Y, gameRect.End.X, gameRect.End.Y);
                //判断是否到右边界
                if (Utilitys.Utils.IsInRect(rolePosition, limitRect))
                {
                    //到右边界就向左走
                    G.Instance.InfoWriter($"in limit rect,role position:{rolePosition.ToString()},limit:{limitRect.ToString()}");
                    movingMethod = MoveMethod.ToLeft;
                    movingDistance = new ZTSize(gameRect.Start.X - rolePosition.X, 0);
                }
                else
                {
                    //没到继续向右走
                    movingMethod = MoveMethod.ToRight;
                    movingDistance = new ZTSize(gameRect.End.X - rolePosition.X, 0);
                }
            }
            else
            {
                //向点移动
                Int32 targetY = gameRect.End.Y + this.house.HouseCenterMoveLine;
                movingDistance = new ZTSize(0, targetY - rolePosition.Y);
            }
        }
        
@@ -493,7 +404,7 @@
        /// 按下按键
        /// </summary>
        /// <param name="distance"></param>
        private void PutKey(ZTSize distance)
        private void PutDirectionKey(ZTSize distance)
        {
            HIDCode horizontal = HIDCode.NoEvent;
            HIDCode vertical = HIDCode.NoEvent;
@@ -523,7 +434,7 @@
            }
            Int32 stepms, runms;
            PutKey(out stepms, out runms, horizontal, vertical, isRun);
            PutDirectionKey(out stepms, out runms, horizontal, vertical, isRun);
        }
        /// <summary>
@@ -534,7 +445,7 @@
        /// <param name="horizontal">横向按键</param>
        /// <param name="vertical">纵向按键</param>
        /// <param name="isRun">是否奔跑</param>
        private void PutKey(out Int32 stepMS, out Int32 runMS, HIDCode horizontal, HIDCode vertical, bool isRun)
        private void PutDirectionKey(out Int32 stepMS, out Int32 runMS, HIDCode horizontal, HIDCode vertical, bool isRun)
        {
            stepMS = 0;
            runMS = 0;
@@ -617,7 +528,7 @@
        /// </summary>
        /// <param name="pressKey"></param>
        /// <returns></returns>
        private bool KeyIsChange(HIDCode[] pressKey)
        private bool IsChangeOfKey(HIDCode[] pressKey)
        {
            if (pressKey == null || pressKey.Length != 2)
            {
@@ -630,7 +541,51 @@
            }
            return true;
        }
        #endregion
        
        #region role position convert
        /// <summary>
        /// 色块中央位置转为脚部位置
        /// </summary>
        /// <param name="cbPosition"></param>
        /// <returns></returns>
        public static ZTPoint CBToFootPosition(ZTPoint cbPosition)
        {
            return cbPosition.Add(RoleFootOffset);
        }
        /// <summary>
        /// 色块中央位置转为人物中间位置
        /// </summary>
        /// <param name="cbPosition"></param>
        /// <returns></returns>
        public static ZTPoint CBToHalfPosition(ZTPoint cbPosition)
        {
            return cbPosition.Add(RoleHalfOffset);
        }
        /// <summary>
        /// 脚部坐标到身份中央坐标转换
        /// </summary>
        /// <param name="footPosition"></param>
        /// <returns></returns>
        public static ZTPoint FootToHalfPosition(ZTPoint footPosition)
        {
            return footPosition.Sub(RoleFootOffset).Add(RoleHalfOffset);
        }
        /// <summary>
        /// 身体中央坐标到脚部坐标转换
        /// </summary>
        /// <param name="halfPosition"></param>
        /// <returns></returns>
        public static ZTPoint HalfToFootPosition(ZTPoint halfPosition)
        {
            return halfPosition.Sub(RoleHalfOffset).Add(RoleFootOffset);
        }
        #endregion
src/RichCreator/Dnf/MapInfo.cs
@@ -1,6 +1,9 @@
using RichCreator.Utility;
using RichCreator.Utility.CV;
using RichCreator.Utility.InputControl;
using RichCreator.Utility.Maps;
using RichCreator.Utility.Structs;
using RichCreator.Utilitys;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -20,6 +23,7 @@
            this.MapType = mapType;
            this.GameRect = gameRect;
            this.CancelToken = cancellationToken;
            this.Role = new DnfRole(gameRect);
        }
        /// <summary>
@@ -45,6 +49,139 @@
        /// </summary>
        public MapType MapType { get; set; }
        /// <summary>
        /// 角色
        /// </summary>
        public DnfRole Role { get; set; }
        #region Func
        /// <summary>
        /// 关闭所有弹出窗
        /// </summary>
        /// <param name="cancelToken"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        protected void CloseAllAlertWindowByEsc(CancellationToken cancelToken, ZTRectangle gameRect)
        {
            GameUtils.CloseAllAlertWindowByEsc(cancelToken, gameRect);
        }
        /// <summary>
        /// 关闭所有弹出窗
        /// </summary>
        /// <param name="cancelToken"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        protected void CloseAllAlertWindowByX(CancellationToken cancelToken, ZTRectangle gameRect)
        {
            GameUtils.CloseAllAlertWindowByX(cancelToken, gameRect);
        }
        /// <summary>
        /// 点击右上角"退到城镇"文字
        /// </summary>
        protected void ExitToTown()
        {
            G.Instance.DebugWriter("返回城镇");
            Utility.Structs.ZTPoint point = new Utility.Structs.ZTPoint(this.GameRect.Start.X +667, this.GameRect.Start.Y + 147);
            G.Instance.InputControl.MoveToAndClick(point);
            Thread.Sleep(5000);
        }
        /// <summary>
        /// 点击右上角的“再次挑战”
        /// </summary>
        protected void ReplayGame()
        {
            G.Instance.DebugWriter("重新挑战");
            Utility.Structs.ZTPoint point = new Utility.Structs.ZTPoint(this.GameRect.Start.X+667, this.GameRect.Start.Y + 87);
            G.Instance.InputControl.MoveToAndClick(point);
        }
        /// <summary>
        /// 出售装备
        /// </summary>
        /// <param name="saleButtonRect"></param>
        protected bool SaleEquipment()
        {
            //卖装备并关闭商店
            ZTRectangle closeButtonRect = ZTRectangle.Empty;
            ZTRectangle saleButtonRect = ZTRectangle.Empty;
            if (!DnfCVHelper.HasSaleButton(out saleButtonRect, out closeButtonRect, this.GameRect))
            {
                return false;
            }
            //卖装备
            G.Instance.InfoWriter("出售装备");
            G.Instance.InputControl.MoveToAndClick(saleButtonRect.GetCenterPoint());
            //得到装备文字位置
            ZTRectangle equipmentTextRect = ZTRectangle.Empty;
            bool result = FuncUtils.TimeoutCancelableWrap(5000, this.CancelToken, () =>
            {
                Int32 status = 0;
                if (DnfCVHelper.GetEquipmentSelectStatus(out equipmentTextRect, out status, this.GameRect))
                {
                    if (status == 1)
                    {
                        return true;
                    }
                    G.Instance.InputControl.MoveToAndClick(equipmentTextRect.GetCenterPoint());
                }
                return false;
            });
            if (!result)
            {
                G.Instance.InfoWriter("装备文字未取到");
                return false;
            }
            //开始点,每格步进30
            ZTPoint startPoint = new Utility.Structs.ZTPoint(equipmentTextRect.End.X - 30, equipmentTextRect.End.Y + 9);
            List<Int32> points = DnfCVHelper.GetEquipmentIndexs(startPoint);
            for (int i = 0; i < points.Count; i++)
            {
                Int32 index = points[i];
                int row = index / 8;
                int col = index % 8;
                int x = col * 30 + 15;
                int y = row * 30 + 15;
                //点窗格
                G.Instance.InputControl.MoveToAndClick(new Utility.Structs.ZTPoint(startPoint.X + x, startPoint.Y + y));
                Thread.Sleep(500);
                //点确定
                G.Instance.InputControl.Move(0, 0, true, false, false);
                Thread.Sleep(RandomUtils.MouseClickDuration);
                G.Instance.InputControl.Move(0, 0, false, false, false);
                Thread.Sleep(RandomUtils.MouseClickDuration);
            }
            G.Instance.DebugWriter("equipment:" + ZTImage.Utils.ConcatString(points.ToArray(), ","));
            Thread.Sleep(RandomUtils.KeyPressDuration);
            G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.Escape);
            return true;
        }
        #endregion
        #region abstruct func
        /// <summary>
        /// 开始刷图
        /// </summary>
@@ -68,5 +205,9 @@
        /// <param name="preHouseIndex"></param>
        public virtual void EntryHousePrework(Int32 houseIndex, Int32 preHouseIndex)
        { }
        #endregion
    }
}
src/RichCreator/Jobs/DNFJob.cs
@@ -32,27 +32,7 @@
        {
            this.MapType = mapType;
        }
        /// <summary>
        /// 选角色时的角色选择偏移
        /// </summary>
        private static ZTPoint[] RoleOffset = new Utility.Structs.ZTPoint[] {
            new ZTPoint (154,225),
            new ZTPoint (300,225),
            new ZTPoint (443,225),
            new ZTPoint (593,225),
            new ZTPoint (726,225),
            new ZTPoint (883,225),
            new ZTPoint (154,455),
            new ZTPoint (300,455),
            new ZTPoint (443,455),
            new ZTPoint (593,455),
            new ZTPoint (726,455),
            new ZTPoint (883,455)
        };
        /// <summary>
        /// 游戏窗口
        /// </summary>
@@ -207,12 +187,16 @@
                () =>
                {
                    WindowUtils.SetDnfToTop();
                    //选角色
                    G.Instance.InputControl.MoveToAndClick(this.GameRect.Start.Add(RoleOffset[roleIndex]));
                    Thread.Sleep(500);
                    //点进入游戏
                    G.Instance.InputControl.MoveToAndClick(startGameButtonRect.GetCenterPoint());
                    if (SelectRoleIndex(roleIndex))
                    {
                        //点进入游戏
                        G.Instance.InputControl.MoveToAndClick(startGameButtonRect.GetCenterPoint());
                        return true;
                    }
                    Thread.Sleep(1000);
                    return false;
                },
                () =>
                {
@@ -228,38 +212,176 @@
                        return true;
                    }
                    return false;
                });
                },3);
            return result;
        }
        /// <summary>
        /// 关闭所有弹出窗
        /// </summary>
        /// <param name="cancelToken"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        private bool CloseAllAlertWindow(CancellationToken cancelToken, ZTRectangle gameRect)
        {
            while (!cancelToken.IsCancellationRequested)
            {
                G.Instance.InputControl.MoveTo(0, 0, false, false, false);
                Thread.Sleep(10);
                //截图
                System.Drawing.Bitmap bitmap = ScreenCapture.Instance.CaptureScreen();
                Image<Rgb, byte> image = new Image<Rgb, byte>(bitmap);
                ZTRectangle closeButtonRect = ZTRectangle.Empty;
                if (!DnfCVHelper.GetAlertWindow(out closeButtonRect, image, gameRect))
        /// <summary>
        /// 选角色时的角色选择偏移
        /// </summary>
        private static ZTPoint[] RoleOffset = new Utility.Structs.ZTPoint[] {
            new ZTPoint (133,191),
            new ZTPoint (249,191),
            new ZTPoint (371,191),
            new ZTPoint (499,191),
            new ZTPoint (133,398),
            new ZTPoint (249,398),
            new ZTPoint (371,398),
            new ZTPoint (499,398),
            new ZTPoint (133,398),
            new ZTPoint (249,398)
        };
        /// <summary>
        /// 选择角色
        /// </summary>
        /// <param name="roleIndex"></param>
        /// <returns></returns>
        private bool SelectRoleIndex(Int32 roleIndex)
        {
            if (roleIndex < 8)
            {
                //移到顶端
                if (!ScrollMoveToTop())
                {
                    return false;
                }
            }
            else
            {
                //移到顶端,向下一格
                if (!ScrollMoveToDownOne())
                {
                    return false;
                }
            }
            Thread.Sleep(1000);
            //选角色
            G.Instance.InputControl.MoveToAndClick(this.GameRect.Start.Add(RoleOffset[roleIndex]));
            Thread.Sleep(500);
            return true;
        }
        /// <summary>
        /// 滚动条移动到顶端
        /// </summary>
        /// <returns></returns>
        private bool ScrollMoveToTop()
        {
            ZTRectangle upButton = ZTRectangle.Empty;
            ZTRectangle downButton = ZTRectangle.Empty;
            ZTRectangle scrollButton = ZTRectangle.Empty;
            //查找滚动条位置
            if (DnfCVHelper.FindSelectRoleScroll(out upButton, out downButton, out scrollButton, this.GameRect))
            {
                //是在顶部
                if (Math.Abs(upButton.End.Y - scrollButton.Start.Y) < 3)
                {
                    return true;
                }
            }
            Int32 counter = 4;
            while(counter>0)
            {
                counter--;
                //查找滚动条位置
                if (!DnfCVHelper.FindSelectRoleScroll(out upButton, out downButton, out scrollButton, this.GameRect))
                {
                    continue;
                }
                //是在顶部
                if (Math.Abs(upButton.End.Y - scrollButton.Start.Y) < 3)
                {
                    return true;
                }
                G.Instance.InputControl.MoveToAndClick(closeButtonRect.GetCenterPoint());
                Thread.Sleep(500);
                ZTPoint targetPoint = scrollButton.GetCenterPoint();
                G.Instance.InputControl.MoveTo(targetPoint.X, targetPoint.Y, false, false, false);
                G.Instance.InputControl.Move(0, 0, true, false, false);
                targetPoint = upButton.GetCenterPoint();
                G.Instance.InputControl.MoveTo(targetPoint.X, targetPoint.Y, true, false, false);
                G.Instance.InputControl.Move(0, 0, false, false, false);
                Thread.Sleep(RandomUtils.KeyPressDuration);
                G.Instance.InputControl.MoveTo(this.GameRect.End.X, this.GameRect.Start.Y, false, false, false);
                Thread.Sleep(RandomUtils.KeyPressDuration);
            }
            return false;
        }
        /// <summary>
        /// 滚动条移动到下一格
        /// </summary>
        /// <returns></returns>
        private bool ScrollMoveToDownOne()
        {
            ZTRectangle upButton = ZTRectangle.Empty;
            ZTRectangle downButton = ZTRectangle.Empty;
            ZTRectangle scrollButton = ZTRectangle.Empty;
            //查找滚动条位置
            if (DnfCVHelper.FindSelectRoleScroll(out upButton, out downButton, out scrollButton, this.GameRect))
            {
                //是在下一格
                if (Math.Abs(upButton.End.Y - scrollButton.Start.Y) > 3&& Math.Abs(upButton.End.Y - scrollButton.Start.Y)<30)
                {
                    return true;
                }
            }
            Int32 counter = 4;
            while (counter > 0)
            {
                counter--;
                //查找滚动条位置
                if (!DnfCVHelper.FindSelectRoleScroll(out upButton, out downButton, out scrollButton, this.GameRect))
                {
                    continue;
                }
                //是在第一格
                if (Math.Abs(upButton.End.Y - scrollButton.Start.Y) > 3 && Math.Abs(upButton.End.Y - scrollButton.Start.Y) < 30)
                {
                    return true;
                }
                ZTPoint targetPoint = scrollButton.GetCenterPoint();
                G.Instance.InputControl.MoveTo(targetPoint.X, targetPoint.Y, false, false, false);
                G.Instance.InputControl.Move(0, 0, true, false, false);
                targetPoint = upButton.GetCenterPoint();
                G.Instance.InputControl.MoveTo(targetPoint.X, targetPoint.Y, true, false, false);
                G.Instance.InputControl.Move(0, 0, false, false, false);
                Thread.Sleep(RandomUtils.KeyPressDuration);
                G.Instance.InputControl.MoveToAndClick(downButton.GetCenterPoint());
                Thread.Sleep(RandomUtils.KeyPressDuration);
                G.Instance.InputControl.MoveTo(this.GameRect.End.X, this.GameRect.Start.Y, false, false, false);
                Thread.Sleep(RandomUtils.KeyPressDuration);
            }
            return false;
        }
        /// <summary>
        /// 返回选择角色界面
@@ -291,17 +413,14 @@
            if (result)
            {
                //点击切换角色按钮624,502
                G.Instance.InputControl.MoveToAndClick(new Utility.Structs.ZTPoint(this.GameRect.Start.X + 624, this.GameRect.Start.Y + 502));
                //点击切换角色按钮388,445
                G.Instance.InputControl.MoveToAndClick(new Utility.Structs.ZTPoint(this.GameRect.Start.X + 388, this.GameRect.Start.Y + 445));
                return true;
            }
            G.Instance.InfoWriter("退回选择角色界面失败");
            return false;
        }
        /// <summary>
        /// 根据当前选择的地图实例化DNF地图
        /// </summary>
src/RichCreator/Jobs/WeGameJob.cs
@@ -34,20 +34,44 @@
            Process.Start(this.Config.TGPDaemonPath);
            G.Instance.InfoWriter("等待We Game运行");
            ZTRectangle weGameRect = ZTRectangle.Empty;
            ZTRectangle changeLoginMethodButtonRect = ZTRectangle.Empty;
            ZTRectangle changeMethodRect = ZTRectangle.Empty;
            bool result = false;
            //查找游戏
            bool result = FindWeGame(cancellationToken, 5 * 60, out weGameRect,out changeLoginMethodButtonRect);
            if (!result)
            //查找游戏并设为帐号密码登陆
            Int32 counter = 3;
            while (counter>0)
            {
                G.Instance.InfoWriter("查找游戏失败");
                return ZTResult.Failed;
            }
                bool isQQFast = false;
                //查找游戏
                result = FindWeGame(out isQQFast, cancellationToken, 5 * 60, out weGameRect, out changeMethodRect);
                if (!result)
                {
                    G.Instance.InfoWriter("查找游戏失败");
                    return ZTResult.Failed;
                }
            G.Instance.InfoWriter("WeGame于:" + weGameRect.ToString() + ",切换按钮于:" + changeLoginMethodButtonRect.ToString());
                if (isQQFast)
                {
                    //qq快速登陆
                    G.Instance.InputControl.MoveToAndClick(changeMethodRect.GetCenterPoint());
                    Thread.Sleep(500);
                }
                else
                {
                    break;
                }
                counter--;
            }
            G.Instance.InfoWriter("WeGame于:" + weGameRect.ToString() + ",切换按钮于:" + changeMethodRect.ToString());
            
            //登陆
            result = LoginWeGame(cancellationToken, 30, weGameRect, changeLoginMethodButtonRect);
            result = LoginWeGame(cancellationToken, 30, weGameRect, changeMethodRect);
            if (!result)
            {
                G.Instance.InfoWriter("登陆失败");
@@ -56,10 +80,10 @@
            G.Instance.InfoWriter("WeGame登陆成功");
            
            //登陆DNF游戏
            result = LoginDNF(cancellationToken, 30);
            result = LoginDNF(cancellationToken, 30,weGameRect);
            if (!result)
            {
                G.Instance.InfoWriter("DNF未成功打开");
                G.Instance.InfoWriter("DNF启动未成功");
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("开始启动DNF游戏");
@@ -77,15 +101,16 @@
        /// <param name="loginMethod">当前登陆方式,0:QQ快速登陆,1:码密登陆</param>
        /// <param name="changeLMButtonRectangle">切换登陆方式按钮区域</param>
        /// <returns></returns>
        private bool FindWeGame(CancellationToken cancelToken, Int64 timeoutSecond, out ZTRectangle wegameRect, out ZTRectangle changeButtonRect)
        private bool FindWeGame(out bool isQQFastLogin,CancellationToken cancelToken, Int64 timeoutSecond, out ZTRectangle wegameRect, out ZTRectangle changeButtonRect)
        {
            ZTRectangle weGameRect = ZTRectangle.Empty;
            ZTRectangle changeLoginMethodButtonRect = ZTRectangle.Empty;
            bool isfl = false;
            bool result=FuncUtils.TimeoutCancelableWrap((Int32)timeoutSecond * 1000, cancelToken, () => {
                return WeGameCVHelper.IsLoginPage(out weGameRect, out changeLoginMethodButtonRect);
                return WeGameCVHelper.IsLoginPage(out isfl,out weGameRect, out changeLoginMethodButtonRect);
            });
            isQQFastLogin = isfl;
            wegameRect = weGameRect;
            changeButtonRect = changeLoginMethodButtonRect;
            return result;
@@ -132,7 +157,7 @@
        /// <param name="timeoutSecond"></param>
        /// <param name="dnfItemRect"></param>
        /// <returns></returns>
        private bool LoginDNF(CancellationToken cancelToken, Int64 timeoutSecond)
        private bool LoginDNF(CancellationToken cancelToken, Int64 timeoutSecond,ZTRectangle wegameRect)
        {
            ZTRectangle findRect = ZTRectangle.Empty;
            ZTRectangle pRect = ZTRectangle.Empty;
@@ -148,6 +173,7 @@
            {
                G.Instance.InfoWriter("未找到主页按钮");
                return false;
                //todo:发通知
            }
            G.Instance.InfoWriter("主页按钮已找到");
            G.Instance.InputControl.MoveToAndClick(unselectHomeButtonRect.GetCenterPoint());
@@ -161,39 +187,89 @@
            {
                G.Instance.InfoWriter("未找到DNF项");
                return false;
                //todo:发通知
            }
            G.Instance.InfoWriter("Dnf项已找到");
            G.Instance.InputControl.MoveToAndClick(dnfItemRect.GetCenterPoint());
            //是否需要更新
            ZTRectangle updateButtonRect = ZTRectangle.Empty;
            result = FuncUtils.TimeoutCancelableWrap(3000, cancelToken, () => {
                return WeGameCVHelper.FindUpdateButton(out updateButtonRect);
            //是否需要更新,如需要则更新
            ZTRectangle buttonRect = ZTRectangle.Empty;
            bool isUpdate = false;
            result = FuncUtils.TimeoutCancelableWrap((Int32)timeoutSecond*1000, cancelToken, () => {
                return FindGameButton(out buttonRect, out isUpdate);
            });
            if (result)
            {
                G.Instance.InfoWriter("需要更新请更新后再运行");
                G.Instance.InputControl.MoveToAndClick(updateButtonRect.GetCenterPoint());
                return false;
            }
            //开始游戏按钮
            ZTRectangle startGameButtonRect = ZTRectangle.Empty;
            result = FuncUtils.TimeoutCancelableWrap((Int32)timeoutSecond * 1000, cancelToken, () => {
                return WeGameCVHelper.FindStartGameButton(out startGameButtonRect);
            });
            if (!result)
            {
                G.Instance.InfoWriter("未找到开始游戏按钮");
                G.Instance.InfoWriter("未找到开始或升级游戏按钮");
                return false;
            }
            G.Instance.InfoWriter("开始游戏按钮已找到");
            G.Instance.InputControl.MoveToAndClick(startGameButtonRect.GetCenterPoint());
            if (isUpdate)
            {
                //更新
                G.Instance.InputControl.MoveToAndClick(buttonRect.GetCenterPoint());
                G.Instance.InfoWriter("需要更新,更新超时时长为30分钟");
                result = FuncUtils.TimeoutCancelableWrap(30 * 60 * 1000, cancelToken, () => {
                    G.Instance.InputControl.MoveTo(0, 0, false, false, false);
                    if (FindGameButton(out buttonRect, out isUpdate))
                    {
                        if (isUpdate)
                        {
                            //如果没点上更新按钮则再点一次
                            G.Instance.InputControl.MoveToAndClick(buttonRect.GetCenterPoint());
                        }
                        else
                        {
                            return true;
                        }
                    }
                    return false;
                });
                if (!result)
                {
                    G.Instance.InfoWriter("更新未成功,请手动更新");
                    //todo:发通知
                    return false;
                }
            }
            G.Instance.InfoWriter("开始游戏");
            G.Instance.InputControl.MoveToAndClick(buttonRect.GetCenterPoint());
            return true;
        }
        /// <summary>
        /// 查找游戏按钮
        /// </summary>
        /// <param name="buttonRect"></param>
        /// <returns></returns>
        private bool FindGameButton(out ZTRectangle buttonRect,out bool isUpdate)
        {
            buttonRect = ZTRectangle.Empty;
            isUpdate = false;
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            if (WeGameCVHelper.FindUpdateButton(out buttonRect, image))
            {
                isUpdate = true;
                return true;
            }
            if (WeGameCVHelper.FindStartGameButton(out buttonRect, image))
            {
                isUpdate = false;
                return true;
            }
            return false;
        }
        #region Tools
        /// <summary>
        /// 删除左右指定数量的字符
src/RichCreator/MainWindow.xaml.cs
@@ -191,23 +191,7 @@
            MessageBox.Show("配置更新成功");
        }
        #endregion
        private ZTPoint GetRolePosition()
        {
            System.Drawing.Bitmap bitmap = ScreenCapture.Instance.CaptureScreen();
            //原图
            Image<Rgb, byte> image = new Image<Rgb, byte>(bitmap);
            //色彩hsv
            Image<Hsv, byte> hsvImage = new Image<Hsv, byte>(image.Width, image.Height);
            CvInvoke.CvtColor(image, hsvImage, Emgu.CV.CvEnum.ColorConversion.Rgb2Hsv);
            hsvImage = hsvImage.GetSubRect(new System.Drawing.Rectangle(0, 0, 1280, 720));
            return DnfCVHelper.FindRole(hsvImage, new ZTRectangle(0, 0, 1280, 720));
        }
        /// <summary>
        /// 测速
@@ -285,13 +269,9 @@
                    }
                    Thread.Sleep(500);
                }
                G.Instance.InfoWriter($"测试技能发放完成");
            });
        }
        
        private ZTPoint rolePosition = ZTPoint.Empty;
        /// <summary>
        /// 读取角色位置
        /// </summary>
@@ -305,10 +285,10 @@
                Thread.Sleep(1000);
                Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
                CvInvoke.CvtColor(image, hsvImage, Emgu.CV.CvEnum.ColorConversion.Rgb2Hsv);
                rolePosition = DnfCVHelper.FindRole(hsvImage, gameRect);
                ZTPoint rolePosition = DnfCVHelper.FindRole(hsvImage, gameRect);
                G.Instance.InfoWriter($"角色位置读取成功:{rolePosition}");
                G.Instance.InfoWriter($"角色位置读取成功,CBPosition:{rolePosition},Half Position:{DnfRole.CBToHalfPosition(rolePosition)},Foot Position:{DnfRole.CBToFootPosition(rolePosition)}");
            });
        }
@@ -317,10 +297,14 @@
        /// </summary>
        private void TestToNextDoor()
        {
            HouseInfo house = new HouseInfo(0, MapType.Kalete, false, null);
            ZTRectangle gameRect = ZTRectangle.Empty;
            WindowUtils.GetDnfRect(out gameRect);
            HouseInfo house = new HouseInfo(1, MapType.Kalete, false, null,null);
            DnfRole role = new DnfRole(gameRect);
            role.SetHouse(house);
            Image<Hsv, byte> hsvImage = new Image<Hsv, byte>(gameRect.End.X - gameRect.Start.X, gameRect.End.Y - gameRect.Start.Y );
            Task.Run(() => {
                WindowUtils.SetDnfToTop();
@@ -339,26 +323,17 @@
                    G.Instance.InfoWriter("找不到定位点");
                    return;
                }
                
                ZTPoint rolePosition = DnfCVHelper.FindRole(hsvImage, gameRect);
                ZTPoint start=house.ScreenToMapCoordinate(rolePosition, locationCoor);
                role.UpdatePosition(rolePosition);
                DnfRole role = new DnfRole(gameRect);
                Int32 doorIndex = 0;
                List<ZTPoint> paths=house.FindDoorPath(out doorIndex,start);
                ZTPoint last = start;
                for (int i = 0; i < paths.Count; i++)
                {
                    //移动
                    ZTPoint distance = paths[i].Sub(last);
                    last = paths[i];
                    role.SyncMove(distance);
                }
                ZTPoint start=house.ScreenToMapCoordinate(DnfRole.CBToHalfPosition(rolePosition), locationCoor);
                
                ZTPoint roleFootPosition = house.ScreenToMapCoordinate(role.Position, locationCoor);
                ZTPoint ngp = DnfRole.HalfToFootPosition(house.HousePathInfo.NextGates[0].Point);
                role.MoveToMapPoint(roleFootPosition, ngp);
                G.Instance.InfoWriter($"测试进入下一关的门完成");
            });
src/RichCreator/Maps/Kalete/KaleteMap.cs
@@ -9,6 +9,7 @@
using RichCreator.Utility.Maps;
using RichCreator.Utility.Structs;
using RichCreator.Utility.Utilitys;
using RichCreator.Utilitys;
using System;
using System.Collections.Generic;
using System.Threading;
@@ -18,12 +19,11 @@
    /// <summary>
    /// 卡勒特地图
    /// </summary>
    public class KaleteMap : MapInfo
    public class KaleteMap : ShikongzhimenMapBase
    {
        public KaleteMap(ZTRectangle gameRect, CancellationToken cancelToken) : base(MapType.Lingdong, gameRect, cancelToken)
        {
            this.MiniMap = new KaleteMiniMap(gameRect);
            this.Role = new DnfRole(gameRect);
        }
        /// <summary>
@@ -32,36 +32,28 @@
        /// NextIndex=-2,出错
        /// </summary>
        private static readonly HouseInfo[] Houses = new HouseInfo[] {
            new HouseInfo (0 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Right } },
            new HouseInfo (1 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Bottom } },
            new HouseInfo (2 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Left } },
            new HouseInfo (3 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Bottom } },
            new HouseInfo (4 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Bottom } },
            new HouseInfo (5 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Left } },
            new HouseInfo (6 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Right } },
            new HouseInfo (7 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Right } },
            new HouseInfo (8 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-148,DoorDirection=new[]{Direction.Bottom } },
            new HouseInfo (9 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-300,DoorDirection=new[]{Direction.Left} },
            new HouseInfo (10,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Bottom } },
            new HouseInfo (11,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Right } },
            new HouseInfo (12,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-220,DoorDirection=new[]{Direction.Bottom } },
            new HouseInfo (13,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-320,DoorDirection=new[]{Direction.Left } },
            new HouseInfo (14,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-320,DoorDirection=new[]{Direction.Right } },
            new HouseInfo (15,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Right } },
            new HouseInfo (16,MapType.Lingdong,true ,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Up } },
            new HouseInfo (17,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Left } },
            new HouseInfo (18,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Up } },
            new HouseInfo (19,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Up } }
            new HouseInfo (0 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (1 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (2 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (3 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (4 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (5 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (6 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (7 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (8 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},new int[]{20,21,22,23 }),
            new HouseInfo (9 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (10,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (11,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (12,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (13,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (14,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (15,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (16,MapType.Kalete,true ,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (17,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (18,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (19,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null)
        };
        /// <summary>
        /// 角色
        /// </summary>
        public DnfRole Role { get; set; }
        private Int32 runningStep = RunningStep.None;
        /// <summary>
@@ -184,70 +176,49 @@
            switch (houseIndex)
            {
                case 0:
                    this.Role.SyncMove(new ZTPoint(550, 0));
                    this.Role.ReleaseSkill(HIDCode.R, 1000);
                    this.Role.ReleaseSkill(HIDCode.E, 1000);
                    this.Role.SyncMove(new ZTPoint(297, 0));
                    this.Role.ReleaseSkill(HIDCode.R);
                    this.Role.ReleaseSkill(HIDCode.E);
                    break;
                case 1:
                    this.Role.SyncMove(new ZTPoint(300, 0));
                    this.Role.ReleaseSkill(HIDCode.Q, 1300);
                    this.Role.ReleaseSkill(HIDCode.W, 1000);
                    this.Role.SyncMove(new ZTPoint(241, 0));
                    this.Role.ReleaseSkill(HIDCode.Q);
                    this.Role.ReleaseSkill(HIDCode.W);
                    break;
                case 6:
                    this.Role.SyncMove(new ZTPoint(448, 94));
                    this.Role.ReleaseSkill(HIDCode.G, 0);
                    this.Role.SyncMove(new ZTPoint(139, 90));
                    this.Role.ReleaseSkill(HIDCode.G);
                    break;
                case 7:
                    this.Role.SyncMove(new ZTPoint(530, 0));
                    this.Role.ReleaseSkill(HIDCode.R, 0);
                    this.Role.SyncMove(new ZTPoint(330, 90));
                    this.Role.ReleaseSkill(HIDCode.R);
                    break;
                case 8:
                    this.Role.SyncMove(new ZTPoint(453, 0));
                    this.Role.ReleaseSkill(HIDCode.H, 0);
                    this.Role.SyncMove(new ZTPoint(305, 0));
                    this.Role.ReleaseSkill(HIDCode.H);
                    break;
                case 13:
                    this.Role.SyncMove(new ZTPoint(-100, 203));
                    this.Role.ReleaseSkill(HIDCode.Q, 1300);
                    this.Role.ReleaseSkill(HIDCode.E, 0);
                    this.Role.SyncMove(new ZTPoint(-104, 82));
                    this.Role.ReleaseSkill(HIDCode.Q);
                    this.Role.ReleaseSkill(HIDCode.E);
                    break;
                case 12:
                    this.Role.SyncMove(new ZTPoint(-851, 120));
                    this.Role.ReleaseSkill(HIDCode.T, 0);
                    this.Role.SyncMove(new ZTPoint(-550, 90));
                    this.Role.ReleaseSkill(HIDCode.T);
                    break;
                case 17:
                    this.Role.SyncMove(new ZTPoint(-306, 130));
                    this.Role.ReleaseSkill(HIDCode.Q, 1300);
                    this.Role.ReleaseSkill(HIDCode.F, 0);//用w代替
                    this.Role.SyncMove(new ZTPoint(-200, 60));
                    this.Role.ReleaseSkill(HIDCode.Q);
                    this.Role.ReleaseSkill(HIDCode.F);//用w代替
                    break;
                case 16:
                    this.Role.SyncMove(new ZTPoint(-385, 0));
                    this.Role.ReleaseSkill(HIDCode.Y, 0);
                    this.Role.SyncMove(new ZTPoint(-174, 0));
                    this.Role.ReleaseSkill(HIDCode.Y);
                    break;
            }
        }
        /// <summary>
        /// esc退到城镇
        /// </summary>
        private void ExitToTown()
        {
            G.Instance.DebugWriter("返回城镇");
            Utility.Structs.ZTPoint point = new Utility.Structs.ZTPoint(this.GameRect.End.X - 124, this.GameRect.Start.Y + 146);
            G.Instance.InputControl.MoveToAndClick(point);
            Thread.Sleep(5000);
        }
        /// <summary>
        /// 点击再次挑战
        /// </summary>
        private void ReplayGame()
        {
            G.Instance.DebugWriter("重新挑战");
            Utility.Structs.ZTPoint point = new Utility.Structs.ZTPoint(this.GameRect.End.X - 132, this.GameRect.Start.Y + 90);
            G.Instance.InputControl.MoveToAndClick(point);
        }
        /// <summary>
        /// 刷房间
        /// </summary>
@@ -261,7 +232,7 @@
                G.Instance.InfoWriter("未找到进入凛冬");
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("进入凛冬");
            G.Instance.InfoWriter("进入卡勒特");
            Int32 preHouseIndex = -1;
            Int32 houseIndex = -1;
@@ -287,8 +258,8 @@
                HouseInfo houseInfo = Houses[houseIndex];
                this.Role.SetHouse(houseInfo);
                DateTime startTime = DateTime.Now;
                KillMonsterStateMachine kmsm = new KillMonsterStateMachine(this, houseInfo,this.Role, preHouseIndex, this.runningStep);
                ZTResult smresult = kmsm.Work(5 * 60 * 1000);
                KillMonsterStateMachine kmsm = new KillMonsterStateMachine(this, houseInfo,this.Role);
                ZTResult smresult = kmsm.Work(2 * 60 * 1000,preHouseIndex,this.runningStep);
                Int32 roomTotalSecond = (Int32)(DateTime.Now - startTime).TotalSeconds;
                G.Instance.InfoWriter("房间刷完,用时:" + (roomTotalSecond / 60) + "分" + (roomTotalSecond % 60) + "秒");
@@ -310,113 +281,7 @@
                }
            }
        }
        /// <summary>
        /// 步行到素喃
        /// </summary>
        /// <returns></returns>
        private bool MoveToSunan()
        {
            bool result = FuncUtils.NoChangeRetryCallWrap(
               () =>
               {
                   WindowUtils.SetDnfToTop();
                   CloseAllAlertWindow(this.CancelToken, this.GameRect);
                   //向下走出赛丽亚的房间  ,走向素喃
                   G.Instance.InputControl.PressKey(2000, HIDCode.DownArrow);
               },
               () =>
               {
                   G.Instance.InfoWriter("检测是否进入素喃");
                   result = FuncUtils.TimeoutCancelableWrap(10000, this.CancelToken, () =>
                   {
                       return LindongCVHelper.IsInSunan(this.GameRect);
                   });
                   if (!result)
                   {
                       G.Instance.InfoWriter("进入素喃失败");
                       return false;
                   }
                   G.Instance.InfoWriter("进入素喃成功");
                   return true;
               },
               () =>
               {
                   return DnfCVHelper.IsInSaiLiYaHouse(this.GameRect);
               });
            return result;
        }
        /// <summary>
        /// 步行至时空之门
        /// </summary>
        /// <returns></returns>
        private bool MoveToShikongzhimen()
        {
            bool result = FuncUtils.NoChangeRetryCallWrap(() =>
             {
                //打开地图
                ZTPoint mapButtonPosition = new ZTPoint(this.GameRect.End.X - 14, this.GameRect.Start.Y + 16);
                 G.Instance.InputControl.MoveToAndClick(mapButtonPosition);
                 Thread.Sleep(1000);
                //点到副本之前的地图
                ZTPoint mapPrePosition = new ZTPoint(this.GameRect.Start.X + 382, this.GameRect.Start.Y + 252);
                 G.Instance.InputControl.MoveToAndClick(mapPrePosition);
                //关闭地图框
                CloseAllAlertWindow(this.CancelToken, this.GameRect);
             },
            () =>
            {
                //检测是否进入时空之门
                return FuncUtils.TimeoutCancelableWrap(15000, this.CancelToken, () =>
                  {
                      CloseAllAlertWindow(this.CancelToken, this.GameRect);
                      return LindongCVHelper.IsInShikongzhimen(this.GameRect);
                  });
            },
            () =>
            {
                //检测是否还在素喃
                return FuncUtils.TimeoutCancelableWrap(3000, this.CancelToken, () =>
                {
                    CloseAllAlertWindow(this.CancelToken, this.GameRect);
                    return LindongCVHelper.IsInSunan(this.GameRect);
                });
            });
            Thread.Sleep(5000);
            return result;
        }
        /// <summary>
        /// 步行到任务选择和正式开打页面
        /// </summary>
        /// <returns></returns>
        private bool MoveToChoiceTaskPage()
        {
            bool result = false;
            //右走进选择副本界面
            G.Instance.InputControl.PressKey(1500, HIDCode.LeftArrow);
            G.Instance.InfoWriter("检测是否打开选择副本界面");
            result = FuncUtils.TimeoutCancelableWrap(10000, this.CancelToken, () =>
            {
                Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
                return LindongCVHelper.IsInChoiceTaskPage(image, this.GameRect);
            });
            if (!result)
            {
                G.Instance.InfoWriter("进入打开选择副本界面失败");
                return false;
            }
            G.Instance.InfoWriter("打开选择副本界面成功");
            return true;
        }
        /// <summary>
        /// 进入指定房间
        /// </summary>
@@ -424,7 +289,7 @@
        private bool IntoHouse()
        {
            bool result = false;
            //选择凛冬
            //选择卡勒特之初
            G.Instance.InfoWriter("开始选择卡勒特之初");
            Int32 nandu = 0;
@@ -456,32 +321,6 @@
        }
        /// <summary>
        /// 关闭所有弹出窗
        /// </summary>
        /// <param name="cancelToken"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        private void CloseAllAlertWindow(CancellationToken cancelToken, ZTRectangle gameRect)
        {
            while (!cancelToken.IsCancellationRequested)
            {
                //G.Instance.InputControl.MoveTo(gameRect.Start.X,gameRect.Start.Y, false, false, false);
                //Thread.Sleep(10);
                //截图
                Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
                ZTRectangle closeButtonRect = ZTRectangle.Empty;
                if (!DnfCVHelper.GetAlertWindow(out closeButtonRect, image, gameRect))
                {
                    return;
                }
                G.Instance.InputControl.MoveToAndClick(closeButtonRect.GetCenterPoint());
                Thread.Sleep(500);
            }
        }
        /// <summary>
        /// 选择凛冬
        /// </summary>
        /// <returns></returns>
@@ -494,7 +333,7 @@
                return true;
            }
            G.Instance.InputControl.MoveToAndClick(new ZTPoint(this.GameRect.Start.X + 819, this.GameRect.Start.Y + 181));
            G.Instance.InputControl.MoveToAndClick(new ZTPoint(this.GameRect.Start.X + 568, this.GameRect.Start.Y + 141));
            Thread.Sleep(5000);
            image = ScreenCapture.Instance.CaptureScreenReturnImage();
            if (KaleteCVHelper.GetChoiceKaleteNandu(out nandu, image, this.GameRect))
@@ -542,75 +381,5 @@
            return false;
        }
        /// <summary>
        /// 出售装备
        /// </summary>
        /// <param name="saleButtonRect"></param>
        private bool SaleEquipment()
        {
            //卖装备并关闭商店
            ZTRectangle closeButtonRect = ZTRectangle.Empty;
            ZTRectangle saleButtonRect = ZTRectangle.Empty;
            if (!DnfCVHelper.HasSaleButton(out saleButtonRect, out closeButtonRect, this.GameRect))
            {
                return false;
            }
            //卖装备
            G.Instance.InfoWriter("出售装备");
            G.Instance.InputControl.MoveToAndClick(saleButtonRect.GetCenterPoint());
            //得到装备文字位置
            ZTRectangle equipmentTextRect = ZTRectangle.Empty;
            bool result = FuncUtils.TimeoutCancelableWrap(5000, this.CancelToken, () =>
            {
                Int32 status = 0;
                if (DnfCVHelper.GetEquipmentSelectStatus(out equipmentTextRect, out status, this.GameRect))
                {
                    if (status == 1)
                    {
                        return true;
                    }
                    G.Instance.InputControl.MoveToAndClick(equipmentTextRect.GetCenterPoint());
                }
                return false;
            });
            if (!result)
            {
                G.Instance.InfoWriter("装备文字未取到");
                return false;
            }
            //开始点,每格步进30
            ZTPoint startPoint = new Utility.Structs.ZTPoint(equipmentTextRect.End.X - 30, equipmentTextRect.End.Y + 9);
            List<Int32> points = DnfCVHelper.GetEquipmentIndexs(startPoint);
            for (int i = 0; i < points.Count; i++)
            {
                Int32 index = points[i];
                int row = index / 8;
                int col = index % 8;
                int x = col * 30 + 15;
                int y = row * 30 + 15;
                //点窗格
                G.Instance.InputControl.MoveToAndClick(new Utility.Structs.ZTPoint(startPoint.X + x, startPoint.Y + y));
                Thread.Sleep(500);
                //点确定
                G.Instance.InputControl.Move(0, 0, true, false, false);
                Thread.Sleep(RandomUtils.MouseClickDuration);
                G.Instance.InputControl.Move(0, 0, false, false, false);
                Thread.Sleep(RandomUtils.MouseClickDuration);
            }
            G.Instance.DebugWriter("equipment:" + ZTImage.Utils.ConcatString(points.ToArray(), ","));
            Thread.Sleep(RandomUtils.KeyPressDuration);
            G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.Escape);
            return true;
        }
    }
}
src/RichCreator/Maps/Kalete/KaleteMiniMap.cs
@@ -16,7 +16,7 @@
{
    public class KaleteMiniMap : IMiniMap
    {
        public KaleteMiniMap(ZTRectangle gameRect):base(gameRect, new ZTPoint(1183, 47))
        public KaleteMiniMap(ZTRectangle gameRect):base(gameRect, new ZTPoint(703, 47))
        {}
        
src/RichCreator/Maps/Kalete/OutOfBounds.cs
File was deleted
src/RichCreator/Maps/Lindong/LindongMap.cs
@@ -20,47 +20,39 @@
    /// <summary>
    /// 凛冬地图
    /// </summary>
    public class LindongMap : MapInfo
    public class LindongMap : ShikongzhimenMapBase
    {
        public LindongMap(ZTRectangle gameRect, CancellationToken cancelToken) :base(MapType.Lingdong,gameRect,cancelToken)
        {
            this.MiniMap = new LindongMiniMap(gameRect);
            this.Role = new DnfRole(gameRect);
        }
        /// <summary>
        /// 角色
        /// </summary>
        public DnfRole Role { get; set; }
        /// <summary>
        /// 地图的所有房间
        /// NextIndex=-1,完成
        /// NextIndex=-2,出错
        /// </summary>
        private static readonly HouseInfo[] Houses = new HouseInfo[] {
            new HouseInfo (0 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Right } },
            new HouseInfo (1 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Bottom } },
            new HouseInfo (2 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Left } },
            new HouseInfo (3 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Left } },
            new HouseInfo (4 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Bottom } },
            new HouseInfo (5 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Left } },
            new HouseInfo (6 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Left } },
            new HouseInfo (7 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Left } },
            new HouseInfo (8 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-148,DoorDirection=new[]{Direction.Right,Direction.Bottom } },
            new HouseInfo (9 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-300,DoorDirection=new[]{Direction.Right,Direction.Bottom } },
            new HouseInfo (10,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Bottom } },
            new HouseInfo (11,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Left } },
            new HouseInfo (12,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-220,DoorDirection=new[]{Direction.Right } },
            new HouseInfo (13,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-320,DoorDirection=new[]{Direction.Right } },
            new HouseInfo (14,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-320,DoorDirection=new[]{Direction.Right } },
            new HouseInfo (15,MapType.Lingdong,true ,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Right } },
            new HouseInfo (16,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Up } },
            new HouseInfo (17,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Up } },
            new HouseInfo (18,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Up } },
            new HouseInfo (19,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Up } }
            new HouseInfo (0 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (1 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (2 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (3 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (4 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (5 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (6 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (7 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (8 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (9 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (10,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (11,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (12,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (13,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (14,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (15,MapType.Lingdong,true ,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (16,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (17,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (18,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
            new HouseInfo (19,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null)
        };
        
        private Int32 runningStep = RunningStep.None;
@@ -168,405 +160,26 @@
                }
            }, 10);
            //if (!findResult)
            //{
            //    G.Instance.InfoWriter("未找到进入凛冬的文字");
            //}
            //else
            //{
            //    G.Instance.InfoWriter("进入凛冬");
            //}
            if (!findResult)
            {
                G.Instance.InfoWriter("未找到进入凛冬的文字");
            }
            else
            {
                G.Instance.InfoWriter("进入凛冬");
            }
            return findResult;
        }
        /// <summary>
        /// esc退到城镇
        /// 进入每个房间前的工作
        /// </summary>
        private void ExitToTown()
        {
            G.Instance.DebugWriter("返回城镇");
            Utility.Structs.ZTPoint point = new Utility.Structs.ZTPoint(this.GameRect.End.X - 124, this.GameRect.Start.Y + 146);
            G.Instance.InputControl.MoveToAndClick(point);
            Thread.Sleep(5000);
        }
        /// <summary>
        /// 点击再次挑战
        /// </summary>
        private void ReplayGame()
        {
            G.Instance.DebugWriter("重新挑战");
            Utility.Structs.ZTPoint point = new Utility.Structs.ZTPoint(this.GameRect.End.X - 132, this.GameRect.Start.Y + 90);
            G.Instance.InputControl.MoveToAndClick(point);
        }
        /// <summary>
        /// 刷房间
        /// </summary>
        /// <returns></returns>
        private ZTResult KillMonster()
        {
            bool ret = false;
            if (!IsEntryMap())
            {
                G.Instance.InfoWriter("未找到进入凛冬");
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("进入凛冬");
            Int32 preHouseIndex = -1;
            Int32 houseIndex = -1;
            //技能加成
            G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.Space);
            //循环刷房间
            while (true)
            {
                preHouseIndex = houseIndex;
                //看房间号
                ret = this.MiniMap.GetCurrentHouseIndexWaitTimeout(out houseIndex, null, this.CancelToken, 3 * 1000);
                if (!ret)
                {
                    G.Instance.InfoWriter("未找到人物所在房间");
                    return ZTResult.Failed;
                }
                G.Instance.InfoWriter("进入房间->" + houseIndex.ToString());
                HouseInfo houseInfo = Houses[houseIndex];
                this.Role.SetHouse(houseInfo);
                DateTime startTime = DateTime.Now;
                KillMonsterStateMachine kmsm = new KillMonsterStateMachine(this, houseInfo,this.Role, preHouseIndex,this.runningStep);
                ZTResult smresult = kmsm.Work( 5 * 60 * 1000);
                Int32 roomTotalSecond = (Int32)(DateTime.Now - startTime).TotalSeconds;
                G.Instance.InfoWriter("房间刷完,用时:" + (roomTotalSecond / 60) + "分" + (roomTotalSecond % 60) + "秒");
                runningStep = RunningStep.None;
                if (smresult == ZTResult.Success)
                {
                    if (houseInfo.IsEnd)
                    {
                        //所有房间刷完
                        return ZTResult.Success;
                    }
                    //刷其它房间
                    continue;
                }
                else
                {
                    return smresult;
                }
            }
        }
        /// <summary>
        /// 步行到素喃
        /// </summary>
        /// <returns></returns>
        private bool MoveToSunan()
        {
            bool result = FuncUtils.NoChangeRetryCallWrap(
               () =>
               {
                   WindowUtils.SetDnfToTop();
                   CloseAllAlertWindow(this.CancelToken, this.GameRect);
                   //向下走出赛丽亚的房间  ,走向素喃
                   G.Instance.InputControl.PressKey(2000, HIDCode.DownArrow);
               },
               () =>
               {
                   G.Instance.InfoWriter("检测是否进入素喃");
                   result = FuncUtils.TimeoutCancelableWrap(10000, this.CancelToken, () => {
                       return LindongCVHelper.IsInSunan(this.GameRect);
                   });
                   if (!result)
                   {
                       G.Instance.InfoWriter("进入素喃失败");
                       return false;
                   }
                   G.Instance.InfoWriter("进入素喃成功");
                   return true;
               },
               () =>
               {
                   return DnfCVHelper.IsInSaiLiYaHouse(this.GameRect);
               });
            return result;
        }
        /// <summary>
        /// 步行至时空之门
        /// </summary>
        /// <returns></returns>
        private bool MoveToShikongzhimen()
        {
            bool result= FuncUtils.NoChangeRetryCallWrap(() =>
            {
                //打开地图
                Utility.Structs.ZTPoint mapButtonPosition = new Utility.Structs.ZTPoint(this.GameRect.End.X - 14, this.GameRect.Start.Y + 16);
                G.Instance.InputControl.MoveToAndClick(mapButtonPosition);
                Thread.Sleep(1000);
                //点到副本之前的地图
                Utility.Structs.ZTPoint mapPrePosition = new Utility.Structs.ZTPoint(this.GameRect.Start.X + 382, this.GameRect.Start.Y + 252);
                G.Instance.InputControl.MoveToAndClick(mapPrePosition);
                //关闭地图框
                CloseAllAlertWindow(this.CancelToken, this.GameRect);
            },
            () =>
            {
                //检测是否进入时空之门
                return FuncUtils.TimeoutCancelableWrap(15000, this.CancelToken, () =>
                  {
                      CloseAllAlertWindow(this.CancelToken, this.GameRect);
                      return LindongCVHelper.IsInShikongzhimen(this.GameRect);
                  });
            },
            () =>
            {
                //检测是否还在素喃
                return FuncUtils.TimeoutCancelableWrap(3000, this.CancelToken, () => {
                    CloseAllAlertWindow(this.CancelToken, this.GameRect);
                    return LindongCVHelper.IsInSunan(this.GameRect);
                });
            });
            Thread.Sleep(5000);
            return result;
        }
        /// <summary>
        /// 步行到任务选择和正式开打页面
        /// </summary>
        /// <returns></returns>
        private bool MoveToChoiceTaskPage()
        {
            bool result = false;
            //右走进选择副本界面
            G.Instance.InputControl.PressKey(1500, HIDCode.LeftArrow);
            G.Instance.InfoWriter("检测是否打开选择副本界面");
            result = FuncUtils.TimeoutCancelableWrap(10000, this.CancelToken, () => {
                Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
                return LindongCVHelper.IsInChoiceTaskPage(image, this.GameRect);
            });
            if (!result)
            {
                G.Instance.InfoWriter("进入打开选择副本界面失败");
                return false;
            }
            G.Instance.InfoWriter("打开选择副本界面成功");
            return true;
        }
        /// <summary>
        /// 进入指定房间
        /// </summary>
        /// <returns></returns>
        private bool IntoTaskRoom()
        {
            bool result = false;
            //选择凛冬
            G.Instance.InfoWriter("开始选择凛冬");
            Int32 nandu = 0;
            if (!SelectLindong(out nandu))
            {
                G.Instance.InfoWriter("选择凛冬失败");
                return false;
            }
            G.Instance.InfoWriter("选择凛冬成功,难度:"+nandu);
            if (nandu != 4)
            {
                G.Instance.InfoWriter("开始选择难度");
                result=SelectNandu(nandu);
                if (!result)
                {
                    G.Instance.InfoWriter("选择难度失败");
                    return false;
                }
                G.Instance.InfoWriter("选择难度成功");
            }
            //开始
            G.Instance.InputControl.PressKey(80, HIDCode.Space);
            return true;
        }
        /// <summary>
        /// 关闭所有弹出窗
        /// </summary>
        /// <param name="cancelToken"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        private void CloseAllAlertWindow(CancellationToken cancelToken, ZTRectangle gameRect)
        {
            while (!cancelToken.IsCancellationRequested)
            {
                //G.Instance.InputControl.MoveTo(gameRect.Start.X,gameRect.Start.Y, false, false, false);
                //Thread.Sleep(10);
                //截图
                Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
                ZTRectangle closeButtonRect = ZTRectangle.Empty;
                if (!DnfCVHelper.GetAlertWindow(out closeButtonRect, image, gameRect))
                {
                    return;
                }
                G.Instance.InputControl.MoveToAndClick(closeButtonRect.GetCenterPoint());
                Thread.Sleep(500);
            }
        }
        /// <summary>
        /// 选择凛冬
        /// </summary>
        /// <returns></returns>
        private bool SelectLindong(out Int32 nandu)
        {
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            if (LindongCVHelper.GetChoiceLingdongNandu(out nandu, image, this.GameRect))
            {
                return true;
            }
            G.Instance.InputControl.MoveToAndClick(new Utility.Structs.ZTPoint(this.GameRect.Start.X + 508, this.GameRect.Start.Y + 552));
            Thread.Sleep(5000);
            image = ScreenCapture.Instance.CaptureScreenReturnImage();
            if (LindongCVHelper.GetChoiceLingdongNandu(out nandu, image, this.GameRect))
            {
                return true;
            }
            return false;
        }
        /// <summary>
        /// 选择难度
        /// </summary>
        /// <param name="rightCan"></param>
        /// <param name="leftCan"></param>
        /// <returns></returns>
        private bool SelectNandu(Int32 nandu)
        {
            Int32 count = 4 - nandu;
            for (int i = 0; i < Math.Abs(count); i++)
            {
                if (count < 0)
                {
                    G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.LeftArrow);
                }
                else
                {
                    G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.RightArrow);
                }
                Thread.Sleep(400);
            }
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            if (!LindongCVHelper.GetChoiceLingdongNandu(out nandu, image, this.GameRect))
            {
                return false;
            }
            if (nandu == 4)
            {
                return true;
            }
            return false;
        }
        /// <summary>
        /// 出售装备
        /// </summary>
        /// <param name="saleButtonRect"></param>
        private bool SaleEquipment()
        {
            //卖装备并关闭商店
            ZTRectangle closeButtonRect = ZTRectangle.Empty;
            ZTRectangle saleButtonRect = ZTRectangle.Empty;
            if (!DnfCVHelper.HasSaleButton(out saleButtonRect, out closeButtonRect, this.GameRect))
            {
                return false;
            }
            //卖装备
            G.Instance.InfoWriter("出售装备");
            G.Instance.InputControl.MoveToAndClick(saleButtonRect.GetCenterPoint());
            //得到装备文字位置
            ZTRectangle equipmentTextRect = ZTRectangle.Empty;
            bool result = FuncUtils.TimeoutCancelableWrap(5000, this.CancelToken, () => {
                Int32 status = 0;
                if (DnfCVHelper.GetEquipmentSelectStatus(out equipmentTextRect, out status, this.GameRect))
                {
                    if (status == 1)
                    {
                        return true;
                    }
                    G.Instance.InputControl.MoveToAndClick(equipmentTextRect.GetCenterPoint());
                }
                return false;
            });
            if (!result)
            {
                G.Instance.InfoWriter("装备文字未取到");
                return false;
            }
            //开始点,每格步进30
            ZTPoint startPoint = new Utility.Structs.ZTPoint( equipmentTextRect.End.X-30, equipmentTextRect.End.Y+9);
            List<Int32> points = DnfCVHelper.GetEquipmentIndexs(startPoint);
            for (int i = 0; i < points.Count; i++)
            {
                Int32 index = points[i];
                int row = index / 8;
                int col = index % 8;
                int x = col * 30+15;
                int y = row * 30+15;
                //点窗格
                G.Instance.InputControl.MoveToAndClick(new Utility.Structs.ZTPoint(startPoint.X + x, startPoint.Y + y));
                Thread.Sleep(500);
                //点确定
                G.Instance.InputControl.Move(0, 0, true, false, false);
                Thread.Sleep(RandomUtils.MouseClickDuration);
                G.Instance.InputControl.Move(0, 0, false, false, false);
                Thread.Sleep(RandomUtils.MouseClickDuration);
            }
            G.Instance.DebugWriter("equipment:" +ZTImage.Utils.ConcatString(points.ToArray(),","));
            Thread.Sleep(RandomUtils.KeyPressDuration);
            G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.Escape);
            return true;
        }
        /// <param name="houseIndex"></param>
        /// <param name="preHouseIndex"></param>
        public override void EntryHousePrework(int houseIndex, int preHouseIndex)
        {
            G.Instance.InfoWriter("in lingdong");
            //移动和发招
            switch (houseIndex)
            {
@@ -655,5 +268,170 @@
            }
        }
        /// <summary>
        /// 刷房间
        /// </summary>
        /// <returns></returns>
        private ZTResult KillMonster()
        {
            bool ret = false;
            if (!IsEntryMap())
            {
                G.Instance.InfoWriter("未找到进入凛冬");
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("进入凛冬");
            Int32 preHouseIndex = -1;
            Int32 houseIndex = -1;
            //技能加成
            G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.Space);
            //循环刷房间
            while (true)
            {
                preHouseIndex = houseIndex;
                //看房间号
                ret = this.MiniMap.GetCurrentHouseIndexWaitTimeout(out houseIndex, null, this.CancelToken, 3 * 1000);
                if (!ret)
                {
                    G.Instance.InfoWriter("未找到人物所在房间");
                    return ZTResult.Failed;
                }
                G.Instance.InfoWriter("进入房间->" + houseIndex.ToString());
                HouseInfo houseInfo = Houses[houseIndex];
                this.Role.SetHouse(houseInfo);
                DateTime startTime = DateTime.Now;
                KillMonsterStateMachine kmsm = new KillMonsterStateMachine(this, houseInfo,this.Role);
                ZTResult smresult = kmsm.Work( 5 * 60 * 1000,preHouseIndex,this.runningStep);
                Int32 roomTotalSecond = (Int32)(DateTime.Now - startTime).TotalSeconds;
                G.Instance.InfoWriter("房间刷完,用时:" + (roomTotalSecond / 60) + "分" + (roomTotalSecond % 60) + "秒");
                runningStep = RunningStep.None;
                if (smresult == ZTResult.Success)
                {
                    if (houseInfo.IsEnd)
                    {
                        //所有房间刷完
                        return ZTResult.Success;
                    }
                    //刷其它房间
                    continue;
                }
                else
                {
                    return smresult;
                }
            }
        }
        /// <summary>
        /// 进入指定房间
        /// </summary>
        /// <returns></returns>
        private bool IntoTaskRoom()
        {
            bool result = false;
            //选择凛冬
            G.Instance.InfoWriter("开始选择凛冬");
            Int32 nandu = 0;
            if (!SelectLindong(out nandu))
            {
                G.Instance.InfoWriter("选择凛冬失败");
                return false;
            }
            G.Instance.InfoWriter("选择凛冬成功,难度:" + nandu);
            if (nandu != 4)
            {
                G.Instance.InfoWriter("开始选择难度");
                result = SelectNandu(nandu);
                if (!result)
                {
                    G.Instance.InfoWriter("选择难度失败");
                    return false;
                }
                G.Instance.InfoWriter("选择难度成功");
            }
            //开始
            G.Instance.InputControl.PressKey(80, HIDCode.Space);
            return true;
        }
        /// <summary>
        /// 选择凛冬
        /// </summary>
        /// <returns></returns>
        private bool SelectLindong(out Int32 nandu)
        {
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            if (LindongCVHelper.GetChoiceLingdongNandu(out nandu, image, this.GameRect))
            {
                return true;
            }
            G.Instance.InputControl.MoveToAndClick(new Utility.Structs.ZTPoint(this.GameRect.Start.X + 313, this.GameRect.Start.Y + 462));
            Thread.Sleep(5000);
            image = ScreenCapture.Instance.CaptureScreenReturnImage();
            if (LindongCVHelper.GetChoiceLingdongNandu(out nandu, image, this.GameRect))
            {
                return true;
            }
            return false;
        }
        /// <summary>
        /// 选择难度
        /// </summary>
        /// <param name="rightCan"></param>
        /// <param name="leftCan"></param>
        /// <returns></returns>
        private bool SelectNandu(Int32 nandu)
        {
            Int32 count = 4 - nandu;
            for (int i = 0; i < Math.Abs(count); i++)
            {
                if (count < 0)
                {
                    G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.LeftArrow);
                }
                else
                {
                    G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.RightArrow);
                }
                Thread.Sleep(400);
            }
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            if (!LindongCVHelper.GetChoiceLingdongNandu(out nandu, image, this.GameRect))
            {
                return false;
            }
            if (nandu == 4)
            {
                return true;
            }
            return false;
        }
    }
}
src/RichCreator/Maps/Lindong/LindongMiniMap.cs
@@ -16,7 +16,7 @@
{
    public class LindongMiniMap : IMiniMap
    {
        public LindongMiniMap(ZTRectangle gameRect):base(gameRect, new ZTPoint(1201, 47))
        public LindongMiniMap(ZTRectangle gameRect):base(gameRect, new ZTPoint(721, 47))
        {}
src/RichCreator/Maps/Lindong/OutOfBounds.cs
@@ -8,6 +8,7 @@
using System.Text;
using System.Threading.Tasks;
using RichCreator.Dnf;
using RichCreator.Utility.Utilitys;
namespace RichCreator.Maps.Lindong
{
@@ -55,7 +56,7 @@
            switch (houseIndex)
            {
                case 5:
                    if (Utilitys.Utils.IsInRect(rolePosition, bounds[AREA_5Bound]))
                    if (GeoHelper.IsInRect(rolePosition, bounds[AREA_5Bound]))
                    {
                        areaID = AREA_5Bound;
                        return true;
src/RichCreator/Maps/ShikongzhimenMapBase.cs
New file
@@ -0,0 +1,130 @@
using Emgu.CV;
using Emgu.CV.Structure;
using RichCreator.Dnf;
using RichCreator.Utility;
using RichCreator.Utility.Captures;
using RichCreator.Utility.CV;
using RichCreator.Utility.InputControl;
using RichCreator.Utility.Maps;
using RichCreator.Utility.Structs;
using RichCreator.Utility.Utilitys;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace RichCreator.Maps
{
    public abstract class ShikongzhimenMapBase:MapInfo
    {
        public ShikongzhimenMapBase(MapType mapType, ZTRectangle gameRect, CancellationToken cancellationToken):base(mapType,gameRect,cancellationToken)
        { }
        /// <summary>
        /// 步行到素喃
        /// </summary>
        /// <returns></returns>
        protected bool MoveToSunan()
        {
            bool result = FuncUtils.NoChangeRetryCallWrap(
               () =>
               {
                   WindowUtils.SetDnfToTop();
                   CloseAllAlertWindowByX(this.CancelToken, this.GameRect);
                   //向下走出赛丽亚的房间  ,走向素喃
                   G.Instance.InputControl.PressKey(2000, HIDCode.DownArrow);
                   return true;
               },
               () =>
               {
                   G.Instance.InfoWriter("检测是否进入素喃");
                   result = FuncUtils.TimeoutCancelableWrap(10000, this.CancelToken, () => {
                       return ShikongzhimenCVHelper.IsInSunan(this.GameRect);
                   });
                   if (!result)
                   {
                       G.Instance.InfoWriter("进入素喃失败");
                       return false;
                   }
                   G.Instance.InfoWriter("进入素喃成功");
                   return true;
               },
               () =>
               {
                   return DnfCVHelper.IsInSaiLiYaHouse(this.GameRect);
               });
            return result;
        }
        /// <summary>
        /// 步行至时空之门
        /// </summary>
        /// <returns></returns>
        protected bool MoveToShikongzhimen()
        {
            bool result = FuncUtils.NoChangeRetryCallWrap(() =>
            {
                //打开地图
                Utility.Structs.ZTPoint mapButtonPosition = new Utility.Structs.ZTPoint(this.GameRect.Start.X + 782, this.GameRect.Start.Y + 16);
                G.Instance.InputControl.MoveToAndClick(mapButtonPosition);
                Thread.Sleep(1000);
                //点到副本之前的地图
                Utility.Structs.ZTPoint mapPrePosition = new Utility.Structs.ZTPoint(this.GameRect.Start.X + 143, this.GameRect.Start.Y + 197);
                G.Instance.InputControl.MoveToAndClick(mapPrePosition);
                Thread.Sleep(1000);
                //关闭地图框
                CloseAllAlertWindowByEsc(this.CancelToken, this.GameRect);
                return true;
            },
            () =>
            {
                //检测是否进入时空之门
                return FuncUtils.TimeoutCancelableWrap(15000, this.CancelToken, () =>
                {
                    CloseAllAlertWindowByX(this.CancelToken, this.GameRect);
                    return ShikongzhimenCVHelper.IsInShikongzhimen(this.GameRect);
                });
            },
            () =>
            {
                //检测是否还在素喃
                return FuncUtils.TimeoutCancelableWrap(3000, this.CancelToken, () => {
                    CloseAllAlertWindowByX(this.CancelToken, this.GameRect);
                    return ShikongzhimenCVHelper.IsInSunan(this.GameRect);
                });
            });
            Thread.Sleep(5000);
            return result;
        }
        /// <summary>
        /// 步行到任务选择和正式开打页面
        /// </summary>
        /// <returns></returns>
        protected bool MoveToChoiceTaskPage()
        {
            bool result = false;
            //右走进选择副本界面
            G.Instance.InputControl.PressKey(1500, HIDCode.LeftArrow);
            G.Instance.InfoWriter("检测是否打开选择副本界面");
            result = FuncUtils.TimeoutCancelableWrap(10000, this.CancelToken, () => {
                Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
                return ShikongzhimenCVHelper.IsInChoiceTaskPage(image, this.GameRect);
            });
            if (!result)
            {
                G.Instance.InfoWriter("进入打开选择副本界面失败");
                return false;
            }
            G.Instance.InfoWriter("打开选择副本界面成功");
            return true;
        }
    }
}
src/RichCreator/Maps/SkillSetting/SkillSettingMap.cs
@@ -111,7 +111,7 @@
            G.Instance.InfoWriter("技能摆放成功");
            CloseAllAlertWindow(this.CancelToken, this.GameRect);
            CloseAllAlertWindowByEsc(this.CancelToken, this.GameRect);
            return ZTResult.Success;
        }
@@ -129,7 +129,7 @@
            ZTRectangle innertitleRect=ZTRectangle.Empty, innerlvRect = ZTRectangle.Empty, innerupKeyRect = ZTRectangle.Empty, innerdownKeyRect = ZTRectangle.Empty;
            for (int i = 0; i < 2; i++)
            {
                CloseAllAlertWindow(this.CancelToken, this.GameRect);
                CloseAllAlertWindowByEsc(this.CancelToken, this.GameRect);
                G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration,HIDCode.K);
                bool result=FuncUtils.TimeoutCancelableWrap(5000, this.CancelToken, () => {
@@ -147,12 +147,12 @@
                    {
                        //如果当前选的是tp技能学习(tp技能学习的右侧滚动条跟sp右侧的不一样),则:
                        //选中sp技能学习
                        Utility.Structs.ZTPoint spPoint = new Utility.Structs.ZTPoint(lvRect.End.X + 55, lvRect.Start.Y - 80);
                        Utility.Structs.ZTPoint spPoint = new Utility.Structs.ZTPoint(this.GameRect.Start.X+65, this.GameRect.Start.Y+105);
                        G.Instance.InputControl.MoveToAndClick(spPoint);
                        result = FuncUtils.TimeoutCancelableWrap(3000, this.CancelToken, () => {
                            //识别技能窗
                            return SkillCVHelper.FindCommonUpDownKey(out innerupKeyRect, out innerdownKeyRect, this.titleRect,this.GameRect);
                            return SkillCVHelper.FindCommonUpDownKey(out innerupKeyRect, out innerdownKeyRect, this.GameRect);
                        },300);
                        if (!result)
                        {
@@ -172,7 +172,7 @@
        private bool InitSkills()
        {
            //点击初始化
            Utility.Structs.ZTPoint initButton = new Utility.Structs.ZTPoint(this.upKeyRect.Start.X - 37, this.upKeyRect.Start.Y - 86);
            Utility.Structs.ZTPoint initButton = new Utility.Structs.ZTPoint(this.GameRect.Start.X +510, this.GameRect.Start.Y +105);
            G.Instance.InputControl.MoveToAndClick(initButton);
            //是否已打开确认对话框
@@ -210,31 +210,6 @@
        }
        /// <summary>
        /// 关闭所有弹出窗
        /// </summary>
        /// <param name="cancelToken"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        private void CloseAllAlertWindow(CancellationToken cancelToken, ZTRectangle gameRect)
        {
            while (!cancelToken.IsCancellationRequested)
            {
                //G.Instance.InputControl.MoveTo(gameRect.Start.X,gameRect.Start.Y, false, false, false);
                //Thread.Sleep(10);
                //截图
                Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
                ZTRectangle closeButtonRect = ZTRectangle.Empty;
                if (!DnfCVHelper.GetAlertWindow(out closeButtonRect, image, gameRect))
                {
                    return;
                }
                G.Instance.InputControl.MoveToAndClick(closeButtonRect.GetCenterPoint());
                Thread.Sleep(500);
            }
        }
        /// <summary>
        /// 设置顶端技能
@@ -243,11 +218,11 @@
        private bool SettingTopSkills()
        {
            //物理暴击
            Utility.Structs.ZTPoint skillPoint = new Utility.Structs.ZTPoint(lvRect.End.X + 200, lvRect.Start.Y - 42);
            Utility.Structs.ZTPoint skillPoint = new Utility.Structs.ZTPoint(this.GameRect.Start.X+224, this.GameRect.Start.Y+143);
            SettingSkill(skillPoint);
            //物理背击
            skillPoint = new Utility.Structs.ZTPoint(lvRect.End.X + 280, lvRect.Start.Y - 42);
            skillPoint = new Utility.Structs.ZTPoint(this.GameRect.Start.X + 306, this.GameRect.Start.Y + 143);
            SettingSkill(skillPoint);
            return true;
        }
@@ -288,7 +263,8 @@
        private bool SettingSPSkills()
        {
            //选中sp技能学习
            Utility.Structs.ZTPoint spPoint = new Utility.Structs.ZTPoint(lvRect.End.X + 55, lvRect.Start.Y - 80);
            Utility.Structs.ZTPoint spPoint = new Utility.Structs.ZTPoint(this.GameRect.Start.X + 65, this.GameRect.Start.Y + 105);
            //原来 Utility.Structs.ZTPoint spPoint = new Utility.Structs.ZTPoint(lvRect.End.X + 55, lvRect.Start.Y - 80);
            G.Instance.InputControl.MoveToAndClick(spPoint);
            ZTRectangle numberLimitArea = new ZTRectangle(lvRect.Start.X-5,lvRect.End.Y,lvRect.End.X+21,lvRect.End.Y+340);
@@ -415,8 +391,8 @@
        /// <returns></returns>
        private bool SettingSkill(Utility.Structs.ZTPoint skillPoint)
        {
            //84,71
            ZTRectangle limitRect = new ZTRectangle(skillPoint.X-84,skillPoint.Y-71,skillPoint.X+84,skillPoint.Y+71);
            //加技能按钮区域
            ZTRectangle limitRect = new ZTRectangle(skillPoint.X-52,skillPoint.Y+27,skillPoint.X+52,skillPoint.Y+63);
            bool result = false;
            ZTRectangle addSkillLevelButton = ZTRectangle.Empty;
src/RichCreator/Maps/Test/TestMap.cs
@@ -28,14 +28,11 @@
        }
        
        private const bool isCreateGroup = true;
        public override ZTResult Start(Int32 runningStep)
        {WindowUtils.SetDnfToTop();
        {
            WindowUtils.SetDnfToTop();
            const bool isCreateGroup = true;
            string groupName = "aabbccddee";
            if (isCreateGroup)
            {
@@ -57,7 +54,7 @@
            }
            //沉默一段时间
            Thread.Sleep(50000000);
            CloseAllAlertWindow(this.CancelToken, this.GameRect);
            CloseAllAlertWindowByX(this.CancelToken, this.GameRect);
            return ZTResult.Success;
        }
        
@@ -233,7 +230,7 @@
            ZTRectangle innerGroupWindowTextRect = ZTRectangle.Empty, innerSearchButtonRect = ZTRectangle.Empty, innerCreateGroupButton = ZTRectangle.Empty;
            for (int i = 0; i < 2; i++)
            {
                CloseAllAlertWindow(this.CancelToken, this.GameRect);
                CloseAllAlertWindowByX(this.CancelToken, this.GameRect);
                G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.RightSquarebrackets);
                bool result = FuncUtils.TimeoutCancelableWrap(5000, this.CancelToken, () => {
@@ -296,31 +293,6 @@
            return false;
        }
        
        /// <summary>
        /// 关闭所有弹出窗
        /// </summary>
        /// <param name="cancelToken"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        private void CloseAllAlertWindow(CancellationToken cancelToken, ZTRectangle gameRect)
        {
            while (!cancelToken.IsCancellationRequested)
            {
                //G.Instance.InputControl.MoveTo(gameRect.Start.X,gameRect.Start.Y, false, false, false);
                //Thread.Sleep(10);
                //截图
                Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
                ZTRectangle closeButtonRect = ZTRectangle.Empty;
                if (!DnfCVHelper.GetAlertWindow(out closeButtonRect, image, gameRect))
                {
                    return;
                }
                G.Instance.InputControl.MoveToAndClick(closeButtonRect.GetCenterPoint());
                Thread.Sleep(500);
            }
        }
       
    }
}
src/RichCreator/RichCreator.csproj
@@ -107,10 +107,11 @@
    <Compile Include="Dnf\DnfRole.cs" />
    <Compile Include="Dnf\IMiniMap.cs" />
    <Compile Include="Dnf\MapInfo.cs" />
    <Compile Include="Utilitys\GameUtils.cs" />
    <Compile Include="Maps\Kalete\KaleteMap.cs" />
    <Compile Include="Maps\Kalete\KaleteMiniMap.cs" />
    <Compile Include="Maps\Kalete\OutOfBounds.cs" />
    <Compile Include="Maps\Lindong\LindongMiniMap.cs" />
    <Compile Include="Maps\ShikongzhimenMapBase.cs" />
    <Compile Include="Maps\Test\TestMap.cs" />
    <Compile Include="Maps\SkillSetting\SkillSettingMap.cs" />
    <Compile Include="Services\ServiceProvider.cs" />
@@ -129,7 +130,6 @@
    <Compile Include="Models\RichCreatorConfig.cs" />
    <Compile Include="Jobs\WeGameJob.cs" />
    <Compile Include="Utilitys\AttackRectangle.cs" />
    <Compile Include="Utilitys\Utils.cs" />
    <Compile Include="ViewModels\ConfigViewModel.cs" />
    <Compile Include="ViewModels\NotificationObject.cs" />
    <Page Include="MainWindow.xaml">
@@ -188,7 +188,16 @@
      <Name>RichCreator.Utility</Name>
    </ProjectReference>
  </ItemGroup>
  <ItemGroup />
  <ItemGroup>
    <Content Include="configs\lingdong.txt">
      <SubType>Designer</SubType>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="configs\kalete.txt">
      <SubType>Designer</SubType>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
src/RichCreator/StateMachines/ChannelStateMachine.cs
@@ -1,9 +1,11 @@
using Emgu.CV;
using Emgu.CV.Structure;
using RichCreator.Maps;
using RichCreator.Utility;
using RichCreator.Utility.Captures;
using RichCreator.Utility.CV;
using RichCreator.Utility.Structs;
using RichCreator.Utilitys;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -31,8 +33,8 @@
        
        //频道距离“频道选择文字”的偏移
        private static ZTPoint[] channelOffsets = new ZTPoint[] {
                new ZTPoint(-279,246),
                new ZTPoint(-279,291)
                new ZTPoint(-270,252),
                new ZTPoint(-270,293)
            };
        //首次进入标记
@@ -103,7 +105,7 @@
                        break;
                    case ChannelStates.CloseAllWindow1:
                        //关闭所有窗口1
                        CloseAllAlertWindow(cancelToken, gameRect);
                        GameUtils.CloseAllAlertWindowByX(cancelToken, gameRect);
                        currentState = ChannelStates.CheckGroupMode;
                        break;
                    case ChannelStates.IsChoiceRolePage:
@@ -188,13 +190,13 @@
                        break;
                    case ChannelStates.OpenChangeChannelPage:
                        //打开切换频道界面
                        G.Instance.InputControl.MoveToAndClick(new ZTPoint(gameRect.End.X - 136, gameRect.Start.Y + 9));
                        G.Instance.InputControl.MoveToAndClick(new ZTPoint(gameRect.Start.X +690, gameRect.Start.Y + 11));
                        Thread.Sleep(2000);
                        currentState = ChannelStates.ChangeChannelPageIsOpen;
                        break;
                    case ChannelStates.CloseAllWindow:
                        //关闭所有窗口
                        CloseAllAlertWindow(cancelToken,gameRect);
                        GameUtils.CloseAllAlertWindowByX(cancelToken,gameRect);
                        currentState = ChannelStates.Complete;
                        break;
                    default:
@@ -204,38 +206,7 @@
            return ZTResult.Success;
        }
        /// <summary>
        /// 关闭所有弹出窗
        /// </summary>
        /// <param name="cancelToken"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        private bool CloseAllAlertWindow(CancellationToken cancelToken, ZTRectangle gameRect)
        {
            while (!cancelToken.IsCancellationRequested)
            {
                G.Instance.InputControl.MoveTo(0, 0, false, false, false);
                Thread.Sleep(10);
                //截图
                System.Drawing.Bitmap bitmap = ScreenCapture.Instance.CaptureScreen();
                Image<Rgb, byte> image = new Image<Rgb, byte>(bitmap);
                ZTRectangle closeButtonRect = ZTRectangle.Empty;
                if (!DnfCVHelper.GetAlertWindow(out closeButtonRect, image, gameRect))
                {
                    return true;
                }
                G.Instance.InputControl.MoveToAndClick(closeButtonRect.GetCenterPoint());
                Thread.Sleep(500);
            }
            return false;
        }
        /// <summary>
        /// 频道状态
        /// </summary>
src/RichCreator/StateMachines/KillMonsterStateMachine.cs
@@ -10,6 +10,7 @@
using RichCreator.Utility.Maps;
using RichCreator.Utility.Skills;
using RichCreator.Utility.Structs;
using RichCreator.Utility.Utilitys;
using RichCreator.Utilitys;
using System;
using System.Collections.Generic;
@@ -27,61 +28,37 @@
        private MapInfo map;//地图
        private HouseInfo house;//当前房间
        private DnfRole role;//当前角色控制
        private Int32 preHouseIndex = 0;//上一房间编号
        private OutOfBounds outOfBounds;//禁区
        private bool isSuccess;//退出结果
        private ZTPoint roleLastPosition = ZTPoint.Empty;//角色最后位置
        private Int32 runningStep = RunningStep.None;//是否恢复的状态
        //当前状态
        private KillMonsterStates currentState = KillMonsterStates.Start;
        //是否截图屏幕
        private bool needCaptureScreen = false;
        //怪
        private ZTPoint[] stateMonsters;
        private System.Drawing.Bitmap bitmap = null;
        //原图
        private Image<Rgb, byte> image = null;
        //图像是否改变
        private bool imageIsChange = false;
        //色彩hsv
        private Image<Hsv, byte> hsvImage = null;
        #region Find Door Info
        //门坐标
        private ZTPoint stateDoorPosition;
        
        //离开的门朝向
        private Direction stateDoorLevelDirect = Direction.None;
        
        //屏幕定位点
        private ParametersPoint stateScreenLocation = new ParametersPoint();
        
        #endregion
        private KillMonsterStates currentState = KillMonsterStates.Start;//当前状态
        private bool needCaptureScreen = false;//是否截图屏幕
        private ZTPoint[] stateMonsters;//怪
        private Image<Rgb, byte> image = null;//原图
        private Image<Hsv, byte> hsvImage = null;//色彩hsv
        private ZTPoint state_DoorPosition;//门坐标
        private Direction state_DoorDirect = Direction.None;//门朝向
        private ParametersPoint stateScreenLocation = new ParametersPoint();//屏幕定位点
        private ZTPoint skillReleasePoint = ZTPoint.Empty;
        private HIDCode roleDirection = HIDCode.NoEvent;
        private bool tryEntryDoor = false;//是否尝试进门
        public KillMonsterStateMachine(MapInfo map,HouseInfo house, DnfRole role,Int32 preHouseIndex, Int32 runningStep)
        public KillMonsterStateMachine(MapInfo map,HouseInfo house, DnfRole role)
        {
            this.map = map;
            this.house = house;
            this.role = role;
            this.runningStep = runningStep;
            this.preHouseIndex = preHouseIndex;
            
            outOfBounds = new OutOfBounds(map.GameRect, role);
            hsvImage = new Image<Hsv, byte>(map.GameRect.End.X - map.GameRect.Start.X + 1, map.GameRect.End.Y - map.GameRect.Start.Y + 1);
        }
        private void SetState(KillMonsterStates current, bool capture)
        {
            currentState = current;
@@ -95,17 +72,12 @@
        /// <param name="cancellationToken"></param>
        /// <param name="timeoutMillSecond"></param>
        /// <returns></returns>
        public ZTResult Work(Int32 timeoutMillSecond)
        public ZTResult Work(Int32 timeoutMillSecond,Int32 preHouseIndex,Int32 runningStep)
        {
            bool imageIsChange = false;//图像是否改变
            Int32 nextGate = 0;
            DateTime expireTime = DateTime.Now.AddMilliseconds(timeoutMillSecond);
            if (this.runningStep > RunningStep.None)
            {
                SetState(KillMonsterStates.FindMonster, true);
            }
            //定位方框列表
            MultiList<ZTRectangle, Int32> locationRectangles = new MultiList<ZTRectangle, int>();
            while (true)
            {
                if (map.CancelToken.IsCancellationRequested)
@@ -124,7 +96,7 @@
                if (needCaptureScreen)
                {
                    using (bitmap = ScreenCapture.Instance.CaptureScreen())
                    using (System.Drawing.Bitmap bitmap = ScreenCapture.Instance.CaptureScreen())
                    {
                        if (image != null)
                        {
@@ -135,12 +107,12 @@
                        imageIsChange = true;
                    }
                }
                switch (currentState)
                {
                    case KillMonsterStates.Start:
                        //开始
                        this.map.EntryHousePrework(this.house.Index, this.preHouseIndex);
                        this.map.EntryHousePrework(this.house.Index, preHouseIndex);
                        SetState(KillMonsterStates.IsLastHouse, true);
                        break;
                    case KillMonsterStates.IsLastHouse:
@@ -151,19 +123,20 @@
                            SetState(KillMonsterStates.FindRole, false);
                            break;
                        }
                        if (this.house.Index == 15)
                        if (this.house.IsEnd)
                        {
                            SetState(KillMonsterStates.HasRewardWindow, false);
                        }
                        else
                        {
                            SetState(KillMonsterStates.IsOtherHouse, false);
                        }
                        }
                        break;
                    case KillMonsterStates.HasRewardWindow:
                        //是否有奖励界面
                        if (DnfCVHelper.IsJiangli(image, map.GameRect))
                        {
                            G.Instance.InfoWriter("has jiangli");
                            SetState(KillMonsterStates.TurnAroundCard, false);
                        }
                        else
@@ -205,22 +178,28 @@
                        break;
                    case KillMonsterStates.FindRole:
                        //主角
                        CvInvoke.CvtColor(image, hsvImage, Emgu.CV.CvEnum.ColorConversion.Rgb2Hsv);
                        //定位点
                        if (!DnfCVHelper.GetLocationPoint(out locationRectangles, hsvImage, map.GameRect))
                        if (this.house.WithoutNumber.Count <= 0)
                        {
                            this.stateScreenLocation = DnfCVHelper.GetLocationPoint(image, map.GameRect);
                        }
                        else
                        {
                            this.stateScreenLocation = DnfCVHelper.GetLocationPoint(image, map.GameRect,this.house.WithoutNumber);
                        }
                        if (this.stateScreenLocation.Equals(ParametersPoint.Empty))
                        {
                            //找不到定位点
                            G.Instance.InfoWriter("找不到定位点");
                            SetState(KillMonsterStates.IsLastHouse, true);
                            break;
                        }
                        this.stateScreenLocation = new ParametersPoint(locationRectangles[0].Item1.GetCenterPoint(), locationRectangles[0].Item2);
                        ZTPoint rolePosition = DnfCVHelper.FindRole(hsvImage, map.GameRect);
                        if (rolePosition .Equals( ZTPoint.Empty))
                        CvInvoke.CvtColor(image, hsvImage, Emgu.CV.CvEnum.ColorConversion.Rgb2Hsv);
                        ZTPoint roleCBPosition = DnfCVHelper.FindRole(hsvImage, map.GameRect);
                        if (roleCBPosition.Equals(ZTPoint.Empty))
                        {
                            SetState(KillMonsterStates.FindRoleMove, false);
                        }
@@ -230,7 +209,7 @@
                            {
                                this.role.StopMove();
                            }
                            role.UpdatePosition(rolePosition);
                            role.UpdatePosition(roleCBPosition);
                            SetState(KillMonsterStates.FindMonster, false);
                        }
                        break;
@@ -240,12 +219,12 @@
                        break;
                    case KillMonsterStates.FindMonster:
                        //找怪                        
                        this.stateMonsters = LindongCVHelper.FindMonster(hsvImage, map.GameRect);
                        this.stateMonsters = DnfCVHelper.FindMonster(hsvImage, map.GameRect);
                        if (this.stateMonsters.Length > 0)
                        {
                            G.Instance.DebugWriter(string.Format("已找到{0}个怪", this.stateMonsters.Length));
                            SetState(KillMonsterStates.CalcAttackDistance, false);
                            G.Instance.DebugWriter(string.Format("找到{0}个怪", this.stateMonsters.Length));
                            SetState(KillMonsterStates.CalcAttackPoint, false);
                        }
                        else
                        {
@@ -254,27 +233,57 @@
                        break;
                    case KillMonsterStates.PickupThing:
                        //拾取物品
                        SetState(KillMonsterStates.ToNextGatePoint, false);
                        //todo: PickupThing();
                        break;
                    case KillMonsterStates.ToNextGatePoint:
                        //移到进门点
                        SetState(KillMonsterStates.FindDoor, false);
                        //todo:ToNextGatePoint
                        break;
                    case KillMonsterStates.FindDoor:
                        //查找门, 是否找到门
                        //查找门
                        if (this.house.IsEnd)
                        {
                            SetState(KillMonsterStates.IsLastHouse, true);
                            break;
                        }
                        FindDoor();
                        break;
                    case KillMonsterStates.EntryDoor:
                        //向门移动, 进门
                        EntryDoor();
                        break;
                    case KillMonsterStates.FindDoorMove:
                        //todo:找门移动
                        FindDoorMove();
                    case KillMonsterStates.InNextGatePoint:
                        //是否在进门点
                        ParametersPoint nextGatePoint = ParametersPoint.Empty;
                        ZTPoint rmhp=this.house.ScreenToMapCoordinate(this.role.HalfPosition, this.stateScreenLocation);
                        if (this.house.IsInNextGatePoint(out nextGatePoint,rmhp))
                        {
                            SetState(KillMonsterStates.ToLoopPoint, false);
                        }
                        else
                        {
                            //不在进门点
                            SetState(KillMonsterStates.ToNextGatePoint, false);
                        }
                        break;
                    case KillMonsterStates.CalcAttackDistance:
                    case KillMonsterStates.ToNextGatePoint:
                        //移到进门点
                        ZTPoint rmp = this.house.ScreenToMapCoordinate(this.role.Position, this.stateScreenLocation);
                        ZTPoint ngp = DnfRole.HalfToFootPosition(this.house.HousePathInfo.NextGates[nextGate].Point);
                        this.role.MoveToMapPoint(rmp, ngp);
                        nextGate++;
                        nextGate = nextGate % this.house.HousePathInfo.NextGates.Count;
                        SetState(KillMonsterStates.IsLastHouse, true);
                        break;
                    case KillMonsterStates.ToLoopPoint:
                        //移动到循环点
                        if (!this.house.HousePathInfo.LoopPoint.Equals(ZTPoint.Empty))
                        {
                            //开始移动
                            ZTPoint roleMapPoint = this.house.ScreenToMapCoordinate(this.role.Position, this.stateScreenLocation);
                            this.role.MoveToMapPoint(roleMapPoint, this.house.HousePathInfo.LoopPoint);
                        }
                        SetState(KillMonsterStates.IsLastHouse, true);
                        break;
                    case KillMonsterStates.CalcAttackPoint:
                        //判断使用何技能,计算攻击移动距离, 是否需要移动
                        CalcAttackDistance();
                        break;
@@ -288,15 +297,13 @@
                        break;
                    case KillMonsterStates.Exit:
                        //结束
                        G.Instance.DebugWriter("退出状态");
                        G.Instance.DebugWriter("退出!~");
                        this.role.StopMove();
                        if (this.isSuccess)
                        {
                            return ZTResult.Success;
                        }
                        return ZTResult.Failed;
                }
                
                G.Instance.DebugWriter("next state:" + currentState.ToString());
@@ -309,15 +316,6 @@
        /// </summary>
        private void FindRoleMove()
        {
            //if (this.stateMonsters != null && this.stateMonsters.Length > 0)
            //{
            //    this.role.StopMove();
            //    G.Instance.DebugWriter("找不到角色,Send X");
            //    G.Instance.InputControl.PressKey(1000, HIDCode.X);
            //    SetState(KillMonsterStates.FindRole, true);
            //    return;
            //}
            this.role.FindRoleMove();
            SetState(KillMonsterStates.FindRole, true);
        }
@@ -327,23 +325,23 @@
        /// </summary>
        private void PickupThing()
        {
            //拾取物品,获取最近一个物品位置并步行过去
            ZTPoint thingItemPosition = GetNearlyThingItem(image, role.Position);
            if (!thingItemPosition .Equals( ZTPoint.Empty))
            {
                if (this.role.IsMoving && !this.role.IsMoveIntent(Utility.Dnf.MoveIntent.PickupMove))
                {
                    this.role.StopMove();
                }
            ////拾取物品,获取最近一个物品位置并步行过去
            //ZTPoint thingItemPosition = GetNearlyThingItem(image, role.Position);
            //if (!thingItemPosition .Equals( ZTPoint.Empty))
            //{
            //    if (this.role.IsMoving && !this.role.IsMoveIntent(Utility.Dnf.MoveIntent.PickupMove))
            //    {
            //        this.role.StopMove();
            //    }
                this.role.PickupMove(this.role.Position, thingItemPosition);
                //return new KillMonsterStateResult(STATE_FindMonster, true);
            }
            //    this.role.PickupMove(this.role.Position, thingItemPosition);
            //    //return new KillMonsterStateResult(STATE_FindMonster, true);
            //}
            if (this.role.IsMoveIntent(Utility.Dnf.MoveIntent.PickupMove))
            {
                this.role.StopMove();
            }
            //if (this.role.IsMoveIntent(Utility.Dnf.MoveIntent.PickupMove))
            //{
            //    this.role.StopMove();
            //}
        }
        /// <summary>
@@ -352,21 +350,43 @@
        private void FindDoor()
        {
            //查找真实的门
            this.stateDoorPosition = LindongCVHelper.FindDoor(out stateDoorLevelDirect, hsvImage, this.house.DoorDirection, map.GameRect);
            if (!this.stateDoorPosition .Equals(ZTPoint.Empty))
            Dictionary<ZTPoint,Direction> doors=ShikongzhimenCVHelper.FindDoor(hsvImage, this.house.DoorDirection, map.GameRect);
            this.state_DoorDirect = Direction.None;
            this.state_DoorPosition = ZTPoint.Empty;
            if (doors.Count > 0)
            {
                foreach (var door in doors)
                {
                    //门地图坐标
                    ZTPoint mapDoorPoint = this.house.ScreenToMapCoordinate(door.Key, this.stateScreenLocation);
                    //要进入门的允许区域
                    ZTPoint nextGatePoint = this.house.GetNextGatePoint(door.Value);
                    ZTRectangle doorRect = new ZTRectangle(nextGatePoint.X - 70, nextGatePoint.Y - 70, nextGatePoint.X + 70, nextGatePoint.Y + 70);
                    G.Instance.InfoWriter("has door:" + mapDoorPoint.ToString()+",rect:"+doorRect.ToString());
                    if (GeoHelper.IsInRect(mapDoorPoint, doorRect))
                    {
                        G.Instance.InfoWriter("in door");
                        this.state_DoorDirect = door.Value;
                        this.state_DoorPosition = door.Key;
                        break;
                    }
                }
            }
            if (!this.state_DoorPosition.Equals(ZTPoint.Empty))
            {
                //找到门,向门移动  
                if (this.role.IsMoveIntent(Utility.Dnf.MoveIntent.FindDoorMove))
                {
                    this.role.StopMove();
                }
                G.Instance.InfoWriter("已找到门,位置:" + stateDoorPosition.ToString());
                SetState(KillMonsterStates.EntryDoor, false);
            }
            else
            {
                //未找到门,循环移动
                SetState(KillMonsterStates.FindDoorMove, false);
                //未找到门,是否存进门点
                SetState(KillMonsterStates.InNextGatePoint, false);
            }
        }
@@ -375,122 +395,117 @@
        /// </summary>
        private void EntryDoor()
        {
            const Int32 XLevelOffset = 200;
            const Int32 YLevelOffset = 100;
            Int32 limitLine = 0;
            Int32 diff = 0;
            //传过来人物坐标和门的坐标,根据门的朝向计算人物走向
            switch (stateDoorLevelDirect)
            const Int32 offsetX = 200;
            const Int32 offsetY = 100;
            ZTRectangle doorRect = new ZTRectangle(this.state_DoorPosition.X - offsetX, this.state_DoorPosition.Y - offsetY, this.state_DoorPosition.X + offsetX, this.state_DoorPosition.Y + offsetY);
            if (tryEntryDoor && GeoHelper.IsInRect(this.role.RoleCBPosition, doorRect))
            {
                case Direction.Up:
                    //门在上方
                    limitLine = stateDoorPosition.Y + YLevelOffset;
                    if (role.Position.Y < limitLine)
                    {
                //离门太近,先向外走,再向门走
                Int32 limitLine = 0;
                Int32 diff = 0;
                //传过来人物坐标和门的坐标,根据门的朝向计算人物走向
                switch (state_DoorDirect)
                {
                    case Direction.Up:
                        //门在上方
                        limitLine = state_DoorPosition.Y + offsetY;
                        //下移
                        this.role.SyncMove(new ZTPoint(0, limitLine - role.Position.Y));
                    }
                        //垂直对齐
                        diff = state_DoorPosition.X - role.Position.X;
                        this.role.SyncMove(new ZTPoint(diff, 0));
                        //移动y,进入
                        this.role.SyncMove(new ZTPoint(0, map.GameRect.Start.Y - role.Position.Y));
                        break;
                    //垂直对齐
                    diff = stateDoorPosition.X - role.Position.X;
                    this.role.SyncMove(new ZTPoint(diff, 0));
                    //移动y,进入
                    this.role.SyncMove(new ZTPoint(0, map.GameRect.Start.Y - role.Position.Y));
                    break;
                case Direction.Right:
                    //门在右侧
                    limitLine = stateDoorPosition.X - XLevelOffset;
                    if (role.Position.X > limitLine)
                    {
                    case Direction.Right:
                        //门在右侧
                        limitLine = state_DoorPosition.X - offsetX;
                        //如果角色位于门右侧,先向左移
                        this.role.SyncMove(new ZTPoint(limitLine - role.Position.X, 0));
                    }
                        //水平对齐
                        diff = state_DoorPosition.Y - role.Position.Y;
                        this.role.SyncMove(new ZTPoint(0, diff));
                        //移动x,进入
                        this.role.SyncMove(new ZTPoint(map.GameRect.End.X - role.Position.X, 0));
                        break;
                    //水平对齐
                    diff = stateDoorPosition.Y - role.Position.Y;
                    this.role.SyncMove(new ZTPoint(0, diff));
                    //移动x,进入
                    this.role.SyncMove(new ZTPoint(map.GameRect.End.X - role.Position.X, 0));
                    break;
                case Direction.Bottom:
                    //门在下方
                    limitLine = stateDoorPosition.Y - YLevelOffset;
                    if (role.Position.Y > limitLine)
                    {
                    case Direction.Bottom:
                        //门在下方
                        limitLine = state_DoorPosition.Y - offsetY;
                        //如果角色在门下方,先向上移
                        this.role.SyncMove(new ZTPoint(0, limitLine - role.Position.Y));
                    }
                        //垂直对齐
                        diff = state_DoorPosition.X - role.Position.X;
                        this.role.SyncMove(new ZTPoint(diff, 0));
                    //垂直对齐
                    diff = stateDoorPosition.X - role.Position.X;
                    this.role.SyncMove(new ZTPoint(diff, 0));
                        //移动y,进入
                        this.role.SyncMove(new ZTPoint(0, map.GameRect.End.Y - role.Position.Y));
                        break;
                    //移动y,进入
                    this.role.SyncMove(new ZTPoint(0, map.GameRect.End.Y - role.Position.Y));
                    break;
                case Direction.Left:
                    //门在左侧
                    limitLine = stateDoorPosition.X + XLevelOffset;
                    if (role.Position.X < limitLine)
                    {
                    case Direction.Left:
                        //门在左侧
                        limitLine = state_DoorPosition.X + offsetX;
                        //如果角色位于门左侧,先向右移
                        this.role.SyncMove(new ZTPoint(limitLine - role.Position.X, 0));
                    }
                        //水平对齐
                        diff = state_DoorPosition.Y - role.Position.Y;
                        this.role.SyncMove(new ZTPoint(0, diff));
                    //水平对齐
                    diff = stateDoorPosition.Y - role.Position.Y;
                    this.role.SyncMove(new ZTPoint(0, diff));
                    //移动x,进入
                    this.role.SyncMove(new ZTPoint(map.GameRect.Start.X - role.Position.X, 0));
                    break;
            }
            SetState(KillMonsterStates.IsLastHouse, true);
            return;
        }
        /// <summary>
        /// 找门移动
        /// </summary>
        private void FindDoorMove()
        {
            Int32 areaID = 0;
            if (this.outOfBounds.InOutOfBound(this.house.Index, role.Position, out areaID))
            {
                this.outOfBounds.MoveToCommonBound(areaID);
                        //移动x,进入
                        this.role.SyncMove(new ZTPoint(map.GameRect.Start.X - role.Position.X, 0));
                        break;
                }
                tryEntryDoor = false;
            }
            else
            {
                this.role.FindDoorMove(role.Position);
                //先到进门点
                ZTPoint roleMapPoint = this.house.ScreenToMapCoordinate(this.role.Position, this.stateScreenLocation);
                ZTPoint nextGatePoint = this.house.GetNextGatePoint(this.state_DoorDirect);
                List<ZTPoint> paths = this.house.FindPath(roleMapPoint, DnfRole.HalfToFootPosition(nextGatePoint));
                //再到门后50像素
                ZTPoint dp = this.house.ScreenToMapCoordinate(this.state_DoorPosition, this.stateScreenLocation);
                ZTPoint doorPoint = DnfRole.HalfToFootPosition(dp);
                switch (this.state_DoorDirect)
                {
                    case Direction.Up:
                        doorPoint = doorPoint.Add(0, -50);
                        break;
                    case Direction.Right:
                        doorPoint = doorPoint.Add(50, 0);
                        break;
                    case Direction.Bottom:
                        doorPoint = doorPoint.Add(0, 50);
                        break;
                    case Direction.Left:
                        doorPoint = doorPoint.Add(-50, 0);
                        break;
                }
                paths.Add(doorPoint);
                this.role.MovePaths(roleMapPoint, paths);
                tryEntryDoor = true;
            }
            SetState(KillMonsterStates.IsLastHouse, true);
            return;
        }
        private DateTime FindRoleLastNoMoveTime = DateTime.MaxValue;//最后没移动时间
        private bool FindRoleLastNoMoveStart = false;//没移动是否开始计时
        private ZTSize attackMoveDistance = ZTSize.Empty;
        private HIDCode roleDirection = HIDCode.NoEvent;
        /// <summary>
        /// 判断使用何技能,计算攻击移动距离, 是否需要移动
        /// </summary>
        private void CalcAttackDistance()
        {
            SkillInfo attackSkill = this.house.Skills.SyncPeek();
            
            //计算攻击移动距离
            bool needMove = false;
            attackMoveDistance = AttackRectangle.GetMoveDistance(map.GameRect, role.Position, stateMonsters, attackSkill, out roleDirection, out needMove);
            skillReleasePoint = AttackRectangle.GetAttackPoint(map.GameRect, role.HalfPosition, stateMonsters, attackSkill, out roleDirection, out needMove);
            if (!needMove)
            {
                G.Instance.DebugWriter(string.Format("不需移动直接发技能,距离:{0}", attackMoveDistance.ToString()));
                G.Instance.DebugWriter(string.Format("不需移动直接发技能,距离:{0}", skillReleasePoint.ToString()));
                SetState(KillMonsterStates.ReleaseSkill, false);
            }
            else
@@ -498,25 +513,29 @@
                SetState(KillMonsterStates.AttackMove, false);
            }
        }
        /// <summary>
        /// 攻击移动
        /// </summary>
        private void AttackMove()
        {
            G.Instance.DebugWriter("attack move :" + skillReleasePoint.ToString() + ",role:" + role.Position.ToString() + ",monster1:" + stateMonsters[0].ToString() + ",skill:" + this.house.Skills.SyncPeek().Key.ToString());
            this.role.AttackMoveTo(skillReleasePoint,this.stateScreenLocation);
            SetState(KillMonsterStates.FindRole, true);
        }
        /// <summary>
        /// 调整朝向, 释放技能
        /// </summary>
        private void ReleaseSkill()
        {
            this.role.StopMove();
            SkillInfo skill = this.house.Skills.SyncDeQueue();
            this.roleLastPosition = ZTPoint.Empty;
            if (roleDirection != HIDCode.NoEvent)
            {
                G.Instance.InputControl.PressKey(100, roleDirection);
            }
            this.role.StopMove();
            if (skill.Key == HIDCode.X)
            {
                for (int i = 0; i < 5; i++)
@@ -528,47 +547,11 @@
            else
            {
                G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, skill.Key);
                Thread.Sleep((Int32)skill.ReleaseTime);
                Thread.Sleep((Int32)skill.ReleaseWaitTime);
            }
            G.Instance.DebugWriter(string.Format("发完技能,技能按键:{0},技能名称:{1}", skill.Key, skill.SkillName));
            SetState(KillMonsterStates.IsLastHouse, true);
        }
        /// <summary>
        /// 攻击移动
        /// </summary>
        private void AttackMove()
        {
            SkillInfo attackSkill = this.house.Skills.SyncPeek();
            //没有移动,可能有障碍物
            if (role.Position .Equals( this.roleLastPosition))
            {
                if (FindRoleLastNoMoveStart && (DateTime.Now - FindRoleLastNoMoveTime).TotalMilliseconds > NoMoveMaxMillSecond)
                {
                    //开始计时 并且 超过最大未移动容忍时间
                    G.Instance.DebugWriter("find role no mvoe:" + role.Position.ToString());
                    this.role.StopMove();
                    G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.X);
                    FindRoleLastNoMoveTime = DateTime.Now;
                }
                else if (!FindRoleLastNoMoveStart)
                {
                    //没开始计时 则 开始计时
                    FindRoleLastNoMoveStart = true;
                    FindRoleLastNoMoveTime = DateTime.Now;
                }
            }
            else
            {
                //移动了 取消计时
                this.roleLastPosition = role.Position;
                FindRoleLastNoMoveStart = false;
            }
            G.Instance.DebugWriter("attack move :" + attackMoveDistance.ToString() + ",role:" + role.Position.ToString() + ",monster1:" + stateMonsters[0].ToString() + ",skill:" + attackSkill.Key.ToString());
            this.role.AttackMove(attackMoveDistance);
            SetState(KillMonsterStates.FindRole, true);
        }
        #endregion
@@ -612,23 +595,23 @@
            return result;
        }
        
        /// <summary>
        /// 牌的位置
        /// </summary>
        private static readonly ZTPoint[] CardList = new ZTPoint[] {
            new ZTPoint(364,231),
            new ZTPoint(561,231),
            new ZTPoint(744,231),
            new ZTPoint(924,231),
            new ZTPoint(164,195),
            new ZTPoint(315,195),
            new ZTPoint(474,195),
            new ZTPoint(635,195),
            new ZTPoint(364,570),
            new ZTPoint(561,570),
            new ZTPoint(744,570),
            new ZTPoint(924,570),
            new ZTPoint(164,480),
            new ZTPoint(315,480),
            new ZTPoint(474,480),
            new ZTPoint(635,480),
        };
        /// <summary>
        /// 翻牌
        /// 1-4
@@ -643,7 +626,7 @@
            G.Instance.InputControl.MoveToAndClick(RandomUtils.PointRange(willPosition, 10));
            //判断黄金版是否可以翻
            if (DnfCVHelper.HasMowangqiyueCard(map.GameRect))
            if (DnfCVHelper.HasGoldCard(map.GameRect))
            {
                number = RandomUtils.G(5, 8);
                willPosition = map.GameRect.Start.Add(CardList[number - 1]);
@@ -652,7 +635,6 @@
        }
        
        /// <summary>
        /// 是否改变房间
        /// </summary>
@@ -671,8 +653,7 @@
            }
            return false;
        }
        /// <summary>
        /// 杀怪状态
        /// </summary>
@@ -689,11 +670,15 @@
            FindRoleMove,//让主角移动(原:有怪攻击一下,无怪移动一下)
            FindMonster,//找怪
            PickupThing,//拾取物品
            ToNextGatePoint,//移到进门点
            FindDoor,//查找门, 是否找到门
            EntryDoor,//向门移动, 进门
            FindDoorMove,//找门移动
            CalcAttackDistance,//判断使用何技能,计算攻击移动距离, 是否需要移动
            InNextGatePoint,//是否在进门点
            ToNextGatePoint,//移至进门点
            ToLoopPoint,//移至巡逻点
            CalcAttackPoint,//判断使用何技能,计算攻击移动距离, 是否需要移动
            ReleaseSkill,//调整朝向, 释放技能,
            AttackMove,//攻击移动
        }
src/RichCreator/Utilitys/AttackRectangle.cs
@@ -8,6 +8,7 @@
using System.Threading.Tasks;
using RichCreator.Utility.Skills;
using RichCreator.Utility.Maps;
using RichCreator.Utility.Utilitys;
namespace RichCreator.Utilitys
{
@@ -26,20 +27,20 @@
        /// <param name="direction"></param>
        /// <param name="needMove"></param>
        /// <returns></returns>
        public static ZTSize GetMoveDistance(ZTRectangle gameRect,ZTPoint rolePosition, ZTPoint[] monsterPositions,  SkillInfo skill,out HIDCode direction, out bool needMove)
        public static ZTPoint GetAttackPoint(ZTRectangle gameRect,ZTPoint rolePosition, ZTPoint[] monsterPositions,  SkillInfo skill,out HIDCode direction, out bool needMove)
        {
            needMove = false;
            
            ZTSize moveDistance = ZTSize.Empty;
            if (monsterPositions.Length <= 1||skill.MovePriority==MovePriority.Nearly)
            {
                moveDistance = GetAttackRectangleByNear(monsterPositions, rolePosition, skill, out direction, out needMove);
                return GetAttackPointByNear(monsterPositions, rolePosition, skill, out direction, out needMove);
            }
            else
            {
                moveDistance = GetAttackRectangleByQuantity(gameRect,monsterPositions, rolePosition, skill, out direction, out needMove);
                return GetAttackPointByQuantity(gameRect,monsterPositions, rolePosition, skill, out direction, out needMove);
            }
            return moveDistance;
        }
        
@@ -49,11 +50,11 @@
        /// 得到最近的攻击目标距离
        /// </summary>
        /// <returns></returns>
        private static ZTSize GetAttackRectangleByNear(ZTPoint[] monsterPositions, ZTPoint rolePosition, SkillInfo skill,out HIDCode direction, out bool needMove)
        private static ZTPoint GetAttackPointByNear(ZTPoint[] monsterPositions, ZTPoint rolePosition, SkillInfo skill,out HIDCode direction, out bool needMove)
        {
            needMove = true;
            direction = HIDCode.RightArrow;
            ZTRectangle attackRect = new ZTRectangle(rolePosition.X - skill.Range.Width, rolePosition.Y - skill.Range.Height / 2, rolePosition.X + skill.Range.Width, rolePosition.Y + skill.Range.Height / 2);//攻击范围
            ZTRectangle attackRange = new ZTRectangle(rolePosition.X - skill.Range.Width, rolePosition.Y - skill.Range.Height / 2, rolePosition.X + skill.Range.Width, rolePosition.Y + skill.Range.Height / 2);//攻击范围
            //switch (skill.ReleaseAnchor)
            //{
            //    case SkillInfo.SkillAnchor.Side:
@@ -76,11 +77,11 @@
                if (index == 0)
                {
                    nearDistance = Utils.GetDistance(monsterPositions[index], rolePosition);
                    nearDistance = GeoHelper.GetDistance(monsterPositions[index], rolePosition);
                    nearMonsterPosition = monsterPositions[index];
                }
                //天然就在攻击范围内
                if (Utils.IsInRect(monsterPositions[index], attackRect))
                if (GeoHelper.IsInRect(monsterPositions[index], attackRange))
                {
                    needMove = false;
                    break;
@@ -91,7 +92,7 @@
                }
                //计算远近
                double distance = Utils.GetDistance(monsterPositions[index], rolePosition);
                double distance = GeoHelper.GetDistance(monsterPositions[index], rolePosition);
                if (distance < nearDistance)
                {
                    nearDistance = distance;
@@ -145,7 +146,7 @@
            }
            return moveDistance;
            return new ZTPoint(rolePosition.X+moveDistance.Width,rolePosition.Y+moveDistance.Height);
        }
@@ -157,7 +158,7 @@
        /// <param name="monsterPositions"></param>
        /// <param name="yRange"></param>
        /// <returns></returns>
        private static ZTSize GetAttackRectangleByQuantity(ZTRectangle gameRect,ZTPoint[] monsterPositions, ZTPoint rolePosition, SkillInfo skill,out HIDCode direction, out bool needMove)
        private static ZTPoint GetAttackPointByQuantity(ZTRectangle gameRect,ZTPoint[] monsterPositions, ZTPoint rolePosition, SkillInfo skill,out HIDCode direction, out bool needMove)
        {
            needMove = true;
            direction = HIDCode.RightArrow;
@@ -198,7 +199,7 @@
            Int32 top = 0, right = 0,bottom = 0,left = 0;
            for (int i = 0; i < monsterPositions.Length; i++)
            {
                if (Utils.IsInRect(monsterPositions[i], monsterRect))
                if (GeoHelper.IsInRect(monsterPositions[i], monsterRect))
                {
                    ZTPoint monsterPoint = monsterPositions[i];
                    if (i == 0)
@@ -256,8 +257,8 @@
                //两边发技能
                ZTPoint leftAttackPosition = new ZTPoint(Math.Max(gameRect.Start.X,left+skill.AnchorOffset.Width),Math.Max(top, bottom + skill.AnchorOffset.Height));
                ZTPoint rightAttackPosition = new ZTPoint(Math.Min(gameRect.End.X,right+skill.AnchorOffset.Width), Math.Max(top,bottom + skill.AnchorOffset.Height));
                double toLeft = Utils.GetDistance(leftAttackPosition, rolePosition);
                double toRight = Utils.GetDistance(rightAttackPosition, rolePosition);
                double toLeft = GeoHelper.GetDistance(leftAttackPosition, rolePosition);
                double toRight = GeoHelper.GetDistance(rightAttackPosition, rolePosition);
                
                //计算可以发技能的区域
                if (toLeft <= toRight)
@@ -286,15 +287,15 @@
                }
            }
            if (Utils.IsInRect(rolePosition, releaseSkillRect))
            if (GeoHelper.IsInRect(rolePosition, releaseSkillRect))
            {
                needMove = false;
            }
            //转换为移动距离
            return new ZTSize ( releaseSkillPosition.X-rolePosition.X,releaseSkillPosition.Y-rolePosition.Y);
            return releaseSkillPosition;
            ////转换为移动距离
            //return new ZTSize ( releaseSkillPosition.X-rolePosition.X,releaseSkillPosition.Y-rolePosition.Y);
        }
@@ -312,7 +313,7 @@
            int count = 0;
            for (int i = 0; i < monsterPositions.Length; i++)
            {
                if (Utils.IsInRect(monsterPositions[i], rect))
                if (GeoHelper.IsInRect(monsterPositions[i], rect))
                {
                    count++;
                }
src/RichCreator/Utilitys/FuncUtils.cs
@@ -102,14 +102,18 @@
        /// <param name="tryCount">重试次数</param>
        /// <param name="cancellationToken">取消句柄</param>
        /// <returns></returns>
        public static bool NoChangeRetryCallWrap(Action workFun, Func<bool> workFinishedDectedFun, Func<bool> preDectedFun,Int32 tryCount=3)
        public static bool NoChangeRetryCallWrap(Func<bool> workFun, Func<bool> workFinishedDectedFun, Func<bool> preDectedFun,Int32 tryCount=3)
        {
            Int32 tryCounter = 0;
            while (tryCounter<tryCount)
            {
                try
                {
                    workFun();
                    if (!workFun())
                    {
                        tryCounter++;
                        continue;
                    }
                }
                catch
                {
src/RichCreator/Utilitys/GameUtils.cs
New file
@@ -0,0 +1,68 @@
using Emgu.CV;
using Emgu.CV.Structure;
using RichCreator.Utility;
using RichCreator.Utility.Captures;
using RichCreator.Utility.CV;
using RichCreator.Utility.InputControl;
using RichCreator.Utility.Structs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace RichCreator.Utilitys
{
    public class GameUtils
    {
        /// <summary>
        /// 关闭所有弹出窗
        /// </summary>
        /// <param name="cancelToken"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        public static void CloseAllAlertWindowByEsc(CancellationToken cancelToken, ZTRectangle gameRect)
        {
            //关闭系统菜单
            Int32 counter = 5;
            while (!cancelToken.IsCancellationRequested && counter > 0)
            {
                G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.Escape);
                Thread.Sleep(1000);
                if (!DnfCVHelper.IsOpenSystemPanel(gameRect))
                {
                    break;
                }
                counter--;
            }
        }
        /// <summary>
        /// 关闭所有弹出窗
        /// </summary>
        /// <param name="cancelToken"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        public static void CloseAllAlertWindowByX(CancellationToken cancelToken, ZTRectangle gameRect)
        {
            while (!cancelToken.IsCancellationRequested)
            {
                //截图
                Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
                ZTRectangle closeButtonRect = ZTRectangle.Empty;
                if (!DnfCVHelper.GetAlertWindow(out closeButtonRect, image, gameRect))
                {
                    return;
                }
                G.Instance.InputControl.MoveToAndClick(closeButtonRect.GetCenterPoint());
                Thread.Sleep(500);
            }
        }
    }
}
src/RichCreator/Utilitys/Utils.cs
File was deleted
src/RichCreator/configs/RichCreator.config
@@ -5,8 +5,11 @@
  <StartWaitSecond>300</StartWaitSecond>
    <RoleCount>10</RoleCount>
  <NotificationWechat>true</NotificationWechat>
    <UserName1>1258493488</UserName1>
    <Password1>cc11111111</Password1>
  <UserName1>2228607100</UserName1>
    <Password1>a5m1nf0g00d</Password1>
  <!--<UserName1>1258493488</UserName1>
    <Password1>cc11111111</Password1>-->
    <!--<UserName2>2228607100</UserName2>
    <Password2>a5m1nf0g00d</Password2>-->
    <UserName3></UserName3>
src/RichCreator/configs/kalete.txt
New file
@@ -0,0 +1,40 @@
//0
{"Width":896,"Height":686,"Obstacles":[{"Points":[{"X":2,"Y":320},{"X":460,"Y":310},{"X":493,"Y":319},{"X":556,"Y":334},{"X":668,"Y":344},{"X":759,"Y":330},{"X":873,"Y":308},{"X":893,"Y":300},{"X":891,"Y":1},{"X":2,"Y":3}],"Length":10},{"Points":[{"X":2,"Y":552},{"X":71,"Y":545},{"X":76,"Y":427},{"X":165,"Y":439},{"X":166,"Y":521},{"X":253,"Y":559},{"X":703,"Y":550},{"X":703,"Y":521},{"X":823,"Y":513},{"X":834,"Y":568},{"X":893,"Y":559},{"X":893,"Y":684},{"X":4,"Y":683}],"Length":13}],"LocationPoints":[{"Point":{"X":797,"Y":348},"Parameter":0},{"Point":{"X":671,"Y":348},"Parameter":1},{"Point":{"X":547,"Y":348},"Parameter":2},{"Point":{"X":423,"Y":348},"Parameter":3},{"Point":{"X":298,"Y":347},"Parameter":4},{"Point":{"X":172,"Y":348},"Parameter":5},{"Point":{"X":47,"Y":348},"Parameter":6}],"FindPathPoints":[{"X":51,"Y":392},{"X":438,"Y":418},{"X":775,"Y":400}],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[{"P1":{"X":51,"Y":392},"P2":{"X":775,"Y":400}},{"P1":{"X":438,"Y":418},"P2":{"X":775,"Y":400}},{"P1":{"X":438,"Y":418},"P2":{"X":51,"Y":392}}],"NextGates":[{"Point":{"X":833,"Y":348},"Parameter":1}],"PathGuides":[]}
//1
{"Width":896,"Height":720,"Obstacles":[{"Points":[{"X":2,"Y":541},{"X":291,"Y":563},{"X":406,"Y":615},{"X":411,"Y":685},{"X":0,"Y":683}],"Length":5},{"Points":[{"X":88,"Y":475},{"X":158,"Y":514},{"X":246,"Y":512},{"X":295,"Y":523},{"X":356,"Y":534},{"X":421,"Y":524},{"X":413,"Y":473},{"X":336,"Y":455},{"X":267,"Y":445},{"X":215,"Y":426},{"X":148,"Y":431},{"X":103,"Y":442}],"Length":12},{"Points":[{"X":49,"Y":332},{"X":181,"Y":302},{"X":180,"Y":258},{"X":271,"Y":250},{"X":347,"Y":275},{"X":425,"Y":288},{"X":543,"Y":321},{"X":655,"Y":357},{"X":793,"Y":343},{"X":858,"Y":326},{"X":890,"Y":345},{"X":893,"Y":4},{"X":4,"Y":1},{"X":0,"Y":307}],"Length":14},{"Points":[{"X":560,"Y":716},{"X":591,"Y":586},{"X":644,"Y":566},{"X":792,"Y":559},{"X":825,"Y":535},{"X":879,"Y":535},{"X":895,"Y":542},{"X":894,"Y":718}],"Length":8}],"LocationPoints":[{"Point":{"X":86,"Y":391},"Parameter":10},{"Point":{"X":211,"Y":390},"Parameter":11},{"Point":{"X":337,"Y":390},"Parameter":12},{"Point":{"X":465,"Y":391},"Parameter":13},{"Point":{"X":590,"Y":391},"Parameter":14},{"Point":{"X":716,"Y":390},"Parameter":15},{"Point":{"X":841,"Y":391},"Parameter":16},{"Point":{"X":467,"Y":531},"Parameter":20},{"Point":{"X":467,"Y":473},"Parameter":21},{"Point":{"X":468,"Y":414},"Parameter":22},{"Point":{"X":467,"Y":354},"Parameter":23},{"Point":{"X":468,"Y":295},"Parameter":24},{"Point":{"X":467,"Y":237},"Parameter":25},{"Point":{"X":468,"Y":176},"Parameter":26},{"Point":{"X":468,"Y":119},"Parameter":27},{"Point":{"X":469,"Y":59},"Parameter":28}],"FindPathPoints":[{"X":159,"Y":370},{"X":343,"Y":346},{"X":547,"Y":388},{"X":445,"Y":416},{"X":470,"Y":558},{"X":215,"Y":534},{"X":38,"Y":480}],"LoopPoint":{"X":208,"Y":312},"FindPathLines":[{"P1":{"X":159,"Y":370},"P2":{"X":343,"Y":346}},{"P1":{"X":159,"Y":370},"P2":{"X":445,"Y":416}},{"P1":{"X":445,"Y":416},"P2":{"X":547,"Y":388}},{"P1":{"X":343,"Y":346},"P2":{"X":547,"Y":388}},{"P1":{"X":343,"Y":346},"P2":{"X":445,"Y":416}},{"P1":{"X":159,"Y":370},"P2":{"X":547,"Y":388}},{"P1":{"X":445,"Y":416},"P2":{"X":470,"Y":558}},{"P1":{"X":215,"Y":534},"P2":{"X":470,"Y":558}},{"P1":{"X":38,"Y":480},"P2":{"X":159,"Y":370}},{"P1":{"X":38,"Y":480},"P2":{"X":215,"Y":534}}],"NextGates":[{"Point":{"X":468,"Y":571},"Parameter":2}],"PathGuides":[]}
//2
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//3
{"Width":896,"Height":686,"Obstacles":[{"Points":[{"X":100,"Y":682},{"X":110,"Y":567},{"X":162,"Y":552},{"X":220,"Y":473},{"X":219,"Y":379},{"X":80,"Y":234},{"X":105,"Y":1},{"X":1,"Y":1},{"X":1,"Y":682}],"Length":9},{"Points":[{"X":126,"Y":585},{"X":211,"Y":579},{"X":258,"Y":546},{"X":336,"Y":558},{"X":401,"Y":570},{"X":539,"Y":569},{"X":669,"Y":684},{"X":69,"Y":678}],"Length":8},{"Points":[{"X":813,"Y":581},{"X":811,"Y":682},{"X":894,"Y":686},{"X":895,"Y":561}],"Length":4},{"Points":[{"X":112,"Y":263},{"X":210,"Y":271},{"X":302,"Y":310},{"X":432,"Y":292},{"X":499,"Y":333},{"X":581,"Y":342},{"X":649,"Y":345},{"X":691,"Y":296},{"X":888,"Y":302},{"X":892,"Y":2},{"X":107,"Y":3},{"X":53,"Y":260}],"Length":12},{"Points":[{"X":892,"Y":549},{"X":818,"Y":547},{"X":769,"Y":501},{"X":789,"Y":434},{"X":892,"Y":426}],"Length":5}],"LocationPoints":[{"Point":{"X":734,"Y":521},"Parameter":20},{"Point":{"X":733,"Y":462},"Parameter":21},{"Point":{"X":734,"Y":404},"Parameter":22},{"Point":{"X":735,"Y":344},"Parameter":23},{"Point":{"X":734,"Y":284},"Parameter":24},{"Point":{"X":735,"Y":225},"Parameter":25},{"Point":{"X":733,"Y":164},"Parameter":26},{"Point":{"X":734,"Y":104},"Parameter":27},{"Point":{"X":734,"Y":47},"Parameter":28}],"FindPathPoints":[{"X":247,"Y":464},{"X":259,"Y":343},{"X":768,"Y":368}],"LoopPoint":{"X":297,"Y":360},"FindPathLines":[{"P1":{"X":259,"Y":343},"P2":{"X":247,"Y":464}},{"P1":{"X":247,"Y":464},"P2":{"X":768,"Y":368}},{"P1":{"X":259,"Y":343},"P2":{"X":768,"Y":368}}],"NextGates":[{"Point":{"X":734,"Y":552},"Parameter":2}],"PathGuides":[]}
//4
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//5
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//6
{"Width":896,"Height":686,"Obstacles":[{"Points":[{"X":0,"Y":561},{"X":236,"Y":556},{"X":357,"Y":542},{"X":353,"Y":509},{"X":547,"Y":497},{"X":602,"Y":551},{"X":775,"Y":533},{"X":788,"Y":493},{"X":868,"Y":477},{"X":891,"Y":482},{"X":895,"Y":684},{"X":0,"Y":685}],"Length":12},{"Points":[{"X":4,"Y":337},{"X":15,"Y":336},{"X":81,"Y":201},{"X":117,"Y":122},{"X":167,"Y":2},{"X":1,"Y":4}],"Length":6},{"Points":[{"X":169,"Y":324},{"X":201,"Y":338},{"X":255,"Y":368},{"X":336,"Y":369},{"X":377,"Y":366},{"X":387,"Y":336},{"X":424,"Y":347},{"X":520,"Y":356},{"X":559,"Y":320},{"X":612,"Y":296},{"X":642,"Y":302},{"X":722,"Y":304},{"X":771,"Y":271},{"X":865,"Y":264},{"X":893,"Y":265},{"X":894,"Y":1},{"X":157,"Y":4},{"X":87,"Y":172},{"X":198,"Y":190}],"Length":19}],"LocationPoints":[{"Point":{"X":796,"Y":358},"Parameter":0},{"Point":{"X":671,"Y":359},"Parameter":1},{"Point":{"X":545,"Y":359},"Parameter":2},{"Point":{"X":424,"Y":360},"Parameter":3},{"Point":{"X":297,"Y":357},"Parameter":4},{"Point":{"X":172,"Y":359},"Parameter":5},{"Point":{"X":48,"Y":359},"Parameter":6},{"Point":{"X":101,"Y":215},"Parameter":20},{"Point":{"X":101,"Y":156},"Parameter":21},{"Point":{"X":102,"Y":97},"Parameter":22},{"Point":{"X":101,"Y":39},"Parameter":23}],"FindPathPoints":[{"X":107,"Y":440},{"X":410,"Y":424},{"X":728,"Y":382}],"LoopPoint":{"X":176,"Y":466},"FindPathLines":[{"P1":{"X":107,"Y":440},"P2":{"X":410,"Y":424}},{"P1":{"X":410,"Y":424},"P2":{"X":728,"Y":382}},{"P1":{"X":107,"Y":440},"P2":{"X":728,"Y":382}}],"NextGates":[{"Point":{"X":832,"Y":358},"Parameter":1}],"PathGuides":[{"Polygon":{"Points":[{"X":785,"Y":517},{"X":891,"Y":511},{"X":893,"Y":573},{"X":750,"Y":585}],"Length":4},"Target":{"X":712,"Y":530}},{"Polygon":{"Points":[{"X":575,"Y":543},{"X":783,"Y":531},{"X":744,"Y":592},{"X":569,"Y":579}],"Length":4},"Target":{"X":712,"Y":530}},{"Polygon":{"Points":[{"X":346,"Y":524},{"X":425,"Y":518},{"X":442,"Y":529},{"X":429,"Y":556},{"X":336,"Y":564}],"Length":5},"Target":{"X":287,"Y":523}}]}
//7
{"Width":896,"Height":720,"Obstacles":[{"Points":[{"X":891,"Y":674},{"X":328,"Y":675},{"X":320,"Y":630},{"X":310,"Y":560},{"X":226,"Y":520},{"X":120,"Y":510},{"X":5,"Y":494},{"X":0,"Y":513},{"X":1,"Y":719},{"X":893,"Y":718}],"Length":10},{"Points":[{"X":2,"Y":314},{"X":160,"Y":304},{"X":269,"Y":346},{"X":458,"Y":349},{"X":508,"Y":367},{"X":611,"Y":386},{"X":725,"Y":381},{"X":746,"Y":358},{"X":805,"Y":353},{"X":878,"Y":333},{"X":894,"Y":322},{"X":891,"Y":2},{"X":1,"Y":2}],"Length":13}],"LocationPoints":[{"Point":{"X":797,"Y":407},"Parameter":0},{"Point":{"X":672,"Y":406},"Parameter":1},{"Point":{"X":546,"Y":407},"Parameter":2},{"Point":{"X":422,"Y":405},"Parameter":3},{"Point":{"X":297,"Y":406},"Parameter":4},{"Point":{"X":172,"Y":408},"Parameter":5},{"Point":{"X":48,"Y":407},"Parameter":6},{"Point":{"X":87,"Y":391},"Parameter":10},{"Point":{"X":212,"Y":390},"Parameter":11},{"Point":{"X":339,"Y":390},"Parameter":12},{"Point":{"X":464,"Y":391},"Parameter":13},{"Point":{"X":590,"Y":391},"Parameter":14},{"Point":{"X":716,"Y":391},"Parameter":15},{"Point":{"X":842,"Y":391},"Parameter":16}],"FindPathPoints":[{"X":181,"Y":388},{"X":770,"Y":419},{"X":499,"Y":552}],"LoopPoint":{"X":200,"Y":396},"FindPathLines":[{"P1":{"X":181,"Y":388},"P2":{"X":770,"Y":419}},{"P1":{"X":499,"Y":552},"P2":{"X":770,"Y":419}},{"P1":{"X":499,"Y":552},"P2":{"X":181,"Y":388}}],"NextGates":[{"Point":{"X":834,"Y":410},"Parameter":1}],"PathGuides":[]}
//8
{"Width":1120,"Height":600,"Obstacles":[{"Points":[{"X":0,"Y":322},{"X":58,"Y":329},{"X":218,"Y":398},{"X":239,"Y":367},{"X":206,"Y":326},{"X":253,"Y":310},{"X":295,"Y":303},{"X":317,"Y":181},{"X":325,"Y":28},{"X":315,"Y":4},{"X":1,"Y":5}],"Length":11},{"Points":[{"X":486,"Y":313},{"X":630,"Y":311},{"X":709,"Y":314},{"X":818,"Y":340},{"X":936,"Y":334},{"X":1030,"Y":337},{"X":1061,"Y":309},{"X":1103,"Y":200},{"X":1113,"Y":3},{"X":322,"Y":2},{"X":320,"Y":143},{"X":463,"Y":153}],"Length":12},{"Points":[{"X":1118,"Y":510},{"X":968,"Y":506},{"X":823,"Y":526},{"X":810,"Y":590},{"X":1117,"Y":598}],"Length":5}],"LocationPoints":[{"Point":{"X":1023,"Y":334},"Parameter":0},{"Point":{"X":898,"Y":334},"Parameter":1},{"Point":{"X":773,"Y":333},"Parameter":2},{"Point":{"X":648,"Y":334},"Parameter":3},{"Point":{"X":522,"Y":334},"Parameter":4},{"Point":{"X":399,"Y":334},"Parameter":5},{"Point":{"X":272,"Y":334},"Parameter":6},{"Point":{"X":149,"Y":334},"Parameter":7},{"Point":{"X":90,"Y":417},"Parameter":10},{"Point":{"X":216,"Y":417},"Parameter":11},{"Point":{"X":342,"Y":416},"Parameter":12},{"Point":{"X":467,"Y":416},"Parameter":13},{"Point":{"X":593,"Y":417},"Parameter":14},{"Point":{"X":719,"Y":417},"Parameter":15},{"Point":{"X":844,"Y":415},"Parameter":16},{"Point":{"X":970,"Y":417},"Parameter":17},{"Point":{"X":289,"Y":420},"Parameter":20},{"Point":{"X":289,"Y":360},"Parameter":21},{"Point":{"X":289,"Y":301},"Parameter":22},{"Point":{"X":288,"Y":241},"Parameter":23},{"Point":{"X":289,"Y":182},"Parameter":24},{"Point":{"X":289,"Y":123},"Parameter":25},{"Point":{"X":289,"Y":63},"Parameter":26},{"Point":{"X":290,"Y":5},"Parameter":27}],"FindPathPoints":[{"X":159,"Y":419},{"X":409,"Y":415},{"X":687,"Y":409},{"X":929,"Y":431}],"LoopPoint":{"X":813,"Y":372},"FindPathLines":[{"P1":{"X":159,"Y":419},"P2":{"X":409,"Y":415}},{"P1":{"X":409,"Y":415},"P2":{"X":687,"Y":409}},{"P1":{"X":687,"Y":409},"P2":{"X":929,"Y":431}},{"P1":{"X":409,"Y":415},"P2":{"X":929,"Y":431}},{"P1":{"X":159,"Y":419},"P2":{"X":687,"Y":409}}],"NextGates":[{"Point":{"X":288,"Y":453},"Parameter":2}],"PathGuides":[]}
//9
{"Width":1120,"Height":600,"Obstacles":[{"Points":[{"X":2,"Y":323},{"X":87,"Y":301},{"X":248,"Y":296},{"X":353,"Y":332},{"X":424,"Y":355},{"X":736,"Y":362},{"X":953,"Y":343},{"X":952,"Y":296},{"X":1019,"Y":313},{"X":1105,"Y":357},{"X":1117,"Y":357},{"X":1116,"Y":1},{"X":0,"Y":1}],"Length":13},{"Points":[{"X":156,"Y":595},{"X":182,"Y":540},{"X":252,"Y":491},{"X":407,"Y":472},{"X":468,"Y":507},{"X":708,"Y":507},{"X":753,"Y":473},{"X":912,"Y":443},{"X":1013,"Y":476},{"X":1106,"Y":495},{"X":1118,"Y":597}],"Length":11}],"LocationPoints":[{"Point":{"X":89,"Y":417},"Parameter":10},{"Point":{"X":216,"Y":416},"Parameter":11},{"Point":{"X":341,"Y":418},"Parameter":12},{"Point":{"X":469,"Y":418},"Parameter":13},{"Point":{"X":593,"Y":415},"Parameter":14},{"Point":{"X":718,"Y":418},"Parameter":15},{"Point":{"X":845,"Y":417},"Parameter":16},{"Point":{"X":970,"Y":415},"Parameter":17},{"Point":{"X":1097,"Y":416},"Parameter":18}],"FindPathPoints":[{"X":233,"Y":364},{"X":142,"Y":457},{"X":1026,"Y":368}],"LoopPoint":{"X":944,"Y":399},"FindPathLines":[{"P1":{"X":233,"Y":364},"P2":{"X":1026,"Y":368}},{"P1":{"X":142,"Y":457},"P2":{"X":1026,"Y":368}},{"P1":{"X":142,"Y":457},"P2":{"X":233,"Y":364}}],"NextGates":[{"Point":{"X":73,"Y":416},"Parameter":3}],"PathGuides":[]}
//10
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//11
{"Width":1120,"Height":600,"Obstacles":[{"Points":[{"X":1054,"Y":312},{"X":749,"Y":343},{"X":537,"Y":328},{"X":436,"Y":316},{"X":335,"Y":355},{"X":105,"Y":340},{"X":14,"Y":312},{"X":2,"Y":2},{"X":1116,"Y":1},{"X":1118,"Y":287}],"Length":10},{"Points":[{"X":1116,"Y":557},{"X":1028,"Y":562},{"X":971,"Y":508},{"X":810,"Y":495},{"X":621,"Y":497},{"X":539,"Y":511},{"X":0,"Y":497},{"X":2,"Y":599},{"X":1119,"Y":597}],"Length":9}],"LocationPoints":[{"Point":{"X":1021,"Y":376},"Parameter":0},{"Point":{"X":897,"Y":378},"Parameter":1},{"Point":{"X":773,"Y":376},"Parameter":2},{"Point":{"X":647,"Y":377},"Parameter":3},{"Point":{"X":523,"Y":375},"Parameter":4},{"Point":{"X":398,"Y":376},"Parameter":5},{"Point":{"X":273,"Y":376},"Parameter":6},{"Point":{"X":149,"Y":377},"Parameter":7},{"Point":{"X":23,"Y":376},"Parameter":8}],"FindPathPoints":[{"X":1040,"Y":456},{"X":472,"Y":418},{"X":37,"Y":443}],"LoopPoint":{"X":116,"Y":393},"FindPathLines":[{"P1":{"X":37,"Y":443},"P2":{"X":472,"Y":418}},{"P1":{"X":37,"Y":443},"P2":{"X":1040,"Y":456}},{"P1":{"X":1040,"Y":456},"P2":{"X":472,"Y":418}}],"NextGates":[{"Point":{"X":1056,"Y":376},"Parameter":1}],"PathGuides":[]}
//12
{"Width":1344,"Height":600,"Obstacles":[{"Points":[{"X":1337,"Y":276},{"X":1205,"Y":293},{"X":1200,"Y":309},{"X":830,"Y":333},{"X":619,"Y":327},{"X":132,"Y":328},{"X":76,"Y":349},{"X":2,"Y":304},{"X":1,"Y":4},{"X":1340,"Y":3}],"Length":10},{"Points":[{"X":1341,"Y":529},{"X":1093,"Y":512},{"X":998,"Y":490},{"X":941,"Y":505},{"X":844,"Y":498},{"X":585,"Y":493},{"X":520,"Y":556},{"X":518,"Y":595},{"X":1342,"Y":599}],"Length":9},{"Points":[{"X":7,"Y":447},{"X":72,"Y":459},{"X":134,"Y":512},{"X":309,"Y":506},{"X":342,"Y":579},{"X":343,"Y":596},{"X":0,"Y":598}],"Length":7}],"LocationPoints":[{"Point":{"X":1253,"Y":308},"Parameter":0},{"Point":{"X":1128,"Y":308},"Parameter":1},{"Point":{"X":1003,"Y":306},"Parameter":2},{"Point":{"X":878,"Y":308},"Parameter":3},{"Point":{"X":753,"Y":307},"Parameter":4},{"Point":{"X":629,"Y":306},"Parameter":5},{"Point":{"X":379,"Y":306},"Parameter":7},{"Point":{"X":254,"Y":307},"Parameter":8},{"Point":{"X":129,"Y":308},"Parameter":9},{"Point":{"X":502,"Y":304},"Parameter":6},{"Point":{"X":87,"Y":392},"Parameter":10},{"Point":{"X":211,"Y":391},"Parameter":11},{"Point":{"X":339,"Y":391},"Parameter":12},{"Point":{"X":591,"Y":391},"Parameter":14},{"Point":{"X":473,"Y":391},"Parameter":13},{"Point":{"X":716,"Y":392},"Parameter":15},{"Point":{"X":842,"Y":390},"Parameter":16},{"Point":{"X":967,"Y":391},"Parameter":17},{"Point":{"X":1094,"Y":391},"Parameter":18},{"Point":{"X":1219,"Y":391},"Parameter":19},{"Point":{"X":415,"Y":420},"Parameter":20},{"Point":{"X":416,"Y":360},"Parameter":21},{"Point":{"X":415,"Y":300},"Parameter":22},{"Point":{"X":415,"Y":240},"Parameter":23},{"Point":{"X":416,"Y":183},"Parameter":24},{"Point":{"X":415,"Y":123},"Parameter":25},{"Point":{"X":416,"Y":64},"Parameter":26},{"Point":{"X":414,"Y":2},"Parameter":27}],"FindPathPoints":[{"X":230,"Y":382},{"X":523,"Y":445},{"X":1183,"Y":390}],"LoopPoint":{"X":1157,"Y":354},"FindPathLines":[{"P1":{"X":230,"Y":382},"P2":{"X":1183,"Y":390}},{"P1":{"X":523,"Y":445},"P2":{"X":1183,"Y":390}},{"P1":{"X":523,"Y":445},"P2":{"X":230,"Y":382}}],"NextGates":[{"Point":{"X":417,"Y":457},"Parameter":2}],"PathGuides":[]}
//13
{"Width":1344,"Height":686,"Obstacles":[{"Points":[{"X":4,"Y":496},{"X":60,"Y":496},{"X":92,"Y":528},{"X":311,"Y":534},{"X":484,"Y":549},{"X":775,"Y":519},{"X":855,"Y":569},{"X":959,"Y":559},{"X":967,"Y":512},{"X":1068,"Y":514},{"X":1122,"Y":573},{"X":1342,"Y":557},{"X":1342,"Y":684},{"X":1,"Y":683}],"Length":14},{"Points":[{"X":244,"Y":388},{"X":261,"Y":350},{"X":378,"Y":346},{"X":393,"Y":317},{"X":439,"Y":345},{"X":539,"Y":377},{"X":628,"Y":355},{"X":960,"Y":348},{"X":1010,"Y":183},{"X":1014,"Y":4},{"X":1,"Y":3},{"X":8,"Y":276}],"Length":12},{"Points":[{"X":1191,"Y":324},{"X":1334,"Y":282},{"X":1338,"Y":3},{"X":1020,"Y":7},{"X":1018,"Y":110},{"X":1150,"Y":148}],"Length":6}],"LocationPoints":[{"Point":{"X":1245,"Y":398},"Parameter":0},{"Point":{"X":1121,"Y":398},"Parameter":1},{"Point":{"X":995,"Y":398},"Parameter":2},{"Point":{"X":871,"Y":398},"Parameter":3},{"Point":{"X":746,"Y":398},"Parameter":4},{"Point":{"X":620,"Y":398},"Parameter":5},{"Point":{"X":497,"Y":397},"Parameter":6},{"Point":{"X":373,"Y":399},"Parameter":7},{"Point":{"X":249,"Y":397},"Parameter":8},{"Point":{"X":122,"Y":397},"Parameter":9},{"Point":{"X":263,"Y":415},"Parameter":10},{"Point":{"X":389,"Y":415},"Parameter":11},{"Point":{"X":516,"Y":413},"Parameter":12},{"Point":{"X":642,"Y":415},"Parameter":13},{"Point":{"X":768,"Y":415},"Parameter":14},{"Point":{"X":892,"Y":415},"Parameter":15},{"Point":{"X":1018,"Y":414},"Parameter":16},{"Point":{"X":1146,"Y":414},"Parameter":17},{"Point":{"X":1271,"Y":414},"Parameter":18},{"Point":{"X":1063,"Y":192},"Parameter":20},{"Point":{"X":1063,"Y":134},"Parameter":21},{"Point":{"X":1063,"Y":72},"Parameter":22},{"Point":{"X":1063,"Y":14},"Parameter":23}],"FindPathPoints":[{"X":1194,"Y":413},{"X":854,"Y":420},{"X":327,"Y":415}],"LoopPoint":{"X":1104,"Y":435},"FindPathLines":[{"P1":{"X":327,"Y":415},"P2":{"X":854,"Y":420}},{"P1":{"X":854,"Y":420},"P2":{"X":1194,"Y":413}},{"P1":{"X":327,"Y":415},"P2":{"X":1194,"Y":413}}],"NextGates":[{"Point":{"X":244,"Y":416},"Parameter":3}],"PathGuides":[]}
//14
{"Width":1120,"Height":686,"Obstacles":[{"Points":[{"X":2,"Y":520},{"X":254,"Y":523},{"X":461,"Y":521},{"X":497,"Y":503},{"X":597,"Y":486},{"X":779,"Y":509},{"X":895,"Y":558},{"X":1113,"Y":546},{"X":1117,"Y":627},{"X":3,"Y":630}],"Length":10},{"Points":[{"X":3,"Y":293},{"X":110,"Y":336},{"X":249,"Y":344},{"X":465,"Y":376},{"X":505,"Y":364},{"X":518,"Y":311},{"X":693,"Y":290},{"X":917,"Y":300},{"X":1066,"Y":347},{"X":1117,"Y":342},{"X":1116,"Y":2},{"X":8,"Y":1}],"Length":12}],"LocationPoints":[{"Point":{"X":90,"Y":403},"Parameter":10},{"Point":{"X":217,"Y":404},"Parameter":11},{"Point":{"X":343,"Y":403},"Parameter":12},{"Point":{"X":470,"Y":402},"Parameter":13},{"Point":{"X":592,"Y":402},"Parameter":14},{"Point":{"X":718,"Y":404},"Parameter":15},{"Point":{"X":845,"Y":403},"Parameter":16},{"Point":{"X":972,"Y":403},"Parameter":17},{"Point":{"X":1099,"Y":403},"Parameter":18},{"Point":{"X":1002,"Y":425},"Parameter":20},{"Point":{"X":1003,"Y":366},"Parameter":21},{"Point":{"X":1001,"Y":306},"Parameter":22},{"Point":{"X":1002,"Y":249},"Parameter":23},{"Point":{"X":1000,"Y":189},"Parameter":24},{"Point":{"X":1000,"Y":130},"Parameter":25},{"Point":{"X":1001,"Y":67},"Parameter":26}],"FindPathPoints":[{"X":985,"Y":378},{"X":752,"Y":345},{"X":337,"Y":444}],"LoopPoint":{"X":810,"Y":376},"FindPathLines":[{"P1":{"X":337,"Y":444},"P2":{"X":752,"Y":345}},{"P1":{"X":752,"Y":345},"P2":{"X":985,"Y":378}},{"P1":{"X":337,"Y":444},"P2":{"X":985,"Y":378}}],"NextGates":[{"Point":{"X":65,"Y":405},"Parameter":3}],"PathGuides":[]}
//15
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//16
{"Width":1120,"Height":720,"Obstacles":[{"Points":[{"X":1119,"Y":270},{"X":459,"Y":278},{"X":307,"Y":333},{"X":239,"Y":331},{"X":164,"Y":371},{"X":2,"Y":378},{"X":2,"Y":4},{"X":1115,"Y":3}],"Length":8},{"Points":[{"X":1,"Y":597},{"X":72,"Y":575},{"X":186,"Y":595},{"X":266,"Y":598},{"X":282,"Y":645},{"X":210,"Y":716},{"X":1,"Y":717}],"Length":7},{"Points":[{"X":420,"Y":671},{"X":414,"Y":606},{"X":496,"Y":575},{"X":547,"Y":620},{"X":678,"Y":620},{"X":937,"Y":580},{"X":981,"Y":473},{"X":1116,"Y":481},{"X":1118,"Y":715},{"X":353,"Y":715}],"Length":10}],"LocationPoints":[{"Point":{"X":1005,"Y":348},"Parameter":0},{"Point":{"X":880,"Y":348},"Parameter":1},{"Point":{"X":755,"Y":348},"Parameter":2},{"Point":{"X":631,"Y":348},"Parameter":3},{"Point":{"X":506,"Y":348},"Parameter":4},{"Point":{"X":383,"Y":349},"Parameter":5},{"Point":{"X":255,"Y":347},"Parameter":6},{"Point":{"X":130,"Y":348},"Parameter":7},{"Point":{"X":8,"Y":348},"Parameter":8}],"FindPathPoints":[{"X":354,"Y":582},{"X":45,"Y":456},{"X":352,"Y":414},{"X":736,"Y":419},{"X":964,"Y":373}],"LoopPoint":{"X":86,"Y":432},"FindPathLines":[{"P1":{"X":45,"Y":456},"P2":{"X":352,"Y":414}},{"P1":{"X":45,"Y":456},"P2":{"X":354,"Y":582}},{"P1":{"X":354,"Y":582},"P2":{"X":736,"Y":419}},{"P1":{"X":352,"Y":414},"P2":{"X":736,"Y":419}},{"P1":{"X":736,"Y":419},"P2":{"X":964,"Y":373}},{"P1":{"X":45,"Y":456},"P2":{"X":736,"Y":419}},{"P1":{"X":352,"Y":414},"P2":{"X":354,"Y":582}},{"P1":{"X":354,"Y":582},"P2":{"X":964,"Y":373}},{"P1":{"X":45,"Y":456},"P2":{"X":964,"Y":373}},{"P1":{"X":352,"Y":414},"P2":{"X":964,"Y":373}}],"NextGates":[{"Point":{"X":996,"Y":362},"Parameter":1}],"PathGuides":[]}
//17
{"Width":1120,"Height":600,"Obstacles":[{"Points":[{"X":2,"Y":331},{"X":80,"Y":374},{"X":124,"Y":393},{"X":240,"Y":391},{"X":274,"Y":331},{"X":902,"Y":329},{"X":953,"Y":231},{"X":957,"Y":2},{"X":1,"Y":2}],"Length":9},{"Points":[{"X":972,"Y":190},{"X":1044,"Y":214},{"X":1063,"Y":328},{"X":1118,"Y":328},{"X":1117,"Y":2},{"X":960,"Y":5},{"X":956,"Y":175}],"Length":7},{"Points":[{"X":1117,"Y":540},{"X":906,"Y":525},{"X":794,"Y":555},{"X":421,"Y":555},{"X":1,"Y":556},{"X":0,"Y":596},{"X":1118,"Y":599}],"Length":7}],"LocationPoints":[{"Point":{"X":90,"Y":417},"Parameter":10},{"Point":{"X":215,"Y":416},"Parameter":11},{"Point":{"X":342,"Y":418},"Parameter":12},{"Point":{"X":468,"Y":417},"Parameter":13},{"Point":{"X":594,"Y":417},"Parameter":14},{"Point":{"X":718,"Y":417},"Parameter":15},{"Point":{"X":844,"Y":416},"Parameter":16},{"Point":{"X":970,"Y":417},"Parameter":17},{"Point":{"X":1097,"Y":416},"Parameter":18},{"Point":{"X":980,"Y":227},"Parameter":20},{"Point":{"X":980,"Y":169},"Parameter":21},{"Point":{"X":981,"Y":111},"Parameter":22},{"Point":{"X":980,"Y":52},"Parameter":23}],"FindPathPoints":[{"X":351,"Y":433},{"X":90,"Y":451},{"X":1049,"Y":423}],"LoopPoint":{"X":940,"Y":446},"FindPathLines":[{"P1":{"X":90,"Y":451},"P2":{"X":351,"Y":433}},{"P1":{"X":90,"Y":451},"P2":{"X":1049,"Y":423}},{"P1":{"X":351,"Y":433},"P2":{"X":1049,"Y":423}}],"NextGates":[{"Point":{"X":68,"Y":417},"Parameter":3}],"PathGuides":[]}
//18
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//19
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
src/RichCreator/configs/lingdong.txt
New file
@@ -0,0 +1,40 @@
//0
{"Width":896,"Height":686,"Obstacles":[{"Points":[{"X":2,"Y":320},{"X":460,"Y":310},{"X":493,"Y":319},{"X":556,"Y":334},{"X":668,"Y":344},{"X":759,"Y":330},{"X":873,"Y":308},{"X":893,"Y":300},{"X":891,"Y":1},{"X":2,"Y":3}],"Length":10},{"Points":[{"X":2,"Y":552},{"X":71,"Y":545},{"X":76,"Y":427},{"X":165,"Y":439},{"X":166,"Y":521},{"X":253,"Y":559},{"X":703,"Y":550},{"X":703,"Y":521},{"X":823,"Y":513},{"X":834,"Y":568},{"X":893,"Y":559},{"X":893,"Y":684},{"X":4,"Y":683}],"Length":13}],"LocationPoints":[{"Point":{"X":797,"Y":348},"Parameter":0},{"Point":{"X":671,"Y":348},"Parameter":1},{"Point":{"X":547,"Y":348},"Parameter":2},{"Point":{"X":423,"Y":348},"Parameter":3},{"Point":{"X":298,"Y":347},"Parameter":4},{"Point":{"X":172,"Y":348},"Parameter":5},{"Point":{"X":47,"Y":348},"Parameter":6}],"FindPathPoints":[{"X":51,"Y":392},{"X":438,"Y":418},{"X":775,"Y":400}],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[{"P1":{"X":51,"Y":392},"P2":{"X":775,"Y":400}},{"P1":{"X":438,"Y":418},"P2":{"X":775,"Y":400}},{"P1":{"X":438,"Y":418},"P2":{"X":51,"Y":392}}],"NextGates":[{"Point":{"X":833,"Y":348},"Parameter":1}],"PathGuides":[]}
//1
{"Width":896,"Height":720,"Obstacles":[{"Points":[{"X":2,"Y":541},{"X":291,"Y":563},{"X":406,"Y":615},{"X":411,"Y":685},{"X":0,"Y":683}],"Length":5},{"Points":[{"X":88,"Y":475},{"X":158,"Y":514},{"X":246,"Y":512},{"X":295,"Y":523},{"X":356,"Y":534},{"X":421,"Y":524},{"X":413,"Y":473},{"X":336,"Y":455},{"X":267,"Y":445},{"X":215,"Y":426},{"X":148,"Y":431},{"X":103,"Y":442}],"Length":12},{"Points":[{"X":49,"Y":332},{"X":181,"Y":302},{"X":180,"Y":258},{"X":271,"Y":250},{"X":347,"Y":275},{"X":425,"Y":288},{"X":543,"Y":321},{"X":655,"Y":357},{"X":793,"Y":343},{"X":858,"Y":326},{"X":890,"Y":345},{"X":893,"Y":4},{"X":4,"Y":1},{"X":0,"Y":307}],"Length":14},{"Points":[{"X":560,"Y":716},{"X":591,"Y":586},{"X":644,"Y":566},{"X":792,"Y":559},{"X":825,"Y":535},{"X":879,"Y":535},{"X":895,"Y":542},{"X":894,"Y":718}],"Length":8}],"LocationPoints":[{"Point":{"X":86,"Y":391},"Parameter":10},{"Point":{"X":211,"Y":390},"Parameter":11},{"Point":{"X":337,"Y":390},"Parameter":12},{"Point":{"X":465,"Y":391},"Parameter":13},{"Point":{"X":590,"Y":391},"Parameter":14},{"Point":{"X":716,"Y":390},"Parameter":15},{"Point":{"X":841,"Y":391},"Parameter":16},{"Point":{"X":467,"Y":531},"Parameter":20},{"Point":{"X":467,"Y":473},"Parameter":21},{"Point":{"X":468,"Y":414},"Parameter":22},{"Point":{"X":467,"Y":354},"Parameter":23},{"Point":{"X":468,"Y":295},"Parameter":24},{"Point":{"X":467,"Y":237},"Parameter":25},{"Point":{"X":468,"Y":176},"Parameter":26},{"Point":{"X":468,"Y":119},"Parameter":27},{"Point":{"X":469,"Y":59},"Parameter":28}],"FindPathPoints":[{"X":159,"Y":370},{"X":343,"Y":346},{"X":547,"Y":388},{"X":445,"Y":416},{"X":470,"Y":558},{"X":215,"Y":534},{"X":38,"Y":480}],"LoopPoint":{"X":208,"Y":312},"FindPathLines":[{"P1":{"X":159,"Y":370},"P2":{"X":343,"Y":346}},{"P1":{"X":159,"Y":370},"P2":{"X":445,"Y":416}},{"P1":{"X":445,"Y":416},"P2":{"X":547,"Y":388}},{"P1":{"X":343,"Y":346},"P2":{"X":547,"Y":388}},{"P1":{"X":343,"Y":346},"P2":{"X":445,"Y":416}},{"P1":{"X":159,"Y":370},"P2":{"X":547,"Y":388}},{"P1":{"X":445,"Y":416},"P2":{"X":470,"Y":558}},{"P1":{"X":215,"Y":534},"P2":{"X":470,"Y":558}},{"P1":{"X":38,"Y":480},"P2":{"X":159,"Y":370}},{"P1":{"X":38,"Y":480},"P2":{"X":215,"Y":534}}],"NextGates":[{"Point":{"X":468,"Y":571},"Parameter":2}],"PathGuides":[]}
//2
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//3
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//4
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//5
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//6
{"Width":896,"Height":686,"Obstacles":[{"Points":[{"X":0,"Y":561},{"X":236,"Y":556},{"X":357,"Y":542},{"X":353,"Y":509},{"X":547,"Y":497},{"X":602,"Y":551},{"X":775,"Y":533},{"X":788,"Y":493},{"X":868,"Y":477},{"X":891,"Y":482},{"X":895,"Y":684},{"X":0,"Y":685}],"Length":12},{"Points":[{"X":4,"Y":337},{"X":15,"Y":336},{"X":81,"Y":201},{"X":117,"Y":122},{"X":167,"Y":2},{"X":1,"Y":4}],"Length":6},{"Points":[{"X":169,"Y":324},{"X":201,"Y":338},{"X":255,"Y":368},{"X":336,"Y":369},{"X":377,"Y":366},{"X":387,"Y":336},{"X":424,"Y":347},{"X":520,"Y":356},{"X":559,"Y":320},{"X":612,"Y":296},{"X":642,"Y":302},{"X":722,"Y":304},{"X":771,"Y":271},{"X":865,"Y":264},{"X":893,"Y":265},{"X":894,"Y":1},{"X":157,"Y":4},{"X":87,"Y":172},{"X":198,"Y":190}],"Length":19}],"LocationPoints":[{"Point":{"X":796,"Y":358},"Parameter":0},{"Point":{"X":671,"Y":359},"Parameter":1},{"Point":{"X":545,"Y":359},"Parameter":2},{"Point":{"X":424,"Y":360},"Parameter":3},{"Point":{"X":297,"Y":357},"Parameter":4},{"Point":{"X":172,"Y":359},"Parameter":5},{"Point":{"X":48,"Y":359},"Parameter":6},{"Point":{"X":101,"Y":215},"Parameter":20},{"Point":{"X":101,"Y":156},"Parameter":21},{"Point":{"X":102,"Y":97},"Parameter":22},{"Point":{"X":101,"Y":39},"Parameter":23}],"FindPathPoints":[{"X":107,"Y":440},{"X":410,"Y":424},{"X":728,"Y":382}],"LoopPoint":{"X":176,"Y":466},"FindPathLines":[{"P1":{"X":107,"Y":440},"P2":{"X":410,"Y":424}},{"P1":{"X":410,"Y":424},"P2":{"X":728,"Y":382}},{"P1":{"X":107,"Y":440},"P2":{"X":728,"Y":382}}],"NextGates":[{"Point":{"X":832,"Y":358},"Parameter":1}],"PathGuides":[{"Polygon":{"Points":[{"X":785,"Y":517},{"X":891,"Y":511},{"X":893,"Y":573},{"X":750,"Y":585}],"Length":4},"Target":{"X":712,"Y":530}},{"Polygon":{"Points":[{"X":575,"Y":543},{"X":783,"Y":531},{"X":744,"Y":592},{"X":569,"Y":579}],"Length":4},"Target":{"X":712,"Y":530}},{"Polygon":{"Points":[{"X":346,"Y":524},{"X":425,"Y":518},{"X":442,"Y":529},{"X":429,"Y":556},{"X":336,"Y":564}],"Length":5},"Target":{"X":287,"Y":523}}]}
//7
{"Width":896,"Height":720,"Obstacles":[{"Points":[{"X":891,"Y":674},{"X":328,"Y":675},{"X":320,"Y":630},{"X":310,"Y":560},{"X":226,"Y":520},{"X":120,"Y":510},{"X":5,"Y":494},{"X":0,"Y":513},{"X":1,"Y":719},{"X":893,"Y":718}],"Length":10},{"Points":[{"X":2,"Y":314},{"X":160,"Y":304},{"X":269,"Y":346},{"X":458,"Y":349},{"X":508,"Y":367},{"X":611,"Y":386},{"X":725,"Y":381},{"X":746,"Y":358},{"X":805,"Y":353},{"X":878,"Y":333},{"X":894,"Y":322},{"X":891,"Y":2},{"X":1,"Y":2}],"Length":13}],"LocationPoints":[{"Point":{"X":797,"Y":407},"Parameter":0},{"Point":{"X":672,"Y":406},"Parameter":1},{"Point":{"X":546,"Y":407},"Parameter":2},{"Point":{"X":422,"Y":405},"Parameter":3},{"Point":{"X":297,"Y":406},"Parameter":4},{"Point":{"X":172,"Y":408},"Parameter":5},{"Point":{"X":48,"Y":407},"Parameter":6},{"Point":{"X":87,"Y":391},"Parameter":10},{"Point":{"X":212,"Y":390},"Parameter":11},{"Point":{"X":339,"Y":390},"Parameter":12},{"Point":{"X":464,"Y":391},"Parameter":13},{"Point":{"X":590,"Y":391},"Parameter":14},{"Point":{"X":716,"Y":391},"Parameter":15},{"Point":{"X":842,"Y":391},"Parameter":16}],"FindPathPoints":[{"X":181,"Y":388},{"X":770,"Y":419},{"X":499,"Y":552}],"LoopPoint":{"X":200,"Y":396},"FindPathLines":[{"P1":{"X":181,"Y":388},"P2":{"X":770,"Y":419}},{"P1":{"X":499,"Y":552},"P2":{"X":770,"Y":419}},{"P1":{"X":499,"Y":552},"P2":{"X":181,"Y":388}}],"NextGates":[{"Point":{"X":834,"Y":410},"Parameter":1}],"PathGuides":[]}
//8
{"Width":1120,"Height":600,"Obstacles":[{"Points":[{"X":0,"Y":322},{"X":58,"Y":329},{"X":218,"Y":398},{"X":239,"Y":367},{"X":206,"Y":326},{"X":253,"Y":310},{"X":295,"Y":303},{"X":317,"Y":181},{"X":325,"Y":28},{"X":315,"Y":4},{"X":1,"Y":5}],"Length":11},{"Points":[{"X":486,"Y":313},{"X":630,"Y":311},{"X":709,"Y":314},{"X":818,"Y":340},{"X":936,"Y":334},{"X":1030,"Y":337},{"X":1061,"Y":309},{"X":1103,"Y":200},{"X":1113,"Y":3},{"X":322,"Y":2},{"X":320,"Y":143},{"X":463,"Y":153}],"Length":12},{"Points":[{"X":1118,"Y":510},{"X":968,"Y":506},{"X":823,"Y":526},{"X":810,"Y":590},{"X":1117,"Y":598}],"Length":5}],"LocationPoints":[{"Point":{"X":1023,"Y":334},"Parameter":0},{"Point":{"X":898,"Y":334},"Parameter":1},{"Point":{"X":773,"Y":333},"Parameter":2},{"Point":{"X":648,"Y":334},"Parameter":3},{"Point":{"X":522,"Y":334},"Parameter":4},{"Point":{"X":399,"Y":334},"Parameter":5},{"Point":{"X":272,"Y":334},"Parameter":6},{"Point":{"X":149,"Y":334},"Parameter":7},{"Point":{"X":90,"Y":417},"Parameter":10},{"Point":{"X":216,"Y":417},"Parameter":11},{"Point":{"X":342,"Y":416},"Parameter":12},{"Point":{"X":467,"Y":416},"Parameter":13},{"Point":{"X":593,"Y":417},"Parameter":14},{"Point":{"X":719,"Y":417},"Parameter":15},{"Point":{"X":844,"Y":415},"Parameter":16},{"Point":{"X":970,"Y":417},"Parameter":17},{"Point":{"X":289,"Y":420},"Parameter":20},{"Point":{"X":289,"Y":360},"Parameter":21},{"Point":{"X":289,"Y":301},"Parameter":22},{"Point":{"X":288,"Y":241},"Parameter":23},{"Point":{"X":289,"Y":182},"Parameter":24},{"Point":{"X":289,"Y":123},"Parameter":25},{"Point":{"X":289,"Y":63},"Parameter":26},{"Point":{"X":290,"Y":5},"Parameter":27}],"FindPathPoints":[{"X":159,"Y":419},{"X":409,"Y":415},{"X":687,"Y":409},{"X":929,"Y":431}],"LoopPoint":{"X":813,"Y":372},"FindPathLines":[{"P1":{"X":159,"Y":419},"P2":{"X":409,"Y":415}},{"P1":{"X":409,"Y":415},"P2":{"X":687,"Y":409}},{"P1":{"X":687,"Y":409},"P2":{"X":929,"Y":431}},{"P1":{"X":409,"Y":415},"P2":{"X":929,"Y":431}},{"P1":{"X":159,"Y":419},"P2":{"X":687,"Y":409}}],"NextGates":[{"Point":{"X":288,"Y":453},"Parameter":2}],"PathGuides":[]}
//9
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//10
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//11
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//12
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//13
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//14
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//15
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//16
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//17
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//18
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}
//19
{"Width":896,"Height":720,"Obstacles":[],"LocationPoints":[],"FindPathPoints":[],"LoopPoint":{"X":0,"Y":0},"FindPathLines":[],"NextGates":[],"PathGuides":[]}