obliqlib3D/derived/ObLib3DBundle.m3


MODULE ObLib3DBundle;
Generated by m3bundle; see its manpage.

IMPORT Bundle, BundleRep, Text;
IMPORT Thread, Wr, TextWr;

TYPE T = Bundle.T OBJECT OVERRIDES
           get      := LookUp;
           getNames := GetNames;
         END;

TYPE Texts = REF ARRAY OF TEXT;

VAR
  bundle: T     := NIL;
  names : Texts := NIL;

PROCEDURE Get(): Bundle.T =
  BEGIN
    IF (bundle = NIL) THEN bundle := NEW (T) END;
    RETURN bundle;
  END Get;

PROCEDURE GetNames (<*UNUSED*> self: T): Texts =
  BEGIN
    IF names = NIL THEN
      names := NEW (Texts, NUMBER (Names));
      names^ := Names;
    END;
    RETURN names;
  END GetNames;

PROCEDURE LookUp (<*UNUSED*> self: T;  element: TEXT): TEXT =
  BEGIN
    FOR i := 0 TO LAST (Names)-1 DO
      IF Text.Equal (Names[i], element) THEN
        IF Elements[i] = NIL THEN Elements[i] := GetElt (i) END;
        RETURN Elements[i];
      END;
    END;
    RETURN NIL;
  END LookUp;

CONST Names = ARRAY [0..86] OF TEXT {
  "DiskGO.obl",
  "MarkerGO.obl",
  "GraphicsBase.obl",
  "PerspCameraGO.obl",
  "PointProp.obl",
  "BoxGO.hlp",
  "MouseCB.obl",
  "VectorLightGO.hlp",
  "Point3.hlp",
  "MarkerTypeProp.hlp",
  "GroupGO.hlp",
  "Prop.hlp",
  "ConeGO.obl",
  "SpotLightGO.obl",
  "ShadingProp.obl",
  "QuadMeshGO.hlp",
  "CameraGO.obl",
  "PolygonGO.hlp",
  "RealProp.obl",
  "Win_OpenGL_Base.hlp",
  "AmbientLightGO.hlp",
  "LineTypeProp.hlp",
  "GO.hlp",
  "AnimHandle.hlp",
  "SphereGO.obl",
  "Matrix4.hlp",
  "PointLightGO.obl",
  "TorusGO.hlp",
  "RasterModeProp.obl",
  "RootGO.obl",
  "BooleanProp.obl",
  "SurfaceGO.hlp",
  "X_OpenGL_Base.hlp",
  "LightGO.hlp",
  "TransformProp.hlp",
  "KeyCB.hlp",
  "ProxiedObj.hlp",
  "BoxGO.obl",
  "VectorLightGO.obl",
  "MarkerTypeProp.obl",
  "CylinderGO.hlp",
  "GroupGO.obl",
  "Prop.obl",
  "LineGO.hlp",
  "X_PEX_Base.hlp",
  "OrthoCameraGO.hlp",
  "ColorProp.hlp",
  "PositionCB.hlp",
  "Anim3D.hlp",
  "QuadMeshGO.obl",
  "PolygonGO.obl",
  "Win_OpenGL_Base.obl",
  "AmbientLightGO.obl",
  "LineTypeProp.obl",
  "DiskGO.hlp",
  "GO.obl",
  "MarkerGO.hlp",
  "AnimHandle.obl",
  "GraphicsBase.hlp",
  "PerspCameraGO.hlp",
  "PointProp.hlp",
  "MouseCB.hlp",
  "TorusGO.obl",
  "SurfaceGO.obl",
  "X_OpenGL_Base.obl",
  "LightGO.obl",
  "ConeGO.hlp",
  "TransformProp.obl",
  "KeyCB.obl",
  "ProxiedObj.obl",
  "SpotLightGO.hlp",
  "ShadingProp.hlp",
  "CameraGO.hlp",
  "RealProp.hlp",
  "Time.hlp",
  "CylinderGO.obl",
  "LineGO.obl",
  "X_PEX_Base.obl",
  "OrthoCameraGO.obl",
  "ColorProp.obl",
  "SphereGO.hlp",
  "PositionCB.obl",
  "PointLightGO.hlp",
  "RasterModeProp.hlp",
  "RootGO.hlp",
  "BooleanProp.hlp",
  NIL
};

VAR Elements := ARRAY [0..86] OF TEXT {
  E0,
  E1,
  E2,
  E3,
  E4,
  E5,
  E6,
  E7,
  E8,
  NIL (* E9 .. E9_0 *),
  E10,
  E11,
  E12,
  E13,
  E14,
  E15,
  E16,
  E17,
  E18,
  E19,
  E20,
  E21,
  E22,
  E23,
  E24,
  E25,
  E26,
  E27,
  E28,
  E29,
  E30,
  E31,
  E32,
  E33,
  NIL (* E34 .. E34_0 *),
  E35,
  E36,
  E37,
  E38,
  E39,
  E40,
  E41,
  E42,
  E43,
  E44,
  E45,
  E46,
  E47,
  E48,
  E49,
  E50,
  E51,
  E52,
  E53,
  E54,
  E55,
  E56,
  E57,
  E58,
  E59,
  E60,
  E61,
  E62,
  E63,
  E64,
  E65,
  E66,
  NIL (* E67 .. E67_0 *),
  E68,
  E69,
  E70,
  E71,
  E72,
  E73,
  E74,
  E75,
  E76,
  E77,
  E78,
  E79,
  E80,
  E81,
  E82,
  E83,
  E84,
  E85,
  NIL
};

PROCEDURE GetElt (n: INTEGER): TEXT =
  <*FATAL Thread.Alerted, Wr.Failure *>
  VAR wr := TextWr.New ();
  BEGIN
    CASE n OF
    | 9 =>
        Wr.PutText (wr, E9);
        Wr.PutText (wr, E9_0);
    | 34 =>
        Wr.PutText (wr, E34);
        Wr.PutText (wr, E34_0);
    | 67 =>
        Wr.PutText (wr, E67);
        Wr.PutText (wr, E67_0);
    ELSE (*skip*)
    END;
    RETURN TextWr.ToText (wr);
  END GetElt;

CONST E0 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:47:00 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 17:28:37 PDT 1994 by najork                   *)\n\n\nmodule "
 & "DiskGOWrap for DiskGO;\n\nlet TProto = clone (SurfaceGO_TProto, {});\n\n"
 & "end module;\n";

CONST E1 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:45:56 PDT 1994 by najork                   *)\n(*       Created on T"
 & "ue May 31 17:30:50 PDT 1994 by najork                   *)\n\n\nmodule "
 & "MarkerGOWrap for MarkerGO;\n\nlet TProto = clone (GO_TProto, {});\n\nen"
 & "d module;\n";

CONST E2 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:43:38 PDT 1994 by najork                   *)\n(*       Created on T"
 & "ue May 31 11:42:47 PDT 1994 by najork                   *)\n\n\nmodule "
 & "GraphicsBaseWrap for GraphicsBase;\n\nlet TProto = clone (ProxiedObj_TP"
 & "roto, {});\n\nend module;\n";

CONST E3 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:45:01 PDT 1994 by najork                   *)\n(*       Created on T"
 & "ue May 31 11:37:20 PDT 1994 by najork                   *)\n\n\nmodule "
 & "PerspCameraGOWrap for PerspCameraGO;\n\nlet TProto = clone (CameraGO_TP"
 & "roto, {});\n\nend module;\n";

CONST E4 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Thu Jul 21 "
 & "13:46:12 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri May 27 20:32:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "PointPropWrap for PointProp;\n\n\nlet NameProto = clone (Prop_NameProto"
 & ", {\n  bind => meth (self, pv) PointProp_NameBind (self, pv) end\n});\n"
 & "\n\nlet ValProto = clone (Prop_ValProto, {\n  getBeh => meth (self) Poi"
 & "ntProp_ValGetBeh (self) end,\n  setBeh => meth (self, beh) PointProp_Va"
 & "lSetBeh (self, beh) end,\n  get    => meth (self) PointProp_ValGet (sel"
 & "f) end,\n  value  => meth (self, time) PointProp_ValValue (self, time) "
 & "end\n});\n\n\nlet BehProto = clone (Prop_BehProto, {});\n\n\nlet ConstB"
 & "ehProto = clone (BehProto, {\n  set => meth (self, p) PointProp_ConstBe"
 & "hSet (self, p) end\n});\n\n\nlet SyncBehProto = clone (BehProto, {\n  a"
 & "ddRequest => \n    meth (self, req) \n      PointProp_SyncBehAddRequest"
 & " (self, req) \n    end,\n  linMoveTo =>\n    meth (self, p, start, dur)"
 & " \n      PointProp_SyncBehLinMoveTo (self, p, start, dur) \n    end,\n "
 & " linMoveBy =>\n    meth (self, p, start, dur)\n      PointProp_SyncBehL"
 & "inMoveBy (self, p, start, dur) \n    end\n});\n\n\nlet AsyncBehProto = "
 & "clone (BehProto, {\n  compute => ok,\n});\n\n\nlet DepBehProto = clone "
 & "(BehProto, {\n  compute => ok,\n});\n\n\nlet RequestProto = clone (Prop"
 & "_RequestProto, {\n  value => ok,\n});\n\n\nend module;\n";

CONST E5 =
   "  BoxGO_New(p1 p2: PointVal): BoxGO        \n  BoxGO_Corner1: PointProp"
 & "Name              \n  BoxGO_Corner2: PointPropName              \n  Box"
 & "GO_SetCorner1(o: GO, p: PointVal): Ok \n  BoxGO_SetCorner2(o: GO, p: Po"
 & "intVal): Ok \nWHERE                                       \n  BoxGO <: "
 & "SurfaceGO                         \n  PointVal = PointPropVal + Point3 "
 & "         \n";

CONST E6 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Fri Jul 22 "
 & "19:07:22 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri Jul 22 18:05:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "MouseCBWrap for MouseCB;\n\nlet TProto = clone (ProxiedObj_TProto, {\n "
 & " invoke => meth (self, mr) MouseCB_Invoke (self, mr) end\n});\n\nend mo"
 & "dule;\n";

CONST E7 =
   "  VectorLightGO_New(c: ColorVal, dir: PointVal): VectorLightGO    \n  V"
 & "ectorLightGO_Direction: PointPropName                           \n  Vec"
 & "torLightGO_SetDirection(l: VectorLightGO, dir: PointVal): Ok \nWHERE   "
 & "                                                           \n  VectorLi"
 & "ghtGO <: LightGO                                          \n  PointVal "
 & "= PointPropVal + Point3                                 \n  ColorVal = "
 & "ColorPropVal + Color + Text                           \n";

CONST E8 =
   "  Point3_Plus(a b: Point3): Point3              \n  Point3_Minus(a b: P"
 & "oint3): Point3             \n  Point3_ScaleToLen(a: Point3, s: Num): Po"
 & "int3  \n  Point3_TimesScalar(a: Point3, s: Num): Point3 \n  Point3_Leng"
 & "th(a: Point3): Real                \n  Point3_Distance(a b: Point3): Re"
 & "al            \n  Point3_MidPoint(a b: Point3): Point3          \nWHERE"
 & "                                           \n  Point3 = [3*Num]        "
 & "                      \n  Num = Real + Int\n";

CONST E9 =
   "  MarkerTypeProp_NewConst(lt: MarkerType): MarkerTypePropVal           "
 & " \n  MarkerTypeProp_NewSync(ah: AnimHandle, lt: MarkerType): MarkerType"
 & "PropVal\n  MarkerTypeProp_NewAsync(beh: MarkerTypePropAsyncBeh): Marker"
 & "TypePropVal\n  MarkerTypeProp_NewDep(beh: MarkerTypePropDepBeh): Marker"
 & "TypePropVal   \n  MarkerTypeProp_NewConstBeh(lt: MarkerType): MarkerTyp"
 & "ePropConstBeh    \n  MarkerTypeProp_NewSyncBeh(ah: AnimHandle, \n      "
 & "                      t: MarkerType): MarkerTypePropSyncBeh\n  MarkerTy"
 & "peProp_NewAsyncBeh(compute: M1):MarkerTypePropAsyncBeh        \n  Marke"
 & "rTypeProp_NewDepBeh(compute: M2):MarkerTypePropDepBeh            \n  Ma"
 & "rkerTypeProp_NewRequest(start dur: Num, value: M3): MarkerTypePropReque"
 & "st \nWHERE                                                             "
 & "      \n  MarkerTypePropName <: PropName & { bind: (v: MarkerTypePropVa"
 & "l) => Prop }\n  MarkerTypePropVal <: PropVal & { getBeh: () => MarkerTy"
 & "pePropBeh,      \n                                   setBeh: (MarkerTyp"
 & "ePropBeh) => Ok,    \n                                   get: () => Mar"
 & "kerType,                \n                                   value: (Nu"
 & "m) => MarkerType }         \n  MarkerTypePropBeh <: PropBeh            "
 & "                               \n  MarkerTypePropConstBeh <: MarkerType"
 & "PropBeh & { set: (MarkerType) => Ok }\n  MarkerTypePropSyncBeh <: Marke"
 & "rTypePropBeh &                           \n         { addRequest: (Mark"
 & "erTypePropRequest) => Ok ! Prop_BadInterval,\n           change: (Marke"
 & "rType,Num) => Ok ! Prop_BadInterval }         \n  MarkerTypePropAsyncBe"
 & "h <: MarkerTypePropBeh & { compute: M1 }          \n  MarkerTypePropDep"
 & "Beh <: MarkerTypePropBeh & { compute: M2 }            \n  MarkerTypePro"
 & "pRequest <: PropRequest & { value: M3 }                   \n  M1 = Self"
 & " (X <: MarkerTypePropAsyncBeh) (Real) => MarkerType          \n  M2 = S"
 & "elf (X <: MarkerTypePropDepBeh) (Real) => MarkerType            \n  M3 "
 & "= Self (X <: MarkerTypePropRequest) (MarkerType,Real) => MarkerType\n  "
 & "MarkerType = Text  (one of \"Dot\", \"Circ";

CONST E9_0 =
   "le\", \"Cross\", \"Asterisk\", \"X\") \n  Num = Real + Int\n";

CONST E10 =
   "  GroupGO_BadElement: Exception\n  GroupGO_New(): GroupGO\n  GroupGO_Ne"
 & "wWithSizeHint(size: Int): GroupGO\nWHERE\n  GroupGO <: GO & { add: (GO)"
 & " => Ok,\n                    remove: (GO) => Ok ! GroupGO_BadElement,\n"
 & "                    flush: () => Ok,\n                    content: () ="
 & "> [GO] }\n";

CONST E11 =
   "  Prop_BadMethod: Exception          \n  Prop_BadInterval: Exception   "
 & "     \nTYPES                                \n  Prop     <: ProxiedObj "
 & "             \n  PropName <: ProxiedObj              \n  PropVal  <: Pr"
 & "oxiedObj              \n  PropBeh  <: ProxiedObj              \n  PropR"
 & "equest <: ProxiedObj & { start: () => Real, dur: () => Real } \n";

CONST E12 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:46:50 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 17:28:16 PDT 1994 by najork                   *)\n\n\nmodule "
 & "ConeGOWrap for ConeGO;\n\nlet TProto = clone (SurfaceGO_TProto, {});\n\n"
 & "end module;\n";

CONST E13 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:45:48 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 09:44:50 PDT 1994 by najork                   *)\n\n\nmodule "
 & "SpotLightGOWrap for SpotLightGO;\n\nlet TProto = clone (LightGO_TProto,"
 & " {});\n\nend module;\n";

CONST E14 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Fri Sep 23 "
 & "15:45:29 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri May 27 20:32:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "ShadingPropWrap for ShadingProp;\n\n\nlet NameProto = clone (Prop_NameP"
 & "roto, {\n  bind => meth (self, pv) ShadingProp_NameBind (self, pv) end\n"
 & "});\n\n\nlet ValProto = clone (Prop_ValProto, {\n  getBeh => meth (self"
 & ") ShadingProp_ValGetBeh (self) end,\n  setBeh => meth (self, beh) Shadi"
 & "ngProp_ValSetBeh (self, beh) end,\n  get    => meth (self) ShadingProp_"
 & "ValGet (self) end,\n  value  => meth (self, time) ShadingProp_ValValue "
 & "(self, time) end\n});\n\n\nlet BehProto = clone (Prop_BehProto, {});\n "
 & " \n\nlet ConstBehProto = clone (BehProto, {\n  set => meth (self, k) Sh"
 & "adingProp_ConstBehSet (self, k) end\n});\n\n\nlet SyncBehProto = clone "
 & "(BehProto, {\n  addRequest => \n    meth (self, req) \n      ShadingPro"
 & "p_SyncBehAddRequest (self, req) \n    end,\n  change =>\n    meth (self"
 & ", k, start) \n      ShadingProp_SyncBehChange (self, k, start) \n    en"
 & "d\n});\n\n\nlet AsyncBehProto = clone (BehProto, {\n  compute => ok,\n}"
 & ");\n\n\nlet DepBehProto = clone (BehProto, {\n  compute => ok,\n});\n\n"
 & "\nlet RequestProto = clone (Prop_RequestProto, {\n  value => ok,\n});\n"
 & "\n\nend module;\n";

CONST E15 =
   "  QuadMeshGO_BadSize: Exception                                        "
 & " \n  QuadMeshGO_ColorsUndefined: Exception                             "
 & "    \n  QuadMeshGO_New(pts: [[Point3]]): QuadMeshGO                    "
 & "      \n  QuadMeshGO_NewWithShapeHint(pts: [[Point3]], s: Shape): QuadM"
 & "eshGO   \nWHERE                                                        "
 & "           \n  QuadMeshGO <: SurfaceGO &                               "
 & "               \n     { addFacetColors: ([[Col]]) => Ok ! QuadMeshGO_Ba"
 & "dSize,\n       setColorOfFacet: (i j: Int, c: Col) => Ok ! QuadMeshGO_C"
 & "olorsUndefined }\n  Shape = Text  (one of \"Unknown\", \"Convex\", \"No"
 & "nConvex\", \"Complex\") \n  Col = Color + Text\n";

CONST E16 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:44:39 PDT 1994 by najork                   *)\n(*       Created on T"
 & "ue May 31 09:40:28 PDT 1994 by najork                   *)\n\n\nmodule "
 & "CameraGOWrap for CameraGO;\n\nlet TProto = clone (GO_TProto, {});\n\nen"
 & "d module;\n";

CONST E17 =
   "  PolygonGO_New(pts: [PointVal]): PolygonGO                          \n"
 & "  PolygonGO_NewWithShapeHint(pts: [PointVal], s: Shape): PolygonGO   \n"
 & "WHERE                                                                 \n"
 & "  PolygonGO <: SurfaceGO                                               "
 & "\n  PointVal = PointPropVal + Point3                                   "
 & " \n  Shape = Text  (one of \"Unknown\", \"Convex\", \"NonConvex\", \"Co"
 & "mplex\") \n";

CONST E18 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Thu Jul 21 "
 & "13:44:26 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri May 27 20:32:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "RealPropWrap for RealProp;\n\n\nlet NameProto = clone (Prop_NameProto, "
 & "{\n  bind => meth (self, pv) RealProp_NameBind (self, pv) end\n});\n\n\n"
 & "let ValProto = clone (Prop_ValProto, {\n  getBeh => meth (self) RealPro"
 & "p_ValGetBeh (self) end,\n  setBeh => meth (self, beh) RealProp_ValSetBe"
 & "h (self, beh) end,\n  get    => meth (self) RealProp_ValGet (self) end,"
 & "\n  value  => meth (self, time) RealProp_ValValue (self, time) end\n});"
 & "\n\n\nlet BehProto = clone (Prop_BehProto, {});\n  \n\nlet ConstBehProt"
 & "o = clone (BehProto, {\n  set => meth (self, r) RealProp_ConstBehSet (s"
 & "elf, r) end\n});\n\n\nlet SyncBehProto = clone (BehProto, {\n  addReque"
 & "st => \n    meth (self, req) \n      RealProp_SyncBehAddRequest (self, "
 & "req) \n    end,\n  linChangeTo =>\n    meth (self, r, start, dur) \n   "
 & "   RealProp_SyncBehLinChangeTo (self, r, start, dur) \n    end,\n  linC"
 & "hangeBy =>\n    meth (self, r, start, dur)\n      RealProp_SyncBehLinCh"
 & "angeBy (self, r, start, dur) \n    end\n});\n\n\nlet AsyncBehProto = cl"
 & "one (BehProto, {\n  compute => ok,\n});\n\n\nlet DepBehProto = clone (B"
 & "ehProto, {\n  compute => ok,\n});\n\n\nlet RequestProto = clone (Prop_R"
 & "equestProto, {\n  value => ok,\n});\n\n\nend module;\n";

CONST E19 =
   "  Win`OpenGL`Base_New(title: Text, x y w h: Int): Win`OpenGL`Base ! Gra"
 & "phicsBase_Failure\n  Win`OpenGL`Base_NewStd(): Win`OpenGL`Base ! Graphi"
 & "csBase_Failure             \nWHERE                                     "
 & "                           \n  Win`OpenGL`Base <: GraphicsBase & { chan"
 & "geTitle: (Text) => Ok,           \n                                    "
 & "  awaitDelete: () => Ok, \n                                      destro"
 & "y: () => Ok }\n";

CONST E20 =
   "  AmbientLightGO_New(c: ColorVal): AmbientLightGO    \nWHERE           "
 & "                                      \n  AmbientLightGO <: LightGO    "
 & "                        \n  ColorVal = ColorPropVal + Color + Text     "
 & "         \n";

CONST E21 =
   "  LineTypeProp_NewConst(lt: LineType): LineTypePropVal                 "
 & " \n  LineTypeProp_NewSync(ah: AnimHandle, lt: LineType): LineTypePropVa"
 & "l   \n  LineTypeProp_NewAsync(beh: LineTypePropAsyncBeh): LineTypePropV"
 & "al     \n  LineTypeProp_NewDep(beh: LineTypePropDepBeh): LineTypePropVa"
 & "l         \n  LineTypeProp_NewConstBeh(lt: LineType): LineTypePropConst"
 & "Beh          \n  LineTypeProp_NewSyncBeh(ah: AnimHandle, lt: LineType):"
 & " LineTypePropSyncBeh\n  LineTypeProp_NewAsyncBeh(compute: M1):LineTypeP"
 & "ropAsyncBeh            \n  LineTypeProp_NewDepBeh(compute: M2):LineType"
 & "PropDepBeh                \n  LineTypeProp_NewRequest(start dur: Num, v"
 & "alue: M3): LineTypePropRequest\nWHERE                                  "
 & "                                 \n  LineTypePropName <: PropName & { b"
 & "ind: (v: LineTypePropVal) => Prop }    \n  LineTypePropVal <: PropVal &"
 & " { getBeh: () => LineTypePropBeh,          \n                          "
 & "       setBeh: (LineTypePropBeh) => Ok,        \n                      "
 & "           get: () => LineType,                    \n                  "
 & "               value: (Num) => LineType }             \n  LineTypePropB"
 & "eh <: PropBeh                                             \n  LineTypeP"
 & "ropConstBeh <: LineTypePropBeh & { set: (LineType) => Ok }    \n  LineT"
 & "ypePropSyncBeh <: LineTypePropBeh &                               \n   "
 & "       { addRequest: (LineTypePropRequest) => Ok ! Prop_BadInterval, \n"
 & "            change: (LineType,Num) => Ok ! Prop_BadInterval }          "
 & "\n  LineTypePropAsyncBeh <: LineTypePropBeh & { compute: M1 }          "
 & "    \n  LineTypePropDepBeh <: LineTypePropBeh & { compute: M2 }        "
 & "        \n  LineTypePropRequest <: PropRequest & { value: M3 }         "
 & "            \n  M1 = Self (X <: LineTypePropAsyncBeh) (Real) => LineTyp"
 & "e              \n  M2 = Self (X <: LineTypePropDepBeh) (Real) => LineTy"
 & "pe                \n  M3 = Self (X <: LineTypePropRequest) (LineType,Re"
 & "al) => LineType      \n  LineType = Text  (one of \"Solid\", \"Dashed\""
 & ", \"Dotted\", \"DashDot\")\n  Num = Real + Int\n";

CONST E22 =
   "  GO_PropUndefined: Exception                                \n  GO_Sta"
 & "ckError: Exception                                   \n  GO_Transform: "
 & "TransformPropName                            \n  GO_SetTransform(go: GO"
 & ", xf: TransformVal): Ok             \n  GO_GetTransform(go: GO): Transf"
 & "ormPropVal ! GO_PropUndefined \nWHERE                                  "
 & "                      \n  GO <: ProxiedObj &                           "
 & "               \n    { setProp: (PropName,PropVal) => Ok               "
 & "       \n      unsetProp: (PropName) => Ok ! GO_PropUndefined,         "
 & "  \n      getProp: (PropName) => PropVal ! GO_PropUndefined,        \n "
 & "     setName: (Text) => Ok,                                 \n      get"
 & "Name: () => Text,                                   \n      findName: ("
 & "Text) => GO,                                \n      pushMouseCB: (cb: M"
 & "ouseCB) => Ok,                      \n      popMouseCB: () => Ok ! GO_S"
 & "tackError,                     \n      removeMouseCB: (cb: MouseCB) => "
 & "Ok ! GO_StackError,       \n      invokeMouseCB: (mr: MouseRec) => Ok, "
 & "                   \n      pushPositionCB: (cb: PositionCB) => Ok,     "
 & "           \n      popPositionCB: () => Ok ! GO_StackError,            "
 & "      \n      removePositionCB: (cb: PositionCB) => Ok ! GO_StackError,"
 & " \n      invokePositionCB: (mr: PositionRec) => Ok,              \n    "
 & "  pushKeyCB: (cb: KeyCB) => Ok,                          \n      popKey"
 & "CB: () => Ok ! GO_StackError,                       \n      removeKeyCB"
 & ": (cb: KeyCB) => Ok ! GO_StackError,           \n      invokeKeyCB: (mr"
 & ": KeyRec) => Ok }                       \n  TransformVal = TransformPro"
 & "pVal + Matrix4                  \n";

CONST E23 =
   "  AnimHandle_New(): AnimHandle                               \nWHERE   "
 & "                                                     \n  AnimHandle <: "
 & "ProxiedObj & { animate: () => Ok }            \n";

CONST E24 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:46:43 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 16:37:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "SphereGOWrap for SphereGO;\n\nlet TProto = clone (SurfaceGO_TProto, {})"
 & ";\n\nend module;\n";

CONST E25 =
   "  Matrix4_Id: Matrix4                                   \n  Matrix4_Mul"
 & "tiply(m1 m2: Matrix4): Matrix4            \n  Matrix4_Translate(m: Matr"
 & "ix4, x y z: Num): Matrix4   \n  Matrix4_Scale(m: Matrix4, x y z: Num): "
 & "Matrix4       \n  Matrix4_RotateX(m: Matrix4, a: Num): Matrix4         "
 & "\n  Matrix4_RotateY(m: Matrix4, a: Num): Matrix4         \n  Matrix4_Ro"
 & "tateZ(m: Matrix4, a: Num): Matrix4         \nWHERE                     "
 & "                              \n  Matrix4 is opaque                    "
 & "                 \n  Num = Real + Int                                  "
 & "    \n";

CONST E26 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:45:41 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 09:44:39 PDT 1994 by najork                   *)\n\n\nmodule "
 & "PointLightGOWrap for PointLightGO;\n\nlet TProto = clone (LightGO_TProt"
 & "o, {});\n\nend module;\n";

CONST E27 =
   "  TorusGO_New(center normal: PointVal, rad1 rad2: RealVal): TorusGO    "
 & "\n  TorusGO_NewWithPrec(c n: PointVal, r1 r2: RealVal, prec: Int): Toru"
 & "sGO\n  TorusGO_Center: PointPropName                                   "
 & "     \n  TorusGO_Normal: PointPropName                                 "
 & "       \n  TorusGO_Radius1: RealPropName                               "
 & "         \n  TorusGO_Radius2: RealPropName                             "
 & "           \nWHERE                                                     "
 & "             \n  TorusGO <: SurfaceGO                                  "
 & "                \n  PointVal = PointPropVal + Point3                   "
 & "                  \n  RealVal = RealPropVal + Real + Int\n";

CONST E28 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Thu Nov 10 "
 & "13:23:15 PST 1994 by najork                   *)\n(*       Created on F"
 & "ri May 27 20:32:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "RasterModePropWrap for RasterModeProp;\n\n\nlet NameProto = clone (Prop"
 & "_NameProto, {\n  bind => meth (self, pv) RasterModeProp_NameBind (self,"
 & " pv) end\n});\n\n\nlet ValProto = clone (Prop_ValProto, {\n  getBeh => "
 & "meth (self) RasterModeProp_ValGetBeh (self) end,\n  setBeh => meth (sel"
 & "f, beh) RasterModeProp_ValSetBeh (self, beh) end,\n  get    => meth (se"
 & "lf) RasterModeProp_ValGet (self) end,\n  value  => meth (self, time) Ra"
 & "sterModeProp_ValValue (self, time) end\n});\n\n\nlet BehProto = clone ("
 & "Prop_BehProto, {});\n  \n\nlet ConstBehProto = clone (BehProto, {\n  se"
 & "t => meth (self, k) RasterModeProp_ConstBehSet (self, k) end\n});\n\n\n"
 & "let SyncBehProto = clone (BehProto, {\n  addRequest => \n    meth (self"
 & ", req) \n      RasterModeProp_SyncBehAddRequest (self, req) \n    end,\n"
 & "  change =>\n    meth (self, k, start) \n      RasterModeProp_SyncBehCh"
 & "ange (self, k, start) \n    end\n});\n\n\nlet AsyncBehProto = clone (Be"
 & "hProto, {\n  compute => ok,\n});\n\n\nlet DepBehProto = clone (BehProto"
 & ", {\n  compute => ok,\n});\n\n\nlet RequestProto = clone (Prop_RequestP"
 & "roto, {\n  value => ok,\n});\n\n\nend module;\n";

CONST E29 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Tue Aug 22 "
 & "12:04:52 PDT 1995 by najork                   *)\n(*       Created on T"
 & "ue May 31 09:40:28 PDT 1994 by najork                   *)\n\n\nmodule "
 & "RootGOWrap for RootGO;\n\nlet TProto = clone (GroupGO_TProto, {\n  chan"
 & "geCamera => meth (self, cam) RootGO_ChangeCamera (self, cam) end,\n  sc"
 & "reenToWorld => meth (self, pos, z) RootGO_ScreenToWorld (self, pos, z) "
 & "end\n});\n\nend module;\n";

CONST E30 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Thu Jul 21 "
 & "12:57:43 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri May 27 20:32:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "BooleanPropWrap for BooleanProp;\n\nlet NameProto = clone (Prop_NamePro"
 & "to, {\n  bind => meth (self, pv) BooleanProp_NameBind (self, pv) end\n}"
 & ");\n\n\nlet ValProto = clone (Prop_ValProto, {\n  getBeh => meth (self)"
 & " BooleanProp_ValGetBeh (self) end,\n  setBeh => meth (self, beh) Boolea"
 & "nProp_ValSetBeh (self, beh) end,\n  get    => meth (self) BooleanProp_V"
 & "alGet (self) end,\n  value  => meth (self, time) BooleanProp_ValValue ("
 & "self, time) end\n});\n\n\nlet BehProto = clone (Prop_BehProto, {});\n  "
 & "\n\nlet ConstBehProto = clone (BehProto, {\n  set => meth (self, b) Boo"
 & "leanProp_ConstBehSet (self, b) end\n});\n\n\nlet SyncBehProto = clone ("
 & "BehProto, {\n  addRequest => \n    meth (self, req) \n      BooleanProp"
 & "_SyncBehAddRequest (self, req) \n    end,\n  change =>\n    meth (self,"
 & " b, start) \n      BooleanProp_SyncBehChange (self, b, start) \n    end"
 & "\n});\n\n\nlet AsyncBehProto = clone (BehProto, {\n  compute => ok,\n})"
 & ";\n\n\nlet DepBehProto = clone (BehProto, {\n  compute => ok,\n});\n\n\n"
 & "let RequestProto = clone (Prop_RequestProto, {\n  value => ok,\n});\n\n"
 & "\nend module;\n";

CONST E31 =
   "  SurfaceGO_Color: ColorPropName\n  SurfaceGO_SetColor(o: GO, color: Co"
 & "lorVal): Ok\n  SurfaceGO_RasterMode: RasterModePropName\n  SurfaceGO_Se"
 & "tRasterMode(o: GO, t: RasterModeVal): Ok\n  SurfaceGO_AmbientReflection"
 & "Coeff: RealPropName\n  SurfaceGO_SetAmbientReflectionCoeff(o: GO, r: Re"
 & "alVal): Ok\n  SurfaceGO_DiffuseReflectionCoeff: RealPropName\n  Surface"
 & "GO_SetDiffuseReflectionCoeff(o: GO, r: RealVal): Ok\n  SurfaceGO_Specul"
 & "arReflectionCoeff: RealPropName\n  SurfaceGO_SetSpecularReflectionCoeff"
 & "(o: GO, r: RealVal): Ok\n  SurfaceGO_SpecularReflectionConc: RealPropNa"
 & "me\n  SurfaceGO_SetSpecularReflectionConc(o: GO, r: RealVal): Ok\n  Sur"
 & "faceGO_TransmissionCoeff: RealPropName\n  SurfaceGO_SetTransmissionCoef"
 & "f(o: GO, r: RealVal): Ok\n  SurfaceGO_SpecularReflectionColor: ColorPro"
 & "pName\n  SurfaceGO_SetSpecularReflectionColor(o: GO, color: ColorVal): "
 & "Ok\n  SurfaceGO_Lighting: BooleanPropName\n  SurfaceGO_SetLighting(o: G"
 & "O, t: BooleanVal): Ok\n  SurfaceGO_Shading: ShadingPropName\n  SurfaceG"
 & "O_SetShading(o: GO, sh: ShadingVal): Ok\n  SurfaceGO_EdgeVisibility: Bo"
 & "oleanPropName\n  SurfaceGO_SetEdgeVisibility(o: GO, b: BoolVal): Ok\n  "
 & "SurfaceGO_EdgeColor: ColorPropName\n  SurfaceGO_SetEdgeColor(o: GO, col"
 & "or: ColorVal): Ok\n  SurfaceGO_EdgeType: LineTypePropName\n  SurfaceGO_"
 & "SetEdgeType(o: GO, lt: LineTypeVal): Ok\n  SurfaceGO_EdgeWidth: RealPro"
 & "pName\n  SurfaceGO_SetEdgeWidth(o: GO, r: RealVal): Ok\nTYPE\n  Surface"
 & "GO <: GO\n  ColorVal = ColorPropVal + Color + Text\n  BooleanVal = Bool"
 & "eanPropVal + Bool\n  RealVal = RealPropVal + Real + Int\n  LineTypeVal "
 & "= LineTypePropVal + LineType\n  RasterModeVal = RasterModePropVal + Ras"
 & "terMode\n  ShadingVal = ShadingPropVal + Shading\n";

CONST E32 =
   "  X`OpenGL`Base_New(title: Text, x y w h: Int): X`OpenGL`Base ! Graphic"
 & "sBase_Failure\n  X`OpenGL`Base_NewStd(): X`OpenGL`Base ! GraphicsBase_F"
 & "ailure              \nWHERE                                            "
 & "                    \n  X`OpenGL`Base <: GraphicsBase & { changeTitle: "
 & "(Text) => Ok,           \n                                    awaitDele"
 & "te: () => Ok, \n                                    destroy: () => Ok }"
 & "\n";

CONST E33 =
   "  LightGO_Color: ColorPropName                                       \n"
 & "  LightGO_Switch: BooleanPropName                                    \n"
 & "  LightGO_SetColor(go: GO, c: ColorVal): Ok                         \n "
 & " LightGO_SetSwitch(go: GO, b: Bool): Ok                            \nWH"
 & "ERE                                                                \n  "
 & "LightGO <: GO                                                       \n "
 & " ColorVal = ColorPropVal + Color + Text                             \n "
 & " BooleanVal = BooleanPropVal + Bool                                 \n";

CONST E34 =
   "  TransformProp_NewConst(m: Matrix4): TransformPropVal                 "
 & " \n  TransformProp_NewSync(ah: AnimHandle, m: Matrix4): TransformPropVa"
 & "l   \n  TransformProp_NewAsync(beh: TransformPropAsyncBeh): TransformPr"
 & "opVal  \n  TransformProp_NewDep(beh: TransformPropDepBeh): TransformPro"
 & "pVal      \n  TransformProp_NewConstBeh(m: Matrix4): TransformPropConst"
 & "Beh          \n  TransformProp_NewSyncBeh(ah: AnimHandle, m: Matrix4): "
 & "TransformPropSyncBeh\n  TransformProp_NewAsyncBeh(compute: M1):Transfor"
 & "mPropAsyncBeh          \n  TransformProp_NewDepBeh(compute: M2):Transfo"
 & "rmPropDepBeh              \n  TransformProp_NewRequest(start dur: Num, "
 & "value: M3): TransformPropRequest\nWHERE                                "
 & "                                   \n  TransformPropName <: PropName & "
 & "{ bind: (v: TransformPropVal) => Prop }  \n  TransformPropVal <: PropVa"
 & "l & { getBeh: () => TransformPropBeh,        \n                        "
 & "          setBeh: (TransformPropBeh) => Ok,      \n                    "
 & "              get: () => Matrix4,                    \n                "
 & "                  value: (Num) => Matrix4 }             \n  TransformPr"
 & "opBeh <: PropBeh                                            \n  Transfo"
 & "rmPropConstBeh <: TransformPropBeh &                            \n     "
 & "                             { set: (Matrix4) => Ok,               \n  "
 & "                                  compose: (Matrix4) => Ok,           \n"
 & "                                    reset: () => Ok,                   "
 & " \n                                    translate: (Num,Num,Num) => Ok, "
 & " \n                                    scale: (Num,Num,Num) => Ok,     "
 & " \n                                    rotateX: (Num) => Ok,           "
 & "   \n                                    rotateY: (Num) => Ok,         "
 & "     \n                                    rotateZ: (Num) => Ok }      "
 & "       \n  TransformPropSyncBeh <: TransformPropBeh &                  "
 & "           \n       { addRequest: (TransformPropRequest) => Ok ! Prop_B"
 & "adInterval,\n         reset: (Num) => ";

CONST E34_0 =
   "Ok ! Prop_BadInterval,                        \n         changeTo: (Mat"
 & "rix4,Num,Num) => Ok ! Prop_BadInterval,        \n         translate: (N"
 & "um,Num,Num,Num,Num) => Ok ! Prop_BadInterval,\n         scale: (Num,Num"
 & ",Num,Num,Num) => Ok ! Prop_BadInterval,    \n         rotateX: (Num,Num"
 & ",Num) => Ok ! Prop_BadInterval,            \n         rotateY: (Num,Num"
 & ",Num) => Ok ! Prop_BadInterval,            \n         rotateZ: (Num,Num"
 & ",Num) => Ok ! Prop_BadInterval }           \n  TransformPropAsyncBeh <:"
 & " TransformPropBeh & { compute: M1 }            \n  TransformPropDepBeh "
 & "<: TransformPropBeh & { compute: M2 }              \n  TransformPropReq"
 & "uest <: PropRequest & { value: M3 }                    \n  M1 = Self (X"
 & " <: TransformPropAsyncBeh) (Real) => Matrix4                    \n  M2 "
 & "= Self (X <: TransformPropDepBeh) (Real) => Matrix4                    "
 & "  \n  M3 = Self (X <: TransformPropRequest) (Matrix4,Real) => Matrix4\n"
 & "  Num = Real = Int\n";

CONST E35 =
   "  KeyCB_New(invoke: M): KeyCB\nWHERE\n  KeyCB <: ProxiedObj & { invoke:"
 & " M }\n  M = Self (X <: KeyCB) (KeyRec) => Ok\n  KeyRec = { change: Text"
 & ", wentDown: Bool, modifiers: [Modifier] }\n  Modifier = Text (one of \""
 & "Left\", \"Middle\", \"Right\",\n                   \"Shift\", \"Lock\","
 & " \"Control\", \"Option\")\n";

CONST E36 =
   "TYPE ProxiedObj <: { extend: Self(X) All(Y<:{}) (Y) => X & Y }\n       "
 & "Objects of this type also contain a field \"raw\", \n       which is fo"
 & "r internal use only.\n";

CONST E37 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:46:36 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 17:28:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "BoxGOWrap for BoxGO;\n\nlet TProto = clone (SurfaceGO_TProto, {});\n\ne"
 & "nd module;\n";

CONST E38 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:45:33 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 09:44:28 PDT 1994 by najork                   *)\n\n\nmodule "
 & "VectorLightGOWrap for VectorLightGO;\n\nlet TProto = clone (LightGO_TPr"
 & "oto, {});\n\nend module;\n";

CONST E39 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Thu Jul 21 "
 & "13:49:22 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri May 27 20:32:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "MarkerTypePropWrap for MarkerTypeProp;\n\n\nlet NameProto = clone (Prop"
 & "_NameProto, {\n  bind => meth (self, pv) MarkerTypeProp_NameBind (self,"
 & " pv) end\n});\n\n\nlet ValProto = clone (Prop_ValProto, {\n  getBeh => "
 & "meth (self) MarkerTypeProp_ValGetBeh (self) end,\n  setBeh => meth (sel"
 & "f, beh) MarkerTypeProp_ValSetBeh (self, beh) end,\n  get    => meth (se"
 & "lf) MarkerTypeProp_ValGet (self) end,\n  value  => meth (self, time) Ma"
 & "rkerTypeProp_ValValue (self, time) end\n});\n\n\nlet BehProto = clone ("
 & "Prop_BehProto, {});\n  \n\nlet ConstBehProto = clone (BehProto, {\n  se"
 & "t => meth (self, k) MarkerTypeProp_ConstBehSet (self, k) end\n});\n\n\n"
 & "let SyncBehProto = clone (BehProto, {\n  addRequest => \n    meth (self"
 & ", req) \n      MarkerTypeProp_SyncBehAddRequest (self, req) \n    end,\n"
 & "  change =>\n    meth (self, k, start) \n      MarkerTypeProp_SyncBehCh"
 & "ange (self, k, start) \n    end\n});\n\n\nlet AsyncBehProto = clone (Be"
 & "hProto, {\n  compute => ok,\n});\n\n\nlet DepBehProto = clone (BehProto"
 & ", {\n  compute => ok,\n});\n\n\nlet RequestProto = clone (Prop_RequestP"
 & "roto, {\n  value => ok,\n});\n\n\nend module;\n";

CONST E40 =
   "  CylinderGO_New(p1 p2: PointVal, rad: RealVal): CylinderGO           \n"
 & "  CylinderGO_NewWithPrec(p1 p2: PointVal, rad: RealVal, prec: Int): Cyl"
 & "inderGO\n  CylinderGO_Point1: PointPropName                            "
 & "         \n  CylinderGO_Point2: PointPropName                          "
 & "           \n  CylinderGO_Radius: RealPropName                         "
 & "             \n  CylinderGO_SetPoint1(o: GO, p: PointVal): Ok          "
 & "              \n  CylinderGO_SetPoint2(o: GO, p: PointVal): Ok         "
 & "               \n  CylinderGO_SetRadius(o: GO, r: RealVal): Ok         "
 & "                \nWHERE                                                "
 & "                  \n  CylinderGO <: SurfaceGO                          "
 & "                     \n  PointVal = PointPropVal + Point3              "
 & "                       \n  RealVal = RealPropVal + Real + Int\n";

CONST E41 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Tue Sep 27 "
 & "14:14:47 PDT 1994 by najork                   *)\n(*       Created on T"
 & "ue May 31 08:55:26 PDT 1994 by najork                   *)\n\n\nmodule "
 & "GroupGOWrap for GroupGO;\n\nlet TProto = clone (GO_TProto, {\n  add    "
 & " => meth (self, go) GroupGO_Add (self, go)    end,\n  remove  => meth ("
 & "self, go) GroupGO_Remove (self, go) end,\n  flush   => meth (self)     "
 & "GroupGO_Flush (self)      end,\n  content => meth (self)     GroupGO_Co"
 & "ntent (self)    end\n});\n\nend module;\n";

CONST E42 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Thu Jul 21 "
 & "10:10:23 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri May 27 20:29:34 PDT 1994 by najork                   *)\n\n\nmodule "
 & "PropWrap for Prop;\n\nlet TProto    = clone (ProxiedObj_TProto, {});\nl"
 & "et NameProto = clone (ProxiedObj_TProto, {});\nlet ValProto  = clone (P"
 & "roxiedObj_TProto, {});\nlet BehProto  = clone (ProxiedObj_TProto, {});\n"
 & "\nlet RequestProto = clone (ProxiedObj_TProto, {\n  start => meth (self"
 & ") Prop_RequestStart (self) end,\n  dur   => meth (self) Prop_RequestDur"
 & "   (self) end\n});\n\nend module;\n";

CONST E43 =
   "  LineGO_New(p1 p2: PointVal): LineGO       \n  LineGO_Color: ColorProp"
 & "Name               \n  LineGO_Width: RealPropName                \n  Li"
 & "neGO_Type: LineTypePropName             \n  LineGO_Point1: PointPropNam"
 & "e              \n  LineGO_Point2: PointPropName              \n  LineGO"
 & "_SetColor(o: GO, c: ColorVal): Ok   \n  LineGO_SetWidth(o: GO, r: RealV"
 & "al): Ok    \n  LineGO_SetType(o: GO, t: LineType): Ok    \n  LineGO_Set"
 & "Point1(o: GO, p: PointVal): Ok  \n  LineGO_SetPoint2(o: GO, p: PointVal"
 & "): Ok  \nWHERE                                       \n  LineGO <: GO  "
 & "                             \n  PointVal = PointPropVal + Point3      "
 & "    \n  RealVal = RealPropVal + Real + Int        \n  ColorVal = ColorP"
 & "ropVal + Color + Text    \n  LineTypeVal = LineTypePropVal + LineType \n"
;

CONST E44 =
   "  X`PEX`Base_New(title: Text, x y w h: Int): X`PEX`Base ! GraphicsBase_"
 & "Failure\n  X`PEX`Base_NewStd(): X`PEX`Base ! GraphicsBase_Failure      "
 & "        \nWHERE                                                        "
 & "        \n  X`PEX`Base <: GraphicsBase & { changeTitle: (Text) => Ok,  "
 & "         \n                                 awaitDelete: () => Ok, \n  "
 & "                               destroy: () => Ok }\n";

CONST E45 =
   "  OrthoCameraGO_New(from to up: PointVal, height: RealVal): OrthoCamera"
 & "GO \n  OrthoCameraGO_Height: RealPropName\n  OrthoCameraGO_SetHeight(go"
 & ": GO, height: RealVal): Ok                \nWHERE                      "
 & "                                            \n  OrthoCameraGO <: Camera"
 & "GO                                             \n  PointVal = PointProp"
 & "Val + Point3                                     \n  RealVal = RealProp"
 & "Val + Real + Int                                   \n";

CONST E46 =
   "  ColorProp_NewConst(r: Col): ColorPropVal                       \n  Co"
 & "lorProp_NewSync(ah: AnimHandle, r: Col): ColorPropVal        \n  ColorP"
 & "rop_NewAsync(beh: ColorPropAsyncBeh): ColorPropVal              \n  Col"
 & "orProp_NewDep(beh: ColorPropDepBeh): ColorPropVal                  \n  "
 & "ColorProp_NewConstBeh(r: Col): ColorPropConstBeh               \n  Colo"
 & "rProp_NewSyncBeh(ah: AnimHandle, r: Col): ColorPropSyncBeh \n  ColorPro"
 & "p_NewAsyncBeh(compute: M1):ColorPropAsyncBeh                  \n  Color"
 & "Prop_NewDepBeh(compute: M2):ColorPropDepBeh                      \n  Co"
 & "lorProp_NewRequest(start dur: Num, value: M3): ColorPropRequest    \nWH"
 & "ERE                                                                   \n"
 & "  ColorPropName <: PropName & { bind: (v: ColorPropVal) => Prop }      "
 & "    \n  ColorPropVal <: PropVal & { getBeh: () => ColorPropBeh,        "
 & "        \n                              setBeh: (ColorPropBeh) => Ok,  "
 & "           \n                              get: () => Color,           "
 & "              \n                              value: (Num) => Color }  "
 & "                 \n  ColorPropBeh <: PropBeh                           "
 & "                     \n  ColorPropConstBeh <: ColorPropBeh & { set: (Co"
 & "l) => Ok }        \n  ColorPropSyncBeh <: ColorPropBeh &               "
 & "                      \n     { addRequest: (ColorPropRequest) => Ok ! P"
 & "rop_BadInterval,         \n       rgbLinChangeTo: (Col,Num,Num) => Ok !"
 & " Prop_BadInterval }\n  ColorPropAsyncBeh <: ColorPropBeh & { compute: M"
 & "1 }                    \n  ColorPropDepBeh <: ColorPropBeh & { compute:"
 & " M2 }                      \n  ColorPropRequest <: PropRequest & { valu"
 & "e: M3 }                        \n  M1 = Self (X <: ColorPropAsyncBeh) ("
 & "Real) => Color                    \n  M2 = Self (X <: ColorPropDepBeh) "
 & "(Real) => Color                      \n  M3 = Self (X <: ColorPropReque"
 & "st) (Color,Real) => Color               \n  Col = Color + Text         "
 & "                                    \n  Num = Real + Int\n";

CONST E47 =
   "  PositionCB_New(invoke: M): PositionCB\nWHERE\n  PositionCB <: Proxied"
 & "Obj & { invoke: M }\n  M = Self (X <: PositionCB) (PositionRec) => Ok\n"
 & "  PositionRec = { pos: Point2, modifiers: [Modifier] }\n  Point2 = [2*I"
 & "nt]\n  Modifier = Text (one of \"Left\", \"Middle\", \"Right\",\n      "
 & "             \"Shift\", \"Lock\", \"Control\", \"Option\")\n\n\n";

CONST E48 =
   "  Anim3D_lock: Mutex \n  Anim3D_changeClock(c: Clock): Ok\nWHERE\n  Clo"
 & "ck = () -> Real\n";

CONST E49 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:47:37 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 21:54:30 PDT 1994 by najork                   *)\n\n\nmodule "
 & "QuadMeshGOWrap for QuadMeshGO;\n\nlet TProto = clone (SurfaceGO_TProto,"
 & " {\n  addFacetColors =>\n    meth (self, cols) QuadMeshGO_AddFacetColor"
 & "s (self, cols) end,\n  setColorOfFacet =>\n    meth (self, i, j, col) Q"
 & "uadMeshGO_SetColorOfFacet (self, i, j, col) end\n});\n\nend module;\n";

CONST E50 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:46:24 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 17:29:25 PDT 1994 by najork                   *)\n\n\nmodule "
 & "PolygonGOWrap for PolygonGO;\n\nlet TProto = clone (SurfaceGO_TProto, {"
 & "});\n\nend module;\n";

CONST E51 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Mon Oct  9 "
 & "13:29:28 PDT 1995 by najork                   *)\n(*       Created on T"
 & "ue May 31 11:43:38 PDT 1994 by najork                   *)\n\n\nmodule "
 & "Win`OpenGL`BaseWrap for Win`OpenGL`Base;\n\nlet TProto = clone (Graphic"
 & "sBase_TProto, {\n  changeTitle => \n    meth (self, title) Win`OpenGL`B"
 & "ase_ChangeTitle (self, title) end,\n  awaitDelete => meth (self) Win`Op"
 & "enGL`Base_AwaitDelete (self) end,\n  destroy     => meth (self) Win`Ope"
 & "nGL`Base_Destroy (self) end\n});\n\nend module;\n";

CONST E52 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:45:24 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 09:44:12 PDT 1994 by najork                   *)\n\n\nmodule "
 & "AmbientLightGOWrap for AmbientLightGO;\n\nlet TProto = clone (LightGO_T"
 & "Proto, {});\n\nend module;\n";

CONST E53 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Thu Jul 21 "
 & "13:48:41 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri May 27 20:32:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "LineTypePropWrap for LineTypeProp;\n\n\nlet NameProto = clone (Prop_Nam"
 & "eProto, {\n  bind => meth (self, pv) LineTypeProp_NameBind (self, pv) e"
 & "nd\n});\n\n\nlet ValProto = clone (Prop_ValProto, {\n  getBeh => meth ("
 & "self) LineTypeProp_ValGetBeh (self) end,\n  setBeh => meth (self, beh) "
 & "LineTypeProp_ValSetBeh (self, beh) end,\n  get    => meth (self) LineTy"
 & "peProp_ValGet (self) end,\n  value  => meth (self, time) LineTypeProp_V"
 & "alValue (self, time) end\n});\n\n\nlet BehProto = clone (Prop_BehProto,"
 & " {});\n  \n\nlet ConstBehProto = clone (BehProto, {\n  set => meth (sel"
 & "f, k) LineTypeProp_ConstBehSet (self, k) end\n});\n\n\nlet SyncBehProto"
 & " = clone (BehProto, {\n  addRequest => \n    meth (self, req) \n      L"
 & "ineTypeProp_SyncBehAddRequest (self, req) \n    end,\n  change =>\n    "
 & "meth (self, k, start) \n      LineTypeProp_SyncBehChange (self, k, star"
 & "t) \n    end\n});\n\n\nlet AsyncBehProto = clone (BehProto, {\n  comput"
 & "e => ok,\n});\n\n\nlet DepBehProto = clone (BehProto, {\n  compute => o"
 & "k,\n});\n\n\nlet RequestProto = clone (Prop_RequestProto, {\n  value =>"
 & " ok,\n});\n\n\nend module;\n";

CONST E54 =
   "  DiskGO_New(center normal: PointVal, rad: RealVal): DiskGO           \n"
 & "  DiskGO_NewWithPrec(center normal: PointVal, rad: RealVal, prec: Int):"
 & " DiskGO\n  DiskGO_Center: PointPropName                                "
 & "         \n  DiskGO_Normal: PointPropName                              "
 & "           \n  DiskGO_Radius: RealPropName                             "
 & "             \n  DiskGO_SetCenter(o: GO, p: PointVal): Ok              "
 & "              \n  DiskGO_SetNormal(o: GO, p: PointVal3): Ok            "
 & "               \n  DiskGO_SetRadius(o: GO, r: RealVal): Ok             "
 & "                \nWHERE                                                "
 & "                  \n  DiskGO <: SurfaceGO                              "
 & "                     \n  PointVal = PointPropVal + Point3              "
 & "                       \n  RealVal = RealPropVal + Real + Int\n";

CONST E55 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Fri Jul 22 "
 & "18:04:12 PDT 1994 by najork                   *)\n(*       Created on M"
 & "on May 30 20:03:50 PDT 1994 by najork                   *)\n\n\nmodule "
 & "GOWrap for GO;\n\nlet TProto = clone (ProxiedObj_TProto, {\n  setProp  "
 & " => meth (self, pn, pv) GO_SetProp (self, pn.bind (pv)) end,\n  unsetPr"
 & "op => meth (self, pn)     GO_UnsetProp (self, pn)         end,\n  getPr"
 & "op   => meth (self, pn)     GO_GetProp (self, pn)           end,\n\n  s"
 & "etName  => meth (self, name) GO_SetName (self, name)  end,\n  getName  "
 & "=> meth (self)       GO_GetName (self)        end,\n  findName => meth "
 & "(self, name) GO_FindName (self, name) end,\n\n  pushMouseCB   => meth ("
 & "self, cb) GO_PushMouseCB   (self, cb) end,\n  popMouseCB    => meth (se"
 & "lf)     GO_PopMouseCB    (self)     end,\n  removeMouseCB => meth (self"
 & ", cb) GO_RemoveMouseCB (self, cb) end,\n  invokeMouseCB => meth (self, "
 & "mr) GO_InvokeMouseCB (self, mr) end,\n\n  pushPositionCB   => meth (sel"
 & "f, cb) GO_PushPositionCB   (self, cb) end,\n  popPositionCB    => meth "
 & "(self)     GO_PopPositionCB    (self)     end,\n  removePositionCB => m"
 & "eth (self, cb) GO_RemovePositionCB (self, cb) end,\n  invokePositionCB "
 & "=> meth (self, pr) GO_InvokePositionCB (self, pr) end,\n\n  pushKeyCB  "
 & " => meth (self, cb) GO_PushKeyCB   (self, cb) end,\n  popKeyCB    => me"
 & "th (self)     GO_PopKeyCB    (self)     end,\n  removeKeyCB => meth (se"
 & "lf, cb) GO_RemoveKeyCB (self, cb) end,\n  invokeKeyCB => meth (self, kr"
 & ") GO_InvokeKeyCB (self, kr) end,\n});\n\nend module;\n";

CONST E56 =
   "  MarkerGO_New(point: PointVal): MarkerGO        \n  MarkerGO_Center: P"
 & "ointPropName                  \n  MarkerGO_Color: ColorPropName        "
 & "           \n  MarkerGO_Scale: RealPropName                    \n  Mark"
 & "erGO_Type: MarkerTypePropName               \n  MarkerGO_SetCenter(o: G"
 & "O, p: PointVal): Ok     \n  MarkerGO_SetColor(o: GO, c: ColorVal): Ok  "
 & "    \n  MarkerGO_SetScale(o: GO, r: RealVal): Ok       \n  MarkerGO_Set"
 & "Type(o: GO, t: MarkerTypeVal): Ok  \nWHERE                             "
 & "                \n  MarkerGO <: GO                                   \n"
 & "  PointVal = PointPropVal + Point3                \n  RealVal = RealPro"
 & "pVal + Real + Int\n  ColorVal = ColorPropVal + Color + Text          \n"
 & "  MarkerTypeVal = MarkerTypePropVal + MarkerType       \n";

CONST E57 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:43:30 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri May 27 20:32:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "AnimHandleWrap for AnimHandle;\n\nlet TProto = clone (ProxiedObj_TProto"
 & ", {\n  animate => meth (self) AnimHandle_Animate (self) end\n});\n\nend"
 & " module;\n";

CONST E58 =
   "GraphicsBase_Failure: Exception\nTYPE GraphicsBase <: ProxiedObj \n";

CONST E59 =
   "  PerspCameraGO_New(from to up: PointVal, fovy: RealVal): PerspCameraGO"
 & "\n  PerspCameraGO_Fovy: RealPropName\n  PerspCameraGO_SetFovy(go: GO, f"
 & "ovy: RealVal): Ok                    \nWHERE                           "
 & "                                       \n  PerspCameraGO <: CameraGO   "
 & "                                          \n  PointVal = PointPropVal +"
 & " Point3                                     \n  RealVal = RealPropVal +"
 & " Real + Int                                   \n";

CONST E60 =
   "  PointProp_NewConst(r: Point3): PointPropVal                         \n"
 & "  PointProp_NewSync(ah: AnimHandle, r: Point3): PointPropVal          \n"
 & "  PointProp_NewAsync(beh: PointPropAsyncBeh): PointPropVal            \n"
 & "  PointProp_NewDep(beh: PointPropDepBeh): PointPropVal                \n"
 & "  PointProp_NewConstBeh(r: Point3): PointPropConstBeh                 \n"
 & "  PointProp_NewSyncBeh(ah: AnimHandle, r: Point3): PointPropSyncBeh   \n"
 & "  PointProp_NewAsyncBeh(compute: M1):PointPropAsyncBeh                \n"
 & "  PointProp_NewDepBeh(compute: M2):PointPropDepBeh                    \n"
 & "  PointProp_NewRequest(start dur: Num, value: M3): PointPropRequest  \n"
 & "WHERE                                                                 \n"
 & "  PointPropName <: PropName & { bind: (v: PointPropVal) => Prop }      "
 & "  \n  PointPropVal <: PropVal & { getBeh: () => PointPropBeh,          "
 & "    \n                              setBeh: (PointPropBeh) => Ok,      "
 & "     \n                              get: () => Point3,                "
 & "      \n                              value: (Num) => Point3 }         "
 & "       \n  PointPropBeh <: PropBeh                                     "
 & "         \n  PointPropConstBeh <: PointPropBeh & { set: (Point3) => Ok "
 & "}          \n  PointPropSyncBeh <: PointPropBeh &                      "
 & "             \n           { addRequest: (PointPropRequest) => Ok ! Prop"
 & "_BadInterval, \n             linMoveTo: (Point3,Num,Num) => Ok ! Prop_B"
 & "adInterval,  \n             linMoveBy: (Point3,Num,Num) => Ok ! Prop_Ba"
 & "dInterval } \n  PointPropAsyncBeh <: PointPropBeh & { compute: M1 }    "
 & "              \n  PointPropDepBeh <: PointPropBeh & { compute: M2 }    "
 & "                \n  PointPropRequest <: PropRequest & { value: M3 }    "
 & "                  \n  M1 = Self (X <: PointPropAsyncBeh) (Real) => Poin"
 & "t3                 \n  M2 = Self (X <: PointPropDepBeh) (Real) => Point"
 & "3                   \n  M3 = Self (X <: PointPropRequest) (Point3,Real)"
 & " => Point3           \n  Num = Real + Int\n";

CONST E61 =
   "  MouseCB_New(invoke: M): MouseCB                                 \nWHE"
 & "RE                                                              \n  Mou"
 & "seCB <: ProxiedObj & { invoke: M }                             \n  M = "
 & "Self (X <: MouseCB) (MouseRec) => Ok                         \n  MouseR"
 & "ec = { pos: Point2, change: Button,                        \n          "
 & "     modifiers: [Modifier], clickType: ClickType }       \n  Point2 = ["
 & "2*Int]                                                 \n  Button = Tex"
 & "t     (one of \"Left\", \"Middle\", \"Right\")       \n  Modifier = Tex"
 & "t   (a Button or one of \"Shift\", \"Lock\", \"Control\", \"Option\")\n"
 & "  ClickType = Text  (one of \"FirstDown\", \"OtherDown\", \"OtherUp\", "
 & "\"LastUp\") \n";

CONST E62 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:47:25 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 17:29:11 PDT 1994 by najork                   *)\n\n\nmodule "
 & "TorusGOWrap for TorusGO;\n\nlet TProto = clone (SurfaceGO_TProto, {});\n"
 & "\nend module;\n";

CONST E63 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:46:16 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 16:36:36 PDT 1994 by najork                   *)\n\n\nmodule "
 & "SurfaceGOWrap for SurfaceGO;\n\nlet TProto = clone (GO_TProto, {});\n\n"
 & "end module;\n";

CONST E64 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Aug  2 "
 & "16:31:54 PDT 1995 by najork                   *)\n(*       Created on T"
 & "ue May 31 11:43:38 PDT 1994 by najork                   *)\n\n\nmodule "
 & "X`OpenGL`BaseWrap for X`OpenGL`Base;\n\nlet TProto = clone (GraphicsBas"
 & "e_TProto, {\n  changeTitle => \n    meth (self, title) X`OpenGL`Base_Ch"
 & "angeTitle (self, title) end,\n  awaitDelete => meth (self) X`OpenGL`Bas"
 & "e_AwaitDelete (self) end,\n  destroy     => meth (self) X`OpenGL`Base_D"
 & "estroy (self) end\n});\n\nend module;\n";

CONST E65 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:45:09 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 09:44:02 PDT 1994 by najork                   *)\n\n\nmodule "
 & "LightGOWrap for LightGO;\n\nlet TProto = clone (GO_TProto, {});\n\nend "
 & "module;\n";

CONST E66 =
   "  ConeGO_New(base tip: PointVal, rad: RealVal): ConeGO                \n"
 & "  ConeGO_NewWithPrec(base tip: PointVal, rad: RealVal, prec: Int): Cone"
 & "GO\n  ConeGO_Base: PointPropName                                       "
 & "    \n  ConeGO_Tip: PointPropName                                      "
 & "      \n  ConeGO_Radius: RealPropName                                  "
 & "        \n  ConeGO_SetBase(o: GO, p: PointVal): Ok                     "
 & "         \n  ConeGO_SetTip(o: GO, p: PointVal): Ok                     "
 & "          \n  ConeGO_SetRadius(o: GO, r: RealVal): Ok                  "
 & "           \nWHERE                                                     "
 & "             \n  ConeGO <: SurfaceGO                                   "
 & "                \n  PointVal = PointPropVal + Point3                   "
 & "                  \n  RealVal = RealPropVal + Real + Int\n";

CONST E67 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Thu Jul 21 "
 & "13:47:49 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri May 27 20:32:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "TransformPropWrap for TransformProp;\n\n\nlet NameProto = clone (Prop_N"
 & "ameProto, {\n  bind => meth (self, pv) TransformProp_NameBind (self, pv"
 & ") end\n});\n\n\nlet ValProto = clone (Prop_ValProto, {\n  getBeh => met"
 & "h (self) TransformProp_ValGetBeh (self) end,\n  setBeh => meth (self, b"
 & "eh) TransformProp_ValSetBeh (self, beh) end,\n  get    => meth (self) T"
 & "ransformProp_ValGet (self) end,\n  value  => meth (self, time) Transfor"
 & "mProp_ValValue (self, time) end\n});\n\n\nlet BehProto = clone (Prop_Be"
 & "hProto, {});\n  \n\nlet ConstBehProto = clone (BehProto, {\n  set => \n"
 & "    meth (self, m) TransformProp_ConstBehSet (self, m) end,\n  compose "
 & "=> \n    meth (self, m) TransformProp_ConstBehCompose (self, m) end,\n "
 & " reset => \n    meth (self) TransformProp_ConstBehReset (self) end,\n  "
 & "translate => \n    meth (self, x, y, z) TransformProp_ConstBehTranslate"
 & " (self, x, y, z) end,\n  scale => \n    meth (self, x, y, z) TransformP"
 & "rop_ConstBehScale (self, x, y, z) end,\n  rotateX => \n    meth (self, "
 & "a) TransformProp_ConstBehRotateX (self, a) end,\n  rotateY => \n    met"
 & "h (self, a) TransformProp_ConstBehRotateY (self, a) end,\n  rotateZ => "
 & "\n    meth (self, a) TransformProp_ConstBehRotateZ (self, a) end\n});\n"
 & "\n\nlet SyncBehProto = clone (BehProto, {\n  addRequest => \n    meth ("
 & "self, req) \n      TransformProp_SyncBehAddRequest (self, req) \n    en"
 & "d,\n  reset =>\n    meth (self, start) \n      TransformProp_SyncBehRes"
 & "et (self, start) \n    end,\n  changeTo =>\n    meth (self, m, start, d"
 & "ur) \n      TransformProp_SyncBehChangeTo (self, m, start, dur)\n    en";

CONST E67_0 =
   "d,\n  translate =>\n    meth (self, x, y, z, start, dur) \n      Transf"
 & "ormProp_SyncBehTranslate (self, x, y, z, start, dur) \n    end,\n  scal"
 & "e =>\n    meth (self, x, y, z, start, dur) \n      TransformProp_SyncBe"
 & "hScale (self, x, y, z, start, dur) \n    end,\n  rotateX =>\n    meth ("
 & "self, a, start, dur) \n      TransformProp_SyncBehRotateX (self, a, sta"
 & "rt, dur) \n    end,\n  rotateY =>\n    meth (self, a, start, dur) \n   "
 & "   TransformProp_SyncBehRotateY (self, a, start, dur) \n    end,\n  rot"
 & "ateZ =>\n    meth (self, a, start, dur) \n      TransformProp_SyncBehRo"
 & "tateZ (self, a, start, dur) \n    end\n});\n\n\nlet AsyncBehProto = clo"
 & "ne (BehProto, {\n  compute => ok,\n});\n\n\nlet DepBehProto = clone (Be"
 & "hProto, {\n  compute => ok,\n});\n\n\nlet RequestProto = clone (Prop_Re"
 & "questProto, {\n  value => ok,\n});\n\n\nend module;\n";

CONST E68 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Fri Jul 22 "
 & "18:06:21 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri Jul 22 18:05:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "KeyCBWrap for KeyCB;\n\nlet TProto = clone (ProxiedObj_TProto, {\n  inv"
 & "oke => meth (self, kr) KeyCB_Invoke (self, kr) end\n});\n\nend module;\n"
;

CONST E69 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:43:23 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jul 20 09:39:54 PDT 1994 by najork                   *)\n\n\nmodule "
 & "ProxiedObjWrap for ProxiedObj;\n\nlet TProto = {\n  raw    => ok,\n  ex"
 & "tend => meth (self, o) ProxiedObj_Extend (self, o) end\n};\n\nend modul"
 & "e;\n";

CONST E70 =
   "  SpotLightGO_New(c: ColorVal, orig dir: PointVal, \n                  "
 & "conc spread att0 att1: Real): SpotLightGO \n  SpotLightGO_Origin: Point"
 & "PropName                                    \n  SpotLightGO_SetOrigin(g"
 & "o: GO, orig: PointVal): Ok                    \n  SpotLightGO_Direction"
 & ": PointPropName                                 \n  SpotLightGO_SetDire"
 & "ction(go: GO, dir: PointVal): Ok                  \n  SpotLightGO_Conce"
 & "ntration: RealPropName                              \n  SpotLightGO_Set"
 & "Concentration(go: GO, conc: RealVal): Ok              \n  SpotLightGO_S"
 & "preadAngle: RealPropName                                \n  SpotLightGO"
 & "_SetSpreadAngle(go: GO, spread: RealVal): Ok              \n  SpotLight"
 & "GO_Attenuation0: RealPropName                               \n  SpotLig"
 & "htGO_SetAttenuation0(go: GO, att: RealVal): Ok                \n  SpotL"
 & "ightGO_Attenuation1: RealPropName                               \n  Spo"
 & "tLightGO_SetAttenuation1(go: GO, att: RealVal): Ok                \nWHE"
 & "RE                                                                  \n "
 & " SpotLightGO <: LightGO                                                "
 & "\n  PointVal = PointPropVal + Point3                                   "
 & "  \n  RealVal = RealPropVal + Real + Int                               "
 & "    \n  ColorVal = ColorPropVal + Color + Text                         "
 & "      \n";

CONST E71 =
   "  ShadingProp_NewConst(lt: Shading): ShadingPropVal                    "
 & " \n  ShadingProp_NewSync(ah: AnimHandle, lt: Shading): ShadingPropVal  "
 & "    \n  ShadingProp_NewAsync(beh: ShadingPropAsyncBeh): ShadingPropVal "
 & "       \n  ShadingProp_NewDep(beh: ShadingPropDepBeh): ShadingPropVal  "
 & "          \n  ShadingProp_NewConstBeh(lt: Shading): ShadingPropConstBeh"
 & "             \n  ShadingProp_NewSyncBeh(ah: AnimHandle, lt: Shading): S"
 & "hadingPropSyncBeh\n  ShadingProp_NewAsyncBeh(compute: M1):ShadingPropAs"
 & "yncBeh              \n  ShadingProp_NewDepBeh(compute: M2):ShadingPropD"
 & "epBeh                  \n  ShadingProp_NewRequest(start dur: Num, value"
 & ": M3): ShadingPropRequest\nWHERE                                       "
 & "                            \n  ShadingPropName <: PropName & { bind: ("
 & "v: ShadingPropVal) => Prop }\n  ShadingPropVal <: PropVal & { getBeh: ("
 & ") => ShadingPropBeh,            \n                                setBe"
 & "h: (ShadingPropBeh) => Ok,          \n                                g"
 & "et: () => Shading,                     \n                              "
 & "  value: (Num) => Shading }               \n  ShadingPropBeh <: PropBeh"
 & "                                              \n  ShadingPropConstBeh <"
 & ": ShadingPropBeh & { set: (Shading) => Ok }\n  ShadingPropSyncBeh <: Sh"
 & "adingPropBeh &                                 \n      { addRequest: (S"
 & "hadingPropRequest) => Ok ! Prop_BadInterval,      \n        change: (Sh"
 & "ading,Num) => Ok ! Prop_BadInterval }               \n  ShadingPropAsyn"
 & "cBeh <: ShadingPropBeh & { compute : M1 }               \n  ShadingProp"
 & "DepBeh <: ShadingPropBeh & { compute: M2 }                  \n  Shading"
 & "PropRequest <: PropRequest & { value: M3 }                      \n  M1 "
 & "= Self (X <: ShadingPropAsyncBeh) (Real) => Shading                \n  "
 & "M2 = Self (X <: ShadingPropDepBeh) (Real) => Shading                  \n"
 & "  M3 = Self (X <: ShadingPropRequest) (Shading,Real) => Shading        "
 & " \n  Shading = Text  (\"Flat\" or \"Gouraud\")                         "
 & "    \n  Num = Real + Int\n";

CONST E72 =
   "  CameraGO_From: PointPropName\n  CameraGO_To: PointPropName\n  CameraG"
 & "O_Up: PointPropName\n  CameraGO_Aspect: PointPropName\n  CameraGO_SetFr"
 & "om(go: GO, PointVal): Ok\n  CameraGO_SetTo(go: GO, PointVal): Ok\n  Cam"
 & "eraGO_SetUp(go: GO, PointVal): Ok\n  CameraGO_SetAspect(go: GO, RealVal"
 & "): Ok\nTYPE                                   \n  CameraGO <: GO       "
 & "                 \n  PointVal = PointPropVal + Point3\n  RealVal = Real"
 & "PropVal + Real + Int\n";

CONST E73 =
   "  RealProp_NewConst(r: Num): RealPropVal                            \n "
 & " RealProp_NewSync(ah: AnimHandle, r: Num): RealPropVal             \n  "
 & "RealProp_NewAsync(beh: RealPropAsyncBeh): RealPropVal              \n  "
 & "RealProp_NewDep(beh: RealPropDepBeh): RealPropVal                  \n  "
 & "RealProp_NewConstBeh(r: Num): RealPropConstBeh                    \n  R"
 & "ealProp_NewSyncBeh(ah: AnimHandle, r: Num): RealPropSyncBeh      \n  Re"
 & "alProp_NewAsyncBeh(compute: M1):RealPropAsyncBeh                 \n  Re"
 & "alProp_NewDepBeh(compute: M2):RealPropDepBeh                     \n  Re"
 & "alProp_NewRequest(start dur: Num, value: M3): RealPropRequest   \nWHERE"
 & "                                                                \n  Rea"
 & "lPropName <: PropName & { bind: (v: RealPropVal) => Prop }         \n  "
 & "RealPropVal <: PropVal & { getBeh: () => RealPropBeh,               \n "
 & "                            setBeh: (RealPropBeh) => Ok,            \n "
 & "                            get: () => Real,                        \n "
 & "                            value: (Num) => Real }                  \n "
 & " RealPropBeh <: PropBeh                                              \n"
 & "  RealPropConstBeh <: RealPropBeh & { set: (Num) => Ok }             \n"
 & "  RealPropSyncBeh <: RealPropBeh &                                    \n"
 & "           { addRequest: (RealPropRequest) => Ok ! Prop_BadInterval, \n"
 & "             linChangeTo: (Num,Num,Num) => Ok ! Prop_BadInterval, \n   "
 & "          linChangeBy: (Num,Num,Num) => Ok ! Prop_BadInterval }\n  Real"
 & "PropAsyncBeh <: RealPropBeh & { compute: M1 }                   \n  Rea"
 & "lPropDepBeh <: RealPropBeh & { compute: M2 }                     \n  Re"
 & "alPropRequest <: PropRequest & { value: M3 }                      \n  M"
 & "1 = Self (X <: RealPropAsyncBeh) (Real) => Real                   \n  M"
 & "2 = Self (X <: RealPropDepBeh) (Real) => Real                     \n  M"
 & "3 = Self (X <: RealPropRequest) (Real,Real) => Real               \n  N"
 & "um = Real + Int\n";

CONST E74 =
   "  time_now(): Real\n";

CONST E75 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:47:09 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 17:29:00 PDT 1994 by najork                   *)\n\n\nmodule "
 & "CylinderGOWrap for CylinderGO;\n\nlet TProto = clone (SurfaceGO_TProto,"
 & " {});\n\nend module;\n";

CONST E76 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:46:04 PDT 1994 by najork                   *)\n(*       Created on W"
 & "ed Jun  1 09:45:01 PDT 1994 by najork                   *)\n\n\nmodule "
 & "LineGOWrap for LineGO;\n\nlet TProto = clone (GO_TProto, {});\n\nend mo"
 & "dule;\n";

CONST E77 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:43:54 PDT 1994 by najork                   *)\n(*       Created on T"
 & "ue May 31 11:43:38 PDT 1994 by najork                   *)\n\n\nmodule "
 & "X`PEX`BaseWrap for X`PEX`Base;\n\nlet TProto = clone (GraphicsBase_TPro"
 & "to, {\n  changeTitle => meth (self, title) X`PEX`Base_ChangeTitle (self"
 & ", title) end,\n  awaitDelete => meth (self)        X`PEX`Base_AwaitDele"
 & "te (self)        end,\n  destroy     => meth (self)        X`PEX`Base_D"
 & "estroy (self)            end\n});\n\nend module;\n";

CONST E78 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Wed Jul 20 "
 & "17:44:49 PDT 1994 by najork                   *)\n(*       Created on T"
 & "ue May 31 11:39:08 PDT 1994 by najork                   *)\n\n\nmodule "
 & "OrthoCameraGOWrap for OrthoCameraGO;\n\nlet TProto = clone (CameraGO_TP"
 & "roto, {});\n\nend module;\n";

CONST E79 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Thu Jul 21 "
 & "13:47:01 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri May 27 20:32:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "ColorPropWrap for ColorProp;\n\n\nlet NameProto = clone (Prop_NameProto"
 & ", {\n  bind => meth (self, pv) ColorProp_NameBind (self, pv) end\n});\n"
 & "\n\nlet ValProto = clone (Prop_ValProto, {\n  getBeh => meth (self) Col"
 & "orProp_ValGetBeh (self) end,\n  setBeh => meth (self, beh) ColorProp_Va"
 & "lSetBeh (self, beh) end,\n  get    => meth (self) ColorProp_ValGet (sel"
 & "f) end,\n  value  => meth (self, time) ColorProp_ValValue (self, time) "
 & "end\n});\n\n\nlet BehProto = clone (Prop_BehProto, {});\n  \n\nlet Cons"
 & "tBehProto = clone (BehProto, {\n  set => meth (self, c) ColorProp_Const"
 & "BehSet (self, c) end\n});\n\n\nlet SyncBehProto = clone (BehProto, {\n "
 & " addRequest => \n    meth (self, req) \n      ColorProp_SyncBehAddReque"
 & "st (self, req) \n    end,\n  rgbLinChangeTo =>\n    meth (self, c, star"
 & "t, dur) \n      ColorProp_SyncBehRgbLinChangeTo (self, c, start, dur) \n"
 & "    end\n});\n\n\nlet AsyncBehProto = clone (BehProto, {\n  compute => "
 & "ok,\n});\n\n\nlet DepBehProto = clone (BehProto, {\n  compute => ok,\n}"
 & ");\n\n\nlet RequestProto = clone (Prop_RequestProto, {\n  value => ok,\n"
 & "});\n\n\nend module;\n";

CONST E80 =
   "  SphereGO_New(p: PointVal, rad: RealVal): SphereGO                    "
 & "\n  SphereGO_NewWithPrec(p: PointVal, rad: RealVal, prec: Int): SphereG"
 & "O \n  SphereGO_Center: PointPropName                                   "
 & "    \n  SphereGO_Radius: RealPropName                                  "
 & "      \n  SphereGO_SetCenter(go: GO, center: PointVal): Ok             "
 & "       \n  SphereGO_SetRadius(go: GO, radius: RealVal): Ok             "
 & "        \nWHERE                                                        "
 & "          \n  SphereGO <: SurfaceGO                                    "
 & "             \n  PointVal = PointPropVal + Point3                      "
 & "               \n  RealVal = RealPropVal + Real + Int\n";

CONST E81 =
   "(* Copyright (C) 1994, Digital Equipment Corporation                   "
 & "      *)\n(* Digital Internal Use Only                                 "
 & "                *)\n(* All rights reserved.                            "
 & "                          *)\n(*                                       "
 & "                                    *)\n(* Last modified on Fri Jul 22 "
 & "18:06:55 PDT 1994 by najork                   *)\n(*       Created on F"
 & "ri Jul 22 18:05:05 PDT 1994 by najork                   *)\n\n\nmodule "
 & "PositionCBWrap for PositionCB;\n\nlet TProto = clone (ProxiedObj_TProto"
 & ", {\n  invoke => meth (self, pr) PositionCB_Invoke (self, pr) end\n});\n"
 & "\nend module;\n";

CONST E82 =
   "  PointLightGO_New(c: ColorVal, orig: PointVal, \n                   at"
 & "t0 att1: RealVal): PointLightGO\n  PointLightGO_Origin: PointPropName  "
 & "                                 \n  PointLightGO_SetOrigin(go: GO, ori"
 & "g: PointVal): Ok                   \n  PointLightGO_Attenuation0: RealP"
 & "ropName                              \n  PointLightGO_SetAttenuation0(g"
 & "o: GO, att: RealVal): Ok               \n  PointLightGO_Attenuation1: R"
 & "ealPropName                              \n  PointLightGO_SetAttenuatio"
 & "n1(go: GO, att: RealVal): Ok               \nWHERE                     "
 & "                                             \n  PointLightGO <: LightG"
 & "O                                               \n  PointVal = PointPro"
 & "pVal + Point3                                     \n  RealVal = RealPro"
 & "pVal + Real + Int                                   \n  ColorVal = Colo"
 & "rPropVal + Color + Text                               \n";

CONST E83 =
   "  RasterModeProp_NewConst(lt: RasterMode): RasterModePropVal   \n  Rast"
 & "erModeProp_NewSync(ah: AnimHandle, lt: RasterMode): RasterModePropVal\n"
 & "  RasterModeProp_NewAsync(beh: RasterModePropAsyncBeh): RasterModePropV"
 & "al\n  RasterModeProp_NewDep(beh: RasterModePropDepBeh): RasterModePropV"
 & "al\n  RasterModeProp_NewConstBeh(lt: RasterMode): RasterModePropConstBe"
 & "h\n  RasterModeProp_NewSyncBeh(ah: AnimHandle, \n                      "
 & "      lt: RasterMode): RasterModePropSyncBeh\n  RasterModeProp_NewAsync"
 & "Beh(compute: M1):RasterModePropAsyncBeh  \n  RasterModeProp_NewDepBeh(c"
 & "ompute: M2):RasterModePropDepBeh      \n  RasterModeProp_NewRequest(sta"
 & "rt dur: Num, value: M3): RasterModePropRequest\nWHERE                  "
 & "                                                 \n  RasterModePropName"
 & " <: PropName & \n      { bind: (v: RasterModePropVal) => Prop }        "
 & "   \n  RasterModePropVal <: PropVal & { getBeh: () => RasterModePropBeh"
 & ",\n                                   setBeh: (RasterModePropBeh) => Ok"
 & ",\n                                   get: () => RasterMode,         \n"
 & "                                   value: (Num) => RasterMode }   \n  R"
 & "asterModePropBeh <: PropBeh                                        \n  "
 & "RasterModePropConstBeh <: RasterModePropBeh & \n      { set: (RasterMod"
 & "e) => Ok }          \n  RasterModePropSyncBeh <: RasterModePropBeh &   "
 & "                  \n      { addRequest: (RasterModePropRequest) => Ok !"
 & " Prop_BadInterval,\n        change: (RasterMode,Num) => Ok ! Prop_BadIn"
 & "terval }         \n  RasterModePropAsyncBeh <: RasterModePropBeh & { co"
 & "mpute: M1 }    \n  RasterModePropDepBeh <: RasterModePropBeh & { comput"
 & "e: M2 }      \n  RasterModePropRequest <: PropRequest & { value: M3 }  "
 & "              \n  M1 = Self (X <: RasterModePropAsyncBeh) (Real) => Ras"
 & "terMode    \n  M2 = Self (X <: RasterModePropDepBeh) (Real) => RasterMo"
 & "de      \n  M3 = Self (X <: RasterModePropRequest) (RasterMode,Real) =>"
 & " RasterMode\n  RasterMode = Text  (one of \"Hollow\", \"Solid\", \"Empt"
 & "y\")       \n  Num = Real + Int\n";

CONST E84 =
   "  RootGO_New(cam: CameraGO, base: GraphicsBase): RootGO             \n "
 & " RootGO_NewStd(): RootGO | GraphicsBase_Failure\n  RootGO_NewStdWithBas"
 & "e(base: GraphicsBase): RootGO                 \n  RootGO_Background: Co"
 & "lorPropName                                   \n  RootGO_DepthcueSwitch"
 & ": BooleanPropName                             \n  RootGO_DepthcueColor:"
 & " ColorPropName                                \n  RootGO_DepthcueFrontP"
 & "lane: RealPropName                            \n  RootGO_DepthcueBackPl"
 & "ane: RealPropName                             \n  RootGO_DepthcueFrontS"
 & "cale: RealPropName                            \n  RootGO_DepthcueBackSc"
 & "ale: RealPropName                             \n  RootGO_SetBackground("
 & "go: GO, c: ColorVal): Ok                     \n  RootGO_SetDepthcueSwit"
 & "ch(go: GO, b: BooleanVal): Ok                  \n  RootGO_SetDepthcueCo"
 & "lor(go: GO, c: ColorVal): Ok                     \n  RootGO_SetDepthcue"
 & "FrontPlane(go: GO, r: RealVal): Ok                 \n  RootGO_SetDepthc"
 & "ueBackPlane(go: GO, r: RealVal): Ok                  \n  RootGO_SetDept"
 & "hcueFrontScale(go: GO, r: RealVal): Ok                 \n  RootGO_SetDe"
 & "pthcueBackScale(go: GO, r: RealVal): Ok                  \nWHERE       "
 & "                                                         \n  RootGO <: "
 & "GroupGO & { changeCamera: (CameraGO) => Ok, \n                        s"
 & "creenToWorld: (Point2, Real) => Point3 }\n  Point2 = [2*Int]\n  Boolean"
 & "Val = BooleanPropVal + Bool                                 \n  RealVal"
 & " = RealPropVal + Real + Int                                 \n  ColorVa"
 & "l = ColorPropVal + Color + Text                             \n";

CONST E85 =
   "  BooleanProp_NewConst(b: Bool): BooleanPropVal\n  BooleanProp_NewSync("
 & "ah: AnimHandle, b: Bool): BooleanPropVal\n  BooleanProp_NewAsync(beh: B"
 & "ooleanPropAsyncBeh): BooleanPropVal\n  BooleanProp_NewDep(beh: BooleanP"
 & "ropDepBeh): BooleanPropVal\n  BooleanProp_NewConstBeh(b: Bool): Boolean"
 & "PropConstBeh\n  BooleanProp_NewSyncBeh(ah: AnimHandle, b: Bool): Boolea"
 & "nPropSyncBeh\n  BooleanProp_NewAsyncBeh(compute: M1):BooleanPropAsyncBe"
 & "h\n  BooleanProp_NewDepBeh(compute: M2):BooleanPropDepBeh\n  BooleanPro"
 & "p_NewRequest(start dur: Num, value: M3): BooleanPropRequest\nWHERE\n  B"
 & "ooleanPropName <: PropName & { bind: (v: BooleanPropVal) => Prop }\n  B"
 & "ooleanPropVal <: PropVal & { getBeh: () => BooleanPropBeh,\n           "
 & "                     setBeh: (BooleanPropBeh) => Ok,\n                 "
 & "               get: () => Bool,\n                                value:"
 & " (Num) => Bool }\n  BooleanPropBeh <: PropBeh\n  BooleanPropConstBeh <:"
 & " BooleanPropBeh & { set: (Bool) => Ok }\n  BooleanPropSyncBeh <: Boolea"
 & "nPropBeh &\n           { addRequest: (BooleanPropRequest) => Ok ! Prop_"
 & "BadInterval,\n             change: (Bool,Num) => Ok ! Prop_BadInterval "
 & "}\n  BooleanPropAsyncBeh <: BooleanPropBeh & { compute: M1 }\n  Boolean"
 & "PropDepBeh <: BooleanPropBeh & { compute: M2 }\n  BooleanPropRequest <:"
 & " PropRequest & { value: M3 }\n  M1 = Self (X <: BooleanPropAsyncBeh) (R"
 & "eal) => Bool\n  M2 = Self (X <: BooleanPropDepBeh) (Real) => Bool\n  M3"
 & " = Self (X <: BooleanPropRequest) (Bool,Real) => Bool\n  Num = Real + I"
 & "nt\n";

BEGIN
END ObLib3DBundle.