<?xml version="1.0" encoding="UTF-8"?>
<!--***********************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 ***********************************************************-->



<o:component-data xmlns:o="http://openoffice.org/2001/registry"
    o:package="org.openoffice.Office" o:name="ProtocolHandler">
  <node o:name="HandlerSet">
    <node o:name="com.sun.star.test.deployment.passive_native" o:op="replace">
      <prop o:name="Protocols">
        <value>vnd.org.openoffice.test.desktop.deployment.passive_native:*</value>
      </prop>
    </node>
    <node o:name="com.sun.star.test.deployment.passive_java" o:op="replace">
      <prop o:name="Protocols">
        <value>vnd.org.openoffice.test.desktop.deployment.passive_java:*</value>
      </prop>
    </node>
    <node o:name="com.sun.star.test.deployment.passive_python" o:op="replace">
      <prop o:name="Protocols">
        <value>vnd.org.openoffice.test.desktop.deployment.passive_python:*</value>
      </prop>
    </node>
  </node>
</o:component-data>
