// -----------------------------------------------------------------------------
//
//   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.
//
// $Id: rasterizer.bin.policy 476799 2006-11-19 11:33:41Z cam $
// -----------------------------------------------------------------------------

grant codeBase "${app.jar.base}/xml-apis-ext-${xmlapis.version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/xml-apis-${xmlapis.version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/xalan-${xalan.version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/xercesImpl-2.9.1.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/../batik-rasterizer-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-svgrasterizer-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-ext-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-dom-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-css-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-svg-dom-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-gvt-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-parser-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-script-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-bridge-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-swing-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-transcoder-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-gui-util-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-awt-util-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-util-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-xml-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/fop-transcoder-allinone-${xmlgraphics.commons.version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/xmlgraphics-commons-${xmlgraphics.commons.version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-anim-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-codec-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-extension-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-svggen-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/js.jar" {
  permission java.lang.RuntimePermission "createClassLoader";
  permission java.net.SocketPermission "*", "listen, connect, resolve, accept";
  permission java.lang.RuntimePermission "accessDeclaredMembers";
  permission java.util.PropertyPermission "org.mozilla.javascript.JavaAdapter", "read";
  permission java.util.PropertyPermission "org.mozilla.javascript.JavaAdapterClassName", "read";
  permission java.io.FilePermission "<<ALL FILES>>", "read";
};

grant {
 permission java.io.FilePermission  "${app.jar.base}/batik-svg-dom-${version}.jar", "read";
};

