aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenGridServices.AssetServer/AssetHttpServer.cs92
-rw-r--r--OpenGridServices.AssetServer/Main.cs323
-rw-r--r--OpenGridServices.AssetServer/OpenGridServices.AssetServer.csproj3
-rw-r--r--OpenGridServices.AssetServer/OpenGridServices.AssetServer.exe.build1
-rw-r--r--OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs9
-rw-r--r--OpenSim.RegionServer/Assets/AssetCache.cs2
-rw-r--r--OpenSim.RegionServer/OpenSimMain.cs4
-rw-r--r--OpenSim.RegionServer/RegionInfo.cs13
-rw-r--r--OpenSim.Servers/BaseHttpServer.cs167
-rw-r--r--OpenSim.sln322
-rw-r--r--ServiceManager/ServiceManager.csproj33
11 files changed, 585 insertions, 384 deletions
diff --git a/OpenGridServices.AssetServer/AssetHttpServer.cs b/OpenGridServices.AssetServer/AssetHttpServer.cs
new file mode 100644
index 0000000..8439e92
--- /dev/null
+++ b/OpenGridServices.AssetServer/AssetHttpServer.cs
@@ -0,0 +1,92 @@
1using System;
2using System.Collections.Generic;
3using System.Net;
4using System.Text;
5using System.Text.RegularExpressions;
6using System.Threading;
7//using OpenSim.CAPS;
8using Nwc.XmlRpc;
9using System.Collections;
10using OpenSim.Framework.Console;
11using OpenSim.Servers;
12
13namespace OpenGridServices.AssetServer
14{
15 public class AssetHttpServer :BaseHttpServer
16 {
17 public AssetHttpServer(int port)
18 : base(port)
19 {
20 }
21
22 public override void HandleRequest(Object stateinfo)
23 {
24 try
25 {
26 HttpListenerContext context = (HttpListenerContext)stateinfo;
27
28 HttpListenerRequest request = context.Request;
29 HttpListenerResponse response = context.Response;
30
31 response.KeepAlive = false;
32 response.SendChunked = false;
33
34 System.IO.Stream body = request.InputStream;
35 System.Text.Encoding encoding = System.Text.Encoding.UTF8;
36 System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding);
37
38 string requestBody = reader.ReadToEnd();
39 body.Close();
40 reader.Close();
41
42 //Console.WriteLine(request.HttpMethod + " " + request.RawUrl + " Http/" + request.ProtocolVersion.ToString() + " content type: " + request.ContentType);
43 //Console.WriteLine(requestBody);
44
45 string responseString = "";
46 switch (request.ContentType)
47 {
48 case "text/xml":
49 // must be XML-RPC, so pass to the XML-RPC parser
50
51 responseString = ParseXMLRPC(requestBody);
52 responseString = Regex.Replace(responseString, "utf-16", "utf-8");
53
54 response.AddHeader("Content-type", "text/xml");
55 break;
56
57 case "application/xml":
58 // probably LLSD we hope, otherwise it should be ignored by the parser
59 responseString = ParseLLSDXML(requestBody);
60 response.AddHeader("Content-type", "application/xml");
61 break;
62
63 case "application/x-www-form-urlencoded":
64 // a form data POST so send to the REST parser
65 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
66 response.AddHeader("Content-type", "text/plain");
67 break;
68
69 case null:
70 // must be REST or invalid crap, so pass to the REST parser
71 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
72 response.AddHeader("Content-type", "text/plain");
73 break;
74
75 }
76
77 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
78 byte[] buffer = Windows1252Encoding.GetBytes(responseString);
79 System.IO.Stream output = response.OutputStream;
80 response.SendChunked = false;
81 response.ContentLength64 = buffer.Length;
82 output.Write(buffer, 0, buffer.Length);
83 output.Close();
84 }
85 catch (Exception e)
86 {
87 Console.WriteLine(e.ToString());
88 }
89 }
90
91 }
92}
diff --git a/OpenGridServices.AssetServer/Main.cs b/OpenGridServices.AssetServer/Main.cs
index c2607c1..ef9cc67 100644
--- a/OpenGridServices.AssetServer/Main.cs
+++ b/OpenGridServices.AssetServer/Main.cs
@@ -40,6 +40,7 @@ using OpenSim.Framework.Sims;
40using OpenSim.Framework.Console; 40using OpenSim.Framework.Console;
41using OpenSim.Framework.Types; 41using OpenSim.Framework.Types;
42using OpenSim.Framework.Interfaces; 42using OpenSim.Framework.Interfaces;
43using OpenSim.Framework.Utilities;
43using OpenSim.GridInterfaces.Local; // REFACTORING IS NEEDED!!!!!!!!!!! 44using OpenSim.GridInterfaces.Local; // REFACTORING IS NEEDED!!!!!!!!!!!
44using OpenSim.Servers; 45using OpenSim.Servers;
45using Db4objects.Db4o; 46using Db4objects.Db4o;
@@ -52,7 +53,7 @@ namespace OpenGridServices.AssetServer
52 public class OpenAsset_Main : BaseServer, conscmd_callback 53 public class OpenAsset_Main : BaseServer, conscmd_callback
53 { 54 {
54 private IObjectContainer db; 55 private IObjectContainer db;
55 56
56 public static OpenAsset_Main assetserver; 57 public static OpenAsset_Main assetserver;
57 58
58 private ConsoleBase m_console; 59 private ConsoleBase m_console;
@@ -70,7 +71,7 @@ namespace OpenGridServices.AssetServer
70 71
71 private void Work() 72 private void Work()
72 { 73 {
73 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH,"\nEnter help for a list of commands\n"); 74 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH, "\nEnter help for a list of commands\n");
74 75
75 while (true) 76 while (true)
76 { 77 {
@@ -86,161 +87,191 @@ namespace OpenGridServices.AssetServer
86 87
87 public void Startup() 88 public void Startup()
88 { 89 {
89 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Main.cs:Startup() - Setting up asset DB"); 90 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "Main.cs:Startup() - Setting up asset DB");
90 setupDB(); 91 setupDB();
91
92 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Main.cs:Startup() - Starting HTTP process");
93 BaseHttpServer httpServer = new BaseHttpServer(8003);
94 92
93 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "Main.cs:Startup() - Starting HTTP process");
94 AssetHttpServer httpServer = new AssetHttpServer(8003);
95 95
96 httpServer.AddRestHandler("GET", "/assets/", this.assetGetMethod);
97 96
97 httpServer.AddRestHandler("GET", "/assets/", this.assetGetMethod);
98 httpServer.AddRestHandler("POST", "/assets/", this.assetPostMethod);
98 99
99 httpServer.Start(); 100 httpServer.Start();
100 101
101 } 102 }
102 103
103 public string assetGetMethod(string request, string path, string param) { 104 public string assetPostMethod(string requestBody, string path, string param)
104 byte[] assetdata=getAssetData(new LLUUID(param),false); 105 {
105 if(assetdata!=null) { 106 AssetBase asset = new AssetBase();
106 return System.Text.Encoding.ASCII.GetString(assetdata); 107 asset.Name = "";
107 } else { 108 asset.FullID = new LLUUID(param);
108 return ""; 109 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
109 } 110 byte[] buffer = Windows1252Encoding.GetBytes(requestBody);
111 asset.Data = buffer;
112 AssetStorage store = new AssetStorage();
113 store.Data = asset.Data;
114 store.Name = asset.Name;
115 store.UUID = asset.FullID;
116 db.Set(store);
117 db.Commit();
118 return "";
119 }
110 120
111 } 121 public string assetGetMethod(string request, string path, string param)
122 {
123 Console.WriteLine("got a request " +param);
124 byte[] assetdata = getAssetData(new LLUUID(param), false);
125 if (assetdata != null)
126 {
127 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
128 string ret = Windows1252Encoding.GetString(assetdata);
129 //string ret = System.Text.Encoding.Unicode.GetString(assetdata);
112 130
113 public byte[] getAssetData(LLUUID assetID, bool isTexture) { 131 return ret;
114 byte[] idata = null; 132
115 bool found = false; 133 }
116 AssetStorage foundAsset = null; 134 else
135 {
136 return "";
137 }
117 138
118 IObjectSet result = db.Get(new AssetStorage(assetID)); 139 }
119 if (result.Count > 0)
120 {
121 foundAsset = (AssetStorage)result.Next();
122 found = true;
123 }
124 140
125 if (found) 141 public byte[] getAssetData(LLUUID assetID, bool isTexture)
126 { 142 {
127 return foundAsset.Data; 143 byte[] idata = null;
128 } 144 bool found = false;
129 else 145 AssetStorage foundAsset = null;
130 { 146
131 return null; 147 IObjectSet result = db.Get(new AssetStorage(assetID));
132 } 148 if (result.Count > 0)
133 } 149 {
134 150 foundAsset = (AssetStorage)result.Next();
135 public void setupDB() { 151 found = true;
136 bool yapfile=System.IO.File.Exists("assets.yap"); 152 }
137 try 153
138 { 154 if (found)
139 db = Db4oFactory.OpenFile("assets.yap"); 155 {
140 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Main.cs:setupDB() - creation"); 156 return foundAsset.Data;
141 } 157 }
142 catch (Exception e) 158 else
143 { 159 {
144 db.Close(); 160 return null;
145 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM,"Main.cs:setupDB() - Exception occured"); 161 }
146 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM,e.ToString()); 162 }
147 } 163
148 if (!yapfile) 164 public void setupDB()
149 { 165 {
150 this.LoadDB(); 166 bool yapfile = System.IO.File.Exists("assets.yap");
151 } 167 try
152 } 168 {
153 169 db = Db4oFactory.OpenFile("assets.yap");
154 public void LoadDB() { 170 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "Main.cs:setupDB() - creation");
155 try 171 }
156 { 172 catch (Exception e)
157 173 {
158 Console.WriteLine("setting up Asset database"); 174 db.Close();
159 175 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM, "Main.cs:setupDB() - Exception occured");
160 AssetBase Image = new AssetBase(); 176 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM, e.ToString());
161 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001"); 177 }
162 Image.Name = "Bricks"; 178 if (!yapfile)
163 this.LoadAsset(Image, true, "bricks.jp2"); 179 {
164 AssetStorage store = new AssetStorage(); 180 this.LoadDB();
165 store.Data = Image.Data; 181 }
166 store.Name = Image.Name; 182 }
167 store.UUID = Image.FullID; 183
168 db.Set(store); 184 public void LoadDB()
169 db.Commit(); 185 {
170 186 try
171 Image = new AssetBase(); 187 {
172 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002"); 188
173 Image.Name = "Plywood"; 189 Console.WriteLine("setting up Asset database");
174 this.LoadAsset(Image, true, "plywood.jp2"); 190
175 store = new AssetStorage(); 191 AssetBase Image = new AssetBase();
176 store.Data = Image.Data; 192 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001");
177 store.Name = Image.Name; 193 Image.Name = "Bricks";
178 store.UUID = Image.FullID; 194 this.LoadAsset(Image, true, "bricks.jp2");
179 db.Set(store); 195 AssetStorage store = new AssetStorage();
180 db.Commit(); 196 store.Data = Image.Data;
181 197 store.Name = Image.Name;
182 Image = new AssetBase(); 198 store.UUID = Image.FullID;
183 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003"); 199 db.Set(store);
184 Image.Name = "Rocks"; 200 db.Commit();
185 this.LoadAsset(Image, true, "rocks.jp2"); 201
186 store = new AssetStorage(); 202 Image = new AssetBase();
187 store.Data = Image.Data; 203 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002");
188 store.Name = Image.Name; 204 Image.Name = "Plywood";
189 store.UUID = Image.FullID; 205 this.LoadAsset(Image, true, "plywood.jp2");
190 db.Set(store); 206 store = new AssetStorage();
191 db.Commit(); 207 store.Data = Image.Data;
192 208 store.Name = Image.Name;
193 Image = new AssetBase(); 209 store.UUID = Image.FullID;
194 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004"); 210 db.Set(store);
195 Image.Name = "Granite"; 211 db.Commit();
196 this.LoadAsset(Image, true, "granite.jp2"); 212
197 store = new AssetStorage(); 213 Image = new AssetBase();
198 store.Data = Image.Data; 214 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003");
199 store.Name = Image.Name; 215 Image.Name = "Rocks";
200 store.UUID = Image.FullID; 216 this.LoadAsset(Image, true, "rocks.jp2");
201 db.Set(store); 217 store = new AssetStorage();
202 db.Commit(); 218 store.Data = Image.Data;
203 219 store.Name = Image.Name;
204 Image = new AssetBase(); 220 store.UUID = Image.FullID;
205 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005"); 221 db.Set(store);
206 Image.Name = "Hardwood"; 222 db.Commit();
207 this.LoadAsset(Image, true, "hardwood.jp2"); 223
208 store = new AssetStorage(); 224 Image = new AssetBase();
209 store.Data = Image.Data; 225 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004");
210 store.Name = Image.Name; 226 Image.Name = "Granite";
211 store.UUID = Image.FullID; 227 this.LoadAsset(Image, true, "granite.jp2");
212 db.Set(store); 228 store = new AssetStorage();
213 db.Commit(); 229 store.Data = Image.Data;
214 230 store.Name = Image.Name;
215 Image = new AssetBase(); 231 store.UUID = Image.FullID;
216 Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005"); 232 db.Set(store);
217 Image.Name = "Prim Base Texture"; 233 db.Commit();
218 this.LoadAsset(Image, true, "plywood.jp2"); 234
219 store = new AssetStorage(); 235 Image = new AssetBase();
220 store.Data = Image.Data; 236 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005");
221 store.Name = Image.Name; 237 Image.Name = "Hardwood";
222 store.UUID = Image.FullID; 238 this.LoadAsset(Image, true, "hardwood.jp2");
223 db.Set(store); 239 store = new AssetStorage();
224 db.Commit(); 240 store.Data = Image.Data;
225 241 store.Name = Image.Name;
226 Image = new AssetBase(); 242 store.UUID = Image.FullID;
227 Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73"); 243 db.Set(store);
228 Image.Name = "Shape"; 244 db.Commit();
229 this.LoadAsset(Image, false, "base_shape.dat"); 245
230 store = new AssetStorage(); 246 Image = new AssetBase();
231 store.Data = Image.Data; 247 Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005");
232 store.Name = Image.Name; 248 Image.Name = "Prim Base Texture";
233 store.UUID = Image.FullID; 249 this.LoadAsset(Image, true, "plywood.jp2");
234 db.Set(store); 250 store = new AssetStorage();
235 db.Commit(); 251 store.Data = Image.Data;
236 } 252 store.Name = Image.Name;
237 catch (Exception e) 253 store.UUID = Image.FullID;
238 { 254 db.Set(store);
239 Console.WriteLine(e.Message); 255 db.Commit();
240 } 256
241 } 257 Image = new AssetBase();
242 258 Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
243 private void LoadAsset(AssetBase info, bool image, string filename) 259 Image.Name = "Shape";
260 this.LoadAsset(Image, false, "base_shape.dat");
261 store = new AssetStorage();
262 store.Data = Image.Data;
263 store.Name = Image.Name;
264 store.UUID = Image.FullID;
265 db.Set(store);
266 db.Commit();
267 }
268 catch (Exception e)
269 {
270 Console.WriteLine(e.Message);
271 }
272 }
273
274 private void LoadAsset(AssetBase info, bool image, string filename)
244 { 275 {
245 276
246 277
@@ -291,7 +322,7 @@ namespace OpenGridServices.AssetServer
291 switch (cmd) 322 switch (cmd)
292 { 323 {
293 case "help": 324 case "help":
294 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH,"shutdown - shutdown this asset server (USE CAUTION!)"); 325 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH, "shutdown - shutdown this asset server (USE CAUTION!)");
295 break; 326 break;
296 327
297 case "shutdown": 328 case "shutdown":
diff --git a/OpenGridServices.AssetServer/OpenGridServices.AssetServer.csproj b/OpenGridServices.AssetServer/OpenGridServices.AssetServer.csproj
index 0392d9f..d01a52e 100644
--- a/OpenGridServices.AssetServer/OpenGridServices.AssetServer.csproj
+++ b/OpenGridServices.AssetServer/OpenGridServices.AssetServer.csproj
@@ -112,6 +112,9 @@
112 </ProjectReference> 112 </ProjectReference>
113 </ItemGroup> 113 </ItemGroup>
114 <ItemGroup> 114 <ItemGroup>
115 <Compile Include="AssetHttpServer.cs">
116 <SubType>Code</SubType>
117 </Compile>
115 <Compile Include="Main.cs"> 118 <Compile Include="Main.cs">
116 <SubType>Code</SubType> 119 <SubType>Code</SubType>
117 </Compile> 120 </Compile>
diff --git a/OpenGridServices.AssetServer/OpenGridServices.AssetServer.exe.build b/OpenGridServices.AssetServer/OpenGridServices.AssetServer.exe.build
index a2b1e37..cd76f22 100644
--- a/OpenGridServices.AssetServer/OpenGridServices.AssetServer.exe.build
+++ b/OpenGridServices.AssetServer/OpenGridServices.AssetServer.exe.build
@@ -11,6 +11,7 @@
11 <resources prefix="OpenGridServices.AssetServer" dynamicprefix="true" > 11 <resources prefix="OpenGridServices.AssetServer" dynamicprefix="true" >
12 </resources> 12 </resources>
13 <sources failonempty="true"> 13 <sources failonempty="true">
14 <include name="AssetHttpServer.cs" />
14 <include name="Main.cs" /> 15 <include name="Main.cs" />
15 <include name="Properties/AssemblyInfo.cs" /> 16 <include name="Properties/AssemblyInfo.cs" />
16 </sources> 17 </sources>
diff --git a/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs b/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs
index d79073a..7432dee 100644
--- a/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs
+++ b/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs
@@ -49,6 +49,11 @@ namespace OpenSim.GridInterfaces.Remote
49 49
50 public void UploadNewAsset(AssetBase asset) 50 public void UploadNewAsset(AssetBase asset)
51 { 51 {
52 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
53 string ret = Windows1252Encoding.GetString(asset.Data);
54 byte[] buffer = Windows1252Encoding.GetBytes(ret);
55 WebClient client = new WebClient();
56 client.UploadData(this.AssetServerUrl + "assets/" + asset.FullID, buffer);
52 57
53 } 58 }
54 59
@@ -66,14 +71,14 @@ namespace OpenSim.GridInterfaces.Remote
66 // 404... THE MAGIC FILE NOT FOUND ERROR, very useful for telling you things such as a file (or asset ;) ) not being found!!!!!!!!!!! it's 2:22AM 71 // 404... THE MAGIC FILE NOT FOUND ERROR, very useful for telling you things such as a file (or asset ;) ) not being found!!!!!!!!!!! it's 2:22AM
67 ARequest req = this._assetRequests.Dequeue(); 72 ARequest req = this._assetRequests.Dequeue();
68 LLUUID assetID = req.AssetID; 73 LLUUID assetID = req.AssetID;
69 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW," RemoteAssetServer- Got a AssetServer request, processing it - " + this.AssetServerUrl + "assets/" + assetID); 74 // OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW," RemoteAssetServer- Got a AssetServer request, processing it - " + this.AssetServerUrl + "assets/" + assetID);
70 WebRequest AssetLoad = WebRequest.Create(this.AssetServerUrl + "assets/" + assetID); 75 WebRequest AssetLoad = WebRequest.Create(this.AssetServerUrl + "assets/" + assetID);
71 WebResponse AssetResponse = AssetLoad.GetResponse(); 76 WebResponse AssetResponse = AssetLoad.GetResponse();
72 byte[] idata = new byte[(int)AssetResponse.ContentLength]; 77 byte[] idata = new byte[(int)AssetResponse.ContentLength];
73 BinaryReader br = new BinaryReader(AssetResponse.GetResponseStream()); 78 BinaryReader br = new BinaryReader(AssetResponse.GetResponseStream());
74 idata = br.ReadBytes((int)AssetResponse.ContentLength); 79 idata = br.ReadBytes((int)AssetResponse.ContentLength);
75 br.Close(); 80 br.Close();
76 81
77 AssetBase asset = new AssetBase(); 82 AssetBase asset = new AssetBase();
78 asset.FullID = assetID; 83 asset.FullID = assetID;
79 asset.Data = idata; 84 asset.Data = idata;
diff --git a/OpenSim.RegionServer/Assets/AssetCache.cs b/OpenSim.RegionServer/Assets/AssetCache.cs
index e217d78..e8bf292 100644
--- a/OpenSim.RegionServer/Assets/AssetCache.cs
+++ b/OpenSim.RegionServer/Assets/AssetCache.cs
@@ -96,7 +96,7 @@ namespace OpenSim.Assets
96 { 96 {
97 //hack: so we can give each user a set of textures 97 //hack: so we can give each user a set of textures
98 textureList[0] = new LLUUID("00000000-0000-0000-9999-000000000001"); 98 textureList[0] = new LLUUID("00000000-0000-0000-9999-000000000001");
99 textureList[1] = new LLUUID("00000000-0000-0000-9999-000000000002"); 99 textureList[1] = new LLUUID("00000000-0000-0000-9999-000000000002");
100 textureList[2] = new LLUUID("00000000-0000-0000-9999-000000000003"); 100 textureList[2] = new LLUUID("00000000-0000-0000-9999-000000000003");
101 textureList[3] = new LLUUID("00000000-0000-0000-9999-000000000004"); 101 textureList[3] = new LLUUID("00000000-0000-0000-9999-000000000004");
102 textureList[4] = new LLUUID("00000000-0000-0000-9999-000000000005"); 102 textureList[4] = new LLUUID("00000000-0000-0000-9999-000000000005");
diff --git a/OpenSim.RegionServer/OpenSimMain.cs b/OpenSim.RegionServer/OpenSimMain.cs
index fa13064..fc604b7 100644
--- a/OpenSim.RegionServer/OpenSimMain.cs
+++ b/OpenSim.RegionServer/OpenSimMain.cs
@@ -130,7 +130,7 @@ namespace OpenSim
130 GridServers = new Grid(); 130 GridServers = new Grid();
131 if (m_sandbox) 131 if (m_sandbox)
132 { 132 {
133 GridServers.AssetDll = "OpenSim.GridInterfaces.Local.dll"; 133 GridServers.AssetDll = "OpenSim.GridInterfaces.Local.dll";
134 GridServers.GridDll = "OpenSim.GridInterfaces.Local.dll"; 134 GridServers.GridDll = "OpenSim.GridInterfaces.Local.dll";
135 135
136 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Starting in Sandbox mode"); 136 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Starting in Sandbox mode");
@@ -177,7 +177,7 @@ namespace OpenSim
177 177
178 178
179 //should be passing a IGenericConfig object to these so they can read the config data they want from it 179 //should be passing a IGenericConfig object to these so they can read the config data they want from it
180 GridServers.AssetServer.SetServerInfo(regionData.AssetURL, regionData.AssetSendKey); 180 GridServers.AssetServer.SetServerInfo(regionData.AssetURL, regionData.AssetSendKey);
181 IGridServer gridServer = GridServers.GridServer; 181 IGridServer gridServer = GridServers.GridServer;
182 gridServer.SetServerInfo(regionData.GridURL, regionData.GridSendKey, regionData.GridRecvKey); 182 gridServer.SetServerInfo(regionData.GridURL, regionData.GridSendKey, regionData.GridRecvKey);
183 183
diff --git a/OpenSim.RegionServer/RegionInfo.cs b/OpenSim.RegionServer/RegionInfo.cs
index edab1e5..2707257 100644
--- a/OpenSim.RegionServer/RegionInfo.cs
+++ b/OpenSim.RegionServer/RegionInfo.cs
@@ -25,7 +25,7 @@ namespace OpenSim
25 25
26 //following should be removed and the GenericConfig object passed around, 26 //following should be removed and the GenericConfig object passed around,
27 //so each class (AssetServer, GridServer etc) can access what config data they want 27 //so each class (AssetServer, GridServer etc) can access what config data they want
28 public string AssetURL = ""; 28 public string AssetURL = "http://127.0.0.1:8003/";
29 public string AssetSendKey = ""; 29 public string AssetSendKey = "";
30 30
31 public string GridURL = ""; 31 public string GridURL = "";
@@ -230,6 +230,17 @@ namespace OpenSim
230 this.GridRecvKey = attri; 230 this.GridRecvKey = attri;
231 } 231 }
232 232
233 attri = "";
234 attri = configData.GetAttribute("AssetServerURL");
235 if (attri == "")
236 {
237 this.AssetURL = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Asset server URL", "http://127.0.0.1:8003/");
238 configData.SetAttribute("AssetServerURL", this.GridURL);
239 }
240 else
241 {
242 this.AssetURL = attri;
243 }
233 244
234 } 245 }
235 this.RegionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256)); 246 this.RegionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256));
diff --git a/OpenSim.Servers/BaseHttpServer.cs b/OpenSim.Servers/BaseHttpServer.cs
index a14e5c3..38f4370 100644
--- a/OpenSim.Servers/BaseHttpServer.cs
+++ b/OpenSim.Servers/BaseHttpServer.cs
@@ -26,14 +26,14 @@ namespace OpenSim.Servers
26 { 26 {
27 get { return m_restMethod; } 27 get { return m_restMethod; }
28 } 28 }
29 29
30 public RestMethodEntry( string path, RestMethod restMethod ) 30 public RestMethodEntry(string path, RestMethod restMethod)
31 { 31 {
32 m_path = path; 32 m_path = path;
33 m_restMethod = restMethod; 33 m_restMethod = restMethod;
34 } 34 }
35 } 35 }
36 36
37 protected Thread m_workerThread; 37 protected Thread m_workerThread;
38 protected HttpListener m_httpListener; 38 protected HttpListener m_httpListener;
39 protected Dictionary<string, RestMethodEntry> m_restHandlers = new Dictionary<string, RestMethodEntry>(); 39 protected Dictionary<string, RestMethodEntry> m_restHandlers = new Dictionary<string, RestMethodEntry>();
@@ -48,10 +48,10 @@ namespace OpenSim.Servers
48 public bool AddRestHandler(string method, string path, RestMethod handler) 48 public bool AddRestHandler(string method, string path, RestMethod handler)
49 { 49 {
50 string methodKey = String.Format("{0}: {1}", method, path); 50 string methodKey = String.Format("{0}: {1}", method, path);
51 51
52 if (!this.m_restHandlers.ContainsKey(methodKey)) 52 if (!this.m_restHandlers.ContainsKey(methodKey))
53 { 53 {
54 this.m_restHandlers.Add(methodKey, new RestMethodEntry( path, handler )); 54 this.m_restHandlers.Add(methodKey, new RestMethodEntry(path, handler));
55 return true; 55 return true;
56 } 56 }
57 57
@@ -74,9 +74,9 @@ namespace OpenSim.Servers
74 protected virtual string ProcessXMLRPCMethod(string methodName, XmlRpcRequest request) 74 protected virtual string ProcessXMLRPCMethod(string methodName, XmlRpcRequest request)
75 { 75 {
76 XmlRpcResponse response; 76 XmlRpcResponse response;
77 77
78 XmlRpcMethod method; 78 XmlRpcMethod method;
79 if( this.m_rpcHandlers.TryGetValue( methodName, out method ) ) 79 if (this.m_rpcHandlers.TryGetValue(methodName, out method))
80 { 80 {
81 response = method(request); 81 response = method(request);
82 } 82 }
@@ -96,15 +96,15 @@ namespace OpenSim.Servers
96 protected virtual string ParseREST(string request, string path, string method) 96 protected virtual string ParseREST(string request, string path, string method)
97 { 97 {
98 string response; 98 string response;
99 99
100 string requestKey = String.Format("{0}: {1}", method, path); 100 string requestKey = String.Format("{0}: {1}", method, path);
101 101
102 string bestMatch = String.Empty; 102 string bestMatch = String.Empty;
103 foreach( string currentKey in m_restHandlers.Keys ) 103 foreach (string currentKey in m_restHandlers.Keys)
104 { 104 {
105 if( requestKey.StartsWith( currentKey )) 105 if (requestKey.StartsWith(currentKey))
106 { 106 {
107 if(currentKey.Length > bestMatch.Length ) 107 if (currentKey.Length > bestMatch.Length)
108 { 108 {
109 bestMatch = currentKey; 109 bestMatch = currentKey;
110 } 110 }
@@ -116,9 +116,9 @@ namespace OpenSim.Servers
116 { 116 {
117 RestMethod restMethod = restMethodEntry.RestMethod; 117 RestMethod restMethod = restMethodEntry.RestMethod;
118 118
119 string param = path.Substring( restMethodEntry.Path.Length ); 119 string param = path.Substring(restMethodEntry.Path.Length);
120 response = restMethod(request, path, param); 120 response = restMethod(request, path, param);
121 121
122 } 122 }
123 else 123 else
124 { 124 {
@@ -144,7 +144,7 @@ namespace OpenSim.Servers
144 144
145 string methodName = request.MethodName; 145 string methodName = request.MethodName;
146 146
147 responseString = ProcessXMLRPCMethod(methodName, request ); 147 responseString = ProcessXMLRPCMethod(methodName, request);
148 } 148 }
149 catch (Exception e) 149 catch (Exception e)
150 { 150 {
@@ -155,83 +155,86 @@ namespace OpenSim.Servers
155 155
156 public virtual void HandleRequest(Object stateinfo) 156 public virtual void HandleRequest(Object stateinfo)
157 { 157 {
158 try { 158 try
159 HttpListenerContext context = (HttpListenerContext)stateinfo; 159 {
160 160 HttpListenerContext context = (HttpListenerContext)stateinfo;
161 HttpListenerRequest request = context.Request; 161
162 HttpListenerResponse response = context.Response; 162 HttpListenerRequest request = context.Request;
163 163 HttpListenerResponse response = context.Response;
164 response.KeepAlive = false; 164
165 response.SendChunked = false; 165 response.KeepAlive = false;
166 166 response.SendChunked = false;
167 System.IO.Stream body = request.InputStream; 167
168 System.Text.Encoding encoding = System.Text.Encoding.UTF8; 168 System.IO.Stream body = request.InputStream;
169 System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding); 169 System.Text.Encoding encoding = System.Text.Encoding.UTF8;
170 170 System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding);
171 string requestBody = reader.ReadToEnd(); 171
172 body.Close(); 172 string requestBody = reader.ReadToEnd();
173 reader.Close(); 173 body.Close();
174 174 reader.Close();
175 //Console.WriteLine(request.HttpMethod + " " + request.RawUrl + " Http/" + request.ProtocolVersion.ToString() + " content type: " + request.ContentType); 175
176 //Console.WriteLine(requestBody); 176 //Console.WriteLine(request.HttpMethod + " " + request.RawUrl + " Http/" + request.ProtocolVersion.ToString() + " content type: " + request.ContentType);
177 177 //Console.WriteLine(requestBody);
178 string responseString = ""; 178
179 switch (request.ContentType) 179 string responseString = "";
180 { 180 switch (request.ContentType)
181 case "text/xml": 181 {
182 // must be XML-RPC, so pass to the XML-RPC parser 182 case "text/xml":
183 183 // must be XML-RPC, so pass to the XML-RPC parser
184 responseString = ParseXMLRPC(requestBody); 184
185 responseString = Regex.Replace(responseString, "utf-16", "utf-8"); 185 responseString = ParseXMLRPC(requestBody);
186 186 responseString = Regex.Replace(responseString, "utf-16", "utf-8");
187 response.AddHeader("Content-type", "text/xml"); 187
188 break; 188 response.AddHeader("Content-type", "text/xml");
189 189 break;
190 case "application/xml": 190
191 // probably LLSD we hope, otherwise it should be ignored by the parser 191 case "application/xml":
192 responseString = ParseLLSDXML(requestBody); 192 // probably LLSD we hope, otherwise it should be ignored by the parser
193 response.AddHeader("Content-type", "application/xml"); 193 responseString = ParseLLSDXML(requestBody);
194 break; 194 response.AddHeader("Content-type", "application/xml");
195 195 break;
196 case "application/x-www-form-urlencoded": 196
197 // a form data POST so send to the REST parser 197 case "application/x-www-form-urlencoded":
198 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); 198 // a form data POST so send to the REST parser
199 response.AddHeader("Content-type", "text/html"); 199 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
200 break; 200 response.AddHeader("Content-type", "text/html");
201 201 break;
202 case null: 202
203 // must be REST or invalid crap, so pass to the REST parser 203 case null:
204 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); 204 // must be REST or invalid crap, so pass to the REST parser
205 response.AddHeader("Content-type", "text/html"); 205 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
206 break; 206 response.AddHeader("Content-type", "text/html");
207 207 break;
208 } 208
209 209 }
210 byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); 210
211 System.IO.Stream output = response.OutputStream; 211 byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
212 response.SendChunked = false; 212 System.IO.Stream output = response.OutputStream;
213 response.ContentLength64 = buffer.Length; 213 response.SendChunked = false;
214 output.Write(buffer, 0, buffer.Length); 214 response.ContentLength64 = buffer.Length;
215 output.Close(); 215 output.Write(buffer, 0, buffer.Length);
216 } catch (Exception e) { 216 output.Close();
217 Console.WriteLine(e.ToString()); 217 }
218 } 218 catch (Exception e)
219 {
220 Console.WriteLine(e.ToString());
221 }
219 } 222 }
220 223
221 public void Start() 224 public void Start()
222 { 225 {
223 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.LOW,"BaseHttpServer.cs: Starting up HTTP Server"); 226 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: Starting up HTTP Server");
224 227
225 m_workerThread = new Thread(new ThreadStart(StartHTTP)); 228 m_workerThread = new Thread(new ThreadStart(StartHTTP));
226 m_workerThread.IsBackground = true; 229 m_workerThread.IsBackground = true;
227 m_workerThread.Start(); 230 m_workerThread.Start();
228 } 231 }
229 232
230 private void StartHTTP() 233 private void StartHTTP()
231 { 234 {
232 try 235 try
233 { 236 {
234 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.LOW,"BaseHttpServer.cs: StartHTTP() - Spawned main thread OK"); 237 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: StartHTTP() - Spawned main thread OK");
235 m_httpListener = new HttpListener(); 238 m_httpListener = new HttpListener();
236 239
237 m_httpListener.Prefixes.Add("http://+:" + m_port + "/"); 240 m_httpListener.Prefixes.Add("http://+:" + m_port + "/");
@@ -246,7 +249,7 @@ namespace OpenSim.Servers
246 } 249 }
247 catch (Exception e) 250 catch (Exception e)
248 { 251 {
249 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.MEDIUM,e.Message); 252 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.MEDIUM, e.Message);
250 } 253 }
251 } 254 }
252 } 255 }
diff --git a/OpenSim.sln b/OpenSim.sln
index db4f96d..3c914ea 100644
--- a/OpenSim.sln
+++ b/OpenSim.sln
@@ -1,5 +1,5 @@
1Microsoft Visual Studio Solution File, Format Version 9.00 1Microsoft Visual Studio Solution File, Format Version 9.00
2# Visual C# Express 2005 2# Visual Studio 2005
3Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Terrain.BasicTerrain", "OpenSim.Terrain.BasicTerrain\OpenSim.Terrain.BasicTerrain.csproj", "{2270B8FE-0000-0000-0000-000000000000}" 3Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Terrain.BasicTerrain", "OpenSim.Terrain.BasicTerrain\OpenSim.Terrain.BasicTerrain.csproj", "{2270B8FE-0000-0000-0000-000000000000}"
4EndProject 4EndProject
5Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Storage.LocalStorageBerkeleyDB", "OpenSim.Storage\LocalStorageBerkeleyDB\OpenSim.Storage.LocalStorageBerkeleyDB.csproj", "{EE9E5D96-0000-0000-0000-000000000000}" 5Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Storage.LocalStorageBerkeleyDB", "OpenSim.Storage\LocalStorageBerkeleyDB\OpenSim.Storage.LocalStorageBerkeleyDB.csproj", "{EE9E5D96-0000-0000-0000-000000000000}"
@@ -61,133 +61,195 @@ EndProject
61Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XMLRPC", "XmlRpcCS\XMLRPC.csproj", "{8E81D43C-0000-0000-0000-000000000000}" 61Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XMLRPC", "XmlRpcCS\XMLRPC.csproj", "{8E81D43C-0000-0000-0000-000000000000}"
62EndProject 62EndProject
63Global 63Global
64 GlobalSection(SolutionConfigurationPlatforms) = preSolution 64 GlobalSection(SolutionConfigurationPlatforms) = preSolution
65 Debug|Any CPU = Debug|Any CPU 65 Debug|Any CPU = Debug|Any CPU
66 Release|Any CPU = Release|Any CPU 66 Release|Any CPU = Release|Any CPU
67 EndGlobalSection 67 EndGlobalSection
68 GlobalSection(ProjectConfigurationPlatforms) = postSolution 68 GlobalSection(ProjectDependencies) = postSolution
69 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 69 ({EE9E5D96-0000-0000-0000-000000000000}).6 = ({8ACA2445-0000-0000-0000-000000000000})
70 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 70 ({EE9E5D96-0000-0000-0000-000000000000}).7 = ({A7CD0630-0000-0000-0000-000000000000})
71 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 71 ({63A05FE9-0000-0000-0000-000000000000}).2 = ({8BE16150-0000-0000-0000-000000000000})
72 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 72 ({438A9556-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
73 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 73 ({438A9556-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
74 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 74 ({438A9556-0000-0000-0000-000000000000}).7 = ({8BE16150-0000-0000-0000-000000000000})
75 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 75 ({438A9556-0000-0000-0000-000000000000}).8 = ({8BB20F0A-0000-0000-0000-000000000000})
76 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 76 ({438A9556-0000-0000-0000-000000000000}).9 = ({632E1BFD-0000-0000-0000-000000000000})
77 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 77 ({632E1BFD-0000-0000-0000-000000000000}).5 = ({2270B8FE-0000-0000-0000-000000000000})
78 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 78 ({632E1BFD-0000-0000-0000-000000000000}).6 = ({8ACA2445-0000-0000-0000-000000000000})
79 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 79 ({632E1BFD-0000-0000-0000-000000000000}).7 = ({A7CD0630-0000-0000-0000-000000000000})
80 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 80 ({632E1BFD-0000-0000-0000-000000000000}).8 = ({E88EF749-0000-0000-0000-000000000000})
81 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 81 ({632E1BFD-0000-0000-0000-000000000000}).9 = ({8BE16150-0000-0000-0000-000000000000})
82 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 82 ({632E1BFD-0000-0000-0000-000000000000}).10 = ({8BB20F0A-0000-0000-0000-000000000000})
83 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 83 ({632E1BFD-0000-0000-0000-000000000000}).11 = ({8E81D43C-0000-0000-0000-000000000000})
84 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 84 ({8ACA2445-0000-0000-0000-000000000000}).4 = ({8E81D43C-0000-0000-0000-000000000000})
85 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 85 ({8BE16150-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
86 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 86 ({8BE16150-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
87 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 87 ({97A82740-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
88 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 88 ({0F3C3AC1-0000-0000-0000-000000000000}).3 = ({62CDF671-0000-0000-0000-000000000000})
89 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 89 ({E88EF749-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
90 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 90 ({66591469-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
91 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 91 ({66591469-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
92 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 92 ({66591469-0000-0000-0000-000000000000}).5 = ({8BB20F0A-0000-0000-0000-000000000000})
93 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 93 ({66591469-0000-0000-0000-000000000000}).8 = ({8E81D43C-0000-0000-0000-000000000000})
94 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 94 ({4F874463-0000-0000-0000-000000000000}).2 = ({8BE16150-0000-0000-0000-000000000000})
95 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 95 ({8BB20F0A-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
96 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 96 ({8BB20F0A-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000})
97 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 97 ({8BB20F0A-0000-0000-0000-000000000000}).5 = ({8E81D43C-0000-0000-0000-000000000000})
98 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 98 ({B0027747-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
99 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 99 ({B0027747-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
100 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 100 ({988F0AC4-0000-0000-0000-000000000000}).3 = ({8BE16150-0000-0000-0000-000000000000})
101 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 101 ({0A563AC1-0000-0000-0000-000000000000}).3 = ({62CDF671-0000-0000-0000-000000000000})
102 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 102 ({7924FD35-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000})
103 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 103 ({7924FD35-0000-0000-0000-000000000000}).2 = ({8BB20F0A-0000-0000-0000-000000000000})
104 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 104 ({7924FD35-0000-0000-0000-000000000000}).3 = ({8E81D43C-0000-0000-0000-000000000000})
105 {0F3C3AC1-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 105 ({B55C0B5D-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
106 {0F3C3AC1-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 106 ({B55C0B5D-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
107 {0F3C3AC1-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 107 ({B55C0B5D-0000-0000-0000-000000000000}).5 = ({8E81D43C-0000-0000-0000-000000000000})
108 {0F3C3AC1-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 108 ({21BFC8E2-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
109 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 109 ({21BFC8E2-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
110 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 110 ({21BFC8E2-0000-0000-0000-000000000000}).5 = ({8BB20F0A-0000-0000-0000-000000000000})
111 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 111 ({21BFC8E2-0000-0000-0000-000000000000}).6 = ({62CDF671-0000-0000-0000-000000000000})
112 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 112 ({21BFC8E2-0000-0000-0000-000000000000}).7 = ({7924FD35-0000-0000-0000-000000000000})
113 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 113 ({21BFC8E2-0000-0000-0000-000000000000}).10 = ({8E81D43C-0000-0000-0000-000000000000})
114 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 114 ({E1B79ECF-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000})
115 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 115 ({E1B79ECF-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000})
116 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 116 ({6B20B603-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
117 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 117 ({6B20B603-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
118 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 118 ({39BD9497-0000-0000-0000-000000000000}).3 = ({62CDF671-0000-0000-0000-000000000000})
119 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 119 ({7E494328-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
120 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 120 ({7E494328-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
121 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 121 ({1E3F341A-0000-0000-0000-000000000000}).4 = ({62CDF671-0000-0000-0000-000000000000})
122 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 122 ({546099CD-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000})
123 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 123 ({546099CD-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000})
124 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 124 ({0021261B-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
125 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 125 ({0021261B-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
126 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 126 ({0021261B-0000-0000-0000-000000000000}).5 = ({546099CD-0000-0000-0000-000000000000})
127 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 127 ({0021261B-0000-0000-0000-000000000000}).6 = ({8BB20F0A-0000-0000-0000-000000000000})
128 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 128 ({0021261B-0000-0000-0000-000000000000}).9 = ({8E81D43C-0000-0000-0000-000000000000})
129 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 129 EndGlobalSection
130 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 130 GlobalSection(ProjectConfigurationPlatforms) = postSolution
131 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 131 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
132 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 132 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
133 {0A563AC1-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 133 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
134 {0A563AC1-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 134 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
135 {0A563AC1-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 135 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
136 {0A563AC1-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 136 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
137 {7924FD35-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 137 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
138 {7924FD35-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 138 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
139 {7924FD35-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 139 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
140 {7924FD35-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 140 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
141 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 141 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
142 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 142 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
143 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 143 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
144 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 144 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
145 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 145 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
146 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 146 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
147 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 147 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
148 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 148 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
149 {62CDF671-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 149 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
150 {62CDF671-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 150 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
151 {62CDF671-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 151 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
152 {62CDF671-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 152 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
153 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 153 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
154 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 154 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
155 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 155 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
156 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 156 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
157 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 157 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
158 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 158 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
159 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 159 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
160 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 160 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
161 {39BD9497-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 161 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
162 {39BD9497-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 162 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
163 {39BD9497-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 163 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
164 {39BD9497-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 164 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
165 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 165 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
166 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 166 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
167 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 167 {0F3C3AC1-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
168 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 168 {0F3C3AC1-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
169 {E141F4EE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 169 {0F3C3AC1-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
170 {E141F4EE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 170 {0F3C3AC1-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
171 {E141F4EE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 171 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
172 {E141F4EE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 172 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
173 {1E3F341A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 173 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
174 {1E3F341A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 174 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
175 {1E3F341A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 175 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
176 {1E3F341A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 176 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
177 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 177 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
178 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 178 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
179 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 179 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
180 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 180 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
181 {0021261B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 181 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
182 {0021261B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 182 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
183 {0021261B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 183 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
184 {0021261B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 184 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
185 {8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 185 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
186 {8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 186 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
187 {8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 187 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
188 {8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 188 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
189 EndGlobalSection 189 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
190 GlobalSection(SolutionProperties) = preSolution 190 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
191 HideSolutionNode = FALSE 191 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
192 EndGlobalSection 192 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
193 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
194 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
195 {0A563AC1-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
196 {0A563AC1-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
197 {0A563AC1-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
198 {0A563AC1-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
199 {7924FD35-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
200 {7924FD35-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
201 {7924FD35-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
202 {7924FD35-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
203 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
204 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
205 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
206 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
207 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
208 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
209 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
210 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
211 {62CDF671-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
212 {62CDF671-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
213 {62CDF671-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
214 {62CDF671-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
215 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
216 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
217 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
218 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
219 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
220 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
221 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
222 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
223 {39BD9497-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
224 {39BD9497-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
225 {39BD9497-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
226 {39BD9497-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
227 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
228 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
229 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
230 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
231 {E141F4EE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
232 {E141F4EE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
233 {E141F4EE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
234 {E141F4EE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
235 {1E3F341A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
236 {1E3F341A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
237 {1E3F341A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
238 {1E3F341A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
239 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
240 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
241 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
242 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
243 {0021261B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
244 {0021261B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
245 {0021261B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
246 {0021261B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
247 {8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
248 {8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
249 {8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
250 {8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
251 EndGlobalSection
252 GlobalSection(SolutionProperties) = preSolution
253 HideSolutionNode = FALSE
254 EndGlobalSection
193EndGlobal 255EndGlobal
diff --git a/ServiceManager/ServiceManager.csproj b/ServiceManager/ServiceManager.csproj
index ac118c3..f703ef1 100644
--- a/ServiceManager/ServiceManager.csproj
+++ b/ServiceManager/ServiceManager.csproj
@@ -1,4 +1,4 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup> 2 <PropertyGroup>
3 <ProjectType>Local</ProjectType> 3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion> 4 <ProductVersion>8.0.50727</ProductVersion>
@@ -6,8 +6,7 @@
6 <ProjectGuid>{E141F4EE-0000-0000-0000-000000000000}</ProjectGuid> 6 <ProjectGuid>{E141F4EE-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon> 9 <ApplicationIcon></ApplicationIcon>
10 </ApplicationIcon>
11 <AssemblyKeyContainerName> 10 <AssemblyKeyContainerName>
12 </AssemblyKeyContainerName> 11 </AssemblyKeyContainerName>
13 <AssemblyName>ServiceManager</AssemblyName> 12 <AssemblyName>ServiceManager</AssemblyName>
@@ -16,11 +15,9 @@
16 <DefaultTargetSchema>IE50</DefaultTargetSchema> 15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
17 <DelaySign>false</DelaySign> 16 <DelaySign>false</DelaySign>
18 <OutputType>Exe</OutputType> 17 <OutputType>Exe</OutputType>
19 <AppDesignerFolder> 18 <AppDesignerFolder></AppDesignerFolder>
20 </AppDesignerFolder>
21 <RootNamespace>ServiceManager</RootNamespace> 19 <RootNamespace>ServiceManager</RootNamespace>
22 <StartupObject> 20 <StartupObject></StartupObject>
23 </StartupObject>
24 <FileUpgradeFlags> 21 <FileUpgradeFlags>
25 </FileUpgradeFlags> 22 </FileUpgradeFlags>
26 </PropertyGroup> 23 </PropertyGroup>
@@ -31,8 +28,7 @@
31 <ConfigurationOverrideFile> 28 <ConfigurationOverrideFile>
32 </ConfigurationOverrideFile> 29 </ConfigurationOverrideFile>
33 <DefineConstants>TRACE;DEBUG</DefineConstants> 30 <DefineConstants>TRACE;DEBUG</DefineConstants>
34 <DocumentationFile> 31 <DocumentationFile></DocumentationFile>
35 </DocumentationFile>
36 <DebugSymbols>True</DebugSymbols> 32 <DebugSymbols>True</DebugSymbols>
37 <FileAlignment>4096</FileAlignment> 33 <FileAlignment>4096</FileAlignment>
38 <Optimize>False</Optimize> 34 <Optimize>False</Optimize>
@@ -41,8 +37,7 @@
41 <RemoveIntegerChecks>False</RemoveIntegerChecks> 37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
42 <TreatWarningsAsErrors>False</TreatWarningsAsErrors> 38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
43 <WarningLevel>4</WarningLevel> 39 <WarningLevel>4</WarningLevel>
44 <NoWarn> 40 <NoWarn></NoWarn>
45 </NoWarn>
46 </PropertyGroup> 41 </PropertyGroup>
47 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
48 <AllowUnsafeBlocks>False</AllowUnsafeBlocks> 43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
@@ -51,8 +46,7 @@
51 <ConfigurationOverrideFile> 46 <ConfigurationOverrideFile>
52 </ConfigurationOverrideFile> 47 </ConfigurationOverrideFile>
53 <DefineConstants>TRACE</DefineConstants> 48 <DefineConstants>TRACE</DefineConstants>
54 <DocumentationFile> 49 <DocumentationFile></DocumentationFile>
55 </DocumentationFile>
56 <DebugSymbols>False</DebugSymbols> 50 <DebugSymbols>False</DebugSymbols>
57 <FileAlignment>4096</FileAlignment> 51 <FileAlignment>4096</FileAlignment>
58 <Optimize>True</Optimize> 52 <Optimize>True</Optimize>
@@ -61,19 +55,18 @@
61 <RemoveIntegerChecks>False</RemoveIntegerChecks> 55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
62 <TreatWarningsAsErrors>False</TreatWarningsAsErrors> 56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
63 <WarningLevel>4</WarningLevel> 57 <WarningLevel>4</WarningLevel>
64 <NoWarn> 58 <NoWarn></NoWarn>
65 </NoWarn>
66 </PropertyGroup> 59 </PropertyGroup>
67 <ItemGroup> 60 <ItemGroup>
68 <Reference Include="System"> 61 <Reference Include="System" >
69 <HintPath>System.dll</HintPath> 62 <HintPath>System.dll</HintPath>
70 <Private>False</Private> 63 <Private>False</Private>
71 </Reference> 64 </Reference>
72 <Reference Include="System.ServiceProcess"> 65 <Reference Include="System.ServiceProcess" >
73 <HintPath>System.ServiceProcess.dll</HintPath> 66 <HintPath>System.ServiceProcess.dll</HintPath>
74 <Private>False</Private> 67 <Private>False</Private>
75 </Reference> 68 </Reference>
76 <Reference Include="System.Xml"> 69 <Reference Include="System.Xml" >
77 <HintPath>System.Xml.dll</HintPath> 70 <HintPath>System.Xml.dll</HintPath>
78 <Private>False</Private> 71 <Private>False</Private>
79 </Reference> 72 </Reference>
@@ -82,7 +75,7 @@
82 </ItemGroup> 75 </ItemGroup>
83 <ItemGroup> 76 <ItemGroup>
84 <Compile Include="ServiceManager.cs"> 77 <Compile Include="ServiceManager.cs">
85 <SubType>Component</SubType> 78 <SubType>Code</SubType>
86 </Compile> 79 </Compile>
87 </ItemGroup> 80 </ItemGroup>
88 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> 81 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
@@ -92,4 +85,4 @@
92 <PostBuildEvent> 85 <PostBuildEvent>
93 </PostBuildEvent> 86 </PostBuildEvent>
94 </PropertyGroup> 87 </PropertyGroup>
95</Project> \ No newline at end of file 88</Project>