carbidect/com.nokia.tools.variant.validation.help/html/validation.html
changeset 0 30eb2d538f02
equal deleted inserted replaced
-1:000000000000 0:30eb2d538f02
       
     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       
     2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
       
     3 	<head>
       
     4 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
       
     5 		<meta name="keywords" content="Configuration Tool Validation,Configuration Tool Validation,Configuration Tool Validation/Exceptions" />
       
     6 		<link rel="copyright" href="http://www.connecting.nokia.com/legal/" />
       
     7 		<title>Carbide.ct Validation</title>
       
     8 		<link rel="stylesheet" type="text/css"  href="../css/commonPrint.css" />
       
     9 	</head>
       
    10 <body  class="ns-0 ltr">
       
    11 	<div id="globalWrapper">
       
    12 		<div id="column-content">
       
    13 	<div id="content">
       
    14 		<a name="top" id="top"></a>
       
    15 		<h1 class="firstHeading">Carbide.ct Validation</h1>
       
    16 
       
    17 		<div id="bodyContent">
       
    18 			<div id="contentSub"></div>
       
    19 			<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
       
    20 
       
    21 <ul>
       
    22 <li class='toclevel-1'><a href="#Introduction"><span class="tocnumber">1</span> <span class="toctext">Introduction</span></a>
       
    23 <ul>
       
    24 <li class='toclevel-2'><a href="#Central_Repository_Key_validations"><span class="tocnumber">1.1</span> <span class="toctext">Central Repository Key validations</span></a>
       
    25 <ul>
       
    26 <li class='toclevel-3'><a href="#Error_classification"><span class="tocnumber">1.1.1</span> <span class="toctext">Error classification</span></a></li>
       
    27 <li class='toclevel-3'><a href="#Exceptions"><span class="tocnumber">1.1.2</span> <span class="toctext">Exceptions</span></a></li>
       
    28 
       
    29 </ul>
       
    30 </li>
       
    31 <li class='toclevel-2'><a href="#Other_validations"><span class="tocnumber">1.2</span> <span class="toctext">Other validations</span></a></li>
       
    32 </ul>
       
    33 </li>
       
    34 <li class='toclevel-1'><a href="#Notation"><span class="tocnumber">2</span> <span class="toctext">Notation</span></a>
       
    35 <ul>
       
    36 <li class='toclevel-2'><a href="#.7B.25element.25.7D"><span class="tocnumber">2.1</span> <span class="toctext">{%element%}</span></a></li>
       
    37 
       
    38 <li class='toclevel-2'><a href="#.7B.25ref.25.7D"><span class="tocnumber">2.2</span> <span class="toctext">{%ref%}</span></a></li>
       
    39 <li class='toclevel-2'><a href="#.7B.25element_ref.25.7D"><span class="tocnumber">2.3</span> <span class="toctext">{%element_ref%}</span></a></li>
       
    40 </ul>
       
    41 </li>
       
    42 <li class='toclevel-1'><a href="#Capability_Checks"><span class="tocnumber">3</span> <span class="toctext">Capability Checks</span></a>
       
    43 <ul>
       
    44 <li class='toclevel-2'><a href="#.7B.25element_ref.25.7D_does_not_have_any_read_capabilities"><span class="tocnumber">3.1</span> <span class="toctext">{%element_ref%} does not have any read capabilities</span></a></li>
       
    45 
       
    46 <li class='toclevel-2'><a href="#.7B.25element_ref.25.7D_read_capability_differs_from_AlwaysPass_or_ReadDeviceData"><span class="tocnumber">3.2</span> <span class="toctext">{%element_ref%} read capability differs from AlwaysPass or ReadDeviceData</span></a></li>
       
    47 <li class='toclevel-2'><a href="#.7B.25element_ref.25.7D_has_other_read_capabilities_defined_with_AlwaysPass"><span class="tocnumber">3.3</span> <span class="toctext">{%element_ref%} has other read capabilities defined with AlwaysPass</span></a></li>
       
    48 <li class='toclevel-2'><a href="#.7B.25element_ref.25.7D_is_read-only.2C_but_also_write_capabilities_are_set"><span class="tocnumber">3.4</span> <span class="toctext">{%element_ref%} is read-only, but also write capabilities are set</span></a></li>
       
    49 <li class='toclevel-2'><a href="#.7B.25element_ref.25.7D_write_capability_is_neither_AlwaysPass_nor_WriteDeviceData"><span class="tocnumber">3.5</span> <span class="toctext">{%element_ref%} write capability is neither AlwaysPass nor WriteDeviceData</span></a></li>
       
    50 <li class='toclevel-2'><a href="#Writable_.7B.25element_ref.25.7D_does_not_have_any_write_capabilities"><span class="tocnumber">3.6</span> <span class="toctext">Writable {%element_ref%} does not have any write capabilities</span></a></li>
       
    51 
       
    52 <li class='toclevel-2'><a href="#.7B.25element_ref.25.7D_exceeds_capability_amount_limitations"><span class="tocnumber">3.7</span> <span class="toctext">{%element_ref%} exceeds capability amount limitations</span></a></li>
       
    53 </ul>
       
    54 </li>
       
    55 <li class='toclevel-1'><a href="#RFS_.2F_Backup_Checks"><span class="tocnumber">4</span> <span class="toctext">RFS / Backup Checks</span></a>
       
    56 <ul>
       
    57 <li class='toclevel-2'><a href="#Back-up_is_enabled_for_.7B.25element_ref.25.7D.2C_but_repository_misses_owner_definition"><span class="tocnumber">4.1</span> <span class="toctext">Back-up is enabled for {%element_ref%}, but repository misses owner definition</span></a></li>
       
    58 <li class='toclevel-2'><a href="#Read-only_.7B.25element_ref.25.7D_is_marked_for_RFS"><span class="tocnumber">4.2</span> <span class="toctext">Read-only {%element_ref%} is marked for RFS</span></a></li>
       
    59 
       
    60 <li class='toclevel-2'><a href="#Read-only_.7B.25element_ref.25.7D_is_marked_for_backup"><span class="tocnumber">4.3</span> <span class="toctext">Read-only {%element_ref%} is marked for backup</span></a></li>
       
    61 <li class='toclevel-2'><a href="#.7B.25element_ref.25.7D_has_RFS_defined.2C_but_write_capability_is_missing"><span class="tocnumber">4.4</span> <span class="toctext">{%element_ref%} has RFS defined, but write capability is missing</span></a></li>
       
    62 <li class='toclevel-2'><a href="#.7B.25element_ref.25.7D_has_RFS_defined.2C_but_write_capability_is_restricted_with_SID"><span class="tocnumber">4.5</span> <span class="toctext">{%element_ref%} has RFS defined, but write capability is restricted with SID</span></a></li>
       
    63 </ul>
       
    64 </li>
       
    65 <li class='toclevel-1'><a href="#Misc_Checks"><span class="tocnumber">5</span> <span class="toctext">Misc Checks</span></a>
       
    66 
       
    67 <ul>
       
    68 <li class='toclevel-2'><a href="#Path_identifier_.7B.25ref.25.7D_uses_incorrect_directory_separator_marks"><span class="tocnumber">5.1</span> <span class="toctext">Path identifier {%ref%} uses incorrect directory separator marks</span></a></li>
       
    69 <li class='toclevel-2'><a href="#No_value_defined_for_a_setting_.7B.25ref.25.7D"><span class="tocnumber">5.2</span> <span class="toctext">No value defined for a setting {%ref%}</span></a></li>
       
    70 <li class='toclevel-2'><a href="#.7B.25element_ref.25.7D_ID_not_in_hexadecimal_format"><span class="tocnumber">5.3</span> <span class="toctext">{%element_ref%} ID not in hexadecimal format</span></a></li>
       
    71 <li class='toclevel-2'><a href="#KeyRange_element_.7B.25element_ref.25.7D_does_not_contain_firstInt_.2F_lastInt_definition"><span class="tocnumber">5.4</span> <span class="toctext">KeyRange element {%element_ref%} does not contain firstInt / lastInt definition</span></a></li>
       
    72 
       
    73 <li class='toclevel-2'><a href="#Writable_setting_.7B.25element_ref.25.7D_does_not_contain_any_documentation"><span class="tocnumber">5.5</span> <span class="toctext">Writable setting {%element_ref%} does not contain any documentation</span></a></li>
       
    74 </ul>
       
    75 </li>
       
    76 <li class='toclevel-1'><a href="#Notes"><span class="tocnumber">6</span> <span class="toctext">Notes</span></a></li>
       
    77 </ul>
       
    78 </td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
       
    79 <a name="Introduction"></a><h2> Introduction </h2>
       
    80 
       
    81 <p>The article lists validations that are implemented as part of Carbide.ct. Tool validations replace the current excel based central repository SCB CR process.
       
    82 </p><p>The tool will report some <b>new errors and warnings</b> that have not been shown before. In other words, the rules for acceptable data have been tightened to ensure the quality of the confml and crml specifications. However, it is usually a simple matter to correct the reported errors and warnings. 
       
    83 </p><p>In some rare cases, it may be necessary to allow exceptions to the rules. The owners of the confml and other ml data are responsible for the decisions about the exceptions. The exceptions should be listed in a separate table as explained <a href="#Exceptions" title="Configuration Tool Validation">here</a>. The S60 Configurability Program will follow the situation and later decide, if some mechanism is needed to permanently mark up the exceptions so that the tools would not even report certain errors on certain data.     
       
    84 </p>
       
    85 <a name="Central_Repository_Key_validations"></a><h3> Central Repository Key validations </h3>
       
    86 
       
    87 <p><a href="#Capability_Checks" title="Configuration Tool Validation">Capability Checks</a> and <a href="#RFS_.2F_Backup_Checks" title="Configuration Tool Validation">RFS / Backup Checks</a> represent common problems in defining central repository key capabilities, read-onlyness, backup-restore and Restore Factory Settings -property. Not following the rules may make it impossible to 
       
    88 </p>
       
    89 <ul><li> share settings between components,
       
    90 </li><li> enable some other component to change a read-only setting in a harmful way,
       
    91 </li><li> make the backup-restore operation or the RFS operation to fail on some componet.
       
    92 </li></ul>
       
    93 <p>The owner of the settings is responsible for defining these properties. The owner is also responsible for any exceptions that he/she makes to these rules. To help the owners in keeping the setting definitions in a valid state, Carbide.ct has the capability to check cenrep key definitions against these rules and warn the user about violations.
       
    94 </p>
       
    95 
       
    96 <a name="Error_classification"></a><h4> Error classification </h4>
       
    97 <p>The rules are divided in two categories: Errors and Warnings. This categorization is based on the experience with these issues since the introduction of Platform Security to S60 SW. Errors represent situation that may risk system integrity. Warnings are less severe situations but they may still cause problems. 
       
    98 So, take both seriously and aim to remove all errors from your cen rep key definitions. 
       
    99 </p>
       
   100 <a name="Exceptions"></a><h4> Exceptions </h4>
       
   101 <a name="Other_validations"></a><h3> Other validations </h3>
       
   102 <p><a href="#Misc_Checks" title="Configuration Tool Validation">Misc Checks</a> contain validation rules for other errors in confml and implementation-ml (e.g. crml) data.
       
   103 </p>
       
   104 <a name="Notation"></a><h2> Notation </h2>
       
   105 <a name=".7B.25element.25.7D"></a><h3> {%element%} </h3>
       
   106 <p>Definition of {%element%} depends on context; basically it is one of the following:
       
   107 </p>
       
   108 <ul><li> Repository
       
   109 </li><li> Key
       
   110 </li><li> Range
       
   111 </li><li> Bitmask
       
   112 </li></ul>
       
   113 
       
   114 <a name=".7B.25ref.25.7D"></a><h3> {%ref%} </h3>
       
   115 <p>{%ref%} means unique reference to an element, format being element specific:
       
   116 </p>
       
   117 <ul><li> For repository, ref has format "Uid Value (Uid Name)" => <i>e.g. "0x10207218 (KCrUidAknFep)". If Uid Name does not exist, plain Uid Value is shown. </i>
       
   118 </li><li> For keys, bitmasks, ranges and confML settings, ref stands for element reference => <i>e.g. "KCRUidConnectionUiUtilities/KConnectionUiUtilitiesScanInterval" </i>
       
   119 </li></ul>
       
   120 
       
   121 <a name=".7B.25element_ref.25.7D"></a><h3> {%element_ref%} </h3>
       
   122 <p>{%element_ref%} = {%element%} + {%ref%}
       
   123 </p><p>Example: "Key KCRUidConnectionUiUtilities/KConnectionUiUtilitiesScanInterval"
       
   124 </p>
       
   125 <a name="Capability_Checks"></a><h2> Capability Checks </h2>
       
   126 <a name=".7B.25element_ref.25.7D_does_not_have_any_read_capabilities"></a><h3> {%element_ref%} does not have any read capabilities </h3>
       
   127 
       
   128 <p><b>Classification: </b>
       
   129 </p><p>Warning
       
   130 </p><p><b>Description:</b>
       
   131 </p><p>{%element%} does not contain any read capabilities. This effectively means that capability check will always fail. In case the intention is to specify no need to have any capabilities to access the information, AlwaysPass capability should be used.
       
   132 </p>
       
   133 <a name=".7B.25element_ref.25.7D_read_capability_differs_from_AlwaysPass_or_ReadDeviceData"></a><h3> {%element_ref%} read capability differs from AlwaysPass or ReadDeviceData </h3>
       
   134 <p><b>Classification: </b>
       
   135 </p><p>Warning
       
   136 </p><p><b>Description:</b>
       
   137 
       
   138 </p><p>Read capability differs from <i>AlwaysPass</i> or <i>ReadDeviceData</i>. By default, read access to any key must be allowed unless the data is really secret. Only things like passwords for e- mail accounts and network access points are really secret. Secret data should then be protected by <i>ReadDeviceData</i> only. 
       
   139 </p><p>If some data really needs to be protected by <i>ReadUserData</i>, it should not be stored in central repository in the first place. Central Repository is meant for storing device settings.
       
   140 </p><p>Note that the read and write capabilities can be asymmetric. For example, changing Profile settings should be protected by <i>WriteDeviceData</i>. On the other hand, everybody should be able to read Profile settings at any time, so the read capability should be <i>AlwaysPass</i>.
       
   141 
       
   142 </p><p>In case there really is need to use other read capabilities, please document the case to the <a href="/Exceptions" title="Configuration Tool Validation/Exceptions">Exceptions table</a>.
       
   143 </p>
       
   144 <a name=".7B.25element_ref.25.7D_has_other_read_capabilities_defined_with_AlwaysPass"></a><h3> {%element_ref%} has other read capabilities defined with AlwaysPass </h3>
       
   145 <p><b>Classification: </b>
       
   146 </p><p>Error
       
   147 </p><p><b>Description:</b>
       
   148 </p><p>AlwaysPass capability defines that there is no need to have any capabilities to access the information. However other capabilities are marked for given {%element%}.
       
   149 </p>
       
   150 
       
   151 <a name=".7B.25element_ref.25.7D_is_read-only.2C_but_also_write_capabilities_are_set"></a><h3> {%element_ref%} is read-only, but also write capabilities are set </h3>
       
   152 <p><b>Classification: </b>
       
   153 </p><p>Warning
       
   154 </p><p><b>Description:</b>
       
   155 </p><p>In case {%element%} is marked read-only, no write capabilities are allowed.
       
   156 </p><p><b>Notes:</b>
       
   157 </p><p>This rule is not applied to repositories (only to keys, bitmasks and ranges). Repository cannot be read-only.
       
   158 </p>
       
   159 <a name=".7B.25element_ref.25.7D_write_capability_is_neither_AlwaysPass_nor_WriteDeviceData"></a><h3> {%element_ref%} write capability is neither AlwaysPass nor WriteDeviceData </h3>
       
   160 
       
   161 <p><b>Classification: </b>
       
   162 </p><p>Warning
       
   163 </p><p><b>Description:</b>
       
   164 </p><p>If there is any write access marked to an element, in most cases it should be either AlwaysPass or WriteDeviceData. In case of write protection, most often (in ~99.9% of the cases) element has WriteDeviceData capability (and not e.g. WriteUserData).
       
   165 </p><p>It must be ensured that an application without any capabilities can do basic things (e.g. write to screen, use T9...). On the other hand, critical or secret setting data must be well protected.
       
   166 </p>
       
   167 <a name="Writable_.7B.25element_ref.25.7D_does_not_have_any_write_capabilities"></a><h3> Writable {%element_ref%} does not have any write capabilities </h3>
       
   168 <p><b>Classification: </b>
       
   169 </p><p>Warning
       
   170 
       
   171 </p><p><b>Description:</b>
       
   172 </p><p>{%element%} does not contain any write capabilities, even though it is writable. This effectively means that capability check will always fail. In case the intention is to specify no need to have any capabilities to write the information, AlwaysPass capability has to be used. 
       
   173 </p><p><i>Note</i>: a SID is considered as a capability. So, it is not an error, if the writing of the key is protected only by one SID and nothing else.
       
   174 </p>
       
   175 <a name=".7B.25element_ref.25.7D_exceeds_capability_amount_limitations"></a><h3> {%element_ref%} exceeds capability amount limitations </h3>
       
   176 <p><b>Classification: </b>
       
   177 </p><p>Error
       
   178 </p><p><b>Description:</b>
       
   179 
       
   180 </p><p>There is restriction on amount of capabilities. There can be maximum 7 capabilities OR 1 SID + 3 capabilities defined for single check (either read or write).
       
   181 </p><p>Note the relationship between capabilities and SID + capabilities:
       
   182 </p>
       
   183 <ul><li> If several capabilities are required, they all are needed to access the value of the {%element%} (Capability1 AND Capability2 AND Capability3 AND ...).
       
   184 </li><li> If the SID and capabilities are marked, either the SID or all the marked capabilities are needed to access the value of the key (SID OR Capability1 AND Capability2 AND ...).
       
   185 </li></ul>
       
   186 <a name="RFS_.2F_Backup_Checks"></a><h2> RFS / Backup Checks </h2>
       
   187 <a name="Back-up_is_enabled_for_.7B.25element_ref.25.7D.2C_but_repository_misses_owner_definition"></a><h3> Back-up is enabled for {%element_ref%}, but repository misses owner definition </h3>
       
   188 
       
   189 <p><b>Classification: </b>
       
   190 </p><p>Error
       
   191 </p><p><b>Description:</b>
       
   192 </p><p>{%element%} is marked to be backed up, but the owner definition (Secure ID, SID) of the repository is missing. Owner information is needed for back-up to succeed.
       
   193 </p>
       
   194 <a name="Read-only_.7B.25element_ref.25.7D_is_marked_for_RFS"></a><h3> Read-only {%element_ref%} is marked for RFS </h3>
       
   195 <p><b>Classification: </b>
       
   196 </p><p>Warning
       
   197 </p><p><b>Description:</b>
       
   198 
       
   199 </p><p>Restore Factory Settings must not be enabled for read-only {%element%}, and will be ignored during initialization file generation.
       
   200 </p>
       
   201 <a name="Read-only_.7B.25element_ref.25.7D_is_marked_for_backup"></a><h3> Read-only {%element_ref%} is marked for backup </h3>
       
   202 <p><b>Classification: </b>
       
   203 </p><p>Warning
       
   204 </p><p><b>Description:</b>
       
   205 </p><p>Backup must not be enabled for read- only {%element%}.
       
   206 </p>
       
   207 <a name=".7B.25element_ref.25.7D_has_RFS_defined.2C_but_write_capability_is_missing"></a><h3> {%element_ref%} has RFS defined, but write capability is missing </h3>
       
   208 
       
   209 <p><b>Classification: </b>
       
   210 </p><p>Warning
       
   211 </p><p><b>Description:</b>
       
   212 </p><p>Restore Factory Settings (RFS) works in case of central repository keys so that if all the keys inside repository have RFS set, then the RFS will be done calling the <i>ResetAll()</i> -method in the central repository API. This method checks the repository specific write capability. 
       
   213 </p><p>If not all the keys have RFS set, then the <i>Reset()</i> method is called on each key separately. This method checks the capabilities defined for each key. In this case, the write capability of the repository is not checked.
       
   214 </p><p>If the repository/key specific write capability is AlwaysPass, anybody (including 3rd party software) can make RFS to your repository/key. If write capability is not defined, RFS won't work at all since the default capability check will fail.
       
   215 </p><p>In general, specifying a SID as a capability is enough. However, if RFS is defined, <i>it is wrong to define a SID as the write capability</i>. See the next rule.
       
   216 
       
   217 </p>
       
   218 <a name=".7B.25element_ref.25.7D_has_RFS_defined.2C_but_write_capability_is_restricted_with_SID"></a><h3> {%element_ref%} has RFS defined, but write capability is restricted with SID </h3>
       
   219 <p><b>Classification: </b>
       
   220 </p><p>Warning
       
   221 </p><p><b>Description:</b>
       
   222 </p><p>Restore Factory Settings (RFS) works in case of central repository keys so that if all the keys inside repository have RFS set, then the RFS will be done calling the ResetAll-method in the central repository API. This method checks the repository specific write capability.
       
   223 </p><p>If not all the keys have RFS set, then the Reset method is called on each key separately. This method checks the capabilities defined for each key and the repository write capability is not checked.
       
   224 </p><p>If the repository/key specific write capability is restricted with SID, RFS won't work at all since the default capability check will fail.
       
   225 </p>
       
   226 <a name="Misc_Checks"></a><h2> Misc Checks </h2>
       
   227 
       
   228 <a name="Path_identifier_.7B.25ref.25.7D_uses_incorrect_directory_separator_marks"></a><h3> Path identifier {%ref%} uses incorrect directory separator marks </h3>
       
   229 <p><b>Classification: </b>
       
   230 </p><p>Warning
       
   231 </p><p><b>Description:</b>
       
   232 </p><p>Directory separators in file paths should be two backslashes ( "\\" ).
       
   233 </p><p><b>Notes:</b>
       
   234 </p><p>In case string begins with "c:" or "z:", string is considered to be a file path. Confml also supports file and folder datatypes.
       
   235 </p>
       
   236 <a name="No_value_defined_for_a_setting_.7B.25ref.25.7D"></a><h3> No value defined for a setting {%ref%} </h3>
       
   237 
       
   238 <p><b>Classification: </b>
       
   239 </p><p>Error
       
   240 </p><p><b>Description:</b>
       
   241 </p><p>Integer, real and boolean settings must always have a value defined.
       
   242 </p>
       
   243 <a name=".7B.25element_ref.25.7D_ID_not_in_hexadecimal_format"></a><h3> {%element_ref%} ID not in hexadecimal format </h3>
       
   244 <p><b>Classification: </b>
       
   245 </p><p>Error
       
   246 </p><p><b>Description:</b>
       
   247 
       
   248 </p><p>Repository UID must be in hexadecimal format. The same applies to key, range and bitmask identifiers.
       
   249 </p>
       
   250 <a name="KeyRange_element_.7B.25element_ref.25.7D_does_not_contain_firstInt_.2F_lastInt_definition"></a><h3> KeyRange element {%element_ref%} does not contain firstInt / lastInt definition </h3>
       
   251 <p><b>Classification: </b>
       
   252 </p><p>Error
       
   253 </p><p><b>Description:</b>
       
   254 </p><p>KeyRange definition misses firstInt or lastInt definition. Both are required.
       
   255 </p>
       
   256 <a name="Writable_setting_.7B.25element_ref.25.7D_does_not_contain_any_documentation"></a><h3> Writable setting {%element_ref%} does not contain any documentation </h3>
       
   257 
       
   258 <p><b>Classification: </b>
       
   259 </p><p>Warning
       
   260 </p><p><b>Description:</b>
       
   261 </p><p>Writable settings are modified by several parties. Proper modification requires sufficient documentation.
       
   262 </p>
       
   263 <a name="Notes"></a><h2> Notes </h2>
       
   264 <p>Location area might have potential case, which conflicts with RFS &amp; back-up read-onlyness rules. Possibly something to do with post-sales scenarios. Needs to be checked from sheets / location team if that is the case.
       
   265 
       
   266 </p><p>In any case, rules must be validated against existing confmls/crmls before deployment, to check message validity and to create potential exceptions.
       
   267 </p>
       
   268 <!-- Saved in parser cache with key s60:pcache:idhash:14231-0!1!0!0!!en!2 and timestamp 20090424074912 -->
       
   269 <div class="visualClear"></div>
       
   270 		</div>
       
   271 	</div>
       
   272 		</div>
       
   273 		<div id="column-one">
       
   274 	<div id="p-cactions" class="portlet">
       
   275 		<h5>Views</h5>
       
   276 		<ul>
       
   277 
       
   278 				 <li id="ca-nstab-main" class="selected"><a href="">Article</a></li>
       
   279 				 <li id="ca-talk">Discussion</li>
       
   280 				 <li id="ca-edit">Edit</li>
       
   281 				 <li id="ca-history">History</li>
       
   282 		</ul>
       
   283 	</div>
       
   284 	<div class="portlet" id="p-personal">
       
   285 
       
   286 		<h5>Personal tools</h5>
       
   287 		<div class="pBody">
       
   288 			<ul>
       
   289 				<li id="pt-login">Log in</li>
       
   290 			</ul>
       
   291 		</div>
       
   292 	</div>
       
   293 	<div class="portlet" id="p-logo">
       
   294 	
       
   295 	</div>
       
   296 	<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
       
   297 		<div class='portlet' id='p-navigation'>
       
   298 		<h5>Navigation</h5>
       
   299 		<div class='pBody'>
       
   300 			<ul>
       
   301 				<li id="n-mainpage">Main Page</li>
       
   302 
       
   303 				<li id="n-help">Help</li>
       
   304 				<li id="n-Help-on-editing">Help on editing</li>
       
   305 				<li id="n-Sandbox">Sandbox</li>
       
   306 				<li id="n-Help-on-searching">Help on searching</li>
       
   307 				<li id="n-Contacts">Contacts</li>
       
   308 				<li id="n-recentchanges">Recent changes</li>
       
   309 
       
   310 				<li id="n-randompage">Random page</li>
       
   311 			</ul>
       
   312 		</div>
       
   313 	</div>
       
   314 		<div class='portlet' id='p-categories'>
       
   315 		<h5>Categories</h5>
       
   316 		<div class='pBody'>
       
   317 			<ul>
       
   318 
       
   319 				<li id="n-Hot-topics">Hot topics</li>
       
   320 				<li id="n-Development">Development</li>
       
   321 				<li id="n----Architecture">-- Architecture</li>
       
   322 				<li id="n----Tools">-- Tools</li>
       
   323 				<li id="n----How-tos">-- How-tos</li>
       
   324 				<li id="n----Adaptation">-- Adaptation</li>
       
   325 
       
   326 				<li id="n-Technology">Technology</li>
       
   327 				<li id="n-Teams">Teams</li>
       
   328 				<li id="n-Products">Products</li>
       
   329 				<li id="n-Reference">Reference</li>
       
   330 			</ul>
       
   331 		</div>
       
   332 	</div>
       
   333 
       
   334 		<div class='portlet' id='p-S60 Arena links'>
       
   335 		<h5>S60 Arena links</h5>
       
   336 		<div class='pBody'>
       
   337 			<ul>
       
   338 				<li id="n-Discussion-forum">Discussion forum</li>
       
   339 				<li id="n-Feedback">Feedback</li>
       
   340 				<li id="n-Send-email">Send email</li>
       
   341 
       
   342 			</ul>
       
   343 		</div>
       
   344 	</div>
       
   345 		<div id="p-search" class="portlet">
       
   346 		<h5><label for="searchInput">Search</label></h5>
       
   347 		<div id="searchBody" class="pBody">
       
   348 			<form action="" id="searchform"><div>
       
   349 				<input id="searchInput" name="search" type="text" accesskey="f" value="" />
       
   350 
       
   351 				<input type='submit' name="go" class="searchButton" id="searchGoButton"	value="Go" />&nbsp;
       
   352 				<input type='submit' name="fulltext" class="searchButton" value="Search" />
       
   353 			</div></form>
       
   354 		</div>
       
   355 	</div>
       
   356 	<div class="portlet" id="p-tb">
       
   357 		<h5>Toolbox</h5>
       
   358 		<div class="pBody">
       
   359 
       
   360 			<ul>
       
   361 				<li id="t-whatlinkshere">What links here</li>
       
   362 				<li id="t-recentchangeslinked">Related changes</li>
       
   363 <li id="t-upload">Upload file</li>
       
   364 <li id="t-specialpages">Special pages</li>
       
   365 				<li id="t-print">Printable version</li>				<li id="t-permalink">Permanent link</li>			</ul>
       
   366 
       
   367 		</div>
       
   368 	</div>
       
   369 		</div>
       
   370 		<script type="text/javascript"> if (window.runOnloadHook) runOnloadHook();</script>
       
   371 </div>
       
   372 </body></html>