source: cpp/frams/config/f0.def @ 1256

Last change on this file since 1256 was 1252, checked in by Maciej Komosinski, 17 months ago

Disallow Joint longitudal stiffness == 0.0 because then sticks can be stretched indefinitely with no resistance; now minimum allowed is 0.01

  • Property svn:eol-style set to native
File size: 15.1 KB
Line 
1CLASS(Model,f0_model,m,Model)
2GROUP(Properties)
3GROUP(Visual)
4PROP(se,0,1024,startenergy,f,,,,startenergy)
5PROP(Vstyle,1,0,Visual style,s,0,-1,,vis_style,,``See the \"Visual style definition\" context for more information'')
6ENDCLASS
7
8CLASS(Part,f0_part,p,Part)
9GROUP(Geometry)
10GROUP(Other properties)
11GROUP(Visual)
12PROP(x,0,1024,position.x,f,,,,p.x)
13PROP(y,0,1024,position.y,f,,,,p.y)
14PROP(z,0,1024,position.z,f,,,,p.z)
15PROP(sh,0,0,shape,d,0,3,0,shape)
16PROP(s,0,0,size,f,0.1,10.0,1.0,size)
17PROP(sx,0,0,scale.x,f,0.05,5.0,1.0,scale.x)
18PROP(sy,0,0,scale.y,f,0.05,5.0,1.0,scale.y)
19PROP(sz,0,0,scale.z,f,0.05,5.0,1.0,scale.z)
20XPROP(h,1,0,hollow,f,0,1,0,hollow)
21XPROP(dn,1,0,density,f,0.2,5.0,1.0,density)
22XPROP(fr,1,0,friction,f,0.0,4.0,0.4,friction)
23XPROP(ing,1,0,ingestion,f,0.0,1.0,0.25,ingest)
24XPROP(as,1,0,assimilation,f,0.0,1.0,0.25,assim)
25PROP(rx,0,0,rot.x,f,,,,rot.x)
26PROP(ry,0,1024,rot.y,f,,,,rot.y)
27PROP(rz,0,1024,rot.z,f,,,,rot.z)
28PROP(i,1,0,`info',s,,,,info)
29PROP(Vstyle,2,0,Visual style,s,0,-1,part,vis_style,,``See the \"Visual style definition\" context for more information'')
30XPROP(vr,2,0,red component,f,0.0,1.0,0.5,vcolor.x)
31XPROP(vg,2,1024,green component,f,0.0,1.0,0.5,vcolor.y)
32XPROP(vb,2,1024,blue component,f,0.0,1.0,0.5,vcolor.z)
33ENDCLASS
34
35CLASS(Part_MinMaxDef,f0_part_minmaxdef,p)
36GROUP(Geometry)
37PROP(f,0,0,volume,f,0.83776,20.94395,4.18879,volume,,``Recommended default and min,max range for solid-shape Parts created and modified by genetic operators which are responsible for setting sizex,y,z. Default is the volume of the solid sphere (ball) with default radius=1 (radius is the same as sizex,y,z). Minimum is 5x less, maximum is 5x more.'')
38ENDCLASS
39
40CLASS(Joint,f0_joint,j,Joint)
41GROUP(Connections)
42GROUP(Geometry)
43GROUP(Other properties)
44GROUP(Visual)
45PROP(p1,0,1024,`part1 ref#',d,-1,999999,-1,p1_refno)
46PROP(p2,0,1024,`part2 ref#',d,-1,999999,-1,p2_refno)
47PROP(rx,1,0,rotation.x,f,,,,rot.x)
48PROP(ry,1,1024,rotation.y,f,,,,rot.y)
49PROP(rz,1,1024,rotation.z,f,,,,rot.z)
50PROP(dx,1,0,delta.x,f,-2,2,0,d.x)
51PROP(dy,1,1024,delta.y,f,-2,2,0,d.y)
52PROP(dz,1,1024,delta.z,f,-2,2,0,d.z)
53PROP(sh,1,0,shape,d,0,3,0,shape)
54PROP(hx,1,0,hinge position.x,f,,,0,hinge_pos.x)
55PROP(hy,1,1024,hinge position.y,f,,,0,hinge_pos.y)
56PROP(hz,1,1024,hinge position.z,f,,,0,hinge_pos.z)
57PROP(hrx,1,0,hinge rotation.x,f,,,0,hinge_rot.x)
58PROP(hry,1,1024,hinge rotation.y,f,,,0,hinge_rot.y)
59PROP(hrz,1,1024,hinge rotation.z,f,,,0,hinge_rot.z)
60PROP(hxn,1,0,hinge x negative limit,f,-6.2832,0,-1.5708,hinge_limit_x[0])
61PROP(hxp,1,1024,hinge x positive limit,f,0,6.2832,1.5708,hinge_limit_x[1])
62PROP(hyn,1,0,hinge y negative limit,f,-6.2832,0,-1.5708,hinge_limit_y[0])
63PROP(hyp,1,1024,hinge y positive limit,f,0,6.2832,1.5708,hinge_limit_y[1])
64XPROP(stif,2,0,stiffness,f,0.01,1.0,1.0,stif)
65XPROP(rotstif,2,0,rotation stiffness,f,0.0,1.0,1.0,rotstif)
66PROP(stam,2,0,stamina,f,0.0,1.0,0.25,stamina)
67PROP(i,2,0,`info',s,,,,info)
68PROP(Vstyle,3,0,Visual style,s,0,-1,joint,vis_style,,``See the \"Visual style definition\" context for more information'')
69XPROP(vr,3,0,red component,f,0.0,1.0,0.5,vcolor.x)
70XPROP(vg,3,1024,green component,f,0.0,1.0,0.5,vcolor.y)
71XPROP(vb,3,1024,blue component,f,0.0,1.0,0.5,vcolor.z)
72ENDCLASS
73
74CLASS(Joint,f0_nodeltajoint,j,Joint,NOXML)
75GROUP(Connections)
76GROUP(Geometry)
77GROUP(Other properties)
78GROUP(Visual)
79PROP(p1,0,1024,`part1 ref#',d,-1,999999,-1,p1_refno)
80PROP(p2,0,1024,`part2 ref#',d,-1,999999,-1,p2_refno)
81PROP(sh,1,0,shape,d,0,3,0,shape)
82PROP(hx,1,0,hinge position.x,f,,,0,hinge_pos.x)
83PROP(hy,1,1024,hinge position.y,f,,,0,hinge_pos.y)
84PROP(hz,1,1024,hinge position.z,f,,,0,hinge_pos.z)
85PROP(hrx,1,0,hinge rotation.x,f,,,0,hinge_rot.x)
86PROP(hry,1,1024,hinge rotation.y,f,,,0,hinge_rot.y)
87PROP(hrz,1,1024,hinge rotation.z,f,,,0,hinge_rot.z)
88PROP(hxn,1,0,hinge x negative limit,f,-6.2832,0,-1.5708,hinge_limit_x[0])
89PROP(hxp,1,1024,hinge x positive limit,f,0,6.2832,1.5708,hinge_limit_x[1])
90PROP(hyn,1,0,hinge y negative limit,f,-6.2832,0,-1.5708,hinge_limit_y[0])
91PROP(hyp,1,1024,hinge y positive limit,f,0,6.2832,1.5708,hinge_limit_y[1])
92XPROP(stif,2,0,stiffness,f,0.01,1.0,1.0,stif)
93XPROP(rotstif,2,0,rotation stiffness,f,0.0,1.0,1.0,rotstif)
94PROP(stam,2,0,stamina,f,0.0,1.0,0.25,stamina)
95PROP(i,2,0,`info',s,,,,info)
96PROP(Vstyle,3,0,Visual style,s,0,-1,joint,vis_style,,``See the \"Visual style definition\" context for more information'')
97XPROP(vr,3,0,red component,f,0.0,1.0,0.5,vcolor.x)
98XPROP(vg,3,1024,green component,f,0.0,1.0,0.5,vcolor.y)
99XPROP(vb,3,1024,blue component,f,0.0,1.0,0.5,vcolor.z)
100ENDCLASS
101
102CLASS(Neuro,f0_neuro,n,Neuro)
103GROUP(Connections)
104GROUP(Other)
105GROUP(Visual)
106PROP(p,0,0,`part ref#',d,-1,999999,-1,part_refno)
107PROP(j,0,0,`joint ref#',d,-1,999999,-1,joint_refno)
108PROP(d,1,0,details,s,,,N,details,GETSET)
109PROP(i,1,0,`info',s,,,,info)
110PROP(Vstyle,2,0,Visual style,s,0,-1,neuro,vis_style,,``See the \"Visual style definition\" context for more information'')
111PROP(getInputCount,0,1+2,`input count',d,,,,inputCount,GETONLY)
112PROP(getInputNeuroDef,0,0,`get input neuron',p oNeuroDef(d),,,,p_getInputNeuroDef,PROCEDURE)
113PROP(getInputNeuroIndex,0,0,`get input neuron index',p d(d),,,,p_getInputNeuroIndex,PROCEDURE)
114PROP(getInputWeight,0,0,`get input weight',p f(d),,,,p_getInputWeight,PROCEDURE)
115PROP(classObject,0,1+2,`neuron class',oNeuroClass,,,,classObject,GETONLY)
116ENDCLASS
117
118CLASS(NeuroConn,f0_neuroconn,c,Neuron connection)
119GROUP(Connection)
120GROUP(Other)
121PROP(n1,0,1024,`this neuro ref#',d,-1,999999,-1,n1_refno)
122PROP(n2,0,1024,`connected neuro ref#',d,-1,999999,-1,n2_refno)
123PROP(w,0,1024,weight,f,-999999,999999,1.0,weight)
124PROP(i,1,0,`info',s,,,,info)
125ENDCLASS
126
127NEUROCLASS(StdNeuron,N,Neuron,`Standard neuron',-1,1,0)
128VISUALHINTS(DontShowClass)
129NEUROPROP(in,1,0,Inertia,f,0.0,1.0,0.8,inertia)
130NEUROPROP(fo,1,0,Force,f,0.0,999.0,0.04,force)
131NEUROPROP(si,1,0,Sigmoid,f,-99999.0,99999.0,2.0,sigmo)
132NEUROPROP(s,2,0,State,f,-1.0,1.0,0.0,newstate)
133ENDNEUROCLASS
134
135NEUROCLASS(StdUNeuron,Nu,`Unipolar neuron [EXPERIMENTAL!]',`Works like standard neuron (N) but the output value is scaled to 0...+1 instead of -1...+1.\nHaving 0 as one of the saturation states should help in \"gate circuits\", where input signal is passed through or blocked depending on the other singal.',-1,1,0)
136NEUROPROP(in,1,0,Inertia,f,0.0,1.0,0.8,inertia)
137NEUROPROP(fo,1,0,Force,f,0.0,999.0,0.04,force)
138NEUROPROP(si,1,0,Sigmoid,f,-99999.0,99999.0,2.0,sigmo)
139NEUROPROP(s,2,0,State,f,-1.0,1.0,0.0,newstate)
140ENDNEUROCLASS
141
142NEUROCLASS(Gyro,G,Gyroscope,`Tilt sensor.\nSignal is proportional to sin(angle) = most sensitive in horizontal orientation.\n0=the stick is horizontal\n+1/-1=the stick is vertical',0,1,2)
143SHAPETYPE(BallAndStickShapeType)
144VISUALHINTS(ReceptorClass)
145SYMBOL(`8,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,12,43,24,48,24,48,19,38,19,38,24,43,24,43,54,48,54,48,64,43,69,38,64,38,54,43,54,5,63,69,58,74,48,79,38,79,28,74,23,69,1,43,79,43,74,1,23,69,26,66,1,63,69,60,66,1,55,76,53,73,1,31,75,33,72')
146ENDNEUROCLASS
147
148NEUROCLASS(GyroP,Gpart,Part Gyroscope,`Tilt sensor. Signal is directly proportional to the tilt angle.\n0=the part X axis is horizontal\n+1/-1=the axis is vertical',0,1,1)
149VISUALHINTS(ReceptorClass)
150SYMBOL(`8,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,12,43,24,48,24,48,19,38,19,38,24,43,24,43,54,48,54,48,64,43,69,38,64,38,54,43,54,5,63,69,58,74,48,79,38,79,28,74,23,69,1,43,79,43,74,1,23,69,26,66,1,63,69,60,66,1,55,76,53,73,1,31,75,33,72')
151NEUROPROP(ry,1,0,rotation.y,f,-6.282,6.282,0,ry)
152NEUROPROP(rz,1,0,rotation.z,f,-6.282,6.282,0,rz)
153ENDNEUROCLASS
154
155NEUROCLASS(Touch,T,Touch,`Touch and proximity sensor (Tcontact and Tproximity combined)\n-1=no contact\n0=just touching\n>0=pressing, value depends on the force applied (not implemented in ODE mode)',0,1,1)
156VISUALHINTS(ReceptorClass)
157SYMBOL(`2,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,11,75,50,65,50,60,55,55,45,50,55,45,45,40,50,35,50,30,45,25,50,30,55,35,50')
158NEUROPROP(r,1,0,Range,f,0.0,1.0,1.0,range)
159NEUROPROP(ry,1,0,rotation.y,f,-6.282,6.282,0,ry)
160NEUROPROP(rz,1,0,rotation.z,f,-6.282,6.282,0,rz)
161ENDNEUROCLASS
162
163NEUROCLASS(TouchC,Tcontact,Touch contact,`Touch sensor.\n-1=no contact\n0=the Part is touching the obstacle\n>0=pressing, value depends on the force applied (not implemented in ODE mode)',0,1,1)
164VISUALHINTS(ReceptorClass)
165SYMBOL(`2,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,11,75,50,65,50,60,55,55,45,50,55,45,45,40,50,35,50,30,45,25,50,30,55,35,50')
166ENDNEUROCLASS
167
168NEUROCLASS(TouchP,Tproximity,Touch proximity,`Proximity sensor detecting obstacles along the X axis.\n-1=distance is \"r\" or more\n0=zero distance',0,1,1)
169VISUALHINTS(ReceptorClass)
170SYMBOL(`2,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,11,75,50,65,50,60,55,55,45,50,55,45,45,40,50,35,50,30,45,25,50,30,55,35,50')
171NEUROPROP(r,1,0,Range,f,0.0,1.0,1.0,range)
172NEUROPROP(ry,1,0,rotation.y,f,-6.282,6.282,0,ry)
173NEUROPROP(rz,1,0,rotation.z,f,-6.282,6.282,0,rz)
174ENDNEUROCLASS
175
176NEUROCLASS(Smell,S,Smell,`Smell sensor. Aggregated \"smell of energy\" experienced from all energy objects (creatures and food pieces).\nClose objects have bigger influence than the distant ones: for each energy source, its partial feeling is proportional to its energy/(distance^2)',0,1,1)
177VISUALHINTS(ReceptorClass)
178SYMBOL(`5,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,3,10,40,15,45,15,55,10,60,5,20,30,25,35,30,45,30,55,25,65,20,70,4,15,35,20,40,22,50,20,60,15,65,5,75,50,50,50,45,45,40,50,45,55,50,50')
179ENDNEUROCLASS
180
181NEUROCLASS(Const,*,Constant,Constant value,0,1,0)
182VISUALHINTS(Invisible)
183SYMBOL(`4,4,26,27,26,73,73,73,73,27,26,27,1,73,50,100,50,1,56,68,46,68,2,41,47,51,32,51,68')
184ENDNEUROCLASS
185
186NEUROCLASS(BendMuscle,|,Bend muscle,,1,0,2)
187SHAPETYPE(BallAndStickShapeType)
188VISUALHINTS(DontShowClass+EffectorClass+IsV1BendMuscle+AtFirstPart)
189SYMBOL(`6,5,25,40,35,40,45,50,35,60,25,60,25,40,4,65,85,65,50,75,50,75,85,65,85,3,65,56,49,29,57,24,72,50,4,68,53,70,53,70,55,68,55,68,53,5,50,21,60,15,70,14,79,15,87,20,81,10,1,86,20,77,21')
190NEUROPROP(p,0,0,power,f,0.0,1.0,0.25,power)
191NEUROPROP(r,0,0,bending range,f,0.0,1.0,1.0,bendrange)
192ENDNEUROCLASS
193
194NEUROCLASS(RotMuscle,@,Rotation muscle,,1,0,2)
195SHAPETYPE(BallAndStickShapeType)
196VISUALHINTS(DontShowClass+EffectorClass+IsV1RotMuscle+AtFirstPart)
197SYMBOL(`5,5,25,40,35,40,45,50,35,60,25,60,25,40,4,65,85,65,50,75,50,75,85,65,85,1,69,10,77,17,10,59,15,57,17,57,22,60,26,69,27,78,26,82,21,82,16,79,12,69,10,80,6,3,65,50,65,20,75,20,75,50')
198NEUROPROP(p,0,0,power,f,0.0,1.0,1.0,power)
199ENDNEUROCLASS
200
201NEUROCLASS(SolidMuscle,M,Muscle for solids,,1,0,2)
202SHAPETYPE(SolidsShapeType)
203JOINTTYPE(SUPPORTED_JOINT_HINGE_X+SUPPORTED_JOINT_HINGE_XY)
204VISUALHINTS(EffectorClass+AtFirstPart+IsSolidMuscle)
205SYMBOL(`6,5,25,40,35,40,45,50,35,60,25,60,25,40,4,65,85,65,50,75,50,75,85,65,85,3,65,56,49,29,57,24,72,50,4,68,53,70,53,70,55,68,55,68,53,5,50,21,60,15,70,14,79,15,87,20,81,10,1,86,20,77,21')
206NEUROPROP(p,0,0,power,f,0.0,1.0,1.0,power)
207NEUROPROP(a,0,0,axis,d,0,1,0,axis)
208ENDNEUROCLASS
209
210NEUROCLASS(Diff,D,Differentiate,Calculate the difference between the current and previous input value. Multiple inputs are aggregated with respect to their weights,-1,1,0)
211SYMBOL(`3,3,25,0,25,100,75,50,25,0,1,75,50,100,50,3,44,42,51,57,36,57,44,42')
212ENDNEUROCLASS
213
214NEUROCLASS(FuzzyNeuro,Fuzzy,Fuzzy system [EXPERIMENTAL!],Refer to publications to learn more about this neuron.,-1,1,0)
215SYMBOL(`5,2,30,65,37,37,44,65,3,37,65,44,37,51,37,58,65,2,51,65,58,37,65,65,6,100,50,70,50,70,25,25,10,25,90,70,75,70,50,1,70,65,25,65')
216NEUROPROP(ns,0,0,number of fuzzy sets,d,1,,,fuzzySetsNr)
217NEUROPROP(nr,0,0,number of rules,d,1,,,rulesNr)
218NEUROPROP(fs,0,0,fuzzy sets,s,0,-1,,fuzzySetString)
219NEUROPROP(fr,0,0,fuzzy rules,s,0,-1,,fuzzyRulesString)
220ENDNEUROCLASS
221
222NEUROCLASS(VectorEye,VEye,Vector Eye [EXPERIMENTAL!],Refer to publications to learn more about this neuron.,1,1,1)
223SYMBOL(`11,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,14,70,50,65,40,60,35,45,30,30,30,15,35,10,40,5,50,10,60,15,65,30,70,45,70,60,65,65,60,70,50,8,38,67,28,62,23,52,28,42,38,37,48,42,53,52,48,62,38,67,4,33,52,38,47,43,52,38,57,33,52,5,70,50,60,40,45,35,30,35,15,40,5,50,1,53,33,58,22,1,62,36,68,26,1,45,30,47,19,1,35,30,35,19,1,27,31,24,20,1,18,34,12,24')
224NEUROPROP(tx,0,0,target.x,f,,,,target.x)
225NEUROPROP(ty,0,0,target.y,f,,,,target.y)
226NEUROPROP(tz,0,0,target.z,f,,,,target.z)
227NEUROPROP(ts,0,0,target shape,s,0,-1,,targetShape)
228NEUROPROP(p,0,0,perspective,f,0.1,10.0,1.0,perspz)
229NEUROPROP(s,0,0,scale,f,0.1,100.0,1.0,perspscale)
230NEUROPROP(h,0,0,show hidden lines,d,0,1,0,showhidden)
231NEUROPROP(o,0,0,`output lines count (each line needs four channels)',d,0,99,0,outputcount)
232NEUROPROP(d,0,0,debug,d,0,1,0,showdebug)
233ENDNEUROCLASS
234
235NEUROCLASS(VisualMotorNeuron,VMotor,Visual-Motor Cortex [EXPERIMENTAL!],`Must be connected to the VEye and properly set up. Refer to publications to learn more about this neuron.',-1,1,0)
236NEUROPROP(noIF,0,0,number of basic features,d,,,,noIF)
237NEUROPROP(noDim,0,0,number of degrees of freedom,d,,,,noDim)
238NEUROPROP(params,0,0,parameters,s,,,,params)
239ENDNEUROCLASS
240
241NEUROCLASS(Sticky,Sti,Sticky [EXPERIMENTAL!],,1,0,1)
242SHAPETYPE(BallAndStickShapeType)
243VISUALHINTS(EffectorClass)
244ENDNEUROCLASS
245
246NEUROCLASS(LinearMuscle,LMu,Linear muscle [EXPERIMENTAL!],,1,0,2)
247SHAPETYPE(BallAndStickShapeType)
248VISUALHINTS(EffectorClass+IsLinearMuscle)
249NEUROPROP(p,0,0,power,f,0.01,1.0,1.0,power)
250ENDNEUROCLASS
251
252NEUROCLASS(WaterDetect,Water,Water detector,`Output signal:\n0=on or above water surface\n1=under water (deeper than 1)\n0..1=in the transient area just below water surface',0,1,1)
253VISUALHINTS(ReceptorClass)
254ENDNEUROCLASS
255
256NEUROCLASS(Energy,Energy,Energy level,`The current energy level divided by the initial energy level.\nUsually falls from initial 1.0 down to 0.0 and then the creature dies. It can rise above 1.0 if enough food is ingested',0,1,0)
257VISUALHINTS(ReceptorClass)
258ENDNEUROCLASS
259
260NEUROCLASS(Channelize,Ch,Channelize,`Combines all input signals into a single multichannel output; Note: ChSel and ChMux are the only neurons which support multiple channels. Other neurons discard everything except the first channel.',-1,1,0)
261SYMBOL(`10,4,25,0,25,100,75,70,75,30,25,0,1,75,50,100,50,1,70,50,55,50,1,30,80,55,50,1,30,20,55,50,1,30,35,55,50,1,30,45,55,50,1,30,55,55,50,1,61,53,65,47,1,30,65,55,50')
262ENDNEUROCLASS
263
264NEUROCLASS(ChMux,ChMux,Channel multiplexer,`Outputs the selected channel from the second (multichannel) input. The first input is used as the selector value (-1=select first channel, .., 1=last channel)',2,1,0)
265SYMBOL(`7,4,25,0,25,100,75,70,75,30,25,0,1,75,50,100,50,1,70,50,55,50,3,50,55,55,50,50,45,50,55,3,30,67,45,67,45,50,50,50,1,35,70,39,64,2,30,33,53,33,53,48')
266ENDNEUROCLASS
267
268NEUROCLASS(ChSel,ChSel,Channel selector,`Outputs a single channel (selected by the \"ch\" parameter) from multichannel input',1,1,0)
269SYMBOL(`6,4,25,0,25,100,75,70,75,30,25,0,1,75,50,100,50,1,70,50,55,50,3,50,55,55,50,50,45,50,55,1,30,50,50,50,1,35,53,39,47')
270NEUROPROP(ch,0,0,channel,d,,,,ch)
271ENDNEUROCLASS
272
273NEUROCLASS(Random,Rnd,Random noise,`Generates random noise (subsequent random values in the range of -1..+1)',0,1,0)
274ENDNEUROCLASS
275
276NEUROCLASS(Sinus,Sin,Sinus generator,`Output frequency = f0+input',1,1,0)
277SYMBOL(`3,12,75,50,71,37,62,28,50,25,37,28,28,37,25,50,28,62,37,71,50,75,62,71,71,62,75,50,1,75,50,100,50,5,35,50,40,35,45,35,55,65,60,65,65,50')
278NEUROPROP(f0,0,0,base frequency,f,-1.0,1.0,0.06283185307,f0)
279NEUROPROP(t,0,0,time,f,0,6.283185307,0,t)
280ENDNEUROCLASS
Note: See TracBrowser for help on using the repository browser.