|
|
|
|
|
|
Apéndices Variables de configuración de las Extensiones de servidor de FrontPage
Algunas características de las Extensiones de servidor de FrontPage pueden configurarse mediante la definición de los valores de las variables de configuración de las extensiones de servidor. Es necesario especificar todos los valores de configuración como secuencias de comandos, aunque algunos se interpreten numéricamente. Las variables pueden establecerse en uno de los tres niveles siguientes:
La sintaxis de cada variable de subweb es
Por ejemplo:
Si se define la misma variable de configuración en más de un nivel, las Extensiones de servidor de FrontPage resuelven el conflicto mediante el uso de la jerarquía siguiente:
La tabla siguiente describe las ubicaciones de las variables de configuración de las extensiones de servidor en Windows y UNIX.
FrontPage asigna internamente un valor predeterminado a cada variable
Este apéndice incluye la siguiente información acerca de cada variable de configuración:
Cuando AccessControl se establece como 0, la comprobación de permisos de FrontPage se deshabilita por completo. Si AccessControl se establece como 0, el administrador debe establecer manualmente el control de acceso en el directorio _vti siempre que se crea un subweb. Hasta que se establece manualmente el control de acceso, cualquier usuario puede modificar el subweb. Cuando AccessControl se establece como 0, FrontPage no sobrescribe los permisos de control de acceso personalizados. Además, el cliente FrontPage deshabilitará el comando Permisos .
Cuando AllowExecutableScripts se establece como un valor que no sea cero, FrontPage establece el bit ejecutable en los archivos incluidos en los directorios ejecutables. Cuando los directorios se marcan como ejecutables, todos los archivos incluidos en el directorio también se marcan como ejecutables. Si los autores tienen permiso para cargar en directorios ejecutables (es decir, la variable NoExecutableCgiUpload se establece como 0), cuando AllowExecutableScripts se establece como un valor que no es cero, los autores podrán ejecutar secuencias de comandos CGI y extensiones ISAPI recién cargadas. Si NoExecutableCgiUpload se establece como 0 y AllowExecutableScripts se establece como 0, los autores podrán cargar y utilizar archivos ASP e IDC, pero no archivos CGI ni ISAPI.
Cuando Authoring se establece como deshabilitada, todas las operaciones de edición realizadas mediante las Extensiones de servidor de FrontPage se deshabilitan en el servidor virtual. Esta variable también puede definirse mediante el complemento MMC de FrontPage. Cuando se establece en habilitada, la edición se habilita.
Establece el número máximo de documentos que se mantienen en memoria caché cuando FrontPage realiza operaciones de escritura. Es el número máximo de documentos cuya información de propiedad, parámetros Web por ejemplo, se desea mantener en la memoria activa. Si un autor abre un documento cuando la memoria caché está llena, la memoria caché se borra y se inicia con el último documento abierto.
De manera predeterminada, las Extensiones de servidor de FrontPage establecen los atributos ALTO y ANCHO en todas las etiquetas IMG de las páginas guardadas en un Web. Esto mejora el aspecto de las páginas en caso de que el visitante de un sitio las descargue por una conexión lenta. CacheMaxImage establece el número máximo de imágenes cuyos atributos ALTO y ANCHO guardarán en memoria caché las extensiones de servidor mientras se actualizan los hipervínculos o se guarda una página. Si establece esta variable globalmente o por servidor virtual, y los Web de su servidor suelen contener más de 16 imágenes, debe incrementar este número. Si establece esta variable en un subweb individual, no le asigne un número superior al número de archivos de imágenes del Web.
Establece el número máximo de archivos incluidos en una página (es decir, archivos incluidos mediante el componente de inclusión de página) que las extensiones de servidor de FrontPage guardarán en memoria caché mientras se actualizan los hipervínculos o se guarda la página. Debe incrementar el valor de CacheMaxInclude hasta alcanzar el número máximo de páginas incluidas en cualquier página del Web, en caso de que dicho número sea mayor que el valor predeterminado (16).
Establece en kilobytes el tamaño máximo de documento que las Extensiones de servidor de FrontPage guardarán en memoria caché internamente.
Establece el número máximo de documentos guardados en la memoria caché cuando FrontPage realiza operaciones de lectura. Es el número máximo de documentos cuya información de propiedad, parámetros Web por ejemplo, se desea mantener en la memoria activa. Si un autor abre un documento cuando la memoria caché está llena, la memoria caché se borra y se inicia con el último documento abierto.
Establece la versión más antigua del cliente FrontPage que puede utilizarse para modificar un Web. Establezca esta variable si no desea que un autor modifique un Web con versiones anteriores del cliente FrontPage (utilizaría esta variable, por ejemplo, cuando el Web contiene características no compatibles con versiones anteriores del cliente FrontPage). Esta variable sólo puede establecerse para un Web, en el archivo _vti_pvt/Service.cnf del Web. Si este parámetro no aparece, pueden utilizarse todas las versiones del cliente FrontPage para modificar el Web. ClientVerCutoff debe ir seguida del signo de dos puntos, la versión más antigua de FrontPage que desea que los autores utilicen mientras modifican el Web, otro signo de dos puntos y un mensaje de error que aparecerá cuando un autor intente abrir el Web con un cliente más antiguo. Por ejemplo:
Tenga en cuenta que el estado de escritura de la variable se establece en SX. Es más seguro ocultar esta variable, de modo que no sea posible asignarle un valor mediante el cuadro de diálogo Configuración del Web del cliente FrontPage.
En todos los servidores, excepto IIS, ComplexPasswords aumenta las restricciones en la secuencias de comandos de contraseña creadas en FrontPage. Cuando ComplexPasswords se establece como un valor que no es cero, se aplican las reglas siguientes a las contraseñas:
Las Extensiones de servidor de FrontPage reservan automáticamente la cantidad adecuada de espacio para las imágenes y otros archivos incrustados en una página Web. Es posible utilizar DisableAutoImgSizeExts para especificar una lista de una o más extensiones de archivo. Las extensiones de servidor excluirá a los tipos de archivos que se enumeran en esta variable al reservar automáticamente la cantidad adecuada de espacio en la página. Para especificar los tipos de archivo, concatene las extensiones de nombre de archivo (incluido el primer punto) y no utilice espacios. Por ejemplo: .ext1.ext2.ext3
FrontPage guarda en memoria caché los datos de la etiqueta META de todas las páginas Web de un archivo. El hecho de utilizar un archivo único para guardar en memoria caché los datos, facilita el acceso a los datos de las secuencias de comandos y los programas que utilizan el modelo de objeto FrontPage. La variable DisableMetaTagStore deshabilita esta característica. Si no se tiene acceso al Web mediante el modelo de objeto, establezca el valor de esta variable en un valor que no sea cero para deshabilitar el almacenamiento de los datos de la etiqueta META.
Al enviar una URL con un parámetro de depuración (por ejemplo, http://server/web/_vti_bin/shtml.dll/page.htm/_vti_debug), los usuarios pueden ver información relativa a la configuración del servidor Web. De manera predeterminada, las Extensiones de servidor de FrontPage omiten el parámetro y la página no muestra la información potencialmente confidencial. Sin embargo, como herramienta de solución de problemas, puede habilitar el uso del parámetro de depuración estableciendo la variable EnableVtiDebug para un valor distinto de cero.
Establece el formato de dirección URL utilizado por el procesador de mapa de imágenes del servidor que ejecuta los mapas de imágenes generados por FrontPage. Tenga en cuenta que FrontPage 2000 genera mapas de imagen del servidor y que la mayoría de los exploradores son compatibles con este tipo de mapas de imagen, por lo que esta configuración sólo es útil con versiones más antiguas de FrontPage. Los parámetros válidos son NCSA, CERN, Netscape, ninguno o "". Si se especifica ninguno, FrontPage no generará HTML para admitir el procesamiento de mapas de imagen en el servidor. La secuencia vacía "" especifica que se generen los mapas de imagen FrontPage predeterminados.
Establece la dirección URL relativa al servidor del procesador de mapas de imagen del servidor para el formato de mapa de imagen seleccionado. Si ImageMapFormat se establece como "", las Extensiones de servidor de FrontPage procesan automáticamente los mapas de imagen del cliente. Si utiliza otros formatos, suministre el nombre y ubicación del procesador de mapas de imágenes. Para especificar mapas de imagen del cliente, establezca esta variable como "" (ninguno).
La llamada del cliente FrontPage a la extensiones de servidor para enumerar documentos puede durar demasiado tiempo si, por ejemplo, dicha llamada se realiza para obtener una lista de todo el contenido de un Web de gran tamaño. De manera predeterminada, ListLockLatency se establece de modo que esta transacción libere y retome el uso exclusivo del Web cada 5 segundos. Este número es aproximado; los usos exclusivos se abren siempre que se encuentra un directorio nuevo durante la transacción de la lista. Por ejemplo, se tardaría demasiados segundos en enumerar un directorio de 100.000 archivos, por lo que el uso exclusivo no se liberaría hasta haber enumerado todo el directorio. La variable ListLockLatency permite controlar el intervalo de liberación del uso exclusivo (en segundos). El valor de la variable es el número máximo de segundos entre las aperturas. Un valor de 0 significa que el uso exclusivo debe abrirse cada vez que se encuentre un subdirectorio nuevo.
Cuando las Extensiones de servidor de FrontPage 2000 están instaladas en un servidor Web, los usuarios del cliente FrontPage pueden obtener una lista de todos los DSN del sistema del servidor haciendo clic en Configuración del Web en el menú Herramientas y eligiendo la ficha Base de datos. Así se puede crear un problema de seguridad, ya que se presenta una lista de recursos en su servidor. Cuando ListSystemDSNs se establece en cero, los usuarios de FrontPage no pueden ver la lista de los DSN del sistema del servidor Web. Cuando ListSystemDSNs se establece en un valor distinto de cero, los DSN del sistema aparecen en una lista.
Si Logging se establece como un valor que no es cero, las Extensiones de servidor de FrontPage registran todas las operaciones de edición en el archivo Author.log del directorio _vti_log del Web. Cada operación se registra con la hora actual, el host remoto, el nombre de usuario del autor, el nombre del Web, la operación realizada y los datos previos a la operación. En el caso de una infracción de seguridad, este archivo de registro puede analizarse por actividad de edición en el sitio Web.
Puede utilizarse para omitir el atributo juego de caracteres del encabezado tipo de contenido.
Puede utilizarse para omitir el atributo de codificación de transferencia de contenido del encabezado tipo de contenido.
Establece el nombre de usuario que se utilizará como cuenta Remitente al enviar correo electrónico. Se utiliza especialmente como argumento para el comando POST FROM: en SMTP. El valor predeterminado SMTP es usuario@host, donde usuario es la cuenta de usuario actual y host es el nombre de host actual.
(Se trata de una variable obsoleta que se suministra para mantener la compatibilidad con versiones anteriores; utilice NoSaveResultsToAbsoluteFile en su lugar.) Cuando se establece en un valor que no es cero, NoAbsoluteFileResults fuerza a los controladores de formulario predeterminados Registro y Discusión (Guardar resultados) a escribir sólo en un archivo del área de contenido del Web del autor. Esto impide que dichos controladores de formularios escriban en una ruta de acceso de archivo absoluta. Aunque el valor predeterminado de NoAbsoluteFileResults es 0, se establece como 1 durante la instalación de FrontPage.
Si NoClientImageMaps se establece como 1, impide que FrontPage genere HTML que admitan el procesamiento de mapas de imágenes de cliente. Para configurar FrontPage de modo que generen mapas de imágenes del cliente y del servidor, deje esta variable establecida en su valor predeterminado, 0, y seleccione un formato de mapa de imágenes de servidor (véase ImageMapFormat).
Cuando NoExecutableCgiUpload se establece en un valor distinto de cero, las nuevas secuencias de comando CGI no se pueden ejecutar. En un servidor UNIX, cuando esta clave se establece en un valor distinto de cero, las Extensiones de servidor de FrontPage no establecerán el bit ejecutable en cualquier secuencia de comandos CGI que un autor cargue en un Web mediante FrontPage. En un servidor Windows NT, cuando esta clave se establece en un valor distinto de cero, las Extensiones de servidor de FrontPage no permitirán que el archivo se cargue. El usuario recibe un mensaje de error indicando que el archivo no se puede poner en el directorio especificado. Un Web Presence Provider (Proveedor de presencia en Web) puede definir manualmente el permiso de ejecución después de haber inspeccionado la secuencia de comandos CGI. Cuando NoExecutableCgiUpload se establece en 0, las extensiones del servidor establecen automáticamente el bit ejecución en las secuencias de comandos CGI cargadas en el directorio cgi-bin de un autor (UNIX) y permiten automáticamente que las secuencias de comandos se carguen en directorios ejecutables (Windows NT). NoExecutableCgiUpload también controla si los usuarios pueden marcar directorios como ejecutables. Si la clave se establece en 0, los usuarios pueden marcar cualquier directorio como ejecutable. Si la clave se establece en un valor distinto de cero, los usuarios no podrán hacer los directorios ejecutables aunque los administradores sí podrán.
Cuando NoIndexServer se establece en 1, FrontPage no utiliza IIS Index Server para generar el índice de texto del sitio Web. En su lugar, FrontPage utiliza el sistema de búsqueda FreeWAIS, incluido en FrontPage 2000. De manera predeterminada, si FrontPage detecta Index Server, lo utiliza para generar un índice de texto.
(IIS 4.0 o posteriores) Cuando NoMarkScriptable se establece como un valor que no es cero, los usuarios del cliente FrontPage no pueden modificar el para permitir secuencias de comandos en ninguna carpeta del Web. Si se utiliza este valor, un proveedor de servicios Internet debe establecer manualmente el bit para permitir la ejecución de secuencias de comandos en las carpetas. Si NoMarkScriptable se establece como 0, los usuarios del cliente FrontPage pueden modificar dicho bit. Los proveedores de servicios Internet pueden utilizar esta configuración para permitir o denegar selectivamente el uso de funciones de base de datos y otras páginas basadas en ASP según criterios de cada servidor o cada Web.
Si NoMarkScriptable se establece en 1 en el servidor, pero vti_nomarkscriptable
Las versiones anteriores de FrontPage permiten al controlador de formulario predeterminado (Guardar resultados) canalizar los resultados del formulario a cualquier programa elegido arbitrariamente. Para permitir la compatibilidad con versiones anteriores, NoSaveResultsPipeTo deshabilita esta característica cuando se establece como un valor que no es cero. Para permitir la canalización de los contenidos del formulario a un programa, establezca esta variable como 0.
Si NoSaveResultsToAbsoluteFile se establece como 1, los controladores de formulario predeterminados (Guardar resultados), Registro y Discusión no podrán escribir en una ruta de acceso de archivo absoluta aunque la cuenta de exploración tenga derechos NTFS de escritura en dicha ruta de acceso: los controladores de formularios sólo podrán escribir en un archivo incluido en el área de contenido del Web. Cuando NoSaveResultsToAbsoluteFile se establece como 0, los controladores de formularios predeterminados (Guardar resultados), Registro y Discusión de FrontPage escriben en una ruta de acceso de archivo absoluta Utilice NoSaveResultsToAbsoluteFile en lugar de la variable obsoleta NoAbsoluteFileResults.
Cuando NoSaveResultsToLogDir se establece como 1, los controladores de formulario predeterminados (Guardar resultados), Registro y Discusión no se escriben en el directorio _vti_log del Web. Si NoSaveResultsToLogDir se establece como 0, los controladores de formulario escriben en el directorio _vti_log del Web. Utilice NoSaveResultsToLogDiren lugar de la variable obsoleta NoServerFileResults.
(Se trata de una variable obsoleta que se suministra para mantener la compatibilidad con versiones anteriores; utilice NoSaveResultsToLogDir en su lugar). Cuando NoServerFileResults se establece como un valor que no es cero, los controladores de formulario predeterminados (Guardar resultados), Registro y Discusión de FrontPage pueden escribir en el directorio _vti_log del Web de un autor.
Cuando PreserveTagCase se establece como S o como un valor que no es cero, las extensiones de servidor conservan las letras mayúsculas/minúsculas de los atributos de la etiqueta HTML cuando vuelven a dar formato a las páginas HTML. PreserveTagCase tiene prioridad sobre la variable UpperCaseTags. Tenga en cuenta que una variable distinta UpperCaseTags controla las letras mayúsculas/minúsculas de las etiquetas HTML.
Sólo en los servidores IIS, si se establece PrivateBrowsable como 1, los exploradores tendrán acceso al al directorio _private. Para impedir que los visitantes del sitio exploren el directorio _private, establezca PrivateBrowsable como0. Una vez agregado este valor, se usará con los nuevos Web que cree y no afectará a los Web creados previamente.
Al publicar documentos actualizados en su Web, FrontPage comprueba una lista de propiedades de documentos y que el contenido de dichas propiedades (valores de metadatos) coincide en los Web de origen y de destino. Si no coinciden, FrontPage actualiza el Web de destino con la copia del Web de origen del documento. La lista de propiedades se almacena en la clave PublishMetainfoKeys y es personalizable. Por ejemplo, puede que un usuario no revise nada en un Web excepto la lista de categorías a la que pertenece un archivo. Mediante la clave PublishMetainfoKeys, FrontPage publicará las páginas actualizadas, incluso si no ha cambiado ningún contenido. Si su Web utiliza el componente Categorías, quizá sea especialmente importante mantener los metadatos de las categorías actualizados. PublishMetainfoKeys no es un mecanismo de comprobación de versiones. Mediante esta clave, la copia del Web de origen del documento siempre sobrescribe la copia del Web de destino si los valores de metadatos difieren. Si desea conservar la versión del Web de destino de los documentos y metadatos, puede eliminar elementos de la lista de valores en esta clave.
Si desea evitar que FrontPage compruebe los valores de metadatos,
Si ReformatHtml se establece como S o en un valor que no es cero, las Extensiones de servidor de FrontPage vuelve a dar formato a todas las páginas HTML en el momento en que se cargan en el servidor Web. Si ReformatHtml se establece como 0 sólo se cambiará el formato de las páginas con componentes basados en FrontPage.
Cuando RequireSSL se establece como habilitada (o en otro valor que no sea deshabilitada), las extensiones de servidor solicitan la conexión Secure Sockets Layer entre el cliente FrontPage y el servidor.
Si las restricciones de usuario y grupo se habilitan (es decir, RestrictIISUsersAndGroups se establece como S o como un valor que no sea cero) en un determinado Web extendido con FrontPage, las extensiones de servidor buscan un grupo Windows NT con nombre que se ajuste a la convención siguiente: FP_[ServidorVirtual][_Directorios][_subweb] En un equipo multihost con IIS 2.0 ó 3.0, [ServidorVirtual] es la combinación formada por la dirección IP y el número de puerto del servidor, y [_Directorios][_Subweb] es la dirección URL del subweb. Por ejemplo, el Web raíz podría ser FP_172.17.123.255:80 y un subweb FP_172.17.123.255:80_directorio1_MiSubWeb1_directorio2_MiSubWeb2. Se trata del subweb anidado que corresponde a la dirección URL http://172.17.123.255:80/directorio1/MiSubWeb1/directorio2/MiSubWeb2. En una máquina con un único host, [ServidorVirtual es el número de puerto. Por ejemplo, FP_80 es el servidor virtual del puerto 80 si éste no está enlazado de forma específica con una dirección IP en el Administrador de servicios Internet. En IIS 4.0 y versiones posteriores, [ServidorVirtual] puede ser del tipo /LM/W3SVC/N, donde N es un número de instancia. Un ejemplo de Web raíz podría ser FP_/LM/W3SVC/1 y un ejemplo de subweb del servidor virtual sería FP_/LM/W3SVC/1_MiSubWeb. Otra posible variación consiste en utilizar el nombre del host. En este caso, un Web raíz sería FP_www.microsoft.com:80 y un subweb FP_www.microsoft.com:80_MiSubWeb. En un equipo con un único host, [ServidorVirtual] se podría configurar como el número de puerto, como en FP_80. Las restantes opciones de IIS 4.0 también funcionarán en este caso. Si se habilitan restricciones en un subweb, pero no se define un grupo local, las Extensiones de servidor de FrontPage buscarán el grupo del Web primario y lo utilizarán, en caso de que exista. Esta acción se repetirá recursivamente si el subweb está anidado en otro subweb. Si no se encuentra un grupo con nombre adecuado, no se establece ninguna restricción en los permisos.
RestrictIISUsersAndGroups no puede establecerse en el nivel de subweb;
Cuando se utiliza el ejecutable Shtml.exe de las Extensiones de servidor de FrontPage, versiones 3.0.2.1330 o posteriores, los componentes de tiempo de ejecución basados en FrontPage, como el controlador de formulario predeterminado (Guardar resultados) y el formulario de búsqueda, sólo procesarán archivos HTML o basados en HTML que no contengan el código ASP o la etiqueta SCRIPT RUNAT=server. Esto evita que los contenidos del código de origen, las contraseñas u otra información privada se exponga a los usuarios. El conjunto de archivos HTML o basados en HTML que Shtml.exe puede procesar está identificado por la extensión del nombre de archivo: .htm, .html, .shtm, .shtml, .htx, .asp, .alx y .asa. Si el archivo de configuración del servidor Web asigna otras extensiones de nombre de archivo a un tipo de archivo HTML o basado en HTML, estos archivos también se agregan al conjunto de archivos que Shtml.exe puede procesar. Por lo que se refiere a los servidores Apache y NCSA, todas las extensiones de archivo a las que se les ha asignado un tipo MIME de "texto/html" también se agregan al conjunto de archivos que Shtml.exe puede procesar. Utilice RunTimeFileExtensions para especificar qué archivos, de entre los tipos de archivo que Shtml.exe puede procesar, deben procesarse. Esto limita todavía más el conjunto de tipos de archivo HTML o basados en HTML que Shtml.exe procesará. RunTimeFileExtensions debe ir seguida de una lista de extensiones de nombres de archivo admitidos. Cada extensión debe comenzar con un punto y no debe haber espacios ni otros delimitadores entre las extensiones (por ejemplo: .htm.shtm.htz). Tenga en cuenta que en este ejemplo, la extensión .htz debe asignarse a una de las extensiones permitidas en el archivo de configuración de un servidor Web. Si no se especifica RunTimeFileExtensions, Shtml.exe sólo procesa los archivos que tengan las extensiones .htm y .html. RunTimeFileExtensions se pasa por alto en las versiones de las Extensiones de servidor de FrontPage anteriores a 3.0.2.1330. Por lo que se refiere a los servidores IIS 4.0 y posteriores, las Extensiones de servidor de FrontPage obtienen los valores predeterminados para RunTimeFileExtensions en ScriptMap global, y las configuraciones ScriptMap por servidor virtual desde la metabase>
Establece el lenguaje de las secuencias de comandos generadas por las Extensiones de servidor de FrontPage para reforzar la configuración de validación de datos que un autor ha aplicado a los campos de formulario. Los parámetros válidos son VBScript, JavaScript o ninguno.
Establece el nombre del programa al que debe canalizarse el correo electrónico. Por lo general, dicho programa será Sendmail, pero es posible elegir cualquier otro. Antes de llamar al comando, todas las apariciones de "%r" se reemplazan por el destinatario del correo. Dicho carácter reemplaza al carácter porcentaje seguido de cualquier otro.
La variable SMTPHost se establece como el nombre o dirección IP de un host que ejecuta un demonio SMTP, como Sendmail en UNIX. Cuando un visitante del sitio remite un formulario cuyos resultados deben enviarse por correo electrónico, las Extensiones de servidor de FrontPage se conectan con el demonio SMTP para entregar el correo. De manera predeterminada, FrontPage asume que el demonio está a la escucha en el puerto 25 (el puerto estándar para SMTP), pero este puerto se puede omitir si se agrega ":xx" al nombre, donde xx es el puerto que se utiliza. Por lo general, se establecerán las variables SMTPHost o SendmailCommand , pero no ambas, ya que SendmailCommand tiene prioridad sobre SMTPHost. Valores de ejemplo: mail.example.microsoft.com, test:10000, 127.0.0.1
Si está utilizando el sistema de búsqueda integrado WAIS, al establecer TextMemory como 0, se deshabilita el indizado de texto del Web. Un valor que no es cero especifica el número de megabytes de RAM que deben utilizar las extensiones de servidor durante el indizado de texto de tablas hash y otras estructuras de datos. En los Web de menos de 500 páginas, establezca el valor de TextMemory como 1. En los Web de 500 a 5000 páginas, establézcalo como 2. En los Web de más de 5.000 páginas, establézcalo como 4.
Cuando UpperCaseTags se establece como So en un valor que no es cero, las extensiones de servidor convierten todas las etiquetas HTML en letras mayúsculas al cambiar el formato de las páginas HTML.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||