?_ÿÿÿÿµ¡R÷l!èUA9Open Inventor 2.6 -Copyright © Template Graphics Software, Inc.BrowseButtons()Zmainÿÿ  INVENTOR.CNT /&;)z4ÿÿNãNÿÿÿÿ|CONTEXTvÏ:|CTXOMAP =:|FONTL::|KWBTREEéN:|KWDATAw=:|KWMAP´N:|Rose:|SYSTEM|TOPIC?|TTLBTREEG—:|bm0¥÷:|bm1P7;|bm10{?|bm11ª?|bm12j`@|bm13ÂA|bm14&›A|bm15CÍA|bm16 üA|bm17B+B|bm18ïNB|bm19dtB|bm2§;|bm20f”B|bm21µB|bm22¨ØB|bm23× C|bm2436C|bm25ddC|bm26¥iC|bm27{oC|bm28¤tC|bm29BzC|bm3¨Ñ;|bm30ýC|bm31F†C|bm32Ä‹C|bm33‘C|bm34:–C|bm35j›C|bm36>¡C|bm37=§C|bm38ÛD|bm39€tD|bm4 <|bm404E|bm41‹ÖE|bm42|žF|bm43ͬF|bm44h­G|bm45(óG|bm46ŒCH|bm47˜yH|bm48»%I|bm49ÍFJ|bm5³<|bm50E§J|bm51rK|bm52HL|bm53!M|bm54wM|bm55‰N|bm56%BN|bm57ÈON|bm58]PN|bm59úPN|bm6ߥ<|bm60©O|bm61g4P|bm62)ÂP|bm63õiQ|bm64“»Q|bm65QR|bm66æR|bm67}œR|bm7b@=|bm8~Ú=|bm9—p> 5:5:ÿÿÿÿ : ÿÿÿÿF1z –Ü F» About TGS1 w% €€ˆˆ€‚ÿAbout TGSD!F»# €B€€‚ÿThe Standard in Graphics ToolsfwH' €Í€€‚‚‚‚ÿTGS is a leading supplier of software products that facilitate the use of interactive 3D graphics on PC and UNIX systems. These products include those targeting professional developers, as well as Small Office/Home Office, designers, Webmasters and desktop publishers. TGS products support industry standards, including Java, ActiveX, OpenGL and VRML, which TGS helped to pioneer.In April 1995, TGS implemented the first-ever Internet 3D VRML browser for the PC, WebSpace Navigator, and gained the endorsement of over 17 major Internet software and hardware companies, including Netscape and Spyglass, to establish Open Inventor as the basis for VRML. TGS quickly delivered professional 3D C++ and ActiveX developer tools for 3D/VRML under the 3D-MasterSuite for Open Inventor family, gaining distribution agreements with Microsoft Corporation, Sun, HP and others.þË»F3 4€—€€‚‚‚€€€€‚ÿTGS application products enable the creation and use of 3D graphics, ranging from LiveWork 3D, a 3D art add-on for Microsoft Office; 3Space Publisher, a drag-and-drop graphics creation application for Webmasters and desktop publishers; to Amapi, a NURBS modeling application for designers.TGS Inc. sells its products worldwide through a direct sales force located in offices across North America and Europe. TGS Europe provides local and distribution support for Europe. Many of TGS's products are also available through popular Internet distributors. Customers can also download many of the TGS products directly from the TGS and TGS Europe web sites, at http://www.tgs.com and http://www.europe.tgs.com.Ç¡H & €C€€‚‚‚ÿTGS maintains development and customer support centers at its TGS world headquarters in San Diego, Calif., and TGS Europe headquarters in Bordeaux, France. Ó<Fà —#ü€yq· Í $€€€€‚€‚ÿJ€&€€€€‚€‚€€‚ÿP€V‚€€€€‚€‚‚€€‚ÿÿÿSalesContactsTGS, IncTemplate Graphics Software, Inc.5330 Carroll Canyon Road, Suite 201San Diego, CA 92121Tel: (800) 544-4847Tel: (858) 457-5359Fax: (858) 452-2547E-mail: info@tgs.comFor the most current contact information, check the TGS website at:WWW: http://www.tgs.comTGS Europe TGS Europe, S.A.18 Avenue Francois Sommer92167 Antony CedexParis, FranceTel: (33)-1-4237-66-66Fax: (33)-1-4237-27-15E-mail: europe@tgs.comFor the most current contact information, check the TGS Europe website at:WWW: http://www.europe.tgs.com$  " €€€ÿ8à < 1  „< k ÇHActions/  k % €€ˆˆ€‚ÿActions&< ‘ # €€€‚ÿ{2k I#b€d-Ž $€€”ãïK€‰‚ÿ€€”‚ÿÿÿSoActionAbstract base class for all actionsŒC‘ ˜ I#b€†-Ž $€€”ãHê\F€‰‚ÿ€$€”‚ÿÿÿSoBevelActionCreates a scene graph containing beveled shapesF ' I#b€Œ-Ž $€€”ã³DfL€‰‚ÿ€*€”‚ÿÿÿSoCallbackActionPerforms a generic traversal of the scene graph†=˜ ­ I#b€z-Ž $€€”ããS¯+€‰‚ÿ€6€”‚ÿÿÿSoGetBoundingBoxActionComputes bounding box of a sceneŒC' 9I#b€†-Ž $€€”ã¹_ØS€‰‚ÿ€,€”‚ÿÿÿSoGetMatrixActionComputes transformation matrix for subgraphD­ ÆI#b€ˆ-Ž $€€”ãDRô€‰‚ÿ€<€”‚ÿÿÿSoGetPrimitiveCountActionCounts number of primitives in sceneÄ{9ŠI#b€ö-Ž $€€”ãFÙ €‰‚ÿ€6€”‚ÿÿÿSoGlobalSimplifyActionTraverses the scene graph and collects all the triangles in a single list, which is simplified‚9Æ@I#b€r-Ž $€€”ã©öø(€‰‚ÿ€*€”‚ÿÿÿSoGLRenderActionRenders a scene graph usŠ@ ing OpenGL’IŠª@I#b€’-Ž $€€”ãàꀉ‚ÿ€0€”‚ÿÿÿSoHandleEventActionAllows nodes in a graph to receive input eventsŠA@4AI#b€‚-Ž $€€”ãæxpö€‰‚ÿ€D€”‚ÿÿÿSoIntersectionDetectionActionClass to detect intersectionsŽEª@ÂAI#b€Š-Ž $€€”ã#º…ö€‰‚ÿ€"€”‚ÿÿÿSoPickActionAbstract base class for picking objects in a sceneŒC4ANBI#b€†-Ž $€€”ãÉ“â„€‰‚ÿ€(€”‚ÿÿÿSoRayPickActionIntersects objects with a ray cast into sceneò¨ÂA@CJ#b€Q-Ž $€€”ã$ /=€‰‚ÿ€.€”‚ÿÿÿSoReorganizeActionReorganizes the scene graph by grouping shapes with common properties, then groups these shapes in a single shape and runs the simplifier on it8NBÁCI#b€p-Ž $€€”ãòÓ}ª€‰‚ÿ€&€”‚ÿÿÿSoSearchActionSearches for nodes in a scene graphªa@CkDI#b€Â-Ž $€€”ãG°ÞJ€‰‚ÿ€.€”‚ÿÿÿSoSearchPathActionSearches for a node in a scene graph using a sequence of search criteriaÊ€ÁC5EJ#b€-Ž $€€”ã` AÓ€‰‚ÿ€4€”‚ÿÿÿSoShapeSimplifyActionSimplify action that replaces shapes within a scene graph with versions that contain fewer trianglesGkDÅEI#b€Ž-Ž $€€”ãŸyU€‰‚ÿ€*€”‚ÿÿÿSoSimplifyActionAbstract base class for simplifying scene graphs”K5EYFI#b€–-Ž $€€”ãpüšÇ€‰‚ÿ€&€”‚ÿÿÿSoToHTMLActionGenerates an image map and an image from a scene graph¦]ÅEÿFI#b€º-Ž $€€”ã~X+€‰‚ÿ€(€”‚ÿÿÿSoToVRML2ActionConverts an Open Inventor scene graph into a VRML 2.0-style scene graph¥\YF¤GI#b€¸-Ž $€€”ãȯø~€‰‚ÿ€&€”‚ÿÿÿSoToVRMLActionConverts an Open Inventor scene graph into a VRML 1.0-style scene graph„;ÿF(HI#b€v-Ž $€€”㾘Ö}€‰‚ÿ€$€”‚ÿÿÿSoToZ3DActionGenerates a Z3D file from a scene graph{2¤G£HI#b€d-Ž $€€”ãeY €‰‚ÿ€$€”‚ÿÿÿSoWriteActionWrites a scene graph to a file$(HÇH" €€€ÿ7£HþH1ï = ä þH,I†Basics. ÇH,I% €€ˆˆ€‚ÿBasics'þHSI$ €€”€‚ÿb,IµII#b€2Ï# $€€”㑶p6€‰‚ÿ€€”‚ÿÿÿSbBoolBoolean typecSIJI#b€4Ï# $€€”ãçî$€‰‚ÿ€€”‚ÿÿÿSbBox2f2D box classcµI{JI#b€4Ï# $€€”ã!çî$€‰‚ÿ€€”‚ÿÿÿSbBox2s2D box classcJÞJI#b€4Ï# $€€”ã?çî$€‰‚ÿ€€”‚ÿÿÿSbBox3f3D box classi {JGKI#b€@Ï# $€€”ãÀ"%€‰‚ÿ€€”‚ÿÿÿSbColorColor vector class{2ÞJÂKI#b€dÏ# $€€”ãH€‰‚ÿ€€”‚ÿÿÿSbCylinderClass for representing a cylinderi GK+LI#b€@Ï# $€€”ãǬ|6€‰‚ÿ€€”‚ÿÿÿSbLineDirected line in 3DhÂK“LI#b€>Ï# $€€”ã4i¥‘€‰‚ÿ€€”‚ÿÿÿSbMatrix4x4 matrix class|3+LMI#b€fÏ# $€€”ãЫÈv€‰‚ÿ€€”‚ÿÿÿSbMatrixd4x4 matrix class (double precision)}4“LŒMI#b€hÏ# $€€”ãúß~6€‰‚ÿ€€”‚ÿÿÿSbNameCharacter string stored in a hash tablex/MNI#b€^Ï# $€€”ãK2Å'€‰‚ÿ€€”‚ÿÿÿSbPListList of generic (void *) pointersk"ŒMoNI#b€DÏ# $€€”ã÷Ä'€‰‚ÿ€€”‚ÿÿÿSbPlaneOriented plane in 3D{2NêNI#b€dÏ# $€€”ã ‚û€‰‚ÿ€€”‚ÿÿÿSbRotationClass for representing a rotationFoNyOI#b€ŒÏ# $€€”ãC°×>€‰‚ÿ€ €”‚ÿÿÿSbRotationdClass for representing a rotation (double precision)w.êN €I#b€\Ï# $€€”ãœ8É€‰‚ÿ€€”‚ÿÿÿSbSphereClass for representing a sphereyO €ÇHy0yO…€I#b€`Ï# $€€”ãXíÊ€‰‚ÿ€€”‚ÿÿÿSbStringClass for smart character stringsx/ €ý€I#b€^Ï# $€€”ã4a†6€‰‚ÿ€€”‚ÿÿÿSbTimeClass for representation of a timey0…€vI#b€`Ï# $€€”ã{ƒõ(€‰‚ÿ€€”‚ÿÿÿSbVec2d2D vector class (double precision)fý€ÜI#b€:Ï# $€€”ã}ƒõ(€‰‚ÿ€€”‚ÿÿÿSbVec2f2D vector classfvB‚I#b€:Ï# $€€”㊃õ(€‰‚ÿ€€”‚ÿÿÿSbVec2s2D vector classy0Ü»‚I#b€`Ï# $€€”㦃õ(€‰‚ÿ€€”‚ÿÿÿSbVec3d3D vector class (double precision)fB‚!ƒI#b€:Ï# $€€”㨃õ(€‰‚ÿ€€”‚ÿÿÿSbVec3f3D vector classf»‚‡ƒI#b€:Ï# $€€”㵃õ(€‰‚ÿ€€”‚ÿÿÿSbVec3s3D vector classy0!ƒ„I#b€`Ï# $€€”ãуõ(€‰‚ÿ€€”‚ÿÿÿSbVec4d4D vector class (double precision)f‡ƒf„I#b€:Ï# $€€”ãÓƒõ(€‰‚ÿ€€”‚ÿÿÿSbVec4f4D vector classp'„Ö„I#b€NÏ# $€€”㪮§O€‰‚ÿ€"€”‚ÿÿÿSbViewVolumeViewing volume class8f„W…I#b€pÏ# $€€”ãñf‘¸€‰‚ÿ€*€”‚ÿÿÿSbViewportRegionClass for representing a viewportˆ?Ö„ß…I#b€~Ï# $€€”ãñ†Ï€‰‚ÿ€€”‚ÿÿÿSbXfBox3f3D box with an associated transformation matrix'W…†$ €€”€‚ÿ8ß…>†1Y9xýˆ>†m†JNCIvfApp/ †m†% €€ˆˆ€‚ÿCIvfApp*>†—†# €€€‚ÿNAMEY3m†ð†& €f€”‘€€‚ÿCIvfApp - interface of the IVF application class3—†#‡# € €€‚ÿINHERITS FROM-ð†P‡& €€”‘€€‚ÿNone1#‡‡# €€€‚ÿDESCRIPTION1P‡²ˆ/ ,€€”‘€€‚‚€€‚ÿThis class provides methods for initialization of Open Inventor and the IVF Class library. Note: Although the class name is CIvfApp, the header file name is IvfApp.h.pCreateArgs is a pointer to an array of type int containing (at least) the following:ﱇ¡Š> J€c€T”Ñ‚Ã}„€A€ƒƒ‚ƒƒ‚ƒƒ‚ƒƒ‚ÿpCreateArgs[0] =Enable viewer decorations (default = TRUE)If enabled, the viewer decorations (thumbwheels, etc.) are turned on.[1] =Enable display of URL (default = FALSE)If enabled, IvfOnUrlDisplayChanged will be called.[2] =Enable viewpoints menu (default = FALSE)If enabled, a Viewpoints menu will be added to the menu bar.[3] =Enable URL fetch callback (default = FALSE)If enabled, IvfOnFetchUrl will be called.1²ˆÒŠ) "€€„€A€‚ÿTYPESk:¡Š=‹1 2€t€T”A‚S~‚A€ãŸ\›œ‰‚ÿtypedef CIvfComponent * (*IvfCvtAfxViewProc)(CView *)Ï¥ÒŠ Œ* "€K€”‘€‚A€‚ÿThis type defines the interface for the application-supplied conversion method that converts an MFC CView object pointer into an IVF CIvfComponent Object pointer.p?=‹|Œ1 2€~€T”A‚S~‚A€ãŸ\›œ‰‚ÿtypedef CView * (*IvfCvtIvfComponentProc)(CIvfComponent *)Ï¥ ŒK* "€K€”‘€‚A€‚ÿThis type defines the interface for the application-supplied conversion method that converts an IVF CIvfComponent Object pointer into an MFC CView object pointer.i8|Œ´1 2€p€T”A‚S~‚A€ãŸ\›œ‰‚ÿtypedef CIvfComponent * (*IvfCvtAfxWndProc)(CWnd *)ΤK‚Ž* "€I€”‘€‚A€‚ÿThis type defines the interface for the application-supplied conversion method that converts an MFC CWnd object pointer into an IVF CIvfComponent Object pointer.p?´òŽ1 2€~€T”A‚S~‚A€ãŸ\›œ‰‚ÿtypedef CWnd * (*IvfCvtIvfComponentProcW)(CIvfComponent *)Τ‚ŽÀ* "€I€”‘€‚A€‚ÿThis type defines the interface for the application-supplied conversion method that converts an IVF CIvfComponent Object pointer into an MFC CWnd object pointer.m<òŽ9À1 2€x€T”A‚S~‚A€ãê lj‚ÿtypedef CIvfDÀ9À†ocument * (*IvfCvtAfxDocProc)(CDocument *)Ò¨À Á* "€Q€”‘€‚A€‚ÿThis type defines the interface for the application-supplied conversion method that converts an MFC CDocument object pointer into an IVF CIvfDocument Object pointer.m<9ÀxÁ1 2€x€T”A‚S~‚A€ãê lj‚ÿtypedef CDocument * (*IvfCvtIvfDocProc)(CIvfDocument *)Ò¨ ÁJÂ* "€Q€”‘€‚A€‚ÿThis type defines the interface for the application supplied conversion method that converts an IVF CIvfDocument Object pointer into an MFC CDocument object pointer.nCxÁ¸Â+ &€†€T”A‚S~‚A€‚ÿtypedef CIvfMainFrame * (*IvfCvtAfxFrameProc)(CFrameWnd *pFrame)Ó©J‹Ã* "€S€”‘€‚A€‚ÿThis type defines the interface for the application-supplied conversion method that converts an MFC CFrameWnd object pointer into an IVF CIvfMainFrame Object pointer.0 ¸Â»Ã& €€‚A€‚ÿMETHODSG‹ÃÄ. ,€2€T”A‚S~‚A€ƒ‚ƒ‚ÿCIvfApp()~CIvfApp()G»ÃIÄ) "€<€”‘€‚A€‚ÿConstructor and destructor.ª`ÄóÅJ b€Á€T”A‚S~„A€ƒƒã?\ÇÙ‰ƒƒƒƒƒƒƒƒƒ‚ÿstatic voidIvfInitInstance(CWinApp *pApp,CIvfApp *pIvfApp,IvfCvtAfxViewProcpAfxViewProc,IvfCvtIvfComponentProcpIvfComponentProc,IvfCvtAfxWndProcpAfxWndProc,IvfCvtIvfComponentProcWpIvfComponentProcW,IvfCvtAfxDocProcpAfxDocProc,IvfCvtIvfDocProcpIvfDocProc,IvfCvtAfxFrameProcpAfxFrameProc,void *pCreateArgs,BOOLnCreateComponent)šoIÄÆ+ &€Þ€”‘€„A€‚ÿThis method initializes the IVF class library. It is called from InitInstance in the MFC application object.L óÅÙÆ, (€@€T”A‚S~‚A€ƒ‚ÿstatic voidIvfExitInstance()_6Æ8Ç) "€l€”‘€‚A€‚ÿThis method releases any resources allocated by IvfQ%ÙƉÇ, (€J€T”A‚S~‚A€ƒ‚ÿstatic voidIvfOnIdle(LONG lCount)™p8Ç"È) "€à€”‘€‚A€‚ÿThis method connects MFC's Idle processing to the SoWin component library's delay queue processing mechanism.X,‰ÇzÈ, (€X€T”A‚S~‚A€ƒ‚ÿstatic voidIvfInitSoWin(CWnd *pTopLevel)jA"ÈäÈ) "€‚€”‘€‚A€‚ÿThis method is used to initialize the SoWin component library.S!zÈ7É2 4€B€T”A‚S~‚A€ã?\ÇÙ‰ƒ‚ÿstatic CIvfApp *IvfGetApp()d;äÈ›É) "€v€”‘€‚A€‚ÿThis method returns a pointer to the application object.X,7ÉóÉ, (€X€T”A‚S~‚A€ƒ‚ÿstatic CDocTemplate *IvfGetDocTemplate()vM›ÉiÊ) "€š€”‘€‚A€‚ÿThis method returns a pointer to the application document template object.ˆPóÉñÊ8 @€ €T”A‚S~‚A€ãê ljƒãŸ\›œ‰‚ÿstatic CIvfDocument *IvfGetDocument(CIvfComponent *pIvfComponent = NULL)N$iÊ?Ì* "€I€”‘€‚A€‚ÿGiven a pointer to an IVF component object, this method will return a pointer to the corresponding IVF document object. If the argument is NULL, the document corresponding to the active component is returned. If the application is an MFC dialog based application, this method returns NULL.ƒKñÊÂÌ8 @€–€T”A‚S~‚A€ãŸ\›œ‰ƒãê lj‚ÿstatic CIvfComponent *IvfGetComponent(CIvfDocument *pIvfDoc = NULL){Q?Ì=Î* "€£€”‘€‚A€‚ÿGiven a pointer to an IVF document object, this method will return a pointer to the corresponding IVF component object. The corresponding component is derived by locating the active MFC view associated with the document, and converting the MFC view pointer to an IVF component pointer using the application supplied conversion method.§sÂÌäÎ4 8€æ€T”A‚S~‚A€ƒãŸ\›œ‰‚ƒ‚ÿstatic CFrameWnd *IvfGetAfxFrame(CIvfComponent *pIvfComponent = NULL)static CIvfMainFrame *IvfGetIvfFrame()jA=ÎNÏ) "€‚€”‘€‚A€‚ÿThis method returns a pointer to the application frame window.xFäÎÆÏ2 4€Œ€T”A‚S~‚A€ƒãŸ\›œ‰‚ÿstatic CView *IvfGetAfxView(CIvfComponent *pIvfComponent = NULL)×­NÏ©* "€[€”‘€‚A€‚ÿGiven a pointerÆÏ©† to an IVF component object, this method calls the application-supplied conversion method to perform a type safe cast down to the application view class and then a cast up to the MFC view class. A pointer to the MFC view object corresponding to the IVF component object is returned. If the argument is NULL, a pointer to the active view is returned. If the application is dialog based, this method returns NULL.vDÆÏ2 4€ˆ€T”A‚S~‚A€ƒãŸ\›œ‰‚ÿstatic CWnd *IvfGetAfxWnd(CIvfComponent *pIvfComponent = NULL)漩* "€y€”‘€‚A€‚ÿGiven a pointer to an IVF component object, this method calls the application-supplied conversion method to perform a type safe cast down to the application window class and then a cast up to the MFC window class. A pointer to the MFC window object corresponding to the IVF component object is returned. If the argument is NULL, a pointer to the active component is returned. If the application is not dialog based, this method returns NULL.€N…2 4€œ€T”A‚S~‚A€ƒãŸ\›œ‰‚ÿstatic CDocument *IvfGetAfxDocument(CIvfComponent *pIvfComponent = NULL)lBñ* "€…€”‘€‚A€‚ÿGiven a pointer to an IVF component object, this method first locates the corresponding IVF document object. It then calls the application supplied conversion method to perform a type safe cast of the IVF document object pointer down to the application document class and then a cast up to the MFC document class. A pointer to the MFC document object corresponding to the IVF component object is returned. If the argument is NULL, a pointer to the document object corresponding to the active MFC view is returned. If the application is dialog based, this method returns NULL.r@…c2 4€€€T”A‚S~‚A€ƒãê lj‚ÿstatic CDocument *IvfGetAfxDocument(CIvfDocument *pIvfDoc)yOñÜ* "€Ÿ€”‘€‚A€‚ÿGiven a pointer to an IVF document object, calls the application-supplied conversion method to perform a type safe cast of the IVF document object pointer down to the application document class, and then a cast up to the MFC document class. A pointer to the MFC document object corresponding to the IVF document object is returned. m;cI 2 4€v€T”A‚S~‚A€ãŸ\›œ‰ƒ‚ÿstatic CIvfComponent *ToIvfComponent(CView *pAfxView)íÃÜ6 * "€‡€”‘€‚A€‚ÿThis method invokes the application-supplied conversion method to convert an MFC view object pointer into an IVF component object pointer. If the application is dialog based, NULL is returned.m;I £ 2 4€v€T”A‚S~‚A€ƒãŸ\›œ‰‚ÿstatic CView *ToAfxView(CIvfComponent *pIvfComponent)íÃ6  * "€‡€”‘€‚A€‚ÿThis method invokes the application-supplied conversion method to convert an IVF component object pointer into an MFC view object pointer. If the application is dialog based, NULL is returned.l:£ ü 2 4€t€T”A‚S~‚A€ãŸ\›œ‰ƒ‚ÿstatic CIvfComponent *ToIvfComponentW(CWnd *pAfxWnd)óÉ ï * "€“€”‘€‚A€‚ÿThis method invokes the application-supplied conversion method to convert an MFC window object pointer into an IVF component object pointer. If the application is not dialog based, NULL is returned.k9ü Z 2 4€r€T”A‚S~‚A€ƒãŸ\›œ‰‚ÿstatic CWnd *ToAfxWnd(CIvfComponent *pIvfComponent)óÉï M* "€“€”‘€‚A€‚ÿThis method invokes the application-supplied conversion method to convert an IVF component object pointer into an MFC window object pointer. If the application is not dialog based, NULL is returned.n<Z »2 4€x€T”A‚S~‚A€ãê ljƒ‚ÿstatic CIvfDocument *ToIvfDocument(CDocument *pAfxDoc)òÈM­* "€‘€”‘€‚A€‚ÿThis method invokes the application-supplied conversion method to convert an MFC document object pointer into an IVF document object pointer. If the application is a dialog based, NULL is returned.¥q»^@4 8€â€T”A‚S~‚A€ƒãê lj‚ƒ‚ÿstatic CDocument *ToAfxDocume­^@†nt(CIvfDocument *pIvfDoc)static CIvfMainFrame *ToIvfFrame(CFrameWnd *pFrame)òÈ­PA* "€‘€”‘€‚A€‚ÿThis method invokes the application-supplied conversion method to convert an IVF document object pointer into an MFC document object pointer. If the application is a dialog based, NULL is returned.L ^@œA, (€@€T”A‚S~‚A€ƒ‚ÿstatic void *IvfCreateArgs()–mPA2B) "€Ú€”‘€‚A€‚ÿThis method returns a pointer to the arguments passed to the of the IVF view class for component creation.FœAxB, (€4€T”A‚S~‚A€ƒ‚ÿstatic BOOL IvfIsMdi()tK2BìB) "€–€”‘€‚A€‚ÿThis method returns a Boolean that indicates if this an MDI application.]1xBIC, (€b€T”A‚S~‚A€ƒ‚ÿstatic BOOLIvfIsIvfComponent(CView *pAfxView)a8ìBªC) "€p€”‘€‚A€‚ÿCheck if a CView object is derived from CIvfComponentd8ICD, (€p€T”A‚S~‚A€ƒ‚ÿstatic voidIvfAddToIvfComponentList(CView *pAfxView)üÒªC E* "€¥€”‘€‚A€‚ÿUtility routine to add view to the list of IVF views. Not all views in an IVF application have to be derived from CIvfComponent. To distinguish between IVF and Non-IVF views, we keep a list of all IVF views.i=DsE, (€z€T”A‚S~‚A€ƒ‚ÿstatic voidIvfRemoveFromIvfComponentList(CView *pAfxView)Q( EÄE) "€P€”‘€‚A€‚ÿRemove a view from the IVF view list.9sEýE& €&€‚A€‚ÿMEMBER VARIABLESX,ÄEUF, (€X€T”A‚S~‚A€ƒ‚ÿstatic __IvfStaticImport CIvfApp *m_pAppQ(ýE¦F) "€P€”‘€‚A€‚ÿPointer to the IVF application objecte9UF G, (€r€T”A‚S~‚A€ƒ‚ÿstatic __IvfStaticImport CDocTemplate *m_pDocTemplate_6¦FjG) "€l€”‘€‚A€‚ÿPointer to the application document template object\0 GÆG, (€`€T”A‚S~‚A€ƒ‚ÿstatic __IvfStaticImport void *m_pCreateArgsa8jG'H) "€p€”‘€‚A€‚ÿPointer to the arguments for SoWin component creationS'ÆGzH, (€N€T”A‚S~‚A€ƒ‚ÿstatic __IvfStaticImport BOOLm_nMDI4 'H®H) "€€”‘€‚A€‚ÿMDI flag/ zHÝH& €€‚A€‚ÿMACROS¸}®H•J; D€û€T”A‚S~‚A€‚ÿ#define IVF_INIT_INSTANCE(pApp, IvfCvtAfxView, IvfCvtIvfComponent, IvfCvtAfxWnd, IvfCvtIvfComponentW, IvfCvtAfxDoc, IvfCvtIvfDoc, IvfCvtAfxFrame, pCreateArgs, nCreateVwr) \{ \CIvfApp::IvfInitInstance( \pApp,\pApp,\IvfCvtAfxView, \IvfCvtIvfComponent, \IvfCvtAfxWnd, \IvfCvtIvfComponentW, \IvfCvtAfxDoc, \IvfCvtIvfDoc, \IvfCvtAfxFrame,\pCreateArgs, \nCreateVwr); \}¹ÝHNK* "€€”‘€‚A€‚ÿThis macro is invoked from the MFC application objects InitInstance method. It invokes the CIvfApp method IvfInitInstance to initialize IVF.sH•JÁK+ &€€T”A‚S~‚A€‚ÿ#define IVF_AFX_CONVERSION_METHOD (AppViewClassName, AppDocClassName)§~NKhL) "€ü€”‘€‚A€‚ÿThis macro is used to define the type safe conversion methods for view-based applications. See the header file for details.d9ÁKÌL+ &€r€T”A‚S~‚A€‚ÿ#define IVF_AFX_WND_CONVERSION_METHOD(AppWndClassName)ª€hLvM* "€€”‘€‚A€‚ÿThis macro is used to define the type safe conversion methods for dialog-based applications. See the header file for details.1 ÌL§M& €€‚A€‚ÿSEE ALSO£\vMJNG ^€¸€”‘€‚AãÆ9*†€‰ãù›¿‰ãŸ\›œ‰ãê ljãZ‰DU‰‚ÿCIvfArchiveInput, CIvfArchiveOutput, CIvfComponent, CIvfDocument, CIvfMainFrameA§M‹N1 !á‹NÃNW‰CIvfArchiveInput8JNÃN% €&€ˆˆ€‚ÿCIvfArchiveInput*‹NíN# €€€‚ÿNAMEd>ÃNQO& €|€”‘€€‚ÿCIvfArchiveInput - interface of the IVF archive input class3íN„O# € €€‚ÿINHERITS FROM-QO±O& €€”‘€€‚ÿNone1„O €# €€€‚ÿDESCRIPTION±O €JNÒª±OÞ€( €U€”‘€€‚‚ÿSoInput derived class to handle performing input on MFC CArchive objects.Note: Although the class name is CIvfArchiveInput, the header file name is IvfArchiveInput.h.- € # €€€‚ÿMETHODS‚RÞ€0 0€¤€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿCIvfArchiveInput()CIvfArchiveInput(CArchive *ar)virtual~CIvfArchiveInput()I Ö) "€@€”‘€‚A€‚ÿConstructors and destructors.R (‚2 4€@€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolget(char &c)yPÖ¡‚) "€ €”‘€‚A€‚ÿReads next character from current file/buffer. Returns FALSE on EOF or error.Ž(‚¼„ 耀T”A‚S~‚A€㑶p6‰ƒ‚㑶p6‰ƒãXíʉ‚㑶p6‰ƒãúß~6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvirtual SbBoolread(char &c)virtual SbBoolread(SbString &s)virtual SbBoolread(SbName &n, SbBool validIdent = FALSE)virtual SbBoolread(int &i)virtual SbBoolread(unsigned int &i)virtual SbBoolread(short &s)virtual SbBoolread(unsigned short &s)virtual SbBoolread(float &f)virtual SbBoolread(double &d)virtual SbBoolreadBinaryArray(int32_t *l, int length)«q¡‚g…: D€â€T”A‚S~‚A€㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvirtual SbBoolreadBinaryArray(float *f, int length)virtual SbBoolreadBinaryArray(double *d, int length)Æœ¼„-†* "€9€”‘€‚A€‚ÿReads item of particular type from current file pointer/buffer. All skip white space before reading and return FALSE on EOF or if item could not be read.Qg…~†2 4€>€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBooleof() constY0-†׆) "€`€”‘€‚A€‚ÿReturns TRUE if current file/buffer is at EOFvH~†M‡. ,€€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidputBack(char c)virtual voidputBack(const char *string)lC׆¹‡) "€†€”‘€‚A€‚ÿPuts a just-read character or string back in input stream/buffer[)M‡ˆ2 4€R€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolgetASCIIFile(char &c)xO¹‡Œˆ) "€ž€”‘€‚A€‚ÿReads next ASCII character from current file. Returns FALSE on EOF or error.1 ˆ½ˆ& €€‚A€‚ÿSEE ALSOšSŒˆW‰G ^€¦€”‘€‚Aã?\ÇÙ€‰ãù›¿‰ãŸ\›œ‰ãê ljãZ‰DU‰‚ÿCIvfApp, CIvfArchiveOutput, CIvfComponent, CIvfDocument, CIvfMainFrameB½ˆ™‰1œýˆ€™‰Ò‰IÀCIvfArchiveOutput9W‰Ò‰% €(€ˆˆ€‚ÿCIvfArchiveOutput*™‰ü‰# €€€‚ÿNAMEf@Ò‰bŠ& €€€”‘€€‚ÿCIvfArchiveOutput - interface of the IVF archive output class3ü‰•Š# € €€‚ÿINHERITS FROM-bŠŠ& €€”‘€€‚ÿNone1•ŠóŠ# €€€‚ÿDESCRIPTION֮ŠÉ‹( €]€”‘€€‚‚ÿSoOutput derived class to handle performing output on MFC CArchive objects.Note: Although the class name is CIvfArchiveOutput, the header file name is IvfArchiveOutput.h.- óŠö‹# €€€‚ÿMETHODS…UÉ‹{Œ0 0€ª€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿCIvfArchiveOutput()CIvfArchiveOutput(CArchive *ar)virtual~CIvfArchiveOutput()Hö‹ÃŒ) "€>€”‘€‚A€‚ÿConstructors and destructor.Ä{ŒÚŽS t€‰€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒãXíʉ‚ƒãúß~6‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿCArchive *getArchive()virtual voidcloseFile()virtual voidflushFile()virtual voidwrite(char c)virtual voidwrite(const char *s)virtual voidwrite(const SbString &s)virtual voidwrite(const SbName &n)virtual voidwrite(int i)virtual voidwrite(unsigned int i)virtual voidwrite(short s)virtual voidwrite(unsigned short s)virtual voidwrite(float f)virtual voidwrite(double d)virtual voidwriteBinaryArray(int32_t *l, int length)™kÃŒs. ,€Ö€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidwriteBinaryArray(float *f, int length)virtual voidwriteBinaryArray(double *d, int length)1 ÚŽ¤& €€‚A€‚ÿSEE ALSO™RsIÀG ^€¤€”‘€‚Aã?\ÇÙ€‰ãÆ9*†‰ãŸ\›œ‰ãê ljãZ‰DU‰‚ÿCIvfApp, CIvfArch¤IÀW‰iveInput, CIvfComponent, CIvfDocument, CIvfMainFrame> ¤‡À1êLáT‡‡À¼À’ÌCIvfComponent5IÀ¼À% € €ˆˆ€‚ÿCIvfComponent*‡ÀæÀ# €€€‚ÿNAME]7¼ÀCÁ& €n€”‘€€‚ÿCIvfComponent - interface of the IVF component class3æÀvÁ# € €€‚ÿINHERITS FROM-CÁ£Á& €€”‘€€‚ÿNone1vÁÔÁ# €€€‚ÿDESCRIPTIONh9£Á<Ã/ ,€s€”‘€€‚‚€€‚ÿThis class provides methods to process messages directed to the IVF component object and methods to interact with the SoWin component.Note: Although the class name is CIvfComponent, the header file name is IvfComponent.h.pCreateArgs is a pointer to an array of type int containing (at least) the following:î±ÔÁ*Å= H€c€T”Ñ‚Ã}„AÑ€ƒƒ‚ƒƒ‚ƒƒ‚ƒƒ‚ÿpCreateArgs[0] =Enable viewer decorations (default = TRUE)If enabled, the viewer decorations (thumbwheels, etc.) are turned on.[1] =Enable display of URL (default = FALSE)If enabled, IvfOnUrlDisplayChanged will be called.[2] =Enable viewpoints menu (default = FALSE)If enabled, a Viewpoints menu will be added to the menu bar.[3] =Enable URL fetch callback (default = FALSE)If enabled, IvfOnFetchUrl will be called.2 <Ã\Å( €€„AÑ€‚ÿMETHODS?*Å›Å, (€&€T”A‚S~‚A€ƒ‚ÿCIvfComponent()8\ÅÓÅ) "€€”‘€‚A€‚ÿConstructor.b0›Å5Æ2 4€`€T”A‚S~‚A€ã(ç –‰ƒ‚ÿvirtual SoSelection *IvfGetSelectionNode()EÓÅzÆ) "€8€”‘€‚A€‚ÿGet the active selection.xK5ÆòÆ- *€–€T”A‚S~‚A€ƒ‚ÿvirtual void IvfCreateComponent(CWnd *pWnd,void *pCreateArgs=NULL) = 0˜zÆ´Ç* "€1€”‘€‚A€‚ÿThis method creates an SoWin Component inside of the window pointed to by pWnd. Use this method to create a component inside of an arbitrary window.a/òÆÈ2 4€^€T”A‚S~‚A€ãzÅe‰‰ƒ‚ÿvirtual SoWinClipboard *IvfGetClipboard()i@´Ç~È) "€€€”‘€‚A€‚ÿThis method returns the clipboard contained in the componentsR&ÈÐÈ, (€L€T”A‚S~‚A€ƒ‚ÿvirtual void IvfDestroyComponent()O&~ÈÉ) "€L€”‘€‚A€‚ÿThis method destroys the component.`.ÐÈÉ2 4€\€T”A‚S~‚A€ã¹Ä L‰ƒ‚ÿvirtual SoWinComponent*IvfGetComponent()[2ÉÚÉ) "€d€”‘€‚A€‚ÿThis method returns a pointer to the component.Y-É3Ê, (€Z€T”A‚S~‚A€ƒ‚ÿvoidIvfResetComponent(CIvfDocument *pDoc)fÚÉÂÊ) "€Ì€”‘€‚A€‚ÿThis method responds to IvfSceneGraphChanged to reset the viewer to the new scene graph and camera.K3Ê Ë, (€>€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfIsSelected()AÂÊNË) "€0€”‘€‚A€‚ÿIs a selection activepB ˾Ë. ,€„€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidIvfViewmodesSelectionmode()voidIvfViewmodesViewingmode()P'NËÌ) "€N€”‘€‚A€‚ÿSet the mode to selection or viewingg5¾ËuÌ2 4€j€T”A‚S~‚A€ƒã’n%9‰‚ÿvirtual voidIvfSetSceneGraph(SoNode *pRoot) = 0®„Ì#Í* "€ €”‘€‚A€‚ÿThis method forces the component to use the scene graph pointed to by pRoot instead of the scene graph contained in the document.\*uÌÍ2 4€T€T”A‚S~‚A€ã’n%9‰ƒ‚ÿvirtual SoNode *IvfGetSceneGraph()=0kB#ÍêÍ) "€„€”‘€‚A€‚ÿThis method returns the scene graph contained in the component.V*Í@Î, (€T€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfReleaseSceneGraph() = 0lCêͬÎ) "€†€”‘€‚A€‚ÿThis method causes the component to unreference its scene graph.h6@ÎÏ2 4€l€T”A‚S~‚A€ƒãÀ"%‰‚ÿvirtual voidIvfSetBackgroundColor(SbColor &) = 0D¬ÎXÏ) "€6€”‘€‚A€‚ÿSet the background colorU)Ï­Ï, (€R€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfSetHeadlight(BOOL) = 0CXÏ ) "€4€”‘€‚A€‚ÿSet the headlight color­Ï IÀ[/­Ïg, (€^€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfSetActiveCamera(int nCamera)‘h ø) "€Ð€”‘€‚A€‚ÿSet the component's camera to camera number nCamera from the list of cameras pointed to by m_pCamListh6g`2 4€l€T”A‚S~‚A€ƒã½V)\‰‚ÿvirtual voidIvfSetActiveCamera(SoCamera *pCam)=0O&ø¯) "€L€”‘€‚A€‚ÿSet the component's camera to pCam._-`2 4€Z€T”A‚S~‚A€ã½V)\‰ƒ‚ÿvirtual SoCamera*IvfGetActiveCamera()=0W.¯e) "€\€”‘€‚A€‚ÿReturn a pointer to the component's camera.S'¸, (€N€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfSaveHomePosition()=0mDe%) "€ˆ€”‘€‚A€‚ÿSave the position of the component's camera as the home position.V*¸{, (€T€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfResetToHomePosition()=0]4%Ø) "€h€”‘€‚A€‚ÿMove the component's camera to the home position.J{", (€<€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfViewAll()=0]4Ø) "€h€”‘€‚A€‚ÿPerform a viewAll on the component's scene graph.n="í1 2€z€T”A‚S~‚A€ãñf‘¸‰‚ÿvirtual const SbViewportRegion &IvfGetViewportRegion()=0P'=) "€N€”‘€‚A€‚ÿGet the component's viewport region.f4í£2 4€h€T”A‚S~‚A€ãQ´tK‰ƒ‚ÿvirtual SoSceneManager *IvfGetSceneManager()=0M$=ð) "€H€”‘€‚A€‚ÿGet the component's scene managerL £<, (€@€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfIsViewing()=0L#ðˆ) "€F€”‘€‚A€‚ÿQuery component's viewing statusV*<Þ, (€T€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfSetViewing(BOOL flag)=0J!ˆ() "€B€”‘€‚A€‚ÿSet component's viewing status<Þd& €,€‚A€‚ÿMETHODS (Protected)R&(¶, (€L€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfSceneGraphChanged()Šad@) "€Â€”‘€‚A€‚ÿThis method notifies the component that the scene graph contained in the document has changed.{K¶»0 0€–€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿvoidIvfOnBeginPrinting()voidIvfOnPrint(CDC *)voidIvfOnEndPrinting()B@ý) "€2€”‘€‚A€‚ÿThese handle printing.V*»S , (€T€T”A‚S~‚A€ƒ‚ÿBOOLIvfSaveAsBitmap(LPCTSTR pFilename)Y0ý¬ ) "€`€”‘€‚A€‚ÿSave the scene graph as a bitmap (.bmp file). ÀS · K d€€T”A‚S~‚A€ƒãMy'9‰‚ƒãMy'9‰‚ƒãMy'9‰‚ƒãMy'9‰‚ÿvirtual voidIvfOnSelection(SoPath *)virtual voidIvfOnDeSelection(SoPath *)static voidIvfStaticSelectionCB(void *, SoPath *)static voidIvfStaticDeSelectionCB(void *, SoPath *)Z1¬  ) "€b€”‘€‚A€‚ÿThese are called on selection and deselection.wI· ˆ . ,€’€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidIvfRemoveManips(void)virtual voidIvfRestoreManips(void)¦} . ) "€ú€”‘€‚A€‚ÿThese functions prune and restore manipulators from and to the scene graph. Used before saving to storage, clipboard, etc.åˆ L 9 @€Ë€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidIvfOnEditCopy()voidIvfOnUpdateEditCopy(CCmdUI* pCmdUI)voidIvfOnEditCut()voidIvfOnUpdateEditCut(CCmdUI* pCmdUI)voidIvfOnEditPaste()voidIvfOnUpdateEditPaste(CCmdUI* pCmdUI)voidIvfOnUpdateEditUndo(CCmdUI* pCmdUI)S*. Ÿ ) "€T€”‘€‚A€‚ÿDirect support for cut/paste operations]1L ü , (€b€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfOnSelectViewpoint(int nCamera)P&Ÿ XA* "€M€”‘€‚A€‚ÿThis method is invoked when the user selects a viewpoint from the viewpoint menu. If m_nEnableViewpoints is TRUE, CIvfComponent will maintain a viewpoint menu for the application. The cameras corresponding to each viewpoint in the viewpoint menu are contained in a list pointed to by the m_pCamList member variable. If the scene graph loaded by the application did not contain any cameras, then the camera list will be empty, and the viewpoint menu will contain the defaultü XAIÀ item "Entry View". If the camera list is not empty, the viewpoint menu will contain items corresponding to the name of each camera. The camera corresponding the the selected menu item is (*m_pCamList)[nCamera]. In the case where the camera list is empty and "Entry View" is selected, this method is invoked with nCamera set to 0.h<ü ÀA, (€x€T”A‚S~‚A€ƒ‚ÿvirtual void IvfOnUrlDisplayChanged(const char *urlName)¬‚XAlC* "€€”‘€‚A€‚ÿIf m_nEnableUrlDisplay is TRUE, this method is invoked every time the mouse cursor passes over an SoWWWAnchor node, and every time the cursor moves out of a region of the screen occupied by the SoWWWAnchor node. This enables applications to display a URL name in the status bar. The default implementation of this method displays urlName in the application frame window's status bar.~FÀAêC8 @€Œ€T”A‚S~‚A€ãMy'9‰ƒã¼B‘S‰‚ÿvirtual SoPath *IvfOnSelectionPick(const SoPickedPoint *pick )ΤlC¸E* "€I€”‘€‚A€‚ÿIf the component contains a scene graph that has an SoSelection node as the root, this method is invoked when the user picks a node in the scene graph by clicking the mouse button. If m_nEnableSelection is TRUE, the path to the selected node is returned. This causes the selected node to be highlighted. If m_nEnableSelection is FALSE, a path containing only the selection node is returned and no highlighting occurs.b0êCF2 4€`€T”A‚S~‚A€ƒãMy'9‰‚ÿvirtual voidIvfOnViewAnchor(SoPath *pPath)P&¸EjH* "€M€”‘€‚A€‚ÿThis method performs a viewAll on the path pointed to by pPath. If m_nEnableViewpoints is TRUE, CIvfComponent will maintain a list of paths to all of the SoWWWAnchor nodes in the component's scene graph. This method is invoked to cause the component's camera to be relocated so that the anchor pointed to by pPath is visible. Note that performing a viewAll on the path to the anchor does not guarantee that the geometry contained under the anchor node will be visible. Applications should overload this method if a more robust behavior is desired.|NFæH. ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidIvfOnSelectionEnable()voidIvfOnUpdateSelectionEnable(CCmdUI* pCmdUI)FjH,I) "€:€”‘€‚A€‚ÿEnable/disable selections.vDæH¢I2 4€ˆ€T”A‚S~‚A€ƒãôx—‰‚ÿstatic voidIvfErrorCallback( const SoError *error, void *data)”k,I6J) "€Ö€”‘€‚A€‚ÿThis method is invoked when an error is encountered. A dialog containing the error message is displayed.Ú¥¢IK5 8€K€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidIvfPrePasteAction()virtual voidIvfPostPasteAction()virtual voidIvfPreCopyAction()virtual voidIvfPostCopyAction()virtual voidIvfPreCutAction()¬‚6J¼K* "€€”‘€‚A€‚ÿThese are called just before and after the respective edit operations to allow the viewer to make adjustments before and after.GKL, (€6€T”A‚S~‚A€ƒ‚ÿvirtual~CIvfComponent()7¼K:L) "€€”‘€‚A€‚ÿDestructor.m;L§L2 4€v€T”A‚S~‚A€ƒã«]à—‰‚ÿvirtual voidIvfSetupUrlDisplayCallback(SoGroup *root)V,:LýN* "€Y€”‘€‚A€‚ÿThis method inserts an SoEventCallback node into the scene graph contained in the document object. The callback node triggers a callback for every SoLocation2Event (each time the cursor moves). The default implementation set's up a mechanism so that IvfLoc2Callback is invoked for each mouse move event. This mechanism is needed to enable display of URLs as the mouse cursor moves over SoWWWAnchor nodes. An application should overload this method if another method of URL display is desired. This mechanism is setup only if m_nEnableUrlDisplay is TRUE.n<§LkO2 4€x€T”A‚S~‚A€ƒã«]à—‰‚ÿvirtual voidIvfRemoveUrlDisplayCallback(SoGroup *root)nEýNÙO) "€Š€”‘€‚A€‚ÿThis method removes the SoEventCallback node from the scene graph.sGkOX€, (€Ž€T”A‚S~‚A€ÙOX€IÀƒ‚ÿvirtual voidIvfLoc2Callback( void *userData, SoEventCallback *node)ܲÙO4‚* "€e€”‘€‚A€‚ÿIf m_nEnableUrlDisplay is TRUE, this method is invoked each time the cursor position changes while inside the component's window. The default implementation performs an SoRayPickAction action on the scene graph to determine if the cursor is over a URL. In addition, the appropriate analysis is performed to determine if the URL display needs to be updated. If the URL display needs to be changed, IvfOnUrlDisplayChanged is invoked.xLX€¬‚, (€˜€T”A‚S~‚A€ƒ‚ÿstatic voidIvfStaticLoc2Callback( void *userData, SoEventCallback *node)è¾4‚”ƒ* "€}€”‘€‚A€‚ÿThis static member function is invoked by the callback node in placed in the scene graph by IvfSetupUrlDisplayCallback for each mouse move event. This method then invokes IvfLoc2Callback.[/¬‚ïƒ, (€^€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfSetupSelectionPickCallback()|S”ƒk„) "€¦€”‘€‚A€‚ÿThis method sets the selection pick filter callback to IvfStaticSelectionPickCB.\0ïƒÇ„, (€`€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfRemoveSelectionPickCallback()h?k„/…) "€~€”‘€‚A€‚ÿThis method sets the selection pick filter callback to NULL.“[Ç„Â…8 @€¶€T”A‚S~‚A€ãMy'9‰ƒã¼B‘S‰‚ÿstatic SoPath *IvfStaticSelectionPickCB( void *userData, const SoPickedPoint *pick)Å›/…‡†* "€7€”‘€‚A€‚ÿThese methods are invoked when the user picks a node in the scene graph. IvfOnSelectionPick is the instance version called by IvfStaticSelectionPickCB.©oÂ…0‡: D€Þ€T”A‚S~‚A€ƒãç2ø¡‰‚ƒãç2ø¡‰‚ÿstatic voidIvfPasteDoneCB(void *userData, SoPathList *pathList)voidIvfPasteDone(SoPathList *pathList)뇆Eˆ* "€×€”‘€‚A€‚ÿThis method happens on paste. It is invoked from the specific viewer and passes the paste list. The first is the static callback passed to the clipboard and the second is the actual instance member function (that does all the work).O#0‡”ˆ, (€F€T”A‚S~‚A€ƒ‚ÿvoidIvfDestroySelectedObjects()Y0Eˆíˆ) "€`€”‘€‚A€‚ÿThis is the implementation of the cut method.J”ˆ7‰, (€<€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfOnDestroy()¢yíˆÙ‰) "€ò€”‘€‚A€‚ÿThis method is invoked when the MFC object that is polymorphic with the IVF component object is about to be destroyed.H7‰!Š, (€8€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfOnPaint()BÙ‰cŠ) "€2€”‘€‚A€‚ÿPaint message handler.e9!ŠÈŠ, (€r€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfOnCreate(LPCREATESTRUCT lpCreateStruc)b9cŠ*‹) "€r€”‘€‚A€‚ÿThis method is called when the view object is created.Z.ÈŠ„‹, (€\€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfOnInitialUpdate(CWnd *pWnd)‚Y*‹Œ) "€²€”‘€‚A€‚ÿThis method is invoked during the first update of the window containing the component.oC„‹uŒ, (€†€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfOnActivateComponent(CView *pActivateView = NULL)}TŒòŒ) "€¨€”‘€‚A€‚ÿThis method is invoked prior to activation of the component in a MDI application.V*uŒH, (€T€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfOnDeactivateComponent()xOòŒÀ) "€ž€”‘€‚A€‚ÿThis method is invoked prior to component deactivation in a MDI application.f:H&Ž, (€t€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfOnCommand(WPARAM wParam, LPARAM lParam)¨ÀÎŽ) "€þ€”‘€‚A€‚ÿThis method is used to route commands to the SoWin component. TRUE is returned if the command is processed, FALSE otherwise.Œ`&ŽZ, (€À€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfOnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)«ÎŽÀ* "€€”‘€‚A€‚ÿThis method is used to route command messages to the component. TRUE is returned if the command is processed, FALSE otherwiZÀIÀse.T(ZeÀ, (€P€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfOnSelectViewAnchors()ѧÀ6Á* "€O€”‘€‚A€‚ÿIf the camera list is not empty, the item "View Anchors..." is appended to the end of the viewpoint menu. This method is invoked when "View Anchors..." is selected.’feÀÈÁ, (€Ì€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfIsViewpointMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)ˆ_6ÁPÂ) "€¾€”‘€‚A€‚ÿThis method is used by IvfOnCmdMsg to determine if a message pertains to the viewpoint menu.N"ÈÁžÂ, (€D€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfIsSceneViewer()qHPÂÃ) "€€”‘€‚A€‚ÿThis method queries if the underlying viewer is a SceneViewer or not.9žÂHÃ& €&€‚A€‚ÿMEMBER VARIABLEST"ÃœÃ2 4€D€T”A‚S~‚Aã¹Ä L€‰ƒ‚ÿSoWinComponent *m_pComponentJ!HÃæÃ) "€B€”‘€‚A€‚ÿPointer to the SoWin ComponentCœÃ)Ä, (€.€T”A‚S~‚A€ƒ‚ÿvoid *m_pCreateArgsW.æÀÄ) "€\€”‘€‚A€‚ÿPointer to the component creation argumentsy?)ÄùÄ: D€~€T”A‚S~‚AãzÅe‰€‰ƒ‚ã(ç –‰ƒ‚ÿSoWinClipboard *m_pClipboardSoSelection *m_pSelectiona8€ÄZÅ) "€p€”‘€‚A€‚ÿClipboard and selection now available to all viewers.Y'ùijÅ2 4€N€T”A‚S~‚Aã~M€T”A‚S~‚A€‚ÿ#define IVF_COMPONENT_BASE()E5ÊÄË* "€7€”‘€‚A€‚ÿThis macro is used by classes derived from CIvfComponent for convenient declaration of the minimum set of methods that must be defined by the derived class. These are all of the methods that are declared as pure virtual functions in CIvfComponent.See the header file for details.1 ÊõË& €€‚A€‚ÿSEE ALSOVÄË’ÌG ^€¬€”‘€‚Aã?\ÇÙ€‰ãÆ9*†‰ãù›¿‰ãê ljãZ‰DU‰‚ÿCIvfApp, CIvfArchiveInput, CIvfArchiveOutput, CIvfDocument, CIvfMainFrame= õËÏÌ1ïK€¿ÏÌÍOCIvfDocument4’ÌÍ% €€ˆˆ€‚ÿCIvfDocument*ÏÌ-Í# €€€‚ÿNAME[5͈Í& €j€”‘€€‚ÿCIvfDocument - interface of the IVF document class3-Í»Í# € €€‚ÿINHERITS FROM-ˆÍèÍ& €€”‘€€‚ÿNone1»ÍÎ# €€€‚ÿDESCRIPTIONÉ¡èÍâÎ( €C€”‘€€‚‚ÿThis class provides methods for manipulation of Open Inventor documents.Note: Although the class name is CIvfDocument, the header file name is IvfDocument.h.- ÎÏ# €€€‚ÿMETHODSQ#âÎ`Ï. ,€F€T”A‚S~‚A€ƒ‚ƒ‚ÿCIvfDocument()~CIvfDocument()GϧÏ) "€<€”‘€‚A€‚ÿConstructor and destructor.T(`Ï , (€P€T”A‚S~‚A€ƒ‚ÿvoidIvfSetFileHeader(LPCTSTR header)§Ï ’ÌÉŸ§ÏÕ* "€?€”‘€‚A€‚ÿThe method allows the programmer to specify a custom header string. This feature could be used to add additional text to one of the standard header strings O# $, (€F€T”A‚S~‚A€ƒ‚ÿvirtual BOOL IvfOnNewDocument()uLÕ™) "€˜€”‘€‚A€‚ÿThis method invokes IvfDeleteContents and unrefs the current scene graph.d8$ý, (€p€T”A‚S~‚A€ƒ‚ÿvirtual BOOL IvfOnOpenDocument(LPCTSTR lpszPathName)£z™ ) "€ô€”‘€‚A€‚ÿThis method loads a file given a path name. The pointer for the scene graph that is produced is stored in m_pSceneRoot.d8ý, (€p€T”A‚S~‚A€ƒ‚ÿvirtual BOOL IvfOnSaveDocument(LPCTSTR lpszPathName)g ”) "€Î€”‘€‚A€‚ÿThis method stores the scene graph pointed to by m_pSceneRoot in the file specified by the argument.Z.î, (€\€T”A‚S~‚A€ƒ‚ÿvirtual BOOL IvfOnOpenDocument(UINT hFile)£z”‘) "€ô€”‘€‚A€‚ÿThis method loads a file given file handle. The pointer for the scene graph that is produced is stored in m_pSceneRoot.Z.îë, (€\€T”A‚S~‚A€ƒ‚ÿvirtual BOOL IvfOnSaveDocument(UINT hFile)g‘{) "€Î€”‘€‚A€‚ÿThis method stores the scene graph pointed to by m_pSceneRoot in the file specified by the argument.a5ëÜ, (€j€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfOnOpenDocument(CArchive &rArchive)ª€{†* "€€”‘€‚A€‚ÿThis method loads a file given an archive object. The pointer for the scene graph that is produced is stored in m_pSceneRoot.a5Üç, (€j€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfOnSaveDocument(CArchive &rArchive)g†w) "€Î€”‘€‚A€‚ÿThis method stores the scene graph pointed to by m_pSceneRoot in the file specified by the argument.b6çÙ, (€l€T”A‚S~‚A€ƒ‚ÿBOOLIvfOnOpenDocumentMessage(LPCTSTR lpszPathName)±‡wŠ* "€€”‘€‚A€‚ÿPushthrough message handler from CDocument class. Note this is NOT a virtual (You already have control from CDocument derived class)U)Ùß, (€R€T”A‚S~‚A€ƒ‚ÿvoidIvfImportDocument(char *PathName)jAŠI ) "€‚€”‘€‚A€‚ÿOpens document and adds it to the current document scene graphd8ß­ , (€p€T”A‚S~‚A€ƒ‚ÿvoidCIvfDocument::IvfInitDocument(void *pCreateArgs)Y0I  ) "€`€”‘€‚A€‚ÿUse this to pass create args to the document.O#­ U , (€F€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfDeleteContents()i@ ¾ ) "€€€”‘€‚A€‚ÿThis method unrefs the scene graph pointed to by m_pSceneRootW+U  , (€V€T”A‚S~‚A€ƒ‚ÿvirtual const char *IvfGetUrlName(void)`7¾ u ) "€n€”‘€‚A€‚ÿThis method retrieves the Url name for this Document¢r  0 0€ä€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿvirtual BOOLIvfIsTitleSet(void)virtual voidIvfUpdateTitle(void)virtual const char *IvfGetTitleString(void)wNu Ž ) "€œ€”‘€‚A€‚ÿThis method checks the titleHintFound flag and sets the title if it is set.Q  . ,€¢€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual BOOLIvfIsInfoSet(void)virtual const char *IvfGetDocInfoString(void)\3Ž i ) "€f€”‘€‚A€‚ÿThis retrieves the DocInfo string if it was set.P$ ¹ , (€H€T”A‚S~‚A€ƒ‚ÿvirtual voidOnFileViewInfo(void)nEi ') "€Š€”‘€‚A€‚ÿThis processes the OnFileViewInfo (forwarded from the application)–\¹ ½: D€¸€T”A‚S~‚A€ƒãÍ\Y‰‚ãÍ\Y‰ƒ‚ÿvirtual voidIvfSetSceneGraph(SoSeparator *pRoot)SoSeparator *IvfGetDocSceneGraph()žu'[) "€ê€”‘€‚A€‚ÿThis method sets m_pSceneRoot to pRoot. The scene graph previously pointed to by m_pSceneRoot (if any) is unrefed.”Z½ @: D€´€T”A‚S~‚Aã½V)\€‰ƒ‚ã«]à—‰ƒ‚ÿSoCamera *IvfGetActiveCamera(int in_ix = -1)SoGroup *IvfGetActiveCamParent(void)[ @’ÌX/[d@) "€^€”‘€‚A€‚ÿThis method gets the currently active cameraq9 @Õ@8 @€r€T”A‚S~‚Aã½V)\€‰ƒã½V)\‰‚ÿSoCamera *IvfReplaceCamera(SoCamera *cam, int ix)šqd@oA) "€â€”‘€‚A€‚ÿReplace the camera specified by the index. Returns the camera that was there, disposition is up to the caller.O#Õ@¾A, (€F€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfPrepareForSave()ÇoA…B* "€;€”‘€‚A€‚ÿThis method is invoked by the document object prior to saving the scene graph. It allows the component to undo any changes it has done to the scene graph.I¾AÎB, (€:€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfPostSave()ë…BãC* "€×€”‘€‚A€‚ÿThis method is invoked by the document object to notify the component that the scene graph save operation has completed. The component is then free to re-institute any scene graph modifications it has made (i.e. remove all cameras).a/ÎBDD2 4€^€T”A‚S~‚A€ƒã«]à—‰‚ÿvirtual voidIvfFindAnchors(SoGroup *root)Ê ãCE* "€A€”‘€‚A€‚ÿThis method locates all of the SoWWWAnchor nodes in the document object's scene graph and places the path to each node in a list pointed to by m_pAnchorList.CDDQE, (€.€T”A‚S~‚A€ƒ‚ÿBOOL IvfIsOleSrvr(){REÌE) "€¤€”‘€‚A€‚ÿThis method returns TRUE if this application is an OLE server, FALSE otherwise.x@QEDF8 @€€€T”A‚S~‚A€ãÍ\Y‰ƒãþßC˜‰‚ÿstatic SoSeparator*IvfReadAll(SoInput *, CIvfDocument *)ÙÌEG* "€3€”‘€‚A€‚ÿThis method loads the contents of an Open Inventor file. A pointer to the scene graph is returned. The ref count for the returned scene graph is zero.‰WDFG2 4€®€T”A‚S~‚A€ƒãÍ\Y‰‚ÿstatic BOOLIvfSaveSceneGraph(LPCTSTR lpFname, SoSeparator *pRoot, CIvfDocument *)¤{G4H) "€ö€”‘€‚A€‚ÿThis method saves the scene graph pointed to by pRoot in the file specified by lpFname. If successful, TRUE is returned.~LG²H2 4€˜€T”A‚S~‚A€ãÍ\Y‰ƒ‚ÿstatic SoSeparator *IvfLoadSceneGraph(LPCTSTR lpFname, CIvfDocument *)ßµ4H‘I* "€k€”‘€‚A€‚ÿThis method loads the file specified by lpFname, and returns a pointer to the scene graph. The ref count for the returned scene graph is zero. Null is returned if the load fails.„R²HJ2 4€¤€T”A‚S~‚A€ƒãÍ\Y‰‚ÿstatic BOOLIvfSaveSceneGraph(UINT hFile, SoSeparator *pRoot, CIvfDocument *)¢y‘I·J) "€ò€”‘€‚A€‚ÿThis method saves the scene graph pointed to by pRoot in the file specified by hFile. If successful, TRUE is returned.yGJ0K2 4€Ž€T”A‚S~‚A€ãÍ\Y‰ƒ‚ÿstatic SoSeparator *IvfLoadSceneGraph(UINT hFile, CIvfDocument *)ßµ·JL* "€k€”‘€‚A€‚ÿThis method loads the file specified by lpFname, and returns a pointer to the scene graph. The ref count for the returned scene graph is zero. Null is returned if the load fails.ŒZ0K›L2 4€´€T”A‚S~‚A€ƒãÍ\Y‰‚ÿstatic BOOLIvfSaveSceneGraph(CArchive &rArchive, SoSeparator *pRoot, CIvfDocument *)¨LCM) "€þ€”‘€‚A€‚ÿThis method saves the scene graph pointed to by pRoot in the archive specified by rArchive. If successful, TRUE is returned.O›LÄM2 4€ž€T”A‚S~‚A€ãÍ\Y‰ƒ‚ÿstatic SoSeparator *IvfLoadSceneGraph(CArchive &rArchive, CIvfDocument *)ç½CM«N* "€{€”‘€‚A€‚ÿThis method loads from the archive specified by lpFname, and returns a pointer to the scene graph. The ref count for the returned scene graph is zero. Null is returned if the load fails.Q%ÄMüN, (€J€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfDeleteSceneGraph()kB«NgO) "€„€”‘€‚A€‚ÿThis method deletes the scene graph pointed to by m_pSceneRoot.R&üN¹O, (€L€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfSceneGraphChanged()rIgO7€) "€’€”‘€‚A€‚ÿThis method notifies the view¹O7€’Ì object that the scene graph has changed.e9¹Oœ€, (€r€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfOnLocationChanged(const char *urlName) â7€¨* "€Å€”‘€‚A€‚ÿThis method is invoked by IvfOnLoadUrlMessage to indicate that the location has changed. An VRML viewer application can use this method to update the location display. The default implementation of this method does nothing.—iœ€?‚. ,€Ò€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidIvfOnUpdateViewpoints(CCmdUI* pCmdUI)virtual voidIvfRemoveViewpointMenu(CCmdUI* pCmdUI)yP¨¸‚) "€ €”‘€‚A€‚ÿThis method is invoked by IvfOnCmdMsg to handle update of the viewpoint menu.L ?‚ƒ, (€@€T”A‚S~‚A€ƒ‚ÿBOOLIdleProcessInlines(void)e<¸‚iƒ) "€x€”‘€‚A€‚ÿCalled by application OnIdle to process the inline queue.a5ƒʃ, (€j€T”A‚S~‚A€ƒ‚ÿstatic BOOLIvfIsInventorFile(LPCSTR lpszFileName)tKiƒ>„) "€–€”‘€‚A€‚ÿThis method returns TRUE if the named file is a valid Open Inventor filetFʃ²„. ,€Œ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidIvfSetFileType(IVF_FILETYPE)IVF_FILETYPEIvfGetFileType(void)`7>„…) "€n€”‘€‚A€‚ÿUsed to determine which format to use in next write.‘W²„£…: D€®€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ÿvirtual voidIvfSetBgColor(const SbColor &)virtual SbColor&IvfGetBgColor(void)I …ì…) "€@€”‘€‚A€‚ÿSet and get background color.Q%£…=†, (€J€T”A‚S~‚A€ƒ‚ÿBOOLIvfPreTranslateMessage(MSG *)®‚ì…ë†, &€€”‘€‚A€‚ÿThis message processes thread specific messagesInlineQueue messages (WMIVF_PROCPENDINGINLINE)LoadUrl messages (WMIVF_LOADURL)<=†'‡& €,€‚A€‚ÿMETHODS (Protected)c1놊‡2 4€b€T”A‚S~‚A€ƒã«]à—‰‚ÿvirtual voidIvfRemoveCameras(SoGroup *root)í'‡¡ˆ* "€Û€”‘€‚A€‚ÿThis method is invoked from IvfSceneGraphChanged. It removes all of the cameras contained in the document object's scene graph. The cameras are placed in a list pointed to by m_pCamList. Each of the cameras in the list are referenced.d2Š‡‰2 4€d€T”A‚S~‚A€ƒã«]à—‰‚ÿvirtual voidIvfRestoreCameras(SoGroup *root)|S¡ˆ‰) "€¦€”‘€‚A€‚ÿThis method restores the cameras removed from the document object's scene graph.Q%‰Ò‰, (€J€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfDeleteCameraList()¥|‰wŠ) "€ø€”‘€‚A€‚ÿThis method destroys the camera list pointed to by m_pCamList. All of the cameras contained in the list are unreferenced.d8Ò‰ÛŠ, (€p€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfOnLoadUrlMessage(const char *urlName)i?wŠDŒ* "€€”‘€‚A€‚ÿThis method is invoked when it receives the WMIVF_LOADURL registered message. If urlName points to a local file, The default implementation replaces the document's scene graph with the contents of the file. If urlName does not refer to a local file, the url is referred to a Url retrieval mechanism (currently none).V*ÛŠšŒ, (€T€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfSetupUrlFetchCallback()ѧDŒkŽ* "€O€”‘€‚A€‚ÿThis method sets up the mechanism to trigger IvfOnFetchUrl each time the user clicks the left mouse button while the cursor is placed over an SoWWWAnchor node. This mechanism is put in place only if m_nEnableUrlFetch is TRUE. This method calls SoWWWAnchor::setFetchURLCallBack to set the URL fetch callback to IvfStaticFetchUrlCB. An application should overload this method if a different URL fetch mechanism is desired.W+šŒÂŽ, (€V€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfRemoveUrlFetchCallback()d;kŽ&) "€v€”‘€‚A€‚ÿThis method disables IVF's URL fetch callback mechanism.^2ÂŽ„, (€d€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfOnFetchUrl(const char *urlName)¿•&OÁ* "€+€”‘€‚A€‚ÿIf m_nEnableUrlFetch is TRUE and m_nEnableSelection is FALSE, this method is invo„OÁ’Ìked when a user clicks the mouse button while the cursor is placed over an SoWWWAnchorNode (or one of its children). When invoked, this method posts the WMIVF_LOADURL registered message to the application frame window. wparam is set to 0, and lparam contains a pointer to a null terminated string containing the URL name.]„ÞÁ2 4€º€T”A‚S~‚A€ƒãXíʉ‚ÿstatic voidIvfStaticFetchUrlCB( const SbString &url, void *userData, SoWWWAnchor *node)Ò¨OÁ°Â* "€Q€”‘€‚A€‚ÿThis method is invoked by SoWWWAnchor when the user clicks on a URL. If m_nEnableUrlFetch is TRUE and m_nEnableSelection is FALSE, this method invokes IvfOnFetchUrl.ø½ÞÁ¨Ã; D€{€T”A‚S~‚A€ƒãXíʉ‚ƒãXíʉ‚ÿstatic voidIvfStaticFetchInlineUrlCB(const SbString &url, void *userData, SoWWWInline *node)static BOOLIvfStaticFetchTexture2UrlCB(const SbString &url, void *userData, void *node)mD°ÂÄ) "€ˆ€”‘€‚A€‚ÿSame as above, except for SoWWWInline (when inline is traversed).d8¨ÃyÄ, (€p€T”A‚S~‚A€ƒ‚ÿBOOLIsPendingInline(char *in_url, char *in_filename)ÜÄÅ* "€¹€”‘€‚A€‚ÿThis method is called by the file retrieval layer to check if retrieved file is an inline or not. Processes if in the queue. Returns: TRUE if file was processed as an inline: nothing more should be done with the file.TyÄÓÆ= H€/€T”A‚S~‚A€ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒ‚ÿvoidOnProcessPendingInline(WPARAM, LPARAM)voidProcessPendingTexture2(CInlineItem *, BOOL)voidPostInlineLocation(SoNode *, char *, void *)voidSetBaseUrlPath(const char *b_path)const char *GetBaseUrlPath(void)char *MakeFullUrlPath(char *out_url, const char *in_url)a8Å4Ç) "€p€”‘€‚A€‚ÿCalled to process the WMIVF_PROCPENDINGINLINE message­}ÓÆáÇ0 0€ú€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿBOOLIsOKFile(char *filename)BOOLMakeScratchName(char *new_path, char *filename)voidCleanupScratchFile(char *filename)C4Ç$È) "€4€”‘€‚A€‚ÿScratch file managementU#áÇyÈ2 4€F€T”A‚S~‚Aã«]à—€‰ƒ‚ÿSoGroup*m_pDefaultCameraGroupY/$ÈÒÉ* "€_€”‘€‚A€‚ÿDo NOT expect this to hang around. This is used as very very temporary storage internally to save the default camera group between ::IvfRestoreCameras and ::IvfRemoveCameras. allows us to keep the definition for restoration even though it isn't being stored with the scene graph (!Embedded condition)¹†yÈ‹Ê3 4€ €T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿchar *FileToURL(char *, const char *)char *URLToFile(char *, const char *)BOOLIsFileURL(const char *)BOOLIsURL(const char *)_6ÒÉêÊ) "€l€”‘€‚A€‚ÿGlobal utilities to handle URL/ conversions/queriesE‹Ê/Ë& €>€‚A€‚ÿMEMBER VARIABLES (Protected)IêÊxË, (€:€T”A‚S~‚A€ƒ‚ÿSoSeparator *m_pSceneRootR)/ËÊË) "€R€”‘€‚A€‚ÿPointer to the root of the scene graphKxËÌ, (€>€T”A‚S~‚A€ƒ‚ÿIVFDOC_OPEN_ENUMm_eOpenType7ÊËLÌ) "€€”‘€‚A€‚ÿNo comment.YÌÛÌ6 <€²€T”A‚S~‚A€ƒ‚ã«]à—‰ƒ‚ƒ‚ÿSoSwitch*m_pCameraSwitchSoGroup*m_pCameraSwitchParentSoInfo*m_pCameraSwitchInfoc:LÌ>Í) "€t€”‘€‚A€‚ÿThese contain info about any contained camera switches.KÛ̉Í2 4€2€T”A‚S~‚AãK2Å'€‰ƒ‚ÿSbPList *m_pCamListjA>ÍóÍ) "€‚€”‘€‚A€‚ÿPointer to a list of the cameras removed from the scene graph.Q‰ÍDÎ2 4€>€T”A‚S~‚AãK2Å'€‰ƒ‚ÿSbPList *m_pCamParentList|SóÍÀÎ) "€¦€”‘€‚A€‚ÿPointer to the parent of each camera in m_pCamList. Used to restore the cameras.DDÎÏ, (€0€T”A‚S~‚A€ƒ‚ÿintm_nActiveCameraIXFÀÎJÏ) "€:€”‘€‚A€‚ÿIndex to the active cameraLÏ–Ï2 4€4€T”A‚S~‚AãK2Å'€‰ƒ‚ÿSbPList *m_pInfoListœsJÏ>) "€æ€”‘€‚A€‚ÿPointer to info nodes used as place holders in the scene graph t–Ï>’Ìo mark the location we removed the cameras from.Q–Ï2 4€>€T”A‚S~‚Aãç2ø¡€‰ƒ‚ÿSoPathList *m_pAnchorListoF>þ) "€Œ€”‘€‚A€‚ÿA list of paths to all of the SoWWWAnchor nodes in the scene graph.PN2 4€<€T”A‚S~‚AãÚV9€‰ƒ‚ÿSoInfo *m_pBackColorInfoGþ•) "€<€”‘€‚A€‚ÿSaved background color nodeENÚ, (€2€T”A‚S~‚A€ƒ‚ÿBOOLm_nEnableUrlFetchJ!•$) "€B€”‘€‚A€‚ÿFlag that enables url fetchingGÚk, (€6€T”A‚S~‚A€ƒ‚ÿBOOLm_nEnableUrlDisplayS*$¾) "€T€”‘€‚A€‚ÿFlag that enables URL display mechanismGk, (€6€T”A‚S~‚A€ƒ‚ÿBOOLm_nEnableViewpointsP'¾U) "€N€”‘€‚A€‚ÿFlag that enables the viewpoint menuV*«, (€T€T”A‚S~‚A€ƒ‚ÿcharm_urlName[IVF_MAX_URL_NAME_LENGTH]yPU$) "€ €”‘€‚A€‚ÿBuffer used by IvfLoc2Callback to keep track of the the most recent URL name.F«j, (€4€T”A‚S~‚A€ƒ‚ÿIVF_FILETYPEm_fileType_6$É) "€l€”‘€‚A€‚ÿType of file to output. Default is IVF_FILETYPE_IV..j÷& €€‚A€‚ÿENUMSç°ÉÞ7 <€a€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic enum IVF_FILETYPE{IVF_FILETYPE_IV,IVF_FILETYPE_VMRL,IVF_FILETYPE_VRML2}static enum IVFDOC_OPEN_ENUM{IVFDOC_OPEN_NORMAL,IVFDOC_OPEN_LOAD,IVFDOC_OPEN_IMPORT}¢y÷€) "€ò€”‘€‚A€‚ÿThis enum guides the behavior of IvfOnOpenDocumentMessage. It is set by the loading calls OnFileImport and OnFileLoad.1 Þ±& €€‚A€‚ÿSEE ALSOžW€OG ^€®€”‘€‚Aã?\ÇÙ€‰ãÆ9*†‰ãù›¿‰ãŸ\›œ‰ãZ‰DU‰‚ÿCIvfApp, CIvfArchiveInput, CIvfArchiveOutput, CIvfComponent, CIvfMainFrameC±’1^T‡X’ÌùCIvfExaminerViewer:OÌ% €*€ˆˆ€‚ÿCIvfExaminerViewer*’ö# €€€‚ÿNAMEd>ÌZ& €|€”‘€€‚ÿCIvfExaminerViewer - Ivf wrapper for an SoWinExaminerViewer3ö# € €€‚ÿINHERITS FROM-Zº& €€”‘€€‚ÿNone1ë# €€€‚ÿDESCRIPTION‡Zºr - (€µ€”‘€€€€‚ÿThe Examiner viewer component allows you to rotate the view around a point of interest using a virtual trackball. The viewer uses the camera focalDistance field to figure out the point of rotation, which is usually set to be at the center of the scene. In addition to allowing you to rotate the camera around the point of interest, this viewer also allows you to translate the camera in the viewer plane, as well as dolly (move forward and backward) to get closer to or further away from the point of interest. The viewer also supports seek to quickly move the camera to a desired object or point.ШëB ( €Q€”‘€€‚‚ÿSee the SoWinExaminerViewer description for additional information.Note: Although the class name is CIvfExaminerViewer, the header file name is IvfExaminerViewer.h.- r o # €€€‚ÿMETHODSDB ³ , (€0€T”A‚S~‚A€ƒ‚ÿCIvfExaminerViewer()7o ê ) "€€”‘€‚A€‚ÿConstructor’d³ | . ,€È€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidIvfCreateComponent(CWnd *pWnd, void *pCreateArgs)virtual voidIvfDestroyComponent()Gê à ) "€<€”‘€‚A€‚ÿOverload component creation<| ÿ & €,€‚A€‚ÿMETHODS (Protected)L à K, (€@€T”A‚S~‚A€ƒ‚ÿvirtual~CIvfExaminerViewer()6 ÿ ) "€€”‘€‚A€‚ÿDestructor1 K²& €€‚A€‚ÿSEE ALSOGù/ .€0€”‘€‚AãKã€(€‰‚ÿSoWinExaminerViewer> ²71¿„ 7liFCIvfFlyViewer5ùl% € €ˆˆ€‚ÿCIvfFlyViewer*7–# €€€‚ÿNAMEZ4l @& €h€”‘€€‚ÿCIvfFlyViewer - Ivf wrapper for an SoWinFlyViewer– @ù3–?@# € €€‚ÿINHERITS FROM- @l@& €€”‘€€‚ÿNone1?@@# €€€‚ÿDESCRIPTIONa9l@þB( €s€”‘€€‚‚ÿFly Viewer - this viewer is intended to simulate flight through space, with a constant world up direction. The viewer only constrains the camera to keep the user from flying upside down. No mouse buttons need to be pressed in order to fly. The mouse position is used only for steering, while mouse clicks are used to increase or decrease the viewer speed.The viewer allows you to tilt your head up/down/right/left and move in the direction you are looking (forward or backward). The viewer also supports seek to quickly move the camera to a desired object or point.Á™@¿C( €3€”‘€€‚‚ÿSee the SoWinFlyViewer description for additional information.Note: Although the class name is CIvfFlyViewer, the header file name is IvfFlyViewer.h.- þBìC# €€€‚ÿMETHODS?¿C+D, (€&€T”A‚S~‚A€ƒ‚ÿCIvfFlyViewer()7ìCbD) "€€”‘€‚A€‚ÿConstructor“e+DõD. ,€Ê€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidIvfCreateComponent(CWnd *pWnd, void *pCreateArgs)virtual void IvfDestroyComponent()GbD 'F§F1 X¤ §FÜF¸CIvfMainFrame5iFÜF% € €ˆˆ€‚ÿCIvfMainFrame*§FG# €€€‚ÿNAME`:ÜFfG& €t€”‘€€‚ÿCIvfMainFrame - interface of the IVF frame window class3G™G# € €€‚ÿINHERITS FROM-fGÆG& €€”‘€€‚ÿNone1™G÷G# €€€‚ÿDESCRIPTIONШÆGÇH( €Q€”‘€€‚‚ÿThis class provides methods to process messages directed to the frame window.Note: Although the class name is CIvfMainFrame, the header file name is IvfMainFrame.h.9÷GI# €,€€‚ÿMETHODS (Protected)Z,ÇHZI. ,€X€T”A‚S~‚A€ƒ‚ƒ‚ÿCIvfMainFrame()virtual~CIvfMainFrame()GI¡I) "€<€”‘€‚A€‚ÿConstructor and destructor.9ZIÚI& €&€‚A€‚ÿMETHODS (Public)S'¡I-J, (€N€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfOnCreate(CWnd *pWnd)§~ÚIÔJ) "€ü€”‘€‚A€‚ÿThis method is called when the frame window is created. This is where initialization of the SoWin component library occurs.g:-J;K- *€t€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfOnCommand(WPARAM wParam,LPARAM lParam)§~ÔJâK) "€ü€”‘€‚A€‚ÿThis method routes command messages to the IVF viewer class. If the command is processed, TRUE is returned FALSE otherwise.R&;K4L, (€L€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfOnQueryNewPalette()uLâK©L) "€˜€”‘€‚A€‚ÿThis method passes query palette messages to the SoWin component library.`44L M, (€h€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfOnPaletteChanged(CWnd* pFocusWnd)wN©L€M) "€œ€”‘€‚A€‚ÿThis method passes palette changed messages to the SoWin component library.tF MôM. ,€Œ€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfPreCreateWindow(CREATESTRUCT& cs,UINT cx,UINT cy)nE€MbN) "€Š€”‘€‚A€‚ÿThis method sets the initial size of the application frame window.wJôMÙN- *€”€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfOnUpdateFrameTitle(BOOL bAddToTitle,CString &strTitle)Á—bNšO* "€/€”‘€‚A€‚ÿThis method sets the window text for the application frame window. If the window text is set, this method returns TRUE, otherwise FALSE is returned.‡YÙN-€. ,€²€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidIvfSetStatusText(const char *)=0virtual všO-€iFoidIvfSetViewerText(Cstring &)DšOq€) "€6€”‘€‚A€‚ÿSet the status line text/ -€ €& €€‚A€‚ÿMACROSJq€ê€+ &€>€T”A‚S~‚A€‚ÿ#define IVF_MAINFRAME_BASE()1  €& €€‚A€‚ÿSEE ALSOVꀸG ^€¬€”‘€‚Aã?\ÇÙ€‰ãÆ9*†‰ãù›¿‰ãŸ\›œ‰ãê lj‚ÿCIvfApp, CIvfArchiveInput, CIvfArchiveOutput, CIvfComponent, CIvfDocument@ø1„s ø/‚ŽˆCIvfPlaneViewer7¸/‚% €$€ˆˆ€‚ÿCIvfPlaneViewer*øY‚# €€€‚ÿNAME^8/‚·‚& €p€”‘€€‚ÿCIvfPlaneViewer - Ivf wrapper for an SoWinPlaneViewer3Y‚ê‚# € €€‚ÿINHERITS FROM-·‚ƒ& €€”‘€€‚ÿNone1ê‚Hƒ# €€€‚ÿDESCRIPTIONìƒ\…( €Ù€”‘€€‚‚ÿThe Plane viewer component allows the user to translate the camera in the viewing plane, as well as dolly (move foward/backward) and zoom in and out. The viewer also allows the user to roll the camera (rotate around the forward direction) and seek to objects which will specify a new viewing plane. This viewer could be used for modeling, in drafting, and architectural work. The camera can be aligned to the X, Y or Z axes.See the SoWinPlaneViewer description for additional information.„^Hƒà…& €¼€”‘€€‚ÿNote: Although the class name is CIvfPlaneViewer, the header file name is IvfPlaneViewer.h.- \… †# €€€‚ÿMETHODSAà…N†, (€*€T”A‚S~‚A€ƒ‚ÿCIvfPlaneViewer()7 †…†) "€€”‘€‚A€‚ÿConstructor’dN†‡. ,€È€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidIvfCreateComponent(CWnd *pWnd, void *pCreateArgs)virtual voidIvfDestroyComponent()G…†^‡) "€<€”‘€‚A€‚ÿOverload component creation<‡š‡& €,€‚A€‚ÿMETHODS (Protected)I^‡ã‡, (€:€T”A‚S~‚A€ƒ‚ÿvirtual~CIvfPlaneViewer()6 š‡ˆ) "€€”‘€‚A€‚ÿDestructor1 ã‡Jˆ& €€‚A€‚ÿSEE ALSODˆŽˆ/ .€*€”‘€‚Aãîeà€‰‚ÿSoWinPlaneViewer?Jˆ͈1C¤ h‚ ͈‰¼ÆCIvfRenderArea6Žˆ‰% €"€ˆˆ€‚ÿCIvfRenderArea*͈-‰# €€€‚ÿNAME\6‰‰‰& €l€”‘€€‚ÿCIvfRenderArea - Ivf wrapper for an SoWinRenderArea3-‰¼‰# € €€‚ÿINHERITS FROM-‰‰é‰& €€”‘€€‚ÿNone1¼‰Š# €€€‚ÿDESCRIPTION2é‰LŒ- (€ €”‘€€€€‚ÿThis class provides Open Inventor rendering and message handling inside a Windows window. There is a routine to specify the scene to render. The scene is automatically rendered whenever anything under it changes (a data sensor is attached to the root of the scene), unless explicitly told not to do so (manual redraws). Users can also set Open Inventor rendering attributes such as the transparency type, antialiasing on or off, etc. This class employs an SoSceneManager to manage rendering and message handling.•>ŠáW |€}€”‘€€€€€€€€€€€€€€€€€€‚ÿWindows messages that occur in the render area can be handled by the application, by the viewer (if this is really a viewer), or by the nodes in the scene graph. When a message occurs, it is first passed to the application message callback function registered with the setEventCallback() method on SoWinRenderArea. If this function does not exist or returns FALSE, the message is either used directly by the viewer or translated to an SoEvent for further scene graph processing. If the viewer does not handle the message, and an overlay scene graph exists, the SoEvent is sent to that scene graph by way of an SoHandleEventAction. If no node in the overlay scene graph handles the message (i.e., calls setHandled() on the SoHandleEventAction), the SoEvent is passed to the normal scene graph in the same manner.ÄœLŒ±À( €9€á±ÀŽˆ”‘€€‚‚ÿSee the SoWinRenderArea description for additional information.Note: Although the class name is CIvfRenderArea, the header file name is IvfRenderArea.h.- áÞÀ# €€€‚ÿMETHODS@±ÀÁ, (€(€T”A‚S~‚A€ƒ‚ÿCIvfRenderArea()7ÞÀUÁ) "€€”‘€‚A€‚ÿConstructorR&Á§Á, (€L€T”A‚S~‚A€ƒ‚ÿvirtual void IvfDestroyComponent()J!UÁñÁ) "€B€”‘€‚A€‚ÿOverload component destructionR&§ÁCÂ, (€L€T”A‚S~‚A€ƒ‚ÿvoidIvfSpinText(const char *pText)GñÁŠÂ) "€<€”‘€‚A€‚ÿCreate a spinning text logo<CÂÆÂ& €,€‚A€‚ÿMETHODS (Protected)HŠÂÃ, (€8€T”A‚S~‚A€ƒ‚ÿvirtual~CIvfRenderArea()7ÆÂEÃ) "€€”‘€‚A€‚ÿDestructor.EÊÃ& €>€‚A€‚ÿMEMBER VARIABLES (Protected)R EÃÜÃ2 4€@€T”A‚S~‚Aãÿ3È€‰ƒ‚ÿSoWinRenderArea *m_pViewerFŠÃ"Ä) "€:€”‘€‚A€‚ÿPointer to the render areaKÜÃmÄ2 4€2€T”A‚S~‚Aã½V)\€‰ƒ‚ÿSoCamera *m_pCameraA"Ä®Ä) "€0€”‘€‚A€‚ÿPointer to the cameraT"mÄÅ2 4€D€T”A‚S~‚AãÀú€‰ƒ‚ÿSoDirectionalLight *m_pLight@®ÄBÅ) "€.€”‘€‚A€‚ÿPointer to the light/ ÅqÅ& €€‚A€‚ÿMACROSBBųÅ+ &€.€T”A‚S~‚A€‚ÿIVF_COMPONENT_BASE()•lqÅHÆ) "€Ø€”‘€‚A€‚ÿThis macro declares the minimum number of methods necessary to create a class derived from CIvfComponent.1 ³ÅyÆ& €€‚A€‚ÿSEE ALSOCHƼÆ/ .€(€”‘€‚Aãÿ3È€‰‚ÿSoWinRenderArea@yÆüÆ1•s ‹‚ üÆ3ÇþDCIvfSceneViewer7¼Æ3Ç% €$€ˆˆ€‚ÿCIvfSceneViewer*üÆ]Ç# €€€‚ÿNAME[53ǸÇ& €j€”‘€€‚ÿCIvfSceneViewer - Ivf wrapper for an SoSceneViewer3]ÇëÇ# € €€‚ÿINHERITS FROM-¸ÇÈ& €€”‘€€‚ÿNone1ëÇIÈ# €€€‚ÿDESCRIPTION„^ÈÍÈ& €¼€”‘€€‚ÿNote: Although the class name is CIvfSceneViewer, the header file name is IvfSceneViewer.h.+IÈøÈ# €€€‚ÿENUMSèjÍÈàÊ~ Ê€Õ€T”A‚S~‚A€ƒ‚ƒ€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum IvfSvEViewerType{SV_VWR_NONE = -1,SV_VWR_EXAMINER ,SV_VWR_FLY,SV_VWR_WALK,SV_VWR_PLANE,}enum IvfSvEManipMode{SV_NONENoneSV_TRANSFORMERTransformer manipSV_TRACKBALL,Trackball manipSV_HANDLEBOX,Handlebox manipSV_JACK,Jack manipSV_CENTERBALL,Centerball manipSV_XFBOX,TransformBox manipSV_TABBOXTabBox manip}0 øÈË& €€‚A€‚ÿMETHODSAàÊQË, (€*€T”A‚S~‚A€ƒ‚ÿCIvfSceneViewer()7ˈË) "€€”‘€‚A€‚ÿConstructorìµQËtÌ7 <€k€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒƒ‚ƒƒ‚ÿvirtual voidIvfDestroyComponent()virtual voidIvfRemoveManips()virtual voidIvfRestoreManips()IvfSvEManipModeIvfGetCurrManipMode()IvfSvEViewerType IvfGetCurrViewerType()J!ˆË¾Ì) "€B€”‘€‚A€‚ÿOverload component destructionÔtÌÓÎA P€©€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidIvfOnFileInfo()voidIvfOnUpdateFileInfo(CCmdUI* pCmdUI)voidIvfOnFileImport()voidIvfOnUpdateFileImport(CCmdUI* pCmdUI)voidIvfOnViewScreendoortransparency()voidIvfOnUpdateViewScreendoortransparency(CCmdUI* pCmdUI)voidIvfOnViewBlendedtransparency()voidIvfOnUpdateViewBlendedtransparency(CCmdUI* pCmdUI)voidIvfOnViewDelayedblendedtransparency()voidIvfOnUpdateViewDelayedblendedtransparency(CCmdUI* pCmdUI)voidIvfOnViewSortedblendedtransparency()оÌòC T€¡€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidIvfOnUpdateViewSortedblendedtransparency(CCmdUI* pCmdUI)voidIvfOnViewViewselection()voidIvfOnUpdateViewViewselection(CCmdUI* pCmdUI)voidIvfOnViewFog()voidIvfOnUpdateViewFog(CCmdUI* pCmdUI)voidIvfOnViewAntialiasing()voÓÎò¼ÆidIvfOnUpdateViewAntialiasing(CCmdUI* pCmdUI)voidIvfOnViewEditbackgroundcolor()voidIvfOnUpdateViewEditbackgroundcolor(CCmdUI* pCmdUI)voidIvfOnUpdateViewExaminer(CCmdUI* pCmdUI)voidIvfOnViewExaminer()voidIvfOnViewFly()ËÓÎC T€—€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidIvfOnUpdateViewFly(CCmdUI* pCmdUI)voidIvfOnViewPlane()voidIvfOnUpdateViewPlane(CCmdUI* pCmdUI)voidIvfOnViewWalk()voidIvfOnUpdateViewWalk(CCmdUI* pCmdUI)voidIvfOnViewPicedit()voidIvfOnUpdateViewPicedit(CCmdUI* pCmdUI)voidIvfOnSelectionShiftselection()voidIvfOnUpdateSelectionShiftselection(CCmdUI* pCmdUI)voidIvfOnSelectionSingleselection()voidIvfOnUpdateSelectionSingleselection(CCmdUI* pCmdUI)voidIvfOnSelectionToggleselection()ÛòA P€·€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidIvfOnUpdateSelectionToggleselection(CCmdUI* pCmdUI)voidIvfOnEditorsColoreditor()voidIvfOnUpdateEditorsColoreditor(CCmdUI* pCmdUI)voidIvfOnEditorsMaterialeditor()voidIvfOnUpdateEditorsMaterialeditor(CCmdUI* pCmdUI)voidIvfOnEditorsTransformsliders()voidIvfOnUpdateEditorsTransformsliders(CCmdUI* pCmdUI)voidIvfOnManipsCenterball()voidIvfOnUpdateManipsCenterball(CCmdUI* pCmdUI)voidIvfOnManipsHandlebox()voidIvfOnUpdateManipsHandlebox(CCmdUI* pCmdUI)Ï0E X€Ÿ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidIvfOnManipsJack()voidIvfOnUpdateManipsJack(CCmdUI* pCmdUI)voidIvfOnManipsNone()voidIvfOnUpdateManipsNone(CCmdUI* pCmdUI)voidIvfOnManipsReplace()voidIvfOnUpdateManipsReplace(CCmdUI* pCmdUI)voidIvfOnManipsTabbox()voidIvfOnUpdateManipsTabbox(CCmdUI* pCmdUI)voidIvfOnManipsTransformer()voidIvfOnUpdateManipsTransformer(CCmdUI* pCmdUI)voidIvfOnManipsTrackball()voidIvfOnUpdateManipsTrackball(CCmdUI* pCmdUI)voidIvfOnManipsTransformbox()(çX A P€Ï€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidIvfOnUpdateManipsTransformbox(CCmdUI* pCmdUI)voidIvfOnLightsCreatedirlight()voidIvfOnUpdateLightsCreatedirlight(CCmdUI* pCmdUI)voidIvfOnLightsCreatepointlight()voidIvfOnUpdateLightsCreatepointlight(CCmdUI* pCmdUI)voidIvfOnLightsCreatespotlight()voidIvfOnUpdateLightsCreatespotlight(CCmdUI* pCmdUI)voidIvfOnUpdateLightsHideallicons(CCmdUI* pCmdUI)voidIvfOnLightsHideallicons()voidIvfOnLightsAmbientlighting()voidIvfOnUpdateLightsAmbientlighting(CCmdUI* pCmdUI)µx0 = H€ñ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidIvfOnLightsShowallicons()voidIvfOnUpdateLightsShowallicons(CCmdUI* pCmdUI)voidIvfOnLightsTurnalloff()voidIvfOnUpdateLightsTurnalloff(CCmdUI* pCmdUI)voidIvfOnLightsTurnallon()voidIvfOnUpdateLightsTurnallon(CCmdUI* pCmdUI)voidIvfOnUpdateFilePrint(CCmdUI* pCmdUI)voidIvfOnUpdateFilePrintPreview(CCmdUI* pCmdUI)voidIvfOnUpdateFilePrintSetup(CCmdUI* pCmdUI)Z1X g ) "€b€”‘€‚A€‚ÿCIvfSceneViewer specific menu command handlers< £ & €,€‚A€‚ÿMETHODS (Protected)Ig ì , (€:€T”A‚S~‚A€ƒ‚ÿvirtual~CIvfSceneViewer()6 £ " ) "€€”‘€‚A€‚ÿDestructor!Úì CG \€µ€T”A‚S~‚A€ƒãB-9‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual BOOLIvfGetLightName(char *buf, int buflen, SoType lightType, BOOL &modified)virtual voidIvfPrePasteAction()virtual voidIvfPostPasteAction()virtual voidIvfPreCopyAction()virtual voidIvfPostCopyAction()virtual voidIvfPreCutAction()virtual voidIvfOnPaint()virtual BOOLIvfOnUpdateFrameTitle(CString &strTitle)virtual voidIvfOnInitialUpdate(CWnd *pWnd)virtual voidIvfOnDeactivateComponent()virtual voidIvfOnActivateComponent(CView *pView = NULL)¶…" ù1 0€ €T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿvirtual BOOLIvfPreTranslateMessage(MSG *pMsg)virtual BOOLIvfOnCommand(WPARAM wParam, LPARAM lParam)virtual voidIvfOnDestroy()HCA) "€>€”‘€‚A€‚ÿOverloads from CIvfComponent€PùÁ0 0€ €T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿBOOLIvfUpdateWindowText()voidIvfFindTopWindow() voidIvfDrawTopMenuBar() T+A!@) "€V€”‘€‚A€‚ÿCIvfSceneViewer speciÁ!@¼Æfic utility methodsN"Áo@, (€D€T”A‚S~‚A€ƒ‚ÿvirtual BOOLIvfIsSceneViewer()qH!@à@) "€€”‘€‚A€‚ÿThis method queries if the underlying viewer is a SceneViewer or not.wFo@WA1 2€Œ€T”A‚S~‚A€ãÀ"%‰‚ÿstatic void IvfBgColorChangedCB(void *userData, const SbColor *c)Šaà@áA) "€Â€”‘€‚A€‚ÿThis is added to the background color editor to tell us when the background color has changed.EWA&B& €>€‚A€‚ÿMEMBER VARIABLES (Protected)Y0áAB) "€`€”‘€‚A€‚ÿPointer to the SoSceneViewer object we createE&BÄB, (€2€T”A‚S~‚A€ƒ‚ÿSoSceneViewer * m_pSVU,BC) "€X€”‘€‚A€‚ÿCIvfSceneViewer specific member variablesp@ÄB‰C0 0€€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿCstringm_strTitle CWnd *m_pTopWnd intm_nFirstLightMenuId/ C¸C& €€‚A€‚ÿMACROSB‰CúC+ &€.€T”A‚S~‚A€‚ÿIVF_COMPONENT_BASE()”k¸CŽD) "€Ö€”‘€‚A€‚ÿThis macro declares the minimum number of methods necessary to create a class derived from CIvfComponent1 úC¿D& €€‚A€‚ÿSEE ALSO?ŽDþD/ .€ €”‘€‚Aãšvø¹€‰‚ÿSceneViewer?¿D=E1¶h‚ u„ =EsEøHCIvfServerItem6þDsE% €"€ˆˆ€‚ÿCIvfServerItem*=EE# €€€‚ÿNAME7sEÔE& €"€”‘€€‚ÿCIvfServerItem3EF# € €€‚ÿINHERITS FROM-ÔE4F& €€”‘€€‚ÿNone1FeF# €€€‚ÿDESCRIPTIONÍ¥4F2G( €K€”‘€€‚‚ÿParallels the application CServerItem class. Used for OLE server handling.Note: Although the class name is CIvfServerItem, the header file name is IvfSrvrItem.h.- eF_G# €€€‚ÿMETHODSU'2G´G. ,€N€T”A‚S~‚A€ƒ‚ƒ‚ÿCIvfServerItem()~CIvfServerItem()G_GûG) "€<€”‘€‚A€‚ÿConstructor and destructor._3´GZH, (€f€T”A‚S~‚A€ƒ‚ÿBOOLIvfOnDraw(CDC *pDC, int sizePX, int sizePY)žuûGøH) "€ê€”‘€‚A€‚ÿCalled by the client when it wants to draw the metafile. Creates an offscreen renderer and writes to the metafile.> ZH6I1‹‚ =‡ 6IkIBOCIvfStdViewer5øHkI% € €ˆˆ€‚ÿCIvfStdViewer*6I•I# €€€‚ÿNAMEzTkIJ& €¨€”‘€€‚ÿCIvfStdViewer - Ivf wrapper for standard viewers (Examiner, Fly, Plane, and Walk)3•IBJ# € €€‚ÿINHERITS FROM-JoJ& €€”‘€€‚ÿNone1BJ J# €€€‚ÿDESCRIPTIONÃœoJcK' €9€”‘€€‚ÿIntermediate class to collect functionality for standard viewers: Examiner, Walk, Plane, and Fly. This should never be instantiated without one of these.-  JK# €€€‚ÿMETHODS?cKÏK, (€&€T”A‚S~‚A€ƒ‚ÿCIvfStdViewer()7KL) "€€”‘€‚A€‚ÿConstructorQ%ÏKWL, (€J€T”A‚S~‚A€ƒ‚ÿvirtual voidIvfDestroyComponent()J!L¡L) "€B€”‘€‚A€‚ÿOverload component destruction<WLÝL& €,€‚A€‚ÿMETHODS (Protected)G¡L$M, (€6€T”A‚S~‚A€ƒ‚ÿvirtual~CIvfStdViewer()6 ÝLZM) "€€”‘€‚A€‚ÿDestructorE$MŸM& €>€‚A€‚ÿMEMBER VARIABLES (Protected)QZMðM2 4€>€T”A‚S~‚Aã9€õ€‰ƒ‚ÿSoWinFullViewer*m_pViewerL#ŸMé·€‰‚ÿ€€”‚ÿÿÿManipsHigh level manipulation objects attaching draggers to part of the scene graph|3»‹ÚŒI#b€f¨ $€€”ã3xõ€‰‚ÿ€€”‚ÿÿÿNodekitsGroup nodes into a useful collection—N^ŒqI#b€œ¨ $€€”ã©0C€‰‚ÿ€€”‚ÿÿÿNodesPart of a scene graph (e.g., shape, light, camera, transformation)‹BÚŒüI#b€„¨ $€€”ãÛ·M€‰‚ÿ€€”‚ÿÿÿProjectorsConvert from window coordinates to 3D coordinates˜Oq”ŽI#b€ž¨ $€€”ãI ¯A€‰‚ÿ€€”‚ÿÿÿSensorsRespond to data changes in the scene graph or the passing of timeo&üI#b€L¨ $€€”ãq'倉‚ÿ€ €”‚ÿÿÿSimplifiersGeometry simplifiersf”ŽiI#b€:¨ $€€”ã¦@ý€‰‚ÿ€€”‚ÿÿÿVRML 2.0VRML 2.0 nodes^ÇC#V€6¨ €€”€‚ÿ€2€”‚ÿÿÿ----------------------Ïfi¢Ài#¢€Ì¨ €€”ÿ*€€Ç¢À5†”‚ÅãÕA±€‰‚ÿ€&€”‚Åÿ€(€”‚ÿÿÿSoWin ClassesIncludes components, devices, stereo, and viewers for use in a Win32 environment©`ÇKÁI#b€À¨ $€€”ã1éjœ€‰‚ÿ€"€”‚ÿÿÿSoXt ClassesIncludes components, devices, and viewers for use in a Unix/Motif environment&¢ÀqÁ# €€€‚ÿDKÁµÁ1ýùƒë‡ÏµÁðÁ‚Collision Detection;qÁðÁ% €,€ˆˆ€‚ÿCollision Detectionä¼µÁÔÃ( €y€”‘€€‚‚ÿOpen Inventor 2.4 (and above) supports collision detection. It is now possible to manage objects and camera transformations to prevent objects from passing through (intersecting) one another. Walls are really walls: you can avoid walking through them. Solid objects are really solid: you can avoid having two of them occupy the same space at the same time. Three new classes are provided to support detection of collisions in Open Inventor.@ðÁÄ# €:€€‚ÿViewer Collision Detection€GÔÔÆ9 @€€”‘€€€ãÃè9‰€€€‚ÿThis method prevents the camera from going through walls or floors, making viewer manipulation much more comfortable and realistic. To use this class, first create a standard viewer and then an SoWinCollisionViewer for this viewer. Collision detection will be activated immediately. The minimum distance between the camera and the object can be tuned. A user callback function can be set to receive notification when a collision is detected. See SoWinCollisionViewer for more information. A program demonstrates how to use this class: %OIVHOME%/src/TGSdemos/Collision/Viewer7ÄËÆ# €(€€‚ÿCollision Manager㼔ƮÉ' €y€”‘€€‚ÿThis class is useful for monitoring the transformations of an object relative to a scene graph. It can prevent this object from colliding with other shapes in the scene, or it can glue the object to the surface of the shapes it is colliding with, or it can just call a user callback function. The gluing process tries to find the closest position where the objects do not collide. The number of positions to try can be tuned. Collision detection can be computed only on bounding boxes for the object or for all of the shapes in the scene. When a bounding box collision occurs between two shapes, a user filter function is called. This function can stop the detection process for these two shapes. MËÆûÌ3 4€5€”‘€€ã˃€‰€‚ÿThe second step of the collision detection mechanism consists of comparing each triangle of both shapes. If a triangle collision is found, the collision manager calls the user callbacks. Each callback can inform the manager if it is interested in the next collision report for the current transformation. It can be informed of the collision for the next graphic primitive (e.g. triangle or line segment) or only for the next shape or it can just say that it is not interested in the next collision reports for the current transformation. Collisions are detected even if objects are not visible or pickable. See SoCollisionManager for more information. Two programs demonstrate how to use this class: %OIVHOME%/src/TGSdemos/Collision/Dart and %OIVHOME%/src/TGSdemos/Collision/ObjectMovingC ®É>Í# €@€€‚ÿIntersection Detection Action8ûÌ‚4 6€ €”‘€€‚ãæxpö€‰€‚ÿThis class is an Open Inventor action. It allows programmers to analyze a complete scene graph to detect intersection between shapes. The action first detects intersection between bounding boxes. If an intersection exists between two shapes, the action calls a user filter function. This function can stop the collision detection process for these two shapes. The second step of the intersection detection mechanism consists of comparing each triangle of both shapes. If a triangle collision is found, the action calls the user callbacks. Each callback is able to inform the action if it is interested in the next collision report. It can be informed o>Í‚qÁf the intersection for the next graphic primitive or only for the next shape or it can just say that it is not interested in the next intersection. Intersections are detected even if objects are not visible or pickable. See SoIntersectionDetectionAction for more information. A program demonstrates how to use this class: %OIVHOME%/src/TGSdemos/Collision/Intersection 9>Í»1~ ÿÿÿÿÿÿÿÿ»ë8 Contents0 ‚ë% €€ˆˆ€‚ÿContents'»$ €€”€‚ÿ†=ë˜I#b€zð $€€”ãQïEÇ€‰‚ÿ€,€”‚ÿÿÿInventor OverviewA brief introduction to Open InventorŒC$I#b€†ð $€€”ã…a”U€‰‚ÿ€(€”‚ÿÿÿTGS InnovationsCustom features added to Open Inventor by TGSu,˜™I#b€Xð $€€”ã·Ò €‰‚ÿ€&€”‚ÿÿÿWin32 FeaturesWin32-specific featuresx/$I#b€^ð $€€”ã¡XÀ €‰‚ÿ€$€”‚ÿÿÿDocumentationOpen Inventor documentation`™qI#b€.ð $€€”ã_/€‰‚ÿ€€”‚ÿÿÿVRMLVRML support‹BüI#b€„ð $€€”ã5ëlÜ€‰‚ÿ€"€”‚ÿÿÿLMV OverviewIntroduction to LMV (Large Model Visualization)~5qzI#b€jð $€€”ãF¬›€‰‚ÿ€0€”‚ÿÿÿCollision DetectionCollision detection supportƒ:üýI#b€tð $€€”ã19 ·€‰‚ÿ€p€”‚ÿÿÿUsing a Spaceball or Space Mouse with Open Inventorbz_I#b€2ð $€€”ã°¦-€‰‚ÿ€€”‚ÿÿÿDemosDemo programseýÄI#b€8ð $€€”ão|€‰‚ÿ€€”‚ÿÿÿToolsUtility programsŠA_NI#b€‚ð $€€”ãh$ÿ€‰‚ÿ€0€”‚ÿÿÿScene Viewer Intro A brief introduction to the SceneViewereijI#b€8ð $€€”ã!§˜m€‰‚ÿ€4€”‚ÿÿÿEnvironment Variables\NI#b€&ð $€€”ã1Á·v€‰‚ÿ€"€”‚ÿÿÿLocalizationH³WC#V€ ð €€”€‚ÿ€€”‚ÿÿÿz1ÑI#b€bð $€€”㎤Ù‚ÿ€4€”‚ÿÿÿOpen Inventor ClassesOpen Inventor classesHW C#V€ ð €€”€‚ÿ€€”‚ÿÿÿ‡>Ñ  I#b€|ð $€€”ã8f’ù€‰‚ÿ€$€”‚ÿÿÿIVF AppWizardYour Open Inventor MFC application builderØŽ x J#b€ð $€€”ã"ü‘耉‚ÿ€ €”‚ÿÿÿIVF ClassesA set of classes which integrate Open Inventor with the Microsoft Foundation Classes (MFC) application development frameworkH  À C#V€ ð €€”€‚ÿ€€”‚ÿÿÿ8x A I#b€pð $€€”ãë8•ù€‰‚ÿ€,€”‚ÿÿÿTechnical SupportHow to contact technical supporto&À ° I#b€Lð $€€”ã— i€‰‚ÿ€€”‚ÿÿÿAbout TGSBrief company overviewbA  I#b€2ð $€€”ã+¤ €€‰‚ÿ€€”‚ÿÿÿCopyrightCopyright&° 8 # €€€‚ÿ:  r 1 ÿÿÿÿr £ °CCopyright1 8 £ % €€ˆˆ€‚ÿCopyrightÓ­r v& €[€€‚‚‚ÿThis manual has been prepared for Template Graphics Software, Inc.(TGS™) licensees solely for use in connection with software supplied by TGS and is furnished under a written license agreement. This material may not be used, reproduced or disclosed, in whole or in part, except as permitted in the license agreement or by prior written authorization of TGS.Users are cautioned that TGS reserves the right to make changes without notice to the specifications and materials contained herein and shall not be responsible for any damages (including consequential) caused by reliance on the materials presented, including but not limited to typographical, arithmetic or listing errors.%ö£ §B/ ,€í€€‚‚‚‚‚€€‚ÿLiveWork, 3Space, Amapi, Active3D, 3D-MasterSuite and the TGS logo are trademarks of Tempv§B8 late Graphics Software, Inc. TEMPLATE is a registered trademark of Template Graphics Software, Inc.OpenGL is a registered trademark of Silicon Graphics, Inc. Open Inventor is a trademark of Silicon Graphics, Inc. Restricted Rights Legend Use, duplication, or disclosure by the Government of Software or related Documentation is subject to restrictions as set forth in subparagraph (c)(1) of the Commercial Computer Software - Restricted Rights clause at FAR 52.227-19 or subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 52.227-7013. Contractor/Manufacturer is Template Graphics Software, Inc., San Diego, CA 92121. ßv°C* "€¿€€‚‚‚‚‚‚‚ÿCopyright © 1985-2000Template Graphics Software, Inc.5330 Carroll Canyon Road, Suite 201San Diego, CA 92121Printed in U.S.A. All Rights ReservedConfidential, Unpublished Property of Template Graphics Software, Inc.6§BæC1ë‡Ï3–æCD|FDemos8°CD% €&€ˆˆ€‚ÿDemos (SDK Only)'æCED$ €€”€‚ÿGDÕDI#b€ŽÏê $€€”ãD‹{I€‰‚ÿ€*€”‚ÿÿÿLargeModelViewerDemonstrates adaptive viewing and simplificationgED˜K¾LI#b€|Êî $€€”㢽?·€‰‚ÿ€"€”‚ÿÿÿSoTextDetailStores detail information about a text node'7LåL$ €€”€‚ÿ9¾LM1ä Ë MNM%ŒDraggers0 åLNM% €€ˆˆ€‚ÿDraggers'MuM$ €€”€‚ÿ£ZNMNI#b€´Ú $€€”ãÌrŠâ€‰‚ÿ€0€”‚ÿÿÿSoCenterballDraggerStriped ball you rotate and re-center by dragging with the mouse­duMÅNI#b€ÈÚ $€€”ã†ë€‰‚ÿ€<€”‚ÿÿÿSoDirectionalLightDraggerDirectional icon you rotate and translate by dragging with the mouse›RN`OI#b€¤Ú $€€”ãLº¿€‰‚ÿ€.€”‚ÿÿÿSoDragPointDraggerObject you can translate in 3D by dragging with the mouse©`ÅN€I#b€ÀÚ $€€”ãÈï?†€‰‚ÿ€€”‚ÿÿÿSoDraggerBase class for nodekits that move in response to click-drag-release mouse`O€åL events¥\`Oº€I#b€¸Ú $€€”ã¢b€‰‚ÿ€.€”‚ÿÿÿSoHandleBoxDraggerBox you can scale, stretch and translate by dragging with the mouseªa€dI#b€ÂÚ $€€”ã±—o›€‰‚ÿ€$€”‚ÿÿÿSoJackDraggerJack-shaped object you rotate, translate, or scale by dragging with the mouse¥\º€ ‚I#b€¸Ú $€€”ãz"À‰‚ÿ€0€”‚ÿÿÿSoPointLightDraggerSun-shaped icon you can translate in 3D by dragging with the mouse²id»‚I#b€ÒÚ $€€”ã%Ô§€‰‚ÿ€>€”‚ÿÿÿSoRotateCylindricalDraggerObject you rotate along a cylindrical surface by dragging with the mouseŸV ‚ZƒI#b€¬Ú $€€”ãŒÝ߀‰‚ÿ€0€”‚ÿÿÿSoRotateDiscDraggerObject you can rotate like a knob by dragging with the mouse²i»‚ „I#b€ÒÚ $€€”ã&M°¢€‰‚ÿ€:€”‚ÿÿÿSoRotateSphericalDraggerObject you can rotate about a spherical surface by dragging with the mouseŸVZƒ«„I#b€¬Ú $€€”ãY#怉‚ÿ€(€”‚ÿÿÿSoScale1DraggerObject you can scale in one dimension by dragging with the mouse W „K…I#b€®Ú $€€”ãüÚÉ/€‰‚ÿ€(€”‚ÿÿÿSoScale2DraggerObject you can scale in two dimensions by dragging with the mouse±h«„ü…I#b€ÐÚ $€€”ã˜uPö€‰‚ÿ€6€”‚ÿÿÿSoScale2UniformDraggerObject you can scale uniformly in two dimensions by dragging with the mouse¤[K… †I#b€¶Ú $€€”ã̙耉‚ÿ€4€”‚ÿÿÿSoScaleUniformDraggerObject you can scale uniformly in 3D by dragging with the mouse¿vü…_‡I#b€ìÚ $€€”ãÀsm€‰‚ÿ€.€”‚ÿÿÿSoSpotLightDraggerSpotlight shaped dragger that allows you to change position, direction, and width of the beam¢Y †ˆI#b€²Ú $€€”ãNØd>€‰‚ÿ€(€”‚ÿÿÿSoTabBoxDraggerCubic object you can translate and scale by dragging with the mouse¬c_‡­ˆI#b€ÆÚ $€€”ãÈÁY€‰‚ÿ€,€”‚ÿÿÿSoTabPlaneDraggerObject you can translate or scale within a plane by dragging with the mouse«bˆX‰I#b€ÄÚ $€€”ãÂmG €‰‚ÿ€.€”‚ÿÿÿSoTrackballDraggerStriped ball you can rotate or scale uniformly by dragging with the mouse°g­ˆŠI#b€ÎÚ $€€”ã¡è˜*€‰‚ÿ€4€”‚ÿÿÿSoTransformBoxDraggerBox-like object you scale, rotate, and translate by dragging with the mouse¯fX‰·ŠI#b€ÌÚ $€€”ãw`Ëꀉ‚ÿ€2€”‚ÿÿÿSoTransformerDraggerBox-like object you scale, rotate, and translate by dragging with the mouse£ZŠZ‹I#b€´Ú $€€”ã E€‰‚ÿ€0€”‚ÿÿÿSoTranslate1DraggerObject you can translate along a line by dragging with the mouse¥\·Šÿ‹I#b€¸Ú $€€”ã¬õ´Ž€‰‚ÿ€0€”‚ÿÿÿSoTranslate2DraggerObject you can translate within a plane by dragging with the mouse&Z‹%Œ# €€€‚ÿ8ÿ‹]Œ1Ÿ΄ Õ„]ŒŒŒäÎEngines/ %ŒŒŒ% €€ˆˆ€‚ÿEngines']Œ³Œ$ €€”€‚ÿz1ŒŒ-I#b€bÕ $€€”ã}žb뀉‚ÿ€(€”‚ÿÿÿSoBoolOperationPerforms Boolean operationsx/³Œ¥I#b€^Õ $€€”ã"r™€‰‚ÿ€"€”‚ÿÿÿSoCalculatorA general-purpose calculator6-$ŽI#b€lÕ $€€”ãÓßÒz€‰‚ÿ€(€”‚ÿÿÿSoComposeMatrixComposes a transformation matrixF¥³ŽI#b€ŒÕ $€€”ãtÌß$€‰‚ÿ€,€”‚ÿÿÿSoComposeRotationComposes a rotation from axis and angle values¤[$ŽWI#b€¶Õ $€€”ã•œŒð€‰‚ÿ€8€”‚ÿÿÿSoComposeRotationFromToComposes a rotation that rotates from one vector into anotherŒC³Ž ÀI#b€†Õ $€€”ãÚ8£€‰‚ÿ€&€”‚ÿÿÿSoComposeVec2fComposes 2D vectors from floating-point valuesW À%ŒŒCW˜ÀI#b€†Õ $€€”ã9£€‰‚ÿ€&€”‚ÿÿÿSoComposeVec3fComposes 3D vectors from floating-point valuesŒC À$ÁI#b€†Õ $€€”ã09£€‰‚ÿ€&€”‚ÿÿÿSoComposeVec4fComposes 4D vectors from floating-point values™P˜À½ÁI#b€ Õ $€€”ãKS€‰‚ÿ€2€”‚ÿÿÿSoComputeBoundingBoxComputes the bounding box and center of a scene graph•L$ÁRÂI#b€˜Õ $€€”ãÕŒy$€‰‚ÿ€$€”‚ÿÿÿSoConcatenateJoins separate fields into a single multiple-value fieldr)½ÁÄÂI#b€RÕ $€€”ãìEJ÷€‰‚ÿ€€”‚ÿÿÿSoCounterTriggered integer counterµlRÂyÃI#b€ØÕ $€€”ã~\ü€‰‚ÿ€,€”‚ÿÿÿSoDecomposeMatrixDecomposes transformation matrices into values for translation, rotation, and scale }4ÄÂöÃI#b€hÕ $€€”ã‡;…E€‰‚ÿ€0€”‚ÿÿÿSoDecomposeRotationDecomposes rotation valuesGyÆÄI#b€ŽÕ $€€”ã[îD€‰‚ÿ€*€”‚ÿÿÿSoDecomposeVec2fDecomposes 2D vectors into floating-point valuesGöÃÅI#b€ŽÕ $€€”ã†îD€‰‚ÿ€*€”‚ÿÿÿSoDecomposeVec3fDecomposes 3D vectors into floating-point valuesG†Ä¦ÅI#b€ŽÕ $€€”ã±îD€‰‚ÿ€*€”‚ÿÿÿSoDecomposeVec4fDecomposes 4D vectors into floating-point values{2Å!ÆI#b€dÕ $€€”ãIR~Ó€‰‚ÿ€$€”‚ÿÿÿSoElapsedTimeBasic controllable time sourcer)¦Å“ÆI#b€RÕ $€€”ãú­Np€‰‚ÿ€€”‚ÿÿÿSoEngineBase class for all enginesƒ:!ÆÇI#b€tÕ $€€”ã„Ü倉‚ÿ€"€”‚ÿÿÿSoEngineListMaintains a list of pointers to enginesz1“ÆÇI#b€bÕ $€€”ãë\¼N€‰‚ÿ€&€”‚ÿÿÿSoEngineOutputClass for all engine outputsFÇÈI#b€ŒÕ $€€”ã%Y7€‰‚ÿ€.€”‚ÿÿÿSoEngineOutputListMaintains a list of pointers to engine output€7ÇŸÈI#b€nÕ $€€”ãŽ9€‰‚ÿ€€”‚ÿÿÿSoGateSelectively copies its input to its output„;È#ÉI#b€vÕ $€€”ã}9;怉‚ÿ€$€”‚ÿÿÿSoInterpolateBase class for all interpolator engines„;ŸÈ§ÉI#b€vÕ $€€”ãƒÀÖ€‰‚ÿ€.€”‚ÿÿÿSoInterpolateFloatInterpolates floating-point values8#É(ÊI#b€pÕ $€€”ãWÃy€‰‚ÿ€4€”‚ÿÿÿSoInterpolateRotationInterpolates rotation valuesˆ?§É°ÊI#b€~Õ $€€”ãKWúÙ€‰‚ÿ€.€”‚ÿÿÿSoInterpolateVec2fInterpolates 2D floating-point vectorsˆ?(Ê8ËI#b€~Õ $€€”ãvWúÙ€‰‚ÿ€.€”‚ÿÿÿSoInterpolateVec3fInterpolates 3D floating-point vectorsˆ?°ÊÀËI#b€~Õ $€€”ã¡WúÙ€‰‚ÿ€.€”‚ÿÿÿSoInterpolateVec4fInterpolates 4D floating-point vectors€78Ë@ÌI#b€nÕ $€€”ãXÖ|™€‰‚ÿ€€”‚ÿÿÿSoOnOffEngine that functions as an on/off switch…<ÀËÅÌI#b€xÕ $€€”ãðO®”€‰‚ÿ€€”‚ÿÿÿSoOneShotTimer that runs for a pre-set amount of timeˆ?@ÌMÍI#b€~Õ $€€”ãJ –€‰‚ÿ€ €”‚ÿÿÿSoSelectOneSelects one value from a multiple-value fieldr)ÅÌ¿ÍI#b€RÕ $€€”ã@)€‰‚ÿ€$€”‚ÿÿÿSoTimeCounterTimed integer counter†=MÍEÎI#b€zÕ $€€”ã{ul¢€‰‚ÿ€*€”‚ÿÿÿSoTransformVec3fTransforms a 3D vector by a 4x4 matrixx/¿Í½ÎI#b€^Õ $€€”ãœÑè1€‰‚ÿ€"€”‚ÿÿÿSoTriggerAnyProvides fan-in for triggers'EÎäÎ$ €€”€‚ÿF½Î*Ï1¦1Í*ÏgÏÎIEnvironment Variables=äÎgÏ% €0€ˆˆ€‚ÿEnvironment Variables˜s*Ï % €æ€€‚‚‚ÿThese environment variables are used for a variety of functions, including debugging.IV_ALLOW_LOCATE_HIGHLIGHTgÏ äεgÏÁ4 6€€”‘€€ãN=TŽ€‰€‚ÿAffects SoLocateHighlight.If set, the default SoLocateHighlight mode is set to AUTO. If not set, the default mode is OFF.J&  $ €L€€‚‚ÿIV_AUTO_CACHE_MINIV_AUTO_CACHE_MAXX2Ác& €d€”‘€€‚ÿThese influence when automatic caching happens.: # €.€€‚ÿIV_NO_TEXTURE_OBJECTÀ™c]' €3€”‘€€‚ÿTells Open Inventor not to use OpenGL 1.1 texture objects. If some textures are missing or otherwise displayed incorrectly, try setting this variable.8•# €*€€‚ÿIV_NO_VERTEX_ARRAY§€]<' €€”‘€€‚ÿTells Open Inventor not to use OpenGL 1.1 vertex arrays. If some geometry is missing or misshapen, try setting this variable.9•u# €,€€‚ÿIV_OCTREE_MAX_DEPTH—d< 3 6€È€”‘€€ãjhšö€‰€‚ÿAffects SoOctreeOrdering.Specifies the maximum depth used during octree ordering. Default: 8=uI# €4€€‚ÿIV_SEPARATOR_MAX_CACHESUý žX ~€û€”‘€€ãÍ\Y€‰€ã”„'€‰€ãž ê)€‰€ãûª®€‰€‚ÿApplies to SoSeparator, SoVRMLGroup, SoVRMLShape, and SoVRMLCollision.Specifies the maximum number of render caches. To disable caching entirely, set it to 0. (This can reduce memory requirements at the cost of degraded performance.)9I×# €,€€‚ÿIV_STROKE_FONT_PATH½Šž”3 4€€”‘€€ã·»9€‰€‚ÿSpecifies the path of the directory containing the TGS stroke font data files. See SoFont for information on the stroke font files.N%×â) "€J€€€€‚ÿIV_TIMER_RESOLUTION [Win32 only]V/”8' €_€”‘€€‚ÿSpecifies how often Open Inventor's internal clock ticks. Effectively it sets the minimum time between render traversals when animating (including spin animation and animation performed by engines). Make sure the value is less than the time it takes to render one frame of your scene. Default: 10 ms.Hâ€) "€>€€€€‚ÿOIV_COMPAT_24 [Win32 only]§€8' ' €€”‘€€‚ÿIf this variable is set to any value, then the Open Inventor 2.4 pixel format selection code is used. Stereo is not possible.K"€r ) "€D€€€€‚ÿOIV_CURSOR_STYLE [Win32 only]D' ¶ & €<€”‘€€‚ÿSpecifies the cursor style.Jr  / .€6€T”!:‚!€ƒ‚ƒ‚ƒ‚ÿ0Classic1XOR2Shadow€K¶ € 5 :€–€”‘€‚!€ãrPnÀ€‰€‚ÿThe cursor can also be controlled programmatically. See SoWinViewer.T( Ô , (€P€‚!€€€‚ÿOIV_DEBUG_PIXEL_FORMAT [Win32 only]Ï¥€ £ * "€K€”‘€‚!€‚ÿIf this variable is set to 1, Open Inventor programs built with the debug target will write a file (named pixel.txt) that indicates which pixel format was chosen.T(Ô ÷ , (€P€‚!€€€‚ÿOIV_FORCE_PIXEL_FORMAT [Win32 only]ŒP£ ƒ < F€¡€”‘€‚!€€€ã-‹2‘€‰€‚ÿIf this environment variable is set to a non-zero integer, Open Inventor will try to use it as the pixel format. You can list the available pixel formats with the "oglinfo" utility that is provided with the Open Inventor for Win32 SDK. To request a pixel format programmatically, use the setPixelFormat method of SoWinGLWidget.7÷ º & €"€‚!€‚ÿOIV_LINE_WIDTHëÁƒ ¥* "€ƒ€”‘€‚!€‚ÿIf defined, forces Open Inventor to use line width 1. no matter what line width the program requests. (This was used to improve performance on a system that had notoriously slow wide lines.)M!º ò, (€B€‚!€€€‚ÿOIV_NO_OVERLAYS [Win32 only]¢y¥”) "€ò€”‘€‚!€‚ÿSpecifies that the pixel format chooser should not take into consideration if a pixel format supports overlays or not.L òà, (€@€‚!€€€‚ÿOIV_PSFONT_PATH [Unix only]¢m”Ž@5 :€Ú€”‘àŽ@ä΀‚!€ã·»9€‰€‚ÿSpecifies the path to the PostScript fonts that Open Inventor will use for 2D and 3D text. See SoFont.Q%àß@, (€J€‚!€€€‚ÿOIV_REQUIRE_STENCIL [Win32 only]·Ž@–A* "€€”‘€‚!€‚ÿProvides a strong hint to the pixel format chooser. A pixel format that has a stencil buffer will be chosen even if it is not accelerated.7ß@ÍA& €"€‚!€‚ÿSO_DRAGGER_DIRú¾–AÇB< F€}€”‘€‚!€€€ãÈï?†€‰€‚ÿSpecifies the path to the directory containing dragger geometry files. By default, Open Inventor uses the dragger geometry files from %OIVHOME%/data/draggerDefaults. See SoDragger. )ÍAðB& €€‚!€‚ÿDÇB4C& €<€‚!€‚ÿDebug Environment Variables—qðBËC& €â€‚!€‚ÿWe recommend these flags only be used by expert Open Inventor users or at the request of TGS Customer Support.)4CôC& €€‚!€‚ÿ³gËC§DL#h€Î' €€”€ €‚ÿ€2€”€ €‚ÿÿÿIV_DEBUG_BUFLEN # Constructs an internal length buffer to print into (See SoDebug.C)5ôC(EL#h€j' €€”€ €‚ÿ€&€”€ €‚ÿÿÿIV_DEBUG_CACHES# Prints interesting (!) stuffm!§D•EL#h€B' €€”€ €‚ÿ€,€”€ €‚ÿÿÿIV_DEBUG_CACHELIST# Dittov*(E FL#h€T' €€”€ €‚ÿ€(€”€ €‚ÿÿÿIV_DEBUG_SENSORS# Ditto (lots of!)z.•E…FL#h€\' €€”€ €‚ÿ€F€”€ €‚ÿÿÿIV_DEBUG_TRANSFORM_MANIP_FIELDS# Dittom! FòFL#h€B' €€”€ €‚ÿ€,€”€ €‚ÿÿÿIV_DEBUG_KIT_PARTS# Ditto¨\…FšGL#h€¸' €€”€ €‚ÿ€>€”€ €‚ÿÿÿIV_DEBUG_WRITE_KIT_CHILDREN# Forces a nodekit to be written out like an SoGroup node¢VòFNI#b€v $€€”ã“[ A€‰‚ÿ€(€”‚ÿÿÿSoKeyboardEventKeyboard key press and release eventsr)ºM°NI#b€R $€€”ã-OÁm€‰‚ÿ€*€”‚ÿÿÿSoLocation2Event2D location eventsn%>NOI#b€J $€€”ãAùé½€‰‚ÿ€&€”‚ÿÿÿSoMotion3Event3D motion events‡>°N¥OI#b€| $€€”ãÛá–€‰‚ÿ€.€”‚ÿÿÿSoMouseButtonEventMouse button press and release eventsFO@€I#b€Œ $€€”ã*€‰‚ÿ€6€”‚ÿÿÿSoSpaceballButto¥O@€ALnEventSpaceball button press and release events'¥Og€$ €€”€‚ÿ7@€ž€1Þ€…ù…ž€Ì€nÎFields. g€Ì€% €€ˆˆ€‚ÿFields'ž€ó€$ €€”€‚ÿp'Ì€cI#b€NÓ3 $€€”ãþ —€‰‚ÿ€€”‚ÿÿÿSoFieldBase class for all fields“Jó€öI#b€”Ó3 $€€”ã¿\%†€‰‚ÿ€*€”‚ÿÿÿSoFieldContainerAbstract base class for objects that contain fields8cw‚I#b€pÓ3 $€€”ãÐPWÙ€‰‚ÿ€ €”‚ÿÿÿSoFieldListMaintains a list of pointers to fields›RöƒI#b€¤Ó3 $€€”ãôÃ1€‰‚ÿ€ €”‚ÿÿÿSoMFBitMaskMultiple-value field containing any number of masks of bit flags”Kw‚¦ƒI#b€–Ó3 $€€”ãóÐÀ´€‰‚ÿ€€”‚ÿÿÿSoMFBoolMultiple-value field containing any number of Boolean values¨_ƒN„I#b€¾Ó3 $€€”ãz.—\€‰‚ÿ€€”‚ÿÿÿSoMFColorMultiple-value field containing any number of RGB colors stored as three floats›R¦ƒé„I#b€¤Ó3 $€€”ãw¾°ž€‰‚ÿ€€”‚ÿÿÿSoMFEngineMultiple-value field containing any number of pointers to enginesœSN„……I#b€¦Ó3 $€€”ãvnÄ´€‰‚ÿ€€”‚ÿÿÿSoMFEnumMultiple-value field containing any number of enumerated type valuesœSé„!†I#b€¦Ó3 $€€”ã'0]€‰‚ÿ€€”‚ÿÿÿSoMFFloatMultiple-value field containing any number of floating point values—N……¸†I#b€œÓ3 $€€”ã-Ï]€‰‚ÿ€€”‚ÿÿÿSoMFInt32Multiple-value field containing any number of int32_t integersx/!†0‡I#b€^Ó3 $€€”ãòÌ´€‰‚ÿ€€”‚ÿÿÿSoMFLong(OBSOLETE) Synonym for SoMFInt32•L¸†ŇI#b€˜Ó3 $€€”ã÷3 ‚ÿ€€”‚ÿÿÿSoMFMatrixMultiple-value field containing any number of 4x4 matrices ‹B0‡PˆI#b€„Ó3 $€€”ã\ú䀉‚ÿ€€”‚ÿÿÿSoMFNameMultiple-value field containing any number of names˜OŇèˆI#b€žÓ3 $€€”ã÷]Ï´€‰‚ÿ€€”‚ÿÿÿSoMFNodeMultiple-value field containing any number of pointers to nodes ˜OPˆ€‰I#b€žÓ3 $€€”ã²hÑ´€‰‚ÿ€€”‚ÿÿÿSoMFPathMultiple-value field containing any number of pointers to paths ‚9舊I#b€rÓ3 $€€”ãf9_€‰‚ÿ€€”‚ÿÿÿSoMFPlaneField containing several plane equations •L€‰—ŠI#b€˜Ó3 $€€”ãÏ[ Ñ€‰‚ÿ€"€”‚ÿÿÿSoMFRotationMultiple-value field containing any number of SbRotations–MŠ-‹I#b€šÓ3 $€€”ã³qÑ_€‰‚ÿ€€”‚ÿÿÿSoMFShortMultiple-value field containing any number of short integers F—Š¼‹I#b€ŒÓ3 $€€”ã*{£€‰‚ÿ€€”‚ÿÿÿSoMFStringMultiple-value field containing any number of strings“J-‹OŒI#b€”Ó3 $€€”ã–{Ö´€‰‚ÿ€€”‚ÿÿÿSoMFTimeMultiple-value field containing any number of SbTime valuesšQ¼‹éŒI#b€¢Ó3 $€€”ãŽmç)€‰‚ÿ€€”‚ÿÿÿSoMFUInt32Multiple-value field containing any number of uint32_t integers {2OŒdI#b€dÓ3 $€€”㨠>`€‰‚ÿ€€”‚ÿÿÿSoMFULong(OBSOLETE) Synonym for SoMFUInt32  W錎I#b€®Ó3 $€€”ã@²é+€‰‚ÿ€€”‚ÿÿÿSoMFUShortMultiple-value field containing any number of unsigned short integers ŸVd£ŽI#b€¬Ó3 $€€”ãóñi`€‰‚ÿ€€”‚ÿÿÿSoMFVec2fMultiple-value field containing any number of two-dimensional vectors ¡XŽDI#b€°Ó3 $€€”ãòi`€‰‚ÿ€€”‚ÿÿÿSoMFVec3fMultiple-value field containing any number of three-dimensional vectors  W£Ž ÀI#b€®Ó3 $€€”ãIòi`€‰‚ÿ€€”‚ÿÿÿSoMFVec4fMultiple-value field containing any number of four-dimensional vectors D Àg€€7DŒÀI#b€nÓ3 $€€”ã5É´€‰‚ÿ€€”‚ÿÿÿSoMFieldBase class for all multiple-valued field‹B ÀÁI#b€„Ó3 $€€”ã:YN€‰‚ÿ€ €”‚ÿÿÿSoSFBitMaskSingle-value field containing a set of bit flags6ŒÀ–ÁI#b€lÓ3 $€€”ãU×S选‚ÿ€€”‚ÿÿÿSoSFBoolField containing a single Boolean value8ÁÂI#b€pÓ3 $€€”ã8h1€‰‚ÿ€€”‚ÿÿÿSoSFBox3sField containing a three-dimensional boxv-–ÁÂI#b€ZÓ3 $€€”ãð@I1€‰‚ÿ€€”‚ÿÿÿSoSFColorField containing an RGB color€7 ÃI#b€nÓ3 $€€”ãIØ™X€‰‚ÿ€€”‚ÿÿÿSoSFEngineField containing a pointer to a engine|3‰ÃI#b€fÓ3 $€€”ãØtW选‚ÿ€€”‚ÿÿÿSoSFEnumField containing an enumerated value€7 à ÄI#b€nÓ3 $€€”ã0â1€‰‚ÿ€€”‚ÿÿÿSoSFFloatField containing a floating-point valuet+‰Ã}ÄI#b€VÓ3 $€€”ãƒ2€‰‚ÿ€€”‚ÿÿÿSoSFImageField containing a 2D imageu, ÄòÄI#b€XÓ3 $€€”ã k{€‰‚ÿ€€”‚ÿÿÿSoSFImage3Field containing a 3D image|3}ÄnÅI#b€fÓ3 $€€”ãw?2€‰‚ÿ€€”‚ÿÿÿSoSFInt32Field containing an int32_t integerx/òÄæÅI#b€^Ó3 $€€”ããø_选‚ÿ€€”‚ÿÿÿSoSFLong(OBSOLETE) Synonym for SoSFInt32x/nÅ^ÆI#b€^Ó3 $€€”ãØœ€‰‚ÿ€€”‚ÿÿÿSoSFMatrixField containing a 4x4 matrix o&æÅÍÆI#b€LÓ3 $€€”ã¾b选‚ÿ€€”‚ÿÿÿSoSFNameField containing a name|3^ÆIÇI#b€fÓ3 $€€”ãYdb选‚ÿ€€”‚ÿÿÿSoSFNodeField containing a pointer to a node6ÍÆÈÇI#b€lÓ3 $€€”ãod选‚ÿ€€”‚ÿÿÿSoSFPathField containing a pointer to an SoPathz1IÇBÈI#b€bÓ3 $€€”ã‰xë3€‰‚ÿ€€”‚ÿÿÿSoSFPlaneField containing a plane equationw.ÈǹÈI#b€\Ó3 $€€”ã‘Ù»•€‰‚ÿ€"€”‚ÿÿÿSoSFRotationField containing a rotationy0BÈ2ÉI#b€`Ó3 $€€”ã)„ƒ4€‰‚ÿ€€”‚ÿÿÿSoSFShortField containing a short integers*¹È¥ÉI#b€TÓ3 $€€”ãü”ŒÔ€‰‚ÿ€€”‚ÿÿÿSoSFStringField containing a stringr)2ÉÊI#b€RÓ3 $€€”ãøi选‚ÿ€€”‚ÿÿÿSoSFTimeField containing an SbTimeF¥É¦ÊI#b€ŒÓ3 $€€”ã%瀉‚ÿ€ €”‚ÿÿÿSoSFTriggerField used to trigger engines or connection networks†=Ê,ËI#b€zÓ3 $€€”ã`‡Ð〉‚ÿ€€”‚ÿÿÿSoSFUInt32Field containing an unsigned int32_t integerz1¦Ê¦ËI#b€bÓ3 $€€”ã³ð4€‰‚ÿ€€”‚ÿÿÿSoSFULong(OBSOLETE) Synonym for SoSFUInt32„;,Ë*ÌI#b€vÓ3 $€€”ãÌÒ倉‚ÿ€€”‚ÿÿÿSoSFUShortField containing an unsigned short integer‚9¦Ë¬ÌI#b€rÓ3 $€€”ãi5€‰‚ÿ€€”‚ÿÿÿSoSFVec2fField containing a two-dimensional vector„;*Ì0ÍI#b€vÓ3 $€€”ã”5€‰‚ÿ€€”‚ÿÿÿSoSFVec3fField containing a three-dimensional vectorG¬ÌÀÍI#b€ŽÓ3 $€€”ã¿5€‰‚ÿ€€”‚ÿÿÿSoSFVec4fField containing a homogeneous three-dimensional vector‡>0ÍGÎI#b€|Ó3 $€€”ã— \选‚ÿ€€”‚ÿÿÿSoSFieldAbstract base class for all single-value fields'ÀÍnÎ$ €€”€‚ÿ8GΦÎ1 G‡¦ÎÕζ General/ nÎÕÎ% €€ˆˆ€‚ÿGeneral'¦ÎüÎ$ €€”€‚ÿ‚9ÕÎ~ÏI#b€ríï $€€”ã}9€‰‚ÿ€€”‚ÿÿÿSoBaseBase class for all nodes, paths, and engines™PüÎ#I#b€ íï $€€”ã/ x‘€‰‚ÿ€€”‚ÿÿÿSoBaseListMaintains a list of pointers to instances ~Ï#nÎof the SoBase classes’I~ϵI#b€’íï $€€”ãø"€‰‚ÿ€"€”‚ÿÿÿSoByteStreamConverts scene graph objects to character byte streams–M#KI#b€šíï $€€”ãç]3€‰‚ÿ€&€”‚ÿÿÿSoCallbackListManages a list of callback functions and associated data|3µÇI#b€fíï $€€”ã˃€‰‚ÿ€.€”‚ÿÿÿSoCollisionManagerClass to manage collisionsn%K5I#b€Jíï $€€”ãnY+€‰‚ÿ€€”‚ÿÿÿSoDBScene graph database class|3DZI#b€fíï $€€”ãþßC˜€‰‚ÿ€€”‚ÿÿÿSoInputUsed to read Open Inventor data filesG5AI#b€Žíï $€€”ã}选‚ÿ€$€”‚ÿÿÿSoNodeKitPathPath that points to a list of hierarchical nodekits6±ÀI#b€líï $€€”ãœÐ€‰‚ÿ€€”‚ÿÿÿSoNodeListMaintains a list of pointers to nodes¦]AfI#b€ºíï $€€”ã~M€A€€‚†"€‚€‚€‚‚‚ÿFigure 1.2 Class hierarchy of IVF SDI and MDI Applications. This example diagrams an examiner viewer application. The class hierarchy for all IVF viewer applications is similar, the difference being which IVF viewer class the user view is derived from.Note that the IVF classes are not derived from Object. This is because the current implementation of MFC does not support the use of Object as a virtual base class. It is important to note in Figure 1.2 that all of the user classes have the MFC class as the first (left most) base class. This is necessary due to the implementation of the MFC run-time typing mechanism. Refer to MFC Technical Note 16 for information about using multiple inheritance with MFC. In IVF SDI and MDI applications, the Open Inventor viewer occupies the entire view window. The details of how the view's window is transformed into an Open Inventor viewer are discussed in later chapters.Qt@œF7 <€7€€‚‚†"€‚€‚€‚ÿIVF also supports MFC dialog-based applications. Figure 1.3 illustrates the class hierarchy of an IVF dialog-based application. In an IVF dialog-based application, any of the dialog's child controls can be turned into an Open Inventor viewer or render area. Figure 1.3 Class hierarchy of an IVF dialog-based Application. This example diagrams an examiner viewer application. The class hierarchy for all IVF dialog-based viewer applications is similar, the difference being which IVF viewer class the user dialog is derived from.Æ‹KDbH; D€€€‚€‚€‚‚†"€‚€‚ÿIVF Class Library StructureThe IVF class library is composed of two separate Win32 libraries. The IVF core classes are contained in a Dynamic Link Library (DLL). The IVF viewer classes are provided in a static library. Figure 1.4 illustrates the composition of the IVF core classes and the IVF viewer classes.Figure 1.4 Composition of the IVF core classes and the IVF viewer classes.< œFžH1Dù…œ‹žHÑHäLInteraction3bHÑH% €€ˆˆ€‚ÿInteraction'žHøH$ €€”€‚ÿ…<ÑH}II#b€x9Ä $€€”ã6 €‰‚ÿ€>€”‚ÿÿÿSoBoxHighlightRenderActionA selection highlight style†=øHJI#b€z9Ä $€€”ã?–/ €‰‚ÿ€(€”‚ÿÿÿSoEventCallbackNode which invokes callbacks for events¢Y}I¥JI#b€²9Ä $€€”ãK7(?€‰‚ÿ€&€”‚ÿÿÿSoExtSelectionSelection node that supports lasso and rectangle selection of shapesŠAJ/KI#b€‚9Ä $€€”ãΖc`€‰‚ÿ€$€”‚ÿÿÿSoInteractionInitializes Open Inventor interaction classes„;¥J³KI#b€v9Ä $€€”ãö퀉‚ÿ€@€”‚ÿÿÿSoLineHighlightRenderActionSelection highlight styleŽE/KALI#b€Š9Ä $€€”ãQ´tK€‰‚ÿ€&€”‚ÿÿÿSoSceneManagerManages scene graph rendering and event handling}4³K¾LI#b€h9Ä $€€”ã(ç –€‰‚ÿ€ €”‚ÿÿÿSoSelectionManages a list of selected objects&ALäL# €€€‚ÿR!¾L6M1ÝÿÿÿÿZ 6MˆM@€Inventor AppWizard - IntroductionR-äLˆM% €Z€ˆˆ€‚ÿIntroduction to IVF AppWizard (Win32 only)¬†6M@€& € €€‚‚‚ÿThe IVF AppWizard is a Microsoft Visual C++ "Custom AppWizard", which is used within the Visual C++ 5.x and 6.x environments to build an initial framework for an Open Inventor MFC application. The IVF AppWizard will create an MFC application containing the necessary IVF classes. Applications can be created with a simple RenderArea or any of the standard Open Inventor viewers - walk, examiner, and fly-through.The following pages show how to build an Open Inventor application using the IVF AppWizard. Unless otherwise indicated in the text of the following pages, you may choose from any ˆM@€äLof the options shown on the IVF AppWizard screens.9ˆMy€1?ÿÿÿÿÿÿÿÿ!y€®€ÈÀInventor5@€®€% € €ˆˆ€‚ÿOpen Inventor*y€Ø€# €€€‚ÿNAMEZ4®€2& €h€”‘€€‚ÿOpen Inventor - a toolkit for writing 3D programs1Ø€c# €€€‚ÿDESCRIPTION_22„- (€e€”‘€€€€‚ÿThe Open Inventor 3D Toolkit is an object-oriented toolkit that simplifies and abstracts the task of writing graphics programming into a set of easy to use objects. These objects range from low level data-centered objects such as Sphere, Camera, Material, Light, and Group, to high level application-level objects such as Walkthrough Viewer and Material Editor. The foundation concept in Open Inventor is the "scene database" which defines the objects to be used in an application. When using Open Inventor, a programmer creates, edits, and composes these objects into hierarchical 3D scene graphs (i.e., database). A variety of fundamental application tasks such as rendering, picking, event handling, and file reading/writing are built-in operations of all objects in the database and thus are simple to invoke.°ˆcr‡( €€”‘€€‚‚ÿSince Open Inventor is object-oriented (written in C++), it encourages programmers to extend the system by writing new objects. Open Inventor users have created a variety of new objects that are not included in the product, such as: Bezier surfaces, CSG objects, animation objects, special viewers, and many more.Note that the rendering mechanism inside Open Inventor objects employs OpenGL. Thus, during rendering each object automatically makes the proper, efficient calls to OpenGL. Furthermore, Open Inventor rendering supports a caching scheme which automatically generates very fast renderings of the database without traversal overheads.žw„‰' €ï€”‘€€‚ÿInventor picking is extremely efficient and does not utilize rendering. Furthermore, picking returns a variety of 3D information and detail about what objects were picked. A sorted list of picked objects and corresponding information is returned to the programmer. Picking is so fast, that programs can perform 3D locate highlighting as the mouse moves across a 3D window.F#r‡V‰# €F€€‚ÿINTERACTION, EVENTS, AND DEVICES้6‹' €s€”‘€€‚ÿInventor defines a event model for writing 3D interaction. This model is window system independent. It is quite easy to use and makes 3D direct manipulation programming possible. Open Inventor includes a variety of interactive 3D objects and tools for writing interactive objects, such as: Manipulators, Draggers, and Projectors. The flexible event model encourages programmers to extend the system to support new devices and event types.1V‰g‹# €€€‚ÿFILE FORMATÿØ6‹fŒ' €±€”‘€€‚ÿThe Open Inventor 3D File Format is SGI's standard for 3D data. The format supports both an ASCII and private binary format. The binary format is network-neutral and thus can be exported across machine boundaries.. g‹”Œ# €€€‚ÿBENEFITS äfŒŸ' €É€”‘€€‚ÿProgramming 3D graphics applications with Open Inventor results in large scale productivity increases. This also increases with time as more tools utilize the Open Inventor paradigm, user interfaces, and standard file format.3”ŒÒ# € €€‚ÿDOCUMENTATION߸Ÿ±Ž' €q€”‘€€‚ÿ"The Inventor Mentor", "The Inventor Toolmaker", and "The Open Inventor C++ Reference Manual", published by Addison-Wesley Publishing Company, are available in technical bookstores.1ÒâŽ# €€€‚ÿSOURCE CODEuO±ŽW& €ž€”‘€€‚ÿThe Inventor Toolkit includes source code to numerous programs and examples.+⎂# €€€‚ÿFILES£sW1À0 0€æ€”‘€€€€€‚ÿ%OIVHOME%\data\models\* - Sample 3D data files%OIVHOME%\src\* - Source to‚1À@€ Open Inventor samples and examples. ‚_À# €€€‚ÿSEE ALSOi%1ÀÈÀD X€J€”‘€ãšvø¹€‰€ãUÑF€‰€ã“°#€‰‚ÿSceneViewer, ivcat, maze],_À%Á16»ÿÿÿÿ"%ÁtÁyÃInventor AppWizard - New Project InformationO*ÈÀtÁ% €T€ˆˆ€‚ÿIVF AppWizard - New Project Information®x%Á"Â6 <€ò€€€€†"€‚€‚ÿThis dialog box is a standard VC++ dialog box. Click the What's This help button for standard help information.QtÁsÂ4 8€:€PÈ:‚H€ƒ€€€€‚ÿ•Click OK to proceed.("›Â% €€‚H€‚ÿ„_sÂÃ% €¾€‚H€‚ÿThe IVF AppWizard will create a new skeleton project, ready for you to customize and build. (›ÂGÃ% €€‚H€‚ÿ2ÃyÃ. ,€ €‚H€†"€‚ÿQ GÃÊÃ1#"‰âƒ#ÊÃýÃïÇInventor AppWizard - New Project3yÃýÃ% €€ˆˆ€‚ÿNew Project´ÊñÄ% €€€‚‚ÿThe first step in building an Open Inventor application is to open a new project using the VC++ IDE (interactive development environment). žbýÃOÅ< H€Ä€PÈ:‚H€ƒ€€€€‚ƒ€€‚ÿ•On the File menu, click New. •In the dialog box that appears, click the Projects tab.(±ÄwÅ% €€‚H€‚ÿ2OÅ©Å. ,€ €‚H€†"€‚ÿ(wÅÑÅ% €€‚H€‚ÿ.ç©ÅÿÆG \€Ï€PÈ:‚H€ƒ€€‚ƒ€€‚ƒ€€‚ƒ€€‚ÿ•Select IVF AppWizard (exe) as the project type.•In the Project name box, type the name of your new project.•In the Location box, specify a directory for the new project files.•Click OK to start the IVF AppWizard.(ÑÅ'Ç% €€‚H€‚ÿÈ“ÿÆïÇ5 8€)€‚H€€€†"€‚ÿNOTE: This dialog box is a standard VC++ dialog box. Click the What's This help button in each dialog box for standard MFC help information.Q 'Ç@È1ëZá„$@ȃÈ=ÊInventor AppWizard - Step 1 of 6CïǃÈ% €<€ˆˆ€‚ÿIVF AppWizard - Step 1 of 6ªw@È-É3 6€ð€€€€†"€‚‚ÿThis dialog box is a standard VC++ dialog box. Click the What's This help button for standard help information.Ž^ƒÈ»É0 0€¼€PÈ:‚H€ƒ‚ƒ€€‚ÿ•Choose the type of application you would like to create. •Then click Next to proceed.(-ÉãÉ% €€‚H€‚ÿ2»ÉÊ. ,€ €‚H€†"€‚ÿ(ãÉ=Ê% €€‚H€‚ÿQ ÊŽÊ1„⃅%ŽÊÑÊ$ÌInventor AppWizard - Step 2 of 6C=ÊÑÊ% €<€ˆˆ€‚ÿIVF AppWizard - Step 2 of 6®xŽÊË6 <€ò€€€€†"€‚€‚ÿThis dialog box is a standard VC++ dialog box. Click the What's This help button for standard help information.KÑÊÊË. ,€:€PÈ:‚H€ƒ€€‚ÿ•Click Next to proceed.(ËòË% €€‚H€ ‚ÿ2ÊË$Ì. ,€ €‚H€†"€‚ÿQ òËuÌ1¨á„[†&u̸Ì/ÎInventor AppWizard - Step 3 of 6C$̸Ì% €<€ˆˆ€‚ÿIVF AppWizard - Step 3 of 6ªwuÌbÍ3 6€ð€€€€†"€‚‚ÿThis dialog box is a standard VC++ dialog box. Click the What's This help button for standard help information.K¸Ì­Í. ,€:€PÈ:‚H€ƒ€€‚ÿ•Click Next to proceed.(bÍÕÍ% €€‚H€ ‚ÿ2­ÍÎ. ,€ €‚H€†"€ ‚ÿ(ÕÍ/Î% €€‚H€‚ÿQ ΀Î1€…'€ÎÃÎ Inventor AppWizard - Step 4 of 6C/ÎÃÎ% €<€ˆˆ€‚ÿIVF AppWizard - Step 4 of 6ªw€ÎmÏ3 6€ð€€€€†"€‚‚ÿThis dialog box is a standard VC++ dialog box. Click the What's This help button for standard help information.KÃθÏ. ,€:€PÈ:‚H€ƒ€€‚ÿ•Click Next to proceed.(mÏàÏ% €€‚H€ ‚ÿ2¸Ï . ,€ €‚HàÏ /΀†"€ ‚ÿQ àÏo 1[†»(o ² › Inventor AppWizard - Step 5 of 6C ² % €<€ˆˆ€‚ÿIVF AppWizard - Step 5 of 6’_o D 3 6€À€€‚‚†"€ ‚‚€‚ÿUse this dialog box to select the IVF options you want in your application.Viewer TypeC² ‡ & €:€”‘€€‚ÿSelect the type of viewer:½eD D X ~€Ë€T”‰‚ ~‚‰€€ƒ‚€€ƒ‚€€ƒ‚€€ƒ‚€€ƒ‚€€ƒ‚ÿRender Area:The most basic drawing area (no viewer)Examiner Viewer:Viewer for manipulating objectsFly Viewer:Viewer that "flys" the camera through a scenePlane Viewer:Viewer that constrains the camera to a planeWalk Viewer:Viewer that "walks" the camera through a sceneScene Viewer:Combines all the viewers, plus editting capability:‡ ~ & €(€‚‰€‚ÿViewer AttributesrID ð ) "€’€”‘€‚‰€‚ÿSelect the desired default width and height for the main frame window.@~ 0 @ N€€T”‰‚ ~‚‰€€ƒ‚€€ƒ‚€€ƒ‚ÿDecorations:If selected, viewer "decorations" (thumbwheels, etc.) are displayed by default.Cut & Paste:If selected, enables cutting and pasting of 3D geometry.About Box Logo:If selected, the "About Box" includes a spinning logo box by default.5ð e & €€‚‰€‚ÿVRML OptionsL#0 ± ) "€F€”‘€‚‰€‚ÿSelect the desired VRML options.Ä„e u @ N€ €T”‰‚ ~‚‰€€ƒ‚€€ƒ‚€€ƒ‚ÿURL Display:Select this option to have the URL displayed automatically in the status bar when the cursor moves onto geometry associated with a WWWAnchor node.URL Fetch:Select this option to enable the fetch callback when the user clicks on geometry associated with a WWWAnchor node.Viewpoint Menu:Select this option to include a "Viewpoints" menu in the application menu bar.5± ª & €€‚‰€‚ÿStartup File˜ou B ) "€Þ€”‘€‚‰€‚ÿEnter the name of an Open Inventor or VRML file to be automatically loaded when the application is executed.Y*ª › / .€T€”‘€‚‰€€€‚ÿSelect Enable to enable this feature.Q B ì 1‚0€)ì / € Inventor AppWizard - Step 6 of 6C› / % €<€ˆˆ€‚ÿIVF AppWizard - Step 6 of 6ªwì Ù 3 6€ð€€€€†"€‚‚ÿThis dialog box is a standard VC++ dialog box. Click the What's This help button for standard help information.M/ & . ,€>€PÈ:‚H€ƒ€€‚ÿ•Click Finish to proceed.(Ù N % €€‚H€‚ÿ2& € . ,€ €‚H€†"€ ‚ÿ< N ¼ 1~ N!*¼ ü +F IVF Classes@€ ü % €6€ˆˆ€‚ÿIVF Classes (Win32 only)Õ«¼ Ñ * "€W€€ã#û²~‰‚ÿThe IVF Classes are a set of classes that integrate Open Inventor with the Microsoft Foundation Classes (MFC) application development framework. IVF classes are based upon the SoWin component classes but shield the application from this level of detail. IVF classes also handle much of the complexity of when and where to do various operations within the MFC framework. For more details, see the IVF architecture overview.'ü ø $ €€”€‚ÿŸVÑ — I#b€¬à $€€”ã?\ÇÙ€‰‚ÿ€€”‚ÿÿÿCIvfAppProvides methods for initialization of Open Inventor and the IVF library¨_ø ? I#b€¾à $€€”ãÆ9*†€‰‚ÿ€*€”‚ÿÿÿCIvfArchiveInputSoInput derived class to handle performing input on MFC CArchive objects«b— ê I#b€Äà $€€”ãù›¿€‰‚ÿ€,€”‚ÿÿÿCIvfArchiveOutputSoOutput derived class to handle performing output on MFC CArchive objectsØŽ?  J#b€à $€€”ãŸ\›œ€‰‚ÿ€$€”‚ÿÿÿCIvfComponentProvides methods to process messages directed to the IVF component object and methods to interact with the SoWin component˜Oê f@ I#b€žà $€€”ãê Ç€‰‚ÿ€Â f@ € "€”‚ÿÿÿCIvfDocumentProvides methods for manipulation of Open Inventor documentsžU A I#b€ªà $€€”ãZ‰DU€‰‚ÿ€$€”‚ÿÿÿCIvfMainFrameProvides methods to process messages directed to the frame windowŠAf@ ŽA I#b€‚à $€€”ãðîŸç€‰‚ÿ€&€”‚ÿÿÿCIvfServerItemProvides support for OLE server applications WA .B I#b€®à $€€”ãà €‰‚ÿ€ €”‚ÿÿÿIvfResourceUtility class for accessing strings in the Open Inventor resource DLL&ŽA TB # €€€‚ÿ”@.B èB T#x€€ã "€€ãMzÃm€‰‚ÿ€.€ÿ€0€”‚ÿÿÿCIvfExaminerViewerIVF wrapper for an SoWinExaminerViewer~5TB fC I#b€jã $€€”ãS;n¹€‰‚ÿ€$€”‚ÿÿÿCIvfFlyViewerIVF wrapper for an SoWinFlyViewer‚9èB èC I#b€rã $€€”ã$6Ø%€‰‚ÿ€(€”‚ÿÿÿCIvfPlaneViewerIVF wrapper for an SoWinPlaneViewer€7fC hD I#b€nã $€€”ã¡£ÊL€‰‚ÿ€&€”‚ÿÿÿCIvfRenderAreaIVF wrapper for an SoWinRenderArea6èC çD I#b€lã $€€”ãÐBþ€‰‚ÿ€(€”‚ÿÿÿCIvfSceneViewerIVF wrapper for the Scene VieweržUhD …E I#b€ªã $€€”㻋ñ€‰‚ÿ€$€”‚ÿÿÿCIvfStdViewerIVF wrapper for standard viewers (Examiner, Fly, Plane, and Walk)€7çD F I#b€nã $€€”ãل쀉‚ÿ€&€”‚ÿÿÿCIvfWalkViewerIVF wrapper for an SoWinWalkViewer&…E +F # €€€‚ÿ< F gF 1=‡ ÿÿÿÿ+gF šF pI IvfResource3+F šF % €€ˆˆ€‚ÿIvfResource*gF ÄF # €€€‚ÿNAME4šF øF & €€”‘€€‚ÿIvfResource3ÄF +G # € €€‚ÿINHERITS FROM-øF XG & €€”‘€€‚ÿNone1+G ‰G # €€€‚ÿDESCRIPTIONjDXG óG & €ˆ€”‘€€‚ÿUsed for internationalization to access strings in resource file.- ‰G H # €€€‚ÿMETHODSЛóG ðH 5 8€7€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿstatic voidinitialize()static LPCTSTRgetString(int nId)static voidfreeStrings()static HGLOBALgetStringCopy(int nId)static HMENUgetMenu(int nId)9 H )I & €&€‚A€‚ÿMEMBER VARIABLESGðH pI , (€6€T”A‚S~‚A€ƒ‚ÿstatic HMODULEm_hResDll= )I ­I 1Í/×–c€ ,­I ÷I  LMV OverviewJ%pI ÷I % €J€ˆˆ€‚ÿLarge Model Visualization Overview…b­I |J # €Ä€€‚ÿOpen Inventor and Large Model Visualization (LMV) -- The Solution for Large Model VisualizationüÔ÷I xM ( €©€”‘€€‚‚ÿIn order to visualize graphics quickly, we have to be clever in choosing which primitives we feed to the graphics pipeline. The demand for increasingly complex 3D graphics models is growing faster than graphics workstation hardware can keep up. The only solution left is to find ways to represent models and scenes with fewer graphics primitives, and to send only the needed primitives to the graphics pipeline.Since Open Inventor 2.4, there have been techniques to enhance large model visualization with view frustum culling and caching mechanisms and levels of detail. Starting with Open Inventor 2.5, we have gone further and added new techniques for visualization of large models and assemblies, as described below. =|J µM # €4€€‚ÿGeometry Simplification-ùxM î€ 4 6€ó€”‘€€‚㊆Ř€‰€‚ÿThe first algorithm Open Inventor includes is geometry simplification. The purpose of this algorithm is to simplify the rendered geometry of the model. After simplification, we have more options for the complexity of the model's representation and, therefore, we have more control over the rendering cost. Open Inventor integrates mesh decimation through two components: a simplifier and a simplify action. The simplify action can be applied to a scene graph, or some part of it, to produce a simpler representation that will be usedµM î€ pI for subsequent redraws. A new node, SoLevelOfSimplification, has been added to group these representations and to keep track of their complexity levels, represented by a percentage of the original number of primitives. 6µM $ ( €€T”‘€s€‚ÿSimplifiersiî€ „ X ~€#€”‘€€ãê–Ìv€‰€‚ã,ꀉ€ãê–Ìv€‰€ãê–Ìv€‰€‚ÿObjects derived from the virtual class SoSimplifier receive a set of triangles and return an Open Inventor node representing a simplified version of the original geometry. Thus one can ask for a simplified version of a triangle list containing 50% of the original number of triangles.Open Inventor contains an SoDecimator object derived from SoSimplifier, which implements a geometry simplification algorithm. This algorithm uses iterative contractions of vertex pairs to simplify models. Simplifiers are used internally by simplify actions but can also be used by any application to generate a simplified node from a given list of triangles not stored in an Open Inventor node. The programmer can implement new simplification methods by deriving from SoSimplifier.;$ È„ ( €&€T”‘€s€‚ÿSimplify ActionsŸE„ g‡ Z ‚€‹€”‘€€‚ãê–Ìv€‰€ã,ꀉ€ãê–Ìv€‰€‚‚ãFÙ €‰€‚ÿOpen Inventor contains several simplify actions. Each action can be applied to a specific scene graph to create a simplified version of its geometry. Each action's constructor receives an SoSimplifier which is used for simplifying the geometry. This simplifier can be an SoDecimator or any class derived from SoSimplifier by the application. Several traversal methods are available:- SoGlobalSimplifyAction: traverses the scene graph and collects all the triangles in a single list. This list is then simplified and the result is stored in a new scene graph. ý¼È„ dŠ A P€y€”‘€€ã` AÓ€‰€‚ã$ /=€‰€‚‚ÿ- SoShapeSimplifyAction: traverses the scene graph and replaces every complex shape with its simplified version. - SoReorganizeAction: reorganizes the scene graph by grouping shapes with common properties, then groups these shapes in a single shape and runs the simplifier on it. If a simplifier is not provided it creates an IndexedTriangleStripSet from this shape. This action is similar to the ivfix utility program. Each simplified sub-level can be stored in regular Separators or in WWWInline nodes. In this case, the urlName defines the full url to use for each WWWInline. For instance if urlName = "dir/file", the action will generate "dir/file_1.wrl","dir/file_2.wrl", and so on."ôg‡ †Œ . *€é€”‘€€€€‚‚ÿWhen a simplify action generates LevelOfSimplification nodes, the range field of each LevelOfSimplification node can be given globally in the range field of the simplify action. If the simplify action range field is not set, the simplify action computes it automatically for each LevelOfSimplification node. In this case, the sizeFactor field can be used to customize the range computation. A minimum number of triangles can be set to stop the simplification when the object becomes too small. ÔdŠ Ž 6 :€©€”‘€€‚ãFÙ €‰€‚‚‚ÿSpecifying 0% for the last level inserts an empty node in the scene graph. This allows you to completely remove objects that are too small or too far from the viewer.The SoGlobalSimplifyAction provides two simplification strategies:- SIMPLIFY_GLOBALLY: all the triangles found in the scene graph are collected in a single object. Then this object is simplified.- SIMPLIFY_BY_SUBGROUP: triangles are collected until a material change or a separator is found. n†Œ Á R r€9€”‘€€€€ãFÙ €‰€€€‚ãFÙ €‰€€€‚ÿThe generateNormals flag can be used to force per-vertex normal computation during an SoGlobalSimplifyAction. When not set, objects may appear faceted instead of appearing smooth. Setting the addShapeHints flag to TRUE tells Open Inventor to build normals at run-time.By defauŽ Á pI lt the SoGlobalSimplifyAction collects all the triangles even if they are part of a simple shape (cube, cone, sphere, text3...). Setting the addShapeHints flag to FALSE tells the action to collect triangles only if they belong to a complex shape.¹€Ž ÃÁ 9 @€€”‘€€€€ãFÙ €‰€‚ÿThe getSimplifiedSceneGraph() method returns the root of the new scene graph after applying the SoGlobalSimplifyAction.6 Á ùÁ # €&€€‚ÿAdaptive Viewing#ïÃÁ Æ 4 6€ß€”‘€€‚ãDRô€‰€‚ÿFunctionality was added to every viewer class in Open Inventor to be able to control the update rate, either through fixing the frames per second or the number of primitives rendered. For the viewer to be successful, there need to be nodes in the scene graph that can produce multiple levels of detail. What the adaptive viewers offer is a way for the user to set complexity goals that the dynamic nodes in the scene graph try to achieve.Open Inventor implements adaptive viewing through a new action, GetPrimitiveCountAction, and a new element, DecimationPercentage. The GetPrimitiveCount action is used by the viewer to calculate the complexity of the scene graph by counting the number of triangles, points, lines, text, and images. It then can decide to render some lesser percentage of these primitives by setting the DecimationPercentage element. The viewer can fix the frame rate by timing each render and then adjusting the Decimation value to keep the frame rate within some desired range. îÁùÁ È - (€ƒ€”‘€€€€‚ÿA new example demo program, the Large Model Viewer, has been developed to demonstrate this new functionality. With this program you can control the complexity of scenes output from the mesh decimation algorithm. In addition, you can control scenes that contain LOD nodes, such as many VRML files on the World Wide Web, and nodes that respond to the complexity element, such as Spheres, Cones, Cylinders, NURBS Curves and Surfaces, and 3D Text. T1Æ ^È # €b€€‚ÿRenderList Node, ValueOrdering, OctreeOrderingŽ[ È ìÊ 3 4€·€”‘€€㼿ai€‰€‚ÿLarge Model Viewing techniques require a spatial organization of shapes. Unfortunately, application scene graphs are often not organized spatially. The abstract node class, RenderList, has been developed to deal with this dilemma. This new node creates a flat, linear representation of the shapes within a hierarchical scene graph, which can then be traversed in any order or can be reorganized into a spatial scheme. This reorganization is transparent to the application, which receives the benefits of spatial organization without needing to change its logical organization of the scene graph. E^È ‰Í X ~€‹€”‘€€ãùÉ€‰€ãjhšö€‰€‚ãùÉ€‰€㼿ai€‰€‚ÿIn Open Inventor two organizational strategies have been implemented in the nodes ValueOrdering and OctreeOrdering. Advanced programmers are given the ability to derive new nodes from the RenderList class to implement their own large model viewing techniques. The ValueOrdering node traverses the linear list of shapes generated by the RenderList node and determines the rendering value and cost of each shape. The rendering value is based on the object's approximate screen size and its cost is based on a count of the number of primitives the shape contains. ÒzìÊ g X ~€õ€”‘€€ãùÉ€‰€ãùÉ€‰€‚ãùÉ€‰€ãùÉ€‰€‚ÿDuring each render traversal, the ValueOrdering node determines how many primitives a shape deserves based on its rendering value. If the shape contains multiple levels of detail, then the ValueOrdering node will choose the correct level of detail. However, this node also has two techniques that allow it to handle scenes that do not contain levels of detail: bounding box substitutes and drop culling. If bounding box substitutes are enabled and the ValueOrdering node calculates that the number of triangles that the object de‰Í g pI serves is closer to 12 (the number of triangles in a bounding box) than to the minimum number of triangles the shape can draw, then the ValueOrdering node will draw a bounding box instead of the shape. With drop culling enabled, a user can specify a size in pixels such that when the shape is less than this size, the shape is not rendered. Y ‰Í À L f€€”‘€€‚ãjhšö€‰€㼿ai€‰€ãjhšö€‰€‚ÿThe typical scenario where this is useful is in CAD model assembly viewing, where all or most of the scene is visible, but lots of details may be so small that there is no point in drawing them until the user zooms in on them. Replacing such detail with its bounding box is adequate in many cases and does not have the disk and memory costs, along with the preprocessing time, associated with maintaining multiple levels of detail. The OctreeOrdering node is more appropriate for use in walk-throughs or in other situations where the viewer is inside a large scene and much of the geometry is not visible from any given camera position. The linear list of shapes created by the RenderList node is processed and organized into an Octree which allows objects to be quickly dismissed if they fall out of the viewing frustum, for instance when they are behind or to the side of the viewer. The OctreeOrdering node also can replace with a bounding box groups of shapes that are too small, based on an approximate screen size. Lg  - (€?€”‘€€ãD‹{I‰‚ÿThe new Large Model Viewer demo program incorporates these two traversal ordering techniques as well. This allows an application developer to experiment with the different large model viewing techniques that Open Inventor offers and determine the best solution for his or her data. AÀ M 1t.› ›-M … •Ã LargeModelViewer8  … % €&€ˆˆ€‚ÿLargeModelViewer*M ¯ # €€€‚ÿNAMExH… ' 0 0€’€”‘€€‚†"€ ‚ÿLargeModelViewer - demonstrates adaptive viewing and simplification. ¯ U # €€€‚ÿSYNOPSIS=' ’ ) "€(€”‘€€€‚ÿLargeModelViewer5U Ç & €€€€ ‚ÿDESCRIPTIONÂ’’ ‰ 0 .€%€”‘€€€€€ ‚ÿThe LargeModelViewer program is a demonstration of the adaptive viewing, simplification, and ordering traversal techniques in Open Inventor.=Ç Æ * $€&€P!s€€‚ÿAdaptiveViewingT‰  7 <€;€”‘€€€‚€€€€ ‚ÿIn the status bar are displayed rendering and scene complexity statistics. The right corner section of the statistics bar displays the current frames per second and the decimation percentage. It will take a few frames to get an average fps, so the frames per second display may be off immediately after loading a new file.The Edit Adaptive Viewing menu button will display options for controlling the scene complexity through the new decimation elements. There are four radio buttons for choosing the strategy the viewer should use:2êÆ L H ^€Õ€T”!:‚!€ ƒ€€€ ‚€ƒ€€‚ƒ€€‚ÿ•Normal - do not control decimation element; works the same as previous versions of Open Inventor.•Fixed Number of Triangles - the viewer will use a GetPrimitiveCountAction to find how many triangles are in the scene, and then adjust the decimation element so that the number of triangles rendered remains constant.•Frames Per Second - the viewer will time each render traversal and then adjust the decimation element to keep the render time close to the desired frame rate.óµ K@ > J€k€T”!:‚!€ƒ€€€€€€‚ÿ•Fixed Percentage - the same decimation percentage will be used always. In addition, the DecimationType element will be set to PERCENTAGE, so that SoLOD and SoLevelOfSimplification nodes will choose a child based on the DecimationPercentage element alone, without looking at the camera position. Because the LOD node is no longer dependent on the camera position, itL K@  s GL calls can be cached and may result in quicker rendering. ðL kA 0 .€á€”‘€‚!€€€‚ÿThe Do Full Rendering When Still check box tells the viewer to render at 1.0 decimation (full detail) when the scene is still. This allows you to interact with the scene at a lower decimation, and then see all of the details when done.=K@ ¨A - *€ €P!s‚!€€‚ÿReorganizingÙkA ÆC E X€³€”‘€‚!€€€€€€€€€€‚ÿThe Reorganize (Triangle Strips) item is under the Processing menu. This applies an SoReorganizeAction that reorganizes the scene graph similar to the ivfix utility program. In files with no Inlines or LOD nodes, this will group shapes by material and texture and then convert the shapes into SoIndexedTriangleStripSet nodes. The reorganized scene graph should render quicker, although the effects will be more noticeable on hardware-accelerated graphics cards.赨A ®D 3 4€k€”‘€‚!€€€€ ‚ÿNotice that the Triangle-Stripping algorithm has been improved in version 2.5 (and higher), so if you have used ivfix before and were unsatisfied, be sure to try it again now.<ÆC êD - *€€P!s‚!€€ ‚ÿSimplifyingH®D 2F 9 @€€”‘€‚!€€€€€€‚ÿTwo of the SimplifyActions are accessible from the Processing menu: ShapeSimplify and GlobalSimplify. Both of these actions will produce multiple levels of detail for the scene. You can then use the Adaptive Viewing dialog to choose which level of detail to view.èêD DG * "€Ñ€”‘€‚!€‚ÿThe ShapeSimplifyAction will simplify each shape individually, leaving the rest of the scene graph intact. The GlobalSimplifyAction will group the shapes together and simplify the scene as a whole, replacing the old scene graph. œr2F àH * "€å€”‘€‚!€‚ÿThe last two buttons on the menu combine the Simplify and Reorganize actions. First the Simplify action is run on the scene, and then each of the simplified shapes are organized into triangle strips. Notice that you can only simplify the scene once. If you want to try a different simplify technique on the same scene, you will have to reload the original file again.: DG I - *€€P!s‚!€€ ‚ÿTraversalÖ©àH ðJ - (€S€”‘€‚!€€‚ÿThe traversal menu allows you to experiment with the new Ordering nodes, derived from SoRenderList. This menu alters the type of grouping node kept above the loaded scene. This node is kept below the lights and camera, but above the actual geometry. The default option is SoSeparator, which will result in the usual traversal behavior; the other two options use either an SoValueOrdering node or an SoOctreeOrdering node.DI 4L * "€5€”‘€‚!€‚ÿThe ValueOrdering node will work well with assemblies where there are many parts of various sizes. This node also allows you to use the AdaptiveViewing techniques on scenes that normally would not respond to the Decimation element, if for instance there are no LODs in the scene.g=ðJ ›M * "€{€”‘€‚!€‚ÿThe OctreeOrdering node, in contrast, is better in spatially large scenes, where the viewer moves through the scene instead of around it. The OctreeOrdering node organizes the shapes into an octree spatial organization, which allows it to cull large areas of space quickly that will not be within the view frustum.¡h4L €”‘€‚!€€‚ÿ%OIVHOME%\data\LargeModel\*DU äŽ - (€/€”‘€‚!€€‚ÿThe "formula1" example contains many SoLOD nodes, so the best method would be to use the DecimationStrategy dialog to set the desired level of detail, and leave the Traversal as "Separator". This would also be the case for files output from the Simplification demo programs. ô  À * "€é€”‘€‚!€‚ÿThe Harley.iv file contains many parts, but does not contain LOD nodes, so the ValueOrdering node can used to allow the scene to be decimated through bounding boxes and drop culling of individual shapes, or a simplify action can be applied. äŽ À  c9äŽ qÁ * "€s€”‘€‚!€‚ÿA new directory "allModels" has been added under "data/models", which uses WWWInlines to link the other example files into one scene. Each file represents a directory under data/models. The file "allModels.iv" joins these files into one large scene. This can be used as an example for the OctreeOrdering node. 1 À ¢Á & €€‚!€‚ÿSEE ALSOóEqÁ •Ã ® *‹€”‘€‚!ã +ª€‰€ã\èF€‰ã5ël܉ãšvø¹‰ãDRô‰€ €ãFÙ ‰€ €㊆؉ã…AH‰€ €ãjhšö‰ã¼¿ai‰€ €ã$ /=‰€ €ãsBmf‰ã` AÓ‰ãŸyU‰ãùɉãrPnÀ‰‚ÿinventor, ivfix, Large Model Viewing Overview, SceneViewer, SoGetPrimitiveCountAction, SoGlobalSimplifyAction, SoLevelOfSimplification, SoLOD, SoOctreeOrdering, SoRenderList, SoReorganizeAction, SoShapeHints, SoShapeSimplifyAction, SoSimplifyAction, SoValueOrdering, SoWinViewerH¢Á Ýà 1Øy™è‚.ÿÿÿÿÝà mÄ Light Directional Light^•Ã mÄ 2 4€¾€€‚€‚‚†"€‚ÿDirectional LightThe 3D icon allows interactive manipulation of the light's direction.BÝà ¯Ä 1ˉ‚@ƒ/ÿÿÿÿ¯Ä 8Å Light Point Light‰WmÄ 8Å 2 4€°€€‚€‚‚†"€‚ÿPoint LightThe 3D icon allows interactive manipulation of the light's position.A¯Ä yÅ 1æè‚€0ÿÿÿÿyÅ Æ Light Spot Light¥s8Å Æ 2 4€è€€‚€‚‚†"€‚ÿSpot LightThe 3D icon allows interactive manipulation of the light's position, direction, and cutoff angle.ByÅ `Æ 1}€´…1ÿÿÿÿ`Æ ›Ê Manip Center Ball†PÆ æÆ 6 <€¢€€‚€‚†"€‚‚€‚ÿCenter Ball ManipulatorCrosshairs (at the ends of the x, y and z axes)tE`Æ ZÇ / .€Š€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to translate within the plane of the crosshairsŠ[æÆ äÇ / .€¶€P‘€:‚H€ƒ€ €‚ÿ• click and drag to translate along one axis (determined by next user gesture)+ZÇ È ( €€P‘€:‚H€‚ÿ/ äÇ >È % €€‚H€‚ÿCirclesg8È ¥È / .€p€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to rotate about a constrained axis„U>È )É / .€ª€P‘€:‚H€ƒ€ €‚ÿ•Click and drag the areas between the circles to rotate freely about the center+¥È TÉ ( €€P‘€:‚H€‚ÿ6)É ŠÉ % €"€‚H€‚ÿSphere SurfaceU&TÉ ßÉ / .€L€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to rotate freely+ŠÉ Ê ( €€P‘€:‚H€‚ÿ0 ßÉ :Ê % €€‚H€‚ÿSEE ALSOa- Ê ›Ê 4 8€Z€”‘€‚HãÌrŠâ€‰ãõ+cÛ‰‚ÿSoCenterBallDragger, SoCenterBallManipA:Ê ÜÊ 1 ´ƒý‡2ÿÿÿÿÜÊ »Ï Manip Handle Boxb,›Ê >Ë 6 <€Z€€‚€‚†"€‚‚€‚ÿHandle Box ManipulatorCorner Cubesd5ÜÊ ¢Ë / .€j€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to scale uniformly about centersD>Ë Ì / .€ˆ€P‘€:‚H€ƒ€ €‚ÿ• click and drag to scale uniformly about opposite corner(¢Ë =Ì % €€‚H€‚ÿF!Ì ƒÌ % €B€‚H€‚ÿCenter Cubes (on sides of box)Z+=Ì ÝÌ / .€V€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to scale about centerg8ƒÌ DÍ / .€p€P‘€:‚H€ƒ€ €‚ÿ• click and drag to scale about opposite face+ÝÌ oÍ ( €€P‘€:‚H€‚ÿ-DÍ œÍ % €€‚H€‚ÿFacesi:oÍ Î / .€t€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to translate freely in plane of faceŠ[œÍ Î / .€¶€P‘€:‚H€ƒ€ €‚ÿ• click and drag to translate along one axis (determined by next user gesture)rCÎ Ï / .€†€P‘€:‚H€ƒ€ €‚ÿ• click and drag to translate perpendicular to that face+Î ,Ï ( €€P‘€:‚H€‚ÿ0 Ï \Ï % €€‚H€‚ÿSEE ALSO_+,Ï »Ï 4 8€V€”‘€‚Hã¢b€‰ãöñõ‰‚ÿSoHandleBoxDragger, SoHandleBoxManip; \Ï 11´…3ÿÿÿÿ ã Manip Jack»Ï »Ï Y#»Ï e 6 <€H€€‚€‚†"€‚‚€‚ÿJack ManipulatorEnd Cubes`1 Å / .€b€P‘€:‚H€ƒ€ €‚ÿ•Click and drag any cube to scale uniformly(e í % €€‚H€‚ÿ-Å  % €€‚H€‚ÿLines`1í z / .€b€P‘€:‚H€ƒ€ €‚ÿ•Click and drag along line to rotate freely( ¢ % €€‚H€‚ÿ0 z Ò % €€‚H€‚ÿCylindera2¢ 3 / .€d€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to translate along that axis+Ò ^ ( €€P‘€:‚H€‚ÿ0 3 Ž % €€‚H€‚ÿSEE ALSOU!^ ã 4 8€B€”‘€‚Hã±—o›€‰ã+¯‰‚ÿSoJackDragger, SoJackManip@Ž # 1ý‡4ÿÿÿÿ# d Manip SelectionAã d 1 2€"€€‚€‚†"€‚ÿSelection> # ¢ 1»ˆ5ÿÿÿÿ¢  Manip Tab Box^(d  6 <€R€€‚€‚†"€‚‚€‚ÿTab Box ManipulatorCorner Tabsc4¢ c / .€h€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to scale about opposite corner( ‹ % €€‚H€‚ÿ1 c ¼ % €€‚H€‚ÿEdge Tabsa2‹  / .€d€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to scale about opposite edge(¼ E % €€‚H€‚ÿ- r % €€‚H€‚ÿFacesqBE ã / .€„€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to translate freely in the plane of the faceˆYr k / .€²€P‘€:‚H€ƒ€ €‚ÿ• click and drag to translate along one axis (determined by initial gesture)+ã – ( €€P‘€:‚H€‚ÿ0 k Æ % €€‚H€‚ÿSEE ALSOY%–  4 8€J€”‘€‚HãNØd>€‰ã‡«¬l‰‚ÿSoTabBoxDragger, SoTabBoxManip@Æ _ 1>ˆ6ÿÿÿÿ_ ] Manip Trackball\& » 6 <€N€€‚€‚†"€‚‚€‚ÿTrackball ManipulatorStripes_0_  / .€`€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to rotate around that axis+» E ( €€P‘€:‚H€‚ÿ6 { % €"€‚H€‚ÿSphere SurfaceU&E Ð / .€L€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to rotate freely+{ û ( €€P‘€:‚H€‚ÿ5Ð 0 % € €‚H€‚ÿ SurfaceW(û ‡ / .€P€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to scale uniformly+0 ² ( €€P‘€:‚H€‚ÿ7‡ é % €$€‚H€‚ÿ SurfaceuF² ^ / .€Œ€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to position user axis (user axis stripe appears)ƒZé á ) "€´€P‘€:‚H€ƒ‚ÿ• click and drag pole to intersection of two normal stripes to remove user axis+^ ( €€P‘€:‚H€‚ÿ8á D % €&€‚H€‚ÿUser Axis Stripe_0 £ / .€`€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to rotate around user axis+D Î ( €€P‘€:‚H€‚ÿ0 £ þ % €€‚H€‚ÿSEE ALSO_+Î ] 4 8€V€”‘€‚HãÂmG €‰ã›Ø1Ù‰‚ÿSoTrackballDragger, SoTrackballManipDþ ¡ 1ʈÿÿÿÿ7ÿÿÿÿ¡ 3@ Manip Transform Box^(] ÿ 6 <€R€€‚€‚†"€‚‚€‚ÿTransform Box ManipulatorCubesW(¡ V / .€P€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to scale uniformly+ÿ ( €€P‘€:‚H€‚ÿ-V ® % €€‚H€‚ÿEdgespA  / .€‚€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to rotate around axis parallel to that edge+® I ( €€P‘€:‚H€‚ÿ- v % €€‚H€‚ÿFacesi:I ß / .€t€P‘€:‚H€ƒ€ €‚ÿ•Click and drag to translate freely in plane of faceˆYv g / .€²€P‘€:‚H€ƒ€ €‚ÿ• click and drag to translate along one axis (determined by initial gesture)+ß ’ ( €€P‘€:‚H€‚ÿ0 g  % €€‚H€‚ÿSEE ALSOe1’ 3@ 4 8€b€”‘€‚Hã¡è˜*€‰ãr“žN‰‚ÿSoTransf 3@ ] ormBoxDragger, SoTransformBoxManipB u@ 1& @ƒ´ƒ8ÿÿÿÿu@ YM Manip TransformeršH3@ C R r€“€€‚€‚†"€‚‚€€€€€€€€€€‚ÿTransformer ManipulatorClick-drag any face to translate the dragger within the plane of that face. The face you selected will highlight in yellow. While you drag, yellow feedback arrows display the two directions of motion. Press the key and the arrows turn orange; you may now pick between these two directions to constrain the motion. The direction you move the cursor in will determine which direction is chosen. Press the key and the dragger will translate perpendicular to that plane. The translation field is modified as the face is dragged.¼ƒu@ ËF 9 @€€€‚€€‚‚€€€€‚ÿClick a corner to scale the dragger. The corner you selected will turn yellow and radial lines will indicate that you may move toward and away from the center of the box. Drag radially and you will perform uniform scale. Press the key to scale about the opposite corner instead of the center of the box.To stretch the dragger non-uniformly, press when you drag the corner cube. Now you will see three orange arrows indicating that your gesture will determine which direction to choose. Move the cursor and the selected arrow will turn yellow while the others disappear. Now the dragger will stretch only in the direction you selected. Pressing at the same time as allows you to stretch the dragger while keeping the opposite side pinned in place. When you drag a corner, this modifies the scaleFactor and possibly the translation field of the dragger.ñC çH + $€ã€€‚€€‚ÿClick one of the spherical knobs to rotate the dragger. When you first click, you'll see two orange lines and two purple circles. The purple circles indicate the two ways you can rotate. The orange lines are, once again, the two choices for your mouse gesture. Each line begins you moving around one of the two circles. Once you move the cursor far enough, the selected line turns yellow and you begin rotating the dragger about the selected circle. The other circle and line will disappear.%îËF K 7 <€Ý€€‚€€€€€€‚ÿTo perform unconstrained ("free") rotation, just press while you drag the spherical knob. There will be no choices; instead all three purple circles will be displayed, forming a ball that you can roll around. Regardless of how you rotate, dragging the spherical knobs will modify the rotatation field of the dragger. Depending on how it is centered and what transforms precede it in the scene graph, rotation is likely to affect the translation and scaleFactor fields as well.ìÂçH øL * "€…€€‚‚‚€‚ÿPressing the key will change the center of rotation in both the constrained and unconstrained () case. By default, rotation occurs about the center of the bounding box. With depressed, rotation occurs about the middle of the opposite side of the bounding box. The purple feedback will change to illustrate this; the feedback circles increase in size and purple crosshairs sprout at the new rotational center.SEE ALSOa/ K YM 2 4€^€”‘€ãw`ËꀉãøÉ‚ÿSoTransformerDragger, SoTransformerManip7øL M 1JG‡î9M ¾M Á… Manips. YM ¾M % €€ˆˆ€‚ÿManips'M åM $ €€”€‚ÿ¡X¾M †N I#b€°ðê $€€”ãõ+cÛ€‰‚ÿ€,€”‚ÿÿÿSoCenterballManipTransform node with 3D interface for editing rotation and center‰@åM O I#b€€ðê $€€”ãý¥‘U€‰‚ÿ€*€”‚ÿÿÿSoClipPlaneManipManipulator to transform a clipping plane¥\†N ´O I#b€¸ðê $€€”ã½ôm€‰‚ÿ€8€”‚ÿÿÿSoDirectionalLightManipDirectional light node with 3D interface for editing direction¨_O h€ I#b€¾ðê $€€”ãöñõ€‰‚ÿ€*€”‚ÿÿÿS´O h€ YM oHandleBoxManipTransform node with 3D Interface for editing ScaleFactor and Translation¢Y´O I#b€²ðê $€€”ã+¯€‰‚ÿ€ €”‚ÿÿÿSoJackManipTransform node with 3D interface for rotating, scaling, and translating˜Oh€ ¢ I#b€žðê $€€”ã|`o€‰‚ÿ€,€”‚ÿÿÿSoPointLightManipPoint light node with 3D interface for editing location°g R‚ I#b€Îðê $€€”ã‰Ë 퀉‚ÿ€*€”‚ÿÿÿSoSpotLightManipSpotlight node with 3D interface for editing location, direction, and beam widthŸV¢ ñ‚ I#b€¬ðê $€€”㇫¬l€‰‚ÿ€$€”‚ÿÿÿSoTabBoxManipTransform node with 3D Interface for editing scale and translation¢YR‚ “ƒ I#b€²ðê $€€”ã›Ø1Ù€‰‚ÿ€*€”‚ÿÿÿSoTrackballManipTransform node with 3D interface for changing rotation and scaling³jñ‚ F„ I#b€Ôðê $€€”ãr“žN€‰‚ÿ€0€”‚ÿÿÿSoTransformBoxManipTransform node with 3D interface for changing scaling, rotation, and translation²i“ƒ ø„ I#b€Òðê $€€”ãøÀ‰‚ÿ€.€”‚ÿÿÿSoTransformerManipTransform node with 3D interface for changing scaling, rotation, and translation£ZF„ ›… I#b€´ðê $€€”ã%n’ €‰‚ÿ€*€”‚ÿÿÿSoTransformManipBase class for all transform nodes with built-in 3D user interfaces&ø„ Á… # €€€‚ÿ9›… ú… 1ÿœ‹:ú… *† ø‹ Nodekits0 Á… *† % €€ˆˆ€‚ÿNodekits'ú… Q† $ €€”€‚ÿw.*† Ȇ I#b€\ôè $€€”ãNw¶°€‰‚ÿ€(€”‚ÿÿÿSoAppearanceKitAppearance nodekit classu,Q† =‡ I#b€Xôè $€€”ãib€‰‚ÿ€€”‚ÿÿÿSoBaseKitBase class for all node kitso&Ȇ ¬‡ I#b€Lôè $€€”ãásÆú€‰‚ÿ€ €”‚ÿÿÿSoCameraKitCamera nodekit classŽE=‡ :ˆ I#b€Šôè $€€”ã¤ÓÍñ€‰‚ÿ€*€”‚ÿÿÿSoInteractionKitBase class for all interaction nodekit classesm$¬‡ §ˆ I#b€Hôè $€€”ã€ÀÏ€‰‚ÿ€€”‚ÿÿÿSoLightKitLight nodekit classt+:ˆ ‰ I#b€Vôè $€€”ã0d$€‰‚ÿ€€”‚ÿÿÿSoNodeKitInitializes nodekit classes„;§ˆ Ÿ‰ I#b€vôè $€€”ã½á–€‰‚ÿ€,€”‚ÿÿÿSoNodeKitListPartGroup node with restricted childrenu,‰ Š I#b€Xôè $€€”ãõˆ¨f€‰‚ÿ€*€”‚ÿÿÿSoNodekitCatalogNodekit catalog classm$Ÿ‰ Š I#b€Hôè $€€”ã’o>‚ÿ€€”‚ÿÿÿSoSceneKitScene nodekit classu,Š öŠ I#b€Xôè $€€”ãOËr€‰‚ÿ€&€”‚ÿÿÿSoSeparatorKitSeparator nodekit classm$Š c‹ I#b€Hôè $€€”ãЃ'€‰‚ÿ€€”‚ÿÿÿSoShapeKitShape nodekit classq(öŠ Ô‹ I#b€Pôè $€€”ã°çT€‰‚ÿ€"€”‚ÿÿÿSoWrapperKitWrapper nodekit class$c‹ ø‹ " €€€ÿ6Ô‹ .Œ 1l<î;.Œ [Œ 3ˆ Nodes-ø‹ [Œ % €€ˆˆ€‚ÿNodes'.Œ ‚Œ $ €€”€‚ÿq([Œ óŒ I#b€P5Ÿ $€€”ãÇl‚€‰‚ÿ€"€”‚ÿÿÿSoAnnotationAnnotation group nodeo&‚Œ b I#b€L5Ÿ $€€”ãhË€‰‚ÿ€ €”‚ÿÿÿSoAnnoText3Annotation text node€7óŒ â I#b€n5Ÿ $€€”ãUBùT€‰‚ÿ€0€”‚ÿÿÿSoAnnoText3PropertyAnnotation text property node‘Hb sŽ I#b€5Ÿ $€€”ã±*:ù€‰‚ÿ€"€”‚ÿÿÿSoAntiSquishTransformation node that undoes non-uniform 3D scalesžUâ  I#b€ª5Ÿ $€€”ãÝo§–€‰‚ÿ€€”‚ÿÿÿSoArrayGroup node that creates a regular IxJxK array of copies of its childrent+sŽ … I#b€V5Ÿ $€€”ãFCïÓ€‰‚ÿ€ €”‚ÿÿÿSoAsciiTextSimple 3D text shape nodeƒ: À I#b€t5Ÿ $€€”ãÚ{tm€‰‚ÿ€ €”‚ÿÿÿSoBaseColorNode that defines an object's base… À ø‹ color8… •À I#b€p5Ÿ $€€”ãGb-o€‰‚ÿ€(€”‚ÿÿÿSoBevelPropertyNode to define beveling propertiesu,À Á I#b€X5Ÿ $€€”ã)Æa€‰‚ÿ€€”‚ÿÿÿSoBlinkerAnimated cycling switch node8•À ‹Á I#b€p5Ÿ $€€”ãM*Ÿ€‰‚ÿ€€”‚ÿÿÿSoCallbackProvides custom behavior during actions|3 Á  I#b€f5Ÿ $€€”ã½V)\€‰‚ÿ€€”‚ÿÿÿSoCameraAbstract base class for camera nodesn%‹Á u I#b€J5Ÿ $€€”ãÄØ¡€‰‚ÿ€ €”‚ÿÿÿSoClipPlaneClipping plane nodet+ é I#b€V5Ÿ $€€”ãW­‚Á€‰‚ÿ€"€”‚ÿÿÿSoColorIndexSurface color index nodeq(u Zà I#b€P5Ÿ $€€”ãžvšN€‰‚ÿ€"€”‚ÿÿÿSoComplexityShape complexity nodeeé ¿Ã I#b€85Ÿ $€€”ãï9€‰‚ÿ€€”‚ÿÿÿSoConeCone shape noder)Zà 1Ä I#b€R5Ÿ $€€”ã[Eà€‰‚ÿ€$€”‚ÿÿÿSoCoordinate3Coordinate point node{2¿Ã ¬Ä I#b€d5Ÿ $€€”ã\Eà€‰‚ÿ€$€”‚ÿÿÿSoCoordinate4Rational coordinate point nodee1Ä Å I#b€85Ÿ $€€”ãAA9€‰‚ÿ€€”‚ÿÿÿSoCubeCube shape nodem$¬Ä ~Å I#b€H5Ÿ $€€”ãþ‚dñ€‰‚ÿ€€”‚ÿÿÿSoCylinderCylinder shape nodeŽEÅ Æ I#b€Š5Ÿ $€€”ãÀú€‰‚ÿ€.€”‚ÿÿÿSoDirectionalLightNode representing a directional light sourceŒC~Å ˜Æ I#b€†5Ÿ $€€”ãy‚2€‰‚ÿ€ €”‚ÿÿÿSoDrawStyleNode that defines the style to use when rendering8 Æ Ç I#b€p5Ÿ $€€”ãµô˜o€‰‚ÿ€€”‚ÿÿÿSoEdgeFlagClass to mark/unmark edges for bevelingt+˜Æ Ç I#b€V5Ÿ $€€”ãN„h€‰‚ÿ€$€”‚ÿÿÿSoEnvironmentGlobal environment noder)Ç ÿÇ I#b€R5Ÿ $€€”ãø@〉‚ÿ€€”‚ÿÿÿSoFaceSetPolygonal face shape node€7Ç È I#b€n5Ÿ $€€”ãü9€‰‚ÿ€€”‚ÿÿÿSoFileNode that reads children from a named fileƒ:ÿÇ É I#b€t5Ÿ $€€”ã·»9€‰‚ÿ€€”‚ÿÿÿSoFontNode that defines font type and size for textt+È vÉ I#b€V5Ÿ $€€”ãv‹}€‰‚ÿ€ €”‚ÿÿÿSoFontStyleSimple 3D text style nodeu,É ëÉ I#b€X5Ÿ $€€”ã«]à—€‰‚ÿ€€”‚ÿÿÿSoGroupBase class for all group nodes…<vÉ pÊ I#b€x5Ÿ $€€”ã«:B˜€‰‚ÿ€€”‚ÿÿÿSoImageDisplays an image that always faces the camera8ëÉ ñÊ I#b€p5Ÿ $€€”ãlÌ…€‰‚ÿ€*€”‚ÿÿÿSoIndexedFaceSetIndexed polygonal face shape node{2pÊ lË I#b€d5Ÿ $€€”ãUIÕ¢€‰‚ÿ€*€”‚ÿÿÿSoIndexedLineSetIndexed polyline shape node8ñÊ íË I#b€p5Ÿ $€€”ã|Ťã€‰‚ÿ€0€”‚ÿÿÿSoIndexedNurbsCurveIndexed NURBS curve shape node…<lË rÌ I#b€x5Ÿ $€€”ã^`ˆ½€‰‚ÿ€4€”‚ÿÿÿSoIndexedNurbsSurfaceIndexed NURBS surface shape node•LíË Í I#b€˜5Ÿ $€€”ã$‘³t€‰‚ÿ€&€”‚ÿÿÿSoIndexedShapeAbstract base class for all indexed vertex-based shapesŽErÌ •Í I#b€Š5Ÿ $€€”ã×ïþö€‰‚ÿ€<€”‚ÿÿÿSoIndexedTriangleStripSetIndexed triangle strip set shape node}4Í Î I#b€h5Ÿ $€€”ãÚV9€‰‚ÿ€€”‚ÿÿÿSoInfoNode containing information text stringx/•Í ŠÎ I#b€^5Ÿ $€€”ãÄ2И€‰‚ÿ€€”‚ÿÿÿSoLabelNode containing label text stringƒ:Î Ï I#b€t5Ÿ $€€”ã¬ñ†€‰‚ÿ€(€”‚ÿÿÿSoLevelOfDetailLevel-of-detail switching group nodeÁxŠÎ ÎÏ I#b€ð5Ÿ $€€”㊆Ř€‰‚ÿ€8€”‚ÿÿÿSoLevelOfSimplificationLevel-of-detail switching node designed for grouping simplified versions of the same shape…< Ï _ I#b€x5Ÿ $€€”ã ÚÎÏ _ ø‹ ˜€‰‚ÿ€€”‚ÿÿÿSoLightAbstract base class for all light source nodes–MÎÏ õ I#b€š5Ÿ $€€”ãg!à‚€‰‚ÿ€"€”‚ÿÿÿSoLightModelNode that defines the lighting model to use when renderingl#_ a I#b€F5Ÿ $€€”ã>J€‰‚ÿ€€”‚ÿÿÿSoLineSetPolyline shape node}4õ Þ I#b€h5Ÿ $€€”ãä+Ža€‰‚ÿ€(€”‚ÿÿÿSoLinearProfilePiecewise-linear profile curve”Ka r I#b€–5Ÿ $€€”ãN=TŽ€‰‚ÿ€,€”‚ÿÿÿSoLocateHighlightSpecial separator that performs locate highlightingˆ?Þ ú I#b€~5Ÿ $€€”ã…AH€‰‚ÿ€€”‚ÿÿÿSoLODDistance-based level-of-detail switching group node¨_r ¢ I#b€¾5Ÿ $€€”ãüqó>€‰‚ÿ€ €”‚ÿÿÿSoMarkerSetExtension of Point Set that draws a small bitmap (symbol) at each 3D locationz1ú  I#b€b5Ÿ $€€”ãOjnÄ€‰‚ÿ€€”‚ÿÿÿSoMaterialSurface material definition nodeŸV¢ » I#b€¬5Ÿ $€€”ãÞ!€€‰‚ÿ€,€”‚ÿÿÿSoMaterialBindingNode that specifies how multiple materials are bound to shapesŒI G C#V€’5Ÿ €€”€‚ÿ€$€”‚ÿÿÿSoMaterialIndex(OBSOLETE) Surface material node for color index modežU» å I#b€ª5Ÿ $€€”ãß퀉‚ÿ€,€”‚ÿÿÿSoMatrixTransformNode that specifies a 3D geometric transformation as a matrix™PG ~ I#b€ 5Ÿ $€€”ã™ü ;€‰‚ÿ€&€”‚ÿÿÿSoMultipleCopyGroup node that traverses multiple times, applying matrices€7å þ I#b€n5Ÿ $€€”ã’n%9€‰‚ÿ€€”‚ÿÿÿSoNodeAbstract base class for all database nodesœS~ š I#b€¦5Ÿ $€€”ã5ÖfE€‰‚ÿ€,€”‚ÿÿÿSoNonIndexedShapeAbstract base class for all non-indexed vertex-based shapes„;þ  I#b€v5Ÿ $€€”ãKÕl¿€‰‚ÿ€€”‚ÿÿÿSoNormalNode that defines surface normals for shapes£Zš Á I#b€´5Ÿ $€€”ãRÜ4€‰‚ÿ€(€”‚ÿÿÿSoNormalBindingNode that specifies how multiple surface normals are bound to shapesr) 3 I#b€R5Ÿ $€€”ãÓÂ.€‰‚ÿ€"€”‚ÿÿÿSoNurbsCurveNURBS curve shape nodeq(Á ¤ I#b€P5Ÿ $€€”ã‰X˜é€‰‚ÿ€&€”‚ÿÿÿSoNurbsProfileNURBS profile curve¤[3 H I#b€¶5Ÿ $€€”ã¥Ý›>€‰‚ÿ€(€”‚ÿÿÿSoNurbsPropertyNode that defines additional properties for rendering a NURBS surfacev-¤ ¾ I#b€Z5Ÿ $€€”ã½)×n€‰‚ÿ€&€”‚ÿÿÿSoNurbsSurfaceNURBS surface shape node²iH p I#b€Ò5Ÿ $€€”ãjhšö€‰‚ÿ€*€”‚ÿÿÿSoOctreeOrderingGroup node that maintains a transparent octree organization of the shapes below it|3¾ ì I#b€f5Ÿ $€€”ãÁž._€‰‚ÿ€2€”‚ÿÿÿSoOrthographicCameraOrthographic camera node–Mp ‚ I#b€š5Ÿ $€€”ã;Û €‰‚ÿ€$€”‚ÿÿÿSoPackedColorNode that defines base colors using packed representationœSì  I#b€¦5Ÿ $€€”ãÅÌ€‰‚ÿ€"€”‚ÿÿÿSoPathSwitchGroup node that traverses only when traversed along a given path“J‚ ± I#b€”5Ÿ $€€”㜞€‰‚ÿ€€”‚ÿÿÿSoPatternNode that defines the pattern to use when rendering shapes|3 - I#b€f5Ÿ $€€”ãŠäÀO€‰‚ÿ€€”‚ÿÿÿSoPendulumAnimated oscillating rotation nodez1± § I#b€b5Ÿ $€€”ã}”z»€‰‚ÿ€0€”‚ÿÿÿSoPerspectiveCameraPerspective camera nodem$-  I#b€H5Ÿ $€€”ãX«]˜€‰‚ÿ€ €”‚ÿÿÿSoPickStylePicking style node‚9§ – I#b€r5Ÿ $€€”㦊3ý€‰‚ÿ€"€”‚ÿÿÿSoPointLightNode representing a point light sourcen% @ I#b€J5Ÿ $€€”ã:"ÍÝ€‰‚ÿ€€”‚ÿÿÿSoPointSetPoint set shape no– @ ø‹ de‘H– ¡@ I#b€5Ÿ $€€”ãAÛÓ€‰‚ÿ€(€”‚ÿÿÿSoPolygonOffsetProvides access to OpenGL's polygon offset feature‚9@ #A I#b€r5Ÿ $€€”ãaC}2€‰‚ÿ€€”‚ÿÿÿSoProfileAbstract base class for all profile nodes{2¡@ žA I#b€d5Ÿ $€€”ã-ÒÀ€‰‚ÿ€2€”‚ÿÿÿSoProfileCoordinate2Profile coordinate node„;#A "B I#b€v5Ÿ $€€”ã.ÒÀ€‰‚ÿ€2€”‚ÿÿÿSoProfileCoordinate3Rational profile coordinate nodew.žA ™B I#b€\5Ÿ $€€”ã¼$ú³€‰‚ÿ€€”‚ÿÿÿSoQuadMeshQuadrilateral mesh shape node·n"B PC I#b€Ü5Ÿ $€€”㼿ai€‰‚ÿ€"€”‚ÿÿÿSoRenderListAbstract group node that changes traversal from the scene graph to a list of render objects—N™B çC I#b€œ5Ÿ $€€”ãɘƥ€‰‚ÿ€*€”‚ÿÿÿSoResetTransformNode that resets the current transformation to identity‘HPC xD I#b€5Ÿ $€€”ãúD×΀‰‚ÿ€€”‚ÿÿÿSoRotationNode representing a 3D rotation about an arbitrary axis“JçC E I#b€”5Ÿ $€€”ãƒ$s€‰‚ÿ€$€”‚ÿÿÿSoRotationXYZRepresenting a 3D rotation about the x-, y-, or z-axism$xD xE I#b€H5Ÿ $€€”㪲š€‰‚ÿ€€”‚ÿÿÿSoRotorAnimated rotation node6 E ÷E I#b€l5Ÿ $€€”ã®Ä?š€‰‚ÿ€€”‚ÿÿÿSoScaleNode representing a 3D geometric scalingDxE „F I#b€ˆ5Ÿ $€€”ãÍ\Y€‰‚ÿ€ €”‚ÿÿÿSoSeparatorGroup node that saves and restores traversal state~5÷E G I#b€j5Ÿ $€€”ã9ÖEš€‰‚ÿ€€”‚ÿÿÿSoShapeAbstract base class for all shape nodes8„F ƒG I#b€p5Ÿ $€€”ãsBmf€‰‚ÿ€"€”‚ÿÿÿSoShapeHintsNode that provides hints about shapes~5G H I#b€j5Ÿ $€€”ãñâ€F€‰‚ÿ€€”‚ÿÿÿSoShuttleAnimated oscillating translation nodei ƒG jH I#b€@5Ÿ $€€”ãñd뀉‚ÿ€€”‚ÿÿÿSoSphereSphere shape node6H éH I#b€l5Ÿ $€€”ã¨òƯ€‰‚ÿ€ €”‚ÿÿÿSoSpotLightNode representing a spotlight sourceÀwjH ©I I#b€î5Ÿ $€€”ã`¤q΀‰‚ÿ€(€”‚ÿÿÿSoSurroundScaleTransformation node that adjusts the current matrix so a default cube will surround other objects8éH *J I#b€p5Ÿ $€€”ã0MÓ쀉‚ÿ€€”‚ÿÿÿSoSwitchGroup node that traverse one chosen childx/©I ¢J I#b€^5Ÿ $€€”ãéwš€‰‚ÿ€€”‚ÿÿÿSoText2Screen-aligned 2D text shape nodei *J K I#b€@5Ÿ $€€”ãêwš€‰‚ÿ€€”‚ÿÿÿSoText33D text shape nodeq(¢J |K I#b€P5Ÿ $€€”ãÿÓ>Ñ€‰‚ÿ€€”‚ÿÿÿSoTexture22D texture mapping node8 K ýK I#b€p5Ÿ $€€”ãqŠ•±€‰‚ÿ€0€”‚ÿÿÿSoTexture2Transform2D texture transformation nodeq(|K nL I#b€P5Ÿ $€€”ãÔ>Ñ€‰‚ÿ€€”‚ÿÿÿSoTexture33D texture mapping node8ýK ïL I#b€p5Ÿ $€€”ã¼t¯§€‰‚ÿ€0€”‚ÿÿÿSoTexture3Transform3D texture transformation node~5nL mM I#b€j5Ÿ $€€”ã·ºz€‰‚ÿ€2€”‚ÿÿÿSoTextureCoordinate22D texture coordinate node~5ïL ëM I#b€j5Ÿ $€€”ã·ºz€‰‚ÿ€2€”‚ÿÿÿSoTextureCoordinate33D texture coordinate node©`mM ”N I#b€À5Ÿ $€€”ãf;1c€‰‚ÿ€>€”‚ÿÿÿSoTextureCoordinateBindingNode that specifies how texture coordinates are bound to shapesšQëM .O I#b€¢5Ÿ $€€”ãnš0€‰‚ÿ€>€”‚ÿÿÿSoTextureCoordinateDefaultNode that removes texture coordinates from state¶m”N € I#b€Ú5Ÿ $€€”ãÄaç<€‰‚ÿ€F€”‚ÿÿÿSoTextureCoordinateEnvironmentNode that specifies texture coordinates by projection from a environment.O € ø‹ ¤[.O °€ I#b€¶5Ÿ $€€”ã“y€‰‚ÿ€@€”‚ÿÿÿSoTextureCoordinateFunctionAbstract base class for texture coordinate function nodesªa € Z I#b€Â5Ÿ $€€”ã™ØÌ€‰‚ÿ€:€”‚ÿÿÿSoTextureCoordinatePlaneNode that specifies texture coordinates by projection from a planeƒ:°€ Ý I#b€t5Ÿ $€€”ã¼ýÓ€‰‚ÿ€ €”‚ÿÿÿSoTransformGeneral 3D geometric transformation node›RZ x‚ I#b€¤5Ÿ $€€”ãáGŒw€‰‚ÿ€2€”‚ÿÿÿSoTransformSeparatorGroup node that saves and restores transformation statešQÝ ƒ I#b€¢5Ÿ $€€”ã¥W7ž€‰‚ÿ€*€”‚ÿÿÿSoTransformationAbstract base class for all geometric transformation nodes6x‚ ‘ƒ I#b€l5Ÿ $€€”ã%ÑP€‰‚ÿ€$€”‚ÿÿÿSoTranslationNode representing a 3D translation6ƒ „ I#b€l5Ÿ $€€”ã†ÀÍb€‰‚ÿ€.€”‚ÿÿÿSoTriangleStripSetTriangle strip set shape node‚9‘ƒ ’„ I#b€r5Ÿ $€€”ã­µš€‰‚ÿ€€”‚ÿÿÿSoUnitsNode that scales to convert units of lengthç„ y… J#b€;5Ÿ $€€”ãùÉ€‰‚ÿ€(€”‚ÿÿÿSoValueOrderingGroup node that alters the decimation of shapes below it depending on their rendering value as approximated by their size on the screen†=’„ ÿ… I#b€z5Ÿ $€€”ãP!ö€‰‚ÿ€"€”‚ÿÿÿSoVertexFlagClass to mark/unmark vertices for bevelingt+y… s† I#b€V5Ÿ $€€”ãmý¼€‰‚ÿ€*€”‚ÿÿÿSoVertexPropertyVertex property node‘Hÿ… ‡ I#b€5Ÿ $€€”ã¹êZY€‰‚ÿ€$€”‚ÿÿÿSoVertexShapeAbstract base class for all vertex-based shape nodes„;s† ˆ‡ I#b€v5Ÿ $€€”ã\º˜O€‰‚ÿ€ €”‚ÿÿÿSoWWWAnchorSeparator group node with a URL hyperlink…<‡ ˆ I#b€x5Ÿ $€€”ã` ½•€‰‚ÿ€ €”‚ÿÿÿSoWWWInLineNode that refers to children through a URL&ˆ‡ 3ˆ # €€€‚ÿ; ˆ nˆ 1¾ê‚1<nˆ  ˆ -Ž Projectors2 3ˆ  ˆ % €€ˆˆ€‚ÿProjectors'nˆ Lj $ €€”€‚ÿ€7 ˆ G‰ I#b€n5† $€€”ãÑŒç΀‰‚ÿ€:€”‚ÿÿÿSbCylinderPlaneProjectorCylinder-plane projectorv-Lj ½‰ I#b€Z5† $€€”ã?rW€‰‚ÿ€0€”‚ÿÿÿSbCylinderProjectorCylinder projector „;G‰ AŠ I#b€v5† $€€”ã¬ʧ€‰‚ÿ€>€”‚ÿÿÿSbCylinderSectionProjectorCylinder-section projector€7½‰ ÁŠ I#b€n5† $€€”ãîmXj€‰‚ÿ€:€”‚ÿÿÿSbCylinderSheetProjectorCylinder-sheet projectorm$AŠ .‹ I#b€H5† $€€”ã‘ôR7€‰‚ÿ€(€”‚ÿÿÿSbLineProjectorLine projectoro&ÁŠ ‹ I#b€L5† $€€”ãC}Î‚ÿ€*€”‚ÿÿÿSbPlaneProjectorPlane projector8.‹ Œ I#b€p5† $€€”ãuLœM€‰‚ÿ€ €”‚ÿÿÿSbProjectorBase class for representing projectors|3‹ šŒ I#b€f5† $€€”ãô4Ô€‰‚ÿ€6€”‚ÿÿÿSbSpherePlaneProjectorSphere-plane projectorq(Œ I#b€P5† $€€”ãøaK´€‰‚ÿ€,€”‚ÿÿÿSbSphereProjectorSphere projector€7šŒ ‹ I#b€n5† $€€”ãwƒq+€‰‚ÿ€:€”‚ÿÿÿSbSphereSectionProjectorSphere-section projector|3 Ž I#b€f5† $€€”ãŠo€‰‚ÿ€6€”‚ÿÿÿSbSphereSheetProjectorSphere-sheet projector&‹ -Ž # €€€‚ÿ< Ž iŽ 17ÿÿÿÿ{Š=ÿÿÿÿiŽ Æ SVI ButtonsL-Ž ÁÀ L f€€€‚€‚‚€†"€‚€‚‚€†"€‚€‚ÿViewer ButtonsIf the SceneViewer window is too small, not all of these buttons will be visible. Select/Pick ButtonSelects object manipulation or pick mode (and deselects camera or viewer mode). The cursor shape will change to an arrow. In this mode, the user is manipulating objects in the scene graph. View ButtonSeiŽ ÁÀ -Ž lects camera or viewer mode (and deselects object manipulation or pick mode). The cursor shape will change to a hand icon. In this mode, the user is moving the camera in 3D space.WÚiŽ Ä } È€¿€€‚€†"€‚€‚‚€†"€‚€‚‚€†"€‚€‚‚€†"€‚€‚‚€†"€‚€‚ÿ HelpThis menu provides help about the application. Home ButtonReturns the camera to its home position (initial position if not reset). Set Home ButtonResets the home position to the current camera position. View All ButtonBrings the entire scene graph into view. Seek ButtonAllows the user to select a new center of rotation for the camera. When clicked on (and in viewer mode) the cursor changes to a crosshair. The next left mouse buttonpress causes whatever is underneath the cursor to be selected as the new center of rotation. Once the button is released, the camera either jumps or animates to its new position depending on the current setting of the seek time in the preferences dialog box.ï‹ÁÀ Æ d –€!€€‚€†"€ †"€!†"€"‚€‚‚€†"€#†"€$‚€‚‚‚ÿ Camera Alignment ButtonsSelect the axis of alignment (X, Y, or Z) of the camera. Only displayed for Plane Viewers. Projection ButtonSelects the type of camera used by the viewer. It toggles between the two available camera types --perspective and orthographic. Only displayed for Examiner and Plane viewers.The Dolly thumbwheel is only available to the perspective camera.AÄ HÆ 1à€·„>ÿÿÿÿHÆ çÊ SVI Color Editor®yÆ öÈ 5 8€õ€€‚€‚‚†"€%‚‚‚ÿColor EditorsThe color editors are used for editing a number of different properties, including the background color, light colors, and various material colors. They all have this same general appearance. This one, for example, is used for setting a material's diffuse color.You can drag the marker in the color wheel to select a color. You move the V (value) slider to control the intensity of the color. The color boxes display the currently selected color and the previous color. You can use the arrow buttons to switch back and forth between them. By default, the scene is automatically updated as you modify the color.ñ¼HÆ çÊ 5 8€y€€‚€‚€‚‚€‚€‚ÿEdit MenuThe color editor's Copy menu item allows you to copy the current color to the Windows clipboard. The Paste menu item applies that color to the currently selected object. The Paste menu item will also apply the color component from a material that was copied to the clipboard by the material editor.Sliders MenuThe color editor can display sliders that allow you to directly manipulate the components of an RGB or HSV color.9öÈ Ë 1¨{ŠC?ÿÿÿÿ Ë Í SVI Edit*çÊ JË # €€€‚ÿEdit[ Ë ¥Ë C#V€0¥ €€”€‚ÿ€€”‚ÿÿÿUndoNot implemented\JË Ì C#V€2¥ €€”€‚ÿ€.€”‚ÿÿÿ--------------------€7¥Ë Ì I#b€n¥ $€€”€€ €‚ÿ€€”‚ÿÿÿCutCut the selection and put it on the Clipboard~8Ì ÿÌ F#\€p¥ €€”€ €‚ÿ€€”‚ÿÿÿCopyCopy the selection and put it on the Clipboardj$Ì iÍ F#\€H¥ €€”€ €‚ÿ€€”‚ÿÿÿPasteInsert Clipboard contents&ÿÌ Í # €€€‚ÿ< iÍ ËÍ 1z3…Ä‚@ÿÿÿÿËÍ Ï SVI Editors>Í Ï 6 :€€€‚€‚‚ã0>D‰ã^–Q%‰‚ÿEditorsSceneViewer provides a variety of editors that make it easy for you to change colors, material properties, and headlight properties.This menu launches the Material Editor and the Color Editor. An object must be selected for the menu to be active.9ËÍ BÏ 1»5¥ˆAÿÿÿÿBÏ ¶ SVI File* Ï lÏ # €€€‚ÿFilet.BÏ àÏ F#\€\´þ €€”€ €‚ÿ€€”‚ÿÿÿNew...Open a new (empty, untitled) scene†@lÏ r F#\€€´þàÏ r Ï €€”€ €‚ÿ€€”‚ÿÿÿOpen...Open an existing scene (replaces the current scene)ƒ=àÏ õ F#\€z´þ €€”€ €‚ÿ€€”‚ÿÿÿImport...Open an existing scene and add it to the sceneer Z F#\€>´þ €€”€ €‚ÿ€€”‚ÿÿÿSaveSave the active scene6õ Ù I#b€l´þ $€€”€€ €‚ÿ€€”‚ÿÿÿSave As...Save the active scene with a new name\Z 5 C#V€2´þ €€”€‚ÿ€.€”‚ÿÿÿ--------------------k%Ù   F#\€J´þ €€”€ €‚ÿ€€”‚ÿÿÿPrint...Print the current scenev-5  I#b€Z´þ $€€”€€ €‚ÿ€$€”‚ÿÿÿPrint PreviewDisplay full page preview…<  › I#b€x´þ $€€”€€ €‚ÿ€&€”‚ÿÿÿPrint Setup...Change the printer and printing options\ ÷ C#V€2´þ €€”€‚ÿ€.€”‚ÿÿÿ--------------------y3› p F#\€f´þ €€”€ €‚ÿ€€”‚ÿÿÿInfo...Display scene description info, if any\÷ Ì C#V€2´þ €€”€‚ÿ€.€”‚ÿÿÿ--------------------q+p = F#\€V´þ €€”€ €‚ÿ€ €”‚ÿÿÿ1Open this scene (most recently used)` Ì  V#|€´þ €€”€ €‚ÿ€ €”ÿ€ €”‚Hƒ‚ÿÿÿ2"p =  e#š€´þ €€”‚Hÿ€€”€ €‚ÿ€ €”ÿ€€”‚Hƒ‚ÿÿÿ3"p  } e#š€´þ €€”‚Hÿ€€”€ €‚ÿ€ €”ÿ€€”‚Hƒ‚ÿÿÿ4"  ü b#”€:´þ €€”‚Hÿ€€”€‚ÿ€0€”ÿ€2€”‚Hƒ‚ÿÿÿ--------------------"“;}  X#€€v´þ €€”‚Hÿ$€€”€€ €‚ÿ€€”‚ÿÿÿExitQuit the application; prompts to save documents'ü ¶ $ €€”€‚ÿB ø 1{h˜Bÿÿÿÿø 1 SVI Graphics Areaº¶ ² - (€€€‚€‚‚€‚ÿGraphics AreaShown is the default Examiner Viewer. In the Examiner Viewer you can use the cursor to move and spin objects.Mouse Usagep-ø " C#V€Z” €€”€‚ÿ€€”‚ÿÿÿLeft Mouse:Rotate the virtual trackball.Z² ¿ C#V€´” €€”€‚ÿ€*€”‚ÿÿÿCtrl + Left Mouse:Used for roll action (rotates around the viewer forward direction).x5" 7 C#V€j” €€”€‚ÿ€ €”‚ÿÿÿMiddle Mouse:Translate up, down, left and right.‚?¿ ¹ C#V€~” €€”€‚ÿ€€”‚ÿÿÿAlternative to the Middle Mouse button: Shift + Left MouseŸ\7 X C#V€¸” €€”€‚ÿ€.€”‚ÿÿÿLeft + Middle Mouse:Dolly in and out (gets closer to and further away from the object).‰F¹ á C#V€Œ” €€”€‚ÿ€€”‚ÿÿÿAlternative to the Middle Mouse button: Ctrl + Shift + Left Mouseh%X I C#V€J” €€”€‚ÿ€€”‚ÿÿÿRight Mouse:Open the popup menu.;á „ ' €(€€‚€‚ÿPredefined Keysx5I ü C#V€j˜ €€”€‚ÿ€€”‚ÿÿÿEscapeToggles between viewing and selection modeh%„ d C#V€J˜ €€”€‚ÿ€€”‚ÿÿÿHomeSets camera to Home position§dü  C#V€È˜ €€”€‚ÿ€ €”‚ÿÿÿ's'Activate Seek mode. Press (but do not hold down) the 's' key, then click on a target object.&d 1 # €€€‚ÿE  v 1Y·„DCÿÿÿÿv i@ SVI Headlight Editorç°1 i@ 7 <€c€€‚€‚‚†"€&‚‚‚‚‚ÿHeadlight EditorThe headlight editor allows you to control the direction and the intensity of the viewer's headlight.You can drag the arrow icon to directly manipulate the direction in which the headlight is shining. The edit menu allows you to bring up a color editor to change the headlight color. It also allows you to copy thv i@ 1 e current headlight properties to the Windows clipboard, and apply them to the scene later.9v ¢@ 1ƒo„Dÿÿÿÿ¢@ ø@ SVI HelpV/i@ ø@ ' €^€€‚€‚ÿHelpThis menu item displays the help file.; ¢@ 3A 1½Ä‚ƒEÿÿÿÿ3A µG SVI Lights, ø@ _A # €€€‚ÿLights‚33A áA O#n€fëÎ $€€”€€ €‚ÿ€*€”ãÌ“Ò=‰‚ÿÿÿCreate Dir LightCreate a directional light~/_A _B O#n€^ëÎ $€€”€€ €‚ÿ€.€”ãF@‚z‰‚ÿÿÿCreate Point LightCreate a point light|-áA ÛB O#n€ZëÎ $€€”€€ €‚ÿ€,€”ãŽgñ¸‰‚ÿÿÿCreate Spot LightCreate a spot light\_B 7C C#V€2ëÎ €€”€‚ÿ€.€”‚ÿÿÿ--------------------›OÛB ÒC L#h€žëÎ €€”€ €‚ÿ€.€”ã^–Q%‰‚ÿÿÿAmbient Lighting...Edit the ambient light color (launches color editor)\7C .D C#V€2ëÎ €€”€‚ÿ€.€”‚ÿÿÿ--------------------q(ÒC ŸD I#b€PëÎ $€€”€€ €‚ÿ€ €”‚ÿÿÿTurn all ONTurn on all the lightss*.D E I#b€TëÎ $€€”€€ €‚ÿ€"€”‚ÿÿÿTurn all OFFTurn off all the lightsm*ŸD E C#V€TëÎ €€”€‚ÿ€"€”‚ÿÿÿShow all IconsDisplay the light iconsj'E éE C#V€NëÎ €€”€‚ÿ€"€”‚ÿÿÿHide all IconsHide all light icons\E EF C#V€2ëÎ €€”€‚ÿ€.€”‚ÿÿÿ--------------------›RéE àF I#b€¤ëÎ €€”€‚ÿ€€”ã/ëa‰‚ÿÿÿHeadlight >Turn headlight on or off and edit it (launches headlight editor)®kEF ŽG C#V€ÖëÎ €€”€‚ÿ€,€”‚ÿÿÿIf there are additional lights in the scene, you can edit some of their properties.'àF µG $ €€”€‚ÿ; ŽG ðG 1ds‰/€FÿÿÿÿðG M SVI Manips, µG H # €€€‚ÿManips’FðG ®H L#h€Œ÷¼ €€”€ €‚ÿ€2€”ã}ˆꉂÿÿÿUniversal TransformerSelects universal transformer manipulatorz.H (I L#h€\÷¼ €€”€ €‚ÿ€€”ãvÀ]§‰‚ÿÿÿTrackballSelects trackball manipulator{/®H £I L#h€^÷¼ €€”€ €‚ÿ€€”ã~Ó´ƒ‰‚ÿÿÿHandleBoxSelects handle box manipulatorp$(I J L#h€H÷¼ €€”€ €‚ÿ€€”ã«Í¨¸‰‚ÿÿÿJackSelects jack manipulator|0£I J L#h€`÷¼ €€”€ €‚ÿ€€”ã#k߉‚ÿÿÿCenterballSelects centerball manipulatory*J K O#n€T÷¼ $€€”€€ €‚ÿ€€”ãïÿ‰)‰‚ÿÿÿTabBoxSelects tab box manipulator…6J K O#n€l÷¼ $€€”€€ €‚ÿ€"€”ã ¬³‰‚ÿÿÿTransformBoxSelects transform box manipulator¶jK CL L#h€Ô÷¼ €€”€ €‚ÿ€€”ãàuˉ‚ÿÿÿNoneTurns off manipulator. Selected objects will be surrounded with a red wireframe box highlight.\K ŸL C#V€2÷¼ €€”€‚ÿ€.€”‚ÿÿÿ--------------------S CL òL F#\€÷¼ €€”€ €‚ÿ€€”‚ÿÿÿReplace'ŸL M $ €€”€‚ÿDòL ]M 1ño„hGÿÿÿÿ]M N SVI Material Editor­{M N 2 4€ø€€‚€‚‚†"€'‚ÿMaterial EditorThe material editor allows you to modify the appearance properties of the currently selected object.> ]M HN 1ÍCs‰HÿÿÿÿHN ʃ SVI Selectionæ½ N .O ) €{€€‚€‚‚ÿSelectionThis menu allows the different selection policies to be demonstrated. A selection policy determines how objects get added and removed from the collection of selected objects.{8HN ©O C#V€p² €€”€‚ÿ€€”‚ÿÿÿEnableToggles ability to select objects on and off.\.O € C#V€2² €€”€‚ÿ€.€”‚ÿÿÿ-------------------©O € N -ñ­©O  D#V€[² €€”€‚ÿ€&€”‚ÿÿÿSingle SelectionLeft mouse pick on object clears selection, then selects object. Left mouse pick on nothing clears selection. Only one object may be selected at a time.Û—€ Ý D#V€/² €€”€‚ÿ€&€”‚ÿÿÿToggle SelectionLeft mouse pick on object toggles its selection status. Left mouse pick on nothing does nothing. Multiple objects may be selected.é¥ Æ‚ D#V€K² €€”€‚ÿ€$€”‚ÿÿÿShift SelectionWhen shift key is down, selection policy is TOGGLE. When shift key is up, selection policy is SINGLE. Multiple objects may be selected. (DEFAULT)\Ý "ƒ C#V€2² €€”€‚ÿ€.€”‚ÿÿÿ-------------------->Æ‚ £ƒ C#V€|² €€”€‚ÿ€ €”‚ÿÿÿSelect ParentSelects parent of currently selected object.'"ƒ ʃ $ €€”€‚ÿ9£ƒ „ 1. ¥ˆ3…Iÿÿÿÿ„ ø SVI View*ʃ -„ # €€€‚ÿViewu)„ ¢„ L#h€R/† €€”€ €‚ÿ€€”€ €‚ÿÿÿToolbarToggle toolbar on and off.s--„ … F#\€Z/† €€”€ €‚ÿ€€”‚ÿÿÿStatus BarToggle status bar on and off.H¢„ ]… C#V€ /† €€”€‚ÿ€€”‚ÿÿÿ›X… ø… C#V€°/† €€”€‚ÿ€€”‚ÿÿÿViewingToggle between viewing mode (hand cursor) and selection mode (arrow cursor).\]… T† C#V€2/† €€”€‚ÿ€.€”‚ÿÿÿ--------------------Tø… ñ† I#b€¨/† €€”€‚ÿ€€”ãè;‰‚ÿÿÿExaminerSelect Examiner Viewer, which provides a virtual trackball interface.¦]T† —‡ I#b€º/† €€”€‚ÿ€ €”ã§í߉‚ÿÿÿFlySelect Fly-through Viewer, which is used for traveling through expansive data sets.–Mñ† -ˆ I#b€š/† €€”€‚ÿ€€”ã‡B艂ÿÿÿWalkSelect Walk Viewer, which is used for architectural walk-throughs.•L—‡ ˆ I#b€˜/† €€”€‚ÿ€€”ãþÜé*‰‚ÿÿÿPlaneSelect Plane Viewer, which is used for orthographic projections.\-ˆ ‰ C#V€2/† €€”€‚ÿ€.€”‚ÿÿÿ--------------------y6ˆ —‰ C#V€l/† €€”€‚ÿ€"€”‚ÿÿÿView SelectionMove camera to view selected objectb‰ ù‰ C#V€>/† €€”€‚ÿ€ €”‚ÿÿÿFogToggles fog on and off.t1—‰ mŠ C#V€b/† €€”€‚ÿ€€”‚ÿÿÿAntialiasingToggles antialiasing on and off.\ù‰ ÉŠ C#V€2/† €€”€‚ÿ€.€”‚ÿÿÿ-------------------->mŠ J‹ C#V€|/† €€”€‚ÿ€6€”‚ÿÿÿScreen Door TransparencySelects screen door transparency.y6ÉŠ Ë C#V€l/† €€”€‚ÿ€.€”‚ÿÿÿBlended TransparencySelects blended transparency.‰FJ‹ LŒ C#V€Œ/† €€”€‚ÿ€>€”‚ÿÿÿDelayed Blended TransparencySelects delayed blended transparency.‡DË ÓŒ C#V€ˆ/† €€”€‚ÿ€<€”‚ÿÿÿSorted Blended TransparencySelects sorted blended transparency.\LŒ / C#V€2/† €€”€‚ÿ€.€”‚ÿÿÿ--------------------šQÓŒ É I#b€¢/† €€”€‚ÿ€6€”ã^–Q%‰‚ÿÿÿEdit Background Color...Edit the background color (launches color editor).// ø , (€€Pi›~„i±€‚ÿ@É 8Ž 1B/€€Jÿÿÿÿ8Ž AÀ SVI View PointsýËø AÀ 2 2€—€€‚€‚‚‚‚€€‚ÿViewPointsThis menu provides a list of camera positions obtained when the scene was read in. (Some scenes don't have any.) If there are no viewpoints in the scene, this menu contains one item, Default View, which returns you to the home view.When an entry is selected, the camera moves to the position and orientation specified.Technical Note: Camera positions are contained under a Switch node wh8Ž AÀ ø ose name is "Cameras" within the scene graph file. 78Ž xÀ 1`ÿÿÿÿKxÀ ¦À Õ SbBool. AÀ ¦À % €€ˆˆ€‚ÿSbBool*xÀ ÐÀ # €€€‚ÿNAME>¦À Á & €0€”‘€€‚ÿSbBool - Boolean type3ÐÀ AÁ # € €€‚ÿINHERITS FROM3 Á tÁ ) "€€”‘€€€‚ÿSbBool2 AÁ ¦Á & €€€€ ‚ÿSYNOPSISF tÁ ìÁ & €@€”‘€€‚ÿ#include 1¦Á  # €€€‚ÿDESCRIPTION¸‹ìÁ Õ - (€€”‘€€€€‚ÿThis typedef is used to represent the Boolean values TRUE and FALSE. SbBool is not a class and does not have any methods or variables.8 à 1Õ€œL à <à êSbBox2f/ Õ <à % €€ˆˆ€‚ÿSbBox2f* à fà # €€€‚ÿNAME?<à ¥Ã & €2€”‘€€‚ÿSbBox2f - 2D box class3fà Øà # € €€‚ÿINHERITS FROM4 ¥Ã Ä ) "€€”‘€€€‚ÿSbBox2f2 Øà >Ä & €€€€ ‚ÿSYNOPSISa: Ä ŸÄ ' €t€”‘€€‚‚ÿ#include Methods from class SbBox2f:Aµ>Ä àÆ Œ æ€k€T”A‚S~‚A€ƒ‚ƒ‚ƒã}ƒõ(‰ã}ƒõ(‰‚ƒ‚ã}ƒõ(‰ƒ‚ã}ƒõ(‰ƒ‚ã}ƒõ(‰ƒ‚ƒã}ƒõ(‰‚ƒãçî$‰‚㑶p6‰ƒã}ƒõ(‰‚㑶p6‰ƒãçî$‰‚ƒ‚ÿSbBox2f()SbBox2f(float xmin,float ymin,float xmax, float ymax)SbBox2f(const SbVec2f &min,const SbVec2f &max)void~SbBox2f()const SbVec2f &getMin()const SbVec2f &getMax()SbVec2fgetCenter()voidextendBy(const SbVec2f &point)voidextendBy(const SbBox2f &box)SbBoolintersect(const SbVec2f &point)SbBoolintersect(const SbBox2f &box)voidsetBounds(float xmin,float ymin,float xmax,float ymax)«CŸÄ ‹È h ž€‡€T”A‚S~‚A€ƒã}ƒõ(‰ã}ƒõ(‰‚ƒ‚ƒã}ƒõ(‰ã}ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetBounds(const SbVec2f &min,const SbVec2f &max)voidgetBounds(float &xmin,float &ymin,float &xmax,float &ymax)voidgetBounds(SbVec2f &min,SbVec2f &max)voidgetOrigin(float &x0,float &y0)voidgetSize(float &x,float &y)floatgetAspectRatio()voidmakeEmpty()SbBoolisEmpty()SbBoolhasArea()4àÆ ¿È & €€‚A€‚ÿDESCRIPTION%û‹È äÉ * "€÷€”‘€‚A€‚ÿ2D box which has planes parallel to the major axes and is specified by two points (specified as floating point) on a diagonal. This class is part of the standard Open Inventor datatype classes and is used as input and output to geometry operations.0 ¿È Ê & €€‚A€‚ÿMETHODSÏŒäÉ ãÊ C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒã}ƒõ(‰ã}ƒõ(‰‚ƒ‚ÿSbBox2f()SbBox2f(float xmin,float ymin,float xmax, float ymax)SbBox2f(const SbVec2f &min,const SbVec2f &max)void~SbBox2f()ó±Ê ÖË B R€c€”‘€‚A€€€€€€€€€‚ÿConstructors and destructor for a 2D float box. xmin, ymin, xmax, and ymax are the bounds of the box. min and max are the corners of the diagonal that define the box.r8ãÊ HÌ : D€p€T”A‚S~‚A€ã}ƒõ(‰ƒ‚ã}ƒõ(‰ƒ‚ÿconst SbVec2f &getMin()const SbVec2f &getMax()^5ÖË ¦Ì ) "€j€”‘€‚A€‚ÿReturns the minimum and maximum points of the box.JHÌ ðÌ 2 4€0€T”A‚S~‚Aã}ƒõ(€‰ƒ‚ÿSbVec2fgetCenter()J!¦Ì :Í ) "€B€”‘€‚A€‚ÿReturns the center of the box.†LðÌ ÀÍ : D€˜€T”A‚S~‚A€ƒã}ƒõ(‰‚ƒãçî$‰‚ÿvoidextendBy(const SbVec2f &point)voidextendBy(const SbBox2f &box)xO:Í 8Î ) "€ž€”‘€‚A€‚ÿExtends this box (if necessary) to contain the specified point or other box.œVÀÍ ÔÎ F \€¬€T”A‚S~‚A㑶p6€‰ƒã}ƒõ(‰‚㑶p6‰ƒãçî$‰‚ÿSbBoolintersect(const SbVec2f &point)SbBoolintersect(const SbBox2f &box){F8Î OÏ 5 :€Œ€”‘€‚A€€€€€‚ÿReturns TRUE if the specified point or box intersects this box.º|ÔÎ > L€ø€T”A‚S~‚A€ƒ‚ƒã}ƒõ(‰ã}ƒõ(‰‚ÿvoidsetBounds(float xmin,float ymin,float xmax,float ymax)voidsetBounds(const SbVec2f &min,const SbVec2fOÏ Õ &max)HOÏ ]) "€>€”‘€‚A€‚ÿSets the corners of the box.²t> L€è€T”A‚S~‚A€ƒ‚ƒã}ƒõ(‰ã}ƒõ(‰‚ÿvoidgetBounds(float &xmin,float &ymin,float &xmax,float &ymax)voidgetBounds(SbVec2f &min,SbVec2f &max)H]W) "€>€”‘€‚A€‚ÿGets the corners of the box.T'«- *€N€T”A‚S~‚A€ƒ‚ÿvoidgetOrigin(float &x0,float &y0)<Wç) "€&€”‘€‚A€‚ÿGets box origin.P#«7- *€F€T”A‚S~‚A€ƒ‚ÿvoidgetSize(float &x,float &y):çq) "€"€”‘€‚A€‚ÿGets box size.E7¶, (€2€T”A‚S~‚A€ƒ‚ÿfloatgetAspectRatio()Bqø) "€2€”‘€‚A€‚ÿGets box aspect ratio.?¶7, (€&€T”A‚S~‚A€ƒ‚ÿvoidmakeEmpty()?øv) "€,€”‘€‚A€‚ÿMakes an empty box.G7½2 4€*€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisEmpty()b9v) "€r€”‘€‚A€‚ÿReturns TRUE if the box is empty, and FALSE otherwise.G½f2 4€*€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolhasArea()Vå) "€¬€”‘€‚A€‚ÿReturns TRUE if both dimensions of the box have positive size, and FALSE otherwise.1 f& €€‚A€‚ÿSEE ALSOÔ]åêw ¾€º€”‘€‚Aã?çî$€‰€ãñ†Ï€‰€ã!çî$€‰€㨃õ(€‰€ã}ƒõ(€‰€㊃õ(€‰€ã4i¥‘€‰‚ÿSbBox3f, SbXfBox3f, SbBox2s, SbVec3f, SbVec2f, SbVec2s, SbMatrix8"1èÏ„M"QISbBox2s/ êQ% €€ˆˆ€‚ÿSbBox2s*"{# €€€‚ÿNAME?Qº& €2€”‘€€‚ÿSbBox2s - 2D box class3{í# € €€‚ÿINHERITS FROM4 º!) "€€”‘€€€‚ÿSbBox2s2 íS& €€€€ ‚ÿSYNOPSISa:!´' €t€”‘€€‚‚ÿ#include Methods from class SbBox2s:<¸Sð „ Ö€q€T”A‚S~‚A€ƒ‚ƒ‚ƒãŠƒõ(‰ãŠƒõ(‰‚ƒ‚㊃õ(‰ƒ‚㊃õ(‰ƒ‚ƒãŠƒõ(‰‚ƒã!çî$‰‚㑶p6‰ƒãŠƒõ(‰‚㑶p6‰ƒã!çî$‰‚ƒ‚ÿSbBox2s()SbBox2s(short xmin,short ymin,short xmax,short ymax)SbBox2s(const SbVec2s &_min,const SbVec2s &_max)void~SbBox2s()const SbVec2s &getMin() constconst SbVec2s &getMax() constvoidextendBy(const SbVec2s &point)voidextendBy(const SbBox2s &box)SbBoolintersect(const SbVec2s &point) constSbBoolintersect(const SbBox2s &box) constvoidsetBounds(short xmin,short ymin,short xmax,short ymax);Å´+ v º€‹€T”A‚S~‚A€ƒãŠƒõ(‰ãŠƒõ(‰‚ƒ‚ƒãŠƒõ(‰ãŠƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã!çî$‰ã!çî$‰‚ƒã!çî$‰ã!çî$‰‚ÿvoidsetBounds(const SbVec2s &_min,const SbVec2s &_max)voidgetBounds(short &xmin,short &ymin,short &xmax,short &ymax) constvoidgetBounds(SbVec2s &_min,SbVec2s &_max) constvoidgetOrigin(short &originX,short &originY) constvoidgetSize(short &sizeX,short &sizeY) constfloatgetAspectRatio() constvoidmakeEmpty()intoperator ==(const SbBox2s &b1,const SbBox2s &b2)intoperator !=(const SbBox2s &b1,const SbBox2s &b2)4ð _ & €€‚A€‚ÿDESCRIPTION'ý+ † * "€û€”‘€‚A€‚ÿ2D box which has planes parallel to the major axes and is specified by two points (specified with short integers) on a diagonal. This class is part of the standard Open Inventor datatype classes and is used as input and output to geometry operations.0 _ ¶ & €€‚A€‚ÿMETHODSІ †C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒãŠƒõ(‰ãŠƒõ(‰‚ƒ‚ÿSbBox2s()SbBox2s(short xmin,short ymin,short xmax,short ymax)SbBox2s(const SbVec2s &_min,const SbVec2s &_max)void~SbBox2s()·¶ ‹N j€o€”‘€‚A€€€€€€€€€€€€€‚ÿConstructors and destructor for a 2D integer box. xmin, ymin, xmax, and ymax are the bounds of the box. min and max are the corners of the diagonal that define the box.~D†@: D€ˆ€T”A‚S~‚A€㊃õ(‰ƒ‚㊃õ(‰ƒ‚ÿconst SbVec2s &getMin() constconst SbVec2s &getMax(‹@ê) const^5‹s@) "€j€”‘€‚A€‚ÿReturns the minimum and maximum points of the box.†L@ù@: D€˜€T”A‚S~‚A€ƒãŠƒõ(‰‚ƒã!çî$‰‚ÿvoidextendBy(const SbVec2s &point)voidextendBy(const SbBox2s &box)xOs@qA) "€ž€”‘€‚A€‚ÿExtends this box (if necessary) to contain the specified point or other box.¨bù@BF \€Ä€T”A‚S~‚A㑶p6€‰ƒãŠƒõ(‰‚㑶p6‰ƒã!çî$‰‚ÿSbBoolintersect(const SbVec2s &point) constSbBoolintersect(const SbBox2s &box) constkBqA„B) "€„€”‘€‚A€‚ÿReturns TRUE if the specified point or box intersects this box.¼~B@C> L€ü€T”A‚S~‚A€ƒ‚ƒãŠƒõ(‰ãŠƒõ(‰‚ÿvoidsetBounds(short xmin,short ymin,short xmax,short ymax)voidsetBounds(const SbVec2s &_min,const SbVec2s &_max)H„BˆC) "€>€”‘€‚A€‚ÿSets the corners of the box.Á‚@CID? L€€T”A‚S~‚A€ƒ‚ƒãŠƒõ(‰ãŠƒõ(‰‚ÿvoidgetBounds(short &xmin,short &ymin,short &xmax,short &ymax) constvoidgetBounds(SbVec2s &_min,SbVec2s &_max) constHˆC‘D) "€>€”‘€‚A€‚ÿGets the corners of the box.d7IDõD- *€n€T”A‚S~‚A€ƒ‚ÿvoidgetOrigin(short &originX,short &originY) constR)‘DGE) "€R€”‘€‚A€‚ÿReturns origin (minimum point) of box.^1õD¥E- *€b€T”A‚S~‚A€ƒ‚ÿvoidgetSize(short &sizeX,short &sizeY) const=GEâE) "€(€”‘€‚A€‚ÿReturns box size.K¥E-F, (€>€T”A‚S~‚A€ƒ‚ÿfloatgetAspectRatio() constc:âEF) "€t€”‘€‚A€‚ÿReturns aspect ratio (ratio of width to height) of box.?-FÏF, (€&€T”A‚S~‚A€ƒ‚ÿvoidmakeEmpty()?FG) "€,€”‘€‚A€‚ÿMakes an empty box.¾vÏFÌGH `€ì€T”A‚S~‚A€ƒã!çî$‰ã!çî$‰‚ƒã!çî$‰ã!çî$‰‚ÿintoperator ==(const SbBox2s &b1,const SbBox2s &b2)intoperator !=(const SbBox2s &b1,const SbBox2s &b2)AG H) "€0€”‘€‚A€‚ÿEquality comparisons.1 ÌG>H& €€‚A€‚ÿSEE ALSOÔ] HIw ¾€º€”‘€‚Aã?çî$€‰€ãñ†Ï€‰€ãçî$€‰€㨃õ(€‰€ã}ƒõ(€‰€㊃õ(€‰€ã4i¥‘€‰‚ÿSbBox3f, SbXfBox3f, SbBox2f, SbVec3f, SbVec2f, SbVec2s, SbMatrix8>HJI1ùœ¥€NJIyIƒÁSbBox3f/ IyI% €€ˆˆ€‚ÿSbBox3f*JI£I# €€€‚ÿNAME?yIâI& €2€”‘€€‚ÿSbBox3f - 3D box class3£IJ# € €€‚ÿINHERITS FROM4 âIIJ) "€€”‘€€€‚ÿSbBox3f2 J{J& €€€€ ‚ÿSYNOPSISa:IJÜJ' €t€”‘€€‚‚ÿ#include Methods from class SbBox3f:{JòL‰ à€€T”A‚S~‚A€ƒ‚ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒ‚ƒã¨ƒõ(‰‚ƒã?çî$‰‚㑶p6‰ƒã¨ƒõ(‰‚㑶p6‰ƒã?çî$‰‚ÿSbBox3f()SbBox3f(float xmin,float ymin,float zmin,float xmax,float ymax,float zmax)SbBox3f(const SbVec3f &min,const SbVec3f &max)void~SbBox3f()const SbVec3f &getMin()const SbVec3f &getMax()SbVec3fgetCenter()voidextendBy(const SbVec3f &point)voidextendBy(const SbBox3f &box)SbBoolintersect(const SbVec3f &point)SbBoolintersect(const SbBox3f &box)%´ÜJOq °€i€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetBounds(float xmin,float ymin,float zmin,float xmax,float ymax,float zmax)voidsetBounds(const SbVec3f &min,const SbVec3f &max)voidgetBounds(float &xmin,float &ymin,float &zmin,float &xmax,float &ymax,float &zmax)voidgetBounds(SbVec3f &min,SbVec3f &max)voidgetOrigin(float &x0,float &y0,float &z0)voidgetSize(float &x,float &y,float &z)voidmakeEmpty()SbBoolisEmpty()SbBoolhasVolume()®pòLÅO> L€à€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒã4i¥‘‰‚ƒ‚ÿvoidgetSpan(SbVec3f &dir,float &dMin,float &dMax)voidtransform(const SbMatrix &mx)floatgetVolume()4O €& €€‚A€‚ÿDESCRIPTIONÅO €I,üÅO80 .€ù€”‘€‚A€€€‚ÿ3D box which has planes parallel to the major axes and is specified by two points on a diagonal. This class is part of the standard Open Inventor datatype classes and is used as input and output to geometry operations (see SoGetBoundingBoxAction).0 €h& €€‚A€‚ÿMETHODSè£8P‚E X€G€T”A‚S~‚A€ƒ‚ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒ‚ÿSbBox3f()SbBox3f(float xmin,float ymin,float zmin,float xmax,float ymax,float zmax)SbBox3f(const SbVec3f &min,const SbVec3f &max)void~SbBox3f()ÄhnƒZ ‚€‰€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿConstructors and destructor for a 3D float box. xmin, ymin, zmin, xmax, ymax and zmax are the bounds of the box. min and max are the corners of the diagonal that define the box.r8P‚àƒ: D€p€T”A‚S~‚A€㨃õ(‰ƒ‚㨃õ(‰ƒ‚ÿconst SbVec3f &getMin()const SbVec3f &getMax()þÔnƒÞ„* "€©€”‘€‚A€‚ÿReturns the minimum and maximum points of the box. The minimum point is the corner of the box with the lowest X, Y, and Z values. The maximum point is the corner of the box with the highest X, Y, and Z values.Jàƒ(…2 4€0€T”A‚S~‚A㨃õ(€‰ƒ‚ÿSbVec3fgetCenter()J!Þ„r…) "€B€”‘€‚A€‚ÿReturns the center of the box.†L(…ø…: D€˜€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒã?çî$‰‚ÿvoidextendBy(const SbVec3f &point)voidextendBy(const SbBox3f &box)xOr…p†) "€ž€”‘€‚A€‚ÿExtends this box (if necessary) to contain the specified point or other box.œVø… ‡F \€¬€T”A‚S~‚A㑶p6€‰ƒã¨ƒõ(‰‚㑶p6‰ƒã?çî$‰‚ÿSbBoolintersect(const SbVec3f &point)SbBoolintersect(const SbBox3f &box)kBp†w‡) "€„€”‘€‚A€‚ÿReturns TRUE if the specified point or box intersects this box.Õ” ‡LˆA P€)€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidsetBounds(float xmin,float ymin,float zmin,float xmax,float ymax,float zmax)voidsetBounds(const SbVec3f &min,const SbVec3f &max)Hw‡”ˆ) "€>€”‘€‚A€‚ÿSets the corners of the box.ÏŽLˆc‰A P€€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidgetBounds(float &xmin,float &ymin,float &zmin,float &xmax,float &ymax,float &zmax)voidgetBounds(SbVec3f &min,SbVec3f &max)H”ˆ«‰) "€>€”‘€‚A€‚ÿGets the corners of the box.`2c‰ Š. ,€d€T”A‚S~‚A€ƒ‚ÿvoidgetOrigin(float &x0,float &y0,float &z0)oF«‰zŠ) "€Œ€”‘€‚A€‚ÿGets box origin which is the same as the minimum corner of the box.[- ŠÕŠ. ,€Z€T”A‚S~‚A€ƒ‚ÿvoidgetSize(float &x,float &y,float &z):zŠ‹) "€"€”‘€‚A€‚ÿGets box size.?ÕŠN‹, (€&€T”A‚S~‚A€ƒ‚ÿvoidmakeEmpty()?‹‹) "€,€”‘€‚A€‚ÿMakes an empty box.GN‹Ô‹2 4€*€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisEmpty()b9‹6Œ) "€r€”‘€‚A€‚ÿReturns TRUE if the box is empty, and FALSE otherwise.IÔ‹Œ2 4€.€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolhasVolume()„[6Œ) "€¶€”‘€‚A€‚ÿReturns TRUE if all three dimensions of the box have positive size, and FALSE otherwise.m9Œp4 8€r€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidgetSpan(SbVec3f &dir,float &dMin,float &dMax)yOéŽ* "€Ÿ€”‘€‚A€‚ÿFinds the span of a box along a specified direction. The span is the total distance the box occupies along a given direction. The total distance is returned in the form of a minimum and maximum distance from the origin of each of the corners of the box along the given direction. The difference between these two values is the span.Y'pB2 4€N€T”A‚S~‚A€ƒã4i¥‘‰‚ÿvoidtransform(const SbMatrix &mx)f=鎨) "€z€”‘€‚A€‚ÿTransforms box by matrix, enlarging box to contain result.@B À, (€(€T”A‚S~‚A€ƒ‚ÿfloatgetVolume()¨ ÀIJ!¨VÀ) "€B€”‘€‚A€‚ÿReturns the volume of the box.1 À‡À& €€‚A€‚ÿSEE ALSOüyVÀƒÁƒ Ö€ò€”‘€‚Aãñ†Ï€‰€ãçî$€‰€ã!çî$€‰€㨃õ(€‰€ã}ƒõ(€‰€㊃õ(€‰€ã4i¥‘€‰€ããS¯+€‰‚ÿSbXfBox3f, SbBox2f, SbBox2s, SbVec3f, SbVec2f, SbVec2s, SbMatrix, SoGetBoundingBoxAction8‡À»Á1+Ï„ÔO»ÁêÁîSbColor/ ƒÁêÁ% €€ˆˆ€‚ÿSbColor*»ÁÂ# €€€‚ÿNAMEEêÁYÂ& €>€”‘€€‚ÿSbColor - color vector class3ÂŒÂ# € €€‚ÿINHERITS FROMLYÂØÂ5 :€.€”‘€ã¨ƒõ(€‰€€€‚ÿSbVec3f>SbColor2 ŒÂ Ã& €€€€ ‚ÿSYNOPSISc<ØÂmÃ' €x€”‘€€‚‚ÿ#include Methods from class SbColor:ï“ Ã\Å\ †€'€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒ‚ƒ‚ãÀ"%‰ƒ‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ãÀ"%‰ƒ‚ƒ‚ÿSbColor(const SbVec3f vec3f)SbColor(const float rgb[3])SbColor(float r,float g,float b)SbColor &setHSVValue(float h,float s,float v)SbColor &setHSVValue(const float hsv[3])voidgetHSVValue(float &h,float &s,float &v) constvoidgetHSVValue(float hsv[3]) constSbColor &setPackedValue(uint32_t rgba,float& transparency)uint32_tgetPackedValue(float transparency = 0.0) constO mëÅ/ .€@€”‘€‚A€㨃õ(‰‚ÿMethods from class SbVec3f:“ú\Å>È™ õ€T”A‚S~‚A㨃õ(€‰ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰‚㑶p6‰ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒã¨ƒõ(‰ã¨ƒõ(‰ã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbVec3fcross(const SbVec3f &v) constfloatdot(const SbVec3f &v) constSbBoolequals(const SbVec3f v,float tolerance) constSbVec3fgetClosestAxis() constconst float *getValue() constvoidgetValue(float &x,float &y,float &z) constfloatlength() constvoidnegate()floatnormalize()SbVec3f &setValue(const float v[3])SbVec3f &setValue(float x,float y,float z)SbVec3f &setValue(const SbVec3f &barycentric,const SbVec3f &v0,const SbVec3f &v1,const SbVec3f &v2)‹«ÅYÊ î€€T”A‚S~‚A€ƒ‚ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚㨃õ(‰ƒã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰‚ÿfloat &operator [](int i)const float &operator [](int i)SbVec3f &operator *=(float d)SbVec3f &operator /=(float d)SbVec3f &operator +=(const SbVec3f &u)SbVec3f &operator -=(const SbVec3f &u)SbVec3foperator -() constSbVec3foperator *(const SbVec3f &v,float d)SbVec3foperator *(float d,const SbVec3f &v)SbVec3foperator /(const SbVec3f &v,float d)gô>ÈÀËs ´€é€T”A‚S~‚A㨃õ(€‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbVec3foperator +(const SbVec3f &v1,const SbVec3f &v2)SbVec3foperator -(const SbVec3f &v1,const SbVec3f &v2)intoperator ==(const SbVec3f &v1,const SbVec3f &v2)intoperator !=(const SbVec3f &v1,const SbVec3f &v2)4YÊôË& €€‚A€‚ÿDESCRIPTIONé¿ÀËÝÌ* "€€”‘€‚A€‚ÿThis class is used to represent an RGB color. Each component of the vector is a floating-point number between 0.0 and 1.0. There are routines to convert back and forth between RGB and HSV.0 ôË Í& €€‚A€‚ÿMETHODS›cÝ̨Í8 @€Æ€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒ‚ƒ‚ÿSbColor(const SbVec3f vec3f)SbColor(const float rgb[3])SbColor(float r,float g,float b)J! ÍòÍ) "€B€”‘€‚A€‚ÿConstructors for color vector.i5¨Í[Î4 8€j€T”A‚S~‚AãÀ"%€‰ƒ‚ÿSbColor &setHSVValue(float h,float s,float v)¨òÍÏ) "€þ€”‘€‚A€‚ÿSets value of color vector from 3 HSV (Hue, Saturation, and Value) components. Value is the same as brightness of the color.`.[ÎcÏ2 4€\€T”A‚S~‚AãÀ"%€‰ƒ‚ÿSbColor &setHSVValue(const float hsv[3])e<ÏÈÏ) "€x€”‘€‚A€‚ÿSets value of color vector from array of 3 HSV componentse7cÏ9. ,€n€T”A‚S~‚A€ƒ‚ÿvoidgetHÈÏ9ƒÁSVValue(float &h,float &s,float &v) constO&Èψ) "€L€”‘€‚A€‚ÿReturns 3 individual HSV componentsS'9Û, (€N€T”A‚S~‚A€ƒ‚ÿvoidgetHSVValue(float hsv[3]) constP'ˆ+) "€N€”‘€‚A€‚ÿReturns an array of 3 HSV componentstAÛŸ3 6€‚€T”A‚S~‚AãÀ"%€‰ƒ‚ÿSbColor &setPackedValue(uint32_t rgba,float& transparency)®„+M* "€ €”‘€‚A€‚ÿSets value of color vector from an RGBA packed color value. The packed color format expressed in hexadecimal is 0xrrggbbaa, where_ŸÝ1 2€¾€T”!:‚!€ƒ‚ƒ‚ƒ‚ƒ‚ÿ•rr is the red value•gg is the green value•bb is the blue value•aa is the alpha value ßMæ* "€¿€”‘€‚!€‚ÿRGBA component values range from 0 to 0xFF (255). The returned transparency value is a floating point value between 0.0 (opaque) and 1.0 (completely transparent). It is derived from the alpha component of the RGBA color.f:ÝL, (€t€T”A‚S~‚A€ƒ‚ÿuint32_tgetPackedValue(float transparency = 0.0) const6 æ‚* "€€”‘€‚A€‚ÿReturns an RGBA packed color value, derived from the color vector and the passed transparency value. The alpha component is set to (1.0 - transparency) * 255, resulting in a hex value between 0 and 0xFF. If transparency not specified, alpha is set to 0xFF (opaque).1 L³& €€‚A€‚ÿSEE ALSO; ‚î/ .€€”‘€‚A㨃õ(€‰‚ÿSbVec3f; ³)1µ ¥€€P)[ @SbCylinder2 î[% €€ˆˆ€‚ÿSbCylinder*)…# €€€‚ÿNAMEW1[Ü& €b€”‘€€‚ÿSbCylinder - class for representing a cylinder3…# € €€‚ÿINHERITS FROM7ÜF) "€€”‘€€€‚ÿSbCylinder2 x& €€€€ ‚ÿSYNOPSISg@Fß' €€€”‘€€‚‚ÿ#include Methods from class SbCylinder:ëgxÊ „ րπT”A‚S~‚A€ƒ‚ƒãǬ|6‰‚ƒãǬ|6‰‚ƒãǬ|6‰‚ƒ‚ãǬ|6‰ƒ‚ƒ‚㑶p6‰ƒãǬ|6‰ã¨ƒõ(‰‚㑶p6‰ƒãǬ|6‰ã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbCylinder()SbCylinder(const SbLine &a,float r)voidsetValue(const SbLine &a,float r)voidsetAxis(const SbLine &a)voidsetRadius(float r)const SbLine &getAxis() constfloatgetRadius() constSbBoolintersect(const SbLine &l,SbVec3f &intersection) constSbBoolintersect(const SbLine &l,SbVec3f &enter,SbVec3f &exit) const4ßþ & €€‚A€‚ÿDESCRIPTION¢yÊ   ) "€ò€”‘€‚A€‚ÿThis class defines a simple cylinder datatype. It is used by the Open Inventor toolkit for arguments or return values.0 þ Ð & €€‚A€‚ÿMETHODSm8  = 5 :€p€T”A‚S~‚A€ƒ‚ƒãǬ|6‰‚ÿSbCylinder()SbCylinder(const SbLine &a,float r)W.Ð ” ) "€\€”‘€‚A€‚ÿConstructors. One takes an axis and radius._,= ó 3 6€X€T”A‚S~‚A€ƒãǬ|6‰‚ÿvoidsetValue(const SbLine &a,float r)G” : ) "€<€”‘€‚A€‚ÿChange the axis and radius.n:ó ¨ 4 8€t€T”A‚S~‚A€ƒãǬ|6‰‚ƒ‚ÿvoidsetAxis(const SbLine &a)voidsetRadius(float r)H: ð ) "€>€”‘€‚A€‚ÿSet just the axis or radius.o;¨ _ 4 8€v€T”A‚S~‚A€ãǬ|6‰ƒ‚ƒ‚ÿconst SbLine &getAxis() constfloatgetRadius() constGð ¦ ) "€<€”‘€‚A€‚ÿReturn the axis and radius.ò–_ ˜\ †€-€T”A‚S~‚A㑶p6€‰ƒãǬ|6‰ã¨ƒõ(‰‚㑶p6‰ƒãǬ|6‰ã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbBoolintersect(const SbLine &l,SbVec3f &intersection) constSbBoolintersect(const SbLine &l,SbVec3f &enter,SbVec3f &exit) consttK¦  ) "€–€”‘€‚A€‚ÿIntersect line and cylinder, returning TRUE if there is an intersection.1 ˜=& €€‚A€‚ÿSEE ALSO¢C  @_ Ž€†€”‘€‚A㨃õ(€‰€ãǬ|6€‰€ã÷Ä'€‰€ãœ8É€‰€ãþ‚dñ€‰‚ÿSbVec3f, SbLine, SbPlane, SbSphere, SoCylinder= @îI=U@1£Ô8QU@•@â‚SbCylinderPlaneProjector@ @•@% €6€ˆˆ€‚ÿSbCylinderPlaneProjector*U@¿@# €€€‚ÿNAME\6•@A& €l€”‘€€‚ÿSbCylinderPlaneProjector - cylinder-plane projector3¿@NA# € €€‚ÿINHERITS FROM¶iABM j€Ò€”‘€ãuLœM€‰€ã?rW€‰€ã¬ʧ€‰€€€‚ÿSbProjector > SbCylinderProjector > SbCylinderSectionProjector > SbCylinderPlaneProjector2 NA6B& €€€€ ‚ÿSYNOPSISiBÆB' €Ò€”‘€€‚‚ÿ#include Methods from class SbCylinderPlaneProjector:Î6BÚCF Z€€T”A‚S~‚A€ƒã‘¶p6‰‚ƒãH‰ã‘¶p6‰‚ƒ‚ÿSbCylinderPlaneProjector(float edgeTol = .9,SbBool orientToEye = TRUE)SbCylinderPlaneProjector(const SbCylinder &cyl,float edgeTol = .9,SbBool orientToEye = TRUE)~SbCylinderPlaneProjector()b3ÆB«éD‚G“ ô€W€T”A‚S~‚A㨃õ(€‰ƒã}ƒõ(‰ã ‚û‰‚ã ‚û‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒãH‰‚ãH‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒã¨ƒõ(‰‚ÿSbVec3fprojectAndGetRotation(const SbVec2f &point,SbRotation &rot)virtual SbRotationgetRotation(const SbVec3f &point1,const SbVec3f &point2)voidsetCylinder(const SbCylinder &cyl)const SbCylinder &getCylinder() constvoidsetOrientToEye(SbBool orientToEye)SbBoolisOrientToEye() constvoidsetFront(SbBool isFront)SbBoolisFront() constSbBoolisPointInFront(const SbVec3f &point) constS$DEÕG/ .€H€”‘€‚A€ãuLœM‰‚ÿMethods from class SbProjector:~‚GSIa €;€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ƒãª®§O‰‚㪮§O‰ƒ‚ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ãuLœM‰ƒ‚ÿvirtual SbVec3fproject(const SbVec2f &point)virtual voidsetViewVolume(const SbViewVolume &vol)const SbViewVolume &getViewVolume() constvirtual voidsetWorkingSpace(const SbMatrix &space)const SbMatrix &getWorkingSpace() constvirtual SbProjector *copy() const4ÕG‡I& €€‚A€‚ÿDESCRIPTION³†SI:K- (€ €”‘€‚A€€‚ÿSbCylinderPlaneProjector projects a window space point (usually based on the mouse location) onto a surface defined by a cylinder and plane cutting through the cylinder. Two projected points can produce a rotation along the cylinder's axis. When the mouse position projects onto the plane, the rotations will be as if the plane is being dragged, causing the cylinder to roll beneath it.×­‡IL* "€[€”‘€‚A€‚ÿIncremental changes (delta rotation) can be computed during interactive sessions. Cylinder projectors are typically used to write interactive 3D manipulators and viewers.0 :KAL& €€‚A€‚ÿMETHODSõ±L6MD V€c€T”A‚S~‚A€ƒã‘¶p6‰‚ƒãH‰ã‘¶p6‰‚ÿSbCylinderPlaneProjector(float edgeTol = .9,SbBool orientToEye = TRUE)SbCylinderPlaneProjector(const SbCylinder &cyl,float edgeTol = .9,SbBool orientToEye = TRUE)LALŽ€6 :€-€”‘€‚A€€€€€‚ÿConstructors. The first uses a default cylinder aligned with the Y axis with radius 1.0; the cylinder is supplied in the second. The position of the plane is specified as a fraction of the cylinder radius with the parameter edgeTol. A tolerance value of 1.0 positions the plane down the center of the cylinder. A tolerance value of 0.5 defines the longitudinal plane halfway between the center and the outside edge of the cylinder. The default value is .9, so that almost half the cylinder is in front of the plane. The orientToEye parameter determines whether the plane is perpendicular to the eye, or perpendicular to the cylinder's Z axis. Setting that6MŽ€ @ parameter to TRUE (the default) specifies that the plane be perpendicular to the eye, which is most often the desired behavior.tK6M) "€–€”‘€‚A€‚ÿThe default view volume is undefined, and the working space is identity.KŽ€M, (€>€T”A‚S~‚A€ƒ‚ÿ~SbCylinderPlaneProjector()7„) "€€”‘€‚A€‚ÿDestructor.1 Mµ& €€‚A€‚ÿSEE ALSO-µ„â‚x ¾€k€”‘€‚AãîmXj€‰€ã‘ôR7€‰€ãC}Î€ãô4Ô€‰€ãøaK´€‰€ãwƒq+€‰€ãŠo€‰‚ÿSbCylinderSheetProjector, SbLineProjector, SbPlaneProjector, SbSpherePlaneProjector, SbSphereProjector, SbSphereSectionProjector, SbSphereSheetProjectorDµ&ƒ1‹€ò‚R&ƒaƒ¾ÄSbCylinderProjector;â‚aƒ% €,€ˆˆ€‚ÿSbCylinderProjector*&ƒ‹ƒ# €€€‚ÿNAMEQ+aƒ܃& €V€”‘€€‚ÿSbCylinderProjector - cylinder projector3‹ƒ„# € €€‚ÿINHERITS FROM^)܃m„5 :€R€”‘€ãuLœM€‰€€€‚ÿSbProjector > SbCylinderProjector2 „Ÿ„& €€€€ ‚ÿSYNOPSIS†_m„%…' €¾€”‘€€‚‚ÿ#include Methods from class SbCylinderProjector:Ÿ„9‡‡ Ü€€T”A‚S~‚A€ƒ‚㨃õ(‰ƒã}ƒõ(‰ã ‚û‰‚ã ‚û‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒãH‰‚ãH‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿ~SbCylinderProjector()SbVec3fprojectAndGetRotation(const SbVec2f &point,SbRotation &rot)virtual SbRotationgetRotation(const SbVec3f &point1,const SbVec3f &point2)voidsetCylinder(const SbCylinder &cyl)const SbCylinder &getCylinder() constvoidsetOrientToEye(SbBool orientToEye)SbBoolisOrientToEye() constvoidsetFront(SbBool isFront)SbBoolisFront() constp8%…©‡8 @€p€T”A‚S~‚A㑶p6€‰ƒã¨ƒõ(‰‚ÿSbBoolisPointInFront(const SbVec3f &point) constS$9‡ü‡/ .€H€”‘€‚A€ãuLœM‰‚ÿMethods from class SbProjector:~©‡z‰a €;€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ƒãª®§O‰‚㪮§O‰ƒ‚ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ãuLœM‰ƒ‚ÿvirtual SbVec3fproject(const SbVec2f &point)virtual voidsetViewVolume(const SbViewVolume &vol)const SbViewVolume &getViewVolume() constvirtual voidsetWorkingSpace(const SbMatrix &space)const SbMatrix &getWorkingSpace() constvirtual SbProjector *copy() const4ü‡®‰& €€‚A€‚ÿDESCRIPTIONq>z‰‹3 4€}€”‘€‚A€€€€‚ÿSbCylinderProjector is an abstract base class for projectors that use a cylinder in their projection. The getRotation() method for an SbCylinderProjector will always return a rotation that is about the axis of the cylinder. Cylinder projectors are typically used to write interactive 3D manipulators and viewers.0 ®‰O‹& €€‚A€‚ÿMETHODSF‹•‹, (€4€T”A‚S~‚A€ƒ‚ÿ~SbCylinderProjector()7O‹Ì‹) "€€”‘€‚A€‚ÿDestructor.ŒM•‹XŒ? N€š€T”A‚S~‚A㨃õ(€‰ƒã}ƒõ(‰ã ‚û‰‚ÿSbVec3fprojectAndGetRotation(const SbVec2f &point,SbRotation &rot)yCÌ‹Ñ6 :€‡€”‘€‚A€€€€€‚ÿApply the projector using the given point, returning the point in three dimensions that it projects to. This also returns in rot a rotation about the axis of the cylinder from the last projected point to this one. The passed point should be normalized (i.e. lie in the range [0.0,1.0]), with (0,0) at the lower-left.”UXŒeŽ? N€ª€T”A‚S~‚A€ã ‚û‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvirtual SbRotationgetRotation(const SbVec3f &point1,const SbVec3f &point2)œsÑ) "€æ€”‘€‚A€‚ÿGet a rotation given two points on this cylinder projector. The rotation will be about the axis of the cylinder.UeŽ: D€ª€T”A‚S~‚A€ƒãH‰‚ãH‰ƒ‚ÿvoidsetCylinder(const SbCylinder &cyl)const SbCylinder &getCylinder() const¤{@À) "€ö€”‘€‚A€‚ÿSet and get the cylinder on which to project points. The default cylin@Àâ‚der is aligned with the Y axis and has radius 1.0.…KÅÀ: D€–€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetOrientToEye(SbBool orientToEye)SbBoolisOrientToEye() const½“@À‚Á* "€'€”‘€‚A€‚ÿSet and get whether the projector should always be oriented towards the eye. Set to FALSE if the tolerance should be evaluated in working space.¹qÅÀ;ÂH `€â€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒã¨ƒõ(‰‚ÿvoidsetFront(SbBool isFront)SbBoolisFront() constSbBoolisPointInFront(const SbVec3f &point) constÏ¥‚Á Ã* "€K€”‘€‚A€‚ÿSet and get whether the projector should intersect the half of the cylinder that faces the eye. Set to FALSE if the projector should intersect with the rear half.1 ;Â;Ã& €€‚A€‚ÿSEE ALSOƒó Ã¾Ä î€ç€”‘€‚AãÑŒç΀‰€ã¬ʧ€‰€ãîmXj€‰€ã‘ôR7€‰€ãC}Î€ãô4Ô€‰€ãøaK´€‰€ãwƒq+€‰€ãŠo€‰‚ÿSbCylinderPlaneProjector, SbCylinderSectionProjector, SbCylinderSheetProjector, SbLineProjector, SbPlaneProjector, SbSpherePlaneProjector, SbSphereProjector, SbSphereSectionProjector, SbSphereSheetProjectorK;à Å18ù S ÅKŧ SbCylinderSectionProjectorB¾ÄKÅ% €:€ˆˆ€‚ÿSbCylinderSectionProjector* ÅuÅ# €€€‚ÿNAME`:KÅÕÅ& €t€”‘€€‚ÿSbCylinderSectionProjector - cylinder-section projector3uÅÆ# € €€‚ÿINHERITS FROM‹JÕÅ“ÆA R€”€”‘€ãuLœM€‰€ã?rW€‰€€€‚ÿSbProjector > SbCylinderProjector > SbCylinderSectionProjector2 ÆÅÆ& €€€€ ‚ÿSYNOPSIS”m“ÆYÇ' €Ú€”‘€€‚‚ÿ#include Methods from class SbCylinderSectionProjector:›CÅÆôÈX ~€‡€T”A‚S~‚A€ƒã‘¶p6‰‚ƒãH‰ã‘¶p6‰‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒã¨ƒõ(‰‚ÿSbCylinderSectionProjector(float edgeTol = .9,SbBool orientToEye = TRUE)SbCylinderSectionProjector(const SbCylinder &cyl,float edgeTol = .9,SbBool orientToEye = TRUE)~SbCylinderSectionProjector()voidsetTolerance(float edgeTol)floatgetTolerance() constSbBoolisWithinTolerance(const SbVec3f &point)[,YÇOÉ/ .€X€”‘€‚A€ã?rW‰‚ÿMethods from class SbCylinderProjector:>«ôÈË“ ô€W€T”A‚S~‚A㨃õ(€‰ƒã}ƒõ(‰ã ‚û‰‚ã ‚û‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒãH‰‚ãH‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒã¨ƒõ(‰‚ÿSbVec3fprojectAndGetRotation(const SbVec2f &point,SbRotation &rot)virtual SbRotationgetRotation(const SbVec3f &point1,const SbVec3f &point2)voidsetCylinder(const SbCylinder &cyl)const SbCylinder &getCylinder() constvoidsetOrientToEye(SbBool orientToEye)SbBoolisOrientToEye() constvoidsetFront(SbBool isFront)SbBoolisFront() constSbBoolisPointInFront(const SbVec3f &point) constS$OÉàË/ .€H€”‘€‚A€ãuLœM‰‚ÿMethods from class SbProjector:~Ë^Ía €;€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ƒãª®§O‰‚㪮§O‰ƒ‚ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ãuLœM‰ƒ‚ÿvirtual SbVec3fproject(const SbVec2f &point)virtual voidsetViewVolume(const SbViewVolume &vol)const SbViewVolume &getViewVolume() constvirtual voidsetWorkingSpace(const SbMatrix &space)const SbMatrix &getWorkingSpace() constvirtual SbProjector *copy() const4àË’Í& €€‚A€‚ÿDESCRIPTION¸‹^ÍJÏ- (€€”‘€‚A€€‚ÿSbCylinderSectionProjector projects a window space point (usually based on the mouse location) onto the section of a cylinder that has been sliced by a plane. Two projected points can produce a rotation along the cylinder's axis. The tolerance slice can be specified as a fraction of the radius of the cylinder. The projection point will not extend beyond the sliced portion of the cylinder.×­’Í-* "€[€”‘€‚A€‚ÿIncremental changes (delta rotation) can be computed during interactive sessions. Cylinder projectors are typically used to write interactiJÏ-¾Äve 3D manipulators and viewers.0 JÏ]& €€‚A€‚ÿMETHODSùµ-VD V€k€T”A‚S~‚A€ƒã‘¶p6‰‚ƒãH‰ã‘¶p6‰‚ÿSbCylinderSectionProjector(float edgeTol = .9,SbBool orientToEye = TRUE)SbCylinderSectionProjector(const SbCylinder &cyl,float edgeTol = .9,SbBool orientToEye = TRUE)u?]Ë6 :€€”‘€‚A€€€€€‚ÿConstructors. The first uses a default cylinder aligned with the Y axis with radius 1.0; the cylinder is supplied in the second. The position of the plane which slices the cylinder into a section is specified as a fraction of the cylinder radius with the parameter edgeTol. A tolerance value of 1.0 positions the plane down the center of the cylinder. A tolerance value of 0.5 defines the longitudinal plane halfway between the center and the outside edge of the cylinder. The default value is .9, so that almost half the cylinder is in front of the plane. The orientToEye parameter determines whether the plane is perpendicular to the eye, or perpendicular to the cylinder's Z axis. Setting that parameter to TRUE (the default) specifies that the plane be perpendicular to the eye, which is most often the desired behavior.tKV?) "€–€”‘€‚A€‚ÿThe default view volume is undefined, and the working space is identity.M!ËŒ, (€B€T”A‚S~‚A€ƒ‚ÿ~SbCylinderSectionProjector()7?Ã) "€€”‘€‚A€‚ÿDestructor.l>Œ/. ,€|€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetTolerance(float edgeTol)floatgetTolerance() constÞÃ7* "€½€”‘€‚A€‚ÿSet and get the edge tolerance as a fraction of the radius of the cylinder. If this is 1.0, the projector is a half cylinder. If this is .1, the projector is a slice of the cylinder with radius .1*radius. Default is .9.m5/¤8 @€j€T”A‚S~‚A㑶p6€‰ƒã¨ƒõ(‰‚ÿSbBoolisWithinTolerance(const SbVec3f &point){R7) "€¤€”‘€‚A€‚ÿFind whether this point on the cylinder or tolerance plane is within tolerance.1 ¤P& €€‚A€‚ÿSEE ALSOWÓ§ „ Ö€§€”‘€‚AãÑŒç΀‰€ãîmXj€‰€ã‘ôR7€‰€ãC}Î€ãô4Ô€‰€ãøaK´€‰€ãwƒq+€‰€ãŠo€‰‚ÿSbCylinderPlaneProjector, SbCylinderSheetProjector, SbLineProjector, SbPlaneProjector, SbSpherePlaneProjector, SbSphereProjector, SbSphereSectionProjector, SbSphereSheetProjectorIPð 1¼ò‚‡ Tð 0 ÆISbCylinderSheetProjector@§ 0 % €6€ˆˆ€‚ÿSbCylinderSheetProjector*ð Z # €€€‚ÿNAME\60 ¶ & €l€”‘€€‚ÿSbCylinderSheetProjector - cylinder-sheet projector3Z é # € €€‚ÿINHERITS FROM‰H¶ r A R€€”‘€ãuLœM€‰€ã?rW€‰€€€‚ÿSbProjector > SbCylinderProjector > SbCylinderSheetProjector2 é ¤ & €€€€ ‚ÿSYNOPSISir 4 ' €Ò€”‘€€‚‚ÿ#include Methods from class SbCylinderSheetProjector:ꦤ  D V€M€T”A‚S~‚A€ƒã‘¶p6‰‚ƒãH‰ã‘¶p6‰‚ƒ‚ÿSbCylinderSheetProjector(SbBool orientToEye = TRUE)SbCylinderSheetProjector(const SbCylinder &cyl,SbBool orientToEye = TRUE)~SbCylinderSheetProjector()[,4 y / .€X€”‘€‚A€ã?rW‰‚ÿMethods from class SbCylinderProjector:>« ·“ ô€W€T”A‚S~‚A㨃õ(€‰ƒã}ƒõ(‰ã ‚û‰‚ã ‚û‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒãH‰‚ãH‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒã¨ƒõ(‰‚ÿSbVec3fprojectAndGetRotation(const SbVec2f &point,SbRotation &rot)virtual SbRotationgetRotation(const SbVec3f &point1,const SbVec3f &point2)voidsetCylinder(const SbCylinder &cyl)const SbCylinder &getCylinder() constvoidsetOrientToEye(SbBool orientToEye)SbBoolisOrientToEye() constvoidsetFront(SbBool isFront)SbBoolisFront() constSbBoolisPointInFront(const SbVec3f &point) constS$y @/ .€H€”‘€‚A€ãuLœM‰‚ÿMethods from class SbPro·@§ jector:~·”Aa €;€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ƒãª®§O‰‚㪮§O‰ƒ‚ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ãuLœM‰ƒ‚ÿvirtual SbVec3fproject(const SbVec2f &point)virtual voidsetViewVolume(const SbViewVolume &vol)const SbViewVolume &getViewVolume() constvirtual voidsetWorkingSpace(const SbMatrix &space)const SbMatrix &getWorkingSpace() constvirtual SbProjector *copy() const4@ÈA& €€‚A€‚ÿDESCRIPTIONë¾”A³C- (€}€”‘€‚A€€‚ÿSbCylinderSheetProjector projects a window space point (usually based on the mouse location) onto the surface of a cylinder with a hyperbolic sheet draped over it. This allows smooth transitions onto and off of the cylinder. Two projected points can produce a rotation along the cylinder's axis. When the mouse position projects on to the sheet, the rotations will be as if the sheet is being dragged, causing the cylinder to roll beneath it.×­ÈAŠD* "€[€”‘€‚A€‚ÿIncremental changes (delta rotation) can be computed during interactive sessions. Cylinder projectors are typically used to write interactive 3D manipulators and viewers.0 ³CºD& €€‚A€‚ÿMETHODSˉŠD…EB R€€T”A‚S~‚A€ƒã‘¶p6‰‚ƒãH‰ã‘¶p6‰‚ÿSbCylinderSheetProjector(SbBool orientToEye = TRUE)SbCylinderSheetProjector(const SbCylinder &cyl,SbBool orientToEye = TRUE)Á‘ºDFG0 .€#€”‘€‚A€€€‚ÿConstructors. The first uses a default cylinder aligned with the Y axis with radius 1.0; the cylinder is supplied in the second. The orientToEye parameter determines whether the sheet is perpendicular to the eye, or perpendicular to the cylinder's Z axis. Setting that parameter to TRUE (the default) specifies that the plane be perpendicular to the eye, which is most often the desired behavior.tK…EºG) "€–€”‘€‚A€‚ÿThe default view volume is undefined, and the working space is identity.KFGH, (€>€T”A‚S~‚A€ƒ‚ÿ~SbCylinderSheetProjector()7ºG€”‘€€‚ÿSbLine - directed line in 3D3UJÍJ# € €€‚ÿINHERITS FROM3 šJK) "€€”‘€€€‚ÿSbLine2 ÍJ2K& €€€€ ‚ÿSYNOPSISc<K•K' €x€”‘€€‚‚ÿ#include Methods from class SbLine:ã^2KxM… Ø€½€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚㑶p6‰ƒãǬ|6‰ã¨ƒõ(‰ã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚㨃õ(‰ƒ‚ÿSbLine()SbLine(const SbVec3f &p0,const SbVec3f &p1)voidsetValue(const SbVec3f &p0,const SbVec3f &p1)SbBoolgetClosestPoints(const SbLine &line2,SbVec3f &ptOnThis,SbVec3f &ptOnLine2 ) constSbVec3fgetClosestPoint(const SbVec3f &point) constconst SbVec3f &getPosition() constconst SbVec3f &getDirection() const4•K¬M& €€‚A€‚ÿDESCRIPTIONäºxMN* "€u€”‘€‚A€‚ÿRepresents a directed line in 3D. This is a basic Open Inventor datatype that is used for representing a 3D line. It is used as input and output by a variety of Open Inventor classes.0 ¬MÀN& €€‚A€‚ÿMETHODSy>N9O; F€|€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbLine()SbLine(const SbVec3f &p0,const SbVec3f &p1)¼†ÀN €6 :€ €”‘€‚A€€€€€‚ÿConstructors. To construct a line from a position and direction, use: SbLine(p0, p0 + dir). The line is directed from p0 to p1.9O €ÆIs:9O€9 B€t€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidsetValue(const SbVec3f &p0,const SbVec3f &p1)g2 €æ€5 :€d€”‘€‚A€€€€€‚ÿSets line to pass through points p0 and p1.«e€‘F \€Ê€T”A‚S~‚A㑶p6€‰ƒãǬ|6‰ã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbBoolgetClosestPoints(const SbLine &line2,SbVec3f &ptOnThis,SbVec3f &ptOnLine2 ) constÇ怔‚< F€€”‘€‚A€€€€€€€‚ÿFinds the two closest points between this line and line2, and loads them into ptOnThis and ptOnLine2. Returns FALSE if the lines are parallel (results undefined), and returns TRUE otherwise.r:‘ƒ8 @€t€T”A‚S~‚A㨃õ(€‰ƒã¨ƒõ(‰‚ÿSbVec3fgetClosestPoint(const SbVec3f &point) conste<”‚kƒ) "€x€”‘€‚A€‚ÿReturns the closest point on the line to the given point.‰Oƒôƒ: D€ž€T”A‚S~‚A€㨃õ(‰ƒ‚㨃õ(‰ƒ‚ÿconst SbVec3f &getPosition() constconst SbVec3f &getDirection() constoFkƒc„) "€Œ€”‘€‚A€‚ÿReturns position of line origin point and direction vector of line.1 ôƒ”„& €€‚A€‚ÿSEE ALSOTc„è„; F€2€”‘€‚A㨃õ(€‰€ã÷Ä'€‰‚ÿSbVec3f, SbPlane@”„(…1L‡ Ö!V(…_…†ÃSbLineProjector7è„_…% €$€ˆˆ€‚ÿSbLineProjector*(…‰…# €€€‚ÿNAMEI#_…Ò…& €F€”‘€€‚ÿSbLineProjector - line projector3‰…†# € €€‚ÿINHERITS FROMZ%Ò…_†5 :€J€”‘€ãuLœM€‰€€€‚ÿSbProjector > SbLineProjector2 †‘†& €€€€ ‚ÿSYNOPSIS~W_†‡' €®€”‘€€‚‚ÿ#include Methods from class SbLineProjector:Ýk‘†ìˆr ²€×€T”A‚S~‚A€ƒ‚ƒ‚ƒãǬ|6‰‚ãǬ|6‰ƒ‚㨃õ(‰ƒã}ƒõ(‰ã}ƒõ(‰‚㨃õ(‰ƒã}ƒõ(‰‚ƒã}ƒõ(‰‚ƒã¨ƒõ(‰‚ÿSbLineProjector()~SbLineProjector()voidsetLine(const SbLine &line)const SbLine &getLine() constvirtual SbVec3fgetVector(const SbVec2f &mousePosition1,const SbVec2f &mousePosition2)virtual SbVec3fgetVector(const SbVec2f &mousePosition)voidsetStartPosition(const SbVec2f &mousePosition)voidsetStartPosition(const SbVec3f &point)S$‡?‰/ .€H€”‘€‚A€ãuLœM‰‚ÿMethods from class SbProjector:~숽Ša €;€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ƒãª®§O‰‚㪮§O‰ƒ‚ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ãuLœM‰ƒ‚ÿvirtual SbVec3fproject(const SbVec2f &point)virtual voidsetViewVolume(const SbViewVolume &vol)const SbViewVolume &getViewVolume() constvirtual voidsetWorkingSpace(const SbMatrix &space)const SbMatrix &getWorkingSpace() constvirtual SbProjector *copy() const4?‰ñŠ& €€‚A€‚ÿDESCRIPTIONŠ^½Š{‹, (€¼€”‘€‚A€€‚ÿSbLineProjector projects a 2D point, typically the location of the cursor, onto a 3D line.0 ñŠ«‹& €€‚A€‚ÿMETHODSW){‹Œ. ,€R€T”A‚S~‚A€ƒ‚ƒ‚ÿSbLineProjector()~SbLineProjector()’i«‹”Œ) "€Ò€”‘€‚A€‚ÿConstructor and destructor. The default line passes through the origin and is aligned with the Y axis.€FŒ: D€Œ€T”A‚S~‚A€ƒãǬ|6‰‚ãǬ|6‰ƒ‚ÿvoidsetLine(const SbLine &line)const SbLine &getLine() const_6”Œs) "€l€”‘€‚A€‚ÿSet and get the line on which to project 2D points.Ÿ`Ž? N€À€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰ã}ƒõ(‰‚ÿvirtual SbVec3fgetVector(const SbVec2f &mousePosition1,const SbVec2f &mousePosition2)h?szŽ) "€~€”‘€‚A€‚ÿGet a vector on this line given two normalized mouse points.v>ŽðŽ8 @€|€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ÿvirtual SbVec3fgetVector(const SbVec2f &mousePosition)HzŽDÀ6 :€%€”‘€‚A€€€€€‚ÿGet a vector given the current mouse point. Uses the last point on this projector from the previous call to getVector() or setStartPostion(). Do not use this if the working space transform is changing since the neðŽDÀè„w point will be in a different space than the old one.j8ðŽ®À2 4€p€T”A‚S~‚A€ƒã}ƒõ(‰‚ÿvoidsetStartPosition(const SbVec2f &mousePosition)[2DÀ Á) "€d€”‘€‚A€‚ÿSet the initial position from a mouse position.b0®ÀkÁ2 4€`€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidsetStartPosition(const SbVec3f &point)c: ÁÎÁ) "€t€”‘€‚A€‚ÿSet the initial position from a point on the projector.1 kÁÿÁ& €€‚A€‚ÿSEE ALSO‡÷ÎÁ†Ã î€ï€”‘€‚Aã?rW€‰€ãÑŒç΀‰€ã¬ʧ€‰€ãîmXj€‰€ãC}Î€ãô4Ô€‰€ãøaK´€‰€ãwƒq+€‰€ãŠo€‰‚ÿSbCylinderProjector, SbCylinderPlaneProjector, SbCylinderSectionProjector, SbCylinderSheetProjector, SbPlaneProjector, SbSpherePlaneProjector, SbSphereProjector, SbSphereSectionProjector, SbSphereSheetProjector9ÿÁ¿Ã15Ç!½®W¿Ãïô‡SbMatrix0 †ÃïÃ% €€ˆˆ€‚ÿSbMatrix*¿ÃÄ# €€€‚ÿNAMEDïÃ]Ä& €<€”‘€€‚ÿSbMatrix - 4x4 matrix class3ÄÄ# € €€‚ÿINHERITS FROM5 ]ÄÅÄ) "€€”‘€€€‚ÿSbMatrix2 Ä÷Ä& €€€€ ‚ÿSYNOPSISe>ÅÄ\Å' €|€”‘€€‚‚ÿ#include Methods from class SbMatrix:¹÷ÄuÇ` Ž€s€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒãЫÈv‰‚ƒ‚ƒ‚ƒ‚ã4i¥‘‰ƒ‚ƒã ‚û‰‚ÿSbMatrix()SbMatrix(float a11,float a12,float a13,float a14,float a21,float a22,float a23,float a24,float a31,float a32,float a33,float a34,float a41,float a42,float a43,float a44)SbMatrix(const SbMat &m)voidsetValue(const SbMat &m)voidsetValue(const SbMatrixd &md)voidgetValue(SbMat &m) constconst SbMat &getValue() constvoidmakeIdentity()static SbMatrixidentity()voidsetRotate(const SbRotation &q)ZÆ\ÅÏÉ” ö€€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰‚ƒã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰ã ‚û‰‚ƒã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰‚ÿvoidsetScale(float s)voidsetScale(const SbVec3f &s)voidsetTranslate(const SbVec3f &t)voidsetTransform(const SbVec3f &t,const SbRotation &r,const SbVec3f &s)voidsetTransform(const SbVec3f &t,const SbRotation &r,const SbVec3f &s,const SbRotation &so)voidsetTransform(const SbVec3f &translation,const SbRotation &rotation,const SbVec3f &scaleFactor,const SbRotation &scaleOrientation,const SbVec3f ¢er)\»uÇ+Ì¡ w€T”A‚S~‚A€ƒã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰ã ‚û‰‚ƒã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒã4i¥‘‰ã¨ƒõ(‰ã4i¥‘‰ã¨ƒõ(‰ã4i¥‘‰‚ÿvoidgetTransform(SbVec3f &t,SbRotation &r,SbVec3f &s,SbRotation &so) constvoidgetTransform(SbVec3f &translation,SbRotation &rotation,SbVec3f &scaleFactor,SbRotation &scaleOrientation,const SbVec3f ¢er) constfloatdet3(int r1,int r2,int r3,int c1,int c2,int c3) constfloatdet3() constfloatdet4() constSbBoolfactor(SbMatrix &r,SbVec3f &s,SbMatrix &u,SbVec3f &t,SbMatrix &proj) constG·ÏÉrÎ î€o€T”A‚S~‚Aã4i¥‘€‰ƒ‚㑶p6‰ƒ‚ƒ‚ã4i¥‘‰ƒ‚ã4i¥‘‰ƒã4i¥‘‰‚ã4i¥‘‰ƒã4i¥‘‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbMatrixinverse() constSbBoolLUDecomposition(int index[4],float &d)voidLUBackSubstitution(int index[4],float b[4]) constSbMatrixtranspose() constSbMatrix &multRight(const SbMatrix &m)SbMatrix &multLeft(const SbMatrix &m)voidmultMatrixVec(const SbVec3f &src,SbVec3f &dst) constvoidmultVecMatrix(const SbVec3f &src,SbVec3f &dst) constvoidmultDirMatrix(const SbVec3f &src,SbVec3f &dst) constNÃ+ÌÌ‹ 䀇€T”A‚S~‚A€ƒãǬ|6‰ãǬ|6‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ã4i¥‘‰ƒ‚ã4i¥‘‰ƒã4i¥‘‰‚ã4i¥‘‰ƒã ‚û‰‚ã4i¥‘‰ƒã4i¥‘‰‚ã4i¥‘‰ƒã4i¥‘‰ã4i¥‘‰‚ÿvoidmultLineMatrix(const SbLine &src,SbLine &dst) constvoidprint(FILE *fp) constfloat *operator float*()SbMatoperator SbMat&()float *operator [](int i)const float *operator [](int i) constSbMatrix &operator =(const SbMat &m)SbMatrix &rÎ̆Ãoperator =(const SbMatrix &m)SbMatrix &operator =(const SbRotation &q)SbMatrix &operator *=(const SbMatrix &m)SbMatrixoperator *(const SbMatrix &m1,const SbMatrix &m2)¶rÎÚX ~€m€T”A‚S~‚A€ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚㑶p6‰ƒã4i¥‘‰‚ÿintoperator ==(const SbMatrix &m1,const SbMatrix &m2)intoperator !=(const SbMatrix &m1,const SbMatrix &m2)SbBoolequals(const SbMatrix &m,float tolerance) const4Ì& €€‚A€‚ÿDESCRIPTION¥|Ú³) "€ø€”‘€‚A€‚ÿ4x4 matrix class/datatype used by many Open Inventor node and action classes. The matrices are stored in row-major order.0 ã& €€‚A€‚ÿMETHODS"â³@ N€Å€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿSbMatrix()SbMatrix(float a11,float a12,float a13,float a14,float a21,float a22,float a23,float a24,float a31,float a32,float a33,float a34,float a41,float a42,float a43,float a44)SbMatrix(const SbMat &m)9ã>) "€ €”‘€‚A€‚ÿConstructors.L Š, (€@€T”A‚S~‚A€ƒ‚ÿvoidsetValue(const SbMat &m)R)>Ü) "€R€”‘€‚A€‚ÿSets value from 4x4 array of elements.Y'Š52 4€N€T”A‚S~‚A€ƒãЫÈv‰‚ÿvoidsetValue(const SbMatrixd &md)V-Ü‹) "€Z€”‘€‚A€‚ÿSets value from a double precision matrix.m?5ø. ,€~€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidgetValue(SbMat &m) constconst SbMat &getValue() constJ!‹B) "€B€”‘€‚A€‚ÿReturns 4x4 array of elements.Bø„, (€,€T”A‚S~‚A€ƒ‚ÿvoidmakeIdentity()GBË) "€<€”‘€‚A€‚ÿSets matrix to be identity.Q„2 4€>€T”A‚S~‚A€ã4i¥‘‰ƒ‚ÿstatic SbMatrixidentity()GËc) "€<€”‘€‚A€‚ÿReturns an identity matrix.Z(½2 4€P€T”A‚S~‚A€ƒã ‚û‰‚ÿvoidsetRotate(const SbRotation &q)T+c) "€V€”‘€‚A€‚ÿSets matrix to rotate by given rotation.E½V, (€2€T”A‚S~‚A€ƒ‚ÿvoidsetScale(float s)Y0¯) "€`€”‘€‚A€‚ÿSets matrix to scale by given uniform factor.V$V 2 4€H€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidsetScale(const SbVec3f &s)Q(¯V ) "€P€”‘€‚A€‚ÿSets matrix to scale by given vector.Z( ° 2 4€P€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidsetTranslate(const SbVec3f &t)U,V  ) "€X€”‘€‚A€‚ÿSets matrix to translate by given vector.ég° î ‚ ҀπT”A‚S~‚A€ƒã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰‚ƒã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰ã ‚û‰‚ƒã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰‚ÿvoidsetTransform(const SbVec3f &t,const SbRotation &r,const SbVec3f &s)voidsetTransform(const SbVec3f &t,const SbRotation &r,const SbVec3f &s,const SbRotation &so)voidsetTransform(const SbVec3f &translation,const SbRotation &rotation,const SbVec3f &scaleFactor,const SbRotation &scaleOrientation,const SbVec3f ¢er)Ü  6 :€¹€”‘€‚A€€€€€‚ÿComposes the matrix based on a translation, rotation, scale, orientation for scale, and center. The center is the center point for scaling and rotation. The scaleOrientation chooses the primary axes for the scale. Yî   G ^€²€T”A‚S~‚A€ƒã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰ã ‚û‰‚ÿvoidgetTransform(SbVec3f &t,SbRotation &r,SbVec3f &s,SbRotation &so) const€W  ) "€®€”‘€‚A€‚ÿReturn translation, rotation, scale, and scale orientation components of the matrix.ê›   O l€7€T”A‚S~‚A€ƒã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰ã ‚û‰ã¨ƒõ(‰‚ÿvoidgetTransform(SbVec3f &translation,SbRotation &rotation,SbVec3f &scaleFactor,SbRotation &scaleOrientation,const SbVec3f ¢er) constæ˜ ü@N j€1€”‘€‚A€€€€€€€€€€€€€‚ÿDecomposes the matrix into a translation, rotation, scale, and scale orientation. Any projection information is discarded. The decomposition depends upon choice of cen ü@†Ãter point for rotation and scaling, which is optional as the last parameter. Note that if the center is 0, decompose() is the same as factor() where t is translation, u is rotation, s is scaleFactor, and r is ScaleOrientation.xD tA4 8€ˆ€T”A‚S~‚A€ƒ€‚ÿfloatdet3(int r1,int r2,int r3,int c1,int c2,int c3) const‰`ü@ýA) "€À€”‘€‚A€‚ÿReturns determinant of 3x3 submatrix composed of given row and column indices (0-3 for each).AtA>B, (€*€T”A‚S~‚A€ƒ‚ÿfloatdet3() const\3ýAšB) "€f€”‘€‚A€‚ÿReturns determinant of upper-left 3x3 submatrix.A>BÛB, (€*€T”A‚S~‚A€ƒ‚ÿfloatdet4() constQ(šB,C) "€P€”‘€‚A€‚ÿReturns determinant of entire matrix.¸dÛBäCT x€È€T”A‚S~‚A㑶p6€‰ƒã4i¥‘‰ã¨ƒõ(‰ã4i¥‘‰ã¨ƒõ(‰ã4i¥‘‰‚ÿSbBoolfactor(SbMatrix &r,SbVec3f &s,SbMatrix &u,SbVec3f &t,SbMatrix &proj) constöÆ,CÚD0 .€€”‘€‚A€€€‚ÿFactors a matrix m into 5 pieces: m = r s r^ u t, where r^ means transpose of r, and r and u are rotations, s is a scale, and t is a translation. Any projection information is returned in proj.SäC-E5 :€<€T”A‚S~‚Aã4i¥‘€‰ƒ€‚ÿSbMatrixinverse() constŠaÚD·E) "€Â€”‘€‚A€‚ÿReturns inverse of matrix. Results are undefined for singular matrices. Uses LU decomposition.f3-EF3 6€f€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolLUDecomposition(int index[4],float &d)ÄŽ·EáF6 :€€”‘€‚A€€€€€‚ÿPerform in-place LU decomposition of matrix. index is index of rows in matrix. d is the parity of row swaps. Returns FALSE if singular.g:FHG- *€t€T”A‚S~‚A€ƒ‚ÿvoidLUBackSubstitution(int index[4],float b[4]) const‘háFÙG) "€Ð€”‘€‚A€‚ÿPerform back-substitution on LU-decomposed matrix. Index is permutation of rows from original matrix.QHG*H2 4€>€T”A‚S~‚Aã4i¥‘€‰ƒ‚ÿSbMatrixtranspose() constHÙGrH) "€>€”‘€‚A€‚ÿReturns transpose of matrix.ŸY*HIF \€²€T”A‚S~‚Aã4i¥‘€‰ƒã4i¥‘‰‚ã4i¥‘‰ƒã4i¥‘‰‚ÿSbMatrix &multRight(const SbMatrix &m)SbMatrix &multLeft(const SbMatrix &m)_6rHpI) "€l€”‘€‚A€‚ÿMultiplies matrix by given matrix on right or left.zAIêI9 B€‚€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidmultMatrixVec(const SbVec3f &src,SbVec3f &dst) constkBpIUJ) "€„€”‘€‚A€‚ÿMultiplies matrix by given column vector, giving vector result.zAêIÏJ9 B€‚€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidmultVecMatrix(const SbVec3f &src,SbVec3f &dst) consth?UJ7K) "€~€”‘€‚A€‚ÿMultiplies given row vector by matrix, giving vector result.zAÏJ±K9 B€‚€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidmultDirMatrix(const SbVec3f &src,SbVec3f &dst) constˆR7K9M6 :€¥€”‘€‚A€€€€€‚ÿMultiplies given row vector by matrix, giving vector result. src is assumed to be a direction vector, so translation part of matrix is ignored. Note: if you wish to transform surface points and normals by a matrix, call multVecMatrix() for the points and call multDirMatrix() on the inverse transpose of the matrix for the normals.y@±K²M9 B€€€T”A‚S~‚A€ƒãǬ|6‰ãǬ|6‰‚ÿvoidmultLineMatrix(const SbLine &src,SbLine &dst) constt9MON) "€è€”‘€‚A€‚ÿMultiplies the given line's origin by the matrix, and the line's direction by the rotation portion of the matrix.I²M˜N, (€:€T”A‚S~‚A€ƒ‚ÿvoidprint(FILE *fp) constoFONO) "€Œ€”‘€‚A€‚ÿPrints a formatted version of the matrix to the given file pointer.H˜NOO, (€8€T”A‚S~‚A€ƒ‚ÿfloat *operator float*()^5O­O) "€j€”‘€‚A€‚ÿCast: returns pointer to storage of first element.FOO €, (€4€T”A‚S~‚A€ƒ‚ÿSbMatoperator SbMat&()­O €†ÃQ(­O]€) "€P€”‘€‚A€‚ÿCast: returns reference to 4x4 array.rD €Ï€. ,€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿfloat *operator [](int i)const float *operator [](int i) conste<]€4) "€x€”‘€‚A€‚ÿMake it look like a usual matrix (so you can do m[3][2]).\*Ï€2 4€T€T”A‚S~‚Aã4i¥‘€‰ƒ‚ÿSbMatrix &operator =(const SbMat &m)R)4â) "€R€”‘€‚A€‚ÿSets value from 4x4 array of elements.g/I‚8 @€^€T”A‚S~‚Aã4i¥‘€‰ƒã4i¥‘‰‚ÿSbMatrix &operator =(const SbMatrix &m)a,⪂5 :€X€”‘€‚A€ã4i¥‘€‰€‚ÿSet the matrix from another SbMatrix.i1I‚ƒ8 @€b€T”A‚S~‚Aã4i¥‘€‰ƒã ‚û‰‚ÿSbMatrix &operator =(const SbRotation &q)^)ª‚qƒ5 :€R€”‘€‚A€ã ‚û€‰€‚ÿSet the matrix from an SbRotation.h0ƒÙƒ8 @€`€T”A‚S~‚Aã4i¥‘€‰ƒã4i¥‘‰‚ÿSbMatrix &operator *=(const SbMatrix &m)^5qƒ7„) "€j€”‘€‚A€‚ÿPerforms right multiplication with another matrix.ƒDÙƒº„? N€ˆ€T”A‚S~‚Aã4i¥‘€‰ƒã4i¥‘‰ã4i¥‘‰‚ÿSbMatrixoperator *(const SbMatrix &m1,const SbMatrix &m2)N%7„…) "€J€”‘€‚A€‚ÿBinary multiplication of matrices.Âzº„Ê…H `€ô€T”A‚S~‚A€ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ÿintoperator ==(const SbMatrix &m1,const SbMatrix &m2)intoperator !=(const SbMatrix &m1,const SbMatrix &m2)J!…†) "€B€”‘€‚A€‚ÿEquality comparison operators.w>Ê…‹†9 B€|€T”A‚S~‚A㑶p6€‰ƒã4i¥‘‰‚ÿSbBoolequals(const SbMatrix &m,float tolerance) constkB†ö†) "€„€”‘€‚A€‚ÿEquality comparison within given tolerance, for each component.1 ‹†'‡& €€‚A€‚ÿSEE ALSO:ö†´‡S v€t€”‘€‚A㦃õ(€‰€€㨃õ(‰€ã ‚û€‰€€ãC°×>‰‚ÿSbVec3d, SbVec3f, SbRotation, SbRotationd7'‡ë‡1½®$X뇈õÆSbName. ´‡ˆ% €€ˆˆ€‚ÿSbName*ë‡Cˆ# €€€‚ÿNAMEY3ˆœˆ& €f€”‘€€‚ÿSbName - character string stored in a hash table3Cˆψ# € €€‚ÿINHERITS FROM3 œˆ‰) "€€”‘€€€‚ÿSbName2 ψ4‰& €€€€ ‚ÿSYNOPSISc<‰—‰' €x€”‘€€‚‚ÿ#include Methods from class SbName:›4‰ª‹x ¾€7€T”A‚S~‚A€ƒ‚ƒ‚ƒãXíʉ‚ƒãúß~6‰‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒ‚ƒãúß~6‰‚ƒãúß~6‰ãúß~6‰‚ƒãúß~6‰‚ÿSbName()SbName(const char *s)SbName(const SbString &s)SbName(const SbName &n)~SbName()const char *getString() constintgetLength() conststatic SbBoolisIdentStartChar(char c)static SbBoolisIdentChar(char c)intoperator !() constintoperator ==(const char *s,const SbName &n)intoperator ==(const SbName &n1,const SbName &n2)intoperator ==(const SbName &n,const char *s)êž—‰”ŒL f€=€T”A‚S~‚A€ƒãúß~6‰‚ƒãúß~6‰ãúß~6‰‚ƒãúß~6‰‚ÿintoperator !=(const char *s,const SbName &n)intoperator !=(const SbName &n1,const SbName &n2)intoperator !=(const SbName &n,const char *s)4ª‹ÈŒ& €€‚A€‚ÿDESCRIPTION_)”Œ'6 :€S€”‘€‚A€€€€€‚ÿThis class of strings stores the string in a hash table. It is used by the Open Inventor toolkit for keywords and other unique names. It is not recommended for general use (only in the context of Open Inventor objects). When a string is stored in this table, a pointer to the storage is returned. Two identical strings will return the same pointer. This means that comparison of two SbNames for equality can be accomplished by comparing their identifiers. SbNames are used for strings which are expected to show up frequently, such as node names.0 ÈŒW& €€‚A€‚ÿMETHODS¦f' À@ P€Ì€T”A‚S~‚A€ƒ‚ƒ‚ƒãXíʉ‚ƒãúß~6‰‚ƒ‚ÿSbName()SbName(const char *s)SbName(const SbString &s)SbName(const SbName &n)~SbName()W À´‡HWTÀ) "€>€”‘€‚A€‚ÿConstructors and destructor.M! À¡À, (€B€T”A‚S~‚A€ƒ‚ÿconst char *getString() constT+TÀõÀ) "€V€”‘€‚A€‚ÿReturns pointer to the character string.D¡À9Á, (€0€T”A‚S~‚A€ƒ‚ÿintgetLength() constEõÀ~Á) "€8€”‘€‚A€‚ÿReturns length of string.]+9ÁÛÁ2 4€V€T”A‚S~‚A€㑶p6‰ƒ‚ÿstatic SbBoolisIdentStartChar(char c)|S~ÁWÂ) "€¦€”‘€‚A€‚ÿReturns TRUE if given character is a legal starting character for an identifier.X&ÛÁ¯Â2 4€L€T”A‚S~‚A€㑶p6‰ƒ‚ÿstatic SbBoolisIdentChar(char c)VWÂ.Ã) "€¬€”‘€‚A€‚ÿReturns TRUE if given character is a legal nonstarting character for an identifier.E¯ÂsÃ, (€2€T”A‚S~‚A€ƒ‚ÿintoperator !() constg>.ÃÚÃ) "€|€”‘€‚A€‚ÿUnary "not" operator; returns TRUE if string is empty ("").êžsÃÄÄL f€=€T”A‚S~‚A€ƒãúß~6‰‚ƒãúß~6‰ãúß~6‰‚ƒãúß~6‰‚ÿintoperator ==(const char *s,const SbName &n)intoperator ==(const SbName &n1,const SbName &n2)intoperator ==(const SbName &n,const char *s)lCÚÃ0Å) "€†€”‘€‚A€‚ÿEquality operator for SbName/char* and SbName/SbName comparison.êžÄÄÆL f€=€T”A‚S~‚A€ƒãúß~6‰‚ƒãúß~6‰ãúß~6‰‚ƒãúß~6‰‚ÿintoperator !=(const char *s,const SbName &n)intoperator !=(const SbName &n1,const SbName &n2)intoperator !=(const SbName &n,const char *s)nE0ňÆ) "€Š€”‘€‚A€‚ÿInequality operator for SbName/char* and SbName/SbName comparison.1 ƹÆ& €€‚A€‚ÿSEE ALSO< ˆÆõÆ/ .€€”‘€‚AãXíÊ€‰‚ÿSbString8¹Æ-Ç17 \$¸%Y-Ç\ÇcSbPList/ õÆ\Ç% €€ˆˆ€‚ÿSbPList*-džÇ# €€€‚ÿNAMET.\ÇÚÇ& €\€”‘€€‚ÿSbPList - list of generic (void *) pointers3†Ç È# € €€‚ÿINHERITS FROM4 ÚÇAÈ) "€€”‘€€€‚ÿSbPList2 ÈsÈ& €€€€ ‚ÿSYNOPSISc<AÈÖÈ' €x€”‘€€‚‚ÿ#include Methods from class SbPList:"´sÈøÊn ª€i€T”A‚S~‚A€ƒ‚ƒãK2Å'‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒãK2Å'‰‚ãK2Å'‰ƒãK2Å'‰‚ƒ‚ƒãK2Å'‰‚ƒãK2Å'‰‚ÿSbPList()SbPList(const SbPList &pl)SbPList(int initSize)~SbPList()voidappend(void * ptr)intfind(const void *ptr) constvoidinsert(void *ptr,int addBefore)voidremove(int which)intgetLength() constvoidtruncate(int start)voidcopy(const SbPList &pl)SbPList &operator =(const SbPList &pl)void *&operator [](int i) constintoperator ==(const SbPList &pl) constintoperator !=(const SbPList &pl) const4ÖÈ,Ë& €€‚A€‚ÿDESCRIPTION¢yøÊÎË) "€ò€”‘€‚A€‚ÿThis class manages a dynamic list of generic void * pointers. This class allows random access, insertion, and removal.0 ,ËþË& €€‚A€‚ÿMETHODS†NÎË„Ì8 @€œ€T”A‚S~‚A€ƒ‚ƒãK2Å'‰‚ƒ‚ƒ‚ÿSbPList()SbPList(const SbPList &pl)SbPList(int initSize)~SbPList().øþ˲Í6 :€ñ€”‘€‚A€€€€€‚ÿConstructors and destructor. initSize specifies an initial size for the list, which is useful as an optimization if you can estimate the length of the list before you construct it. If another SbPList is given, it returns a copy of that list.F„ÌøÍ, (€4€T”A‚S~‚A€ƒ‚ÿvoidappend(void * ptr)N%²ÍFÎ) "€J€”‘€‚A€‚ÿAdds given pointer to end of list.N"øÍ”Î, (€D€T”A‚S~‚A€ƒ‚ÿintfind(const void *ptr) constg>FÎûÎ) "€|€”‘€‚A€‚ÿReturns index of given pointer in list, or -1 if not found.U(”ÎPÏ- *€P€T”A‚S~‚A€ƒ‚ÿvoidinsert(void *ptr,int addBefore)jAûκÏ) "€‚€”‘€‚A€‚ÿInserts given pointer in list before pointer with given index.EPÏ , (€2€T”A‚S~‚A€ƒ‚ÿvoidremove(int which)ºÏ õÆM$ºÏY) "€H€”‘€‚A€‚ÿRemoves pointer with given index.D , (€0€T”A‚S~‚A€ƒ‚ÿintgetLength() constO&Yì) "€L€”‘€‚A€‚ÿReturns number of pointers in list.G3, (€6€T”A‚S~‚A€ƒ‚ÿvoidtruncate(int start)g>ìš) "€|€”‘€‚A€‚ÿRemoves all pointers after one with given index, inclusive.S!3í2 4€B€T”A‚S~‚A€ƒãK2Å'‰‚ÿvoidcopy(const SbPList &pl)8š%) "€€”‘€‚A€‚ÿCopy a list.f.í‹8 @€\€T”A‚S~‚AãK2Å'€‰ƒãK2Å'‰‚ÿSbPList &operator =(const SbPList &pl)\3%ç) "€f€”‘€‚A€‚ÿAssignment operator; copies list into this list.O#‹6, (€F€T”A‚S~‚A€ƒ‚ÿvoid *&operator [](int i) constM$çƒ) "€H€”‘€‚A€‚ÿReturns pointer with given index.’X6: D€°€T”A‚S~‚A€ƒãK2Å'‰‚ƒãK2Å'‰‚ÿintoperator ==(const SbPList &pl) constintoperator !=(const SbPList &pl) constN%ƒc) "€J€”‘€‚A€‚ÿEquality and inequality operators.8›1IÞ#\$Z›ÊêBSbPlane/ cÊ% €€ˆˆ€‚ÿSbPlane*›ô# €€€‚ÿNAMEG!Ê;& €B€”‘€€‚ÿSbPlane - oriented plane in 3D3ôn# € €€‚ÿINHERITS FROM4 ;¢) "€€”‘€€€‚ÿSbPlane2 nÔ& €€€€ ‚ÿSYNOPSISd=¢8' €z€”‘€€‚‚ÿ#include Methods from class SbPlane:-Ôe î€;€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰ã¨ƒõ(‰‚ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒ‚㑶p6‰ƒãǬ|6‰ã¨ƒõ(‰‚ƒã4i¥‘‰‚㑶p6‰ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ÿSbPlane()SbPlane(const SbVec3f &p0,const SbVec3f &p1,const SbVec3f &p2)SbPlane(const SbVec3f &normal,float distance)SbPlane(const SbVec3f &normal,const SbVec3f &point)voidoffset(float d)SbBoolintersect(const SbLine &l,SbVec3f &intersection) constvoidtransform(const SbMatrix &matrix)SbBoolisInHalfSpace(const SbVec3f &point) constconst SbVec3f &getNormal() conståš8J K d€5€T”A‚S~‚A€ƒ‚ƒã÷Ä'‰ã÷Ä'‰‚ƒã÷Ä'‰ã÷Ä'‰‚ÿfloatgetDistanceFromOrigin() constintoperator ==(const SbPlane &p1,const SbPlane &p2)intoperator !=(const SbPlane &p1,const SbPlane &p2)4e~ & €€‚A€‚ÿDESCRIPTION¯…J - * "€ €”‘€‚A€‚ÿRepresents an oriented plane in 3D. This is a lightweight class/datatype that is used for arguments to some Open Inventor objects.0 ~ ] & €€‚A€‚ÿMETHODSÁ- y [ „€ƒ€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰ã¨ƒõ(‰‚ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbPlane()SbPlane(const SbVec3f &p0,const SbVec3f &p1,const SbVec3f &p2)SbPlane(const SbVec3f &normal,float distance)SbPlane(const SbVec3f &normal,const SbVec3f &point)/ç] ¨ H ^€Ï€”‘€‚A€€€€€€€€€€€‚ÿConstructors. p0, p1, and p2 represent three points in the plane. normal is a normal vector, distance is distance from origin to plane along normal vector, and point is a point in 3-space for the plane to pass through.Cy ë , (€.€T”A‚S~‚A€ƒ‚ÿvoidoffset(float d)O&¨ : ) "€L€”‘€‚A€‚ÿOffset a plane by a given distance.†Gë À ? N€Ž€T”A‚S~‚A㑶p6€‰ƒãǬ|6‰ã¨ƒõ(‰‚ÿSbBoolintersect(const SbLine &l,SbVec3f &intersection) const•l: U) "€Ø€”‘€‚A€‚ÿIntersect line and plane, returning TRUE if there is an intersection, FALSE if line is parallel to plane.]+À ²2 4€V€T”A‚S~‚A€ƒã4i¥‘‰‚ÿvoidtransform(const SbMatrix &matrix)U,U) "€X€”‘€‚A€‚ÿTransforms the plane by the given matrix.o7²v8 @€n€T”A‚S~‚A㑶p6€‰ƒã¨ƒõ(‰‚ÿSbBoolisInHalfSpace(const SbVec3f &point) constzQ @) "€¢€”‘€‚A€‚ÿReturns TRUE if the given point is within the half-space defined by the plane.v @cX&vd@2 4€L€T”A‚S~‚A€㨃õ(‰ƒ‚ÿconst SbVec3f &getNormal() constK" @¯@) "€D€”‘€‚A€‚ÿReturns normal vector to plane.R&d@A, (€L€T”A‚S~‚A€ƒ‚ÿfloatgetDistanceFromOrigin() constR)¯@SA) "€R€”‘€‚A€‚ÿReturns distance from origin to plane.¾vABH `€ì€T”A‚S~‚A€ƒã÷Ä'‰ã÷Ä'‰‚ƒã÷Ä'‰ã÷Ä'‰‚ÿintoperator ==(const SbPlane &p1,const SbPlane &p2)intoperator !=(const SbPlane &p1,const SbPlane &p2)U,SAfB) "€X€”‘€‚A€‚ÿEquality/inequality comparison operators.1 B—B& €€‚A€‚ÿSEE ALSOSfBêB; F€0€”‘€‚A㨃õ(€‰€ãǬ|6€‰‚ÿSbVec3f, SbLineA—B+C1ø$̃#[+CcC-†SbPlaneProjector8êBcC% €&€ˆˆ€‚ÿSbPlaneProjector*+CC# €€€‚ÿNAMEK%cCØC& €J€”‘€€‚ÿSbPlaneProjector - plane projector3C D# € €€‚ÿINHERITS FROM[&ØCfD5 :€L€”‘€ãuLœM€‰€€€‚ÿSbProjector > SbPlaneProjector2 D˜D& €€€€ ‚ÿSYNOPSIS€YfDE' €²€”‘€€‚‚ÿ#include Methods from class SbPlaneProjector:8±˜DPG‡ Ü€c€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã÷Ä'‰ã‘¶p6‰‚ƒ‚ƒã÷Ä'‰‚ã÷Ä'‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㨃õ(‰ƒã}ƒõ(‰ã}ƒõ(‰‚㨃õ(‰ƒã}ƒõ(‰‚ÿSbPlaneProjector(SbBool orient = FALSE)SbPlaneProjector(const SbPlane &plane,SbBool orient = FALSE)~SbPlaneProjector()voidsetPlane(const SbPlane &plane)const SbPlane &getPlane() constvoidsetOrientToEye(SbBool orientToEye)SbBoolisOrientToEye() constvirtual SbVec3fgetVector(const SbVec2f &mousePosition1,const SbVec2f &mousePosition2)virtual SbVec3fgetVector(const SbVec2f &mousePosition) fEðG: D€Ì€T”A‚S~‚A€ƒã}ƒõ(‰‚ƒã¨ƒõ(‰‚ÿvoidsetStartPosition(const SbVec2f &mousePosition)voidsetStartPosition(const SbVec3f &point)S$PGCH/ .€H€”‘€‚A€ãuLœM‰‚ÿMethods from class SbProjector:~ðGÁIa €;€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ƒãª®§O‰‚㪮§O‰ƒ‚ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ãuLœM‰ƒ‚ÿvirtual SbVec3fproject(const SbVec2f &point)virtual voidsetViewVolume(const SbViewVolume &vol)const SbViewVolume &getViewVolume() constvirtual voidsetWorkingSpace(const SbMatrix &space)const SbMatrix &getWorkingSpace() constvirtual SbProjector *copy() const4CHõI& €€‚A€‚ÿDESCRIPTIONª~ÁIŸJ, (€ü€”‘€‚A€€‚ÿSbPlaneProjector projects the mouse onto a plane. This is typically used to write interactive 3D manipulators and viewers.0 õIÏJ& €€‚A€‚ÿMETHODS_-ŸJ.K2 4€Z€T”A‚S~‚A€ƒã‘¶p6‰‚ÿSbPlaneProjector(SbBool orient = FALSE)‘hÏJ¿K) "€Ð€”‘€‚A€‚ÿConstructor. The default plane passes through the origin and is oriented perpendicular to the Z axis.~E.K=L9 B€Š€T”A‚S~‚A€ƒã÷Ä'‰ã‘¶p6‰‚ÿSbPlaneProjector(const SbPlane &plane,SbBool orient = FALSE)“j¿KÐL) "€Ô€”‘€‚A€‚ÿConstructor which is passed a plane. If orient to eye is TRUE, the plane will be reoriented to the eye.C=LM, (€.€T”A‚S~‚A€ƒ‚ÿ~SbPlaneProjector()7ÐLJM) "€€”‘€‚A€‚ÿDestructor.…KMÏM: D€–€T”A‚S~‚A€ƒã÷Ä'‰‚ã÷Ä'‰ƒ‚ÿvoidsetPlane(const SbPlane &plane)const SbPlane &getPlane() constI JMN) "€@€”‘€‚A€‚ÿSet and get the plane to use.…KÏMN: D€–€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetOrientToEye(SbBool orientToEye)SbBoolisOrientToEye() constŠZN3€0 .€µ€”‘€‚A€€€‚ÿSet and get whether the projector should be oriented towards the eye. If orientToEye is set to TRUE, the given plane's direction is ignored, and the plane will be oriented to the eye. It will pass through the same point from the origin defined by the original dir * dist. Set to FALSE if the plane's direN3€êBction should remain in working space.Ÿ`NÒ€? N€À€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰ã}ƒõ(‰‚ÿvirtual SbVec3fgetVector(const SbVec2f &mousePosition1,const SbVec2f &mousePosition2)lC3€>) "€†€”‘€‚A€‚ÿGet a vector on this plane given two normalized mouse positions.v>Ò€´8 @€|€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ÿvirtual SbVec3fgetVector(const SbVec2f &mousePosition)H>ü‚6 :€%€”‘€‚A€€€€€‚ÿGet a vector given the current mouse point. Uses the last point on this projector from the previous call to getVector() or setStartPostion(). Do not use this if the working space transform is changing since the new point will be in a different space than the old one.j8´fƒ2 4€p€T”A‚S~‚A€ƒã}ƒõ(‰‚ÿvoidsetStartPosition(const SbVec2f &mousePosition)K"ü‚±ƒ) "€D€”‘€‚A€‚ÿSet the initial mouse position.b0fƒ„2 4€`€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidsetStartPosition(const SbVec3f &point)c:±ƒv„) "€t€”‘€‚A€‚ÿSet the initial position from a point on the projector.1 „§„& €€‚A€‚ÿSEE ALSO†öv„-† î€í€”‘€‚Aã?rW€‰€ãÑŒç΀‰€ã¬ʧ€‰€ãîmXj€‰€ã‘ôR7€‰€ãô4Ô€‰€ãøaK´€‰€ãwƒq+€‰€ãŠo€‰‚ÿSbCylinderProjector, SbCylinderPlaneProjector, SbCylinderSectionProjector, SbCylinderSheetProjector, SbLineProjector, SbSpherePlaneProjector, SbSphereProjector, SbSphereSectionProjector, SbSphereSheetProjector< §„i†1Š̃#t%\i†œ† ÃSbProjector3-†œ†% €€ˆˆ€‚ÿSbProjector*i†Ɔ# €€€‚ÿNAME]7œ†#‡& €n€”‘€€‚ÿSbProjector - base class for representing projectors3ƆV‡# € €€‚ÿINHERITS FROM8#‡Ž‡) "€€”‘€€€‚ÿSbProjector2 V‡À‡& €€€€ ‚ÿSYNOPSISvOŽ‡6ˆ' €ž€”‘€€‚‚ÿ#include Methods from class SbProjector:~À‡´‰a €;€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ƒãª®§O‰‚㪮§O‰ƒ‚ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ãuLœM‰ƒ‚ÿvirtual SbVec3fproject(const SbVec2f &point)virtual voidsetViewVolume(const SbViewVolume &vol)const SbViewVolume &getViewVolume() constvirtual voidsetWorkingSpace(const SbMatrix &space)const SbMatrix &getWorkingSpace() constvirtual SbProjector *copy() const46ˆè‰& €€‚A€‚ÿDESCRIPTIONï´‰Œ- (€ß€”‘€‚A€€‚ÿSbProjector is the base class for all projector classes. Projector classes are used to convert from window space (usually based on the mouse location) into a 3D point. This is done by projecting the window coordinate as a 3D vector onto a geometric function in 3-space, and computing the intersection point. Most projectors actually compute incremental changes and produce incremental rotations and translation as needed. Projectors are used to write 3D interactive manipulators and viewers.0 è‰4Œ& €€‚A€‚ÿMETHODSl4Œ Œ8 @€h€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ÿvirtual SbVec3fproject(const SbVec2f &point)ïÅ4Œ* "€‹€”‘€‚A€‚ÿApply the projector using the given point, returning the point in three dimensions that it projects to. The point should be normalized (lie in the range [0.0,1.0]), with (0,0) at the lower-left.Ÿe Œ.Ž: D€Ê€T”A‚S~‚A€ƒãª®§O‰‚㪮§O‰ƒ‚ÿvirtual voidsetViewVolume(const SbViewVolume &vol)const SbViewVolume &getViewVolume() const­xÛŽ5 :€ð€”‘€‚A€ã½V)\€‰€‚ÿSet and get the view volume to use for the projection. This is typically supplied from SoCamera::getViewVolume().c.Žx: D€Æ€T”A‚S~‚A€ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ÿvirtual voidsetWorkingSpace(const SbMatrix &space)const SbMatrix &getWorkingSpace() constøÎÛŽ|À* "€€”‘€‚A€‚ÿSet and get the transform space to work in. This matrix should transform working space coordix|À-†nates into world space. The default matrix is identity, meaning that the default working space is world space.Y'xÕÀ2 4€N€T”A‚S~‚A€ãuLœM‰ƒ‚ÿvirtual SbProjector *copy() const_6|À4Á) "€l€”‘€‚A€‚ÿCreates and returns an exact copy of the projector.1 ÕÀeÁ& €€‚A€‚ÿSEE ALSO¨ 4Á Ãœ €”‘€‚Aã?rW€‰€ãÑŒç΀‰€ã¬ʧ€‰€ãîmXj€‰€ã‘ôR7€‰€ãC}Î€ãô4Ô€‰€ãøaK´€‰€ãwƒq+€‰€ãŠo€‰‚ÿSbCylinderProjector, SbCylinderPlaneProjector, SbCylinderSectionProjector, SbCylinderSheetProjector, SbLineProjector, SbPlaneProjector, SbSpherePlaneProjector, SbSphereProjector, SbSphereSectionProjector, SbSphereSheetProjector; eÁHÃ1Ï#¸%&­]HÃzÃÝESbRotation2 ÃzÃ% €€ˆˆ€‚ÿSbRotation*HäÃ# €€€‚ÿNAMEW1zÃûÃ& €b€”‘€€‚ÿSbRotation - class for representing a rotation3¤Ã.Ä# € €€‚ÿINHERITS FROM7ûÃeÄ) "€€”‘€€€‚ÿSbRotation2 .Ä—Ä& €€€€ ‚ÿSYNOPSISg@eÄþÄ' €€€”‘€€‚‚ÿ#include Methods from class SbRotation:<Í—Ä:Ço ¬€›€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰‚ƒ‚ƒ‚ƒã4i¥‘‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒ‚ƒ‚ã ‚û‰ƒ‚ƒã¨ƒõ(‰‚ÿSbRotation()SbRotation(const SbVec3f &axis,float radians)SbRotation(const float v[4])SbRotation(float q0,float q1,float q2,float q3)SbRotation(const SbMatrix &m)SbRotation(const SbVec3f &rotateFrom,const SbVec3f &rotateTo)const float *getValue() constvoidgetValue(float &q0,float &q1,float &q2,float &q3) constSbRotation &setValue(float q0,float q1,float q2,float q3)voidgetValue(SbVec3f &axis,float &radians) const5¢þÄoÉ“ ô€E€T”A‚S~‚A€ƒã4i¥‘‰‚ƒãЫÈv‰‚ã ‚û‰ƒ‚ã ‚û‰ƒ‚ã ‚û‰ƒ‚ã ‚û‰ƒã4i¥‘‰‚ã ‚û‰ƒã¨ƒõ(‰‚ã ‚û‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ã ‚û‰ƒãC°×>‰‚ÿvoidgetValue(SbMatrix &matrix) constvoidgetValue(SbMatrixd &matrix) constSbRotation &invert()SbRotationinverse() constSbRotation &setValue(const float q[4])SbRotation &setValue(const SbMatrix &m)SbRotation &setValue(const SbVec3f &axis,float radians)SbRotation &setValue(const SbVec3f &rotateFrom,const SbVec3f &rotateTo)SbRotation &setValue(const SbRotationd &rotate)>¦:ǭ˘ þ€M€T”A‚S~‚Aã ‚û€‰ƒãЫÈv‰‚ã ‚û‰ƒã ‚û‰‚ƒã ‚û‰ã ‚û‰‚ƒã ‚û‰ã ‚û‰‚㑶p6‰ƒã ‚û‰‚ã ‚û‰ƒã ‚û‰ã ‚û‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbRotation &setValue(const SbMatrixd &matrix)SbRotation &operator *=(const SbRotation &q)intoperator ==(const SbRotation &q1,const SbRotation &q2)intoperator !=(const SbRotation &q1,const SbRotation &q2)SbBoolequals(const SbRotation &r,float tolerance) constSbRotationoperator *(const SbRotation &q1,const SbRotation &q2)voidmultVec(const SbVec3f &src,SbVec3f &dst) constçœoÉ”ÌK d€9€T”A‚S~‚A€ƒ‚ã ‚û‰ƒã ‚û‰ã ‚û‰‚ã ‚û‰ƒ‚ÿvoidscaleAngle(float scaleFactor )static SbRotationslerp(const SbRotation &rot0,const SbRotation &rot1,float t)static SbRotationidentity()4­ËÈÌ& €€‚A€‚ÿDESCRIPTIONå”Ì×Í* "€Ë€”‘€‚A€‚ÿObject that stores a rotation. There are several ways to specify a rotation: quaternion (4 floats, in the order x, y, z, w), 4x4 rotation matrix, or axis and angle. All angles are in radians and all rotations are right-handed.0 ÈÌÎ& €€‚A€‚ÿMETHODSMù×ÍTÏT v€ó€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰‚ƒ‚ƒ‚ƒã4i¥‘‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbRotation()SbRotation(const SbVec3f &axis,float radians)SbRotation(const float v[4])SbRotation(float q0,float q1,float q2,float q3)SbRotation(const SbMatrix &m)SbRotation(const SbVec3f &rotateFrom,const SbVec3f &rotateTo)=Î6 :€€”‘€‚A€€€€€‚ÿConstructors for rotation. The axis/radians constructor creates a rotation of angle radians about the given axis. TheTÏ Ã constructors that take four floats create a quaternion from those floats (careful, this differs from the four numbers in an axis/radian definition). Matrix constructor requires a valid rotation matrix. The rotateFrom/To constructor defines rotation that rotates from one vector into another. The rotateFrom and rotateTo vectors are normalized by the constructor before calculating the rotation.M!TÏê, (€B€T”A‚S~‚A€ƒ‚ÿconst float *getValue() consti@S) "€€€”‘€‚A€‚ÿReturns pointer to array of 4 components defining quaternion.qBêÄ/ .€„€T”A‚S~‚A€ƒ‚ÿvoidgetValue(float &q0,float &q1,float &q2,float &q3) constc:S') "€t€”‘€‚A€‚ÿReturns 4 individual components of rotation quaternion.wBÄž5 :€„€T”A‚S~‚Aã ‚û€‰ƒ‚ÿSbRotation &setValue(float q0,float q1,float q2,float q3)pG') "€Ž€”‘€‚A€‚ÿSets value of rotation from 4 individual components of a quaternion.j7žx3 6€n€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidgetValue(SbVec3f &axis,float &radians) constoFç) "€Œ€”‘€‚A€‚ÿReturns corresponding 3D rotation axis vector and angle in radians.\*xC2 4€T€T”A‚S~‚A€ƒã4i¥‘‰‚ÿvoidgetValue(SbMatrix &matrix) constV-ç™) "€Z€”‘€‚A€‚ÿReturns corresponding 4x4 rotation matrix.]+Cö2 4€V€T”A‚S~‚A€ƒãЫÈv‰‚ÿvoidgetValue(SbMatrixd &matrix) constV-™L) "€Z€”‘€‚A€‚ÿReturns corresponding 4x4 rotation matrix.Lö˜2 4€4€T”A‚S~‚Aã ‚û€‰ƒ‚ÿSbRotation &invert()Q(Lé) "€P€”‘€‚A€‚ÿChanges a rotation to be its inverse.Q˜:2 4€>€T”A‚S~‚Aã ‚û€‰ƒ‚ÿSbRotationinverse() constN%éˆ) "€J€”‘€‚A€‚ÿReturns the inverse of a rotation.^,:æ2 4€X€T”A‚S~‚Aã ‚û€‰ƒ‚ÿSbRotation &setValue(const float q[4])nEˆT) "€Š€”‘€‚A€‚ÿSets value of rotation from array of 4 components of a quaternion.g/æ»8 @€^€T”A‚S~‚Aã ‚û€‰ƒã4i¥‘‰‚ÿSbRotation &setValue(const SbMatrix &m)Z1T ) "€b€”‘€‚A€‚ÿSets value of rotation from a rotation matrix.y@»Ž 9 B€€€T”A‚S~‚Aã ‚û€‰ƒã¨ƒõ(‰‚ÿSbRotation &setValue(const SbVec3f &axis,float radians)sJ  ) "€”€”‘€‚A€‚ÿSets value of vector from 3D rotation axis vector and angle in radians.‘RŽ ’ ? N€¤€T”A‚S~‚Aã ‚û€‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbRotation &setValue(const SbVec3f &rotateFrom,const SbVec3f &rotateTo)Í— _ 6 :€/€”‘€‚A€€€€€‚ÿSets rotation to rotate one direction vector to another. The rotateFrom and rotateTo arguments are normalized before the rotation is calculated.o7’ Î 8 @€n€T”A‚S~‚Aã ‚û€‰ƒãC°×>‰‚ÿSbRotation &setValue(const SbRotationd &rotate)[2_ ) ) "€d€”‘€‚A€‚ÿSets rotation from a double precision rotation.m5Î – 8 @€j€T”A‚S~‚Aã ‚û€‰ƒãЫÈv‰‚ÿSbRotation &setValue(const SbMatrixd &matrix)b9) ø ) "€r€”‘€‚A€‚ÿSets rotation from a double precision rotation matrix.l4– d 8 @€h€T”A‚S~‚Aã ‚û€‰ƒã ‚û‰‚ÿSbRotation &operator *=(const SbRotation &q)lCø Ð ) "€†€”‘€‚A€‚ÿMultiplies by another rotation; results in product of rotations.Ë‚d ›I `€€T”A‚S~‚A€ƒã ‚û‰ã ‚û‰‚ƒã ‚û‰ã ‚û‰‚ÿintoperator ==(const SbRotation &q1,const SbRotation &q2)intoperator !=(const SbRotation &q1,const SbRotation &q2)J!Ð å) "€B€”‘€‚A€‚ÿEquality comparison operators.y@›^9 B€€€T”A‚S~‚A㑶p6€‰ƒã ‚û‰‚ÿSbBoolequals(const SbRotation &r,float tolerance) const®„å@* "€ €”‘€‚A€‚ÿEquality comparison within given tolerance - the square of the length of the maximum distance between the two quaternio^@ Ãn vectors.‰J^¡@? N€”€T”A‚S~‚Aã ‚û€‰ƒã ‚û‰ã ‚û‰‚ÿSbRotationoperator *(const SbRotation &q1,const SbRotation &q2)mD@A) "€ˆ€”‘€‚A€‚ÿMultiplication of two rotations; results in product of rotations.t;¡@‚A9 B€v€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidmultVec(const SbVec3f &src,SbVec3f &dst) constg>AéA) "€|€”‘€‚A€‚ÿMultiplies the given vector by the matrix of this rotation.R&‚A;B, (€L€T”A‚S~‚A€ƒ‚ÿvoidscaleAngle(float scaleFactor )…VéAÀB/ .€¬€”‘€‚A€€€‚ÿKeep the axis the same. Multiply the angle of rotation by the amount scaleFactor.Z;B]CC V€´€T”A‚S~‚A€ã ‚û‰ƒã ‚û‰ã ‚û‰€‚ÿstatic SbRotationslerp(const SbRotation &rot0,const SbRotation &rot1,float t)‰`ÀBæC) "€À€”‘€‚A€‚ÿSpherical linear interpolation: as t goes from 0 to 1, returned value goes from rot0 to rot1.S!]C9D2 4€B€T”A‚S~‚A€ã ‚û‰ƒ‚ÿstatic SbRotationidentity()DæC}D) "€6€”‘€‚A€‚ÿReturns a null rotation..9D«D& €€‚A€‚ÿNOTES[2}DE) "€d€”‘€‚A€‚ÿRotations are stored internally as quaternions.1 «D7E& €€‚A€‚ÿSEE ALSO¦GEÝE_ Ž€Ž€”‘€‚A㦃õ(€‰€€㨃õ(‰€ã4i¥‘€‰€€ãЫÈv‰€€ãC°×>‰‚ÿSbVec3d, SbVec3f, SbMatrix, SbMatrixd, SbRotationd97EF1A &­˜'^FFF:SbSphere0 ÝEFF% €€ˆˆ€‚ÿSbSphere*FpF# €€€‚ÿNAMES-FFÃF& €Z€”‘€€‚ÿSbSphere - class for representing a sphere3pFöF# € €€‚ÿINHERITS FROM5 ÃF+G) "€€”‘€€€‚ÿSbSphere2 öF]G& €€€€ ‚ÿSYNOPSISe>+GÂG' €|€”‘€€‚‚ÿ#include Methods from class SbSphere:=±]GÿIŒ æ€c€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰‚ƒ‚㨃õ(‰ƒ‚ƒ‚ƒã?çî$‰‚㑶p6‰ƒãǬ|6‰ã¨ƒõ(‰‚㑶p6‰ƒãǬ|6‰ã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbSphere()SbSphere(const SbVec3f ¢er,float radius)voidsetValue(const SbVec3f ¢er,float radius)voidsetCenter(const SbVec3f ¢er)voidsetRadius(float radius)const SbVec3f &getCenter() constfloatgetRadius() constvoidcircumscribe(const SbBox3f &box)SbBoolintersect(const SbLine &l,SbVec3f &intersection) constSbBoolintersect(const SbLine &l,SbVec3f &enter,SbVec3f &exit) const4ÂG3J& €€‚A€‚ÿDESCRIPTIONÐÿI3K0 .€¡€”‘€‚A€€€‚ÿRepresents a sphere in 3D. This is a lightweight datatype that is used for arguments or return values in the Open Inventor toolkit. See SoSphere for a database sphere (used for rendering, picking, etc.).0 3JcK& €€‚A€‚ÿMETHODSt?3K×K5 :€~€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰‚ÿSbSphere()SbSphere(const SbVec3f ¢er,float radius)9cKL) "€ €”‘€‚A€‚ÿConstructors.j7×KzL3 6€n€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidsetValue(const SbVec3f ¢er,float radius)I LÃL) "€@€”‘€‚A€‚ÿChange the center and radius.{GzL>M4 8€Ž€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒ‚ÿvoidsetCenter(const SbVec3f ¢er)voidsetRadius(float radius)J!ÃLˆM) "€B€”‘€‚A€‚ÿSet just the center or radius.r>>MúM4 8€|€T”A‚S~‚A€㨃õ(‰ƒ‚ƒ‚ÿconst SbVec3f &getCenter() constfloatgetRadius() constI ˆMCN) "€@€”‘€‚A€‚ÿReturn the center and radius.\*úMŸN2 4€T€T”A‚S~‚A€ƒã?çî$‰‚ÿvoidcircumscribe(const SbBox3f &box)S*CNòN) "€T€”‘€‚A€‚ÿReturn a sphere containing a given box.ò–ŸN €\ †€-€T”A‚S~‚A㑶p6€‰ƒãǬ|6‰ã¨ƒõ(‰‚㑶p6‰ƒãǬ|6‰ã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbBoolintersect(const SbLine &l,SbVec3f &intersection) constSbBoolintersect(const SbLine &l,SbVec3f &enter,SbVec3f &exit) constòN €ÝEgòNœ€) "€Î€”‘€‚A€‚ÿIntersect line and sphere, returning TRUE if there is an intersection. The line is treated as a ray.1 €Í€& €€‚A€‚ÿSEE ALSOm&œ€:G ^€L€”‘€‚A㨃õ(€‰€ãǬ|6€‰€ãñd뀉‚ÿSbVec3f, SbLine, SoSphereGÍ€1øƒ&<'_¿!ÄSbSpherePlaneProjector>:¿% €2€ˆˆ€‚ÿSbSpherePlaneProjector*é# €€€‚ÿNAMEX2¿A‚& €d€”‘€€‚ÿSbSpherePlaneProjector - sphere-plane projector3ét‚# € €€‚ÿINHERITS FROM°cA‚$ƒM j€Æ€”‘€ãuLœM€‰€ãøaK´€‰€ãwƒq+€‰€€€‚ÿSbProjector > SbSphereProjector > SbSphereSectionProjector > SbSpherePlaneProjector2 t‚Vƒ& €€€€ ‚ÿSYNOPSISŒe$ƒâƒ' €Ê€”‘€€‚‚ÿ#include Methods from class SbSpherePlaneProjector: ÆVƒî„F Z€€T”A‚S~‚A€ƒã‘¶p6‰‚ƒãœ8ɉ㑶p6‰‚ƒ‚ÿSbSpherePlaneProjector(float edgeTol = .9,SbBool orientToEye = TRUE)SbSpherePlaneProjector(const SbSphere &sph,float edgeTol = .9,SbBool orientToEye = TRUE)~SbSpherePlaneProjector()`1âƒN…/ .€b€”‘€‚A€ãwƒq+‰‚ÿMethods from class SbSphereSectionProjector:ÿ¾î„M†A P€}€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒã¨ƒõ(‰‚ÿvoidsetTolerance(float edgeTol)floatgetTolerance() constvoidsetRadialFactor(float radialFactor = 0.0)floatgetRadialFactor() constSbBoolisWithinTolerance(const SbVec3f &point)Y*N…¦†/ .€T€”‘€‚A€ãøaK´‰‚ÿMethods from class SbSphereProjector:6£M†܈“ ô€G€T”A‚S~‚A㨃õ(€‰ƒã}ƒõ(‰ã ‚û‰‚ã ‚û‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒãœ8ɉ‚ãœ8ɉƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒã¨ƒõ(‰‚ÿSbVec3fprojectAndGetRotation(const SbVec2f &point,SbRotation &rot)virtual SbRotationgetRotation(const SbVec3f &point1,const SbVec3f &point2)voidsetSphere(const SbSphere &sph)const SbSphere &getSphere() constvoidsetOrientToEye(SbBool orientToEye)SbBoolisOrientToEye() constvoidsetFront(SbBool isFront)SbBoolisFront() constSbBoolisPointInFront(const SbVec3f &point) constS$¦†/‰/ .€H€”‘€‚A€ãuLœM‰‚ÿMethods from class SbProjector:~܈­Ša €;€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ƒãª®§O‰‚㪮§O‰ƒ‚ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ãuLœM‰ƒ‚ÿvirtual SbVec3fproject(const SbVec2f &point)virtual voidsetViewVolume(const SbViewVolume &vol)const SbViewVolume &getViewVolume() constvirtual voidsetWorkingSpace(const SbMatrix &space)const SbMatrix &getWorkingSpace() constvirtual SbProjector *copy() const4/‰áŠ& €€‚A€‚ÿDESCRIPTION«~­ŠŒŒ- (€ý€”‘€‚A€€‚ÿSbSpherePlaneProjector projects a window space point (usually based on the mouse location) onto a surface defined by a sphere and plane cutting through the sphere. Two projected points can produce a rotation about the sphere's center. When the mouse position projects onto the plane, the rotations will be as if the plane is being dragged, causing the sphere to roll beneath it.Õ«áŠa* "€W€”‘€‚A€‚ÿIncremental changes (delta rotation) can be computed during interactive sessions. Sphere projectors are typically used to write interactive 3D manipulators and viewers.0 ŒŒ‘& €€‚A€‚ÿMETHODSï«a€ŽD V€W€T”A‚S~‚A€ƒã‘¶p6‰‚ƒãœ8ɉ㑶p6‰‚ÿSbSpherePlaneProjector(float edgeTol = .9,SbBool orientToEye = TRUE)SbSpherePlaneProjector(const SbSphere &sph,float edgeTol = .9,SbBool orientToEye = TRUE)=‘ÉÁ6 :€€”‘€‚A€€€€€‚ÿConstructors. The first uses a default sphere centered at the origin with radius 1.0; the sphere is supplied in the second. The position of the plane is specified as a fraction of the sphere radius with the parameter edgeTol. A tolerance value of 1.0 positions the plane down the center of the sphere. A tolerance value of 0.5 €ŽÉÁ:defines the longitudinal plane halfway between the center and the outside edge of the sphere. The default value is .9, so that almost half the sphere is in front of the plane. The orientToEye parameter determines whether the plane is perpendicular to the eye, or perpendicular to the sphere's Z axis. Setting that parameter to TRUE (the default) specifies that the plane be perpendicular to the eye, which is most often the desired behavior.tK€Ž=Â) "€–€”‘€‚A€‚ÿThe default view volume is undefined, and the working space is identity.IÉÁ†Â, (€:€T”A‚S~‚A€ƒ‚ÿ~SbSpherePlaneProjector()7=½Â) "€€”‘€‚A€‚ÿDestructor.1 †ÂîÂ& €€‚A€‚ÿSEE ALSO3»½Â!Äx ¾€w€”‘€‚Aã?rW€‰€ãÑŒç΀‰€ã¬ʧ€‰€ãîmXj€‰€ã‘ôR7€‰€ãC}Î€ãŠo€‰‚ÿSbCylinderProjector, SbCylinderPlaneProjector, SbCylinderSectionProjector, SbCylinderSheetProjector, SbLineProjector, SbPlaneProjector, SbSphereSheetProjectorBîÂcÄ1˜'§(`cÄœÄkSbSphereProjector9!ÄœÄ% €(€ˆˆ€‚ÿSbSphereProjector*cÄÆÄ# €€€‚ÿNAMEM'œÄÅ& €N€”‘€€‚ÿSbSphereProjector - sphere projector3ÆÄFÅ# € €€‚ÿINHERITS FROM\'Å¢Å5 :€N€”‘€ãuLœM€‰€€€‚ÿSbProjector > SbSphereProjector2 FÅÔÅ& €€€€ ‚ÿSYNOPSIS‚[¢ÅVÆ' €¶€”‘€€‚‚ÿ#include Methods from class SbSphereProjector:6£ÔŌȓ ô€G€T”A‚S~‚A㨃õ(€‰ƒã}ƒõ(‰ã ‚û‰‚ã ‚û‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒãœ8ɉ‚ãœ8ɉƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒã¨ƒõ(‰‚ÿSbVec3fprojectAndGetRotation(const SbVec2f &point,SbRotation &rot)virtual SbRotationgetRotation(const SbVec3f &point1,const SbVec3f &point2)voidsetSphere(const SbSphere &sph)const SbSphere &getSphere() constvoidsetOrientToEye(SbBool orientToEye)SbBoolisOrientToEye() constvoidsetFront(SbBool isFront)SbBoolisFront() constSbBoolisPointInFront(const SbVec3f &point) constS$VÆßÈ/ .€H€”‘€‚A€ãuLœM‰‚ÿMethods from class SbProjector:~ŒÈ]Êa €;€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ƒãª®§O‰‚㪮§O‰ƒ‚ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ãuLœM‰ƒ‚ÿvirtual SbVec3fproject(const SbVec2f &point)virtual voidsetViewVolume(const SbViewVolume &vol)const SbViewVolume &getViewVolume() constvirtual voidsetWorkingSpace(const SbMatrix &space)const SbMatrix &getWorkingSpace() constvirtual SbProjector *copy() const4ßÈ‘Ê& €€‚A€‚ÿDESCRIPTIONé¼]ÊzË- (€y€”‘€‚A€€‚ÿSbSphereProjector is an abstract base class for projectors that use a sphere in their projection. Sphere projectors are typically used to write interactive 3D manipulators and viewers.0 ‘ʪË& €€‚A€‚ÿMETHODSŒMzË6Ì? N€š€T”A‚S~‚A㨃õ(€‰ƒã}ƒõ(‰ã ‚û‰‚ÿSbVec3fprojectAndGetRotation(const SbVec2f &point,SbRotation &rot)wAªË­Í6 :€ƒ€”‘€‚A€€€€€‚ÿApply the projector using the given point, returning the point in three dimensions that it projects to. This also returns in rot a rotation on the surface of the sphere from the last projected point to this one. The passed point should be normalized (i.e. lie in the range [0.0,1.0]), with (0,0) at the lower-left.”U6ÌAÎ? N€ª€T”A‚S~‚A€ã ‚û‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvirtual SbRotationgetRotation(const SbVec3f &point1,const SbVec3f &point2)˜o­ÍÙÎ) "€Þ€”‘€‚A€‚ÿGet a rotation given two points on this sphere projector. The rotation will be on the surface of the sphere.‡MAÎ`Ï: D€š€T”A‚S~‚A€ƒãœ8ɉ‚ãœ8ɉƒ‚ÿvoidsetSphere(const SbSphere &sph)const SbSphere &getSphere() constXÙÎáÏ) "€°€”‘€‚A€‚ÿSet and get the sphere on which to project points. The default sphere has radius 1.0.…K`Ïr: D€–€T”áÏr!ÄA‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetOrientToEye(SbBool orientToEye)SbBoolisOrientToEye() const½“áÏ/* "€'€”‘€‚A€‚ÿSet and get whether the projector should always be oriented towards the eye. Set to FALSE if the tolerance should be evaluated in working space.¹qrèH `€â€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒã¨ƒõ(‰‚ÿvoidsetFront(SbBool isFront)SbBoolisFront() constSbBoolisPointInFront(const SbVec3f &point) constÍ£/µ* "€G€”‘€‚A€‚ÿSet and get whether the projector should intersect the half of the sphere that faces the eye. Set to FALSE if the projector should intersect with the rear half.1 èæ& €€‚A€‚ÿSEE ALSO…õµk î€ë€”‘€‚Aã?rW€‰€ãÑŒç΀‰€ã¬ʧ€‰€ãîmXj€‰€ã‘ôR7€‰€ãC}Î€ãô4Ô€‰€ãwƒq+€‰€ãŠo€‰‚ÿSbCylinderProjector, SbCylinderPlaneProjector, SbCylinderSectionProjector, SbCylinderSheetProjector, SbLineProjector, SbPlaneProjector, SbSpherePlaneProjector, SbSphereSectionProjector, SbSphereSheetProjectorIæ´1G<'Š(a´ôMSbSphereSectionProjector@kô% €6€ˆˆ€‚ÿSbSphereSectionProjector*´# €€€‚ÿNAME\6ôz& €l€”‘€€‚ÿSbSphereSectionProjector - sphere-section projector3­# € €€‚ÿINHERITS FROM‡Fz4A R€Œ€”‘€ãuLœM€‰€ãøaK´€‰€€€‚ÿSbProjector > SbSphereProjector > SbSphereSectionProjector2 ­f& €€€€ ‚ÿSYNOPSISi4ö' €Ò€”‘€€‚‚ÿ#include Methods from class SbSphereSectionProjector:äˆfÚ\ †€€T”A‚S~‚A€ƒã‘¶p6‰‚ƒãœ8ɉ㑶p6‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒã¨ƒõ(‰‚ÿSbSphereSectionProjector(float edgeTol = .9,SbBool orientToEye = TRUE)SbSphereSectionProjector(const SbSphere &sph,float edgeTol = .9,SbBool orientToEye = TRUE)~SbSphereSectionProjector()voidsetTolerance(float edgeTol)floatgetTolerance() constvoidsetRadialFactor(float radialFactor = 0.0)floatgetRadialFactor() constSbBoolisWithinTolerance(const SbVec3f &point)Y*ö3 / .€T€”‘€‚A€ãøaK´‰‚ÿMethods from class SbSphereProjector:6£Úi “ ô€G€T”A‚S~‚A㨃õ(€‰ƒã}ƒõ(‰ã ‚û‰‚ã ‚û‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒãœ8ɉ‚ãœ8ɉƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒã¨ƒõ(‰‚ÿSbVec3fprojectAndGetRotation(const SbVec2f &point,SbRotation &rot)virtual SbRotationgetRotation(const SbVec3f &point1,const SbVec3f &point2)voidsetSphere(const SbSphere &sph)const SbSphere &getSphere() constvoidsetOrientToEye(SbBool orientToEye)SbBoolisOrientToEye() constvoidsetFront(SbBool isFront)SbBoolisFront() constSbBoolisPointInFront(const SbVec3f &point) constS$3 ¼ / .€H€”‘€‚A€ãuLœM‰‚ÿMethods from class SbProjector:~i : a €;€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ƒãª®§O‰‚㪮§O‰ƒ‚ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ãuLœM‰ƒ‚ÿvirtual SbVec3fproject(const SbVec2f &point)virtual voidsetViewVolume(const SbViewVolume &vol)const SbViewVolume &getViewVolume() constvirtual voidsetWorkingSpace(const SbMatrix &space)const SbMatrix &getWorkingSpace() constvirtual SbProjector *copy() const4¼ n & €€‚A€‚ÿDESCRIPTION°ƒ: - (€€”‘€‚A€€‚ÿSbSphereSectionProjector projects a window space point (usually based on the mouse location) onto the section of a sphere that has been sliced by a plane. Two projected points can produce a rotation about the sphere's center. The tolerance slice can be specified as a fraction of the radius of the sphere. The projection point will not extend beyond the sliced portion of the sphere.Õ«n  @* "€W€”‘€‚A€‚ÿIncremental changes (delta rotation) can be computed during interactive sessions. Sphere projectors are typically used to write interactive 3D manipulators and viewers. @k0 <@& €€‚A€‚ÿMETHODSó¯ @/AD V€_€T”A‚S~‚A€ƒã‘¶p6‰‚ƒãœ8ɉ㑶p6‰‚ÿSbSphereSectionProjector(float edgeTol = .9,SbBool orientToEye = TRUE)SbSphereSectionProjector(const SbSphere &sph,float edgeTol = .9,SbBool orientToEye = TRUE)d.<@“D6 :€]€”‘€‚A€€€€€‚ÿConstructors. The first uses a default sphere centered at the origin with radius 1.0; the sphere is supplied in the second. The position of the plane which slices the sphere into a section is specified as a fraction of the sphere radius with the parameter edgeTol. A tolerance value of 1.0 positions the plane down the center of the sphere. A tolerance value of 0.5 defines the longitudinal plane halfway between the center and the outside edge of the sphere. The default value is .9, so that almost half the sphere is in front of the plane. The orientToEye parameter determines whether the plane is perpendicular to the eye, or perpendicular to the sphere's Z axis. Setting that parameter to TRUE (the default) specifies that the plane be perpendicular to the eye, which is most often the desired behavior.tK/AE) "€–€”‘€‚A€‚ÿThe default view volume is undefined, and the working space is identity.K“DRE, (€>€T”A‚S~‚A€ƒ‚ÿ~SbSphereSectionProjector()7E‰E) "€€”‘€‚A€‚ÿDestructor.l>REõE. ,€|€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetTolerance(float edgeTol)floatgetTolerance() const׉EöF* "€¯€”‘€‚A€‚ÿSet and get the edge tolerance as a fraction of the radius of the sphere. If this is 1.0, the projector is a hemisphere. If this is .1, the projector is a slice of the sphere with radius .1*radius. Default is .9.}OõEsG. ,€ž€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetRadialFactor(float radialFactor = 0.0)floatgetRadialFactor() const#íöF–J6 :€Û€”‘€‚A€€€€€‚ÿSet and get the radial rotation factor. When the mouse is dragged off the edge of the sphere, the mouse motion can be classified as either tangential (moving in a circle around the sphere) or radial (moving toward or away from the center). The tangential motion will always map to a rotation around the center, (like the hands of a clock). The radial motion, by default, has no effect. But if you set the radialFactor to be > 0.0, this motion will make the sphere rotate as if the mouse is pulling the top of the sphere out toward the mouse. If radialFactor = 1.0, then pulling has a `normal' feel (that is, the mouse motion causes the same amount of rotation as if you had rotated by hitting the actual surface of the sphere). Default is 0.0m5sGK8 @€j€T”A‚S~‚A㑶p6€‰ƒã¨ƒõ(‰‚ÿSbBoolisWithinTolerance(const SbVec3f &point)yP–J|K) "€ €”‘€‚A€‚ÿFind whether this point on the sphere or tolerance plane is within tolerance.1 K­K& €€‚A€‚ÿSEE ALSO[×|KM„ Ö€¯€”‘€‚Aã?rW€‰€ã¬ʧ€‰€ãÑŒç΀‰€ãîmXj€‰€ã‘ôR7€‰€ãC}Î€ãô4Ô€‰€ãŠo€‰‚ÿSbCylinderProjector, SbCylinderSectionProjector, SbCylinderPlaneProjector, SbCylinderSheetProjector, SbLineProjector, SbPlaneProjector, SbSpherePlaneProjector, SbSphereSheetProjectorG­KOM1ˆ§(Ð)bOMMÆŒSbSphereSheetProjector>MM% €2€ˆˆ€‚ÿSbSphereSheetProjector*OM·M# €€€‚ÿNAMEX2MN& €d€”‘€€‚ÿSbSphereSheetProjector - sphere-sheet projector3·MBN# € €€‚ÿINHERITS FROM…DNÇNA R€ˆ€”‘€ãuLœM€‰€ãøaK´€‰€€€‚ÿSbProjector > SbSphereProjector > SbSphereSheetProjector2 BNùN& €€€€ ‚ÿSYNOPSISŒeÇN…O' €Ê€”‘€€‚‚ÿ#include Methods from class SbSphereSheetProjector:âžùNs€D V€=€T”A‚S~‚A€ƒã‘¶p6‰‚ƒãœ8ɉ㑶p6‰‚ƒ‚ÿSbSphereSheetProjector(SbBool orientToEye = TRUE)…Os€MSbSphereSheetProjector(const SbSphere &sph,SbBool orientToEye = TRUE)~SbSphereSheetProjector()Y*…OÌ€/ .€T€”‘€‚A€ãøaK´‰‚ÿMethods from class SbSphereProjector:6£s€ƒ“ ô€G€T”A‚S~‚A㨃õ(€‰ƒã}ƒõ(‰ã ‚û‰‚ã ‚û‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒãœ8ɉ‚ãœ8ɉƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒã¨ƒõ(‰‚ÿSbVec3fprojectAndGetRotation(const SbVec2f &point,SbRotation &rot)virtual SbRotationgetRotation(const SbVec3f &point1,const SbVec3f &point2)voidsetSphere(const SbSphere &sph)const SbSphere &getSphere() constvoidsetOrientToEye(SbBool orientToEye)SbBoolisOrientToEye() constvoidsetFront(SbBool isFront)SbBoolisFront() constSbBoolisPointInFront(const SbVec3f &point) constS$Ì€Uƒ/ .€H€”‘€‚A€ãuLœM‰‚ÿMethods from class SbProjector:~ƒÓ„a €;€T”A‚S~‚A€㨃õ(‰ƒã}ƒõ(‰‚ƒãª®§O‰‚㪮§O‰ƒ‚ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ãuLœM‰ƒ‚ÿvirtual SbVec3fproject(const SbVec2f &point)virtual voidsetViewVolume(const SbViewVolume &vol)const SbViewVolume &getViewVolume() constvirtual voidsetWorkingSpace(const SbMatrix &space)const SbMatrix &getWorkingSpace() constvirtual SbProjector *copy() const4Uƒ…& €€‚A€‚ÿDESCRIPTIONã¶Ó„ê†- (€m€”‘€‚A€€‚ÿSbSphereSheetProjector projects a window space point (usually based on the mouse location) onto the surface of a sphere with a hyperbolic sheet draped over it. This allows smooth transitions onto and off of the sphere. Two projected points can produce a rotation about the sphere's center. When the mouse position projects on to the sheet, the rotations will be as if the sheet is being dragged, causing the sphere to roll beneath it.Õ«…¿‡* "€W€”‘€‚A€‚ÿIncremental changes (delta rotation) can be computed during interactive sessions. Sphere projectors are typically used to write interactive 3D manipulators and viewers.0 ê†ï‡& €€‚A€‚ÿMETHODSŃ¿‡´ˆB R€€T”A‚S~‚A€ƒã‘¶p6‰‚ƒãœ8ɉ㑶p6‰‚ÿSbSphereSheetProjector(SbBool orientToEye = TRUE)SbSphereSheetProjector(const SbSphere &sph,SbBool orientToEye = TRUE)ºŠï‡nŠ0 .€€”‘€‚A€€€‚ÿConstructors. The first uses a default sphere centered at the origin with radius 1.0; the sphere is supplied in the second. The orientToEye parameter determines whether the sheet is perpendicular to the eye, or perpendicular to the sphere's Z axis. Setting that parameter to TRUE (the default) specifies that the sheet be perpendicular to the eye, which is most often the desired behavior.tK´ˆâŠ) "€–€”‘€‚A€‚ÿThe default view volume is undefined, and the working space is identity.InŠ+‹, (€:€T”A‚S~‚A€ƒ‚ÿ~SbSphereSheetProjector()7âŠb‹) "€€”‘€‚A€‚ÿDestructor.1 +‹“‹& €€‚A€‚ÿSEE ALSO3»b‹ÆŒx ¾€w€”‘€‚Aã?rW€‰€ãÑŒç΀‰€ã¬ʧ€‰€ãîmXj€‰€ã‘ôR7€‰€ãC}Î€ãô4Ô€‰‚ÿSbCylinderProjector, SbCylinderPlaneProjector, SbCylinderSectionProjector, SbCylinderSheetProjector, SbLineProjector, SbPlaneProjector, SbSpherePlaneProjector9“‹ÿŒ1šŠ(*cÿŒ/3SbString0 ÆŒ/% €€ˆˆ€‚ÿSbString*ÿŒY# €€€‚ÿNAMEU//®& €^€”‘€€‚ÿSbString - class for smart character strings3Yá# € €€‚ÿINHERITS FROM5 ®Ž) "€€”‘€€€‚ÿSbString2 áHŽ& €€€€ ‚ÿSYNOPSISe>Ž­Ž' €|€”‘€€‚‚ÿ#include Methods from class SbString: ¬HŽÆÀa €Y€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒãXíʉ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒ‚ãXíʉƒ‚ƒ‚ãXíʉƒ‚ÿSbString()SbString(const char *str)SbString(const char *str,int start,int end)SbString(const SbString &str)SbString(int digitString)~SbString()uint32_thash()intgetLength() constvoidmakeEmpty(SbBool freeOld = TRUE)cons­ŽÆÀÆŒt char *getString() constSbStringgetSubString(int startChar,int endChar = -1) constvoiddeleteSubString(int startChar,int endChar = -1)SbString &operator =(const char *str)>º­ŽÃ„ Ö€u€T”A‚S~‚AãXíÊ€‰ƒãXíʉ‚ãXíʉƒ‚ãXíʉƒãXíʉ‚ƒ‚ƒãXíʉ‚ƒãXíʉ‚ƒãXíʉãXíʉ‚ƒãXíʉ‚ƒãXíʉ‚ÿSbString &operator =(const SbString &str)SbString &operator +=(const char *str)SbString &operator +=(const SbString &str)intoperator !() constintoperator ==(const char *s,const SbString &str)intoperator ==(const SbString &str,const char *s)intoperator ==(const SbString &str1,const SbString &str2)intoperator !=(const char *s,const SbString &str)intoperator !=(const SbString &str,const char *s){BÆÀÃ9 B€„€T”A‚S~‚A€ƒãXíʉãXíʉ‚ÿintoperator !=(const SbString &str1,const SbString &str2)4óÃ& €€‚A€‚ÿDESCRIPTION{RÃ.Ä) "€¤€”‘€‚A€‚ÿStrings which have many convenience methods to make string manipulation easier.0 ³Ã^Ä& €€‚A€‚ÿMETHODSà¡.Ä>Å? L€C€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒãXíʉ‚ƒ‚ƒ‚ÿSbString()SbString(const char *str)SbString(const char *str,int start,int end)SbString(const SbString &str)SbString(int digitString)~SbString()R^ÄÆ6 :€9€”‘€‚A€€€€€‚ÿConstructors and destructor. Constructors take a character string, the subset of a character string from start to end (inclusive), or an integer to be turned into a string. For example, SbString(1234) creates the string "1234". SbString("Testing",1,3) creates the string "est".>>ÅÎÆ, (€$€T”A‚S~‚A€ƒ‚ÿuint32_thash()U,Æ#Ç) "€X€”‘€‚A€‚ÿReturns a reasonable hash key for string.DÎÆgÇ, (€0€T”A‚S~‚A€ƒ‚ÿintgetLength() constE#ǬÇ) "€8€”‘€‚A€‚ÿReturns length of string.\*gÇÈ2 4€T€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidmakeEmpty(SbBool freeOld = TRUE)—h¬ÇŸÈ/ .€Ð€”‘€‚A€€€‚ÿSets string to be the empty string (""). If freeOld is TRUE (default), any old storage is freed up.M!ÈìÈ, (€B€T”A‚S~‚A€ƒ‚ÿconst char *getString() constT+ŸÈ@É) "€V€”‘€‚A€‚ÿReturns pointer to the character string.tAìÈ´É3 6€‚€T”A‚S~‚AãXíÊ€‰ƒ‚ÿSbStringgetSubString(int startChar,int endChar = -1) constö´@ɪÊB R€i€”‘€‚A€€€€€€€€€‚ÿReturns new string representing sub-string from startChar to endChar, inclusive. If endChar is -1 (the default), the sub-string from startChar until the end is returned.e8´ÉË- *€p€T”A‚S~‚A€ƒ‚ÿvoiddeleteSubString(int startChar,int endChar = -1)ó±ªÊÌB R€c€”‘€‚A€€€€€€€€€‚ÿDeletes the characters from startChar to endChar, inclusive, from the string. If endChar is -1 (the default), all characters from startChar until the end are deleted.šZËœÌ@ P€´€T”A‚S~‚AãXíÊ€‰ƒ‚ãXíʉƒãXíʉ‚ÿSbString &operator =(const char *str)SbString &operator =(const SbString &str)h9ÌÍ/ .€r€”‘€‚A€€€‚ÿAssignment operators for character string, SbString.œ\œÌ Í@ P€¸€T”A‚S~‚AãXíÊ€‰ƒ‚ãXíʉƒãXíʉ‚ÿSbString &operator +=(const char *str)SbString &operator +=(const SbString &str)f7ÍÎ/ .€n€”‘€‚A€€€‚ÿConcatenation operators "+=" for string, SbString.E ÍKÎ, (€2€T”A‚S~‚A€ƒ‚ÿintoperator !() constg>βÎ) "€|€”‘€‚A€‚ÿUnary "not" operator; returns TRUE if string is empty ("").ú®KάÏL f€]€T”A‚S~‚A€ƒãXíʉ‚ƒãXíʉ‚ƒãXíʉãXíʉ‚ÿintoperator ==(const char *s,const SbString &str)intoperator ==(const SbString &str,const char *s)intoperator ==(const SbString &str1,const SbString &str2)ŠO²ÎB; F€ž€”‘€‚A€€€€€€€‚ÿEquality operator for S¬ÏBÆŒbString/char* and SbString/SbString comparison.ú®¬Ï<L f€]€T”A‚S~‚A€ƒãXíʉ‚ƒãXíʉ‚ƒãXíʉãXíʉ‚ÿintoperator !=(const char *s,const SbString &str)intoperator !=(const SbString &str,const char *s)intoperator !=(const SbString &str1,const SbString &str2)ŒQBÈ; F€¢€”‘€‚A€€€€€€€‚ÿInequality operator for SbString/char* and SbString/SbString comparison.1 <ù& €€‚A€‚ÿSEE ALSO: È3/ .€€”‘€‚Aãúß~6€‰‚ÿSbName7ùj1œ$Ð)ªdj˜ ‡SbTime. 3˜% €€ˆˆ€‚ÿSbTime*jÂ# €€€‚ÿNAMET.˜& €\€”‘€€‚ÿSbTime - class for representation of a time3ÂI# € €€‚ÿINHERITS FROM3 |) "€€”‘€€€‚ÿSbTime2 I®& €€€€ ‚ÿSYNOPSISa:|' €t€”‘€€‚‚ÿ#include Methods from class SbTime:À®-^ Š€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ã4a†6‰ƒ‚ƒ‚ã4a†6‰ƒ‚ã4a†6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbTime()SbTime(double sec)SbTime(int32_t sec,long usec)SbTime(const struct timeval *tv)static SbTimegetTimeOfDay()voidsetToTimeOfDay()static SbTimezero()static SbTimemax()voidsetValue(double sec)voidsetValue(int32_t sec,long usec)voidsetValue(const struct timeval *tv)voidsetMsecValue(unsigned long msec)doublegetValue() constvoidgetValue(int32_t &sec,long &usec) constvoidgetValue(struct timeval *tv) constJ¯w› _€T”A‚S~‚A€ƒ‚ãXíʉƒ‚ãXíʉƒ‚ã4a†6‰ƒã4a†6‰ã4a†6‰‚ã4a†6‰ƒã4a†6‰ã4a†6‰‚ã4a†6‰ƒã4a†6‰‚ã4a†6‰ƒã4a†6‰‚ã4a†6‰ƒ‚ã4a†6‰ƒã4a†6‰‚ÿunsigned longgetMsecValue() constSbStringformat(const char *fmt = "%S.%i") constSbStringformatDate(const char *fmt = "%A,%D %r") constSbTimeoperator +(const SbTime &t0,const SbTime &t1)SbTimeoperator -(const SbTime &t0,const SbTime &t1)SbTime &operator +=(const SbTime &tm)SbTime &operator -=(const SbTime &tm)SbTimeoperator -() constSbTimeoperator *(double s,const SbTime &tm)„-ˆ  è€ €T”A‚S~‚Aã4a†6€‰ƒã4a†6‰‚ã4a†6‰ƒã4a†6‰‚ã4a†6‰ƒ‚ã4a†6‰ƒ‚ƒã4a†6‰‚ã4a†6‰ƒã4a†6‰‚ƒã4a†6‰‚ƒã4a†6‰‚㑶p6‰ƒã4a†6‰‚ÿSbTimeoperator *(const SbTime &tm,double s)SbTimeoperator /(const SbTime &tm,double s)SbTime &operator *=(double s)SbTime &operator /=(double s)doubleoperator /(const SbTime &tm) constSbTimeoperator %(const SbTime &tm) constintoperator ==(const SbTime &tm) constintoperator !=(const SbTime &tm) constSbBooloperator <(const SbTime &tm) constãŽwk U x€€T”A‚S~‚A㑶p6€‰ƒã4a†6‰‚㑶p6‰ƒã4a†6‰‚㑶p6‰ƒã4a†6‰‚ÿSbBooloperator >(const SbTime &tm) constSbBooloperator <=(const SbTime &tm) constSbBooloperator >=(const SbTime &tm) const4ˆ Ÿ & €€‚A€‚ÿDESCRIPTIONç«k † < F€W€”‘€‚A€€€€€€€‚ÿThis class represents and performs operations on time. Operations may be done in seconds, seconds and microseconds, or using a struct timeval (defined in time.h).0 Ÿ ¶ & €€‚A€‚ÿMETHODS•b† K 3 6€Ä€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿSbTime()SbTime(double sec)SbTime(int32_t sec,long usec)SbTime(const struct timeval *tv)T ¶ ŸH ^€€”‘€‚A€€€€€€€€€€€‚ÿConstructors taking seconds, seconds and microseconds, or a struct timeval. NOTE that an integer parameter will not automatically cast to a double to invoke the constructor taking seconds; that is, SbTime(1) will result in a compilation error. SbTime(1.0) must be used instead. This is to avoid errors in upgrading from an earlier release, in which SbTime(1) had different semantics. In future releases, this distinction will be eliminated, and the effect of SbTime(1.0) and that of SbTime(1) will be identical.S!K  @2 4€B€T”A‚S~‚A€ã4a†6‰ƒ‚ÿstatic SbTimegetTimeOfDay()Ÿ @3]4Ÿi@) "€h€”‘€‚A€‚ÿGet the current time (seconds since Jan 1, 1970).D @­@, (€0€T”A‚S~‚A€ƒ‚ÿvoidsetToTimeOfDay()`7i@ A) "€n€”‘€‚A€‚ÿSet to the current time (seconds since Jan 1, 1970).K­@XA2 4€2€T”A‚S~‚A€ã4a†6‰ƒ‚ÿstatic SbTimezero()< A”A) "€&€”‘€‚A€‚ÿGet a zero time.JXAÞA2 4€0€T”A‚S~‚A€ã4a†6‰ƒ‚ÿstatic SbTimemax()P'”A.B) "€N€”‘€‚A€‚ÿGet a time far, far into the future.HÞAvB, (€8€T”A‚S~‚A€ƒ‚ÿvoidsetValue(double sec)P'.BÆB) "€N€”‘€‚A€‚ÿSet time from a double (in seconds).U(vBC- *€P€T”A‚S~‚A€ƒ‚ÿvoidsetValue(int32_t sec,long usec)Q(ÆBlC) "€P€”‘€‚A€‚ÿSet time from seconds + microseconds.V*CÂC, (€T€T”A‚S~‚A€ƒ‚ÿvoidsetValue(const struct timeval *tv)K"lC D) "€D€”‘€‚A€‚ÿSet time from a struct timeval.T(ÂCaD, (€P€T”A‚S~‚A€ƒ‚ÿvoidsetMsecValue(unsigned long msec)G D¨D) "€<€”‘€‚A€‚ÿSet time from milliseconds.FaDîD, (€4€T”A‚S~‚A€ƒ‚ÿdoublegetValue() constL#¨D:E) "€F€”‘€‚A€‚ÿGet time in seconds as a double.]0îD—E- *€`€T”A‚S~‚A€ƒ‚ÿvoidgetValue(int32_t &sec,long &usec) constQ(:EèE) "€P€”‘€‚A€‚ÿGet time in seconds and microseconds.V*—E>F, (€T€T”A‚S~‚A€ƒ‚ÿvoidgetValue(struct timeval *tv) constI èE‡F) "€@€”‘€‚A€‚ÿGet time in a struct timeval.Q%>FØF, (€J€T”A‚S~‚A€ƒ‚ÿunsigned longgetMsecValue() constN%‡F&G) "€J€”‘€‚A€‚ÿGet time in milliseconds (for Xt).g5ØFG2 4€j€T”A‚S~‚AãXíÊ€‰ƒ‚ÿSbStringformat(const char *fmt = "%S.%i") constÆ&GI< F€€”‘€‚A€€€€€€€‚ÿConvert to a string. The default format is seconds with 3 digits of fraction precision. fmt is a character string that consists of field descriptors and text characters, in a manner analogous to printf(). Each field descriptor consists of a % character followed by another character which specifies the replacement for the field descriptor. All other characters are copied from fmt into the result. The following field descriptors are supported:ìªG{KB R€U€T”!:‚!€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿ%the `%' characterDtotal number of daysHtotal number of hoursMtotal number of minutesStotal number of secondsItotal number of millisecondsUtotal number of microsecondshhours remaining after the days (00-23)mminutes remaining after the hours (00-59)sseconds remaining after the minutes (00-59)imilliseconds remaining after the seconds (000-999)umicroseconds remaining after the seconds (000000-999999)‹[IM0 .€·€”‘€‚!€€€‚ÿThe uppercase descriptors are formatted with a leading `-' for negative times; the lowercase descriptors are formatted fixed width, with leading zeros. For example, a reasonable format string might be "elapsed time: %M minutes, %s seconds". The default value of fmt, "%S.%i", formats the time as seconds with 3 digits of fractional precision.p={KvM3 6€z€T”A‚S~‚AãXíÊ€‰ƒ‚ÿSbStringformatDate(const char *fmt = "%A,%D %r") constÔMzN0 .€©€”‘€‚A€€€‚ÿConvert to a date string, interpreting the time as seconds since Jan 1, 1970. The default format gives "Tuesday, 01/26/93 11:23:41 AM". See the strftime() reference page for explanation of the format string.ÎzvMHOT x€ô€T”A‚S~‚Aã4a†6€‰ƒã4a†6‰ã4a†6‰‚ã4a†6‰ƒã4a†6‰ã4a†6‰‚ÿSbTimeoperator +(const SbTime &t0,const SbTime &t1)SbTimeoperator -(const SbTime &t0,const SbTime &t1)R)zNšO) "€R€”‘€‚A€‚ÿAddition and subtraction of two times.žXHOD€F \€°€T”A‚S~‚Aã4a†6€‰ƒã4a†6‰‚ã4a†6‰ƒã4a†6‰‚ÿSbTime &operator +=(const SšOD€3bTime &tm)SbTime &operator -=(const SbTime &tm)tKšO¸€) "€–€”‘€‚A€‚ÿAddition and subtraction of two times which modifies the time structure.PD€2 4€<€T”A‚S~‚Aã4a†6€‰ƒ‚ÿSbTimeoperator -() const;¸€C) "€$€”‘€‚A€‚ÿUnary negation.ð˜3‚X ~€1€T”A‚S~‚Aã4a†6€‰ƒã4a†6‰‚ã4a†6‰ƒã4a†6‰‚ã4a†6‰ƒã4a†6‰‚ÿSbTimeoperator *(double s,const SbTime &tm)SbTimeoperator *(const SbTime &tm,double s)SbTimeoperator /(const SbTime &tm,double s)R)C…‚) "€R€”‘€‚A€‚ÿMultiplication and division by scalar.~D3‚ƒ: D€ˆ€T”A‚S~‚Aã4a†6€‰ƒ‚ã4a†6‰ƒ‚ÿSbTime &operator *=(double s)SbTime &operator /=(double s)^5…‚aƒ) "€j€”‘€‚A€‚ÿDestructive multiplication and division by scalar.`.ƒÁƒ2 4€\€T”A‚S~‚A€ƒã4a†6‰‚ÿdoubleoperator /(const SbTime &tm) constEaƒ„) "€8€”‘€‚A€‚ÿDivision by another time.h0Áƒn„8 @€`€T”A‚S~‚Aã4a†6€‰ƒã4a†6‰‚ÿSbTimeoperator %(const SbTime &tm) constmD„Û„) "€ˆ€”‘€‚A€‚ÿModulus for two times (remainder when time1 is divided by time2).Vn„k…: D€¬€T”A‚S~‚A€ƒã4a†6‰‚ƒã4a†6‰‚ÿintoperator ==(const SbTime &tm) constintoperator !=(const SbTime &tm) const?Û„ª…) "€,€”‘€‚A€‚ÿEquality operators.¼k…Ɇc ”€y€T”A‚S~‚A㑶p6€‰ƒã4a†6‰‚㑶p6‰ƒã4a†6‰‚㑶p6‰ƒã4a†6‰‚㑶p6‰ƒã4a†6‰‚ÿSbBooloperator <(const SbTime &tm) constSbBooloperator >(const SbTime &tm) constSbBooloperator <=(const SbTime &tm) constSbBooloperator >=(const SbTime &tm) constAª… ‡) "€0€”‘€‚A€‚ÿRelational operators.8ɆB‡1Ϊy,eB‡q‡SbVec2f/ ‡q‡% €€ˆˆ€‚ÿSbVec2f*B‡›‡# €€€‚ÿNAMEBq‡݇& €8€”‘€€‚ÿSbVec2f - 2D vector class3›‡ˆ# € €€‚ÿINHERITS FROM4 ݇Dˆ) "€€”‘€€€‚ÿSbVec2f2 ˆvˆ& €€€€ ‚ÿSYNOPSISd=DˆÚˆ' €z€”‘€€‚‚ÿ#include Methods from class SbVec2f: ˜vˆåŠs ´€1€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒã}ƒõ(‰‚㑶p6‰ƒã}ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ã}ƒõ(‰ƒ‚ã}ƒõ(‰ƒ‚ã}ƒõ(‰ƒã{ƒõ(‰‚ÿSbVec2f()SbVec2f(const float v[2])SbVec2f(float x,float y)floatdot(const SbVec2f &v) constSbBoolequals(const SbVec2f v,float tolerance) constconst float *getValue() constvoidgetValue(float &x,float &y) constfloatlength() constvoidnegate()floatnormalize()SbVec2f &setValue(const float v[2])SbVec2f &setValue(float x,float y)SbVec2f &setValue(const SbVec2d &vec2d)‹Úˆ T”A‚S~‚A€ƒ‚ƒ‚ã}ƒõ(‰ƒ‚ã}ƒõ(‰ƒ‚ã}ƒõ(‰ƒã}ƒõ(‰‚ã}ƒõ(‰ƒã}ƒõ(‰‚ã}ƒõ(‰ƒ‚ã}ƒõ(‰ƒã}ƒõ(‰‚ã}ƒõ(‰ƒã}ƒõ(‰‚ã}ƒõ(‰ƒã}ƒõ(‰‚ÿfloat &operator [](int i)const float &operator [](int i)SbVec2f &operator *=(float d)SbVec2f &operator /=(float d)SbVec2f &operator +=(const SbVec2f &u)SbVec2f &operator -=(const SbVec2f &u)SbVec2foperator -() constSbVec2foperator *(const SbVec2f &v,float d)SbVec2foperator *(float d,const SbVec2f &v)SbVec2foperator /(const SbVec2f &v,float d)gôåŠgŽs ´€é€T”A‚S~‚Aã}ƒõ(€‰ƒã}ƒõ(‰ã}ƒõ(‰‚ã}ƒõ(‰ƒã}ƒõ(‰ã}ƒõ(‰‚ƒã}ƒõ(‰ã}ƒõ(‰‚ƒã}ƒõ(‰ã}ƒõ(‰‚ÿSbVec2foperator +(const SbVec2f &v1,const SbVec2f &v2)SbVec2foperator -(const SbVec2f &v1,const SbVec2f &v2)intoperator ==(const SbVec2f &v1,const SbVec2f &v2)intoperator !=(const SbVec2f &v1,const SbVec2f &v2)4›Ž& €€‚A€‚ÿDESCRIPTION®„gŽI* "€ €”‘€‚A€‚ÿ2D vector class used to store 2D vectors and points. This class is used throughout Open Inventor for arguments and return values.0 ›Žy& €€‚A€‚ÿMETHODS9 I², (€€T”A‚S~‚A€ƒ‚ÿSbVec2f()@y À) "€.€”‘€‚A€‚ÿDefault constructor.² À ‡g8²sÀ/ .€p€T”A‚S~‚A€ƒ‚ƒ‚ÿSbVec2f(const float v[2])SbVec2f(float x,float y)P' ÀÃÀ) "€N€”‘€‚A€‚ÿConstructor given vector components.X&sÀÁ2 4€L€T”A‚S~‚A€ƒã}ƒõ(‰‚ÿfloatdot(const SbVec2f &v) conste<ÃÀ€Á) "€x€”‘€‚A€‚ÿReturns dot (inner) product of vector and another vector.u<ÁõÁ9 B€x€T”A‚S~‚A㑶p6€‰ƒã}ƒõ(‰‚ÿSbBoolequals(const SbVec2f v,float tolerance) const¢y€Á—Â) "€ò€”‘€‚A€‚ÿEquality comparison within given tolerance - the square of the length of the maximum distance between the two vectors.xIõÁÃ/ .€’€T”A‚S~‚A€ƒ‚ƒ‚ÿconst float *getValue() constvoidgetValue(float &x,float &y) constF—ÂUÃ) "€:€”‘€‚A€‚ÿReturns vector components.CØÃ, (€.€T”A‚S~‚A€ƒ‚ÿfloatlength() constO&UÃçÃ) "€L€”‘€‚A€‚ÿReturns geometric length of vector.<˜Ã#Ä, (€ €T”A‚S~‚A€ƒ‚ÿvoidnegate()V-çÃyÄ) "€Z€”‘€‚A€‚ÿNegates each component of vector in place.@#ĹÄ, (€(€T”A‚S~‚A€ƒ‚ÿfloatnormalize()M$yÄÅ) "€H€”‘€‚A€‚ÿChanges vector to be unit length.‹P¹Ä‘Å; F€ €T”A‚S~‚Aã}ƒõ(€‰ƒ‚ã}ƒõ(‰ƒ‚ÿSbVec2f &setValue(const float v[2])SbVec2f &setValue(float x,float y)GÅØÅ) "€<€”‘€‚A€‚ÿSets the vector components.g/‘Å?Æ8 @€^€T”A‚S~‚Aã}ƒõ(€‰ƒã{ƒõ(‰‚ÿSbVec2f &setValue(const SbVec2d &vec2d)a8ØÅ Æ) "€p€”‘€‚A€‚ÿSets value of vector from a double precision vector. †\?Æ&È* "€¹€”‘€‚A€‚ÿIf the values stored in the double precision argument(s) are too large to be stored in single precision variables, some loss of data will occur during the data transfer. The loss of data is defined by the standard C type conversion from double to float. It is the application's responsibility to handle this potential loss of data appropriately.Že Æ´È) "€Ê€”‘€‚A€‚ÿNOTE: Open Inventor fields still store only single precision values, not double precision values. l>&È É. ,€|€T”A‚S~‚A€ƒ‚ƒ‚ÿfloat &operator [](int i)const float &operator [](int i)Q(´ÈqÉ) "€P€”‘€‚A€‚ÿAccesses indexed component of vector.~D ÉïÉ: D€ˆ€T”A‚S~‚Aã}ƒõ(€‰ƒ‚ã}ƒõ(‰ƒ‚ÿSbVec2f &operator *=(float d)SbVec2f &operator /=(float d)h?qÉWÊ) "€~€”‘€‚A€‚ÿComponent-wise scalar multiplication and division operators. ZïÉ÷ÊF \€´€T”A‚S~‚Aã}ƒõ(€‰ƒã}ƒõ(‰‚ã}ƒõ(‰ƒã}ƒõ(‰‚ÿSbVec2f &operator +=(const SbVec2f &u)SbVec2f &operator -=(const SbVec2f &u)e<WÊ\Ë) "€x€”‘€‚A€‚ÿComponent-wise vector addition and subtraction operators.Q÷Ê­Ë2 4€>€T”A‚S~‚Aã}ƒõ(€‰ƒ‚ÿSbVec2foperator -() consta8\ËÌ) "€p€”‘€‚A€‚ÿNondestructive unary negation - returns a new vector.ð˜­ËþÌX ~€1€T”A‚S~‚Aã}ƒõ(€‰ƒã}ƒõ(‰‚ã}ƒõ(‰ƒã}ƒõ(‰‚ã}ƒõ(‰ƒã}ƒõ(‰‚ÿSbVec2foperator *(const SbVec2f &v,float d)SbVec2foperator *(float d,const SbVec2f &v)SbVec2foperator /(const SbVec2f &v,float d)oFÌmÍ) "€Œ€”‘€‚A€‚ÿComponent-wise binary scalar multiplication and division operators.Õ€þÌBÎU x€€T”A‚S~‚Aã}ƒõ(€‰ƒã}ƒõ(‰ã}ƒõ(‰‚ã}ƒõ(‰ƒã}ƒõ(‰ã}ƒõ(‰‚ÿSbVec2foperator +(const SbVec2f &v1,const SbVec2f &v2)SbVec2foperator -(const SbVec2f &v1,const SbVec2f &v2)lCmÍ®Î) "€†€”‘€‚A€‚ÿComponent-wise binary vector addition and subtraction operators.¾vBÎlÏH `€ì€T”A‚S~‚A€ƒã}ƒõ(‰ã}ƒõ(‰‚ƒã}ƒõ(‰ã}ƒõ(‰‚ÿintoperator ==(const SbVec2f &v1,const SbVec2f &v2)intoperator !=(const SbVec2f &v1,const SbVec2f &v2)J!®Î¶Ï) "€B€”‘€‚A€‚ÿEquality comparison operators.1 lÏ & €€‚A€‚ÿSEE ALSO¶Ï  ‡y¶Ï‰ â€ò€”‘€‚Aã{ƒõ(€‰€€㦃õ(‰€€㨃õ(‰€ãуõ(€‰€ãÓƒõ(€‰€㊃õ(€‰€㵃õ(€‰€ã ‚û€‰ãC°×>‰‚ÿSbVec2d, SbVec3d, SbVec3f, SbVec4d, SbVec4f, SbVec2s, SbVec3s, SbRotation, SbRotationd8 F1£³+«fFuâFSbVec2s/ u% €€ˆˆ€‚ÿSbVec2s*FŸ# €€€‚ÿNAMEBuá& €8€”‘€€‚ÿSbVec2s - 2D vector class3Ÿ# € €€‚ÿINHERITS FROM4 áH) "€€”‘€€€‚ÿSbVec2s2 z& €€€€ ‚ÿSYNOPSISd=HÞ' €z€”‘€€‚‚ÿ#include Methods from class SbVec2s:¨zôn ª€Q€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒã}ƒõ(‰‚ƒ‚ƒ‚ƒ‚㊃õ(‰ƒ‚㊃õ(‰ƒ‚ƒ‚ƒ‚㊃õ(‰ƒ‚㊃õ(‰ƒ‚㊃õ(‰ƒ‚ÿSbVec2s()SbVec2s(const short v[2])SbVec2s(short x,short y)int32_tdot(const SbVec2f &v) constconst short *getValue() constvoidgetValue(short &x,short &y) constvoidnegate()SbVec2s &setValue(const short v[2])SbVec2s &setValue(short x,short y)short &operator [](int i)const short &operator [](int i)SbVec2s &operator *=(int d)SbVec2s &operator *=(double d)SbVec2s &operator /=(int d)1Þ%¢ €T”A‚S~‚A㊃õ(€‰ƒ‚㊃õ(‰ƒãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰‚㊃õ(‰ƒ‚㊃õ(‰ƒãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰‚ÿSbVec2s &operator /=(double d)SbVec2s &operator +=(const SbVec2s &u)SbVec2s &operator -=(const SbVec2s &u)SbVec2soperator -() constSbVec2soperator *(const SbVec2s &v,int d)SbVec2soperator *(const SbVec2s &v,double d)SbVec2soperator *(int d,const SbVec2s &v)SbVec2soperator *(double d,const SbVec2s &v)SbVec2soperator /(const SbVec2s &v,int d)©'ô΂ Ò€O€T”A‚S~‚A㊃õ(€‰ƒãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰ãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰ãŠƒõ(‰‚ƒãŠƒõ(‰ãŠƒõ(‰‚ƒãŠƒõ(‰ãŠƒõ(‰‚ÿSbVec2soperator /(const SbVec2s &v,double d)SbVec2soperator +(const SbVec2s &v1,const SbVec2s &v2)SbVec2soperator -(const SbVec2s &v1,const SbVec2s &v2)intoperator ==(const SbVec2s &v1,const SbVec2s &v2)intoperator !=(const SbVec2s &v1,const SbVec2s &v2)4% & €€‚A€‚ÿDESCRIPTION¶ŒÎ¸ * "€€”‘€‚A€‚ÿ2D vector class used to store 2D integer vectors and points. This class is used throughout Open Inventor for arguments and return values.0  è & €€‚A€‚ÿMETHODS9 ¸ ! , (€€T”A‚S~‚A€ƒ‚ÿSbVec2s()@è a ) "€.€”‘€‚A€‚ÿDefault constructor.g8! È / .€p€T”A‚S~‚A€ƒ‚ƒ‚ÿSbVec2s(const short v[2])SbVec2s(short x,short y)K"a  ) "€D€”‘€‚A€‚ÿConstructor given 2 components.Z(È m 2 4€P€T”A‚S~‚A€ƒã}ƒõ(‰‚ÿint32_tdot(const SbVec2f &v) conste< Ò ) "€x€”‘€‚A€‚ÿReturns dot (inner) product of vector and another vector.xIm J / .€’€T”A‚S~‚A€ƒ‚ƒ‚ÿconst short *getValue() constvoidgetValue(short &x,short &y) constFÒ  ) "€:€”‘€‚A€‚ÿReturns vector components.<J Ì , (€ €T”A‚S~‚A€ƒ‚ÿvoidnegate()V- " ) "€Z€”‘€‚A€‚ÿNegates each component of vector in place.‹PÌ ­ ; F€ €T”A‚S~‚A㊃õ(€‰ƒ‚㊃õ(‰ƒ‚ÿSbVec2s &setValue(const short v[2])SbVec2s &setValue(short x,short y)C" ð ) "€4€”‘€‚A€‚ÿSets vector components.l>­ \. ,€|€T”A‚S~‚A€ƒ‚ƒ‚ÿshort &operator [](int i)const short &operator [](int i)Q(ð ­) "€P€”‘€‚A€‚ÿAccesses indexed component of vector.Ï„\|K d€ €T”A‚S~‚A㊃õ(€‰ƒ‚㊃õ(‰ƒ‚㊃õ(‰ƒ‚㊃õ(‰ƒ‚ÿSbVec2s &operator *=(int d)SbVec2s &operator *=(double d)SbVec2s &operator /=(int d)SbVec2s &operator /=(double d)h?­ @) "€~€”‘€‚A€‚ÿComponent-wise scalar multiplication and division operators.| @ Z|¬@F \€´€T”A‚S~‚A㊃õ(€‰ƒãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰‚ÿSbVec2s &operator +=(const SbVec2s &u)SbVec2s &operator -=(const SbVec2s &u)e< @A) "€x€”‘€‚A€‚ÿComponent-wise vector addition and subtraction operators.Q¬@bA2 4€>€T”A‚S~‚A㊃õ(€‰ƒ‚ÿSbVec2soperator -() consta8AÃA) "€p€”‘€‚A€‚ÿNondestructive unary negation - returns a new vector.°+bAsC… Ø€W€T”A‚S~‚A㊃õ(€‰ƒãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰‚ÿSbVec2soperator *(const SbVec2s &v,int d)SbVec2soperator *(const SbVec2s &v,double d)SbVec2soperator *(int d,const SbVec2s &v)SbVec2soperator *(double d,const SbVec2s &v)SbVec2soperator /(const SbVec2s &v,int d)SbVec2soperator /(const SbVec2s &v,double d)oFÃAâC) "€Œ€”‘€‚A€‚ÿComponent-wise binary scalar multiplication and division operators.Õ€sC·DU x€€T”A‚S~‚A㊃õ(€‰ƒãŠƒõ(‰ãŠƒõ(‰‚㊃õ(‰ƒãŠƒõ(‰ãŠƒõ(‰‚ÿSbVec2soperator +(const SbVec2s &v1,const SbVec2s &v2)SbVec2soperator -(const SbVec2s &v1,const SbVec2s &v2)lCâC#E) "€†€”‘€‚A€‚ÿComponent-wise binary vector addition and subtraction operators.¾v·DáEH `€ì€T”A‚S~‚A€ƒãŠƒõ(‰ãŠƒõ(‰‚ƒãŠƒõ(‰ãŠƒõ(‰‚ÿintoperator ==(const SbVec2s &v1,const SbVec2s &v2)intoperator !=(const SbVec2s &v1,const SbVec2s &v2)J!#E+F) "€B€”‘€‚A€‚ÿEquality comparison operators.1 áE\F& €€‚A€‚ÿSEE ALSO†3+FâFS v€f€”‘€‚A㨃õ(€‰€ãÓƒõ(€‰€ã}ƒõ(€‰€€㵃õ(‰‚ÿSbVec3f, SbVec4f, SbVec2f, SbVec3s8\FG1`«&‚-gGIGÄSbVec3f/ âFIG% €€ˆˆ€‚ÿSbVec3f*GsG# €€€‚ÿNAMEBIGµG& €8€”‘€€‚ÿSbVec3f - 3D vector class3sGèG# € €€‚ÿINHERITS FROM4 µGH) "€€”‘€€€‚ÿSbVec3f2 èGNH& €€€€ ‚ÿSYNOPSISd=H²H' €z€”‘€€‚‚ÿ#include Methods from class SbVec3f:‘NHÁJ~ Ê€#€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒã÷Ä'‰ã÷Ä'‰ã÷Ä'‰‚㨃õ(‰ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰‚㑶p6‰ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ÿSbVec3f()SbVec3f(const float v[3])SbVec3f(float x,float y,float z)SbVec3f(SbPlane &p0,SbPlane &p1,SbPlane &p2)SbVec3fcross(const SbVec3f &v) constfloatdot(const SbVec3f &v) constSbBoolequals(const SbVec3f v,float tolerance) constSbVec3fgetClosestAxis() constconst float *getValue() constvoidgetValue(float &x,float &y,float &z) constfloatlength() const•²HÜL† Ú€+€T”A‚S~‚A€ƒ‚ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒã¨ƒõ(‰ã¨ƒõ(‰ã¨ƒõ(‰ã¨ƒõ(‰‚㨃õ(‰ƒã¦ƒõ(‰‚ƒ‚ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒ‚ÿvoidnegate()floatnormalize()SbVec3f &setValue(const float v[3])SbVec3f &setValue(float x,float y,float z)SbVec3f &setValue(const SbVec3f &barycentric,const SbVec3f &v0,const SbVec3f &v1,const SbVec3f &v2)SbVec3f &setValue(const SbVec3d &vec3)float &operator [](int i)const float &operator [](int i)SbVec3f &operator *=(float d)SbVec3f &operator /=(float d)1‹ÁJ O¦ €T”A‚S~‚A㨃õ(€‰ƒã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚㨃õ(‰ƒã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbVec3f &operator +=(const SbVec3f &u)SbVec3f &operator -=(const SbVec3f &u)SbVec3foperator -() constSbVec3foperator *(const SbVec3f &v,float d)SbVec3foperator *(float d,const SbVec3f &v)SbVec3foperator /(const SbVec3f &v,float d)SbVec3foperator +(const SbVec3f &v1,const SbVec3f &v2)SbVec3foperator -(const SbVec3f &v1,const SbVec3f &v2)¾vÜLËOH `€ì€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿintoperator ==(const SbVec3f &v1,const SbVec3f &v2)intoperator !=(const SbVec3f &v1,const SbVec3f &v2)4 O €& €€‚A€‚ÿDESCRIPTIONËO €âF®„ËOº€* "€ €”‘€‚A€‚ÿ3D vector class used to store 3D vectors and points. This class is used throughout Open Inventor for arguments and return values.0 €ê€& €€‚A€‚ÿMETHODS9 º€#, (€€T”A‚S~‚A€ƒ‚ÿSbVec3f()@ê€c) "€.€”‘€‚A€‚ÿDefault constructor.qA#Ô0 0€‚€T”A‚S~‚A€ƒ‚ƒ‚ÿSbVec3f(const float v[3])SbVec3f(float x,float y,float z)P'c$‚) "€N€”‘€‚A€‚ÿConstructor given vector components.x8Ôœ‚@ P€p€T”A‚S~‚A€ƒã÷Ä'‰ã÷Ä'‰ã÷Ä'‰‚ÿSbVec3f(SbPlane &p0,SbPlane &p1,SbPlane &p2)G$‚ã‚) "€<€”‘€‚A€‚ÿConstructor given 3 planes.d,œ‚Gƒ8 @€X€T”A‚S~‚A㨃õ(€‰ƒã¨ƒõ(‰‚ÿSbVec3fcross(const SbVec3f &v) constlCコƒ) "€†€”‘€‚A€‚ÿReturns right-handed cross product of vector and another vector.X&Gƒ „2 4€L€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿfloatdot(const SbVec3f &v) conste<³ƒp„) "€x€”‘€‚A€‚ÿReturns dot (inner) product of vector and another vector.u< „å„9 B€x€T”A‚S~‚A㑶p6€‰ƒã¨ƒõ(‰‚ÿSbBoolequals(const SbVec3f v,float tolerance) const¢yp„‡…) "€ò€”‘€‚A€‚ÿEquality comparison within given tolerance - the square of the length of the maximum distance between the two vectors.U#å„Ü…2 4€F€T”A‚S~‚A㨃õ(€‰ƒ‚ÿSbVec3fgetClosestAxis() constX‡…]†) "€°€”‘€‚A€‚ÿReturns principal axis that is closest (based on maximum dot product) to this vector.ƒSÜ…à†0 0€¦€T”A‚S~‚A€ƒ‚ƒ‚ÿconst float *getValue() constvoidgetValue(float &x,float &y,float &z) constF]†&‡) "€:€”‘€‚A€‚ÿReturns vector components.Cà†i‡, (€.€T”A‚S~‚A€ƒ‚ÿfloatlength() constO&&‡¸‡) "€L€”‘€‚A€‚ÿReturns geometric length of vector.<i‡ô‡, (€ €T”A‚S~‚A€ƒ‚ÿvoidnegate()V-¸‡Jˆ) "€Z€”‘€‚A€‚ÿNegates each component of vector in place.@ô‡Šˆ, (€(€T”A‚S~‚A€ƒ‚ÿfloatnormalize()xOJˆ‰) "€ž€”‘€‚A€‚ÿChanges vector to be unit length, returning the length before normalization.•YŠˆ—‰< H€²€T”A‚S~‚A㨃õ(€‰ƒ‚㨃õ(‰ƒ‚ÿSbVec3f &setValue(const float v[3])SbVec3f &setValue(float x,float y,float z)G‰Þ‰) "€<€”‘€‚A€‚ÿSets the vector components.Át—‰ŸŠM j€è€T”A‚S~‚A㨃õ(€‰ƒã¨ƒõ(‰ã¨ƒõ(‰ã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbVec3f &setValue(const SbVec3f &barycentric,const SbVec3f &v0,const SbVec3f &v1,const SbVec3f &v2)lCÞ‰ ‹) "€†€”‘€‚A€‚ÿSets value of vector as the weighted average of 3 other vectors.f.ŸŠq‹8 @€\€T”A‚S~‚A㨃õ(€‰ƒã¦ƒõ(‰‚ÿSbVec3f &setValue(const SbVec3d &vec3)`7 ‹Ñ‹) "€n€”‘€‚A€‚ÿSets value of vector from a double precision vector.l>q‹=Œ. ,€|€T”A‚S~‚A€ƒ‚ƒ‚ÿfloat &operator [](int i)const float &operator [](int i)Q(Ñ‹ŽŒ) "€P€”‘€‚A€‚ÿAccesses indexed component of vector.~D=Œ : D€ˆ€T”A‚S~‚A㨃õ(€‰ƒ‚㨃õ(‰ƒ‚ÿSbVec3f &operator *=(float d)SbVec3f &operator /=(float d)h?ŽŒt) "€~€”‘€‚A€‚ÿComponent-wise scalar multiplication and division operators. Z ŽF \€´€T”A‚S~‚A㨃õ(€‰ƒã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰‚ÿSbVec3f &operator +=(const SbVec3f &u)SbVec3f &operator -=(const SbVec3f &u)e<tyŽ) "€x€”‘€‚A€‚ÿComponent-wise vector addition and subtraction operators.QŽÊŽ2 4€>€T”A‚S~‚A㨃õ(€‰ƒ‚ÿSbVec3foperator -() consta8yŽ+) "€p€”‘€‚A€‚ÿNondestructive unary negation - returns a new vector.ð˜ÊŽ'ÀX ~€1€T”A‚S~‚A㨃õ(€‰ƒã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰‚ÿSbVec3foperator *(const SbVec3f &v,float d)SbVec3foperator *(float d,const SbVec3f &v)SbVec3foperator /(con+'ÀâFst SbVec3f &v,float d)oF+–À) "€Œ€”‘€‚A€‚ÿComponent-wise binary scalar multiplication and division operators.Õ€'ÀkÁU x€€T”A‚S~‚A㨃õ(€‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿSbVec3foperator +(const SbVec3f &v1,const SbVec3f &v2)SbVec3foperator -(const SbVec3f &v1,const SbVec3f &v2)lC–À×Á) "€†€”‘€‚A€‚ÿComponent-wise binary vector addition and subtraction operators.¾vkÁ•ÂH `€ì€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿintoperator ==(const SbVec3f &v1,const SbVec3f &v2)intoperator !=(const SbVec3f &v1,const SbVec3f &v2)J!×ÁßÂ) "€B€”‘€‚A€‚ÿEquality comparison operators.1 •ÂÃ& €€‚A€‚ÿSEE ALSO {ßÂÄ î€ö€”‘€‚Aã{ƒõ(€‰€€ã}ƒõ(‰€㦃õ(€‰€ãуõ(€‰€ãÓƒõ(€‰€㊃õ(€‰€㵃õ(€‰€ã ‚û€‰€€ãC°×>‰‚ÿSbVec2d, SbVec2f, SbVec3d, SbVec4d, SbVec4f, SbVec2s, SbVec3s, SbRotation, SbRotationd8ÃRÄ1åöƒ,C¬hRÄÄ, SbVec3s/ ÄÄ% €€ˆˆ€‚ÿSbVec3s*RÄ«Ä# €€€‚ÿNAMEBÄíÄ& €8€”‘€€‚ÿSbVec3s - 3D vector class3«Ä Å# € €€‚ÿINHERITS FROM4 íÄTÅ) "€€”‘€€€‚ÿSbVec3s2 ņÅ& €€€€ ‚ÿSYNOPSISd=TÅêÅ' €z€”‘€€‚‚ÿ#include Methods from class SbVec3s:¥†ÅøÇi  €K€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒã¨ƒõ(‰‚ƒ‚ƒ‚ƒ‚㵃õ(‰ƒ‚㵃õ(‰ƒ‚ƒ‚ƒ‚㵃õ(‰ƒ‚㵃õ(‰ƒ‚ÿSbVec3s()SbVec3s(const short v[3])SbVec3s(short x,short y,short z)int32_tdot(const SbVec3f &v) constconst short *getValue() constvoidgetValue(short &x,short &y,short &z) constvoidnegate()SbVec3s &setValue(const short v[3])SbVec3s &setValue(short x,short y,short z)short &operator [](int i)const short &operator [](int i)SbVec3s &operator *=(int d)SbVec3s &operator *=(double d)~êÅÊ› ý€T”A‚S~‚A㵃õ(€‰ƒ‚㵃õ(‰ƒ‚㵃õ(‰ƒãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰‚㵃õ(‰ƒ‚㵃õ(‰ƒãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰‚ÿSbVec3s &operator /=(int d)SbVec3s &operator /=(double d)SbVec3s &operator +=(const SbVec3s &u)SbVec3s &operator -=(const SbVec3s &u)SbVec3soperator -() constSbVec3soperator *(const SbVec3s &v,int d)SbVec3soperator *(const SbVec3s &v,double d)SbVec3soperator *(int d,const SbVec3s &v)SbVec3soperator *(double d,const SbVec3s &v)èWøÇùË‘ ð€¯€T”A‚S~‚A㵃õ(€‰ƒãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰ãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰ãµƒõ(‰‚ƒãµƒõ(‰ãµƒõ(‰‚ƒãµƒõ(‰ãµƒõ(‰‚ÿSbVec3soperator /(const SbVec3s &v,int d)SbVec3soperator /(const SbVec3s &v,double d)SbVec3soperator +(const SbVec3s &v1,const SbVec3s &v2)SbVec3soperator -(const SbVec3s &v1,const SbVec3s &v2)intoperator ==(const SbVec3s &v1,const SbVec3s &v2)intoperator !=(const SbVec3s &v1,const SbVec3s &v2)4Ê-Ì& €€‚A€‚ÿDESCRIPTION¶ŒùËãÌ* "€€”‘€‚A€‚ÿ3D vector class used to store 3D integer vectors and points. This class is used throughout Open Inventor for arguments and return values.0 -ÌÍ& €€‚A€‚ÿMETHODS9 ãÌLÍ, (€€T”A‚S~‚A€ƒ‚ÿSbVec3s()@ÍŒÍ) "€.€”‘€‚A€‚ÿDefault constructor.qALÍýÍ0 0€‚€T”A‚S~‚A€ƒ‚ƒ‚ÿSbVec3s(const short v[3])SbVec3s(short x,short y,short z)K"ŒÍHÎ) "€D€”‘€‚A€‚ÿConstructor given 3 components.Z(ýÍ¢Î2 4€P€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿint32_tdot(const SbVec3f &v) conste<HÎÏ) "€x€”‘€‚A€‚ÿReturns dot (inner) product of vector and another vector.ƒS¢ÎŠÏ0 0€¦€T”A‚S~‚A€ƒ‚ƒ‚ÿconst short *getValue() constvoidgetValue(short &x,short &y,short &z) constFÏÐÏ) "€:€”‘€‚A€‚ÿReturns vector components.<ŠÏ, (€ €T”A‚S~‚A€ƒ‚ÿvoiÐÏÄdnegate()V-ÐÏn) "€Z€”‘€‚A€‚ÿNegates each component of vector in place.•Y< H€²€T”A‚S~‚A㵃õ(€‰ƒ‚㵃õ(‰ƒ‚ÿSbVec3s &setValue(const short v[3])SbVec3s &setValue(short x,short y,short z)CnF) "€4€”‘€‚A€‚ÿSets vector components.l>². ,€|€T”A‚S~‚A€ƒ‚ƒ‚ÿshort &operator [](int i)const short &operator [](int i)Q(F) "€P€”‘€‚A€‚ÿAccesses indexed component of vector.Ï„²ÒK d€ €T”A‚S~‚A㵃õ(€‰ƒ‚㵃õ(‰ƒ‚㵃õ(‰ƒ‚㵃õ(‰ƒ‚ÿSbVec3s &operator *=(int d)SbVec3s &operator *=(double d)SbVec3s &operator /=(int d)SbVec3s &operator /=(double d)h?:) "€~€”‘€‚A€‚ÿComponent-wise scalar multiplication and division operators. ZÒÚF \€´€T”A‚S~‚A㵃õ(€‰ƒãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰‚ÿSbVec3s &operator +=(const SbVec3s &u)SbVec3s &operator -=(const SbVec3s &u)e<:?) "€x€”‘€‚A€‚ÿComponent-wise vector addition and subtraction operators.QÚ2 4€>€T”A‚S~‚A㵃õ(€‰ƒ‚ÿSbVec3soperator -() consta8?ñ) "€p€”‘€‚A€‚ÿNondestructive unary negation - returns a new vector.°+¡… Ø€W€T”A‚S~‚A㵃õ(€‰ƒãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰‚ÿSbVec3soperator *(const SbVec3s &v,int d)SbVec3soperator *(const SbVec3s &v,double d)SbVec3soperator *(int d,const SbVec3s &v)SbVec3soperator *(double d,const SbVec3s &v)SbVec3soperator /(const SbVec3s &v,int d)SbVec3soperator /(const SbVec3s &v,double d)oFñ) "€Œ€”‘€‚A€‚ÿComponent-wise binary scalar multiplication and division operators.Õ€¡åU x€€T”A‚S~‚A㵃õ(€‰ƒãµƒõ(‰ãµƒõ(‰‚㵃õ(‰ƒãµƒõ(‰ãµƒõ(‰‚ÿSbVec3soperator +(const SbVec3s &v1,const SbVec3s &v2)SbVec3soperator -(const SbVec3s &v1,const SbVec3s &v2)lCQ) "€†€”‘€‚A€‚ÿComponent-wise binary vector addition and subtraction operators.¾vå H `€ì€T”A‚S~‚A€ƒãµƒõ(‰ãµƒõ(‰‚ƒãµƒõ(‰ãµƒõ(‰‚ÿintoperator ==(const SbVec3s &v1,const SbVec3s &v2)intoperator !=(const SbVec3s &v1,const SbVec3s &v2)J!QY ) "€B€”‘€‚A€‚ÿEquality comparison operators.1  Š & €€‚A€‚ÿSEE ALSO¢CY , _ Ž€†€”‘€‚A㨃õ(€‰€ãÓƒõ(€‰€ã}ƒõ(€‰€㊃õ(€‰€€ã ‚û‰‚ÿSbVec3f, SbVec4f, SbVec2f, SbVec2s, SbRotation8Š d 1XC¬`/id “ VƒSbVec4f/ , “ % €€ˆˆ€‚ÿSbVec4f*d ½ # €€€‚ÿNAMEB“ ÿ & €8€”‘€€‚ÿSbVec4f - 4D vector class3½ 2 # € €€‚ÿINHERITS FROM4 ÿ f ) "€€”‘€€€‚ÿSbVec4f2 2 ˜ & €€€€ ‚ÿSYNOPSISd=f ü ' €z€”‘€€‚‚ÿ#include Methods from class SbVec4f:2¿˜ .s ´€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒãÓƒõ(‰‚㑶p6‰ƒãÓƒõ(‰‚ƒã¨ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ãÓƒõ(‰ƒ‚ãÓƒõ(‰ƒ‚ÿSbVec4f()SbVec4f(const float v[4])SbVec4f(float x,float y,float z,float w)floatdot(const SbVec4f &v) constSbBoolequals(const SbVec4f v,float tolerance) constvoidgetReal(SbVec3f &v) constconst float *getValue() constvoidgetValue(float &x,float &y,float &z,float &w) constfloatlength() constvoidnegate()normalize()SbVec4f &setValue(const float v[4])SbVec4f &setValue(float x,float y,float z,float w)…ü N@ ì€ €T”A‚S~‚AãÓƒõ(€‰ƒãуõ(‰‚ƒ‚ƒ‚ãÓƒõ(‰ƒ‚ãÓƒõ(‰ƒ‚ãÓƒõ(‰ƒãÓƒõ(‰‚ãÓƒõ(‰ƒãÓƒõ(‰‚ãÓƒõ(‰ƒ‚ãÓƒõ(‰ƒãÓƒõ(‰‚ãÓƒõ(‰ƒãÓƒõ(‰‚ÿSbVec4f &setValue(const SbVec4d &vec4)float &operator [](int i)const float &operator [](int i)SbVec4f &operator *=(float d)SbVec4f &operator /=(float d)SbVec4f &operator +=(const SbVec4f &u)SbVec4f &operator -=(const SbVec4f &u)SbVec4foperator -() constSbVec4foperator *(const SbVec4f.N@,  &v,float d)SbVec4foperator *(float d,const SbVec4f &v)¨&.öA‚ Ò€M€T”A‚S~‚AãÓƒõ(€‰ƒãÓƒõ(‰‚ãÓƒõ(‰ƒãÓƒõ(‰ãÓƒõ(‰‚ãÓƒõ(‰ƒãÓƒõ(‰ãÓƒõ(‰‚ƒãÓƒõ(‰ãÓƒõ(‰‚ƒãÓƒõ(‰ãÓƒõ(‰‚ÿSbVec4foperator /(const SbVec4f &v,float d)SbVec4foperator +(const SbVec4f &v1,const SbVec4f &v2)SbVec4foperator -(const SbVec4f &v1,const SbVec4f &v2)intoperator ==(const SbVec4f &v1,const SbVec4f &v2)intoperator !=(const SbVec4f &v1,const SbVec4f &v2)4N@*B& €€‚A€‚ÿDESCRIPTION§~öAÑB) "€ü€”‘€‚A€‚ÿ4D vector class used to store homogeneous coordinates. This class is used in Open Inventor for arguments and return values.0 *BC& €€‚A€‚ÿMETHODS9 ÑB:C, (€€T”A‚S~‚A€ƒ‚ÿSbVec4f()@CzC) "€.€”‘€‚A€‚ÿDefault constructor.{J:CõC1 2€”€T”A‚S~‚A€ƒ‚ƒ‚ÿSbVec4f(const float v[4])SbVec4f(float x,float y,float z,float w)P'zCED) "€N€”‘€‚A€‚ÿConstructor given vector components.X&õCD2 4€L€T”A‚S~‚A€ƒãÓƒõ(‰‚ÿfloatdot(const SbVec4f &v) conste<EDE) "€x€”‘€‚A€‚ÿReturns dot (inner) product of vector and another vector.u<DwE9 B€x€T”A‚S~‚A㑶p6€‰ƒãÓƒõ(‰‚ÿSbBoolequals(const SbVec4f v,float tolerance) const¢yEF) "€ò€”‘€‚A€‚ÿEquality comparison within given tolerance - the square of the length of the maximum distance between the two vectors.U#wEnF2 4€F€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidgetReal(SbVec3f &v) constsJFáF) "€”€”‘€‚A€‚ÿReturns the real portion of the vector by dividing by the fourth value.Ž]nFoG1 2€º€T”A‚S~‚A€ƒ‚ƒ‚ÿconst float *getValue() constvoidgetValue(float &x,float &y,float &z,float &w) constFáFµG) "€:€”‘€‚A€‚ÿReturns vector components.CoGøG, (€.€T”A‚S~‚A€ƒ‚ÿfloatlength() constO&µGGH) "€L€”‘€‚A€‚ÿReturns geometric length of vector.<øGƒH, (€ €T”A‚S~‚A€ƒ‚ÿvoidnegate()V-GHÙH) "€Z€”‘€‚A€‚ÿNegates each component of vector in place.;ƒHI, (€€T”A‚S~‚A€ƒ‚ÿnormalize()M$ÙHaI) "€H€”‘€‚A€‚ÿChanges vector to be unit length.ŸbIJ= J€Ä€T”A‚S~‚AãÓƒõ(€‰ƒ‚ãÓƒõ(‰ƒ‚ÿSbVec4f &setValue(const float v[4])SbVec4f &setValue(float x,float y,float z,float w)GaIGJ) "€<€”‘€‚A€‚ÿSets the vector components.f.J­J8 @€\€T”A‚S~‚AãÓƒõ(€‰ƒãуõ(‰‚ÿSbVec4f &setValue(const SbVec4d &vec4)`7GJ K) "€n€”‘€‚A€‚ÿSets value of vector from a double precision vector.l>­JyK. ,€|€T”A‚S~‚A€ƒ‚ƒ‚ÿfloat &operator [](int i)const float &operator [](int i)Q( KÊK) "€P€”‘€‚A€‚ÿAccesses indexed component of vector.~DyKHL: D€ˆ€T”A‚S~‚AãÓƒõ(€‰ƒ‚ãÓƒõ(‰ƒ‚ÿSbVec4f &operator *=(float d)SbVec4f &operator /=(float d)h?ÊK°L) "€~€”‘€‚A€‚ÿComponent-wise scalar multiplication and division operators. ZHLPMF \€´€T”A‚S~‚AãÓƒõ(€‰ƒãÓƒõ(‰‚ãÓƒõ(‰ƒãÓƒõ(‰‚ÿSbVec4f &operator +=(const SbVec4f &u)SbVec4f &operator -=(const SbVec4f &u)e<°LµM) "€x€”‘€‚A€‚ÿComponent-wise vector addition and subtraction operators.QPMN2 4€>€T”A‚S~‚AãÓƒõ(€‰ƒ‚ÿSbVec4foperator -() consta8µMgN) "€p€”‘€‚A€‚ÿNondestructive unary negation - returns a new vector.ð˜NWOX ~€1€T”A‚S~‚AãÓƒõ(€‰ƒãÓƒõ(‰‚ãÓƒõ(‰ƒãÓƒõ(‰‚ãÓƒõ(‰ƒãÓƒõ(‰‚ÿSbVec4foperator *(const SbVec4f &v,float d)SbVec4foperator *(float d,const SbVec4f &v)SbVec4foperator /(const SbVec4f &v,float d)oFgNÆO) "€Œ€”‘€‚A€‚ÿComponent-wise binary scalar multiplication and division operators.Õ€WO§€U x€€T”A‚S~‚AãÓƒõ(€‰ƒãÓƒõ(‰ãÓÆO§€, ƒõ(‰‚ãÓƒõ(‰ƒãÓƒõ(‰ãÓƒõ(‰‚ÿSbVec4foperator +(const SbVec4f &v1,const SbVec4f &v2)SbVec4foperator -(const SbVec4f &v1,const SbVec4f &v2)lCÆO) "€†€”‘€‚A€‚ÿComponent-wise binary vector addition and subtraction operators.¾v§€ÑH `€ì€T”A‚S~‚A€ƒãÓƒõ(‰ãÓƒõ(‰‚ƒãÓƒõ(‰ãÓƒõ(‰‚ÿintoperator ==(const SbVec4f &v1,const SbVec4f &v2)intoperator !=(const SbVec4f &v1,const SbVec4f &v2)J!‚) "€B€”‘€‚A€‚ÿEquality comparison operators.1 ÑL‚& €€‚A€‚ÿSEE ALSO {‚Vƒ î€ö€”‘€‚Aã{ƒõ(€‰€€ã}ƒõ(‰€㦃õ(€‰€㨃õ(€‰€ãуõ(€‰€㊃õ(€‰€㵃õ(€‰€ã ‚û€‰€€ãC°×>‰‚ÿSbVec2d, SbVec2f, SbVec3d, SbVec3f, SbVec4d, SbVec2s, SbVec3s, SbRotation, SbRotationdAL‚—ƒ1(Ï.Z j—ƒσqÌSbViewportRegion8Vƒσ% €&€ˆˆ€‚ÿSbViewportRegion*—ƒùƒ# €€€‚ÿNAME]7σV„& €n€”‘€€‚ÿSbViewportRegion - class for representing a viewport3ùƒ‰„# € €€‚ÿINHERITS FROM=V„Æ„) "€(€”‘€€€‚ÿSbViewportRegion2 ‰„ø„& €€€€ ‚ÿSYNOPSISuNÆ„m…' €œ€”‘€€‚‚ÿ#include Methods from class SbViewportRegion:´ø„…‡d –€i€T”A‚S~‚A€ƒ‚ƒ‚ƒãŠƒõ(‰‚ƒãñf‘¸‰‚ƒ‚ƒãŠƒõ(‰‚ƒ‚ƒã}ƒõ(‰ã}ƒõ(‰‚ƒ‚ÿSbViewportRegion()SbViewportRegion(short width,short height)SbViewportRegion(SbVec2s winSize)SbViewportRegion(const SbViewportRegion &vpReg)voidsetWindowSize(short width,short height)voidsetWindowSize(SbVec2s winSize)voidsetViewport(float left,float bottom,float width,float height)voidsetViewport(SbVec2f origin,SbVec2f size)voidsetViewportPixels(short left,short bottom,short width,short height)'»m…¬‰l ¦€w€T”A‚S~‚A€ƒãŠƒõ(‰ãŠƒõ(‰‚㊃õ(‰ƒ‚ã}ƒõ(‰ƒ‚㊃õ(‰ƒ‚ã}ƒõ(‰ƒ‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetViewportPixels(SbVec2s origin,SbVec2s size)const SbVec2s &getWindowSize() constconst SbVec2f &getViewportOrigin() constconst SbVec2s &getViewportOriginPixels() constconst SbVec2f &getViewportSize() constconst SbVec2s &getViewportSizePixels() constfloatgetViewportAspectRatio() constvoidscaleWidth(float ratio)voidscaleHeight(float ratio)voidsetPixelsPerInch(float ppi)floatgetPixelsPerInch() const´y…‡`Š; F€ò€T”A‚S~‚A€ƒ‚ƒãñf‘¸‰ãñf‘¸‰‚ÿfloatgetPixelsPerPoint() constfriend intoperator ==(const SbViewportRegion ®1,const SbViewportRegion ®2)4¬‰”Š& €€‚A€‚ÿDESCRIPTIONßµ`ŠsŒ* "€k€”‘€‚A€‚ÿThis class represents the active viewport region in a display window. It contains the screen-space size of the window as well as the origin and size of the viewport within the window. By default, the viewport is the same as the full window. Methods allow the viewport to be set either in terms of screen-space pixels or as normalized coordinates, where (0,0) is the lower-left corner of the window and (1,1) is the upper-right corner.0 ”Š£Œ& €€‚A€‚ÿMETHODSÛ›sŒ~@ N€7€T”A‚S~‚A€ƒ‚ƒ‚ƒãŠƒõ(‰‚ƒãñf‘¸‰‚ÿSbViewportRegion()SbViewportRegion(short width,short height)SbViewportRegion(SbVec2s winSize)SbViewportRegion(const SbViewportRegion &vpReg)J!£ŒÈ) "€B€”‘€‚A€‚ÿConstructors of various kinds.]0~%Ž- *€`€T”A‚S~‚A€ƒ‚ÿvoidsetWindowSize(short width,short height)d;ȉŽ) "€v€”‘€‚A€‚ÿChanges window size to given width and height in pixels.Z(%ŽãŽ2 4€P€T”A‚S~‚A€ƒãŠƒõ(‰‚ÿvoidsetWindowSize(SbVec2s winSize)†Q‰Ži5 :€¢€”‘€‚A€㊃õ(€‰€‚ÿChanges window size to given width and height in pixels, given as SbVec2s.wHãŽà/ .€€T”A‚S~‚A€ƒ‚ÿvoidsetViewport(float left,float bottom,float width,float height)±‡iÀ* "€€”àÀVƒ‘€‚A€‚ÿSets viewport to given region, specified as normalized window coordinates: (0,0) is the lower-left corner, (1,1) is the upper-right.n5à Á9 B€j€T”A‚S~‚A€ƒã}ƒõ(‰ã}ƒõ(‰‚ÿvoidsetViewport(SbVec2f origin,SbVec2f size)›rÀ¦Á) "€ä€”‘€‚A€‚ÿSets viewport to region with given origin (lower-left corner) and size, given as normalized coordinate vectors.}N Á#Â/ .€œ€T”A‚S~‚A€ƒ‚ÿvoidsetViewportPixels(short left,short bottom,short width,short height)”k¦Á·Â) "€Ö€”‘€‚A€‚ÿSets viewport to given region, specified as pixel coordinates in window: (0,0) is the lower-left corner.t;#Â+Ã9 B€v€T”A‚S~‚A€ƒãŠƒõ(‰ãŠƒõ(‰‚ÿvoidsetViewportPixels(SbVec2s origin,SbVec2s size)f·ÂºÃ) "€Ì€”‘€‚A€‚ÿSets viewport to region with given origin (lower-left corner) and size, given as pixel coordinates.\*+ÃÄ2 4€T€T”A‚S~‚A€㊃õ(‰ƒ‚ÿconst SbVec2s &getWindowSize() constJ!ºÃ`Ä) "€B€”‘€‚A€‚ÿReturns window size in pixels.`.ÄÀÄ2 4€\€T”A‚S~‚A€ã}ƒõ(‰ƒ‚ÿconst SbVec2f &getViewportOrigin() const^5`ÄÅ) "€j€”‘€‚A€‚ÿReturns viewport origin in normalized coordinates.f4ÀÄ„Å2 4€h€T”A‚S~‚A€㊃õ(‰ƒ‚ÿconst SbVec2s &getViewportOriginPixels() constN%ÅÒÅ) "€J€”‘€‚A€‚ÿReturns viewport origin in pixels.^,„Å0Æ2 4€X€T”A‚S~‚A€ã}ƒõ(‰ƒ‚ÿconst SbVec2f &getViewportSize() const\3ÒÅŒÆ) "€f€”‘€‚A€‚ÿReturns viewport size in normalized coordinates.d20ÆðÆ2 4€d€T”A‚S~‚A€㊃õ(‰ƒ‚ÿconst SbVec2s &getViewportSizePixels() constL#ŒÆ<Ç) "€F€”‘€‚A€‚ÿReturns viewport size in pixels.S'ðÆÇ, (€N€T”A‚S~‚A€ƒ‚ÿfloatgetViewportAspectRatio() const\3<ÇëÇ) "€f€”‘€‚A€‚ÿReturns aspect ratio (width/height) of viewport.k=ÇVÈ. ,€z€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidscaleWidth(float ratio)voidscaleHeight(float ratio)ѧëÇ'É* "€O€”‘€‚A€‚ÿScales viewport within window to be the given ratio of its current width or height, leaving the resulting viewport centered about the same point as the current one.pBVÈ—É. ,€„€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetPixelsPerInch(float ppi)floatgetPixelsPerInch() const¹'ÉPÊ* "€€”‘€‚A€‚ÿSets/returns the pixel-per-inch ratio for the display device the viewport is part of. The default value is 72 (1 pixel per printer's point).N"—ÉžÊ, (€D€T”A‚S~‚A€ƒ‚ÿfloatgetPixelsPerPoint() constsJPÊË) "€”€”‘€‚A€‚ÿConvenience function that returns number of pixels per printer's point.’YžÊ£Ë9 B€²€T”A‚S~‚A€ƒãñf‘¸‰ãñf‘¸‰‚ÿfriend intoperator ==(const SbViewportRegion ®1,const SbViewportRegion ®2)I ËìË) "€@€”‘€‚A€‚ÿEquality comparison operator.1 £ËÌ& €€‚A€‚ÿSEE ALSOTìËqÌ; F€2€”‘€‚Aã}ƒõ(€‰€㊃õ(€‰‚ÿSbVec2f, SbVec2s: Ì«Ì1 !Z é†1k«ÌÜÌ1MSbXfBox3f1 qÌÜÌ% €€ˆˆ€‚ÿSbXfBox3f*«ÌÍ# €€€‚ÿNAMEd>ÜÌjÍ& €|€”‘€€‚ÿSbXfBox3f - 3D box with an associated transformation matrix3ÍÍ# € €€‚ÿINHERITS FROMPjÍíÍ5 :€6€”‘€ã?çî$€‰€€€‚ÿSbBox3f > SbXfBox3f2 ÍÎ& €€€€ ‚ÿSYNOPSISc<íÍ‚Î' €x€”‘€€‚‚ÿ#include Methods from class SbXfBox3f:-¡Î»Œ æ€C€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã?çî$‰‚ƒ‚ƒã4i¥‘‰‚ã4i¥‘‰ƒ‚ã4i¥‘‰ƒ‚㨃õ(‰ƒ‚ƒã¨ƒõ(‰‚ƒã?çî$‰‚ƒãñ†Ï‰‚㑶p6‰ƒã¨ƒõ(‰‚ÿSbXfBox3f()SbXfBox3f(const SbVec3f &_min,const SbVec3f &_max)SbXfBox3f(const SbBox3f &box)~SbXfBox3f()voidsetTransform(const SbMatrix &m)const SbMatrix &getTransform() constconst SbMatrix &getInverse() constSbVec3‚λqÌfgetCenter() constvoidextendBy(const SbVec3f &pt)voidextendBy(const SbBox3f &bb)voidextendBy(const SbXfBox3f &bb)SbBoolintersect(const SbVec3f &pt) constAÔ‚Îüm ¨€©€T”A‚S~‚A㑶p6€‰ƒã?çî$‰‚ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒ‚ƒ‚ÿSbBoolintersect(const SbBox3f &bb) constvoidsetBounds(float xmin,float ymin,float zmin,float xmax,float ymax,float zmax)voidsetBounds(const SbVec3f &_min,const SbVec3f &_max)voidgetBounds(float &xmin,float &ymin,float &zmin,float &xmax,float &ymax,float &zmax) constvoidgetBounds(SbVec3f &_min,SbVec3f &_max) constvoidgetOrigin(float &originX,float &originY,float &originZ)voidgetSize(float &sizeX,float &sizeY,float &sizeZ)Ùb»Õw ¼€Å€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã¨ƒõ(‰‚ƒã4i¥‘‰‚ã?çî$‰ƒ‚ƒãñ†Ï‰ãñ†Ï‰‚ƒãñ†Ï‰ãñ†Ï‰‚ÿfloatgetVolume() constvoidmakeEmpty()SbBoolisEmpty() constSbBoolhasVolume() constvoidgetSpan(const SbVec3f &direction,float &dMin,float &dMax) constvoidtransform(const SbMatrix &m)SbBox3fproject() constintoperator ==(const SbXfBox3f &b1,const SbXfBox3f &b2)intoperator !=(const SbXfBox3f &b1,const SbXfBox3f &b2)O ü$/ .€@€”‘€‚A€ã?çî$‰‚ÿMethods from class SbBox3f:r8Õ–: D€p€T”A‚S~‚A€㨃õ(‰ƒ‚㨃õ(‰ƒ‚ÿconst SbVec3f &getMin()const SbVec3f &getMax()4$Ê& €€‚A€‚ÿDESCRIPTIONખª6 :€U€”‘€‚A€€€€€‚ÿA 3D box with an arbitrary transformation applied. This class is useful when a box will be transformed frequently; if an SbBox3f is used for this purpose it will expand each time it is transformed in order to keep itself axis-aligned. Transformations can be accumulated on an SbXfBox3f without expanding the box, and after all transformations have been done, the box can be expanded to an axis-aligned box if necessary.0 ÊÚ& €€‚A€‚ÿMETHODS¼wª–E Z€î€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã?çî$‰‚ƒ‚ÿSbXfBox3f()SbXfBox3f(const SbVec3f &_min,const SbVec3f &_max)SbXfBox3f(const SbBox3f &box)~SbXfBox3f()HÚÞ) "€>€”‘€‚A€‚ÿConstructors and destructor.[)–9 2 4€R€T”A‚S~‚A€ƒã4i¥‘‰‚ÿvoidsetTransform(const SbMatrix &m)O&Þˆ ) "€L€”‘€‚A€‚ÿSets the transformation on the box.ŠP9  : D€ €T”A‚S~‚A€ã4i¥‘‰ƒ‚ã4i¥‘‰ƒ‚ÿconst SbMatrix &getTransform() constconst SbMatrix &getInverse() const`7ˆ r ) "€n€”‘€‚A€‚ÿGets the transformation on the box, and its inverse.P  2 4€<€T”A‚S~‚A㨃õ(€‰ƒ‚ÿSbVec3fgetCenter() constJ!r  ) "€B€”‘€‚A€‚ÿReturns the center of the box.W% c 2 4€J€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidextendBy(const SbVec3f &pt)+û Ž 0 .€÷€”‘€‚A€€€‚ÿExtends the box (if necessary) to contain the given 3D point. If the box has had a non-identity transformation applied using the setTransform() method, the point is assumed to be in the transformed space. For example, the following code sequence::c È ( €$€Ù€‚A€‚ÿSbXfBox3f bbox;I!Ž  ( €B€Ù€‚A€‚ÿbbox.extendBy(SbVec3f(0,0,0));:È K ( €$€Ù€‚A€‚ÿSbMatrix trans;N& ™ ( €L€Ù€‚A€‚ÿtrans.setTranslate(SbVec3f(1,1,1));DK Ý ( €8€Ù€‚A€‚ÿbbox.setTransform(trans);I!™ &( €B€Ù€‚A€‚ÿbbox.extendBy(SbVec3f(0,0,0));+Ý Q( €€Ù€‚A€‚ÿ–m&ç) "€Ú€”‘€‚A€‚ÿwill result in a bounding box extending from (-1,-1,-1) to (0,0,0) in bbox'es local (untransformed) space.W%Q>2 4€J€T”A‚S~‚A€ƒã?çî$‰‚ÿvoidextendBy(const SbBox3f &bb)ÚçZ@6 :€µ€”‘€‚A€€€€€‚ÿExtends the box (if necessary) to contain the given SbBox3f. If the box has had a non-identity transformation applied using the setTransf>Z@qÌorm() method, the given SbBox3f is assumed to be in the transformed space.Y'>³@2 4€N€T”A‚S~‚A€ƒãñ†Ï‰‚ÿvoidextendBy(const SbXfBox3f &bb)rCZ@%A/ .€†€”‘€‚A€€€‚ÿExtends the box (if necessary) to contain the given SbXfBox3f.h0³@A8 @€`€T”A‚S~‚A㑶p6€‰ƒã¨ƒõ(‰‚ÿSbBoolintersect(const SbVec3f &pt) constrI%AÿA) "€’€”‘€‚A€‚ÿReturns TRUE if intersection of given point and this box is not empty.h0AgB8 @€`€T”A‚S~‚A㑶p6€‰ƒã?çî$‰‚ÿSbBoolintersect(const SbBox3f &bb) constpGÿA×B) "€Ž€”‘€‚A€‚ÿReturns TRUE if intersection of given box and this box is not empty.‡0gB^DW |€a€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidsetBounds(float xmin,float ymin,float zmin,float xmax,float ymax,float zmax)voidsetBounds(const SbVec3f &_min,const SbVec3f &_max)voidgetBounds(float &xmin,float &ymin,float &zmin,float &xmax,float &ymax,float &zmax) constvoidgetBounds(SbVec3f &_min,SbVec3f &_max) constN%×B¬D) "€J€”‘€‚A€‚ÿSet and get the bounds of the box.oA^DE. ,€‚€T”A‚S~‚A€ƒ‚ÿvoidgetOrigin(float &originX,float &originY,float &originZ)V-¬DqE) "€Z€”‘€‚A€‚ÿReturns origin (minimum point) of the box.g9EØE. ,€r€T”A‚S~‚A€ƒ‚ÿvoidgetSize(float &sizeX,float &sizeY,float &sizeZ)DqEF) "€6€”‘€‚A€‚ÿReturns size of the box.FØEbF, (€4€T”A‚S~‚A€ƒ‚ÿfloatgetVolume() const]4F¿F) "€h€”‘€‚A€‚ÿGives the volume of the box (0 for an empty box).?bFþF, (€&€T”A‚S~‚A€ƒ‚ÿvoidmakeEmpty()L#¿FJG) "€F€”‘€‚A€‚ÿSets the box to contain nothing.MþF—G2 4€6€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisEmpty() constT+JGëG) "€V€”‘€‚A€‚ÿChecks if the box is empty (degenerate).O—G:H2 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolhasVolume() constxOëG²H) "€ž€”‘€‚A€‚ÿChecks if the box has volume; i.e., all three dimensions have positive size.K:H1I4 8€–€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidgetSpan(const SbVec3f &direction,float &dMin,float &dMax) conste<²H–I) "€x€”‘€‚A€‚ÿFinds the extent of the box along a particular direction.X&1IîI2 4€L€T”A‚S~‚A€ƒã4i¥‘‰‚ÿvoidtransform(const SbMatrix &m)S*–IAJ) "€T€”‘€‚A€‚ÿTransforms the box by the given matrix.NîIJ2 4€8€T”A‚S~‚Aã?çî$€‰ƒ‚ÿSbBox3fproject() constg,AJöJ; F€X€”‘€‚A€€€ã?çî$€‰€‚ÿProjects an SbXfBox3f to an SbBox3fÏ€JÅKO l€€T”A‚S~‚A€ƒãñ†Ï‰ãñ†Ï‰€‚€ƒãñ†Ï‰ãñ†Ï‰‚ÿintoperator ==(const SbXfBox3f &b1,const SbXfBox3f &b2)intoperator !=(const SbXfBox3f &b1,const SbXfBox3f &b2)AöJL) "€0€”‘€‚A€‚ÿEquality comparisons.1 ÅK7L& €€‚A€‚ÿSEE ALSOúwL1Mƒ ր‘€‚Aã?çî$€‰€ãçî$€‰€ã!çî$€‰€㨃õ(€‰€ã}ƒõ(€‰€㊃õ(€‰€ã4i¥‘€‰€ããS¯+€‰‚ÿSbBox3f, SbBox2f, SbBox2s, SbVec3f, SbVec2f, SbVec2s, SbMatrix, SoGetBoundingBoxAction< 7LmM1I ›%„›lmM M²ŒSceneViewer31M M% €€ˆˆ€‚ÿSceneViewer*mMÊM# €€€‚ÿNAMEp@ M:N0 0€‚€”‘€€‚†"€(‚ÿSceneViewer - 3D editor and viewer for Open Inventor scenes. ÊMhN# €€€‚ÿSYNOPSISM$:NµN) "€H€”‘€€€‚ÿSceneViewer [-e env_file] [file]1hNæN# €€€‚ÿDESCRIPTION\%µNN7 <€K€”‘€€€€€‚€€‚ÿSceneViewer is a program for viewing and interacting with Open Inventor scene graph files (the SGI 3D file format standard). SceneViewer was written to demonstrate Open Inventor features, and serves as the basis for the IRIæNN1MS Explorer Render Module.When SceneViewer is run, a window appears containing the Open Inventor examiner viewer and a menu bar. The viewer allows the user to interactively change the view of the scene through direct manipulation, or indirect slider and push button controls. The menu bar contains the following menus:3 æN* $€€P!s€€‚ÿFile  wN!‚) "€î€”‘€€€‚ÿThis menu supports file reading and writing, and launches a dialog for printing to a printer or to PostScript file.3 T‚* $€€P!s€€‚ÿEdit t!‚ñ‚) "€è€”‘€€€‚ÿThis menu enables copy and paste of 3D data, selecting all objects, and deleting the currently selected objects.6 T‚'ƒ* $€€P!s€€‚ÿViewing ü½ñ‚#…? L€{€”‘€€€€€€€€€€‚ÿThis menu controls viewing options. It allows different viewing paradigms to be employed: the examiner viewer which provides a virtual trackball interface, the fly-through viewer for traveling through expansive data sets, the walk viewer for architectural walk-throughs, and the plane viewer for orthographic projections. The menu also enables different types of transparency, fog effects, antialiasing, and background color controls.8'ƒ[…* $€€P!s€€‚ÿSelection ر#…3†' €c€”‘€€‚ÿThis menu allows the different selection policies to be demonstrated. A selection policy determines how objects get added and removed from the collection of selected objects.6 […i†* $€€P!s€€‚ÿEditors œv3†‡& €ì€”‘€€‚ÿThis menu launches the material editor and transform sliders. An object must be selected for the menu to be active.5 i†:‡* $€€P!s€€‚ÿManips D‡~ˆ3 4€#€”‘€€€€€€‚ÿThis menu allows different manipulators to act on the current selection, including the trackball, handle box, jack, center ball, and transform box. Manipulators can also be turned off, in which case selected objects are surrounded with a red wireframe box highlight.5 :‡³ˆ* $€€P!s€€‚ÿLights .~ˆá‰( € €”‘€€‚‚ÿThis menu allows directional, point, and spot lights to be created and edited. It also allows lights to be turned on and off.For more information on how to use the viewers and editors employed by the scene viewer, please see SceneViewer's runtime help cards.1³ˆŠ# €€€‚ÿSOURCE CODEb6á‰tŠ, (€l€”‘€€€€‚ÿSource code to SceneViewer is available from TGS.- Š¡Š# €€€‚ÿOPTIONSÓ¥tŠt‹. *€K€”‘€€‚€€‚ÿThe following command line options are allowed:-e env_file Read the passed environment file, and use the lights, camera, and environment settings found there.+¡ŠŸ‹# €€€‚ÿFILES[2t‹ú‹) "€d€”‘€€€‚ÿ%OIVHOME%\data\models\* - Sample 3D data files. Ÿ‹(Œ# €€€‚ÿSEE ALSOŠ:ú‹²ŒP p€t€”‘€ã +ª€‰€ãUÑF€‰€ã“°#€‰€ãh$ÿ€‰‚ÿinventor, ivcat, maze, SceneViewer figureB(ŒôŒ1²3–¸† môŒ-{ÄSceneViewer Intro9²Œ-% €(€ˆˆ€‚ÿSceneViewer IntroÞ¨ôŒ 6 :€S€€€‚‚†"€)‚€‚ÿWelcome to the SceneViewer! When SceneViewer is run, a window appears containing the Open Inventor Examiner Viewer and a menu bar. The viewer allows the user to interactively change the view of the scene through direct manipulation, or indirect slider and push button controls. (The figure below shows the SceneViewer on a Windows system. On a Unix system, its appearance will be slightly different.)The SceneViewerõ- Àf š€€P‘€:‚H€ƒ€€ã»]݉ãù_\݉ã0#q݉ãÍ›;€‰ã»‡Cø‰ã%Ò³‰ã`w‰‰ãìjÿ§‰ãh `݉‚ÿ1.Menu bar. The menu bar contains the File, Edit, View, Selection, Editors, Manips, Lights, ViewPoints, and Help menus.  À²Œo@ {À/ .€€€P‘€:‚H€ƒ€€‚ÿ2.Toolbar. This is a standard Windows application toolbar.Ø¢ ÀSÁ6 :€E€P‘€:‚H€ƒã4什‰€‚ÿ3.Graphics Area. You can use the cursor to interact with the objects in the scene. Pressing the right mouse button will bring up a context-sensitive menu.a{ÀãÁ/ .€Â€P‘€:‚H€ƒ€€‚ÿ4.Rotx. In Examiner Viewer mode, this thumbwheel rotates the model about the screen X axis.g8SÁJÂ/ .€p€P‘€:‚H€ƒ€€‚ÿ5.Status Area. This area displays status messages.aãÁÚÂ/ .€Â€P‘€:‚H€ƒ€€‚ÿ6.Roty. In Examiner Viewer mode, this thumbwheel rotates the model about the screen Y axis.—hJÂqÃ/ .€Ð€P‘€:‚H€ƒ€€‚ÿ7.Zoom. The zoom slider adjusts the camera's field of view. Field of view is specified in degrees.j;ÚÂÛÃ/ .€v€P‘€:‚H€ƒ€€‚ÿ8.Dolly. This thumbwheel moves the camera in and out. kqÃ{Ä5 :€Ö€P‘€:‚H€ƒãÚ:%€‰€‚ÿ9.Viewer Buttons. If the SceneViewer window is too small, not all of these buttons will be visible.8ÛóÄ1ņ1n³ÄâÄvËSensors/ {ÄâÄ% €€ˆˆ€‚ÿSensors'³Ä Å$ €€”€‚ÿŒCâÄ•ÅI#b€†óÆ $€€”ãËŠ³€‰‚ÿ€$€”‚ÿÿÿSoAlarmSensorTriggers a callback once sometime in the future˜O Å-ÆI#b€žóÆ $€€”㤴u?€‰‚ÿ€"€”‚ÿÿÿSoDataSensorAbstract base class for sensors attached to parts of a scene—N•ÅÄÆI#b€œóÆ $€€”㜺餀‰‚ÿ€.€”‚ÿÿÿSoDelayQueueSensorAbstract base class for sensors not dependent on time–M-ÆZÇI#b€šóÆ $€€”ãè"&€‰‚ÿ€$€”‚ÿÿÿSoFieldSensorSensor class that can be attached to Open Inventor fields›RÄÆõÇI#b€¤óÆ $€€”ãʇõÀ€‰‚ÿ€"€”‚ÿÿÿSoIdleSensorSensor for one-time only callbacks when the application is idle”KZljÈI#b€–óÆ $€€”ãTlˆW€‰‚ÿ€"€”‚ÿÿÿSoNodeSensorSensor class that can be attached to Open Inventor nodes8õÇ ÉI#b€póÆ $€€”ãâ+•€‰‚ÿ€(€”‚ÿÿÿSoOneShotSensorSensor for one-time only callbacks”K‰ÈžÉI#b€–óÆ $€€”ã'€‰‚ÿ€"€”‚ÿÿÿSoPathSensorSensor class that can be attached to Open Inventor paths…< É#ÊI#b€xóÆ $€€”ãrX.选‚ÿ€€”‚ÿÿÿSoSensorAbstract base class for Open Inventor sensors“JžÉ¶ÊI#b€”óÆ $€€”ã*ðz\€‰‚ÿ€.€”‚ÿÿÿSoTimerQueueSensorAbstract base class for sensors dependent on timešQ#ÊPËI#b€¢óÆ $€€”ã—l°L€‰‚ÿ€$€”‚ÿÿÿSoTimerSensorSensor that triggers callback repeatedly at regular intervals&¶ÊvË# €€€‚ÿ< P˲Ë1Çê‚1(„–o²ËåË{ÍSimplifiers3vËåË% €€ˆˆ€‚ÿSimplifiers'²Ë Ì$ €€”€‚ÿ£Zå˯ÌI#b€´ÊÝ $€€”ã,ꀉ‚ÿ€ €”‚ÿÿÿSoDecimatorEncapsulates an algorithm for simplifying shapes through mesh decimation¦] ÌUÍI#b€ºÊÝ $€€”ãê–Ìv€‰‚ÿ€"€”‚ÿÿÿSoSimplifierAbstract base class for objects that encapsulate simplification algorithms&¯Ì{Í# €€€‚ÿ9UÍ´Í1DÔ†/’2p´ÍäÍ+ SoAction0 {ÍäÍ% €€ˆˆ€‚ÿSoAction*´ÍÎ# €€€‚ÿNAMEW1äÍeÎ& €b€”‘€€‚ÿSoAction - abstract base class for all actions3ΘÎ# € €€‚ÿINHERITS FROM5 eÎÍÎ) "€€”‘€€€‚ÿSoAction2 ˜ÎÿÎ& €€€€ ‚ÿSYNOPSISmFÍÎlÏ' €Œ€”‘€€‚‚ÿ#include Methods from class SoAction:œ0ÿÎl ¦€a€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒãMy'9‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual~SoAction()virtual voidapply(lÏ{ÍSoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4lÏH& €€‚A€‚ÿDESCRIPTIONp=¸3 4€{€”‘€‚A€€€€‚ÿSoAction is the abstract base class for all actions. Classes derived from SoAction define operations to be applied at each node encountered during traversal of a scene graph. The function that gets called to implement the action for a particular node type is determined by a lookup table in the global database.0 Hè& €€‚A€‚ÿMETHODSB¸*, (€,€T”A‚S~‚A€ƒ‚ÿvirtual~SoAction()7èa) "€€”‘€‚A€‚ÿDestructor.à–*AJ b€-€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãMy'9‰ã‘¶p6‰‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)é¹a*0 .€s€”‘€‚A€€€‚ÿInitiates an action on the graph defined either by a node, path, or list of paths. TRUE can be passed for the obeysRules flag if the given path list has the following 4 properties:î­AA P€[€T”!:‚!€ƒ‚ƒ‚ƒ€€€€‚ƒ€‚ÿ1All paths have the same head node2Paths are sorted in traversal order3If one path ends at node A, no other path continues through A4No two paths are the samed*¥) "€È€”‘€‚!€‚ÿThese rules will be obeyed by path lists returned by picking and by searches for non-group nodes.U#ú2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()W.¥Q) "€\€”‘€‚A€‚ÿReturns the type identifier for this class.Qú¢2 4€>€T”A‚S~‚A€ãB-9‰ƒ‚ÿvirtual SoTypegetTypeId()`7Q) "€n€”‘€‚A€‚ÿReturns the type identifier for a specific instance.c+¢e8 @€V€T”A‚S~‚A€㑶p6‰ƒãB-9‰‚ÿvirtual SbBoolisOfType(SoType type)³‰ * "€€”‘€‚A€‚ÿReturns TRUE if this instance is of the type specified in type or is derived from that type. Otherwise, it returns FALSE. For example,c;e{ ( €v€Ù€‚A€‚ÿactionPtr->isOfType(SoGetMatrixAction::getClassTypeId())+ ¦ ( €€Ù€‚A€‚ÿ“^{ 9 5 :€¼€”‘€‚A€€€€€‚ÿreturns TRUE if actionPtr is an instance of SoGetMatrixAction or one of its subclasses.M!¦ † , (€B€T”A‚S~‚A€ƒ‚ÿvirtual voidinvalidateState()Ó©9 Y * "€S€”‘€‚A€‚ÿInvalidates the current traversal state in the action, forcing it to be recreated when the action is next applied. This is typically unnecessary in most applications.1 † Š & €€‚A€‚ÿSEE ALSO¡íY + ´ 6Û€”‘€‚Aã’n%9€‰€ãMy'9€‰€ãç2ø¡€‰€ã³DfL€‰€ã©öø(€‰€ããS¯+€‰€ã¹_ØS€‰€ãàꀉ€ã#º…ö€‰€ãÉ“â„€‰€ãòÓ}ª€‰€ãeY €‰‚ÿSoNode, SoPath, SoPathList, SoCallbackAction, SoGLRenderAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoHandleEventAction, SoPickAction, SoRayPickAction, SoSearchAction, SoWriteAction> Š i 1é†1½4qi ž KSoAlarmSensor5+ ž % € €ˆˆ€‚ÿSoAlarmSensor*i È # €€€‚ÿNAMEhBž 0& €„€”‘€€‚ÿSoAlarmSensor - triggers a callback once sometime in the future3È c# € €€‚ÿINHERITS FROMz90ÝA R€r€”‘€ãrX.选€ã*ðz\€‰€€€‚ÿSoSensor > SoTimerQueueSensor > SoAlarmSensor2 c& €€€€ ‚ÿSYNOPSISwP݆' € €”‘€€‚‚ÿ#include Methods from class SoAlarmSensor:Æ¢@J b€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒã4a†6‰‚ƒã4a†6‰‚ã4a†6‰ƒ‚ÿSoAlarmSensor()SoAlarmSensor(SoSensorCB *fun†¢@+ c,void *data)~SoAlarmSensor()voidsetTime(const SbTime &absTime)voidsetTimeFromNow(const SbTime &relTime)const SbTime &getTime() constZ+†ü@/ .€V€”‘€‚A€ã*ðz\‰‚ÿMethods from class SoTimerQueueSensor:³u¢@¯A> L€ê€T”A‚S~‚A€ã4a†6‰ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ÿconst SbTime &getTriggerTime()virtual voidschedule()virtual voidunschedule()virtual SbBoolisScheduled()P!ü@ÿA/ .€B€”‘€‚A€ãrX.鉂ÿMethods from class SoSensor:½Š¯A¼B3 4€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetFunction(SoSensorCB *callbackFunction)SoSensorCB *getFunction() constvoidsetData(void *callbackData)void *getData() const4ÿAðB& €€‚A€‚ÿDESCRIPTIONÿÕ¼BïC* "€«€”‘€‚A€‚ÿThis type of sensor can be used to schedule a one-time callback for some time in the future. The sensor is not guaranteed to be called at exactly that time, but will be called sometime after the specified time.0 ðBD& €€‚A€‚ÿMETHODSo@ïCŽD/ .€€€T”A‚S~‚A€ƒ‚ƒ‚ÿSoAlarmSensor()SoAlarmSensor(SoSensorCB *func,void *data)ŸvD-E) "€ì€”‘€‚A€‚ÿCreation methods. The second method takes the callback function and data to be called when the sensor is triggered.@ŽDmE, (€(€T”A‚S~‚A€ƒ‚ÿ~SoAlarmSensor()€W-EíE) "€®€”‘€‚A€‚ÿDestroys the sensor, freeing up any memory associated with it after unscheduling it.Z(mEGF2 4€P€T”A‚S~‚A€ƒã4a†6‰‚ÿvoidsetTime(const SbTime &absTime).øíEuG6 :€ñ€”‘€‚A€€€€€‚ÿSets the sensor to go off at the specified time. You must also call schedule() for the sensor to be triggered. If the sensor is already scheduled, it must be unscheduled and then rescheduled for the change in the trigger time to take effect.a/GFÖG2 4€^€T”A‚S~‚A€ƒã4a†6‰‚ÿvoidsetTimeFromNow(const SbTime &relTime):uGI6 :€ €”‘€‚A€€€€€‚ÿSets the sensor to go off the given amount of time from now. You must also call schedule() for the sensor to be triggered. If the sensor is already scheduled, it must be unscheduled and then rescheduled for the change in the trigger time to take effect.U#ÖGeI2 4€F€T”A‚S~‚A€ã4a†6‰ƒ‚ÿconst SbTime &getTime() constã³IHJ0 .€g€”‘€‚A€€€‚ÿReturns the time at which the sensor is set to be triggered. This is similar to the getTriggerTime method, but returns the time even if the sensor has not yet been scheduled.1 eIyJ& €€‚A€‚ÿSEE ALSOžKHJKS v€–€”‘€‚Aãâ+•€‰€ã—l°L€‰€ã*ðz\€‰€ã4a†6€‰‚ÿSoOneShotSensor, SoTimerSensor, SoTimerQueueSensor, SbTime< yJSK1̽43‚3rSK†KõÃSoAnnoText33K†K% €€ˆˆ€‚ÿSoAnnoText3*SK°K# €€€‚ÿNAMEK%†KûK& €J€”‘€€‚ÿSoAnnoText3 - Annotation text node3°K.L# € €€‚ÿINHERITS FROM§NûKÕLY ‚€œ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoAnnoText32 .LM& €€€€ ‚ÿSYNOPSISP*ÕLWM& €T€”‘€€‚ÿ#include à—M7NI `€/€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum Justification{SoAnnoText3::LEFTLeft justificationSoAnnoText3::RIGHTRight justificationSoAnnoText3::CENTERCenter justification}J!WMN) "€B€”‘€‚A€‚ÿFields from class SoAnnoText3:…C7NOB T€†€T”A‚S~‚Aã*{£€‰ƒ‚ã0â1‰ƒ‚ãØtW鉃‚ÿSoMFStringstringSoSFFloatspacingSoSFEnumjustificationK"NQO) "€D€”‘€‚A€‚ÿMethods from class SoAnnoText3:f2O·O4 8€d€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoAnnoText3()static SoTypegetClassTypeId()NQO€/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNod·O€Ke:|·On ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)€å/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØJ„ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHåÒ„@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NJ„ …/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÒ„W†Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4 …‹†& €€‚A€‚ÿDESCRIPTIONy4W†ˆE X€i€”‘€‚A€€€€€€€€€€‚ÿSoAnnoText3 has some features of SoText3 and also some of SoText2. However for the Text2 functionality, the size of the font (see SoFont) is interpreted in the current units, so the text can be zoomed, but not rotated. The current annotation property (SoAnnoText3Property) determines this choice.󺋆÷ˆ9 @€u€”‘€‚A€€ã·»9€‰€‚ÿStroke Fonts: If a stroke font is used (see SoFont), the text is rendered with lines rather than faces. Line attributes apply instead of polygon attributes. Text is not extruded./ ˆ&‰& €€‚A€‚ÿFIELDSH÷ˆn‰2 4€,€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringstringsJ&‰á‰) "€”€”‘€‚A€‚ÿThe text string(s) to display. Each string will appear on its own line.Hn‰)Š2 4€,€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatspacingïá‰B‹* "€ß€”‘€‚A€‚ÿDefines the distance (in the negative y direction) between the base points of successive strings, measured with respect to the current font height. A value of 1 indicates single spacing, a value of 2 indicates double spacing, and so on.M)Š‹2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumjustification‡]B‹* "€»€”‘€‚A€‚ÿIndicates placement and alignment of strings. With LEFT justification, the left edge of the first line is at the (transformed) origin, and all left edges are aligned. RIGHT justification is similar. CENTER justification places the center of the first string at the (transformed) origin, with the centers of all remaining strings aligned under it.0 ‹F& €€‚A€‚ÿMETHODS=ƒ, (€"€T”A‚S~‚A€ƒ‚ÿSoAnnoText3()8F») "€€”‘€‚A€‚ÿConstructor.8ƒó& €$€‚A€‚ÿACTION BEHAVIORH»;Ž2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderAction¨|óãŽ, (€ø€”‘€‚A€€‚ÿDraws text based on the current font, profiles, transformation, drawing style, material, texture, complexity, and so on.G;Ž*2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction¡oãŽË2 4€Þ€”‘€‚A€€€€‚ÿPerforms a pick on the text. The string index and character position are available from the SoTextDetail.N*%À2 4€8€”‘€‚AããS¯+€‰€‚ÿSË%ÀKoGetBoundingBoxActiona5ˆÀ, (€j€”‘€‚A€€‚ÿComputes the bounding box that encloses the text.H%ÀÎÀ2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackActionᮆÀ¯Á3 4€]€”‘€‚A€€€€‚ÿFor non-stroke fonts, if any triangle callbacks are registered with the action, they will be invoked for each successive triangle used to approximate the text geometry.Ù¯ÎÀˆÂ* "€_€”‘€‚A€‚ÿFor stroke fonts, if any line segment callbacks are registered with the action, they will be invoked for each successive line segment used to approximate the text geometry.<¯ÁÄÂ& €,€‚A€‚ÿFILE FORMAT/DEFAULT8ˆÂüÂ* $€€P„7|‚€‚ÿAnnoText3 {_.ÄÂ[Ã1 2€\€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿstring""spacing1.0justificationLEFT}1 üÂŒÃ& €€‚€‚ÿSEE ALSOi.[ÃõÃ; F€\€”‘€‚ãUBùT€‰ãéwš‰ãêwš‰‚ÿSoAnnoText3Property, SoText2, SoText3DŒÃ9Ä1ˆ ؆2Ñ…4s9ÄtÄÓSoAnnoText3Property;õÃtÄ% €,€ˆˆ€‚ÿSoAnnoText3Property*9ÄžÄ# €€€‚ÿNAME\6tÄúÄ& €l€”‘€€‚ÿSoAnnoText3Property - Annotation text property node3žÄ-Å# € €€‚ÿINHERITS FROM•HúÄÂÅM j€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoAnnoText3Property2 -ÅôÅ& €€€€ ‚ÿSYNOPSISX2ÂÅLÆ& €d€”‘€€‚ÿ#include ¿^ôÅ Éa €½€T”A‚S~‚A€ƒ€ƒ€€€€ƒ€€€€ƒ€€€€€‚ÿenum RenderPrintType{SoAnnoText3Property::RENDER3D_PRINT_VECTORText is rendered in 3D (like SoText3). It is printed (in the case of the use of PlotMaster) as vectors.SoAnnoText3Property::RENDER3D_PRINT_RASTER Text is rendered in 3D (like SoText3). It is printed (in the case of the use of PlotMaster) as raster text using PostScript fonts.SoAnnoText3Property::RENDER2D_PRINT_RASTERText is rendered in 2D (like SoText2) but can be zoomed because the font size is interpreted in the current units. It is printed (in the case of the use of PlotMaster) as raster (PostScript font).} PLÆ«ÊP n€¡€T”A‚S~‚A€ƒƒ€€ƒ€€‚ãU×S鉃‚ãØtW鉃‚ÿenum FontSizeHint{SoAnnoText3Property::ANNOTATION2D text maintains its nominal font size from any view angle.SoAnnoText3Property::FIT_VECTOR_TEXTThe font size of 2D text changes according to the view angle (it follows the projection on the screen of 3D text).}SoSFBoolisCharOrientedRasterPrintSoSFEnumfontSizeHint4 ÉßÊ& €€‚A€‚ÿDESCRIPTION q«ÊË/ .€â€”‘€‚A€€€‚ÿThis node sets the current annotation text properties in the state used by all subsequent SoAnnoText3 nodes./ ßÊ®Ë& €€‚A€‚ÿFIELDSOËýË2 4€:€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumrenderPrintTypeÞ´®ËÛÌ* "€i€”‘€‚A€‚ÿThis flag specifies how annotation text should be rendered (as 3D text or 2D text) and how it should printed when using PlotMaster (as 3D vectors or 2D PostScript raster fonts).Y'ýË4Í2 4€N€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisCharOrientedRasterPrintÞÛÌBÎ0 .€½€”‘€‚A€€€‚ÿThis flag is used when the field renderPrintType is equal to RENDER3D_PRINT_RASTER or RENDER2D_PRINT_RASTER. It specifies whether the text should be oriented (or not) for printing in the case of the use of PlotMaster.L4ÍŽÎ2 4€4€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumfontSizeHintØBΖÏ0 .€±€”‘€‚A€€€‚ÿThis flag is used when the field renderPrintType is equal to RENDER3D_PRINT_RASTER or RENDER2D_PRINT_RASTER. It specifies how the font size for 2D text (whether rendered or raster) changes according to the view.0 ŽÎÆÏ& €€‚A€‚ÿMETHODSE–Ï, (€2€T”A‚S~‚A€ƒ‚ÿSoAnnoText3PÆÏõÃroperty()8ÆÏO) "€€”‘€‚A€‚ÿConstructor.<‹& €,€‚A€‚ÿFILE FORMAT/DEFAULT@OË* $€,€P„7|‚€‚ÿAnnoText3Property {˜g‹c1 2€Î€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿRenderPrintTypeRENDER3D_PRINT_VECTORisCharOrientedRasterPrintTRUEfontSizeHintFIT_VECTOR_TEXT}1 Ë”& €€‚€‚ÿSEE ALSO?cÓ/ .€ €”‘€‚ãhË€‰‚ÿSoAnnoText3= ”1w’2؆2tD¦ISoAnnotation4ÓD% €€ˆˆ€‚ÿSoAnnotation*n# €€€‚ÿNAMEM'D»& €N€”‘€€‚ÿSoAnnotation - annotation group node3nî# € €€‚ÿINHERITS FROMÆa»´e š€Â€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãÍ\Y€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoSeparator > SoAnnotation2 îæ& €€€€ ‚ÿSYNOPSISyL´_- *€˜€”‘€€‚ãÍ\Y‰‚ÿ#include Fields from class SoSeparator:³iæJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingL#_^) "€F€”‘€‚A€‚ÿMethods from class SoAnnotation:g3Å4 8€f€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoAnnotation()static SoTypegetClassTypeId()S$^/ .€H€”‘€‚A€ãÍ\Y‰‚ÿMethods from class SoSeparator:|NÅ”. ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()O ã/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒ”Ør ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)Nã& / .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Ø¢ n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)& ú / .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ¢ _  耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHú ç @ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N_ 5/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þç lY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const45 & €€‚A€‚ÿDESCRIPTION€Pl,A0 .€¡€”‘€‚A€€€‚ÿThis group node delays rendering its children u ,AÓntil all other nodes have been traversed, turning off depth buffer comparisons first. The result is that the shapes under the annotation node are rendered on top of the rest of the scene. This node is derived from SoSeparator, so it saves and restores traversal state for all actions.tJ  B* "€•€”‘€‚A€‚ÿNote that if more than one annotation node is present in a graph, the order in which they are traversed determines the stacking order - later nodes are rendered on top of earlier ones. Also note that since depth buffer comparisons are disabled, complex 3D objects may not be rendered correctly when used under annotation nodes.zP,AE* "€¡€”‘€‚A€‚ÿAlso note that the annotation node does nothing special when picking along a ray. That is, it does not modify the sorting order of intersected objects based on which ones are under annotation nodes. If your application uses annotation nodes and you want to ensure that objects under them are picked "in front of" other objects, you can tell the pick action that you want to pick all objects along the ray and then scan through the paths in the resulting picked point instances to see if any of them passes through an annotation node. Your program can then decide what to do in such a case.0  BJE& €€‚A€‚ÿMETHODS>EˆE, (€$€T”A‚S~‚A€ƒ‚ÿSoAnnotation()]4JEåE) "€h€”‘€‚A€‚ÿCreates an annotation node with default settings.U#ˆE:F2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*åEF) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8:FÅF& €$€‚A€‚ÿACTION BEHAVIORHF G2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderAction¤xÅF±G, (€ð€”‘€‚A€€‚ÿDelays rendering its children until all other nodes have been traversed, turning off depth buffer comparisons first.´j GeHJ d€Ô€”‘€‚Aã³DfL€‰ããS¯+‰ã¹_ØS‰ãɓ℉ãòÓ}ª‰€‚ÿSoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoRayPickAction, SoSearchActionC±G¨H, (€.€”‘€‚A€€‚ÿSame as SoSeparator@eHèH) "€.€‚A€€ ‚ÿFILE FORMAT/DEFAULT9¨H!I* $€€P„7|‚€‚ÿAnnotation {…SèH¦I2 4€¦€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTO}= !IãI13‚3™€5uãIJvÁSoAntiSquish4¦IJ% €€ˆˆ€‚ÿSoAntiSquish*ãIAJ# €€€‚ÿNAMEmGJ®J& €Ž€”‘€€‚ÿSoAntiSquish - transformation node that undoes non-uniform 3D scales3AJáJ# € €€‚ÿINHERITS FROM±X®J’KY ‚€°€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoAntiSquish2 áJÄK& €€€€ ‚ÿSYNOPSISQ+’KL& €V€”‘€€‚ÿ#include ñ~ÄKOs ´€ý€T”A‚S~‚A€ƒ€ƒ€€€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Sizing{SoAntiSquish::XFits the other two axes to match the X axis, whose size is unchangedSoAntiSquish::YFits the other two axes to match the Y axis, whose size is unchangedSoAntiSquish::ZFits the other two axes to match the Z axis, whose size is unchangedSoAntiSquish::AVERAGE_DIMENSIONUses average of 3 scales in the matrixSoAntiSquish::BIGGEST_DIMENSIONUses biggest of 3 scales in the matrixSoAntiSquish::SMALLEST_DIMENSIONUses smallest of 3 scales in the matrixSoAntiSquish::LONGEST_DIAGONALAccounts for shearing; transforms a cube by the matrix and then uses length of longest diagonal}K"LQO) "€D€”‘€‚A€‚ÿFields from class SoAntiSquish:f,O·O: D€X€T”A‚S~‚AãØtW选ƒ‚ãU×S鉃‚ÿSoSFEnumsizingSoSFBoolrecalcAlwaysL#QO€) "€F€”‘€‚A€‚ÿMethods from class SoAntiSquish·O€¦I:wA·O†€6 <€‚€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒ‚ÿSoAntiSquish()static SoTypegetClassTypeId()voidrecalc()N€Ô€/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|†€P‚n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ô€¨‚/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØP‚ … 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¨‚•…@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N …ã…/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ•…‡Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ã…N‡& €€‚A€‚ÿDESCRIPTION.þ‡|ˆ0 .€ý€”‘€‚A€€€‚ÿThis node removes nonuniform 3D scaling from the current transformation matrix when traversed by an action. It is used by draggers such as the SoTrackballDragger that need to stay uniformly scaled no matter where they are located in the scene graph.Ù¯N‡U‰* "€_€”‘€‚A€‚ÿThe magnitude of the new scale is determined by the current transformation matrix and the sizing field. This node does not change the translation or rotation in the matrix./ |ˆ„‰& €€‚A€‚ÿFIELDSFU‰ʉ2 4€(€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumsizing¼’„‰†Š* "€%€”‘€‚A€‚ÿDetermines which of the algorithms enumerated by the type Sizing will be used to select the new scale when the x,y, and z scales are not equal.LʉÒŠ2 4€4€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolrecalcAlways罆Š¹‹* "€{€”‘€‚A€‚ÿIf recalcAlways is TRUE, this node calculates its unsquishing matrix every time it is traversed. If FALSE, then this only occurs during the first traversal folllowing a call to recalc().0 ÒŠé‹& €€‚A€‚ÿMETHODS>¹‹'Œ, (€$€T”A‚S~‚A€ƒ‚ÿSoAntiSquish()^5é‹…Œ) "€j€”‘€‚A€‚ÿCreates an anti-squish node with default settings.U#'ŒÚŒ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*…Œ-) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<ÚŒi, (€ €T”A‚S~‚A€ƒ‚ÿvoidrecalc()g-ù) "€Î€”‘€‚A€‚ÿSets a flag so that the next time the node is traversed, it will recalculate its unsquishing matrix.8i1Ž& €$€‚A€‚ÿACTION BEHAVIOR¶lùçŽJ d€Ø€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ã¹_ØS‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoRayPickAction„X1Žk, (€°€”‘€‚A€€‚ÿAppends the current transformation with a new matrix to create an unsquished result.<玧& €,€‚A€‚ÿFILE FORMAT/DEFAULT9kà* $€€P„7|‚€‚ÿAntiSquish {_0§KÀ/ .€`€P„àKÀ¦I|‚€ƒ‚ƒ‚‚‚ÿsizingAVERAGE_DIMENSIONrecalcAlwaysTRUE}1 à|À& €€‚€‚ÿSEE ALSOúŽKÀvÁl ¦€€”‘€‚ãÌrŠâ€‰€ã±—o›€‰€ãÂmG €‰€ãw`Ëꀉ€ã¥W7ž€‰€ã¡è˜*€‰‚ÿSoCenterballDragger, SoJackDragger, SoTrackballDragger, SoTransformerDragger, SoTransformation, SoTransformBoxDragger@|À¶Á1)Ñ…4–ƒ6v¶ÁíÁjJSoAppearanceKit7vÁíÁ% €$€ˆˆ€‚ÿSoAppearanceKit*¶ÁÂ# €€€‚ÿNAMES-íÁjÂ& €Z€”‘€€‚ÿSoAppearanceKit - appearance nodekit class3ÂÂ# € €€‚ÿINHERITS FROM­TjÂJÃY ‚€¨€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoAppearanceKit2 Â|Ã& €€€€ ‚ÿSYNOPSISzSJÃöÃ' €¦€”‘€€‚‚ÿ#include Parts from class SoAppearanceKit:²|à Åc ”€e€T”A‚S~‚A€ãg!à‚‰ƒ‚ãN„h‰ƒ‚ãy‚2‰ƒ‚ãOjnĉƒ‚ãžvšN‰ƒ‚ãÿÓ>щƒ‚ã·»9‰ƒ‚ÿ(SoLightModel)lightModel(SoEnvironment)environment(SoDrawStyle)drawStyle(SoMaterial)material(SoComplexity)complexity(SoTexture2)texture2(SoFont)fontO öÃZÅ/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W% űÅ2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListW(ZÅÆ/ .€P€”‘€‚A€ãNw¶°‰‚ÿMethods from class SoAppearanceKit:³w±Å»Æ< H€î€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoAppearanceKit()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"Æ Ç/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°»ÆLÉ î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿} Ç ÊB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)NLÉYÊ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:| ÊÕËn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)YÊ-Ì/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®ÕË`Î… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH-ÌèÎ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N`Î6Ï/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞèÎyY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBool6ÏyvÁisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!6ÏÉ/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)y, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+Éu, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4©& €€‚A€‚ÿDESCRIPTIONÏ™ux6 :€3€”‘€‚A€€€€€‚ÿThe SoAppearanceKit is used to create a group of property nodes that will be used to affect subsequent shape nodes or nodekits in the scene graph./Ï©§` Ž€Ÿ€”‘€‚A€€€€€€€€€€€€€€€€€€€‚ÿThis nodekit defines seven new parts: lightModel, environment, drawStyle, material, complexity, texture2, and font. Note that it does not include binding nodes such as SoMaterialBinding.¯wxV8 @€î€”‘€‚A€€€€€€‚ÿSoAppearanceKit is derived from SoBaseKit and thus also includes a callbackList part for adding callback nodes..§„& €€‚A€‚ÿPARTSPVÔ2 4€<€T”A‚S~‚A€ãg!à‚‰ƒ‚ÿ(SoLightModel)lightModel«|„/ .€ø€”‘€‚A€€€‚ÿAn SoLightModel node that affects any shapes that follow this nodekit in the scene graph. This part is NULL by default.R ÔÑ2 4€@€T”A‚S~‚A€ãN„h‰ƒ‚ÿ(SoEnvironment)environment«||/ .€ø€”‘€‚A€€€‚ÿAn SoEnvironment node that affects any nodes that follow this nodekit in the scene graph. This part is NULL by default.NÑÊ2 4€8€T”A‚S~‚A€ãy‚2‰ƒ‚ÿ(SoDrawStyle)drawStyleª{|t/ .€ö€”‘€‚A€€€‚ÿAn SoDrawStyle node that affects any shapes that follow this nodekit in the scene graph. This part is NULL by default.LÊÀ2 4€4€T”A‚S~‚A€ãOjnĉƒ‚ÿ(SoMaterial)material©zti/ .€ô€”‘€‚A€€€‚ÿAn SoMaterial node that affects any shapes that follow this nodekit in the scene graph. This part is NULL by default.PÀ¹2 4€<€T”A‚S~‚A€ãžvšN‰ƒ‚ÿ(SoComplexity)complexity«|id / .€ø€”‘€‚A€€€‚ÿAn SoComplexity node that affects any shapes that follow this nodekit in the scene graph. This part is NULL by default.L¹° 2 4€4€T”A‚S~‚A€ãÿÓ>щƒ‚ÿ(SoTexture2)texture2©zd Y / .€ô€”‘€‚A€€€‚ÿAn SoTexture2 node that affects any shapes that follow this nodekit in the scene graph. This part is NULL by default.D°  2 4€$€T”A‚S~‚A€ã·»9‰ƒ‚ÿ(SoFont)font©zY F / .€ô€”‘€‚A€€€‚ÿAn SoFont node that affects any text nodes that follow this nodekit in the scene graph. This part is NULL by default.0 v & €€‚A€‚ÿMETHODSAF · , (€*€T”A‚S~‚A€ƒ‚ÿSoAppearanceKit()8v ï ) "€€”‘€‚A€‚ÿConstructor.uC· d 2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const_0ï à / .€`€”‘€‚A€€€‚ÿReturns the SoNodekitCatalog for this classU#d  2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*à k ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6 ¡ & € €‚A€‚ÿCATALOG PARTS7 k Ø * $€€”‘€‚‰€ƒ‚ÿAll Parts˜¡ p~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/Ø /#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2p @#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes/ @vÁ»+/Ç@#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿlightModelLightModel--yes½- @„A#ð€ZÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€>€ÿ€@€€€‚ÿ€L€€€‚ÿÿÿenvironmentEnvironment--yes¹)Ç@=B#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿdrawStyleDrawStyle--yes·'„AôB#ð€NÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€2€ÿ€4€€€‚ÿ€@€€€‚ÿÿÿmaterialMaterial--yes»+=B¯C#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿcomplexityComplexity--yes·'ôBfD#ð€NÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€2€ÿ€4€€€‚ÿ€@€€€‚ÿÿÿtexture2Texture2--yes¯¯CE#ð€>ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€"€ÿ€$€€€‚ÿ€0€€€‚ÿÿÿfontFont--yes,fDAE' € €€‚€‚ÿa6E¢E+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’1AE4Fa#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8¢EÍFa#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback?4F G' €0€€‚€‚ÿFILE FORMAT/DEFAULT<ÍFHG* $€$€P„7|‚€‚ÿAppearanceKit {¸} GH; F€ú€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿcallbackListNULLlightModelNULLenvironmentNULLdrawStyleNULLmaterialNULLcomplexityNULLtexture2NULLfontNULL}-HG-H& €€‚€‚ÿNOTEGH¬H8 @€Ž€”‘€‚€€€€€€‚ÿNote that SoSeparatorKit includes an SoAppearanceKit as a part.1 -HÝH& €€‚€‚ÿSEE ALSOÙ¬HjJ´ 6³€”‘€‚ãib€‰€ãásÆú€‰€ã€ÀÏ€‰€ã0d$€‰€ã•£&ô€‰€ã½á–€‰€ã}选€ãõˆ¨f€‰€ã’o>€ãOËr€‰€ãЃ'€‰€ã°çT€‰‚ÿSoBaseKit, SoCameraKit, SoLightKit, SoNodeKit, SoNodeKitDetail, SoNodeKitListPart, SoNodeKitPath, SoNodekitCatalog, SoSceneKit, SoSeparatorKit, SoShapeKit, SoWrapperKit8ÝH¢J1%™€5Ø‚7w¢JÑJÇÅSoArray/ jJÑJ% €€ˆˆ€‚ÿSoArray*¢JûJ# €€€‚ÿNAMEzTÑJuK& €¨€”‘€€‚ÿSoArray - group node that creates a regular IxJxK array of copies of its children3ûJ¨K# € €€‚ÿINHERITS FROM£JuKKLY ‚€”€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoArray2 ¨K}L& €€€€ ‚ÿSYNOPSISL&KLÉL& €L€”‘€€‚ÿ#include ›L}LdNO l€™€T”A‚S~‚A€ƒ€ƒ€€€€ƒ€€ƒ€‚ÿenum Origin{SoArray::FIRSTFirst copy is rendered at the current local origin; all other copies are distributed relative to itSoArray::CENTERCopies are distributed relative to the center of the arraySoArray::LASTLast copy is rendered at the current local origin; all other copies are distributed relative to it}FÉLªN) "€:€”‘€‚A€‚ÿFields from class SoArray: §dN´Oc ”€O€T”A‚S~‚Aã)„ƒ4€‰ƒ‚ã)„ƒ4‰ƒ‚ã)„ƒ4‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ãØtW鉃‚ÿSoSFShortnumElements1SoSFShortnumElements2SoSFShortnumElements3SoSFVec3fseparation1SoSFVec3fseparation2SoSFVec3fseparation3SoSFEnumoriginGªN €) "€<€”‘€‚A€‚ÿMethods from class SoArray:´O €jJb.´On€4 8€\€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoArray()static SoTypegetClassTypeId()O €½€/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒn€²‚r ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)N½€ƒ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|²‚|„n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ƒÔ„/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ|„9‡ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÔ„Á‡@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N9‡ˆ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÁ‡F‰Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ˆz‰& €€‚A€‚ÿDESCRIPTION9F‰³Š* "€€”‘€‚A€‚ÿThis group node traverses its children, in order, several times, creating a regular 3D array of copies of them. The number of copies in each of the three directions is specified by fields, as are the vectors used to separate the copies in each of the three dimensions.‚Lz‰5Œ6 :€™€”‘€‚A€€€€€‚ÿFor example, an SoArray node can be used to create a 2x3x4 array of copies of its children, where the separation vectors between adjacent copies in the three array dimensions are (1,2,3), (-4,-5,-6), and (7,8,9), respectively. The base point of the array can be set to one of several values, as described in the origin field.`*³Š•6 :€U€”‘€‚A€€€€€‚ÿCopies are traversed so that the first dimension cycles most quickly, followed by the second, and then the third. This order is important because SoArray sets the current switch value to N before traversing the children for the Nth time (for use with inherited switch values - see SoSwitch)./ 5ŒÄ& €€‚A€‚ÿFIELDSM•SŽB T€š€T”A‚S~‚Aã)„ƒ4€‰ƒ‚ã)„ƒ4‰ƒ‚ã)„ƒ4‰ƒ‚ÿSoSFShortnumElements1SoSFShortnumElements2SoSFShortnumElements3e<ĸŽ) "€x€”‘€‚A€‚ÿNumber of elements in each of the three array dimensions.ŒJSŽDB T€”€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fseparation1SoSFVec3fseparation2SoSFVec3fseparation3d;¸Ž¨) "€v€”‘€‚A€‚ÿSeparation vector in each of the three array dimensions.FD À2 4€(€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumorigin¨ ÀjJe<¨qÀ) "€x€”‘€‚A€‚ÿDefines the base point from which copies are distributed.0 À¡À& €€‚A€‚ÿMETHODS9 qÀÚÀ, (€€T”A‚S~‚A€ƒ‚ÿSoArray()X/¡À2Á) "€^€”‘€‚A€‚ÿCreates an array node with default settings.U#ÚÀ‡Á2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*2ÁÚÁ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8‡ÁÂ& €$€‚A€‚ÿACTION BEHAVIOR›WÚÁ­ÂD X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActionšnÂGÃ, (€Ü€”‘€‚A€€‚ÿTraverses all children for each array element, saving and restoring state before and after each traversal.F­ÂÃ2 4€(€”‘€‚AãòÓ}ª€‰€‚ÿSoSearchAction]GÃÄ2 4€º€”‘€‚A€€€€‚ÿTraverses all children once, setting the inherited switch value to SO_SWITCH_ALL first.<ÃXÄ& €,€‚A€‚ÿFILE FORMAT/DEFAULT4 ÄŒÄ* $€€P„7|‚€‚ÿArray {®uXÄ:Å9 B€ê€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿnumElements11numElements21numElements31separation11 0 0separation20 1 0separation30 0 1originFIRST}1 ŒÄkÅ& €€‚€‚ÿSEE ALSO\!:ÅÇÅ; F€B€”‘€‚ã™ü ;€‰€ã0MÓ쀉‚ÿSoMultipleCopy, SoSwitch< kÅÆ1“–ƒ6•€8xÆ6ƇASoAsciiText3ÇÅ6Æ% €€ˆˆ€‚ÿSoAsciiText*Æ`Æ# €€€‚ÿNAMEP*6Æ°Æ& €T€”‘€€‚ÿSoAsciiText - simple 3D text shape node3`ÆãÆ# € €€‚ÿINHERITS FROM§N°ÆŠÇY ‚€œ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoAsciiText2 ãƼÇ& €€€€ ‚ÿSYNOPSISP*ŠÇ È& €T€”‘€€‚ÿ#include ˼Ç ÉI `€—€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum Justification{SoAsciiText::LEFTLeft edges of all strings are alignedSoAsciiText::RIGHTRight edges of all strings are alignedSoAsciiText::CENTERCenters of all strings are aligned}J! ÈjÉ) "€B€”‘€‚A€‚ÿFields from class SoAsciiText:ŸU É ÊJ d€ª€T”A‚S~‚Aã*{£€‰ƒ‚ã0â1‰ƒ‚ãØtW鉃‚ã'0]‰ƒ‚ÿSoMFStringstringSoSFFloatspacingSoSFEnumjustificationSoMFFloatwidthK"jÉTÊ) "€D€”‘€‚A€‚ÿMethods from class SoAsciiText:f2 ʺÊ4 8€d€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoAsciiText()static SoTypegetClassTypeId()NTÊË/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ºÊ„Ìn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ËÜÌ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ„ÌAÏ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÜÌÉÏ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NAÏ#/ .€>€”‘€‚A€ã}9‰‚ÿMethodsÉÏ#ÇÅ from class SoBase:7ÞÉÏZY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4#Ž& €€‚A€‚ÿDESCRIPTIONéZ­6 :€Ó€”‘€‚A€€€€€‚ÿThis node defines one or more strings of 3D text. In contrast with SoText2, 3D text can be rotated, scaled, lighted, and textured, just like all other 3D shapes. In contrast with SoText3, this 3D ascii text cannot be extruded.öÀŽ£6 :€€”‘€‚A€€€€€‚ÿThe text origin is at (0,0,0) after applying the current transformation. The scale of the text is affected by the size field of the current SoFont as well as the current transformation.ÿÒ­¢- (€¥€”‘€‚A€€‚ÿSoAsciiText uses the current material when rendering. Textures are applied to ascii text as follows. On the front face of the text, the texture origin is at the base point of the first string; the base point is at the lower left for justification LEFT, at the lower right for RIGHT, and at the lower center for CENTER. The texture is scaled equally in both S and T dimensions, with the font height representing 1 unit. S increases to the right on the front face./ £Ñ& €€‚A€‚ÿFIELDSH¢2 4€,€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringstringsJÑŒ) "€”€”‘€‚A€‚ÿThe text string(s) to display. Each string will appear on its own line.HÔ2 4€,€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatspacingïŒí* "€ß€”‘€‚A€‚ÿDefines the distance (in the negative y direction) between the base points of successive strings, measured with respect to the current font height. A value of 1 indicates single spacing, a value of 2 indicates double spacing, and so on.MÔ:2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumjustification‡]íÁ * "€»€”‘€‚A€‚ÿIndicates placement and alignment of strings. With LEFT justification, the left edge of the first line is at the (transformed) origin, and all left edges are aligned. RIGHT justification is similar. CENTER justification places the center of the first string at the (transformed) origin, with the centers of all remaining strings aligned under it.F: 2 4€(€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatwidthfÁ – ) "€Ì€”‘€‚A€‚ÿDefines the width of each text string. Each string will be scaled so that it spans this many units.0  Æ & €€‚A€‚ÿMETHODS=–  , (€"€T”A‚S~‚A€ƒ‚ÿSoAsciiText()]4Æ ` ) "€h€”‘€‚A€‚ÿCreates an ascii text node with default settings.U# µ 2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*`  ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8µ @ & €$€‚A€‚ÿACTION BEHAVIORH ˆ 2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionžr@ & , (€ä€”‘€‚A€€‚ÿDraws text based on the current font, transformation, drawing style, material, texture, complexity, and so on.Gˆ m 2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction¡o& 2 4€Þ€”‘€‚A€€€€‚ÿPerforms a pick on the text. The string index and character position are available from the SoTextDetail.Nm \2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActiona5½, (€j€”‘€‚A€€‚ÿComputes the bounding box that encloses the text.H\2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackActionÖ½È- (€-€”‘€‚A€€‚ÿIf any triangle callbacks are registered with the action, they will be invoked for each successive triangle used to approximate the text geometry.<@& €,€‚A€‚ÿFILE FORMAT/DEFAUÈ@ÇÅLT8ÈH@* $€€P„7|‚€‚ÿAsciiText {g4@¯@3 6€h€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿstring""spacing1justificationLEFTwidth0}1 H@à@& €€‚€‚ÿSEE ALSO§H¯@‡A_ Ž€€”‘€‚ã·»9€‰€ãv‹}€‰€ãéwš€‰€ãêwš€‰€㢽?·€‰‚ÿSoFont, SoFontStyle, SoText2, SoText3, SoTextDetail7à@¾A1/Ø‚7¶9y¾AìA߆SoBase. ‡AìA% €€ˆˆ€‚ÿSoBase*¾AB# €€€‚ÿNAME^8ìAtB& €p€”‘€€‚ÿSoBase - base class for all nodes, paths, and engines3B§B# € €€‚ÿINHERITS FROM3 tBÚB) "€€”‘€€€‚ÿSoBase2 §B C& €€€€ ‚ÿSYNOPSISf?ÚBrC' €~€”‘€€‚‚ÿ#include Methods from class SoBase:ú ClE{ Ä€ÿ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ã¸>Ó‰ãúß~6‰‚ãüêëN‰ãúß~6‰‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()static SoTypegetClassTypeId()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() conststatic SoVRMLPROTODef* getPROTO(SbName &protoName)static SoVRMLEXTERNPROTODef* getEXTERNPROTO(SbName &externprotoName)4rC E& €€‚A€‚ÿDESCRIPTION³‰lESF* "€€”‘€‚A€‚ÿAbstract base class for Open Inventor node, path, and engine classes. This class handles reference counting, notification, and naming.0  EƒF& €€‚A€‚ÿMETHODSk;SFîF0 0€v€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constòƒFàI0 .€…€”‘€‚A€€€‚ÿAdds and removes a reference to an instance. Instances should be referenced when they will be used outside of the routine in which they were initialized. (A typical example of this is maintaining a pointer to the root of a graph.) Whenever the reference count for an instance is decremented to 0, the instance is automatically destroyed by the database (unless unrefNoDelete() is used to unref it). The reference count of a node is automatically incremented when the node is added as a child of another node or when a path points to the node. Likewise, the reference count is automatically decremented when the node is removed as a child or when a path that points to the node is changed or destroyed.JîF*K3 4€/€”‘€‚A€€€€‚ÿunrefNoDelete() should be called when it is desired to decrement the reference count, but not delete the instance if this brings the reference count to zero. This is most useful in returning an object to a zero-reference-count state, like it was when it was created by new.;àIeK, (€€T”A‚S~‚A€ƒ‚ÿvoidtouch()ôÊ*KYL* "€•€”‘€‚A€‚ÿMarks an instance as modified, simulating a change to it. This will notify auditors (parent nodes, connected engines, and so on) of a change to this object and cause attached sensors to be triggered.U#eK®L2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*YLM) "€T€”‘€‚A€‚ÿReturns type identifier for this class.O#®LPM, (€F€T”A‚S~‚A€ƒ‚ÿvirtual SoTypegetTypeId() const`7M°M) "€n€”‘€‚A€‚ÿReturns the type identifier for a specific instance.a)PMN8 @€R€T”A‚S~‚A㑶p6€‰ƒãB-9‰‚ÿSbBoolisOfType(SoType type) const±‡°MÂN* "€€”‘€‚A€‚ÿReturns TRUE if this object is of the type specified in type or is derived from that type. Otherwise, it returns FALSE. For example,W/NO( €^€Ù€‚A€‚ÿnodePtr->isOfType(SoGroup::getClassTypeId())+ÂNDO( €€Ù€‚A€‚ÿPOÃO/ .€ €”‘€‚A€€€‚ÿreturns TRUE if nodePtr is an instance of SoGroup or one of its subclasses._-DO.€2 4€Z€T”A‚S~‚A€ƒãúß~6‰‚ÿvirtual voÃO.€‡AidsetName(const SbName &name)SÃO½‚< F€§€”‘€‚A€€€€€€€‚ÿSets the name of an instance. Object names are preserved when objects are written to or read from files. Object names must not begin with a digit, and must not contain spaces or control characters, periods, single or double quote characters, backslashes, curly braces or the plus character. The isBaseNameChar() and isBaseNameStartChar() methods of SbName can be used to validate names input by users. This method will replace any bad characters in the name with underscore characters, and will print out an error message if the application is using the Open Inventor debugging library.U#.€ƒ2 4€F€T”A‚S~‚A€ãúß~6‰ƒ‚ÿvirtual SbNamegetName() constÔ½‚.„H ^€©€”‘€‚A€€€€€€€€€€€‚ÿReturns the name of an instance. If the instance has not been named, an empty SbName is returned. Objects that are named can be looked up using the getByName() methods of SoNode, SoEngine, or SoPath.p9ƒž„7 >€r€T”A‚S~‚A€ã¸>Ó‰ãúß~6‰‚ÿstatic SoVRMLPROTODef* getPROTO(SbName &protoName)qH.„…) "€€”‘€‚A€‚ÿReturns a pointer to the definition for the prototype node protoName.‚Kž„‘…7 >€–€T”A‚S~‚A€ãüêëN‰ãúß~6‰‚ÿstatic SoVRMLEXTERNPROTODef* getEXTERNPROTO(SbName &externprotoName)yP… †) "€ €”‘€‚A€‚ÿReturns a pointer to the definition for the externproto node externprotoName.1 ‘…;†& €€‚A€‚ÿSEE ALSO¤E †߆_ Ž€Š€”‘€‚Aã¿\%†€‰€ã’n%9€‰€ãMy'9€‰€ãú­Np€‰€ãnY+€‰‚ÿSoFieldContainer, SoNode, SoPath, SoEngine, SoDB< ;†‡1Ç•€8{‚9z‡N‡^ÆSoBaseColor3߆N‡% €€ˆˆ€‚ÿSoBaseColor*‡x‡# €€€‚ÿNAME_9N‡ׇ& €r€”‘€€‚ÿSoBaseColor - node that defines an object's base color3x‡ ˆ# € €€‚ÿINHERITS FROM@ׇ—ˆM j€€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseColor2 ˆɈ& €€€€ ‚ÿSYNOPSISpI—ˆ9‰' €’€”‘€€‚‚ÿ#include Fields from class SoBaseColor:DɈ}‰2 4€$€T”A‚S~‚Aãz.—\€‰ƒ‚ÿSoMFColorrgbK"9‰ȉ) "€D€”‘€‚A€‚ÿMethods from class SoBaseColor:f2}‰.Š4 8€d€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoBaseColor()static SoTypegetClassTypeId()Nȉ|Š/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|.Šø‹n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)|ŠPŒ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØø‹µŽ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHPŒ=@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NµŽ‹/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ=ÎÀY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() con‹ÎÀ߆stvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4‹Á& €€‚A€‚ÿDESCRIPTIONØÎÀ Â0 .€±€”‘€‚A€€€‚ÿThis node defines the base color (or colors) of subsequent shape nodes in the scene graph. SoBaseColor sets only the diffuse color(s) of the current material and has no effect on the material's other attributes./ Á9Â& €€‚A€‚ÿFIELDSD Â}Â2 4€$€T”A‚S~‚Aãz.—\€‰ƒ‚ÿSoMFColorrgb99¶Â) "€ €”‘€‚A€‚ÿRGB color(s).0 }ÂæÂ& €€‚A€‚ÿMETHODS=¶Â#Ã, (€"€T”A‚S~‚A€ƒ‚ÿSoBaseColor()\3æÂÃ) "€f€”‘€‚A€‚ÿCreates a base color node with default settings.U##ÃÔÃ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Ã'Ä) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ÔÃ_Ä& €$€‚A€‚ÿACTION BEHAVIORb*'ÄÁÄ8 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackActionY-_ÄÅ, (€Z€”‘€‚A€€‚ÿSets the current base color in the state.<ÁÄVÅ& €,€‚A€‚ÿFILE FORMAT/DEFAULT8ÅŽÅ* $€€P„7|‚€‚ÿBaseColor {BVÅÐÅ- *€*€P„|‚€ƒ‚‚‚ÿrgb0.8 0.8 0.8}1 ŽÅÆ& €€‚€‚ÿSEE ALSO]"ÐÅ^Æ; F€D€”‘€‚ãOjnÄ€‰€ã;Û €‰‚ÿSoMaterial, SoPackedColor: ƘÆ1Ég¶9…<{˜ÆÉƬJSoBaseKit1 ^ÆÉÆ% €€ˆˆ€‚ÿSoBaseKit*˜ÆóÆ# €€€‚ÿNAMEQ+ÉÆDÇ& €V€”‘€€‚ÿSoBaseKit - base class for all node kits3óÆwÇ# € €€‚ÿINHERITS FROM‹>DÇÈM j€|€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit2 wÇ4È& €€€€ ‚ÿSYNOPSISnGÈ¢È' €Ž€”‘€€‚‚ÿ#include Parts from class SoBaseKit:W%4ÈùÈ2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListI ¢ÈBÉ) "€@€”‘€‚A€‚ÿMethods from class SoBaseKit:XÍùȚˋ 䀛€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒ‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚ÿSoBaseKit()static const SoNodekitCatalog *getClassNodekitCatalog() constvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)!ÍBÉ»ÌT v€›€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ãB-9‰ƒ‚ÿSbBoolset(char *partName,char *parameters)SbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)static SoTypegetClassTypeId()NšË Í/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|»Ì…În ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X) ÍÝÎ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®…Î… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainÝÎ^Æer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÝΤ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nò/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¤)Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constHòq) "€>€”‘€‚A€‚ÿMacros from class SoBaseKit:U))Æ, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+q, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4ÆQ& €€‚A€‚ÿDESCRIPTIONyIÊ0 .€“€”‘€‚A€€€‚ÿThis is the base class from which all nodekit nodes are derived. Nodekits provide a convenient mechanism for creating groups of scene graph nodes with some larger meaning. When you create a shape node such as an indexed face set, for example, you almost always precede it with a coordinate node. You may also want to add a transform node or specify properties with material, drawing style, material binding, etc. Instead of creating each of these nodes individually and then arranging them into a subgraph, you can use a nodekit of the appropriate type (in this case, SoShapeKit).$ÐQîT v€¡€”‘€‚A€€€€€€€€€€€€€€€‚ÿEach class of nodekit has a nodekit catalog (SoNodekitCatalog) that describes the nodes in the subgraph, referred to as parts. The catalog has an entry for each part, with information such as the partName, partType, and nullByDefault (if FALSE the constructor creates it). The catalog also describes the arrangement of parts in the subgraph. (Other information is described below; a complete description is in the SoNodekitCatalog reference page.)+ãÊ H ^€Ç€”‘€‚A€€€€€€€€€€€‚ÿIf we regard the scene graph arrangement as a branching tree, then the top node (root) of the arrangement is always the nodekit itself. The leaf nodes are those at the bottom (containing no children). Some leaves of the tree are defined in the catalog to be public parts, while other leaves are private. All non-leaf parts are considered internal to the nodekit structure and are marked private. Public parts are accessible; they may be requested, changed, or set by the programmer with member functions such as getPart(). Private parts are not accessible, so methods such as getPart() will have no effect on them. For example, if you call getPart() to retrieve a private part, NULL will be returned even when the part exists.Å•îÞ0 .€+€”‘€‚A€€€‚ÿEvery nodekit reference page has a Parts section describing the function of each public part it adds to those inherited from its parent class. Also, a Catalog Parts section has tables of often-needed information from the catalog (part type, etc.). These tables include all public parts, both new and inherited. Only the public parts of a nodekit are described in the reference pages. Nodekits take care of the rest for you; they automatically arrange the subgraph, creating and deleting the private parts when necessary. (The SoNodekitCatalog reference page has methods for finding out the part names and arrangement of all parts, both public and private.)Ά ¸@H ^€ €”‘€‚A€€€€€€€€€€€‚ÿThe nodekit catalog is a template shared by all instances of a class. They use the shared catalog as a guide when creating parts (i.e., constructing actual nodes), but each instance stores its own parts separately. Þ¸@^ÆMoreover, nodekits are not SoGroup nodes, and parts are added as hidden children; you can only access parts with the methods of SoBaseKit and its derived classes.ÔÞÎAB R€©€”‘€‚A€€€€€€€€€‚ÿAny public part may be retrieved with getPart(), installed with setPart(), or removed by giving a NULL argument to setPart(). Paths from the nodekit down to a part can be created by createPathToPart().7 ¸@C* "€€”‘€‚A€‚ÿBy default, parts are not created until the user requests or sets them. This keeps the subgraph uncluttered and efficient for traversal. Additionally, removing a part (setting it to NULL) has the extra effect of removing any internal parts that are no longer needed.°hÎAµDH ^€Ñ€”‘€‚A€€€€€€€€€€€‚ÿSince nodekits hide their children, any SoPath containing nodekits will end at the topmost nodekit. However, since nodekits may be nested within other nodekits, you may wish to cast an (SoPath *) into an (SoNodeKitPath *). The methods of SoNodeKitPath allow you to view all nodekits that lie on the path (see the reference page for SoNodeKitPath).kBC E) "€„€”‘€‚A€‚ÿPublic parts in the nodekit catalog fall into three categories:EµDeE/ .€,€”‘€‚A€€€‚ÿ[1] regular nodesªk EG? L€×€”‘€‚A€€€€€€€€‚ÿ[2] nodekits, or nested nodekits (which may nest recursively). Any node which is public in a nested nodekit is accessible to the higher level nodekit(s) that contains it. The description of getPart() below shows how to refer to nested parts by name (e.g., "appearance.material"). This works for any nodekit method that takes a part name for an argument.};eEŒHB R€w€”‘€‚A€€€€€€€€€‚ÿ[3] lists, or list parts. These parts group together children (list elements) of a particular type or types. As with nested nodekits, you can refer to individual elements using notation described in getPart() (e.g., "childList[0]", or if the list elements are in turn nodekits, "childList[2].transform").½KGILr ²€—€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿWhen the catalog denotes that a part is a list, the part itself is always a node of type SoNodeKitListPart. The catalog specifies a set of permissible listItemTypes and a listContainerType for that part. It gives this information to the SoNodeKitListPart when it creates it. From then on, the list part will enforce type checking. So even if you retrieve the SoNodeKitListPart with getPart(), you will not be able to add illegal children. (See the SoNodeKitListPart reference page for more information). As an example, the callbackList part of SoBaseKit has an SoSeparator container and allows only SoCallback and SoEventCallback nodes in the list. Children may be added, retrieved, and removed from an SoNodeKitListPart node using methods that parallel those of SoGroup. However, type-checking is strictly enforced.!ÙŒHjNH ^€³€”‘€‚A€€€€€€€€€€€‚ÿNote that, although all public parts are leaves in the nodekit catalog, you are free to add children to them (assuming that they are groups, nodekits, or list parts). A part's status as a leaf in the catalog just means that the nodekit will not manage the part's children. For example, SoWrapperKit has a part called contents with a part type of SoSeparator. You can put whatever you want underneath the separator, as long as contents itself is an SoSeparator.”kILþN) "€Ö€”‘€‚A€‚ÿThus, a nodekit only controls a section of the scene graph. Above and below that section, anything goes.jN‚x ¾€€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿHowever, when nodekits are nested, they effectively create a larger `known' section of the scene graph. For example, the appearance parþN‚^Æt of the SoSeparatorKit is a leaf node in the SoSeparatorKit catalog. But appearance is in turn an SoAppearanceKit, containing parts such as material and drawStyle. The two nodekits combine to make an even larger template, which the SoSeparatorKit can examine by looking at the catalogs for both classes. So an SoSeparatorKit can successfully return a part named "material"; first it finds (or creates) the appearance part, then it gets the material by calling getPart() on the appearance.“QþN¢ƒB R€£€”‘€‚A€€€€€€€€€‚ÿWhen the catalog defines the listItemTypes of a list part to be nodekits, the name-able space expands further. For example, SoSeparatorKit has a part childList which permits only SoSeparatorKits, so each list element can be further searched. Hence the name "childList[0].childList[1].childList[2].material" is perfectly legal..‚Ѓ& €€‚A€‚ÿPARTSW%¢ƒ'„2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListŽFЃµ…H ^€€”‘€‚A€€€€€€€€€€€‚ÿThis is the only part that the base class SoBaseKit creates. It is a public part that is inherited by all nodekits. It provides an easy way to add callbacks for a nodekit to use during action traversal (e.g. SoHandleEventAction). It is a list part and may contain numerous SoCallback and/or SoEventCallback nodes.0 '„å…& €€‚A€‚ÿMETHODS;µ… †, (€€T”A‚S~‚A€ƒ‚ÿSoBaseKit()8å…X†) "€€”‘€‚A€‚ÿConstructor.uC †͆2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() constq<X†>‡5 :€x€”‘€‚A€€€€€‚ÿReturns the SoNodekitCatalog for the class SoBaseKit.q?͆¯‡2 4€~€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constE>‡ôˆ6 :€€”‘€‚A€€€€€‚ÿReturns the SoNodekitCatalog for this instance of SoBaseKit. While each instance of a given class creates its own distinct set of parts (which are actual nodes), all instances share the same catalog (which describes the parts but contains no actual node pointers).N¯‡‰? N€œ€T”A‚S~‚A€ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ÿvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)ð¨ôˆqŒH ^€Q€”‘€‚A€€€€€€€€€€€‚ÿSearches the nodekit catalog (and those of all nested nodekits) for the part named partName. Returns a pointer to the part if a match is found, the part is public, and the part has already been built. If no match is found, or if the part is private, NULL is returned. If partName is in the catalog (or that of one of its nested nodekit parts), but the part has not been built yet, the argument makeIfNeeded determines the course of action. When makeIfNeeded is FALSE, NULL is returned; when makeIfNeeded is TRUE, getPart() will create the part (as well as any necessary intermediary parts), put it in the correct place, and return a pointer to the newly created part.ÕŸ‰F6 :€?€”‘€‚A€€€€€‚ÿElements of list parts and parts within nested nodekits can all be retrieved with getPart() The full syntax for legal partName arguments is given below.GqŒ, (€6€”‘€‚A€€‚ÿPart name BNF notation:P'FÝ) "€N€”‘€‚A€‚ÿpartName = singleName | compoundName_6<Ž) "€l€”‘€‚A€‚ÿcompoundName = singleName | compoundName.singleName_6Ý›Ž) "€l€”‘€‚A€‚ÿsingleName = singlePartName | singleListElementNameѧ<Žl* "€O€”‘€‚A€‚ÿsinglePartName = the name of any single part in the catalog (including those that are lists or nodekits), or in the recursively nested catalogs of any of its parts.Y0›ŽÅ) "€`€”‘€‚A€‚ÿsingleListElementName = singleListName[index]®„lÀ* "€ €”‘€‚A€‚ÿsingleListName =ÅÀ^Æ the name of any single list-type part in the catalog, or in the recursively nested catalogs of any of its parts.;źÀ) "€$€”‘€‚A€‚ÿindex = integerM$ÀÁ) "€H€”‘€‚A€‚ÿExamples of valid part names are:¯…ºÀ¶Á* "€ €”‘€‚A€‚ÿ"transform", "appearance.material", "childList[2].drawStyle", "foot", "bird.leftLeg.foot", "octopus.leg[4].suctionCup[2].material"i1ÁÂ8 @€b€T”A‚S~‚AãXíÊ€‰ƒã}9‰‚ÿSbStringgetPartString(const SoBase *part)ܶÁ%Ã* "€¹€”‘€‚A€‚ÿGiven a node or a path to a node, checks if the part exists in the nodekit, in a nested nodekit, or an element of a list part. If so, returns a string describing the part name; otherwise, returns an empty string ("").ʃÂïÃG \€€T”A‚S~‚A€ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚ÿvirtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)•e%ÄÆ0 .€Ë€”‘€‚A€€€‚ÿReturns a path that begins at this nodekit and ends at partName. Searching for the part is the same as in getPart(). NULL is returned if partName cannot be found, or if makeIfNeeded is FALSE and the part is not yet built. If the the part is retrieved and the argument pathToExtend is NULL, the path returned begins at this and ends at partName. If pathToExtend is not NULL, the path created is a copy of pathToExtend with entries appended all the way down to partName. It is okay for pathToExtend to go beyond the nodekit; extra nodes will be popped off the tail before continuing from this down to partName.‡Hïà Ç? N€€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ã’n%9‰‚ÿvirtual SbBoolsetPart(const SbName &partName,SoNode *newPart)ç„Æ"È0 .€Ï€”‘€‚A€€€‚ÿInserts the given node (not a copy) as the new part specified by partName. See getPart() for the syntax of partName. This method adds any extra nodes needed to fit the part into the nodekit's catalog. For example, if you call:Y1 Ç{È( €b€Ù€‚A€‚ÿmySepKit->setPart("childList[0]", myNewChild);+"ȦÈ( €€Ù€‚A€‚ÿªh{ÈPÊB R€Ñ€”‘€‚A€€€€€€€€€‚ÿthe kit may need to create the part childList before it can install myNewChild. Run-time type checking verifies that the node type of newPart matches the type called for by partName. For example, if partName was a material for an SoSeparatorKit, but newPart was an SoTransform node, then the node would not be installed, and FALSE would be returned.,ü¦È|Ë0 .€ù€”‘€‚A€€€‚ÿIf newPart is NULL, then the node specified by partName is removed. If this renders any private parts useless (as occurs when you remove the last child of an SoGroup node), they will also be removed. Hence nodekits do not retain unnecessary nodes.^5PÊÚË) "€j€”‘€‚A€‚ÿTRUE is returned on success, and FALSE upon error.T|ËiÌ; F€¨€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ÿSbBoolset(char *partName,char *parameters)SbBoolset(char *nameValuePairs):ÚË£Í* "€!€”‘€‚A€‚ÿThese functions allow field values of parts (nodes) to be set. If partName and parameters are used, then a single part is specified by partName; the field values are specified in parameters. The format of parameters is the Open Inventor File Format syntax. For example,iAiÌ Î( €‚€Ù€‚A€‚ÿmySepKit->set("material", "diffuseColor 1 0 0 shininess 0.6");+£Í7Î( €€Ù€‚A€‚ÿ^ ΕÏB R€9€”‘€‚A€€€€€€€€€‚ÿsets the part material to the values "diffuseColor 1 0 0 shininess 0.6". The values used in parameters must of course be appropriate for the node-type to which partName belongs. In this case, the nodekit SoSeparatorKit has a part named material which is of type SoMaterial.!ñ7ÎÂ0 .€ã€”‘€‚A€€€‚ÿThe nameValuePairs syntax can be used to set the field val•ÏÂ^Æues in several different parts simultaneously. In this case, the argument string, nameValuePairs contains name-value pairs: "partName1 parameters1 ... partNameN parametersN ".8•Ïú) "€€”‘€‚A€‚ÿFor example,W/ÂQ( €^€Ù€‚A€‚ÿmySepKit->set("material diffuseColor 1 1 1 X0ú©( €`€Ù€‚A€‚ÿ transform translation 4 3 .6 ");jBQ( €„€Ù€‚A€‚ÿmySepKit->set("childList[0].material ambientColor .5 .5 .5 ");+©>( €€Ù€‚A€‚ÿ”ZÒ: D€´€T”A‚S~‚A€㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿstatic SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal) q>r/ .€â€”‘€‚A€€€‚ÿSets and queries if nodekit children are searched during SoSearchAction traversal. By default, they are not.U#ÒÇ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*r) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ÇI& €€‚A€‚ÿMACROSU)ž, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)ìIº0 .€Ù€”‘€‚A€€€‚ÿCalls getPart() with makeIfNeeded set to TRUE, then casts the result to the type partClass. Note that in the debug library, this macro checks to see if the part is of type partClass, while the regular library does no type checking.W+ž, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)"òº30 .€å€”‘€‚A€€€‚ÿCalls getPart(), but with makeIfNeeded set to FALSE, then casts the result to the type partClass. Note that in the debug library, this macro checks to see if the part is of type partClass, while the regular library does no type checking.8k& €$€‚A€‚ÿACTION BEHAVIORŸ[3 D X€¶€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãàꉀ‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoHandleEventActiono=ky2 4€z€”‘€‚A€€€€‚ÿBehaves like an SoGroup. Traverses each child in order.G À2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction=øyý E X€ñ€”‘€‚A€€€€€€€€€€‚ÿTraverses each child in order. Then, for any pick containing the kit on its path, makes an SoNodeKitDetail as follows: Sets the "detailNodeKit" (retrievable with SoNodeKitDetail::getNodeKit()) to be a pointer to itself. Sets the "detailPart" (retrievable with SoNodeKitDetail::getPart()) to be a pointer to the kit's leaf-most part that lies on the pickPath. Sets the "detailPartName" (retrievable with SoNodeKitDetail::getPartName()) to be the partName of that part, as found in the catalog.7 À4 * "€€”‘€‚A€‚ÿDoes not descend into nested nodekits. Each nodekit along the path is the "detailPart" in its parent's detail. However, if the pick path goes through a list part, a pointer to the child is used for the "detailPart", and "detailPartName" is of the form "listName[i]".Iý } 2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixActionÏ4  3 4€Ÿ€”‘€‚A€€€€‚ÿBehaves like an SoGroup. Does nothing unless the kit is in the middle of the path chain the action is being applied to. If so, the children up to and including the next node in the chain are traversed.F} Å 2 4€(€”‘€‚AãòÓ}ª€‰€‚ÿSoSearchActionÕœ š9 @€9€”‘€‚A€€€€€€‚ÿFirst, searches itself like an SoNode. Then, checks the value of isSearchingChildren(). If TRUE, traverses the children in order. If FALSE, returns.EÅ ß2 4€&€”‘€‚AãeY €‰€‚ÿSoWriteActionVšA@? L€/€”‘€‚A€€€€€€€€‚ÿBegins by writing out regular fields, then writes out the parts. A nodekit does not write out its parts the way an SoGroup writes out its children. Instead, it writes each part as an SoSFNode field. First the partName ißA@^Æs written, then the node being used for that part.ëß\A0 .€×€”‘€‚A€€€‚ÿTo keep the files terse, nodekits write out as few parts as possible. However, nodekits always write a part if another instance or a path is writing it. If this is not the case, parts are left out according to the following rules:xOA@ÔA) "€ž€”‘€‚A€‚ÿ[1] NULL parts only write if the catalog states they are created by default.q<\AEB5 :€x€”‘€‚A€€€€€‚ÿ[2] Empty SoGroup and SoSeparator nodes do not write.pGÔAµB) "€Ž€”‘€‚A€‚ÿ[3] Non-leaf parts only write if they have non-default field values.’iEBGC) "€Ò€”‘€‚A€‚ÿ[4] List parts only write if they have children or if the container node has non-default field values.¢yµBéC) "€ò€”‘€‚A€‚ÿ[5] Nested nodekit parts only write if they need to write one or more parts, or if they have non-default field values.6GCD& € €‚A€‚ÿCATALOG PARTS;éCZD- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜DòD~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/ZD±E#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2òDsF#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes,±EŸF' € €€‚€‚ÿa6sFG+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’1ŸF’Ga#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8G+Ha#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback?’GjH' €0€€‚€‚ÿFILE FORMAT/DEFAULT6 +H H* $€€P„7|‚€‚ÿBaseKit {DjHäH- *€.€P„|‚€ƒ‚‚‚ÿcallbackListNULL}1  HI& €€‚€‚ÿSEE ALSO—àäH¬J· <Á€”‘€‚ãNw¶°€‰€ãásÆú€‰€ã€ÀÏ€‰€ã0d$€‰€ã•£&ô€‰€ã½á–€‰€ã}选€ãõˆ¨f€‰€ã’o>€ãOËr€‰€ãЃ'€‰€ã°çT€‰€‚ÿSoAppearanceKit, SoCameraKit, SoLightKit, SoNodeKit, SoNodeKitDetail, SoNodeKitListPart, SoNodeKitPath, SoNodekitCatalog, SoSceneKit, SoSeparatorKit, SoShapeKit, SoWrapperKit; IçJ1e{‚9Ð=|çJK`‹SoBaseList2 ¬JK% €€ˆˆ€‚ÿSoBaseList*çJCK# €€€‚ÿNAME}QKÀK, (€¢€”‘€€€€‚ÿSoBaseList - maintains a list of pointers to instances of the SoBase classes3CKóK# € €€‚ÿINHERITS FROMQÀKDL5 :€8€”‘€ãK2Å'€‰€€€‚ÿSbPList > SoBaseList2 óKvL& €€€€ ‚ÿSYNOPSISf?DLÜL' €~€”‘€€‚‚ÿ#include Methods from class SoBaseList:„vLÝN} È€ €T”A‚S~‚A€ƒ‚ƒ‚ƒã/ x‘‰‚ƒ‚ƒã}9‰‚ƒã}9‰‚ƒ‚ƒ‚ƒã/ x‘‰‚ã/ x‘‰ƒã/ x‘‰‚ã}9‰ƒ‚ƒã}9‰‚ƒã‘¶p6‰‚ÿSoBaseList()SoBaseList(int size)SoBaseList(const SoBaseList &l)~SoBaseList()voidappend(SoBase *ptr)voidinsert(SoBase *ptr,int addBefore)voidremove(int which)voidtruncate(int start)voidcopy(const SoBaseList &l)SoBaseList &operator =(const SoBaseList &l)SoBase *operator [](int i) constvoidset(int i,SoBase *ptr)voidaddReferences(SbBool flag)O ÜL,O/ .€@€”‘€‚A€ãK2Å'‰‚ÿMethods from class SbPList:ÍŽÝN €? L€€T”A‚S~‚A€ƒ‚ƒ‚ƒãK2Å'‰‚ƒãK2Å'‰‚ÿintfind(const void *ptr) constintgetLength() constintoperator ==(const SbPList &pl) constintoperator !=(const SbPList &pl) const,O €¬J4,O@€& €€‚A€‚ÿDESCRIPTION•_ €Õ6 :€¿€”‘€‚A€€€€€‚ÿThis subclass of SbPList holds lists of pointers to instances of classes derived from SoBase (an abstract class). A flag indicates whether adding an instance pointer to the list should add a reference to the instance. If this flag is TRUE, then adding and removing pointers from the list updates reference counts in the corresponding instances.0 @€‚& €€‚A€‚ÿMETHODS<ÕA‚, (€ €T”A‚S~‚A€ƒ‚ÿSoBaseList()8‚y‚) "€€”‘€‚A€‚ÿConstructor.DA‚½‚, (€0€T”A‚S~‚A€ƒ‚ÿSoBaseList(int size)m>y‚*ƒ/ .€|€”‘€‚A€€€‚ÿConstructor that pre-allocates storage for size pointers.W%½‚ƒ2 4€J€T”A‚S~‚A€ƒã/ x‘‰‚ÿSoBaseList(const SoBaseList &l)a8*ƒâƒ) "€p€”‘€‚A€‚ÿConstructor that copies the contents of another list.=ƒ„, (€"€T”A‚S~‚A€ƒ‚ÿ~SoBaseList()7âƒV„) "€€”‘€‚A€‚ÿDestructor.O„¥„2 4€:€T”A‚S~‚A€ƒã}9‰‚ÿvoidappend(SoBase *ptr)R)V„÷„) "€R€”‘€‚A€‚ÿAdds a pointer to the end of the list._,¥„V…3 6€X€T”A‚S~‚A€ƒã}9‰‚ÿvoidinsert(SoBase *ptr,int addBefore)jA÷„À…) "€‚€”‘€‚A€‚ÿInserts given pointer in list before pointer with given index.EV…†, (€2€T”A‚S~‚A€ƒ‚ÿvoidremove(int which)M$À…R†) "€H€”‘€‚A€‚ÿRemoves pointer with given index.G†™†, (€6€T”A‚S~‚A€ƒ‚ÿvoidtruncate(int start)g>R†‡) "€|€”‘€‚A€‚ÿRemoves all pointers after one with given index, inclusive.U#™†U‡2 4€F€T”A‚S~‚A€ƒã/ x‘‰‚ÿvoidcopy(const SoBaseList &l)`7‡µ‡) "€n€”‘€‚A€‚ÿCopies a list, keeping all reference counts correct.c1U‡ˆ2 4€b€T”A‚S~‚Aã/ x‘€‰ƒ‚ÿSoBaseList &operator =(const SoBaseList &l)`7µ‡xˆ) "€n€”‘€‚A€‚ÿCopies a list, keeping all reference counts correct.X&ˆЈ2 4€L€T”A‚S~‚Aã}9€‰ƒ‚ÿSoBase *operator [](int i) constJ!xˆ‰) "€B€”‘€‚A€‚ÿAccesses an element of a list.T!Јn‰3 6€B€T”A‚S~‚A€ƒã}9‰‚ÿvoidset(int i,SoBase *ptr)F‰´‰) "€:€”‘€‚A€‚ÿSets an element of a list.V$n‰ Š2 4€H€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidaddReferences(SbBool flag)³~´‰½Š5 :€ü€”‘€‚A€€€€€‚ÿIndicates whether to call ref() and unref() for bases in the list when adding/removing them. The default value is TRUE.1 ŠîŠ& €€‚A€‚ÿSEE ALSOr+½Š`‹G ^€V€”‘€‚Aã}9€‰€ãœÐ€‰€ãç2ø¡€‰‚ÿSoBase, SoNodeList, SoPathList> ‹1ž…<C>}ž‹Ó‹–SoBevelAction5`‹Ó‹% € €ˆˆ€‚ÿSoBevelAction*ž‹ý‹# €€€‚ÿNAMEhBÓ‹eŒ& €„€”‘€€‚ÿSoBevelAction - creates a scene graph containing beveled shapes3ý‹˜Œ# € €€‚ÿINHERITS FROMU eŒíŒ5 :€@€”‘€ãïK€‰€€€‚ÿSoAction > SoBevelAction. ˜Œ# €€€‚ÿSYNOPSISwP팒' € €”‘€€‚‚ÿ#include Methods from class SoBevelAction:'¸¹o ¬€q€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSoBevelAction()virtual~SoBevelAction()voidsetAngle(float angle)floatgetAngle() constvoidsetRadius(float radius)floatgetRadius() constvoidenableAbsoluteRadius(SbBool flag = TRUE)SbBoolisAbsoluteRadiusEnabled() constvoidsetOutputVRML(SbBool flag = FALSE)SbBoolisOutputVRML() constvoidenableCoplanarTest(SbBool flag = TRUE)SbBoolisCoplanarTestEnabled() constvoidenableDuplicateTest(SbBool flag = TRUE)åš’ªÀK d€5€T”A‚S~‚A㑶p6€‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ã«]à—¹ªÀ`‹‰ƒ‚ÿSbBoolisDuplicateTestEnabled() constvoidenableOrderingTest(SbBool flag = TRUE)SbBoolisOrderingTestEnabled() constSoGroup*getSceneGraph()P!¹úÀ/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†ªÀ€Âj ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãMy'9‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4úÀ´Â& €€‚A€‚ÿDESCRIPTIONK€ÂÿÃ6 :€+€”‘€‚A€€€€€‚ÿThis action traverses a scene graph or paths, looking for shapes to bevel, then creating another scene graph containing the beveled shapes (in the form of SoCoordinate3 and SoIndexedFaceSet nodes). Typically it is applied to a subgraph that contains only a single shape.㶴ÂâÄ- (€m€”‘€‚A€€‚ÿSoBevelAction does not take into consideration PER_FACE or PER_VERTEX materials. Therefore, the shapes to be beveled should have a uniform material (SoMaterialBinding::OVERALL). í½ÿÃÏÅ0 .€{€”‘€‚A€€€‚ÿIt works like other actions, but does not modify the source scene graph. The scene graph containing beveled shapes can be accessed by calling getSceneGraph() after applying the action.e#âÄ4ÇB R€G€”‘€‚A€€€€€€€€€‚ÿThe methods setAngle, setRadius, and enableAbsoluteRadius set the default behavior of the beveling of the shapes this action will be applied to. If bevel property values have been set by the SoBevelProperty node, they are used. Otherwise, the values set by these methods are used.0 ÏÅdÇ& €€‚A€‚ÿMETHODSZ,4ǾÇ. ,€X€T”A‚S~‚A€ƒ‚ƒ‚ÿSoBevelAction()virtual~SoBevelAction()GdÇÈ) "€<€”‘€‚A€‚ÿConstructor and destructor.b4¾ÇgÈ. ,€h€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetAngle(float angle)floatgetAngle() constÊ È1É* "€A€”‘€‚A€‚ÿSets/returns the minimum angle (in radians) between two adjacent face normals required to bevel the edge common to these two faces. The default value is 0.5.e7gÈ–É. ,€n€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetRadius(float radius)floatgetRadius() conste<1ÉûÉ) "€x€”‘€‚A€‚ÿSets/returns the bevel radius. The default value is 0.05.]+–ÉXÊ2 4€V€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidenableAbsoluteRadius(SbBool flag)TûɬË< F€1€”‘€‚A€€€€€€€‚ÿSets the absolute radius flag. If TRUE, the radius value is absolute. Otherwise the radius is a value between 0.0 and 1.0; the real radius corresponding is max * radius, where max is the length of the longest edge of the current shape to be beveled. The default is FALSE.W%XÊÌ2 4€J€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisAbsoluteRadiusEnabled()yP¬Ë|Ì) "€ €”‘€‚A€‚ÿReturns TRUE if the radius is absolute, FALSE if it is relative to the shape.V$ÌÒÌ2 4€H€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidsetOutputVRML(SbBool flag)Ôª|̦Í* "€U€”‘€‚A€‚ÿIf TRUE, each beveled shape is generated as a VRML indexed face set. Otherwise the beveled shapes are generated as "classic" indexed face sets. Default value is FALSE.R ÒÌøÍ2 4€@€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisOutputVRML() constsJ¦ÍkÎ) "€”€”‘€‚A€‚ÿReturns TRUE if the shapes created by the bevel action are VRML shapes.b0øÍÍÎ2 4€`€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidenableCoplanarTest(SbBool flag = TRUE)ÚkÎÑÏ* "€µ€”‘€‚A€‚ÿIf TRUE, a coplanar test is performed on each shape before beveling it. This test combines contiguous coplanar faces into one larger face because the bevel method will not work properly on contiguous coplanar faces.Á—ÍΞ* "€/€”‘€‚A€‚ÿIf FÑÏž`‹ALSE, each shape is assumed not to have contiguous coplanar faces. This provides better performance because the coplanar test is not performed. Ä”ÑÏb0 .€)€”‘€‚A€€€‚ÿIt is recommended that you turn off this test only if the shapes to be beveled do not contain contiguous coplanar faces. Default value is TRUE.[)ž½2 4€R€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisCoplanarTestEnabled() constnEb+) "€Š€”‘€‚A€‚ÿReturns TRUE if a coplanar test is performed before the beveling. c1½Ž2 4€b€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidenableDuplicateTest(SbBool flag = TRUE)tJ+* "€•€”‘€‚A€‚ÿIf TRUE, examine each shape to bevel, removing duplicate faces if found. As this test is time consuming, it can be turned on/off depending on whether the shapes to be beveled contain duplicate faces or not. If a shape contains duplicate faces the test is off, no beveling will be performed on the shape. Default value is FALSE.\*Ž^2 4€T€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisDuplicateTestEnabled() constVÝ) "€¬€”‘€‚A€‚ÿIf TRUE, a test is performed to remove duplicate faces in the shapes being beveled.b0^?2 4€`€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidenableOrderingTest(SbBool flag = TRUE)îÝW* "€Ý€”‘€‚A€‚ÿIf TRUE, each shape to bevel is re-ordered so that each face is oriented like the first face of the shape. This test is not time consuming. However, it may be desirable to disable this test when it is not needed. Default value is TRUE.[)?²2 4€R€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisOrderingTestEnabled() constkBW) "€„€”‘€‚A€‚ÿReturns TRUE if the shapes are re-ordered before being beveled.W%²t2 4€J€T”A‚S~‚A€ã«]à—‰ƒ‚ÿvirtual SoGroup*getSceneGraph()„[ø) "€¶€”‘€‚A€‚ÿThis method returns the scene graph containing the beveled shapes created by the action.1 t)& €€‚A€‚ÿSEE ALSOm2ø–; F€d€”‘€‚AãGb-o€‰ãµô˜o‰ãP!ö‰‚ÿSoBevelProperty, SoEdgeFlag, SoVertexFlag@)Ö1“Ð=?~Ö (€SoBevelProperty7– % €$€ˆˆ€‚ÿSoBevelProperty*Ö7 # €€€‚ÿNAME]7 ” & €n€”‘€€‚ÿSoBevelProperty - node to define beveling properties37 Ç # € €€‚ÿINHERITS FROM‘D” X M j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBevelProperty2 Ç Š & €€€€ ‚ÿSYNOPSIST.X Þ & €\€”‘€€‚ÿ#include :èŠ  R r€Ñ€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Tests{SoBevelProperty::COPLANAR_TESTConcatenate coplanar facesSoBevelProperty::DUPLICATE_TESTRemove duplicate facesSoBevelProperty::ORDERING_TESTReorder facet normalsSoBevelProperty::ALL_TESTSAll tests}N%Þ f ) "€J€”‘€‚A€‚ÿFields from class SoBevelProperty:Èv . R t€ì€T”A‚S~‚Aã0â1€‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ãU×S鉃‚ã:YN‰ƒ‚ÿSoSFFloatangleSoSFFloatradiusSoSFBoolabsoluteRadiusSoSFBoolvrmlOutputSoSFBitMasktestsBeforeBevelO&f } ) "€L€”‘€‚A€‚ÿMethods from class SoBevelProperty:j6. ç 4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoBevelProperty()static SoTypegetClassTypeId()N} 5/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ç ±n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)5@/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldCont±@–ainer:eرzB 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH@C@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NzBPC/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞC‡DY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4PC»D& €€‚A€‚ÿDESCRIPTION™j‡DTE/ .€Ô€”‘€‚A€€€‚ÿThis node defines the current beveling properties (used by SoBevelAction) for all subsequent shapes. êÀ»D>F* "€€”‘€‚A€‚ÿYou can use it to specify a beveling radius (absolute or relative) and an angle between adjacent faces (like a crease angle) that determines if the edge between those faces will be beveled./ TEmF& €€‚A€‚ÿFIELDSF>F³F2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatangle4ømFçG< F€ñ€”‘€‚A€€€€€€€‚ÿIndicates the angle (in radians, between 0 and pi) between two adjacent face normals above which the edge will be beveled. (If the edge has been unmarked by the current SoEdgeFlag it will not be beveled, regardless of the value of angle). G³F.H2 4€*€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatradiusá±çGI0 .€c€”‘€‚A€€€‚ÿThis defines the bevel radius (the size of the rounded edge or corner). This value will be interpreted as absolute or relative depending on the absoluteRadius flag (below).N.H]I2 4€8€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolabsoluteRadiusg%IÄJB R€K€”‘€‚A€€€€€€€€€‚ÿIf TRUE, the value of radius will be taken as the bevel radius. Otherwise, the radius is relative to the shape: the radius value is a fraction between 0.0 and 1.0. The bevel radius will be max * radius, where max is the length of the longest edge of the current shape to be beveled.J]IK2 4€0€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolvrmlOutput.øÄJì?b€“€eÄSoBlinker1 (€“€% €€ˆˆ€‚ÿSoBlinker*b€½€# €€€‚ÿNAMEQ+“€& €V€”‘€€‚ÿSoBlinker - animated cycling switch node3½€A# € €€‚ÿINHERITS FROMÀ[‚e š€¶€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ã0MÓ쀉€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoSwitch > SoBlinker2 A3‚& €€€€ ‚ÿSYNOPSISlE‚Ÿ‚' €Š€”‘€€‚‚ÿ#include Fields from class SoBlinker:\"3‚û‚: D€D€T”A‚S~‚Aã0â1€‰ƒ‚ãU×S鉃‚ÿSoSFFloatspeedSoSFBoolonO Ÿ‚Jƒ/ .€@€”‘€‚A€ã0MÓ쉂ÿFields from class SoSwitch:Kû‚•ƒ2 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32whichChildI JƒÞƒ) "€@€”‘€‚A€‚ÿMethods from class SoBlinker:d0•ƒB„4 8€`€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoBlinker()static SoTypegetClassTypeId()O Þƒ‘„/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒB„††r ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)N‘„Ô†/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|††Pˆn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ô†¨ˆ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØPˆ ‹ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¨ˆ•‹@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N ‹ã‹/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ•‹Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ã‹N& €€‚A€‚ÿDESCRIPTIONçŸ5H ^€?€”‘€‚A€€€€€€€€€€€‚ÿThe SoBlinker class is derived from SoSwitch, so it selects one of its children to traverse. Using engines connected to the realTime global field, the whichChild field is animated over time. If the node has only one child, whichChild toggles between SO_SWITCH_NONE and 0, causing the child to be switched on and off repeatedly. If the node has more than one child, they are cycled through continuously./ Nd& €€‚A€‚ÿFIELDSF5ª2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatspeedc:dÀ) "€t€”‘€‚A€‚ÿDefines the speed of the blinker, in cycles ªÀ(€per second.Bª[À2 4€ €T”A‚S~‚AãU×S选ƒ‚ÿSoSFBooloni@ÀÄÀ) "€€€”‘€‚A€‚ÿAllows applications to enable or disable the blinking easily.0 [ÀôÀ& €€‚A€‚ÿMETHODS;ÄÀ/Á, (€€T”A‚S~‚A€ƒ‚ÿSoBlinker()Y0ôÀˆÁ) "€`€”‘€‚A€‚ÿCreates a blinker node with default settings.U#/ÁÝÁ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ˆÁ0Â) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ÝÁhÂ& €$€‚A€‚ÿACTION BEHAVIORì•0ÂTÃW |€+€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ã¹_ØS‰ãàê‰ãɓ℉ãòÓ}ª‰€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoHandleEventAction, SoRayPickAction, SoSearchActionMh¡Ã2 4€6€”‘€‚A€€€€‚ÿSame as for SoSwitch.<TÃÝÃ& €,€‚A€‚ÿFILE FORMAT/DEFAULT6 ¡ÃÄ* $€€P„7|‚€‚ÿBlinker {R"ÝÃeÄ0 0€D€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿwhichChild-1speed1onTRUE}@Ä¥Ä1]?S@€¥ÄÜÄ SoBoolOperation7eÄÜÄ% €$€ˆˆ€‚ÿSoBoolOperation*¥ÄÅ# €€€‚ÿNAMEV0ÜÄ\Å& €`€”‘€€‚ÿSoBoolOperation - performs Boolean operations3ÅÅ# € €€‚ÿINHERITS FROM“F\Å"ÆM j€Œ€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoBoolOperation2 ÅTÆ& €€€€ ‚ÿSYNOPSISV0"ƪÆ& €`€”‘€€‚ÿ#include óµTÆÈ> J€k€T”A‚S~‚A€ƒ‚ÿenum Operation{SoBoolOperation::CLEARSoBoolOperation::SETSoBoolOperation::ASoBoolOperation::NOT_ASoBoolOperation::BSoBoolOperation::NOT_BSoBoolOperation::A_OR_BSoBoolOperation::NOT_A_OR_BSoBoolOperation::A_OR_NOT_BSoBoolOperation::NOT_A_OR_NOT_BSoBoolOperation::A_AND_BSoBoolOperation::NOT_A_AND_BSoBoolOperation::A_AND_NOT_BSoBoolOperation::NOT_A_AND_NOT_BSoBoolOperation::A_EQUALS_BSoBoolOperation::A_NOT_EQUALS_B}N%ªÆëÈ) "€J€”‘€‚A€‚ÿInputs from class SoBoolOperation:s1È^ÉB T€b€T”A‚S~‚AãóÐÀ´€‰ƒ‚ãóÐÀ´‰ƒ‚ãvnÄ´‰ƒ‚ÿSoMFBoolaSoMFBoolbSoMFEnumoperationO&ëÈ­É) "€L€”‘€‚A€‚ÿOutputs from class SoBoolOperation:e+^ÉÊ: D€V€T”A‚S~‚A€ãóÐÀ´‰ƒ‚ãóÐÀ´‰ƒ‚ÿ(SoMFBool)output(SoMFBool)inverseO&­ÉaÊ) "€L€”‘€‚A€‚ÿMethods from class SoBoolOperation:AÊ¢Ê, (€*€T”A‚S~‚A€ƒ‚ÿSoBoolOperation()P!aÊòÊ/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}¢Êò̃ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)òÊJÍ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØòÌ¯Ï 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHJÍC @ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotif¯ÏC eÄyEnabled() constSbBoolenableNotify(SbBool flag)N¯Ï‘ / .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞC È Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4‘ ü & €€‚A€‚ÿDESCRIPTION¡xÈ  ) "€ð€”‘€‚A€‚ÿThis engine performs a Boolean operation on two inputs, and returns both the result of the operation and its inverse.ôü » * "€é€”‘€‚A€‚ÿThe input fields can have multiple values, allowing the engine to perform several Boolean operations in parallel. One input may have more values than the other. In that case, the last value of the shorter input will be repeated as necessary./  ê & €€‚A€‚ÿINPUTSA» + 2 4€€T”A‚S~‚AãóÐÀ´€‰ƒ‚ÿSoMFBoolaT+ê  ) "€V€”‘€‚A€‚ÿFirst argument to the Boolean operation.A+ À 2 4€€T”A‚S~‚AãóÐÀ´€‰ƒ‚ÿSoMFBoolbU,  ) "€X€”‘€‚A€‚ÿSecond argument to the Boolean operation.IÀ ^ 2 4€.€T”A‚S~‚AãvnÄ´€‰ƒ‚ÿSoMFEnumoperationB   ) "€2€”‘€‚A€‚ÿThe Boolean operation.0 ^ Ð & €€‚A€‚ÿOUTPUTSH   2 4€,€T”A‚S~‚A€ãóÐÀ´‰ƒ‚ÿ(SoMFBool)outputb9Ð z ) "€r€”‘€‚A€‚ÿResult of the Boolean operation applied to the inputs.I à 2 4€.€T”A‚S~‚A€ãóÐÀ´‰ƒ‚ÿ(SoMFBool)inverseFz  / .€.€”‘€‚A€€€‚ÿInverse of output.0 à 9 & €€‚A€‚ÿMETHODSA  z , (€*€T”A‚S~‚A€ƒ‚ÿSoBoolOperation()89 ² ) "€€”‘€‚A€‚ÿConstructor.<z î & €,€‚A€‚ÿFILE FORMAT/DEFAULT<² * * $€$€P„7|‚€‚ÿBoolOperation {R!î | 1 2€B€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿaFALSEbFALSEoperationA}1 * ­ & €€‚€‚ÿSEE ALSO`%| ; F€J€”‘€‚ãë\¼N€‰€ã"r™€‰‚ÿSoEngineOutput, SoCalculatorK­ X 1ì?÷AX š ‚ SoBoxHighlightRenderActionB š % €:€ˆˆ€‚ÿSoBoxHighlightRenderAction*X Ä # €€€‚ÿNAMEa;š % & €v€”‘€€‚ÿSoBoxHighlightRenderAction - a selection highlight style3Ä X # € €€‚ÿINHERITS FROM…D% Ý A R€ˆ€”‘€ãïK€‰€ã©öø(€‰€€€‚ÿSoAction > SoGLRenderAction > SoBoxHighlightRenderAction2 X  & €€€€ ‚ÿSYNOPSIS‘jÝ   ' €Ô€”‘€€‚‚ÿ#include Methods from class SoBoxHighlightRenderAction:3 0 ] ˆ€g€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSoBoxHighlightRenderAction()virtual voidapply(SoNode *node)voidsetVisible(SbBool b)SbBoolisVisible() constvoidsetColor(const SbColor &c)SbColor &getColor()voidsetLinePattern(unsigned short pattern)unsigned shortgetLinePattern()voidsetLineWidth(float width)floatgetLineWidth()X)  ˆ / .€R€”‘€‚A€ã©öø(‰‚ÿMethods from class SoGLRenderAction:²0 ¢ h ž€e€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã}ƒõ(‰ã}ƒõ(‰‚ƒã}ƒõ(‰ã}ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ÿvoidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetUpdateArea(const SbVec2f &origin,const SbVec2f &size)voidgetUpdateArea(SbVec2f &origin,SbVec2f &size) constvoidsetAbortCallback(SoGLRenderAbortCB *func,void *userData)voidsetTransparencyType(TransparencyType type)TransparencyTypegetTransparencyType() constvoidsetSmoothing(SbBool smooth)fˆ A N j€1€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolisSmoo¢ A thing() constvoidsetNumPasses(int num)intgetNumPasses() constvoidsetPassUpdate(SbBool flag)SbBoolisPassUpdate() constvoidsetPassCallback(SoGLRenderPassCB *func,void *userData)voidsetCacheContext(uint32_t context)uint32_tgetCacheContext() constP!¢ dA / .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:ÓˆA 7B K d€€T”A‚S~‚A€ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4dA kB & €€‚A€‚ÿDESCRIPTIONV7B ÁD E X€#€”‘€‚A€€€€€€€€€€‚ÿSoBoxHighlightRenderAction is a render action which renders the specified scene graph, then renders wireframe boxes surrounding each selected object. Selected objects are specified by the first SoSelection node in the scene to which this action is applied. If an SoGetBoundingBoxAction applied to a selected object produces an empty bounding box, no highlight is rendered for that object. A highlight render action can be passed to the setGLRenderAction() method of SoWinRenderArea to have an effect on scene graphs.0 kB ñD & €€‚A€‚ÿMETHODSL ÁD =E , (€@€T”A‚S~‚A€ƒ‚ÿSoBoxHighlightRenderAction()8ñD uE ) "€€”‘€‚A€‚ÿConstructor.W%=E ÌE 2 4€J€T”A‚S~‚A€ƒã’n%9‰‚ÿvirtual voidapply(SoNode *node)קuE £F 0 .€O€”‘€‚A€€€‚ÿThis renders the passed scene graph, and also renders wireframe boxes around selected objects as specified by the first SoSelection node found in the scene graph.PÌE óF 2 4€<€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidsetVisible(SbBool b)d.£F WH 6 :€]€”‘€‚A€€€€€‚ÿThis provides a convenient mechanism for turning highlights off or on. When FALSE is passed, subsequent calls to apply() render the scene graph without rendering highlights. The application is responsible for forcing a redraw of the scene after changing this state. The default visibility is on.OóF ¦H 2 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisVisible() const_6WH I ) "€l€”‘€‚A€‚ÿReturns whether highlights will be rendered or not.u;¦H zI : D€v€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ÿvoidsetColor(const SbColor &c)SbColor &getColor()Ô¤I NJ 0 .€I€”‘€‚A€€€‚ÿSet and get the color of the highlight. Default is red (1,0,0). Application is responsible for forcing a redraw of the scene to see the effects of this change.|NzI ÊJ . ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetLinePattern(unsigned short pattern)unsigned shortgetLinePattern()V NJ L 6 :€A€”‘€‚A€€€€€‚ÿSet and get the line pattern of the highlight. Default is solid, 0xffff. The pattern of bits in the passed variable specifies the pattern of the line. See SoDrawStyle for a description. Application is responsible for forcing a redraw of the scene to see the effects of this change.d6ÊJ „L . ,€l€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetLineWidth(float width)floatgetLineWidth()ÏŸ L SM 0 .€?€”‘€‚A€€€‚ÿSet and get the line width of the highlight. Default is 3. Application is responsible for forcing a redraw of the scene to see the effects of this change.0 „L ƒM & €€‚A€‚ÿEXAMPLE—nSM N ) "€Ü€”‘€‚A€‚ÿHere is an example of how a box highlight can be specified for a particular selection node and render area.M%ƒM gN ( €J€Ù€‚A€‚ÿ SoWinRenderArea *myRenderArea;H N ¯N ( €@€Ù€‚A€‚ÿ SoSelection *mySelection;+gN ÚN ( €€Ù€‚A€‚ÿQ)¯N +O ( €R€Ù€‚A€‚ÿ // Set the highlight render actionO'ÚN zO ( €N€Ù€‚A€‚ÿ myRenderArea->setGLRenderAction(U-+O ÏO ( €Z€Ù€‚A€‚ÿ new SoBoxHighlightRenderAction());+zO € ( €€Ù€‚A€‚ÿÏO € W/ÏO c€ ( €^€Ù€‚A€‚ÿ // Automatic redraw on selection changesb: € Å€ ( €t€Ù€‚A€‚ÿ myRenderArea->redrawOnSelectionChange(mySelection);+c€ ð€ ( €€Ù€‚A€‚ÿ1 Å€ ! & €€‚A€‚ÿSEE ALSOì€ð€ ‚ l ¦€€”‘€‚Aãö퀉€ã©öø(€‰€ã(ç –€‰€ãÿ3È€‰€ãy‚2€‰€ãΖc`€‰‚ÿSoLineHighlightRenderAction, SoGLRenderAction, SoSelection, SoWinRenderArea, SoDrawStyle, SoInteraction> ! K‚ 1r S@DA‚K‚ €‚ ÁŽ SoButtonEvent5 ‚ €‚ % € €ˆˆ€‚ÿSoButtonEvent*K‚ ª‚ # €€€‚ÿNAMEY3€‚ ƒ & €f€”‘€€‚ÿSoButtonEvent - base class for all button events3ª‚ 6ƒ # € €€‚ÿINHERITS FROMTƒ Šƒ 5 :€>€”‘€ã2™|—€‰€€€‚ÿSoEvent > SoButtonEvent2 6ƒ ¼ƒ & €€€€ ‚ÿSYNOPSISS-Šƒ „ & €Z€”‘€€‚ÿ#include Ú‘¼ƒ é„ I `€#€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum State{SoButtonEvent::UPButton up eventSoButtonEvent::DOWNButton down eventSoButtonEvent::UNKNOWNButton in unknown state}M$„ 6… ) "€H€”‘€‚A€‚ÿMethods from class SoButtonEvent:¹€é„ ï… 9 @€€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒ‚ƒ‚ÿSoButtonEvent()static SoTypegetClassTypeId()voidsetState(SoButtonEvent::State s)SoButtonEvent::StategetState() constO 6… >† / .€@€”‘€‚A€ã2™|—‰‚ÿMethods from class SoEvent:/¢ï… mˆ è€E€T”A‚S~‚A€ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒã4a†6‰‚ã4a†6‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚㊃õ(‰ƒãñf‘¸‰‚ã}ƒõ(‰ƒãñf‘¸‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvoidsetTime(SbTime t)SbTimegetTime() constvoidsetPosition(const SbVec2s &p)const SbVec2s &getPosition() constconst SbVec2s &getPosition(const SbViewportRegion &vpRgn) constconst SbVec2f &getNormalizedPosition(const SbViewportRegion &vpRgn) constvoidsetShiftDown(SbBool isDown)voidsetCtrlDown(SbBool isDown)Äz>† 1‰ J d€ô€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetAltDown(SbBool isDown)SbBoolwasShiftDown() constSbBoolwasCtrlDown() constSbBoolwasAltDown() const4mˆ e‰ & €€‚A€‚ÿDESCRIPTIONv71‰ ÛŠ ? L€o€”‘€‚A€€€€€€€€‚ÿSoButtonEvent represents generic button press and release events in the Open Inventor event model. It is the base class for device-specific button events, namely SoKeyboardEvent, SoMouseButtonEvent, and SoSpaceballButtonEvent. This class stores the down/up state of the button when the event occurred.0 e‰ ‹ & €€‚A€‚ÿMETHODS?ÛŠ J‹ , (€&€T”A‚S~‚A€ƒ‚ÿSoButtonEvent()8 ‹ ‚‹ ) "€€”‘€‚A€‚ÿConstructor.U#J‹ ׋ 2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()c4‚‹ :Œ / .€h€”‘€‚A€€€‚ÿReturn the type id for the SoButtonEvent class.|N׋ ¶Œ . ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetState(SoButtonEvent::State s)SoButtonEvent::StategetState() constP':Œ  ) "€N€”‘€‚A€‚ÿSet and get the state of the button.1 ¶Œ 7 & €€‚A€‚ÿSEE ALSOŠâ ÁŽ ¨ Å€”‘€‚Aã2™|—€‰€ã“[ A€‰€ã-OÁm€‰€ãAùé½€‰€ãÛá–€‰€ã*€‰€ãàꀉ€ã?–/ €‰€ã(ç –€‰€ãΖc`€‰€ãÊÌø!€‰‚ÿSoEvent, SoKeyboardEvent, SoLocation2Event, SoMotion3Event, SoMouseButtonEvent, SoSpaceballButtonEvent, SoHandleEventAction, SoEventCallback, SoSelection, SoInteraction, SoWinDevice= 7 þŽ 1A ÷AÚ†AƒþŽ 2 QÊ SoByteStream4ÁŽ 2 % €€ˆˆ€‚ÿSoByteStream*þŽ \ # €€€‚ÿNAMEnH2 Ê & €€”‘€€‚ÿSoByteStream - converts scene graph objects to character byte streams3\ À # € €€‚ÿINHERITS FROMÊ À ÁŽ 9Ê EÀ ) "€ €”‘€€€‚ÿSoByteStream2 À wÀ & €€€€ ‚ÿSYNOPSISrKEÀ éÀ ' €–€”‘€€‚‚ÿ#include Methods from class SoByteStream:öwÀ ß w ¼€ÿ€T”A‚S~‚A€ƒ‚ƒ‚ƒã’n%9‰ã‘¶p6‰‚ƒãMy'9‰ã‘¶p6‰‚ƒãç2ø¡‰ã‘¶p6‰‚ƒ‚ƒ‚ãç2ø¡‰ƒãø"‰‚ãç2ø¡‰ƒ‚ÿSoByteStream()~SoByteStream()voidconvert(SoNode *node,SbBool binaryFormat = TRUE)voidconvert(SoPath *path,SbBool binaryFormat = TRUE)voidconvert(SoPathList *pathList,SbBool binaryFormat = TRUE)void *getData()uint32_tgetNumBytes()static SoPathList *unconvert(SoByteStream *byteStream)static SoPathList *unconvert(void *data,uint32_t numBytes)4éÀ à & €€‚A€‚ÿDESCRIPTIONb&ß uÄ < F€M€”‘€‚A€€€€€€€‚ÿThis class creates a byte stream representation of a scene graph, using an SoWriteAction to write path lists to an in-memory buffer. Byte streams are commonly used to transfer data in copy and paste operations. (The SoWinClipboard class passes SoByteStream data during copy and paste.)0 à ¥Ä & €€‚A€‚ÿMETHODSQ#uÄ öÄ . ,€F€T”A‚S~‚A€ƒ‚ƒ‚ÿSoByteStream()~SoByteStream()G¥Ä =Å ) "€<€”‘€‚A€‚ÿConstructor and destructor.»öÄ PÆ X ~€w€T”A‚S~‚A€ƒã’n%9‰ã‘¶p6‰‚ƒãMy'9‰ã‘¶p6‰‚ƒãç2ø¡‰ã‘¶p6‰‚ÿvoidconvert(SoNode *node,SbBool binaryFormat = TRUE)voidconvert(SoPath *path,SbBool binaryFormat = TRUE)voidconvert(SoPathList *pathList,SbBool binaryFormat = TRUE) à=Å ZÇ * "€Á€”‘€‚A€‚ÿThese convert the passed scene graph object(s) into a byte stream. The caller may specify whether the byte stream is written in binary (TRUE) or ASCII (FALSE) format, and can pass the object(s) by node, path, or pathList.X*PÆ ²Ç . ,€T€T”A‚S~‚A€ƒ‚ƒ‚ÿvoid *getData()uint32_tgetNumBytes()РZÇ ‚È 0 .€A€”‘€‚A€€€‚ÿThese return the data and number of bytes from the last convert() operation. This byte stream format is well suited to data transfers, like copy and paste.¾}²Ç @É A R€ú€T”A‚S~‚A€ãç2ø¡‰ƒãø"‰‚ãç2ø¡‰ƒ‚ÿstatic SoPathList *unconvert(SoByteStream *byteStream)static SoPathList *unconvert(void *data,uint32_t numBytes)žu‚È ÞÉ ) "€ê€”‘€‚A€‚ÿThese take byte stream data and unconvert it back to scene graph objects. The objects are returned in a path list.1 @É Ê & €€‚A€‚ÿSEE ALSOBÞÉ QÊ / .€&€”‘€‚AãzÅe‰€‰‚ÿSoWinClipboard= Ê ŽÊ 1l+DA5C„ŽÊ ÂÊ æ…!SoCalculator4QÊ ÂÊ % €€ˆˆ€‚ÿSoCalculator*ŽÊ ìÊ # €€€‚ÿNAMET.ÂÊ @Ë & €\€”‘€€‚ÿSoCalculator - a general-purpose calculator3ìÊ sË # € €€‚ÿINHERITS FROMC@Ë Ì M j€†€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoCalculator2 sË 5Ì & €€€€ ‚ÿSYNOPSIStMÌ ©Ì ' €š€”‘€€‚‚ÿ#include Inputs from class SoCalculator:­ú5Ì VÎ ³ 4õ€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ã*{£‰ƒ‚ÿSoMFFloataSoMFFloatbSoMFFloatcSoMFFloatdSoMFFloateSoMFFloatfSoMFFloatgSoMFFloathSoMFVec3fASoMFVec3fBSoMFVec3fCSoMFVec3fDSoMFVec3fESoMFVec3fFSoMFVec3fGSoMFVec3fHSoMFStringexpressionL#©Ì ¢Î ) "€F€”‘€‚A€‚ÿOutputs from class SoCalculator:õŠVÎ —Ï k ¤€€T”A‚S~‚A€ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ÿ(SoMFFloat)oa(SoMFFloat)ob(SoMFFloat)oc(SoMFFloat)od(SoMFVec3f)oA(SoMFVec3f)oB(SoMFVec3f)oC(SoMFVec3f)oDL#¢Î !) "€F€”‘€‚A€‚ÿMethods from class SoCalculator:—Ï !QÊ >—Ï J!, (€$€T”A‚S~‚A€ƒ‚ÿSoCalculator()P! !š!/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}J!š!ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)š!ò!/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØš!W! 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHò!ß!@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NW!-!/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þß!d!Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4-!˜!& €€‚A€‚ÿDESCRIPTION3ýd!Ë!6 :€û€”‘€‚A€€€€€‚ÿThis engine is a general-purpose calculator. The calculator operates on floating-point values and 3D floating-point vectors. The engine takes up to eight inputs of each type (SoMFFloat and SoMFVec3f), and produces up to four outputs of each type.U˜! !B R€'€”‘€‚A€€€€€€€€€‚ÿEach input field (a-h, A-H) can have multiple values, allowing the engine to evaluate the expression with different values in parallel. Some inputs may have more values than others. In such cases, the last value of the shorter inputs will be repeated as necessary.l<Ë!Œ !0 .€y€”‘€‚A€€€‚ÿThe expression input string specifies the expression to be evaluated. An expression can consist of multiple subexpressions. Several subexpressions can be specified in one string, separated by semicolons (;). Alternatively, the subexpressions can be stored in separate strings in the multiple-valued input field.N% !Ú !) "€J€”‘€‚A€‚ÿEach subexpression is of the form:8Œ ! !( € €Ù€‚A€‚ÿ = +Ú != !( €€Ù€‚A€‚ÿ7ï !t!H ^€ß€”‘€‚A€€€€€€€€€€€‚ÿThe can be any one of the outputs or a temporary variable. The engine provides 8 temporary floating-point variables (ta, tb, tc, td, te, tf, tg, and th), and 8 temporary vector variables (tA, tB, tC, tD, tE, tF, tG, and tH). You can assign a value to one component of a vector output (A-H) or a vector variable (tA-tH) by using the [ ] operator. For example, oA[0] = , will evaluate the right hand side and assign the value to the first component of the output vector oA.wN= !ë!) "€œ€”‘€‚A€‚ÿThe supports arithmetic, logical and conditional operators. They are:9t!$!( €"€Ù€‚A€‚ÿ(unary) !, -_7ë!ƒ!( €n€Ù€‚A€‚ÿ(binary) +, -, *, /, %, <, > <=, >=, ==, !=, &&, ||8$!»!( € €Ù€‚A€‚ÿ(ternary) ? :+ƒ! @!( €€Ù€‚A€‚ÿ»! @!QÊ žu»!ª@!) "€ê€”‘€‚A€‚ÿThe ternary operator is a conditional operator. For example, a ? b : c evaluates to b if a != 0, and to c if a==0.Þ @!²A!* "€½€”‘€‚A€‚ÿValid operands for the include the inputs, outputs, temporary variables, and their components (e.g. oA[0]). Operands can also be numeric constants (e.g. 1.0), pre-defined named constants, or pre-defined functions.Dª@!öA!) "€6€”‘€‚A€‚ÿThe named constants are:3 ²A!)B!( €€Ù€‚A€‚ÿMAXFLOAT3 öA!\B!( €€Ù€‚A€‚ÿMINFLOAT.)B!ŠB!( € €Ù€‚A€‚ÿM_E2 \B!¼B!( €€Ù€‚A€‚ÿM_LOG2E3 ŠB!ïB!( €€Ù€‚A€‚ÿM_LOG10E0¼B!C!( €€Ù€‚A€‚ÿM_LN21 ïB!PC!( €€Ù€‚A€‚ÿM_LN10/C!C!( €€Ù€‚A€‚ÿM_PI=PC!¼C!( €*€Ù€‚A€‚ÿM_SQRT2 = sqrt(2)@C!üC!( €0€Ù€‚A€‚ÿM_SQRT1_2 = sqrt(1/2)+¼C!'D!( €€Ù€‚A€‚ÿi@üC!D!) "€€€”‘€‚A€‚ÿMost of the pre-defined functions come from the math library:9'D!ÉD!( €"€Ù€‚A€‚ÿcos, sin, tan,CD! E!( €6€Ù€‚A€‚ÿacos, asin, atan, atan2,<ÉD!HE!( €(€Ù€‚A€‚ÿcosh, sinh, tanh,F E!ŽE!( €<€Ù€‚A€‚ÿsqrt, pow, exp, log, log10,CHE!ÑE!( €6€Ù€‚A€‚ÿceil, floor, fabs, fmod.+ŽE!üE!( €€Ù€‚A€‚ÿj;ÑE!fF!/ .€v€”‘€‚A€€€‚ÿOther functions are defined by SoCalculator. They are:L$üE!²F!( €H€Ù€‚A€‚ÿrand(f) - Random number generatorO'fF!G!( €N€Ù€‚A€‚ÿcross(v1, v2) - Vector cross productK#²F!LG!( €F€Ù€‚A€‚ÿdot(v1, v2) - Vector dot productDG!G!( €8€Ù€‚A€‚ÿlength(v) - Vector lengthJ"LG!ÚG!( €D€Ù€‚A€‚ÿnormalize(v) - Normalize vector^6G!8H!( €l€Ù€‚A€‚ÿvec3f(f1, f2, f3) - Generate a vector from 3 floats+ÚG!cH!( €€Ù€‚A€‚ÿ¿•8H!"I!* "€+€”‘€‚A€‚ÿThe subexpressions are evaluated in order, so a variable set in the of an earlier expression may be used in the of a later expression.CcH!¡K!< F€‡€”‘€‚A€€€€€€€‚ÿNote, when the input has multiple values, all the subexpressions specified in the expression are applied to all the multiple input values. This is unlike the SoBoolOperation engine, where each operation is applied only to the corresponding entries of the input data. Note also, that even though the inputs and outputs can have multiple values the [ ] operator is only for indexing into the values of a single vector. It does not index into the multiple values of a field. For example, if the floating-point input field a has two values: 1.0, and 2.0, then the expressionH "I!éK!( €@€Ù€‚A€‚ÿ"oA[0]=a; oA[1]=a; oA[2]=0.0"+¡K!L!( €€Ù€‚A€‚ÿPéK!“L!/ .€ €”‘€‚A€€€‚ÿwill produce two output vectors in oA: (1.0, 1.0, 0.0) and (2.0, 2.0, 0.0).DL!×L!) "€6€”‘€‚A€‚ÿExamples of expressions:@“L!M!( €0€Ù€‚A€‚ÿ"ta = oA[0]*floor(a)"A×L!XM!( €2€Ù€‚A€‚ÿ"tb = (a+b)*sin(M_PI)"FM!žM!( €<€Ù€‚A€‚ÿ"oA = vec3f(ta, tb, ta+tb)"?XM!ÝM!( €.€Ù€‚A€‚ÿ"oB = normalize(oA)"X0žM!5N!( €`€Ù€‚A€‚ÿ"ta = a; tb = sin(ta); oA = vec3f(ta, tb, 0)"+ÝM!`N!( €€Ù€‚A€‚ÿ/ 5N!N!& €€‚A€‚ÿINPUTSÜr`N!kO!j ¤€ä€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ÿSoMFFloataSoMFFloatbSoMFFloatcSoMFFloatdSoMFFloateSoMFFloatfSoMFFloatgSoMFFloathU,N!ÀO!) "€X€”‘€‚A€‚ÿInputs a-h are the floating-point values.ÜrkO!¨€!j ¤€ä€T”A‚S~‚Aãòi`€‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒÀO!¨€!QÊ ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ÿSoMFVec3fASoMFVec3fBSoMFVec3fCSoMFVec3fDSoMFVec3fESoMFVec3fFSoMFVec3fGSoMFVec3fHGÀO!ï€!) "€<€”‘€‚A€‚ÿInputs A-H are the vectors.L¨€!;!2 4€4€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringexpressionK"ï€!†!) "€D€”‘€‚A€‚ÿThe expression to be evaluated.0 ;!¶!& €€‚A€‚ÿOUTPUTSF†!F‚!J d€Œ€T”A‚S~‚A€ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ÿ(SoMFFloat)oa(SoMFFloat)ob(SoMFFloat)oc(SoMFFloat)odX/¶!ž‚!) "€^€”‘€‚A€‚ÿOutputs oa-od are the floating-point values.FF‚!.ƒ!J d€Œ€T”A‚S~‚A€ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ÿ(SoMFVec3f)oA(SoMFVec3f)oB(SoMFVec3f)oC(SoMFVec3f)oDJ!ž‚!xƒ!) "€B€”‘€‚A€‚ÿOutputs oA-oD are the vectors.0 .ƒ!¨ƒ!& €€‚A€‚ÿMETHODS>xƒ!æƒ!, (€$€T”A‚S~‚A€ƒ‚ÿSoCalculator()7¨ƒ!„!) "€€”‘€‚A€‚ÿConstructor<æƒ!Y„!& €,€‚A€‚ÿFILE FORMAT/DEFAULT9„!’„!* $€€P„7|‚€‚ÿCalculator {ÀsY„!R…!M j€æ€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿa0b0c0d0e0f0g0h0A0 0 0B0 0 0C0 0 0D0 0 0E0 0 0F0 0 0G0 0 0H0 0 0expression""}1 ’„!ƒ…!& €€‚€‚ÿSEE ALSOc(R…!æ…!; F€P€”‘€‚ãë\¼N€‰€ã}žb뀉‚ÿSoEngineOutput, SoBoolOperation; ƒ…!!†!1‚Ú†AÀ†C…!†!S†!¯Ë!SoCallback2 æ…!S†!% €€ˆˆ€‚ÿSoCallback*!†!}†!# €€€‚ÿNAME]7S†!Ú†!& €n€”‘€€‚ÿSoCallback - provides custom behavior during actions3}†! ‡!# € €€‚ÿINHERITS FROMŒ?Ú†!™‡!M j€~€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoCallback2 ‡!ˇ!& €€€€ ‚ÿSYNOPSISO)™‡!ˆ!& €R€”‘€€‚ÿ#include s@ˇ!ˆ!3 6€€€T”A‚S~‚A€ƒãïK‰‚ÿtypedef voidSoCallbackCB(void *userData,SoAction *action)J!ˆ!׈!) "€B€”‘€‚A€‚ÿMethods from class SoCallback:¤mˆ!{‰!7 >€Ú€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoCallback()voidsetCallback(SoCallbackCB *func,void *userData = NULL)static SoTypegetClassTypeId()N׈!ɉ!/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|{‰!E‹!n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ɉ!‹!/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØE‹!Ž! 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH‹!ŠŽ!@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NŽ!ØŽ!/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞŠŽ!À!Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegeØŽ!À!æ…!tName() const4ØŽ!OÀ!& €€‚A€‚ÿDESCRIPTION$úÀ!sÂ!* "€õ€”‘€‚A€‚ÿThis node provides a general mechanism for inserting callback functions into a scene graph. The callback function registered with the node is called each time the node is traversed while performing any scene graph action. The callback function is passed a pointer to the action being performed and a user data pointer registered with the callback function. You can use this node to make nonstandard OpenGL calls while rendering. If you do, be careful not to interfere with Open Inventor's use of OpenGL.Q'OÀ!ÄÃ!* "€O€”‘€‚A€‚ÿIf you use a callback node for GL rendering, you should be careful to follow render caching rules. If your callback node can make different rendering calls each time it is traversed, it cannot be cached. In such a case, the node should invalidate any open caches, as in the following example:/sÂ!óÃ!( €€Ù€‚A€‚ÿvoidV.ÄÃ!IÄ!( €\€Ù€‚A€‚ÿmyCallbackFunc(void *d, SoAction *action) {jBóÃ!³Ä!( €„€Ù€‚A€‚ÿ if (action->isOfType(SoGLRenderAction::getClassTypeId())){ L$IÄ!ÿÄ!( €H€Ù€‚A€‚ÿ // Make my custom GL callsN&³Ä!MÅ!( €L€Ù€‚A€‚ÿ ((MyClass *) d)->myRender();+ÿÄ!xÅ!( €€Ù€‚A€‚ÿe=MÅ!ÝÅ!( €z€Ù€‚A€‚ÿ // Invalidate the state so that a cache is not madea9xÅ!>Æ!( €r€Ù€‚A€‚ÿ SoCacheElement::invalidate(action->getState());0ÝÅ!nÆ!( €€Ù€‚A€‚ÿ }->Æ!›Æ!( € €Ù€‚H€ƒ‚ÿ}*nÆ!ÅÆ!' €€Ù€‚H€‚ÿ/ ›Æ!ôÆ!% €€‚H€‚ÿMETHODS<ÅÆ!0Ç!, (€ €T”A‚S~‚A€ƒ‚ÿSoCallback()Z1ôÆ!ŠÇ!) "€b€”‘€‚A€‚ÿCreates a callback node with default settings.k>0Ç!õÇ!- *€|€T”A‚S~‚A€ƒ‚ÿvoidsetCallback(SoCallbackCB *func,void *userData = NULL)£zŠÇ!˜È!) "€ô€”‘€‚A€‚ÿSets pointer to callback function and user data. By default, the function pointer in the node is NULL and does nothing.U#õÇ!íÈ!2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*˜È!@É!) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8íÈ!xÉ!& €$€‚A€‚ÿACTION BEHAVIOR~@@É!öÉ!> L€€€”‘€‚Aã©öø(€‰ããS¯+‰ã#º…ö‰€‚ÿSoGLRenderAction, SoGetBoundingBoxAction, SoPickActionf:xÉ!\Ê!, (€t€”‘€‚A€€‚ÿCalls the specified callback function for all actions.<öÉ!˜Ê!& €,€‚A€‚ÿFILE FORMAT/DEFAULT7 \Ê!ÏÊ!* $€€P„7|‚€‚ÿCallback {0˜Ê!ÿÊ!+ &€ €P„|‚€‚‚ÿ}1 ÏÊ!0Ë!& €€‚€‚ÿSEE ALSO8ÿÊ!¯Ë!G ^€p€”‘€‚ãïK€‰€ã³DfL€‰€ã?–/ €‰‚ÿSoAction, SoCallbackAction, SoEventCallbackA0Ë!ðË!1i25C{ E†ðË!(Ì!bŽ"SoCallbackAction8¯Ë!(Ì!% €&€ˆˆ€‚ÿSoCallbackAction*ðË!RÌ!# €€€‚ÿNAMEkE(Ì!½Ì!& €Š€”‘€€‚ÿSoCallbackAction - performs a generic traversal of the scene graph3RÌ!ðÌ!# € €€‚ÿINHERITS FROMX#½Ì!HÍ!5 :€F€”‘€ãïK€‰€€€‚ÿSoAction > SoCallbackAction2 ðÌ!zÍ!& €€€€ ‚ÿSYNOPSISW1HÍ!ÑÍ!& €b€”‘€€‚ÿ#include zÍ!\"{ Ä€ €T”A‚S~‚A€ƒãkNÞ‰ãkNÞ‰ãkNÞ‰‚ƒã³DfL‰ãkNÞ‰ãkNÞ‰‚ƒã³DfL‰ãkNÞ‰‚ƒã³DfL‰ã’n%9‰‚ÿtypedef voidSoTriangleCB(void *userData,SoCallbackAction *action,const SoPrimitiveVertex *v1,const SoPrimitiveVertex *v2,const SoPrimitiveVertex *v3)typedef voidSoLineSegmentCB(void *userData,SoCallbackAction *action,const SoPrimitiveVertex *v1,const SoPrimitiveVertex *v2)typedef voidSoPointCB(void *userData,SoCallbackAction *action,const SoPrimitiveVertex *v)typedef SoCallbackAction::ResponseSoCallÑÍ!\"¯Ë!backActionCB(void *userData,SoCallbackAction *action,const SoNode *node)#ÚÑÍ!"I `€µ€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum Response{SoCallbackAction::CONTINUEContinue traversal as if nothing happenedSoCallbackAction::ABORTAbort traversalSoCallbackAction::PRUNEDo not traverse node's children, but continue traversal}P'\"Ï") "€N€”‘€‚A€‚ÿMethods from class SoCallbackAction: °"Ú"[ „€a€T”A‚S~‚A€ƒ‚ƒãB-9‰‚ƒãB-9‰‚ƒ‚ƒ‚ƒãB-9‰‚ƒãB-9‰‚ÿSoCallbackAction()voidaddPreCallback(SoType type,SoCallbackActionCB *cb,void *data)voidaddPostCallback(SoType type,SoCallbackActionCB *cb,void *data)voidaddPreTailCallback(SoCallbackActionCB *cb,void *data)voidaddPostTailCallback(SoCallbackActionCB *cb,void *data)voidaddTriangleCallback(SoType type,SoTriangleCB *cb,void *data)voidaddLineSegmentCallback(SoType type,SoLineSegmentCB *cb,void *data)%¾Ï"ÿ"g œ€}€T”A‚S~‚A€ƒãB-9‰‚ƒ‚ãžvšN‰ƒ‚ƒ‚㨃õ(‰ƒ‚ãÓƒõ(‰ƒ‚ãy‚2‰ƒ‚ƒ‚ƒ‚ƒ‚ãúß~6‰ƒ‚ÿvoidaddPointCallback(SoType type,SoPointCB *cb,void *data)floatgetComplexity() constSoComplexity::TypegetComplexityType() constint32_tgetNumCoordinates() constconst SbVec3f &getCoordinate3(int index) constconst SbVec4f &getCoordinate4(int index) constSoDrawStyle::StylegetDrawStyle() constunsigned shortgetLinePattern() constfloatgetLineWidth() constfloatgetPointSize() constconst SbName &getFontName() constCÌÚ"B"w ¼€™€T”A‚S~‚A€ƒ‚ãg!à‚‰ƒ‚㨃õ(‰ƒ‚ƒãÀ"%‰ãÀ"%‰ãÀ"%‰ãÀ"%‰‚ãÞ!€‰ƒ‚ƒ‚㨃õ(‰ƒ‚ãRÜ4‰ƒ‚ÿfloatgetFontSize() constSoLightModel::ModelgetLightModel() constconst SbVec3f &getLightAttenuation() constvoidgetMaterial(SbColor &ambient,SbColor &diffuse,SbColor &specular,SbColor &emission,float &shininess,float &transparency,int mtlIndex = 0) constSoMaterialBinding::BindinggetMaterialBinding() constlonggetNumNormals() constconst SbVec3f &getNormal(int index) constSoNormalBinding::BindinggetNormalBinding() constBÙÿ"„ "i  €³€T”A‚S~‚A€ƒ‚ã}ƒõ(‰ƒ‚㨃õ(‰ƒ‚ãœÐ‰ƒ‚ãsBmf‰ƒ‚ãsBmf‰ƒ‚ãsBmf‰ƒ‚ƒ‚ƒ‚ã}ƒõ(‰ƒ‚ÿint32_tgetNumProfileCoordinates() constconst SbVec2f &getProfileCoordinate2(int index) constconst SbVec3f &getProfileCoordinate3(int index) constconst SoNodeList &getProfile() constSoShapeHints::VertexOrderinggetVertexOrdering() constSoShapeHints::ShapeTypegetShapeType() constSoShapeHints::FaceTypegetFaceType() constfloatgetCreaseAngle() constint32_tgetNumTextureCoordinates() constconst SbVec2f &getTextureCoordinate2(int index) const®B"ž "l ¦€]€T”A‚S~‚A€ãÓƒõ(‰ƒ‚ãf;1c‰ƒ‚ãÀ"%‰ƒ‚ƒãŠƒõ(‰‚ã4i¥‘‰ƒ‚ãÿÓ>щƒ‚ãÿÓ>щƒ‚ãÿÓ>щƒ‚ÿconst SbVec4f &getTextureCoordinate4(int index) constSoTextureCoordinateBinding::BindinggetTextureCoordinateBinding() constconst SbColor &getTextureBlendColor() constconst unsigned char *getTextureImage(SbVec2s &size,int &numComps) constconst SbMatrix &getTextureMatrix() constSoTexture2::ModelgetTextureModel() constSoTexture2::WrapgetTextureWrapS() constSoTexture2::WrapgetTextureWrapT() const˜9„ "6"_ Œ€s€T”A‚S~‚A€ã4i¥‘‰ƒ‚ã­µš‰ƒ‚ƒ‚ã4i¥‘‰ƒ‚ã4i¥‘‰ƒ‚㪮§O‰ƒ‚ãX«]˜‰ƒ‚ƒ‚ÿconst SbMatrix &getModelMatrix() constSoUnits::UnitsgetUnits() constfloatgetFocalDistance() constconst SbMatrix &getProjectionMatrix() constconst SbMatrix &getViewingMatrix() constconst SbViewVolume &getViewVolume() constSoPickStyle::StylegetPickStyle() constint32_tgetSwitch() constP!ž "†"/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†6"@"j ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalid†"@"¯Ë!ateState()4†"L@"& €€‚A€‚ÿDESCRIPTIONè@"^A"* "€Ñ€”‘€‚A€‚ÿThis action defines a generic traversal of the scene graph. The user can specify callback functions for node types or paths; when those node types or paths are encountered during traversal, the user's callback function is called.3÷L@"‘C"< F€ï€”‘€‚A€€€€€€€‚ÿIn addition, callback functions can be registered for primitives generated by shapes in the scene graph. Most shape types can generate primitives that represent or approximate their geometries. Triangle primitives are used for all surfaces (such as cubes, face sets, or 3D text), line segment primitives are used for line shapes, and point primitives are used for point shapes. Note that the type of primitives generated for a shape is the same, regardless of drawing style or other properties.÷Í^A"ˆD"* "€›€”‘€‚A€‚ÿMost of the methods on this class access information from the traversal state. They should be called only by callback functions that are invoked during traversal, so there is a valid state to work with.0 ‘C"¸D"& €€‚A€‚ÿMETHODSBˆD"úD", (€,€T”A‚S~‚A€ƒ‚ÿSoCallbackAction()<¸D"6E") "€&€”‘€‚A€‚ÿThe constructor.БúD"F"? L€#€T”A‚S~‚A€ƒãB-9‰‚ƒãB-9‰‚ÿvoidaddPreCallback(SoType type,SoCallbackActionCB *cb,void *data)voidaddPostCallback(SoType type,SoCallbackActionCB *cb,void *data)d:6E"jG"* "€u€”‘€‚A€‚ÿThese add a callback function to call when a node of the given type is encountered during traversal. The PreCallback is called just before the node is traversed, and the PostCallback is called just after. The value returned by a callback function indicates whether the action should continue with the traversal.«{F"H"0 0€ö€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddPreTailCallback(SoCallbackActionCB *cb,void *data)voidaddPostTailCallback(SoCallbackActionCB *cb,void *data)æ¼jG"ûH"* "€y€”‘€‚A€‚ÿThese can be used to set up callback functions to call when the action is applied to a path. The functions are called just before or after the node at the tail of the path is traversed.ÔH"J"I `€©€T”A‚S~‚A€ƒãB-9‰‚ƒãB-9‰‚ƒãB-9‰‚ÿvoidaddTriangleCallback(SoType type,SoTriangleCB *cb,void *data)voidaddLineSegmentCallback(SoType type,SoLineSegmentCB *cb,void *data)voidaddPointCallback(SoType type,SoPointCB *cb,void *data)íûH"/K"* "€Û€”‘€‚A€‚ÿRoutines to add callbacks for generated primitives (triangles, line segments, and points) for all shapes of the given type. The callback function will be called for each primitive generated for all shapes of or derived from that type.MJ"°K"4 8€š€T”A‚S~‚A€ƒ‚ãžvšN‰ƒ‚ÿfloatgetComplexity() constSoComplexity::TypegetComplexityType() constZ1/K" L") "€b€”‘€‚A€‚ÿReturns complexity information from the state.ň°K"ÏL"= H€€T”A‚S~‚A€ƒ‚㨃õ(‰ƒ‚ãÓƒõ(‰ƒ‚ÿint32_tgetNumCoordinates() constconst SbVec3f &getCoordinate3(int index) constconst SbVec4f &getCoordinate4(int index) const[2 L"*M") "€d€”‘€‚A€‚ÿReturns the current coordinates from the state.ÁˆÏL"ëM"9 @€€T”A‚S~‚Aãy‚2€‰ƒ‚ƒ‚ƒ‚ƒ‚ÿSoDrawStyle::StylegetDrawStyle() constunsigned shortgetLinePattern() constfloatgetLineWidth() constfloatgetPointSize() consti@*M"TN") "€€€”‘€‚A€‚ÿReturns the current drawing style information from the state.uAëM"ÉN"4 8€‚€T”A‚S~‚A€ãúß~6‰ƒ‚ƒ‚ÿconst SbName &getFontName() constfloatgetFontSize() const`7TN")O") "€n€”‘€‚A€‚ÿReturns the current font information from the state.–\ÉN"¿O": D€¸€T”A‚S~‚Aãg!à‚€‰ƒ‚㨃õ(‰ƒ‚ÿSoLightModel::ModelgetLightModel() constconst SbVec3f &getLightAttenuation() constjA)O"5€") "€‚€”‘€‚A€‚ÿReturns the current lig¿O"5€"¯Ë!hting model information from the state./Ü¿O"d"S t€¹€T”A‚S~‚A€ƒãÀ"%‰ãÀ"%‰ãÀ"%‰ãÀ"%‰‚ãÞ!€‰ƒ‚ÿvoidgetMaterial(SbColor &ambient,SbColor &diffuse,SbColor &specular,SbColor &emission,float &shininess,float &transparency,int mtlIndex = 0) constSoMaterialBinding::BindinggetMaterialBinding() const³ƒ5€"‚"0 .€€”‘€‚A€€€‚ÿReturns the current material information from the state. Providing a mtlIndex will return the material defined for that index.º~d"Ñ‚"< H€ü€T”A‚S~‚A€ƒ‚㨃õ(‰ƒ‚ãRÜ4‰ƒ‚ÿlonggetNumNormals() constconst SbVec3f &getNormal(int index) constSoNormalBinding::BindinggetNormalBinding() constb9‚"3ƒ") "€r€”‘€‚A€‚ÿReturns the current normal information from the state. ÅÑ‚"=„"E X€‹€T”A‚S~‚A€ƒ‚ã}ƒõ(‰ƒ‚㨃õ(‰ƒ‚ãœÐ‰ƒ‚ÿint32_tgetNumProfileCoordinates() constconst SbVec2f &getProfileCoordinate2(int index) constconst SbVec3f &getProfileCoordinate3(int index) constconst SoNodeList &getProfile() constnE3ƒ"«„") "€Š€”‘€‚A€‚ÿReturns the current profiles and their coordinates from the state.ù´=„"¤…"E X€i€T”A‚S~‚AãsBmf€‰ƒ‚ãsBmf‰ƒ‚ãsBmf‰ƒ‚ƒ‚ÿSoShapeHints::VertexOrderinggetVertexOrdering() constSoShapeHints::ShapeTypegetShapeType() constSoShapeHints::FaceTypegetFaceType() constfloatgetCreaseAngle() const[2«„"ÿ…") "€d€”‘€‚A€‚ÿReturns the current shape hints from the state.¸b¤…"·‡"V z€Å€T”A‚S~‚A€ƒ‚ã}ƒõ(‰ƒ‚ãÓƒõ(‰ƒ‚ãf;1c‰ƒ‚ãÀ"%‰ƒ‚ƒãŠƒõ(‰‚ÿint32_tgetNumTextureCoordinates() constconst SbVec2f &getTextureCoordinate2(int index) constconst SbVec4f &getTextureCoordinate4(int index) constSoTextureCoordinateBinding::BindinggetTextureCoordinateBinding() constconst SbColor &getTextureBlendColor() constconst unsigned char *getTextureImage(SbVec2s &size,int &numComps) constúÄÿ…"±ˆ"6 :€‰€”‘€‚A€€€€€‚ÿReturns texture information from the state. getNumTextureCoordinates() returns 0 if texture coordinates are generated by a function. getTextureImage() returns NULL if no texture is enabled.û°·‡"¬‰"K d€a€T”A‚S~‚A€ã4i¥‘‰ƒ‚ãÿÓ>щƒ‚ãÿÓ>щƒ‚ãÿÓ>щƒ‚ÿconst SbMatrix &getTextureMatrix() constSoTexture2::ModelgetTextureModel() constSoTexture2::WrapgetTextureWrapS() constSoTexture2::WrapgetTextureWrapT() constkB±ˆ"Š") "€„€”‘€‚A€‚ÿReturns the current texture mapping information from the state.ˆN¬‰"ŸŠ": D€œ€T”A‚S~‚A€ã4i¥‘‰ƒ‚ã­µš‰ƒ‚ÿconst SbMatrix &getModelMatrix() constSoUnits::UnitsgetUnits() const}TŠ"‹") "€¨€”‘€‚A€‚ÿReturns the current modeling transformation and the current units from the state.î©ŸŠ" Œ"E X€S€T”A‚S~‚A€ƒ‚ã4i¥‘‰ƒ‚ã4i¥‘‰ƒ‚㪮§O‰ƒ‚ÿfloatgetFocalDistance() constconst SbMatrix &getProjectionMatrix() constconst SbMatrix &getViewingMatrix() constconst SbViewVolume &getViewVolume() constnE‹"xŒ") "€Š€”‘€‚A€‚ÿReturns the current camera and viewing information from the state.^, Œ"ÖŒ"2 4€X€T”A‚S~‚AãX«]˜€‰ƒ‚ÿSoPickStyle::StylegetPickStyle() constN%xŒ"$") "€J€”‘€‚A€‚ÿReturns the current picking style.HÖŒ"l", (€8€T”A‚S~‚A€ƒ‚ÿint32_tgetSwitch() constM$$"¹") "€H€”‘€‚A€‚ÿReturns the current switch value.1 l"ê"& €€‚A€‚ÿSEE ALSOx1¹"bŽ"G ^€b€”‘€‚AãM*Ÿ€‰€ã?–/ €‰€ã9ÖEš€‰‚ÿSoCallback, SoEventCallback, SoShape?ê"¡Ž"1ä À†Ch†¡‡¡Ž"׎"’È"SoCallbackList6bŽ"׎"% €"€ˆˆ€‚ÿSoCallbackList*¡Ž""# €€€‚ÿNAMErL׎"s"& €˜€”‘€€‚ÿSoCallbackList - manages a list of callback functions and associated data3"¦"# € €€‚ÿINHERITS FROM;s"á") "€$€”‘€€€‚ÿSoCallbackList2 ¦"À"& €€€á"À"bŽ"€ ‚ÿSYNOPSISR,á"qÀ"& €X€”‘€€‚ÿ#include qDÀ"âÀ"- *€ˆ€T”A‚S~‚A€ƒ‚ÿtypedef voidSoCallbackListCB(void *userData,void *callbackData)N%qÀ"0Á") "€J€”‘€‚A€‚ÿMethods from class SoCallbackList::ÿâÀ"jÂ"; D€ÿ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSoCallbackList()~SoCallbackList()voidaddCallback(SoCallbackListCB *f,void *userData = NULL)voidremoveCallback(SoCallbackListCB *f,void *userData = NULL)voidclearCallbacks()intgetNumCallbacks() constvoidinvokeCallbacks(void *callbackData)40Á"žÂ"& €€‚A€‚ÿDESCRIPTIONpFjÂ"Ä"* "€€”‘€‚A€‚ÿThis class manages a list of callback functions and user data. The user can add a callback function to the list, along with user data. When the callback is invoked, it is passed this user data, along with callback data specified by the invoking routine. The type of this callback data is determined by the invoking routine.0 žÂ">Ä"& €€‚A€‚ÿMETHODSU'Ä"“Ä". ,€N€T”A‚S~‚A€ƒ‚ƒ‚ÿSoCallbackList()~SoCallbackList()G>Ä"ÚÄ") "€<€”‘€‚A€‚ÿConstructor and destructor.¯“Ä"‰Å"0 0€þ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddCallback(SoCallbackListCB *f,void *userData = NULL)voidremoveCallback(SoCallbackListCB *f,void *userData = NULL)yPÚÄ"Æ") "€ €”‘€‚A€‚ÿAdds a function to or removes a function from the list of callback functions.D‰Å"FÆ", (€0€T”A‚S~‚A€ƒ‚ÿvoidclearCallbacks()X/Æ"žÆ") "€^€”‘€‚A€‚ÿClears all callback functions from the list.JFÆ"èÆ", (€<€T”A‚S~‚A€ƒ‚ÿintgetNumCallbacks() consta8žÆ"IÇ") "€p€”‘€‚A€‚ÿReturns the number of callback functions in the list.W+èÆ" Ç", (€V€T”A‚S~‚A€ƒ‚ÿvoidinvokeCallbacks(void *callbackData)òÂIÇ"’È"0 .€…€”‘€‚A€€€‚ÿInvokes each callback function in the list, passing each function the user data supplied when they were registered here, and callbackData, the callback-specific data supplied by the caller.<  Ç"ÎÈ"1ì h†¡rƒFˆÎÈ"É"¼I#SoCameraKit3’È"É"% €€ˆˆ€‚ÿSoCameraKit*ÎÈ"+É"# €€€‚ÿNAMEK%É"vÉ"& €J€”‘€€‚ÿSoCameraKit - camera nodekit class3+É"©É"# € €€‚ÿINHERITS FROM©PvÉ"RÊ"Y ‚€ €”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoCameraKit2 ©É"„Ê"& €€€€ ‚ÿSYNOPSISrKRÊ"öÊ"' €–€”‘€€‚‚ÿ#include Parts from class SoCameraKit:j0„Ê"`Ë": D€`€T”A‚S~‚A€ã¼ýÓ‰ƒ‚ã½V)\‰ƒ‚ÿ(SoTransform)transform(SoCamera)cameraO öÊ"¯Ë"/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%`Ë"Ì"2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListK"¯Ë"QÌ") "€D€”‘€‚A€‚ÿMethods from class SoCameraKit:¯sÌ"Í"< H€æ€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoCameraKit()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"QÌ"QÍ"/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:8®Í"‰Ï"Š â€]€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒ‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}QÍ"T#B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBooli‰Ï"T#’È"sSearchingChildren()static voidsetSearchingChildren(SbBool newVal)N‰Ï"¢#/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|T##n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¢#v#/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®#©#… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHv#1#@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N©##/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ1#¶#Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constH#þ#) "€>€”‘€‚A€‚ÿMacros from class SoBaseKit:U)¶#S#, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+þ#ª#, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4S#Þ#& €€‚A€‚ÿDESCRIPTION檪#Ä#< F€U€”‘€‚A€€€€€€€‚ÿThis nodekit class is used to create camera nodes that have a local transformation. SoCameraKit adds two public parts to the basic nodekit: transform and camera.À„Þ#„ #< F€ €”‘€‚A€€€€€€€‚ÿThe camera part is created by default as an SoPerspectiveCamera node, but may later be changed to any subclass of SoCamera.™jÄ# #/ .€Ô€”‘€‚A€€€‚ÿYou can move the camera relative to the rest of the scene by creating and editing the transform part.Cø„ #` #K d€ñ€”‘€‚A€€€€€€€€€€€€‚ÿSoCameraKit also adds a private part, transformGroup, which is of type SoTransformSeparator. The kit uses this part to contain the effect of transform to move only the camera, while allowing the camera to affect the rest of the scene.«s # #8 @€æ€”‘€‚A€€€€€€‚ÿSoCameraKit is derived from SoBaseKit and thus also includes a callbackList part for adding callback nodes..` #9 #& €€‚A€‚ÿPARTSN #‡ #2 4€8€T”A‚S~‚A€ã¼ýÓ‰ƒ‚ÿ(SoTransform)transformæ9 #£ #6 :€Í€”‘€‚A€€€€€‚ÿA transform that positions and orients the camera relative to the rest of the scene. Private parts keep the effect of the transform part localized. This part is NULL by default, but may be set to any subclass of SoTransformL‡ #ï #5 :€.€T”A‚S~‚A€ã½V)\‰ƒ€‚ÿ(SoCamera)camera%Ý£ ##H ^€»€”‘€‚A€€€€€€€€€€€‚ÿThe camera node for this nodekit. The camera part is created by default as an SoPerspectiveCamera node, but may later be changed to any subclass of SoCamera. (e.g., SoPerspectiveCamera, SoOrthographicCamera).0 ï #D#& €€‚A€‚ÿMETHODS=##, (€"€T”A‚S~‚A€ƒ‚ÿSoCameraKit()8D#¹#) "€€”‘€‚A€‚ÿConstructor.uC#:@#2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNode¹#:@#’È"kitCatalog *getClassNodekitCatalog() constr=¹#¬@#5 :€z€”‘€‚A€€€€€‚ÿReturns an SoNodekitCatalog for the class SoCameraKit.U#:@#A#2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¬@#TA#) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6A#ŠA#& € €‚A€‚ÿCATALOG PARTS;TA#ÅA#- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜ŠA#]B#~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/ÅA#C##ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2]B#ÞC##ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes¹)C#—D##ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿtransformTransform--yesÁ1ÞC#XE##ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€*€ÿ€,€€€‚ÿ€V€€€‚ÿÿÿcameraCameraPerspectiveCamerano,—D#„E#' € €€‚€‚ÿ]5XE#áE#( €j€”‚±€ƒ‚ÿExtra Information for List Parts from Above Table’1„E#sF#a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8áE# G#a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback?sF#KG#' €0€€‚€‚ÿFILE FORMAT/DEFAULT8 G#ƒG#* $€€P„7|‚€‚ÿCameraKit {wDKG#úG#3 6€ˆ€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿcallbackListNULLtransformNULLcameraPerspectiveCamera {}}1 ƒG#+H#& €€‚€‚ÿSEE ALSO‘ÝúG#¼I#´ 6»€”‘€‚ãNw¶°€‰€ãib€‰€ã€ÀÏ€‰€ã0d$€‰€ã•£&ô€‰€ã½á–€‰€ã}选€ãõˆ¨f€‰€ã’o>€ãOËr€‰€ãЃ'€‰€ã°çT€‰‚ÿSoAppearanceKit, SoBaseKit, SoLightKit, SoNodeKit, SoNodeKitDetail, SoNodeKitListPart, SoNodeKitPath, SoNodekitCatalog, SoSceneKit, SoSeparatorKit, SoShapeKit, SoWrapperKitD+H#J#1UU…EøI‰J#;J#‡‹$SoCenterballDragger;¼I#;J#% €,€ˆˆ€‚ÿSoCenterballDragger*J#eJ## €€€‚ÿNAMEY;J#äJ#& €²€”‘€€‚ÿSoCenterballDragger - striped ball you rotate and re-center by dragging with the mouse3eJ#K## € €€‚ÿINHERITS FROMðäJ#L#q ²€þ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoCenterballDragger2 K#9L#& €€€€ ‚ÿSYNOPSISƒ\L#¼L#' €¸€”‘€€‚‚ÿ#include Fields from class SoCenterballDragger:g-9L##M#: D€Z€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ã”5‰ƒ‚ÿSoSFRotationrotationSoSFVec3fcenterP!¼L#sM#/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:H#M#»M#2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(sM#N#/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³i»M#ÅN#J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO N#O#/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%ÅN#kO#2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListS*O#¾O#) "€T€”‘€‚A€‚ÿMethods from class SoCenterballDragger:·{kO#€#< H€ö€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoCe¾O#€#¼I#nterballDragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"¾O#Ò€#/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:K€#ƒ#C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨Ò€#„#; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)ƒ#X„#/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”U„#ì„#? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"X„#=…#/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:8®ì„#u‡#Š â€]€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒ‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}=…#4ˆ#B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)Nu‡#‚ˆ#/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|4ˆ#þ‰#n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)‚ˆ#VŠ#/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®þ‰#‰Œ#… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHVŠ##@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N‰Œ#_#/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ#–Ž#Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!_#æŽ#/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)–Ž#;#, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+æŽ#’#, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4;#Æ#& €€‚A€‚ÿDESCRIPTION‚O’#TÂ#3 4€Ÿ€”‘€‚A€€€€‚ÿSoCentÆ#TÂ#¼I#erballDragger is a composite dragger. Its shape is a sphere defined by three intersecting circles. Where the circles intersect (at the ends of the x, y and z axes) there are sets of small green crosshairs. Dragging a pair of crosshairs translates the entire centerball within the plane of the crosshairs. The interface of the sphere and circles is just like SoTrackballDragger. Dragging a circle rotates about a constrained axis and dragging the areas between them rotates the sphere freely about the center. An invisible but pickable sphere initiates the free-rotation dragging./óÆ#ƒÃ#< F€ç€”‘€‚A€€€€€€€‚ÿWhen you drag the crosshairs, the center field is updated; there is no translation field. Dragging other parts of the centerball updates the rotation field. As with all draggers, if you change the fields the dragger moves in response.„HTÂ#Å#< F€‘€”‘€‚A€€€€€€€‚ÿThe draggers used for the crosshair parts are SoTranslate2Draggers, so pressing the key allows you to constrain motion to slide along either the local x axis or y axis of that crosshair.. The direction is determined by your initial mouse gesture after pressing the key. Releasing the key removes the constraint.ªrƒÃ#±Å#8 @€ä€”‘€‚A€€€€€€‚ÿRemember: This is not an SoTransform! If you want to move other objects with this dragger, you can either:!åÅ#ÒÆ#< F€Ë€”‘€‚A€€€€€€€‚ÿ[a] Use an SoCenterballManip, which is subclassed from SoTransform. The manipulator creates one of these draggers and uses it as the interface to edit the manipulator's fields. (See the SoCenterballManip reference page.)£t±Å#uÇ#/ .€è€”‘€‚A€€€‚ÿ[b] Use field-to-field connections to connect the fields of this dragger to those of any SoTransformation node.c!ÒÆ#ØÉ#B R€C€”‘€‚A€€€€€€€€€‚ÿYou can change the parts in any instance of this dragger using setPart(). The default part geometries are defined as resources for this SoCenterballDragger class. They are detailed in the Dragger Resources section of the online reference page for this class. You can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/centerballDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ uÇ#Ê#& €€‚A€‚ÿFIELDSLØÉ#SÊ#2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationR)Ê#¥Ê#) "€R€”‘€‚A€‚ÿOrientation of the centerball dragger.GSÊ#ìÊ#2 4€*€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fcenterc:¥Ê#OË#) "€t€”‘€‚A€‚ÿCenter of rotation and scale of the centerball dragger.0 ìÊ#Ë#& €€‚A€‚ÿMETHODSEOË#ÄË#, (€2€T”A‚S~‚A€ƒ‚ÿSoCenterballDragger()8Ë#üË#) "€€”‘€‚A€‚ÿConstructor.uCÄË#qÌ#2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const_0üË#ÐÌ#/ .€`€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this class.U#qÌ#%Í#2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ÐÌ#xÍ#) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6%Í#®Í#& € €‚A€‚ÿCATALOG PARTS;xÍ#éÍ#- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜®Í#Î#~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/éÍ#@Ï##ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2Î#$#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes@Ï#$¼I#Ç7@Ï#Õ$#ð€nÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€R€ÿ€T€€€‚ÿ€`€€€‚ÿÿÿtranslateToCenterMatrixTransform--yesÁ1$–$#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿsurroundScaleSurroundScale--yesº*Õ$P$#ð€TÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿantiSquishAntiSquish--no»+–$ $#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿlightModelLightModel--yesµ%P$À$#ð€JÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€.€ÿ€0€€€‚ÿ€<€€€‚ÿÿÿXAxisSeparator--yesµ% $u$#ð€JÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€.€ÿ€0€€€‚ÿ€<€€€‚ÿÿÿYAxisSeparator--yesµ%À$*$#ð€JÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€.€ÿ€0€€€‚ÿ€<€€€‚ÿÿÿZAxisSeparator--yesÄ4u$î$#ð€hÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€L€ÿ€N€€€‚ÿ€Z€€€‚ÿÿÿrotatorRotateSphericalDragger--yesÇ7*$µ$#ð€nÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€R€ÿ€T€€€‚ÿ€`€€€‚ÿÿÿYRotatorRotateCylindricalDragger--yesÆ6î${$#ð€lÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€P€ÿ€R€€€‚ÿ€^€€€‚ÿÿÿZCenterChangerTranslate2Dragger--yesÇ7µ$B$#ð€nÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€R€ÿ€T€€€‚ÿ€`€€€‚ÿÿÿZRotatorRotateCylindricalDragger--yesÆ6{$ $#ð€lÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€P€ÿ€R€€€‚ÿ€^€€€‚ÿÿÿYCenterChangerTranslate2Dragger--yesÆ6B$Î $#ð€lÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€P€ÿ€R€€€‚ÿ€^€€€‚ÿÿÿXCenterChangerTranslate2Dragger--yesÇ7 $• $#ð€nÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€R€ÿ€T€€€‚ÿ€`€€€‚ÿÿÿXRotatorRotateCylindricalDragger--yes,Î $Á $' € €€‚€‚ÿ]5• $ $( €j€”‚±€ƒ‚ÿExtra Information for List Parts from Above Table’1Á $° $a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types…3 $5 $R#t€fÂmê 7 €€€‚ÿ€€‚ÿ€4€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=° $r $' €,€€‚€‚ÿDRAGGER RESOURCES¼5 $$S t€y€PÍÇ~‚Í€ ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿResource:centerballRotatorPart:rotator.rotatorAppearance:Invisible but pickable sphereDescription:When picked, initiates free rotation about the center point. Slightly smaller radius than the stripes, so you must pick between the stripes to use it.Resource:centerballRotatorActivePart:rotator.rotatorActiveAppearance:Invisible sphereDescription:Displayed during unconstrained 3D rotation instead of centerballRotator.½r $ @$V z€{€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:centerballStripeParts:XRotator.rotatorYRotator.rotatorZRotator.rotatorAppearance:White circle aligned with rotation axis.Description:When picked, initiates constrained rotation. Each rotator rotates locally about its Y axis. The centerball contains private transform part$ @$¼I#s that orient the draggers along three different axes.Resource:centerballStripeActiveParts:XRotator.rotatorActiveYRotator.rotatorActive Ä$«B$G \€‰€PÍÇ~‚Í€ ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ÿZRotator.rotatorActiveAppearance:White circle aligned with the rotation axis.Description:Displayed during constrained rotation instead of the rotator part. The centerball orients the draggers along three different axes.Resource:centerballCenterChangerParts:XCenterChanger.translatorYCenterChanger.translatorZCenterChanger.translatorAppearance:Two sets of small green crosshairs, one located at each intersection of axis and ball.>õ @$éD$I `€ë€PÍÇ~‚Í€ ƒ€€ ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ÿDescription:When picked, initiates 2D translation of ball through space. Edits the center field, which becomes center for subsequent rotations. Each translator works locally in its X-Y plane. The centerball containsprivate transform parts that place the draggers along three different axes.Resource:centerballCenterChangerActiveParts:XCenterChanger.translatorActiveYCenterChanger.translatorActiveZCenterChanger.translatorActiveAppearance:Yellow version of centerballCenterChanger.^«B$GH$E X€3€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚ÿDescription:Displayed during 2D translation instead of regular translator part. The centerball places the draggers along three different axes.Resource:centerballCenterXAxisFeedbackParts:XCenterChanger.xAxisFeedbackYCenterChanger.xAxisFeedbackZCenterChanger.xAxisFeedbackAppearance:Double-headed purple arrows, one located at each intersection of axis and ball. Located atop X axis of crosshair.Description:Only shown if dragger is moving and the axis is a permitted direction of motion. When pressing , motion is constrained, and this is displayed only if the primary motion is in the X direction of the child dragger's local space. The centerball places the draggers along three different axes; so not all of these parts aligns with the X axis in centerball space.̉éD$K$C T€€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚ÿResource:centerballCenterYAxisFeedbackParts:XCenterChanger.yAxisFeedbackYCenterChanger.yAxisFeedbackZCenterChanger.yAxisFeedbackAppearance:Double-headed purple arrows, one located at each intersection of axis and ball. Located atop Y axis of crosshair.Description:Only shown if dragger is moving and the axis is a permitted direction of motion. When pressing , motion is constrained, and this is displayed only if the primary motion is in the Y direction of the child dragger's local space. The centerball places the draggers along three different axes; so not all of these parts aligns with the Y axis in centerball space.K÷GH$^M$T v€ï€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿResource:centerballXAxisPart:XAxisAppearance:Thin yellow line connecting left and right crosshairs.Description:Feedback shown alone during rotation about X axis; displayed with centerballYAxis and centerballZAxis while center is dragged.Resource:centerballYAxisPart:YAxisAppearance:Thin yellow line connecting lower and upper crosshairs.Description:Feedback shown alone during rotation about Y axis; displayed with centerballXAxis and centerballZAxis while center is dragged.;ûK$™N$@ N€÷€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ÿResource:centerballZAxisPart:ZAxisAppearance:Thin yellow line connecting near and far crosshairs.Description:Feedback shown alone during rotation about Z axis; displayed with centerballXAxis and centerballYAxis while center is dragged.<^M$ÕN$& €,€‚Í€‚ÿFILE FORMAT/DEFAULT@™N$O$* $€,€P„7|‚€‚ÿCenterballDragger { µÕN$-$W |€k€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚ƒ‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSErotation0 0 1 0center0 0 0callbackListNULLtranO$-$¼I#slateToCenterMatrixTransform {matrix 1 0 0 00 1 0 00 0 1 00 0 0 1 }surroundScaleNULLantiSquishAntiSquish {sizing LONGEST_DIAGONAL }lightModelLightModel {model PHONG }XAxisYAxisZAxis)ÔO$Vƒ$U x€©€P„|‚€ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚ƒ‚ƒ‚ÿrotatorRotateSphericalDragger {}YRotatorRotateCylindricalDragger {}ZCenterChangerTranslate2Dragger {}ZRotatorRotateCylindricalDragger {}YCenterChangerTranslate2Dragger {}XCenterChangerTranslate2Dragger {}XRotatorRotateCylindricalDragger {}rotator.rotatorrotator.rotatorActiveXRotator.rotatorYRotator.rotatorÚ-$j…$: B€µ€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿZRotator.rotatorXRotator.rotatorActiveYRotator.rotatorActiveZRotator.rotatorActiveXCenterChanger.translatorYCenterChanger.translatorZCenterChanger.translatorXCenterChanger.translatorActive*òVƒ$”‡$8 >€å€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿYCenterChanger.translatorActiveZCenterChanger.translatorActiveXCenterChanger.xAxisFeedbackYCenterChanger.xAxisFeedbackZCenterChanger.xAxisFeedbackXCenterChanger.yAxisFeedbackYCenterChanger.yAxisFeedbackvJj…$ ˆ$, (€”€P„|‚€ƒ‚‚ÿZCenterChanger.yAxisFeedback},”‡$6ˆ$) "€€”‘€‚€‚ÿ1 ˆ$gˆ$& €€‚€‚ÿSEE ALSO 6ˆ$‡‹$  ‚€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTranslate1Dragger, SoTranslate2DraggerBgˆ$É‹$1ïrƒFÔJŠÉ‹$Œ$z%SoCenterballManip9‡‹$Œ$% €(€ˆˆ€‚ÿSoCenterballManip*É‹$,Œ$# €€€‚ÿNAME}WŒ$©Œ$& €®€”‘€€‚ÿSoCenterballManip - transform node with 3D interface for editing rotation and center3,Œ$ÜŒ$# € €€‚ÿINHERITS FROMø†©Œ$Ô$r ²€ €”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€ã¼ýÓ€‰€ã%n’ €‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform > SoTransformManip > SoCenterballManip2 ÜŒ$Ž$& €€€€ ‚ÿSYNOPSISRÔ$…Ž$- *€¤€”‘€€‚ã¼ýÓ‰‚ÿ#include Fields from class SoTransform:Ï}Ž$T$R t€ú€T”A‚S~‚Aã”5€‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3ftranslationSoSFRotationrotationSoSFVec3fscaleFactorSoSFRotationscaleOrientationSoSFVec3fcenterQ(…Ž$¥$) "€P€”‘€‚A€‚ÿMethods from class SoCenterballManip:l8T$À$4 8€p€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoCenterballManip()static SoTypeg¥$À$‡‹$etClassTypeId()X)¥$uÀ$/ .€R€”‘€‚A€ã%n’ ‰‚ÿMethods from class SoTransformManip:ÎÀ$CÁ$O n€þ€T”A‚S~‚A€ƒ‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒãMy'9‰ã¼ýÓ‰‚ÿSoDragger *getDragger()SbBoolreplaceNode(SoPath *p )SbBoolreplaceManip(SoPath *p,SoTransform *newOne ) constS$uÀ$–Á$/ .€H€”‘€‚A€ã¼ýÓ‰‚ÿMethods from class SoTransform: ŽCÁ$£Ã$ Ì€€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰‚ƒã4i¥‘‰‚ƒã¥W7ž‰‚ÿvoidpointAt(const SbVec3f &fromPoint,const SbVec3f &toPoint)voidgetScaleSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetRotationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetTranslationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidmultLeft(const SbMatrix &mat)voidmultRight(const SbMatrix &mat)voidcombineLeft(SoTransformation *nodeOnRight)Ç„–Á$jÄ$C T€ €T”A‚S~‚A€ƒã¥W7ž‰‚ƒã4i¥‘‰‚ƒã¨ƒõ(‰‚ÿvoidcombineRight(SoTransformation *nodeOnLeft)voidsetMatrix(const SbMatrix &mat)voidrecenter(const SbVec3f &newCenter)N£Ã$¸Ä$/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|jÄ$4Æ$n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¸Ä$ŒÆ$/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ4Æ$ñÈ$ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHŒÆ$yÉ$@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NñÈ$ÇÉ$/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞyÉ$þÊ$Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ÇÉ$2Ë$& €€‚A€‚ÿDESCRIPTIONë²þÊ$Ì$9 @€e€”‘€‚A€€€€€€‚ÿSoCenterballManip is derived from SoTransform (by way of SoTransformManip). When its fields change, nodes following it in the scene graph rotate, scale, and/or translate.î²2Ë$ Í$< F€e€”‘€‚A€€€€€€€‚ÿAs a subclass of SoTransformManip, this manipulator also has a 3D interface to edit some of its fields. In this case, the interface edits the rotation and center fields. ÔÌ$Î$6 :€©€”‘€‚A€€€€€‚ÿA manipulator differs from a dragger. When you move a dragger, no other nodes are affected. When you move an SoTransformManip, other nodes move along with it. (See the reference page for SoTransformManip.)w5 Í$ŒÏ$B R€k€”‘€‚A€€€€€€€€€‚ÿThe interface for an SoCenterballManip is exactly the same as that of the SoCenterballDragger. To find out more about the interface, see the reference page for SoCenterballDragger. To find out how the manipulator uses a dragger to provide its interface, see the reference page for SoTransformManip.ýÇÎ$•%6 :€€”‘€‚A€€€€€‚ÿOn screen, this manipulator will surround the objects influenŒÏ$•%‡‹$ced by its motion. This is because it turns on the surroundScale part of the dragger. (See the reference page for SoSurroundScale.)0 ŒÏ$Å%& €€‚A€‚ÿMETHODSC•%%, (€.€T”A‚S~‚A€ƒ‚ÿSoCenterballManip()8Å%@%) "€€”‘€‚A€‚ÿConstructor.U#%•%2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*@%è%) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<•%$%& €,€‚A€‚ÿFILE FORMAT/DEFAULT>è%b%* $€(€P„7|‚€‚ÿCenterballManip {—b$%ù%5 :€Ä€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0 0rotation0 0 1 0scaleFactor1 1 1scaleOrientation0 0 1 0center0 0 0}1 b%*%& €€‚€‚ÿSEE ALSOPÀù%z% ”‘€‚ãÌrŠâ€‰€ãöñõ€‰€ã+¯€‰€㇫¬l€‰€ã›Ø1Ù€‰€ãr“žN€‰€ãøÀ‰€ã¼ýÓ€‰€ã%n’ €‰‚ÿSoCenterballDragger, SoHandleBoxManip, SoJackManip, SoTabBoxManip, SoTrackballManip, SoTransformBoxManip, SoTransformerManip, SoTransform, SoTransformManip< *%¶%1MøI˜‚J‹¶%é%F%SoClipPlane3z%é%% €€ˆˆ€‚ÿSoClipPlane*¶%%# €€€‚ÿNAMEJ$é%]%& €H€”‘€€‚ÿSoClipPlane - clipping plane node3%%# € €€‚ÿINHERITS FROM@]%%M j€€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoClipPlane2 %O%& €€€€ ‚ÿSYNOPSISpI%¿%' €’€”‘€€‚‚ÿ#include Fields from class SoClipPlane:\"O%%: D€D€T”A‚S~‚Aã‰xë3€‰ƒ‚ãU×S鉃‚ÿSoSFPlaneplaneSoSFBoolonK"¿%f%) "€D€”‘€‚A€‚ÿMethods from class SoClipPlane:f2%Ì%4 8€d€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoClipPlane()static SoTypegetClassTypeId()Nf%%/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Ì%– %n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)%î %/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ– %S % 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHî %Û %@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NS %) %/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÛ %`%Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4) %”%& €€‚A€‚ÿDESCRIPTION]`%-@%0 .€»€”‘€‚A€€€‚ÿThis node clips all subsequent shapes in the scene graph to the half-space defined by the plane field. The half-space is the side of the plane in the direction of the plane normal. For example, if the plane is positioned at the origin and the normal is pointing down the positive X axis, everything in the negativ”%-@%z%e X space will be clipped away.¹”%æ@%* "€€”‘€‚A€‚ÿAny number of clipping planes may be active simultaneously, although the graphics library may place a limit on this number during rendering./ -@%A%& €€‚A€‚ÿFIELDSFæ@%[A%2 4€(€T”A‚S~‚Aã‰xë3€‰ƒ‚ÿSoSFPlaneplaneFA%¡A%) "€:€”‘€‚A€‚ÿPlane defining half-space.B[A%ãA%2 4€ €T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolonM$¡A%0B%) "€H€”‘€‚A€‚ÿWhether clipping plane is active.0 ãA%`B%& €€‚A€‚ÿMETHODS=0B%B%, (€"€T”A‚S~‚A€ƒ‚ÿSoClipPlane()\3`B%ùB%) "€f€”‘€‚A€‚ÿCreates a clip plane node with default settings.U#B%NC%2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ùB%¡C%) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8NC%ÙC%& €$€‚A€‚ÿACTION BEHAVIOR{=¡C%TD%> L€z€”‘€‚Aã©öø(€‰ã³DfL‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoRayPickActionsGÙC%ÇD%, (€Ž€”‘€‚A€€‚ÿAdds the plane to the current list of clipping planes in the state.<TD%E%& €,€‚A€‚ÿFILE FORMAT/DEFAULT8ÇD%;E%* $€€P„7|‚€‚ÿClipPlane {KE%†E%/ .€8€P„|‚€ƒ‚ƒ‚‚‚ÿplane1 0 0 0onTRUE}1 ;E%·E%& €€‚€‚ÿSEE ALSOZ†E%F%; F€>€”‘€‚ã½V)\€‰€ãsBmf€‰‚ÿSoCamera, SoShapeHintsA·E%RF%1¤ÔJøKŒRF%ŠF%‹%SoClipPlaneManip8F%ŠF%% €&€ˆˆ€‚ÿSoClipPlaneManip*RF%´F%# €€€‚ÿNAMEe?ŠF%G%& €~€”‘€€‚ÿSoClipPlaneManip - manipulator to transform a clipping plane3´F%LG%# € €€‚ÿINHERITS FROM®UG%úG%Y ‚€ª€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãÄØ¡€‰€€€‚ÿSoBase > SoFieldContainer > SoNode>SoClipPlane > SoClipPlaneManip2 LG%,H%& €€€€ ‚ÿSYNOPSIS{TúG%§H%' €¨€”‘€€‚‚ÿ#include Fields from class SoClipPlaneManip:P,H%÷H%2 4€<€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fdraggerPositionR#§H%II%/ .€F€”‘€‚A€ãÄØ¡‰‚ÿFields from class SoClipPlane:\"÷H%¥I%: D€D€T”A‚S~‚Aã‰xë3€‰ƒ‚ãU×S鉃‚ÿSoSFPlaneplaneSoSFBoolonP'II%õI%) "€N€”‘€‚A€‚ÿMethods from class SoClipPlaneManip:€¥I%uK%p ®€!€T”A‚S~‚A€ƒ‚ãÈï?†‰ƒ‚ƒã?çî$‰ã¨ƒõ(‰‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒãMy'9‰ãÄØ¡‰‚ãB-9‰ƒ‚ÿSoClipPlaneManip()SoDragger *getDragger()voidsetValue(const SbBox3f &box,const SbVec3f &planeNormal,float draggerScaleFactor)SbBoolreplaceNode(SoPath *p)SbBoolreplaceManip(SoPath *p,SoClipPlane *newOne) conststatic SoTypegetClassTypeId()NõI%ÃK%/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|uK%?M%n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÃK%—M%/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ?M% €% 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) const—M% €%F%ˆH—M%”€%@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N €%â€%/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ”€%‚%Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4â€%M‚%& €€‚A€‚ÿDESCRIPTIONÁ‘‚%ƒ%0 .€#€”‘€‚A€€€‚ÿThis class defines a manipulator to transform a clipping plane. An SoJackDragger allows the user to rotate and translate the clipping plane./ M‚%=ƒ%& €€‚A€‚ÿFIELDSPƒ%ƒ%2 4€<€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fdraggerPosition==ƒ%ʃ%) "€(€”‘€‚A€‚ÿDragger position.0 ƒ%úƒ%& €€‚A€‚ÿMETHODSBʃ%<„%, (€,€T”A‚S~‚A€ƒ‚ÿSoClipPlaneManip()8úƒ%t„%) "€€”‘€‚A€‚ÿConstructor.O<„%Ä%2 4€:€T”A‚S~‚AãÈï?†€‰ƒ‚ÿSoDragger *getDragger()b9t„%%…%) "€r€”‘€‚A€‚ÿReturns the dragger node being employed by this manip.˜^Ä%½…%: D€¼€T”A‚S~‚A€ƒã?çî$‰ã¨ƒõ(‰‚ÿvoidsetValue(const SbBox3f &box,const SbVec3f &planeNormal,float draggerScaleFactor)|@%…%9‡%< F€€”‘€‚A€€€€€€€‚ÿConvenience method to set the clip plane passing through the center of a bounding box (defined by the parameter box) and oriented by a normal (defined by the parameter planeNormal). The size of the dragger is the max size of the bounding box multiplied by a factor (defined by the parameter draggerScaleFactor).\$½…%•‡%8 @€H€T”A‚S~‚A㑶p6€‰ƒãMy'9‰‚ÿSbBoolreplaceNode(SoPath *p)n?9‡%ˆ%/ .€~€”‘€‚A€€€‚ÿReplaces a regular SoClipPlane node with this manipulator.B•‡%„ˆ%? N€„€T”A‚S~‚A㑶p6€‰ƒãMy'9‰ãÄØ¡‰‚ÿSbBoolreplaceManip(SoPath *p,SoClipPlane *newOne) constn?ˆ%òˆ%/ .€~€”‘€‚A€€€‚ÿReplaces this manipulator with a regular SoClipPlane node.U#„ˆ%G‰%2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*òˆ%š‰%) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<G‰%Ö‰%& €,€‚A€‚ÿFILE FORMAT/DEFAULT=š‰%Š%* $€&€P„7|‚€‚ÿClipPlaneManip {c2Ö‰%vŠ%1 2€d€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿplane1 0 0 0onTRUEdraggerPosition0 0 0}1 Š%§Š%& €€‚€‚ÿSEE ALSOZvŠ%‹%; F€>€”‘€‚ãÄØ¡€‰€ãÈï?†€‰‚ÿSoClipPlane, SoDraggerC§Š%D‹%1Ì$˜‚J€LD‹%~‹%@&SoCollisionManager:‹%~‹%% €*€ˆˆ€‚ÿSoCollisionManager*D‹%¨‹%# €€€‚ÿNAMEX2~‹%Œ%& €d€”‘€€‚ÿSoCollisionManager - class to manage collisions3¨‹%3Œ%# € €€‚ÿINHERITS FROM?Œ%rŒ%) "€,€”‘€€€‚ÿSoCollisionManager2 3Œ%¤Œ%& €€€€ ‚ÿSYNOPSIS[5rŒ%ÿŒ%& €j€”‘€€‚ÿ#include z¤Œ%À%‹ ä€õ€T”A‚S~‚A€㑶p6‰ƒãMy'9‰ãMy'9‰‚ƒãMy'9‰ãMy'9‰‚ƒ‚ƒ‚ƒƒãMy'9‰€ƒ€€ƒã¨ƒõ(€‰€ƒ€‚ÿtypedef SbBoolSoFilterCollisionCB(void* userData,const SoPath* object,const SoPath* scene)typedef voidSoBBoxCollisionCB(void* userData,const SoPath* object,const SoPath* scene)typedef RespSoCollisionCB(void* userData,const SoCollidingPrimitive* object,const SoCollidingPrimitive* scene)enum Resp{SoCollisionManager::NEXT_PRIMITIVE,SoCollisionManager::NEXT_SHAPE,SoCollisionManager::ABORT}struct SoCollidingPrimitive{enum PrimitiveType {LINE_SEGMENT = 2,TRIANGLE = 3};SoPath* path;Path of the shapePrimitiveType type;Type of primitiveSbVec3f vertex [3];Vertex of the primitiveÿŒ%À%‹%}R)ÿŒ%bÀ%) "€R€”‘€‚A€‚ÿMethods from class SoCollisionManager:+¬À%Â% Ì€Y€T”A‚S~‚A€ƒãMy'9‰ã«]à—‰ã¼ýÓ‰‚ƒ‚ƒãMy'9‰‚ãMy'9‰ƒ‚ƒã«]à—‰‚ã«]à—‰ƒ‚ƒã¼ýÓ‰‚ãMy'9‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ÿSoCollisionManager(SoPath* object,SoGroup* scene,SoTransform* transform )~SoCollisionManager()voidsetObject(SoPath* object)SoPath*getObject() constvoidsetScene(SoGroup* scene)SoGroup*getScene() constvoid setTransform(SoTransform* transform)SoPath*getTransform() constvoid setGluingLevel(unsigned int level)unsigned intgetGluingLevel() constvoid setObjectBBoxOnly(SbBool flag = TRUE)AÔbÀ%ÎÄ%m ¨€©€T”A‚S~‚A㑶p6€‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolisObjectBBoxOnly() constvoid setSceneBBoxOnly(SbBool flag = TRUE)SbBoolisSceneBBoxOnly() constvoid setGluing(SbBool flag = TRUE)SbBoolisGluing() constvoid activate(SbBool flag = TRUE)SbBoolisActivated() constvoidsetFilterCallback(SoFilterCollisionCB* f,void* userData = NULL)voidaddBBoxCollisionCallback(SoBBoxCollisionCB* f,void* userData = NULL)voidremoveBBoxCollisionCallback(SoBBoxCollisionCB* f,void* userData = NULL)¼‹Â%ŠÅ%1 0€€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddCollisionCallback(SoCollisionCB* f,void* userData = NULL)voidremoveCollisionCallback(SoCollisionCB* f,void* userData = NULL)5ÎÄ%¿Å%& €€‚A€‚ÿDESCRIPTION Û«ŠÅ%šÆ%0 .€W€”‘€‚A€€€‚ÿThe SoCollisionManager class manages collisions, i.e., it controls the position of an object in a scene, preventing it from colliding with other objects in the scene.Ò¨¿Å%lÇ%* "€Q€”‘€‚A€‚ÿThe collision manager references a scene, an object and a transformation. It can prevent collisions between the specified object and other objects within the scene. °†šÆ%È%* "€ €”‘€‚A€‚ÿIt can use the actual primitives of the objects during the computation, or for faster performance, it may use their bounding boxes.ÄšlÇ%àÉ%* "€5€”‘€‚A€‚ÿWhen the referenced transformation changes, the collision manager looks for a collision between the bounding box of the object and the bounding boxes of objects within the scene. If a collision between the bounding boxes is detected, the algorithm can (depending on what the programmer specifies) compute a more precise intersection using the actual primitives of the object and/or the objects of the scene.äºÈ%ÄÊ%* "€u€”‘€‚A€‚ÿThe algorithm can call programmer-supplied callback functions when there is a collision between the bounding boxes, and when there is a collision between the primitives of the shapes.{QàÉ%?Ì%* "€£€”‘€‚A€‚ÿWhen there is a collision, the collision manager can "glue" the object on the scene. This refers to placing the object at the position just before the first collision that would occur along the transformation path. For example, if an object would collide with (intersect) a wall, the object would be placed directly against the wall. 0 ÄÊ%oÌ%& €€‚A€‚ÿMETHODS•U?Ì%Í%@ P€ª€T”A‚S~‚A€ƒãMy'9‰ã«]à—‰ã¼ýÓ‰‚ÿSoCollisionManager(SoPath* object,SoGroup* scene,SoTransform* transform )8oÌ%<Í%) "€€”‘€‚A€‚ÿConstructor.EÍ%Í%, (€2€T”A‚S~‚A€ƒ‚ÿ~SoCollisionManager()7<Í%¸Í%) "€€”‘€‚A€‚ÿDestructor.y?Í%1Î%: D€~€T”A‚S~‚A€ƒãMy'9‰‚ãMy'9‰ƒ‚ÿvoidsetObject(SoPath* object)SoPath*getObject() const]4¸Í%ŽÎ%) "€h€”‘€‚A€‚ÿSets/returns the object that will be transformed.x>1Î%Ï%: D€|€T”A‚S~‚A€ƒã«]à—‰‚ã«]à—‰ƒ‚ÿvoidsetScene(SoGroup* scene)SoGroup*getScene() constb9ŽÎ%hÏ%) "€r€”‘€‚A€‚ÿSets/returns the scene the object is interacting with.ˆNÏ% &: D€œ€T”A‚S~‚A€ƒã¼ýÓ‰‚ãMy'9‰ƒ‚ÿvoid setTransform(SoTransform* transform)SoPath*getTransform() consthÏ% &‹%a8hÏ%m&) "€p€”‘€‚A€‚ÿSets/returns the transformation that will be watched.}O &ê&. ,€ž€T”A‚S~‚A€ƒ‚ƒ‚ÿvoid setGluingLevel(unsigned int level)unsigned intgetGluingLevel() const€Vm&j&* "€­€”‘€‚A€‚ÿSets/returns the gluing level. The larger the number, the more precise the check for intermediate collisions, and the longer the computation will take. If this level is set to 0, the collision manager will act as if the gluing flag was set to FALSE, except the collision callbacks are called with a gluing flag of TRUE. Default value is 1.ŒRê&ö&: D€¤€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoid setObjectBBoxOnly(SbBool flag = TRUE)SbBoolisObjectBBoxOnly() constÈžj&¾&* "€=€”‘€‚A€‚ÿSets/returns a flag indicating whether to use the object's bounding box instead of the actual primitives when computing collisions. Default value is FALSE.ŠPö&H&: D€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoid setSceneBBoxOnly(SbBool flag = TRUE)SbBoolisSceneBBoxOnly() constÙ¯¾&!&* "€_€”‘€‚A€‚ÿSets/returns a flag indicating whether to use the bounding boxes of objects in the scene instead of the actual primitives when computing collisions. Default value is FALSE.|BH&&: D€„€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoid setGluing(SbBool flag = TRUE)SbBoolisGluing() constlB!& &* "€…€”‘€‚A€‚ÿSet/returns a flag indicating that the collision manager should place the object at the position just before the first collision that would occur along the transformation path. For example, if an object would collide with (intersect) a wall, the object would be placed directly against the wall. Default value is FALSE.~D&‡&: D€ˆ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoid activate(SbBool flag = TRUE)SbBoolisActivated() constñÇ &x&* "€€”‘€‚A€‚ÿSet/returns a flag to activate the collision manager, i.e. to tell it to watch the transformation and start collision detection computations when the transformation changes. Default value is TRUE.uH‡&í&- *€€T”A‚S~‚A€ƒ‚ÿvoidsetFilterCallback(SoFilterCollisionCB* f,void* userData = NULL)ñx& &* "€ã€”‘€‚A€‚ÿSets the callback function called when an object shape collides with a scene shape. If the callback function returns TRUE, the Collision Manager looks forward for collisions; else, it aborts searching. If if is NULL, no filter is applied.Îœí&Ö &2 2€9€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddBBoxCollisionCallback(SoBBoxCollisionCB* f,void* userData = NULL)voidremoveBBoxCollisionCallback(SoBBoxCollisionCB* f,void* userData = NULL)]' &3 &6 :€O€”‘€‚A€€€€€‚ÿBounding box collision callbacks are called after the bounding box collision detection and before real detection, allowing the programmer to change the ObjectBBoxOnly and SceneBBoxOnly flags. The callback functions are passed the paths of the two nodes whose bounding boxes are colliding.¼‹Ö &ï &1 0€€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddCollisionCallback(SoCollisionCB* f,void* userData = NULL)voidremoveCollisionCallback(SoCollisionCB* f,void* userData = NULL)Í£3 &¼&* "€G€”‘€‚A€‚ÿCollision callbacks are called when there is a collision. The callback functions receive information about the primitives which collide. If the callback returns NEXT_PRIMITIVE, it will be called for the two next colliding triangles or segments; if it returns NEXT_SHAPE, it will be called for the two next colliding shapes; if it returns ABORT, it will be called only if another transformation generates a collision.¦}ï &b&) "€ú€”‘€‚A€‚ÿWhen the gluing flag is TRUE, the object and scene passed to the callback function are NULL because there is no collision.1 ¼&“&& €€‚A€‚ÿSEE ALSOo:b&@&5 :€t€”‘€‚Aãæxpö€‰ãÃè9‰‚ÿSoIntersectionDetectionAction, SoWinCollisionViewer“&@&‹%= “&K@&1øK"MŽK@&@&r€&SoColorIndex4@&@&% €€ˆˆ€‚ÿSoColorIndex*K@&©@&# €€€‚ÿNAMEP*@&ù@&& €T€”‘€€‚ÿSoColorIndex - surface color index node3©@&,A&# € €€‚ÿINHERITS FROMŽAù@&ºA&M j€‚€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoColorIndex2 ,A&ìA&& €€€€ ‚ÿSYNOPSISrKºA&^B&' €–€”‘€€‚‚ÿ#include Fields from class SoColorIndex:FìA&¤B&2 4€(€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32indexL#^B&ðB&) "€F€”‘€‚A€‚ÿMethods from class SoColorIndex:g3¤B&WC&4 8€f€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoColorIndex()static SoTypegetClassTypeId()NðB&¥C&/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|WC&!E&n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¥C&yE&/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ!E&ÞG& 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHyE&fH&@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÞG&´H&/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞfH&ëI&Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4´H&J&& €€‚A€‚ÿDESCRIPTION4ëI&SK&0 .€ €”‘€‚A€€€‚ÿThis node specifies the color to use for subsequent shapes as an index into the current color table. This is used only for BASE_COLOR lighting (see SoLightModel) in color index mode. Color index mode may be enabled by the window in which rendering occurs.¹‰J& L&0 .€€”‘€‚A€€€‚ÿSince color indices make sense only in the context of OpenGL rendering, this node implements only a method for the SoGLRenderAction./ SK&;L&& €€‚A€‚ÿFIELDSF L&L&2 4€(€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32index8;L&¹L&) "€€”‘€‚A€‚ÿColor index.0 L&éL&& €€‚A€‚ÿMETHODS>¹L&'M&, (€$€T”A‚S~‚A€ƒ‚ÿSoColorIndex()]4éL&„M&) "€h€”‘€‚A€‚ÿCreates a color index node with default settings.U#'M&ÙM&2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*„M&,N&) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ÙM&dN&& €$€‚A€‚ÿACTION BEHAVIORH,N&¬N&2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderAction}QdN&)O&, (€¢€”‘€‚A€€‚ÿSets the color index for subsequent shapes rendered with BASE_COLOR lighting.<¬N&eO&& €,€‚A€‚ÿFILE FORMAT/DEFAULT9)O&žO&* $€€P„7|‚€‚ÿColorIndex {: eO&ØO&- *€€P„|‚€ƒ‚‚‚ÿindex1}1 žO&€&& €€‚€‚ÿSØO&€&@&EE ALSO]"ØO&r€&; F€D€”‘€‚ãÚ{tm€‰€ãg!à‚€‰‚ÿSoBaseColor, SoLightModel= €&¯€&1È€LþƒM¯€&ã€&ÄÉ&SoComplexity4r€&ã€&% €€ˆˆ€‚ÿSoComplexity*¯€& &# €€€‚ÿNAMEM'ã€&Z&& €N€”‘€€‚ÿSoComplexity - shape complexity node3 &&# € €€‚ÿINHERITS FROMŽAZ&‚&M j€‚€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoComplexity2 &M‚&& €€€€ ‚ÿSYNOPSISQ+‚&ž‚&& €V€”‘€€‚ÿ#include #ÚM‚&Áƒ&I `€µ€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum Type{SoComplexity::SCREEN_SPACESet complexity based on screen sizeSoComplexity::OBJECT_SPACESet complexity independent of screen sizeSoComplexity::BOUNDING_BOXDraw all shapes as bounding boxes}K"ž‚& „&) "€D€”‘€‚A€‚ÿFields from class SoComplexity:?Áƒ&„&B T€~€T”A‚S~‚AãØtW选ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFEnumtypeSoSFFloatvalueSoSFFloattextureQualityL# „&Ù„&) "€F€”‘€‚A€‚ÿMethods from class SoComplexity:g3„&@…&4 8€f€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoComplexity()static SoTypegetClassTypeId()NÙ„&Ž…&/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|@…& ‡&n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ž…&b‡&/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ ‡&lj& 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHb‡&OŠ&@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nlj&Š&/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞOŠ&Ô‹&Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Š&Œ&& €€‚A€‚ÿDESCRIPTIONT*Ô‹&\&* "€U€”‘€‚A€‚ÿThis node sets the current shape complexity value. This is a heuristic value which provides a hint at what geometric complexity to render shape nodes. Values range from 0 to 1, where 0 means minimum complexity and 1 means maximum complexity. Each shape node interprets complexity in its own way.»‹Œ&Ž&0 .€€”‘€‚A€€€‚ÿShape complexity always affects rendering and primitive generation for the SoCallbackAction. For some shapes, it also affects picking.Û\&þÁ&Z ‚€€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿThere are three ways to interpret shape complexity, depending on the type field. BOUNDING_BOX complexity ignores the value field and renders all shapes as bounding boxes, using the current material, drawing style, etc. The other two types use the value field to determine the tessellation of shapes into polygons. OBJECT_SPACE complexity uses value directly to determine the tessellation. SŽ&þÁ&r€&CREEN_SPACE complexity depends on value and the projected size of the shape on the screen; a value of 0 produces the minimum tessellation for a shape, and a value of 1 produces a tessellation that is fine enough that each edge of a polygon is about 1 or two pixels in length. Since the projected size depends on the camera position, objects may be tessellated differently every frame if the camera is moving; note that this may have adverse effects on render caching in SoSeparator nodes.<Ž&:Ã&6 :€ €”‘€‚A€€€€€‚ÿThe SoComplexity node also sets a hint for the quality of textures applied to shapes, based on the value of the textureQuality field. The texture quality will take effect at the next Texture2 node; Texture2 nodes previously traversed will not be affected./ þÁ&iÃ&& €€‚A€‚ÿFIELDSD:Ã&­Ã&2 4€$€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumtypeP'iÃ&ýÃ&) "€N€”‘€‚A€‚ÿHow shape complexity is interpreted.F­Ã&CÄ&2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatvalue=ýÃ&€Ä&) "€(€”‘€‚A€‚ÿComplexity value.OCÄ&ÏÄ&2 4€:€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloattextureQuality×­€Ä&¦Å&* "€[€”‘€‚A€‚ÿHint about texture quality. A value of 0 indicates that the fastest texturing should be used, while a value of 1 indicates that the best quality texturing should be used.0 ÏÄ&ÖÅ&& €€‚A€‚ÿMETHODS>¦Å&Æ&, (€$€T”A‚S~‚A€ƒ‚ÿSoComplexity()\3ÖÅ&pÆ&) "€f€”‘€‚A€‚ÿCreates a complexity node with default settings.U#Æ&ÅÆ&2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*pÆ&Ç&) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ÅÆ&PÇ&& €$€‚A€‚ÿACTION BEHAVIOR›WÇ&ëÇ&D X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActionY-PÇ&DÈ&, (€Z€”‘€‚A€€‚ÿSets the current complexity in the state.<ëÇ&€È&& €,€‚A€‚ÿFILE FORMAT/DEFAULT9DÈ&¹È&* $€€P„7|‚€‚ÿComplexity {e4€È&É&1 2€h€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿtypeOBJECT_SPACEvalue0.5textureQuality0.5}1 ¹È&OÉ&& €€‚€‚ÿSEE ALSOu.É&ÄÉ&G ^€\€”‘€‚ã9ÖEš€‰€ãsBmf€‰€ãÿÓ>Ñ€‰‚ÿSoShape, SoShapeHints, SoTexture2@OÉ&Ê&1X"MÝNÊ&;Ê&*'SoComposeMatrix7ÄÉ&;Ê&% €$€ˆˆ€‚ÿSoComposeMatrix*Ê&eÊ&# €€€‚ÿNAME[5;Ê&ÀÊ&& €j€”‘€€‚ÿSoComposeMatrix - composes a transformation matrix3eÊ&óÊ&# € €€‚ÿINHERITS FROM“FÀÊ&†Ë&M j€Œ€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoComposeMatrix2 óÊ&¸Ë&& €€€€ ‚ÿSYNOPSIStM†Ë&,Ì&' €š€”‘€€‚‚ÿ#include Inputs from class SoComposeMatrix:Ï}¸Ë&ûÌ&R t€ú€T”A‚S~‚Aãòi`€‰ƒ‚ãÏ[ щƒ‚ãòi`‰ƒ‚ãÏ[ щƒ‚ãòi`‰ƒ‚ÿSoMFVec3ftranslationSoMFRotationrotationSoMFVec3fscaleFactorSoMFRotationscaleOrientationSoMFVec3fcenterO&,Ì&JÍ&) "€L€”‘€‚A€‚ÿOutputs from class SoComposeMatrix:JûÌ&”Í&2 4€0€T”A‚S~‚A€ã÷3≃‚ÿ(SoMFMatrix)matrixO&JÍ&ãÍ&) "€L€”‘€‚A€‚ÿMethods from class SoComposeMatrix:A”Í&$Î&, (€*€T”A‚S~‚A€ƒ‚ÿSoComposeMatrix()P!ãÍ&tÎ&/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}$Î&€'ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststtÎ&€'ÄÉ&atic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)tÎ&Ø'/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ€'=' 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHØ'Å'@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N=''/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÅ'J'Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4'~'& €€‚A€‚ÿDESCRIPTION7 J'µ'* "€€”‘€‚A€‚ÿThis engine has inputs that specify values for translation, rotation, scale, and center of transformation. As output, it produces a transformation matrix that transforms objects into the space specified by the scale, rotation, and translation inputs (in that order).ë~'Ê'* "€×€”‘€‚A€‚ÿThe input fields can have multiple values, allowing the engine to compose several matrices in parallel. Some inputs may have more values than others. In such cases, the last value of the shorter inputs will be repeated as necessary./ µ'ù'& €€‚A€‚ÿINPUTSLÊ'E'2 4€4€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3ftranslationGù'Œ') "€<€”‘€‚A€‚ÿTranslation in x, y, and z.LE'Ø'2 4€4€T”A‚S~‚AãÏ[ Ñ€‰ƒ‚ÿSoMFRotationrotation5 Œ' ') "€€”‘€‚A€‚ÿRotation.LØ'Y '2 4€4€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fscaleFactorI '¢ ') "€@€”‘€‚A€‚ÿScale factors in x, y, and z.T"Y 'ö '2 4€D€T”A‚S~‚AãÏ[ Ñ€‰ƒ‚ÿSoMFRotationscaleOrientationI ¢ '? ') "€@€”‘€‚A€‚ÿRotational space for scaling.Gö '† '2 4€*€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fcenterR)? 'Ø ') "€R€”‘€‚A€‚ÿCenter point for scaling and rotating.0 † ' '& €€‚A€‚ÿOUTPUTSJØ 'R '2 4€0€T”A‚S~‚A€ã÷3≃‚ÿ(SoMFMatrix)matrix‹b 'Ý ') "€Ä€”‘€‚A€‚ÿTransformation matrix that transforms from object space into the space specified by the inputs.0 R ' '& €€‚A€‚ÿMETHODSAÝ 'N ', (€*€T”A‚S~‚A€ƒ‚ÿSoComposeMatrix()7 '… ') "€€”‘€‚A€‚ÿConstructor<N 'Á '& €,€‚A€‚ÿFILE FORMAT/DEFAULT<… 'ý '* $€$€P„7|‚€‚ÿComposeMatrix {—bÁ '” '5 :€Ä€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0 0rotation0 0 1 0scaleFactor1 1 1scaleOrientation0 0 1 0center0 0 0}1 ý 'Å '& €€‚€‚ÿSEE ALSOe*” '*'; F€T€”‘€‚ã~\ü€‰€ãë\¼N€‰‚ÿSoDecomposeMatrix, SoEngineOutputBÅ 'l'1<þƒMóˆN‘l'¥'¸O'SoComposeRotation9*'¥'% €(€ˆˆ€‚ÿSoComposeRotation*l'Ï'# €€€‚ÿNAMEkE¥':'& €Š€”‘€€‚ÿSoComposeRotation - composes a rotation from axis and angle values3Ï'm'# € €€‚ÿINHERITS FROM•H:'@'M j€€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoComposeRotationm'@'*'2 m'@@'& €€€€ ‚ÿSYNOPSISvO@'¶@'' €ž€”‘€€‚‚ÿ#include Inputs from class SoComposeRotation:_%@@'A': D€J€T”A‚S~‚Aãòi`€‰ƒ‚ã'0]‰ƒ‚ÿSoMFVec3faxisSoMFFloatangleQ(¶@'fA') "€P€”‘€‚A€‚ÿOutputs from class SoComposeRotation:NA'´A'2 4€8€T”A‚S~‚A€ãÏ[ щƒ‚ÿ(SoMFRotation)rotationQ(fA'B') "€P€”‘€‚A€‚ÿMethods from class SoComposeRotation:C´A'HB', (€.€T”A‚S~‚A€ƒ‚ÿSoComposeRotation()P!B'˜B'/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}HB'˜D'ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)˜B'ðD'/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eؘD'UG' 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHðD'ÝG'@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NUG'+H'/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÝG'bI'Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4+H'–I'& €€‚A€‚ÿDESCRIPTIONÛ¥bI'qJ'6 :€K€”‘€‚A€€€€€‚ÿThis engine has two inputs, representing an axis of rotation and a rotation angle in radians. As output, the engine composes the inputs into a rotation field.ì–I'‡K'* "€Ù€”‘€‚A€‚ÿThe input fields can have multiple values, allowing the engine to compose several rotations in parallel. Some inputs may have more values than others. In such cases, the last value of the shorter inputs will be repeated as necessary./ qJ'¶K'& €€‚A€‚ÿINPUTSE‡K'ûK'2 4€&€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3faxis=¶K'8L') "€(€”‘€‚A€‚ÿAxis of rotation.FûK'~L'2 4€(€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatangle>8L'¼L') "€*€”‘€‚A€‚ÿAngle of rotation.0 ~L'ìL'& €€‚A€‚ÿOUTPUTSN¼L':M'2 4€8€T”A‚S~‚A€ãÏ[ щƒ‚ÿ(SoMFRotation)rotationR)ìL'ŒM') "€R€”‘€‚A€‚ÿRotation field, defined by the inputs.0 :M'¼M'& €€‚A€‚ÿMETHODSCŒM'ÿM', (€.€T”A‚S~‚A€ƒ‚ÿSoComposeRotation()7¼M'6N') "€€”‘€‚A€‚ÿConstructor<ÿM'rN'& €,€‚A€‚ÿFILE FORMAT/DEFAULT>6N'°N'* $€(€P„7|‚€‚ÿComposeRotation {GrN'÷N'/ .€0€P„|‚€ƒ‚ƒ‚‚‚ÿaxis0 0 1angle0}1 °N'(O'& €€‚€‚ÿSEE ALSOI÷N'¸O'G ^€’€”‘€‚ã•œŒð€‰€ã‡;…E€‰€ãë\¼N€‰‚ÿSoComposeRotationFromTo, SoDecomposeRotation, SoEngineOutputH(O' €'1µÝN¥€O’ €'K€'ÍÁ'SoComposeRotationFromTo¸O' €'¸O'?¸O'K€'% €4€ˆˆ€‚ÿSoComposeRotationFromTo* €'u€'# €€€‚ÿNAME€ZK€'õ€'& €´€”‘€€‚ÿSoComposeRotationFromTo - composes a rotation that rotates from one vector into another3u€'('# € €€‚ÿINHERITS FROM›Nõ€'Ã'M j€œ€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoComposeRotationFromTo2 ('õ'& €€€€ ‚ÿSYNOPSIS|UÃ'q‚'' €ª€”‘€€‚‚ÿ#include Inputs from class SoComposeRotationFromTo:\"õ'Í‚': D€D€T”A‚S~‚Aãòi`€‰ƒ‚ãòi`‰ƒ‚ÿSoMFVec3ffromSoMFVec3ftoW.q‚'$ƒ') "€\€”‘€‚A€‚ÿOutputs from class SoComposeRotationFromTo:NÍ‚'rƒ'2 4€8€T”A‚S~‚A€ãÏ[ щƒ‚ÿ(SoMFRotation)rotationW.$ƒ'Ƀ') "€\€”‘€‚A€‚ÿMethods from class SoComposeRotationFromTo:Irƒ'„', (€:€T”A‚S~‚A€ƒ‚ÿSoComposeRotationFromTo()P!Ƀ'b„'/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}„'b†'ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)b„'º†'/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØb†'‰' 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHº†'§‰'@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N‰'õ‰'/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ§‰',‹'Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4õ‰'`‹'& €€‚A€‚ÿDESCRIPTION÷Í,‹'WŒ'* "€›€”‘€‚A€‚ÿThis engine takes two inputs, representing a vector before and after a rotation has been applied. As output, it produces the rotation value that would cause the first vector to transform into the other.ì`‹'m'* "€Ù€”‘€‚A€‚ÿThe input fields can have multiple values, allowing the engine to compose several rotations in parallel. Some inputs may have more values than others. In such cases, the last value of the shorter inputs will be repeated as necessary./ WŒ'œ'& €€‚A€‚ÿINPUTSEm'á'2 4€&€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3ffromGœ'(Ž') "€<€”‘€‚A€‚ÿVector before the rotation.Cá'kŽ'2 4€"€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3ftoF(Ž'±Ž') "€:€”‘€‚A€‚ÿVector after the rotation.0 kŽ'áŽ'& €€‚A€‚ÿOUTPUTSN±Ž'/'2 4€8€T”A‚S~‚A€ãÏ[ щƒ‚ÿ(SoMFRotation)rotation_6áŽ'Ž') "€l€”‘€‚A€‚ÿA rotation that transforms one vector into another.0 /'¾'& €€‚A€‚ÿMETHODSIŽ'À', (€:€T”A‚S~‚A€ƒ‚ÿSoComposeRotationFro¾'À'¸O'mTo()7¾'JÀ') "€€”‘€‚A€‚ÿConstructor<À'†À'& €,€‚A€‚ÿFILE FORMAT/DEFAULTDJÀ'ÊÀ'* $€4€P„7|‚€‚ÿComposeRotationFromTo {H†À'Á'/ .€2€P„|‚€ƒ‚ƒ‚‚‚ÿfrom0 0 1to0 0 1}1 ÊÀ'CÁ'& €€‚€‚ÿSEE ALSOŠCÁ'ÍÁ'G ^€†€”‘€‚ãtÌß$€‰€ã‡;…E€‰€ãë\¼N€‰‚ÿSoComposeRotation, SoDecomposeRotation, SoEngineOutput?CÁ' Â'1ŒóˆNÔP“ Â'BÂ'–(SoComposeVec2f6ÍÁ'BÂ'% €"€ˆˆ€‚ÿSoComposeVec2f* Â'lÂ'# €€€‚ÿNAMEhBBÂ'ÔÂ'& €„€”‘€€‚ÿSoComposeVec2f - composes 2D vectors from floating-point values3lÂ'Ã'# € €€‚ÿINHERITS FROM’EÔÂ'™Ã'M j€Š€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoComposeVec2f2 Ã'ËÃ'& €€€€ ‚ÿSYNOPSISsL™Ã'>Ä'' €˜€”‘€€‚‚ÿ#include Inputs from class SoComposeVec2f:XËÃ'–Ä': D€<€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ÿSoMFFloatxSoMFFloatyN%>Ä'äÄ') "€J€”‘€‚A€‚ÿOutputs from class SoComposeVec2f:I–Ä'-Å'2 4€.€T”A‚S~‚A€ãóñi`‰ƒ‚ÿ(SoMFVec2f)vectorN%äÄ'{Å') "€J€”‘€‚A€‚ÿMethods from class SoComposeVec2f:@-Å'»Å', (€(€T”A‚S~‚A€ƒ‚ÿSoComposeVec2f()P!{Å' Æ'/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}»Å' È'ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X) Æ'cÈ'/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ È'ÈÊ' 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHcÈ'PË'@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÈÊ'žË'/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞPË'ÕÌ'Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4žË' Í'& €€‚A€‚ÿDESCRIPTION€WÕÌ'‰Í') "€®€”‘€‚A€‚ÿThis engine takes two floating-point inputs and composes a 2D floating-point vector.ï Í'¢Î'* "€ß€”‘€‚A€‚ÿThe input fields can have multiple values, allowing the engine to compose several vectors in parallel. One of the inputs may have more values than others. In such cases, the last value of the shorter input will be repeated as necessary./ ‰Í'ÑÎ'& €€‚A€‚ÿINPUTSB¢Î'Ï'2 4€ €T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatx<ÑÎ'OÏ') "€&€”‘€‚A€‚ÿThe x component.BÏ'‘Ï'2 4€ €T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloaty<OÏ'ÍÏ') "€&€”‘€‚A€‚ÿThe y component.0 ‘Ï' (& €€‚A€‚ÿOUTPUTSÍÏ' (ÍÁ'IÍÏ'U(2 4€.€T”A‚S~‚A€ãóñi`‰ƒ‚ÿ(SoMFVec2f)vectorR) (§() "€R€”‘€‚A€‚ÿVector composed of x and y components.0 U(×(& €€‚A€‚ÿMETHODS@§((, (€(€T”A‚S~‚A€ƒ‚ÿSoComposeVec2f()7×(N() "€€”‘€‚A€‚ÿConstructor<(Š(& €,€‚A€‚ÿFILE FORMAT/DEFAULT;N(Å(* $€"€P„7|‚€‚ÿComposeVec2f {< Š((/ .€€P„|‚€ƒ‚ƒ‚‚‚ÿx0y0}1 Å(2(& €€‚€‚ÿSEE ALSOd)(–(; F€R€”‘€‚ã[îD€‰€ãë\¼N€‰‚ÿSoDecomposeVec2f, SoEngineOutput?2(Õ(1¥€O P”Õ( (ÛC(SoComposeVec3f6–( (% €"€ˆˆ€‚ÿSoComposeVec3f*Õ(5(# €€€‚ÿNAMEhB ((& €„€”‘€€‚ÿSoComposeVec3f - composes 3D vectors from floating-point values35(Ð(# € €€‚ÿINHERITS FROM’E(b(M j€Š€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoComposeVec3f2 Ð(”(& €€€€ ‚ÿSYNOPSISsLb((' €˜€”‘€€‚‚ÿ#include Inputs from class SoComposeVec3f:n,”(u(B T€X€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ÿSoMFFloatxSoMFFloatySoMFFloatzN%(Ã() "€J€”‘€‚A€‚ÿOutputs from class SoComposeVec3f:Iu( (2 4€.€T”A‚S~‚A€ãòi`‰ƒ‚ÿ(SoMFVec3f)vectorN%Ã(Z() "€J€”‘€‚A€‚ÿMethods from class SoComposeVec3f:@ (š(, (€(€T”A‚S~‚A€ƒ‚ÿSoComposeVec3f()P!Z(ê(/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}š(ê(ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)ê(B (/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØê(§ ( 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHB (/ (@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N§ (} (/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ/ (´ (Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4} (è (& €€‚A€‚ÿDESCRIPTIONsJ´ ([() "€”€”‘€‚A€‚ÿThis engine takes three floating-point inputs and composes a 3D vector.êè (o(* "€Õ€”‘€‚A€‚ÿThe input fields can have multiple values, allowing the engine to compose several vectors in parallel. Some inputs may have more values than others. In such cases, the last value of the shorter inputs will be repeated as necessary./ [(ž(& €€‚A€‚ÿINPUTSBo(à(2 4€ €T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatx;ž('@() "€$€”‘à('@(–(€‚A€‚ÿThe x componentBà(i@(2 4€ €T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloaty;'@(¤@() "€$€”‘€‚A€‚ÿThe y componentBi@(æ@(2 4€ €T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatz<¤@("A() "€&€”‘€‚A€‚ÿThe z component.0 æ@(RA(& €€‚A€‚ÿOUTPUTSI"A(›A(2 4€.€T”A‚S~‚A€ãòi`‰ƒ‚ÿ(SoMFVec3f)vectorK"RA(æA() "€D€”‘€‚A€‚ÿVector composed of x, y, and z.0 ›A(B(& €€‚A€‚ÿMETHODS@æA(VB(, (€(€T”A‚S~‚A€ƒ‚ÿSoComposeVec3f()7B(B() "€€”‘€‚A€‚ÿConstructor<VB(ÉB(& €,€‚A€‚ÿFILE FORMAT/DEFAULT;B(C(* $€"€P„7|‚€‚ÿComposeVec3f {BÉB(FC(1 2€"€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿx0y0z0}1 C(wC(& €€‚€‚ÿSEE ALSOd)FC(ÛC(; F€R€”‘€‚ã†îD€‰€ãë\¼N€‰‚ÿSoDecomposeVec3f, SoEngineOutput?wC(D(1)ÔPwQ•D(PD(¾…(SoComposeVec4f6ÛC(PD(% €"€ˆˆ€‚ÿSoComposeVec4f*D(zD(# €€€‚ÿNAMEhBPD(âD(& €„€”‘€€‚ÿSoComposeVec4f - composes 4D vectors from floating-point values3zD(E(# € €€‚ÿINHERITS FROM’EâD(§E(M j€Š€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoComposeVec4f2 E(ÙE(& €€€€ ‚ÿSYNOPSISsL§E(LF(' €˜€”‘€€‚‚ÿ#include Inputs from class SoComposeVec4f:„:ÙE(ÐF(J d€t€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ÿSoMFFloatxSoMFFloatySoMFFloatzSoMFFloatwN%LF(G() "€J€”‘€‚A€‚ÿOutputs from class SoComposeVec4f:IÐF(gG(2 4€.€T”A‚S~‚A€ãIòi`‰ƒ‚ÿ(SoMFVec4f)vectorN%G(µG() "€J€”‘€‚A€‚ÿMethods from class SoComposeVec4f:@gG(õG(, (€(€T”A‚S~‚A€ƒ‚ÿSoComposeVec4f()P!µG(EH(/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}õG(EJ(ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)EH(J(/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØEJ(M( 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHJ(ŠM(@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NM(ØM(/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞŠM(O(Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ØM(CO(& €€‚A€‚ÿDESCRIPTIONrIO(µO() "€’€”‘€‚A€‚ÿThis engine takes four floating-point inputs and composes a 4D vector.êCO(Õ€(* "€Õ€”‘€‚A€‚ÿThe input fields can have multipµO(Õ€(ÛC(le values, allowing the engine to compose several vectors in parallel. Some inputs may have more values than others. In such cases, the last value of the shorter inputs will be repeated as necessary./ µO((& €€‚A€‚ÿINPUTSBÕ€(F(2 4€ €T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatx<(‚() "€&€”‘€‚A€‚ÿThe x component.BF(Ä(2 4€ €T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloaty<‚(‚() "€&€”‘€‚A€‚ÿThe y component.BÄ(B‚(2 4€ €T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatz<‚(~‚() "€&€”‘€‚A€‚ÿThe z component.BB‚(À‚(2 4€ €T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatw<~‚(ü‚() "€&€”‘€‚A€‚ÿThe w component.0 À‚(,ƒ(& €€‚A€‚ÿOUTPUTSIü‚(uƒ(2 4€.€T”A‚S~‚A€ãIòi`‰ƒ‚ÿ(SoMFVec4f)vectorN%,ƒ(Ã() "€J€”‘€‚A€‚ÿVector composed of x, y, z, and w.0 uƒ(óƒ(& €€‚A€‚ÿMETHODS@Ã(3„(, (€(€T”A‚S~‚A€ƒ‚ÿSoComposeVec4f()7óƒ(j„() "€€”‘€‚A€‚ÿConstructor<3„(¦„(& €,€‚A€‚ÿFILE FORMAT/DEFAULT;j„(á„(* $€"€P„7|‚€‚ÿComposeVec4f {H¦„()…(3 6€*€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿx0y0z0w0}1 á„(Z…(& €€‚€‚ÿSEE ALSOd))…(¾…(; F€R€”‘€‚ã±îD€‰€ãë\¼N€‰‚ÿSoDecomposeVec4f, SoEngineOutputEZ…(†(1W P‡Q–†(?†(KÍ(SoComputeBoundingBox<¾…(?†(% €.€ˆˆ€‚ÿSoComputeBoundingBox*†(i†(# €€€‚ÿNAMEuO?†(Þ†(& €ž€”‘€€‚ÿSoComputeBoundingBox - computes the bounding box and center of a scene graph3i†(‡(# € €€‚ÿINHERITS FROM˜KÞ†(©‡(M j€–€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoComputeBoundingBox2 ‡(Û‡(& €€€€ ‚ÿSYNOPSIS„]©‡(_ˆ(' €º€”‘€€‚‚ÿ#include Inputs from class SoComputeBoundingBox:\"Û‡(»ˆ(: D€D€T”A‚S~‚AãYdb选ƒ‚ãod鉃‚ÿSoSFNodenodeSoSFPathpathT+_ˆ(‰() "€V€”‘€‚A€‚ÿOutputs from class SoComputeBoundingBox:£Y»ˆ(²‰(J d€²€T”A‚S~‚A€ã”5‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ÿ(SoSFVec3f)min(SoSFVec3f)max(SoSFVec3f)boxCenter(SoSFVec3f)objectCenterT+‰(Š() "€V€”‘€‚A€‚ÿMethods from class SoComputeBoundingBox:¾²‰(ÄŠ(= H€€T”A‚S~‚A€ƒ‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ÿSoComputeBoundingBox()voidsetViewportRegion(const SbViewportRegion &vpReg)const SbViewportRegion &getViewportRegion()P!Š(‹(/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}ÄŠ((ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)‹(l(/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ(Ñ( 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHl(eÀ(@ P€€T”A‚S~‚A㑶p6€‰Ñ(eÀ(¾…(ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÑ(³À(/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞeÀ(êÁ(Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4³À(Â(& €€‚A€‚ÿDESCRIPTION«êÁ(ÉÂ(* "€€”‘€‚A€‚ÿThis engine computes the bounding box and center of a scene graph. The scene graph can be defined by a path or by a root node.r6Â(;Ä(< F€m€”‘€‚A€€€€€€€‚ÿIf the path input is not NULL, the bounding box of the graph defined by the path will be computed. If path is NULL, but the node input is not NULL, the bounding box is computed on the graph rooted by the node. By default, the two inputs are NULL. If both the inputs are NULL, the outputs are disabled. ÔÉÂ(EÅ(6 :€©€”‘€‚A€€€€€‚ÿThe engine uses a default viewport region. If the graph includes screen-based objects (such as SoText2) you can call setViewportRegion() on the engine instance to set up the correct viewport region to use./ ;Ä(tÅ(& €€‚A€‚ÿINPUTSDEÅ(¸Å(2 4€$€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodenodee<tÅ(Æ() "€x€”‘€‚A€‚ÿDefines the graph for which the bounding box is computed.D¸Å(aÆ(2 4€$€T”A‚S~‚Aãod选ƒ‚ÿSoSFPathpathtKÆ(ÕÆ() "€–€”‘€‚A€‚ÿAlternatively, defines the graph for which the bounding box is computed.0 aÆ(Ç(& €€‚A€‚ÿOUTPUTSFÕÆ(KÇ(2 4€(€T”A‚S~‚A€ã”5‰ƒ‚ÿ(SoSFVec3f)minW.Ç(¢Ç() "€\€”‘€‚A€‚ÿMinimum point of the computed bounding box.FKÇ(èÇ(2 4€(€T”A‚S~‚A€ã”5‰ƒ‚ÿ(SoSFVec3f)maxW.¢Ç(?È() "€\€”‘€‚A€‚ÿMaximum point of the computed bounding box.LèÇ(‹È(2 4€4€T”A‚S~‚A€ã”5‰ƒ‚ÿ(SoSFVec3f)boxCenterP'?È(ÛÈ() "€N€”‘€‚A€‚ÿCenter of the computed bounding box.O‹È(*É(2 4€:€T”A‚S~‚A€ã”5‰ƒ‚ÿ(SoSFVec3f)objectCenterO&ÛÈ(yÉ() "€L€”‘€‚A€‚ÿCenter of the objects in the graph.0 *É(©É(& €€‚A€‚ÿMETHODSFyÉ(ïÉ(, (€4€T”A‚S~‚A€ƒ‚ÿSoComputeBoundingBox()7©É(&Ê() "€€”‘€‚A€‚ÿConstructorl:ïÉ(’Ê(2 4€t€T”A‚S~‚A€ƒãñf‘¸‰‚ÿvoidsetViewportRegion(const SbViewportRegion &vpReg)mD&Ê(ÿÊ() "€ˆ€”‘€‚A€‚ÿSets the viewport region to use for the bounding box computation.c1’Ê(bË(2 4€b€T”A‚S~‚A€ãñf‘¸‰ƒ‚ÿconst SbViewportRegion &getViewportRegion()pGÿÊ(ÒË() "€Ž€”‘€‚A€‚ÿReturns the viewport region to use for the bounding box computation.<bË(Ì(& €,€‚A€‚ÿFILE FORMAT/DEFAULTAÒË(OÌ(* $€.€P„7|‚€‚ÿComputeBoundingBox {HÌ(—Ì(/ .€2€P„|‚€ƒ‚ƒ‚‚‚ÿnodeNULLpathNULL}1 OÌ(ÈÌ(& €€‚€‚ÿSEE ALSOƒ<—Ì(KÍ(G ^€x€”‘€‚ãë\¼N€‰€ããS¯+€‰€ã?çî$€‰‚ÿSoEngineOutput, SoGetBoundingBoxAction, SbBox3f> ÈÌ(‰Í(1ÉwQ€R—‰Í(¾Í(T@)SoConcatenate5KÍ(¾Í(% € €ˆˆ€‚ÿSoConcatenate*‰Í(èÍ(# €€€‚ÿNAMEqK¾Í(YÎ(& €–€”‘€€‚ÿSoConcatenate - joins separate fields into a single multiple-value field3èÍ(ŒÎ(# € €€‚ÿINHERITS FROM‘DYÎ(Ï(M j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoConcatenate2 ŒÎ(OÏ(& €€€€ ‚ÿSYNOPSISvOÏ(ÅÏ(' €ž€”‘€€‚‚ÿ#include Inputs from class SoConcatenate:DOÏ(), (€0€T”A‚S~‚A€ƒ‚ÿinÅÏ()KÍ(put[10]M$ÅÏ(b)) "€H€”‘€‚A€‚ÿOutputs from class SoConcatenate:D)¦), (€0€T”A‚S~‚A€ƒ‚ÿ()outputM$b)ó)) "€H€”‘€‚A€‚ÿMethods from class SoConcatenate:W%¦)J)2 4€J€T”A‚S~‚A€ƒãB-9‰‚ÿSoConcatenate(SoType inputType)P!ó)š)/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}J)š)ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)š)ò)/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØš)W) 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHò)ß)@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NW)-)/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þß)d)Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4-)˜)& €€‚A€‚ÿDESCRIPTION—ad)/ )6 :€Ã€”‘€‚A€€€€€‚ÿThis engine joins up to 10 separate fields of a type into a single multiple-valued field of the same type. The type of the input fields can be any subclass of SoMField The type is specified when an instance of the class is created. For example, SoConcatenate(SoMFFloat::getClassTypeId()) creates an engine that concatenates floating-point values.|@˜)« )< F€€”‘€‚A€€€€€€€‚ÿThe input field is a 10-element array, where each element can be connected to single- or multiple-valued fields. All the values in the input are concatenated together to form one multiple-value field. For example, if input[0] contains 10 values and input[1] contains 3 values, the output will contain 13 values.ä®/ ) )6 :€]€”‘€‚A€€€€€‚ÿNote that, unlike the output of most engines, output is a pointer. Note also that by default input does not contain any values, and no value is output from the engine./ « )¾ )& €€‚A€‚ÿINPUTSD ) ), (€0€T”A‚S~‚A€ƒ‚ÿinput[10]0 ¾ )2 )& €€‚A€‚ÿOUTPUTSD )v ), (€0€T”A‚S~‚A€ƒ‚ÿ()output0 2 )¦ )& €€‚A€‚ÿMETHODSW%v )ý )2 4€J€T”A‚S~‚A€ƒãB-9‰‚ÿSoConcatenate(SoType inputType)rI¦ )o)) "€’€”‘€‚A€‚ÿConstructor. The argument specifies the type of values to concatenate.<ý )«)& €,€‚A€‚ÿFILE FORMAT/DEFAULT:o)å)* $€ €P„7|‚€‚ÿConcatenate {»z«) )A R€ô€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtypeinput0[]input1[]input2[]input3[]input4[]input5[]input6[]input7[]input8[]input9[]}1 å)Ñ)& €€‚€‚ÿSEE ALSOw0 )T@)G ^€`€”‘€‚ãë\¼N€‰€Ñ)T@)KÍ(ãŽ9€‰€ãJ –€‰‚ÿSoEngineOutput, SoGate, SoSelectOne7Ñ)‹@)1‚‡QíS˜‹@)¹@)%‹)SoCone. T@)¹@)% €€ˆˆ€‚ÿSoCone*‹@)ã@)# €€€‚ÿNAMEA¹@)$A)& €6€”‘€€‚ÿSoCone - cone shape node3ã@)WA)# € €€‚ÿINHERITS FROM¢I$A)ùA)Y ‚€’€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoCone2 WA)+B)& €€€€ ‚ÿSYNOPSISK%ùA)vB)& €J€”‘€€‚ÿ#include ¾v+B)4C)H `€ì€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum Part{SoCone::SIDESThe conical partSoCone::BOTTOMThe bottom circular faceSoCone::ALLAll parts}EvB)yC)) "€8€”‘€‚A€‚ÿFields from class SoCone:„B4C)ýC)B T€„€T”A‚S~‚Aã:YN€‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFBitMaskpartsSoSFFloatbottomRadiusSoSFFloatheightFyC)CD)) "€:€”‘€‚A€‚ÿMethods from class SoCone:ó ýC)6E)S t€A€T”A‚S~‚A€ƒ‚ƒãï9‰‚ƒãï9‰‚㑶p6‰ƒãï9‰‚ãB-9‰ƒ‚ÿSoCone()voidaddPart(SoCone::Part part)voidremovePart(SoCone::Part part)SbBoolhasPart(SoCone::Part part) conststatic SoTypegetClassTypeId()NCD)„E)/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|6E)G)n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)„E)XG)/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØG)½I) 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHXG)EJ)@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N½I)“J)/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞEJ)ÊK)Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4“J)þK)& €€‚A€‚ÿDESCRIPTION`6ÊK)^M)* "€m€”‘€‚A€‚ÿThis node represents a simple cone whose central axis is aligned with the y-axis. By default, the cone is centered at (0,0,0) and has a size of -1 to +1 in all three directions. The cone has a radius of 1 at the bottom and a height of 2, with its apex at 1. The cone has two parts: the sides and the bottom.ΤþK),N)* "€I€”‘€‚A€‚ÿThe cone is transformed by the current cumulative transformation and is drawn with the current lighting model, drawing style, material, and geometric complexity. ã^M)9O)* "€Ç€”‘€‚A€‚ÿIf the current material binding is PER_PART or PER_PART_INDEXED, the first current material is used for the sides of the cone, and the second is used for the bottom. Otherwise, the first material is used for the entire cone.è¾,N)-)* "€}€”‘€‚A€‚ÿWhen a texture is applied to a cone, it is applied differently to the sides and bottom. On the sides, the texture wraps counterclockwise (from above) starti9O)-)T@)ng at the back of the cone. The texture has a vertical seam at the back, intersecting the yz-plane. For the bottom, a circle is cut out of the texture square and applied to the cone's base circle. The texture appears right side up when the top of the cone is tilted away from the camera./ 9O)\)& €€‚A€‚ÿFIELDSH-)¤)2 4€,€T”A‚S~‚Aã:YN€‰ƒ‚ÿSoSFBitMaskpartsB\)æ)) "€2€”‘€‚A€‚ÿVisible parts of cone.h.¤)N‚): D€\€T”A‚S~‚Aã0â1€‰ƒ‚ã0â1‰ƒ‚ÿSoSFFloatbottomRadiusSoSFFloatheightŽeæ)Ü‚)) "€Ê€”‘€‚A€‚ÿThese define the cone's height and the radius of the base circle; values must be greater than 0.0.0 N‚) ƒ)& €€‚A€‚ÿMETHODS8 Ü‚)Dƒ), (€€T”A‚S~‚A€ƒ‚ÿSoCone()V- ƒ)šƒ)) "€Z€”‘€‚A€‚ÿCreates a cone node with default settings.sEDƒ) „). ,€Š€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddPart(SoCone::Part part)voidremovePart(SoCone::Part part)ƒZšƒ)„)) "€´€”‘€‚A€‚ÿThese are convenience functions that make it easy to turn on or off a part of the cone.^, „)î„)2 4€X€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolhasPart(SoCone::Part part) constpG„)^…)) "€Ž€”‘€‚A€‚ÿThis convenience function returns whether a given part is on or off.U#î„)³…)2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*^…)†)) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8³…)>†)& €$€‚A€‚ÿACTION BEHAVIORH†)††)2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionU>†)‡), (€ª€”‘€‚A€€‚ÿDraws cone based on the current coordinates, materials, drawing style, and so on.G††)N‡)2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction¢p‡)ð‡)2 4€à€”‘€‚A€€€€‚ÿIntersects the ray with the cone. The part of the cone that was picked is available from the SoConeDetail.NN‡)>ˆ)2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActiona5ð‡)Ÿˆ), (€j€”‘€‚A€€‚ÿComputes the bounding box that encloses the cone.H>ˆ)çˆ)2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackAction¸‹Ÿˆ)Ÿ‰)- (€€”‘€‚A€€‚ÿIf any triangle callbacks are registered with the action, they will be invoked for each successive triangle that approximates the cone.<çˆ)Û‰)& €,€‚A€‚ÿFILE FORMAT/DEFAULT3 Ÿ‰)Š)* $€€P„7|‚€‚ÿCone {X'Û‰)fŠ)1 2€N€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿpartsALLbottomRadius1height2}1 Š)—Š)& €€‚€‚ÿSEE ALSOŽ;fŠ)%‹)S v€v€”‘€‚ãì‡!€‰€ãAA9€‰€ãþ‚dñ€‰€ãñd뀉‚ÿSoConeDetail, SoCube, SoCylinder, SoSphere= —Š)b‹)1v€RQS™b‹)–‹)æÂ)SoConeDetail4%‹)–‹)% €€ˆˆ€‚ÿSoConeDetail*b‹)À‹)# €€€‚ÿNAMEoC–‹)/Œ), (€†€”‘€€€€‚ÿSoConeDetail - stores detail information about the SoCone node3À‹)bŒ)# € €€‚ÿINHERITS FROMT/Œ)¶Œ)5 :€>€”‘€ãåŒÅe€‰€€€‚ÿSoDetail > SoConeDetail2 bŒ)èŒ)& €€€€ ‚ÿSYNOPSISuN¶Œ)])' €œ€”‘€€‚‚ÿ#include Methods from class SoConeDetail:—_èŒ)ô)8 @€¾€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoConeDetail()virtual~SoConeDetail()intgetPart() conststatic SoTypegetClassTypeId()P!])DŽ)/ .€B€”‘€‚A€ãåŒÅe‰‚ÿMethods from class SoDetail:®fô)òŽ)H `€Ì€T”A‚S~‚AãåŒÅe€‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿSoDetail *copy() constvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4DŽ)&)& €€‚A€‚ÿDESCRIPTION­ƒòŽ)Ó)* "€€”‘€‚A€‚ÿThis class contains detail information about a point on a cone. It contains the part of the cone that was hit (sides or bottom).0 &)À)& €€‚A€‚ÿMETHODÓ)À)%‹)SX*Ó)gÀ). ,€T€T”A‚S~‚A€ƒ‚ƒ‚ÿSoConeDetail()virtual~SoConeDetail()GÀ)®À)) "€<€”‘€‚A€‚ÿConstructor and destructor.BgÀ)ðÀ), (€,€T”A‚S~‚A€ƒ‚ÿintgetPart() const‡X®À)wÁ)/ .€°€”‘€‚A€€€‚ÿReturns the part in the detail. The returned value is one of the SoCone part flags.U#ðÀ)ÌÁ)2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*wÁ)Â)) "€T€”‘€‚A€‚ÿReturns type identifier for this class.1 ÌÁ)PÂ)& €€‚A€‚ÿSEE ALSO–CÂ)æÂ)S v€†€”‘€‚Aãï9€‰€ãåŒÅe€‰€ã¼B‘S€‰€ãkNÞ€‰‚ÿSoCone, SoDetail, SoPickedPoint, SoPrimitiveVertex> PÂ)$Ã)1íSMTš$Ã)YÃ)H*SoCoordinate35æÂ)YÃ)% € €ˆˆ€‚ÿSoCoordinate3*$Ã)ƒÃ)# €€€‚ÿNAMEN(YÃ)ÑÃ)& €P€”‘€€‚ÿSoCoordinate3 - coordinate point node3ƒÃ)Ä)# € €€‚ÿINHERITS FROMBÑÃ)“Ä)M j€„€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoCoordinate32 Ä)ÅÄ)& €€€€ ‚ÿSYNOPSIStM“Ä)9Å)' €š€”‘€€‚‚ÿ#include Fields from class SoCoordinate3:FÅÄ)Å)2 4€(€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fpointM$9Å)ÌÅ)) "€H€”‘€‚A€‚ÿMethods from class SoCoordinate3:h4Å)4Æ)4 8€h€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoCoordinate3()static SoTypegetClassTypeId()NÌÅ)‚Æ)/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|4Æ)þÇ)n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)‚Æ)VÈ)/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØþÇ)»Ê) 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHVÈ)CË)@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N»Ê)‘Ë)/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞCË)ÈÌ)Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4‘Ë)üÌ)& €€‚A€‚ÿDESCRIPTION¤tÈÌ) Î)0 .€é€”‘€‚A€€€‚ÿThis node defines a set of 3D coordinates to be used by subsequent vertex-based shape nodes (those derived from SoVertexShape) or shape nodes that use them as control points (such as NURBS curves and surfaces). This node does not produce a visible result during rendering; it simply replaces the current coordinates in the rendering state for subsequent nodes to use./ üÌ)ÏÎ)& €€‚A€‚ÿFIELDSF Î)Ï)2 4€(€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fpoint@ÏÎ)UÏ)) "€.€”‘€‚A€‚ÿCoordinate point(s).0 Ï)…Ï)& €€‚A€‚ÿMETHODS?UÏ)ÄÏ), (€&€T”A‚S~‚A€ƒ‚ÿSoCoordinate3()\3…Ï),*) "€f€”‘€‚A€‚ÿCreates a coordinaÄÏ),*æÂ)te node with default settings.U#ÄÏ)*2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*,*Ô*) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8* *& €$€‚A€‚ÿACTION BEHAVIOR›WÔ*§*D X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction\0 **, (€`€”‘€‚A€€‚ÿSets coordinates in current traversal state.<§*?*& €,€‚A€‚ÿFILE FORMAT/DEFAULT:*y** $€ €P„7|‚€‚ÿCoordinate3 {>?*·*- *€"€P„|‚€ƒ‚‚‚ÿpoint0 0 0}1 y*è*& €€‚€‚ÿSEE ALSO`%·*H*; F€J€”‘€‚ã\Eà€‰€ã¹êZY€‰‚ÿSoCoordinate4, SoVertexShape> è*†*11QSA‚T›†*»*¦E*SoCoordinate45H*»*% € €ˆˆ€‚ÿSoCoordinate4*†*å*# €€€‚ÿNAMEW1»*<*& €b€”‘€€‚ÿSoCoordinate4 - rational coordinate point node3å*o*# € €€‚ÿINHERITS FROMB<*þ*M j€„€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoCoordinate42 o*0*& €€€€ ‚ÿSYNOPSIStMþ*¤*' €š€”‘€€‚‚ÿ#include Fields from class SoCoordinate4:F0*ê*2 4€(€T”A‚S~‚AãIòi`€‰ƒ‚ÿSoMFVec4fpointM$¤*7*) "€H€”‘€‚A€‚ÿMethods from class SoCoordinate4:h4ê*Ÿ*4 8€h€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoCoordinate4()static SoTypegetClassTypeId()N7*í*/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Ÿ*i*n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)í*Á*/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØi*& * 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÁ*® *@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N& *ü */ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ® *3 *Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ü *g *& €€‚A€‚ÿDESCRIPTION13 *˜*0 .€€”‘€‚A€€€‚ÿThis node defines a set of 3D coordinates to be used by subsequent vertex-based shape nodes (those derived from SoVertexShape) or shape nodes that use them as control points (such as NURBS curves and surfaces). Coordinates are specifed as rational 4-vectors; the corresponding 3D point is computed by dividing the first three components by the fourth. This node does not produce a visible result during rendering; it simply replaces the current coordinates in the rendering state for subsequent nodes to use.¹g *]@** "€€”‘€‚A€‚ÿThis node exists primarily for use with NURBS curves and surf˜*]@*H*aces. However, it can be used to define coordinates for any vertex-based shape./ ˜*Œ@*& €€‚A€‚ÿFIELDSF]@*Ò@*2 4€(€T”A‚S~‚AãIòi`€‰ƒ‚ÿSoMFVec4fpoint@Œ@*A*) "€.€”‘€‚A€‚ÿCoordinate point(s).0 Ò@*BA*& €€‚A€‚ÿMETHODS?A*A*, (€&€T”A‚S~‚A€ƒ‚ÿSoCoordinate4()\3BA*ÝA*) "€f€”‘€‚A€‚ÿCreates a coordinate node with default settings.U#A*2B*2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ÝA*…B*) "€T€”‘€‚A€‚ÿReturns type identifier for this class.82B*½B*& €$€‚A€‚ÿACTION BEHAVIOR›W…B*XC*D X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction\0½B*´C*, (€`€”‘€‚A€€‚ÿSets coordinates in current traversal state.<XC*ðC*& €,€‚A€‚ÿFILE FORMAT/DEFAULT:´C**D** $€ €P„7|‚€‚ÿCoordinate4 {@ðC*jD*- *€&€P„|‚€ƒ‚‚‚ÿpoint0 0 0 1}1 *D*›D*& €€‚€‚ÿSEE ALSO “jD*¦E*x ¾€'€”‘€‚ã\Eà€‰€ã|Ťã€‰€ã^`ˆ½€‰€ãÓÂ.€‰€ã‰X˜é€‰€ã½)×n€‰€ã¹êZY€‰‚ÿSoCoordinate4, SoIndexedNurbsCurve, SoIndexedNurbsSurface, SoNurbsCurve, SoNurbsProfile, SoNurbsSurface, SoVertexShape: ›D*àE*1—MT¢UœàE*F*ÍŒ*SoCounter1 ¦E*F*% €€ˆˆ€‚ÿSoCounter*àE*;F*# €€€‚ÿNAMEN(F*‰F*& €P€”‘€€‚ÿSoCounter - triggered integer counter3;F*¼F*# € €€‚ÿINHERITS FROM@‰F*IG*M j€€€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoCounter2 ¼F*{G*& €€€€ ‚ÿSYNOPSISnGIG*éG*' €Ž€”‘€€‚‚ÿ#include Inputs from class SoCounter:­[{G*–H*R t€¶€T”A‚S~‚Aã)„ƒ4€‰ƒ‚ã)„ƒ4‰ƒ‚ã)„ƒ4‰ƒ‚ã%牃‚ã)„ƒ4‰ƒ‚ÿSoSFShortminSoSFShortmaxSoSFShortstepSoSFTriggertriggerSoSFShortresetI éG*ßH*) "€@€”‘€‚A€‚ÿOutputs from class SoCounter:i/–H*HI*: D€^€T”A‚S~‚A€ã)„ƒ4‰ƒ‚ã%牃‚ÿ(SoSFShort)output(SoSFTrigger)syncOutI ßH*‘I*) "€@€”‘€‚A€‚ÿMethods from class SoCounter:;HI*ÌI*, (€€T”A‚S~‚A€ƒ‚ÿSoCounter()P!‘I*J*/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}ÌI*L*ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)J*tL*/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØL*ÙN* 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHtL*aO*@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÙN*¯O*/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞaO*ò€*Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ã¯O*ò€*¦E*úß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4¯O*&*& €€‚A€‚ÿDESCRIPTIONp@ò€*–‚*0 .€€”‘€‚A€€€‚ÿThis engine is a counter that outputs numbers, starting at a minimum value, increasing by a step value, and ending with a number that does not exceed the maximum value. It outputs the next number whenever the trigger input is touched. When the maximum number is reached, it starts counting from the beginning again.߯&*u„*0 .€_€”‘€‚A€€€‚ÿAt any time the counter can be reset to a specific value by setting the reset input field to that value. The next time the counter is triggered it will start counting from there. Note that the counter will always output numbers based on the min, max and step values, and setting the reset value does not affect those input fields. If the reset value is not a legal counter value, the counter will still behave as though it is.&Ì–‚*›…*Z ‚€™€T”!:‚!€ƒ€€€€€€‚ƒ€€€€€€‚ƒ€€‚ÿ•If reset is greater than max, the counter is set to max.•If reset is less than min, the counter is set to min.•If reset is between steps, the counter is set to the lower step value.Íu„*h†*0 .€;€”‘€‚!€€€‚ÿEach time a counting cycle is started, the syncOut output is triggered. This output can be used to synchronize some other event with the counting cycle./ ›…*—†*& €€‚!€‚ÿINPUTSDh†*Û†*2 4€$€T”A‚S~‚Aã)„ƒ4€‰ƒ‚ÿSoSFShortminJ!—†*%‡*) "€B€”‘€‚A€‚ÿMinimum value for the counter.DÛ†*i‡*2 4€$€T”A‚S~‚Aã)„ƒ4€‰ƒ‚ÿSoSFShortmaxJ!%‡*³‡*) "€B€”‘€‚A€‚ÿMaximum value for the counter.Ei‡*ø‡*2 4€&€T”A‚S~‚Aã)„ƒ4€‰ƒ‚ÿSoSFShortstep?³‡*7ˆ*) "€,€”‘€‚A€‚ÿCounter step value.Jø‡*ˆ*2 4€0€T”A‚S~‚Aã%瀉ƒ‚ÿSoSFTriggertrigger@7ˆ*Áˆ*) "€.€”‘€‚A€‚ÿGo to the next step.Fˆ*‰*2 4€(€T”A‚S~‚Aã)„ƒ4€‰ƒ‚ÿSoSFShortresetjAÁˆ*q‰*) "€‚€”‘€‚A€‚ÿAt the next trigger, reset the counter to the specified value.0 ‰*¡‰*& €€‚A€‚ÿOUTPUTSIq‰*ê‰*2 4€.€T”A‚S~‚A€ã)„ƒ4‰ƒ‚ÿ(SoSFShort)outputQ(¡‰*;Š*) "€P€”‘€‚A€‚ÿCounts min-to-max in step increments.Lê‰*‡Š*2 4€4€T”A‚S~‚A€ã%牃‚ÿ(SoSFTrigger)syncOutD;Š*ËŠ*) "€6€”‘€‚A€‚ÿTriggers at cycle start.0 ‡Š*ûŠ*& €€‚A€‚ÿMETHODS;ËŠ*6‹*, (€€T”A‚S~‚A€ƒ‚ÿSoCounter()7ûŠ*m‹*) "€€”‘€‚A€‚ÿConstructor<6‹*©‹*& €,€‚A€‚ÿFILE FORMAT/DEFAULT6 m‹*ß‹** $€€P„7|‚€‚ÿCounter {\(©‹*;Œ*4 8€P€P„|‚€ƒ‚ƒ‚ƒ‚‚ƒ‚‚‚ÿmin0max1step1triggerreset0}1 ß‹*lŒ*& €€‚€‚ÿSEE ALSOa&;Œ*ÍŒ*; F€L€”‘€‚ã@)€‰€ãë\¼N€‰‚ÿSoTimeCounter, SoEngineOutput7lŒ**1–A‚T$V*2*¯+SoCube. ÍŒ*2*% €€ˆˆ€‚ÿSoCube**\*# €€€‚ÿNAMEA2**& €6€”‘€€‚ÿSoCube - cube shape node3\*Ð*# € €€‚ÿINHERITS FROM¢I*rŽ*Y ‚€’€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoCube2 Ð*¤Ž*& €€€€ ‚ÿSYNOPSISf?rŽ* *' €~€”‘€€‚‚ÿ#include Fields from class SoCube:{9¤Ž*…*B T€r€T”A‚S~‚Aã0â1€‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFFloatwidthSoSFFloatheightSoSFFloatdepthF *Ë*) "€:€”‘€‚A€‚ÿMethods from class SoCube:a-…*8À*4 8€Z€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿË*8À*ÍŒ*SoCube()static SoTypegetClassTypeId()NË*†À*/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|8À*Â*n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)†À*ZÂ*/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÂ*¿Ä* 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHZÂ*GÅ*@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¿Ä*•Å*/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞGÅ*ÌÆ*Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4•Å*Ç*& €€‚A€‚ÿDESCRIPTIONqGÌÆ*qÈ** "€€”‘€‚A€‚ÿThis node represents a cuboid aligned with the coordinate axes. By default, the cube is centered at (0,0,0) and measures 2 units in each dimension, from -1 to +1. The cube is transformed by the current cumulative transformation and is drawn with the current lighting model, drawing style, material, and geometric complexity.õËÇ*fÉ** "€—€”‘€‚A€‚ÿIf the current material binding is PER_PART, PER_PART_INDEXED, PER_FACE, or PER_FACE_INDEXED, materials will be bound to the faces of the cube in this order: front, back, left, right, top, and bottom.¹qÈ*Ë** "€€”‘€‚A€‚ÿTextures are applied individually to each face of the cube; the entire texture goes on each face. On the front, back, right, and left sides of the cube, the texture is applied right side up. On the top, the texture appears right side up when the top of the cube is tilted toward the camera. On the bottom, the texture appears right side up when the top of the cube is tilted away from the camera./ fÉ*NË*& €€‚A€‚ÿFIELDS{9Ë*ÉË*B T€r€T”A‚S~‚Aã0â1€‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFFloatwidthSoSFFloatheightSoSFFloatdepth^5NË*'Ì*) "€j€”‘€‚A€‚ÿSizes in the x, y, and z dimensions, respectively.0 ÉË*WÌ*& €€‚A€‚ÿMETHODS8 'Ì*Ì*, (€€T”A‚S~‚A€ƒ‚ÿSoCube()V-WÌ*åÌ*) "€Z€”‘€‚A€‚ÿCreates a cube node with default settings.U#Ì*:Í*2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*åÌ*Í*) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8:Í*ÅÍ*& €$€‚A€‚ÿACTION BEHAVIORHÍ* Î*2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionUÅÍ*ŽÎ*, (€ª€”‘€‚A€€‚ÿDraws cube based on the current coordinates, materials, drawing style, and so on.G Î*ÕÎ*2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction¢pŽÎ*wÏ*2 4€à€”‘€‚A€€€€‚ÿIntersects the ray with the cube. The face of the cube that was picked is available from the SoCubeDetail.NÕÎ*ÅÏ*2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActiona5wÏ*2+, (€j€”‘€‚A€€‚ÿComputes the bÅÏ*2+ÍŒ*ounding box that encloses the cube.HÅÏ*z+2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackAction¸‹2+2+- (€€”‘€‚A€€‚ÿIf any triangle callbacks are registered with the action, they will be invoked for each successive triangle that approximates the cube.<z+n+& €,€‚A€‚ÿFILE FORMAT/DEFAULT3 2+¡+* $€€P„7|‚€‚ÿCube {On+ð+1 2€<€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿwidth2height2depth2}1 ¡+!+& €€‚€‚ÿSEE ALSOŽ;ð+¯+S v€v€”‘€‚ãï9€‰€ãŽ2Ü瀉€ãþ‚dñ€‰€ãñd뀉‚ÿSoCone, SoCubeDetail, SoCylinder, SoSphere= !+ì+1É¢UÛVžì+ +¸ +SoCubeDetail4¯+ +% €€ˆˆ€‚ÿSoCubeDetail*ì+J+# €€€‚ÿNAMEgA +±+& €‚€”‘€€‚ÿSoCubeDetail - stores detail information about the SoCube node3J+ä+# € €€‚ÿINHERITS FROMT±+8+5 :€>€”‘€ãåŒÅe€‰€€€‚ÿSoDetail > SoCubeDetail2 ä+j+& €€€€ ‚ÿSYNOPSISuN8+ß+' €œ€”‘€€‚‚ÿ#include Methods from class SoCubeDetail:—_j+v+8 @€¾€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoCubeDetail()virtual~SoCubeDetail()intgetPart() conststatic SoTypegetClassTypeId()P!ß+Æ+/ .€B€”‘€‚A€ãåŒÅe‰‚ÿMethods from class SoDetail:®fv+t+H `€Ì€T”A‚S~‚AãåŒÅe€‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿSoDetail *copy() constvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4Æ+¨+& €€‚A€‚ÿDESCRIPTIONšqt+B+) "€â€”‘€‚A€‚ÿThis class contains detail information about a point on a cube. It contains the part of the cube that was hit.G¨+‰+) "€<€”‘€‚A€‚ÿPart values are as follows:d/B+í+5 :€^€T”!:‚!€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿ0Front1Back2Left3Right4Top5Bottom0 ‰++& €€‚!€‚ÿMETHODSX*í+u+. ,€T€T”A‚S~‚A€ƒ‚ƒ‚ÿSoCubeDetail()virtual~SoCubeDetail()G+¼+) "€<€”‘€‚A€‚ÿConstructor and destructor.Bu+þ+, (€,€T”A‚S~‚A€ƒ‚ÿintgetPart() constK"¼+I +) "€D€”‘€‚A€‚ÿReturns the part in the detail.U#þ+ž +2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*I +ñ +) "€T€”‘€‚A€‚ÿReturns type identifier for this class.1 ž +" +& €€‚A€‚ÿSEE ALSO–Cñ +¸ +S v€†€”‘€‚AãAA9€‰€ãåŒÅe€‰€ã¼B‘S€‰€ãkNÞ€‰‚ÿSoCube, SoDetail, SoPickedPoint, SoPrimitiveVertex; " +ó +1­$VZWŸó +% +»†+SoCylinder2 ¸ +% +% €€ˆˆ€‚ÿSoCylinder*ó +O +# €€€‚ÿNAMEI#% +˜ +& €F€”‘€€‚ÿSoCylinder - cylinder shape node3O +Ë +# € €€‚ÿINHERITS FROM¦M˜ +q +Y ‚€š€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoCylinder2 Ë +£ +& €€€€ ‚ÿSYNOPSISO)q +ò +& €R€”‘€€‚ÿ#include ¯£ +ó +R r€_€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Part{SoCylinder::SIDESThe cylindrical partSoCylinder::TOPThe top circular faceSoCylinder::BOTTOMThe bottom circular faceSoCylinder::ALLAll parts}I ò +<+) "€@€”‘€‚A€‚ÿFields from class SoCylinder:~<ó +º+B T€x€T”A‚S~‚Aã:YN€‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFBitMaskpartsSoSFFloatradiusSoSFFloatheightJ!<++) "€B€”‘€‚A€‚ÿMethods from class SoCylinder:°º+@+S t€a€T”A‚S~‚A€ƒ‚ƒãþ‚dñ‰‚ƒãþ‚dñ‰‚㑶p6‰ƒãþ‚dñ‰‚ãB-9‰ƒ‚ÿSoCylinder()voidaddPart(SoCylinder::Part part)voidremovePart(SoCylinder::Part part)SbBoolhasPart(SoCylinder::Part part) conststatic SoTypegetClassTyp+@+¸ +eId()N+a@+/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:l @+ÍA+b ’€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)a@+%B+/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÍA+ŠD+ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH%B+E+@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NŠD+`E+/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞE+—F+Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4`E+ËF+& €€‚A€‚ÿDESCRIPTIONG—F+H+6 :€#€”‘€‚A€€€€€‚ÿThis node represents a simple capped cylinder centered around the y-axis. By default, the cylinder is centered at (0,0,0) and has a default size of -1 to +1 in all three dimensions. You can use the radius and height fields to create a cylinder with a different size.Ò¨ËF+äH+* "€Q€”‘€‚A€‚ÿThe cylinder is transformed by the current cumulative transformation and is drawn with the current lighting model, drawing style, material, and geometric complexity.4 H+J+* "€€”‘€‚A€‚ÿIf the current material binding is PER_PART or PER_PART_INDEXED, the first current material is used for the sides of the cylinder, the second is used for the top, and the third is used for the bottom. Otherwise, the first material is used for the entire cylinder.oEäH+‡L+* "€‹€”‘€‚A€‚ÿWhen a texture is applied to a cylinder, it is applied differently to the sides, top, and bottom. On the sides, the texture wraps counterclockwise (from above) starting at the back of the cylinder. The texture has a vertical seam at the back, intersecting the yz-plane. For the top and bottom, a circle is cut out of the texture square and applied to the top or bottom circle. The top texture appears right side up when the top of the cylinder is tilted toward the camera, and the bottom texture appears right side up when the top of the cylinder is tilted away from the camera./ J+¶L+& €€‚A€‚ÿFIELDSH‡L+þL+2 4€,€T”A‚S~‚Aã:YN€‰ƒ‚ÿSoSFBitMaskpartsF¶L+DM+) "€:€”‘€‚A€‚ÿVisible parts of cylinder.b(þL+¦M+: D€P€T”A‚S~‚Aã0â1€‰ƒ‚ã0â1‰ƒ‚ÿSoSFFloatradiusSoSFFloatheightuLDM+N+) "€˜€”‘€‚A€‚ÿDefine the cylinder's height and radius; values must be greater than 0.0.0 ¦M+KN+& €€‚A€‚ÿMETHODS<N+‡N+, (€ €T”A‚S~‚A€ƒ‚ÿSoCylinder()Z1KN+áN+) "€b€”‘€‚A€‚ÿCreates a cylinder node with default settings.{M‡N+\O+. ,€š€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddPart(SoCylinder::Part part)voidremovePart(SoCylinder::Part part)‡^áN+ €+) "€¼€”‘€‚A€‚ÿThese are convenience functions that make it easy to turn on or off a part of the cylinder.\O+ €+¸ +b0\O+n€+2 4€`€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolhasPart(SoCylinder::Part part) constpG €+Þ€+) "€Ž€”‘€‚A€‚ÿThis convenience function returns whether a given part is on or off.U#n€+3+2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Þ€+†+) "€T€”‘€‚A€‚ÿReturns type identifier for this class.83+¾+& €$€‚A€‚ÿACTION BEHAVIORH†+‚+2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderAction…Y¾+‹‚+, (€²€”‘€‚A€€‚ÿDraws cylinder based on the current coordinates, materials, drawing style, and so on.G‚+Ò‚+2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction®|‹‚+€ƒ+2 4€ø€”‘€‚A€€€€‚ÿIntersects the ray with the cylinder. The part of the cylinder that was picked is available from the SoCylinderDetail.NÒ‚+΃+2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActione9€ƒ+3„+, (€r€”‘€‚A€€‚ÿComputes the bounding box that encloses the cylinder.H΃+{„+2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackAction¼3„+7…+- (€€”‘€‚A€€‚ÿIf any triangle callbacks are registered with the action, they will be invoked for each successive triangle that approximates the cylinder.<{„+s…+& €,€‚A€‚ÿFILE FORMAT/DEFAULT7 7…+ª…+* $€€P„7|‚€‚ÿCylinder {R!s…+ü…+1 2€B€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿpartsALLradius1height2}1 ª…+-†+& €€‚€‚ÿSEE ALSOŽ;ü…+»†+S v€v€”‘€‚ãï9€‰€ãAA9€‰€ã!d©€‰€ãñd뀉‚ÿSoCone, SoCube, SoCylinderDetail, SoSphereA-†+ü†+1¯ÛVY ü†+4‡+²Ž+SoCylinderDetail8»†+4‡+% €&€ˆˆ€‚ÿSoCylinderDetail*ü†+^‡+# €€€‚ÿNAMEwK4‡+Õ‡+, (€–€”‘€€€€‚ÿSoCylinderDetail - stores detail information about the SoCylinder node3^‡+ˆ+# € €€‚ÿINHERITS FROMX#Õ‡+`ˆ+5 :€F€”‘€ãåŒÅe€‰€€€‚ÿSoDetail > SoCylinderDetail2 ˆ+’ˆ+& €€€€ ‚ÿSYNOPSIS}V`ˆ+‰+' €¬€”‘€€‚‚ÿ#include Methods from class SoCylinderDetail:Ÿg’ˆ+®‰+8 @€Î€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoCylinderDetail()virtual~SoCylinderDetail()intgetPart() conststatic SoTypegetClassTypeId()P!‰+þ‰+/ .€B€”‘€‚A€ãåŒÅe‰‚ÿMethods from class SoDetail:®f®‰+¬Š+H `€Ì€T”A‚S~‚AãåŒÅe€‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿSoDetail *copy() constvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4þ‰+àŠ+& €€‚A€‚ÿDESCRIPTION»‘¬Š+›‹+* "€#€”‘€‚A€‚ÿThis class contains detail information about a point on a cylinder. It contains the part of the cylinder that was hit (sides, top, or bottom).0 àŠ+Ë‹+& €€‚A€‚ÿMETHODS`2›‹++Œ+. ,€d€T”A‚S~‚A€ƒ‚ƒ‚ÿSoCylinderDetail()virtual~SoCylinderDetail()GË‹+rŒ+) "€<€”‘€‚A€‚ÿConstructor and destructor.B+Œ+´Œ+, (€,€T”A‚S~‚A€ƒ‚ÿintgetPart() const‹\rŒ+?+/ .€¸€”‘€‚A€€€‚ÿReturns the part in the detail. The returned value is one of the SoCylinder part flags.U#´Œ+”+2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*?+ç+) "€T€”‘€‚A€‚ÿReturns type identifier for this class.1 ”+Ž+& €€‚A€‚ÿSEE ALSOšGç+²Ž+S v€Ž€”‘€‚Aãþ‚dñ€‰€ãåŒÅe€‰€ã¼B‘S€‰€ãkNÞ€‰‚ÿSoCylinder, SoDetail, SoPickedPoint, SoPrimitiveVertex5Ž+çŽ+1¼@Y ˆY¡çŽ++Y‹,SoDB,²Ž++% €€ˆˆ€‚ÿSoDB*çŽ+=+# €€€‚ÿNAMEJ$+‡+& €H€”‘€€‚ÿSoDB - scene graph database class3=+º+# € €€‚ÿINHERITS FROM1‡+ À+) "€€”‘€€€‚ÿSoDBº+ À+²Ž+2 º+>À+& €€€€ ‚ÿSYNOPSISC À+À+& €:€”‘€€‚ÿ#include n;>À+ïÀ+3 6€v€T”A‚S~‚A€ƒãþßC˜‰‚ÿtypedef voidSoDBHeaderCB(void *userData,SoInput *in)DÀ+3Á+) "€6€”‘€‚A€‚ÿMethods from class SoDB:$•ïÀ+WÃ+ ì€+€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒãþßC˜‰ã’n%9‰‚㑶p6‰ƒãþßC˜‰ãMy'9‰‚ãÍ\Y‰ƒãþßC˜‰‚€ã”„'‰ƒãþßC˜‰€‚€ƒã’n%9‰ã’n%9‰‚ÿstatic voidinit()static const char *getVersion()static SbBoolread(SoInput *in,SoNode *&rootNode)static SbBoolread(SoInput *in,SoPath *&path)static SoSeparator *readAll(SoInput *in)static SoVRMLGroup *readAllVRML(SoInput *in) [TGS special]static voidcreateRoute(SoNode *pFromNode,const char * fromEventOut,SoNode *pToNode,const char* toEventIn) [TGS special] ˜3Á+aÅ+r ²€1€T”A‚S~‚A€㑶p6‰ƒ€‚€㑶p6‰ƒãXíʉ㑶p6‰‚㑶p6‰ƒãXíʉ㑶p6‰ã‘¶p6‰‚ÿstatic SbBoolisValidHeader(const char *testString)static SbBoolregisterHeader(const SbString &headerString,SbBool isBinary,float ivVersion,SoDBHeaderCB *preCB,SoDBHeaderCB *postCB,void *userData)static SbBoolgetHeaderData(const SbString &headerString,SbBool &isBinary,float &ivVersion,SoDBHeaderCB *&preCB,SoDBHeaderCB *&postCB,void *&userData,SbBool substringOK = FALSE)2³WÃ+“Ç+ Ì€g€T”A‚S~‚A€ƒ‚ãXíʉƒ‚ãþ —‰ƒãúß~6‰ãB-9‰‚ãþ —‰ƒãúß~6‰‚ƒãúß~6‰ãúß~6‰‚ƒã4a†6‰‚ã4a†6‰ƒ‚ƒã4a†6‰‚ÿstatic intgetNumHeaders()static SbStringgetHeaderString(int i)static SoField *createGlobalField(const SbName &name,SoType type)static SoField *getGlobalField(const SbName &name)static voidrenameGlobalField(const SbName &oldName,const SbName &newName)static voidsetRealTimeInterval(const SbTime &deltaT)static const SbTime &getRealTimeInterval()static voidsetDelaySensorTimeout(const SbTime &t)Ü£aÅ+oÈ+9 @€G€T”A‚S~‚A€ã4a†6‰ƒ‚ƒ‚ÿstatic const SbTime &getDelaySensorTimeout()static intdoSelect(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct timeval *userTimeOut)4“Ç+£È+& €€‚A€‚ÿDESCRIPTION¾doÈ+aË+Z ‚€É€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿThe SoDB class holds all scene graphs, each representing a 3D scene used by an application. A scene graph is a collection of SoNode objects which come in several varieties (see SoNode). Application programs must initialize the database by calling SoDB::init() before calling any other database routines and before constructing any nodes, paths, functions, or actions. Note that SoDB::init() is called by SoInteraction::init(), SoNodeKit::init(), and SoWin::init(), so if you are calling any of these methods, you do not need to call SoDB::init() directly. All methods on this class are static.uL£È+ÖË+) "€˜€”‘€‚A€‚ÿTypical program database initialization and scene reading is as follows: EaË+Ì+( €:€Ù€‚A€‚ÿ#include H ÖË+cÌ+( €@€Ù€‚A€‚ÿ#include R*Ì+µÌ+( €T€Ù€‚A€‚ÿ#include +cÌ+àÌ+( €€Ù€‚A€‚ÿAµÌ+!Í+( €2€Ù€‚A€‚ÿSoSeparator *rootSep;;àÌ+\Í+( €&€Ù€‚A€‚ÿSoInput in;+!Í+‡Í+( €€Ù€‚A€‚ÿ8\Í+¿Í+( € €Ù€‚A€‚ÿSoDB::init();H ‡Í+Î+( €@€Ù€‚A€‚ÿrootSep = SoDB::readAll(&in);?¿Í+FÎ+( €.€Ù€‚A€‚ÿif (rootSep == NULL)L$Î+’Î+( €H€Ù€‚A€‚ÿ printf("Error on read...\n");/FÎ+ÁÎ+( €€Ù€‚A€‚ÿ ...+’Î+ìÎ+( €€Ù€‚A€‚ÿ0 ÁÎ+Ï+& €€‚A€‚ÿMETHODSAìÎ+]Ï+, (€*€T”A‚S~‚A€ƒ‚ÿstatic voidinit()Ë¡Ï+4,* "€C€”‘€‚A€‚ÿInitializes the database. This must be called before calling any other database routines, including the construction of ]Ï+4,²Ž+any nodes, paths, engines, or actions.O#]Ï+ƒ,, (€F€T”A‚S~‚A€ƒ‚ÿstatic const char *getVersion()ƒZ4,,) "€´€”‘€‚A€‚ÿReturns a character string identifying the version of the Open Inventor library in use.Äpƒ,Ê,T x€à€T”A‚S~‚A€㑶p6‰ƒãþßC˜‰ã’n%9‰‚㑶p6‰ƒãþßC˜‰ãMy'9‰‚ÿstatic SbBoolread(SoInput *in,SoNode *&rootNode)static SbBoolread(SoInput *in,SoPath *&path)‚R,L,0 .€¥€”‘€‚A€€€‚ÿReads a graph from the file specified by the given SoInput, returning a pointer to the resulting root node in rootNode, or a pointer to the resulting path in path. The programmer is responsible for determining which routine to use, based on the contents of the input. These routines return FALSE if any error occurred during reading.³qÊ,ÿ,B R€ã€”‘€‚A€€€€€€€€€‚ÿIf the passed SoInput was used to open a file and the name of the file contains a directory, SoDB automatically adds the directory to the end of the current directory search path in the SoInput. This means that nested files named in SoFile nodes may be found relative to that directory. The directory is removed from the search path when reading is complete.h0L,g,8 @€`€T”A‚S~‚A€ãÍ\Y‰ƒãþßC˜‰‚ÿstatic SoSeparator *readAll(SoInput *in)é­ÿ,P,< F€[€”‘€‚A€€€€€€€‚ÿReads all graphs and paths from the file specified by the given SoInput. If there is only one graph in the file and its root is an SoSeparator, a pointer to the root is returned. In all other cases, this creates an SoSeparator, adds the root nodes of all graphs read as children of it, and returns a pointer to it. This returns NULL on error. This processes directory paths in the same way as the other reading routines.Cg,Ï,< H€†€T”A‚S~‚A€ã”„'‰ƒãþßC˜‰ƒ€‚ÿstatic SoVRMLGroup *readAllVRML(SoInput *in)[TGS special]ë©P,º ,B R€S€”‘€‚A€€€€€€€€€‚ÿReads all graphs and paths from the VRML 2.0 file specified by the given SoInput. If there is only one graph in the file and its root is an SoVRMLGroup, a pointer to the root is returned. In all other cases, this creates an SoVRMLGroup, adds the root nodes to its children field, and returns a pointer to it. This returns NULL on error. This processes directory paths in the same way as the other reading routines.¾‚Ï,x ,< F€€T”A‚S~‚A€ƒã’n%9‰ã’n%9‰‚ÿstatic voidcreateRoute(SoNode *pFromNode,const char * fromEventOut,SoNode *pToNode,const char* toEventIn) [TGS special]?÷º ,· ,H ^€ï€”‘€‚H€€€€€€€€€ƒƒ‚ÿCreates a VRML 2.0 ROUTE-TO connection. The connection is made from the pFromNode's fromEventOut eventOut to the pToNodes's toEventIn eventIn. This is equivalent toROUTEpFromNode.fromEventOutTOpToNode.toEventInin a VRML 2.0 file.n9x ,% ,5 :€r€T”A‚S~‚A€㑶p6‰ƒ€‚ÿstatic SbBoolisValidHeader(const char *testString)Þ· ,3 ,0 .€½€”‘€‚A€€€‚ÿThis returns TRUE if the given character string is one of the valid Open Inventor file headers, (e.g. "#Inventor V2.0 binary"), or if the string has been registered as a valid header through the registerHeader method.ä % ,,D V€A€T”A‚S~‚A€㑶p6‰ƒãXíʉ㑶p6‰‚ÿstatic SbBoolregisterHeader(const SbString &headerString,SbBool isBinary,float ivVersion,SoDBHeaderCB *preCB,SoDBHeaderCB *postCB,void *userData)@ø3 ,cA,H ^€ñ€”‘€‚A€€€€€€€€€€€‚ÿRegisters the given string as a valid header for input files. The string must be 80 characters or less, and start with the comment character '#'. If the passed isBinary flag is true, any file with this header will be read as a binary file. Usually, a user-defined header represents a file format that is a superset of the Open Inventor file format. The ivVersion number indicates which Open Inventor file version,cA,²Ž+ this header corresponds to. The user-defined callback functions preCB and postCB are called before and after a file with this header is read. The userData is passed to both callback functions. The method returns TRUE if the header is successfully registered. Note, nothing prevents you from registering the same string multiple times. Â,pB,K d€…€T”A‚S~‚A€㑶p6‰ƒãXíʉ㑶p6‰ã‘¶p6‰‚ÿstatic SbBoolgetHeaderData(const SbString &headerString,SbBool &isBinary,float &ivVersion,SoDBHeaderCB *&preCB,SoDBHeaderCB *&postCB,void *&userData,SbBool substringOK = FALSE)b2cA,ÒD,0 .€e€”‘€‚A€€€‚ÿPasses back the data registered with the given header string, including the flag specifying whether the string is for a binary file, pointers to the callback functions invoked before and after reading the file, and a pointer to the user data passed to the callback functions. If the given header string does not match any of the registered headers, and the substringOK flag is TRUE, then the method will search for a registered header that is a substring of the given string. The method returns TRUE if a matching registered header, or subheader, was found.IpB,E,, (€:€T”A‚S~‚A€ƒ‚ÿstatic intgetNumHeaders()—nÒD,²E,) "€Ü€”‘€‚A€‚ÿReturns the number of valid headers, including standard Open Inventor headers, and user-registered headers.]+E,F,2 4€V€T”A‚S~‚A€ãXíʉƒ‚ÿstatic SbStringgetHeaderString(int i)D²E,SF,) "€6€”‘€‚A€‚ÿReturns the i'th header.‹LF,ÞF,? N€˜€T”A‚S~‚A€ãþ —‰ƒãúß~6‰ãB-9‰‚ÿstatic SoField *createGlobalField(const SbName &name,SoType type)õSF,ýH,* "€ë€”‘€‚A€‚ÿThe database maintains a namespace for global fields, making sure that there is at most one instance of a global field with any given name in the database. This routine is used to create new global fields. If there is no global field with the given name, it will create a new global field with the given name and type. If there is already a global field with the given name and type, it will return it. If there is already a global field with the given name but a different type, this returns NULL.¹‰ÞF,¶I,0 .€€”‘€‚A€€€‚ÿAll global fields must be derived from SoField; typically the result of this routine is cast into the appropriate type; for example:AýH,÷I,( €2€Ù€‚A€‚ÿSoSFInt32 *longField =]5¶I,TJ,( €j€Ù€‚A€‚ÿ (SoSFInt32 *) SoDB::createGlobalField("Frame",Q)÷I,¥J,( €R€Ù€‚A€‚ÿ SoSFInt32::getClassTypeId());+TJ,ÐJ,( €€Ù€‚A€‚ÿr:¥J,BK,8 @€t€T”A‚S~‚A€ãþ —‰ƒãúß~6‰‚ÿstatic SoField *getGlobalField(const SbName &name) ÑÐJ,OL,< F€£€”‘€‚A€€€€€€€‚ÿReturns the global field with the given name, or NULL if there is none. The type of the field may be checked using the SoField::isOfType(), SoField::getClassTypeId(), and SoField::getTypeId() methods.‹RBK,ÚL,9 B€¤€T”A‚S~‚A€ƒãúß~6‰ãúß~6‰‚ÿstatic voidrenameGlobalField(const SbName &oldName,const SbName &newName)&öOL,N,0 .€í€”‘€‚A€€€‚ÿRenames the global field named oldName. Renaming a global field to an empty name ("") deletes it. If there is already a global field with the new name, that field will be deleted (the getGlobalField method can be used to guard against this).l:ÚL,lN,2 4€t€T”A‚S~‚A€ƒã4a†6‰‚ÿstatic voidsetRealTimeInterval(const SbTime &deltaT)´N,Œƒ,` Ž€i €”‘€‚A€€€€€€€€€€€€€€€€€€€‚ÿThe database automatically creates one global field when SoDB::init() is called. The realTime global field, which is of type SoSFTime, can be connected to engines and nodes for real-time animation. The database will automatically update the realTime global field 12 times per second, using a timer slN,Œƒ,²Ž+ensor. Typically, there will be a node sensor on the root of the scene graph which schedules a redraw whenever the scene graph changes; by updating the realTime global field periodically, scene graphs that are connected to realTime (and are therefore animating) will be redrawn. The rate at which the database updates realTime can be controlled with this routine. Passing in a zero time will disable automatic update of realTime. If there are no enabled connections from the realTime field to any other field, the sensor is automatically disabled. .p Note that the SoSceneManager class automatically updates realTime immediately after redrawing, which will result in as high a frame rate as possible if the scene is continuously animating. The SoDB::setRealTimeInterval method ensures that engines that do not continuously animate (such as SoTimeCounter) will eventually be scheduled.b0lN,îƒ,2 4€`€T”A‚S~‚A€ã4a†6‰ƒ‚ÿstatic const SbTime &getRealTimeInterval()h9Œƒ,V„,/ .€r€”‘€‚A€€€‚ÿReturns how often the database is updating realTime.i7îƒ,¿„,2 4€n€T”A‚S~‚A€ƒã4a†6‰‚ÿstatic voidsetDelaySensorTimeout(const SbTime &t)øÎV„,·†,* "€€”‘€‚A€‚ÿThis sets the timeout value for sensors that are delay queue sensors (one-shot sensors, data sensors). Delay queue sensors are triggered whenever there is idle time. If a long period of time elapses without any idle time (as when there are continuous events to process), these sensors may not be triggered. Setting this timeout value ensures that if the specified length of time elapses without any idle time, the delay queue sensors will be processed anyway.d2¿„,‡,2 4€d€T”A‚S~‚A€ã4a†6‰ƒ‚ÿstatic const SbTime &getDelaySensorTimeout()Z1·†,u‡,) "€b€”‘€‚A€‚ÿReturns the current delay queue timeout value.£s‡,ˆ,0 0€æ€T”A‚S~‚A€ƒ‚ÿstatic intdoSelect(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct timeval *userTimeOut)ëµu‡,Š,6 :€k€”‘€‚A€€€€€‚ÿIn order to keep timer and idle sensors running as expected, it is necessary that an Open Inventor application not block while waiting for input. If the Open Inventor application uses the SoWin component library, this can be handled automatically. However, if the application is using its own event loop, this function is provided as a wrapper around select() that will handle Open Inventor tasks if necessary instead of blocking.1 ˆ,4Š,& €€‚A€‚ÿSEE ALSO%‰Š,Y‹,œ €”‘€‚Aã}9€‰€ã’n%9€‰€ãú­Np€‰€ãþ —€‰€ãþßC˜€‰€ãü9€‰€ãMy'9€‰€ãâ+•€‰€㤴u?€‰€ãH€‰‚ÿSoBase, SoNode, SoEngine, SoField, SoInput, SoFile, SoPath, SoOneShotSensor, SoDataSensor, SoWin= 4Š,–‹,1¡ZWLW¢–‹,Ê‹,2Ë,SoDataSensor4Y‹,Ê‹,% €€ˆˆ€‚ÿSoDataSensor*–‹,ô‹,# €€€‚ÿNAMEtNÊ‹,hŒ,& €œ€”‘€€‚ÿSoDataSensor - abstract base class for sensors attached to parts of a scene3ô‹,›Œ,# € €€‚ÿINHERITS FROMy8hŒ,,A R€p€”‘€ãrX.选€㜺餀‰€€€‚ÿSoSensor > SoDelayQueueSensor > SoDataSensor2 ›Œ,F,& €€€€ ‚ÿSYNOPSISuN,»,' €œ€”‘€€‚‚ÿ#include Methods from class SoDataSensor:DîF,ÿŽ,V z€Ý€T”A‚S~‚A€ƒ‚ã’n%9‰ƒ‚ãþ —‰ƒ‚ãMy'9‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDeleteCallback(SoSensorCB *function,void *data)SoNode *getTriggerNode() constSoField *getTriggerField() constSoPath *getTriggerPath() constvoidsetTriggerPathFlag(SbBool flag)SbBoolgetTriggerPathFlag() constZ+»,Y,/ .€V€”‘€‚A€㜺餉‚ÿMethods from class SoDelayQueueSensor:ë®ÿŽ,PÀ,= H€]€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ÿvoidsetPriority(uint32_t pri)uint32_tgetPriority()static uint32_tgetDefaultPriority()virtual voidsY,PÀ,Y‹,chedule()virtual voidunschedule()virtual SbBoolisScheduled()P!Y, À,/ .€B€”‘€‚A€ãrX.鉂ÿMethods from class SoSensor:½ŠPÀ,]Á,3 4€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetFunction(SoSensorCB *callbackFunction)SoSensorCB *getFunction() constvoidsetData(void *callbackData)void *getData() const4 À,‘Á,& €€‚A€‚ÿDESCRIPTION¶Œ]Á,GÂ,* "€€”‘€‚A€‚ÿData sensors detect changes to scene graph objects (paths, nodes, or fields) and trigger their callback function when the object changes. ß‘Á,PÃ,* "€¿€”‘€‚A€‚ÿData sensors provide a delete callback that is called just before the object the data sensor is attached to is deleted; note that the callback should not attempt to modify the object in any way, or core dumps may result.Û±GÂ,+Ä,* "€c€”‘€‚A€‚ÿPriority zero data sensors also provide methods that can be called in the callback function to determine exactly which node, field, or path caused the sensor to be triggered.0 PÃ,[Ä,& €€‚A€‚ÿMETHODSh;+Ä,ÃÄ,- *€v€T”A‚S~‚A€ƒ‚ÿvoidsetDeleteCallback(SoSensorCB *function,void *data)X[Ä,DÅ,) "€°€”‘€‚A€‚ÿSets a callback that will be called when the object the sensor is sensing is deleted.‚HÃÄ,ÆÅ,: D€€T”A‚S~‚Aã’n%9€‰ƒ‚ãþ —‰ƒ‚ÿSoNode *getTriggerNode() constSoField *getTriggerField() constïDÅ,åÇ,0 .€ß€”‘€‚A€€€‚ÿIf this is a priority 0 data sensor, returns the node/field that was modified that caused this sensor to trigger. Returns NULL if the sensor was not triggered because a node/field changed (for example, if schedule() is called on the sensor) or if this sensor is not a priority 0 sensor. Note that because one change to the scene graph may cause multiple nodes or fields to be modified (because of field-to-field connections), the node or field returned may not be the only one that changed.±oÆÅ,–È,B T€Þ€T”A‚S~‚AãMy'9€‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSoPath *getTriggerPath() constvoidsetTriggerPathFlag(SbBool flag)SbBoolgetTriggerPathFlag() constÊšåÇ,`Ê,0 .€5€”‘€‚A€€€‚ÿIf this is a priority 0 data sensor, returns a path to the node that caused this sensor to trigger. Because recreating the path to the node that changed is relatively expensive, setTriggerPathFlag(TRUE) must be called before the sensor is scheduled. If it is not called, or if the sensor wasn't triggered because a node changed, this returns NULL. NULL is also returned if this is not a priority 0 sensor.1 –È,‘Ê,& €€‚A€‚ÿSEE ALSO¡N`Ê,2Ë,S v€œ€”‘€‚AãTlˆW€‰€ã'€‰€ãè"&€‰€㜺餀‰‚ÿSoNodeSensor, SoPathSensor, SoFieldSensor, SoDelayQueueSensor= ‘Ê,oË,1 LWZ£oË,£Ë,b-SoDebugError42Ë,£Ë,% €€ˆˆ€‚ÿSoDebugError*oË,ÍË,# €€€‚ÿNAMEL&£Ë,Ì,& €L€”‘€€‚ÿSoDebugError - debug error handling3ÍË,LÌ,# € €€‚ÿINHERITS FROMSÌ,ŸÌ,5 :€<€”‘€ãôx—€‰€€€‚ÿSoError > SoDebugError2 LÌ,ÑÌ,& €€€€ ‚ÿSYNOPSISR,ŸÌ,#Í,& €X€”‘€€‚ÿ#include ÓŠÑÌ,öÍ,I `€€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum Severity{SoDebugError::ERRORErrorSoDebugError::WARNINGJust a warningSoDebugError::INFONo error, just information}L##Í,BÎ,) "€F€”‘€‚A€‚ÿMethods from class SoDebugError: ÏöÍ,LÏ,; D€Ÿ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ƒ‚ÿstatic voidsetHandlerCallback(SoErrorCB *cb, void *data)static SoErrorCB *getHandlerCallback()static void *getHandlerData()static SoTypegetClassTypeId()SoDebugError::SeveritygetSeverity() constO BÎ,›Ï,/ .€@€”‘€‚A€ãôx—‰‚ÿMethods from class SoError:¾vLÏ,e-H `€ì€T”A‚S~‚A€ãXíʉƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿconst SbString &getDebugS›Ï,e-2Ë,tring() constvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4›Ï,™-& €€‚A€‚ÿDESCRIPTIONLe--3 4€™€”‘€‚A€€€€‚ÿSoDebugError is used for all errors reported from the debugging version of the Open Inventor library. These errors are typically programmer errors, such as passing a NULL pointer or an out-of-range index. The post() method takes the name of the Open Inventor method that detected the error, to aid the programmer in debugging.0 ™-H-& €€‚A€‚ÿMETHODSµƒ-ý-2 2€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿstatic voidsetHandlerCallback(SoErrorCB *cb,void *data)static SoErrorCB *getHandlerCallback()static void *getHandlerData()i:H-f-/ .€t€”‘€‚A€€€‚ÿSets/returns handler callback for SoDebugError class.U#ý-»-2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()c4f--/ .€h€”‘€‚A€€€‚ÿReturns type identifier for SoDebugError class.Y-»-w-, (€Z€T”A‚S~‚A€ƒ‚ÿSoDebugError::SeveritygetSeverity() const\3-Ó-) "€f€”‘€‚A€‚ÿReturns severity of error (for use by handlers).1 w--& €€‚A€‚ÿSEE ALSO^#Ó-b-; F€F€”‘€‚Aã£ì,€‰€ãʉ þ€‰‚ÿSoMemoryError, SoReadError< -ž-1\ ˆY²€Z¤ž-Ñ-vB-SoDecimator3b-Ñ-% €€ˆˆ€‚ÿSoDecimator*ž-û-# €€€‚ÿNAMEYÑ-z-& €²€”‘€€‚ÿSoDecimator - encapsulates an algorithm for simplifying shapes through mesh decimation3û-­-# € €€‚ÿINHERITS FROMW"z--5 :€D€”‘€ãê–Ìv€‰€€€‚ÿSoSimplifier > SoDecimator2 ­-6-& €€€€ ‚ÿSYNOPSISR-µ-- *€¤€”‘€€‚ãê–Ìv‰‚ÿ#include Methods from class SoSimplifier:Ÿ6-· -c ”€?€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰‚ƒ‚ƒ‚ã’n%9‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSoSimplifier()~SoSimplifier()virtual void beginShape(ShapeType)virtual void endShape()virtual void setVertex(const SbVec3f&)void setNormal(const SbVec3f&)void setData(int numData, const float*)void setColor(const unsigned long&)virtual SoNode* simplify(float ) = 0virtual void clear()virtual int getNumTriangles()virtual void setVerbosity(SbBool v) SbBool getVerbosity() const 4µ-ë -& €€‚A€‚ÿDESCRIPTIONuL· -` -) "€˜€”‘€‚A€‚ÿThis class implements a mesh decimation algorithm for simplifying shapes.€Wë -à -) "€®€”‘€‚A€‚ÿNot all geometry nodes can be decimated. The following geometry nodes are decimated:ú ` -Ú -Z ‚€A€”‘€‚A€€€€€€€€€€€€€€€‚ÿ- SoFaceSet- SoIndexedFaceSet- SoIndexedNurbsSurface- SoIndexedTriangleStripSet- SoNurbsSurface- SoTriangleStripSet- SoVRMLIndexedFaceSet_3à -9 -, (€f€”‘€‚A€€‚ÿThe following geometry nodes are not decimated:ê Ú -#-ß Œ€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿ- SoAnnoText3- SoAsciiText- SoCone- SoCube- SoCylinder- SoIndexedLineSet- SoIndexedNurbsCurve- SoLineSet- SoNurbsCurve- SoPointSet- SoQuadMesh- SoSphere- SoText2- SoText3- SoVRMLBox- SoVRMLCone- SoVRMLElevationGrid- SoVRMLExtrusion- SoVRMLIndexedLineSet- SoVRMLPointSet- SoVRMLSphere- SoVRMLText- Any geometry under an SoLOD- Any geometry under an SoLevelOfDetail- Any geometry under an SoLevelOfSimplification- Any geometry under an SoVRMLLODŸc9 -Î@-< F€Ç€”‘€‚A€€€€€€€‚ÿThe decimator does not decimate nodes such as SoCone, that adjust their complexity automatically (based on SoComplexity and/or the viewer-requested decimati#-Î@-b-on level). The decimator also does not decimate nodes such as SoVRMLElevationGrid where decimation would not preserve the type of geometry. Decimated geometry is always an indexed face set. 0 #-þ@-& €€‚A€‚ÿMETHODSO!Î@-MA-. ,€B€T”A‚S~‚A€ƒ‚ƒ‚ÿSoDecimator()~SoDecimator()Gþ@-”A-) "€<€”‘€‚A€‚ÿConstructor and destructor.1 MA-ÅA-& €€‚A€‚ÿSEE ALSO±^”A-vB-S v€¼€”‘€‚Aãê–Ìv€‰€ãŸyU€‰€ã` AÓ€‰€ãFÙ €‰‚ÿSoSimplifier, SoSimplifyAction, SoShapeSimplifyAction, SoGlobalSimplifyActionBÅA-¸B-1ZI[¥¸B-ñB-†-SoDecomposeMatrix9vB-ñB-% €(€ˆˆ€‚ÿSoDecomposeMatrix*¸B-C-# €€€‚ÿNAMEjñB-«C-& €Ô€”‘€€‚ÿSoDecomposeMatrix - decomposes transformation matrices into values for translation, rotation, and scale3C-ÞC-# € €€‚ÿINHERITS FROM•H«C-sD-M j€€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoDecomposeMatrix2 ÞC-¥D-& €€€€ ‚ÿSYNOPSISvOsD-E-' €ž€”‘€€‚‚ÿ#include Inputs from class SoDecomposeMatrix:c)¥D-~E-: D€R€T”A‚S~‚Aã÷3 ƒ‚ãòi`‰ƒ‚ÿSoMFMatrixmatrixSoMFVec3fcenterQ(E-ÏE-) "€P€”‘€‚A€‚ÿOutputs from class SoDecomposeMatrix:¼r~E-‹F-J d€ä€T”A‚S~‚A€ãòi`‰ƒ‚ãÏ[ щƒ‚ãòi`‰ƒ‚ãÏ[ щƒ‚ÿ(SoMFVec3f)translation(SoMFRotation)rotation(SoMFVec3f)scaleFactor(SoMFRotation)scaleOrientationQ(ÏE-ÜF-) "€P€”‘€‚A€‚ÿMethods from class SoDecomposeMatrix:C‹F-G-, (€.€T”A‚S~‚A€ƒ‚ÿSoDecomposeMatrix()P!ÜF-oG-/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}G-oI-ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)oG-ÇI-/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØoI-,L- 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÇI-´L-@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N,L-M-/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ´L-9N-Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4M-mN-& €€‚A€‚ÿDESCRIPTIONá·9N-NO-* "€o€”‘€‚A€‚ÿThis engine takes as input a transformation matrix and a center of transformation. As output the engine produces the translation, rotation and scale values derived from the matrix.ômN-x€-* "€é€”‘€‚A€‚ÿThe input fields can have multiple values, allowing the engine to decompose several matrices in parallel. One of the inputs may have moNO-x€-vB-re values than the other. In that case, the last value of the shorter input will be repeated as necessary./ NO-§€-& €€‚A€‚ÿINPUTSHx€-ï€-2 4€,€T”A‚S~‚Aã÷3 ƒ‚ÿSoMFMatrixmatrixJ!§€-9-) "€B€”‘€‚A€‚ÿThe 4x4 transformation matrix.Gï€-€-2 4€*€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fcenterJ!9-Ê-) "€B€”‘€‚A€‚ÿThe center of transformations.0 €-ú-& €€‚A€‚ÿOUTPUTSNÊ-H‚-2 4€8€T”A‚S~‚A€ãòi`‰ƒ‚ÿ(SoMFVec3f)translationO&ú-—‚-) "€L€”‘€‚A€‚ÿDerived translation in x, y, and z.NH‚-å‚-2 4€8€T”A‚S~‚A€ãÏ[ щƒ‚ÿ(SoMFRotation)rotation=—‚-"ƒ-) "€(€”‘€‚A€‚ÿDerived rotation.Nå‚-pƒ-2 4€8€T”A‚S~‚A€ãòi`‰ƒ‚ÿ(SoMFVec3f)scaleFactorP'"ƒ-Àƒ-) "€N€”‘€‚A€‚ÿDerived scale values in x, y, and z.V$pƒ-„-2 4€H€T”A‚S~‚A€ãÏ[ щƒ‚ÿ(SoMFRotation)scaleOrientationQ(Àƒ-g„-) "€P€”‘€‚A€‚ÿDerived rotational space for scaling.0 „-—„-& €€‚A€‚ÿMETHODSCg„-Ú„-, (€.€T”A‚S~‚A€ƒ‚ÿSoDecomposeMatrix()7—„-…-) "€€”‘€‚A€‚ÿConstructor<Ú„-M…-& €,€‚A€‚ÿFILE FORMAT/DEFAULT>…-‹…-* $€(€P„7|‚€‚ÿDecomposeMatrix {q<M…-ü…-5 :€x€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿmatrix1 0 0 00 1 0 00 0 1 00 0 0 1center0 0 0}1 ‹…--†-& €€‚€‚ÿSEE ALSOc(ü…-†-; F€P€”‘€‚ãÓßÒz€‰€ãë\¼N€‰‚ÿSoComposeMatrix, SoEngineOutputD-†-Ô†-1j²€ZXƒ[¦Ô†-‡-OÇ-SoDecomposeRotation;†-‡-% €,€ˆˆ€‚ÿSoDecomposeRotation*Ô†-9‡-# €€€‚ÿNAMEY3‡-’‡-& €f€”‘€€‚ÿSoDecomposeRotation - decomposes rotation values39‡-Ň-# € €€‚ÿINHERITS FROM—J’‡-\ˆ-M j€”€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoDecomposeRotation2 Ň-Žˆ-& €€€€ ‚ÿSYNOPSISxQ\ˆ-‰-' €¢€”‘€€‚‚ÿ#include Inputs from class SoDecomposeRotation:LŽˆ-R‰-2 4€4€T”A‚S~‚AãÏ[ Ñ€‰ƒ‚ÿSoMFRotationrotationS*‰-¥‰-) "€T€”‘€‚A€‚ÿOutputs from class SoDecomposeRotation:c)R‰-Š-: D€R€T”A‚S~‚A€ãòi`‰ƒ‚ã'0]‰ƒ‚ÿ(SoMFVec3f)axis(SoMFFloat)angleS*¥‰-[Š-) "€T€”‘€‚A€‚ÿMethods from class SoDecomposeRotation:EŠ- Š-, (€2€T”A‚S~‚A€ƒ‚ÿSoDecomposeRotation()P![Š-ðŠ-/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:} Š-ðŒ-ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)ðŠ-H-/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØðŒ-­- 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHH-AÀ-@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyE­-AÀ-†-nabled() constSbBoolenableNotify(SbBool flag)N­-À-/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞAÀ-ÆÁ-Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4À-úÁ-& €€‚A€‚ÿDESCRIPTIONšqÆÁ-”Â-) "€â€”‘€‚A€‚ÿThis engine takes as input a rotation, and decomposes it into an axis value and a rotation angle (in radians).fúÁ-#Ã-) "€Ì€”‘€‚A€‚ÿThe input can have multiple values, allowing the engine to decompose several rotations in parallel./ ”Â-RÃ-& €€‚A€‚ÿINPUTSL#Ã-žÃ-2 4€4€T”A‚S~‚AãÏ[ Ñ€‰ƒ‚ÿSoMFRotationrotationFRÃ-äÃ-) "€:€”‘€‚A€‚ÿRotation to be decomposed.0 žÃ-Ä-& €€‚A€‚ÿOUTPUTSGäÃ-[Ä-2 4€*€T”A‚S~‚A€ãòi`‰ƒ‚ÿ(SoMFVec3f)axisT+Ä-¯Ä-) "€V€”‘€‚A€‚ÿAxis of rotation derived from the input.H[Ä-÷Ä-2 4€,€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)angleV-¯Ä-MÅ-) "€Z€”‘€‚A€‚ÿAngle (in radians) derived from the input.0 ÷Ä-}Å-& €€‚A€‚ÿMETHODSEMÅ-ÂÅ-, (€2€T”A‚S~‚A€ƒ‚ÿSoDecomposeRotation()7}Å-ùÅ-) "€€”‘€‚A€‚ÿConstructor<ÂÅ-5Æ-& €,€‚A€‚ÿFILE FORMAT/DEFAULT@ùÅ-uÆ-* $€,€P„7|‚€‚ÿDecomposeRotation {D5Æ-¹Æ-- *€.€P„|‚€ƒ‚‚‚ÿrotation0 0 1 0}1 uÆ-êÆ-& €€‚€‚ÿSEE ALSOe*¹Æ-OÇ-; F€T€”‘€‚ãtÌß$€‰€ãë\¼N€‰‚ÿSoComposeRotation, SoEngineOutputAêÆ-Ç-1HI[]\§Ç-ÈÇ-½.SoDecomposeVec2f8OÇ-ÈÇ-% €&€ˆˆ€‚ÿSoDecomposeVec2f*Ç-òÇ-# €€€‚ÿNAMElFÈÇ-^È-& €Œ€”‘€€‚ÿSoDecomposeVec2f - decomposes 2D vectors into floating-point values3òÇ-‘È-# € €€‚ÿINHERITS FROM”G^È-%É-M j€Ž€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoDecomposeVec2f2 ‘È-WÉ-& €€€€ ‚ÿSYNOPSISuN%É-ÌÉ-' €œ€”‘€€‚‚ÿ#include Inputs from class SoDecomposeVec2f:GWÉ-Ê-2 4€*€T”A‚S~‚Aãóñi`€‰ƒ‚ÿSoMFVec2fvectorP'ÌÉ-cÊ-) "€N€”‘€‚A€‚ÿOutputs from class SoDecomposeVec2f:\"Ê-¿Ê-: D€D€T”A‚S~‚A€ã'0]‰ƒ‚ã'0]‰ƒ‚ÿ(SoMFFloat)x(SoMFFloat)yP'cÊ-Ë-) "€N€”‘€‚A€‚ÿMethods from class SoDecomposeVec2f:B¿Ê-QË-, (€,€T”A‚S~‚A€ƒ‚ÿSoDecomposeVec2f()P!Ë-¡Ë-/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}QË-¡Í-ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)¡Ë-ùÍ-/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ¡Í-j. 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbNameùÍ-j.OÇ- &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHùÍ-ò.@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nj.@./ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þò.w.Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4@.«.& €€‚A€‚ÿDESCRIPTIONŒcw.7.) "€Æ€”‘€‚A€‚ÿThis engine takes as input a 2D vector, and decomposes it into two single floating-point values.d«.Ä.) "€È€”‘€‚A€‚ÿThe input can have multiple values, allowing the engine to decompose several vectors in parallel./ 7.ó.& €€‚A€‚ÿINPUTSGÄ.:.2 4€*€T”A‚S~‚Aãóñi`€‰ƒ‚ÿSoMFVec2fvectorDó.~.) "€6€”‘€‚A€‚ÿVector to be decomposed.0 :.®.& €€‚A€‚ÿOUTPUTSD~.ò.2 4€$€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)xJ!®.<.) "€B€”‘€‚A€‚ÿFirst component of the vector.Dò.€.2 4€$€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)yK"<.Ë.) "€D€”‘€‚A€‚ÿSecond component of the vector.0 €.û.& €€‚A€‚ÿMETHODSBË.=., (€,€T”A‚S~‚A€ƒ‚ÿSoDecomposeVec2f()7û.t.) "€€”‘€‚A€‚ÿConstructor<=.°.& €,€‚A€‚ÿFILE FORMAT/DEFAULT=t.í.* $€&€P„7|‚€‚ÿDecomposeVec2f {=°.*.- *€ €P„|‚€ƒ‚‚‚ÿvector0 0}1 í.[.& €€‚€‚ÿSEE ALSOb'*.½.; F€N€”‘€‚ãÚ8£€‰€ãë\¼N€‰‚ÿSoComposeVec2f, SoEngineOutputA[.þ.1xXƒ[”ƒ\¨þ.6.ÕH.SoDecomposeVec3f8½.6.% €&€ˆˆ€‚ÿSoDecomposeVec3f*þ.`.# €€€‚ÿNAMElF6.Ì.& €Œ€”‘€€‚ÿSoDecomposeVec3f - decomposes 3D vectors into floating-point values3`.ÿ.# € €€‚ÿINHERITS FROM”GÌ.“ .M j€Ž€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoDecomposeVec3f2 ÿ.Å .& €€€€ ‚ÿSYNOPSISuN“ .: .' €œ€”‘€€‚‚ÿ#include Inputs from class SoDecomposeVec3f:GÅ . .2 4€*€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fvectorP': .Ñ .) "€N€”‘€‚A€‚ÿOutputs from class SoDecomposeVec3f:t2 .E .B T€d€T”A‚S~‚A€ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ÿ(SoMFFloat)x(SoMFFloat)y(SoMFFloat)zP'Ñ .• .) "€N€”‘€‚A€‚ÿMethods from class SoDecomposeVec3f:BE .× ., (€,€T”A‚S~‚A€ƒ‚ÿSoDecomposeVec3f()P!• .' ./ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}× .'.ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)' ../ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ'.ð@. 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)v.ð@.½.oidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH.xA.@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nð@.ÆA./ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞxA.ýB.Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ÆA.1C.& €€‚A€‚ÿDESCRIPTIONŽeýB.¿C.) "€Ê€”‘€‚A€‚ÿThis engine takes as input a 3D vector, and decomposes it into three single floating-point values.d1C.LD.) "€È€”‘€‚A€‚ÿThe input can have multiple values, allowing the engine to decompose several vectors in parallel./ ¿C.{D.& €€‚A€‚ÿINPUTSGLD.ÂD.2 4€*€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fvectorD{D.E.) "€6€”‘€‚A€‚ÿVector to be decomposed.0 ÂD.6E.& €€‚A€‚ÿOUTPUTSDE.zE.2 4€$€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)xJ!6E.ÄE.) "€B€”‘€‚A€‚ÿFirst component of the vector.DzE.F.2 4€$€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)yK"ÄE.SF.) "€D€”‘€‚A€‚ÿSecond component of the vector.DF.—F.2 4€$€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)zJ!SF.áF.) "€B€”‘€‚A€‚ÿThird component of the vector.0 —F.G.& €€‚A€‚ÿMETHODSBáF.SG., (€,€T”A‚S~‚A€ƒ‚ÿSoDecomposeVec3f()7G.ŠG.) "€€”‘€‚A€‚ÿConstructor<SG.ÆG.& €,€‚A€‚ÿFILE FORMAT/DEFAULT=ŠG.H.* $€&€P„7|‚€‚ÿDecomposeVec3f {?ÆG.BH.- *€$€P„|‚€ƒ‚‚‚ÿvector0 0 0}1 H.sH.& €€‚€‚ÿSEE ALSOb'BH.ÕH.; F€N€”‘€‚ã9£€‰€ãë\¼N€‰‚ÿSoComposeVec3f, SoEngineOutputAsH.I.1x]\É]©I.NI.•Š.SoDecomposeVec4f8ÕH.NI.% €&€ˆˆ€‚ÿSoDecomposeVec4f*I.xI.# €€€‚ÿNAMElFNI.äI.& €Œ€”‘€€‚ÿSoDecomposeVec4f - decomposes 4D vectors into floating-point values3xI.J.# € €€‚ÿINHERITS FROM”GäI.«J.M j€Ž€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoDecomposeVec4f2 J.ÝJ.& €€€€ ‚ÿSYNOPSISuN«J.RK.' €œ€”‘€€‚‚ÿ#include Inputs from class SoDecomposeVec4f:GÝJ.™K.2 4€*€T”A‚S~‚AãIòi`€‰ƒ‚ÿSoMFVec4fvectorP'RK.éK.) "€N€”‘€‚A€‚ÿOutputs from class SoDecomposeVec4f:ŒB™K.uL.J d€„€T”A‚S~‚A€ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ÿ(SoMFFloat)x(SoMFFloat)y(SoMFFloat)z(SoMFFloat)wP'éK.ÅL.) "€N€”‘€‚A€‚ÿMethods from class SoDecomposeVec4f:BuL.M., (€,€T”A‚S~‚A€ƒ‚ÿSoDecomposeVec4f()P!ÅL.WM./ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}M.WO.ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)WM.¯O./ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØWO. ‚. 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚¯O. ‚.ÕH.㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¯O.¨‚.@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N ‚.ö‚./ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¨‚.-„.Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ö‚.a„.& €€‚A€‚ÿDESCRIPTIONd-„.î„.) "€È€”‘€‚A€‚ÿThis engine takes as input a 4D vector, and decomposes it into four single floating-point values.da„.{….) "€È€”‘€‚A€‚ÿThe input can have multiple values, allowing the engine to decompose several vectors in parallel./ î„.ª….& €€‚A€‚ÿINPUTSG{….ñ….2 4€*€T”A‚S~‚AãIòi`€‰ƒ‚ÿSoMFVec4fvectorDª….5†.) "€6€”‘€‚A€‚ÿVector to be decomposed.0 ñ….e†.& €€‚A€‚ÿOUTPUTSD5†.©†.2 4€$€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)xJ!e†.ó†.) "€B€”‘€‚A€‚ÿFirst component of the vector.D©†.7‡.2 4€$€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)yK"ó†.‚‡.) "€D€”‘€‚A€‚ÿSecond component of the vector.D7‡.Ƈ.2 4€$€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)zJ!‚‡.ˆ.) "€B€”‘€‚A€‚ÿThird component of the vector.DƇ.Tˆ.2 4€$€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)wK"ˆ.Ÿˆ.) "€D€”‘€‚A€‚ÿFourth component of the vector.0 Tˆ.ψ.& €€‚A€‚ÿMETHODSBŸˆ.‰., (€,€T”A‚S~‚A€ƒ‚ÿSoDecomposeVec4f()7ψ.H‰.) "€€”‘€‚A€‚ÿConstructor<‰.„‰.& €,€‚A€‚ÿFILE FORMAT/DEFAULT=H‰.Á‰.* $€&€P„7|‚€‚ÿDecomposeVec4f {A„‰.Š.- *€(€P„|‚€ƒ‚‚‚ÿvector0 0 0 0}1 Á‰.3Š.& €€‚€‚ÿSEE ALSOb'Š.•Š.; F€N€”‘€‚ã09£€‰€ãë\¼N€‰‚ÿSoComposeVec4f, SoEngineOutputC3Š.ØŠ.1”ƒ\Š]ªØŠ.‹.íÍ.SoDelayQueueSensor:•Š.‹.% €*€ˆˆ€‚ÿSoDelayQueueSensor*ØŠ.<‹.# €€€‚ÿNAMEsM‹.¯‹.& €š€”‘€€‚ÿSoDelayQueueSensor - abstract base class for sensors not dependent on time3<‹.â‹.# € €€‚ÿINHERITS FROMZ%¯‹.<Œ.5 :€J€”‘€ãrX.选€€€‚ÿSoSensor > SoDelayQueueSensor2 â‹.nŒ.& €€€€ ‚ÿSYNOPSISZ<Œ.ïŒ.' €´€”‘€€‚‚ÿ#include Methods from class SoDelayQueueSensor:ë®nŒ.Ú.= H€]€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ÿvoidsetPriority(uint32_t pri)uint32_tgetPriority()static uint32_tgetDefaultPriority()virtual voidschedule()virtual voidunschedule()virtual SbBoolisScheduled()P!ïŒ.*Ž./ .€B€”‘€‚A€ãrX.鉂ÿMethods from class SoSensor:½ŠÚ.çŽ.3 4€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetFunction(SoSensorCB *callbackFunction)SoSensorCB *getFunction() constvoidsetData(void *callbackData)void *getData() const4*Ž..& €€‚A€‚ÿDESCRIPTIONëçŽ.BÀ.0 .€×€”‘€‚A€€€‚ÿDelay queue sensors are separate from timer queue sensors (see SoTimerQueueSensor) and provide methods for setting the relative priorities of the sensors in the delay queue (sens.BÀ.•Š.ors with higher priorities will be triggered first).‘U.ÓÂ.< F€«€”‘€‚A€€€€€€€‚ÿSensors with non-zero priorities are added to the delay queue when scheduled, and are all processed once, in order, when the delay queue is processed, which normally happens as part of your program's main loop (see SoWin::mainLoop() or SoDB::doSelect()). Typically, the delay queue is processed whenever there are no events waiting to be distributed and there are no timer queue sensors waiting to be triggered. The delay queue also has a timeout to ensure that delay queue sensors are triggered even if there are always events or timer sensors waiting; see SoDB::setDelaySensorTimeout().ݳBÀ.°Å.* "€g€”‘€‚A€‚ÿSensors with priority 0 are treated specially. Priority 0 sensors are triggered almost immediately after they are scheduled, before the program returns to the main loop. Priority 0 sensors are not necessarily triggered immediately when they are scheduled, however; if they are scheduled as part of the evaluation of a field connection network they may not be triggered until the evaluation of the network is complete. Also, if a priority 0 sensor is scheduled within the callback method of another priority 0 sensor, it will not be triggered until the callback method is complete (also note that if more than one priority 0 sensor is scheduled, the order in which they fire is undefined).0 ÓÂ.àÅ.& €€‚A€‚ÿMETHODSf8°Å.FÆ.. ,€p€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetPriority(uint32_t pri)uint32_tgetPriority()ùÏàÅ.?Ç.* "€Ÿ€”‘€‚A€‚ÿSets/gets the priority of the sensor. Priorities can be changed at any time; if the priority is changed to zero and it is already scheduled, the sensor is immediately triggered and removed from the queue.S'FÆ.’Ç., (€N€T”A‚S~‚A€ƒ‚ÿstatic uint32_tgetDefaultPriority()jA?Ç.üÇ.) "€‚€”‘€‚A€‚ÿReturns the default delay queue sensor priority, which is 100.F’Ç.BÈ., (€4€T”A‚S~‚A€ƒ‚ÿvirtual voidschedule()îÄüÇ.0É.* "€‰€”‘€‚A€‚ÿIf this sensor's priority is non-zero, adds this sensor to the list of delay queue sensors ready to be triggered. This is a way of making a sensor fire without changing the thing it is sensing.ŠZBÈ.ºÊ.0 .€µ€”‘€‚A€€€‚ÿCalling schedule() within the callback function causes the sensor to be called repeatedly. Because sensors are processed only once every time the delay queue is processed (even if they reschedule themselves), timers and events will still be processed. This should not be done with a priority zero sensor because an infinite loop will result.H0É.Ë., (€8€T”A‚S~‚A€ƒ‚ÿvirtual voidunschedule()ŠaºÊ.ŒË.) "€Â€”‘€‚A€‚ÿIf this sensor is scheduled, removes it from the delay queue so that it will not be triggered.S!Ë.ßË.2 4€B€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolisScheduled()Þ´ŒË.½Ì.* "€i€”‘€‚A€‚ÿReturns TRUE if this sensor has been scheduled and is waiting in the delay queue to be triggered. Sensors are removed from the queue before their callback function is triggered.1 ßË.îÌ.& €€‚A€‚ÿSEE ALSOÿ‡½Ì.íÍ.x ¾€€”‘€‚Aã*ðz\€‰€㤴u?€‰€ãè"&€‰€ãʇõÀ€‰€ãâ+•€‰€ãTlˆW€‰€ã'€‰‚ÿSoTimerQueueSensor, SoDataSensor, SoFieldSensor, SoIdleSensor, SoOneShotSensor, SoNodeSensor, SoPathSensor9îÌ.&Î.1^ É]]^«&Î.VÎ.z/SoDetail0 íÍ.VÎ.% €€ˆˆ€‚ÿSoDetail*&Î.€Î.# €€€‚ÿNAMEsMVÎ.óÎ.& €š€”‘€€‚ÿSoDetail - base class for describing detail information about a shape node3€Î.&Ï.# € €€‚ÿINHERITS FROM5 óÎ.[Ï.) "€€”‘€€€‚ÿSoDetail2 &Ï.Ï.& €€€€ ‚ÿSYNOPSISmF[Ï. /' €Œ€”‘€€‚‚ÿ#include Methods from class SoDetail:Ï. /íÍ.؇Ï.ä/Q p€€T”A‚S~‚AãåŒÅe€‰ƒ‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿSoDetail *copy() conststatic SoTypegetClassTypeId()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4 //& €€‚A€‚ÿDESCRIPTIONòä/7/- (€å€”‘€‚A€€‚ÿSoDetail is the abstract base class for all detail classes. A detail contains shape-specific information about a particular shape during picking and primitive generation. Subclasses store information based on the particular type of shape.0 /g/& €€‚A€‚ÿMETHODSN7/µ/2 4€8€T”A‚S~‚AãåŒÅe€‰ƒ‚ÿSoDetail *copy() const®„g/c/* "€ €”‘€‚A€‚ÿReturns an instance that is a copy of this instance. The caller is responsible for deleting the copy when it is no longer needed.U#µ/¸/2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*c/ /) "€T€”‘€‚A€‚ÿReturns type identifier for this class.W%¸/b/2 4€J€T”A‚S~‚A€ãB-9‰ƒ‚ÿvirtual SoTypegetTypeId() const`7 /Â/) "€n€”‘€‚A€‚ÿReturns the type identifier for a specific instance.a)b/#/8 @€R€T”A‚S~‚A㑶p6€‰ƒãB-9‰‚ÿSbBoolisOfType(SoType type) const«|Â/Î// .€ø€”‘€‚A€€€‚ÿReturns TRUE if this object is of the type specified in type or is derived from that type. Otherwise, it returns FALSE.1 #/ÿ/& €€‚A€‚ÿSEE ALSO{ÓÎ/z/¨ §€”‘€‚Aãì‡!€‰€ãŽ2Ü瀉€ã!d©€‰€ãÿ®Ze€‰€ã~«M§€‰€ãIöHŽ€‰€ã•£&ô€‰€ã¼B‘S€‰€ãqÒÍ@€‰€ãkNÞ€‰€㢽?·€‰‚ÿSoConeDetail, SoCubeDetail, SoCylinderDetail, SoDetailList, SoFaceDetail, SoLineDetail, SoNodeKitDetail, SoPickedPoint, SoPointDetail, SoPrimitiveVertex, SoTextDetail= ÿ/·/1Š]Þ‚^¬·/ë/¾E/SoDetailList4z/ë/% €€ˆˆ€‚ÿSoDetailList*·//# €€€‚ÿNAME`:ë/u/& €t€”‘€€‚ÿSoDetailList - maintains a list of instances of details3/¨/# € €€‚ÿINHERITS FROMSu/û/5 :€<€”‘€ãK2Å'€‰€€€‚ÿSbPList > SoDetailList2 ¨/- /& €€€€ ‚ÿSYNOPSIShAû/• /' €‚€”‘€€‚‚ÿ#include Methods from class SoDetailList:ßl- /t /s ´€Ù€T”A‚S~‚A€ƒ‚ƒ‚ƒãÿ®Ze‰‚ƒ‚ƒãåŒÅe‰‚ƒãåŒÅe‰‚ƒ‚ƒãÿ®Ze‰‚ãÿ®Ze‰ƒãÿ®Ze‰‚ãåŒÅe‰ƒ‚ƒãåŒÅe‰‚ÿSoDetailList()SoDetailList(int size)SoDetailList(const SoDetailList &l)~SoDetailList()voidappend(SoDetail *detail)voidinsert(SoDetail *detail,int addBefore)voidtruncate(int start)voidcopy(const SoDetailList &l)SoDetailList &operator =(const SoDetailList &l)SoDetail *operator [](int i) constvoidset(int i,SoDetail *detail)O • /à // .€@€”‘€‚A€ãK2Å'‰‚ÿMethods from class SbPList:æ¥t /© /A P€K€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒãK2Å'‰‚ƒãK2Å'‰‚ÿintfind(const void *ptr) constvoidremove(int which)intgetLength() constintoperator ==(const SbPList &pl) constintoperator !=(const SbPList &pl) const4à /Ý /& €€‚A€‚ÿDESCRIPTIONZ© /l /5 :€´€”‘€‚A€€€€€‚ÿThis subclass of SbPList holds lists of instances of classes derived from SoDetail.0 Ý /œ /& €€‚A€‚ÿMETHODS>l /Ú /, (€$€T”A‚S~‚A€ƒ‚ÿSoDetailList()8œ //) "€€”‘€‚A€‚ÿConstructor.FÚ /X/, (€4€T”A‚S~‚A€ƒ‚ÿSoDetailList(int size)m>/Å// .€|€”‘€‚A€€€‚ÿConstructor that pre-allocates storage for size pointers.[)X/ /2 4€R€T”A‚S~‚A€ƒãÿ®Ze‰‚ÿSoDetailList(const SoDetailList &l)a8Å//) "€p€”‘€‚A€‚ÿConstructor that copies the contents of another list.? /À/, (€&€T”A‚S~‚A€ƒ‚ÿ~SoDetailList()7/ @/) "€€”‘€‚A€‚ÿDestructor.À/ @/z/T"À/`@/2 4€D€T”A‚S~‚A€ƒãåŒÅe‰‚ÿvoidappend(SoDetail *detail)Q( @/±@/) "€P€”‘€‚A€‚ÿAdds a detail to the end of the list.d1`@/A/3 6€b€T”A‚S~‚A€ƒãåŒÅe‰‚ÿvoidinsert(SoDetail *detail,int addBefore)h?±@/}A/) "€~€”‘€‚A€‚ÿInserts given detail in list before detail with given index.GA/ÄA/, (€6€T”A‚S~‚A€ƒ‚ÿvoidtruncate(int start)Œc}A/PB/) "€Æ€”‘€‚A€‚ÿRemoves all details after one with given index, inclusive. Removed detail instances are deleted.W%ÄA/§B/2 4€J€T”A‚S~‚A€ƒãÿ®Ze‰‚ÿvoidcopy(const SoDetailList &l)mDPB/C/) "€ˆ€”‘€‚A€‚ÿCopies a list, making a copy of each detail instance in the list.o7§B/ƒC/8 @€n€T”A‚S~‚Aãÿ®Ze€‰ƒãÿ®Ze‰‚ÿSoDetailList &operator =(const SoDetailList &l)mDC/ðC/) "€ˆ€”‘€‚A€‚ÿCopies a list, making a copy of each detail instance in the list.Z(ƒC/JD/2 4€P€T”A‚S~‚AãåŒÅe€‰ƒ‚ÿSoDetail *operator [](int i) constJ!ðC/”D/) "€B€”‘€‚A€‚ÿAccesses an element of a list.Y&JD/íD/3 6€L€T”A‚S~‚A€ƒãåŒÅe‰‚ÿvoidset(int i,SoDetail *detail)d;”D/QE/) "€v€”‘€‚A€‚ÿSets an element of a list, deleting the old entry first.1 íD/‚E/& €€‚A€‚ÿSEE ALSO< QE/¾E// .€€”‘€‚AãåŒÅe€‰‚ÿSoDetailC‚E/F/1U]^_­F/;F/å†/SoDirectionalLight:¾E/;F/% €*€ˆˆ€‚ÿSoDirectionalLight*F/eF/# €€€‚ÿNAMEjD;F/ÏF/& €ˆ€”‘€€‚ÿSoDirectionalLight - node representing a directional light source3eF/G/# € €€‚ÿINHERITS FROM®UÏF/°G/Y ‚€ª€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã Ú˜€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoLight > SoDirectionalLight2 G/âG/& €€€€ ‚ÿSYNOPSIS~W°G/`H/' €®€”‘€€‚‚ÿ#include Fields from class SoDirectionalLight:JâG/ªH/2 4€0€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fdirectionN`H/øH// .€>€”‘€‚A€ã Ú˜‰‚ÿFields from class SoLight:z8ªH/rI/B T€p€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ãð@I1‰ƒ‚ÿSoSFBoolonSoSFFloatintensitySoSFColorcolorR)øH/ÄI/) "€R€”‘€‚A€‚ÿMethods from class SoDirectionalLight:m9rI/1J/4 8€r€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoDirectionalLight()static SoTypegetClassTypeId()NÄI/J// .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|1J/ûK/n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)J/SL// .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØûK/¸N/ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHSL/@O/@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¸N/ŽO// .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ@O/Ñ€/Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() ŽO/Ñ€/¾E/constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ŽO//& €€‚A€‚ÿDESCRIPTIONžuÑ€/£/) "€ê€”‘€‚A€‚ÿThis node defines a directional light source that illuminates along rays parallel to a given 3-dimensional vector./ /Ò/& €€‚A€‚ÿFIELDSJ£/‚/2 4€0€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fdirectionJ!Ò/f‚/) "€B€”‘€‚A€‚ÿIllumination direction vector.0 ‚/–‚/& €€‚A€‚ÿMETHODSDf‚/Ú‚/, (€0€T”A‚S~‚A€ƒ‚ÿSoDirectionalLight()jA–‚/Dƒ/) "€‚€”‘€‚A€‚ÿCreates a directional light source node with default settings.U#Ú‚/™ƒ/2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Dƒ/ìƒ/) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8™ƒ/$„/& €$€‚A€‚ÿACTION BEHAVIORHìƒ/l„/2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionÚ$„/s…/- (€µ€”‘€‚A€€‚ÿActivates this light (if so specified) during traversal. All shape nodes that come after this light in the scene graph are illuminated by this light. The light's direction is affected by the current transformation.<l„/¯…/& €,€‚A€‚ÿFILE FORMAT/DEFAULT?s…/î…/* $€*€P„7|‚€‚ÿDirectionalLight {i6¯…/W†/3 6€l€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿonTRUEintensity1color1 1 1direction0 0 -1}1 î…/ˆ†/& €€‚€‚ÿSEE ALSO]"W†/å†/; F€D€”‘€‚㦊3ý€‰€ã¨òƯ€‰‚ÿSoPointLight, SoSpotLightJˆ†//‡/1„EÞ‚^ãa®/‡/p‡/ ‹0SoDirectionalLightDraggerAå†/p‡/% €8€ˆˆ€‚ÿSoDirectionalLightDragger*/‡/š‡/# €€€‚ÿNAME‰cp‡/#ˆ/& €Æ€”‘€€‚ÿSoDirectionalLightDragger - directional icon you rotate and translate by dragging with the mouse3š‡/Vˆ/# € €€‚ÿINHERITS FROM÷…#ˆ/M‰/r ²€ €”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoDirectionalLightDragger2 Vˆ/‰/& €€€€ ‚ÿSYNOPSIShM‰/Š/' €Ð€”‘€€‚‚ÿ#include Fields from class SoDirectionalLightDragger:l2‰/zŠ/: D€d€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ã”5‰ƒ‚ÿSoSFRotationrotationSoSFVec3ftranslationP!Š/ÊŠ// .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:HzŠ/‹/2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(ÊŠ/i‹// .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³i‹/Œ/J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO i‹/kŒ// .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%Œ/ÂŒ/2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackLista2kŒ/#// .€d€”‘€‚A€ã†ë‰‚ÿMethods from class SoDirectionalLightDragger:¾ÂŒ/á/= H€€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoDirectionalLightDragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"#/2Ž// .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:Ká/‰À/C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueCh2Ž/‰À/å†/angedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨2Ž/lÁ/; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)‰À/ÄÁ// .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”UlÁ/XÂ/? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"ÄÁ/©Â// .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:8®XÂ/áÄ/Š â€]€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒ‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}©Â/ Å/B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)NáÄ/îÅ// .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:| Å/jÇ/n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)îÅ/ÂÇ// .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®jÇ/õÉ/… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÂÇ/}Ê/@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NõÉ/ËÊ// .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ}Ê/Ì/Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!ËÊ/RÌ// .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)Ì/§Ì/, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+RÌ/þÌ/, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4§Ì/2Í/& €€‚A€‚ÿDESCRIPTION’YþÌ/ÄÎ/9 @€³€”‘€‚A€€€€€€‚ÿSoDirectionalLightDragger is a composite dragger. It looks like a sun with a large arrow coming out of it. The arrow can be rotated about the sun by dragging with the mouse; its orientation is given by the rotation field. You can also drag the sun (and the arrow with it) through 3-space. The location is stored in the translation field.ÏŸ2Í/“Ï/0 .€?€”‘€‚A€€€‚ÿThe dragger uses an SoRotateSphericalDragger for changing the rotation. Instead of using the default spherical geometry, this dragger uses an arrow shape.µgÄÎ/T0N j€Ï€”‘€‚A€€€€€€€€€€€€€‚ÿThe sun is an SoDragPointDrag“Ï/T0å†/ger. Dragging it edits the translation field; conversely, if you change the translation field the sun will move to that new location, bringing the arrow with it. The sun looks and behaves just like the sun in an SoPointLightDragger, as does the material part. See the SoPointLightDragger reference page for details.µ‚“Ï/ 03 4€€”‘€‚A€€€€‚ÿRemember: This is not a light source! It just looks like one. If you want to move a light with this dragger, you can either:ÊvT0Ó0T v€í€”‘€‚A€€€€€€€€€€€€€€€‚ÿ[a] Use an SoDirectionalLightManip, which is subclassed from SoLight. It creates an SoDirectionalLightDragger and uses it as the interface to change the direction of its light source (see the SoDirectionalLightManip reference page). The manipulator also edits the material part of this dragger to match the color of light the manipulator is producing. However, the directional light manipulator will ignore the translation field, because a directional light has no location or translation field. So in this case the translation dragger merely allows you to move the physical arrow to wherever you'd like it to be.?ý 00B R€û€”‘€‚A€€€€€€€€€‚ÿ[b] Put an SoTransform under an SoTransformSeparator. Add the SoDirectionalLight as the next child. Use a field-to-field connection between the rotation fields of this dragger and the transform node to synchronize the light with this dragger.gÓ0y0N j€3€”‘€‚A€€€€€€€€€€€€€‚ÿ[c] Use engines to connect the rotation field of this dragger to the direction field of an SoDirectionalLight. Use the rotation as input to an SoComposeMatrix engine. Then, use an SoTransformVec3f engine to apply that matrix to (0,0,-1), the default light direction.o-0è 0B R€[€”‘€‚A€€€€€€€€€‚ÿYou can change the parts in any instance of this dragger using setPart(). The default part geometries are defined as resources for this SoDirectionalLightDragger class. They are detailed in the Dragger Resources section of the online reference page for this class. You can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/directionalLightDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ y0 0& €€‚A€‚ÿFIELDSLè 0c 02 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationc: 0Æ 0) "€t€”‘€‚A€‚ÿOrientation of the rotating part (an arrow by default).Lc 0 02 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationd;Æ 0v 0) "€v€”‘€‚A€‚ÿPosition of the origin of the directional light dragger.0  0¦ 0& €€‚A€‚ÿMETHODSKv 0ñ 0, (€>€T”A‚S~‚A€ƒ‚ÿSoDirectionalLightDragger()8¦ 0) 0) "€€”‘€‚A€‚ÿConstructor.uCñ 0ž 02 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/) 0ü 0/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#ž 0Q 02 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ü 0¤ 0) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6Q 0Ú 0& € €‚A€‚ÿCATALOG PARTS;¤ 00- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜Ú 0­0~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/0l0#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2­0:@0#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcal0:@0å†/llbackListNodeKitListPart--yes·'l0ñ@0#ð€NÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€2€ÿ€4€€€‚ÿ€@€€€‚ÿÿÿmaterialMaterial--yes¿/:@0°A0#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€*€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿtranslatorRotInvRotation--yesÁ1ñ@0qB0#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslatorDragPointDragger--yesÄ4°A05C0#ð€hÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€L€ÿ€N€€€‚ÿ€Z€€€‚ÿÿÿrotatorRotateSphericalDragger--yes,qB0aC0' € €€‚€‚ÿ]55C0¾C0( €j€”‚±€ƒ‚ÿExtra Information for List Parts from Above Table’1aC0PD0a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8¾C0éD0a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=PD0&E0' €,€€‚€‚ÿDRAGGER RESOURCES#ÂéD0IG0a €…€PÍÇ~‚Í€ ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚ÿResource:directionalLightRotatorRotatorPart:rotator.rotatorAppearance:white arrow that goes through the sunDescription:picking this begins rotation of the arrow about the sun-shapeResource:directionalLightRotatorRotatorActivePart:rotator.rotatorActiveAppearance:yellow arrow that goes through the sunDescription:displayed while the arrow is being rotatedResource:directionalLightRotatorFeedbackPart:rotator.feedbackÇ&E0fI0V z€€PÍÇ~‚Í€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿAppearance:empty SeparatorDescription:this disables display of the axes that a rotateSpherical dragger uses by defaultResource:directionalLightRotatorFeedbackActivePart:rotator.feedbackActiveAppearance:empty SeparatorDescription:this disables display of the axes that a rotateSpherical dragger uses by defaultResource:directionalLightOverallMaterialPart:materialAppearance:white. half strength emissive, half strength diffuse:õIG0 K0E X€ë€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚ÿDescription:sets material for the sun shape when stationary. Resource for the moving sun, directionalLightTranslatorPlaneTranslatorActive, contains a yellow material for highlighting.Resource:directionalLightTranslatorPlaneTranslatorParts:translator.yzTranslator.translatortranslator.xzTranslator.translatortranslator.xyTranslator.translatorAppearance:sun shape with no materialDescription:picking these parts initiates dragging by the yz, xz, and xy planar draggers respectively.»fI0±M0V z€w€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:directionalLightTranslatorPlaneTranslatorActiveParts:translator.yzTranslator.translatorActivetranslator.xzTranslator.translatorActivetranslator.xyTranslator.translatorActiveAppearance:yellow sun shapeDescription:shown during planar dragging in the yz, xz, and xy planes respectively.Resource:directionalLightTranslatorLineTranslatorParts:translator.xTranslator.translatortranslator.yTranslator.translatorÖ K0ÐO0I `€­€PÍÇ~‚Í€ ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚ÿtranslator.zTranslator.translatorAppearance:white cylinderDescription:picking these parts initiates dragging in the x, y, and z linear draggers respectively.Resource:directionalLightTranslatorLineTranslatorActiveParts:translator.xTranslator.translatorActivetranslator.yTranslator.translatorActivetranslator.zTranslator.translatorActiveAppearance:yellow cylinderDescription:shown during linear dragging in the x, y, and z directions respectively.-±M0 €0* $€€PÍÇ~‚Í€ ‚ÿÐO0 €0å†/<ÐO0H€0& €,€‚Í€‚ÿFILE FORMAT/DEFAULTF €0Ž€0* $€8€P„7|‚€‚ÿDirectionalLightDragger {1ãH€0¿‚0N j€Ç€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚ƒ‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEtranslation0 0 0rotation0 0 1 0callbackListNULLmaterialtranslatorRotInvNULLtranslatorDragPointDragger {}rotatorRotateSphericalDragger {}rotator.rotatorrotator.rotatorActiverotator.feedbackPŽ€0…06 :€5€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿrotator.feedbackActivetranslator.yzTranslator.translatortranslator.xzTranslator.translatortranslator.xyTranslator.translatortranslator.yzTranslator.translatorActivetranslator.xzTranslator.translatorActiveb,¿‚0q‡06 :€Y€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿtranslator.xyTranslator.translatorActivetranslator.xTranslator.translatortranslator.yTranslator.translatortranslator.zTranslator.translatortranslator.xTranslator.translatorActivetranslator.yTranslator.translatorActive’f…0ˆ0, (€Ì€P„|‚€ƒ‚‚ÿtranslator.zTranslator.translatorActive},q‡0/ˆ0) "€€”‘€‚€‚ÿ1 ˆ0`ˆ0& €€‚€‚ÿSEE ALSO@/ˆ0 ‹0, &‚)€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2DraggerH`ˆ0è‹01+_0e¯è‹0'Œ0ÝF1SoDirectionalLightManip? ‹0'Œ0% €4€ˆˆ€‚ÿSoDirectionalLightManip*è‹0QŒ0# €€€‚ÿNAME['Œ0ÒŒ0& €¶€”‘€€‚ÿSoDirectionalLightManip - directional light node with 3D interface for editing direction3QŒ00# € €€‚ÿINHERITS FROMØsÒŒ0Ý0e š€æ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã Ú˜€‰€ãÀú€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoLight > SoDirectionalLight > SoDirectionalLightManip2 0Ž0& €€€€ ‚ÿSYNOPSISŒ_Ý0›Ž0- *€¾€”‘€€‚ãÀú‰‚ÿ#include Fields from class SoDirectionalLight:JŽ0åŽ02 4€0€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fdirectionN›Ž030/ .€>€”‘€‚A€ã Ú˜‰‚ÿFields from class SoLight:z8åŽ0­0B T€p€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ãð@I1‰ƒ‚ÿSoSFBoolonSoSFFloatintensitySoSFColorcolor_030À0/ .€`€”‘€‚A€ã½ôm‰‚ÿMethods from class SoDirectionalLi­0À0 ‹0ghtManip:$Ä­0<Á0` Ž€‰€T”A‚S~‚A€ƒ‚ãÈï?†‰ƒ‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒãMy'9‰ãÀú‰‚ãB-9‰ƒ‚ÿSoDirectionalLightManip()SoDragger *getDragger()SbBoolreplaceNode(SoPath *p )SbBoolreplaceManip(SoPath *p,SoDirectionalLight *newOne ) conststatic SoTypegetClassTypeId()NÀ0ŠÁ0/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|<Á0Ã0n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ŠÁ0^Ã0/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÃ0ÃÅ0 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH^Ã0KÆ0@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÃÅ0™Æ0/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞKÆ0ÐÇ0Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4™Æ0È0& €€‚A€‚ÿDESCRIPTIONUÐÇ0YÊ0? L€-€”‘€‚A€€€€€€€€‚ÿSoDirectionalLightManip is the base class for all SoDirectionalLight nodes that have a built-in 3D user interface (this is the only such class provided with the Open Inventor toolkit). Since it is derived from SoDirectionalLight, any changes to its fields result in a change of lighting for nodes that follow it in the scene graph. In this case, the interface edits the direction field. Also, the color of the manipulator's geometry will reflect the color of the light (but you cannot edit the color using this manipulator).¹wÈ0Ì0B R€ï€”‘€‚A€€€€€€€€€‚ÿTypically, you will want to replace a regular SoDirectionalLight with an SoDirectionalLightManip (as when the user selects a light to be edited), or vice versa (as when the user is done moving the light and the interface should go away). Use the replaceNode() method to insert a manipulator into a scene graph, and the replaceManip() method to remove it when done.\YÊ0nÎ0B R€5€”‘€‚A€€€€€€€€€‚ÿThe SoDirectionalLightManip utilizes an SoDirectionalLightDragger to provide a 3D interface. However, the manipulator differs from the dragger; it lights other objects in the scene because, as an SoDirectionalLight, it alters the state. The field values and movement of the dragger, on the other hand, affect only the dragger itself. To find out more about how the interface works and what each part will do, see the reference page for SoDirectionalLightDragger. The interfaces of the dragger and the manipulator are identical.í·Ì0g16 :€o€”‘€‚A€€€€€‚ÿThe SoDirectionalLightManip utilizes its dragger by adding it as a hidden child. When an action is applied to the manipulator, such as rendering or handling events, the manipulator first traverses the dragger, and then the manipulator adds its lighting parameters to the state. When you click-drag-release over the manipulator, it passes these enÎ0g1 ‹0vents down to the dragger, which moves as a result ("I can't help it, I'm a dragger!").¼nÎ0k1H ^€y€”‘€‚A€€€€€€€€€€€‚ÿThe manipulator maintains consistency between the fields of the dragger and its own fields. Let's say you use the mouse to rotate the dragger. Callbacks ensure that the direction field of the manipulator will change by the same amount, thus changing the lighting of nodes which follow in the scene graph. Similarly, if you set the direction field of the SoDirectionalLightManip, the manipulator will orient the dragger accordingly.€Jg1ë16 :€•€”‘€‚A€€€€€‚ÿBecause the dragger is a hidden child, you can see the dragger on screen and interact with it, but the dragger does not show up when you write the manipulator to file. Also, any SoPath will end at the manipulator. (See the Actions section of this reference page for a complete description of when the dragger is traversed).%õk110 .€ë€”‘€‚A€€€‚ÿIf you want to get a pointer to the dragger you can get it from the manipulator using the getDragger() method. You will need to do this if you want to change the geometry of a manipulator, since the geometry actually belongs to the dragger.0 ë1@1& €€‚A€‚ÿMETHODSI1‰1, (€:€T”A‚S~‚A€ƒ‚ÿSoDirectionalLightManip()8@1Á1) "€€”‘€‚A€‚ÿConstructor.O‰112 4€:€T”A‚S~‚AãÈï?†€‰ƒ‚ÿSoDragger *getDragger()TÁ1d16 :€=€”‘€‚A€€€€€‚ÿReturns a pointer to the dragger being used by this manipulator. Given this pointer, you can customize the dragger just like you would any other dragger. You can change geometry using the setPart() method, or add callbacks using the methods found in the SoDragger reference page.]%1Á18 @€J€T”A‚S~‚A㑶p6€‰ƒãMy'9‰‚ÿSbBoolreplaceNode(SoPath *p )r<d13 16 :€y€”‘€‚A€€€€€‚ÿReplaces the tail of the path with this manipulator. The tail of the path must be an SoDirectionalLight node (or subclass thereof). If the path has a nodekit, this will try to use setPart() to insert the manipulator. Otherwise, the manipulator requires that the next to last node in the path chain be a group.¥|Á1Ø 1) "€ø€”‘€‚A€‚ÿThe field values from the directional light node will be copied to this manipulator, and the light node will be replaced.Ñ¡3 1© 10 .€C€”‘€‚A€€€‚ÿThe manipulator will not call ref() on the node it is replacing. The old node will disappear if it has no references other than from the input path p and its parent, since this manipulator will be replacing it in both of those places. Nor will the manipulator make any changes to field connections of the old node. The calling process is thus responsible for keeping track of its own nodes and field connections.‰JØ 12 1? N€”€T”A‚S~‚A㑶p6€‰ƒãMy'9‰ãÀú‰‚ÿSbBoolreplaceManip(SoPath *p,SoDirectionalLight *newOne ) constR© 1„ 16 :€9€”‘€‚A€€€€€‚ÿReplaces the tail of the path, which must be this manipulator, with the given SoDirectionalLight node. If the path has a nodekit, this will try to use setPart() to insert the new node. Otherwise, the manipulator requires that the next to last node in the path chain be a group.¥|2 1)1) "€ø€”‘€‚A€‚ÿThe field values from the manipulator will be copied to the directional light node, and the manipulator will be replaced.#í„ 1L16 :€Û€”‘€‚A€€€€€‚ÿThe manipulator will not call ref() or unref() on the node which is replacing it, nor will it make any changes to field connections. The calling process is thus responsible for keeping track of its own nodes and field connections.U#)1¡12 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*L1 @1) "€T€”‘€‚A€‚ÿReturns type identifier for this class.¡1 @1 ‹08¡1D@1& €$€‚A€‚ÿACTION BEHAVIORÔƒ @1A1Q p€€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ã¹_ØS‰ãàê‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoHandleEventAction, SoRayPickActionZD@1rB1? L€7€”‘€‚A€€€€€€€€‚ÿFirst, traverses the dragger the way an SoGroup would. All draggers place themselves in space, but leave the current transformation unchanged when finished. Then the SoDirectionalLightManip adds a directional light to the state just like its base class, SoDirectionalLight.FA1¸B12 4€(€”‘€‚AãòÓ}ª€‰€‚ÿSoSearchAction—erB1OC12 4€Ê€”‘€‚A€€€€‚ÿSearches just like an SoDirectionalLight. Does not search the dragger, which is a hidden child.E¸B1”C12 4€&€”‘€‚AãeY €‰€‚ÿSoWriteAction^%OC1òD19 @€K€”‘€‚A€€€€€€‚ÿWrites out just like an SoDirectionalLight. Does not write the dragger, which is a hidden child. If you really need to write valuable information about the dragger, such as customized geometry, you can retrieve the dragger with the getDragger() method and then write it out separately.<”C1.E1& €,€‚A€‚ÿFILE FORMAT/DEFAULTDòD1rE1* $€4€P„7|‚€‚ÿDirectionalLightManip {i6.E1ÛE13 6€l€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿonTRUEintensity1color1 1 1direction0 0 -1}1 rE1 F1& €€‚€‚ÿSEE ALSOÑrÛE1ÝF1_ Ž€ä€”‘€‚ãÈï?†€‰€ãÀú€‰€ã†ë€‰€ã|`o€‰€ã‰Ë 퀉‚ÿSoDragger, SoDirectionalLight, SoDirectionalLightDragger, SoPointLightManip, SoSpotLightManipC F1 G115S0eHg° G1ZG1Uˆ2SoDragPointDragger:ÝF1ZG1% €*€ˆˆ€‚ÿSoDragPointDragger* G1„G1# €€€‚ÿNAMEwQZG1ûG1& €¢€”‘€€‚ÿSoDragPointDragger - object you can translate in 3D by dragging with the mouse3„G1.H1# € €€‚ÿINHERITS FROMï~ûG1I1q ²€ü€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoDragPointDragger2 .H1OI1& €€€€ ‚ÿSYNOPSISZI1ÐI1' €´€”‘€€‚‚ÿ#include Fields from class SoDragPointDragger:LOI1J12 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationP!ÐI1lJ1/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:HJ1´J12 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(lJ1 K1/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³i´J1¾K1J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO K1 L1/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%¾K1dL12 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListR) L1¶L1) "€R€”‘€‚A€‚ÿMethods from class SoDragPointDragger:ÎdL1ÇM1C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoDragPointDragger()voidsetJumpLimit(float limit)floatgetJumpLimit() constvoidshowNextDraggerSet()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"¶L1N1/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:KÇM1o€1C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB N1o€1ÝF1*f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨N1R1; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)o€1ª1/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”UR1>‚1? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"ª1‚1/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:8®>‚1Ç„1Š â€]€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒ‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}‚1†…1B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)NÇ„1Ô…1/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|†…1P‡1n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ô…1¨‡1/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®P‡1Û‰1… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¨‡1cŠ1@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÛ‰1±Š1/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞcŠ1è‹1Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!±Š18Œ1/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)è‹1Œ1, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+8Œ1äŒ1, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4Œ11& €€‚A€‚ÿDESCRIPTIONqäŒ1µ1, (€â€”‘€‚A€€‚ÿSoDragPointDragger is a compound dragger that translates in all three dimensions when dragged with the mouse.A1öŽ1< F€ €”‘€‚A€€€€€€€‚ÿIt is made up of six smaller draggers, which it displays two at a time. Each pair has one plane dragger and one line dragger. The line dragger is oriented perpendicular to the plane, so together the plane/line pair lets you move through all of 3-space.ñµ1À1* "€ã€”‘€‚A€‚ÿDragPoint has a total of three such pairs, oriented along the x, y, and z axes of its local space. You can cycle through the three pairs by hitting the key with the cursor over the dragger. (You need not press theöŽ1À1ÝF1 mouse button.)OöŽ1lÁ1< F€'€”‘€‚A€€€€€€€‚ÿThe line draggers are SoTranslate1Draggers and the plane draggers are SoTranslate2Draggers. So you can use the key to constrain the motion of a plane dragger along one of the two axes within the plane, as described in the SoTranslate2Draggers reference page.ô¾À1`Å16 :€}€”‘€‚A€€€€€‚ÿDragPoint adds extra feedback parts to provide a more intuitive idea of where you are placed in three-space. There are three feedback planes and three feedback axes; each corresponds to one of the plane or line draggers, but spans a much greater distance. When you drag along a line, that line's larger feedback axis is displayed, and remains anchored in space while the dragger slides along it. This helps establish the motion of the dragger relative to the rest of the scene. Similarly, when you drag within a plane, the larger (but transparent) feedback plane establishes a ground plane for you to move upon. The location of the dragger within the plane is pinpointed by two intersecting axes that always cross below the cursor and extend to the edges of the plane. When you move dragPoint to the edge of the feedback plane (or line), the feedback will jump to a new location in that direction, so that the dragger never leaves the feedback behind.òÈlÁ1RÆ1* "€‘€”‘€‚A€‚ÿThe primary directions of motion are given by the local space of the dragger. Transforms earlier in the scene will affect the dragger, its children, and the orientation of its directions of motion.*ú`Å1|Ç10 .€õ€”‘€‚A€€€‚ÿThis node has a translation field which always reflects its position in local space. Setting the field moves the dragger to that point. You can also connect fields of other nodes or engines from this one to make them follow the dragger's motion.½RÆ19É10 .€€”‘€‚A€€€‚ÿAlthough the child draggers each have their own resources defining default part geometries, the dragPoint dragger overrides these with a new set of resources. It also defines resources for the feedback parts that it adds. These are detailed in the Dragger Resources section of the online reference page for this class. You can change the parts in any instance of this dragger using setPart().O|Ç1ˆÊ16 :€3€”‘€‚A€€€€€‚ÿYou can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/dragPointDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ 9É1·Ê1& €€‚A€‚ÿFIELDSLˆÊ1Ë12 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationD·Ê1GË1) "€6€”‘€‚A€‚ÿPosition of the dragger.0 Ë1wË1& €€‚A€‚ÿMETHODSDGË1»Ë1, (€0€T”A‚S~‚A€ƒ‚ÿSoDragPointDragger()8wË1óË1) "€€”‘€‚A€‚ÿConstructor.j<»Ë1]Ì1. ,€x€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetJumpLimit(float limit)floatgetJumpLimit() constøÎóË1UÍ1* "€€”‘€‚A€‚ÿSet and get the point at which the feedback axes will jump to a new position. For example, if set to .1 (the default), the feedback axes will jump when the dragger gets within 10% of the end of the axis.H]Ì1Í1, (€8€T”A‚S~‚A€ƒ‚ÿvoidshowNextDraggerSet()Q'UÍ1îÎ1* "€O€”‘€‚A€‚ÿThe dragPoint dragger contains three pairs of draggers, each containing a plane dragger and a line dragger (see the Description above). The dragger starts with the (y-line/xz-plane) pair displayed. Calling this method will cycle next through the (z-line/xy-plane), then the (x-line/yz-plane).uCÍ1cÏ12 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/îÎ1ÁÏ1/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#cÏ1"22 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTyÁÏ1"2ÝF1pegetClassTypeId()S*ÁÏ1u2) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6"2«2& € €‚A€‚ÿCATALOG PARTS;u2æ2- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜«2~2~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/æ2=2#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2~2ÿ2#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yesÃ3=2Â2#ð€fÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€J€ÿ€L€€€‚ÿ€X€€€‚ÿÿÿxTranslatorTranslate1Dragger--yesÄ4ÿ2†2#ð€hÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€L€ÿ€N€€€‚ÿ€Z€€€‚ÿÿÿxyTranslatorTranslate2Dragger--yesÄ4Â2J2#ð€hÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€L€ÿ€N€€€‚ÿ€Z€€€‚ÿÿÿxzTranslatorTranslate2Dragger--yesÃ3†2 2#ð€fÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€J€ÿ€L€€€‚ÿ€X€€€‚ÿÿÿzTranslatorTranslate1Dragger--yesÄ4J2Ñ2#ð€hÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€L€ÿ€N€€€‚ÿ€Z€€€‚ÿÿÿyzTranslatorTranslate2Dragger--yesÃ3 2”2#ð€fÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€J€ÿ€L€€€‚ÿ€X€€€‚ÿÿÿyTranslatorTranslate1Dragger--yes¹)Ñ2M2#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿxFeedbackSeparator--yes¹)”2 2#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿyFeedbackSeparator--yes¹)M2¿ 2#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿzFeedbackSeparator--yesº* 2y 2#ð€TÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€8€ÿ€:€€€‚ÿ€F€€€‚ÿÿÿyzFeedbackSeparator--yesº*¿ 23 2#ð€TÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€8€ÿ€:€€€‚ÿ€F€€€‚ÿÿÿxzFeedbackSeparator--yesº*y 2í 2#ð€TÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€8€ÿ€:€€€‚ÿ€F€€€‚ÿÿÿxyFeedbackSeparator--yes,3 2 2' € €€‚€‚ÿ]5í 2v 2( €j€”‚±€ƒ‚ÿExtra Information for List Parts from Above Table’1 2 2a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8v 2¡ 2a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback= 2Þ 2' €,€€‚€‚ÿDRAGGER RESOURCES·¡ 2 @2\ †€o€PÍÇ~‚Í€ ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿResource:dragPointXTranslatorTranslatorPart:xTranslator.translatorAppearance:white cylinder with axis aligned in X directionDescription:picking this initiates linear motion in X directionResource:dragPointXTranslatorTranslatorActivePart:xTranslator.translatorActiveAppearance:yellow cylinder with axis aligned in X directionDescription:shown when moving in X directionResource:dragPointYTranslatorTranslatorÞ 2 @2ÝF1EçÞ 2QB2^ Š€Ï€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿPart:yTranslator.translatorAppearance:white cylinder with axis aligned in Y directionDescription:picking this initiates linear motion in Y directionResource:dragPointYTranslatorTranslatorActivePart:yTranslator.translatorActiveAppearance:yellow cylinder with axis aligned in Y directionDescription:shown when moving in Y directionResource:dragPointZTranslatorTranslatorPart:zTranslator.translatorAppearance:white cylinder with axis aligned in Z direction%Ï @2vD2V z€Ÿ€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿDescription:picking this initiates linear motion in Z directionResource:dragPointZTranslatorTranslatorActivePart:zTranslator.translatorActiveAppearance:yellow cylinder with axis aligned in Z directionDescription:shown when moving in Z directionResource:dragPointYZTranslatorTranslatorPart:yzTranslator.translatorAppearance:white flattened cube within the yz plane of motionDescription:picking this initiates planar motion in yz plane ÃQB2–F2] ˆ€‡€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿResource:dragPointYZTranslatorTranslatorActivePart:yzTranslator.translatorActiveAppearance:yellow flattened cube within the yz plane of motionDescription:shown when moving in yz planeResource:dragPointXZTranslatorTranslatorPart:xzTranslator.translatorAppearance:white flattened cube within the xz plane of motionDescription:picking this initiates planar motion in xz planeResource:dragPointXZTranslatorTranslatorActiveµvD2¤H2Y €€k€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚ÿPart:xzTranslator.translatorActiveAppearance:yellow flattened cube within the xz plane of motionDescription:shown when moving in xz planeResource:dragPointXYTranslatorTranslatorPart:xyTranslator.translatorAppearance:white flattened cube within the xy plane of motionDescription:picking this initiates planar motion in xy planeResource:dragPointXYTranslatorTranslatorActivePart:xyTranslator.translatorActive°–F2ºJ2f š€a€PÍÇ~‚Í€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚ÿAppearance:yellow flattened cube within the xy plane of motionDescription:shown when moving in xy planeResource:dragPointXFeedbackPart:xFeedbackAppearance:douple-headed purple arrowDescription:feedback for motion in x directionResource:dragPointYFeedbackPart:yFeedbackAppearance:douple-headed purple arrowDescription:feedback for motion in y directionResource:dragPointZFeedbackPart:zFeedback ¨¤H2ÃL2a €Q€PÍÇ~‚Í€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿAppearance:douple-headed purple arrowDescription:feedback for motion in z directionResource:dragPointYZFeedbackPart:yzFeedbackAppearance:semi-transparent green square in yz planeDescription:feedback for motion in yz planeResource:dragPointXZFeedbackPart:xzFeedbackAppearance:semi-transparent green square in yz planeDescription:feedback for motion in xz planeResource:dragPointXYFeedback¯yºJ2rM26 <€ò€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ÿPart:xyFeedbackAppearance:semi-transparent green square in yz planeDescription:feedback for motion in xy plane<ÃL2®M2& €,€‚Í€‚ÿFILE FORMAT/DEFAULT?rM2íM2* $€*€P„7|‚€‚ÿDragPointDragger { ¯®M2 €2Z ‚€_€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEtranslation0 0 0callbackListNULLxTranslatorTranslate1Dragger {}xyTranslatorTranslate2Dragger {}xzTranslatorTranslate2Dragger {}zTranslatorTranslate1Dragger {}yzTranslatorTranslate2Dragger {}yTranslatorTranslate1Dragger {}xFeedbackyFeedbackíM2 €2ÝF1AíM2M‚2< F€ €P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿzFeedbackyzFeedbackxzFeedbackxyFeedbackxTranslator.translatorxTranslator.translatorActiveyTranslator.translatoryTranslator.translatorActivezTranslator.translator= €2Š„28 >€ €P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿzTranslator.translatorActiveyzTranslator.translatoryzTranslator.translatorActivexzTranslator.translatorxzTranslator.translatorActivexyTranslator.translatorxyTranslator.translatorActive.M‚2¸„2* $€€P„|‚€‚ÿ},Š„2ä„2) "€€”‘€‚€‚ÿ1 ¸„2…2& €€‚€‚ÿSEE ALSO@ä„2Uˆ2, &‚)€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2Dragger: …2ˆ21FãaD„b±ˆ2Àˆ2K3SoDragger1 Uˆ2Àˆ2% €€ˆˆ€‚ÿSoDragger*ˆ2êˆ2# €€€‚ÿNAME…_Àˆ2o‰2& €¾€”‘€€‚ÿSoDragger - base class for nodekits that move in response to click-drag-release mouse events3êˆ2¢‰2# € €€‚ÿINHERITS FROMÊeo‰2lŠ2e š€Ê€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger2 ¢‰2žŠ2& €€€€ ‚ÿSYNOPSISQ+lŠ2ïŠ2& €V€”‘€€‚ÿ#include l?žŠ2[‹2- *€~€T”A‚S~‚A€ƒ‚ÿtypedef voidSoDraggerCB(void *userData,SoDragger *dragger)HïŠ2£‹2) "€>€”‘€‚A€‚ÿFields from class SoDragger:H[‹2ë‹22 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(£‹2BŒ2/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³ië‹2õŒ2J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO BŒ2D2/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%õŒ2›22 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListQ"D2ì2/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:K›2CÀ2C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueCì2CÀ2Uˆ2hangedCallback(SoDraggerCB *f,void *userData = NULL)jì2­Á2Q p€3€T”A‚S~‚A㑶p6€‰ƒã‘¶p6‰‚ƒ‚ƒ‚ƒ‚ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSbBoolenableValueChangedCallbacks(SbBool newVal)voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()X)CÀ2Â2/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”U­Á2™Â2? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"Â2êÂ2/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:8®™Â2"Å2Š â€]€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒ‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}êÂ2áÅ2B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)N"Å2/Æ2/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|áÅ2«Ç2n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)/Æ2È2/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®«Ç26Ê2… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÈ2¾Ê2@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N6Ê2 Ë2/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¾Ê2CÌ2Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP! Ë2“Ì2/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)CÌ2èÌ2, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+“Ì2?Í2, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4èÌ2sÍ2& €€‚A€‚ÿDESCRIPTION›n?Í2Ï2- (€Ý€”‘€‚A€€‚ÿSoDragger is the base class for all nodekits you move by using the mouse to click-drag-and-release. More specifically, they are operated by a start (mouse button 1 pressed over dragger to pick it), followed by dragging (mouse motion events are interpreted by the dragger and result in some form of motion and/or change to a field), followed by finish (mouse up).ÝsÍ2-36 :€»€”‘€‚A€€€€€‚ÿEach dragger has a different paradigm for interpreting mouse motion and changing its fields as a result. Draggers map 2D mouse motion into motion of a point on 3D lines, planes, spheres oÏ2-3Uˆ2r cylinders. (See the SbProjector reference pages.) Then they react to this motion of a point through 3-space by scaling, translating, or rotating. For example, SoTranslate2Dragger maps mouse motion onto a 3D plane, then translates to follow the cursor as it moves within that plane.^Ï2‹3B R€9€”‘€‚A€€€€€€€€€‚ÿEvery dragger has fields that describe its current state. Scaling draggers have a scaleFactor field, rotational draggers have a rotation field, etc. All draggers have the isActive field, defined in this class. It is TRUE while the dragger is being dragged, FALSE otherwise.ö´-33B R€i€”‘€‚A€€€€€€€€€‚ÿDraggers that have only one part to pick and one motion field are called simple draggers. Examples are the SoRotateDiscDragger, SoScale1Dragger, and SoTranslate2Dragger.Z ‹3Û3N j€€”‘€‚A€€€€€€€€€€€€€‚ÿDraggers that create assemblies out of other draggers and then orchestrate the motion of the whole assembly are call composite draggers. SoTransformBoxDragger is a composite dragger made entirely of simple draggers. SoDirectionalLightDragger contains both a simple dragger (SoRotateSphericalDragger) and a composite dragger (SoDragPointDragger) When using a composite dragger, the fields of the composite dragger are the ones you should work with. Draggers lower down in the assemblage usually have zeroed out values. For example, when you drag the face of a transformBox, an SoTranslate2Dragger, the transformBox "steals" the translation from the child dragger and transfers it up to the top of the composite dragger, where it effects all pieces of the assemblage.¼’3—3* "€%€”‘€‚A€‚ÿDraggers always keep their fields up to date, including while they are being dragged. So you can use field-to-field connections and engines to connect dragger values to other parts of your scene graph. Hence draggers can be easily utilized as input devices for mouse-driven 3D interface elements. You can also register value-changed callbacks, which are called whenever any of the fields is changed.çÛ3´ 36 :€Ï€”‘€‚A€€€€€‚ÿAlso, if you set the field of a dragger through some method other than dragging, (by calling setValue(), for example), the dragger's internal SoFieldSensor will sense this and the dragger will move to satisfy that new value.t>—3( 36 :€}€”‘€‚A€€€€€‚ÿThis makes it easy to constrain draggers to keep their fields within certain limits: if the limit is exceeded, just set it back to the exceeded maximum or minimum. You can do this even as the dragger is in use, by constraining the field value within a value-changed callback that you add with addValueChangedCallback(). In this case, be sure to temporarily disable the other value-changed callbacks using enableValueChangedCallbacks(). Doing this will prevent infinite-looping; changing the value followed by calling the callbacks which change the value ad infinitum.*Ü´ 3^@3N j€¹€”‘€‚A€€€€€€€€€€€€€‚ÿWhen you drag a dragger, the dragger only moves itself. Draggers do not change the state or affect objects that follow in the scene graph. For example a dragger does not ever behave like an SoTransform and change the current transformation matrix. Draggers are not transforms, even if they have field names like translation, rotation, scaleFactor. Many draggers, such as SoTrackballDragger, have a corresponding SoTransformManip, in this case SoTrackballManip. The manipulator is a subclass of SoTransform, and affects other objects in the scene; it uses a trackball dragger to provide its user interface. In this way, draggers are employed extensively by manipulators. Callback functions on the dragger allow its employer to be notified of start, motion, finish, and value changes. In all cases, the callback function is passed a pointer to the dragger which initiated the callback. (See the ( 3^@3Uˆ2various reference pages for more details on specific draggers and manipulators).I( 3§C30 .€3€”‘€‚A€€€‚ÿAll draggers are nodekits. However, draggers do not list their parts in the Parts section of the reference page. Instead, there is a section called Dragger Resources, more suited to describe the parts made available to the programmer. Because of space limitations, the Dragger Resources section only appears in the online versions of the reference pages. Each dragger has some parts you can pick on, and other parts that replace them when they are active or moving. These active parts are often just the same geometry in another color. Draggers also have pieces for displaying feedback. Each of these pieces has a default scene graph, as well as a special function within the dragger. Each part also has a resource name. All this information is contained in the DRAGGER RESOURCES section.”e^@3;D3/ .€Ê€”‘€‚A€€€‚ÿSince draggers are nodekits, you can set the parts in any instance of a dragger using setPart(). Á§C3DG3H ^€ƒ€”‘€‚A€€€€€€€ã!§˜m€‰€‚ÿBut draggers also give each part a resource name. When a dragger builds a part, it looks in the global dictionary for the node with that resourceName. By putting a new entry in the dictionary, you can override that default. The default part geometries are defined as resources for each class, and each class has a file you can change to alter the defaults. The files are listed in each dragger's reference page. You can make your program use different default resources for the parts by copying the listed file from the directory %OIVHOME%/data/draggerDefaults into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ ;D3sG3& €€‚A€‚ÿFIELDSHDG3»G32 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActive]4sG3H3) "€h€”‘€‚A€‚ÿTRUE when mouse is down and dragging, else FALSE.0 »G3HH3& €€‚A€‚ÿMETHODS¯H3÷H30 0€þ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)îÄHH3åI3* "€‰€”‘€‚A€‚ÿStart callbacks are made after the mouse button 1 goes down and the dragger determines that it has been picked. If it is going to begin dragging, it grabs events and invokes the startCallbacks.²÷H3—J31 0€€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)yPåI3K3) "€ €”‘€‚A€‚ÿMotion callbacks are called after each movement of the mouse during dragging.²—J3ÂK31 0€€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)†]K3HL3) "€º€”‘€‚A€‚ÿFinish callbacks are made after dragging ends and the dragger has stopped grabbing events.¾ÂK3M31 0€€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã­HL3éM36 :€[€”‘€‚A€€€€€‚ÿValue-changed callbacks are made after a dragger changes any of its fields. This does not include changes to the isActive field. See also enableValueChangedCallbacks.p8M3YN38 @€p€T”A‚S~‚A㑶p6€‰ƒã‘¶p6‰‚ÿSbBoolenableValueChangedCallbacks(SbBool newVal)Y/éM3¾€3* "€_€”‘€‚A€‚ÿYou can temporarily disable a dragger's valueChangedCallbacks. The method returns a value that tells you if callbacks were already enabled. Use this method if you write a valueChanged callback of your own and you change one of the dragger's fields within the callback. (For example, when writing a callback to constrain your dragger). Disable first, then change the field, then reYN3¾€3Uˆ2-enable the callbacks (if they were enabled to start with). All this prevents you from entering an infinite loop of changing values, calling callbacks which change values, etc.i;YN3'3. ,€v€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetMinGesture(int pixels)intgetMinGesture() const‘h¾€3¸3) "€Ð€”‘€‚A€‚ÿSet and get the number of pixels of movement required to initiate a constraint gesture. Default is 8.vH'3.‚3. ,€€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidsetMinScale(float newMinScale)static floatgetMinScale()Ù¸3ñ‚3* "€3€”‘€‚A€‚ÿThe smallest scale that any dragger will write. If the user attempts to go below this amount, the dragger will set it to this minimum. Default is .001uC.‚3fƒ32 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const_0ñ‚3Ń3/ .€`€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this class.U#fƒ3„32 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Ń3m„3) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6„3£„3& € €‚A€‚ÿCATALOG PARTS;m„3Þ„3- *€€”‘€‚‰€ƒ€‚ÿAll Parts‹£„3i…3r#´€2ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €€€‚ÿ€"€€€‚ÿÿÿDefaultNULL¥-Þ„3†3x#À€ZÜI, “ ’ €€€€‚ÿ€€€€‚ÿ€4€€€‚ÿ€D€€€‚ÿÿÿPart NamePart TypeTypeDefaultµ1i…3Æ3„#Ø€bÜI, “ ’ €€€€‚ÿ€ €€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿcallbackListNodeKitListPart--yes,†3ï†3' € €€‚€‚ÿ]5Æ3L‡3( €j€”‚±€ƒ‚ÿExtra Information for List Parts from Above Table’1ï†3Þ‡3a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8L‡3wˆ3a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallbackCÞ‡3ºˆ3* $€2€€‚€€ ‚ÿFILE FORMAT/DEFAULT: wˆ3ôˆ3- *€€P„7|‚€€‚ÿDragger {ªtºˆ3ž‰36 <€è€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEcallbackListNULL},ôˆ3ʉ3) "€€”‘€‚€‚ÿ1 ž‰3û‰3& €€‚€‚ÿSEE ALSOP$ʉ3K3, &‚I€”‘€‚ã¤ÓÍñ€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2Dragger< û‰3‡31ED„b|h²‡3º3(4SoDrawStyle3K3º3% €€ˆˆ€‚ÿSoDrawStyle*‡3ä3# €€€‚ÿNAMEhBº3LŽ3& €„€”‘€€‚ÿSoDrawStyle - node that defines the style to use when rendering3ä3Ž3# € €€‚ÿINHERITS FROM@LŽ3 3M j€€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoDrawStyle2 Ž3>3& €€€€ ‚ÿSYNOPSISP* 3Ž3& €T€”‘€€‚ÿ#include (Ö>3ÂÀ3R r€­€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Style{SoDrawStyle::FILLEŽ3ÂÀ3K3DDraw filled regionsSoDrawStyle::LINESDraw only outlines (wireframe)SoDrawStyle::POINTSDraw points at verticesSoDrawStyle::INVISIBLEDo not draw anything at all}J!Ž3 Á3) "€B€”‘€‚A€‚ÿFields from class SoDrawStyle:¢XÂÀ3®Á3J d€°€T”A‚S~‚AãØtW选ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ãÌÒ剃‚ÿSoSFEnumstyleSoSFFloatpointSizeSoSFFloatlineWidthSoSFUShortlinePatternK" Á3ùÁ3) "€D€”‘€‚A€‚ÿMethods from class SoDrawStyle:f2®Á3_Â34 8€d€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoDrawStyle()static SoTypegetClassTypeId()NùÁ3­Â3/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:t _Â3!Ä3h ž€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)­Â3yÄ3/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ!Ä3ÞÆ3 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHyÄ3fÇ3@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÞÆ3´Ç3/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞfÇ3ëÈ3Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4´Ç3É3& €€‚A€‚ÿDESCRIPTIONçëÈ36Ê30 .€Ï€”‘€‚A€€€‚ÿThis node defines the current drawing style for all subsequent shape nodes in a scene graph. SoDrawStyle specifies how primitives should be rendered. The drawing style has no effect on picking or callback primitive generation./ É3eÊ3& €€‚A€‚ÿFIELDSE6Ê3ªÊ32 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumstyle:eÊ3äÊ3) "€"€”‘€‚A€‚ÿDrawing style.JªÊ3.Ë32 4€0€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatpointSizeP'äÊ3~Ë3) "€N€”‘€‚A€‚ÿRadius of points (for POINTS style).J.Ë3ÈË32 4€0€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatlineWidthM$~Ë3Ì3) "€H€”‘€‚A€‚ÿWidth of lines (for LINES style).MÈË3bÌ32 4€6€T”A‚S~‚AãÌÒ倉ƒ‚ÿSoSFUShortlinePatternÉŸÌ3+Í3* "€?€”‘€‚A€‚ÿStipple pattern for lines (for LINES style). Values can range from 0 (invisible) to 0xffff (solid). This specifies how dashed or dotted lines will be drawn.0 bÌ3[Í3& €€‚A€‚ÿMETHODS=+Í3˜Í3, (€"€T”A‚S~‚A€ƒ‚ÿSoDrawStyle()_6[Í3÷Í3) "€l€”‘€‚A€‚ÿCreates a drawing style node with default settings.U#˜Í3LÎ32 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*÷Í3ŸÎ3) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8LÎ3×Î3& €$€‚A€‚ÿACTION BEHAVIORb*ŸÎ39Ï38 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackActionO#×Î3ˆÏ3, (€F€”‘€‚A€€‚ÿSets the current drawing style.<9Ï3ÄÏ3& €,€‚A€‚ÿFILE FORMAT/DEFAULT8ˆÏ3 4* $€€P„7|‚€‚ÿDrawStyle {ÄÏ3 4K3p=ÄÏ3|43 6€z€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿstyleFILLEDpointSize0lineWidth0linePattern0xffff}1 4­4& €€‚€‚ÿSEE ALSO{4|4(4G ^€h€”‘€‚ãg!à‚€‰€ãX«]˜€‰€ãsBmf€‰‚ÿSoLightModel, SoPickStyle, SoShapeHints; ­4c41-.Hg i³c4•4”4SoEdgeFlag2 (4•4% €€ˆˆ€‚ÿSoEdgeFlag*c4¿4# €€€‚ÿNAME]7•44& €n€”‘€€‚ÿSoEdgeFlag - class to mark/unmark edges for beveling3¿4O4# € €€‚ÿINHERITS FROMŒ?4Û4M j€~€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoEdgeFlag2 O4 4& €€€€ ‚ÿSYNOPSISnGÛ4{4' €Ž€”‘€€‚‚ÿ#include Fields from class SoEdgeFlag:l2 4ç4: D€d€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32edgeMarkedSoMFInt32edgeUnmarkedJ!{414) "€B€”‘€‚A€‚ÿMethods from class SoEdgeFlag:e1ç4–44 8€b€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoEdgeFlag()static SoTypegetClassTypeId()N14ä4/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|–4`4n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ä4¸4/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ`4 4 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¸4¥ 4@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N 4ó 4/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¥ 4* 4Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ó 4^ 4& €€‚A€‚ÿDESCRIPTIONzQ* 4Ø 4) "€¢€”‘€‚A€‚ÿThis node defines the current marked/unmarked edges for all subsequent shapes.Ξ^ 4¦ 40 .€=€”‘€‚A€€€‚ÿThe marking/unmarking of the edges is specified using an int_32t array. The meaning of this array and its elements depends on the shape it is applied to.X*Ø 4þ 4. ,€T€T”‘€s‚A€€‚ÿSoIndexedFaceSet, SoVRMLIndexedFaceSet-⦠47@4K d€Å€”‘€‚A€€€€€€€€€€€€‚ÿFor an SoIndexedFaceSet or SoVRMLIndexedFaceSet, each element of the array is an index in the coordIndex field. The vertex corresponding to this index is the first vertex of the edge. The other vertex of the edge is the next vertex in the face according to the order of the vertices in the SoIndexedFaceSet or SoVRMLIndexedFaceSet array. If the next element in the array is -1 (end of face), the next vertex is the first vertex of the current face (as for edge (5,3) in the example below). Otherwise, the next vertex is the next element in the array (as for edge (1,2) in the example below). The same edge can appear in two different faces, but it is not necessary to mark it in both þ 47@4(4faces; only one mark per edge is needed.4 þ 4k@4) "€€”‘€‚A€‚ÿExample:‘17@4ü@4`#€bå¿ €€”‘€€‚ÿ€€”‘€ÿ*€€”€€€€‚ÿÿÿ 0 1 2 3 4 5 6 7 8 9 10 11½Dk@4¹A4y#€ˆå¿ €€”ÿ€€”‘€€‚ÿ€ €”‘€ÿB€"€”€€€€€€€€‚ÿÿÿcoordIndex =[ 0, 1, 2, -1, 3, 4, 5, -1, 2, 1, 3, -1 ]‰%ü@4BB4d#˜€Jå¿ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”‚Hƒ‚ÿÿÿedgeMarks =[ 1 =>edge (1, 2),¹A4ÃB4f#œ€6å¿ €€”‚Hÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”‚Hƒ‚ÿÿÿ 6 =>edge (5, 3) ]+BB4îB4( €€”‘€‚H€‚ÿ: ÃB4(C4- *€€T”‘€s‚H€€‚ÿSoFaceSetÝ¥îB4E48 >€K€”‘€‚H€€€€€€‚ÿFor an SoFaceSet, the marking is a little different from the SoIndexedFaceSet. Each element is an index directly in the coordinate array. This corresponds to the first vertex of the edge; the other is the next vertex in the same face. As each face description in the coordinate array is cyclic, the other vertex is either the next vertex in the array, or the first vertex of the face if it is the end of the face.3 (C48E4( €€”‘€‚H€‚ÿExample:7E4ÇE4X#€€nîÝ €€”‘€€‚ÿ€ €”‘€ÿ€"€”‚Hƒƒ‚ÿÿÿcoordinates =[{0.0, 1.0, 1.0},// 0 start face 1’ 8E4YF4r#´€@îÝ €€”‚Hÿ€€”‘€€‚ÿ€€”‘€ÿ0€ €”‚H€€ƒ€€‚ÿÿÿ{0.0, 0.0, 1.0},// 1ŠÇE4ãF4l#¨€<îÝ €€”‚Hÿ€€”‘€€‚ÿ€€”‘€ÿ$€ €”‚H€€ƒ‚ÿÿÿ{1.0, 0.0, 1.0},// 2,YF4rG4c#–€XîÝ €€”‚Hÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”‚ÿÿÿ- - - - - - - - - - - - - - - - - - -–+ãF4H4k#¦€VîÝ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ&€ €”‚H€€ƒƒ‚ÿÿÿ{0.0, 1.0, 1.0},// 3start face 2‚rG4ŠH4f#œ€8îÝ €€”‚Hÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”‚Hƒ‚ÿÿÿ{0.0, 0.0, 1.0},// 4“!H4I4r#´€BîÝ €€”‚Hÿ€€”‘€€‚ÿ€€”‘€ÿ0€ €”‚H€€ƒ€€‚ÿÿÿ{1.0, 0.0, 0.0} ]// 5ŠH4œI4c#–€8îÝ €€”‚Hÿ€€”‘€€‚ÿ€"€”‘€ÿ€$€”‚ÿÿÿnumVertices =[ 3, 3 ]¡@I4=J4a#’€€îÝ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”‚ÿÿÿedgeMarks =[ 1=> edge ({0.0, 0.0, 1.0}, {1.0, 0.0, 1.0}),˜7œI4ÕJ4a#’€nîÝ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”‚ÿÿÿ 5 => edge ({1.0, 0.0, 0.0}, {0.0, 1.0, 1.0}) ])=J4þJ4& €€”‘€€‚ÿAÕJ4?K4+ &€,€T”‘€s€€‚ÿSoTriangleStripSetÀrþJ4ÿL4N j€å€”‘€€€€€€‚€€‚€€€€€€‚‚ÿFor an SoTriangleStripSet, marking an edge is very different from the previous two nodes. If m is a mark, the edge corresponding is computed as follows:- the first vertex is int(m/2),- the opposite vertex in the edge is int(m/2) + m%2 + 1; if (m%2) = 0, this is the next vertex, otherwise this is the vertex just after, in the coordinate array.Example:œ9?K4›M4c#–€rè €€”‘€€‚ÿ€ €”‘€ÿ0€"€”‚H€€ƒ€€‚ÿÿÿcoordinates =[ {0.0, 1.0, 1.0},// 0 = int(1/2)‚ÿL4N4f#œ€8è €€”‚Hÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”‚Hƒ‚ÿÿÿ{0.0, 0.0, 1.0},// 1¡5›M4¾N4l#¨€jè €€”‚Hÿ€€”‘€€‚ÿ€€”‘€ÿ$€ €”‚H€€ƒ‚ÿÿÿ{1.0, 0.0, 1.0},// 2 = int(1/2) + 1 + (1%2)‚N4@O4f#œ€8è €€”‚Hÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”‚Hƒ‚ÿÿÿ{1.0, 1.0, 1.0},// 3+¾N4ÝO4r#´€Vè €€”‚Hÿ€€”‘€€‚ÿ€€”‘€ÿ0€ €”‚H€€ƒ€€‚ÿÿÿ{0.0, 1.0, 1.0},// 4 = int(8/2)¢6@O4‹€4l#¨€lè ÝO4‹€4(4€€”‚Hÿ€€”‘€€‚ÿ€€”‘€ÿ$€ €”‚H€€ƒ‚ÿÿÿ{1.0, 0.0, 0.0} ]// 5 = int(8/2) + 1 + (8%2)£@ÝO4.4c#–€€è €€”‚Hÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”‚ÿÿÿedgeMarks =[ 1=> edge({0.0, 1.0, 1.0}, {1.0, 0.0, 1.0}),˜7‹€4Æ4a#’€nè €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”‚ÿÿÿ 8 => edge({0.0, 1.0, 1.0}, {1.0, 0.0, 0.0}) ]).4ï4& €€”‘€€‚ÿHÆ47‚4+ &€:€T”‘€s€€‚ÿSoIndexedTriangleStripSetÎ’ï4ƒ4< F€%€”‘€€€€€€€€€‚ÿAn SoIndexedTriangleStripSet works like an SoTriangleStripSet, except that the coordIndex array is used instead of the coordinate array.97‚4>ƒ4+ &€€T”‘€s€€‚ÿSoQuadMeshxƒ4¶„4f š€%€”‘€€€€€€€€€€€€€€€‚€€€€€‚€€‚‚ÿFor an SoQuadMesh, the principle is the same as for SoTriangleStripSet. If m is the mark, then the corresponding edge is (m/2, n) where n is:- the vertex just at the right of the vertex m/2 if (m%2) = 0,- the vertex just below if (m%2) = 1.Example:¤J>ƒ4Z…4Z#„€”öæ €€”‘€€‚ÿ€"€”‘€ÿ€$€”€€‚ÿÿÿcoordinates = [ {0.0, 1.0, 1.0}, {0.0, 2.0, 2.0}, {0.0, 3.0, 3.0},¢;¶„4ü…4g#ž€vöæ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”€€‚ÿÿÿ{1.0, 0.0, 1.0}, {2.0, 0.0, 2.0}, {3.0, 0.0, 3.0},«>Z…4§†4m#ª€|öæ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ*€ €”€€€€‚ÿÿÿ{0.0, 1.0, 0.0}, {0.0, 2.0, 0.0}, {0.0, 3.0, 0.0} ]¢Aü…4I‡4a#’€‚öæ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”‚ÿÿÿedgeMarks =[ 1 => edge({0.0, 1.0, 1.0}, {1.0, 0.0, 1.0}),–5§†4߇4a#’€jöæ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€ €”‚ÿÿÿ14 => edge({0.0, 2.0, 0.0}, {0.0, 3.0, 0.0}) ])I‡4ˆ4& €€”‘€€‚ÿ@߇4Hˆ4+ &€*€T”‘€s€€‚ÿSoCube, SoVRMLBox46‰4D V€W€”‘€€€€€€€‚€†"€*‚‚ÿFor an SoCube or an SoVRMLBox, edges are identified as shown below:For each value between [0,11] in the flag array, the corresponding edge is marked/unmarked.AHˆ4w‰4+ &€,€T”‘€s€€‚ÿSoCone, SoVRMLConeÊ6‰4wŠ46 :€•€”‘€€€€€€€‚ÿFor an SoCone or an SoVRMLCone, only the edges of the base can be marked/unmarked. The flag array must contain at least one value greater than or equal to 0 to mark/unmark the edges of the base.Iw‰4ÀŠ4+ &€<€T”‘€s€€‚ÿSoCylinder, SoVRMLCylinder/ôwŠ4ï‹4; D€é€”‘€€€€€€€‚€‚‚ÿFor an SoCylinder or an SoVRMLCylinder, only two values in the flag array are significant:- array index 0: mark/unmark the edges around the bottom of the cylinder,- array index 1: mark/unmark the edges around the top of the cylinder., ÀŠ4Œ4# €€€‚ÿFIELDSl2ï‹4‡Œ4: D€d€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32edgeMarkedSoMFInt32edgeUnmarked[2Œ4âŒ4) "€d€”‘€‚A€‚ÿThese are the fields for marked/unmarked edges.0 ‡Œ44& €€‚A€‚ÿMETHODS<âŒ4N4, (€ €T”A‚S~‚A€ƒ‚ÿSoEdgeFlag()84†4) "€€”‘€‚A€‚ÿConstructor.U#N4Û42 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*†4.Ž4) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<Û4jŽ4& €,€‚A€‚ÿFILE FORMAT/DEFAULT7 .Ž4¡Ž4* $€€P„7|‚€‚ÿEdgeFlag {R#jŽ4óŽ4/ .€F€P„|‚€ƒ‚ƒ‚‚‚ÿedgeMarked-1edgeUnmarked-1}1 ¡Ž4$4& €€‚€‚ÿSEE ALSOp5óŽ4”4; F€j€”‘€‚ãHê\F€‰ãGb-o‰ãP!ö‰‚ÿSoBevelAction, SoBevelProperty, SoVertexFlag> $4Ò41=|hÜj´Ò4À4!5SoElapsedTime5”4À4% € €ˆˆ€‚ÿSoElapseÒ4À4”4dTime*Ò4=À4# €€€‚ÿNAMEW1À4”À4& €b€”‘€€‚ÿSoElapsedTime - basic controllable time source3=À4ÇÀ4# € €€‚ÿINHERITS FROM‘D”À4XÁ4M j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoElapsedTime2 ÇÀ4ŠÁ4& €€€€ ‚ÿSYNOPSISvOXÁ4Â4' €ž€”‘€€‚‚ÿ#include Inputs from class SoElapsedTime:«YŠÁ4«Â4R t€²€T”A‚S~‚Aãøi选ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ãU×S鉃‚ã%牃‚ÿSoSFTimetimeInSoSFFloatspeedSoSFBoolonSoSFBoolpauseSoSFTriggerresetM$Â4øÂ4) "€H€”‘€‚A€‚ÿOutputs from class SoElapsedTime:I«Â4AÃ42 4€.€T”A‚S~‚A€ãøi鉃‚ÿ(SoSFTime)timeOutM$øÂ4ŽÃ4) "€H€”‘€‚A€‚ÿMethods from class SoElapsedTime:?AÃ4ÍÃ4, (€&€T”A‚S~‚A€ƒ‚ÿSoElapsedTime()P!ŽÃ4Ä4/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}ÍÃ4Æ4ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)Ä4uÆ4/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÆ4ÚÈ4 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHuÆ4bÉ4@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÚÈ4°É4/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞbÉ4çÊ4Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4°É4Ë4& €€‚A€‚ÿDESCRIPTION!ëçÊ4<Ì46 :€×€”‘€‚A€€€€€‚ÿThis engine functions as a stopwatch; it outputs the time that has elapsed since it started running. By default, the timeIn input is connected to the realTime global field. It can, however, be connected to any other time source.i3Ë4¥Í46 :€g€”‘€‚A€€€€€‚ÿThe ouput from the engine is the time that has elapsed since it started running, or since the reset input was last triggered. You can affect the speed of the output time by setting the speed scale factor. A value greater than 1.0 will speed up the output, and a value less than 1.0 will slow it down.y=<Ì4Ï4< F€{€”‘€‚A€€€€€€€‚ÿIf you pause the engine, by setting the pause input to TRUE, it stops updating the timeOut output. When you turn off the pause, it jumps to its current position without losing time. Alternatively, if you want to stop the engine for a while, and then restart it from where it left off, use the on input field./ ¥Í4MÏ4& €€‚A€‚ÿINPUTSFÏ4“Ï42 4€(€T”A‚S~‚Aãøi选ƒ‚ÿSoSFTimetimeIn9MÏ4ÌÏ4) "€ €”‘€‚A€‚ÿRunning time.F“Ï452 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿÌÏ45”4SoSFFloatspeedBÌÏ4`5) "€2€”‘€‚A€‚ÿScale factor for time.B5¢52 4€ €T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolonQ(`5ó5) "€P€”‘€‚A€‚ÿTRUE to start running, FALSE to stop.E¢5852 4€&€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolpauseV-ó5Ž5) "€Z€”‘€‚A€‚ÿTRUE to freeze, FALSE to continue running.H85Ö52 4€,€T”A‚S~‚Aã%瀉ƒ‚ÿSoSFTriggerreset@Ž55) "€.€”‘€‚A€‚ÿReset the base time.0 Ö5F5& €€‚A€‚ÿOUTPUTSI552 4€.€T”A‚S~‚A€ãøi鉃‚ÿ(SoSFTime)timeOutW.F5æ5) "€\€”‘€‚A€‚ÿTime elapsed, modified by the speed factor.0 55& €€‚A€‚ÿMETHODS?æ5U5, (€&€T”A‚S~‚A€ƒ‚ÿSoElapsedTime()855) "€€”‘€‚A€‚ÿConstructor.<U5É5& €,€‚A€‚ÿFILE FORMAT/DEFAULT:55* $€ €P„7|‚€‚ÿElapsedTime {q=É5t54 8€z€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚‚ÿtimeInspeed1onTRUEpauseFALSEreset}1 5¥5& €€‚€‚ÿSEE ALSO|5t5!5G ^€j€”‘€‚ã@)€‰€ãðO®”€‰€ãë\¼N€‰‚ÿSoTimeCounter, SoOneShot, SoEngineOutput9¥5Z51O iŽ†jµZ5Š5aL5SoEngine0 !5Š5% €€ˆˆ€‚ÿSoEngine*Z5´5# €€€‚ÿNAMEN(Š55& €P€”‘€€‚ÿSoEngine - base class for all engines3´555# € €€‚ÿINHERITS FROMq05¦5A R€`€”‘€ã}9€‰€ã¿\%†€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine2 55Ø5& €€€€ ‚ÿSYNOPSISmF¦5E5' €Œ€”‘€€‚‚ÿ#include Methods from class SoEngine:}Ø5E 5ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)E5 5/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØE 5 5 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH 5Š 5@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N 5Ø 5/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞŠ 55Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Ø 5C5& €€‚A€‚ÿDESCRIPTION;5~5- (€€”‘€‚A€€‚ÿSoEngine is the abstract base class for all engines. Engines are objects used for animation and behavior. They are lightweight objects that are connected between nodes, the clock, and other engines to form interesting behaviorial objects (e.g., a spinning windmill).ÛC5A5* "€·€”‘€‚A€‚ÿEngines are used to animate parts of a scene and/or to constrain one part of a scene in~5A5!5 relation to some other part of the scene. An engine receives a number of input values, performs some operation on them, and then copies the results into one or more output fields. Both the inputs and the outputs can be connected to other fields or engines in the scene graph. When an engine's output values change, those new values are sent to any fields or engines connected to them.0 ~5¿A5& €€‚A€‚ÿMETHODSU#A5B52 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()_6¿A5sB5) "€l€”‘€‚A€‚ÿReturns the type identifier for the SoEngine class.m;B5àB52 4€v€T”A‚S~‚A€ƒã%Y7‰‚ÿvirtual intgetOutputs(SoEngineOutputList &list) constݧsB5½C56 :€O€”‘€‚A€€€€€‚ÿReturns a list of outputs in this engine. Use getOutputName to get the names of the outputs, and use SoEngineOutput::getConnectionType to determine their types.yAàB56D58 @€‚€T”A‚S~‚Aãë\¼N€‰ƒãúß~6‰‚ÿSoEngineOutput *getOutput(const SbName &outputName) const“j½C5ÉD5) "€Ô€”‘€‚A€‚ÿReturns a pointer to the engine output with the given name. If no such output exists, NULL is returned.”U6D5]E5? N€ª€T”A‚S~‚A㑶p6€‰ƒãë\¼N‰ãúß~6‰‚ÿSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) const¼’ÉD5F5* "€%€”‘€‚A€‚ÿReturns (in outputName) the name of the engine output (output). Returns FALSE if the engine output is not contained within the engine instance.N]E5gF52 4€8€T”A‚S~‚Aãú­Np€‰ƒ‚ÿSoEngine *copy() const³‰F5G5* "€€”‘€‚A€‚ÿCreates and returns an exact copy of the engine. All connections to inputs are copied as is (without copying what's at the other end).¾wgF5ØG5G ^€î€T”A‚S~‚A€ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)FG5H5) "€:€”‘€‚A€‚ÿLook up engine(s) by name.<ØG5ZH5& €,€‚A€‚ÿFILE FORMAT/DEFAULT“jH5íH5) "€Ô€”‘€‚A€‚ÿThis is an abstract class. See the reference page of a derived class for the format and default values.1 ZH5I5& €€‚A€‚ÿSEE ALSOCóíH5aL5P n‚瀔‘€‚Aã}žb뀉€ã"r™€‰€ãÓßÒz€‰€ãtÌß$€‰€ã•œŒð€‰€ãÚ8£€‰€ã9£€‰€ã09£€‰€ãKS€‰€ãÕŒy$€‰€ãìEJ÷€‰€ã~\ü€‰€ã‡;…E€‰€ã[îD€‰€ã†îD€‰€ã±îD€‰€ãIR~Ó€‰€ãŽ9€‰€ã}9;怉€ãXÖ|™€‰€ãðO®”€‰€ãJ –€‰€ã@)€‰€ã{ul¢€‰€ãœÑè1€‰‚ÿSoBoolOperation, SoCalculator, SoComposeMatrix, SoComposeRotation, SoComposeRotationFromTo, SoComposeVec2f, SoComposeVec3f, SoComposeVec4f, SoComputeBoundingBox, SoConcatenate, SoCounter, SoDecomposeMatrix, SoDecomposeRotation, SoDecomposeVec2f, SoDecomposeVec3f, SoDecomposeVec4f, SoElapsedTime, SoGate, SoInterpolate, SoOnOff, SoOneShot, SoSelectOne, SoTimeCounter, SoTransformVec3f, SoTriggerAny= I5žL51¼ Üj8k¶žL5ÒL5iˆ5SoEngineList4aL5ÒL5% €€ˆˆ€‚ÿSoEngineList*žL5üL5# €€€‚ÿNAME_9ÒL5[M5& €r€”‘€€‚ÿSoEngineList - maintains a list of pointers to engines3üL5ŽM5# € €€‚ÿINHERITS FROMp/[M5þM5A R€^€”‘€ãK2Å'€‰€ã/ x‘€‰€€€‚ÿSbPList > SoBaseList > SoEngineList2 ŽM50N5& €€€€ ‚ÿSYNOPSIShAþM5˜N5' €‚€”‘€€‚‚ÿ#include Methods from class SoEngineList:4Ý0N5ÌO5W |€»€T”A‚S~‚A€ƒ‚ƒ‚ƒã„Ü剂ƒ‚ƒãú­Np‰‚ãú­Np‰ƒ‚ã„Ü剃ã„Ü剂ÿSoEngineList()SoEngineList(int size)SoEngineList(const SoEngineList &l)~SoEngineList()voidappend(SoEngine *engine)SoEngine *operator [](int i) constSoEngineList &operator =(const SoEngineList &l)R#˜N5*€5/ .€F€”‘€‚A€ã/ x‘‰‚ÿMethÌO5*€5aL5ods from class SoBaseList:¾ÌO595Q p€}€T”A‚S~‚A€ƒã}9‰‚ƒ‚ƒ‚ƒã/ x‘‰‚ƒã}9‰‚ƒã‘¶p6‰‚ÿvoidinsert(SoBase *ptr,int addBefore)voidremove(int which)voidtruncate(int start)voidcopy(const SoBaseList &l)voidset(int i,SoBase *ptr)voidaddReferences(SbBool flag)O *€5ˆ5/ .€@€”‘€‚A€ãK2Å'‰‚ÿMethods from class SbPList:ÍŽ95U‚5? L€€T”A‚S~‚A€ƒ‚ƒ‚ƒãK2Å'‰‚ƒãK2Å'‰‚ÿintfind(const void *ptr) constintgetLength() constintoperator ==(const SbPList &pl) constintoperator !=(const SbPList &pl) const4ˆ5‰‚5& €€‚A€‚ÿDESCRIPTIONסU‚5`ƒ56 :€C€”‘€‚A€€€€€‚ÿThis subclass of SoBaseList holds lists of pointers to SoEngines. It updates reference counts to engines in the list whenever adding or removing pointers.0 ‰‚5ƒ5& €€‚A€‚ÿMETHODS>`ƒ5΃5, (€$€T”A‚S~‚A€ƒ‚ÿSoEngineList()8ƒ5„5) "€€”‘€‚A€‚ÿConstructor.F΃5L„5, (€4€T”A‚S~‚A€ƒ‚ÿSoEngineList(int size)e<„5±„5) "€x€”‘€‚A€‚ÿConstructor that pre-allocates storage for size pointers.[)L„5 …52 4€R€T”A‚S~‚A€ƒã„Ü剂ÿSoEngineList(const SoEngineList &l)a8±„5m…5) "€p€”‘€‚A€‚ÿConstructor that copies the contents of another list.? …5¬…5, (€&€T”A‚S~‚A€ƒ‚ÿ~SoEngineList()7m…5ã…5) "€€”‘€‚A€‚ÿDestructor.T"¬…57†52 4€D€T”A‚S~‚A€ƒãú­Np‰‚ÿvoidappend(SoEngine *engine)R)ã…5‰†5) "€R€”‘€‚A€‚ÿAdds an engine to the end of the list.Z(7†5ã†52 4€P€T”A‚S~‚Aãú­Np€‰ƒ‚ÿSoEngine *operator [](int i) constJ!‰†5-‡5) "€B€”‘€‚A€‚ÿAccesses an element of a list.o7ã†5œ‡58 @€n€T”A‚S~‚Aã„Ü倉ƒã„Ü剂ÿSoEngineList &operator =(const SoEngineList &l)`7-‡5ü‡5) "€n€”‘€‚A€‚ÿCopies a list, keeping all reference counts correct.1 œ‡5-ˆ5& €€‚A€‚ÿSEE ALSO< ü‡5iˆ5/ .€€”‘€‚Aãú­Np€‰‚ÿSoEngine?-ˆ5¨ˆ51( Ž†jfk·¨ˆ5Þˆ5ÜÂ5SoEngineOutput6iˆ5Þˆ5% €"€ˆˆ€‚ÿSoEngineOutput*¨ˆ5‰5# €€€‚ÿNAMEV0Þˆ5^‰5& €`€”‘€€‚ÿSoEngineOutput - class for all engine outputs3‰5‘‰5# € €€‚ÿINHERITS FROM;^‰5̉5) "€$€”‘€€€‚ÿSoEngineOutput2 ‘‰5þ‰5& €€€€ ‚ÿSYNOPSISsL̉5qŠ5' €˜€”‘€€‚‚ÿ#include Methods from class SoEngineOutput:±þ‰5u‹5S t€c€T”A‚S~‚AãB-9€‰ƒ‚ƒãÐPWÙ‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãú­Np‰ƒ‚ÿSoTypegetConnectionType() constintgetForwardConnections(SoFieldList &list) constvoidenable(SbBool flag)SbBoolisEnabled() constSoEngine*getContainer() const4qŠ5©‹5& €€‚A€‚ÿDESCRIPTIONä±u‹5Œ53 4€c€”‘€‚A€€€€‚ÿSoEngineOuput is the class for all engine output fields. There is no public constructor routine for this class. Only the engine classes create instances of SoEngineOutput.ñÁ©‹5~50 .€ƒ€”‘€‚A€€€‚ÿEach engine creates one or more engine outputs. The type of the output is documented in the engine reference pages. There is also an SoEngineOutput method for querying the connection type.œsŒ5Ž5) "€æ€”‘€‚A€‚ÿThe application can at any time enable or disable the engine outputs. By default the engine outputs are enabled.0 ~5JŽ5& €€‚A€‚ÿMETHODSW%Ž5¡Ž52 4€J€T”A‚S~‚AãB-9€‰ƒ‚ÿSoTypegetConnectionType() consta8JŽ55) "€p€”‘€‚A€‚ÿReturns the type of field this output can connect to.i7¡Ž5k52 4€n€T”A‚S~‚A€ƒãÐPWÙ‰‚ÿintgetForwardConnections(SoFieldList &list) const˜o5À5) "€Þ€”‘€‚A€‚ÿReturns the number of fields this output is writing to, and adds pointers to those fields to the given listk5À5iˆ5.Ok5^À52 4€:€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidenable(SbBool flag)Ê À5(Á5* "€A€”‘€‚A€‚ÿEnables or disables all connections from this output. If the connections are disabled, values will not be output along them. By default, outputs are enabled.O^À5wÁ52 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisEnabled() const]4(Á5ÔÁ5) "€h€”‘€‚A€‚ÿReturns TRUE if this output is currently enabled.U#wÁ5)Â52 4€F€T”A‚S~‚Aãú­Np€‰ƒ‚ÿSoEngine*getContainer() constFÔÁ5oÂ5) "€:€”‘€‚A€‚ÿReturns containing engine.1 )Â5 Â5& €€‚A€‚ÿSEE ALSO< oÂ5ÜÂ5/ .€€”‘€‚Aãú­Np€‰‚ÿSoEngineC Â5Ã51g 8kAˆk¸Ã5YÃ5Ï5SoEngineOutputList:ÜÂ5YÃ5% €*€ˆˆ€‚ÿSoEngineOutputList*Ã5ƒÃ5# €€€‚ÿNAMElFYÃ5ïÃ5& €Œ€”‘€€‚ÿSoEngineOutputList - maintains a list of pointers to engine outputs3ƒÃ5"Ä5# € €€‚ÿINHERITS FROMY$ïÃ5{Ä55 :€H€”‘€ãK2Å'€‰€€€‚ÿSbPList > SoEngineOutputList2 "Ä5­Ä5& €€€€ ‚ÿSYNOPSISnG{Ä5Å5' €Ž€”‘€€‚‚ÿ#include Methods from class SoEngineOutputList:žC­Ä5¹Æ5[ „€‡€T”A‚S~‚A€ƒ‚ƒ‚ƒã%Y7‰‚ƒ‚ƒãë\¼N‰‚ƒãë\¼N‰‚ƒãë\¼N‰‚ãë\¼N‰ƒ‚ÿSoEngineOutputList()SoEngineOutputList(int size)SoEngineOutputList(const SoEngineOutputList &l)~SoEngineOutputList()voidappend(SoEngineOutput *engineOutput)voidinsert(SoEngineOutput *engineOutput,int addBefore)voidset(int i,SoEngineOutput *engineOutput)SoEngineOutput *operator [](int i) constO Å5Ç5/ .€@€”‘€‚A€ãK2Å'‰‚ÿMethods from class SbPList:b ¹Æ5jÈ5Y €€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒãK2Å'‰‚ãK2Å'‰ƒãK2Å'‰‚ƒãK2Å'‰‚ƒãK2Å'‰‚ÿintfind(const void *ptr) constvoidremove(int which)intgetLength() constvoidtruncate(int start)voidcopy(const SbPList &pl)SbPList &operator =(const SbPList &pl)intoperator ==(const SbPList &pl) constintoperator !=(const SbPList &pl) const4Ç5žÈ5& €€‚A€‚ÿDESCRIPTIONá«jÈ5É56 :€W€”‘€‚A€€€€€‚ÿThis subclass of SbPList holds lists of pointers to SoEngineOutputs. It updates reference counts to engine outputs in the list whenever adding or removing pointers.0 žÈ5¯É5& €€‚A€‚ÿMETHODSDÉ5óÉ5, (€0€T”A‚S~‚A€ƒ‚ÿSoEngineOutputList()8¯É5+Ê5) "€€”‘€‚A€‚ÿConstructor.L óÉ5wÊ5, (€@€T”A‚S~‚A€ƒ‚ÿSoEngineOutputList(int size)e<+Ê5ÜÊ5) "€x€”‘€‚A€‚ÿConstructor that pre-allocates storage for size pointers.g5wÊ5CË52 4€j€T”A‚S~‚A€ƒã%Y7‰‚ÿSoEngineOutputList(const SoEngineOutputList &l)a8ÜÊ5¤Ë5) "€p€”‘€‚A€‚ÿConstructor that copies the contents of another list.ECË5éË5, (€2€T”A‚S~‚A€ƒ‚ÿ~SoEngineOutputList()7¤Ë5 Ì5) "€€”‘€‚A€‚ÿDestructor.`.éË5€Ì52 4€\€T”A‚S~‚A€ƒãë\¼N‰‚ÿvoidappend(SoEngineOutput *engineOutput)Y0 Ì5ÙÌ5) "€`€”‘€‚A€‚ÿAdds an engine output to the end of the list.p=€Ì5IÍ53 6€z€T”A‚S~‚A€ƒãë\¼N‰‚ÿvoidinsert(SoEngineOutput *engineOutput,int addBefore)~UÙÌ5ÇÍ5) "€ª€”‘€‚A€‚ÿInserts the given engine output in the list before the element of the given index.e2IÍ5,Î53 6€d€T”A‚S~‚A€ƒãë\¼N‰‚ÿvoidset(int i,SoEngineOutput *engineOutput)FÇÍ5rÎ5) "€:€”‘€‚A€‚ÿSets an element of a list.`.,Î5ÒÎ52 4€\€T”A‚S~‚Aãë\¼N€‰ƒ‚ÿSoEngineOutput *operator [](int i) constJ!rÎ5Ï5) "€B€”‘€‚A€‚ÿAccesses an element of a list.1 ÒÎ5MÏ5& €€‚A€‚ÿSEE ALSOBÏ5Ï5/ .€&€”‘€‚Aãë\¼N€‰‚ÿSoEngineOutput> MÏ5ÍÏ51‘fk|„l¹ÍÏ56zH6SoEnvironment5Ï56% € €ˆˆ€‚ÿSoEnvironmentÍÏ56Ï5*ÍÏ586# €€€‚ÿNAMEP*6ˆ6& €T€”‘€€‚ÿSoEnvironment - global environment node386»6# € €€‚ÿINHERITS FROMBˆ6J6M j€„€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoEnvironment2 »6|6& €€€€ ‚ÿSYNOPSISR,J6Î6& €X€”‘€€‚ÿ#include 9ç|66R r€Ï€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum FogType{SoEnvironment::NONENo fogSoEnvironment::HAZELinear increase in opacity with distanceSoEnvironment::FOGExponential increase in opacitySoEnvironment::SMOKEExponential squared increase in opacity}L#Î6S6) "€F€”‘€‚A€‚ÿFields from class SoEnvironment:í’6@6[ „€%€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ã”5‰ƒ‚ãØtW鉃‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ÿSoSFFloatambientIntensitySoSFColorambientColorSoSFVec3fattenuationSoSFEnumfogTypeSoSFColorfogColorSoSFFloatfogVisibilityM$S66) "€H€”‘€‚A€‚ÿMethods from class SoEnvironment:h4@6õ64 8€h€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoEnvironment()static SoTypegetClassTypeId()N6C6/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|õ6¿6n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)C66/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ¿6| 6 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH6 6@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N| 6R 6/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ 6‰ 6Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4R 6½ 6& €€‚A€‚ÿDESCRIPTION•l‰ 6R 6) "€Ø€”‘€‚A€‚ÿThis node describes global environmental attributes such as ambient lighting, light attenuation, and fog.·‡½ 6 60 .€€”‘€‚A€€€‚ÿAmbient lighting is the amount of extra light impinging on each surface point when the lighting model is Phong (see SoLightModel).s=R 6|66 :€{€”‘€‚A€€€€€‚ÿLight attenuation affects all subsequent lights in a scene (see SoLight). It is a quadratic function of distance from a light source to a surface point. The three coefficients are specified in the attenuation field. Attenuation works only for light sources with a fixed location, such as point and spot lights.³w 6;@6< F€ï€”‘€‚A€€€€€€€‚ÿFog has one of four types, each of which blends each surface point with the specified fog color. Each type interprets the visibility field to be the distance at which fog totally obscures objects. A visibility value of 0 (the default) causes the SoEnvironment node to set up fog so that the visibility is the distance to |6;@6Ï5the far clipping plane of the current camera.´„|6ï@60 .€ €”‘€‚A€€€‚ÿNote that this node has effect only during rendering, and that it does not inherit field values from other SoEnvironment nodes./ ;@6A6& €€‚A€‚ÿFIELDSr8ï@6A6: D€p€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ÿSoSFFloatambientIntensitySoSFColorambientColormDA6ýA6) "€ˆ€”‘€‚A€‚ÿIntensity and RGB color of ambient lighting (for Phong lighting).LA6IB62 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fattenuation¾”ýA6C6* "€)€”‘€‚A€‚ÿSquared, linear, and constant light attenuation coefficients (in that order) with respect to distance of light from surface (for Phong lighting).†DIB6C6B T€ˆ€T”A‚S~‚AãØtW选ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ÿSoSFEnumfogTypeSoSFColorfogColorSoSFFloatfogVisibilityœsC6)D6) "€æ€”‘€‚A€‚ÿType of fog, color of fog, and visibility distance, which is the distance at which fog totally obscures objects.0 C6YD6& €€‚A€‚ÿMETHODS?)D6˜D6, (€&€T”A‚S~‚A€ƒ‚ÿSoEnvironment()^5YD6öD6) "€j€”‘€‚A€‚ÿCreates an environment node with default settings.U#˜D6KE62 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*öD6žE6) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8KE6ÖE6& €$€‚A€‚ÿACTION BEHAVIORHžE6F62 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionºÖE6ØF6- (€€”‘€‚A€€‚ÿSets the current environment parameters to those specified with this node. Successive geometries will be rendered using this environment.<F6G6& €,€‚A€‚ÿFILE FORMAT/DEFAULT:ØF6NG6* $€ €P„7|‚€‚ÿEnvironment {¢kG6ðG67 >€Ö€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿambientIntensity0.2ambientColor1 1 1attenuation0 0 1fogTypeNONEfogColor1 1 1fogVisibility0}1 NG6!H6& €€‚€‚ÿSEE ALSOYðG6zH6; F€<€”‘€‚ã Ú˜€‰€ãg!à‚€‰‚ÿSoLight, SoLightModel8!H6²H61Aˆkmº²H6áH6؇6SoError/ zH6áH6% €€ˆˆ€‚ÿSoError*²H6 I6# €€€‚ÿNAMEL&áH6WI6& €L€”‘€€‚ÿSoError - error handling base class3 I6ŠI6# € €€‚ÿINHERITS FROM4 WI6¾I6) "€€”‘€€€‚ÿSoError2 ŠI6ðI6& €€€€ ‚ÿSYNOPSISM'¾I6=J6& €N€”‘€€‚ÿ#include p=ðI6­J63 6€z€T”A‚S~‚A€ƒãôx—‰‚ÿtypedef voidSoErrorCB(const SoError *error,void *data)G=J6ôJ6) "€<€”‘€‚A€‚ÿMethods from class SoError:p­J6dL6X ~€1€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ãXíʉƒ‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿstatic voidsetHandlerCallback(SoErrorCB *cb,void *data)static SoErrorCB *getHandlerCallback()static void *getHandlerData()const SbString &getDebugString() conststatic SoTypegetClassTypeId()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4ôJ6˜L6& €€‚A€‚ÿDESCRIPTION“fdL6+O6- (€Í€”‘€‚A€€‚ÿSoError is the base class for all error classes, which provide error handling for applications. There are two facets to errors: posting and handling. An error is posted when some bad condition occurs. Posting is done primarily by the Open Inventor library itself, but extenders can post their own errors. Posting an error creates an instance of the appropriate error class (or subclass) and then passes it to the active error handler. The default handler just prints an appropriate message to stderr. Applications can override this behavior by supplying a different handler (by specifying a callback function).켘L6#60 .€y€”‘€‚A€€€‚ÿEach subclass of SoError supports the setHandlerCallback() method, which is used to set the callback function to handle errors. The callback function for a specif+O6#6zH6ic error class is always used in preference to that of any base classes when handling errors. The error instance passed to a callback is deleted immediately after the callback is called; an application that wishes to save information from the instance has to copy it out first.Ê”+O6í‚66 :€)€”‘€‚A€€€€€‚ÿEach error class contains a run-time class type id (SoType) that can be used to determine the type of an instance. The base class defines a character string that represents a detailed error message that is printed by the default handler. All handlers are called by the SoError::handleError() method. When debugging, you can set a breakpoint on this method to stop right before an error is handled.0 #6ƒ6& €€‚A€‚ÿMETHODSµƒí‚6Òƒ62 2€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿstatic voidsetHandlerCallback(SoErrorCB *cb,void *data)static SoErrorCB *getHandlerCallback()static void *getHandlerData()d5ƒ66„6/ .€j€”‘€‚A€€€‚ÿSets/returns handler callback for SoError class.^,Òƒ6”„62 4€X€T”A‚S~‚A€ãXíʉƒ‚ÿconst SbString &getDebugString() constqH6„6…6) "€€”‘€‚A€‚ÿReturns debug string containing full error information from instance.U#”„6Z…62 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()V-…6°…6) "€Z€”‘€‚A€‚ÿReturns type identifier for SoError class.W%Z…6†62 4€J€T”A‚S~‚A€ãB-9‰ƒ‚ÿvirtual SoTypegetTypeId() constW.°…6^†6) "€\€”‘€‚A€‚ÿReturns type identifier for error instance.a)†6¿†68 @€R€T”A‚S~‚A㑶p6€‰ƒãB-9‰‚ÿSbBoolisOfType(SoType type) constlC^†6+‡6) "€†€”‘€‚A€‚ÿReturns TRUE if instance is of given type or is derived from it.1 ¿†6\‡6& €€‚A€‚ÿSEE ALSO|5+‡6؇6G ^€j€”‘€‚Aã5OZ”€‰€ã£ì,€‰€ãʉ þ€‰‚ÿSoDebugError, SoMemoryError, SoReadError8\‡6ˆ61|„l]†m»ˆ6?ˆ6¨Ê6SoEvent/ ؇6?ˆ6% €€ˆˆ€‚ÿSoEvent*ˆ6iˆ6# €€€‚ÿNAMEL&?ˆ6µˆ6& €L€”‘€€‚ÿSoEvent - base class for all events3iˆ6èˆ6# € €€‚ÿINHERITS FROM4 µˆ6‰6) "€€”‘€€€‚ÿSoEvent2 èˆ6N‰6& €€€€ ‚ÿSYNOPSISjC‰6¸‰6' €†€”‘€€‚‚ÿ#include Methods from class SoEvent:%œN‰6Ý‹6‰ à€9€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒã4a†6‰‚ã4a†6‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚㊃õ(‰ƒãñf‘¸‰‚ã}ƒõ(‰ƒãñf‘¸‰‚ÿSoEvent()virtual~SoEvent()virtual SoTypegetTypeId() conststatic SoTypegetClassTypeId()SbBoolisOfType(SoType type) constvoidsetTime(SbTime t)SbTimegetTime() constvoidsetPosition(const SbVec2s &p)const SbVec2s &getPosition() constconst SbVec2s &getPosition(const SbViewportRegion &vpRgn) constconst SbVec2f &getNormalizedPosition(const SbViewportRegion &vpRgn) const¿¸‰6÷Œ6[ „€€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetShiftDown(SbBool isDown)voidsetCtrlDown(SbBool isDown)voidsetAltDown(SbBool isDown)SbBoolwasShiftDown() constSbBoolwasCtrlDown() constSbBoolwasAltDown() const4Ý‹6+6& €€‚A€‚ÿDESCRIPTIONÓ ÷Œ6þŽ63 4€A€”‘€‚A€€€€‚ÿSoEvent is the base class for events in the Open Inventor event model. An event typically represents a user action, such as a mouse button being pressed or a keyboard key being released. SoEvent contains general information found in all Open Inventor events, including the time the event occurred, the position of the locater when the event occurred, and the state of the modifier keys when the event occurred.0 +6.6& €€‚A€‚ÿMETHODSN þŽ6|6. ,€@€T”A‚S~‚A€ƒ‚ƒ‚ÿSoEvent()virtual~SoEvent()G.6Ã6) "€<€”‘€‚A€‚ÿConstructor and destructor.W%|6&À62 4€J€T”A‚S~‚A€ãB-9‰ƒ‚ÿvirtual SÃ6&À6؇6oTypegetTypeId() constW.Ã6}À6) "€\€”‘€‚A€‚ÿReturn the type id for this event instance.U#&À6ÒÀ62 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()].}À6/Á6/ .€\€”‘€‚A€€€‚ÿReturn the type id for the SoEvent class.a)ÒÀ6Á68 @€R€T”A‚S~‚A㑶p6€‰ƒãB-9‰‚ÿSbBoolisOfType(SoType type) const‰`/Á6Â6) "€À€”‘€‚A€‚ÿThis returns TRUE if the event is an instance of or derived from an event of the passed type.n4Á6‡Â6: D€h€T”A‚S~‚A€ƒã4a†6‰‚ã4a†6‰ƒ‚ÿvoidsetTime(SbTime t)SbTimegetTime() const]4Â6äÂ6) "€h€”‘€‚A€‚ÿSet and get the time at which the event occurred.‡M‡Â6kÃ6: D€š€T”A‚S~‚A€ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvoidsetPosition(const SbVec2s &p)const SbVec2s &getPosition() constΤäÂ69Ä6* "€I€”‘€‚A€‚ÿSet the window pixel location of the cursor when the event occurred. The position is relative to the lower left corner of the window in which the event occurred.GkÃ6¸Ä68 @€Ž€T”A‚S~‚A€㊃õ(‰ƒãñf‘¸‰‚ÿconst SbVec2s &getPosition(const SbViewportRegion &vpRgn) constt9Ä6UÅ6) "€è€”‘€‚A€‚ÿGet the viewport pixel location of the cursor when the event occurred, relative to the specified viewport region.‰Q¸Ä6ÞÅ68 @€¢€T”A‚S~‚A€ã}ƒõ(‰ƒãñf‘¸‰‚ÿconst SbVec2f &getNormalizedPosition(const SbViewportRegion &vpRgn) constË¡UÅ6©Æ6* "€C€”‘€‚A€‚ÿGet the normalized location of the cursor when the event occurred, relative to the specified viewport region. The returned value will lie between 0.0 and 1.0.ªhÞÅ6SÇ6B T€Ð€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿvoidsetShiftDown(SbBool isDown)voidsetCtrlDown(SbBool isDown)voidsetAltDown(SbBool isDown)lC©Æ6¿Ç6) "€†€”‘€‚A€‚ÿSet whether the modifier keys were down when the event occurred.›YSÇ6ZÈ6B T€²€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿSbBoolwasShiftDown() constSbBoolwasCtrlDown() constSbBoolwasAltDown() constlC¿Ç6ÆÈ6) "€†€”‘€‚A€‚ÿGet whether the modifier keys were down when the event occurred.1 ZÈ6÷È6& €€‚A€‚ÿSEE ALSO±ýÆÈ6¨Ê6´ 6û€”‘€‚Aãüb€‰€ã“[ A€‰€ã-OÁm€‰€ãAùé½€‰€ãÛá–€‰€ã*€‰€ãàꀉ€ã?–/ €‰€ã(ç –€‰€ãΖc`€‰€ãÊÌø!€‰€ãÿ3È€‰‚ÿSoButtonEvent, SoKeyboardEvent, SoLocation2Event, SoMotion3Event, SoMouseButtonEvent, SoSpaceballButtonEvent, SoHandleEventAction, SoEventCallback, SoSelection, SoInteraction, SoWinDevice, SoWinRenderArea@÷È6èÊ61÷m±…n¼èÊ6Ë6õI7SoEventCallback7¨Ê6Ë6% €$€ˆˆ€‚ÿSoEventCallback*èÊ6IË6# €€€‚ÿNAMEb<Ë6«Ë6& €x€”‘€€‚ÿSoEventCallback - node which invokes callbacks for events3IË6ÞË6# € €€‚ÿINHERITS FROM‘D«Ë6oÌ6M j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoEventCallback2 ÞË6¡Ì6& €€€€ ‚ÿSYNOPSIST.oÌ6õÌ6& €\€”‘€€‚ÿ#include uH¡Ì6jÍ6- *€€T”A‚S~‚A€ƒ‚ÿtypedef voidSoEventCallbackCB(void *userData,SoEventCallback *node)O&õÌ6¹Í6) "€L€”‘€‚A€‚ÿMethods from class SoEventCallback: ›jÍ6ÅÏ6q °€7€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒãMy'9‰‚ãMy'9‰ƒ‚ƒãB-9‰‚ƒãB-9‰‚ãàꉃ‚ã2™|—‰ƒ‚ã¼B‘S‰ƒ‚ÿstatic SoTypegetClassTypeId()SoEventCallback()voidsetPath(SoPath *path)const SoPath *getPath()voidaddEventCallback(SoType eventType,SoEventCallbackCB *f,void *userData = NULL)voidremoveEventCallback(SoType eventType,SoEventCallbackCB *f,void *userData = NULL)SoHandleEventAction *getAction() constconst SoEvent *getEvent() constconst SoPickedPoint *getPickedPoint() constŽV¹Í6_78 @€¬€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ÿvoÅÏ6_7¨Ê6idsetHandled()SbBoolisHandled() constvoidgrabEvents()voidreleaseEvents()NÅÏ6­7/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|_7)7n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)­77/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ)7æ7 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH7n7@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Næ7¼7/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þn7ó7Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4¼7'7& €€‚A€‚ÿDESCRIPTIONò¿ó7 73 4€€”‘€‚A€€€€‚ÿSoEventCallback will invoke application supplied callback functions during SoHandleEventAction traversal. Methods allow the application to specify which Open Inventor events should trigger callbacks, and which path must be picked, if any, for the callback invocation to occur. The application callback is able to get information about the event and the pick detail, and may grab events, release events, and set whether the event was handled.i9'7‚ 70 .€s€”‘€‚A€€€‚ÿIf you register more than one callback function in an SoEventCallback node, all the callback functions will be invoked when an event occurs, even if one of the callbacks handles the event. However, if the event is handled by any of the callback functions, no other node in the scene graph will see the event.0  7² 7& €€‚A€‚ÿMETHODSU#‚ 7 72 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()e6² 7l 7/ .€l€”‘€‚A€€€‚ÿReturn the type id for the SoEventCallback class.A 7­ 7, (€*€T”A‚S~‚A€ƒ‚ÿSoEventCallback()~Ul 7+ 7) "€ª€”‘€‚A€‚ÿConstructor creates an event callback node with no event interest and a NULL path.t:­ 7Ÿ 7: D€t€T”A‚S~‚A€ƒãMy'9‰‚ãMy'9‰ƒ‚ÿvoidsetPath(SoPath *path)const SoPath *getPath()^(+ 7ý 76 :€Q€”‘€‚A€€€€€‚ÿSet and get the path which must be picked in order for the callbacks to be invoked. If the path is NULL, the callbacks will be invoked for every interesting event, as specified by addEventCallback(), regardless of what is picked. The setPath() method makes its own copy of the passed path.ò³Ÿ 7ï7? L€g€T”A‚S~‚A€ƒãB-9‰‚ƒãB-9‰‚ÿvoidaddEventCallback(SoType eventType,SoEventCallbackCB *f,void *userData = NULL)voidremoveEventCallback(SoType eventType,SoEventCallbackCB *f,void *userData = NULL)&êý 7!A7< F€Õ€”‘€‚A€€€€€€€‚ÿSpecifies the callback functions to be invoked for different event types. When invoked, the callback function will be passed the userData, along with a pointer to this SoEventCallback node. For example, passingï7!A7¨Ê6 SoMouseButtonEvent::getClassTypeId() means callbacks will be invoked only when a mouse button is pressed or released. Passing SoEvent::getClassTypeId() for the eventType will cause the callback to be invoked for every event which passes through this event callback node.^,ï7A72 4€X€T”A‚S~‚Aãàꀉƒ‚ÿSoHandleEventAction *getAction() constÒ¢!A7QB70 .€E€”‘€‚A€€€‚ÿReturns the SoHandleEventAction currently traversing this node, or NULL if traversal is not taking place. This should be called only from callback functions.W%A7¨B72 4€J€T”A‚S~‚A€ã2™|—‰ƒ‚ÿconst SoEvent *getEvent() constµ‹QB7]C7* "€€”‘€‚A€‚ÿReturns the event currently being handled, or NULL if traversal is not taking place. This should be called only from callback functions.c1¨B7ÀC72 4€b€T”A‚S~‚A€ã¼B‘S‰ƒ‚ÿconst SoPickedPoint *getPickedPoint() constÑ¡]C7‘D70 .€C€”‘€‚A€€€‚ÿReturns pick information during SoHandleEventAction traversal, or NULL if traversal is not taking place. This should be called only from callback functions.@ÀC7ÑD7, (€(€T”A‚S~‚A€ƒ‚ÿvoidsetHandled()_‘D7`F70 .€¿€”‘€‚A€€€‚ÿTells the node the event was handled. The callback function is responsible for setting whether the event was handled or not. If there is more than one callback function registered with an SoEventCallback node, all of them will be invoked, regardless of whether one has handled the event or not. This should be called only from callback functions.OÑD7¯F72 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisHandled() const‹b`F7:G7) "€Ä€”‘€‚A€‚ÿReturns whether the event has been handled. This should be called only from callback functions.W)¯F7‘G7. ,€R€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidgrabEvents()voidreleaseEvents()íÃ:G7~H7* "€‡€”‘€‚A€‚ÿTells the event callback node to grab events or release the grab. While grabbing, the node will consume all events; however, each callback function will only be invoked for events of interest.<‘G7ºH7& €,€‚A€‚ÿFILE FORMAT/DEFAULT<~H7öH7* $€$€P„7|‚€‚ÿEventCallback {0ºH7&I7+ &€ €P„|‚€‚‚ÿ}1 öH7WI7& €€‚€‚ÿSEE ALSOžK&I7õI7S v€–€”‘€‚ãΖc`€‰€ã(ç –€‰€ãàꀉ€ãÈï?†€‰‚ÿSoInteraction, SoSelection, SoHandleEventAction, SoDragger?WI74J71SB]†mÛˆp½4J7jJ7K8SoExtSelection6õI7jJ7% €"€ˆˆ€‚ÿSoExtSelection*4J7”J7# €€€‚ÿNAME~XjJ7K7& €°€”‘€€‚ÿSoExtSelection - selection node that supports lasso selection and selection of shapes3”J7EK7# € €€‚ÿINHERITS FROMæuK7+L7q ²€ê€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãÍ\Y€‰€ã(ç –€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoSeparator > SoSelection > SoExtSelection2 EK7]L7& €€€€ ‚ÿSYNOPSISS-+L7°L7& €Z€”‘€€‚ÿ#include A¿]L7ñN7‚ Ò€€T”A‚S~‚A€㑶p6‰ƒã³DfL‰ãkNÞ‰ãkNÞ‰ãkNÞ‰‚㑶p6‰ƒã³DfL‰ãkNÞ‰ãkNÞ‰‚㑶p6‰ƒã³DfL‰ãkNÞ‰‚ÿtypedef SbBoolSoExtSelectionTriangleCB (void *userData,SoCallbackAction* action,const SoPrimitiveVertex* v1,const SoPrimitiveVertex* v2,const SoPrimitiveVertex* v3)typedef SbBoolSoExtSelectionLineSegmentCB(void *userData,SoCallbackAction* action,const SoPrimitiveVertex* v1,const SoPrimitiveVertex* v2)typedef SbBoolSoExtSelectionPointCB(void *userData,SoCallbackAction* action,const SoPrimitiveVertex* v1)w1°L7t€7F Z€c€T”A‚S~‚A€‚ƒ‚ƒ‚ƒƒ€€‚ÿenum LassoType{SoExtSelection::NOLASSO,SoExtSelection::LASSO,SoExtSelection::RECTANGLE}enum LassoPolicy{SoExtSelection::FULL_BBOX,SoExtSelection::PART_BBOX,SoExtSelection::FULL,SoExtSelectñN7t€7õI7ion::PART}enum LassoMode{SoExtSelection::VISIBLE_SHAPES,SoExtSelection::ALL_SHAPES(Default)}M$ñN7Á€7) "€H€”‘€‚A€‚ÿFields from class SoExtSelection:…Ct€7F7B T€†€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumlassoTypeSoSFEnumlassoPolicySoSFEnumlassoModeR#Á€7˜7/ .€F€”‘€‚A€ã(ç –‰‚ÿFields from class SoSelection:FF7Þ72 4€(€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumpolicyR#˜70‚7/ .€F€”‘€‚A€ãÍ\Y‰‚ÿFields from class SoSeparator:³iÞ7ã‚7J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingN%0‚71ƒ7) "€J€”‘€‚A€‚ÿMethods from class SoExtSelection:&½ã‚7W…7i  €{€T”A‚S~‚A€ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÍ\Y‰ƒ‚ƒ‚ƒ‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ÿSoExtSelection()voiduseOverlay(SbBool flg = TRUE)SbBoolisUsingOverlay()SoSeparator*getOverlaySceneGraph()voidsetOverlayLassoColorIndex(int index)intgetOverlayLassoColorIndex()voidsetLassoColor(SbColor c)SbColorgetLassoColor()voidsetLassoWidth(float width)floatgetLassoWidth()voidsetOverlayLassoPattern(unsigned short pattern)unsigned shortgetOverlayLassoPattern()voidanimateOverlayLasso(SbBool flg = TRUE)\ 1ƒ7³†7< F€A€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolisOverlayLassoAnimated()voidsetTriangleFilterCallback(SoExtSelectionTriangleCB *cb,void *userData = NULL)voidsetLineSegmentFilterCallback(SoExtSelectionLineSegmentCB *cb,void *userData = NULL)voidsetPointFilterCallback(SoExtSelectionPointCB *cb,void *userData = NULL)S$W…7‡7/ .€H€”‘€‚A€ã(ç –‰‚ÿMethods from class SoSelection:4§³†7:‰7 è€O€T”A‚S~‚A€ãB-9‰ƒ‚ƒãMy'9‰‚ƒã’n%9‰‚ƒãMy'9‰‚ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒã’n%9‰‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒã’n%9‰‚ƒ‚ƒ‚ãç2ø¡‰ƒ‚ÿstatic SoTypegetClassTypeId()voidselect(const SoPath *path)voidselect(SoNode *node)voiddeselect(const SoPath *path)voiddeselect(int which)voiddeselect(SoNode *node)voidtoggle(const SoPath *path)voidtoggle(SoNode *node)SbBoolisSelected(const SoPath *path) constSbBoolisSelected(SoNode *node) constvoiddeselectAll()intgetNumSelected() constconst SoPathList *getList() constHû‡7‚‹7M h€÷€T”A‚S~‚AãMy'9€‰ƒ‚ãMy'9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSoPath *getPath(int index) constSoPath *operator [](int i) constvoidaddSelectionCallback(SoSelectionPathCB *f,void *userData = NULL)voidremoveSelectionCallback(SoSelectionPathCB *f,void *userData = NULL)voidaddDeselectionCallback(SoSelectionPathCB *f,void *userData = NULL)voidremoveDeselectionCallback(SoSelectionPathCB *f,void *userData = NULL)voidaddStartCallback(SoSelectionClassCB *f,void *userData = NULL)voidremoveStartCallback(SoSelectionClassCB *f,void *userData = NULL)*Â:‰7¬7h ž€…€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚ƒã’n%9‰ã¨ƒõ(‰ãñf‘¸‰ã‘¶p6‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidaddFinishCallback(SoSelectionClassCB *f,void *userData = NULL)voidremoveFinishCallback(SoSelectionClassCB *f,void *userData = NULL)voidsetPickFilterCallback(SoSelectionPickCB *f,void *userData = NULL,SbBool callOnlyIfSelectable = TRUE)voidselect(SoNode *root,int numCoord,SbVec3f* lassoCoord,const SbViewportRegion &viewport,SbBool shiftPressed)voidsetPickMatching(SbBool pickTwice)SbBoolgetPickMatching() constU$‚‹7Ž71 2€H€T”‘€s‚A€ãÍ\Y‰‚ÿMethods from class SoSeparator:|N¬7}Ž7. ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()Q Ž7ÎŽ71 2€@€T”‘€s‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒ}Ž7ÏÀ7r ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constÎŽ7ÏÀ7õI7voidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)PÎŽ7Á71 2€>€T”‘€s‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÏÀ7›Â7n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)Z)Á7õÂ71 2€R€T”‘€s‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ›Â7ZÅ7 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHõÂ7âÅ7@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)PZÅ72Æ71 2€>€T”‘€s‚A€ã}9‰‚ÿMethods from class SoBase:7ÞâÅ7iÇ7Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const42Æ7Ç7& €€‚A€‚ÿDESCRIPTION'ëiÇ7ÄÉ7< F€×€”‘€‚A€€€€€€€‚ÿThis class extends the functionality of SoSelection to allow the user to select an object or multiple objects by drawing a lasso around the object(s) to be selected. The lasso can be represented as a rectangle between the mouse up and down positions or as a set of lines that the user draws around the objects, depending on the field lassoType. Objects are selected if they are surrounded by the lasso or if the lasso intersects them, depending on the field lassoPolicy, as follows:ˆ]Ç7LÊ7+ &€º€T”!s‚A€‚ÿ- FULL_BBOX: lasso selects objects whose bounding box is completely contained by the lasso—lÄÉ7ãÊ7+ &€Ø€T”!s‚A€‚ÿ- PART_BBOX: lasso selects objects whose bounding box intersects the lasso (or is contained by the lasso)TLÊ7bË7+ &€¨€T”!s‚A€‚ÿ- FULL: lasso selects objects whose geometry is completely contained by the lassoŽcãÊ7ðË7+ &€Æ€T”!s‚A€‚ÿ- PART: lasso selects objects whose geometry intersects the lasso (or is contained by the lasso)lCbË7\Ì7) "€†€”‘€‚A€‚ÿFULL and PART require more computation and are generally slower.,ðË7ˆÍ7* "€€”‘€‚A€‚ÿA lasso mode controls whether only visible shapes (front shapes) are selectable, by controlling the selection algorithm used, either geometry-based or pixel-based. A specific lasso mode may also be preferred for performance reasons depending on the scene.Ù\Ì7‹Î7* "€³€”‘€‚A€‚ÿPrimitive details for selected parts of shapes can be obtained through dedicated callbacks that can be also used to filter the selection. These primitive filter callbacks can be called for each generated primitive.m+ˆÍ7 8B R€W€”‘€‚A€€€€€€€€€‚ÿWhen using SoExtSelection node, the callback set by setPickFilterCallback will be called only once per selected shape. Only SoPickedPoint::getPath() makes sense for the picked point passed to the pick filter callback in this case. Other SoPickedPoint methods may return undefined results.‹Î7 8õI7‹b‹Î7—8) "€Ä€”‘€‚A€‚ÿLasso selection can be also be controlled programmatically, without requiring user interaction.£w 8:8, (€î€”‘€‚A€€‚ÿNOTE: The features below which use overlay planes are supported only if the graphics board supports overlay planes./ —8i8& €€‚A€‚ÿFIELDSI:8²82 4€.€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumlassoType]4i88) "€h€”‘€‚A€‚ÿSpecifies lasso type (none, lasso, or rectangle).K²8Z82 4€2€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumlassoPolicy^58¸8) "€j€”‘€‚A€‚ÿSpecifies the lasso policy. See description above.IZ882 4€.€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumlassoModeÛ«¸8Ü80 .€W€”‘€‚A€€€‚ÿSpecifies the lasso mode (whether ALL_SHAPES or only VISIBLE_SHAPES can be selected). It applies only when the lasso policy is FULL or PART. When the lasso mode is VISIBLE_SHAPES, you will only select visible shapes. That is, if a shape is within (or partially within) the lasso volume, but is hidden by another shape, it will not be selected. VISIBLE_SHAPES mode provides faster performance than ALL_SHAPES (the default).ª€8†8* "€€”‘€‚A€‚ÿThe algorithm for the ALL_SHAPES mode is based on geometry projection while the VISIBLE_SHAPES mode uses offscreen rendering.Ì¢Ü8R8* "€E€”‘€‚A€‚ÿWhen using VISIBLE_SHAPES, none of the primitive selection callback nodes can be called. This means that you cannot retrieve selection details using this mode.ßµ†818* "€k€”‘€‚A€‚ÿUnlike the ALL_SHAPES mode or the picking action, the VISIBLE_SHAPES mode does not allow you to select multiple overlapping shapes. You cannot select a shape obscured by another.0 R8a8& €€‚A€‚ÿMETHODS@18¡8, (€(€T”A‚S~‚A€ƒ‚ÿSoExtSelection()8a8Ù8) "€€”‘€‚A€‚ÿConstructor.{A¡8T8: D€‚€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoiduseOverlay(SbBool flg = TRUE)SbBoolisUsingOverlay()g>Ù8»8) "€|€”‘€‚A€‚ÿSets/gets whether the lasso is drawn in the overlay plane. Z(T8 82 4€P€T”A‚S~‚AãÍ\Y€‰ƒ‚ÿSoSeparator*getOverlaySceneGraph()Í»8â 80 .€;€”‘€‚A€€€‚ÿReturns the scene graph that should be passed to the render area function setOverlaySceneGraph. Applies only if the lasso is drawn in the overlay plane.zL 8\ 8. ,€˜€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetOverlayLassoColorIndex(int index)intgetOverlayLassoColorIndex()†]â 8â 8) "€º€”‘€‚A€‚ÿSets/gets the lasso color index. Applies only if the lasso is drawn in the overlay plane. v<\ 8X 8: D€x€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ÿvoidsetLassoColor(SbColor c)SbColorgetLassoColor()ƒZâ 8Û 8) "€´€”‘€‚A€‚ÿSets/gets the lasso color. Applies only if the lasso is not drawn in the overlay plane.f8X 8A 8. ,€p€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetLassoWidth(float width)floatgetLassoWidth()K"Û 8Œ 8) "€D€”‘€‚A€‚ÿSets/gets the lasso line width.Œ^A 8 8. ,€¼€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetOverlayLassoPattern(unsigned short pattern)unsignedshort getOverlayLassoPattern()ÈžŒ 8à 8* "€=€”‘€‚A€‚ÿSets/gets the lasso stipple pattern. Values can range from 0 (invisible) to 0xffff (solid). This specifies how dashed or dotted lasso lines will be drawn. ŒR 8l8: D€¤€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidanimateOverlayLasso(SbBool flg = TRUE)SbBoolisOverlayLassoAnimated()£zà 88) "€ô€”‘€‚A€‚ÿSets/gets the the lasso animation flag. This controls whether the lasso is animated (its line pattern changes) or not. 2þl8M@84 6€ý€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿvoidsetTriangleFilterCallback(SoExtSelectionTriangleCB *cb,void *userData = NULL)voidsetLineSegmentFilterCallback(SoExtSelectionLineSegmentCB *cb,void *userData = NULL)voidsetPointF8M@8õI7ilterCallback(SoExtSelectionPointCB *cb,void *userData = NULL)Ÿ]8ìB8B R€»€”‘€‚A€€€€€ã³DfL€‰€‚ÿThe primitive filter callbacks can be used to retrieve information about the selected primitives of traversed shape nodes - points, line segments, or triangles - and to filter the shape selection based on the selected primitives. These callbacks are called while traversing the scene graph shapes with an SoCallbackAction started by the SoExtSelection node. Whenever a shape primitive is surrounded by the lasso, the callback is called and receives as argument the action and the primitive. Depending on the shape type, the point, line or triangle callback will be called. See SoCallbackAction.­ƒM@8™D8* "€€”‘€‚A€‚ÿWhen a callback returns TRUE, the corresponding shape is selected according to the selection policy. Then the selection stops processing the current shape's primitives and continues with the next shape in the scene graph. When a callback returns FALSE, the action continues normally to process the remaining shape's primitives, allowing you to filter or collect additional primitives.ç¥ìB8€E8B R€K€”‘€‚A€€€€€€€€€‚ÿThe primitive filter callbacks are called only when the lassoPolicy is set to SoExtSelection::PART and the lassoMode is set to SoExtSelection::ALL_SHAPES. Ú™D8ŠF80 .€µ€”‘€‚A€€€‚ÿIt is the responsibility of the application to manage the primitive selection policy. Exactly like SoSelection, the node selection list can only handle paths to nodes and cannot store primitive detail information.Æ~€E8PG8H `€ü€T”A‚S~‚A€ƒã’n%9‰ã¨ƒõ(‰ãñf‘¸‰ã‘¶p6‰‚ÿvoidselect(SoNode *root,int numCoord,SbVec3f* lassoCoord,const SbViewportRegion &viewport,SbBool shiftPressed)!ñŠF8qI80 .€ã€”‘€‚A€€€‚ÿSimulates interactive selection starting from the root node with the given lasso contour, updating the selection list and triggering any associated callback. Even though the selection operation may not involve a window per se, some nodes need the viewport information to determine their size and placement. The flag shiftPressed simulates the effect of pressing the shift key while selecting, which is applicable along with the SHIFT policy.The lasso will not be drawn when using this method.)PG8šI8& €€‚A€‚ÿ<qI8ÖI8& €,€‚A€‚ÿFILE FORMAT/DEFAULT;šI8J8* $€"€P„7|‚€‚ÿExtSelection {ÚžÖI8ëJ8< F€=€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOpolicySHIFTlassoTypeNOLASSOlassoPolicyFULL_BBOXlassoModeALL_SHAPES}1 J8K8& €€‚€‚ÿSEE ALSO:ëJ8K8G ^€t€”‘€‚ãÉ“â„€‰€ ã(ç –€‰€ ãÿ3È€‰‚ÿSoRayPickAction, SoSelection, SoWinRenderArea= K8ÚK81X ±…nÿq¾ÚK8L8Nˆ8SoFaceDetail4K8L8% €€ˆˆ€‚ÿSoFaceDetail*ÚK88L8# €€€‚ÿNAMEySL8±L8& €¦€”‘€€‚ÿSoFaceDetail - stores detail information about vertex-based shapes made of faces38L8äL8# € €€‚ÿINHERITS FROMT±L88M85 :€>€”‘€ãåŒÅe€‰€€€‚ÿSoDetail > SoFaceDetail2 äL8jM8& €€€€ ‚ÿSYNOPSISuN8M8ßM8' €œ€”‘€€‚‚ÿ#include Methods from class SoFaceDetail:ÍjM8ñN8E X€›€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ãqÒÍ@‰ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoFaceDetail()virtual~SoFaceDetail()longgetNumPoints() constconst SoPointDetail *getPoint(int i) constint32_tgetFaceIndex() constint32_tgetPartIndex() conststatic SoTypegetClassTypeId()P!ßM8AO8/ .€B€”‘€‚A€ãåŒÅe‰‚ÿMethods from class SoDetail:®fñN8 €8H `€Ì€T”A‚S~‚AãåŒÅe€‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿSoDetail *copy() constvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constAO8 €8K84AO8@€8& €€‚A€‚ÿDESCRIPTION&ü €8f8* "€ù€”‘€‚A€‚ÿThis class contains detail information about a point on a face in a vertex-based shape made of faces. The information includes the number of points in the face, the points forming the vertices of the face, and the index of the face within the shape.§e@€8 ƒ8B R€Ë€”‘€‚A€€€€€€€€€‚ÿNote that when an SoFaceDetail is returned from picking (in an SoPickedPoint), it will contain details for all points defining the face that was intersected. However, when an SoFaceDetail is created for a triangle produced during primitive generation (in an SoPrimitiveVertex), it will contain details for only the three vertices of the triangle.0 f8=ƒ8& €€‚A€‚ÿMETHODSX* ƒ8•ƒ8. ,€T€T”A‚S~‚A€ƒ‚ƒ‚ÿSoFaceDetail()virtual~SoFaceDetail()G=ƒ8܃8) "€<€”‘€‚A€‚ÿConstructor and destructor.H•ƒ8$„8, (€8€T”A‚S~‚A€ƒ‚ÿlonggetNumPoints() constU,܃8y„8) "€X€”‘€‚A€‚ÿReturns the number of points in the face.b0$„8Û„82 4€`€T”A‚S~‚A€ãqÒÍ@‰ƒ‚ÿconst SoPointDetail *getPoint(int i) constny„8x…8/ .€Ü€”‘€‚A€€€‚ÿReturns information about the point forming the i'th vertex of the face, represented as an SoPointDetail.KÛ„8Ã…8, (€>€T”A‚S~‚A€ƒ‚ÿint32_tgetFaceIndex() const[2x…8†8) "€d€”‘€‚A€‚ÿReturns the index of the face within the shape.KÃ…8i†8, (€>€T”A‚S~‚A€ƒ‚ÿint32_tgetPartIndex() constoF†8؆8) "€Œ€”‘€‚A€‚ÿReturns the index of the part containing the face within the shape.U#i†8-‡82 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*؆8€‡8) "€T€”‘€‚A€‚ÿReturns type identifier for this class.1 -‡8±‡8& €€‚A€‚ÿSEE ALSOJ€‡8Nˆ8S v€”€”‘€‚AãåŒÅe€‰€ã¼B‘S€‰€ãkNÞ€‰€ã¹êZY€‰‚ÿSoDetail, SoPickedPoint, SoPrimitiveVertex, SoVertexShape: ±‡8ˆˆ81‘ÛˆpEr¿ˆˆ8¹ˆ8Œ9SoFaceSet1 Nˆ8¹ˆ8% €€ˆˆ€‚ÿSoFaceSet*ˆˆ8ãˆ8# €€€‚ÿNAMEN(¹ˆ81‰8& €P€”‘€€‚ÿSoFaceSet - polygonal face shape node3ãˆ8d‰8# € €€‚ÿINHERITS FROMéx1‰8MŠ8q ²€ð€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ã¹êZY€‰€ã5ÖfE€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape > SoNonIndexedShape > SoFaceSet2 d‰8Š8& €€€€ ‚ÿSYNOPSISlEMŠ8ëŠ8' €Š€”‘€€‚‚ÿ#include Fields from class SoFaceSet:LŠ87‹82 4€4€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32numVerticesX)ëŠ8‹8/ .€R€”‘€‚A€ã5ÖfE‰‚ÿFields from class SoNonIndexedShape:K7‹8Ú‹82 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32startIndexT%‹8.Œ8/ .€J€”‘€‚A€ã¹êZY‰‚ÿFields from class SoVertexShape:NÚ‹8|Œ82 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyI .Œ8ÅŒ8) "€@€”‘€‚A€‚ÿMethods from class SoFaceSet:d0|Œ8)84 8€`€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoFaceSet()static SoTypegetClassTypeId()NÅŒ8w8/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|)8óŽ8n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)w8K8/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØóŽ8¼Á8 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaulK8¼Á8Nˆ8tValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHK8DÂ8@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¼Á8’Â8/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞDÂ8ÉÃ8Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4’Â8ýÃ8& €€‚A€‚ÿDESCRIPTIONSÉÃ8PÅ8< F€/€”‘€‚A€€€€€€€‚ÿThis node represents a 3D shape formed by constructing faces (polygons) from vertices located at the coordinates specified in the vertexProperty field (from SoVertexShape), or the current inherited state. For optimal performance, the vertexProperty field is recommended.H ýÃ8˜Ç8? L€€”‘€‚A€€€€€€€€‚ÿSoFaceSet uses the coordinates in order, starting with the first one. Each face has a number of vertices specified by a value in the numVertices field. For example, an SoFaceSet with numVertices of [3,4,4] would use coordinates 1, 2, and 3 for the first face, coordinates 4, 5, 6, and 7 for the second face, and coordinates 8, 9, 10, and 11 for the third. For improved performance, arrange all the faces with only 3 vertices at beginning of the list, then all faces with 4 vertices, and finally all other faces.‹\PÅ8#È8/ .€¸€”‘€‚A€€€‚ÿThe number of values in the numVertices field indicates the number of faces in the set.Ê ˜Ç8íÈ8* "€A€”‘€‚A€‚ÿThe coordinates of the face set are transformed by the current cumulative transformation. The faces are drawn with the current light model and drawing style.Z0#È8GÊ8* "€a€”‘€‚A€‚ÿTreatment of the current material and normal binding is as follows: The PER_PART and PER_FACE bindings specify a material or normal for each face. The _INDEXED bindings are equivalent to their non-indexed counterparts. The default material binding is OVERALL. The default normal binding is PER_VERTEX.\2íÈ8£Ë8* "€e€”‘€‚A€‚ÿIf any normals (or materials) are specified, Open Inventor assumes you provide the correct number of them, as indicated by the binding. You will see unexpected results if you specify fewer normals (or materials) than the shape requires. If no normals are specified, they will be generated automatically.™pGÊ8<Ì8) "€à€”‘€‚A€‚ÿNOTE: A face set may not render or pick correctly if any of its polygons are self-intersecting or non-planar./ £Ë8kÌ8& €€‚A€‚ÿFIELDSL<Ì8·Ì82 4€4€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32numVerticesHkÌ8ÿÌ8) "€>€”‘€‚A€‚ÿNumber of vertices per face.0 ·Ì8/Í8& €€‚A€‚ÿMETHODS;ÿÌ8jÍ8, (€€T”A‚S~‚A€ƒ‚ÿSoFaceSet()Z1/Í8ÄÍ8) "€b€”‘€‚A€‚ÿCreates a face set node with default settings.U#jÍ8Î82 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ÄÍ8lÎ8) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8Î8¤Î8& €$€‚A€‚ÿACTION BEHAVIORHlÎ8ìÎ82 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderAction‹_¤Î8wÏ8, (€¾€”‘€‚A€€‚ÿDraws faces based on the current coordinates, normals, materials, drawing style, and so on.GìÎ8¾Ï82 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction¹†wÏ8ƒ93 4€ €”‘€‚A€€€€‚ÿPicks faces ba¾Ï8ƒ9Nˆ8sed on the current coordinates and transformation. Details about the intersection are returned in an SoFaceDetail.N¾Ï8Ñ92 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxAction鼃9º9- (€y€”‘€‚A€€‚ÿComputes the bounding box that encloses all vertices of the face set with the current transformation applied to them. Sets the center to the average of the coordinates of all vertices.HÑ992 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackActionÁ”º9Ã9- (€)€”‘€‚A€€‚ÿIf any triangle callbacks are registered with the action, they will be invoked for each successive triangle generated from each face in the set.<9ÿ9& €,€‚A€‚ÿFILE FORMAT/DEFAULT6 Ã959* $€€P„7|‚€‚ÿFaceSet {f5ÿ9›91 2€j€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿvertexPropertyNULLstartIndex0numVertices-1}1 59Ì9& €€‚€‚ÿSEE ALSOÀa›9Œ9_ Ž€Â€”‘€‚ã[Eà€‰€ãy‚2€‰€ãlÌ…€‰€ã~«M§€‰€ãmý¼€‰‚ÿSoCoordinate3, SoDrawStyle, SoIndexedFaceSet, SoFaceDetail, SoVertexProperty8Ì9Ä91ðHÿq4tÀÄ9ó9Ñ :SoField/ Œ9ó9% €€ˆˆ€‚ÿSoField*Ä99# €€€‚ÿNAMEL&ó9i9& €L€”‘€€‚ÿSoField - base class for all fields39œ9# € €€‚ÿINHERITS FROM4 i9Ð9) "€€”‘€€€‚ÿSoField2 œ99& €€€€ ‚ÿSYNOPSISjCÐ9l9' €†€”‘€€‚‚ÿ#include Methods from class SoField:1 99‘ ð€A€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãþ —‰‚ƒãþ —‰‚ƒ‚㑶p6‰ƒãþ —‰‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() conststatic SoTypegetClassTypeId()virtual SoTypegetTypeId() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)intoperator ==(const SoField &f) constintoperator !=(const SoField &f) constvoidtouch()SbBoolconnectFrom(SoField *fromField)%¦l9 9 Ì€M€T”A‚S~‚A㑶p6€‰ƒãë\¼N‰‚㑶p6‰ƒã`Zh‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚㑶p6‰ƒã`Zh‰‚ƒ‚ƒ‚ƒãë\¼N‰‚ƒã`Zh‰‚ÿSbBoolconnectFrom(SoEngineOutput *fromEngine)SbBoolconnectFrom(SoVRMLInterpOutput *interpOutput)SbBoolappendConnection(SoField *field)SbBoolappendConnection(SoEngineOutput *engineOutput)SbBoolappendConnection(SoVRMLInterpOutput *interpOutput)voiddisconnect()voiddisconnect(SoField *field)voiddisconnect(SoEngineOutput *engineOutput)voiddisconnect(SoVRMLInterpOutput *interpOutput)/ª9ñ 9… Ø€U€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚㑶p6‰ƒã`Zh‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSbBoolisConnected() constSbBoolisConnectedFromField() constSbBoolisConnectedFromVRMLInterp() constSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constSbBoolgetConnectedVRMLInterp(SoVRMLInterpOutput *&interpOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constæ¡Â 9× 9E X€C€T”A‚S~‚A€ƒãÐPWÙ‰‚ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿintgetForwardConnections(SoFieldList &list) constintgetNumConnections()intgetConnections(SoFieldList &list)SoFieldContainer *getContainer() const4ñ 9 9& €€‚A€‚ÿDESCRIPTIONÓ× 9@93 4€§€”‘€‚A€€€€‚ÿSoField is the abstract base class for all fields. Fields are the data elements contained within nodes and are the input values for engines. Each node or engine class specifies a set of fields and associates a name with each. These names define the semantics of the field (e.g., the SoCube node contains three float fields named width, height, and depth). Field classes provide the access methods that indirectly allow editing and querying of dat 9@9Œ9a within nodes.îŽ 9 B9` Ž€€”‘€‚A€€€€€€€€€€€€€€€€€€€‚ÿThere are two abstract subclasses of SoField: SoSField is the base class for all single-valued field classes and SoMField is the base class for all multiple-valued fields, which contain dynamic arrays of values. Subclasses of SoSField have an SoSF prefix, and subclasses of SoMField have an SoMF prefix. See the reference pages for SoSField and SoMField for additional methods.Ù@9C96 :€³€”‘€‚A€€€€€‚ÿFields are typically constructed only within node or engine instances; if you need a field that is not part of a node or engine, you can create a GlobalField; see the methods on SoDB for creating global fields.3 B9ME90 .€€”‘€‚A€€€‚ÿFields can be connected either directly to another field, or can be connected to the output of an engine. The value of a field with a connection will change when the thing it is connected to changes. For example, consider a field "A" that is connected from "B" (by A->connectFrom(B)). When B's value is changed, A's value will also change. Note that A and B may have different values, even if they are connected: if A's value is set after B's value, A's value will be different from B's until B's value is set.ˆ_C9ÕE9) "€¾€”‘€‚A€‚ÿA field can be connected to several other fields, but can be connected from only one source.{EME9PH96 :€‹€”‘€‚A€€€€€‚ÿIt is possible (and often useful) to create loops of field connections (for example, A connected from B and B connected from A). If there are loops, then the rule is that the last setValue() done overrides any connections in to that value. You can think of setting the value of a field as immediately propagating that value forward into all the fields it is connected to, with the propagation stopping at the place where the original setValue() occurred if there is a connection loop. (Actually, a more efficient mechanism than this is used, but the semantics are the same.)Ã{ÕE9K9H ^€÷€”‘€‚A€€€€€€€€€€€‚ÿIf you try to connect two fields of differing types, Open Inventor will automatically try to insert a field converter engine between them to convert values from one type into the other. Open Inventor has most reasonable conversions built-in (multiple-valued field to single-valued and vice versa, anything to SoSFString, anything to SoSFTrigger, float/short/unsigned short/int32_t/uint32_t/etc numeric conversions, etc). You can add field converters using SoDB's extender method addConverter(); see the SoDB.h header file for details. You can also find out if a converter is available with the SoDB::getConverter() method.¨PH9»K9) "€þ€”‘€‚A€‚ÿFields each define their own file format for reading and being written to files, but all fields follow the same conventions:ýÓK9¸L9* "€§€”‘€‚A€‚ÿFields in a node or engine are written as the name of the field followed by the field's value; fields are not written if they have not been modified since they were created (if they have their default value).¹»K9qM9* "€€”‘€‚A€‚ÿThe ignored flag is written as a "~" character after the field's value (if the field's value is its default value, just the "~" is written).÷͸L9hN9* "€›€”‘€‚A€‚ÿField connections are written as an "=" followed by the container of the field or engine output that the field is connected to, followed by a "." and the name of the field or engine output. For example:R*qM9ºN9( €T€Ù€‚A€‚ÿDEF node1 Transform translation 1 1 1 f>hN9 O9( €|€Ù€‚A€‚ÿDEF node2 Scale scaleFactor 1 1 1 = USE node1.translation +ºN9KO9( €€Ù€‚A€‚ÿ³q O9 9B R€ã€”‘€‚A€€€€€€€€€‚ÿGlobal fields are written as part of an internal SoFieldContainer class called GlobalField, which writes out aKO9 9Œ9n SoSFName field named type whose value is the type of the global field, followed by a field of that type whose name is the name of the global field. For example, a global uint32_t field called "FrameCounter" whose value is 494 would be written as:7KO9A9( €€Ù€‚A€‚ÿGlobalField{O% 99* $€J€Ù€‚H€ƒ‚ƒ‚ÿtype SoSFUInt32FrameCounter 494+A9»9' €€Ù€‚H€‚ÿ}*9å9' €€Ù€‚H€‚ÿ/ »9‚9% €€‚H€‚ÿMETHODSx>å9Œ‚9: D€|€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constÕ«‚9a„9* "€W€”‘€‚A€‚ÿSets/gets the ignore flag for this field. When a field's ignore flag is set to TRUE, the field is not used during traversal for rendering and other actions. This flag enables you to ignore certain fields in a node and to use others. For example, to ignore the specular color in a material node so the value is inherited from the previous material. Some fields are not inherited and are thus not affected by the Ignore flag. Q'Œ‚9²…9* "€O€”‘€‚A€‚ÿExamples of fields that are not inherited are the fields of shape nodes, light-source nodes, some groups, and cameras, as well as the fields in the SoEnvironment node. If you set the Ignore flag for a field whose values are not inherited, Open Inventor simply uses the field's default values.U,a„9†9) "€X€”‘€‚A€‚ÿThe default value for this flag is FALSE.O²…9V†92 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisDefault() const|R†9Ò‡9* "€¥€”‘€‚A€‚ÿGets the state of default flag of the field. This flag will be TRUE for any field whose value is not modified after construction and will be FALSE for those that have changed (each node or engine determines what the default values for its fields are). Note: the state of this flag should not be set explicitly from within applications.U#V†9'ˆ92 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()\3Ò‡9ƒˆ9) "€f€”‘€‚A€‚ÿReturn the type identifier for this field class.W%'ˆ9Úˆ92 4€J€T”A‚S~‚A€ãB-9‰ƒ‚ÿvirtual SoTypegetTypeId() constkBƒˆ9E‰9) "€„€”‘€‚A€‚ÿReturn the type identifier for this field instance (SoField *).i1Úˆ9®‰98 @€b€T”A‚S~‚A€㑶p6‰ƒãB-9‰‚ÿvirtual SbBoolisOfType(SoType type) constßµE‰9Š9* "€k€”‘€‚A€‚ÿReturns TRUE if this field is the given type or derived from that type. This is typically used with the getClassTypeId() method to determine the type of an SoField * at run-time:A®‰9Ί9( €2€Ù€‚A€‚ÿSoField *field = ....;]5Š9+‹9( €j€Ù€‚A€‚ÿif (field->isOfType(SoSFFloat::getClassTypeId())) [3Ί9†‹9( €f€Ù€‚A€‚ÿ SoSFFloat *floatField = (SoSFFloat *)field);I!+‹9Ï‹9( €B€Ù€‚A€‚ÿ floatField->setValue(4.5);+†‹9ú‹9( €€Ù€‚A€‚ÿZ(Ï‹9TŒ92 4€P€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolset(const char *valueString)·ú‹9 Ž96 :€€”‘€‚A€€€€€‚ÿSets the field to the given value, which is an ASCII string in the Open Inventor file format. Each field subclass defines its own file format; see their reference pages for information on their file format. The string should contain only the field's value, not the field's name (e.g., "1.0", not "width 1.0"). This method returns TRUE if the string is valid, FALSE if it is not.V$TŒ9aŽ92 4€H€T”A‚S~‚A€ƒãXíʉ‚ÿvoidget(SbString &valueString)•l Ž9öŽ9) "€Ø€”‘€‚A€‚ÿReturns the value of the field in the Open Inventor file format, even if the field has its default value.VaŽ9†9: D€¬€T”A‚S~‚A€ƒãþ —‰‚ƒãþ —‰‚ÿintoperator ==(const SoField &f) constintoperator !=(const SoField &f) const~UöŽ9À9) "€ª€”‘€‚A€‚ÿReturn TRUE (FALSE) if this field is of the same type and has the same value as †9À9Œ9f.;†9KÀ9, (€€T”A‚S~‚A€ƒ‚ÿvoidtouch()aÀ9èÁ9< F€Ã€”‘€‚A€€€€€€€‚ÿSimulates a change to the field, causing attached sensors to fire, connected fields and engines to be marked as needing evaluation, and so forth. Calling touch() on an instance of a derived field class is equivalent to calling setValue(getValue()) using the derived class's methods, except that the field's isDefault() status remains unchanged.î™KÀ9ÖÂ9U x€3€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚㑶p6‰ƒã`Zh‰‚ÿSbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)SbBoolconnectFrom(SoVRMLInterpOutput *interpOutput)žnèÁ9tÄ90 .€Ý€”‘€‚A€€€‚ÿConnects this field to another field or from an engine output. If the field was connected to something before, it will be automatically disconnected (a field may have only one connection writing into it at a time). Unless connections to the field are disabled (see enableConnection()), the field's value will be set to the value of the thing it is connected to.û¦ÖÂ9oÅ9U x€M€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚㑶p6‰ƒã`Zh‰‚ÿSbBoolappendConnection(SoField *field)SbBoolappendConnection(SoEngineOutput *engineOutput)SbBoolappendConnection(SoVRMLInterpOutput *interpOutput)HtÄ9·Æ9* "€=€”‘€‚A€‚ÿAppends this field to the list of connections from another field, engineOutput or interpOutput. Previous connections remain unchanged. Unless connections to the field are disabled, the field value will be set to that of the field, engineOutput or interpOutput that was last touched. @oÅ9÷Æ9, (€(€T”A‚S~‚A€ƒ‚ÿvoiddisconnect()•l·Æ9ŒÇ9) "€Ø€”‘€‚A€‚ÿDisconnect the field from whatever it was connected to. This does nothing if the field was not connected.ˈ÷Æ9WÈ9C T€€T”A‚S~‚A€ƒãþ —‰‚ƒãë\¼N‰‚ƒã`Zh‰‚ÿvoiddisconnect(SoField *field)voiddisconnect(SoEngineOutput *engineOutput)voiddisconnect(SoVRMLInterpOutput *interpOutput)–mŒÇ9íÈ9) "€Ú€”‘€‚A€‚ÿDisconnect the field from the requested field, engineOutput or interpOutput. All other connections remain.QWÈ9>É92 4€>€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisConnected() const_6íÈ9É9) "€l€”‘€‚A€‚ÿReturns TRUE if the field is connected to anything.Z(>É9÷É92 4€P€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisConnectedFromField() constd;É9[Ê9) "€v€”‘€‚A€‚ÿReturns TRUE if the field is connected to another field._-÷É9ºÊ92 4€Z€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisConnectedFromVRMLInterp() constjA[Ê9$Ë9) "€‚€”‘€‚A€‚ÿReturns TRUE if the field is connected to a VRML interpOutput.u=ºÊ9™Ë98 @€z€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚ÿSbBoolgetConnectedField(SoField *&writingField) constûÑ$Ë9”Ì9* "€£€”‘€‚A€‚ÿReturns TRUE if this field is being written into by another field, and returns the field it is connected to in writingField. Returns FALSE and does not modify writingField if it is not connected to a field.[)™Ë9ïÌ92 4€R€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisConnectedFromEngine() consti@”Ì9XÍ9) "€€€”‘€‚A€‚ÿReturns TRUE if the field is connected to an engine's output.}EïÌ9ÕÍ98 @€Š€T”A‚S~‚A㑶p6€‰ƒãë\¼N‰‚ÿSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) const×XÍ9ÖÎ9* "€¯€”‘€‚A€‚ÿReturns TRUE if this field is being written into by an engine, and returns the engine output it is connected to in engineOutput. Returns FALSE and does not modify engineOutput if it is not connected to an engine.…MÕÍ9[Ï98 @€š€T”A‚S~‚A㑶p6€‰ƒã`Zh‰‚ÿSbBoolgetConnectedVRMLInterp(SoVRMLInterpOutput *&interpOutput) const§~ÖÎ9:) "€ü€”‘€‚A€‚ÿReturns the VRMLInterpolator output field is connected to. Returns FALSE if there is no connection of the appropriate type.[Ï9:Œ9Y'[Ï9g:2 4€N€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidenableConnection(SbBool flag)Τ:5:* "€I€”‘€‚A€‚ÿField connections may be enabled and disabled. Disabling a field's connection is almost exactly like disconnecting it; the only difference is that you can later re-enable the connection by calling enableConnection(TRUE). Note that disconnecting an engine output can cause the engine's reference count to be decremented and the engine to be deleted, but disabling the connection does not decrement its reference count.­ƒg:â:* "€€”‘€‚A€‚ÿRe-enabling a connection will cause the value of the field to be changed to the engine output or field to which it is connected.µ‹5:—:* "€€”‘€‚A€‚ÿA field's connection-enabled status is maintained even if the field is disconnected or reconnected. By default, connections are enabled.Y'â:ð:2 4€N€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisConnectionEnabled() constµ‹—:¥:* "€€”‘€‚A€‚ÿReturns FALSE if connections to this field are disabled. Note that this may return FALSE even if the field is not connected to anything.i7ð::2 4€n€T”A‚S~‚A€ƒãÐPWÙ‰‚ÿintgetForwardConnections(SoFieldList &list) constðÆ¥:þ:* "€€”‘€‚A€‚ÿAdds pointers to all of the fields that this field is writing into (either fields in nodes, global fields or engine inputs) to the given field list, and returns the number of forward connections.F:D:, (€4€T”A‚S~‚A€ƒ‚ÿintgetNumConnections()\3þ: :) "€f€”‘€‚A€‚ÿReturns the number of connections to this field.\*D:ü:2 4€T€T”A‚S~‚A€ƒãÐPWÙ‰‚ÿintgetConnections(SoFieldList &list)\3 :X:) "€f€”‘€‚A€‚ÿReturns a list of the connections to this field.V*ü:®:, (€T€T”A‚S~‚A€ƒ‚ÿSoFieldContainer *getContainer() consto-X: :B R€[€”‘€‚A€ã’n%9€‰€€€€€‚ÿReturns the object that contains this field. The type of the object will be either SoNode, SoEngine, or will be a global field container (note that the global field container class is internal to Open Inventor; see the methods for creating and accessing global fields on SoDB). For example:W/®:t :( €^€Ù€‚A€‚ÿSoFieldContainer *f = field->getContainer();W/ :Ë :( €^€Ù€‚A€‚ÿif (f->isOfType(SoNode::getClassTypeId())){ Dt : :( €8€Ù€‚A€‚ÿ ... do something ...^6Ë :m :( €l€Ù€‚A€‚ÿ}else if (f->isOfType(SoEngine::getClassTypeId())){I! :¶ :( €B€Ù€‚A€‚ÿ ... do something else ...1 m :ç :( €€Ù€‚A€‚ÿ}else{Y¶ :h :( €²€Ù€‚A€‚ÿ ... it must be a global field. We can figure out its name, but that is about it:]5ç :Å :( €j€Ù€‚A€‚ÿ const SbName &globalFieldName = f->getName();,h :ñ :( €€Ù€‚A€‚ÿ}+Å : :( €€Ù€‚A€‚ÿ1 ñ :M :& €€‚A€‚ÿSEE ALSO„1 :Ñ :S v€b€”‘€‚Aã— \选€ã5É´€‰€ã’n%9€‰€ãnY+€‰‚ÿSoSField, SoMField, SoNode, SoDBAM : :1Ó#Er5 uÁ :J ::SoFieldContainer8Ñ :J :% €&€ˆˆ€‚ÿSoFieldContainer* :t :# €€€‚ÿNAMEoIJ :ã :& €’€”‘€€‚ÿSoFieldContainer - abstract base class for objects that contain fields3t ::# € €€‚ÿINHERITS FROMV!ã :l:5 :€B€”‘€ã}9€‰€€€‚ÿSoBase > SoFieldContainer2 :ž:& €€€€ ‚ÿSYNOPSIS|Ul::' €ª€”‘€€‚‚ÿ#include Methods from class SoFieldContainer:0°ž:VA:€ ΀a€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚ÿstatic SoTypegetClassTypeId()voidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfiel:VA:Ñ :dsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) const„:ÚB:r ²€%€T”A‚S~‚A㑶p6€‰ƒãþ —‰ãúß~6‰‚ãþ —‰ƒãúß~6‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolgetFieldName(const SoField *field,SbName &fieldName) constvirtual SoField *getEventIn(const SbName &fieldName) constvirtual SoField *getEventOut(const SbName &fieldName) constSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NVA:(C:/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÚB:_D:Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4(C:“D:& €€‚A€‚ÿDESCRIPTION Ü_D:œE:- (€¹€”‘€‚A€€‚ÿSoFieldContainer is the abstract base class for engines and nodes. It contains methods for finding out what fields an object has, controlling notification, and for dealing with all of the fields of an object at once.Ç“D:cF:* "€;€”‘€‚A€‚ÿThe fields of an engine are its inputs. Note that even though an engine's output corresponds to a specific type of field, an engine output is not a field.0 œE:“F:& €€‚A€‚ÿMETHODSU#cF:èF:2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()K"“F:3G:) "€D€”‘€‚A€‚ÿReturns the type of this class.CèF:vG:, (€.€T”A‚S~‚A€ƒ‚ÿvoidsetToDefaults()c:3G:ÙG:) "€t€”‘€‚A€‚ÿSets all fields in this object to their default values.V$vG:/H:2 4€H€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolhasDefaultValues() constý»ÙG:,J:B R€w€”‘€‚A€€€€€€€€€‚ÿReturns TRUE if all of the object's fields have their default values. This will return TRUE even if a field's isDefault() method returns FALSE - for example, if a field's default value is 0.0 and you setValue(0.0) that field, the default flag will be set to FALSE (because it would be too slow to compare the field against its default value every time setValue is called). However, hasDefaultValues() would return TRUE in this case.v>/H:¢J:8 @€|€T”A‚S~‚A㑶p6€‰ƒã¿\%†‰‚ÿSbBoolfieldsAreEqual(const SoFieldContainer *fc) constµ‹,J:WK:* "€€”‘€‚A€‚ÿReturns TRUE if this object's fields are exactly equal to fc's fields. If fc is not exactly same type as this object, FALSE is returned.W¢J:çK:9 B€®€T”A‚S~‚A€ƒã¿\%†‰ã‘¶p6‰‚ÿvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)óWK:M:* "€ç€”‘€‚A€‚ÿCopies the contents of fc's fields into this object's fields. fc must be the same type as this object. If copyConnections is TRUE, then if any of fc's fields are connected then this object's fields will also be connected to the same source.^,çK:bM:2 4€X€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolset(const char *fieldDataString)DM:¦N:0 .€)€”‘€‚A€€€‚ÿSets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format. TRUE is returned if the string was valid Open Inventor file format. For example, you could set the fields of an SoCube by doing:>bM:äN:( €,€Ù€‚A€‚ÿSoCube *cube = ....W/¦N:;O:( €^€Ù€‚A€‚ÿcube->set("width 1.0 height 2.0 depth 3.2");+äN:fO:( €€Ù€‚A€‚ÿZ(;O:ÀO:2 4€P€T”A‚S~‚A€ƒãXíʉ‚ÿvoidget(SbString &fieldDataString)RfO::6 :€9€”‘€‚A€€€€€‚ÿReturns tÀO::Ñ :he values of the fields of this object in the Open Inventor ASCII file format in the given string. Fields whose isDefault() bit is set will not be part of the string. You can use the field->get() method to get a field's value as a string even if has its default value.k9ÀO:‰:2 4€r€T”A‚S~‚A€ƒãÐPWÙ‰‚ÿvirtual intgetFields(SoFieldList &resultList) constr6:û‚:< F€m€”‘€‚A€€€€€€€‚ÿAppends pointers to all of this object's fields to resultList, and returns the number of fields appended. The types of the fields can be determined using field->isOfType() and field->getTypeId(), and their names can be determined by passing the field pointers to the getFieldName() method (see below).x@‰:sƒ:8 @€€€T”A‚S~‚A€ãþ —‰ƒãúß~6‰‚ÿvirtual SoField *getField(const SbName &fieldName) constª€û‚:„:* "€€”‘€‚A€‚ÿReturns a pointer to the field of this object whose name is fieldName. Returns NULL if there is no field with the given name.ŠKsƒ:§„:? N€–€T”A‚S~‚A㑶p6€‰ƒãþ —‰ãúß~6‰‚ÿSbBoolgetFieldName(const SoField *field,SbName &fieldName) const¡x„:H…:) "€ð€”‘€‚A€‚ÿReturns the name of the given field in the fieldName argument. Returns FALSE if field is not a member of this object.zB§„:Â…:8 @€„€T”A‚S~‚A€ãþ —‰ƒãúß~6‰‚ÿvirtual SoField *getEventIn(const SbName &fieldName) constŽeH…:P†:) "€Ê€”‘€‚A€‚ÿReturns a pointer to the eventIn with the given name. If no such eventIn exists, NULL is returned.{CÂ…:ˆ:8 @€†€T”A‚S~‚A€ãþ —‰ƒãúß~6‰‚ÿvirtual SoField *getEventOut(const SbName &fieldName) constgP†:[‡:) "€Î€”‘€‚A€‚ÿReturns a pointer to the eventOut with the given name. If no such eventOut exists, NULL is returned.U#ˆ:°‡:2 4€F€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisNotifyEnabled() constV&[‡:‰:0 .€M€”‘€‚A€€€‚ÿNotification is the process of telling interested objects that this object has changed. Notification is needed to make engines and sensors function, is used to keep SoPaths up to date when the scene graph's topology changes, and is also used to invalidate rendering or bounding box caches.Œb°‡:’Š:* "€Å€”‘€‚A€‚ÿNotification is normally enabled, but can be disabled on a node by node (or engine by engine) basis. If you are making extensive changes to a large part of the scene graph then disabling notification can increase performance, at the expense of increased responsibility for making sure that any interested engines, sensors or paths are kept up to date.W‰:Œ:* "€¯€”‘€‚A€‚ÿFor example, if you will be making a lot of changes to a small part of your scene graph and you know that there are no engines or sensors attached to nodes in that part of the scene graph, you might disable notification on the nodes you are changing, modify them, re-enable notification, and then touch() one of the nodes to cause a redraw.⸒Š:õŒ:* "€q€”‘€‚A€‚ÿHowever, you should profile your application and make sure that notification is taking a significant amount of time before going to the trouble of manually controlling notification._'Œ:T:8 @€N€T”A‚S~‚A㑶p6€‰ƒã‘¶p6‰‚ÿSbBoolenableNotify(SbBool flag)ÿÕõŒ:SŽ:* "€«€”‘€‚A€‚ÿNotification at this Field Container is enabled (if flag == TRUE) or disabled (if flag == FALSE). The returned Boolean value indicates whether notification was enabled immediately prior to applying this method.1 T:„Ž:& €€‚A€‚ÿSEE ALSO„1SŽ::S v€b€”‘€‚Aã— \选€ã5É´€‰€ã’n%9€‰€ãnY+€‰‚ÿSoSField, SoMField, SoNode, SoDB< „Ž:D:1: 4tU…uÂD:w:Ê:SoFieldList3:w:% €€ˆˆ€‚ÿSoFieldList*D:¡:# €€€‚ÿNAME]7w: À:& €n€”‘€€‚ÿSoFieldList - maintains a list of pointers to fields¡: À::3¡:?À:# € €€‚ÿINHERITS FROMR À:‘À:5 :€:€”‘€ãK2Å'€‰€€€‚ÿSbPList > SoFieldList2 ?À:ÃÀ:& €€€€ ‚ÿSYNOPSISg@‘À:*Á:' €€€”‘€€‚‚ÿ#include Methods from class SoFieldList:FëÃÀ:pÂ:[ „€×€T”A‚S~‚A€ƒ‚ƒ‚ƒãÐPWÙ‰‚ƒ‚ƒãþ —‰‚ƒãþ —‰‚ãþ —‰ƒ‚ƒãþ —‰‚ÿSoFieldList()SoFieldList(int size)SoFieldList(const SoFieldList &l)~SoFieldList()voidappend(SoField *ptr)voidinsert(SoField *ptr,int addBefore)SoField *operator [](int i) constvoidset(int i,SoField *field)O *Á:¿Â:/ .€@€”‘€‚A€ãK2Å'‰‚ÿMethods from class SbPList:b pÂ:!Ä:Y €€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒãK2Å'‰‚ãK2Å'‰ƒãK2Å'‰‚ƒãK2Å'‰‚ƒãK2Å'‰‚ÿintfind(const void *ptr) constvoidremove(int which)intgetLength() constvoidtruncate(int start)voidcopy(const SbPList &pl)SbPList &operator =(const SbPList &pl)intoperator ==(const SbPList &pl) constintoperator !=(const SbPList &pl) const4¿Â:UÄ:& €€‚A€‚ÿDESCRIPTIONše!Ä:ïÄ:5 :€Ê€”‘€‚A€€€€€‚ÿThis subclass of SbPList holds lists of pointers to instances of classes derived from SoField.0 UÄ:Å:& €€‚A€‚ÿMETHODS=ïÄ:\Å:, (€"€T”A‚S~‚A€ƒ‚ÿSoFieldList()8Å:”Å:) "€€”‘€‚A€‚ÿConstructor.E\Å:ÙÅ:, (€2€T”A‚S~‚A€ƒ‚ÿSoFieldList(int size)m>”Å:FÆ:/ .€|€”‘€‚A€€€‚ÿConstructor that pre-allocates storage for size pointers.Y'ÙÅ:ŸÆ:2 4€N€T”A‚S~‚A€ƒãÐPWÙ‰‚ÿSoFieldList(const SoFieldList &l)a8FÆ:Ç:) "€p€”‘€‚A€‚ÿConstructor that copies the contents of another list.>ŸÆ:>Ç:, (€$€T”A‚S~‚A€ƒ‚ÿ~SoFieldList()7Ç:uÇ:) "€€”‘€‚A€‚ÿDestructor.P>Ç:ÅÇ:2 4€<€T”A‚S~‚A€ƒãþ —‰‚ÿvoidappend(SoField *ptr)R)uÇ:È:) "€R€”‘€‚A€‚ÿAdds a pointer to the end of the list.`-ÅÇ:wÈ:3 6€Z€T”A‚S~‚A€ƒãþ —‰‚ÿvoidinsert(SoField *ptr,int addBefore)jAÈ:áÈ:) "€‚€”‘€‚A€‚ÿInserts given pointer in list before pointer with given index.Y'wÈ::É:2 4€N€T”A‚S~‚Aãþ —€‰ƒ‚ÿSoField *operator [](int i) constJ!áÈ:„É:) "€B€”‘€‚A€‚ÿAccesses an element of a list.W$:É:ÛÉ:3 6€H€T”A‚S~‚A€ƒãþ —‰‚ÿvoidset(int i,SoField *field)F„É:!Ê:) "€:€”‘€‚A€‚ÿSets an element of a list.1 ÛÉ:RÊ:& €€‚A€‚ÿSEE ALSO; !Ê:Ê:/ .€€”‘€‚Aãþ —€‰‚ÿSoField> RÊ:ËÊ:1r 5 u vÃËÊ:Ë:À;SoFieldSensor5Ê:Ë:% € €ˆˆ€‚ÿSoFieldSensor*ËÊ:*Ë:# €€€‚ÿNAMErLË:œË:& €˜€”‘€€‚ÿSoFieldSensor - sensor class that can be attached to Open Inventor fields3*Ë:ÏË:# € €€‚ÿINHERITS FROM™LœË:hÌ:M j€˜€”‘€ãrX.选€㜺餀‰€㤴u?€‰€€€‚ÿSoSensor > SoDelayQueueSensor > SoDataSensor > SoFieldSensor2 ÏË:šÌ:& €€€€ ‚ÿSYNOPSISwPhÌ:Í:' € €”‘€€‚‚ÿ#include Methods from class SoFieldSensor:磚Ì:øÍ:D V€G€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒãþ —‰‚ƒ‚ãþ —‰ƒ‚ÿSoFieldSensor()SoFieldSensor(SoSensorCB *func,void *data)~SoFieldSensor()voidattach(SoField *field)voiddetach()SoField *getAttachedField() constT%Í:LÎ:/ .€J€”‘€‚A€㤴u?‰‚ÿMethods from class SoDataSensor:DîøÍ:Ï:V z€Ý€T”A‚S~‚A€ƒ‚ã’n%9‰ƒ‚ãþ —‰ƒ‚ãMy'9‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDeleteCallback(SoSensorCB *function,void *data)SoNode *getTriggerNode() constSoField *getTriggerField() constSoPath *getTriggerPath() constvoidsetTriggerPathFlag(SbBool flag)SbBoolgetTriggerPathFlag() constZ+LÎ: ;/ .€V€”‘€‚A€㜺餉‚ÿMethods from class SoDelayQueueSensor:Ï: ;Ê:ë®Ï:÷;= H€]€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ÿvoidsetPriority(uint32_t pri)uint32_tgetPriority()static uint32_tgetDefaultPriority()virtual voidschedule()virtual voidunschedule()virtual SbBoolisScheduled()P! ;G;/ .€B€”‘€‚A€ãrX.鉂ÿMethods from class SoSensor:½Š÷;;3 4€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetFunction(SoSensorCB *callbackFunction)SoSensorCB *getFunction() constvoidsetData(void *callbackData)void *getData() const4G;8;& €€‚A€‚ÿDESCRIPTION×­;;* "€[€”‘€‚A€‚ÿField sensors detect changes to fields, calling a callback function whenever the field changes. The field may be part of a node, an input of an engine, or a global field.0 8;?;& €€‚A€‚ÿMETHODSo@;®;/ .€€€T”A‚S~‚A€ƒ‚ƒ‚ÿSoFieldSensor()SoFieldSensor(SoSensorCB *func,void *data)Ÿv?;M;) "€ì€”‘€‚A€‚ÿCreation methods. The second method takes the callback function and data to be called when the sensor is triggered.@®;;, (€(€T”A‚S~‚A€ƒ‚ÿ~SoFieldSensor()€WM; ;) "€®€”‘€‚A€‚ÿDestroys the sensor, freeing up any memory associated with it after unscheduling it.S;œ;< H€¦€T”A‚S~‚A€ƒãþ —‰‚ƒ‚ãþ —‰ƒ‚ÿvoidattach(SoField *field)voiddetach()SoField *getAttachedField() constw; ;;< F€w€”‘€‚A€€€€€€€‚ÿThe attach() method makes this sensor detect changes to the given field. The detach() method unschedules this sensor (if it is scheduled) and makes it ignore changes to the scene graph. The getAttachedField() method returns the field that this sensor is sensing, or NULL if it is not attached to any field.1 œ;D;& €€‚A€‚ÿSEE ALSO|5;À;G ^€j€”‘€‚AãTlˆW€‰€ã'€‰€㤴u?€‰‚ÿSoNodeSensor, SoPathSensor, SoDataSensor7D;÷;1BU…u§ˆvÄ÷;%;8N;SoFile. À;%;% €€ˆˆ€‚ÿSoFile*÷;O;# €€€‚ÿNAME\6%;«;& €l€”‘€€‚ÿSoFile - node that reads children from a named file3O;Þ;# € €€‚ÿINHERITS FROMˆ;«;f ;M j€v€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoFile2 Þ;˜ ;& €€€€ ‚ÿSYNOPSISf?f ;þ ;' €~€”‘€€‚‚ÿ#include Fields from class SoFile:F˜ ;D ;2 4€(€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringnameFþ ;Š ;) "€:€”‘€‚A€‚ÿMethods from class SoFile:ŠND ; ;< H€œ€T”A‚S~‚A€ƒ‚ã«]à—‰ƒ‚ãB-9‰ƒ‚ÿSoFile()SoGroup *copyChildren() conststatic SoTypegetClassTypeId()NŠ ;b ;/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:| ;Þ ;n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)b ;6 ;/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÞ ;›; 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH6 ;/@;@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSb›;/@;À;BoolenableNotify(SbBool flag)N›;}@;/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ/@;´A;Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4}@;èA;& €€‚A€‚ÿDESCRIPTION¤n´A;ŒC;6 :€Ý€”‘€‚A€€€€€‚ÿThis node represents a subgraph that was read from a named input file. When an SoFile node is written out, just the field containing the name of the file is written; no children are written out. When an SoFile is encountered during reading, reading continues from the named file, and all nodes read from the file are added as hidden children of the file node.˜bèA;$E;6 :€Å€”‘€‚A€€€€€‚ÿWhenever the name field changes, any existing children are removed and the contents of the new file is read in. The file node remembers what directory the last file was read from and will read the new file from the same directory after checking the standard list of directories (see SoInput), assuming the field isn't set to an absolute path name.ꢌC;G;H ^€E€”‘€‚A€€€€€€€€€€€‚ÿThe children of an SoFile node are hidden; there is no way of accessing or editing them. If you wish to edit the contents of an SoFile node, you can modify the contents of the named file and then "touch" the name field (see SoField). Alternatively, you can use the copyChildren() method to get a editable copy of the file node's children. Note that this does not affect the original file on disk, however./ $E;=G;& €€‚A€‚ÿFIELDSFG;ƒG;2 4€(€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringnameU,=G;ØG;) "€X€”‘€‚A€‚ÿName of file from which to read children.0 ƒG;H;& €€‚A€‚ÿMETHODS8 ØG;@H;, (€€T”A‚S~‚A€ƒ‚ÿSoFile()V-H;–H;) "€Z€”‘€‚A€‚ÿCreates a file node with default settings.U#@H;ëH;2 4€F€T”A‚S~‚Aã«]à—€‰ƒ‚ÿSoGroup *copyChildren() constP–H;jI;/ .€ €”‘€‚A€€€‚ÿReturns a new SoGroup containing copies of all of the file node's children.U#ëH;¿I;2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*jI;J;) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8¿I;JJ;& €$€‚A€‚ÿACTION BEHAVIORºpJ;K;J d€à€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ã¹_ØS‰ãàꉀ‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoHandleEventActiond2JJ;hK;2 4€d€”‘€‚A€€€€‚ÿTraverses its children just as SoGroup does.GK;¯K;2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction¤rhK;SL;2 4€ä€”‘€‚A€€€€‚ÿTraverses its hidden children, but, if intersections are found, generates paths that end at the SoFile node.E¯K;˜L;2 4€&€”‘€‚AãeY €‰€‚ÿSoWriteActionc1SL;ûL;2 4€b€”‘€‚A€€€€‚ÿWrites just the name field and no children.<˜L;7M;& €,€‚A€‚ÿFILE FORMAT/DEFAULT3 ûL;jM;* $€€P„7|‚€‚ÿFile {J7M;´M;- *€:€P„|‚€ƒ‚‚‚ÿname""}1 jM;åM;& €€‚€‚ÿSEE ALSOS´M;8N;; F€0€”‘€‚ãþßC˜€‰€ãMy'9€‰‚ÿSoInput, SoPath7åM;oN;1Ã( v¬xÅoN;N; <SoFont. 8N;N;% €€ˆˆ€‚ÿSoFont*oN;ÇN;# €€€‚ÿNAME_9N;&O;& €r€”‘€€‚ÿSoFont - node that defines font type and size for text3ÇN;YO;# € €€‚ÿINHERITS FROMˆ;&O;áO;M j€v€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoFont2 YO;€;& €€€áO;€;8N;€ ‚ÿSYNOPSISf?áO;…€;' €~€”‘€€‚‚ÿ#include Fields from class SoFont:]#€;â€;: D€F€T”A‚S~‚Aã¾b选ƒ‚ã0â1‰ƒ‚ÿSoSFNamenameSoSFFloatsizeF…€;(;) "€:€”‘€‚A€‚ÿMethods from class SoFont:a-â€;‰;4 8€Z€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoFont()static SoTypegetClassTypeId()N(;×;/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|‰;Sƒ;n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)×;«ƒ;/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØSƒ;†; 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH«ƒ;˜†;@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N†;æ†;/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ˜†;ˆ;Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4æ†;Qˆ;& €€‚A€‚ÿDESCRIPTIONèˆ;c‰;* "€Ñ€”‘€‚A€‚ÿThis node defines the current font type and point size for all subsequent text shapes in the scene graph. Depending on the font selected, text shapes may be generated as triangles (normal font) or lines (stroke font, see below). HQˆ;«‰;. ,€4€T”‘€s‚A€€‚ÿFonts on Win32 Systems›nc‰;F‹;- (€Ý€”‘€‚A€€‚ÿThere is a new Win32-specific convention for the font name specified in SoFont nodes. Unix (.ie. Adobe Type1) outline fonts typically have a separate "font name" for each style of the font. TrueType outline fonts typically have a single "family name" plus a "style". Therefore Open Inventor now recognizes a font name with the form "family : style". For example:D«‰;ŠŒ;= H€€”‘€‚±€ƒ€‚€ƒ€‚€€‚ÿUnix"Times-Roman-Bold"Win32:"Times New Roman : Bold"Note that TrueType font names can, and often do, contain spaces. Spaces before and after the ':' (colon) character are considered white space. The default font is the TrueType "Times New Roman" font.M!F‹;׌;, (€B€”‘€‚±€€‚ÿTypical family names include:X(ŠŒ;/;0 0€P€”‘€‚H€ƒƒƒ€‚ÿArialCourier NewTimes New Romant=׌;£;7 >€z€”‘€‚H€€‚€ƒƒƒ€‚ÿTypical style names include:BoldItalicBold Italic$ø/;Ç;, &€ñ€”‘€‚H€€‚ÿOther family and style names may be available on a particular system. Use the "Fonts" applet in the Windows "Control Panel" to display the available (installed) fonts. Only TrueType fonts can be used in Open Inventor. The family and style names listed above should be available on every Windows machine. Using other names may cause your program to be non-portable. If Open Inventor cannot find the specified family or style, it uses the first TrueType font in the list displayed by the Control Panel.üУ;ÏÁ;, &€¡€”‘€‚H€€‚ÿNote: In nonÇ;ÏÁ;8N;-English versions of Windows, the style names shown in the Control Panel may be specific to that language. For example, in French versions of Windows, "Gras" and "Italique" appear instead of "Bold" and "Italic". Open Inventor recognizes the language-specific style names for the version of Windows currently being used. In addition,Open Inventor always recognizes the English style names. For portability we recommend using the English style names.>Ç; Â;- *€"€T”‘€s‚H€€‚ÿFonts on UnixáÏÁ;Ã;/ ,€Ã€”‘€‚H€ã!§˜m‰‚ÿEnvironment variable OIV_PSFONT_PATH takes a colon-separated list of directories to search for Type1 (PostScript) fonts. If OIV_PSFONT_PATH is not set, Open Inventor searches a default path which depends on the platform.‰5 Â;¦Ã;T#x€jÁÝ €€”‘€€‚ÿ€€”‘€ÿ€€”‚ÿÿÿSolaris/usr/openwin/lib/X11/fonts/Type1/outline‡&Ã;-Ä;a#’€LÁÝ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€€”‚ÿÿÿAIX/usr/lib/X11/fonts/Type1/DPS’1¦Ã;¿Ä;a#’€bÁÝ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€€”‚ÿÿÿHP-UX/usr/lib/X11/fonts/type1.st/typefacesˆ'-Ä;GÅ;a#’€NÁÝ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€€”‚ÿÿÿOSF/usr/lib/X11/fonts/Type1Adobe†%¿Ä;ÍÅ;a#’€JÁÝ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€€”‚ÿÿÿLinux/usr/lib/X11/fonts/100dpi†%GÅ;SÆ;a#’€JÁÝ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€€”‚ÿÿÿOther/usr/lib/DPS/outline/base¸ÍÅ; Ç;( €!€”‘€€‚‚ÿWe recommend setting OIV_PSFONT_PATH to $OIVHOME/data/fonts:. For instance, for Solaris set OIV_PSFONT_PATH tof@SÆ;qÇ;& €€€Ù€€‚‚ÿ$OIVHOME/data/fonts:/usr/openwin/lib/X11/fonts/Type1/outline7 Ç;¨Ç;( €€T”‘€s€‚ÿStroke FontsoqÇ;Ë;[ „€)€”‘€€ãêwš€‰€ãhË€‰€€€‚‚‚ÿStroke fonts, which are drawn with vectors rather than triangles, can provide higher performance, and also better readability at small sizes. Stroke fonts can be used with SoText3 and SoAnnoText3, but not with other text nodes, such as SoAsciiText. Stroke fonts cannot be extruded.To use a stroke font, specify one of the following stroke font names:"TGS_Simplex_TGS""TGS_Simplex_Roman""TGS_Complex_Roman""TGS_Duplex_Roman""TGS_Triplex_Roman""TGS_Simplex_Script""TGS_Complex_Script""TGS_Simplex_Greek""TGS_Complex_Greek""TGS_Gothic_German""TGS_Gothic_Italian""TGS_Gothic_English""TGS_Complex_Cyrillic""TGS_Upper_Case_Mathematics""TGS_Lower_Case_Mathematics""TGS_Music""TGS_Meteorology""TGS_Symbols""TGS_Astrology""TGS_Complex_Italic""TGS_Triplex_Italic"ꥨÇ;Í;E X€M€”‘€€‚†"€+‚ãy‚2€‰€‚ã!§˜m‰‚ÿThe following figure shows an assortment of characters from each stroke font.Stroked fonts are subject to the current line attributes, line width and line pattern, which are specified with SoDrawStyle. By default, the stroke font files are found in %OIVHOME%/data/fonts. If you move them to a different directory, you must set the environment variable IV_STROKE_FONT_PATH to be the path to the new directory.L$Ë;MÍ;( €H€T”‘€s€‚ÿStroke Fonts - Kanji and Katakana?Í;ŒÏ;. *€#€”‘€€‚€€‚ÿAdditional stroke font files are available for Kanji and Katakana output. To produce Kanji or Katakana stroke output, set the font to any one of the stroke font names. Then, for the text string, pass the desired multi-byte character string (MBCS) to Open Inventor, using the usual techniques. The font file name is not used except as a flag to indicate that stroke output should be produced. On Win32 systems, if the current font is not one of the stroke fonts, the MBCS text string will be displayed using a Windows font. 0 MÍ;¼Ï;& €€€€‚ÿFIELDSDŒÏ; <2 4€$€T”A‚S~‚Aã¾b选ƒ‚ÿSoSFNamename¼Ï; <8N;²}¼Ï;¾<5 :€ú€”‘€‚A€€€€€‚ÿThis field defines the font name as a TrueType name. For example, Times Roman would be specified as "Times New Roman".E <<2 4€&€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatsize™p¾<œ<) "€à€”‘€‚A€‚ÿThis field defines the font size. The value is in points for 2D text and is in the current units for 3D text.0 <Ì<& €€‚A€‚ÿMETHODS8 œ<<, (€€T”A‚S~‚A€ƒ‚ÿSoFont()V-Ì<Z<) "€Z€”‘€‚A€‚ÿCreates a font node with default settings.U#<¯<2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Z<<) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8¯<:<& €$€‚A€‚ÿACTION BEHAVIOR›W<Õ<D X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActionk?:<@<, (€~€”‘€‚A€€‚ÿSets the font name and size in the current traversal state.<Õ<|<& €,€‚A€‚ÿFILE FORMAT/DEFAULT3 @<¯<* $€€P„7|‚€‚ÿFont {O |<þ</ .€@€P„|‚€ƒ‚ƒ‚‚‚ÿname"defaultFont"size10}1 ¯</<& €€‚€‚ÿSEE ALSOq*þ< <G ^€T€”‘€‚ãhË€‰€€ãéwš‰€ãêwš€‰‚ÿSoAnnoText3, SoText2, SoText3< /<Ü<1š§ˆv‰yÆÜ<<WL<SoFontStyle3 <<% €€ˆˆ€‚ÿSoFontStyle*Ü<9<# €€€‚ÿNAMEP*<‰<& €T€”‘€€‚ÿSoFontStyle - simple 3D text shape node39<¼<# € €€‚ÿINHERITS FROM¦M‰<b<Y ‚€š€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã·»9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoFont > SoFontStyle2 ¼<”<& €€€€ ‚ÿSYNOPSISP*b<ä<& €T€”‘€€‚ÿ#include Êc”<® <g œ€Ç€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€€ƒ€‚ÿenum Family{SoFontStyle::SERIFUse Serif style (such as Times-Roman)SoFontStyle::SANSUse Sans Serif style (such as Helvetica)SoFontStyle::TYPEWRITERUse fixed pitch style (such as Courier)}enum Style{SoFontStyle::NONENo modification to FamilySoFontStyle::BOLDEmbolden FamilySoFontStyle::ITALICItalicize or slant Family}J!ä<ø <) "€B€”‘€‚A€‚ÿFields from class SoFontStyle:b(® <Z <: D€P€T”A‚S~‚AãØtW选ƒ‚ã:YN‰ƒ‚ÿSoSFEnumfamilySoSFBitMaskstyleMø <§ </ .€<€”‘€‚A€ã·»9‰‚ÿFields from class SoFont:]#Z < <: D€F€T”A‚S~‚Aã¾b选ƒ‚ã0â1‰ƒ‚ÿSoSFNamenameSoSFFloatsizeK"§ <O <) "€D€”‘€‚A€‚ÿMethods from class SoFontStyle:‡K <Ö << H€–€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ãXíʉƒ‚ÿSoFontStyle()static SoTypegetClassTypeId()SbStringgetFontName()NO <$ </ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Ö <  <n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)$ <ø </ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ  <i@< 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbNameø <i@< < &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHø <ñ@<@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Ni@<?A</ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þñ@<vB<Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4?A<ªB<& €€‚A€‚ÿDESCRIPTIONëvB<ÅC<0 .€×€”‘€‚A€ãK¹wi‰‚ÿThis node defines the current font family and style for all subsequent text shapes in the scene graph. The node was implemented to support VRML 1.0. If you are using VRML 2.0, you should use SoVRMLFontStyle rather than this node. d8ªB<)D<, (€p€”‘€‚A€€‚ÿOn Windows, the font families are mapped as follows:rÅC<›D<W#~€6+ €€”‘€€‚ÿ€€”‘€ÿ€€”€‚ÿÿÿSERIFTimes New Romanu)D<E<d#˜€"+ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€€”€‚ÿÿÿSANSArial›D<‘E<d#˜€:+ €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€€”€‚ÿÿÿTYPEWRITERCourier New)E<ºE<& €€”‘€€‚ÿ, ‘E<æE<# €€€‚ÿFIELDSFºE<,F<2 4€(€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumfamilyN%æE<zF<) "€J€”‘€‚A€‚ÿDefines the family of font to use.H,F<ÂF<2 4€,€T”A‚S~‚Aã:YN€‰ƒ‚ÿSoSFBitMaskstyleVzF<AG<) "€¬€”‘€‚A€‚ÿDefines style modifications to the chosen font, either bold or italic or no change.0 ÂF<qG<& €€‚A€‚ÿMETHODS=AG<®G<, (€"€T”A‚S~‚A€ƒ‚ÿSoFontStyle()\3qG< H<) "€f€”‘€‚A€‚ÿCreates a font style node with default settings.U#®G<_H<2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* H<²H<) "€T€”‘€‚A€‚ÿReturns type identifier for this class.M_H<ÿH<2 4€6€T”A‚S~‚AãXíÊ€‰ƒ‚ÿSbStringgetFontName()~U²H<}I<) "€ª€”‘€‚A€‚ÿReturns the font name used by this node based on the settings of family and style.8ÿH<µI<& €$€‚A€‚ÿACTION BEHAVIOR›W}I<PJ<D X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActionnBµI<¾J<, (€„€”‘€‚A€€‚ÿSets the font family and style in the current traversal state.<PJ<úJ<& €,€‚A€‚ÿFILE FORMAT/DEFAULT8¾J<2K<* $€€P„7|‚€‚ÿFontStyle {k8úJ<K<3 6€p€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿname"defaultFont"size10familySERIFstyleNONE}1 2K<ÎK<& €€‚€‚ÿSEE ALSO‰6K<WL<S v€l€”‘€‚ãFCïÓ€‰€ã·»9€‰€ãéwš€‰€ãêwš€‰‚ÿSoAsciiText, SoFont, SoText2, SoText3AÎK<˜L<1¿!·|V}ǘL<ÐL<}Ì<SoGLRenderAction8WL<ÐL<% €&€ˆˆ€‚ÿSoGLRenderAction*˜L<úL<# €€€‚ÿNAME^8ÐL<XM<& €p€”‘€€‚ÿSoGLRenderAction - renders a scene graph using OpenGL3úL<‹M<# € €€‚ÿINHERITS FROMX#XM<ãM<5 :€F€”‘€ãïK€‰€€€‚ÿSoAction > SoGLRenderAction2 ‹M<N<& €€€€ ‚ÿSYNOPSISW1ãM<lN<& €b€”‘€€‚ÿ#include ­<N<%‚<q °€y€T”A‚S~‚A€ƒ‚ƒ‚ƒ€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€‚ÿtypedef AbortCodeSoGLRenderAbortCB(void *userData)typedef voidSoGLRenderPassCB(void *userData)enum TransparencyType{SoGLRenderAction::SCREEN_DOORUses stipple patterns for screen-door transparencySoGLRenderAction::ADDUses additive alpha blendingSoGLRenderAction::DELAYED_ADDlN<%‚<WL<Uses additive blending, rendering all transparent objects after opaque onesSoGLRenderAction::SORTED_OBJECT_ADDSame as DELAYED_ADD, but sorts transparent objects by distances of bounding boxes from cameraSoGLRenderAction::BLENDUses multiplicative alpha blendingSoGLRenderAction::DELAYED_BLENDUses multiplicative alpha blending, rendering all transparent objects after opaque onesSoGLRenderAction::SORTED_OBJECT_BLENDSame as DELAYED_BLEND, but sorts transparent objects by distances of bounding boxes from camera}ƒ1lN<¨ƒ<R r€c€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum AbortCode{SoGLRenderAction::CONTINUEContinue traversal as usualSoGLRenderAction::ABORTStop traversing the rest of the graphSoGLRenderAction::PRUNEDo not traverse this node or its children, but continueSoGLRenderAction::DELAYDelay rendering of this node until the second pass}P'%‚<øƒ<) "€N€”‘€‚A€‚ÿMethods from class SoGLRenderAction:3˨ƒ<+†<h ž€—€T”A‚S~‚A€ƒãñf‘¸‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã}ƒõ(‰ã}ƒõ(‰‚ƒã}ƒõ(‰ã}ƒõ(‰‚ƒ‚ƒ‚ƒ‚ÿSoGLRenderAction(const SbViewportRegion &viewportRegion)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetUpdateArea(const SbVec2f &origin,const SbVec2f &size)voidgetUpdateArea(SbVec2f &origin,SbVec2f &size) constvoidsetAbortCallback(SoGLRenderAbortCB *func,void *userData)voidsetTransparencyType(TransparencyType type)TransparencyTypegetTransparencyType() const‘;øƒ<¼‡<V z€w€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetSmoothing(SbBool smooth)SbBoolisSmoothing() constvoidsetNumPasses(int num)intgetNumPasses() constvoidsetPassUpdate(SbBool flag)SbBoolisPassUpdate() constvoidsetPassCallback(SoGLRenderPassCB *func,void *userData)voidsetCacheContext(uint32_t context)uint32_tgetCacheContext() constP!+†< ˆ</ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†¼‡<’‰<j ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4 ˆ<Ɖ<& €€‚A€‚ÿDESCRIPTION>’‰<‹<0 .€€”‘€‚A€€€‚ÿThis class traverses a scene graph and renders it using the OpenGL graphics library. It assumes that a valid window has been created and initialized for proper OpenGL rendering. The SoWinRenderArea class or any of its subclasses may be used to create such a window.0 Ɖ<4‹<& €€‚A€‚ÿMETHODSp>‹<¤‹<2 4€|€T”A‚S~‚A€ƒãñf‘¸‰‚ÿSoGLRenderAction(const SbViewportRegion &viewportRegion)ˆ_4‹<,Œ<) "€¾€”‘€‚A€‚ÿConstructor. The parameter defines the viewport region into which rendering will take place.­s¤‹<ÙŒ<: D€æ€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ÿvoidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() consta8,Œ<:<) "€p€”‘€‚A€‚ÿChanges/returns viewport region to use for rendering.Ë‚ÙŒ<Ž<I `€€T”A‚S~‚A€ƒã}ƒõ(‰ã}ƒõ(‰‚ƒã}ƒõ(‰ã}ƒõ(‰‚ÿvoidsetUpdateArea(const SbVec2f &origin,const SbVec2f &size)voidgetUpdateArea(SbVec2f &origin,SbVec2f &size) constÍ£:<Ò<* "€G€”‘€‚A€‚ÿSets/returns the current update area, which is the rectangular area of the viewport region that will actually be rendered into. This can be used for partial updates in applications that can manage them. The update area is specified in normalized viewport coordinates, where (0,0) is the lower left corner of the viewport and (1,1) is the upper right corner. The area is specified or returned as an origin and a size.nAŽ<LÀ<- *€‚€T”A‚S~‚A€ƒ‚ÿÒ<LÀ<WL<voidsetAbortCallback(SoGLRenderAbortCB *func,void *userData)÷ÍÒ<CÂ<* "€›€”‘€‚A€‚ÿSets callback to call during rendering to test for an abort condition. It will be called for each node that is traversed. This allows applications to terminate rendering prematurely if some condition occurs. The callback function should return one of the AbortCode codes to indicate whether traversal should continue. Use of the various codes in a callback can allow applications to modify Open Inventor's default order of rendering objects in a scene graph._LÀ<ÐÂ<. ,€¾€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetTransparencyType(TransparencyType type)TransparencyTypegetTransparencyType() constHCÂ<Ä<* "€=€”‘€‚A€‚ÿSets/returns transparency quality level to use when rendering. The default is SCREEN_DOOR. (Note that SCREEN_DOOR transparency does not work in the case where transparency values are specified for each vertex of a shape. If this is the case, use one of the other transparency types.)|BÐÂ<”Ä<: D€„€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetSmoothing(SbBool smooth)SbBoolisSmoothing() constÖ¬Ä<jÅ<* "€Y€”‘€‚A€‚ÿSets/returns smoothing flag. When on, smoothing uses OpenGL's line- and point-smoothing features to provide cheap antialiasing of lines and points. The default is FALSE.d6”Ä<ÎÅ<. ,€l€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetNumPasses(int num)intgetNumPasses() const´ŠjÅ<‚Ç<* "€€”‘€‚A€‚ÿSets/returns number of rendering passes for multipass rendering. Specifying more than one pass will result in antialiasing of the rendered scene, using OpenGL's accumulation buffer. (Camera nodes typically move their viewpoints a little bit for each pass to achieve the antialiasing.) Each additional pass provides better antialiasing, but requires more rendering time The default is 1 pass.|BÎÅ<þÇ<: D€„€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetPassUpdate(SbBool flag)SbBoolisPassUpdate() constÙ‚Ç<ÁÈ<* "€3€”‘€‚A€‚ÿSets/returns a flag indicating whether intermediate results are displayed after each antialiasing pass for progressive improvement (default is FALSE).l?þÇ<-É<- *€~€T”A‚S~‚A€ƒ‚ÿvoidsetPassCallback(SoGLRenderPassCB *func,void *userData)Þ´ÁÈ< Ê<* "€i€”‘€‚A€‚ÿSets a callback function to invoke between passes when antialiasing. Passing NULL (which is the default state) will cause a clear of the color and depth buffers to be performed.xJ-É<ƒÊ<. ,€”€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetCacheContext(uint32_t context)uint32_tgetCacheContext() consti? Ê<ìË<* "€€”‘€‚A€‚ÿSets/returns the OpenGL cache context. A cache context is just an integer identifying when OpenGL display lists (which are used for render caching) can be shared between render actions; for example, see the documentation on GLX contexts for information on when OpenGL display lists can be shared between GLX windows.1 ƒÊ<Ì<& €€‚A€‚ÿSEE ALSO`%ìË<}Ì<; F€J€”‘€‚AãÍ\Y€‰€ãÿ3È€‰‚ÿSoSeparator, SoWinRenderArea7Ì<´Ì<1‚¬x€zÈ´Ì<âÌ<?@=SoGate. }Ì<âÌ<% €€ˆˆ€‚ÿSoGate*´Ì< Í<# €€€‚ÿNAME\6âÌ<hÍ<& €l€”‘€€‚ÿSoGate - selectively copies its input to its output3 Í<›Í<# € €€‚ÿINHERITS FROMŠ=hÍ<%Î<M j€z€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoGate2 ›Í<WÎ<& €€€€ ‚ÿSYNOPSIShA%Î<¿Î<' €‚€”‘€€‚‚ÿ#include Inputs from class SoGate:x<WÎ<7Ï<< H€x€T”A‚S~‚AãU×S选ƒ‚ã%牃‚ƒ‚ÿSoSFBoolenableSoSFTriggertriggerinputF¿Î<}Ï<) "€:€”‘€‚A€‚ÿOutputs from class SoGate:D7Ï<ÁÏ<, (€0€T”A‚S~‚A€ƒ‚ÿ()outputF}Ï<=) "€:€”‘€‚A€‚ÿMethods from class SoÁÏ<=}Ì<Gate:PÁÏ<c=2 4€<€T”A‚S~‚A€ƒãB-9‰‚ÿSoGate(SoType inputType)P!=³=/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}c=³=ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)³= =/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eس=p= 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH =ø=@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Np=F=/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þø=}=Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4F=±=& €€‚A€‚ÿDESCRIPTIONW!}= =6 :€C€”‘€‚A€€€€€‚ÿThis engine selectively copies its input to its output. The type of the input field can be any subclass of SoMField. The type is specified when an instance of the class is created. For example, SoGate(SoMFFloat::getClassTypeId()) creates an engine that copies floating-point values.'ë±=/ =< F€×€”‘€‚A€€€€€€€‚ÿThe enable input controls continuous flow-through of values. While enable is TRUE, the input will be copied to the output. Alternatively, by touching the trigger input, you can copy a single value from the input to the output.Ë =ú =< F€€”‘€‚A€€€€€€€‚ÿNote that unlike most other engine fields, input and output are pointers. Note also that by default input does not contain any values./ / =) =& €€‚A€‚ÿINPUTSFú =o =2 4€(€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolenableJ!) =¹ =) "€B€”‘€‚A€‚ÿEnable continous flow-through.Jo = =2 4€0€T”A‚S~‚Aã%瀉ƒ‚ÿSoSFTriggertrigger@¹ =C =) "€.€”‘€‚A€‚ÿCopy a single value.@ =ƒ =, (€(€T”A‚S~‚A€ƒ‚ÿinputi@C =ì =) "€€€”‘€‚A€‚ÿThe value that is copied to the output when the gate is open.0 ƒ = =& €€‚A€‚ÿOUTPUTSDì =` =, (€0€T”A‚S~‚A€ƒ‚ÿ()outputc: =à =) "€t€”‘€‚A€‚ÿContains a copy of the input value if the gate is open.0 ` =ó =& €€‚A€‚ÿMETHODSPà =C=2 4€<€T”A‚S~‚A€ƒãB-9‰‚ÿSoGate(SoType inputType)lCó =¯=) "€†€”‘€‚A€‚ÿConstructor. The argument specifies the type of the input field.<C=ë=& €,€‚A€‚ÿFILE FORMAT/DEFAULT3 ¯==* $€€P„7|‚€‚ÿGate {f4ë=„=2 4€h€P„|‚€ƒ‚ƒ‚ƒ‚‚‚‚ÿtypeinput[]enableFALSEtrigger}1 =µ=& €€‚€‚ÿSEE ALSO~7„=?@=G ^€n€”‘€‚ãë\¼N€‰€ãÕŒy$€‰€ãJ –€‰‚ÿSoµ=?@=}Ì<EngineOutput, SoConcatenate, SoSelectOneGµ=†@=1â‰y‰{Ɇ@=Ä@=Z‹=SoGetBoundingBoxAction>?@=Ä@=% €2€ˆˆ€‚ÿSoGetBoundingBoxAction*†@=î@=# €€€‚ÿNAMEb<Ä@=PA=& €x€”‘€€‚ÿSoGetBoundingBoxAction - computes bounding box of a scene3î@=ƒA=# € €€‚ÿINHERITS FROM^)PA=áA=5 :€R€”‘€ãïK€‰€€€‚ÿSoAction > SoGetBoundingBoxAction2 ƒA=B=& €€€€ ‚ÿSYNOPSIS]7áA=pB=& €n€”‘€€‚ÿ#include þµB=nC=I `€k€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum ResetType{SoGetBoundingBoxAction::TRANSFORMTransformationSoGetBoundingBoxAction::BBOXBounding boxSoGetBoundingBoxAction::ALLBoth transform and bounding box}V-pB=ÄC=) "€Z€”‘€‚A€‚ÿMethods from class SoGetBoundingBoxAction:7¼nC=ûE={ Ä€y€T”A‚S~‚A€ƒãñf‘¸‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ã?çî$‰ƒ‚ãñ†Ï‰ƒ‚㨃õ(‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãMy'9‰ã‘¶p6‰‚ÿSoGetBoundingBoxAction(const SbViewportRegion &viewportRegion)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constSbBox3fgetBoundingBox() constSbXfBox3f &getXfBoundingBox()const SbVec3f &getCenter() constvoidsetInCameraSpace(SbBool flag)SbBoolisInCameraSpace() constvoidsetResetPath(const SoPath *path,SbBool resetBefore = TRUE,ResetType what = ALL)à›ÄC=ÛF=E X€7€T”A‚S~‚A€ãMy'9‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒ‚ÿconst SoPath *getResetPath() constSbBoolisResetPath() constSbBoolisResetBefore() constSoGetBoundingBoxAction::ResetTypegetWhatReset() constP!ûE=+G=/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†ÛF=±H=j ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4+G=åH=& €€‚A€‚ÿDESCRIPTIONÂ’±H=§J=0 .€%€”‘€‚A€€€‚ÿThis class is used to compute a 3D bounding box enclosing objects defined by a scene graph. The box is a rectangular prism. The action also computes the center point, which is defined differently for different objects. (For example, the center of an SoFaceSet is the average of its vertices' coordinates.) For a group, the center point is defined as the average of the centers of all shapes in it.ç¥åH=ŽL=B R€K€”‘€‚A€€€€€€€€€‚ÿEach bounding box is calculated as an SbXfBox3f, where the transformation matrix is defined so that the bounding box can be stored in the object space of the SoShape. When two bounding boxes are combined by a group node, the combination is performed so as to produce the smaller untransformed box. The result of the calculation by the action can be returned as an SbXfBox3f or as a world-space-aligned SbBox3f.k;§J=ùM=0 .€w€”‘€‚A€€€‚ÿTo calculate the bounding box of a subgraph bounded by two paths, specify the left edge of the subgraph with setResetPath(), and apply the action to the path that defines the right edge of the subgraph. The accumulated bounding box and transformation will be reset when the tail of the reset path is traversed.Ä”ŽL=½N=0 .€)€”‘€‚A€€€‚ÿIf the subgraph being traversed does not contain any shapes, the returned bounding box will be empty (that is, box.isEmpty() will return TRUE).0 ùM=íN=& €€‚A€‚ÿMETHODSvD½N=cO=2 4€ˆ€T”A‚S~‚A€ƒãñf‘¸‰‚ÿSoGetBoundingBoxAction(const SbViewportRegion &viewportRegion)ôÊíN=c€=* "€•€”‘€‚A€‚ÿConstructor takes viewport region to use for picking. Even though the bounding box computation may not involve a wcO=c€=?@=indow per se, some nodes need this information to determine their size and placement.­scO==: D€æ€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ÿvoidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constc:c€=s=) "€t€”‘€‚A€‚ÿSets/returns current viewport region to use for action.U#=È=2 4€F€T”A‚S~‚Aã?çî$€‰ƒ‚ÿSbBox3fgetBoundingBox() constY0s=!‚=) "€`€”‘€‚A€‚ÿReturns computed bounding box in world space.U#È=v‚=2 4€F€T”A‚S~‚Aãñ†Ï€‰ƒ‚ÿSbXfBox3f &getXfBoundingBox()qH!‚=ç‚=) "€€”‘€‚A€‚ÿReturns computed bounding box before transformation into world space.X&v‚=?ƒ=2 4€L€T”A‚S~‚A€㨃õ(‰ƒ‚ÿconst SbVec3f &getCenter() constY0ç‚=˜ƒ=) "€`€”‘€‚A€‚ÿReturns computed center point in world space.Y'?ƒ=ñƒ=2 4€N€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidsetInCameraSpace(SbBool flag)\2˜ƒ=M…=* "€e€”‘€‚A€‚ÿSet this flag to TRUE if you want the returned bounding box to be in the space of whatever camera is in the graph. Camera space is defined to have the viewpoint at the origin, with the direction of view along the negative z axis. This space can be used to determine distances of objects from the camera.U#ñƒ=¢…=2 4€F€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisInCameraSpace() constFM…=è…=) "€:€”‘€‚A€‚ÿReturns camera space flag.—]¢…=†=: D€º€T”A‚S~‚A€ƒãMy'9‰ã‘¶p6‰‚ÿvoidsetResetPath(const SoPath *path,SbBool resetBefore = TRUE,ResetType what = ALL)4è…=³‡=0 .€ €”‘€‚A€€€‚ÿIf a non-NULL path is specified, the action will reset the computed bounding box to be empty and/or the current transformation to identity. The resetBefore flag indicates whether to perform the reset before or after the tail node of the path is traversed.Z(†= ˆ=2 4€P€T”A‚S~‚A€ãMy'9‰ƒ‚ÿconst SoPath *getResetPath() constT+³‡=aˆ=) "€V€”‘€‚A€‚ÿReturns the current reset path, or NULL.Q ˆ=²ˆ=2 4€>€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisResetPath() const_6aˆ=‰=) "€l€”‘€‚A€‚ÿReturns TRUE if the current reset path is not NULL.S!²ˆ=d‰=2 4€B€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisResetBefore() constzK‰=Þ‰=/ .€–€”‘€‚A€€€‚ÿReturns TRUE if the resetBefore flag was specified for the reset path.e9d‰=CŠ=, (€r€T”A‚S~‚A€ƒ‚ÿSoGetBoundingBoxAction::ResetTypegetWhatReset() constmDÞ‰=°Š=) "€ˆ€”‘€‚A€‚ÿReturns what flags were specified to be reset for the reset path.1 CŠ=áŠ=& €€‚A€‚ÿSEE ALSOy2°Š=Z‹=G ^€d€”‘€‚Aã?çî$€‰€ãñ†Ï€‰€ã¹_ØS€‰‚ÿSbBox3f, SbXfBox3f, SoGetMatrixActionBáŠ=œ‹=1˜€zø†{Êœ‹=Õ‹=|Ê=SoGetMatrixAction9Z‹=Õ‹=% €(€ˆˆ€‚ÿSoGetMatrixAction*œ‹=ÿ‹=# €€€‚ÿNAMEhBÕ‹=gŒ=& €„€”‘€€‚ÿSoGetMatrixAction - computes transformation matrix for subgraph3ÿ‹=šŒ=# € €€‚ÿINHERITS FROMY$gŒ=óŒ=5 :€H€”‘€ãïK€‰€€€‚ÿSoAction > SoGetMatrixAction2 šŒ=%=& €€€€ ‚ÿSYNOPSISXóŒ=¤=' €°€”‘€€‚‚ÿ#include Methods from class SoGetMatrixAction:‚%=&=c ”€?€T”A‚S~‚A€ƒãñf‘¸‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ã4i¥‘‰ƒ‚ã4i¥‘‰ƒ‚ã4i¥‘‰ƒ‚ã4i¥‘‰ƒ‚ÿSoGetMatrixAction(const SbViewportRegion &newRegion)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constSbMatrix &getMatrix()SbMatrix &getInverse()SbMatrix &getTextureMatrix()SbMatrix &getTextureInverse()P!¤=v=/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†&=Á=j ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *nov=Á=Z‹=de)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4v=<Á=& €€‚A€‚ÿDESCRIPTIONøÎÁ=4Â=* "€€”‘€‚A€‚ÿThis action computes transformation matrices for a given subgraph. It computes the cumulative transformation matrix and its inverse, along with a cumulative texture transformation matrix and its inverse.tJ<Á=¨Ä=* "€•€”‘€‚A€‚ÿThis action is unlike most others in that it does not traverse downwards from groups. When applied to a node, it computes the matrix for just that node. (This makes sense for transformation nodes, but not for others, really.) It is much more useful when applied to a path. When applied to a path, it gathers the transformation info for all nodes in the path and those that affect nodes in the path, but it stops when it hits the last node in the path; it does not traverse downwards from it as other actions (such as rendering) do. This behavior makes the most sense for this action.0 4Â=ØÄ=& €€‚A€‚ÿMETHODSl:¨Ä=DÅ=2 4€t€T”A‚S~‚A€ƒãñf‘¸‰‚ÿSoGetMatrixAction(const SbViewportRegion &newRegion)å»ØÄ=)Æ=* "€w€”‘€‚A€‚ÿConstructor takes viewport region to use for picking. Even though the matrix computation may not involve a window per se, some nodes need this information to determine their placement.­sDÅ=ÖÆ=: D€æ€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ÿvoidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constc:)Æ=9Ç=) "€t€”‘€‚A€‚ÿSets/returns current viewport region to use for action.o5ÖÆ=¨Ç=: D€j€T”A‚S~‚Aã4i¥‘€‰ƒ‚ã4i¥‘‰ƒ‚ÿSbMatrix &getMatrix()SbMatrix &getInverse()êÀ9Ç=’È=* "€€”‘€‚A€‚ÿReturns cumulative transformation matrix and its inverse. Warning: the matrices returned by these routines should not be changed (unless you are implementing your own transformation nodes).}C¨Ç=É=: D€†€T”A‚S~‚Aã4i¥‘€‰ƒ‚ã4i¥‘‰ƒ‚ÿSbMatrix &getTextureMatrix()SbMatrix &getTextureInverse()òÈ’È=Ê=* "€‘€”‘€‚A€‚ÿReturns cumulative texture transformation matrix and its inverse. Warning: the matrices returned by these routines should not be changed (unless you are implementing your own transformation nodes).1 É=2Ê=& €€‚A€‚ÿSEE ALSOJÊ=|Ê=/ .€6€”‘€‚AããS¯+€‰‚ÿSoGetBoundingBoxActionJ2Ê=ÆÊ=1Ή{·|ËÆÊ=Ë=¯B>SoGetPrimitiveCountActionA|Ê=Ë=% €8€ˆˆ€‚ÿSoGetPrimitiveCountAction*ÆÊ=1Ë=# €€€‚ÿNAMEiCË=šË=& €†€”‘€€‚ÿSoGetPrimitiveCountAction - counts number of primitives in scene31Ë=ÍË=# € €€‚ÿINHERITS FROMa,šË=.Ì=5 :€X€”‘€ãïK€‰€€€‚ÿSoAction > SoGetPrimitiveCountAction2 ÍË=`Ì=& €€€€ ‚ÿSYNOPSISh.Ì=ïÌ=' €Ð€”‘€€‚‚ÿ#include Methods from class SoGetPrimitiveCountAction:#Í`Ì=Ï=V z€›€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ÿSoGetPrimitiveCountAction()virtual~SoGetPrimitiveCountAction()int32_tgetTriangleCount() constint32_tgetLineCount() constint32_tgetPointCount() constint32_tgetTextCount() constint32_tgetImageCount() constSbBoolcontainsNoPrimitives()SbBoolcontainsNonTriangleShapes() voidsetDecimationValue(SoDecimationTypeElement::Type type,float percentage = 1.0)SoDecimationTypeElement::TypegetDecimationType()SbBoolis3DTextCountedAsTriangles()À~ïÌ=ÒÏ=B T€ü€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetCount3DTextAsTriangles(SbBool treatAsTris) SbBoolcanApproximateCount()voidsetCanApproximate(SbBool onOff)P!Ï=.>/ .€B€”‘€‚A€ãïK‰‚ÒÏ=.>|Ê=ÿMethods from class SoAction:œ0ÒÏ=Ê>l ¦€a€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual~SoAction()virtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()).>ó>& €€‚A€‚ÿ4Ê>'>& €€‚A€‚ÿDESCRIPTION5 ó>\>* "€€”‘€‚A€‚ÿThis class counts the number of rendering primitives a scene would use to render. This can be used as an approximation of how long the scene would take to render. The primitives are divided into five categories: triangles, lines, points, text objects, and images.s='>Ï>6 :€{€”‘€‚A€€€€€‚ÿAfter applying the action to a path or scene graph, the results can be obtained with the functions getTriangleCount(), getLineCount(), etc. The decimation value can be altered before applying, which is useful for finding the minimum and maximum number of primitives the scene requires (use LOWEST and HIGHEST).Ã\>Ô>B R€‡€”‘€‚A€€€€€€€€€‚ÿ3D Text, such as SoText3, SoVRMLText and SoAsciiText, can be counted as either text or triangles. The function setCount3DTextAsTriangles() will determine how these objects are counted.@Ï>>0 .€!€”‘€‚A€€€‚ÿSome shapes, such as trimmed NURBS surfaces, can answer quicker if they are allowed to approximate how many primitives they will use instead of calculating an exact answer. If an exact answer is not required, passing TRUE to setCanApproximate() will speed the action.0 Ô>D>& €€‚A€‚ÿMETHODSrD>¶>. ,€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿSoGetPrimitiveCountAction()virtual~SoGetPrimitiveCountAction()GD>ý>) "€<€”‘€‚A€‚ÿConstructor and destructor.Ι¶>Ë>5 8€3€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿint32_tgetTriangleCount() constint32_tgetLineCount() constint32_tgetPointCount() constint32_tgetTextCount() constint32_tgetImageCount() constmDý>8 >) "€ˆ€”‘€‚A€‚ÿReturns counted number of primitives, one function for each type.T"Ë>Œ >2 4€D€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolcontainsNoPrimitives()e<8 >ñ >) "€x€”‘€‚A€‚ÿReturns TRUE if scene contains no primitives of any kind.Y'Œ >J >2 4€N€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolcontainsNonTriangleShapes()rIñ >¼ >) "€’€”‘€‚A€‚ÿReturns TRUE if scene contains some primitives that are not triangles.¸ˆJ >t >0 .€€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetDecimationValue(SoDecimationTypeElement::Type type,float percentage = 1.0)SoDecimationTypeElement::TypegetDecimationType()œs¼ > >) "€æ€”‘€‚A€‚ÿSets decimation type and percentage. Percentage should be a number between 0.0 and 1.0 (1.0 is full complexity).<t >L >) "€&€”‘€‚A€‚ÿType is one of :µ >M>L f€k€T”Ñ‚S~‚A€ƒ€€‚ƒ€‚€ƒ€‚€ƒ€‚ÿSoDecimationTypeElement::LOWESTLowest complexity possible for scene.SoDecimationTypeElement::HIGHESTHighest complexity possible for scene.SoDecimationTypeElement::AUTOMATICScene uses decimation percentage; LODs calculate range value and then adjust them with percentage.SoDecimationTypeElement::PERCENTAGEScene uses decimation percentage; LODs use child based solely on decimation without looking at camera position. `L >í>@ P€À€T”A‚S~‚A㑶p6€‰ƒ€‚€ƒã‘¶p6‰‚ÿSbBoolis3DTextCountedAsTriangles()voidsetCount3DTextAsTriangles(SbBool treatAsTris) ÝM>@>9 @€»€”‘€‚A€€€€€€‚ÿSoText3 can be counted two ways, as a triangle-based shaped, or as a text-based shape. This determines how SoText3 should be handled. The default is TRUE (SoText3 adds to the triangle count, not the text counter)í>@>|Ê=.‚Hí>‘@>: D€€T”A‚S~‚A㑶p6€‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolcanApproximateCount()voidsetCanApproximate(SbBool onOff)'ý@>¸A>* "€û€”‘€‚A€‚ÿSome shapes may be able to guess an approximate number of triangles without actually counting. In the interests of speed, and depending on how the results are used, a flag is available to allow shapes to approximate their count. The default is FALSE.1 ‘@>éA>& €€‚A€‚ÿSEE ALSOÆg¸A>¯B>_ Ž€Î€”‘€‚AãïK€‰€㊆Ř€‰€ãjhšö€‰€㼿ai€‰€ãùÉ€‰‚ÿSoAction, SoLevelOfSimplification, SoOctreeOrdering, SoRenderList, SoValueOrderingGéA>öB>1ºø†{Ã…xÌöB>4C>ÝŠ>SoGlobalSimplifyAction>¯B>4C>% €2€ˆˆ€‚ÿSoGlobalSimplifyAction*öB>^C># €€€‚ÿNAMEÙ²4C>7D>' €e€”‘€€‚ÿSoGlobalSimplifyAction - traverses the scene graph and collects all the triangles in a single list. This list is then simplified and the result is stored in a new scene graph.3^C>jD># € €€‚ÿINHERITS FROM@7D>ëD>A R€€€”‘€ãïK€‰€ãŸyU€‰€€€‚ÿSoAction > SoSimplifyAction > SoGlobalSimplifyAction2 jD>E>& €€€€ ‚ÿSYNOPSIS‰bëD>¦E>' €Ä€”‘€€‚‚ÿ#include Methods from class SoGlobalSimplifyAction:®E>ÅG>q °€]€T”A‚S~‚A€ƒãê–Ìv‰‚ƒ‚ƒ‚ƒ‚ãÍ\Y‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSoGlobalSimplifyAction(SoSimplifier *_simplifier)~SoGlobalSimplifyAction()void setSimplificationStrategy(Strategy st)Strategy getSimplificationStrategy()SoSeparator *getSimplifiedSceneGraph()voidgenerateNormals(SbBool g) SbBoolareNormalGenerated() const voidsetCatchAllShapesFlag(SbBool c) SbBool areAllShapesCatched() const void addShapeHintsNode(SbBool a) SbBool isShapeHintAdded() const X)¦E>H>/ .€R€”‘€‚A€ãŸyU‰‚ÿMethods from class SoSimplifyAction:ÁÅG>9J>[ „€ƒ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ãXíʉƒ‚ÿvoidsetSimplificationLevels(int num, const float levels[]) const float *getSimplificationLevels() const intgetNumSimplificationLevels() constvoidsetRanges(int num, const float newRanges[])const float *getRanges() constintgetNumRanges() constvoidsetSizeFactor(float size)floatgetSizeFactor() constvoidsetInlineLOD(SbBool i)SbBoolisInlineLOD() constvoidsetUrlName(const SbString name)const SbString getUrlName() constû²H>4K>I `€e€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒ‚ÿvoidsetVerbosity(SbBool v)SbBoolisVerbose() constvoidsetMinTriangles(int mt)intgetMinTriangles() constvoidsetRenderCulling(SbBool r)intisRenderCulling() constP!9J>„K>/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:œ04K> M>l ¦€a€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual~SoAction()virtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4„K>TM>& €€‚A€‚ÿDESCRIPTIONΤ M>"N>* "€I€”‘€‚A€‚ÿThis class traverses the scene graph and collects all the triangles in a single list. This list is then simplified and the result is stored in a new scene graph.vGTM>˜N>/ .€Ž€”‘€‚A€€€‚ÿThe SoGlobalSimplifyAction provides two simplification strategies:®„"N>FO>* "€ €”‘€‚A€‚ÿ- SIMPLIFY_GLOBALLY: all the triangles found in the scene graph are collected in a single object. Then this object is simplified.d˜N>ÓO>) "€È€”‘€‚A€‚ÿ- SIMPLIFY_BY_SUBGROUP: triangles are collected until a material change or a separator is found. IFO>(>6 :€'€”‘€‚A€€€ÓO>(>¯B>€€‚ÿThe generateNormals flag can be used to force per-vertex normal computation during an SoGlobalSimplifyAction. When not set, objects may appear faceted instead of appearing smooth. Setting the addShapeHints flag to TRUE tells Open Inventor to build normals at run-time.;ÓO>c‚>6 :€ €”‘€‚A€€€€€‚ÿBy default the SoGlobalSimplifyAction collects all the triangles even if they are part of a simple shape (cube, cone, sphere, text3...). Setting the addShapeHints flag to FALSE tells the action to collect triangles only if they belong to a complex shape.³~(>ƒ>5 :€ü€”‘€‚A€€€€€‚ÿThe getSimplifiedSceneGraph() method returns the root of the new scene graph after applying the SoGlobalSimplifyAction.0 c‚>Fƒ>& €€‚A€‚ÿMETHODS†Rƒ>̃>4 8€¤€T”A‚S~‚A€ƒãê–Ìv‰‚ƒ‚ÿSoGlobalSimplifyAction(SoSimplifier *_simplifier)~SoGlobalSimplifyAction()»‹Fƒ>‡„>0 .€€”‘€‚A€€€‚ÿConstructor and destructor. The algorithm used for simplifying is defined by the SoSimplifier class that is passed in the constructor.ƒŨ> …>. ,€ª€T”A‚S~‚A€ƒ‚ƒ‚ÿvoid setSimplificationStrategy(Strategy st)Strategy getSimplificationStrategy()Äš‡„>Î…>* "€5€”‘€‚A€‚ÿSets/gets the strategy used to determine how to group triangles into the simplified shapes. The choices are SIMPLIFY_GLOBALLY and SIMPLIFY_BY_SUBGROUP.^, …>,†>2 4€X€T”A‚S~‚AãÍ\Y€‰ƒ‚ÿSoSeparator *getSimplifiedSceneGraph()rIÎ…>ž†>) "€’€”‘€‚A€‚ÿThis returns the new scene graph which contains the simplified result.ƒI,†>!‡>: D€’€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidgenerateNormals(SbBool g) SbBoolareNormalGenerated() const i@ž†>Š‡>) "€€€”‘€‚A€‚ÿIf true, per-vertex normals are calculated while simplifying.…K!‡>ˆ>: D€–€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoid addShapeHintsNode(SbBool a) SbBool isShapeHintAdded() const ®Š‡>½ˆ>/ .€þ€”‘€‚A€€€‚ÿIf true, a shapeHints node is added to force smooth normals if they were not generated, and to turn on two-sided lighting.ŠPˆ>G‰>: D€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetCatchAllShapesFlag(SbBool c) SbBool areAllShapesCatched() const³~½ˆ>ú‰>5 :€ü€”‘€‚A€€€€€‚ÿIf true, simple shapes such as SoSphere, SoCone, etc. are faceted and simplified also. If false, then they are ignored.5 G‰>/Š>) "€€‚A€€‚ÿSEE ALSO®[ú‰>ÝŠ>S v€¶€”‘€‚AãïK€‰€㊆Ř€‰€ã` AÓ€‰€ãŸyU€‰‚ÿSoAction, SoLevelOfSimplification, SoShapeSimplifyAction, SoSimplifyAction8/Š>‹>1NÃ…xk~Í‹>D‹>Z?SoGroup/ ÝŠ>D‹>% €€ˆˆ€‚ÿSoGroup*‹>n‹># €€€‚ÿNAMEQ+D‹>¿‹>& €V€”‘€€‚ÿSoGroup - base class for all group nodes3n‹>ò‹># € €€‚ÿINHERITS FROM‰<¿‹>{Œ>M j€x€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup2 ò‹>­Œ>& €€€€ ‚ÿSYNOPSISiB{Œ>>' €„€”‘€€‚‚ÿ#include Methods from class SoGroup:¦­Œ>2>v º€M€T”A‚S~‚A€ƒ‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿSoGroup()SoGroup(int nChildren)voidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)U#>‡>2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()N2>Õ>/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|‡>]Á>n ª€€T”A‚S~‚A€ƒÕ>]Á>ÝŠ>㑶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Õ>µÁ>/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ]Á>Ä> 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHµÁ>¢Ä>@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÄ>ðÄ>/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¢Ä>'Æ>Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ðÄ>[Æ>& €€‚A€‚ÿDESCRIPTION`$'Æ>»È>< F€I€”‘€‚A€€€€€€€‚ÿThis node defines the base class for all group nodes. SoGroup is a node that contains an ordered list of child nodes. The ordering of the child nodes represents the traversal order for all operations (for example, rendering, picking, and so on). This node is simply a container for the child nodes and does not alter the traversal state in any way. During traversal, state accumulated for a child is passed on to each successive child and then to the parents of the group (SoGroup does not push or pop traversal state as SoSeparator does).0 [Æ>ëÈ>& €€‚A€‚ÿMETHODS9 »È>$É>, (€€T”A‚S~‚A€ƒ‚ÿSoGroup()HëÈ>lÉ>) "€>€”‘€‚A€‚ÿCreates an empty group node.F$É>²É>, (€4€T”A‚S~‚A€ƒ‚ÿSoGroup(int nChildren)Ë¡lÉ>}Ê>* "€C€”‘€‚A€‚ÿConstructor that takes approximate number of children. Space is allocated for pointers to the children, but the group does not contain any actual child nodes.S!²É>ÐÊ>2 4€B€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidaddChild(SoNode *child)N%}Ê>Ë>) "€J€”‘€‚A€‚ÿAdds a child as last one in group.j7ÐÊ>ˆË>3 6€n€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidinsertChild(SoNode *child,int newChildIndex)i@Ë>ñË>) "€€€”‘€‚A€‚ÿAdds a child so that it becomes the one with the given index.Y'ˆË>JÌ>2 4€N€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *getChild(int index) const_6ñË>©Ì>) "€l€”‘€‚A€‚ÿReturns pointer to child node with the given index._-JÌ>Í>2 4€Z€T”A‚S~‚A€ƒã’n%9‰‚ÿintfindChild(const SoNode *child) constmD©Ì>uÍ>) "€ˆ€”‘€‚A€‚ÿFinds index of given child within group. Returns -1 if not found.IÍ>¾Í>, (€:€T”A‚S~‚A€ƒ‚ÿintgetNumChildren() constGuÍ>Î>) "€<€”‘€‚A€‚ÿReturns number of children.J¾Í>OÎ>, (€<€T”A‚S~‚A€ƒ‚ÿvoidremoveChild(int index)V-Î>¥Î>) "€Z€”‘€‚A€‚ÿRemoves child with given index from group.V$OÎ>ûÎ>2 4€H€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidremoveChild(SoNode *child)]4¥Î>XÏ>) "€h€”‘€‚A€‚ÿRemoves first instance of given child from group.GûÎ>ŸÏ>, (€6€T”A‚S~‚A€ƒ‚ÿvoidremoveAllChildren()L#XÏ> ?) "€F€”‘€‚A€‚ÿRemoves all children from group.ŸÏ> ?ÝŠ>f3ŸÏ>r?3 6€f€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidreplaceChild(int index,SoNode *newChild)[2 ?Í?) "€d€”‘€‚A€‚ÿReplaces child with given index with new child.u<r?B?9 B€x€T”A‚S~‚A€ƒã’n%9‰ã’n%9‰‚ÿvoidreplaceChild(SoNode *oldChild,SoNode *newChild)b9Í?¤?) "€r€”‘€‚A€‚ÿReplaces first instance of given child with new child.U#B?ù?2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¤?L?) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ù?„?& €$€‚A€‚ÿACTION BEHAVIOR¸nL?<?J d€Ü€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãàê‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoHandleEventAction, SoRayPickActionN"„?Š?, (€D€”‘€‚A€€‚ÿTraverses each child in order.I<?Ó?2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixAction㶊?¶?- (€m€”‘€‚A€€‚ÿDoes nothing unless the group is in the middle of the path chain the action is being applied to. If so, the children up to and including the next node in the chain are traversed.FÓ?ü?2 4€(€”‘€‚AãòÓ}ª€‰€‚ÿSoSearchActiond¶?Œ?, (€È€”‘€‚A€€‚ÿIf searching for group nodes, compares with this group. Otherwise, continues to search children.Eü?Ñ?2 4€&€”‘€‚AãeY €‰€‚ÿSoWriteActionç´Œ?¸?3 4€i€”‘€‚A€€€€‚ÿWrites out the group node. This method also deals with any field data associated with the group node. As a result, this method is used for most subclasses of SoGroup as well.<Ñ?ô?& €,€‚A€‚ÿFILE FORMAT/DEFAULT4 ¸?(?* $€€P„7|‚€‚ÿGroup {0ô?X?+ &€ €P„|‚€‚‚ÿ}1 (?‰?& €€‚€‚ÿSEE ALSOÑfX?Z?k ¦€Ì€”‘€‚ãÝo§–€‰€ã¬ñ†€‰€ã™ü ;€‰€ãÅÌ€‰€ãÍ\Y€‰€ã0MÓ쀉‚ÿSoArray, SoLevelOfDetail, SoMultipleCopy, SoPathSwitch, SoSeparator, SoSwitchC‰??1:…V}ì‚Î?×?Ð ASoHandleBoxDragger:Z?×?% €*€ˆˆ€‚ÿSoHandleBoxDragger*? ?# €€€‚ÿNAME[×?‚ ?& €¶€”‘€€‚ÿSoHandleBoxDragger - box you can scale, stretch and translate by dragging with the mouse3 ?µ ?# € €€‚ÿINHERITS FROMï~‚ ?¤ ?q ²€ü€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoHandleBoxDragger2 µ ?Ö ?& €€€€ ‚ÿSYNOPSISZ¤ ?W ?' €´€”‘€€‚‚ÿ#include Fields from class SoHandleBoxDragger:l2Ö ?à ?: D€d€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fscaleFactorSoSFVec3ftranslationP!W ? ?/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:Hà ?[ ?2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW( ?² ?/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³i[ ?e ?J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO ² ?´ ?/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%e ? ?2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListZ+´ ?e?/ .€V€”‘€‚A€ã¢b‰‚ÿMethods from class SoHandleBoxDragger:¶z ??< H€ô€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoHandleBoxDragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"e?l?/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:K?ÃA?C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCall?ÃA?Z?lback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨l?¦B?; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)ÃA?þB?/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”U¦B?’C?? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"þB?ãC?/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:8®’C?F?Š â€]€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒ‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}ãC?ÚF?B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)NF?(G?/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÚF?¤H?n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)(G?üH?/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®¤H?/K?… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHüH?·K?@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N/K?L?/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ·K? key to constrain the motion to one of the two major directions in the plane. The constraint direction is chosen based on the next user gesture. Press the key and the dragger will translate perpendicular to that plane. The translation field is modified as the face is dragged.ô¾m€?A„?6 :€}€”‘€‚A€€€€€‚ÿBy default, dragging any of the small cubes scales about the center of the object. Pressing the key changes this: A corner cube will scale about its opposite corner. A center cube will scale about the center of its opposite face. Dragging one of the small cubes will usually result in changes to both the scaleFactor and translation fields. This is because any scale about a point other than the origin has a translation element.‹bM‚?Ì„?) "€Ä€”‘€‚A€‚ÿAs with all draggers, if you change the fields the dragger will move to match the new settings.«sA„?w…?8 @€æ€”‘€‚A€€€€€€‚ÿRemember: This is not an SoTransform!. If you want to move other objects with this dragger, you can either:ÊÌ„?}†?< F€•€”‘€‚A€€€€€€€‚ÿ[a] Use an SoHandleBoxManip, which is subclassed from SoTransform. It creates one of these draggers and uses it as the interface to change its fields. (see the SoHandleBoxManip reference page).£tw…? ‡?/ .€è€”‘€‚A€€€‚ÿ[b] Use field-to-field connections to connect the fields of this dragger to those of any SoTransformation node.a}†?‰?B R€?€”‘€‚A€€€€€€€€€‚ÿYou can change the parts in any instance of this dragger using setPart(). The default part geometries are defined as resources for this SoHandleBoxDragger class. They are detailed in the Dragger Resources section of the online reference page for this class. You can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/handleBoxDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ ‡?°‰?& €€‚A€‚ÿFIELDSL‰?ü‰?2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorA°‰?=Š?) "€0€”‘€‚A€‚ÿScale of the dragger.Lü‰?‰Š?2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationD=Š?ÍŠ?) "€6€”‘€‚A€‚ÿPosition of the dragger.0 ‰Š?ýŠ?& €€‚A€‚ÿMETHODSDÍŠ?A‹?, (€0€T”A‚S~‚A€ƒ‚ÿSoHandleBoxDragger()8ýŠ?y‹?) "€€”‘€‚A€‚ÿConstructor.uCA‹?î‹?2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/y‹?LŒ?/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#î‹?¡Œ?2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*LŒ?ôŒ?) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6¡Œ?*?& € €‚A€‚ÿCATALOG PARTS;ôŒ?e?- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜*?ý?~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/e?¼Ž?#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2ý?~?#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yesÁ1¼Ž?KÀ?#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€~?KÀ?Z?€€‚ÿÿÿsurroundScaleSurroundScale--yes»+~?Á?#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿtranslator1Separator--yesÁ1KÀ?ÇÁ?#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslator1ActiveSeparator--yes»+Á?‚Â?#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿtranslator2Separator--yesÁ1ÇÁ?CÃ?#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslator2ActiveSeparator--yes»+‚Â?þÃ?#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿtranslator3Separator--yesÁ1CÃ?¿Ä?#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslator3ActiveSeparator--yes»+þÃ?zÅ?#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿtranslator4Separator--yesÁ1¿Ä?;Æ?#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslator4ActiveSeparator--yes»+zÅ?öÆ?#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿtranslator5Separator--yesÁ1;Æ?·Ç?#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslator5ActiveSeparator--yes»+öÆ?rÈ?#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿtranslator6Separator--yesÁ1·Ç?3É?#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslator6ActiveSeparator--yes¹)rÈ?ìÉ?#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿextruder1Separator--yes¿/3É?«Ê?#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€(€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿextruder1ActiveSeparator--yes¹)ìÉ?dË?#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿextruder2Separator--yes¿/«Ê?#Ì?#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€(€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿextruder2ActiveSeparator--yes¹)dË?ÜÌ?#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿextruder3Separator--yes¿/#Ì?›Í?#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€(€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿextruder3ActiveSeparator--yes¹)ÜÌ?TÎ?#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿextruder4Separator--yes¿/›Í?Ï?#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€(€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿextruder4ActiveSeparator--yes¹)TÎ?ÌÏ?#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿextruder5Separator--yes¿/Ï?—@#ð€^ÜI, “ ’ €€ÌÏ?—@Z?ÿ€€€€‚ÿ€(€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿextruder5ActiveSeparator--yes¹)ÌÏ?P@#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿextruder6Separator--yes¿/—@@#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€(€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿextruder6ActiveSeparator--yes¸(P@Ç@#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿuniform1Separator--yes¾.@…@#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿuniform1ActiveSeparator--yes¸(Ç@=@#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿuniform2Separator--yes¾.…@û@#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿuniform2ActiveSeparator--yes¸(=@³@#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿuniform3Separator--yes¾.û@q@#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿuniform3ActiveSeparator--yes¸(³@)@#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿuniform4Separator--yes¾.q@ç@#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿuniform4ActiveSeparator--yes¸()@Ÿ@#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿuniform5Separator--yes¾.ç@] @#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿuniform5ActiveSeparator--yes¸(Ÿ@ @#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿuniform6Separator--yes¾.] @Ó @#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿuniform6ActiveSeparator--yes¸( @‹ @#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿuniform7Separator--yes¾.Ó @I @#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿuniform7ActiveSeparator--yes¸(‹ @ @#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿuniform8Separator--yes¾.I @¿ @#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿuniform8ActiveSeparator--yes¶& @u@#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿarrow1Separator--yes¶&¿ @+@#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿarrow2Separator--yes¶&u@á@#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿarrow3Separator--yes¶&+@£@@#ð€LÜI,á@£@@Z? “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿarrow4Separator--yes¶&á@YA@#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿarrow5Separator--yes¶&£@@B@#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿarrow6Separator--yes,YA@;B@' € €€‚€‚ÿa6B@œB@+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’1;B@.C@a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8œB@ÇC@a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=.C@D@' €,€€‚€‚ÿDRAGGER RESOURCES´ÇC@F@f š€i€PÍÇ~‚Í€ €ƒ‚€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:handleBoxTranslator1Part:translator1Appearance:White Line-Style SquareDescription:Top face of handleBox. Picking this initiates scaling in x-z plane.Resource:handleBoxTranslator2Part:translator2Appearance:White Line-Style SquareDescription:Bottom face of handleBox. Picking this initiates scaling in x-z plane.Resource:handleBoxTranslator3Part:translator3Appearance:White Line-Style Square/ÐD@MH@_ Œ€¡€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿDescription:Left face of handleBox. Picking this initiates scaling in y-z plane.Resource:handleBoxTranslator4Part:translator4Appearance:White Line-Style SquareDescription:Right face of handleBox. Picking this initiates scaling in y-z plane.Resource:handleBoxTranslator5Part:translator5Appearance:White Line-Style SquareDescription:Front face of handleBox. Picking this initiates scaling in x-y plane.Resource:handleBoxTranslator6²F@]J@^ Š€e€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿPart:translator6Appearance:White Line-Style SquareDescription:Back face of handleBox. Picking this initiates scaling in x-y plane.Resource:handleBoxTranslator1ActivePart:translator1ActiveAppearance:Yellow version of handleBoxTranslator1Description:Replaces handleBoxTranslator1 during dragging.Resource:handleBoxTranslator2ActivePart:translator2ActiveAppearance:Yellow version of handleBoxTranslator2'ÈMH@„L@_ Œ€‘€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿDescription:Replaces handleBoxTranslator2 during dragging.Resource:handleBoxTranslator3ActivePart:translator3ActiveAppearance:Yellow version of handleBoxTranslator3Description:Replaces handleBoxTranslator3 during dragging.Resource:handleBoxTranslator4ActivePart:translator4ActiveAppearance:Yellow version of handleBoxTranslator4Description:Replaces handleBoxTranslator4 during dragging.Resource:handleBoxTranslator5Active ­]J@N@^ Š€[€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿPart:translator5ActiveAppearance:Yellow version of handleBoxTranslator5Description:Replaces handleBoxTranslator5 during dragging.Resource:handleBoxTranslator6ActivePart:translator6ActiveAppearance:Yellow version of handleBoxTranslator6Description:Replaces handleBoxTranslator6 during dragging.Resource:handleBoxExtruder1Part:extruder1Appearance:Small white cube at (0,1.25,0) with line to origin µ„L@¦€@V z€k€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿDescription:Selecting this part initiates 1-D scaling along Y axis.Resource:handleBoxExtruder2Part:extruder2Appearance:Small white cube at (0,-1.25,0) with line to originDescription:Selecting this part initiates 1-D scaling along Y axis.Resource:handleBoxExtruder3N@¦€@Z?Part:extruder3Appearance:Small white cube at (-1.25,0,0) with line to originDescription:Selecting this part initiates 1-D scaling along X axis.GàN@í‚@g œ€Á€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:handleBoxExtruder4Part:extruder4Appearance:Small white cube at (1.25,0,0) with line to originDescription:Selecting this part initiates 1-D scaling along X axis.Resource:handleBoxExtruder5Part:extruder5Appearance:Small white cube at (0,0,1.25) with line to originDescription:Selecting this part initiates 1-D scaling along Z axis.Resource:handleBoxExtruder6Part:extruder6Appearance:Small white cube at (0,0,-1.25) with line to origin¿¦€@ …@_ Œ€€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿDescription:Selecting this part initiates 1-D scaling along Z axis.Resource:handleBoxExtruder1ActivePart:extruder1ActiveAppearance:Yellow version of handleBoxExtruder1Description:Replaces handleBoxExtruder1 during dragging.Resource:handleBoxExtruder2ActivePart:extruder2ActiveAppearance:Yellow version of handleBoxExtruder1Description:Replaces handleBoxExtruder1 during dragging.Resource:handleBoxExtruder3Active7×í‚@B‡@` Ž€¯€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿPart:extruder3ActiveAppearance:Yellow version of handleBoxExtruder3Description:Replaces handleBoxExtruder3 during dragging.Resource:handleBoxExtruder4ActivePart:extruder4ActiveAppearance:Yellow version of handleBoxExtruder4Description:Replaces handleBoxExtruder4 during dragging.Resource:handleBoxExtruder5ActivePart:extruder5ActiveAppearance:Yellow version of handleBoxExtruder5Description:Replaces handleBoxExtruder5 during dragging.!º …@c‰@g œ€u€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:handleBoxExtruder6ActivePart:extruder6ActiveAppearance:Yellow version of handleBoxExtruder6Description:Replaces handleBoxExtruder6 during dragging.Resource:handleBoxUniform1Part:uniform1Appearance:Small white cube in (+x+y+z) corner of handleBoxDescription:Picking this initiates uniform scaling.Resource:handleBoxUniform2Part:uniform2Appearance:Small white cube in (+x+y-z) corner of handleBoxªB‡@q‹@d –€U€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚ÿDescription:Picking this initiates uniform scaling.Resource:handleBoxUniform3Part:uniform3Appearance:Small white cube in (+x-y+z) corner of handleBoxDescription:Picking this initiates uniform scaling.Resource:handleBoxUniform4Part:uniform4Appearance:Small white cube in (+x-y-z) corner of handleBoxDescription:Picking this initiates uniform scaling.Resource:handleBoxUniform5Part:uniform5¸c‰@@X ~€q€PÍÇ~‚Í€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿAppearance:Small white cube in (-x+y+z) corner of handleBoxDescription:Picking this initiates uniform scaling.Resource:handleBoxUniform6Part:uniform6Appearance:Small white cube in (-x+y-z) corner of handleBoxDescription:Picking this initiates uniform scaling.Resource:handleBoxUniform7Part:uniform7Appearance:Small white cube in (-x-y+z) corner of handleBoxDescription:Picking this initiates uniform scaling..Çq‹@¯@g œ€€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:handleBoxUniform8Part:uniform8Appearance:Small white cube in (-x-y-z) corner of handleBoxDescription:Picking this initiates uniform scaling.Resource:handleBoxUniform1ActivePart:uniform1ActiveAppearance:Yellow version of handleBoxUniform1ActiveDescription:Replaces handleBoxUniform1Active during dragging.Resource:handleBoxUniform2ActivePart:uniform2ActiveAppearance:Yellow version of handleBoxUniform1Active'È@âÁ@_ Œ€‘€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ¯@âÁ@Z?ƒ‚ƒ‚‚ƒ€€ ‚ÿDescription:Replaces handleBoxUniform1Active during dragging.Resource:handleBoxUniform3ActivePart:uniform3ActiveAppearance:Yellow version of handleBoxUniform1ActiveDescription:Replaces handleBoxUniform1Active during dragging.Resource:handleBoxUniform4ActivePart:uniform4ActiveAppearance:Yellow version of handleBoxUniform1ActiveDescription:Replaces handleBoxUniform1Active during dragging.Resource:handleBoxUniform5Active±¯@ñÃ@^ Š€c€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿPart:uniform5ActiveAppearance:Yellow version of handleBoxUniform1ActiveDescription:Replaces handleBoxUniform1Active during dragging.Resource:handleBoxUniform6ActivePart:uniform6ActiveAppearance:Yellow version of handleBoxUniform1ActiveDescription:Replaces handleBoxUniform1Active during dragging.Resource:handleBoxUniform7ActivePart:uniform7ActiveAppearance:Yellow version of handleBoxUniform1Active´âÁ@ Æ@d –€i€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚ÿDescription:Replaces handleBoxUniform1Active during dragging.Resource:handleBoxUniform8ActivePart:uniform8ActiveAppearance:Yellow version of handleBoxUniform1ActiveDescription:Replaces handleBoxUniform1Active during dragging.Resource:handleBoxArrow1Part:arrow1Appearance:Purple Arrow, pointing upDescription:Displayed when translating if Y direction is permitted.Resource:handleBoxArrow2Part:arrow2 ¿ñÃ@)È@a €€PÍÇ~‚Í€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿAppearance:Purple Arrow, pointing downDescription:Displayed when translating if Y direction is permitted.Resource:handleBoxArrow3Part:arrow3Appearance:Purple Arrow, pointing leftDescription:Displayed when translating if X direction is permitted.Resource:handleBoxArrow4Part:arrow4Appearance:Purple Arrow, pointing rightDescription:Displayed when translating if X direction is permitted.Resource:handleBoxArrow5k Æ@”É@L f€?€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ÿPart:arrow5Appearance:Purple Arrow, pointing forwardDescription:Displayed when translating if Z direction is permitted.Resource:handleBoxArrow6Part:arrow6Appearance:Purple Arrow, pointing backwardDescription:Displayed when translating if Z direction is permitted.<)È@ÐÉ@& €,€‚Í€‚ÿFILE FORMAT/DEFAULT?”É@Ê@* $€*€P„7|‚€‚ÿHandleBoxDragger {ÕÐÉ@,Ì@H ^€«€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEtranslation0 0 0scaleFactor1 1 1callbackListNULLsurroundScaleNULLtranslator1translator1Activetranslator2translator2Activetranslator3translator3Active$æÊ@PÎ@> J€Í€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿtranslator4translator4Activetranslator5translator5Activetranslator6translator6Activeextruder1extruder1Activeextruder2extruder2Active0ð,Ì@ŒA@ N€á€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿextruder3extruder3Activeextruder4extruder4Activeextruder5extruder5Activeextruder6extruder6ActivePÎ@ŒAZ?uniform1uniform1Activeuniform2,ìPÎ@¸A@ N€Ù€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿuniform2Activeuniform3uniform3Activeuniform4uniform4Activeuniform5uniform5Activeuniform6uniform6Activeuniform7uniform7Activec(ŒAA; D€Q€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿuniform8uniform8Activearrow1arrow2arrow3arrow4arrow5arrow6},¸AGA) "€€”‘€‚€‚ÿ-AtA& €€‚€‚ÿNOTEä¨GAXA< F€Q€”‘€‚€€€€€€€‚ÿUnlike most multi-function draggers, SoHandleBoxDragger is not a compound dragger made up of other draggers that perform its smaller tasks. This is not because it was inappropriate, but because was written before implementation of the methods that synchronize multiple child draggers. The younger SoTransformBoxDragger has similarities to the handle box dragger, but the transform box dragger is a compound dragger.1 tA‰A& €€‚€‚ÿSEE ALSOGXAÐ A, &‚7€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2DraggerA‰A A1Ík~€ƒÏ AI Að‚ASoHandleBoxManip8Ð AI A% €&€ˆˆ€‚ÿSoHandleBoxManip* As A# €€€‚ÿNAME„^I A÷ A& €¼€”‘€€‚ÿSoHandleBoxManip - transform node with 3D Interface for editing ScaleFactor and Translation3s A* A# € €€‚ÿINHERITS FROM÷…÷ A! Ar ²€ €”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€ã¼ýÓ€‰€ã%n’ €‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform > SoTransformManip > SoHandleBoxManip2 * AS A& €€€€ ‚ÿSYNOPSIS~Q! AÑ A- *€¢€”‘€€‚ã¼ýÓ‰‚ÿ#include Fields from class SoTransform:Ï}S A  AR t€ú€T”A‚S~‚Aã”5€‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3ftranslationSoSFRotationrotationSoSFVec3fscaleFactorSoSFRotationscaleOrientationSoSFVec3fcenterX)Ñ Aø A/ .€R€”‘€‚A€ãöñõ‰‚ÿMethods from class SoHandleBoxManip:k7  AcA4 8€n€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoHandleBoxManip()static SoTypegetClassTypeId()X)ø A»A/ .€R€”‘€‚A€ã%n’ ‰‚ÿMethods from class SoTransformManip:×cA’AV z€€T”A‚S~‚AãÈï?†€‰ƒ‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒãMy'9‰ã¼ýÓ‰‚ÿSoDragger *getDragger()SbBoolreplaceNode(SoPath *p )SbBoolreplaceManip(SoPath *p,SoTransform *newOne ) constS$»A @A/ .€H€”‘€‚A€ã¼ýÓ‰‚ÿMethods from class SoTransform:’A @AÐ A Ž’ABA Ì€€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰‚ƒã4i¥‘‰‚ƒã¥W7ž‰‚ÿvoidpointAt(const SbVec3f &fromPoint,const SbVec3f &toPoint)voidgetScaleSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetRotationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetTranslationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidmultLeft(const SbMatrix &mat)voidmultRight(const SbMatrix &mat)voidcombineLeft(SoTransformation *nodeOnRight)Ç„ @AàBAC T€ €T”A‚S~‚A€ƒã¥W7ž‰‚ƒã4i¥‘‰‚ƒã¨ƒõ(‰‚ÿvoidcombineRight(SoTransformation *nodeOnLeft)voidsetMatrix(const SbMatrix &mat)voidrecenter(const SbVec3f &newCenter)NBA.CA/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|àBAªDAn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X).CAEA/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eتDAgGA 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHEAïGA@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NgGA=HA/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞïGAtIAY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4=HA¨IA& €€‚A€‚ÿDESCRIPTIONê±tIA’JA9 @€c€”‘€‚A€€€€€€‚ÿSoHandleBoxManip is derived from SoTransform (by way of SoTransformManip). When its fields change, nodes following it in the scene graph rotate, scale, and/or translate.ð´¨IA‚KA< F€i€”‘€‚A€€€€€€€‚ÿAs a subclass of SoTransformManip, this manip also has a 3D interface to edit some of its fields. In this case, the interface edits the scaleFactor and translation fields. Ô’JAŒLA6 :€©€”‘€‚A€€€€€‚ÿA manipulator differs from a dragger. When you move a dragger, no other nodes are affected. When you move an SoTransformManip, other nodes move along with it. (See the reference page for SoTransformManip).t2‚KANAB R€e€”‘€‚A€€€€€€€€€‚ÿThe interface for an SoHandleBoxManip is exactly the same as that of the SoHandleBoxDragger. To find out more about the interface, see the reference page for SoHandleBoxDragger. To find out how the manipulator uses a dragger to provide its interface, see the reference page for SoTransformManip.õ¿ŒLAõNA6 :€€”‘€‚A€€€€€‚ÿOn screen, this manip will surround the objects influenced by its motion. This is because it turns on the surroundScale part of the dragger (See the reference page for SoSurroundScale)0 NA%OA& €€‚A€‚ÿMETHODSBõNAgOA, (€,€T”A‚S~‚A€ƒ‚ÿSoHandleBoxManip()8%OAŸOA) "€€”‘€‚A€‚ÿConstructor.U#gOA €A2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()ŸOA €AÐ AS*ŸOA_€A) "€T€”‘€‚A€‚ÿReturns type identifier for this class.< €A›€A& €,€‚A€‚ÿFILE FORMAT/DEFAULT=_€AØ€A* $€&€P„7|‚€‚ÿHandleBoxManip {—b›€AoA5 :€Ä€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0 0rotation0 0 1 0scaleFactor1 1 1scaleOrientation0 0 1 0center0 0 0}1 Ø€A A& €€‚€‚ÿSEE ALSOPÀoAð‚A ”‘€‚ãõ+cÛ€‰€ã¢b€‰€ã+¯€‰€㇫¬l€‰€ã›Ø1Ù€‰€ãr“žN€‰€ãøÀ‰€ã¼ýÓ€‰€ã%n’ €‰‚ÿSoCenterballManip, SoHandleBoxDragger, SoJackManip, SoTabBoxManip, SoTrackballManip, SoTransformBoxManip, SoTransformerManip, SoTransform, SoTransformManipD A4ƒA1Üì‚[†ƒÐ4ƒAoƒA ÊASoHandleEventAction;ð‚AoƒA% €,€ˆˆ€‚ÿSoHandleEventAction*4ƒA™ƒA# €€€‚ÿNAMEnHoƒA„A& €€”‘€€‚ÿSoHandleEventAction - allows nodes in a graph to receive input events3™ƒA:„A# € €€‚ÿINHERITS FROM[&„A•„A5 :€L€”‘€ãïK€‰€€€‚ÿSoAction > SoHandleEventAction2 :„AÇ„A& €€€€ ‚ÿSYNOPSISƒ\•„AJ…A' €¸€”‘€€‚‚ÿ#include Methods from class SoHandleEventAction:šÇ„A[‡Aw ¼€5€T”A‚S~‚A€ƒãñf‘¸‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã2™|—‰‚ã2™|—‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒã’n%9‰‚ƒ‚ã’n%9‰ƒ‚ƒã’n%9‰‚ÿSoHandleEventAction(const SbViewportRegion &viewportRegion)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetEvent(const SoEvent *ev)const SoEvent *getEvent() constvoidsetHandled()SbBoolisHandled() constvoidsetGrabber(SoNode *node)voidreleaseGrabber()SoNode *getGrabber() constvoidsetPickRoot(SoNode *node)é¤J…ADˆAE X€I€T”A‚S~‚Aã’n%9€‰ƒ‚ƒ‚ã¼B‘S‰ƒ‚㦮´*‰ƒ‚ÿSoNode *getPickRoot() constvoidsetPickRadius(float radiusInPixels)const SoPickedPoint *getPickedPoint()const SoPickedPointList &getPickedPointList()P![‡A”ˆA/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†DˆAŠAj ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4”ˆANŠA& €€‚A€‚ÿDESCRIPTIONöÆŠAD‹A0 .€€”‘€‚A€€€‚ÿThis class is used to allow nodes in a scene graph to handle input events. It is usually invoked from a component derived from SoWinRenderArea when the component receives a window system event.DNŠAˆŒA* "€5€”‘€‚A€‚ÿManipulator, dragger and selection nodes respond to and process events. Most other group nodes just pass the event to their children, while most other nodes simply ignore the action entirely. Once a node has indicated to the action that it has handled the event, traversal stops.ìÂD‹AtA* "€…€”‘€‚A€‚ÿA node that handles an event can also grab future events. Once it has done so, all events will be sent directly to that node, with no traversal taking place, until the node releases the grab.0 ˆŒA¤A& €€‚A€‚ÿMETHODSsAtAŽA2 4€‚€T”A‚S~‚A€ƒãñf‘¸‰‚ÿSoHandleEventAction(const SbViewportRegion &viewportRegion)g¤A§ŽA) "€Î€”‘€‚A€‚ÿConstructor takes viewport region to use; this is needed to perform a pick operation when requested.­sŽATA: D€æ€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ÿvoidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constc:§ŽA·A) "€t€”‘€‚A€‚ÿSets/returns current viewport region to use for action.‚HTAEÀA: D€€T”A‚S~‚A€ƒã2™|—‰‚ã2™|—‰ƒ‚ÿvoidsetEvent(·AEÀAð‚Aconst SoEvent *ev)const SoEvent *getEvent() constQ(·A–ÀA) "€P€”‘€‚A€‚ÿSets/returns the event being handled.c/EÀAùÀA4 8€^€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚ÿvoidsetHandled()SbBoolisHandled() constd;–ÀA]ÁA) "€v€”‘€‚A€‚ÿSets/returns whether any node has yet handled the event.T"ùÀA±ÁA2 4€D€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidsetGrabber(SoNode *node)–m]ÁAGÂA) "€Ú€”‘€‚A€‚ÿInitiates grabbing of future events. All events will be sent to the given node until the grab is released.D±ÁA‹ÂA, (€0€T”A‚S~‚A€ƒ‚ÿvoidreleaseGrabber()>GÂAÉÂA) "€*€”‘€‚A€‚ÿReleases the grab.R ‹ÂAÃA2 4€@€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *getGrabber() constyPÉÂA”ÃA) "€ €”‘€‚A€‚ÿReturns the node that is currently grabbing events, or NULL if there is none.|BÃAÄA: D€„€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvoidsetPickRoot(SoNode *node)SoNode *getPickRoot() const¤{”ÃA´ÄA) "€ö€”‘€‚A€‚ÿSets/returns the root node used for initiating a pick action for those nodes that want to know what is under the cursor.W+ÄA ÅA, (€V€T”A‚S~‚A€ƒ‚ÿvoidsetPickRadius(float radiusInPixels).þ´ÄA9ÆA0 .€ý€”‘€‚A€€€‚ÿSet the radius (in pixels) around the viewport-space point through which the ray passes when doing ray picking. Ray picking is performed when getPickedPoint() is called. The pick radius set here is used when testing the ray against lines and points.]+ ÅA–ÆA2 4€V€T”A‚S~‚A€ã¼B‘S‰ƒ‚ÿconst SoPickedPoint *getPickedPoint()ï¹9ÆA…ÈA6 :€s€”‘€‚A€€€€€‚ÿReturns the frontmost object hit (as an SoPickedPoint) by performing a pick based on the mouse location specified in the event for which the action is being applied. The first time this is called for a particular event, an SoRayPickAction is applied to find this object; subsequent calls for the same event return the same information. The storage for the picked point remains valid as long as the action is not re-applied or deleted.e3–ÆAêÈA2 4€f€T”A‚S~‚A€㦮´*‰ƒ‚ÿconst SoPickedPointList &getPickedPointList()Ša…ÈAtÉA) "€Â€”‘€‚A€‚ÿReturns a list of objects intersected by a picking operation, sorted from nearest to farthest.1 êÈA¥ÉA& €€‚A€‚ÿSEE ALSO{4tÉA ÊAG ^€h€”‘€‚Aã2™|—€‰€ã¼B‘S€‰€ãÉ“â„€‰‚ÿSoEvent, SoPickedPoint, SoRayPickAction= ¥ÉA]ÊA1, €ƒJ„Ñ]ÊA‘ÊAlBSoIdleSensor4 ÊA‘ÊA% €€ˆˆ€‚ÿSoIdleSensor*]ÊA»ÊA# €€€‚ÿNAMEwQ‘ÊA2ËA& €¢€”‘€€‚ÿSoIdleSensor - sensor for one-time only callbacks when the application is idle3»ÊAeËA# € €€‚ÿINHERITS FROMy82ËAÞËAA R€p€”‘€ãrX.选€㜺餀‰€€€‚ÿSoSensor > SoDelayQueueSensor > SoIdleSensor2 eËAÌA& €€€€ ‚ÿSYNOPSISuNÞËA…ÌA' €œ€”‘€€‚‚ÿ#include Methods from class SoIdleSensor:€OÌAÍA1 2€ž€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿSoIdleSensor()SoIdleSensor(SoSensorCB *func,void *data)~SoIdleSensor()Z+…ÌA_ÍA/ .€V€”‘€‚A€㜺餉‚ÿMethods from class SoDelayQueueSensor:ë®ÍAJÎA= H€]€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ÿvoidsetPriority(uint32_t pri)uint32_tgetPriority()static uint32_tgetDefaultPriority()virtual voidschedule()virtual voidunschedule()virtual SbBoolisScheduled()P!_ÍAšÎA/ .€B€”‘€‚A€ãrX.鉂ÿMethods from class SoSensor:½ŠJÎAWÏA3 4€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetFunction(SoSensorCB *callbackFunction)SoSensorCB *getFunction() constvoidsetData(void *callbackData)void *getData() const4šÎA‹ÏA& €€‚A€‚ÿDESCRIPTIONøÂWÏAB6 :€…€”‘€‚A€€€€€‚ÿAn idle sensor is almost exactly like an SoOneShotSensor, ex‹ÏAB ÊAcept that it is only triggered when there are no timer queue sensors waiting to be triggered and there are no events waiting to be processed; that is, idle sensors will not be triggered if the delay queue is processed because the delay queue timeout expires. If the delay queue timeout is disabled (see SoDB::setDelaySensorTimeout().), idle and one-shot sensors are exactly the same.Ý­‹ÏAlB0 .€[€”‘€‚A€€€‚ÿNote that idle sensors do not reschedule themselves. Inventor 1 idle sensors were always scheduled; call schedule() in the callback function to duplicate that behavior.m>BÙB/ .€|€”‘€‚A€€€‚ÿSee the SoOneShotSensor manual page for more information.0 lB B& €€‚A€‚ÿMETHODSm>ÙBvB/ .€|€T”A‚S~‚A€ƒ‚ƒ‚ÿSoIdleSensor()SoIdleSensor(SoSensorCB *func,void *data)Ÿv BB) "€ì€”‘€‚A€‚ÿCreation methods. The second method takes the callback function and data to be called when the sensor is triggered.?vBTB, (€&€T”A‚S~‚A€ƒ‚ÿ~SoIdleSensor()€WBÔB) "€®€”‘€‚A€‚ÿDestroys the sensor, freeing up any memory associated with it after unscheduling it.1 TBB& €€‚A€‚ÿSEE ALSOg,ÔBlB; F€X€”‘€‚Aãâ+•€‰€㜺餀‰‚ÿSoOneShotSensor, SoDelayQueueSensor8B¤B1–[†ƒ€‰„Ò¤BÓB¢OBSoImage/ lBÓB% €€ˆˆ€‚ÿSoImage*¤BýB# €€€‚ÿNAMEa;ÓB^B& €v€”‘€€‚ÿSoImage - displays an image that always faces the camera3ýB‘B# € €€‚ÿINHERITS FROM£J^B4BY ‚€”€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoImage2 ‘BfB& €€€€ ‚ÿSYNOPSISL&4B²B& €L€”‘€€‚ÿ#include ‹fBtB7 <€€T”A‚S~‚A€ƒ‚ƒ‚ÿenum HorAlignment{SoImage::LEFT,SoImage::CENTER,SoImage::RIGHT}enum VertAlignment{SoImage::BOTTOM,SoImage::HALF,SoImage::TOP}F²BºB) "€:€”‘€‚A€‚ÿFields from class SoImage:Û€tB• B[ „€€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ãƒ2‰ƒ‚ãØtW鉃‚ãØtW鉃‚ãw?2‰ƒ‚ãw?2‰ƒ‚ÿSoSFStringfilenameSoSFImageimageSoSFEnumhorAlignmentSoSFEnumvertAlignmentSoSFInt32widthSoSFInt32heightGºBÜ B) "€<€”‘€‚A€‚ÿMethods from class SoImage:b.• B> B4 8€\€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoImage()static SoTypegetClassTypeId()NÜ BŒ B/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|> B Bn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Œ B` B/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ BÅB 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH` BMB@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÅB›B/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞMBÞ@BY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()›BÞ@BlBvoidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4›BAB& €€‚A€‚ÿDESCRIPTIONä´Þ@BöAB0 .€i€”‘€‚A€€€‚ÿThe SoImage node allows you to display an image without using the texture facilities. The image is a 2D image attached to a 3D point. It will always be parallel to the screen.CABuCB< F€‡€”‘€‚A€€€€€€€‚ÿThe image can be read from the file specified by the filename field. Once the image has been read, the image field contains the image data. However, this field is marked so the image is not written out when the image node is written to a file. To turn off the image, set the filename field to an empty string ("").Ä”öAB9DB0 .€)€”‘€‚A€€€‚ÿImages can also be specified in memory by setting the image field to contain the image data. Doing so resets the file name to the empty string.çuCBJEB* "€Ï€”‘€‚A€‚ÿThis node can be useful for placing a logo in the scene, or for attaching an icon or marker to a 3D point. By default, the image is not scaled. If the width and/or height are specified, the image is scaled to the specified size./ 9DByEB& €€‚A€‚ÿFIELDSJJEBÃEB2 4€0€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringfilename·oyEBzHBH ^€ß€”‘€‚A€€€€€€€€€€€‚ÿNames file from which to read image. The following file formats are supported: SGI RGB, GIF, JPEG, PNG, and (Windows only) BMP. If the filename is not an absolute path name, the list of directories maintained by SoInput is searched. If the texture is not found in any of those directories, then the file is searched for relative to the directory from which the SoImage node was read. For example, if an SoImage node with a filename of "../tofu.rgb" is read from /usr/people/bob/models/food.iv, then /usr/people/bob/tofu.rgb will be read (assuming tofu.rgb isn't found in the directories maintained by SoInput).FÃEBÀHB2 4€(€T”A‚S~‚Aãƒ2€‰ƒ‚ÿSoSFImageimageîzHBÞIB0 .€Ý€”‘€‚A€€€‚ÿContains an in-memory representation of the image. It is either the contents of the file read from filename, an image read directly from an Open Inventor file, or an image set programmatically using the methods provided by SoSFImage.m3ÀHBKJB: D€f€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ÿSoSFEnumhorAlignmentSoSFEnumvertAlignmentN%ÞIB™JB) "€J€”‘€‚A€‚ÿHorizontal and vertical alignment.a'KJBúJB: D€N€T”A‚S~‚Aãw?2€‰ƒ‚ãw?2‰ƒ‚ÿSoSFInt32widthSoSFInt32heighth?™JBbKB) "€~€”‘€‚A€‚ÿWidth and height of image in modeling coordinates(optional).0 úJB’KB& €€‚A€‚ÿMETHODS9 bKBËKB, (€€T”A‚S~‚A€ƒ‚ÿSoImage()8’KBLB) "€€”‘€‚A€‚ÿConstructor.8ËKB;LB& €$€‚A€‚ÿACTION BEHAVIORFLBLB1 2€*€T”A‚S~‚Aã©öø(€‰‚ÿSoGLRenderActionS*;LBÔLB) "€T€”‘€‚A€‚ÿDraws the image parallel to the screen.ELBMB1 2€(€T”A‚S~‚AãÉ“â„€‰‚ÿSoRayPickActioni@ÔLB‚MB) "€€€”‘€‚A€‚ÿPicks the image based on the current transformation and view.OMBÑMB1 2€<€T”A‚S~‚AãDRô€‰‚ÿSoGetPrimitiveCountActionQ(‚MB"NB) "€P€”‘€‚A€‚ÿIncrements the number of images by 1.<ÑMB^NB& €,€‚A€‚ÿFILE FORMAT/DEFAULT3 "NB‘NB* $€€P„7|‚€‚ÿImage{W^NBOB6 <€®€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿfilename" "image0 0 0horAlignmentLEFTvertAlignmentBOTTOMwidth-1height-1}1 ‘NBOOB& €€‚€‚ÿSEE ALSOSOB¢OB5 :€<€”‘€‚ãüqó>€‰ãÿÓ>щ‚ÿSoMarkerSet, SoTexture2AOOB €B1J„#†…Ó €BD€BXËBSoIndexedFaceSet¢OB €B¢OB8¢OBD€B% €&€ˆˆ€‚ÿSoIndexedFaceSet* €Bn€B# €€€‚ÿNAME]7D€BË€B& €n€”‘€€‚ÿSoIndexedFaceSet - indexed polygonal face shape node3n€Bþ€B# € €€‚ÿINHERITS FROMí|Ë€BëBq ²€ø€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ã¹êZY€‰€ã$‘³t€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape > SoIndexedShape > SoIndexedFaceSet2 þ€B‚B& €€€€ ‚ÿSYNOPSISxQëB•‚B' €¢€”‘€€‚‚ÿ#include Fields from class SoIndexedShape:³i‚BHƒBJ d€Ò€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32coordIndexSoMFInt32materialIndexSoMFInt32normalIndexSoMFInt32textureCoordIndexT%•‚BœƒB/ .€J€”‘€‚A€ã¹êZY‰‚ÿFields from class SoVertexShape:NHƒBêƒB2 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyX)œƒBB„B/ .€R€”‘€‚A€ãlÌ…‰‚ÿMethods from class SoIndexedFaceSet:k7êƒB­„B4 8€n€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoIndexedFaceSet()static SoTypegetClassTypeId()NB„Bû„B/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|­„Bw†Bn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)û„BφB/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØw†B4‰B 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHφB¼‰B@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N4‰B ŠB/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¼‰BA‹BY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4 ŠBu‹B& €€‚A€‚ÿDESCRIPTIONSA‹BÈŒB< F€/€”‘€‚A€€€€€€€‚ÿThis node represents a 3D shape formed by constructing faces (polygons) from vertices located at the coordinates specified in the vertexProperty field (from SoVertexShape), or the current inherited state. For optimal performance, the vertexProperty field is recommended.²yu‹BzŽB9 @€ó€”‘€‚A€€€€€€‚ÿSoIndexedFaceSet uses the indices in the coordIndex field (from SoIndexedShape) to specify the polygonal faces. An index of SO_END_FACE_INDEX (-1) indicates that the current face has ended and the next one begins. For improved performance, arrange all the faces with only 3 vertices at beginning of the list, then all faces with 4 vertices, and finally all other faces.À–ÈŒB:B* "€-€”‘€‚A€‚ÿThe vertices of the faces are transformed by the current transformation matrix. The faces are drawn with the current light model and drawing style.æªzŽB,ÁB< F€U€”‘€‚A€€€€€€€‚ÿTreatment of the current material and normal binding is as follows: The PER_PART and PER_FACE bindings specify a material or normal for e:B,ÁB¢OBach face. PER_VERTEX specifies a material or normal for each vertex. The corresponding _INDEXED bindings are the same, but use the materialIndex or normalIndex indices (see SoIndexedShape). The default material binding is OVERALL. The default normal binding is PER_VERTEX_INDEXED.\2:BˆÂB* "€e€”‘€‚A€‚ÿIf any normals (or materials) are specified, Open Inventor assumes you provide the correct number of them, as indicated by the binding. You will see unexpected results if you specify fewer normals (or materials) than the shape requires. If no normals are specified, they will be generated automatically.sD,ÁBûÂB/ .€ˆ€”‘€‚A€€€‚ÿTextures are applied as described for the SoIndexedShape class.¢yˆÂBÃB) "€ò€”‘€‚A€‚ÿNOTE: An indexed face set may not render or pick correctly if any of its polygons are self-intersecting or non-planar.0 ûÂBÍÃB& €€‚A€‚ÿMETHODSBÃBÄB, (€,€T”A‚S~‚A€ƒ‚ÿSoIndexedFaceSet()c:ÍÃBrÄB) "€t€”‘€‚A€‚ÿCreates an indexed face set node with default settings.U#ÄBÇÄB2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*rÄBÅB) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ÇÄBRÅB& €$€‚A€‚ÿACTION BEHAVIORHÅBšÅB2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderAction‹_RÅB%ÆB, (€¾€”‘€‚A€€‚ÿDraws faces based on the current coordinates, normals, materials, drawing style, and so on.GšÅBlÆB2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction¹†%ÆB%ÇB3 4€ €”‘€‚A€€€€‚ÿPicks faces based on the current coordinates and transformation. Details about the intersection are returned in an SoFaceDetail.NlÆBsÇB2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActioné¼%ÇB\ÈB- (€y€”‘€‚A€€‚ÿComputes the bounding box that encloses all vertices of the face set with the current transformation applied to them. Sets the center to the average of the coordinates of all vertices.HsÇB¤ÈB2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackActionÁ”\ÈBeÉB- (€)€”‘€‚A€€‚ÿIf any triangle callbacks are registered with the action, they will be invoked for each successive triangle generated from each face in the set.<¤ÈB¡ÉB& €,€‚A€‚ÿFILE FORMAT/DEFAULT=eÉBÞÉB* $€&€P„7|‚€‚ÿIndexedFaceSet {[¡ÉBnÊB5 :€¶€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿvertexPropertyNULLcoordIndex0materialIndex-1normalIndex-1textureCoordIndex-1}1 ÞÉBŸÊB& €€‚€‚ÿSEE ALSO¹ZnÊBXËB_ Ž€´€”‘€‚ã[Eà€‰€ãy‚2€‰€ã~«M§€‰€ãø@〉€ãmý¼€‰‚ÿSoCoordinate3, SoDrawStyle, SoFaceDetail, SoFaceSet, SoVertexPropertyAŸÊB™ËB1b€‰„Z‚†Ô™ËBÑËBÅDCSoIndexedLineSet8XËBÑËB% €&€ˆˆ€‚ÿSoIndexedLineSet*™ËBûËB# €€€‚ÿNAMEW1ÑËBRÌB& €b€”‘€€‚ÿSoIndexedLineSet - indexed polyline shape node3ûËB…ÌB# € €€‚ÿINHERITS FROMí|RÌBrÍBq ²€ø€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ã¹êZY€‰€ã$‘³t€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape > SoIndexedShape > SoIndexedLineSet2 …ÌB¤ÍB& €€€€ ‚ÿSYNOPSIS€SrÍB$ÎB- *€¦€”‘€€‚ã$‘³t‰‚ÿ#include Fields from class SoIndexedShape:³i¤ÍB×ÎBJ d€Ò€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32coordIndexSoMFInt32materialIndexSoMFInt32normalIndexSoMFInt32textureCoordIndexT%$ÎB+ÏB/ .€J€”‘€‚A€ã¹êZY‰‚ÿFields from class SoVertexShape:N×ÎByÏB2 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyP'+ÏBÉÏB) "€N€”‘€‚A€‚ÿMethods from class SoIndexedLineSet:k7yÏB@C4 8€n€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSÉÏB@CXËBoIndexedLineSet()static SoTypegetClassTypeId()NÉÏBŽC/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|@C Cn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ŽCbC/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ CÇC 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHbCOC@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÇCC/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞOCÔCY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4CC& €€‚A€‚ÿDESCRIPTIONRÔCZC< F€-€”‘€‚A€€€€€€€‚ÿThis node represents a 3D shape formed by constructing polylines from vertices located at the coordinates specified in the vertexProperty field (from SoVertexShape), or the current inherited coordinates. For optimal performance, the vertexProperty field is recommended.ÛCn C9 @€·€”‘€‚A€€€€€€‚ÿSoIndexedLineSet uses the indices in the coordIndex field (from SoIndexedShape) to specify the polylines. An index of SO_END_LINE_INDEX (-1) indicates that the current polyline has ended and the next one begins.õËZCc C* "€—€”‘€‚A€‚ÿThe coordinates of the line set are transformed by the current cumulative transformation. The lines are drawn with the current light model and drawing style (drawing style FILLED is treated as LINES)./ón C’ C< F€ç€”‘€‚A€€€€€€€‚ÿTreatment of the current material and normal binding is as follows: The PER_PART binding specifies a material or normal for each segment of the line. The PER_FACE binding specifies a material or normal for each polyline. PER_VERTEX specifies a material or normal for each vertex. The corresponding _INDEXED bindings are the same, but use the materialIndex or normalIndex indices (see SoIndexedShape). The default material binding is OVERALL. The default normal binding is PER_VERTEX_INDEXED}Tc C C) "€¨€”‘€‚A€‚ÿThe current complexity value has no effect on the rendering of indexed line sets.0 ’ C? C& €€‚A€‚ÿMETHODSB C C, (€,€T”A‚S~‚A€ƒ‚ÿSoIndexedLineSet()c:? Cä C) "€t€”‘€‚A€‚ÿCreates an indexed line set node with default settings.U# C9C2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ä CŒC) "€T€”‘€‚A€‚ÿReturns type identifier for this class.89CÄC& €$€‚A€‚ÿACTION BEHAVIORHŒC C2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderAction‹_ÄC—C, (€¾€”‘€‚A€€‚ÿDraws lines based on the current coordinates, normals, materials, drawing style, and so on.G CÞC2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction¹†—C£@C3 4€ €”‘€ÞC£@CXËB‚A€€€€‚ÿPicks lines based on the current coordinates and transformation. Details about the intersection are returned in an SoLineDetail.NÞCñ@C2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActioné¼£@CÚAC- (€y€”‘€‚A€€‚ÿComputes the bounding box that encloses all vertices of the line set with the current transformation applied to them. Sets the center to the average of the coordinates of all vertices.Hñ@C"BC2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackAction°ƒÚACÒBC- (€€”‘€‚A€€‚ÿIf any line segment callbacks are registered with the action, they will be invoked for each successive segment in the line set.<"BCCC& €,€‚A€‚ÿFILE FORMAT/DEFAULT=ÒBCKCC* $€&€P„7|‚€‚ÿIndexedLineSet {[CCÛCC5 :€¶€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿvertexPropertyNULLcoordIndex0materialIndex-1normalIndex-1textureCoordIndex-1}1 KCC DC& €€‚€‚ÿSEE ALSO¹ZÛCCÅDC_ Ž€´€”‘€‚ã[Eà€‰€ãy‚2€‰€ãIöHŽ€‰€ã>J€‰€ãmý¼€‰‚ÿSoCoordinate3, SoDrawStyle, SoLineDetail, SoLineSet, SoVertexPropertyD DC EC1ù#†…‡Õ ECDECÎŽCSoIndexedNurbsCurve;ÅDCDEC% €,€ˆˆ€‚ÿSoIndexedNurbsCurve* ECnEC# €€€‚ÿNAME]7DECËEC& €n€”‘€€‚ÿSoIndexedNurbsCurve - indexed NURBS curve shape node3nECþEC# € €€‚ÿINHERITS FROM¯VËEC­FCY ‚€¬€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoIndexedNurbsCurve2 þECßFC& €€€€ ‚ÿSYNOPSIS€Y­FC_GC' €²€”‘€€‚‚ÿ#include Fields from class SoIndexedNurbsCurve:MßFCîGCB T€š€T”A‚S~‚Aãw?2€‰ƒ‚ã-Ï]‰ƒ‚ã'0]‰ƒ‚ÿSoSFInt32numControlPointsSoMFInt32coordIndexSoMFFloatknotVectorS*_GCAHC) "€T€”‘€‚A€‚ÿMethods from class SoIndexedNurbsCurve:n:îGC¯HC4 8€t€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoIndexedNurbsCurve()static SoTypegetClassTypeId()NAHCýHC/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|¯HCyJCn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ýHCÑJC/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØyJC6MC 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÑJC¾MC@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N6MC NC/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¾MCCOCY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4 NCwOC& €€‚A€‚ÿDESCRIPTIONÇCOC†C< F€€”‘€‚A€€€€€€€‚ÿThis class represents a NURBS curve based on the knot vector and the controlwOC†CÅDC points that you specify. The knotVector field specifies a floating-point array of values; the values are the coordinates of the knot points in the curve, and you must enter them in non-decreasing order. The numControlPoints field specifies the number of control points the curve will have and will use the current coordinates that are indexed from the coordIndex field.×wOC‡‚C* "€¯€”‘€‚A€‚ÿYou can get a curve of minimum order (2) by specifying two more knots than control points and having at least two control points. This curve would be a set of line segments connecting the control points together.$ú†C«ƒC* "€õ€”‘€‚A€‚ÿYou can get a curve of maximum order (8) by specifying 8 more knots than control points and having at least 8 control points. In this curve, each control point would have influence on a larger portion of the curve than with curves of lesser order.’h‡‚C=…C* "€Ñ€”‘€‚A€‚ÿThe control points of the curve are transformed by the current transformation matrix. The curve is drawn with the current lighting model and drawing style (drawing style FILLED is treated as LINES). The coordinates, normals, and texture coordinates of a NURBS curve are generated, so you cannot bind explicit normals or texture coordinates to a NURBS curve.ˆ_«ƒCÅ…C) "€¾€”‘€‚A€‚ÿThe approximation of the curve by line segments is affected by the current complexity value./ =…Cô…C& €€‚A€‚ÿFIELDSQÅ…CE†C2 4€>€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32numControlPointsS*ô…C˜†C) "€T€”‘€‚A€‚ÿNumber of control points for the curve.KE†Cã†C2 4€2€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32coordIndexV-˜†C9‡C) "€Z€”‘€‚A€‚ÿCoordinate indices for the control points.Kã†C„‡C2 4€2€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatknotVectorrI9‡Cö‡C) "€’€”‘€‚A€‚ÿThe knot vector for the curve. Values must be in non-decreasing order.0 „‡C&ˆC& €€‚A€‚ÿMETHODSEö‡CkˆC, (€2€T”A‚S~‚A€ƒ‚ÿSoIndexedNurbsCurve()f=&ˆCшC) "€z€”‘€‚A€‚ÿCreates an indexed NURBS curve node with default settings.U#kˆC&‰C2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*шCy‰C) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8&‰C±‰C& €$€‚A€‚ÿACTION BEHAVIORHy‰Cù‰C2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionvJ±‰CoŠC, (€”€”‘€‚A€€‚ÿDraws the curve based on the current coordinates, material, and so on.Gù‰C¶ŠC2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickActiontHoŠC*‹C, (€€”‘€‚A€€‚ÿPicks the curve based on the current coordinates and transformation.N¶ŠCx‹C2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActionß²*‹CWŒC- (€e€”‘€‚A€€‚ÿComputes the bounding box that encloses all control points of the curve with the current transformation applied to them. Sets the center to the average of the control points.Hx‹CŸŒC2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackAction¸‹WŒCWC- (€€”‘€‚A€€‚ÿIf any line segment callbacks are registered with the action, they will be invoked for each successive segment approximating the curve.<ŸŒC“C& €,€‚A€‚ÿFILE FORMAT/DEFAULT@WCÓC* $€,€P„7|‚€‚ÿIndexedNurbsCurve {c2“C6ŽC1 2€d€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿnumControlPoints0coordIndex0knotVector0}1 ÓCgŽC& €€‚€‚ÿSEE ALSOg,6ŽCÎŽC; F€X€”‘€‚ãÓÂ.€‰€ã^`ˆ½€‰‚ÿSoNurbsCurve, SoIndexedNurbsSurfaceFgŽCC1Ê Z‚†2ˆÖCQC3DSoIndexedNurbsSurface=ÎŽCQC% €0€ˆˆ€‚ÿSoIndexedNurbsSurface*C{C# €€€‚ÿNAMEa;QCÜC& €v€”‘€€‚ÿSoIndexedNurbsSurface - indexed NURBS surface shape node3{CÀC# € €€‚ÿÜCÀCÎŽCINHERITS FROM±XÜCÌÀCY ‚€°€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoIndexedNurbsSurface2 ÀCþÀC& €€€€ ‚ÿSYNOPSIS„]ÌÀC‚ÁC' €º€”‘€€‚‚ÿ#include Fields from class SoIndexedNurbsSurface:ŠþÀC ÃC{ Ä€€T”A‚S~‚Aãw?2€‰ƒ‚ãw?2‰ƒ‚ã-Ï]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ãw?2‰ƒ‚ãw?2‰ƒ‚ã-Ï]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ÿSoSFInt32numUControlPointsSoSFInt32numVControlPointsSoMFInt32coordIndexSoMFFloatuKnotVectorSoMFFloatvKnotVectorSoSFInt32numSControlPointsSoSFInt32numTControlPointsSoMFInt32textureCoordIndexSoMFFloatsKnotVectorSoMFFloattKnotVectorU,‚ÁCaÃC) "€X€”‘€‚A€‚ÿMethods from class SoIndexedNurbsSurface:p< ÃCÑÃC4 8€x€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoIndexedNurbsSurface()static SoTypegetClassTypeId()NaÃCÄC/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÑÃC›ÅCn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÄCóÅC/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ›ÅCXÈC 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHóÅCàÈC@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NXÈC.ÉC/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞàÈCeÊCY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4.ÉC™ÊC& €€‚A€‚ÿDESCRIPTIONj"eÊCÍCH ^€E€”‘€‚A€€€€€€€€€€€‚ÿThis shape node represents a NURBS surface based on the knot vectors and the control points that you specify. The uKnotVector and vKnotVector fields specify floating-point arrays of values; the values are the coordinates of the knot points in the surface, and you must enter them in non-decreasing order. The numUControlPoints and numVControlPoints fields specify the number of control points the surface will have in the U and V parametric directions, and will use the current coordinates that are indexed from the coordIndex field.!÷™ÊC$ÎC* "€ï€”‘€‚A€‚ÿYou can get a surface of minimum order (2) in the U or V directions by specifying two more knots than control points in that direction and having at least two control points in that direction. This surface would appear creased in one direction.ñÇÍCÏC* "€€”‘€‚A€‚ÿYou can get a surface of maximum order (8) in the U or V directions by specifying eight more knots than control points in that direction and having at least eight control points in that direction.²ˆ$ÎCÓD* "€€”‘€‚A€‚ÿThe control points of the NURBS surface are transformed by the current cumulative transformation. The surface is drawn with the current light model and drawing style. The coordinates, normals,ÏCÓDÎŽC and texture coordinates of a surface are generated, so you cannot bind explicit normals or texture coordinates to a NURBS surface. The first material in the state is applied to the entire surface.vMÏCID) "€š€”‘€‚A€‚ÿThe surface is trimmed according to the currently defined profiles curves.Ú°ÓD#D* "€a€”‘€‚A€‚ÿWhen default texture coordinates are applied to a NURBS surface, the edges of the texture square are stretched to fit the surface. The axes of the texture are called S and T; S is horizontal and T is vertical. The axes of the NURBS surface are called U and V; U is horizontal and V is vertical. You can also define texture coordinates explicitly with the S,T location point, the knot vectors, and the current texture coordinates./ IDRD& €€‚A€‚ÿFIELDSx>#DÊD: D€|€T”A‚S~‚Aãw?2€‰ƒ‚ãw?2‰ƒ‚ÿSoSFInt32numUControlPointsSoSFInt32numVControlPoints_6RD)D) "€l€”‘€‚A€‚ÿNumber of control points in the U and V directions.KÊDtD2 4€2€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32coordIndex?)D³D) "€,€”‘€‚A€‚ÿCoordinate indices.l2tDD: D€d€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ÿSoMFFloatuKnotVectorSoMFFloatvKnotVectorW.³DvD) "€\€”‘€‚A€‚ÿThe knot vectors in the U and V directions.x>DîD: D€|€T”A‚S~‚Aãw?2€‰ƒ‚ãw?2‰ƒ‚ÿSoSFInt32numSControlPointsSoSFInt32numTControlPoints_6vDMD) "€l€”‘€‚A€‚ÿNumber of control points in the S and T directions.R îDŸD2 4€@€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32textureCoordIndexGMDæD) "€<€”‘€‚A€‚ÿTexture coordinate indices.l2ŸDRD: D€d€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ÿSoMFFloatsKnotVectorSoMFFloattKnotVectorW.æD©D) "€\€”‘€‚A€‚ÿThe knot vectors in the S and T directions.0 RDÙD& €€‚A€‚ÿMETHODSG©D D, (€6€T”A‚S~‚A€ƒ‚ÿSoIndexedNurbsSurface()h?ÙDˆD) "€~€”‘€‚A€‚ÿCreates an indexed NURBS surface node with default settings.U# DÝD2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ˆD0 D) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ÝDh D& €$€‚A€‚ÿACTION BEHAVIORH0 D° D2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionxLh D( D, (€˜€”‘€‚A€€‚ÿDraws the surface based on the current coordinates, material, and so on.G° Do D2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickActionvJ( Då D, (€”€”‘€‚A€€‚ÿPicks the surface based on the current coordinates and transformation.No D3 D2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActioná´å D D- (€i€”‘€‚A€€‚ÿComputes the bounding box that encloses all control points of the surface with the current transformation applied to them. Sets the center to the average of the control points.H3 D\ D2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackAction·Š D D- (€€”‘€‚A€€‚ÿIf any triangle callbacks are registered with the action, they will be invoked for each successive triangle approximating the surface.<\ DO D& €,€‚A€‚ÿFILE FORMAT/DEFAULTB D‘ D* $€0€P„7|‚€‚ÿIndexedNurbsSurface {ï¯O D€D@ N€_€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿnumUControlPoints0numVControlPoints0numSControlPoints0numTControlPoints0coordIndex0uKnotVector0vKnotVector0sKnotVector0tKnotVector0textureCoordIndex-1}1 ‘ D±D& €€‚€‚ÿSEE ALSO‚;€D3DG ^€v€”‘€‚ã|Ťã€‰€ã½)×n€‰€ãaC}2€‰‚ÿSoIndexedNurbsCurve, SoNurbsSurface, SoProfile?±DrD1A ‡ ‰×rD¨D}DSoIndexedShape63D¨D% €"€ˆˆ€‚ÿSoIndexedShape*rDÒD# €€€‚ÿNAMEqK¨DO@D& €–€”‘€€‚ÿSoIndexÒDO@D3DedShape - abstract base class for all indexed vertex-based shapes3ÒD‚@D# € €€‚ÿINHERITS FROMÊeO@DLADe š€Ê€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ã¹êZY€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape > SoIndexedShape2 ‚@D~AD& €€€€ ‚ÿSYNOPSISvOLADôAD' €ž€”‘€€‚‚ÿ#include Fields from class SoIndexedShape:³i~AD§BDJ d€Ò€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32coordIndexSoMFInt32materialIndexSoMFInt32normalIndexSoMFInt32textureCoordIndexT%ôADûBD/ .€J€”‘€‚A€ã¹êZY‰‚ÿFields from class SoVertexShape:N§BDICD2 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyN%ûBD—CD) "€J€”‘€‚A€‚ÿMethods from class SoIndexedShape:U#ICDìCD2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()N—CD:DD/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ìCD¶EDn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X):DDFD/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eضEDsHD 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHFDûHD@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NsHDIID/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞûHD€JDY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4IID´JD& €€‚A€‚ÿDESCRIPTIONC€JD÷KDB R€€”‘€‚A€€€€€€€€€‚ÿThis node is the abstract base class for all vertex-based shapes that are constructed from indices, including SoIndexedFaceSet, SoIndexedTriangleStripSet, and SoIndexedLineSet. SoIndexedShape defines fields that are used in all of its subclasses.÷µ´JDîMDB R€k€”‘€‚A€€€€€€€€€‚ÿAll subclasses of SoNonIndexedShape construct objects by using the coordinates specified by the vertexProperty field (from SoVertexShape), or the current inherited coordinates. The coordIndex field defined by this class contains the indices into the current coordinates of the vertices of the shape. These indices are also used for materials, normals, or texture coordinates when the appropriate binding is PER_VERTEX_INDEXED.vM÷KDdND) "€š€”‘€‚A€‚ÿMaterial and normal bindings are interpreted as follows for each subclass:,îMDND) "€€”‘€‚‰€‚ÿƒ/dNDODT#x€^]ø €€”‘€€‚ÿ€€”‘€ÿ€€”‚ÿÿÿOVERALLOne material for the entire shape.‰(NDœODa#’€P]ø €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€€”‚ÿÿÿPER_PARTSpecific to the subclass.ÔgOD|€Dm#ª€Î]ø €€”ÿ€€”‘€€‚ÿ€(€”‘€ÿ*€*€”€€€œOD|€D3D€‚ÿÿÿPER_PART_INDEXEDSame as PER_PART, using indices from the materialIndex or normalIndex field.‰(œODDa#’€P]ø €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€€”‚ÿÿÿPER_FACESpecific to the subclass.Ôg|€DÙDm#ª€Î]ø €€”ÿ€€”‘€€‚ÿ€(€”‘€ÿ*€*€”€€€€‚ÿÿÿPER_FACE_INDEXEDSame as PER_FACE, using indices from the materialIndex or normalIndex field.Š)Dc‚Da#’€R]ø €€”ÿ€€”‘€€‚ÿ€€”‘€ÿ€€”‚ÿÿÿPER_VERTEXOne material per vertex.ÝpÙD@ƒDm#ª€à]ø €€”ÿ€€”‘€€‚ÿ€,€”‘€ÿ*€.€”€€€€‚ÿÿÿPER_VERTEX_INDEXEDOne material per vertex, using indices from the materialIndex or normalIndex field.,c‚DlƒD) "€€”‘€‚‰€‚ÿN @ƒDº…DB R€€”‘€‚‰€€€€€€€€€‚ÿWhen any _INDEXED binding is used for materials or normals, the materialIndex or normalIndex field is used to determine the indices for the materials or normals. If this field contains a single value of -1 (the default), the coordinate indices from the coordIndex field are used as well for materials or normals. When the binding is PER_VERTEX_INDEXED, indices in these fields that correspond to negative indices in coordIndex are skipped; for other index bindings all the values in the fields are used, in order. ÕlƒDŇD6 :€«€”‘€‚‰€€€€€‚ÿExplicit texture coordinates (as defined by SoTextureCoordinate2) may be bound to vertices of an indexed shape consecutively (if the texture coordinate binding is PER_VERTEX) or by using the indices in the textureCoordIndex field (if the binding is PER_VERTEX_INDEXED). As with all vertex-based shapes, if there is a current texture but no texture coordinates are specified, a default texture coordinate mapping is calculated using the bounding box of the shape.þ¼º…DÈDB R€y€”‘€‚‰€€€€€€€€€‚ÿBe sure that the indices contained in the coordIndex, materialIndex, normalIndex, and textureCoordIndex fields are valid with respect to the current state, or errors will occur./ ŇDòˆD& €€‚‰€‚ÿFIELDSKÈD=‰D2 4€2€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32coordIndexóòˆDZŠD* "€ç€”‘€‚A€‚ÿThe indices of the coordinates that the shape uses as its vertices. The coordinates connect to form faces, lines, or other shapes. Each subclass defines special negative indices to use to indicate separation between faces, lines, and so on.”R=‰DîŠDB T€¤€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32materialIndexSoMFInt32normalIndexSoMFInt32textureCoordIndextJZŠDbŒD* "€•€”‘€‚A€‚ÿThe indices of the materials, normals, and texture coordinates that are used for the shape. These fields are used only when the appropriate binding is one of the _INDEXED bindings. By default, the values of these fields indicate that the coordinate indices should be used for materials, normals, or texture coordinates as well.0 îŠD’ŒD& €€‚A€‚ÿMETHODSU#bŒDçŒD2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*’ŒD:D) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<çŒDvD& €,€‚A€‚ÿFILE FORMAT/DEFAULT“j:D ŽD) "€Ô€”‘€‚A€‚ÿThis is an abstract class. See the reference page of a derived class for the format and default values.1 vD:ŽD& €€‚A€‚ÿSEE ALSOC¿ ŽD}D„ Ö€€”‘€‚AãlÌ…€‰€ãUIÕ¢€‰€ã×ïþö€‰€ãÞ!€€‰€ã5ÖfE€‰€ãRÜ4€‰€ãsBmf€‰€ãf;1c€‰‚ÿSoIndexedFaceSet, SoIndexedLineSet, SoIndexedTriangleStripSet, SoMaterialBinding, SoNonIndexedShape, SoNormalBinding, SoShapeHints, SoTextureCoordinateBindingJ:ŽDÇD1½2ˆ­ŠØÇDÀD( ESoIndexedTriangleStripSetA}DÀD% €8€ˆˆ€‚ÿSoIndexedTriangleStÇDÀD}DripSet*ÇD>ÀD# €€€‚ÿNAMEjDÀD¨ÀD& €ˆ€”‘€€‚ÿSoIndexedTriangleStripSet - indexed triangle strip set shape node3>ÀDÛÀD# € €€‚ÿINHERITS FROM÷…¨ÀDÒÁDr ²€ €”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ã¹êZY€‰€ã$‘³t€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape > SoIndexedShape > SoIndexedTriangleStripSet2 ÛÀDÂD& €€€€ ‚ÿSYNOPSIS‰\ÒÁDÂD- *€¸€”‘€€‚ã$‘³t‰‚ÿ#include Fields from class SoIndexedShape:³iÂD@ÃDJ d€Ò€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32coordIndexSoMFInt32materialIndexSoMFInt32normalIndexSoMFInt32textureCoordIndexT%ÂD”ÃD/ .€J€”‘€‚A€ã¹êZY‰‚ÿFields from class SoVertexShape:N@ÃDâÃD2 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyY0”ÃD;ÄD) "€`€”‘€‚A€‚ÿMethods from class SoIndexedTriangleStripSet:t@âÃD¯ÄD4 8€€€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoIndexedTriangleStripSet()static SoTypegetClassTypeId()N;ÄDýÄD/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|¯ÄDyÆDn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ýÄDÑÆD/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØyÆD6ÉD 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÑÆD¾ÉD@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N6ÉD ÊD/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¾ÉDCËDY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4 ÊDwËD& €€‚A€‚ÿDESCRIPTION>CËDµÌD< F€€”‘€‚A€€€€€€€‚ÿThis shape node constructs triangle strips out of vertices located at the coordinates specified in the vertexProperty field (from SoVertexShape), or the current inherited coordinates. For optimal performance, the vertexProperty field is recommended.1øwËDæÍD9 @€ñ€”‘€‚A€€€€€€‚ÿSoIndexedTriangleStripSet uses the indices in the coordIndex field (from SoIndexedShape) to specify the vertices of the triangle strips. An index of SO_END_STRIP_INDEX (-1) indicates that the current strip has ended and the next one begins.À–µÌD¦ÎD* "€-€”‘€‚A€‚ÿThe vertices of the faces are transformed by the current transformation matrix. The faces are drawn with the current light model and drawing style. ÐæÍD¾E< F€¡€”‘€‚A€€€€€€€‚ÿTreatment of the current material and normal binding is as follows: PER_PART specifies a material or normal per strip. PER_FACE binding specifies a material or normal for each triangle. PER_VERTEX specifies a material or normal for each vertex. The corresponding _INDEXED bindings are ¦ÎD¾E}Dthe same, but use the materialIndex or normalIndex indices (see SoIndexedShape). The default material binding is OVERALL. The default normal binding is PER_VERTEX_INDEXED\2¦ÎDE* "€e€”‘€‚A€‚ÿIf any normals (or materials) are specified, Open Inventor assumes you provide the correct number of them, as indicated by the binding. You will see unexpected results if you specify fewer normals (or materials) than the shape requires. If no normals are specified, they will be generated automatically.0 ¾EJE& €€‚A€‚ÿMETHODSKE•E, (€>€T”A‚S~‚A€ƒ‚ÿSoIndexedTriangleStripSet()mDJEE) "€ˆ€”‘€‚A€‚ÿCreates an indexed triangle strip set node with default settings.U#•EWE2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*EªE) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8WEâE& €$€‚A€‚ÿACTION BEHAVIORHªE*E2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderAction‘eâE»E, (€Ê€”‘€‚A€€‚ÿDraws a strip set based on the current coordinates, normals, materials, drawing style, and so on.G*EE2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickActionÄ‘»EÆE3 4€#€”‘€‚A€€€€‚ÿPicks on the strip set based on the current coordinates and transformation. Details about the intersection are returned in an SoFaceDetail.NEE2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActionê½ÆEþE- (€{€”‘€‚A€€‚ÿComputes the bounding box that encloses all vertices of the strip set with the current transformation applied to them. Sets the center to the average of the coordinates of all vertices.HEFE2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackAction»ŽþEE- (€€”‘€‚A€€‚ÿIf any triangle callbacks are registered with the action, they will be invoked for each successive triangle forming the strips of the set.<FE=E& €,€‚A€‚ÿFILE FORMAT/DEFAULTFEƒE* $€8€P„7|‚€‚ÿIndexedTriangleStripSet {[=E E5 :€¶€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿvertexPropertyNULLcoordIndex0materialIndex-1normalIndex-1textureCoordIndex-1}1 ƒED E& €€‚€‚ÿSEE ALSOäy E( Ek ¦€ò€”‘€‚ã[Eà€‰€ãy‚2€‰€ã~«M§€‰€ãlÌ…€‰€ã†ÀÍb€‰€ãmý¼€‰‚ÿSoCoordinate3, SoDrawStyle, SoFaceDetail, SoIndexedFaceSet, SoTriangleStripSet, SoVertexProperty7D E_ E1; ‰®„ŠÙ_ E EJESoInfo. ( E E% €€ˆˆ€‚ÿSoInfo*_ E· E# €€€‚ÿNAMEY3 E E& €f€”‘€€‚ÿSoInfo - node containing information text string3· EC E# € €€‚ÿINHERITS FROMˆ; EË EM j€v€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoInfo2 C Eý E& €€€€ ‚ÿSYNOPSISf?Ë Ec E' €~€”‘€€‚‚ÿ#include Fields from class SoInfo:Hý E« E2 4€,€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringstringFc Eñ E) "€:€”‘€‚A€‚ÿMethods from class SoInfo:a-« ER E4 8€Z€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoInfo()static SoTypegetClassTypeId()Nñ E  E/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|R EEn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)  EtE/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:]ÖEÝAE‡ Ü€­€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidtEÝAE( EsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHtEeBE@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÝAE³BE/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞeBEêCEY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4³BEDE& €€‚A€‚ÿDESCRIPTION\êCEzFEH ^€)€”‘€‚A€€€€€€€€€€€‚ÿThis class defines a information node in the scene graph. This node has no effect during traversal. It is used to store information in the scene graph, typically for application-specific purposes, copyright messages, or other strings. This node differs from the SoLabel node in that it stores its information in an SbString instead of an SbName; the SbString is more efficient for storing long strings that don't have to be accessed very often. Use an SoLabel node for short strings that have to be accessed more often./ DE©FE& €€‚A€‚ÿFIELDSHzFEñFE2 4€,€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringstringi4©FEZGE5 :€h€”‘€‚A€ãXíÊ€‰€‚ÿDefines the info string value as an SbString.0 ñFEŠGE& €€‚A€‚ÿMETHODS8 ZGEÂGE, (€€T”A‚S~‚A€ƒ‚ÿSoInfo()W.ŠGEHE) "€\€”‘€‚A€‚ÿCreates an info node with default settings.U#ÂGEnHE2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*HEÁHE) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<nHEýHE& €,€‚A€‚ÿFILE FORMAT/DEFAULT3 ÁHE0IE* $€€P„7|‚€‚ÿInfo {LýHE|IE- *€>€P„|‚€ƒ‚‚‚ÿstring""}1 0IE­IE& €€‚€‚ÿSEE ALSOU|IEJE; F€4€”‘€‚ãXíÊ€‰€ãÄ2И€‰‚ÿSbString, SoLabel8­IE:JE1,­Šä‹Ú:JEiJErÃESoInput/ JEiJE% €€ˆˆ€‚ÿSoInput*:JE“JE# €€€‚ÿNAMEX2iJEëJE& €d€”‘€€‚ÿSoInput - used to read Open Inventor data files3“JEKE# € €€‚ÿINHERITS FROM4 ëJERKE) "€€”‘€€€‚ÿSoInput2 KE„KE& €€€€ ‚ÿSYNOPSISc<RKEçKE' €x€”‘€€‚‚ÿ#include Methods from class SoInput:!Ò„KENEO l€¥€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ€ƒƒ€‚ƒ€ƒƒ€‚ƒ‚ƒ‚ÿSoInput()~SoInput()static voidaddDirectoryFirst(const char *dirName)static voidaddDirectoryLast(const char *dirName)static voidaddEnvDirectoriesFirst(const char *envVarName,const char *pathSep=";") [Win32]const char *pathSep=": \t")[Unix]static voidaddEnvDirectoriesLast(const char *envVarNameconst char *pathSep=";") [Win32]const char *pathSep=": \t")[Unix]static voidremoveDirectory(const char *dirName)static voidclearDirectories()ß~çKE €Ea €ý€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ãXíʉƒ‚ƒ‚ÿstatic const SbStringList &getDirectories()voidsetFilePointer(FILE *newFP)SbBoolopenFile(const char *fileName,SbBool okIfNotFound = FALSE)SbBoolpushFile(const char *fileName)closeFile()SbBoolisValidFile()FILE *getCurFile() constconst char *getCurFileName() constvoidsetBuffer(void *bufPointer,size_t bufSize)SbStringgetHeader()floatgetIVVersion()NE €EJE4NE@€E& €€‚A€‚ÿDESCRIPTIONá« €E!‚E6 :€W€”‘€‚A€€€€€‚ÿThis class is used by the SoDB reading routines when reading Open Inventor data files. It supports both ASCII (default) and binary Open Inventor formats. Users can also register additional valid file headers. When reading, SoInput skips over Open Inventor comments (from '#' to end of line) and can stack input files. When EOF is reached, the stack is popped. This class can also be used to read from a buffer in memory.0 @€EQ‚E& €€‚A€‚ÿMETHODSG!‚E˜‚E. ,€2€T”A‚S~‚A€ƒ‚ƒ‚ÿSoInput()~SoInput()´Q‚ELƒE5 :€þ€”‘€‚A€€€€€‚ÿConstructor and destructor. The default SoInput reads from stdin. The destructor closes any files opened by the SoInput.²k˜‚Eþ„EG \€×€T”A‚S~‚A€ƒ‚ƒ‚ƒ€ƒƒ€‚ƒ€ƒƒ€‚ÿstatic voidaddDirectoryFirst(const char *dirName)static voidaddDirectoryLast(const char *dirName)static voidaddEnvDirectoriesFirst(const char *envVarName,const char *pathSep=";") [Win32]const char *pathSep=": \t")[Unix]static voidaddEnvDirectoriesLast(const char *envVarNameconst char *pathSep=";") [Win32]const char *pathSep=": \t")[Unix]îLƒE‡E0 .€Ý€”‘€‚A€€€‚ÿThe SoInput class maintains a global list of directories that is searched to find files when opening them. Directories are searched in order. Each of these routines adds directories to the list, either at the beginning ("First") or the end ("Last"). The last two routines add directories named in the value of the given environment variable. On Windows, directory names are normally separated by semi-colons. On Unix systems, directory names are normally separated by colons or whitespace._3þ„E{‡E, (€f€T”A‚S~‚A€ƒ‚ÿstatic voidremoveDirectory(const char *dirName)R)‡E͇E) "€R€”‘€‚A€‚ÿRemoves named directory from the list.M!{‡EˆE, (€B€T”A‚S~‚A€ƒ‚ÿstatic voidclearDirectories()mD͇E‡ˆE) "€ˆ€”‘€‚A€‚ÿClears the list of directories (including the current directory).[/ˆEâˆE, (€^€T”A‚S~‚A€ƒ‚ÿstatic const SbStringList &getDirectories()g8‡ˆEI‰E/ .€p€”‘€‚A€€€‚ÿReturns the list of directories as an SbStringList.O#âˆE˜‰E, (€F€T”A‚S~‚A€ƒ‚ÿvoidsetFilePointer(FILE *newFP)yPI‰EŠE) "€ €”‘€‚A€‚ÿSets file pointer to read from. Clears the stack of input files if necessary.‚I˜‰E“ŠE9 B€’€T”A‚S~‚A㑶p6€‰ƒã‘¶p6‰‚ÿSbBoolopenFile(const char *fileName,SbBool okIfNotFound = FALSE) áŠEž‹E* "€Ã€”‘€‚A€‚ÿOpens named file, sets file pointer to result. Clears the stack of input files if necessary. This returns FALSE on error; if okIfNotFound is FALSE (the default), this prints an error message if the file could not be found.\*“ŠEú‹E2 4€T€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolpushFile(const char *fileName)ˆ_ž‹E‚ŒE) "€¾€”‘€‚A€‚ÿOpens named file, pushing the resulting file pointer onto the stack. Returns FALSE on error.;ú‹E½ŒE, (€€T”A‚S~‚A€ƒ‚ÿcloseFile(){F‚ŒE8E5 :€Œ€”‘€‚A€€€€€‚ÿCloses all files on stack opened with openFile() or pushFile().K½ŒEƒE2 4€2€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisValidFile()ì¼8EoŽE0 .€y€”‘€‚A€€€‚ÿReturns TRUE if the currently open file is a valid Open Inventor file; that is, it begins with a valid Open Inventor header, or one that has been registered with SoDB::registerHeader.HƒE·ŽE, (€8€T”A‚S~‚A€ƒ‚ÿFILE *getCurFile() consttKoŽE+E) "€–€”‘€‚A€‚ÿReturns a pointer to the current file, or NULL if reading from a buffer.R&·ŽE}E, (€L€T”A‚S~‚A€ƒ‚ÿconst char *getCurFileName() const‹b+EÀE) "€Ä€”‘€‚A€‚ÿReturns full name (including directory path) of current file, or NULL if reading from a b}EÀEJEuffer.`3}EtÀE- *€f€T”A‚S~‚A€ƒ‚ÿvoidsetBuffer(void *bufPointer,size_t bufSize)g>ÀEÛÀE) "€|€”‘€‚A€‚ÿSets an in-memory buffer to read from, along with its size.KtÀE&ÁE2 4€2€T”A‚S~‚AãXíÊ€‰ƒ‚ÿSbStringgetHeader()V-ÛÀE|ÁE) "€Z€”‘€‚A€‚ÿReturns the header of the file being read.C&ÁE¿ÁE, (€.€T”A‚S~‚A€ƒ‚ÿfloatgetIVVersion()à|ÁEÏÂE0 .€Á€”‘€‚A€€€‚ÿReturns the Open Inventor file version of the file being read (e.g. 2.1). If the file has a header registered through SoDB::registerHeader(), the returned version is the Open Inventor version registered with the header.1 ¿ÁEÃE& €€‚A€‚ÿSEE ALSOr+ÏÂErÃEG ^€V€”‘€‚AãnY+€‰€ãa‡kÉ€‰€ãúÓv €‰‚ÿSoDB, SoOutput, SoTranReceiver> ÃE°ÃE1鮄ŠØ…‹Û°ÃEåÃEÊESoInteraction5rÃEåÃE% € €ˆˆ€‚ÿSoInteraction*°ÃEÄE# €€€‚ÿNAMEf@åÃEuÄE& €€€”‘€€‚ÿSoInteraction - initializes Open Inventor interaction classes3ÄE¨ÄE# € €€‚ÿINHERITS FROM:uÄEâÄE) "€"€”‘€€€‚ÿSoInteraction2 ¨ÄEÅE& €€€€ ‚ÿSYNOPSISoHâÄEƒÅE' €€”‘€€‚‚ÿ#include Methods from class SoInteraction:AÅEÄÅE, (€*€T”A‚S~‚A€ƒ‚ÿstatic voidinit()4ƒÅEøÅE& €€‚A€‚ÿDESCRIPTIONØÄÅE ÇE9 @€±€”‘€‚A€€€€€€‚ÿSoInteraction consists of one static function which initializes all Open Inventor interaction classes, as well as nodekits and the database. Note that SoInteraction::init() is already called by SoWin::init().0 øÅE9ÇE& €€‚A€‚ÿMETHODSA ÇEzÇE, (€*€T”A‚S~‚A€ƒ‚ÿstatic voidinit()ˆà9ÇEÊE¨ Á€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿThis calls SoDB::init() and SoNodeKit::init(), calls initClasses() on SoDragger, and calls initClass() on the following classes: SoAntiSquish, SoBoxHighlightRenderAction, SoCenterballManip, SoDirectionalLightManip, SoHandleBoxManip, SoInteractionKit, SoJackManip, SoLineHighlightRenderAction, SoPointLightManip, SoSelection, SoSpotLightManip, SoSurroundScale, SoTabBoxManip, SoTrackballManip, SoTransformBoxManip, and SoTransformManip.1 zÇE3ÊE& €€‚A€‚ÿSEE ALSOj#ÊEÊEG ^€F€”‘€‚AãnY+€‰€ã0d$€‰€ãH€‰‚ÿSoDB, SoNodeKit, SoWinA3ÊEÞÊE1ž)ä‹nÜÞÊEËEn„FSoInteractionKit8ÊEËE% €&€ˆˆ€‚ÿSoInteractionKit*ÞÊE@ËE# €€€‚ÿNAMEjDËEªËE& €ˆ€”‘€€‚ÿSoInteractionKit - base class for all interaction nodekit classes3@ËEÝËE# € €€‚ÿINHERITS FROM®UªËE‹ÌEY ‚€ª€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit2 ÝËE½ÌE& €€€€ ‚ÿSYNOPSISX2‹ÌEÍE& €d€”‘€€‚ÿ#include õ¬½ÌE ÎEI `€Y€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum CacheEnabled{SoInteractionKit::OFFNever build or use a cacheSoInteractionKit::ONAlways try to build a cacheSoInteractionKit::AUTOAutomatic caching}O&ÍEYÎE) "€L€”‘€‚A€‚ÿFields from class SoInteractionKit:³i ÎE ÏEJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO YÎE[ÏE/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W% ÏE²ÏE2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListX)[ÏEF/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteract²ÏEFÊEionKit:˲ÏE3FR r€—€T”A‚S~‚A€ƒ‚㑶p6‰ƒãúß~6‰ãMy'9‰‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoInteractionKit()virtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"F„F/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°3FÄF î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}„FƒFB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)NÄFÑF/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ƒFMFn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÑF¥F/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®MFØF… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¥F` F@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NØF® F/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ` Få FY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!® F5 F/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)å FŠ F, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+5 Fá F, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4Š F F& €€‚A€‚ÿDESCRIPTIONÙ©á Fî F0 .€S€”‘€‚A€€€‚ÿThis is the base class for all classes of interaction nodekits. Currently, the only subclass is SoDragger, which reacts to click-drag-release events from the mouse.$Ö FFN j€­€”‘€‚A€€€€€€€€€€€€€‚ÿThis node has four fields corresponding to those of an SoSeparator: They are renderCaching, boundingBoxCaching, renderCulling, and pickCulling. They behave the same here as they do for an SoSeparatorÜî F!F3 4€¹€”‘€‚A€€€€‚ÿThe setPartAsPath() method provides support for creating "stand-in" objects for parts in the interaction kit. The "stand-in", or "surrogate" part, is a path to an object that lies somewhere else in the scene graph./ FPF& €€‚A€‚ÿFIELDSM!FF2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumrenderCachingU,PF @F) "€X€”‘€‚A€‚ÿSet render caching mode. Default is AUTO.F @FÊER F^@F2 4€@€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumboundingBoxCaching±‡ @FAF* "€€”‘€‚A€‚ÿSet bounding box caching mode. Default is ON. Setting this value to AUTO is equivalent to ON - automatic culling is not implemented.M^@F\AF2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumrenderCulling¬‚AFBF* "€€”‘€‚A€‚ÿSet render culling mode. Default is OFF. Setting this value to AUTO is equivalent to ON - automatic culling is not implemented.K\AFSBF2 4€2€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumpickCullingS*BF¦BF) "€T€”‘€‚A€‚ÿSet pick caching mode. Default is AUTO.0 SBFÖBF& €€‚A€‚ÿMETHODSB¦BFCF, (€,€T”A‚S~‚A€ƒ‚ÿSoInteractionKit()8ÖBFPCF) "€€”‘€‚A€‚ÿConstructor.”UCFäCF? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )å»PCFÉDF* "€w€”‘€‚A€‚ÿSets any public part in the interaction kit as a "surrogate" path instead. The object at the end of the path serves as a stand-in when a pick occurs, and can thus initiate interaction.3äCFüEF0 .€€”‘€‚A€€€‚ÿInstead of the usual setPart(), which replaces partName with a new node, this will remove the node being used for partName from the scene and remember the surrogatePath you give it. Later, any pick on surrogatePath will be regarded as a pick on partName.‚FÉDF~GF< F€€”‘€‚A€€€€€€€‚ÿFor example, set the XRotator part of an SoTrackballDragger to be the path to an object in the scene. The rest of the trackball will look the same, but the XRotator stripe will disappear. However, click the mouse on the object at the end of surrogatePath and the ball will start to drag in rotation around its X axis.3 üEF±HF* "€€”‘€‚A€‚ÿNote that this is different from setting the part to be the node at the end of the path. When you set the part as a node, a second instance will be drawn in the local space of the interaction kit. When you set it as a path, the object itself is used, not a copy.ß~GFÆIF6 :€¿€”‘€‚A€€€€€‚ÿThe partName may be any part name that follows the nodekit syntax for parts, such as childList[0].shape or rotator.rotatorActive. (See the getPart() method in the SoBaseKit reference page for a complete description.)uC±HF;JF2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() constwBÆIF²JF5 :€„€”‘€‚A€€€€€‚ÿReturns an SoNodekitCatalog for the class SoInteractionKit.U#;JFKF2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*²JFZKF) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6KFKF& € €‚A€‚ÿCATALOG PARTS;ZKFËKF- *€€”‘€‚‰€ƒ€‚ÿAll Parts‹KFVLFr#´€2ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €€€‚ÿ€"€€€‚ÿÿÿDefaultNULL¥-ËKFûLFx#À€ZÜI, “ ’ €€€€‚ÿ€€€€‚ÿ€4€€€‚ÿ€D€€€‚ÿÿÿPart NamePart TypeTypeDefault¨0VLF£MFx#À€`ÜI, “ ’ €€€€‚ÿ€ €€€‚ÿ€F€€€‚ÿ€R€€€‚ÿÿÿcallbackListNodeKitListPart--yes,ûLFÏMF' € €€‚€‚ÿa6£MF0NF+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’1ÏMFÂNFa#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™80NF[OFa#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback?ÂNFšOF' €0€€‚€‚ÿFILE FORMAT/DEFAULT=[OF×OF* $€&€P„7|‚€‚ÿInteractionKit {›fšOF~€F5 :€Ì€P„|‚€ƒ×OF~€FÊE‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOcallbackListNULL}1 ×OF¯€F& €€‚€‚ÿSEE ALSO¿c~€Fn„F\ †‚Ç€”‘€‚ãib€‰€€ãΖc`‰€€ã•£&ô‰€€ã}鉀€ãõˆ¨f‰€€ãÈï?†‰€€ãÌrŠâ‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ã E€‰€ã¬õ´Ž€‰‚ÿSoBaseKit, SoInteraction, SoNodeKitDetail, SoNodeKitPath, SoNodekitCatalog, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTranslate1Dragger, SoTranslate2Dragger> ¯€F¬„F1óØ…‹‚ݬ„Fá„FoÄFSoInterpolate5n„Fá„F% € €ˆˆ€‚ÿSoInterpolate*¬„F …F# €€€‚ÿNAME`:á„Fk…F& €t€”‘€€‚ÿSoInterpolate - base class for all interpolator engines3 …Fž…F# € €€‚ÿINHERITS FROM‘Dk…F/†FM j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoInterpolate2 ž…Fa†F& €€€€ ‚ÿSYNOPSISvO/†F׆F' €ž€”‘€€‚‚ÿ#include Inputs from class SoInterpolate:Fa†F‡F2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatalphaM$׆Fj‡F) "€H€”‘€‚A€‚ÿOutputs from class SoInterpolate:I‡F³‡F2 4€.€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)outputP!j‡FˆF/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}³‡FŠFƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)ˆF[ŠF/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØŠFÀŒF 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH[ŠFHF@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÀŒF–F/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞHFÍŽFY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4–FF& €€‚A€‚ÿDESCRIPTION}DÍŽFŠÀF9 @€‰€”‘€‚A€€€€€€‚ÿSoInterpolate is the abstract base class for all interpolator engines. An interpolator engine linearly interpolates between two values, based on the alpha input value. The alpha value should bFŠÀFn„Fe between 0.0 and 1.0. The interpolator engines derived from this class define the input fields that are to be interpolated./ F¹ÀF& €€‚A€‚ÿINPUTSFŠÀFÿÀF2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatalphaH¹ÀFGÁF) "€>€”‘€‚A€‚ÿInterpolation control value.0 ÿÀFwÁF& €€‚A€‚ÿOUTPUTSIGÁFÀÁF2 4€.€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)outputµ‹wÁFuÂF* "€€”‘€‚A€‚ÿInterpolated value. The type of the output value is the same as the type of the input values, which is specified by the derived classes.<ÀÁF±ÂF& €,€‚A€‚ÿFILE FORMAT/DEFAULT“juÂFDÃF) "€Ô€”‘€‚A€‚ÿThis is an abstract class. See the reference page of a derived class for the format and default values.1 ±ÂFuÃF& €€‚A€‚ÿSEE ALSOúŽDÃFoÄFl ¦€€”‘€‚Aãë\¼N€‰€ãƒÀÖ€‰€ãWÃy€‰€ãKWúÙ€‰€ãvWúÙ€‰€ã¡WúÙ€‰‚ÿSoEngineOutput, SoInterpolateFloat, SoInterpolateRotation, SoInterpolateVec2f, SoInterpolateVec3f, SoInterpolateVec4fCuÃF²ÄF1enŽÞ²ÄFìÄFGSoInterpolateFloat:oÄFìÄF% €*€ˆˆ€‚ÿSoInterpolateFloat*²ÄFÅF# €€€‚ÿNAME`:ìÄFvÅF& €t€”‘€€‚ÿSoInterpolateFloat - interpolates floating-point values3ÅF©ÅF# € €€‚ÿINHERITS FROM¶]vÅF_ÆFY ‚€º€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€ã}9;怉€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoInterpolate > SoInterpolateFloat2 ©ÅF‘ÆF& €€€€ ‚ÿSYNOPSIS{T_ÆF ÇF' €¨€”‘€€‚‚ÿ#include Inputs from class SoInterpolateFloat:b(‘ÆFnÇF: D€P€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ÿSoMFFloatinput0SoMFFloatinput1T% ÇFÂÇF/ .€J€”‘€‚A€ã}9;扂ÿInputs from class SoInterpolate:FnÇFÈF2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatalphaM$ÂÇFUÈF) "€H€”‘€‚A€‚ÿOutputs from class SoInterpolate:IÈFžÈF2 4€.€T”A‚S~‚A€ã'0]‰ƒ‚ÿ(SoMFFloat)outputZ+UÈFøÈF/ .€V€”‘€‚A€ãƒÀÖ‰‚ÿMethods from class SoInterpolateFloat:DžÈF<ÉF, (€0€T”A‚S~‚A€ƒ‚ÿSoInterpolateFloat()P!øÈFŒÉF/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}<ÉFŒËFƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)ŒÉFäËF/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØŒËFIÎF 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHäËFÑÎF@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NIÎFÏF/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÑÎFbGY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType typÏFbGoÄFe) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ÏF–G& €€‚A€‚ÿDESCRIPTIONКbGfG6 :€5€”‘€‚A€€€€€‚ÿThis engine linearly interpolates between two floating-point values, based on the alpha input value. The alpha value should be between 0.0 and 1.0.õ–G…G* "€ë€”‘€‚A€‚ÿThe input fields can have multiple values, allowing the engine to interpolate several objects in parallel. One of the inputs may have more values than the other. In that case, the last value of the shorter input will be repeated as necessary./ fG´G& €€‚A€‚ÿINPUTSb(…GG: D€P€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ÿSoMFFloatinput0SoMFFloatinput1s>´G‰G5 :€|€”‘€‚A€€€€€‚ÿThe engine linearly interpolates from input0 to input1.0 G¹G& €€‚A€‚ÿMETHODSD‰GýG, (€0€T”A‚S~‚A€ƒ‚ÿSoInterpolateFloat()8¹G5G) "€€”‘€‚A€‚ÿConstructor.<ýGqG& €,€‚A€‚ÿFILE FORMAT/DEFAULT?5G°G* $€*€P„7|‚€‚ÿInterpolateFloat {PqGG1 2€>€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿalpha0input00input11}1 °G1G& €€‚€‚ÿSEE ALSOÕvGG_ Ž€ì€”‘€‚ãë\¼N€‰€ãWÃy€‰€ãKWúÙ€‰€ãvWúÙ€‰€ã¡WúÙ€‰‚ÿSoEngineOutput, SoInterpolateRotation, SoInterpolateVec2f, SoInterpolateVec3f, SoInterpolateVec4fF1GLG1m‚a„ŽßLG‰GÑGGSoInterpolateRotation=G‰G% €0€ˆˆ€‚ÿSoInterpolateRotation*LG³G# €€€‚ÿNAME]7‰GG& €n€”‘€€‚ÿSoInterpolateRotation - interpolates rotation values3³GCG# € €€‚ÿINHERITS FROM¹`GüGY ‚€À€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€ã}9;怉€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoInterpolate > SoInterpolateRotation2 CG.G& €€€€ ‚ÿSYNOPSIS~WüG¬G' €®€”‘€€‚‚ÿ#include Inputs from class SoInterpolateRotation:h..G G: D€\€T”A‚S~‚AãÏ[ Ñ€‰ƒ‚ãÏ[ щƒ‚ÿSoMFRotationinput0SoMFRotationinput1T%¬Gh G/ .€J€”‘€‚A€ã}9;扂ÿInputs from class SoInterpolate:F G® G2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatalphaU&h G G/ .€L€”‘€‚A€ã}9;扂ÿOutputs from class SoInterpolate:L® GO G2 4€4€T”A‚S~‚A€ãÏ[ щƒ‚ÿ(SoMFRotation)outputU, G¤ G) "€X€”‘€‚A€‚ÿMethods from class SoInterpolateRotation:GO Gë G, (€6€T”A‚S~‚A€ƒ‚ÿSoInterpolateRotation()P!¤ G; G/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}ë G; Gƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X); G“ G/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ; G @G 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) const“ G @GGˆH“ G”@G@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N @Gâ@G/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ”@GBGY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4â@GMBG& €€‚A€‚ÿDESCRIPTIONÊ”BGCG6 :€)€”‘€‚A€€€€€‚ÿThis engine linearly interpolates between two rotation values, based on the alpha input value. The alpha value should be between 0.0 and 1.0."øMBG9DG* "€ñ€”‘€‚A€‚ÿThe input fields can have multiple rotations, allowing the engine to interpolate several objects in parallel. One of the inputs may have more values than the other. In that case, the last value of the shorter input will be repeated as necessary./ CGhDG& €€‚A€‚ÿINPUTSh.9DGÐDG: D€\€T”A‚S~‚AãÏ[ Ñ€‰ƒ‚ãÏ[ щƒ‚ÿSoMFRotationinput0SoMFRotationinput1s>hDGCEG5 :€|€”‘€‚A€€€€€‚ÿThe engine linearly interpolates from input0 to input1.0 ÐDGsEG& €€‚A€‚ÿMETHODSGCEGºEG, (€6€T”A‚S~‚A€ƒ‚ÿSoInterpolateRotation()8sEGòEG) "€€”‘€‚A€‚ÿConstructor.<ºEG.FG& €,€‚A€‚ÿFILE FORMAT/DEFAULTBòEGpFG* $€0€P„7|‚€‚ÿInterpolateRotation {^-.FGÎFG1 2€Z€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿalpha0input00 0 1 0input10 0 1 0}1 pFGÿFG& €€‚€‚ÿSEE ALSOÒsÎFGÑGG_ Ž€æ€”‘€‚ãë\¼N€‰€ãƒÀÖ€‰€ãKWúÙ€‰€ãvWúÙ€‰€ã¡WúÙ€‰‚ÿSoEngineOutput, SoInterpolateFloat, SoInterpolateVec2f, SoInterpolateVec3f, SoInterpolateVec4fCÿFGHG1´ŽGàHGNHGf‰GSoInterpolateVec2f:ÑGGNHG% €*€ˆˆ€‚ÿSoInterpolateVec2f*HGxHG# €€€‚ÿNAMEd>NHGÜHG& €|€”‘€€‚ÿSoInterpolateVec2f - interpolates 2D floating-point vectors3xHGIG# € €€‚ÿINHERITS FROM¶]ÜHGÅIGY ‚€º€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€ã}9;怉€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoInterpolate > SoInterpolateVec2f2 IG÷IG& €€€€ ‚ÿSYNOPSIS{TÅIGrJG' €¨€”‘€€‚‚ÿ#include Inputs from class SoInterpolateVec2f:b(÷IGÔJG: D€P€T”A‚S~‚Aãóñi`€‰ƒ‚ãóñi`‰ƒ‚ÿSoMFVec2finput0SoMFVec2finput1T%rJG(KG/ .€J€”‘€‚A€ã}9;扂ÿInputs from class SoInterpolate:FÔJGnKG2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatalphaU&(KGÃKG/ .€L€”‘€‚A€ã}9;扂ÿOutputs from class SoInterpolate:InKG LG2 4€.€T”A‚S~‚A€ãóñi`‰ƒ‚ÿ(SoMFVec2f)outputR)ÃKG^LG) "€R€”‘€‚A€‚ÿMethods from class SoInterpolateVec2f:D LG¢LG, (€0€T”A‚S~‚A€ƒ‚ÿSoInterpolateVec2f()P!^LGòLG/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}¢LGòNGƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)òLGJOG/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØòNG»G 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultJOG»GÑGGValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHJOGC‚G@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N»G‘‚G/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞC‚GȃGY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4‘‚GüƒG& €€‚A€‚ÿDESCRIPTIONÅȃGÁ„G6 :€€”‘€‚A€€€€€‚ÿThis engine linearly interpolates between two 2D vectors, based on the alpha input value. The alpha value should be between 0.0 and 1.0. öüƒGá…G* "€í€”‘€‚A€‚ÿThe input fields can have multiple vectors, allowing the engine to interpolate several objects in parallel. One of the inputs may have more values than the other. In that case, the last value of the shorter input will be repeated as necessary./ Á„G†G& €€‚A€‚ÿINPUTSb(á…Gr†G: D€P€T”A‚S~‚Aãóñi`€‰ƒ‚ãóñi`‰ƒ‚ÿSoMFVec2finput0SoMFVec2finput1s>†Gå†G5 :€|€”‘€‚A€€€€€‚ÿThe engine linearly interpolates from input0 to input1.0 r†G‡G& €€‚A€‚ÿMETHODSDå†GY‡G, (€0€T”A‚S~‚A€ƒ‚ÿSoInterpolateVec2f()8‡G‘‡G) "€€”‘€‚A€‚ÿConstructor.<Y‡G͇G& €,€‚A€‚ÿFILE FORMAT/DEFAULT?‘‡G ˆG* $€*€P„7|‚€‚ÿInterpolateVec2f {T#͇G`ˆG1 2€F€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿalpha0input00 0input10 0}1 ˆG‘ˆG& €€‚€‚ÿSEE ALSOÕv`ˆGf‰G_ Ž€ì€”‘€‚ãë\¼N€‰€ãƒÀÖ€‰€ãWÃy€‰€ãvWúÙ€‰€ã¡WúÙ€‰‚ÿSoEngineOutput, SoInterpolateFloat, SoInterpolateRotation, SoInterpolateVec3f, SoInterpolateVec4fC‘ˆG©‰G1a„ŽL†á©‰Gã‰GÿÊGSoInterpolateVec3f:f‰Gã‰G% €*€ˆˆ€‚ÿSoInterpolateVec3f*©‰G ŠG# €€€‚ÿNAMEd>ã‰GqŠG& €|€”‘€€‚ÿSoInterpolateVec3f - interpolates 3D floating-point vectors3 ŠG¤ŠG# € €€‚ÿINHERITS FROM¶]qŠGZ‹GY ‚€º€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€ã}9;怉€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoInterpolate > SoInterpolateVec3f2 ¤ŠGŒ‹G& €€€€ ‚ÿSYNOPSIS{TZ‹GŒG' €¨€”‘€€‚‚ÿ#include Inputs from class SoInterpolateVec3f:b(Œ‹GiŒG: D€P€T”A‚S~‚Aãòi`€‰ƒ‚ãòi`‰ƒ‚ÿSoMFVec3finput0SoMFVec3finput1T%ŒG½ŒG/ .€J€”‘€‚A€ã}9;扂ÿInputs from class SoInterpolate:FiŒGG2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatalphaU&½ŒGXG/ .€L€”‘€‚A€ã}9;扂ÿOutputs from class SoInterpolate:IG¡G2 4€.€T”A‚S~‚A€ãòi`‰ƒ‚ÿ(SoMFVec3f)outputR)XGóG) "€R€”‘€‚A€‚ÿMethods from class SoInterpolateVec3f:D¡G7ŽG, (€0€T”A‚S~‚A€ƒ‚ÿSoInterpolateVec3f()P!óG‡ŽG/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}7ŽG“ÀGƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine‡ŽG“ÀGf‰G *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)‡ŽGëÀG/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ“ÀGPÃG 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHëÀGØÃG@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NPÃG&ÄG/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞØÃG]ÅGY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4&ÄG‘ÅG& €€‚A€‚ÿDESCRIPTIONÅ]ÅGVÆG6 :€€”‘€‚A€€€€€‚ÿThis engine linearly interpolates between two 3D vectors, based on the alpha input value. The alpha value should be between 0.0 and 1.0. ö‘ÅGvÇG* "€í€”‘€‚A€‚ÿThe input fields can have multiple vectors, allowing the engine to interpolate several objects in parallel. One of the inputs may have more values than the other. In that case, the last value of the shorter input will be repeated as necessary./ VÆG¥ÇG& €€‚A€‚ÿINPUTSb(vÇGÈG: D€P€T”A‚S~‚Aãòi`€‰ƒ‚ãòi`‰ƒ‚ÿSoMFVec3finput0SoMFVec3finput1s>¥ÇGzÈG5 :€|€”‘€‚A€€€€€‚ÿThe engine linearly interpolates from input0 to input1.0 ÈGªÈG& €€‚A€‚ÿMETHODSDzÈGîÈG, (€0€T”A‚S~‚A€ƒ‚ÿSoInterpolateVec3f()8ªÈG&ÉG) "€€”‘€‚A€‚ÿConstructor.<îÈGbÉG& €,€‚A€‚ÿFILE FORMAT/DEFAULT?&ÉG¡ÉG* $€*€P„7|‚€‚ÿInterpolateVec3f {X'bÉGùÉG1 2€N€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿalpha0input00 0 0input10 0 0}1 ¡ÉG*ÊG& €€‚€‚ÿSEE ALSOÕvùÉGÿÊG_ Ž€ì€”‘€‚ãë\¼N€‰€ãƒÀÖ€‰€ãWÃy€‰€ãKWúÙ€‰€ã¡WúÙ€‰‚ÿSoEngineOutput, SoInterpolateFloat, SoInterpolateRotation, SoInterpolateVec2f, SoInterpolateVec4fC*ÊGBËG1FGÍâBËG|ËGœ HSoInterpolateVec4f:ÿÊG|ËG% €*€ˆˆ€‚ÿSoInterpolateVec4f*BËG¦ËG# €€€‚ÿNAMEd>|ËG ÌG& €|€”‘€€‚ÿSoInterpolateVec4f - interpolates 4D floating-point vectors3¦ËG=ÌG# € €€‚ÿINHERITS FROM¶] ÌGóÌGY ‚€º€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€ã}9;怉€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoInterpolate > SoInterpolateVec4f2 =ÌG%ÍG& €€€€ ‚ÿSYNOPSIS{TóÌG ÍG' €¨€”‘€€‚‚ÿ#include Inputs from class SoInterpolateVec4f:b(%ÍGÎG: D€P€T”A‚S~‚AãIòi`€‰ƒ‚ãIòi`‰ƒ‚ÿSoMFVec4finput0SoMFVec4finput1T% ÍGVÎG/ .€J€”‘€‚A€ã}9;扂ÿInputs from class SoInterpolate:FÎGœÎG2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatalphaU&VÎGñÎG/ .€L€”‘€‚A€ã}9;扂ÿOutputs from class SoInterpolate:IœÎG:ÏG2 4€.€T”A‚S~‚A€ãIòi`‰ƒ‚ÿ(SoMFVec4f)outputR)ñÎGŒÏG) "€R€”‘€‚A€‚ÿMethods from class SoInterpolateVec4f:D:ÏGÐÏG, (€0€T”A‚S~‚A€ƒ‚ÿSoInterpolateVec4f()P!ŒÏG,H/ .€B€”‘€‚A€ãú­Np‰‚ÿÐÏG,HÿÊGMethods from class SoEngine:}ÐÏG,Hƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X),H„H/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ,HéH 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH„HqH@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NéH¿H/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞqHöHY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4¿H*H& €€‚A€‚ÿDESCRIPTIONÅöHïH6 :€€”‘€‚A€€€€€‚ÿThis engine linearly interpolates between two 4D vectors, based on the alpha input value. The alpha value should be between 0.0 and 1.0. ö*H H* "€í€”‘€‚A€‚ÿThe input fields can have multiple vectors, allowing the engine to interpolate several objects in parallel. One of the inputs may have more values than the other. In that case, the last value of the shorter input will be repeated as necessary./ ïH> H& €€‚A€‚ÿINPUTSb( H  H: D€P€T”A‚S~‚AãIòi`€‰ƒ‚ãIòi`‰ƒ‚ÿSoMFVec4finput0SoMFVec4finput1s>> H H5 :€|€”‘€‚A€€€€€‚ÿThe engine linearly interpolates from input0 to input1.0   HC H& €€‚A€‚ÿMETHODSD H‡ H, (€0€T”A‚S~‚A€ƒ‚ÿSoInterpolateVec4f()8C H¿ H) "€€”‘€‚A€‚ÿConstructor.<‡ Hû H& €,€‚A€‚ÿFILE FORMAT/DEFAULT?¿ H: H* $€*€P„7|‚€‚ÿInterpolateVec4f {\+û H– H1 2€V€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿalpha0input00 0 0 0input10 0 0 0}1 : HÇ H& €€‚€‚ÿSEE ALSOÕv– Hœ H_ Ž€ì€”‘€‚ãë\¼N€‰€ãƒÀÖ€‰€ãWÃy€‰€ãKWúÙ€‰€ãvWúÙ€‰‚ÿSoEngineOutput, SoInterpolateFloat, SoInterpolateRotation, SoInterpolateVec2f, SoInterpolateVec3fNÇ Hê H1’L† ‡ãê H/ H®LHSoIntersectionDetectionActionE œ H/ H% €@€ˆˆ€‚ÿSoIntersectionDetectionAction*ê HY H# €€€‚ÿNAMEf@/ H¿ H& €€€”‘€€‚ÿSoIntersectionDetectionAction - class to detect intersections3Y Hò H# € €€‚ÿINHERITS FROM^-¿ HPH1 2€Z€T”A‚S~‚AãïK€‰‚ÿSoAction > SoIntersectionDetectionAction1 ò HH& €€‚A€‚ÿSYNOPSISi@PHêH) "€€€”‘€‚A€‚ÿ#include 4§H*BH è€O€T”A‚S~‚A€㑶p6‰ƒãMy'9‰ãMy'9‰‚ƒ‚ƒ‚ƒƒãMy'9‰€ƒ€€ƒã¨ƒõ(€‰€ƒƒã¨ƒõ(€‰€ƒƒ€‚ÿtypedef SbBoolSoIntersectionFilterCB(void* userData,const SoPath* shape1,const SoPath* shape2)typedef RespSoIntersectionCB(voêH*BHœ Hid* userData,const SoIntersectingPrimitive* p1,const SoIntersectingPrimitive* p2)enum Resp{SoIntersectionDetectionAction::NEXT_PRIMITIVE,SoIntersectionDetectionAction::NEXT_SHAPE,SoIntersectionDetectionAction::ABORT}struct SoIntersectingPrimitive {enum PrimitiveType {LINE_SEGMENT = 2,TRIANGLE = 3};SoPath* path;Path of the shapePrimitiveType type;Type of primitiveSbVec3f vertex [3];Vertex of the primitive(Modeling coordinates)SbVec3f xf_vertex [3];Vertex of the primitive(World coordinates)}]4êH‡BH) "€h€”‘€‚A€‚ÿMethods from class SoIntersectionDetectionAction:[#*BHâCH8 >€G€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSoIntersectionDetectionAction()~SoIntersectionDetectionAction()voidsetFilterCallback(SoIntersectionFilterCB* f,void* userData = NULL)voidaddIntersectionCallback(SoIntersectionCB* f,void* userData = NULL)voidremoveIntersectionCallback(SoIntersectionCB* f,void* userData = NULL)P!‡BH2DH/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†âCH¸EHj ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()52DHíEH& €€‚A€‚ÿDESCRIPTION ¡x¸EHŽFH) "€ð€”‘€‚A€‚ÿThis action allows the programmer to analyze a scene graph to know which pairs of objects within the scene intersect.ÚíEH’GH* "€µ€”‘€‚A€‚ÿThe action first detects intersections between pairs of bounding boxes. If such an intersection occurs, the programmer can abort the action or allow it to determine if the primitives of the objects actually collide.œsŽFH.HH) "€æ€”‘€‚A€‚ÿThe algorithm can call programmer-supplied callback functions when there is an intersection between two objects.0 ’GH^HH& €€‚A€‚ÿMETHODSO#.HH­HH, (€F€T”A‚S~‚A€ƒ‚ÿSoIntersectionDetectionAction()8^HHåHH) "€€”‘€‚A€‚ÿConstructor.P$­HH5IH, (€H€T”A‚S~‚A€ƒ‚ÿ~SoIntersectionDetectionAction()7åHHlIH) "€€”‘€‚A€‚ÿDestructor.xK5IHäIH- *€–€T”A‚S~‚A€ƒ‚ÿvoidsetFilterCallback(SoIntersectionFilterCB* f,void* userData = NULL)þÔlIHâJH* "€©€”‘€‚A€‚ÿSets a filter which allow the user to continue or not the intersection finding for a pair of shapes. If the callback returns TRUE, the action search for real intersections, else it goes to the next shape pair.È—äIHªKH1 0€/€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddIntersectionCallback(SoIntersectionCB* f,void* userData = NULL)voidremoveIntersectionCallback(SoIntersectionCB* f,void* userData = NULL)oFâJHLH) "€Œ€”‘€‚A€‚ÿAdds/removes a callback to be called when there is an intersection.1 ªKHJLH& €€‚A€‚ÿSEE ALSOd/LH®LH5 :€^€”‘€‚Aã˃€‰ãÃè9‰‚ÿSoCollisionManager, SoWinCollisionViewer> JLHìLH1ÁJÍP“äìLH!MH̆ISoJackDragger5®LH!MH% € €ˆˆ€‚ÿSoJackDragger*ìLHKMH# €€€‚ÿNAME†`!MHÑMH& €À€”‘€€‚ÿSoJackDragger - jack-shaped object you rotate, translate, or scale by dragging with the mouse3KMHNH# € €€‚ÿINHERITS FROMêyÑMHîNHq ²€ò€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoJackDragger2 NH OH& €€€€ ‚ÿSYNOPSISwPîNH—OH' € €”‘€€‚‚ÿ#include Fields from class SoJackDragger:ŒJ OH/€HB T€”€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ÿSoSFRotationrotationSoSFVec3fsc—OH/€H®LHaleFactorSoSFVec3ftranslationP!—OH€H/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:H/€HÇ€H2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(€HH/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³iÇ€HÑHJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO H ‚H/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%ÑHw‚H2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListM$ ‚HÄ‚H) "€H€”‘€‚A€‚ÿMethods from class SoJackDragger:±uw‚HuƒH< H€ê€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoJackDragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"Ä‚HƃH/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:KuƒH†HC T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨ÆƒHô†H; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)†HL‡H/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”Uô†Hà‡H? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"L‡H1ˆH/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°à‡HqŠH î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}1ˆH0‹HB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)NqŠH~‹H/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|0‹HúŒHn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)~‹HRH/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®úŒH…H… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHRHÀH@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(Sb…HÀH®LHBool flag)N…HgÀH/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÀHžÁHY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!gÀHîÁH/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)žÁHCÂH, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+îÁHšÂH, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4CÂHÎÂH& €€‚A€‚ÿDESCRIPTION˘šÂH™ÄH3 4€1€”‘€‚A€€€€‚ÿSoJackDragger is a composite dragger in the shape of a jack from the children's game jacks. Three lines along the x, y, and z axes form the central star shape, which you can drag with the mouse to rotate the jack. Dragging any of the small cubes mounted at the end of the axes will scale the jack uniformly in all 3 dimensions. At the core of the jack is an SoDragPointDragger for translating the jack.X ÎÂHñÆHN j€€”‘€‚A€€€€€€€€€€€€€‚ÿEach of these shapes is a different dragger with the default geometry changed. All of them are parts of the jack dragger, which keeps them moving together. The star is an SoRotateSphericalDragger, and dragging it updates the rotation field of the jack dragger. The small cubes are an SoScaleUniformDragger, tied to the scaleFactor field. The position of the SoDragPointDragger is given by the translation field. As with all draggers, if you change the fields the dragger will move to match the new settings.«s™ÄHœÇH8 @€æ€”‘€‚A€€€€€€‚ÿRemember: This is not an SoTransform!. If you want to move other objects with this dragger, you can either:üÀñÆH˜ÈH< F€€”‘€‚A€€€€€€€‚ÿ[a] Use an SoJackManip, which is subclassed from SoTransform. It creates one of these draggers and uses it as the interface to change its fields. (see the SoJackManip reference page).£tœÇH;ÉH/ .€è€”‘€‚A€€€‚ÿ[b] Use field-to-field connections to connect the fields of this dragger to those of any SoTransformation node.W˜ÈH’ËHB R€+€”‘€‚A€€€€€€€€€‚ÿYou can change the parts in any instance of this dragger using setPart(). The default part geometries are defined as resources for this SoJackDragger class. They are detailed in the Dragger Resources section of the online reference page for this class. You can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/jackDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ ;ÉHÁËH& €€‚A€‚ÿFIELDSL’ËH ÌH2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationGÁËHTÌH) "€<€”‘€‚A€‚ÿOrientation of the dragger.L ÌH ÌH2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorATÌHáÌH) "€0€”‘€‚A€‚ÿScale of the dragger.L ÌH-ÍH2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationDáÌHqÍH) "€6€”‘€‚A€‚ÿPosition of the dragger.0 -ÍH¡ÍH& €€‚A€‚ÿMETHODS?qÍHàÍH, (€&€T”A‚S~‚A€ƒ‚ÿSoJackDragger()8¡ÍHÎH) "€€”‘€‚A€‚ÿConstructor.uCàÍHÎH2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/ÎHëÎH/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#ÎH@ÏH2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ëÎH“ÏH) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6@ÏHÉÏH& € €‚A€‚ÿCATALOG PARTS;“ÏHI- *€€”‘€‚‰€ƒ€‚ÿAll ParÉÏHI®LHts˜ÉÏH¨I~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/IgI#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2¨I)I#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yesÁ1gIêI#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿsurroundScaleSurroundScale--yesº*)I¤I#ð€TÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿantiSquishAntiSquish--noÀ0êIdI#ð€`ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€D€ÿ€F€€€‚ÿ€R€€€‚ÿÿÿscalerScaleUniformDragger--yesÄ4¤I(I#ð€hÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€L€ÿ€N€€€‚ÿ€Z€€€‚ÿÿÿrotatorRotateSphericalDragger--yesÁ1dIéI#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslatorDragPointDragger--yes,(II' € €€‚€‚ÿa6éIvI+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’1IIa#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8vI¡Ia#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=IÞI' €,€€‚€‚ÿDRAGGER RESOURCESµ¡Iô Ia €k€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚ÿResource:jackRotatorRotatorPart:rotator.rotatorAppearance:The 'star' of the jack. Set of 3 white axes (lines)Description:Picking star begins rotational dragging of the jackDragger.Resource:jackRotatorRotatorActivePart:rotator.rotatorActiveAppearance:Yellow version of the rotator.rotator part.Description:Displayed while the jackDragger is being rotatedResource:jackRotatorFeedbackPart:rotator.feedback.ÌÞI" Ib ’€™€PÍÇ~‚Í€ ƒ‚ƒ€€ ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ€€ ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿAppearance:Empty separatorDescription:Removes any feedback geometry created in the constructor of the SoRotateSphericalDragger.Resource:jackRotatorFeedbackActivePart:rotator.feedbackActiveAppearance:Empty separatorDescription:Removes any feedbackActive geometry created in the constructor of the SoRotateSphericalDragger.Resource:jackScalerScalerPart:scaler.scalerAppearance:Six small white cubes, the tips of the rotator star·ô I5I\ †€o€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ€€ ‚ÿDescription:Picking this initiates uniform 3D scaling of the dragger.Resource:jackScalerScalerActivePart:scaler.scalerActiveAppearance:Yellow version of the scaler.scaler resource.Description:Displayed while the dragger is being scaled.Resource:jackScalerFeedbackPart:scaler.feedbackAppearance:Empty separatorDescription:Removes any feedback geometry created in the constructor of the SoScaleUniformDragger.j " I«@I^ Š€€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ€€ ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚ÿResource:jackScalerFeedbackActivePart:scaler.feedbackActiveAppearance:Empty separatorDescription:Removes any feedbackActive geometry created in the constructor of the SoScaleUniformDragger.Resource:jackTranslatorLineTranslatorParts:translator.xTranslator.translatortranslator.yTranslator.translatortranslator.zTranslator.translatorAppea5I«@I®LHrance:Skinny white cylinder aligned with axes of motionDescription:Picking these parts initiates dragging in the x, y, and z linear draggers respectively.Å5IÆBIV z€‹€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:jackTranslatorLineTranslatorActiveParts:translator.xTranslator.translatorActivetranslator.yTranslator.translatorActivetranslator.zTranslator.translatorActiveAppearance:Skinny yellow cylinder aligned with axes of motionDescription:Shown during linear dragging in the x, y, and z directions respectively.Resource:jackTranslatorPlaneTranslatorParts:translator.yzTranslator.translatortranslator.xzTranslator.translatorN«@IEII `€ €PÍÇ~‚Í€ ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚ÿtranslator.xyTranslator.translatorAppearance:White flattened cube, drawn in wireframeDescription:Picking these parts initiates dragging by the yz, xz, and xy planar draggers respectively.Resource:jackTranslatorPlaneTranslatorActiveParts:translator.yzTranslator.translatorActivetranslator.xzTranslator.translatorActivetranslator.xyTranslator.translatorActiveAppearance:Yellow flattened cube, drawn in wireframeDescription:Shown during planar dragging in the yz, xz, and xy planes respectively.¬ÆBI)GIi  €Y€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿResource:jackTranslatorXFeedbackPart:xFeedbackAppearance:Double-headed purple arrowDescription:Feedback for motion in x directionResource:jackTranslatorYFeedbackPart:yFeedbackAppearance:Double-headed purple arrowDescription:Feedback for motion in y directionResource:jackTranslatorZFeedbackPart:zFeedbackAppearance:Double-headed purple arrowDescription:Feedback for motion in z direction©EI9IIg œ€S€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:jackTranslatorYZFeedbackPart:yzFeedbackAppearance:Semi-transparent green square in yz planeDescription:Feedback for motion in yz planeResource:jackTranslatorXZFeedbackPart:xzFeedbackAppearance:Semi-transparent green square in yz planeDescription:Feedback for motion in xz planeResource:jackTranslatorXYFeedbackPart:xyFeedbackAppearance:Semi-transparent green square in yz plane\0)GI•II, (€`€PÍÇ~‚Í€ ƒ‚‚ÿDescription:Feedback for motion in xy plane<9IIÑII& €,€‚Í€‚ÿFILE FORMAT/DEFAULT:•II JI* $€ €P„7|‚€‚ÿJackDragger {ÀÑII!LIV z€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSErotation0 0 1 0translation0 0 0scaleFactor1 1 1callbackListNULLsurroundScaleNULLantiSquishAntiSquish {sizing BIGGEST_DIMENSION }scalerScaleUniformDragger {}rotatorRotateSphericalDragger {}translatorDragPointDragger {}rotator.rotatorrotator.rotatorActiveP JIqNI< F€)€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿrotator.feedbackrotator.feedbackActivescaler.scalerscaler.scalerActivescaler.feedbackscaler.feedbackActivetranslator.xTranslator.translatortranslator.yTranslator.translatortranslator.zTranslator.translatorè!LI›€I6 :€Ñ€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿtranslator.xTranslator.translatorActivetranslator.yTranslator.translatorActivetranslator.zTranslator.translatorActivetranslator.yzTranslator.translatortranslatorqNI›€I®LH.xzTranslator.translatortranslator.xyTranslator.translator)ïqNIÄ‚I: B€ß€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿtranslator.yzTranslator.translatorActivetranslator.xzTranslator.translatorActivetranslator.xyTranslator.translatorActivexFeedbackyFeedbackzFeedbackyzFeedbackxzFeedback_3›€I#ƒI, (€f€P„|‚€ƒ‚‚ÿxyFeedback},Ä‚IOƒI) "€€”‘€‚€‚ÿ1 #ƒI€ƒI& €€‚€‚ÿSEE ALSOL OƒĬI, &‚A€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2Dragger< €ƒI‡I1n ‡>‰“å‡I;‡IxÏISoJackManip3̆I;‡I% €€ˆˆ€‚ÿSoJackManip*‡Ie‡I# €€€‚ÿNAME~X;‡Iã‡I& €°€”‘€€‚ÿSoJackManip - transform node with 3D interface for rotating, scaling, and translating3e‡IˆI# € €€‚ÿINHERITS FROMò€ã‡I‰Ir ²€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€ã¼ýÓ€‰€ã%n’ €‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform > SoTransformManip > SoJackManip2 ˆI:‰I& €€€€ ‚ÿSYNOPSISyL‰I³‰I- *€˜€”‘€€‚ã¼ýÓ‰‚ÿ#include Fields from class SoTransform:Ï}:‰I‚ŠIR t€ú€T”A‚S~‚Aã”5€‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3ftranslationSoSFRotationrotationSoSFVec3fscaleFactorSoSFRotationscaleOrientationSoSFVec3fcenterK"³‰IÍŠI) "€D€”‘€‚A€‚ÿMethods from class SoJackManip:f2‚ŠI3‹I4 8€d€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoJackManip()static SoTypegetClassTypeId()X)ÍŠI‹‹I/ .€R€”‘€‚A€ã%n’ ‰‚ÿMethods from class SoTransformManip:Î3‹IYŒIO n€þ€T”A‚S~‚A€ƒ‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒãMy'9‰ã¼ýÓ‰‚ÿSoDragger *getDragger()SbBoolreplaceNode(SoPath *p )SbBoolreplaceManip(SoPath *p,SoTransform *newOne ) constS$‹‹I¬ŒI/ .€H€”‘€‚A€ã¼ýÓ‰‚ÿMethods from class SoTransform: ŽYŒI¹ŽI Ì€€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰‚ƒã4i¥‘‰‚ƒã¥W7ž‰‚ÿvoidpointAt(const SbVec3f &fromPoint,const SbVec3f &toPoint)voidgetScaleSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetRotationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetTranslationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidmultLeft(const SbMatrix &mat)voidmultRight(const SbMatrix &mat)voidcombineLeft(SoTransformation *nodeOnRight)Ç„¬ŒI€IC T€ €T”A‚S~‚A€ƒã¥W7ž‰‚ƒã4i¥‘‰‚ƒã¨ƒõ(‰‚ÿvoidcombineRight(SoTransformation *nodeOnLeft)voidsetMatrix(const SbMatrix &mat)voidrecenter(const SbVec3f &newCenter)N¹ŽIÎI/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|€IVÁIn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚ÎIVÁĬI㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÎI®ÁI/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØVÁIÄI 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH®ÁI›ÄI@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÄIéÄI/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ›ÄI ÆIY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4éÄITÆI& €€‚A€‚ÿDESCRIPTIONå¬ ÆI9ÇI9 @€Y€”‘€‚A€€€€€€‚ÿSoJackManip is derived from SoTransform (by way of SoTransformManip). When its fields change, nodes following it in the scene graph rotate, scale, and/or translate.ÀTÆI;ÈIB R€€”‘€‚A€€€€€€€€€‚ÿAs a subclass of SoTransformManip, this manip also has a 3D interface to edit some of its fields. In this case, the interface edits the scaleFactor, rotation and translation fields. Ô9ÇIEÉI6 :€©€”‘€‚A€€€€€‚ÿA manipulator differs from a dragger. When you move a dragger, no other nodes are affected. When you move an SoTransformManip, other nodes move along with it. (See the reference page for SoTransformManip).e#;ÈIªÊIB R€G€”‘€‚A€€€€€€€€€‚ÿThe interface for an SoJackManip is exactly the same as that of the SoJackDragger. To find out more about the interface, see the reference page for SoJackDragger. To find out how the manipulator uses a dragger to provide its interface, see the reference page for SoTransformManip.õ¿EÉIŸËI6 :€€”‘€‚A€€€€€‚ÿOn screen, this manip will surround the objects influenced by its motion. This is because it turns on the surroundScale part of the dragger (See the reference page for SoSurroundScale)0 ªÊIÏËI& €€‚A€‚ÿMETHODS=ŸËI ÌI, (€"€T”A‚S~‚A€ƒ‚ÿSoJackManip()8ÏËIDÌI) "€€”‘€‚A€‚ÿConstructor.U# ÌI™ÌI2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*DÌIìÌI) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<™ÌI(ÍI& €,€‚A€‚ÿFILE FORMAT/DEFAULT8ìÌI`ÍI* $€€P„7|‚€‚ÿJackManip {—b(ÍI÷ÍI5 :€Ä€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0 0rotation0 0 1 0scaleFactor1 1 1scaleOrientation0 0 1 0center0 0 0}1 `ÍI(ÎI& €€‚€‚ÿSEE ALSOPÀ÷ÍIxÏI ”‘€‚ãõ+cÛ€‰€ãöñõ€‰€ã±—o›€‰€㇫¬l€‰€ã›Ø1Ù€‰€ãr“žN€‰€ãøÀ‰€ã¼ýÓ€‰€ã%n’ €‰‚ÿSoCenterballManip, SoHandleBoxManip, SoJackDragger, SoTabBoxManip, SoTrackballManip, SoTransformBoxManip, SoTransformerManip, SoTransform, SoTransformManip@(ÎI¸ÏI1 P“•æ¸ÏI JÙKJSoKeyboardEvent7xÏI J% €$€ˆˆ€‚ÿSoKeyboardEvent¸ÏI JxÏI*¸ÏI6J# €€€‚ÿNAME`: J–J& €t€”‘€€‚ÿSoKeyboardEvent - keyboard key press and release events36JÉJ# € €€‚ÿINHERITS FROMv5–J?JA R€j€”‘€ã2™|—€‰€ãüb€‰€€€‚ÿSoEvent > SoButtonEvent > SoKeyboardEvent2 ÉJqJ& €€€€ ‚ÿSYNOPSIS*?J›J) €€”‘€€‚‚‚ÿ#include #define SO_KEY_PRESS_EVENT(EVENT,KEY) (SoKeyboardEvent::isKeyPressEvent(EVENT,SoKeyboardEvent::KEY))#define SO_KEY_RELEASE_EVENT(EVENT,KEY) (SoKeyboardEvent::isKeyReleaseEvent(EVENT,SoKeyboardEvent::KEY))q Æ qJ J« $€T”A‚S~„A#€ƒ€ƒ€ƒ‚ÿenum Key{SoKeyboardEvent::ANYSoKeyboardEvent::LEFT_SHIFTSoKeyboardEvent::RIGHT_SHIFTSoKeyboardEvent::LEFT_CONTROLSoKeyboardEvent::RIGHT_CONTROLSoKeyboardEvent::LEFT_ALTSoKeyboardEvent::RIGHT_ALTSoKeyboardEvent::NUMBER_0SoKeyboardEvent::NUMBER_1SoKeyboardEvent::NUMBER_2SoKeyboardEvent::NUMBER_3SoKeyboardEvent::NUMBER_4SoKeyboardEvent::NUMBER_5SoKeyboardEvent::NUMBER_6SoKeyboardEvent::NUMBER_7SoKeyboardEvent::NUMBER_8SoKeyboardEvent::NUMBER_9SoKeyboardEvent::ASoKeyboardEvent::BSoKeyboardEvent::CSoKeyboardEvent::DSoKeyboardEvent::ESoKeyboardEvent::FSoKeyboardEvent::GSoKeyboardEvent::HSoKeyboardEvent::ISoKeyboardEvent::JSoKeyboardEvent::KSoKeyboardEvent::LSoKeyboardEvent::MSoKeyboardEvent::NSoKeyboardEvent::OSoKeyboardEvent::PSoKeyboardEvent::QSoKeyboardEvent::RSoKeyboardEvent::SSoKeyboardEvent::TSoKeyboardEvent::USoKeyboardEvent::VSoKeyboardEvent::WSoKeyboardEvent::XSoKeyboardEvent::YSoKeyboardEvent::ZSoKeyboardEvent::HOMESoKeyboardEvent::LEFT_ARROWSoKeyboardEvent::UP_ARROWSoKeyboardEvent::RIGHT_ARROWSoKeyboardEvent::DOWN_ARROWSoKeyboardEvent::PAGE_UPSoKeyboardEvent::PAGE_DOWNSoKeyboardEvent::PRIORSoKeyboardEvent::NEXTSoKeyboardEvent::ENDSoKeyboardEvent::PAD_ENTERSoKeyboardEvent::PAD_F1SoKeyboardEvent::PAD_F2SoKeyboardEvent::PAD_F3SoKeyboardEvent::PAD_F4SoKeyboardEvent::PAD_0SoKeyboardEvent::PAD_1SoKeyboardEvent::PAD_2SoKeyboardEvent::PAD_3SoKeyboardEvent::PAD_4SoKeyboardEvent::PAD_5SoKeyboardEvent::PAD_6SoKeyboardEvent::PAD_7SoKeyboardEvent::PAD_8SoKeyboardEvent::PAD_9SoKeyboardEvent::PAD_ADDSoKeyboardEvent::PAD_SUBTRACTSoKeyboardEvent::PAD_MULTIPLYSoKeyboardEvent::PAD_DIVIDESoKeyboardEvent::PAD_SPACESoKeyboardEvent::PAD_TABSoKeyboardEvent::PAD_INSERTSoKeyboardEvent::PAD_DELETESoKeyboardEvent::PAD_PERIODSoKeyboardEvent::F1SoKeyboardEvent::F2SoKeyboardEvent::F3SoKeyboardEvent::F4SoKeyboardEvent::F5SoKeyboardEvent::F6SoKeyboardEvent::F7SoKeyboardEvent::F8SoKeyboardEvent::F9SoKeyboardEvent::F10SoKeyboardEvent::F11SoKeyboardEvent::F12SoKeyboardEvent::BACKSPACESoKeyboardEvent::TABSoKeyboardEvent::RETURNSoKeyboardEvent::ENTERSoKeyboardEvent::PAUSESoKeyboardEvent::SCROLL_LOCKSoKeyboardEvent::ESCAPESoKeyboardEvent::KEY_DELETE[Win32 only]SoKeyboardEvent::DELETE[Any platform other than Win32]SoKeyboardEvent::PRINTSoKeyboardEvent::INSERTSoKeyboardEvent::NUM_LOCKSoKeyboardEvent::CAPS_LOCKSoKeyboardEvent::SHIFT_LOCKSoKeyboardEvent::SPACESoKeyboardEvent::APOSTROPHESoKeyboardEvent::COMMASoKeyboardEvent::MINUSSoKeyboardEvent::PERIODSoKeyboardEvent::SLASHSoKeyboardEvent::SEMICOLONSoKeyboardEvent::EQUALSoKeyboardEvent::BRACKETLEFTSoKeyboardEvent::BACKSLASHSoKeyboardEvent::BRACKETRIGHTSoKeyboardEvent::GRAVE}Q&›J]J+ &€L€”‘€„A#€‚ÿMethods from class SoKeyboardEvent:©P J@JY €€¡€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒ‚ƒ‚㑶p6‰ƒã2™|—‰‚㑶p6‰ƒã2™|—‰‚ƒ‚ÿSoKeyboardEvent()static SoTypegetClassTypeId()voidsetKey(SoKeyboardEvent::Key whichKey)SoKeyboardEvent::KeygetKey() conststatic SbBoolisKeyPressEvent(const SoEvent *e,SoKeyboardEvent::Key whichKey)static SbBoolisKeyReleaseEvent(const SoEvent *e,SoKeyboardEvent::Key whichKey)chargetPrintableCharacter() c]J@JxÏIonstU&]Jg@J/ .€L€”‘€‚A€ãüb‰‚ÿMethods from class SoButtonEvent:ŒR@Jó@J: D€¤€T”A‚S~‚A€ƒãüb‰‚ãüb‰ƒ‚ÿvoidsetState(SoButtonEvent::State s)SoButtonEvent::StategetState() constO g@JBAJ/ .€@€”‘€‚A€ã2™|—‰‚ÿMethods from class SoEvent:/¢ó@JqCJ è€E€T”A‚S~‚A€ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒã4a†6‰‚ã4a†6‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚㊃õ(‰ƒãñf‘¸‰‚ã}ƒõ(‰ƒãñf‘¸‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvoidsetTime(SbTime t)SbTimegetTime() constvoidsetPosition(const SbVec2s &p)const SbVec2s &getPosition() constconst SbVec2s &getPosition(const SbViewportRegion &vpRgn) constconst SbVec2f &getNormalizedPosition(const SbViewportRegion &vpRgn) constvoidsetShiftDown(SbBool isDown)voidsetCtrlDown(SbBool isDown)ÄzBAJ5DJJ d€ô€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetAltDown(SbBool isDown)SbBoolwasShiftDown() constSbBoolwasCtrlDown() constSbBoolwasAltDown() const4qCJiDJ& €€‚A€‚ÿDESCRIPTION’f5DJûDJ, (€Ì€”‘€‚A€€‚ÿSoKeyboardEvent represents keyboard key press and release events in the Open Inventor event model.0 iDJ+EJ& €€‚A€‚ÿMETHODSAûDJlEJ, (€*€T”A‚S~‚A€ƒ‚ÿSoKeyboardEvent()8+EJ¤EJ) "€€”‘€‚A€‚ÿConstructor.U#lEJùEJ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()e6¤EJ^FJ/ .€l€”‘€‚A€€€‚ÿReturn the type id for the SoKeyboardEvent class.QùEJÝFJ. ,€¢€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetKey(SoKeyboardEvent::Key whichKey)SoKeyboardEvent::KeygetKey() constV-^FJ3GJ) "€Z€”‘€‚A€‚ÿSet and get which key generated the event.óªÝFJ&HJI `€U€T”A‚S~‚A€㑶p6‰ƒã2™|—‰‚㑶p6‰ƒã2™|—‰‚ÿstatic SbBoolisKeyPressEvent(const SoEvent *e,SoKeyboardEvent::Key whichKey)static SbBoolisKeyReleaseEvent(const SoEvent *e,SoKeyboardEvent::Key whichKey)Ô3GJ*IJ0 .€©€”‘€‚A€€€‚ÿReturns whether the passed event is a keyboard press or release event of the passed key. When SoKeyboardEvent::ANY is passed, this returns TRUE if the event represents a keyboard press or release of any key.Q%&HJ{IJ, (€J€T”A‚S~‚A€ƒ‚ÿchargetPrintableCharacter() const¥|*IJ JJ) "€ø€”‘€‚A€‚ÿConvenience routine that returns the character representing the key, if it's printable. If not, this returns NULL ('\0').1 {IJQJJ& €€‚A€‚ÿSEE ALSOˆà JJÙKJ¨ Á€”‘€‚Aã2™|—€‰€ãüb€‰€ã-OÁm€‰€ãAùé½€‰€ãÛá–€‰€ã*€‰€ãàꀉ€ã?–/ €‰€ã(ç –€‰€ãΖc`€‰€ãÊÌø!€‰‚ÿSoEvent, SoButtonEvent, SoLocation2Event, SoMotion3Event, SoMouseButtonEvent, SoSpaceballButtonEvent, SoHandleEventAction, SoEventCallback, SoSelection, SoInteraction, SoWinDevice6QJJLJ1^å€_ ³çLJ SoFieldContainer > SoNode > SoGroup > SoLOD2 ýLJÐMJ& €€€€ ‚ÿSYNOPSISd=žMJ4NJ' €z€”‘€€‚‚ÿ#include Fields from class SoLOD:a'ÐMJ•NJ: D€N€T”A‚S~‚Aã'0]€‰ƒ‚ã”5‰ƒ‚ÿSoMFFloatrangeSoSFVec3fcenterE4NJÚNJ) "€8€”‘€‚A€‚ÿMethods from class SoLOD:`,•NJ:OJ4 8€X€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoLOD()static SoTypegetClassTypeId()O ÚNJ‰OJ/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒ:OJŠJr ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoid‰OJŠJÙKJaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)N‰OJØJ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ŠJTƒJn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ØJ¬ƒJ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØTƒJ†J 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¬ƒJ™†J@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N†Jç†J/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ™†JˆJY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ç†JRˆJ& €€‚A€‚ÿDESCRIPTION˜ˆJŠJ* "€1€”‘€‚A€‚ÿThis group node is used to allow applications to switch between various representations of objects automatically. The children of this node typically represent the same object or objects at varying levels of detail, from highest detail to lowest. The distance from the world-space eye point to the transformed center of the LOD is computed, and one child is drawn, based on the values in the ranges field.ܲRˆJðŠJ* "€e€”‘€‚A€‚ÿMore precisely, if the distance from the world-space eyepoint to the transformed center is D and the ranges array contains LAST_RANGE+1 values (numbered 0...LAST_RANGE), then:R*ŠJB‹J( €T€Ù€‚H€ƒ‚ÿ if D < ranges[0]: Child 0 is drawn«ðŠJí‹J, (€þ€Ù€‚©€ƒ‚ƒ‚‚ÿ else if ranges[i-1] < D < ranges[i]: Child i is drawn else if D > ranges[LAST_RANGE]: Child LAST_RANGE+1 is drawnúÐB‹JçŒJ* "€¡€”‘€‚©€‚ÿThus, N ranges and N+1 children should be specified. If you specify too few children, the last child will be used for the extra ranges. If you specify too few ranges, the extra children will never be used.v@í‹J]ŽJ6 :€€”‘€‚©€€€€€‚ÿIt is often useful to define the lowest detail child to be an SoInfo node. This causes the object to completely disappear if it is far enough away from the eyepoint. Defining the highest detail child to be an SoInfo node can also be useful if you want the object to disappear if it gets too close to the eyepoint./ çŒJŒŽJ& €€‚©€‚ÿFIELDSF]ŽJÒŽJ2 4€(€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatrange_6ŒŽJ1J) "€l€”‘€‚A€‚ÿWorld-space distances to use as switching criteria.GÒŽJxJ2 4€*€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fcenterM$1JÅJ) "€H€”‘€‚A€‚ÿObject-space center of the model.0 xJ ÀJ& €€‚A€‚ÿMETHODSÅJ ÀJÙKJ7 ÅJCÀJ, (€€T”A‚S~‚A€ƒ‚ÿSoLOD()pG ÀJ³ÀJ) "€Ž€”‘€‚A€‚ÿCreates a distance-based level-of-detail node with default settings.U#CÀJÁJ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*³ÀJ[ÁJ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ÁJ“ÁJ& €$€‚A€‚ÿACTION BEHAVIOR{=[ÁJÂJ> L€z€”‘€‚Aã©öø(€‰ãɓ℉ã³DfL‰€‚ÿSoGLRenderAction, SoRayPickAction, SoCallbackActionqE“ÁJÂJ, (€Š€”‘€‚A€€‚ÿOnly the child with the appropriate level of detail is traversed.6 ÂJµÂJ, (€€”‘€‚A€€‚ÿothersW%ÂJ ÃJ2 4€J€”‘€‚A€€€€‚ÿAll implemented as for SoGroup.<µÂJHÃJ& €,€‚A€‚ÿFILE FORMAT/DEFAULT2 ÃJzÃJ* $€€P„7|‚€‚ÿLOD {LHÃJÆÃJ/ .€:€P„|‚€ƒ‚ƒ‚‚‚ÿcenter0 0 0range[ ]}1 zÃJ÷ÃJ& €€‚€‚ÿSEE ALSOUÆÃJLÄJ; F€4€”‘€‚ã0MÓ쀉€ã«]à—€‰‚ÿSoSwitch, SoGroup8÷ÃJ„ÄJ1X>‰“ó–è„ÄJ³ÄJæKSoLabel/ LÄJ³ÄJ% €€ˆˆ€‚ÿSoLabel*„ÄJÝÄJ# €€€‚ÿNAMET.³ÄJ1ÅJ& €\€”‘€€‚ÿSoLabel - node containing label text string3ÝÄJdÅJ# € €€‚ÿINHERITS FROM‰<1ÅJíÅJM j€x€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoLabel2 dÅJÆJ& €€€€ ‚ÿSYNOPSIShAíÅJ‡ÆJ' €‚€”‘€€‚‚ÿ#include Fields from class SoLabel:EÆJÌÆJ2 4€&€T”A‚S~‚Aã¾b选ƒ‚ÿSoSFNamelabelG‡ÆJÇJ) "€<€”‘€‚A€‚ÿMethods from class SoLabel:b.ÌÆJuÇJ4 8€\€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoLabel()static SoTypegetClassTypeId()NÇJÃÇJ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|uÇJ?ÉJn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÃÇJ—ÉJ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ?ÉJüËJ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH—ÉJ„ÌJ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NüËJÒÌJ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ„ÌJ ÎJY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ÒÌJ=ÎJ& €€‚A€‚ÿDESCRIPTION"ø ÎJ_ÏJ* "€ñ€”‘€‚A€‚ÿThis class defines a label node in the scene graph. This node has no effect during traversal. It is used to store text labels in the scene graph, typically for application-specific identification of subgraphs when node naming is not appropriate./ =ÎJŽÏJ& €€‚A€‚ÿFIELDSE_ÏJÓÏJ2 4€&€T”A‚S~‚Aã¾b选ƒ‚ÿSoSFNamelabel`1ŽÏJ?K/ .€b€”‘€‚A€€€ÓÏJ?KLÄJ‚ÿDefines the label string value as an SbName.0 ÓÏJoK& €€‚A€‚ÿMETHODS9 ?K¨K, (€€T”A‚S~‚A€ƒ‚ÿSoLabel()W.oKÿK) "€\€”‘€‚A€‚ÿCreates a label node with default settings.U#¨KTK2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ÿK§K) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<TKãK& €,€‚A€‚ÿFILE FORMAT/DEFAULT4 §KK* $€€P„7|‚€‚ÿLabel {LãKcK- *€>€P„|‚€ƒ‚‚‚ÿlabel""}1 K”K& €€‚€‚ÿSEE ALSORcKæK; F€.€”‘€‚ãúß~6€‰€ãÚV9€‰‚ÿSbName, SoInfo@”K&K1h•4‡–é&K]K(LKSoLevelOfDetail7æK]K% €$€ˆˆ€‚ÿSoLevelOfDetail*&K‡K# €€€‚ÿNAME_9]KæK& €r€”‘€€‚ÿSoLevelOfDetail - level-of-detail switching group node3‡KK# € €€‚ÿINHERITS FROM«RæKÄKY ‚€¤€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoLevelOfDetail2 KöK& €€€€ ‚ÿSYNOPSISxQÄKnK' €¢€”‘€€‚‚ÿ#include Fields from class SoLevelOfDetail:KöK¹K2 4€2€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatscreenAreaO&nKK) "€L€”‘€‚A€‚ÿMethods from class SoLevelOfDetail:j6¹KrK4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoLevelOfDetail()static SoTypegetClassTypeId()O KÁK/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒrK¶Kr ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)NÁK K/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|¶K€ Kn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X) KØ K/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ€ K= K 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHØ KÅ K@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N= KK/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÅ KJKY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4K~K& €€‚A€‚ÿDESCRIPTION5 JK¿@K* "€€”‘€‚A€‚ÿThe children of this node typically represent the same object or objects at varying lev~K¿@KæKels of detail, from highest detail to lowest. The size of the objects when projected into the viewport is used to determine which version to use (i.e., which child to traverse).i3~K(CK6 :€g€”‘€‚A€€€€€‚ÿThe size is computed as the area of the screen rectangle enclosing the projection of the 3D bounding box that encloses all of the children. When rendering, this size is compared to the values in the screenArea field. If the size is greater than the first value, child 0 is traversed. If it is smaller than the first, but greater than the second, child 1 is traversed, and so on. If there are fewer children than are required by this rule, the last child is traversed. The screenArea field contains just 0 by default, so the first child is always traversed.µ‹¿@KÝDK* "€€”‘€‚A€‚ÿThe size calculation takes the current complexity into account. If the complexity is 0 or is of type BOUNDING_BOX, the last child is always traversed. If the complexity is less than .5, the computed size is scaled down appropriately to use (possibly) a less detailed representation. If the complexity is greater than .5, the size is scaled up. At complexity 1, the first child is always used.Ä(CKÝEK< F€‰€”‘€‚A€€€€€€€‚ÿNote that the SoLOD node is similar to SoLevelOfDetail, except the switching between levels in the SoLOD node is based on distance from the camera, which is faster than using screen area./ ÝDK FK& €€‚A€‚ÿFIELDSKÝEKWFK2 4€2€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatscreenAreaG FKžFK) "€<€”‘€‚A€‚ÿAreas to use for comparison0 WFKÎFK& €€‚A€‚ÿMETHODSAžFKGK, (€*€T”A‚S~‚A€ƒ‚ÿSoLevelOfDetail()a8ÎFKpGK) "€p€”‘€‚A€‚ÿCreates a level-of-detail node with default settings.U#GKÅGK2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*pGKHK) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ÅGKPHK& €$€‚A€‚ÿACTION BEHAVIOR{=HKËHK> L€z€”‘€‚Aã©öø(€‰ãɓ℉ã³DfL‰€‚ÿSoGLRenderAction, SoRayPickAction, SoCallbackActionqEPHK SoFieldContainer > SoNode > SoGroup > SoLOD > SoLevelOfSimplification2 ©MK¦NK& €€€€ ‚ÿSYNOPSISˆatNK.OK' €Â€”‘€€‚‚ÿ#include Fields from class SoLevelOfSimplification:m3¦NK›OK: D€f€T”A‚S~‚Aã'0]€‰ƒ‚ãw?2‰ƒ‚ÿSoMFFloatpercentagesSoSFInt32numTrianglesL.OK €K/ .€:€”‘€‚A€ã…AH‰‚ÿFields from class SoLOD:›OK €K(LKa'›OKm€K: D€N€T”A‚S~‚Aã'0]€‰ƒ‚ã”5‰ƒ‚ÿSoMFFloatrangeSoSFVec3fcenterW. €KÄ€K) "€\€”‘€‚A€‚ÿMethods from class SoLevelOfSimplification:r>m€K6K4 8€|€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoLevelOfSimplification()static SoTypegetClassTypeId()O Ä€K…K/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:¤6K£ƒKz €I€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ãB-9‰ƒ‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)static SoTypegetClassTypeId()N…KñƒK/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|£ƒKm…Kn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ñƒKÅ…K/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØm…K*ˆK 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÅ…K²ˆK@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N*ˆK‰K/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ²ˆK7ŠKY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4‰KkŠK& €€‚A€‚ÿDESCRIPTION×7ŠKrŒK0 .€¯€”‘€‚A€€€‚ÿThis group node is used to group the results of simplifying a shape, such that every child represents same the model but with a different number of primitives. Since it is derived from SoLOD, it can behave as a distance-based level-of-detail node; however, it also responds to the decimation percentage element. It records what percentage decimation each child is, and then chooses the appropriate child based on the DecimationPercentage and DecimationType elements.}MkŠKïK0 .€›€”‘€‚A€€€‚ÿYou should specify N percentages for N+1 children. If the DecimationType is HIGHEST or LOWEST, then the LevelOfSimplification node will automatically choose the first or last child, respectively. If the DecimationType is PERCENTAGE, then the node will choose child "i" based on the decimation percentage element value such that:d<rŒKSŽK( €x€Ù€‚A€‚ÿpercentages[i-1] <= DecimationPercentage < percentages[i]+ïK~ŽK( €€Ù€‚A€‚ÿÖSŽK„K0 .€­€”‘€‚A€€€‚ÿIf the DecimationType is AUTOMATIC, then the then the child is chosen based on the range value in the usual SoLOD manner, but no child greater than the value of the DecimationPercentage element will be chosen.î²~ŽK~ÁK< F€e€”‘€‚A€€€€€€€‚ÿThis node also has a field for recording how many triangles the„K~ÁK(LK full detail child contains. This allows this node to answer a GetPrimitiveCountAction without traversing its children. This is a benefit when some children contain WWWInlines, a common occurrence. If the children contain some non-triangle primitives, then the field should be -1 which will force the node to traverse its children during GetPrimitiveCountAction./ „K­ÁK& €€‚A€‚ÿFIELDSK~ÁKøÁK2 4€2€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatpercentageÅ›­ÁK½ÂK* "€7€”‘€‚A€‚ÿPercentage decimation for each child. Should be numbers between 0.0 and 1.0, with 1.0 representing full detail and 0.0 representing bounding box detail.MøÁK ÃK2 4€6€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32numTriangles£z½ÂK­ÃK) "€ô€”‘€‚A€‚ÿNumber of triangles in highest (1.0) case. Can be -1 if unknown or if children contain primitives other than triangles.0 ÃKÝÃK& €€‚A€‚ÿMETHODSW.­ÃK4ÄK) "€\€”‘€‚A€‚ÿMethods from class SoLevelOfSimplification:IÝÃK}ÄK, (€:€T”A‚S~‚A€ƒ‚ÿSoLevelOfSimplification()g>4ÄKäÄK) "€|€”‘€‚A€‚ÿCreates level-of-simplification node with default settings.U#}ÄK9ÅK2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()R)äÄK‹ÅK) "€R€”‘€‚A€‚ÿReturn type identifier for this class.89ÅKÃÅK& €$€‚A€‚ÿACTION BEHAVIORy<‹ÅK<ÆK= J€x€T”A‚S~‚Aã©öø(€‰ãɓ℉ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoCallbackActionmDÃÅK©ÆK) "€ˆ€”‘€‚A€‚ÿOnly the child with the appropriate level of detail is traversed.O<ÆKøÆK1 2€<€T”A‚S~‚AãDRô€‰‚ÿSoGetPrimitiveCountAction•Y©ÆKÈK< F€³€”‘€‚A€€€€€€€‚ÿA child is chosen in the same way as in GLRender. If the numTriangles field is greater than 0, the percentage value for this child is multiplied by the numTriangles value and this value is added to the PrimitiveCount without traversing the child. If numTriangles is less than or equal to 0, then the child is traversed to get the count.;øÆKÈÈK+ &€ €T”A‚S~‚A€‚ÿOther actionsNÈKÉK/ .€>€”‘€‚A€€€‚ÿImplemented as for SoGroup@ÈÈKVÉK) "€.€‚A€€ ‚ÿFILE FORMAT/DEFAULTDÉKšÉK* $€4€P„7|‚€‚ÿLevelOfSimplification {S$VÉKíÉK/ .€H€P„|‚€ƒ‚ƒ‚‚‚ÿpercentages[]numTriangles-1}1 šÉKÊK& €€‚€‚ÿSEE ALSOÅfíÉKãÊK_ Ž€Ì€”‘€‚ãDRô€‰€ã…AH€‰€ãjhšö€‰€㼿ai€‰€ãùÉ€‰‚ÿSoGetPrimitiveCountAction, SoLOD, SoOctreeOrdering, SoRenderList, SoValueOrdering8ÊKËK1ª4‡–o˜ëËKJËKµ LSoLight/ ãÊKJËK% €€ˆˆ€‚ÿSoLight*ËKtËK# €€€‚ÿNAMEa;JËKÕËK& €v€”‘€€‚ÿSoLight - abstract base class for all light source nodes3tËKÌK# € €€‚ÿINHERITS FROM‰<ÕËK‘ÌKM j€x€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoLight2 ÌKÃÌK& €€€€ ‚ÿSYNOPSIShA‘ÌK+ÍK' €‚€”‘€€‚‚ÿ#include Fields from class SoLight:z8ÃÌK¥ÍKB T€p€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ãð@I1‰ƒ‚ÿSoSFBoolonSoSFFloatintensitySoSFColorcolorG+ÍKìÍK) "€<€”‘€‚A€‚ÿMethods from class SoLight:U#¥ÍKAÎK2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()NìÍKÎK/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|AÎKLn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeLisÎKLãÊKt &list)X)ÎKoL/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØLÔL 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHoL\L@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÔLªL/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ\LáLY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ªLL& €€‚A€‚ÿDESCRIPTION€SáL•L- (€§€”‘€‚A€€‚ÿSoLight is the abstract base class for all light nodes. A light node defines an illumination source that may affect subsequent shapes in the scene graph, depending on the current lighting style. Light sources are affected by the current transformation. A light node under a separator does not affect any objects outside that separator.‰ZLL/ .€´€”‘€‚A€€€‚ÿYou can also use a node kit to create a light; see the reference page for SoLightKit./ •LML& €€‚A€‚ÿFIELDSBLL2 4€ €T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolon–mML%L) "€Ú€”‘€‚A€‚ÿDetermines whether the source is active or inactive. When inactive, the source does not illuminate at all.JLoL2 4€0€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatintensity w%L L) "€î€”‘€‚A€‚ÿIllumination intensity of light source. Valid values range from 0.0 (no illumination) to 1.0 (maximum illumination).FoLU L2 4€(€T”A‚S~‚Aãð@I1€‰ƒ‚ÿSoSFColorcolorL# L¡ L) "€F€”‘€‚A€‚ÿLight source illumination color.0 U LÑ L& €€‚A€‚ÿMETHODSU#¡ L& L2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Ñ Ly L) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8& L± L& €$€‚A€‚ÿACTION BEHAVIORHy Lù L2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionÆ™± L¿ L- (€3€”‘€‚A€€‚ÿActivates this light (if so specified) during traversal. All shape nodes that come after this light in the scene graph are illuminated by this light.<ù Lû L& €,€‚A€‚ÿFILE FORMAT/DEFAULT“j¿ LŽ L) "€Ô€”‘€‚A€‚ÿThis is an abstract class. See the reference page of a derived class for the format and default values.1 û L¿ L& €€‚A€‚ÿSEE ALSOöŽ Lµ Lw ¾€þ€”‘€‚AãÀú€‰€ãN„h€‰€ã€ÀÏ€‰€ãg!à‚€‰€ãOjnÄ€‰€㦊3ý€‰€ã¨òƯ€‰‚ÿSoDirectionalLight, SoEnvironment, SoLightKit, SoLightModel, SoMaterial, SoPointLight, SoSpotLight; ¿ Lð L1&/…—Ä™ìð L"LóÃLSoLightKit2 µ L"L% €€ˆˆ€‚ÿSoLightKit*ð LLL# €€€‚ÿNAMEI#"L•L& €F€”‘€€‚ÿSoLightKit - light nodekit class3LLÈL# € €€‚ÿINHERITS FROM¨O•LpLY ‚€ž€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoLightKit2 ÈL¢L& €€€€ ‚ÿSYNOPSISpIpL@L' €’€”‘€€‚‚ÿ#include Parts from c¢L@Lµ Llass SoLightKit:€>¢Lž@LB T€|€T”A‚S~‚A€ã¼ýÓ‰ƒ‚ã Ú˜‰ƒ‚ã’n%9‰ƒ‚ÿ(SoTransform)transform(SoLight)light(SoNode)iconO @Lí@L/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%ž@LDAL2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListJ!í@LŽAL) "€B€”‘€‚A€‚ÿMethods from class SoLightKit:®rDAL€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ŒELVGLn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÚEL®GL/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®VGLáIL… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH®GLiJL@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NáIL·JL/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞiJLîKLY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!·JL>LL/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)îKL“LL, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+>LLêLL, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4“LLML& €€‚A€‚ÿDESCRIPTION&äêLLDNLB R€É€”‘€‚A€€€€€€€€€‚ÿThis nodekit class is used to create light nodes that have a local transformation and a geometry icon to represent the light source. SoLightKit adds three public parts to the basic nodekit: transform, light, and icon.­uMLñNL8 @€ê€”‘€‚A€€€€€€‚ÿSoLightKit creates an SoDirectionalLight as the light part by default - all other parts are NULL at creation.˜iDNL‰OL/ .€Ò€”‘€‚A€€€‚ÿYou can move the light relative to the rest of the scene by creating and editing the transform part.£tñNL8€L/ .€è€”‘€‚A€€€‚ÿYou can add a geometrical representation for the light by setting the ‰OL8€Lµ Licon part to be any scene graph you like.«‰OLL‚Li  €W€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€‚ÿSoLightKit also adds two private parts. An SoTransformSeparator contains the effect of transform to move only the light and icon, while allowing the light to illuminate the rest of the scene. The second private part is an SoSeparator, which keeps property nodes within the icon geometry from affecting the rest of the scene. It also serves to cache the icon even when the light or transform is changing.ªr8€Lö‚L8 @€ä€”‘€‚A€€€€€€‚ÿSoLightKit is derived from SoBaseKit and thus also includes a callbackList part for adding callback nodes..L‚L$ƒL& €€‚A€‚ÿPARTSNö‚LrƒL2 4€8€T”A‚S~‚A€ã¼ýÓ‰ƒ‚ÿ(SoTransform)transform$ƒLñ…Lf š€3€”‘€‚A€€€€€€€€€€€€€€€€€€€€€‚ÿThis part positions and orients the light and icon relative to the rest of the scene. Its effect is kept local to this nodekit by a private part of type SoTransformSeparator. The transform part is NULL by default. If you ask for transform using getPart(), an SoTransform will be returned. But you may set the part to be any subclass of SoTransform. For example, set the transform to be an SoDragPointManip and the light to be an SoPointLight. Then you can move the light by dragging the manipulator with the mouse.FrƒL7†L2 4€(€T”A‚S~‚A€ã Ú˜‰ƒ‚ÿ(SoLight)light#íñ…LZ‡L6 :€Û€”‘€‚A€€€€€‚ÿThe light node for this nodekit. This can be set to any node derived from SoLight. An SoDirectionalLight is created by default, and it is also the type of light returned when the you request that the nodekit build a light for you.D7†Lž‡L2 4€$€T”A‚S~‚A€ã’n%9‰ƒ‚ÿ(SoNode)iconðÀZ‡LŽˆL0 .€€”‘€‚A€€€‚ÿThis part is a user-supplied scene graph that represents the light source. It is NULL by default - an SoCube is created by the lightkit when a method requires it to build the part itself.0 ž‡L¾ˆL& €€‚A€‚ÿMETHODS<ŽˆLúˆL, (€ €T”A‚S~‚A€ƒ‚ÿSoLightKit()8¾ˆL2‰L) "€€”‘€‚A€‚ÿConstructor.uCúˆL§‰L2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() constq<2‰LŠL5 :€x€”‘€‚A€€€€€‚ÿReturns an SoNodekitCatalog for the class SoLightKit.U#§‰LmŠL2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ŠLÀŠL) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6mŠLöŠL& € €‚A€‚ÿCATALOG PARTS;ÀŠL1‹L- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜öŠLÉ‹L~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/1‹LˆŒL#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2É‹LJL#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes¹)ˆŒLŽL#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿtransformTransform--yes¾.JLÁŽL#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€&€ÿ€(€€€‚ÿ€P€€€‚ÿÿÿlightLightDirectionalLightno±!ŽLrL#ð€BÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€"€ÿ€$€€€‚ÿ€4€€€‚ÿÿÿiconNodeCubeyes,ÁŽLžL' € €€‚€‚ÿa6rL ÀL+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above TabležL ÀLµ L’1žLžÀLa#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8 ÀL7ÁLa#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback?žÀLvÁL' €0€€‚€‚ÿFILE FORMAT/DEFAULT7 7ÁL­ÁL* $€€P„7|‚€‚ÿLightKit {ƒMvÁL0ÂL6 <€š€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ‚‚‚ÿcallbackListNULLtransformNULLlightDirectionalLight {}iconNULL}1 ­ÁLaÂL& €€‚€‚ÿSEE ALSO’Þ0ÂLóÃL´ 6½€”‘€‚ãNw¶°€‰€€ãib‰€ãásÆú€‰€ã0d$€‰€ã•£&ô€‰€ã½á–€‰€ã}选€ãõˆ¨f€‰€ã’o>€ãOËr€‰€ãЃ'€‰€ã°çT€‰‚ÿSoAppearanceKit, SoBaseKit, SoCameraKit, SoNodeKit, SoNodeKitDetail, SoNodeKitListPart, SoNodeKitPath, SoNodekitCatalog, SoSceneKit, SoSeparatorKit, SoShapeKit, SoWrapperKit= aÂL0ÄL1Âo˜œí0ÄLdÄLêMSoLightModel4óÃLdÄL% €€ˆˆ€‚ÿSoLightModel*0ÄLŽÄL# €€€‚ÿNAMErLdÄLÅL& €˜€”‘€€‚ÿSoLightModel - node that defines the lighting model to use when rendering3ŽÄL3ÅL# € €€‚ÿINHERITS FROMŽAÅLÁÅLM j€‚€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoLightModel2 3ÅLóÅL& €€€€ ‚ÿSYNOPSISQ+ÁÅLDÆL& €V€”‘€€‚ÿ#include ƆóÅL ÇL@ N€ €T”A‚S~‚A€ƒ€ƒ€€ƒ€‚ÿenum Model{SoLightModel::BASE_COLORUse only the base (diffuse) object colorSoLightModel::PHONGUse Phong lighting model}K"DÆLUÇL) "€D€”‘€‚A€‚ÿFields from class SoLightModel:E ÇLšÇL2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnummodelL#UÇLæÇL) "€F€”‘€‚A€‚ÿMethods from class SoLightModel:g3šÇLMÈL4 8€f€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoLightModel()static SoTypegetClassTypeId()NæÇL›ÈL/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|MÈLÊLn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)›ÈLoÊL/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÊLÔÌL 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHoÊL\ÍL@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÔÌLªÍL/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ\ÍLáÎLY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ªÍLÏL& €€‚A€‚ÿDESCRIPTION3áÎLTM0 .€€”‘€‚A€€€‚ÿThis node defines the lighting model to be used when rendering subsequent shapes. The lighting model is specified in the model field. When the default model (Phong lighting) is used, lÏLTMóÃLight sources are required in a scene for objects to be easily visible./ ÏLƒM& €€‚A€‚ÿFIELDSETMÈM2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnummodelAƒM M) "€0€”‘€‚A€‚ÿLighting model to use0 ÈM9M& €€‚A€‚ÿMETHODS> MwM, (€$€T”A‚S~‚A€ƒ‚ÿSoLightModel()]49MÔM) "€h€”‘€‚A€‚ÿCreates a light model node with default settings.U#wM)M2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ÔM|M) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8)M´M& €$€‚A€‚ÿACTION BEHAVIORb*|MM8 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackAction]1´MsM, (€b€”‘€‚A€€‚ÿSets the current lighting model in the state.<M¯M& €,€‚A€‚ÿFILE FORMAT/DEFAULT9sMèM* $€€P„7|‚€‚ÿLightModel {>¯M&M- *€"€P„|‚€ƒ‚‚‚ÿmodelPHONG}1 èMWM& €€‚€‚ÿSEE ALSO“@&MêMS v€€€”‘€‚ãÚ{tm€‰€ãN„h€‰€ã Ú˜€‰€ãOjnÄ€‰‚ÿSoBaseColor, SoEnvironment, SoLight, SoMaterial= WM'M1G œ€šî'M[M]@MSoLineDetail4êM[M% €€ˆˆ€‚ÿSoLineDetail*'M…M# €€€‚ÿNAME[[MM& €¶€”‘€€‚ÿSoLineDetail - stores detail information about vertex-based shapes made of line segments3…M9M# € €€‚ÿINHERITS FROMTMM5 :€>€”‘€ãåŒÅe€‰€€€‚ÿSoDetail > SoLineDetail2 9M¿M& €€€€ ‚ÿSYNOPSISuNM4M' €œ€”‘€€‚‚ÿ#include Methods from class SoLineDetail:$Ù¿MXMK d€³€T”A‚S~‚A€ƒ‚ƒ‚ãqÒÍ@‰ƒ‚ãqÒÍ@‰ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoLineDetail()virtual~SoLineDetail()const SoPointDetail *getPoint0() constconst SoPointDetail *getPoint1() constint32_tgetLineIndex() constint32_tgetPartIndex() conststatic SoTypegetClassTypeId()P!4M¨M/ .€B€”‘€‚A€ãåŒÅe‰‚ÿMethods from class SoDetail:®fXMV MH `€Ì€T”A‚S~‚AãåŒÅe€‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿSoDetail *copy() constvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4¨MŠ M& €€‚A€‚ÿDESCRIPTIONçV M› M* "€Ï€”‘€‚A€‚ÿThis class contains detail information about a point on a line segment in a vertex-based shape made of line segments. The information includes the points at the ends of the segment, and the index of the segment within the shape.0 Š MË M& €€‚A€‚ÿMETHODSX*› M# M. ,€T€T”A‚S~‚A€ƒ‚ƒ‚ÿSoLineDetail()virtual~SoLineDetail()GË Mj M) "€<€”‘€‚A€‚ÿConstructor and destructor.V# Mú M: D€¬€T”A‚S~‚A€ãqÒÍ@‰ƒ‚ãqÒÍ@‰ƒ‚ÿconst SoPointDetail *getPoint0() constconst SoPointDetail *getPoint1() const±j M« M0 .€€”‘€‚A€€€‚ÿThese return information about the two points forming the end vertices of the line segment, represented as an SoPointDetail.Kú Mö M, (€>€T”A‚S~‚A€ƒ‚ÿint32_tgetLineIndex() const¤u« Mš M/ .€ê€”‘€‚A€€€‚ÿReturns the index of the line the segment is part of within a shape, such as the third line within an SoLineSet.Kö Må M, (€>€T”A‚S~‚A€ƒ‚ÿint32_tgetPartIndex() constöÆš MÛM0 .€€”‘€‚A€€€‚ÿReturns the index of the part containing the line segment within the shape. Usually, the part index is the same as the line segment index, such as the fifth segment overall within an SoLineSet.U#å M0M2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ÛMƒM) "€T€”‘€‚A€‚ÿReturns type identifier for this class.1 0M´M& €€‚A€‚ÿSEE ALSOJƒM]@MS v€”€”‘€‚AãåŒÅe€‰€ã¼B‘S€‰€ãkNÞ€‰€ã¹êZ´M]@MêMY€‰‚ÿSoDetail, SoPickedPoint, SoPrimitiveVertex, SoVertexShapeL´M©@M1j¿ši›ï©@Mì@M&‰MSoLineHighlightRenderActionC]@Mì@M% €<€ˆˆ€‚ÿSoLineHighlightRenderAction*©@MAM# €€€‚ÿNAME`:ì@MvAM& €t€”‘€€‚ÿSoLineHighlightRenderAction - selection highlight style3AM©AM# € €€‚ÿINHERITS FROM†EvAM/BMA R€Š€”‘€ãïK€‰€ã©öø(€‰€€€‚ÿSoAction > SoGLRenderAction > SoLineHighlightRenderAction2 ©AMaBM& €€€€ ‚ÿSYNOPSIS“l/BMôBM' €Ø€”‘€€‚‚ÿ#include Methods from class SoLineHighlightRenderAction:‘4aBM…DM] ˆ€i€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSoLineHighlightRenderAction()virtual voidapply(SoNode *node)voidsetVisible(SbBool b)SbBoolisVisible() constvoidsetColor(const SbColor &c)SbColor &getColor()voidsetLinePattern(unsigned short pattern)unsigned shortgetLinePattern()voidsetLineWidth(float width)floatgetLineWidth()X)ôBMÝDM/ .€R€”‘€‚A€ã©öø(‰‚ÿMethods from class SoGLRenderAction:²…DM÷FMh ž€e€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã}ƒõ(‰ã}ƒõ(‰‚ƒã}ƒõ(‰ã}ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ÿvoidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetUpdateArea(const SbVec2f &origin,const SbVec2f &size)voidgetUpdateArea(SbVec2f &origin,SbVec2f &size) constvoidsetAbortCallback(SoGLRenderAbortCB *func,void *userData)voidsetTransparencyType(TransparencyType type)TransparencyTypegetTransparencyType() constvoidsetSmoothing(SbBool smooth)fÝDM]HMN j€1€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolisSmoothing() constvoidsetNumPasses(int num)intgetNumPasses() constvoidsetPassUpdate(SbBool flag)SbBoolisPassUpdate() constvoidsetPassCallback(SoGLRenderPassCB *func,void *userData)voidsetCacheContext(uint32_t context)uint32_tgetCacheContext() constP!÷FM­HM/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:Óˆ]HM€IMK d€€T”A‚S~‚A€ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4­HM´IM& €€‚A€‚ÿDESCRIPTION$å€IMØKM? L€Ë€”‘€‚A€€€€€€€€‚ÿSoLineHighlightRenderAction is a render action which renders the specified scene graph, then renders each selected object again in wireframe. Selected objects are specified by the first SoSelection node in the scene to which this action is applied. If there is no renderable geometry in a selected object, no highlight is rendered for that object. A highlight render action can be passed to the setGLRenderAction() method of SoWinRenderArea to have an effect on scene graphs.0 ´IMLM& €€‚A€‚ÿMETHODSM!ØKMULM, (€B€T”A‚S~‚A€ƒ‚ÿSoLineHighlightRenderAction()8LMLM) "€€”‘€‚A€‚ÿConstructor.W%ULMäLM2 4€J€T”A‚S~‚A€ƒã’n%9‰‚ÿvirtual voidapply(SoNode *node)Ò¢LM¶MM0 .€E€”‘€‚A€€€‚ÿThis renders the passed scene graph, and also renders each selected object in wireframe, as specified by the first SoSelection node found in the scene graph.PäLMNM2 4€<€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidsetVisible(SbBool b)a1¶MMgOM0 .€c€”‘€‚A€€€‚ÿThis provides a convenient mechanism for turning highlights off or back on. When FALSE is passed, subsequent calls to apply() render the scene graph without rendering highlights. The application is responsible for forcing a redraw of the scene after changing this state. The default visibility is on.ONM¶OM2 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisVisible() const_6gOM!€M) "€l€”‘€‚A€‚ÿReturns whether highlights will ¶OM!€M]@Mbe rendered or not.u;¶OM–€M: D€v€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ÿvoidsetColor(const SbColor &c)SbColor &getColor()ب!€MnM0 .€Q€”‘€‚A€€€‚ÿSet and get the color of the highlight. Default is red (1,0,0). The application is responsible for forcing a redraw of the scene to see the effects of this change.|N–€MêM. ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetLinePattern(unsigned short pattern)unsigned shortgetLinePattern()]'nMGƒM6 :€O€”‘€‚A€€€€€‚ÿSet and get the line pattern of the highlight. Default is solid, 0xffff. The pattern of bits in the passed variable specifies the pattern of the line. See SoDrawStyle for more information. The application is responsible for forcing a redraw of the scene to see the effects of this change.d6êM«ƒM. ,€l€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetLineWidth(float width)floatgetLineWidth()Ó£GƒM~„M0 .€G€”‘€‚A€€€‚ÿSet and get the line width of the highlight. Default is 3. The application is responsible for forcing a redraw of the scene to see the effects of this change.0 «ƒM®„M& €€‚A€‚ÿEXAMPLE˜o~„MF…M) "€Þ€”‘€‚A€‚ÿHere is an example of how a line highlight can be specified for a particular selection node and render area.M%®„M“…M( €J€Ù€‚A€‚ÿ SoWinRenderArea *myRenderArea;H F…MÛ…M( €@€Ù€‚A€‚ÿ SoSelection *mySelection;+“…M†M( €€Ù€‚A€‚ÿQ)Û…MW†M( €R€Ù€‚A€‚ÿ // Set the highlight render actionO'†M¦†M( €N€Ù€‚A€‚ÿ myRenderArea->setGLRenderAction(V.W†Mü†M( €\€Ù€‚A€‚ÿ new SoLineHighlightRenderAction());+¦†M'‡M( €€Ù€‚A€‚ÿW/ü†M~‡M( €^€Ù€‚A€‚ÿ // Automatic redraw on selection changesb:'‡Mà‡M( €t€Ù€‚A€‚ÿ myRenderArea->redrawOnSelectionChange(mySelection);+~‡M ˆM( €€Ù€‚A€‚ÿ1 à‡M<ˆM& €€‚A€‚ÿSEE ALSOê ˆM&‰Mk ¦€þ€”‘€‚Aã6 €‰€ã©öø(€‰€ã(ç –€‰€ãÿ3È€‰€ãy‚2€‰€ãΖc`€‰‚ÿSoBoxHighlightRenderAction, SoGLRenderAction, SoSelection, SoWinRenderArea, SoDrawStyle, SoInteraction: <ˆM`‰M1×€šµœð`‰M‘‰M¶NSoLineSet1 &‰M‘‰M% €€ˆˆ€‚ÿSoLineSet*`‰M»‰M# €€€‚ÿNAMEH"‘‰MŠM& €D€”‘€€‚ÿSoLineSet - polyline shape node3»‰M6ŠM# € €€‚ÿINHERITS FROMéxŠM‹Mq ²€ð€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ã¹êZY€‰€ã5ÖfE€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape > SoNonIndexedShape > SoLineSet2 6ŠMQ‹M& €€€€ ‚ÿSYNOPSISlE‹M½‹M' €Š€”‘€€‚‚ÿ#include Fields from class SoLineSet:LQ‹M ŒM2 4€4€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32numVerticesX)½‹MaŒM/ .€R€”‘€‚A€ã5ÖfE‰‚ÿFields from class SoNonIndexedShape:K ŒM¬ŒM2 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32startIndexT%aŒMM/ .€J€”‘€‚A€ã¹êZY‰‚ÿFields from class SoVertexShape:N¬ŒMNM2 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyI M—M) "€@€”‘€‚A€‚ÿMethods from class SoLineSet:d0NMûM4 8€`€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoLineSet()static SoTypegetClassTypeId()N—MIŽM/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ûMÅMn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)IŽM)ÀM/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods froÅM)ÀM&‰Mm class SoFieldContainer:eØÅMŽÂM 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH)ÀMÃM@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NŽÂMdÃM/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÃM›ÄMY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4dÃMÏÄM& €€‚A€‚ÿDESCRIPTIONR›ÄM!ÆM< F€-€”‘€‚A€€€€€€€‚ÿThis node represents a 3D shape formed by constructing polylines from vertices located at the coordinates specified in the vertexProperty field (from SoVertexShape), or the current inherited coordinates. For optimal performance, the vertexProperty field is recommended.¥fÏÄMÆÇM? L€Í€”‘€‚A€€€€€€€€‚ÿSoLineSet uses the coordinates in order, starting with the first one. Each line has a number of vertices specified by a value in the numVertices field. For example, an SoLineSet with a numVertices of [3,4,2] would use coordinates 1, 2, and 3 for the first line, coordinates 4, 5, 6, and 7 for the second line, and coordinates 8 and 9 for the third.`!ÆMUÈM/ .€À€”‘€‚A€€€‚ÿThe number of values in the numVertices field indicates the number of polylines in the set.õËÆÇMJÉM* "€—€”‘€‚A€‚ÿThe coordinates of the line set are transformed by the current cumulative transformation. The lines are drawn with the current light model and drawing style (drawing style FILLED is treated as LINES).¤zUÈMîÊM* "€õ€”‘€‚A€‚ÿTreatment of the current material and normal binding is as follows: The PER_PART binding specifies a material or normal for each segment of the line. The PER_FACE binding specifies a material or normal for each polyline. The _INDEXED bindings are equivalent to their non-indexed counterparts. The default material binding is OVERALL. The default normal binding is PER_VERTEX.uLJÉMcËM) "€˜€”‘€‚A€‚ÿThe current complexity value has no effect on the rendering of line sets./ îÊM’ËM& €€‚A€‚ÿFIELDSLcËMÞËM2 4€4€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32numVerticesL#’ËM*ÌM) "€F€”‘€‚A€‚ÿNumber of vertices per polyline.0 ÞËMZÌM& €€‚A€‚ÿMETHODS;*ÌM•ÌM, (€€T”A‚S~‚A€ƒ‚ÿSoLineSet()Z1ZÌMïÌM) "€b€”‘€‚A€‚ÿCreates a line set node with default settings.U#•ÌMDÍM2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ïÌM—ÍM) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8DÍMÏÍM& €$€‚A€‚ÿACTION BEHAVIORH—ÍMÎM2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderAction‹_ÏÍM¢ÎM, (€¾€”‘€‚A€€‚ÿDraws lines based on the current coordinates, normals, materials, drawing style, and so on.GÎMéÎM2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction¹†¢ÎM¢ÏM3 4€ €”‘€‚A€€€€‚ÿPicks lines based on the current coordinates and transformation. Details about the intersection are returned in an SoLineDetail.NéÎM N2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxAction¢ÏM N&‰Mé¼¢ÏMõN- (€y€”‘€‚A€€‚ÿComputes the bounding box that encloses all vertices of the line set with the current transformation applied to them. Sets the center to the average of the coordinates of all vertices.H N=N2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackAction°ƒõNíN- (€€”‘€‚A€€‚ÿIf any line segment callbacks are registered with the action, they will be invoked for each successive segment in the line set.<=N)N& €,€‚A€‚ÿFILE FORMAT/DEFAULT6 íN_N* $€€P„7|‚€‚ÿLineSet {f5)NÅN1 2€j€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿvertexPropertyNULLstartIndex0numVertices-1}1 _NöN& €€‚€‚ÿSEE ALSOÀaÅN¶N_ Ž€Â€”‘€‚ã[Eà€‰€ãy‚2€‰€ãUIÕ¢€‰€ãIöHŽ€‰€ãmý¼€‰‚ÿSoCoordinate3, SoDrawStyle, SoIndexedLineSet, SoLineDetail, SoVertexProperty@öNöN1£Ä™¿šñöN-NENSoLinearProfile7¶N-N% €$€ˆˆ€‚ÿSoLinearProfile*öNWN# €€€‚ÿNAMEY3-N°N& €f€”‘€€‚ÿSoLinearProfile - piecewise-linear profile curve3WNãN# € €€‚ÿINHERITS FROM­T°NNY ‚€¨€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãaC}2€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoProfile > SoLinearProfile2 ãNÂN& €€€€ ‚ÿSYNOPSISzMN<N- *€š€”‘€€‚ãaC}2‰‚ÿ#include Fields from class SoProfile:a'ÂNN: D€N€T”A‚S~‚Aã-Ï]€‰ƒ‚ãØtW鉃‚ÿSoMFInt32indexSoSFEnumlinkageO&<NìN) "€L€”‘€‚A€‚ÿMethods from class SoLinearProfile:j6NVN4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoLinearProfile()static SoTypegetClassTypeId()NìN¤N/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|VN Nn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¤Nx N/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ NÝ N 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHx Ne N@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÝ N³ N/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þe Nê NY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4³ NN& €€‚A€‚ÿDESCRIPTIONNôê NxANZ ‚€é€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿThis node specifies a piecewise-linear curve that is used as a profile for either a trimming patch of a NURBS surface or for the bevel of SoText3. The index field indexes into the current profile coordinates (specified in an SoProfileCoordinate2 or SoProfileCoordinate3 node). If the last value of the index field is SO_LINEAR_PROFILE_USE_REST_OF_VERTICES (-1), all remaining coordNxAN¶Ninates in the current coordinates will be used, starting with the coordinate after the previous index (all coordinates will be used if SO_LINEAR_PROFILE_USE_REST_OF_VERTICES is the only value in the index field). For example, if index contains the values [2,0,-1] and there are 4 profile coordinates (0-3), it is as if the index field contains [2,0,1,2,3].0 N¨AN& €€‚A€‚ÿMETHODSAxANéAN, (€*€T”A‚S~‚A€ƒ‚ÿSoLinearProfile()`7¨ANIBN) "€n€”‘€‚A€‚ÿCreates a linear profile node with default settings.U#éANžBN2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*IBNñBN) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8žBN)CN& €$€‚A€‚ÿACTION BEHAVIOR{=ñBN¤CN> L€z€”‘€‚Aã©öø(€‰ãɓ℉ã³DfL‰€‚ÿSoGLRenderAction, SoRayPickAction, SoCallbackActionT()CNøCN, (€P€”‘€‚A€€‚ÿAdds a profile to the current state.<¤CN4DN& €,€‚A€‚ÿFILE FORMAT/DEFAULT<øCNpDN* $€$€P„7|‚€‚ÿLinearProfile {P!4DNÀDN/ .€B€P„|‚€ƒ‚ƒ‚‚‚ÿindex0linkageSTART_FIRST}1 pDNñDN& €€‚€‚ÿSEE ALSOŽGÀDNENG ^€Ž€”‘€‚ã‰X˜é€‰€ã-ÒÀ€‰€ã.ÒÀ€‰‚ÿSoNurbsProfile, SoProfileCoordinate2, SoProfileCoordinate3BñDNÁEN1ói›å€òÁENúENçÁNSoLocateHighlight9ENúEN% €(€ˆˆ€‚ÿSoLocateHighlight*ÁEN$FN# €€€‚ÿNAMEpJúEN”FN& €”€”‘€€‚ÿSoLocateHighlight - special separator that performs locate highlighting3$FNÇFN# € €€‚ÿINHERITS FROMËf”FN’GNe š€Ì€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãÍ\Y€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoSeparator > SoLocateHighlight2 ÇFNÄGN& €€€€ ‚ÿSYNOPSISV0’GNHN& €`€”‘€€‚ÿ#include ¥GÄGN¿IN^ Š€€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€‚ÿenum Modes{SoLocateHighlight::AUTOHighlight when mouse is overSoLocateHighlight::ONAlways highlightSoLocateHighlight::OFFNever highlight (default)}enum Styles{SoLocateHighlight::EMISSIVEChanges emissive color only (default)SoLocateHighlight::EMISSIVE_DIFFUSEChanges emissive and diffuse colors}P'HNJN) "€N€”‘€‚A€‚ÿFields from class SoLocateHighlight:w5¿IN†JNB T€j€T”A‚S~‚Aãð@I1€‰ƒ‚ãØtW鉃‚ãØtW鉃‚ÿSoSFColorcolorSoSFEnumstyleSoSFEnummodeR#JNØJN/ .€F€”‘€‚A€ãÍ\Y‰‚ÿFields from class SoSeparator:³i†JN‹KNJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingQ(ØJNÜKN) "€P€”‘€‚A€‚ÿMethods from class SoLocateHighlight:l8‹KNHLN4 8€p€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoLocateHighlight()static SoTypegetClassTypeId()S$ÜKN›LN/ .€H€”‘€‚A€ãÍ\Y‰‚ÿMethods from class SoSeparator:|NHLNMN. ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()O ›LNfMN/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒMN[ONr ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)NfMN©ON/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|[ON1Nn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒ©ON1NENãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)©ON‰N/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ1NîƒN 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH‰Nv„N@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NîƒNÄ„N/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þv„Nû…NY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Ä„N/†N& €€‚A€‚ÿDESCRIPTION¶†û…Nå†N0 .€ €”‘€‚A€€€‚ÿThis is a subclass of SoSeparator that redraws itself in a different color when the cursor is over the contents of the separator.V,/†N;ˆN* "€Y€”‘€‚A€‚ÿThe redraw happens for that separator only and not the entire window (redraw along the handle event pick path) and in the front buffer, to efficiently track the mouse motion. The highlighted redraw overrides the emissive and/or diffuse color of the subgraph based on the field values in this node.ç½å†N"‰N* "€{€”‘€‚A€‚ÿNOTE: when using SoLightModel::BASE_COLOR (to turn lighting off) only the diffuse color will be used to render objects, so EMISSIVE_DIFFUSE must be used for this node to have any effect.Ë›;ˆNí‰N0 .€7€”‘€‚A€ã!§˜m‰‚ÿTo override the default mode (off), set environment variable IV_ALLOW_LOCATE_HIGHLIGHT to 1. This will allow locate highlighting to happen by default./ "‰NŠN& €€‚A€‚ÿFIELDSFí‰NbŠN2 4€(€T”A‚S~‚Aãð@I1€‰ƒ‚ÿSoSFColorcolorU,ŠN·ŠN) "€X€”‘€‚A€‚ÿHighlighting color - default [.3, .3, .3]EbŠNüŠN2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumstyleW.·ŠNS‹N) "€\€”‘€‚A€‚ÿHighlighting draw style - default EMISSIVE.DüŠN—‹N2 4€$€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnummodeW.S‹Nî‹N) "€\€”‘€‚A€‚ÿWhether to highlight or not - default AUTO.0 —‹NŒN& €€‚A€‚ÿMETHODSCî‹NaŒN, (€.€T”A‚S~‚A€ƒ‚ÿSoLocateHighlight()a8ŒNÂŒN) "€p€”‘€‚A€‚ÿCreates a LocateHighlight node with default settings.U#aŒNN2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ÂŒNjN) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8N¢N& €$€‚A€‚ÿACTION BEHAVIORKjNíN2 4€2€”‘€‚Aãàꀉ€‚ÿSoHandleEventActionà­¢NÍŽN3 4€[€”‘€‚A€€€€‚ÿChecks to see if the cursor moves onto or off of the contents of the separator, and redraws appropriately (if mode is AUTO), otherwise traverses as a normal separator.HíNN2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionãªÍŽN ÀN9 @€U€”‘€‚A€€€€€€‚ÿRedraws either highlighted (if cursor is over the contents of the separator when mode == AUTO or always if mode == ON), otherwise traverses as a normal separator.N ÀNEN<NHÀN& €,€‚A€‚ÿFILE FORMAT/DEFAULT> ÀN†ÀN* $€(€P„7|‚€‚ÿLocateHighlight {¸HÀN>ÁN9 B€þ€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOmodeAUTOstyleEMISSIVEcolor0.3 0.3 0.3}1 †ÀNoÁN& €€‚€‚ÿSEE ALSOx1>ÁNçÁNG ^€b€”‘€‚ãÍ\Y€‰€ã(ç –€‰€ãOjnÄ€‰‚ÿSoSeparator, SoSelection, SoMaterialAoÁN(ÂN1_ µœ7‡”ó(ÂN`ÂNŽËNSoLocation2Event8çÁN`ÂN% €&€ˆˆ€‚ÿSoLocation2Event*(ÂNŠÂN# €€€‚ÿNAMEN(`ÂNØÂN& €P€”‘€€‚ÿSoLocation2Event - 2D location events3ŠÂN ÃN# € €€‚ÿINHERITS FROMW"ØÂNbÃN5 :€D€”‘€ã2™|—€‰€€€‚ÿSoEvent > SoLocation2Event2 ÃN”ÃN& €€€€ ‚ÿSYNOPSIS|UbÃNÄN' €ª€”‘€€‚‚ÿ#include Methods from class SoLocation2Event:k7”ÃN{ÄN4 8€n€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoLocation2Event()static SoTypegetClassTypeId()O ÄNÊÄN/ .€@€”‘€‚A€ã2™|—‰‚ÿMethods from class SoEvent:/¢{ÄNùÆN è€E€T”A‚S~‚A€ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒã4a†6‰‚ã4a†6‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚㊃õ(‰ƒãñf‘¸‰‚ã}ƒõ(‰ƒãñf‘¸‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvoidsetTime(SbTime t)SbTimegetTime() constvoidsetPosition(const SbVec2s &p)const SbVec2s &getPosition() constconst SbVec2s &getPosition(const SbViewportRegion &vpRgn) constconst SbVec2f &getNormalizedPosition(const SbViewportRegion &vpRgn) constvoidsetShiftDown(SbBool isDown)voidsetCtrlDown(SbBool isDown)ÄzÊÄN½ÇNJ d€ô€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetAltDown(SbBool isDown)SbBoolwasShiftDown() constSbBoolwasCtrlDown() constSbBoolwasAltDown() const4ùÆNñÇN& €€‚A€‚ÿDESCRIPTION€T½ÇNqÈN, (€¨€”‘€‚A€€‚ÿSoLocation2Event represents 2D location events in the Open Inventor event model.0 ñÇN¡ÈN& €€‚A€‚ÿMETHODSBqÈNãÈN, (€,€T”A‚S~‚A€ƒ‚ÿSoLocation2Event()8¡ÈNÉN) "€€”‘€‚A€‚ÿConstructor.U#ãÈNpÉN2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()f7ÉNÖÉN/ .€n€”‘€‚A€€€‚ÿReturn the type id for the SoLocation2Event class.1 pÉNÊN& €€‚A€‚ÿSEE ALSO‡ßÖÉNŽËN¨ ¿€”‘€‚Aã2™|—€‰€ãüb€‰€ã“[ A€‰€ãAùé½€‰€ãÛá–€‰€ã*€‰€ãàꀉ€ã?–/ €‰€ã(ç –€‰€ãΖc`€‰€ãÊÌø!€‰‚ÿSoEvent, SoButtonEvent, SoKeyboardEvent, SoMotion3Event, SoMouseButtonEvent, SoSpaceballButtonEvent, SoHandleEventAction, SoEventCallback, SoSelection, SoInteraction, SoWinDevice< ÊNÊËN1k0„¶1†žôÊËNýËNIOSoMFBitMask3ŽËNýËN% €€ˆˆ€‚ÿSoMFBitMask*ÊËN'ÌN# €€€‚ÿNAMEwQýËNžÌN& €¢€”‘€€‚ÿSoMFBitMask - multiple-value field containing any number of masks of bit flags3'ÌNÑÌN# € €€‚ÿINHERITS FROMˆ;žÌNYÍNM j€v€”‘€ãþ —€‰€ã5É´€‰€ãvnÄ´€‰€€€‚ÿSoField > SoMField > SoMFEnum > SoMFBitMask2 ÑÌN‹ÍN& €€€€ ‚ÿSYNOPSISrKYÍNýÍN' €–€”‘€€‚‚ÿ#include Methods from class SoMFBitMask:¶‹ÍNO] ˆ€m€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒãôÃ1‰‚ƒãôÃ1‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constintoperator [](int i) constconst int *getValues(int start) constintfind(int targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const int *newValues)voidset1Value(int index,int newValue)intoperator =(int newValue)voidsetValue(int newValue)intoperator ==(const SoMFBitMask &f) constintoperator !=(const SoMFBitMýÍNOŽËNask &f) constZ,ýÍNvO. ,€X€T”A‚S~‚A€ƒ‚ƒ‚ÿint *startEditing()voidfinishEditing()P!OÆO/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êvO÷OG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O ÆOFO/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!÷OgO‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PFO&Oo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4gOZO& €€‚A€‚ÿDESCRIPTIONb8&O¼O* "€q€”‘€‚A€‚ÿA multiple-value field that contains any number of masks of bit flags, stored as ints. Nodes or engines that use this field class define mnemonic names for the bit flags. These names should be used when setting or testing the values of the field, even though the values are treated as integers in the methods.‡^ZOCO) "€¼€”‘€‚A€‚ÿThe bit-wise "&" and "|" operators should be used when testing and setting flags in a mask.c¼OÒO, (€Æ€”‘€‚A€€‚ÿSoMFBitMasks are written to file as one or more mnemonic enumerated type names, in this format:BCO O( €4€Ù€‚A€‚ÿ( flag1 | flag2 | ... )+ÒO? O( €€Ù€‚A€‚ÿØ OA O* "€±€”‘€‚A€‚ÿIf only one flag is used in a mask, the parentheses are optional. These names differ among uses of this field in various node or engine classes. See the reference pages for specific nodes or engines for the names.Œc? OÍ O) "€Æ€”‘€‚A€‚ÿThe field values may also be represented as integers, but this is not guaranteed to be portable.›rA Oh O) "€ä€”‘€‚A€‚ÿWhen more than one value is present, all of the values are enclosed in square brackets and separated by commas.0 Í O˜ O& €€‚A€‚ÿMETHODSvBh O O4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH˜ O O) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.K OÊ O, (€>€T”A‚S~‚A€ƒ‚ÿintoperator [](int i) constÆŠ O O< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.U)Ê Oå O, (€R€T”A‚S~‚A€ƒ‚ÿconst int *getValues(int start) constË OìO< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.o<å O[O3 6€x€T”A‚S~‚A€ƒã‘¶p6‰‚ÿintfind(int targetValue,SbBool addIfNotFound = FALSE)#íìOŠ@O6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found[OŠ@OŽËN, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).i;[Oó@O. ,€v€T”A‚S~‚A€ƒ‚ÿvoidsetValues(int start,int num,const int *newValues)᥊@OÔAO< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.W*ó@O+BO- *€T€T”A‚S~‚A€ƒ‚ÿvoidset1Value(int index,int newValue)¥pÔAOÐBO5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.i;+BO9CO. ,€v€T”A‚S~‚A€ƒ‚ƒ‚ÿintoperator =(int newValue)voidsetValue(int newValue)aÐBOÉCO/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.˜^9COaDO: D€¼€T”A‚S~‚A€ƒãôÃ1‰‚ƒãôÃ1‰‚ÿintoperator ==(const SoMFBitMask &f) constintoperator !=(const SoMFBitMask &f) constQÉCO²EO6 :€7€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).Z,aDO FO. ,€X€T”A‚S~‚A€ƒ‚ƒ‚ÿint *startEditing()voidfinishEditing()z5²EO†GOE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}A FOIO< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.9†GO SoMField > SoMFBool2 9JOÕJO& €€€€ ‚ÿSYNOPSISlE£JOAKO' €Š€”‘€€‚‚ÿ#include Methods from class SoMFBool:2­ÕJOsMO… Ø€[€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰ã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚㑶p6‰ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒãóÐÀ´‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constSbBooloperator [](int i) constconst SbBool *getValues(int start) constintfind(SbBool targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const SbBool *newValues)voidset1Value(int index,SbBool newValue)SbBooloperator =(SbBool newValue)voidsetValue(SbBool newValue)intoperator ==(const SoMFBool &f) const˜\AKO NO< H€¸€T”A‚S~‚A€ƒãóÐÀ´‰‚㑶p6‰ƒ‚ƒ‚ÿintoperator !=(const SoMFBool &f) constSbBool *startEditing()voidfinishEditing()P!sMO[NO/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1ê NOŒOOG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O [NOÛOO/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!ŒOO‚O‘ ð€!€T”A‚S~‚ÛOO‚OIOA€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PÛOOǃOo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4‚OûƒO& €€‚A€‚ÿDESCRIPTIONnEǃOi„O) "€Š€”‘€‚A€‚ÿA multiple-value field that contains any number of Boolean values.½ûƒO&…O- (€!€”‘€‚A€€‚ÿSoMFBools are written to file as one or more Boolean values, which are written as "0" (representing a false value), "1", "TRUE", or "FALSE".¨i„OÎ…O) "€þ€”‘€‚A€‚ÿWhen more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:@&…O†O( €0€Ù€‚A€‚ÿ[ 0, FALSE, 1, TRUE ]+Î…O9†O( €€Ù€‚A€‚ÿ0 †Oi†O& €€‚A€‚ÿMETHODSvB9†O߆O4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHi†OP‡O) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.V$߆O¦‡O2 4€H€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBooloperator [](int i) constÆŠP‡OlˆO< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.`.¦‡ÖO2 4€\€T”A‚S~‚A€㑶p6‰ƒ‚ÿconst SbBool *getValues(int start) constËlˆOÓ‰O< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.zÄOMŠO9 B€‚€T”A‚S~‚A€ƒã‘¶p6‰ã‘¶p6‰‚ÿintfind(SbBool targetValue,SbBool addIfNotFound = FALSE)#íÓ‰Op‹O6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).t@MŠOä‹O4 8€€€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidsetValues(int start,int num,const SbBool *newValues)á¥p‹OÅŒO< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.b/ä‹O'O3 6€^€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidset1Value(int index,SbBool newValue)¥pÅŒOÌO5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.ŠJ'OVŽO@ P€”€T”A‚S~‚A㑶p6€‰ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿSbBooloperator =(SbBool newValue)voidsetValue(SbBool newValue)aÌOæŽO/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.’XVŽOxO: D€°€T”A‚S~‚A€ƒãóÐÀ´‰‚ƒãóÐÀ´‰‚ÿintoperator ==(const SoMFBool &f) constintoperator !=(const SoMFBool &f) constRæŽOÖÀO6 :€9€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of thexOÖÀOIO given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).e1xO;ÁO4 8€b€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ÿSbBool *startEditing()voidfinishEditing()z5ÖÀOµÂOE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}A;ÁO2ÄO< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.: µÂOlÄO1€$1†žD† ölÄOÄOéHPSoMFColor1 2ÄOÄO% €€ˆˆ€‚ÿSoMFColor*lÄOÇÄO# €€€‚ÿNAME„^ÄOKÅO& €¼€”‘€€‚ÿSoMFColor - multiple-value field containing any number of RGB colors stored as three floats3ÇÄO~ÅO# € €€‚ÿINHERITS FROMk*KÅOéÅOA R€T€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFColor2 ~ÅOÆO& €€€€ ‚ÿSYNOPSISF éÅOaÆO& €@€”‘€€‚ÿMethods from class SoMFColor::àÆO›ÈOZ ‚€Á€T”A‚S~‚A€ƒ‚ƒ‚ƒã¨ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã¨ƒõ(‰‚ƒ‚ƒ‚ÿvoidsetValues(int start,int num,const float rgb[][3])voidsetHSVValues(int start,int num,const float hsv[][3])voidsetValue(const SbVec3f &vec)voidsetValue(float red,float green,float blue)voidsetHSVValue(float hue,float saturation,float value)voidsetValue(const float rgb[3])voidsetHSVValue(const float hsv[3])voidset1Value(index,const SbVec3f &vec)voidset1Value(index,float r,float g,float b)voidset1HSVValue(index,float h,float s,float v)­aÆOµÊOm ¨€[€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ƒ‚ãÀ"%‰ƒ‚ãÀ"%‰ƒ‚ƒãÀ"%‰ã‘¶p6‰‚ƒãÀ"%‰‚ƒãÀ"%‰‚ÿvoidset1Value(index,const float rgb[3])voidset1HSVValue(index,const float hsv[3])static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbColor &operator [](int i) constconst SbColor *getValues(int start) constintfind(const SbColor & targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const SbColor *newValues)voidset1Value(int index,const SbColor &newValue)Fë›ÈOûËO[ „€×€T”A‚S~‚A€ãÀ"%‰ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãz.—\‰‚ƒãz.—\‰‚ãÀ"%‰ƒ‚ƒ‚ÿconst SbColor &operator =(const SbColor &newValue)voidsetValue(const SbColor &newValue)intoperator ==(const SoMFColor &f) constintoperator !=(const SoMFColor &f) constSbColor *startEditing()voidfinishEditing()P!µÊOKÌO/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êûËO|ÍOG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O KÌOËÍO/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!|ÍO P‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() constËÍO P2ÄO¿PËÍOËPo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4 PÿP& €€‚A€‚ÿDESCRIPTIONôÄËPóP0 .€‰€”‘€‚A€€€‚ÿA multiple-value field that contains any number of RGB colors, stored as instances of SbColor. Values may be set in either RGB (red, green, blue) or HSV (hue, saturation, value) color spaces."õÿPP- (€ë€”‘€‚A€€‚ÿSoMFColors are written to file as one or more RGB triples of floating point numbers in standard scientific notation. When more than one value is present, all of the values are enclosed in square brackets and separated by commas. For example:H óP]P( €@€Ù€‚A€‚ÿ[ 1.0 0.0 0.0, 0 1 0, 0 0 1 ]+PˆP( €€Ù€‚A€‚ÿ]4]PåP) "€h€”‘€‚A€‚ÿrepresents the three colors red, green, and blue.0 ˆPP& €€‚A€‚ÿMETHODS©wåP¾P2 4€î€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetValues(int start,int num,const float rgb[][3])voidsetHSVValues(int start,int num,const float hsv[][3])òÈP°P* "€‘€”‘€‚A€‚ÿSets num values starting at index start to the RGB (or HSV) values specified by the given array of floats. Each float should be in the range 0.0 to 1.0, and there must be 3*num floats in the array.Ú¾PÉP? L€µ€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetValue(const SbVec3f &vec)voidsetValue(float red,float green,float blue)voidsetHSVValue(float hue,float saturation,float value)voidsetValue(const float rgb[3])voidsetHSVValue(const float hsv[3])ì°PµP* "€…€”‘€‚A€‚ÿSets the field to contain one and only one value, the given color (expressed as either RGB or HSV floating point values in the range 0.0 to 1.0), and deletes the second and subsequent values..êÉPã PD V€Õ€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidset1Value(index,const SbVec3f &vec)voidset1Value(index,float r,float g,float b)voidset1HSVValue(index,float h,float s,float v)voidset1Value(index,const float rgb[3])voidset1HSVValue(index,const float hsv[3])šqµP} P) "€â€”‘€‚A€‚ÿSets one value in the array to the given color. The array will be expanded and filled with zeros as necessary.vBã Pó P4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH} Pd P) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class._-ó Pà P2 4€Z€T”A‚S~‚A€ãÀ"%‰ƒ‚ÿconst SbColor &operator [](int i) constÆŠd P‰ P< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.a/à Pê P2 4€^€T”A‚S~‚A€ãÀ"%‰ƒ‚ÿconst SbColor *getValues(int start) constˉ Pñ P< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.ƒJê PtP9 B€”€T”A‚S~‚A€ƒãÀ"%‰ã‘¶p6‰‚ÿintfind(const SbColor & targetValue,SbBool addIfNotFound = FALSE)#íñ P—P6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).uAtP@P4 8€‚€T”A‚S~‚A€ƒãÀ"%‰‚ÿvoidsetValues(int start,int num,const SbColor *—P@P2ÄOnewValues)ᥗPù@P< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.j7@PcAP3 6€n€T”A‚S~‚A€ƒãÀ"%‰‚ÿvoidset1Value(int index,const SbColor &newValue)¥pù@PBP5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.£ccAP«BP@ P€Æ€T”A‚S~‚A€ãÀ"%‰ƒãÀ"%‰‚ƒãÀ"%‰‚ÿconst SbColor &operator =(const SbColor &newValue)voidsetValue(const SbColor &newValue)aBP;CP/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.”Z«BPÏCP: D€´€T”A‚S~‚A€ƒãz.—\‰‚ƒãz.—\‰‚ÿintoperator ==(const SoMFColor &f) constintoperator !=(const SoMFColor &f) constQ;CP EP6 :€7€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).f2ÏCP†EP4 8€d€T”A‚S~‚AãÀ"%€‰ƒ‚ƒ‚ÿSbColor *startEditing()voidfinishEditing()z5 EPGPE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}A†EP}HP< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.1 GP®HP& €€‚A€‚ÿSEE ALSO; }HPéHP/ .€€”‘€‚AãÀ"%€‰‚ÿSbColor; ®HP$IP1û§‚Ÿ«‚¡÷$IPVIPUÄPSoMFEngine2 éHPVIP% €€ˆˆ€‚ÿSoMFEngine*$IP€IP# €€€‚ÿNAMEwQVIP÷IP& €¢€”‘€€‚ÿSoMFEngine - multiple-value field containing any number of pointers to engines3€IP*JP# € €€‚ÿINHERITS FROMl+÷IP–JPA R€V€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFEngine2 *JPÈJP& €€€€ ‚ÿSYNOPSISpI–JP8KP' €’€”‘€€‚‚ÿ#include Methods from class SoMFEngine:¢ÈJPWMP} È€E€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ãú­Np‰ƒ‚ãú­Np‰ƒ‚ƒãú­Np‰ã‘¶p6‰‚ƒãú­Np‰‚ƒãú­Np‰‚ãú­Np‰ƒãú­Np‰‚ƒãú­Np‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constSoEngine *operator [](int i) constconst SoEngine * *getValues(int start) constintfind(SoEngine * targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const SoEngine * *newValues)voidset1Value(int index,SoEngine * newValue)SoEngine *operator =(SoEngine * newValue)voidsetValue(SoEngine * newValue)Ô8KP+NPE X€€T”A‚S~‚A€ƒãw¾°ž‰‚ƒãw¾°ž‰‚ãú­Np‰ƒ‚ƒ‚ÿintoperator ==(const SoMFEngine &f) constintoperator !=(const SoMFEngine &f) constSoEngine * *startEditing()voidfinishEditing()P!WMP{NP/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1ê+NP¬OPG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O {NP €P/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:¬OP €PéHP!¬OP-‚P‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P €PìƒPo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4-‚P „P& €€‚A€‚ÿDESCRIPTIONŸpìƒP¿„P/ .€à€”‘€‚A€€€‚ÿThis field maintains a set of pointers to SoEngine instances, correctly maintaining their reference counts.å¸ „P¤…P- (€q€”‘€‚A€€‚ÿSoMFEngines are written to file as one or more engines. When more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:f>¿„P †P( €|€Ù€‚A€‚ÿ[ ElapsedTime , OneShot duration 2.0 , USE myCalculator ]+¤…P5†P( €€Ù€‚A€‚ÿ0 †Pe†P& €€‚A€‚ÿMETHODSvB5†PÛ†P4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHe†PL‡P) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.Z(Û†P¦‡P2 4€P€T”A‚S~‚Aãú­Np€‰ƒ‚ÿSoEngine *operator [](int i) constÆŠL‡PlˆP< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.d2¦‡PЈP2 4€d€T”A‚S~‚A€ãú­Np‰ƒ‚ÿconst SoEngine * *getValues(int start) constËlˆP׉P< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.~EЈPUŠP9 B€Š€T”A‚S~‚A€ƒãú­Np‰ã‘¶p6‰‚ÿintfind(SoEngine * targetValue,SbBool addIfNotFound = FALSE)#í׉Px‹P6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).xDUŠPð‹P4 8€ˆ€T”A‚S~‚A€ƒãú­Np‰‚ÿvoidsetValues(int start,int num,const SoEngine * *newValues)á¥x‹PÑŒP< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.f3ð‹P7P3 6€f€T”A‚S~‚A€ƒãú­Np‰‚ÿvoidset1Value(int index,SoEngine * newValue)¥pÑŒPÜP5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.–V7PrŽP@ P€¬€T”A‚S~‚Aãú­Np€‰ƒãú­Np‰‚ƒãú­Np‰‚ÿSoEngine *operator =(SoEngine * newValue)voidsetValue(SoEngine * newValue)aÜPP/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.–\rŽP˜P: D€¸€T”A‚S~‚A€ƒãw¾°ž‰‚ƒãw¾°ž‰‚ÿintoperator ==(const SoMFEngine &f) constintoperator !=(const SoMFEngine &f) constQPõÀP6 :€7€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field e˜PõÀPéHPqual (do not equal) those of the given field. If the fields are different types FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).i5˜P^ÁP4 8€j€T”A‚S~‚Aãú­Np€‰ƒ‚ƒ‚ÿSoEngine * *startEditing()voidfinishEditing()z5õÀPØÂPE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}A^ÁPUÄP< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.9ØÂPŽÄP1\D† A¢øŽÄP¾ÄP‰AQSoMFEnum0 UÄP¾ÄP% €€ˆˆ€‚ÿSoMFEnum*ŽÄPèÄP# €€€‚ÿNAMExR¾ÄP`ÅP& €¤€”‘€€‚ÿSoMFEnum - multiple-value field containing any number of enumerated type values3èÄP“ÅP# € €€‚ÿINHERITS FROMj)`ÅPýÅPA R€R€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFEnum2 “ÅP/ÆP& €€€€ ‚ÿSYNOPSISEýÅPtÆP& €>€”‘€€‚ÿMethods from class SoMFEnum: ®/ÆP€ÈP^ Š€]€T”A‚S~‚A€ƒãúß~6‰‚ƒãúß~6‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetValue(const SbName &name)voidset1Value(int index,const SbName &name)static SoTypegetClassTypeId()virtual voidgetTypeId() constintoperator [](int i) constconst int *getValues(int start) constintfind(int targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const int *newValues)voidset1Value(int index,int newValue)intoperator =(int newValue)voidsetValue(int newValue)Á‚tÆPAÉP? L€€T”A‚S~‚A€ƒãvnÄ´‰‚ƒãvnÄ´‰‚ƒ‚ƒ‚ÿintoperator ==(const SoMFEnum &f) constintoperator !=(const SoMFEnum &f) constint *startEditing()voidfinishEditing()P!€ÈP‘ÉP/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êAÉPÂÊPG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O ‘ÉPËP/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!ÂÊP2ÍP‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PËPñÎPo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const42ÍP%ÏP& €€‚A€‚ÿDESCRIPTIONT*ñÎP…Q* "€U€”‘€‚A€‚ÿA multiple-value field that contains any number of enumerated type values, stored as ints. Nodes that use this field class define mnemonic names for values. These names should %ÏP…QUÄPbe used when setting or testing the values of the field, even though the values are treated as integers in the methods.ùÌ%ÏP~Q- (€™€”‘€‚A€€‚ÿSoMFEnums are written to file as a set of mnemonic enumerated type names. These names differ among uses of this field in various node classes. See the reference pages for specific nodes for the names.›r…QQ) "€ä€”‘€‚A€‚ÿWhen more than one value is present, all of the values are enclosed in square brackets and separated by commas.0 ~QIQ& €€‚A€‚ÿMETHODSX&Q¡Q2 4€L€T”A‚S~‚A€ƒãúß~6‰‚ÿvoidsetValue(const SbName &name)†]IQ'Q) "€º€”‘€‚A€‚ÿSets this field to contain one and only one value, which is the mnemonic name as a string.e2¡QŒQ3 6€d€T”A‚S~‚A€ƒãúß~6‰‚ÿvoidset1Value(int index,const SbName &name)•f'Q!Q/ .€Ì€”‘€‚A€€€‚ÿSets the index'th value to be the integer corresponding to the mnemonic name in the given string.vBŒQ—Q4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH!QQ) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.K—QSQ, (€>€T”A‚S~‚A€ƒ‚ÿintoperator [](int i) constÆŠQQ< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.U)SQnQ, (€R€T”A‚S~‚A€ƒ‚ÿconst int *getValues(int start) constËQuQ< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.o<nQäQ3 6€x€T”A‚S~‚A€ƒã‘¶p6‰‚ÿintfind(int targetValue,SbBool addIfNotFound = FALSE)#íuQ Q6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).i;äQp Q. ,€v€T”A‚S~‚A€ƒ‚ÿvoidsetValues(int start,int num,const int *newValues)ᥠQQ Q< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.W*p Q¨ Q- *€T€T”A‚S~‚A€ƒ‚ÿvoidset1Value(int index,int newValue)¥pQ QM Q5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.i;¨ Q¶ Q. ,€v€T”A‚S~‚A€ƒ‚ƒ‚ÿintoperator =(int newValue)voidsetValue(int newValue)ˆ_M Q> Q) "€¾€”‘€‚A€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.’X¶ QÐ Q: D€°€T”A‚S~‚A€ƒãvnÄ´‰‚ƒãvnÄ´‰‚ÿintoperator ==(const SoMFEnum &f) constintoperator !=(const SoMFEnum &f) constR> Q"Q6 :€9€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).Z,Ð Q|Q. ,€X€T”A‚S~‚A€ƒ‚ƒ‚ÿint *startEditing()voidfinishEditing()z5"Q @QE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).|Q @QUÄP}A|Q‰AQ< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.: @QÃAQ1”«‚¡Ãƒ²ùÃAQôAQŒQSoMFFloat1 ‰AQôAQ% €€ˆˆ€‚ÿSoMFFloat*ÃAQBQ# €€€‚ÿNAMExRôAQ–BQ& €¤€”‘€€‚ÿSoMFFloat - multiple-value field containing any number of floating point values3BQÉBQ# € €€‚ÿINHERITS FROMk*–BQ4CQA R€T€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFFloat2 ÉBQfCQ& €€€€ ‚ÿSYNOPSISnG4CQÔCQ' €Ž€”‘€€‚‚ÿ#include Methods from class SoMFFloat:ÂfCQóEQ] ˆ€…€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã'0]‰‚ƒã'0]‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constfloatoperator [](int i) constconst float *getValues(int start) constintfind(float targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const float *newValues)voidset1Value(int index,float newValue)floatoperator =(float newValue)voidsetValue(float newValue)intoperator ==(const SoMFFloat &f) constintoperator !=(const SoMFFloat &f) const\.ÔCQOFQ. ,€\€T”A‚S~‚A€ƒ‚ƒ‚ÿfloat *startEditing()voidfinishEditing()P!óEQŸFQ/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êOFQÐGQG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O ŸFQHQ/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!ÐGQ@JQ‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PHQÿKQo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4@JQ3LQ& €€‚A€‚ÿDESCRIPTIONuLÿKQ¨LQ) "€˜€”‘€‚A€‚ÿA multiple-value field that contains any number of floating point values.Ö3LQ«MQ- (€­€”‘€‚A€€‚ÿSoMFFloats are written to file as one or more values in standard scientific notation. When more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:H ¨LQóMQ( €@€Ù€‚A€‚ÿ[ 1.0, 2.3, 5, 6.2e4, -100, ]+«MQNQ( €€Ù€‚A€‚ÿGóMQeNQ) "€<€”‘€‚A€‚ÿThe last comma is optional.0 NQ•NQ& €€‚A€‚ÿMETHODSvBeNQ OQ4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH•NQ|OQ) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.M! OQÉOQ, (€B€T”A‚S~‚A€ƒ‚ÿfloatoperator [](int i) constÆŠ|OQ›€Q< F€€”‘€‚A€€€€€€ÉOQ›€Q‰AQ€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.W+ÉOQò€Q, (€V€T”A‚S~‚A€ƒ‚ÿconst float *getValues(int start) constË›€QùQ< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.q>ò€Qj‚Q3 6€|€T”A‚S~‚A€ƒã‘¶p6‰‚ÿintfind(float targetValue,SbBool addIfNotFound = FALSE)#íùQƒQ6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).k=j‚QøƒQ. ,€z€T”A‚S~‚A€ƒ‚ÿvoidsetValues(int start,int num,const float *newValues)᥃QÙ„Q< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.Y,øƒQ2…Q- *€X€T”A‚S~‚A€ƒ‚ÿvoidset1Value(int index,float newValue)¥pÙ„Q×…Q5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.oA2…QF†Q. ,€‚€T”A‚S~‚A€ƒ‚ƒ‚ÿfloatoperator =(float newValue)voidsetValue(float newValue)a×…QÖ†Q/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.”ZF†Qj‡Q: D€´€T”A‚S~‚A€ƒã'0]‰‚ƒã'0]‰‚ÿintoperator ==(const SoMFFloat &f) constintoperator !=(const SoMFFloat &f) constQÖ†Q»ˆQ6 :€7€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).\.j‡Q‰Q. ,€\€T”A‚S~‚A€ƒ‚ƒ‚ÿfloat *startEditing()voidfinishEditing()z5»ˆQ‘ŠQE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}A‰QŒQ< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.: ‘ŠQHŒQ1LòÀ¤úHŒQyŒQBRSoMFInt321 ŒQyŒQ% €€ˆˆ€‚ÿSoMFInt32*HŒQ£ŒQ# €€€‚ÿNAMEsMyŒQQ& €š€”‘€€‚ÿSoMFInt32 - multiple-value field containing any number of int32_t integers3£ŒQIQ# € €€‚ÿINHERITS FROMk*Q´QA R€T€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFInt322 IQæQ& €€€€ ‚ÿSYNOPSISnG´QTŽQ' €Ž€”‘€€‚‚ÿ#include Methods from class SoMFInt32:/ÒæQÀQ] ˆ€¥€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã-Ï]‰‚ƒã-Ï]‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constint32_toperator [](int i) constconst int32_t *getValues(int start) constintfind(int32_t targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const int32_t *newValues)voidset1Value(int index,int32_t newValue)int32_toperator =(int32_t TŽQÀQŒQnewValue)voidsetValue(int32_t newValue)intoperator ==(const SoMFInt32 &f) constintoperator !=(const SoMFInt32 &f) const^0TŽQíÀQ. ,€`€T”A‚S~‚A€ƒ‚ƒ‚ÿint32_t *startEditing()voidfinishEditing()P!ÀQ=ÁQ/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êíÀQnÂQG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O =ÁQ½ÂQ/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!nÂQÞÄQ‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P½ÂQÆQo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4ÞÄQÑÆQ& €€‚A€‚ÿDESCRIPTIONyPÆQJÇQ) "€ €”‘€‚A€‚ÿA multiple-value field that contains any number of int32_t (32-bit) integers.çÑÆQ^ÈQ- (€Ï€”‘€‚A€€‚ÿSoMFInt32s are written to file as one or more integer values, in decimal, hexadecimal or octal format. When more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:BJÇQ ÈQ( €4€Ù€‚A€‚ÿ[ 17, -0xE20, -518820 ]+^ÈQËÈQ( €€Ù€‚A€‚ÿ0  ÈQûÈQ& €€‚A€‚ÿMETHODSvBËÈQqÉQ4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHûÈQâÉQ) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.O#qÉQ1ÊQ, (€F€T”A‚S~‚A€ƒ‚ÿint32_toperator [](int i) const¶†âÉQçÊQ0 .€ €”‘€‚A€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.Y-1ÊQ@ËQ, (€Z€T”A‚S~‚A€ƒ‚ÿconst int32_t *getValues(int start) constÿÉçÊQ?ÌQ6 :€“€”‘€‚A€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.s@@ËQ²ÌQ3 6€€€T”A‚S~‚A€ƒã‘¶p6‰‚ÿintfind(int32_t targetValue,SbBool addIfNotFound = FALSE)é?ÌQÅÍQ* "€Ó€”‘€‚A€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).m?²ÌQ2ÎQ. ,€~€T”A‚S~‚A€ƒ‚ÿvoidsetValues(int start,int num,const int32_t *newValues)Ì¢ÅÍQþÎQ* "€E€”‘€‚A€‚ÿSets num values starting at index start to the values in newValues. The array will be automatically be made larger to accommodate the new values, if necessary.[.2ÎQYÏQ- *€\€T”A‚S~‚A€ƒ‚ÿvoidset1Value(int index,int32_t newValue)•lþÎQ R) "€Ø€”‘€‚A€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.YÏQ RŒQuGYÏQR. ,€Ž€T”A‚S~‚A€ƒ‚ƒ‚ÿint32_toperator =(int32_t newValue)voidsetValue(int32_t newValue)ˆ_ R R) "€¾€”‘€‚A€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.”ZRR: D€´€T”A‚S~‚A€ƒã-Ï]‰‚ƒã-Ï]‰‚ÿintoperator ==(const SoMFInt32 &f) constintoperator !=(const SoMFInt32 &f) constQ RîR6 :€7€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).^0RLR. ,€`€T”A‚S~‚A€ƒ‚ƒ‚ÿint32_t *startEditing()voidfinishEditing()y4îRÅRE X€i€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc).}ALRBR< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.9ÅR{R1W Z£€¤û{R«R @RSoMFLong0 BR«R% €€ˆˆ€‚ÿSoMFLong*{RÕR# €€€‚ÿNAMEI#«RR& €F€”‘€€‚ÿSoMFLong - synonym for SoMFInt323ÕRQR# € €€‚ÿINHERITS FROMj)R»RA R€R€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFLong2 QRíR& €€€€ ‚ÿSYNOPSISuH»RbR- *€€”‘€€‚ã5É´‰‚ÿ#include Methods from class SoMField:Z íR¼ RO l€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ãB-9‰ƒ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)static SoTypegetClassTypeId()O bR R/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:I²¼ RT R— ü€e€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãþ —‰‚ƒãþ —‰‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SoTypegetTypeId() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)intoperator ==(const SoField &f) constintoperator !=(const SoField &f) constvoidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)&¥ RzR ЀK€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿvoiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() constSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4T R®R& €€‚A€‚ÿDESCRIPTION#ízR @R6 :€Û€”‘€‚A€€€€€‚ÿThis class is obsolete, and is provided for backwards compatibility only. You should use the new SoMFInt32 class instead. If you compile your code -DIV_STRICT, #including the SoMFLong.h header file will cause a compile-time error.®R @RBR; ®RG@R1Ø%À¤Åƒ¥üG@Ry@RìÄRSoMFMatrix2 @Ry@R% €€ˆˆ€‚ÿSoMFMatrix*G@R£@R# €€€‚ÿNAMEpJy@RAR& €”€”‘€€‚ÿSoMFMatrix - multiple-value field containing any number of 4x4 matrices3£@RFAR# € €€‚ÿINHERITS FROMl+AR²ARA R€V€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFMatrix2 FARäAR& €€€€ ‚ÿSYNOPSISpI²ARTBR' €’€”‘€€‚‚ÿ#include Methods from class SoMFMatrix:RãäAR¦DRo ¬€Ç€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒ‚ã4i¥‘‰ƒ‚ã4i¥‘‰ƒ‚ƒã4i¥‘‰ã‘¶p6‰‚ƒã4i¥‘‰‚ÿvoidsetValue(float a11,float a12,float a13,float a14,float a21,float a22,float a23,float a24,float a31,float a32,float a33,float a34,float a41,float a42,float a43,float a44)static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbMatrix &operator [](int i) constconst SbMatrix *getValues(int start) constintfind(const SbMatrix & targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const SbMatrix *newValues)™TBR´FRu ¸€3€T”A‚S~‚A€ƒãЫÈv‰‚ƒã4i¥‘‰‚ƒãЫÈv‰‚ã4i¥‘‰ƒã4i¥‘‰‚ƒã4i¥‘‰‚ƒãЫÈv‰‚ƒã÷3≂ƒã÷3≂ÿvoidsetValues(int start,int num,const SbMatrixd *newValues)voidset1Value(int index,const SbMatrix &newValue)voidset1Value(int index,const SbMatrixd &newValue)const SbMatrix &operator =(const SbMatrix &newValue)voidsetValue(const SbMatrix &newValue)voidsetValue(const SbMatrixd &newValue)intoperator ==(const SoMFMatrix &f) constintoperator !=(const SoMFMatrix &f) constg3¦DRGR4 8€f€T”A‚S~‚Aã4i¥‘€‰ƒ‚ƒ‚ÿSbMatrix *startEditing()voidfinishEditing()P!´FRkGR/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êGRœHRG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O kGRëHR/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!œHR KR‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PëHRËLRo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4 KRÿLR& €€‚A€‚ÿDESCRIPTIONlCËLRkMR) "€†€”‘€‚A€‚ÿA multiple-value field that contains any number of 4x4 matrices.7 ÿLR¢NR- (€€”‘€‚A€€‚ÿSoMFMatrices are written to file as sets of 16 floating point numbers separated by whitespace. When more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example, two identity matrices might be written as:P(kMRòNR( €P€Ù€‚A€‚ÿ[ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1,Q)¢NRCOR( €R€Ù€‚A€‚ÿ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ]+òNRnOR( €€Ù€‚A€‚ÿ0 CORžOR& €€‚A€‚ÿMETHODSüÀnOR¦€R< F€€T”A‚S~‚A€ƒ‚ÿvoidsetValue(float a11,float a12,fžOR¦€R @Rloat a13,float a14,float a21,float a22,float a23,float a24,float a31,float a32,float a33,float a34,float a41,float a42,float a43,float a44)ˆ_žOR.R) "€¾€”‘€‚A€‚ÿMakes this field contain one and only one value, which is the matrix given by the 16 values.vB¦€R¤R4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH.R‚R) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.`.¤Ru‚R2 4€\€T”A‚S~‚A€ã4i¥‘‰ƒ‚ÿconst SbMatrix &operator [](int i) constÆŠ‚R;ƒR< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.b0u‚RƒR2 4€`€T”A‚S~‚A€ã4i¥‘‰ƒ‚ÿconst SbMatrix *getValues(int start) constË;ƒR¤„R< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.„KƒR(…R9 B€–€T”A‚S~‚A€ƒã4i¥‘‰ã‘¶p6‰‚ÿintfind(const SbMatrix & targetValue,SbBool addIfNotFound = FALSE)#í¤„RK†R6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).vB(…RÁ†R4 8€„€T”A‚S~‚A€ƒã4i¥‘‰‚ÿvoidsetValues(int start,int num,const SbMatrix *newValues)á¥K†R¢‡R< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.wCÁ†RˆR4 8€†€T”A‚S~‚A€ƒãЫÈv‰‚ÿvoidsetValues(int start,int num,const SbMatrixd *newValues)±u¢‡RʉR< F€ë€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues, an array of double precision values. The array will automatically be made larger to accommodate the new values, if necessary. Note that Open Inventor fields still store only single precision values, not double precision values. The specified values are converted to single precision, then stored.k8ˆR5ŠR3 6€p€T”A‚S~‚A€ƒã4i¥‘‰‚ÿvoidset1Value(int index,const SbMatrix &newValue)¥pʉRÚŠR5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.l95ŠRF‹R3 6€r€T”A‚S~‚A€ƒãЫÈv‰‚ÿvoidset1Value(int index,const SbMatrixd &newValue)j4ÚŠR°ŒR6 :€i€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue, a double precision matrix. The array will be automatically expanded, if necessary. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.¦fF‹RVR@ P€Ì€T”A‚S~‚A€ã4i¥‘‰ƒã4i¥‘‰‚ƒã4i¥‘‰‚ÿconst SbMatrix &operator =(const SbMatrix &newValue)voidsetValue(const SbMatrix &newValue)a°ŒRæR/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values._-VREŽR2 4€Z€T”A‚S~‚A€ƒãЫÈv‰‚ÿvoidsetValue(const SbMatrixd &newValue)U%æRšR0 .€K€”‘€‚A€€€‚ÿSets the first value in the array to newValue, a double precision matrix, and deletes the second and subsequent values. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.–\EŽR<ÀR: D€¸€T”A‚S~‚A€ƒã÷3≂ƒã÷3≂ÿintoperator ==(const SoMFMatrix &f) consšR<ÀR @Rtintoperator !=(const SoMFMatrix &f) constRšRŽÁR6 :€9€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).g3<ÀRõÁR4 8€f€T”A‚S~‚Aã4i¥‘€‰ƒ‚ƒ‚ÿSbMatrix *startEditing()voidfinishEditing()z5ŽÁRoÃRE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}AõÁRìÄR< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.9oÃR%ÅR1\€¤§‚¦ý%ÅRUÅR˜CSSoMFName0 ìÄRUÅR% €€ˆˆ€‚ÿSoMFName*%ÅRÅR# €€€‚ÿNAMEgAUÅRæÅR& €‚€”‘€€‚ÿSoMFName - multiple-value field containing any number of names3ÅRÆR# € €€‚ÿINHERITS FROMj)æÅRƒÆRA R€R€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFName2 ÆRµÆR& €€€€ ‚ÿSYNOPSISlEƒÆR!ÇR' €Š€”‘€€‚‚ÿ#include Methods from class SoMFName:­µÆR;ÉRm ¨€[€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ƒ‚ãúß~6‰ƒ‚ãúß~6‰ƒ‚ƒãúß~6‰ã‘¶p6‰‚ƒãúß~6‰‚ƒãúß~6‰‚ÿvoidsetValues(int start,int num,const char *strings[])voidsetValue(const char *string)static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbName &operator [](int i) constconst SbName *getValues(int start) constintfind(const SbName & targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const SbName *newValues)voidset1Value(int index,const SbName &newValue)/à!ÇRjÊRO l€Á€T”A‚S~‚A€ãúß~6‰ƒãúß~6‰‚ƒãúß~6‰‚ƒ‚ƒ‚ãúß~6‰ƒ‚ƒ‚ÿconst SbName &operator=(const SbName &newValue)voidsetValue(const SbName &newValue)intoperator ==(const SoMFName &f) constintoperator !=(const SoMFName &f) constSbName *startEditing()voidfinishEditing()P!;ÉRºÊR/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êjÊRëËRG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O ºÊR:ÌR/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!ëËR[ÎR‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P:ÌR&So ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer[ÎR&SìÄR *getContainer() const4[ÎRZS& €€‚A€‚ÿDESCRIPTIONJ&S¤S0 .€5€”‘€‚A€€€‚ÿA multiple-valued field containing any number of names. Names are short series of characters generally used for labels or names, and are stored in a special table designed to allow fast lookup and comparison. For most purposes, an SoMFString field is probably more appropriate.{NZSS- (€€”‘€‚A€€‚ÿSoMFNames are written to file as one or more strings of characters. Names must begin with an underscore or alphabetic character, and must consist entirely of underscores, alphabetic characters, or numbers. When more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:V.¤SuS( €\€Ù€‚A€‚ÿ[ Fred, Wilma, _Part_01, translationField ]+S S( €€Ù€‚A€‚ÿ0 uSÐS& €€‚A€‚ÿMETHODSj< S:S. ,€x€T”A‚S~‚A€ƒ‚ÿvoidsetValues(int start,int num,const char *strings[])¢mÐSÜS5 :€Ú€”‘€‚A€€€€€‚ÿSets num values beginning at index start to the names contained in the given set of character strings.P$:S,S, (€H€T”A‚S~‚A€ƒ‚ÿvoidsetValue(const char *string)wHÜS£S/ .€€”‘€‚A€€€‚ÿSets this field to contain one and only one value, given by string.vB,SS4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH£SŠS) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.^,SèS2 4€X€T”A‚S~‚A€ãúß~6‰ƒ‚ÿconst SbName &operator [](int i) constÆŠŠS®S< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.`.èSS2 4€\€T”A‚S~‚A€ãúß~6‰ƒ‚ÿconst SbName *getValues(int start) constË®S S< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.‚IS— S9 B€’€T”A‚S~‚A€ƒãúß~6‰ã‘¶p6‰‚ÿintfind(const SbName & targetValue,SbBool addIfNotFound = FALSE)#í Sº S6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).t@— S. S4 8€€€T”A‚S~‚A€ƒãúß~6‰‚ÿvoidsetValues(int start,int num,const SbName *newValues)᥺ S S< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.i6. Sx S3 6€l€T”A‚S~‚A€ƒãúß~6‰‚ÿvoidset1Value(int index,const SbName &newValue)¥p S S5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.Ÿ_x S¼ S@ P€¾€T”A‚S~‚A€ãúß~6‰ƒãúß~6‰‚ƒãúß~6‰‚ÿconst SbName &operator=(const SbName &newValue)voidsetValue(const SbName &newValue)a SLS/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.’X¼ SÞS: D€°€T”A‚S~‚A€ƒã\ú䉂ƒã\ú䉂ÿintoperator ==(const SoMFName &f) constintoperator !=(const SoMFName &f) constRLS<@S6 :€9€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other isÞS<@SìÄR an SoMFInt with a value of 1, for example).e1ÞS¡@S4 8€b€T”A‚S~‚Aãúß~6€‰ƒ‚ƒ‚ÿSbName *startEditing()voidfinishEditing()z5<@SBSE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}A¡@S˜CS< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.9BSÑCS1ÖŃ¥ÿ §þÑCSDS§ŽSSoMFNode0 ˜CSDS% €€ˆˆ€‚ÿSoMFNode*ÑCS+DS# €€€‚ÿNAMEsMDSžDS& €š€”‘€€‚ÿSoMFNode - multiple-value field containing any number of pointers to nodes3+DSÑDS# € €€‚ÿINHERITS FROMj)žDS;ESA R€R€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFNode2 ÑDSmES& €€€€ ‚ÿSYNOPSISlE;ESÙES' €Š€”‘€€‚‚ÿ#include Methods from class SoMFNode:’mESèGS} È€%€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ã’n%9‰ƒ‚ã’n%9‰ƒ‚ƒã’n%9‰ã‘¶p6‰‚ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒã’n%9‰‚ƒã’n%9‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constSoNode *operator [](int i) constconst SoNode * *getValues(int start) constintfind(SoNode * targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const SoNode * *newValues)voidset1Value(int index,SoNode * newValue)SoNode *operator =(SoNode * newValue)voidsetValue(SoNode * newValue)ΉÙES¶HSE X€€T”A‚S~‚A€ƒã÷]Ï´‰‚ƒã÷]Ï´‰‚ã’n%9‰ƒ‚ƒ‚ÿintoperator ==(const SoMFNode &f) constintoperator !=(const SoMFNode &f) constSoNode * *startEditing()voidfinishEditing()P!èGSIS/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1ê¶HS7JSG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O IS†JS/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!7JS§LS‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P†JSfNSo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4§LSšNS& €€‚A€‚ÿDESCRIPTIONnfNS7OS/ .€Ü€”‘€‚A€€€‚ÿThis field maintains a set of pointers to SoNode instances, correctly maintaining their reference counts.á´šNS$€S- (€i€”‘€‚A€€‚ÿSoMFNodes are written to file as one or more nodes. When more than one value is present, all of the values are enclosed in square brackets and separated b7OS$€S˜CSy commas; for example:a97OS…€S( €r€Ù€‚A€‚ÿ[ Cube {} , Sphere { radius 2.0 }, USE myTranslation ]+$€S°€S( €€Ù€‚A€‚ÿ0 …€Sà€S& €€‚A€‚ÿMETHODSvB°€SVS4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHà€SÇS) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.X&VS‚S2 4€L€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *operator [](int i) constÆŠÇSå‚S< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.b0‚SGƒS2 4€`€T”A‚S~‚A€ã’n%9‰ƒ‚ÿconst SoNode * *getValues(int start) constËå‚SN„S< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.|CGƒSÊ„S9 B€†€T”A‚S~‚A€ƒã’n%9‰ã‘¶p6‰‚ÿintfind(SoNode * targetValue,SbBool addIfNotFound = FALSE)#íN„Sí…S6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).vBÊ„Sc†S4 8€„€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidsetValues(int start,int num,const SoNode * *newValues)á¥í…SD‡S< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.d1c†S¨‡S3 6€b€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidset1Value(int index,SoNode * newValue)nD‡SEˆS/ .€Ü€”‘€‚A€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.P¨‡SÕˆS@ P€ €T”A‚S~‚Aã’n%9€‰ƒã’n%9‰‚ƒã’n%9‰‚ÿSoNode *operator =(SoNode * newValue)voidsetValue(SoNode * newValue)aEˆSe‰S/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.’XÕˆS÷‰S: D€°€T”A‚S~‚A€ƒã÷]Ï´‰‚ƒã÷]Ï´‰‚ÿintoperator ==(const SoMFNode &f) constintoperator !=(const SoMFNode &f) constRe‰SI‹S6 :€9€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).g3÷‰S°‹S4 8€f€T”A‚S~‚Aã’n%9€‰ƒ‚ƒ‚ÿSoNode * *startEditing()voidfinishEditing()z5I‹S*SE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}A°‹S§ŽS< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.9*SàŽS1'§‚¦V¨ÿàŽSS TSoMFPath0 §ŽSS% €€ˆˆ€‚ÿSoMFPath*àŽS:S# €€€‚ÿNAMEsMS­S& €š€”‘€€‚ÿSoMFPath - multiple-value field containing any number of pointers to paths3:SàS# € €€‚ÿINHERITS FROMj)­SVÀSA R€R€”‘àSVÀS§ŽS€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFPath2 àSˆÀS& €€€€ ‚ÿSYNOPSISlEVÀSôÀS' €Š€”‘€€‚‚ÿ#include Methods from class SoMFPath:’ˆÀSÃS} È€%€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ãMy'9‰ƒ‚ãMy'9‰ƒ‚ƒãMy'9‰ã‘¶p6‰‚ƒãMy'9‰‚ƒãMy'9‰‚ãMy'9‰ƒãMy'9‰‚ƒãMy'9‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constSoPath *operator [](int i) constconst SoPath * *getValues(int start) constintfind(SoPath * targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const SoPath * *newValues)voidset1Value(int index,SoPath * newValue)SoPath *operator =(SoPath * newValue)voidsetValue(SoPath * newValue)ΉôÀSÑÃSE X€€T”A‚S~‚A€ƒã²hÑ´‰‚ƒã²hÑ´‰‚ãMy'9‰ƒ‚ƒ‚ÿintoperator ==(const SoMFPath &f) constintoperator !=(const SoMFPath &f) constSoPath * *startEditing()voidfinishEditing()P!ÃS!ÄS/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êÑÃSRÅSG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O !ÄS¡ÅS/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!RÅSÂÇS‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P¡ÅSÉSo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4ÂÇSµÉS& €€‚A€‚ÿDESCRIPTIONnÉSRÊS/ .€Ü€”‘€‚A€€€‚ÿThis field maintains a set of pointers to SoPath instances, correctly maintaining their reference counts.,ùµÉS~ËS3 4€ó€”‘€‚A€€€€‚ÿSoMFPaths are written to file as one or more paths (see the SoPath reference page for a description of the file format for a path). When more than one value is present, all of the values are enclosed in square brackets and separated by commas.0 RÊS®ËS& €€‚A€‚ÿMETHODSvB~ËS$ÌS4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH®ËS•ÌS) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.X&$ÌSíÌS2 4€L€T”A‚S~‚AãMy'9€‰ƒ‚ÿSoPath *operator [](int i) constÆŠ•ÌS³ÍS< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.b0íÌSÎS2 4€`€T”A‚S~‚A€ãMy'9‰ƒ‚ÿconst SoPath * *getValues(int start) constÿɳÍSÏS6 :€“€”‘€‚A€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.|CÎSÏS9 B€†€T”A‚S~‚A€ƒãMy'9‰ã‘¶p6‰‚ÿintfind(SoPath * targetValue,SbBool addIfNotFound = FALSE)#íÏS¿T6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index ÏS¿T§ŽSof that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).vBÏS5T4 8€„€T”A‚S~‚A€ƒãMy'9‰‚ÿvoidsetValues(int start,int num,const SoPath * *newValues)᥿TT< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.d15TzT3 6€b€T”A‚S~‚A€ƒãMy'9‰‚ÿvoidset1Value(int index,SoPath * newValue)¥pTT5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.PzT¯T@ P€ €T”A‚S~‚AãMy'9€‰ƒãMy'9‰‚ƒãMy'9‰‚ÿSoPath *operator =(SoPath * newValue)voidsetValue(SoPath * newValue)aT?T/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.’X¯TÑT: D€°€T”A‚S~‚A€ƒã²hÑ´‰‚ƒã²hÑ´‰‚ÿintoperator ==(const SoMFPath &f) constintoperator !=(const SoMFPath &f) constR?T#T6 :€9€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).g3ÑTŠT4 8€f€T”A‚S~‚AãMy'9€‰ƒ‚ƒ‚ÿSoPath * *startEditing()voidfinishEditing()z5#TTE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}AŠT T< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.: T» T1rÿ §Ä©» Tì T…TSoMFPlane1 Tì T% €€ˆˆ€‚ÿSoMFPlane*» T T# €€€‚ÿNAME]7ì Ts T& €n€”‘€€‚ÿSoMFPlane - field containing several plane equations3 T¦ T# € €€‚ÿINHERITS FROMk*s T TA R€T€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFPlane2 ¦ TC T& €€€€ ‚ÿSYNOPSISnG T± T' €Ž€”‘€€‚‚ÿ#include Methods from class SoMFPlane:;¶C Tì T… Ø€m€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ã÷Ä'‰ƒ‚ã÷Ä'‰ƒ‚ƒã÷Ä'‰ã‘¶p6‰‚ƒã÷Ä'‰‚ƒã÷Ä'‰‚ã÷Ä'‰ƒã÷Ä'‰‚ƒã÷Ä'‰‚ƒãf9_‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constSbPlaneoperator [](int i) constconst SbPlane *getValues(int start) constintfind(SbPlane targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const SbPlane *newValues)voidset1Value(int index,SbPlane newValue)SbPlaneoperator =(SbPlane newValue)voidsetValue(SbPlane newValue)intoperator ==(const SoMFPlane &f) constš^± T†T< H€¼€T”A‚S~‚A€ƒãf9_‰‚ã÷Ä'‰ƒ‚ƒ‚ÿintoperator !=(const SoMFPlane &f) constSbPlane *startEditing()voidfinishEditing()P!ì TÖT/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1ê†T@TG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueStÖT@T Tring)O ÖTb@T/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!@TƒBT‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿Pb@TBDTo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4ƒBTvDT& €€‚A€‚ÿDESCRIPTION[2BDTÑDT) "€d€”‘€‚A€‚ÿA field containing one or more plane equations.=vDTFT- (€!€”‘€‚A€€‚ÿSoMFPlanes are written to file as groups of four floating point values separated by whitespace. In each set of four values, the first three are the normal direction of the plane, the fourth is the distance of the plane from the origin (in the direction of the normal).¨ÑDT¶FT) "€þ€”‘€‚A€‚ÿWhen more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:H FTþFT( €@€Ù€‚A€‚ÿ[ 1 0 0 0, .707 .707 0 100, ]+¶FT)GT( €€Ù€‚A€‚ÿ0 þFTYGT& €€‚A€‚ÿMETHODSvB)GTÏGT4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHYGT@HT) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.W%ÏGT—HT2 4€J€T”A‚S~‚Aã÷Ä'€‰ƒ‚ÿSbPlaneoperator [](int i) constÆŠ@HT]IT< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.a/—HT¾IT2 4€^€T”A‚S~‚A€ã÷Ä'‰ƒ‚ÿconst SbPlane *getValues(int start) constË]ITÅJT< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.{B¾IT@KT9 B€„€T”A‚S~‚A€ƒã÷Ä'‰ã‘¶p6‰‚ÿintfind(SbPlane targetValue,SbBool addIfNotFound = FALSE)#íÅJTcLT6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).uA@KTØLT4 8€‚€T”A‚S~‚A€ƒã÷Ä'‰‚ÿvoidsetValues(int start,int num,const SbPlane *newValues)á¥cLT¹MT< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.c0ØLTNT3 6€`€T”A‚S~‚A€ƒã÷Ä'‰‚ÿvoidset1Value(int index,SbPlane newValue)•l¹MT±NT) "€Ø€”‘€‚A€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.MNT>OT@ P€š€T”A‚S~‚Aã÷Ä'€‰ƒã÷Ä'‰‚ƒã÷Ä'‰‚ÿSbPlaneoperator =(SbPlane newValue)voidsetValue(SbPlane newValue)ˆ_±NTÆOT) "€¾€”‘€‚A€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.”Z>OTf€T: D€´€T”A‚S~‚A€ƒãf9_‰‚ƒãf9_‰‚ÿÆOTf€T Tintoperator ==(const SoMFPlane &f) constintoperator !=(const SoMFPlane &f) constRÆOT¸T6 :€9€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).f2f€T‚T4 8€d€T”A‚S~‚Aã÷Ä'€‰ƒ‚ƒ‚ÿSbPlane *startEditing()voidfinishEditing()z5¸T˜ƒTE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}A‚T…T< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.= ˜ƒTR…T1ä(V¨÷ ªR…T†…T¢ USoMFRotation4…T†…T% €€ˆˆ€‚ÿSoMFRotation*R…T°…T# €€€‚ÿNAMEzN†…T*†T, (€œ€”‘€€€€‚ÿSoMFRotation - Multiple-value field containing any number of SbRotations.3°…T]†T# € €€‚ÿINHERITS FROMn-*†TˆTA R€Z€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFRotation2 ]†Tý†T& €€€€ ‚ÿSYNOPSIStMˆTq‡T' €š€”‘€€‚‚ÿ#include Methods from class SoMFRotation:6Îý†T§‰Th ž€€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ƒ‚ã ‚û‰ƒ‚ã ‚û‰ƒ‚ÿvoidset1Value(int index,const SbVec3f &axis,float angle)voidsetValue(const SbVec3f &axis,float angle)voidset1Value(int index,float q0,float q1,float q2,float q3)voidset1Value(int index,const float q[4])voidsetValue(float q0,float q1,float q2,float q3)voidsetValue(float q[4])static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbRotation &operator [](int i) constconst SbRotation *getValues(int start) const#­q‡TÊ‹Tv º€[€T”A‚S~‚A€ƒã ‚û‰ã‘¶p6‰‚ƒã ‚û‰‚ƒãC°×>‰‚ƒã ‚û‰‚ƒãC°×>‰‚ã ‚û‰ƒã ‚û‰‚ƒã ‚û‰‚ÿintfind(const SbRotation & targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const SbRotation *newValues)voidsetValues(int start,int num,const SbRotationd *newValues)voidset1Value(int index,const SbRotation &newValue)voidset1Value(int index,const SbRotationd &newValue)const SbRotation &operator =(const SbRotation &newValue)voidsetValue(const SbRotation &newValue) À§‰T׌TM h€€T”A‚S~‚A€ƒãC°×>‰‚ƒãÏ[ щ‚ƒãÏ[ щ‚ã ‚û‰ƒ‚ƒ‚ÿvoidsetValue(const SbRotationd &newValue)intoperator ==(const SoMFRotation &f) constintoperator !=(const SoMFRotation &f) constSbRotation *startEditing()voidfinishEditing()P!Ê‹T'T/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1ê׌TXŽTG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O 'T§ŽT/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!XŽTÔÀT‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueS§ŽTÔÀT…Ttring)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P§ŽT“ÂTo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4ÔÀTÇÂT& €€‚A€‚ÿDESCRIPTIONsD“ÂT:ÃT/ .€ˆ€”‘€‚A€€€‚ÿA multiple-value field that contains any number of SbRotations.þÑÇÂT8ÄT- (€£€”‘€‚A€€‚ÿSoMFRotations are written to file as one or more sets of four floating point values. Each set of 4 values is an axis of rotation followed by the amount of right-handed rotation about that axis, in radians.¨:ÃTàÄT) "€þ€”‘€‚A€‚ÿWhen more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:J"8ÄT*ÅT( €D€Ù€‚A€‚ÿ[ 1 0 0 0, -.707 -.707 0 1.57 ]+àÄTUÅT( €€Ù€‚A€‚ÿ0 *ÅT…ÅT& €€‚A€‚ÿMETHODSt@UÅTùÅT4 8€€€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidset1Value(int index,const SbVec3f &axis,float angle)d5…ÅT]ÆT/ .€j€”‘€‚A€€€‚ÿSets the index'th value to the given axis/angle.g4ùÅTÄÆT3 6€h€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidsetValue(const SbVec3f &axis,float angle)}H]ÆTAÇT5 :€€”‘€‚A€€€€€‚ÿMakes this field have exactly one value, given by axis and angle.£pÄÆTäÇT3 6€à€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidset1Value(int index,float q0,float q1,float q2,float q3)voidset1Value(int index,const float q[4])qBAÇTUÈT/ .€„€”‘€‚A€€€‚ÿSets the index'th value to the given quaternion (x, y, z, w).ƒRäÇTØÈT1 2€¤€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetValue(float q0,float q1,float q2,float q3)voidsetValue(float q[4])zQUÈTRÉT) "€¢€”‘€‚A€‚ÿMakes this field have exactly one value, given by the quaternion (x, y, z, w).vBØÈTÈÉT4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHRÉT9ÊT) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.b0ÈÉT›ÊT2 4€`€T”A‚S~‚A€ã ‚û‰ƒ‚ÿconst SbRotation &operator [](int i) constÆŠ9ÊTaËT< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.d2›ÊTÅËT2 4€d€T”A‚S~‚A€ã ‚û‰ƒ‚ÿconst SbRotation *getValues(int start) constËaËTÌÌT< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.†MÅËTRÍT9 B€š€T”A‚S~‚A€ƒã ‚û‰ã‘¶p6‰‚ÿintfind(const SbRotation & targetValue,SbBool addIfNotFound = FALSE)#íÌÌTuÎT6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).xDRÍTíÎT4 8€ˆ€T”A‚S~‚A€ƒã ‚û‰‚ÿvoidsetValues(int start,int num,const SbRotation *newValues)á¥uÎTÎÏT< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.yEíÎTSU4 8€Š€T”A‚S~‚A€ƒãC°×>‰ÎÏTSU…T‚ÿvoidsetValues(int start,int num,const SbRotationd *newValues)´xÎÏTU< F€ñ€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues, an array of double precision rotations. The array will automatically be made larger to accommodate the new values, if necessary. Note that Open Inventor fields still store only single precision values, not double precision values. The specified values are converted to single precision, then stored.m:SUtU3 6€t€T”A‚S~‚A€ƒã ‚û‰‚ÿvoidset1Value(int index,const SbRotation &newValue)¥pUU5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.n;tU‡U3 6€v€T”A‚S~‚A€ƒãC°×>‰‚ÿvoidset1Value(int index,const SbRotationd &newValue)l6UóU6 :€m€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue, a double precision rotation. The array will be automatically expanded, if necessary. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.¬l‡UŸU@ P€Ø€T”A‚S~‚A€ã ‚û‰ƒã ‚û‰‚ƒã ‚û‰‚ÿconst SbRotation &operator =(const SbRotation &newValue)voidsetValue(const SbRotation &newValue)aóU/U/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.a/ŸUU2 4€^€T”A‚S~‚A€ƒãC°×>‰‚ÿvoidsetValue(const SbRotationd &newValue)W'/UçU0 .€O€”‘€‚A€€€‚ÿSets the first value in the array to newValue, a double precision rotation, and deletes the second and subsequent values. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.š`UU: D€À€T”A‚S~‚A€ƒãÏ[ щ‚ƒãÏ[ щ‚ÿintoperator ==(const SoMFRotation &f) constintoperator !=(const SoMFRotation &f) constRçUÓ U6 :€9€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).i5U< U4 8€j€T”A‚S~‚Aã ‚û€‰ƒ‚ƒ‚ÿSbRotation *startEditing()voidfinishEditing()z5Ó U¶ UE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}A< U3 U< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.1 ¶ Ud U& €€‚A€‚ÿSEE ALSO>3 U¢ U/ .€€”‘€‚Aã ‚û€‰‚ÿSbRotation: d UÜ U1^Ä©ý«Ü U UEˆUSoMFShort1 ¢ U U% €€ˆˆ€‚ÿSoMFShort*Ü U7U# €€€‚ÿNAMEqK U¨U& €–€”‘€€‚ÿSoMFShort - multiple-value field containing any number of short integers37UÛU# € €€‚ÿINHERITS FROMk*¨UFUA R€T€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFShort2 ÛUxU& €€€€ ‚ÿSYNOPSISnGFU @U' €Ž€”‘€€‚‚ÿ#include Methods from class SoMFShort:xU @U¢ UÂxU+BU] ˆ€…€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã³qÑ_‰‚ƒã³qÑ_‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constshortoperator [](int i) constconst short *getValues(int start) constintfind(short targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const short *newValues)voidset1Value(int index,short newValue)shortoperator =(short newValue)voidsetValue(short newValue)intoperator ==(const SoMFShort &f) constintoperator !=(const SoMFShort &f) const\. @U‡BU. ,€\€T”A‚S~‚A€ƒ‚ƒ‚ÿshort *startEditing()voidfinishEditing()P!+BU×BU/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1ê‡BUDUG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O ×BUWDU/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!DUxFU‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PWDU7HUo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4xFUkHU& €€‚A€‚ÿDESCRIPTIONwN7HUâHU) "€œ€”‘€‚A€‚ÿA multiple-value field that contains any number of short (16-bit) integers.Q$kHU3JU- (€I€”‘€‚A€€‚ÿSoMFShorts are written to file as one or more short integer values, represented as decimal, hexadecimal (beginning with '0x') or octal (beginning with '0') values. When more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:=âHUpJU( €*€Ù€‚A€‚ÿ[ -7, 0xFF, -033 ]+3JU›JU( €€Ù€‚A€‚ÿ0 pJUËJU& €€‚A€‚ÿMETHODSvB›JUAKU4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHËJU²KU) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.M!AKUÿKU, (€B€T”A‚S~‚A€ƒ‚ÿshortoperator [](int i) constÆŠ²KUÅLU< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.W+ÿKUMU, (€V€T”A‚S~‚A€ƒ‚ÿconst short *getValues(int start) constËÅLU#NU< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.q>MU”NU3 6€|€T”A‚S~‚A€ƒã‘¶p6‰‚ÿintfind(short targetValue,SbBool addIfNotFound = FALSE)#í#NU·OU6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).k=”NU.€U. ,€z€T”A‚S~‚A€ƒ‚ÿvoidsetValues(int start,·OU.€U¢ Uint num,const short *newValues)᥷OUU< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.Y,.€UhU- *€X€T”A‚S~‚A€ƒ‚ÿvoidset1Value(int index,short newValue)¥pU ‚U5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.oAhU|‚U. ,€‚€T”A‚S~‚A€ƒ‚ƒ‚ÿshortoperator =(short newValue)voidsetValue(short newValue)a ‚U ƒU/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.”Z|‚U ƒU: D€´€T”A‚S~‚A€ƒã³qÑ_‰‚ƒã³qÑ_‰‚ÿintoperator ==(const SoMFShort &f) constintoperator !=(const SoMFShort &f) constR ƒUò„U6 :€9€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).\. ƒUN…U. ,€\€T”A‚S~‚A€ƒ‚ƒ‚ÿshort *startEditing()voidfinishEditing()z5ò„UȆUE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}AN…UEˆU< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.; ȆU€ˆU1}÷ ª‚¬€ˆU²ˆUVSoMFString2 EˆU²ˆU% €€ˆˆ€‚ÿSoMFString*€ˆU܈U# €€€‚ÿNAMEkE²ˆUG‰U& €Š€”‘€€‚ÿSoMFString - multiple-value field containing any number of strings3܈Uz‰U# € €€‚ÿINHERITS FROMl+G‰Uæ‰UA R€V€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFString2 z‰UŠU& €€€€ ‚ÿSYNOPSISpIæ‰UˆŠU' €’€”‘€€‚‚ÿ#include Methods from class SoMFString:¯ŠU¤ŒUm ¨€_€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ƒ‚ãXíʉƒ‚ãXíʉƒ‚ƒãXíʉ㑶p6‰‚ƒãXíʉ‚ƒãXíʉ‚ÿsetValues(int start,int num,const char *strings[])setValue(const char *string)static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbString &operator [](int i) constconst SbString *getValues(int start) constintfind(const SbString & targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const SbString *newValues)voidset1Value(int index,const SbString &newValue)LñˆŠUðU[ „€ã€T”A‚S~‚A€ãXíʉƒãXíʉ‚ƒãXíʉ‚ƒã*{£‰‚ƒã*{£‰‚ãXíʉƒ‚ƒ‚ÿconst SbString &operator =(const SbString &newValue)voidsetValue(const SbString &newValue)intoperator ==(const SoMFString &f) constintoperator !=(const SoMFString &f) constSbString *startEditing()voidfinishEditing()P!¤ŒU@ŽU/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êðUqUG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O @ŽUÀU/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!qUíÁU‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ÀUíÁUEˆUƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PÀU¬ÃUo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4íÁUàÃU& €€‚A€‚ÿDESCRIPTIONg>¬ÃUGÄU) "€|€”‘€‚A€‚ÿA multiple-value field that contains any number of strings. óàÃUgÅU- (€ç€”‘€‚A€€‚ÿSoMFStrings are written to file as one or more strings within double quotes. Any characters (including newlines) may appear within the quotes. To include a double quote character within the string, precede it with a backslash. For example:b:GÄUÉÅU( €t€Ù€‚A€‚ÿ[ cowEnizer , "Scene Boy" , "He said, \"I did not!\"" ]+gÅUôÅU( €€Ù€‚A€‚ÿ0 ÉÅU$ÆU& €€‚A€‚ÿMETHODSf8ôÅUŠÆU. ,€p€T”A‚S~‚A€ƒ‚ÿsetValues(int start,int num,const char *strings[])“^$ÆUÇU5 :€¼€”‘€‚A€€€€€‚ÿSets num values, starting at index start, to the strings in the given character arrays.L ŠÆUiÇU, (€@€T”A‚S~‚A€ƒ‚ÿsetValue(const char *string)ŒcÇUõÇU) "€Æ€”‘€‚A€‚ÿDeletes all values currently in this field and sets this field to contain only the given string.vBiÇUkÈU4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHõÇUÜÈU) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.`.kÈU<ÉU2 4€\€T”A‚S~‚A€ãXíʉƒ‚ÿconst SbString &operator [](int i) constÆŠÜÈUÊU< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.b0<ÉUdÊU2 4€`€T”A‚S~‚A€ãXíʉƒ‚ÿconst SbString *getValues(int start) constËÊUkËU< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in-place.„KdÊUïËU9 B€–€T”A‚S~‚A€ƒãXíʉ㑶p6‰‚ÿintfind(const SbString & targetValue,SbBool addIfNotFound = FALSE)(òkËUÍU6 :€å€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue will be added to the end of the array (but -1 is still returned).vBïËUÍU4 8€„€T”A‚S~‚A€ƒãXíʉ‚ÿvoidsetValues(int start,int num,const SbString *newValues)á¥ÍUnÎU< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.k8ÍUÙÎU3 6€p€T”A‚S~‚A€ƒãXíʉ‚ÿvoidset1Value(int index,const SbString &newValue)¥pnÎU~ÏU5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.¦fÙÎU0V@ P€Ì€T”A‚S~‚A€ãXíʉƒãXíʉ‚ƒãXíʉ‚ÿconst SbString &operator =(const SbString &newValue)voidse~ÏU0VEˆUtValue(const SbString &newValue)a~ÏUÀV/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.–\0VVV: D€¸€T”A‚S~‚A€ƒã*{£‰‚ƒã*{£‰‚ÿintoperator ==(const SoMFString &f) constintoperator !=(const SoMFString &f) constRÀV¨V6 :€9€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).g3VVV4 8€f€T”A‚S~‚AãXíÊ€‰ƒ‚ƒ‚ÿSbString *startEditing()voidfinishEditing()z5¨V‰VE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}AVV< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.9‰V?V1Ñý«W­?VoVD‚VSoMFTime0 VoV% €€ˆˆ€‚ÿSoMFTime*?V™V# €€€‚ÿNAMEwKoVV, (€–€”‘€€€€‚ÿSoMFTime - multiple-value field containing any number of SbTime values3™VCV# € €€‚ÿINHERITS FROMj)V­VA R€R€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFTime2 CVßV& €€€€ ‚ÿSYNOPSISlE­VKV' €Š€”‘€€‚‚ÿ#include Methods from class SoMFTime:,¯ßVw V} È€_€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ã4a†6‰ƒ‚ã4a†6‰ƒ‚ƒã4a†6‰ã‘¶p6‰‚ƒã4a†6‰‚ƒã4a†6‰‚ã4a†6‰ƒã4a†6‰‚ƒã4a†6‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbTime &operator [](int i) constconst SbTime *getValues(int start) constintfind(const SbTime & targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const SbTime *newValues)voidset1Value(int index,const SbTime &newValue)const SbTime &operator =(const SbTime &newValue)voidsetValue(const SbTime &newValue)̇KVC VE X€€T”A‚S~‚A€ƒã–{Ö´‰‚ƒã–{Ö´‰‚ã4a†6‰ƒ‚ƒ‚ÿintoperator ==(const SoMFTime &f) constintoperator !=(const SoMFTime &f) constSbTime *startEditing()voidfinishEditing()P!w V“ V/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êC VÄ VG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O “ V V/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!Ä V4V‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P Vÿ@Vo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() 4Vÿ@VVconstSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const44V3AV& €€‚A€‚ÿDESCRIPTIONuFÿ@V¨AV/ .€Œ€”‘€‚A€€€‚ÿA multiple-value field that contains any number of SbTime values.÷Ê3AVŸBV- (€•€”‘€‚A€€‚ÿSoMFTimes are written to file as one or more double-precision floating point values representing the length of time in seconds. Absolute times are measured relative to 00:00:00 GMT, January 1, 1970.¨¨AVGCV) "€þ€”‘€‚A€‚ÿWhen more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:I!ŸBVCV( €B€Ù€‚A€‚ÿ[ 1.0, 1345600.1200055, 99.8 ]+GCV»CV( €€Ù€‚A€‚ÿ0 CVëCV& €€‚A€‚ÿMETHODSvB»CVaDV4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHëCVÒDV) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.^,aDV0EV2 4€X€T”A‚S~‚A€ã4a†6‰ƒ‚ÿconst SbTime &operator [](int i) constÆŠÒDVöEV< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.`.0EVVFV2 4€\€T”A‚S~‚A€ã4a†6‰ƒ‚ÿconst SbTime *getValues(int start) constËöEV]GV< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.‚IVFVßGV9 B€’€T”A‚S~‚A€ƒã4a†6‰ã‘¶p6‰‚ÿintfind(const SbTime & targetValue,SbBool addIfNotFound = FALSE)#í]GVIV6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).t@ßGVvIV4 8€€€T”A‚S~‚A€ƒã4a†6‰‚ÿvoidsetValues(int start,int num,const SbTime *newValues)á¥IVWJV< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.i6vIVÀJV3 6€l€T”A‚S~‚A€ƒã4a†6‰‚ÿvoidset1Value(int index,const SbTime &newValue)nWJV]KV/ .€Ü€”‘€‚A€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary. `ÀJVýKV@ P€À€T”A‚S~‚A€ã4a†6‰ƒã4a†6‰‚ƒã4a†6‰‚ÿconst SbTime &operator =(const SbTime &newValue)voidsetValue(const SbTime &newValue)a]KVLV/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.’XýKVMV: D€°€T”A‚S~‚A€ƒã–{Ö´‰‚ƒã–{Ö´‰‚ÿintoperator ==(const SoMFTime &f) constintoperator !=(const SoMFTime &f) constRLVqNV6 :€9€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).e1MVÖNV4 8€b€T”A‚S~‚Aã4a†6€‰ƒ‚ƒ‚ÿSbTime *startEditing()voidfinishEditing()z5qNV\€VE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between sÖNV\€VVtartEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}AÖNVÙV< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.1 \€V ‚V& €€‚A€‚ÿSEE ALSO: ÙVD‚V/ .€€”‘€‚Aã4a†6€‰‚ÿSbTime; ‚V‚V12‚¬ ‰­‚V±‚V£ÌVSoMFUInt322 D‚V±‚V% €€ˆˆ€‚ÿSoMFUInt32*‚VÛ‚V# €€€‚ÿNAMEuO±‚VPƒV& €ž€”‘€€‚ÿSoMFUInt32 - multiple-value field containing any number of uint32_t integers3Û‚VƒƒV# € €€‚ÿINHERITS FROMl+PƒVïƒVA R€V€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFUInt322 ƒƒV!„V& €€€€ ‚ÿSYNOPSISpIïƒV‘„V' €’€”‘€€‚‚ÿ#include Methods from class SoMFUInt32:8Û!„VɆV] ˆ€·€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒãŽmç)‰‚ƒãŽmç)‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constuint32_toperator[](int i) constconst uint32_t *getValues(int start) constintfind(uint32_t targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const uint32_t *newValues)voidset1Value(int index,uint32_t newValue)uint32_toperator =(uint32_t newValue)voidsetValue(uint32_t newValue)intoperator ==(const SoMFUInt32 &f) constintoperator !=(const SoMFUInt32 &f) const_1‘„V(‡V. ,€b€T”A‚S~‚A€ƒ‚ƒ‚ÿuint32_t *startEditing()voidfinishEditing()P!ɆVx‡V/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1ê(‡V©ˆVG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O x‡VøˆV/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!©ˆV‹V‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PøˆVØŒVo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4‹V V& €€‚A€‚ÿDESCRIPTIONzQØŒV†V) "€¢€”‘€‚A€‚ÿA multiple-value field that contains any number of uint32_t (32-bit) integers.šn V ŽV, (€Ü€”‘€‚A€€‚ÿSoMFUInt32s are written to file as one or more uint32_t integers, in decimal, hexadecimal or octal format.¨†VÈŽV) "€þ€”‘€‚A€‚ÿWhen more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:A ŽV V( €2€Ù€‚A€‚ÿ[ 17, 0xFFFFE0, 0755 ]+ÈŽV4V( €€Ù€‚A€‚ÿ0 VdV& €€‚A€‚ÿMETHODSvB4VÚV4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHdVWÀV) "€€”‘€‚A€ÚVWÀVD‚V‚ÿReturns the type for this class or a particular object of this class.O#ÚV¦ÀV, (€F€T”A‚S~‚A€ƒ‚ÿuint32_toperator[](int i) const¶†WÀV\ÁV0 .€ €”‘€‚A€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.Z.¦ÀV¶ÁV, (€\€T”A‚S~‚A€ƒ‚ÿconst uint32_t *getValues(int start) constÿÉ\ÁVµÂV6 :€“€”‘€‚A€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.tA¶ÁV)ÃV3 6€‚€T”A‚S~‚A€ƒã‘¶p6‰‚ÿintfind(uint32_t targetValue,SbBool addIfNotFound = FALSE)éµÂV<ÄV* "€Ó€”‘€‚A€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).n@)ÃVªÄV. ,€€€T”A‚S~‚A€ƒ‚ÿvoidsetValues(int start,int num,const uint32_t *newValues)Ì¢<ÄVvÅV* "€E€”‘€‚A€‚ÿSets num values starting at index start to the values in newValues. The array will be automatically be made larger to accommodate the new values, if necessary.\/ªÄVÒÅV- *€^€T”A‚S~‚A€ƒ‚ÿvoidset1Value(int index,uint32_t newValue)•lvÅVgÆV) "€Ø€”‘€‚A€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.xJÒÅVßÆV. ,€”€T”A‚S~‚A€ƒ‚ƒ‚ÿuint32_toperator =(uint32_t newValue)voidsetValue(uint32_t newValue)ˆ_gÆVgÇV) "€¾€”‘€‚A€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.–\ßÆVýÇV: D€¸€T”A‚S~‚A€ƒãŽmç)‰‚ƒãŽmç)‰‚ÿintoperator ==(const SoMFUInt32 &f) constintoperator !=(const SoMFUInt32 &f) constQgÇVNÉV6 :€7€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example)._1ýÇV­ÉV. ,€b€T”A‚S~‚A€ƒ‚ƒ‚ÿuint32_t *startEditing()voidfinishEditing()y4NÉV&ËVE X€i€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc).}A­ÉV£ÌV< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.: &ËVÝÌV1] W­t®ÝÌVÍVFWSoMFULong1 £ÌVÍV% €€ˆˆ€‚ÿSoMFULong*ÝÌV8ÍV# €€€‚ÿNAMEK%ÍVƒÍV& €J€”‘€€‚ÿSoMFULong - synonym for SoMFUInt3238ÍV¶ÍV# € €€‚ÿINHERITS FROMk*ƒÍV!ÎVA R€T€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFULong2 ¶ÍVSÎV& €€€€ ‚ÿSYNOPSISvI!ÎVÉÎV- *€’€”‘€€‚ã5É´‰‚ÿ#include Methods from class SoMField:Z SÎV/WO l€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ãB-9‰ƒ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)ÉÎV/W£ÌVstatic SoTypegetClassTypeId()O ÉÎV~W/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:I²/WÇW— ü€e€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãþ —‰‚ƒãþ —‰‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SoTypegetTypeId() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)intoperator ==(const SoField &f) constintoperator !=(const SoField &f) constvoidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)&¥~WíW ЀK€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿvoiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() constSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4ÇW!W& €€‚A€‚ÿDESCRIPTION%ïíWFW6 :€ß€”‘€‚A€€€€€‚ÿThis class is obsolete, and is provided for backwards compatibility only. You should use the new SoMFUInt32 class instead. If you compile your code -DIV_STRICT, #including the SoMFULong.h header file will cause a compile-time error.; !WW1è ‰­A¯W³WŒWSoMFUShort2 FW³W% €€ˆˆ€‚ÿSoMFUShort*WÝW# €€€‚ÿNAME{U³WXW& €ª€”‘€€‚ÿSoMFUShort - multiple-value field containing any number of unsigned short integers3ÝW‹W# € €€‚ÿINHERITS FROMl+XW÷WA R€V€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFUShort2 ‹W)W& €€€€ ‚ÿSYNOPSISpI÷W™W' €’€”‘€€‚‚ÿ#include Methods from class SoMFUShort:4ß)WÍ WU x€¿€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã@²é+‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constunsigned shortoperator [](int i) constconst unsigned short *getValues(int start) constintfind(unsigned short targetValue,SbBool addIfNotFound = FALSE)voidsetValues(int start,int num,const unsigned short *newValues)voidset1Value(int index,unsigned short newValue)unsigned shortoperator =(unsigned short newValue)voidsetValue(unsigned short newValue)intoperator ==(const SoMFUShort &f) constšd™Wg W6 <€È€T”A‚S~‚A€ƒã@²é+‰‚ƒ‚ƒ‚ÿintoperator !=(const SoMFUShort &f) constunsigned short *startEditing()voidfinishEditing()P!Í W· W/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êg Wè WG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O · W7 W/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!è WXW‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P7 W#AWo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) conXW#AWFWstSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4XWWAW& €€‚A€‚ÿDESCRIPTIONwN#AWÎAW) "€œ€”‘€‚A€‚ÿA multiple-value field that contains any number of unsigned short integers.[.WAW)CW- (€]€”‘€‚A€€‚ÿSoMFUShorts are written to file as one or more unsigned short integer values, represented as decimal, hexadecimal (beginning with '0x') or octal (beginning with '0') values. When more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:;ÎAWdCW( €&€Ù€‚A€‚ÿ[ 7, 0xFF, 033 ]+)CWCW( €€Ù€‚A€‚ÿ0 dCW¿CW& €€‚A€‚ÿMETHODSvBCW5DW4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH¿CW¦DW) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.V*5DWüDW, (€T€T”A‚S~‚A€ƒ‚ÿunsigned shortoperator [](int i) constÆŠ¦DWÂEW< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.`4üDW"FW, (€h€T”A‚S~‚A€ƒ‚ÿconst unsigned short *getValues(int start) constËÂEW)GW< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.zG"FW£GW3 6€Ž€T”A‚S~‚A€ƒã‘¶p6‰‚ÿintfind(unsigned short targetValue,SbBool addIfNotFound = FALSE)#í)GWÆHW6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).tF£GW:IW. ,€Œ€T”A‚S~‚A€ƒ‚ÿvoidsetValues(int start,int num,const unsigned short *newValues)á¥ÆHWJW< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.b5:IW}JW- *€j€T”A‚S~‚A€ƒ‚ÿvoidset1Value(int index,unsigned short newValue)¥pJW"KW5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.Š\}JW¬KW. ,€¸€T”A‚S~‚A€ƒ‚ƒ‚ÿunsigned shortoperator =(unsigned short newValue)voidsetValue(unsigned short newValue)a"KW SoMField > SoMFVec2f2 ΂WkƒW& €€€€ ‚ÿSYNOPSISnG9ƒWÙƒW' €Ž€”‘€€‚‚ÿ#include Methods from class SoMFVec2f:´kƒWñ…Wd –€i€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ƒ‚ã}ƒõ(‰ƒ‚ã}ƒõ(‰ƒ‚ƒã}ƒõ(‰ã‘¶p6‰‚ÿvoidsetValues(int start,int num,const float xy[][2])voidset1Value(int index,float x,float y)voidset1Value(int index,const float xy[2])voidsetValue(float x,float y)voidsetValue(const float xy[2])static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbVec2f &operator [](int i) constconst SbVec2f *getValues(int start) constintfind(const SbVec2f & targetValue,SbBool addIfNotFound = FALSE) ÙƒWˆWw ¼€A€T”A‚S~‚A€ƒã}ƒõ(‰‚ƒã{ƒõ(‰‚ƒã}ƒõ(‰‚ƒã{ƒõ(‰‚ã}ƒõ(‰ƒã}ƒõ(‰‚ƒã}ƒõ(‰‚ƒã{ƒõ(‰‚ƒãóñi`‰‚ÿvoidsetValues(int start,int num,const SbVec2f *newValues)voidsetValues(int start,int num,const SbVec2d *newValues)voidset1Value(int index,const SbVec2f &newValue)voidset1Value(int index,const SbVec2d &newValue)const SbVec2f &operator =(const SbVec2f &newValue)voidsetValue(const SbVec2f &newValue)voidsetValue(const SbVec2d &newValue)intoperator ==(const SoMFVec2f &f) constš^ñ…W¢ˆW< H€¼€T”A‚S~‚A€ƒãóñi`‰‚ã}ƒõ(‰ƒ‚ƒ‚ÿintoperator !=(const SoMFVec2f &f) constSbVec2f *startEditing()voidfinishEditing()P!ˆWòˆW/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1ꢈW#ŠWG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O òˆWrŠW/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!#ŠW“ŒW‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PrŠWRŽWo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4“ŒW†ŽW& €€‚A€‚ÿDESCRIPTIONwNRŽWýŽW) "€œ€”‘€‚A€‚ÿA multiple-value field that contains any number of two-dimensional vectors.憎WÀW- (€Í€”‘€‚A€€‚ÿSoMFVec2fs are written to file as one or more pairs of floating point values separated by whitespace. When more than one value is present, all of the values are enclosed in square brackets and separated by commasýŽWÀWŒW; for example:FýŽWbÀW( €<€Ù€‚A€‚ÿ[ 0 0, 1.2 3.4, 98.6 -4e1 ]+ÀWÀW( €€Ù€‚A€‚ÿ0 bÀW½ÀW& €€‚A€‚ÿMETHODSh:ÀW%ÁW. ,€t€T”A‚S~‚A€ƒ‚ÿvoidsetValues(int start,int num,const float xy[][2])À„½ÀWåÁW< F€ €”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the given floating point values. There must be num*2 values in the passed array.Œ[%ÁWqÂW1 2€¶€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidset1Value(int index,float x,float y)voidset1Value(int index,const float xy[2])n?åÁWßÂW/ .€~€”‘€‚A€€€‚ÿSet the index'th value to the given floating point values.rCqÂWQÃW/ .€†€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetValue(float x,float y)voidsetValue(const float xy[2])¬‚ßÂWýÃW* "€€”‘€‚A€‚ÿSets the field to contain the given value and only the given value (if the array had multiple values before, they are deleted).vBQÃWsÄW4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHýÃWäÄW) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class._-sÄWCÅW2 4€Z€T”A‚S~‚A€ã}ƒõ(‰ƒ‚ÿconst SbVec2f &operator [](int i) constÆŠäÄW ÆW< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.a/CÅWjÆW2 4€^€T”A‚S~‚A€ã}ƒõ(‰ƒ‚ÿconst SbVec2f *getValues(int start) constÿÉ ÆWiÇW6 :€“€”‘€‚A€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.ƒJjÆWìÇW9 B€”€T”A‚S~‚A€ƒã}ƒõ(‰ã‘¶p6‰‚ÿintfind(const SbVec2f & targetValue,SbBool addIfNotFound = FALSE)#íiÇWÉW6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).uAìÇW„ÉW4 8€‚€T”A‚S~‚A€ƒã}ƒõ(‰‚ÿvoidsetValues(int start,int num,const SbVec2f *newValues)á¥ÉWeÊW< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.uA„ÉWÚÊW4 8€‚€T”A‚S~‚A€ƒã{ƒõ(‰‚ÿvoidsetValues(int start,int num,const SbVec2d *newValues)±ueÊW‹ÌW< F€ë€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues, an array of double precision values. The array will automatically be made larger to accommodate the new values, if necessary. Note that Open Inventor fields still store only single precision values, not double precision values. The specified values are converted to single precision, then stored.j7ÚÊWõÌW3 6€n€T”A‚S~‚A€ƒã}ƒõ(‰‚ÿvoidset1Value(int index,const SbVec2f &newValue)¥p‹ÌWšÍW5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.j7õÌWÎW3 6€n€T”A‚S~‚A€ƒã{ƒõ(‰‚ÿvoidset1Value(int index,const SbVec2d &newValue)j4šÍWnÏW6 :€i€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue, a double precision vectpr. The array will be automatically expanded, if necessary. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.£cÎWX@ P€Æ€T”A‚S~‚A€ã}ƒõ(‰ƒã}ƒõ(‰‚ƒã}ƒõ(‰‚ÿconst SbVec2f &operator =(const SbVec2f &newValue)voidsetValue(const SbVenÏWXŒWc2f &newValue)anÏW­X/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.]+X X2 4€V€T”A‚S~‚A€ƒã{ƒõ(‰‚ÿvoidsetValue(const SbVec2d &newValue)U%­X_X0 .€K€”‘€‚A€€€‚ÿSets the first value in the array to newValue, a double precision vector, and deletes the second and subsequent values. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.”Z XóX: D€´€T”A‚S~‚A€ƒãóñi`‰‚ƒãóñi`‰‚ÿintoperator ==(const SoMFVec2f &f) constintoperator !=(const SoMFVec2f &f) constR_XEX6 :€9€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).f2óX«X4 8€d€T”A‚S~‚Aã}ƒõ(€‰ƒ‚ƒ‚ÿSbVec2f *startEditing()voidfinishEditing()z5EX%XE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}A«X¢X< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.: %XÜX1e&A¯˜ ± ÜX X!ŽXSoMFVec3f1 ¢X X% €€ˆˆ€‚ÿSoMFVec3f*ÜX7X# €€€‚ÿNAME|V X³X& €¬€”‘€€‚ÿSoMFVec3f - multiple-value field containing any number of three-dimensional vectors37XæX# € €€‚ÿINHERITS FROMk*³XQ XA R€T€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFVec3f2 æXƒ X& €€€€ ‚ÿSYNOPSISnGQ Xñ X' €Ž€”‘€€‚‚ÿ#include Methods from class SoMFVec3f:/Ƀ X Xf š€“€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒ‚ƒã¨ƒõ(‰ã‘¶p6‰‚ÿvoidsetValues(int start,int num,const float xyz[][3])voidset1Value(int index,float x,float y,float z)voidset1Value(int index,const float xyz[3])voidsetValue(float x,float y,float z)voidsetValue(const float xyz[3])static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbVec3f &operator [](int i) constconst SbVec3f *getValues(int start) constintfind(const SbVec3f & targetValue,SbBool addIfNotFound = FALSE) ñ X7Xw ¼€A€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒã¦ƒõ(‰‚ƒã¨ƒõ(‰‚ƒã¦ƒõ(‰‚㨃õ(‰ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰‚ƒã¦ƒõ(‰‚ƒãòi`‰‚ÿvoidsetValues(int start,int num,const SbVec3f *newValues)voidsetValues(int start,int num,const SbVec3d *newValues)voidset1Value(int index,const SbVec3f &newValue)voidset1Value(int index,const SbVec3d &newValue)const SbVec3f &operator =(const SbVec3f &newValue)voidsetValue(const SbVec3f &newValue)voidsetValue(const SbVec3d &newValue)intoperator ==(const SoMFVec3f &f) constš^ XÑX< H€¼€T”A‚S~‚A€ƒãòi`‰‚㨃õ(‰ƒ‚ƒ‚ÿintoperator !=(const SoMFVec3f &f) constSbVec3f *startEditing()voidfinishEditing()P!7X!X/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êÑX^@XG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(i!X^@X¢Xnt index,const char *valueString)voidget1(int index,SbString &valueString)O !X­@X/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!^@XÎBX‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P­@XDXo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4ÎBXÁDX& €€‚A€‚ÿDESCRIPTIONyPDX:EX) "€ €”‘€‚A€‚ÿA multiple-value field that contains any number of three-dimensional vectors.—kÁDXÑEX, (€Ö€”‘€‚A€€‚ÿSoMFVec3fs are written to file as one or more triples of floating point values separated by whitespace.¨:EXyFX) "€þ€”‘€‚A€‚ÿWhen more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:P(ÑEXÉFX( €P€Ù€‚A€‚ÿ[ 0 0 0, 1.2 3.4 5.6, 98.6 -4e1 212 ]+yFXôFX( €€Ù€‚A€‚ÿ0 ÉFX$GX& €€‚A€‚ÿMETHODSi;ôFXGX. ,€v€T”A‚S~‚A€ƒ‚ÿvoidsetValues(int start,int num,const float xyz[][3])À„$GXMHX< F€ €”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the given floating point values. There must be num*3 values in the passed array.—eGXäHX2 4€Ê€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidset1Value(int index,float x,float y,float z)voidset1Value(int index,const float xyz[3])n?MHXRIX/ .€~€”‘€‚A€€€‚ÿSet the index'th value to the given floating point values.}MäHXÏIX0 0€š€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetValue(float x,float y,float z)voidsetValue(const float xyz[3])¬‚RIX{JX* "€€”‘€‚A€‚ÿSets the field to contain the given value and only the given value (if the array had multiple values before, they are deleted).vBÏIXñJX4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH{JXbKX) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class._-ñJXÁKX2 4€Z€T”A‚S~‚A€㨃õ(‰ƒ‚ÿconst SbVec3f &operator [](int i) constÆŠbKX‡LX< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.a/ÁKXèLX2 4€^€T”A‚S~‚A€㨃õ(‰ƒ‚ÿconst SbVec3f *getValues(int start) constˇLXïMX< F€—€”‘€‚A€€€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.ƒJèLXrNX9 B€”€T”A‚S~‚A€ƒã¨ƒõ(‰ã‘¶p6‰‚ÿintfind(const SbVec3f & targetValue,SbBool addIfNotFound = FALSE)#íïMX•OX6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).uArNX€X4 8€‚€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidsetValues(int start,int num,const SbVec3f *ne•OX€X¢XwValues)ᥕOX÷€X< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.uA€XlX4 8€‚€T”A‚S~‚A€ƒã¦ƒõ(‰‚ÿvoidsetValues(int start,int num,const SbVec3d *newValues)²v÷€XƒX< F€í€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues, an array of double precision vectors. The array will automatically be made larger to accommodate the new values, if necessary .Note that Open Inventor fields still store only single precision values, not double precision values. The specified values are converted to single precision, then stored.j7lXˆƒX3 6€n€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidset1Value(int index,const SbVec3f &newValue)¥pƒX-„X5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.j7ˆƒX—„X3 6€n€T”A‚S~‚A€ƒã¦ƒõ(‰‚ÿvoidset1Value(int index,const SbVec3d &newValue)j4-„X†X6 :€i€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue, a double precision vector. The array will be automatically expanded, if necessary. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.£c—„X¤†X@ P€Æ€T”A‚S~‚A€㨃õ(‰ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰‚ÿconst SbVec3f &operator =(const SbVec3f &newValue)voidsetValue(const SbVec3f &newValue)‘b†X5‡X/ .€Ä€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values. ]+¤†X’‡X2 4€V€T”A‚S~‚A€ƒã¦ƒõ(‰‚ÿvoidsetValue(const SbVec3d &newValue)U%5‡XçˆX0 .€K€”‘€‚A€€€‚ÿSets the first value in the array to newValue, a double precision vector, and deletes the second and subsequent values. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.”Z’‡X{‰X: D€´€T”A‚S~‚A€ƒãòi`‰‚ƒãòi`‰‚ÿintoperator ==(const SoMFVec3f &f) constintoperator !=(const SoMFVec3f &f) constIçˆXÄŠX6 :€'€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) the given field. If the fields are different types, FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).f2{‰X*‹X4 8€d€T”A‚S~‚A㨃õ(€‰ƒ‚ƒ‚ÿSbVec3f *startEditing()voidfinishEditing()z5ÄŠX¤ŒXE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}A*‹X!ŽX< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.: ¤ŒX[ŽX1ó&Ï°Ò‡¶ [ŽXŒŽXåDYSoMFVec4f1 !ŽXŒŽX% €€ˆˆ€‚ÿSoMFVec4f*[ŽX¶ŽX# €€€‚ÿNAME{UŒŽX1X& €ª€”‘€€‚ÿSoMFVec4f - multiple-value field containing any number of four-dimensional vectors3¶ŽXdX# € €€‚ÿINHERITS FROMk*1XÏXA R€T€”‘€ãþ —€‰€ã5É´€‰€€€‚ÿSoField > SoMField > SoMFVec4f2 dX ÀX& €€€€ ‚ÿSYNOPSISÏX ÀX!ŽXnGÏX{ÀX' €Ž€”‘€€‚‚ÿ#include Methods from class SoMFVec4f:FÞ ÀXÁÂXh ž€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ƒ‚ãÓƒõ(‰ƒ‚ãÓƒõ(‰ƒ‚ƒãÓƒõ(‰ã‘¶p6‰‚ÿvoidsetValues(int start,int num,const float xyzw[][4])voidset1Value(int index,float x,float y,float z,float w)voidset1Value(int index,const float xyzw[4])voidsetValue(float x,float y,float z,float w)voidsetValue(const float xyzw[4])static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbVec4f &operator [](int i) constconst SbVec4f *getValues(int start) constintfind(const SbVec4f & targetValue,SbBool addIfNotFound = FALSE) {ÀXØÄXw ¼€A€T”A‚S~‚A€ƒãÓƒõ(‰‚ƒãуõ(‰‚ƒãÓƒõ(‰‚ƒãуõ(‰‚ãÓƒõ(‰ƒãÓƒõ(‰‚ƒãÓƒõ(‰‚ƒãуõ(‰‚ƒãIòi`‰‚ÿvoidsetValues(int start,int num,const SbVec4f *newValues)voidsetValues(int start,int num,const SbVec4d *newValues)voidset1Value(int index,const SbVec4f &newValue)voidset1Value(int index,const SbVec4d &newValue)const SbVec4f &operator =(const SbVec4f &newValue)voidsetValue(const SbVec4f &newValue)voidsetValue(const SbVec4d &newValue)intoperator ==(const SoMFVec4f &f) constš^ÁÂXrÅX< H€¼€T”A‚S~‚A€ƒãIòi`‰‚ãÓƒõ(‰ƒ‚ƒ‚ÿintoperator !=(const SoMFVec4f &f) constSbVec4f *startEditing()voidfinishEditing()P!ØÄXÂÅX/ .€B€”‘€‚A€ã5É´‰‚ÿMethods from class SoMField:1êrÅXóÆXG \€Õ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)O ÂÅXBÇX/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!óÆXcÉX‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PBÇX"ËXo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4cÉXVËX& €€‚A€‚ÿDESCRIPTIONxO"ËXÎËX) "€ž€”‘€‚A€‚ÿA multiple-value field that contains any number of four-dimensional vectors.šnVËXhÌX, (€Ü€”‘€‚A€€‚ÿSoMFVec4fs are written to file as one or more quadruples of floating point values separated by whitespace.¨ÎËXÍX) "€þ€”‘€‚A€‚ÿWhen more than one value is present, all of the values are enclosed in square brackets and separated by commas; for example:V.hÌXfÍX( €\€Ù€‚A€‚ÿ[ 0 0 0 1, 1.2 3.4 5.6 1, 98.6 -4e1 212 1 ]+ÍX‘ÍX( €€Ù€‚A€‚ÿ0 fÍXÁÍX& €€‚A€‚ÿMETHODSj<‘ÍX+ÎX. ,€x€T”A‚S~‚A€ƒ‚ÿvoidsetValues(int start,int num,const float xyzw[][4])À„ÁÍXëÎX< F€ €”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the given floating point values. There must be num*4 values in the passed array.¢o+ÎXÏX3 6€Þ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidset1Value(int index,float x,float y,float z,float w)voidset1Value(int index,const float xyzw[4])n?ëÎX Y/ .€~€”‘€‚A€€€‚ÿSet the index'th value to the given floating point values.ÏX Y!ŽXˆWÏX”Y1 2€®€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetValue(float x,float y,float z,float w)voidsetValue(const float xyzw[4])¬‚ Y@Y* "€€”‘€‚A€‚ÿSets the field to contain the given value and only the given value (if the array had multiple values before, they are deleted).vB”Y¶Y4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH@Y'Y) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class._-¶Y†Y2 4€Z€T”A‚S~‚A€ãÓƒõ(‰ƒ‚ÿconst SbVec4f &operator [](int i) constÆŠ'YLY< F€€”‘€‚A€€€€€€€‚ÿReturns the i'th value of the field. Indexing past the end of the field (passing in i greater than getNum()) will return garbage.a/†Y­Y2 4€^€T”A‚S~‚A€ãÓƒõ(‰ƒ‚ÿconst SbVec4f *getValues(int start) constÿÉLY¬Y6 :€“€”‘€‚A€€€€€‚ÿReturns a pointer into the array of values in the field, starting at index start. The values are read-only; see the startEditing()/finishEditing() methods for a way of modifying values in place.ƒJ­Y/Y9 B€”€T”A‚S~‚A€ƒãÓƒõ(‰ã‘¶p6‰‚ÿintfind(const SbVec4f & targetValue,SbBool addIfNotFound = FALSE)#í¬YRY6 :€Û€”‘€‚A€€€€€‚ÿFinds the given value in the array and returns the index of that value in the array. If the value is not found, -1 is returned. If addIfNotFound is set, then targetValue is added to the end of the array (but -1 is still returned).uA/YÇY4 8€‚€T”A‚S~‚A€ƒãÓƒõ(‰‚ÿvoidsetValues(int start,int num,const SbVec4f *newValues)á¥RY¨Y< F€K€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues. The array will automatically be made larger to accommodate the new values, if necessary.uAÇYY4 8€‚€T”A‚S~‚A€ƒãуõ(‰‚ÿvoidsetValues(int start,int num,const SbVec4d *newValues)²v¨YÏ Y< F€í€”‘€‚A€€€€€€€‚ÿSets num values starting at index start to the values in newValues, an array of double precision vectors. The array will automatically be made larger to accommodate the new values, if necessary. Note that Open Inventor fields still store only single precision values, not double precision values. The specified values are converted to single precision, then stored.j7Y9 Y3 6€n€T”A‚S~‚A€ƒãÓƒõ(‰‚ÿvoidset1Value(int index,const SbVec4f &newValue)¥pÏ YÞ Y5 :€à€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue. The array will be automatically expanded, if necessary.j79 YH Y3 6€n€T”A‚S~‚A€ƒãуõ(‰‚ÿvoidset1Value(int index,const SbVec4d &newValue)j4Þ Y² Y6 :€i€”‘€‚A€€€€€‚ÿSets the index'th value in the array to newValue, a double precision vector. The array will be automatically expanded, if necessary. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.£cH YU Y@ P€Æ€T”A‚S~‚A€ãÓƒõ(‰ƒãÓƒõ(‰‚ƒãÓƒõ(‰‚ÿconst SbVec4f &operator =(const SbVec4f &newValue)voidsetValue(const SbVec4f &newValue)a² Yå Y/ .€Â€”‘€‚A€€€‚ÿSets the first value in the array to newValue, and deletes the second and subsequent values.]+U YBY2 4€V€T”A‚S~‚A€ƒãуõ(‰‚ÿvoidsetValue(const SbVec4d &newValue)U%å Y—Y0 .€K€”‘€‚A€€€‚ÿSets the first value in the array to newValue, a double precision vector, and deletes the second and subsequent values. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.”ZBY7@Y: D€´€T”A‚S~‚A€ƒãIòi`‰‚ƒãIòi`‰‚ÿintoperator ==(const SoMFVec4f &f) constin—Y7@Y!ŽXtoperator !=(const SoMFVec4f &f) constQ—YˆAY6 :€7€”‘€‚A€€€€€‚ÿReturns TRUE if all of the values of this field equal (do not equal) those of the given field. If the fields are different types FALSE will always be returned (even if one field is an SoMFFloat with one value of 1.0 and the other is an SoMFInt with a value of 1, for example).f27@YîAY4 8€d€T”A‚S~‚AãÓƒõ(€‰ƒ‚ƒ‚ÿSbVec4f *startEditing()voidfinishEditing()z5ˆAYhCYE X€k€”‘€‚A€€€€€€€€€€‚ÿstartEditing() returns a pointer to the internally-maintained array that can be modified. The values in the array may be changed, but values cannot be added or removed. It is illegal to call any other editing methods between startEditing() and finishEditing() (e.g. set1Value(), setValue(), etc.).}AîAYåDY< F€ƒ€”‘€‚A€€€€€€€‚ÿFields, engines or sensors connected to this field and sensors are not notified that this field has changed until finishEditing() is called. Calling finishEditing() always sets the isDefault() flag to FALSE and informs engines and sensors that the field changed, even if none of the values actually were changed.9hCYEY1VA¢Z£ EYNEY{YSoMField0 åDYNEY% €€ˆˆ€‚ÿSoMField*EYxEY# €€€‚ÿNAME]7NEYÕEY& €n€”‘€€‚ÿSoMField - base class for all multiple-valued fields3xEYFY# € €€‚ÿINHERITS FROMOÕEYWFY5 :€4€”‘€ãþ —€‰€€€‚ÿSoField > SoMField2 FY‰FY& €€€€ ‚ÿSYNOPSISkDWFYôFY' €ˆ€”‘€€‚‚ÿ#include Methods from class SoMField:Z ‰FYNHYO l€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒãXíʉ‚ãB-9‰ƒ‚ÿintgetNum() constvoidsetNum(int num)virtual voiddeleteValues(int start,int num = -1)virtual voidinsertSpace(int start,int num)SbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)static SoTypegetClassTypeId()O ôFYHY/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:I²NHYæJY— ü€e€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãþ —‰‚ƒãþ —‰‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SoTypegetTypeId() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)intoperator ==(const SoField &f) constintoperator !=(const SoField &f) constvoidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)&¥HY MY ЀK€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿvoiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() constSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4æJY@MY& €€‚A€‚ÿDESCRIPTIONÇ MYCOY< F€€”‘€‚A€€€€€€€‚ÿEach class derived from SoMField begins with an SoMF prefix and contains a dynamic array of values of a particular type. Each has a setValues() method that is passed a pointer to a const array of values of the correct type; these values are copied into the array in the field, making extra room in the array if necessary. The start and num parameters to this method indicate the starting array index to copy into and the number of values to copy.öÆ@MYE€Y0 .€€”‘€‚A€€€‚ÿThe getValues() method for a multiple-value field returns a const pointer to the array of values in the field. (Because this pointer is coCOYE€YåDYnst, it cannot be used to change values in this array.)ì¼COY1Y0 .€y€”‘€‚A€€€‚ÿIn addition, the indexing operator "[ ]" is overloaded to return the i'th value in the array; because it returns a const reference, it can be used only to get values, not to set them.³‰E€YäY* "€€”‘€‚A€‚ÿMethods are provided for getting the number of values in the field, inserting space for new values in the middle, and deleting values.¹1Y‚Y* "€€”‘€‚A€‚ÿThere are other methods that allow you to set only one value of several in the field and to set the field to contain one and only one value. ÓäY¦„Y6 :€§€”‘€‚A€€€€€‚ÿTwo other methods can be used to make several changes to a multiple-value field without the overhead of copying values into and out of the fields. The startEditing() method returns a non-const pointer to the array of values in the field; this pointer can then be used to change (but not add or remove) any values in the array. The finishEditing() method indicates that the editing is done and notifies any sensors or engines that may be connected to the field.º‡‚Y`†Y3 4€€”‘€‚A€€€€‚ÿSoMFields are written to file as a series of values separated by commas, all enclosed in square brackets. If the field has no values (getNum() returns zero), then only the square brackets ("[ ]") are written. The last value may optionally be followed by a comma. Each field subtype defines how the values are written; for example, a field whose values are integers might be written as:9¦„Y™†Y( €"€Ù€‚A€‚ÿ[ 1, 2, 3, 4 ]+`†YĆY( €€Ù€‚A€‚ÿ/™†Yó†Y) "€ €”‘€‚A€‚ÿor::ĆY-‡Y( €$€Ù€‚A€‚ÿ[ 1, 2, 3, 4, ]+ó†YX‡Y( €€Ù€‚A€‚ÿ0 -‡Yˆ‡Y& €€‚A€‚ÿMETHODSAX‡YɇY, (€*€T”A‚S~‚A€ƒ‚ÿintgetNum() const`7ˆ‡Y)ˆY) "€n€”‘€‚A€‚ÿReturns the number of values currently in the field.CɇYlˆY, (€.€T”A‚S~‚A€ƒ‚ÿvoidsetNum(int num)Œ])ˆYøˆY/ .€º€”‘€‚A€€€‚ÿForces this field to have exactly num values, inserting or deleting values as necessary.b5lˆYZ‰Y- *€j€T”A‚S~‚A€ƒ‚ÿvirtual voiddeleteValues(int start,int num = -1)ï‰øˆYI‹Yf š€€”‘€‚A€€€€€€€€€€€€€€€€€€€€€‚ÿDeletes num values beginning at index start (index start through start+num-1 will be deleted, and any leftover values will be moved down to fill in the gap created). A num of -1 means delete all values from start to the last value in the field; getNum() will return start as the number of values in the field after this operation (deleteValues(0, -1) empties the field).`0Z‰Y©‹Y0 0€`€T”A‚S~‚A€ƒ€‚ÿvirtual voidinsertSpace(int start,int num))ÛI‹YÒŒYN j€·€”‘€‚A€€€€€€€€€€€€€‚ÿInserts space for num values at index start. Index start through start+num-1 will be moved up to make room. For example, to make room for 7 new values at the beginning of the field call insertSpace(0, 7).žb©‹YpY< H€Ä€T”A‚S~‚A㑶p6€‰ƒ‚ƒãXíʉ‚ÿSbBoolset1(int index,const char *valueString)voidget1(int index,SbString &valueString)Õ“ÒŒYEŽYB R€'€”‘€‚A€€€€€€€€€‚ÿThese are equivalent to the set() and get() methods of SoField, but they operate on only one value. See the SoField methods for details.U#pYšŽY2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()\3EŽYöŽY) "€f€”‘€‚A€‚ÿReturn the type identifier for this field class.1 šŽY'Y& €€‚A€‚ÿSEE ALSOTöŽY{Y; F€2€”‘€‚Aã’n%9€‰€ãú­Np€‰‚ÿSoNode, SoEngine< 'Y·Y17)7‡”O„´ ·Y ÀYcHZSoMarkerSet3{Y ÀY% €€ˆˆ€‚ÿSoMarkerSet·Y ÀY{Y*·Y6ÀY# €€€‚ÿNAMEƒ] ÀY¹ÀY& €º€”‘€€‚ÿSoMarkerSet - extension of PointSet that draws a small bitmap (symbol) at each 3D location36ÀYìÀY# € €€‚ÿINHERITS FROM ‹¹ÀYõÁY~ Ê€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ã¹êZY€‰€ã5ÖfE€‰€ã:"ÍÝ€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape > SoNonIndexedShape > SoPointSet > SoMarkerSet2 ìÀY'ÂY& €€€€ ‚ÿSYNOPSISP*õÁYwÂY& €T€”‘€€‚ÿ#include = v 'ÂY´ÎYÇ \í€T”A‚S~‚A€ƒ€€€€€€€€€€€€€€€€€€‚ÿenum MarkerType{5x5 markersSoMarkerSet::CROSS_5_5,SoMarkerSet::PLUS_5_5,SoMarkerSet::MINUS_5_5,SoMarkerSet::SLASH_5_5,SoMarkerSet::BACKSLASH_5_5,SoMarkerSet::BAR_5_5,SoMarkerSet::STAR_5_5,SoMarkerSet::Y_5_5,SoMarkerSet::LIGHTNING_5_5,SoMarkerSet::WELL_5_5,5x5 markers (line representation)SoMarkerSet::CIRCLE_LINE_5_5,SoMarkerSet::SQUARE_LINE_5_5,SoMarkerSet::DIAMOND_LINE_5_5,SoMarkerSet::TRIANGLE_LINE_5_5,SoMarkerSet::RHOMBUS_LINE_5_5,SoMarkerSet::HOURGLASS_LINE_5_5,SoMarkerSet::SATELLITE_LINE_5_5,SoMarkerSet::PINE_TREE_LINE_5_5,SoMarkerSet::CAUTION_LINE_5_5,SoMarkerSet::SHIP_LINE_5_5,5x5 markers (filled representation)SoMarkerSet::CIRCLE_FILLED_5_5,SoMarkerSet::SQUARE_FILLED_5_5,SoMarkerSet::DIAMOND_FILLED_5_5,SoMarkerSet::TRIANGLE_FILLED_5_5,SoMarkerSet::RHOMBUS_FILLED_5_5,SoMarkerSet::HOURGLASS_FILLED_5_5,SoMarkerSet::SATELLITE_FILLED_5_5,SoMarkerSet::PINE_TREE_FILLED_5_5,SoMarkerSet::CAUTION_FILLED_5_5,SoMarkerSet::SHIP_FILLED_5_5,7x7 markersSoMarkerSet::CROSS_7_7,SoMarkerSet::PLUS_7_7,SoMarkerSet::MINUS_7_7,SoMarkerSet::SLASH_7_7,SoMarkerSet::BACKSLASH_7_7,SoMarkerSet::BAR_7_7,SoMarkerSet::STAR_7_7,SoMarkerSet::Y_7_7,SoMarkerSet::LIGHTNING_7_7,SoMarkerSet::WELL_7_7,7x7 markers (line representation)SoMarkerSet::CIRCLE_LINE_7_7,SoMarkerSet::SQUARE_LINE_7_7,SoMarkerSet::DIAMOND_LINE_7_7,SoMarkerSet::TRIANGLE_LINE_7_7,SoMarkerSet::RHOMBUS_LINE_7_7,SoMarkerSet::HOURGLASS_LINE_7_7,SoMarkerSet::SATELLITE_LINE_7_7,SoMarkerSet::PINE_TREE_LINE_7_7,SoMarkerSet::CAUTION_LINE_7_7,SoMarkerSet::SHIP_LINE_7_7,7x7 markers (filled representation)SoMarkerSet::CIRCLE_FILLED_7_7,SoMarkerSet::SQUARE_FILLED_7_7,SoMarkerSet::DIAMOND_FILLED_7_7,SoMarkerSet::TRIANGLE_FILLED_7_7,SoMarkerSet::RHOMBUS_FILLED_7_7,SoMarkerSet::HOURGLASS_FILLED_7_7,SoMarkerSet::SATELLITE_FILLED_7_7,SoMarkerSet::PINE_TREE_FILLED_7_7,SoMarkerSet::CAUTION_FILLED_7_7,SoMarkerSet::SHIP_FILLED_7_7,9x9 markersSoMarkerSet::CROSS_9_9,SoMarkerSet::PLUS_9_9,SoMarkerSet::MINUS_9_9,SoMarkerSet::SLASH_9_9,SoMarkerSet::BACKSLASH_9_9,SoMarkerSet::BAR_9_9,SoMarkerSet::STAR_9_9,SoMarkerSet::Y_9_9,SoMarkerSet::LIGHTNING_9_9,SoMarkerSet::WELL_9_9,9x9 markers (line representation)SoMarkerSet::CIRCLE_LINE_9_9,SoMarkerSet::SQUARE_LINE_9_9,SoMarkerSet::DIAMOND_LINE_9_9,SoMarkerSet::TRIANGLE_LINE_9_9,SoMarkerSet::RHOMBUS_LINE_9_9,SoMarkerSet::HOURGLASS_LINE_9_9,SoMarkerSet::SATELLITE_LINE_9_9,SoMarkerSet::PINE_TREE_LINE_9_9,SoMarkerSet::CAUTION_LINE_9_9,SoMarkerSet::SHIP_LINE_9_9,9x9 markers (filled representation)SoMarkerSet::CIRCLE_FILLED_9_9,SoMarkerSet::SQUARE_FILLED_9_9,SoMarkerSet::DIAMOND_FILLED_9_9,SoMarkerSet::TRIANGLE_FILLED_9_9,SoMarkerSet::RHOMBUS_FILLED_9_9,SoMarkerSet::HOURGLASS_FILLED_9_9,SoMarkerSet::SATELLITE_FILLED_9_9,SoMarkerSet::PINE_TREE_FILLED_9_9,SoMarkerSet::CAUTION_FILLED_9_9,SoMarkerSet::SHIP_FILLED_9_9}J!wÂYþÎY) "€B€”‘€‚A€‚ÿFields from class SoMarkerSet:L´ÎYJÏY2 4€4€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32markerIndexQ"þÎY›ÏY/ .€D€”‘€‚A€ã:"Í݉‚ÿFields from class SoPointSet:JJÏY Z2 4€0€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32numPoints›ÏY Z{YX)›ÏYdZ/ .€R€”‘€‚A€ã5ÖfE‰‚ÿFields from class SoNonIndexedShape:K Z¯Z2 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32startIndexT%dZZ/ .€J€”‘€‚A€ã¹êZY‰‚ÿFields from class SoVertexShape:N¯ZQZ2 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyK"ZœZ) "€D€”‘€‚A€‚ÿMethods from class SoMarkerSet:ñƒQZZn ª€€T”A‚S~‚A€ƒ‚ƒ‚ƒãŠƒõ(‰ã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒãŠƒõ(‰ã‘¶p6‰‚㑶p6‰ƒ‚ãB-9‰ƒ‚ÿSoMarkerSet()static intgetNumDefinedMarkers()static voidaddMarker(int markerIndex,const SbVec2s &size,const unsigned char *bytes,SbBool isLSBFirst = TRUE,SbBool isUpToDown = TRUE)static SbBoolgetMarker(int markerIndex,SbVec2s &size,const unsigned char *&bytes,SbBool &isLSBFirst)static SbBoolremoveMarker(int markerIndex)static SoTypegetClassTypeId()NœZÛZ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ZWZn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÛZ¯Z/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØWZZ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¯ZœZ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NZêZ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞœZ! ZY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4êZU Z& €€‚A€‚ÿDESCRIPTION¶€! Z Z6 :€€”‘€‚A€€€€€‚ÿThis class draws a small bitmap at each 3D location of a Point Set. You set the bitmap to be drawn at each point using the field markerIndex, which indexes into the list of defined bitmaps. You can add your own bitmaps to this list with the addMarker() function. The color of each bitmap is determined from the materials in the state just as for SoPointSet, and can be indexed.Y0U Zd Z) "€`€”‘€‚A€‚ÿThe following markers are defined by default:6 Zš Z2 4€ €”‘€‚A€†"€,‚ÿ,d ZÆ Z) "€€”‘€‚A€‚ÿ/ š Zõ Z& €€‚A€‚ÿFIELDSLÆ ZA Z2 4€4€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32markerIndexW.õ Z˜ Z) "€\€”‘€‚A€‚ÿSpecifies the marker index (type of marker)0 A ZÈ Z& €€‚A€‚ÿMETHODS=˜ ZZ, (€"€T”A‚S~‚A€ƒ‚ÿSoMarkerSet()8È Z=Z) "€€”‘€‚A€‚ÿConstructor.P$ZZ, (€H€T”A‚S~‚A€ƒ‚ÿstatic intgetNumDefinedMarkers()P'=ZÝZ) "€N€”‘€‚A€‚ÿReturn the number of defined markers×”Z´ZC T€)€T”A‚S~‚A€ƒãŠƒõ(‰ã‘¶p6‰ã‘¶p6‰‚ÿstatic voidaddMarker(int markerIndex,const SbVec2s &size,const unsigned char *bytes,SbBool isLSBFirst = TRUE,SbBool isUpToDown = TRUE)…CÝZEAZB R€‡€”‘€‚A€€€€€€€€€‚ÿAdd a new´ZEAZ{Y marker with index markerIndex. If the marker exists, it is replaced. size is the size of the marker in pixels.bytes is the marker bitmap. The bitmaps are arranged rows by rows from left to right and down to up (or up to down according to the parameter isUpToDown. Each byte corresponds to eight pixels.œh´ZáBZ4 6€Ñ€”‘€‚A€€€€‚ÿisLSBFirst: if TRUE, bits are ordered within a byte from Least Significant to most significant; otherwise the first bit in each byte is the most significant one.isUpToDown: if TRUE, marker bitmap is described from up to down (that is bytes[0] is the left top corner of the bitmap), otherwise from down to up (that is bytes[0] is the bottom left corner).²qEAZ“CZA R€â€T”A‚S~‚A€㑶p6‰ƒãŠƒõ(‰ã‘¶p6‰‚ÿstatic SbBoolgetMarker(int markerIndex,SbVec2s &size,const unsigned char *&bytes,SbBool &isLSBFirst)¦wáBZ9DZ/ .€î€”‘€‚A€€€‚ÿRetrieve the description of the marker with index markerIndex. Returns TRUE if the marker exists, FALSE otherwise.b0“CZ›DZ2 4€`€T”A‚S~‚A€㑶p6‰ƒ‚ÿstatic SbBoolremoveMarker(int markerIndex)šk9DZ5EZ/ .€Ö€”‘€‚A€€€‚ÿRemove the marker with index markerIndex. Return TRUE if the marker has been removed, FALSE otherwise.8›DZmEZ& €$€‚A€‚ÿACTION BEHAVIORF5EZ³EZ1 2€*€T”A‚S~‚Aã©öø(€‰‚ÿSoGLRenderAction[2mEZFZ) "€d€”‘€‚A€‚ÿDraws bitmaps based on the current coordinates.O³EZ]FZ1 2€<€T”A‚S~‚AãDRô€‰‚ÿSoGetPrimitiveCountActionnEFZËFZ) "€Š€”‘€‚A€‚ÿIncrements the image count by 1 for each marker in the marker set.<]FZGZ& €,€‚A€‚ÿFILE FORMAT/DEFAULT8ËFZ?GZ* $€€P„7|‚€‚ÿMarkerSet {tAGZ³GZ3 6€‚€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿvertexPropertyNULLstartIndex0numPoints-1markerIndex0}1 ?GZäGZ& €€‚€‚ÿSEE ALSO8³GZcHZG ^€p€”‘€‚ã[Eà€‰€ ã:"ÍÝ€‰€ ãmý¼€‰‚ÿSoCoordinate3, SoPointSet, SoVertexProperty; äGZžHZ1¡_ ³€µ žHZÐHZ ÀZSoMaterial2 cHZÐHZ% €€ˆˆ€‚ÿSoMaterial*žHZúHZ# €€€‚ÿNAMEV0ÐHZPIZ& €`€”‘€€‚ÿSoMaterial - surface material definition node3úHZƒIZ# € €€‚ÿINHERITS FROMŒ?PIZJZM j€~€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoMaterial2 ƒIZAJZ& €€€€ ‚ÿSYNOPSISnGJZ¯JZ' €Ž€”‘€€‚‚ÿ#include Fields from class SoMaterial:ò—AJZ¡KZ[ „€/€T”A‚S~‚Aãz.—\€‰ƒ‚ãz.—\‰ƒ‚ãz.—\‰ƒ‚ãz.—\‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ÿSoMFColorambientColorSoMFColordiffuseColorSoMFColorspecularColorSoMFColoremissiveColorSoMFFloatshininessSoMFFloattransparencyJ!¯JZëKZ) "€B€”‘€‚A€‚ÿMethods from class SoMaterial:e1¡KZPLZ4 8€b€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoMaterial()static SoTypegetClassTypeId()NëKZžLZ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|PLZNZn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)žLZrNZ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØNZã€Z 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbStrNZã€ZcHZring &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHrNZkZ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nã€Z¹Z/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞkZð‚ZY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4¹Z$ƒZ& €€‚A€‚ÿDESCRIPTIONÖ¦ð‚ZúƒZ0 .€M€”‘€‚A€€€‚ÿThis node defines the current surface material properties for all subsequent shapes. SoMaterial sets several components of the current material during traversal.Ó$ƒZ …Z< F€§€”‘€‚A€€€€€€€‚ÿMultiple values can be specified for the diffuseColor and transparency. Different shapes interpret materials with multiple values differently. To bind materials to shapes, use an SoMaterialBinding node./ úƒZ8…Z& €€‚A€‚ÿFIELDSM …Z……Z2 4€6€T”A‚S~‚Aãz.—\€‰ƒ‚ÿSoMFColorambientColorI 8…ZÎ…Z) "€@€”‘€‚A€‚ÿAmbient color of the surface.M……Z†Z2 4€6€T”A‚S~‚Aãz.—\€‰ƒ‚ÿSoMFColordiffuseColorL#Î…Zg†Z) "€F€”‘€‚A€‚ÿDiffuse color(s) of the surface.N†Zµ†Z2 4€8€T”A‚S~‚Aãz.—\€‰ƒ‚ÿSoMFColorspecularColorJ!g†Zÿ†Z) "€B€”‘€‚A€‚ÿSpecular color of the surface.Nµ†ZM‡Z2 4€8€T”A‚S~‚Aãz.—\€‰ƒ‚ÿSoMFColoremissiveColorJ!ÿ†Z—‡Z) "€B€”‘€‚A€‚ÿEmissive color of the surface.JM‡Zá‡Z2 4€0€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatshininessË¡—‡Z¬ˆZ* "€C€”‘€‚A€‚ÿShininess coefficient of the surface. Values can range from 0.0 for no shininess (a diffuse surface) to 1.0 for maximum shininess (a highly polished surface).Má‡ZùˆZ2 4€6€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloattransparency鬈Z‹Z6 :€Ó€”‘€‚A€€€€€‚ÿTransparency value(s) of the surface. Values can range from 0.0 for opaque surfaces to 1.0 for completely transparent surfaces. If the transparency type is SoGLRenderAction::SCREEN_DOOR then only the first transparency value will be used. With other transparency types, multiple transparencies will be used, if the SoMaterial node contains as many transparencies as diffuse colors. If there are not as many transparencies as diffuse colors, only the first transparency will be used.0 ùˆZH‹Z& €€‚A€‚ÿMETHODS<‹Z„‹Z, (€ €T”A‚S~‚A€ƒ‚ÿSoMaterial()Z1H‹ZÞ‹Z) "€b€”‘€‚A€‚ÿCreates a material node with default settings.U#„‹Z3ŒZ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Þ‹Z†ŒZ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.83ŒZ¾ŒZ& €$€‚A€‚ÿACTION BEHAVIORb*†ŒZ Z8 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackActionÀ“¾ŒZàZ- (€'€”‘€‚A€€‚ÿSets the ambient color, the diffuse color, the specular color, the emissive color, the shininess, and the transparency of the current material.< ZŽZ& €,€‚A€‚ÿFILE FORMAT/DEFAULT7 àZSŽZ* $€€P„7|‚€‚ÿMaterial {³|ŽZZ7 >€ø€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿambientColor0.2 0.2 0.2diffuseColor0.8 0.8 0.8specularColor0 0 0emissiveColor0 0 0shininess0.2transparency0}1 SŽZ7Z& €€‚€‚ÿSEE ALSOŸLZ ÀZS v€˜€”‘€‚ãÚ{tm€‰€ãg!à‚€‰€ãÞ!€€‰€ã;Û €‰‚ÿSoBaseColor, SoLightModel, SoMaterialBinding, SoPackedColor7Z ÀZcHZB7ZNÀZ1ÑO„´<¶NÀZ‡ÀZë[SoMaterialBinding9 ÀZ‡ÀZ% €(€ˆˆ€‚ÿSoMaterialBinding*NÀZ±ÀZ# €€€‚ÿNAME{U‡ÀZ,ÁZ& €ª€”‘€€‚ÿSoMaterialBinding - node that specifies how multiple materials are bound to shapes3±ÀZ_ÁZ# € €€‚ÿINHERITS FROM“F,ÁZòÁZM j€Œ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoMaterialBinding2 _ÁZ$ÂZ& €€€€ ‚ÿSYNOPSISV0òÁZzÂZ& €`€”‘€€‚ÿ#include r$ÂZìÄZm ¨€ €T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Binding{SoMaterialBinding::OVERALLWhole object has same materialSoMaterialBinding::PER_PARTOne material for each part of objectSoMaterialBinding::PER_PART_INDEXEDOne material for each part, indexedSoMaterialBinding::PER_FACEOne material for each face of objectSoMaterialBinding::PER_FACE_INDEXEDOne material for each face, indexedSoMaterialBinding::PER_VERTEXOne material for each vertex of objectSoMaterialBinding::PER_VERTEX_INDEXEDOne material for each vertex, indexed}P'zÂZ<ÅZ) "€N€”‘€‚A€‚ÿFields from class SoMaterialBinding:EìÄZÅZ2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumvalueQ(<ÅZÒÅZ) "€P€”‘€‚A€‚ÿMethods from class SoMaterialBinding:l8ÅZ>ÆZ4 8€p€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoMaterialBinding()static SoTypegetClassTypeId()NÒÅZŒÆZ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|>ÆZÈZn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ŒÆZ`ÈZ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÈZÅÊZ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH`ÈZMËZ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÅÊZ›ËZ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞMËZÒÌZY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4›ËZÍZ& €€‚A€‚ÿDESCRIPTION¢xÒÌZ¨ÎZ* "€ñ€”‘€‚A€‚ÿThis node specifies how the current materials are bound to shapes that follow in the scene graph. Each shape node may interpret bindings differently. The current material always has a base value, which is defined by the first value of all material fields. Since material fields may have multiple values, the binding determines how these values are distributed over a shape.ç½ÍZÏZ* "€{€”‘€‚A€‚ÿThe bindings for faces and vertices are meaningful only for shapes that are made from faces and vertices. Similarly, the indexed bindings are only used by the shapes that allow indexing.é¨ÎZ®[* "€Ó€”‘€‚A€‚ÿThe bindings apply only to diffuse colors and transparency. Other mateÏZ®[ ÀZrials (emissive, specular, ambient, shininess) will have the first value applied to the entire shape, regardless of the material binding or the number provided.vLÏZ$[* "€™€”‘€‚A€‚ÿIf the number of transparencies is less than the number of diffuse colors, only the first transparency value will be used, regardless of the material binding. If the number of diffuse colors in the state is less than the number required for the given binding, a debug warning will be printed and unpredictable colors will result./ ®[S[& €€‚A€‚ÿFIELDSE$[˜[2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumvalueV-S[î[) "€Z€”‘€‚A€‚ÿSpecifies how to bind materials to shapes.0 ˜[[& €€‚A€‚ÿMETHODSCî[a[, (€.€T”A‚S~‚A€ƒ‚ÿSoMaterialBinding()b9[Ã[) "€r€”‘€‚A€‚ÿCreates a material binding node with default settings.U#a[[2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Ã[k[) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8[£[& €$€‚A€‚ÿACTION BEHAVIORb*k[[8 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackActionW+£[\[, (€V€”‘€‚A€€‚ÿSets the current material binding type.<[˜[& €,€‚A€‚ÿFILE FORMAT/DEFAULT>\[Ö[* $€(€P„7|‚€‚ÿMaterialBinding {@˜[[- *€&€P„|‚€ƒ‚‚‚ÿvalueOVERALL}1 Ö[G[& €€‚€‚ÿSEE ALSO¤Q[ë[S v€¢€”‘€‚ãOjnÄ€‰€ãRÜ4€‰€ã9ÖEš€‰€ãf;1c€‰‚ÿSoMaterial, SoNormalBinding, SoShape, SoTextureCoordinateBindingBG[-[1ꀵ0„¶-[f[)H[SoMatrixTransform9ë[f[% €(€ˆˆ€‚ÿSoMatrixTransform*-[[# €€€‚ÿNAMEzTf[ [& €¨€”‘€€‚ÿSoMatrixTransform - node that specifies a 3D geometric transformation as a matrix3[=[# € €€‚ÿINHERITS FROM¶] [ó[Y ‚€º€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoMatrixTransform2 =[% [& €€€€ ‚ÿSYNOPSIS|Uó[¡ [' €ª€”‘€€‚‚ÿ#include Fields from class SoMatrixTransform:H% [é [2 4€,€T”A‚S~‚AãØœ€‰ƒ‚ÿSoSFMatrixmatrixQ(¡ [: [) "€P€”‘€‚A€‚ÿMethods from class SoMatrixTransform:l8é [¦ [4 8€p€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoMatrixTransform()static SoTypegetClassTypeId()N: [ô [/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|¦ [p [n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ô [È [/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØp [-[ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÈ [µ[@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N-[@[/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBaseµ[@[ë[:7Þµ[FA[Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4@[zA[& €€‚A€‚ÿDESCRIPTIONë»FA[eB[0 .€w€”‘€‚A€€€‚ÿThis node defines a geometric 3D transformation with a single SbMatrix. Note that some matrices (such as singular ones) may result in errors in bounding boxes, picking, and lighting./ zA[”B[& €€‚A€‚ÿFIELDSHeB[ÜB[2 4€,€T”A‚S~‚AãØœ€‰ƒ‚ÿSoSFMatrixmatrixB”B[C[) "€2€”‘€‚A€‚ÿTransformation matrix.0 ÜB[NC[& €€‚A€‚ÿMETHODSCC[‘C[, (€.€T”A‚S~‚A€ƒ‚ÿSoMatrixTransform()g>NC[øC[) "€|€”‘€‚A€‚ÿCreates a matrix transformation node with default settings.U#‘C[MD[2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*øC[ D[) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8MD[ØD[& €$€‚A€‚ÿACTION BEHAVIOR›W D[sE[D X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction[ØD[F[2 4€¶€”‘€‚A€€€€‚ÿConcatenates matrix given in the matrix field with the current transformation matrix.IsE[IF[2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixActiontBF[½F[2 4€„€”‘€‚A€€€€‚ÿReturns transformation matrix specified in the matrix field.<IF[ùF[& €,€‚A€‚ÿFILE FORMAT/DEFAULT>½F[7G[* $€(€P„7|‚€‚ÿMatrixTransform {b/ùF[™G[3 6€^€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿmatrix1 0 0 00 1 0 00 0 1 00 0 0 1}1 7G[ÊG[& €€‚€‚ÿSEE ALSO_$™G[)H[; F€H€”‘€‚ã¼ýÓ€‰€ã™ü ;€‰‚ÿSoTransform, SoMultipleCopy> ÊG[gH[1ý<¶†gH[œH[hO[SoMemoryError5)H[œH[% € €ˆˆ€‚ÿSoMemoryError*gH[ÆH[# €€€‚ÿNAMEN(œH[I[& €P€”‘€€‚ÿSoMemoryError - memory error handling3ÆH[GI[# € €€‚ÿINHERITS FROMTI[›I[5 :€>€”‘€ãôx—€‰€€€‚ÿSoError > SoMemoryError2 GI[ÍI[& €€€€ ‚ÿSYNOPSISvO›I[CJ[' €ž€”‘€€‚‚ÿ#include Methods from class SoMemoryError:Þ¤ÍI[!K[: B€I€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ÿstatic voidsetHandlerCallback(SoErrorCB *cb,void *data)static SoErrorCB *getHandlerCallback()static void *getHandlerData()static SoTypegetClassTypeId()O CJ[pK[/ .€@€”‘€‚A€ãôx—‰‚ÿMethods from class SoError:¾v!K[.L[H `€ì€T”A‚S~‚A€ãXíʉƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿconst SbString &getDebugString() constvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4pK[bL[& €€‚A€‚ÿDESCRIPTIONpD.L[ÒL[, (€ˆ€”‘€‚A€€‚ÿSoMemoryError is used for errors reported due to lack of memory.0 bL[M[& €€‚A€‚ÿMETHODSµƒÒL[·M[2 2€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿstatic voidsetHandlerCallback(SoErrorCB *cb,void *data)static SoErrorCB *getHandlerCallback()static void *getHandlerData()j;M[!N[/ .€v€”‘€‚A€€€‚ÿSets/returns handler callback for SoMemoryError class.U#·M[vN[2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()d5!N[ÚN[/ .€j€”‘€‚A€€€‚ÿReturns type identifier for SoMemoryError class.1 vN[ O[& €€‚A€‚ÿSEE ALSO]"ÚN[hO[; F€D€”‘€‚Aã5OZ”€‰€ãʉ þ€‰‚ÿSoDebugError, SoReadError? O[§O[1% ˜ ±â·§O[ÝO[Ý‹[SoMotion3Event6hO[ÝO[% €"€ˆˆ€‚ÿSoMotion3Event*§O[€[# €€€‚ÿÝO[€[hO[NAMEJ$ÝO[]€[& €H€”‘€€‚ÿSoMotion3Event - 3D motion events3€[€[# € €€‚ÿINHERITS FROMU ]€[å€[5 :€@€”‘€ã2™|—€‰€€€‚ÿSoEvent > SoMotion3Event2 €[[& €€€€ ‚ÿSYNOPSISxQå€[[' €¢€”‘€€‚‚ÿ#include Methods from class SoMotion3Event:,×[»‚[U x€¯€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ƒã ‚û‰‚ã ‚û‰ƒ‚ÿSoMotion3Event()static SoTypegetClassTypeId()voidsetTranslation(const SbVec3f &t)const SbVec3f &getTranslation() constvoidsetRotation(const SbRotation &r)const SbRotation &getRotation() constO [ ƒ[/ .€@€”‘€‚A€ã2™|—‰‚ÿMethods from class SoEvent:/¢»‚[9…[ è€E€T”A‚S~‚A€ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒã4a†6‰‚ã4a†6‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚㊃õ(‰ƒãñf‘¸‰‚ã}ƒõ(‰ƒãñf‘¸‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvoidsetTime(SbTime t)SbTimegetTime() constvoidsetPosition(const SbVec2s &p)const SbVec2s &getPosition() constconst SbVec2s &getPosition(const SbViewportRegion &vpRgn) constconst SbVec2f &getNormalizedPosition(const SbViewportRegion &vpRgn) constvoidsetShiftDown(SbBool isDown)voidsetCtrlDown(SbBool isDown)Äz ƒ[ý…[J d€ô€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetAltDown(SbBool isDown)SbBoolwasShiftDown() constSbBoolwasCtrlDown() constSbBoolwasAltDown() const49…[1†[& €€‚A€‚ÿDESCRIPTION…Yý…[¶†[, (€²€”‘€‚A€€‚ÿSoMotion3Event represents 3D relative motion events in the Open Inventor event model.0 1†[æ†[& €€‚A€‚ÿMETHODS@¶†[&‡[, (€(€T”A‚S~‚A€ƒ‚ÿSoMotion3Event()8æ†[^‡[) "€€”‘€‚A€‚ÿConstructor.U#&‡[³‡[2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()d5^‡[ˆ[/ .€j€”‘€‚A€€€‚ÿReturn the type id for the SoMotion3Event class.S³‡[¤ˆ[: D€¦€T”A‚S~‚A€ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ÿvoidsetTranslation(const SbVec3f &t)const SbVec3f &getTranslation() const|Sˆ[ ‰[) "€¦€”‘€‚A€‚ÿSet and get the relative change in translation since the last translation event.S¤ˆ[­‰[: D€¦€T”A‚S~‚A€ƒã ‚û‰‚ã ‚û‰ƒ‚ÿvoidsetRotation(const SbRotation &r)const SbRotation &getRotation() constvM ‰[#Š[) "€š€”‘€‚A€‚ÿSet and get the relative change in rotation since the last rotation event.1 ­‰[TŠ[& €€‚A€‚ÿSEE ALSO‰á#Š[Ý‹[¨ À”‘€‚Aã2™|—€‰€ãüb€‰€ã“[ A€‰€ã-OÁm€‰€ãÛá–€‰€ã*€‰€ãàꀉ€ã?–/ €‰€ã(ç –€‰€ãΖc`€‰€ãÊÌø!€‰‚ÿSoEvent, SoButtonEvent, SoKeyboardEvent, SoLocation2Event, SoMouseButtonEvent, SoSpaceballButtonEvent, SoHandleEventAction, SoEventCallback, SoSelection, SoInteraction, SoWinDeviceCTŠ[ Œ[1#Ò‡¶Uˆ· Œ[ZŒ[RÍ[SoMouseButtonEvent:Ý‹[ZŒ[% €*€ˆˆ€‚ÿSoMouseButtonEvent* Œ[„Œ[# €€€‚ÿNAMEc=ZŒ[çŒ[& €z€”‘€€‚ÿSoMouseButtonEvent - mouse button press and release events3„Œ[[# € €€‚ÿINHERITS FROMy8çŒ[“[A R€p€”‘€ã2™|—€‰€ãüb€‰€€€‚ÿSoEvent > SoButtonEvent > SoMouseButtonEvent2 [Å[& €€€€ ‚ÿSYNOPSISP'“[[) €O€”‘€€‚‚‚ÿ#include #define SO_MOUSE_PRESS_EVENT(EVENT,BUTTON) \ (SoMouseButtonEvent::isButtonPressEvent(EVENT,SoMouseButtonEvent::BUTTON))#define SO_MOUSE_RELEASE_EVENT(EVENT,BUTTON) \ (SoMouseButtonEvent::isButtonReleaseEvent(EVENT,SoMouseButtonEvent::BUTTON))!ÏÅ[BÀ[R r€Ÿ€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Button{SoMouseButtonEvent::ANYAny buttonSoMouseButtonEvent::BUTTON1First mouse buttonSoMouseButtonEvent::BUTTON2Second mouse button[BÀ[Ý‹[SoMouseButtonEvent::BUTTON3Third mouse button}R)[”À[) "€R€”‘€‚A€‚ÿMethods from class SoMouseButtonEvent:ªSBÀ[>Â[W |€§€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒ‚ƒ‚㑶p6‰ƒã2™|—‰‚㑶p6‰ƒã2™|—‰‚ÿSoMouseButtonEvent()static SoTypegetClassTypeId()voidsetButton(SoMouseButtonEvent::Button b)SoMouseButtonEvent::ButtongetButton() conststatic SbBoolisButtonPressEvent(const SoEvent *e,SoMouseButtonEvent::Button whichButton)static SbBoolisButtonReleaseEvent(const SoEvent *e,SoMouseButtonEvent::Button whichButton)U&”À[“Â[/ .€L€”‘€‚A€ãüb‰‚ÿMethods from class SoButtonEvent:ŒR>Â[Ã[: D€¤€T”A‚S~‚A€ƒãüb‰‚ãüb‰ƒ‚ÿvoidsetState(SoButtonEvent::State s)SoButtonEvent::StategetState() constO “Â[nÃ[/ .€@€”‘€‚A€ã2™|—‰‚ÿMethods from class SoEvent:/¢Ã[Å[ è€E€T”A‚S~‚A€ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒã4a†6‰‚ã4a†6‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚㊃õ(‰ƒãñf‘¸‰‚ã}ƒõ(‰ƒãñf‘¸‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvoidsetTime(SbTime t)SbTimegetTime() constvoidsetPosition(const SbVec2s &p)const SbVec2s &getPosition() constconst SbVec2s &getPosition(const SbViewportRegion &vpRgn) constconst SbVec2f &getNormalizedPosition(const SbViewportRegion &vpRgn) constvoidsetShiftDown(SbBool isDown)voidsetCtrlDown(SbBool isDown)ÄznÃ[aÆ[J d€ô€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetAltDown(SbBool isDown)SbBoolwasShiftDown() constSbBoolwasCtrlDown() constSbBoolwasAltDown() const4Å[•Æ[& €€‚A€‚ÿDESCRIPTION•iaÆ[*Ç[, (€Ò€”‘€‚A€€‚ÿSoMouseButtonEvent represents mouse button press and release events in the Open Inventor event model.0 •Æ[ZÇ[& €€‚A€‚ÿMETHODSD*Ç[žÇ[, (€0€T”A‚S~‚A€ƒ‚ÿSoMouseButtonEvent()8ZÇ[ÖÇ[) "€€”‘€‚A€‚ÿConstructor.U#žÇ[+È[2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()h9ÖÇ[“È[/ .€r€”‘€‚A€€€‚ÿReturn the type id for the SoMouseButtonEvent class.Š\+È[É[. ,€¸€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetButton(SoMouseButtonEvent::Button b)SoMouseButtonEvent::ButtongetButton() const_6“È[|É[) "€l€”‘€‚A€‚ÿSet and get which mouse button generated the event. ÂÉ[‡Ê[I `€…€T”A‚S~‚A€㑶p6‰ƒã2™|—‰‚㑶p6‰ƒã2™|—‰‚ÿstatic SbBoolisButtonPressEvent(const SoEvent *e,SoMouseButtonEvent::Button whichButton)static SbBoolisButtonReleaseEvent(const SoEvent *e,SoMouseButtonEvent::Button whichButton)å|É[œË[0 .€Ë€”‘€‚A€€€‚ÿReturns whether the passed event is a mouse button press or release event of the passed button. When SoMouseButtonEvent::ANY is passed, this returns TRUE if the event represents a button press or release of any mouse button.1 ‡Ê[ÍË[& €€‚A€‚ÿSEE ALSO…ÝœË[RÍ[¨ »€”‘€‚Aã2™|—€‰€ãüb€‰€ã“[ A€‰€ã-OÁm€‰€ãAùé½€‰€ã*€‰€ãàꀉ€ã?–/ €‰€ã(ç –€‰€ãΖc`€‰€ãÊÌø!€‰‚ÿSoEvent, SoButtonEvent, SoKeyboardEvent, SoLocation2Event, SoMotion3Event, SoSpaceballButtonEvent, SoHandleEventAction, SoEventCallback, SoSelection, SoInteraction, SoWinDevice?ÍË[‘Í[1‘â·ê€¸‘Í[ÇÍ[NB\SoMultipleCopy6RÍ[ÇÍ[% €"€ˆˆ€‚ÿSoMultipleCopy*‘Í[ñÍ[# €€€‚ÿNAMEuOÇÍ[fÎ[& €ž€”‘€€‚ÿSoMultipleCopy - group node that traverses multiple times, applying matrices3ñÍ[™Î[# € €€‚ÿINHERITS FROMªQfÎ[CÏ[Y ‚€¢€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoMultipleCopy2 ™Î[uÏ[& €€€€ ‚ÿSYNOPSISvOCÏ[ \' €ž€”‘€€‚‚ÿ#include Fields from class SoMultipleCopy:uÏ[ \RÍ[HuÏ[T\2 4€,€T”A‚S~‚Aã÷3 ƒ‚ÿSoMFMatrixmatrixN% \¢\) "€J€”‘€‚A€‚ÿMethods from class SoMultipleCopy:i5T\ \4 8€j€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoMultipleCopy()static SoTypegetClassTypeId()O ¢\Z\/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒ \O\r ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)NZ\\/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|O\\n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)\q\/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ\Ö\ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHq\^\@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)FÖ\¤\) "€:€”‘€‚A€‚ÿMethods from class SoBase:7Þ^\Û \Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4¤\ \& €€‚A€‚ÿDESCRIPTION­}Û \¼ \0 .€û€”‘€‚A€€€‚ÿThis group node traverses its children, in order, several times, applying a different matrix each time. The matrices are stored in the multiple-value matrix field. Each matrix is concatenated to the current transformation matrix, and all of the children are traversed. This allows the user to put multiple copies of the same data in different locations easily and efficiently.µz \q \; F€ô€”‘€‚A€€€€€€€‚ÿTraversing the Nth child sets the current switch value to N, for use with inherited switch values (see SoSwitch)./ ¼ \  \& €€‚A€‚ÿFIELDSHq \è \2 4€,€T”A‚S~‚Aã÷3 ƒ‚ÿSoMFMatrixmatrixQ(  \9 \) "€P€”‘€‚A€‚ÿSet of matrices to apply to children.0 è \i \& €€‚A€‚ÿMETHODS@9 \© \, (€(€T”A‚S~‚A€ƒ‚ÿSoMultipleCopy()_6i \\) "€l€”‘€‚A€‚ÿCreates a multiple copy node with default settings.U#© \]\2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*\°\) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8]\è\& €$€‚A€‚ÿACTION BEHAVIOR›W°\ƒ\D X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction“gè\"@\, (€Î€”‘€‚A€€‚ÿTraverses all children for each matrix, saving and restoring state before and afƒ\"@\RÍ[ter each traversal.Fƒ\h@\2 4€(€”‘€‚AãòÓ}ª€‰€‚ÿSoSearchAction‡["@\ï@\, (€¶€”‘€‚A€€‚ÿTraverses all children once, setting the inherited switch value to SO_SWITCH_ALL first.<h@\+A\& €,€‚A€‚ÿFILE FORMAT/DEFAULT;ï@\fA\* $€"€P„7|‚€‚ÿMultipleCopy {b/+A\ÈA\3 6€^€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿmatrix1 0 0 00 1 0 00 0 1 00 0 0 1}1 fA\ùA\& €€‚€‚ÿSEE ALSOUÈA\NB\; F€4€”‘€‚ãÝo§–€‰€ã0MÓ쀉‚ÿSoArray, SoSwitch7ùA\…B\1Uˆ·b¹…B\³B\j†\SoNode. NB\³B\% €€ˆˆ€‚ÿSoNode*…B\ÝB\# €€€‚ÿNAME\6³B\9C\& €l€”‘€€‚ÿSoNode - abstract base class for all database nodes3ÝB\lC\# € €€‚ÿINHERITS FROMo.9C\ÛC\A R€\€”‘€ã}9€‰€ã¿\%†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode2 lC\ D\& €€€€ ‚ÿSYNOPSISg@ÛC\tD\' €€€”‘€€‚‚ÿ#include Methods from class SoNode:¥/ D\F\v º€_€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ãB-9‰ƒ‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)static SoTypegetClassTypeId()X)tD\qF\/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØF\ÖH\ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHqF\^I\@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÖH\¬I\/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ^I\ãJ\Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4¬I\K\& €€‚A€‚ÿDESCRIPTION€WãJ\—K\) "€®€”‘€‚A€‚ÿThis is the abstract base class from which all scene graph node classes are derived.0 K\ÇK\& €€‚A€‚ÿMETHODSU#—K\L\2 4€F€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidsetOverride(SbBool state)J!ÇK\fL\) "€B€”‘€‚A€‚ÿTurns override flag on or off.PL\¶L\2 4€<€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisOverride() constS*fL\ M\) "€T€”‘€‚A€‚ÿReturns the state of the override flag.r:¶L\{M\8 @€t€T”A‚S~‚Aã’n%9€‰ƒã‘¶p6‰‚ÿSoNode *copy(SbBool copyConnections = FALSE) const“i M\O\* "€Ó€”‘€‚A€‚ÿCreates and returns an exact copy of the node. If the node is a group, it copies the children as well. If copyConnections is TRUE (it is FALSE by default), any connections to (but not from) fields of the node are copied, as well. Note that multiple references to a node under the node to be copied will result in multiple references to the copy of that node.Z({M\hO\2 4€P€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolaffectsState() constèO\Œ€\0 .€Ñ€”‘€‚A€€€‚ÿReturns TRUE if a node has an effect on the state during traversal. The default method returns TRUE. NohO\Œ€\NB\de classes (such as SoSeparator) that isolate their effects from the rest of the graph override this method to return FALSE.ºshO\F\G ^€æ€T”A‚S~‚A€ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿstatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)AŒ€\‡‚\0 .€#€”‘€‚A€€€‚ÿA node's name can be set using SoBase::setName(). These methods allow nodes to be looked up by name. The first one returns the last node given the specified name. The second one returns the number of nodes with the given name, and adds to list pointers to those nodes.U#F\Ü‚\2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()a2‡‚\=ƒ\/ .€d€”‘€‚A€€€‚ÿReturns type identifier for the SoNode class.8Ü‚\uƒ\& €$€‚A€‚ÿACTION BEHAVIORF=ƒ\»ƒ\2 4€(€”‘€‚AãòÓ}ª€‰€‚ÿSoSearchAction‹_uƒ\F„\, (€¾€”‘€‚A€€‚ÿIf the node pointer, type, or name matches the search criteria, returns a path to the node.E»ƒ\‹„\2 4€&€”‘€‚AãeY €‰€‚ÿSoWriteActionp>F„\û„\2 4€|€”‘€‚A€€€€‚ÿWrites the contents of the node to the current SoOutput.<‹„\7…\& €,€‚A€‚ÿFILE FORMAT/DEFAULT“jû„\Ê…\) "€Ô€”‘€‚A€‚ÿThis is an abstract class. See the reference page of a derived class for the format and default values.1 7…\û…\& €€‚A€‚ÿSEE ALSOo(Ê…\j†\G ^€P€”‘€‚AãMy'9€‰€ãïK€‰€ã0d$€‰‚ÿSoPath, SoAction, SoNodeKit: û…\¤†\1œꀸ7¼¤†\Õ†\@\SoNodeKit1 j†\Õ†\% €€ˆˆ€‚ÿSoNodeKit*¤†\ÿ†\# €€€‚ÿNAMEP*Õ†\O‡\& €T€”‘€€‚ÿSoNodeKit - initializes nodekit classes3ÿ†\‚‡\# € €€‚ÿINHERITS FROM6 O‡\¸‡\) "€€”‘€€€‚ÿSoNodeKit2 ‚‡\ê‡\& €€€€ ‚ÿSYNOPSISpI¸‡\Zˆ\' €’€”‘€€‚‚ÿ#include Methods from class SoNodeKit:Aê‡\›ˆ\, (€*€T”A‚S~‚A€ƒ‚ÿstatic voidinit()4Zˆ\ψ\& €€‚A€‚ÿDESCRIPTIONa8›ˆ\0‰\) "€p€”‘€‚A€‚ÿThis class is used to initialize all nodekit classes.0 ψ\`‰\& €€‚A€‚ÿMETHODSA0‰\¡‰\, (€*€T”A‚S~‚A€ƒ‚ÿstatic voidinit()¥c`‰\F‹\B R€Ç€”‘€‚A€€€€€€€€€‚ÿInitialize all nodekit classes by registering them with the database. This function needs to be called before any other nodekit class may be constructed or accessed. Note that this is called automatically by SoInteraction::init() and SoWin::init(), so if you have made either of these calls, there is no need to call SoNodeKit::init() directly.1 ¡‰\w‹\& €€‚A€‚ÿSEE ALSOÉýF‹\@\Ì fû€”‘€‚AãNw¶°€‰€ãib€‰€ãásÆú€‰€ãΖc`€‰€ã€ÀÏ€‰€ã•£&ô€‰€ã½á–€‰€ã}选€ãõˆ¨f€‰€ã’o>€ãOËr€‰€ãЃ'€‰€ã°çT€‰€ãH€‰‚ÿSoAppearanceKit, SoBaseKit, SoCameraKit, SoInteraction, SoLightKit, SoNodeKitDetail, SoNodeKitListPart, SoNodeKitPath, SoNodekitCatalog, SoSceneKit, SoSeparatorKit, SoShapeKit, SoWrapperKit, SoWin@w‹\€\1Å 7¼¨…¹€\·\PÉ\SoNodeKitDetail7@\·\% €$€ˆˆ€‚ÿSoNodeKitDetail*€\á\# €€€‚ÿNAMEd>·\EŽ\& €|€”‘€€‚ÿSoNodeKitDetail - stores detail information about a nodekit3á\xŽ\# € €€‚ÿINHERITS FROMW"EŽ\ÏŽ\5 :€D€”‘€ãåŒÅe€‰€€€‚ÿSoDetail > SoNodeKitDetail2 xŽ\\& €€€€ ‚ÿSYNOPSIS{TÏŽ\|\' €¨€”‘€€‚‚ÿ#include Methods from class SoNodeKitDetail:Ð\XÀ\A P€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ã’n%9‰ƒ‚ãúß~6‰ƒ‚ÿSoNodeKitDetail()virtual~SoNodeKitDetail()SoBaseKit *getNodeK|\XÀ\@\it() constSoNode *getPart() constconst SbName &getPartName() constP!|\¨À\/ .€B€”‘€‚A€ãåŒÅe‰‚ÿMethods from class SoDetail:؇XÀ\€Á\Q p€€T”A‚S~‚AãåŒÅe€‰ƒ‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿSoDetail *copy() conststatic SoTypegetClassTypeId()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4¨À\´Á\& €€‚A€‚ÿDESCRIPTIONßµ€Á\“Â\* "€k€”‘€‚A€‚ÿThis class contains detail information about a nodekit. This consists of a pointer to the nodekit, a pointer to the child part within the nodekit, and the name of the child part.ܬ´Á\oÃ\0 .€Y€”‘€‚A€€€‚ÿDuring a pick action, each nodekit along the picked path creates its own SoNodeKitDetail. Together, the full set of details gives you complete picture of the pickpath.z8“Â\éÄ\B R€q€”‘€‚A€€€€€€€€€‚ÿSince nodekits have hidden children (see the reference page for SoBaseKit), a regular SoPath ends at the topmost nodekit in the path. If you cast the pickpath from an SoPath pointer to an SoNodeKitPath pointer, you can then retrieve all nodekits along the path and examine their corresponding details.0 oÃ\Å\& €€‚A€‚ÿMETHODS^0éÄ\wÅ\. ,€`€T”A‚S~‚A€ƒ‚ƒ‚ÿSoNodeKitDetail()virtual~SoNodeKitDetail()GÅ\¾Å\) "€<€”‘€‚A€‚ÿConstructor and destructor.M!wÅ\ Æ\, (€B€T”A‚S~‚A€ƒ‚ÿSoBaseKit *getNodeKit() constf=¾Å\qÆ\) "€z€”‘€‚A€‚ÿReturns a pointer to the nodekit that created this detail.O Æ\ÀÆ\2 4€:€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *getPart() constVqÆ\?Ç\) "€¬€”‘€‚A€‚ÿReturns a pointer to the part selected within the nodekit that created this detail.Y'ÀÆ\˜Ç\2 4€N€T”A‚S~‚A€ãúß~6‰ƒ‚ÿconst SbName &getPartName() constò¼?Ç\ŠÈ\6 :€y€”‘€‚A€€€€€‚ÿReturns the name of the part selected within the nodekit that created this detail. (See SoRayPickAction in the ACTIONS section of the SoBaseKit reference page for more information).1 ˜Ç\»È\& €€‚A€‚ÿSEE ALSO•BŠÈ\PÉ\S v€„€”‘€‚Aãib€‰€ã}选€ãåŒÅe€‰€ã¼B‘S€‰‚ÿSoBaseKit, SoNodeKitPath, SoDetail, SoPickedPointB»È\’É\1Ô ö¹¥†º’É\ËÉ\vJ]SoNodeKitListPart9PÉ\ËÉ\% €(€ˆˆ€‚ÿSoNodeKitListPart*’É\õÉ\# €€€‚ÿNAME`:ËÉ\UÊ\& €t€”‘€€‚ÿSoNodeKitListPart - group node with restricted children3õÉ\ˆÊ\# € €€‚ÿINHERITS FROM“FUÊ\Ë\M j€Œ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoNodeKitListPart2 ˆÊ\MË\& €€€€ ‚ÿSYNOPSIS€YË\ÍË\' €²€”‘€€‚‚ÿ#include Methods from class SoNodeKitListPart:'ªMË\ôÍ\} È€U€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒãB-9‰‚ãL´²÷‰ƒ‚ƒãB-9‰‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒã’n%9‰‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒã’n%9‰‚ÿSoNodeKitListPart()SoTypegetContainerType() constvoidsetContainerType(SoType newContainerType )const SoTypeList &getChildTypes() constvoidaddChildType(SoType typeToAdd )SbBoolisTypePermitted(SoType typeToCheck ) constSbBoolisChildPermitted(const SoNode *child ) constvoidcontainerSet(const char *fieldDataString )voidlockTypes()SbBoolisTypeLocked() constvoidaddChild(SoNode *child )ÕeÍË\ÉÏ\p ®€Ë€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ãB-9‰ƒ‚ÿvoidinsertChild(SoNode *child,int childIndex )SoNode *getChild(int index ) constintfindChild(SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)static SoTypegetClassTypeId()NôÍ\#]/ .€>€”‘€‚A€ã’n%9‰‚ÿMethodsÉÏ\#]PÉ\ from class SoNode:|ÉÏ\Ÿ]n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)#]÷]/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØŸ]\] 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH÷]ä]@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N\]2]/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þä]i]Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const42]]& €€‚A€‚ÿDESCRIPTION2öi]Ï]< F€í€”‘€‚A€€€€€€€‚ÿThis node class is very similar to SoGroup with the exception that it specifies restrictions on the type of children that it allows. It is used by nodekits to restrict child types within list parts (see the reference page for SoBaseKit).ðÆ]¿]* "€€”‘€‚A€‚ÿBy default, any kind of child may be added. Methods of this class allow you to restrict the type of allowable children, and to lock down the types so that this type list may no longer be altered.õ§Ï]´ ]N j€O€”‘€‚A€€€€€€€€€€€€€‚ÿInside the SoNodeKitListPart is a container node, which in turn contains the children. The container node is a hidden child, and the type of node used may be set with setContainerType(). In this way, you can make the nodekitlist behave like a group, a separator, or any other subclass of group. The container is not accessible so that the nodekitlist may retain control over what kinds of children are added.0 ¿]ä ]& €€‚A€‚ÿMETHODSC´ ]' ], (€.€T”A‚S~‚A€ƒ‚ÿSoNodeKitListPart()8ä ]_ ]) "€€”‘€‚A€‚ÿConstructor.V' ]ï ]: D€¬€T”A‚S~‚AãB-9€‰ƒ‚ƒãB-9‰‚ÿSoTypegetContainerType() constvoidsetContainerType(SoType newContainerType )i:_ ]X ]/ .€t€”‘€‚A€€€‚ÿGets and sets the type of node used as the container._-ï ]· ]2 4€Z€T”A‚S~‚A€ãL´²÷‰ƒ‚ÿconst SoTypeList &getChildTypes() const¾ˆX ]u ]6 :€€”‘€‚A€ã’n%9€‰€‚ÿReturns the permitted child node types. By default, any type of node is permitted, so the list contains one entry of type SoNode.[)· ]Ð ]2 4€R€T”A‚S~‚A€ƒãB-9‰‚ÿvoidaddChildType(SoType typeToAdd )N u ]]B R€€”‘€‚A€€€ã’n%9€‰€€€‚ÿPermits the node type typeToAdd as a child. The first time the addChildType() method is called, the default of SoNode is overridden and only the new typeToAdd is permitted. In subsequent calls to addChildType(), the typeToAdd is added to the existing types.p8Ð ]Ž]8 @€p€T”A‚S~‚A㑶p6€‰ƒãB-9‰‚ÿSbBoolisTypePermitted(SoType typeToCheck ) constoF] @]) "€Œ€”‘€‚A€‚ÿReturns whether a node of type typeToCheck may be added as a child.Ž] @]PÉ\r:Ž]~@]8 @€t€T”A‚S~‚A㑶p6€‰ƒã’n%9‰‚ÿSbBoolisChildPermitted(const SoNode *child ) const¸Ž @]6A]* "€€”‘€‚A€‚ÿReturns whether the node child may be added to this list. This will return TRUE if the type of child is one of the permissible child types.^2~@]”A], (€d€T”A‚S~‚A€ƒ‚ÿvoidcontainerSet(const char *fieldDataString )ܦ6A]pB]6 :€M€”‘€‚A€€€€€‚ÿSends a string to the set() method on the container node. This is how you can set the value of a switch node if the container node is an SoSwitch, for example.?”A]¯B], (€&€T”A‚S~‚A€ƒ‚ÿvoidlockTypes()üÆpB]«C]6 :€€”‘€‚A€€€€€‚ÿThis function permanently locks the permitted child types and the container type permanently. Calls to setContainerType() and addChildType() will have no effect after this function is called.R ¯B]ýC]2 4€@€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisTypeLocked() const©z«C]¦D]/ .€ô€”‘€‚A€€€‚ÿReturns whether the permitted child types and the container type are locked (i.e. cannot be changed). See lockTypes()ÜfýC]‚F]v º€Í€T”A‚S~‚A€ƒã’n%9‰€‚€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child )voidinsertChild(SoNode *child,int childIndex )SoNode *getChild(int index ) constintfindChild(SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)ûŦD]}G]6 :€‹€”‘€‚A€€€€€‚ÿThese are the functions used to edit the children. They parallel those of SoGroup, except that they always check the child types against those which are permissible. See SoGroup for details.U#‚F]ÒG]2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*}G]%H]) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<ÒG]aH]& €,€‚A€‚ÿFILE FORMAT/DEFAULT>%H]ŸH]* $€(€P„7|‚€‚ÿNodeKitListPart {uDaH]I]1 2€ˆ€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿcontainerTypeName"Group"childTypeNames""containerNodeNULL}1 ŸH]EI]& €€‚€‚ÿSEE ALSO1¡I]vJ] î€C€”‘€‚ãib€‰€ã0d$€‰€ã•£&ô€‰€ã}选€ãõˆ¨f€‰€ã’o>€ãOËr€‰€ãЃ'€‰€ã°çT€‰‚ÿSoBaseKit, SoNodeKit, SoNodeKitDetail, SoNodeKitPath, SoNodekitCatalog, SoSceneKit, SoSeparatorKit, SoShapeKit, SoWrapperKit> EI]´J]1•¨…¹è‚»´J]éJ]çÄ]SoNodeKitPath5vJ]éJ]% € €ˆˆ€‚ÿSoNodeKitPath*´J]K]# €€€‚ÿNAMElFéJ]K]& €Œ€”‘€€‚ÿSoNodeKitPath - path that points to a list of hierarchical nodekits3K]²K]# € €€‚ÿINHERITS FROMl+K]L]A R€V€”‘€ã}9€‰€ãMy'9€‰€€€‚ÿSoBase > SoPath > SoNodeKitPath2 ²K]PL]& €€€€ ‚ÿSYNOPSISoHL]¿L]' €€”‘€€‚‚ÿ#include Methods from class SoNodeKitPath:"¤PL]áN]~ Ê€I€T”A‚S~‚A€ƒãib‰‚ƒã}鉂ƒ‚ã’n%9‰ƒ‚ã’n%9‰ƒ‚ã’n%9‰ƒ‚ƒ‚ƒ‚㑶p6‰ƒã0d$‰‚ƒã}鉂ƒã}é‰ã}鉂ÿvoidappend(SoBaseKit *childKit)voidappend(const SoNodeKitPath *fromPath)voidpop()SoNode *getTail() constSoNode *getNode(int i) constSoNode *getNodeFromTail(int i) constintgetLength() constvoidtruncate(int start)SbBoolcontainsNode(const SoNodeKit *nodeKit) constintfindFork(const SoNodeKitPath *path) constfriend intoperator ==(const SoNodeKitPath &p1,const SoNodeKitPath &p2)N¿L]/O]/ .€>€”‘€‚A€ãMy'9‰‚ÿMethods from class SoPath:!áN]Ë€]o ¬€C€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚㑶p6‰ƒãMy'9‰‚ãMy'9‰ƒ‚ãMy'9‰ƒãúß~6‰‚ƒãúß~6‰ãç2ø¡‰‚ÿvoidsetHead(SoNode *node)SoNode *getHead() constSbBoolcontainsPath(const SoPath *pat/O]Ë€]vJ]h) constSoPath *copy(int startFromNodeIndex = 0,int numNodes = 0) conststatic SoPath *getByName(const SbName &name)static intgetByName(const SbName &name,SoPathList &list)N/O]]/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:`ÿË€]y‚]a €ÿ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()static SoTypegetClassTypeId()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4]­‚]& €€‚A€‚ÿDESCRIPTION~3y‚]+…]K d€g€”‘€‚A€€€€€€€€€€€€‚ÿSoNodeKitPath is a subclass of SoPath that lets you look at nodekits below the top nodekit in the path. Since nodekits have hidden children, when you call getTail() on a regular path, it returns the top-most nodekit on the path. This occurs even though the path might contain extra internal information leading to a node far deeper in the scene graph. For example, when picking an object inside an SoSceneKit, the regular path would end at the scenekit. But a nodekit path would continue further down listing the other nodekits below it in the path.V­‚]ª…]) "€¬€”‘€‚A€‚ÿIntermediary (private) nodes between nodekits are not included in the nodekit path.#á+…]͆]B R€Ã€”‘€‚A€€€€€€€€€‚ÿNote that there is no constructor for an SoNodeKitPath, so you can not create one. Rather, you cast an (SoPath *) into an (SoNodeKitPath *), which returns nodekit-style values from all the same questions as SoPath.Jüª…]‰]N j€ù€”‘€‚A€€€€€€€€€€€€€‚ÿAlso, some methods of SoPath may not be called on an SoNodeKitPath. Any methods which take a regular SoNode as an argument (except for setHead()) are not accessible, and replaced by methods that take an SoBaseKit as an argument instead. Methods which allow the programmer to refer to the child index of a node beneath its parent are also inaccessible; since an SoNodeKitPath only shows nodekits and hides any private parts, successive nodekits in the path may not actually be parent and child.0 ͆]G‰]& €€‚A€‚ÿMETHODSW%‰]ž‰]2 4€J€T”A‚S~‚A€ƒãib‰‚ÿvoidappend(SoBaseKit *childKit)Û«G‰]yŠ]0 .€W€”‘€‚A€€€‚ÿAdds childKit to end of chain; uses first occurrence of childKit as a part within current last nodekit. If the path is empty, this is equivalent to setHead(childKit).a/ž‰]ÚŠ]2 4€^€T”A‚S~‚A€ƒã}鉂ÿvoidappend(const SoNodeKitPath *fromPath)¶ŒyŠ]‹]* "€€”‘€‚A€‚ÿAdds all nodekits in fromPath's chain to end of chain; the head node of fromPath must be the same as or a child of the current tail node.9 ÚŠ]É‹], (€€T”A‚S~‚A€ƒ‚ÿvoidpop()Z1‹]#Œ]) "€b€”‘€‚A€‚ÿPops the last nodekit off the end of the path.OÉ‹]rŒ]2 4€:€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *getTail() constÙ#Œ]‡]< F€³€”‘€‚A€€€€€€€‚ÿReturn the last nodekit in a path chain. Note that getHead() is not redefined from SoPath, since an SoNodeKitPath need not begin with a nodekit; the restriction is placed only on successive nodes on the path.T"rŒ]Û]2 4€D€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *getNode(int i) constc:‡]>Ž]) "€t€”‘€‚A€‚ÿReturns a pointer to the i'th node in the nodekit path.\*Û]šŽ]2 4€T€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *getNodeFromTail(int i) const³‰>Ž]M]* "€€”‘€‚A€‚ÿReturns a pointer to the i'th nodekit in the chain, counting backward from the tail nodekit. Passing 0 for i returns the tail nodekit.DšŽ]‘], (€0€T”A‚S~‚A€ƒ‚ÿintgetLength() const^5M] À]) "€j€”‘€‚A€‚ÿReturns length of path chain (number of nodekits).‘] À]vJ]G‘]SÀ], (€6€T”A‚S~‚A€ƒ‚ÿvoidtruncate(int start)¥v À]øÀ]/ .€ì€”‘€‚A€€€‚ÿTruncates the path chain, removing all nodes from index start on. Calling truncate(0) empties the path entirely.r:SÀ]jÁ]8 @€t€T”A‚S~‚A㑶p6€‰ƒã0d$‰‚ÿSbBoolcontainsNode(const SoNodeKit *nodeKit) constsJøÀ]ÝÁ]) "€”€”‘€‚A€‚ÿReturns TRUE if the passed nodekit is found anywhere in the path chain.d2jÁ]AÂ]2 4€d€T”A‚S~‚A€ƒã}鉂ÿintfindFork(const SoNodeKitPath *path) constà¶ÝÁ]!Ã]* "€m€”‘€‚A€‚ÿIf the two paths have different head nodes, this returns -1. Otherwise, it returns the path chain index of the last nodekit (starting at the head) that is the same for both paths.ˆOAÂ]©Ã]9 B€ž€T”A‚S~‚A€ƒã}é‰ã}鉂ÿfriend intoperator ==(const SoNodeKitPath &p1,const SoNodeKitPath &p2)wN!Ã] Ä]) "€œ€”‘€‚A€‚ÿReturns TRUE if all node pointers in the two nodekit path chains are equal.1 ©Ã]QÄ]& €€‚A€‚ÿSEE ALSO–C Ä]çÄ]S v€†€”‘€‚Aãib€‰€ãMy'9€‰€ãÉ“â„€‰€ãòÓ}ª€‰‚ÿSoBaseKit, SoPath, SoRayPickAction, SoSearchAction; QÄ]"Å]1“ ¥†ºM¼"Å]TÅ]×^SoNodeList2 çÄ]TÅ]% €€ˆˆ€‚ÿSoNodeList*"Å]~Å]# €€€‚ÿNAME[5TÅ]ÙÅ]& €j€”‘€€‚ÿSoNodeList - maintains a list of pointers to nodes3~Å] Æ]# € €€‚ÿINHERITS FROMn-ÙÅ]zÆ]A R€Z€”‘€ãK2Å'€‰€ã/ x‘€‰€€€‚ÿSbPList > SoBaseList > SoNodeList2 Æ]¬Æ]& €€€€ ‚ÿSYNOPSISf?zÆ]Ç]' €~€”‘€€‚‚ÿ#include Methods from class SoNodeList: ɬÆ]2È]W |€“€T”A‚S~‚A€ƒ‚ƒ‚ƒãœÐ‰‚ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ãœÐ‰ƒãœÐ‰‚ÿSoNodeList()SoNodeList(int size)SoNodeList(const SoNodeList &l)~SoNodeList()voidappend(SoNode *node)SoNode *operator [](int i) constSoNodeList &operator =(const SoNodeList &l)R#Ç]„È]/ .€F€”‘€‚A€ã/ x‘‰‚ÿMethods from class SoBaseList:¾2È]“É]Q p€}€T”A‚S~‚A€ƒã}9‰‚ƒ‚ƒ‚ƒã/ x‘‰‚ƒã}9‰‚ƒã‘¶p6‰‚ÿvoidinsert(SoBase *ptr,int addBefore)voidremove(int which)voidtruncate(int start)voidcopy(const SoBaseList &l)voidset(int i,SoBase *ptr)voidaddReferences(SbBool flag)O „È]âÉ]/ .€@€”‘€‚A€ãK2Å'‰‚ÿMethods from class SbPList:ÍŽ“É]¯Ê]? L€€T”A‚S~‚A€ƒ‚ƒ‚ƒãK2Å'‰‚ƒãK2Å'‰‚ÿintfind(const void *ptr) constintgetLength() constintoperator ==(const SbPList &pl) constintoperator !=(const SbPList &pl) const4âÉ]ãÊ]& €€‚A€‚ÿDESCRIPTIONÓ¯Ê]¶Ë]6 :€;€”‘€‚A€€€€€‚ÿThis subclass of SoBaseList holds lists of pointers to SoNodes. It updates reference counts to nodes in the list whenever adding or removing pointers.0 ãÊ]æË]& €€‚A€‚ÿMETHODS<¶Ë]"Ì], (€ €T”A‚S~‚A€ƒ‚ÿSoNodeList()8æË]ZÌ]) "€€”‘€‚A€‚ÿConstructor.D"Ì]žÌ], (€0€T”A‚S~‚A€ƒ‚ÿSoNodeList(int size)m>ZÌ] Í]/ .€|€”‘€‚A€€€‚ÿConstructor that pre-allocates storage for size pointers.W%žÌ]bÍ]2 4€J€T”A‚S~‚A€ƒãœÐ‰‚ÿSoNodeList(const SoNodeList &l)a8 Í]ÃÍ]) "€p€”‘€‚A€‚ÿConstructor that copies the contents of another list.=bÍ]Î], (€"€T”A‚S~‚A€ƒ‚ÿ~SoNodeList()7ÃÍ]7Î]) "€€”‘€‚A€‚ÿDestructor.PÎ]‡Î]2 4€<€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidappend(SoNode *node)R)7Î]ÙÎ]) "€R€”‘€‚A€‚ÿAdds a pointer to the end of the list.X&‡Î]1Ï]2 4€L€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *operator [](int i) constJ!ÙÎ]{Ï]) "€B€”‘€‚A€‚ÿAccesses an element of a list.k31Ï] ^8 @€f€T”A‚S~‚AãœÐ€‰ƒãœÐ‰‚ÿSoNodeList &operator =(const SoNodeList &l){Ï] ^çÄ]`7{Ï]l^) "€n€”‘€‚A€‚ÿCopies a list, keeping all reference counts correct.1 ^^& €€‚A€‚ÿSEE ALSO: l^×^/ .€€”‘€‚Aã’n%9€‰‚ÿSoNode= ^^1± è‚»c½^H^È ^SoNodeSensor4×^H^% €€ˆˆ€‚ÿSoNodeSensor*^r^# €€€‚ÿNAMEpJH^â^& €”€”‘€€‚ÿSoNodeSensor - sensor class that can be attached to Open Inventor nodes3r^^# € €€‚ÿINHERITS FROM˜Kâ^­^M j€–€”‘€ãrX.选€㜺餀‰€㤴u?€‰€€€‚ÿSoSensor > SoDelayQueueSensor > SoDataSensor > SoNodeSensor2 ^ß^& €€€€ ‚ÿSYNOPSISuN­^T^' €œ€”‘€€‚‚ÿ#include Methods from class SoNodeSensor:àœß^4^D V€9€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ã’n%9‰ƒ‚ÿSoNodeSensor()SoNodeSensor(SoSensorCB *func,void *data)~SoNodeSensor()voidattach(SoNode *node)voiddetach()SoNode *getAttachedNode() constT%T^ˆ^/ .€J€”‘€‚A€㤴u?‰‚ÿMethods from class SoDataSensor:Dî4^Ì^V z€Ý€T”A‚S~‚A€ƒ‚ã’n%9‰ƒ‚ãþ —‰ƒ‚ãMy'9‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDeleteCallback(SoSensorCB *function,void *data)SoNode *getTriggerNode() constSoField *getTriggerField() constSoPath *getTriggerPath() constvoidsetTriggerPathFlag(SbBool flag)SbBoolgetTriggerPathFlag() constZ+ˆ^&^/ .€V€”‘€‚A€㜺餉‚ÿMethods from class SoDelayQueueSensor:ë®Ì^^= H€]€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ÿvoidsetPriority(uint32_t pri)uint32_tgetPriority()static uint32_tgetDefaultPriority()virtual voidschedule()virtual voidunschedule()virtual SbBoolisScheduled()P!&^a^/ .€B€”‘€‚A€ãrX.鉂ÿMethods from class SoSensor:½Š^^3 4€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetFunction(SoSensorCB *callbackFunction)SoSensorCB *getFunction() constvoidsetData(void *callbackData)void *getData() const4a^R^& €€‚A€‚ÿDESCRIPTIONÏ¥^! ^* "€K€”‘€‚A€‚ÿNode sensors detect changes to nodes, calling a callback function whenever any field of the node or, if the node is a group node, any children of the node change.0 R^Q ^& €€‚A€‚ÿMETHODSm>! ^¾ ^/ .€|€T”A‚S~‚A€ƒ‚ƒ‚ÿSoNodeSensor()SoNodeSensor(SoSensorCB *func,void *data)ŸvQ ^] ^) "€ì€”‘€‚A€‚ÿCreation methods. The second method takes the callback function and data to be called when the sensor is triggered.?¾ ^œ ^, (€&€T”A‚S~‚A€ƒ‚ÿ~SoNodeSensor()€W] ^ ^) "€®€”‘€‚A€‚ÿDestroys the sensor, freeing up any memory associated with it after unscheduling it.‹Oœ ^§ ^< H€ž€T”A‚S~‚A€ƒã’n%9‰‚ƒ‚ã’n%9‰ƒ‚ÿvoidattach(SoNode *node)voiddetach()SoNode *getAttachedNode() consts7 ^ ^< F€o€”‘€‚A€€€€€€€‚ÿThe attach() method makes this sensor detect changes to the given node. The detach() method unschedules this sensor (if it is scheduled) and makes it ignore changes to the scene graph. The getAttachedNode() method returns the node that this sensor is sensing, or NULL if it is not attached to any node.1 § ^K ^& €€‚A€‚ÿSEE ALSO}6 ^È ^G ^€l€”‘€‚Aãè"&€‰€ã'€‰€㤴u?€‰‚ÿSoFieldSensor, SoPathSensor, SoDataSensorAK ^ ^1Wb¹ö¹ ^A^‰^SoNodekitCatalog8È ^A^% €&€ˆˆ€‚ÿSoNodekitCatalog* ^k^# €€€‚ÿNAMEQ+A^¼^& €V€”‘€€‚ÿSoNodekitCatalog - nodekit catalog class3k^ï^# € €€‚ÿINHERITS FROM=¼^,^) "€(€”‘€€€‚ÿSoNodekitCatalog2 ï^^^& €€€€ ‚ÿSYNOPSISË¡,^5@^* "€C€”‘€€‚‚‚‚ÿ#include #define SO_CATALOG_NAME_NOT_FOUND -1#define SO_CATALOG_THIS_PART_NUM ^^5@^È ^ 0Methods from class SoNodekitCatalog:DÃ^^yB^ Ѐ‡€T”A‚S~‚A€ƒ‚ƒ‚ƒãúß~6‰‚ãúß~6‰ƒ‚ãB-9‰ƒ‚ãB-9‰ƒãúß~6‰‚ãB-9‰ƒ‚ãB-9‰ƒãúß~6‰‚㑶p6‰ƒ‚㑶p6‰ƒãúß~6‰‚ÿstatic voidinitClass()intgetNumEntries() constintgetPartNumber(const SbName &theName) constconst SbName &getName(int thePartNumber) constSoTypegetType(int thePartNumber) constSoTypegetType(const SbName &theName) constSoTypegetDefaultType(int thePartNumber) constSoTypegetDefaultType(const SbName &theName) constSbBoolisNullByDefault(int thePartNumber) constSbBoolisNullByDefault(const SbName &theName) const1º5@^ªD^w ¼€u€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒãúß~6‰‚ãúß~6‰ƒ‚ãúß~6‰ƒãúß~6‰‚ƒ‚ƒãúß~6‰‚ãúß~6‰ƒ‚ãúß~6‰ƒãúß~6‰‚ÿSbBoolisLeaf(int thePartNumber) constSbBoolisLeaf(const SbName &theName) constconst SbName &getParentName(int thePartNumber) constconst SbName &getParentName(const SbName &theName) constintgetParentPartNumber(int thePartNumber) constintgetParentPartNumber(const SbName &theName) constconst SbName &getRightSiblingName(int thePartNumber) constconst SbName &getRightSiblingName(const SbName &theName) const=ÆyB^çF^w ¼€€T”A‚S~‚A€ƒ‚ƒãúß~6‰‚㑶p6‰ƒ‚㑶p6‰ƒãúß~6‰‚ãB-9‰ƒ‚ãB-9‰ƒãúß~6‰‚ãL´²÷‰ƒ‚ãL´²÷‰ƒãúß~6‰‚ÿintgetRightSiblingPartNumber(int thePartNumber) constintgetRightSiblingPartNumber(const SbName &theName) constSbBoolisList(int thePartNumber) constSbBoolisList(const SbName &theName) constSoTypegetListContainerType(int thePartNumber) constSoTypegetListContainerType(const SbName &theName) constconst SoTypeList &getListItemTypes(int thePartNumber) constconst SoTypeList &getListItemTypes(const SbName &theName) constž^ªD^…G^@ P€¼€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒãúß~6‰‚ÿSbBoolisPublic(int thePartNumber) constSbBoolisPublic(const SbName &theName) const4çF^¹G^& €€‚A€‚ÿDESCRIPTION Ô…G^ÃI^6 :€©€”‘€‚A€€€€€‚ÿThis class describes the parts and structure of a nodekit. Each class of nodekit has one SoNodekitCatalog (a static variable for the class). Internally, the catalog contains one entry for each "part" in the nodekit's structure. Users can query the catalog for information about each entry in the catalog. This information can be obtained either by part name (an SbName unique for the part within the catalog) or by part number (an index into an array of parts).y=¹G^N^, (€8€T”A‚S~‚A€ƒ‚ÿintgetNumEntries() constU,öM^“N^) "€X€”‘€‚A€‚ÿReturns number of entries in the catalog.e3>N^øN^2 4€f€T”A‚S~‚A€ƒãúß~6‰‚ÿintgetPartNumber(const SbName &theName) constmD“N^eO^) "€ˆ€”‘€‚A€‚ÿGiven the name of a part, returns its part number in the catalog.f4øN^ËO^2 4€h€T”A‚S~‚A€ãúß~6‰ƒ‚ÿconst SbName &getName(int thePartNumber) constmDeO^D€^) "€ˆ€”‘€‚A€‚ÿGiven the pËO^D€^È ^art number of a part, returns its name in the catalog.I¾ËO^‚^‹ ä€}€T”A‚S~‚AãB-9€‰ƒ‚ãB-9‰ƒãúß~6‰‚ãB-9‰ƒ‚ãB-9‰ƒãúß~6‰‚㑶p6‰ƒ‚㑶p6‰ƒãúß~6‰‚㑶p6‰ƒ‚㑶p6‰ƒãúß~6‰‚ãúß~6‰ƒ‚ÿSoTypegetType(int thePartNumber) constSoTypegetType(const SbName &theName) constSoTypegetDefaultType(int thePartNumber) constSoTypegetDefaultType(const SbName &theName) constSbBoolisNullByDefault(int thePartNumber) constSbBoolisNullByDefault(const SbName &theName) constSbBoolisLeaf(int thePartNumber) constSbBoolisLeaf(const SbName &theName) constconst SbName &getParentName(int thePartNumber) const2ÇD€^¿„^k ¤€€T”A‚S~‚A€ãúß~6‰ƒãúß~6‰‚ƒ‚ƒãúß~6‰‚ãúß~6‰ƒ‚ãúß~6‰ƒãúß~6‰‚ƒ‚ƒãúß~6‰‚㑶p6‰ƒ‚ÿconst SbName &getParentName(const SbName &theName) constintgetParentPartNumber(int thePartNumber) constintgetParentPartNumber(const SbName &theName) constconst SbName &getRightSiblingName(int thePartNumber) constconst SbName &getRightSiblingName(const SbName &theName) constintgetRightSiblingPartNumber(int thePartNumber) constintgetRightSiblingPartNumber(const SbName &theName) constSbBoolisList(int thePartNumber) const…‚^¿†^{ Ä€ €T”A‚S~‚A㑶p6€‰ƒãúß~6‰‚ãB-9‰ƒ‚ãB-9‰ƒãúß~6‰‚ãL´²÷‰ƒ‚ãL´²÷‰ƒãúß~6‰‚㑶p6‰ƒ‚㑶p6‰ƒãúß~6‰‚ÿSbBoolisList(const SbName &theName) constSoTypegetListContainerType(int thePartNumber) constSoTypegetListContainerType(const SbName &theName) constconst SoTypeList &getListItemTypes(int thePartNumber) constconst SoTypeList &getListItemTypes(const SbName &theName) constSbBoolisPublic(int thePartNumber) constSbBoolisPublic(const SbName &theName) constŸv¿„^^‡^) "€ì€”‘€‚A€‚ÿA full set of methods for finding out all parameters in the catalog, given either the part name or the part number.1 ¿†^‡^& €€‚A€‚ÿSEE ALSOŒØ^‡^‰^´ 6±€”‘€‚AãNw¶°€‰€ãib€‰€ãásÆú€‰€ã€ÀÏ€‰€ã0d$€‰€ã•£&ô€‰€ã½á–€‰€ã}选€ã’o>€ãOËr€‰€ãЃ'€‰€ã°çT€‰‚ÿSoAppearanceKit, SoBaseKit, SoCameraKit, SoLightKit, SoNodeKit, SoNodeKitDetail, SoNodeKitListPart, SoNodeKitPath, SoSceneKit, SoSeparatorKit, SoShapeKit, SoWrapperKitB‡^]‰^1_M¼'‡½]‰^–‰^Í^SoNonIndexedShape9‰^–‰^% €(€ˆˆ€‚ÿSoNonIndexedShape*]‰^À‰^# €€€‚ÿNAMExR–‰^8Š^& €¤€”‘€€‚ÿSoNonIndexedShape - abstract base class for all non-indexed vertex-based shapes3À‰^kŠ^# € €€‚ÿINHERITS FROMÍh8Š^8‹^e š€Ð€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ã¹êZY€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape > SoNonIndexedShape2 kŠ^j‹^& €€€€ ‚ÿSYNOPSIS|U8‹^æ‹^' €ª€”‘€€‚‚ÿ#include Fields from class SoNonIndexedShape:Kj‹^1Œ^2 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32startIndexT%æ‹^…Œ^/ .€J€”‘€‚A€ã¹êZY‰‚ÿFields from class SoVertexShape:N1Œ^ÓŒ^2 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyY*…Œ^,^/ .€T€”‘€‚A€ã5ÖfE‰‚ÿMethods from class SoNonIndexedShape:U#ÓŒ^^2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()N,^Ï^/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|^K^n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ï^£^/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØK^Â^ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXí£^Â^‰^ʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH£^œÂ^@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÂ^êÂ^/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞœÂ^!Ä^Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4êÂ^UÄ^& €€‚A€‚ÿDESCRIPTIONÚž!Ä^/Å^< F€=€”‘€‚A€€€€€€€‚ÿThis node is the abstract base class for all vertex-based shapes that are not constructed from indices, such as SoFaceSet, SoLineSet, and SoQuadMesh.‚@UÄ^±Æ^B R€€”‘€‚A€€€€€€€€€‚ÿAll subclasses of SoNonIndexedShape construct objects by using the coordinates specified in the vertexProperty field (from SoVertexShape), or the current inherited coordinates. The startIndex field defined by this class is now obsolete, and is provided here only for compatibility with old files and programs.ôÊ/Å^¥Ç^* "€•€”‘€‚A€‚ÿThe subclass decides what to do with this and any subsequent coordinates. The shape is drawn with the current lighting model and drawing style and is transformed by the current transformation matrix.ÿÕ±Æ^¤È^* "€«€”‘€‚A€‚ÿMaterial, normal, and texture coordinate bindings for shapes derived from this class ignore any index specifications. That is, a binding value of PER_FACE_INDEXED is treated the same way as PER_FACE, and so on.žu¥Ç^BÉ^) "€ê€”‘€‚A€‚ÿIf there aren't sufficient values in the current coordinates, material, or texture coordinates, errors will occur./ ¤È^qÉ^& €€‚A€‚ÿFIELDSKBÉ^¼É^2 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32startIndexˆ_qÉ^DÊ^) "€¾€”‘€‚A€‚ÿObsolete field, provided only for compatibility reasons. Index of first coordinate of shape.0 ¼É^tÊ^& €€‚A€‚ÿMETHODSU#DÊ^ÉÊ^2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*tÊ^Ë^) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<ÉÊ^XË^& €,€‚A€‚ÿFILE FORMAT/DEFAULT“jË^ëË^) "€Ô€”‘€‚A€‚ÿThis is an abstract class. See the reference page of a derived class for the format and default values.1 XË^Ì^& €€‚A€‚ÿSEE ALSOöëË^Í^w ¾€þ€”‘€‚Aãø@〉€ã$‘³t€‰€ã>J€‰€ã:"ÍÝ€‰€ã¼$ú³€‰€ã†ÀÍb€‰€ãmý¼€‰‚ÿSoFaceSet, SoIndexedShape, SoLineSet, SoPointSet, SoQuadMesh, SoTriangleStripSet, SoVertexProperty9Ì^KÍ^1Fc½×¾KÍ^{Í^_SoNormal0 Í^{Í^% €€ˆˆ€‚ÿSoNormal*KÍ^¥Í^# €€€‚ÿNAME`:{Í^Î^& €t€”‘€€‚ÿSoNormal - node that defines surface normals for shapes3¥Í^8Î^# € €€‚ÿINHERITS FROMŠ=Î^ÂÎ^M j€z€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoNormal2 8Î^ôÎ^& €€€€ ‚ÿSYNOPSISjCÂÎ^^Ï^' €†€”‘€€‚‚ÿ#include Fields from class SoNormal:GôÎ^¥Ï^2 4€*€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fvectorH^Ï^ _) "€>€”‘€‚A€‚ÿMethods from class SoNormal:¥Ï^ _Í^c/¥Ï^o_4 8€^€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoNormal()static SoTypegetClassTypeId()N _½_/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|o_9_n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)½_‘_/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ9_ö_ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH‘_~_@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nö_Ì_/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ~__Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Ì_7_& €€‚A€‚ÿDESCRIPTION“i_Ê_* "€Ó€”‘€‚A€‚ÿThis node defines a set of 3D surface normal vectors to be used by vertex-based shape nodes that follow it in the scene graph. This node does not produce a visible result during rendering; it simply replaces the current normals in the rendering state for subsequent nodes to use. This node contains one multiple-valued field that contains the normal vectors.Þ7_Ò _* "€½€”‘€‚A€‚ÿSurface normals are needed to compute lighting when the Phong lighting model is used. Most vertex-based shapes that use normals can compute default normals if none are specified, depending on the current normal binding./ Ê_ _& €€‚A€‚ÿFIELDSGÒ _H _2 4€*€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fvectorC _‹ _) "€4€”‘€‚A€‚ÿSurface normal vectors.0 H _» _& €€‚A€‚ÿMETHODS:‹ _õ _, (€€T”A‚S~‚A€ƒ‚ÿSoNormal()`7» _U _) "€n€”‘€‚A€‚ÿCreates a surface normal node with default settings.U#õ _ª _2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*U _ý _) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ª _5 _& €$€‚A€‚ÿACTION BEHAVIOR{=ý _° _> L€z€”‘€‚Aã©öø(€‰ã³DfL‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoRayPickAction`45 _ _, (€h€”‘€‚A€€‚ÿSets the current normals in the traversal state.<° _L _& €,€‚A€‚ÿFILE FORMAT/DEFAULT5  _ _* $€€P„7|‚€‚ÿNormal {>L _¿ _- *€"€P„|‚€ƒ‚‚‚ÿvector[ ]}1 _ð _& €€‚€‚ÿSEE ALSOŸL¿ __S v€˜€”‘€‚ã[Eà€‰€ãg!à‚€‰€ãRÜ4€‰€ã¹êZY€‰‚ÿSoCoordinate3, SoLightModel, SoNormalBinding, SoVertexShape@ð _Ï_1ð'‡½ ¿Ï__´‚_SoNormalBinding7__% €$€ˆˆ€‚ÿSoNormalBinding*Ï_0_# €€€‚ÿNAMEY_¯_& €²€”‘€€‚ÿSoNormalBinding - node that specifies how multiple surface normals are bound to shapes30_ @_# € €€‚ÿINHERITS FROM¯_ @__‘D¯_@_M j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoNormalBinding2 @_Ï@_& €€€€ ‚ÿSYNOPSIST.@_#A_& €\€”‘€€‚ÿ#include VéÏ@_yC_m ¨€Ó€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Binding{SoNormalBinding::OVERALLWhole object has same normalSoNormalBinding::PER_PARTOne normal for each part of objectSoNormalBinding::PER_PART_INDEXEDOne normal for each part, indexedSoNormalBinding::PER_FACEOne normal for each face of objectSoNormalBinding::PER_FACE_INDEXEDOne normal for each face, indexedSoNormalBinding::PER_VERTEXOne normal for each vertex of objectSoNormalBinding::PER_VERTEX_INDEXEDOne normal for each vertex, indexed}N%#A_ÇC_) "€J€”‘€‚A€‚ÿFields from class SoNormalBinding:EyC_ D_2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumvalueO&ÇC_[D_) "€L€”‘€‚A€‚ÿMethods from class SoNormalBinding:j6 D_ÅD_4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoNormalBinding()static SoTypegetClassTypeId()N[D_E_/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÅD_F_n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)E_çF_/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØF_LI_ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHçF_ÔI_@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NLI_"J_/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÔI_YK_Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4"J_K_& €€‚A€‚ÿDESCRIPTIONÀ–YK_ML_* "€-€”‘€‚A€‚ÿThis node specifies how the current normals are bound to shapes that follow in the scene graph. Each shape node may interpret bindings differently.tJK_ÁM_* "€•€”‘€‚A€‚ÿThe bindings for faces and vertices are meaningful only for shapes that are made from faces and vertices. Similarly, the indexed bindings are only used by the shapes that allow indexing. For bindings that require multiple normals, be sure to have at least as many normals defined as are necessary; otherwise, errors will occur./ ML_ðM_& €€‚A€‚ÿFIELDSEÁM_5N_2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumvalueT+ðM_‰N_) "€V€”‘€‚A€‚ÿSpecifies how to bind normals to shapes.0 5N_¹N_& €€‚A€‚ÿMETHODSA‰N_úN_, (€*€T”A‚S~‚A€ƒ‚ÿSoNormalBinding()`7¹N_ZO_) "€n€”‘€‚A€‚ÿCreates a normal binding node with default settings.U#úN_¯O_2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ZO_€_) "€T€”‘€‚A€‚ÿReturns type identifier for this class.¯O_€__8¯O_F€_& €$€‚A€‚ÿACTION BEHAVIOR{=€_Á€_> L€z€”‘€‚Aã©öø(€‰ã³DfL‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoRayPickActionU)F€__, (€R€”‘€‚A€€‚ÿSets the current normal binding type.<Á€_R_& €,€‚A€‚ÿFILE FORMAT/DEFAULT<_Ž_* $€$€P„7|‚€‚ÿNormalBinding {KR_Ù_- *€<€P„|‚€ƒ‚‚‚ÿvaluePER_VERTEX_INDEXED}1 Ž_ ‚_& €€‚€‚ÿSEE ALSOªWÙ_´‚_S v€®€”‘€‚ãÞ!€€‰€ãKÕl¿€‰€ãf;1c€‰€ã¹êZY€‰‚ÿSoMaterialBinding, SoNormal, SoTextureCoordinateBinding, SoVertexShape= ‚_ñ‚_1Ý×¾+„¿ñ‚_%ƒ_èÉ_SoNurbsCurve4´‚_%ƒ_% €€ˆˆ€‚ÿSoNurbsCurve*ñ‚_Oƒ_# €€€‚ÿNAMEN(%ƒ_ƒ_& €P€”‘€€‚ÿSoNurbsCurve - NURBS curve shape node3Oƒ_Ѓ_# € €€‚ÿINHERITS FROM¨Oƒ_x„_Y ‚€ž€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoNurbsCurve2 Ѓ_ª„_& €€€€ ‚ÿSYNOPSISrKx„_…_' €–€”‘€€‚‚ÿ#include Fields from class SoNurbsCurve:p6ª„_Œ…_: D€l€T”A‚S~‚Aãw?2€‰ƒ‚ã'0]‰ƒ‚ÿSoSFInt32numControlPointsSoMFFloatknotVectorL#…_Ø…_) "€F€”‘€‚A€‚ÿMethods from class SoNurbsCurve:g3Œ…_?†_4 8€f€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoNurbsCurve()static SoTypegetClassTypeId()NØ…_†_/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|?†_ ˆ_n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)†_aˆ_/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ ˆ_ÆŠ_ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHaˆ_N‹_@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÆŠ_œ‹_/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞN‹_ÓŒ_Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4œ‹__& €€‚A€‚ÿDESCRIPTION¸‚ÓŒ_¿Ž_6 :€€”‘€‚A€€€€€‚ÿThis class represents a NURBS curve, based on the knot vector and the control points that you specify. The knotVector field specifies a floating-point array of values; the values are the coordinates of the knot points in the curve, and you must enter them in non-decreasing order. The curve will use the first numControlPoints values in the current coordinates as control points.Ï_Ä_6 :€Ÿ€”‘€‚A€€€€€‚ÿIf you specify n knots, you can specify up to n-8 control points. The number of knots minus the number of control points is known as the order of the curve. A NURBS curve can have an order of up to 8.’h¿Ž_bÁ_* "€Ñ€”‘€‚A€‚ÿThe control pointÄ_bÁ_´‚_s of the curve are transformed by the current transformation matrix. The curve is drawn with the current lighting model and drawing style (drawing style FILLED is treated as LINES). The coordinates, normals, and texture coordinates of a NURBS curve are generated, so you cannot bind explicit normals or texture coordinates to a NURBS curve.ˆ_Ä_êÁ_) "€¾€”‘€‚A€‚ÿThe approximation of the curve by line segments is affected by the current complexity value./ bÁ_Â_& €€‚A€‚ÿFIELDSQêÁ_jÂ_2 4€>€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32numControlPointsEÂ_¯Â_) "€8€”‘€‚A€‚ÿNumber of control points.KjÂ_úÂ_2 4€2€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatknotVector<¯Â_6Ã_) "€&€”‘€‚A€‚ÿThe knot vector.0 úÂ_fÃ_& €€‚A€‚ÿMETHODS>6Ã_¤Ã_, (€$€T”A‚S~‚A€ƒ‚ÿSoNurbsCurve()]4fÃ_Ä_) "€h€”‘€‚A€‚ÿCreates a NURBS curve node with default settings.U#¤Ã_VÄ_2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Ä_©Ä_) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8VÄ_áÄ_& €$€‚A€‚ÿACTION BEHAVIORH©Ä_)Å_2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionvJáÄ_ŸÅ_, (€”€”‘€‚A€€‚ÿDraws the curve based on the current coordinates, material, and so on.G)Å_æÅ_2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickActiontHŸÅ_ZÆ_, (€€”‘€‚A€€‚ÿPicks the curve based on the current coordinates and transformation.NæÅ_¨Æ_2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActionß²ZÆ_‡Ç_- (€e€”‘€‚A€€‚ÿComputes the bounding box that encloses all control points of the curve with the current transformation applied to them. Sets the center to the average of the control points.H¨Æ_ÏÇ_2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackAction¸‹‡Ç_‡È_- (€€”‘€‚A€€‚ÿIf any line segment callbacks are registered with the action, they will be invoked for each successive segment approximating the curve.<ÏÇ_ÃÈ_& €,€‚A€‚ÿFILE FORMAT/DEFAULT9‡È_üÈ_* $€€P„7|‚€‚ÿNurbsCurve {T%ÃÈ_PÉ_/ .€J€P„|‚€ƒ‚ƒ‚‚‚ÿnumControlPoints0knotVector0}1 üÈ_É_& €€‚€‚ÿSEE ALSOg,PÉ_èÉ_; F€X€”‘€‚ã|Ťã€‰€ã½)×n€‰‚ÿSoIndexedNurbsCurve, SoNurbsSurface?É_'Ê_1 ¿ˆÀ 'Ê_]Ê_N `SoNurbsProfile6èÉ_]Ê_% €"€ˆˆ€‚ÿSoNurbsProfile*'Ê_‡Ê_# €€€‚ÿNAMEM']Ê_ÔÊ_& €N€”‘€€‚ÿSoNurbsProfile - NURBS profile curve3‡Ê_Ë_# € €€‚ÿINHERITS FROM¬SÔÊ_³Ë_Y ‚€¦€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãaC}2€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoProfile > SoNurbsProfile2 Ë_åË_& €€€€ ‚ÿSYNOPSISvO³Ë_[Ì_' €ž€”‘€€‚‚ÿ#include Fields from class SoNurbsProfile:KåË_¦Ì_2 4€2€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatknotVectorP![Ì_öÌ_/ .€B€”‘€‚A€ãaC}2‰‚ÿFields from class SoProfile:a'¦Ì_WÍ_: D€N€T”A‚S~‚Aã-Ï]€‰ƒ‚ãØtW鉃‚ÿSoMFInt32indexSoSFEnumlinkageN%öÌ_¥Í_) "€J€”‘€‚A€‚ÿMethods from class SoNurbsProfile:i5WÍ_Î_4 8€j€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoNurbsProfile()static SoTypegetClassTypeId()N¥Í_\Î_/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:t Î_ÐÏ_h ž€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)\Î_4`/ .€R€”‘€‚A€ã¿\%†‰‚ÿÐÏ_4`èÉ_Methods from class SoFieldContainer:eØÐÏ_™` 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH4`!`@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N™`o`/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ!`¦`Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4o`Ú`& €€‚A€‚ÿDESCRIPTION-÷¦``6 :€ï€”‘€‚A€€€€€‚ÿThis node specifies a NURBS curve that is used as a profile. The curve is defined in the same way as a standard SoNurbsCurve, except that the control points are constructed from the current set of profile coordinates, using the index field./ Ú`6`& €€‚A€‚ÿFIELDSK``2 4€2€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatknotVector‹b6` `) "€Ä€”‘€‚A€‚ÿThe knot vector for the NURBS curve. It must be a list of non-decreasing floating point values.0 `<`& €€‚A€‚ÿMETHODS@ `|`, (€(€T”A‚S~‚A€ƒ‚ÿSoNurbsProfile()e<<`á`) "€x€”‘€‚A€‚ÿCreates a NURBS profile curve node with default settings.U#|`6`2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*á`‰`) "€T€”‘€‚A€‚ÿReturns type identifier for this class.86`Á`& €$€‚A€‚ÿACTION BEHAVIOR{=‰`< `> L€z€”‘€‚Aã©öø(€‰ã³DfL‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoRayPickAction^2Á`š `, (€d€”‘€‚A€€‚ÿAdds a profile to the current traversal state.<< `Ö `& €,€‚A€‚ÿFILE FORMAT/DEFAULT;š ` `* $€"€P„7|‚€‚ÿNurbsProfile {_.Ö `p `1 2€\€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿindex0linkageSTART_FIRSTknotVector0}1  `¡ `& €€‚€‚ÿSEE ALSO­Zp `N `S v€´€”‘€‚ãä+Ža€‰€ãÓÂ.€‰€ã-ÒÀ€‰€ã.ÒÀ€‰‚ÿSoLinearProfile, SoNurbsCurve, SoProfileCoordinate2, SoProfileCoordinate3@¡ `Ž `1@+„¿ÑÁ!Ž `Å `¤…`SoNurbsProperty7N `Å `% €$€ˆˆ€‚ÿSoNurbsProperty*Ž `ï `# €€€‚ÿNAME€ZÅ `o `& €´€”‘€€‚ÿSoNurbsProperty - node that defines additional properties for rendering a NURBS surface3ï `¢ `# € €€‚ÿINHERITS FROM‘Do `3 `M j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoNurbsProperty2 ¢ `e `& €€€€ ‚ÿSYNOPSIST.3 `¹ `& €\€”‘€€‚ÿ#include ‡>e `@`I `€}€T”A‚S~‚A€ƒƒ€€ƒ€€ƒ€€‚ÿenum DrawStyle{SoNurbsProperty::NORMALDraw the NURBS surface normallySoNurbsProperty::BOUNDARIES_AND_TRIM_CURVESDraw the boundaries of the surface and trim curvesSoNurbsProperty::CENTRAL_ISO_PARAM_CURVESDraw two isoparametric curves in the middle of the surface (one for U = 0.5 and one for V=0.5)}N%¹ `Ž`) "€J€”‘€‚A€‚ÿFields from class SoNurbsProperty:½m@`W@`P p€Ú€T”A‚S~‚Aã:YN€‰ƒ‚ãw?2‰ƒ‚ãð@I1‰ƒ‚ãÌÒ剀ƒ€‚ÿSoSFBitMaskdrawStyleSoSFInt3Ž`W@`N `2numSamplePointsSoSFColorcolorSoSFUShortisoParamCurvesPatternI Ž` @`) "€@€”‘€‚A€‚ÿMethods from SoNurbsProperty:j6W@` A`4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoNurbsProperty()static SoTypegetClassTypeId()N @`XA`/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:| A`ÔB`n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)XA`,C`/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÔB`‘E` 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH,C`F`@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N‘E`gF`/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞF`žG`Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4gF`ÒG`& €€‚A€‚ÿDESCRIPTION›lžG`mH`/ .€Ø€”‘€‚A€€€‚ÿThis node defines an additional set of properties used by SoNurbsSurface when rendering NURBS surfaces.æÒG`}I`* "€Í€”‘€‚A€‚ÿFor a large NURBS surface, it is sometimes more effective to display two central isoparametric curves rather than facet boundaries (as in wireframe mode) because the latter may provide an overly complicated view of the surface.îmH`•J`* "€Ý€”‘€‚A€‚ÿThis node allows you to specify the NURBS draw style; the color of the trim curves, boundaries and isoparametric curves; the line pattern of the isoparametric curves; and the number of sample points between trim curves control points. þÔ}I`“K`* "€©€”‘€‚A€‚ÿThe NURBS draw style is a bitmask specifying which combination of the following representations to use for displaying the NURBS: normal display, trim curves and boundaries, and/or central isoparametric curves.J`L`6 :€q€”‘€‚A€€€€€‚ÿTurning off the normal NURBS surface display, and turning on the display of trim curves, boundaries and isoparametric curves can dramatically speed up rendering of large models./ “K`°L`& €€‚A€‚ÿFIELDSLL`üL`2 4€4€T”A‚S~‚Aã:YN€‰ƒ‚ÿSoSFBitMaskdrawStyle`7°L`\M`) "€n€”‘€‚A€‚ÿIndicates which part of the NURBS surface to render.Ë¡üL`'O`* "€C€”‘€‚A€‚ÿThree parts can be selected independently for rendering: the NURBS surface, the trim curve and boundaries lines, and the central isoparametric curves. For instance, when drawStyle is set to (BOUNDARIES_AND_TRIM_CURVES | CENTRAL_ISO_PARAM_CURVES), the triangles (facets) are not rendered. Only the trim curves edges, surface boundaries and isoparametric curves are displayed. By default, drawStyle is set to NORMAL.P\M`wO`2 4€<€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32numSamplePointsæ³'O`i`3 4€g€”‘€‚A€€€€‚ÿnumSamplePoints is used during trim curve tessellation. It specifies the exact numbewO`i`N `r of points to generate between two trim curve control points. If set to -1 (the default), the number of points generated is computed from the SoComplexity node. Setting this field to a small value (less than 3) can reduce the number of triangles generated by the tessellation and thus increase the drawing performance of trimmed NURBS surfaces.FwO`¯`2 4€(€T”A‚S~‚Aãð@I1€‰ƒ‚ÿSoSFColorcolorsJi`"‚`) "€”€”‘€‚A€‚ÿContains the color used to render trim curves and isoparametric curves._'¯`‚`8 @€N€T”A‚S~‚AãÌÒ倉€ƒ€‚ÿSoSFUShortisoParamCurvesPatternb9"‚`ã‚`) "€r€”‘€‚A€‚ÿSets a specific line pattern for isoparametric curves.0 ‚`ƒ`& €€‚A€‚ÿMETHODSAã‚`Tƒ`, (€*€T”A‚S~‚A€ƒ‚ÿSoNurbsProperty()8ƒ`Œƒ`) "€€”‘€‚A€‚ÿConstructor.U#Tƒ`áƒ`2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Œƒ`4„`) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<áƒ`p„`& €,€‚A€‚ÿFILE FORMAT/DEFAULT<4„`¬„`* $€$€P„7|‚€‚ÿNurbsProperty {…Rp„`1…`3 6€¤€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿdrawStyleNORMALnumSamplePoints-1color1 1 1isoParamCurvesPattern0xFFFF}1 ¬„`b…`& €€‚€‚ÿSEE ALSOB1…`¤…`/ .€&€”‘€‚ã½)×n€‰‚ÿSoNurbsSurface?b…`ã…`1¸ˆÀ¯Â"ã…`†`>aSoNurbsSurface6¤…`†`% €"€ˆˆ€‚ÿSoNurbsSurface*ã…`C†`# €€€‚ÿNAMER,†`•†`& €X€”‘€€‚ÿSoNurbsSurface - NURBS surface shape node3C†`Ȇ`# € €€‚ÿINHERITS FROMªQ•†`r‡`Y ‚€¢€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoNurbsSurface2 Ȇ`¤‡`& €€€€ ‚ÿSYNOPSISvOr‡`ˆ`' €ž€”‘€€‚‚ÿ#include Fields from class SoNurbsSurface:EÚ¤‡`_‰`k ¤€µ€T”A‚S~‚Aãw?2€‰ƒ‚ãw?2‰ƒ‚ãw?2‰ƒ‚ãw?2‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ÿSoSFInt32numUControlPointsSoSFInt32numVControlPointsSoSFInt32numSControlPointsSoSFInt32numTControlPointsSoMFFloatuKnotVectorSoMFFloatvKnotVectorSoMFFloatsKnotVectorSoMFFloattKnotVectorN%ˆ`­‰`) "€J€”‘€‚A€‚ÿMethods from class SoNurbsSurface:i5_‰`Š`4 8€j€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoNurbsSurface()static SoTypegetClassTypeId()N­‰`dŠ`/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Š`à‹`n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)dŠ`8Œ`/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØà‹`Ž` 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH8Œ`%`@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NŽ`s`/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ%`¶À`Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() s`¶À`¤…`constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4s`êÀ`& €€‚A€‚ÿDESCRIPTIONú¸¶À`äÂ`B R€q€”‘€‚A€€€€€€€€€‚ÿThis shape node represents a NURBS surface based on the node's knot vectors and on control points constructed from the current coordinates. The current coordinates are used in row-major order (the V direction corresponds to the rows). The number of coordinates used is determined by the numUControlPoints and numVControlPoints fields. The uKnotVector and vKnotVector fields contain floating point arrays of non-decreasing values.õËêÀ`ÙÃ`* "€—€”‘€‚A€‚ÿThe order of the surface in the U and V directions is defined as the number of knots minus the number of control points in the particular direction. The largest order allowed for a NURBS surface is 8.²ˆäÂ`‹Å`* "€€”‘€‚A€‚ÿThe control points of the NURBS surface are transformed by the current cumulative transformation. The surface is drawn with the current light model and drawing style. The coordinates, normals, and texture coordinates of a surface are generated, so you cannot bind explicit normals or texture coordinates to a NURBS surface. The first material in the state is applied to the entire surface.wNÙÃ`Æ`) "€œ€”‘€‚A€‚ÿThe surface is trimmed according to the currently defined profile's curves.Ú°‹Å`ÜÇ`* "€a€”‘€‚A€‚ÿWhen default texture coordinates are applied to a NURBS surface, the edges of the texture square are stretched to fit the surface. The axes of the texture are called S and T; S is horizontal and T is vertical. The axes of the NURBS surface are called U and V; U is horizontal and V is vertical. You can also define texture coordinates explicitly with the S,T location point, the knot vectors, and the current texture coordinates.…\Æ`aÈ`) "€¸€”‘€‚A€‚ÿThe approximation of the surface by polygons is affected by the current complexity value./ ÜÇ`È`& €€‚A€‚ÿFIELDSx>aÈ`É`: D€|€T”A‚S~‚Aãw?2€‰ƒ‚ãw?2‰ƒ‚ÿSoSFInt32numUControlPointsSoSFInt32numVControlPoints_6È`gÉ`) "€l€”‘€‚A€‚ÿNumber of control points in the U and V directions.x>É`ßÉ`: D€|€T”A‚S~‚Aãw?2€‰ƒ‚ãw?2‰ƒ‚ÿSoSFInt32numSControlPointsSoSFInt32numTControlPoints_6gÉ`>Ê`) "€l€”‘€‚A€‚ÿNumber of control points in the S and T directions.l2ßÉ`ªÊ`: D€d€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ÿSoMFFloatuKnotVectorSoMFFloatvKnotVectorW.>Ê`Ë`) "€\€”‘€‚A€‚ÿThe knot vectors in the U and V directions.l2ªÊ`mË`: D€d€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ÿSoMFFloatsKnotVectorSoMFFloattKnotVectorW.Ë`ÄË`) "€\€”‘€‚A€‚ÿThe knot vectors in the S and T directions.0 mË`ôË`& €€‚A€‚ÿMETHODS@ÄË`4Ì`, (€(€T”A‚S~‚A€ƒ‚ÿSoNurbsSurface()_6ôË`“Ì`) "€l€”‘€‚A€‚ÿCreates a NURBS surface node with default settings.U#4Ì`èÌ`2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*“Ì`;Í`) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8èÌ`sÍ`& €$€‚A€‚ÿACTION BEHAVIORH;Í`»Í`2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionxLsÍ`3Î`, (€˜€”‘€‚A€€‚ÿDraws the surface based on the current coordinates, material, and so on.G»Í`zÎ`2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickActionvJ3Î`ðÎ`, (€”€”‘€‚A€€‚ÿPicks the surface based on the current coordinates and transformation.NzÎ`>Ï`2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActioná´ðÎ`+a- (€i€”‘€‚A€€‚ÿComputes the bounding box that encloses all control points of the surface with the current transformation applied to them. Sets the center to the av>Ï`+a¤…`erage of the control points.H>Ï`sa2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackAction·Š+a*a- (€€”‘€‚A€€‚ÿIf any triangle callbacks are registered with the action, they will be invoked for each successive triangle approximating the surface.<safa& €,€‚A€‚ÿFILE FORMAT/DEFAULT;*a¡a* $€"€P„7|‚€‚ÿNurbsSurface {Éfaja< F€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿnumUControlPoints0numVControlPoints0numSControlPoints0numTControlPoints0uKnotVector0vKnotVector0sKnotVector0tKnotVector0}1 ¡a›a& €€‚€‚ÿSEE ALSO£Pja>aS v€ €”‘€‚ã^`ˆ½€‰€ãÓÂ.€‰€€ã¥Ý›>‰€ãaC}2€‰‚ÿSoIndexedNurbsSurface, SoNurbsCurve, SoNurbsProperty, SoProfileA›aa1JÑÁvÃ#a·aÞ‚aSoOctreeOrdering8>a·a% €&€ˆˆ€‚ÿSoOctreeOrdering*aáa# €€€‚ÿNAMEG·a(a- (€5€”‘€€€€‚ÿSoOctreeOrdering - group node derived from SoRenderList that maintains a transparent octree organization of the shapes below it. This speeds view frustum culling in large scenes in which the viewer moves through the scene and much of the scene is not visible at any given time.3áa[a# € €€‚ÿINHERITS FROMéx(aDaq ²€ð€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãÍ\Y€‰€㼿ai€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoSeparator > SoRenderList > SoOctreeOrdering2 [ava& €€€€ ‚ÿSYNOPSISzSDaða' €¦€”‘€€‚‚ÿ#include Fields from class SoOctreeOrdering:äŽvaÔaV z€€T”A‚S~‚AãU×S选ƒ‚ã`‡Ð㉃‚ãU×S鉃‚ãU×S鉃‚ãU×S鉃€ ‚ÿSoSFBooldropCullingSoSFUInt32dropScreenAreaSoSFBoolboundingBoxSubstitutesSoSFBooluseMovingQueueSoSFBooladjustDecimationR#ða&a/ .€F€”‘€‚A€ãÍ\Y‰‚ÿFields from class SoSeparator:³iÔaÙaJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCulling](&a6 a5 :€P€”‘€‚A€㼿ai‰€ €‚ÿMethods from class SoRenderList: ÕbÙa as ´€Å€T”A‚S~‚A€ƒãB-9‰€ ‚€ƒãB-9‰‚ƒ‚ãB-9‰ƒ€ €‚ƒãúß~6‰€ ‚€ƒãúß~6‰‚ƒ‚ãúß~6‰ƒ‚ƒ‚ÿvoidaddRenderObjectType(SoType t)voidremoveRenderObjectType(SoType t)intgetNumRenderObjectTypes() constSoTypegetRenderObjectType(int i) const voidaddRenderObjectName(SbName n)voidremoveRenderObjectName(SbName n)intgetNumRenderObjectNames() constSbNamegetRenderObjectName(int i) const voidremoveAllRenderObjectNames()S$6 a^ a/ .€H€”‘€‚A€ãÍ\Y‰‚ÿMethods from class SoSeparator:¥o a a6 <€Þ€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ÿstatic voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()static SoTypegetClassTypeId()O ^ aR a/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:¤ apaz €I€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ãB-9‰ƒ‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)static SoTypegetClassTypeId()NR a¾a/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|paF@an ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static¾aF@a>a intgetByName(const SbName &name,SoNodeList &list)X)¾až@a/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØF@aCa 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHž@a‹Ca@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NCaÙCa/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ‹CaEaY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ÙCaDEa& €€‚A€‚ÿDESCRIPTIONÂŒEaGa6 :€€”‘€‚A€€€€€‚ÿThe SoOctreeOrdering node uses the functionality from SoRenderList to create a list of paths to the shapes beneath it. It then reorganizes the list of shapes into an octree division of space. During action traversal, it traverses the octree instead of the scene graph. This results in a front to back traversal that quickly skips sections of space that would be culled by the view frustum.ÇDEaÍHa* "€;€”‘€‚A€‚ÿThe OctreeOrdering node draws a bounding box to replace cells in the octree that contain shapes but that are too small, based on an approximate screen size. If a larger shape had already been rendered that passes through this cell, the cell will be culled instead of using the bounding box so that no rendered geometry will be covered by a bounding box. This behavior can be altered by the fields listed below.¨yGauIa/ .€ò€”‘€‚A€ã!§˜m‰‚ÿTo specify the maximum depth during octree ordering, use environment variable IV_OCTREE_MAX_DEPTH. The default is 8./ ÍHa¤Ia& €€‚A€‚ÿFIELDSKuIaïIa2 4€2€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBooldropCullingg>¤IaVJa) "€|€”‘€‚A€‚ÿEnables culling of shapes that are too small on the screen.PïIa¦Ja2 4€<€T”A‚S~‚Aã`‡Ð〉ƒ‚ÿSoSFUInt32dropScreenAreasJVJaKa) "€”€”‘€‚A€‚ÿSets threshold in pixels for drop culling and bounding box substitutes.V$¦JaoKa2 4€H€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolboundingBoxSubstitutesÉ™Ka8La0 .€3€”‘€‚A€€ €‚ÿEnables use of bounding boxes for cells in the octree that contain shapes, but would appear on the screen smaller than the dropScreenArea threshold RoKaŠLa5 :€:€T”A‚S~‚AãU×S选ƒ€ ‚ÿSoSFBooluseMovingQueue¬8La6Na- (€ÿ€”‘€‚A€ €‚ÿSets how this node should handle moving render objects. If this is True, then the moving objects are kept in a separate render list, and are not sorted into the octree, meaning that they will not be drop culled. If this is FALSE, moving objects will be sorted into the octree after each motion, taking more time, but enabling drop and view frustum culling for the moving objects.TŠLaŠNa5 :€>€T”A‚S~‚AãU×S选ƒ€ ‚ÿSoSFBooladjustDecimationûÎ6Na…Oa- (€€”‘€‚A€ €‚ÿIf True, the octree will alter the decimation percentage for objects depending on how large they are in the view. This causes objects closer to camera to appear in more detail than objects further away.<ŠNaÁOa) "€&€‚A€€‚ÿACTION BEHAVIORk3…Oa8€a8 @€f€”‘€‚Aã©öø(€‰ãDRô‰€‚ÿSoGLRÁOa8€a>aenderAction, SoGetPrimitiveCountAction¥sÁOaÝ€a2 4€æ€”‘€‚A€€€€‚ÿUses octree spatial traversal, rendering front to back. All other actions use standard SoSeparator traversal.<8€aa& €,€‚A€‚ÿFILE FORMAT/DEFAULT=Ý€aVa* $€&€P„7|‚€‚ÿOctreeOrdering {¢maøa5 :€Ú€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿdropCullingTRUEdropScreenArea5boundingBoxSubstitutesTRUEuseMovingQueueTRUEadjustDecimationTRUE}1 Va)‚a& €€‚€‚ÿSEE ALSOµbøaÞ‚aS v€Ä€”‘€‚ãDRô€‰€㊆Ř€‰€㼿ai€‰€ãùÉ€‰‚ÿSoGetPrimitiveCountAction, SoLevelOfSimplification, SoRenderList, SoValueOrderingD)‚a"ƒa1ž¯ÂÉ€Ä$"ƒa]ƒabSoOffscreenRenderer;Þ‚a]ƒa% €,€ˆˆ€‚ÿSoOffscreenRenderer*"ƒa‡ƒa# €€€‚ÿNAME‚\]ƒa „a& €¸€”‘€€‚ÿSoOffscreenRenderer - renders to an off-screen buffer for printing or generating textures3‡ƒa<„a# € €€‚ÿINHERITS FROM@ „a|„a) "€.€”‘€€€‚ÿSoOffscreenRenderer2 <„a®„a& €€€€ ‚ÿSYNOPSISR,|„a…a& €X€”‘€€‚ÿ#include X®„aX†a? L€3€T”A‚S~‚A€ƒ‚ƒƒ€€‚ÿenum Components{SoOffscreenRenderer::LUMINANCESoOffscreenRenderer::LUMINANCE_TRANSPARENCYSoOffscreenRenderer::RGBSoOffscreenRenderer::RGB_TRANSPARENCY}enum TIFFCompressionMode{SoOffscreenRenderer::NO_COMPRESSION,SoOffscreenRenderer::PACKBITS_COMPRESSION(Default)}S*…a«†a) "€T€”‘€‚A€‚ÿMethods from class SoOffscreenRenderer:¹X†aLjac ”€s€T”A‚S~‚A€ƒãñf‘¸‰‚ƒã©öø(‰‚ƒ‚ƒ‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒãÀ"%‰‚ÿSoOffscreenRenderer(const SbViewportRegion &viewportRegion)SoOffscreenRenderer(SoGLRenderAction *ra)~SoOffscreenRenderer()static floatgetScreenPixelsPerInch()static SbVec2sgetMaximumResolution()voidsetComponents(Components components)ComponentsgetComponents() constvoidsetViewportRegion(const SbViewportRegion ®ion)const SbViewportRegion &getViewportRegion() constvoidsetBackgroundColor(const SbColor &c)W«†a‹a• ø€…€T”A‚S~‚A€ãÀ"%‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚㑶p6‰ƒã’n%9‰‚㑶p6‰ƒãMy'9‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒƒ€€‚㑶p6‰ƒ€‚㑶p6€‰ƒã}ƒõ(‰‚ÿconst SbColor &getBackgroundColor() constvoidsetGLRenderAction(const SoGLRenderAction *ra)SoGLRenderAction *getGLRenderAction() constSbBoolrender(SoNode *scene)SbBoolrender(SoPath *scene)unsigned char *getBuffer() constSbBoolwriteToRGB(FILE *fp) constSbBoolwriteToBMP(FILE *fp) const[Win32 only]SbBoolwriteToPostScript(FILE *fp) constSbBoolwriteToPostScript(FILE *fp,const SbVec2f &printSize) constù³ÇˆaŒaF Z€g€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒƒ€€‚ÿSbBoolwriteToTIFF( FILE *fp,TIFFCompressionMode TIFFcm = PACKBITS_COMPRESSION ) constSbBoolwriteToJPEG( FILE *fp,float quality = 1.0 ) constHDCgetDC()[Win32 only]8‹aOŒa) "€€‚A€€‚ÿDESCRIPTION`6Œa¯a* "€m€”‘€‚A€‚ÿThis class is used to render into an off-screen buffer to create a printable image or to generate a texture image. It uses off-screen bitmaps for rendering. Methods are provided to write the buffer to a file, as an RGB image, an encapsulated PostScript description, or in one of several other image formats.0 OŒaßa& €€‚A€‚ÿMETHODSƯa¢Ža= H€ €T”A‚S~‚A€ƒãñf‘¸‰‚ƒã©öø(‰‚ƒ‚ÿSoOffscreenRenderer(const SbViewportRegion &viewportRegion)SoOffscreenRenderer(SoGLRenderAction *ra)~SoOffscreenRenderer()Hßa Àa* "€=€”‘€‚A€‚ÿConstructors and destructor. If a render action is passed to the constructor, that action will be used in all subsequent offscreen renderings. Otherwise, an internal instance of an SoGLRenderAction will be maintained with a viewport region set to the on passed in by the constructor.¢Ža ÀaÞ‚aT(¢Ža`Àa, (€P€T”A‚S~‚A€ƒ‚ÿstatic floatgetScreenPixelsPerInch()f ÀaïÀa) "€Ì€”‘€‚A€‚ÿReturns the number of pixels per inch (in the horizontal direction) of the current X device screen.\*`ÀaKÁa2 4€T€T”A‚S~‚A€㊃õ(‰ƒ‚ÿstatic SbVec2sgetMaximumResolution()a8ïÀa¬Áa) "€p€”‘€‚A€‚ÿGet the maximum supported resolution of the viewport.{MKÁa'Âa. ,€š€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetComponents(Components components)ComponentsgetComponents() constZ1¬ÁaÂa) "€b€”‘€‚A€‚ÿSets or returns the components to be rendered.ªp'Âa+Ãa: D€à€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ÿvoidsetViewportRegion(const SbViewportRegion ®ion)const SbViewportRegion &getViewportRegion() const´ŠÂaßÃa* "€€”‘€‚A€‚ÿSets or returns the viewport region used for rendering. This will NOT be applied to the viewport region of any render action passed in.•[+ÃatÄa: D€¶€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ÿvoidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() const_6ßÃaÓÄa) "€l€”‘€‚A€‚ÿSets or returns the background color for rendering. ftÄasÅa: D€Ì€T”A‚S~‚A€ƒã©öø(‰‚ã©öø(‰ƒ‚ÿvoidsetGLRenderAction(const SoGLRenderAction *ra)SoGLRenderAction *getGLRenderAction() const›rÓÄaÆa) "€ä€”‘€‚A€‚ÿSet and get the render action to use for rendering. This will return any render action passed in by the caller.ŠDsÅa˜ÆaF \€ˆ€T”A‚S~‚A㑶p6€‰ƒã’n%9‰‚㑶p6‰ƒãMy'9‰‚ÿSbBoolrender(SoNode *scene)SbBoolrender(SoPath *scene)~UÆaÇa) "€ª€”‘€‚A€‚ÿRenders the given scene, specified as a node or a path, into an off-screen buffer.P$˜ÆafÇa, (€H€T”A‚S~‚A€ƒ‚ÿunsigned char *getBuffer() constÞÇanÉa* "€½€”‘€‚A€‚ÿReturns the buffer containing the rendered image. The buffer is an array of unsigned characters. Each pixel is stored sequentially by scanline, starting with the lower left corner. The data stored for each pixel is determined by the Components set before rendering. Pixels are stored in RGBA order and are packed without any padding between pixels or scanlines. The buffer is allocated by the offscreen renderer class and the space is deleted when the instance is destructed.X&fÇaÆÉa2 4€L€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolwriteToRGB(FILE *fp) constg>nÉa-Êa) "€|€”‘€‚A€‚ÿWrites the buffer as a .rgb file to the given file pointer.n5ÆÉa›Êa9 B€j€T”A‚S~‚A㑶p6€‰ƒƒ€€‚ÿSbBoolwriteToBMP(FILE *fp) const[Win32 only]€T-ÊaËa, (€¨€”‘€‚A€€‚ÿWrites the buffer as a "Windows RGB Encoded".bmp file to the given file pointer.½v›ÊaØËaG ^€ì€T”A‚S~‚A㑶p6€‰ƒ€‚㑶p6€‰ƒã}ƒõ(‰‚ÿSbBoolwriteToPostScript(FILE *fp) constSbBoolwriteToPostScript(FILE *fp,const SbVec2f &printSize) constýÓËaÕÌa* "€§€”‘€‚A€‚ÿWrites the buffer as encapsulated PostScript. If a print size is not given, the size of the image in the buffer is adjusted so it is the same as the apparent size of the viewport region on the current device.\ØËadÍa3 6€¸€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolwriteToTIFF( FILE *fp,TIFFCompressionMode TIFFcm = PACKBITS_COMPRESSION ) constg>ÕÌaËÍa) "€|€”‘€‚A€‚ÿWrites the buffer as a TIFF file to the given file pointer.q>dÍa<Îa3 6€|€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolwriteToJPEG( FILE *fp,float quality = 1.0 ) constôÊËÍa0Ïa* "€•€”‘€‚A€‚ÿWrites the buffer as a JPEG file to the given file pointer. 1.0 is the best quality with the least compression, 0.0 is the worst quality with the most compression. A typical value for quality is 0.7.P<Îa€Ïa3 6€:€T”A‚S~‚A€ƒƒ€€‚ÿHDCgetDC()[Win32 only]’e0Ïab- (€Ë€”‘€‚A€€‚ÿReturns the memory "device context" containing the rendered image. This value is o€ÏabÞ‚anly valid after the "render" method has been called (at least once) on an instance of SoOffScreenRenderer. Standard Win32 API calls can be used to retrieve the actual bitmap (DIBsection) from this device context, to copy the bitmap into another device context, and so on.8€ÏaVb1yñÅ>†Å%Vb…bßBbSoOnOff/ b…b% €€ˆˆ€‚ÿSoOnOff*Vb¯b# €€€‚ÿNAME\6…b b& €l€”‘€€‚ÿSoOnOff - engine that functions as an on/off switch3¯b>b# € €€‚ÿINHERITS FROM‹> bÉbM j€|€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoOnOff2 >bûb& €€€€ ‚ÿSYNOPSISjCÉbeb' €†€”‘€€‚‚ÿ#include Inputs from class SoOnOff:|:ûbábB T€t€T”A‚S~‚Aã%瀉ƒ‚ã%牃‚ã%牃‚ÿSoSFTriggeronSoSFTriggeroffSoSFTriggertoggleGeb(b) "€<€”‘€‚A€‚ÿOutputs from class SoOnOff:a'áb‰b: D€N€T”A‚S~‚A€ãU×S鉃‚ãU×S鉃‚ÿ(SoSFBool)isOn(SoSFBool)isOffG(bÐb) "€<€”‘€‚A€‚ÿMethods from class SoOnOff:9 ‰b b, (€€T”A‚S~‚A€ƒ‚ÿSoOnOff()P!ÐbYb/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:} bYbƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)Yb±b/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØYb b 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH±bž b@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N bì b/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þž b# bY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ì bW b& €€‚A€‚ÿDESCRIPTION;# bæ bT v€w€”‘€‚A€€€€€€€€€€€€€€€‚ÿThis engine has three triggers as input and two Boolean values as output. The isOn output is a switch that can be turned on or off by triggering the corresponding input. You can toggle the value by triggering the toggle input. By default isOn is FALSE. The isOff output value is the inverse of isOn3 W bb) "€€‚A€€ ‚ÿINPUTSEæ b^b2 4€&€T”A‚S~‚Aã%瀉ƒ‚ÿSoSFTriggeronLbªb/ .€:€”‘€‚A€€€‚ÿTurn the isOn switch on.F^bðb2 4€(€T”A‚S~‚Aã%瀉ƒ‚ÿSoSFTriggeroffMªb=b/ .€<€”‘€‚A€€€‚ÿTurn the isOn switch off.Iðb†b2 4€.€T”A‚S~‚Aã%瀉ƒ‚ÿSoSFTriggertoggleD=bÊb) "€6€”‘€‚A€‚ÿToggle the switch value.0 †b @b& €€‚A€‚ÿOUTPUTSÊb @bbFÊbR@b2 4€(€T”A‚S~‚A€ãU×S鉃‚ÿ(SoSFBool)isOn9 @b‹@b) "€ €”‘€‚A€‚ÿSwitch value.GR@bÒ@b2 4€*€T”A‚S~‚A€ãU×S鉃‚ÿ(SoSFBool)isOffH‹@bAb/ .€2€”‘€‚A€€€‚ÿThe inverse of isOn.0 Ò@bJAb& €€‚A€‚ÿMETHODS9 AbƒAb, (€€T”A‚S~‚A€ƒ‚ÿSoOnOff()8JAb»Ab) "€€”‘€‚A€‚ÿConstructor.<ƒAb÷Ab& €,€‚A€‚ÿFILE FORMAT/DEFAULT4 »Ab+Bb* $€€P„7|‚€‚ÿOnOff {A÷AblBb. ,€&€P„|‚€‚‚‚‚‚ÿonofftoggle}1 +BbBb& €€‚€‚ÿSEE ALSOBlBbßBb/ .€&€”‘€‚ãë\¼N€‰‚ÿSoEngineOutput: BbCb1ÇvÃñÅ&CbJCb±‹bSoOneShot1 ßBbJCb% €€ˆˆ€‚ÿSoOneShot*CbtCb# €€€‚ÿNAMEa;JCbÕCb& €v€”‘€€‚ÿSoOneShot - timer that runs for a pre-set amount of time3tCbDb# € €€‚ÿINHERITS FROM@ÕCb•DbM j€€€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoOneShot2 DbÇDb& €€€€ ‚ÿSYNOPSISP*•DbEb& €T€”‘€€‚ÿ#include ÊŠÇDbáEb@ N€€T”A‚S~‚A€ƒ€ƒ€€ƒ€‚ÿenum Flags{SoOneShot::RETRIGGERABLECan start over during the cycleSoOneShot::HOLD_FINALOutput values stay high after cycle}HEb)Fb) "€>€”‘€‚A€‚ÿInputs from class SoOneShot:·eáEbàFbR t€Ê€T”A‚S~‚Aãøi选ƒ‚ãøi鉃‚ã%牃‚ã:YN‰ƒ‚ãU×S鉃‚ÿSoSFTimetimeInSoSFTimedurationSoSFTriggertriggerSoSFBitMaskflagsSoSFBooldisableI )Fb)Gb) "€@€”‘€‚A€‚ÿOutputs from class SoOneShot:‚@àFb«GbB T€€€T”A‚S~‚A€ãøi鉃‚ãU×S鉃‚ã0â1‰ƒ‚ÿ(SoSFTime)timeOut(SoSFBool)isActive(SoSFFloat)rampI )GbôGb) "€@€”‘€‚A€‚ÿMethods from class SoOneShot:;«Gb/Hb, (€€T”A‚S~‚A€ƒ‚ÿSoOneShot()P!ôGbHb/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}/HbJbƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)Hb×Jb/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØJb€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÄMbIObY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Nb}Ob& €€‚A€‚ÿDESCRIPTION ÔIOb“€b6 :€©€”‘€‚A€€€€€‚ÿThis engine is a timer that runs for a pre-set amount of time and then stops}Ob“€bßBb. By default, the timeIn input is connected to the realTime global field. It can, however, by connected to any other time source.©a}Ob<‚bH ^€Ã€”‘€‚A€€€€€€€€€€€‚ÿThe timer is started when the trigger input is touched. It then runs for the specified duration, and updates the timeOut output with the time that has elapsed. During that time, the ramp output is also updated. The ramp output starts at 0.0 at the beginning of the cycle, and linearly increases until it reaches 1.0 at the end of the cycle.Ö“€bBƒb0 .€­€”‘€‚A€€€‚ÿYou can disable the timer by setting the disable input to TRUE. The output value remains 0.0 while the timer is disabled. If the timer is disabled in the middle of a cycle the output values will be set to 0.0. ð<‚bb„b0 .€á€”‘€‚A€€€‚ÿThe flags input contains control flags. Using the flags you can set the timer to be retriggerable in the middle of a cycle, and set the output values to stay high after the cycle has been completed. By default, these flags are not set./ Bƒb‘„b& €€‚A€‚ÿINPUTSFb„bׄb2 4€(€T”A‚S~‚Aãøi选ƒ‚ÿSoSFTimetimeIn9‘„b…b) "€ €”‘€‚A€‚ÿRunning time.HׄbX…b2 4€,€T”A‚S~‚Aãøi选ƒ‚ÿSoSFTimedurationI …b¡…b) "€@€”‘€‚A€‚ÿDuration of the active cycle.JX…bë…b2 4€0€T”A‚S~‚Aã%瀉ƒ‚ÿSoSFTriggertriggerª€¡…b•†b* "€€”‘€‚A€‚ÿStart the cycle. The trigger will be ignored if it is touched in the middle of a cycle and the RETRIGGERABLE flag is not set.Hë…b݆b2 4€,€T”A‚S~‚Aã:YN€‰ƒ‚ÿSoSFBitMaskflags:•†b‡b) "€"€”‘€‚A€‚ÿControl flags.G݆b^‡b2 4€*€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBooldisableK"‡b©‡b) "€D€”‘€‚A€‚ÿIf TRUE, the timer is disabled.0 ^‡bÙ‡b& €€‚A€‚ÿOUTPUTSI©‡b"ˆb2 4€.€T”A‚S~‚A€ãøi鉃‚ÿ(SoSFTime)timeOutHÙ‡bjˆb) "€>€”‘€‚A€‚ÿElapsed time from the start.J"ˆb´ˆb2 4€0€T”A‚S~‚A€ãU×S鉃‚ÿ(SoSFBool)isActiveL#jˆb‰b) "€F€”‘€‚A€‚ÿIs TRUE during the active cycle.G´ˆbG‰b2 4€*€T”A‚S~‚A€ã0â1‰ƒ‚ÿ(SoSFFloat)rampK"‰b’‰b) "€D€”‘€‚A€‚ÿRamps linearly from 0.0 to 1.0.0 G‰b‰b& €€‚A€‚ÿMETHODS;’‰bý‰b, (€€T”A‚S~‚A€ƒ‚ÿSoOneShot()7‰b4Šb) "€€”‘€‚A€‚ÿConstructor<ý‰bpŠb& €,€‚A€‚ÿFILE FORMAT/DEFAULT6 4Šb¦Šb* $€€P„7|‚€‚ÿOneShot {yEpŠb‹b4 8€Š€P„|‚€ƒ‚‚ƒ‚ƒ‚ƒ‚‚‚ÿduration1triggerflags()disableFALSEtimeIn}1 ¦ŠbP‹b& €€‚€‚ÿSEE ALSOa&‹b±‹b; F€L€”‘€‚ãIR~Ó€‰€ãë\¼N€‰‚ÿSoElapsedTime, SoEngineOutput@P‹bñ‹b1 É€ÄÄ'ñ‹b(Œb„ÈbSoOneShotSensor7±‹b(Œb% €$€ˆˆ€‚ÿSoOneShotSensor*ñ‹bRŒb# €€€‚ÿNAME]7(Œb¯Œb& €n€”‘€€‚ÿSoOneShotSensor - sensor for one-time only callbacks3RŒbâŒb# € €€‚ÿINHERITS FROM|;¯Œb^bA R€v€”‘€ãrX.选€㜺餀‰€€€‚ÿSoSensor > SoDelayQueueSensor > SoOneShotSensor2 âŒbb& €€€€ ‚ÿSYNOPSIS{T^b Žb' €¨€”‘€€‚‚ÿ#include Methods from class SoOneShotSensor:‰Xb”Žb1 2€°€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿSoOneShotSensor()SoOneShotSensor(SoSensorCB *func,void *data)~SoOneShotSensor()Z+ ŽbîŽb/ .€V€”‘€‚A€㜺餉‚ÿMethods from class SoDelayQueueSensor:ë®”ŽbÙb= H€]€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ÿvoidsetPriority(uint32_t pri)uint32_tgetPriority()static uint32_tgetDefaultPriority()virtual voidschedule()virtual voidunschedule()virtual SbBoolisScheduled()P!îŽb5Àb/ .€B€”‘€‚A€Ùb5Àb±‹bãrX.鉂ÿMethods from class SoSensor:½ŠÙbòÀb3 4€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetFunction(SoSensorCB *callbackFunction)SoSensorCB *getFunction() constvoidsetData(void *callbackData)void *getData() const45Àb&Áb& €€‚A€‚ÿDESCRIPTION<òÀbbÄb* "€%€”‘€‚A€‚ÿA one-shot sensor is triggered once after it is scheduled, when the delay queue is processed. Like all delay queue sensors, one-shot sensors with a non-zero priority are just added to the delay queue when scheduled; if they are scheduled again before the delay queue is processed nothing happens, and they are guaranteed to be called only once when the delay queue is processed. For example, a one-shot sensor whose callback function redraws the scene might be scheduled whenever the scene graph changes and whenever a window-system event reporting that the window changed size occurs. By using a one-shot, the scene will only be redrawn once even if a window-changed-size event occurs just after the scene graph is modified (or if several window-changed-size events occur in a row).Úª&Áb<Åb0 .€U€”‘€‚A€€€‚ÿCalling schedule() in the callback function is a useful way of getting something to happen repeatedly as often as possible, while still handling events and timeouts.¯…bÄbëÅb* "€ €”‘€‚A€‚ÿA priority 0 one-shot sensor isn't very useful, since scheduling it is exactly the same as directly calling its callback function.0 <ÅbÆb& €€‚A€‚ÿMETHODSsDëÅbŽÆb/ .€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿSoOneShotSensor()SoOneShotSensor(SoSensorCB *func,void *data)ŸvÆb-Çb) "€ì€”‘€‚A€‚ÿCreation methods. The second method takes the callback function and data to be called when the sensor is triggered.BŽÆboÇb, (€,€T”A‚S~‚A€ƒ‚ÿ~SoOneShotSensor()€W-ÇbïÇb) "€®€”‘€‚A€‚ÿDestroys the sensor, freeing up any memory associated with it after unscheduling it.1 oÇb Èb& €€‚A€‚ÿSEE ALSOd)ïÇb„Èb; F€R€”‘€‚AãʇõÀ€‰€㜺餀‰‚ÿSoIdleSensor, SoDelayQueueSensorE ÈbÉÈb1ÊÄ Æ(ÉÈbÉbªcSoOrthographicCamera<„ÈbÉb% €.€ˆˆ€‚ÿSoOrthographicCamera*ÉÈb/Éb# €€€‚ÿNAMEX2Éb‡Éb& €d€”‘€€‚ÿSoOrthographicCamera - orthographic camera node3/ÉbºÉb# € €€‚ÿINHERITS FROM±X‡ÉbkÊbY ‚€°€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã½V)\€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoCamera > SoOrthographicCamera2 ºÉbÊb& €€€€ ‚ÿSYNOPSIS‚[kÊbËb' €¶€”‘€€‚‚ÿ#include Fields from class SoOrthographicCamera:GÊbfËb2 4€*€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatheightO ËbµËb/ .€@€”‘€‚A€ã½V)\‰‚ÿFields from class SoCamera:°fËbÈÌbc ”€a€T”A‚S~‚AãØtW选ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFEnumviewportMappingSoSFVec3fpositionSoSFRotationorientationSoSFFloataspectRatioSoSFFloatnearDistanceSoSFFloatfarDistanceSoSFFloatfocalDistanceT+µËbÍb) "€V€”‘€‚A€‚ÿMethods from class SoOrthographicCamera:o;ÈÌb‹Íb4 8€v€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoOrthographicCamera()static SoTypegetClassTypeId()P!ÍbÛÍb/ .€B€”‘€‚A€ã½V)\‰‚ÿMethods from class SoCamera:š‹ÍbàÏbk ¤€5€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒ‚㪮§O‰ƒ‚ƒã’n%9‰ãñf‘¸‰‚ƒãMy'9‰ãñf‘¸‰‚ãñf‘¸‰ƒãñf‘¸‰‚ÿvoidpointAt(const SbVec3f &targetPoint)virtual voidscaleHeight(float scaleFactor)virtual SbViewVolumegetViewVolume(float useAspectRatio = 0.0) constvoidviewAll(SoNode *sceneRoot,const SbViewportRegion &vpRegion,float slack = 1.0)voidviewAll(SoPath *path,const SbViewportRegion &vpRegion,float slack = 1.0)SbViewportRegiongetViewportBounds(const SbViewportRegion ®ion) constNÛÍb:c/ .€>€”‘àÏb:c„Èb€‚A€ã’n%9‰‚ÿMethods from class SoNode:|àÏb¶cn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X):cc/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eضcsc 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHcûc@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NscIc/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þûc€cY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Ic´c& €€‚A€‚ÿDESCRIPTION'÷€cÛc0 .€ï€”‘€‚A€€€‚ÿAn orthographic camera defines a parallel projection from a viewpoint. This camera does not diminish objects with distance, as an SoPerspectiveCamera does. The viewing volume for an orthographic camera is a rectangular parallelepiped (a box).[´c6 cB R€3€”‘€‚A€€€€€€€€€‚ÿBy default, the camera is located at (0,0,1) and looks along the negative z-axis; the position and orientation fields can be used to change these values. The height field defines the total height of the viewing volume; this and the aspectRatio field determine its width./ Ûce c& €€‚A€‚ÿFIELDSG6 c¬ c2 4€*€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatheightI e cõ c) "€@€”‘€‚A€‚ÿHeight of the viewing volume.0 ¬ c% c& €€‚A€‚ÿMETHODSFõ ck c, (€4€T”A‚S~‚A€ƒ‚ÿSoOrthographicCamera()f=% cÑ c) "€z€”‘€‚A€‚ÿCreates an orthographic camera node with default settings.U#k c& c2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Ñ cy c) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8& c± c& €$€‚A€‚ÿACTION BEHAVIOR¸ny ci cJ d€Ü€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãàê‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoHandleEventAction, SoRayPickActionf:± cÏ c, (€t€”‘€‚A€€‚ÿSets the viewport and camera information in the state.<i c c& €,€‚A€‚ÿFILE FORMAT/DEFAULTAÏ cL c* $€.€P„7|‚€‚ÿOrthographicCamera {ÈŒ cc< F€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿviewportMappingADJUST_CAMERAposition0 0 1orientation0 0 1 0aspectRatio1nearDistance1farDistance10focalDistance5height2}1 L cEc& €€‚€‚ÿSEE ALSOe*cªc; F€T€”‘€‚㪮§O€‰€ã}”z»€‰‚ÿSbViewVolume, SoPerspectiveCamera9Ecãc1>†Å­Ç)ãccî†cSoOutput0 ªcc% €€ˆˆ€‚ÿSoOutput*ãc=c# €€€‚ÿNAMEZ4c—c& €h€”‘€€‚ÿSoOutput - used to write Open Inventor data files3=cÊc# € €€‚ÿINHERITS FROM5 —c @c) "€€”‘€€€‚ÿSoOutputÊc @cªc2 Êc>@c& €€€€ ‚ÿSYNOPSISG! @c…@c& €B€”‘€€‚ÿ#include k>>@cð@c- *€|€T”A‚S~‚A€ƒ‚ÿtypedef void *SoOutputReallocCB(void *ptr,size_t newSize)H…@c8Ac) "€>€”‘€‚A€‚ÿMethods from class SoOutput:,Åð@cdCcg œ€‹€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ÿSoOutput()~SoOutput()voidsetFilePointer(FILE *newFP)FILE *getFilePointer() constSbBoolopenFile(const char *fileName)closeFile()voidsetBuffer(void *bufPointer,size_t initSize,SoOutputReallocCB *reallocFunc,int32_t offset = 0)SbBoolgetBuffer(void *&bufPointer,size_t &nBytes) constsize_tgetBufferSize() constvoidresetBuffer()voidsetBinary(SbBool flag)SbBoolisBinary() constvoidsetHeaderString(const SbString &str)Õ–8Ac9Dc? L€-€T”A‚S~‚A€ƒ‚ãXíʉƒ‚ãXíʉƒ‚ƒ‚ÿvoidresetHeaderString()static SbStringgetDefaultASCIIHeader()static SbStringgetDefaultBinaryHeader()voidsetFloatPrecision(int precision)4dCcmDc& €€‚A€‚ÿDESCRIPTIONÍ—9Dc:Fc6 :€/€”‘€‚A€€€€€‚ÿThis class is used for writing Open Inventor data files. It supports both ASCII (default) and binary formats and provides some convenience functions for handling files. It can also write to a buffer in memory as well as to a file pointer. A user-defined header can be specified for the output file. An instance of SoOutput is contained in an SoWriteAction; this is typically the only instance needed.0 mDcjFc& €€‚A€‚ÿMETHODSI:Fc³Fc. ,€6€T”A‚S~‚A€ƒ‚ƒ‚ÿSoOutput()~SoOutput()·jFcjGc6 :€€”‘€‚A€€€€€‚ÿConstructor and destructor. The default SoOutput writes to stdout. The destructor closes any files opened by the SoOutput.O#³Fc¹Gc, (€F€T”A‚S~‚A€ƒ‚ÿvoidsetFilePointer(FILE *newFP)J!jGcHc) "€B€”‘€‚A€‚ÿSets file pointer to write to.L ¹GcOHc, (€@€T”A‚S~‚A€ƒ‚ÿFILE *getFilePointer() constg>Hc¶Hc) "€|€”‘€‚A€‚ÿReturns the file pointer in use, or NULL if using a buffer.\*OHcIc2 4€T€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolopenFile(const char *fileName)wN¶Hc‰Ic) "€œ€”‘€‚A€‚ÿOpens named file, sets file pointer to result. This returns FALSE on error.;IcÄIc, (€€T”A‚S~‚A€ƒ‚ÿcloseFile()b3‰Ic&Jc/ .€f€”‘€‚A€€€‚ÿCloses current file if opened with openFile().—hÄIc½Jc/ .€Ð€T”A‚S~‚A€ƒ‚ÿvoidsetBuffer(void *bufPointer,size_t initSize,SoOutputReallocCB *reallocFunc,int32_t offset = 0))ÿ&JcæKc* "€ÿ€”‘€‚A€‚ÿSets up memory buffer to write to, initial size, reallocation function (which is called if there is not enough room in the buffer), and offset in the buffer at which to begin writing. If the reallocation function returns NULL, writing will be disabled.q>½JcWLc3 6€|€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolgetBuffer(void *&bufPointer,size_t &nBytes) constª€æKcMc* "€€”‘€‚A€‚ÿReturns pointer to memory buffer being written to and the new size of the buffer. Returns FALSE if not writing into a buffer.KWLcLMc, (€>€T”A‚S~‚A€ƒ‚ÿsize_tgetBufferSize() const³‰McÿMc* "€€”‘€‚A€‚ÿThe total number of bytes allocated to a memory buffer may be larger than the number of bytes written. This returns that total number.ALMc@Nc, (€*€T”A‚S~‚A€ƒ‚ÿvoidresetBuffer()vMÿMc¶Nc) "€š€”‘€‚A€‚ÿResets buffer for output again. Output starts over at beginning of buffer.R @NcOc2 4€@€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidsetBinary(SbBool flag)d;¶NclOc) "€v€”‘€‚A€‚ÿSets whether output should be ASCII (default) or binary.NOcºOc2 4€8€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisBinary() constQ(lOc€c) "€P€”‘€‚A€‚ÿReturns current state of binºOc€cªcary flag.`.ºOcw€c2 4€\€T”A‚S~‚A€ƒãXíʉ‚ÿvoidsetHeaderString(const SbString &str)Q'€cÈ‚c* "€O€”‘€‚A€‚ÿSets the header for output files. This is useful, for example, if you have a file format that is a superset of the Open Inventor file format and you want Open Inventor to read the files. It is highly recommend that in your new header you simply append to the header of the Open Inventor file format you are extending. For example, if a new file format is based on the Open Inventor 2.1 file format, register a header similar to: "#Inventor V2.1 ascii MY FILE FORMAT EXTENSION". Then all Open Inventor 2.1 applications (and later) can read the file.Gw€cƒc, (€6€T”A‚S~‚A€ƒ‚ÿvoidresetHeaderString()h?È‚cwƒc) "€~€”‘€‚A€‚ÿResets the header for output files to be the default header.^,ƒcÕƒc2 4€X€T”A‚S~‚A€ãXíʉƒ‚ÿstatic SbStringgetDefaultASCIIHeader()e<wƒc:„c) "€x€”‘€‚A€‚ÿReturns the string representing the default ASCII header._-Õƒc™„c2 4€Z€T”A‚S~‚A€ãXíʉƒ‚ÿstatic SbStringgetDefaultBinaryHeader()f=:„cÿ„c) "€z€”‘€‚A€‚ÿReturns the string representing the default binary header.T(™„cS…c, (€P€T”A‚S~‚A€ƒ‚ÿvoidsetFloatPrecision(int precision)òÈÿ„cE†c* "€‘€”‘€‚A€‚ÿSets the precision for writing floating point numbers, i.e. the number of significant digits. Floating point numbers are written using %.xg format, where 'x' is the value of the precision argument.1 S…cv†c& €€‚A€‚ÿSEE ALSOx1E†cî†cG ^€b€”‘€‚AãþßC˜€‰€ãeY €‰€ãüµM›€‰‚ÿSoInput, SoWriteAction, SoTranSender> v†c,‡c1f ÆP…Ç*,‡ca‡cØÉcSoPackedColor5î†ca‡c% € €ˆˆ€‚ÿSoPackedColor*,‡c‹‡c# €€€‚ÿNAMErLa‡cý‡c& €˜€”‘€€‚ÿSoPackedColor - node that defines base colors using packed representation3‹‡c0ˆc# € €€‚ÿINHERITS FROMBý‡c¿ˆcM j€„€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoPackedColor2 0ˆcñˆc& €€€€ ‚ÿSYNOPSIStM¿ˆce‰c' €š€”‘€€‚‚ÿ#include Fields from class SoPackedColor:Mñˆc²‰c2 4€6€T”A‚S~‚AãŽmç)€‰ƒ‚ÿSoMFUInt32orderedRGBAM$e‰cÿ‰c) "€H€”‘€‚A€‚ÿMethods from class SoPackedColor:h4²‰cgŠc4 8€h€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoPackedColor()static SoTypegetClassTypeId()Nÿ‰cµŠc/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|gŠc1Œcn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)µŠc‰Œc/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ1ŒcîŽc 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH‰Œcvc@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NîŽcÄc/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞvcÁcY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ã‘ÄcÁcî†c¶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Äc;Ác& €€‚A€‚ÿDESCRIPTIONW$Ác’Ãc3 4€I€”‘€‚A€€€€‚ÿSoPackedColor is similar to SoBaseColor in that it sets the diffuse color component of the current material. However, it also changes the transparency component. The color and transparency information is packed into unsigned 32-bit integers: 0xrrggbbaa, where aa represents the alpha (0x00 = fully transparent, 0xff = opaque), and rr, gg, and bb represent the red, blue, and green components of the color, respectively. Note that the order (r,g,b,a) of these components is reversed from the ordering in releases of Open Inventor prior to 2.1.ä´;ÁcvÄc0 .€i€”‘€‚A€€€‚ÿIf the transparency type is SoGLRenderAction::SCREEN_DOOR, only the first transparency value will be used. With other transparency types, multiple transparencies will be used.৒ÃcVÅc9 @€O€”‘€‚A€€€€€€‚ÿSoPackedColor uses less memory than SoBaseColor or SoMaterial to store multiple color and transparency values. It can be used in cases where space is critical./ vÄc…Åc& €€‚A€‚ÿFIELDSMVÅcÒÅc2 4€6€T”A‚S~‚AãŽmç)€‰ƒ‚ÿSoMFUInt32orderedRGBAF…ÅcÆc) "€:€”‘€‚A€‚ÿDefines the packed colors.0 ÒÅcHÆc& €€‚A€‚ÿMETHODS?Æc‡Æc, (€&€T”A‚S~‚A€ƒ‚ÿSoPackedColor()^5HÆcåÆc) "€j€”‘€‚A€‚ÿCreates a packed color node with default settings.U#‡Æc:Çc2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*åÆcÇc) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8:ÇcÅÇc& €$€‚A€‚ÿACTION BEHAVIORb*Çc'Èc8 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackActionf:ÅÇcÈc, (€t€”‘€‚A€€‚ÿSets the current base (diffuse) color(s) in the state.<'ÈcÉÈc& €,€‚A€‚ÿFILE FORMAT/DEFAULT:ÈcÉc* $€ €P„7|‚€‚ÿPackedColor {IÉÈcLÉc- *€8€P„|‚€ƒ‚‚‚ÿorderedRGBA0xccccccff}1 Éc}Éc& €€‚€‚ÿSEE ALSO[ LÉcØÉc; F€@€”‘€‚ãÚ{tm€‰€ãOjnÄ€‰‚ÿSoBaseColor, SoMaterial7}ÉcÊc1z&­ÇGÉ+Êc=Êc¦€dSoPath. ØÉc=Êc% €€ˆˆ€‚ÿSoPath*ÊcgÊc# €€€‚ÿNAMEb<=ÊcÉÊc& €x€”‘€€‚ÿSoPath - path that points to a list of hierarchical nodes3gÊcüÊc# € €€‚ÿINHERITS FROMLÉÊcHËc5 :€.€”‘€ã}9€‰€€€‚ÿSoBase > SoPath2 üÊczËc& €€€€ ‚ÿSYNOPSISa:HËcÛËc' €t€”‘€€‚‚ÿ#include Methods from class SoPath:zËcñÍcy À€;€T”A‚S~‚A€ƒ‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒ‚ƒ‚ã’n%9‰ƒ‚ã’n%9‰ƒ‚ã’n%9‰ƒ‚ƒ‚ã’n%9‰ƒ‚ƒ‚ÿSoPath()SoPath(int approxLength)SoPath(SoNode *node)voidsetHead(SoNode *node)voidappend(int childIndex)voidappend(SoNode *childNode)voidappend(const SoPath *fromPath)voidpush(int childIndex)voidpop()SoNode *getHead() constSoNode *getTail() constSoNode *getNode(int i) constintgetIndex(int i) constSoNode *getNodeFromTail(int i) constintgetIndexFromTail(int i) const:²ÛËc7dˆ Þ€e€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒã’n%9‰‚㑶p6‰ƒãMy'9‰‚ƒãMy'9‰‚ãMy'9‰ƒ‚ƒãMy'9‰ãMy'9‰‚ãMy'9‰ƒãúß~6‰‚ƒãúß~6‰ãç2ø¡‰‚ÿintgetLength() constvoidtruncate(int start)SbBoolcontainsNode(const SoNode *node) constSbBoolcontainsPath(const SoPath *path) constintfindFork(const SoPath *path) constSoPath *copy(int startFromNodeIndex = 0,int numNodes = 0) constfriend intoperator ==(const SoPath &p1,const SoPath &p2)static SoPath *getByName(const SbName &name)static intgetByName(ñÍc7dØÉcconst SbName &name,SoPathList &list)NñÍc…d/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:`ÿ7dåda €ÿ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()static SoTypegetClassTypeId()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4…dd& €€‚A€‚ÿDESCRIPTIONÏ™ådèd6 :€3€”‘€‚A€€€€€‚ÿA path represents a scene graph or subgraph. It contains a list of pointers to nodes forming a chain from some root to some descendant. Each node in the chain is a child of the previous node. Paths are used to refer to some object in a scene graph precisely and unambiguously, even if there are many instances of the object. Therefore, paths are returned by both the SoRayPickAction and SoSearchAction.4 dd* "€€”‘€‚A€‚ÿWhen an action is applied to a path, only the nodes in the subgraph defined by the path are traversed. These include: the nodes in the path chain, all nodes (if any) below the last node in the path, and all nodes whose effects are inherited by any of these nodes.!ôèd=d- (€é€”‘€‚A€€‚ÿSoPath attempts to maintain consistency of paths even when the structure of the scene graph changes. For example, removing a child from its parent when both are in a path chain cuts the path chain at that point, leaving the top part intact. Removing the node to the left of a node in a path adjusts the index for that node. Replacing a child of a node when both the parent and the child are in the chain replaces the child in the chain with the new child, truncating the path below the new child.àdSd6 :€Á€”‘€‚A€€€€€‚ÿNote that only public children of nodes are accessible from an SoPath. Nodes like node kits that limit access to their children may provide other ways to get more information, such as by using the SoNodeKitPath class.0 =dƒd& €€‚A€‚ÿMETHODS8 Sd»d, (€€T”A‚S~‚A€ƒ‚ÿSoPath()Eƒd d) "€8€”‘€‚A€‚ÿConstructs an empty path.H»dH d, (€8€T”A‚S~‚A€ƒ‚ÿSoPath(int approxLength)oF d· d) "€Œ€”‘€‚A€‚ÿConstructs a path with a hint to length (number of nodes in chain).LH d d2 4€4€T”A‚S~‚A€ƒã’n%9‰‚ÿSoPath(SoNode *node)g>· dj d) "€|€”‘€‚A€‚ÿConstructs a path and sets the head node to the given node.Q d» d2 4€>€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidsetHead(SoNode *node)°{j dk d5 :€ö€”‘€‚A€€€€€‚ÿSets head node (first node in chain). The head node must be set before the append() or push() methods may be called.J» dµ d, (€<€T”A‚S~‚A€ƒ‚ÿvoidappend(int childIndex)„[k d9 d) "€¶€”‘€‚A€‚ÿAdds node to end of chain; the node is the childIndex'th child of the current tail node.U#µ dŽ d2 4€F€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidappend(SoNode *childNode)Õ¥9 dc d0 .€K€”‘€‚A€€€‚ÿAdds node to end of chain; uses the first occurrence of childNode as child of current tail node. If the path is empty, this is equivalent to setHead(childNode).Z(Ž d½ d2 4€P€T”A‚S~‚A€ƒãMy'9‰‚ÿvoidappend(const SoPath *fromPath)³‰c dpd* "€€”‘€‚A€‚ÿAdds all nodes in fromPath's chain to end of chain; the head node of fromPath must be the same as or a child of the current tail node.U'½ dÅd. ,€N€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidpush(int childIndex)voidpop()œspdad) "€æ€”‘€‚A€‚ÿThese allow a path to be treated as a stack; they push a node at the end of the chain and pop the last node off.r8ÅdÓd: D€p€T”A‚S~‚Aã’n%9€‰ƒ‚ã’n%9‰ƒ‚ÿSoNode *getHead() constSoNode *getTail() constb9adA@d) "€r€”‘€‚A€‚ÿTheÓdA@dØÉcse return the first and last nodes in a path chain.p<Ód±@d4 8€x€T”A‚S~‚Aã’n%9€‰ƒ‚ƒ‚ÿSoNode *getNode(int i) constintgetIndex(int i) constÛ¥A@dŒAd6 :€K€”‘€‚A€€€€€‚ÿThese return a pointer to the i'th node or the index of the i'th node (within its parent) in the chain. Calling getNode(0) is equivalent to calling getHead().€L±@d Bd4 8€˜€T”A‚S~‚Aã’n%9€‰ƒ‚ƒ‚ÿSoNode *getNodeFromTail(int i) constintgetIndexFromTail(int i) constîÄŒAdúBd* "€‰€”‘€‚A€‚ÿThese return a pointer to the i'th node or the index of the i'th node (within its parent) in the chain, counting backward from the tail node. Passing 0 for i returns the tail node or its index.D Bd>Cd, (€0€T”A‚S~‚A€ƒ‚ÿintgetLength() const[2úBd™Cd) "€d€”‘€‚A€‚ÿReturns length of path chain (number of nodes).G>CdàCd, (€6€T”A‚S~‚A€ƒ‚ÿvoidtruncate(int start)¥v™Cd…Dd/ .€ì€”‘€‚A€€€‚ÿTruncates the path chain, removing all nodes from index start on. Calling truncate(0) empties the path entirely.l4àCdñDd8 @€h€T”A‚S~‚A㑶p6€‰ƒã’n%9‰‚ÿSbBoolcontainsNode(const SoNode *node) consti@…DdZEd) "€€€”‘€‚A€‚ÿReturns TRUE if the node is found anywhere in the path chain.l4ñDdÆEd8 @€h€T”A‚S~‚A㑶p6€‰ƒãMy'9‰‚ÿSbBoolcontainsPath(const SoPath *path) constžuZEddFd) "€ê€”‘€‚A€‚ÿReturns TRUE if the nodes in the chain in the passed path are contained (in consecutive order) in this path chain.]+ÆEdÁFd2 4€V€T”A‚S~‚A€ƒãMy'9‰‚ÿintfindFork(const SoPath *path) constݳdFdžGd* "€g€”‘€‚A€‚ÿIf the two paths have different head nodes, this returns -1. Otherwise, it returns the path chain index of the last node (starting at the head) that is the same for both paths.yFÁFdHd3 6€Œ€T”A‚S~‚AãMy'9€‰ƒ‚ÿSoPath *copy(int startFromNodeIndex = 0,int numNodes = 0) const/žGdFId* "€ €”‘€‚A€‚ÿCreates and returns a new path that is a copy of some or all of this path. Copying starts at the given index (default is 0, which is the head node). A numNodes of 0 (the default) means copy all nodes from the starting index to the end. Returns NULL on error.zAHdÀId9 B€‚€T”A‚S~‚A€ƒãMy'9‰ãMy'9‰‚ÿfriend intoperator ==(const SoPath &p1,const SoPath &p2)sJFId3Jd) "€”€”‘€‚A€‚ÿReturns TRUE if all node pointers in the two path chains are identical.ºsÀIdíJdG ^€æ€T”A‚S~‚A€ãMy'9‰ƒãúß~6‰‚ƒãúß~6‰ãç2ø¡‰‚ÿstatic SoPath *getByName(const SbName &name)static intgetByName(const SbName &name,SoPathList &list)r63Jd_Md< F€m€”‘€‚A€€€€€€€‚ÿThese methods lookup and return paths with a given name. Paths are named by calling their setName() method (defined by the SoBase class). The first form returns the last path that was given that name, either by setName() or by reading in a named path from a file. If there is no path with the given name, NULL will be returned. The second form appends all paths with the given name to the given path list and returns the number of paths that were added. If there are no paths with the given name, zero will be returned and nothing will be added to the list.<íJd›Md& €,€‚A€‚ÿFILE FORMAT/DEFAULT5 _MdÐMd* $€€P„7|‚€‚ÿSoPath {tD›MdDNd0 0€ˆ€P„|‚€‚‚‚‚‚‚‚ÿ[head node][number of remaining indices][index]&...[index]}yOÐMd½Od* "€Ÿ€”‘€‚€‚ÿNote that the indices in a written path are adjusted based on the nodes that are actually written to a file. Since nodes in the graph that have no effect on the path (such as some separator nodes) are not written, the siblings of such nodes must undergo index adjustment when written. The actual nodes in the graph remain unchanged.1 DNd €d& €€‚€‚ÿSEE ALSO½Od €dØÉcšG½Od¦€dS v€Ž€”‘€‚ã’n%9€‰€ãÉ“â„€‰€ãòÓ}ª€‰€ã}选‚ÿSoNode, SoRayPickAction, SoSearchAction, SoNodeKitPath; €dá€d1UP…ÇÚÉ,á€dd7dSoPathList2 ¦€dd% €€ˆˆ€‚ÿSoPathList*á€d=d# €€€‚ÿNAME[5d˜d& €j€”‘€€‚ÿSoPathList - maintains a list of pointers to paths3=dËd# € €€‚ÿINHERITS FROMn-˜d9‚dA R€Z€”‘€ãK2Å'€‰€ã/ x‘€‰€€€‚ÿSbPList > SoBaseList > SoPathList2 Ëdk‚d& €€€€ ‚ÿSYNOPSISf?9‚dÑ‚d' €~€”‘€€‚‚ÿ#include Methods from class SoPathList:kk‚d<„dc ”€€T”A‚S~‚A€ƒ‚ƒ‚ƒãç2ø¡‰‚ƒ‚ƒãMy'9‰‚ãMy'9‰ƒ‚ãç2ø¡‰ƒãç2ø¡‰‚ƒãMy'9‰‚ƒ‚ƒ‚ÿSoPathList()SoPathList(int size)SoPathList(const SoPathList &l)~SoPathList()voidappend(SoPath *path)SoPath *operator [](int i) constSoPathList &operator =(const SoPathList &l)intfindPath(const SoPath &path)voidsort()voiduniquify()R#Ñ‚dŽ„d/ .€F€”‘€‚A€ã/ x‘‰‚ÿMethods from class SoBaseList:¾<„d…dQ p€}€T”A‚S~‚A€ƒã}9‰‚ƒ‚ƒ‚ƒã/ x‘‰‚ƒã}9‰‚ƒã‘¶p6‰‚ÿvoidinsert(SoBase *ptr,int addBefore)voidremove(int which)voidtruncate(int start)voidcopy(const SoBaseList &l)voidset(int i,SoBase *ptr)voidaddReferences(SbBool flag)O Ž„dì…d/ .€@€”‘€‚A€ãK2Å'‰‚ÿMethods from class SbPList:ÍŽ…d¹†d? L€€T”A‚S~‚A€ƒ‚ƒ‚ƒãK2Å'‰‚ƒãK2Å'‰‚ÿintfind(const void *ptr) constintgetLength() constintoperator ==(const SbPList &pl) constintoperator !=(const SbPList &pl) const4ì…dí†d& €€‚A€‚ÿDESCRIPTIONÓ¹†dÀ‡d6 :€;€”‘€‚A€€€€€‚ÿThis subclass of SoBaseList holds lists of pointers to SoPaths. It updates reference counts to paths in the list whenever adding or removing pointers.0 í†dð‡d& €€‚A€‚ÿMETHODS<À‡d,ˆd, (€ €T”A‚S~‚A€ƒ‚ÿSoPathList()8ð‡ddˆd) "€€”‘€‚A€‚ÿConstructor.D,ˆd¨ˆd, (€0€T”A‚S~‚A€ƒ‚ÿSoPathList(int size)m>dˆd‰d/ .€|€”‘€‚A€€€‚ÿConstructor that pre-allocates storage for size pointers.W%¨ˆdl‰d2 4€J€T”A‚S~‚A€ƒãç2ø¡‰‚ÿSoPathList(const SoPathList &l)a8‰d͉d) "€p€”‘€‚A€‚ÿConstructor that copies the contents of another list.=l‰d Šd, (€"€T”A‚S~‚A€ƒ‚ÿ~SoPathList()7͉dAŠd) "€€”‘€‚A€‚ÿDestructor.P Šd‘Šd2 4€<€T”A‚S~‚A€ƒãMy'9‰‚ÿvoidappend(SoPath *path)O&AŠdàŠd) "€L€”‘€‚A€‚ÿAdds a path to the end of the list.X&‘Šd8‹d2 4€L€T”A‚S~‚AãMy'9€‰ƒ‚ÿSoPath *operator [](int i) constJ!àŠd‚‹d) "€B€”‘€‚A€‚ÿAccesses an element of a list.k38‹dí‹d8 @€f€T”A‚S~‚Aãç2ø¡€‰ƒãç2ø¡‰‚ÿSoPathList &operator =(const SoPathList &l)`7‚‹dMŒd) "€n€”‘€‚A€‚ÿCopies a list, keeping all reference counts correct.W%í‹d¤Œd2 4€J€T”A‚S~‚A€ƒãMy'9‰‚ÿintfindPath(const SoPath &path)sJMŒdd) "€”€”‘€‚A€‚ÿReturns the index of the matching path in the list, or -1 if not found.:¤ŒdQd, (€€T”A‚S~‚A€ƒ‚ÿvoidsort()–mdçd) "€Ú€”‘€‚A€‚ÿSorts list in place based on (1) increasing address of head node, then (2) increasing indices of children.>Qd%Žd, (€$€T”A‚S~‚A€ƒ‚ÿvoiduniquify()§~çdÌŽd) "€ü€”‘€‚A€‚ÿGiven a sorted list, removes any path that (1) is a duplicate, or (2) goes through a node that is the tail of another path.1 %ŽdýŽd& €€‚A€‚ÿSEE ALSO: ÌŽd7d/ .€€”‘€‚AãMy'9€‰‚ÿSoPath= ýŽdtd1 GÉcˆÉ-td¨dÍdSoPathSensor47d¨d% €€ˆˆ€‚ÿSoPathSensor*tdÒd# €€€‚ÿNAMEpJ¨dNÀd& €”€”‘€€‚ÿSoPathSÒdNÀd7densor - sensor class that can be attached to Open Inventor paths3ÒdÀd# € €€‚ÿINHERITS FROM˜KNÀdÁdM j€–€”‘€ãrX.选€㜺餀‰€㤴u?€‰€€€‚ÿSoSensor > SoDelayQueueSensor > SoDataSensor > SoPathSensor2 ÀdKÁd& €€€€ ‚ÿSYNOPSISuNÁdÀÁd' €œ€”‘€€‚‚ÿ#include Methods from class SoPathSensor:àœKÁd ÂdD V€9€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒãMy'9‰‚ƒ‚ãMy'9‰ƒ‚ÿSoPathSensor()SoPathSensor(SoSensorCB *func,void *data)~SoPathSensor()voidattach(SoPath *path)voiddetach()SoPath *getAttachedPath() constT%ÀÁdôÂd/ .€J€”‘€‚A€㤴u?‰‚ÿMethods from class SoDataSensor:Dî Âd8ÄdV z€Ý€T”A‚S~‚A€ƒ‚ã’n%9‰ƒ‚ãþ —‰ƒ‚ãMy'9‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDeleteCallback(SoSensorCB *function,void *data)SoNode *getTriggerNode() constSoField *getTriggerField() constSoPath *getTriggerPath() constvoidsetTriggerPathFlag(SbBool flag)SbBoolgetTriggerPathFlag() constZ+ôÂd’Äd/ .€V€”‘€‚A€㜺餉‚ÿMethods from class SoDelayQueueSensor:ë®8Äd}Åd= H€]€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ÿvoidsetPriority(uint32_t pri)uint32_tgetPriority()static uint32_tgetDefaultPriority()virtual voidschedule()virtual voidunschedule()virtual SbBoolisScheduled()P!’ÄdÍÅd/ .€B€”‘€‚A€ãrX.鉂ÿMethods from class SoSensor:½Š}ÅdŠÆd3 4€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetFunction(SoSensorCB *callbackFunction)SoSensorCB *getFunction() constvoidsetData(void *callbackData)void *getData() const4ÍÅd¾Æd& €€‚A€‚ÿDESCRIPTION¯ŠÆdmÈd0 .€ÿ€”‘€‚A€€€‚ÿPath sensors detect changes to paths, calling a callback function whenever the path or any node in the path changes. The definition of "in the path" is the same as the definition used when applying an action to the path - any node that can possibly affect the node at the end of the path chain is considered in the path. See the SoPath manual page for more information on paths.0 ¾ÆdÈd& €€‚A€‚ÿMETHODSm>mÈd Éd/ .€|€T”A‚S~‚A€ƒ‚ƒ‚ÿSoPathSensor()SoPathSensor(SoSensorCB *func,void *data)ŸvÈd©Éd) "€ì€”‘€‚A€‚ÿCreation methods. The second method takes the callback function and data to be called when the sensor is triggered.? ÉdèÉd, (€&€T”A‚S~‚A€ƒ‚ÿ~SoPathSensor()€W©ÉdhÊd) "€®€”‘€‚A€‚ÿDestroys the sensor, freeing up any memory associated with it after unscheduling it.‹OèÉdóÊd< H€ž€T”A‚S~‚A€ƒãMy'9‰‚ƒ‚ãMy'9‰ƒ‚ÿvoidattach(SoPath *path)voiddetach()SoPath *getAttachedPath() consts7hÊdfÌd< F€o€”‘€‚A€€€€€€€‚ÿThe attach() method makes this sensor detect changes to the given path. The detach() method unschedules this sensor (if it is scheduled) and makes it ignore changes to the scene graph. The getAttachedPath() method returns the path that this sensor is sensing, or NULL if it is not attached to any path.1 óÊd—Ìd& €€‚A€‚ÿSEE ALSO|5fÌdÍdG ^€j€”‘€‚AãTlˆW€‰€ã'€‰€㤴u?€‰‚ÿSoNodeSensor, SoPathSensor, SoDataSensor= —ÌdPÍd1aÚɆ€Ê.PÍd„Íd¶AeSoPathSwitch4Íd„Íd% €€ˆˆ€‚ÿSoPathSwitch*PÍd®Íd# €€€‚ÿNAMExR„Íd&Îd& €¤€”‘€€‚ÿSoPathSwitch - group node that traverses only when traversed along a given path3®ÍdYÎd# € €€‚ÿINHERITS FROM¨O&ÎdÏdY ‚€ž€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoPathSwitch2 YÎd3Ïd& €€€€ ‚ÿSYNOPSISrKÏd¥Ïd' €–€”‘€€‚‚ÿ#include Fields from class SoPathSwitch:D3Ïd e2 4€$€T”A‚S~‚Aãod选ƒ‚ÿSoSFPathpath¥Ïd eÍdL#¥ÏdXe) "€F€”‘€‚A€‚ÿMethods from class SoPathSwitch:†P eÞe6 <€ €T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoPathSwitch()SoPathSwitch(int nChildren)static SoTypegetClassTypeId()O Xe-e/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒÞe"er ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)N-epe/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:t "eäeh ž€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)pe<e/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØäe¡e 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH<e)e@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¡ewe/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ)e® eY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4weâ e& €€‚A€‚ÿDESCRIPTIONU® e7 eE X€!€”‘€‚A€€€€€€€€€€‚ÿSoPathSwitch is a group node that traverses its children only if the current traversal path matches the SoPath in the path field. This can be used, for example, to affect only one instance of a subgraph. The path field contains the path up to (but not including) the SoPathSwitch. The path need not go all the way back to the root; if it does not, then only the number of ancestors that are in the path are compared to see if the children should be traversed. A NULL path means that the children are never traversed./ â ef e& €€‚A€‚ÿFIELDSD7 eª e2 4€$€T”A‚S~‚Aãod选ƒ‚ÿSoSFPathpath`7f e e) "€n€”‘€‚A€‚ÿThe path that must match the current traversal path.0 ª e: e& €€‚A€‚ÿMETHODS> ex e, (€$€T”A‚S~‚A€ƒ‚ÿSoPathSwitch()]4: eÕ e) "€h€”‘€‚A€‚ÿCreates a path switch node with default settings.Kx e e, (€>€T”A‚S~‚A€ƒ‚ÿSoPathSwitch(int nChildren)b9Õ e‚e) "€r€”‘€‚A€‚ÿConstructor that takes approximate number of children.U# e×e2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*‚e*e) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8×ebe& €$€‚A€‚ÿACTION BEHAVIOR¸n*e&@eJ d€Ü€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉ãàꉀ‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActionbe&@eÍd, SoHandleEventActionZ.be€@e, (€\€”‘€‚A€€‚ÿTraverses the children if the paths match.<&@e¼@e& €,€‚A€‚ÿFILE FORMAT/DEFAULT9€@eõ@e* $€€P„7|‚€‚ÿPathSwitch {<¼@e1Ae- *€€P„|‚€ƒ‚‚‚ÿpathNULL}1 õ@ebAe& €€‚€‚ÿSEE ALSOT1Ae¶Ae; F€2€”‘€‚ãMy'9€‰€ã0MÓ쀉‚ÿSoPath, SoSwitch: bAeðAe1Ÿ%cˆÉa„Ë/ðAe!Be²ÆeSoPattern1 ¶Ae!Be% €€ˆˆ€‚ÿSoPattern*ðAeKBe# €€€‚ÿNAMEoI!BeºBe& €’€”‘€€‚ÿSoPattern - node that defines the pattern to use when rendering shapes3KBeíBe# € €€‚ÿINHERITS FROM‹>ºBexCeM j€|€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoPattern2 íBeªCe& €€€€ ‚ÿSYNOPSISN(xCeøCe& €P€”‘€€‚ÿ#include )ݪCe!EeL f€»€T”A‚S~‚A€ƒƒ€€€€ƒ€€€€‚ÿenum FilterType{SoPattern::INCLUSIVE_FILTERLoad only the patterns that are in the list of pattern names.SoPattern::EXCLUSIVE_FILTERLoad all patterns except those specified in the list of pattern names.}HøCeiEe) "€>€”‘€‚A€‚ÿFields from class SoPattern:d*!EeÍEe: D€T€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ãü”ŒÔ‰ƒ‚ÿSoSFStringcategorySoSFStringnameI iEeFe) "€@€”‘€‚A€‚ÿMethods from class SoPattern:ÆÍEe.HeR r€€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒãXíʉ‚ƒãXíʉ‚ƒ‚ƒ‚ÿSoPattern()virtual~SoPattern()static SbBoolloadPatterns(const char* fileName,int numFilters = 0,const SbString* filterNames = NULL,FilterType filterType = INCLUSIVE_FILTER)static voidgetPatternNames(int& number,SbString*& names,const char* category = NULL)static voidaddPattern(const char* category,const char* name,const unsigned char* bytes)static voidgetPattern(const char* category,const char* name,unsigned char*& bytes)NFe|He/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|.HeøIen ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)|HePJe/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØøIeµLe 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHPJe=Me@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NµLe‹Me/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ=MeÂNeY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4‹MeöNe& €€‚A€‚ÿDESCRIPTION…\ÂNe{Oe) "€¸€”‘€‚A€‚ÿThis node specifies the current pattern for all subsequent shape nodes in a scene graph. wMöNeþ€e* "€›€”‘€‚A€‚ÿA pattern is a 32x32 bitmap that is interpreted as a mask of 0s and 1s. Where a 1 appears,{Oeþ€e¶Ae the corresponding pixel in the polygon is drawn; where a 0 appears, nothing is drawn. Using patterns is like using screendoor transparency where you specify the pattern of the screen. OpenGL polygon stippling is used to render the pattern.ëµ{Oeée6 :€k€”‘€‚A€€€€€‚ÿYou can load a pattern file containing one or more patterns using the loadPatterns method. You can also define and load patterns programmatically using the addPattern method.]4þ€eF‚e) "€h€”‘€‚A€‚ÿHere is a sample showing the pattern file format.,óéer…e9 @€ç€Ù€‚A€‚ÿ"GEOLOGY"# The first string is the category name of the first pattern.# This is a comment !"PATTERN N1"# The second string is the name of the pattern.# To define the pattern, you must define a 32x32 sequence of # '1' and '0'.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 ...#============================================"PATTERN N2"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 ...+F‚e…e( €€Ù€‚A€‚ÿ_6r…eü…e) "€l€”‘€‚A€‚ÿNote: A pattern file can contain only one category.ç½…eã†e* "€{€”‘€‚A€‚ÿNote: There is a potential conflict between the use of screendoor transparency and patterned shapes. If the transparency type is screendoor, transparency is ignored for patterned shapes.9ü…e‡e+ &€€T”‘€s‚A€‚ÿUsage Notes“jã†e¯‡e) "€Ô€”‘€‚A€‚ÿPatterns can be used for distinguishing, for example, different kinds of rocks in a geologic formation.xN‡e'‰e* "€€”‘€‚A€‚ÿPlotMaster is a 3D-MasterSuite module that allows you to generate resolution-independent vector hardcopy output. PlotMaster handles patterns but does not handle textures (they are ignored). If you are planning to use PlotMaster, you may want to use patterns rather than textures to distinguish different shapes in your scene graph./ ¯‡eV‰e& €€‚A€‚ÿFIELDSJ'‰e ‰e2 4€0€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringcategory¡xV‰eAŠe) "€ð€”‘€‚A€‚ÿSpecifies the name of a group of patterns. If the category name is invalid or not found, the default pattern is used.F ‰e‡Še2 4€(€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringname¨AŠe/‹e) "€þ€”‘€‚A€‚ÿSpecifies the name of a pattern within a category. If the pattern name is invalid or not found, the default pattern is used.0 ‡Še_‹e& €€‚A€‚ÿMETHODSR$/‹e±‹e. ,€H€T”A‚S~‚A€ƒ‚ƒ‚ÿSoPattern()virtual~SoPattern()G_‹eø‹e) "€<€”‘€‚A€‚ÿConstructor and destructor.Õ™±‹eÍŒe< F€3€T”A‚S~‚A€㑶p6‰ƒãXíʉ‚ÿstatic SbBoolloadPatterns(const char* fileName,int numFilters = 0,const SbString* filterNames = NULL,FilterType filterType = INCLUSIVE_FILTER)\,ø‹e)Že0 .€Y€”‘€‚A€€€‚ÿLoads a pattern file, with optional filtering of patterns. You can specify the file name with or without a full path. If you specify the file name without the path, the file will be loaded from the directory %OIVHOME%/data/patterns. If the file name is not found, a default pattern will be used.ø¹ÍŒe!e? L€s€”‘€‚A€€€€€€€€‚ÿfilterNames is an SbString array of pattern names. This will be an array of patterns to include (or exclude) depending on the FilterType. The size of this array is numFilters.\)Že±e4 8€¸€T”A‚S~‚A€ƒãXíʉ‚ÿstatic voidgetPatternNames(int& number,SbString*& names,const char* category = NULL)àª!eÀe6 :€U€”‘€‚A€€€€€‚ÿGets the names of loaded±eÀe¶Ae patterns. Category is optional. You are responsible for deleting the names array when it is no longer needed. For example, delete []names;‹]±e(Áe. ,€º€T”A‚S~‚A€ƒ‚ÿstatic voidaddPattern(const char* category,const char* name,const unsigned char* bytes)FÀenÂe* "€9€”‘€‚A€‚ÿAdds a new pattern specified as an array of 128 bytes. A category and a name are specified for this pattern. If the category and name are already in the list of patterns, the new pattern will not be added. If either the category or the name is an empty string, no pattern is added.†X(ÁeôÂe. ,€°€T”A‚S~‚A€ƒ‚ÿstatic voidgetPattern(const char* category,const char* name,unsigned char*& bytes)¾ŽnÂe²Ãe0 .€€”‘€‚A€€€‚ÿRetrieves a pattern bitmap (an array of 128 bytes) specified by its category and name. the pattern data pointed to by bytes is read-only.<ôÂeîÃe& €,€‚A€‚ÿFILE FORMAT/DEFAULT6 ²Ãe$Äe* $€€P„7|‚€‚ÿPattern {HîÃelÄe/ .€2€P„|‚€ƒ‚ƒ‚‚‚ÿcategory""name""}×­$ÄeCÆe* "€[€”‘€‚€‚ÿNOTE: When you write a pattern node out to a file, the file will not contain enough information to fully reconstruct the original scene graph. The pattern node and its current fields are written out (as expected). However, the current fields only specify a category name and a pattern name. They do not specify the actual pattern(s) (like a typical attribute node) or a filename to get the patterns from (like a texture node).1 lÄetÆe& €€‚€‚ÿSEE ALSO>CÆe²Æe/ .€€”‘€‚ãOjnÄ€‰‚ÿSoMaterial; tÆeíÆe1“†€ÊQÌ0íÆeÇe„ fSoPendulum2 ²ÆeÇe% €€ˆˆ€‚ÿSoPendulum*íÆeIÇe# €€€‚ÿNAMEX2Çe¡Çe& €d€”‘€€‚ÿSoPendulum - animated oscillating rotation node3IÇeÔÇe# € €€‚ÿINHERITS FROMÌg¡Çe Èee š€Î€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€ãúD×΀‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoRotation > SoPendulum2 ÔÇeÒÈe& €€€€ ‚ÿSYNOPSISnG Èe@Ée' €Ž€”‘€€‚‚ÿ#include Fields from class SoPendulum:žTÒÈeÞÉeJ d€¨€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ã‘Ù»•‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ÿSoSFRotationrotation0SoSFRotationrotation1SoSFFloatspeedSoSFBoolonQ"@Ée/Êe/ .€D€”‘€‚A€ãúD×Ή‚ÿFields from class SoRotation:LÞÉe{Êe2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationJ!/ÊeÅÊe) "€B€”‘€‚A€‚ÿMethods from class SoPendulum:e1{Êe*Ëe4 8€b€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoPendulum()static SoTypegetClassTypeId()NÅÊexËe/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|*ËeôÌen ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)xËeLÍe/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØôÌe±Ïe 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHLÍeEf@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNot±ÏeEf²ÆeifyEnabled() constSbBoolenableNotify(SbBool flag)N±Ïe“f/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞEfÊfY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4“fþf& €€‚A€‚ÿDESCRIPTIONÄÊffN j€‰€”‘€‚A€€€€€€€€€€€€€‚ÿThe SoPendulum class is derived from SoRotation, so it applies a rotation to the current transformation. Using engines connected to the realTime global field, the rotation value is animated over time between two fixed rotations, achieving the effect of a swinging pendulum. The period of the swing can be adjusted by changing the speed field. The current rotation at any time is available in the rotation field, inherited from SoRotation3 þfCf) "€€‚A€€ ‚ÿFIELDSn4f±f: D€h€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ã‘Ù»•‰ƒ‚ÿSoSFRotationrotation0SoSFRotationrotation1…\Cf6f) "€¸€”‘€‚A€‚ÿThese define the two fixed rotations that are interpolated to create the pendular motion.F±f|f2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatspeedd;6fàf) "€v€”‘€‚A€‚ÿDefines the speed of the pendulum, in cycles per second.B|f"f2 4€ €T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolong>àf‰f) "€|€”‘€‚A€‚ÿAllows applications to enable or disable the motion easily.0 "f¹f& €€‚A€‚ÿMETHODS<‰fõf, (€ €T”A‚S~‚A€ƒ‚ÿSoPendulum()Z1¹fOf) "€b€”‘€‚A€‚ÿCreates a pendulum node with default settings.U#õf¤f2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Of÷f) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8¤f/f& €$€‚A€‚ÿACTION BEHAVIOR›W÷fÊfD X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction€T/fJ f, (€¨€”‘€‚A€€‚ÿConcatenates interpolated rotation value with the current transformation matrix.IÊf“ f2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixActionuIJ f f, (€’€”‘€‚A€€‚ÿReturns transformation matrix specified by the interpolated rotation.<“ fD f& €,€‚A€‚ÿFILE FORMAT/DEFAULT7  f{ f* $€€P„7|‚€‚ÿPendulum {‚MD fý f5 :€š€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿrotation0 0 1 0rotation00 0 1 0rotation10 0 1 0speed1onTRUE}1 { f. f& €€‚€‚ÿSEE ALSOVý f„ f; F€6€”‘€‚㪲š€‰€ãñâ€F€‰‚ÿSoRotor, SoShuttleD. fÈ f1ša„ËÎÍ1È f fwfSoPerspectiveCamera;„ f f% €,€ˆˆ€‚ÿSoPerspectiveCamera*È f- f# €€€‚ÿNAMEV0 fƒ f& €`€”‘€€‚ÿSoPerspectiveCamera - perspective camera node3- f¶ f# € €€‚ÿINHERITS FROM°Wƒ ff fY ‚€®€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã½V)\€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoCamera > SoPerspectiveCamera2 ¶ f˜ f& €€€€ ‚ÿSYNOPSIS€Yf ff' €²€”‘€€‚‚ÿ#include Fields from class SoPerspectiveCamera:L˜ fdf2 4€4€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatheightAngleO f³f/ .€@€”‘€‚A€ã½V)\‰‚ÿFields from class SoCamera:°dfÆfc ”€a€T”A‚S~‚AãØtW选ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFEnumviewportMappingSoSFVec3fpositionSoSFRotationorientationSoSFFloataspectRatioSoSFFloatnearDistanceSoSFFloatfarDistanceSoSFFloatfocalDistanceS*³f%@f) "€T€”‘€‚A€‚ÿMethods from claÆf%@f„ fss SoPerspectiveCamera:n:Æf“@f4 8€t€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoPerspectiveCamera()static SoTypegetClassTypeId()P!%@fã@f/ .€B€”‘€‚A€ã½V)\‰‚ÿMethods from class SoCamera:š“@fèBfk ¤€5€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒ‚㪮§O‰ƒ‚ƒã’n%9‰ãñf‘¸‰‚ƒãMy'9‰ãñf‘¸‰‚ãñf‘¸‰ƒãñf‘¸‰‚ÿvoidpointAt(const SbVec3f &targetPoint)virtual voidscaleHeight(float scaleFactor)virtual SbViewVolumegetViewVolume(float useAspectRatio = 0.0) constvoidviewAll(SoNode *sceneRoot,const SbViewportRegion &vpRegion,float slack = 1.0)voidviewAll(SoPath *path,const SbViewportRegion &vpRegion,float slack = 1.0)SbViewportRegiongetViewportBounds(const SbViewportRegion ®ion) constNã@f6Cf/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|èBf²Dfn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)6Cf Ef/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eزDfoGf 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH Ef÷Gf@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NoGfEHf/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ÷Gf|IfY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4EHf°If& €€‚A€‚ÿDESCRIPTION¾”|IfnJf* "€)€”‘€‚A€‚ÿA perspective camera defines a perspective projection from a viewpoint. The viewing volume for a perspective camera is a truncated right pyramid.s1°IfáKfB R€c€”‘€‚A€€€€€€€€€‚ÿBy default, the camera is located at (0,0,1) and looks along the negative z-axis; the position and orientation fields can be used to change these values. The heightAngle field defines the total vertical angle of the viewing volume; this and the aspectRatio field determine the horizontal angle./ nJfLf& €€‚A€‚ÿFIELDSLáKf\Lf2 4€4€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatheightAngleQ(Lf­Lf) "€P€”‘€‚A€‚ÿVertical angle of the viewing volume.0 \LfÝLf& €€‚A€‚ÿMETHODSE­Lf"Mf, (€2€T”A‚S~‚A€ƒ‚ÿSoPerspectiveCamera()d;ÝLf†Mf) "€v€”‘€‚A€‚ÿCreates a perspective camera node with default settings.U#"MfÛMf2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*†Mf.Nf) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ÛMffNf& €$€‚A€‚ÿACTION BEHAVIOR¸n.NfOfJ d€Ü€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãàê‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoHandleEventAction, SoRayPickActionf:fNf„Of, (€t€”‘€‚A€€‚ÿSets the viewport and camera information in the state.<OfÀOf& €,€‚A€‚ÿFILE FORMAT/DEFAULT@„Of €f* $€,€P„7|‚€‚ÿPerspectiveCamera {ÀOf €f„ fÔ˜ÀOfà€f< F€1€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿviewportMappingADJUST_CAMERAposition0 0 1orientation0 0 1 0aspectRatio1nearDistance1farDistance10focalDistance5heightAngle0.785398}1 €ff& €€‚€‚ÿSEE ALSOf+à€fwf; F€V€”‘€‚㪮§O€‰€ãÁž._€‰‚ÿSbViewVolume, SoOrthographicCamera= f´f1”QÌô…Í2´fèfK‰fSoPickAction4wfèf% €€ˆˆ€‚ÿSoPickAction*´f‚f# €€€‚ÿNAMEjDèf|‚f& €ˆ€”‘€€‚ÿSoPickAction - abstract base class for picking objects in a scene3‚f¯‚f# € €€‚ÿINHERITS FROMT|‚fƒf5 :€>€”‘€ãïK€‰€€€‚ÿSoAction > SoPickAction2 ¯‚f5ƒf& €€€€ ‚ÿSYNOPSISuNƒfªƒf' €œ€”‘€€‚‚ÿ#include Methods from class SoPickAction:­s5ƒfW„f: D€æ€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ÿvoidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constP!ªƒf§„f/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†W„f-†fj ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4§„fa†f& €€‚A€‚ÿDESCRIPTIONª{-†f ‡f/ .€ö€”‘€‚A€€€‚ÿThis is an abstract base class for all picking actions. Currently, the only supported subclass is the SoRayPickAction.0 a†f;‡f& €€‚A€‚ÿMETHODS­s ‡fè‡f: D€æ€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ÿvoidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constïÅ;‡f׈f* "€‹€”‘€‚A€‚ÿSets/returns current viewport region to use for action. Even though the picking operation may not involve a window per se, some nodes need this information to determine their size and placement.1 è‡f‰f& €€‚A€‚ÿSEE ALSOC׈fK‰f/ .€(€”‘€‚AãÉ“â„€‰‚ÿSoRayPickAction< ‰f‡‰f1#J€Î‡Î3‡‰fº‰f·ÊfSoPickStyle3K‰fº‰f% €€ˆˆ€‚ÿSoPickStyle*‡‰fä‰f# €€€‚ÿNAMEI#º‰f-Šf& €F€”‘€€‚ÿSoPickStyle - picking style node3ä‰f`Šf# € €€‚ÿINHERITS FROM@-ŠfíŠfM j€€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoPickStyle2 `Šf‹f& €€€€ ‚ÿSYNOPSISP*íŠfo‹f& €T€”‘€€‚ÿ#include Gþ‹f¶ŒfI `€ý€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum Style{SoPickStyle::SHAPEPoints on the surfaces of shapes may be pickedSoPickStyle::BOUNDING_BOXPoints on the surfaces of 3D bounding boxes of shapes may be pickedSoPickStyle::UNPICKABLESubsequent objects are transparent to picks}J!o‹ff) "€B€”‘€‚A€‚ÿFields from class SoPickStyle:E¶ŒfEf2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumstyleK"ff) "€D€”‘€‚A€‚ÿMethods from class SoPickStyle:f2Eföf4 8€d€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoPickStyle()static SoTypegetClassTypeId()NfDŽf/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|öfÀfn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)DŽf$Àf/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from claÀf$ÀfK‰fss SoFieldContainer:eØÀf‰Âf 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH$ÀfÃf@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N‰Âf_Ãf/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÃf–ÄfY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4_ÃfÊÄf& €€‚A€‚ÿDESCRIPTION¬}–ÄfvÅf/ .€ú€”‘€‚A€€€‚ÿThis node determines how subsequent geometry nodes in the scene graph are to be picked, as indicated by the style field.Ï¥ÊÄfEÆf* "€K€”‘€‚A€‚ÿNote that this is the only way to change the pick behavior of shapes; drawing style, complexity, and other rendering-related properties have no effect on picking./ vÅftÆf& €€‚A€‚ÿFIELDSEEÆf¹Æf2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumstyle:tÆfóÆf) "€"€”‘€‚A€‚ÿPicking style.0 ¹Æf#Çf& €€‚A€‚ÿMETHODS=óÆf`Çf, (€"€T”A‚S~‚A€ƒ‚ÿSoPickStyle()\3#Çf¼Çf) "€f€”‘€‚A€‚ÿCreates a pick style node with default settings.U#`ÇfÈf2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¼ÇfdÈf) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ÈfœÈf& €$€‚A€‚ÿACTION BEHAVIORa)dÈfýÈf8 @€R€”‘€‚AãÉ“â„€‰ã³DfL‰€‚ÿSoRayPickAction, SoCallbackActionY-œÈfVÉf, (€Z€”‘€‚A€€‚ÿSets the current pick style in the state.<ýÈf’Éf& €,€‚A€‚ÿFILE FORMAT/DEFAULT8VÉfÊÉf* $€€P„7|‚€‚ÿPickStyle {>’ÉfÊf- *€"€P„|‚€ƒ‚‚‚ÿstyleSHAPE}1 ÊÉf9Êf& €€‚€‚ÿSEE ALSO~7Êf·ÊfG ^€n€”‘€‚ãžvšN€‰€ãy‚2€‰€ãÉ“â„€‰‚ÿSoComplexity, SoDrawStyle, SoRayPickAction> 9ÊfõÊf1ÚÎÍJ€Î4õÊf*Ëf˜AgSoPickedPoint5·Êf*Ëf% € €ˆˆ€‚ÿSoPickedPoint*õÊfTËf# €€€‚ÿNAMEe?*Ëf¹Ëf& €~€”‘€€‚ÿSoPickedPoint - represents point on surface of picked object3TËfìËf# € €€‚ÿINHERITS FROM:¹Ëf&Ìf) "€"€”‘€€€‚ÿSoPickedPoint2 ìËfXÌf& €€€€ ‚ÿSYNOPSISoH&ÌfÇÌf' €€”‘€€‚‚ÿ#include Methods from class SoPickedPoint:YÐXÌf Ïf‰ à€¡€T”A‚S~‚A€ƒã¼B‘S‰‚ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒ‚ãÓƒõ(‰ƒ‚ƒ‚ãMy'9‰ƒ‚㑶p6‰ƒ‚ãåŒÅe‰ƒã’n%9‰‚ã4i¥‘‰ƒã’n%9‰‚ã4i¥‘‰ƒã’n%9‰‚ÿSoPickedPoint(const SoPickedPoint &pp)~SoPickedPoint()const SbVec3f &getPoint() constconst SbVec3f &getNormal() constconst SbVec4f &getTextureCoords() constintgetMaterialIndex() constSoPath *getPath() constSbBoolisOnGeometry() constconst SoDetail *getDetail(const SoNode *node = NULL) constconst SbMatrixgetObjectToWorld(const SoNode *node = NULL) constconst SbMatrixgetWorldToObject(const SoNode *node = NULL) constÊYÇÌfögq °€³€T”A‚S~‚A€ã4i¥‘‰ƒã’n%9‰‚ã4i¥‘‰ƒã’n%9‰‚㨃õ(‰ƒã’n%9‰‚㨃õ(‰ƒã’n%9‰‚ãÓƒõ(‰ƒã’n%9‰‚ÿconst SbMatrixgetObjectToImage(const SoNode *node = NULL) constconst SbMatrixgetImageToObject(const Ïfög·ÊfSoNode *node = NULL) constconst SbVec3fgetObjectPoint(const SoNode *node = NULL) constconst SbVec3fgetObjectNormal(const SoNode *node = NULL) constconst SbVec4fgetObjectTextureCoords(const SoNode *node=NULL) const4 Ïf*g& €€‚A€‚ÿDESCRIPTIONKögug6 :€+€”‘€‚A€€€€€‚ÿAn SoPickedPoint represents a point on the surface of an object that was picked by applying an SoRayPickAction to a scene. It contains a path to the picked shape, the point of intersection, the surface normal and texture coordinates at that point, and other information.Á‘*g6g0 .€#€”‘€‚A€€€‚ÿEach node in the picked path may have a corresponding instance of a detail subclass. These detail instances are stored in the SoPickedPoint.0 ugfg& €€‚A€‚ÿMETHODS^,6gÄg2 4€X€T”A‚S~‚A€ƒã¼B‘S‰‚ÿSoPickedPoint(const SoPickedPoint &pp)=fgg) "€(€”‘€‚A€‚ÿCopy constructor.@ÄgAg, (€(€T”A‚S~‚A€ƒ‚ÿ~SoPickedPoint()7gxg) "€€”‘€‚A€‚ÿDestructor.¶tAg.gB T€è€T”A‚S~‚A€㨃õ(‰ƒ‚㨃õ(‰ƒ‚ãÓƒõ(‰ƒ‚ÿconst SbVec3f &getPoint() constconst SbVec3f &getNormal() constconst SbVec4f &getTextureCoords() constžuxgÌg) "€ê€”‘€‚A€‚ÿThese return the intersection point and surface normal in world space, and the texture coordinates in image space.K.gg, (€>€T”A‚S~‚A€ƒ‚ÿintgetMaterialIndex() constèÌg)g* "€Ñ€”‘€‚A€‚ÿReturns the index into the current set of materials of the material active at the intersection point. Note that if the materials are interpolated between vertices, the index will correspond to the material at one of the vertices.Ogxg2 4€:€T”A‚S~‚AãMy'9€‰ƒ‚ÿSoPath *getPath() const`7)gØg) "€n€”‘€‚A€‚ÿReturns the path to the object that was intersected.R xg*g2 4€@€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisOnGeometry() constñÁØg g0 .€ƒ€”‘€‚A€€€‚ÿReturns whether the intersection is actually on the geometry of the character that was hit, as opposed to being on the bounding box. The pick style (see SoPickStyle) affects this decision.zB*g• g8 @€„€T”A‚S~‚A€ãåŒÅe‰ƒã’n%9‰‚ÿconst SoDetail *getDetail(const SoNode *node = NULL) constýÍ g’ g0 .€›€”‘€‚A€€€‚ÿReturns the detail that corresponds to the given node in the path returned by getPath(). If the node pointer is NULL (the default), the detail corresponding to the tail of the (full) path is returned.ÓŒ• ge gG \€€T”A‚S~‚A€ã4i¥‘‰ƒã’n%9‰‚ã4i¥‘‰ƒã’n%9‰‚ÿconst SbMatrixgetObjectToWorld(const SoNode *node = NULL) constconst SbMatrixgetWorldToObject(const SoNode *node = NULL) constñ’ g€ g* "€ã€”‘€‚A€‚ÿThese return the transformation matrices between world space and the object space corresponding to the given node in the path. If the node pointer is NULL (the default), the matrix corresponding to the tail of the (full) path is returned.ÓŒe gS gG \€€T”A‚S~‚A€ã4i¥‘‰ƒã’n%9‰‚ã4i¥‘‰ƒã’n%9‰‚ÿconst SbMatrixgetObjectToImage(const SoNode *node = NULL) constconst SbMatrixgetImageToObject(const SoNode *node = NULL) const#ù€ gvg* "€ó€”‘€‚A€‚ÿThese return the texture transformation matrices between image space and the object space corresponding to the given node in the path. If the node pointer is NULL (the default), the matrix corresponding to the tail of the (full) path is returned.$ÏS gšgU x€Ÿ€T”A‚S~‚A€㨃õ(‰ƒã’n%9‰‚㨃õ(‰ƒã’n%9‰‚ãÓƒõ(‰ƒã’n%9‰‚ÿconst SbVec3fgetObjectPoint(const SoNode *node = NULL) constconst SbVec3fgetObjectNormal(const SoNode *node = NULL) constconst SbVec4fgetObjectTextureCoords(const SoNode *node=NULL) const/vgÕ@g* "€ €”‘€‚A€‚ÿThese return the intersection point, surface normal, and tešgÕ@g·Êfxture coordinates in the object space corresponding to the given node in the path. If the node pointer is NULL (the default), the information corresponding to the tail of the (full) path is returned.1 šgAg& €€‚A€‚ÿSEE ALSO’?Õ@g˜AgS v€~€”‘€‚AãÉ“â„€‰€ãX«]˜€‰€ãåŒÅe€‰€ãMy'9€‰‚ÿSoRayPickAction, SoPickStyle, SoDetail, SoPathBAgÚAg1F ô…ÍKÍ5ÚAgBg(OgSoPickedPointList9˜AgBg% €(€ˆˆ€‚ÿSoPickedPointList*ÚAg=Bg# €€€‚ÿNAME|PBg¹Bg, (€ €”‘€€€€‚ÿSoPickedPointList - maintains a list of pointers to SoPickedPoint instances3=BgìBg# € €€‚ÿINHERITS FROMX#¹BgDCg5 :€F€”‘€ãK2Å'€‰€€€‚ÿSbPList > SoPickedPointList2 ìBgvCg& €€€€ ‚ÿSYNOPSISmFDCgãCg' €Œ€”‘€€‚‚ÿ#include Methods from class SoPickedPointList:@vCg€Eg] ˆ€€T”A‚S~‚A€ƒ‚ƒ‚ƒã¦®´*‰‚ƒ‚ƒã¼B‘S‰‚ƒã¼B‘S‰‚ƒ‚ã¼B‘S‰ƒ‚ƒã¼B‘S‰‚ÿSoPickedPointList()SoPickedPointList(int size)SoPickedPointList(const SoPickedPointList &l)~SoPickedPointList()voidappend(SoPickedPoint *ptr)voidinsert(SoPickedPoint *ptr,int addBefore)voidtruncate(int start)SoPickedPoint *operator [](int i) constvoidset(int i,SoPickedPoint *pickedPoint)O ãCgÏEg/ .€@€”‘€‚A€ãK2Å'‰‚ÿMethods from class SbPList:Gð€EgGgW |€á€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒãK2Å'‰‚ãK2Å'‰ƒãK2Å'‰‚ƒãK2Å'‰‚ƒãK2Å'‰‚ÿintfind(const void *ptr) constvoidremove(int which)intgetLength() constvoidcopy(const SbPList &pl)SbPList &operator =(const SbPList &pl)intoperator ==(const SbPList &pl) constintoperator !=(const SbPList &pl) const4ÏEgJGg& €€‚A€‚ÿDESCRIPTIONÅGgKHg< F€‹€”‘€‚A€€€€€€€‚ÿThis subclass of SbPList holds lists of pointers to instances of classes derived from SoPickedPoint. It is used primarily to return information from picking with the SoRayPickAction class.0 JGg{Hg& €€‚A€‚ÿMETHODSCKHg¾Hg, (€.€T”A‚S~‚A€ƒ‚ÿSoPickedPointList()8{HgöHg) "€€”‘€‚A€‚ÿConstructor.K¾HgAIg, (€>€T”A‚S~‚A€ƒ‚ÿSoPickedPointList(int size)m>öHg®Ig/ .€|€”‘€‚A€€€‚ÿConstructor that pre-allocates storage for size pointers.e3AIgJg2 4€f€T”A‚S~‚A€ƒã¦®´*‰‚ÿSoPickedPointList(const SoPickedPointList &l)a8®IgtJg) "€p€”‘€‚A€‚ÿConstructor that copies the contents of another list.DJg¸Jg, (€0€T”A‚S~‚A€ƒ‚ÿ~SoPickedPointList()7tJgïJg) "€€”‘€‚A€‚ÿDestructor.V$¸JgEKg2 4€H€T”A‚S~‚A€ƒã¼B‘S‰‚ÿvoidappend(SoPickedPoint *ptr)R)ïJg—Kg) "€R€”‘€‚A€‚ÿAdds a pointer to the end of the list.f3EKgýKg3 6€f€T”A‚S~‚A€ƒã¼B‘S‰‚ÿvoidinsert(SoPickedPoint *ptr,int addBefore)jA—KggLg) "€‚€”‘€‚A€‚ÿInserts given pointer in list before pointer with given index.GýKg®Lg, (€6€T”A‚S~‚A€ƒ‚ÿvoidtruncate(int start)•lgLgCMg) "€Ø€”‘€‚A€‚ÿRemoves all pointers after one with given index, inclusive, deleting all instances removed from the list._-®Lg¢Mg2 4€Z€T”A‚S~‚Aã¼B‘S€‰ƒ‚ÿSoPickedPoint *operator [](int i) constJ!CMgìMg) "€B€”‘€‚A€‚ÿAccesses an element of a list.c0¢MgONg3 6€`€T”A‚S~‚A€ƒã¼B‘S‰‚ÿvoidset(int i,SoPickedPoint *pickedPoint)FìMg•Ng) "€:€”‘€‚A€‚ÿSets an element of a list.1 ONgÆNg& €€‚A€‚ÿSEE ALSOb'•Ng(Og; F€N€”‘€‚Aã¼B‘S€‰€ãÉ“â„€‰‚ÿSoPickedPoint, SoRayPickAction> ÆNgfOg1Õ KÍÓÏ6fOg›Og;‹gSoPointDetail5(Og›Og% € €ˆˆ€‚ÿSoPointDetail*fOgÅOg# €€€‚ÿNAME{U›OgL€g& €ª€”‘€€‚ÿSoPointDetail - storÅOgL€g(Oges detail information about vertex-based shapes made of points3ÅOg€g# € €€‚ÿINHERITS FROMU L€gÔ€g5 :€@€”‘€ãåŒÅe€‰€€€‚ÿSoDetail > SoPointDetail2 €gg& €€€€ ‚ÿSYNOPSISwPÔ€g}g' € €”‘€€‚‚ÿ#include Methods from class SoPointDetail:ë´gh‚g7 <€i€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSoPointDetail()virtual~SoPointDetail()int32_tgetCoordinateIndex() constint32_tgetMaterialIndex() constint32_tgetNormalIndex() constint32_tgetTextureCoordIndex() constP!}g¸‚g/ .€B€”‘€‚A€ãåŒÅe‰‚ÿMethods from class SoDetail:؇h‚gƒgQ p€€T”A‚S~‚AãåŒÅe€‰ƒ‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿSoDetail *copy() conststatic SoTypegetClassTypeId()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4¸‚găg& €€‚A€‚ÿDESCRIPTION{Eƒg?…g6 :€‹€”‘€‚A€€€€€‚ÿThis class contains detail information about a point in a vertex-based shape made of points. It is used for returning information about an intersection with or primitives generated by a set of points. It is also used by SoFaceDetail and SoLineDetail to return information about the vertices of faces and line segments.0 ăgo…g& €€‚A€‚ÿMETHODSZ,?…gÉ…g. ,€X€T”A‚S~‚A€ƒ‚ƒ‚ÿSoPointDetail()virtual~SoPointDetail()Go…g†g) "€<€”‘€‚A€‚ÿConstructor and destructor.Q%É…ga†g, (€J€T”A‚S~‚A€ƒ‚ÿint32_tgetCoordinateIndex() constoF†gІg) "€Œ€”‘€‚A€‚ÿReturns the index of the point within the relevant coordinate node.O#a†g‡g, (€F€T”A‚S~‚A€ƒ‚ÿint32_tgetMaterialIndex() const~UІg‡g) "€ª€”‘€‚A€‚ÿReturns the index of the material for the point within the relevant material node.M!‡gê‡g, (€B€T”A‚S~‚A€ƒ‚ÿint32_tgetNormalIndex() constëÁ‡gÕˆg* "€ƒ€”‘€‚A€‚ÿReturns the index of the surface normal at the point within the relevant normal node. Note that if normals have been generated for a shape, the index may not be into an existing normal node.S'ê‡g(‰g, (€N€T”A‚S~‚A€ƒ‚ÿint32_tgetTextureCoordIndex() const ßÕˆg1Šg* "€¿€”‘€‚A€‚ÿReturns the index of the texture coordinates for the point within the relevant normal node. Note that if texture coordinates have been generated for a shape, the index may not be into an existing texture coordinate node.1 (‰gbŠg& €€‚A€‚ÿSEE ALSOÙn1Šg;‹gk ¦€Ü€”‘€‚AãåŒÅe€‰€ã¼B‘S€‰€ãkNÞ€‰€ã¹êZY€‰€ã~«M§€‰€ãIöHŽ€‰‚ÿSoDetail, SoPickedPoint, SoPrimitiveVertex, SoVertexShape, SoFaceDetail, SoLineDetail= bŠgx‹g1³‡ÎV†Ï7x‹g¬‹g7ÌgSoPointLight4;‹g¬‹g% €€ˆˆ€‚ÿSoPointLight*x‹gÖ‹g# €€€‚ÿNAME^8¬‹g4Œg& €p€”‘€€‚ÿSoPointLight - node representing a point light source3Ö‹ggŒg# € €€‚ÿINHERITS FROM¨O4ŒggY ‚€ž€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã Ú˜€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoLight > SoPointLight2 gŒgAg& €€€€ ‚ÿSYNOPSISrKg³g' €–€”‘€€‚‚ÿ#include Fields from class SoPointLight:IAgüg2 4€.€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3flocationN³gJŽg/ .€>€”‘€‚A€ã Ú˜‰‚ÿFields from class SoLight:z8ügÄŽgB T€p€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ãð@I1‰ƒ‚ÿSoSFBoolonSoSFFloatintensitySoSFColorcolorL#JŽgg) "€F€”‘€‚A€‚ÿMethods from class SoPointLight:g3ÄŽgwg4 8€f€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoPointLight()static SoTypegetClassTypeId()NgÅg/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|wgMÁgn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÅgMÁg;‹g’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Åg¥Ág/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØMÁg Äg 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¥Ág’Äg@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N ÄgàÄg/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ’ÄgÆgY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4àÄgKÆg& €€‚A€‚ÿDESCRIPTIONÁ—Æg Çg* "€/€”‘€‚A€‚ÿThis node defines a point light source at a fixed 3D location. A point source illuminates equally in all directions; that is, it is omnidirectional./ KÆg;Çg& €€‚A€‚ÿFIELDSI Çg„Çg2 4€.€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3flocationC;ÇgÇÇg) "€4€”‘€‚A€‚ÿLocation of the source.0 „Çg÷Çg& €€‚A€‚ÿMETHODS>ÇÇg5Èg, (€$€T”A‚S~‚A€ƒ‚ÿSoPointLight()d;÷Çg™Èg) "€v€”‘€‚A€‚ÿCreates a point light source node with default settings.U#5ÈgîÈg2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*™ÈgAÉg) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8îÈgyÉg& €$€‚A€‚ÿACTION BEHAVIORHAÉgÁÉg2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionÙyÉgÇÊg- (€³€”‘€‚A€€‚ÿActivates this light (if so specified) during traversal. All shape nodes that come after this light in the scene graph are illuminated by this light. The light's location is affected by the current transformation.<ÁÉgËg& €,€‚A€‚ÿFILE FORMAT/DEFAULT9ÇÊg<Ëg* $€€P„7|‚€‚ÿPointLight {g4Ëg£Ëg3 6€h€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿonTRUEintensity1color1 1 1location0 0 1}1 <ËgÔËg& €€‚€‚ÿSEE ALSOc(£Ëg7Ìg; F€P€”‘€‚ãÀú€‰€ã¨òƯ€‰‚ÿSoDirectionalLight, SoSpotLightDÔËg{Ìg1ƒ;ÓÏL…Ñ8{Ìg¶ÌgsÇhSoPointLightDragger;7Ìg¶Ìg% €,€ˆˆ€‚ÿSoPointLightDragger*{ÌgàÌg# €€€‚ÿNAME[¶ÌgaÍg& €¶€”‘€€‚ÿSoPointLightDragger - sun-shaped icon you can translate in 3D by dragging with the mouse3àÌg”Íg# € €€‚ÿINHERITS FROMðaÍg„Îgq ²€þ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoPointLightDragger2 ”Íg¶Îg& €€€€ ‚ÿSYNOPSISƒ\„Îg9Ïg' €¸€”‘€€‚‚ÿ#include Fields from class SoPointLightDragger:L¶Îg…Ïg2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationP!9ÏgÕÏg/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:H…Ïg)h2 4€,€T”A‚S~‚AãU×SéÕÏg)h7Ìg€‰ƒ‚ÿSoSFBoolisActiveW(ÕÏg€h/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³i)h3hJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO €h‚h/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%3hÙh2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListS*‚h,h) "€T€”‘€‚A€‚ÿMethods from class SoPointLightDragger:·{Ùhãh< H€ö€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoPointLightDragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q",h4h/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:KãhhC T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨4hbh; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)hºh/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”UbhNh? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"ºhŸh/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°Nhß h î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}Ÿhž hB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)Nß hì h/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ž hh hn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ì hÀ h/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®h hóh… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÀ h{h@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NóhÉh/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ{h AhY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9Éh Ah7Ìg‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!Éh\Ah/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U) Ah±Ah, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+\AhBh, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4±Ahƒh#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes·'|‚hõƒh#ð€NÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€2€ÿ€4€€€‚ÿ€@€€€‚ÿÿÿmaterialMaterial--yesÁ1>ƒh¶„h#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslatorDragPointDragger--yes,õƒhâ„h' € €€‚€‚ÿa6¶„hC…h+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’1â„hÕ…ha#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8C…hn†ha#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=Õ…h«†h' €,€€‚€‚ÿDRAGGER RESOURCES%Òn†hЈhS t€¥€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿResource:pointLightOverallMaterialPart:materialAppearance:white. half strength emissive, half strength diffuseDescription:sets material for the sun shape when stationary. Resource for the moving sun, pointLightTranslatorPlaneTranslatorActive, contains a yellow material for highlighting.Resource:pointLightTranslatorPlaneTranslatorParts:translator.yzTranslator.translatortranslator.xzTranslator.translatortranslator.xyTranslator.translator Á«†hÙŠhH ^€ƒ€PÍÇ~‚Í€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚‚ÿAppearance:sun shape with no materialDescription:picking these parts initiates dragging by the yz, xz, and xy planar draggers respectively.Resource:pointLightTranslatorPlaneTranslatorActiveParts:translator.yzTranslator.translatorActivetranslator.xzTranslator.translatorActivetranslator.xyTranslator.translatorActiveAppearance:yellow sun shapeDescription:shown during planar dragging in the yz, xz, and xy planes respectively.2ÛЈh hW |€·€PÍÇ~‚Í€ ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿResource:pointLightTranslatorLineTranslatorParts:translator.xTranslator.translatortranslator.yTranslator.translatortranslator.zTranslator.translatorAppearance:white cylinderDescription:picking these parts initiates dragging in the x, y, and z linear draggers respectively.Resource:pointLightTranslatorLineTranslatorActiveParts:translator.xTranslator.translatorActivetranslator.yTranslator.translatorActivetranslator.zTranslator.translatorActive£uÙŠh®h. ,€ê€PÍÇ~‚Í€ ƒ‚ƒ‚‚ÿAppearance:yellow cylinderDescription:shown during linear dragging in the x, y, and z directions respectively.< hêh& €,€‚Í€‚ÿFILE FORMAT/DEFAULT@®h*Žh* $€,€P„7|‚€‚ÿPointLightDragger {ÊêhEÀhE X€•€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ‚ƒ‚ƒ‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEtranslation0 0 0callbackListNULLmaterialtranslatorDragPointDragger {}translator.yzTranslator.translatortranslator.xzTranslator.translatortranslator.xyTranslator.tr*ŽhEÀh7ÌganslatorB *Žh‡Âh6 :€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿtranslator.yzTranslator.translatorActivetranslator.xzTranslator.translatorActivetranslator.xyTranslator.translatorActivetranslator.xTranslator.translatortranslator.yTranslator.translatortranslator.zTranslator.translatorIEÀhÐÃh1 0€1€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿtranslator.xTranslator.translatorActivetranslator.yTranslator.translatorActivetranslator.zTranslator.translatorActive},‡ÂhüÃh) "€€”‘€‚€‚ÿ1 ÐÃh-Äh& €€‚€‚ÿSEE ALSOFüÃhsÇh, &‚5€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2DraggerB-ÄhµÇh1á*V†Ï¿Ó9µÇhîÇhºiSoPointLightManip9sÇhîÇh% €(€ˆˆ€‚ÿSoPointLightManip*µÇhÈh# €€€‚ÿNAMEtNîÇhŒÈh& €œ€”‘€€‚ÿSoPointLightManip - point light node with 3D interface for editing location3Èh¿Èh# € €€‚ÿINHERITS FROMÌgŒÈh‹Éhe š€Î€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã Ú˜€‰€㦊3ý€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoLight > SoPointLight > SoPointLightManip2 ¿Èh½Éh& €€€€ ‚ÿSYNOPSIS€S‹Éh=Êh- *€¦€”‘€€‚㦊3ý‰‚ÿ#include Fields from class SoPointLight:I½Éh†Êh2 4€.€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3flocationN=ÊhÔÊh/ .€>€”‘€‚A€ã Ú˜‰‚ÿFields from class SoLight:z8†ÊhNËhB T€p€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ãð@I1‰ƒ‚ÿSoSFBoolonSoSFFloatintensitySoSFColorcolorQ(ÔÊhŸËh) "€P€”‘€‚A€‚ÿMethods from class SoPointLightManip:¶NËh¯ÌhZ ‚€m€T”A‚S~‚A€ƒ‚ãÈï?†‰ƒ‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒãMy'9‰‚ãB-9‰ƒ‚ÿSoPointLightManip()SoDragger *getDragger()SbBoolreplaceNode(SoPath *p )SbBoolreplaceManip(SoPath *p,SoPointLight *newOne ) conststatic SoTypegetClassTypeId()NŸËhýÌh/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|¯ÌhyÎhn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ýÌhÑÎh/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØyÎhBi 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer ÑÎhBisÇh*fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÑÎhÊi@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NBii/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÊiOiY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4iƒi& €€‚A€‚ÿDESCRIPTIONCOiÆi? L€ €”‘€‚A€€€€€€€€‚ÿSoPointLightManip is the base class for all SoPointLight nodes that have a built-in 3D user interface (this is the only such class provided with the Open Inventor toolkit). Since it is derived from SoPointLight, any changes to its fields result in a change of lighting for nodes that follow it in the scene graph. In this case, the interface edits the location field. Also, the color of the manipulator's geometry will reflect the color of the light (but you can not edit the color using this manipulator).­kƒisiB R€×€”‘€‚A€€€€€€€€€‚ÿTypically, you will want to replace a regular SoPointLight with an SoPointLightManip (as when the user selects a light to be edited), or vice versa (as when the user is done moving the light and the interface should go away). Use the replaceNode() method to insert a manipulator into a scene graph, and the replaceManip() method to remove it when done.EÆi¸ iB R€€”‘€‚A€€€€€€€€€‚ÿThe SoPointLightManip utilizes an SoPointLightDragger to provide a 3D interface. However, the manipulator differs from the dragger; it lights other objects in the scene because, as an SoPointLight, it alters the state. The fields values and movement of the dragger, on the other hand, affect only the dragger itself. To find out more about how the interface works and what each part will do, see the reference page for SoPointLightDragger. The interfaces of the dragger and the manipulator are identical.ç±siŸ i6 :€c€”‘€‚A€€€€€‚ÿThe SoPointLightManip utilizes its dragger by adding it as a hidden child. When an action is applied to the manipulator, such as rendering or handling events, the manipulator first traverses the dragger, and then the manipulator adds its lighting parameters to the state. When you click-drag-release over the manipulator, it passes these events down to the dragger, which moves as a result ("I can't help it, I'm a dragger!").þ¶¸ i iH ^€m€”‘€‚A€€€€€€€€€€€‚ÿThe manipulator maintains consistency between the fields of the dragger and its own fields. Let's say you use the mouse to translate the dragger. Callbacks insure that the location field of the manipulator will change by the same amount, thus changing the lighting of nodes which follow in the scene graph. Similarly, if you set the location field of the SoPointLightManip, the manipulator will place the dragger accordingly.€JŸ ii6 :€•€”‘€‚A€€€€€‚ÿBecause the dragger is a hidden child, you can see the dragger on screen and interact with it, but the dragger does not show up when you write the manipulator to file. Also, any SoPath will end at the manipulator. (See the Actions section of this reference page for a complete description of when the dragger is traversed).%õ iN@i0 .€ë€”‘€‚A€€€‚ÿIf you want to get a pointer to the dragger you can get it from the manipulator using the getDragger() method. You will need to do this if you want to change the geometry of a iN@isÇhmanipulator, since the geometry actually belongs to the dragger.0 i~@i& €€‚A€‚ÿMETHODSCN@iÁ@i, (€.€T”A‚S~‚A€ƒ‚ÿSoPointLightManip()8~@iù@i) "€€”‘€‚A€‚ÿConstructor.OÁ@iHAi2 4€:€T”A‚S~‚AãÈï?†€‰ƒ‚ÿSoDragger *getDragger()Tù@iœBi6 :€=€”‘€‚A€€€€€‚ÿReturns a pointer to the dragger being used by this manipulator. Given this pointer, you can customize the dragger just like you would any other dragger. You can change geometry using the setPart() method, or add callbacks using the methods found in the SoDragger reference page.]%HAiùBi8 @€J€T”A‚S~‚A㑶p6€‰ƒãMy'9‰‚ÿSbBoolreplaceNode(SoPath *p )l6œBieDi6 :€m€”‘€‚A€€€€€‚ÿReplaces the tail of the path with this manipulator. The tail of the path must be an SoPointLight node (or subclass thereof). If the path has a nodekit, this will try to use setPart() to insert the manipulator. Otherwise, the manipulator requires that the next to last node in the path chain be a group.ŸvùBiEi) "€ì€”‘€‚A€‚ÿThe field values from the point light node will be copied to this manipulator, and the light node will be replaced.Ñ¡eDiÕFi0 .€C€”‘€‚A€€€‚ÿThe manipulator will not call ref() on the node it is replacing. The old node will disappear if it has no references other than from the input path p and its parent, since this manipulator will be replacing it in both of those places. Nor will the manipulator make any changes to field connections of the old node. The calling process is thus responsible for keeping track of its own nodes and field connections.{BEiPGi9 B€„€T”A‚S~‚A㑶p6€‰ƒãMy'9‰‚ÿSbBoolreplaceManip(SoPath *p,SoPointLight *newOne ) constLÕFiœHi6 :€-€”‘€‚A€€€€€‚ÿReplaces the tail of the path, which must be this manipulator, with the given SoPointLight node. If the path has a nodekit, this will try to use setPart() to insert the new node. Otherwise, the manipulator requires that the next to last node in the path chain be a group.ŸvPGi;Ii) "€ì€”‘€‚A€‚ÿThe field values from the manipulator will be copied to the point light node, and the manipulator will be replaced.#íœHi^Ji6 :€Û€”‘€‚A€€€€€‚ÿThe manipulator will not call ref() or unref() on the node which is replacing it, nor will it make any changes to field connections. The calling process is thus responsible for keeping track of its own nodes and field connections.U#;Ii³Ji2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*^JiKi) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8³Ji>Ki& €$€‚A€‚ÿACTION BEHAVIORÔƒKiLiQ p€€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ã¹_ØS‰ãàê‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoHandleEventAction, SoRayPickActionK >Ki]Mi? L€€”‘€‚A€€€€€€€€‚ÿFirst, traverses the dragger the way an SoGroup would. All draggers place themselves in space, but leave the current transformation unchanged when finished. Then the SoPointLightManip adds a point light into the state, just like its base class, SoPointLight.FLi£Mi2 4€(€”‘€‚AãòÓ}ª€‰€‚ÿSoSearchAction‘_]Mi4Ni2 4€¾€”‘€‚A€€€€‚ÿSearches just like an SoPointLight. Does not search the dragger, which is a hidden child.E£MiyNi2 4€&€”‘€‚AãeY €‰€‚ÿSoWriteActionX4NiÑOi9 @€?€”‘€‚A€€€€€€‚ÿWrites out just like an SoPointLight. Does not write the dragger, which is a hidden child. If you really need to write valuable information about the dragger, such as customized geometry, you can retrieve the dragger with the getDragger() method and then write it out separately.<yNi€i& €,€‚A€‚ÿFILE FORÑOi€isÇhMAT/DEFAULT>ÑOiW€i* $€(€P„7|‚€‚ÿPointLightManip {g4€i¾€i3 6€h€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿonTRUEintensity1color1 1 1location0 0 1}1 W€iï€i& €€‚€‚ÿSEE ALSOËl¾€iºi_ Ž€Ø€”‘€‚ãÈï?†€‰€㦊3ý€‰€ãz"À‰€ã½ôm€‰€ã‰Ë 퀉‚ÿSoDragger, SoPointLight, SoPointLightDragger, SoDirectionalLightManip, SoSpotLightManip; ï€iõi1„L…Ñß„Ó:õi'‚iaÉiSoPointSet2 ºi'‚i% €€ˆˆ€‚ÿSoPointSet*õiQ‚i# €€€‚ÿNAMEJ$'‚i›‚i& €H€”‘€€‚ÿSoPointSet - point set shape node3Q‚i΂i# € €€‚ÿINHERITS FROMêy›‚i¸ƒiq ²€ò€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ã¹êZY€‰€ã5ÖfE€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape > SoNonIndexedShape > SoPointSet2 ΂iêƒi& €€€€ ‚ÿSYNOPSISnG¸ƒiX„i' €Ž€”‘€€‚‚ÿ#include Fields from class SoPointSet:Jêƒi¢„i2 4€0€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32numPointsX)X„iú„i/ .€R€”‘€‚A€ã5ÖfE‰‚ÿFields from class SoNonIndexedShape:K¢„iE…i2 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32startIndexT%ú„i™…i/ .€J€”‘€‚A€ã¹êZY‰‚ÿFields from class SoVertexShape:NE…iç…i2 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyR#™…i9†i/ .€F€”‘€‚A€ã:"Í݉‚ÿMethods from class SoPointSet:e1ç…iž†i4 8€b€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoPointSet()static SoTypegetClassTypeId()N9†iì†i/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ž†ihˆin ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ì†iÀˆi/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØhˆi%‹i 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÀˆi­‹i@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N%‹iû‹i/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ­‹i2iY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4û‹ifi& €€‚A€‚ÿDESCRIPTION'ë2iŽi< F€×€”‘€‚A€€€€€€€‚ÿThis node represents a set of points located at the coordinates specified by the vertexProperty field (from SoVertexShape) or the current inherited coordinates. For optimal performance, the vertexProperty field is recommended.Ä‘fiQi3 4€#€”‘€‚A€€€€‚ÿSoPointSet uses the coordinates in order, starting with the first one. The number of points in the set is specified by the numPoints field.ÚŽiaÀi* "€µ€”‘€‚A€‚ÿThe coordinates of the point set are transformed by the current cumulative transformation. The points are drawn with the current ligQiaÀiºiht model and drawing style (drawing styles FILLED and LINES are treated as POINTS).ðQi{Ái* "€á€”‘€‚A€‚ÿTreatment of the current material and normal binding is as follows: PER_PART, PER_FACE, and PER_VERTEX bindings bind one material or normal to each point. The default material binding is OVERALL. The default normal binding is PER_VERTEX./ aÀiªÁi& €€‚A€‚ÿFIELDSJ{ÁiôÁi2 4€0€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32numPoints=ªÁi1Âi) "€(€”‘€‚A€‚ÿNumber of points.0 ôÁiaÂi& €€‚A€‚ÿMETHODS<1ÂiÂi, (€ €T”A‚S~‚A€ƒ‚ÿSoPointSet()[2aÂiøÂi) "€d€”‘€‚A€‚ÿCreates a point set node with default settings.U#ÂiMÃi2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*øÂi Ãi) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8MÃiØÃi& €$€‚A€‚ÿACTION BEHAVIORH Ãi Äi2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionŒ`ØÃi¬Äi, (€À€”‘€‚A€€‚ÿDraws points based on the current coordinates, normals, materials, drawing style, and so on.G ÄióÄi2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction»ˆ¬Äi®Åi3 4€€”‘€‚A€€€€‚ÿPicks points based on the current coordinates and transformation. Details about the intersection are returned in an SoPointDetail.NóÄiüÅi2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActionà³®ÅiÜÆi- (€g€”‘€‚A€€‚ÿComputes the bounding box that encloses all points in the set with the current transformation applied to them. Sets the center to the average of the coordinates of all points.HüÅi$Çi2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackAction–jÜÆiºÇi, (€Ô€”‘€‚A€€‚ÿIf any point callbacks are registered with the action, they will be invoked for each point in the set.<$ÇiöÇi& €,€‚A€‚ÿFILE FORMAT/DEFAULT7 ºÇi-Èi* $€€P„7|‚€‚ÿPointSet {d3öÇi‘Èi1 2€f€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿvertexPropertyNULLstartIndex0numPoints-1}1 -ÈiÂÈi& €€‚€‚ÿSEE ALSOŸL‘ÈiaÉiS v€˜€”‘€‚ã[Eà€‰€ãy‚2€‰€ãqÒÍ@€‰€ãmý¼€‰‚ÿSoCoordinate3, SoDrawStyle, SoPointDetail, SoVertexProperty@ÂÈi¡Éi1ç¿ÓØÔ;¡ÉiØÉi= jSoPolygonOffset7aÉiØÉi% €$€ˆˆ€‚ÿSoPolygonOffset*¡ÉiÊi# €€€‚ÿNAMEmGØÉioÊi& €Ž€”‘€€‚ÿSoPolygonOffset - encapsulates the OpenGL 1.1 polygon offset feature3Êi¢Êi# € €€‚ÿINHERITS FROM‘DoÊi3ËiM j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoPolygonOffset2 ¢ÊieËi& €€€€ ‚ÿSYNOPSIST.3Ëi¹Ëi& €\€”‘€€‚ÿ#include ŠZeËiCÌi0 0€´€T”A‚S~‚A€ƒ‚ÿenum Style{SoPolygonOffset::FILLED,SoPolygonOffset::LINES,SoPolygonOffset::POINTS}N%¹Ëi‘Ìi) "€J€”‘€‚A€‚ÿFields from class SoPolygonOffset:”JCÌi%ÍiJ d€”€T”A‚S~‚Aã0â1€‰ƒ‚ã0â1‰ƒ‚ã:YN‰ƒ‚ãU×S鉃‚ÿSoSFFloatfactorSoSFFloatunitsSoSFBitMaskstylesSoSFBoolonO&‘ÌitÍi) "€L€”‘€‚A€‚ÿMethods from class SoPolygonOffset:j6%ÍiÞÍi4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoPolygonOffset()static SoTypegetClassTypeId()NtÍi,Îi/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÞÍi¨Ïin ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X),Îi j/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:¨Ïi jaÉieبÏiqj 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH jùj@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NqjGj/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þùj~jY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Gj²j& €€‚A€‚ÿDESCRIPTIONå»~j—j* "€w€”‘€‚A€‚ÿThis class encapsulates the OpenGL 1.1 glPolygonOffset() function. This node can be used to offset polygons and/or lines that are at the exact same depth to prevent z-buffer stitching.î²jµj0 .€Ý€”‘€‚A€€€‚ÿThe styles field is a bit-wise combination of FILLED, LINES, and POINTS, and determines which primitive types should be offset. A positive offset value moves the primitives away from the camera and a negative value pulls them closer.0 —jåj& €€‚A€‚ÿMETHODSAµj&j, (€*€T”A‚S~‚A€ƒ‚ÿSoPolygonOffset()8åj^j) "€€”‘€‚A€‚ÿConstructor.8&j–j& €$€‚A€‚ÿACTION BEHAVIORF^jÜj1 2€*€T”A‚S~‚Aã©öø(€‰‚ÿSoGLRenderActionŠ[–jfj/ .€¶€”‘€‚A€€€‚ÿCalls glPolygonOffset and enables or disables the polygon offset feature as specified.<Üj¢j& €,€‚A€‚ÿFILE FORMAT/DEFAULT<fjÞj* $€$€P„7|‚€‚ÿPolygonOffset {_,¢j= j3 6€X€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿfactor1units1stylesFILLEDonTRUE}BÞj j1( ß„ÓtƒÔ< j¸ j¶EjSoPrimitiveVertex9= j¸ j% €(€ˆˆ€‚ÿSoPrimitiveVertex* jâ j# €€€‚ÿNAMEiC¸ jK j& €†€”‘€€‚ÿSoPrimitiveVertex - represents a vertex of a generated primitive3â j~ j# € €€‚ÿINHERITS FROM>K j¼ j) "€*€”‘€€€‚ÿSoPrimitiveVertex2 ~ jî j& €€€€ ‚ÿSYNOPSISwP¼ je j' € €”‘€€‚‚ÿ#include Methods from class SoPrimitiveVertex:ºSî j jg œ€§€T”A‚S~‚A€ƒ‚ƒãkNÞ‰‚ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒ‚ãÓƒõ(‰ƒ‚ƒ‚ãåŒÅe‰ƒ‚ãkNÞ‰ƒãkNÞ‰‚ÿSoPrimitiveVertex()SoPrimitiveVertex(const SoPrimitiveVertex &pv)~SoPrimitiveVertex()const SbVec3f &getPoint() constconst SbVec3f &getNormal() constconst SbVec4f &getTextureCoords() constintgetMaterialIndex() constconst SoDetail *getDetail() constSoPrimitiveVertex &operator =(const SoPrimitiveVertex &pv)4e jS j& €€‚A€‚ÿDESCRIPTIONÇ jj< F€€”‘€‚A€€€€€€€‚ÿAn SoPrimitiveVertex represents a vertex of a primitive (triangle, line segment, or point) that is being generated by an SoCallbackAction. It contains an object-space point, normal, texture coordinates, material index, and a pointer to an instance of an SoDetail subclass. This detail may contain more information about the vertex, or may be a NULL pointer if there is no such info.éS jA@j6 :€Ó€”‘€‚A€€€€€‚ÿInstances of SoPrimitiveVertex are typically created on the stack by shape classes while they are generating primitives. Anyone who wants to save them as return values from SoCjA@j= jallbackAction should probably make copies of them.0 jq@j& €€‚A€‚ÿMETHODS•_A@jAj6 <€¾€T”A‚S~‚A€ƒ‚ƒãkNÞ‰‚ƒ‚ÿSoPrimitiveVertex()SoPrimitiveVertex(const SoPrimitiveVertex &pv)~SoPrimitiveVertex()£zq@j©Aj) "€ô€”‘€‚A€‚ÿConstructors and destructor. Note that copying a primitive vertex copies the detail pointer, and not the detail itself.¶tAj_BjB T€è€T”A‚S~‚A€㨃õ(‰ƒ‚㨃õ(‰ƒ‚ãÓƒõ(‰ƒ‚ÿconst SbVec3f &getPoint() constconst SbVec3f &getNormal() constconst SbVec4f &getTextureCoords() const|S©AjÛBj) "€¦€”‘€‚A€‚ÿThese return the surface point, normal, and texture coordinates in object space.K_Bj&Cj, (€>€T”A‚S~‚A€ƒ‚ÿintgetMaterialIndex() const…\ÛBj«Cj) "€¸€”‘€‚A€‚ÿReturns the index into the current set of materials of the material active at the vertex.Y'&CjDj2 4€N€T”A‚S~‚A€ãåŒÅe‰ƒ‚ÿconst SoDetail *getDetail() const¥|«Cj©Dj) "€ø€”‘€‚A€‚ÿReturns the detail giving more information about the vertex. Note that this pointer may be NULL if there is no more info.zBDj#Ej8 @€„€T”A‚S~‚AãkNÞ€‰ƒãkNÞ‰‚ÿSoPrimitiveVertex &operator =(const SoPrimitiveVertex &pv)“j©Dj¶Ej) "€Ô€”‘€‚A€‚ÿCopies the given vertex. Note that just the pointer to the detail is copied, and not the detail itself.: #EjðEj1ZØÔYÕ=ðEj!Fj_ŒjSoProfile1 ¶Ej!Fj% €€ˆˆ€‚ÿSoProfile*ðEjKFj# €€€‚ÿNAME^8!Fj©Fj& €p€”‘€€‚ÿSoProfile - abstract base class for all profile nodes3KFjÜFj# € €€‚ÿINHERITS FROM‹>©FjgGjM j€|€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoProfile2 ÜFj™Gj& €€€€ ‚ÿSYNOPSISN(gGjçGj& €P€”‘€€‚ÿ#include \™GjCIjI `€'€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum Profile{SoProfile::START_FIRSTStart a new profile and remove any existing profiles from the current listSoProfile::START_NEWStart a new profile and add it to the current listSoProfile::ADD_TO_CURRENTAdd to end of the last profile in the current list}HçGj‹Ij) "€>€”‘€‚A€‚ÿFields from class SoProfile:a'CIjìIj: D€N€T”A‚S~‚Aã-Ï]€‰ƒ‚ãØtW鉃‚ÿSoMFInt32indexSoSFEnumlinkageI ‹Ij5Jj) "€@€”‘€‚A€‚ÿMethods from class SoProfile:U#ìIjŠJj2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()N5JjØJj/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ŠJjTLjn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ØJj¬Lj/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØTLjOj 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¬Lj™Oj@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NOj €j/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:™Oj €j¶Ej7Þ™OjCjY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4 €jwj& €€‚A€‚ÿDESCRIPTION­wCj$ƒj6 :€ï€”‘€‚A€€€€€‚ÿThis node is the abstract base class for all profile nodes, which define 2D curves. A profile is not itself geometry, but is used to change or delimit the geometry of something else. For an SoText3 node, the profile determines the cross-section of the side of each text character. For an SoNurbsSurface node, the profile is used to specify trim curves for the surface.é§wj …jB R€O€”‘€‚A€€€€€€€€€‚ÿThe current profile state can consist of one or more profiles, each of which can be made up of one or more instances of SoProfile subclass nodes. Each profile node specifies (in the index field) a set of indices that refer to the current set of profile coordinates, specified using either an SoProfileCoordinate2 or an SoProfileCoordinate3 node. No profile curve should intersect itself or another profile curve.ب$ƒjå†j0 .€Q€”‘€‚A€€€‚ÿProfiles are part of the state, just like all other properties. The state contains a current list of profiles. Depending on the linkage field, a profile can clear the list and begin a new profile, begin a new profile at the end of those already in the list, or append to the last profile in the current list. Note that when appending profile B to the end of profile A, B must begin at the same 2D point at which A ends./ …j‡j& €€‚A€‚ÿFIELDSFå†jZ‡j2 4€(€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32indexM$‡j§‡j) "€H€”‘€‚A€‚ÿIndices into profile coordinates.GZ‡jî‡j2 4€*€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumlinkage†]§‡jtˆj) "€º€”‘€‚A€‚ÿSpecifies connectivity of profile curve with respect to profiles in current list in state.0 î‡j¤ˆj& €€‚A€‚ÿMETHODSU#tˆjùˆj2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¤ˆjL‰j) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ùˆj„‰j& €$€‚A€‚ÿACTION BEHAVIOR›WL‰jŠjD X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActionX,„‰jwŠj, (€X€”‘€‚A€€‚ÿAdds profile to current traversal state.<Šj³Šj& €,€‚A€‚ÿFILE FORMAT/DEFAULT“jwŠjF‹j) "€Ô€”‘€‚A€‚ÿThis is an abstract class. See the reference page of a derived class for the format and default values.1 ³Šjw‹j& €€‚A€‚ÿSEE ALSOè}F‹j_Œjk ¦€ú€”‘€‚Aãä+Ža€‰€ã‰X˜é€‰€ã½)×n€‰€ã-ÒÀ€‰€ã.ÒÀ€‰€ãêwš€‰‚ÿSoLinearProfile, SoNurbsProfile, SoNurbsSurface, SoProfileCoordinate2, SoProfileCoordinate3, SoText3Ew‹j¤Œj1ötƒÔw‡Õ>¤ŒjàŒjÅÌjSoProfileCoordinate2<_ŒjàŒj% €.€ˆˆ€‚ÿSoProfileCoordinate2*¤Œj j# €€€‚ÿNAMEW1àŒjaj& €b€”‘€€‚ÿSoProfileCoordinate2 - profile coordinate node3 j”j# € €€‚ÿINHERITS FROM–Iaj*ŽjM j€’€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoProfileCoordinate22 ”j\Žj& €€€€ ‚ÿSYNOPSIS‚[*ŽjÞŽj' €¶€”‘€€‚‚ÿ#include Fields from class SoProfileCoordinate2:F\Žj$j2 4€(€T”A‚S~‚Aãóñi`€‰ƒ‚ÿSoMFVec2fpointT+ÞŽjxj) "€V€”‘€‚A€‚ÿMethods from class SoProfileCoordinate2:o;$j Àj4 8€v€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoProfileCoordinate2()static SoTypegetClassTypeId()xj Àj_ŒjNxjZÀj/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:| ÀjÖÁjn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ZÀj.Âj/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÖÁj“Äj 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH.ÂjÅj@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N“ÄjiÅj/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÅj ÆjY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4iÅjÔÆj& €€‚A€‚ÿDESCRIPTION-ý ÆjÈj0 .€û€”‘€‚A€€€‚ÿThis node defines a set of 2D coordinates to be used by subsequent SoProfile nodes. This node does not produce a visible result during rendering; it simply replaces the current profile coordinates in the traversal state for subsequent nodes to use./ ÔÆj0Èj& €€‚A€‚ÿFIELDSFÈjvÈj2 4€(€T”A‚S~‚Aãóñi`€‰ƒ‚ÿSoMFVec2fpointI 0Èj¿Èj) "€@€”‘€‚A€‚ÿ2D profile coordinate points.0 vÈjïÈj& €€‚A€‚ÿMETHODSF¿Èj5Éj, (€4€T”A‚S~‚A€ƒ‚ÿSoProfileCoordinate2()d;ïÈj™Éj) "€v€”‘€‚A€‚ÿCreates a profile coordinate node with default settings.U#5ÉjîÉj2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*™ÉjAÊj) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8îÉjyÊj& €$€‚A€‚ÿACTION BEHAVIOR›WAÊjËjD X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActiond8yÊjxËj, (€p€”‘€‚A€€‚ÿSets profile coordinates in current traversal state.<Ëj´Ëj& €,€‚A€‚ÿFILE FORMAT/DEFAULTAxËjõËj* $€.€P„7|‚€‚ÿProfileCoordinate2 {<´Ëj1Ìj- *€€P„|‚€ƒ‚‚‚ÿpoint0 0}1 õËjbÌj& €€‚€‚ÿSEE ALSOc(1ÌjÅÌj; F€P€”‘€‚ãaC}2€‰€ã.ÒÀ€‰‚ÿSoProfile, SoProfileCoordinate3EbÌj Íj1¨YÕZÖ? ÍjFÍjâ kSoProfileCoordinate3<ÅÌjFÍj% €.€ˆˆ€‚ÿSoProfileCoordinate3* ÍjpÍj# €€€‚ÿNAME`:FÍjÐÍj& €t€”‘€€‚ÿSoProfileCoordinate3 - rational profile coordinate node3pÍjÎj# € €€‚ÿINHERITS FROM–IÐÍj™ÎjM j€’€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoProfileCoordinate32 ÎjËÎj& €€€€ ‚ÿSYNOPSIS‚[™ÎjMÏj' €¶€”‘€€‚‚ÿ#include Fields from class SoProfileCoordinate3:FËÎj“Ïj2 4€(€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fpointT+MÏj k) "€V€”‘€‚A€‚ÿMethods from class SoProfileCoordinate3:“Ïj kÅÌjo;“Ïj{k4 8€v€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoProfileCoordinate3()static SoTypegetClassTypeId()N kÉk/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|{kEkn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ékk/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØEkk 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHkŠk@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NkØk/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞŠkkY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ØkCk& €€‚A€‚ÿDESCRIPTIONКk k6 :€5€”‘€‚A€€€€€‚ÿThis node defines a set of rational 3D coordinates to be used by subsequent SoProfile nodes. (These coordinates may be used for any type of profile; they may be useful in some cases for specifying control points for SoNurbsProfile nodes.) This node does not produce a visible result during rendering; it simply replaces the current profile coordinates in the traversal state for subsequent nodes to use./ CkB k& €€‚A€‚ÿFIELDSF kˆ k2 4€(€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fpointR)B kÚ k) "€R€”‘€‚A€‚ÿRational 3D profile coordinate points.0 ˆ k k& €€‚A€‚ÿMETHODSFÚ kP k, (€4€T”A‚S~‚A€ƒ‚ÿSoProfileCoordinate3()d; k´ k) "€v€”‘€‚A€‚ÿCreates a profile coordinate node with default settings.U#P k k2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*´ k\ k) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8 k” k& €$€‚A€‚ÿACTION BEHAVIOR›W\ k/ kD X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActiond8” k“ k, (€p€”‘€‚A€€‚ÿSets profile coordinates in current traversal state.</ kÏ k& €,€‚A€‚ÿFILE FORMAT/DEFAULTA“ k k* $€.€P„7|‚€‚ÿProfileCoordinate3 {>Ï kN k- *€"€P„|‚€ƒ‚‚‚ÿpoint0 0 1}1  k k& €€‚€‚ÿSEE ALSOc(N kâ k; F€P€”‘€‚ãaC}2€‰€ã-ÒÀ€‰‚ÿSoProfile, SoProfileCoordinate2;  kk1îw‡ÕG×@kOk-‹kSoQuadMesh2 â kOk% €€ˆˆ€‚ÿSoQuadMesh*kyk# €€€‚ÿNAMES-OkÌk& €Z€”‘€€‚ÿSoQuadMesh - quadrilateral mesh shape node3ykÿk# € €€‚ÿINHERITS FROMêyÌk @kq ²€ò€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ã¹êZY€‰€ã5ÖfE€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape > SoNonIndexedShape > SoQuadMeshÿk @kâ k2 ÿk>@k& €€€€ ‚ÿSYNOPSISnG @k¬@k' €Ž€”‘€€‚‚ÿ#include Fields from class SoQuadMesh:u;>@k!Ak: D€v€T”A‚S~‚Aãw?2€‰ƒ‚ãw?2‰ƒ‚ÿSoSFInt32verticesPerColumnSoSFInt32verticesPerRowX)¬@kyAk/ .€R€”‘€‚A€ã5ÖfE‰‚ÿFields from class SoNonIndexedShape:K!AkÄAk2 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32startIndexT%yAkBk/ .€J€”‘€‚A€ã¹êZY‰‚ÿFields from class SoVertexShape:NÄAkfBk2 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyR#Bk¸Bk/ .€F€”‘€‚A€ã¼$ú³‰‚ÿMethods from class SoQuadMesh:e1fBkCk4 8€b€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoQuadMesh()static SoTypegetClassTypeId()N¸BkkCk/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|CkçDkn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)kCk?Ek/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØçDk¤Gk 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH?Ek,Hk@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¤GkzHk/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ,Hk±IkY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4zHkåIk& €€‚A€‚ÿDESCRIPTION:þ±IkKk< F€ý€”‘€‚A€€€€€€€‚ÿThis shape node constructs quadrilaterals out of vertices. The vertices may be specified in the vertexProperty field (from SoVertexShape), or by the current inherited coordinates. For optimal performance, the vertexProperty field is recommended.g.åIk†Lk9 @€]€”‘€‚A€€€€€€‚ÿSoQuadMesh uses the coordinates, in order, starting with the first one. The number of vertices in the columns and rows of the mesh are specified by the verticesPerColumn and verticesPerRow fields. (Note that these numbers are 1 greater than the number of quadrilaterals per row and per column.)~BKkNk< F€…€”‘€‚A€€€€€€€‚ÿFor example, an SoQuadMesh with verticesPerColumn of 3, and verticesPerRow of 4 would use coordinates 1, 2, 3, and 4 for the first row of vertices, coordinates 5, 6, 7, and 8 for the second row, and coordinates 9, 10, 11, and 12 for the third (last) row. The result is a mesh of 3 quadrilaterals across by 2 down.Äš†LkÈNk* "€5€”‘€‚A€‚ÿThe coordinates of the mesh are transformed by the current cumulative transformation. The mesh is drawn with the current light model and drawing style.¥{Nky€k* "€÷€”‘€‚A€‚ÿTreatment of the current material and normal binding is as follows: The PER_PART binding specifies a material or normal for each row of the mesh. The PER_FACE binding specifies a material or normal for each quadrilateral. The _INDEXED bindings are equivalent to their nÈNky€kâ kon-indexed counterparts. The default material binding is OVERALL. The default normal binding is PER_VERTEX.\2ÈNkÕk* "€e€”‘€‚A€‚ÿIf any normals (or materials) are specified, Open Inventor assumes you provide the correct number of them, as indicated by the binding. You will see unexpected results if you specify fewer normals (or materials) than the shape requires. If no normals are specified, they will be generated automatically.šqy€ko‚k) "€â€”‘€‚A€‚ÿNOTE: A quad mesh may not render or pick correctly if any of its polygons are self-intersecting or non-planar./ Õkž‚k& €€‚A€‚ÿFIELDSu;o‚kƒk: D€v€T”A‚S~‚Aãw?2€‰ƒ‚ãw?2‰ƒ‚ÿSoSFInt32verticesPerColumnSoSFInt32verticesPerRowR)ž‚keƒk) "€R€”‘€‚A€‚ÿNumber of vertices per column and row.0 ƒk•ƒk& €€‚A€‚ÿMETHODS<eƒkуk, (€ €T”A‚S~‚A€ƒ‚ÿSoQuadMesh()d;•ƒk5„k) "€v€”‘€‚A€‚ÿCreates a quadrilateral mesh node with default settings.U#уkŠ„k2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*5„kÝ„k) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8Š„k…k& €$€‚A€‚ÿACTION BEHAVIORHÝ„k]…k2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionŒ`…ké…k, (€À€”‘€‚A€€‚ÿDraws a mesh based on the current coordinates, normals, materials, drawing style, and so on.G]…k0†k2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction¿Œé…kï†k3 4€€”‘€‚A€€€€‚ÿPicks on the mesh based on the current coordinates and transformation. Details about the intersection are returned in an SoFaceDetail.N0†k=‡k2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActionå¸ï†k"ˆk- (€q€”‘€‚A€€‚ÿComputes the bounding box that encloses all vertices of the mesh with the current transformation applied to them. Sets the center to the average of the coordinates of all vertices.H=‡kjˆk2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackActionÄ—"ˆk.‰k- (€/€”‘€‚A€€‚ÿIf any triangle callbacks are registered with the action, they will be invoked for each successive triangle forming the quadrilaterals of the mesh.<jˆkj‰k& €,€‚A€‚ÿFILE FORMAT/DEFAULT7 .‰k¡‰k* $€€P„7|‚€‚ÿQuadMesh {~Kj‰kŠk3 6€–€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿvertexPropertyNULLstartIndex0verticesPerColumn1verticesPerRow1}1 ¡‰kPŠk& €€‚€‚ÿSEE ALSOÝrŠk-‹kk ¦€ä€”‘€‚ã[Eà€‰€ãy‚2€‰€ã~«M§€‰€ãø@〉€ã†ÀÍb€‰€ãmý¼€‰‚ÿSoCoordinate3, SoDrawStyle, SoFaceDetail, SoFaceSet, SoTriangleStripSet, SoVertexProperty@PŠkm‹k1?ZÖ“ØAm‹k¤‹klSoRayPickAction7-‹k¤‹k% €$€ˆˆ€‚ÿSoRayPickAction*m‹k΋k# €€€‚ÿNAMEhB¤‹k6Œk& €„€”‘€€‚ÿSoRayPickAction - intersects objects with a ray cast into scene3΋kiŒk# € €€‚ÿINHERITS FROMv56ŒkߌkA R€j€”‘€ãïK€‰€ã#º…ö€‰€€€‚ÿSoAction > SoPickAction > SoRayPickAction2 iŒkk& €€€€ ‚ÿSYNOPSIS{TߌkŒk' €¨€”‘€€‚‚ÿ#include Methods from class SoRayPickAction:ªk¤kn ª€U€T”A‚S~‚A€ƒãñf‘¸‰‚ƒãŠƒõ(‰‚ƒã}ƒõ(‰‚ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㦮´*‰ƒ‚ÿSoRayPickAction(const SbViewportRegion &viewportRegion)voidsetPoint(const SbVec2s &viewportPoint)voidsetNormalizedPoint(const SbVec2f &normPoint)voidsetRadius(float radiusInPixels)voidsetRay(const SbVec3f &start,const SbVec3f &direction,float nearDistance = -1.0,float farDistance = -1.0)voidsetPickAll(SbBool flag)SbBoolisPickAll() constconst SoPickedPointList &getPickedPointList() constj8ŒkÀk2 4€p€T”A‚S~‚Aã¼B‘S€‰ƒ‚ÿSoPickedPoint *getPickedPoint(int inde¤kÀk-‹kx = 0) constT%¤knÀk/ .€J€”‘€‚A€ã#º…ö‰‚ÿMethods from class SoPickAction:­sÀkÁk: D€æ€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ÿvoidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constP!nÀkkÁk/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†ÁkñÂkj ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4kÁk%Ãk& €€‚A€‚ÿDESCRIPTIONR"ñÂkwÄk0 .€E€”‘€‚A€€€‚ÿThis class performs picking by casting a ray into a scene and performing intersection tests with each object. The ray is extended to be a cone or cylinder, depending on the camera type, for intersection with points and lines. Each intersection is returned as an SoPickedPoint instance.>%ÃkµÅk* "€)€”‘€‚A€‚ÿThe picking ray can be specified as either a ray from the camera location through a particular viewport pixel, or as a world-space ray. In the former case, a valid camera must be encountered during traversal of the graph to determine the location of the ray in world space.ÕwÄkÌÇkB R€«€”‘€‚A€€€€€€€€€‚ÿCallers can cause the action to compute all intersections along the ray (sorted closest to farthest) by setting the pickAll flag to TRUE. By default, the action computes only the closest intersection. In either case, the intersections are returned in an SoPickedPointList. Each intersection can be examined by accessing the appropriate SoPickedPoint in the list. The SoPickedPoint class provides methods to get the intersection point, normal, and other info.0 µÅküÇk& €€‚A€‚ÿMETHODSo=ÌÇkkÈk2 4€z€T”A‚S~‚A€ƒãñf‘¸‰‚ÿSoRayPickAction(const SbViewportRegion &viewportRegion)íÃüÇkXÉk* "€‡€”‘€‚A€‚ÿConstructor takes viewport region to use for picking. Even though the picking operation may not involve a window per se, some nodes need this information to determine their size and placement.b0kÈkºÉk2 4€`€T”A‚S~‚A€ƒãŠƒõ(‰‚ÿvoidsetPoint(const SbVec2s &viewportPoint)îÄXÉk¨Êk* "€‰€”‘€‚A€‚ÿSets the viewport-space point through which the ray passes, starting at the camera's viewpoint. Viewport coordinates range from (0,0) at the lower left to (width-1,height-1) at the upper right.h6ºÉkËk2 4€l€T”A‚S~‚A€ƒã}ƒõ(‰‚ÿvoidsetNormalizedPoint(const SbVec2f &normPoint)¤{¨Êk´Ëk) "€ö€”‘€‚A€‚ÿSets the viewport point in normalized coordinates, which range from (0,0) at the lower left to (1,1) at the upper right.S'ËkÌk, (€N€T”A‚S~‚A€ƒ‚ÿvoidsetRadius(float radiusInPixels)Žd´Ëk•Ík* "€É€”‘€‚A€‚ÿSet the radius (in pixels) around the point. This is used when testing the ray against lines and points. By default, the radius is 5 pixels. For perspective cameras, the ray is extended to be a cone when testing against lines and points. For orthographic cameras, the ray is extended to be a cylinder. The radius has no effect for shapes of other types.²wÌkGÎk; F€î€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidsetRay(const SbVec3f &start,const SbVec3f &direction,float nearDistance = -1.0,float farDistance = -1.0)´~•Íkl6 :€ý€”‘€‚A€€€€€‚ÿSets a world-space ray along which to pick. The ray is defined as a world space starting point and direction vector. The direction vector will be normalized automatically. The last two arguments are the parametric distances between which intersections along the ray must occur. The distances are measured as if the direction vector is unit length; e.g., if nearDistance is 2.0, the inGÎkl-‹ktersection must occur past (start + 2*(length of the direction vector)) units along the ray. These distances can be used to achieve near and far plane clipping. A negative distance (such as the default values) means disable clipping to that plane.v<GÎk}l: D€x€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetPickAll(SbBool flag)SbBoolisPickAll() constˆ_ll) "€¾€”‘€‚A€‚ÿSets/returns whether the action will return all objects intersected or just the closest one.k9}lpl2 4€r€T”A‚S~‚A€㦮´*‰ƒ‚ÿconst SoPickedPointList &getPickedPointList() constJ!lºl) "€B€”‘€‚A€‚ÿReturns list of picked points.j8pl$l2 4€p€T”A‚S~‚Aã¼B‘S€‰ƒ‚ÿSoPickedPoint *getPickedPoint(int index = 0) const[2ºll) "€d€”‘€‚A€‚ÿReturns the indexed picked point from the list.1 $l°l& €€‚A€‚ÿSEE ALSOd)ll; F€R€”‘€‚Aã¼B‘S€‰€㦮´*€‰‚ÿSoPickedPoint, SoPickedPointList< °lPl1G×6ØBPlƒlR lSoReadError3lƒl% €€ˆˆ€‚ÿSoReadError*Pl­l# €€€‚ÿNAMEJ$ƒl÷l& €H€”‘€€‚ÿSoReadError - read error handling3­l*l# € €€‚ÿINHERITS FROMR÷l|l5 :€:€”‘€ãôx—€‰€€€‚ÿSoError > SoReadError2 *l®l& €€€€ ‚ÿSYNOPSISrK|l l' €–€”‘€€‚‚ÿ#include Methods from class SoReadError:Þ¤®lþl: B€I€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ÿstatic voidsetHandlerCallback(SoErrorCB *cb,void *data)static SoErrorCB *getHandlerCallback()static void *getHandlerData()static SoTypegetClassTypeId()O lMl/ .€@€”‘€‚A€ãôx—‰‚ÿMethods from class SoError:¾vþl lH `€ì€T”A‚S~‚A€ãXíʉƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿconst SbString &getDebugString() constvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4Ml?l& €€‚A€‚ÿDESCRIPTIONS l¾l, (€¦€”‘€‚A€€‚ÿSoReadError is used for errors reported while reading Open Inventor data files.0 ?lîl& €€‚A€‚ÿMETHODSµƒ¾l£ l2 2€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿstatic voidsetHandlerCallback(SoErrorCB *cb,void *data)static SoErrorCB *getHandlerCallback()static void *getHandlerData()h9îl l/ .€r€”‘€‚A€€€‚ÿSets/returns handler callback for SoReadError class.U#£ l` l2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()b3 l l/ .€f€”‘€‚A€€€‚ÿReturns type identifier for SoReadError class.1 ` ló l& €€‚A€‚ÿSEE ALSO_$ lR l; F€H€”‘€‚Aã5OZ”€‰€ã£ì,€‰‚ÿSoDebugError, SoMemoryError= ó l l1°“ØÙC là lŽ†lSoRenderList4R là l% €€ˆˆ€‚ÿSoRenderList* lí l# €€€‚ÿNAME“mà l€ l& €Ú€”‘€€‚ÿSoRenderList - abstract group node that changes traversal from the scene graph to a list of render objects3í l³ l# € €€‚ÿINHERITS FROMÆa€ ly le š€Â€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãÍ\Y€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoSeparator > SoRenderList2 ³ l« l& €€€€ ‚ÿSYNOPSISyLy l$l- *€˜€”‘€€‚ãÍ\Y‰‚ÿ#include Fields from class SoSeparator:³i« l×lJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingL#$l#l) "€F€”‘€‚A€‚ÿMethods from class SoRenderList:Í`×lü@lm ¨€Á€T”A‚S~‚A€ƒãB-9‰‚ƒãB-9‰‚ƒ‚ãB-9‰ƒ€ €‚ƒãúß~6‰€ ‚€ƒãúß~6‰‚ƒ‚ãúß~6‰ƒ‚ƒ‚ÿvoidaddRenderObjectType(SoType t)voidremoveRenderObjectType(SoType t)intgetNumRenderObjectTypes() cons#lü@lR ltSoTypegetRenderObjectType(int i) const voidaddRenderObjectName(SbName n)voidremoveRenderObjectName(SbName n)intgetNumRenderObjectNames() constSbNamegetRenderObjectName(int i) const voidremoveAllRenderObjectNames()S$#lOAl/ .€H€”‘€‚A€ãÍ\Y‰‚ÿMethods from class SoSeparator:¥oü@lôAl6 <€Þ€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ÿstatic voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()static SoTypegetClassTypeId()O OAlCBl/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:¤ôAlaDlz €I€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ãB-9‰ƒ‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)static SoTypegetClassTypeId()NCBl¯Dl/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|aDl+Fln ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¯DlƒFl/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ+FlèHl 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHƒFlpIl@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NèHl¾Il/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞpIlõJlY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4¾Il)Kl& €€‚A€‚ÿDESCRIPTION{KõJl¤Ll0 .€—€”‘€‚A€€€‚ÿThis abstract node keeps track of paths to the shapes beneath it. Derived classes can traverse or reorganize this list instead of traversing in scene graph order. As the scene graph changes, the SoRenderList node will update the list of paths, calling virtual functions for the derived classes to update their data structures.¥W)KlINlN j€¯€”‘€‚A€€€€€€€€€€€€€‚ÿBy default, the SoRenderList node keeps track of paths to instances of SoShape, SoLOD, and some manipulators. The list of types to look for can be changed with the functions addRenderObjectType() and removeRenderObjectType(). You can also mark a specific node as a Render Object by giving its name through addRenderObjectName().õ¹¤Ll>Ol< F€s€”‘€‚A€€€€€€€‚ÿApplications should not use an instance of class SoRenderList directly; instead, instances of the derived classes, such as SoValueOrdering and SoOctreeOrdering, should be used.0 INlnOl& €€‚A€‚ÿMETHODSY'>OlÇOl2 4€N€T”A‚S~‚A€ƒãB-9‰‚ÿvoidaddRenderObjectType(SoType t)O&nOl"€l) "€L€”‘€‚A€‚ÿAdds a new typeÇOl"€lR l to the search list.\*ÇOl~€l2 4€T€T”A‚S~‚A€ƒãB-9‰‚ÿvoidremoveRenderObjectType(SoType t)P'"€l΀l) "€N€”‘€‚A€‚ÿRemoves a type from the search list.R&~€l l, (€L€T”A‚S~‚A€ƒ‚ÿintgetNumRenderObjectTypes() constW.΀lwl) "€\€”‘€‚A€‚ÿReturns number of types in the search list.^, lÕl2 4€X€T”A‚S~‚AãB-9€‰ƒ‚ÿSoTypegetRenderObjectType(int i) conste0wl:‚l5 :€`€”‘€‚A€€€€ €‚ÿReturns the ith type of the search list. ](Õl—‚l5 :€P€T”A‚S~‚A€ƒãúß~6‰€ ‚ÿvoidaddRenderObjectName(SbName n)O&:‚læ‚l) "€L€”‘€‚A€‚ÿAdds a new name to the search list.\*—‚lBƒl2 4€T€T”A‚S~‚A€ƒãúß~6‰‚ÿvoidremoveRenderObjectName(SbName n)P'æ‚l’ƒl) "€N€”‘€‚A€‚ÿRemoves a name from the search list.R&Bƒläƒl, (€L€T”A‚S~‚A€ƒ‚ÿintgetNumRenderObjectNames() constW.’ƒl;„l) "€\€”‘€‚A€‚ÿReturns number of names in the search list.^,äƒl™„l2 4€X€T”A‚S~‚Aãúß~6€‰ƒ‚ÿSbNamegetRenderObjectName(int i) conste0;„lþ„l5 :€`€”‘€‚A€€€€ €‚ÿReturns the ith name of the search list. T%™„lR…l/ .€J€T”A‚S~‚A€ƒ€ ‚ÿvoidremoveAllRenderObjectNames()R)þ„l¤…l) "€R€”‘€‚A€‚ÿClears all names from the search list.1 R…lÕ…l& €€‚A€‚ÿSEE ALSO¹f¤…lŽ†lS v€Ì€”‘€‚AãDRô€‰€㊆Ř€‰€ãjhšö€‰€ãùÉ€‰‚ÿSoGetPrimitiveCountAction, SoLevelOfSimplification, SoOctreeOrdering, SoValueOrderingCÕ…lцl1l6ØüƒÙDцl ‡lÇlSoReorganizeAction:Ž†l ‡l% €*€ˆˆ€‚ÿSoReorganizeAction*цl5‡l# €€€‚ÿNAMEϨ ‡lˆl' €Q€”‘€€‚ÿSoReorganizeAction - reorganizes the scene graph by grouping shapes with common properties, then groups these shapes in a single shape and runs the simplifier on it.35‡l7ˆl# € €€‚ÿINHERITS FROM}<ˆl´ˆlA R€x€”‘€ãïK€‰€ãŸyU€‰€€€‚ÿSoAction > SoSimplifyAction > SoReorganizeAction2 7ˆlæˆl& €€€€ ‚ÿSYNOPSISZ´ˆlg‰l' €´€”‘€€‚‚ÿ#include Methods from class SoReorganizeAction:¢=æˆl ‹le ˜€{€T”A‚S~‚A€ƒãê–Ìv‰‚ƒ‚ãÍ\Y‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãê–Ìv‰ƒ‚ÿSoReorganizeAction(SoSimplifier *_simplifier)~SoReorganizeAction()SoSeparator *getSimplifiedSceneGraph() constvoid generateNormals(SbBool g)SbBool areNormalGenerated() constvoid generateTriangleStrips(SbBool g)SbBool areTriangleStripGenerated() constSoSimplifier *getSimplifier() constW(g‰l`‹l/ .€P€”‘€‚A€ãŸyU‰‚ÿMethods from class SoSimplifyActionÁ ‹l~l] ˆ€ƒ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ãXíʉƒ‚ÿvoidsetSimplificationLevels(int num,const float levels[]) const float *getSimplificationLevels() const intgetNumSimplificationLevels() constvoidsetRanges(int num,const float newRanges[])const float *getRanges() constintgetNumRanges() constvoidsetSizeFactor(float size)floatgetSizeFactor() constvoidsetInlineLOD(SbBool i)SbBoolisInlineLOD() constvoidsetUrlName(const SbString name)const SbString getUrlName() constû²`‹lyŽlI `€e€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒ‚ÿvoidsetVerbosity(SbBool v)SbBoolisVerbose() constvoidsetMinTriangles(int mt)intgetMinTriangles() constvoidsetRenderCulling(SbBool r)intisRenderCulling() constP!~lÉŽl/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:œ0yŽlqÀll ¦€a€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual~SoAction()virtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()vÉŽlqÀlŽ†lirtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4ÉŽl¥Àl& €€‚A€‚ÿDESCRIPTION\2qÀlÂl* "€e€”‘€‚A€‚ÿThis class reorganize the scene graph by grouping shapes with common properties, than groups these shapes in a single shape and runs the simplifier on it. If a simplifier is not provided, it creates an indexed triangle strip set from this shape. This action is very similar to the ivfix utility program.0 ¥Àl1Âl& €€‚A€‚ÿMETHODS~JÂl¯Âl4 8€”€T”A‚S~‚A€ƒãê–Ìv‰‚ƒ‚ÿSoReorganizeAction(SoSimplifier *_simplifier)~SoReorganizeAction()G1ÂlöÂl) "€<€”‘€‚A€‚ÿConstructor and destructor.e3¯Âl[Ãl2 4€f€T”A‚S~‚AãÍ\Y€‰ƒ‚ÿSoSeparator *getSimplifiedSceneGraph() const `7öÂl»Ãl) "€n€”‘€‚A€‚ÿReturns result of reorganization as new scene graph.…K[Ãl@Äl: D€–€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoid generateNormals(SbBool g) SbBool areNormalGenerated() const pG»Ãl°Äl) "€Ž€”‘€‚A€‚ÿSets/gets whether normals should be generated during reorganization.“Y@ÄlCÅl: D€²€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoid generateTriangleStrips(SbBool g) SbBool areTriangleStripGenerated() const ‹b°ÄlÎÅl) "€Ä€”‘€‚A€‚ÿSets/gets whether triangle strips should be generated; if false, IndexedFaceSets are generated.\*CÅl*Æl2 4€T€T”A‚S~‚Aãê–Ìv€‰ƒ‚ÿSoSimplifier *getSimplifier() const [2ÎÅl…Æl) "€d€”‘€‚A€‚ÿReturns the simplifier being used, may be NULL.1 *Æl¶Æl& €€‚A€‚ÿSEE ALSOg,…ÆlÇl; F€X€”‘€‚AãïK€‰€ã×ïþö€‰‚ÿSoAction, SoIndexedTriangleStripSetA¶Æl^Çl1Ù:ÚE^Çl–ÇlY mSoResetTransform8Çl–Çl% €&€ˆˆ€‚ÿSoResetTransform*^ÇlÀÇl# €€€‚ÿNAMEsM–Çl3Èl& €š€”‘€€‚ÿSoResetTransform - node that resets the current transformation to identity3ÀÇlfÈl# € €€‚ÿINHERITS FROMµ\3ÈlÉlY ‚€¸€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoResetTransform2 fÈlMÉl& €€€€ ‚ÿSYNOPSISU/Él¢Él& €^€”‘€€‚ÿ#include Û›MÉl}Êl@ N€7€T”A‚S~‚A€ƒ€ƒ€€ƒ€‚ÿenum ResetType{SoResetTransform::TRANSFORMReset the current transformation to identitySoResetTransform::BBOXReset the bounding box to empty}O&¢ÉlÌÊl) "€L€”‘€‚A€‚ÿFields from class SoResetTransform:N}ÊlËl2 4€8€T”A‚S~‚Aã:YN€‰ƒ‚ÿSoSFBitMaskwhatToResetP'ÌÊljËl) "€N€”‘€‚A€‚ÿMethods from class SoResetTransform:k7ËlÕËl4 8€n€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoResetTransform()static SoTypegetClassTypeId()NjËl#Ìl/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÕËlŸÍln ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)#Ìl÷Íl/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØŸÍlhm 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName ÷ÍlhmÇl&fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH÷Ílðm@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nhm>m/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞðmumY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4>m©m& €€‚A€‚ÿDESCRIPTION~*um'mT v€U€”‘€‚A€€€€€€€€€€€€€€€‚ÿThis node resets the current transformation to identity. It can be used to apply an absolute world space transformation afterwards, such as translating to a specific point from within a hierarchy. An SoResetTransform node should probably be used under an SoSeparator or SoTransformSeparator so it won't change transformations for the rest of the scene graph. An SoResetTransform node can also be used to reset the current bounding box to empty during traversal of an SoGetBoundingBoxAction, if the whatToReset field has the BBOX bit set./ ©mVm& €€‚A€‚ÿFIELDSN'm¤m2 4€8€T”A‚S~‚Aã:YN€‰ƒ‚ÿSoSFBitMaskwhatToResetf=Vm m) "€z€”‘€‚A€‚ÿSpecifies which items to reset when the node is traversed.0 ¤m:m& €€‚A€‚ÿMETHODSB m|m, (€,€T”A‚S~‚A€ƒ‚ÿSoResetTransform()f=:mâm) "€z€”‘€‚A€‚ÿCreates a reset transformation node with default settings.U#|m7m2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*âmŠm) "€T€”‘€‚A€‚ÿReturns type identifier for this class.87mÂm& €$€‚A€‚ÿACTION BEHAVIOR{=Šm=m> L€z€”‘€‚Aã©öø(€‰ã³DfL‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoRayPickActionoCÂm¬m, (€†€”‘€‚A€€‚ÿIf specified, resets current transformation matrix to identity.N=múm2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActionq¬m— m, (€â€”‘€‚A€€‚ÿIf specified, resets current transformation matrix to identity and current computed bounding box to be empty.Iúmà m2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixActionH— m( m, (€8€”‘€‚A€€‚ÿReturns identity matrix.<à md m& €,€‚A€‚ÿFILE FORMAT/DEFAULT=( m¡ m* $€&€P„7|‚€‚ÿResetTransform {Hd mé m- *€6€P„|‚€ƒ‚‚‚ÿwhatToResetTRANSFORM}1 ¡ m m& €€‚€‚ÿSEE ALSO?é mY m/ .€ €”‘€‚ã¼ýÓ€‰‚ÿSoTransformK m¤ m1£3üƒÙ¬‡ÛF¤ mæ miÎmSoRotateCylindricalDraggerBY mæ m% €:€ˆˆ€‚ÿSoRotateCylindricalDragger*¤ m m# €€€‚ÿNAMEŽhæ mž m& €Ð€”‘€€‚ÿSoRotateCylindricalDragger - object you rotate along a cylindrical surface by dragging with the mouse3 mÑ m# € €€‚ÿINHERITS FROMø†ž mÉ mr ²€ €”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoRotateCylindricalDragger2 Ñ mû m& €€€€ ‚ÿSYNOPSIS‘jÉ mŒm' €Ô€”‘€€‚‚ÿ#include Fields from class SoRotateCylindricalDragger:Lû mØm2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationP!Œm(m/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:HØmpm2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW((mÇm/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³ipm†@mJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚Çm†@mY mãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO ÇmÕ@m/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%†@m,Am2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListb3Õ@mŽAm/ .€f€”‘€‚A€ã%Ô§‰‚ÿMethods from class SoRotateCylindricalDragger:.á,Am¼BmM h€Ã€T”A‚S~‚A€ƒ‚ƒã?rW‰‚ã?rW‰ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoRotateCylindricalDragger()voidsetProjector(SbCylinderProjector *p)const SbCylinderProjector *getProjector() conststatic const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"ŽAm Cm/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:K¼BmXEmC T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)㨠Cm;Fm; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)XEm“Fm/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”U;Fm'Gm? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"“FmxGm/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°'Gm¸Im î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}xGmwJmB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)N¸ImÅJm/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|wJmALmn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÅJm™Lm/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®ALmÌNm… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH™LmTOm@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÌNm¢Om/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞTOmå€mY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoid¢Omå€mY mref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!¢Om5m/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)å€mŠm, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+5mám, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4Šm‚m& €€‚A€‚ÿDESCRIPTIONŽaám£ƒm- (€Ã€”‘€‚A€€‚ÿSoRotateCylindricalDragger is a simple dragger that rotates about the y axis of its local space. The feel of the rotation is as if you were spinning a cylinder about its axis of rotation. The local space is determined by its location in the scene graph. Transformation nodes placed before it will affect both the dragger and the direction of motion.7‚mÚ„m0 .€€”‘€‚A€€€‚ÿThis node has a rotation field which always reflects its orientation in local space. If you set the field, the dragger will rotate accordingly. You can also connect fields of other nodes or engines from this one to make them follow the dragger's orientation.£b£ƒm}…mA R€Ä€”‘€‚A€€€€€€€€€‚ÿThis dragger contains four parts, rotator, rotatorActive, feedback, and feedbackActive.ÖÚ„mƒ†m0 .€­€”‘€‚A€€€‚ÿEach of these is set by default from a resource described in the Dragger Resources section of the online reference page for this class. You can change the parts in any instance of this dragger using setPart().W!}…mÚ‡m6 :€C€”‘€‚A€€€€€‚ÿYou can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/rotateCylindricalDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ ƒ†m ˆm& €€‚A€‚ÿFIELDSLÚ‡mUˆm2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationG ˆmœˆm) "€<€”‘€‚A€‚ÿOrientation of the dragger.0 Uˆm̈m& €€‚A€‚ÿMETHODSL œˆm‰m, (€@€T”A‚S~‚A€ƒ‚ÿSoRotateCylindricalDragger()8̈mP‰m) "€€”‘€‚A€‚ÿConstructor.›a‰më‰m: D€Â€T”A‚S~‚A€ƒã?rW‰‚ã?rW‰ƒ‚ÿvoidsetProjector(SbCylinderProjector *p)const SbCylinderProjector *getProjector() constÑP‰mòŠm6 :€£€”‘€‚A€€€€€‚ÿSet and get a different cylinder projector. See the SbCylinderProjector reference pages to find out how each kind affects the feel of your dragger's motion. The default uses an SbCylinderPlaneProjector.‹[ë‰m}Œm0 .€·€”‘€‚A€€€‚ÿPassing in NULL will cause this default type of projector to be used. Any projector you pass in will be deleted by this dragger when this dragger is deleted. Note that the axis and radius of the cylinder are determined by the dragger, based on the y-axis in local space and how far the initial mouse click occured from the center of rotation.uCòŠmòŒm2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/}ŒmPm/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#òŒm¥m2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Pmøm) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6¥m.Žm& € €‚A€‚ÿCATALOG PARTS;ømiŽm- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜.Žmm~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/iŽmÀm#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2mŽÀm#ð€dÜI, “ ’ €€ÿ€€ÀmŽÀmY m€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes·'ÀmEÁm#ð€NÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€2€ÿ€4€€€‚ÿ€@€€€‚ÿÿÿrotatorSeparator--yes½-ŽÀmÂm#ð€ZÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€>€ÿ€@€€€‚ÿ€L€€€‚ÿÿÿrotatorActiveSeparator--yes¸(EÁmºÂm#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿfeedbackSeparator--yes¾.ÂmxÃm#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿfeedbackActiveSeparator--yes,ºÂm¤Ãm' € €€‚€‚ÿa6xÃmÄm+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’1¤Ãm—Äma#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8Äm0Åma#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=—ÄmmÅm' €,€€‚€‚ÿDRAGGER RESOURCES°0ÅmƒÇmf š€a€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:rotateCylindricalRotatorPart:rotatorAppearance:white cylinder (with vertical axis) made of linesDescription:picking this initiates rotationResource:rotateCylindricalRotatorActivePart:rotatorActiveAppearance:yellow version of rotatorDescription:displayed while in motion instead of the rotatorResource:rotateCylindricalFeedbackPart:feedbackAppearance:thin purple line along local y-axis4òmÅm·ÈmB R€å€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ÿDescription:shows center of rotation when not movingResource:rotateCylindricalFeedbackActivePart:feedbackActiveAppearance:thin, slightly brighter purple line along local y-axisDescription:shows center of rotation when moving<ƒÇmóÈm& €,€‚Í€‚ÿFILE FORMAT/DEFAULTG·Èm:Ém* $€:€P„7|‚€‚ÿRotateCylindricalDragger {“RóÈmÍÊmA P€¥€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSErotation0 0 1 0callbackListNULLrotatorrotatorActivefeedbackfeedbackActive},:ÉmùÊm) "€€”‘€‚€‚ÿ1 ÍÊm*Ëm& €€‚€‚ÿSEE ALSO?ùÊmiÎm, &‚'€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2DraggerD*Ëm­Îm1—/:ÚnÝG­ÎmèÎmynSoRotateDiscDragger;iÎmèÎm% €,€ˆˆ€‚ÿSoRotateDiscDragger*­ÎmÏm# €€€‚ÿNAME{UèÎmÏm& €ª€”‘€€‚ÿSoRotateDiscDragger - object you can rotate like a knob by dragging with the mouse3ÏmÀÏm# € €€‚ÿINHERITS FROMðÏm¼nq ²€þ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€ÀÏm¼niÎm‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoRotateDiscDragger2 ÀÏmîn& €€€€ ‚ÿSYNOPSISƒ\¼nqn' €¸€”‘€€‚‚ÿ#include Fields from class SoRotateDiscDragger:Lîn½n2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationP!qn n/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:H½nUn2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW( n¬n/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³iUn_nJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO ¬n®n/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%_nn2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListS*®nXn) "€T€”‘€‚A€‚ÿMethods from class SoRotateDiscDragger:·{nn< H€ö€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoRotateDiscDragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"Xn`n/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:Kn«nC T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨`nŽn; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)«næn/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”UŽnz n? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"ænË n/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°z n n î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}Ë nÊ nB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)N n n/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Ê n”nn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X) nìn/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®”n+An… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const ìn+AniÎmSoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHìn³An@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N+AnBn/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ³An8CnY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!BnˆCn/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)8CnÝCn, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+ˆCn4Dn, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4ÝCnhDn& €€‚A€‚ÿDESCRIPTION s4DnFn- (€ç€”‘€‚A€€‚ÿSoRotateDiscDragger is a simple dragger that rotates about the z axis of its local space. The feel of the rotation is as if you were spinning a record on a turntable or rotating the volume knob of a radio. The local space is determined by its location in the scene graph. Transformation nodes placed before it will affect both the dragger and the direction of motion.4hDn€ÿ€@€€€‚ÿ€L€€€‚ÿÿÿrotatorActiveSeparator--yes¸(l€nán#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿfeedbackSeparator--yes¾.)nŸ‚n#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿfeedbackActiveSeparator--yes,ánË‚n' € €€‚€‚ÿa6Ÿ‚n,ƒn+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’1Ë‚n¾ƒna#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8,ƒnW„na#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=¾ƒn”„n' €,€€‚€‚ÿDRAGGER RESOURCES"¼W„n¶†nf š€y€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:rotateDiscRotatorPart:rotatorAppearance:white cylinder (with axis along z-direction) made of linesDescription:picking this initiates rotationResource:rotateDiscRotatorActivePart:rotatorActiveAppearance:yellow version of rotator, with added yellow cubeDescription:displayed while in motion instead of the rotatorResource:rotateDiscFeedbackPart:feedbackAppearance:thin purple line along local z-axis-딄nã‡nB R€×€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ÿDescription:shows center of rotation when not movingResource:rotateDiscFeedbackActivePart:feedbackActiveAppearance:thin, slightly brighter purple line along local z-axisDescription:shows center of rotation when moving<¶†nˆn& €,€‚Í€‚ÿFILE FORMAT/DEFAULT@ã‡n_ˆn* $€,€P„7|‚€‚ÿRotateDiscDragger {w6ˆnÖ‰nA P€m€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSErotation0 0 1 0callbackListNULLrotatorrotatorActivefeedbackfeedbackActive},_ˆnŠn) "€€”‘€‚€‚ÿ1 Ö‰n3Šn& €€‚€‚ÿSEE ALSOFŠnyn, &‚5€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2DraggerI3ŠnÂn13¬‡ÛßHÂnŽn¡€oSoRotateSphericalDragger@ynŽn% €6€ˆˆ€‚ÿSoRotateSphericalDragger*Ân,Žn# €€€‚ÿNAMEŽhŽnºŽn& €Ð€”‘€€‚ÿSoRotateSphericalDragger - object you can rotate about a spherical surface by dragging with the mouse3,ŽníŽn# € €€‚ÿINHERITS FROMö„ºŽn Ànr ²€ €”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoRotateSphericalDraggeríŽn Ànyn2 íŽn>Àn& €€€€ ‚ÿSYNOPSISf ÀnËÀn' €Ì€”‘€€‚‚ÿ#include Fields from class SoRotateSphericalDragger:L>ÀnÁn2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationP!ËÀngÁn/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:HÁn¯Án2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(gÁnÂn/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³i¯Án¹ÂnJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO ÂnÃn/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%¹Ân_Ãn2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListX/Ãn·Ãn) "€^€”‘€‚A€‚ÿMethods from class SoRotateSphericalDragger:(Û_ÃnßÄnM h€·€T”A‚S~‚A€ƒ‚ƒãøaK´‰‚ãøaK´‰ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoRotateSphericalDragger()voidsetProjector(SbSphereProjector *p)const SbSphereProjector *getProjector() conststatic const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"·Ãn0Ån/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:KßÄn{ÇnC T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨0Ån^Èn; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X){Çn¶Èn/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”U^ÈnJÉn? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"¶Èn›Én/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°JÉnÛËn î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}›ÉnšÌnB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)NÛËnèÌn/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|šÌndÎnn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)èÌn¼În/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®dÎnûo… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections¼Înûoyn = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¼Înƒo@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NûoÑo/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞƒooY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!ÑoXo/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)o­o, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+Xoo, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4­o8o& €€‚A€‚ÿDESCRIPTION‘doÉo- (€É€”‘€‚A€€‚ÿSoRotateSphericalDragger is a simple dragger that rotates freely in all directions. The feel of the rotation is as if you were rolling a ball. The center of rotation is the origin of the local space, determined by the dragger's location in the scene graph. Transformation nodes placed before it will affect both the dragger and the direction of motion.78oo0 .€€”‘€‚A€€€‚ÿThis node has a rotation field which always reflects its orientation in local space. If you set the field, the dragger will rotate accordingly. You can also connect fields of other nodes or engines from this one to make them follow the dragger's orientation.£bÉo£oA R€Ä€”‘€‚A€€€€€€€€€‚ÿThis dragger contains four parts, rotator, rotatorActive, feedback, and feedbackActive.Öo©o0 .€­€”‘€‚A€€€‚ÿEach of these is set by default from a resource described in the Dragger Resources section of the online reference page for this class. You can change the parts in any instance of this dragger using setPart().U£oþ o6 :€?€”‘€‚A€€€€€‚ÿYou can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/rotateSphericalDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ ©o- o& €€‚A€‚ÿFIELDSLþ oy o2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationG- oÀ o) "€<€”‘€‚A€‚ÿOrientation of the dragger.0 y oð o& €€‚A€‚ÿMETHODSJÀ o: o, (€<€T”A‚S~‚A€ƒ‚ÿSoRotateSphericalDragger()8ð or o) "€€”‘€‚A€‚ÿConstructor.—]: o o: D€º€T”A‚S~‚A€ƒãøaK´‰‚ãøaK´‰ƒ‚ÿvoidsetProjector(SbSphereProjector *p)const SbSphereProjector *getProjector() constËr o o6 :€—€”‘€‚A€€€€€‚ÿSet and get a different sphere projector. See the SbSphereProjector reference pages to find out how each kind affects the feel of your dragger's motion. The default uses an SbSpherePlaneProjector.U o‰o* "€«€”‘€‚A€‚ÿPassing in NULL will cause the default type of projector to be used. Any projector you pass in will be deleted by this dragger when this dragger is deleted. Note that the center and radius of the sphere are determined by the dragger, based on the origin of the local space and the distance between the initial mouse click and that origin.uC oþo2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/‰o\o/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#þo±o2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*\o@o) "€T€”‘€‚A€‚ÿReturns type identifier for this clas±o@oyns.6±oF@o& € €‚A€‚ÿCATALOG PARTS;@o@o- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜F@oAo~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/@oØAo#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2AošBo#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes·'ØAoQCo#ð€NÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€2€ÿ€4€€€‚ÿ€@€€€‚ÿÿÿrotatorSeparator--yes½-šBoDo#ð€ZÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€>€ÿ€@€€€‚ÿ€L€€€‚ÿÿÿrotatorActiveSeparator--yes¸(QCoÆDo#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿfeedbackSeparator--yes¾.Do„Eo#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿfeedbackActiveSeparator--yes,ÆDo°Eo' € €€‚€‚ÿa6„EoFo+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’1°Eo£Foa#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8ForotatorActivefeedbackfeedbackActive},lKo#Mo) "€€”‘€‚€‚ÿ1 ÷LoTMo& €€‚€‚ÿSEE ALSOA#Mo¡€o, &‚+€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, TMo¡€oynSoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2Dragger; TMoÜ€o1«nÝh€ßIÜ€oo‹ÁoSoRotation2 ¡€oo% €€ˆˆ€‚ÿSoRotation*Ü€o8o# €€€‚ÿNAMEmGo¥o& €Ž€”‘€€‚ÿSoRotation - node representing a 3D rotation about an arbitrary axis38oØo# € €€‚ÿINHERITS FROM¯V¥o‡‚oY ‚€¬€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoRotation2 Øo¹‚o& €€€€ ‚ÿSYNOPSISnG‡‚o'ƒo' €Ž€”‘€€‚‚ÿ#include Fields from class SoRotation:L¹‚osƒo2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationJ!'ƒo½ƒo) "€B€”‘€‚A€‚ÿMethods from class SoRotation:e1sƒo"„o4 8€b€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoRotation()static SoTypegetClassTypeId()N½ƒop„o/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|"„oì…on ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)p„oD†o/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØì…o©ˆo 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHD†o1‰o@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N©ˆo‰o/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ1‰o¶ŠoY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4‰oêŠo& €€‚A€‚ÿDESCRIPTION2¶ŠoŒo0 .€€”‘€‚A€€€‚ÿThis node defines a 3D rotation about an arbitrary axis through the origin. The rotation is accumulated into the current transformation, which is applied to subsequent shapes. The rotation field provides a variety of methods for specifying the rotation./ êŠoKŒo& €€‚A€‚ÿFIELDSLŒo—Œo2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationCKŒoÚŒo) "€4€”‘€‚A€‚ÿRotation specification.0 —Œo o& €€‚A€‚ÿMETHODS<ÚŒoFo, (€ €T”A‚S~‚A€ƒ‚ÿSoRotation()Z1 o o) "€b€”‘€‚A€‚ÿCreates a rotation node with default settings.U#Foõo2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* oHŽo) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8õo€Žo& €$€‚A€‚ÿACTION BEHAVIOR›WHŽooD X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActiontH€Žoo, (€€”‘€‚A€€‚ÿAccumulates rotation transformation into the current transformation.IoØo2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixActiona5oEÀo, (€j€”‘€‚A€€ØoEÀo¡€o‚ÿReturns the matrix corresponding to the rotation.<ØoÀo& €,€‚A€‚ÿFILE FORMAT/DEFAULT7 EÀo¸Ào* $€€P„7|‚€‚ÿRotation {DÀoüÀo- *€.€P„|‚€ƒ‚‚‚ÿrotation0 0 1 0}1 ¸Ào-Áo& €€‚€‚ÿSEE ALSO^#üÀo‹Áo; F€F€”‘€‚ãƒ$s€‰€ã¼ýÓ€‰‚ÿSoRotationXYZ, SoTransform> -ÁoÉÁo1ßßàJÉÁoþÁo¶pSoRotationXYZ5‹ÁoþÁo% € €ˆˆ€‚ÿSoRotationXYZ*ÉÁo(Âo# €€€‚ÿNAMEtNþÁoœÂo& €œ€”‘€€‚ÿSoRotationXYZ - node representing a 3D rotation about the x-, y-, or z-axis3(ÂoÏÂo# € €€‚ÿINHERITS FROM²YœÂoÃoY ‚€²€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoRotationXYZ2 ÏÂo³Ão& €€€€ ‚ÿSYNOPSISR,ÃoÄo& €X€”‘€€‚ÿ#include µm³ÃoºÄoH `€Ú€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum Axis{SoRotationXYZ::XThe X-axisSoRotationXYZ::YThe Y-axisSoRotationXYZ::ZThe Z-axis}L#ÄoÅo) "€F€”‘€‚A€‚ÿFields from class SoRotationXYZ:^$ºÄodÅo: D€H€T”A‚S~‚AãØtW选ƒ‚ã0â1‰ƒ‚ÿSoSFEnumaxisSoSFFloatangleM$Åo±Åo) "€H€”‘€‚A€‚ÿMethods from class SoRotationXYZ:‘UdÅoBÆo< H€ª€T”A‚S~‚A€ƒ‚ã ‚û‰ƒ‚ãB-9‰ƒ‚ÿSoRotationXYZ()SbRotationgetRotation() conststatic SoTypegetClassTypeId()N±ÅoÆo/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|BÆo Èon ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÆodÈo/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ ÈoÉÊo 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHdÈoQËo@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÉÊoŸËo/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞQËoÖÌoY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ŸËo Ío& €€‚A€‚ÿDESCRIPTION×­ÖÌoáÍo* "€[€”‘€‚A€‚ÿThis node defines a 3D rotation about one of the three principal axes. The rotation is accumulated into the current transformation, which is applied to subsequent shapes./ ÍoÎo& €€‚A€‚ÿFIELDSDáÍoTÎo2 4€$€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumaxis:ÎoŽÎo) "€"€”‘€‚A€‚ÿRotation axis.FTÎoÔÎo2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatanglec:ŽÎo7Ïo) "€t€”‘€‚A€‚ÿRotation angle (in radians), using the right-hand rule.0 ÔÎogÏo& €€‚A€‚ÿMETHODS?7Ïo¦Ïo, (€&€T”A‚S~‚A€ƒ‚ÿSoRotationXYZ()Z1gÏo p) "€b€”‘€‚A€‚ÿCreates a rotation node with default settings.¦Ïo p‹ÁoU#¦Ïoap2 4€F€T”A‚S~‚Aã ‚û€‰ƒ‚ÿSbRotationgetRotation() constwB pØp5 :€„€”‘€‚A€ã ‚û€‰€‚ÿReturns an SbRotation equivalent to the specified rotation.U#ap-p2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Øp€p) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8-p¸p& €$€‚A€‚ÿACTION BEHAVIOR›W€pSpD X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActiontH¸pÇp, (€€”‘€‚A€€‚ÿAccumulates rotation transformation into the current transformation.ISpp2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixActiona5Çpqp, (€j€”‘€‚A€€‚ÿReturns the matrix corresponding to the rotation.<p­p& €,€‚A€‚ÿFILE FORMAT/DEFAULT:qpçp* $€ €P„7|‚€‚ÿRotationXYZ {C­p*p/ .€(€P„|‚€ƒ‚ƒ‚‚‚ÿaxisXangle0}1 çp[p& €€‚€‚ÿSEE ALSO[ *p¶p; F€@€”‘€‚ãúD×΀‰€ã¼ýÓ€‰‚ÿSoRotation, SoTransform8[pîp1Ãh€ß¿îKîppäIpSoRotor/ ¶pp% €€ˆˆ€‚ÿSoRotor*îpGp# €€€‚ÿNAMEI#pp& €F€”‘€€‚ÿSoRotor - animated rotation node3GpÃp# € €€‚ÿINHERITS FROMÉdpŒpe š€È€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€ãúD×΀‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoRotation > SoRotor2 Ãp¾p& €€€€ ‚ÿSYNOPSIShAŒp&p' €‚€”‘€€‚‚ÿ#include Fields from class SoRotor:\"¾p‚p: D€D€T”A‚S~‚Aã0â1€‰ƒ‚ãU×S鉃‚ÿSoSFFloatspeedSoSFBoolonQ"&pÓp/ .€D€”‘€‚A€ãúD×Ή‚ÿFields from class SoRotation:L‚pp2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationGÓpfp) "€<€”‘€‚A€‚ÿMethods from class SoRotor:b.pÈp4 8€\€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoRotor()static SoTypegetClassTypeId()Nfp p/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Èp’ pn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X) pê p/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ’ pO p 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHê p× p@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NO p%p/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ× p\pY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4%pp& €€‚A€‚ÿDESCRIPTIONw5\pApB R€k€”‘€‚A€€€€€€€€€‚ÿThe SoRotor class is derived from SoRotatipAp¶pon, so it applies a rotation to the current transformation. Using engines connected to the realTime global field, the rotation value is animated over time, achieving a spinning effect. The period of the rotation can be adjusted by changing the speed field.Yp¢Bp6 :€³€”‘€‚A€€€€€‚ÿThe current rotation at any time is available in the rotation field, inherited from SoRotation. This field can also be set to specify the axis of rotation. Note that unless a non-zero rotation is specified for the rotation, the node will not know which axis to use. For example, to set a rotor to spin about the y-axis, use the following:O'ApñBp( €N€Ù€‚A€‚ÿrotor->rotation.setValue(axis, 0.1);+¢BpCp( €€Ù€‚A€‚ÿ‹\ñBp§Cp/ .€¸€”‘€‚A€€€‚ÿwhere axis is a vector containing (0,1,0). Any non-zero angle can be used in this code./ CpÖCp& €€‚A€‚ÿFIELDSF§CpDp2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatspeedf=ÖCp‚Dp) "€z€”‘€‚A€‚ÿDefines the speed of the rotor, in revolutions per second.BDpÄDp2 4€ €T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolong>‚Dp+Ep) "€|€”‘€‚A€‚ÿAllows applications to enable or disable the motion easily.0 ÄDp[Ep& €€‚A€‚ÿMETHODS9 +Ep”Ep, (€€T”A‚S~‚A€ƒ‚ÿSoRotor()W.[EpëEp) "€\€”‘€‚A€‚ÿCreates a rotor node with default settings.U#”Ep@Fp2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ëEp“Fp) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8@FpËFp& €$€‚A€‚ÿACTION BEHAVIOR›W“FpfGpD X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction{OËFpáGp, (€ž€”‘€‚A€€‚ÿConcatenates current rotation value with the current transformation matrix.IfGp*Hp2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixActionh<áGp’Hp, (€x€”‘€‚A€€‚ÿReturns transformation matrix specified by the rotation.<*HpÎHp& €,€‚A€‚ÿFILE FORMAT/DEFAULT4 ’HpIp* $€€P„7|‚€‚ÿRotor {X'ÎHpZIp1 2€N€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿrotation0 0 1 0speed1onTRUE}1 Ip‹Ip& €€‚€‚ÿSEE ALSOYZIpäIp; F€<€”‘€‚ãŠäÀO€‰€ãñâ€F€‰‚ÿSoPendulum, SoShuttle< ‹Ip Jp1„[‚û[áL JpSJpŸ‹pSoSFBitMask3äIpSJp% €€ˆˆ€‚ÿSoSFBitMask* Jp}Jp# €€€‚ÿNAMEgASJpäJp& €‚€”‘€€‚ÿSoSFBitMask - single-value field containing a set of bit flags3}JpKp# € €€‚ÿINHERITS FROMˆ;äJpŸKpM j€v€”‘€ãþ —€‰€ã— \选€ãØtW选€€€‚ÿSoField > SoSField > SoSFEnum > SoSFBitMask2 KpÑKp& €€€€ ‚ÿSYNOPSISrKŸKpCLp' €–€”‘€€‚‚ÿ#include Methods from class SoSFBitMask:7ìÑKpzMpK d€Ù€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã:YN‰‚ƒã:YN‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constintgetValue() constvoidsetValue(int newValue)intoperator =(int newValue)intoperator ==(const SoSFBitMask &f) constintoperator !=(const SoSFBitMask &f) constO CLpÉMp/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!zMp €p‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() constÉMp €päIp¿PÉMpËpo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4 €pÿp& €€‚A€‚ÿDESCRIPTIONN$ËpMƒp* "€I€”‘€‚A€‚ÿA single-value field that contains a mask of bit flags, stored as an integer. Nodes that use this field class define mnemonic names for the bit flags. These names should be used when setting or testing the values of the field, even though the values are treated as integers in the methods.ã¹ÿp0„p* "€s€”‘€‚A€‚ÿThe bit-wise "&" and "|" operators should be used when testing and setting flags in a mask. For example, to turn on the sides of a 3D text node and turn off the back you would write:c;Mƒp“„p( €v€Ù€‚A€‚ÿtext3->parts = text3->parts.getValue() | SoText3::SIDES;c;0„pö„p( €v€Ù€‚A€‚ÿtext3->parts = text3->parts.getValue() & ~SoText3::BACK;+“„p!…p( €€Ù€‚A€‚ÿ‹bö„p¬…p) "€Ä€”‘€‚A€‚ÿSoSFBitMasks are written to file as one or more mnemonic enumerated type names, in this format:B!…pî…p( €4€Ù€‚A€‚ÿ( flag1 | flag2 | ... )+¬…p†p( €€Ù€‚A€‚ÿæ¼î…pÿ†p* "€y€”‘€‚A€‚ÿIf only one flag is used in a mask, the parentheses are optional. These names differ among uses of this field in various node or engine classes. See their reference pages for the names.Œc†p‹‡p) "€Æ€”‘€‚A€‚ÿThe field values may also be represented as integers, but this is not guaranteed to be portable.0 ÿ†p»‡p& €€‚A€‚ÿMETHODSvB‹‡p1ˆp4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH»‡p¢ˆp) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.C1ˆpåˆp, (€.€T”A‚S~‚A€ƒ‚ÿintgetValue() constG¢ˆp,‰p) "€<€”‘€‚A€‚ÿReturns this field's value.i;åˆp•‰p. ,€v€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetValue(int newValue)intoperator =(int newValue)P!,‰på‰p/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.˜^•‰p}Šp: D€¼€T”A‚S~‚A€ƒã:YN‰‚ƒã:YN‰‚ÿintoperator ==(const SoSFBitMask &f) constintoperator !=(const SoSFBitMask &f) constPå‰püŠp/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 }Šp-‹p& €€‚A€‚ÿSEE ALSOr+üŠpŸ‹pG ^€V€”‘€‚Aãþ —€‰€ã— \选€ãôÃ1€‰‚ÿSoField, SoSField, SoMFBitMask9-‹pØ‹p1#”„àmÑMØ‹pŒp·ÈpSoSFBool0 Ÿ‹pŒp% €€ˆˆ€‚ÿSoSFBool*Ø‹p2Œp# €€€‚ÿNAME[5ŒpŒp& €j€”‘€€‚ÿSoSFBool - field containing a single Boolean value32ŒpÀŒp# € €€‚ÿINHERITS FROMj)Œp*pA R€R€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFBool2 ÀŒp\p& €€€€ ‚ÿSYNOPSISlE*pÈp' €Š€”‘€€‚‚ÿ#include Methods from class SoSFBool:]ú\p%pc ”€õ€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒãU×S鉂ƒãU×S鉂ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constSbBoolgetValue() constSbBooloperator =(SbBool newValue)voidsetValue(SbBool newValue)intoperator ==(const SoSFBool &f) constintoperator !=(const SoSFBool &f) constO Èptp/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!%p¡Áp‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶ptp¡ÁpŸ‹p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿Ptp`Ãpo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4¡Áp”Ãp& €€‚A€‚ÿDESCRIPTIONf=`ÃpúÃp) "€z€”‘€‚A€‚ÿA field containing a single Boolean (true or false) value.†Z”Ãp€Äp, (€´€”‘€‚A€€‚ÿSoSFBools may be written to file as "0" (representing FALSE), "1", "TRUE", or "FALSE".0 úÃp°Äp& €€‚A€‚ÿMETHODSvB€Äp&Åp4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH°Äp—Åp) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.N&ÅpåÅp2 4€8€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolgetValue() constG—Åp,Æp) "€<€”‘€‚A€‚ÿReturns this field's value.ŠJåÅp¶Æp@ P€”€T”A‚S~‚A㑶p6€‰ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿSbBooloperator =(SbBool newValue)voidsetValue(SbBool newValue)P!,ÆpÇp/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.’X¶Æp˜Çp: D€°€T”A‚S~‚A€ƒãU×S鉂ƒãU×S鉂ÿintoperator ==(const SoSFBool &f) constintoperator !=(const SoSFBool &f) constPÇpÈp/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 ˜ÇpHÈp& €€‚A€‚ÿSEE ALSOo(Èp·ÈpG ^€P€”‘€‚Aãþ —€‰€ã— \选€ãóÐÀ´€‰‚ÿSoField, SoSField, SoMFBool: HÈpñÈp1NmÑsâNñÈp"Ép qSoSFColor1 ·Èp"Ép% €€ˆˆ€‚ÿSoSFColor*ñÈpLÉp# €€€‚ÿNAMER,"ÉpžÉp& €X€”‘€€‚ÿSoSFColor - field containing an RGB color3LÉpÑÉp# € €€‚ÿINHERITS FROMk*žÉp<ÊpA R€T€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFColor2 ÑÉpnÊp& €€€€ ‚ÿSYNOPSISF <Êp´Êp& €@€”‘€€‚ÿMethods from class SoSFColor:9ÊnÊpíÌpo ¬€•€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ƒ‚ãÀ"%‰ƒ‚ãÀ"%‰ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãð@I1‰‚ÿvoidsetValue(const SbVec3f &vec)voidsetValue(float red,float green,float blue)voidsetValue(const float rgb[3])voidsetHSVValue(float hue,float saturation,float value)voidsetHSVValue(const float hsv[3])static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbColor &getValue() constconst SbColor &operator =(const SbColor &newValue)voidsetValue(const SbColor &newValue)intoperator ==(const SoSFColor &f) const`.´ÊpMÍp2 4€\€T”A‚S~‚A€ƒãð@I1‰‚ÿintoperator !=(const SoSFColor &f) constO íÌpœÍp/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!MÍp½Ïp‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PœÍpˆqo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶½Ïpˆq·Èpp6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4½Ïp¼q& €€‚A€‚ÿDESCRIPTIONÁ‘ˆq}q0 .€#€”‘€‚A€€€‚ÿA single-value field containing an SbColor. Values may be set in either RGB (red, green, blue) or HSV (hue, saturation, value) color spaces.´‡¼q1q- (€€”‘€‚A€€‚ÿSoSFColors are written to file as an RGB triple of floating point numbers in standard scientific notation, in the range 0.0 to 1.0.0 }qaq& €€‚A€‚ÿMETHODSÚ1qzq? L€µ€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetValue(const SbVec3f &vec)voidsetValue(float red,float green,float blue)voidsetValue(const float rgb[3])voidsetHSVValue(float hue,float saturation,float value)voidsetHSVValue(const float hsv[3])V-aqÐq) "€Z€”‘€‚A€‚ÿConvenience methods for setting the value.vBzqFq4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHÐq·q) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.W%Fqq2 4€J€T”A‚S~‚A€ãÀ"%‰ƒ‚ÿconst SbColor &getValue() constG·qUq) "€<€”‘€‚A€‚ÿReturns this field's value.£cqøq@ P€Æ€T”A‚S~‚A€ãÀ"%‰ƒãÀ"%‰‚ƒãÀ"%‰‚ÿconst SbColor &operator =(const SbColor &newValue)voidsetValue(const SbColor &newValue)P!UqHq/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.”ZøqÜq: D€´€T”A‚S~‚A€ƒãð@I1‰‚ƒãð@I1‰‚ÿintoperator ==(const SoSFColor &f) constintoperator !=(const SoSFColor &f) constPHq[q/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 ÜqŒq& €€‚A€‚ÿSEE ALSO‰6[q qS v€l€”‘€‚Aãþ —€‰€ã— \选€ãz.—\€‰€ãÀ"%€‰‚ÿSoField, SoSField, SoMFColor, SbColor; ŒqP q1N „áh„âOP q‚ qIqSoSFEngine2  q‚ q% €€ˆˆ€‚ÿSoSFEngine*P q¬ q# €€€‚ÿNAME]7‚ q q& €n€”‘€€‚ÿSoSFEngine - field containing a pointer to an engine3¬ q< q# € €€‚ÿINHERITS FROMl+ q¨ qA R€V€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFEngine2 < qÚ q& €€€€ ‚ÿSYNOPSISpI¨ qJ q' €’€”‘€€‚‚ÿ#include Methods from class SoSFEngine:qÚ q» qc ”€€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ãú­Np‰ƒ‚ãú­Np‰ƒãú­Np‰‚ƒãú­Np‰‚ƒãIØ™X‰‚ƒãIØ™X‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constSoEngine *getValue() constSoEngine *operator =(SoEngine * newValue)voidsetValue(SoEngine * newValue)intoperator ==(const SoSFEngine &f) constintoperator !=(const SoSFEngine &f) constO J q q/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!» q+q‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P qö@qo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSb+qö@q qBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4+q*Aq& €€‚A€‚ÿDESCRIPTION–gö@qÀAq/ .€Î€”‘€‚A€€€‚ÿThis field maintains a pointer to an SoEngine instance, correctly maintaining its reference count.€T*Aq@Bq, (€¨€”‘€‚A€€‚ÿSoSFEngines are written to file as the engine they are pointing to. For example:I!ÀAq‰Bq( €B€Ù€‚A€‚ÿmySoSFEngineField ElapsedTime +@Bq´Bq( €€Ù€‚A€‚ÿæ°‰BqšCq6 :€a€”‘€‚A€€€€€‚ÿis an SoSFEngine field named 'mySoSFEngineField', pointing to an SoElapsedTime engine. If the engine is used elsewhere, the regular DEF/USE instancing mechanism applies:P(´BqêCq( €P€Ù€‚A€‚ÿanotherSoSFEngineField USE calculator+šCqDq( €€Ù€‚A€‚ÿ›lêCq°Dq/ .€Ø€”‘€‚A€€€‚ÿis an SoSFEngine field that points to a engine named 'calculator' that was DEF'ed earlier in the scene.0 DqàDq& €€‚A€‚ÿMETHODSvB°DqVEq4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHàDqÇEq) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.R VEqFq2 4€@€T”A‚S~‚Aãú­Np€‰ƒ‚ÿSoEngine *getValue() constGÇEq`Fq) "€<€”‘€‚A€‚ÿReturns this field's value.–VFqöFq@ P€¬€T”A‚S~‚Aãú­Np€‰ƒãú­Np‰‚ƒãú­Np‰‚ÿSoEngine *operator =(SoEngine * newValue)voidsetValue(SoEngine * newValue)P!`FqFGq/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.†XöFqÌGq. ,€°€T”A‚S~‚A€ƒ‚ƒ‚ÿintoperator ==(const SoSFEngine &f) constintoperator !=(const SoSFEngine &f) constPFGqKHq/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 ÌGq|Hq& €€‚A€‚ÿSEE ALSO‹8KHqIqS v€p€”‘€‚Aãþ —€‰€ã— \选€ãw¾°ž€‰€ãú­Np€‰‚ÿSoField, SoSField, SoMFEngine, SoEngine9|Hq@Iq19sâ›ãP@IqpIq"ˆqSoSFEnum0 IqpIq% €€ˆˆ€‚ÿSoSFEnum*@IqšIq# €€€‚ÿNAMEX2pIqòIq& €d€”‘€€‚ÿSoSFEnum - field containing an enumerated value3šIq%Jq# € €€‚ÿINHERITS FROMj)òIqJqA R€R€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFEnum2 %JqÁJq& €€€€ ‚ÿSYNOPSISEJqKq& €>€”‘€€‚ÿMethods from class SoSFEnum:] ÁJqcLqS t€€T”A‚S~‚A€ƒãúß~6‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒãØtW鉂ƒãØtW鉂ÿvoidsetValue(const SbName &name)static SoTypegetClassTypeId()virtual voidgetTypeId() constintgetValue() constintoperator =(int newValue)voidsetValue(int newValue)intoperator ==(const SoSFEnum &f) constintoperator !=(const SoSFEnum &f) constO Kq²Lq/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!cLqÓNq‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P²Lqž€qo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SÓNqž€qIqbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4ÓNqÒ€q& €€‚A€‚ÿDESCRIPTIONP&ž€q"‚q* "€M€”‘€‚A€‚ÿA single-value field that contains an enumerated type value, stored as an integer. Nodes that use this field class define mnemonic names for the values. These names should be used when setting or testing the values of the field, even though the values are treated as integers in the methods.ìÒ€qAƒq3 4€Ù€”‘€‚A€€€€‚ÿSoSFEnums are written to file as a mnemonic enumerated type name. The name differs among uses of this field in various node or engine classes. See the reference pages for specific nodes or engines for the names (e.g. SoDrawStyle).0 "‚qqƒq& €€‚A€‚ÿMETHODSX&AƒqɃq2 4€L€T”A‚S~‚A€ƒãúß~6‰‚ÿvoidsetValue(const SbName &name)~UqƒqG„q) "€ª€”‘€‚A€‚ÿSets this field to contain the given mnemonic name, passed in as a name or string.vBɃq½„q4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHG„q.…q) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.C½„qq…q, (€.€T”A‚S~‚A€ƒ‚ÿintgetValue() constG.…q¸…q) "€<€”‘€‚A€‚ÿReturns this field's value.i;q…q!†q. ,€v€T”A‚S~‚A€ƒ‚ƒ‚ÿintoperator =(int newValue)voidsetValue(int newValue)P!¸…qq†q/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.’X!†q‡q: D€°€T”A‚S~‚A€ƒãØtW鉂ƒãØtW鉂ÿintoperator ==(const SoSFEnum &f) constintoperator !=(const SoSFEnum &f) constPq†q‚‡q/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 ‡q³‡q& €€‚A€‚ÿSEE ALSOo(‚‡q"ˆqG ^€P€”‘€‚Aãþ —€‰€ã— \选€ãvnÄ´€‰‚ÿSoField, SoSField, SoMFEnum: ³‡q\ˆq1± h„≄íQ\ˆqˆqþÄqSoSFFloat1 "ˆqˆq% €€ˆˆ€‚ÿSoSFFloat*\ˆq·ˆq# €€€‚ÿNAME\6ˆq‰q& €l€”‘€€‚ÿSoSFFloat - field containing a floating-point value3·ˆqF‰q# € €€‚ÿINHERITS FROMk*‰q±‰qA R€T€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFFloat2 F‰qã‰q& €€€€ ‚ÿSYNOPSISnG±‰qQŠq' €Ž€”‘€€‚‚ÿ#include Methods from class SoSFFloat:;ðã‰qŒ‹qK d€á€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã0â1‰‚ƒã0â1‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constfloatgetValue() constfloatoperator =(float newValue)voidsetValue(float newValue)intoperator ==(const SoSFFloat &f) constintoperator !=(const SoSFFloat &f) constO QŠqÛ‹q/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!Œ‹qüq‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PÛ‹q»qo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4üq Àq& €€‚A€‚ÿDESCRIPTION»q Àq"ˆqmD»qyÀq) "€ˆ€”‘€‚A€‚ÿA field that contains one single-precision floating point number.oC ÀqèÀq, (€†€”‘€‚A€€‚ÿSoSFFloats are written to file in standard scientific notation.0 yÀqÁq& €€‚A€‚ÿMETHODSvBèÀqŽÁq4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHÁqÿÁq) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.EŽÁqDÂq, (€2€T”A‚S~‚A€ƒ‚ÿfloatgetValue() constGÿÁq‹Âq) "€<€”‘€‚A€‚ÿReturns this field's value.oADÂqúÂq. ,€‚€T”A‚S~‚A€ƒ‚ƒ‚ÿfloatoperator =(float newValue)voidsetValue(float newValue)P!‹ÂqJÃq/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.”ZúÂqÞÃq: D€´€T”A‚S~‚A€ƒã0â1‰‚ƒã0â1‰‚ÿintoperator ==(const SoSFFloat &f) constintoperator !=(const SoSFFloat &f) constPJÃq]Äq/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 ÞÃqŽÄq& €€‚A€‚ÿSEE ALSOp)]ÄqþÄqG ^€R€”‘€‚Aãþ —€‰€ã— \选€ã'0]€‰‚ÿSoField, SoSField, SoMFFloat: ŽÄq8Åq1X‰„í) äR8ÅqiÅq rSoSFImage1 þÄqiÅq% €€ˆˆ€‚ÿSoSFImage*8Åq“Åq# €€€‚ÿNAMEP*iÅqãÅq& €T€”‘€€‚ÿSoSFImage - field containing a 2D image3“ÅqÆq# € €€‚ÿINHERITS FROMk*ãÅqÆqA R€T€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFImage2 Æq³Æq& €€€€ ‚ÿSYNOPSISnGÆq!Çq' €Ž€”‘€€‚‚ÿ#include Methods from class SoSFImage:Ö³Æq@ÈqI `€­€T”A‚S~‚A€ƒãŠƒõ(‰‚ƒãŠƒõ(‰‚ƒãŠƒõ(‰‚ƒ‚ÿconst unsigned char *getValue(SbVec2s &size,int &nc) constvoidsetValue(const SbVec2s &size,int nc,const unsigned char *bytes)unsigned char *startEditing(SbVec2s &size,int &nc)voidfinishEditing()P!!ÇqÈq/ .€B€”‘€‚A€ã— \鉂ÿMethods from class SoSField:U#@ÈqåÈq2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()O Èq4Éq/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:I²åÈq}Ëq— ü€e€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãþ —‰‚ƒãþ —‰‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SoTypegetTypeId() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)intoperator ==(const SoField &f) constintoperator !=(const SoField &f) constvoidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)&¥4Éq£Íq ЀK€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿvoiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() constSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4}Ëq×Íq& €€‚A€‚ÿDESCRIPTIONJ £Íq!Ïq* "€A€”‘€‚A€‚ÿA field containing a two-dimensional image. Images can be grayscale (intensity), grayscale with transparency information, RGB, or RGB with transparency. Each component of the image (intensity, red, green, blue or transparency (alpha)) can have an unsigned one-byte value from 0 to 255.¸Ž×Íqår* "€€”‘€‚A€‚ÿValues are returned as arrays of unsigned chars. The image is stored in this array starting at the bottom left corner of the image with the intensity or red component of that pixel!ÏqårþÄq, followed by either the alpha, the green and blue, or the green, blue and alpha components (depending on the number of components in the image). The next value is the first component of the next pixel to the right.Ö!Ïq¨r- (€-€”‘€‚A€€‚ÿSoSFImages are written to file as three integers representing the width, height and number of components in the image, followed by width*height hexadecimal values representing the pixels in the image, separated by whitespace. A one-component image will have one-byte hexadecimal values representing the intensity of the image. For example, 0xFF is full intensity, 0x00 is no intensity. A two-component image puts the intensity in the first (high) byte and the transparency in the second (low) byte. Pixels in a three-component image have the red component in the first (high) byte, followed by the green and blue components (so 0xFF0000 is red). Four-component images put the transparency byte after red/green/blue (so 0x0000FF80 is semi-transparent blue). Note: each pixel is actually read as a single unsigned number, so a 3-component pixel with value "0x0000FF" can also be written as "0xFF" or "255" (decimal).8åràr) "€€”‘€‚A€‚ÿFor example,:¨rr( €$€Ù€‚A€‚ÿ1 2 1 0xFF 0x00+àrEr( €€Ù€‚A€‚ÿ˜orÝr) "€Þ€”‘€‚A€‚ÿis a 1 pixel wide by 2 pixel high grayscale image, with the bottom pixel white and the top pixel black. And:`8Er=r( €p€Ù€‚A€‚ÿ2 4 3 0xFF0000 0xFF00 0 0 0 0 0xFFFFFF 0xFFFF00+Ýrhr( €€Ù€‚A€‚ÿöÌ=r^r* "€™€”‘€‚A€‚ÿis a 2 pixel wide by 4 pixel high RGB image, with the bottom left pixel red, the bottom right pixel green, the two middle rows of pixels black, the top left pixel white, and the top right pixel yellow.0 hrŽr& €€‚A€‚ÿMETHODStA^rr3 6€‚€T”A‚S~‚A€ƒãŠƒõ(‰‚ÿconst unsigned char *getValue(SbVec2s &size,int &nc) const%ûŽr' r* "€÷€”‘€‚A€‚ÿReturns the pixels in the image as an array of unsigned chars. The size and nc arguments are filled in with the dimensions of the image and the number of components in the image; the number of bytes in the array returned will be size[0]*size[1]*nc.Kr¦ r4 8€–€T”A‚S~‚A€ƒãŠƒõ(‰‚ÿvoidsetValue(const SbVec2s &size,int nc,const unsigned char *bytes)/ÿ' rÕ r0 .€ÿ€”‘€‚A€€€‚ÿSets the value of this field to be an image of the given size, with the given number of components, and with the given pixel values. size[0]*size[1]*nc bytes from the given array will be copied into internal storage maintained by the SoSFImage field.ƒN¦ rX r5 :€œ€T”A‚S~‚A€ƒãŠƒõ(‰‚ƒ‚ÿunsigned char *startEditing(SbVec2s &size,int &nc)voidfinishEditing()&öÕ r~ r0 .€í€”‘€‚A€€€‚ÿThese methods can be used to efficiently edit the values in an image field. startEditing() returns the size of the image in the size and nc arguments; writing past the end of the array returned is a good way to cause hard-to-find core dumps.1 X r¯ r& €€‚A€‚ÿSEE ALSOU~ r r; F€4€”‘€‚Aãþ —€‰€ã— \选‚ÿSoField, SoSField; ¯ r? r1'’‚ã’‚åS? rq r·ÃrSoSFImage32  rq r% €€ˆˆ€‚ÿSoSFImage3*? r› r# €€€‚ÿNAMEQ+q rì r& €V€”‘€€‚ÿSoSFImage3 - field containing a 3D image3› rr# € €€‚ÿINHERITS FROMl+ì r‹rA R€V€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFImage32 r½r& €€€€ ‚ÿSYNOPSISP*‹r r& €T€”‘€€‚ÿ#include µa½rÎ@rT v€Ã€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum CopyPolicy{COPY,Open Inventor will make a copy of the data (default)NO_COPY,Passed buffer used, user will deleteNO_COPY_AND_DELETE,Passed rÎ@r rbuffer used, SoSFImage3 will delete.Use this if memory is allocated with "new".NO_COPY_AND_FREEPassed buffer used, SoSFImage3 will free.Use this if memory is allocated with "malloc".}J! rAr) "€B€”‘€‚A€‚ÿMethods from class SoSFImage3:#¹Î@r;Crj ¢€s€T”A‚S~‚A€ƒãµƒõ(‰‚ƒãµƒõ(‰‚ƒãµƒõ(‰ãµƒõ(‰‚ƒãµƒõ(‰ãµƒõ(‰‚ƒã k{‰‚ÿconst unsigned char *getValue(SbVec3s &size,int &nc) constvoidsetValue(const SbVec3s &size,int nc,const unsigned char *bytesCopyPolicy copy=COPY)voidsetSubValue(const SbVec3s &subSize,const SbVec3s &offset,unsigned char *bytes,CopyPolicy copy=COPY)voidsetSubValues(const SbVec3s *subSizes,const SbVec3s *offsets,int num,unsigned char **bytes,CopyPolicy copy=COPY)intoperator ==(const SoSFImage3 &f) const¸{AróCr= J€ö€T”A‚S~‚A€ƒã k{‰‚ƒãµƒõ(‰‚ƒ‚ÿintoperator !=(const SoSFImage3 &f) constunsigned char *startEditing(SbVec3s &size,int &nc)voidfinishEditing()P!;CrCDr/ .€B€”‘€‚A€ã— \鉂ÿMethods from class SoSField:U#óCr˜Dr2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()O CDrçDr/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:I²˜Dr0Gr— ü€e€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãþ —‰‚ƒãþ —‰‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SoTypegetTypeId() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)intoperator ==(const SoField &f) constintoperator !=(const SoField &f) constvoidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)&¥çDrVIr ЀK€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿvoiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() constSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const40GrŠIr& €€‚A€‚ÿDESCRIPTION·VIrAJr* "€€”‘€‚A€‚ÿA field containing a three-dimensional image. A three-dimensional image can be thought of as a sequence of two-dimensional image "slices."ôŠIr_Kr* "€é€”‘€‚A€‚ÿImages can be grayscale (intensity), grayscale with transparency information, RGB, or RGB with transparency. Each component of the image (intensity, red, green, blue or transparency (alpha)) can have an unsigned one-byte value from 0 to 255.¾”AJrMr* "€)€”‘€‚A€‚ÿValues are returned as arrays of unsigned chars. The image is stored in this array starting at the bottom left front corner of the image with the intensity or red component of that pixel, followed by either the alpha, the green and blue, or the green, blue and alpha components (depending on the number of components in the image). The next value is the first component of the next pixel to the right.Ï¢_Krø€r- (€E€”‘€‚A€€‚ÿSoSFImages are written to file as four integers representing the width, height, depth and number of components in the image, followed by width*height*depth hexadecimal values representing the pixels in the image, separated by whitespace. A one-component image will have one-byte hexadecimal values representing the intensity of the image. For example, 0xFF is full intensity, 0x00 is no intensity. A two-component image puts the intensity in the first (high) byte and the transparency in the second (low) byte. Pixels in a three-component image have the red component in the first (high) byte, followed by the green and blue components (so 0xFF0000 is red). Four-component images put the tranMrø€r rsparency byte after red/green/blue (so 0x0000FF80 is semi-transparent blue). Note: each pixel is actually read as a single unsigned number, so a 3-component pixel with value "0x0000FF" can also be written as "0xFF" or "255" (decimal).8Mr0r) "€€”‘€‚A€‚ÿFor example,V.ø€r†r( €\€Ù€‚A€‚ÿ1 2 3 1 0xFF 0x00 0x00 0xFF 0xFF 0x00+0r±r( €€Ù€‚A€‚ÿé†rÄ‚r* "€Ó€”‘€‚A€‚ÿis a 1 pixel wide by 2 pixel high by 3 pixel deep grayscale image, with the bottom pixel white and the top pixel black in the first (front-most) slice. In the second slice the bottom pixel is black and the top pixel is white. And:f>±r*ƒr( €|€Ù€‚A€‚ÿ2 4 3 3 0xFF0000 0xFF00 0 0 0 0 0xFFFFFF 0xFFFF00 ...+Ä‚rUƒr( €€Ù€‚A€‚ÿ:*ƒr„r* "€!€”‘€‚A€‚ÿis a 2 pixel wide by 4 pixel high by 3 pixel deep RGB image, with the bottom left pixel red, the bottom right pixel green, the two middle rows of pixels black, the top left pixel white, and the top right pixel yellow in the first slice. Subsequent slices are not shown.0 Uƒr¿„r& €€‚A€‚ÿMETHODStA„r3…r3 6€‚€T”A‚S~‚A€ƒãµƒõ(‰‚ÿconst unsigned char *getValue(SbVec3s &size,int &nc) const]¿„r†rN j€€”‘€‚A€€€€€€€€€€€€€‚ÿReturns the pixels in the image as an array of unsigned chars. The size and nc arguments are filled in with the dimensions of the image and the number of components in the image; the number of bytes in the array returned will be size[0]*size[1]*size[2]*nc.•`3…r%‡r5 :€À€T”A‚S~‚A€ƒãµƒõ(‰‚ÿvoidsetValue(const SbVec3s &size,int nc,const unsigned char *bytesCopyPolicy copy=COPY)X†r}ˆrH ^€!€”‘€‚A€€€€€€€€€€€‚ÿSets the value of this field to be an image of the given size, with the given number of components, and with the given pixel values. size[0]*size[1]*size[2]*nc bytes from the given array will be copied into internal storage maintained by the SoSFImage3 field.t>%‡rñ‰r6 :€}€”‘€‚A€€€€€‚ÿAt times, SoSFImage3 may need to manipulate large amounts of memory. Therefore, it is useful to be able to specify the memory usage policy dynamically. By default, the memory policy is COPY, which is consistent with other Open Inventor fields. The most likely to be efficient is NO_COPY. See also setNeverWrite.=ï}ˆr.‹rN j€ß€T”A‚S~‚A€ƒãµƒõ(‰ãµƒõ(‰‚ƒãµƒõ(‰ãµƒõ(‰‚ÿvoidsetSubValue(const SbVec3s &subSize,const SbVec3s &offset,unsigned char *bytes,CopyPolicy copy=COPY)voidsetSubValues(const SbVec3s *subSizes,const SbVec3s *offsets,int num,unsigned char **bytes,CopyPolicy copy=COPY)Û±ñ‰r r* "€c€”‘€‚A€‚ÿThese methods may be used for subtexturing: instead of replacing the texture in texture memory, only parts of it are replaced. This is much faster and uses less memory. In any case these methods affect the texture in processor memory. Note that the sub-images must have the same number of components as the one contained in this object. The texture in texture memory will not actually be modified until the next render traversal. –\.‹rŸr: D€¸€T”A‚S~‚A€ƒã k{‰‚ƒã k{‰‚ÿintoperator ==(const SoSFImage3 &f) constintoperator !=(const SoSFImage3 &f) constE rär) "€8€”‘€‚A€‚ÿEquality/inequality testsÈŸrøŽrL f€‘€T”A‚S~‚A€ƒãµƒõ(‰‚ƒ‚ƒãµƒõ(‰ãµƒõ(‰‚㑶p6‰ƒ‚ÿunsigned char *startEditing(SbVec3s &size,int &nc)voidfinishEditing()unsigned char *getSubTexture(int index, SbVec3s &size, SbVec3s &offset)SbBoolhasSubTextures(int &numSubTextures)&öär*Àr0 .€í€”‘€‚A€€€‚ÿThese methods can be used to efficiently edit the values in an image field. startEditing() returns the size of the image in the size and nc arguments; writing past the end of the array returned is a good way to caøŽr*Àr ruse hard-to-find core dumps.Y#øŽrƒÁr6 :€G€”‘€‚A€€€€€‚ÿAvoid copying the values in/out, if you are just changing the bytes and not changing the dimensions of the image. This is equivalent to getValue, but returns a pointer you can change. Using startEditing allows subtexturing, which is a more efficient way of doing texture modification.|B*ÀrÿÁr: D€„€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetNeverWrite(SbBool neverWrite)SbBoolisNeverWrite()2ƒÁr1Ãr* "€€”‘€‚A€‚ÿAs this field may have to handle large amounts of data and its representation in an .iv file is not very efficient, it is often a good idea not to allow that data to be written out when required by a write action. By default, the "neverWrite" condition is TRUE.1 ÿÁrbÃr& €€‚A€‚ÿSEE ALSOU1Ãr·Ãr; F€4€”‘€‚Aãþ —€‰€ã— \选‚ÿSoField, SoSField: bÃrñÃr1Ó ) äDæTñÃr"ÄrÌsSoSFInt321 ·Ãr"Är% €€ˆˆ€‚ÿSoSFInt32*ñÃrLÄr# €€€‚ÿNAMEW1"Är£Är& €b€”‘€€‚ÿSoSFInt32 - field containing a int32_t integer3LÄrÖÄr# € €€‚ÿINHERITS FROMk*£ÄrAÅrA R€T€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFInt322 ÖÄrsÅr& €€€€ ‚ÿSYNOPSISnGAÅráÅr' €Ž€”‘€€‚‚ÿ#include Methods from class SoSFInt32:CøsÅr$ÇrK d€ñ€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒãw?2‰‚ƒãw?2‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constint32_tgetValue() constint32_toperator =(int32_t newValue)voidsetValue(int32_t newValue)intoperator ==(const SoSFInt32 &f) constintoperator !=(const SoSFInt32 &f) constO áÅrsÇr/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!$Çr”Ér‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PsÇrSËro ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4”Ér‡Ër& €€‚A€‚ÿDESCRIPTION^5SËråËr) "€j€”‘€‚A€‚ÿA field containing a single long (32-bit) integer.±„‡Ër–Ìr- (€ €”‘€‚A€€‚ÿSoSFInt32s are written to file as an integer in decimal, hexadecimal (beginning with '0x') or octal (beginning with '0') format.0 åËrÆÌr& €€‚A€‚ÿMETHODSvB–Ìr<Ír4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHÆÌr­Ír) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.G<ÍrôÍr, (€6€T”A‚S~‚A€ƒ‚ÿint32_tgetValue() constG­Ír;Îr) "€<€”‘€‚A€‚ÿReturns this field's value.uGôÍr°Îr. ,€Ž€T”A‚S~‚A€ƒ‚ƒ‚ÿint32_toperator =(int32_t newValue)voidsetValue(int32_t newValue)H;ÎrøÎr) "€>€”‘€‚A€‚ÿSets this field to newValue.”Z°ÎrŒÏr: D€´€T”A‚S~‚A€ƒãw?2‰‚ƒãw?2‰‚ÿintoperator ==(const SoSFInt32 &f) constintoperator !=(const SoSFInt32 &f) constwNøÎrs) "€œ€”‘€‚A€‚ÿReturns TRUE if f is of the same type and has the same value as this fieldŒÏrs·Ãr.1 ŒÏr@s& €€‚A€‚ÿSEE ALSOŒ9sÌsS v€r€”‘€‚Aãþ —€‰€ã— \选€ã-Ï]€‰€ã`‡Ð〉‚ÿSoField, SoSField, SoMFInt32, SoSFUInt329@ss1R’‚å›æUs5sV sSoSFLong0 Ìs5s% €€ˆˆ€‚ÿSoSFLong*s_s# €€€‚ÿNAMEI#5s¨s& €F€”‘€€‚ÿSoSFLong - synonym for SoSFInt323_sÛs# € €€‚ÿINHERITS FROMj)¨sEsA R€R€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFLong2 Ûsws& €€€€ ‚ÿSYNOPSISuHEsìs- *€€”‘€€‚ã— \鉂ÿ#include Methods from class SoSField:U#wsAs2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()O ìss/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:I²AsÙs— ü€e€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãþ —‰‚ƒãþ —‰‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SoTypegetTypeId() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)intoperator ==(const SoField &f) constintoperator !=(const SoField &f) constvoidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)&¥sÿs ЀK€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿvoiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() constSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4Ùs3s& €€‚A€‚ÿDESCRIPTION#íÿsV s6 :€Û€”‘€‚A€€€€€‚ÿThis class is obsolete, and is provided for backwards compatibility only. You should use the new SoSFInt32 class instead. If you compile your code -DIV_STRICT, #including the SoSFLong.h header file will cause a compile-time error.; 3s‘ s1Dæ>‡æV‘ sà s:LsSoSFMatrix2 V sà s% €€ˆˆ€‚ÿSoSFMatrix*‘ sí s# €€€‚ÿNAMES-à s@ s& €Z€”‘€€‚ÿSoSFMatrix - field containing a 4x4 matrix3í ss s# € €€‚ÿINHERITS FROMl+@ sß sA R€V€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFMatrix2 s s s& €€€€ ‚ÿSYNOPSISpIß s s' €’€”‘€€‚‚ÿ#include Methods from class SoSFMatrix:³ s  sl ¦€g€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒ‚ã4i¥‘‰ƒ‚ã4i¥‘‰ƒã4i¥‘‰‚ƒã4i¥‘‰‚ƒãЫÈv‰‚ÿvoidsetValue(float a11,float a12,float a13,float a14,float a21,float a22,float a23,float a24,float a31,float a32,float a33,float a34,float a41,float a42,float a43,float a44)static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbMatrix &getValue() constconst SbMatrix &operator =(const SbMatrix &newValue)voidsetValue(const SbMatrix &newValue)voidsetValue(const SbMatrixd &newValue)–\ s6s: D€¸€T”A‚S~‚A€ƒãØœ‰‚ƒãØœ‰‚ÿintoperator ==(const SoSFMatrix &f) constintoperator !=(const SoSFMatrix &f) constO   s…s/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!6s²@s‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconne…s²@sV sctFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P…sqBso ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4²@s¥Bs& €€‚A€‚ÿDESCRIPTIONu@qBsCs5 :€€€”‘€‚A€ã4i¥‘€‰€‚ÿA field containing a transformation matrix (an SbMatrix).¶‰¥BsÐCs- (€€”‘€‚A€€‚ÿSoSFMatrices are written to file as 16 floating point numbers separated by whitespace. For example, an identity matrix is written as:M%CsDs( €J€Ù€‚A€‚ÿ1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1+ÐCsHDs( €€Ù€‚A€‚ÿ0 DsxDs& €€‚A€‚ÿMETHODSüÀHDstEs< F€€T”A‚S~‚A€ƒ‚ÿvoidsetValue(float a11,float a12,float a13,float a14,float a21,float a22,float a23,float a24,float a31,float a32,float a33,float a34,float a41,float a42,float a43,float a44)æªxDsZFs< F€U€”‘€‚A€€€€€€€‚ÿSets this field to contain the matrix given by the 16 values. For a translation matrix, the x, y and z translations should be in the a41, a42, and a43 arguments.vBtEsÐFs4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHZFsAGs) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.X&ÐFs™Gs2 4€L€T”A‚S~‚A€ã4i¥‘‰ƒ‚ÿconst SbMatrix &getValue() constGAGsàGs) "€<€”‘€‚A€‚ÿReturns this field's value.¦f™Gs†Hs@ P€Ì€T”A‚S~‚A€ã4i¥‘‰ƒã4i¥‘‰‚ƒã4i¥‘‰‚ÿconst SbMatrix &operator =(const SbMatrix &newValue)voidsetValue(const SbMatrix &newValue)P!àGsÖHs/ .€B€”‘€‚A€€€‚ÿSets this field to newValue._-†Hs5Is2 4€Z€T”A‚S~‚A€ƒãЫÈv‰‚ÿvoidsetValue(const SbMatrixd &newValue)4 ÖHsiJs* "€€”‘€‚A€‚ÿConvenience method that allows you to specify a field value using a double precision variable. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.–\5IsÿJs: D€¸€T”A‚S~‚A€ƒãØœ‰‚ƒãØœ‰‚ÿintoperator ==(const SoSFMatrix &f) constintoperator !=(const SoSFMatrix &f) constPiJs~Ks/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 ÿJs¯Ks& €€‚A€‚ÿSEE ALSO‹8~Ks:LsS v€p€”‘€‚Aãþ —€‰€ã— \选€ã÷3 €ã4i¥‘€‰‚ÿSoField, SoSField, SoMFMatrix, SbMatrix9¯KssLs1›ædçWsLs£Lsš‹sSoSFName0 :Ls£Ls% €€ˆˆ€‚ÿSoSFName*sLsÍLs# €€€‚ÿNAMEK%£LsMs& €J€”‘€€‚ÿSoSFName - field containing a name3ÍLsKMs# € €€‚ÿINHERITS FROMj)MsµMsA R€R€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFName2 KMsçMs& €€€€ ‚ÿSYNOPSISlEµMsSNs' €Š€”‘€€‚‚ÿ#include Methods from class SoSFName:Ÿ:çMs €se ˜€u€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒ‚ãúß~6‰ƒ‚ãúß~6‰ƒãúß~6‰‚ƒãúß~6‰‚ƒã¾b鉂ƒã¾b鉂ÿvoidsetValue(const char *string)static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbName &getValue() constconst SbName &operator =(const SbName &newValue)voidsetValue(const SbName &newValue)intoperator ==(const SoSFName &f) constintoperator !=(const SoSFName &f) constSNs €s:LsO SNs[€s/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:! €s|‚s‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P[€s;„so ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4|‚so„s& €€‚A€‚ÿDESCRIPTION-ý;„sœ…s0 .€û€”‘€‚A€€€‚ÿA field containing a name. Names are short series of characters generally used for labels or names, and are stored in a special table designed to allow fast lookup and comparison. For most purposes, an SoSFString field is probably more appropriate.óÆo„s†s- (€€”‘€‚A€€‚ÿSoSFNames are written to file as a string of characters. Names must begin with an underscore or alphabetic character, and must consist entirely of underscores, alphabetic characters, or numbers.0 œ…s¿†s& €€‚A€‚ÿMETHODSP$†s‡s, (€H€T”A‚S~‚A€ƒ‚ÿvoidsetValue(const char *string)f=¿†su‡s) "€z€”‘€‚A€‚ÿSet this field to the name equivalent to the given string.vB‡së‡s4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHu‡s\ˆs) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.V$ë‡s²ˆs2 4€H€T”A‚S~‚A€ãúß~6‰ƒ‚ÿconst SbName &getValue() constG\ˆsùˆs) "€<€”‘€‚A€‚ÿReturns this field's value. `²ˆs™‰s@ P€À€T”A‚S~‚A€ãúß~6‰ƒãúß~6‰‚ƒãúß~6‰‚ÿconst SbName &operator =(const SbName &newValue)voidsetValue(const SbName &newValue)P!ùˆsé‰s/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.’X™‰s{Šs: D€°€T”A‚S~‚A€ƒã¾b鉂ƒã¾b鉂ÿintoperator ==(const SoSFName &f) constintoperator !=(const SoSFName &f) constPé‰súŠs/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 {Šs+‹s& €€‚A€‚ÿSEE ALSOo(úŠsš‹sG ^€P€”‘€‚Aãþ —€‰€ã— \选€ã\ú䀉‚ÿSoField, SoSField, SoMFName9+‹sÓ‹s1´>‡æˆ…çXÓ‹sŒs;ËsSoSFNode0 š‹sŒs% €€ˆˆ€‚ÿSoSFNode*Ó‹s-Œs# €€€‚ÿNAMEX2Œs…Œs& €d€”‘€€‚ÿSoSFNode - field containing a pointer to a node3-Œs¸Œs# € €€‚ÿINHERITS FROMj)…Œs"sA R€R€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFNode2 ¸ŒsTs& €€€€ ‚ÿSYNOPSISlE"sÀs' €Š€”‘€€‚‚ÿ#include Methods from class SoSFNode:eTs%sc ”€€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ã’n%9‰ƒ‚ã’n%9‰ƒã’n%9‰‚ƒã’n%9‰‚ƒãYdb鉂ƒãYdb鉂ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constSoNode *getValue() constSoNode *operator =(SoNode * newValue)voidsetValue(SoNode * newValue)intoperator ==(const SoSFNode &f) constintoperator !=(const SoSFNode &f) constO Àsts/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!%s¡Ás‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶pts¡Ásš‹s6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿Pts`Ãso ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4¡Ás”Ãs& €€‚A€‚ÿDESCRIPTION”e`Ãs(Äs/ .€Ê€”‘€‚A€€€‚ÿThis field maintains a pointer to an SoNode instance, correctly maintaining its reference count.|P”Ãs¤Äs, (€ €”‘€‚A€€‚ÿSoSFNodes are written to file as the node they are pointing to. For example:B(ÄsæÄs( €4€Ù€‚A€‚ÿmySoSFNodeField Cube {}+¤ÄsÅs( €€Ù€‚A€‚ÿÇæÄsØÅs* "€;€”‘€‚A€‚ÿis an SoSFNode field named 'mySoSFNodeField', pointing to an SoCube node. If the node is used elsewhere, the regular DEF/USE instancing mechanism applies:P(Ås(Æs( €P€Ù€‚A€‚ÿanotherSoSFNodeField USE topSeparator+ØÅsSÆs( €€Ù€‚A€‚ÿ‘h(ÆsäÆs) "€Ð€”‘€‚A€‚ÿis an SoSFNode field that points to a node named 'topSeparator' that was DEF'ed earlier in the scene.0 SÆsÇs& €€‚A€‚ÿMETHODSvBäÆsŠÇs4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHÇsûÇs) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.PŠÇsKÈs2 4€<€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *getValue() constGûÇs’Ès) "€<€”‘€‚A€‚ÿReturns this field's value.PKÈs"És@ P€ €T”A‚S~‚Aã’n%9€‰ƒã’n%9‰‚ƒã’n%9‰‚ÿSoNode *operator =(SoNode * newValue)voidsetValue(SoNode * newValue)P!’ÈsrÉs/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.’X"ÉsÊs: D€°€T”A‚S~‚A€ƒãYdb鉂ƒãYdb鉂ÿintoperator ==(const SoSFNode &f) constintoperator !=(const SoSFNode &f) constPrÉsƒÊs/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 Ês´Ês& €€‚A€‚ÿSEE ALSO‡4ƒÊs;ËsS v€h€”‘€‚Aãþ —€‰€ã— \选€ã÷]Ï´€‰€ã’n%9€‰‚ÿSoField, SoSField, SoMFNode, SoNode9´ÊstËs1wdçxèYtËs¤ËsïtSoSFPath0 ;Ës¤Ës% €€ˆˆ€‚ÿSoSFPath*tËsÎËs# €€€‚ÿNAMEc7¤Ës1Ìs, (€n€”‘€€€€‚ÿSoSFPath - field containing a pointer to an SoPath7ÎËshÌs& €"€€€ ‚ÿINHERITS FROMj)1ÌsÒÌsA R€R€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFPath2 hÌsÍs& €€€€ ‚ÿSYNOPSISlEÒÌspÍs' €Š€”‘€€‚‚ÿ#include Methods from class SoSFPath:eÍsÕÎsc ”€€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ãMy'9‰ƒ‚ãMy'9‰ƒãMy'9‰‚ƒãMy'9‰‚ƒãod鉂ƒãod鉂ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constSoPath *getValue() constSoPath *operator =(SoPath * newValue)voidsetValue(SoPath * newValue)intoperator ==(const SoSFPath &f) constintoperator !=(const SoSFPath &f) constO pÍs$Ïs/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!ÕÎsQt‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDef$ÏsQt;Ësault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P$Ïsto ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4QtDt& €€‚A€‚ÿDESCRIPTION”etØt/ .€Ê€”‘€‚A€€€‚ÿThis field maintains a pointer to an SoPath instance, correctly maintaining its reference count.ÀDt˜t3 4€€”‘€‚A€€€€‚ÿSoSFPaths are written to file as the path they point to. See the SoPath reference page for a description of the file format for a path.0 ØtÈt& €€‚A€‚ÿMETHODSvB˜t>t4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHÈt¯t) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.P>tÿt2 4€<€T”A‚S~‚AãMy'9€‰ƒ‚ÿSoPath *getValue() constG¯tFt) "€<€”‘€‚A€‚ÿReturns this field's value.PÿtÖt@ P€ €T”A‚S~‚AãMy'9€‰ƒãMy'9‰‚ƒãMy'9‰‚ÿSoPath *operator =(SoPath * newValue)voidsetValue(SoPath * newValue)P!Ft&t/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.’XÖt¸t: D€°€T”A‚S~‚A€ƒãod鉂ƒãod鉂ÿintoperator ==(const SoSFPath &f) constintoperator !=(const SoSFPath &f) constP&t7t/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 ¸tht& €€‚A€‚ÿSEE ALSO‡47tïtS v€h€”‘€‚Aãþ —€‰€ã— \选€ã²hÑ´€‰€ãMy'9€‰‚ÿSoField, SoSField, SoMFPath, SoPath: ht) t1Nˆ…çtƒèZ) tZ tùFtSoSFPlane1 ïtZ t% €€ˆˆ€‚ÿSoSFPlane*) t„ t# €€€‚ÿNAMEV0Z tÚ t& €`€”‘€€‚ÿSoSFPlane - field containing a plane equation3„ t t# € €€‚ÿINHERITS FROMk*Ú tx tA R€T€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFPlane2 tª t& €€€€ ‚ÿSYNOPSISnGx t t' €Ž€”‘€€‚‚ÿ#include Methods from class SoSFPlane:ª t™ tc ”€=€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ã÷Ä'‰ƒ‚ã÷Ä'‰ƒã÷Ä'‰‚ƒã÷Ä'‰‚ƒã‰xë3‰‚ƒã‰xë3‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbPlane &getValue() constconst SbPlane &operator =(const SbPlane &newValue)voidsetValue(const SbPlane &newValue)intoperator ==(const SoSFPlane &f) constintoperator !=(const SoSFPlane &f) constO  tè t/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!™ t t‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿Pè tÔ@to ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngine tÔ@tïtOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4 tAt& €€‚A€‚ÿDESCRIPTIONe6Ô@tmAt/ .€l€”‘€‚A€€€‚ÿA field containing a plane equation (an SbPlane).êAt„Bt- (€Õ€”‘€‚A€€‚ÿSoSFPlanes are written to file as four floating point values separated by whitespace. The first three are the normal direction of the plane, the fourth is the distance of the plane from the origin (in the direction of the normal).0 mAt´Bt& €€‚A€‚ÿMETHODSvB„Bt*Ct4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH´Bt›Ct) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.W%*CtòCt2 4€J€T”A‚S~‚A€ã÷Ä'‰ƒ‚ÿconst SbPlane &getValue() constG›Ct9Dt) "€<€”‘€‚A€‚ÿReturns this field's value.£còCtÜDt@ P€Æ€T”A‚S~‚A€ã÷Ä'‰ƒã÷Ä'‰‚ƒã÷Ä'‰‚ÿconst SbPlane &operator =(const SbPlane &newValue)voidsetValue(const SbPlane &newValue)P!9Dt,Et/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.”ZÜDtÀEt: D€´€T”A‚S~‚A€ƒã‰xë3‰‚ƒã‰xë3‰‚ÿintoperator ==(const SoSFPlane &f) constintoperator !=(const SoSFPlane &f) constP,Et?Ft/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 ÀEtpFt& €€‚A€‚ÿSEE ALSO‰6?FtùFtS v€l€”‘€‚Aã÷Ä'€‰€ãþ —€‰€ã— \选€ãf9_€‰‚ÿSbPlane, SoField, SoSField, SoMFPlane= pFt6Gt1²xè^é[6GtjGtôŠtSoSFRotation4ùFtjGt% €€ˆˆ€‚ÿSoSFRotation*6Gt”Gt# €€€‚ÿNAMES-jGtçGt& €Z€”‘€€‚ÿSoSFRotation - field containing a rotation3”GtHt# € €€‚ÿINHERITS FROMn-çGtˆHtA R€Z€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFRotation2 HtºHt& €€€€ ‚ÿSYNOPSIStMˆHt.It' €š€”‘€€‚‚ÿ#include Methods from class SoSFRotation:$°ºHtRKtt ¶€a€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒ‚ƒ‚ƒã¨ƒõ(‰‚ãB-9‰ƒ‚ƒ‚ã ‚û‰ƒ‚ã ‚û‰ƒã ‚û‰‚ƒã ‚û‰‚ƒãC°×>‰‚ÿvoidgetValue(SbVec3f &axis,float &angle) constvoidsetValue(float q0,float q1,float q2,float q3)setValue(float q[4])voidsetValue(const SbVec3f &axis,float angle)static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbRotation &getValue() constconst SbRotation &operator =(const SbRotation &newValue)voidsetValue(const SbRotation &newValue)voidsetValue(const SbRotationd &newValue)š`.ItìKt: D€À€T”A‚S~‚A€ƒã‘Ù»•‰‚ƒã‘Ù»•‰‚ÿintoperator ==(const SoSFRotation &f) constintoperator !=(const SoSFRotation &f) constO RKt;Lt/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!ìKt\Nt‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P;Lt'€to ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContaine\Nt'€tùFtr *getContainer() const4\Nt[€t& €€‚A€‚ÿDESCRIPTIONsD'€t΀t/ .€ˆ€”‘€‚A€€€‚ÿA field containing a single SbRotation (an arbitrary rotation).9 [€t‚t- (€€”‘€‚A€€‚ÿSoSFRotations are written to file as four floating point values separated by whitespace. The 4 values represent an axis of rotation followed by the amount of right-handed rotation about that axis, in radians. For example, a 180 degree rotation about the Y axis is:<΀tC‚t( €(€Ù€‚A€‚ÿ0 1 0 3.14159265+‚tn‚t( €€Ù€‚A€‚ÿ0 C‚tž‚t& €€‚A€‚ÿMETHODSh5n‚tƒt3 6€j€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidgetValue(SbVec3f &axis,float &angle) constY0ž‚t_ƒt) "€`€”‘€‚A€‚ÿGets the value of the field as an axis/angle.NƒtÞƒt1 2€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetValue(float q0,float q1,float q2,float q3)setValue(float q[4])_6_ƒt=„t) "€l€”‘€‚A€‚ÿSet the field to the given quaternion (x, y, z, w).g4Þƒt¤„t3 6€h€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidsetValue(const SbVec3f &axis,float angle)^5=„t…t) "€j€”‘€‚A€‚ÿSet the field to the rotation given by axis/angle.vB¤„tx…t4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH…té…t) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.Z(x…tC†t2 4€P€T”A‚S~‚A€ã ‚û‰ƒ‚ÿconst SbRotation &getValue() constGé…tŠ†t) "€<€”‘€‚A€‚ÿReturns this field's value.¬lC†t6‡t@ P€Ø€T”A‚S~‚A€ã ‚û‰ƒã ‚û‰‚ƒã ‚û‰‚ÿconst SbRotation &operator =(const SbRotation &newValue)voidsetValue(const SbRotation &newValue)P!Š†t†‡t/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.a/6‡tç‡t2 4€^€T”A‚S~‚A€ƒãC°×>‰‚ÿvoidsetValue(const SbRotationd &newValue)4 †‡t‰t* "€€”‘€‚A€‚ÿConvenience method that allows you to specify a field value using a double precision variable. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.š`ç‡tµ‰t: D€À€T”A‚S~‚A€ƒã‘Ù»•‰‚ƒã‘Ù»•‰‚ÿintoperator ==(const SoSFRotation &f) constintoperator !=(const SoSFRotation &f) constP‰t4Št/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 µ‰teŠt& €€‚A€‚ÿSEE ALSO<4ŠtôŠtS v€x€”‘€‚Aã ‚û€‰€ãþ —€‰€ã— \选€ãÏ[ Ñ€‰‚ÿSbRotation, SoField, SoSField, SoMFRotation: eŠt.‹t1 tƒèW„é\.‹t_‹t2ÈtSoSFShort1 ôŠt_‹t% €€ˆˆ€‚ÿSoSFShort*.‹t‰‹t# €€€‚ÿNAMEU/_‹tÞ‹t& €^€”‘€€‚ÿSoSFShort - field containing a short integer3‰‹tŒt# € €€‚ÿINHERITS FROMk*Þ‹t|ŒtA R€T€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFShort2 Œt®Œt& €€€€ ‚ÿSYNOPSISnG|Œtt' €Ž€”‘€€‚‚ÿ#include Methods from class SoSFShort:;ð®ŒtWŽtK d€á€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã)„ƒ4‰‚ƒã)„ƒ4‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constshortgetValue() constshortoperator =(short newValue)voidsetValue(short newValue)intoperator ==(const SoSFShort &f) constintoperator !=(const SoSFShort &f) constO t¦Žt/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!WŽtÓÀt‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueSt¦ŽtÓÀtôŠtring)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P¦Žt’Âto ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4ÓÀtÆÂt& €€‚A€‚ÿDESCRIPTIONX/’ÂtÃt) "€^€”‘€‚A€‚ÿA field containing a short (16-bit) integer.Ï¢ÆÂtíÃt- (€E€”‘€‚A€€‚ÿSoSFShorts are written to file as a single short integer value, represented as decimal, hexadecimal (beginning with '0x') or octal (beginning with '0') value.0 ÃtÄt& €€‚A€‚ÿMETHODSvBíÃt“Ät4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHÄtÅt) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.E“ÄtIÅt, (€2€T”A‚S~‚A€ƒ‚ÿshortgetValue() constGÅtÅt) "€<€”‘€‚A€‚ÿReturns this field's value.oAIÅtÿÅt. ,€‚€T”A‚S~‚A€ƒ‚ƒ‚ÿshortoperator =(short newValue)voidsetValue(short newValue)HÅtGÆt) "€>€”‘€‚A€‚ÿSets this field to newValue.”ZÿÅtÛÆt: D€´€T”A‚S~‚A€ƒã)„ƒ4‰‚ƒã)„ƒ4‰‚ÿintoperator ==(const SoSFShort &f) constintoperator !=(const SoSFShort &f) constPGÆtZÇt/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 ÛÆt‹Çt& €€‚A€‚ÿSEE ALSO§HZÇt2Èt_ Ž€€”‘€‚Aãþ —€‰€ã— \选€ã³qÑ_€‰€ãÌÒ倉€ãw?2€‰‚ÿSoField, SoSField, SoMFShort, SoSFUShort, SoSFInt32; ‹ÇtmÈt1I^é¿ê]mÈtŸÈtÃuSoSFString2 2ÈtŸÈt% €€ˆˆ€‚ÿSoSFString*mÈtÉÈt# €€€‚ÿNAMEO)ŸÈtÉt& €R€”‘€€‚ÿSoSFString - field containing a string3ÉÈtKÉt# € €€‚ÿINHERITS FROMl+Ét·ÉtA R€V€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFString2 KÉtéÉt& €€€€ ‚ÿSYNOPSISpI·ÉtYÊt' €’€”‘€€‚‚ÿ#include Methods from class SoSFString:§BéÉtÌte ˜€…€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒ‚ãXíʉƒ‚ãXíʉƒãXíʉ‚ƒãXíʉ‚ƒãü”ŒÔ‰‚ƒãü”ŒÔ‰‚ÿsetValue(const char *string)static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbString &getValue() constconst SbString &operator =(const SbString &newValue)voidsetValue(const SbString &newValue)intoperator ==(const SoSFString &f) constintoperator !=(const SoSFString &f) constO YÊtOÌt/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!ÌtpÎt‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿POÌt;uo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) copÎt;u2ÈtnstSoFieldContainer *getContainer() const4pÎtou& €€‚A€‚ÿDESCRIPTIONšq;u u) "€â€”‘€‚A€‚ÿA field containing an ASCII string (sequence of characters). Open Inventor does not support non-ASCII strings._2ouhu- (€e€”‘€‚A€€‚ÿSoSFStrings are written to file as a sequence of ASCII characters in double quotes (optional if the string doesn't contain any whitespace). Any characters (including newlines) may appear within the quotes. To include a double quote character within the string, precede it with a backslash. For example:2 ušu( €€Ù€‚A€‚ÿTesting<huÖu( €(€Ù€‚A€‚ÿ"One, Two, Three"Gšuu( €>€Ù€‚A€‚ÿ"He said, \"Immel did it!\""+ÖuHu( €€Ù€‚A€‚ÿBuŠu) "€2€”‘€‚A€‚ÿare all valid strings.0 Huºu& €€‚A€‚ÿMETHODSL Šuu, (€@€T”A‚S~‚A€ƒ‚ÿsetValue(const char *string)pGºuvu) "€Ž€”‘€‚A€‚ÿConvenience method to set the field's value given a character array.vBuìu4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHvu]u) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.X&ìuµu2 4€L€T”A‚S~‚A€ãXíʉƒ‚ÿconst SbString &getValue() constG]uüu) "€<€”‘€‚A€‚ÿReturns this field's value.¦fµu¢u@ P€Ì€T”A‚S~‚A€ãXíʉƒãXíʉ‚ƒãXíʉ‚ÿconst SbString &operator =(const SbString &newValue)voidsetValue(const SbString &newValue)P!üuòu/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.–\¢uˆu: D€¸€T”A‚S~‚A€ƒãü”ŒÔ‰‚ƒãü”ŒÔ‰‚ÿintoperator ==(const SoSFString &f) constintoperator !=(const SoSFString &f) constPòuu/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 ˆu8u& €€‚A€‚ÿSEE ALSO‹8uÃuS v€p€”‘€‚AãXíÊ€‰€ãþ —€‰€ã— \选€ã*{£€‰‚ÿSbString, SoField, SoSField, SoMFString98uüu1é W„é?ƒê^üu, u‹FuSoSFTime0 Ãu, u% €€ˆˆ€‚ÿSoSFTime*üuV u# €€€‚ÿNAMEV*, u¬ u, (€T€”‘€€€€‚ÿSoSFTime - field containing an SbTime7V uã u& €"€€€ ‚ÿINHERITS FROMj)¬ uM uA R€R€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFTime2 ã u u& €€€€ ‚ÿSYNOPSISlEM uë u' €Š€”‘€€‚‚ÿ#include Methods from class SoSFTime:{ uf uc ”€1€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ã4a†6‰ƒ‚ã4a†6‰ƒã4a†6‰‚ƒã4a†6‰‚ƒãøi鉂ƒãøi鉂ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbTime &getValue() constconst SbTime &operator =(const SbTime &newValue)voidsetValue(const SbTime &newValue)intoperator ==(const SoSFTime &f) constintoperator !=(const SoSFTime &f) constO ë uµ u/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!f uÖu‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿Pµ u¡@uo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnectionÖu¡@uÃu(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4ÖuÕ@u& €€‚A€‚ÿDESCRIPTION]4¡@u2Au) "€h€”‘€‚A€‚ÿA single-valued field that contains a time value.ì¿Õ@uBu- (€€”‘€‚A€€‚ÿSoSFTimes are written to file as a double-precision floating point value representing the length of time in seconds. Absolute times are measured relative to 00:00:00 GMT, January 1, 1970.0 2AuNBu& €€‚A€‚ÿMETHODSvBBuÄBu4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHNBu5Cu) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.V$ÄBu‹Cu2 4€H€T”A‚S~‚A€ã4a†6‰ƒ‚ÿconst SbTime &getValue() constG5CuÒCu) "€<€”‘€‚A€‚ÿReturns this field's value. `‹CurDu@ P€À€T”A‚S~‚A€ã4a†6‰ƒã4a†6‰‚ƒã4a†6‰‚ÿconst SbTime &operator =(const SbTime &newValue)voidsetValue(const SbTime &newValue)P!ÒCuÂDu/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.’XrDuTEu: D€°€T”A‚S~‚A€ƒãøi鉂ƒãøi鉂ÿintoperator ==(const SoSFTime &f) constintoperator !=(const SoSFTime &f) constPÂDuÓEu/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 TEuFu& €€‚A€‚ÿSEE ALSO‡4ÓEu‹FuS v€h€”‘€‚Aã4a†6€‰€ãþ —€‰€ã— \选€ã–{Ö´€‰‚ÿSbTime, SoField, SoSField, SoMFTime< FuÇFu1ÿ¿ê2ë_ÇFuúFu …uSoSFTrigger3‹FuúFu% €€ˆˆ€‚ÿSoSFTrigger*ÇFu$Gu# €€€‚ÿNAMEkEúFuGu& €Š€”‘€€‚ÿSoSFTrigger - field used to trigger engines or connection networks3$GuÂGu# € €€‚ÿINHERITS FROMm,Gu/HuA R€X€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFTrigger2 ÂGuaHu& €€€€ ‚ÿSYNOPSISrK/HuÓHu' €–€”‘€€‚‚ÿ#include Methods from class SoSFTrigger:¼~aHuIu> L€ü€T”A‚S~‚A€ƒ‚ƒ‚ƒã%牂ƒã%牂ÿvoidsetValue()voidgetValue()intoperator ==(const SoSFTrigger &t) constintoperator !=(const SoSFTrigger &t) constP!ÓHußIu/ .€B€”‘€‚A€ã— \鉂ÿMethods from class SoSField:U#Iu4Ju2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()O ßIuƒJu/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:4Ju¡Lu‘ ð€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SoTypegetTypeId() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constívƒJuŽNuw ¼€í€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolisConnectedFromField() constSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4¡LuÂNu& €€‚A€‚ÿDESCRIPTIONýÓŽNu¿Ou* "€§€”‘€‚A€‚ÿThis class can be used to start or to synchronize a network of field connections. It is the "null" field - a field with no values. It is typically used as the "start button" for engines that change over time.< ÂNuu0 .€€”‘€‚A€€€‚ÿTriggers can be ¿Ouu‹Fuconnected from any other type of field, and will notify any engines or nodes they are part of (or any other triggers they are connected to) whenever the value of the field is set (even if it is set to its current value) or the field is touch()'ed.Ï™¿OuÖu6 :€3€”‘€‚A€€€€€‚ÿSince they have no value, SoSFTriggers are not written to file. A node or engine containing an SoSFTrigger field will write only the field's name.0 u‚u& €€‚A€‚ÿMETHODS>ÖuD‚u, (€$€T”A‚S~‚A€ƒ‚ÿvoidsetValue(){L‚u¿‚u/ .€˜€”‘€‚A€€€‚ÿStarts the notification process; this is equivalent to calling touch().>D‚uý‚u, (€$€T”A‚S~‚A€ƒ‚ÿvoidgetValue()jA¿‚ugƒu) "€‚€”‘€‚A€‚ÿForces any connected engines or fields to evaluate themselves.˜^ý‚uÿƒu: D€¼€T”A‚S~‚A€ƒã%牂ƒã%牂ÿintoperator ==(const SoSFTrigger &t) constintoperator !=(const SoSFTrigger &t) constƒZgƒu‚„u) "€´€”‘€‚A€‚ÿAll trigger fields are equal; these methods always return TRUE and FALSE, respectively.1 ÿƒu³„u& €€‚A€‚ÿSEE ALSOV‚„u …u; F€6€”‘€‚AãU×S选€ãóÐÀ´€‰‚ÿSoSFBool, SoMFBool; ³„uD…u1t ?ƒê`ë`D…uv…u“ÂuSoSFUInt322 …uv…u% €€ˆˆ€‚ÿSoSFUInt32*D…u …u# €€€‚ÿNAMEb<v…u†u& €x€”‘€€‚ÿSoSFUInt32 - field containing an unsigned int32_t integer3 …u5†u# € €€‚ÿINHERITS FROMl+†u¡†uA R€V€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFUInt322 5†uÓ†u& €€€€ ‚ÿSYNOPSISpI¡†uC‡u' €’€”‘€€‚‚ÿ#include Methods from class SoSFUInt32:aÓ†u¤ˆuE X€9€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã`‡Ð㉂ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constint32_t uint32_tgetValue() constint32_t uint32_toperator =(int32_t uint32_t newValue)voidsetValue(int32_t uint32_t newValue)intoperator ==(const SoSFUInt32 &f) constintoperator !=(const SoSFUInt32 &f) constO C‡uóˆu/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!¤ˆu‹u‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PóˆuÓŒuo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4‹uu& €€‚A€‚ÿDESCRIPTION–mÓŒuu) "€Ú€”‘€‚A€‚ÿA single-value field containing an unsigned 32-bit integer, representing a number from 0 to 4,294,967,295.žru;Žu, (€ä€”‘€‚A€€‚ÿSoSFUInt32s are written to file as a single uint32_t (32-bit) integer in decimal, hexadecimal or octal format.0 ukŽu& €€‚A€‚ÿMETHODSvB;ŽuáŽu4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHkŽuRu) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.P$áŽu¢u, (€H€T”A‚S~‚A€ƒ‚ÿint32_t uint32_tgetValue() constGRu Àu) "€<€”‘€‚A€‚ÿReturns this field's value.¢u Àu …ub¢uœÀu. ,€Ä€T”A‚S~‚A€ƒ‚ƒ‚ÿint32_t uint32_toperator =(int32_t uint32_t newValue)voidsetValue(int32_t uint32_t newValue)H ÀuäÀu) "€>€”‘€‚A€‚ÿSets this field to newValue.–\œÀuzÁu: D€¸€T”A‚S~‚A€ƒã`‡Ð㉂ƒã`‡Ð㉂ÿintoperator ==(const SoSFUInt32 &f) constintoperator !=(const SoSFUInt32 &f) constwNäÀuñÁu) "€œ€”‘€‚A€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 zÁu"Âu& €€‚A€‚ÿSEE ALSOq*ñÁu“ÂuG ^€T€”‘€‚Aãþ —€‰€ã— \选€ãŽmç)€‰‚ÿSoField, SoSField, SoMFUInt32: "ÂuÍÂu1X2뾆ëaÍÂuþÂu%ËuSoSFULong1 “ÂuþÂu% €€ˆˆ€‚ÿSoSFULong*ÍÂu(Ãu# €€€‚ÿNAMEK%þÂusÃu& €J€”‘€€‚ÿSoSFULong - synonym for SoSFUInt323(Ãu¦Ãu# € €€‚ÿINHERITS FROMk*sÃuÄuA R€T€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFULong2 ¦ÃuCÄu& €€€€ ‚ÿSYNOPSISvIÄu¹Äu- *€’€”‘€€‚ã— \鉂ÿ#include Methods from class SoSField:U#CÄuÅu2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()O ¹Äu]Åu/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:I²Åu¦Çu— ü€e€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãþ —‰‚ƒãþ —‰‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SoTypegetTypeId() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)intoperator ==(const SoField &f) constintoperator !=(const SoField &f) constvoidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)&¥]ÅuÌÉu ЀK€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿvoiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() constSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4¦ÇuÊu& €€‚A€‚ÿDESCRIPTION%ïÌÉu%Ëu6 :€ß€”‘€‚A€€€€€‚ÿThis class is obsolete, and is provided for backwards compatibility only. You should use the new SoSFUInt32 class instead. If you compile your code -DIV_STRICT, #including the SoSFULong.h header file will cause a compile-time error.; Êu`Ëu14`ë[ìb`Ëu’Ëu¢vSoSFUShort2 %Ëu’Ëu% €€ˆˆ€‚ÿSoSFUShort*`Ëu¼Ëu# €€€‚ÿNAME`:’ËuÌu& €t€”‘€€‚ÿSoSFUShort - field containing an unsigned short integer3¼ËuOÌu# € €€‚ÿINHERITS FROMl+Ìu»ÌuA R€V€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFUShort2 OÌuíÌu& €€€€ ‚ÿSYNOPSISpI»Ìu]Íu' €’€”‘€€‚‚ÿ#include Methods from class SoSFUShort:y.íÌuÖÎuK d€]€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒãÌÒ剂ƒãÌÒ剂ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constshort unsigned shortgetValue() constshort unsigned shortoperator =(short unsigned short newValue)voidsetValue(short unsigned short newValue)intoperator ==(const SoSFUShort &f) constintoperator !=(const SoSFUShort &f) constO ]Íu%Ïu/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!ÖÎuRv‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDe%ÏuRv%Ëufault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P%Ïuvo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4RvEv& €€‚A€‚ÿDESCRIPTIONe<vªv) "€x€”‘€‚A€‚ÿA single-value field containing a short (16-bit) integer.£wEvMv, (€î€”‘€‚A€€‚ÿSoSFUShorts are written to file in decimal, hexadecimal (beginning with '0x') or octal (beginning with '0') values.0 ªv}v& €€‚A€‚ÿMETHODSvBMvóv4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH}vdv) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.T(óv¸v, (€P€T”A‚S~‚A€ƒ‚ÿshort unsigned shortgetValue() constGdvÿv) "€<€”‘€‚A€‚ÿReturns this field's value.œn¸v›v. ,€Ü€T”A‚S~‚A€ƒ‚ƒ‚ÿshort unsigned shortoperator =(short unsigned short newValue)voidsetValue(short unsigned short newValue)P!ÿvëv/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.–\›vv: D€¸€T”A‚S~‚A€ƒãÌÒ剂ƒãÌÒ剂ÿintoperator ==(const SoSFUShort &f) constintoperator !=(const SoSFUShort &f) constPëvv/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 v1v& €€‚A€‚ÿSEE ALSOq*v¢vG ^€T€”‘€‚Aãþ —€‰€ã— \选€ã@²é+€‰‚ÿSoField, SoSField, SoMFUShort: 1vÜv1¾†ël„ìcÜv vÄHvSoSFVec2f1 ¢v v% €€ˆˆ€‚ÿSoSFVec2f*Üv7 v# €€€‚ÿNAME^8 v• v& €p€”‘€€‚ÿSoSFVec2f - field containing a two-dimensional vector37 vÈ v# € €€‚ÿINHERITS FROMk*• v3 vA R€T€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFVec2f2 È ve v& €€€€ ‚ÿSYNOPSISnG3 vÓ v' €Ž€”‘€€‚‚ÿ#include Methods from class SoSFVec2f:øˆe vË vp ®€€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ƒ‚ã}ƒõ(‰ƒ‚ã}ƒõ(‰ƒã}ƒõ(‰‚ƒã}ƒõ(‰‚ƒã{ƒõ(‰‚ƒãi5‰‚ƒãi5‰‚ÿvoidsetValue(float x,float y)voidsetValue(const float xy[2])static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbVec2f &getValue() constconst SbVec2f &operator =(const SbVec2f &newValue)voidsetValue(const SbVec2f &newValue)voidsetValue(const SbVec2d &newValue)intoperator ==(const SoSFVec2f &f) constintoperator !=(const SoSFVec2f &f) constO Ó v v/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!Ë v;v‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P vAvo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEn;vAv¢vgine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4;v:Av& €€‚A€‚ÿDESCRIPTIONV-AvAv) "€Z€”‘€‚A€‚ÿField containing a two-dimensional vector.Š^:AvBv, (€¼€”‘€‚A€€‚ÿSoSFVec2fs are written to file as a pair of floating point values separated by whitespace.0 AvJBv& €€‚A€‚ÿMETHODSrCBv¼Bv/ .€†€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetValue(float x,float y)voidsetValue(const float xy[2])N%JBv Cv) "€J€”‘€‚A€‚ÿSets the field to the given value.vB¼Bv€Cv4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH CvñCv) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.W%€CvHDv2 4€J€T”A‚S~‚A€ã}ƒõ(‰ƒ‚ÿconst SbVec2f &getValue() constGñCvDv) "€<€”‘€‚A€‚ÿReturns this field's value.£cHDv2Ev@ P€Æ€T”A‚S~‚A€ã}ƒõ(‰ƒã}ƒõ(‰‚ƒã}ƒõ(‰‚ÿconst SbVec2f &operator =(const SbVec2f &newValue)voidsetValue(const SbVec2f &newValue)P!Dv‚Ev/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.Z(2EvÜEv2 4€P€T”A‚S~‚A€ƒã{ƒõ(‰‚ÿvoidsetValue(const SbVec2d &vec2d)4 ‚EvGv* "€€”‘€‚A€‚ÿConvenience method that allows you to specify a field value using a double precision variable. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.”ZÜEv¤Gv: D€´€T”A‚S~‚A€ƒãi5‰‚ƒãi5‰‚ÿintoperator ==(const SoSFVec2f &f) constintoperator !=(const SoSFVec2f &f) constPGv#Hv/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 ¤GvTHv& €€‚A€‚ÿSEE ALSOp)#HvÄHvG ^€R€”‘€‚Aãþ —€‰€ã— \选€ãóñi`€‰‚ÿSoField, SoSField, SoMFVec2f: THvþHv1ä[ìtídþHv/Iv‰vSoSFVec3f1 ÄHv/Iv% €€ˆˆ€‚ÿSoSFVec3f*þHvYIv# €€€‚ÿNAME`:/Iv¹Iv& €t€”‘€€‚ÿSoSFVec3f - field containing a three-dimensional vector3YIvìIv# € €€‚ÿINHERITS FROMk*¹IvWJvA R€T€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFVec3f2 ìIv‰Jv& €€€€ ‚ÿSYNOPSISnGWJv÷Jv' €Ž€”‘€€‚‚ÿ#include Methods from class SoSFVec3f: ”‰JvMvw ¼€)€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰‚ƒã¦ƒõ(‰‚ƒã”5‰€‚€ƒã”5‰‚ÿvoidsetValue(float x,float y,float z)voidsetValue(const float xyz[3])static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbVec3f &getValue() constconst SbVec3f &operator =(const SbVec3f &newValue)voidsetValue(const SbVec3f &newValue)voidsetValue(const SbVec3d &newValue)intoperator ==(const SoSFVec3f &f) constintoperator !=(const SoSFVec3f &f) constO ÷JvQMv/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!MvrOv‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿PQMv=vo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SorOv=vÄHvField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4rOvqv& €€‚A€‚ÿDESCRIPTIONX/=vÉv) "€^€”‘€‚A€‚ÿField containing a three-dimensional vector.†ZqvO‚v, (€´€”‘€‚A€€‚ÿSoSFVec3fs are written to file as three floating point values separated by whitespace.0 Év‚v& €€‚A€‚ÿMETHODS}MO‚vü‚v0 0€š€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetValue(float x,float y,float z)voidsetValue(const float xyz[3])N%‚vJƒv) "€J€”‘€‚A€‚ÿSets the field to the given value.vBü‚vÀƒv4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHJƒv1„v) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.W%Àƒvˆ„v2 4€J€T”A‚S~‚A€㨃õ(‰ƒ‚ÿconst SbVec3f &getValue() constG1„vÏ„v) "€<€”‘€‚A€‚ÿReturns this field's value.£cˆ„vr…v@ P€Æ€T”A‚S~‚A€㨃õ(‰ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰‚ÿconst SbVec3f &operator =(const SbVec3f &newValue)voidsetValue(const SbVec3f &newValue)P!Ï„vÂ…v/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.Z(r…v†v2 4€P€T”A‚S~‚A€ƒã¦ƒõ(‰‚ÿvoidsetValue(const SbVec3d &vec3d)4 Â…vP‡v* "€€”‘€‚A€‚ÿConvenience method that allows you to specify a field value using a double precision variable. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.”Z†vä‡v: D€´€T”A‚S~‚A€ƒã”5‰‚ƒã”5‰‚ÿintoperator ==(const SoSFVec3f &f) constintoperator !=(const SoSFVec3f &f) constPP‡vcˆv/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 ä‡v”ˆv& €€‚A€‚ÿSEE ALSOp)cˆv‰vG ^€R€”‘€‚Aãþ —€‰€ã— \选€ãòi`€‰‚ÿSoField, SoSField, SoMFVec3f: ”ˆv>‰v1ol„ìWýe>‰vo‰viÉvSoSFVec4f1 ‰vo‰v% €€ˆˆ€‚ÿSoSFVec4f*>‰v™‰v# €€€‚ÿNAMElFo‰vŠv& €Œ€”‘€€‚ÿSoSFVec4f - field containing a homogeneous three-dimensional vector3™‰v8Šv# € €€‚ÿINHERITS FROMk*Šv£ŠvA R€T€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFVec4f2 8ŠvÕŠv& €€€€ ‚ÿSYNOPSISnG£ŠvC‹v' €Ž€”‘€€‚‚ÿ#include Methods from class SoSFVec4f:œÕŠvQvr ²€9€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ƒ‚ãÓƒõ(‰ƒ‚ãÓƒõ(‰ƒãÓƒõ(‰‚ƒãÓƒõ(‰‚ƒãуõ(‰‚ƒã¿5‰‚ƒã¿5‰‚ÿvoidsetValue(float x,float y,float z,float w)voidsetValue(const float xyzw[4])static SoTypegetClassTypeId()virtual voidgetTypeId() constconst SbVec4f &getValue() constconst SbVec4f &operator =(const SbVec4f &newValue)voidsetValue(const SbVec4f &newValue)voidsetValue(const SbVec4d &newValue)intoperator ==(const SoSFVec4f &f) constintoperator !=(const SoSFVec4f &f) constO C‹v v/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!QvÁv‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P vŒÁvo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒÁvŒÁv‰v‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4ÁvÀÁv& €€‚A€‚ÿDESCRIPTIONd;ŒÁv$Âv) "€v€”‘€‚A€‚ÿField containing a homogeneous three-dimensional vector.…YÀÁv©Âv, (€²€”‘€‚A€€‚ÿSoSFVec4fs are written to file as four floating point values separated by whitespace.0 $ÂvÙÂv& €€‚A€‚ÿMETHODSˆW©ÂvaÃv1 2€®€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetValue(float x,float y,float z,float w)voidsetValue(const float xyzw[4])N%ÙÂv¯Ãv) "€J€”‘€‚A€‚ÿSets the field to the given value.vBaÃv%Äv4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqH¯Ãv–Äv) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.W%%ÄvíÄv2 4€J€T”A‚S~‚A€ãÓƒõ(‰ƒ‚ÿconst SbVec4f &getValue() constG–Äv4Åv) "€<€”‘€‚A€‚ÿReturns this field's value.£cíÄv×Åv@ P€Æ€T”A‚S~‚A€ãÓƒõ(‰ƒãÓƒõ(‰‚ƒãÓƒõ(‰‚ÿconst SbVec4f &operator =(const SbVec4f &newValue)voidsetValue(const SbVec4f &newValue)P!4Åv'Æv/ .€B€”‘€‚A€€€‚ÿSets this field to newValue.Z(×ÅvÆv2 4€P€T”A‚S~‚A€ƒãуõ(‰‚ÿvoidsetValue(const SbVec4d &vec4d)4 'ÆvµÇv* "€€”‘€‚A€‚ÿConvenience method that allows you to specify a field value using a double precision variable. Note that Open Inventor fields still store only single precision values, not double precision values. The specified value is converted to single precision, then stored.”ZÆvIÈv: D€´€T”A‚S~‚A€ƒã¿5‰‚ƒã¿5‰‚ÿintoperator ==(const SoSFVec4f &f) constintoperator !=(const SoSFVec4f &f) constPµÇvÈÈv/ .€ €”‘€‚A€€€‚ÿReturns TRUE if f is of the same type and has the same value as this field.1 IÈvùÈv& €€‚A€‚ÿSEE ALSOp)ÈÈviÉvG ^€R€”‘€‚Aãþ —€‰€ã— \选€ãIòi`€‰‚ÿSoField, SoSField, SoMFVec4f9ùÈv¢Év1Þ ›ã’‚ãf¢ÉvÒÉv*wSoSField0 iÉvÒÉv% €€ˆˆ€‚ÿSoSField*¢ÉvüÉv# €€€‚ÿNAMEc=ÒÉv_Êv& €z€”‘€€‚ÿSoSField - abstract base class for all single-value fields3üÉv’Êv# € €€‚ÿINHERITS FROMO_ÊváÊv5 :€4€”‘€ãþ —€‰€€€‚ÿSoField > SoSField2 ’ÊvËv& €€€€ ‚ÿSYNOPSISkDáÊv~Ëv' €ˆ€”‘€€‚‚ÿ#include Methods from class SoSField:U#ËvÓËv2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()O ~Ëv"Ìv/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:I²ÓËvkÎv— ü€e€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãþ —‰‚ƒãþ —‰‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SoTypegetTypeId() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)intoperator ==(const SoField &f) constintoperator !=(const SoField &f) constvoidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)&¥"Ìvw ЀK€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿvoiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() constSbBoolgetConnectedField(SoField *&writingField) constSbBoolisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbkÎvwiÉvBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4kÎvÑw& €€‚A€‚ÿDESCRIPTION[wnwB R€·€”‘€‚A€€€€€€€€€‚ÿEach class derived from SoSField begins with an SoSF prefix and contains one value of a particular type. Each has setValue() and getValue() methods that are used to change or access this value. In addition, some field classes have extra convenience routines that allow values to be set or retrieved in other related formats (see below).î¾Ñw\w0 .€}€”‘€‚A€€€‚ÿIn addition to setValue(), all single-value fields overload the "=" assignment operator to set the field value from the correct datatype or from another field instance of the same type.¸Žnww* "€€”‘€‚A€‚ÿThe value of a single-value field is written to file in a format dependent on the field type; see the subclass reference pages for details.¯…\wÃw* "€ €”‘€‚A€‚ÿA field that is ignored has a tilde (~) either in place of the value (if the actual value is the default) or after it (otherwise).0 wów& €€‚A€‚ÿMETHODSU#ÃwHw2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()\3ów¤w) "€f€”‘€‚A€‚ÿReturn the type identifier for this field class.1 HwÕw& €€‚A€‚ÿSEE ALSOU¤w*w; F€4€”‘€‚Aãþ —€‰€ã5É´€‰‚ÿSoField, SoMField8Õwbw1Sàƒîgbw‘w¶FwSoScale/ *w‘w% €€ˆˆ€‚ÿSoScale*bw»w# €€€‚ÿNAME[5‘ww& €j€”‘€€‚ÿSoScale - node representing a 3D geometric scaling3»wIw# € €€‚ÿINHERITS FROM¬SwõwY ‚€¦€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoScale2 Iw'w& €€€€ ‚ÿSYNOPSIShAõww' €‚€”‘€€‚‚ÿ#include Fields from class SoScale:L'wÛw2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorGw" w) "€<€”‘€‚A€‚ÿMethods from class SoScale:b.Ûw„ w4 8€\€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoScale()static SoTypegetClassTypeId()N" wÒ w/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|„ wN wn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ò w¦ w/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØN w w 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¦ w“w@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N wáw/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ“w$@wY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual Sáw$@w*wbNamegetName() const4áwX@w& €€‚A€‚ÿDESCRIPTION¾”$@wAw* "€)€”‘€‚A€‚ÿThis node defines a 3D scaling about the origin. If the components of the scaling vector are not all the same, this produces a non-uniform scale./ X@wEAw& €€‚A€‚ÿFIELDSLAw‘Aw2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactor‘hEAw"Bw) "€Ð€”‘€‚A€‚ÿThe scaling factors in the x, y, and z dimensions. Non-positive values may cause undesirable results.0 ‘AwRBw& €€‚A€‚ÿMETHODS9 "Bw‹Bw, (€€T”A‚S~‚A€ƒ‚ÿSoScale()W.RBwâBw) "€\€”‘€‚A€‚ÿCreates a scale node with default settings.U#‹Bw7Cw2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*âBwŠCw) "€T€”‘€‚A€‚ÿReturns type identifier for this class.87CwÂCw& €$€‚A€‚ÿACTION BEHAVIOR›WŠCw]DwD X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActionsGÂCwÐDw, (€Ž€”‘€‚A€€‚ÿAccumulates scaling transformation into the current transformation.I]DwEw2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixAction`4ÐDwyEw, (€h€”‘€‚A€€‚ÿReturns the matrix corresponding to the scaling.<EwµEw& €,€‚A€‚ÿFILE FORMAT/DEFAULT4 yEwéEw* $€€P„7|‚€‚ÿScale {DµEw-Fw- *€.€P„|‚€ƒ‚‚‚ÿscaleFactor1 1 1}1 éEw^Fw& €€‚€‚ÿSEE ALSOX-Fw¶Fw; F€:€”‘€‚ã¼ýÓ€‰€ã­µš€‰‚ÿSoTransform, SoUnits@^FwöFw1î/¿î,ðhöFw-GwóxSoScale1Dragger7¶Fw-Gw% €$€ˆˆ€‚ÿSoScale1Dragger*öFwWGw# €€€‚ÿNAME{U-GwÒGw& €ª€”‘€€‚ÿSoScale1Dragger - object you can scale in one dimension by dragging with the mouse3WGwHw# € €€‚ÿINHERITS FROMì{ÒGwñHwq ²€ö€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoScale1Dragger2 Hw#Iw& €€€€ ‚ÿSYNOPSIS{TñHwžIw' €¨€”‘€€‚‚ÿ#include Fields from class SoScale1Dragger:L#IwêIw2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorP!žIw:Jw/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:HêIw‚Jw2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(:JwÙJw/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³i‚JwŒKwJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO ÙJwÛKw/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%ŒKw2Lw2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListW(ÛKw‰Lw/ .€P€”‘€‚A€ãY#扂ÿMethods from class SoScale1Dragger:³w2Lw€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|û„wņwn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)I…w‡w/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®ņwP‰w… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH‡w؉w@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NP‰w&Šw/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ؉w]‹wY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!&Šw­‹w/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)]‹wŒw, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+­‹wYŒw, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4ŒwŒw& €€‚A€‚ÿDESCRIPTIONN!YŒwÛw- (€C€”‘€‚A€€‚ÿSoScale1Dragger is a simple dragger that scales in one dimension when dragged with the mouse. It moves along the x axis of its local space, as determined by its location in the scene graph. Transformation nodes placed before it will affect both the dragger and the direction of motion..þŒw w0 .€ý€”‘€‚A€€€‚ÿThis node has a scaleFactor field which always reflects its size in local space. If you set the field, the dragger will change accordingly. You can also connect fields of other nodes or engines from this one to make them follow the dragger's motion.¡`ÛwªwA R€À€”‘€‚A€€€€€€€€€‚ÿThis dragger contains four parts, scaler, scalerActive, feedback, and feedbackActive.Ö w¼Àw0 .€­€”‘€‚A€€€‚ÿEach of these is set by default from ªw¼Àw¶Fwa resource described in the Dragger Resources section of the online reference page for this class. You can change the parts in any instance of this dragger using setPart().LªwÂw6 :€-€”‘€‚A€€€€€‚ÿYou can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/scale1Dragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ ¼Àw7Âw& €€‚A€‚ÿFIELDSLÂwƒÂw2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorO&7ÂwÒÂw) "€L€”‘€‚A€‚ÿScale factor affecting the dragger.0 ƒÂwÃw& €€‚A€‚ÿMETHODSAÒÂwCÃw, (€*€T”A‚S~‚A€ƒ‚ÿSoScale1Dragger()8Ãw{Ãw) "€€”‘€‚A€‚ÿConstructor.uCCÃwðÃw2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/{ÃwNÄw/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#ðÃw£Äw2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*NÄwöÄw) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6£Äw,Åw& € €‚A€‚ÿCATALOG PARTS;öÄwgÅw- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜,ÅwÿÅw~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/gÅw¾Æw#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2ÿÅw€Çw#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes¶&¾Æw6Èw#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿscalerSeparator--yes¼,€ÇwòÈw#ð€XÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€<€ÿ€>€€€‚ÿ€J€€€‚ÿÿÿscalerActiveSeparator--yes¸(6ÈwªÉw#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿfeedbackSeparator--yes¾.òÈwhÊw#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿfeedbackActiveSeparator--yes,ªÉw”Êw' € €€‚€‚ÿe7hÊwùÊw. ,€n€”‚±€ƒ€€ ‚ÿExtra Information for List Parts from Above Table’1”Êw‹Ëwa#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8ùÊw$Ìwa#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=‹ËwaÌw' €,€€‚€‚ÿDRAGGER RESOURCES²$Ìw{Îwh ž€e€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿResource:scale1ScalerPart:scalerAppearance:white line, small cubes endsDescription:picking this initiates scalingResource:scale1ScalerActivePart:scalerActiveAppearance:yellow version of scaler, adds wireframe yellow cubeDescription:displayed during scaling instead of the scalerResource:scale1FeedbackPart:feedbackAppearance:thin purple 3-D crosshairDescription:shows center of scale when stillè¨aÌwcÏw@ N€Q€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ÿResource:scale1FeedbackActivePart:feedbackActiveAppearance:thin, slightly brighter purple 3-D crosshairDescription:shows center of scale while in motion<{ÎwŸÏw& €,€‚Í€‚ÿFILE FORMAT/DEFAULT>cÏwÝÏw+ &€&€P„7|‚€ƒ‚ÿScale1Dragger {c"ŸÏwLxA P€E€P„|ÝÏwLx¶Fw‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEscaleFactor1 1 1callbackListNULLscalerscalerActivefeedbackfeedbackActive},ÝÏwxx) "€€”‘€‚€‚ÿ1 Lx©x& €€‚€‚ÿSEE ALSOJxxóx, &‚=€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2Dragger@©x3x1i.ƒî,‚ñi3xjx³ÃxSoScale2Dragger7óxjx% €$€ˆˆ€‚ÿSoScale2Dragger*3x”x# €€€‚ÿNAME|Vjxx& €¬€”‘€€‚ÿSoScale2Dragger - object you can scale in two dimensions by dragging with the mouse3”xCx# € €€‚ÿINHERITS FROMì{x/xq ²€ö€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoScale2Dragger2 Cxax& €€€€ ‚ÿSYNOPSIS{T/xÜx' €¨€”‘€€‚‚ÿ#include Fields from class SoScale2Dragger:Lax(x2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorP!Üxxx/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:H(xÀx2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(xx x/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³iÀxÊ xJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO  x x/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%Ê xp x2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListO& x¿ x) "€L€”‘€‚A€‚ÿMethods from class SoScale2Dragger:³wp xr x< H€î€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoScale2Dragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"¿ xà x/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:Kr xxC T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨Ã xñx; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)xIx/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”UñxÝx? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"Ix:@x/ .€D€”‘€‚AÝx:@xóx€ãib‰‚ÿMethods from class SoBaseKit:@°ÝxzBx î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}:@x9CxB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)NzBx‡Cx/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|9CxExn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)‡Cx[Ex/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®ExŽGx… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH[ExHx@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NŽGxdHx/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞHx›IxY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!dHxëIx/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)›Ix@Jx, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+ëIx—Jx, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4@JxËJx& €€‚A€‚ÿDESCRIPTIONh;—Jx3Lx- (€w€”‘€‚A€€‚ÿSoScale2Dragger is a simple dragger that scales freely and independently in two dimensions when dragged with the mouse. It moves within the x-y plane of its local space, as determined by its location in the scene graph. Transformation nodes placed before it will affect both the dragger and the plane of motion..þËJxaMx0 .€ý€”‘€‚A€€€‚ÿThis node has a scaleFactor field which always reflects its size in local space. If you set the field, the dragger will change accordingly. You can also connect fields of other nodes or engines from this one to make them follow the dragger's motion.¡`3LxNxA R€À€”‘€‚A€€€€€€€€€‚ÿThis dragger contains four parts, scaler, scalerActive, feedback, and feedbackActive.ÖaMxOx0 .€­€”‘€‚A€€€‚ÿEach of these is set by default from a resource described in the Dragger Resources section of the online reference page for this class. You can change the parts in any instance of this dragger using setPart().LNx`€x6 :€-€”‘€‚A€€€€€‚ÿYou can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/scale2Dragger.iv into your own directory, editing the file, and thenOx`€xóx setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ Ox€x& €€‚A€‚ÿFIELDSL`€xÛ€x2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorO&€x*x) "€L€”‘€‚A€‚ÿScale factor affecting the dragger.0 Û€xZx& €€‚A€‚ÿMETHODSA*x›x, (€*€T”A‚S~‚A€ƒ‚ÿSoScale2Dragger()8ZxÓx) "€€”‘€‚A€‚ÿConstructor.uC›xH‚x2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/Óx¦‚x/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#H‚xû‚x2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¦‚xNƒx) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6û‚x„ƒx& € €‚A€‚ÿCATALOG PARTS;Nƒx¿ƒx- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜„ƒxW„x~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/¿ƒx…x#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2W„xØ…x#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes¶&…xŽ†x#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿscalerSeparator--yes¼,Ø…xJ‡x#ð€XÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€<€ÿ€>€€€‚ÿ€J€€€‚ÿÿÿscalerActiveSeparator--yes¸(Ž†xˆx#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿfeedbackSeparator--yes¾.J‡xÀˆx#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿfeedbackActiveSeparator--yes,ˆxìˆx' € €€‚€‚ÿe7ÀˆxQ‰x. ,€n€”‚±€ƒ€€ ‚ÿExtra Information for List Parts from Above Table’1ìˆxã‰xa#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8Q‰x|Šxa#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=ã‰x¹Šx' €,€€‚€‚ÿDRAGGER RESOURCES­|ŠxÌŒxf š€[€PÍÇ~‚Í€ ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:scale2ScalerPart:scalerAppearance:white photo-corners at corners of 2-by-2 square in plane of motionDescription:picking this initiates the scalingResource:scale2ScalerActivePart:scalerActiveAppearance:yellow version of scaler, but with an extra yellow boxDescription:displayed instead of scaler while in motionResource:scale2FeedbackPart:feedbackAppearance:thin purple 3-D crosshairÕ¹ŠxâxA P€«€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿDescription:shows center of scale when stillResource:scale2FeedbackActivePart:feedbackActiveAppearance:thin, slightly brighter purple 3-D crosshairDescription:shows center of scale while in motion,ÌŒxŽx) "€€”‘€‚Í€‚ÿ<âxJŽx& €,€‚Í€‚ÿFILE FORMAT/DEFAULT<Žx†Žx* $€$€P„7|‚€‚ÿScale2Dragger {c"JŽx ÀxA P€E€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEscaleFactor1 1 1callbackListNULLscalerscalerActivefeedbackfeedbackActive}†Žx Àxóx,†Žx8Àx) "€€”‘€‚€‚ÿ1 ÀxiÀx& €€‚€‚ÿSEE ALSOJ8Àx³Ãx, &‚=€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2DraggerGiÀxúÃx1<0,ðójúÃx8ÄxÌ‚ySoScale2UniformDragger>³Ãx8Äx% €2€ˆˆ€‚ÿSoScale2UniformDragger*úÃxbÄx# €€€‚ÿNAMEg8ÄxïÄx& €Î€”‘€€‚ÿSoScale2UniformDragger - object you can scale uniformly in two dimensions by dragging with the mouse3bÄx"Åx# € €€‚ÿINHERITS FROMô‚ïÄxÆxr ²€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoScale2UniformDragger2 "ÅxHÆx& €€€€ ‚ÿSYNOPSIS‰bÆxÑÆx' €Ä€”‘€€‚‚ÿ#include Fields from class SoScale2UniformDragger:LHÆxÇx2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorP!ÑÆxmÇx/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:HÇxµÇx2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(mÇx Èx/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³iµÇx¿ÈxJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO ÈxÉx/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%¿ÈxeÉx2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListV-Éx»Éx) "€Z€”‘€‚A€‚ÿMethods from class SoScale2UniformDragger:º~eÉxuÊx< H€ü€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoScale2UniformDragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"»ÉxÆÊx/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:KuÊxÍxC T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨ÆÊxôÍx; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)ÍxLÎx/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”UôÍxàÎx? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"LÎx1Ïx/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:8®àÎxuyŠ â€]€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒ‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual1Ïxuy³Ãx SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}1Ïx4yB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)Nuy‚y/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|4yþyn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)‚yVy/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®þy‰y… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHVyy@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N‰y_y/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þy–yY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!_yæy/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)–y; y, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+æy’ y, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4; yÆ y& €€‚A€‚ÿDESCRIPTION[.’ y! y- (€]€”‘€‚A€€‚ÿSoScale2UniformDragger is a simple dragger that scales uniformly in the x and y dimensions when dragged within the x-y plane with the mouse. The local space is determined by its location in the scene graph. Transformation nodes placed before it will affect both the dragger and the plane of motion..þÆ yO y0 .€ý€”‘€‚A€€€‚ÿThis node has a scaleFactor field which always reflects its size in local space. If you set the field, the dragger will change accordingly. You can also connect fields of other nodes or engines from this one to make them follow the dragger's motion.¡`! yð yA R€À€”‘€‚A€€€€€€€€€‚ÿThis dragger contains four parts, scaler, scalerActive, feedback, and feedbackActive.ÕO yõ y0 .€«€”‘€‚A€€€‚ÿEach of these is set by default from a resource described in the Dragger Resource section of the online reference page for this class. You can change the parts in any instance of this dragger using setPart().Sð yHy6 :€;€”‘€‚A€€€€€‚ÿYou can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/scale2UniformDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ õ ywy& €€‚A€‚ÿFIELDSLHyÃy2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorO&wy@y) "€L€”‘€‚A€‚ÿScale factor affectÃy@y³Ãxing the dragger.0 ÃyN@y& €€‚A€‚ÿMETHODSH@y–@y, (€8€T”A‚S~‚A€ƒ‚ÿSoScale2UniformDragger()8N@yÎ@y) "€€”‘€‚A€‚ÿConstructor.uC–@yCAy2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/Î@y¡Ay/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#CAyöAy2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¡AyIBy) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6öAyBy& € €‚A€‚ÿCATALOG PARTS;IByºBy- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜ByRCy~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/ºByDy#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2RCyÓDy#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes¶&Dy‰Ey#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿscalerSeparator--yes¼,ÓDyEFy#ð€XÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€<€ÿ€>€€€‚ÿ€J€€€‚ÿÿÿscalerActiveSeparator--yes¸(‰EyýFy#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿfeedbackSeparator--yes¾.EFy»Gy#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿfeedbackActiveSeparator--yes,ýFyçGy' € €€‚€‚ÿe7»GyLHy. ,€n€”‚±€ƒ€€ ‚ÿExtra Information for List Parts from Above Table’1çGyÞHya#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8LHywIya#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallbackAÞHy¸Iy* $€.€€‚€€ ‚ÿDRAGGER RESOURCES ®wIyÂKy\ †€]€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿResource:scale2UniformScalerPart:scalerAppearance:white outline of square with photo-corner shapes at vertices. Lies within plane of motionDescription:picking this initiates the scalingResource:scale2UniformScalerActivePart:scalerActiveAppearance:yellow version of scaler, but with an extra yellow surrounding boxDescription:displayed instead of scaler while in motionResource:scale2UniformFeedback`¸Iy"MyL f€)€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ÿPart:feedbackAppearance:thin purple 3-D crosshairDescription:shows center of scale when stillResource:scale2UniformFeedbackActivePart:feedbackActiveAppearance:thin, slightly brighter purple 3-D crosshairDescription:shows center of scale while in motion<ÂKy^My& €,€‚Í€‚ÿFILE FORMAT/DEFAULTC"My¡My* $€2€P„7|‚€‚ÿScale2UniformDragger {>^My OyA P€}€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEscaleFactor1 1 1callbackListNULLscalerscalerActivefeedbackfeedbackActive},¡MyLOy) "€€”‘€‚€‚ÿ1 Oy}Oy& €€‚€‚ÿSEE ALSOCLOyÌ‚y, &‚/€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€}OyÌ‚y³Ãxã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2DraggerF}Oyƒy1Ä',‚ñPôkƒyOƒyÅ zSoScaleUniformDragger=Ì‚yOƒy% €0€ˆˆ€‚ÿSoScaleUniformDragger*ƒyyƒy# €€€‚ÿNAME€ZOƒyùƒy& €´€”‘€€‚ÿSoScaleUniformDragger - object you can scale uniformly in 3D by dragging with the mouse3yƒy,„y# € €€‚ÿINHERITS FROMóùƒy…yr ²€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoScaleUniformDragger2 ,„yQ…y& €€€€ ‚ÿSYNOPSIS{T…yÌ…y' €¨€”‘€€‚‚ÿ#include Fields from class SoDragger:HQ…y†y2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(Ì…yk†y/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³i†y‡yJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO k†ym‡y/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%‡yćy2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListQ"m‡yˆy/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:Kćy`ŠyC T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)U ˆyµ‹yK d€€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()X)`Šy Œy/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”Uµ‹y¡Œy? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q" ŒyòŒy/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:4¬¡Œy&yˆ Þ€Y€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒ‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}òŒy ÀyB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)&y ÀyÌ‚yN&yZÀy/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:| ÀyÖÁyn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ZÀy.Ây/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®ÖÁyaÄy… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH.ÂyéÄy@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NaÄy7Åy/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞéÄynÆyY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!7Åy¾Æy/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:€RnÆy>Çy. ,€¤€T”A‚S~‚A€ƒ‚ƒ‚ÿSO_GET_PART(kit, partName, partClass)SO_CHECK_PART(kit, partName, partClass)4¾ÆyrÇy& €€‚A€‚ÿDESCRIPTION R>ÇyÌyN j€¥€”‘€‚A€€€€€€€€€€€€€‚ÿSoScaleUniformDragger is a simple dragger that scales uniformly in all 3 dimensions when dragged with the mouse. The local space is determined by its location in the scene graph. Transformation nodes placed before it will affect both the dragger and the plane of motion.This node has a scaleFactor field which always reflects its size in local space. If you set the field, the dragger will change accordingly. You can also connect fields of other nodes or engines from this one to make them follow the dragger's motion.This dragger contains four parts, scaler, scalerActive, feedback, and feedbackActive.Each of these is set by default from a resource described in the Dragger Resources section of the online reference page for this class. You can change the parts in any instance of this dragger using setPart(). You can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/scaleUniformDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory.0 rÇyBÌy& €€‚A€‚ÿCATALOG;Ìy}Ìy- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜BÌyÍy~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/}ÌyÔÍy#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2Íy–Îy#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes¶&ÔÍyLÏy#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿscalerSeparator--yes¼,–Îyz#ð€XÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€<€ÿ€>€€€‚ÿ€J€€€‚ÿÿÿscalerActiveSeparator--LÏyzÌ‚yyes¸(LÏyÌz#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿfeedbackSeparator--yes¾.zŠz#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿfeedbackActiveSeparator--yes,Ìz¶z' € €€‚€‚ÿe7Šzz. ,€n€”‚±€ƒ€€ ‚ÿExtra Information for List Parts from Above Table’1¶z­za#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8zFza#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=­zƒz' €,€€‚€‚ÿDRAGGER RESOURCES-ÇFz°zf š€€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:scaleUniformScalerPart:scalerAppearance:8 small white cubes at the corners of a larger 2x2x2 cube.Description:picking this initiates the scalingResource:scaleUniformScalerActivePart:scalerActiveAppearance:yellow version of scaler, but with extra yellow box connecting cornersDescription:displayed instead of scaler while in motionResource:scaleUniformFeedbackPart:feedbackAppearance:thin purple 3-D crosshair܃zÎzB R€¹€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ÿDescription:shows center of scale when stillResource:scaleUniformFeedbackActivePart:feedbackActiveAppearance:thin, slightly brighter purple 3-D crosshairDescription:shows center of scale while in motion<°z z& €,€‚Í€‚ÿFILE FORMAT/DEFAULTBÎzLz* $€0€P„7|‚€‚ÿScaleUniformDragger {¬u zøz7 >€ê€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEscaleFactor1 1 1}1 Lz)z& €€‚€‚ÿSEE ALSOœîøzÅ z® *Ý€”‘€‚ã¤ÓÍñ€‰ãÈï?†‰ãÌrŠâ‰ã†ë‰ãLº¿‰ã¢b‰ã±—o›‰ãz"Éã%Ô§‰ãŒÝ߉ã&M°¢‰ãY#æ‰ãüÚÉ/‰ã˜uPö‰ãÀsm‰ãNØd>‰ãÈÁY‰ãÂmG ‰ã¡è˜*‰ãw`Ëê‰ã E‰ã¬õ´Ž‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2Dragger; )z z1=+ó§‚õl z2 zœÅzSoSceneKit2 Å z2 z% €€ˆˆ€‚ÿSoSceneKit* z\ z# €€€‚ÿNAMEI#2 z¥ z& €F€”‘€€‚ÿSoSceneKit - scene nodekit class3\ zØ z# € €€‚ÿINHERITS FROM¨O¥ z€ zY ‚€ž€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoSceneKit2 Ø z² z& €€€€ ‚ÿSYNOPSISpI€ z" z' €’€”‘€€‚‚ÿ#include Parts from class SoSceneKit:¥c² zÇ zB T€Æ€T”A‚S~‚A€ã½á–‰ƒ‚ã½á–‰ƒ‚ã½á–‰ƒ‚ÿ(SoNodeKitListPart)cameraList(SoNodeKitListPart)lightList(SoNodeKitListPart)childListO " zz/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%Ç zmz2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListJ!z·z) "€B€”‘€‚A€‚ÿMethods from class SoSceneKit:ê©mz¡zA P€S€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoSceneKit()static const SoNodekitCatalog *getClassNodekitCatalog() constintgetCameraNumber()voidsetCameraNumber(int camNum)static SoTypegetClassTypeId()Q"·z @z/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:¡z @zÅ z@°¡zLBz î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿} @z CzB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)NLBzYCz/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:| CzÕDzn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)YCz-Ez/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®ÕDz`Gz… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH-EzèGz@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N`Gz6Hz/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞèGzmIzY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!6Hz½Iz/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)mIzJz, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+½IziJz, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4JzJz& €€‚A€‚ÿDESCRIPTION´ZiJzQLzZ ‚€µ€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿThis nodekit is used to organize camera, (SoCameraKit), light, (SoLightKit), and object, (SoShapeKit, SoSeparatorKit, and SoWrapperKit) nodekits into a scene. A scene is composed of a list of cameras, a list of lights, and a list of children. There are three parts created by this nodekit: cameraList, lightList, and childList.Ž4JzßMzZ ‚€i€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿThe cameraList part is a list part of SoCameraKit nodes. The list itself is an SoNodeKitListPart, and since only one camera can be active at a time, the container of the list part is an SoSwitch node. Use setCameraNumber(), and the scene kit will set the switch to make that camera active.ÏQLz®NzB R€€”‘€‚A€€€€€€€€€‚ÿThe lightList part is a list of SoLightKit nodes. The lightList is used to illuminate the objects contained in the childList part.!µßMzÛ€zl ¦€k€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€‚ÿThe childList part contains a set of SoSeparatorKit nodes. You can add any kind of SoSeparatorKit to this list, including SoShapeKit and SoWrapperKit. Since each SoSeparatorKit in turn contains a childList, this par®NzÛ€zÅ zt is used to describe a hierarchical scene. (See the reference page for SoSeparatorKit). All members of childList are lit by the lights in lightList and rendered by the active camera in cameraList..®Nz z& €€‚A€‚ÿPARTSU#Û€z^z2 4€F€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)cameraList L zþ‚zT v€™€”‘€‚A€€€€€€€€€€€€€€€‚ÿThis part is an SoNodeKitListPart It has a container that is an SoSwitch node. The list may contain only SoCameraKit nodekits. The active child of the SoSwitch is the active camera. This part is NULL by default, but is automatically created whenever you add a camera, as with setPart("cameraList[0]", myNewCamera) .T"^zRƒz2 4€D€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)lightList™Eþ‚zë„zT v€‹€”‘€‚A€€€€€€€€€€€€€€€‚ÿThis part is an SoNodeKitListPart that uses an defines an SoGroup as its container The list may contain only SoLightKit nodekits. Add SoLightKits to this list and they will light the members of the childList of this SoSceneKit. This part is NULL by default, but is automatically created when you add a light.T"Rƒz?…z2 4€D€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)childList•ë„zRˆz~ Ê€+€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿThis part is an SoNodeKitListPart that uses an SoGroup for its container. The list may contain only SoSeparatorKit nodekits or nodekits derived from SoSeparatorKit (e.g., SoShapeKit and SoWrapperKit). These children represent the objects in the scene. This part is NULL by default, but is automatically created whenever you add a child to the childList. Also, when asked to build a member of the childList, the scenekit will build an SoShapeKit by default. So if the childList part is NULL, and you call: getPart("childList[0]", TRUE) . the scene kit will create the childList and add an SoShapeKit as the new element in the list.0 ?…z‚ˆz& €€‚A€‚ÿMETHODS<Rˆz¾ˆz, (€ €T”A‚S~‚A€ƒ‚ÿSoSceneKit()8‚ˆzöˆz) "€€”‘€‚A€‚ÿConstructor.uC¾ˆzk‰z2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() constq<öˆz܉z5 :€x€”‘€‚A€€€€€‚ÿReturns an SoNodekitCatalog for the class SoSceneKit.g9k‰zCŠz. ,€r€T”A‚S~‚A€ƒ‚ƒ‚ÿintgetCameraNumber()voidsetCameraNumber(int camNum)²}܉zõŠz5 :€ú€”‘€‚A€€€€€‚ÿGets and sets current camera index. This index refers to which child is active in the cameraList part (SoSwitch node).U#CŠzJ‹z2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*õŠz‹z) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6J‹zÓ‹z& € €‚A€‚ÿCATALOG PARTS;‹zŒz- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜Ó‹z¦Œz~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/Œzez#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2¦Œz'Žz#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yesÀ0ezçŽz#ð€`ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€D€ÿ€F€€€‚ÿ€R€€€‚ÿÿÿcameraListNodeKitListPart--yes¿/'Žz¦z#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿlightListNodeKitListPart--yes¿/çŽzqÀz#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€¦zqÀzÅ z‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿchildListNodeKitListPart--yes,¦zÀz' € €€‚€‚ÿa6qÀzþÀz+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’1ÀzÁza#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8þÀz)Âza#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback?ÁzhÂz' €0€€‚€‚ÿFILE FORMAT/DEFAULT7 )ÂzŸÂz* $€€P„7|‚€‚ÿSceneKit {:õhÂzÙÃzE X€ë€P„|‚€ƒ‚ƒ‚ƒ‚ƒƒ‚ƒƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚‚ÿcallbackListNULLcameraListNodeKitListPart {containerTypeName "Switch" childTypeNames "CameraKit" containerNode Switch {whichChild 0 CameraKit {camera PerspectiveCamera {}}}}lightListNULLchildListNULL}1 ŸÂz Äz& €€‚€‚ÿSEE ALSO’ÞÙÃzœÅz´ 6½€”‘€‚ãNw¶°€‰€ãib€‰€ãásÆú€‰€ã€ÀÏ€‰€ã0d$€‰€ã•£&ô€‰€ã½á–€‰€ã}选€ãõˆ¨f€‰€ãOËr€‰€ãЃ'€‰€ã°çT€‰‚ÿSoAppearanceKit, SoBaseKit, SoCameraKit, SoLightKit, SoNodeKit, SoNodeKitDetail, SoNodeKitListPart, SoNodeKitPath, SoNodekitCatalog, SoSeparatorKit, SoShapeKit, SoWrapperKit? ÄzÛÅz1r(Pô\‰ömÛÅzÆzÄL{SoSceneManager6œÅzÆz% €"€ˆˆ€‚ÿSoSceneManager*ÛÅz;Æz# €€€‚ÿNAMEjDÆz¥Æz& €ˆ€”‘€€‚ÿSoSceneManager - manages scene graph rendering and event handling3;ÆzØÆz# € €€‚ÿINHERITS FROM;¥ÆzÇz) "€$€”‘€€€‚ÿSoSceneManager2 ØÆzEÇz& €€€€ ‚ÿSYNOPSISM'Çz’Çz& €N€”‘€€‚ÿ#include €MEÇzÈz3 6€š€T”A‚S~‚A€ƒãQ´tK‰‚ÿtypedef voidSoSceneManagerRenderCB(void *userData,SoSceneManager *mgr)N%’Çz`Èz) "€J€”‘€‚A€‚ÿMethods from class SoSceneManager:)±Èz‰Êzx ¾€c€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒã2™|—‰‚ƒ‚ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒãŠƒõ(‰‚ÿSoSceneManager()virtual~SoSceneManager()virtual voidrender(SbBool clearWindow = TRUE,SbBool clearZbuffer = TRUE)virtual SbBoolprocessEvent(const SoEvent *event)voidreinitialize()voidscheduleRedraw()virtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph() constvoidsetWindowSize(const SbVec2s &newSize)const SbVec2s &getWindowSize() constvoidsetSize(const SbVec2s &newSize)4Æ`Èz½Ìzn ª€€T”A‚S~‚A€㊃õ(‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ÿconst SbVec2s &getSize() constvoidsetOrigin(const SbVec2s &newOrigin)const SbVec2s &getOrigin() constvoidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetRGBMode(SbBool onOrOff)SbBoolisRGBMode() constvirtual voidactivate()virtual voiddeactivate()voidsetRenderCallback(SoSceneManagerRenderCB *f,void *userData = NULL)Åj‰Êz‚Îz[ „€Õ€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(uint32_t priority)uint32_tgetRedrawPriority() conststatic uint32_tgetDefaultRedrawPriority()static voidenableRealTimeUpdate(SbBool flag)static SbBoolisRealTimeUpdateEnabled()voidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) const4½Ìz¶Îz& €€‚A€‚ÿDESCRIPTION¨c‚Îzj{E X€Ç€”‘€‚A€€€€€€€€€€‚ÿSoSceneManager provides Open Inventor rendering and event handling inside a window provided by the caller. The scene manager is able to render in only a portion of a window if desired. The SoWinRenderArea class employs an SoSceneManager, and handles most ¶Îzj{œÅzall the details for setting up a window, converting Windows messages to Open Inventor events, automatically redrawing the scene when necessary, and so on. It is simplest to use a render area when rendering in an entire window. The SoSceneManager class is available for programmers not working with the Inventor Xt Component and Utility Library.0 ¶Îzš{& €€‚A€‚ÿMETHODS\.j{ö{. ,€\€T”A‚S~‚A€ƒ‚ƒ‚ÿSoSceneManager()virtual~SoSceneManager()Gš{={) "€<€”‘€‚A€‚ÿConstructor and destructor.ŠQö{Ç{9 B€¢€T”A‚S~‚A€ƒã‘¶p6‰ã‘¶p6‰‚ÿvirtual voidrender(SbBool clearWindow = TRUE,SbBool clearZbuffer = TRUE)S={{< F€/€”‘€‚A€€€€€€€‚ÿApply an SoGLRenderAction to the scene graph managed here. The caller is responsible for setting up a window to render into. If clearWindow is TRUE, this clears the graphics window before rendering. If clearZbuffer is TRUE, the z buffer will be cleared before rendering.p8Ç{Š{8 @€p€T”A‚S~‚A€㑶p6‰ƒã2™|—‰‚ÿvirtual SbBoolprocessEvent(const SoEvent *event)Â’{L{0 .€%€”‘€‚A€€€‚ÿProcess the passed event by applying an SoHandleEventAction to the scene graph managed here. Returns TRUE if the event was handled by a node.BŠ{Ž{, (€,€T”A‚S~‚A€ƒ‚ÿvoidreinitialize()ƒZL{{) "€´€”‘€‚A€‚ÿReinitialize graphics. This should be called, for instance, when there is a new window.DŽ{U{, (€0€T”A‚S~‚A€ƒ‚ÿvoidscheduleRedraw()¸Ž{ {* "€€”‘€‚A€‚ÿSchedule a redraw for some time in the near future. If there is no render callback set, or this is not active, no redraw will be scheduled.”ZU{¡{: D€´€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph() const»‘ {\{* "€#€”‘€‚A€‚ÿSet and get the scene graph which is managed here. This is the Open Inventor scene which will be traversed for rendering and event processing.‘W¡{í{: D€®€T”A‚S~‚A€ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvoidsetWindowSize(const SbVec2s &newSize)const SbVec2s &getWindowSize() constΘ\{» {6 :€1€”‘€‚A€€€€€‚ÿSet and get the size of the window in which the scene manager should render. This size must be set before render() and processEvent() are called.åší{  {K d€5€T”A‚S~‚A€ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvoidsetSize(const SbVec2s &newSize)const SbVec2s &getSize() constvoidsetOrigin(const SbVec2s &newOrigin)const SbVec2s &getOrigin() const×­» {w {* "€[€”‘€‚A€‚ÿSet and get the size and origin of the viewport within the window. Default is to render the entire window region. The origin (0,0) is the lower left corner of the window.•[  { {: D€¶€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ÿvoidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constËw { {6 :€—€”‘€‚A€€€€€‚ÿSet and get the window background color when in RGB mode. This is the color the scene manager viewport is cleared to when render() is called with clearWindow set to TRUE. Default is black (0,0,0).rD { {. ,€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetBackgroundIndex(int index)intgetBackgroundIndex() const Õ {Š{6 :€«€”‘€‚A€€€€€‚ÿSet and get the window background color when in color index mode. This is the color the scene manager viewport is cleared to when render() is called with clearWindow set to TRUE. Default is black (index 0).y? {{: D€~€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetRGBMode(SbBool onOrOff)SbBoolisRGBMode() const³qŠ{Â@{B R€ã€”‘€‚A€€€€€€€€€‚ÿSet and get the color mode (TRUE - RGB mode, FALSE - color map mode). Default is RGB mode. Only a subset of Open Inventor nodes will render correctly in color map mode. Basically, when i{Â@{œÅzn color index mode, lighting should be turned off (the model field of SoLightModel should be set to BASE_COLOR), and the SoColorIndex node should be used to specify colors.b4{$A{. ,€h€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidactivate()virtual voiddeactivate()BÂ@{fB{* "€1€”‘€‚A€‚ÿActivate and deactivate the scene manager. The scene manager will only employ sensors for automatic redraw while it is active. Typically, the scene manager should be activated whenever its window is visible on the screen, and deactivated when its window is closed or iconified.xK$A{ÞB{- *€–€T”A‚S~‚A€ƒ‚ÿvoidsetRenderCallback(SoSceneManagerRenderCB *f,void *userData = NULL)åµfB{ÃD{0 .€k€”‘€‚A€€€‚ÿThe render callback provides a mechanism for automatically redrawing the scene in response to changes in the scene graph. The scene manager employs a sensor to monitor scene graph changes. When the sensor is triggered, the render callback registered here is invoked. The callback should set up its graphics window, then call the scene manager render() method. If the callback is set to NULL (the default), auto-redraw is turned off.R ÞB{E{2 4€@€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisAutoRedraw() consttEÃD{‰E{/ .€Š€”‘€‚A€€€‚ÿReturns TRUE if there is currently a render callback registered.ªzE{3F{0 0€ô€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿvoidsetRedrawPriority(uint32_t priority)uint32_tgetRedrawPriority() conststatic uint32_tgetDefaultRedrawPriority()øΉE{+G{* "€€”‘€‚A€‚ÿSet and get the priority of the redraw sensor. Sensors are processed based on priority, with priority values of 0 processed immediately. The default priority for the scene manager redraw sensor is 10000.–\3F{ÁG{: D€¸€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿstatic voidenableRealTimeUpdate(SbBool flag)static SbBoolisRealTimeUpdateEnabled()‡^+G{HH{) "€¼€”‘€‚A€‚ÿEnable/Disable the realTime global field update which normally happen right after a redraw.¶zÁG{þH{< H€ô€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) const áHH{ L{* "€Ã€”‘€‚A€‚ÿSet/get the antialiasing for rendering. There are two kinds of antialiasing available: smoothing and multipass antialiasing. If smoothing is set to TRUE, smoothing is enabled. Smoothing uses OpenGL's line- and point-smoothing features to provide cheap antialiasing of lines and points. The value of numPasses controls multipass antialiasing. Each time a render action is applied, Open Inventor renders the scene numPasses times from slightly different camera positions, averaging the results. numPasses can be from one to 255, inclusive. Setting numPasses to one disables multipass antialiasing. You can use either, both, or neither of these antialiasing techniques. By default, both smoothing and multipass antialiasing are disabled.1 þH{:L{& €€‚A€‚ÿSEE ALSOŠC L{ÄL{G ^€†€”‘€‚Aãÿ3È€‰€ã©öø(€‰€ãàꀉ‚ÿSoWinRenderArea, SoGLRenderAction, SoHandleEventAction?:L{M{1=§‚õsÐnM{9M{žÃ{SoSearchAction6ÄL{9M{% €"€ˆˆ€‚ÿSoSearchAction*M{cM{# €€€‚ÿNAME]79M{ÀM{& €n€”‘€€‚ÿSoSearchAction - searches for nodes in a scene graph3cM{óM{# € €€‚ÿINHERITS FROMV!ÀM{IN{5 :€B€”‘€ãïK€‰€€€‚ÿSoAction > SoSearchAction2 óM{{N{& €€€€ ‚ÿSYNOPSISU/IN{ÐN{& €^€”‘€€‚ÿ#include ì…{N{È€{g œ€ €T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€€ƒ€‚ÿenum LookFor{SoSearchAction::NODESearch for a particular node (by pointer)SoSearchAction::TYPESearch for a particular type of nodeSoSearchAction::NAMESearch for a node with a particularÐN{È€{ÄL{ name}enum Interest{SoSearchAction::FIRSTReturn only the first path foundSoSearchAction::LASTReturn only the last path foundSoSearchAction::ALLReturn all paths found}N%ÐN{{) "€J€”‘€‚A€‚ÿMethods from class SoSearchAction:˜È€{0ƒ{‚ Ò€1€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãB-9‰ã‘¶p6‰‚ãB-9‰ƒã‘¶p6‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSoSearchAction()voidsetNode(SoNode *n)SoNode *getNode() constvoidsetType(SoType t,SbBool derivedIsOk = TRUE)SoTypegetType(SbBool &derivedIsOk) constvoidsetName(const SbName &n)const SbName &getName() constvoidsetFind(int what)intgetFind()voidsetInterest(Interest interest)InterestgetInterest() constvoidsetSearchingAll(SbBool flag)SbBoolisSearchingAll() const€D{°ƒ{< H€ˆ€T”A‚S~‚AãMy'9€‰ƒ‚ãç2ø¡‰ƒ‚ƒ‚ÿSoPath *getPath() constSoPathList &getPaths()voidreset()P!0ƒ{„{/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†°ƒ{†…{j ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4„{º…{& €€‚A€‚ÿDESCRIPTIONG†…{‡{* "€;€”‘€‚A€‚ÿThis class is used to search scene graphs for specific nodes, nodes of a specific type, nodes with a specific name, or any combination of these. It can search for just the first or last node satisfying the criteria or for all such nodes. The actions return paths to each node found.[º…{\ˆ{B R€3€”‘€‚A€ãib€‰€€€€€‚ÿNote that by default nodekits do not search their children when a search action is applied. The reference page for SoBaseKit discusses the methods SoBaseKit::isSearchingChildren() and SoBaseKit::setSearchingChildren(), which allow you to query and control this behavior.0 ‡{Œˆ{& €€‚A€‚ÿMETHODS@\ˆ{̈{, (€(€T”A‚S~‚A€ƒ‚ÿSoSearchAction()8Œˆ{‰{) "€€”‘€‚A€‚ÿConstructor.q7̈{u‰{: D€n€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvoidsetNode(SoNode *n)SoNode *getNode() constP'‰{ʼn{) "€N€”‘€‚A€‚ÿSets/returns the node to search for.­fu‰{rŠ{G ^€Ì€T”A‚S~‚A€ƒãB-9‰ã‘¶p6‰‚ãB-9‰ƒã‘¶p6‰‚ÿvoidsetType(SoType t,SbBool derivedIsOk = TRUE)SoTypegetType(SbBool &derivedIsOk) constǗʼn{9‹{0 .€/€”‘€‚A€€€‚ÿSets/returns the node type to search for. If derivedIsOk is TRUE, a node that is of a type that is derived from t will pass this search criterion.}CrŠ{¶‹{: D€†€T”A‚S~‚A€ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidsetName(const SbName &n)const SbName &getName() const\39‹{Œ{) "€f€”‘€‚A€‚ÿSets/returns the name of the node to search for.U'¶‹{gŒ{. ,€N€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetFind(int what)intgetFind(),öŒ{“{6 :€í€”‘€‚A€€€€€‚ÿSets/returns what to look for; what is a bitmask of LookFor enum values. Default is no flags at all. Note that setting a node, type, and/or name to search for activates the relevant flag, so you may never need to call this method directly.qCgŒ{Ž{. ,€†€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetInterest(Interest interest)InterestgetInterest() consta8“{eŽ{) "€p€”‘€‚A€‚ÿSets/returns which paths to return. Default is FIRST.€FŽ{åŽ{: D€Œ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetSearchingAll(SbBool flag)SbBoolisSearchingAll() const~NeŽ{oÀ{0 .€€”‘€‚A€€€‚ÿSets/returns whether searching uses regular traversal or whether it traverses every single node. For example, if this flag is FALSE, an SoSwitch node will traverse only the child or children it would normally traverse for an action.åŽ{oÀ{ÄL{ If the flag is TRUE, the switch would always traverse all of its children. The default is FALSE.OåŽ{¾À{2 4€:€T”A‚S~‚AãMy'9€‰ƒ‚ÿSoPath *getPath() const—noÀ{UÁ{) "€Ü€”‘€‚A€‚ÿReturns resulting path, or NULL if no path was found. This should be used if the interest is FIRST or LAST.N¾À{£Á{2 4€8€T”A‚S~‚Aãç2ø¡€‰ƒ‚ÿSoPathList &getPaths()tKUÁ{Â{) "€–€”‘€‚A€‚ÿReturns resulting path list. This should be used if the interest is ALL.;£Á{RÂ{, (€€T”A‚S~‚A€ƒ‚ÿvoidreset()ÆœÂ{Ã{* "€9€”‘€‚A€‚ÿResets options back to default values; clears list of returned paths. This can be used to apply the action again with a different set of search criteria.1 RÂ{IÃ{& €€‚A€‚ÿSEE ALSOUÃ{žÃ{; F€4€”‘€‚AãMy'9€‰€ãib€‰‚ÿSoPath, SoBaseKit< IÃ{ÚÃ{1Ö¸øúoÚÃ{ Ä{×|SoSelectOne3žÃ{ Ä{% €€ˆˆ€‚ÿSoSelectOne*ÚÃ{7Ä{# €€€‚ÿNAMEe? Ä{œÄ{& €~€”‘€€‚ÿSoSelectOne - selects one value from a multiple-value field.37Ä{ÏÄ{# € €€‚ÿINHERITS FROMBœÄ{^Å{M j€„€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoSelectOne2 ÏÄ{Å{& €€€€ ‚ÿSYNOPSISrK^Å{Æ{' €–€”‘€€‚‚ÿ#include Inputs from class SoSelectOne:Z&Å{\Æ{4 8€L€T”A‚S~‚Aãw?2€‰ƒ‚ƒ‚ÿSoSFInt32indexinputK"Æ{§Æ{) "€D€”‘€‚A€‚ÿOutputs from class SoSelectOne:D\Æ{ëÆ{, (€0€T”A‚S~‚A€ƒ‚ÿ()outputK"§Æ{6Ç{) "€D€”‘€‚A€‚ÿMethods from class SoSelectOne:U#ëÆ{‹Ç{2 4€F€T”A‚S~‚A€ƒãB-9‰‚ÿSoSelectOne(SoType inputType)P!6Ç{ÛÇ{/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}‹Ç{ÛÉ{ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)ÛÇ{3Ê{/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÛÉ{˜Ì{ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH3Ê{ Í{@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N˜Ì{nÍ{/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ Í{¥Î{Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4nÍ{ÙÎ{& €€‚A€‚ÿDESCRIPTION>ð¥Î{#|N j€á€”‘€‚A€€€€€€€€€€€€€‚ÿThis engine selects a single value from a multiple-value field, based on the input field index. The type of the input field can be any subclass of SoMField, and the type of the output is the corresponding subclasÙÎ{#|žÃ{s of SoSField. For example, if the input type is SoMFVec3f, the output type will be SoSFVec3f. The type is specified when an instance of the class is created. For example, SoSelectOne(SoMFFloat::getClassTypeId()) creates an engine that selects one floating-point value.ýÁÙÎ{ |< F€ƒ€”‘€‚A€€€€€€€‚ÿNote that unlike most other engine fields, the input field and output are pointers. Note also that by default input does not contain any values, and no value is output from the engine./ #|O|& €€‚A€‚ÿINPUTSF |•|2 4€(€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32indexg>O|ü|) "€|€”‘€‚A€‚ÿIndex of the value to select from the multiple-value field.@•|<|, (€(€T”A‚S~‚A€ƒ‚ÿinputkBü|§|) "€„€”‘€‚A€‚ÿThe multiple-value field from which the value will be selected.0 <|×|& €€‚A€‚ÿOUTPUTSD§||, (€0€T”A‚S~‚A€ƒ‚ÿ()outputF×|a|) "€:€”‘€‚A€‚ÿThe single value selected.0 |‘|& €€‚A€‚ÿMETHODSU#a|æ|2 4€F€T”A‚S~‚A€ƒãB-9‰‚ÿSoSelectOne(SoType inputType){R‘|a|) "€¤€”‘€‚A€‚ÿConstructor. The argument specifies the type of the multiple-value input field.<æ||& €,€‚A€‚ÿFILE FORMAT/DEFAULT8a|Õ|* $€€P„7|‚€‚ÿSelectOne {X'|-|1 2€N€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿtypeinput[]index0}1 Õ|^|& €€‚€‚ÿSEE ALSOy2-|×|G ^€d€”‘€‚ãë\¼N€‰€ãÕŒy$€‰€ãŽ9€‰‚ÿSoEngineOutput, SoConcatenate, SoGate< ^||1DsÐÂ÷p|F|– }SoSelection3×|F|% €€ˆˆ€‚ÿSoSelection*|p|# €€€‚ÿNAMEY3F|É|& €f€”‘€€‚ÿSoSelection - manages a list of selected objects3p|ü|# € €€‚ÿINHERITS FROMÅ`É|Á|e š€À€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãÍ\Y€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoSeparator > SoSelection2 ü|ó|& €€€€ ‚ÿSYNOPSISP*Á|C |& €T€”‘€€‚ÿ#include 9Ïó|| |j ¢€Ÿ€T”A‚S~‚A€ƒãMy'9‰‚ƒã(ç –‰‚ãMy'9‰ƒã¼B‘S‰‚ƒ€ƒ€€ƒ€€ƒ€‚ÿtypedef voidSoSelectionPathCB(void *userData,SoPath *path)typedef voidSoSelectionClassCB(void *userData,SoSelection *sel)typedef SoPath *SoSelectionPickCB(void *userData,const SoPickedPoint *pick)enum Policy{SoSelection::SINGLELeft mouse pick on object clears selection, then selects object. Left mouse pick on nothing clears selection. Only one object may be selected at a time.SoSelection::TOGGLELeft mouse pick on object toggles its selection status. Left mouse pick on nothing does nothing. Multiple objects may be selected.SoSelection::SHIFTWhen shift key is down, selection policy is TOGGLE. When shift key is up, selection policy is SINGLE. Multiple objects may be selected.}J!C |Æ |) "€B€”‘€‚A€‚ÿFields from class SoSelection:F| | |2 4€(€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumpolicyR#Æ |^ |/ .€F€”‘€‚A€ãÍ\Y‰‚ÿFields from class SoSeparator:³i ||J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingK"^ |\|) "€D€”‘€‚A€‚ÿMethods from class SoSelection:’|@|‡ Ü€%€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ƒãMy'9‰‚ƒã’n%9‰‚ƒãMy'9‰‚ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒã’n%9‰‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒã’n%9‰‚ƒ‚ÿSoSelection()SoSelection(int nChildren)static SoTypegetClassTypeId()voidselect(const SoPath *path)voidselect(SoNode *node)voiddeselect(const SoPath *path)voiddeselect(int which)voiddeselect(SoNode *node)voidtoggle(const SoPath *path)voidtoggle(SoNode \|@|×|*node)SbBoolisSelected(const SoPath *path) constSbBoolisSelected(SoNode *node) constvoiddeselectAll()Hô\|ÉB|T v€é€T”A‚S~‚A€ƒ‚ãç2ø¡‰ƒ‚ãMy'9‰ƒ‚ãMy'9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿintgetNumSelected() constconst SoPathList *getList() constSoPath *getPath(int index) constSoPath *operator [](int i) constvoidaddSelectionCallback(SoSelectionPathCB *f,void *userData = NULL)voidremoveSelectionCallback(SoSelectionPathCB *f,void *userData = NULL)voidaddDeselectionCallback(SoSelectionPathCB *f,void *userData = NULL)voidremoveDeselectionCallback(SoSelectionPathCB *f,void *userData = NULL)voidaddStartCallback(SoSelectionClassCB *f,void *userData = NULL)ÜŽ@|¥D|N j€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidremoveStartCallback(SoSelectionClassCB *f,void *userData = NULL)voidaddFinishCallback(SoSelectionClassCB *f,void *userData = NULL)voidremoveFinishCallback(SoSelectionClassCB *f,void *userData = NULL)voidsetPickFilterCallback(SoSelectionPickCB *f,void *userData = NULL,SbBool callOnlyIfSelectable = TRUE)voidsetPickMatching(SbBool pickTwice)SbBoolgetPickMatching() constS$ÉB|øD|/ .€H€”‘€‚A€ãÍ\Y‰‚ÿMethods from class SoSeparator:|N¥D|tE|. ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()O øD|ÃE|/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒtE|¸G|r ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)NÃE|H|/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|¸G|‚I|n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)H|ÚI|/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ‚I|?L| 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÚI|ÇL|@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N?L|M|/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÇL|LN|Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4M|€N|& €€‚A€‚ÿDESCRIPTION£vLN|/€|- (€í€”‘€‚A€€‚ÿSoSelection defines a node which can be inserted into a scene graph and will generate and manage a selection list from picks on any node in the subgraph below it. Nodes are selected based on a current selection policy. Callback functions report back to the application when a path has been selected or deselected. The selection list can €N|/€|×|also be managed programmatically.€P€N|¯|0 .€¡€”‘€‚A€€€‚ÿWhen handling events, SoSelection makes sure that the mouse release event was over the same object as the mouse press event before changing the list of selected objects. This allows users to mouse down on an object, change their mind and move the cursor off the object, then release the mouse button without altering the selection.Ý/€|‚|6 :€»€”‘€‚A€€€€€‚ÿThe selection can be highlighted automatically through the SoWinRenderArea, or the application can provide custom highlights. Please see the chapter "Creating a Selection Highlight Style" in the Inventor Toolmaker./ ¯|ñ‚|& €€‚A€‚ÿFIELDSF‚|7ƒ|2 4€(€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumpolicyÙñ‚|úƒ|* "€3€”‘€‚A€‚ÿSelection policy that is followed in response to user interaction. This can be set to SoSelection::SINGLE, SoSelection::TOGGLE, or SoSelection::SHIFT.0 7ƒ|*„|& €€‚A€‚ÿMETHODS=úƒ|g„|, (€"€T”A‚S~‚A€ƒ‚ÿSoSelection()_6*„|Æ„|) "€l€”‘€‚A€‚ÿCreates a selection node with the default settings.Jg„|…|, (€<€T”A‚S~‚A€ƒ‚ÿSoSelection(int nChildren)jAÆ„|z…|) "€‚€”‘€‚A€‚ÿConstructor that specifies the approximate number of children.U#…|Ï…|2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()a2z…|0†|/ .€d€”‘€‚A€€€‚ÿReturn the type id for the SoSelection class.V$Ï…|††|2 4€H€T”A‚S~‚A€ƒãMy'9‰‚ÿvoidselect(const SoPath *path)oE0†|õ‡|* "€‹€”‘€‚A€‚ÿSelect the passed path by adding it to the selection list. The selection node must lie in the path. The path is copied and truncated such that the selection node is the head of the path. If the selection node does not lie in the path, the selection list remains unchanged. This method ignores the current selection policy.P††|Eˆ|2 4€<€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidselect(SoNode *node)"òõ‡|g‰|0 .€å€”‘€‚A€€€‚ÿSelect the passed node by creating a path to it, and adding the path to the selection list by calling select(path). If there is more than one instance of node beneath the selection node, the created path will be the first instance found.X&Eˆ|¿‰|2 4€L€T”A‚S~‚A€ƒãMy'9‰‚ÿvoiddeselect(const SoPath *path)lCg‰|+Š|) "€†€”‘€‚A€‚ÿDeselect the passed path by removing it from the selection list.G¿‰|rŠ|, (€6€T”A‚S~‚A€ƒ‚ÿvoiddeselect(int which)¦}+Š|‹|) "€ú€”‘€‚A€‚ÿDeselect a path by removing it from the selection list. The argument which specifies which path in the list to be removed.R rŠ|j‹|2 4€@€T”A‚S~‚A€ƒã’n%9‰‚ÿvoiddeselect(SoNode *node)*ú‹|”Œ|0 .€õ€”‘€‚A€€€‚ÿDeselect the passed node by creating a path to it, and removing the node from the selection list by calling deselect(path). If there is more than one instance of node beneath the selection node, the created path will be the first instance found.V$j‹|êŒ|2 4€H€T”A‚S~‚A€ƒãMy'9‰‚ÿvoidtoggle(const SoPath *path)³‰”Œ||* "€€”‘€‚A€‚ÿToggle the selection status of the passed path - if the path is in the selection list, it is removed; if not in the list, it is added.PêŒ|í|2 4€<€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidtoggle(SoNode *node)â|ÿŽ|0 .€Å€”‘€‚A€€€‚ÿToggle the selection status of the passed node by creating a path to it, then calling toggle(path). If there is more than one instance of node beneath the selection node, the created path will be the first instance found.j2í|i|8 @€d€T”A‚S~‚A㑶p6€‰ƒãMy'9‰‚ÿSbBoolisSelected(const SoPath *path) const‰ZÿŽ| À|/ .€´€”‘€‚A€€€‚ÿReturns TRUE if the passed path is selected, that is, if it is in the selection list.i| À|×|d,i|pÀ|8 @€X€T”A‚S~‚A㑶p6€‰ƒã’n%9‰‚ÿSbBoolisSelected(SoNode *node) constá À|‡Á|6 :€Ã€”‘€‚A€€€€€‚ÿReturns TRUE if the passed node is selected by creating a path to it, then calling isSelected(). If there is more than one instance of node beneath the selection node, the created path will be the first instance found.ApÀ|ÈÁ|, (€*€T”A‚S~‚A€ƒ‚ÿvoiddeselectAll()nE‡Á|6Â|) "€Š€”‘€‚A€‚ÿDeselect all paths in the selection list, that is, clear the list.IÈÁ|Â|, (€:€T”A‚S~‚A€ƒ‚ÿintgetNumSelected() const]46Â|ÜÂ|) "€h€”‘€‚A€‚ÿReturn the number of paths in the selection list.Y'Â|5Ã|2 4€N€T”A‚S~‚A€ãç2ø¡‰ƒ‚ÿconst SoPathList *getList() constN%ÜÂ|ƒÃ|) "€J€”‘€‚A€‚ÿReturn the list of selected paths.„J5Ã|Ä|: D€”€T”A‚S~‚AãMy'9€‰ƒ‚ãMy'9‰ƒ‚ÿSoPath *getPath(int index) constSoPath *operator [](int i) constV-ƒÃ|]Ä|) "€Z€”‘€‚A€‚ÿReturn the ith path in the selection list.Ä“Ä|!Å|1 0€'€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddSelectionCallback(SoSelectionPathCB *f,void *userData = NULL)voidremoveSelectionCallback(SoSelectionPathCB *f,void *userData = NULL)üÒ]Ä|Æ|* "€¥€”‘€‚A€‚ÿThe selection callbacks are invoked every time an object is selected, whether it be from user interaction or from method call. The callbacks are invoked after the object has been added to the selection list.È—!Å|åÆ|1 0€/€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddDeselectionCallback(SoSelectionPathCB *f,void *userData = NULL)voidremoveDeselectionCallback(SoSelectionPathCB *f,void *userData = NULL)úÐÆ|ßÇ|* "€¡€”‘€‚A€‚ÿThe deselection callbacks are invoked every time an object is deselected, whether it be from user interaction or from method call. This is invoked after the object has been removed from the selection list.¾åÆ|È|1 0€€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddStartCallback(SoSelectionClassCB *f,void *userData = NULL)voidremoveStartCallback(SoSelectionClassCB *f,void *userData = NULL)ìÂßÇ|‰Ê|* "€…€”‘€‚A€‚ÿThe start callbacks are invoked when the user has initiated an interactive change to the selection list (by picking objects). This will be followed by invocations of the select and/or deselect callbacks, finally followed by each finish callback. A start callback can be used, for instance, to save the current selection for later restoration (e.g. undo/redo). The start callbacks are not called when the selection list is changed programmatically.ÀÈ|IË|1 0€€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddFinishCallback(SoSelectionClassCB *f,void *userData = NULL)voidremoveFinishCallback(SoSelectionClassCB *f,void *userData = NULL)uK‰Ê|¾Ì|* "€—€”‘€‚A€‚ÿThe finish callbacks are invoked when the user has finished interactively changing the selection list (by picking objects). This was preceded by an invocation of each start callback, and invocations of the select and/or deselect callbacks. The finish callbacks are not called when the selection list is changed programmatically.¤pIË|bÍ|4 8€à€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidsetPickFilterCallback(SoSelectionPickCB *f,void *userData = NULL,SbBool callOnlyIfSelectable = TRUE)W¾Ì|¹Ï|B R€+€”‘€‚A€€€€€€€€€‚ÿThe pick filter callback is invoked when a pick has occurred and the selection node is about to change the selection list. The callback function returns the path that the selection node should use when selecting and deselecting. If no pick callback is registered (the default), the selection node will use the path returned by SoPickedPoint::getPath() on the picked point associated with the event being processed. The returned path should not be ref'd - selection will ref() and unref() it. (See SoPath::unrefNoDelete().)ßµbÍ|¤}* "€k€”‘€‚A€‚ÿNote that a picked object ma¹Ï|¤}×|y or may not be a child of the selection node. A selection node will only select paths that pass through it. Possible return values from the callback:Í£¹Ï|q}* "€G€”‘€‚A€‚ÿ[a] NULL - selection behaves as if nothing was picked (i.e. for SINGLE and SHIFT policies, this clears the selection list). Handle event action traversal halts.Ì¢¤}=}* "€E€”‘€‚A€‚ÿ[b] Path - this path will be selected/deselected according to the selection policy (it must lie under the selection node). Handle event action traversal halts.Àq}ý}0 .€!€”‘€‚A€€€‚ÿ[c] Path containing only the selection node - apply the selection policy as if nothing was picked. Handle event action traversal continues.Ö¬=}Ó}* "€Y€”‘€‚A€‚ÿ[d] Path not passing through the selection node - selection ignores this pick event and no change is made to the selection list. Handle event action traversal continues.éý}ò}6 :€Ó€”‘€‚A€€€€€‚ÿA simple way to tell selection to ignore the pick is to return an SoPath with no nodes in it. (i.e. return new SoPath;) Selection will always ref the path returned by the callback, make a copy of the path, then unref the path.,Ó}}* "€€”‘€‚A€‚ÿThe callOnlyIfSelectable argument, when set to TRUE, means the pick callback function will only be invoked on picks which pass through the selection node. When FALSE, all picks will be passed to the callback whether they pass through the selection or not.†Lò}¤}: D€˜€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetPickMatching(SbBool pickTwice)SbBoolgetPickMatching() constúÍ}ž}- (€›€”‘€‚A€€‚ÿSoSelection will pick once on mouse down and once on mouse up, and make sure the picks match before changing the selection list. This allows the user to pick down on an object, change their mind and drag off the object, release the mouse button and not affect the selection. Pass TRUE to enable this behavior. Pass FALSE to disable this, meaning whatever is picked on a mouse release is added to/removed from the selection list. Default is pick-matching on.<¤}Ú}& €,€‚A€‚ÿFILE FORMAT/DEFAULT8ž} }* $€€P„7|‚€‚ÿSelection {–aÚ}¨ }5 :€Â€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOpolicySHIFT}1  }Ù }& €€‚€‚ÿSEE ALSO½j¨ }– }S v€Ô€”‘€‚ã?–/ €‰€ãÿ3È€‰€ã6 €‰€ãö퀉‚ÿSoEventCallback, SoWinRenderArea, SoBoxHighlightRenderAction, SoLineHighlightRenderAction9Ù }Ï }1u Â÷¥‚úqÏ }ÿ }oD}SoSensor0 – }ÿ }% €€ˆˆ€‚ÿSoSensor*Ï }) }# €€€‚ÿNAMEa;ÿ }Š }& €v€”‘€€‚ÿSoSensor - abstract base class for Open Inventor sensors3) }½ }# € €€‚ÿINHERITS FROM5 Š }ò }) "€€”‘€€€‚ÿSoSensor2 ½ }$ }& €€€€ ‚ÿSYNOPSISO)ò }s }& €R€”‘€€‚ÿ#include m:$ }à }3 6€t€T”A‚S~‚A€ƒãrX.鉂ÿtypedef voidSoSensorCB(void *data,SoSensor *sensor)Hs }( }) "€>€”‘€‚A€‚ÿMethods from class SoSensor:½Šà }å }3 4€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetFunction(SoSensorCB *callbackFunction)SoSensorCB *getFunction() constvoidsetData(void *callbackData)void *getData() const4( }}& €€‚A€‚ÿDESCRIPTION^(å }w}6 :€Q€”‘€‚A€€€€€‚ÿSensors detect changes either to time or to Open Inventor objects in a scene graph, and call a user-defined callback function. Sensors are scheduled when the thing they are attached to changes, and sometime after they are scheduled they are triggered, calling the user's callback function.0 }§}& €€‚A€‚ÿMETHODS]1w}@}, (€b€T”A‚S~‚A€ƒ‚ÿvoidsetFunction(SoSensorCB *callbackFunctio§}@}– }n)ð§}*A}* "€á€”‘€‚A€‚ÿSets the callback function that is called when the sensor is triggered. The function must take two arguments - user-supplied callback data (of type void *) and a pointer to the sensor that is triggering the function (of type SoSensor *).O#@}yA}, (€F€T”A‚S~‚A€ƒ‚ÿSoSensorCB *getFunction() const{R*A}ôA}) "€¤€”‘€‚A€‚ÿReturns the callback function that will be called when the sensor is triggered.O#yA}CB}, (€F€T”A‚S~‚A€ƒ‚ÿvoidsetData(void *callbackData)c:ôA}¦B}) "€t€”‘€‚A€‚ÿSets the callback data passed to the callback function.ECB}ëB}, (€2€T”A‚S~‚A€ƒ‚ÿvoid *getData() const{R¦B}fC}) "€¤€”‘€‚A€‚ÿReturns the user-supplied pointer that will be passed to the callback function.1 ëB}—C}& €€‚A€‚ÿSEE ALSOØmfC}oD}k ¦€Ú€”‘€‚AãËŠ³€‰€㤴u?€‰€ãè"&€‰€ãʇõÀ€‰€ãTlˆW€‰€ã'€‰‚ÿSoAlarmSensor, SoDataSensor, SoFieldSensor, SoIdleSensor, SoNodeSensor, SoPathSensor< —C}«D}1a ú[‚ûr«D}ÞD}¤Ä}SoSeparator3oD}ÞD}% €€ˆˆ€‚ÿSoSeparator*«D}E}# €€€‚ÿNAMEiCÞD}qE}& €†€”‘€€‚ÿSoSeparator - group node that saves and restores traversal state3E}¤E}# € €€‚ÿINHERITS FROM§NqE}KF}Y ‚€œ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoSeparator2 ¤E}}F}& €€€€ ‚ÿSYNOPSISP*KF}ÍF}& €T€”‘€€‚ÿ#include ¶}F}ÒG}O l€m€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€€‚ÿenum CacheEnabled{SoSeparator::OFFNever build a cacheSoSeparator::ONAlways try to build a cacheSoSeparator::AUTODecide whether to cache based on some heuristic}J!ÍF}H}) "€B€”‘€‚A€‚ÿFields from class SoSeparator:³iÒG}ÏH}J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingK"H}I}) "€D€”‘€‚A€‚ÿMethods from class SoSeparator:ÕšÏH}ïI}; D€5€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoSeparator()SoSeparator(int nChildren)static voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()static SoTypegetClassTypeId()O I}>J}/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒïI}3L}r ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)N>J}L}/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|3L}ýM}n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)L}UN}/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØýM}Æ€} 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtuUN}Æ€}oD}al intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHUN}N}@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÆ€}œ}/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞN}Ó‚}Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4œ}ƒ}& €€‚A€‚ÿDESCRIPTION±‡Ó‚}¸„}* "€€”‘€‚A€‚ÿThis group node performs a push (save) of the traversal state before traversing its children and a pop (restore) after traversing them. This isolates the separator's children from the rest of the scene graph. A separator can include lights, cameras, coordinates, normals, bindings, and all other properties. Separators are relatively inexpensive, so they can be used freely within scenes.{?ƒ}3†}< F€€”‘€‚A€€€€€€€‚ÿThe SoSeparator node provides caching of state during rendering and bounding box computation. This feature can be enabled by setting the renderCaching and boundingBoxCaching fields. By default, these are set to AUTO, which means that Open Inventor decides whether to build a cache based on internal heuristics.>¸„}qˆ}6 :€€”‘€‚A€€€€€‚ÿSeparators can also perform culling during rendering and picking. Culling skips over traversal of the separator's children if they are not going to be rendered or picked, based on the comparison of the separator's bounding box with the current view volume. Culling is controlled by the renderCulling and pickCulling fields. These are also set to AUTO by default; however, render culling can be expensive (and can interfere with render caching), so the AUTO heuristics leave it disabled unless specified otherwise./ 3†} ˆ}& €€‚A€‚ÿFIELDSMqˆ}íˆ}2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumrenderCachingX/ ˆ}E‰}) "€^€”‘€‚A€‚ÿWhether to cache during rendering traversal.R íˆ}—‰}2 4€@€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumboundingBoxCaching[2E‰}ò‰}) "€d€”‘€‚A€‚ÿWhether to cache during bounding box traversal.M—‰}?Š}2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumrenderCullingW.ò‰}–Š}) "€\€”‘€‚A€‚ÿWhether to cull during rendering traversal.K?Š}áŠ}2 4€2€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumpickCullingU,–Š}6‹}) "€X€”‘€‚A€‚ÿWhether to cull during picking traversal.0 áŠ}f‹}& €€‚A€‚ÿMETHODS=6‹}£‹}, (€"€T”A‚S~‚A€ƒ‚ÿSoSeparator()[2f‹}þ‹}) "€d€”‘€‚A€‚ÿCreates a separator node with default settings.J£‹}HŒ}, (€<€T”A‚S~‚A€ƒ‚ÿSoSeparator(int nChildren)b9þ‹}ªŒ}) "€r€”‘€‚A€‚ÿConstructor that takes approximate number of children.Z.HŒ}}, (€\€T”A‚S~‚A€ƒ‚ÿstatic voidsetNumRenderCaches(int howMany)c3ªŒ}g}0 .€g€”‘€‚A€€€‚ÿBy default, each separator node maintains 2 render caches. (This is to allow two different representations, such as filled and wireframe, to both be cached.) The setNumRenderCaches() method sets the number of render caches each separator will have. Each render cache uses memory, so increasing this number may increase the memory requirements of the application. This method affects only separators that are created after it is called, not separators that were created before. Setting the number of caches to 0 turns off render caching globally from then on.†W} À}/ .€®€”‘€‚A€ã!§˜m‰‚ÿThis value can also be specified via environment variable IV_SEPARATOR_MAX_CACHES.g} À}oD}N"g}ZÀ}, (€D€T”A‚S~‚A€ƒ‚ÿstatic intgetNumRenderCaches()X/ À}²À}) "€^€”‘€‚A€‚ÿReturns the current number of render caches.U#ZÀ}Á}2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*²À}ZÁ}) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8Á}’Á}& €$€‚A€‚ÿACTION BEHAVIORì•ZÁ}~Â}W |€+€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ã¹_ØS‰ãàê‰ãɓ℉ãòÓ}ª‰€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoHandleEventAction, SoRayPickAction, SoSearchAction•i’Á}Ã}, (€Ò€”‘€‚A€€‚ÿSaves the current traversal state, traverses all children, and restores the previous traversal state.<~Â}OÃ}& €,€‚A€‚ÿFILE FORMAT/DEFAULT8Ã}‡Ã}* $€€P„7|‚€‚ÿSeparator {‡TOÃ}Ä}3 6€¨€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTO}1 ‡Ã}?Ä}& €€‚€‚ÿSEE ALSOe*Ä}¤Ä}; F€T€”‘€‚ã(ç –€‰€ãáGŒw€‰‚ÿSoSelection, SoTransformSeparator??Ä}ãÄ}155¥‚ú”„àsãÄ}Å}/‰~SoSeparatorKit6¤Ä}Å}% €"€ˆˆ€‚ÿSoSeparatorKit*ãÄ}CÅ}# €€€‚ÿNAMEQ+Å}”Å}& €V€”‘€€‚ÿSoSeparatorKit - separator nodekit class3CÅ}ÇÅ}# € €€‚ÿINHERITS FROM¬S”Å}sÆ}Y ‚€¦€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoSeparatorKit2 ÇÅ}¥Æ}& €€€€ ‚ÿSYNOPSISV0sÆ}ûÆ}& €`€”‘€€‚ÿ#include 殮Æ}êÇ}I `€M€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum CacheEnabled{SoSeparatorKit::OFFNever build or use a cacheSoSeparatorKit::ONAlways try to build a cacheSoSeparatorKit::AUTOAutomatic caching}M$ûÆ}7È}) "€H€”‘€‚A€‚ÿFields from class SoSeparatorKit:³iêÇ}êÈ}J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingL#7È}6É}) "€F€”‘€‚A€‚ÿParts from class SoSeparatorKit: ±êÈ}BÊ}[ „€c€T”A‚S~‚A€ãX«]˜‰ƒ‚ãNw¶°‰ƒ‚ã­µš‰ƒ‚ã¼ýÓ‰ƒ‚ãqŠ•±‰ƒ‚ã½á–‰ƒ‚ÿ(SoPickStyle)pickStyle(SoAppearanceKit)appearance(SoUnits)units(SoTransform)transform(SoTexture2Transform)texture2Transform(SoNodeKitListPart)childListO 6É}‘Ê}/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%BÊ}èÊ}2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListN%‘Ê}6Ë}) "€J€”‘€‚A€‚ÿMethods from class SoSeparatorKit:²vèÊ}èË}< H€ì€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoSeparatorKit()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"6Ë}9Ì}/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°èË}yÎ} î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}9Ì}8Ï}B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)NyÎ}†Ï}/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|8Ï}~n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOve†Ï}~¤Ä}rride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)†Ï}f~/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®~™~… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHf~!~@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N™~o~/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ!~¦~Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!o~ö~/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)¦~K~, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+ö~¢~, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4K~Ö~& €€‚A€‚ÿDESCRIPTIONèp¢~¾ ~x ¾€á€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿA nodekit that is used for creating nodekit hierarchies. SoSeparatorKit contains a transform part, a childList part, and a few others in its catalog. The transform part (an SoTransform node) affects all of the children in the childList. Each of these children must be an SoSeparatorKit or from a class that is derived from SoSeparatorKit (e.g., SoShapeKit and SoWrapperKit). Since all members of the childList are in turn SoSeparatorKits, and each contains a transform, these nested lists allow you to create a hierarchy of motion, in which each transform affects an entire subgraph of nodekits.ñ…Ö~¯ ~l ¦€ €”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€‚ÿThe other parts added to the catalog for the SoSeparatorKit are pickStyle, appearance, units and texture2Transform. Furthermore, since SoSeparator is derived from SoBaseKit, it inherits the callbackList part. This is a list of SoCallback and/or SoEventCallback nodes which enable the SoSeparatorKit to perform special callbacks whenever an action is applied to it.o'¾ ~ ~H ^€O€”‘€‚A€€€€€€€€€€€‚ÿBy creating the pickStyle part, a user can alter the pick style for the entire nodekit hierarchy. The appearance part is an SoAppearanceKit nodekit. Note that all parts contained in the SoAppearanceKit catalog can be accessed as if they were part of the SoSeparatorKit. For example:U-¯ ~s ~( €Z€Ù€‚A€‚ÿmyMtl = mySepKit->getPart("material",TRUE)+ ~ž ~( €€Ù€‚A€‚ÿ/s ~Í ~) "€ €”‘€‚A€‚ÿandN&ž ~~( €L€Ù€‚A€‚ÿmySepKit->setPart("material",myMtl)+Í ~F~( €€Ù€‚A€‚ÿZ+~ ~/ .€V€”‘€‚A€€€‚ÿSee SoBaseKit for further explanation./ F~Ï~& €€‚A€‚ÿFIELDSM ~~2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumrenderCachingU,Ï~q~) "€X€”‘€‚A€‚ÿSet render caching mode. Default is AUTO.R ~Ã~2 4€@€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumboundingBoxCaching±‡q~€@~* "€€”‘€‚A€‚ÿSet bounding box cÃ~€@~¤Ä}aching mode. Default is ON. Setting this value to AUTO is equivalent to ON - automatic culling is not implemented.MÃ~Í@~2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumrenderCulling¬‚€@~yA~* "€€”‘€‚A€‚ÿSet render culling mode. Default is OFF. Setting this value to AUTO is equivalent to ON - automatic culling is not implemented.KÍ@~ÄA~2 4€2€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumpickCullingS*yA~B~) "€T€”‘€‚A€‚ÿSet pick culling mode. Default is AUTO..ÄA~EB~& €€‚A€‚ÿPARTSNB~“B~2 4€8€T”A‚S~‚A€ãX«]˜‰ƒ‚ÿ(SoPickStyle)pickStyleÕ¥EB~hC~0 .€K€”‘€‚A€€€‚ÿAn SoPickStyle property node that can be used to set the picking style of its children. This part is NULL by default, but is created automatically if necessary.S!“B~»C~2 4€B€T”A‚S~‚A€ãNw¶°‰ƒ‚ÿ(SoAppearanceKit)appearanceܬhC~—D~0 .€Y€”‘€‚A€€€‚ÿAn SoAppearanceKit nodekit which can be used to set the appearance properties of its children. This part is NULL by default, but is created automatically if necessary.F»C~ÝD~2 4€(€T”A‚S~‚A€ã­µš‰ƒ‚ÿ(SoUnits)unitsÙ©—D~¶E~0 .€S€”‘€‚A€€€‚ÿAn SoUnits node which can be used to set the types of units, (e.g., feet), of its children. This part is NULL by default, but is created automatically if necessary.NÝD~F~2 4€8€T”A‚S~‚A€ã¼ýÓ‰ƒ‚ÿ(SoTransform)transform踶E~ìF~0 .€q€”‘€‚A€€€‚ÿAn SoTransform node which can be used to set the overall position, orientation, and scale of its children. This part is NULL by default, but is created automatically if necessary.^,F~JG~2 4€X€T”A‚S~‚A€ãqŠ•±‰ƒ‚ÿ(SoTexture2Transform)texture2Transformë»ìF~5H~0 .€w€”‘€‚A€€€‚ÿAn SoTexture2Transform node which can be used to apply a transformation to any textures used by its children. This part is NULL by default, but is created automatically if necessary.T"JG~‰H~2 4€D€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)childListu5H~þJ~` Ž€+€”‘€‚A€€€€€€€€€€€€€€€€€€€‚ÿThis part contains the children nodekits of this SoSeparatorKit. This part is a list part and can have multiple children. This part is NULL by default, but is created automatically when the first child is added to the childList. Also, when asked to build a member of the childList, the separatorKit will build an SoShapeKit by default. So if the childList part is NULL, and you call: getPart("childList[0]", TRUE), the separator kit will create the childList and add an SoShapeKit as the new element in the list.0 ‰H~.K~& €€‚A€‚ÿMETHODS@þJ~nK~, (€(€T”A‚S~‚A€ƒ‚ÿSoSeparatorKit()8.K~¦K~) "€€”‘€‚A€‚ÿConstructor.uCnK~L~2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() constu@¦K~L~5 :€€€”‘€‚A€€€€€‚ÿReturns an SoNodekitCatalog for the class SoSeparatorKit.U#L~åL~2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*L~8M~) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6åL~nM~& € €‚A€‚ÿCATALOG PARTS;8M~©M~- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜nM~AN~~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/©M~O~#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2AN~ÂO~#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes¹)O~‡€~#ð€RÜI, “ ’ €€ÿ€€ÂO~‡€~¤Ä}€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿpickStylePickStyle--yes¾.ÂO~E~#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿappearanceAppearanceKit--yes±!‡€~ö~#ð€BÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€&€ÿ€(€€€‚ÿ€4€€€‚ÿÿÿunitsUnits--yes¹)E~¯‚~#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿtransformTransform--yesÉ9ö~xƒ~#ð€rÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€V€ÿ€X€€€‚ÿ€d€€€‚ÿÿÿtexture2TransformTexture2Transform--yes¿/¯‚~7„~#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿchildListNodeKitListPart--yes,xƒ~c„~' € €€‚€‚ÿa67„~Ä„~+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’1c„~V…~a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8Ä„~ï…~a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback?V…~.†~' €0€€‚€‚ÿFILE FORMAT/DEFAULT;ï…~i†~* $€"€P„7|‚€‚ÿSeparatorKit {Å.†~p‡~B R€‹€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOcallbackListNULLpickStyleNULLappearanceNULLunitsNULLtransformNULLtexture2TransformNULLchildListNULL}1 i†~¡‡~& €€‚€‚ÿSEE ALSOŽÚp‡~/‰~´ 6µ€”‘€‚ãNw¶°€‰€€ãib‰€ãásÆú€‰€ã€ÀÏ€‰€ã0d$€‰€ã•£&ô€‰€ã½á–€‰€ã}选€ãõˆ¨f€‰€ã’o>€ãЃ'€‰€ã°çT€‰‚ÿSoAppearanceKit, SoBaseKit, SoCameraKit, SoLightKit, SoNodeKit, SoNodeKitDetail, SoNodeKitListPart, SoNodeKitPath, SoNodekitCatalog, SoSceneKit, SoShapeKit, SoWrapperKit8¡‡~g‰~1u tí¢ƒýtg‰~–‰~ÉÆ~SoShape/ /‰~–‰~% €€ˆˆ€‚ÿSoShape*g‰~À‰~# €€€‚ÿNAMEZ4–‰~Š~& €h€”‘€€‚ÿSoShape - abstract base class for all shape nodes3À‰~MŠ~# € €€‚ÿINHERITS FROM‰<Š~ÖŠ~M j€x€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape2 MŠ~‹~& €€€€ ‚ÿSYNOPSISiBÖŠ~q‹~' €„€”‘€€‚‚ÿ#include Methods from class SoShape:U#‹~Æ‹~2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()Nq‹~Œ~/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Æ‹~~n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Œ~è~/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ~YÀ~ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) conè~YÀ~/‰~stSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHè~áÀ~@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)FYÀ~'Á~) "€:€”‘€‚A€‚ÿMethods from class SoBase:7ÞáÀ~^Â~Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4'Á~’Â~& €€‚A€‚ÿDESCRIPTIONÁ‘^Â~SÃ~0 .€#€”‘€‚A€€€‚ÿThis node is the abstract base class for all shape (geometry) nodes. All classes derived from SoShape draw geometry during render traversal.0 ’Â~ƒÃ~& €€‚A€‚ÿMETHODSU#SÃ~ØÃ~2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ƒÃ~+Ä~) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<ØÃ~gÄ~& €,€‚A€‚ÿFILE FORMAT/DEFAULT“j+Ä~úÄ~) "€Ô€”‘€‚A€‚ÿThis is an abstract class. See the reference page of a derived class for the format and default values.1 gÄ~+Å~& €€‚A€‚ÿSEE ALSOžÞúÄ~ÉÆ~À N½€”‘€‚Aãï9€‰€ãAA9€‰€ãþ‚dñ€‰€ã|Ťã€‰€ã^`ˆ½€‰€ãÓÂ.€‰€ã½)×n€‰€ãsBmf€‰€ãЃ'€‰€ãñd뀉€ãéwš€‰€ãêwš€‰€ã¹êZY€‰‚ÿSoCone, SoCube, SoCylinder, SoIndexedNurbsCurve, SoIndexedNurbsSurface, SoNurbsCurve, SoNurbsSurface, SoShapeHints, SoShapeKit, SoSphere, SoText2, SoText3, SoVertexShape= +Å~Ç~1WýúþuÇ~:Ç~‘DSoShapeHints4ÉÆ~:Ç~% €€ˆˆ€‚ÿSoShapeHints*Ç~dÇ~# €€€‚ÿNAME]7:Ç~ÁÇ~& €n€”‘€€‚ÿSoShapeHints - node that provides hints about shapes3dÇ~ôÇ~# € €€‚ÿINHERITS FROMŽAÁÇ~‚È~M j€‚€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShapeHints2 ôÇ~´È~& €€€€ ‚ÿSYNOPSISQ+‚È~É~& €V€”‘€€‚ÿ#include ‹´È~Ë~s ´€1€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€‚ÿenum VertexOrdering{SoShapeHints::UNKNOWN_ORDERINGOrdering of vertices is unknownSoShapeHints::CLOCKWISEFace vertices are ordered clockwise (from the outside)SoShapeHints::COUNTERCLOCKWISEFace vertices are ordered counterclockwise (from the outside)}enum ShapeType{SoShapeHints::UNKNOWN_SHAPE_TYPENothing is known about the shapeSoShapeHints::SOLIDThe shape encloses a volume}enum FaceType{SoShapeHints::UNKNOWN_FACE_TYPENothing is known about facesSoShapeHints::CONVEXAll faces are convex}K"É~ÛË~) "€D€”‘€‚A€‚ÿFields from class SoShapeHints:§]Ë~‚Ì~J d€º€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ã0â1‰ƒ‚ÿSoSFEnumvertexOrderingSoSFEnumshapeTypeSoSFEnumfaceTypeSoSFFloatcreaseAngleL#ÛË~ÎÌ~) "€F€”‘€‚A€‚ÿMethods from class SoShapeHints:g3‚Ì~5Í~4 8€f€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoShapeHints()static SoTypegetClassTypeId()NÎÌ~ƒÍ~/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|5Í~ÿÎ~n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ƒÍ~WÏ~/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÿÎ~È 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBooWÏ~ÈÉÆ~lhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHWÏ~P@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÈž/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞPÕY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ž & €€‚A€‚ÿDESCRIPTIONv@Õ6 :€€”‘€‚A€€€€€‚ÿBy default, Open Inventor assumes very little about the shapes it renders. You can use the SoShapeHints node to indicate that vertex-based shapes (those derived from SoVertexShape) are solid, contain ordered vertices, or contain convex faces. For fastest rendering, specify SOLID, COUNTERCLOCKWISE, CONVEX shapes."ø ¡* "€ñ€”‘€‚A€‚ÿThese hints allow Open Inventor to optimize certain rendering features. Optimizations that may be performed include enabling back-face culling and disabling two-sided lighting. For example, if an object is solid and has ordered vertices, Open Inventor turns on backface culling and turns off two-sided lighting. If the object is not solid but has ordered vertices, it turns off backface culling and turns on two-sided lighting. In all other cases, both backface culling and two-sided lighting are off.Aùâ H ^€ó€”‘€‚A€€€€€€€€€€€‚ÿThe SoShapeHints node also affects how default normals are generated. When a node derived from SoVertexShape has to generate default normals, it uses the creaseAngle field to determine which edges should be smooth-shaded and which ones should have a sharp crease. The crease angle is the angle between surface normals on adjacent polygons. For example, a crease angle of .5 radians means that an edge between two adjacent polygonal faces will be smooth shaded if the normals to the two faces form an angle that is less than .5 radians (about 30 degrees). Otherwise, it will be faceted. Normal generation is fastest when the creaseAngle is 0 (the default), producing one normal per facet. A creaseAngle of pi produces one averaged normal per vertex./ ¡ & €€‚A€‚ÿFIELDSNâ _ 2 4€8€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumvertexOrderingÚ c * "€µ€”‘€‚A€‚ÿIndicates how the vertices of faces are ordered. CLOCKWISE ordering means that the vertices of each face form a clockwise loop around the face, when viewed from the outside (the side toward which the normal points).I_ ¬ 2 4€.€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumshapeTypeè¾c ” * "€}€”‘€‚A€‚ÿIndicates whether the shape is known to enclose a volume (SOLID) or not. If the inside (the side away from the surface normal) of any part of the shape is visible, the shape is not solid.H¬ Ü 2 4€,€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumfaceTypeP&” ,* "€M€”‘€‚A€‚ÿIndicates whether each face is convex. Because the penalty for non-convex faces is very steep (faces must be triangulated expensively), the default assumes all faces are convex. Therefore, shapes with concave faces may not be displayed correctly unless this hint is set to UNKNOWN_FACE_TYPE.LÜ x2 4€4€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatcreaseAngleÏ¥,S@* "€K€”‘€‚A€‚ÿIndicates the minimum angle (in radians) between two adjacent face normals required to form axS@ÉÆ~ sharp crease at the edge when default normals are computed and used.0 xƒ@& €€‚A€‚ÿMETHODS>S@Á@, (€$€T”A‚S~‚A€ƒ‚ÿSoShapeHints()]4ƒ@A) "€h€”‘€‚A€‚ÿCreates a shape hints node with default settings.U#Á@sA2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*AÆA) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8sAþA& €$€‚A€‚ÿACTION BEHAVIOR›WÆA™BD X€®€”‘€‚Aã©öø(€‰ã³DfL‰ãɓ℉ããS¯+‰€‚ÿSoGLRenderAction, SoCallbackAction, SoRayPickAction, SoGetBoundingBoxAction~RþAC, (€¤€”‘€‚A€€‚ÿSets the state to contain the hints; sets up optimizations based on the hints.<™BSC& €,€‚A€‚ÿFILE FORMAT/DEFAULT9CŒC* $€€P„7|‚€‚ÿShapeHints {“`SCD3 6€À€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿvertexOrderingUNKNOWN_ORDERINGshapeTypeUNKNOWN_SHAPE_TYPEfaceTypeCONVEXcreaseAngle0}1 ŒCPD& €€‚€‚ÿSEE ALSOAD‘D/ .€$€”‘€‚ã¹êZY€‰‚ÿSoVertexShape; PDÌD10J¢ƒý!†vÌDþDlN€SoShapeKit2 ‘DþD% €€ˆˆ€‚ÿSoShapeKit*ÌD(E# €€€‚ÿNAMEI#þDqE& €F€”‘€€‚ÿSoShapeKit - shape nodekit class3(E¤E# € €€‚ÿINHERITS FROMÉdqEmFe š€È€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ãOËr€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoSeparatorKit > SoShapeKit2 ¤EŸF& €€€€ ‚ÿSYNOPSIS}PmFG- *€ €”‘€€‚ãOËr‰‚ÿ#include Fields from class SoSeparatorKit:³iŸFÏGJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingHGH) "€>€”‘€‚A€‚ÿParts from class SoShapeKit:"ŸÏG9Jƒ Ô€?€T”A‚S~‚A€ãÍ\Y‰ƒ‚ãÞ!€‰ƒ‚ãRÜ4‰ƒ‚ãf;1c‰ƒ‚ãsBmf‰ƒ‚ã[Eà‰ƒ‚ã\Eà‰ƒ‚ãKÕl¿‰ƒ‚ã·ºz‰ƒ‚ã“y‰ƒ‚ã-ÒÀ‰ƒ‚ÿ(SoSeparator)shapeSeparator(SoMaterialBinding)materialBinding(SoNormalBinding)normalBinding(SoTextureCoordinateBinding)textureCoordinateBinding(SoShapeHints)shapeHints(SoCoordinate3)coordinate3(SoCoordinate4)coordinate4(SoNormal)normal(SoTextureCoordinate2)textureCoordinate2(SoTextureCoordinateFunction)textureCoordinateFunction(SoProfileCoordinate2)profileCoordinate2ÌHKK d€€T”A‚S~‚A€ã.ÒÀ‰ƒ‚ã½á–‰ƒ‚ã¼ýÓ‰ƒ‚ã9ÖEš‰ƒ‚ÿ(SoProfileCoordinate3)profileCoordinate3(SoNodeKitListPart)profileList(SoTransform)localTransform(SoShape)shapeT%9JYK/ .€J€”‘€‚A€ãOËr‰‚ÿParts from class SoSeparatorKit: ±KeL[ „€c€T”A‚S~‚A€ãX«]˜‰ƒ‚ãNw¶°‰ƒ‚ã­µš‰ƒ‚ã¼ýÓ‰ƒ‚ãqŠ•±‰ƒ‚ã½á–‰ƒ‚ÿ(SoPickStyle)pickStyle(SoAppearanceKit)appearance(SoUnits)units(SoTransform)transform(SoTexture2Transform)texture2Transform(SoNodeKitListPart)childListO YK´L/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%eL M2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListJ!´LUM) "€B€”‘€‚A€‚ÿMethods from class SoShapeKit:®r MN< H€ä€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoShapeKit()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"UMTN/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°N € î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const TN €‘DSoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}TN_B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)N €­/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|_)ƒn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)­ƒ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®)ƒ´…… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHƒ<†@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N´…Š†/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ<†Á‡Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!Š†ˆ/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)Á‡fˆ, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+ˆ½ˆ, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4fˆñˆ& €€‚A€‚ÿDESCRIPTIONô¸½ˆå‰< F€q€”‘€‚A€€€€€€€‚ÿA nodekit that is used for creating a shape (i.e. geometry). SoShapeKit is derived from SoSeparatorKit and SoBaseKit, and thus inherits all the parts defined by these classes.â ñˆÇŠB R€A€”‘€‚A€€€€€€€€€‚ÿFurthermore, SoShapeKit adds numerous parts that can be used to define a variety of shape objects, a localTransform part, and of course a shape part.Ùå‰ÜŒ< F€³€”‘€‚A€€€€€€€‚ÿAll of the property nodes requires to define any of the Open Inventor shapes are included as parts in this class. Not all of these parts (nodes) are needed for any one type of shape. For example, if you set the shape part to be an SoSphere node, then it is not necessary to create a profileCoordinate3 part since it will be ignored in drawing the sphere. (And the unneeded parts will not be created, so there is no performance penalty for using this class of node.щNJ­ŽH ^€€”‘€‚A€€€€€€€€€€€‚ÿThis class contains two private parts. They are both SoSeparator nodes. One of them sits just below the nodekit itself, and serves to contain all properties within this nodekit from affecting nodes that come after this nodekit. The second separator sits above the shape part, and serves to cache the shape even when the transform, localTransform, or appearance parts are changing..܌ێ& €€‚A€‚ÿPARTSS!­Ž.2 4€B€T”A‚S~‚A€ãÍ\Y‰ƒ‚ÿ(SoSeparator)shapeSeparatorΞێ À0 .€=€”‘€‚A€€€‚ÿThis is a private part. The parent node of the actual shape part. It is an SoSeparator and is NULL by default, but is created automatically if necessary.. À‘DZ(.fÀ2 4€P€T”A‚S~‚A€ãÞ!€‰ƒ‚ÿ(SoMaterialBinding)materialBindingÓ£ À9Á0 .€G€”‘€‚A€€€‚ÿAn SoMaterialBinding node that can be used to set the material binding for the shape. This part is NULL by default, but is created automatically if necessary.V$fÀÁ2 4€H€T”A‚S~‚A€ãRÜ4‰ƒ‚ÿ(SoNormalBinding)normalBindingÏŸ9Á^Â0 .€?€”‘€‚A€€€‚ÿAn SoNormalBinding node that can be used to set the normal binding for the shape. This part is NULL by default, but is created automatically if necessary.l:ÁÊÂ2 4€t€T”A‚S~‚A€ãf;1c‰ƒ‚ÿ(SoTextureCoordinateBinding)textureCoordinateBindingæ¶^°Ã0 .€m€”‘€‚A€€€‚ÿAn SoTextureCoordinateBinding node that can be used to set the texture coordinate binding for the shape. This part is NULL by default, but is created automatically if necessary.PÊÂÄ2 4€<€T”A‚S~‚A€ãsBmf‰ƒ‚ÿ(SoShapeHints)shapeHintsÉ™°ÃÉÄ0 .€3€”‘€‚A€€€‚ÿAn SoShapeHints node that can be used to set the shape hints for the shape. This part is NULL by default, but is created automatically if necessary.R ÄÅ2 4€@€T”A‚S~‚A€ã[Eà‰ƒ‚ÿ(SoCoordinate3)coordinate3بÉÄóÅ0 .€Q€”‘€‚A€€€‚ÿAn SoCoordinate3 node that can be used to set the 3D coordinates for a vertex-based shape. This part is NULL by default, but is created automatically if necessary.R ÅEÆ2 4€@€T”A‚S~‚A€ã\Eà‰ƒ‚ÿ(SoCoordinate4)coordinate4Ò¢óÅÇ0 .€E€”‘€‚A€€€‚ÿAn SoCoordinate4 node that can be used to set the 4D coordinates for a NURBS shapes. This part is NULL by default, but is created automatically if necessary.HEÆ_Ç2 4€,€T”A‚S~‚A€ãKÕl¿‰ƒ‚ÿ(SoNormal)normalÓ£Ç2È0 .€G€”‘€‚A€€€‚ÿAn SoNormal node that can be used to set the normal vectors for a vertex-based shape. This part is NULL by default, but is created automatically if necessary.`._Ç’È2 4€\€T”A‚S~‚A€ã·ºz‰ƒ‚ÿ(SoTextureCoordinate2)textureCoordinate2ä´2ÈvÉ0 .€i€”‘€‚A€€€‚ÿAn SoTextureCoordinate2 node that can be used to set the texture coordinates for a vertex-based shape. This part is NULL by default, but is created automatically if necessary.n<’ÈäÉ2 4€x€T”A‚S~‚A€ã“y‰ƒ‚ÿ(SoTextureCoordinateFunction)textureCoordinateFunctionÑvÉåÊ0 .€£€”‘€‚A€€€‚ÿAn SoTextureCoordinateFunction node that can be used to set the a procedural texture coordinates function for a vertex-based shape. This part is NULL by default, but is created automatically if necessary.`.äÉEË2 4€\€T”A‚S~‚A€ã-ÒÀ‰ƒ‚ÿ(SoProfileCoordinate2)profileCoordinate2ÌåÊGÌ6 :€™€”‘€‚A€€€€€‚ÿAn SoProfileCoordinate2 node that can be used to set the 2D profile coordinates for a shape that uses them, (e.g., SoText3). This part is NULL by default, but is created automatically if necessary.`.E˧Ì2 4€\€T”A‚S~‚A€ã.ÒÀ‰ƒ‚ÿ(SoProfileCoordinate3)profileCoordinate3ÑGÌ®Í6 :€£€”‘€‚A€€€€€‚ÿAn SoProfileCoordinate3 node that can be used to set the 3D profile coordinates for a shape that uses them, (e.g., SoNurbsCurve). This part is NULL by default, but is created automatically if necessary.V$§ÌÎ2 4€H€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)profileList÷Á®ÍûÎ6 :€ƒ€”‘€‚A€€€€€‚ÿAn SoProfileList node that can be used to set the profile curve for a shape that uses them, (e.g., SoNurbsCurve). This part is NULL by default, but is created automatically if necessary.S!ÎNÏ2 4€B€T”A‚S~‚A€ã¼ýÓ‰ƒ‚ÿ(SoTransform)localTransformΞûÎ(€0 .€=€”‘€‚A€€€‚ÿAn SoTransform node that can be used to set a local transformation on the shape. This part is NULL by default, but is created aNÏ(€‘Dutomatically if necessary.FNÏn€2 4€(€T”A‚S~‚A€ã9ÖEš‰ƒ‚ÿ(SoShape)shape9å(€§€T v€Ë€”‘€‚A€€€€€€€€€€€€€€€‚ÿThis is the part which specifies the actual shape node. This can be any node derived from SoShape By default, an SoCube is created. It is important to set all of the appropriate parts within this nodekit to suit the type of SoShape that is used. For example, if the shape part is set to an SoFaceSet, then the coordinate3 shape and probably the normal shape would be set as well. See the reference page of the shape used for details on which other nodes are necessary.0 n€×€& €€‚A€‚ÿMETHODS<§€€, (€ €T”A‚S~‚A€ƒ‚ÿSoShapeKit()8×€K€) "€€”‘€‚A€‚ÿConstructor.uC€À€2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() constq<K€1€5 :€x€”‘€‚A€€€€€‚ÿReturns an SoNodekitCatalog for the class SoShapeKit.U#À€†€2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*1€Ù€) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6†€€& € €‚A€‚ÿCATALOG PARTS;Ù€J€- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜€â€~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/J€¡€#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2â€c€#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes¹)¡€€#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿpickStylePickStyle--yes¾.c€Ú€#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿappearanceAppearanceKit--yes±!€‹ €#ð€BÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€&€ÿ€(€€€‚ÿ€4€€€‚ÿÿÿunitsUnits--yes¹)Ú€D €#ð€RÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€D€€€‚ÿÿÿtransformTransform--yesÉ9‹ € €#ð€rÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€V€ÿ€X€€€‚ÿ€d€€€‚ÿÿÿtexture2TransformTexture2Transform--yes¿/D €Ì €#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿchildListNodeKitListPart--yesÅ5 €‘ €#ð€jÜI, “ ’ €€ÿ€€€€‚ÿ€(€€€‚ÿ€N€ÿ€P€€€‚ÿ€\€€€‚ÿÿÿmaterialBindingMaterialBinding--yesÁ1Ì €R €#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿnormalBindingNormalBinding--yesÚI‘ €,€‘#ò€’ÜI, “ ’ €€ÿ$€€€€‚€‚ÿ€@€€‚ÿ€v€ÿ€x€€€‚ÿ€„€€€‚ÿÿÿtextureCoordinate-BindingTextureCoordinateBinding--yes»+R €ç€#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿshapeHintsShapeHints--yes½-,€¤€#ð€ZÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€>€ÿ€@€€€‚ÿ€L€€€‚ÿÿÿcoordinate3Coordinate3--yes½-ç€m@€#ð€ZÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ¤€m@€‘D€>€ÿ€@€€€‚ÿ€L€€€‚ÿÿÿcoordinate4Coordinate4--yes³#¤€ A€#ð€FÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€*€ÿ€,€€€‚ÿ€8€€€‚ÿÿÿnormalNormal--yesË;m@€ëA€#ð€vÜI, “ ’ €€ÿ€€€€‚ÿ€.€€€‚ÿ€Z€ÿ€\€€€‚ÿ€h€€€‚ÿÿÿtextureCoordinate2TextureCoordinate2--yesöc A€áB€“#ö€ÆÜI, “ ’ €€ÿ$€€€€‚€‚ÿ€B€€‚ÿ€z€ÿ&€|€€€‚€‚‚ÿ€º€€‚ÿÿÿtextureCoordinate-FunctionTextureCoordinateFunctionTextureCoordinateDefaultyesË;ëA€¬C€#ð€vÜI, “ ’ €€ÿ€€€€‚ÿ€.€€€‚ÿ€Z€ÿ€\€€€‚ÿ€h€€€‚ÿÿÿprofileCoordinate2ProfileCoordinate2--yesË;áB€wD€#ð€vÜI, “ ’ €€ÿ€€€€‚ÿ€.€€€‚ÿ€Z€ÿ€\€€€‚ÿ€h€€€‚ÿÿÿprofileCoordinate3ProfileCoordinate3--yesÁ1¬C€8E€#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿprofileListNodeKitListPart--yes¾.wD€öE€#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿlocalTransformTransform--yes²"8E€¨F€#ð€DÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€&€ÿ€(€€€‚ÿ€8€€€‚ÿÿÿshapeShapeCubeno,öE€ÔF€' € €€‚€‚ÿe7¨F€9G€. ,€n€”‚±€ƒ€€ ‚ÿExtra Information for List Parts from Above Table’1ÔF€ËG€a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™89G€dH€a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback?ËG€£H€' €0€€‚€‚ÿFILE FORMAT/DEFAULT7 dH€ÚH€* $€€P„7|‚€‚ÿShapeKit {¾£H€ðJ€X ~€}€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOcallbackListNULLpickStyleNULLappearanceNULLunitsNULLtransformNULLtexture2TransformNULLchildListNULLmaterialBindingNULLnormalBindingNULLtextureCoordinateBindingNULLshapeHintsNULLcoordinate3NULLcoordinate4NULLnormalNULLtextureCoordinate2NULLtextureCoordinateFunctionNULLprofileCoordinate2NULLprofileCoordinate3NULLprofileListNULLZ)ÚH€JK€1 2€R€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿlocalTransformNULLshapeCube {}}1 ðJ€{K€& €€‚€‚ÿSEE ALSOñ­JK€lN€D V‚[€”‘€‚ãNw¶°€‰€ãib€‰€ãásÆú€‰€ã€ÀÏ€‰€ã0d$€‰€ã•£&ô€‰€ã½á–€‰€ã}选€ãõˆ¨f€‰€ã’o>€ãOËr€‰€ã°çT€‰€ãï9€‰€ãAA9€‰€ãþ‚dñ€‰€ã|Ťã€‰€ã^`ˆ½€‰€ãÓÂ.€‰€ã½)×n€‰€ãsBmf€‰€ãñd뀉€ãéwš€‰€ãêwš€‰€ã¹êZY€‰‚ÿSoAppearanceKit, SoBaseKit, SoCameraKit, SoLightKit, SoNodeKit, SoNodeKitDetail, SoNodeKitListPart, SoNodeKitPath, SoNodekitCatalog, SoSceneKit, SoSeparatorKit, SoWrapperKit, SoCone, SoCube, SoCylinder, SoIndexedNurbsCurve, SoIndexedNurbsSurface, SoNurbsCurve, SoNurbsSurface, SoShapeHints, SoSphere, SoText2, SoText3, SoVertexShapeF{K€²N€1’ úþ¢w²N€ïN€*Š€SoShapeSimplifyAction=lN€ïN€% €0€ˆˆ€‚ÿSoShapeSimplifyAction*²N€O€# €€€‚ÿNAME¥ïN€¾O€& €þ€”‘€€‚ÿSoShapeSimplifyAction - simplify action that replaces shapes within a scene graph with versions that contain fewer triangles3O€ €€# € €€‚ÿINHERITS FROM¾O€ €€lN€€?¾O€Œ€€A R€~€”‘€ãïK€‰€ãŸyU€‰€€€‚ÿSoAction > SoSimplifyAction > SoShapeSimplifyAction2 €€¾€€& €€€€ ‚ÿSYNOPSISˆaŒ€€F€' €Â€”‘€€‚‚ÿ#include Methods from class SoShapeSimplifyAction:„P¾€€Ê€4 8€ €T”A‚S~‚A€ƒãê–Ìv‰‚ƒ‚ÿSoShapeSimplifyAction(SoSimplifier *_simplifier)~SoShapeSimplifyAction()X)F€"‚€/ .€R€”‘€‚A€ãŸyU‰‚ÿMethods from class SoSimplifyAction:ÁÊ€>„€[ „€ƒ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ãXíʉƒ‚ÿvoidsetSimplificationLevels(int num, const float levels[]) const float *getSimplificationLevels() const intgetNumSimplificationLevels() constvoidsetRanges(int num, const float newRanges[])const float *getRanges() constintgetNumRanges() constvoidsetSizeFactor(float size)floatgetSizeFactor() constvoidsetInlineLOD(SbBool i)SbBoolisInlineLOD() constvoidsetUrlName(const SbString name)const SbString getUrlName() constû²"‚€9…€I `€e€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒ‚ÿvoidsetVerbosity(SbBool v)SbBoolisVerbose() constvoidsetMinTriangles(int mt)intgetMinTriangles() constvoidsetRenderCulling(SbBool r)intisRenderCulling() constP!>„€‰…€/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:œ09…€%‡€l ¦€a€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual~SoAction()virtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4‰…€Y‡€& €€‚A€‚ÿDESCRIPTIONŠa%‡€ã‡€) "€Â€”‘€‚A€‚ÿThis class traverses a scene graph and replaces every complex shape with a simplified version.0 Y‡€ˆ€& €€‚A€‚ÿMETHODS„P㇀—ˆ€4 8€ €T”A‚S~‚A€ƒãê–Ìv‰‚ƒ‚ÿSoShapeSimplifyAction(SoSimplifier *_simplifier)~SoShapeSimplifyAction()³‰ˆ€J‰€* "€€”‘€‚A€‚ÿConstructor and destructor. The algorithm used for simplifying is defined by the SoSimplifier class that is passed in the constructor.1 —ˆ€{‰€& €€‚A€‚ÿSEE ALSO¯\J‰€*Š€S v€¸€”‘€‚AãïK€‰€㊆Ř€‰€ãŸyU€‰€ãFÙ €‰‚ÿSoAction, SoLevelOfSimplification, SoSimplifyAction, SoGlobalSimplifyAction: {‰€dŠ€1È!†§ˆxdŠ€•Š€ Ï€SoShuttle1 *Š€•Š€% €€ˆˆ€‚ÿSoShuttle*dŠ€¿Š€# €€€‚ÿNAMEZ4•Š€‹€& €h€”‘€€‚ÿSoShuttle - animated oscillating translation node3¿Š€L‹€# € €€‚ÿINHERITS FROMÎi‹€Œ€e š€Ò€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€ã%ÑP€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoTranslation > SoShuttle2 L‹€LŒ€& €€€€ ‚ÿSYNOPSISlEŒ€¸Œ€' €Š€”‘€€‚‚ÿ#include Fields from class SoShuttle:žTLŒ€V€J d€¨€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ÿSoSFVec3ftranslation0SoSFVec3ftranslation1SoSFFloatspeedSoSFBoolonT%¸Œ€ª€/ .€J€”‘€‚A€ã%ÑP‰‚ÿFields from class SoTranslation:LV€ö€2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationI ª€?Ž€) "€@€”‘€‚A€‚ÿMethods from class SoShuttle:d0ö€£Ž€4 8€`€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoShuttle()static SoTypegetClassTypeId()N?Ž€ñŽ€/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|£Ž€yÀ€n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatiñŽ€yÀ€*Š€c SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ñŽ€ÑÀ€/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØyÀ€6À 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÑÀ€¾Ã€@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N6À Ä€/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7޾ÀCÅ€Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4 Ä€wÅ€& €€‚A€‚ÿDESCRIPTIONÊCŀǀN j€•€”‘€‚A€€€€€€€€€€€€€‚ÿThe SoShuttle class is derived from SoTranslation, so it applies a translation to the current transformation. Using engines connected to the realTime global field, the translation value is animated over time between two fixed translations, achieving a shuttling effect. The period of the motion can be adjusted by changing the speed field. The current translation at any time is available in the translation field, inherited from SoTranslation3 wÅ€ÂÇ€) "€€‚A€€ ‚ÿFIELDSn4Ç€0È€: D€h€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3ftranslation0SoSFVec3ftranslation1‰`ÂÇ€¹È€) "€À€”‘€‚A€‚ÿThese define the two fixed translations that are interpolated to create the shuttling motion.F0È€ÿÈ€2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatspeedc:¹È€bÉ€) "€t€”‘€‚A€‚ÿDefines the speed of the shuttle, in cycles per second.BÿÈ€¤É€2 4€ €T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolong>bÉ€ Ê€) "€|€”‘€‚A€‚ÿAllows applications to enable or disable the motion easily.0 ¤É€;Ê€& €€‚A€‚ÿMETHODS; Ê€vÊ€, (€€T”A‚S~‚A€ƒ‚ÿSoShuttle()Y0;Ê€ÏÊ€) "€`€”‘€‚A€‚ÿCreates a shuttle node with default settings.U#vÊ€$Ë€2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ÏÊ€wË€) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8$Ë€¯Ë€& €$€‚A€‚ÿACTION BEHAVIOR›WwË€JÌ€D X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActionƒW¯Ë€ÍÌ€, (€®€”‘€‚A€€‚ÿConcatenates interpolated translation value with the current transformation matrix.IJ̀̀2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixActionxLÍÌ€ŽÍ€, (€˜€”‘€‚A€€‚ÿReturns transformation matrix specified by the interpolated translation.<Í€ÊÍ€& €,€‚A€‚ÿFILE FORMAT/DEFAULT6 ŽÍ€Î€* $€€P„7|‚€‚ÿShuttle {‚MÊÍ€‚΀5 :€š€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0 0translation00 0 0translation10 0 0speed1onTRUE}1 ΀³Î€& €€‚€‚ÿSEE ALSOW‚΀ Ï€; F€8€”‘€‚ãŠäÀO€‰€㪲š€‰‚ÿSoPendulum, SoRotor= ³Î€GÏ€1Ò ¢ßyGÏ€{Ï€" SoSimplifier4 Ï€{Ï€% €€ˆˆ€‚ÿSoSimplifier*GÏ€¥Ï€# €€€‚ÿNAME‚\{Ï€3& €¸€”‘€€‚ÿSoSimplifier - abstract base class for objects that ¥Ï€3 Ï€encapsulate simplification algorithms3¥Ï€f# € €€‚ÿINHERITS FROM93Ÿ) "€ €”‘€€€‚ÿSoSimplifier2 fÑ& €€€€ ‚ÿSYNOPSISxQŸI' €¢€”‘€€‚‚ÿ#include Methods from class SoSimplifier:ŸÑKc ”€?€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒã¨ƒõ(‰‚ƒã¨ƒõ(‰‚ƒ‚ƒ‚ã’n%9‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSoSimplifier()~SoSimplifier()virtual void beginShape(ShapeType)virtual void endShape()virtual void setVertex(const SbVec3f&)void setNormal(const SbVec3f&)void setData(int numData, const float*)void setColor(const unsigned long&)virtual SoNode* simplify(float ) = 0virtual void clear()virtual int getNumTriangles()virtual void setVerbosity(SbBool v) SbBool getVerbosity() const 4I& €€‚A€‚ÿDESCRIPTIONÖK* "€­€”‘€‚A€‚ÿThis class abstract base class for objects that encapsulates simplification algorithms. This object receives a set of triangles and returns a new list representing a simplified version of the original geometry. 0 ¯& €€‚A€‚ÿMETHODSQ#. ,€F€T”A‚S~‚A€ƒ‚ƒ‚ÿSoSimplifier()~SoSimplifier()G¯G) "€<€”‘€‚A€‚ÿConstructor and destructor.R&™, (€L€T”A‚S~‚A€ƒ‚ÿvirtual void beginShape(ShapeType)·GP* "€€”‘€‚A€‚ÿStarts a new shape, ShapeType defines which triangle organization to use. ShapeType can be one of TRIANGLES, TRIANGLE_STRIP, TRIANGLE_FAN.G™—, (€6€T”A‚S~‚A€ƒ‚ÿvirtual void endShape()Q(Pè) "€P€”‘€‚A€‚ÿEnds a shape started by beginShape().^,—F2 4€X€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvirtual void setVertex(const SbVec3f&)L#è’) "€F€”‘€‚A€‚ÿSpecifies a new vertex location.¨rF:6 <€ä€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒ‚ƒ‚ÿvoid setNormal(const SbVec3f&)void setData(int numData, const float*)void setColor(const unsigned long&)xO’²) "€ž€”‘€‚A€‚ÿMethods to set optional vertex data. These must be called before setVertex()X&: 2 4€L€T”A‚S~‚A€ã’n%9‰ƒ‚ÿvirtual SoNode* simplify(float )ѧ²Û * "€O€”‘€‚A€‚ÿPerforms the simplification on the shapes and returns a simplified node. On this class, this function is pure virtual; derived classes must implement this function.D  , (€0€T”A‚S~‚A€ƒ‚ÿvirtual void clear()I Û h ) "€@€”‘€‚A€‚ÿRemoves all shapes and reset.M! µ , (€B€T”A‚S~‚A€ƒ‚ÿvirtual int getNumTriangles()¨h ] ) "€þ€”‘€‚A€‚ÿReturns the number of triangles actually stored in the object. If called after simplify(), returns the remaining triangles. ‚Hµ ß : D€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvirtual void setVerbosity(SbBool v)SbBool getVerbosity() constb9] A ) "€r€”‘€‚A€‚ÿSets/gets whether to print messages while simplifying.1 ß r & €€‚A€‚ÿSEE ALSO°]A " S v€º€”‘€‚Aã,ꀉ€ãŸyU€‰€ã` AÓ€‰€ãFÙ €‰‚ÿSoDecimator, SoSimplifyAction, SoShapeSimplifyAction, SoGlobalSimplifyActionAr c 1마Jzc › Ö†SoSimplifyAction8" › % €&€ˆˆ€‚ÿSoSimplifyAction*c Å # €€€‚ÿNAMElF› 1& €Œ€”‘€€‚ÿSoSimplifyAction - abstract base class for simplifying scene graphs3Å d# € €€‚ÿINHERITS FROMX#1¼5 :€F€”‘€ãïK€‰€€€‚ÿSoAction > SoSimplifyAction2 dî& €€€€ ‚ÿSYNOPSIS}V¼k' €¬€”‘€€‚‚ÿ#include Methods from class SoSimplifyAction:Åî•AY €€‹€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ÿSoSimplifyAction()~SoSimplifyAction()voidsetSimplificak•A" tionLevels(int num,const float levels[]) const float *getSimplificationLevels() const intgetNumSimplificationLevels() constvoidsetRanges(int num,const float newRanges[])const float *getRanges() constintgetNumRanges() constvoidsetSizeFactor(float size)floatgetSizeFactor() constvoidsetInlineLOD(SbBool i)SbBoolisInlineLOD() constvoidsetUrlName(const SbString name)(×k½BQ p€¯€T”A‚S~‚A€ãXíʉƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚ƒ‚ÿconst SbString getUrlName() constvoidsetVerbosity(SbBool v)SbBoolisVerbose() constvoidsetMinTriangles(int mt)intgetMinTriangles() constvoidsetRenderCulling(SbBool r)intisRenderCulling() constP!•A C/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:œ0½B©Dl ¦€a€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual~SoAction()virtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4 CÝD& €€‚A€‚ÿDESCRIPTIONs©DzF* "€ç€”‘€‚A€‚ÿThis class is the base class of the simplify actions that produce versions of a scene graph with fewer triangles. The simplify actions can generate either several simplified levels of the original geometry, grouped by a LevelOfSimplification node, or just one reduced level of detail. If a single level is computed, the action creates a single IndexedTriangleFaceSet. ÄšÝD>I* "€5€”‘€‚A€‚ÿEach simplified sub-levels can be stored in regular separators or in WWWInline nodes. In this case, the urlName defines the full url to use for each WWWInline. For instance if urlName = "dir\file", the action will generate "dir\file_1.wrl","dir\file_2.wrl", and so on.When a simplify action generates Level of Simplification nodes, the range field of each Level of Simplification node can be given globally in the range field of the simplify action. If the simplify action range field is not set, the simplify action computes it automatically for each LevelOfSimplification node. In this case, the sizeFactor field can be used to customize the range computation. :zFxJ* "€!€”‘€‚A€‚ÿA minimum number of triangles can be set to stop the simplification when the object becomes too small. Specifying 0.0 for the last level inserts an empty node in the scene graph. This allows you to avoid rendering an object that is too small or too far from the viewer.0 >I¨J& €€‚A€‚ÿMETHODSY+xJK. ,€V€T”A‚S~‚A€ƒ‚ƒ‚ÿSoSimplifyAction()~SoSimplifyAction()³‰¨J´K* "€€”‘€‚A€‚ÿConstructor and destructor. The algorithm used for simplifying is defined by the SoSimplifier class that is passed in the constructor.Æ•KzL1 0€+€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿvoidsetSimplificationLevels(int num, const float levels[]) const float *getSimplificationLevels() const intgetNumSimplificationLevels() const{Q´KõM* "€£€”‘€‚A€‚ÿSets/gets number of levels of detail to produce and what percentage to produce at each level. An example array would be [1.0, 0.3, 0.1], which would generate a LevelOfSimplification node with the original geometry and then two simplified children, one with 30% of the triangles and the other with 10% of the triangles in the original.œlzL‘N0 0€Ø€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿvoidsetRanges(int num, const float newRanges[])const float *getRanges() constintgetNumRanges() constøÎõM‰O* "€€”‘€‚A€‚ÿSets/gets the ranges that will be used in the LevelOfSimplification node to decide which level of detail to display. This is optional; if not given, the size factor will be used to generate range values.k=‘N €. ,€z€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetSizeFactor(float size)floatgetSizeFactor() const‰O €" •l‰O¡€) "€Ø€”‘€‚A€‚ÿSets/gets a scale factor to use to decide what values of ranges to use in the LevelOfSimplification node.w= €: D€z€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetInlineLOD(SbBool i)SbBoolisInlineLOD() constƒZ¡€›) "€´€”‘€‚A€‚ÿIf true, each simplified child is written into a separate file using SoWWWInline nodes.ˆN#‚: D€œ€T”A‚S~‚A€ƒãXíʉ‚ãXíʉƒ‚ÿvoidsetUrlName(const SbString name)const SbString getUrlName() consttK›—‚) "€–€”‘€‚A€‚ÿSets the name used when creating Inline files for each simplified child.u;#‚ ƒ: D€v€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetVerbosity(SbBool v)SbBoolisVerbose() constX—‚ƒ) "€°€”‘€‚A€‚ÿIf true, the simplify action prints out messages at each stage of the simplification.i; ƒöƒ. ,€v€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetMinTriangles(int mt)intgetMinTriangles() constóɃé„* "€“€”‘€‚A€‚ÿSets/gets the minimum number of triangles for a simplified child; if a given percentage would create a simplified version that went below this minimum, no simplified chld is produced for this level.t@öƒ]…4 8€€€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ÿvoidsetRenderCulling(SbBool r)intisRenderCulling() const˜lé„õ…, (€Ø€”‘€‚A€ €‚ÿIf true, the "renderCulling" field will be set to ON for the Separators that hold each simplified level.5 ]…*†) "€€‚A€€‚ÿSEE ALSO¬_õ…Ö†M j€¾€”‘€‚AãïK€‰€㊆Ř€‰€ãFÙ €‰ã` AÓ‰‚ÿSoAction, SoLevelOfSimplification, SoGlobalSimplifyAction, SoShapeSimplifyActionG*†‡1Qßo†{‡[‡-ÊSoSpaceballButtonEvent>Ö†[‡% €2€ˆˆ€‚ÿSoSpaceballButtonEvent*‡…‡# €€€‚ÿNAMEkE[‡ð‡& €Š€”‘€€‚ÿSoSpaceballButtonEvent - spaceball button press and release events3…‡#ˆ# € €€‚ÿINHERITS FROM}<ð‡ ˆA R€x€”‘€ã2™|—€‰€ãüb€‰€€€‚ÿSoEvent > SoButtonEvent > SoSpaceballButtonEvent2 #ˆÒˆ& €€€€ ‚ÿSYNOPSISoF ˆAŠ) €€”‘€€‚‚‚ÿ#include #define SO_SPACEBALL_PRESS_EVENT(EVENT,BUTTON) (SoSpaceballButtonEvent::isButtonPressEvent(EVENT, SoSpaceballButtonEvent::BUTTON))#define SO_SPACEBALL_RELEASE_EVENT(EVENT,BUTTON) (SoSpaceballButtonEvent::isButtonReleaseEvent(EVENT, SoSpaceballButtonEvent::BUTTON))”ÒˆÕŒ€ ΀)€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Button{SoSpaceballButtonEvent::ANYSoSpaceballButtonEvent::BUTTON1Spaceball button 1SoSpaceballButtonEvent::BUTTON2Spaceball button 2SoSpaceballButtonEvent::BUTTON3Spaceball button 3SoSpaceballButtonEvent::BUTTON4Spaceball button 4SoSpaceballButtonEvent::BUTTON5Spaceball button 5SoSpaceballButtonEvent::BUTTON6Spaceball button 6SoSpaceballButtonEvent::BUTTON7Spaceball button 7SoSpaceballButtonEvent::BUTTON8Spaceball button 8SoSpaceballButtonEvent::PICKSpaceball pick button}V-AŠ+) "€Z€”‘€‚A€‚ÿMethods from class SoSpaceballButtonEvent:¾gÕŒéŽW |€Ï€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒ‚ƒ‚㑶p6‰ƒã2™|—‰‚㑶p6‰ƒã2™|—‰‚ÿSoSpaceballButtonEvent()static SoTypegetClassTypeId()voidsetButton(SoSpaceballButtonEvent::Button b)SoSpaceballButtonEvent::ButtongetButton() conststatic SbBoolisButtonPressEvent(const SoEvent *e,SoSpaceballButtonEvent::Button whichButton)static SbBoolisButtonReleaseEvent(const SoEvent *e,SoSpaceballButtonEvent::Button whichButton)U&+>/ .€L€”‘€‚A€ãüb‰‚ÿMethods from class SoButtonEvent:|N鎺. ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetState(SoButtonEvent::State s)SoButtonEvent::StategetState() constO >À/ .€@€”‘€‚A€ã2™|—‰‚ÿMethods from class SoºÀÖ†Event:/¢ºD è€E€T”A‚S~‚A€ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒã4a†6‰‚ã4a†6‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚㊃õ(‰ƒãñf‘¸‰‚ã}ƒõ(‰ƒãñf‘¸‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvoidsetTime(SbTime t)SbTimegetTime() constvoidsetPosition(const SbVec2s &p)const SbVec2s &getPosition() constconst SbVec2s &getPosition(const SbViewportRegion &vpRgn) constconst SbVec2f &getNormalizedPosition(const SbViewportRegion &vpRgn) constvoidsetShiftDown(SbBool isDown)voidsetCtrlDown(SbBool isDown)ÄzÀÃJ d€ô€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetAltDown(SbBool isDown)SbBoolwasShiftDown() constSbBoolwasCtrlDown() constSbBoolwasAltDown() const4DÂ<Ã& €€‚A€‚ÿDESCRIPTIONqÃÙÃ, (€â€”‘€‚A€€‚ÿSoSpaceballButtonEvent represents spaceball button press and release events in the Open Inventor event model.0 <à Ä& €€‚A€‚ÿMETHODSHÙÃQÄ, (€8€T”A‚S~‚A€ƒ‚ÿSoSpaceballButtonEvent()8 ĉÄ) "€€”‘€‚A€‚ÿConstructor.U#QÄÞÄ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()l=‰ÄJÅ/ .€z€”‘€‚A€€€‚ÿReturn the type id for the SoSpaceballButtonEvent class.’dÞÄÜÅ. ,€È€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetButton(SoSpaceballButtonEvent::Button b)SoSpaceballButtonEvent::ButtongetButton() constc:JÅ?Æ) "€t€”‘€‚A€‚ÿSet and get which spaceball button generated the event.ÊÜÅRÇI `€•€T”A‚S~‚A€㑶p6‰ƒã2™|—‰‚㑶p6‰ƒã2™|—‰‚ÿstatic SbBoolisButtonPressEvent(const SoEvent *e,SoSpaceballButtonEvent::Button whichButton)static SbBoolisButtonReleaseEvent(const SoEvent *e,SoSpaceballButtonEvent::Button whichButton))ó?Æ{È6 :€ç€”‘€‚A€€€€€‚ÿReturns whether the passed event is a spaceball button press or release event of the passed button. When SoSpaceballButtonEvent::ANY is passed, this returns TRUE if the event represents a button press or release of any spaceball button.1 RǬÈ& €€‚A€‚ÿSEE ALSOÙ{È-ʨ ³€”‘€‚Aã2™|—€‰€ãüb€‰€ã“[ A€‰€ã-OÁm€‰€ãAùé½€‰€ãÛá–€‰€ãàꀉ€ã?–/ €‰€ã(ç –€‰€ãΖc`€‰€ãÊÌø!€‰‚ÿSoEvent, SoButtonEvent, SoKeyboardEvent, SoLocation2Event, SoMotion3Event, SoMouseButtonEvent, SoHandleEventAction, SoEventCallback, SoSelection, SoInteraction, SoWinDevice9¬ÈfÊ1JJç|fÊ–Ê‚SoSphere0 -Ê–Ê% €€ˆˆ€‚ÿSoSphere*fÊÀÊ# €€€‚ÿNAMEE–ÊË& €>€”‘€€‚ÿSoSphere - sphere shape node3ÀÊ8Ë# € €€‚ÿINHERITS FROM¤KËÜËY ‚€–€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoSphere2 8ËÌ& €€€€ ‚ÿSYNOPSISjCÜËxÌ' €†€”‘€€‚‚ÿ#include Fields from class SoSphere:GÌ¿Ì2 4€*€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatradiusHxÌÍ) "€>€”‘€‚A€‚ÿMethods from class SoSphere:c/¿ÌjÍ4 8€^€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoSphere()static SoTypegetClassTypeId()N͸Í/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|jÍ4Ïn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¸ÍŒÏ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ4Ïý‚ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~ŒÏý‚-Ê6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHŒÏ…‚@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Ný‚Ó‚/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ…‚ ‚Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Ó‚>‚& €€‚A€‚ÿDESCRIPTION7  ‚u‚* "€€”‘€‚A€‚ÿThis node represents a sphere. By default, the sphere is centered at the origin and has a radius of 1. The sphere is transformed by the current cumulative transformation and is drawn with the current lighting model, drawing style, material, and geometric complexity.’h>‚‚* "€Ñ€”‘€‚A€‚ÿA sphere does not have faces or parts. Therefore, the sphere ignores material and normal bindings, using the first material for the entire sphere and using its own normals. When a texture is applied to a sphere, the texture covers the entire surface, wrapping counterclockwise from the back of the sphere. The texture has a seam at the back on the yz-plane./ u‚6‚& €€‚A€‚ÿFIELDSG‚}‚2 4€*€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatradiusZ16‚ׂ) "€b€”‘€‚A€‚ÿRadius of sphere. This must be greater than 0.0 }‚‚& €€‚A€‚ÿMETHODS:ׂA‚, (€€T”A‚S~‚A€ƒ‚ÿSoSphere()X/‚™‚) "€^€”‘€‚A€‚ÿCreates a sphere node with default settings.U#A‚î‚2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*™‚A ‚) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8î‚y ‚& €$€‚A€‚ÿACTION BEHAVIORHA ‚Á ‚2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionƒWy ‚D ‚, (€®€”‘€‚A€€‚ÿDraws sphere based on the current coordinates, materials, drawing style, and so on.GÁ ‚‹ ‚2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction}QD ‚ ‚, (€¢€”‘€‚A€€‚ÿIntersects the ray with the sphere. No details are created for intersections.N‹ ‚V ‚2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActionc7 ‚¹ ‚, (€n€”‘€‚A€€‚ÿComputes the bounding box that encloses the sphere.HV ‚ ‚2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackActionº¹ ‚» ‚- (€€”‘€‚A€€‚ÿIf any triangle callbacks are registered with the action, they will be invoked for each successive triangle that approximates the sphere.< ‚÷ ‚& €,€‚A€‚ÿFILE FORMAT/DEFAULT5 » ‚, ‚* $€€P„7|‚€‚ÿSphere {;÷ ‚g ‚- *€€P„|‚€ƒ‚‚‚ÿradius1}1 , ‚˜ ‚& €€‚€‚ÿSEE ALSOn'g ‚‚G ^€N€”‘€‚ãï9€‰€ãAA9€‰€ãþ‚dñ€‰‚ÿSoCone, SoCube, SoCylinder< ˜ ‚B‚1o†Á}B‚u‚<ƒ‚SoSpotLight3‚u‚% €€ˆˆ€‚ÿSoSpotLight*B‚Ÿ‚# €€€‚ÿNAME[5u‚ú‚& €j€”‘€€‚ÿSoSpotLight - node representing a spotlight source3Ÿ‚-‚# € €€‚ÿINHERITS FROM§Nú‚Ô‚Y ‚€œ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã Ú˜€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoLight > SoSpotLight2 -‚@‚& €€€€ ‚ÿSYNOPÔ‚@‚‚SISpIÔ‚‚@‚' €’€”‘€€‚‚ÿ#include Fields from class SoSpotLight:§]@‚)A‚J d€º€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFVec3flocationSoSFVec3fdirectionSoSFFloatdropOffRateSoSFFloatcutOffAngleN‚@‚wA‚/ .€>€”‘€‚A€ã Ú˜‰‚ÿFields from class SoLight:z8)A‚ñA‚B T€p€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ãð@I1‰ƒ‚ÿSoSFBoolonSoSFFloatintensitySoSFColorcolorS$wA‚DB‚/ .€H€”‘€‚A€ã¨òƯ‰‚ÿMethods from class SoSpotLight:f2ñA‚ªB‚4 8€d€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoSpotLight()static SoTypegetClassTypeId()NDB‚øB‚/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ªB‚tD‚n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)øB‚ÌD‚/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØtD‚1G‚ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÌD‚¹G‚@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)F1G‚ÿG‚) "€:€”‘€‚A€‚ÿMethods from class SoBase:7Þ¹G‚6I‚Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ÿG‚jI‚& €€‚A€‚ÿDESCRIPTIONË•6I‚5K‚6 :€+€”‘€‚A€€€€€‚ÿThis node defines a spotlight style light source. A spotlight is placed at a fixed location in 3-space and illuminates in a cone along a particular direction. The intensity of the illumination drops off exponentially as a ray of light diverges from this direction toward the edges of the cone. The rate of drop-off and the angle of the cone are controlled by the dropOffRate and cutOffAngle fields./ jI‚dK‚& €€‚A€‚ÿFIELDSI5K‚­K‚2 4€.€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3flocationCdK‚ðK‚) "€4€”‘€‚A€‚ÿLocation of the source.J­K‚:L‚2 4€0€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fdirectionf=ðK‚ L‚) "€z€”‘€‚A€‚ÿPrincipal direction of illumination (center axis of cone).L:L‚ìL‚2 4€4€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatdropOffRate¢y L‚ŽM‚) "€ò€”‘€‚A€‚ÿRate of intensity drop-off per change in angle from primary direction: 0 = constant intensity, 1 = very sharp drop-offLìL‚ÚM‚2 4€4€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatcutOffAngle˜oŽM‚rN‚) "€Þ€”‘€‚A€‚ÿAngle (in radians) outside of which intensity is zero, measured from the center axis of the cone to an edge.0 ÚM‚¢N‚& €€‚A€‚ÿMETHODS=rN‚ßN‚, (€"€T”A‚S~‚A€ƒ‚ÿSoSpotLight()b9¢N‚AO‚) "€r€”‘€‚A€‚ÿCreates a spotlight source node with default settings.U#ßN‚–O‚2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*AO‚ €‚) "€T€”‘€‚A€‚ÿReturns type identifier for this class.–O‚ €‚‚8–O‚D€‚& €$€‚A€‚ÿACTION BEHAVIORH €‚Œ€‚2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionÙD€‚’‚- (€³€”‘€‚A€€‚ÿActivates this light (if so specified) during traversal. All shape nodes that come after this light in the scene graph are illuminated by this light. The light's location is affected by the current transformation.<Œ€‚΂& €,€‚A€‚ÿFILE FORMAT/DEFAULT8’‚‚‚* $€€P„7|‚€‚ÿSpotLight {¡h΂§‚‚9 B€Ð€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿonTRUEintensity1color1 1 1location0 0 1direction0 0 -1dropOffRate0cutOffAngle0.785398}1 ‚‚Ø‚‚& €€‚€‚ÿSEE ALSOd)§‚‚<ƒ‚; F€R€”‘€‚ãÀú€‰€㦊3ý€‰‚ÿSoDirectionalLight, SoPointLightCØ‚‚ƒ‚1ÌOç€~ƒ‚¹ƒ‚^ÀƒSoSpotLightDragger:<ƒ‚¹ƒ‚% €*€ˆˆ€‚ÿSoSpotLightDragger*ƒ‚ヂ# €€€‚ÿNAME›u¹ƒ‚~„‚& €ê€”‘€€‚ÿSoSpotLightDragger - spotlight shaped dragger that allows you to change position, direction, and width of the beam3ヂ±„‚# € €€‚ÿINHERITS FROMï~~„‚ …‚q ²€ü€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoSpotLightDragger2 ±„‚Ò…‚& €€€€ ‚ÿSYNOPSISZ …‚S†‚' €´€”‘€€‚‚ÿ#include Fields from class SoSpotLightDragger:†DÒ…‚Ù†‚B T€ˆ€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ÿSoSFRotationrotationSoSFVec3ftranslationSoSFFloatangleP!S†‚)‡‚/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:HÙ†‚q‡‚2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW()‡‚ȇ‚/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³iq‡‚{ˆ‚J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO ȇ‚ʈ‚/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%{ˆ‚!‰‚2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListR)ʈ‚s‰‚) "€R€”‘€‚A€‚ÿMethods from class SoSpotLightDragger:¶z!‰‚)Š‚< H€ô€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoSpotLightDragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"s‰‚zŠ‚/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:K)Š‚ÅŒ‚C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨zŠ‚¨‚; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)ÅŒ‚Ž‚/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”U¨‚”Ž‚? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"Ž‚厂/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°”Ž‚1Á‚ î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)厂1Á‚<ƒ‚SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}厂ðÁ‚B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)N1Á‚>‚/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ðÁ‚ºÃ‚n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)>‚Ä‚/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®ºÃ‚EÆ‚… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÄ‚ÍÆ‚@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NEÆ‚Ç‚/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÍÆ‚RÈ‚Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!Ç‚¢È‚/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)RÈ‚÷È‚, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+¢È‚NÉ‚, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4÷È‚‚É‚& €€‚A€‚ÿDESCRIPTIONì¿NÉ‚nÊ‚- (€€”‘€‚A€€‚ÿSoSpotLightDragger is a composite dragger. It is shaped like a beam of light emanating from a sun-like ball. An arrow runs along the axis of the beam and extends past the end of the beam.º„‚É‚(Ì‚6 :€ €”‘€‚A€€€€€‚ÿWhen you click and drag the beam, it opens and closes with an umbrella-like motion. The angle between the center and edge of the beam is stored in the angle field of this dragger; setting the angle field causes the beam to widen or narrow in response. The spotlight dragger does not use a standard dragger class to execute this motion. More details are given later in this section.6únÊ‚^Í‚< F€õ€”‘€‚A€€€€€€€‚ÿDragging the arrow rotates it arount the sun, and the beam moves with it. The arrow is an SoRotateSphericalDragger that controls the rotation field. See the reference page for SoDirectionalLightDragger, which works the same way, for details.P(Ì‚®Î‚< F€)€”‘€‚A€€€€€€€‚ÿThe sun-shape can be dragged to translate all three pieces together through 3-space. Its movement controls the translation field and works exactly as described in the reference pages for SoDirectionalLightDragger and SoPointLightDragger (which goes into more detail).¿Œ^Í‚mÏ‚3 4€€”‘€‚A€€€€‚ÿRemember: This is not a light source! It just looks like one. If you want to move a light with this dragger, you can do the following:Æl®Î‚?ƒZ ‚€Ù€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿ[a] Use an SoSpotLightManip, which is subclassed from mÏ‚?ƒ<ƒ‚SoLight. It creates an SoSpotLightDragger and uses it as the interface to change the location, direction, and cutOffAngle of its light source (see the SoSpotLightManip reference page). The manip also edits the material part of this dragger to match the color of light the manip is producing.½mÏ‚üƒ< F€€”‘€‚A€€€€€€€‚ÿ[b] Connect the angle field of this dragger to the cutOffAngle field of an SoSpotLight with a field-to-field connection.ë©?ƒçƒB R€S€”‘€‚A€€€€€€€€€‚ÿSee the SoPointLightDragger and SoDirectionalLightDragger reference pages for other ways to control light parameters with the rotation and translation fields.= üƒ$ƒ0 .€€”‘€‚A€€€‚ÿThis class creates its own projector and handles mouse events to do its own dragging of the beam angle. When the mouse picks a point on the beam, that point is dragged in a circle just like in an SoRotateDiscDragger, but the plane of the disc is re-defined every time a drag is initiated. Imagine placing the metal tip of a compass at the apex of the cone and the pencil tip at the picked point. If you swing an arc through the central axis of the cone, you will be drawing the arc used to drag the beam open and closed.#óçƒGƒ0 .€ç€”‘€‚A€€€‚ÿThe beam is opened and closed not by rotating, but by scaling. The dragger scales the beam-cone so that the height and radius change to move the picked point along the circle. Then the angle field is calculated from the height and radius.F$ƒƒB R€ €”‘€‚A€€€€€€€€€‚ÿYou can change the geometry of parts in any instance of this dragger using setPart(). The default part geometries are defined as resources for this SoSpotLightDragger class. They are detailed below in the DRAGGER RESOURCE section. You can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/spotLightDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ Gƒ¼ƒ& €€‚A€‚ÿFIELDSLƒ ƒ2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationc:¼ƒk ƒ) "€t€”‘€‚A€‚ÿOrientation of the rotating part (an arrow by default).L ƒ· ƒ2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationDk ƒû ƒ) "€6€”‘€‚A€‚ÿPosition of the dragger.F· ƒA ƒ2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatangleR)û ƒ“ ƒ) "€R€”‘€‚A€‚ÿAngle between center and edge of beam.0 A ƒÃ ƒ& €€‚A€‚ÿMETHODSD“ ƒ ƒ, (€0€T”A‚S~‚A€ƒ‚ÿSoSpotLightDragger()8à ƒ? ƒ) "€€”‘€‚A€‚ÿConstructor.uC ƒ´ ƒ2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/? ƒ ƒ/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#´ ƒg ƒ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* ƒº ƒ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6g ƒð ƒ& € €‚A€‚ÿCATALOG PARTS;º ƒ+ ƒ- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜ð ƒÃ ƒ~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/+ ƒ‚ƒ#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2à ƒDƒ#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yes·'‚ƒ @ƒ#ð€NÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€2€ÿ€4€€€‚ÿ€@€€€‚ÿÿÿmaterialMaterial--yesDƒ @ƒ<ƒ‚Á1DƒÍ@ƒ#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslatorDragPointDragger--yesÄ4 @ƒ‘Aƒ#ð€hÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€L€ÿ€N€€€‚ÿ€Z€€€‚ÿÿÿrotatorRotateSphericalDragger--yes¿/Í@ƒPBƒ#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿbeamPlacementTranslation--yesµ%‘AƒCƒ#ð€JÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€.€ÿ€0€€€‚ÿ€<€€€‚ÿÿÿbeamScaleScale--yes´$PBƒ¹Cƒ#ð€HÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€,€ÿ€.€€€‚ÿ€:€€€‚ÿÿÿbeamSeparator--yesº*CƒsDƒ#ð€TÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€8€ÿ€:€€€‚ÿ€F€€€‚ÿÿÿbeamActiveSeparator--yes,¹CƒŸDƒ' € €€‚€‚ÿe7sDƒEƒ. ,€n€”‚±€ƒ€€ ‚ÿExtra Information for List Parts from Above Table’1ŸDƒ–Eƒa#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8Eƒ/Fƒa#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=–EƒlFƒ' €,€€‚€‚ÿDRAGGER RESOURCES ¸/FƒŒHƒh ž€q€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ€€ ‚ƒ€€ ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿResource:spotLightBeamPart:beamAppearance:wireframe cone with no SoMaterial nodeDescription:picking this initiates dragging of the beam angle. The beam inherits colors from the material part, just like the stationary version of the sun shape.Resource:spotLightBeamActivePart:beamActiveAppearance:yellow wireframe coneDescription:displayed during dragging of the beam angle.Resource:spotLightBeamPlacementQlFƒÝJƒK d€ €PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿPart:beamPlacementAppearance:translation of (0,0,-1)Description:This translation node moves the beam parts relative to the rest of the dragger. In this case, moving by (0,0,-1) slides the cone outward along rotator part toward its arrowhead. The distance chosen places the apex of the cone on the surface of the sun shape.Resource:spotLightRotatorRotatorPart:rotator.rotatorAppearance:white arrow that goes through the sunDescription:picking this begins rotation of the arrow about the sun-shape¹ŒHƒøLƒb ’€s€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚ÿResource:spotLightRotatorRotatorActivePart:rotator.rotatorActiveAppearance:yellow arrow that goes through the sunDescription:displayed while the arrow is being rotatedResource:spotLightRotatorFeedbackPart:rotator.feedbackAppearance:empty SeparatorDescription:this disables display of the axes that a rotateSpherical dragger uses by defaultResource:spotLightRotatorFeedbackActivePart:rotator.feedbackActive"ÖÝJƒOƒL f€­€PÍÇ~‚Í€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿAppearance:empty SeparatorDescription:this disables display of the axes that a rotateSpherical dragger uses by defaultResource:spotLightOverallMaterialPart:materialAppearance:white. half strength emissive, half strength diffuseDescription:sets material for the sun shape when stationary. Resource for the moving sun, spotLightTranslatorPlaneTranslatorActive, contains a yellow material for highlighting.Resource:spotLightTranslatorPlaneTranslatorÁøLƒ6ƒO l€ƒ€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿParts:translator.yzTranslator.translatortranslator.xzTranslator.translatortranslator.xyTranslator.translatorAppearance:sun shape with no mateOƒ6ƒ<ƒ‚rialDescription:picking these parts initiates dragging by the yz, xz, and xy planar draggers respectively.Resource:spotLightTranslatorPlaneTranslatorActiveParts:translator.yzTranslator.translatorActivetranslator.xzTranslator.translatorActivetranslator.xyTranslator.translatorActiveÉOƒOƒƒP n€“€PÍÇ~‚Í€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ÿAppearance:yellow sun shapeDescription:shown during planar dragging in the yz, xz, and xy planes respectively.Resource:spotLightTranslatorLineTranslatorParts:translator.xTranslator.translatortranslator.yTranslator.translatortranslator.zTranslator.translatorAppearance:white cylinderDescription:picking these parts initiates dragging in the x, y, and z linear draggers respectively.Resource:spotLightTranslatorLineTranslatorActive3ø6ƒ‚„ƒ; D€ñ€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚‚ÿParts:translator.xTranslator.translatorActivetranslator.yTranslator.translatorActivetranslator.zTranslator.translatorActiveAppearance:yellow cylinderDescription:shown during linear dragging in the x, y, and z directions respectively.<Oƒƒ¾„ƒ& €,€‚Í€‚ÿFILE FORMAT/DEFAULT?‚„ƒý„ƒ* $€*€P„7|‚€‚ÿSpotLightDragger {Ǿ„ƒ‡ƒS t€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚ƒ‚‚ƒ‚ƒ‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSErotation0 0 1 0translation0 0 0angle1callbackListNULLmaterialtranslatorDragPointDragger {}rotatorRotateSphericalDragger {}beamPlacementbeamScaleScale {scaleFactor 0.841471 0.841471 0.540302 }beambeamActiveÝý„ƒ,‰ƒ8 >€»€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿrotator.rotatorrotator.rotatorActiverotator.feedbackrotator.feedbackActivetranslator.yzTranslator.translatortranslator.xzTranslator.translatortranslator.xyTranslator.translator<‡ƒh‹ƒ6 :€ €P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿtranslator.yzTranslator.translatorActivetranslator.xzTranslator.translatorActivetranslator.xyTranslator.translatorActivetranslator.xTranslator.translatortranslator.yTranslator.translatortranslator.zTranslator.translatorF,‰ƒ®Œƒ1 0€+€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿtranslator.xTranslator.translatorActivetranslator.yTranslator.translatorActivetranslator.zTranslator.translatorActive},h‹ƒÚŒƒ) "€€”‘€‚€‚ÿ1 ®Œƒ ƒ& €€‚€‚ÿSEE ALSOGÚŒƒ^Àƒ, &‚7€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDrag ƒ^Àƒ<ƒ‚ger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2DraggerA ƒŸÀƒ1¯+ÁK‡ŸÀƒ×Àƒ{K„SoSpotLightManip8^Àƒ×Àƒ% €&€ˆˆ€‚ÿSoSpotLightManip*ŸÀƒÁƒ# €€€‚ÿNAMEŒf×ÀƒÁƒ& €Ì€”‘€€‚ÿSoSpotLightManip - spotlight node with 3D interface for editing location, direction, and beam width3ÁƒÀÁƒ# € €€‚ÿINHERITS FROMÊeÁƒŠÂƒe š€Ê€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã Ú˜€‰€ã¨òƯ€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoLight > SoSpotLight > SoSpotLightManip2 ÀÁƒ¼Âƒ& €€€€ ‚ÿSYNOPSIS~QŠÂƒ:Ã- *€¢€”‘€€‚ã¨òƯ‰‚ÿ#include Fields from class SoSpotLight:§]¼ÂƒáÃJ d€º€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFVec3flocationSoSFVec3fdirectionSoSFFloatdropOffRateSoSFFloatcutOffAngleN:Ã/ă/ .€>€”‘€‚A€ã Ú˜‰‚ÿFields from class SoLight:z8áéăB T€p€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ãð@I1‰ƒ‚ÿSoSFBoolonSoSFFloatintensitySoSFColorcolorP'/ăùă) "€N€”‘€‚A€‚ÿMethods from class SoSpotLightManip:¶©Äƒƃ` Ž€m€T”A‚S~‚A€ƒ‚ãÈï?†‰ƒ‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒãMy'9‰ã¨òƯ‰‚ãB-9‰ƒ‚ÿSoSpotLightManip()SoDragger *getDragger()SbBoolreplaceNode(SoPath *p )SbBoolreplaceManip(SoPath *p,SoSpotLight *newOne ) conststatic SoTypegetClassTypeId()Nùă]ƃ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ƃÙǃn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)]ƃ1ȃ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÙǃ–ʃ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH1ȃ˃@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N–ʃl˃/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ˃£ÌƒY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4l˃×̃& €€‚A€‚ÿDESCRIPTIONm"£ÌƒDσK d€E€”‘€‚A€€€€€€€€€€€€‚ÿSoSpotLightManip is the base class for all SoSpotLight nodes that have a built-in 3D user interface (this is the only such class provided with the Open Inventor toolkit). Since it is derived from SoSpotLight, any changes to its fields result in a change of lighting for nodes that follow it in the scene graph. In this case, the interface edits the location, direction, and cutOffAngle fields. Also, the color of the manipulator's geometry will reflect the color of the light (but you can not edit the color using this manipulator).¬j×̃ü„B R€Õ€”‘€‚A€€€€€€€€€‚ÿTypically, you will want to replace a regular SoSpotLight with an SoSpotLightManip (as when the user selects a light Dσü„^Àƒto be edited), or vice versa (as when the user is done moving the light and the interface should go away). Use the replaceNode() method to insert a manipulator into a scene graph, and the replaceManip() method to remove it when done.AÿDσ=„B R€ÿ€”‘€‚A€€€€€€€€€‚ÿThe SoSpotLightManip utilizes an SoSpotLightDragger to provide a 3D interface. However, the manipulator differs from the dragger; it lights other objects in the scene because, as an SoSpotLight, it alters the state. The fields values and movement of the dragger, on the other hand, affect only the dragger itself. To find out more about how the interface works and what each part will do, see the reference page for SoSpotLightDragger. The interfaces of the dragger and the manipulator are identical.æ°ü„#„6 :€a€”‘€‚A€€€€€‚ÿThe SoSpotLightManip utilizes its dragger by adding it as a hidden child. When an action is applied to the manipulator, such as rendering or handling events, the manipulator first traverses the dragger, and then the manipulator adds its lighting parameters to the state. When you click-drag-release over the manipulator, it passes these events down to the dragger, which moves as a result ("I can't help it, I'm a dragger!").Ï=„:„H ^€Ÿ€”‘€‚A€€€€€€€€€€€‚ÿThe manipulator maintains consistency between the fields of the dragger and its own fields. Let's say you use the mouse to widen the cone of the dragger. Callbacks insure that the cutOffAngle field of the manipulator will change by the same amount, thus changing the lighting of nodes which follow in the scene graph. Similarly, if you set the cutOffAngle field of the SoSpotLightManip, the manipulator will widen the beam of the dragger accordingly.€J#„º„6 :€•€”‘€‚A€€€€€‚ÿBecause the dragger is a hidden child, you can see the dragger on screen and interact with it, but the dragger does not show up when you write the manipulator to file. Also, any SoPath will end at the manipulator. (See the Actions section of this reference page for a complete description of when the dragger is traversed).%õ:„ß „0 .€ë€”‘€‚A€€€‚ÿIf you want to get a pointer to the dragger you can get it from the manipulator using the getDragger() method. You will need to do this if you want to change the geometry of a manipulator, since the geometry actually belongs to the dragger.0 º„ „& €€‚A€‚ÿMETHODSBß „Q „, (€,€T”A‚S~‚A€ƒ‚ÿSoSpotLightManip()8 „‰ „) "€€”‘€‚A€‚ÿConstructor.OQ „Ø „2 4€:€T”A‚S~‚AãÈï?†€‰ƒ‚ÿSoDragger *getDragger()T‰ „, „6 :€=€”‘€‚A€€€€€‚ÿReturns a pointer to the dragger being used by this manipulator. Given this pointer, you can customize the dragger just like you would any other dragger. You can change geometry using the setPart() method, or add callbacks using the methods found in the SoDragger reference page.]%Ø „‰ „8 @€J€T”A‚S~‚A㑶p6€‰ƒãMy'9‰‚ÿSbBoolreplaceNode(SoPath *p )k5, „ô „6 :€k€”‘€‚A€€€€€‚ÿReplaces the tail of the path with this manipulator. The tail of the path must be an SoSpotLight node (or subclass thereof). If the path has a nodekit, this will try to use setPart() to insert the manipulator. Otherwise, the manipulator requires that the next to last node in the path chain be a group.t‰ „‘„) "€è€”‘€‚A€‚ÿThe field values from the spotlight node will be copied to this manipulator, and the light node will be replaced.Ñ¡ô „n@„0 .€C€”‘€‚A€€€‚ÿThe manipulator will not call ref() on the node it is replacing. The old node will disappear if it has no references other than from the input path p and its parent, since this manipulator will be replacing it in both of those places. Nor will the manipulator make any changes to field connections of the old node. T‘„n@„^Àƒhe calling process is thus responsible for keeping track of its own nodes and field connections.‚C‘„ð@„? N€†€T”A‚S~‚A㑶p6€‰ƒãMy'9‰ã¨òƯ‰‚ÿSbBoolreplaceManip(SoPath *p,SoSpotLight *newOne ) constKn@„;B„6 :€+€”‘€‚A€€€€€‚ÿReplaces the tail of the path, which must be this manipulator, with the given SoSpotLight node. If the path has a nodekit, this will try to use setPart() to insert the new node. Otherwise, the manipulator requires that the next to last node in the path chain be a group.tð@„ØB„) "€è€”‘€‚A€‚ÿThe field values from the manipulator will be copied to the spotlight node, and the manipulator will be replaced.#í;B„ûC„6 :€Û€”‘€‚A€€€€€‚ÿThe manipulator will not call ref() or unref() on the node which is replacing it, nor will it make any changes to field connections. The calling process is thus responsible for keeping track of its own nodes and field connections.U#ØB„PD„2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ûC„£D„) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8PD„ÛD„& €$€‚A€‚ÿACTION BEHAVIORÔƒ£D„¯E„Q p€€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ã¹_ØS‰ãàê‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoHandleEventAction, SoRayPickActionEÛD„ôF„? L€ €”‘€‚A€€€€€€€€‚ÿFirst, traverses the dragger the way an SoGroup would. All draggers place themselves in space, but leave the current transformation unchanged when finished. Then the SoSpotLightManip adds a spotlight to the state, just like its base class, SoSpotLight.F¯E„:G„2 4€(€”‘€‚AãòÓ}ª€‰€‚ÿSoSearchAction^ôF„ÊG„2 4€¼€”‘€‚A€€€€‚ÿSearches just like an SoSpotLight. Does not search the dragger, which is a hidden child.E:G„H„2 4€&€”‘€‚AãeY €‰€‚ÿSoWriteActionWÊG„fI„9 @€=€”‘€‚A€€€€€€‚ÿWrites out just like an SoSpotLight. Does not write the dragger, which is a hidden child. If you really need to write valuable information about the dragger, such as customized geometry, you can retrieve the dragger with the getDragger() method and then write it out separately.<H„¢I„& €,€‚A€‚ÿFILE FORMAT/DEFAULT=fI„ßI„* $€&€P„7|‚€‚ÿSpotLightManip {¡h¢I„€J„9 B€Ð€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿonTRUEintensity1color1 1 1location0 0 1direction0 0 -1dropOffRate0cutOffAngle0.785398}1 ßI„±J„& €€‚€‚ÿSEE ALSOÊk€J„{K„_ Ž€Ö€”‘€‚ãÈï?†€‰€ã¨òƯ€‰€ãÀsm€‰€ã½ôm€‰€ã|`o€‰‚ÿSoDragger, SoSpotLight, SoSpotLightDragger, SoDirectionalLightManip, SoPointLightManip@±J„»K„1ö €Z‡ €»K„òK„§Ì„SoSurroundScale7{K„òK„% €$€ˆˆ€‚ÿSoSurroundScale*»K„L„# €€€‚ÿNAMEœvòK„¸L„& €ì€”‘€€‚ÿSoSurroundScale - transformation node that adjusts the current matrix so a default cube will surround other objects3L„ëL„# € €€‚ÿINHERITS FROM´[¸L„ŸM„Y ‚€¶€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoSurroundScale2 ëL„ÑM„& €€€€ ‚ÿSYNOPSISxQŸM„IN„' €¢€”‘€€‚‚ÿ#include Fields from class SoSurroundScale:|BÑM„ÅN„: D€„€T”A‚S~‚Aãw?2€‰ƒ‚ãw?2‰ƒ‚ÿSoSFInt32numNodesUpToContainerSoSFInt32numNodesUpToResetO&IN„O„) "€L€”‘€‚A€‚ÿMethods from class SoSurroundScale:~HÅN„’O„6 <€€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoSurroundScale()voidinvalidate()static SoTypegetClassTypeId()NO„àO„/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|’O„h„n ª€€T”àO„h„{K„A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)àO„À„/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØh„%„„ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÀ„­„„@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N%„„û„„/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ­„„2†„Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4û„„f†„& €€‚A€‚ÿDESCRIPTIONU%2†„»‡„0 .€K€”‘€‚A€€€‚ÿWhen traversed by an action, this node appends a transformation to the current transformation matrix so that a default size cube will surround the objects specified by its fields. Transform manipulators, such as SoHandleBoxManip, use these nodes to make themselves surround other objects.°€f†„kˆ„0 .€€”‘€‚A€€€‚ÿThis node only recalculates after the invalidate() method has been called. Otherwise it uses a saved scale and translation.žD»‡„ ‹„Z ‚€‰€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿWhen calculating what to surround, the SoSurroundScale looks at the current path in the action and at its own field values. Then SoSurroundScale applies an SoGetBoundingBoxAction to the node that is numNodesUpToContainer nodes above it on the path. SoSurroundScale also tells the action to reset the bounding box upon traversal of the node located numNodesUpToReset nodes above it in the path. The SoSurroundScale then appends a translation and scale to the current transformation so that a default size SoCube will translate and scale to fit this bounding box.¼Œkˆ„Å‹„0 .€€”‘€‚A€€€‚ÿFor example, when an SoHandleBoxManip wants to surround the objects it is going to move, the scene graph will look something like this:D ‹„ Œ„( €8€Ù€‚A€‚ÿ RootNodeK#Å‹„TŒ„( €F€Ù€‚A€‚ÿ -------------------------L$ Œ„ Œ„( €H€Ù€‚A€‚ÿ | |Q)TŒ„ñŒ„( €R€Ù€‚A€‚ÿ handleBoxManip movingStuff3  Œ„$„( €€Ù€‚A€‚ÿ |@ñŒ„d„( €0€Ù€‚A€‚ÿ handleBoxDragger3 $„—„( €€Ù€‚A€‚ÿ |9d„Є( €"€Ù€‚A€‚ÿ separatorT,—„$Ž„( €X€Ù€‚A€‚ÿ -----------------------------------U-ЄyŽ„( €Z€Ù€‚A€‚ÿ | | |X0$Ž„ÑŽ„( €`€Ù€‚A€‚ÿ motionMatrix surroundScale cubeGeom+yŽ„üŽ„( €€Ù€‚A€‚ÿÑÑŽ„Í„B R€€”‘€‚A€€€€€€€€€‚ÿThe SoHandleBoxDragger wants to transform the cubeGeom so that it surrounds the movingStuff. So it sets the surroundScale fields to:J"üŽ„#À„( €D€Ù€‚A€‚ÿ numNoÍ„#À„{K„desUpToContainer = 4;FÍ„iÀ„( €<€Ù€‚A€‚ÿ numNodesUpToReset = 3;+#À„”À„( €€Ù€‚A€‚ÿNiÀ„âÁ„N j€€”‘€‚A€€€€€€€€€€€€€‚ÿThe SoBoundingBoxAction will then be applied to RootNode, with a reset after traversing the SoHandleBoxManip. So the SoSurroundScale will surround the objects below separator, and to the right of handleBoxManip, producing the desired effect./ ”À„„& €€‚A€‚ÿFIELDSV$âÁ„g„2 4€H€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32numNodesUpToContainerB „©Ã„6 :€€”‘€‚A€€€€€‚ÿWhen traversed by an action, if surroundScale needs to calculate a new box, surroundScale looks at the current path in the action. It travels up this path a distance of numNodesUpToContainer and applies an SoGetBoundingBoxAction to the node that it finds there.R g„ûÄ2 4€@€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32numNodesUpToReset2ö©Ã„-Å„< F€í€”‘€‚A€€€€€€€‚ÿBefore applying the SoGetBoundingBoxAction (see the numNodesUpToContainer field above) the surroundScale node travels up the path a distance of numNodesUpToReset and tells the action to reset the bounding box upon traversal of that node.0 ûÄ]Å„& €€‚A€‚ÿMETHODSA-Å„žÅ„, (€*€T”A‚S~‚A€ƒ‚ÿSoSurroundScale()`7]Å„þÅ„) "€n€”‘€‚A€‚ÿCreates a surround scale node with default settings.@žÅ„>Æ„, (€(€T”A‚S~‚A€ƒ‚ÿvoidinvalidate()¥|þÅ„ãÆ„) "€ø€”‘€‚A€‚ÿIf you call this, then next time an action is applied the node will re-calculate its cached translation and scale values.U#>Æ„8Ç„2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ãÆ„‹Ç„) "€T€”‘€‚A€‚ÿReturns type identifier for this class.88Ç„ÃÇ„& €$€‚A€‚ÿACTION BEHAVIOR›W‹Ç„^È„D X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction„XÃÇ„âÈ„, (€°€”‘€‚A€€‚ÿAccumulates scaling and translation transformations into the current transformation.I^È„+É„2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixActionpDâÈ„›É„, (€ˆ€”‘€‚A€€‚ÿReturns the matrix corresponding to the scaling and translation.<+É„×É„& €,€‚A€‚ÿFILE FORMAT/DEFAULT<›É„Ê„* $€$€P„7|‚€‚ÿSurroundScale {`1×É„sÊ„/ .€b€P„|‚€ƒ‚ƒ‚‚‚ÿnumNodesUpToContainer0numNodesUpToReset0}1 Ê„¤Ê„& €€‚€‚ÿSEE ALSO7sÊ„§Ì„Ì fo€”‘€‚ã¥W7ž€‰€ã%n’ €‰€ãÌrŠâ€‰€ãõ+cÛ€‰€ã¢b€‰€ãöñõ€‰€ã±—o›€‰€ã+¯€‰€ãNØd>€‰€㇫¬l€‰€ãÂmG €‰€ã›Ø1Ù€‰€ã¡è˜*€‰€ãr“žN€‰‚ÿSoTransformation, SoTransformManip, SoCenterballDragger, SoCenterballManip, SoHandleBoxDragger, SoHandleBoxManip, SoJackDragger, SoJackManip, SoTabBoxDragger, SoTabBoxManip, SoTrackballDragger, SoTrackballManip, SoTransformBoxDragger, SoTransformBoxManip9¤Ê„àÌ„1ØK‡Í àÌ„Í„ÁC…SoSwitch0 §Ì„Í„% €€ˆˆ€‚ÿSoSwitch*àÌ„:Í„# €€€‚ÿNAME]7Í„—Í„& €n€”‘€€‚ÿSoSwitch - group node that traverse one chosen child3:Í„ÊÍ„# € €€‚ÿINHERITS FROM¤K—Í„n΄Y ‚€–€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoSwitch2 ÊÍ„ Î„& €€€€ ‚ÿSYNOPSISjCn΄ Ï„' €†€”‘€€‚‚ÿ#include Fields from class SoSwitch:K Î„UÏ„2 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32whichChildH Ï„Ï„) "€>€”‘€‚A€‚ÿMethods from class SoSwitch:~HUÏ„'…6 <€€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoSwitch()SoSwitch(int nChildren)static Ï„'…§Ì„SoTypegetClassTypeId()O Ï„v…/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒ'…k…r ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)Nv…¹…/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|k…5…n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¹……/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ5…ò… 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH…z…@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nò…È…/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þz…ÿ…Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4È…3 …& €€‚A€‚ÿDESCRIPTION&üÿ…Y …* "€ù€”‘€‚A€‚ÿThis group node usually traverses only one or none of its children. It implements an operation similar to the switch statement in C. One can use this node to switch on and off the effects of some properties or to switch between different properties.™j3 …ò …/ .€Ô€”‘€‚A€€€‚ÿThe whichChild field specifies the index of the child to traverse, where the first child has index 0.Õ“Y …Ç …B R€'€”‘€‚A€€€€€€€€€‚ÿA value of SO_SWITCH_NONE (-1, the default) means do not traverse any children. A value of SO_SWITCH_INHERIT (-2) allows the index to be inherited from a previously-encountered SoSwitch node or from certain other nodes (such as SoArray or SoMultipleCopy) that set the switch value. A value of SO_SWITCH_ALL (-3) traverses all children, making the switch behave exactly like a regular SoGroup./ ò …ö …& €€‚A€‚ÿFIELDSKÇ …A …2 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32whichChildŠaö …Ë …) "€Â€”‘€‚A€‚ÿIndex of the child to traverse, or one of SO_SWITCH_NONE, SO_SWITCH_INHERIT, or SO_SWITCH_ALL.0 A …û …& €€‚A€‚ÿMETHODS:Ë …5…, (€€T”A‚S~‚A€ƒ‚ÿSoSwitch()X/û ……) "€^€”‘€‚A€‚ÿCreates a switch node with default settings.G5…Ô…, (€6€T”A‚S~‚A€ƒ‚ÿSoSwitch(int nChildren)b9…6…) "€r€”‘€‚A€‚ÿConstructor that takes approximate number of children.U#Ô…‹…2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*6…Þ…) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8‹…"@…& €$€‚A€Þ…"@…§Ì„‚ÿACTION BEHAVIORÔƒÞ…ö@…Q p€€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ã¹_ØS‰ãàê‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoHandleEventAction, SoRayPickActionW+"@…MA…, (€V€”‘€‚A€€‚ÿTraverses the chosen child or children.Fö@…“A…2 4€(€”‘€‚AãòÓ}ª€‰€‚ÿSoSearchAction²…MA…EB…- (€ €”‘€‚A€€‚ÿIf the action's Searching-All flag is set, always traverses all children. Otherwise, traverses just the chosen child or children.<“A…B…& €,€‚A€‚ÿFILE FORMAT/DEFAULT5 EB…¶B…* $€€P„7|‚€‚ÿSwitch {@B…öB…- *€&€P„|‚€ƒ‚‚‚ÿwhichChild-1}1 ¶B…'C…& €€‚€‚ÿSEE ALSOšGöB…ÁC…S v€Ž€”‘€‚ãÝo§–€‰€ã¬ñ†€‰€ã™ü ;€‰€ãÅÌ€‰‚ÿSoArray, SoLevelOfDetail, SoMultipleCopy, SoPathSwitch@'C…D…1ß@Z‡ € ‚D…8D…'A†SoTabBoxDragger7ÁC…8D…% €$€ˆˆ€‚ÿSoTabBoxDragger*D…bD…# €€€‚ÿNAME~X8D…àD…& €°€”‘€€‚ÿSoTabBoxDragger - cubic object you can translate and scale by dragging with the mouse3bD…E…# € €€‚ÿINHERITS FROMì{àD…ÿE…q ²€ö€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoTabBoxDragger2 E…1F…& €€€€ ‚ÿSYNOPSIS{TÿE…¬F…' €¨€”‘€€‚‚ÿ#include Fields from class SoTabBoxDragger:l21F…G…: D€d€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fscaleFactorSoSFVec3ftranslationP!¬F…hG…/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:HG…°G…2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(hG…H…/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³i°G…ºH…J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO H… I…/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%ºH…`I…2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListO& I…¯I…) "€L€”‘€‚A€‚ÿMethods from class SoTabBoxDragger:Б`I…J…? L€#€T”A‚S~‚A€ƒ‚ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoTabBoxDragger()voidadjustScaleTabSize()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"¯I…ÐJ…/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:KJ…M…C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨ÐJ…þM…; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)M…VN…/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”UþM…êN…? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"VN…;O…/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°êN…‡… î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog;O…‡…ÁC…() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿};O…F‚…B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)N‡…”‚…/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|F‚…„…n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)”‚…h„…/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®„…›†…… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHh„…#‡…@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N›†…q‡…/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ#‡…¨ˆ…Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!q‡…øˆ…/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)¨ˆ…M‰…, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+øˆ…¤‰…, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4M‰…؉…& €€‚A€‚ÿDESCRIPTIONÅŒ¤‰…‹…9 @€€”‘€‚A€€€€€€‚ÿSoTabBoxDragger is a composite dragger shaped like a box. Inside it are six SoTabPlaneDraggers which the dragger positions and orients to form a cube. The operations available in an SoTabPlaneDragger (translation, 1D scaling and 2D scaling) are available on each face of the cube. Since they each move in their local space, the dragger may be easily translated or scaled in any direction.˜o؉…5Œ…) "€Þ€”‘€‚A€‚ÿAs a composite dragger, this class makes sure that when one plane is dragged, the entire box moves together.Ç‹…8…< F€€”‘€‚A€€€€€€€‚ÿAs each sub-dragger is moved, the SoTabBoxDragger updates its scaleFactor and translation fields. As with all draggers, if you change a field the dragger will move to match the new settings.«s5Œ…ã…8 @€æ€”‘€‚A€€€€€€‚ÿRemember: This is not an SoTransform!. If you want to move other objects with this dragger, you can either:Ä8…㎅< F€‰€”‘€‚A€€€€€€€‚ÿ[a] Use an SoTabBoxManip, which is subclassed from SoTransform. It creates one of these draggers and uses it as the interface to change its fields. (see the SoTabBoxManip reference page).£tã…†…/ .€è€”‘€‚A€€€‚ÿ[b] Use field-to-field connections to connect the fields of this dragger to those of any SoTransformation node.a㎅óÁ…B R€?€”‘€‚A€€€€€€€€€‚ÿYou can change the parts in any instance of this dragge†…óÁ…ÁC…r using setPart(). The default part geometries are defined as resources for this SoTabBoxDragger class. They are detailed below in the Dragger Resources section of the online reference page for this class. You can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/tabBoxDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ †…"Â…& €€‚A€‚ÿFIELDSLóÁ…nÂ…2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorA"Â…¯Â…) "€0€”‘€‚A€‚ÿScale of the dragger.LnÂ…ûÂ…2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationD¯Â…?Ã…) "€6€”‘€‚A€‚ÿPosition of the dragger.0 ûÂ…oÃ…& €€‚A€‚ÿMETHODSA?Ã…°Ã…, (€*€T”A‚S~‚A€ƒ‚ÿSoTabBoxDragger()8oÃ…èÃ…) "€€”‘€‚A€‚ÿConstructor.H°Ã…0Ä…, (€8€T”A‚S~‚A€ƒ‚ÿvoidadjustScaleTabSize()b2èÃ…’Å…0 .€e€”‘€‚A€€€‚ÿCause the scale tab sizes to be re-adjusted on all 6 SoTabPlaneDraggers so that they remain a near constant screen space size. This happens automatically upon dragger finish. Call this to adjust the scale tab sizes at other times, for instance after the camera has changed in a viewer finish callback.uC0Ä…Æ…2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/’Å…eÆ…/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#Æ…ºÆ…2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*eÆ… Ç…) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6ºÆ…CÇ…& € €‚A€‚ÿCATALOG PARTS; Ç…~Ç…- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜CÇ…È…~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/~Ç…ÕÈ…#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2È…—É…#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yesÁ1ÕÈ…XÊ…#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿsurroundScaleSurroundScale--yes¿/—É…Ë…#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿtabPlane1TabPlaneDragger--yes¿/XÊ…ÖË…#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿtabPlane2TabPlaneDragger--yes¿/Ë…•Ì…#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿtabPlane3TabPlaneDragger--yes¿/ÖË…TÍ…#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿtabPlane4TabPlaneDragger--yes¿/•Ì…Î…#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿtabPlane5TabPlaneDragger--yes¿/TÍ…ÒÎ…#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿtabPlane6TabPlaneDragger--yes·'Î…‰Ï…#ð€NÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€2€ÿ€4€€€‚ÿ€@€€€‚ÿÿÿboxGeomSeparator--yes,ÒÎ…µÏ…' € €€‚€‚ÿe7‰Ï…&†. ,€n€”‚±€ƒ€€ ‚ÿExtra Information for ListµÏ…&†ÁC… Parts from Above Table’1µÏ…¸†a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8&†Q†a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=¸†Ž†' €,€€‚€‚ÿDRAGGER RESOURCES)ÎQ†·†[ „€€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:tabBoxTranslatorParts:tabPlane1.translatortabPlane2.translatortabPlane3.translatortabPlane4.translatortabPlane5.translatortabPlane6.translatorAppearance:Outline of a Square. The region within is pickableDescription:Begins translation within the plane. The tabBox places and orients each tabPlane so that these squares form a box.Resource:tabBoxScaleTabMaterialParts:tabPlane1.scaleTabMaterialtabPlane2.scaleTabMaterialÌŽ†Ö†S t€™€PÍÇ~‚Í€ ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿtabPlane3.scaleTabMaterialtabPlane4.scaleTabMaterialtabPlane5.scaleTabMaterialtabPlane6.scaleTabMaterialAppearance:Green - half diffuse, half emissive.Description:Used as material for scaling tabs.Resource:tabBoxScaleTabHintsParts:tabPlane1.scaleTabHintstabPlane2.scaleTabHintstabPlane3.scaleTabHintstabPlane4.scaleTabHintstabPlane5.scaleTabHintstabPlane6.scaleTabHintsAppearance:shapeHints node:COUNTERCLOCKWISE/SOLID/CONVEXã¡·†¹†B R€C€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ÿDescription:Property for the tab nodes.Resource:tabBoxBoxGeomPart:boxGeomAppearance:Unpickable gray outline of a box.Description:Just feedback.<Ö†õ†& €,€‚Í€‚ÿFILE FORMAT/DEFAULT<¹†1†* $€$€P„7|‚€‚ÿTabBoxDragger {»õ†J †^ Š€w€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEtranslation0 0 0scaleFactor1 1 1callbackListNULLsurroundScaleNULLtabPlane1TabPlaneDragger {}tabPlane2TabPlaneDragger {}tabPlane3TabPlaneDragger {}tabPlane4TabPlaneDragger {}tabPlane5TabPlaneDragger {}tabPlane6TabPlaneDragger {}boxGeomtabPlane1.translator'ë1†q †< F€×€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿtabPlane2.translatortabPlane3.translatortabPlane4.translatortabPlane5.translatortabPlane6.translatortabPlane1.scaleTabMaterialtabPlane2.scaleTabMaterialtabPlane3.scaleTabMaterialtabPlane4.scaleTabMaterialÈJ †t †; D€‘€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿtabPlane5.scaleTabMaterialtabPlane6.scaleTabMaterialtabPlane1.scaleTabHintstabPlane2.scaleTabHintstabPlane3.scaleTabHintstabPlane4.scaleTabHintstabPlane5.scaleTabHintstabPlane6.scaleTabHints},q †  †) "€€”‘€‚€‚ÿ1 t †Ñ †& €€‚€‚ÿSEE ALSOJ  †'A†, &‚=€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericÑ †'A†ÁC…alDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2Dragger> Ñ †eA†1£Í ð ƒeA†šA†Ï‰†SoTabBoxManip5'A†šA†% € €ˆˆ€‚ÿSoTabBoxManip*eA†ÄA†# €€€‚ÿNAME{UšA†?B†& €ª€”‘€€‚ÿSoTabBoxManip - transform node with 3D Interface for editing scale and translation3ÄA†rB†# € €€‚ÿINHERITS FROMô‚?B†fC†r ²€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€ã¼ýÓ€‰€ã%n’ €‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform > SoTransformManip > SoTabBoxManip2 rB†˜C†& €€€€ ‚ÿSYNOPSIS{NfC†D†- *€œ€”‘€€‚ã¼ýÓ‰‚ÿ#include Fields from class SoTransform:Ï}˜C†âD†R t€ú€T”A‚S~‚Aã”5€‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3ftranslationSoSFRotationrotationSoSFVec3fscaleFactorSoSFRotationscaleOrientationSoSFVec3fcenterM$D†/E†) "€H€”‘€‚A€‚ÿMethods from class SoTabBoxManip:h4âD†—E†4 8€h€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTabBoxManip()static SoTypegetClassTypeId()X)/E†ïE†/ .€R€”‘€‚A€ã%n’ ‰‚ÿMethods from class SoTransformManip:×—E†ÆF†V z€€T”A‚S~‚AãÈï?†€‰ƒ‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒãMy'9‰ã¼ýÓ‰‚ÿSoDragger *getDragger()SbBoolreplaceNode(SoPath *p )SbBoolreplaceManip(SoPath *p,SoTransform *newOne ) constS$ïE†G†/ .€H€”‘€‚A€ã¼ýÓ‰‚ÿMethods from class SoTransform: ŽÆF†&I† Ì€€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰‚ƒã4i¥‘‰‚ƒã¥W7ž‰‚ÿvoidpointAt(const SbVec3f &fromPoint,const SbVec3f &toPoint)voidgetScaleSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetRotationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetTranslationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidmultLeft(const SbMatrix &mat)voidmultRight(const SbMatrix &mat)voidcombineLeft(SoTransformation *nodeOnRight)Ç„G†íI†C T€ €T”A‚S~‚A€ƒã¥W7ž‰‚ƒã4i¥‘‰‚ƒã¨ƒõ(‰‚ÿvoidcombineRight(SoTransformation *nodeOnLeft)voidsetMatrix(const SbMatrix &mat)voidrecenter(const SbVec3f &newCenter)N&I†;J†/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:t íI†¯K†h ž€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X);J†L†/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eدK†lN† 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHL†ôN†@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NlN†BO†/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞôN†…€†Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() cBO†…€†'A†onstSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4BO†¹€†& €€‚A€‚ÿDESCRIPTIONߦ…€†˜†9 @€M€”‘€‚A€€€€€€‚ÿSoTabBoxManip is derived from SoTransform (by way of SoTransformManip). When its fields change, nodes following it in the scene graph scale, and/or translate.ð´¹€†ˆ‚†< F€i€”‘€‚A€€€€€€€‚ÿAs a subclass of SoTransformManip, this manip also has a 3D interface to edit some of its fields. In this case, the interface edits the scaleFactor and translation fields. Ô˜†’ƒ†6 :€©€”‘€‚A€€€€€‚ÿA manipulator differs from a dragger. When you move a dragger, no other nodes are affected. When you move an SoTransformManip, other nodes move along with it. (See the reference page for SoTransformManip.)k)ˆ‚†ý„†B R€S€”‘€‚A€€€€€€€€€‚ÿThe interface for an SoTabBoxManip is exactly the same as that of the SoTabBoxDragger. To find out more about the interface, see the reference page for SoTabBoxDragger. To find out how the manipulator uses a dragger to provide its interface, see the reference page for SoTransformManip.õ¿’ƒ†ò…†6 :€€”‘€‚A€€€€€‚ÿOn screen, this manip will surround the objects influenced by its motion. This is because it turns on the surroundScale part of the dragger (See the reference page for SoSurroundScale)0 ý„†"††& €€‚A€‚ÿMETHODS?ò…†a††, (€&€T”A‚S~‚A€ƒ‚ÿSoTabBoxManip()8"††™††) "€€”‘€‚A€‚ÿConstructor.U#a††î††2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*™††A‡†) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<}‡†& €,€‚A€‚ÿFILE FORMAT/DEFAULT:A‡†·‡†* $€ €P„7|‚€‚ÿTabBoxManip {—b}‡†Nˆ†5 :€Ä€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0 0rotation0 0 1 0scaleFactor1 1 1scaleOrientation0 0 1 0center0 0 0}1 ·‡†ˆ†& €€‚€‚ÿSEE ALSOPÀNˆ†Ï‰† ”‘€‚ãõ+cÛ€‰€ãöñõ€‰€ã+¯€‰€ãNØd>€‰€ã›Ø1Ù€‰€ãr“žN€‰€ãøÀ‰€ã¼ýÓ€‰€ã%n’ €‰‚ÿSoCenterballManip, SoHandleBoxManip, SoJackManip, SoTabBoxDragger, SoTrackballManip, SoTransformBoxManip, SoTransformerManip, SoTransform, SoTransformManipBˆ†Š†1S4€ ‡„Š†JŠ†N‡SoTabPlaneDragger9ω†JŠ†% €(€ˆˆ€‚ÿSoTabPlaneDragger*Š†tŠ†# €€€‚ÿNAMEˆbJŠ†üŠ†& €Ä€”‘€€‚ÿSoTabPlaneDragger - object you can translate or scale within a plane by dragging with the mouse3tŠ†/‹†# € €€‚ÿINHERITS FROMî}üŠ†Œ†q ²€ú€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoTabPlaneDragger2 /‹†OŒ†& €€€€ ‚ÿSYNOPSISXŒ†ÎŒ†' €°€”‘€€‚‚ÿ#include Fields from class SoTabPlaneDragger:l2OŒ†:†: D€d€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fscaleFactorSoSFVec3ftranslationP!ÎŒ†Š†/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:H:†Ò†2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(Š†)Ž†/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³i҆܎†J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO )Ž†+†/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%ÜŽ†‚†2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListQ(+†Ó†) "€P€”‘€‚A€‚ÿMethods from class SoTabPlaneDragger:Ò“‚†±À†? L€'€T”A‚S~‚A€ƒ‚ƒÓ†±À†Ï‰†‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoTabPlaneDragger()voidadjustScaleTabSize()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"Ó†Á†/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:K±À†MÆC T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨Á†0Ć; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)MƈĆ/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”U0Ćņ? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"ˆÄ†mņ/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:8®ņ¥Ç†Š â€]€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒ‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}mņdȆB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)N¥Ç†²È†/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|dȆ.ʆn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)²È††Ê†/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®.ʆ¹Ì†… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH†Ê†A͆@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¹Ì†Í†/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞA͆ÆΆY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!͆φ/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)ÆΆkφ, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+φÂφ, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4kφ ‡& €€‚A€‚ÿDESCRIPTIONÂφ ‡Ï‰†-îÂφ9‡? L€Ý€”‘€‚A€€€€€€€€‚ÿSoTabPlaneDragger is a dragger which allows the user to interactively translate and scale in a plane. It looks like a square white outline with smaller green squares (or tabs) set in the corners and along the center of each edge. Dragging a corner tab scales the dragger in 2D by scaling about the opposite corner. Dragging an edge tab performs 1D scaling about the opposite edge. The rest of the dragger is invisible but pickable; selecting it initiates translation within the plane.Û± ‡‡* "€c€”‘€‚A€‚ÿThe dragger tries to keep the small tabs a constant size in screen space. Every time a drag begins or ends, the size is recalculated based on the viewing and modeling matrix.89‡L‡6 :€€”‘€‚A€€€€€‚ÿWhen dragging the translator part, press the key and you can constrain motion to either the local x axis or the y axis. The direction is determined by your initial mouse gesture after pressing the key. Releasing the key removes the constraint.:‡< F€e€”‘€‚A€€€€€€€‚ÿWhen the translator part drags, the dragger updates its translation field. The various scaling parts cause changes to both the scaleFactor and translation field, since scaling about a point other than the center adds translation to the center of the dragger. If you set the field, the dragger will move accordingly. You can also connect fields of other nodes or engines from this one to make them follow the dragger's motion.á±L‡‡0 .€c€”‘€‚A€€€‚ÿYou can not change the shape used to draw the tabs. This part is kept privately and may not be changed; the coordinates for the tabs are edited during adjustScaleTabSize().ß:‡ú‡B R€;€”‘€‚A€€€€€€€€€‚ÿThe SoTabPlaneDragger class does contain three other parts you can change: tabPlaneTranslator, tabPlaneScaleTabMaterial and tabPlaneScaleTabHints.Ö‡ ‡0 .€­€”‘€‚A€€€‚ÿEach of these is set by default from a resource described in the Dragger Resources section of the online reference page for this class. You can change the parts in any instance of this dragger using setPart().Nú‡N ‡6 :€1€”‘€‚A€€€€€‚ÿYou can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/tabPlaneDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ ‡} ‡& €€‚A€‚ÿFIELDSLN ‡É ‡2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorO&} ‡ ‡) "€L€”‘€‚A€‚ÿScale factor affecting the dragger.LÉ ‡d ‡2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationD ‡¨ ‡) "€6€”‘€‚A€‚ÿPosition of the dragger.0 d ‡Ø ‡& €€‚A€‚ÿMETHODSC¨ ‡ ‡, (€.€T”A‚S~‚A€ƒ‚ÿSoTabPlaneDragger()8Ø ‡S ‡) "€€”‘€‚A€‚ÿConstructor.H ‡› ‡, (€8€T”A‚S~‚A€ƒ‚ÿvoidadjustScaleTabSize()>S ‡Ù ‡* "€)€”‘€‚A€‚ÿCause the scale tab sizes to be re-adjusted so that they remain a near constant screen space size. This happens automatically upon dragger finish. Call this to adjust the scale tab sizes at other times, for instance after the camera has changed in a viewer finish callback.uC› ‡N‡2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/Ù ‡¬‡/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#N‡‡2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¬‡T‡) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6‡Š‡& € €‚A€‚ÿCATALOG PARTS;T‡Å‡- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜Š‡i@‡~#Ì€4ÜI, “ ’ €€€‚ÿŇi@‡Ï‰†€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/Ň(A‡#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2i@‡êA‡#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yesº*(A‡¤B‡#ð€TÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€8€ÿ€:€€€‚ÿ€F€€€‚ÿÿÿtranslatorSeparator--yes¿/êA‡cC‡#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€*€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿscaleTabMaterialMaterial--yes¾.¤B‡!D‡#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿscaleTabHintsShapeHints--yes,cC‡MD‡' € €€‚€‚ÿe7!D‡²D‡. ,€n€”‚±€ƒ€€ ‚ÿExtra Information for List Parts from Above Table’1MD‡DE‡a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8²D‡ÝE‡a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=DE‡F‡' €,€€‚€‚ÿDRAGGER RESOURCES ºÝE‡:H‡f š€u€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:tabPlaneTranslatorPart:translatorAppearance:Outline of a Square. The region within it is pickableDescription:Begins translation within the planeResource:tabPlaneScaleTabMaterialPart:scaleTabMaterialAppearance:Green - half diffuse, half emissive.Description:Used as material for scaling tabs.Resource:tabPlaneScaleTabHintsPart:scaleTabHintsAppearance:shapeHints node:COUNTERCLOCKWISE/SOLID/CONVEXX,F‡’H‡, (€X€PÍÇ~‚Í€ ƒ‚‚ÿDescription:Property for the tab nodes.<:H‡ÎH‡& €,€‚Í€‚ÿFILE FORMAT/DEFAULT>’H‡ I‡* $€(€P„7|‚€‚ÿTabPlaneDragger {f%ÎH‡rJ‡A P€K€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEtranslation0 0 0scaleFactor1 1 1callbackListNULLtranslatorscaleTabMaterialscaleTabHints}, I‡žJ‡) "€€”‘€‚€‚ÿ1 rJ‡ÏJ‡& €€‚€‚ÿSEE ALSOHžJ‡N‡, &‚9€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2Dragger8ÏJ‡ON‡1Ùð 9„…ON‡~N‡‚ȇSoText2/ N‡~N‡% €€ˆˆ€‚ÿSoText2*ON‡¨N‡# €€€‚ÿNAMET.~N‡üN‡& €\€”‘€€‚ÿSoText2 - screen-aligned 2D text shape node3¨N‡/O‡# € €€‚ÿINHERITS FROM£JüN‡ÒO‡Y ‚€”€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoText22 /O‡€‡& €€€€ ‚ÿSYNOPSIÒO‡€‡N‡SL&ÒO‡\€‡& €L€”‘€€‚ÿ#include ¿€‡d‡I `€€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum Justification{SoText2::LEFTLeft edges of all strings are alignedSoText2::RIGHTRight edges of all strings are alignedSoText2::CENTERCenters of all strings are aligned}F\€‡ª‡) "€:€”‘€‚A€‚ÿFields from class SoText2:…Cd‡/‚‡B T€†€T”A‚S~‚Aã*{£€‰ƒ‚ã0â1‰ƒ‚ãØtW鉃‚ÿSoMFStringstringSoSFFloatspacingSoSFEnumjustificationGª‡v‚‡) "€<€”‘€‚A€‚ÿMethods from class SoText2:b./‚‡Ø‚‡4 8€\€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoText2()static SoTypegetClassTypeId()Nv‚‡&ƒ‡/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Ø‚‡¢„‡n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)&ƒ‡ú„‡/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ¢„‡_‡‡ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHú„‡ç‡‡@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N_‡‡5ˆ‡/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ燇l‰‡Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const45ˆ‡ ‰‡& €€‚A€‚ÿDESCRIPTIONWl‰‡!‹‡* "€¯€”‘€‚A€‚ÿThis node defines one or more strings of 2D text. The text is always aligned horizontally with the screen and does not change size with distance in a perspective projection. The text origin is at (0,0,0) after applying the current transformation. Rotations and scales have no effect on the orientation or size of 2D text, just the location.O" ‰‡pŒ‡- (€E€”‘€‚A€€‚ÿSoText2 uses the current font to determine the typeface and size. The text is always drawn with the diffuse color of the current material; it is not lit, regardless of the lighting model. Furthermore, 2D text can not be textured, and it ignores the current drawing style and complexity.å!‹‡‹Ž‡6 :€Ë€”‘€‚A€€€€€‚ÿBecause 2D text is screen-aligned, it has some unusual characteristics. For example, the 3D bounding box surrounding a 2D text string depends on the current camera and the current viewport size, since changing the field of view or the mapping onto the window changes the relative size of the text with respect to the rest of the scene. This has implications for caching as well, since a render cache in an SoSeparator that contains an SoText2 node depends on the current camera./ pŒ‡ºŽ‡& €€‚A€‚ÿFIELDSH‹Ž‡‡2 4€,€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringstringsJºŽ‡u‡) "€”€”‘€‚A€‚ÿThe text string(s) to display. Each string will appear on its own line.H‡½‡2 4€,€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatspacingïu‡âÀ‡* "€ß€”‘€‚A€‚ÿDefines the distance (in½‡âÀ‡N‡ the negative y direction) between the base points of successive strings, measured with respect to the current font height. A value of 1 indicates single spacing, a value of 2 indicates double spacing, and so on.M½‡/Á‡2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumjustification‡]âÀ‡¶Â‡* "€»€”‘€‚A€‚ÿIndicates placement and alignment of strings. With LEFT justification, the left edge of the first line is at the (transformed) origin, and all left edges are aligned. RIGHT justification is similar. CENTER justification places the center of the first string at the (transformed) origin, with the centers of all remaining strings aligned under it.0 /Á‡æ‡& €€‚A€‚ÿMETHODS9 ¶Â‡Ç, (€€T”A‚S~‚A€ƒ‚ÿSoText2()Y0æ‡xÇ) "€`€”‘€‚A€‚ÿCreates a 2D text node with default settings.U#ÇÍÇ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*xÇ ć) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ÍÇXć& €$€‚A€‚ÿACTION BEHAVIORH ć Ä‡2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderActionˆ\Xć(Ň, (€¸€”‘€‚A€€‚ÿDraws text based on the current font, at a location based on the current transformation.G Ä‡oŇ2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickActionõÂ(ŇdƇ3 4€…€”‘€‚A€€€€‚ÿPerforms a pick on the text. Text will be picked if the picking ray intersects the bounding box of the strings. The string index and character position are available from the SoTextDetail.NoŇ²Æ‡2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActiona5dƇLJ, (€j€”‘€‚A€€‚ÿComputes the bounding box that encloses the text.<²Æ‡OLJ& €,€‚A€‚ÿFILE FORMAT/DEFAULT4 LJƒÇ‡* $€€P„7|‚€‚ÿText2 {],OLJàLJ1 2€X€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿstring""spacing1justificationLEFT}1 ƒÇ‡ȇ& €€‚€‚ÿSEE ALSOq*àLJ‚ȇG ^€T€”‘€‚ã·»9€‰€ãêwš€‰€㢽?·€‰‚ÿSoFont, SoText3, SoTextDetail8ȇºÈ‡1û ‡”…†ºÈ‡éȇÜIˆSoText3/ ‚ȇéȇ% €€ˆˆ€‚ÿSoText3*ºÈ‡ɇ# €€€‚ÿNAMEEéȇXɇ& €>€”‘€€‚ÿSoText3 - 3D text shape node3ɇ‹É‡# € €€‚ÿINHERITS FROM£JXɇ.ʇY ‚€”€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoText32 ‹É‡`ʇ& €€€€ ‚ÿSYNOPSISL&.ʇ¬Ê‡& €L€”‘€€‚ÿ#include Ül`ʇˆÌ‡p ®€Ù€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Justification{SoText3::LEFTLeft edges of all strings are alignedSoText3::RIGHTRight edges of all strings are alignedSoText3::CENTERCenters of all strings are aligned}enum Part{SoText3::FRONTFront faces of charactersSoText3::SIDESExtruded sides of charactersSoText3::BACKBack faces of charactersSoText3::ALLAll parts}F¬Ê‡Î̇) "€:€”‘€‚A€‚ÿFields from class SoText3:¡WˆÌ‡o͇J d€®€T”A‚S~‚Aã*{£€‰ƒ‚ã0â1‰ƒ‚ã:YN‰ƒ‚ãØtW鉃‚ÿSoMFStringstringSoSFFloatspacingSoSFBitMaskpartsSoSFEnumjustificationGÎ̇¶Í‡) "€<€”‘€‚A€‚ÿMethods from class SoText3:b.o͇·4 8€\€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoText3()static SoTypegetClassTypeId()N¶Í‡f·/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|· ˆn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)f· ˆ‚ȇX)f·dˆ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ ˆÉˆ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHdˆQˆ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NɈŸˆ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞQˆÖˆY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Ÿˆ ˆ& €€‚A€‚ÿDESCRIPTIONùÃÖˆˆ6 :€‡€”‘€‚A€€€€€‚ÿThis node defines one or more strings of 3D text. In contrast with SoText2, 3D text can be rotated, scaled, lighted, and textured, just like all other 3D shapes. Each character in a 3D text string is created by extruding an outlined version of the character (in the current typeface) along the current profile, as defined by nodes derived from SoProfile. The default text profile, if none is specified, is a straight line segment one unit long.öÀ ˆùˆ6 :€€”‘€‚A€€€€€‚ÿThe text origin is at (0,0,0) after applying the current transformation. The scale of the text is affected by the size field of the current SoFont as well as the current transformation.`3ˆY ˆ- (€g€”‘€‚A€€‚ÿSoText3 uses the current set of materials when rendering. If the material binding is OVERALL, then the whole text is drawn with the first material. If it is PER_PART or PER_PART_INDEXED, the front part of the text is drawn with the first material, the sides with the second, and the back with the third.Ö¬ùˆ/ ˆ* "€Y€”‘€‚A€‚ÿTextures are applied to 3D text as follows. On the front and back faces of the text, the texture origin is at the base point of the first string; the base point is at the lower left for justification LEFT, at the lower right for RIGHT, and at the lower center for CENTER. The texture is scaled equally in both S and T dimensions, with the font height representing 1 unit. S increases to the right on the front faces and to the left on the back faces. On the sides, the texture is scaled the same as on the front and back. S is equal to 0 at the rear edge of the side faces. The T origin can occur anywhere along each character, depending on how that character's outline is defined.ë¸Y ˆ ˆ3 4€q€”‘€‚A€€ã·»9‰‚ÿStroke Fonts: If a stroke font is used (see SoFont), the text is rendered with lines rather than faces. Line attributes apply instead of polygon attributes. Text is not extruded./ / ˆI ˆ& €€‚A€‚ÿFIELDSH ˆ‘ ˆ2 4€,€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringstringsJI ˆˆ) "€”€”‘€‚A€‚ÿThe text string(s) to display. Each string will appear on its own line.H‘ ˆLˆ2 4€,€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatspacingïˆeˆ* "€ß€”‘€‚A€‚ÿDefines the distance (in the negative y direction) between the base points of successive strings, measured with respect to the current font height. A value of 1 indicates single spacing, a value of 2 indicates double spacing, and so on.HLˆ­ˆ2 4€,€T”A‚S~‚Aã:YN€‰ƒ‚ÿSoSFBitMaskpartsŒceˆE@ˆ) "€Æ€”‘€‚A€‚ÿWhich parts of text are visible. Note tha­ˆE@ˆ‚ȇt, for speed, the default for this field is FRONT only.M­ˆ’@ˆ2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumjustification‡]E@ˆBˆ* "€»€”‘€‚A€‚ÿIndicates placement and alignment of strings. With LEFT justification, the left edge of the first line is at the (transformed) origin, and all left edges are aligned. RIGHT justification is similar. CENTER justification places the center of the first string at the (transformed) origin, with the centers of all remaining strings aligned under it.0 ’@ˆIBˆ& €€‚A€‚ÿMETHODS9 Bˆ‚Bˆ, (€€T”A‚S~‚A€ƒ‚ÿSoText3()Y0IBˆÛBˆ) "€`€”‘€‚A€‚ÿCreates a 3D text node with default settings.U#‚Bˆ0Cˆ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ÛBˆƒCˆ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.80Cˆ»Cˆ& €$€‚A€‚ÿACTION BEHAVIORHƒCˆDˆ2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderAction¨|»Cˆ«Dˆ, (€ø€”‘€‚A€€‚ÿDraws text based on the current font, profiles, transformation, drawing style, material, texture, complexity, and so on.GDˆòDˆ2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickAction¡o«Dˆ“Eˆ2 4€Þ€”‘€‚A€€€€‚ÿPerforms a pick on the text. The string index and character position are available from the SoTextDetail.NòDˆáEˆ2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActiona5“EˆBFˆ, (€j€”‘€‚A€€‚ÿComputes the bounding box that encloses the text.HáEˆŠFˆ2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackActioná®BFˆkGˆ3 4€]€”‘€‚A€€€€‚ÿFor non-stroke fonts, if any triangle callbacks are registered with the action, they will be invoked for each successive triangle used to approximate the text geometry.Ù¯ŠFˆDHˆ* "€_€”‘€‚A€‚ÿFor stroke fonts, if any line segment callbacks are registered with the action, they will be invoked for each successive line segment used to approximate the text geometry.<kGˆ€Hˆ& €,€‚A€‚ÿFILE FORMAT/DEFAULT4 DHˆ´Hˆ* $€€P„7|‚€‚ÿText3 {k8€HˆIˆ3 6€p€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿstring""spacing1justificationLEFTpartsFRONT}1 ´HˆPIˆ& €€‚€‚ÿSEE ALSOŒ9IˆÜIˆS v€r€”‘€‚ã·»9€‰€ãaC}2€‰€ãéwš€‰€㢽?·€‰‚ÿSoFont, SoProfile, SoText2, SoTextDetail= PIˆJˆ1: 9„Ö‡JˆMJˆm†ˆSoTextDetail4ÜIˆMJˆ% €€ˆˆ€‚ÿSoTextDetail*JˆwJˆ# €€€‚ÿNAMEc=MJˆÚJˆ& €z€”‘€€‚ÿSoTextDetail - stores detail information about a text node3wJˆ Kˆ# € €€‚ÿINHERITS FROMTÚJˆaKˆ5 :€>€”‘€ãåŒÅe€‰€€€‚ÿSoDetail > SoTextDetail2 Kˆ“Kˆ& €€€€ ‚ÿSYNOPSISuNaKˆLˆ' €œ€”‘€€‚‚ÿ#include Methods from class SoTextDetail:Eò“KˆMMˆS t€å€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãêwš‰ƒ‚ã?çî$‰ƒ‚ãñ†Ï‰ƒ‚ãB-9‰ƒ‚ÿSoTextDetail()virtual~SoTextDetail()int32_tgetStringIndex() constint32_tgetCharacterIndex() constSoText3::PartgetPart() constSbBox3fgetBoundingBox() constSbXfBox3fgetXfBoundingBox() conststatic SoTypegetClassTypeId()P!LˆMˆ/ .€B€”‘€‚A€ãåŒÅe‰‚ÿMethods from class SoDetail:®fMMˆKNˆH `€Ì€T”A‚S~‚AãåŒÅe€‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿSoDetail *copy() constvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4MˆNˆ& €€‚A€‚ÿDESCRIPTIONëµKNˆjOˆ6 :€k€”‘€‚A€€€€€‚ÿThis class contains detail information about a point on a text shape (SoText2 or SoText3). It contains the part of the text, string, and character that were hit or generated.0 NˆšOˆ& €€‚A€‚ÿMETHODSX*jOˆ €ˆ. ,€T€T”A‚S~‚A€ƒ‚ƒ‚ÿSoTextDetail()virtual~SoTextDetail()šOˆ €ˆÜIˆGšOˆS€ˆ) "€<€”‘€‚A€‚ÿConstructor and destructor.M! €ˆ €ˆ, (€B€T”A‚S~‚A€ƒ‚ÿint32_tgetStringIndex() const‘bS€ˆ1ˆ/ .€Ä€”‘€‚A€€€‚ÿReturns the index of the relevant string within a multiple-value string field of a text node.P$ €ˆˆ, (€H€T”A‚S~‚A€ƒ‚ÿint32_tgetCharacterIndex() constÒ¨1ˆS‚ˆ* "€Q€”‘€‚A€‚ÿReturns the index of the relevant character within the string. For example, if the character of detail was the "u" within "Splurmph", the character index would be 3.T"ˆ§‚ˆ2 4€D€T”A‚S~‚Aãêwš€‰ƒ‚ÿSoText3::PartgetPart() constqBS‚ˆƒˆ/ .€„€”‘€‚A€€€‚ÿFor SoText3, this returns which part was picked or generated.‚H§‚ˆšƒˆ: D€€T”A‚S~‚Aã?çî$€‰ƒ‚ãñ†Ï‰ƒ‚ÿSbBox3fgetBoundingBox() constSbXfBox3fgetXfBoundingBox() constJƒˆä„ˆ6 :€)€”‘€‚A€€€€€‚ÿWhen the detail is returned from picking, these return the object-space bounding box of the character that was intersected. Otherwise, they return an empty box. The second method returns an SbXfBox3f instead of a SbBox3f. These methods are implemented only for 3D text.U#šƒˆ9…ˆ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*䄈Œ…ˆ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.1 9…ˆ½…ˆ& €€‚A€‚ÿSEE ALSO°QŒ…ˆm†ˆ_ Ž€¢€”‘€‚Aãéwš€‰€ãêwš€‰€ãåŒÅe€‰€ã¼B‘S€‰€ãkNÞ€‰‚ÿSoText2, SoText3, SoDetail, SoPickedPoint, SoPrimitiveVertex; ½…ˆ¨†ˆ1Ì”…†ˆ¨†ˆÚ†ˆ‰SoTexture22 m†ˆÚ†ˆ% €€ˆˆ€‚ÿSoTexture2*¨†ˆ‡ˆ# €€€‚ÿNAMEJ$Ú†ˆN‡ˆ& €H€”‘€€‚ÿSoTexture2 - texture mapping node3‡ˆ‡ˆ# € €€‚ÿINHERITS FROMŒ?N‡ˆ ˆˆM j€~€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTexture22 ‡ˆ?ˆˆ& €€€€ ‚ÿSYNOPSISO) ˆˆŽˆˆ& €R€”‘€€‚ÿ#include ñ“?ˆˆŠˆ^ Š€'€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€‚ÿenum Model{SoTexture2::MODULATEThe texture color is multiplied by the surface colorSoTexture2::DECALThe texture color replaces the surface colorSoTexture2::BLENDBlends between the surface color and a specified blend color}enum Wrap{SoTexture2::REPEATRepeats texture outside 0-1 texture coordinate rangeSoTexture2::CLAMPClamps texture coordinates to lie within 0-1 range}I ŽˆˆÈŠˆ) "€@€”‘€‚A€‚ÿFields from class SoTexture2:ÎtŠˆ–‹ˆZ „€è€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ãƒ2‰ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ãð@I1‰ƒ‚ÿSoSFStringfilenameSoSFImageimageSoSFEnumwrapSSoSFEnumwrapTSoSFEnummodelSoSFColorblendColorJ!ÈŠˆà‹ˆ) "€B€”‘€‚A€‚ÿMethods from class SoTexture2:e1–‹ˆEŒˆ4 8€b€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTexture2()static SoTypegetClassTypeId()Nà‹ˆ“Œˆ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|EŒˆŽˆn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)“ŒˆgŽˆ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØŽˆØÀˆ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fielgŽˆØÀˆm†ˆdDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHgŽˆ`Áˆ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NØÀˆ®Áˆ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ`ÁˆåˆY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4®ÁˆÈ& €€‚A€‚ÿDESCRIPTION¿•åˆØÈ* "€+€”‘€‚A€‚ÿThis property node defines a texture map and parameters for that map. This map is used to apply texture to subsequent shapes as they are rendered.‡KÈ_ň< F€—€”‘€‚A€€€€€€€‚ÿThe texture can be read from the file specified by the filename field. Once the texture has been read, the image field contains the texture data. However, this field is marked so the image is not written out when the texture node is written to a file. To turn off texturing, set the filename field to an empty string ("").Ï™ØÈ.ƈ6 :€3€”‘€‚A€€€€€‚ÿTextures can also be specified in memory by setting the image field to contain the texture data. Doing so resets the filename to the empty string.K!_ňyȈ* "€C€”‘€‚A€‚ÿIf the texture image's width or height is not a power of 2, or the image's width or height is greater than the maximum supported by OpenGL, then the image will be automatically scaled up or down to the next power of 2 or the maximum texture size. For maximum speed, point-sampling is used to do the scale; if you want more accurate resampling, pre-filter images to a power of 2 smaller than the maximum texture size (use the OpenGL glGetIntegerv(GL_MAX_TEXTURE_SIZE...) call to determine maximum texture for a specific OpenGL implementation)."æ.ƈ›Êˆ< F€Í€”‘€‚A€€€€€€€‚ÿThe quality of the texturing is affected by the textureQuality field of the SoComplexity node. The textureQuality field affects what kind of filtering is done to the texture when it must be minified or magnified. The mapping of a particular texture quality value to a particular OpenGL filtering technique is implementation dependent, and varies based on the texturing performance. If mipmap filtering is required, mipmaps are automatically created using the simple box filter./ yȈÊʈ& €€‚A€‚ÿFIELDSJ›Êˆˈ2 4€0€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringfilenameÅ}ÊʈÙ͈H ^€û€”‘€‚A€€€€€€€€€€€‚ÿNames file from which to read texture image. The following file formats are supported: SGI RGB, GIF, JPEG, PNG, and (Windows only) BMP. If the filename is not an absolute path name, the list of directories maintained by SoInput is searched. If the texture is not found in any of those directories, then the file is searched for relative to the directory from which the SoTexture2 node was read. For example, if an SoTexture2 node with a filename of "../tofu.rgb" is read from /usr/people/bob/models/food.iv, then /usr/people/bob/tofu.rgb will be read (assuming tofu.rgb isn't found in the directories maintained by SoInput).FˈΈ2 4€(€T”A‚S~‚Aãƒ2€‰ƒ‚ÿSoSFImageimage,öÙ͈Kψ6 :€í€”‘€‚A€€€€€‚ÿContains an in-memory representation of the texture map. It is either the contents of the file read from filename, an image read directly from an Open Inventor file, or an image set programmatically using the methods provided by SoSFImage.^$Έ©Ïˆ: D€H€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ÿSoSFEnumwrapSSoSFEnumwrapT¤{KψY‰) "€ö€”‘€‚A€‚ÿIndicates what to do when texture coordinates©ÏˆY‰m†ˆ in the S (horizontal) or T (vertical) direction lie outside the range 0-1.E©Ïˆž‰2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnummodelV-Y‰ô‰) "€Z€”‘€‚A€‚ÿSpecifies how to map texture onto surface.Kž‰?‰2 4€2€T”A‚S~‚Aãð@I1€‰ƒ‚ÿSoSFColorblendColorGô‰†‰) "€<€”‘€‚A€‚ÿColor used for BLEND model.0 ?‰¶‰& €€‚A€‚ÿMETHODS<†‰ò‰, (€ €T”A‚S~‚A€ƒ‚ÿSoTexture2()Y0¶‰K‰) "€`€”‘€‚A€‚ÿCreates a texture node with default settings.U#ò‰ ‰2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*K‰ó‰) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8 ‰+‰& €$€‚A€‚ÿACTION BEHAVIORb*ó‰‰8 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackActionN"+‰Û‰, (€D€”‘€‚A€€‚ÿSets current texture in state.<‰‰& €,€‚A€‚ÿFILE FORMAT/DEFAULT7 Û‰N‰* $€€P„7|‚€‚ÿTexture2 {ŽW‰Ü‰7 >€®€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿfilename""image0 0 0wrapSREPEATwrapTREPEATmodelMODULATEblendColor0 0 0}1 N‰ ‰& €€‚€‚ÿSEE ALSO•Ü‰‰l ¦€+€”‘€‚ãžvšN€‰€ãOjnÄ€‰€ãqŠ•±€‰€ã·ºz€‰€ãf;1c€‰€ã“y€‰‚ÿSoComplexity, SoMaterial, SoTexture2Transform, SoTextureCoordinate2, SoTextureCoordinateBinding, SoTextureCoordinateFunctionD ‰R‰1cÖ¼…‰R‰‰‚J‰SoTexture2Transform;‰‰% €,€ˆˆ€‚ÿSoTexture2Transform*R‰·‰# €€€‚ÿNAME]7‰‰& €n€”‘€€‚ÿSoTexture2Transform - 2D texture transformation node3·‰G‰# € €€‚ÿINHERITS FROM•H‰Ü‰M j€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTexture2Transform2 G‰‰& €€€€ ‚ÿSYNOPSIS€Y܉Ž‰' €²€”‘€€‚‚ÿ#include Fields from class SoTexture2Transform:¤Z‰2 ‰J d€´€T”A‚S~‚Aãi5€‰ƒ‚ã0â1‰ƒ‚ãi5‰ƒ‚ãi5‰ƒ‚ÿSoSFVec2ftranslationSoSFFloatrotationSoSFVec2fscaleFactorSoSFVec2fcenterS*Ž‰… ‰) "€T€”‘€‚A€‚ÿMethods from class SoTexture2Transform:n:2 ‰ó ‰4 8€t€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTexture2Transform()static SoTypegetClassTypeId()N… ‰A ‰/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ó ‰½ ‰n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)A ‰ ‰/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eؽ ‰z‰ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH ‰‰@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nz‰P‰/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ‰“@‰Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypeP‰“@‰‰getTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4P‰Ç@‰& €€‚A€‚ÿDESCRIPTION•k“@‰\C‰* "€×€”‘€‚A€‚ÿThis node defines a 2D transformation applied to texture coordinates. This affects the way textures are applied to the surfaces of subsequent shapes. The transformation consists of (in order) a non-uniform scale about an arbitrary center point, a rotation about that same point, and a translation. (Note: while the transformations can be thought of as being applied in that order, the GL matrices are actually premultiplied in the opposite order. Therefore, the operations are listed in the reverse order throughout this reference page.) This allows a user to change the size and position of the textures on objects./ Ç@‰‹C‰& €€‚A€‚ÿFIELDSL\C‰×C‰2 4€4€T”A‚S~‚Aãi5€‰ƒ‚ÿSoSFVec2ftranslationC‹C‰D‰) "€4€”‘€‚A€‚ÿTranslation in S and T.I×C‰cD‰2 4€.€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatrotation¯…D‰E‰* "€ €”‘€‚A€‚ÿCounter-clockwise rotation of the coordinate space, in radians. This results in a clockwise rotation of the texture on the object.LcD‰^E‰2 4€4€T”A‚S~‚Aãi5€‰ƒ‚ÿSoSFVec2fscaleFactorGE‰¥E‰) "€<€”‘€‚A€‚ÿScaling factors in S and T.G^E‰ìE‰2 4€*€T”A‚S~‚Aãi5€‰ƒ‚ÿSoSFVec2fcenterW.¥E‰CF‰) "€\€”‘€‚A€‚ÿCenter point used for scaling and rotation.0 ìE‰sF‰& €€‚A€‚ÿMETHODSECF‰¸F‰, (€2€T”A‚S~‚A€ƒ‚ÿSoTexture2Transform()h?sF‰ G‰) "€~€”‘€‚A€‚ÿCreates a texture transformation node with default settings.U#¸F‰uG‰2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* G‰ÈG‰) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8uG‰H‰& €$€‚A€‚ÿACTION BEHAVIORb*ÈG‰bH‰8 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackActiontHH‰ÖH‰, (€€”‘€‚A€€‚ÿConcatenates transformation with the current texture transformation.<bH‰I‰& €,€‚A€‚ÿFILE FORMAT/DEFAULT@ÖH‰RI‰* $€,€P„7|‚€‚ÿTexture2Transform {n;I‰ÀI‰3 6€v€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0rotation0scaleFactor1 1center0 0}1 RI‰ñI‰& €€‚€‚ÿSEE ALSO‘JÀI‰‚J‰G ^€”€”‘€‚ãÿÓ>Ñ€‰€ã·ºz€‰€ã“y€‰‚ÿSoTexture2, SoTextureCoordinate2, SoTextureCoordinateFunction; ñI‰½J‰18&†|Š½J‰ïJ‰çŠSoTexture32 ‚J‰ïJ‰% €€ˆˆ€‚ÿSoTexture3*½J‰K‰# €€€‚ÿNAMEM'ïJ‰fK‰& €N€”‘€€‚ÿSoTexture3 - 3D texture mapping node3K‰™K‰# € €€‚ÿINHERITS FROMŒ?fK‰%L‰M j€~€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTexture32 ™K‰WL‰& €€€€ ‚ÿSYNOPSISO)%L‰¦L‰& €R€”‘€€‚ÿ#include ñ“WL‰—N‰^ Š€'€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€‚ÿenum Model{SoTexture3::MODULATEThe texture color is multiplied by the surface colorSoTexture3::DECALThe texture color replaces the surface colorSoTexture3::BLENDBlends between the surface color and a specified blend color}enum Wrap{SoTexture3::REPEATRepeats texture outside 0-1 texture coordinate rangeSoTexture3::CLAMPClamps texture coordinates to lie within 0-1 range}I ¦L‰àN‰) "€@€”‘€‚A€‚ÿFields from class SoTexture3:ꇗN‰ÊO‰c ”€€T”A‚S~‚Aã*{£€‰ƒ‚ã k{‰ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ãð@I1‰ƒ‚ÿSoMFStringfilenamesSoSFImage3imageSoSFEnumwrapRSoSFEnumwrapSSoSFEnumwrapTSoSFEnummodelSoSFColorblendColorJ!àN‰ €‰) "€B€”‘€‚A€‚ÿMethods fromÊO‰ €‰‚J‰ class SoTexture3:e1ÊO‰…€‰4 8€b€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTexture3()static SoTypegetClassTypeId()N €‰Ó€‰/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|…€‰O‚‰n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ó€‰§‚‰/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØO‚‰ …‰ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH§‚‰”…‰@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N …‰â…‰/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ”…‰‡‰Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4â…‰M‡‰& €€‚A€‚ÿDESCRIPTIONLJ‰ˆ‰* "€;€”‘€‚A€‚ÿThis property node defines a 3D texture map and parameters for that map. This map is used to apply a 3D texture to subsequent shapes as they are rendered.ŸcM‡‰³‰‰< F€Ç€”‘€‚A€€€€€€€‚ÿThe texture can be read from the file(s) specified by the filenames field. Once the texture has been read, the image field contains the texture data. However, this field is marked so the image is not written out when the texture node is written to a file. To turn off texturing, set the first value of the filenames field to an empty string ("").Ö ˆ‰‰Š‰6 :€A€”‘€‚A€€€€€‚ÿTextures can also be specified in memory by setting the image field to contain the texture data. Doing so resets the filenames field to the empty string.i?³‰‰ò‹‰* "€€”‘€‚A€‚ÿSimply put, a 3D texture is a set of well-arranged 2D textures. Typically, 3D textures represent a set of image-slices of a given volume of data, and are used for mapping onto pieces of geometry. Note that this is different from direct volume rendering in that 3D textures need to be mapped onto a piece of geometry.õ‰Š‰‰* "€ë€”‘€‚A€‚ÿOpenGL requires all images in a 3D texture to have the same dimensions, and each dimension needs to be a power of 2. Also, images must have the same number of components (grayscale, grayscale with transparency, RGB, or RGB with transparency).Iò‹‰fÀ‰4 6€+€T”!:‚!€ƒ‚ƒ€€‚ÿ•Images that do not have the same number of components as the first image are recomputed to have the same number of components. At best, there is no loss of quality. At worst, the recomputed images may lose colors and/or transparency. •If the 2D texture image's width or height is not a power of 2, or the image's width or height is greater than the maximum supported by OpenGL, then the image will be automatically scaled up or down to the next power of 2 or the maximum texture size. For maximum speed, point-sampling is used to do the scale; if you want more accurate resampling, pre-filter images to a power of 2 smaller than the maximum texture size (use the OpenGL glGetIntegerv(GL_MAX_T‰fÀ‰‚J‰EXTURE_SIZE...) call to determine maximum texture for a specific OpenGL implementation).Õ‰i‰. *€«€T”!:‚!€ƒ‚ƒ‚ÿ•Images that have a different size from the first image are rescaled to match the size of the first image (which itself may have been scaled to satisfy the size requirements of OpenGL as described in the preceding paragraph).•If the number of images is not a power of 2 (the depth of the 3D texture), an error is issued and the nearest power of 2 is chosen. If it is lower, some images are discarded, if it is higher, new images are created and filled with zeros."æfÀ‰‹Ä‰< F€Í€”‘€‚!€€€€€€€‚ÿThe quality of the texturing is affected by the textureQuality field of the SoComplexity node. The textureQuality field affects what kind of filtering is done to the texture when it must be minified or magnified. The mapping of a particular texture quality value to a particular OpenGL filtering technique is implementation dependent, and varies based on the texturing performance. If mipmap filtering is required, mipmaps are automatically created using the simple box filter./ i‰ºÄ‰& €€‚!€‚ÿFIELDSK‹Ä‰ʼn2 4€2€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringfilenames˃ºÄ‰ÐljH ^€€”‘€‚A€€€€€€€€€€€‚ÿNames of file(s) from which to read texture image. The following file formats are supported: SGI RGB, GIF, JPEG, PNG, and (Windows only) BMP. If the filename is not an absolute path name, the list of directories maintained by SoInput is searched. If the texture is not found in any of those directories, then the file is searched for relative to the directory from which the SoTexture3 node was read. For example, if an SoTexture3 node with a filename of "../tofu.rgb" is read from /usr/people/bob/models/food.iv, then /usr/people/bob/tofu.rgb will be read (assuming tofu.rgb isn't found in the directories maintained by SoInput).³‰ʼnƒÈ‰* "€€”‘€‚A€‚ÿAll images must have the same dimensions and number of components. Depth (number of slices) is determined by the number of file names.GÐljÊȉ2 4€*€T”A‚S~‚Aã k{€‰ƒ‚ÿSoSFImage3image1ûƒÈ‰ûɉ6 :€÷€”‘€‚A€€€€€‚ÿContains an in-memory representation of the texture map. It is either the contents of the file(s) read from filenames, an image read directly from an Open Inventor file, or an image set programmatically using the methods provided by SoSFImage3.w5ÊȉrʉB T€j€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumwrapRSoSFEnumwrapSSoSFEnumwrapT±‡ûɉ#ˉ* "€€”‘€‚A€‚ÿIndicates what to do when texture coordinates in the R (depth), S (horizontal), or T (vertical) direction lie outside the range 0-1.Erʉhˉ2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnummodelV-#ˉ¾Ë‰) "€Z€”‘€‚A€‚ÿSpecifies how to map texture onto surface.Khˉ ̉2 4€2€T”A‚S~‚Aãð@I1€‰ƒ‚ÿSoSFColorblendColorG¾Ë‰P̉) "€<€”‘€‚A€‚ÿColor used for BLEND model.0 ̉€Ì‰& €€‚A€‚ÿMETHODS<P̉¼Ì‰, (€ €T”A‚S~‚A€ƒ‚ÿSoTexture3()Y0€Ì‰͉) "€`€”‘€‚A€‚ÿCreates a texture node with default settings.U#¼Ì‰j͉2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*͉½Í‰) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8j͉õ͉& €$€‚A€‚ÿACTION BEHAVIORb*½Í‰WΉ8 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackActionN"õ͉¥Î‰, (€D€”‘€‚A€€‚ÿSets current texture in state.<WΉáΉ& €,€‚A€‚ÿFILE FORMAT/DEFAULT7 ¥Î‰ω* $€€P„7|‚€‚ÿTexture3 {ŸfáΉ·Ï‰9 B€Ì€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿfilename""image0 0 0 0wrapRREPEATwrapSREPEATwrapTREPEATmodelMODULATEblendColor0 0 0}1 ω Š& €€‚€‚ÿSEE ALSO·Ï‰ Š‚J‰Û|·Ï‰çŠ_ Ž€ø€”‘€‚ãžvšN€‰€ãOjnÄ€‰€ã·ºz€‰€ãf;1c€‰€ã“y€‰‚ÿSoComplexity, SoMaterial, SoTextureCoordinate3, SoTextureCoordinateBinding, SoTextureCoordinateFunctionD Š+Š1-¼…t‚‹+ŠfŠ†EŠSoTexture3Transform;çŠfŠ% €,€ˆˆ€‚ÿSoTexture3Transform*+ŠŠ# €€€‚ÿNAME]7fŠíŠ& €n€”‘€€‚ÿSoTexture3Transform - 3D texture transformation node3Š Š# € €€‚ÿINHERITS FROM•H튵ŠM j€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTexture3Transform2 ŠçŠ& €€€€ ‚ÿSYNOPSIS€YµŠgŠ' €²€”‘€€‚‚ÿ#include Fields from class SoTexture3Transform:§]犊J d€º€T”A‚S~‚Aã”5€‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3ftranslationSoSFRotationrotationSoSFVec3fscaleFactorSoSFVec3fcenterS*gŠaŠ) "€T€”‘€‚A€‚ÿMethods from class SoTexture3Transform:n:ŠÏŠ4 8€t€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTexture3Transform()static SoTypegetClassTypeId()NaŠŠ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÏŠ™Šn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ŠñŠ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ™ŠV Š 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHñŠÞ Š@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NV Š, Š/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÞ Šc ŠY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4, Š— Š& €€‚A€‚ÿDESCRIPTION•kc Š,Š* "€×€”‘€‚A€‚ÿThis node defines a 3D transformation applied to texture coordinates. This affects the way textures are applied to the surfaces of subsequent shapes. The transformation consists of (in order) a non-uniform scale about an arbitrary center point, a rotation about that same point, and a translation. (Note: while the transformations can be thought of as being applied in that order, the GL matrices are actually premultiplied in the opposite order. Therefore, the operations are listed in the reverse order throughout this reference page.) This allows a user to change the size and position of the textures on objects./ — Š[Š& €€‚A€‚ÿFIELDSL,Š§Š2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationG[ŠîŠ) "€<€”‘€‚A€‚ÿTranslation in S, T, and R.I§Š7Š2 4€.€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatrotation¯…îŠ @Š* "€ €”‘€‚A€‚ÿCounter-clockwise rotation of the coordinate space, in radians. This results in a clockwise rotation of the texture on the object.7Š @ŠçŠL7ŠX@Š2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorK" @Š£@Š) "€D€”‘€‚A€‚ÿScaling factors in S, T, and R.GX@Šê@Š2 4€*€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fcenterW.£@ŠAAŠ) "€\€”‘€‚A€‚ÿCenter point used for scaling and rotation.0 ê@ŠqAŠ& €€‚A€‚ÿMETHODSEAAŠ¶AŠ, (€2€T”A‚S~‚A€ƒ‚ÿSoTexture3Transform()h?qAŠBŠ) "€~€”‘€‚A€‚ÿCreates a texture transformation node with default settings.U#¶AŠsBŠ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*BŠÆBŠ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8sBŠþBŠ& €$€‚A€‚ÿACTION BEHAVIORb*ÆBŠ`CŠ8 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackActiontHþBŠÔCŠ, (€€”‘€‚A€€‚ÿConcatenates transformation with the current texture transformation.<`CŠDŠ& €,€‚A€‚ÿFILE FORMAT/DEFAULT@ÔCŠPDŠ* $€,€P„7|‚€‚ÿTexture3Transform {tADŠÄDŠ3 6€‚€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0 0rotation0scaleFactor1 1 1center0 0 0}1 PDŠõDŠ& €€‚€‚ÿSEE ALSO‘JÄDŠ†EŠG ^€”€”‘€‚ãÔ>Ñ€‰€ã·ºz€‰€ã“y€‰‚ÿSoTexture3, SoTextureCoordinate3, SoTextureCoordinateFunctionEõDŠËEŠ1’|¯ŒËEŠFŠä‡ŠSoTextureCoordinate2<†EŠFŠ% €.€ˆˆ€‚ÿSoTextureCoordinate2*ËEŠ1FŠ# €€€‚ÿNAMEZ4FŠ‹FŠ& €h€”‘€€‚ÿSoTextureCoordinate2 - 2D texture coordinate node31FŠ¾FŠ# € €€‚ÿINHERITS FROM–I‹FŠTGŠM j€’€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTextureCoordinate22 ¾FŠ†GŠ& €€€€ ‚ÿSYNOPSIS‚[TGŠHŠ' €¶€”‘€€‚‚ÿ#include Fields from class SoTextureCoordinate2:F†GŠNHŠ2 4€(€T”A‚S~‚Aãóñi`€‰ƒ‚ÿSoMFVec2fpointT+HŠ¢HŠ) "€V€”‘€‚A€‚ÿMethods from class SoTextureCoordinate2:o;NHŠIŠ4 8€v€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTextureCoordinate2()static SoTypegetClassTypeId()N¢HŠ_IŠ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|IŠÛJŠn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)_IŠ3KŠ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÛJŠ˜MŠ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH3KŠ NŠ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N˜MŠnNŠ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ NŠ¥OŠY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4nNŠÙOŠ& €€‚A€‚ÿDESCRIPTIONé¥OŠþ€Š0 .€Ó€”‘€‚A€ÙOŠþ€Š†EŠ€€‚ÿThis node defines a set of 2D coordinates to be used to map textures to subsequent vertex-based shapes (those derived from SoVertexShape). It replaces the current texture coordinates in the rendering state for the shapes to use.EÙOŠC‚Š6 :€€”‘€‚A€€€€€‚ÿThe current texture coordinate binding (see SoTextureCoordinateBinding) determines how texture coordinates are mapped to vertices of shapes. An alternative to using explicit texture coordinates is to generate them using a function; see SoTextureCoordinateFunction.Çþ€Š ƒŠ* "€;€”‘€‚A€‚ÿTexture coordinates range from 0 to 1 across the texture. The horizontal coordinate, called S, is specified first, followed by the vertical coordinate, T./ C‚Š9ƒŠ& €€‚A€‚ÿFIELDSF ƒŠƒŠ2 4€(€T”A‚S~‚Aãóñi`€‰ƒ‚ÿSoMFVec2fpointF9ƒŠÅƒŠ) "€:€”‘€‚A€‚ÿTexture coordinate points.0 ƒŠõƒŠ& €€‚A€‚ÿMETHODSFŃŠ;„Š, (€4€T”A‚S~‚A€ƒ‚ÿSoTextureCoordinate2()d;õƒŠŸ„Š) "€v€”‘€‚A€‚ÿCreates a texture coordinate node with default settings.U#;„Šô„Š2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Ÿ„ŠG…Š) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ô„Š…Š& €$€‚A€‚ÿACTION BEHAVIORb*G…Šá…Š8 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackActionb6…ŠC†Š, (€l€”‘€‚A€€‚ÿSets the current texture coordinates in the state.<á…Š†Š& €,€‚A€‚ÿFILE FORMAT/DEFAULTAC†ŠÀ†Š* $€.€P„7|‚€‚ÿTextureCoordinate2 {=†Šý†Š- *€ €P„|‚€ƒ‚‚‚ÿpoint[ ]}1 À†Š.‡Š& €€‚€‚ÿSEE ALSO¶cý†Šä‡ŠS v€Æ€”‘€‚ãÿÓ>Ñ€‰€ãf;1c€‰€ã“y€‰€ã¹êZY€‰‚ÿSoTexture2, SoTextureCoordinateBinding, SoTextureCoordinateFunction, SoVertexShapeE.‡Š)ˆŠ1Tt‚ †)ˆŠeˆŠjÊŠSoTextureCoordinate3<䇊eˆŠ% €.€ˆˆ€‚ÿSoTextureCoordinate3*)ˆŠˆŠ# €€€‚ÿNAMEZ4eˆŠéˆŠ& €h€”‘€€‚ÿSoTextureCoordinate3 - 3D texture coordinate node3ˆŠ‰Š# € €€‚ÿINHERITS FROM–I鈊²‰ŠM j€’€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTextureCoordinate32 ‰Šä‰Š& €€€€ ‚ÿSYNOPSIS‚[²‰ŠfŠŠ' €¶€”‘€€‚‚ÿ#include Fields from class SoTextureCoordinate3:F䉊¬ŠŠ2 4€(€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fpointT+fŠŠ‹Š) "€V€”‘€‚A€‚ÿMethods from class SoTextureCoordinate3:o;¬ŠŠo‹Š4 8€v€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTextureCoordinate3()static SoTypegetClassTypeId()N‹Š½‹Š/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|o‹Š9Šn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)½‹Š‘Š/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ9Š ÀŠ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) const‘Š ÀŠä‡ŠˆH‘Š”ÀŠ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N ÀŠâÀŠ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ”ÀŠŠY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4âÀŠMŠ& €€‚A€‚ÿDESCRIPTIONéŠfÊ0 .€Ó€”‘€‚A€€€‚ÿThis node defines a set of 3D coordinates to be used to map textures to subsequent vertex-based shapes (those derived from SoVertexShape). It replaces the current texture coordinates in the rendering state for the shapes to use.EMŠ«ÄŠ6 :€€”‘€‚A€€€€€‚ÿThe current texture coordinate binding (see SoTextureCoordinateBinding) determines how texture coordinates are mapped to vertices of shapes. An alternative to using explicit texture coordinates is to generate them using a function; see SoTextureCoordinateFunction.å»fÊŊ* "€w€”‘€‚A€‚ÿTexture coordinates range from 0 to 1 across the texture. The horizontal coordinate, called S, is specified first, then the vertical coordinate, T, and finally the depth coordinate, R./ «ÄŠ¿ÅŠ& €€‚A€‚ÿFIELDSFÅŠÆŠ2 4€(€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fpointF¿ÅŠKÆŠ) "€:€”‘€‚A€‚ÿTexture coordinate points.0 ÆŠ{ÆŠ& €€‚A€‚ÿMETHODSFKÆŠÁÆŠ, (€4€T”A‚S~‚A€ƒ‚ÿSoTextureCoordinate3()d;{ÆŠ%ÇŠ) "€v€”‘€‚A€‚ÿCreates a texture coordinate node with default settings.U#ÁÆŠzÇŠ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*%ÇŠÍÇŠ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8zÇŠÈŠ& €$€‚A€‚ÿACTION BEHAVIORb*ÍÇŠgÈŠ8 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackActionb6ÈŠÉÈŠ, (€l€”‘€‚A€€‚ÿSets the current texture coordinates in the state.<gÈŠÉŠ& €,€‚A€‚ÿFILE FORMAT/DEFAULTAÉÈŠFÉŠ* $€.€P„7|‚€‚ÿTextureCoordinate3 {=ÉŠƒÉŠ- *€ €P„|‚€ƒ‚‚‚ÿpoint[ ]}1 FÉŠ´ÉŠ& €€‚€‚ÿSEE ALSO¶cƒÉŠjÊŠS v€Æ€”‘€‚ãÔ>Ñ€‰€ãf;1c€‰€ã“y€‰€ã¹êZY€‰‚ÿSoTexture3, SoTextureCoordinateBinding, SoTextureCoordinateFunction, SoVertexShapeK´ÉŠµÊŠ1x¯ ŽµÊŠ÷ÊŠV ‹SoTextureCoordinateBindingBjÊŠ÷ÊŠ% €:€ˆˆ€‚ÿSoTextureCoordinateBinding*µÊŠ!ËŠ# €€€‚ÿNAME…_÷ÊŠ¦ËŠ& €¾€”‘€€‚ÿSoTextureCoordinateBinding - node that specifies how texture coordinates are bound to shapes3!ËŠÙËŠ# € €€‚ÿINHERITS FROMœO¦ËŠuÌŠM j€ž€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTextureCoordinateBinding2 ÙËŠ§ÌŠ& €€€€ ‚ÿSYNOPSIS_9uÌŠÍŠ& €r€”‘€€‚ÿ#include ,ì§ÌŠ2Ί@ N€Ù€T”A‚S~‚A€ƒ€ƒ€€ƒ€‚ÿenum Binding{SoTextureCoordinateBinding::PER_VERTEXCurrent texture coordinates are applied sequentially to vertices of shapeSoTextureCoordinateBinding::PER_VERTEX_INDEXEDCurrent texture coordinates are indexed per vertex}Y0ÍŠ‹ÎŠ) "€`€”‘€‚A€‚ÿFields from class SoTextureCoordinateBinding:E2ΊÐΊ2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumvalueZ1‹ÎŠ*ÏŠ) "€b€”‘€‚A€‚ÿMethods from class SoTextureCoordinateBinding:uAÐΊŸÏŠ4 8€‚€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTextureCoordinateBinding()static SoTypegetClassTypeId()N*ÏŠ ‹/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:ŸÏŠ ‹jÊŠ|ŸÏŠˆ‹n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X) ‹à‹/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:e؈‹E‹ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHà‹Í‹@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NE‹‹/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÍ‹R‹Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4‹†‹& €€‚A€‚ÿDESCRIPTIONX.R‹Þ‹* "€]€”‘€‚A€‚ÿThis node specifies how the current texture coordinates are bound to vertex-based shapes that follow in the scene graph. The DEFAULT binding causes each shape to define its own default coordinates. These default coordinates typically cause a texture to be mapped across the whole surface of a shape./ †‹ ‹& €€‚A€‚ÿFIELDSEÞ‹R‹2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumvalue`7 ‹²‹) "€n€”‘€‚A€‚ÿSpecifies how to bind texture coordinates to shapes.0 R‹â‹& €€‚A€‚ÿMETHODSL ²‹. ‹, (€@€T”A‚S~‚A€ƒ‚ÿSoTextureCoordinateBinding()lCâ‹š ‹) "€†€”‘€‚A€‚ÿCreates a texture coordinate binding node with default settings.U#. ‹ï ‹2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*š ‹B ‹) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ï ‹z ‹& €$€‚A€‚ÿACTION BEHAVIORb*B ‹Ü ‹8 @€T€”‘€‚Aã©öø(€‰ã³DfL‰€‚ÿSoGLRenderAction, SoCallbackActiona5z ‹= ‹, (€j€”‘€‚A€€‚ÿSets the current texture coordinate binding type.<Ü ‹y ‹& €,€‚A€‚ÿFILE FORMAT/DEFAULTG= ‹À ‹* $€:€P„7|‚€‚ÿTextureCoordinateBinding {Ky ‹ ‹- *€<€P„|‚€ƒ‚‚‚ÿvaluePER_VERTEX_INDEXED}1 À ‹< ‹& €€‚€‚ÿSEE ALSO¢ ‹V ‹x ¾€E€”‘€‚ãÞ!€€‰€ãRÜ4€‰€ãÿÓ>Ñ€‰€ãqŠ•±€‰€ã·ºz€‰€ã“y€‰€ã¹êZY€‰‚ÿSoMaterialBinding, SoNormalBinding, SoTexture2, SoTexture2Transform, SoTextureCoordinate2, SoTextureCoordinateFunction, SoVertexShapeK< ‹¡ ‹1U †LJ¡ ‹ã ‹M‹SoTextureCoordinateDefaultBV ‹ã ‹% €:€ˆˆ€‚ÿSoTextureCoordinateDefault*¡ ‹ ‹# €€€‚ÿNAMEvPã ‹ƒ‹& € €”‘€€‚ÿSoTextureCoordinateDefault - node that removes texture coordinates from state3 ‹¶‹# € €€‚ÿINHERITS FROMÊqƒ‹€‹Y ‚€â€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã“y€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTextureCoordinateFunction > SoTextureCoordinateDefault2 ¶‹²‹& €€€€ ‚ÿSYNOPSISh€‹M@‹' €Ð€”‘€€‚‚ÿ#include Methods from class SoTextureCoordinateDefault:uA²‹Â@‹4 8€‚€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTextureCoordinateDefault()static SoTypegetClassTypeId()NM@‹A‹/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Â@‹ŒB‹n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)A‹äB‹/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØŒB‹IE‹ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHäB‹ÑE‹@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NIE‹F‹/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÑE‹VG‹Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4F‹ŠG‹& €€‚A€‚ÿDESCRIPTIONd:VG‹îH‹* "€u€”‘€‚A€‚ÿThis node changes the current traversal state to indicate that there are no currently defined texture coordinates or texture coordinate function. This forces subsequent shapes to use their own default texture coordinates. The net result is that this node turns off any previous texture coordinate specification.0 ŠG‹I‹& €€‚A€‚ÿMETHODSL îH‹jI‹, (€@€T”A‚S~‚A€ƒ‚ÿSoTextureCoordinateDefault()Q(I‹»I‹) "€P€”‘€‚A€‚ÿCreates a node with default settings.U#jI‹J‹2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*»I‹cJ‹) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8J‹›J‹& €$€‚A€‚ÿACTION BEHAVIOR{=cJ‹K‹> L€z€”‘€‚Aã©öø(€‰ã³DfL‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoRayPickAction\0›J‹rK‹, (€`€”‘€‚A€€‚ÿRemoves any texture coordinates or function.<K‹®K‹& €,€‚A€‚ÿFILE FORMAT/DEFAULTGrK‹õK‹* $€:€P„7|‚€‚ÿTextureCoordinateDefault {0®K‹%L‹+ &€ €P„|‚€‚‚ÿ}1 õK‹VL‹& €€‚€‚ÿSEE ALSO½j%L‹M‹S v€Ô€”‘€‚ãÿÓ>Ñ€‰€ãqŠ•±€‰€ãÄaç<€‰€ã™ØÌ€‰‚ÿSoTexture2, SoTexture2Transform, SoTextureCoordinateEnvironment, SoTextureCoordinatePlaneOVL‹bM‹1ì /bM‹¨M‹h‹SoTextureCoordinateEnvironmentF!M‹¨M‹% €B€ˆˆ€‚ÿSoTextureCoordinateEnvironment*bM‹ÒM‹# €€€‚ÿNAME’l¨M‹dN‹& €Ø€”‘€€‚ÿSoTextureCoordinateEnvironment - node that specifies texture coordinates by projection from a environment3ÒM‹—N‹# € €€‚ÿINHERITS FROMÎudN‹eO‹Y ‚€ê€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã“y€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTextureCoordinateFunction > SoTextureCoordinateEnvironment2 —N‹—O‹& €€€€ ‚ÿSYNOPSIS—peO‹:€‹' €à€”‘€€‚‚ÿ#include Method—O‹:€‹M‹s from class SoTextureCoordinateEnvironment:yE—O‹³€‹4 8€Š€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTextureCoordinateEnvironment()static SoTypegetClassTypeId()N:€‹‹/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|³€‹}‚‹n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)‹Õ‚‹/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ}‚‹:…‹ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÕ‚‹Â…‹@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N:…‹†‹/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÂ…‹G‡‹Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4†‹{‡‹& €€‚A€‚ÿDESCRIPTION°†G‡‹+‰‹* "€ €”‘€‚A€‚ÿThis node creates texture coordinates by projecting points on an object's surface to the interior of a surrounding sphere, along the reflection across the surface normal of the vector from the camera point to the surface. If the current texture image represents a spherical reflection map of the current surrounding environment, subsequent shapes will appear to reflect that environment.0 {‡‹[‰‹& €€‚A€‚ÿMETHODSP$+‰‹«‰‹, (€H€T”A‚S~‚A€ƒ‚ÿSoTextureCoordinateEnvironment()b9[‰‹ Š‹) "€r€”‘€‚A€‚ÿCreates a texture function node with default settings.U#«‰‹bŠ‹2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* Š‹µŠ‹) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8bŠ‹íŠ‹& €$€‚A€‚ÿACTION BEHAVIOR{=µŠ‹h‹‹> L€z€”‘€‚Aã©öø(€‰ã³DfL‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoRayPickAction_3튋Nj‹, (€f€”‘€‚A€€‚ÿSets the current texture function in the state.<h‹‹Œ‹& €,€‚A€‚ÿFILE FORMAT/DEFAULTK!Ç‹‹NŒ‹* $€B€P„7|‚€‚ÿTextureCoordinateEnvironment {0Œ‹~Œ‹+ &€ €P„|‚€‚‚ÿ}1 NŒ‹¯Œ‹& €€‚€‚ÿSEE ALSO¹f~Œ‹h‹S v€Ì€”‘€‚ãÿÓ>Ñ€‰€ãqŠ•±€‰€ãnš0€‰€ã™ØÌ€‰‚ÿSoTexture2, SoTexture2Transform, SoTextureCoordinateDefault, SoTextureCoordinatePlaneL¯Œ‹´‹1Ž LJ´‹÷‹`Ë‹SoTextureCoordinateFunctionCh‹÷‹% €<€ˆˆ€‚ÿSoTextureCoordinateFunction*´‹!Ž‹# €€€‚ÿNAME€Z÷‹¡Ž‹& €´€”‘€€‚ÿSoTextureCoordinateFunction - abstract base class for texture coordinate function nodes3!Ž‹ÔŽ‹# € €€‚ÿINHERITS FROMP¡Ž‹q‹M j€ €”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTextureCoordinateFunction2 ÔŽ‹£‹& €€€€ ‚ÿSYNOPSIS‘jq‹@À‹' €Ô€”‘€€‚‚ÿ#include Methods from class SoTextureCoordinateFunction:U#£‹•À‹2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()N@À‹ãÀ‹/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|•À‹_‹n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ãÀ‹·Â‹/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ_‹Å‹ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH·Â‹¤Å‹@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÅ‹òÅ‹/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ޤŋ)Ç‹Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4òÅ‹]Ç‹& €€‚A€‚ÿDESCRIPTIONñ)Ç‹xÈ‹* "€ã€”‘€‚A€‚ÿThis is an abstract base class for texture coordinate functions. The subclasses of this node enable texture coordinates to be created by mapping object-space points on the surfaces of shapes into texture space, according to some function.0 ]Ç‹¨È‹& €€‚A€‚ÿMETHODSU#xÈ‹ýÈ‹2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¨È‹PÉ‹) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<ýÈ‹ŒÉ‹& €,€‚A€‚ÿFILE FORMAT/DEFAULTHPÉ‹ÔÉ‹* $€<€P„7|‚€‚ÿTextureCoordinateFunction {0ŒÉ‹Ê‹+ &€ €P„|‚€‚‚ÿ}1 ÔÉ‹5Ê‹& €€‚€‚ÿSEE ALSO+¿Ê‹`Ë‹l ¦€€”‘€‚ãÿÓ>Ñ€‰€ãqŠ•±€‰€ãf;1c€‰€ãnš0€‰€ãÄaç<€‰€ã™ØÌ€‰‚ÿSoTexture2, SoTexture2Transform SoTextureCoordinate2, SoTextureCoordinateBinding, SoTextureCoordinateDefault, SoTextureCoordinateEnvironment, SoTextureCoordinatePlaneI5Ê‹©Ë‹1í/s’©Ë‹éË‹ ŒSoTextureCoordinatePlane@`Ë‹éË‹% €6€ˆˆ€‚ÿSoTextureCoordinatePlane*©Ë‹Ì‹# €€€‚ÿNAME†`éË‹™Ì‹& €À€”‘€€‚ÿSoTextureCoordinatePlane - node that specifies texture coordinates by projection from a plane3Ì‹ÌÌ‹# € €€‚ÿINHERITS FROMÈo™Ì‹”Í‹Y ‚€Þ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã“y€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTextureCoordinateFunction > SoTextureCoordinatePlane2 ÌÌ‹ÆÍ‹& €€€€ ‚ÿSYNOPSISŠc”Í‹P΋' €Æ€”‘€€‚‚ÿ#include Fields from class SoTextureCoordinatePlane:j0ÆÍ‹ºÎ‹: D€`€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fdirectionSSoSFVec3fdirectionTX/P΋Ï‹) "€^€”‘€‚A€‚ÿMethods from class SoTextureCoordinatePlane:s?ºÎ‹…Ï‹4 8€~€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTextureCoordinatePlane()static SoTypegetClassTypeId()NÏ‹ÓÏ‹/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|…Ï‹[Œn ª€€T”A‚S~‚A€ƒã‘ÓÏ‹[Œ`Ë‹¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÓÏ‹³Œ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ[ŒŒ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH³Œ Œ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NŒîŒ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ Œ%ŒY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4îŒYŒ& €€‚A€‚ÿDESCRIPTION®l%ŒŒB R€Ù€”‘€‚A€€€€€€€€€‚ÿThis node creates texture coordinates for points on an object's surface by projecting them onto a plane. The directionS and directionT fields define the plane. The S coordinate is computed as the distance from the object-space origin along the vector specified in the directionS field. The T coordinate is computed similarly, using the directionT field.ô¾YŒûŒ6 :€}€”‘€‚A€€€€€‚ÿThe length of the direction vector is also taken into account. For example, assume directionS is (0.5, 0, 0) and directionT is (0, 1, 0). The square defined by the (x, y, z) vertices:V.ŒQ Œ( €\€Ù€‚A€‚ÿ(-1, -1, 0) (1, -1, 0) (1, 1, 0) (-1, 1, 0)+ûŒ| Œ( €€Ù€‚A€‚ÿ\3Q ŒØ Œ) "€f€”‘€‚A€‚ÿwill be assigned the (s, t) texture coordinates:J"| Œ" Œ( €D€Ù€‚A€‚ÿ(-2, -1) (2, -1) (2, 1) (-2, 1)+Ø ŒM Œ( €€Ù€‚A€‚ÿ/ " Œ| Œ& €€‚A€‚ÿFIELDSj0M Œæ Œ: D€`€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fdirectionSSoSFVec3fdirectionT]4| ŒC Œ) "€h€”‘€‚A€‚ÿDirections of projection for S and T coordinates.0 æ Œs Œ& €€‚A€‚ÿMETHODSJC Œ½ Œ, (€<€T”A‚S~‚A€ƒ‚ÿSoTextureCoordinatePlane()b9s Œ Œ) "€r€”‘€‚A€‚ÿCreates a texture function node with default settings.U#½ Œt Œ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* ŒÇ Œ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8t Œÿ Œ& €$€‚A€‚ÿACTION BEHAVIOR{=Ç Œz Œ> L€z€”‘€‚Aã©öø(€‰ã³DfL‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoRayPickAction_3ÿ ŒÙ Œ, (€f€”‘€‚A€€‚ÿSets the current texture function in the state.<z ŒŒ& €,€‚A€‚ÿFILE FORMAT/DEFAULTEÙ ŒZŒ* $€6€P„7|‚€‚ÿTextureCoordinatePlane {V'Œ°Œ/ .€N€P„|‚€ƒ‚ƒ‚‚‚ÿdirectionS1 0 0directionT0 1 0}1 ZŒáŒ& €€‚€‚ÿSEE ALSO¿l°Œ ŒS v€Ø€”‘€‚ãÿÓ>Ñ€‰€ãqŠ•±€‰€ãnš0€‰€ãÄaç<€‰‚ÿSoTexture2, SoTexture2Transform, SoTextureCoordinateDefault, SoTextureCoordinateEnvironment> áŒÞŒ1› ތ@Œ’ŒSoTimeCounter5 Œ@Œ% € €ˆˆ€ÞŒ@Œ Œ‚ÿSoTimeCounter*ÞŒI@Œ# €€€‚ÿNAMEN(@Œ—@Œ& €P€”‘€€‚ÿSoTimeCounter - timed integer counter3I@ŒÊ@Œ# € €€‚ÿINHERITS FROM‘D—@Œ[AŒM j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoTimeCounter2 Ê@ŒAŒ& €€€€ ‚ÿSYNOPSISvO[AŒBŒ' €ž€”‘€€‚‚ÿ#include Inputs from class SoTimeCounter:¡AŒCŒs ´€C€T”A‚S~‚Aãøi选ƒ‚ã)„ƒ4‰ƒ‚ã)„ƒ4‰ƒ‚ã)„ƒ4‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ã'0]‰ƒ‚ã)„ƒ4‰ƒ‚ã%牃‚ÿSoSFTimetimeInSoSFShortminSoSFShortmaxSoSFShortstepSoSFBoolonSoSFFloatfrequencySoMFFloatdutySoSFShortresetSoSFTriggersyncInM$BŒdCŒ) "€H€”‘€‚A€‚ÿOutputs from class SoTimeCounter:i/CŒÍCŒ: D€^€T”A‚S~‚A€ã)„ƒ4‰ƒ‚ã%牃‚ÿ(SoSFShort)output(SoSFTrigger)syncOutM$dCŒDŒ) "€H€”‘€‚A€‚ÿMethods from class SoTimeCounter:?ÍCŒYDŒ, (€&€T”A‚S~‚A€ƒ‚ÿSoTimeCounter()P!DŒ©DŒ/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}YDŒ©FŒƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)©DŒGŒ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ©FŒfIŒ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHGŒîIŒ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NfIŒ€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞîIŒsKŒY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Œ0 .€ß€”‘€‚A€€€‚ÿThe steps in the count cycle do not necessarily all have the“OŒ>Œ Œ same duration. Using the duty input field, you can arbitrarily split the time period of the count cycle between the steps. For example, if there are 5 steps in the cycle, a duty input of (1., 2., 2., 2., 1.) will make the second, third, and fourth steps take twice as long as the first and last steps.å“OŒ#ƒŒH ^€;€”‘€‚A€€€€€€€€€€€‚ÿAt any time the counter can be reset to a specific value. If you set the reset input field to a value, the engine will continue counting from there. Note that the counter will always output numbers based on the min, max and step values, and setting the reset value does not affect the those input fields. If the reset value is not a legal counter value, the counter will still behave as though it is:&Ì>ŒI„ŒZ ‚€™€T”!:‚!€ƒ€€€€€€‚ƒ€€€€€€‚ƒ€€‚ÿ•If reset is greater than max, the counter is set to max.•If reset is less than min, the counter is set to min.•If reset is between step values, the counter is set to the lower step.#í#ƒŒl…Œ6 :€Û€”‘€‚!€€€€€‚ÿEach time a counting cycle is started, the syncOut output is triggered. This output can be used to synchronize some other event with the counting cycle. Other events can also synchronize the counter by triggering the syncIn input. ×I„Œy†Œ6 :€¯€”‘€‚!€€€€€‚ÿYou can pause the engine, by setting the on input to FALSE, and it will stop updating the output field. When you turn off the pause, by setting on to TRUE, it will start counting again from where it left off./ l…Œ¨†Œ& €€‚!€‚ÿINPUTSFy†Œî†Œ2 4€(€T”A‚S~‚Aãøi选ƒ‚ÿSoSFTimetimeIn9¨†Œ'‡Œ) "€ €”‘€‚A€‚ÿRunning time.Dk‡Œ2 4€$€T”A‚S~‚Aã)„ƒ4€‰ƒ‚ÿSoSFShortminJ!'‡Œµ‡Œ) "€B€”‘€‚A€‚ÿMinimum value for the counter.Dk‡Œù‡Œ2 4€$€T”A‚S~‚Aã)„ƒ4€‰ƒ‚ÿSoSFShortmaxJ!µ‡ŒCˆŒ) "€B€”‘€‚A€‚ÿMaximum value for the counter.Eù‡ŒˆˆŒ2 4€&€T”A‚S~‚Aã)„ƒ4€‰ƒ‚ÿSoSFShortstep?CˆŒÇˆŒ) "€,€”‘€‚A€‚ÿCounter step value.BˆˆŒ ‰Œ2 4€ €T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolonS*LjŒ\‰Œ) "€T€”‘€‚A€‚ÿCounter pauses if this is set to FALSE.J ‰Œ¦‰Œ2 4€0€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatfrequencyc.\‰Œ ŠŒ5 :€\€”‘€‚A€€€€€‚ÿNumber of min-to-max cycles per second.E¦‰ŒNŠŒ2 4€&€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatduty> ŠŒŒŠŒ) "€*€”‘€‚A€‚ÿDuty cycle values.FNŠŒÒŠŒ2 4€(€T”A‚S~‚Aã)„ƒ4€‰ƒ‚ÿSoSFShortresetU,ŒŠŒ'‹Œ) "€X€”‘€‚A€‚ÿReset the counter to the specified value.IÒŠŒp‹Œ2 4€.€T”A‚S~‚Aã%瀉ƒ‚ÿSoSFTriggersyncInR)'‹ŒÂ‹Œ) "€R€”‘€‚A€‚ÿRestart at the beginning of the cycle.0 p‹Œò‹Œ& €€‚A€‚ÿOUTPUTSI‹Œ;ŒŒ2 4€.€T”A‚S~‚A€ã)„ƒ4‰ƒ‚ÿ(SoSFShort)outputj/ò‹Œ¥ŒŒ; F€^€”‘€‚A€€€€€€€‚ÿCounts min-to-max, in step increments.L;ŒŒñŒŒ2 4€4€T”A‚S~‚A€ã%牃‚ÿ(SoSFTrigger)syncOutD¥ŒŒ5Œ) "€6€”‘€‚A€‚ÿTriggers at cycle start.0 ñŒŒeŒ& €€‚A€‚ÿMETHODS?5Œ¤Œ, (€&€T”A‚S~‚A€ƒ‚ÿSoTimeCounter()7eŒÛŒ) "€€”‘€‚A€‚ÿConstructor<¤ŒŽŒ& €,€‚A€‚ÿFILE FORMAT/DEFAULT:ÛŒQŽŒ* $€ €P„7|‚€‚ÿTimeCounter {”XŽŒåŽŒ< H€°€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ‚‚‚ÿmin0max1step1onTRUEfrequency1duty1timeInsyncInreset0}1 QŽŒŒ& €€‚€‚ÿSEE ALSO|5厌’ŒG ^€j€”‘€‚ãìEJ÷€‰€ãIR~Ó€‰€ãë\¼N€‰‚ÿSoCounter, SoElapsedTime, SoEngineOutputCŒÕŒ1¶ s™†”ÕŒÀŒžÊŒSoTimerQueueSensor:’ŒÀŒ% €*€ˆˆ€‚ÿSoTimÕŒÀŒ’ŒerQueueSensor*ÕŒEÀŒ# €€€‚ÿNAMEoIÀŒ´ÀŒ& €’€”‘€€‚ÿSoTimerQueueSensor - abstract base class for sensors dependent on time3EÀŒçÀŒ# € €€‚ÿINHERITS FROMZ%´ÀŒAÁŒ5 :€J€”‘€ãrX.选€€€‚ÿSoSensor > SoTimerQueueSensor2 çÀŒsÁŒ& €€€€ ‚ÿSYNOPSISZAÁŒôÁŒ' €´€”‘€€‚‚ÿ#include Methods from class SoTimerQueueSensor:³usÁŒ§ÂŒ> L€ê€T”A‚S~‚A€ã4a†6‰ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ÿconst SbTime &getTriggerTime()virtual voidschedule()virtual voidunschedule()virtual SbBoolisScheduled()P!ôÁŒ÷ÂŒ/ .€B€”‘€‚A€ãrX.鉂ÿMethods from class SoSensor:½Š§ÂŒ´ÃŒ3 4€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetFunction(SoSensorCB *callbackFunction)SoSensorCB *getFunction() constvoidsetData(void *callbackData)void *getData() const4÷ÂŒèÃŒ& €€‚A€‚ÿDESCRIPTIONÜ´ÃŒîÅŒ* "€¹€”‘€‚A€‚ÿTimer queue sensors are sensors that trigger themselves at specific times. The timer queue is normally processed as part of a program's main loop when the program is not busy doing something else. Note that processing the timer queue is not asynchronous - the program must re-enter its main loop for timers to be triggered. When the timer queue is processed, all timers scheduled to go off at or before the current time are triggered once, in order from earliest to latest.0 èÌƌ& €€‚A€‚ÿMETHODSV$îÅŒtÆŒ2 4€H€T”A‚S~‚A€ã4a†6‰ƒ‚ÿconst SbTime &getTriggerTime()ª€ÆŒÇŒ* "€€”‘€‚A€‚ÿReturns the time at which this sensor is scheduled to be triggered. If the sensor is not scheduled the results are undefined.FtÆŒdÇŒ, (€4€T”A‚S~‚A€ƒ‚ÿvirtual voidschedule()šqÇŒþÇŒ) "€â€”‘€‚A€‚ÿAdds this sensor to the timer queue. Subclasses provide methods for setting when the sensor will be triggered.HdÇŒFÈŒ, (€8€T”A‚S~‚A€ƒ‚ÿvirtual voidunschedule()ŠaþÇŒÐÈŒ) "€Â€”‘€‚A€‚ÿIf this sensor is scheduled, removes it from the timer queue so that it will not be triggered.S!FÈŒ#ÉŒ2 4€B€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolisScheduled()dÐÈŒ°ÉŒ) "€È€”‘€‚A€‚ÿReturns TRUE if this sensor has been scheduled and is waiting in the timer queue to be triggered.1 #ÉŒáÉŒ& €€‚A€‚ÿSEE ALSO½^°ÉŒžÊŒ_ Ž€¼€”‘€‚Aã—l°L€‰€ãËŠ³€‰€ãʇõÀ€‰€ãâ+•€‰€㤴u?€‰‚ÿSoTimerSensor, SoAlarmSensor, SoIdleSensor, SoOneShotSensor, SoDataSensor> áÉŒÜÊŒ1¹º•Üʌˌt SoTimerSensor5žÊŒËŒ% € €ˆˆ€‚ÿSoTimerSensor*ÜÊŒ;ËŒ# €€€‚ÿNAMEvPËŒ±ËŒ& € €”‘€€‚ÿSoTimerSensor - sensor that triggers callback repeatedly at regular intervals3;ËŒäËŒ# € €€‚ÿINHERITS FROMz9±ËŒ^ÌŒA R€r€”‘€ãrX.选€ã*ðz\€‰€€€‚ÿSoSensor > SoTimerQueueSensor > SoTimerSensor2 äˌ̌& €€€€ ‚ÿSYNOPSISwP^̌͌' € €”‘€€‚‚ÿ#include Methods from class SoTimerSensor:@îÌŒGÎŒR r€Ý€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒã4a†6‰‚ã4a†6‰ƒ‚ƒã4a†6‰‚ã4a†6‰ƒ‚ÿSoTimerSensor()SoTimerSensor(SoSensorCB *func,void *data)~SoTimerSensor()voidsetBaseTime(const SbTime &base)const SbTime &getBaseTime() constvoidsetInterval(const SbTime &interval)const SbTime &getInterval() constZ+ÍŒ¡ÎŒ/ .€V€”‘€‚A€ã*ðz\‰‚ÿMethods from class SoTimerQueueSensor:³uGÎŒTÏŒ> L€ê€T”A‚S~‚A€ã4a†6‰ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ÿconst SbTime &getTriggerTime()virtual voidschedule()virtual voidunschedule()virtual SbBoolisScheduled()P!¡ÎŒ¤ÏŒ/ .€B€”‘€‚A€ãrX.鉂ÿMethods from class SoSensor:½ŠTÏŒm3 4€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetFunction(SoSensorCB *callbackFun¤ÏŒmžÊŒction)SoSensorCB *getFunction() constvoidsetData(void *callbackData)void *getData() const4¤ÏŒ¡& €€‚A€‚ÿDESCRIPTION<mÝ6 :€ €”‘€‚A€€€€€‚ÿTimer sensors trigger their callback function at regular intervals. For example, a timer might be set up to call its callback function every second on the second by setting the base time to SbTime(0.0) and the interval to SbTime(1.0). Timers are guaranteed to be triggered only once when the timer queue is processed, so if the application only processes the timer queue once every 5 seconds (because it is busy doing something else) the once-a-second sensor's callback will be called only once every 5 seconds. Ü¡é0 .€¹€”‘€‚A€€€‚ÿNote also that SoTimers always schedule themselves to be triggered the next even multiple of the interval time after the base time; so, for example, if the once-a-second sensor is triggered at time 2.9 (because the application way busy doing something at time 2.0 and didn't get around to processing the sensor queue for a while) it will reschedule itself to go off at time 3.0, not at time 3.9. If the base time was never set, the sensor would be scheduled for time 3.9.0 Ý& €€‚A€‚ÿMETHODSo@éˆ/ .€€€T”A‚S~‚A€ƒ‚ƒ‚ÿSoTimerSensor()SoTimerSensor(SoSensorCB *func,void *data)Ÿv') "€ì€”‘€‚A€‚ÿCreation methods. The second method takes the callback function and data to be called when the sensor is triggered.@ˆg, (€(€T”A‚S~‚A€ƒ‚ÿ~SoTimerSensor()€W'ç) "€®€”‘€‚A€‚ÿDestroys the sensor, freeing up any memory associated with it after unscheduling it.éžgÐK d€=€T”A‚S~‚A€ƒã4a†6‰‚ã4a†6‰ƒ‚ƒã4a†6‰‚ã4a†6‰ƒ‚ÿvoidsetBaseTime(const SbTime &base)const SbTime &getBaseTime() constvoidsetInterval(const SbTime &interval)const SbTime &getInterval() constÕ«ç¥* "€W€”‘€‚A€‚ÿSets/gets the base time and the interval. The default base time is the time when the sensor is scheduled or rescheduled, and the default interval is 1/30th of a second.1 ÐÖ& €€‚A€‚ÿSEE ALSOžK¥t S v€–€”‘€‚Aãâ+•€‰€ãËŠ³€‰€ã*ðz\€‰€ã4a†6€‰‚ÿSoOneShotSensor, SoAlarmSensor, SoTimerQueueSensor, SbTime?Ö³ 1}™†)–³ é >…SoToHTMLAction6t é % €"€ˆˆ€‚ÿSoToHTMLAction*³  # €€€‚ÿNAMEuOé ˆ & €ž€”‘€€‚ÿSoToHTMLAction - generates an HTML image map and an image from a scene graph3 » # € €€‚ÿINHERITS FROMV!ˆ  5 :€B€”‘€ãïK€‰€€€‚ÿSoAction > SoToHTMLAction2 » C & €€€€ ‚ÿSYNOPSISU/ ˜ & €^€”‘€€‚ÿ#include ÏyC g V z€ó€T”A‚S~‚A€ƒƒ€€‚ƒ€ƒ€‚ƒƒ€€‚ÿenum ShapeType{SoToHTMLAction::NONE,SoToHTMLAction::RECTANGLE,SoToHTMLAction::CIRCLE,SoToHTMLAction::POLYGON(Default)}enum Components{SoToHTMLAction::LUMINANCE,SoToHTMLAction::LUMINANCE_TRANSPARENCY,SoToHTMLAction::RGB,(Default)SoToHTMLAction::RGB_TRANSPARENCY}enum ImageFormat{SoToHTMLAction::BMP_FORMAT(Win32 only)SoToHTMLAction::JPEG_FORMAT}N%˜ µ ) "€J€”‘€‚A€‚ÿMethods from class SoToHTMLAction:!Êg ÖW |€•€T”A‚S~‚A€ƒ‚ƒ€€‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒãÀ"%‰‚ÿSoToHTMLAction()virtual~ SoToHTMLAction()SbBoolopenHTMLFile(const char *filename)voidcloseHTMLFile()voidsetHTMLFilePointer(FILE *newFP)FILE*getHTMLFilePointer() constvoidsetImageURLName(const char *name)const char *getImageURLName() constvoidsetImageFilePointer(FILE *newFP)FILE*getImageFilePointer() constvoidsetRegionShapeType(ShapeType type)ShapeTypegetRegionShapeType() constvoidsetImageBackgroundColor(const SbColor &c) Áµ B_ Œ€ƒ€T”A‚S~‚A€ÖBt ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒãñf‘¸‰‚ãñf‘¸‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿconst SbColor&getImageBackgroundColor() constvoidsetImageComponents(Components components)ComponentsgetImageComponents() constvoidsetImageFormat(ImageFormat format)ImageFormatgetImageFormat() constvoidsetImageQuality(float quality)floatgetImageQuality() constvoidsetViewportRegion(const SbViewportRegion ®ion)const SbViewportRegion&getViewportRegion() constvoidsetMapHighlight(SbBool onOff)SbBoolisMapHighlight()P!ÖRB/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†BØCj ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4RB D& €€‚A€‚ÿDESCRIPTIONÞ´ØCêD* "€i€”‘€‚A€‚ÿThis action generates an image file and an HTML file containing the image () and image map () tags. Each region of the image map will have a URL associated with it. ýÓ DçE* "€§€”‘€‚A€‚ÿWith HTML, image maps allow to specify regions of an image and assign a specific action to each region (a link can be associated to each map). When the region is activated by the user, the action is executed.ªuêD‘F5 :€ê€”‘€‚A€€€€€‚ÿEach region of the image is determined by a subgraph which is under an SoWWWAnchor or SoVRMLAnchor group node.e<çEöF) "€x€”‘€‚A€‚ÿThe HTML file generated contains, in the following order:É“‘F¿G6 :€'€”‘€‚A€€€€€‚ÿ1 - An image map tag that defines the regions (maps) corresponding to each subgraph that is under an SoWWWAnchor or SoVRMLAnchor group node.£nöFbH5 :€Ü€”‘€‚A€€€€€‚ÿFor each region, the associated link is the URL defined either by the SoWWWAnchor or SoVRMLAnchor node.{L¿GÝH/ .€˜€”‘€‚A€€€‚ÿ2 - An image tag that references the image generated by SoToHTMLAction.0 bH I& €€‚A€‚ÿMETHODSe1ÝHrI4 8€b€T”A‚S~‚A€ƒ‚ƒ€€‚ÿSoToHTMLAction()virtual~ SoToHTMLAction()G I¹I) "€<€”‘€‚A€‚ÿConstructor and destructor.‰rI{J9 @€€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolopenHTMLFile(const char *filename)voidcloseHTMLFile()voidsetHTMLFilePointer(FILE *newFP)FILE*getHTMLFilePointer() consto@¹IêJ/ .€€€”‘€‚A€€€‚ÿSpecify the HTML output. By default, output goes to stdout.|N{JfK. ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetImageURLName(const char *name)const char *getImageURLName() constµ‹êJL* "€€”‘€‚A€‚ÿSets/queries the URL name of image in the the HTML file, ("image.jpg" by default). This is the first way to specify the image file name.xJfK“L. ,€”€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetImageFilePointer(FILE *newFP)FILE*getImageFilePointer() const°†LCM* "€ €”‘€‚A€‚ÿSets/queries the file pointer to generate the image file. If newFP is NULL then the filename is the basename of the image URL name.a8“L¤M) "€p€”‘€‚A€‚ÿThis is the second way to define the image file name.}OCM!N. ,€ž€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetRegionShapeType(ShapeType type)ShapeTypegetRegionShapeType() constc:¤M„N) "€t€”‘€‚A€‚ÿSets/returns the region shape type. POLYGON by default.žd!N"O: D€È€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ÿvoidsetImageBackgroundColor(const SbColor &c)const SbColor&getImageBackgroundColor() constoF„N‘O) "€Œ€”‘€‚A€‚ÿSets/returns the image background color. SbColor(0,0,0) by default.…W"O"€. ,€®€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetImageComponents(Components components)ComponentsgetIma‘O"€t geComponents() consta8‘Oƒ€) "€p€”‘€‚A€‚ÿSets/returns the components of image. RGB by default.{M"€þ€. ,€š€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetImageFormat(ImageFormat format)ImageFormatgetImageFormat() constb9ƒ€`) "€r€”‘€‚A€‚ÿSets/returns the image format. JPEG_FORMAT by default.rDþ€Ò. ,€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetImageQuality(float quality)floatgetImageQuality() constþÔ`Ђ* "€©€”‘€‚A€‚ÿSets/returns the image quality. Used for JPEG image. Quality is a value from 0. to 1., with 0 being the worst quality (maximum compression) and 1 being the best quality (minimum compression). The default is 1.©oÒyƒ: D€Þ€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰‚ÿvoidsetViewportRegion(const SbViewportRegion ®ion)const SbViewportRegion&getViewportRegion() constVЂøƒ) "€¬€”‘€‚A€‚ÿSpecifies viewport region for the image. Allows the user to specify the image size.{Ayƒs„: D€‚€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetMapHighlight(SbBool onOff)SbBoolisMapHighlight()^5øƒÑ„) "€j€”‘€‚A€‚ÿSets/returns anchor highlighting. TRUE by default.1 s„…& €€‚A€‚ÿSEE ALSO< Ñ„>…/ .€€”‘€‚AãïK€‰‚ÿSoAction@…~…1+ºS‡—~…µ…žÊSoToVRML2Action7>…µ…% €$€ˆˆ€‚ÿSoToVRML2Action*~…ß…# €€€‚ÿNAME‚\µ…a†& €¸€”‘€€‚ÿSoToVRML2Action - converts an Open Inventor scene graph into a VRML 2.0-style scene graph3ß…”†# € €€‚ÿINHERITS FROMx7a† ‡A R€n€”‘€ãïK€‰€ãȯø~€‰€€€‚ÿSoAction > SoToVRMLAction > SoToVRML2Action2 ”†>‡& €€€€ ‚ÿSYNOPSIS{T ‡¹‡' €¨€”‘€€‚‚ÿ#include Methods from class SoToVRML2Action:¾W>‡w‰g œ€¯€T”A‚S~‚A€ƒ‚ƒ‚㔄'‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSoToVRML2Action()~SoToVRML2Action()SoVRMLGroup *getVRML2SceneGraph() const voidreuseAppearanceNodes(SbBool appearance) SbBool doReuseAppearanceNodes() const voidreusePropertyNodes(SbBool property) SbBool doReusePropertyNodes() const voidreuseGeometryNodes(SbBool geometry) SbBool doReuseGeometryNodes() const V'¹‡Í‰/ .€N€”‘€‚A€ãȯø~‰‚ÿMethods from class SoToVRMLAction:“w‰ã‹ƒ Ô€'€T”A‚S~‚Aã’n%9€‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãXíʉ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSoNode *getVRMLSceneGraph() const voidexpandSoFile(SbBool e) SbBoolareSoFileExpanded() const voidsetUrlName(const SbString name) constSbString getUrlName() const voidwriteTexCoords(SbBool w) SbBoolareTexCoordWritten() const voidexpandTexture2Node(SbBool e) SbBoolareTexture2NodeExpanded() constvoidkeepUnknownNodes(SbBool k)SbBoolareUnknownNodeKept() const Eê͉([ „€Õ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidconvertInlineNodes(SbBool inlineNode)SbBooldoConvertInlineNodes() constvoidconditionalConversion(SbBool conditional)SbBooldoConditionalConversion() constvoidsetVerbosity(SbBool v) SbBoolisVerbose() const P!ã‹x/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:œ0(l ¦€a€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual~SoAction()virtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4xH& €€‚A€‚ÿDESCRIPTIONÛYÀ* "€·€”‘€‚A€‚ÿThis action takes an Open Inventor scene graph and builds a new VRML 2.0-style scene graph. This scene graph can then be stored as a VRML filHYÀ>…e. The effect of this action is similar to the effect of the ivtovrml tool.4 HÁ* "€€”‘€‚A€‚ÿThere is not always an exact match between Open Inventor items and VRML 2.0 items. Some Open Inventor items, for example, 2D text (SoText2) do not exist in VRML 2.0 and will not be converted. Other items may be converted, but with subtle differences in behavior. †MYÀÄ9 @€›€”‘€‚A€€€€€€‚ÿTexture Modeling: 3- and 4-component textures work differently in Open Inventor and VRML 2.0. In Open Inventor, by default, the texture color is multiplied by the material surface color ("modulate" mode). In VRML 2.0, a texture's RGB colors and transparency replace the material's current diffuse color and transparency (like "decal" mode). For example, if an object is red with a colored texture, in Open Inventor, the red would affect the appearance of the object. Once converted to VRML 2.0, the object would display the colors of the texture, without any influence of the red. (ûÁ;Å- (€÷€”‘€‚A€€‚ÿTexture Coordinates: Open Inventor and VRML 2.0 handle texture coordinates differently. If your scene graph uses texture coordinates for precise application of a texture to a shape, the visual results may be different after conversion to VRML 2.0.0 ÄkÅ& €€‚A€‚ÿMETHODSW);ÅÂÅ. ,€R€T”A‚S~‚A€ƒ‚ƒ‚ÿSoToVRML2Action()~SoToVRML2Action()GkÅ Æ) "€<€”‘€‚A€‚ÿConstructor and destructor.`.ÂÅiÆ2 4€\€T”A‚S~‚A㔄'€‰ƒ‚ÿSoVRMLGroup *getVRML2SceneGraph() const R) Æ»Æ) "€R€”‘€‚A€‚ÿReturns result as VRML 2.0 scene graph–\iÆQÇ: D€¸€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidreuseAppearanceNodes(SbBool appearance) SbBool doReuseAppearanceNodes() const —n»ÆèÇ) "€Ü€”‘€‚A€‚ÿSets/gets whether shared materials should be organized into shared appearance nodes in the new scene graph.VQÇxÈ: D€¬€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidreusePropertyNodes(SbBool property) SbBool doReusePropertyNodes() const dèÇÉ) "€È€”‘€‚A€‚ÿSets/gets whether shared properties should be organized into shared nodes in the new scene graph.VxÈ•É: D€¬€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidreuseGeometryNodes(SbBool geometry) SbBool doReuseGeometryNodes() const |SÉÊ) "€¦€”‘€‚A€‚ÿSets/gets whether shared geometry nodes should be shared in the new scene graph.1 •ÉBÊ& €€‚A€‚ÿSEE ALSO\!ÊžÊ; F€B€”‘€‚AãïK€‰€ãȯø~€‰‚ÿSoAction, SoToVRMLAction?BÊÝÊ1m)‡°˜ÝÊËŽSoToVRMLAction6žÊË% €"€ˆˆ€‚ÿSoToVRMLAction*ÝÊ=Ë# €€€‚ÿNAME[˾Ë& €¶€”‘€€‚ÿSoToVRMLAction - converts an Open Inventor scene graph into a VRML 1.0-style scene graph3=ËñË# € €€‚ÿINHERITS FROMV!¾ËGÌ5 :€B€”‘€ãïK€‰€€€‚ÿSoAction > SoToVRMLAction2 ñËyÌ& €€€€ ‚ÿSYNOPSISyRGÌòÌ' €¤€”‘€€‚‚ÿ#include Methods from class SoToVRMLAction:“yÌÏ Ì€'€T”A‚S~‚A€ƒ‚ƒ‚ã’n%9‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ãXíʉƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSoToVRMLAction()~SoToVRMLAction()SoNode *getVRMLSceneGraph() const voidexpandSoFile(SbBool e) SbBoolareSoFileExpanded() const voidsetUrlName(const SbString name) const SbStringgetUrlName() const voidwriteTexCoords(SbBool w) SbBoolareTexCoordWritten() const voidexpandTexture2Node(SbBool e) SbBoolareTexture2NodeExpanded() constvoidkeepUnknownNodes(SbBool k)qòÌŽc ”€€T”A‚S~‚A㑶p6€‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSbBoolareUnknownNodeKept() constvoidconvertInlineNodes(SbBool inlineNode)SbBooldoConvertInlineNodes() constvoidconditionalConversion(SbBooÏŽžÊl conditional)SbBooldoConditionalConversion() constvoidsetVerbosity(SbBool v) SbBoolisVerbose() const P!ÏÑŽ/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:œ0ŽmŽl ¦€a€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual~SoAction()virtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4ÑŽ¡Ž& €€‚A€‚ÿDESCRIPTION÷ÍmŽ˜Ž* "€›€”‘€‚A€‚ÿThis action takes an Open Inventor scene graph and builds a new VRML 1.0 style scene graph. This scene graph can then be stored as a VRML file. The effect of this action is similar to the ivtovrml tool.0 ¡ŽÈŽ& €€‚A€‚ÿMETHODSU'˜ŽŽ. ,€N€T”A‚S~‚A€ƒ‚ƒ‚ÿSoToVRMLAction()~SoToVRMLAction()GÈŽdŽ) "€<€”‘€‚A€‚ÿConstructor and destructor.Z(Ž¾Ž2 4€P€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *getVRMLSceneGraph() const U,dŽŽ) "€X€”‘€‚A€‚ÿReturns result as VRML style scene graph.y?¾ŽŒŽ: D€~€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidexpandSoFile(SbBool e) SbBoolareSoFileExpanded() |SŽŽ) "€¦€”‘€‚A€‚ÿSets/gets whether to read the contents of SoFile nodes into the new scene graph.UŒŽ—Ž: D€ª€T”A‚S~‚A€ƒãXíʉ‚ƒãXíʉ‚ÿconst voidsetUrlName(const SbString name) constSbString getUrlName() const b9ŽùŽ) "€r€”‘€‚A€‚ÿSets the directory in which to write VRMLInline files.‚H—Ž{Ž: D€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidwriteTexCoords(SbBool w) SbBoolareTexCoordWritten() const rIùŽíŽ) "€’€”‘€‚A€‚ÿSets/gets whether to put texture coordinates into the new scene graph.ŠP{ŽwŽ: D€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidexpandTexture2Node(SbBool e) SbBoolareTexture2NodeExpanded() const¨íŽ Ž) "€þ€”‘€‚A€‚ÿSets/gets whether to bring the contents of texture files into the new scene graph , or to leave them as references to files.ƒIwŽ¢ Ž: D€’€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidkeepUnknownNodes(SbBool k)SbBoolareUnknownNodeKept() const `7 Ž Ž) "€n€”‘€‚A€‚ÿSets/gets whether to preserve nodes of unknown type.U¢ Ž‘ Ž: D€ª€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidconvertInlineNodes(SbBool inlineNode)SbBooldoConvertInlineNodes() const–m Ž' Ž) "€Ú€”‘€‚A€‚ÿSets/gets whether inline nodes are converted to VRML. If TRUE, Inline nodes are converted. Default = TRUE.–\‘ Ž½ Ž: D€¸€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidconditionalConversion(SbBool conditional)SbBooldoConditionalConversion() constà¶' Ž Ž* "€m€”‘€‚A€‚ÿSets/gets whether inline nodes are conditionally converted to VRML. If TRUE, the header of the Inline node is checked, and if already VRML, no conversion is done. Default = FALSE.w=½ Ž Ž: D€z€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetVerbosity(SbBool v) SbBoolisVerbose() const tK Žˆ Ž) "€–€”‘€‚A€‚ÿIf true, the action generates messages while processing the scene graph.1  Ž¹ Ž& €€‚A€‚ÿSEE ALSO]"ˆ ŽŽ; F€D€”‘€‚AãïK€‰€ã~X+€‰‚ÿSoAction, SoToVRMl2ActionC¹ ŽYŽ1‡J‡°ù„™YŽ“Ž‚GSoTrackballDragger:Ž“Ž% €*€ˆˆ€‚ÿSoTrackballDragger*YŽ½Ž# €€€‚ÿNAME‡a“ŽDŽ& €Â€”‘€€‚ÿSoTrackballDragger - striped ball you can rotate or scale uniformly by dragging with the mouse3½ŽwŽ# € €€‚ÿINHERITS FROMï~DŽr@Žq ²€ü€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldCowŽr@ŽŽntainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoTrackballDragger2 wŽ¤@Ž& €€€€ ‚ÿSYNOPSISZr@Ž%AŽ' €´€”‘€€‚‚ÿ#include Fields from class SoTrackballDragger:l2¤@Ž‘AŽ: D€d€T”A‚S~‚Aã”5€‰ƒ‚ã‘Ù»•‰ƒ‚ÿSoSFVec3fscaleFactorSoSFRotationrotationP!%AŽáAŽ/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:H‘AŽ)BŽ2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(áAŽ€BŽ/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³i)BŽ3CŽJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO €BŽ‚CŽ/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%3CŽÙCŽ2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListZ+‚CŽ3DŽ/ .€V€”‘€‚A€ãÂmG ‰‚ÿMethods from class SoTrackballDragger:ÂÙCŽBEŽM h€…€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoTrackballDragger()SbBoolisAnimationEnabled()voidsetAnimationEnabled(SbBool newVal)static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"3DŽ“EŽ/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:KBEŽÞGŽC T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)㨓EŽÁHŽ; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)ÞGŽIŽ/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”UÁHŽ­IŽ? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"IŽþIŽ/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°­IŽ>LŽ î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}þIŽýLŽB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)N>LŽKMŽ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ýLŽÇNŽn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)KMŽOŽ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®ÇNŽ^Ž… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieOŽ^ŽŽldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHOŽæŽ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N^Ž4‚Ž/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞæŽkƒŽY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!4‚Ž»ƒŽ/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)kƒŽ„Ž, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+»ƒŽg„Ž, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4„Ž›„Ž& €€‚A€‚ÿDESCRIPTION8 g„ŽÓ†Ž- (€€”‘€‚A€€‚ÿSoTrackballDragger is a ball wrapped in three circular stripes. The stripes are oriented like wheels that spin around the x, y, and z axes. Drag the stripes to rotate the trackball around those axes. You do not have to hit the lines; pick anywhere within the stripe's outline. To rotate the trackball freely in 3 dimensions, click the area between the stripes and then drag. An invisible but pickable sphere initiates this dragging. If the mouse is still moving when you release it, the trackball will continue to spin.yP›„ŽL‡Ž) "€ €”‘€‚A€‚ÿPress the key to scale the trackball uniformly instead of rotating.%õÓ†Žq‰Ž0 .€ë€”‘€‚A€€€‚ÿPress the key and the user axis appears; this is a draggable axis with an extra stripe around it. Moving the mouse along the surface of the sphere drags the 'pole' of the axis. Release the key and the user axis remains; drag the new stripe for constrained rotation around the user axis. To make the user axis disappear, press and drag the pole to where two of other stripes intersect. This aligns the user axis with a primary axis, at which point the user axis disappears.ûÅL‡ŽlŠŽ6 :€‹€”‘€‚A€€€€€‚ÿAs you drag the trackball, it updates its rotation field, or its scaleFactor field if the key is down. As with all draggers, if you change the fields the dragger moves in response.§rq‰Ž‹Ž5 :€ä€”‘€‚A€€€€€‚ÿRemember: This is not an SoTransform!. If you want to move other objects with this dragger, you can either:ãlŠŽ2ŒŽ< F€Ç€”‘€‚A€€€€€€€‚ÿ[a] Use an SoTrackballManip, which is subclassed from SoTransform. The manipulator creates one of these draggers and uses it as the interface to edit the manipulator's fields. (see the SoTrackballManip reference page).£t‹ŽÕŒŽ/ .€è€”‘€‚A€€€‚ÿ[b] Use field-to-field connections to connect the fields of this dragger to those of any SoTransformation node.a2ŒŽ6ŽB R€?€”‘€‚A€€€€€€€€€‚ÿYou can change the parts in any instance of this dragger using setPart(). The default part geometries are defined as resources for this SoTrackballDragger class. They are detailed in the Dragger Resources section of the online reference page for this class. You can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/trackballDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ ÕŒŽeŽ& €€‚A€‚ÿFIELDSL6Ž±Ž2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorAeŽ ÀŽ) "€0€”‘€‚A€‚ÿScale of the dragger.±Ž ÀŽŽL±ŽXÀŽ2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationG ÀŽŸÀŽ) "€<€”‘€‚A€‚ÿOrientation of the dragger.0 XÀŽÏÀŽ& €€‚A€‚ÿMETHODSDŸÀŽÁŽ, (€0€T”A‚S~‚A€ƒ‚ÿSoTrackballDragger()8ÏÀŽKÁŽ) "€€”‘€‚A€‚ÿConstructor.„JÁŽÏÁŽ: D€”€T”A‚S~‚A㑶p6€‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolisAnimationEnabled()voidsetAnimationEnabled(SbBool newVal)ÞKÁŽ×ÂŽ* "€½€”‘€‚A€‚ÿIf the mouse is moving while you release it, the trackball will continue to spin afterwards. These two methods will query and set whether this feature is turned on or off. By default, the animation feature is turned on.uCÏÁŽLÃŽ2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/×ÂŽªÃŽ/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#LÃŽÿÃŽ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ªÃŽRÄŽ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6ÿÃŽˆÄŽ& € €‚A€‚ÿCATALOG PARTS;RÄŽÃÄŽ- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜ˆÄŽ[ÅŽ~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/ÃÄŽÆŽ#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2[ÅŽÜÆŽ#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yesÁ1ÆŽÇŽ#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿsurroundScaleSurroundScale--yesº*ÜÆŽWÈŽ#ð€TÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿantiSquishAntiSquish--no·'ÇŽÉŽ#ð€NÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€2€ÿ€4€€€‚ÿ€@€€€‚ÿÿÿrotatorSeparator--yes½-WÈŽËÉŽ#ð€ZÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€>€ÿ€@€€€‚ÿ€L€€€‚ÿÿÿrotatorActiveSeparator--yes¸(ÉŽƒÊŽ#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿXRotatorSeparator--yes¾.ËÉŽAËŽ#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿXRotatorActiveSeparator--yes¸(ƒÊŽùËŽ#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿYRotatorSeparator--yes¾.AËŽ·ÌŽ#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿYRotatorActiveSeparator--yes¸(ùËŽoÍŽ#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿZRotatorSeparator--yes¾.·ÌŽ-ÎŽ#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿZRotatorActiveSeparator--yes¸(oÍŽåÎŽ#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿuserAxisSeparator--yes¾.-ÎŽ£ÏŽ#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿuserAxisActiveSeparator--yes»+åÎŽj#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ£ÏŽjŽ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿuserRotatorSeparator--yesÁ1£ÏŽ+#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿuserRotatorActiveSeparator--yes,jW' € €€‚€‚ÿa6+¸+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’1WJa#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8¸ãa#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=J ' €,€€‚€‚ÿDRAGGER RESOURCESJäãjf š€É€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:trackballRotatorPart:rotatorAppearance:Invisible but pickable sphereDescription:Initiates unconstrained 3D rotation. Slightly smaller radius than the stripes, so you must pick between the stripes to use it.Resource:trackballRotatorActivePart:rotatorActiveAppearance:Invisible sphereDescription:Displayed during unconstrained 3D rotation.Resource:trackballXRotatorPart:XRotatorAppearance:White outline of a stripe aligned with the X axis.¹ yV z€s€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿDescription:Pick this to initiate constrained rotation about the X axis.Resource:trackballXRotatorActivePart:XRotatorActiveAppearance:Yellow version of the regular XRotatorDescription:Displayed during constrained rotation about the X axis.Resource:trackballYRotatorPart:YRotatorAppearance:White outline of a stripe aligned with the Y axis.Description:Pick this to initiate constrained rotation about the Y axis. ªj… b ’€U€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚ÿResource:trackballYRotatorActivePart:YRotatorActiveAppearance:Yellow version of the regular YRotatorDescription:Displayed during constrained rotation about the Y axis.Resource:trackballZRotatorPart:ZRotatorAppearance:White outline of a stripe aligned with the Z axis.Description:Pick this to initiate constrained rotation about the Z axis.Resource:trackballZRotatorActivePart:ZRotatorActive6Òy» d –€¥€PÍÇ~‚Í€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ€€ ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ€€ ‚ÿAppearance:Yellow version of the regular ZRotatorDescription:Displayed during constrained rotation about the Z axis.Resource:trackballUserAxisPart:userAxisAppearance:Thin purple lineDescription:Displays the user axis. Dragging the userRotator rotates about this line.Resource:trackballUserAxisActivePart:userAxisActiveAppearance:Thin purple lineDescription:Displays the user axis. Dragging the userRotator rotates about this line.Ù…… ” T v€ €PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿResource:trackballUserRotatorPart:userRotatorAppearance:Transparent green stripe circling the user axis.Description:Pick to initiate constrained rotation about the user axis.Resource:trackballUserRotatorActivePart:userRotatorActiveAppearance:Brighter green version of the regular userRotatorDescription:Displayed during constrained rotation about the user axis.,» À ) "€€”‘€‚Í€‚ÿ<” ü & €,€‚Í€‚ÿFILE FORMAT/DEFAULT?À ;* $€*€P„7|‚€‚ÿTrackballDragger {.áü u@M h€Ã€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSErotation0 0 1 0scaleFactor1 1 1callbackListNULLsurroundScaleNULLantiSquishAntiSquish {sizing LONGEST_DIAGONAL }rotatorrotatorActiveXRotatorXRotatorActiveYRotatorYRotatorActiveO;ÄA7 <€1€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿZRotatorZRotatorActiveuserAxisuserAxisActiveuserRotatoruserRotatorActive},u@ðA) "€€”‘€‚€‚ÿ-ÄAB& €€‚€‚ÿNOTEí±ðA D< F€c€”‘€‚€€€€€€€‚ÿUnlike most multi-function draggers, SoTrackballDragger is not a compound dragger made up of other draggers that perform its smaller tasks. This is not because it was inappropriate, but because the trackball was written before implementation of the methods that take care of synchronizing multiple child draggers. The younger SoCenterballDragger is similar in form to the trackball, but the centerball is a compound dragger.1 B;D& €€‚€‚ÿSEE ALSOG D‚G, &‚7€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2DraggerA;DÃG1ûX€šÃGûGvÀSoTrackballManip8‚GûG% €&€ˆˆ€‚ÿSoTrackballManip*ÃG%H# €€€‚ÿNAME~XûG£H& €°€”‘€€‚ÿSoTrackballManip - transform node with 3D interface for changing rotation and scaling3%HÖH# € €€‚ÿINHERITS FROM÷…£HÍIr ²€ €”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€ã¼ýÓ€‰€ã%n’ €‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform > SoTransformManip > SoTrackballManip2 ÖHÿI& €€€€ ‚ÿSYNOPSIS~QÍI}J- *€¢€”‘€€‚ã¼ýÓ‰‚ÿ#include Fields from class SoTransform:Ï}ÿILKR t€ú€T”A‚S~‚Aã”5€‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3ftranslationSoSFRotationrotationSoSFVec3fscaleFactorSoSFRotationscaleOrientationSoSFVec3fcenterP'}JœK) "€N€”‘€‚A€‚ÿMethods from class SoTrackballManip:k7LKL4 8€n€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTrackballManip()static SoTypegetClassTypeId()X)œK_L/ .€R€”‘€‚A€ã%n’ ‰‚ÿMethods from class SoTransformManip:×L6MV z€€T”A‚S~‚AãÈï?†€‰ƒ‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒãMy'9‰ã¼ýÓ‰‚ÿSoDragger *getDragger()SbBoolreplaceNode(SoPath *p )SbBoolreplaceManip(SoPath *p,SoTransform *newOne ) constS$_L‰M/ .€H€”‘€‚A€ã¼ýÓ‰‚ÿMethods from class SoTransform: Ž6M–O Ì€€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰‚ƒã4i¥‘‰‚ƒã¥W7ž‰‚ÿvoidpointAt(const SbVec3f &fromPoint,const SbVec3f &toPoint)voidgetScaleSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetRotationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetTranslationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidmultLeft(const SbMatrix &mat)voidmultRight(const SbMatrix &mat)voidcombineLeft(SoTransformation *nodeOnRight)Ç„‰Mi€C T€ €T”A‚S~‚A€ƒã¥W7ž‰‚ƒã4i¥‘‰‚ƒã¨ƒõ(‰‚ÿvoidcombineRight(SoTransformation *–Oi€‚GnodeOnLeft)voidsetMatrix(const SbMatrix &mat)voidrecenter(const SbVec3f &newCenter)N–O·€/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|i€3‚n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)·€‹‚/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ3‚ð„ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH‹‚x…@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nð„Æ…/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þx…ý†Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Æ…1‡& €€‚A€‚ÿDESCRIPTIONê±ý†ˆ9 @€c€”‘€‚A€€€€€€‚ÿSoTrackballManip is derived from SoTransform (by way of SoTransformManip). When its fields change, nodes following it in the scene graph rotate, scale, and/or translate.ó·1‡‰< F€o€”‘€‚A€€€€€€€‚ÿAs a subclass of SoTransformManip, this manipulator also has a 3D interface to edit some of its fields. In this case, the interface edits the rotation and scaleFactor fields. ÔˆŠ6 :€©€”‘€‚A€€€€€‚ÿA manipulator differs from a dragger. When you move a dragger, no other nodes are affected. When you move an SoTransformManip, other nodes move along with it. (See the reference page for SoTransformManip).t2‰Œ‹B R€e€”‘€‚A€€€€€€€€€‚ÿThe interface for an SoTrackballManip is exactly the same as that of the SoTrackballDragger. To find out more about the interface, see the reference page for SoTrackballDragger. To find out how the manipulator uses a dragger to provide its interface, see the reference page for SoTransformManip.ûÅŠ‡Œ6 :€‹€”‘€‚A€€€€€‚ÿOn screen, this manipulator will surround the objects influenced by its motion. This is because it turns on the surroundScale part of the dragger (See the reference page for SoSurroundScale)0 Œ‹·Œ& €€‚A€‚ÿMETHODSB‡ŒùŒ, (€,€T”A‚S~‚A€ƒ‚ÿSoTrackballManip()8·Œ1) "€€”‘€‚A€‚ÿConstructor.U#ùŒ†2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*1Ù) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<†Ž& €,€‚A€‚ÿFILE FORMAT/DEFAULT=ÙRŽ* $€&€P„7|‚€‚ÿTrackballManip {—bŽéŽ5 :€Ä€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0 0rotation0 0 1 0scaleFactor1 1 1scaleOrientation0 0 1 0center0 0 0}1 RŽ& €€‚€‚ÿSEE ALSOPÀéŽvÀ ”‘€‚ãõ+cÛ€‰€ãöñõ€‰€ã+¯€‰€㇫¬l€‰€ãÂmG €‰€ãr“žN€‰€ãøÀ‰€ã¼ýÓ€‰€ã%n’ €‰‚ÿSoCenterballManip, SoHandleBoxManip, SoJackManip, SoTabBoxManip, SoTvÀ‚GrackballDragger, SoTransformBoxManip, SoTransformerManip, SoTransform, SoTransformManip?µÀ1&ù„¼„›µÀëÀàÈSoTranReceiver6vÀëÀ% €"€ˆˆ€‚ÿSoTranReceiver*µÀÁ# €€€‚ÿNAMEgAëÀ|Á& €‚€”‘€€‚ÿSoTranReceiver - interprets database changes for transcription3Á¯Á# € €€‚ÿINHERITS FROM;|ÁêÁ) "€$€”‘€€€‚ÿSoTranReceiver2 ¯ÁÂ& €€€€ ‚ÿSYNOPSIStMêÁÂ' €š€”‘€€‚‚ÿ#include Methods from class SoTranReceiver:ž\Â.ÃB T€¸€T”A‚S~‚A€ƒã«]à—‰‚ƒ‚㑶p6‰ƒãþßC˜‰‚ÿSoTranReceiver(SoGroup *rootNode)~SoTranReceiver()SbBoolinterpret(SoInput *in)4ÂbÃ& €€‚A€‚ÿDESCRIPTIONØ®.Ã:Ä* "€]€”‘€‚A€‚ÿThis class is used for transcribing Open Inventor data. Transcription is the process of packaging changes to a database and sending them over a "wire" to another database.סbÃÅ6 :€C€”‘€‚A€€€€€‚ÿThe SoTranReceiver class is used on the receiving side of transcription. It interprets changes to a Open Inventor database packaged up by an SoTranSender.0 :ÄAÅ& €€‚A€‚ÿMETHODSY'ÅšÅ2 4€N€T”A‚S~‚A€ƒã«]à—‰‚ÿSoTranReceiver(SoGroup *rootNode)æ¶AÅ€Æ0 .€m€”‘€‚A€€€‚ÿThe constructor takes a pointer to an SoGroup instance that is the root node of the scene graph on the receiving end. All changes to the database are made relative to this root.AšÅÁÆ, (€*€T”A‚S~‚A€ƒ‚ÿ~SoTranReceiver()7€ÆøÆ) "€€”‘€‚A€‚ÿDestructor.\$ÁÆTÇ8 @€H€T”A‚S~‚A㑶p6€‰ƒãþßC˜‰‚ÿSbBoolinterpret(SoInput *in)ØøÆVÈ* "€±€”‘€‚A€‚ÿInterprets the transcription commands found in the given input stream. Returns FALSE on any error. Note: some errors (such as invalid node references) are recoverable, while others (such as syntax errors) are not.1 TLJÈ& €€‚A€‚ÿSEE ALSOYVÈàÈ; F€<€”‘€‚AãþßC˜€‰€ãüµM›€‰‚ÿSoInput, SoTranSender= ‡ÈÉ1€D œÉQÉç SoTranSender4àÈQÉ% €€ˆˆ€‚ÿSoTranSender*É{É# €€€‚ÿNAME`:QÉÛÉ& €t€”‘€€‚ÿSoTranSender - sends database changes for transcription3{ÉÊ# € €€‚ÿINHERITS FROM9ÛÉGÊ) "€ €”‘€€€‚ÿSoTranSender2 ÊyÊ& €€€€ ‚ÿSYNOPSISrKGÊëÊ' €–€”‘€€‚‚ÿ#include Methods from class SoTranSender:¬4yÊ—Ìx ¾€i€T”A‚S~‚A€ƒãa‡kɉ‚ƒ‚ãa‡kɉƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ƒã’n%9‰‚ƒ‚ÿSoTranSender(SoOutput *output)~SoTranSender()SoOutput *getOutput() constvoidinsert(SoNode *node)voidinsert(SoNode *node,SoNode *parent,int n)voidremove(SoNode *parent,int n)voidreplace(SoNode *parent,int n,SoNode *newNode)voidmodify(SoNode *node)voidprepareToSend()4ëÊËÌ& €€‚A€‚ÿDESCRIPTIONØ®—Ì£Í* "€]€”‘€‚A€‚ÿThis class is used for transcribing Open Inventor data. Transcription is the process of packaging changes to a database and sending them over a "wire" to another database.ÈŒËÌkÏ< F€€”‘€‚A€€€€€€€‚ÿThe SoTranSender class is used on the sending side of transcription. It packages up changes to an Open Inventor database into a file or memory area defined by an SoOutput instance. It supports a limited set of changes to a database; each change is stored as a command in the transcription area. The SoTranReceiver class can be used at the other end to interpret the transcribed commands.0 £Í›Ï& €€‚A€‚ÿMETHODSV$kÏ 2 4€H€T”A‚S~‚A€ƒãa‡kɉ‚ÿSoTranSender(SoOutput *output)›Ï àȬ}›Ï¸/ .€ú€”‘€‚A€€€‚ÿThe constructor takes a pointer to an SoOutput instance that determines what the transcription area is (file or memory).? ÷, (€&€T”A‚S~‚A€ƒ‚ÿ~SoTranSender()7¸.) "€€”‘€‚A€‚ÿDestructor.S!÷2 4€B€T”A‚S~‚Aãa‡kÉ€‰ƒ‚ÿSoOutput *getOutput() consta2.â/ .€d€”‘€‚A€€€‚ÿReturns pointer to current SoOutput instance.P22 4€<€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidinsert(SoNode *node)´Šâæ* "€€”‘€‚A€‚ÿAdds an INSERT command to the transcription area. The given node will be added as the last child of the root node on the receiving end.q72W: D€n€T”A‚S~‚A€ƒã’n%9‰ã’n%9‰‚ÿvoidinsert(SoNode *node,SoNode *parent,int n)äæk0 .€É€”‘€‚A€€€‚ÿAdds an INSERT command to the transcription area. The given node will be added as the nth child of the given parent node on the receiving end. A NULL parent node causes the node to be added to the receiving end's root node.Z'WÅ3 6€N€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidremove(SoNode *parent,int n)½k‚0 .€€”‘€‚A€€€‚ÿAdds a REMOVE command to the transcription area. The nth child of the given (non-NULL) parent node on the receiving end will be removed.u;Å÷: D€v€T”A‚S~‚A€ƒã’n%9‰ã’n%9‰‚ÿvoidreplace(SoNode *parent,int n,SoNode *newNode)Ôž‚Ë6 :€=€”‘€‚A€€€€€‚ÿAdds a REPLACE command to the transcription area. The nth child of the given (non-NULL) parent node on the receiving end will be replaced with newNode.P÷2 4€<€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidmodify(SoNode *node) ãË(* "€Ç€”‘€‚A€‚ÿAdds a MODIFY command to the transcription area. Updates the field data for the given node to the new contents. Note that this changes only field data; children of groups are not affected, nor is any non-field instance data.Ck, (€.€T”A‚S~‚A€ƒ‚ÿvoidprepareToSend()ï¿(Z 0 .€€”‘€‚A€€€‚ÿPrepares an SoTranSender instance for transcription, making sure the transcription area is complete and all packaged to go. This must be called before the transcription can be performed.1 k‹ & €€‚A€‚ÿSEE ALSO\!Z ç ; F€B€”‘€‚Aãa‡kÉ€‰€ãúÓv €‰‚ÿSoOutput, SoTranReceiver< ‹ # 1®!¼„€'# V (‹SoTransform3ç V % €€ˆˆ€‚ÿSoTransform*# € # €€€‚ÿNAME_9V ß & €r€”‘€€‚ÿSoTransform - general 3D geometric transformation node3€  # € €€‚ÿINHERITS FROM°Wß Â Y ‚€®€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform2  ô & €€€€ ‚ÿSYNOPSISpI d ' €’€”‘€€‚‚ÿ#include Fields from class SoTransform:Ï}ô 3 R t€ú€T”A‚S~‚Aã”5€‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3ftranslationSoSFRotationrotationSoSFVec3fscaleFactorSoSFRotationscaleOrientationSoSFVec3fcenterK"d ~ ) "€D€”‘€‚A€‚ÿMethods from class SoTransform:3 œ Ѐ;€T”A‚S~‚A€ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰‚ƒã4i¥‘‰‚ƒã¥W7ž‰‚ÿSoTransform()voidpointAt(const SbVec3f &fromPoint,const SbVec3f &toPoint)voidgetScaleSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetRotationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetTranslationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidmultLeft(const SbMatrix &mat)voidmultRight(const SbMatrix &mat)voidcombineLeft(SoTransformation *nodeOnRight)ð¥~ ˜@K d€K€T”A‚S~‚A€ƒã¥W7ž‰‚ƒã4i¥‘‰‚ƒã¨ƒõ(‰‚ãB-9‰ƒ‚ÿvoidcombineRight(SoTraœ˜@ç nsformation *nodeOnLeft)voidsetMatrix(const SbMatrix &mat)voidrecenter(const SbVec3f &newCenter)static SoTypegetClassTypeId()Nœæ@/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|˜@bBn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)æ@ºB/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØbBE 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHºB§E@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NEõE/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ§E,GY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4õE`G& €€‚A€‚ÿDESCRIPTIONÒ¨,G2I* "€Q€”‘€‚A€‚ÿThis node defines a geometric 3D transformation consisting of (in order) a (possibly) non-uniform scale about an arbitrary point, a rotation about an arbitrary point and axis, and a translation. (While the transformations can be thought of as being applied in that order, matrices are actually premultiplied in the opposite order. Therefore, the operations are listed in the reverse order throughout this reference page.)/ `GaI& €€‚A€‚ÿFIELDSL2I­I2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslation?aIìI) "€,€”‘€‚A€‚ÿTranslation vector.L­I8J2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationCìI{J) "€4€”‘€‚A€‚ÿRotation specification.L8JÇJ2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactor:{JK) "€"€”‘€‚A€‚ÿScale factors.T"ÇJUK2 4€D€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationscaleOrientationM$K¢K) "€H€”‘€‚A€‚ÿRotational orientation for scale.GUKéK2 4€*€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fcenterJ!¢K3L) "€B€”‘€‚A€‚ÿOrigin for scale and rotation.0 éKcL& €€‚A€‚ÿMETHODS=3L L, (€"€T”A‚S~‚A€ƒ‚ÿSoTransform()`7cLM) "€n€”‘€‚A€‚ÿCreates a transformation node with default settings.~E L~M9 B€Š€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidpointAt(const SbVec3f &fromPoint,const SbVec3f &toPoint)c'MáN< F€O€”‘€‚A€€€€€€€‚ÿSets the node to translate the origin to the fromPoint and rotate the negative z-axis (0,0,-1) to lie on the vector from fromPoint to toPoint. This always tries to keep the "up" direction the positive y-axis, unless that is impossible. All current field values in the node are replaced.&Î~M€X ~€€T”A‚S~‚A€ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ÿvoidgetScaleSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetRotationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetTranslationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) áN€ç const®„áNÁ€* "€ €”‘€‚A€‚ÿThese return composite matrices that transform from object space to each of the spaces after the scale, rotation, or translation.‡M€H: D€š€T”A‚S~‚A€ƒã4i¥‘‰‚ƒã4i¥‘‰‚ÿvoidmultLeft(const SbMatrix &mat)voidmultRight(const SbMatrix &mat) ßÁ€Q‚* "€¿€”‘€‚A€‚ÿThese are convenience functions that combine the effects of a matrix transformation into the current transformation stored in this node. The first method premultiplies the transformation and the second postmultiplies it. fHñ‚: D€Ì€T”A‚S~‚A€ƒã¥W7ž‰‚ƒã¥W7ž‰‚ÿvoidcombineLeft(SoTransformation *nodeOnRight)voidcombineRight(SoTransformation *nodeOnLeft) ãQ‚þƒ* "€Ç€”‘€‚A€‚ÿThese are convenience functions that combine the effects of another transformation node into the current transformation stored in this node. The first method premultiplies the transformation and the second postmultiplies it.Z(ñ‚X„2 4€P€T”A‚S~‚A€ƒã4i¥‘‰‚ÿvoidsetMatrix(const SbMatrix &mat)Ôªþƒ,…* "€U€”‘€‚A€‚ÿSets the fields in the node to implement the transformation represented by the given matrix. Note that invalid matrices (such as singular ones) have undefined results.^,X„Š…2 4€X€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidrecenter(const SbVec3f &newCenter)£z,…-†) "€ô€”‘€‚A€‚ÿChanges the center of the transformation to the given point without affecting the overall effect of the transformation.U#Š…‚†2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*-†Õ†) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8‚† ‡& €$€‚A€‚ÿACTION BEHAVIOR›WÕ†¨‡D X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActionk? ‡ˆ, (€~€”‘€‚A€€‚ÿAccumulates transformation into the current transformation.I¨‡\ˆ2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixActionmAˆÉˆ, (€‚€”‘€‚A€€‚ÿReturns the matrix corresponding to the total transformation.<\ˆ‰& €,€‚A€‚ÿFILE FORMAT/DEFAULT8Ɉ=‰* $€€P„7|‚€‚ÿTransform {—b‰Ô‰5 :€Ä€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0 0rotation0 0 1 0scaleFactor1 1 1scaleOrientation0 0 1 0center0 0 0}1 =‰Š& €€‚€‚ÿSEE ALSO#ŸÔ‰(‹„ Ö€?€”‘€‚ãß퀉€ãɘƥ€‰€ãúD×΀‰€ãƒ$s€‰€ã®Ä?š€‰€ã%n’ €‰€ãáGŒw€‰€ã%ÑP€‰‚ÿSoMatrixTransform, SoResetTransform, SoRotation, SoRotationXYZ, SoScale, SoTransformManip, SoTransformSeparator, SoTranslationFŠn‹1ùU€'$žn‹«‹š’SoTransformBoxDragger=(‹«‹% €0€ˆˆ€‚ÿSoTransformBoxDragger*n‹Õ‹# €€€‚ÿNAMEŒf«‹aŒ& €Ì€”‘€€‚ÿSoTransformBoxDragger - box-like object you scale, rotate, and translate by dragging with the mouse3Õ‹”Œ# € €€‚ÿINHERITS FROMóaŒ‡r ²€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoTransformBoxDragger2 ”Œ¹& €€€€ ‚ÿSYNOPSIS‡`‡@Ž' €À€”‘€€‚‚ÿ#include Fields from class SoTransformBoxDragger:ŒJ¹ÌŽB T€”€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ÿSoSFRotationrotationSoSFVec3ftranslationSoSFVec3fscaleFactorP!@Ž/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:HÌŽd2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(»/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³idzÀJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW»zÀ(‹é‰ƒ‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO »ÉÀ/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%zÀ Á2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackList].ÉÀ}Á/ .€\€”‘€‚A€ã¡è˜*‰‚ÿMethods from class SoTransformBoxDragger:¹} Á6Â< H€ú€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoTransformBoxDragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"}Á‡Â/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:K6ÂÒÄC T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)㨇µÅ; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)ÒÄ Æ/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”UµÅ¡Æ? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q" ÆòÆ/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:8®¡Æ*ÉŠ â€]€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒ‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}òÆéÉB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)N*É7Ê/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|éɳËn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)7Ê Ì/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®³Ë>Î… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH ÌÆÎ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N>ÎÏ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÆÎW‘Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constviÏW‘(‹rtual voidsetName(const SbName &name)virtual SbNamegetName() constP!ϧ‘/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)W‘ü‘, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+§‘S‘, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4ü‘‡‘& €€‚A€‚ÿDESCRIPTIONTS‘‘- (€©€”‘€‚A€€‚ÿSoTransformBoxDragger is a composite dragger shaped like a box with small cubes at the corners. Click and drag any of these cubes to scale the box uniformly. Drag any edge of the box to rotate the whole dragger about its center, along an axis parallel to that edge. Pick any face of the box for 2D translation in the plane of that face.┇‘ê‘N j€)€”‘€‚A€€€€€€€€€€€€€‚ÿAlthough the box looks just about like a wireframe cube, it is composed of many different simple draggers arranged in a composite assembly. When one part is dragged, the transformBox makes sure they all move together. Each of the parts of the box is a different dragger with the default geometry changed. The faces of the box are SoTranslate2Draggers, the edges are SoRotateCylindricalDraggers, and the cubes are an SoScaleUniformDragger. Drag them and the dragger will update its translation, rotation and scaleFactor fields to reflect the changes. As with all draggers, if you change the fields the dragger will move to match the new settings.§r‘‘‘5 :€ä€”‘€‚A€€€€€‚ÿRemember: This is not an SoTransform!. If you want to move other objects with this dragger, you can either: Ðê‘‘< F€¡€”‘€‚A€€€€€€€‚ÿ[a] Use an SoTransformBoxManip, which is subclassed from SoTransform. It creates one of these draggers and uses it as the interface to change its fields. (see the SoTransformBoxManip reference page).£t‘‘@‘/ .€è€”‘€‚A€€€‚ÿ[b] Use field-to-field connections to connect the fields of this dragger to those of any SoTransformation node.g%‘§ ‘B R€K€”‘€‚A€€€€€€€€€‚ÿYou can change the parts in any instance of this dragger using setPart(). The default part geometries are defined as resources for this SoTransformBoxDragger class. They are detailed in the Dragger Resources section of the online reference page for this class. You can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/transformBoxDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ @‘Ö ‘& €€‚A€‚ÿFIELDSL§ ‘" ‘2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationGÖ ‘i ‘) "€<€”‘€‚A€‚ÿOrientation of the dragger.L" ‘µ ‘2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationDi ‘ù ‘) "€6€”‘€‚A€‚ÿPosition of the dragger.Lµ ‘E ‘2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorAù ‘† ‘) "€0€”‘€‚A€‚ÿScale of the dragger.0 E ‘¶ ‘& €€‚A€‚ÿMETHODSG† ‘ý ‘, (€6€T”A‚S~‚A€ƒ‚ÿSoTransformBoxDragger()8¶ ‘5 ‘) "€€”‘€‚A€‚ÿConstructor.uCý ‘ª ‘2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/5 ‘‘/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#ª ‘]‘2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*‘°‘) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6]‘æ‘& € €‚A€‚ÿCATALOG PARTS;°‘!‘- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜æ‘¹‘~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/!‘„@‘#ð€^ÜI, “ ’ €€ÿ€€€€¹‘„@‘(‹‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2¹‘FA‘#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yesÁ1„@‘B‘#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿsurroundScaleSurroundScale--yesº*FA‘ÁB‘#ð€TÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿantiSquishAntiSquish--noÀ0B‘C‘#ð€`ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€D€ÿ€F€€€‚ÿ€R€€€‚ÿÿÿscalerScaleUniformDragger--yesÇ7ÁB‘HD‘#ð€nÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€R€ÿ€T€€€‚ÿ€`€€€‚ÿÿÿrotator1RotateCylindricalDragger--yesÇ7C‘E‘#ð€nÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€R€ÿ€T€€€‚ÿ€`€€€‚ÿÿÿrotator2RotateCylindricalDragger--yesÇ7HD‘ÖE‘#ð€nÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€R€ÿ€T€€€‚ÿ€`€€€‚ÿÿÿrotator3RotateCylindricalDragger--yesÃ3E‘™F‘#ð€fÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€J€ÿ€L€€€‚ÿ€X€€€‚ÿÿÿtranslator1Translate2Dragger--yesÃ3ÖE‘\G‘#ð€fÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€J€ÿ€L€€€‚ÿ€X€€€‚ÿÿÿtranslator2Translate2Dragger--yesÃ3™F‘H‘#ð€fÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€J€ÿ€L€€€‚ÿ€X€€€‚ÿÿÿtranslator3Translate2Dragger--yesÃ3\G‘âH‘#ð€fÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€J€ÿ€L€€€‚ÿ€X€€€‚ÿÿÿtranslator4Translate2Dragger--yesÃ3H‘¥I‘#ð€fÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€J€ÿ€L€€€‚ÿ€X€€€‚ÿÿÿtranslator5Translate2Dragger--yesÃ3âH‘hJ‘#ð€fÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€J€ÿ€L€€€‚ÿ€X€€€‚ÿÿÿtranslator6Translate2Dragger--yes,¥I‘”J‘' € €€‚€‚ÿe7hJ‘ùJ‘. ,€n€”‚±€ƒ€€ ‚ÿExtra Information for List Parts from Above Table’1”J‘‹K‘a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8ùJ‘$L‘a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=‹K‘aL‘' €,€€‚€‚ÿDRAGGER RESOURCES¹$L‘{N‘a €s€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚ÿResource:transformBoxScalerScalerPart:scaler.scalerAppearance:Eight small white cubes at the corners of the boxDescription:Picking this initiates uniform 3D scaling of the dragger.Resource:transformBoxScalerScalerActivePart:scaler.scalerActiveAppearance:Yellow version of the regular scaler partDescription:Displayed while the dragger is being scaled.Resource:transformBoxScalerFeedbackPart:scaler.feedback¬aL‘•€‘b ’€Y€PÍÇ~‚Í€ ƒ‚ƒ€€ ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ€€ ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿAppearance:Empty separatorDescription:Removes any feedback geometry created in the constructor of the SoScaleUniformDragger.Resource:transformBoxScalerFeedbackActivePart:scaler.feedbackActiveAppearance:Empty separatorDescription:Removes any feedbackActive geometry created{N‘•€‘(‹ in the constructor of the SoScaleUniformDragger.Resource:transformBoxRotatorRotatorParts:rotator1.rotatorrotator2.rotator:ñ{N‘Ï‚‘I `€ã€PÍÇ~‚Í€ ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚ÿrotator3.rotatorAppearance:Four white lines along the edges of the boxDescription:Picking this begins rotational dragging. In each of the three rotateCylindrical draggers, the lines of the rotator part are oriented parallel to the axis of rotation.Resource:transformBoxRotatorRotatorActiveParts:rotator1.rotatorActiverotator2.rotatorActiverotator3.rotatorActiveAppearance:Four yellow lines along the edges of the boxDescription:Displayed while the dragger is being rotatedVô•€‘%…‘b ’€é€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ€€ ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚ÿResource:transformBoxRotatorFeedbackParts:rotator1.feedbackrotator2.feedbackrotator3.feedbackAppearance:Empty separatorDescription:Removes any feedback geometry created in the constructor of the SoRotateCylindricalDragger.Resource:transformBoxRotatorFeedbackActiveParts:rotator1.feedbackActiverotator2.feedbackActiverotator3.feedbackActiveAppearance:Thin purple line through center of boxDescription:Displayed to show axis of rotation during rotational dragging.FÏ‚‘´‡‘I `€€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿResource:transformBoxTranslatorTranslatorParts:translator1.translatortranslator2.translatortranslator3.translatortranslator4.translatortranslator5.translatortranslator6.translatorAppearance:Invisible but pickable square surfaceDescription:Picking these begins 2-D translational dragging within the plane of one of the sides of the box. The invisible squares of the six translate2Draggers are arranged to form the sides of the box.The squares are easy to discern, although rendered as invisible; they are bounded by the lines of the rotational dragger parts.¼%…‘̉‘\ †€y€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:transformBoxTranslatorTranslatorActiveParts:translator1.translatorActivetranslator2.translatorActivetranslator3.translatorActivetranslator4.translatorActivetranslator5.translatorActivetranslator6.translatorActiveAppearance:Invisible square surfaceDescription:Shown during 2-D translational dragging.Resource:transformBoxTranslatorXAxisFeedbackParts:translator1.xAxisFeedbacktranslator2.xAxisFeedbackÖ´‡‘ë‹‘I `€­€PÍÇ~‚Í€ ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿtranslator3.xAxisFeedbacktranslator4.xAxisFeedbacktranslator5.xAxisFeedbacktranslator6.xAxisFeedbackAppearance:Short thin purple lineDescription:Only shown if dragger is moving and the axis is a permissable direction of motion. When pressing , motion is constrained, and this is displayed only if the primary motion is in the X direction.Resource:transformBoxTranslatorYAxisFeedbackParts:translator1.yAxisFeedbacktranslator2.yAxisFeedbackŸh̉‘Š‘7 <€Ñ€PÍÇ~‚Í€ ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿtranslator3.yAxisFeedbacktranslator4.yAxisFeedbacktranslator5.yAxisFeedbacktranslator6.yAxisFeedbackAppearance:Short thin purple lineDescription:Only shown if dragger is moving and the axis is a permissable direction of motion. When pressing , motion is constrained, and this is displayed only if the primary motion is in the Y direction.<ë‹‘Æ‘& €,€‚Í€‚ÿFILE FORMAT/DEFAULTBŠ‘Ž‘* $€0€P„7|‚€‚ÿTransformBoxDragger { ­Æ‘À‘\ †€[€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSErotation0 0 1 0translation0 0 0scaleFactor1 1 1callbackListNULLsurroundScaleNULLantiSquishAntiSquish {sizing BIGGEST_DIMENSION }scalerScaleUniformDragger {}rotator1RotateCylindricalDragger {}rotator2RotateCylindricalDragger {}rotator3RotateCylindricalDragger {}translator1TranslatŽ‘À‘(‹e2Dragger {}"ÕŽ‘?‘M h€«€P„|‚€ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿtranslator2Translate2Dragger {}translator3Translate2Dragger {}translator4Translate2Dragger {}translator5Translate2Dragger {}translator6Translate2Dragger {}scaler.scalerscaler.scalerActivescaler.feedbackscaler.feedbackActiverotator1.rotatoräÀ‘]Ä‘: B€É€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿrotator2.rotatorrotator3.rotatorrotator1.rotatorActiverotator2.rotatorActiverotator3.rotatorActiverotator1.feedbackrotator2.feedbackrotator3.feedbackÝ?‘rÆ‘8 >€»€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿrotator1.feedbackActiverotator2.feedbackActiverotator3.feedbackActivetranslator1.translatortranslator2.translatortranslator3.translatortranslator4.translatorK]Ä‘½È‘8 >€'€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿtranslator5.translatortranslator6.translatortranslator1.translatorActivetranslator2.translatorActivetranslator3.translatorActivetranslator4.translatorActivetranslator5.translatorActive?rÆ‘üÊ‘8 >€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿtranslator6.translatorActivetranslator1.xAxisFeedbacktranslator2.xAxisFeedbacktranslator3.xAxisFeedbacktranslator4.xAxisFeedbacktranslator5.xAxisFeedbacktranslator6.xAxisFeedbackñº½È‘íÌ‘7 <€u€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿtranslator1.yAxisFeedbacktranslator2.yAxisFeedbacktranslator3.yAxisFeedbacktranslator4.yAxisFeedbacktranslator5.yAxisFeedbacktranslator6.yAxisFeedback},üÊ‘Í‘) "€€”‘€‚€‚ÿ1 íÌ‘JÍ‘& €€‚€‚ÿSEE ALSODÍ‘š’, &‚1€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ãw`Ëꀉ€ã E€‰€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, JÍ‘š’(‹SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformerDragger, SoTranslate1Dragger, SoTranslate2DraggerDJÍ‘Þ’1Ðî!Œˆ'ŸÞ’’ÄI’SoTransformBoxManip;š’’% €,€ˆˆ€‚ÿSoTransformBoxManip*Þ’C’# €€€‚ÿNAMEi’Ò’& €Ò€”‘€€‚ÿSoTransformBoxManip - transform node with 3D interface for changing scaling, rotation, and translation3C’’# € €€‚ÿINHERITS FROMúˆÒ’ÿ’r ²€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€ã¼ýÓ€‰€ã%n’ €‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform > SoTransformManip > SoTransformBoxManip2 ’1’& €€€€ ‚ÿSYNOPSISTÿ’²’- *€¨€”‘€€‚ã¼ýÓ‰‚ÿ#include Fields from class SoTransform:Ï}1’’R t€ú€T”A‚S~‚Aã”5€‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3ftranslationSoSFRotationrotationSoSFVec3fscaleFactorSoSFRotationscaleOrientationSoSFVec3fcenterS*²’Ô’) "€T€”‘€‚A€‚ÿMethods from class SoTransformBoxManip:n:’B’4 8€t€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTransformBoxManip()static SoTypegetClassTypeId()X)Ô’š’/ .€R€”‘€‚A€ã%n’ ‰‚ÿMethods from class SoTransformManip:×B’q’V z€€T”A‚S~‚AãÈï?†€‰ƒ‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒãMy'9‰ã¼ýÓ‰‚ÿSoDragger *getDragger()SbBoolreplaceNode(SoPath *p )SbBoolreplaceManip(SoPath *p,SoTransform *newOne ) constS$š’Ä’/ .€H€”‘€‚A€ã¼ýÓ‰‚ÿMethods from class SoTransform: Žq’Ñ’ Ì€€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰‚ƒã4i¥‘‰‚ƒã¥W7ž‰‚ÿvoidpointAt(const SbVec3f &fromPoint,const SbVec3f &toPoint)voidgetScaleSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetRotationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetTranslationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidmultLeft(const SbMatrix &mat)voidmultRight(const SbMatrix &mat)voidcombineLeft(SoTransformation *nodeOnRight)Ç„Ä’˜ ’C T€ €T”A‚S~‚A€ƒã¥W7ž‰‚ƒã4i¥‘‰‚ƒã¨ƒõ(‰‚ÿvoidcombineRight(SoTransformation *nodeOnLeft)voidsetMatrix(const SbMatrix &mat)voidrecenter(const SbVec3f &newCenter)NÑ’æ ’/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:t ˜ ’Z ’h ž€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)æ ’² ’/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØZ ’’ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH² ’Ÿ’@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N’í’/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞŸ’0@’Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &nameí’0@’š’)virtual SbNamegetName() const4í’d@’& €€‚A€‚ÿDESCRIPTIONí´0@’QA’9 @€i€”‘€‚A€€€€€€‚ÿSoTransformBoxManip is derived from SoTransform (by way of SoTransformManip). When its fields change, nodes following it in the scene graph rotate, scale, and/or translate.Æd@’YB’B R€€”‘€‚A€€€€€€€€€‚ÿAs a subclass of SoTransformManip, this manipulator also has a 3D interface to edit some of its fields. In this case, the interface edits the scaleFactor, rotation and translation fields. ÔQA’cC’6 :€©€”‘€‚A€€€€€‚ÿA manipulator differs from a dragger. When you move a dragger, no other nodes are affected. When you move an SoTransformManip, other nodes move along with it. (See the reference page for SoTransformManip).};YB’àD’B R€w€”‘€‚A€€€€€€€€€‚ÿThe interface for an SoTransformBoxManip is exactly the same as that of the SoTransformBoxDragger. To find out more about the interface, see the reference page for SoTransformBoxDragger. To find out how the manipulator uses a dragger to provide its interface, see the reference page for SoTransformManip.ûÅcC’ÛE’6 :€‹€”‘€‚A€€€€€‚ÿOn screen, this manipulator will surround the objects influenced by its motion. This is because it turns on the surroundScale part of the dragger (See the reference page for SoSurroundScale)0 àD’ F’& €€‚A€‚ÿMETHODSEÛE’PF’, (€2€T”A‚S~‚A€ƒ‚ÿSoTransformBoxManip()8 F’ˆF’) "€€”‘€‚A€‚ÿConstructor.U#PF’ÝF’2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ˆF’0G’) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<ÝF’lG’& €,€‚A€‚ÿFILE FORMAT/DEFAULT@0G’¬G’* $€,€P„7|‚€‚ÿTransformBoxManip {—blG’CH’5 :€Ä€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0 0rotation0 0 1 0scaleFactor1 1 1scaleOrientation0 0 1 0center0 0 0}1 ¬G’tH’& €€‚€‚ÿSEE ALSOPÀCH’ÄI’ ”‘€‚ãõ+cÛ€‰€ãöñõ€‰€ã+¯€‰€㇫¬l€‰€ã›Ø1Ù€‰€ã¼ýÓ€‰€ã¡è˜*€‰€ãøÀ‰€ã%n’ €‰‚ÿSoCenterballManip, SoHandleBoxManip, SoJackManip, SoTabBoxManip, SoTrackballManip, SoTransform, SoTransformBoxDragger, SoTransformerManip, SoTransformManipAtH’J’1+3þƒ-l& J’=J’þ “SoTransformManip8ÄI’=J’% €&€ˆˆ€‚ÿSoTransformManip*J’gJ’# €€€‚ÿNAMEY=J’æJ’& €²€”‘€€‚ÿSoTransformManip - base class for all transform nodes with built-in 3D user interfaces3gJ’K’# € €€‚ÿINHERITS FROMÓnæJ’ìK’e š€Ü€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€ã¼ýÓ€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform > SoTransformManip2 K’L’& €€€€ ‚ÿSYNOPSIS~QìK’œL’- *€¢€”‘€€‚ã¼ýÓ‰‚ÿ#include Fields from class SoTransform:Ï}L’kM’R t€ú€T”A‚S~‚Aã”5€‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3ftranslationSoSFRotationrotationSoSFVec3fscaleFactorSoSFRotationscaleOrientationSoSFVec3fcenterP'œL’»M’) "€N€”‘€‚A€‚ÿMethods from class SoTransformManip:¶kM’ÑN’` Ž€m€T”A‚S~‚A€ƒ‚ãÈï?†‰ƒ‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒãMy'9‰ã¼ýÓ‰‚ãB-9‰ƒ‚ÿSoTransformManip()SoDragger *getDragger()SbBoolreplaceNode(SoPath *p )SbBoolreplaceManip(SoPath *p,SoTransform *newOne ) conststatic SoTypegetClassTypeId()S$»M’$O’/ .€H€”‘€‚A€ã¼ýÓ‰‚ÿMethods from class SoTransform: ŽÑN’=’ Ì€€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰‚ƒã4i¥‘‰‚ƒã¥W7ž‰‚ÿvoidpointAt(const SbVec3f &fromPoint,const SbVec3f &toPoint)voidgetScaleSpaceMatrix($O’=’ÄI’SbMatrix &mat,SbMatrix &inv) constvoidgetRotationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetTranslationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidmultLeft(const SbMatrix &mat)voidmultRight(const SbMatrix &mat)voidcombineLeft(SoTransformation *nodeOnRight)Ç„$O’‚’C T€ €T”A‚S~‚A€ƒã¥W7ž‰‚ƒã4i¥‘‰‚ƒã¨ƒõ(‰‚ÿvoidcombineRight(SoTransformation *nodeOnLeft)voidsetMatrix(const SbMatrix &mat)voidrecenter(const SbVec3f &newCenter)N=’R‚’/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|‚’΃’n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)R‚’&„’/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ΃’‹†’ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH&„’‡’@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N‹†’a‡’/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ‡’˜ˆ’Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4a‡’̈’& €€‚A€‚ÿDESCRIPTIONE ˜ˆ’Š’9 @€€”‘€‚A€€€€€€‚ÿSoTransformManip is the base class for all SoTransform nodes that have a built-in 3D user interface. Since it is derived from SoTransform, any changes to its fields result in the rotation, scaling, and/or translation of nodes that follow it in the scene graph.«ï’¼‹’B R€Ó€”‘€‚A€€€€€€€€€‚ÿTypically, you will want to replace a regular SoTransform with an SoTransformManip (as when the user selects an object to be moved), or vice versa (as when the object is deselected, and the motion interface should go away). Use the replaceNode() method to insert a manipulator into a scene graph, and the replaceManip() method to remove it when done.Á‹Š’}’6 :€€”‘€‚A€€€€€‚ÿEvery subclass of SoTransformManip utilizes a dragger of some sort to provide a 3D interface. (This class does not have dragger; but all the subclasses do.) However a manipulator differs from a dragger; it influences other objects in the scene because, as an SoTransform, it alters the state. The fields values and movement of a dragger, on the other hand, affect only the dragger itself.ò¼¼‹’o’6 :€y€”‘€‚A€€€€€‚ÿEach SoTransformManip subclass utilizes its dragger by adding it as a hidden child. When an action is applied to the manipulator, such as rendering or handling events, the manipulator first traverses the dragger, and then the manipulator adds its transformation matrix to the state. When you click-drag-release over the manipulator, it passes these events down to the dragger, which moves as a result ("I can't help it, I'm a dragger!").â }’]Â’B R€A€”‘€‚A€€€€€€€€€‚ÿThe manipulator maintains consistency between the fields of the dragger and ito’]Â’ÄI’s own fields. Let's say you use the mouse to rotate the dragger. Callbacks insure that the rotation field of the manipulator will change by the same amount, resulting in the rotation of nodes which follow in the scene graph. Similarly, if you set any of the SoTransformManip fields the manipulator will move the dragger accordingly. You can use this feature to impose constraints on a manipulator: If the user moves the manipulator so that a field value becomes too large, you can set the field back to your desired maximum, and the whole thing will move back to where you specified.–To’óÄ’B R€©€”‘€‚A€€€€€€€€€‚ÿSince each SoTransformManip uses a dragger to provide its interface, you will generally be told to look at the dragger's reference page for details of how it moves and what the different parts are for. The interface for the dragger and the manipulator will always be exactly the same. Usually, an SoTransformManip will surround the objects that it influences (i.e., those that move along with it). This is because the manipulator turns on the surroundScale part of its dragger; so the dragger geometry expands to envelope the other objects (see the reference page for SoSurroundScale).€J]Â’sÆ’6 :€•€”‘€‚A€€€€€‚ÿBecause the dragger is a hidden child, you can see the dragger on screen and interact with it, but the dragger does not show up when you write the manipulator to file. Also, any SoPath will end at the manipulator. (See the Actions section of this reference page for a complete description of when the dragger is traversed).%õóÄ’˜Ç’0 .€ë€”‘€‚A€€€‚ÿIf you want to get a pointer to the dragger you can get it from the manipulator using the getDragger() method. You will need to do this if you want to change the geometry of a manipulator, since the geometry actually belongs to the dragger.0 sÆ’ÈÇ’& €€‚A€‚ÿMETHODSB˜Ç’ È’, (€,€T”A‚S~‚A€ƒ‚ÿSoTransformManip()8ÈÇ’BÈ’) "€€”‘€‚A€‚ÿConstructor.O È’‘È’2 4€:€T”A‚S~‚AãÈï?†€‰ƒ‚ÿSoDragger *getDragger()TBÈ’åÉ’6 :€=€”‘€‚A€€€€€‚ÿReturns a pointer to the dragger being used by this manipulator. Given this pointer, you can customize the dragger just like you would any other dragger. You can change geometry using the setPart() method, or add callbacks using the methods found in the SoDragger reference page.]%‘È’BÊ’8 @€J€T”A‚S~‚A㑶p6€‰ƒãMy'9‰‚ÿSbBoolreplaceNode(SoPath *p )k5åÉ’­Ë’6 :€k€”‘€‚A€€€€€‚ÿReplaces the tail of the path with this manipulator. The tail of the path must be an SoTransform node (or subclass thereof). If the path has a nodekit, this will try to use setPart() to insert the manipulator. Otherwise, the manipulator requires that the next to last node in the path chain be a group.œsBÊ’IÌ’) "€æ€”‘€‚A€‚ÿThe field values from the transform node will be copied to this manipulator, and the transform will be replaced.Ñ¡­Ë’Î’0 .€C€”‘€‚A€€€‚ÿThe manipulator will not call ref() on the node it is replacing. The old node will disappear if it has no references other than from the input path p and its parent, since this manipulator will be replacing it in both of those places. Nor will the manipulator make any changes to field connections of the old node. The calling process is thus responsible for keeping track of its own nodes and field connections.‚CIÌ’œÎ’? N€†€T”A‚S~‚A㑶p6€‰ƒãMy'9‰ã¼ýÓ‰‚ÿSbBoolreplaceManip(SoPath *p,SoTransform *newOne ) constKÎ’ “6 :€+€”‘€‚A€€€€€‚ÿReplaces the tail of the path, which must be this manipulator, with the given SoTransform node. If the path has a nodekit, this will try to use setPart() to insert the new node. Otherwise, the manipulator requires that the next to last node in the path chain be a group.œÎ’ “ÄI’tœÎ’©“) "€è€”‘€‚A€‚ÿThe field values from the manipulator will be copied to the transform node, and the manipulator will be replaced.#í “Ì“6 :€Û€”‘€‚A€€€€€‚ÿThe manipulator will not call ref() or unref() on the node which is replacing it, nor will it make any changes to field connections. The calling process is thus responsible for keeping track of its own nodes and field connections.U#©“!“2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Ì“t“) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8!“¬“& €$€‚A€‚ÿACTION BEHAVIORÔƒt“€“Q p€€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ã¹_ØS‰ãàê‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoHandleEventAction, SoRayPickActionc$¬“ã“? L€I€”‘€‚A€€€€€€€€‚ÿFirst, traverses the dragger the way an SoGroup would. All draggers place themselves in space, but leave the current transformation unchanged when finished. Then the SoTransformManip accumulates a transformation into the current transformation just like its base class, SoTransform.F€“)“2 4€(€”‘€‚AãòÓ}ª€‰€‚ÿSoSearchAction^㓹“2 4€¼€”‘€‚A€€€€‚ÿSearches just like an SoTransform. Does not search the dragger, which is a hidden child.E)“þ“2 4€&€”‘€‚AãeY €‰€‚ÿSoWriteActionW¹“U“9 @€=€”‘€‚A€€€€€€‚ÿWrites out just like an SoTransform. Does not write the dragger, which is a hidden child. If you really need to write valuable information about the dragger, such as customized geometry, you can retrieve the dragger with the getDragger() method and then write it out separately.<þ“‘“& €,€‚A€‚ÿFILE FORMAT/DEFAULT=U“Γ* $€&€P„7|‚€‚ÿTransformManip {—b‘“e“5 :€Ä€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0 0rotation0 0 1 0scaleFactor1 1 1scaleOrientation0 0 1 0center0 0 0}1 Γ–“& €€‚€‚ÿSEE ALSOhÌe“þ “œ ™€”‘€‚ãÈï?†€‰€ã¼ýÓ€‰€ãõ+cÛ€‰€ãöñõ€‰€ã+¯€‰€ã`¤q΀‰€㇫¬l€‰€ã›Ø1Ù€‰€ãr“žN€‰€ãøÀ‰‚ÿSoDragger, SoTransform, SoCenterballManip, SoHandleBoxManip, SoJackManip, SoSurroundScale, SoTabBoxManip, SoTrackballManip, SoTransformBoxManip, SoTransformerManipE–“C “124†$¢‡&¡C “ “‡M“SoTransformSeparator<þ “ “% €.€ˆˆ€‚ÿSoTransformSeparator*C “© “# €€€‚ÿNAMEwQ “ “& €¢€”‘€€‚ÿSoTransformSeparator - group node that saves and restores transformation state3© “S “# € €€‚ÿINHERITS FROM°W “ “Y ‚€®€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoTransformSeparator2 S “5 “& €€€€ ‚ÿSYNOPSISƒ\ “¸ “' €¸€”‘€€‚‚ÿ#include Methods from class SoTransformSeparator:–`5 “N “6 <€À€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoTransformSeparator()SoTransformSeparator(int nChildren)static SoTypegetClassTypeId()O ¸ “ “/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒN “’“r ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)N “à“/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|’“hA“n ª€€T”à“hA“þ “A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)à“ÀA“/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØhA“%D“ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÀA“­D“@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N%D“ûD“/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ­D“2F“Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ûD“fF“& €€‚A€‚ÿDESCRIPTIONè2F“~H“0 .€Ñ€”‘€‚A€€€‚ÿThis group node is similar to the SoSeparator node in that it saves state before traversing its children and restores it afterwards. However, it saves only the current transformation; all other state is left as is. This node can be useful for positioning a camera, since the transformations to the camera will not affect the rest of the scene, even through the camera will view the scene. Similarly, this node can be used to isolate transformations to light sources or other objects.0 fF“®H“& €€‚A€‚ÿMETHODSF~H“ôH“, (€4€T”A‚S~‚A€ƒ‚ÿSoTransformSeparator()e<®H“YI“) "€x€”‘€‚A€‚ÿCreates a transform separator node with default settings.S'ôH“¬I“, (€N€T”A‚S~‚A€ƒ‚ÿSoTransformSeparator(int nChildren)b9YI“J“) "€r€”‘€‚A€‚ÿConstructor that takes approximate number of children.U#¬I“cJ“2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*J“¶J“) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8cJ“îJ“& €$€‚A€‚ÿACTION BEHAVIOR¶l¶J“¤K“J d€Ø€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ã¹_ØS‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoRayPickActionŸsîJ“CL“, (€æ€”‘€‚A€€‚ÿSaves the current transformation state, traverses all children, and restores the previous transformation state.<¤K“L“& €,€‚A€‚ÿFILE FORMAT/DEFAULTACL“ÀL“* $€.€P„7|‚€‚ÿTransformSeparator {0L“ðL“+ &€ €P„|‚€‚‚ÿ}1 ÀL“!M“& €€‚€‚ÿSEE ALSOf+ðL“‡M“; F€V€”‘€‚ãɘƥ€‰€ã¥W7ž€‰‚ÿSoResetTransform, SoTransformationA!M“ÈM“1l&ž‚.¢ÈM“N“ÇÀ“SoTransformVec3f8‡M“N“% €&€ˆˆ€‚ÿSoTransformVec3f*ÈM“*N“# €€€‚ÿNAMEb<N“ŒN“& €x€”‘€€‚ÿSoTransformVec3f - transforms a 3D vector by a 4x4 matrix3*N“¿N“# € €€‚ÿINHERITS FROM”GŒN“SO“M j€Ž€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoTransformVec3f2 ¿N“…O“& €€€€ ‚ÿSYNOPSIS|USO“ €“' €ª€”‘€€‚‚ÿ#include Inputs from class SoTransformVec3f:…O“ €“‡M“c)…O“p€“: D€R€T”A‚S~‚Aãòi`€‰ƒ‚ã÷3≃‚ÿSoMFVec3fvectorSoMFMatrixmatrixP' €“À€“) "€N€”‘€‚A€‚ÿOutputs from class SoTransformVec3f:ŽLp€“N“B T€˜€T”A‚S~‚A€ãòi`‰ƒ‚ãòi`‰ƒ‚ãòi`‰ƒ‚ÿ(SoMFVec3f)point(SoMFVec3f)direction(SoMFVec3f)normalDirectionP'À€“ž“) "€N€”‘€‚A€‚ÿMethods from class SoTransformVec3f:BN“à“, (€,€T”A‚S~‚A€ƒ‚ÿSoTransformVec3f()P!ž“0‚“/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}à“0„“ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)0‚“ˆ„“/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ0„“톓 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHˆ„“u‡“@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N톓Ç“/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þu‡“úˆ“Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Ç“.‰“& €€‚A€‚ÿDESCRIPTION¸Žúˆ“打* "€€”‘€‚A€‚ÿThis engine takes as input a three dimensional floating-point vector and a transformation matrix. The vector is assumed to be a row vector.‰G.‰“o‹“B R€€”‘€‚A€€€€€€€€€‚ÿThe engine multiplies the vector by the matrix and returns the result in the output point. The output direction contains the result when the matrix multiplication assumes the vector is a direction, and therefore ignores the translation part of the matrix. The output normalDirection contains the normalized direction3 打¢‹“) "€€‚A€€ ‚ÿINPUTSGo‹“é‹“2 4€*€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fvector=¢‹“&Œ“) "€(€”‘€‚A€‚ÿInput row vector.Hé‹“nŒ“2 4€,€T”A‚S~‚Aã÷3 ƒ‚ÿSoMFMatrixmatrixH&Œ“¶Œ“) "€>€”‘€‚A€‚ÿInput transformation matrix.0 nŒ“挓& €€‚A€‚ÿOUTPUTSH¶Œ“.“2 4€,€T”A‚S~‚A€ãòi`‰ƒ‚ÿ(SoMFVec3f)pointI 挓w“) "€@€”‘€‚A€‚ÿVector transformed by matrix.L.“Ó2 4€4€T”A‚S~‚A€ãòi`‰ƒ‚ÿ(SoMFVec3f)direction_6w“"Ž“) "€l€”‘€‚A€‚ÿVector transformed by matrix, ignoring translation.R ÓtŽ“2 4€@€T”A‚S~‚A€ãòi`‰ƒ‚ÿ(SoMFVec3f)normalDirectionA"Ž“µŽ“) "€0€”‘€‚A€‚ÿNormalized direction.0 tŽ“厓& €€‚A€‚ÿMETHODSBµŽ“'“, (€,€T”A‚S~‚A€ƒ‚ÿSoTransformVec3f()7厓^“) "€€”‘€‚A€‚ÿConstructor<'“š“& €,€‚A€‚ÿFILE FORMAT/DEFAULT=^“ד* $€&€P„7|‚€‚ÿTransformVec3f {q<š“TÀ“5 :€x€P„|‚€ƒ×“TÀ“‡M“‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿvector0 0 0matrix1 0 0 00 1 0 00 0 1 00 0 0 1}1 ד…À“& €€‚€‚ÿSEE ALSOBTÀ“ÇÀ“/ .€&€”‘€‚ãë\¼N€‰‚ÿSoEngineOutputA…À“Á“1Ó D î!£Á“@Á“âΓSoTransformation8ÇÀ“@Á“% €&€ˆˆ€‚ÿSoTransformation*Á“jÁ“# €€€‚ÿNAMEvP@Á“àÁ“& € €”‘€€‚ÿSoTransformation - abstract base class for all geometric transformation nodes3jÁ““# € €€‚ÿINHERITS FROM’EàÁ“¥Â“M j€Š€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation2 “ד& €€€€ ‚ÿSYNOPSIS{T¥Â“RÓ' €¨€”‘€€‚‚ÿ#include Methods from class SoTransformation:U#ד§Ã“2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()NRÓõÓ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|§Ã“qÅ“n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)õÓÉÅ“/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØqÅ“.È“ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÉÅ“¶È“@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N.È“É“/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7޶ȓ;Ê“Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4É“oÊ“& €€‚A€‚ÿDESCRIPTIONê;Ê“ƒË“* "€Õ€”‘€‚A€‚ÿThis is the abstract base class for all nodes that perform geometric transformations. It exists only to make it easy for applications to test whether a particular node is a transformation node (that is, is derived from this class).0 oÊ“³Ë“& €€‚A€‚ÿMETHODSU#ƒË“Ì“2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*³Ë“[Ì“) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<Ì“—Ì“& €,€‚A€‚ÿFILE FORMAT/DEFAULT“j[Ì“*Í“) "€Ô€”‘€‚A€‚ÿThis is an abstract class. See the reference page of a derived class for the format and default values.1 —Ì“[Í“& €€‚A€‚ÿSEE ALSO‡ß*Í“âΓ¨ ¿€”‘€‚Aã±*:ù€‰€ãß퀉€ãɘƥ€‰€ãúD×΀‰€ãƒ$s€‰€ã®Ä?š€‰€ã`¤q΀‰€ã¼ýÓ€‰€ã%n’ €‰€ãáGŒw€‰€ã%ÑP€‰‚ÿSoAntiSquish, SoMatrixTransform, SoResetTransform, SoRotation, SoRotationXYZ, SoScale, SoSurroundScale, SoTransform, SoTransformManip, SoTransformSeparator, SoTranslation SoUnitsE[Í“'Ï“1¾$þƒ-¤'Ï“cÏ“Ç–SoTransformerDragger<âΓcÏ“% €.€ˆˆ€‚ÿSoTransformerDragger*'Ï“Ï“# €€€‚ÿNAME‹ecÏ“$”& €Ê€”‘€€‚ÿSoTransformerDragger - box-like object you scale, rotate, and translate by dÏ“$”âΓragging with the mouse3Ï“W”# € €€‚ÿINHERITS FROMò€$”I”r ²€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoTransformerDragger2 W”{”& €€€€ ‚ÿSYNOPSIS…^I””' €¼€”‘€€‚‚ÿ#include Fields from class SoTransformerDragger:®d{”®”J d€È€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ÿSoSFRotationrotationSoSFVec3ftranslationSoSFVec3fscaleFactorSoSFFloatminDiscRotDotP!”þ”/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:H®”F”2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(þ””/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³iF”P”J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO ”Ÿ”/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%P”ö”2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackList\-Ÿ”R”/ .€Z€”‘€‚A€ãw`ËꉂÿMethods from class SoTransformerDragger:äö”6”c ”€€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ÿSoTransformerDragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()voidsetColinearThreshold(int newVal )intgetColinearThreshold()voidsetLocateHighlighting(SbBool onOff )SbBoolisLocateHighlighting()voidunsquishKnobs()Q"R”‡”/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:K6”Ò ”C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)㨇”µ ”; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)Ò ” ”/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”Uµ ”¡ ”? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q" ”ò ”/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°¡ ”2” î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}ò ”ñ”B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)N2”?”/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ñ”Ç@”n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBo?”Ç@”âΓol copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)?”A”/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®Ç@”RC”… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHA”ÚC”@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NRC”(D”/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÚC”_E”Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!(D”¯E”/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)_E”F”, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+¯E”[F”, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4F”F”& €€‚A€‚ÿDESCRIPTIONb[F”H”- (€Å€”‘€‚A€€‚ÿSoTransformerDragger is a dragger shaped like a box. It has small cubes at the corners and small balls sticking out of the middle of each face. Click and drag any face of the box for 2D translation in the plane of that face. Drag any corner-cube to scale the box uniformly. Pick any of the mid-face balls to rotate the whole dragger about its center.ì¼F” I”0 .€y€”‘€‚A€€€‚ÿThe SoTransformerDragger uses locate highlighting, so you can tell which part you are about to select before pressing the mouse button. By default, the locate highlight color is gold.s+H”}K”H ^€W€”‘€‚A€€€€€€€€€€€‚ÿClick-drag any face to translate the dragger within the plane of that face. The face you selected will highlight in yellow. While you drag, yellow feedback arrows display the two directions of motion. Press the key and the arrows turn orange; you may now pick between these two directions to constrain the motion. The direction you move the cursor in will determine which direction is chosen. Press the key and the dragger will translate perpendicular to that plane. The translation field is modified as the face is dragged.n> I”ëL”0 .€}€”‘€‚A€€€‚ÿClick a corner to scale the dragger. The corner you selected will turn yellow and radial lines will indicate that you may move toward and away from the center of the box. Drag radially and you will perform uniform scale. Press the key to scale about the opposite corner instead of the center of the box.{E}K”fO”6 :€‹€”‘€‚A€€€€€‚ÿTo stretch the dragger non-uniformly, press when you drag the corner cube. Now you will see three orange arrows indicating that your gesture will determine which direction to choose. Move the cursor and the selected arrow will turn yellow while the others disappear. Now the dragger will stretch only in the direction you selected. Pressing at the same time as allows you to stretch the dragger while keeping the opposite side pinned in place. When you drag a corner, this modifies the scaleFactor and possibly the translation field of the dragger. ðëL”’”0 .€á€”‘€‚A€€€‚ÿClick one of the spherical knobs to rotate the dragger. When you first click, you'll see two orange linfO”’”âΓes and two purple circles. The purple circles indicate the two ways you can rotate. The orange lines are, once again, the two choices for your mouse gesture. Each line begins you moving around one of the two circles. Once you move the cursor far enough, the selected line turns yellow and you begin rotating the dragger about the selected circle. The other circle and line will disappear.)ífO”»ƒ”< F€Û€”‘€‚A€€€€€€€‚ÿTo perform unconstrained ("free") rotation, just press while you drag the spherical knob. There will be no choices; instead all three purple circles will be displayed, forming a ball that you can roll around. Regardless of how you rotate, dragging the spherical knobs will modify the rotatation field of the dragger. Depending on how it is centered and what transforms precede it in the scene graph, rotation is likely to affect the translation and scaleFactor fields as well.ඒ”›…”* "€m€”‘€‚A€‚ÿPressing the key will change the center of rotation in both the constrained and unconstrained () case. By default, rotation occurs about the center of the bounding box. With depressed, rotation occurs about the middle of the opposite side of the bounding box. The purple feedback will change to illustrate this; the feedback circles increase in size and purple crosshairs sprout at the new rotational center.ໃ”«†”0 .€Á€”‘€‚A€€€‚ÿOrdinarily, the knobs of the dragger are unsquished upon readin from file and when the mouse button is released at the end of a drag. If you want this to happen more often, then you should call the method unsquishKnobs.‹b›…”6‡”) "€Ä€”‘€‚A€‚ÿAs with all draggers, if you change the fields the dragger will move to match the new settings.§r«†”݇”5 :€ä€”‘€‚A€€€€€‚ÿRemember: This is not an SoTransform!. If you want to move other objects with this dragger, you can either: Î6‡”爔< F€€”‘€‚A€€€€€€€‚ÿ[a] Use an SoTransformerManip, which is subclassed from SoTransform. It creates one of these draggers and uses it as the interface to change its fields. (see the SoTransformerManip reference page).£t݇”Š‰”/ .€è€”‘€‚A€€€‚ÿ[b] Use field-to-field connections to connect the fields of this dragger to those of any SoTransformation node.e#爔B R€G€”‘€‚A€€€€€€€€€‚ÿYou can change the parts in any instance of this dragger using setPart(). The default part geometries are defined as resources for this SoTransformerDragger class. They are detailed in the Dragger Resources section of the online reference page for this class. You can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/transformerDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ Š‰”Œ”& €€‚A€‚ÿFIELDSLï‹”jŒ”2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotationGŒ”±Œ”) "€<€”‘€‚A€‚ÿOrientation of the dragger.LjŒ”ýŒ”2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationD±Œ”A”) "€6€”‘€‚A€‚ÿPosition of the dragger.LýŒ””2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscaleFactorAA”Δ) "€0€”‘€‚A€‚ÿScale of the dragger.N”Ž”2 4€8€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatminDiscRotDotW!Δs”6 :€C€”‘€‚A€€€€€‚ÿSpecifies the minimum dot product between eyeDir and rotPlane normal before switching from record-player-type rotation to rolling-pin-type rotation. This transition is made so that rotations don't get screwy when the circle is edge-on. Lies in range [0-1]. Best to leave this alone.0 Ž”£”& €€‚A€‚ÿMETHODSFs” À”, (€4€T”A‚S~‚A€ƒ‚ÿSoTransformerDragger()£” À”âΓ8£”DÀ”) "€€”‘€‚A€‚ÿConstructor.uC À”¹À”2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/DÀ”Á”/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#¹À”lÁ”2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Á”¿Á”) "€T€”‘€‚A€‚ÿReturns type identifier for this class.uClÁ”4”2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/¿Á”’”/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#4”ç”2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*’”:Ô) "€T€”‘€‚A€‚ÿReturns type identifier for this class.rD甬Ô. ,€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetColinearThreshold(int newVal )intgetColinearThreshold()ò:ÔÈÄ”* "€å€”‘€‚A€‚ÿWhen picking a direction for constraining based on gesture, this parameter determines how many pixels must separate two axes before they are regarded as distinct. If they are deemed "the same" then the shorter of the two will be discarded.ˆN¬Ã”PÅ”: D€œ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetLocateHighlighting(SbBool onOff )SbBoolisLocateHighlighting()qHÈÄ”ÁÅ”) "€€”‘€‚A€‚ÿControls whether or not locate highlighting is used. Default is TRUE.CPŔƔ, (€.€T”A‚S~‚A€ƒ‚ÿvoidunsquishKnobs()GÁÅ”KÇ”* "€;€”‘€‚A€‚ÿTells the dragger to unsquish its rotation and scale knobs during the next traversal. Ordinarily, the knobs are only unsquished upon readin from file and when the mouse button is released at the end of a drag. If you want this to happen more often, then you should call this method.6Ɣǔ& € €‚A€‚ÿCATALOG PARTS;KÇ”¼Ç”- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜Ç”TÈ”~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/¼Ç”É”#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2TÈ”ÕÉ”#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yesÁ1É”–Ê”#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿsurroundScaleSurroundScale--yes»+ÕÉ”QË”#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿtranslator1Separator--yesÁ1–ʔ̔#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslator1ActiveSeparator--yes»+QË”ÍÌ”#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿtranslator2Separator--yesÁ1Ì”ŽÍ”#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslator2ActiveSeparator--yes»+ÍÌ”IΔ#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿtranslator3Separator--yesÁ1ŽÍ” Ï”#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslator3ActiveSeparator--yes»+IΔÅÏ”#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿtranslator4Separator--yesÁ1 Ï”’•#ð€bÜI, “ ’ €€ÿ€ÅÏ”’•âΓ€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslator4ActiveSeparator--yes»+ÅÏ”M•#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿtranslator5Separator--yesÁ1’••#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslator5ActiveSeparator--yes»+M•É•#ð€VÜI, “ ’ €€ÿ€€€€‚ÿ€ €€€‚ÿ€:€ÿ€<€€€‚ÿ€H€€€‚ÿÿÿtranslator6Separator--yesÁ1•Š•#ð€bÜI, “ ’ €€ÿ€€€€‚ÿ€,€€€‚ÿ€F€ÿ€H€€€‚ÿ€T€€€‚ÿÿÿtranslator6ActiveSeparator--yes¸(É•B•#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿrotator1Separator--yes¾.Š••#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿrotator1ActiveSeparator--yes¸(B•¸•#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿrotator2Separator--yes¾.•v•#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿrotator2ActiveSeparator--yes¸(¸•.•#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿrotator3Separator--yes¾.v•ì•#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿrotator3ActiveSeparator--yes¸(.•¤•#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿrotator4Separator--yes¾.ì•b •#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿrotator4ActiveSeparator--yes¸(¤• •#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿrotator5Separator--yes¾.b •Ø •#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿrotator5ActiveSeparator--yes¸( • •#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿrotator6Separator--yes¾.Ø •N •#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿrotator6ActiveSeparator--yes¶& • •#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿscale1Separator--yes¼,N •À •#ð€XÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€<€ÿ€>€€€‚ÿ€J€€€‚ÿÿÿscale1ActiveSeparator--yes¶& •v•#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿscale2Separator--yes¼,À •2•#ð€XÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€<€ÿ€>€€€‚ÿ€J€€€‚ÿÿÿscale2ActiveSeparator--yes¶&v• @•#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿscale3Separator--yes2• @•âΓ¼,2•È@•#ð€XÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€<€ÿ€>€€€‚ÿ€J€€€‚ÿÿÿscale3ActiveSeparator--yes¶& @•~A•#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿscale4Separator--yes¼,È@•:B•#ð€XÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€<€ÿ€>€€€‚ÿ€J€€€‚ÿÿÿscale4ActiveSeparator--yes¶&~A•ðB•#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿscale5Separator--yes¼,:B•¬C•#ð€XÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€<€ÿ€>€€€‚ÿ€J€€€‚ÿÿÿscale5ActiveSeparator--yes¶&ðB•bD•#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿscale6Separator--yes¼,¬C•E•#ð€XÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€<€ÿ€>€€€‚ÿ€J€€€‚ÿÿÿscale6ActiveSeparator--yes¶&bD•ÔE•#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿscale7Separator--yes¼,E•F•#ð€XÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€<€ÿ€>€€€‚ÿ€J€€€‚ÿÿÿscale7ActiveSeparator--yes¶&ÔE•FG•#ð€LÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€0€ÿ€2€€€‚ÿ€>€€€‚ÿÿÿscale8Separator--yes¼,F•H•#ð€XÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€<€ÿ€>€€€‚ÿ€J€€€‚ÿÿÿscale8ActiveSeparator--yes½2FG•¿H•‹#æ€dÜI, “ ’ €€ÿ€€€€‚ÿ€0€‚€‚ÿ€J€ÿ€L€€‚ÿ€V€€€‚ÿÿÿxAxisFeedbackActiveSeparator--yes½2H•|I•‹#æ€dÜI, “ ’ €€ÿ€€€€‚ÿ€0€‚€‚ÿ€J€ÿ€L€€‚ÿ€V€€€‚ÿÿÿxAxisFeedbackSelectSeparator--yes¼1¿H•8J•‹#æ€bÜI, “ ’ €€ÿ€€€€‚ÿ€.€‚€‚ÿ€H€ÿ€J€€‚ÿ€T€€€‚ÿÿÿxCrosshairFeedbackSeparator--yes½2|I•õJ•‹#æ€dÜI, “ ’ €€ÿ€€€€‚ÿ€0€‚€‚ÿ€J€ÿ€L€€‚ÿ€V€€€‚ÿÿÿyAxisFeedbackActiveSeparator--yes½28J•²K•‹#æ€dÜI, “ ’ €€ÿ€€€€‚ÿ€0€‚€‚ÿ€J€ÿ€L€€‚ÿ€V€€€‚ÿÿÿyAxisFeedbackSelectSeparator--yes¼1õJ•nL•‹#æ€bÜI, “ ’ €€ÿ€€€€‚ÿ€.€‚€‚ÿ€H€ÿ€J€€‚ÿ€T€€€‚ÿÿÿyCrosshairFeedbackSeparator--yes½2²K•+M•‹#æ€dÜI, “ ’ €€ÿ€€€€‚ÿ€0€‚€‚ÿ€J€ÿ€L€€‚ÿ€V€€€‚ÿÿÿzAxisFeedbackActiveSeparator--yes½2nL•èM•‹#æ€dÜI, “ ’ €€ÿ€€€€‚ÿ€0€‚€‚ÿ€J€ÿ€L€€‚ÿ€V€€€‚ÿÿÿzAxisFeedbackSelectSeparator--yes¼1+M•¤N•‹#æ€bÜI, “ ’ €€ÿ€€€€‚ÿ€.€‚€‚ÿ€H€ÿ€J€€‚ÿ€T€€€‚ÿÿÿzCrosshairFeedbackSeparator--yes¾3èM•bO•‹#æ€fÜI, “ ’ €€ÿ€€€€‚ÿ€2€‚€‚ÿ€L€ÿ€N€€‚ÿ€X€€€‚ÿÿÿtranslateBoxFeedbackSeparator--yesÀ0¤N•.€•#ð€`ÜI, “ ’ €€ÿ€€€€‚ÿ€*€€€‚ÿ€D€ÿ€F€€€‚ÿ€R€€€‚ÿÿÿscaleBoxFeedbO•.€•âΓbackSeparator--yesÀ0bO•î€•#ð€`ÜI, “ ’ €€ÿ€€€€‚ÿ€*€€€‚ÿ€D€ÿ€F€€€‚ÿ€R€€€‚ÿÿÿposXWallFeedbackSeparator--yes¿4.€•­•‹#æ€hÜI, “ ’ €€ÿ€€€€‚ÿ€4€‚€‚ÿ€N€ÿ€P€€‚ÿ€Z€€€‚ÿÿÿposXRoundWallFeedbackSeparator--yesÀ0m‚•#ð€`ÜI, “ ’ €€ÿ€€€€‚ÿ€*€€€‚ÿ€D€ÿ€F€€€‚ÿ€R€€€‚ÿÿÿposYWallFeedbackSeparator--yes¿4­•,ƒ•‹#æ€hÜI, “ ’ €€ÿ€€€€‚ÿ€4€‚€‚ÿ€N€ÿ€P€€‚ÿ€Z€€€‚ÿÿÿposYRoundWallFeedbackSeparator--yesÀ0m‚•ìƒ•#ð€`ÜI, “ ’ €€ÿ€€€€‚ÿ€*€€€‚ÿ€D€ÿ€F€€€‚ÿ€R€€€‚ÿÿÿposZWallFeedbackSeparator--yes¿4,ƒ•«„•‹#æ€hÜI, “ ’ €€ÿ€€€€‚ÿ€4€‚€‚ÿ€N€ÿ€P€€‚ÿ€Z€€€‚ÿÿÿposZRoundWallFeedbackSeparator--yesÀ0샕k…•#ð€`ÜI, “ ’ €€ÿ€€€€‚ÿ€*€€€‚ÿ€D€ÿ€F€€€‚ÿ€R€€€‚ÿÿÿnegXWallFeedbackSeparator--yes¿4«„•*†•‹#æ€hÜI, “ ’ €€ÿ€€€€‚ÿ€4€‚€‚ÿ€N€ÿ€P€€‚ÿ€Z€€€‚ÿÿÿnegXRoundWallFeedbackSeparator--yesÀ0k…•ê†•#ð€`ÜI, “ ’ €€ÿ€€€€‚ÿ€*€€€‚ÿ€D€ÿ€F€€€‚ÿ€R€€€‚ÿÿÿnegYWallFeedbackSeparator--yes¿4*†•©‡•‹#æ€hÜI, “ ’ €€ÿ€€€€‚ÿ€4€‚€‚ÿ€N€ÿ€P€€‚ÿ€Z€€€‚ÿÿÿnegYRoundWallFeedbackSeparator--yesÀ0ꆕiˆ•#ð€`ÜI, “ ’ €€ÿ€€€€‚ÿ€*€€€‚ÿ€D€ÿ€F€€€‚ÿ€R€€€‚ÿÿÿnegZWallFeedbackSeparator--yes¿4©‡•(‰•‹#æ€hÜI, “ ’ €€ÿ€€€€‚ÿ€4€‚€‚ÿ€N€ÿ€P€€‚ÿ€Z€€€‚ÿÿÿnegZRoundWallFeedbackSeparator--yes¾.iˆ•æ‰•#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿradialFeedbackSeparator--yes¿/(‰•¥Š•#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€(€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿxCircleFeedbackSeparator--yes¿/払d‹•#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€(€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿyCircleFeedbackSeparator--yes¿/¥Š•#Œ•#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€(€€€‚ÿ€B€ÿ€D€€€‚ÿ€P€€€‚ÿÿÿzCircleFeedbackSeparator--yes,d‹•OŒ•' € €€‚€‚ÿe7#Œ•´Œ•. ,€n€”‚±€ƒ€€ ‚ÿExtra Information for List Parts from Above Table’1OŒ•F•a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8´Œ•ß•a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=F•Ž•' €,€€‚€‚ÿDRAGGER RESOURCESXðß•€À•h ž€á€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿResource:transformerLocateMaterialPart:noneAppearance:Gold diffuse and emissive colorDescription:Locate highlight color used for all parts.Resource:transformerOverallStylePart:overallStyleAppearance:White Low-Complexity linesDescription:If nothing else specified, this is style of the part.Resource:transformerTranslator1Part:translator1AppearanŽ•€À•âΓce:White Line-Style SquareDescription:Top face of transformer. Picking this initiates translation in x-z plane./ÈŽ•¯Â•g œ€‘€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:transformerTranslator2Part:translator2Appearance:White Line-Style SquareDescription:Bottom face of transformer. Picking this initiates translation in x-z plane.Resource:transformerTranslator3Part:translator3Appearance:White Line-Style SquareDescription:Left face of transformer. Picking this initiates translation in y-z plane.Resource:transformerTranslator4Part:translator4Appearance:White Line-Style SquareÄ€À•ÉÄ•V z€‰€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿDescription:Right face of transformer. Picking this initiates translation in y-z plane.Resource:transformerTranslator5Part:translator5Appearance:White Line-Style SquareDescription:Front face of transformer. Picking this initiates translation in x-y plane.Resource:transformerTranslator6Part:translator6Appearance:White Line-Style SquareDescription:Back face of transformer. Picking this initiates translation in x-y plane.³¯Â•ÞÆ•b ’€g€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚ÿResource:transformerTranslator1ActivePart:translator1ActiveAppearance:Yellow version of transformerTranslator1Description:Replaces transformerTranslator1 during dragging.Resource:transformerTranslator2ActivePart:translator2ActiveAppearance:Yellow version of transformerTranslator2Description:Replaces transformerTranslator2 during dragging.Resource:transformerTranslator3ActivePart:translator3Active;ãÉÄ•É•X ~€Ç€PÍÇ~‚Í€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿAppearance:Yellow version of transformerTranslator3Description:Replaces transformerTranslator3 during dragging.Resource:transformerTranslator4ActivePart:translator4ActiveAppearance:Yellow version of transformerTranslator4Description:Replaces transformerTranslator4 during dragging.Resource:transformerTranslator5ActivePart:translator5ActiveAppearance:Yellow version of transformerTranslator5Description:Replaces transformerTranslator5 during dragging.!ºÞÆ•:Ë•g œ€u€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:transformerTranslator6ActivePart:translator6ActiveAppearance:Yellow version of transformerTranslator6Description:Replaces transformerTranslator6 during dragging.Resource:transformerRotator1Part:rotator1Appearance:Green Sphere at end of a stickDescription:Top knob of transformer. Picking this initiates rotation.Resource:transformerRotator2Part:rotator2Appearance:Green Sphere at end of a stick¸É•QÍ•_ Œ€q€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿDescription:Bottom knob of transformer. Picking this initiates rotation.Resource:transformerRotator3Part:rotator3Appearance:Green Sphere at end of a stickDescription:Left knob of transformer. Picking this initiates rotation.Resource:transformerRotator4Part:rotator4Appearance:Green Sphere at end of a stickDescription:Right knob of transformer. Picking this initiates rotation.Resource:transformerRotator57×:Ë•ˆÏ•` Ž€¯€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿPart:rotator5Appearance:Green Sphere at end of a stickDescription:Front knob of transformer. Picking this initiates rotation.Resource:transformerRotator6Part:rotator6Appearance:Green Sphere at end of a stickDescription:Back knob of transformer. Picking this initiates rotation.Resource:transformerRotator1ActivePart:rotator1ActiveAppearance:Yellow version of transformerRotator1Description:Replaces transformerRotator1 during dragging./ÈQ͕Ög œ€‘€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:tranˆÏ•Ã–âΓsformerRotator2ActivePart:rotator2ActiveAppearance:Yellow version of transformerRotator2Description:Replaces transformerRotator2 during dragging.Resource:transformerRotator3ActivePart:rotator3ActiveAppearance:Yellow version of transformerRotator3Description:Replaces transformerRotator3 during dragging.Resource:transformerRotator4ActivePart:rotator4ActiveAppearance:Yellow version of transformerRotator4²ˆÏ•Ô–_ Œ€e€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿDescription:Replaces transformerRotator4 during dragging.Resource:transformerRotator5ActivePart:rotator5ActiveAppearance:Yellow version of transformerRotator5Description:Replaces transformerRotator5 during dragging.Resource:transformerRotator6ActivePart:rotator6ActiveAppearance:Yellow version of transformerRotator6Description:Replaces transformerRotator6 during dragging.Resource:transformerScale1±Ã–å–` Ž€c€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿPart:scale1Appearance:Small white cube in (+x+y+z) corner of transformerDescription:Picking this initiates scaling.Resource:transformerScale2Part:scale2Appearance:Small white cube in (+x+y-z) corner of transformerDescription:Picking this initiates scaling.Resource:transformerScale3Part:scale3Appearance:Small white cube in (+x-y+z) corner of transformerDescription:Picking this initiates scaling. £Ô–ï–g œ€G€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿResource:transformerScale4Part:scale4Appearance:Small white cube in (+x-y-z) corner of transformerDescription:Picking this initiates scaling.Resource:transformerScale5Part:scale5Appearance:Small white cube in (-x+y+z) corner of transformerDescription:Picking this initiates scaling.Resource:transformerScale6Part:scale6Appearance:Small white cube in (-x+y-z) corner of transformer<Óå–+ –i  €§€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿDescription:Picking this initiates scaling.Resource:transformerScale7Part:scale7Appearance:Small white cube in (-x-y+z) corner of transformerDescription:Picking this initiates scaling.Resource:transformerScale8Part:scale8Appearance:Small white cube in (-x-y-z) corner of transformerDescription:Picking this initiates scaling.Resource:transformerScale1ActivePart:scale1ActiveAppearance:Yellow version of transformerScale1Active#Äï–N –_ Œ€‰€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿDescription:Replaces transformerScale1Active during dragging.Resource:transformerScale2ActivePart:scale2ActiveAppearance:Yellow version of transformerScale2ActiveDescription:Replaces transformerScale2Active during dragging.Resource:transformerScale3ActivePart:scale3ActiveAppearance:Yellow version of transformerScale3ActiveDescription:Replaces transformerScale3Active during dragging.Resource:transformerScale4Active «+ –W–^ Š€W€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿPart:scale4ActiveAppearance:Yellow version of transformerScale4ActiveDescription:Replaces transformerScale4Active during dragging.Resource:transformerScale5ActivePart:scale5ActiveAppearance:Yellow version of transformerScale5ActiveDescription:Replaces transformerScale5Active during dragging.Resource:transformerScale6ActivePart:scale6ActiveAppearance:Yellow version of transformerScale6Active*ËN –@–_ Œ€—€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿDescription:Replaces transformerScale6Active during dragging.Resource:transformerScale7ActivePart:scale7ActiveAppearance:Yellow version of transformerScale7ActiveDescription:Replaces transformerScale7Active during dragging.Resource:transformerScale8ActivePart:scale8ActiveAppearance:Yellow version of traW–@–âΓnsformerScale8ActiveDescription:Replaces transformerScale8Active during dragging.Resource:transformerXAxisFeedbackActive!ÃW–®B–^ Š€‡€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿPart:xAxisFeedbackActiveAppearance:Yellow arrow along X axisDescription:Displayed when translating if X direction is permitted.Resource:transformerXAxisFeedbackSelectPart:xAxisFeedbackSelectAppearance:Orange arrow along X axisDescription:Displayed when awaiting gesture to pick between X axis and another direction(s).Resource:transformerYAxisFeedbackActivePart:yAxisFeedbackActiveAppearance:Yellow arrow along Y axisÆ@–ÊD–V z€€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿDescription:Displayed when translating if Y direction is permitted.Resource:transformerYAxisFeedbackSelectPart:yAxisFeedbackSelectAppearance:Orange arrow along Y axisDescription:Displayed when awaiting gesture to pick between Y axis and another direction(s).Resource:transformerZAxisFeedbackActivePart:zAxisFeedbackActiveAppearance:Yellow arrow along Z axisDescription:Displayed when translating if Z direction is permitted. ­®B–ÔF–] ˆ€[€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿResource:transformerZAxisFeedbackSelectPart:zAxisFeedbackSelectAppearance:Orange arrow along Z axisDescription:Displayed when awaiting gesture to pick between Z axis and another direction(s).Resource:transformerXCrosshairFeedbackPart:xCrosshairFeedbackAppearance:Yellow crossHair in y-z planeDescription:Displayed when translating perpendicular to y-z plane.Resource:transformerYCrosshairFeedback «ÊD–ÝH–^ Š€W€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿPart:yCrosshairFeedbackAppearance:Yellow crossHair in x-z planeDescription:Displayed when translating perpendicular to x-z plane.Resource:transformerZCrosshairFeedbackPart:zCrosshairFeedbackAppearance:Yellow crossHair in x-y planeDescription:Displayed when translating perpendicular to x-y plane.Resource:transformerXCircleFeedbackPart:xCircleFeedbackAppearance:Purple Unit Circle about X axis­ÔF–îJ–d –€[€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚ÿDescription:Displayed when rotating about X axisResource:transformerYCircleFeedbackPart:yCircleFeedbackAppearance:Purple Unit Circle about Y axisDescription:Displayed when rotating about Y axisResource:transformerZCircleFeedbackPart:zCircleFeedbackAppearance:Purple Unit Circle about Z axisDescription:Displayed when rotating about Z axisResource:transformerRadialFeedbackPart:radialFeedback0ÚÝH–M–V z€µ€PÍÇ~‚Í€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ÿAppearance:Purple Rays emanating from center through cornersDescription:Displayed when scaling uniformly about center.Resource:transformerTranslateBoxFeedbackPart:translateBoxFeedbackAppearance:Purple Box with one bright yellow sideDescription:Displayed when translating. Automatically oriented so yellow side matches selected face.Resource:transformerPosXWallFeedbackPart:posXWallFeedbackAppearance:Purple Plane along Right side of transformer.ØîJ–LO–V z€±€PÍÇ~‚Í€ ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿDescription:Displayed when scaling and keeping right side fixed.Resource:transformerPosYWallFeedbackPart:posYWallFeedbackAppearance:Purple Plane along Top side of transformerDescription:Displayed when scaling and keeping top side fixed.Resource:transformerPosZWallFeedbackPart:posZWallFeedbackAppearance:Purple Plane along Front side of transformerDescription:Displayed when scaling and keeping front side fixed.¹M–n–] ˆ€s€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ÿResource:transformerNegXWallFeedbackPart:negXWallFeedbackAppearance:Purple PLO–n–âΓlane along Left side of transformerDescription:Displayed when scaling and keeping left side fixed.Resource:transformerNegYWallFeedbackPart:negYWallFeedbackAppearance:Purple Plane along Bottom side of transformerDescription:Displayed when scaling and keeping bottom side fixed.Resource:transformerNegZWallFeedbackÖŸLO–D‚–7 <€?€PÍÇ~‚Í€ ƒ€‚€ ƒ‚ƒ‚‚ÿPart:negZWallFeedbackAppearance:Purple Plane along Back side of transformerDescription:Displayed when scaling and keeping back side fixed.<n–€‚–& €,€‚Í€‚ÿFILE FORMAT/DEFAULTAD‚–Á‚–* $€.€P„7|‚€‚ÿTransformerDragger {Í€‚–Ø„–J b€›€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEtranslation0 0 0scaleFactor1 1 1rotation0 0 1 0minDiscRotDot0.025callbackListNULLsurroundScaleNULLtranslator1translator1Activetranslator2translator2Activetranslator3 ÐÁ‚–䆖< F€¡€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿtranslator3Activetranslator4translator4Activetranslator5translator5Activetranslator6translator6Activerotator1rotator1Active ÎØ„–ðˆ–> J€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿrotator2rotator2Activerotator3rotator3Activerotator4rotator4Activerotator5rotator5Activerotator6rotator6Active Ê䆖úŠ–@ N€•€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿscale1scale1Activescale2scale2Activescale3scale3Activescale4scale4Activescale5scale5Activescale6 Ððˆ––< F€¡€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿscale6Activescale7scale7Activescale8scale8ActivexAxisFeedbackActivexAxisFeedbackSelectxCrosshairFeedbackyAxisFeedbackActiveäúŠ–$–: B€É€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿyAxisFeedbackSelectyCrosshairFeedbackzAxisFeedbackActivezAxisFeedbackSelectzCrosshairFeedbacktranslateBoxFeedbackscaleBoxFeedbackposXWallFeedback$ê–TÁ–: B€Õ€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿposXRoundWallFeedbackposYWallFeedbackposYRoundWallFeedbackposZWallFeedbackposZRoundWallFeedbacknegXWallFeedbacknegXRoundWallFeedbacknegYWallFeedbackûÀ$–OÖ; D€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿnegYRoundWallFeedbacknegZWallFeedbacknegZRoundWallFeedbackradialFeedbackxCircleFeedbackyCircleFeedbackzCircleFeedbacknone},TÁ–{Ö) "€€”‘€‚€‚ÿ1 O֬Ö& €€‚€‚ÿSEE ALSOh0{ÖÇ–8 >‚a€”‘€‚ãÈï?†€‰€ã¤ÓÍñ€‰€ãN=TŽ€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ã E€‰€ã¬õ´Ž€‰‚ÿSoDragger, SoInteractionKit, SoLocateHighlight, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTranslate1Dragger, SoTranslate2DraggerC¬Ã–WÇ–1^Œˆ'4†$¥WÇ–‘Ç–yD—SoTransformerManip:Ç–‘Ç–% €*€ˆˆ€‚ÿSoTransformerManip*WÇ–»Ç–# €€€‚ÿNAMEŽh‘Ç–IÈ–& €Ð€”‘€€‚ÿSoTransformerManip - transform node with 3D interface for changing scaling, rotation, and translation3»Ç–|È–# € €€‚ÿINHERITS FROMù‡IÈ–uÉ–r ²€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€ã¼ýÓ€‰€ã%n’ €‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform > SoTransformManip > SoTransformerManip2 |È–§É–& €€€€ ‚ÿSYNOPSIS€SuÉ–'Ê–- *€¦€”‘€€‚ã¼ýÓ‰‚ÿ#include Fields from class SoTransform:Ï}§É–öÊ–R t€ú€T”A‚S~‚Aã”5€‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3ftranslationSoSFRotationrotationSoSFVec3fscaleFactorSoSFRotationscaleOrientationSoSFVec3fcenterR)'Ê–HË–) "€R€”‘€‚A€‚ÿMethods from class SoTransformerManip:ášöÊ–)Ì–G \€5€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ÿSoTransformerManip()static SoTypegetClassTypeId()voidsetLocateHighlighting(SbBool onOff )SbBoolisLocateHighlighting()voidunsquishKnobs()X)HË–Ì–/ .€R€”‘€‚A€ã%n’ ‰‚ÿMethods from class SoTransformManip:×)Ì–XÍ–V z€€T”A‚S~‚AãÈï?†€‰ƒ‚㑶p6‰ƒãMy'9‰‚㑶p6‰ƒãMy'9‰ã¼ýÓ‰‚ÿSoDragger *getDragger()SbBoolreplaceNode(SoPath *p )SbBoolreplaceManip(SoPath *p,SoTransform *newOne ) constS$Ì–«Í–/ .€H€”‘€‚A€ã¼ýÓ‰‚ÿMethods from class SoTransform: ŽXÍ–¸Ï– Ì€€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰‚ƒã4i¥‘‰‚ƒã¥W7ž‰‚ÿvoidpointAt(const SbVec3f &fromPoint,const SbVec3f &toPoint)voidgetScaleSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetRotationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidgetTranslationSpaceMatrix(SbMatrix &mat,SbMatrix &inv) constvoidmultLeft(const SbMatrix &mat)voidmultRight(const SbMatrix &mat)voidcombineLeft(SoTransformation *nodeOnRight)Ç„«Í–‹—C T€ €T”A‚S~‚A€ƒã¥W7ž‰‚ƒã4i¥‘‰‚ƒã¨ƒõ(‰‚ÿvoid¸Ï–‹—Ç–combineRight(SoTransformation *nodeOnLeft)voidsetMatrix(const SbMatrix &mat)voidrecenter(const SbVec3f &newCenter)N¸Ï–Ù—/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|‹—U—n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ù—­—/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØU—— 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH­—š—@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N—è—/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þš——Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4è—S—& €€‚A€‚ÿDESCRIPTIONÖ—S—* "€­€”‘€‚A€‚ÿThis is a new manipulator with some improvements over the older Inventor manips. It has the following features: [1] full interface for rotate, translate, and scale, [2] better feedback, [3] locate highlighting. ì³S—? —9 @€g€”‘€‚A€€€€€€‚ÿSoTransformerManip is derived from SoTransform (by way of SoTransformManip). When its fields change, nodes following it in the scene graph rotate, scale, and/or translate.ÆS—G —B R€€”‘€‚A€€€€€€€€€‚ÿAs a subclass of SoTransformManip, this manipulator also has a 3D interface to edit some of its fields. In this case, the interface edits the scaleFactor, rotation and translation fields. Ô? —Q —6 :€©€”‘€‚A€€€€€‚ÿA manipulator differs from a dragger. When you move a dragger, no other nodes are affected. When you move an SoTransformManip, other nodes move along with it. (See the reference page for SoTransformManip).z8G —Ë —B R€q€”‘€‚A€€€€€€€€€‚ÿThe interface for an SoTransformerManip is exactly the same as that of the SoTransformerDragger. To find out more about the interface, see the reference page for SoTransformerDragger. To find out how the manipulator uses a dragger to provide its interface, see the reference page for SoTransformManip.ûÅQ —Æ —6 :€‹€”‘€‚A€€€€€‚ÿOn screen, this manipulator will surround the objects influenced by its motion. This is because it turns on the surroundScale part of the dragger (See the reference page for SoSurroundScale)0 Ë —ö —& €€‚A€‚ÿMETHODSDÆ —:—, (€0€T”A‚S~‚A€ƒ‚ÿSoTransformerManip()8ö —r—) "€€”‘€‚A€‚ÿConstructor.U#:—Ç—2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*r——) "€T€”‘€‚A€‚ÿReturns type identifier for this class.ˆNÇ—¢—: D€œ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetLocateHighlighting(SbBool onOff )SbBoolisLocateHighlighting()œs—J@—) "€æ€”‘€‚A€‚ÿControls whether or not the dragger inside this mani¢—J@—Ç–p will perform locate highlighting is used. Default is TRUE.C¢—@—, (€.€T”A‚S~‚A€ƒ‚ÿvoidunsquishKnobs()Y/J@—æA—* "€_€”‘€‚A€‚ÿTells the dragger inside this manip to unsquish its rotation and scale knobs during the next traversal. Ordinarily, the knobs are only unsquished upon readin from file and when the mouse button is released at the end of a drag. If you want this to happen more often, then you should call this method.<@—"B—& €,€‚A€‚ÿFILE FORMAT/DEFAULT?æA—aB—* $€*€P„7|‚€‚ÿTransformerManip {—b"B—øB—5 :€Ä€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿtranslation0 0 0rotation0 0 1 0scaleFactor1 1 1scaleOrientation0 0 1 0center0 0 0}1 aB—)C—& €€‚€‚ÿSEE ALSOPÀøB—yD— ”‘€‚ãw`Ëꀉ€ã¼ýÓ€‰€ãõ+cÛ€‰€ãöñõ€‰€ã+¯€‰€㇫¬l€‰€ã›Ø1Ù€‰€ãr“žN€‰€ã%n’ €‰‚ÿSoTransformerDragger, SoTransform, SoCenterballManip, SoHandleBoxManip, SoJackManip, SoTabBoxManip, SoTrackballManip, SoTransformBoxManip, SoTransformManipD)C—½D—1Ä.¢‡&0¦½D—øD—÷˜SoTranslate1Dragger;yD—øD—% €,€ˆˆ€‚ÿSoTranslate1Dragger*½D—"E—# €€€‚ÿNAMEYøD—¡E—& €²€”‘€€‚ÿSoTranslate1Dragger - object you can translate along a line by dragging with the mouse3"E—ÔE—# € €€‚ÿINHERITS FROMð¡E—ÄF—q ²€þ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoTranslate1Dragger2 ÔE—öF—& €€€€ ‚ÿSYNOPSISƒ\ÄF—yG—' €¸€”‘€€‚‚ÿ#include Fields from class SoTranslate1Dragger:LöF—ÅG—2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationP!yG—H—/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:HÅG—]H—2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(H—´H—/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³i]H—gI—J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO ´H—¶I—/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%gI— J—2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListS*¶I—`J—) "€T€”‘€‚A€‚ÿMethods from class SoTranslate1Dragger:·{ J—K—< H€ö€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoTranslate1Dragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"`J—hK—/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:KK—³M—C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨hK—–N—; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)³M—îN—/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”U–N—‚O—? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"îN—ÓO—/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°‚O—‚— î€a€T”A‚S~‚A€ãõˆÓO—‚—yD—¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}ÓO—Þ‚—B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)N‚—,ƒ—/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Þ‚—¨„—n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X),ƒ—…—/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®¨„—3‡—… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH…—»‡—@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N3‡— ˆ—/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ»‡—@‰—Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP! ˆ—‰—/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)@‰—剗, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+‰—<Š—, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4剗pŠ—& €€‚A€‚ÿDESCRIPTIONS&<Š—Ë—- (€M€”‘€‚A€€‚ÿSoTranslate1Dragger is a simple dragger that translates in one dimension when dragged with the mouse. It moves along the x axis of its local space, determined by its location in the scene graph. Transformation nodes placed before it will affect both the dragger and the direction of motion.0pŠ—óŒ—0 .€€”‘€‚A€€€‚ÿThis node has a translation field which always reflects its position in local space. If you set the field, the dragger will move accordingly. You can also connect fields of other nodes or engines from this one to make them follow the dragger's motion.©hË—œ—A R€Ð€”‘€‚A€€€€€€€€€‚ÿThis dragger contains four parts, translator, translatorActive, feedback, and feedbackActive.Ö󌗢Ž—0 .€­€”‘€‚A€€€‚ÿEach of these is set by default from a resource described in the Dragger Resources section of the online reference page for this class. You can change the parts in any instance of this dragger using setPart().Pœ— À—6 :€5€”‘€‚A€€€€€‚ÿYou can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/translate1Dragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory.¢Ž— À—yD—/ ¢Ž—;À—& €€‚A€‚ÿFIELDSL À—‡À—2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationD;À—ËÀ—) "€6€”‘€‚A€‚ÿPosition of the dragger.0 ‡À—ûÀ—& €€‚A€‚ÿMETHODSEËÀ—@Á—, (€2€T”A‚S~‚A€ƒ‚ÿSoTranslate1Dragger()8ûÀ—xÁ—) "€€”‘€‚A€‚ÿConstructor.uC@Á—íÁ—2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/xÁ—K—/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#íÁ— Â—2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*K—ó—) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6 Â—)×& € €‚A€‚ÿCATALOG PARTS;ó—d×- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜)×ü×~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/d׻ė#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2ü×}Å—#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yesº*»Ä—7Æ—#ð€TÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€8€ÿ€:€€€‚ÿ€F€€€‚ÿÿÿtranslatorSeparator--yesÀ0}Å—÷Æ—#ð€`ÜI, “ ’ €€ÿ€€€€‚ÿ€*€€€‚ÿ€D€ÿ€F€€€‚ÿ€R€€€‚ÿÿÿtranslatorActiveSeparator--yes¸(7Æ—¯Ç—#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿfeedbackSeparator--yes¾.÷Æ—mÈ—#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿfeedbackActiveSeparator--yes,¯Ç—™È—' € €€‚€‚ÿe7mÈ—þÈ—. ,€n€”‚±€ƒ€€ ‚ÿExtra Information for List Parts from Above Table’1™È—É—a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8þÈ—)Ê—a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=É—fÊ—' €,€€‚€‚ÿDRAGGER RESOURCES§)Ê—uÌ—h ž€O€PÍÇ~‚Í€ €ƒ€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿResource:translate1TranslatorPart:translatorAppearance:white arrowDescription:picking this initiates translationResource:translate1TranslatorActivePart:translatorActiveAppearance:yellow arrowDescription:displayed during translation instead of the translatorResource:translate1FeedbackPart:feedbackAppearance:empty Separator by defaultDescription:feedback displayed when not in motionÔ”fÊ—IÍ—@ N€)€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ÿResource:translate1FeedbackActivePart:feedbackActiveAppearance:empty Separator by defaultDescription:feedback displayed while moving<uÌ—…Í—& €,€‚Í€‚ÿFILE FORMAT/DEFAULT@IÍ—ÅÍ—* $€,€P„7|‚€‚ÿTranslate1Dragger {ƒB…Í—HÏ—A P€…€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEtranslation0 0 0callbackListNULLtranslatortranslatorActivefeedbackfeedbackActive},ÅÍ—tÏ—) "€€”‘€‚€‚ÿ1 HÏ—¥Ï—& €€‚€‚ÿSEE ALSOFtÏ—÷˜, &‚5€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€¥Ï—÷˜yD—‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã¬õ´Ž€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate2DraggerD¥Ï—;˜1‚5ž‚.)…1§;˜v˜ ȘSoTranslate2Dragger;÷˜v˜% €,€ˆˆ€‚ÿSoTranslate2Dragger*;˜ ˜# €€€‚ÿNAME[v˜!˜& €¶€”‘€€‚ÿSoTranslate2Dragger - object you can translate within a plane by dragging with the mouse3 ˜T˜# € €€‚ÿINHERITS FROMð!˜D˜q ²€þ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ã¤ÓÍñ€‰€ãÈï?†€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoTranslate2Dragger2 T˜v˜& €€€€ ‚ÿSYNOPSISƒ\D˜ù˜' €¸€”‘€€‚‚ÿ#include Fields from class SoTranslate2Dragger:Lv˜E˜2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationP!ù˜•˜/ .€B€”‘€‚A€ãÈï?†‰‚ÿFields from class SoDragger:HE˜Ý˜2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActiveW(•˜4˜/ .€P€”‘€‚A€ã¤ÓÍñ‰‚ÿFields from class SoInteractionKit:³iݘç˜J d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingO 4˜6˜/ .€@€”‘€‚A€ãib‰‚ÿParts from class SoBaseKit:W%瘘2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListS*6˜à˜) "€T€”‘€‚A€‚ÿMethods from class SoTranslate2Dragger:·{˜— ˜< H€ö€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoTranslate2Dragger()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"à˜è ˜/ .€D€”‘€‚A€ãÈï?†‰‚ÿMethods from class SoDragger:K— ˜3 ˜C T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddStartCallback(SoDraggerCB *f,void *userData = NULL)voidremoveStartCallback(SoDraggerCB *f,void *userData = NULL)voidaddMotionCallback(SoDraggerCB *f,void *userData = NULL)voidremoveMotionCallback(SoDraggerCB *f,void *userData = NULL)voidaddFinishCallback(SoDraggerCB *f,void *userData = NULL)voidremoveFinishCallback(SoDraggerCB *f,void *userData = NULL)voidaddValueChangedCallback(SoDraggerCB *f,void *userData = NULL)voidremoveValueChangedCallback(SoDraggerCB *f,void *userData = NULL)ã¨è ˜ ˜; D€Q€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolenableValueChangedCallbacks()voidsetMinGesture(int pixels)intgetMinGesture() conststatic voidsetMinScale(float newMinScale)static floatgetMinScale()X)3 ˜n ˜/ .€R€”‘€‚A€ã¤ÓÍñ‰‚ÿMethods from class SoInteractionKit:”U ˜˜? N€ª€T”A‚S~‚A€㑶p6‰ƒãúß~6‰ãMy'9‰‚ÿvirtual SbBoolsetPartAsPath(const SbName &partName,SoPath *surrogatePath )Q"n ˜S˜/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:@°˜Ÿ@˜ î€a€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒã}9‰‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SS˜Ÿ@˜÷˜oPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}S˜^A˜B T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)NŸ@˜¬A˜/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|^A˜(C˜n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¬A˜€C˜/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®(C˜³E˜… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH€C˜;F˜@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N³E˜‰F˜/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ;F˜ÀG˜Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!‰F˜H˜/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)ÀG˜eH˜, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+H˜¼H˜, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4eH˜ðH˜& €€‚A€‚ÿDESCRIPTIONX+¼H˜HJ˜- (€W€”‘€‚A€€‚ÿSoTranslate2Dragger is a simple dragger that translates in two dimensions when dragged with the mouse. It moves within the x-y plane of its local space, determined by its location in the scene graph. Transformation nodes placed before it will affect both the dragger and the direction of motion.ÚðH˜LK˜* "€µ€”‘€‚A€‚ÿPressing the key allows you to constrain motion to either the x axis or the y axis. The direction is determined by your initial mouse gesture after pressing the key. Releasing the key removes the constraint.0HJ˜|L˜0 .€€”‘€‚A€€€‚ÿThis node has a translation field which always reflects its position in local space. If you set the field, the dragger will move accordingly. You can also connect fields of other nodes or engines from this one to make them follow the dragger's motion.‘CLK˜ N˜N j€‡€”‘€‚A€€€€€€€€€€€€€‚ÿThis dragger contains six parts, translator, translatorActive, feedback, feedbackActive, xAxisFeedback, and yAxisFeedback. The last two parts are only displayed during motion, and only when their direction of motion is enabled. (Pressing the key and then dragging disables one of the two directions.)Ö|L˜O˜0 .€­€”‘€‚A€€€‚ÿEach of these is set by default from a resource described in the Dragger Resources section of the online reference page for this class. You can change the parts in any instance of this dragger using setPart().P N˜o€˜6 :€5€”‘€‚A€€€€€‚ÿYou can make your program use different default resources for the parts by copying the file %OIVHOME%/data/draggerDefaults/translate2Dragger.iv into your own directory, editing theO˜o€˜÷˜ file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory./ O˜ž€˜& €€‚A€‚ÿFIELDSLo€˜ê€˜2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationDž€˜.˜) "€6€”‘€‚A€‚ÿPosition of the dragger.0 ꀘ^˜& €€‚A€‚ÿMETHODSE.˜£˜, (€2€T”A‚S~‚A€ƒ‚ÿSoTranslate2Dragger()8^˜Û˜) "€€”‘€‚A€‚ÿConstructor.uC£˜P‚˜2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() const^/Û˜®‚˜/ .€^€”‘€‚A€€€‚ÿReturns an SoNodekitCatalog for this classU#P‚˜ƒ˜2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*®‚˜Vƒ˜) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6ƒ˜Œƒ˜& € €‚A€‚ÿCATALOG PARTS;Vƒ˜Çƒ˜- *€€”‘€‚‰€ƒ€‚ÿAll Parts˜Œƒ˜_„˜~#Ì€4ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €ÿ€€€€‚ÿ€$€€€‚ÿÿÿDefaultNULL¿/ǃ˜…˜#ð€^ÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€6€ÿ€8€€€‚ÿ€H€€€‚ÿÿÿPart NamePart TypeTypeDefaultÂ2_„˜à…˜#ð€dÜI, “ ’ €€ÿ€€€€‚ÿ€"€€€‚ÿ€H€ÿ€J€€€‚ÿ€V€€€‚ÿÿÿcallbackListNodeKitListPart--yesº*…˜š†˜#ð€TÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€8€ÿ€:€€€‚ÿ€F€€€‚ÿÿÿtranslatorSeparator--yesÀ0à…˜Z‡˜#ð€`ÜI, “ ’ €€ÿ€€€€‚ÿ€*€€€‚ÿ€D€ÿ€F€€€‚ÿ€R€€€‚ÿÿÿtranslatorActiveSeparator--yes¸(š†˜ˆ˜#ð€PÜI, “ ’ €€ÿ€€€€‚ÿ€€€€‚ÿ€4€ÿ€6€€€‚ÿ€B€€€‚ÿÿÿfeedbackSeparator--yes¾.Z‡˜Ðˆ˜#ð€\ÜI, “ ’ €€ÿ€€€€‚ÿ€&€€€‚ÿ€@€ÿ€B€€€‚ÿ€N€€€‚ÿÿÿfeedbackActiveSeparator--yes½-ˆ˜‰˜#ð€ZÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€>€ÿ€@€€€‚ÿ€L€€€‚ÿÿÿxAxisFeedbackSeparator--yes½-Ј˜JŠ˜#ð€ZÜI, “ ’ €€ÿ€€€€‚ÿ€$€€€‚ÿ€>€ÿ€@€€€‚ÿ€L€€€‚ÿÿÿyAxisFeedbackSeparator--yes,‰˜vŠ˜' € €€‚€‚ÿe7JŠ˜ÛŠ˜. ,€n€”‚±€ƒ€€ ‚ÿExtra Information for List Parts from Above Table’1vŠ˜m‹˜a#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8ÛŠ˜Œ˜a#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback=m‹˜CŒ˜' €,€€‚€‚ÿDRAGGER RESOURCES0ÈŒ˜sŽ˜h ž€‘€PÍÇ~‚Í€ ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿResource:translate2TranslatorPart:translatorAppearance:pair of white crossing arrowsDescription:picking this initiates translationResource:translate2TranslatorActivePart:translatorActiveAppearance:pair of yellow crossing arrowsDescription:displayed during translation instead of the translatorResource:translate2FeedbackPart:feedbackAppearance:empty Separator by defaultDescription:feedback displayed when not movingÀCŒ˜“À˜T v€€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚ÿResource:translate2FeedbackActivePart:feedbackActiveAppearance:empty Separator by defaultDescription:feedback displayed when movingResource:translate2XAxisFeedbackPart:xAxisFeedbackAppearance:thin purple lineDescription:Only shown if dragger is moving and the axis is a permissable direcsŽ˜“À˜÷˜tion of motion. When pressing , motion is constrained, and this is displayed only if the primary motion is in the x direction.q1sŽ˜˜@ N€c€PÍÇ~‚Í€ ‚ƒ€€ ‚ƒ€‚€ ƒ‚ƒ‚‚ÿResource:translate2YAxisFeedbackPart:yAxisFeedbackAppearance:thin purple lineDescription:Only shown if dragger is moving and the axis is a permissable direction of motion. When pressing , motion is constrained, and this is displayed only if the primary motion is in the y direction.<“À˜@˜& €,€‚Í€‚ÿFILE FORMAT/DEFAULT@˜€Â˜* $€,€P„7|‚€‚ÿTranslate2Dragger {é¤@˜iĘE X€I€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSEtranslation0 0 0callbackListNULLtranslatortranslatorActivefeedbackfeedbackActivexAxisFeedbackyAxisFeedback},€Â˜•Ä˜) "€€”‘€‚€‚ÿ1 iĘÆĘ& €€‚€‚ÿSEE ALSOF•Ä˜ Ș, &‚5€”‘€‚ã¤ÓÍñ€‰€ãÈï?†€‰€ãÌrŠâ€‰€ã†ë€‰€ãLº¿€‰€ã¢b€‰€ã±—o›€‰€ãz"À‰€ã%Ô§€‰€ãŒÝ߀‰€ã&M°¢€‰€ãY#怉€ãüÚÉ/€‰€ã˜uPö€‰€ã̙耉€ãÀsm€‰€ãNØd>€‰€ãÈÁY€‰€ãÂmG €‰€ã¡è˜*€‰€ãw`Ëꀉ€ã E€‰‚ÿSoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger> ÆĘJȘ1²0¨2¨JȘȘÿ™SoTranslation5 ȘȘ% € €ˆˆ€‚ÿSoTranslation*JȘ©È˜# €€€‚ÿNAME[5Șɘ& €j€”‘€€‚ÿSoTranslation - node representing a 3D translation3©È˜7ɘ# € €€‚ÿINHERITS FROM²YɘéɘY ‚€²€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoTranslation2 7ɘʘ& €€€€ ‚ÿSYNOPSIStMéɘʘ' €š€”‘€€‚‚ÿ#include Fields from class SoTranslation:LʘÛʘ2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslationM$ʘ(˘) "€H€”‘€‚A€‚ÿMethods from class SoTranslation:h4Ûʘ˘4 8€h€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTranslation()static SoTypegetClassTypeId()N(˘Þ˘/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|˘Z͘n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Þ˘²Í˜/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØZ͘#™ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbNa²Í˜#™ Șme &fieldName) constˆH²Í˜«™@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N#™ù™/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ«™0™Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ù™d™& €€‚A€‚ÿDESCRIPTION[20™¿™) "€d€”‘€‚A€‚ÿThis node defines a translation by a 3D vector./ d™î™& €€‚A€‚ÿFIELDSL¿™:™2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslation?î™y™) "€,€”‘€‚A€‚ÿTranslation vector.0 :™©™& €€‚A€‚ÿMETHODS?y™è™, (€&€T”A‚S~‚A€ƒ‚ÿSoTranslation()]4©™E™) "€h€”‘€‚A€‚ÿCreates a translation node with default settings.U#虚™2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*E™í™) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8š™%™& €$€‚A€‚ÿACTION BEHAVIOR›Wí™À™D X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActionh<%™(™, (€x€”‘€‚A€€‚ÿAccumulates translation into the current transformation.IÀ™q™2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixActiond8(™Õ™, (€p€”‘€‚A€€‚ÿReturns the matrix corresponding to the translation.<q™™& €,€‚A€‚ÿFILE FORMAT/DEFAULT:Õ™K™* $€ €P„7|‚€‚ÿTranslation {D™™- *€.€P„|‚€ƒ‚‚‚ÿtranslation0 0 0}1 K™À™& €€‚€‚ÿSEE ALSO?™ÿ™/ .€ €”‘€‚ã¼ýÓ€‰‚ÿSoTransformCÀ™B™1/)…1q3©B™|™Ï„™SoTriangleStripSet:ÿ™|™% €*€ˆˆ€‚ÿSoTriangleStripSet*B™¦™# €€€‚ÿNAME[5|™ ™& €j€”‘€€‚ÿSoTriangleStripSet - triangle strip set shape node3¦™4 ™# € €€‚ÿINHERITS FROMó ™' ™r ²€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ã¹êZY€‰€ã5ÖfE€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape > SoNonIndexedShape > SoTriangleStripSet2 4 ™Y ™& €€€€ ‚ÿSYNOPSIS~W' ™× ™' €®€”‘€€‚‚ÿ#include Fields from class SoTriangleStripSet:LY ™# ™2 4€4€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32numVerticesX)× ™{ ™/ .€R€”‘€‚A€ã5ÖfE‰‚ÿFields from class SoNonIndexedShape:K# ™Æ ™2 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32startIndexT%{ ™ ™/ .€J€”‘€‚A€ã¹êZY‰‚ÿFields from class SoVertexShape:NÆ ™h ™2 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyR) ™º ™) "€R€”‘€‚A€‚ÿMethods from class SoTriangleStripSet:m9h ™' ™4 8€r€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoTriangleStripSet()static SoTypegetClassTypeId()Nº ™u ™/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|' ™ñ™n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)u ™I™/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØñ™ºA™ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultVI™ºA™ÿ™alues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHI™BB™@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NºA™B™/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞBB™ÇC™Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4B™ûC™& €€‚A€‚ÿDESCRIPTION;ÿÇC™6E™< F€ÿ€”‘€‚A€€€€€€€‚ÿThis shape node constructs triangle strips out of vertices. The vertices may be specified in the vertexProperty field (from SoVertexShape), or by the current inherited coordinates. For optimal performance, the vertexProperty field is recommended.]ûC™ÆF™3 4€»€”‘€‚A€€€€‚ÿSoTriangleStripSet is one of the fastest ways of drawing polygonal objects in Open Inventor. It uses the current coordinates, in order, starting with the first one. The values in the numVertices field indicate the number of vertices to use for each triangle strip in the set. The number of values in this field determines the number of strips.76E™ýG™0 .€€”‘€‚A€€€‚ÿFor example, if numVertices has the values [3,5], coordinates 1, 2, and 3 would be used for the first triangle strip and coordinates 4, 5, 6, 7, and 8 would be used for the second strip. This would result in 1 triangle in the first strip and 3 in the second.ÉŸÆF™ÆH™* "€?€”‘€‚A€‚ÿThe coordinates of the strips are transformed by the current cumulative transformation. The strips are drawn with the current light model and drawing style.¡wýG™gJ™* "€ï€”‘€‚A€‚ÿTreatment of the current material and normal binding is as follows: The PER_PART binding specifies a material or normal for each strip of the set. The PER_FACE binding specifies a material or normal for each triangle. The _INDEXED bindings are equivalent to their non-indexed counterparts. The default normal binding is PER_VERTEX. The default material binding is OVERALL.\2ÆH™ÃK™* "€e€”‘€‚A€‚ÿIf any normals (or materials) are specified, Open Inventor assumes you provide the correct number of them, as indicated by the binding. You will see unexpected results if you specify fewer normals (or materials) than the shape requires. If no normals are specified, they will be generated automatically./ gJ™òK™& €€‚A€‚ÿFIELDSLÃK™>L™2 4€4€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32numVertices›ròK™ÙL™) "€ä€”‘€‚A€‚ÿNumber of vertices in each triangle strip. The number of strips is equal to the number of values in this field.0 >L™ M™& €€‚A€‚ÿMETHODSDÙL™MM™, (€0€T”A‚S~‚A€ƒ‚ÿSoTriangleStripSet()d; M™±M™) "€v€”‘€‚A€‚ÿCreates a triangle strip set node with default settings.U#MM™N™2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*±M™YN™) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8N™‘N™& €$€‚A€‚ÿACTION BEHAVIORHYN™ÙN™2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderAction‘e‘N™jO™, (€Ê€”‘€‚A€€‚ÿDraws a strip set based on the current coordinates, normals, materials, drawing style, and so on.GÙN™±O™2 4€*€”‘€‚AãÉ“â„€‰€‚ÿSoRayPickActionÄ‘jO™€™3 4€#€”‘€‚A€€€€‚ÿPicks on the strip set base±O™€™ÿ™d on the current coordinates and transformation. Details about the intersection are returned in an SoFaceDetail.N±O™Ï€™2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActionê½€™¹™- (€{€”‘€‚A€€‚ÿComputes the bounding box that encloses all vertices of the strip set with the current transformation applied to them. Sets the center to the average of the coordinates of all vertices.HÏ€™‚™2 4€,€”‘€‚Aã³DfL€‰€‚ÿSoCallbackAction»Ž¹™¼‚™- (€€”‘€‚A€€‚ÿIf any triangle callbacks are registered with the action, they will be invoked for each successive triangle forming the strips of the set.<‚™ø‚™& €,€‚A€‚ÿFILE FORMAT/DEFAULT?¼‚™7ƒ™* $€*€P„7|‚€‚ÿTriangleStripSet {f5ø‚™ƒ™1 2€j€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿvertexPropertyNULLstartIndex0numVertices-1}1 7ƒ™Îƒ™& €€‚€‚ÿSEE ALSO‰ƒ™Ï„™x ¾€€”‘€‚ã[Eà€‰€ãy‚2€‰€ã~«M§€‰€ãø@〉€ã×ïþö€‰€ã¼$ú³€‰€ãmý¼€‰‚ÿSoCoordinate3, SoDrawStyle, SoFaceDetail, SoFaceSet, SoIndexedTriangleStripSet, SoQuadMesh, SoVertexProperty= ΃™ …™1¨2“‚3ª …™@…™%Æ™SoTriggerAny4Ï„™@…™% €€ˆˆ€‚ÿSoTriggerAny* …™j…™# €€€‚ÿNAMET.@…™¾…™& €\€”‘€€‚ÿSoTriggerAny - provides fan-in for triggers3j…™ñ…™# € €€‚ÿINHERITS FROMC¾…™†™M j€†€”‘€ã}9€‰€ã¿\%†€‰€ãú­Np€‰€€€‚ÿSoBase > SoFieldContainer > SoEngine > SoTriggerAny2 ñ…™³†™& €€€€ ‚ÿSYNOPSISvO†™)‡™' €ž€”‘€€‚‚ÿ#include Inputs from class SoTriggerAny:OÔ³†™xˆ™{ Ä€©€T”A‚S~‚Aã%瀉ƒ‚ã%牃‚ã%牃‚ã%牃‚ã%牃‚ã%牃‚ã%牃‚ã%牃‚ã%牃‚ã%牃‚ÿSoSFTriggerinput0SoSFTriggerinput1SoSFTriggerinput2SoSFTriggerinput3SoSFTriggerinput4SoSFTriggerinput5SoSFTriggerinput6SoSFTriggerinput7SoSFTriggerinput8SoSFTriggerinput9L#)‡™Äˆ™) "€F€”‘€‚A€‚ÿOutputs from class SoTriggerAny:Kxˆ™‰™2 4€2€T”A‚S~‚A€ã%牃‚ÿ(SoSFTrigger)outputL#Ĉ™[‰™) "€F€”‘€‚A€‚ÿMethods from class SoTriggerAny:>‰™™‰™, (€$€T”A‚S~‚A€ƒ‚ÿSoTriggerAny()P![‰™é‰™/ .€B€”‘€‚A€ãú­Np‰‚ÿMethods from class SoEngine:}™‰™é‹™ƒ Ô€û€T”A‚S~‚A€ãB-9‰ƒ‚ƒã%Y7‰‚ãë\¼N‰ƒãúß~6‰‚㑶p6‰ƒãë\¼N‰ãúß~6‰‚ãú­Np‰ƒ‚ãú­Np‰ƒãúß~6‰‚ƒãúß~6‰ã„Ü剂ÿstatic SoTypegetClassTypeId()virtual intgetOutputs(SoEngineOutputList &list) constSoEngineOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoEngineOutput *output,SbName &outputName) constSoEngine *copy() conststatic SoEngine *getByName(const SbName &name)static intgetByName(const SbName &name,SoEngineList &list)X)鉙AŒ™/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØé‹™¦Ž™ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHAŒ™.™@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¦Ž™|™/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ.™¿À™Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNo|™¿À™Ï„™Delete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4|™óÀ™& €€‚A€‚ÿDESCRIPTION·¿À™ªÁ™* "€€”‘€‚A€‚ÿThis engine takes up to 10 input triggers, and produces one trigger output. The output is triggered whenever one of the inputs is touched./ óÀ™ÙÁ™& €€‚A€‚ÿINPUTSOÔªÁ™(Ù{ Ä€©€T”A‚S~‚Aã%瀉ƒ‚ã%牃‚ã%牃‚ã%牃‚ã%牃‚ã%牃‚ã%牃‚ã%牃‚ã%牃‚ã%牃‚ÿSoSFTriggerinput0SoSFTriggerinput1SoSFTriggerinput2SoSFTriggerinput3SoSFTriggerinput4SoSFTriggerinput5SoSFTriggerinput6SoSFTriggerinput7SoSFTriggerinput8SoSFTriggerinput90 ÙÁ™XÙ& €€‚A€‚ÿOUTPUTSK(٣Ù2 4€2€T”A‚S~‚A€ã%牃‚ÿ(SoSFTrigger)outputX/XÙûÙ) "€^€”‘€‚A€‚ÿTriggered when any of the inputs is touched.0 £Ã™+Ä™& €€‚A€‚ÿMETHODS>ûÙiÄ™, (€$€T”A‚S~‚A€ƒ‚ÿSoTriggerAny()7+Ä™ Ä™) "€€”‘€‚A€‚ÿConstructor<iÄ™ÜÄ™& €,€‚A€‚ÿFILE FORMAT/DEFAULT9 Ä™Å™* $€€P„7|‚€‚ÿTriggerAny {€KÜÄ™•Å™5 :€–€P„|‚€‚‚‚‚‚‚‚‚‚‚‚‚ÿinput0input1input2input3input4input5input6input7input8input9}1 Å™ÆÅ™& €€‚€‚ÿSEE ALSO_$•Å™%Æ™; F€H€”‘€‚ãë\¼N€‰€ã%瀉‚ÿSoEngineOutput, SoSFTrigger7ÆÅ™\Æ™1¯q3L4«\Æ™ŠÆ™ šSoType. %Æ™ŠÆ™% €€ˆˆ€‚ÿSoType*\Æ™´Æ™# €€€‚ÿNAMEQ+ŠÆ™Ç™& €V€”‘€€‚ÿSoType - stores runtime type information3´Æ™8Ç™# € €€‚ÿINHERITS FROM3 Ç™kÇ™) "€€”‘€€€‚ÿSoType2 8ǙǙ& €€€€ ‚ÿSYNOPSISa:kÇ™þÇ™' €t€”‘€€‚‚ÿ#include Methods from class SoType:‡Ç™Ê™Š  T”A‚S~‚A€ƒãúß~6‰‚ãúß~6‰ƒ‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãB-9‰ãL´²÷‰‚㑶p6‰ƒ‚ƒ‚ƒãB-9‰‚ƒãB-9‰‚ÿstatic SoTypefromName(SbName name)SbNamegetName() constSoTypegetParent() conststatic SoTypebadType()SbBoolisBad() constSbBoolisDerivedFrom(SoType t) conststatic intgetAllDerivedFrom(SoType type,SoTypeList &list)SbBoolcanCreateInstance() constvoid *createInstance() constintoperator ==(const SoType t) constintoperator !=(const SoType t) const[)þÇ™jÊ™2 4€R€T”A‚S~‚A€ƒãB-9‰‚ÿintoperator <(const SoType t) const4Ê™žÊ™& €€‚A€‚ÿDESCRIPTIONÕ¥jÊ™sË™0 .€K€”‘€‚A€€€‚ÿThe SoType class keeps track of runtime type information in Open Inventor. Each type is associated with a given name, so lookup is possible in either direction.3žÊ™¦Ì™0 .€€”‘€‚A€€€‚ÿMany Open Inventor classes request a unique SoType when they are initialized. This type can then be used to find out the actual class of an instance when only its base class is known, or to obtain an instance of a particular class given its type or name.ŽesË™4Í™) "€Ê€”‘€‚A€‚ÿNote that the names associated with types of Open Inventor classes do not contain the "So" prefix.0 ¦Ì™dÍ™& €€‚A€‚ÿMETHODSZ(4Í™¾Í™2 4€P€T”A‚S~‚A€ƒãúß~6‰‚ÿstatic SoTypefromName(SbName name)\3dÍ™Ι) "€f€”‘€‚A€‚ÿReturns the type associated with the given name.M¾Í™gΙ2 4€6€T”A‚S~‚Aãúß~6€‰ƒ‚ÿSbNamegetName() constT+Ι»Î™) "€V€”‘€‚A€‚ÿReturns the name associated with a type.OgΙ Ï™2 4€:€T”A‚S~‚AãB-9€‰ƒ‚ÿSoTypegetParent() constQ(»Î™[Ï™) "€P€”‘€‚A€‚ÿReturns the type of the parent class.N Ï™©Ï™2 4€8€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypebadType()h?[Ï™š) "€~€”‘€‚A€‚ÿReturns an always-illegal type. Useful for re©Ï™š%Æ™turning errors.K©Ï™hš2 4€2€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisBad() constS*š»š) "€T€”‘€‚A€‚ÿReturns TRUE if the type is a bad type.c+hšš8 @€V€T”A‚S~‚A㑶p6€‰ƒãB-9‰‚ÿSbBoolisDerivedFrom(SoType t) constd5»š‚š/ .€j€”‘€‚A€€€‚ÿReturns TRUE if the type is derived from type t.{Bšýš9 B€„€T”A‚S~‚A€ƒãB-9‰ãL´²÷‰‚ÿstatic intgetAllDerivedFrom(SoType type,SoTypeList &list)‘h‚šŽš) "€Ð€”‘€‚A€‚ÿAdds all types derived from the given type to the given type list. Returns the number of types added.W%ýšåš2 4€J€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolcanCreateInstance() constöÌŽšÛš* "€™€”‘€‚A€‚ÿSome types are able to create instances; for example, most nodes and engines (those which are not abstract classes) can be created this way. This method returns TRUE if the type supports such creation.L åš'š, (€@€T”A‚S~‚A€ƒ‚ÿvoid *createInstance() const âÛš3š* "€Å€”‘€‚A€‚ÿCreates and returns a pointer to an instance of the type. Returns NULL if an instance could not be created for some reason. The pointer is returned as a generic pointer, but can be cast to the appropriate type. For example:lD'šŸš( €ˆ€Ù€‚A€‚ÿSoCube *c = (SoCube *) SoCube::getClassTypeId().createInstance();+3šÊš( €€Ù€‚A€‚ÿpAŸš:š/ .€‚€”‘€‚A€€€‚ÿis a convoluted way of creating a new instance of an SoCube.ŒRʚƚ: D€¤€T”A‚S~‚A€ƒãB-9‰‚ƒãB-9‰‚ÿintoperator ==(const SoType t) constintoperator !=(const SoType t) constwN:š=š) "€œ€”‘€‚A€‚ÿReturns TRUE if this type is the same as or not the same as the given type.[)Æš˜š2 4€R€T”A‚S~‚A€ƒãB-9‰‚ÿintoperator <(const SoType t) const‹b=š#š) "€Ä€”‘€‚A€‚ÿLess-than comparison operator that can be used to sort types. This is pretty useless otherwise.1 ˜šTš& €€‚A€‚ÿSEE ALSO¹N#š šk ¦€œ€”‘€‚AãïK€‰€ã}9€‰€ãåŒÅe€‰€ãôx—€‰€ã2™|—€‰€ãþ —€‰‚ÿSoAction, SoBase, SoDetail, SoError, SoEvent, SoField; TšH š1» “‚3‚4¬H šz š EšSoTypeList2 šz š% €€ˆˆ€‚ÿSoTypeList*H š¤ š# €€€‚ÿNAMEY-z šý š, (€Z€”‘€€€€‚ÿSoTypeList - maintains a list of SoTypes7¤ š4 š& €"€€€ ‚ÿINHERITS FROMQý š… š5 :€8€”‘€ãK2Å'€‰€€€‚ÿSbPList > SoTypeList2 4 š· š& €€€€ ‚ÿSYNOPSISf?… š š' €~€”‘€€‚‚ÿ#include Methods from class SoTypeList:c· š€ šc ”€€T”A‚S~‚A€ƒ‚ƒ‚ƒãL´²÷‰‚ƒ‚ƒãB-9‰‚ƒãB-9‰‚ƒãB-9‰‚ƒãB-9‰‚ãB-9‰ƒ‚ÿSoTypeList()SoTypeList(int size)SoTypeList(const SoTypeList &l)~SoTypeList()voidappend(SoType type)voidinsert(SoType *type,int addBefore)voidset(int i,SoType *type)intfind(SoType typeId) constSoTypeoperator [](int i) constO  šÏ š/ .€@€”‘€‚A€ãK2Å'‰‚ÿMethods from class SbPList:@é€ ššW |€Ó€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒãK2Å'‰‚ãK2Å'‰ƒãK2Å'‰‚ƒãK2Å'‰‚ƒãK2Å'‰‚ÿvoidremove(int which)intgetLength() constvoidtruncate(int start)voidcopy(const SbPList &pl)SbPList &operator =(const SbPList &pl)intoperator ==(const SbPList &pl) constintoperator !=(const SbPList &pl) const4Ï šCš& €€‚A€‚ÿDESCRIPTION|Gš¿š5 :€Ž€”‘€‚A€€€€€‚ÿThis subclass of SbPList holds lists of SoType type identifiers.0 Cšïš& €€‚A€‚ÿMETHODS<¿š+š, (€ €T”A‚S~‚A€ƒ‚ÿSoTypeList()8ïšcš) "€€”‘€‚A€‚ÿConstructor.D+š§š, (€0€T”A‚S~‚A€ƒ‚ÿSoTypeList(int size)j;cš@š/ .€v€”‘€‚A€€€‚ÿConstructor that pre-allocates storage fo§š@š šr size types.W%§št@š2 4€J€T”A‚S~‚A€ƒãL´²÷‰‚ÿSoTypeList(const SoTypeList &l)a8@šÕ@š) "€p€”‘€‚A€‚ÿConstructor that copies the contents of another list.=t@šAš, (€"€T”A‚S~‚A€ƒ‚ÿ~SoTypeList()7Õ@šIAš) "€€”‘€‚A€‚ÿDestructor.OAš˜Aš2 4€:€T”A‚S~‚A€ƒãB-9‰‚ÿvoidappend(SoType type)O&IAšçAš) "€L€”‘€‚A€‚ÿAdds a type to the end of the list.`-˜AšGBš3 6€Z€T”A‚S~‚A€ƒãB-9‰‚ÿvoidinsert(SoType *type,int addBefore)d;çAš«Bš) "€v€”‘€‚A€‚ÿInserts given type in list before type with given index.U"GBšCš3 6€D€T”A‚S~‚A€ƒãB-9‰‚ÿvoidset(int i,SoType *type)F«BšFCš) "€:€”‘€‚A€‚ÿSets an element of a list.T"CššCš2 4€D€T”A‚S~‚A€ƒãB-9‰‚ÿintfind(SoType typeId) constd;FCšþCš) "€v€”‘€‚A€‚ÿReturns index of given type in list, or -1 if not found.V$šCšTDš2 4€H€T”A‚S~‚AãB-9€‰ƒ‚ÿSoTypeoperator [](int i) constJ!þCšžDš) "€B€”‘€‚A€‚ÿAccesses an element of a list.1 TDšÏDš& €€‚A€‚ÿSEE ALSO: žDš Eš/ .€€”‘€‚AãB-9€‰‚ÿSoType8ÏDšAEš1ÎL4}­AEšpEšàˆšSoUnits/ EšpEš% €€ˆˆ€‚ÿSoUnits*AEššEš# €€€‚ÿNAME^8pEšøEš& €p€”‘€€‚ÿSoUnits - node that scales to convert units of length3šEš+Fš# € €€‚ÿINHERITS FROM¬SøEš×FšY ‚€¦€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã¥W7ž€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoTransformation > SoUnits2 +Fš Gš& €€€€ ‚ÿSYNOPSISL&×FšUGš& €L€”‘€€‚ÿ#include L Gš¡Hš< F€!€T”A‚S~‚A€ƒ‚ÿenum Units{SoUnits::METERSSoUnits::CENTIMETERSSoUnits::MILLIMETERSSoUnits::MICROMETERSSoUnits::MICRONSSoUnits::NANOMETERSSoUnits::ANGSTROMSSoUnits::KILOMETERSSoUnits::FEETSoUnits::INCHESSoUnits::POINTSSoUnits::YARDSSoUnits::MILESSoUnits::NAUTICAL_MILES}FUGšçHš) "€:€”‘€‚A€‚ÿFields from class SoUnits:E¡Hš,Iš2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumunitsGçHšsIš) "€<€”‘€‚A€‚ÿMethods from class SoUnits:b.,IšÕIš4 8€\€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoUnits()static SoTypegetClassTypeId()NsIš#Jš/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÕIšŸKšn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)#Jš÷Kš/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØŸKš\Nš 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH÷KšäNš@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N\Nš2Oš/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞäNšu€šY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolis2Ošu€š EšOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const42Oš©€š& €€‚A€‚ÿDESCRIPTION¢Zu€šKƒšH ^€µ€”‘€‚A€€€€€€€€€€€‚ÿThis node defines a uniform 3D scale about the origin relative to the previously defined units. The default units for all data are meters. Adding a units node with the value INCHES will have the same effect as adding an SoScale node with the scaleFactor of (.0254, .0254, .0254). Any subsequent SoUnits node will take the previous units into account. When building a composite object out of a bunch of pieces, it would be a good practice to add an SoUnits node at the beginning of each of the pieces, under an SoSeparator node, to make sure all the pieces fit together with the same scale./ ©€šzƒš& €€‚A€‚ÿFIELDSEKƒš¿ƒš2 4€&€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumunitsEzƒš„š) "€8€”‘€‚A€‚ÿDefines the current unit.0 ¿ƒš4„š& €€‚A€‚ÿMETHODS9 „šm„š, (€€T”A‚S~‚A€ƒ‚ÿSoUnits()a84„šÎ„š) "€p€”‘€‚A€‚ÿCreates a unit conversion node with default settings.U#m„š#…š2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*΄šv…š) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8#…š®…š& €$€‚A€‚ÿACTION BEHAVIOR›Wv…šI†šD X€®€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉€‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction°ƒ®…šù†š- (€€”‘€‚A€€‚ÿAccumulates the scale that is the ratio of the size from the previous unit to the current unit into the current transformation.II†šB‡š2 4€.€”‘€‚Aã¹_ØS€‰€‚ÿSoGetMatrixActionf:ù†š¨‡š, (€t€”‘€‚A€€‚ÿReturns the matrix corresponding to the units scaling.<B‡šä‡š& €,€‚A€‚ÿFILE FORMAT/DEFAULT4 ¨‡šˆš* $€€P„7|‚€‚ÿUnits {?䇚Wˆš- *€$€P„|‚€ƒ‚‚‚ÿunitsMETERS}1 ˆšˆˆš& €€‚€‚ÿSEE ALSOXWˆšàˆš; F€:€”‘€‚ã®Ä?š€‰€ã¼ýÓ€‰‚ÿSoScale, SoTransform= ˆˆš‰š1ø1y‰ó„6®‰šQ‰šÏI›SoVRMLAnchor4àˆšQ‰š% €€ˆˆ€‚ÿSoVRMLAnchor*‰š{‰š# €€€‚ÿNAMEU/Q‰šÐ‰š& €^€”‘€€‚ÿSoVRMLAnchor - group node with URL hyperlink3{‰šŠš# € €€‚ÿINHERITS FROMåtЉšèŠšq ²€è€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãy­î€‰€ã”„'€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoVRMLParent > SoVRMLGroup > SoVRMLAnchor. Šš‹š# €€€‚ÿSYNOPSISvO芚Œ‹š' €ž€”‘€€‚‚ÿ#include Fields from class SoVRMLAnchor:Áo‹šMŒšR t€Þ€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ÿSoSFStringdescriptionSoMFStringparameterSoMFStringurlSoSFVec3fbboxCenterSoSFVec3fbboxSizeS$Œ‹š Œš/ .€H€”‘€‚A€ãy­ÿFields from class SoVRMLParent:HMŒšèŒš2 4€,€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodechildrenL# Œš4š) "€F€”‘€‚A€‚ÿMethods from class SoVRMLAnchor:Æ茚BŽšH ^€€T”A‚S~‚A€ƒ‚ƒãXíʉ‚ãXíʉƒ‚ƒ‚ãB-9‰ƒ‚ÿSoVRMLAnchor()voidsetFullURLName(const SbString &name)const SbString &getFullURLName()static voidsetFetchURLCallBack(SoVRMLAnchorCB *f,void *userData)static SoTypegetClassTypeId()T%4š–Žš/ .€J€”‘€‚A€ãy­ÿMethods from class SoVRMLParent:õƒBŽš—Àšr ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *c–Žš—Àšàˆšhild)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)N–ŽšåÀš/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|—Àšašn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)åÀš¹Âš/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØašÅš 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¹Âš¦Åš@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÅšôÅš/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ަŚ+ÇšY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ôÅš_Çš& €€‚A€‚ÿDESCRIPTION~T+ÇšÝÈš* "€©€”‘€‚A€‚ÿThis node defines a separator group which has a URL (Universal Resource Locator) hyperlink. When clicked on, this node invokes an application callback to fetch the URL. The application may fetch the data itself, or call a World Wide Web browser like the HTML-based Netscape Navigator or the VRML-based WebSpace Navigator to load the URL.?_ǚɚ& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&ÝÈšoÊš- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ÉšNËš0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org. ÌoÊšYÍš? L€™€”‘€‚A€€€€€€€€ ‚ÿThe SoVRMLAnchor grouping node causes a URL to be fetched over the network when the viewer activates (e.g. clicks) some geometry contained within the SoVRMLAnchor's children. If the URL pointed to is a legal VRML world, then that world replaces the world which the SoVRMLAnchor is a part of. If non-VRML data type is fetched, it is up to the browser to determine how to handle that data; typically, it will be passed to an appropriate general viewer.ÝNËšrÏš< F€»€”‘€‚A€€€€€€€‚ÿExactly how a user activates a child of the SoVRMLAnchor depends on the pointing device and is determined by the VRML browser. Typically, clicking with the pointing device will result in the new scene replacing the current scene. An SoVRMLAnchor with an empty ("") url does nothing when its children are chosen. See "Concepts - Sensors and Pointing Device Sensors" for a description of how multiple SoVRMLAnchors and pointing device sensors are resolved on activation.Ñ•YÍšO›< F€+€”‘€‚A€€€€€€€‚ÿSee the "Concepts - Grouping and Children Nodes" section for a description of chrÏšO›àˆšildren, addChildren, and removeChildren fields and eventIns.IrÏš˜›B R€€”‘€‚A€€€€€€€€€‚ÿThe description field in the SoVRMLAnchor allows for a prompt to be displayed as an alternative to the URL in the url field. Ideally, browsers will allow the user to choose the description, the URL, or both to be displayed for a candidate SoVRMLAnchor.YO›'›6 :€³€”‘€‚A€€€€€‚ÿThe parameter exposed field may be used to supply any additional information to be interpreted by the VRML or HTML browser. Each string should consist of "keyword=value" pairs. For example, some browsers allow the specification of a 'target' for a link, to display a link in another part of the HTML document; the parameter field is then:k@˜›’›+ &€€€Ù€‚A€‚ÿSoVRMLAnchor { parameter [ "target=name_of_frame" ] ...}+'›½›( €€Ù€‚A€‚ÿÿÏ’›¼›0 .€Ÿ€”‘€‚A€€€‚ÿAn SoVRMLAnchor may be used to bind the initial Viewpoint in a world by specifying a URL ending with "#ViewpointName", where "ViewpointName" is the name of a viewpoint defined in the file. For example: žs½›Z›+ &€æ€Ù€‚A€‚ÿSoVRMLAnchor { url "http://www.school.edu/vrml/someScene.wrl#OverView" children Shape { geometry Box {} }}+¼›…›( €€Ù€‚A€‚ÿ¾ˆZ›C›6 :€€”‘€‚A€€€€€‚ÿspecifies an anchor that loads the file "someScene.wrl", and binds the initial user view to the SoVRMLViewpoint named "OverView" (when the Box is activated). If the named Viewpoint is not found in the file, then ignore it and load the file with the default Viewpoint. If no world is specified, then this means that the Viewpoint specified should be bound (set_bind TRUE). For example: wL…›º›+ &€˜€Ù€‚A€‚ÿSoVRMLAnchor { url "#Doorway" children Shape { geometry Sphere {} }}+C›å›( €€Ù€‚A€‚ÿ캛ћ* "€…€”‘€‚A€‚ÿbinds viewer to the viewpoint defined by the "Doorway" viewpoint in the current world when the sphere is activated. In this case, if the Viewpoint is not found, then do nothing on activation.uFå›F ›/ .€Œ€”‘€‚A€€€‚ÿSee "Concepts - URLS and URNs" for more details on the url field.Z Ñ›  ›N j€€”‘€‚A€€€€€€€€€€€€€‚ÿThe bboxCenter and bboxSize fields specify a bounding box that encloses the SoVRMLAnchor's children. This is a hint that may be used for optimization purposes. If the specified bounding box is smaller than the actual bounding box of the children at any time, then the results are undefined. A default bboxSize value, (-1 -1 -1), implies that the bounding box is not specified and if needed must be calculated by the browser. See "Concepts - Bounding Boxes" for a description of bboxCenter and bboxSize fields./ F ›Ï ›& €€‚A€‚ÿFIELDSD  › ›) "€6€”‘€‚A€‚ÿFields from SoVRMLAnchorMÏ ›` ›2 4€6€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringdescription¡x › ›) "€ð€”‘€‚A€‚ÿA description of the URL which may make more sense to users than the URL itself (e.g. "The Open Inventor Home Page").K` ›L ›2 4€2€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringparameter« ›÷ ›* "€€”‘€‚A€‚ÿUsed to supply any additional information to be interpreted by the application. Each string consists of "keyword=value" pairs.EL ›<›2 4€&€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringurlÆœ÷ ››* "€9€”‘€‚A€‚ÿURL which the application will be called back to fetch when this node is activated by a left mouse click (e.g. "http://www.sgi.com/Technology/Inventor").h.<›j›: D€\€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fbboxCenterSoSFVec3fbboxSizeŃ›;A›B R€€”‘€‚A€€€€€€€€€‚ÿThe bboxCenter and bboxSize fields specify a bounding box that encloses the Soj›;A›àˆšVRMLAnchor's children. This is a hint that may be used for optimization purposes. If the specified bounding box is smaller than the actual bounding box of the children at any time, then the results are undefined. A default bboxSize value, (-1 -1 -1), implies that the bounding box is not specified.0 j›kA›& €€‚A€‚ÿMETHODS>;A›©A›, (€$€T”A‚S~‚A€ƒ‚ÿSoVRMLAnchor()\3kA›B›) "€f€”‘€‚A€‚ÿCreates a VRMLAnchor node with default settings.ŒR©A›‘B›: D€¤€T”A‚S~‚A€ƒãXíʉ‚ãXíʉƒ‚ÿvoidsetFullURLName(const SbString &name)const SbString &getFullURLName()‰MB›D›< F€›€”‘€‚A€€€€€€€‚ÿIf the url field contains a relative URL (e.g. "foo.wrl" instead of "http://bogus.com/foo.wrl"), the anchor cannot resolve the URL reference. This method allows the application to tell the anchor what its full URL should be. getFullURLName returns the full URL set here, or if not set, returns the contents of the url field.rE‘B›ŒD›- *€Š€T”A‚S~‚A€ƒ‚ÿstatic voidsetFetchURLCallBack(SoVRMLAnchorCB *f,void *userData)ÈžD›TE›* "€=€”‘€‚A€‚ÿApplication callbacks invoked when the mouse is clicked on an anchor (activate) so that the app can fetch the URL or call Netscape/Mosaic to fetch the URL.U#ŒD›©E›2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*TE›üE›) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ©E›+F›& €€‚A€‚ÿEVENTS3 üE›^F›) "€€”‘€‚A€‚ÿeventInó˜+F›QG›[ „€1€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ã÷]Ï´‰ƒ‚ã÷]Ï´‰ƒ‚ãü”ŒÔ‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ÿSoMFNodeaddChildrenSoMFNoderemoveChildrenSoMFNodeset_childrenSoSFStringset_descriptionSoMFStringset_parameterSoMFStringset_url4 ^F›…G›) "€€”‘€‚A€‚ÿeventOutÁwQG›FH›J d€î€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ãü”ŒÔ‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ÿSoMFNodechildren_changedSoSFStringdescription_changedSoMFStringparameter_changedSoMFStringurl_changed8…G›~H›& €$€‚A€‚ÿACTION BEHAVIORKFH›ÉH›2 4€2€”‘€‚Aãàꀉ€‚ÿSoHandleEventActionA~H› I›) "€0€‚A€€ ‚ÿFILE FORMAT/DEFAULTS9ÉH›CI›* $€€P„7|‚€‚ÿVRMLAnchor {ŒV I›ÏI›6 <€¬€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿchildren[]description""parameter[]url[]bboxCenter0 0 0bboxSize-1 -1 -1}ACI›J›1ñÓ5]7¯J›HJ›ÛSoVRMLAppearance8ÏI›HJ›% €&€ˆˆ€‚ÿSoVRMLAppearance*J›rJ›# €€€‚ÿNAMEf@HJ›ØJ›& €€€”‘€€‚ÿSoVRMLAppearance - specifies a material node and texture node3rJ› K›# € €€‚ÿINHERITS FROM’EØJ›K›M j€Š€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLAppearance. K›ËK›# €€€‚ÿSYNOPSIS~WK›IL›' €®€”‘€€‚‚ÿ#include Fields from class SoVRMLAppearance:‡EËK›ÐL›B T€Š€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ãYdb鉃‚ÿSoSFNodematerialSoSFNodetextureSoSFNodetextureTransformP'IL› M›) "€N€”‘€‚A€‚ÿMethods from class SoVRMLAppearance:k7ÐL›‹M›4 8€n€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLAppearance()static SoTypegetClassTypeId()N M›ÙM›/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|‹M›UO›n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÙM›­O›/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØUO›‚› 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ã‘­O›‚›ÏI›¶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH­O›¦‚›@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N‚›ô‚›/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¦‚›+„›Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ô‚›_„›& €€‚A€‚ÿDESCRIPTION6+„›•…›0 .€ €”‘€‚A€€€‚ÿThe SoVRMLAppearance node specifies the visual properties of geometry by defining the material and texture nodes. The value for each of the fields in this node can be NULL. However, if the field is non-NULL, it must contain one node of the appropriate type.?_„›Ô…›& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&•…›'‡›- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ԅ›ˆ›0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.:'‡›@‰›3 4€€”‘€‚A€€€€ ‚ÿThe SoVRMLAppearance node specifies the visual properties of geometry by defining the material and texture nodes. The value for each of the fields in this node can be NULL. However, if the field is non-NULL, it must contain one node of the appropriate type./ ˆ›o‰›& €€‚A€‚ÿFIELDSH@‰›·‰›2 4€,€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodematerialUo‰›T‹›H ^€«€”‘€‚A€€€€€€€€€€€‚ÿThe material field, if specified, must contain an SoVRMLMaterial node. If the material field is NULL or unspecified, lighting is off (all lights are ignored during rendering of the object that references this SoVRMLAppearance node) and the unlit object color is (0, 0, 0). See SoVRMLLight for details of the VRML lighting model.G·‰››‹›2 4€*€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodetexture[T‹›öŒ›H ^€'€”‘€‚A€€€€€€€€€€€‚ÿThe texture field, if specified, must contain one of the various types of texture nodes (SoVRMLImageTexture, SoVRMLMovieTexture, or SoVRMLPixelTexture). If the texture node is NULL or unspecified, the object that references this SoVRMLAppearance is not textured.P›‹›F›2 4€<€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodetextureTransform5íöŒ›{Ž›H ^€Û€”‘€‚A€€€€€€€€€€€‚ÿThe textureTransform field, if specified, must contain an SoVRMLTextureTransform node. If the texture field is NULL or unspecified, or if the textureTransform is NULL or unspecified, the textureTransform field has no effect.0 F›«Ž›& €€‚A€‚ÿMETHODSB{Ž›íŽ›, (€,€T”A‚S~‚A€ƒ‚ÿSoVRMLAppearance()8«Ž›%›) "€€”‘€‚A€‚ÿConstructor.U#펛z›2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*%›Í›) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ z› À›& €€‚A€‚ÿEVENTSÍ› À›ÏI›3 Í›?À›) "€€”‘€‚A€‚ÿeventIn“Q À›ÒÀ›B T€¢€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ãYdb鉃‚ÿSoSFNodeset_materialSoSFNodeset_textureSoSFNodeset_textureTransform4 ?À›Á›) "€€”‘€‚A€‚ÿeventOutŸ]ÒÀ›¥Á›B T€º€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ãYdb鉃‚ÿSoSFNodematerial_changedSoSFNodetexture_changedSoSFNodetextureTransform_changed8Á›ÝÁ›& €$€‚A€‚ÿACTION BEHAVIOR^)¥Á›;›5 :€R€”‘€‚Aã©öø(€‰ã³DfL‰‚ÿSoGLRenderAction, SoCallbackAction=ÝÁ›x›& €.€‚A€‚ÿFILE FORMAT/DEFAULTS=;›µÂ›* $€&€P„7|‚€‚ÿVRMLAppearance {e5x›Û0 0€j€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿmaterialNULLtextureNULLtextureTransformNULL}@µÂ›ZÛ1–%ó„6„8°Z۳ÛÜHœSoVRMLAudioClipY-۳Û, (€Z€ˆˆ€€€‚ÿSoVRMLAudioClip(ACTION NOT IMPLEMENTED)*ZÛÝÛ# €€€‚ÿNAMEJ$³Ã›'Ä›& €H€”‘€€‚ÿSoVRMLAudioClip - audio data node3ÝÛZÄ›# € €€‚ÿINHERITS FROM‘D'Ä›ëÄ›M j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLAudioClip. Zěś# €€€‚ÿSYNOPSIS|UëÄ›•Å›' €ª€”‘€€‚‚ÿ#include Fields from class SoVRMLAudioClip:ÑwÅ›fÆ›Z „€î€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ãøi鉃‚ãøi鉃‚ã*{£‰ƒ‚ÿSoSFStringdescriptionSoSFBoolloopSoSFFloatpitchSoSFTimestartTimeSoSFTimestopTimeSoMFStringurlO&•Å›µÆ›) "€L€”‘€‚A€‚ÿMethods from class SoVRMLAudioClip:j6fƛǛ4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLAudioClip()static SoTypegetClassTypeId()NµÆ›mÇ›/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Ç›éÈ›n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)mÇ›AÉ›/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØéÈ›¦Ë› 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHAÉ›.Ì›@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¦Ë›|Ì›/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ.Ì›³Í›Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4|Ì›çÍ›& €€‚A€‚ÿDESCRIPTION¤u³Í›‹Î›/ .€ê€”‘€‚A€€€‚ÿAn SoVRMLAudioClip node specifies audio data that can be referenced by other nodes that require an audio source.?çÍ›ÊΛ& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&‹Î›)œ- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of ÊΛ)œÛthe application behaviors.߯ÊΛœ0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.¨v)œ°œ2 4€ì€”‘€‚A€€€€ ‚ÿAn SoVRMLAudioClip node specifies audio data that can be referenced by other nodes that require an audio source.Îœ´œ6 :€€”‘€‚A€€€€€‚ÿThe description field is a textual description of the audio source. A browser is not required to display the description field but may choose to do so in addition to or in place of playing the sound.È°œ¸œ< F€‘€”‘€‚A€€€€€€€‚ÿThe url field specifies the URL from which the sound is loaded. Browsers shall support at least the wavefile format in uncompressed PCM format. It is recommended that browsers also support the MIDI file type 1 sound format. MIDI files are presumed to use the General MIDI patch set. See the section on URLs and URNs in "Concepts - URLs and URNs" for details on the url field. Results are not defined when the URL references unsupported data types.¡M´œYœT v€›€”‘€‚A€€€€€€€€€€€€€€€‚ÿThe loop, startTime, and stopTime exposedFields and the isActive eventOut, and their effects on the SoVRMLAudioClip node, are discussed in detail in the "Concepts - Time Dependent Nodes" section. The "cycle" of an SoVRMLAudioClip is the length of time in seconds for one playing of the audio at the specified pitch. Ía¸œ& œl ¦€Ã€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€‚ÿThe pitch field specifies a multiplier for the rate at which sampled sound is played. Only positive values are valid for pitch (a value of zero or less will produce undefined results). Changing the pitch field affects both the pitch and playback speed of a sound. A set_pitch event to an active SoVRMLAudioClip is ignored (and no pitch_changed eventOut is generated). If pitch is set to 2.0, the sound should be played one octave higher than normal and played twice as fast. For a sampled sound, the pitch field alters the sampling rate at which the sound is played. The proper implementation of the pitch control for MIDI (or other note sequence sound clip) is to multiply the tempo of the playback by the pitch value and adjust the MIDI Coarse Tune and Fine Tune controls to achieve the proper pitch change. The pitch field must be > 0.0.r*Yœ˜ œH ^€U€”‘€‚A€€€€€€€€€€€‚ÿA duration_changed event is sent whenever there is a new value for the "normal" duration of the clip. Typically this will only occur when the current url in use changes and the sound data has been loaded, indicating that the clip is playing a different sound source. The duration is the length of time in seconds for one cycle of the audio for a pitch set to 1.0. Changing the pitch field will not trigger a duration_changed event. A duration value of -1 implies the sound data has not yet loaded or the value is unavailable for some reason.B & œÚ œ6 :€€”‘€‚A€€€€€‚ÿThe isActive eventOut can be used by other nodes to determine if the clip is currently active. If an SoVRMLAudioClip is active, then it should be playing the sound corresponding to the sound time (i.e., in the sound's local time system with sample 0 at time 0):Z2˜ œ4œ( €d€Ù€‚A€‚ÿ fmod (now - startTime, duration / pitch).+Ú œ_œ( €€Ù€‚A€‚ÿ/ 4œŽœ& €€‚A€‚ÿFIELDSM_œÛœ2 4€6€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringdescriptionT+Žœ/œ) "€V€”‘€‚A€‚ÿTextual description of the audio source.DÛœsœ2 4€$€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolloopã/œ’@œ0 .€Ç€”‘€‚A€€€‚ÿControls whether the sound continues when it reaches the end of a sound cycle as defined in sœ’@œÛthe audio file. If loop is FALSE at the end of a cycle, execution is terminated. If TRUE, the sound continues into the next cycle.FsœØ@œ2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatpitche<’@œ=Aœ) "€x€”‘€‚A€‚ÿMultiplier for the rate at which sampled sound is played.IØ@œ†Aœ2 4€.€T”A‚S~‚Aãøi选ƒ‚ÿSoSFTimestartTimeL#=AœÒAœ) "€F€”‘€‚A€‚ÿThe starting time for the sound.H†AœBœ2 4€,€T”A‚S~‚Aãøi选ƒ‚ÿSoSFTimestopTimeÄÒAœ2CœT v€‰€”‘€‚A€€€€€€€€€€€€€€€‚ÿThe stopping time for the sound. An SoVRMLAudioClip node with loop TRUE at the end of every cycle continues forever if startTime>=stopTime or until stopTime if stopTime>startTime.EBœwCœ2 4€&€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringurl]42CœÔCœ) "€h€”‘€‚A€‚ÿSpecifies the URL from which the sound is loaded.0 wCœDœ& €€‚A€‚ÿMETHODSAÔCœEDœ, (€*€T”A‚S~‚A€ƒ‚ÿSoVRMLAudioClip()8Dœ}Dœ) "€€”‘€‚A€‚ÿConstructor.U#EDœÒDœ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*}Dœ%Eœ) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ÒDœTEœ& €€‚A€‚ÿEVENTS3 %Eœ‡Eœ) "€€”‘€‚A€‚ÿeventInêTEœqFœ[ „€€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ãøi鉃‚ãøi鉃‚ã*{£‰ƒ‚ÿSoSFStringset_descriptionSoSFBoolset_loopSoSFFloatset_pitchSoSFTimeset_startTimeSoSFTimeset_stopTimeSoMFStringset_url4 ‡Eœ¥Fœ) "€€”‘€‚A€‚ÿeventOutB×qFœçGœk ¤€¯€T”A‚S~‚Aãøi选ƒ‚ãU×S鉃‚ãü”ŒÔ‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ãøi鉃‚ãøi鉃‚ã*{£‰ƒ‚ÿSoSFTimeduration_changedSoSFBoolisActiveSoSFStringdescription_changedSoSFBoolloop_changedSoSFFloatpitch_changedSoSFTimestartTime_changedSoSFTimestopTime_changedSoMFStringurl_changed=¥Fœ$Hœ& €.€‚A€‚ÿFILE FORMAT/DEFAULTS<çGœ`Hœ* $€$€P„7|‚€‚ÿVRMLAudioClip {|F$HœÜHœ6 <€Œ€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿdescription""loopFALSEpitch1.0startTime0stopTime0url[]}A`HœIœ1Ë@]7û:±IœwIœDSoVRMLBackgroundZ.ÜHœwIœ, (€\€ˆˆ€€€‚ÿSoVRMLBackground(ACTION NOT IMPLEMENTED)*Iœ¡Iœ# €€€‚ÿNAMEO)wIœðIœ& €R€”‘€€‚ÿSoVRMLBackground - color backdrop node3¡Iœ#Jœ# € €€‚ÿINHERITS FROM’EðIœµJœM j€Š€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLBackground. #JœãJœ# €€€‚ÿSYNOPSIS~WµJœaKœ' €®€”‘€€‚‚ÿ#include Fields from class SoVRMLBackground:XÝãJœ¹Lœ{ Ä€»€T”A‚S~‚Aã'0]€‰ƒ‚ãz.—\‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã'0]‰ƒ‚ãz.—\‰ƒ‚ÿSoMFFloatgroundAngleSoMFColorgroundColorSoMFStringbackUrlSoMFStringbottomUrlSoMFStringfrontUrlSoMFStringleftUrlSoMFStringrightUrlSoMFStringtopUrlSoMFFloatskyAngleSoMFColorskyColorP'aKœ Mœ) "€N€”‘€‚A€‚ÿMethods from class SoVRMLBackground:k7¹LœtMœ4 8€n€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLBackground()static SoTypegetClassTypeId()N MœÂMœ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|tMœ>Oœn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÂMœ–Oœ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ>Oœ‚œ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ã–Oœ‚œÜHœþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH–Oœ‚œ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N‚œÝ‚œ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ‚œ„œY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Ý‚œH„œ& €€‚A€‚ÿDESCRIPTION¦j„œî…œ< F€Õ€”‘€‚A€€€€€€€‚ÿThe SoVRMLBackground node is used to specify a color backdrop that simulates ground and sky, as well as a background texture, or panorama, that is placed behind all geometry in the scene and in front of the ground and sky. SoVRMLBackground nodes are specified in the local coordinate system and are affected by the accumulated rotation of their parents.?H„œ-†œ& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&î…œ€‡œ- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯-†œ_ˆœ0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.¶w€‡œŠœ? L€ï€”‘€‚A€€€€€€€€ ‚ÿThe SoVRMLBackground node is used to specify a color backdrop that simulates ground and sky, as well as a background texture, or panorama, that is placed behind all geometry in the scene and in front of the ground and sky. SoVRMLBackground nodes are specified in the local coordinate system and are affected by the accumulated rotation of their parents (see below).Òu_ˆœçŒœ] ˆ€ë€”‘€‚A€€€€€€€€€€€€€€€€€€‚ÿSoVRMLBackground nodes are bindable nodes (see "Concepts - Bindable Children Nodes"). There exists an SoVRMLBackground stack, in which the top-most SoVRMLBackground on the stack is the currently active SoVRMLBackground and thus applied to the view. To move an SoVRMLBackground to the top of the stack, a TRUE value is sent to the set_bind eventIn. Once active, the SoVRMLBackground is then bound to the browsers view. A FALSE value of set_bind, removes the SoVRMLBackground from the stack and unbinds it from the browser viewer. See "Concepts - Bindable Children Nodes" for more details on the the bind stack.Ù©ŠœÀœ0 .€S€”‘€‚A€€€‚ÿThe ground and sky backdrop is conceptually a partial sphere (i.e. ground) enclosed inside of a full sphere (i.e. sky) in the local coordinate system, with the viewer placed at the center of the spheres. Both spheres have infinite radius (epsilon apart), and each is painted with concentric circles of interpolated color perpendicular to the local Y axis of the sphere. The SoVRMLBackground node is subject to the accumulated rotations of its parent transformations - scaling and translation transformations are ignored. The sky sphere is always slightly farther away from the viewer than the ground sphere - the ground appears in front of the sky in cases where they overlap.#·猜ïÃœl ¦€o€”‘€‚A€€€€€€€€€ÀœïÃœÜHœ€€€€€€€€€€€€€€‚ÿThe skyColor field specifies the color of the sky at the various angles on the sky sphere. The first value of the skyColor field specifies the color of the sky at 0.0 degrees, the north pole (i.e. straight up from the viewer). The skyAngle field specifies the angles from the north pole in which concentric circles of color appear - the north pole of the sphere is implicitly defined to be 0.0 degrees, the natural horizon at pi/2 radians, and the south pole is pi radians. skyAngle is restricted to increasing values in the range 0.0 to pi. There must be one more skyColor value than there are skyAngle values - the first color value is the color at the north pole, which is not specified in the skyAngle field. If the last skyAngle is less than pi, then the color band between the last skyAngle and the south pole is clamped to the last skyColor. The sky color is linearly interpolated between the specified skyColor values.åyÀœÔÇœl ¦€ó€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€‚ÿThe groundColor field specifies the color of the ground at the various angles on the ground sphere. The first value of the groundColor field specifies the color of the ground at 0.0 degrees, the south pole (i.e. straight down). The groundAngle field specifies the angles from the south pole that the concentric circles of color appear - the south pole of the sphere is implicitly defined at 0.0 degrees. groundAngle is restricted to increasing values in the range 0.0 to pi. There must be one more groundColor values than there are groundAngle values - the first color value is for the south pole which is not specified in the groundAngle field. If the last groundAngle is less than pi (it usually is), then the region between the last groundAngle and the north pole is invisible. The ground color is linearly interpolated between the specified groundColor values.¯aïÃœƒÌœN j€Ã€”‘€‚A€€€€€€€€€€€€€‚ÿThe backUrl, bottomUrl, frontUrl, leftUrl, rightUrl, and topUrl fields specify a set of images that define a background panorama, between the ground/sky backdrop and the world's geometry. The panorama consists of six images, each of which is mapped onto the faces of an infinitely large cube centered in the local coordinate system. The images are applied individually to each face of the cube; the entire image goes on each face. On the front, back, right, and left faces of the cube, when viewed from the inside with the Y-axis up, the texture is mapped onto each face with the same orientation as the if image was displayed normally in 2D. On the top face of the cube, when viewed from the inside looking up along the +Y axis with the +Z axis as the view up direction, the texture is mapped onto the face with the same orientation as the if image was displayed normally in 2D. On the bottom face of the box, when viewed from the inside down the -Y axis with the -Z axis as the view up direction, the texture is mapped onto the face with the same orientation as the if image was displayed normally in 2D.á™ÔÇœpH ^€3€”‘€‚A€€€€€€€€€€€‚ÿAlpha values in the panorama images (i.e. two or four component images) specify that the panorama is semi-transparent or transparent in regions, allowing the groundColor and skyColor to be visible. One component images are displayed in grayscale; two component images are displayed in grayscale with alpha transparency; three component images are displayed in full RGB color; four component images are displayed in full RGB color with alpha transparency. Often, the bottomUrl and topUrl images will not be specified, to allow sky and ground to show. The other four images may depict surrounding mountains or other distant scenery. Browsers are required to support the JPEG and PNG image file formats, and in addition, may support any other image formats. Support for the GIF format (including transparent backgroƒÌœpÜHœunds) is recommended. See the section "Concepts - URLS and URNs" for details on the url fields. 5ƒÌœ¥1 2€ € ŒŒ‚A€ †"€-‚ÿÕ«pz* "€W€”‘€‚A€‚ÿPanorama images may be one component (grayscale), two component (grayscale plus alpha), three component (full RGB color), or four-component (full RGB color plus alpha).‰_¥* "€¿€”‘€‚A€‚ÿGround colors, sky colors, and panoramic images do not translate with respect to the viewer, though they do rotate with respect to the viewer. That is, the viewer can never get any closer to the background, but can turn to examine all sides of the panorama cube, and can look up and down to see the concentric rings of ground and sky (if visible). æ•zéQ p€+€”‘€‚A€€€€€€€€€€€€€€‚ÿSoVRMLBackground is not affected by SoVRMLFog. Therefore, if an SoVRMLBackground is active (i.e bound) while an SoVRMLFog is active, then the SoVRMLBackground will be displayed with no fogging effects. It is the author's responsibility to set the SoVRMLBackground values to match the SoVRMLFog (e.g. ground colors fade to fog color with distance and panorama images tinted with fog color).î¸×6 :€q€”‘€‚A€€€€€‚ÿThe first SoVRMLBackground node found during reading of the world is automatically bound (receives set_bind TRUE) and is used as the initial background when the world is loaded./ é& €€‚A€‚ÿFIELDSL×R2 4€4€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatgroundAngleР"0 .€A€”‘€‚A€€€‚ÿSpecifies the angles from the south pole in which the concentric circles of color appear. The south pole is 0.0 degrees. groundAngle ranges from 0.0 to pi.LRn2 4€4€T”A‚S~‚Aãz.—\€‰ƒ‚ÿSoMFColorgroundColor?"ïB R€€”‘€‚A€€€€€€€€€‚ÿSpecifies the color of the ground at the various angle on the ground sphere. The first value of groundColor specifies the color of the ground at 0.0 degrees. There must be one more goundColor value than there are groundAngle values. The first color is for 0.0 which is not specified in the groundAngle field.ÞƒnÍ [ „€€T”A‚S~‚Aã*{£€‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ÿSoMFStringbackUrlSoMFStringbottomUrlSoMFStringfrontUrlSoMFStringleftUrlSoMFStringrightUrlSoMFStringtopUrl1ïþ * "€€”‘€‚A€‚ÿSpecify a set of images that define a background panorama between the ground/sky backdrop and the world's geometry. The panorama consists of six images, each of which is mapped onto the faces of an infinitely large cube centered in the local coordinate system.IÍ G 2 4€.€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatskyAngleæ¼þ - * "€y€”‘€‚A€‚ÿSpecifies the angles from the north pole in which concentric circles of color appear. The north pole is 0.0 degrees, the natural horizon pi/2 radians, and the south pole is pi radians. IG v 2 4€.€T”A‚S~‚Aãz.—\€‰ƒ‚ÿSoMFColorskyColor…I- û < F€“€”‘€‚A€€€€€€€‚ÿSpecifies the color of the sky at the various angles on the sky sphere. The first value specifies the color of the sky at 0.0 degrees, the north pole. There must be one more skyColor value than there are skyAngle values. The first color value is the color at the north pole, which is not specified in the skyAngle field.0 v +& €€‚A€‚ÿMETHODSBû m, (€,€T”A‚S~‚A€ƒ‚ÿSoVRMLBackground()8+¥) "€€”‘€‚A€‚ÿConstructor.U#mú2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¥M) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ú|& €€‚A€‚ÿEVENTS3 M¯) "€€”‘€‚A€‚ÿeventInœ|WAƒ Ô€3€T”A‚S~‚AãU×S选ƒ‚ã'0]‰ƒ‚ãz.—\‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ¯WAÜHœ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã'0]‰ƒ‚ãz.—\‰ƒ‚ÿSoSFBoolset_bindSoMFFloatset_groundAngleSoMFColorset_groundColorSoMFStringset_backUrlSoMFStringset_bottomUrlSoMFStringset_frontUrlSoMFStringset_leftUrlSoMFStringset_rightUrlSoMFStringset_topUrlSoMFFloatset_skyAngleSoMFColorset_skyColor4 ¯‹A) "€€”‘€‚A€‚ÿeventOutÃ@WANCƒ Ô€€T”A‚S~‚AãU×S选ƒ‚ã'0]‰ƒ‚ãz.—\‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã*{£‰ƒ‚ã'0]‰ƒ‚ãz.—\‰ƒ‚ÿSoSFBoolisBoundSoMFFloatgroundAngle_changedSoMFColorgroundColor_changedSoMFStringbackUrl_changedSoMFStringbottomUrl_changedSoMFStringfrontUrl_changedSoMFStringleftUrl_changedSoMFStringrightUrl_changedSoMFStringtopUrl_changedSoMFFloatskyAngle_changedSoMFColorskyColor_changed=‹A‹C& €.€‚A€‚ÿFILE FORMAT/DEFAULTS=NCÈC* $€&€P„7|‚€‚ÿVRMLBackground {ņ‹CD? L€ €P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿgroundAngle[]groundColor[]backUrl[]bottomUrl[]frontUrl[]leftUrl[]rightUrl[]topUrl[]skyAngle[]skyColor[ 0 0 0 ]}@ÈCÍD1F#„8„„;²ÍDE)ÈSoVRMLBillboard7DE% €$€ˆˆ€‚ÿSoVRMLBillboard*ÍD.E# €€€‚ÿNAME¡{EÏE& €ö€”‘€€‚ÿSoVRMLBillboard - grouping node that modifies its coordinate system so that its local Z-axis always points at the viewer3.EF# € €€‚ÿINHERITS FROMÊeÏEÌFe š€Ê€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãy­î€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoVRMLParent > SoVRMLBillboard. FúF# €€€‚ÿSYNOPSIS|UÌFvG' €ª€”‘€€‚‚ÿ#include Fields from class SoVRMLBillboard:‹IúFHB T€’€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3faxisOfRotationSoSFVec3fbboxCenterSoSFVec3fbboxSizeO&vGPH) "€L€”‘€‚A€‚ÿMethods from class SoVRMLBillboard:j6HºH4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLBillboard()static SoTypegetClassTypeId()S$PH I/ .€H€”‘€‚A€ãy­ÿFields from class SoVRMLParent:HºHUI2 4€,€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodechildrenT% I©I/ .€J€”‘€‚A€ãy­ÿMethods from class SoVRMLParent:õƒUIžKr ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)N©IìK/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|žKhMn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ìKÀM/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØhM1€ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoFieldÀM1€D *field,SbName &fieldName) constˆHÀM¹€@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N1€/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¹€>‚Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4r‚& €€‚A€‚ÿDESCRIPTION&ð>‚˜ƒ6 :€á€”‘€‚A€€€€€‚ÿThe SoVRMLBillboard node is a grouping node which modifies its coordinate system so that the billboard node's local Z-axis turns to point at the viewer. The SoVRMLBillboard node has children which may be other grouping or leaf nodes.˜r‚Z„* "€1€”‘€‚A€‚ÿNote: This node is partially implemented. It functions correctly as a grouping node, but does not currently implement the automatic rotation feature.?˜ƒ™„& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&Z„ì…- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯™„ˆ0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.*ñì…õ‡9 @€ã€”‘€‚A€€€€€€ ‚ÿThe SoVRMLBillboard node is a grouping node which modifies its coordinate system so that the billboard node's local Z-axis turns to point at the viewer. The SoVRMLBillboard node has children which may be other grouping or leaf nodes.謈݉< F€Y€”‘€‚A€€€€€€€‚ÿThe axisOfRotation field specifies which axis to use to perform the rotation. This axis is defined in the local coordinates of the SoVRMLBillboard node. The default (0,1,0) is useful for objects such as images of trees and lamps positioned on a ground plane. But when an object is oriented at an angle, for example, on the incline of a mountain, then the axisOfRotation may also need to be oriented at a similar angle. .øõ‡ ‹6 :€ñ€”‘€‚A€€€€€‚ÿA special case of billboarding is screen-alignment -- the object rotates to always stay aligned with the viewer even when the viewer elevates, pitches and rolls. This special case is distinguished by setting the axisOfRotation to (0, 0, 0). ³k݉¾ŒH ^€×€”‘€‚A€€€€€€€€€€€‚ÿTo rotate the SoVRMLBillboard to face the viewer, determine the line between the SoVRMLBillboard's origin and the viewer's position; call this the billboard-to-viewer line. The axisOfRotation and the billboard-to-viewer line define a plane. The local z-axis of the SoVRMLBillboard is then rotated into that plane, pivoting around the axisOfRotation. ºr ‹xŽH ^€å€”‘€‚A€€€€€€€€€€€‚ÿIf the axisOfRotation and the billboard-to-viewer line are coincident (the same line), then the plane cannot be established, and the rotation results of the SoVRMLBillboard are undefined. For example, if the axisOfRotation is set to (0,1,0) (Y-axis) and the viewer flies over the SoVRMLBillboard and peers directly down the Y-axis the results are undefined.É–¾ŒA3 4€-€”‘€‚A€€€€‚ÿMultiple instances of SoVRMLBillboards (DEF/USE) operate as expected - each instance rotates in its unique coordinate system to face the viewer.Ò–xŽÀ< F€-€”‘€‚A€€€€€€€‚ÿSee the "Concepts - Grouping and Children Nodes" section for a description the children, addChildren, and removeChildren fieAÀDlds and eventIns.]A|ÂN j€€”‘€‚A€€€€€€€€€€€€€‚ÿThe bboxCenter and bboxSize fields specify a bounding box that encloses the SoVRMLBillboard's children. This is a hint that may be used for optimization purposes. If the specified bounding box is smaller than the actual bounding box of the children at any time, then the results are undefined. A default bboxSize value, (-1 -1 -1), implies that the bounding box is not specified and if needed must be calculated by the browser. See "Concepts - Bounding Boxes" for a description of bboxCenter and bboxSize fields./ À«Â& €€‚A€‚ÿFIELDSO|ÂúÂ2 4€:€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3faxisOfRotation`7«ÂZÃ) "€n€”‘€‚A€‚ÿSpecifies which axis to use to perform the rotation.h.úÂÂÃ: D€\€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fbboxCenterSoSFVec3fbboxSize^5Zà Ä) "€j€”‘€‚A€‚ÿSpecify a bounding box that encloses the children.0 ÂÃPÄ& €€‚A€‚ÿMETHODSA Ä‘Ä, (€*€T”A‚S~‚A€ƒ‚ÿSoVRMLBillboard()8PÄÉÄ) "€€”‘€‚A€‚ÿConstructor.U#‘ÄÅ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ÉÄqÅ) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ Å Å& €€‚A€‚ÿEVENTS3 qÅÓÅ) "€€”‘€‚A€‚ÿeventIn´j Å‡ÆJ d€Ô€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ã÷]Ï´‰ƒ‚ã”5‰ƒ‚ã÷]Ï´‰ƒ‚ÿSoMFNodeaddChildrenSoMFNoderemoveChildrenSoSFVec3fset_axisOfRotationSoMFNodeset_children4 ÓÅ»Æ) "€€”‘€‚A€‚ÿeventOut{A‡Æ6Ç: D€‚€T”A‚S~‚Aã”5€‰ƒ‚ã÷]Ï´‰ƒ‚ÿSoSFVec3faxisOfRotation_changedSoMFNodechildren_changed=»ÆsÇ& €.€‚A€‚ÿFILE FORMAT/DEFAULTS<6ǯÇ* $€$€P„7|‚€‚ÿVRMLBillboard {zHsÇ)È2 4€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚ÿaxisOfRotation0 1 0children[]bboxCenter0 0 0bboxSize-1 -1 -1}: ¯ÇcÈ1ˆû:* <³cÈ”ÈðžSoVRMLBox1 )È”È% €€ˆˆ€‚ÿSoVRMLBox*cȾÈ# €€€‚ÿNAMEC”ÈÉ& €:€”‘€€‚ÿSoVRMLBox - box shape node3¾È4É# € €€‚ÿINHERITS FROMÆaÉúÉe š€Â€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLBox. 4É(Ê# €€€‚ÿSYNOPSISpIúɘÊ' €’€”‘€€‚‚ÿ#include Fields from class SoVRMLBox:E(ÊÝÊ2 4€&€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fsizeI ˜Ê&Ë) "€@€”‘€‚A€‚ÿMethods from class SoVRMLBox:d0ÝÊŠË4 8€`€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLBox()static SoTypegetClassTypeId()N&ËØË/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ŠËTÍn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ØˬÍ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØTÍž 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &f¬Íž)ÈieldName) constˆH¬Í¥ž@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nžóž/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¥ž*žY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4óž^ž& €€‚A€‚ÿDESCRIPTIONR)*ž°ž) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?^žïž& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&°žBž- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ïž!ž0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.LjBžèž? L€€”‘€‚A€€€€€€€€ ‚ÿThe SoVRMLBox node specifies a rectangular parallelepiped box in the local coordinate system centered at (0,0,0) in the local coordinate system and aligned with the coordinate axes. By default, the box measures 2 units in each dimension, from -1 to +1. The SoVRMLBox's size field specifies the extents of the box along the X, Y, and Z axes respectively and must be greater than 0.0.5!žž1 2€ € ŒŒ‚A€ †"€.‚ÿ,èžIž) "€€”‘€‚A€‚ÿ©sžò ž6 :€ç€”‘€‚A€€€€€‚ÿTextures are applied individually to each face of the box; the entire untransformed texture goes on each face. On the front, back, right, and left faces of the box, when viewed from the outside with the Y-axis up, the texture is mapped onto each face with the same orientation as the if image was displayed in normally 2D. On the top face of the box, when viewed from the outside along the +Y axis looking down with the -Z axis as the view up direction, the texture is mapped onto the face with the same orientation as if the image were displayed normally in 2D. On the bottom face of the box, when viewed from the outside along the -Y axis looking up with the +Z axis as the view up direction, the texture is mapped onto the face with the same orientation as if the image were displayed normally in 2D. SoVRMLTextureTransform affects the texture coordinates of the SoVRMLBox.Â’Iž´ ž0 .€%€”‘€‚A€€€‚ÿThe SoVRMLBox geometry is considered to be solid and thus requires outside faces only. When viewed from the inside the results are undefined./ ò žã ž& €€‚A€‚ÿFIELDSE´ ž( ž2 4€&€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fsize0 ã žX ž& €€‚A€‚ÿMETHODS;( ž“ ž, (€€T”A‚S~‚A€ƒ‚ÿSoVRMLBox()8X žË ž) "€€”‘€‚A€‚ÿConstructor.U#“ ž ž2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Ë žs ž) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8 ž« ž& €$€‚A€‚ÿACTION BEHAVIOR—Vs žBžA R€¬€”‘€‚Aã©öø(€‰ãɓ℉ããS¯+‰ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoGetBoundingBoxAction, SoCallbackAction=« žž& €.€‚A€‚ÿFILE FORMAT/DEFAULTS6 Bžµž* $€€P„7|‚€‚ÿVRMLBox {;žðž, (€€P„|‚€ƒ‚‚ÿsize2 2 2}@µž0ž1/„„;"ˆ=´0žžÇÍžSoVRMLCollision_3ðžž, (€f€ˆˆ€€€‚ÿSoVRMLCollision(ACTION PARTIALLY IMPLEMENTED)*0ž¹ž# €€€‚ÿNAMEjDž/@ž& €ˆ€”‘€€‚ÿSoVRMLCollision - grouping node ¹ž/@žðžthat controls collision detection3¹žb@ž# € €€‚ÿINHERITS FROMèw/@žJAžq ²€î€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãy­î€‰€ã”„'€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoVRMLParent > SoVRMLGroup > SoVRMLCollision. b@žxAž# €€€‚ÿSYNOPSIS|UJAžôAž' €ª€”‘€€‚‚ÿ#include Fields from class SoVRMLCollision:`&xAžTBž: D€L€T”A‚S~‚AãU×S选ƒ‚ãYdb鉃‚ÿSoSFBoolcollideSoSFNodeproxyS$ôAž§Bž/ .€H€”‘€‚A€ãy­ÿFields from class SoVRMLParent:HTBžïBž2 4€,€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodechildrenR#§BžACž/ .€F€”‘€‚A€ã”„'‰‚ÿFields from class SoVRMLGroup:h.ïBž©Cž: D€\€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fbboxCenterSoSFVec3fbboxSizeO&ACžøCž) "€L€”‘€‚A€‚ÿMethods from class SoVRMLCollision:j6©CžbDž4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLCollision()static SoTypegetClassTypeId()T%øCž¶Dž/ .€J€”‘€‚A€ãy­ÿMethods from class SoVRMLParent:õƒbDž«Fžr ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)N¶DžùFž/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|«FžuHžn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ùFžÍHž/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØuHž2Kž 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÍHžºKž@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N2KžLž/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞºKž?MžY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4LžsMž& €€‚A€‚ÿDESCRIPTIONR)?MžÅMž) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.ÙsMžˆNž* "€3€”‘€‚A€‚ÿNote: This node is partially implemented. It functions correctly as a grouping node, but does not currently implement the collision detection feature.›MÅMž/€žN j€›€”‘€‚Aã!§˜m€‰ãÍ\Y€‰€ã”„'€‰€€€‚ÿIV_SEPARATOR_MAX_CACHES specifies the maximum number of render caches. To disable caching entirely, set it to 0. (This can reduce memory requirements at the cost of degraded performance.) See SoSeparator for additional information on caching in general, and SoVRMLGroup for information oˆNž/€žðžn the CacheEnabled enum values.?ˆNžn€ž& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&/€žÁž- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯n€ž ‚ž0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org. «ÁžÀ…žu ¸€W€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€ €€ ‚ÿBy default, all objects in the scene are collidable. Browser shall detect geometric collisions between the user's avatar (see SoVRMLNavigationInfo) and the scene's geometry, and prevent the avatar from 'entering' the geometry. The SoVRMLCollision node is a grouping node that may turn off collision detection for its descendants, specify alternative objects to use for collision detection, and send events signalling that a collision has occurred between the user's avatar and the SoVRMLCollision group's geometry or alternate. If there are no SoVRMLCollision nodes specified in a scene, browsers shall detect collision with all objects during navigation.Ò– ‚ž’†ž< F€-€”‘€‚A€€€€€€€‚ÿSee the "Concepts - Grouping and Children Nodes" section for a description the children, addChildren, and removeChildren fields and eventIns.ø˜À…žŠˆž` Ž€1€”‘€‚A€€€€€€€€€€ €€€€€€€€ €‚ÿThe SoVRMLCollision node's collide field enables and disables collision detection. If collide is set to FALSE, the children and all descendants of the SoVRMLCollision node will not be checked for collision, even though they are drawn. This includes any descendant SoVRMLCollision nodes that have collide set to TRUE - (i.e. setting collide to FALSE turns it off for every node below it).ኒ†žk‹žW |€€”‘€‚A€€€€€€€€€€€€€€€€‚ÿSoVRMLCollision nodes with the collide field set to TRUE detect the nearest collision with their descendant geometry (or proxies). Note that not all geometry is collidable - see each geometry node's sections for details. When the nearest collision is detected, the collided SoVRMLCollision node sends the time of the collision through its collideTime eventOut. This behavior is recursive - if an SoVRMLCollision node contains a child, descendant, or proxy (see below) that is an SoVRMLCollision node, and both SoVRMLCollisions detect that a collision has occurred, then both send a collideTime event out at the same time, and so on.aŠˆžÌžN j€'€”‘€‚A€€€€€€€€€€€€€‚ÿThe bboxCenter and bboxSize fields specify a bounding box that encloses the SoVRMLCollision's children. This is a hint that may be used for optimization purposes. If the specified bounding box is smaller than the actual bounding box of the children at any time, then the results are undefined. A default bboxSize value, (-1 -1 -1), implies that the bounding box is not specified and if needed must be calculated by the browser. See "Concepts - Bounding Boxes" for a description of the bboxCenter and bboxSize fields.^"k‹ž*ž< F€E€”‘€‚A€€€€€€ €‚ÿThe collision proxy, defined in the proxy field, is a legal child node, (see "Concepts - Grouping and Children Nodes"), that is used as a substitute for the SoVRMLCollision's children during collision detection. The proxy is used strictly for collision detection - it is not drawn.ÄvÌžúÀžN j€í€”‘€‚A€€€€ €€€€€€€€€‚ÿIf the value of the collide field is FALSE, then collision detection is not performed with the children or proxy descendant nodes. *žúÀžðžIf the root node of a scene is an SoVRMLCollision node with the collide field set to FALSE, then collision detection is disabled for the entire scene, regardless of whether descendant SoVRMLCollision nodes have set collide TRUE.Cû*ž=žH ^€÷€”‘€‚A€€€€€€€€€€€‚ÿIf the value of the collide field is TRUE and the proxy field is non-NULL, then the proxy field defines the scene which collision detection is performed. If the proxy value is NULL, the children of the collision node are collided against.{3úÀž¸ÃžH ^€g€”‘€‚A€€€€€€€€€€€‚ÿIf proxy is specified, then any descendant children of the SoVRMLCollision node are ignored during collision detection. If children is empty, collide is TRUE and proxy is specified, then collision detection is done against the proxy but nothing is displayed (i.e. invisible collision objects). Â=ž¼ÅžB R€…€”‘€‚A€€€€€€€€€‚ÿThe collideTime eventOut generates an event specifying the time when the user's avatar (see SoVRMLNavigationInfo) intersects the collidable children or proxy of the SoVRMLCollision node. An ideal implementation computes the exact time of intersection. Implementations may approximate the ideal by sampling the positions of collidable objects and the user. Refer to the SoVRMLNavigationInfo node for parameters that control the user's size.;¸Ãž÷Æž* "€#€”‘€‚A€‚ÿBrowsers are responsible for defining the navigation behavior when collisions occur. For example, when the user comes sufficiently close to an object to trigger a collision, the browser may have the user bounce off the object, come to a stop, or glide along the surface./ ¼Åž&Çž& €€‚A€‚ÿFIELDSG÷ÆžmÇž2 4€*€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolcollidec:&ÇžÐÇž) "€t€”‘€‚A€‚ÿEnables (TRUE) or disables (FALSE) collision detection.h.mÇž8Èž: D€\€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fbboxCenterSoSFVec3fbboxSize`7ÐÇž˜Èž) "€n€”‘€‚A€‚ÿSpecifies a bounding box that includes the children.E8ÈžÝÈž2 4€&€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodeproxyšk˜ÈžwÉž/ .€Ö€”‘€‚A€€€‚ÿChild node that is used as a substitute for the SoVRMLCollision's children during collision detection.0 ÝÈž§Éž& €€‚A€‚ÿMETHODSAwÉžèÉž, (€*€T”A‚S~‚A€ƒ‚ÿSoVRMLCollision()8§Éž Êž) "€€”‘€‚A€‚ÿConstructor.U#èÉžuÊž2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* ÊžÈÊž) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ uÊž÷Êž& €€‚A€‚ÿEVENTS3 ÈÊž*Ëž) "€€”‘€‚A€‚ÿeventIn¬b÷ÊžÖËžJ d€Ä€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ã÷]Ï´‰ƒ‚ã÷]Ï´‰ƒ‚ãU×S鉃‚ÿSoMFNodeaddChildrenSoMFNoderemoveChildrenSoMFNodeset_childrenSoSFBoolset_collide4 *Ëž Ìž) "€€”‘€‚A€‚ÿeventOutÅwÖËžÏÌžN l€î€T”A‚S~‚Aãøi选ƒ€€‚ã÷]Ï´‰ƒ€‚ãU×S选ƒ‚ÿSoSFTimecollideTime (Note: This event not implemented)SoMFNodechildren_changedSoSFBoolcollide_changed= Ìž Íž& €.€‚A€‚ÿFILE FORMAT/DEFAULTS<ÏÌžHÍž* $€$€P„7|‚€‚ÿVRMLCollision {K ÍžÇÍž4 8€–€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿchildren[]collideTRUEbboxCenter0 0 0bboxSize-1 -1 -1proxyNULL}< HÍžΞ1* < >µΞ6Ξ&CŸSoVRMLColor3ÇÍž6Ξ% €€ˆˆ€‚ÿSoVRMLColor*Ξ`Ξ# €€€‚ÿNAMEtN6ΞÔΞ& €œ€”‘€€‚ÿSoVRMLColor - specifies RGB colors to be used in the fields of another node3`ΞÏž# € €€‚ÿINHERITS FROM@ÔΞ”ÏžM j€€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLColor. ÏžÂÏž# €€€‚ÿSYNOPSIStM”ÏžBŸ' €š€”‘€€‚‚ÿ#include Fields from class SoVRMLColor:FÂÏžˆŸ2 4€(€T”A‚S~‚Aãz.—\€‰ƒ‚ÿSoMFColorcolorK"BŸÓŸ) "€D€”‘€‚A€‚ÿMethods from class SoVRMLColor:f2ˆŸ9Ÿ4 8€d€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLColor()static SoTypegetClassTypeId()NÓŸ‡Ÿ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|9ŸŸn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)‡Ÿ[Ÿ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØŸÀŸ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH[ŸHŸ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÀŸ–Ÿ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞHŸÍŸY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4–ŸŸ& €€‚A€‚ÿDESCRIPTION{RÍŸ|Ÿ) "€¤€”‘€‚A€‚ÿThis node defines a set of RGB colors to be used in the fields of another node.?Ÿ»Ÿ& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&|Ÿ Ÿ- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯»Ÿí Ÿ0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.S Ÿl Ÿ, (€¦€”‘€‚A€€ ‚ÿThis node defines a set of RGB colors to be used in the fields of another node.û°í Ÿg ŸK d€a€”‘€‚A€€€ €€€€€€€€€‚ÿSoVRMLColor nodes are only used to specify multiple colors for a single piece of geometry, such as a different color for each face or vertex of an SoVRMLIndexedFaceSet. A SoVRMLMaterial node is used to specify the overall material parameters of a lighted geometry. If both an SoVRMLMaterial and an SoVRMLColor node are specified for a geometry, the colors should ideally replace the diffuse component of the material. (ìl ŸŸ< F€Ù€”‘€‚A€€€€€€€‚ÿTextures take precedence over colors; specifying both an SoVRMLTexture and an SoVRMLColor node for a geometry will result in the SoVRMLColor node being ignored. See "Concepts - Lighting Model" for details on lighting equations./ g Ÿ¾Ÿ& €€‚A€‚ÿFIELDSFŸŸ2 4€(€T”A‚S~‚Aãz.—\€‰ƒ‚ÿSoMFColorcolor=¾ŸAŸ) "€(€”‘€‚A€‚ÿRGB color values.0 ŸqŸ& €€‚A€‚ÿMETHODS=AŸ®Ÿ, (€"€T”A‚S~‚A€ƒ‚ÿSoVRMLColor()8qŸ @Ÿ) "€€”‘€‚A€‚ÿConstructor.®Ÿ @ŸÇÍžU#®Ÿa@Ÿ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* @Ÿ´@Ÿ) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ a@Ÿã@Ÿ& €€‚A€‚ÿEVENTS3 ´@ŸAŸ) "€€”‘€‚A€‚ÿeventInJã@Ÿ`AŸ2 4€0€T”A‚S~‚Aãz.—\€‰ƒ‚ÿSoMFColorset_color4 AŸ”AŸ) "€€”‘€‚A€‚ÿeventOutN`AŸâAŸ2 4€8€T”A‚S~‚Aãz.—\€‰ƒ‚ÿSoMFColorcolor_changed8”AŸBŸ& €$€‚A€‚ÿACTION BEHAVIOR^)âAŸxBŸ5 :€R€”‘€‚Aã©öø(€‰ã³DfL‰‚ÿSoGLRenderAction, SoCallbackAction=BŸµBŸ& €.€‚A€‚ÿFILE FORMAT/DEFAULTS8xBŸíBŸ* $€€P„7|‚€‚ÿVRMLColor {9 µBŸ&CŸ, (€€P„|‚€ƒ‚‚ÿcolor[]}HíBŸnCŸ1;"ˆ=“?¶nCŸ­CŸk‡ŸSoVRMLColorInterpolator?&CŸ­CŸ% €4€ˆˆ€‚ÿSoVRMLColorInterpolator*nCŸ×CŸ# €€€‚ÿNAMEkE­CŸBDŸ& €Š€”‘€€‚ÿSoVRMLColorInterpolator - interpolates among a set of color values3×CŸuDŸ# € €€‚ÿINHERITS FROM¾eBDŸ3EŸY ‚€Ê€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãéf€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLInterpolator > SoVRMLColorInterpolator. uDŸaEŸ# €€€‚ÿSYNOPSISŒe3EŸíEŸ' €Ê€”‘€€‚‚ÿ#include Fields from class SoVRMLColorInterpolator:a'aEŸNFŸ: D€N€T”A‚S~‚Aã'0]€‰ƒ‚ãz.—\‰ƒ‚ÿSoMFFloatkeySoMFColorkeyValueW.íEŸ¥FŸ) "€\€”‘€‚A€‚ÿMethods from class SoVRMLColorInterpolator:r>NFŸGŸ4 8€|€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLColorInterpolator()static SoTypegetClassTypeId()N¥FŸeGŸ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|GŸáHŸn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)eGŸ9IŸ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØáHŸžKŸ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH9IŸ&LŸ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NžKŸtLŸ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ&LŸ«MŸY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4tLŸßMŸ& €€‚A€‚ÿDESCRIPTIONR)«MŸ1NŸ) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?ßMŸpNŸ& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&1NŸÃOŸ- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯pNŸ®€Ÿ0 .€_€”‘€‚A€ €€ ‚ÿThis sectionÃOŸ®€Ÿ&CŸ may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.Ú‰ÃOŸˆ‚ŸQ p€€”‘€‚A€€€€€€€€€€€€€€ ‚ÿThis node interpolates among a set of MFColor key values, to produce an SFColor (RGB) value_changed event. The number of colors in the keyValue field must be equal to the number of keyframes in the key field. The keyValue field and value_changed events are defined in RGB color space. A linear interpolation, using the value of set_fraction as input, is performed in HSV space.€W®€ŸƒŸ) "€®€”‘€‚A€‚ÿRefer to "Concepts - Interpolators" for a more detailed discussion of interpolators./ ˆ‚Ÿ7ƒŸ& €€‚A€‚ÿFIELDSa'ƒŸ˜ƒŸ: D€N€T”A‚S~‚Aã'0]€‰ƒ‚ãz.—\‰ƒ‚ÿSoMFFloatkeySoMFColorkeyValue0 7ƒŸÈƒŸ& €€‚A€‚ÿMETHODSI˜ƒŸ„Ÿ, (€:€T”A‚S~‚A€ƒ‚ÿSoVRMLColorInterpolator()8ȃŸI„Ÿ) "€€”‘€‚A€‚ÿConstructor.U#„Ÿž„Ÿ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*I„Ÿñ„Ÿ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.0 ž„Ÿ!…Ÿ& €€‚A€‚ÿEVENTS 3 ñ„ŸT…Ÿ) "€€”‘€‚A€‚ÿeventInŠH!…ŸÞ…ŸB T€€T”A‚S~‚Aã0â1€‰ƒ‚ã'0]‰ƒ‚ãz.—\‰ƒ‚ÿSoSFFloatset_fractionSoMFFloatset_keySoMFColorset_keyValue4 T…Ÿ†Ÿ) "€€”‘€‚A€‚ÿeventOut“QÞ…Ÿ¥†ŸB T€¢€T”A‚S~‚Aãð@I1€‰ƒ‚ã'0]‰ƒ‚ãz.—\‰ƒ‚ÿSoSFColorvalue_changedSoMFFloatkey_changedSoMFColorkeyValue_changed=†Ÿâ†Ÿ& €.€‚A€‚ÿFILE FORMAT/DEFAULTSD¥†Ÿ&‡Ÿ* $€4€P„7|‚€‚ÿVRMLColorInterpolator {E↟k‡Ÿ. ,€.€P„|‚€ƒ‚ƒ‚‚ÿkey[]keyValue[]}; &‡Ÿ¦‡Ÿ1 >¾@·¦‡ŸØ‡Ÿ³ SoVRMLCone2 k‡ŸØ‡Ÿ% €€ˆˆ€‚ÿSoVRMLCone*¦‡ŸˆŸ# €€€‚ÿNAMEE؇ŸGˆŸ& €>€”‘€€‚ÿSoVRMLCone - cone shape node3ˆŸzˆŸ# € €€‚ÿINHERITS FROMÇbGˆŸA‰Ÿe š€Ä€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLCone. zˆŸo‰Ÿ# €€€‚ÿSYNOPSISrKA‰Ÿá‰Ÿ' €–€”‘€€‚‚ÿ#include Fields from class SoVRMLCone:šPo‰Ÿ{ŠŸJ d€ €T”A‚S~‚Aã0â1€‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ãU×S鉃‚ÿSoSFFloatbottomRadiusSoSFFloatheightSoSFBoolsideSoSFBoolbottomJ!቟ŊŸ) "€B€”‘€‚A€‚ÿMethods from class SoVRMLCone:e1{ŠŸ*‹Ÿ4 8€b€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLCone()static SoTypegetClassTypeId()NÅŠŸx‹Ÿ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|*‹ŸôŒŸn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)x‹ŸLŸ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØôŒŸ±Ÿ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHLŸEÀŸ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNot±ŸEÀŸk‡ŸifyEnabled() constSbBoolenableNotify(SbBool flag)N±Ÿ“ÀŸ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞEÀŸÊÁŸY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4“ÀŸþÁŸ& €€‚A€‚ÿDESCRIPTIONR)ÊÁŸPŸ) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?þÁŸÂŸ& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&PŸâß- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ŸÁÄŸ0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.6ëâß÷ÆŸK d€×€”‘€‚A€€€€€€€€€€€€ ‚ÿThe SoVRMLCone node specifies a cone which is centered in the local coordinate system and whose central axis is aligned with the local Y-axis. The bottonRadius field specifies the radius of the cone's base, and the height field specifies the height of the cone from the center of the base to the apex. By default, the cone has a radius of 1.0 at the bottom and a height of 2.0, with its apex at y=1 and its bottom at y=-1. Both bottomRadius and height must be greater than 0.0.5ÁÄŸ,ÇŸ1 2€ € ŒŒ‚A€ †"€/‚ÿ©s÷ÆŸÕÈŸ6 :€ç€”‘€‚A€€€€€‚ÿThe side field specifies whether sides of the cone are created, and the bottom field specifies whether the bottom cap of the cone is created. A value of TRUE specifies that this part of the cone exists, while a value of FALSE specifies that this part does not exist (not rendered). Parts with field values of FALSE are not collided with during collision detection.¢T,ÇŸwËŸN j€©€”‘€‚A€€€€€€€€€€€€€‚ÿWhen a texture is applied to the sides of the cone, the texture wraps counterclockwise (from above) starting at the back of the cone. The texture has a vertical seam at the back in the YZ plane, from the apex (0, height/2, 0) to the point (0, 0, -r). For the bottom cap, a circle is cut out of the unit texture square centered at (0, -height/2, 0) with dimensions (2 * bottomRadius) by (2 * bottomRadius). The bottom cap texture appears right side up when the top of the cone is rotated towards the -Z axis. SoVRMLTextureTransform affects the texture coordinates of the SoVRMLCone.ÓÕÈŸ:ÌŸ0 .€'€”‘€‚A€€€‚ÿThe SoVRMLCone geometry is considered to be solid and thus requires outside faces only. When viewed from the inside the results are undefined./ wËŸiÌŸ& €€‚A€‚ÿFIELDSh.:ÌŸÑÌŸ: D€\€T”A‚S~‚Aã0â1€‰ƒ‚ã0â1‰ƒ‚ÿSoSFFloatbottomRadiusSoSFFloatheight‰`iÌŸZÍŸ) "€À€”‘€‚A€‚ÿSpecify the cone's height and the radius of the base circle; values must be greater than 0.0.DÑÌŸžÍŸ2 4€$€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolside`7ZÍŸþÍŸ) "€n€”‘€‚A€‚ÿSpecifies whether the sides of the cone are created.FžÍŸDΟ2 4€(€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolbottomd;þÍŸ¨ÎŸ) "€v€”‘€‚A€‚ÿSpecifies whether the bottom cap of the cone is created.0 DΟØΟ& €€‚A€‚ÿMETHODS<¨ÎŸÏŸ, (€ €T”A‚S~‚A€ƒ‚ÿSoVRMLCone()8ØΟLÏŸ) "€€”‘€‚A€‚ÿConstructor.U#ÏŸ¡ÏŸ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*LÏŸ  ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.¡ÏŸ  k‡Ÿ8¡ÏŸD & €$€‚A€‚ÿACTION BEHAVIOR—V  Û A R€¬€”‘€‚Aã©öø(€‰ãɓ℉ããS¯+‰ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoGetBoundingBoxAction, SoCallbackAction=D  & €.€‚A€‚ÿFILE FORMAT/DEFAULTS7 Û O * $€€P„7|‚€‚ÿVRMLCone {d2 ³ 2 4€d€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚ÿbottomRadius1height2sideTRUEbottomTRUE}AO ô 1\“?‚@¸ô , aD SoVRMLCoordinate8³ , % €&€ˆˆ€‚ÿSoVRMLCoordinate*ô V # €€€‚ÿNAMEK%, ¡ & €J€”‘€€‚ÿSoVRMLCoordinate - coordinate node3V Ô # € €€‚ÿINHERITS FROM’E¡ f M j€Š€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLCoordinate. Ô ” # €€€‚ÿSYNOPSIS~Wf  ' €®€”‘€€‚‚ÿ#include Fields from class SoVRMLCoordinate:F” X 2 4€(€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fpointP' ¨ ) "€N€”‘€‚A€‚ÿMethods from class SoVRMLCoordinate:k7X  4 8€n€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLCoordinate()static SoTypegetClassTypeId()N¨ a / .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:| Ý n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)a 5 / .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÝ š   耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH5 "  @ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nš  p  / .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ"  §  Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4p  Û  & €€‚A€‚ÿDESCRIPTIONR)§  -  ) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?Û  l  & €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&-  ¿  - (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯l  ž 0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.½¿    E X€{€”‘€‚A€€€€€€€€€€ ‚ÿThis node defines a set of 3D coordinates to be used in the coord field of vertex-based geometry nodes (such as SoVRMLIndexedFaceSet, SoVRMLIndexedLineSet, and SoVRMLPointSet). / ž Ï & €€‚A€‚ÿFIELDSF  !@ 2 4€(€T”A‚S~‚Aãòi`€‰ƒ‚Ï !@ ³ ÿSoMFVec3fpoint>Ï _@ ) "€*€”‘€‚A€‚ÿCoordinate points.0 !@ @ & €€‚A€‚ÿMETHODSB_@ Ñ@ , (€,€T”A‚S~‚A€ƒ‚ÿSoVRMLCoordinate()8@  A ) "€€”‘€‚A€‚ÿConstructor.U#Ñ@ ^A 2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* A ±A ) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ^A àA & €€‚A€‚ÿEVENTS3 ±A B ) "€€”‘€‚A€‚ÿeventInJàA ]B 2 4€0€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fset_point4 B ‘B ) "€€”‘€‚A€‚ÿeventOutN]B ßB 2 4€8€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fpoint_changed8‘B C & €$€‚A€‚ÿACTION BEHAVIOR—VßB ®C A R€¬€”‘€‚Aã©öø(€‰ãɓ℉ããS¯+‰ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoGetBoundingBoxAction, SoCallbackAction=C ëC & €.€‚A€‚ÿFILE FORMAT/DEFAULTS=®C (D * $€&€P„7|‚€‚ÿVRMLCoordinate {9 ëC aD , (€€P„|‚€ƒ‚‚ÿpoint[]}M(D ®D 1¾@IA¹®D òD øˆ SoVRMLCoordinateInterpolatorDaD òD % €>€ˆˆ€‚ÿSoVRMLCoordinateInterpolator*®D E # €€€‚ÿNAMEuOòD ‘E & €ž€”‘€€‚ÿSoVRMLCoordinateInterpolator - interpolates among a set of coordinate values3E ÄE # € €€‚ÿINHERITS FROMÃj‘E ‡F Y ‚€Ô€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãéf€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLInterpolator > SoVRMLCoordinateInterpolator. ÄE µF # €€€‚ÿSYNOPSIS–o‡F KG ' €Þ€”‘€€‚‚ÿ#include Fields from class SoVRMLCoordinateInterpolator:a'µF ¬G : D€N€T”A‚S~‚Aã'0]€‰ƒ‚ãòi`‰ƒ‚ÿSoMFFloatkeySoMFVec3fkeyValue\3KG H ) "€f€”‘€‚A€‚ÿMethods from class SoVRMLCoordinateInterpolator:wC¬G H 4 8€†€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLCoordinateInterpolator()static SoTypegetClassTypeId()NH ÍH / .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|H IJ n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÍH ¡J / .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØIJ M  耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¡J ŽM @ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NM ÜM / .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞŽM O Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ÜM GO & €€‚A€‚ÿDESCRIPTIONR)O ™O ) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?GO ØO & €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&™O 7 - (€M€”‘€‚A€ ØO 7 aD €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ØO ‚ 0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.Ö£7 ì‚ 3 4€G€”‘€‚A€€€€ ‚ÿThis node linearly interpolates among a set of MFVec3f values. This would be appropriate for interpolating SoVRMLCoordinate positions for a geometric morph. ä‚  „ < F€É€”‘€‚A€€€€€€€‚ÿThe number of coordinates in the keyValue field must be an integer multiple of the number of keyframes in the key field; that integer multiple defines how many coordinates will be contained in the value_changed events. €Wì‚ Œ„ ) "€®€”‘€‚A€‚ÿRefer to "Concepts - Interpolators" for a more detailed discussion of interpolators./ „ »„ & €€‚A€‚ÿFIELDSa'Œ„ … : D€N€T”A‚S~‚Aã'0]€‰ƒ‚ãòi`‰ƒ‚ÿSoMFFloatkeySoMFVec3fkeyValue0 »„ L… & €€‚A€‚ÿMETHODSN"… š… , (€D€T”A‚S~‚A€ƒ‚ÿSoVRMLCoordinateInterpolator()8L… Ò… ) "€€”‘€‚A€‚ÿConstructor.U#š… '† 2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Ò… z† ) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ '† ©† & €€‚A€‚ÿEVENTS3 z† Ü† ) "€€”‘€‚A€‚ÿeventInŠH©† f‡ B T€€T”A‚S~‚Aã0â1€‰ƒ‚ã'0]‰ƒ‚ãòi`‰ƒ‚ÿSoSFFloatset_fractionSoMFFloatset_keySoMFVec3fset_keyValue4 ܆ š‡ ) "€€”‘€‚A€‚ÿeventOut“Qf‡ -ˆ B T€¢€T”A‚S~‚Aãòi`€‰ƒ‚ã'0]‰ƒ‚ãòi`‰ƒ‚ÿSoMFVec3fvalue_changedSoMFFloatkey_changedSoMFVec3fkeyValue_changed=š‡ jˆ & €.€‚A€‚ÿFILE FORMAT/DEFAULTSI-ˆ ³ˆ * $€>€P„7|‚€‚ÿVRMLCoordinateInterpolator {Ejˆ øˆ . ,€.€P„|‚€ƒ‚ƒ‚‚ÿkey[]keyValue[]}?³ˆ 7‰ 1³‚@‚Bº7‰ m‰ Ã¡SoVRMLCylinder6øˆ m‰ % €"€ˆˆ€‚ÿSoVRMLCylinder*7‰ —‰ # €€€‚ÿNAMEM'm‰ ä‰ & €N€”‘€€‚ÿSoVRMLCylinder - cylinder shape node3—‰ Š # € €€‚ÿINHERITS FROMËf䉠⊠e š€Ì€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLCylinder. Š ‹ # €€€‚ÿSYNOPSISzS⊠Š‹ ' €¦€”‘€€‚‚ÿ#include Fields from class SoVRMLCylinder:«Y‹ 5Œ R t€²€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ãU×S鉃‚ÿSoSFBoolbottomSoSFFloatheightSoSFFloatradiusSoSFBoolsideSoSFBooltopN%Š‹ ƒŒ ) "€J€”‘€‚A€‚ÿMethods from class SoVRMLCylinder:i55Œ ìŒ 4 8€j€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLCylinder()static SoTypegetClassTypeId()NƒŒ : / .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|쌠¶Ž n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X):  / .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eضŽ Á  耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContain Á øˆ er *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH  @ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÁ U / .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ ŒÃ Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4U Àà& €€‚A€‚ÿDESCRIPTIONR)ŒÃ Ä ) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?ÀàQÄ & €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&Ä ¤Å - (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯QÄ ƒÆ 0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.ŠqÈ K d€G€”‘€‚A€€€€€€€€€€€€ ‚ÿThe SoVRMLCylinder node specifies a capped cylinder centered at (0,0,0) in the local coordinate system and with a central axis oriented along the local Y-axis. By default, the cylinder is sized at -1 to +1 in all three dimensions. The radius field specifies the cylinder's radius and the height field specifies the cylinder's height along the central axis. Both radius and height must be greater than 0.0.i'ƒÆ ÚÉ B R€O€”‘€‚A€€€€€€€€€‚ÿThe cylinder has three parts: the side, the top (Y = +height) and the bottom (Y = -height). Each part has an associated SFBool field that indicates whether the part exists (TRUE) or does not exist (FALSE). If the parts do not exist, they are not considered during collision detection.5qÈ Ê 1 2€ € ŒŒ‚A€ †"€0‚ÿ ÂÚÉ Í H ^€…€”‘€‚A€€€€€€€€€€€‚ÿWhen a texture is applied to a cylinder, it is applied differently to the sides, top, and bottom. On the sides, the texture wraps counterclockwise (from above) starting at the back of the cylinder. The texture has a vertical seam at the back, intersecting the YZ plane. For the top and bottom caps, a circle is cut out of the unit texture square centered at (0, +/- height, 0) with dimensions 2*radius by 2*radius. The top texture appears right side up when the top of the cylinder is tilted toward the +Z axis, and the bottom texture appears right side up when the top of the cylinder is tilted toward the -Z axis. SoVRMLTextureTransform affects the texture coordinates of the SoVRMLCylinder.Ç—Ê àÍ 0 .€/€”‘€‚A€€€‚ÿThe SoVRMLCylinder geometry is considered to be solid and thus requires outside faces only. When viewed from the inside the results are undefined./ Í Π& €€‚A€‚ÿFIELDSb(àÍ qΠ: D€P€T”A‚S~‚Aã0â1€‰ƒ‚ã0â1‰ƒ‚ÿSoSFFloatheightSoSFFloatradiusxOΠéΠ) "€ž€”‘€‚A€‚ÿSpecifies the cylinder's height and radius; values must be greater than 0.0.DqΠ-Ï 2 4€$€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolsideT+éΠϠ) "€V€”‘€‚A€‚ÿSpecifies whether the sides are created.C-Ï ÄÏ 2 4€"€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBooltopU,Ï %¡) "€X€”‘€‚A€‚ÿSpecifies whether ÄÏ %¡øˆ the top cap is created.FÄÏ k¡2 4€(€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolbottomX/%¡Ã¡) "€^€”‘€‚A€‚ÿSpecifies whether the bottom cap is created.0 k¡ó¡& €€‚A€‚ÿMETHODS@á3¡, (€(€T”A‚S~‚A€ƒ‚ÿSoVRMLCylinder()8ó¡k¡) "€€”‘€‚A€‚ÿConstructor.U#3¡À¡2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*k¡¡) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8À¡K¡& €$€‚A€‚ÿACTION BEHAVIOR—V¡â¡A R€¬€”‘€‚Aã©öø(€‰ãɓ℉ããS¯+‰ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoGetBoundingBoxAction, SoCallbackAction=K¡¡& €.€‚A€‚ÿFILE FORMAT/DEFAULTS;â¡Z¡* $€"€P„7|‚€‚ÿVRMLCylinder {i5¡Ã¡4 8€j€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿbottomTRUEheight2radius1sideTRUEtopTRUE}EZ¡¡1Ð5IAý‚C»¡f¡Æ¡SoVRMLCylinderSensor^2áf¡, (€d€ˆˆ€€€‚ÿSoVRMLCylinderSensor(ACTION NOT IMPLEMENTED)*¡¡# €€€‚ÿNAMEkEf¡û¡& €Š€”‘€€‚ÿSoVRMLCylinderSensor - maps pointing device motion onto a cylinder3¡.¡# € €€‚ÿINHERITS FROM–Iû¡Ä¡M j€’€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLCylinderSensor. .¡ò¡# €€€‚ÿSYNOPSIS†_Ä¡x¡' €¾€”‘€€‚‚ÿ#include Fields from class SoVRMLCylinderSensor:Ø~ò¡P¡Z „€ü€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFBoolautoOffsetSoSFFloatdiskAngleSoSFBoolenabledSoSFFloatmaxAngleSoSFFloatminAngleSoSFFloatoffsetT+x¡¤¡) "€V€”‘€‚A€‚ÿMethods from class SoVRMLCylinderSensor:ÏŠP¡s¡E X€€T”A‚S~‚A€ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãB-9‰ƒ‚ÿSoVRMLCylinderSensor()static voidenableEvents(SbBool OnOffFlag)static SbBoolisEventsEnabled()static SoTypegetClassTypeId()N¤¡Á¡/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|s¡= ¡n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Á¡• ¡/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ= ¡ú ¡ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH• ¡‚ ¡@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nú ¡Ð ¡/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ‚ ¡¡Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Ð ¡;¡& €€‚A€‚ÿDESCRIPTIONܬ¡#@¡0 .€Y€”‘€‚A€€€‚ÿThe SoVRMLCylinderSensor maps pointing device (e.g. mouse or wand) motion into a rotation on an invisible cylinder that is aligned with the Y axis;¡#@¡Ã¡ of its local space. ?;¡b@¡& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&#@¡µA¡- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯b@¡”B¡0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.à­µA¡tC¡3 4€[€”‘€‚A€€€€ ‚ÿThe SoVRMLCylinderSensor maps pointing device (e.g. mouse or wand) motion into a rotation on an invisible cylinder that is aligned with the Y axis of its local space. ·”B¡yE¡N j€o€”‘€‚A€€€€€€€€€€€€€‚ÿThe enabled exposed field enables and disables the SoVRMLCylinderSensor - if TRUE, the sensor reacts appropriately to user events, if FALSE, the sensor does not track user input or send output events. If enabled receives a FALSE event and isActive is TRUE, the sensor becomes disabled and deactivated, and outputs an isActive FALSE event. If enabled receives a TRUE event the sensor is enabled and ready for user activation.¥utC¡I¡0 .€ë€”‘€‚A€€€‚ÿThe SoVRMLCylinderSensor generates events if the pointing device is activated while over any descendant geometry nodes of its parent group and then moved while activated. Typically, the pointing device is a 2D device such as a mouse. The pointing device is considered to be moving within a plane at a fixed distance from the viewer and perpendicular to the line of sight; this establishes a set of 3D coordinates for the pointer. If a 3D pointer is in use, then the sensor generates events only when the pointer is within the user's field of view. In either case, the pointing device is considered to "pass over" geometry when that geometry is intersected by a line extending from the viewer and passing through the pointer's 3D coordinates. If multiple sensors' geometries intersect this line (hereafter called the bearing), only the nearest will be eligible to generate events. °DyE¡ÎN¡l ¦€‰ €”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€‚ÿUpon activation of the pointing device (e.g. mouse button down) over the sensor's geometry, an isActive TRUE event is sent. The angle between the bearing vector and the local Y axis of the SoVRMLCylinderSensor determines whether the sides of the invisible cylinder or the caps (disks) are used for manipulation. If the angle is less than the diskAngle, then the geometry is treated as an infinitely large disk and dragging motion is mapped into a rotation around the local Y axis of the sensor's coordinate system. The feel of the rotation is as if you were rotating a dial or crank. Using the right-hand rule, the X axis of the sensor's local coordinate system, (defined by parents), represents the zero rotation value around the sensor's local Y axis. For each subsequent position of the bearing, a rotation_changed event is output which corresponds to the angle between the local X axis and the vector defined by the intersection point and the nearest point on the local Y axis, plus the offset value. trackPoint_changed events reflect the unclamped drag position on the surface of this disk. When the pointing device is deactivated and autoOffset is TRUE, offset is set to the last rotation angle and an offset_changed event is generated. See "Concepts - Drag Sensors" for more details on autoOffset and offset_changed.¶I¡ê‚¡Z ‚€m€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿIf the angle between the bearing vector and the local Y axis of the SoVRMLCylinderSensor is greater than or equal to diskAngle, then the sensor behaves like a cylinder or rolling pin. The shortest distance betweÎN¡ê‚¡Ã¡en the point of intersection (between the bearing and the sensor's geometry) and the Y axis of the parent group's local coordinate system determines the radius of an invisible cylinder used to map pointing device motion, and mark the zero rotation value. For each subsequent position of the bearing, a rotation_changed event is output which corresponds to a relative rotation from the original intersection, plus the offset value. trackPoint_changed events reflect the unclamped drag position on the surface of this cylinder. When the pointing device is deactivated and autoOffset is TRUE, offset is set to the last rotation angle and an offset_changed event is generated. See "Concepts - Drag Sensors" for more details.!ÍÎN¡ †¡T v€›€”‘€‚A€€€€€€ €€€€€€€€€‚ÿWhen the sensor generates an isActive TRUE event, it grabs all further motion events from the pointing device until it releases and generates an isActive FALSE event (other pointing device sensors cannot generate events during this time). Motion of the pointing device while isActive is TRUE is referred to as a "drag". If a 2D pointing device is in use, isActive events will typically reflect the state of the primary button associated with the device (i.e. isActive is TRUE when the primary button is pressed, and FALSE when not released). If a 3D pointing device (e.g. wand) is in use, isActive events will typically reflect whether the pointer is within or in contact with the sensor's geometry. ]ê‚¡h‰¡N j€€”‘€‚A€€€€€€€€€€€€€‚ÿWhile the pointing device is activated, trackPoint_changed and rotation_changed events are output and are interpreted from pointing device motion based on the sensor's local coordinate system at the time of activation. trackPoint_changed events represent the unclamped intersection points on the surface of the invisible cylinder or disk. If the initial angle results in cylinder rotation (as opposed to disk behavior) and if the pointing device is dragged off the cylinder while activated, browsers may interpret this in several ways (e.g. clamp all values to the cylinder, continue to rotate as the point is dragged away from the cylinder, etc.). Each movement of the pointing device, while isActive is TRUE, generates trackPoint_changed and rotation_changed events.Aö †¡©Š¡K d€í€”‘€‚A€€€€€€€€€€€€‚ÿminAngle and maxAngle may be set to clamp rotation_changed events to a range of values (measured in radians about the local Z and Y axis as appropriate). If minAngle is greater than maxAngle, rotation_changed events are not clamped.wNh‰¡ ‹¡) "€œ€”‘€‚A€‚ÿSee "Concepts - Pointing Device Sensors and Drag Sensors" for more details./ ©Š¡O‹¡& €€‚A€‚ÿFIELDSJ ‹¡™‹¡2 4€0€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolautoOffsetvGO‹¡Œ¡/ .€Ž€”‘€‚A€€€‚ÿSpecifies whether to set offset to the last rotation angle (TRUE).J™‹¡YŒ¡2 4€0€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatdiskAnglea8Œ¡ºŒ¡) "€p€”‘€‚A€‚ÿUsed to determine the mapping of the dragging motion.GYŒ¡¡2 4€*€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolenabledZ1ºŒ¡[¡) "€b€”‘€‚A€‚ÿEnables (TRUE) or disables (FALSE) the sensor.f,¡Á¡: D€X€T”A‚S~‚Aã0â1€‰ƒ‚ã0â1‰ƒ‚ÿSoSFFloatmaxAngleSoSFFloatminAngleo@[¡0Ž¡/ .€€€”‘€‚A€€€‚ÿUsed to clamp rotation_changed events to a range of values.GÁ¡wŽ¡2 4€*€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatoffsetV-0Ž¡ÍŽ¡) "€Z€”‘€‚A€‚ÿAmount to add to the rotation event value.0 wŽ¡ýŽ¡& €€‚A€‚ÿMETHODSFÍŽ¡C¡, (€4€T”A‚S~‚A€ƒ‚ÿSoVRMLCylinderSensor()8ýŽ¡{¡) "€€”‘€‚A€‚ÿConstructor.a/C¡Ü¡2 4€^€T”A‚S~‚A€ƒã‘¶p6‰‚ÿstatic voidenableEvents(SbBool OnOffFlag)*è{¡Á¡B R€Ñ€”‘€‚AÜ¡Á¡Ã¡€€€€€€€€€‚ÿEnables/disables eventIn and eventOut events for all SoVRMLCylinderSensor objects. If you have created several objects of this class, you can disable/enable these events for all of them with a single call to this method. V$Ü¡hÁ¡2 4€H€T”A‚S~‚A€㑶p6‰ƒ‚ÿstatic SbBoolisEventsEnabled()XÁ¡õÁ¡5 :€°€”‘€‚A€€€€€‚ÿQueries if eventIn and eventOut events are enabled for all objects of this class.U#hÁ¡J¡2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*õÁ¡Â¡) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ J¡Ì¡& €€‚A€‚ÿEVENTS3 ¡ÿ¡) "€€”‘€‚A€‚ÿeventInñ–Ì¡ðá[ „€-€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFBoolset_autoOffsetSoSFFloatset_diskAngleSoSFBoolset_enabledSoSFFloatset_maxAngleSoSFFloatset_minAngleSoSFFloatset_offset4 ÿ¡$Ä¡) "€€”‘€‚A€‚ÿeventOuttðá˜Å¡s ´€€T”A‚S~‚AãU×S选ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFBoolisActiveSoSFRotationrotation_changedSoSFVec3ftrackPoint_changedSoSFBoolautoOffset_changedSoSFFloatdiskAngle_changedSoSFBoolenabled_changedSoSFFloatmaxAngle_changedSoSFFloatminAngle_changedSoSFFloatoffset_changed=$Ä¡ÕÅ¡& €.€‚A€‚ÿFILE FORMAT/DEFAULTSA˜Å¡Æ¡* $€.€P„7|‚€‚ÿVRMLCylinderSensor {‡QÕÅ¡Æ¡6 <€¢€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿautoOffsetTRUEdiskAngle0.262enabledTRUEmaxAngle-1minAngle0offset0}GÆ¡äÆ¡1[‚B–F¼äÆ¡"Ç¡LA¢SoVRMLDirectionalLight>Æ¡"Ç¡% €2€ˆˆ€‚ÿSoVRMLDirectionalLight*äÆ¡LÇ¡# €€€‚ÿNAMEnH"Ç¡ºÇ¡& €€”‘€€‚ÿSoVRMLDirectionalLight - node representing a directional light source3LÇ¡íÇ¡# € €€‚ÿINHERITS FROM¶]ºÇ¡£È¡Y ‚€º€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãgB~(€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLLight > SoVRMLDirectionalLight. íÇ¡ÑÈ¡# €€€‚ÿSYNOPSISŠc£È¡[É¡' €Æ€”‘€€‚‚ÿ#include Fields from class SoVRMLDirectionalLight:JÑÈ¡¥É¡2 4€0€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fdirectionV-[É¡ûÉ¡) "€Z€”‘€‚A€‚ÿMethods from class SoVRMLDirectionalLight:q=¥É¡lÊ¡4 8€z€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLDirectionalLight()static SoTypegetClassTypeId()R#ûÉ¡¾Ê¡/ .€F€”‘€‚A€ãgB~(‰‚ÿFields from class SoVRMLLight:ŸUlÊ¡]Ë¡J d€ª€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ÿSoSFFloatambientIntensitySoSFColorcolorSoSFFloatintensitySoSFBoolonN¾Ê¡«Ë¡/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|]Ë¡'Í¡n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)«Ë¡Í¡/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ'Í¡ ¢ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constÍ¡ ¢Æ¡ˆHÍ¡”¢@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N ¢â¢/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ”¢¢Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4â¢M¢& €€‚A€‚ÿDESCRIPTION¾Ž¢ ¢0 .€€”‘€‚A€€€‚ÿThe SoVRMLDirectionalLight node defines a directional light source that illuminates along rays parallel to a given 3-dimensional vector. ÚM¢¢0 .€µ€”‘€‚A€€€‚ÿThe direction field specifies the direction vector within the local coordinate system that the light illuminates in. Light is emitted along parallel rays from an infinite distance away. A directional light source illuminates only the objects in its enclosing parent group. The light may illuminate everything within this coordinate system, including all children and descendants of its parent group. The accumulated transformations of the parent nodes affect the light.? ¢T¢& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&¢§¢- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯T¢†¢0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.Dù§¢Ê¢K d€ó€”‘€‚A€€€€€€€€€€€€ ‚ÿThe SoVRMLDirectionalLight node defines a directional light source that illuminates along rays parallel to a given 3-dimensional vector. See "Concepts - Lights" for a definition of the ambientIntensity, color, intensity, and on fields. Ú†¢Ô ¢0 .€µ€”‘€‚A€€€‚ÿThe direction field specifies the direction vector within the local coordinate system that the light illuminates in. Light is emitted along parallel rays from an infinite distance away. A directional light source illuminates only the objects in its enclosing parent group. The light may illuminate everything within this coordinate system, including all children and descendants of its parent group. The accumulated transformations of the parent nodes affect the light.„[Ê¢X ¢) "€¶€”‘€‚A€‚ÿSee "Concepts - Lighting Model" for a precise description of VRML's lighting equations. / Ô ¢‡ ¢& €€‚A€‚ÿFIELDSJX ¢Ñ ¢2 4€0€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fdirectionJ!‡ ¢ ¢) "€B€”‘€‚A€‚ÿIllumination direction vector.0 Ñ ¢K ¢& €€‚A€‚ÿMETHODSH ¢“ ¢, (€8€T”A‚S~‚A€ƒ‚ÿSoVRMLDirectionalLight()8K ¢Ë ¢) "€€”‘€‚A€‚ÿConstructor.U#“ ¢ ¢2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Ë ¢s ¢) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ¢¢ ¢& €€‚A€‚ÿEVENTS3 s ¢Õ ¢) "€€”‘€‚A€‚ÿeventInÑ¢ ¢¦¢R t€þ€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ÿSoSFFloatset_ambientIntensitySoSFColorset_colorSoSFVec3fset_directionSoSFFloatset_intensitySoSFBoolset_on4 Õ ¢Ú¢) "€€”‘€‚A€‚ÿeventOut擦¢À¢S t€'€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ÿSoSFFloatambientIntensity_changedSoSFColorcolor_changedSoSFVec3fdirection_changedSoSFFloatintensity_changedSoSFBoolon_changed8Ú¢ @¢& €$€‚A€‚ÿACTION BEHAVIORÀ¢ @¢Æ¡DÀ¢P@¢/ .€*€”‘€‚Aã©öø(€‰‚ÿSoGLRenderAction= @¢@¢& €.€‚A€‚ÿFILE FORMAT/DEFAULTSCP@¢Ð@¢* $€2€P„7|‚€‚ÿVRMLDirectionalLight {|H@¢LA¢4 8€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿambientIntensity0color1 1 1direction0 0 -1intensity1onTRUE}EÐ@¢‘A¢1¦ –FˆD½‘A¢ÍA¢BM¢SoVRMLEXTERNPROTODef<LA¢ÍA¢% €.€ˆˆ€‚ÿSoVRMLEXTERNPROTODef*‘A¢÷A¢# €€€‚ÿNAMEvPÍA¢mB¢& € €”‘€€‚ÿSoVRMLEXTERNPROTODef - contains the internal definition of an externprototype3÷A¢ B¢# € €€‚ÿINHERITS FROMZ%mB¢úB¢5 :€J€”‘€ã}9€‰€€€‚ÿSoBase > SoVRMLEXTERNPROTODef.  B¢(C¢# €€€‚ÿSYNOPSIS‡`úB¢¯C¢' €À€”‘€€‚‚ÿ#include Methods from class SoVRMLEXTERNPROTODef:+Ø(C¢ÚD¢S t€±€T”A‚S~‚A€ãB-9‰ƒ‚ƒãOõt†‰‚ƒã/ x‘‰‚ãXíʉƒ‚ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()virtual intgetFields(SoVRMLPROTOFieldList &resultList) conststatic intgetEXTERNPROTOList(SoBaseList &list)SbStringgetEXTERNPROTOName()virtual SoTypegetTypeId() constN¯C¢(E¢/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:a)ÚD¢‰E¢8 @€R€T”A‚S~‚A㑶p6€‰ƒãB-9‰‚ÿSbBoolisOfType(SoType type) const4(E¢½E¢& €€‚A€‚ÿDESCRIPTIONúʉE¢·F¢0 .€•€”‘€‚A€€€‚ÿThis class contains all the information required to set up an instance of a VRML 2.0 externprototype. It is derived from SoBase and is created when an externprototype is read from a file or buffer.?½E¢öF¢& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&·F¢IH¢- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯öF¢(I¢0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.4 IH¢\I¢) "€€‚A€€‚ÿMETHODSU#(I¢±I¢2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*\I¢J¢) "€T€”‘€‚A€‚ÿReturns type identifier for this class.r@±I¢vJ¢2 4€€€T”A‚S~‚A€ƒã3ýØ‘‰‚ÿintgetFields(SoVRMLEXTERNPROTOFieldList &resultList) constÖ¬J¢LK¢* "€Y€”‘€‚A€‚ÿAppends pointers to all of this object's fields to resultList and returns the number of fields appended. Each item in the list is a pointer to an SoVRMLEXTERNPROTOField.f4vJ¢²K¢2 4€h€T”A‚S~‚A€ƒã/ x‘‰‚ÿstatic intgetEXTERNPROTOList(SoBaseList &list)ÇLK¢yL¢* "€;€”‘€‚A€‚ÿAppends pointers to all of the SoVRMLEXTERNPROTO nodes that have been defined to list, and returns the number of SoVRMLEXTERNPROTO node pointers appended.T"²K¢ÍL¢2 4€D€T”A‚S~‚AãXíÊ€‰ƒ‚ÿSbStringgetEXTERNPROTOName()uLyL¢BM¢) "€˜€”‘€‚A€‚ÿReturns the name of the EXTERNPROTO defined by this SoVRMLEXTERNPROTODef.GÍL¢‰M¢1› €D"E¾‰M¢ÇM¢q‰¢SoVRMLEXTERNPROTOField>BM¢ÇM¢% €2€ˆˆ€‚ÿSoVRMLEXTERNPROTOField*‰M¢ñM¢# €€€‚ÿNAME°‰ÇM¢¡N¢' €€”‘€€‚ÿSoVRMLEXTERNPROTOField - contains the internal definition for one of an externprototype's fields, exposedFields, eventIns or eventOuts3ñM¢ÔN¢# € €€‚ÿINHERITS FROM\'¡N¢0O¢5 :€N€”‘€ã}9€‰€€€‚ÿSoBase > SoVRMLEXTERNPROTOField. ÔN¢^O¢# €€€‚ÿSYNOPSIS_90O¢½O¢& €r€”‘€€‚ÿ#include c^O¢,¢R r€#€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ½O¢,¢BM¢€€ƒ€‚ÿenum Kind{SoVRMLEXTERNPROTOField::PROTO_FIELDRegular fieldSoVRMLEXTERNPROTOField::PROTO_EXPOSEDFIELDField with implied set_ and _changed eventIn and eventOutSoVRMLEXTERNPROTOField::PROTO_EVENTINeventInSoVRMLEXTERNPROTOField::PROTO_EVENTOUTeventOut}V-½O¢‚¢) "€Z€”‘€‚A€‚ÿMethods from class SoVRMLEXTERNPROTOField:­i,¢/‚¢D X€Ò€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ãB-9‰ƒ‚ãXíʉƒ‚ÿstatic SoTypegetClassTypeId()KindgetFieldKind()SoTypegetFieldType()SbStringgetFieldName()F‚¢u‚¢) "€:€”‘€‚A€‚ÿMethods from class SoBase:=/‚¢²‚¢+ &€$€T”A‚S~‚A€‚ÿNot applicable.4u‚¢æ‚¢& €€‚A€‚ÿDESCRIPTION|R²‚¢b„¢* "€¥€”‘€‚A€‚ÿThe interface to an externprototype is through the public fields, exposedFields, eventIns and eventOuts of an externprototype declaration. This class defines one of these interfaces. The list of SoVRMLEXTERNPROTOField definitions is created when the externprototype is read from a file or buffer and cannot be created programmatically.?æ‚¢¡„¢& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&b„¢ô…¢- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯¡„¢Ó†¢0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.4 ô…¢‡¢) "€€‚A€€‚ÿMETHODSU#Ó†¢\‡¢2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*‡¢¯‡¢) "€T€”‘€‚A€‚ÿReturns type identifier for this class.B\‡¢ñ‡¢, (€,€T”A‚S~‚A€ƒ‚ÿKindgetFieldKind()N%¯‡¢?ˆ¢) "€J€”‘€‚A€‚ÿReturns the kind of field this is.Lñ‡¢‹ˆ¢2 4€4€T”A‚S~‚AãB-9€‰ƒ‚ÿSoTypegetFieldType()N%?ˆ¢Ùˆ¢) "€J€”‘€‚A€‚ÿReturns the type of field this is.N‹ˆ¢'‰¢2 4€8€T”A‚S~‚AãXíÊ€‰ƒ‚ÿSbStringgetFieldName()J!Ùˆ¢q‰¢) "€B€”‘€‚A€‚ÿReturns the name of the field.K'‰¢¼‰¢1ü ˆD—E¿¼‰¢þ‰¢ÕâSoVRMLEXTERNPROTOFieldListBq‰¢þ‰¢% €:€ˆˆ€‚ÿSoVRMLEXTERNPROTOFieldList*¼‰¢(Š¢# €€€‚ÿNAME‘kþ‰¢¹Š¢& €Ö€”‘€€‚ÿSoVRMLEXTERNPROTOFieldList - maintains a list of pointers to the field definitions of an externprototype3(Š¢ìŠ¢# € €€‚ÿINHERITS FROMa,¹Š¢M‹¢5 :€X€”‘€ãK2Å'€‰€€€‚ÿSbPList > SoVRMLEXTERNPROTOFieldList. 슢{‹¢# €€€‚ÿSYNOPSIS“lM‹¢Œ¢' €Ø€”‘€€‚‚ÿ#include Methods from class SoVRMLEXTERNPROTOFieldList:Ð{‹¢¢A P€¡€T”A‚S~‚A€ƒ‚ƒ‚ƒãÐPWÙ‰‚ƒ‚ã3ýØ‘‰ƒ‚ÿSoVRMLEXTERNPROTOFieldList()SoVRMLEXTERNPROTOFieldList(int size)SoVRMLEXTERNPROTOFieldList(const SoFieldList &l)~SoVRMLEXTERNPROTOFieldList()SoVRMLEXTERNPROTOFieldList*operator [](int i) const4Œ¢S¢& €€‚A€‚ÿDESCRIPTIONŠa¢Ý¢) "€Â€”‘€‚A€‚ÿThis subclass of SbPList holds lists of pointers to instances of class SoVRMLEXTERNPROTOField.?S¢Ž¢& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&Ý¢o¢- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯Ž¢ZÀ¢0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this ho¢ZÀ¢q‰¢elp file. The complete VRML 2.0 spec is available at http://www.web3d.org.4 o¢ŽÀ¢) "€€‚A€€‚ÿMETHODSL ZÀ¢ÚÀ¢, (€@€T”A‚S~‚A€ƒ‚ÿSoVRMLEXTERNPROTOFieldList()8ŽÀ¢Á¢) "€€”‘€‚A€‚ÿConstructor.T(ÚÀ¢fÁ¢, (€P€T”A‚S~‚A€ƒ‚ÿSoVRMLEXTERNPROTOFieldList(int size)m>Á¢ÓÁ¢/ .€|€”‘€‚A€€€‚ÿConstructor that pre-allocates storage for size pointers.h6fÁ¢;¢2 4€l€T”A‚S~‚A€ƒãÐPWÙ‰‚ÿSoVRMLEXTERNPROTOFieldList(const SoFieldList &l)a8ÓÁ¢œÂ¢) "€p€”‘€‚A€‚ÿConstructor that copies the contents of another list.M!;¢é¢, (€B€T”A‚S~‚A€ƒ‚ÿ~SoVRMLEXTERNPROTOFieldList()7œÂ¢ â) "€€”‘€‚A€‚ÿDestructor.k9颋â2 4€r€T”A‚S~‚Aã3ýØ‘€‰ƒ‚ÿSoVRMLEXTERNPROTOFieldList*operator [](int i) constJ! âÕâ) "€B€”‘€‚A€‚ÿAccesses an element of a list.J‹Ã¢Ä¢1K"EÛGÀÄ¢`Ä¢d£SoVRMLEXTERNPROTOInstanceAÕâ`Ä¢% €8€ˆˆ€‚ÿSoVRMLEXTERNPROTOInstance*Ä¢ŠÄ¢# €€€‚ÿNAMEc=`Ä¢íÄ¢& €z€”‘€€‚ÿSoVRMLEXTERNPROTOInstance - instance of an externprototype3ŠÄ¢ Å¢# € €€‚ÿINHERITS FROM›NíÄ¢»Å¢M j€œ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLEXTERNPROTOInstance. Å¢éÅ¢# €€€‚ÿSYNOPSISb<»Å¢KÆ¢& €x€”‘€€‚ÿ#include ̇éŢǢE X€€T”A‚S~‚A€ƒã¸>Ó‰‚ãB-9‰ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoVRMLEXTERNPROTOInstance(SoVRMLPROTODef* protoDef)static SoTypegetClassTypeId()voidsetupInstance()SoTypegetPROTOType()FKÆ¢]Ç¢) "€:€”‘€‚A€‚ÿMethods from class SoNode:=Ç¢šÇ¢+ &€$€T”A‚S~‚A€‚ÿNot applicable.P']Ç¢êÇ¢) "€N€”‘€‚A€‚ÿMethods from class SoFieldContainer:=šÇ¢'È¢+ &€$€T”A‚S~‚A€‚ÿNot applicable.FêÇ¢mÈ¢) "€:€”‘€‚A€‚ÿMethods from class SoBase:='È¢ªÈ¢+ &€$€T”A‚S~‚A€‚ÿNot applicable.4mÈ¢ÞÈ¢& €€‚A€‚ÿDESCRIPTION㹪ȢÁÉ¢* "€s€”‘€‚A€‚ÿAn externprototype definition read from a file or a buffer does not define an actual node instance. This class is used to create the instance of a previously defined externprototype.?ÞȢʢ& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&ÁÉ¢SË¢- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ʢ2Ì¢0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.4 SË¢fÌ¢) "€€‚A€€‚ÿMETHODSwE2Ì¢ÝÌ¢2 4€Š€T”A‚S~‚A€ƒãüêëN‰‚ÿSoVRMLEXTERNPROTOInstance(SoVRMLEXTERNPROTODef* externprotoDef)€WfÌ¢]Í¢) "€®€”‘€‚A€‚ÿCreates an instance of the externprototype defined by the definition externprotoDef.U#ÝÌ¢²Í¢2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()T+]Í¢΢) "€V€”‘€‚A€‚ÿReturns type identifier for this class. C²Í¢I΢, (€.€T”A‚S~‚A€ƒ‚ÿvoidsetupInstance()¦}΢ï΢) "€ú€”‘€‚A€‚ÿFinishes setting up an instance of an externprototype. The steps required to create an instance of an externprototype are:­xI΢œÏ¢5 :€ð€”‘€‚A€€€€€‚ÿ1. Read in the externprototype. You can read it in from a file or a buffer using the readAllVRML method of SoDB. ¶€ï΢^£6 :€€”‘€‚A€€€€€‚ÿ2. Find the externprototype definition from tœÏ¢^£Õâhe externprototype's name using the static method findEXTERNPROTO in SoBase.”lœÏ¢ò£( €Ø€Ù€‚A€‚ÿSoVRMLEXTERNPROTODef *goldProtoDef = (SoVRMLEXTERNPROTODef *) SoBase::findEXTERNPROTO(SbName("newGold"));+^££( €€Ù€‚A€‚ÿS*ò£p£) "€T€”‘€‚A€‚ÿ3. Create an instance of the prototype.}U£í£( €ª€Ù€‚A€‚ÿSoVRMLEXTERNPROTOInstance *goldInst = new SoVRMLEXTERNPROTOInstance(goldProtoDef);+p££( €€Ù€‚A€‚ÿjAí£‚£) "€‚€”‘€‚A€‚ÿThis will partially set up the instance and create the fields.L#£Î£) "€F€”‘€‚A€‚ÿ4. Set the values of the fields.wO‚£E£( €ž€Ù€‚A€‚ÿ((SoSFColor *) (goldInst->getField("diffColor")))->setValue(0.8, 0.6, 0.0));+Σp£( €€Ù€‚A€‚ÿP'E£À£) "€N€”‘€‚A€‚ÿ5. Finish the setup of the instance.Ep££( €:€Ù€‚A€‚ÿgoldInst->setupInstance();+À£0£( €€Ù€‚A€‚ÿÉ™£ù£0 .€3€”‘€‚A€€€‚ÿThe order of the calls is important. If the value of the field is to be changed from the default, it must be changed before setupInstance is called.R 0£K£2 4€@€T”A‚S~‚AãB-9€‰ƒ‚ÿSoTypegetEXTERNPROTOType()ïù£d£* "€ß€”‘€‚A€‚ÿReturns the type of the externprototype being instanced. A type of an externprototype determines where it can be instanced. The first node found in the PROTO defined in the externproto definition defines the type of the externprototype.DK£¨£1¼$ý‚C€DÁ¨£ã£•Š£SoVRMLElevationGrid;d£ã£% €,€ˆˆ€‚ÿSoVRMLElevationGrid*¨£ £# €€€‚ÿNAME…_㣒£& €¾€”‘€€‚ÿSoVRMLElevationGrid - specifies a uniform rectangular grid of varying height in the XZ plane3 £Å£# € €€‚ÿINHERITS FROM󒣸£r ²€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€ãH#G½€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLGridShape > SoVRMLElevationGrid. Å£æ£# €€€‚ÿSYNOPSIS„]¸£j £' €º€”‘€€‚‚ÿ#include Fields from class SoVRMLElevationGrid:|:æ£æ £B T€t€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ÿSoSFBoolccwSoSFFloatcreaseAngleSoSFBoolsolidV'j £< £/ .€N€”‘€‚A€ãH#G½‰‚ÿFields from class SoVRMLGridShape:TÙæ £ £{ Ä€³€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ã'0]‰ƒ‚ãYdb鉃‚ãU×S鉃‚ãYdb鉃‚ãw?2‰ƒ‚ã0â1‰ƒ‚ãw?2‰ƒ‚ã0â1‰ƒ‚ÿSoSFNodecolorSoSFBoolcolorPerVertexSoMFFloatheightSoSFNodenormalSoSFBoolnormalPerVertexSoSFNodetexCoordSoSFInt32xDimensionSoSFFloatxSpacingSoSFInt32zDimensionSoSFFloatzSpacingS*< £ã £) "€T€”‘€‚A€‚ÿMethods from class SoVRMLElevationGrid:n: £Q £4 8€t€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLElevationGrid()static SoTypegetClassTypeId()Nã £Ÿ £/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Q ££n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ÿ £s£/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ£ä@£ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbSs£ä@£d£tring &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHs£lA£@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nä@£ºA£/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞlA£ñB£Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ºA£%C£& €€‚A€‚ÿDESCRIPTIONR)ñB£wC£) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?%C£¶C£& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&wC£ E£- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯¶C£èE£0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.I E£1G£3 4€-€”‘€‚A€€€€ ‚ÿThe SoVRMLElevationGrid node specifies a uniform rectangular grid of varying height in the XZ plane of the local coordinate system. The geometry is described by a scalar array of height values that specify the height of a rectangular surface above each point of the grid. 'èE£²H£Z ‚€O€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿThe xDimension and zDimension fields indicate the number of divisions of the grid height array in the X and Z directions. Both xDimension and zDimension must be > 1. The vertex locations for the rectangles are defined by the height field and the xSpacing and zSpacing fields: ë—1G£J£T v€/€T”!:‚!€ƒ€€€€€€‚ƒ€€€€‚ƒ€€‚ÿ•The height field is an xDimension by zDimension array of scalar values representing the height above the grid for each vertex the height values are stored in row major order. •The xSpacing and zSpacing fields indicates the distance between vertices in the X and Z directions respectively, and must be >= 0. Thus, the vertex corresponding to the point, P[i, j], on the grid is placed at:»y²H£XK£B T€ò€Ù€‚!€€€€€€€€€‚ÿ P[i,j].x = xSpacing * i P[i,j].y = height[ i + j * zDimension] P[i,j].z = zSpacing * j+J£ƒK£( €€Ù€‚!€‚ÿg0XK£êK£7 >€`€T”‘€‘€‚!€€€€€‚ÿwhere 0 SoFieldContainer > SoNode > SoVRMLExtrusion. ë‹£ªŒ£# €€€‚ÿSYNOPSIS|U|Œ£&£' €ª€”‘€€‚‚ÿ#include Fields from class SoVRMLExtrusion:EʪŒ£kŽ£{ Ä€•€T”A‚S~‚AãU×S选ƒ‚ãU×S鉃‚ãU×S鉃‚ã0â1‰ƒ‚ãóñi`‰ƒ‚ãU×S鉃‚ãÏ[ щƒ‚ãóñi`‰ƒ‚ãU×S鉃‚ãòi`‰ƒ‚ÿSoSFBoolbeginCapSoSFBoolccwSoSFBoolconvexSoSFFloatcreaseAngleSoMFVec2fcrossSectionSoSFBoolendCapSoMFRotationorientationSoMFVec2fscaleSoSFBoolsolidSoMFVec3fspineO&&£ºŽ£) "€L€”‘€‚A€‚ÿMethods from class SoVRMLExtrusion:j6kŽ£$£4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLExtrusion()static SoTypegetClassTypeId()NºŽ£r£/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:t $£òÀ£h ž€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBr£òÀ£•Š£oolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)r£JÁ£/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØòÀ£¯Ã£ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHJÁ£7Ä£@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¯Ã£…Ä£/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ7Ä£¼Å£Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4…Ä£ðÅ£& €€‚A€‚ÿDESCRIPTION!ñ¼Å£Ç£0 .€ã€”‘€‚A€€€‚ÿThe SoVRMLExtrusion node specifies geometric shapes based on a two-dimensional cross section extruded along a three-dimensional spine. The cross section can be scaled and rotated at each spine point to produce a wide variety of shapes. ?ðÅ£PÇ£& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&Ç££È£- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯PÇ£‚É£0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.%ò£È£§Ê£3 4€å€”‘€‚A€€€€ ‚ÿThe SoVRMLExtrusion node specifies geometric shapes based on a two-dimensional cross section extruded along a three-dimensional spine. The cross section can be scaled and rotated at each spine point to produce a wide variety of shapes. £‚É£JÏ£„ Ö€?€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿAn SoVRMLExtrusion is defined by a 2D crossSection piecewise linear curve (described as a series of connected vertices), a 3D spine piecewise linear curve (also described as a series of connected vertices), a list of 2D scale parameters, and a list of 3D orientation parameters. Shapes are constructed as follows: The cross-section curve, which starts as a curve in the XZ plane, is first scaled about the origin by the first scale parameter (first value scales in X, second value scales in Z). It is then rotated about the origin by the first orientation parameter, and translated by the vector given as the first vertex of the spine curve. It is then extruded through space along the first segment of the spine curve. Next, it is scaled and rotated by the second scale and orientation parameters and extruded by the second segment of the spine, and so on. The number of scale and orientation values shall equal the number of spine points, or contain one value that is applied to all points. The scale values must be > 0._/§Ê£µ¤0 .€_€”‘€‚A€€€‚ÿA transformed cross section is found for each joint (that is, at each vertex of the spine curve, where segments of the extrusion coJÏ£µ¤•Š£nnect), and the joints and segments are connected to form the surface. No check is made for self-penetration. Each transformed cross section is determined as follows: œpJÏ£Q ¤, &‚á€T”!:‚!€ƒ‚ƒ€€‚ƒ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿ1.Start with the cross section as specified, in the XZ plane. 2.Scale it about (0, 0, 0) by the value for scale given for the current joint. 3.Apply a rotation so that when the cross section is placed at its proper location on the spine it will be oriented properly. Essentially, this means that the cross section's Y axis (up vector coming out of the cross section) is rotated to align with an approximate tangent to the spine curve. For all points other than the first or last: The tangent for spine[i] is found by normalizing the vector defined by (spine[i+1] - spine[i-1]). If the spine curve is closed: The first and last points need to have the same tangent. This tangent is found as above, but using the points spine[0] for spine[i], spine[1] for spine[i+1] and spine[n-2] for spine[i-1], where spine[n-2] is the next to last point on the curve. The last point in the curve, spine[n-1], is the same as the first, spine[0]. If the spine curve is not closed: The tangent used for the first point is just the direction from spine[0] to spine[1], and the tangent used for the last is the direction from spine[n-2] to spine[n-1]. In the simple case where the spine curve is flat in the XY plane, these rotations are all just rotations about the Z axis. In the more general case where the spine curve is any 3D curve, you need to find the destinations for all 3 of the local X, Y, and Z axes so you can completely specify the rotation. The Z axis is found by taking the cross product of: (spine[i-1] - spine[i]) and (spine[i+1] - spine[i]). If the three points are collinear then this value is zero, so take the value from the previous point. Once you have the Z axis (from the cross product) and the Y axis (from the approximate tangent), calculate the X axis as the cross product of the Y and Z axes. x7µ¤É ¤A P€o€T”!:‚!€ƒ€€€€‚ƒ€€‚ÿ4.Given the plane computed in step 3, apply the orientation to the cross-section relative to this new plane. Rotate it counter-clockwise about the axis and by the angle specified in the orientation field at that joint. 5.Finally, the cross section is translated to the location of the spine point. =Q ¤ ¤9 @€ €”‘€‚!€€€€€€‚ÿSurfaces of revolution: If the cross section is an approximation of a circle and the spine is straight, then the SoVRMLExtrusion is equivalent to a surface of revolution, where the scale parameters define the size of the cross section along the spine. ðÃÉ ¤ö ¤- (€‡€”‘€‚!€€‚ÿCookie-cutter extrusions: If the scale is 1, 1 and the spine is straight, then the cross section acts like a cookie cutter, with the thickness of the cookie equal to the length of the spine. 9  ¤/¤- (€€”‘€‚!€€‚ÿBend/twist/taper objects: These shapes are the result of using all fields. The spine curve bends the extruded shape defined by the cross section, the orientation parameters twist it around the spine, and the scale parameters taper it (by scaling about the spine). Wö ¤†¤? L€1€”‘€‚!€€€€€€€€‚ÿSoVRMLExtrusion has three parts: the sides, the beginCap (the surface at the initial end of the spine) and the endCap (the surface at the final end of the spine). The caps have an associated SFBool field that indicates whether it exists (TRUE) or doesn't exist (FALSE). ±c/¤CB¤N j€Ç€”‘€‚!€€€€€€€€€€€€€‚ÿWhen the beginCap or endCap fields are †¤CB¤•Š£specified as TRUE, planar cap surfaces will be generated regardless of whether the crossSection is a closed curve. (If crossSection isn't a closed curve, the caps are generated as if it were -- equivalent to adding a final point to crossSection that's equal to the initial point. Note that an open surface can still have a cap, resulting (for a simple case) in a shape something like a soda can sliced in half vertically.) These surfaces are generated even if spine is also a closed curve. If a field value is FALSE, the corresponding cap is not generated. %Ú†¤hD¤K d€µ€”‘€‚!€€€€€€€€€€€€‚ÿSoVRMLExtrusion automatically generates its own normals. Orientation of the normals is determined by the vertex ordering of the triangles generated by SoVRMLExtrusion. The vertex ordering is in turn determined by the crossSection curve. If the crossSection is counterclockwise when viewed from the +Y axis, then the polygons will have counterclockwise ordering when viewed from 'outside' of the shape (and vice versa for clockwise ordered crossSection curves).–CB¤vH¤x ¾€-€”‘€‚!€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿTexture coordinates are automatically generated by extrusions. Textures are mapped so that the coordinates range in the U direction from 0 to 1 along the crossSection curve (with 0 corresponding to the first point in crossSection and 1 to the last) and in the V direction from 0 to 1 along the spine curve (again with 0 corresponding to the first listed spine point and 1 to the last). When crossSection is closed, the texture has a seam that follows the line traced by the crossSection's start/end point as it travels along the spine. If the endCap and/or beginCap exist, the crossSection curve is uniformly scaled and translated so that the largest dimension of the cross-section (X or Z) produces texture coordinates that range from 0.0 to 1.0. The beginCap and endCap textures' S and T directions correspond to the X and Z directions in which the crossSection coordinates are defined. ±phD¤'I¤A R€à€”‘€‚!€€€€€€€€€‚ÿSee "Concepts - Geometry Nodes" for a description of the ccw, solid, convex, and creaseAngle fields. / vH¤VI¤& €€‚!€‚ÿFIELDSEÊ'I¤›J¤{ Ä€•€T”A‚S~‚AãU×S选ƒ‚ãU×S鉃‚ãU×S鉃‚ã0â1‰ƒ‚ãóñi`‰ƒ‚ãU×S鉃‚ãÏ[ щƒ‚ãóñi`‰ƒ‚ãU×S鉃‚ãòi`‰ƒ‚ÿSoSFBoolbeginCapSoSFBoolccwSoSFBoolconvexSoSFFloatcreaseAngleSoMFVec2fcrossSectionSoSFBoolendCapSoMFRotationorientationSoMFVec2fscaleSoSFBoolsolidSoMFVec3fspine0 VI¤ËJ¤& €€‚A€‚ÿMETHODSA›J¤ K¤, (€*€T”A‚S~‚A€ƒ‚ÿSoVRMLExtrusion()8ËJ¤DK¤) "€€”‘€‚A€‚ÿConstructor.U# K¤™K¤2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*DK¤ìK¤) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ™K¤L¤& €€‚A€‚ÿEVENTS3 ìK¤NL¤) "€€”‘€‚A€‚ÿeventIn´jL¤M¤J d€Ô€T”A‚S~‚Aãóñi`€‰ƒ‚ãÏ[ щƒ‚ãóñi`‰ƒ‚ãòi`‰ƒ‚ÿSoMFVec2fset_crossSectionSoMFRotationset_orientationSoMFVec2fset_scaleSoMFVec3fset_spine=NL¤?M¤& €.€‚A€‚ÿFILE FORMAT/DEFAULTS<M¤{M¤* $€$€P„7|‚€‚ÿVRMLExtrusion {í®?M¤hN¤? L€]€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿbeginCapTRUEccwTRUEconvexTRUEcreaseAngle0crossSection[ 1 1, 1 -1, -1 -1, -1 1, 1 1 ]endCapTRUEorientation0 0 1 0scale1 1solidTRUEspine[ 0 0 0, 0 1 0 ]}: {M¤¢N¤1KÛG4…IâN¤õN¤‡Ê¤SoVRMLFogS'hN¤õN¤, (€N€ˆˆ€€€‚ÿSoVRMLFog(ACTION NOT IMPLEMENTED)*¢N¤O¤# €€€‚ÿNAMEBõN¤aO¤& €8€”‘€€‚ÿSoVRMLFog - simulates fog3O¤”O¤# € €€‚ÿINHERITS FROM‹>aO¤+€¤M j€|€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer”O¤+€¤hN¤ > SoNode > SoVRMLFog. ”O¤Y€¤# €€€‚ÿSYNOPSISpI+€¤É€¤' €’€”‘€€‚‚ÿ#include Fields from class SoVRMLFog:‡EY€¤P¤B T€Š€T”A‚S~‚Aãð@I1€‰ƒ‚ãü”ŒÔ‰ƒ‚ã0â1‰ƒ‚ÿSoSFColorcolorSoSFStringfogTypeSoSFFloatvisibilityRangeI É€¤™¤) "€@€”‘€‚A€‚ÿMethods from class SoVRMLFog:d0P¤ý¤4 8€`€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLFog()static SoTypegetClassTypeId()N™¤K‚¤/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ý¤Çƒ¤n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)K‚¤„¤/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØǃ¤„†¤ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH„¤ ‡¤@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N„†¤Z‡¤/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ ‡¤‘ˆ¤Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Z‡¤Åˆ¤& €€‚A€‚ÿDESCRIPTIONvG‘ˆ¤;‰¤/ .€Ž€”‘€‚A€€€‚ÿThe SoVRMLFog node provides a way to simulate atmospheric effects.?ň¤z‰¤& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&;‰¤ÍŠ¤- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯z‰¤¬‹¤0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.½BÍŠ¤i¤{ Ä€…€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€€ ‚ÿThe SoVRMLFog node provides a way to simulate atmospheric effects by blending objects with the color specified by the color field based on the objects' distances from the viewer. The distances are calculated in the coordinate space of the SoVRMLFog node. The visibilityRange specifies the distance (in the SoVRMLFog node's coordinate space) at which objects are totally obscured by the fog. Objects located visibilityRange meters or more away from the viewer are drawn with a constant color of color. Objects very close to the viewer are blended very little with the fog color. A visibilityRange of 0.0 or less disables the SoVRMLFog node. Note that visibilityRange is affected by the scaling transformations of the SoVRMLFog node's parents - translations and rotations have no affect on visibilityRange.g ¬‹¤ÜÁ¤] ˆ€€”‘€‚A€€€€€€€€€€€€€€€€€€‚ÿSoVRMLFog nodes are bindable children nodes and thus thei¤ÜÁ¤hN¤re exists an SoVRMLFog stack, in which the top-most SoVRMLFog node on the stack is currently active. To push an SoVRMLFog node onto the top of the stack, a TRUE value is sent to the set_bind eventIn. Once active, the SoVRMLFog is then bound to the browser's view. A FALSE value of set_bind pops the SoVRMLFog from the stack and unbinds it from the browser viewer. See "Concepts - Bindable Children Nodes" for more details on the SoVRMLFog stack. »i¤—ä< F€ÿ€”‘€‚A€€€€€€€‚ÿThe fogType field controls how much of the fog color is blended with the object as a function of distance. If fogType is "LINEAR" (the default), then the amount of blending is a linear function of the distance, resulting in a depth cuing effect. If fogType is "EXPONENTIAL" then an exponential increase in blending should be used, resulting in a more natural fog appearance.UÜÁ¤4ŤH ^€«€”‘€‚A€€€€€€€€€€€‚ÿFor best visual results, the SoVRMLBackground node (which is unaffected by the SoVRMLFog node) should be the same color as the fog node. The SoVRMLFog node can also be used in conjunction with the visibilityLimit field of SoVRMLNavigationInfo node to provide a smooth fade out of objects as they approach the far clipping plane.}T—ä±Å¤) "€¨€”‘€‚A€‚ÿSee the section "Concepts - Lighting Model" for details on lighting calculations./ 4ŤàŤ& €€‚A€‚ÿFIELDS‡E±Å¤gƤB T€Š€T”A‚S~‚Aãð@I1€‰ƒ‚ãü”ŒÔ‰ƒ‚ã0â1‰ƒ‚ÿSoSFColorcolorSoSFStringfogTypeSoSFFloatvisibilityRange0 àŤ—Ƥ& €€‚A€‚ÿMETHODS;gƤÒƤ, (€€T”A‚S~‚A€ƒ‚ÿSoVRMLFog()8—Ƥ Ǥ) "€€”‘€‚A€‚ÿConstructor.U#ÒƤ_Ǥ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* Ǥ²Ç¤) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ _ǤáǤ& €€‚A€‚ÿEVENTS3 ²Ç¤Ȥ) "€€”‘€‚A€‚ÿeventIn¯eáǤÃȤJ d€Ê€T”A‚S~‚AãU×S选ƒ‚ãð@I1‰ƒ‚ãü”ŒÔ‰ƒ‚ã0â1‰ƒ‚ÿSoSFBoolset_bindSoSFColorset_colorSoSFStringset_fogTypeSoSFFloatset_visibilityRange4 Ȥ÷Ȥ) "€€”‘€‚A€‚ÿeventOutºpÃȤ±É¤J d€à€T”A‚S~‚AãU×S选ƒ‚ãð@I1‰ƒ‚ãü”ŒÔ‰ƒ‚ã0â1‰ƒ‚ÿSoSFBoolisBoundSoSFColorcolor_changedSoSFStringfogType_changedSoSFFloatvisibilityRange_changed=÷Ȥîɤ& €.€‚A€‚ÿFILE FORMAT/DEFAULTS6 ±É¤$ʤ* $€€P„7|‚€‚ÿVRMLFog {c3îɤ‡Ê¤0 0€f€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿcolor1 1 1fogType"LINEAR"visibilityRange0}@$ʤÇʤ1»N‚ˆH…LÄÇʤþʤL¦SoVRMLFontStyle7‡Ê¤þʤ% €$€ˆˆ€‚ÿSoVRMLFontStyle*Çʤ(ˤ# €€€‚ÿNAMEc=þʤ‹Ë¤& €z€”‘€€‚ÿSoVRMLFontStyle - specifies font size, family, style, etc.3(ˤ¾Ë¤# € €€‚ÿINHERITS FROM‘D‹Ë¤O̤M j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLFontStyle. ¾Ë¤}̤# €€€‚ÿSYNOPSISX2O̤Õ̤& €d€”‘€€‚ÿ#include .¾}̤Ϥp ®€}€T”A‚S~‚A€ƒƒ€€€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Family{SoVRMLFontStyle::SERIF,Use Serif style (such as Times-Roman)SoVRMLFontStyle::SANS,Use Sans Serif style (such as Helvetica)SoVRMLFontStyle::TYPEWRITERUse fixed pitch style (such as Courier)}enum Style{SoVRMLFontStyle::PLAIN,No modification to FamilySoVRMLFontStyle::BOLD,Embolden FamilySoVRMLFontStyle::ITALIC,Italicize or Slant FamilySoVRMLFontStyle::BOLDITALICEmbolden and Italicize Family}¶Õ̤¥R r€m€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Justification{SoVRMLFontStyle::FIRST,Not usedSoVRMLFontStyle::BEGIN,Left edgeSoVRMLFontStyle:MIDDLE,Centered about X axisSoVRMLFontStyle::ENDRighϤ¥‡Ê¤t edge}N%Ϥe¥) "€J€”‘€‚A€‚ÿFields from class SoVRMLFontStyle:0½¥•¥s ´€{€T”A‚S~‚Aã*{£€‰ƒ‚ãU×S鉃‚ã*{£‰ƒ‚ãü”ŒÔ‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ã0â1‰ƒ‚ãü”ŒÔ‰ƒ‚ãU×S鉃‚ÿSoMFStringfamilySoSFBoolhorizontalSoMFStringjustifySoSFStringlanguageSoSFBoolleftToRightSoSFFloatsizeSoSFFloatspacingSoSFStringstyleSoSFBooltopToBottomO&e¥ä¥) "€L€”‘€‚A€‚ÿMethods from class SoVRMLFontStyle:‹O•¥o¥< H€ž€T”A‚S~‚A€ƒ‚ãXíʉƒ‚ãB-9‰ƒ‚ÿSoVRMLFontStyle()SbStringgetFontName()static SoTypegetClassTypeId()N䥽¥/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|o¥9¥n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)½¥‘¥/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ9¥ö¥ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH‘¥~¥@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nö¥Ì¥/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ~¥ ¥Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Ì¥7 ¥& €€‚A€‚ÿDESCRIPTIONS ¥Š ¥< F€/€”‘€‚A€€€€€€€‚ÿThe SoVRMLFontStyle node defines the size, font family, and style of text's font, as well as the direction of the text strings and any specific language rendering techniques that must be used for non-English text. See SoVRMLText node for application of SoVRMLFontStyle. 6ú7 ¥À ¥< F€õ€”‘€‚A€€€€€€€‚ÿThe size field specifies the height (in object space units) of glyphs rendered and determines the spacing of adjacent lines of text. All subsequent strings advance in Y by -(size * spacing). Only horizontal text is supported in this release.i@Š ¥) ¥) "€€€”‘€‚A€‚ÿFont attributes are defined with the family and style fields.d.À ¥ ¥6 :€]€”‘€‚A€€€€€‚ÿThe family field specifies a case-sensitive MFString value that may be "SERIF" (the default) for a serif font such as Times Roman; "SANS" for a sans-serif font such as Helvetica; or "TYPEWRITER" for a fixed-pitch font such as Courier. A family value of empty quotes, "", is identical to "SERIF".J) ¥×¥6 :€)€”‘€‚A€€€€€‚ÿThe style field specifies a case-sensitive SFString value that may be "PLAIN" (the default) for default plain type; "BOLD" for boldface type; "ITALIC" for italic type; or "BOLDITALIC" for bold and italic type. A style value of empty quotes, "", is identical to "PLAIN".£a ¥†@¥B R€Ã€”‘€‚A€€€€€€€€€‚ÿThe horizontal, leftToRight, and topToBottom fields indicate the direction of the text. NOTE: Only horizontal text drawn leftToRight is supported in this release. Characters on each line of text advance in the positive X d×¥†@¥‡Ê¤irection according to their natural advance width. Then each line of characters is advanced in the negative Y direction.Ø¢×¥^B¥6 :€E€”‘€‚A€€€€€‚ÿThe justify field determines alignment of the above text layout relative to the origin of the object coordinate system. It is an MFString which can contain 2 values. The first value specifies alignment along the major axis and the second value specifies alignment along the minor axis. NOTE: Only the major axis alignment is supported in this release. A justify value of "" is equivalent to the default values. Þ†@¥lC¥0 .€½€”‘€‚A€€€‚ÿThe major alignment is along the X axis. The possible values for each enumerant of the justify field are "BEGIN", "MIDDLE", and "END. Each line of text is positioned individually according to the alignment enumerant. ?^B¥«C¥& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&lC¥þD¥- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯«C¥ÝE¥0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.WþD¥4G¥? L€1€”‘€‚A€€€€€€€€ ‚ÿThe SoVRMLFontStyle node defines the size, font family, and style of text's font, as well as the direction of the text strings and any specific language rendering techniques that must be used for non-English text. See SoVRMLText node for application of SoVRMLFontStyle. ÓÝE¥CH¥< F€§€”‘€‚A€€€€€€€‚ÿThe size field specifies the height (in object space units) of glyphs rendered and determines the spacing of adjacent lines of text. All subsequent strings advance in either X or Y by -(size * spacing).C4G¥†H¥+ &€0€T”‘€s‚A€‚ÿFont Family and StyleÙCH¥II¥* "€3€”‘€‚A€‚ÿFont attributes are defined with the family and style fields. It is up to the browser to assign specific fonts to the various attribute combinations. c-†H¥¬J¥6 :€[€”‘€‚A€€€€€‚ÿThe family field specifies a case-sensitve MFString value that may be "SERIF" (the default) for a serif font such as Times Roman; "SANS" for a sans-serif font such as Helvetica; or "TYPEWRITER" for a fixed-pitch font such as Courier. A family value of empty quotes, "", is identical to "SERIF".JII¥öK¥6 :€)€”‘€‚A€€€€€‚ÿThe style field specifies a case-sensitive SFString value that may be "PLAIN" (the default) for default plain type; "BOLD" for boldface type; "ITALIC" for italic type; or "BOLDITALIC" for bold and italic type. A style value of empty quotes, "", is identical to "PLAIN".R'¬J¥HL¥+ &€N€T”‘€s‚A€‚ÿDirection, Justification and Spacing¬LöK¥ôN¥` Ž€™€”‘€‚A€€€€€€€€€€€€€€€€€€€‚ÿThe horizontal, leftToRight, and topToBottom fields indicate the direction of the text. The horizontal field indicates whether the text advances horizontally in its major direction (horizontal = TRUE, the default) or vertically in its major direction (horizontal = FALSE). The leftToRight and topToBottom fields indicate direction of text advance in the major (characters within a single string) and minor (successive strings) axes of layout. Which field is used for the major direction and which is used for the minor direction is determined by the horizontal field.*ÖHL¥*¥T v€­€”‘€‚A€€€€€€€€€€€€€€€‚ÿFor horizontal text (horizontal = TRUE), characters on each line of text advance in the positive X direction if leftToRight is TRUE or in the negative X direction if leftToRightôN¥*¥‡Ê¤ is FALSE. Characters are advanced according to their natural advance width. Then each line of characters is advanced in the negative Y direction if topToBottom is TRUE or in the positive Y direction if topToBottom is FALSE. Lines are advanced by the amount of size * spacing.*ÖôN¥Tƒ¥T v€­€”‘€‚A€€€€€€€€€€€€€€€‚ÿFor vertical text (horizontal = FALSE), characters on each line of text advance in the negative Y direction if topToBottom is TRUE or in the positive Y direction if topToBottom is FALSE. Characters are advanced according to their natural advance height. Then each line of characters is advanced in the positive X direction if leftToRight is TRUE or in the negative X direction if leftToRight is FALSE. Lines are advanced by the amount of size * spacing.q/*¥Å…¥B R€_€”‘€‚A€€€€€€€€€‚ÿThe justify field determines alignment of the above text layout relative to the origin of the object coordinate system. It is an MFString which can contain 2 values. The first value specifies alignment along the major axis and the second value specifies alignment along the minor axis, as determined by the horizontal field. A justify value of "" is equivalent to the default values. If the second string, minor alignment, is not specified then it defaults to the value "FIRST". Thus, justify values of "", "BEGIN" and "BEGIN FIRST" are equivalent.ë£Tƒ¥°ˆ¥H ^€G€”‘€‚A€€€€€€€€€€€‚ÿThe major alignment is along the X axis when horizontal is TRUE and along the Y axis when horizontal is FALSE. The minor alignment is along the Y axis when horizontal is TRUE and along the X axis when horizontal is FALSE. The possible values for each enumerant of the justify field are "FIRST", "BEGIN", "MIDDLE", and "END". For major alignment, each line of text is positioned individually according to the major alignment enumerant. For minor alignment, the block of text representing all lines together is positioned according to the minor alignment enumerant. The following tables describe the behavior in terms of which portion of the text is at the origin:Y(Å…¥ ‰¥1 2€P€T”‘€s‚A€€€‚ÿMajor Alignment, horizontal = TRUE:—9°ˆ¥ ‰¥^#Œ€rùr ` €€€‚ÿ€€€€‚ÿ€D€€€‚ÿÿÿEnumerantleftToRight = TRUEleftToRight = FALSE> ‰¥0Š¥R#t€|ùr ` €€€ ‚ÿ€€‚ÿ€F€‚ÿÿÿ FIRST Left edge of each line  Right edge of each line = ‰¥¿Š¥R#t€zùr ` €€€ ‚ÿ€€‚ÿ€D€‚ÿÿÿ BEGIN Left edge of each line Right edge of each line Ž<0Š¥M‹¥R#t€xùr ` €€€ ‚ÿ€€‚ÿ€F€‚ÿÿÿ MIDDLE Centered about X-axis  Centered about X-axis ;¿Š¥Ú‹¥R#t€vùr ` €€€ ‚ÿ€€‚ÿ€D€‚ÿÿÿ END Right edge of each line  Left edge of each lineY*M‹¥3Œ¥/ .€T€T”‘€s€‚€€‚ÿMajor Alignment, horizontal = FALSE:—9Ú‹¥ÊŒ¥^#Œ€rùr ` €€€‚ÿ€€€€‚ÿ€D€€€‚ÿÿÿEnumeranttopToBottom = TRUEtopToBottom = FALSE=3Œ¥Y¥R#t€zùr ` €€€ ‚ÿ€€‚ÿ€B€‚ÿÿÿ FIRST Top edge of each line Bottom edge of each line =ÊŒ¥è¥R#t€zùr ` €€€ ‚ÿ€€‚ÿ€B€‚ÿÿÿ BEGIN Top edge of each line Bottom edge of each line Œ:Y¥tŽ¥R#t€tùr ` €€€ ‚ÿ€€‚ÿ€F€‚ÿÿÿ MIDDLE Centered about Y-axis  Center about Y-axis ;襥R#t€vùr ` €€€ ‚ÿ€€‚ÿ€F€‚ÿÿÿ END Bottom edge of each line  Top edge of each lineX)tŽ¥Y¥/ .€R€T”‘€s€‚€€‚ÿMinor Alignment, horizontal = TRUE:—9¥ À¥^#Œ€rùr ` €€€‚ÿ€€€€‚ÿ€D€€€‚ÿÿÿEnumeranttopToBottom = TRUEtopToBottom = FALSEY¥ À¥‡Ê¤;Y¥™À¥R#t€vùr ` €€€ ‚ÿ€€‚ÿ€D€‚ÿÿÿ FIRST Baseline of first line Baseline of first line‘? À¥*Á¥R#t€~ùr ` €€€ ‚ÿ€€‚ÿ€D€‚ÿÿÿ BEGIN Top edge of first line Bottom edge of first line Œ:™À¥¶Á¥R#t€tùr ` €€€ ‚ÿ€€‚ÿ€D€‚ÿÿÿ MIDDLE Centered about Y-axis Centered about Y-axisŽ<*Á¥DÂ¥R#t€xùr ` €€€ ‚ÿ€€‚ÿ€H€‚ÿÿÿ END Bottom edge of last line   Top edge of last lineY*¶Á¥Â¥/ .€T€T”‘€s€‚€€‚ÿMinor Alignment, horizontal = FALSE:—9DÂ¥4Ã¥^#Œ€rùr ` €€€‚ÿ€€€€‚ÿ€D€€€‚ÿÿÿEnumerantleftToRight = TRUEleftToRight = FALSE‘?Â¥ÅÃ¥R#t€~ùr ` €€€ ‚ÿ€€‚ÿ€F€‚ÿÿÿ FIRST Left edge of first line Right edge of first line ‘?4Ã¥VÄ¥R#t€~ùr ` €€€ ‚ÿ€€‚ÿ€F€‚ÿÿÿ BEGIN Left edge of first line Right edge of first line Ž<ÅÃ¥äÄ¥R#t€xùr ` €€€ ‚ÿ€€‚ÿ€F€‚ÿÿÿ MIDDLE Centered about X-axis  Centered about X-axis ;VÄ¥qÅ¥R#t€vùr ` €€€ ‚ÿ€€‚ÿ€D€‚ÿÿÿ END Right edge of last line  Left edge of last linen@äÄ¥ßÆ¥. *€€”‘€€‚€€‚ÿThe default minor alignment is "FIRST". This is a special case of minor alignment when horizontal is TRUE. Text starts at the baseline at the Y-axis. In all other cases, :"FIRST" is identical to "BEGIN". In the following tables, each small cross indicates where the X and Y axes should be in relation to the text: >qťǥ( €,€T”‘€s€‚ÿhorizontal = TRUE: 2ßÆ¥OÇ¥. ,€ €ŒŒ€ †"€1‚ÿ?Ç¥ŽÇ¥( €.€T”‘€s€‚ÿhorizontal = FALSE: 2OÇ¥ÀÇ¥. ,€ €ŒŒ€ †"€2‚ÿÇŽŽÇ¥‡Ê¥9 @€€”‘€€€€€€€€‚ÿThe language field specifies the context of the language for the text string. Due to the multilingual nature of the ISO 10646-1:1993, the language field is needed to provide a proper language attribute of the text string. The format is based on the POSIX locale specification as well as the RFC 1766: language[_territory]. The values for the language tag is based on the ISO 639, i.e. zh for Chinese, jp for Japanese, sc for Swedish. The territory tag is based on the ISO 3166 country code, i.e. TW is for Taiwan and CN for China for the "zh" Chinese language tag. If the language field is set to empty "", then local language bindings are used.W1ÀÇ¥ÞÊ¥& €b€”‘€€‚ÿPlease refer to these sites for more details: £|‡Ê¥Ë¥' €ø€Ù€€‚‚ÿ http://www.chemie.fu-berlin.de/diverse/doc/ISO_639.html http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html, ÞÊ¥­Ë¥# €€€‚ÿFIELDSHË¥õË¥2 4€,€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringfamilyN%­Ë¥CÌ¥) "€J€”‘€‚A€‚ÿSpecify the family of font to use.Jõ˥̥2 4€0€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolhorizontal{RC̥ͥ) "€¤€”‘€‚A€‚ÿCharacters advance in the X direction if TRUE. This release supports TRUE only.IÌ¥QÍ¥2 4€.€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringjustifyˡͥϥ* "€C€”‘€‚A€‚ÿIndicates placement and alignment of strings. With LEFT justification, the left edge of the first line is at the (transformed) origin, and all left edges are aligned. RIGHT justification is similar. CENTER justification places the center of the first string at the (transformed) origin, with the centers of all remaining strings aligned under it. The second justify string, FIRST, is not supported in this release.JQÍ¥fÏ¥2 4€0€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringlanguageJ!Ï¥°Ï¥) "€B€”‘€‚A€‚ÿNot supported in this release.KfÏ¥ ¦2 4€2€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolleftToRight°Ï¥ ¦‡Ê¤„[°Ï¥¦) "€¶€”‘€‚A€‚ÿCharacters advance in the positive X direction if TRUE. This release supports TRUE only.K ¦Û¦2 4€2€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBooltopToBottomjA¦E¦) "€‚€”‘€‚A€‚ÿNot supported in this release. Default value of FALSE is used.EÛ¦Š¦2 4€&€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatsize†]E¦¦) "€º€”‘€‚A€‚ÿSpecifies the height of glyphs rendered and helps determine the spacing of adjacent lines.HŠ¦X¦2 4€,€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatspacingñ¦s¦* "€ã€”‘€‚A€‚ÿSpecifies the distance (in the negative y direction) between the base points of successive strings, measured with respect to the current font height. A value of 1 indicates single spacing, a value of 2 indicates double spacing, and so on.GX¦º¦2 4€*€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringstyleoFs¦)¦) "€Œ€”‘€‚A€‚ÿDefines style modification to the chosen font (bold, italic, etc.).0 º¦Y¦& €€‚A€‚ÿMETHODSA)¦š¦, (€*€T”A‚S~‚A€ƒ‚ÿSoVRMLFontStyle()8Y¦Ò¦) "€€”‘€‚A€‚ÿConstructor.Mš¦¦2 4€6€T”A‚S~‚AãXíÊ€‰ƒ‚ÿSbStringgetFontName()|SÒ¦›¦) "€¦€”‘€‚A€‚ÿReturn the font name used by this node based on the settings of family and styleU#¦ð¦2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*›¦C¦) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ð¦{¦& €$€‚A€‚ÿACTION BEHAVIOR—VC¦¦A R€¬€”‘€‚Aã©öø(€‰ãɓ℉ããS¯+‰ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoGetBoundingBoxAction, SoCallbackAction={¦O¦& €.€‚A€‚ÿFILE FORMAT/DEFAULTS<¦‹¦* $€$€P„7|‚€‚ÿVRMLFontStyle {Á„O¦L¦= H€ €P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿfamily"SERIF"horizontalTRUEjustify"BEGIN"language""leftToRightTRUEsize1.0spacing1.0style"PLAIN"topToBottomTRUE}?‹¦‹¦1N 4…IÜLÅ‹¦Á¦åC¦SoVRMLGeometry6L¦Á¦% €"€ˆˆ€‚ÿSoVRMLGeometry*‹¦ë¦# €€€‚ÿNAMEmGÁ¦X ¦& €Ž€”‘€€‚ÿSoVRMLGeometry - abstract base class for all VRML 2.0 geometry nodes3릋 ¦# € €€‚ÿINHERITS FROMªQX ¦5 ¦Y ‚€¢€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry. ‹ ¦c ¦# €€€‚ÿSYNOPSISƒV5 ¦æ ¦- *€¬€”‘€€‚ãåC’‰‚ÿ#include Methods from class SoVRMLGeometry:U#c ¦; ¦2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()Næ ¦‰ ¦/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|; ¦ ¦n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)‰ ¦] ¦/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ ¦Â¦ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH] ¦V@¦@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰Â¦V@¦L¦‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¦¤@¦/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞV@¦ÛA¦Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4¤@¦B¦& €€‚A€‚ÿDESCRIPTIONƒTÛA¦’B¦/ .€¨€”‘€‚A€€€‚ÿThe SoVRMLGeometry node is the abstract base class for all VRML geometry nodes.0 B¦ÂB¦& €€‚A€‚ÿMETHODSU#’B¦C¦2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ÂB¦jC¦) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8C¦¢C¦& €$€‚A€‚ÿACTION BEHAVIORCjC¦åC¦/ .€(€”‘€‚AãÉ“â„€‰‚ÿSoRayPickAction@¢C¦%D¦1*…L*MÆ%D¦\D¦Q¦SoVRMLGridShape7åC¦\D¦% €$€ˆˆ€‚ÿSoVRMLGridShape*%D¦†D¦# €€€‚ÿNAMEoI\D¦õD¦& €’€”‘€€‚ÿSoVRMLGridShape - abstract base class for the SoVRMLElevationGrid node3†D¦(E¦# € €€‚ÿINHERITS FROMÌgõD¦ôE¦e š€Î€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLGridShape. (E¦"F¦# €€€‚ÿSYNOPSIS|UôE¦žF¦' €ª€”‘€€‚‚ÿ#include Fields from class SoVRMLGridShape:TÙ"F¦òG¦{ Ä€³€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ã'0]‰ƒ‚ãYdb鉃‚ãU×S鉃‚ãYdb鉃‚ãw?2‰ƒ‚ã0â1‰ƒ‚ãw?2‰ƒ‚ã0â1‰ƒ‚ÿSoSFNodecolorSoSFBoolcolorPerVertexSoMFFloatheightSoSFNodenormalSoSFBoolnormalPerVertexSoSFNodetexCoordSoSFInt32xDimensionSoSFFloatxSpacingSoSFInt32zDimensionSoSFFloatzSpacingNžF¦@H¦/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|òG¦¼I¦n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)@H¦J¦/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eؼI¦yL¦ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHJ¦M¦@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NyL¦OM¦/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞM¦†N¦Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4OM¦ºN¦& €€‚A€‚ÿDESCRIPTIONyJ†N¦3O¦/ .€”€”‘€‚A€€€‚ÿThis node is an abstract base class for the SoVRMLElevationGrid node./ ºN¦bO¦& €€‚A€‚ÿFIELDSE3O¦§O¦2 4€&€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodecolor`bO¦B€¦/ .€À€”‘€‚A€€€‚ÿAn SoVRMLColor node whose colors are ap§O¦B€¦åC¦plied to the vertices or faces of the ElevationGrid.N§O¦€¦2 4€8€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolcolorPerVertexœsB€¦,¦) "€æ€”‘€‚A€‚ÿIf TRUE, colors are applied to the vertices of the ElevationGrid. If FALSE, the colors are applied to the faces.G€¦s¦2 4€*€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatheight¿•,¦2‚¦* "€+€”‘€‚A€‚ÿxDimension by zDimension array of scale factors representing the height above the grid for each vertex. The heights are stored in row major order.Fs¦x‚¦2 4€(€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodenormal•f2‚¦ ƒ¦/ .€Ì€”‘€‚A€€€‚ÿAn SoVRMLNormalNode containing the normals. If NULL, the normals will be automatically generated.Ox‚¦\ƒ¦2 4€:€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolnormalPerVertexžu ƒ¦úƒ¦) "€ê€”‘€‚A€‚ÿIf TRUE, normals are applied to the vertices of the ElevationGrid. If FALSE, the normals are applied to the faces.H\ƒ¦B„¦2 4€,€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodetexCoordT%úƒ¦–„¦/ .€J€”‘€‚A€€€‚ÿAn SoVRMLTextureCoordinate node.KB„¦á„¦2 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32xDimension_6–„¦@…¦) "€l€”‘€‚A€‚ÿNumber of divisions of the grid in the X direction.Iᄦ‰…¦2 4€.€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatxSpacing]4@…¦æ…¦) "€h€”‘€‚A€‚ÿDistance between the vertices in the X direction.K‰…¦1†¦2 4€2€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32zDimension_6æ…¦†¦) "€l€”‘€‚A€‚ÿNumber of divisions of the grid in the Z direction.I1†¦Ù†¦2 4€.€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatzSpacing]4†¦6‡¦) "€h€”‘€‚A€‚ÿDistance between the vertices in the Z direction.0 Ù†¦f‡¦& €€‚A€‚ÿMETHODSU#6‡¦»‡¦2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*f‡¦ˆ¦) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ »‡¦=ˆ¦& €€‚A€‚ÿEVENTS3 ˆ¦pˆ¦) "€€”‘€‚A€‚ÿeventIn|=ˆ¦ì‰¦{ Ä€€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ã'0]‰ƒ‚ãYdb鉃‚ãU×S鉃‚ãYdb鉃‚ãw?2‰ƒ‚ã0â1‰ƒ‚ãw?2‰ƒ‚ã0â1‰ƒ‚ÿSoSFNodeset_colorSoSFBoolset_colorPerVertexSoMFFloatset_heightSoSFNodeset_normalSoSFBoolset_normalPerVertexSoSFNodeset_texCoordSoSFInt32set_xDimensionSoSFFloatset_xSpacingSoSFInt32set_zDimensionSoSFFloatset_zSpacing4 pˆ¦ Š¦) "€€”‘€‚A€‚ÿeventOut¤)쉦ċ¦{ Ä€S€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ã'0]‰ƒ‚ãYdb鉃‚ãU×S鉃‚ãYdb鉃‚ãw?2‰ƒ‚ã0â1‰ƒ‚ãw?2‰ƒ‚ã0â1‰ƒ‚ÿSoSFNodecolor_changedSoSFBoolcolorPerVertex_changedSoMFFloatheight_changedSoSFNodenormal_changedSoSFBoolnormalPerVertex_changedSoSFNodetexCoord_changedSoSFInt32xDimension_changedSoSFFloatxSpacing_changedSoSFInt32zDimension_changedSoSFFloatzSpacing_changed8 Š¦ü‹¦& €$€‚A€‚ÿACTION BEHAVIOR”SÄ‹¦Œ¦A R€¦€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ã#º…ö‰‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoPickAction=ü‹¦ÍŒ¦& €.€‚A€‚ÿFILE FORMAT/DEFAULTS„[Œ¦Q¦) "€¶€”‘€‚A€‚ÿThis is an abstract base class. See the derived class for the format and default values.< ÍŒ¦¦1°#ÜLA€NǦÀ¦¸@§SoVRMLGroup3Q¦À¦% €€ˆˆ€‚ÿSoVRMLGroup*¦ê¦# €€€‚ÿNAMEAÀ¦+Ž¦& €6€”‘€€‚ÿSoVRMLGroup - group node3ê¦^Ž¦# € €€‚ÿINHERITS FROMÆa+Ž¦$¦e š€Â€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãy­î€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoVRMLParent > SoVRMLGroup. ^Ž¦R¦# €€€‚ÿSYNOPSIST.$¦¦¦& €\€”‘€€‚ÿ#include ½R¦¸À¦I `€{€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum CacheEnable¦¦¸À¦Q¦d{SoVRMLGroup::OFF,Never build or use a cacheSoVRMLGroup::ON,Always try to build a cacheSoVRMLGroup::AUTODecide whether to cache based on some heuristic}J!¦¦Á¦) "€B€”‘€‚A€‚ÿFields from class SoVRMLGroup:š¸À¦¦j ¢€5€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ãØtW鉃‚ãØtW鉃€‚ãØtW选ƒ€‚ãØtW选ƒ€‚ÿSoSFVec3fbboxCenterSoSFVec3fbboxSizeSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingS$Á¦Y¦/ .€H€”‘€‚A€ãy­ÿFields from class SoVRMLParent:H¦¡Â¦2 4€,€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodechildrenS$Y¦ô¦/ .€H€”‘€‚A€ã”„'‰‚ÿMethods from class SoVRMLGroup:Õš¡Â¦Éæ; D€5€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoVRMLGroup()SoVRMLGroup(int nChildren)static voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()static SoTypegetClassTypeId()T%ô¦Ħ/ .€J€”‘€‚A€ãy­ÿMethods from class SoVRMLParent:õƒÉæƦr ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)NĦ`Ʀ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:NèƦ®Ç¦f š€Ñ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)`ƦȦ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eخǦkʦ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHȦóʦ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NkʦA˦/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þóʦx̦Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4A˦¬Ì¦& €€‚A€‚ÿDESCRIPTIONœgx̦Hͦ5 :€Î€”‘€‚A€€€€€‚ÿA SoVRMLGroup node is equivalent to an SoVRMLTransform node, without the transformation fields. ?¬Ì¦‡Í¦& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&HͦÚΦ- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯‡Í¦¹Ï¦0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org. hÚΦe§8 @€Ð€”‘€‚A€€€€€€ ‚ÿA SoVRMLGroup¹Ï¦e§Q¦ node is equivalent to an SoVRMLTransform node, without the transformation fields. Õ™¹Ï¦:§< F€3€”‘€‚A€€€€€€€‚ÿSee the "Concepts - Grouping and Children Nodes" section for a description of the children, addChildren, and removeChildren fields and eventIns.]e§—§N j€€”‘€‚A€€€€€€€€€€€€€‚ÿThe bboxCenter and bboxSize fields specify a bounding box that encloses the SoVRMLGroup's children. This is a hint that may be used for optimization purposes. If the specified bounding box is smaller than the actual bounding box of the children at any time, then the results are undefined. A default bboxSize value, (-1 -1 -1), implies that the bounding box is not specified and if needed must be calculated by the browser. See "Concepts - Bounding Boxes" for a description of the bboxCenter and bboxSize fields.è:§§K d€;€”‘€‚A€€€€€€€€€ãÍ\Y‰€‚ÿNote: The following fields -- renderCaching, boundingBoxCaching, renderCulling, and pickCulling -- are specific to the TGS Open Inventor implementation and are not part of the VRML 2.0 specification. These fields are very useful for performance tuning, but are not written out if the output file is specified as VRML 2.0 format. See SoSeparator for a discussion of Open Inventor caching and culling./ —§®§& €€‚A€‚ÿFIELDSh.§§: D€\€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fbboxCenterSoSFVec3fbboxSize^5®§t§) "€j€”‘€‚A€‚ÿSpecify a bounding box that encloses the children.M§Á§2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumrenderCachingX/t§§) "€^€”‘€‚A€‚ÿWhether to cache during rendering traversal.R Á§k§2 4€@€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumboundingBoxCaching[2§Æ§) "€d€”‘€‚A€‚ÿWhether to cache during bounding box traversal.Mk§§2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumrenderCullingW.Ƨj§) "€\€”‘€‚A€‚ÿWhether to cull during rendering traversal.K§µ§2 4€2€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumpickCullingR)j§ §) "€R€”‘€‚A€‚ÿWhether to cull during pick traversal.0 µ§7 §& €€‚A€‚ÿMETHODS[- §’ §. ,€Z€T”A‚S~‚A€ƒ‚ƒ‚ÿSoVRMLGroup()SoVRMLGroup(int nChildren)a87 §ó §) "€p€”‘€‚A€‚ÿConstructor that takes approximate number of children|N’ §o §. ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()]ó §ü §0 .€»€”‘€‚A€€€‚ÿSet/get the number of render caches each VRMLGroup will have (2, by default). The more render caches each VRMLGroup is allowed to have, the more memory used. setNumRenderCaches only affects VRMLGroup nodes that are created after it is called, not VRMLGroup that were created before. Setting zero render caches globally turns off render caching.†Wo §‚ §/ .€®€”‘€‚A€ã!§˜m‰‚ÿThis value can also be specified via environment variable IV_SEPARATOR_MAX_CACHES.U#ü §× §2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*‚ §* §) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ × §Y §& €€‚A€‚ÿEVENTS3 * §Œ §) "€€”‘€‚A€‚ÿeventInKY §§B T€–€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ã÷]Ï´‰ƒ‚ã÷]Ï´‰ƒ‚ÿSoMFNodeaddChildrenSoMFNoderemoveChildrenSoMFNodeset_children4 Œ §M§) "€€”‘€‚A€‚ÿeventOutP§§2 4€<€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodechildren_changed8M§Õ§& €$€‚A€‚ÿACTION BEHAVIORÿ¥§Ô§Z ‚€K€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãàê‰ãɓ℉ã¹_ØS‰ãòÓ}ª‰ãeY ‰‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoHandleEventAction, SoRayPickAction, SoGetMatrixAction, SoSearchAction, SoWriteAction=Õ§@§& €.€‚A€‚ÿFILE Ô§@§Q¦FORMAT/DEFAULTS8Ô§U@§* $€€P„7|‚€‚ÿVRMLGroup {c3@§¸@§0 0€f€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿchildren[]bboxCenter0 0 0bboxSize-1 -1 -1}CU@§û@§1å**M®…OÈû@§5A§„ʧSoVRMLImageTexture:¸@§5A§% €*€ˆˆ€‚ÿSoVRMLImageTexture*û@§_A§# €€€‚ÿNAMEN(5A§­A§& €P€”‘€€‚ÿSoVRMLImageTexture - texture map node3_A§àA§# € €€‚ÿINHERITS FROM´[­A§”B§Y ‚€¶€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãô©€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLTexture > SoVRMLImageTexture. àA§ÂB§# €€€‚ÿSYNOPSIS‚[”B§DC§' €¶€”‘€€‚‚ÿ#include Fields from class SoVRMLImageTexture:EÂB§‰C§2 4€&€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringurlL#DC§ÕC§) "€F€”‘€‚A€‚ÿFields from class SoVRMLTexture:b(‰C§7D§: D€P€T”A‚S~‚AãU×S选ƒ‚ãU×S鉃‚ÿSoSFBoolrepeatSSoSFBoolrepeatTZ+ÕC§‘D§/ .€V€”‘€‚A€ã§ûrZ‰‚ÿMethods from class SoVRMLImageTexture:m97D§þD§4 8€r€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLImageTexture()static SoTypegetClassTypeId()N‘D§LE§/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|þD§ÈF§n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)LE§ G§/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÈF§…I§ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH G§ J§@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N…I§[J§/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ J§’K§Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4[J§ÆK§& €€‚A€‚ÿDESCRIPTION+û’K§ñM§0 .€÷€”‘€‚A€€€‚ÿThe SoVRMLImageTexture node defines a texture map by specifying an image file and general parameters for mapping to geometry. Texture maps are defined in a 2D coordinate system, (s, t), that ranges from 0.0 to 1.0 in both directions. The bottom edge of the image corresponds to the S-axis of the texture map, and left edge of the image corresponds to the T-axis of the texture map. The lower-left pixel of the image corresponds to s=0, t=0, and the top-right pixel of the image corresponds to s=1, t=1.ã¹ÆK§ÔN§* "€s€”‘€‚A€‚ÿTexture images may be one component (grayscale), two component (grayscale plus transparency), three component (full RGB color), or four-component (full RGB color plus transparency). ï¡ñM§Ï€§N j€C€”‘€‚A€€€€€€€€€€€€€‚ÿThe repeatS and repeatT fields specify how the texture wraps in the S and T directions. If repeatS is TRUE (the default), the texture map is repeated outside the 0-to-1 texture coordinate range in the S direction soÔN§Ï€§¸@§ that it fills the shape. If repeatS is FALSE, the texture coordinates are clamped in the S direction to lie within the 0-to-1 range. The repeatT field is analogous to the repeatS field. K!ÔN§ƒ§* "€C€”‘€‚A€‚ÿIf the texture image's width or height is not a power of 2, or the image's width or height is greater than the maximum supported by OpenGL, then the image will be automatically scaled up or down to the next power of 2 or the maximum texture size. For maximum speed, point-sampling is used to do the scale; if you want more accurate resampling, pre-filter images to a power of 2 smaller than the maximum texture size (use the OpenGL glGetIntegerv(GL_MAX_TEXTURE_SIZE...) call to determine maximum texture for a specific OpenGL implementation)."æÏ€§<…§< F€Í€”‘€‚A€€€€€€€‚ÿThe quality of the texturing is affected by the textureQuality field of the SoComplexity node. The textureQuality field affects what kind of filtering is done to the texture when it must be minified or magnified. The mapping of a particular texture quality value to a particular OpenGL filtering technique is implementation dependent, and varies based on the texturing performance. If mipmap filtering is required, mipmaps are automatically created using the simple box filter.fƒ§Ë…§) "€Ì€”‘€‚A€‚ÿOpen Inventor can read GIF, JPEG, PNG, RGB (native Silicon Graphics format), and BMP texture files.?<…§ †§& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&Ë…§]‡§- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ †§<ˆ§0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org./ü]‡§kŠ§3 4€ù€”‘€‚A€€€€ ‚ÿThe SoVRMLImageTexture node defines a texture map by specifying an image file and general parameters for mapping to geometry. Texture maps are defined in a 2D coordinate system, (s, t), that ranges from 0.0 to 1.0 in both directions. The bottom edge of the image corresponds to the S-axis of the texture map, and left edge of the image corresponds to the T-axis of the texture map. The lower-left pixel of the image corresponds to s=0, t=0, and the top-right pixel of the image corresponds to s=1, t=1.5<ˆ§ Š§1 2€ € ŒŒ‚A€ †"€3‚ÿÙkŠ§yŒ§< F€;€”‘€‚A€€€€€€€‚ÿThe texture is read from the URL specified by the url field. To turn off texturing, set the url field to have no values ([]). Browsers are required to support the JPEG and PNG image file formats, and in addition, may support any other image formats. Support for the GIF format including transparent backgrounds is also recommended. See the section "Concepts - URLS and URNs" for details on the url field.¢r Š§§0 .€å€”‘€‚A€€€‚ÿTexture images may be one component (grayscale), two component (grayscale plus transparency), three component (full RGB color), or four-component (full RGB color plus transparency). An ideal VRML implementation will use the texture image to modify the diffuse color and transparency of an object's material (specified in an SoVRMLMaterial node), then perform any lighting calculations using the rest of the object's material properties with the modified diffuse color to produce the final image. The texture image modifies the diffuse color and transparency depending on how many components are in the image, as follows: ÿÍyŒ§&Á§2 2€›€T”!:‚!€ƒ‚ƒ‚ƒ‚ƒ‚ÿ1.Diffuse color is multiplied by the grayscale values in the texture image. 2.Diffuse color is multiplied by the grayscale values in the texture image; material transparency i§&Á§¸@§s multiplied by transparency values in texture image. 3.RGB colors in the texture image replace the material's diffuse color. 4.RGB colors in the texture image replace the material's diffuse color; transparency values in the texture image replace the material's transparency. ¯…§ÕÁ§* "€ €”‘€‚!€‚ÿSee "Concepts - Lighting Model" for details on lighting equations and the interaction between textures, materials, and geometries.¿•&Á§”ç* "€+€”‘€‚!€‚ÿBrowsers may approximate this ideal behavior to increase performance. One common optimization is to calculate lighting only at each vertex and combining the texture image with the color computed from lighting (performing the texturing after lighting). Another common optimization is to perform no lighting calculations at all when texturing is enabled, displaying only the colors of the texture image. ï¡ÕÁ§ƒÅ§N j€C€”‘€‚!€€€€€€€€€€€€€‚ÿThe repeatS and repeatT fields specify how the texture wraps in the S and T directions. If repeatS is TRUE (the default), the texture map is repeated outside the 0-to-1 texture coordinate range in the S direction so that it fills the shape. If repeatS is FALSE, the texture coordinates are clamped in the S direction to lie within the 0-to-1 range. The repeatT field is analogous to the repeatS field. / ”ç²Å§& €€‚!€‚ÿFIELDSEƒÅ§÷ŧ2 4€&€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringurl¦}²Å§Æ§) "€ú€”‘€‚A€‚ÿFilename (or URL) from which to read the texture image. Note: Open Inventor only tries to open the first url in the field.0 ÷ŧÍƧ& €€‚A€‚ÿMETHODSDƧǧ, (€0€T”A‚S~‚A€ƒ‚ÿSoVRMLImageTexture()8ÍƧIǧ) "€€”‘€‚A€‚ÿConstructor.U#ǧžÇ§2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*Iǧñǧ) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ žÇ§ ȧ& €€‚A€‚ÿEVENTS3 ñǧSȧ) "€€”‘€‚A€‚ÿeventInI ȧœÈ§2 4€.€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringset_url4 SȧÐȧ) "€€”‘€‚A€‚ÿeventOutMœÈ§ɧ2 4€6€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringurl_changed8ÐȧUɧ& €$€‚A€‚ÿACTION BEHAVIOR^)ɧ³É§5 :€R€”‘€‚Aã©öø(€‰ã³DfL‰‚ÿSoGLRenderAction, SoCallbackAction=Uɧðɧ& €.€‚A€‚ÿFILE FORMAT/DEFAULTS?³É§/ʧ* $€*€P„7|‚€‚ÿVRMLImageTexture {U%ðɧ„ʧ0 0€J€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿurl[]repeatSTRUErepeatTTRUE}E/ʧÉʧ1¸6A€NÑQÉÉʧ˧¨SoVRMLIndexedFaceSet<„ʧ˧% €.€ˆˆ€‚ÿSoVRMLIndexedFaceSet*Éʧ/˧# €€€‚ÿNAMEa;˧˧& €v€”‘€€‚ÿSoVRMLIndexedFaceSet - indexed polygonal face shape node3/˧Ã˧# € €€‚ÿINHERITS FROM˧Þ̧~ Ê€;€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€ã&òO€‰€ãsÐÛ.€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLVertexShape > SoVRMLIndexedShape > SoVRMLIndexedFaceSet. Ã˧ ͧ# €€€‚ÿSYNOPSIS†_Þ̧’ͧ' €¾€”‘€€‚‚ÿ#include Fields from class SoVRMLIndexedFaceSet:–L ͧ(ΧJ d€˜€T”A‚S~‚AãU×S选ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ãU×S鉃‚ÿSoSFBoolccwSoSFBoolconvexSoSFFloatcreaseAngleSoSFBoolsolidQ(’ͧyΧ) "€P€”‘€‚A€‚ÿFields from class SoVRMLIndexedShape:¬b(Χ%ϧJ d€Ä€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32colorIndexSoMFInt32coordIndexSoMFInt32normalIndexSoMFInt32texCoordIndexP'yΧuϧ) "€N€”‘€‚A€‚ÿFields from class SoVRMLVertexShape:Ù%ϧZ¨Z „€þ€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ãYdb鉃‚ãYdb鉃‚ãU×S鉃‚ãYdb鉃‚ÿSoSFNodecolorSoSFBoolcolorPerVertexSoSFuϧZ¨„ʧNodecoordSoSFNodenormalSoSFBoolnormalPerVertexSoSFNodetexCoord\-uϧ¶¨/ .€Z€”‘€‚A€ãE}‰‚ÿMethods from class SoVRMLIndexedFaceSet:o;Z¨%¨4 8€v€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLIndexedFaceSet()static SoTypegetClassTypeId()N¶¨s¨/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|%¨ï¨n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)s¨G¨/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ館¨ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHG¨4¨@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¬¨‚¨/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ4¨¹¨Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4‚¨í¨& €€‚A€‚ÿDESCRIPTIONR)¹¨?¨) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?í¨~¨& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&?¨Ñ ¨- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯~¨° ¨0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.­Ñ ¨À ¨c ”€[€”‘€‚A€€€€€€€€€€€€€€€€€€€€ ‚ÿThe SoVRMLIndexedFaceSet node represents a 3D shape formed by constructing faces (polygons) from vertices listed in the coord field. The coord field must contain an SoVRMLCoordinate node. SoVRMLIndexedFaceSet uses the indices in its coordIndex field to specify the polygonal faces. An index of -1 indicates that the current face has ended and the next one begins. The last face may (but does not have to be) followed by a -1. If the greatest index in the coordIndex field is N, then the SoVRMLCoordinate node must contain N+1 coordinates (indexed as 0-N). SoVRMLIndexedFaceSet is specified in the local coordinate system and is affected by parent transformations.ã•° ¨£¨N j€+€”‘€‚A€€€€€€€€€€€€€‚ÿFor descriptions of the coord, normal, and texCoord fields, see the SoVRMLCoordinate, SoVRMLNormal, and SoVRMLTextureCoordinate nodes.¯…À ¨R¨* "€ €”‘€‚A€‚ÿSee "Concepts - Lighting Model" for details on lighting equations and the interaction between textures, materials, and geometries.ણ¨>@¨6 :€U€”‘€‚A€€€€€‚ÿIf the color field is not NULL then it must contain an SoVRMLColor node, whose colors are applied to the vertices or R¨>@¨„ʧfaces of the SoVRMLIndexedFaceSet as follows: PR¨¿@¨1 2€ €T”!:‚!€ƒ€€‚ÿ•If colorPerVertex is FALSE, colors are applied to each face, as follows: Ïk>@¨ŽC¨d –€×€T”i:‚i€ƒ€€€€€€€€€€€€‚ƒ€€€€€€‚ÿ•If the colorIndex field is not empty, then they are used to choose one color for each face of the SoVRMLIndexedFaceSet. There must be at least as many indices in the colorIndex field as there are faces in the SoVRMLIndexedFaceSet. If the greatest index in the colorIndex field is N, then there must be N+1 colors in the SoVRMLColor node. The colorIndex field must not contain any negative entries. •If the colorIndex field is empty, then the colors are applied to each face of the SoVRMLIndexedFaceSet in order. There must be at least as many colors in the SoVRMLColor node as there are faces. ‚Q¿@¨D¨1 2€¢€T”!:‚!€ƒ€€‚ÿ•If colorPerVertex is TRUE, colors are applied to each vertex, as follows: Œ*ŽC¨œF¨b ’€U€T”i:‚i€ƒ€€€€€€€€€€€€€€€€€€‚ÿ•If the colorIndex field is not empty, then it is used to choose colors for each vertex of the SoVRMLIndexedFaceSet in exactly the same manner that the coordIndex field is used to choose coordinates for each vertex from the SoVRMLCoordinate node. The colorIndex field must contain at least as many indices as the coordIndex field, and must contain end-of-face markers (-1) in exactly the same places as the coordIndex field. If the greatest index in the colorIndex field is N, then there must be N+1 colors in the SoVRMLColor node. 4êD¨ÐG¨J b€Õ€T”i:‚i€ƒ€€€€€€€€€€‚ÿ•If the colorIndex field is empty, then the coordIndex field is used to choose colors from the SoVRMLColor node. If the greatest index in the coordIndex field is N, then there must be N+1 colors in the SoVRMLColor node. 貜F¨¸H¨6 :€e€”‘€‚i€€€€€‚ÿIf the normal field is NULL, then the browser should automatically generate normals, using creaseAngle to determine if and how normals are smoothed across shared vertices.>ÐG¨öI¨< F€€”‘€‚i€€€€€€€‚ÿIf the normal field is not NULL, then it must contain an SoVRMLNormal node, whose normals are applied to the vertices or faces of the SoVRMLIndexedFaceSet in a manner exactly equivalent to that described above for applying colors to vertices/faces. ˸H¨ýJ¨< F€—€”‘€‚i€€€€€€€‚ÿIf the texCoord field is not NULL, then it must contain an SoVRMLTextureCoordinate node. The texture coordinates in that node are applied to the vertices of the SoVRMLIndexedFaceSet as follows: »YöI¨¸M¨b ’€³€T”!:‚!€ƒ€€€€€€€€€€€€€€€€€€‚ÿ•If the texCoordIndex field is not empty, then it is used to choose texture coordinates for each vertex of the SoVRMLIndexedFaceSet in exactly the same manner that the coordIndex field is used to choose coordinates for each vertex from the SoVRMLCoordinate node. The texCoordIndex field must contain at least as many indices as the coordIndex field, and must contain end-of-face markers (-1) in exactly the same places as the coordIndex field. If the greatest index in the texCoordIndex field is N, then there must be N+1 texture coordinates in the SoVRMLTextureCoordinate node. iýJ¨!O¨J b€?€T”!:‚!€ƒ€€€€€€€€€€‚ÿ•If the texCoordIndex field is empty, then the coordIndex array is used to choose texture coordinates from the SoVRMLTextureCoordinate node. If the greatest index in the coordIndex field is N, then there must be N+1 texture coordinates in the SoVRMLTextureCoordinate node. ŒV¸M¨¹‚¨6 :€­€”‘€‚!€€€€€‚ÿIf the texCoord field is NULL, a default texture coordinate mapping is calculated using the bounding box of the shape. The longest dimension of the bounding box defin!O¨¹‚¨„ʧes the S coordinates, and the next longest defines the T coordinates. If two or all three dimensions of the bounding box are equal, then ties should be broken by choosing the X, Y, or Z dimension in that order of preference. The value of the S coordinate ranges from 0 to 1, from one end of the bounding box to the other. The T coordinate ranges between 0 and the ratio of the second greatest dimension of the bounding box to the greatest dimension. See the figure below for an illustration of default texture coordinates for a simple box shaped SoVRMLIndexedFaceSet with a bounding box with X dimension twice as large as the Z dimension which is twice as large as the Y dimension:5!O¨î‚¨1 2€ € ŒŒ‚!€ †"€4‚ÿ+¹‚¨ƒ¨( €€ ŒŒ‚!€ ‚ÿ5Nƒ¨1 2€ € ŒŒ‚!€ †"€5‚ÿŃƒ¨„¨B R€€”‘€‚!€€€€€€€€€‚ÿSee the introductory "Concepts - Geometry" section for a description of the ccw, solid, convex, and creaseAngle fields. ¢yNƒ¨µ„¨) "€ò€”‘€‚!€‚ÿNOTE: An indexed face set may not render or pick correctly if any of its polygons are self-intersecting or non-planar./ „¨ä„¨& €€‚!€‚ÿFIELDSCµ„¨'…¨2 4€"€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolccwÁ—䄨腨* "€/€”‘€‚A€‚ÿIndicates whether the vertices are ordered in a counter-clockwise direction when viewed from the outside (TRUE) or in a clockwise direction (FALSE).F'…¨.†¨2 4€(€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolconvex›r腨Ɇ¨) "€ä€”‘€‚A€‚ÿIndicates whether faces of a shape are convex (TRUE). If nothing is known about the faces, this value is FALSE.L.†¨‡¨2 4€4€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatcreaseAngleϥɆ¨ä‡¨* "€K€”‘€‚A€‚ÿIndicates the minimum angle (in radians) between two adjacent face normals required to form a sharp crease at the edge when default normals are computed and used.E‡¨)ˆ¨2 4€&€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolsolidºä‡¨ãˆ¨* "€!€”‘€‚A€‚ÿIf the shape encloses a volume, the value is TRUE. Used as a hint to perform backface culling. If nothing is known, the field value is FALSE.0 )ˆ¨‰¨& €€‚A€‚ÿMETHODSF㈨Y‰¨, (€4€T”A‚S~‚A€ƒ‚ÿSoVRMLIndexedFaceSet()8‰¨‘‰¨) "€€”‘€‚A€‚ÿConstructor.U#Y‰¨æ‰¨2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*‘‰¨9Š¨) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ 扨hŠ¨& €€‚A€‚ÿEVENTS3 9Š¨›Š¨) "€€”‘€‚A€‚ÿeventIn5ÊhŠ¨Ð‹¨k ¤€•€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ãYdb鉃‚ãYdb鉃‚ãYdb鉃‚ãYdb鉃‚ÿSoMFint32set_colorIndexSoMFint32set_coordIndexSoMFint32set_normalIndexSoMFint32set_texCoordIndexSoSFNodeset_colorSoSFNodeset_coordSoSFNodeset_normalSoSFNodeset_texCoord4 ›Š¨Œ¨) "€€”‘€‚A€‚ÿeventOut´jЋ¨¸Œ¨J d€Ô€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ãYdb鉃‚ãYdb鉃‚ÿSoSFNodecolor_changedSoSFNodecoord_changedSoSFNodenormal_changedSoSFNodetexCoord_changed8Œ¨ðŒ¨& €$€‚A€‚ÿACTION BEHAVIOR—V¸Œ¨‡¨A R€¬€”‘€‚Aã©öø(€‰ãɓ℉ããS¯+‰ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoGetBoundingBoxAction, SoCallbackAction=ðŒ¨Ä¨& €.€‚A€‚ÿFILE FORMAT/DEFAULTSA‡¨Ž¨* $€.€P„7|‚€‚ÿVRMLIndexedFaceSet {ÇĨ¨G \€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿcolorNULLcoordNULLnormalNULLtexCoordNULLccwTRUEcolorIndex[]colorPerVertexTRUEconvexTRUEcoordIndex[]creaseAngle0normalIndex[]normalPerVertexTRUEsolidTRUEtexCoordIndex[]}BŽ¨U¨1®…OòˆQÊU¨Ž¨jϨSoVRMLIndexedLine9¨Ž¨% €(€ˆˆ€‚ÿSoVRMLIndexedLine*U¨¸¨# €€€‚ÿNAMEpJŽ¨4À¨& €”€”‘€€‚ÿSoVRMLIndexedLine - abstract base¸¨4À¨¨ class for the SoVRMLIndexLineSet node3¸¨gÀ¨# € €€‚ÿINHERITS FROMò€4À¨YÁ¨r ²€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€ã )€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLVertexLine > SoVRMLIndexedLine. gÀ¨‡Á¨# €€€‚ÿSYNOPSIS€YYÁ¨¨' €²€”‘€€‚‚ÿ#include Fields from class SoVRMLIndexedLine:j0‡Á¨q¨: D€`€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32colorIndexSoMFInt32coordIndexN¨¿Â¨/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|q¨;Ĩn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¿Â¨“Ĩ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ;Ĩøƨ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH“Ĩ€Ç¨@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NøƨÎǨ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ހǨɨY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ÎǨ9ɨ& €€‚A€‚ÿDESCRIPTIONzKɨ³É¨/ .€–€”‘€‚A€€€‚ÿThis node is an abstract base class for the SoVRMLIndexedLineSet node./ 9ɨâɨ& €€‚A€‚ÿFIELDSK³É¨-ʨ2 4€2€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32colorIndexþÈâɨ+˨6 :€‘€”‘€‚A€€€€€‚ÿThe indices of the colors to use for the lines or vertices depending on the value of the colorPerVertex field. If NULL, the colors are applied to each line of the SoVRMLIndexedLineSet in order.K-ʨv˨2 4€2€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32coordIndex¡x+˨̨) "€ð€”‘€‚A€‚ÿIndices of the coordinates that the indexed line set uses as its vertices. The coordinates connect to form the lines.0 v˨G̨& €€‚A€‚ÿMETHODSU#̨œÌ¨2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*G̨į̈) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ œÌ¨ͨ& €€‚A€‚ÿEVENTS3 į̈Qͨ) "€€”‘€‚A€‚ÿeventInŒJͨÝͨB T€”€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ãYdb鉃‚ÿSoSFNodeset_colorSoSFBoolset_colorPerVertexSoSFNodeset_coord4 QͨΨ) "€€”‘€‚A€‚ÿeventOut˜VÝͨ©Î¨B T€¬€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ãYdb鉃‚ÿSoSFNodecolor_changedSoSFBoolcolorPerVertex_changedSoSFNodecoord_changed=ΨæΨ& €.€‚A€‚ÿFILE FORMAT/DEFAULTS„[©Î¨jϨ) "€¶€”‘€‚A€‚ÿThis is an abstract base class. See the derived class for the format and default values.EæΨ¯Ï¨1ùÑQ&ŠR˯Ϩ ©¨O©SoVRMLIndexedLineSet<jϨ ©% €.€ˆˆ€‚ÿSoVRMLIndexedLineSet¯Ï¨ ©jϨ*¯Ï¨6©# €€€‚ÿNAME[5 ©‘©& €j€”‘€€‚ÿSoVRMLIndexedLineSet - indexed polyline shape node36©Ä©# € €€‚ÿINHERITS FROM›‘©Ý©~ Ê€7€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€ã )€‰€ãrïØ›€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLVertexLine > SoVRMLIndexedLine > SoVRMLIndexedLineSet. Ä© ©# €€€‚ÿSYNOPSISƒ\Ý©Ž©' €¸€”‘€€‚‚ÿ#include Fields from class SoVRMLIndexedLine:j0 ©ø©: D€`€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32colorIndexSoMFInt32coordIndexO&Ž©G©) "€L€”‘€‚A€‚ÿFields from class SoVRMLVertexLine:€>ø©Ç©B T€|€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ãU×S鉃‚ÿSoSFNodecolorSoSFNodecoordSoSFBoolcolorPerVertex\-G©#©/ .€Z€”‘€‚A€ã슆/‰‚ÿMethods from class SoVRMLIndexedLineSet:U#Ç©x©2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()N#©Æ©/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|x©B©n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Æ©š©/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØB©ÿ© 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHš©‡ ©@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nÿ©Õ ©/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ‡ © ©Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Õ ©@ ©& €€‚A€‚ÿDESCRIPTIONR) ©’ ©) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?@ ©Ñ ©& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&’ ©$ ©- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.ß¯Ñ ©©0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.t#$ ©ƒ@©Q p€G€”‘€‚A€€€€€€€€€€€€€€ ‚ÿThe SoVRMLIndexedLineSet node represents a 3D geometry formed by constructing polylines from 3D points specified in the coord field. SoVRMLIndexedLineSet uses the indices in its coordIndex field to specify the polylines by connecting together points from the coord field. An index of -1 indicates that the current polyline has ended and the next one begins. The last polyline may (but does not have to be) followed by©ƒ@©jϨ a -1. SoVRMLIndexedLineSet is specified in the local coordinate system and is affected by parent transformations.¤o©'A©5 :€Þ€”‘€‚A€€€€€‚ÿThe coord field specifies the 3D vertices of the line set and is specified by an SoVRMLCoordinate node. ƒZƒ@©ªA©) "€´€”‘€‚A€‚ÿLines are not lit, not texture-mapped, or not collided with during collision detection.¸‚'A©bB©6 :€€”‘€‚A€€€€€‚ÿIf the color field is not NULL, it must contain an SoVRMLColor node, and the colors are applied to the line(s) as follows: T#ªA©¶B©1 2€F€T”!:‚!€ƒ€€‚ÿ•If colorPerVertex is FALSE: ×mbB©E©j ¢€Û€T”i:‚i€ƒ€€€€€€€€€€€€€€‚ƒ€€€€€€‚ÿ•If the colorIndex field is not empty, then one color is used for each polyline of the SoVRMLIndexedLineSet. There must be at least as many indices in the colorIndex field as there are polylines in the SoVRMLIndexedLineSet. If the greatest index in the colorIndex field is N, then there must be N+1 colors in the SoVRMLColor node. The colorIndex field must not contain any negative entries. •If the colorIndex field is empty, then the colors are applied to each polyline of the SoVRMLIndexedLineSet in order. There must be at least as many colors in the SoVRMLColor node as there are polylines. K ¶B©ØE©+ &€@€T”!:‚!€ƒ‚ÿ•If colorPerVertex is TRUE: …#E©]H©b ’€G€T”i:‚i€ƒ€€€€€€€€€€€€€€€€€€‚ÿ•If the colorIndex field is not empty, then colors are applied to each vertex of the SoVRMLIndexedLineSet in exactly the same manner that the coordIndex field is used to supply coordinates for each vertex from the SoVRMLCoordinate node. The colorIndex field must contain at least as many indices as the coordIndex field and must contain end-of-polyline markers (-1) in exactly the same places as the coordIndex field. If the greatest index in the colorIndex field is N, then there must be N+1 colors in the SoVRMLColor node. 4êØE©‘I©J b€Õ€T”i:‚i€ƒ€€€€€€€€€€‚ÿ•If the colorIndex field is empty, then the coordIndex field is used to choose colors from the SoVRMLColor node. If the greatest index in the coordIndex field is N, then there must be N+1 colors in the SoVRMLColor node. F ]H©×J©< F€€”‘€‚i€€€€€€€‚ÿIf the color field is NULL and there is a Material defined for the SoVRMLAppearance affecting this IndexedLineSet, then use the emissiveColor of the Material to draw the lines. See "Concepts - Lighting Model, Lighting Off" for details on lighting equations.0 ‘I©K©& €€‚i€‚ÿMETHODSF×J©MK©, (€4€T”A‚S~‚A€ƒ‚ÿSoVRMLIndexedLineSet()8K©…K©) "€€”‘€‚A€‚ÿConstructor.U#MK©ÚK©2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*…K©-L©) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ÚK©\L©& €€‚A€‚ÿEVENTS3 -L©L©) "€€”‘€‚A€‚ÿeventIn¬b\L©;M©J d€Ä€T”A‚S~‚AãYdb选ƒ‚ã-Ï]‰ƒ‚ãYdb鉃‚ã-Ï]‰ƒ‚ÿSoSFNodeset_colorSoMFInt32set_colorIndexSoSFNodeset_coordSoMFInt32set_coordIndex4 L©oM©) "€€”‘€‚A€‚ÿeventOutn4;M©ÝM©: D€h€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ÿSoSFNodecolor_changedSoSFNodecoord_changed8oM©N©& €$€‚A€‚ÿACTION BEHAVIOR—VÝM©¬N©A R€¬€”‘€‚Aã©öø(€‰ãɓ℉ããS¯+‰ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoGetBoundingBoxAction, SoCallbackAction=N©éN©& €.€‚A€‚ÿFILE FORMAT/DEFAULTSA¬N©*O©* $€.€P„7|‚€‚ÿVRMLIndexedLineSet {~JéN©¨O©4 8€”€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿcolorNULLcolorIndex[]colorPerVertexTRUEcoordNULLcoordIndex[]}C*O© €©1ÐòˆQÛSÌ €©F€©†Ä©SoVRMLIndexedShape¨O© €©¨O©:¨O©F€©% €*€ˆˆ€‚ÿSoVRMLIndexedShape* €©p€©# €€€‚ÿNAMEjDF€©Ú€©& €ˆ€”‘€€‚ÿSoVRMLIndexedShape - abstract base class for SoVRMLIndexedFaceSet3p€© ©# € €€‚ÿINHERITS FROMô‚Ú€©‚©r ²€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€ã&òO€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLVertexShape > SoVRMLIndexedShape. ©/‚©# €€€‚ÿSYNOPSIS‚[‚©±‚©' €¶€”‘€€‚‚ÿ#include Fields from class SoVRMLIndexedShape:¬b/‚©]ƒ©J d€Ä€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32colorIndexSoMFInt32coordIndexSoMFInt32normalIndexSoMFInt32texCoordIndexP'±‚©­ƒ©) "€N€”‘€‚A€‚ÿFields from class SoVRMLVertexShape:Ù]ƒ©†„©Z „€þ€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ãYdb鉃‚ãYdb鉃‚ãYdb鉃‚ãYdb鉃‚ÿSoSFNodecolorSoSFNodecolorPerVertexSoSFNodecoordSoSFNodenormalSoSFNodenormalPerVertexSoSFNodetexCoordN­ƒ©Ô„©/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|†„©P†©n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ô„©¨†©/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØP†© ‰© 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¨†©•‰©@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N ‰©ã‰©/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ•‰©‹©Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4㉩N‹©& €€‚A€‚ÿDESCRIPTIONrC‹©À‹©/ .€†€”‘€‚A€€€‚ÿThis node is the abstract base class for SoVRMLIndexedFaceSet./ N‹©ï‹©& €€‚A€‚ÿFIELDSKÀ‹©:Œ©2 4€2€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32colorIndexþÈï‹©8©6 :€‘€”‘€‚A€€€€€‚ÿThe indices of the colors to use for the faces or vertices depending on the value of the colorPerVertex field. If NULL, the colors are applied to each face of the SoVRMLIndexedFaceSet in order.K:Œ©ƒ©2 4€2€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32coordIndex¡x8©$Ž©) "€ð€”‘€‚A€‚ÿIndices of the coordinates that the indexed face set uses as its vertices. The coordinates connect to form the faces.Lƒ©pŽ©2 4€4€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32normalIndexÊ$Ž©p©6 :€•€”‘€‚A€€€€€‚ÿThe indices of the normals to use for the faces or vertices depending onthe value of the normalPerVertex field. If NULL, the normals are applied to each face of the SoVRMLIndexedFaceSet in order.NpŽ©¾©2 4€8€T”A‚S~‚Aã-Ï]€‰ƒ‚ÿSoMFInt32texCoordIndexÎp©ÎÀ©6 :€€”‘€‚A€€€€€‚ÿThe indices¾©ÎÀ©¨O© of the texture coordinates for each vertex of the SoVRMLIndexedFaceSet. If this field is NULL, the coordIndex field is used to choose texture coordinates from the texture coordinate node.0 ¾©þÀ©& €€‚A€‚ÿMETHODSU#ÎÀ©SÁ©2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*þÀ©¦Á©) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ SÁ©ÕÁ©& €€‚A€‚ÿEVENTS3 ¦Á©©) "€€”‘€‚A€‚ÿeventIn¼rÕÁ©Ä©J d€ä€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32set_colorIndexSoMFInt32set_coordIndexSoMFInt32set_normalIndexSoMFInt32set_texCoordIndex4 ©ø©) "€€”‘€‚A€‚ÿeventOutÍ‚Ä©ÅéK d€€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32colorIndex_changedSoMFInt32coordIndex_changedSoMFInt32normalIndex_changedSoMFInt32texCoordIndex_changed=ø©Ä©& €.€‚A€‚ÿFILE FORMAT/DEFAULTS„[Åé†Ä©) "€¶€”‘€‚A€‚ÿThis is an abstract base class. See the derived class for the format and default values.= Ä©ÃÄ©1â*&ŠR2ˆTÍÃÄ©÷Ä©tNªSoVRMLInline4†Ä©÷Ä©% €€ˆˆ€‚ÿSoVRMLInline*ÃÄ©!Å©# €€€‚ÿNAMEkE÷Ä©ŒÅ©& €Š€”‘€€‚ÿSoVRMLInline - grouping node that refers to children through a URL3!Å©¿Å©# € €€‚ÿINHERITS FROMŽAŒÅ©MÆ©M j€‚€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLInline. ¿Å©{Æ©# €€€‚ÿSYNOPSISU/MÆ©ÐÆ©& €^€”‘€€‚ÿ#include ”;{Æ©dÈ©Y €€w€T”A‚S~‚A€ƒãXíʉã¼ö³‰‚ƒ€ƒ€€ƒ€€ƒ€‚ÿtypedef voidSoVRMLInlineFetchURLCB(const SbString &url,void *userData,SoVRMLInline *node)enum BboxVisibility{SoVRMLInline::NEVER,Do not show bounding boxSoVRMLInline::UNTIL_LOADED,Show bounding box (if specified) until data is loadedSoVRMLInline::ALWAYSShow bounding box along with data}K"ÐÆ©¯È©) "€D€”‘€‚A€‚ÿFields from class SoVRMLInline:?dÈ©0É©B T€~€T”A‚S~‚Aã*{£€‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ÿSoMFStringurlSoSFVec3fbboxCenterSoSFVec3fbboxSizeT%¯È©„É©/ .€J€”‘€‚A€ã¼ö³‰‚ÿMethods from class SoVRMLInline:.Á0É©²Ë©m ¨€ƒ€T”A‚S~‚A€ƒ‚ƒãXíʉ‚ãXíʉƒ‚ã«]à—‰ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒ‚ƒ‚ÿSoVRMLInline()voidsetFullURLName(const SbString &urlin)const SbString &getFullURLName()SoGroup *copyChildren() constvoidrequestURLData()SbBoolisURLDataRequested() constSbBoolisURLDataHere() constvoidcancelURLDataRequest()voidsetChildData(SoNode * urlData)SoNode *getChildData() conststatic voidsetFetchURLCallBack(SoVRMLInlineFetchURLCB *f, void *userData)static voidsetBoundingBoxVisibility(BboxVisibility b)Tÿ„É©Í©U x€ÿ€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãB-9‰ƒ‚ÿstatic BboxVisibilitygetBoundingBoxVisibility()static voidsetBoundingBoxColor(SbColor &c)static const SbColor &getBoundingBoxColor()static voidsetReadAsSoFile(SbBool onOff)static SbBoolgetReadAsSoFile()static SoTypegetClassTypeId()N²Ë©TÍ©/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Í©ÐΩn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)TÍ©(Ï©/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÐΩ™ª 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreE(Ï©™ª†Ä©qual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH(Ï©!ª@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N™ªoª/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ!ª¦ªY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4oªÚª& €€‚A€‚ÿDESCRIPTION鹦ªÃª0 .€s€”‘€‚A€€€‚ÿThis node refers to children through a URL (Universal Resource Locator). The application is responsible for actually fetching data from the URL for an SoVRMLInline node to display.W.Úªª) "€\€”‘€‚A€‚ÿSee also the VRML 2.0 Specification, below.?êYª& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&ª¬ª- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯Yª‹ª0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.ƬªQ ªE X€€”‘€‚A€€€€€€€€€€ ‚ÿThe SoVRMLInline node is a grouping node that reads its children data from a location in the World Wide Web. Exactly when its children are read and displayed is not defined; reading the children may be delayed until the SoVRMLInline is actually visible to the viewer. The url field specifies the URL containing the children. An SoVRMLInline with an empty URL does nothing. I‹ªš ª* "€?€”‘€‚A€‚ÿAn Inline's URLs shall refer to a valid VRML file that contains a list of children nodes at the top level. See "Concepts - Grouping and Children Nodes". The results are undefined if the URL refers to a file that is not VRML or if the file contains non-children nodes at the top level./ÿQ ªÉ ª0 .€ÿ€”‘€‚A€€€‚ÿIf multiple URLs are specified, the browser may display a URL of a lower preference file while it is obtaining, or if it is unable to obtain the higher preference file. See "Concepts - URLS and URNs" for details on the url field and preference order._š ª(ªN j€#€”‘€‚A€€€€€€€€€€€€€‚ÿThe bboxCenter and bboxSize fields specify a bounding box that encloses the SoVRMLInlines's children. This is a hint that may be used for optimization purposes. If the specified bounding box is smaller than the actual bounding box of the children at any time, then the results are undefined. A default bboxSize value, (-1 -1 -1), implies that the bounding box is not specified and if needed must be calculated by the browser. See "Concepts - Bounding Boxes" for a description of the bboxCenter and bboxSize fields./ É ªWª& €€‚A€‚ÿFIELDSE(ªœª2 4€&€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringurlÆœWªbª* "€9€”‘€‚A€‚ÿURL which the application will be called back to fetch when this node is activated by a left mouse click (e.g. "http://www.sgi.com/Technology/Inventor").h.œªÊª: D€\€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fbboxCenterSoSFVec3fbboxSize^5bª4@ª) "€j€”‘€‚A€‚ÿSpecify a boʪ4@ª†Ä©unding box that encloses the children.0 ʪd@ª& €€‚A€‚ÿMETHODS>4@ª¢@ª, (€$€T”A‚S~‚A€ƒ‚ÿSoVRMLInline()8d@ªÚ@ª) "€€”‘€‚A€‚ÿConstructor.S¢@ªgAª: D€¦€T”A‚S~‚A€ƒãXíʉ‚ãXíʉƒ‚ÿvoidsetFullURLName(const SbString &urlin)const SbString &getFullURLName()‘aÚ@ªøBª0 .€Ã€”‘€‚A€€€‚ÿIf the url field is not a local file and contains a relative URL (e.g. "foo.wrl" instead of "http://bogus.com/foo.wrl"), the inline cannot resolve the URL reference. This method allows the application to tell the inline what its full URL should be. getFullURLName returns the fullURL set here, or if not set, returns the contents of the name field.U#gAªMCª2 4€F€T”A‚S~‚Aã«]à—€‰ƒ‚ÿSoGroup *copyChildren() constM$øBªšCª) "€H€”‘€‚A€‚ÿReturn (hidden) children as Group—[MCª1Dª< H€¶€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidrequestURLData()SbBoolisURLDataRequested() constSbBoolisURLDataHere() constsJšCª¤Dª) "€”€”‘€‚A€‚ÿRequest that URL data be fetched, and tell whether the URL data is hereJ1DªîDª, (€<€T”A‚S~‚A€ƒ‚ÿvoidcancelURLDataRequest()?¤Dª-Eª) "€,€”‘€‚A€‚ÿCancel URL request.‚HîDª¯Eª: D€€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvoidsetChildData(SoNode * urlData)SoNode *getChildData() constª€-EªYFª* "€€”‘€‚A€‚ÿSet/get the child data the inline should display. Application should call this after it has fetched data for the inline node.yM¯EªÒFª, (€š€T”A‚S~‚A€ƒ‚ÿstatic voidsetFetchURLCallBack(SoVRMLInlineFetchURLCB *f, void *userData)W.YFª)Gª) "€\€”‘€‚A€‚ÿAllow the viewer to fetch URLs when needed.˜jÒFªÁGª. ,€Ô€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidsetBoundingBoxVisibility(BboxVisibility b)static BboxVisibilitygetBoundingBoxVisibility()f=)Gª'Hª) "€z€”‘€‚A€‚ÿAllow the user to specify how bounding boxes are displayed™_ÁGªÀHª: D€¾€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ÿstatic voidsetBoundingBoxColor(SbColor &c)static const SbColor &getBoundingBoxColor()\3'HªIª) "€f€”‘€‚A€‚ÿAllow the user to specify the bounding box colorŠPÀHª¦Iª: D€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿstatic voidsetReadAsSoFile(SbBool onOff)static SbBoolgetReadAsSoFile() ÓIª¯Jª6 :€§€”‘€‚A€€€€€‚ÿSets/gets the ReadAsSoFile flag. If TRUE, Assume that "url" points to other Inventor files on local filesystem, and load them directly as if this were an SoFile node instead of using VRMLInlineFetchURLCB.U#¦IªKª2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¯JªWKª) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ Kª†Kª& €€‚A€‚ÿEVENTS3 WKª¹Kª) "€€”‘€‚A€‚ÿeventInI†KªLª2 4€.€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringset_url4 ¹Kª6Lª) "€€”‘€‚A€‚ÿeventOutMLªƒLª2 4€6€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringurl_changed86Lª»Lª& €$€‚A€‚ÿACTION BEHAVIOR呃Lª MªT v€#€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãàê‰ã#º…ö‰ã¹_ØS‰ãòÓ}ª‰‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoHandleEventAction, SoPickAction, SoGetMatrixAction, SoSearchAction=»LªÝMª& €.€‚A€‚ÿFILE FORMAT/DEFAULTS9 MªNª* $€€P„7|‚€‚ÿVRMLInline {^.ÝMªtNª0 0€\€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿurl[]bboxCenter0 0 0bboxSize-1 -1 -1}CNª·Nª1?ÛSƒÌηNªñNª¦ÄªSoVRMLInterpolator:tNªñNª% €*€ˆˆ€‚ÿSoVRMLInterpolator*·NªOª# €€€‚ÿNAMEhBñNªƒOª& €„€”‘€€‚ÿSoVRMLInterpolator - abstract base class for VRML interpolators3Oª¶Oª# € €€‚ÿINHERITS FROM”GƒOªV€ªM j€Ž€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€¶OªV€ªtNª‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLInterpolator2 ¶Oªˆ€ª& €€€€ ‚ÿSYNOPSIS‹^V€ªª- *€¼€”‘€€‚ãéf‰‚ÿ#include Methods from class SoVRMLInterpolator:&¯ˆ€ª9ƒªw ¼€_€T”A‚S~‚A€ƒ‚ã`Zh‰ƒãúß~6‰‚㑶p6‰ƒã`Zh‰ãúß~6‰‚ƒã`Zh‰‚ãéf‰ƒ‚ãéf‰ƒãúß~6‰‚ƒãúß~6‰‚ÿvirtual intgetOutputs(SoVRMLInterpOutputList &list) constSoVRMLInterpOutput *getOutput(const SbName &outputName) constSbBoolgetOutputName(const SoVRMLInterpOutput *output,SbName &outputName) constvoidevaluateWrapper(SoVRMLInterpOutput *interp)SoVRMLInterpolator *copy() conststatic SoVRMLInterpolator *getByName(const SbName &name)static intgetByName(const SbName &name,SoVRMLInterpList &list)Nª‡ƒª/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|9ƒª…ªn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)‡ƒª[…ª/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ…ªÀ‡ª 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH[…ªHˆª@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÀ‡ª–ˆª/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞHˆªÍ‰ªY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4–ˆªŠª& €€‚A€‚ÿDESCRIPTIONyM͉ªzŠª, (€š€”‘€‚A€€‚ÿSoVRMLInterpolator is the abstract base class for all VRML interpolators.0 ŠªªŠª& €€‚A€‚ÿMETHODSi=zŠª‹ª, (€z€T”A‚S~‚A€ƒ‚ÿvirtual intgetOutputs(SoVRMLInterpOutputList &list) constDªŠªWŒª6 :€€”‘€‚A€€€€€‚ÿReturns a list of outputs in this VRML interpolator. This is virtual so that private outputs can be hidden. Use getOutputName() to get the names of the fields, and use getConnectionType() to figure out their types. Returns the number of outputs added to the list.}E‹ªÔŒª8 @€Š€T”A‚S~‚Aã`Zh€‰ƒãúß~6‰‚ÿSoVRMLInterpOutput *getOutput(const SbName &outputName) constžuWŒªrª) "€ê€”‘€‚A€‚ÿReturns a pointer to the VRML interpolator output with the given name. If no such output exists, NULL is returned.˜YÔŒª Žª? N€²€T”A‚S~‚A㑶p6€‰ƒã`Zh‰ãúß~6‰‚ÿSbBoolgetOutputName(const SoVRMLInterpOutput *output,SbName &outputName) constÄ”rªÎŽª0 .€)€”‘€‚A€€€‚ÿReturns (in outputName) the name of the output pointed to. Returns FALSE if the output is not contained within the VRML interpolator instance. g5 Žª5ª2 4€j€T”A‚S~‚A€ƒã`Zh‰‚ÿvoidevaluateWrapper(SoVRMLInterpOutput *interp)[2ÎŽªª) "€d€”‘€‚A€‚ÿWrapper for the user's evaluate() interpolator.X&5ª Àª2 4€L€T”A‚S~‚Aãéf€‰ƒ‚ÿSoVRMLInterpolator *copy() constª ÀªtNª·ªÃÀª* "€€”‘€‚A€‚ÿCreates and returns a copy of the VRML interpolator. All connections to inputs are copied as is (without copying what's at the other end).Ń ÀªˆÁªB R€€T”A‚S~‚A€ãéf‰ƒãúß~6‰‚ƒãúß~6‰‚ÿstatic SoVRMLInterpolator *getByName(const SbName &name)static intgetByName(const SbName &name,SoVRMLInterpList &list)ÓÃÀª[ª6 :€;€”‘€‚A€€€€€‚ÿA VRML interpolator can be given a name using setName() (which is a method on SoBase). These methods allow VRML interpolators to be looked up by name.<ˆÁª—ª& €,€‚A€‚ÿFILE FORMAT/DEFAULT“j[ª*ê) "€Ô€”‘€‚A€‚ÿThis is an abstract class. See the reference page of a derived class for the format and default values.1 —ª[ê& €€‚A€‚ÿSEE ALSOKÓ*ê¦Äªx ¾€§€”‘€‚Aã7Ùïu€‰€ãŽD,€‰€ã16aø€‰€ãLžË€‰€ãOa*$€‰€ãæ†zy€‰€ãRíß‘€‰‚ÿSoVRMLColorInterpolator, SoVRMLCoordinateInterpolator, SoVRMLNormalInterpolator, SoVRMLOrientationInterpolator, SoVRMLPositionInterpolator, SoVRMLScalarInterpolator, SoVRMLTimeSensor: [êàĪ1î1ÙW§„WÏàĪŪw†«SoVRMLLOD4 ¦ÄªŪ( €€ˆˆ‚A€‚ÿSoVRMLLOD-àĪAŪ& €€‚A€‚ÿNAMEkBŪ¬Åª) "€„€”‘€‚A€‚ÿSoVRMLLOD - distance-based level-of-detail switching group node6AŪâŪ& € €‚A€‚ÿINHERITS FROM¨L¬ÅªŠÆª\ ˆ€˜€”‘€‚Aã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoVRMLLOD1 âŪ»Æª& €€‚A€‚ÿSYNOPSISU,ŠÆªǪ) "€X€”‘€‚A€‚ÿ#include H»ÆªXǪ) "€>€”‘€‚A€‚ÿFields from class SoVRMLLOD:z8ǪÒǪB T€p€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ã”5‰ƒ‚ã'0]‰ƒ‚ÿSoMFNodelevelSoSFVec3fcenterSoMFFloatrangeQ"XǪ#Ȫ/ .€D€”‘€‚A€ã^Ή‚ÿMethods from class SoVRMLLOD:,µÒǪOʪw ¼€k€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒ‚ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ÿSoVRMLLOD()SoVRMLLOD(int nLevels)static SoTypegetClassTypeId()virtual SbBoolaffectsState() constvoidaddLevel(SoNode *level1)voidinsertLevel(SoNode *level1,int newLevelIndex)SoNode *getLevel(int index) constintfindLevel(const SoNode *level1) constintgetNumLevels() constvoidremoveLevel(int index)voidremoveLevel(SoNode *level1)voidremoveAllLevels()voidreplaceLevel(int index,SoNode *newLevel)u<#ȪÄʪ9 B€x€T”A‚S~‚A€ƒã’n%9‰ã’n%9‰‚ÿvoidreplaceLevel(SoNode *oldLevel,SoNode *newLevel)NOʪ˪/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÄʪŽÌªn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)˪æ̪/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:e؎̪KϪ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHæ̪ÓϪ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NKϪ-«/ .€>€”‘€‚A€ã}9‰ÓϪ-«¦Äª‚ÿMethods from class SoBase:7ÞÓϪd«Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4-«˜«& €€‚A€‚ÿDESCRIPTIONÒ–d«j«< F€-€”‘€‚A€€€€€€€‚ÿThe SoVRMLLOD node allows applications to switch between various levels of detail or complexity for a given object, based on the distance from the user. The level field contains a list of nodes that represent the same object or objects at varying levels of detail, from highest to the lowest level of detail, and the range field specifies the ideal distances at which to switch between the levels.Éo˜«3«Z ‚€ß€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿThe center field is a translation offset in the local coordinate system that specifies the center of the SoVRMLLOD object for distance calculations. In order to calculate which level to display, first the distance is calculated from the viewpoint, transformed into the local coordinate space of the SoVRMLLOD node, (including any scaling transformations), to the center point of the SoVRMLLOD. If the distance is less than the first value in the range field, then the first level of the SoVRMLLOD is drawn. If between the first and second values in the range field, the second level is drawn, and so on. €>j«³«B R€}€”‘€‚A€€€€€€€€€‚ÿIf there are N values in the range field, the SoVRMLLOD shall have N+1 nodes in its level field. Specifying too few levels will result in the last level being used repeatedly for the lowest levels of detail; if more levels than ranges are specified, the extra levels will be ignored. The exception to this rule is to leave the range field empty, which is a hint to the browser that it should choose a level automatically to maintain a constant display rate. Each value in the range field should be greater than the previous value; otherwise results are undefined.?3«ò«& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&³«E «- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ò«$ «0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.–WE «º «? L€¯€”‘€‚A€€€€€€€€ ‚ÿThe SoVRMLLOD node specifies various levels of detail or complexity for a given object, and provides hints for browsers to automatically choose the appropriate version of the object based on the distance from the user. The level field contains a list of nodes that represent the same object or objects at varying levels of detail, from highest to the lowest level of detail, and the range field specifies the ideal distances at which to switch between the levels. See the "Concepts - Grouping and Children Nodes" section for a details on the types of nodes that are legal values for level.Éo$ «@«Z ‚€ß€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿThe center field is a translation offset in the local coordinate system that specifies the center of the SoVRMLLOD object for distance calculations. In order to calculate which level to display, first the distance is calculated from the viewpoint, transformed into the local coordinate space of the SoVRMLLOD node, (including any scaling transformations), to the center point of the SoVRMLLOD. If the distance is less than the first value in the range field, then the first levelº «@«¦Äª of the SoVRMLLOD is drawn. If between the first and second values in the range field, the second level is drawn, and so on. €>º «C«B R€}€”‘€‚A€€€€€€€€€‚ÿIf there are N values in the range field, the SoVRMLLOD shall have N+1 nodes in its level field. Specifying too few levels will result in the last level being used repeatedly for the lowest levels of detail; if more levels than ranges are specified, the extra levels will be ignored. The exception to this rule is to leave the range field empty, which is a hint to the browser that it should choose a level automatically to maintain a constant display rate. Each value in the range field should be greater than the previous value; otherwise results are undefined.ñ»@«F«6 :€w€”‘€‚A€€€€€‚ÿAuthors should set SoVRMLLOD ranges so that the transitions from one level of detail to the next are smooth. Browsers may adjust which level of detail is displayed to maintain interactive frame rates, to display an already-fetched level of detail while a higher level of detail (contained in an Inline node) is fetched, or might disregard the author-specified ranges for any other implementation-dependent reason. For best results, specify ranges only where necessary, and nest SoVRMLLOD nodes with and without ranges. Browsers should try to honor the hints given by authors, and authors should try to give browsers as much freedom as they can to choose levels of detail based on performance.SC«SG«? L€)€”‘€‚A€€€€€€€€‚ÿSoVRMLLOD nodes are evaluated top-down in the scene graph. Only the descendants of the currently selected level are rendered and evaluated. Note that all nodes under an SoVRMLLOD node continue to receive and send events regardless of which SoVRMLLOD level is active./ F«‚G«& €€‚A€‚ÿFIELDSESG«ÇG«2 4€&€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodelevel•l‚G«\H«) "€Ø€”‘€‚A€‚ÿList of nodes that request the same object or objects at varying levels of detail from highest to lowest.GÇG«£H«2 4€*€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fcenter™j\H«M«) "€J€”‘€‚A€‚ÿAdds a level as last one in group.k8ðL«©M«3 6€p€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidinsertLevel(SoNode *level1,int newLevelIndex)i@>M«N«) "€€€”‘€‚A€‚ÿAdds a level so that it becomes the one with the given index.Y'©M«kN«2 4€N€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *getLevel(int index) constN%N«¹N«) "€J€”‘€‚A€‚ÿReturns pointer to nth level node.`.kN«O«2 4€\€T”A‚S~‚A€ƒã’n%9‰‚ÿintfindLevel(const SoNode *level1) constT+¹N«mO«) "€V€”‘€‚A€‚ÿFinds index of given level within group.GO«´O«, (€6€T”A‚S~‚A€ƒ‚ÿintgetNumLevels() constEmO« €«) "€8€”‘€‚A€‚ÿReturns number of levels.´O« €«¦ÄªJ´O«V€«, (€<€T”A‚S~‚A€ƒ‚ÿvoidremoveLevel(int index)V- €«¬€«) "€Z€”‘€‚A€‚ÿRemoves level with given index from group.W%V€««2 4€J€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidremoveLevel(SoNode *level1)]4¬€«`«) "€h€”‘€‚A€‚ÿRemoves first instance of given level from group.E«¥«, (€2€T”A‚S~‚A€ƒ‚ÿvoidremoveAllLevels()J!`«ï«) "€B€”‘€‚A€‚ÿRemoves all levels from group.f3¥«U‚«3 6€f€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidreplaceLevel(int index,SoNode *newLevel)[2ï«°‚«) "€d€”‘€‚A€‚ÿReplaces level with given index with new level.u<U‚«%ƒ«9 B€x€T”A‚S~‚A€ƒã’n%9‰ã’n%9‰‚ÿvoidreplaceLevel(SoNode *oldLevel,SoNode *newLevel)b9°‚«‡ƒ«) "€r€”‘€‚A€‚ÿReplaces first instance of given level with new level./ %ƒ«¶ƒ«& €€‚A€‚ÿEVENTS3 ‡ƒ«éƒ«) "€€”‘€‚A€‚ÿeventInI¶ƒ«2„«2 4€.€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodeset_level4 郫f„«) "€€”‘€‚A€‚ÿeventOutM2„«³„«2 4€6€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodelevel_changed8f„«ë„«& €$€‚A€‚ÿACTION BEHAVIORÆy³„«±…«M j€ò€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉ãòÓ}ª‰ãeY ‰‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction, SoSearchAction, SoWriteAction=ë„«î…«& €.€‚A€‚ÿFILE FORMAT/DEFAULTS6 ±…«$†«* $€€P„7|‚€‚ÿVRMLLOD {S#î…«w†«0 0€F€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿlevel[]center0 0 0range[]}< $†«³†«1)«Í ƒUг†«æ†«uÉ«SoVRMLLight3w†«æ†«% €€ˆˆ€‚ÿSoVRMLLight*³†«‡«# €€€‚ÿNAMEgA憫w‡«& €‚€”‘€€‚ÿSoVRMLLight - abstract base class for all VRML 2.0 light nodes3‡«ª‡«# € €€‚ÿINHERITS FROM@w‡«7ˆ«M j€€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLLight. ª‡«eˆ«# €€€‚ÿSYNOPSIStM7ˆ«Ùˆ«' €š€”‘€€‚‚ÿ#include Fields from class SoVRMLLight:ŸUeˆ«x‰«J d€ª€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ÿSoSFFloatambientIntensitySoSFColorcolorSoSFFloatintensitySoSFBoolonK"Ùˆ«Ã‰«) "€D€”‘€‚A€‚ÿMethods from class SoVRMLLight:U#x‰«Š«2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()NÉ«fŠ«/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Š«â‹«n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)fŠ«:Œ«/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØâ‹«ŸŽ« 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH:Œ«'«@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NŸŽ«u«/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ'«¸À«Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete(u«¸À«w†«) constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4u«ìÀ«& €€‚A€‚ÿDESCRIPTIONƒV¸À«o«- (€­€”‘€‚A€€‚ÿSoVRMLLight is the abstract base class for all light nodes. A light node defines an illumination source that may affect subsequent shapes in the scene graph, depending on the current lighting style. Light sources are affected by the current transformation. A light node under a transform does not affect any object outside that transform./ ìÀ«žÂ«& €€‚A€‚ÿFIELDSQo«ï«2 4€>€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatambientIntensitykBžÂ«Zë) "€„€”‘€‚A€‚ÿSpecifies the brightness of the ambient emissions of the light.F﫠ë2 4€(€T”A‚S~‚Aãð@I1€‰ƒ‚ÿSoSFColorcolora8ZëÄ«) "€p€”‘€‚A€‚ÿSpecifies the spectral color properties of the light.J Ã«KÄ«2 4€0€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatintensitykBÄ«¶Ä«) "€„€”‘€‚A€‚ÿSpecifies the brightness of the direct emission from the light.BKÄ«øÄ«2 4€ €T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolond;¶Ä«\Å«) "€v€”‘€‚A€‚ÿSpecifies whether the light is on (TRUE) or off (FALSE).0 øÄ«ŒÅ«& €€‚A€‚ÿMETHODSU#\Å«áÅ«2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ŒÅ«4Æ«) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ áÅ«cÆ«& €€‚A€‚ÿEVENTS3 4Æ«–Æ«) "€€”‘€‚A€‚ÿeventIn¯ecÆ«EÇ«J d€Ê€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ÿSoSFFloatset_ambientIntensitySoSFColorset_colorSoSFFloatset_intensitySoSFBoolset_on4 –Æ«yÇ«) "€€”‘€‚A€‚ÿeventOut¿uEÇ«8È«J d€ê€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ÿSoSFFloatambientIntensity_changedSoSFColorcolor_changedSoSFFloatintensity_changedSoSFBoolon_changed8yÇ«pÈ«& €$€‚A€‚ÿACTION BEHAVIORD8È«´È«/ .€*€”‘€‚Aã©öø(€‰‚ÿSoGLRenderAction=pÈ«ñÈ«& €.€‚A€‚ÿFILE FORMAT/DEFAULTS„[´È«uÉ«) "€¶€”‘€‚A€‚ÿThis is an abstract base class. See the derived class for the format and default values.?ñÈ«´É«1W! ƒUœ„XÑ´É«êÉ«KI¬SoVRMLMaterial6uÉ«êÉ«% €"€ˆˆ€‚ÿSoVRMLMaterial*´É«Ê«# €€€‚ÿNAMEZ4êÉ«nÊ«& €h€”‘€€‚ÿSoVRMLMaterial - surface material definition node3Ê«¡Ê«# € €€‚ÿINHERITS FROMCnÊ«1Ë«M j€†€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLMaterial. ¡Ê«_Ë«# €€€‚ÿSYNOPSISzS1Ë«ÙË«' €¦€”‘€€‚‚ÿ#include Fields from class SoVRMLMaterial:ö›_Ë«ÏÌ«[ „€7€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ÿSoSFFloatambientIntensitySoSFColordiffuseColorSoSFColoremissiveColorSoSFFloatshininessSoSFColorspecularColorSoSFFloattransparencyN%ÙË«Í«) "€J€”‘€‚A€‚ÿMethods from class SoVRMLMaterial:i5ÏÌ«†Í«4 8€j€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLMaterial()static SoTypegetClassTypeId()NÍ«ÔÍ«/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|†Í«PÏ«n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÔÍ«¨Ï«/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØPÏ«¬ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ¨Ï«¬uÉ«‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¨Ï«¡¬@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¬ï¬/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¡¬&¬Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ï¬Z¬& €€‚A€‚ÿDESCRIPTIONR)&¬¬¬) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?Z¬ë¬& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&¬¬>¬- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯묬0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.3>¬P¬3 4€€”‘€‚A€€€€ ‚ÿThe SoVRMLMaterial node specifies surface material properties for associated geometry nodes and are used by the VRML lighting equations during rendering. See "Concepts - Lighting Model" for a detailed description of the VRML lighting model equations.wH¬Ç¬/ .€€”‘€‚A€€€‚ÿAll of the fields in the SoVRMLMaterial node range from 0.0 to 1.0.škP¬a ¬/ .€Ö€”‘€‚A€€€‚ÿThe fields in the SoVRMLMaterial node determine the way light reflects off an object to create color: NǬ¯ ¬F Z€€T”!:‚!€ƒ€€‚ƒ€€€€€€‚ÿ•The diffuseColor reflects all VRML light sources depending on the angle of the surface with respect to the light source. The more directly the surface faces the light, the more diffuse light reflects. •The ambientIntensity field specifies how much ambient light from light sources this surface should reflect. Ambient light is omnidirectional and depends only on the number of light sources, not their positions with respect to the surface. Ambient color is calculated as ambientIntensity * diffuseColor. Pa ¬?¬@ N€¡€T”!:‚!€ƒ€€€€€€‚ƒ‚ÿ•The specularColor and shininess determine the specular highlights--for example, the shiny spots on an apple. When the angle from the light to the surface is close to the angle from the surface to the viewer, the specularColor is added to the diffuse and ambient color calculations. Lower shininess values produce soft glows, while higher values result in sharper, smaller highlights. •Emissive color models "glowing" objects. This can be useful for displaying radiosity-based models (where the light energy of the room is computed explicitly), or for displaying scientific data. r¯ ¬Ü¬+ &€ä€T”!:‚!€ƒ‚ÿ•Transparency is how "clear" the object is, with 1.0 being completely transparent, and 0.0 completely opaque. / ?¬ ¬& €€‚!€‚ÿFIELDSQܬ\¬2 4€>€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatambientIntensity€W ¬Ü¬) "€®€”‘€‚A€‚ÿSpecifies how much ambient light from the light sources this surface should reflect.M\¬5@¬2 4€6€T”A‚S~‚ܬ5@¬uÉ«Aãð@I1€‰ƒ‚ÿSoSFColordiffuseColorI ܬ~@¬) "€@€”‘€‚A€‚ÿDiffuse color of the surface.N5@¬Ì@¬2 4€8€T”A‚S~‚Aãð@I1€‰ƒ‚ÿSoSFColoremissiveColorJ!~@¬A¬) "€B€”‘€‚A€‚ÿEmissive color of the surface.JÌ@¬`A¬2 4€0€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatshininess–mA¬öA¬) "€Ú€”‘€‚A€‚ÿShininess coefficient of the surface. Values range from 0.0 for no shininess to 1.0 for maximum shininess.N`A¬DB¬2 4€8€T”A‚S~‚Aãð@I1€‰ƒ‚ÿSoSFColorspecularColorJ!öA¬ŽB¬) "€B€”‘€‚A€‚ÿSpecular color of the surface.MDB¬ÛB¬2 4€6€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloattransparency›rŽB¬vC¬) "€ä€”‘€‚A€‚ÿTransparency value of the surface. Values range from 0.0 for opaque to 1.0 for completely transparent surfaces.0 ÛB¬¦C¬& €€‚A€‚ÿMETHODS@vC¬æC¬, (€(€T”A‚S~‚A€ƒ‚ÿSoVRMLMaterial()8¦C¬D¬) "€€”‘€‚A€‚ÿConstructor.U#æC¬sD¬2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*D¬ÆD¬) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ sD¬õD¬& €€‚A€‚ÿEVENTS3 ÆD¬(E¬) "€€”‘€‚A€‚ÿeventIn³õD¬6F¬[ „€g€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ÿSoSFFloatset_ambientIntensitySoSFColorset_diffuseColorSoSFColorset_emissiveColorSoSFFloatset_shininessSoSFColorset_specularColorSoSFFloatset_transparency4 (E¬jF¬) "€€”‘€‚A€‚ÿeventOut&Ë6F¬G¬[ „€—€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ÿSoSFFloatambientIntensity_changedSoSFColordiffuseColor_changedSoSFColoremissiveColor_changedSoSFFloatshininess_changedSoSFColorspecularColor_changedSoSFFloattransparency_changed8jF¬ÈG¬& €$€‚A€‚ÿACTION BEHAVIOR^)G¬&H¬5 :€R€”‘€‚Aã©öø(€‰ã³DfL‰‚ÿSoGLRenderAction, SoCallbackAction=ÈG¬cH¬& €.€‚A€‚ÿFILE FORMAT/DEFAULTS;&H¬žH¬* $€"€P„7|‚€‚ÿVRMLMaterial {­wcH¬KI¬6 <€î€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿambientIntensity0.2diffuseColor0.8 0.8 0.8emissiveColor0 0 0shininess0.2specularColor0 0 0transparency0}CžH¬ŽI¬1°)§„W<ZÒŽI¬êI¬´­SoVRMLMovieTexture\0KI¬êI¬, (€`€ˆˆ€€€‚ÿSoVRMLMovieTexture(ACTION NOT IMPLEMENTED)*ŽI¬J¬# €€€‚ÿNAMET.êI¬hJ¬& €\€”‘€€‚ÿSoVRMLMovieTexture - texture and sound node3J¬›J¬# € €€‚ÿINHERITS FROM´[hJ¬OK¬Y ‚€¶€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãô©€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLTexture > SoVRMLMovieTexture. ›J¬}K¬# €€€‚ÿSYNOPSIS‚[OK¬ÿK¬' €¶€”‘€€‚‚ÿ#include Fields from class SoVRMLMovieTexture:°^}K¬¯L¬R t€¼€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ãøi鉃‚ãøi鉃‚ã*{£‰ƒ‚ÿSoSFBoolloopSoSFFloatspeedSoSFTimestartTimeSoSFTimestopTimeSoMFStringurlT%ÿK¬M¬/ .€J€”‘€‚A€ãô©‰‚ÿFields from class SoVRMLTexture:b(¯L¬eM¬: D€P€T”A‚S~‚AãU×S选ƒ‚ãU×S鉃‚ÿSoSFBoolrepeatSSoSFBoolrepeatTR)M¬·M¬) "€R€”‘€‚A€‚ÿMethods from class SoVRMLMovieTexture:m9eM¬$N¬4 8€r€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLMovieTexture()static SoTypegetClassTypeId()N·M¬rN¬/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|$N¬ €¬n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)rN¬ €¬KI¬X)rN¬d€¬/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ €¬É‚¬ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHd€¬Qƒ¬@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÉ‚¬Ÿƒ¬/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞQƒ¬Ö„¬Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Ÿƒ¬ …¬& €€‚A€‚ÿDESCRIPTIONÔ¤Ö„¬Þ…¬0 .€I€”‘€‚A€€€‚ÿThe SoVRMLMovieTexture node defines a time-dependent texture map (contained in a movie file) and parameters for controlling the movie and the texture mapping. ? …¬†¬& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&Þ…¬p‡¬- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯†¬Oˆ¬0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.v7p‡¬Å‰¬? L€o€”‘€‚A€€€€€€€€ ‚ÿThe SoVRMLMovieTexture node defines a time dependent texture map (contained in a movie file) and parameters for controlling the movie and the texture mapping. A SoVRMLMovieTexture can also be used as the source of sound data for an SoVRMLSound node, but in this special case is not used for rendering.¥{Oˆ¬j‹¬* "€÷€”‘€‚A€‚ÿTexture maps are defined in a 2D coordinate system, (s, t), that ranges from 0.0 to 1.0 in both directions. The bottom edge of the image corresponds to the S-axis of the texture map, and left edge of the image corresponds to the T-axis of the texture map. The lower-left pixel of the image corresponds to s=0, t=0, and the top-right pixel of the image corresponds to s=1, t=1.5ʼn¬Ÿ‹¬1 2€ € ŒŒ‚A€ †"€3‚ÿšdj‹¬9¬6 :€É€”‘€‚A€€€€€‚ÿThe url field that defines the movie data must support MPEG1-Systems (audio and video) or MPEG1-Video (video-only) movie file formats. See "Concepts - URLS and URNs" for details on the url field. It is recommended that implementations support grayscale or alpha transparency rendering if the specific movie format being used supports these features.¯…Ÿ‹¬è¬* "€ €”‘€‚A€‚ÿSee "Concepts - Lighting Model" for details on lighting equations and the interaction between textures, materials, and geometries.rB9¬Z¬0 .€…€”‘€‚A€€€‚ÿAs soon as the movie is loaded, a duration_changed eventOut is sent. This indicates the duration of the movie, in seconds. This eventOut value can be read (for instance, by a Script) to determine the duration of a movie. A value of -1 implies the movie has not yet loaded or the value is unavailable for some reason. §Sè¬ Á¬T v€§€”‘€‚A€€€€€€€€€€€€€€€‚ÿThe loop, startTime, and stopTime exposedFields and the isActive eventOutZ¬ Á¬KI¬, and their affects on the SoVRMLMovieTexture node, are discussed in detail in the "Concepts - Time Dependent Nodes" section. The "cycle" of an SoVRMLMovieTexture is the length of time in seconds for one playing of the movie at the specified speed. ?ßZ¬Lì` Ž€¿€”‘€‚A€€€€€€€€€€€€€€€€€€€‚ÿIf an SoVRMLMovieTexture is inactive when the movie is first loaded, then frame 0 is shown in the texture if speed is nonnegative, or the last frame of the movie if speed is negative. A SoVRMLMovieTexture will always display frame 0 if speed = 0. For positive values of speed, the frame an active SoVRMLMovieTexture will display at time now corresponds to the frame at movie time (i.e., in the movie's local time system with frame 0 at time 0, at speed = 1):Y1 Á¬¥Ã¬( €b€Ù€‚A€‚ÿ fmod (now - startTime, duration/speed)+LìÐì( €€Ù€‚A€‚ÿP¥Ã¬OĬ/ .€ €”‘€‚A€€€‚ÿIf speed is negative, then the frame to display is the frame at movie time:c;Ðì²Ä¬( €v€Ù€‚A€‚ÿ duration + fmod(now - startTime, duration/speed)+OĬÝĬ( €€Ù€‚A€‚ÿÙ£²Ä¬¶Å¬6 :€G€”‘€‚A€€€€€‚ÿWhen an SoVRMLMovieTexture becomes inactive, the frame corresponding to the time at which the SoVRMLMovieTexture became inactive will remain as the texture. ¾ÝĬÂǬN j€}€”‘€‚A€€€€€€€€€€€€€‚ÿThe speed exposedField indicates how fast the movie should be played. A speed of 2 indicates the movie plays twice as fast. Note that the duration_changed output is not affected by the speed exposedField. set_speed events are ignored while the movie is playing. A negative speed implies that the movie will play backwards. However, content creators should note that this may not work for streaming movies or very large movie files.l'¶Å¬.ɬE X€O€”‘€‚A€€€€€€€€€€‚ÿSoVRMLMovieTextures can be referenced by an SoVRMLAppearance node's texture field (as a movie texture) and by an SoVRMLSound node's source field (as an audio source only). A legal implementation of the SoVRMLMovieTexture node is not required to play audio if speed is not equal to 1./ ÂǬ]ɬ& €€‚A€‚ÿFIELDSD.ɬ¡É¬2 4€$€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolloopë]ɬ¼Ê¬0 .€×€”‘€‚A€€€‚ÿControls whether the sound continues when it reaches the end of a sound cycle as defined in the movie texture file. If loop is FALSE at the end of a cycle, execution is terminated. If TRUE, the sound continues into the next cycle.F¡É¬ˬ2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatspeedZ1¼Ê¬\ˬ) "€b€”‘€‚A€‚ÿIndicates how fast the movie should be played.Iˬ¥Ë¬2 4€.€T”A‚S~‚Aãøi选ƒ‚ÿSoSFTimestartTimeL#\ˬñˬ) "€F€”‘€‚A€‚ÿThe starting time for the sound.H¥Ë¬9̬2 4€,€T”A‚S~‚Aãøi选ƒ‚ÿSoSFTimestopTimeÇñˬTͬT v€€”‘€‚A€€€€€€€€€€€€€€€‚ÿThe stopping time for the sound. An SoVRMLMovieTexture node with loop TRUE at the end of every cycle continues forever if startTime>=stopTime or until stopTime if stopTime>startTime.E9̬™Í¬2 4€&€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringurlETͬÞͬ) "€8€”‘€‚A€‚ÿSpecifies the movie data.0 ™Í¬ά& €€‚A€‚ÿMETHODSDÞͬRά, (€0€T”A‚S~‚A€ƒ‚ÿSoVRMLMovieTexture()8άŠÎ¬) "€€”‘€‚A€‚ÿConstructor.U#Rάßά2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ŠÎ¬2Ϭ) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ßάaϬ& €€‚A€‚ÿEVENTS3 2Ϭ”Ϭ) "€€”‘€‚A€‚ÿeventInÄraϬd­R t€ä€T”A‚S~‚AãU×S选ƒ‚ã0â1‰ƒ‚ãøi鉃‚ãøi鉃‚ã*{£‰ƒ‚ÿSoSFBoolset_loopSoSF”Ϭd­KI¬Floatset_speedSoSFTimeset_startTimeSoSFTimeset_stopTimeSoMFStringset_url4 ”Ϭ˜­) "€€”‘€‚A€‚ÿeventOut¶d­±­c ”€m€T”A‚S~‚Aãøi选ƒ‚ãU×S鉃‚ãU×S鉃‚ã0â1‰ƒ‚ãøi鉃‚ãøi鉃‚ã*{£‰ƒ‚ÿSoSFTimeduration_changedSoSFBoolisActiveSoSFBoolloop_changedSoSFFloatspeed_changedSoSFTimestartTime_changedSoSFTimestopTime_changedSoMFStringurl_changed=˜­î­& €.€‚A€‚ÿFILE FORMAT/DEFAULTS?±­-­* $€*€P„7|‚€‚ÿVRMLMovieTexture {‡Oî­´­8 @€ž€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿloopFALSEspeed1startTime0stopTime0url[]repeatSTRUErepeatTTRUE}E-­ù­1ž6œ„X„[Óù­]­É­SoVRMLNavigationInfod8´­]­, (€p€ˆˆ€€€‚ÿSoVRMLNavigationInfo(ACTION PARTIALLY IMPLEMENTED)*ù­‡­# €€€‚ÿNAME~X]­­& €°€”‘€€‚ÿSoVRMLNavigationInfo - describes physical characteristics of viewer and viewing model3‡­8­# € €€‚ÿINHERITS FROM–I­Î­M j€’€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLNavigationInfo. 8­ü­# €€€‚ÿSYNOPSIS†_έ‚­' €¾€”‘€€‚‚ÿ#include Fields from class SoVRMLNavigationInfo:Ànü­B­R t€Ü€T”A‚S~‚Aã'0]€‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ã*{£‰ƒ‚ã0â1‰ƒ‚ÿSoMFFloatavatarSizeSoSFBoolheadlightSoSFFloatspeedSoMFStringtypeSoSFFloatvisibilityLimitT+‚­–­) "€V€”‘€‚A€‚ÿMethods from class SoVRMLNavigationInfo:o;B­­4 8€v€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLNavigationInfo()static SoTypegetClassTypeId()N–­S­/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|­Ï­n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)S­' ­/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÏ­Œ ­ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH' ­ ­@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NŒ ­b ­/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ ­™ ­Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4b ­Í ­& €€‚A€‚ÿDESCRIPTION±™ ­~­0 .€€”‘€‚A€€€‚ÿThe SoVRMLNavigationInfo node contains information describing the physical characteristics of the viewer and viewing model. šeÍ ­­5 :€Ê€”‘€‚A€€€€€‚ÿNote: The binding behavior, the set_bind eventIn and the isBound eventOut are not implemented.?~­W­& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&­¶@­- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the aW­¶@­´­pplication is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯W­•A­0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.‹¶@­ E­u ¸€-€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€ ‚ÿThe SoVRMLNavigationInfo node contains information describing the physical characteristics of the viewer and viewing model. SoVRMLNavigationInfo is a bindable node (see "Concepts - Bindable Children Nodes") and thus there exists an SoVRMLNavigationInfo stack in the browser in which the top-most SoVRMLNavigationInfo on the stack is the currently active SoVRMLNavigationInfo. The current SoVRMLNavigationInfo is considered to be a child of the current SoVRMLViewpoint - regardless of where it is initially located in the file. Whenever the current SoVRMLViewpoint changes, the current SoVRMLNavigationInfo must be reparented to it. Whenever the current SoVRMLNavigationInfo changes, the new SoVRMLNavigationInfo must be reparented to the current SoVRMLViewpoint.£•A­;I­x ¾€G€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿIf a TRUE value is sent to the set_bind eventIn of an SoVRMLNavigationInfo, it is pushed onto the SoVRMLNavigationInfo stack and activated. When an SoVRMLNavigationInfo is bound, the browser uses the fields of the SoVRMLNavigationInfo to set the navigation controls of its user interface and the SoVRMLNavigationInfo is conceptually re-parented under the currently bound SoVRMLViewpoint. All subsequent scaling changes to the current SoVRMLViewpoint's coordinate system automatically change aspects (see below) of the SoVRMLNavigationInfo values used in the browser (e.g. scale changes to any parent transformation). A FALSE value of set_bind pops the SoVRMLNavigationInfo from the stack, results in an isBound FALSE event, and pops to the next entry in the stack which must be reparented to the current SoVRMLViewpoint. See "Concepts - Bindable Children Nodes" for more details on the binding stacks. ÄŽ E­ÿM­6 :€ €”‘€‚A€€€€€‚ÿThe type field specifies a navigation paradigm to use. Minimally, browsers shall support the following navigation types: "WALK", "EXAMINE", "FLY", and "NONE". Walk navigation is used for exploring a virtual world. It is recommended that the browser should support a notion of gravity in walk mode. Fly navigation is similar to walk except that no notion of gravity should be enforced. There should still be some notion of "up" however. Examine navigation is typically used to view individual objects and often includes (but does not require) the ability to spin the object and move it closer or further away. The "none" choice removes all navigation controls - the user navigates using only controls provided in the scene, such as guided tours. Also allowed are browser specific navigation types. These should include a unique suffix (e.g. _sgi.com) to prevent conflicts. The type field is multi-valued so that authors can specify fallbacks in case a browser does not understand a given type. If none of the types are recognized by the browser, then the default ["WALK", "ANY"] is used. These strings values are case sensitive ("walk" is not equal to "WALK").–B;I­¡€­T v€…€”‘€‚A€€€€€€€€€€€€€€€‚ÿThe speed is the rate at which the viewer travels through a scene in meters per second. Since viewers may provide mechanisms to travel faster or slower, this should be the default or average speed of the viewer. If the SoVRMLNavigationInfo type is EXAMINE, speed should affect panning and dollying--it should have no effect on the rotation speed. The transformation hierarchy of the currently bound SoVRMLViewpoint (seÿM­¡€­´­e above) scales the speed - translations and rotations have no effect on speed. Speed must be >= 0.0 - where 0.0 specifies a stationary avatar. ÄÿM­­„­H ^€‰€”‘€‚A€€€€€€€€€€€‚ÿThe avatarSize field specifies the user's physical dimensions in the world for the purpose of collision detection and terrain following. It is a multi-value field to allow several dimensions to be specified. The first value should be the allowable distance between the user's position and any collision geometry (as specified by SoVRMLCollision) before a collision is detected. The second should be the height above the terrain the viewer should be maintained. The third should be the height of the tallest object over which the viewer can "step". This allows staircases to be built with dimensions that can be ascended by all browsers. Additional values are browser dependent and all values may be ignored, but if a browser interprets these values the first 3 should be interpreted as described above. The transformation hierarchy of the currently bound SoVRMLViewpoint scales the avatarSize - translations and rotations have no effect on avatarSize.覡€­•†­B R€M€”‘€‚A€€€€€€€€€‚ÿFor purposes of terrain following the browser needs a notion of the down direction (down vector), since gravity is applied in the direction of the down vector. This down vector should be along the negative Y-axis in the local coordinate system of the currently bound SoVRMLViewpoint (i.e., the accumulation of the SoVRMLViewpoint's parent transformations, not including the SoVRMLViewpoint's orientation field).c-­„­ø‡­6 :€[€”‘€‚A€€€€€‚ÿThe visibilityLimit field sets the furthest distance the user is able to see. The browser may clip all objects beyond this limit, fade them into the background or ignore this field. A value of 0.0 (the default) indicates an infinite visibility limit. VisibilityLimit is restricted to be >= 0.0.'•†­yŠ­Z ‚€O€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿThe speed, avatarSize and visibilityLimit values are all scaled by the transformation being applied to currently bound SoVRMLViewpoint. If there is no currently bound SoVRMLViewpoint, they are interpreted in the world coordinate system. This allows these values to be automatically adjusted when binding to an SoVRMLViewpoint that has a scaling transformation applied to it without requiring a new SoVRMLNavigationInfo node to be bound as well. If the scale applied to the SoVRMLViewpoint is non-uniform, the behavior is undefined. Eýø‡­¾Œ­H ^€û€”‘€‚A€€€€€€€€€€€‚ÿThe headlight field specifies whether a browser should turn a headlight on. A headlight is a directional light that always points in the direction the user is looking. Setting this field to TRUE allows the browser to provide a headlight, possibly with user interface controls to turn it on and off. Scenes that enlist precomputed lighting (e.g. radiosity solutions) can turn the headlight off. The headlight shall have intensity = 1, color = 1 1 1, ambientIntensity = 0.0, and direction = 0 0 -1.[+yŠ­­0 .€W€”‘€‚A€€€‚ÿIt is recommended that the near clipping plane should be set to one-half of the collision radius as specified in the avatarSize field. This recommendation may be ignored by the browser, but setting the near plane to this value prevents excessive clipping of objects just above the collision volume and provides a region inside the collision volume for content authors to include geometry that should remain fixed relative to the viewer, such as icons or a heads-up display, but that should not be occluded by geometry outside of the collision volume.ëµ¾Œ­À­6 :€k€”‘€‚A€€€€€‚ÿThe first SoVRMLNavigationInfo node found during reading of the world is automatically bound (receives a set_bind TRUE event) and supplies the initial navigation parameters­À­´­. / ­?À­& €€‚A€‚ÿFIELDSKÀ­ŠÀ­2 4€2€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatavatarSize•l?À­Á­) "€Ø€”‘€‚A€‚ÿThe user's physical dimensions in the world for the purpose of collision detection and terrain following.IŠÀ­hÁ­2 4€.€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolheadlightg>Á­ÏÁ­) "€|€”‘€‚A€‚ÿSpecifies whether the headlight should be turned on (TRUE).FhÁ­­2 4€(€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatspeeda8ÏÁ­v­) "€p€”‘€‚A€‚ÿThe rate at which the viewer travels through a scene.F­¼Â­2 4€(€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringtypekBv­'í) "€„€”‘€‚A€‚ÿSpecifies a navigation paradigm to use. You may specify "ANY". P¼Â­wí2 4€<€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatvisibilityLimit_6'íÖí) "€l€”‘€‚A€‚ÿSets the furthest distance the user is able to see.0 wíÄ­& €€‚A€‚ÿMETHODSFÖíLÄ­, (€4€T”A‚S~‚A€ƒ‚ÿSoVRMLNavigationInfo()8Ä­„Ä­) "€€”‘€‚A€‚ÿConstructor.U#LÄ­ÙÄ­2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*„Ä­,Å­) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ÙÄ­[Å­& €€‚A€‚ÿEVENTS3 ,Å­ŽÅ­) "€€”‘€‚A€‚ÿeventIn²[Å­§Æ­g œ€e€T”A‚S~‚AãU×S选ƒ€€‚ã'0]‰ƒ€‚ãU×S选ƒ‚ã0â1‰ƒ‚ã*{£‰ƒ‚ã0â1‰ƒ‚ÿSoSFBoolset_bind (Note: Not implemented)SoMFFloatset_avatarSizeSoSFBoolset_headlightSoSFFloatset_speedSoMFStringset_typeSoSFFloatset_visibilityLimit4 ŽÅ­ÛÆ­) "€€”‘€‚A€‚ÿeventOut,ŧƭÈ­g œ€‹€T”A‚S~‚AãU×S选ƒ€€‚ã'0]‰ƒ€‚ãU×S选ƒ‚ã0â1‰ƒ‚ã*{£‰ƒ‚ã0â1‰ƒ‚ÿSoSFBoolisBound (Note: Not implemented)SoMFFloatavatarSize_changedSoSFBoolheadlight_changedSoSFFloatspeed_changedSoMFStringtype_changedSoSFFloatvisibilityLimit_changed=ÛÆ­DÈ­& €.€‚A€‚ÿFILE FORMAT/DEFAULTSAÈ­…È­* $€.€P„7|‚€‚ÿVRMLNavigationInfo {™eDÈ­É­4 8€Ê€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿavatarSize[ 0.25, 1.6, 0.75 ]headlightTRUEspeed1.0type["WALK", "ANY"]visibilityLimit0.0}= …È­[É­1´<Z\Ô[É­É­K®SoVRMLNormal4É­É­% €€ˆˆ€‚ÿSoVRMLNormal*[É­¹É­# €€€‚ÿNAMEd>É­Ê­& €|€”‘€€‚ÿSoVRMLNormal - node that defines surface normals for shapes3¹É­PÊ­# € €€‚ÿINHERITS FROMŽAÊ­ÞÊ­M j€‚€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLNormal. PÊ­ Ë­# €€€‚ÿSYNOPSISvOÞÊ­‚Ë­' €ž€”‘€€‚‚ÿ#include Fields from class SoVRMLNormal:G Ë­ÉË­2 4€*€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fvectorL#‚Ë­Ì­) "€F€”‘€‚A€‚ÿMethods from class SoVRMLNormal:g3ÉË­|Ì­4 8€f€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLNormal()static SoTypegetClassTypeId()NÌ­ÊÌ­/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:||Ì­Fέn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÊÌ­žÎ­/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØFέ® 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolsetžÎ­®É­(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHžÎ­—®@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N®å®/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ—®®Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4å®P®& €€‚A€‚ÿDESCRIPTION”X®ä®< F€±€”‘€‚A€€€€€€€‚ÿThis node defines a set of 3D surface normal vectors to be used in the vector field of some geometry nodes (SoVRMLIndexedFaceSet, SoVRMLElevationGrid). This node contains one multiple-valued field that contains the normal vectors. Normals should be unit-length or results are undefined. Default normals are generated if none are given.?P®#®& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&ä®v®- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯#®U®0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.h)v®½®? L€S€”‘€‚A€€€€€€€€ ‚ÿThis node defines a set of 3D surface normal vectors to be used in the vector field of some geometry nodes (SoVRMLIndexedFaceSet, SoVRMLElevationGrid). This node contains one multiple-valued field that contains the normal vectors. Normals should be unit-length or results are undefined. ÖU®½ ®* "€­€”‘€‚A€‚ÿTo save network bandwidth, it is expected that implementations will be able to automatically generate appropriate normals if none are given. However, the results will vary from implementation to implementation. / ½®ì ®& €€‚A€‚ÿFIELDSG½ ®3 ®2 4€*€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fvector;ì ®n ®) "€$€”‘€‚A€‚ÿNormal vectors.0 3 ®ž ®& €€‚A€‚ÿMETHODS>n ®Ü ®, (€$€T”A‚S~‚A€ƒ‚ÿSoVRMLNormal()8ž ® ®) "€€”‘€‚A€‚ÿConstructor.U#Ü ®i ®2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* ®¼ ®) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ i ®ë ®& €€‚A€‚ÿEVENTS3 ¼ ® ®) "€€”‘€‚A€‚ÿeventInKë ®i ®2 4€2€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fset_vector4  ® ®) "€€”‘€‚A€‚ÿeventOutOi ®ì ®2 4€:€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fvector_changed8 ®$ ®& €$€‚A€‚ÿACTION BEHAVIORw<ì ®› ®; F€x€”‘€‚Aã©öø(€‰ãɓ℉ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoCallbackAction=$ ®Ø ®& €.€‚A€‚ÿFILE FORMAT/DEFAULTS9› ®®* $€€P„7|‚€‚ÿVRMLNormal {:Ø ®K®, (€€P„|‚€ƒ‚‚ÿvector[]}I®”®1€„[ ]Õ”®Ô®ð„®SoVRMLNormalInterpolator@K®Ô®% €6€ˆˆ€‚ÿSoVRMLNormalInterpolator*”®þ®# €€€‚ÿNAMEgAÔ®e®& €‚€”‘€€‚ÿSoVRMLNormalInterpolator - interpolates among a set of normals3þ®˜®# € €€‚ÿINHERITS FROM¿fe®c@®Y ‚€Ì€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãéf€‰€€€‚ÿSoBase > ˜®c@®K®SoFieldContainer > SoNode > SoVRMLInterpolator > SoVRMLNormalInterpolator. ˜®‘@®# €€€‚ÿSYNOPSISŽgc@®A®' €Î€”‘€€‚‚ÿ#include Fields from class SoVRMLNormalInterpolator:a'‘@®€A®: D€N€T”A‚S~‚Aã'0]€‰ƒ‚ãòi`‰ƒ‚ÿSoMFFloatkeySoMFVec3fkeyValueX/A®ØA®) "€^€”‘€‚A€‚ÿMethods from class SoVRMLNormalInterpolator:s?€A®KB®4 8€~€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLNormalInperpolator()static SoTypegetClassTypeId()NØA®™B®/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|KB®D®n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)™B®mD®/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØD®ÒF® 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHmD®ZG®@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÒF®¨G®/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞZG®ßH®Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4¨G®I®& €€‚A€‚ÿDESCRIPTIONR)ßH®eI®) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?I®¤I®& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&eI®÷J®- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯¤I®ÖK®0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.Þ±÷J®´L®- (€c€”‘€‚A€€ ‚ÿThis node interpolates among a set of multi-valued Vec3f values, suitable for transforming normal vectors. All output vectors will have been normalized by the interpolator. ÜÖK®ÌM®< F€¹€”‘€‚A€€€€€€€‚ÿThe number of normals in the keyValue field must be an integer multiple of the number of keyframes in the key field; that integer multiple defines how many normals will be contained in the value_changed events. ô´L® €®* "€é€”‘€‚A€‚ÿNormal interpolation is to be performed on the surface of the unit sphere. That is, the output values for a linear interpolation from a point P on the unit sphere to a point Q also on unit sphere should lie along the shortest arc (on the unit sphere) connecting points P and Q. Also, equally spaced input fractions will result in arcs of equal length. Cases where P and Q are diagonally opposing allow an infinite number of arcs. The interpolation for this case can be along any one of these arcs.ÌM® €®K®€WÌM®Œ€®) "€®€”‘€‚A€‚ÿRefer to "Concepts - Interpolators" for a more detailed discussion of interpolators./ €®»€®& €€‚A€‚ÿFIELDSa'Œ€®®: D€N€T”A‚S~‚Aã'0]€‰ƒ‚ãòi`‰ƒ‚ÿSoMFFloatkeySoMFVec3fkeyValue0 »€®L®& €€‚A€‚ÿMETHODSJ®–®, (€<€T”A‚S~‚A€ƒ‚ÿSoVRMLNormalInperpolator()8L®Î®) "€€”‘€‚A€‚ÿConstructor.U#–®#‚®2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ήv‚®) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ #‚®¥‚®& €€‚A€‚ÿEVENTS3 v‚®Ø‚®) "€€”‘€‚A€‚ÿeventInŠH¥‚®bƒ®B T€€T”A‚S~‚Aã0â1€‰ƒ‚ã'0]‰ƒ‚ãòi`‰ƒ‚ÿSoSFFloatset_fractionSoMFFloatset_keySoMFVec3fset_keyValue4 Ø‚®–ƒ®) "€€”‘€‚A€‚ÿeventOut“Qbƒ®)„®B T€¢€T”A‚S~‚Aãòi`€‰ƒ‚ã'0]‰ƒ‚ãòi`‰ƒ‚ÿSoMFVec3fvalue_changedSoMFFloatkey_changedSoMFVec3fkeyValue_changed=–ƒ®f„®& €.€‚A€‚ÿFILE FORMAT/DEFAULTSE)„®«„®* $€6€P„7|‚€‚ÿVRMLNormalInterpolator {Ef„®ð„®. ,€.€P„|‚€ƒ‚ƒ‚‚ÿkey[]keyValue[]}N«„®>…®1ã\Ý€_Ö>…®ƒ…®=Í®SoVRMLOrientationInterpolatorE ð„®ƒ…®% €@€ˆˆ€‚ÿSoVRMLOrientationInterpolator*>…®­…®# €€€‚ÿNAMEtNƒ…®!†®& €œ€”‘€€‚ÿSoVRMLOrientationInterpolator - interpolates among a set of rotation values3­…®T†®# € €€‚ÿINHERITS FROMÄk!†®‡®Y ‚€Ö€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãéf€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLInterpolator > SoVRMLOrientationInterpolator. T†®F‡®# €€€‚ÿSYNOPSIS˜q‡®Þ‡®' €â€”‘€€‚‚ÿ#include Fields from class SoVRMLOrientationInterpolator:d*F‡®Bˆ®: D€T€T”A‚S~‚Aã'0]€‰ƒ‚ãÏ[ щƒ‚ÿSoMFFloatkeySoMFRotationkeyValue]4Þ‡®Ÿˆ®) "€h€”‘€‚A€‚ÿMethods from class SoVRMLOrientationInterpolator:xDBˆ®‰®4 8€ˆ€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLOrientationInterpolator()static SoTypegetClassTypeId()NŸˆ®e‰®/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:t ‰®ÙŠ®h ž€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)e‰®1‹®/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÙŠ®–® 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH1‹®Ž®@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N–®lŽ®/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞŽ®£®Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4lŽ®×®& €€‚A€‚ÿDESCRIPTIONR)£®5À®) "€R€”‘€‚A€‚ÿ×®5À®ð„®See the VRML 2.0 Specification, below.?×®tÀ®& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&5À®ÇÁ®- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯tÀ®¦Â®0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.i0ÇÁ®Ä®9 @€a€”‘€‚A€€€€€€ ‚ÿThis node interpolates among a set of SFRotation values. The rotations are absolute in object space and are, therefore, not cumulative. The keyValue field must contain exactly as many rotations as there are keyframes in the key field, or an error will be generated and results will be undefined. 嵦®ôÅ®0 .€k€”‘€‚A€€€‚ÿAn orientation represents the final position of an object after a rotation has been applied. An SoVRMLOrientationInterpolator will interpolate between two orientations by computing the shortest path on the unit sphere between the two orientations. The interpolation will be linear in arc length along this path. The path between two diagonally opposed orientations will be any one of the infinite possible paths with arc length pi. ÜÄ®úÆ®* "€¹€”‘€‚A€‚ÿIf two consecutive keyValue values exist such that the arc length between them is greater than pi, then the interpolation will take place on the arc complement. For example, the interpolation between the orientations:DôÅ®>Ç®( €8€Ù€‚A€‚ÿ 0 1 0 0 --> 0 1 0 5.0+úÆ®iÇ®( €€Ù€‚A€‚ÿg>>Ç®ÐÇ®) "€|€”‘€‚A€‚ÿis equivalent to the rotation between the two orientations:H iǮȮ( €@€Ù€‚A€‚ÿ 0 1 0 2*PI --> 0 1 0 5.0 +ÐÇ®CÈ®( €€Ù€‚A€‚ÿ€WÈ®ÃÈ®) "€®€”‘€‚A€‚ÿRefer to "Concepts - Interpolators" for a more detailed discussion of interpolators./ CÈ®òÈ®& €€‚A€‚ÿFIELDSd*ÃÈ®VÉ®: D€T€T”A‚S~‚Aã'0]€‰ƒ‚ãÏ[ щƒ‚ÿSoMFFloatkeySoMFRotationkeyValue0 òÈ®†É®& €€‚A€‚ÿMETHODSO#VÉ®ÕÉ®, (€F€T”A‚S~‚A€ƒ‚ÿSoVRMLOrientationInterpolator()8†É® Ê®) "€€”‘€‚A€‚ÿConstructor.U#ÕÉ®bÊ®2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* Ê®µÊ®) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ bÊ®äÊ®& €€‚A€‚ÿEVENTS3 µÊ®Ë®) "€€”‘€‚A€‚ÿeventInKäÊ®¤Ë®B T€–€T”A‚S~‚Aã0â1€‰ƒ‚ã'0]‰ƒ‚ãÏ[ щƒ‚ÿSoSFFloatset_fractionSoMFFloatset_keySoMFRotationset_keyValue4 Ë®ØË®) "€€”‘€‚A€‚ÿeventOut™W¤Ë®qÌ®B T€®€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ã'0]‰ƒ‚ãÏ[ щƒ‚ÿSoSFRotationvalue_changedSoMFFloatkey_changedSoMFRotationkeyValue_changed=ØË®®Ì®& €.€‚A€‚ÿFILE FORMAT/DEFAULTSJ qÌ®øÌ®* $€@€P„7|‚€‚ÿVRMLOrientationInterpolator {E®Ì®=Í®. ,€.€P„|‚€ƒ‚ƒ‚‚ÿkey[]keyValue[]}?øÌ®|Í®1a > dw^×|Í®²Í®Ë¯SoVRMLPROTODef6=Í®²Í®% €"€ˆˆ€‚ÿSoVRMLPROTODef*|Í®ÜÍ®# €€€‚ÿNAMEiC²Í®Eή& €†€”‘€€‚ÿSoVRMLPROTODef - contains the internal definition of a prototype3ÜÍ®xή# € €€‚ÿINHERITS FROMTEήÌή5 :€>€”‘€ã}9€‰€€€‚ÿSoBase > SoVRMLPROTODef. xήúή# €€€‚ÿSYNOPSIS{TÌήuÏ®' €¨€”‘€€‚‚ÿ#include Methods from class SoVRMLPROTODef:ô©úήu¯K d€S€T”A‚S~‚A€ãB-9‰ƒ‚ƒãOõt†‰‚ƒã/ x‘‰‚ãXíʉƒ‚ÿstatic SoTypegetClassTypeId()virtual intgetFields(SoVRMLPuÏ®u¯=Í®ROTOFieldList &resultList) conststatic intgetPROTOList(SoBaseList &list)SbStringgetPROTOName()NuϮï/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:ŒLu¯O¯@ P€˜€T”A‚S~‚A€ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ÿvirtual SoTypegetTypeId() constSbBoolisOfType(SoType type) const4& €€‚A€‚ÿDESCRIPTIONí½O¯p¯0 .€{€”‘€‚A€€€‚ÿThis class contains all the information required to set up an instance of a VRML 2.0 prototype. It is derived from SoBase and is created when a prototype is read from a file or buffer.?ƒ¯¯¯& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&p¯¯- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯¯¯á¯0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.4 ¯¯) "€€‚A€€‚ÿMETHODSU#á¯j¯2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¯½¯) "€T€”‘€‚A€‚ÿReturns type identifier for this class.l:j¯)¯2 4€t€T”A‚S~‚A€ƒãOõt†‰‚ÿintgetFields(SoVRMLPROTOFieldList &resultList) constЦ½¯ù¯* "€M€”‘€‚A€‚ÿAppends pointers to all of this object's fields to resultList and returns the number of fields appended. Each item in the list is a pointer to an SoVRMLPROTOField.`.)¯Y¯2 4€\€T”A‚S~‚A€ƒã/ x‘‰‚ÿstatic intgetPROTOList(SoBaseList &list)»‘ù¯¯* "€#€”‘€‚A€‚ÿAppends pointers to all of the SoVRMLPROTO nodes that have been defined to list, and returns the number of SoVRMLPROTO node pointers appended.NY¯b¯2 4€8€T”A‚S~‚AãXíÊ€‰ƒ‚ÿSbStringgetPROTOName()i@¯Ë¯) "€€€”‘€‚A€‚ÿReturns the name of the PROTO defined by this SoVRMLPROTODef.Ab¯ ¯1 Pˆ]`ƒ^Ø ¯D ¯³E¯SoVRMLPROTOField8˯D ¯% €&€ˆˆ€‚ÿSoVRMLPROTOField* ¯n ¯# €€€‚ÿNAME¢|D ¯ ¯& €ø€”‘€€‚ÿSoVRMLPROTOField - contains the internal definition for one of a prototype's fields, exposedFields, eventIns or eventOuts3n ¯C ¯# € €€‚ÿINHERITS FROMV! ¯™ ¯5 :€B€”‘€ã}9€‰€€€‚ÿSoBase > SoVRMLPROTOField. C ¯Ç ¯# €€€‚ÿSYNOPSISY3™ ¯ ¯& €f€”‘€€‚ÿ#include KùÇ ¯k ¯R r€ó€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Kind{SoVRMLPROTOField::PROTO_FIELDRegular fieldSoVRMLPROTOField::PROTO_EXPOSEDFIELDField with implied set_ and _changed eventIn and eventOutSoVRMLPROTOField::PROTO_EVENTINeventInSoVRMLPROTOField::PROTO_EVENTOUTeventOut}P' ¯» ¯) "€N€”‘€‚A€‚ÿMethods from class SoVRMLPROTOField:Ø‹k ¯“ ¯M h€€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ãB-9‰ƒ‚ãXíʉƒ‚ãXíʉƒ‚ÿstatic SoTypegetClassTypeId()KindgetFieldKind()SoTypegetFieldType()SbStringgetFieldName()SbStringgetFieldDefaultValue()F» ¯Ù ¯) "€:€”‘€‚A€‚ÿMethods from class SoBase:=“ ¯¯+ &€$€T”A‚S~‚A€‚ÿNot applicable.4Ù ¯J¯& €€‚A€‚ÿDESCRIPTIONb8¯¬¯* "€q€”‘€‚A€‚ÿThe interface to a prototype is through the public fields, exposedFields, eventIns and eventOuts of a prototype declaration. This class defines one of these interfaces. The list of SoVRMLPROTOField definitions is created when the prototype is read from a file or buffer and cannot be created programmatically.?J¯ @¯& €2€‚A€‚ÿVRML 2.0 SPECIFICATION¬¯ @¯Ë¯S&¬¯_A¯- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ @¯>B¯0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.4 _A¯rB¯) "€€‚A€€‚ÿMETHODSU#>B¯ÇB¯2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*rB¯C¯) "€T€”‘€‚A€‚ÿReturns type identifier for this class.BÇB¯\C¯, (€,€T”A‚S~‚A€ƒ‚ÿKindgetFieldKind()N%C¯ªC¯) "€J€”‘€‚A€‚ÿReturns the kind of field this is.L\C¯öC¯2 4€4€T”A‚S~‚AãB-9€‰ƒ‚ÿSoTypegetFieldType()N%ªC¯DD¯) "€J€”‘€‚A€‚ÿReturns the type of field this is.NöC¯’D¯2 4€8€T”A‚S~‚AãXíÊ€‰ƒ‚ÿSbStringgetFieldName()J!DD¯ÜD¯) "€B€”‘€‚A€‚ÿReturns the name of the field.V$’D¯2E¯2 4€H€T”A‚S~‚AãXíÊ€‰ƒ‚ÿSbStringgetFieldDefaultValue()XÜD¯³E¯) "€°€”‘€‚A€‚ÿReturns the field's default value. Only fields and exposedFields have default values.E2E¯øE¯1› w^ÿˆ^ÙøE¯4F¯žO¯SoVRMLPROTOFieldList<³E¯4F¯% €.€ˆˆ€‚ÿSoVRMLPROTOFieldList*øE¯^F¯# €€€‚ÿNAME„^4F¯âF¯& €¼€”‘€€‚ÿSoVRMLPROTOFieldList - maintains a list of pointers to the field definitions of a prototype3^F¯G¯# € €€‚ÿINHERITS FROM[&âF¯pG¯5 :€L€”‘€ãK2Å'€‰€€€‚ÿSbPList > SoVRMLPROTOFieldList. G¯žG¯# €€€‚ÿSYNOPSIS‡`pG¯%H¯' €À€”‘€€‚‚ÿ#include Methods from class SoVRMLPROTOFieldList:ó²žG¯I¯A P€e€T”A‚S~‚A€ƒ‚ƒ‚ƒãÐPWÙ‰‚ƒ‚ãOõt†‰ƒ‚ÿSoVRMLPROTOFieldList()SoVRMLPROTOFieldList(int size)SoVRMLPROTOFieldList(const SoFieldList &l)~SoVRMLPROTOFieldList()SoVRMLPROTOFieldList*operator [](int i) const4%H¯LI¯& €€‚A€‚ÿDESCRIPTION„[I¯ÐI¯) "€¶€”‘€‚A€‚ÿThis subclass of SbPList holds lists of pointers to instances of class SoVRMLPROTOField.?LI¯J¯& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&ÐI¯bK¯- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯J¯AL¯0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.4 bK¯uL¯) "€€‚A€€‚ÿMETHODSFAL¯»L¯, (€4€T”A‚S~‚A€ƒ‚ÿSoVRMLPROTOFieldList()8uL¯óL¯) "€€”‘€‚A€‚ÿConstructor.N"»L¯AM¯, (€D€T”A‚S~‚A€ƒ‚ÿSoVRMLPROTOFieldList(int size)m>óL¯®M¯/ .€|€”‘€‚A€€€‚ÿConstructor that pre-allocates storage for size pointers.b0AM¯N¯2 4€`€T”A‚S~‚A€ƒãÐPWÙ‰‚ÿSoVRMLPROTOFieldList(const SoFieldList &l)a8®M¯qN¯) "€p€”‘€‚A€‚ÿConstructor that copies the contents of another list.GN¯¸N¯, (€6€T”A‚S~‚A€ƒ‚ÿ~SoVRMLPROTOFieldList()7qN¯ïN¯) "€€”‘€‚A€‚ÿDestructor.e3¸N¯TO¯2 4€f€T”A‚S~‚AãOõt†€‰ƒ‚ÿSoVRMLPROTOFieldList*operator [](int i) constJ!ïN¯žO¯) "€B€”‘€‚A€‚ÿAccesses an element of a list.DTO¯ €¯1f`ƒ^OeÚ €¯G€¯„Á¯SoVRMLPROTOInstancežO¯ €¯žO¯;žO¯G€¯% €,€ˆˆ€‚ÿSoVRMLPROTOInstance* €¯q€¯# €€€‚ÿNAMEV0G€¯Ç€¯& €`€”‘€€‚ÿSoVRMLPROTOInstance - instance of a prototype3q€¯ú€¯# € €€‚ÿINHERITS FROM•HÇ€¯¯M j€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLPROTOInstance. ú€¯½¯# €€€‚ÿSYNOPSIS\6¯‚¯& €l€”‘€€‚ÿ#include ƽ¯ß‚¯E X€€T”A‚S~‚A€ƒã¸>Ó‰‚ãB-9‰ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoVRMLPROTOInstance(SoVRMLPROTODef* protoDef)static SoTypegetClassTypeId()voidsetupInstance()SoTypegetPROTOType()F‚¯%ƒ¯) "€:€”‘€‚A€‚ÿMethods from class SoNode:=ß‚¯bƒ¯+ &€$€T”A‚S~‚A€‚ÿNot applicable.P'%ƒ¯²ƒ¯) "€N€”‘€‚A€‚ÿMethods from class SoFieldContainer:=bƒ¯ïƒ¯+ &€$€T”A‚S~‚A€‚ÿNot applicable.F²ƒ¯5„¯) "€:€”‘€‚A€‚ÿMethods from class SoBase:=r„¯+ &€$€T”A‚S~‚A€‚ÿNot applicable.45„¯¦„¯& €€‚A€‚ÿDESCRIPTIONÖ¬r„¯|…¯* "€Y€”‘€‚A€‚ÿA prototype definition read from a file or a buffer does not define an actual node instance. This class is used to create the instance of a previously defined prototype.?¦„¯»…¯& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&|…¯‡¯- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯»…¯í‡¯0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.4 ‡¯!ˆ¯) "€€‚A€€‚ÿMETHODSe3퇯†ˆ¯2 4€f€T”A‚S~‚A€ƒã¸>Ó‰‚ÿSoVRMLPROTOInstance(SoVRMLPROTODef* protoDef)tK!ˆ¯úˆ¯) "€–€”‘€‚A€‚ÿCreates an instance of the prototype defined by the definition protoDef.U#†ˆ¯O‰¯2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()T+úˆ¯£‰¯) "€V€”‘€‚A€‚ÿReturns type identifier for this class. CO‰¯æ‰¯, (€.€T”A‚S~‚A€ƒ‚ÿvoidsetupInstance()˜o£‰¯~Š¯) "€Þ€”‘€‚A€‚ÿFinishes setting up an instance of a prototype. The steps required to create an instance of a prototype are:§r扯%‹¯5 :€ä€”‘€‚A€€€€€‚ÿ1. Read in the prototype. You can read it in from a file or a buffer using the readAllVRML method of SoDB. £n~Š¯È‹¯5 :€Ü€”‘€‚A€€€€€‚ÿ2. Find the prototype definition from the prototype's name using the static method findPROTO in SoBase.„\%‹¯LŒ¯( €¸€Ù€‚A€‚ÿSoVRMLPROTODef *spinProtoDef = (SoVRMLPROTODef *) SoBase::findPROTO(SbName("SpinGroup"));+È‹¯wŒ¯( €€Ù€‚A€‚ÿS*LŒ¯ÊŒ¯) "€T€”‘€‚A€‚ÿ3. Create an instance of the prototype.qIwŒ¯;¯( €’€Ù€‚A€‚ÿSoVRMLPROTOInstance *spinInst = new SoVRMLPROTOInstance(spinProtoDef);+ÊŒ¯f¯( €€Ù€‚A€‚ÿjA;¯Ð¯) "€‚€”‘€‚A€‚ÿThis will partially set up the instance and create the fields.L#f¯Ž¯) "€F€”‘€‚A€‚ÿ4. Set the values of the fields.oGЯ‹Ž¯( €Ž€Ù€‚A€‚ÿ((SoSFTime *) (spinInst->getField("cycleInterval")))->setValue(4.0);+Ž¯¶Ž¯( €€Ù€‚A€‚ÿP'‹Ž¯¯) "€N€”‘€‚A€‚ÿ5. Finish the setup of the instance.E¶Ž¯K¯( €:€Ù€‚A€‚ÿspinInst->setupInstance();+¯v¯( €€Ù€‚A€‚ÿÉ™K¯KÀ¯0 .€3€”‘€‚A€€€‚ÿThe order of the calls is important. If the value of the field is to be changed from the v¯KÀ¯žO¯default, it must be changed before setupInstance is called.Lv¯—À¯2 4€4€T”A‚S~‚AãB-9€‰ƒ‚ÿSoTypegetPROTOType()íÃKÀ¯„Á¯* "€‡€”‘€‚A€‚ÿReturns the type of the prototype being instanced. A type of a prototype determines where it can be instanced. The first node found in a prototype definition defines the type of the prototype.= —À¯ÁÁ¯1m ]š`ÛÁÁ¯õÁ¯<°SoVRMLParent4„Á¯õÁ¯% €€ˆˆ€‚ÿSoVRMLParent*ÁÁ¯¯# €€€‚ÿNAMEzTõÁ¯™Â¯& €¨€”‘€€‚ÿSoVRMLParent - abstract base class for all VRML grouping nodes that have children3¯Ì¯# € €€‚ÿINHERITS FROM¨O™Â¯tïY ‚€ž€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoVRMLParent. ̯¢Ã¯# €€€‚ÿSYNOPSISvOtïį' €ž€”‘€€‚‚ÿ#include Fields from class SoVRMLParent:H¢Ã¯`į2 4€,€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodechildrenL#į¬Ä¯) "€F€”‘€‚A€‚ÿMethods from class SoVRMLParent:¢`įÂƯt ¶€E€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ãB-9‰ƒ‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)static SoTypegetClassTypeId()N¬Ä¯ǯ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÂƯŒÈ¯n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ǯäȯ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:e،ȯI˯ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHäȯÑ˯@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NI˯̯/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÑ˯VͯY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4̯ŠÍ¯& €€‚A€‚ÿDESCRIPTIONŒcVͯί) "€Æ€”‘€‚A€‚ÿThe SoVRMLParent node is the abstract base class for all VRML grouping nodes that have children./ ŠÍ¯Eί& €€‚A€‚ÿFIELDSHίί2 4€,€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodechildren0 Eί½Î¯& €€‚A€‚ÿMETHODS[)ίϯ2 4€R€T”A‚S~‚A€ƒã’n%9‰‚ÿvirtual voidaddChild(SoNode *child)M$½Î¯eϯ) "€H€”‘€‚A€‚ÿAdds a child as last one in groupq?ϯÖϯ2 4€~€T”A‚S~‚A€ƒã’n%9‰‚ÿvirtual voidinsertChild(SoNode *child, int newChildIndex)h?eϯJ°) "€~€”‘€‚A€‚ÿÖϯJ°„Á¯Adds a child so that it becomes the one with the given indexa/Öϯ«°2 4€^€T”A‚S~‚A€ã’n%9‰ƒ‚ÿvirtual SoNode *getChild(int index) constM$J°ø°) "€H€”‘€‚A€‚ÿReturns pointer to nth child nodeg5«°_°2 4€j€T”A‚S~‚A€ƒã’n%9‰‚ÿvirtual intfindChild(const SoNode *child) constS*ø°²°) "€T€”‘€‚A€‚ÿFinds index of given child within groupQ%_°°, (€J€T”A‚S~‚A€ƒ‚ÿvirtual intgetNumChildren() constF²°I°) "€:€”‘€‚A€‚ÿReturns number of childrenR&°›°, (€L€T”A‚S~‚A€ƒ‚ÿvirtual voidremoveChild(int index)U,I°ð°) "€X€”‘€‚A€‚ÿRemoves child with given index from group^,›°N°2 4€X€T”A‚S~‚A€ƒã’n%9‰‚ÿvirtual voidremoveChild(SoNode *child)\3ð°ª°) "€f€”‘€‚A€‚ÿRemoves first instance of given child from groupO#N°ù°, (€F€T”A‚S~‚A€ƒ‚ÿvirtual voidremoveAllChildren()K"ª°D°) "€D€”‘€‚A€‚ÿRemoves all children from groupm;ù°±°2 4€v€T”A‚S~‚A€ƒã’n%9‰‚ÿvirtual voidreplaceChild(int index, SoNode *newChild)Z1D° °) "€b€”‘€‚A€‚ÿReplaces child with given index with new child|D±°‡°8 @€ˆ€T”A‚S~‚A€ƒã’n%9‰ã’n%9‰‚ÿvirtual voidreplaceChild(SoNode *oldChild, SoNode *newChild)a8 °è°) "€p€”‘€‚A€‚ÿReplaces first instance of given child with new childU#‡°=°2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*è°°) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ =°¿°& €€‚A€‚ÿEVENTS3 °ò°) "€€”‘€‚A€‚ÿeventInL¿°>°2 4€4€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodeset_children4 ò°r°) "€€”‘€‚A€‚ÿeventOutP>°Â°2 4€<€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodechildren_changed8r°ú°& €$€‚A€‚ÿACTION BEHAVIORB°<°/ .€&€”‘€‚AãòÓ}ª€‰‚ÿSoSearchActionCú°°1o#Ý€_?aÜ°¹°Y‹°SoVRMLPixelTexture:<°¹°% €*€ˆˆ€‚ÿSoVRMLPixelTexture*°ã°# €€€‚ÿNAMEJ$¹°- °& €H€”‘€€‚ÿSoVRMLPixelTexture - texture node3ã°` °# € €€‚ÿINHERITS FROM´[- ° °Y ‚€¶€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãô©€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLTexture > SoVRMLPixelTexture. ` °B °# €€€‚ÿSYNOPSIS‚[ °Ä °' €¶€”‘€€‚‚ÿ#include Fields from class SoVRMLPixelTexture:FB ° °2 4€(€T”A‚S~‚Aãƒ2€‰ƒ‚ÿSoSFImageimageL#Ä °V °) "€F€”‘€‚A€‚ÿFields from class SoVRMLTexture:b( °¸ °: D€P€T”A‚S~‚AãU×S选ƒ‚ãU×S鉃‚ÿSoSFBoolrepeatSSoSFBoolrepeatTR)V ° °) "€R€”‘€‚A€‚ÿMethods from class SoVRMLPixelTexture:m9¸ °w °4 8€r€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLPixelTexture()static SoTypegetClassTypeId()N °Å °/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:|w °A°n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Å °™°/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØA° A° 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(cons™° A°<°t char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH™°’A°@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N A°àA°/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ’A°C°Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4àA°KC°& €€‚A€‚ÿDESCRIPTIONR)C°C°) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.K!KC°èE°* "€C€”‘€‚A€‚ÿIf the texture image's width or height is not a power of 2, or the image's width or height is greater than the maximum supported by OpenGL, then the image will be automatically scaled up or down to the next power of 2 or the maximum texture size. For maximum speed, point-sampling is used to do the scale; if you want more accurate resampling, pre-filter images to a power of 2 smaller than the maximum texture size (use the OpenGL glGetIntegerv(GL_MAX_TEXTURE_SIZE...) call to determine maximum texture for a specific OpenGL implementation)."æC° H°< F€Í€”‘€‚A€€€€€€€‚ÿThe quality of the texturing is affected by the textureQuality field of the SoComplexity node. The textureQuality field affects what kind of filtering is done to the texture when it must be minified or magnified. The mapping of a particular texture quality value to a particular OpenGL filtering technique is implementation dependent, and varies based on the texturing performance. If mipmap filtering is required, mipmaps are automatically created using the simple box filter.?èE°IH°& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS& H°œI°- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯IH°{J°0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.ê·œI°eK°3 4€o€”‘€‚A€€€€ ‚ÿThe SoVRMLPixelTexture node defines a 2D image-based texture map as an explicit array of pixel values and parameters controlling tiling repetition of the texture onto geometry. ·{J°M°* "€€”‘€‚A€‚ÿTexture maps are defined in a 2D coordinate system, (s, t), that ranges from 0.0 to 1.0 in both directions. The bottom edge of the pixel image corresponds to the S-axis of the texture map, and left edge of the pixel image corresponds to the T-axis of the texture map. The lower-left pixel of the pixel image corresponds to s=0, t=0, and the top-right pixel of the image corresponds to s=1, t=1.5eK°QM°1 2€ € ŒŒ‚A€ †"€3‚ÿ³ƒM°€°0 .€€”‘€‚A€€€‚ÿImages may be one component (grayscale), two component (grayscale plus alpha opacity), three component (full RGB color), or four-component (full RGB color plus alpha opacity). An ideal VRML implementation will use the texture image to modify the diffuse color and transparency ( = 1 - alpha opacity) of an object's material (specified in an SoVRMLMaterial node), then perform any lighting calculations using the rest of the object's material properties with the modified diffuse color to produce the final image. The texture image modifies the diffuse color and transparency depending on how many components are in the image, as followsQM°€°<°: ÿÍQM°‚°2 2€›€T”!:‚!€ƒ‚ƒ‚ƒ‚ƒ‚ÿ1.Diffuse color is multiplied by the grayscale values in the texture image. 2.Diffuse color is multiplied by the grayscale values in the texture image; material transparency is multiplied by transparency values in texture image. 3.RGB colors in the texture image replace the material's diffuse color. 4.RGB colors in the texture image replace the material's diffuse color; transparency values in the texture image replace the material's transparency. ¿•€°Îƒ°* "€+€”‘€‚!€‚ÿBrowsers may approximate this ideal behavior to increase performance. One common optimization is to calculate lighting only at each vertex and combining the texture image with the color computed from lighting (performing the texturing after lighting). Another common optimization is to perform no lighting calculations at all when texturing is enabled, displaying only the colors of the texture image. wN‚°E„°) "€œ€”‘€‚!€‚ÿSee "Concepts - Lighting Model" for details on the VRML lighting equations.†]΃°Ë„°) "€º€”‘€‚!€‚ÿSee the "Field Reference - SFImage" specification for details on how to specify an image. ï¡E„°º†°N j€C€”‘€‚!€€€€€€€€€€€€€‚ÿThe repeatS and repeatT fields specify how the texture wraps in the S and T directions. If repeatS is TRUE (the default), the texture map is repeated outside the 0-to-1 texture coordinate range in the S direction so that it fills the shape. If repeatS is FALSE, the texture coordinates are clamped in the S direction to lie within the 0-to-1 range. The repeatT field is analogous to the repeatS field. / Ë„°é†°& €€‚!€‚ÿFIELDSFº†°/‡°2 4€(€T”A‚S~‚Aãƒ2€‰ƒ‚ÿSoSFImageimage<醰k‡°) "€&€”‘€‚A€‚ÿThe texture map.0 /‡°›‡°& €€‚A€‚ÿMETHODSDk‡°ß‡°, (€0€T”A‚S~‚A€ƒ‚ÿSoVRMLPixelTexture()8›‡°ˆ°) "€€”‘€‚A€‚ÿConstructor.U#߇°lˆ°2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ˆ°¿ˆ°) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ lˆ°îˆ°& €€‚A€‚ÿEVENTS3 ¿ˆ°!‰°) "€€”‘€‚A€‚ÿeventInJk‰°2 4€0€T”A‚S~‚Aãƒ2€‰ƒ‚ÿSoSFImageset_image4 !‰°Ÿ‰°) "€€”‘€‚A€‚ÿeventOutNk‰°í‰°2 4€8€T”A‚S~‚Aãƒ2€‰ƒ‚ÿSoSFImageimage_changed8Ÿ‰°%Š°& €$€‚A€‚ÿACTION BEHAVIOR^)퉰ƒŠ°5 :€R€”‘€‚Aã©öø(€‰ã³DfL‰‚ÿSoGLRenderAction, SoCallbackAction=%Š°ÀŠ°& €.€‚A€‚ÿFILE FORMAT/DEFAULTS?ƒŠ°ÿŠ°* $€*€P„7|‚€‚ÿVRMLPixelTexture {Z*ÀŠ°Y‹°0 0€T€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿimage0 0 0repeatSTRUErepeatTTRUE}BÿŠ°›‹°1:,š` „bÝ›‹°ö‹°‘G±SoVRMLPlaneSensor[/Y‹°ö‹°, (€^€ˆˆ€€€‚ÿSoVRMLPlaneSensor(ACTION NOT IMPLEMENTED)*›‹° Œ°# €€€‚ÿNAMEe?ö‹°…Œ°& €~€”‘€€‚ÿSoVRMLPlaneSensor - maps pointing device motion onto a plane3 Œ°¸Œ°# € €€‚ÿINHERITS FROM“F…Œ°K°M j€Œ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLPlaneSensor. ¸Œ°y°# €€€‚ÿSYNOPSIS€YK°ù°' €²€”‘€€‚‚ÿ#include Fields from class SoVRMLPlaneSensor:Àny°¹Ž°R t€Ü€T”A‚S~‚AãU×S选ƒ‚ãU×S鉃‚ãi5‰ƒ‚ãi5‰ƒ‚ã”5‰ƒ‚ÿSoSFBoolautoOffsetSoSFBoolenabledSoSFVec2fmaxPositionSoSFVec2fminPositionSoSFVec3foffsetQ(ù° °) "€P€”‘€‚A€‚ÿMethods from class SoVRMLPlaneSensor:l8¹Ž°v°4 8€p€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLPlaneSensor()static SoTypegetClassTypeId()N °Ä°/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|v°LÁ°n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’Ä°LÁ°Y‹°n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ä°¤Á°/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØLÁ° Ä° 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¤Á°‘Ä°@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N Ä°ßÄ°/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ‘Ä°Æ°Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ßÄ°JÆ°& €€‚A€‚ÿDESCRIPTION+õÆ°uÇ°6 :€ë€”‘€‚A€€€€€‚ÿThe SoVRMLPlaneSensor maps pointing device (e.g. mouse or wand) motion into translation in two dimensions, in the XY plane of its local space. SoVRMLPlaneSensor uses the descendant geometry of its parent node to determine if a hit occurs.?JÆ°´Ç°& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&uÇ°É°- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯´Ç°æÉ°0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org./öÉ°Ë°9 @€í€”‘€‚A€€€€€€ ‚ÿThe SoVRMLPlaneSensor maps pointing device (e.g. mouse or wand) motion into translation in two dimensions, in the XY plane of its local space. SoVRMLPlaneSensor uses the descendant geometry of its parent node to determine if a hit occurs.µæÉ°Í°N j€k€”‘€‚A€€€€€€€€€€€€€‚ÿThe enabled exposed field enables and disables the SoVRMLPlaneSensor - if TRUE, the sensor reacts appropriately to user events, if FALSE, the sensor does not track user input or send output events. If enabled receives a FALSE event and isActive is TRUE, the sensor becomes disabled and deactivated, and outputs an isActive FALSE event. If enabled receives a TRUE, event the sensor is enabled and ready for user activation.Ÿo˰ñ0 .€ß€”‘€‚A€€€‚ÿThe SoVRMLPlaneSensor generates events if the pointing device is activated while over any descendant geometry nodes of its parent group and then moved while activated. Typically, the pointing device is a 2D device such as a mouse. The pointing device is considered to be moving within a plane at a fixed distance from the viewer and perpendicular to the line of sight; this establishes a set of 3D coordinates for the pointer. If a 3D pointer is in use, then the sensor generates events only when the pointer is within the user's field of view. In either case, the pointing device is considered to "pass over" geometry when that geometry is intersected by a line extending from the viewer and ͰñY‹°passing through the pointer's 3D coordinates. If multiple sensors' geometry intersect this line (hereafter called the bearing), only the nearest will be eligible to generate events.Ï{Í°’±T v€÷€”‘€‚A€€€€€€€€€€€€€€€‚ÿUpon activation of the pointing device (e.g. mouse button down) over the sensor's geometry, an isActive TRUE event is sent. Dragging motion is mapped into a relative translation in the XY plane of the sensor's local coordinate system as it was defined at the time of activation. For each subsequent position of the bearing, a translation_changed event is output which corresponds to a relative translation from the original intersection point projected onto the XY plane, plus the offset value. The sign of the translation is defined by the XY plane of the sensor's coordinate system. trackPoint_changed events reflect the unclamped drag position on the surface of this plane. When the pointing device is deactivated and autoOffset is TRUE, offset is set to the last translation value and an offset_changed event is generated. See "Concepts - Drag Sensors" for more details.!Íñ³±T v€›€”‘€‚A€€€€€€ €€€€€€€€€‚ÿWhen the sensor generates an isActive TRUE event, it grabs all further motion events from the pointing device until it releases and generates an isActive FALSE event (other pointing device sensors cannot generate events during this time). Motion of the pointing device while isActive is TRUE is referred to as a "drag". If a 2D pointing device is in use, isActive events will typically reflect the state of the primary button associated with the device (i.e. isActive is TRUE when the primary button is pressed, and FALSE when not released). If a 3D pointing device (e.g. wand) is in use, isActive events will typically reflect whether the pointer is within or in contact with the sensor's geometry. ˜A’±K ±W |€ƒ€”‘€‚A€€€€€€€€€€€€€€€€‚ÿminPosition and maxPosition may be set to clamp translation events to a range of values as measured from the origin of the XY plane. If the X or Y component of minPosition is greater than the corresponding component of maxPosition, translation_changed events are not clamped in that dimension. If the X or Y component of minPosition is equal to the corresponding component of maxPosition, that component is constrained to the given value; this technique provides a way to implement a line sensor that maps dragging motion into a translation in one dimension. ^³±© ±N j€!€”‘€‚A€€€€€€€€€€€€€‚ÿWhile the pointing device is activated, trackPoint_changed and translation_changed events are output. trackPoint_changed events represent the unclamped intersection points on the surface of the local XY plane. If the pointing device is dragged off of the XY plane while activated (e.g. above horizon line), browsers may interpret this in several ways (e.g. clamp all values to the horizon). Each movement of the pointing device, while isActive is TRUE, generates trackPoint_changed and translation_changed events.wNK ± ±) "€œ€”‘€‚A€‚ÿSee "Concepts - Pointing Device Sensors and Drag Sensors" for more details./ © ±O ±& €€‚A€‚ÿFIELDSJ ±™ ±2 4€0€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolautoOffsetuLO ±±) "€˜€”‘€‚A€‚ÿSpecifies whether to set the offset to the last translation value (TRUE).G™ ±U±2 4€*€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolenabledZ1±¯±) "€b€”‘€‚A€‚ÿEnables (TRUE) or disables (FALSE) the sensor.l2U±±: D€d€T”A‚S~‚Aãi5€‰ƒ‚ãi5‰ƒ‚ÿSoSFVec2fmaxPositionSoSFVec2fminPositionŽe¯±©±) "€Ê€”‘€‚A€‚ÿUsed to clamp translation events to a range of values as measured from the origin of the XY plane.G± @±2 4€*€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3foffset©± @±Y‹°Y0©±e@±) "€`€”‘€‚A€‚ÿAmount to add to the translation event value.0 @±•@±& €€‚A€‚ÿMETHODSCe@±Ø@±, (€.€T”A‚S~‚A€ƒ‚ÿSoVRMLPlaneSensor()8•@±A±) "€€”‘€‚A€‚ÿConstructor.a/Ø@±qA±2 4€^€T”A‚S~‚A€ƒã‘¶p6‰‚ÿstatic voidenableEvents(SbBool OnOffFlag)üÆA±mB±6 :€€”‘€‚A€€€€€‚ÿEnables/disables events for all SoVRMLPlaneSensor objects. If you have created several objects of this class, you can disable/enable events for all of them with a single call to this method. V$qA±ÃB±2 4€H€T”A‚S~‚A€㑶p6‰ƒ‚ÿstatic SbBoolisEventsEnabled()h?mB±+C±) "€~€”‘€‚A€‚ÿQueries if events are enabled for all objects of this class.U#ÃB±€C±2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*+C±ÓC±) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ €C±D±& €€‚A€‚ÿEVENTS3 ÓC±5D±) "€€”‘€‚A€‚ÿeventInÕ‚D± E±S t€€T”A‚S~‚AãU×S选ƒ‚ãU×S鉃‚ãi5‰ƒ‚ãi5‰ƒ‚ã”5‰ƒ‚ÿSoSFBoolset_autoOffsetSoSFBoolset_enabledSoSFVec2fset_maxPositionSoSFVec2fset_minPositionSoSFVec3fset_offset4 5D±>E±) "€€”‘€‚A€‚ÿeventOutTé E±’F±k ¤€Ó€T”A‚S~‚AãU×S选ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ãU×S鉃‚ãU×S鉃‚ãi5‰ƒ‚ãi5‰ƒ‚ã”5‰ƒ‚ÿSoSFBoolisActiveSoSFVec3ftrackPoint_changedSoSFVec3ftranslation_changedSoSFBoolautoOffset_changedSoSFBoolenabled_changedSoSFVec2fmaxPosition_changedSoSFVec2fminPosition_changedSoSFVec3foffset_changed=>E±ÏF±& €.€‚A€‚ÿFILE FORMAT/DEFAULTS>’F± G±* $€(€P„7|‚€‚ÿVRMLPlaneSensor {„PÏF±‘G±4 8€ €P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿautoOffsetTRUEenabledTRUEmaxPosition-1 -1minPosition0 0offset0 0 0}A G±ÒG±1Í?aÌ‚cÞÒG± H±þűSoVRMLPointLight8‘G± H±% €&€ˆˆ€‚ÿSoVRMLPointLight*ÒG±4H±# €€€‚ÿNAMEb< H±–H±& €x€”‘€€‚ÿSoVRMLPointLight - node representing a point light source34H±ÉH±# € €€‚ÿINHERITS FROM°W–H±yI±Y ‚€®€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãgB~(€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLLight > SoVRMLPointLight. ÉH±§I±# €€€‚ÿSYNOPSIS~WyI±%J±' €®€”‘€€‚‚ÿ#include Fields from class SoVRMLPointLight:¤\§I±ÉJ±H `€¸€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ€€‚ÿSoSFVec3fattenuationSoSFVec3flocationSoSFFloatradius (Note: Not implemented)V$%J±K±2 4€H€”‘€‚A€ãgB~(‰€‚ÿFields from class SoVRMLLight:ŸUÉJ±¾K±J d€ª€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ÿSoSFFloatambientIntensitySoSFColorcolorSoSFFloatintensitySoSFBoolonP'K±L±) "€N€”‘€‚A€‚ÿMethods from class SoVRMLPointLight:k7¾K±yL±4 8€n€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLPointLight()static SoTypegetClassTypeId()NL±ÇL±/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|yL±CN±n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÇL±›N±/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØCN± ± 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(co›N± ±‘G±nst char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH›N±”±@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N ±â±/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ”±ƒ±Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4â±Mƒ±& €€‚A€‚ÿDESCRIPTIONi3ƒ±¶„±6 :€g€”‘€‚A€€€€€‚ÿThe SoVRMLPointLight node specifies a point light source at a 3D location in the local coordinate system. A point source emits light equally in all directions; that is, it is omnidirectional. SoVRMLPointLights are specified in their local coordinate system and are affected by parent transformations.ûËMƒ±±…±0 .€—€”‘€‚A€€€‚ÿNote: SoVRMLPointLights only illuminate objects in their enclosing parent group (similar to Directional lights). This is a slight deviation from the behavior described by the VRML 2.0 specification.?¶„±ð…±& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&±…±C‡±- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ð…±"ˆ±0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.m4C‡±‰±9 @€i€”‘€‚A€€€€€€ ‚ÿThe SoVRMLPointLight node specifies a point light source at a 3D location in the local coordinate system. A point source emits light equally in all directions; that is, it is omnidirectional. SoVRMLPointLights are specified in their local coordinate system and are affected by parent transformations.³x"ˆ±BŠ±; F€ð€”‘€‚A€€€€€€€‚ÿSee "Concepts - Light Sources" for a detailed description of the ambientIntensity, color, and intensity fields.͉±W‹±H ^€›€”‘€‚A€€€€€€€€€€€‚ÿA SoVRMLPointLight may illuminate geometry within radius (>= 0.0) meters of its location. Both radius and location are affected by parent transformations (scale radius and transform location).ÉKBŠ± Ž±~ Ê€—€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿA SoVRMLPointLight's illumination falls off with distance as specified by three attenuation coefficients. The attenuation factor is 1/(attenuation[0] + attenuation[1]*r + attenuation[2]*r^2), where r is the distance of the light to the surface being illuminated. The default is no attenuation. An attenuation value of 0 0 0 is identical to 1 0 0. Attenuation values must be >= 0.0. Renderers that do not support a full attenuation model may approximate as necessary. See "Concepts - Lighting Model" for a detailed description of VRML's lighting equations. / W‹±OŽ±& €€‚A€‚ÿFIELDSL Ž±›Ž±2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fattenuationEOŽ±àŽ±) "€8€”‘€‚A€‚ÿAttenuation coefficients.I›Ž±)±2 4€.€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3flocationCàŽ±l±) "€4€”‘€‚A€‚ÿLocation of the source.g/)±Ó±8 @€^€T”A‚S~‚Aã0â1€‰ƒ€€‚ÿSoSFFloatradius (Note: Not implemented)b6l±AÀ±, (€l€”‘€‚A€€‚ÿÓ±AÀ±‘G±Meters from the location the light can illuminate.0 Ó±qÀ±& €€‚A€‚ÿMETHODSBAÀ±³À±, (€,€T”A‚S~‚A€ƒ‚ÿSoVRMLPointLight()8qÀ±ëÀ±) "€€”‘€‚A€‚ÿConstructor.U#³À±@Á±2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ëÀ±“Á±) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ @Á±ÂÁ±& €€‚A€‚ÿEVENTS3 “Á±õÁ±) "€€”‘€‚A€‚ÿeventIn±ÂÁ± ñc ”€c€T”A‚S~‚Aã0â1€‰ƒ‚ã”5‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ã”5‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ÿSoSFFloatset_ambientIntensitySoSFVec3fset_attenuationSoSFColorset_colorSoSFFloatset_intensitySoSFVec3fset_locationSoSFBoolset_onSoSFFloatset_radius4 õÁ±=ñ) "€€”‘€‚A€‚ÿeventOut0Í Ã±mıc ”€›€T”A‚S~‚Aã0â1€‰ƒ‚ã”5‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ã”5‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ÿSoSFFloatambientIntensity_changedSoSFVec3fattenuation_changedSoSFColorcolor_changedSoSFFloatintensity_changedSoSFVec3flocation_changedSoSFBoolon_changedSoSFFloatradius_changed8=ñ¥Ä±& €$€‚A€‚ÿACTION BEHAVIORDmıéı/ .€*€”‘€‚Aã©öø(€‰‚ÿSoGLRenderAction=¥Ä±&ű& €.€‚A€‚ÿFILE FORMAT/DEFAULTS=éıcű* $€&€P„7|‚€‚ÿVRMLPointLight {›c&űþű8 @€Æ€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿambientIntensity0attenuation1 0 0color1 1 1intensity1location0 0 0onTRUEradius100}?cű=Ʊ1 „b> dß=ƱsƱ3²SoVRMLPointSet6þűsƱ% €"€ˆˆ€‚ÿSoVRMLPointSet*=ƱƱ# €€€‚ÿNAMEN(sƱëƱ& €P€”‘€€‚ÿSoVRMLPointSet - point set shape node3ƱDZ# € €€‚ÿINHERITS FROMï~ëƱ ȱq ²€ü€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€ã™)¼Œ€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLVertexPoint > SoVRMLPointSet. DZ;ȱ# €€€‚ÿSYNOPSIS…X ȱÀȱ- *€°€”‘€€‚ã™)¼Œ‰‚ÿ#include Fields from class SoVRMLVertexPoint:^$;ȱɱ: D€H€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ÿSoSFNodecolorSoSFNodecoordN%Àȱlɱ) "€J€”‘€‚A€‚ÿMethods from class SoVRMLPointSet:i5ɱÕɱ4 8€j€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLPointSet()static SoTypegetClassTypeId()Nlɱ#ʱ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÕɱŸË±n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)#ʱ÷˱/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:e؟˱\α 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH÷˱äα@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N\α2ϱ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þäαu²Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolis2ϱu²þűOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const42ϱ©²& €€‚A€‚ÿDESCRIPTIONR)u²û²) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?©²:²& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&û²²- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯:²l²0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.£²l²] ˆ€G€”‘€‚A€€€€€€€€€€€€€€€€€€ ‚ÿThe SoVRMLPointSet node specifies a set of 3D points in the local coordinate system with associated colors at each point. The coord field specifies an SoVRMLCoordinate node (or instance of an SoVRMLCoordinate node) - results are undefined if the coord field specifies any other type of node. SoVRMLPointSet uses the coordinates in order. If the coord field is NULL, then the SoVRMLPointSet is empty.al²ù², (€Â€”‘€‚A€€‚ÿSoVRMLPointSets are not lit, not texture-mapped, or collided with during collision detection.øªl²ñ²N j€U€”‘€‚A€€€€€€€€€€€€€‚ÿIf the color field is not NULL, it must specify an SoVRMLColor node that contains at least the number of points contained in the coord node - results are undefined if the color field specifies any other type of node. Colors shall be applied to each point in order. The results are undefined if the number of values in the SoVRMLColor node is less than the number of values specified in the SoVRMLCoordinate node^ù²O ²H ^€-€”‘€‚A€€€€€€€€€€€‚ÿIf the color field is NULL and there is an SoVRMLMaterial defined for the SoVRMLAppearance affecting this SoVRMLPointSet, then use the emissiveColor of the Material to draw the points. See "Concepts - Lighting Model, Lighting Off" for details on lighting equations./ ñ²~ ²& €€‚A€‚ÿFIELDSEO ²Ã ²2 4€&€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodecoordvG~ ²9 ²/ .€Ž€”‘€‚A€€€‚ÿAn SoVRMLCoordinate node containing the coordinates of the points.Eà ²~ ²2 4€&€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodecolorl=9 ²ê ²/ .€z€”‘€‚A€€€‚ÿAn SoVRMLColor node containing the colors of the points.0 ~ ² ²& €€‚A€‚ÿMETHODS@ê ²Z ², (€(€T”A‚S~‚A€ƒ‚ÿSoVRMLPointSet()8 ²’ ²) "€€”‘€‚A€‚ÿConstructor.U#Z ²ç ²2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*’ ²: ²) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ç ²i ²& €€‚A€‚ÿEVENTS3 : ²œ ²) "€€”‘€‚A€‚ÿeventInf,i ² ²: D€X€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ÿSoSFNodeset_colorSoSFNodeset_coord4 œ ²6 ²) "€€”‘€‚A€‚ÿeventOutn4 ²¤ ²: D€h€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ÿSoSFNodecolor_changedSoSFNodecoord_changed86 ²Ü ²& €$€‚A€‚ÿACTION BEHAVIOR—V¤ ²s²A R€¬€”‘€‚Aã©öø(€‰ãɓ℉ããS¯+‰ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoGetBoundingBoxAction, SoCallbackAction=Ü ²°²& €.€‚A€‚ÿFILE FORMAT/DEFAULTS;s²ë²* $€"€P„7|‚€‚ÿVRMLPointSet {H°²3². ,€4€P„|‚€ƒ‚ƒ‚‚ÿcoordNULLcolorNULL}Kë²~²1“Ì‚cPˆ]à~²À²0ƒ²SoVRMLPositionInterpolatorB3²À²% €:€ˆˆ€‚ÿSoVRMLPositionInterpolator*~² @²# €€€‚ÿNAMEÀ² @²3²qKÀ²}@²& €–€”‘€€‚ÿSoVRMLPositionInterpolator - interpolates among a set of position values3 @²°@²# € €€‚ÿINHERITS FROMÁh}@²qA²Y ‚€Ð€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãéf€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLInterpolator > SoVRMLPositionInterpolator. °@²ŸA²# €€€‚ÿSYNOPSIS’kqA²1B²' €Ö€”‘€€‚‚ÿ#include Fields from class SoVRMLPositionInterpolator:a'ŸA²’B²: D€N€T”A‚S~‚Aã'0]€‰ƒ‚ãòi`‰ƒ‚ÿSoMFFloatkeySoMFVec3fkeyValueZ11B²ìB²) "€b€”‘€‚A€‚ÿMethods from class SoVRMLPositionInterpolator:uA’B²aC²4 8€‚€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLPositionInterpolator()static SoTypegetClassTypeId()NìB²¯C²/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|aC²+E²n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¯C²ƒE²/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ+E²èG² 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHƒE²pH²@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NèG²¾H²/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞpH²õI²Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4¾H²)J²& €€‚A€‚ÿDESCRIPTIONR)õI²{J²) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?)J²ºJ²& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&{J² L²- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ºJ²ìL²0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.C  L²/N²9 @€€”‘€‚A€€€€€€ ‚ÿThis node linearly interpolates among a set of SFVec3f values. This is appropriate for interpolating a translation. The vectors are interpreted as absolute positions in object space. The keyValue field must contain exactly as many values as in the key field.€WìL²¯N²) "€®€”‘€‚A€‚ÿRefer to "Concepts - Interpolators" for a more detailed discussion of interpolators./ /N²ÞN²& €€‚A€‚ÿFIELDSa'¯N²?O²: D€N€T”A‚S~‚Aã'0]€‰ƒ‚ãòi`‰ƒ‚ÿSoMFFloatkeySoMFVec3fkeyValue0 ÞN²oO²& €€‚A€‚ÿMETHODSL ?O²»O², (€@€T”A‚S~‚A€ƒ‚ÿSoVRMLPositionInterpolator()8oO² €²) "€€”‘€‚A€‚ÿConstructor.»O² €²3²U#»O²a€²2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S* €²´€²) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ a€²ã€²& €€‚A€‚ÿEVENTS3 ´€²²) "€€”‘€‚A€‚ÿeventInŠH〲 ²B T€€T”A‚S~‚Aã0â1€‰ƒ‚ã'0]‰ƒ‚ãòi`‰ƒ‚ÿSoSFFloatset_fractionSoMFFloatset_keySoMFVec3fset_keyValue4 ²Ô²) "€€”‘€‚A€‚ÿeventOut“Q ²g‚²B T€¢€T”A‚S~‚Aã”5€‰ƒ‚ã'0]‰ƒ‚ãòi`‰ƒ‚ÿSoSFVec3fvalue_changedSoMFFloatkey_changedSoMFVec3fkeyValue_changed=Ô²¤‚²& €.€‚A€‚ÿFILE FORMAT/DEFAULTSGg‚²ë‚²* $€:€P„7|‚€‚ÿVRMLPositionInterpolator {E¤‚²0ƒ². ,€.€P„|‚€ƒ‚ƒ‚‚ÿkey[]keyValue[]}F낲vƒ²1»"ÿˆ^2fávƒ²³ƒ²³SoVRMLProximitySensor=0ƒ²³ƒ²% €0€ˆˆ€‚ÿSoVRMLProximitySensor*vƒ²Ýƒ²# €€€‚ÿNAME™s³ƒ²v„²& €æ€”‘€€‚ÿSoVRMLProximitySensor - generates events when the user moves into, out of, or within a specified region of space3݃²©„²# € €€‚ÿINHERITS FROM—Jv„²@…²M j€”€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLProximitySensor. ©„²n…²# €€€‚ÿSYNOPSISˆa@…²ö…²' €Â€”‘€€‚‚ÿ#include Fields from class SoVRMLProximitySensor:{9n…²q†²B T€r€T”A‚S~‚Aã”5€‰ƒ‚ãU×S鉃‚ã”5‰ƒ‚ÿSoSFVec3fcenterSoSFBoolenabledSoSFVec3fsizeU,ö…²Æ†²) "€X€”‘€‚A€‚ÿMethods from class SoVRMLProximitySensor:Ћq†²–‡²E X€€T”A‚S~‚A€ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãB-9‰ƒ‚ÿSoVRMLProximitySensor()static voidenableEvents(SbBool OnOffFlag)static SbBoolisEventsEnabled()static SoTypegetClassTypeId()NƆ²ä‡²/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|–‡²`‰²n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)䇲¸‰²/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ`‰²Œ² 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¸‰²¥Œ²@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NŒ²óŒ²/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¥Œ²*Ž²Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4óŒ²^Ž²& €€‚A€‚ÿDESCRIPTION³ƒ*Ž²²0 .€€”‘€‚A€€€‚ÿThe SoVRMLProximitySensor generates events when the user enters, exits, and moves within a region in space (defined by a box).?^Ž²P²& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&²¯À²- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the applicatP²¯À²0ƒ²ion is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯P²ŽÁ²0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.["¯À²é²9 @€E€”‘€‚A€€€€€€ ‚ÿThe SoVRMLProximitySensor generates events when the user enters, exits, and moves within a region in space (defined by a box). A proximity sensor can be enabled or disabled by sending it an enabled event with a value of TRUE or FALSE - a disabled sensor does not send output events.ÁgŽÁ²ªÅ²Z ‚€Ï€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿA SoVRMLProximitySensor generates isActive TRUE/FALSE events as the viewer enters and exits the rectangular box defined by its center and size fields. Browsers shall interpolate user positions and timestamp the isActive events with the exact time the user first intersected the proximity region. The center field defines the center point of the proximity region in object space, and the size field specifies a vector which defines the width (x), height (y), and depth (z) of the box bounding the region. SoVRMLProximitySensor nodes are affected by the hierarchical transformations of its parents.Ôé²ÀƲB R€©€”‘€‚A€€€€€€€€€‚ÿThe enterTime event is generated whenever the isActive TRUE event is generated (user enters the box), and exitTime events are generated whenever isActive FALSE event is generated (user exits the box). /íªÅ²ïȲB R€Û€”‘€‚A€€€€€€€€€‚ÿThe position_changed and orientation_changed events send events whenever the position and orientation of the viewer changes with respect to the SoVRMLProximitySensor's coordinate system - this includes enter and exit times. Note that the user movement may be as a result of a variety of circumstances (e.g. browser navigation, proximity sensor's coordinate system changes, bound Viewpoint's position or orientation changes, or the SoVRMLProximitySensor's coordinate system changes).ó¥ÀƲâʲN j€K€”‘€‚A€€€€€€€€€€€€€‚ÿEach SoVRMLProximitySensor behaves independently of all other SoVRMLProximitySensors - every enabled SoVRMLProximitySensor that is affected by the user's movement receives and sends events, possibly resulting in multiple SoVRMLProximitySensors receiving and sending events simultaneously. Unlike SoVRMLTouchSensors, there is no notion of an SoVRMLProximitySensor lower in the scene graph "grabbing" events.-ñïȲ̲< F€ã€”‘€‚A€€€€ €€€‚ÿInstanced (DEF/USE) SoVRMLProximitySensors use the union of all the boxes to check for enter and exit - an instanced SoVRMLProximitySensor will detect enter and exit for all instances of the box and send output events appropriately.Ÿ]âʲ®Í²B R€»€”‘€‚A€€€€€€€€€‚ÿA SoVRMLProximitySensor that surrounds the entire world will have an enterTime equal to the time that the world was entered and can be used to start up animations or behaviors as soon as a world is loaded. A SoVRMLProximitySensor with a (0 0 0) size field cannot generate events - this is equivalent to setting the enabled field to FALSE./ ̲ÝͲ& €€‚A€‚ÿFIELDS`&®Í²=β: D€L€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fcenterSoSFVec3fsizepGÝͲ­Î²) "€Ž€”‘€‚A€‚ÿDefine the rectangular box within which isActive event is generated.G=βôβ2 4€*€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolenabledX/­Î²Lϲ) "€^€”‘€‚A€‚ÿEnable (TRUE) or disable (FALSE) the sensor.0 ôβ|ϲ& €€‚A€‚ÿMETHODSGLϲÃϲ, (€6€T”A‚S~‚A€ƒ‚ÿSoVRMLProximitySensor()8|ϲ ³) "€€”‘€‚A€‚ÿConstructor.Ãϲ ³0ƒ²a/Ãϲm³2 4€^€T”A‚S~‚A€ƒã‘¶p6‰‚ÿstatic voidenableEvents(SbBool OnOffFlag)Ê ³m³6 :€•€”‘€‚A€€€€€‚ÿEnables/disables events for all SoVRMLProximitySensor objects. If you have created several objects of this class, you can disable/enable events for all of them with a single call to this method. V$m³Ã³2 4€H€T”A‚S~‚A€㑶p6‰ƒ‚ÿstatic SbBoolisEventsEnabled()h?m³+³) "€~€”‘€‚A€‚ÿQueries if events are enabled for all objects of this class.U#ó€³2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*+³Ó³) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ €³³& €€‚A€‚ÿEVENTS3 Ó³5³) "€€”‘€‚A€‚ÿeventIn‡E³¼³B T€Š€T”A‚S~‚Aã”5€‰ƒ‚ãU×S鉃‚ã”5‰ƒ‚ÿSoSFVec3fset_centerSoSFBoolset_enabledSoSFVec3fset_size4 5³ð³) "€€”‘€‚A€‚ÿeventOut9μ³)³k ¤€€T”A‚S~‚AãU×S选ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ãøi鉃‚ãøi鉃‚ã”5‰ƒ‚ãU×S鉃‚ã”5‰ƒ‚ÿSoSFBoolisActiveSoSFVec3fposition_changedSoSFRotationorientation_changedSoSFTimeenterTimeSoSFTimeexitTimeSoSFVec3fcenter_changedSoSFBoolenabled_changedSoSFVec3fsize_changed=ð³f³& €.€‚A€‚ÿFILE FORMAT/DEFAULTSB)³¨³* $€0€P„7|‚€‚ÿVRMLProximitySensor {Y)f³³0 0€R€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿcenter0 0 0enabledTRUEsize0 0 0}I¨³J³1ÎOe\…fâJ³Š³ÚI³SoVRMLScalarInterpolator@³Š³% €6€ˆˆ€‚ÿSoVRMLScalarInterpolator*J³´³# €€€‚ÿNAMElFŠ³ ³& €Œ€”‘€€‚ÿSoVRMLScalarInterpolator - interpolates among a set of float values3´³S³# € €€‚ÿINHERITS FROM¿f ³³Y ‚€Ì€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãéf€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLInterpolator > SoVRMLScalarInterpolator. S³@³# €€€‚ÿSYNOPSISŽg³Î³' €Î€”‘€€‚‚ÿ#include Fields from class SoVRMLScalarInterpolator:a'@³/ ³: D€N€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ÿSoMFFloatkeySoMFFloatkeyValueX/γ‡ ³) "€^€”‘€‚A€‚ÿMethods from class SoVRMLScalarInterpolator:s?/ ³ú ³4 8€~€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLScalarInterpolator()static SoTypegetClassTypeId()N‡ ³H ³/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ú ³Ä ³n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)H ³ ³/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØÄ ³³ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH ³ ³@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N³W³/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ ³š@³Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual W³š@³³SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4W³Î@³& €€‚A€‚ÿDESCRIPTIONR)š@³ A³) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?Î@³_A³& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS& A³²B³- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯_A³‘C³0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.e,²B³öD³9 @€Y€”‘€‚A€€€€€€ ‚ÿThis node linearly interpolates among a set of SFFloat values. This interpolator is appropriate for any parameter defined using a single floating point value, e.g., width, radius, intensity, etc. The keyValue field must contain exactly as many numbers as there are keyframes in the key field.€W‘C³vE³) "€®€”‘€‚A€‚ÿRefer to "Concepts - Interpolators" for a more detailed discussion of interpolators./ öD³¥E³& €€‚A€‚ÿFIELDSa'vE³F³: D€N€T”A‚S~‚Aã'0]€‰ƒ‚ã'0]‰ƒ‚ÿSoMFFloatkeySoMFFloatkeyValue0 ¥E³6F³& €€‚A€‚ÿMETHODSJF³€F³, (€<€T”A‚S~‚A€ƒ‚ÿSoVRMLScalarInterpolator()86F³¸F³) "€€”‘€‚A€‚ÿConstructor.U#€F³ G³2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¸F³`G³) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ G³G³& €€‚A€‚ÿEVENTS3 `G³ÂG³) "€€”‘€‚A€‚ÿeventInŠHG³LH³B T€€T”A‚S~‚Aã0â1€‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ÿSoSFFloatset_fractionSoMFFloatset_keySoMFFloatset_keyValue4 ÂG³€H³) "€€”‘€‚A€‚ÿeventOut“QLH³I³B T€¢€T”A‚S~‚Aã0â1€‰ƒ‚ã'0]‰ƒ‚ã'0]‰ƒ‚ÿSoSFFloatvalue_changedSoMFFloatkey_changedSoMFFloatkeyValue_changed=€H³PI³& €.€‚A€‚ÿFILE FORMAT/DEFAULTSEI³•I³* $€6€P„7|‚€‚ÿVRMLScalarInterpolator {EPI³ÚI³. ,€.€P„|‚€ƒ‚ƒ‚‚ÿkey[]keyValue[]}= •I³J³1½$2fFŠgãJ³mJ³ŠÎ³SoVRMLScriptV*ÚI³mJ³, (€T€ˆˆ€€€‚ÿSoVRMLScript(ACTION NOT IMPLEMENTED)*J³—J³# €€€‚ÿNAME[5mJ³òJ³& €j€”‘€€‚ÿSoVRMLScript - used to program behavior in a scene3—J³%K³# € €€‚ÿINHERITS FROMŽAòJ³³K³M j€‚€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLScript. %K³áK³# €€€‚ÿSYNOPSISvO³K³WL³' €ž€”‘€€‚‚ÿ#include Fields from class SoVRMLScript:…CáK³ÜL³B T€†€T”A‚S~‚Aã*{£€‰ƒ‚ãU×S鉃‚ãU×S鉃‚ÿSoMFStringurlSoSFBooldirectOutputSoSFBoolmustEvaluateL#WL³(M³) "€F€”‘€‚A€‚ÿMethods from class SoVRMLScript:g3ÜL³M³4 8€f€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLScript()static SoTypegetClassTypeId()N(M³ÝM³/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|M³YO³n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ÝM³±O³/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØYO³"‚³ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6±O³"‚³ÚI³‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH±O³ª‚³@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N"‚³ø‚³/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þª‚³/„³Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ø‚³c„³& €€‚A€‚ÿDESCRIPTIONM/„³°…³6 :€/€”‘€‚A€€€€€‚ÿThe SoVRMLScript node is used to program behavior in a scene. SoVRMLScript nodes typically receive events that signify a change or user action, contain a program module that performs some computation, and effect change somewhere else in the scene by sending output events.?c„³ï…³& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&°…³B‡³- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯!ˆ³0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.V B‡³wŠ³K d€€”‘€‚A€€€€€€€€€€€€ ‚ÿThe SoVRMLScript node is used to program behavior in a scene. SoVRMLScript nodes typically receive events that signify a change or user action, contain a program module that performs some computation, and effect change somewhere else in the scene by sending output events. Each SoVRMLScript node has associated programming language code, referenced by the url field, that is executed to carry out the SoVRMLScript node's function. That code will be referred to as "the script" in the rest of this description.…U!ˆ³ü‹³0 .€«€”‘€‚A€€€‚ÿBrowsers are not required to support any specific language. See the section in "Concepts - Scripting" for detailed information on scripting languages. Browsers are required to adhere to the language bindings of languages specified in annexes of the specification. See the section "Concepts - URLS and URNs" for details on the url field.a1wŠ³]³0 .€c€”‘€‚A€€€‚ÿWhen the script is created, any language-dependent or user-defined initialization is performed. The script is able to receive and process events that are sent to it. Each event that can be received must be declared in the SoVRMLScript node using the same syntax as is used in a prototype definition: Hü‹³¥³. ,€4€Ù€‚A€€€‚ÿ eventIn type name+]³Ð³( €€Ù€‚A€‚ÿÀ–¥³Ž³* "€-€”‘€‚A€‚ÿThe type can be any of the standard VRML fields (see "Field Reference"), and name must be an identifier that is unique for this SoVRMLScript node. Êг³6 :€•€”‘€‚A€€€€€‚ÿThe SoVRMLScript node should be able to generate events in response to the incoming events. Each event that can be generated must be declared in the SoVRMLScript node using the following syntax: AŽ³Ñ³( €2€Ù€‚A€‚ÿ eventOut type name+³ À³( €€Ù€‚A€‚ÿѳ À³ÚI³¶ŒÑ³ÂÀ³* "€€”‘€‚A€‚ÿSoVRMLScript nodes cannot have exposedFields. The implementation ramifications of exposedFields is far too complex and thus not allowed. Y À³óH ^€#€”‘€‚A€€€€€€€€€€€‚ÿIf the SoVRMLScript node's mustEvaluate field is FALSE, the browser can delay sending input events to the script until its outputs are needed by the browser. If the mustEvaluate field is TRUE, the browser should send input events to the script as soon as possible, regardless of whether the outputs are needed. The mustEvaluate field should be set to TRUE only if the SoVRMLScript has effects that are not known to the browser (such as sending information across the network); otherwise, poor performance may result.h&ÂÀ³ƒÅ³B R€M€”‘€‚A€€€€€€€€€‚ÿOnce the script has access to a VRML node (via an SFNode or MFNode value either in one of the SoVRMLScript node's fields or passed in as an eventIn), the script should be able to read the contents of that node's exposed field. If the SoVRMLScript node's directOutput field is TRUE, the script may also send events directly to any node to which it has access, and may dynamically establish or break routes. If directOutput is FALSE (the default), then the script may only affect the rest of the world via events sent through its eventOuts. ðÆósƳ* "€€”‘€‚A€‚ÿA script is able to communicate directly with the VRML browser to get the current time, the current world URL, and so on. This is strictly defined by the API for the specific language being used.Ï¥ƒÅ³Bdz* "€K€”‘€‚A€‚ÿIt is expected that all other functionality (such as networking capabilities, multi-threading capabilities, and so on) will be provided by the scripting language.}5sƳ¿È³H ^€k€”‘€‚A€€€€€€€€€€€‚ÿThe location of the SoVRMLScript node in the scene graph has no effect on its operation. For example, if a parent of an SoVRMLScript node is an SoVRMLSwitch node with whichChoice set to -1 (i.e. ignore its children), the SoVRMLScript continues to operate as specified (receives and sends events)./ Bdzîȳ& €€‚A€‚ÿFIELDSE¿È³3ɳ2 4€&€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringurlQ(îȳ„ɳ) "€P€”‘€‚A€‚ÿAssociated programming language code.L3ɳÐɳ2 4€4€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBooldirectOutputÉŸ„ɳ™Ê³* "€?€”‘€‚A€‚ÿIf TRUE, the script can send events directly to the other nodes. If FALSE, the scripts must use eventOuts to affect the rest of the world. Default is FALSE.LÐɳåʳ2 4€4€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolmustEvaluate¡x™Ê³†Ë³) "€ð€”‘€‚A€‚ÿIf FALSE, delay sending input events to the script until needed. If TRUE, send as soon as possible. Default is FALSE.>åʳÄ˳) "€*€”‘€‚A€‚ÿAnd any number of:žn†Ë³b̳0 0€Ü€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿeventIneventTypeName eventNamefieldfieldTypeName fieldName initialValueeventOuteventTypeName eventName0 Ä˳’̳& €€‚A€‚ÿMETHODS>b̳Ð̳, (€$€T”A‚S~‚A€ƒ‚ÿSoVRMLScript()8’̳ͳ) "€€”‘€‚A€‚ÿConstructor.U#Ð̳]ͳ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ͳ°Í³) "€T€”‘€‚A€‚ÿReturns type identifier for this class.=]ͳíͳ& €.€‚A€‚ÿFILE FORMAT/DEFAULTS8°Í³%γ* $€€P„7|‚€‚ÿVRMLScript{e4íͳŠÎ³1 2€h€P„|‚€ƒ‚ƒ‚ƒ‚‚‚ÿurl[]directedOutputFALSEmustEvaluateFALSE}< %γÆγ1Œ\…f"…häÆγùγCJ´SoVRMLShape3ŠÎ³ùγ% €€ˆˆ€‚ÿSoVRMLShape*Æγ#ϳ# €€€‚ÿNAMEpJùγ“ϳ& €”€”‘€€‚ÿSoVRMLShape - defines a shape by specifying its appearance and geometry3#ϳÆϳ# € €€‚ÿINHERITS FROM@“ϳ_´M j€€€”‘€ã}9€‰€ã¿\%†€‰€ãÆϳ_´ŠÎ³’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLShape. Æϳ´# €€€‚ÿSYNOPSIST._´á´& €\€”‘€€‚ÿ#include ½´ç´I `€{€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚ÿenum CacheEnabled{SoVRMLShape::OFF,Never build or use a cacheSoVRMLShape::ON,Always try to build a cacheSoVRMLShape::AUTODecide whether to cache based on some heuristic}J!á´1´) "€B€”‘€‚A€‚ÿFields from class SoVRMLShape:±dç´â´M j€È€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ãØtW鉃‚ãØtW鉃€‚ÿSoSFNodeappearanceSoSFNodegeometrySoSFEnumrenderCachingSoSFEnumboundingBoxCachingK"1´-´) "€D€”‘€‚A€‚ÿMethods from class SoVRMLShape:¶~â´ã´8 @€ü€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ÿSoVRMLShape()static voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()static SoTypegetClassTypeId()N-´1´/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ã´­´n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)1´´/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ­´j´ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH´ò´@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nj´@ ´/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þò´w ´Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4@ ´« ´& €€‚A€‚ÿDESCRIPTIONR)w ´ý ´) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?« ´< ´& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&ý ´ ´- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯< ´n ´0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.🠴^´Q p€?€”‘€‚A€€€€€€€€€€€€€€ ‚ÿThe SoVRMLShape node has two fields: appearance and geometry which are used to create rendered objects in the world. The appearance field specifies an SoVRMLAppearance node that specifies the visual attributes (e.g. material and texture) to be applied to the geometry. The geometry field specifies a geometry node. The specified geometry node is rendered with the specified appearance nodes applied.¼Œn ´&@´0 .€€”‘€‚A€€€‚ÿSee "Concepts - Lighting Model" for details of the VRML lighting model and the interaction between SoVRMLAppeara^´&@´ŠÎ³nce and geometry nodes.j;^´@´/ .€v€”‘€‚A€€€‚ÿIf the geometry field is NULL the object is not drawn./ &@´¿@´& €€‚A€‚ÿFIELDSJ@´ A´2 4€0€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodeappearancezK¿@´ƒA´/ .€–€”‘€‚A€€€‚ÿSpecifies an SoVRMLAppearance node that defines the visual attributes.H A´ËA´2 4€,€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodegeometry<ƒA´B´) "€&€”‘€‚A€‚ÿA geometry node.MËA´TB´2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumrenderCachingX/B´¬B´) "€^€”‘€‚A€‚ÿWhether to cache during rendering traversal.R TB´þB´2 4€@€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumboundingBoxCaching[2¬B´YC´) "€d€”‘€‚A€‚ÿWhether to cache during bounding box traversal.0 þB´‰C´& €€‚A€‚ÿMETHODS=YC´ÆC´, (€"€T”A‚S~‚A€ƒ‚ÿSoVRMLShape()8‰C´þC´) "€€”‘€‚A€‚ÿConstructor.|NÆC´zD´. ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()]þC´F´0 .€»€”‘€‚A€€€‚ÿSet/get the number of render caches each VRMLShape will have (2, by default). The more render caches each VRMLShape is allowed to have, the more memory used. setNumRenderCaches only affects VRMLShape nodes that are created after it is called, not VRMLShape that were created before. Setting zero render caches globally turns off render caching.†WzD´F´/ .€®€”‘€‚A€ã!§˜m‰‚ÿThis value can also be specified via environment variable IV_SEPARATOR_MAX_CACHES.U#F´âF´2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*F´5G´) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ âF´dG´& €€‚A€‚ÿEVENTS3 5G´—G´) "€€”‘€‚A€‚ÿeventInn4dG´H´: D€h€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ÿSoSFNodeset_appearanceSoSFNodeset_geometry4 —G´9H´) "€€”‘€‚A€‚ÿeventOutv<H´¯H´: D€x€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ÿSoSFNodeappearance_changedSoSFNodegeometry_changed89H´çH´& €$€‚A€‚ÿACTION BEHAVIOR—V¯H´~I´A R€¬€”‘€‚Aã©öø(€‰ãɓ℉ããS¯+‰ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoGetBoundingBoxAction, SoCallbackAction=çH´»I´& €.€‚A€‚ÿFILE FORMAT/DEFAULTS8~I´óI´* $€€P„7|‚€‚ÿVRMLShape {P"»I´CJ´. ,€D€P„|‚€ƒ‚ƒ‚‚ÿappearanceNULLgeometryNULL}< óI´J´1À?FŠg<„jåJ´ÔJ´ÚHµSoVRMLSoundU)CJ´ÔJ´, (€R€ˆˆ€€€‚ÿSoVRMLSound(ACTION NOT IMPLEMENTED)*J´þJ´# €€€‚ÿNAMEoIÔJ´mK´& €’€”‘€€‚ÿSoVRMLSound - specifies position and spatial representation of a sound3þJ´ K´# € €€‚ÿINHERITS FROM@mK´-L´M j€€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLSound.  K´[L´# €€€‚ÿSYNOPSISsL-L´ÎL´' €˜€”‘€€‚‚ÿ#include €”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÌN´¢€´n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constviO´¢€´CJ´rtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)O´ú€´/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ¢€´_ƒ´ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHú€´çƒ´@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N_ƒ´5„´/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ烴l…´Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const45„´ …´& €€‚A€‚ÿDESCRIPTIONël…´»‡´0 .€×€”‘€‚A€€€‚ÿThe SoVRMLSound node describes the positioning and spatial presentation of a sound in a VRML scene. The sound may be located at a point and emit sound in a spherical or ellipsoid pattern, in the local coordinate system. The ellipsoid is pointed in a particular direction and may be shaped to provide more or less directional focus from the location of the sound. The sound node may also be used to describe an ambient sound which tapers off at a specified distance from the sound node. ? …´ú‡´& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&»‡´M‰´- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ú‡´,Š´0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.ìM‰´KŒ´3 4€Ù€”‘€‚A€€€€ ‚ÿThe SoVRMLSound node describes the positioning and spatial presentation of a sound in a VRML scene. The sound may be located at a point and emit sound in a spherical or ellipsoid pattern, in the local coordinate system. The ellipsoid is pointed in a particular direction and may be shaped to provide more or less directional focus from the location of the sound. The sound node may also be used to describe an ambient sound which tapers off at a specified distance from the sound node. º~,Š´Ž´< F€ý€”‘€‚A€€€€€€€‚ÿThe SoVRMLSound node also enables ambient background sound to be created by setting of the maxFront and maxBack to the radius of the area for the ambient noise. If ambient noise is required for the whole scene then these values should be set to at least cover the distance from the location to the farthest point in scene from that point (including effects of transforms). ¡YKŒ´¦´H ^€³€”‘€‚A€€€€€€€€€€€‚ÿThe source field specifies the sound source for the sound node. If there is no source specified the SoVRMLSound will emit no audio. The source field shall specify either an SoVRMLAudioClip or an SoVRMLMovieTexture node. Furthermore, the SoVRMLMovieTexture node must refer to a movie format that supports sound (e.g. MPEG1-Systems). JŽ´üÀ´B R€€”‘€‚A€€€€€€€€€‚ÿThe intensity field a¦´üÀ´CJ´djusts the volume of each sound source; The intensity is an SFFloat that ranges from 0.0 to 1.0. An intensity of 0 is silence, and an intensity of 1 is the full volume of the sound in the sample or the full volume of the MIDI clip. ¯y¦´«Ã´6 :€ó€”‘€‚A€€€€€‚ÿThe priority field gives the author some control over which sounds the browser will choose to play when there are more sounds active than sound channels available. The priority varies between 0.0 and 1.0, with 1.0 being the highest priority. For most applications priority 0.0 should be used for a normal sound and 1.0 should be used only for special event or cue sounds (usually of short duration) that the author wants the user to hear even if they are farther away and perhaps of lower intensity than some other ongoing sounds. Browsers should make as many sound channels available to the scene as is efficiently possible. úÐüÀ´¥Ä´* "€¡€”‘€‚A€‚ÿIf the browser does not have enough sound channels to play all of the currently active sounds, it is recommended that the browser sort the active sounds into an ordered list using the following sort keys: ù««Ã´žÅ´N j€W€T”!:‚!€ƒ€€‚ƒ€€€€‚ƒ€€€€‚ÿ1.decreasing priority; 2.for sounds with priority > 0.5, increasing (now-startTime) 3.decreasing intensity at viewer location ((intensity/distance)**2); ÀŠ¥Ä´^Æ´6 :€€”‘€‚!€€€€€‚ÿwhere now represents the current time, and startTime is the startTime field of the audio source node specified in the source field.‡]žÅ´åÇ´* "€»€”‘€‚!€‚ÿIt is important that sort key #2 be used for the high priority (event and cue) sounds so that new cues will be heard even when the channels are "full" of currently active high priority sounds. Sort key #2 should not be used for normal priority sounds so selection among them will be based on sort key #3 - intensity and distance from the viewer. oE^Æ´TÉ´* "€‹€”‘€‚!€‚ÿThe browser should play as many sounds from the beginning of this sorted list as it has available channels. On most systems the number of concurrent sound channels is distinct from the number of concurrent MIDI streams. On these systems the browser may maintain separate ordered lists for sampled sounds and MIDI streams. ÖŽåÇ´*Ì´H ^€€”‘€‚!€€€€€€€€€€€‚ÿA sound's location in the scene graph determines its spatial location (the sound's location is transformed by the current transformation) and whether or not it can be heard. A sound can only be heard while it is part of the traversed scene; sound nodes that are descended from SoVRMLLOD, SoVRMLSwitch, or any grouping or prototype node that disables traversal (i.e. drawing) of its children will not be audible unless they are traversed. If a sound is silenced for a time under an SoVRMLSwitch or SoVRMLLOD node, and later it becomes part of the traversal again, the sound picks up where it would have been had it been playing continuously. æ\TÉ´µŠ ‹€”‘€‚!€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿAround the location of the emitter, minFront and minBack determine the extent of the full intensity region in front of and behind the sound. If the location of the sound is taken as a focus of an ellipsoid, the minBack and minFront values, in combination with the direction vector determine the two focii of an ellipsoid bounding the ambient region of the sound. Similarly, maxFront and maxBack determine the limits of audibility in front of and behind the sound; they describe a second, outer ellipsoid. If minFront equals minBack and maxFront equals maxBack, the sound is omnidirectional, the direction vector is ignored, and the min and max ellipsoids become spheres centered around the sound node. The fields minFront, maxFront, minBack, and maxBack are scaled by the parent transformations - these values m*Ì´µCJ´ust be >= 0.0.¿*Ì´Ûµ0 .€€”‘€‚!€€€‚ÿThe inner ellipsoid defines a space of full intensity for the sound. Within that space the sound will play at the intensity specified in the sound node. The outer ellipsoid determines the maximum extent of the sound. Outside that space, the sound cannot be heard at all. In between the two ellipsoids, the intensity drops off proportionally with inverse square of the distance. With this model, an SoVRMLSound usually will have smooth changes in intensity over the entire extent is which it can be heard. However, if at any point the maximum is the same as or inside the minimum, the sound is cut off immediately at the edge of the minimum ellipsoid.d:µ?µ* "€u€”‘€‚!€‚ÿThe ideal implementation of the sound attenuation between the inner and outer ellipsoids is an inverse power dropoff. A reasonable approximation to this ideal model is a linear dropoff in decibel value. Since an inverse power dropoff never actually reaches zero, it is necessary to select an appropriate cutoff value for the outer ellipsoid so that the outer ellipsoid contains the space in which the sound is truly audible and excludes space where it would be negligible. Keeping the outer ellipsoid as small as possible will help limit resources used by nearly inaudible sounds. Experimentation suggests that a 20dB dropoff from the maximum intensity is a reasonable cutoff value that makes the bounding volume (the outer ellipsoid) contain the truly audible range of the sound. Since actual physical sound dropoff in an anechoic environment follows the inverse square law, using this algorithm it is possible to mimic real-world sound attenuation by making the maximum ellipsoid ten times larger than the minimum ellipsoid. This will yield inverse square dropoff between them.wAÛµ¶ µ6 :€ƒ€”‘€‚!€€€€€‚ÿBrowsers should support spatial localization of sound as well as their underlying sound libraries will allow. The spatialize field is used to indicate to browsers that they should try to locate this sound. If the spatialize field is TRUE, the sound should be treated as a monaural sound coming from a single point. A simple spatialization mechanism just places the sound properly in the pan of the stereo (or multichannel) sound output. Sounds are faded out over distance as described above. Browsers may use more elaborate sound spatialization algorithms if they wish. ÷»?µ­ µ< F€w€”‘€‚!€€€€€€€‚ÿAuthors can create ambient sounds by setting the spatialize field to FALSE. In that case, stereo and multichannel sounds should be played using their normal separate channels. The distance to the sound and the minimum and maximum ellipsoids (discussed above) should affect the intensity in the normal way. Authors can create ambient sound over the entire scene by setting the minFront and minBack to the maximum extents of the scene. / ¶ µÜ µ& €€‚!€‚ÿFIELDSJ­ µ& µ2 4€0€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fdirectiond;Ü µŠ µ) "€v€”‘€‚A€‚ÿThe direction the ellipsoidal sound pattern is pointing.J& µÔ µ2 4€0€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatintensityT+Š µ( µ) "€V€”‘€‚A€‚ÿAdjusts the volume of each sound source.IÔ µq µ2 4€.€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3flocationI ( µº µ) "€@€”‘€‚A€‚ÿPosition of the sound source.žTq µXµJ d€¨€T”A‚S~‚Aã0â1€‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFFloatmaxBackSoSFFloatmaxFrontSoSFFloatminBackSoSFFloatminFrontf º µÊ@µZ ‚€€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿAround the location of the emitter, minFront and minBack determine the extent of the full intensity region in front of and behind the sound. If the location of the sound is taken as a focus of an ellipsoid, the minBack and minFront values, in combination with the direction vector determine the two focii of an ellipsoid XµÊ@µCJ´bounding the ambient region of the sound. Similarly, maxFront and maxBack determine the limits of audibility in front of and behind the sound; they describe a second, outer ellipsoid. IXµAµ2 4€.€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatprioritymDÊ@µ€Aµ) "€ˆ€”‘€‚A€‚ÿControls which sound is heard when more than one sound is active.FAµÆAµ2 4€(€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodesourceL#€AµBµ) "€F€”‘€‚A€‚ÿSound source for the sound node.JÆAµ\Bµ2 4€0€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolspatialize›rBµ÷Bµ) "€ä€”‘€‚A€‚ÿIf TRUE, the sound is treated as a monaural sound from a single point. If FALSE, ambient sounds can be created.0 \Bµ'Cµ& €€‚A€‚ÿMETHODS=÷BµdCµ, (€"€T”A‚S~‚A€ƒ‚ÿSoVRMLSound()8'CµœCµ) "€€”‘€‚A€‚ÿConstructor.U#dCµñCµ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*œCµDDµ) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ñCµsDµ& €€‚A€‚ÿEVENTS3 DDµ¦Dµ) "€€”‘€‚A€‚ÿeventInSàsDµùEµs ´€Á€T”A‚S~‚Aã”5€‰ƒ‚ã0â1‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ãYdb鉃‚ÿSoSFVec3fset_directionSoSFFloatset_intensitySoSFVec3fset_locationSoSFFloatset_maxBackSoSFFloatset_maxFrontSoSFFloatset_minBackSoSFFloatset_minFrontSoSFFloatset_prioritySoSFNodeset_source4 ¦Dµ-Fµ) "€€”‘€‚A€‚ÿeventOutwùEµ¤Gµs ´€ €T”A‚S~‚Aã”5€‰ƒ‚ã0â1‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ãYdb鉃‚ÿSoSFVec3fdirection_changedSoSFFloatintensity_changedSoSFVec3flocation_changedSoSFFloatmaxBack_changedSoSFFloatmaxFront_changedSoSFFloatminBack_changedSoSFFloatminFront_changedSoSFFloatpriority_changedSoSFNodesource_changed=-FµáGµ& €.€‚A€‚ÿFILE FORMAT/DEFAULTS8¤GµHµ* $€€P„7|‚€‚ÿVRMLSound {Á‚áGµÚHµ? L€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿdirection0 0 1intensity1location0 0 0maxBack10maxFront10minBack1minFront1priority0sourceNULLspatializeTRUE}= HµIµ18"…h!kæIµKIµ¯ŒµSoVRMLSphere4ÚHµKIµ% €€ˆˆ€‚ÿSoVRMLSphere*IµuIµ# €€€‚ÿNAMEI#KIµ¾Iµ& €F€”‘€€‚ÿSoVRMLSphere - sphere shape node3uIµñIµ# € €€‚ÿINHERITS FROMÉd¾IµºJµe š€È€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLSphere. ñIµèJµ# €€€‚ÿSYNOPSISvOºJµ^Kµ' €ž€”‘€€‚‚ÿ#include Fields from class SoVRMLSphere:GèJµ¥Kµ2 4€*€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatradiusL#^KµñKµ) "€F€”‘€‚A€‚ÿMethods from class SoVRMLSphere:g3¥KµXLµ4 8€f€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLSphere()static SoTypegetClassTypeId()NñKµ¦Lµ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|XLµ"Nµn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¦LµzNµ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ"Nµë€µ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidgzNµë€µÚHµet(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHzNµsµ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N뀵Áµ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þsµø‚µY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Áµ,ƒµ& €€‚A€‚ÿDESCRIPTIONR)ø‚µ~ƒµ) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?,ƒµ½ƒµ& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&~ƒµ…µ- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯½ƒµï…µ0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.ç®…µÖ†µ9 @€]€”‘€‚A€€€€€€ ‚ÿThe SoVRMLSphere node specifies a sphere centered at (0, 0, 0) in the local coordinate system. The radius field specifies the radius of the sphere and must be >= 0.0.5ï…µ ‡µ1 2€ € ŒŒ‚A€ †"€6‚ÿZ$Ö†µeˆµ6 :€I€”‘€‚A€€€€€‚ÿWhen a texture is applied to a sphere, the texture covers the entire surface, wrapping counterclockwise from the back of the sphere. The texture has a seam at the back where the YZ plane intersects the sphere. SoVRMLTextureTransform affects the texture coordinates of the SoVRMLSphere.Å• ‡µ*‰µ0 .€+€”‘€‚A€€€‚ÿThe SoVRMLSphere geometry is considered to be solid and thus requires outside faces only. When viewed from the inside the results are undefined./ eˆµY‰µ& €€‚A€‚ÿFIELDSG*‰µ ‰µ2 4€*€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatradiusAY‰µá‰µ) "€0€”‘€‚A€‚ÿRadius of the sphere.0  ‰µŠµ& €€‚A€‚ÿMETHODS>ትOŠµ, (€$€T”A‚S~‚A€ƒ‚ÿSoVRMLSphere()8Šµ‡Šµ) "€€”‘€‚A€‚ÿConstructor.U#OŠµÜŠµ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*‡Šµ/‹µ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.8ÜŠµg‹µ& €$€‚A€‚ÿACTION BEHAVIOR—V/‹µþ‹µA R€¬€”‘€‚Aã©öø(€‰ãɓ℉ããS¯+‰ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoGetBoundingBoxAction, SoCallbackAction=g‹µ;Œµ& €.€‚A€‚ÿFILE FORMAT/DEFAULTS;þ‹µvŒµ* $€"€P„7|‚€‚ÿSoVRMLSphere {9 ;Œµ¯Œµ, (€€P„|‚€ƒ‚‚ÿradius1}CvŒµòŒµ1*<„jê‚lçòŒµNµE¶SoVRMLSphereSensor\0¯ŒµNµ, (€`€ˆˆ€€€‚ÿSoVRMLSphereSensor(ACTION NOT IMPLEMENTED)*òŒµxµ# €€€‚ÿNAMEgANµßµ& €‚€”‘€€‚ÿSoVRMLSphereSensor - maps pointing device motion onto a sphere3xµŽµ# € €€‚ÿINHERITS FROM”Gßµ¦ŽµM j€Ž€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLSphereSensor. ŽµÔŽµ# €€€‚ÿSYNOPSIS‚[¦ŽµVµ' €¶€”‘€€‚‚ÿ#include Fields from class SoVRMLSphereSensor:ƒAÔŽµÙµB T€‚€T”A‚S~‚AãU×S选ƒ‚ãU×S鉃‚ã‘Ù»•‰ƒ‚ÿSoSFBoolautoOffsetSoSFBoolenabledSoSFRotationoffsetR)Vµ7Àµ) "€R€”‘€‚A€Ùµ7Àµ¯Œµ‚ÿMethods from class SoVRMLSphereSensor:͈ٵÁµE X€€T”A‚S~‚A€ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãB-9‰ƒ‚ÿSoVRMLSphereSensor()static voidenableEvents(SbBool OnOffFlag)static SbBoolisEventsEnabled()static SoTypegetClassTypeId()N7ÀµRÁµ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ÁµÎµn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)RÁµ&õ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØε‹Åµ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH&õƵ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N‹ÅµaƵ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞƵ˜ÇµY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4aƵÌǵ& €€‚A€‚ÿDESCRIPTIONºŠ˜Çµ†Èµ0 .€€”‘€‚A€€€‚ÿThe SoVRMLSphereSensor maps pointing device (e.g. mouse or wand) motion into spherical rotation about the center of its local space. ?ÌǵÅȵ& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&†Èµʵ- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯Åȵ÷ʵ0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.a(ʵX̵9 @€Q€”‘€‚A€€€€€€ ‚ÿThe SoVRMLSphereSensor maps pointing device (e.g. mouse or wand) motion into spherical rotation about the center of its local space. SoVRMLSphereSensor uses the descendant geometry of its parent node to determine if a hit occurs. The feel of the rotation is as if you were rolling a ball.µ÷ʵ[εN j€k€”‘€‚A€€€€€€€€€€€€€‚ÿThe enabled exposed field enables and disables the SoVRMLSphereSensor - if TRUE, the sensor reacts appropriately to user events, if FALSE, the sensor does not track user input or send output events. If enabled receives a FALSE event and isActive is TRUE, the sensor becomes disabled and deactivated, and outputs an isActive FALSE event. If enabled receives a TRUE event the sensor is enabled and ready for user activation.£sX̵ ¶0 .€ç€”‘€‚A€€€‚ÿThe SoVRMLSphereSensor generates events if the pointing device is activated while over any descendant geometry nodes of its parent group and then moved while activated. Typically, the pointing device is a 2D device such as a mouse. The pointing device is considered to be moving within a plane at a fixed distance from the viewer and perpendicular to the line of sight; [ε ¶¯Œµthis establishes a set of 3D coordinates for the pointer. If a 3D pointer is in use, then the sensor generates events only when the pointer is within the user's field of view. In either case, the pointing device is considered to "pass over" geometry when that geometry is intersected by a line extending from the viewer and passing through the pointer's 3D coordinates. If multiple sensors' geometries intersect this line (hereafter called the bearing), only the nearest will be eligible to generate events. Äj[εζZ ‚€Õ€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿUpon activation of the pointing device (e.g. mouse button down) over the sensor's geometry an isActive TRUE event is sent. The vector defined by the initial point of intersection on the SoVRMLSphereSensor's geometry and the local origin determines the radius of the sphere used to map subsequent pointing device motion while dragging. The virtual sphere defined by this radius and the local origin at the time of activation are used to interpret subsequent pointing device motion and is not affected by any changes to the sensor's coordinate system while the sensor is active. For each position of the bearing, a rotation_changed event is output which corresponds to a relative rotation from the original intersection, plus the offset value. The sign of the rotation is defined by the local coordinate system of the sensor. trackPoint_changed events reflect the unclamped drag position on the surface of this sphere. When the pointing device is deactivated and autoOffset is TRUE, offset is set to the last rotation value and an offset_changed event is generated. See "Concepts - Drag Sensors" for more details.È ¶ê ¶T v€‘€”‘€‚A€€€€€€ €€€€€€€€€‚ÿWhen the sensor generates an isActive TRUE event, it grabs all further motion events from the pointing device until it releases and generates an isActive FALSE event (other pointing device sensors cannot generate events during this time). Motion of the pointing device while isActive is TRUE is referred to as a "drag". If a 2D pointing device is in use, isActive events will typically reflect the state of the primary button associated with the device (i.e. isActive is TRUE when the primary button is pressed and FALSE when released). If a 3D pointing device (e.g. wand) is in use, isActive events will typically reflect whether the pointer is within or in contact with the sensor's geometry. 3ζk ¶N j€g€”‘€‚A€€€€€€€€€€€€€‚ÿWhile the pointing device is activated, trackPoint_changed and rotation_changed events are output. trackPoint_changed events represent the unclamped intersection points on the surface of the invisible sphere. If the pointing device is dragged off the sphere while activated, browsers may interpret this in several ways (e.g. clamp all values to the sphere, continue to rotate as the point is dragged away from the sphere, etc.). Each movement of the pointing device, while isActive is TRUE, generates trackPoint_changed and rotation_changed events.wNê ¶â ¶) "€œ€”‘€‚A€‚ÿSee "Concepts - Pointing Device Sensors and Drag Sensors" for more details./ k ¶ ¶& €€‚A€‚ÿFIELDSJâ ¶[ ¶2 4€0€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolautoOffsetvG ¶Ñ ¶/ .€Ž€”‘€‚A€€€‚ÿSpecifies whether to set offset to the last rotation value (TRUE).G[ ¶¶2 4€*€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolenabledZ1Ñ ¶r¶) "€b€”‘€‚A€‚ÿEnables (TRUE) or disables (FALSE) the sensor.J¶¼¶2 4€0€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationoffsetP'r¶ ¶) "€N€”‘€‚A€‚ÿAmount to add to the rotation value.0 ¼¶<¶& €€‚A€‚ÿMETHODSD ¶€¶, (€0€T”A‚S~‚A€ƒ‚ÿSoVRMLSphereSensor()8<¶¸¶) "€€”‘€‚A€‚ÿConstructor.a/€¶%@¶2 4€^€T”A‚S~‚A€ƒã‘¶p6‰‚ÿstatic voidenableEve¸¶%@¶¯Œµnts(SbBool OnOffFlag)ýǸ¶"A¶6 :€€”‘€‚A€€€€€‚ÿEnables/disables events for all SoVRMLSphereSensor objects. If you have created several objects of this class, you can disable/enable events for all of them with a single call to this method. V$%@¶xA¶2 4€H€T”A‚S~‚A€㑶p6‰ƒ‚ÿstatic SbBoolisEventsEnabled()h?"A¶àA¶) "€~€”‘€‚A€‚ÿQueries if events are enabled for all objects of this class.U#xA¶5B¶2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*àA¶ˆB¶) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ 5B¶·B¶& €€‚A€‚ÿEVENTS3 ˆB¶êB¶) "€€”‘€‚A€‚ÿeventInM·B¶yC¶B T€š€T”A‚S~‚AãU×S选ƒ‚ãU×S鉃‚ã‘Ù»•‰ƒ‚ÿSoSFBoolset_autoOffsetSoSFBoolset_enabledSoSFRotationset_offset4 êB¶­C¶) "€€”‘€‚A€‚ÿeventOut¬yC¶´D¶[ „€Y€T”A‚S~‚AãU×S选ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ãU×S鉃‚ãU×S鉃‚ã‘Ù»•‰ƒ‚ÿSoSFBoolisActiveSoSFRotationrotation_changedSoSFVec3ftrackPoint_changedSoSFBoolautoOffset_changedSoSFBoolenabled_changedSoSFRotationoffset_changed=­C¶ñD¶& €.€‚A€‚ÿFILE FORMAT/DEFAULTS?´D¶0E¶* $€*€P„7|‚€‚ÿVRMLSphereSensor {`0ñD¶E¶0 0€`€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿautoOffsetTRUEenabledTRUEoffset0 1 0 0}@0E¶ÐE¶1œ,!kìnèÐE¶F¶Ü·SoVRMLSpotLight7E¶F¶% €$€ˆˆ€‚ÿSoVRMLSpotLight*ÐE¶1F¶# €€€‚ÿNAME_9F¶F¶& €r€”‘€€‚ÿSoVRMLSpotLight - node representing a spotlight source31F¶ÃF¶# € €€‚ÿINHERITS FROM¯VF¶rG¶Y ‚€¬€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãgB~(€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLLight > SoVRMLSpotLight. ÃF¶ G¶# €€€‚ÿSYNOPSIS|UrG¶H¶' €ª€”‘€€‚‚ÿ#include Fields from class SoVRMLSpotLight:  G¶I¶a €A€T”A‚S~‚Aã”5€‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ€€‚ÿSoSFVec3fattenuationSoSFFloatbeamWidthSoSFFloatcutOffAngleSoSFVec3fdirectionSoSFVec3flocationSoSFFloatradius (Note: Not implemented)S'H¶pI¶, (€N€”‘€‚A€€‚ÿMethods from class SoVRMLSpotLight:j6I¶ÚI¶4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLSpotLight()static SoTypegetClassTypeId()R#pI¶,J¶/ .€F€”‘€‚A€ãgB~(‰‚ÿFields from class SoVRMLLight:ŸUÚI¶ËJ¶J d€ª€T”A‚S~‚Aã0â1€‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ÿSoSFFloatambientIntensitySoSFColorcolorSoSFFloatintensitySoSFBoolonN,J¶K¶/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ËJ¶•L¶n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)K¶íL¶/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ•L¶RO¶ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHíL¶ÚO¶@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NRO¶4€¶/ .€>€”‘€‚A€ÚO¶4€¶E¶ã}9‰‚ÿMethods from class SoBase:7ÞÚO¶k¶Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const44€¶Ÿ¶& €€‚A€‚ÿDESCRIPTION»k¶Zƒ¶< F€ÿ€”‘€‚A€€€€€€€‚ÿThe SoVRMLSpotLight node defines a light source that emits light from a specific point along a specific direction vector and constrained within a solid angle. SoVRMLSpotlights may illuminate geometry nodes that respond to light sources and intersect the solid angle. SoVRMLSpotlights are specified in their local coordinate system and are affected by parent transformations.úÊŸ¶T„¶0 .€•€”‘€‚A€€€‚ÿNote: SoVRMLSpotLights only illuminate objects in their enclosing parent group (similar to Directional lights). This is a slight deviation from the behavior described by the VRML 2.0 specification.?Zƒ¶“„¶& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&T„¶æ…¶- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯“„¶Å†¶0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.¿€æ…¶„ˆ¶? L€€”‘€‚A€€€€€€€€ ‚ÿThe SoVRMLSpotLight node defines a light source that emits light from a specific point along a specific direction vector and constrained within a solid angle. SoVRMLSpotlights may illuminate geometry nodes that respond to light sources and intersect the solid angle. SoVRMLSpotlights are specified in their local coordinate system and are affected by parent transformations.ãņ¶£‰¶< F€Ç€”‘€‚A€€€€€€€‚ÿSee "Concepts - Light Sources" for a detailed description of ambientIntensity, color, intensity, and VRML's lighting equations. See "Concepts - Lighting Model" for a detailed description of the VRML lighting equations.?„ˆ¶0¶N j€€”‘€‚A€€€€€€€€€€€€€‚ÿThe location field specifies a translation offset of the center point of the light source from the light's local coordinate system origin. This point is the apex of the solid angle which bounds light emission from the given light source. The direction field specifies the direction vector of the light's central axis defined in its own local coordinate system. The on field specifies whether the light source emits light--if TRUE, then the light source is emitting light and may illuminate geometry in the scene, if FALSE it does not emit light and does not illuminate any geometry. The radius field specifies the radial extent of the solid angle and the maximum distance from location than may be illuminated by the light source - the light source does not emit light outside this radius. The radius must be >= 0.0.+飉¶[¶B R€Ó€”‘€‚A€€€€€€€€€‚ÿThe cutOffAngle field specifies the outer bound of the solid angle. The light source does not emit light outside of this solid angle. The beamWidth field specifies an inner solid angle in which the light source emits light at uniform full intensity. The light source's emission intensity drops off from the inner solid angle (beamWidth) to the outer solid angle (cutOffAngle). The drop off function from the inner angle to the outer angle is a cosine raised to a power function:‘b0¶øÀ¶/ ,€Å€Ù€‚A€‚ÿ intensity(angle) = intensity * (cosine(angle) ** exponent) where exponent = 0.5*log(0.5)/log(cos(beamWidth))[¶øÀ¶E¶, intensity is the SpotLight's field value, intensity(angle) is the light intensity at an arbitrary angle from the direction vector, and angle ranges from 0.0 at central axis to cutOffAngle.+[¶#Á¶( €€Ù€‚A€‚ÿú øÀ¶öZ ‚€A€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿIf beamWidth > cutOffAngle, then beamWidth is assumed to be equal to cutOffAngle and the light source emits full intensity within the entire solid angle defined by cutOffAngle. Both beamWidth and cutOffAngle must be greater than 0.0 and less than or equal to pi/2. See the figure below for an illustration of the SoVRMLSpotLight's field semantics (note: this example uses the default attenuation). ‘#Á¶&Ŷx ¾€#€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿThe light's illumination falls off with distance as specified by three attenuation coefficients. The attenuation factor is 1/(attenuation[0] + attenuation[1]*r + attenuation[2]*r^2), where r is the distance of the light to the surface being illuminated. The default is no attenuation. An attenuation value of 0 0 0 is identical to 1 0 0. Attenuation values must be >= 0.0.5ö[Ŷ1 2€ € ŒŒ‚A€ †"€7‚ÿ/ &ŶŠÅ¶& €€‚A€‚ÿFIELDSL[ŶÖŶ2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fattenuationEŠÅ¶ƶ) "€8€”‘€‚A€‚ÿAttenuation coefficients.^&ÖŶyƶ8 @€L€T”A‚S~‚Aã0â1€‰ƒ€€‚ÿSoSFFloatbeamWidth (See note.)R&ƶËƶ, (€L€”‘€‚A€€‚ÿInner solid angle of illumination.Þ®yƶ©Ç¶0 .€]€”‘€‚A€€€‚ÿNote: This field is not fully supported. Light intensity drops off immediately from the center of the cone and goes to zero at cutOffAngle. This is an OpenGL limitation.LËƶõǶ2 4€4€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatcutOffAngleN%©Ç¶Cȶ) "€J€”‘€‚A€‚ÿOuter solid angle of illumination.JõǶȶ2 4€0€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fdirectionY0Cȶæȶ) "€`€”‘€‚A€‚ÿDirection vector of the light's central axis.Iȶ/ɶ2 4€.€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3flocation¢yæȶÑɶ) "€ò€”‘€‚A€‚ÿSpecifies a translation offset of the centerpoint of the light source from the light's local coordinate system origin.g//ɶ8ʶ8 @€^€T”A‚S~‚Aã0â1€‰ƒ€€‚ÿSoSFFloatradius (Note: Not implemented)¼‰Ñɶôʶ3 4€€”‘€‚A€€€€‚ÿSpecifies the radial extent of the solid angle and the maximum distances from location that may be illuminated by the light source.0 8ʶ$˶& €€‚A€‚ÿMETHODSAôʶe˶, (€*€T”A‚S~‚A€ƒ‚ÿSoVRMLSpotLight()8$˶˶) "€€”‘€‚A€‚ÿConstructor.U#e˶ò˶2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*˶E̶) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ò˶t̶& €€‚A€‚ÿEVENTS3 E̶§Ì¶) "€€”‘€‚A€‚ÿeventIn|t̶#ζ{ Ä€€T”A‚S~‚Aã0â1€‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ã”5‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ÿSoSFFloatset_ambientIntensitySoSFVec3fset_attenuationSoSFFloatset_beamWidthSoSFColorset_colorSoSFFloatset_cutOffAngleSoSFVec3fset_directionSoSFFloatset_intensitySoSFVec3fset_locationSoSFBoolset_onSoSFFloatset_radius4 §Ì¶Wζ) "€€”‘€‚A€‚ÿeventOut¤)#ζ ·{ Ä€S€T”A‚S~‚Aã0â1€‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ãð@I1‰ƒ‚ã0â1‰ƒ‚ã”5‰ƒ‚ã0â1‰ƒ‚ã”5‰ƒ‚ãU×S鉃‚ã0â1‰ƒ‚ÿSoSFFloatambientIntensity_changedSoSFVec3fattenuation_changedSoSFFloatbeamWidth_changedSoSFColorcolor_changedSoSFFloatcutOffAngle_changedSoSFVec3fdirection_changedSoSFFloatintensity_changedSoSFVec3flocation_changedSoSFBoolon_changedSoSFFloatradius_changedWζ ·E¶8WζD·& €$€‚A€‚ÿACTION BEHAVIORD ·ˆ·/ .€*€”‘€‚Aã©öø(€‰‚ÿSoGLRenderAction=D·Å·& €.€‚A€‚ÿFILE FORMAT/DEFAULTS<ˆ··* $€$€P„7|‚€‚ÿVRMLSpotLight {ۜŷÜ·? L€9€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿambientIntensity0attenuation1 0 0beamWidth1.570796color1 1 1cutOffAngle0.785398direction0 0 -1intensity1location0 0 0onTRUEradius100}= ··1.!ê‚loé·M·Oƒ·SoVRMLSwitch4Ü·M·% €€ˆˆ€‚ÿSoVRMLSwitch*·w·# €€€‚ÿNAMEb<M·Ù·& €x€”‘€€‚ÿSoVRMLSwitch - group node that traverses one chosen child3w· ·# € €€‚ÿINHERITS FROMŽAÙ·š·M j€‚€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLSwitch. ·È·# €€€‚ÿSYNOPSISvOš·>·' €ž€”‘€€‚‚ÿ#include Fields from class SoVRMLSwitch:f,È·¤·: D€X€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ãw?2‰ƒ‚ÿSoMFNodechoiceSoSFInt32whichChoiceL#>·ð·) "€F€”‘€‚A€‚ÿMethods from class SoVRMLSwitch:ª¤· ·o ¬€U€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ÿSoVRMLSwitch()SoVRMLSwitch(int nChoices)virtual SbBoolaffectsState() constvoidaddChoice(SoNode *choice1)voidinsertChoice(SoNode *choice1,int newLevelIndex)SoNode *getChoice(int index) constintfindChoice(const SoNode *choice1) constintgetNumChoices() constvoidremoveChoice(int index)voidremoveChoice(SoNode *choice1)void removeAllChoices()voidreplaceChoice(int index,SoNode *newChoice)¡`ð·ª·A R€À€T”A‚S~‚A€ƒã’n%9‰ã’n%9‰‚ãB-9‰ƒ‚ÿvoidreplaceChoice(SoNode *oldChoice,SoNode *newChoice)static SoTypegetClassTypeId()N ·ø·/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ª·t ·n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ø·Ì ·/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØt ·1 · 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÌ ·¹ ·@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N1 · ·/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¹ ·>·Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4 ·r·& €€‚A€‚ÿDESCRIPTIONR)>·Ä·) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?r··& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&Ä·b@·- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open I·b@·Ü·nventor viewer classes and IVF classes implement some of the application behaviors.߯·AA·0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org. hb@·áA·8 @€Ð€”‘€‚A€€€€€€ ‚ÿThe SoVRMLSwitch grouping node traverses zero or one of the nodes specified in the choice field.Ô¤AA·µB·0 .€I€”‘€‚A€€€‚ÿSee the "Concepts - Grouping and Children Nodes" section which describes "children nodes" for a details on the types of nodes that are legal values for choice.ááA·ÒC·< F€Ã€”‘€‚A€€€€€€€‚ÿThe whichChoice field specifies the index of the child to traverse, where the first child has index 0. If whichChoice is less than zero or greater than the number of nodes in the choice field then nothing is chosen. ±|µB·ƒD·5 :€ø€”‘€‚A€€€€€‚ÿNote that all nodes under an SoVRMLSwitch continue to receive and send events regardless of the value of whichChoice./ ÒC·²D·& €€‚A€‚ÿFIELDSFƒD·øD·2 4€(€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ÿSoMFNodechoice@²D·8E·) "€.€”‘€‚A€‚ÿNodes to chose from.LøD·„E·2 4€4€T”A‚S~‚Aãw?2€‰ƒ‚ÿSoSFInt32whichChoiceY08E·ÝE·) "€`€”‘€‚A€‚ÿSpecifies the index of the child to traverse.0 „E· F·& €€‚A€‚ÿMETHODS>ÝE·KF·, (€$€T”A‚S~‚A€ƒ‚ÿSoVRMLSwitch()8 F·ƒF·) "€€”‘€‚A€‚ÿConstructor.JKF·ÍF·, (€<€T”A‚S~‚A€ƒ‚ÿSoVRMLSwitch(int nChoices)`7ƒF·-G·) "€n€”‘€‚A€‚ÿConstructor that takes approximate number of choicesV$ÍF·ƒG·2 4€H€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidaddChoice(SoNode *choice1)N%-G·ÑG·) "€J€”‘€‚A€‚ÿAdds a choice as last one in groupm:ƒG·>H·3 6€t€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidinsertChoice(SoNode *choice1,int newLevelIndex)i@ÑG·§H·) "€€€”‘€‚A€‚ÿAdds a choice so that it becomes the one with the given indexZ(>H·I·2 4€P€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *getChoice(int index) constN%§H·OI·) "€J€”‘€‚A€‚ÿReturns pointer to nth choice nodeb0I·±I·2 4€`€T”A‚S~‚A€ƒã’n%9‰‚ÿintfindChoice(const SoNode *choice1) constT+OI·J·) "€V€”‘€‚A€‚ÿFinds index of given choice within groupH±I·MJ·, (€8€T”A‚S~‚A€ƒ‚ÿintgetNumChoices() constEJ·’J·) "€8€”‘€‚A€‚ÿReturns number of choicesKMJ·ÝJ·, (€>€T”A‚S~‚A€ƒ‚ÿvoidremoveChoice(int index)V-’J·3K·) "€Z€”‘€‚A€‚ÿRemoves choice with given index from groupY'ÝJ·ŒK·2 4€N€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidremoveChoice(SoNode *choice1)^53K·êK·) "€j€”‘€‚A€‚ÿRemoves first instance of given choice from group.GŒK·1L·, (€6€T”A‚S~‚A€ƒ‚ÿvoid removeAllChoices()K"êK·|L·) "€D€”‘€‚A€‚ÿRemoves all choices from group.h51L·äL·3 6€j€T”A‚S~‚A€ƒã’n%9‰‚ÿvoidreplaceChoice(int index,SoNode *newChoice)]4|L·AM·) "€h€”‘€‚A€‚ÿReplaces choice with given index with new choice.x?äL·¹M·9 B€~€T”A‚S~‚A€ƒã’n%9‰ã’n%9‰‚ÿvoidreplaceChoice(SoNode *oldChoice,SoNode *newChoice)c:AM·N·) "€t€”‘€‚A€‚ÿReplaces first instance of given choice with new choiceZ(¹M·vN·2 4€P€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolaffectsState() const¥|N·O·) "€ø€”‘€‚A€‚ÿOverrides method in SoNode to return FALSE if there is no selected child or the selected child does not affect the state.U#vN·pO·2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*O·ÃO·) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ pO· €·& €€‚A€‚ÿEVENTSÃO· €·Ü·3 ÃO·?€·) "€€”‘€‚A€‚ÿeventInn4 €·­€·: D€h€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ãw?2‰ƒ‚ÿSoMFNodeset_choiceSoSFInt32set_whichChoice4 ?€·á€·) "€€”‘€‚A€‚ÿeventOutv<­€·W·: D€x€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ãw?2‰ƒ‚ÿSoMFNodechoice_changedSoSFInt32whichChoice_changed8့·& €$€‚A€‚ÿACTION BEHAVIORÿ¥W·Ž‚·Z ‚€K€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãàê‰ãɓ℉ã¹_ØS‰ãòÓ}ª‰ãeY ‰‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoHandleEventAction, SoRayPickAction, SoGetMatrixAction, SoSearchAction, SoWriteAction=·Ë‚·& €.€‚A€‚ÿFILE FORMAT/DEFAULTS9Ž‚·ƒ·* $€€P„7|‚€‚ÿVRMLSwitch {KË‚·Oƒ·. ,€:€P„|‚€ƒ‚ƒ‚‚ÿchoice[]whichChoice-1}; ƒ·Šƒ·1 -ìn5€pꊃ·¼ƒ·ƒ@¸SoVRMLText2 Oƒ·¼ƒ·% €€ˆˆ€‚ÿSoVRMLText*Šƒ·æƒ·# €€€‚ÿNAMEE¼ƒ·+„·& €>€”‘€€‚ÿSoVRMLText - text shape node3惷^„·# € €€‚ÿINHERITS FROMÇb+„·%…·e š€Ä€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLText. ^„·S…·# €€€‚ÿSYNOPSISrK%…·Å…·' €–€”‘€€‚‚ÿ#include Fields from class SoVRMLText:žTS…·c†·J d€¨€T”A‚S~‚Aã*{£€‰ƒ‚ãYdb鉃‚ã'0]‰ƒ‚ã0â1‰ƒ‚ÿSoMFStringstringSoSFNodefontStyleSoMFFloatlengthSoSFFloatmaxExtentJ!Å…·­†·) "€B€”‘€‚A€‚ÿMethods from class SoVRMLText:<c†·é†·, (€ €T”A‚S~‚A€ƒ‚ÿSoVRMLText()N­†·7‡·/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|醷³ˆ·n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)7‡· ‰·/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eسˆ·p‹· 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH ‰·ø‹·@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Np‹·FŒ·/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þø‹·}·Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4FŒ·±·& €€‚A€‚ÿDESCRIPTIONÒ}·¿Ž·< F€¥€”‘€‚A€€€€€€€‚ÿThe SoVRMLText node specifies a two-sided, flat text string object positioned in the X-Y plane of the local coordinate system based on values defined in the fontStyle field (see SoVRMLFontStyle node). ?±·þŽ·& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&¿Ž·]À·- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open InventþŽ·]À·Oƒ·or viewer classes and IVF classes implement some of the application behaviors.߯þŽ·<Á·0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.ˆI]À·Ä÷? L€“€”‘€‚A€€€€€€€€ ‚ÿThe SoVRMLText node specifies a two-sided, flat text string object positioned in the X-Y plane of the local coordinate system based on values defined in the fontStyle field (see SoVRMLFontStyle node). Text nodes may contain multiple text strings specified using the UTF-8 encoding as specified by the ISO 10646-1:1993 standard (http://www.iso.ch/cate/d18741.html). Due to the drastic changes in Korean Jamo language, the character set of the UTF-8 will be based on ISO 10646-1:1993 plus pDAM 1 - 5 (including the Korean changes). The text strings are stored in visual order. R<Á·Å·< F€-€”‘€‚A€€€€€€€‚ÿThe text strings are contained in the string field. The fontStyle field contains one SoVRMLFontStyle node that specifies the font size, font family and style, direction of the text strings, and any specific language rendering techniques that must be used for the text. OûÄ÷eÇ·T v€÷€”‘€‚A€€€€€€€€€€€€€€€‚ÿThe maxExtent field limits and scales all of the text strings if the length of the maximum string is longer than the maximum extent, as measured in the local coordinate space. If the text string with the maximum length is shorter than the maxExtent, then there is no scaling. The maximum extent is measured horizontally for horizontal text (SoVRMLFontStyle node: horizontal=TRUE) and vertically for vertical text (SoVRMLFontStyle node: horizontal=FALSE). The maxExtent field must be >= 0.0.(øÅ·É·0 .€ñ€”‘€‚A€€€‚ÿThe length field contains an MFFloat value that specifies the length of each text string in the local coordinate space. If the string is too short, it is stretched (either by scaling the text or by adding space between the characters). If the string is too long, it is compressed (either by scaling the text or by subtracting space between the characters). If a length value is missing--for example, if there are four strings but only three length values--the missing values are considered to be 0. ®yeÇ·;Ê·5 :€ò€”‘€‚A€€€€€‚ÿFor both the maxExtent and length fields, specifying a value of 0 indicates to allow the string to be any length. EÉ·€Ë·* "€7€”‘€‚A€‚ÿTextures are applied to text as follows. The texture origin is at the origin of the first string, as determined by the justification. The texture is scaled equally in both S and T dimensions, with the font height representing 1 unit. S increases to the right, and T increases up. R';Ê·ÒË·+ &€N€T”‘€s‚A€‚ÿISO 10646-1:1993 Character Encodings—n€Ë·iÌ·) "€Ü€”‘€‚A€‚ÿCharacters in ISO 10646 are encoded in multiple octets. Code space is divided into four units, as follows: Ò§ÒË·;Í·+ $€O€Ù€‚A€‚ÿ+-------------+-------------+-----------+------------+| Group-octet | Plane-octet | Row-octet | Cell-octet |+-------------+-------------+-----------+------------+l@iÌ·§Í·, (€€€”‘€‚A€€‚ÿThe ISO 10646-1:1993 allows two basic forms for characters: sE;Í·Ï·. *€‹€T”!:‚!€ƒ‚ƒ‚ÿ1.UCS-2 (Universal Coded Character Set-2). Also known as the Basic Multilingual Plane (BMP). Characters are encoded in the lower two octets (row and cell). Predictions are that this will be the most commonly used form of 10646. 2.UCS-4 (Universal Coded Character Set-4). Characters are encoded in the full four octets. 6 §Í·\¸* "€€”‘€‚!€‚ÿIn addition, three transformation formats (UCS Transformation Format (UTF) are accepted: UTF-7, UTF-8, and UTF-16. Each represents the nature of the transformation - 7-bit, 8-bit, and 16-Ï·\¸Oƒ·bit. The UTF-7 and UTF-16 can be referenced in the Unicode Standard 2.0 book. æÏ·l¸* "€Í€”‘€‚!€‚ÿThe UTF-8 maintains transparency for all of the ASCII code values (0...127). It allows ASCII text (0x0..0x7F) to appear without any changes and encodes all characters from 0x80.. 0x7FFFFFFF into a series of six or fewer bytes. =\¸©¸* "€'€”‘€‚!€‚ÿIf the most significant bit of the first character is 0, then the remaining seven bits are interpreted as an ASCII character. Otherwise, the number of leading 1 bits will indicate the number of bytes following. There is always a 0 bit between the count bits and any data. Žel¸7¸) "€Ê€”‘€‚!€‚ÿFirst byte could be one of the following. The X indicates bits available to encode the character. “`©¸Ê¸3 4€Á€Ù€‚H€ƒƒƒƒƒƒ‚ÿ 0XXXXXXXonly one byte 0..0x7F (ASCII) 110XXXXXtwo bytes Maximum character value is 0x7FF 1110XXXXthree bytes Maximum character value is 0xFFFF 11110XXXfour bytes Maximum character value is 0x1FFFFF 111110XXfive bytes Maximum character value is 0x3FFFFFF 1111110Xsix bytes Maximum character value is 0x7FFFFFFF*7¸ô¸' €€Ù€‚H€‚ÿZ2ʸN¸( €d€”‘€‚H€‚ÿAll following bytes have this format: 10XXXXXX ìô¸c¸) €Ù€”‘€‚H€‚ÿA two byte example. The symbol for a register trade mark is "circled R registered sign" or 174 in ISO/Latin-1 (8859/1). It is encoded as 0x00AE in UCS-2 of the ISO 10646. In UTF-8 it is has the following two byte encoding 0xC2, 0xAE.ЛN¸3¸5 8€7€”‘€‚H€€€€€‚ÿSee "Concepts - Lighting Model" for details on VRML lighting equations and how SoVRMLAppearance, SoVRMLMaterial and textures interact with lighting.m?c¸ ¸. ,€~€”‘€‚H€€€‚ÿThe SoVRMLText node does not perform collision detection. . 3¸Î¸% €€‚H€‚ÿFIELDSH ¸¸2 4€,€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringstring9θO¸) "€ €”‘€‚A€‚ÿText strings.I¸˜¸2 4€.€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodefontStyleРO¸h ¸0 .€A€”‘€‚A€€€‚ÿAn SoVRMLFontStyle node that specifies the font size, font family and style, direction of the text strings, and and specific language rendering techniques.G˜¸¯ ¸2 4€*€T”A‚S~‚Aã'0]€‰ƒ‚ÿSoMFFloatlengthi@h ¸ ¸) "€€€”‘€‚A€‚ÿThe length of each text string in the local coordinate space.^&¯ ¸v ¸8 @€L€T”A‚S~‚Aã0â1€‰ƒ€€‚ÿSoSFFloatmaxExtent (See Note.)q ¸ ¸, (€â€”‘€‚A€€‚ÿLimits and scales all the text strings if the length of the maximum string is longer than the maximum extent.lCv ¸ ¸) "€†€”‘€‚A€‚ÿNote: The behavior described above is not currently implemented.0  ¸¯ ¸& €€‚A€‚ÿMETHODS< ¸ë ¸, (€ €T”A‚S~‚A€ƒ‚ÿSoVRMLText()8¯ ¸# ¸) "€€”‘€‚A€‚ÿConstructor.U#ë ¸x ¸2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*# ¸Ë ¸) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ x ¸ú ¸& €€‚A€‚ÿEVENTS3 Ë ¸- ¸) "€€”‘€‚A€‚ÿeventIn®dú ¸Û ¸J d€È€T”A‚S~‚Aã*{£€‰ƒ‚ãYdb鉃‚ã'0]‰ƒ‚ã0â1‰ƒ‚ÿSoMFStringset_stringSoSFNodeset_fontStyleSoMFFloatset_lengthSoSFFloatset_maxExtent4 - ¸¸) "€€”‘€‚A€‚ÿeventOut¾tÛ ¸Í¸J d€è€T”A‚S~‚Aã*{£€‰ƒ‚ãYdb鉃‚ã'0]‰ƒ‚ã0â1‰ƒ‚ÿSoMFStringstring_changedSoSFNodefontStyle_changedSoMFFloatlength_changedSoSFFloatmaxExtent_changed8¸¸& €$€‚A€‚ÿACTION BEHAVIOR—V͸œ¸A R€¬€”‘€‚Aã©öø(€‰ãɓ℉ããS¯+‰ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoGetBoundingBoxAction, SoCallbackAction=¸Ù¸& €.€‚A€‚ÿFILE FORMAT/DEFAULTS7 œ¸@¸* $€€P„7|‚€Ù¸@¸Oƒ·‚ÿVRMLText {g5Ù¸ƒ@¸2 4€j€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚ÿstring[]fontStyleNULLlength[]maxExtent0.0}> @¸Á@¸1¢o$‰pëÁ@¸ö@¸gO¸SoVRMLTexture5ƒ@¸ö@¸% € €ˆˆ€‚ÿSoVRMLTexture*Á@¸ A¸# €€€‚ÿNAMEgAö@¸‡A¸& €‚€”‘€€‚ÿSoVRMLTexture - abstract base class for all VRML texture nodes3 A¸ºA¸# € €€‚ÿINHERITS FROMB‡A¸IB¸M j€„€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLTexture2 ºA¸{B¸& €€€€ ‚ÿSYNOPSISxQIB¸óB¸' €¢€”‘€€‚‚ÿ#include Fields from class SoVRMLTexture:b({B¸UC¸: D€P€T”A‚S~‚AãU×S选ƒ‚ãU×S鉃‚ÿSoSFBoolrepeatSSoSFBoolrepeatTNóB¸£C¸/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|UC¸E¸n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)£C¸wE¸/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØE¸ÜG¸ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHwE¸dH¸@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NÜG¸²H¸/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞdH¸éI¸Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4²H¸J¸& €€‚A€‚ÿDESCRIPTIONtHéI¸‘J¸, (€€”‘€‚A€€‚ÿSoVRMLTexture is the abstract base class for all VRML texture nodes./ J¸ÀJ¸& €€‚A€‚ÿFIELDSb(‘J¸"K¸: D€P€T”A‚S~‚AãU×S选ƒ‚ãU×S鉃‚ÿSoSFBoolrepeatSSoSFBoolrepeatTï¡ÀJ¸M¸N j€C€”‘€‚A€€€€€€€€€€€€€‚ÿThe repeatS and repeatT fields specify how the texture wraps in the S and T directions. If repeatS is TRUE (the default), the texture map is repeated outside the 0-to-1 texture coordinate range in the S direction so that it fills the shape. If repeatS is FALSE, the texture coordinates are clamped in the S direction to lie within the 0-to-1 range. The repeatT field is analogous to the repeatS field. 0 "K¸AM¸& €€‚A€‚ÿMETHODSU#M¸–M¸2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*AM¸éM¸) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<–M¸%N¸& €,€‚A€‚ÿFILE FORMAT/DEFAULT“jéM¸¸N¸) "€Ô€”‘€‚A€‚ÿThis is an abstract class. See the reference page of a derived class for the format and default values.1 %N¸éN¸& €€‚A€‚ÿSEE ALSO~C¸N¸gO¸; F€†€”‘€‚Aã§ûrZ€‰ãŽä ú‰ã˜ú뉂ÿSoVRMLImageTexture, SoVRMLMovieTexture, SoVRMLPixelTextureHéN¸¯O¸1^5€pTƒqì¯O¸ €¸ŽÈ¸SoVRMLTextureCoordinate?gO¸ €¸% €4€ˆˆ€‚ÿSoVRMLTextureCoordinate¯O¸ €¸gO¸*¯O¸6€¸# €€€‚ÿNAMEZ4 €¸€¸& €h€”‘€€‚ÿSoVRMLTextureCoordinate - texture coordinate node36€¸Ã€¸# € €€‚ÿINHERITS FROM™L€¸\¸M j€˜€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLTextureCoordinate. À¸Š¸# €€€‚ÿSYNOPSISŒe\¸‚¸' €Ê€”‘€€‚‚ÿ#include Fields from class SoVRMLTextureCoordinate:FŠ¸\‚¸2 4€(€T”A‚S~‚Aãóñi`€‰ƒ‚ÿSoMFVec2fpointW.‚¸³‚¸) "€\€”‘€‚A€‚ÿMethods from class SoVRMLTextureCoordinate:r>\‚¸%ƒ¸4 8€|€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLTextureCoordinate()static SoTypegetClassTypeId()N³‚¸sƒ¸/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|%ƒ¸ï„¸n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)sƒ¸G…¸/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ¬‡¸ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHG…¸4ˆ¸@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¬‡¸‚ˆ¸/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ4ˆ¸¹‰¸Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4‚ˆ¸í‰¸& €€‚A€‚ÿDESCRIPTION¦j¹‰¸“‹¸< F€Õ€”‘€‚A€€€€€€€‚ÿThe SoVRMLTextureCoordinate node specifies a set of 2D texture coordinates used by vertex-based geometry nodes (e.g. SoVRMLIndexedFaceSet and SoVRMLElevationGrid) to map from textures to the vertices. Texture map parameter values range from 0.0 to 1.0 in S and T. The horizontal coordinate, S, is specified first, followed by the vertical coordinate, T.?퉸ҋ¸& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&“‹¸%¸- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯ҋ¸Ž¸0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.ì•%¸üÀ¸W |€+€”‘€‚A€€€€€€€€€€€€€€€€ ‚ÿThe SoVRMLTextureCoordinate node specifies a set of 2D texture coordinates used by vertex-based geometry nodes (e.g. SoVRMLIndexedFaceSet and SoVRMLElevationGrid) to map from textures to the vertices. Textures are two dimensional color functions that given an S and T pair return a color value. Texture maps parameter values range from 0.0 to 1.0 in S and T. However, SoVRMLTextureCoordinate values, specified byŽ¸üÀ¸gO¸ the point field, can range from -infinity to +infinity. Texture coordinates identify a location (and thus a color value) in the texture map. The horizontal coordinate, S, is specified first, followed by the vertical coordinate, T.Ø®Ž¸ÔÁ¸* "€]€”‘€‚A€‚ÿIf the texture map is repeated in a given direction (S or T), then a texture coordinate C is mapped into a texture map that has N pixels in the given direction as follows:P(üÀ¸$¸( €P€Ù€‚A€‚ÿ Location = (C - floor(C)) * N+ÔÁ¸O¸( €€Ù€‚A€‚ÿK"$¸šÂ¸) "€D€”‘€‚A€‚ÿIf the texture is not repeated:g?O¸ø( €~€Ù€‚A€‚ÿ Location = (C > 1.0 ? 1.0 : (C < 0.0 ? 0.0 : C)) * N+šÂ¸,ø( €€Ù€‚A€‚ÿµzøáø; F€ô€”‘€‚A€€€€€€€‚ÿSee texture nodes for details on repeating textures (SoVRMLImageTexture, SoVRMLMovieTexture, SoVRMLPixelTexture)./ ,øĸ& €€‚A€‚ÿFIELDSFáøVĸ2 4€(€T”A‚S~‚Aãóñi`€‰ƒ‚ÿSoMFVec2fpointFĸœÄ¸) "€:€”‘€‚A€‚ÿTexture coordinate points.0 VĸÌĸ& €€‚A€‚ÿMETHODSIœÄ¸Ÿ, (€:€T”A‚S~‚A€ƒ‚ÿSoVRMLTextureCoordinate()8ÌĸMŸ) "€€”‘€‚A€‚ÿConstructor.U#Ÿ¢Å¸2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*MŸõŸ) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ¢Å¸$Ƹ& €€‚A€‚ÿEVENTS3 õŸWƸ) "€€”‘€‚A€‚ÿeventInJ$Ƹ¡Æ¸2 4€0€T”A‚S~‚Aãóñi`€‰ƒ‚ÿSoMFVec2fset_point4 WƸÕƸ) "€€”‘€‚A€‚ÿeventOutN¡Æ¸#Ǹ2 4€8€T”A‚S~‚Aãóñi`€‰ƒ‚ÿSoMFVec2fpoint_changed8ÕƸ[Ǹ& €$€‚A€‚ÿACTION BEHAVIORw<#ǸÒǸ; F€x€”‘€‚Aã©öø(€‰ãɓ℉ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoCallbackAction=[Ǹȸ& €.€‚A€‚ÿFILE FORMAT/DEFAULTSFÒǸUȸ* $€8€P„7|‚€‚ÿSoVRMLTextureCoordinate {9 ȸŽÈ¸, (€€P„|‚€ƒ‚‚ÿpoint[]}GUȸÕȸ1ö%$‰px…ríÕȸɸ|L¹SoVRMLTextureTransform>ŽÈ¸ɸ% €2€ˆˆ€‚ÿSoVRMLTextureTransform*Õȸ=ɸ# €€€‚ÿNAME]7ɸšÉ¸& €n€”‘€€‚ÿSoVRMLTextureTransform - defines a 2D transformation3=ɸÍɸ# € €€‚ÿINHERITS FROM˜KšÉ¸eʸM j€–€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLTextureTransform. Íɸ“ʸ# €€€‚ÿSYNOPSISŠceʸ˸' €Æ€”‘€€‚‚ÿ#include Fields from class SoVRMLTextureTransform:žT“ʸ»Ë¸J d€¨€T”A‚S~‚Aãi5€‰ƒ‚ã0â1‰ƒ‚ãi5‰ƒ‚ãi5‰ƒ‚ÿSoSFVec2fcenterSoSFFloatrotationSoSFVec2fscaleSoSFVec2ftranslationV-˸̸) "€Z€”‘€‚A€‚ÿMethods from class SoVRMLTextureTransform:q=»Ë¸‚̸4 8€z€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLTextureTransform()static SoTypegetClassTypeId()N̸Ð̸/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|‚̸Lθn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)Ð̸¤Î¸/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØLθ¹ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoo¤Î¸¹ŽÈ¸lset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¤Î¸¹@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¹ë¹/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ¹"¹Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ë¹V¹& €€‚A€‚ÿDESCRIPTIONl"¹Â¹T v€1€”‘€‚A€€€€€€€€€€€€€€€‚ÿThe SoVRMLTextureTransform node defines a 2D transformation that is applied to texture coordinates (see SoVRMLTextureCoordinate). This node affects the way textures are applied to the surface of geometry. The transformation consists of (in order) a non-uniform scale about an arbitrary center point, a rotation about the center point, and a translation. This allows for changes to the size, orientation, and position of textures on shapes. Note that these changes appear reversed when viewed in the surface of geometry. For example, a scale value of 2 2 will scale the texture coordinates and have the net effect of shrinking the texture size by a factor of 2 (texture coordinates are twice as large and thus cause the texture to repeat). A translation of 0.5 0.0 translates the texture coordinates +.5 units along the S-axis and has the net effect of translating the texture -0.5 along the S-axis on the geometry's surface. A rotation of pi/2 of the texture coordinates results in a - pi/2 rotation of the texture on the geometry.ýÓV¹¿¹* "€§€”‘€‚A€‚ÿNote: The VRML 2.0 specification indicates that transformations should be performed in the order translate, rotate, and scale. Open Inventor performs the transformations in the order scale, rotate, translate.?¹þ¹& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&¿¹Q ¹- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯þ¹0 ¹0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.pQ ¹ ¹W |€3€”‘€‚A€€€€€€€€€€€€€€€€ ‚ÿThe SoVRMLTextureTransform node defines a 2D transformation that is applied to texture coordinates (see SoVRMLTextureCoordinate). This node affects the way textures are applied to the surface of geometry. The transformation consists of (in order) a translation, a rotation about an arbitrary center point, and a non-uniform scale about the center point. This allows for changes to the size, orientation, and position of textures on shapes. Note that these changes appear reversed when viewed in the surface of geometry. For example, a scale value of 2 2 will scale the texture coordinates and have the net effect of shrinking the texture size by a factor of 2 (texture coordinates are twice as large and thus cause the texture to repeat). A translation of 0.5 0.0 translates the texture coordinates +.5 units along the S-axis and has the net effect of translating the texture -0.5 along the S-axis on the geometry's surface. A rotation of pi/2 of the texture coordinates results in a - pi/2 rotation of the texture on the geometry.Oï0 ¹ûA¹` Ž€ß€”‘€‚A€€€€€€€€€€€€€€€€€€€‚ÿ ¹ûA¹ŽÈ¸The center field specifies a translation offset in texture coordinate space about which the rotation and scale fields are applied. The scale field specifies a scaling factor in S and T of the texture coordinates about the center point - scale values must be >= 0.0. The rotation field specifies a rotation in radians of the texture coordinates about the center point after the scale has taken place. The translation field specifies a translation of the texture coordinates. u3 ¹pC¹B R€g€”‘€‚A€€€€€€€€€‚ÿGiven a 2-dimensional texture coordinate T and an SoVRMLTextureTransform node, T is transformed into point T' by a series of intermediate transformations. In matrix-transformation notation, where C (center), T (translation), R (rotation), and S (scale) are the equivalent transformation matrices,‚GûA¹òC¹; F€Ž€Ù€‚A€€€€€€€‚ÿ T' = TT x C x R x S x -TC x T (where T is a column vector)sDpC¹eD¹/ .€ˆ€”‘€‚A€€€‚ÿNote that SoVRMLTextureTransforms cannot combine or accumulate./ òC¹”D¹& €€‚A€‚ÿFIELDSGeD¹ÛD¹2 4€*€T”A‚S~‚Aãi5€‰ƒ‚ÿSoSFVec2fcentert”D¹xE¹) "€è€”‘€‚A€‚ÿSpecifies a translation offset in texture coordinate space about which the rotation and scale fields are applied.IÛD¹ÁE¹2 4€.€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatrotation˜oxE¹YF¹) "€Þ€”‘€‚A€‚ÿSpecifies a rotation in radians of the texture coordinates about the center after the scale has taken place.FÁE¹ŸF¹2 4€(€T”A‚S~‚Aãi5€‰ƒ‚ÿSoSFVec2fscaleGYF¹æF¹) "€<€”‘€‚A€‚ÿScaling factors in S and T.LŸF¹2G¹2 4€4€T”A‚S~‚Aãi5€‰ƒ‚ÿSoSFVec2ftranslationCæF¹uG¹) "€4€”‘€‚A€‚ÿTranslation in S and T.0 2G¹¥G¹& €€‚A€‚ÿMETHODSHuG¹íG¹, (€8€T”A‚S~‚A€ƒ‚ÿSoVRMLTextureTransform()8¥G¹%H¹) "€€”‘€‚A€‚ÿConstructor.U#íG¹zH¹2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*%H¹ÍH¹) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ zH¹üH¹& €€‚A€‚ÿEVENTS3 ÍH¹/I¹) "€€”‘€‚A€‚ÿeventIn®düH¹ÝI¹J d€È€T”A‚S~‚Aãi5€‰ƒ‚ã0â1‰ƒ‚ãi5‰ƒ‚ãi5‰ƒ‚ÿSoSFVec2fset_centerSoSFFloatset_rotationSoSFVec2fset_scaleSoSFVec2fset_translation4 /I¹J¹) "€€”‘€‚A€‚ÿeventOut¾tÝI¹ÏJ¹J d€è€T”A‚S~‚Aãi5€‰ƒ‚ã0â1‰ƒ‚ãi5‰ƒ‚ãi5‰ƒ‚ÿSoSFVec2fcenter_changedSoSFFloatrotation_changedSoSFVec2fscale_changedSoSFVec2ftranslation_changed8J¹K¹& €$€‚A€‚ÿACTION BEHAVIORNÏJ¹–K¹A R€œ€”‘€‚Aã©öø(€‰ã#º…ö‰ã³DfL‰ã¹_ØS‰‚ÿSoGLRenderAction, SoPickAction, SoCallbackAction, SoGetMatrixAction=K¹ÓK¹& €.€‚A€‚ÿFILE FORMAT/DEFAULTSC–K¹L¹* $€2€P„7|‚€‚ÿVRMLTextureTransform {f4ÓK¹|L¹2 4€h€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚ÿcenter0 0rotation0scale1 1translation0 0}AL¹½L¹1]2TƒqÝtî½L¹õL¹Ò ºSoVRMLTimeSensor8|L¹õL¹% €&€ˆˆ€‚ÿSoVRMLTimeSensor*½L¹M¹# €€€‚ÿNAME[5õL¹zM¹& €j€”‘€€‚ÿSoVRMLTimeSensor - generates events as time passes3M¹­M¹# € €€‚ÿINHERITS FROM·^zM¹dN¹Y ‚€¼€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãéf€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLInterpolator > SoVRMLTimeSensor. ­M¹’N¹# €€€‚ÿSYNOPSIS~WdN¹O¹' €®€”‘€€‚‚ÿ#include Fields from class SoVRMLTimeSensor:¹g’N¹ÉO¹R t€Î€T”A‚S~‚Aãøi选ƒ‚ãU×S鉃‚ãU×S鉃‚ãøi鉃‚ãøi鉃‚ÿSoSFTimecycleIntervalSoSFBoolenabledSoSFBoolloopSoSFTimestartTimeSoSFTimestopTimeP'O¹%€¹) "€N€”‘€‚A€‚ÿMethods from ÉO¹%€¹|L¹class SoVRMLTimeSensor:ˆÉO¹ð€¹E X€ €T”A‚S~‚A€ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãB-9‰ƒ‚ÿSoVRMLTimeSensor()static voidenableEvents(SbBool OnOffFlag)static SbBoolisEventsEnabled()static SoTypegetClassTypeId()N%€¹>¹/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ð€¹º‚¹n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)>¹ƒ¹/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eغ‚¹w…¹ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHƒ¹ÿ…¹@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nw…¹M†¹/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þÿ…¹„‡¹Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4M†¹¸‡¹& €€‚A€‚ÿDESCRIPTIONꄇ¹Õˆ¹3 4€Õ€”‘€‚A€€€€‚ÿSoVRMLTimeSensors generate events as time passes. SoVRMLTimeSensors can be used to drive continuous simulations and animations, periodic activities (e.g., one per minute), and/or single occurrence events such as an alarm clock. ?¸‡¹‰¹& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&Õˆ¹gŠ¹- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯‰¹F‹¹0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.Š*gŠ¹ÐŽ¹` Ž€U€”‘€‚A€€€€€€€€€€€€€€€€€€€ ‚ÿSoVRMLTimeSensors generate events as time passes. SoVRMLTimeSensors can be used to drive continuous simulations and animations, periodic activities (e.g., one per minute), and/or single occurrence events such as an alarm clock. SoVRMLTimeSensor discrete eventOuts include: isActive, which becomes TRUE when the SoVRMLTimeSensor begins running, and FALSE when it stops running, and cycleTime, a time event at startTime and at the beginning of each new cycle (useful for synchronization with other time-based objects). The remaining outputs generate continuous events and consist of fraction_changed, which is an SFFloat in the closed interval [0,1] representing the completed fraction of the current cycle, and time, an SFTime event specifying the absolute time for a given simulation tick.‘+F‹¹mÁ¹f š€W€”‘€‚A€€€€€€€€€€€€€€€€€€€€€‚ÿIf the enabled exposedField is TRUE, the SoVRMLTimeSensor is enabled and may be running. If a set_enabled FALSE event is received while the SoVRMLTimeSensor is running, then the sensor should eÐŽ¹mÁ¹|L¹valuate and send all relevant outputs, send a FALSE value for isActive, and disable itself. However, events on the exposedFields of the SoVRMLTimeSensor (such as set_startTime) are processed and their corresponding eventOuts (startTime_changed) are sent regardless of the state of enabled. The remaining discussion assumes enabled is TRUE.³SÐŽ¹ Ĺ` Ž€§€”‘€‚A€€€€€€€€€€€€€€€€€€€‚ÿThe loop, startTime, and stopTime exposedFields, and the isActive eventOut and their affects on the SoVRMLTimeSensor node, are discussed in detail in the "Concepts - Time Dependent Nodes" section. The "cycle" of an SoVRMLTimeSensor lasts for cycleInterval seconds. The value of cycleInterval must be greater than 0 (a value less than or equal to 0 produces undefined results). Because the SoVRMLTimeSensor is more complex than the abstract SoVRMLTimeDep node and generates continuous eventOuts, some of the information in the "Time Dependent Nodes" section is repeated here.ÿ±mÁ¹ƹN j€c€”‘€‚A€€€€€€€€€€€€€‚ÿA cycleTime eventOut can be used for synchronization purposes, e.g., sound with animation. The value of a cycleTime eventOut will be equal to the time at the beginning of the current cycle. A cycleTime eventOut is generated at the beginning of every cycle, including the cycle starting at startTime. The first cycleTime eventOut for an SoVRMLTimeSensor node can be used as an alarm (single pulse at a specified time). QÙ Ĺpɹx ¾€³€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿWhen an SoVRMLTimeSensor becomes active it will generate an isActive = TRUE event and begin generating time, fraction_changed, and cycleTime events, which may be routed to other nodes to drive animation or simulated behaviors - (see below for behavior at read time). The time event outputs the absolute time for a given tick of the SoVRMLTimeSensor (time fields and events represent the number of seconds since midnight GMT January 1, 1970). fraction_changed events output a floating point value in the closed interval [0, 1], where 0 corresponds to startTime and 1 corresponds to startTime + N*cycleInterval, where N = 1, 2, ... . That is, the time and fraction_changed eventOuts can be computed as:ç¹ƹWʹ. *€s€Ù€‚A€‚ÿ time = now f = fmod(now - startTime, cycleInterval) if (f == 0.0 && now > startTime) fraction_changed = 1.0 else fraction_changed = f / cycleInterval+pɹ‚ʹ( €€Ù€‚A€‚ÿ Wʹ͹x ¾€€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿA SoVRMLTimeSensor can be set up to be active at read time by specifying loop TRUE (not the default) and stopTime <= startTime (satisfied by the default values). The time events output absolute times for each tick of the SoVRMLTimeSensor -- times must start at startTime and end with either startTime+cycleInterval, stopTime, or loop forever depending on the values of the other fields. An active SoVRMLTimeSensor must stop at the first simulation tick when time now >= stopTime > startTime. ä`‚ʹ º„ Ö€Á€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿNo guarantees are made with respect to how often an SoVRMLTimeSensor will generate time events, but an SoVRMLTimeSensor should generate events at least at every simulation tick. SoVRMLTimeSensors are guaranteed to generate final time and fraction_changed events. If loop is FALSE, the final time event will be generated with a value of (startTime+cycleInterval) or stopTime (if stopTime > startTime), whichever value is less. If loop is TRUE at the completion of every cycle, then the final event will be generated as evaluated at stopTime (if stopTime > startTime) or never.͹ º|L¹Y·͹eº¢ o€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿAn active SoVRMLTimeSensor ignores set_cycleInterval, and set_startTime events. An active SoVRMLTimeSensor also ignores set_stopTime events for set_stopTime < startTime. For example, if a set_startTime event is received while an SoVRMLTimeSensor is active, then that set_startTime event is ignored (the startTime field is not changed, and a startTime_changed eventOut is not generated). If an active SoVRMLTimeSensor receives a set_stopTime event that is less than now and greater than or equal to startTime, it behaves as if the stopTime requested is now and sends the final events based on now (note that stopTime is set as specified in the eventIn)./ º”º& €€‚A€‚ÿFIELDSMeºáº2 4€6€T”A‚S~‚Aãøi选ƒ‚ÿSoSFTimecycleIntervalK"”º,º) "€D€”‘€‚A€‚ÿTime for each cycle in seconds.Gáºsº2 4€*€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolenabledZ1,ºÍº) "€b€”‘€‚A€‚ÿEnables (TRUE) or disables (FALSE) the sensor.Dsºº2 4€$€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolloopŽeͺŸº) "€Ê€”‘€‚A€‚ÿSpecifies whether a cycle should be repeated (TRUE) or terminated (FALSE) at the end of the cycle.Iºèº2 4€.€T”A‚S~‚Aãøi选ƒ‚ÿSoSFTimestartTimeGŸº/º) "€<€”‘€‚A€‚ÿStarting time of the cycle.Hèºwº2 4€,€T”A‚S~‚Aãøi选ƒ‚ÿSoSFTimestopTimeC/ººº) "€4€”‘€‚A€‚ÿStop time of the cycle.0 wºêº& €€‚A€‚ÿMETHODSBºº,º, (€,€T”A‚S~‚A€ƒ‚ÿSoVRMLTimeSensor()8êºdº) "€€”‘€‚A€‚ÿConstructor.a/,ºÅº2 4€^€T”A‚S~‚A€ƒã‘¶p6‰‚ÿstatic voidenableEvents(SbBool OnOffFlag)ûÅdºÀº6 :€‹€”‘€‚A€€€€€‚ÿEnables/disables events for all SoVRMLTimeSensor objects. If you have created several objects of this class, you can disable/enable events for all of them with a single call to this method. V$ź º2 4€H€T”A‚S~‚A€㑶p6‰ƒ‚ÿstatic SbBoolisEventsEnabled()h?Àº~ º) "€~€”‘€‚A€‚ÿQueries if events are enabled for all objects of this class.U# ºÓ º2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*~ º& º) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ Ó ºU º& €€‚A€‚ÿEVENTS3 & ºˆ º) "€€”‘€‚A€‚ÿeventInÍ{U ºU ºR t€ö€T”A‚S~‚Aãøi选ƒ‚ãU×S鉃‚ãU×S鉃‚ãøi鉃‚ãøi鉃‚ÿSoSFTimeset_cycleIntervalSoSFBoolset_enabledSoSFBoolset_loopSoSFTimeset_startTimeSoSFTimeset_stopTime4 ˆ º‰ º) "€€”‘€‚A€‚ÿeventOutXåU ºá ºs ´€Ë€T”A‚S~‚Aãøi选ƒ‚ã0â1‰ƒ‚ãU×S鉃‚ãøi鉃‚ãøi鉃‚ãU×S鉃‚ãU×S鉃‚ãøi鉃‚ãøi鉃‚ÿSoSFTimecycleTimeSoSFFloatfraction_changedSoSFBoolisActiveSoSFTimetimeSoSFTimecycleInterval_changedSoSFBoolenabled_changedSoSFBoolloop_changedSoSFTimestartTime_changedSoSFTimestopTime_changed=‰ º º& €.€‚A€‚ÿFILE FORMAT/DEFAULTS=á º[ º* $€&€P„7|‚€‚ÿVRMLTimeSensor {wC ºÒ º4 8€†€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿcycleInterval1enabledTRUEloopFALSEstartTime0stopTime0}B[ ºº18-x…rê„uïºMºoɺSoVRMLTouchSensor9Ò ºMº% €(€ˆˆ€‚ÿSoVRMLTouchSensor*ºwº# €€€‚ÿNAME~XMºõº& €°€”‘€€‚ÿSoVRMLTouchSensor - detects when the user has pointed at a specific piece of geometry3wº(º# € €€‚ÿINHERITS FROM“Fõº»ºM j€Œ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLTouchSensor. (º @º# €€€‚ÿSYNOPSIS»º @ºÒ º€Y»ºŒ@º' €²€”‘€€‚‚ÿ#include Fields from class SoVRMLTouchSensor:G @ºÓ@º2 4€*€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolenabledQ(Œ@º$Aº) "€P€”‘€‚A€‚ÿMethods from class SoVRMLTouchSensor:̇Ó@ºðAºE X€€T”A‚S~‚A€ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãB-9‰ƒ‚ÿSoVRMLTouchSensor()static voidenableEvents(SbBool OnOffFlag)static SbBoolisEventsEnabled()static SoTypegetClassTypeId()N$Aº>Bº/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ðAººCºn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)>BºDº/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eغCºwFº 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHDºÿFº@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NwFºMGº/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÿFº„HºY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4MGº¸Hº& €€‚A€‚ÿDESCRIPTION´r„HºlJºB R€å€”‘€‚A€€€€€€€€€‚ÿA SoVRMLTouchSensor tracks the location and state of the pointing device and detects when the user points at geometry contained by the SoVRMLTouchSensor's parent group. This sensor can be enabled or disabled by sending it an enabled event with a value of TRUE or FALSE. If the SoVRMLTouchSensor is disabled, it does not track user input or send output events.?¸Hº«Jº& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&lJºþKº- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯«JºÝLº0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.¸sþKº•NºE X€ç€”‘€‚A€€€€€€€€€€ ‚ÿA SoVRMLTouchSensor tracks the location and state of the pointing device and detects when the user points at geometry contained by the SoVRMLTouchSensor's parent group. This sensor can be enabled or disabled by sending it an enabled event with a value of TRUE or FALSE. If the SoVRMLTouchSensor is disabled, it does not track user input or send output events.²vÝLºS‚º< F€í€”‘€‚A€€€€€€€‚ÿThe SoVRMLTouchSensor generates events as the pointing device "passes over" any geometry nodes that are descendants of the SoVRMLTouchSensor's parent group. Typically, the pointing device is a 2D device such as a mouse. In this case, the pointing device is considered to be moving within a plane a •NºS‚ºÒ ºfixed distance from the viewer and perpendicular to the line of sight; this establishes a set of 3D coordinates for the pointer. If a 3D pointer is in use, then the SoVRMLTouchSensor generates events only when the pointer is within the user's field of view. In either case, the pointing device is considered to "pass over" geometry when that geometry is intersected by a line extending from the viewer and passing through the pointer's 3D coordinates. If multiple surfaces intersect this line (hereafter called the bearing), only the nearest will be eligible to generate events. ‹1•NºÞ…ºZ ‚€c€”‘€‚A€€€€€€ €€ €€€€€€€€€‚ÿThe isOver eventOut reflects the state of the pointing device with regard to whether it is over the SoVRMLTouchSensor's geometry or not. When the pointing device changes state from a position such that its bearing does not intersect any of the SoVRMLTouchSensor's geometry to one in which it does intersect geometry, an isOver TRUE event is generated. When the pointing device moves from a position such that its bearing intersects geometry to one in which it no longer intersects the geometry, or some other geometry is obstructing the SoVRMLTouchSensor's geometry, an isOver FALSE event is generated. These events are generated only when the pointing device has moved and changed `over state; events are not generated if the geometry itself is animating and moving underneath the pointing device.¯S‚ºíˆº` Ž€_€”‘€‚A€€€€€€€€€€€€€€€€€€€‚ÿAs the user moves the bearing over the SoVRMLTouchSensor's geometry, the point of intersection (if any) between the bearing and the geometry is determined. Each movement of the pointing device, while isOver is TRUE, generates hitPoint_changed, hitNormal_changed, and hitTexCoord_changed events. hitPoint_changed events contain the 3D point on the surface of the underlying geometry, given in the SoVRMLTouchSensor's coordinate system. hitNormal_changed events contain the surface normal vector at the hitPoint. hitTexCoord_changed events contain the texture coordinates of that surface at the hitPoint, which can be used to support the 3D equivalent of an image map.ô‚Þ…ºáŒºr ²€€”‘€‚A€€€€€€€€€€€€€€ €€€€€€€€€€€‚ÿIf isOver is TRUE, the user may activate the pointing device to cause the SoVRMLTouchSensor to generate isActive events (e.g. press the primary mouse button). When the SoVRMLTouchSensor generates an isActive TRUE event, it grabs all further motion events from the pointing device until it releases and generates an isActive FALSE event (other pointing device sensors will not generate events during this time). Motion of the pointing device while isActive is TRUE is referred to as a "drag". If a 2D pointing device is in use, isActive events will typically reflect the state of the primary button associated with the device (i.e. isActive is TRUE when the primary button is pressed, and FALSE when not released). If a 3D pointing device is in use, isActive events will typically reflect whether the pointer is within or in contact with the SoVRMLTouchSensor's geometry. “d툺tº/ .€È€”‘€‚A€€€‚ÿThe eventOut field touchTime is generated when all three of the following conditions are true: xጺ쎺f š€%€T”!:‚!€ƒ€ €€ €€ €€€‚ƒ€ €€ €€€‚ƒ€ €€€‚ÿ•the pointing device was over the geometry when it was initially activated (isActive is TRUE), •the pointing device is currently over the geometry (isOver is TRUE), •and, the pointing device is deactivated (isActive FALSE event is also generated). f=tºRº) "€z€”‘€‚!€‚ÿSee "Concepts - Pointing Device Sensors" for more details./ 쎺º& €€‚!€‚ÿFIELDSGRºÈº2 4€*€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolenabledZ1º.Àº) "€b€”‘€‚A€‚ÿEnables (TRUE)Ⱥ.ÀºÒ º or disables (FALSE) the sensor.0 Ⱥ^Àº& €€‚A€‚ÿMETHODSC.Àº¡Àº, (€.€T”A‚S~‚A€ƒ‚ÿSoVRMLTouchSensor()8^ÀºÙÀº) "€€”‘€‚A€‚ÿConstructor.a/¡Àº:Áº2 4€^€T”A‚S~‚A€ƒã‘¶p6‰‚ÿstatic voidenableEvents(SbBool OnOffFlag)üÆÙÀº6º6 :€€”‘€‚A€€€€€‚ÿEnables/disables events for all SoVRMLTouchSensor objects. If you have created several objects of this class, you can disable/enable events for all of them with a single call to this method. V$:ÁºŒÂº2 4€H€T”A‚S~‚A€㑶p6‰ƒ‚ÿstatic SbBoolisEventsEnabled()h?6ºôº) "€~€”‘€‚A€‚ÿQueries if events are enabled for all objects of this class.U#ŒÂºIú2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ôºœÃº) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ IúËú& €€‚A€‚ÿEVENTS3 œÃºþú) "€€”‘€‚A€‚ÿeventInKËúIĺ2 4€2€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolset_enabled4 þú}ĺ) "€€”‘€‚A€‚ÿeventOutÂxIĺ?źJ d€ð€T”A‚S~‚AãU×S选ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ãi5‰ƒ‚ÿSoSFBoolenabled_changedSoSFVec3fhitNormal_changedSoSFVec3fhitPoint_changedSoSFVec2fhitTexCoord_changed¶€}ĺõź6 :€€”‘€‚A€€€€€‚ÿThese XXX_changed events are not generated unless isActive is true, in other words, only while a mouse button is pressed.H?ź=ƺ2 4€,€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisActive…\õźÂƺ) "€¸€”‘€‚A€‚ÿThis event (with a value of FALSE) is always generated when the mouse button is released.F=ƺǺ2 4€(€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolisOverÔ¤ÂƺÜǺ0 .€I€”‘€‚A€€€‚ÿThis event is not generated unless a mouse button is pressed while the pointing device is over the geometry. In that case, an isActive event is also generated.IǺ%Ⱥ2 4€.€T”A‚S~‚Aãøi选ƒ‚ÿSoSFTimetouchTime’iÜǺ·Èº) "€Ò€”‘€‚A€‚ÿThis event is only generated if the cursor is still over the object when the mouse button is released.=%ȺôȺ& €.€‚A€‚ÿFILE FORMAT/DEFAULTS>·Èº2ɺ* $€(€P„7|‚€‚ÿVRMLTouchSensor {=ôȺoɺ, (€"€P„|‚€ƒ‚‚ÿenabledTRUE}@2ɺ¯Éº17Ýt¯ wð¯Éºæɺ‡»SoVRMLTransform7oɺæɺ% €$€ˆˆ€‚ÿSoVRMLTransform*¯Éºʺ# €€€‚ÿNAMEzTæɺŠÊº& €¨€”‘€€‚ÿSoVRMLTransform - grouping node that defines a coordinate system for its children3ʺ½Êº# € €€‚ÿINHERITS FROMèwŠÊº¥Ëºq ²€î€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãy­î€‰€ã”„'€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoVRMLParent > SoVRMLGroup > SoVRMLTransform. ½ÊºÓ˺# €€€‚ÿSYNOPSIS|U¥ËºO̺' €ª€”‘€€‚‚ÿ#include Fields from class SoVRMLTransform:Ù4Ó˺(κ¥ i€T”A‚S~‚Aã”5€‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚€ã”„'‰€‚ã”5‰ƒ€‚ã”5€‰ƒ‚ãØtW鉃‚ãØtW鉃€‚ãØtW选ƒ€‚ãØtW选ƒ€‚ÿSoSFVec3fcenterSoSFRotationrotationSoSFVec3fscaleSoSFRotationscaleOrientationSoSFVec3ftranslationFields from class SoVRMLGroup:SoSFVec3fbboxCenterSoSFVec3fbboxSizeSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingW%O̺κ2 4€J€”‘€‚A€ãy­‚ÿFields from class SoVRMLParent:L(κËκ5 :€.€T”A‚S~‚Aã÷]Ï´€‰ƒ€‚ÿSoMFNodechildrenW(κ"Ϻ/ .€P€”‘€‚A€ã‘H÷!‰‚ÿMethods from class SoVRMLTransform:>¿Ëκl» Ì€€T”A‚S~‚A€ƒ‚ƒ‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰‚ƒã4i¥‘‰‚ƒã‘H÷!‰‚ÿSoVRMLTransform()SoVRMLTransform(int nChildren)voidpointAt(const SbVec3f &fromPoint, co"Ϻl»oɺnst SbVec3f &toPoint)voidgetScaleSpaceMatrix(SbMatrix &mat, SbMatrix &inv) constvoidgetRotationSpaceMatrix(SbMatrix &mat, SbMatrix &inv) constvoidgetTranslationSpaceMatrix(SbMatrix &mat, SbMatrix &inv) constvoidmultLeft(const SbMatrix &mat)voidmultRight(const SbMatrix &mat)voidcombineLeft(SoVRMLTransform *nodeOnLeft)ð¥"Ϻ\»K d€K€T”A‚S~‚A€ƒã‘H÷!‰‚ƒã4i¥‘‰‚ƒã¨ƒõ(‰‚ãB-9‰ƒ‚ÿvoidcombineRight(SoVRMLTransform *nodeOnRight)voidsetMatrix(const SbMatrix &mat)voidrecenter(const SbVec3f &newCenter)static SoTypegetClassTypeId()S$l»¯»/ .€H€”‘€‚A€ã”„'‰‚ÿMethods from class SoVRMLGroup:|N\»+». ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()T%¯»»/ .€J€”‘€‚A€ãy­ÿMethods from class SoVRMLParent:ï€+»n»o ¬€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)N»¼»/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|n»8»n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¼»»/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ8»õ » 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH»} »@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nõ »Ë »/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ} » »Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4Ë »6 »& €€‚A€‚ÿDESCRIPTIONÇ— »ý »0 .€/€”‘€‚A€€€‚ÿA SoVRMLTransform is a grouping node that defines a coordinate system for its children that is relative to the coordinate systems of its parents. C6 »@ ») "€4€‚A€€ ‚ÿVRML 2.0 SPECIFICATIONS&ý »“»- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯@ »r»0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org. Ö“»‡@»3 4€­€”‘€‚A€€€€ ‚ÿA SoVRMLTransform is a grouping node that defines a coordinate system for its children tr»‡@»oɺhat is relative to the coordinate systems of its parents. See also "Concepts - Coordinate Systems and Transformations." Õ™r»\A»< F€3€”‘€‚A€€€€€€€‚ÿSee the "Concepts - Grouping and Children Nodes" section for a description of the children, addChildren, and removeChildren fields and eventIns.a‡@»½C»N j€'€”‘€‚A€€€€€€€€€€€€€‚ÿThe bboxCenter and bboxSize fields specify a bounding box that encloses the SoVRMLTransform's children. This is a hint that may be used for optimization purposes. If the specified bounding box is smaller than the actual bounding box of the children at any time, then the results are undefined. A default bboxSize value, (-1 -1 -1), implies that the bounding box is not specified and if needed must be calculated by the browser. See "Concepts - Bounding Boxes" for a description of the bboxCenter and bboxSize fields.š(\A»WG»r ²€Q€”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿThe translation, rotation, scale, scaleOrientation and center fields define a geometric 3D transformation consisting of (in order) a (possibly) non-uniform scale about an arbitrary point, a rotation about an arbitrary point and axis, and a translation. The center field specifies a translation offset from the local coordinate system's origin, (0,0,0). The rotation field specifies a rotation of the coordinate system. The scale field specifies a non-uniform scale of the coordinate system - scale values must be >= 0.0. The scaleOrientation specifies a rotation of the coordinate system before the scale (to specify scales in arbitrary orientations). The scaleOrientation applies only to the scale operation. The translation field specifies a translation to the coordinate system.‰M½C»àH»< F€›€”‘€‚A€€€€€€€‚ÿGiven a 3-dimensional point P and Transform node, P is transformed into point P' in its parent's coordinate system by a series of intermediate transformations. In matrix-transformation notation, where C (center), SR (scaleOrientation), T (translation), R (rotation), and S (scale) are the equivalent transformation matrices,xOWG»XI») "€ž€Ù€‚A€‚ÿ P' = T x C x R x SR x S x -SR x -TC x P (where P is a column vector)+àH»ƒI»( €€Ù€‚A€‚ÿFXI»ÉI») "€:€”‘€‚A€‚ÿThe SoVRMLTransform node: Ù©ƒI»¢J»0 .€S€Ù€‚A€‚ÿTransform { center C rotation R scale S scaleOrientation SR translation T children [...]}U,ÉI»÷J») "€X€”‘€‚A€‚ÿis equivalent to the nested sequence of: ã¢J» L»2 2€Ç€Ù€‚A€‚ÿTransform { translation T Transform { translation C Transform { rotation R Transform { rotation SR Transform { scale S Transform { rotation -SR Transform { translation -C ... }}}}}}} / ÷J»;L»& €€‚A€‚ÿFIELDSG L»‚L»2 4€*€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fcenterI ;L»ËL») "€@€”‘€‚A€‚ÿOrigin of scale and rotation.L‚L»M»2 4€4€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationrotation5 ËL»LM») "€€”‘€‚A€‚ÿRotation.FM»’M»2 4€(€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fscale9LM»ËM») "€ €”‘€‚A€‚ÿScale factor.T"’M»N»2 4€D€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationscaleOrientationM$ËM»lN») "€H€”‘€‚A€‚ÿRotational orientation for scale.LN»¸N»2 4€4€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3ftranslation?lN»÷N») "€,€”‘€‚A€‚ÿTranslation vector.h.¸N»_O»: D€\€T”A‚S~‚Aã”5€‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fbboxCenterSoSFVec3fbboxSize^÷N» €»/ .€¼€”‘€‚A€€€‚ÿSpecify a bounding box that encloses the SoVRMLTransform's children. Used as a hint only._O» €»oɺ0 _O»<€»& €€‚A€‚ÿMETHODSA €»}€», (€*€T”A‚S~‚A€ƒ‚ÿSoVRMLTransform()8<€»µ€») "€€”‘€‚A€‚ÿConstructor.N"}€»», (€D€T”A‚S~‚A€ƒ‚ÿSoVRMLTransform(int nChildren)a8µ€»d») "€p€”‘€‚A€‚ÿConstructor that takes approximate number of children}E»á»8 @€Š€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidpointAt(const SbVec3f &fromPoint, const SbVec3f &toPoint)Hd»)ƒ»* "€=€”‘€‚A€‚ÿSets the transform to translate the origin to the fromPoint and rotate the negative z-axis (0,0,-1) to lie on the vector from fromPoint to toPoint. This always tries to keep the "up" direction the positive y-axis, unless that is impossible. All current info in the node is wiped out.#Îá»L„»U x€€T”A‚S~‚A€ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ƒã4i¥‘‰ã4i¥‘‰‚ÿvoidgetScaleSpaceMatrix(SbMatrix &mat, SbMatrix &inv) constvoidgetRotationSpaceMatrix(SbMatrix &mat, SbMatrix &inv) constvoidgetTranslationSpaceMatrix(SbMatrix &mat, SbMatrix &inv) const“j)ƒ»ß„») "€Ô€”‘€‚A€‚ÿReturns composite matrices that take you from object space to each of scale/rotation/translation spaces‡ML„»f…»: D€š€T”A‚S~‚A€ƒã4i¥‘‰‚ƒã4i¥‘‰‚ÿvoidmultLeft(const SbMatrix &mat)voidmultRight(const SbMatrix &mat)÷Íß„»]†»* "€›€”‘€‚A€‚ÿConvenience functions that combine the effects of a matrix transformation into the transformation stored in this node. The first method premultiplies the transformation and the second postmultiplies it.ždf…»û†»: D€È€T”A‚S~‚A€ƒã‘H÷!‰‚ƒã‘H÷!‰‚ÿvoidcombineLeft(SoVRMLTransform *nodeOnLeft)voidcombineRight(SoVRMLTransform *nodeOnRight)À–]†»»‡»* "€-€”‘€‚A€‚ÿThese are the same as multLeft() and multRight(), except that the transformation to multiply into this node comes from another transformation node.Z(û†»ˆ»2 4€P€T”A‚S~‚A€ƒã4i¥‘‰‚ÿvoidsetMatrix(const SbMatrix &mat)‡^»‡»œˆ») "€¼€”‘€‚A€‚ÿSets the fields in the node to implement the transformation represented by the given matrix^,ˆ»úˆ»2 4€X€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidrecenter(const SbVec3f &newCenter)¢yœˆ»œ‰») "€ò€”‘€‚A€‚ÿChanges the center of the transformation to the given point without affecting the overall effect of the transformationU#úˆ»ñ‰»2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*œ‰»DŠ») "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ñ‰»sŠ»& €€‚A€‚ÿEVENTS3 DŠ»¦Š») "€€”‘€‚A€‚ÿeventIn?ÔsŠ»å‹»k ¤€©€T”A‚S~‚Aã÷]Ï´€‰ƒ‚ã÷]Ï´‰ƒ‚ã”5‰ƒ‚ã÷]Ï´‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoMFNodeaddChildrenSoMFNoderemoveChildrenSoSFVec3fset_centerSoMFNodeset_childrenSoSFRotationset_rotationSoSFVec3fset_scaleSoSFRotationset_scaleOrientationSoSFVec3fset_translation4 ¦Š»Œ») "€€”‘€‚A€‚ÿeventOut»å‹»/»[ „€w€T”A‚S~‚Aã”5€‰ƒ‚ã÷]Ï´‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoSFVec3fcenter_changedSoMFNodechildren_changedSoSFRotationrotation_changedSoSFVec3fscale_changedSoSFRotationscaleOrientation_changedSoSFVec3ftranslation_changed8Œ»g»& €$€‚A€‚ÿACTION BEHAVIORâŽ/»IŽ»T v€€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉ã¹_ØS‰ãòÓ}ª‰ãeY ‰‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction, SoGetMatrixAction, SoSearchAction, SoWriteAction=g»†Ž»& €.€‚A€‚ÿFILE FORMAT/DEFAULTS<IŽ»ÂŽ»* $€$€P„7|‚€‚ÿVRMLTransform {ÅŠ†Ž»‡»; D€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿcenter0 0 0children[]rotation0 0 1 0scale1 1 1scaleOrientation0 0 1 0translation0 0 0bboxCenter0 0 0bboxSize-1 -1 -1}AÂŽ»È»1îê„urxñÈ» À»Î¼SoVRMLVertexLine8‡» À»% €&€ˆˆ€‚ÿSoVRMLVertexLineÈ» À»‡»*È»6À»# €€€‚ÿNAMEhB À»žÀ»& €„€”‘€€‚ÿSoVRMLVertexLine - abstract base class for SoVRMLIndexedLineSet36À»ÑÀ»# € €€‚ÿINHERITS FROMÍhžÀ»žÁ»e š€Ð€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLVertexLine. ÑÀ»ÌÁ»# €€€‚ÿSYNOPSIS~WžÁ»J»' €®€”‘€€‚‚ÿ#include Fields from class SoVRMLVertexLine:€>ÌÁ»Ê»B T€|€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ãYdb鉃‚ÿSoSFNodecolorSoSFBoolcolorPerVertexSoSFNodecoordNJ»û/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Ê»”Ä»n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)ûìÄ»/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eؔĻQÇ» 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHìÄ»ÙÇ»@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NQÇ»'È»/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÙÇ»^É»Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4'È»’É»& €€‚A€‚ÿDESCRIPTIONqB^ɻʻ/ .€„€”‘€‚A€€€‚ÿThis node is an abstract base class for SoVRMLIndexedLineSet./ ’É»2Ê»& €€‚A€‚ÿFIELDSEÊ»wÊ»2 4€&€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodecolora2ʻ˻/ .€Â€”‘€‚A€€€‚ÿAn SoVRMLColor node whose colors are applied to the vertices or lines of the IndexedLineSet.NwÊ»UË»2 4€8€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolcolorPerVertextË»òË») "€è€”‘€‚A€‚ÿIf TRUE, colors are applied to the vertices of the IndexedLineSet. If FALSE, the colors are applied to the lines.EUË»7Ì»2 4€&€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodecoordi:òË» Ì»/ .€t€”‘€‚A€€€‚ÿAn SoVRMLCoordinate node defining the IndexedLineSet.0 7Ì»ÐÌ»& €€‚A€‚ÿMETHODSU# Ì»%Í»2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*ÐÌ»xÍ») "€T€”‘€‚A€‚ÿReturns type identifier for this class./ %Í»§Í»& €€‚A€‚ÿEVENTS3 xÍ»ÚÍ») "€€”‘€‚A€‚ÿeventInŒJ§Í»fλB T€”€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ãYdb鉃‚ÿSoSFNodeset_colorSoSFBoolset_colorPerVertexSoSFNodeset_coord4 ÚÍ»šÎ») "€€”‘€‚A€‚ÿeventOut˜Vfλ2Ï»B T€¬€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ãYdb鉃‚ÿSoSFNodecolor_changedSoSFBoolcolorPerVertex_changedSoSFNodecoord_changed8šÎ»jÏ»& €$€‚A€‚ÿACTION BEHAVIOR—V2Ï» ¼A R€¬€”‘€‚Aã©öø(€‰ã³DfL‰ããS¯+‰ãɓ℉‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickActionjÏ» ¼‡»=jÏ»J¼& €.€‚A€‚ÿFILE FORMAT/DEFAULTS„[ ¼Î¼) "€¶€”‘€‚A€‚ÿThis is an abstract base class. See the derived class for the format and default values.BJ¼¼1¯ wØ€xò¼I¼ŸA¼SoVRMLVertexPoint9μI¼% €(€ˆˆ€‚ÿSoVRMLVertexPoint*¼s¼# €€€‚ÿNAMElFI¼ß¼& €Œ€”‘€€‚ÿSoVRMLVertexPoint - abstract base class for the SoVRMLPointSet node3s¼¼# € €€‚ÿINHERITS FROMÎiß¼à¼e š€Ò€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLVertexPoint. ¼¼# €€€‚ÿSYNOPSIS€Y༎¼' €²€”‘€€‚‚ÿ#include Fields from class SoVRMLVertexPoint:^$¼ì¼: D€H€T”A‚S~‚AãYdb选ƒ‚ãYdb鉃‚ÿSoSFNodecolorSoSFNodecoordNŽ¼:¼/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|켶¼n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X):¼¼/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eض¼s¼ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¼û¼@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Ns¼I ¼/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þû¼€ ¼Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4I ¼´ ¼& €€‚A€‚ÿDESCRIPTIONuF€ ¼) ¼/ .€Œ€”‘€‚A€€€‚ÿThis node is the abstract base class for the SoVRMLPointSet node./ ´ ¼X ¼& €€‚A€‚ÿFIELDSE) ¼ ¼2 4€&€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodecolorPX ¼ ¼/ .€ €”‘€‚A€€€‚ÿAn SoVRMLColor node whose colors are applied to the points of the PointSet.E ¼a ¼2 4€&€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodecoordj; ¼Ë ¼/ .€v€”‘€‚A€€€‚ÿAn SoVRMLCoordinate node defining the IndexedPointSet.0 a ¼û ¼& €€‚A€‚ÿMETHODSU#Ë ¼P ¼2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*û ¼£ ¼) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ P ¼Ò ¼& €€‚A€‚ÿEVENTS3 £ ¼¼) "€€”‘€‚A€‚ÿeventInJÒ ¼O¼2 4€0€”‘€‚HãYdb选ƒ€‚ÿSoSFNodeset_colorO ¼ž¼/ .€@€”‘€‚HãU×S选ƒ‚ÿSoSFBoolset_colorPerVertexFO¼ä¼/ .€.€”‘€‚HãYdb选ƒ‚ÿSoSFNodeset_coord7 ž¼¼+ &€€”‘€‚H€€‚ÿeventOutNä¼i¼2 4€8€”‘€‚HãYdb选ƒ€‚ÿSoSFNodecolor_changedS$¼¼¼/ .€H€”‘€‚HãU×S选ƒ‚ÿSoSFBoolcolorPerVertex_changedJi¼@¼/ .€6€”‘€‚HãYdb选ƒ‚ÿSoSFNodecoord_cha¼¼@¼Î¼nged;¼¼M@¼( €&€‚H€€ ‚ÿACTION BEHAVIOR“S@¼à@¼@ P€¦€”‘€‚Hã©öø(€‰ã³DfL‰ããS¯+‰ã#º…ö‰‚ÿSoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoPickAction<M@¼A¼% €.€‚H€‚ÿFILE FORMAT/DEFAULTSƒ[à@¼ŸA¼( €¶€”‘€‚H€‚ÿThis is an abstract base class. See the derived class for the format and default values.BA¼áA¼1NrxÉyóáA¼B¼:‡¼SoVRMLVertexShape9ŸA¼B¼% €(€ˆˆ€‚ÿSoVRMLVertexShape*áA¼DB¼# €€€‚ÿNAMErLB¼¶B¼& €˜€”‘€€‚ÿSoVRMLVertexShape - abstract base class for the SoVRMLIndexedFaceSet node3DB¼éB¼# € €€‚ÿINHERITS FROMÎi¶B¼·C¼e š€Ò€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€ãåC’€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVRMLGeometry > SoVRMLVertexShape. éB¼åC¼# €€€‚ÿSYNOPSIS€Y·C¼eD¼' €²€”‘€€‚‚ÿ#include Fields from class SoVRMLVertexShape:ÙåC¼>E¼Z „€þ€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ãYdb鉃‚ãYdb鉃‚ãU×S鉃‚ãYdb鉃‚ÿSoSFNodecolorSoSFBoolcolorPerVertexSoSFNodecoordSoSFNodenormalSoSFBoolnormalPerVertexSoSFNodetexCoordQ(eD¼E¼) "€P€”‘€‚A€‚ÿMethods from class SoVRMLVertexShape:U#>E¼äE¼2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()NE¼2F¼/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|äE¼®G¼n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)2F¼H¼/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ®G¼kJ¼ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHH¼óJ¼@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NkJ¼AK¼/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞóJ¼xL¼Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4AK¼¬L¼& €€‚A€‚ÿDESCRIPTION†TxL¼2M¼2 4€¨€”‘€‚A€€€€‚ÿSoVRMLVertexShape is an abstract base class for the SoVRMLIndexedFaceSet node./ ¬L¼aM¼& €€‚A€‚ÿFIELDSE2M¼¦M¼2 4€&€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodecoloraaM¼6N¼/ .€Â€”‘€‚A€€€‚ÿAn SoVRMLColor node whose colors are applied to the vertices or faces of the IndexedFaceSet.N¦M¼„N¼2 4€8€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolcolorPerVertext6N¼!O¼) "€è€”‘€‚A€‚ÿIf TRUE, colors are applied to the vertices of the IndexedFaceSet. If FALSE, the colors are applied to the faces.E„N¼fO¼2 4€&€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodecoordi:!O¼ÏO¼/ .€t€”‘€‚A€€€‚ÿAn SoVRMLCoordinate node defining the IndexedFaceSet.FfO¼!€¼2 4€(€T”A‚S~‚AãYdb选ƒ‚ÏO¼!€¼ŸA¼ÿSoSFNodenormal•fÏO¼¶€¼/ .€Ì€”‘€‚A€€€‚ÿAn SoVRMLNormalNode containing the normals. If NULL, the normals will be automatically generated.O!€¼¼2 4€:€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolnormalPerVertexŸv¶€¼¤¼) "€ì€”‘€‚A€‚ÿIf TRUE, normals are applied to the vertices of the IndexedFaceSet. If FALSE, the normals are applied to the faces.H¼ì¼2 4€,€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodetexCoordT%¤¼@‚¼/ .€J€”‘€‚A€€€‚ÿAn SoVRMLTextureCoordinate node.0 ì¼p‚¼& €€‚A€‚ÿMETHODSU#@‚¼Å‚¼2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*p‚¼ƒ¼) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ Å‚¼Gƒ¼& €€‚A€‚ÿEVENTS3 ƒ¼zƒ¼) "€€”‘€‚A€‚ÿeventInò—Gƒ¼l„¼[ „€/€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ãYdb鉃‚ãYdb鉃‚ãU×S鉃‚ãYdb鉃‚ÿSoSFNodeset_colorSoSFBoolset_colorPerVertexSoSFNodeset_coordSoSFNodeset_normalSoSFBoolset_normalPerVertexSoSFNodeset_texCoord4 zƒ¼ „¼) "€€”‘€‚A€‚ÿeventOut ¯l„¼ª…¼[ „€_€T”A‚S~‚AãYdb选ƒ‚ãU×S鉃‚ãYdb鉃‚ãYdb鉃‚ãU×S鉃‚ãYdb鉃‚ÿSoSFNodecolor_changedSoSFBoolcolorPerVertex_changedSoSFNodecoord_changedSoSFNodenormal_changedSoSFBoolnormalPerVertex_changedSoSFNodetexCoord_changed= „¼ç…¼& €.€‚A€‚ÿFILE FORMAT/DEFAULTS„[ª…¼k†¼) "€¶€”‘€‚A€‚ÿThis is an abstract base class. See the derived class for the format and default values.8ç…¼£†¼& €$€‚A€‚ÿACTION BEHAVIOR—Vk†¼:‡¼A R€¬€”‘€‚Aã©öø(€‰ãɓ℉ããS¯+‰ã³DfL‰‚ÿSoGLRenderAction, SoRayPickAction, SoGetBoundingBoxAction, SoCallbackAction@£†¼z‡¼1DØ€xž{ôz‡¼±‡¼¬‹½SoVRMLViewpoint7:‡¼±‡¼% €$€ˆˆ€‚ÿSoVRMLViewpoint*z‡¼Û‡¼# €€€‚ÿNAMEvP±‡¼Qˆ¼& € €”‘€€‚ÿSoVRMLViewpoint - specifies position from which the user might view the scene3Û‡¼„ˆ¼# € €€‚ÿINHERITS FROM‘DQˆ¼‰¼M j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLViewpoint. „ˆ¼C‰¼# €€€‚ÿSYNOPSIS|U‰¼¿‰¼' €ª€”‘€€‚‚ÿ#include Fields from class SoVRMLViewpoint:ÅsC‰¼„Š¼R t€æ€T”A‚S~‚Aã0â1€‰ƒ‚ãU×S鉃‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ãü”ŒÔ‰ƒ‚ÿSoSFFloatfieldOfViewSoSFBooljumpSoSFRotationorientationSoSFVec3fpositionSoSFStringdescriptionO&¿‰¼ÓŠ¼) "€L€”‘€‚A€‚ÿMethods from class SoVRMLViewpoint:j6„Š¼=‹¼4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLViewpoint()static SoTypegetClassTypeId()NÓŠ¼‹‹¼/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|=‹¼¼n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)‹‹¼_¼/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eؼļ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH_¼XÀ¼@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶pļXÀ¼:‡¼6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nļ¦À¼/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞXÀ¼ÝÁ¼Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4¦À¼¼& €€‚A€‚ÿDESCRIPTION°€ÝÁ¼Á¼0 .€€”‘€‚A€€€‚ÿThe SoVRMLViewpoint node defines a specific location in a local coordinate system from which the user might view the scene.‚Y¼Cü) "€²€”‘€‚A€‚ÿNote: The binding behavior and associated eventIns and eventOuts are not implemented. ?Á¼‚ü& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&CüÕļ- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯‚ü´Å¼0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.Î/Õļ‚˼Ÿ _ €”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ ‚ÿThe SoVRMLViewpoint node defines a specific location in a local coordinate system from which the user might view the scene. SoVRMLViewpoints are bindable children nodes and thus there exists an SoVRMLViewpoint stack in the browser in which the top-most SoVRMLViewpoint on the stack is the currently active SoVRMLViewpoint. If a TRUE value is sent to the set_bind eventIn of an SoVRMLViewpoint, it is moved to the top of the SoVRMLViewpoint stack and thus activated. When an SoVRMLViewpoint is at the top of the stack, the user's view is conceptually reparented as a child of the SoVRMLViewpoint. All subsequent changes to the SoVRMLViewpoint's coordinate system change the user's view (e.g. changes to any parent transformation nodes or to the SoVRMLViewpoint's position or orientation fields). Sending a set_bind FALSE event removes the SoVRMLViewpoint from the stack and results in isBound FALSE and bindTime events. If the popped SoVRMLViewpoint is at the top of the viewpoint stack the user's view is reparented to the next entry in the stack. See "Concepts - Bindable Children Nodes" for more details on the the binding stacks. When an SoVRMLViewpoint is moved to the top of the stack, the existing top of stack Viewpoint sends an isBound FALSE event and is pushed onto the stack.G´Å¼É̼9 @€€”‘€‚A€€€€€€‚ÿSoVRMLViewpoints have the additional requirement from other binding nodes in that they store the relative transformation from the user view to the current SoVRMLViewpoint when they are moved to the top of stack. This is needed by the jump field, described below.˼·Î¼B R€Y€”‘€‚A€€€€€€€€€‚ÿAn author can automatically move the user's view through the world by binding the user to an SoVRMLViewpoint and then animating either the SoVRMLViewpoint or the transformations above it. Browsers shall allow the user view to be navigated relative to the coordinate system defined by the SoVRMLViewpoint (and the transformations above it), even if the SoVRMLViewpoint or its parent transformations are being animated.VÉ̼½H ^€€”‘€‚A€€€€€€€€€€€‚ÿThe bindTime eventOut sends the time at which the SoVRMLViewpoint is bound or unbound. This can happen during loading, when a set_bind event is sent to the SoVRMLViewpoint, or when the browser binds to the SoVRMLViewpoint via its user interface (·Î¼½:‡¼see below). »·Î¼"½N j€w€”‘€‚A€€€€€€€€€€€€€‚ÿThe position and orientation fields of the SoVRMLViewpoint node specify relative locations in the local coordinate system. Position is relative to the coordinate system's origin (0,0,0), while orientation specifies a rotation relative to the default orientation; the default orientation has the user looking down the -Z axis with +X to the right and +Y straight up. SoVRMLViewpoints are affected by the transformation hierarchy.¿e½á½Z ‚€Ë€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿNavigation types (see SoVRMLNavigationInfo) that require a definition of a down vector (e.g. terrain following) shall use the negative Y-axis of the coordinate system of the currently bound SoVRMLViewpoint. Likewise navigation types (see SoVRMLNavigationInfo) that require a definition of an up vector shall use the positive Y-axis of the coordinate system of the currently bound SoVRMLViewpoint. Note that the orientation field of the SoVRMLViewpoint does not affect the definition of the down or up vectors. This allows the author to separate the viewing direction from the gravity direction.w#"½X½T v€G€”‘€‚A€€€€€€€€€€€€€€€‚ÿThe jump field specifies whether the user's view `jumps' (or animates) to the position and orientation of a bound SoVRMLViewpoint. Regardless of the value of jump at bind time, the relative viewing transformation between the user's view and the current SoVRMLViewpoint shall be stored with the current SoVRMLViewpoint for later use when un-jumping. The following is a re-write of the general bind stack rules described in "Concepts - Bindable Child Nodes, Bind Stack Behavior" with additional rules regarding Viewpoints (in bold):>á½–½+ &€&€T”!:‚!€ƒ‚ÿ1.During read: ªpX½@½: D€à€VŒŒ!:‚H€ƒ€€€€€‚ÿ•the first encountered SoVRMLViewpoint is bound by pushing it to the top of the SoVRMLViewpoint stack, §m–½ç½: D€Ú€VŒŒi:‚H€!ƒ€€€€€‚ÿ·nodes contained within SoVRMLInlines are not candidates for the first encountered SoVRMLViewpoint, žj@½… ½4 8€Ô€V„Œi:‚H€!ƒ€€€‚ÿ·the first node within a prototype is a valid candidate for the first encountered SoVRMLViewpoint; —Qç½ ½F \€¢€VŒŒ!:‚H€ƒ€€€€€€€€€‚ÿ·the first encountered SoVRMLViewpoint sends an isBound TRUE event. J… ½ ½7 >€”€T”!:‚!€ƒ€€€€‚ÿ2.When a set_bind TRUE eventIn is received by an SoVRMLViewpoint: ^- ½û ½1 2€Z€VŒŒ!:‚H€ƒ€ €‚ÿ•if it is not on the top of the stack: Ï ½Ê ½2 2€;€VŒŒi:‚H€ƒ€€‚ÿ·the relative transformation from the current top of stack SoVRMLViewpoint to the user's view is stored with the current top of stack SoVRMLViewpoint, {Gû ½E ½4 8€Ž€V„Œi:‚H€ƒ€€€‚ÿ·the current top of stack node sends an isBound eventOut FALSE, £iÊ ½è ½: D€Ò€V„Œi:‚H€ƒ€€ €€€‚ÿ·the new node is moved to the top of the stack and becomes the currently bound SoVRMLViewpoint, ‹QE ½s ½: D€¢€V„Œi:‚H€ƒ€€€€€‚ÿ·the new SoVRMLViewpoint (top of stack) sends an isBound TRUE eventOut, Àè ½w½D V€€V„Œi:‚H€ƒ€€€€€€€€‚ÿ·if jump is TRUE for the new SoVRMLViewpoint, then the user's view is `jumped' (or animated) to match the values in the position and orientation fields of the new SoVRMLViewpoint; ˆZs ½ÿ½. ,€´€VŒŒ!:‚H€ƒ€‚ÿ·else if the node is already at the top of the stack, then this event has no effect. ‚Kw½½7 >€–€T”!:‚!€ƒ€€€€‚ÿ3.When a set_bind FALSE eventIn is received by an SoVRMLViewpoint: N#ÿ½Ï½+ &€F€VŒŒ!:‚H€ƒ‚ÿ•it is removed from the stack, R'½-@½+ &€N€V„Œ!:‚H€ƒ‚ÿ•if Ͻ-@½:‡¼it is on the top of the stack: `,Ͻ@½4 8€X€VŒŒi:‚H€ƒ€€€‚ÿ·it sends an isBound eventOut FALSE, ¼-@½IA½; D€€V„Œi:‚H€ƒ€€€€€‚ÿ·the next node in the stack becomes the currently bound SoVRMLViewpoint (i.e. pop) and issues an isBound TRUE eventOut, 4ê@½}B½J b€Õ€V„Œi:‚H€ƒ€€€€€€€€€€‚ÿ·if its jump is TRUE the user's view is 'jumped’ (or animated) to the position and orientation of the next SoVRMLViewpoint in the stack with the stored relative transformation for with this next SoVRMLViewpoint applied, Þ–IA½[D½H ^€-€T”!:‚!€ƒ€€€€‚ƒ€€‚ƒ€€‚ÿ4.If a set_bind FALSE eventIn is received by a node not in the stack, the event is ignored and isBound events are not sent. 5.When a node replaces another node at the top of the stack, the isBound TRUE and FALSE eventOuts from the two nodes are sent simultaneously (i.e. identical timestamps). 6.If a bound node is deleted then it behaves as if it received a set_bind FALSE event (see #3). MÛ}B½¨F½r ²€·€”‘€‚!€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿNote that the jump field may change after an SoVRMLViewpoint is bound - the rules described above still apply. If jump was TRUE when the SoVRMLViewpoint is bound, but changed to FALSE before the set_bind FALSE is sent, then the SoVRMLViewpoint does not un-jump during unbind. If jump was FALSE when the SoVRMLViewpoint is bound, but changed to TRUE before the set_bind FALSE is sent, then the SoVRMLViewpoint does perform the un-jump during unbind.ØŠ[D½€J½N j€€”‘€‚!€€€€€€€€€€€€€‚ÿThe fieldOfView field specifies a preferred field of view from this viewpoint, in radians. A small field of view roughly corresponds to a telephoto lens; a large field of view roughly corresponds to a wide-angle lens. The field of view should be greater than zero and smaller than pi; the default value corresponds to a 45 degree field of view. The value of fieldOfView represents the maximum viewing angle in any direction axis of the view. For example, a browser with a rectangular viewing projection shall use an angle of fieldOfView for the larger direction (depending on aspect ratio) and fieldOfView times aspect ratio in the smaller direction. If the aspect ratio is 2x1 (i.e. horizontal twice the vertical) and the fieldOfView is 1.0, then the horizontal viewing angle would be 1.0 and the vertical viewing angle would be 0.5. fieldOfView is a hint to the browser and may be ignored.Ýw¨F½]M½f š€ï€”‘€‚!€€€€€€€€€€€€€€€€€€€€€‚ÿThe description field identifies SoVRMLViewpoints that are recommended to be publicly accessible through the browser's user interface (e.g. SoVRMLViewpoints menu). The string in the description field should be displayed if this functionality is implemented. If description is empty, then the SoVRMLViewpoint should not appear in any public user interface. It is recommended that the browser bind and move to an SoVRMLViewpoint when its description is selected, either animating to the new position or jumping directly there. Once the new position is reached both the isBound and bindTime eventOuts are sent. Ëw€J½4€½T v€ï€”‘€‚!€€€€€€€€€€€€€€€‚ÿThe URL syntax ".../scene.wrl#ViewpointName" specifies the user's initial view when entering "scene.wrl" to be the first SoVRMLViewpoint in file "scene.wrl" that appears as "DEF ViewpointName Viewpoint { ... }" - this overrides the first SoVRMLViewpoint in the file as the initial user view and receives a set_bind TRUE message. If the SoVRMLViewpoint "ViewpointName" is not found, then assume that no SoVRMLViewpoint was specified and use the first SoVRMLViewpoint in the file. The URL syntax "#ViewpointName" specifies a view within the existing file. If this is loaded, then ]M½4€½:‡¼it receives a set_bind TRUE message.у]M½‚½N j€€”‘€‚!€€€€€€€€€€€€€‚ÿIf an SoVRMLViewpoint is bound (set_bind) and is the child of an SoVRMLLOD, SoVRMLSwitch, or any node or prototype that disables its children, then the result is undefined. If an SoVRMLViewpoint is bound that results in collision with geometry, then the browser performs its self-defined navigation adjustments as if the user navigated to this point (see SoVRMLCollision)./ 4€½4‚½& €€‚!€‚ÿFIELDSL‚½€‚½2 4€4€T”A‚S~‚Aã0â1€‰ƒ‚ÿSoSFFloatfieldOfView24‚½²ƒ½* "€€”‘€‚A€‚ÿSpecifies a preferred field of view from the viewpoint, in radians. A small field of view roughly corresponds to a telephoto lens; a large field of view roughly corresponds to a wide-angle lens. The field of view should be greater than zero and smaller than pi.D€‚½öƒ½2 4€$€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBooljumpvM²ƒ½l„½) "€š€”‘€‚A€‚ÿSpecifies whether the user's view "jumps" to the position and orientation.Oöƒ½»„½2 4€:€T”A‚S~‚Aã‘Ù»•€‰ƒ‚ÿSoSFRotationorientatione<l„½ …½) "€x€”‘€‚A€‚ÿSpecifies a rotation relative to the default orientation.I»„½i…½2 4€.€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fpositiontK …½Ý…½) "€–€”‘€‚A€‚ÿSpecifies a position relative to the coordinate system's origin (0,0,0).Mi…½*†½2 4€6€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringdescriptionpGÝ…½š†½) "€Ž€”‘€‚A€‚ÿSpecifies viewpoints that are recommended to be publicly accessible.0 *†½Ê†½& €€‚A€‚ÿMETHODSAš†½ ‡½, (€*€T”A‚S~‚A€ƒ‚ÿSoVRMLViewpoint()8ʆ½C‡½) "€€”‘€‚A€‚ÿConstructor.U# ‡½˜‡½2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*C‡½ë‡½) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ˜‡½ˆ½& €€‚A€‚ÿEVENTS3 뇽Mˆ½) "€€”‘€‚A€‚ÿeventIn󔈽@‰½_ Œ€)€T”A‚S~‚AãU×S选ƒ€€‚ã0â1‰ƒ€‚ãU×S选ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoSFBoolset_bind (Not implemented)SoSFFloatset_fieldOfViewSoSFBoolset_jumpSoSFRotationset_orientationSoSFVec3fset_position4 Mˆ½t‰½) "€€”‘€‚A€‚ÿeventOut8Ë@‰½¬Š½m ¨€—€T”A‚S~‚Aãøi选ƒ€€‚ãU×S鉃€‚ã0â1€‰ƒ€‚ãU×S选ƒ‚ã‘Ù»•‰ƒ‚ã”5‰ƒ‚ÿSoSFTimebindTime (Not implemented)SoSFBoolisBound (Not implemented)SoSFFloatfieldOfView_changedSoSFBooljump_changedSoSFRotationorientation_changedSoSFVec3fposition_changed=t‰½éŠ½& €.€‚A€‚ÿFILE FORMAT/DEFAULTS8¬Š½!‹½* $€€P„7|‚€‚ÿViewpoint {‹W銽¬‹½4 8€®€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚ÿfieldOfView0.785398jumpTRUEorientation0 0 1 0position0 0 10description""}G!‹½ó‹½1!Éy[|õó‹½SŒ½/ ¾SoVRMLVisibilitySensor`4¬‹½SŒ½, (€h€ˆˆ€€€‚ÿSoVRMLVisibilitySensor(ACTION NOT IMPLEMENTED)*ó‹½}Œ½# €€€‚ÿNAMEqKSŒ½îŒ½& €–€”‘€€‚ÿSoVRMLVisibilitySensor - detects visibility changes of a rectangular box3}Œ½!½# € €€‚ÿINHERITS FROM˜K¹½M j€–€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLVisibilitySensor. !½ç½# €€€‚ÿSYNOPSISŠc¹½qŽ½' €Æ€”‘€€‚‚ÿ#include Fields from class SoVRMLVisibilitySensor:{9ç½ìŽ½B T€r€T”A‚S~‚Aã”5€‰ƒ‚ãU×S鉃‚ã”5‰ƒ‚ÿSoSFVec3fcenterSoSFBoolenabledSoSFVec3fsizeV-qŽ½B½) "€Z€”‘€‚A€‚ÿMethods from class SoVRMLVisibilitySensor:ь쎽À½E X€€T”A‚S~‚A€ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãB-9‰ƒ‚ÿSoVRMLVisibilitySensor()static voidenableEvents(SbBool OnOffFlag)static SbBoolisEventsEnabled()static SoTypeB½À½¬‹½getClassTypeId()NB½mÀ½/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|À½éÁ½n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)mÀ½A½/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØéÁ½¦Ä½ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHA½.Ž@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N¦Ä½|Ž/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ.Ž³Æ½Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4|Žçƽ& €€‚A€‚ÿDESCRIPTION‰S³Æ½pȽ6 :€§€”‘€‚A€€€€€‚ÿThe SoVRMLVisibilitySensor detects visibility changes of a rectangular box as the user navigates the world. SoVRMLVisibilitySensor is typically used to detect when the user can see a specific object or region in the scene, and to activate or deactivate some behavior or animation in order to attract the user or improve performance.?çƽ¯È½& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&pȽʽ- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯¯È½áʽ0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.Tʽn̽9 @€©€”‘€‚A€€€€€€ ‚ÿThe SoVRMLVisibilitySensor detects visibility changes of a rectangular box as the user navigates the world. SoVRMLVisibilitySensor is typically used to detect when the user can see a specific object or region in the scene, and to activate or deactivate some behavior or animation in order to attract the user or improve performance.¹áʽϽf š€s€”‘€‚A€€€€€€€€€€€€€€€€€€€€€‚ÿThe enabled field enables and disables the SoVRMLVisibilitySensor. If enabled is set to FALSE, the SoVRMLVisibilitySensor does not send output events. If enabled is TRUE, then the SoVRMLVisibilitySensor detects changes to the visibility status of the box specified and sends events through the isActive eventOut. A TRUE event is output to isActive when any portion of the box impacts the rendered view, and a FALSE event is sent when the box has no effect on the view. Browsers shall guarantee that if isActive is FALSE that the box has absolutely no effect on the rendered view - browsers may error liberally when isActive is TRUE (e.g. maybe it does affect the rendering).4øn̽;< F€ñ€”‘€‚A€€€€€€€‚ÿThe exposed fields center and size specify the objϽ;¬‹½ect space location of the box center and the extents of the box (i.e. width, height, and depth). The SoVRMLVisibilitySensor's box is affected by hierarchical transformations of its parents.ìªÏ½¹¾B R€U€”‘€‚A€€€€€€€€€‚ÿThe enterTime event is generated whenever the isActive TRUE event is generated, and exitTime events are generated whenever isActive FALSE events are generated.¿;ؾ` Ž€€”‘€‚A€€€€€€€€€€€€€€€€ €€€‚ÿEach SoVRMLVisibilitySensor behaves independently of all other SoVRMLVisibilitySensors - every enabled SoVRMLVisibilitySensor that is affected by the user's movement receives and sends events, possibly resulting in multiple SoVRMLVisibilitySensors receiving and sending events simultaneously. Unlike SoVRMLTouchSensors, there is no notion of an SoVRMLVisibilitySensor lower in the scene graph "grabbing" events. Instanced (DEF/USE) SoVRMLVisibilitySensors use the union of all the boxes defined by their instances to check for enter and exit - an instanced SoVRMLVisibilitySensor will detect enter, motion, and exit for all instances of the box and send output events appropriately./ ¹¾¾& €€‚A€‚ÿFIELDSGؾN¾2 4€*€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fcenterT+¾¢¾) "€V€”‘€‚A€‚ÿObject space location of the box center.GN¾é¾2 4€*€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolenabledZ1¢¾C¾) "€b€”‘€‚A€‚ÿEnables (TRUE) or disables (FALSE) the sensor.E龈¾2 4€&€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fsizeP'C¾Ø¾) "€N€”‘€‚A€‚ÿWidth, height, and depth of the box.0 ˆ¾¾& €€‚A€‚ÿMETHODSHؾP¾, (€8€T”A‚S~‚A€ƒ‚ÿSoVRMLVisibilitySensor()8¾ˆ¾) "€€”‘€‚A€‚ÿConstructor.a/P¾é¾2 4€^€T”A‚S~‚A€ƒã‘¶p6‰‚ÿstatic voidenableEvents(SbBool OnOffFlag)ˈ¾ê¾6 :€—€”‘€‚A€€€€€‚ÿEnables/disables events for all SoVRMLVisibilitySensor objects. If you have created several objects of this class, you can disable/enable events for all of them with a single call to this method. V$é¾@ ¾2 4€H€T”A‚S~‚A€㑶p6‰ƒ‚ÿstatic SbBoolisEventsEnabled()h?꾨 ¾) "€~€”‘€‚A€‚ÿQueries if events are enabled for all objects of this class.U#@ ¾ý ¾2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¨ ¾P ¾) "€T€”‘€‚A€‚ÿReturns type identifier for this class./ ý ¾ ¾& €€‚A€‚ÿEVENTS3 P ¾² ¾) "€€”‘€‚A€‚ÿeventIn‡E ¾9 ¾B T€Š€T”A‚S~‚Aã”5€‰ƒ‚ãU×S鉃‚ã”5‰ƒ‚ÿSoSFVec3fset_centerSoSFBoolset_enabledSoSFVec3fset_size4 ² ¾m ¾) "€€”‘€‚A€‚ÿeventOutéŽ9 ¾V ¾[ „€€T”A‚S~‚Aãøi选ƒ‚ãøi鉃‚ãU×S鉃‚ã”5‰ƒ‚ãU×S鉃‚ã”5‰ƒ‚ÿSoSFTimeenterTimeSoSFTimeexitTimeSoSFBoolisActiveSoSFVec3fcenter_changedSoSFBoolenabled_changedSoSFVec3fsize_changed=m ¾“ ¾& €.€‚A€‚ÿFILE FORMAT/DEFAULTSCV ¾Ö ¾* $€2€P„7|‚€‚ÿVRMLVisibilitySensor {Y)“ ¾/ ¾0 0€R€P„|‚€ƒ‚ƒ‚ƒ‚‚ÿcenter0 0 0enabledTRUEsize0 0 0}@Ö ¾o ¾1œž{ƒöo ¾¦ ¾€¾SoVRMLWorldInfo7/ ¾¦ ¾% €$€ˆˆ€‚ÿSoVRMLWorldInfo*o ¾Ð ¾# €€€‚ÿNAME_9¦ ¾/¾& €r€”‘€€‚ÿSoVRMLWorldInfo - contains information about the world3Ð ¾b¾# € €€‚ÿINHERITS FROM‘D/¾ó¾M j€ˆ€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVRMLWorldInfo. b¾!¾# €€€‚ÿSYNOPSIS|Uó¾¾' €ª€”‘€€‚‚ÿ#include Fields from class SoVRMLWorldInfo:a'!¾ @¾: D€N€T”A‚S~‚Aã*{£€‰ƒ‚ãü”ŒÔ‰ƒ‚ÿSoMFStringinfoSoSFStringtitle¾ @¾/ ¾O&¾[@¾) "€L€”‘€‚A€‚ÿMethods from class SoVRMLWorldInfo:j6 @¾Å@¾4 8€l€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVRMLWorldInfo()static SoTypegetClassTypeId()N[@¾A¾/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Å@¾B¾n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)A¾çB¾/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØB¾LE¾ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHçB¾ÔE¾@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NLE¾"F¾/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÔE¾YG¾Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4"F¾G¾& €€‚A€‚ÿDESCRIPTIONR)YG¾ßG¾) "€R€”‘€‚A€‚ÿSee the VRML 2.0 Specification, below.?G¾H¾& €2€‚A€‚ÿVRML 2.0 SPECIFICATIONS&ßG¾qI¾- (€M€”‘€‚A€ €‚ÿThis section describes the expected behavior of the node in a conforming VRML 2.0 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.߯H¾PJ¾0 .€_€”‘€‚A€ €€ ‚ÿThis section may reference portions of the VRML 2.0 specification that are not present in this help file. The complete VRML 2.0 spec is available at http://www.web3d.org.6÷qI¾†L¾? L€ï€”‘€‚A€€€€€€€€ ‚ÿThe SoVRMLWorldInfo node contains information about the world. This node has no effect on the visual appearance or behavior of the world - it is strictly for documentation purposes. The title field is intended to store the name or title of the world so that browsers can present this to the user - for instance, in their window border. Any other information about the world can be stored in the info field - for instance, the scene author, copyright information, and public domain information./ PJ¾µL¾& €€‚A€‚ÿFIELDSF†L¾ûL¾2 4€(€T”A‚S~‚Aã*{£€‰ƒ‚ÿSoMFStringinforIµL¾mM¾) "€’€”‘€‚A€‚ÿAny additional information that the author wishes to pass to the user.GûL¾´M¾2 4€*€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringtitle?mM¾óM¾) "€,€”‘€‚A€‚ÿTitle of the world.0 ´M¾#N¾& €€‚A€‚ÿMETHODSAóM¾dN¾, (€*€T”A‚S~‚A€ƒ‚ÿSoVRMLWorldInfo()8#N¾œN¾) "€€”‘€‚A€‚ÿConstructor.U#dN¾ñN¾2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*œN¾DO¾) "€T€”‘€‚A€‚ÿReturns type identifier for this class.=ñN¾O¾& €.€‚A€‚ÿFILE FORMAT/DEFAULTS>DO¾¿O¾* $€(€P„7|‚€‚ÿSoVRMLWorldInfo {CO¾€¾. ,€*€P„|‚€ƒ‚ƒ‚‚ÿinfo[]title""}¿O¾€¾/ ¾@¿O¾N€¾1²$‚4V~÷N€¾…€¾X¿SoValueOrdering7€¾…€¾% €$€ˆˆ€‚ÿSoValueOrdering*N€¾¯€¾# €€€‚ÿNAMEF…€¾õ¾- (€3€”‘€€€€‚ÿSoValueOrdering - group node derived from SoRenderList that alters the decimation of shapes below it depending on their rendering value as approximated by their size on the screen. This makes it possible to render scenes with large numbers of shapes without needing LOD nodes.3¯€¾(‚¾# € €€‚ÿINHERITS FROMèwõ¾ƒ¾q ²€î€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãÍ\Y€‰€㼿ai€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoSeparator > SoRenderList > SoValueOrdering2 (‚¾Bƒ¾& €€€€ ‚ÿSYNOPSISxQƒ¾ºƒ¾' €¢€”‘€€‚‚ÿ#include Fields from class SoValueOrdering: ®Bƒ¾Ã„¾[ „€]€T”A‚S~‚AãU×S选ƒ‚ã`‡Ð㉃‚ãU×S鉃‚ãU×S鉃‚ãU×S鉃‚ãU×S鉃‚ÿSoSFBooldropCullingSoSFUInt32dropScreenAreaSoSFBooladjustDecimation SoSFBoolboundingBoxSubstitutesSoSFBooldecimateSubstitutesSoSFBoollowValueCulling](ºƒ¾ …¾5 :€P€”‘€‚A€㼿ai‰€ €‚ÿMethods from class SoRenderList: Õbľõ†¾s ´€Å€T”A‚S~‚A€ƒãB-9‰€ ‚€ƒãB-9‰‚ƒ‚ãB-9‰ƒ€ €‚ƒãúß~6‰€ ‚€ƒãúß~6‰‚ƒ‚ãúß~6‰ƒ‚ƒ‚ÿvoidaddRenderObjectType(SoType t)voidremoveRenderObjectType(SoType t)intgetNumRenderObjectTypes() constSoTypegetRenderObjectType(int i) const voidaddRenderObjectName(SbName n)voidremoveRenderObjectName(SbName n)intgetNumRenderObjectNames() constSbNamegetRenderObjectName(int i) const voidremoveAllRenderObjectNames()S$ …¾H‡¾/ .€H€”‘€‚A€ãÍ\Y‰‚ÿMethods from class SoSeparator:¥oõ†¾í‡¾6 <€Þ€T”A‚S~‚A€ƒ‚ƒ‚ãB-9‰ƒ‚ÿstatic voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()static SoTypegetClassTypeId()O H‡¾<ˆ¾/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:¤퇾ZŠ¾z €I€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ãB-9‰ƒ‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)static SoTypegetClassTypeId()N<ˆ¾¨Š¾/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|ZŠ¾$Œ¾n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)¨Š¾|Œ¾/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØ$Œ¾áŽ¾ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH|Œ¾i¾@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NᎾ·¾/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þi¾úÀ¾Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ·¾úÀ¾€¾ãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4·¾.Á¾& €€‚A€‚ÿDESCRIPTION•kúÀ¾Ã¾* "€×€”‘€‚A€‚ÿThe SoValueOrdering node uses the functionality from SoRenderList to create a list of paths to the shapes beneath it. It then traverses the linear list and determines the rendering value and cost of each shape. The rendering value is based on the object's approximate screen size and its cost is based on a count of the number of primitives the shape contains.Á—.Á¾„ľ* "€/€”‘€‚A€‚ÿDuring each render traversal, the ValueOrdering node determines how many primitives a shape deserves based on its rendering value. If the shape contains multiple levels of detail, then the ValueOrdering node will choose the correct level of detail. However, this node also has two techniques that allow it to handle scenes that do not contain levels of detail: bounding box substitutes and drop culling. ·Ã¾;ž* "€€”‘€‚A€‚ÿWith drop culling enabled, a user can specify a size in pixels such that when the shape is less than this size, the shape is not rendered.sI„ľ®Æ¾* "€“€”‘€‚A€‚ÿIf bounding box substitutes are enabled and the ValueOrdering node calculates that the number of triangles that the object deserves is closer to 12 (the number of triangles in a bounding box) than to the minimum number of triangles the shape can draw, then the ValueOrdering node will draw a bounding box instead of the shape.à¶;žŽÈ¾* "€m€”‘€‚A€‚ÿIf decimate substitutes are enabled, then the ValueOrdering will apply a GlobalSimpifyAction to shapes that it determines need simplification. Sometimes a shape has so many triangles that neither the bounding box nor the shape is a satisfactory choice given the shape's calculated value. In this case, the ValueOrdering will create and use a simplified version. The simplification is done when Inventor has been idle for over a second.!÷®Æ¾¯É¾* "€ï€”‘€‚A€‚ÿIf low value culling is enabled, then the shape will not be rendered if the ValueOrdering node decides that its value in triangles is not even worth rendering a bounding box. This will happen if the decimation percentage value is set very low.᷎Ⱦ˾* "€o€”‘€‚A€‚ÿThe typical scenario where this node is useful is in CAD model assembly viewing, where all or most of the scene is visible, but lots of details may be so small that there is no point in drawing them until the user zooms in on them. Replacing such detail with its bounding box is adequate in many cases and does not have the disk and memory costs, along with the preprocessing time, associated with maintaining multiple levels of detail./ ¯É¾¿Ë¾& €€‚A€‚ÿFIELDSK˾ ̾2 4€2€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBooldropCullingg>¿Ë¾q̾) "€|€”‘€‚A€‚ÿEnables culling of shapes that are too small on the screen.P ̾Á̾2 4€<€T”A‚S~‚Aã`‡Ð〉ƒ‚ÿSoSFUInt32dropScreenAreaV-q̾;) "€Z€”‘€‚A€‚ÿSets threshold in pixels for drop culling.V$Á̾m;2 4€H€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoolboundingBoxSubstitutesšk;ξ/ .€Ö€”‘€‚A€€ €‚ÿEnables use of bounding boxes for shapes whose rendering value is too low to render the shape itself. W"m;^ξ5 :€D€T”A‚S~‚AãU×S选ƒ€ ‚ÿSoSFBooldecimateSubstitutesöÌξTϾ* "€™€”‘€‚A€‚ÿIf true, then this node will automatically decide when a decimated version of a shape needs to be created. It will apply an SoGlobalSimplifyAction, and use the results instead of the shape when needed.O^ξ£Ï¾2 4€:€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBoollowValueCullingg>TϾ¿) "€|€”‘€‚A€‚ÿEnables culling of shapes whose rendering value is £Ï¾¿€¾too low.P£Ï¾f¿2 4€<€T”A‚S~‚AãU×S选ƒ‚ÿSoSFBooladjustDecimation•l¿û¿) "€Ø€”‘€‚A€‚ÿAllows ValueOrdering node to adjust decimation percentage value depending on the shape's rendering value.8f¿3¿& €$€‚A€‚ÿACTION BEHAVIORk3û¿ž¿8 @€f€”‘€‚Aã©öø(€‰ãDRô‰€‚ÿSoGLRenderAction, SoGetPrimitiveCountActionœj3¿:¿2 4€Ô€”‘€‚A€€€€‚ÿUses value calculation to influence traversal. All other actions use standard SoSeparator traversal.<ž¿v¿& €,€‚A€‚ÿFILE FORMAT/DEFAULT<:¿²¿* $€$€P„7|‚€‚ÿValueOrdering {¿‡v¿q¿8 >€€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿdropCullingTRUEdropScreenArea5boundingBoxSubstitutesTRUEdecimateSubstitutesTRUElowValueCullingTRUEadjustDecimationTRUE}1 ²¿¢¿& €€‚€‚ÿSEE ALSO¶cq¿X¿S v€Æ€”‘€‚ãDRô€‰€㊆Ř€‰€ãjhšö€‰€㼿ai€‰‚ÿSoGetPrimitiveCountAction, SoLevelOfSimplification, SoOctreeOrdering, SoRenderList= ¢¿•¿1Ä}ö‚~ø•¿É¿UF¿SoVertexFlag4X¿É¿% €€ˆˆ€‚ÿSoVertexFlag*•¿ó¿# €€€‚ÿNAMEb<É¿U¿& €x€”‘€€‚ÿSoVertexFlag - class to mark/unmark vertices for beveling3󿈿# € €€‚ÿINHERITS FROMŽAU¿¿M j€‚€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVertexFlag2 ˆ¿H¿& €€€€ ‚ÿSYNOPSISrK¿º¿' €–€”‘€€‚‚ÿ#include Fields from class SoVertexFlag:p6H¿*¿: D€l€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32vertexMarkedSoMFInt32vertexUnmarkedL#º¿v¿) "€F€”‘€‚A€‚ÿMethods from class SoVertexFlag:g3*¿Ý¿4 8€f€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ÿSoVertexFlag()static SoTypegetClassTypeId()Nv¿+¿/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|Ý¿§ ¿n ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)+¿ÿ ¿/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eا ¿d ¿ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÿ ¿ì ¿@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Nd ¿: ¿/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þì ¿q¿Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4: ¿¥¿& €€‚A€‚ÿDESCRIPTIONÌq¿§¿6 :€™€”‘€‚A€€€€€‚ÿThis node specifies the current marked/unmarked vertices for all subsequent shapes. Marked vertices will be beveled by SoBevelAction; unmarked vertices will not. It is defined using int_32t arrays.œs¥¿O@¿) "€æ€”‘€‚A€‚ÿFor vertex-based shapes, the array elements are§¿O@¿X¿ simply indices of the selected vertices in the coordinate array.„O§¿Ó@¿5 :€ž€”‘€‚A€€€€€‚ÿFor SoCube and SoVRMLBox, the following vertices can be marked/unmarked:6O@¿ A¿2 4€ €”‘€‚A€†"€8‚ÿã­Ó@¿ìA¿6 :€[€”‘€‚A€€€€€‚ÿFor SoCone and SoVRMLCone, at least one value greater than or equal to 0 in the array marks/unmarks the top of the cone (which is the only vertex that can be marked).€K A¿lB¿5 :€–€”‘€‚A€€€€€‚ÿFor SoCylinder and SoVRMLCylinder, no vertex can be marked/unmarked./ ìA¿›B¿& €€‚A€‚ÿFIELDSp6lB¿ C¿: D€l€T”A‚S~‚Aã-Ï]€‰ƒ‚ã-Ï]‰ƒ‚ÿSoMFInt32vertexMarkedSoMFInt32vertexUnmarked’i›B¿C¿) "€Ò€”‘€‚A€‚ÿThese are the fields for marked/unmarked vertices. If a vertex appears in both arrays, it is unmarked.0 C¿ÍC¿& €€‚A€‚ÿMETHODS>C¿ D¿, (€$€T”A‚S~‚A€ƒ‚ÿSoVertexFlag()8ÍC¿CD¿) "€€”‘€‚A€‚ÿConstructor.U# D¿˜D¿2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*CD¿ëD¿) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<˜D¿'E¿& €,€‚A€‚ÿFILE FORMAT/DEFAULT9ëD¿`E¿* $€€P„7|‚€‚ÿVertexFlag {V''E¿¶E¿/ .€N€P„|‚€ƒ‚ƒ‚‚‚ÿvertexMarked-1vertexUnmarked-1}1 `E¿çE¿& €€‚€‚ÿSEE ALSOn3¶E¿UF¿; F€f€”‘€‚ãHê\F€‰ãGb-o‰ãµô˜o‰‚ÿSoBevelAction, SoBevelProperty, SoEdgeFlagAçE¿–F¿1€*V~y‰ù–F¿ÎF¿kÏ¿SoVertexProperty8UF¿ÎF¿% €&€ˆˆ€‚ÿSoVertexProperty*–F¿øF¿# €€€‚ÿNAMEP*ÎF¿HG¿& €T€”‘€€‚ÿSoVertexProperty - vertex property node3øF¿{G¿# € €€‚ÿINHERITS FROM’EHG¿ H¿M j€Š€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoVertexProperty2 {G¿?H¿& €€€€ ‚ÿSYNOPSISU/ H¿”H¿& €^€”‘€€‚ÿ#include œ/?H¿0K¿m ¨€_€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Binding{SoVertexProperty::OVERALLWhole object has same material/normalSoVertexProperty::PER_PARTOne material/normal for each part of objectSoVertexProperty::PER_PART_INDEXEDOne material/normal for each part, indexedSoVertexProperty::PER_FACEOne material/normal for each face of objectSoVertexProperty::PER_FACE_INDEXEDOne material/normal for each face, indexedSoVertexProperty::PER_VERTEXOne material/normal for each vertex of objectSoVertexProperty::PER_VERTEX_INDEXEDOne material/normal for each vertex, indexed}O&”H¿K¿) "€L€”‘€‚A€‚ÿFields from class SoVertexProperty:åŠ0K¿dL¿[ „€€T”A‚S~‚Aãòi`€‰ƒ‚ãòi`‰ƒ‚ãŽmç)‰ƒ‚ãóñi`‰ƒ‚ãØtW鉃‚ãØtW鉃‚ÿSoMFVec3fvertexSoMFVec3fnormalSoMFUInt32orderedRGBASoMFVec2ftexCoordSoSFEnumnormalBindingSoSFEnummaterialBindingP'K¿´L¿) "€N€”‘€‚A€‚ÿMethods from class SoVertexProperty:BdL¿öL¿, (€,€T”A‚S~‚A€ƒ‚ÿSoVertexProperty()N´L¿DM¿/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:¥/öL¿éN¿v º€_€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ãB-9‰ƒ‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)static SoTypegetClassTypeId()X)DM¿AO¿/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØéN¿²¿ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() AO¿²¿UF¿constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHAO¿:‚¿@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N²¿ˆ‚¿/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ:‚¿¿ƒ¿Y €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4ˆ‚¿óƒ¿& €€‚A€‚ÿDESCRIPTION]¿ƒ¿P†¿B R€7€”‘€‚A€€€€€€€€€‚ÿThis property node may be used to efficiently specify coordinates, normals, texture coordinates, colors, transparency values, material binding and normal binding for vertex-based shapes, i.e., shapes of class SoVertexShape. An SoVertexProperty node can be used as a child of a group node in a scene graph, in which case the properties it specifies are inherited by subsequent shape nodes in the graph. It can also be directly referenced as the VertexProperty SoSFField of a vertex-based shape, bypassing scene graph inheritance.çŸóƒ¿7ˆ¿H ^€?€”‘€‚A€€€€€€€€€€€‚ÿWhen directly referenced by a VertexProperty SoSFField of a vertex-based shape, the SoVertexProperty node is the most efficient way of specifying vertex-based shapes. Use of the directly referenced SoVertexProperty node results in significantly faster scene rendering than scene graph inheritance of vertex properties, provided all required vertex properties are specified in the SoVertexProperty node.p4P†¿§Š¿< F€i€”‘€‚A€€€€€€€‚ÿBecause the class SoVertexProperty is derived from SoNode, a vertex property node can be inserted as a child node in a scene graph. When inserted as a node in a scene graph, the SoVertexProperty node is traversed as any other property node and the properties it specifies are inherited by subsequent shape nodes in the scene graph. It specifies the current material and normal bindings, and can be used to specify the current 3D coordinates, the current normals, the current texture coordinates, the current diffuse colors, and the current transparencies.Ö7ˆ¿¹Œ¿< F€­€”‘€‚A€€€€€€€‚ÿAll multiple-valued fields in the SoVertexProperty node are optional. If a field is not present (i.e. if it has 0 values), then shapes that require the missing information are required to obtain it from the current traversal state. However, users are cautioned that, for optimal performance, the vertex property node should be referenced as the VertexProperty field of an SoVertexShape, and should specify in its fields all values required to render that shape.ËA§Š¿À¿Š  €”‘€‚A€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿThe various fields in a vertex property node can be used in place of corresponding fields in other property nodes, as follows: The vertex field contains 3D coordinates, as in the point field of an SoCoordinate3 node. The normal field contains normal vectors, as in the vector field of the SoNormal node. The orderedRGBA field contains packed colors in the hexadecimal format 0xrrggbbaa, where rr is the red value (between 00 and 0xFF hex) gg is the green value (between 00 and 0xFF hex) bb is the blue value (between 00 and 0xFF hex) aa is the alpha value (between 00 = transparent and 0xFF = opaque). The packed colors are equivalent to an SoPackedColor node, and provide v¹Œ¿À¿UF¿alues for both diffuse color and transparency. The texCoord field replaces the point field of the SoTextureCoordinate2 node.ä´¹Œ¿tÁ¿0 .€i€”‘€‚A€€€‚ÿIf the transparency type is SoGLRenderAction::SCREEN_DOOR, only the first transparency value will be used. With other transparency types, multiple transparencies will be used. ¹À¿Ã¿T v€s€”‘€‚A€€€€€€€€€€€€€€€‚ÿThe materialBinding field replaces the value field of the SoMaterialBinding node. The materialBinding field in a directly referenced SoVertexProperty node has no effect unless there is a nonempty orderedRGBA field, in which case the material binding specifies the assignment of diffuse colors and alpha values to the shape. The materialBinding field can take as value any of the material bindings supported by Open Inventor.í™tÁ¿nÅ¿T v€3€”‘€‚A€€€€€€€€€€€€€€€‚ÿThe normalBinding field replaces the value field of the SoNormalBinding node. The normalBinding field of a directly referenced SoVertexProperty node has no effect unless there is a nonempty normal field, in which case the normal binding specifies the assignment of normal vectors to the shape. The value of the normalBinding field can be any of the normal bindings supported by Open Inventor./ ÿſ& €€‚A€‚ÿFIELDSGnÅ¿äÅ¿2 4€*€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fvertexAÅ¿%Æ¿) "€0€”‘€‚A€‚ÿvertex coordinate(s).GäÅ¿lÆ¿2 4€*€T”A‚S~‚Aãòi`€‰ƒ‚ÿSoMFVec3fnormal=%Æ¿©Æ¿) "€(€”‘€‚A€‚ÿnormal vector(s).MlÆ¿öÆ¿2 4€6€T”A‚S~‚AãŽmç)€‰ƒ‚ÿSoMFUInt32orderedRGBAV-©Æ¿LÇ¿) "€Z€”‘€‚A€‚ÿpacked color(s), including transparencies.IöÆ¿•Ç¿2 4€.€T”A‚S~‚Aãóñi`€‰ƒ‚ÿSoMFVec2ftexCoordBLÇ¿×Ç¿) "€2€”‘€‚A€‚ÿtexture coordinate(s).M•Ç¿$È¿2 4€6€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnumnormalBinding;×Ç¿_È¿) "€$€”‘€‚A€‚ÿnormal binding.O$È¿®È¿2 4€:€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnummaterialBinding=_È¿ëÈ¿) "€(€”‘€‚A€‚ÿmaterial binding.0 ®È¿É¿& €€‚A€‚ÿMETHODSBëÈ¿]É¿, (€,€T”A‚S~‚A€ƒ‚ÿSoVertexProperty()c:É¿ÀÉ¿) "€t€”‘€‚A€‚ÿCreates an SoVertexProperty node with default settings.8]É¿øÉ¿& €$€‚A€‚ÿACTION BEHAVIORt9ÀÉ¿lÊ¿; F€r€”‘€‚Aã©öø(€‰ã³DfL‰ã#º…ö‰‚ÿSoGLRenderAction, SoCallbackAction, SoPickAction®„øÉ¿Ì¿* "€ €”‘€‚A€‚ÿWhen traversed in a scene graph, sets coordinates, normals, texture coordinates, diffuse colors, transparency, normal binding and material binding in current traversal state. If not traversed, has no effect on current traversal state associated with action. The normalBinding field has no effect if there are no normals. The materialBinding has no effect if there are no packed colors.NlÊ¿hÌ¿2 4€8€”‘€‚AããS¯+€‰€‚ÿSoGetBoundingBoxActionѤÌ¿9Í¿- (€I€”‘€‚A€€‚ÿWhen traversed in a scene graph, sets coordinates in current traversal state. If not traversed, has no effect on current traversal state associated with action.<hÌ¿uÍ¿& €,€‚A€‚ÿFILE FORMAT/DEFAULT=9Í¿²Í¿* $€&€P„7|‚€‚ÿVertexProperty {¬uuÍ¿^ο7 >€ê€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿvertex[ ]normal[ ]texCoord[ ]orderedRGBA[ ]materialBindingOVERALLnormalBindingPER_VERTEX_INDEXED}1 ²Í¿Î¿& €€‚€‚ÿSEE ALSOܬ^οkÏ¿0 .€Y€”‘€‚ã×ïþö€‰‚ÿSoIndexedTriangleStripSet SoIndexedFaceSet SoIndexedLineSet SoTriangleStripSet SoLineSet SoFaceSet SoPointSet SoQuadMesh SoVertexShape SoIndexedShape SoNonindexedShape> ο©Ï¿1üö‚~Ó5ú©Ï¿ÞÏ¿ÚGÀSoVertexShape5kÏ¿ÞÏ¿% € €ˆˆ€‚ÿSoVertexShape*©Ï¿À# €€€‚ÞÏ¿ÀkÏ¿ÿNAMEmGÞÏ¿À& €Ž€”‘€€‚ÿSoVertexShape - abstract base class for all vertex-based shape nodes3À´À# € €€‚ÿINHERITS FROM©PÀ]ÀY ‚€ €”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã9ÖEš€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape2 ´ÀÀ& €€€€ ‚ÿSYNOPSIStM]ÀÀ' €š€”‘€€‚‚ÿ#include Fields from class SoVertexShape:NÀQÀ2 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyM$ÀžÀ) "€H€”‘€‚A€‚ÿMethods from class SoVertexShape:U#QÀóÀ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()NžÀAÀ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|óÀ½Àn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)AÀÀ/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eؽÀzÀ 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÀÀ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)NzÀPÀ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞÀ‡ ÀY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4PÀ» À& €€‚A€‚ÿDESCRIPTIONc3‡ À À0 .€g€”‘€‚A€€€‚ÿThis node is the abstract base class for all vertex-based shape (geometry) nodes. It is used as a repository for convenience functions for subclasses and to provide a type identifier to make it easy to determine whether a shape is vertex-based. It contains one public field, the SoVertexProperty field.×­» Àõ À* "€[€”‘€‚A€‚ÿAll subclasses of this node draw objects constructed from vertices. If the vertexProperty field is non-null and there are coordinates in the associated vertex property node, then those coordinates are used. Otherwise the objects are drawn using the current coordinates in the state. The coordinates of the shape are transformed by the current transformation matrix and are drawn with the current light model and drawing style.¼’ À± À* "€%€”‘€‚A€‚ÿSubclasses that construct polygons from vertices may not render or pick correctly if any of their polygons are self-intersecting or non-planar.êÀõ À›À* "€€”‘€‚A€‚ÿAll vertex shape subclasses use the bounding box of the shape to determine default texture coordinates. The longest dimension of the bounding box defines the S coordinates, and the next longest defines the T coordinates. The value of the S coordinate ranges from 0 to 1, from one end of the bounding box to the other. The T coordinate ranges between 0 and the ratio of the second greatest dimension of the bounding box to the greatest dimension.7ݱ ÀÞAÀZ ‚€»€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿWhen a ver›ÀÞAÀkÏ¿tex-based shape is picked with an SoRayPickAction, a detail is always returned. If the shape is composed of faces (such as SoFaceSet or SoTriangleStripSet), an SoFaceDetail is returned. If the shape is composed of line segments (such as SoLineSet), an SoLineDetail is returned. If the shape is composed of points (such as SoPointSet), an SoPointDetail is returned. Note that the type of detail returned is not affected by the current drawing style.½›À›CÀ0 .€€”‘€‚A€€€‚ÿSimilarly, each class of vertex-based shape invokes appropriate callbacks if those callbacks are registered with the SoCallbackAction. Shapes made of faces invoke triangle callbacks for each generated triangle. (Faces may be triangulated to create these triangles.) Shapes made of line segments invoke line segment callbacks for each segment, and shapes made of points invoke point callbacks."ìÞAÀ½DÀ6 :€Ù€”‘€‚A€€€€€‚ÿThe subclass SoIndexedShape is a base class for vertex-based shapes that index into the current set of coordinates. The subclass SoNonIndexedShape is a base class for vertex-based shapes that use the current coordinates in order./ ›CÀìDÀ& €€‚A€‚ÿFIELDSN½DÀ:EÀ2 4€8€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodevertexPropertyAìDÀ{EÀ) "€0€”‘€‚A€‚ÿvertex property node.0 :EÀ«EÀ& €€‚A€‚ÿMETHODSU#{EÀFÀ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*«EÀSFÀ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.<FÀFÀ& €,€‚A€‚ÿFILE FORMAT/DEFAULT“jSFÀ"GÀ) "€Ô€”‘€‚A€‚ÿThis is an abstract class. See the reference page of a derived class for the format and default values.1 FÀSGÀ& €€‚A€‚ÿSEE ALSO‡@"GÀÚGÀG ^€€€”‘€‚Aã$‘³t€‰€ã5ÖfE€‰€ãmý¼€‰‚ÿSoIndexedShape, SoNonIndexedShape, SoVertexProperty< SGÀHÀ1³ •´…ûHÀIHÀèÈÀSoWWWAnchor3ÚGÀIHÀ% €€ˆˆ€‚ÿSoWWWAnchor*HÀsHÀ# €€€‚ÿNAME`:IHÀÓHÀ& €t€”‘€€‚ÿSoWWWAnchor - separator group node with a URL hyperlink3sHÀIÀ# € €€‚ÿINHERITS FROMávÓHÀçIÀk ¦€ì€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ã«]à—€‰€ãÍ\Y€‰€ãN=TŽ€‰€‚ÿSoBase > SoFieldContainer > SoNode > SoGroup > SoSeparator > SoLocateHighlight > SoWWWAnchor. IÀJÀ# €€€‚ÿSYNOPSISP*çIÀeJÀ& €T€”‘€€‚ÿ#include #ÙJÀˆKÀJ b€³€T”A‚S~‚A€ƒãXíʉ‚ƒƒ€€ƒ€€‚ÿtypedef voidSoWWWAnchorCB(const SbString &url,void *userData,SoWWWAnchor *node)enum Mapping{SoWWWAnchor::NONEDo not add information to the URLSoWWWAnchor::POINTAdd object-space coordinates to URL}J!eJÀÒKÀ) "€B€”‘€‚A€‚ÿFields from class SoWWWAnchor:~<ˆKÀPLÀB T€x€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ãü”ŒÔ‰ƒ‚ãØtW鉃‚ÿSoSFStringnameSoSFStringdescriptionSoSFEnummapX)ÒKÀ¨LÀ/ .€R€”‘€‚A€ãN=TŽ‰‚ÿFields from class SoLocateHighlight:w5PLÀMÀB T€j€T”A‚S~‚Aãð@I1€‰ƒ‚ãØtW鉃‚ãØtW鉃‚ÿSoSFColorcolorSoSFEnumstyleSoSFEnummodeR#¨LÀqMÀ/ .€F€”‘€‚A€ãÍ\Y‰‚ÿFields from class SoSeparator:³iMÀ$NÀJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingK"qMÀoNÀ) "€D€”‘€‚A€‚ÿMethods from class SoWWWAnchor:T $NÀÃOÀK d€€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒãXíʉ‚ãXíʉƒ‚ƒ‚ƒ‚ÿSoWWWAnchor()static SoTypegetClassTypeId()voidsetFullURLName(const SbString &url)const SbString &getFullURLName()static voidsetFetchURLCallBack(SoWWWAnchorCB *f,void *userData)static voidsetHighlightURLCallBack(SoWWWAnchorCB *f,void *userData)S$oNÀ"€À/ .€H€”‘€‚A€ãÍ\Y‰‚ÿMethods from ÃOÀ"€ÀÚGÀclass SoSeparator:|NÃOÀž€À. ,€œ€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidsetNumRenderCaches(int howMany)static intgetNumRenderCaches()O "€Àí€À/ .€@€”‘€‚A€ã«]à—‰‚ÿMethods from class SoGroup:õƒž€Àâ‚Àr ²€€T”A‚S~‚A€ƒã’n%9‰‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ƒ‚ƒ‚ƒã’n%9‰‚ƒ‚ƒã’n%9‰‚ƒã’n%9‰ã’n%9‰‚ÿvoidaddChild(SoNode *child)voidinsertChild(SoNode *child,int newChildIndex)SoNode *getChild(int index) constintfindChild(const SoNode *child) constintgetNumChildren() constvoidremoveChild(int index)voidremoveChild(SoNode *child)voidremoveAllChildren()voidreplaceChild(int index,SoNode *newChild)voidreplaceChild(SoNode *oldChild,SoNode *newChild)Ní€À0ƒÀ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|â‚À¬„Àn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)0ƒÀ…À/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eج„Ài‡À 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH…Àñ‡À@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)Ni‡À?ˆÀ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þñ‡Àv‰ÀY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4?ˆÀª‰À& €€‚A€‚ÿDESCRIPTION~Tv‰À(‹À* "€©€”‘€‚A€‚ÿThis node defines a separator group which has a URL (Universal Resource Locator) hyperlink. When clicked on, this node invokes an application callback to fetch the URL. The application may fetch the data itself, or call a World Wide Web browser like the HTML based Netscape Navigator or the VRML based WebSpace Navigator to load the URL./ ª‰ÀW‹À& €€‚A€‚ÿFIELDSF(‹À‹À2 4€(€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringnameÆœW‹ÀcŒÀ* "€9€”‘€‚A€‚ÿURL which the application will be called back to fetch when this node is activated by a left mouse click (e.g. "http://www.sgi.com/Technology/Inventor").M‹À°ŒÀ2 4€6€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringdescription¡xcŒÀQÀ) "€ð€”‘€‚A€‚ÿA description of the URL which may make more sense to users than the URL itself (e.g. "The Open Inventor Home Page").C°ŒÀ”À2 4€"€T”A‚S~‚AãØtW选ƒ‚ÿSoSFEnummap+QÀ¿À* "€€”‘€‚A€‚ÿSpecifies what additional information should be added to the end of the URL when passed back to the application for fetching. If set to POINT, then the x,y,z location of the object space intersection point when the mouse was clicked will be suffixed to the URL. Since the comma character does not transmit through some web browsers, it is written in hex form (e.g. if the intersection point is 17,4.5,1 the URL passed to the application callback would be "http://www.sgi.com/Technology/Inventor?17%2c4.5%2c1").0 ”À ÀÀ& €€‚A€‚ÿMETHODS¿À ÀÀÚGÀ=¿ÀIÀÀ, (€"€T”A‚S~‚A€ƒ‚ÿSoWWWAnchor()Y0 ÀÀ¢ÀÀ) "€`€”‘€‚A€‚ÿCreates an anchor node with default settings.U#IÀÀ÷ÀÀ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*¢ÀÀJÁÀ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.‹Q÷ÀÀÕÁÀ: D€¢€T”A‚S~‚A€ƒãXíʉ‚ãXíʉƒ‚ÿvoidsetFullURLName(const SbString &url)const SbString &getFullURLName()tJJÁÀIÃÀ* "€•€”‘€‚A€‚ÿIf the name field contains a relative URL (e.g. "foo.wrl" instead of "http://bogus.com/foo.wrl"), the anchor cannot resolve the URL reference. This method allows the application to tell the anchor what its full URL should be. getFullURLName() returns the fullURL set here, or if not set, returns the contents of the name field.qDÕÁÀºÃÀ- *€ˆ€T”A‚S~‚A€ƒ‚ÿstatic voidsetFetchURLCallBack(SoWWWAnchorCB *f,void *userData)Ê IÃÀ„ÄÀ* "€A€”‘€‚A€‚ÿApplication callbacks invoked when the mouse is clicked on an anchor so that the application can fetch the URL or call Netscape or WebSpace to fetch the URL.uHºÃÀùÄÀ- *€€T”A‚S~‚A€ƒ‚ÿstatic voidsetHighlightURLCallBack(SoWWWAnchorCB *f,void *userData)⸄ÄÀÛÅÀ* "€q€”‘€‚A€‚ÿApplication callbacks invoked when the mouse is moved over an anchor so that the app can provide feedback such as changing the cursor, or displaying the anchor description and name.8ùÄÀÆÀ& €$€‚A€‚ÿACTION BEHAVIORIÛÅÀ\ÆÀ1 2€0€T”A‚S~‚Aãàꀉ‚ÿSoHandleEventActionºÆÀÇÀ* "€!€”‘€‚A€‚ÿWhen the left mouse is clicked over a child of this anchor node, the application is called back to fetch the URL (see setFetchURLCallBack()).<\ÆÀRÇÀ& €,€‚A€‚ÿFILE FORMAT/DEFAULT8ÇÀŠÇÀ* $€€P„7|‚€‚ÿWWWAnchor {î®RÇÀxÈÀ@ N€]€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOmodeAUTOstyleEMISSIVEcolor0.3 0.3 0.3name""description""mapNONE}1 ŠÇÀ©ÈÀ& €€‚€‚ÿSEE ALSO?xÈÀèÈÀ/ .€ €”‘€‚ã` ½•€‰‚ÿSoWWWInline< ©ÈÀ$ÉÀ1Q'؃€ ±ü$ÉÀWÉÀ €ÁSoWWWInline3èÈÀWÉÀ% €€ˆˆ€‚ÿSoWWWInline*$ÉÀÉÀ# €€€‚ÿNAMEa;WÉÀâÉÀ& €v€”‘€€‚ÿSoWWWInline - node that refers to children through a URL3ÉÀÊÀ# € €€‚ÿINHERITS FROM@âÉÀ¢ÊÀM j€€€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoWWWInline2 ÊÀÔÊÀ& €€€€ ‚ÿSYNOPSISP*¢ÊÀ$ËÀ& €T€”‘€€‚ÿ#include 4ÔÊÀ±ÌÀY €€i€T”A‚S~‚A€ƒãXíʉã` ½•‰‚ƒ€ƒ€€ƒ€€ƒ€‚ÿtypedef voidSoWWWInlineFetchURLCB(const SbString &url,void *userData,SoWWWInline *node)enum BboxVisibility{SoWWWInline::NEVERDo not show bounding boxSoWWWInline::UNTIL_LOADEDShow bounding box (if specified) until data is loadedSoWWWInline::ALWAYSShow bounding box along with data}J!$ËÀûÌÀ) "€B€”‘€‚A€‚ÿFields from class SoWWWInline:¢X±ÌÀÍÀJ d€°€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ã”5‰ƒ‚ã”5‰ƒ‚ãYdb鉃‚ÿSoSFStringnameSoSFVec3fbboxCenterSoSFVec3fbboxSizeSoSFNodealternateRepK"ûÌÀèÍÀ) "€D€”‘€‚A€‚ÿMethods from class SoWWWInline:¦ÍÀÁt ¶€M€T”A‚S~‚A€ƒ‚ãB-9‰ƒ‚ƒãXíʉ‚ãXíʉƒ‚ã«]à—‰ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒ‚ÿSoWWWInline()static SoTypegetClassTypeId()voidsetFullURLName(const SbString &url)const SbString &getFullURLName()SoGroup *copyChildren() constvoidrequestURLData()SbBoolisURLDataRequested() constSbBoolisURLDataHere() constvoidcancelURLDataRequest()voidsetChildData(SoNode *urlData)SoNode *getChildData() conststatic voidsetFetchURLCallBack(SoWWWInlineFetchURLCB *f,void *userData)èÍÀÁèÈÀ6èÍÀ›ÁW |€m€T”A‚S~‚A€ƒ‚ƒ‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãB-9‰ƒ‚ÿstatic voidsetBoundingBoxVisibility(BboxVisibility b)static BboxVisibilitygetBoundingBoxVisibility()static voidsetBoundingBoxColor(SbColor &c)static const SbColor &getBoundingBoxColor()static voidsetReadAsSoFile(SbBool onOff)static SbBoolgetReadAsSoFile()static SoTypegetClassTypeId()NÁéÁ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|›ÁeÁn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)éÁ½Á/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:eØeÁ"Á 耱€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH½ÁªÁ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N"ÁøÁ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7ÞªÁ/ÁY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const4øÁcÁ& €€‚A€‚ÿDESCRIPTIONà¶/ÁC Á* "€m€”‘€‚A€‚ÿThis node refers to children through a URL (Universal Resource Locator). The application is responsible for actually fetching data from the URL for an SoWWWInline node to display./ cÁr Á& €€‚A€‚ÿFIELDSFC Á¸ Á2 4€(€T”A‚S~‚Aãü”ŒÔ€‰ƒ‚ÿSoSFStringname§~r Á_ Á) "€ü€”‘€‚A€‚ÿSpecifies the URL which the application should fetch as child data to this node (e.g. "http://bogus.com/homeWorld.wrl.gz").K¸ Áª Á2 4€2€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fbboxCenterrI_ Á Á) "€’€”‘€‚A€‚ÿDefines the center of the bounding box surrounding the URL child data.Iª Áe Á2 4€.€T”A‚S~‚Aã”5€‰ƒ‚ÿSoSFVec3fbboxSizepG ÁÕ Á) "€Ž€”‘€‚A€‚ÿDefines the size of the bounding box surrounding the URL child data.Le Á! Á2 4€4€T”A‚S~‚AãYdb选ƒ‚ÿSoSFNodealternateRepT*Õ Áu Á* "€U€”‘€‚A€‚ÿSpecifies child data that can be used instead of fetching data from the URL. On read, if this field is set and there is no fetch URL callback registered, the alternateRep will be used as the child data. Otherwise, it is the applications responsibility to set the child data (see setChildData()).0 ! Á¥ Á& €€‚A€‚ÿMETHODS=u Áâ Á, (€"€T”A‚S~‚A€ƒ‚ÿSoWWWInline()Y0¥ Á;Á) "€`€”‘€‚A€‚ÿCreates an inline node with default settings.U#â ÁÁ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*;ÁãÁ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.‹QÁnÁ: D€¢€T”A‚S~‚A€ƒãXíʉ‚ãXíʉƒ‚ÿvoidsetFullURLName(const SbString &url)const SbString &getFullURLName()|LãÁö@Á0 .€™€”‘€‚A€€€‚ÿIf the name field contains a relative URL (e.g. "foo.wrl" instead of "http://bogus.com/foo.wrl"),nÁö@ÁèÈÀ the inline cannot resolve the URL reference. This method allows the application to tell the anchor what its full URL should be. getFullURLName() returns the fullURL set here, or if not set, returns the contents of the name field.U#nÁKAÁ2 4€F€T”A‚S~‚Aã«]à—€‰ƒ‚ÿSoGroup *copyChildren() const¤uö@ÁïAÁ/ .€ê€”‘€‚A€€€‚ÿReturn a copy of the hidden children as a Group. The children are set by the application through setChildData().DKAÁ3BÁ, (€0€T”A‚S~‚A€ƒ‚ÿvoidrequestURLData()ñÁïAÁ$CÁ0 .€ƒ€”‘€‚A€€€‚ÿRequest that URL data be fetched. This will invoke the application callback to actually fetch the data and can be called before the inline does this for itself (see setFetchURLCallBack()).E3BÁ£CÁ: D€Š€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ÿSbBoolisURLDataRequested() constSbBoolisURLDataHere() const«|$CÁNDÁ/ .€ø€”‘€‚A€€€‚ÿReturn whether URL data has been requested and whether that data is here (i.e. whether setChildData() has been called.)J£CÁ˜DÁ, (€<€T”A‚S~‚A€ƒ‚ÿvoidcancelURLDataRequest()U,NDÁíDÁ) "€X€”‘€‚A€‚ÿCancel the active URL data fetch request.G˜DÁnEÁ: D€Ž€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvoidsetChildData(SoNode *urlData)SoNode *getChildData() const²ˆíDÁ FÁ* "€€”‘€‚A€‚ÿSet/get the child data the inline should display. The application should set child data after it has fetched data for an inline node.yLnEÁ™FÁ- *€˜€T”A‚S~‚A€ƒ‚ÿstatic voidsetFetchURLCallBack(SoWWWInlineFetchURLCB *f,void *userData)*ô FÁÃGÁ6 :€é€”‘€‚A€€€€€‚ÿApplication callbacks invoked when the inline needs its URL data fetched. This happens the first time the inline is rendered, or if it needs to compute a bounding box and the bboxSize field is not set, or when requestURLData() is called.˜j™FÁ[HÁ. ,€Ô€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidsetBoundingBoxVisibility(BboxVisibility b)static BboxVisibilitygetBoundingBoxVisibility()òÃGÁwIÁ* "€å€”‘€‚A€‚ÿThis allows the application to specify when bounding boxes are displayed. The bounding box can be rendered along with the children (ALWAYS), only until the child data is loaded (UNTIL_LOADED), or not at all (NEVER). Default is UNTIL_LOADED™_[HÁJÁ: D€¾€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ÿstatic voidsetBoundingBoxColor(SbColor &c)static const SbColor &getBoundingBoxColor()yPwIÁ‰JÁ) "€ €”‘€‚A€‚ÿThis allows the application to specify the color of bounding boxes displayed.ŠPJÁKÁ: D€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿstatic voidsetReadAsSoFile(SbBool onOff)static SbBoolgetReadAsSoFile() ׉JÁ LÁ6 :€¯€”‘€‚A€€€€€‚ÿSets/gets the ReadAsSoFile flag. If TRUE, assume that "url" points to other Open Inventor files on local filesystem, and load them directly as if this were an SoFile node instead of using WWWInlineFetchURLCB.8KÁXLÁ& €$€‚A€‚ÿACTION BEHAVIORH LÁ LÁ2 4€,€”‘€‚Aã©öø(€‰€‚ÿSoGLRenderAction°eXLÁPNÁK d€Ë€”‘€‚A€€€€€€€€€€€€‚ÿThis renders the child data if it has been set by the application. It will render a wireframe bounding box as specified by the bboxCenter and bboxSize fields, and the setting passed to setBoundingBoxVisibility(). If no fetch URL callback is set and the alternateRep is not NULL, the alternateRep will be rendered until child data has been set.< LÁŒNÁ& €,€‚A€‚ÿFILE FORMAT/DEFAULT8PNÁÄNÁ* $€€P„7|‚€‚ÿWWWInline {‚OŒNÁFOÁ3 6€ž€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿname""bboxCenter0 0 0bboxSize0 0 0alternateRepNULL}1 ÄNÁwOÁ& €€‚€‚ÿSEE ALSOWFOÁ €Á; F€8€”‘€‚ã\º˜O€‰€ãü9€‰‚ÿSoWWWAnchor, SoFilewOÁ €ÁèÈÀ6wOÁB€Á1[|¨§ýB€Áo€Á^ÈÁSoWin- €Áo€Á% €€ˆˆ€‚ÿSoWin*B€Á™€Á# €€€‚ÿNAMEb<o€Áû€Á& €x€”‘€€‚ÿSoWin - routines for Open Inventor/Windows compatibility.3™€Á.Á# € €€‚ÿINHERITS FROM2 û€Á`Á) "€€”‘€€€‚ÿSoWin2 .Á’Á& €€€€ ‚ÿSYNOPSISc<`ÁõÁ' €x€”‘€€‚‚ÿ#include Methods from class SoWin:Iû’Á>„ÁN j€÷€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚ÿstatic HWNDinit(const char *appName,const char *className = "Inventor")static voidinit(HWND topLevelWidget)static voidmainLoop()static voidnextEvent(UINT appContext,MSG *event)static BOOLEANdispatchEvent(MSG *event)static UINTgetAppContext()static UINT *getDisplay()static HWNDgetTopLevelWidget()static voidshow(HWND widget)static voidhide(HWND widget)static char *encodeString(char *s)static char *decodeString(char * xs)static voidsetWidgetSize(HWND w,const SbVec2s &size)r0õÁ°…ÁB R€a€T”A‚S~‚A€㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿstatic SbVec2sgetWidgetSize(HWND w)static HWNDgetShellWidget(HWND w)static voidcreateSimpleErrorDialog(HWND widget,char *dialogTitle,char *errorStr1,char *errorStr2 = NULL)static voidgetPopupArgs(UINT *d,int scr,PLONG args,int *n)static voidaddColormapToShell(HWND widget,HWND shell)4>„Áä…Á& €€‚A€‚ÿDESCRIPTION~H°…Áb‡Á6 :€‘€”‘€‚A€€€€€‚ÿThe SoWin class initializes Open Inventor for use with Microsoft Windows. SoWin::init() must be called in order for Open Inventor to work properly with Windows. SoWin::mainLoop() must be called in order for extension device messages to be passed to Open Inventor render areas. The other methods are convenience functions.»‹ä…ÁˆÁ0 .€€”‘€‚A€€€‚ÿRefer to the SoWinComponent reference pages for examples on how this class should be used when using Open Inventor Windows components.0 b‡ÁMˆÁ& €€‚A€‚ÿMETHODSyLˆÁƈÁ- *€˜€T”A‚S~‚A€ƒ‚ÿstatic HWNDinit(const char *appName,const char *className = "Inventor")ˆLMˆÁNŠÁ< F€™€”‘€‚A€€€€€€€‚ÿThis is called to initialize Open Inventor and Windows, and bind Open Inventor with Windows message handling so that Open Inventor sensors will work correctly. This returns the top level shell window handle. This method will call SoDB::init(), SoNodeKit::init(), and SoInteraction::init() and will create an initial window.T(ƈÁ¢ŠÁ, (€P€T”A‚S~‚A€ƒ‚ÿstatic voidinit(HWND topLevelWidget)I NŠÁë‹Á< F€€”‘€‚A€€€€€€€‚ÿThis alternate form of init allows the application to initialize Windows. The passed window handle should be the top level window handle returned from the Windows initialization. This method will call SoDB::init(), SoNodeKit::init(), and SoInteraction::init().E¢ŠÁ0ŒÁ, (€2€T”A‚S~‚A€ƒ‚ÿstatic voidmainLoop()·ë‹ÁçŒÁ6 :€€”‘€‚A€€€€€‚ÿThis retrieves and dispatches messages (loops forever). It calls SoWin::nextEvent() and SoWin::dispatchEvent() to do this.b50ŒÁIÁ- *€j€T”A‚S~‚A€ƒ‚ÿstatic voidnextEvent(UINT appContext,MSG *event) kçŒÁéÁ5 :€Ö€”‘€‚A€€€€€‚ÿGet the nextEvent by callingGetMessage. The appContext can be had by calling SoWin::getAppContext().W+IÁ@ŽÁ, (€V€T”A‚S~‚A€ƒ‚ÿstatic BOOLEANdispatchEvent(MSG *event)–méÁÖŽÁ) "€Ú€”‘€‚A€‚ÿDispatch the passed message to a handler. This returns TRUE if a handler was found, else it returns FALSE.g9@ŽÁ=Á. ,€r€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic UINTgetAppContext()static UINT *getDisplay()\3ÖŽÁ™Á) "€f€”‘€‚A€‚ÿThese methods are included for portability only.N"=Á ÀÁ, (€D€T”A‚S~‚A€ƒ‚ÿstatic HWNDgetTopLevelWidget()™Á ÀÁ €Á€W™ÁŒÀÁ) "€®€”‘€‚A€‚ÿReturn information based on the initial window handle returned by or passed to init.l> ÀÁøÀÁ. ,€|€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidshow(HWND widget)static voidhide(HWND widget)kBŒÀÁcÁÁ) "€„€”‘€‚A€‚ÿConvenience routines to show and hide the passed window handle.[2øÀÁ¾ÁÁ) "€d€”‘€‚A€‚ÿThis includes any children the window may have.zLcÁÁ8ÂÁ. ,€˜€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic char *encodeString(char *s)static char *decodeString(char * xs)\3¾ÁÁ”ÂÁ) "€f€”‘€‚A€‚ÿThese methods are included for portability only.b8ÂÁ1ÃÁ; F€Ä€T”A‚S~‚A€ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿstatic voidsetWidgetSize(HWND w,const SbVec2s &size)static SbVec2sgetWidgetSize(HWND w)i@”ÂÁšÃÁ) "€€€”‘€‚A€‚ÿConvenience routines to set/get the size of the given window.R&1ÃÁìÃÁ, (€L€”‘€‚H€ƒ€‚ÿstatic HWNDgetShellWidget(HWND w)꾚ÃÁÖÄÁ, &€}€”‘€‚H€€‚ÿConvenience routine which will return the topmost window containing the given window handle. The window handle tree is traversed up until the last window handle is found using GetParent.žoìÃÁtÅÁ/ .€Þ€T”A‚S~‚A€ƒ‚ÿstatic voidcreateSimpleErrorDialog(HWND widget,char *dialogTitle,char *errorStr1,char *errorStr2 = NULL)îÄÖÄÁbÆÁ* "€‰€”‘€‚A€‚ÿConvenience routine which brings a simple Windows error dialog box displaying the given error string(s) and window title. The OK button, which destroys the dialog, is the only button displayed.pAtÅÁÒÆÁ/ .€‚€T”A‚S~‚A€ƒ‚ÿstatic voidgetPopupArgs(UINT *d,int scr,PLONG args,int *n)Y0bÆÁ+ÇÁ) "€`€”‘€‚A€‚ÿThis method is included for portability only.g:ÒÆÁ’ÇÁ- *€t€T”A‚S~‚A€ƒ‚ÿstatic voidaddColormapToShell(HWND widget,HWND shell)Y0+ÇÁëÇÁ) "€`€”‘€‚A€‚ÿThis method is included for portability only.1 ’ÇÁÈÁ& €€‚A€‚ÿSEE ALSOBëÇÁ^ÈÁ/ .€&€”‘€‚Aã¹Ä L€‰‚ÿSoWinComponent?ÈÁÈÁ1¸¨§„þÈÁÓÈÁO ÂSoWinClipboard6^ÈÁÓÈÁ% €"€ˆˆ€‚ÿSoWinClipboard*ÈÁýÈÁ# €€€‚ÿNAME{UÓÈÁxÉÁ& €ª€”‘€€‚ÿSoWinClipboard - supports copy/paste for Open Inventor using the Windows clipboard3ýÈÁ«ÉÁ# € €€‚ÿINHERITS FROM;xÉÁæÉÁ) "€$€”‘€€€‚ÿSoWinClipboard2 «ÉÁÊÁ& €€€€ ‚ÿSYNOPSISQ+æÉÁiÊÁ& €V€”‘€€‚ÿ#include €MÊÁéÊÁ3 6€š€T”A‚S~‚A€ƒãç2ø¡‰‚ÿtypedef voidSoWinClipboardPasteCB(void *userData,SoPathList *pathList)N%iÊÁ7ËÁ) "€J€”‘€‚A€‚ÿMethods from class SoWinClipboard:z+éÊÁ±ÌÁO l€W€T”A‚S~‚A€ƒ‚ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰‚ƒ‚ÿSoWinClipboard(HWND w,int cbFormat = CF_TEXT)~SoWinClipboard()voidcopy(SoNode *node,time_t eventTime)voidcopy(SoPath *path,time_t eventTime)voidcopy(SoPathList *pathList,time_t eventTime)voidpaste(time_t eventTime,SoWinClipboardPasteCB *pasteDoneFunc,void *userData = NULL)47ËÁåÌÁ& €€‚A€‚ÿDESCRIPTIONðƱÌÁÕÍÁ* "€€”‘€‚A€‚ÿThis class manages data transfers for copy and paste to and from the Windows clipboard. Transfers may occur within the same window, from one window to another window, and from process to process.é¹åÌÁ¾ÎÁ0 .€s€”‘€‚A€€€‚ÿClipboard support is currently strictly text. The copy type cbFormat will be forced to CF_TEXT, no matter what, if anything, is specified in the second argument of the constructor.0 ÕÍÁîÎÁ& €€‚A€‚ÿMETHODStE¾ÎÁbÏÁ/ .€Š€T”A‚S~‚A€ƒ‚ƒ‚ÿSoWinClipboard(HWND w,int cbFormat = CF_TEXT)~SoWinClipboard()ê´îÎÁXÂ6 :€i€”‘€‚A€€€€€‚ÿConstructor and destructor. w is the window that will be used for the clipboard operations. cbFormatbÏÁXÂ^ÈÁ specifies the Windows clipboard format to be used for the data transfer.ÔŽbÏÁ,ÂF Z€€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰‚ÿvoidcopy(SoNode *node,time_t eventTime)voidcopy(SoPath *path,time_t eventTime)voidcopy(SoPathList *pathList,time_t eventTime))óXÂUÂ6 :€ç€”‘€‚A€€€€€‚ÿThis copies the passed scene graph object to the clipboard using the current clipboard format. The eventTime should be the time returned by the system routine time(), and can be used to insure synchronization of copy and paste requests.8,ÂÂ) "€€”‘€‚A€‚ÿFor example,?UÂÌÂ( €.€Ù€‚A€‚ÿ#include <ÂÂ( €(€Ù€‚A€‚ÿ#include 9ÌÂAÂ( €"€Ù€‚A€‚ÿ#include <...>L$ÂÂ( €H€Ù€‚H€ƒ‚ÿ...(necessary Inventor includes)BAÂÏÂ' €6€Ù€‚H€‚ÿvoid SomeFunc(some_args)+ÂúÂ' €€Ù€‚H€‚ÿ{dωÂ+ &€È€Ù€‚H€‚ƒ‚ƒ‚ÿHWND hwnd;// (window value gets set in normal Windows usage// or is passed in as an argument)-ú¶Â' € €Ù€‚H€‚ÿ...‹`‰ÂAÂ+ &€À€Ù€‚H€‚ƒ‚ƒ‚ÿSoNode *the_node// a node to copy to the clipboard// (will be incorporated in a pathlist)-¶ÂnÂ' € €Ù€‚H€‚ÿ...}TAÂëÂ) "€¨€Ù€‚H€‚ƒ‚ÿSoWinClipboard the_clipboard(hwnd);// CF_TEXT is forced as the clipboard format-nÂÂ' € €Ù€‚H€‚ÿ...xOëÂÂ) "€ž€Ù€‚H€‚ƒ‚ÿthe_clipboard.copy(the_node, time(NULL));// copy the node to the clipboard-½Â' € €Ù€‚H€‚ÿ...+ÂèÂ' €€Ù€‚H€‚ÿ}*½ÂÂ' €€Ù€‚H€‚ÿŠ\èÂœÂ. ,€¸€T”A‚S~‚A€ƒ‚ÿvoidpaste(time_t eventTime,SoWinClipboardPasteCB *pasteDoneFunc,void *userData = NULL),ðÂÈÂ< F€á€”‘€‚A€€€€€€€‚ÿThis requests data from the clipboard in the current clipboard format. When the data is retrieved, the pasteDoneFunc callback is invoked. The newly pasted data is passed as the callback function's pathList argument (an SoPathList).1 œÂùÂ& €€‚A€‚ÿSEE ALSOVÈÂO Â; F€6€”‘€‚Aã(ç –€‰€ãH€‰‚ÿSoSelection, SoWinEù” Â1:…ƒMˆ¯ÿ” ÂР¶IÂSoWinCollisionViewer<O ÂÐ Â% €.€ˆˆ€‚ÿSoWinCollisionViewer*” Âú Â# €€€‚ÿNAME{UÐ Âu Â& €ª€”‘€€‚ÿSoWinCollisionViewer - class to manage collisions between the camera and the scene3ú ¨ Â# € €€‚ÿINHERITS FROMAu Âé Â) "€0€”‘€€€‚ÿSoWinCollisionViewer2 ¨  Â& €€€€ ‚ÿSYNOPSIS]7é Âx Â& €n€”‘€€‚ÿ#include T Âù Â- *€¨€T”A‚S~‚A€ƒ‚ÿtypedef voidSoWinCollisionViewerCB(void* userData,SoWinCollisionViewer* viewer)S*x ÂL Â) "€T€”‘€‚A€‚ÿMethods from class SoWinCollisionViewer|Hù ÂÈ Â4 8€€T”A‚S~‚A€ƒãrPnÀ‰‚ƒ‚ÿSoWinCollisionViewer(SoWinViewer* viewer)~SoWinCollisionViewer()W#L  Â4 8€F€T”A‚S~„EAãrPnÀ€‰ƒ‚ÿSoWinViewer*getViewer() constÉtÈ ÂèÂU x€é€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ÿvoidsetDistance(float distance)floatgetDistance() constvoid setCollisionDetection(SbBool value = TRUE)SbBoolgetCollisionDetection() constvoid setZBufferOptimization(SbBool value = TRUE)SbBoolgetZBufferOptimization() constvoidaddCallback(SoWinCollisionViewerCB* cbk,void* ud = NULL)voidremoveCallback(SoWinCollisionViewerCB* cbk,void* ud = NULL)5 ÂÂ& €€‚A€‚ÿDESCRIPTION è¾èÂ@Â* "€}€”‘€‚A€‚ÿThis class is used to constrain a viewer, preventing the viewer's camera from colliding with the objects in the scene. It overrides the RenderCallback on the viewer that it's attached Â@ÂO Âto.~UÂ@Â) "€ª€”‘€‚A€‚ÿThe programmer can define the maximum distance between the camera and the objects.ã@¢AÂ0 .€Ç€”‘€‚A€€€‚ÿWhen Z-buffer optimization is enabled, the algorithm looks at the Z-buffer to see if there is an object in front of the camera when the user moves forward, and an SoIntersectionDetectionAction when the user moves backward.U&@Â÷AÂ/ .€L€”‘€‚A€€€‚ÿNOTE: This class is not a viewer.0 ¢AÂ'BÂ& €€‚A€‚ÿMETHODSa/÷AˆBÂ2 4€^€T”A‚S~‚A€ƒãrPnÀ‰‚ÿSoWinCollisionViewer(SoWinViewer* viewer)8'BÂÀBÂ) "€€”‘€‚A€‚ÿConstructor.GˆBÂCÂ, (€6€T”A‚S~‚A€ƒ‚ÿ~SoWinCollisionViewer()7ÀBÂ>CÂ) "€€”‘€‚A€‚ÿDestructor.U#C“CÂ2 4€F€T”A‚S~‚AãrPnÀ€‰ƒ‚ÿSoWinViewer*getViewer() constE>CÂØCÂ) "€8€”‘€‚A€‚ÿGets the original viewer.k=“CÂCDÂ. ,€z€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetDistance(float distance)floatgetDistance() constf=ØC©DÂ) "€z€”‘€‚A€‚ÿSets/gets the distance between the camera and the objects.•[CDÂ>EÂ: D€¶€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetCollisionDetection(SbBool value = TRUE)SbBoolgetCollisionDetection() constpG©D®EÂ) "€Ž€”‘€‚A€‚ÿSets/gets the collision detection active. The default value is TRUE.—]>EÂEFÂ: D€º€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetZBufferOptimization(SbBool value = TRUE)SbBoolgetZBufferOptimization() constrI®E·FÂ) "€’€”‘€‚A€‚ÿSets/gets the Z buffer optimization active. The default value is TRUE.h:EFÂGÂ. ,€t€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetNumSteps(int num_steps)intgetNumSteps() const­ƒ·FÂÌGÂ* "€€”‘€‚A€‚ÿSets/gets the number of steps to be used in the collision computation. The default number of steps is 4. The minimum value is 2.´ƒG€HÂ1 0€€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddCallback(SoWinCollisionViewerCB* cbk,void* ud = NULL)voidremoveCallback(SoWinCollisionViewerCB* cbk,void* ud = NULL)˜oÌGÂIÂ) "€Þ€”‘€‚A€‚ÿAdds/removes callbacks. These callbacks are called when a collision occurs between the camera and the scene.1 €HÂIIÂ& €€‚A€‚ÿSEE ALSOm8I¶IÂ5 :€p€”‘€‚Aã˃€‰ãæxpö‰‚ÿSoCollisionManager, SoIntersectionDetectionAction?IIÂõIÂ1K Mˆ¯߃…õIÂ+JÂÐÈÂSoWinComponent6¶IÂ+JÂ% €"€ˆˆ€‚ÿSoWinComponent*õIÂUJÂ# €€€‚ÿNAMEnH+JÂÃJÂ& €€”‘€€‚ÿSoWinComponent - abstract base class for all Open Inventor components3UJÂöJÂ# € €€‚ÿINHERITS FROM;ÃJÂ1KÂ) "€$€”‘€€€‚ÿSoWinComponent2 öJÂcKÂ& €€€€ ‚ÿSYNOPSISQ+1K´KÂ& €V€”‘€€‚ÿ#include {HcKÂ/LÂ3 6€€T”A‚S~‚A€ƒã¹Ä L‰‚ÿtypedef voidSoWinComponentCB(void *userData,SoWinComponent *comp)N%´KÂ}LÂ) "€J€”‘€‚A€‚ÿMethods from class SoWinComponent:5Ó/L²NÂb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬v}LÂ^OÂ6 <€ì€T”A‚S~‚A€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() const4²NÂ’OÂ& €€‚A€‚ÿDESCRIPTIONΞ^OÂlÂ0 .€=€”‘€‚A€€€‚ÿAbstract base class from which all Open Inventor Windows comp’OÂl¶IÂonents are derived. This class provides a basic C++ protocol for building and displaying Windows components. Components are used to encapsulate some function or task into a reusable package in the form of a Windows window handle that can be used in any Open Inventor Windows program. See the Example section on how to build and use SoWinComponents.0 ’OÂœÂ& €€‚A€‚ÿMETHODSX*lÂôÂ. ,€T€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()O&œÂC‚Â) "€L€”‘€‚A€‚ÿThis shows and hides the component.IôÂŒ‚Â2 4€.€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisVisible()ÚC‚ƒÂ* "€µ€”‘€‚A€‚ÿReturns TRUE if this component is mapped onto the screen. For a component to be visible, its window handle and the shell containing this window handle must be mapped (which is FALSE when the component is iconified).BŒ‚ÂÒ„Â0 .€%€”‘€‚A€€€‚ÿSubclasses should call this routine before redrawing anything and in any sensor trigger methods. Calling this will check the current visibility (which is really cheap) and invoke the visibility changed callbacks if the state changes (see addVisibilityChangeCallback()).EƒÂ…Â, (€2€T”A‚S~‚A€ƒ‚ÿHWNDgetWidget() constùÉ҄†Â0 .€“€”‘€‚A€€€‚ÿThis returns the base window handle for this component. If the component created its own shell, this returns the topmost window handle beneath the shell. Call getShellWidget() to obtain the shell.s?…ƒ†Â4 8€~€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ÿSbBoolisTopLevelShell() constHWNDgetShellWidget() const5 †Â¸‡Â* "€€”‘€‚A€‚ÿReturns TRUE if this component is a top level shell component (has its own window). Subclasses may use this to decide if they are allowed to resize themselves. Also method to return the shell window handle (NULL if the shell hasn't been created by this component).Kƒ†ÂˆÂ, (€>€T”A‚S~‚A€ƒ‚ÿHWNDgetParentWidget() constb9¸‡ÂeˆÂ) "€r€”‘€‚A€‚ÿReturn the parent window handle, be it a shell or not.t:ˆÂÙˆÂ: D€t€T”A‚S~‚A€ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvoidsetSize(const SbVec2s &size)SbVec2sgetSize()V-eˆÂ/‰Â) "€Z€”‘€‚A€‚ÿConvenience routines on the window handle.BÙˆÂq‰Â, (€,€T”A‚S~‚A€ƒ‚ÿUINT *getDisplay()Y0/‰ÂʉÂ) "€`€”‘€‚A€‚ÿThis method is included for portability only.rDq‰Â<ŠÂ. ,€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetTitle(const char *newTitle)const char *getTitle() constѧʉ ‹Â* "€O€”‘€‚A€‚ÿThe window title can be set for topLevelShell components or components which are directly under a shell window handle (i.e. components which have their own window).~P<ŠÂ‹‹Â. ,€ €T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() const\3 ‹Âç‹Â) "€f€”‘€‚A€‚ÿThese methods are included for portability only.vI‹‹Â]ŒÂ- *€’€T”A‚S~‚A€ƒ‚ÿvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)Aç‹ÂžÂ0 .€#€”‘€‚A€€€‚ÿSets which callback to call when the user closes this component (double click in the upper left corner) - by default hide() is called on this component, unless a callback is set to something other than NULL. A pointer to this class will be passed as the callback data.‘h]ŒÂ/ŽÂ) "€Ð€”‘€‚A€‚ÿNote: this callback is supplied because the user may wish to delete this component when it is closed.c1žÂ’ŽÂ2 4€b€T”A‚S~‚A€ã¹Ä L‰ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)Ìœ/ŽÂ^Â0 .€9€”‘€‚A€€€‚ÿThis returns the SoWinComponent for this window handle. If the window handle does not match that of any Open Inventor component, then NULL is returned.uG’ŽÂÓÂ. ,€Ž€T”A‚S~‚A€ƒ‚ƒ‚ÿconst char *getWidgetName() constconst char *getClassName() constÓ©^²ÀÂ* "€S€”‘€‚A€‚ÿRoÓ²À¶IÂutines which return the window handle name and the class name. The window handle name is passed to the build method. The class name is predefined by each component.0 ÓÂâÀÂ& €€‚A€‚ÿEXAMPLEþβÀÂàÁÂ0 .€€”‘€‚A€€€‚ÿThis example shows how an Open Inventor component can be built inside a program using the Windows window handle set. The example uses the SoWinExaminerViewer window handle to view some simple geometry.J"âÀÂ*ÂÂ( €D€Ù€‚A€‚ÿ#include M%àÁÂwÂÂ( €J€Ù€‚A€‚ÿ#include `8*ÂÂ×ÂÂ( €p€Ù€‚A€‚ÿ#include +wÂÂÃÂ( €€Ù€‚A€‚ÿF×ÂÂHÃÂ( €<€Ù€‚A€‚ÿvoid main(int, char **argv)+ÃÂsÃÂ( €€Ù€‚A€‚ÿe=HÃÂØÃÂ( €z€Ù€‚A€‚ÿ // Initialize Inventor and Windows, which must be doneU-sÃÂ-ÄÂ( €Z€Ù€‚A€‚ÿ // before any Inventor calls are made.T,ØÃÂÄÂ( €X€Ù€‚A€‚ÿ HWND myWindow = SoWin::init(argv[0]);+-ĬÄÂ( €€Ù€‚A€‚ÿZ2ÄÂÅÂ( €d€Ù€‚A€‚ÿ // create the viewer in the toplevel windowO'¬ÄÂUÅÂ( €N€Ù€‚A€‚ÿ // and set some scene to displayqIÅÂÆÅÂ( €’€Ù€‚A€‚ÿ SoWinExaminerViewer *myViewer = new SoWinExaminerViewer(myWindow);W/UÅÂÆÂ( €^€Ù€‚A€‚ÿ myViewer->setSceneGraph( new SoCone() );+ÆÅÂHÆÂ( €€Ù€‚A€‚ÿQ)Æ™ÆÂ( €R€Ù€‚A€‚ÿ // manage and map window on screen@HÆÂÙÆÂ( €0€Ù€‚A€‚ÿ myViewer->show();U-™ÆÂ.ÇÂ( €Z€Ù€‚A€‚ÿ SoWin::show(myWindow); // calls Show()+ÙÆÂYÇÂ( €€Ù€‚A€‚ÿ>.Ç—ÇÂ( €,€Ù€‚A€‚ÿ // Loop foreverAYÇÂØÇÂ( €2€Ù€‚A€‚ÿ SoWin::mainLoop();+—ÇÂÈÂ( €€Ù€‚A€‚ÿ1 ØÇÂ4ÈÂ& €€‚A€‚ÿSEE ALSOœIÈÂÐÈÂS v€’€”‘€‚AãH€‰€ãÿ3È€‰€ãrPnÀ€‰€ãHf˜7€‰‚ÿSoWin, SoWinRenderArea, SoWinViewer, SoWinMaterialEditorG4ÈÂÉÂ1œ(Â…„‡ÉÂUÉÂs€ÃSoWinConstrainedViewer>ÐÈÂUÉÂ% €2€ˆˆ€‚ÿSoWinConstrainedViewer*ÉÂÉÂ# €€€‚ÿNAMEŒfUÉ ÊÂ& €Ì€”‘€€‚ÿSoWinConstrainedViewer - base viewer class which adds camera constraints given a world up direction3ÉÂ>ÊÂ# € €€‚ÿINHERITS FROMç ÊÂ%ËÂf š€€”‘€ã¹Ä L€‰€ã-‹2‘€‰€ãÿ3È€‰€ãrPnÀ€‰€ã9€õ€‰€€€‚ÿSoWinComponent > SoWinGLWidget > SoWinRenderArea > SoWinViewer > SoWinFullViewer > SoWinConstrainedViewer2 >ÊÂWËÂ& €€€€ ‚ÿSYNOPSISf%ËÂäËÂ' €Ì€”‘€€‚‚ÿ#include Methods from class SoWinConstrainedViewer:ŒRWËÂpÌÂ: D€¤€T”A‚S~‚A€ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ÿvoidsetUpDirection(const SbVec3f &newUpDirection)SbVec3fgetUpDirection()W(äËÂÇÌÂ/ .€P€”‘€‚A€ã9€õ‰‚ÿMethods from class SoWinFullViewer:èŽp̯ÎÂZ ‚€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()voidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()HWNDgetAppPushButtonParent() constvoidaddAppPushButton(HWND newButton)voidinsertAppPushButton(HWND newButton,int index)voidremoveAppPushButton(HWND oldButton)intfindAppPushButton(HWND oldButton)intlengthAppPushButton()HWNDgetRenderAreaWidget()S$ÇÌÂÏÂ/ .€H€”‘€‚A€ãrPnÀ‰‚ÿMethods from class SoWinViewer:[Õ¯ÎÂiÆ Ú€«€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒãrPnÀ‰ãrPnÀ‰‚ãrPnÀ‰ƒãrPnÀ‰‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetÏÂiÃÐÈÂCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoWinViewer::DrawType type,SoWinViewer::DrawStyle style)SoWinViewer::DrawStylegetDrawStyle(SoWinViewer::DrawType type)—ÏÂ{Ã{ Ä€/€T”A‚S~‚A€ƒãrPnÀ‰‚ãrPnÀ‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBufferingType(SoWinViewer::BufferType type)SoWinViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual voidsetCursorEnabled(SbBool onOrOff) SbBoolisCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()!ÐiÃœÃQ p€¡€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetStereoOffset(float dist)floatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoWinViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidcopyView(time_t eventTime)"Í{þÃU x€›€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidpasteView(time_t eventTime)voidsetDecimationStrategy(DecimationStrategy strategy)DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal)int32_tgetGoalNumberOfTriangles()voidsetGoalFramesPerSecond(float goal)floatgetGoalFramesPerSecond()voidsetFixedPercentage(float percent)floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff)SbBoolisFullRenderingWhenStill()SbBoolisStillNow() Þ”œÃœ ÃJ b€)€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚€ƒƒ€‚€ƒƒ€‚ÿvoidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData)voidsetNumSamples(int numFrames)intgetNumSamples() void setDecimationPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL)float getCurrentDecimationPercentage()voidsetCursorStyle( SoWinViewer::CursorStyle style )[Win32 only]SoWinViewer::CursorStylegetCursorStyle()[Win32 only]W(¾Ãó Ã/ .€P€”‘€‚A€ãÿ3ȉ‚ÿMethods from class SoWinRenderArea:&µœ à Ãq °€k€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãÊÌø!‰‚ƒãÊÌø!‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoWinDevice *)voidunregisterDevice(SoWinDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «ó Ã%Ãa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤ ÃI@Ãt ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOve%ÃI@ÃÐÈÂrlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)7Û%ÀBÃ\ †€·€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoWinRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºWI@Ã:DÃc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constU&€BÃDÃ/ .€L€”‘€‚A€ã-‹2‘‰‚ÿMethods from class SoWinGLWidget:6×:DÃÅFÃ_ Œ€¯€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()HWNDgetNormalWindow()HWNDgetOverlayWindow()HGLRCgetNormalContext()HGLRCgetOverlayContext()HWNDgetNormalWidget()HWNDgetOverlayWidget()virtual voidsetNormalVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getNormalVisual()virtual voidsetOverlayVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getOverlayVisual()÷„DüHÃs ´€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag)SbBoolisDrawToFrontBufferEnable() constvoidsetCursor(Cursor newCursor) [Win32 only]CursorgetCursor() [Win32 only]HDCgetNormalDC() [Win32 only]HDCgetOverlayDC() [Win32 only]voidsetStealFocus(SbBool onOrOff) [Win32 only]virtual voidsetPixelFormat(int format) [Win32 only]intgetPixelFormat() [Win32 only]V'ÅFÃIÃ/ .€N€”‘€‚A€ã¹Ä L‰‚ÿMethods from class SoWinComponent:5Ó¼HÃGKÃb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬vIÃóKÃ6 <€ì€T”A‚S~‚A€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() const4GKÃ'LÃ& €€‚A€‚ÿDESCRIPTIONd.óKËMÃ6 :€]€”‘€‚A€€€€€‚ÿThis is a base class for the SoWinWalkViewer and SoWinFlyViewer component viewers. This class adds methods and convenience routines available to subclasses to constrain the camera given a world up direction. This prevents the camera from looking upside down. By default the +Y direction is used.0 'LûMÃ& €€‚A€‚ÿMETHODSŒR‹MÃGNÃ: D€¤€T”A‚S~‚A€ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ÿvoidsetUpDirection(const SbVec3f &newUpDirection)SbVec3fgetUpDirection() ã»MÃTOÃ* "€Ç€”‘€‚A€‚ÿSpecifies the upward direction of the viewer. This up direction is used by the viewers to constrain the camera when tilting up/down, and also used when rotating the camera right/left. The default is the +Y (0,1,0) direction.1 GNÃ…OÃ& €€‚A€‚ÿSEE ALSOâwTOÃs€Ãk ¦€î€”‘€‚Aã9€õ€‰€ãrPnÀ€‰€ã¹Ä L€‰€ãÿ3È€‰€ã7—ìg€‰€ãm£óh€‰‚ÿSoWinFullViewe…OÃs€ÃÐÈÂr, SoWinViewer, SoWinComponent, SoWinRenderArea, SoWinWalkViewer, SoWinFlyViewer< …Oï€Ã1Р߃…R‡¯€Ãâ€Ã‹ÃSoWinDevice3s€Ãâ€Ã% €€ˆˆ€‚ÿSoWinDevice*¯€Ã Ã# €€€‚ÿNAMEzNâ€Ã†Ã, (€œ€”‘€€€€‚ÿSoWinDevice - abstract base class device for use with the SoWinRenderArea7 ýÃ& €"€€€ ‚ÿINHERITS FROM8†ÃõÃ) "€€”‘€€€‚ÿSoWinDevice2 ½Ã'‚Ã& €€€€ ‚ÿSYNOPSISwPõÞ‚Ã' € €”‘€€‚‚ÿ#include Methods from class SoWinDevice:N'‚ÃìƒÃL f€€T”A‚S~‚A€ƒ‚ƒ‚ã2™|—‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvirtual voidenable(HWND w,FARPROC f,PVOID data,HWND win = NULL)virtual voiddisable(HWND w,FARPROC f,PVOID data)virtual const SoEvent *translateEvent(MSG *xevent)voidsetWindowSize(const SbVec2s &size)const SbVec2s &getWindowSize() const4ž‚à „Ã& €€‚A€‚ÿDESCRIPTIONäìƒÃ4…Ã0 .€É€”‘€‚A€€€‚ÿThis is the abstract base class for devices in the Open Inventor Windows component and utility library. When a device is registered with an SoWinRenderArea, the device is able to generate messages in the render area window.0 „Ãd…Ã& €€‚A€‚ÿMETHODS­z4…ÆÃ3 6€ô€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidenable(HWND w,FARPROC f,PVOID data,HWND win = NULL)virtual voiddisable(HWND w,FARPROC f,PVOID data)Êd…ÇÃ< F€•€”‘€‚A€€€€€€€‚ÿEnable and disable the device for the passed window handle. When enabled, the callback function f will be invoked when messages occur in the window. data is the clientData which will be passed.j8†Ã‡Ã2 4€p€T”A‚S~‚A€ã2™|—‰ƒ‚ÿvirtual const SoEvent *translateEvent(MSG *xevent)¹‰‡Ã:ˆÃ0 .€€”‘€‚A€€€‚ÿThis attempts to convert the passed message into an SoEvent. If the message was not generated by this device, then NULL is returned.ŽT‡ÃȈÃ: D€¨€T”A‚S~‚A€ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvoidsetWindowSize(const SbVec2s &size)const SbVec2s &getWindowSize() const Ú:ˆÃÒŠÃ0 .€µ€”‘€‚A€€€‚ÿSet and get the size of the window this device is registered for. This allows the device to correctly convert position information from Windows coordinates (origin at top left) to Open Inventor window coordinates (origin at bottom left). (SoWinRenderArea will automatically call this method for each device registered on it whenever the window size changes.) Note: Setting the window size only affects the size as perceived by the device and not the actual window size.1 ȈËÃ& €€‚A€‚ÿSEE ALSO~7ҊËÃG ^€n€”‘€‚Aã ³@8€‰€ã“âyz€‰€ãÿ3È€‰‚ÿSoWinMouse, SoWinKeyboard, SoWinRenderAreaL‹ÃÍ‹Ã1!‡º‰‡Í‹ÃŒÃiÎÃSoWinDirectionalLightEditorC‹ÃŒÃ% €<€ˆˆ€‚ÿSoWinDirectionalLightEditor*Í‹Ã:ŒÃ# €€€‚ÿNAMEoIŒÃ©ŒÃ& €’€”‘€€‚ÿSoWinDirectionalLightEditor - component for editing directional lights3:ŒÃÜŒÃ# € €€‚ÿINHERITS FROMi4©ŒÃEÃ5 :€h€”‘€ã¹Ä L€‰€€€‚ÿSoWinComponent > SoWinDirectionalLightEditor2 ÜŒÃwÃ& €€€€ ‚ÿSYNOPSIS^8EÃÕÃ& €p€”‘€€‚ÿ#include “`wÃhŽÃ3 6€À€T”A‚S~‚A€ƒãÀú‰‚ÿtypedef voidSoWinDirectionalLightEditorCB(void *userData,const SoDirectionalLight *light)[2ÕÃÃŽÃ) "€d€”‘€‚A€‚ÿMethods from class SoWinDirectionalLightEditor:¹hŽÃßÀÃW |€s€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ƒãMy'9‰‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãÀú‰‚ÿSoWinDirectionalLightEditor(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoWinDirectionalLightEditor()voidattach(SoPath *pathToLight)voiddetach()SbBoolisAttached()voidaddLightChanÃŽÃßÀËÃgedCallback(SoWinDirectionalLightEditorCB *f,void *userData = NULL)voidremoveLightChangedCallback(SoWinDirectionalLightEditorCB *f,void *userData = NULL)voidsetLight(const SoDirectionalLight &newLight)b0ÃŽÃAÁÃ2 4€`€T”A‚S~‚A€ãÀú‰ƒ‚ÿconst SoDirectionalLight &getLight() constV'ßÀ×ÁÃ/ .€N€”‘€‚A€ã¹Ä L‰‚ÿMethods from class SoWinComponent:5ÓAÁÃÌÃÃb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬v—ÁÃxÄÃ6 <€ì€T”A‚S~‚A€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() const4ÌÃìÄÃ& €€‚A€‚ÿDESCRIPTIONóÃxÄßÇÃ0 .€‡€”‘€‚A€€€‚ÿThis class is used to edit an SoDirectionalLight node (color, intensity, and direction are changed). In addition to directly editing directional light nodes, the editor can also be used with callbacks which will be called whenever the light is changed. The component consists of a render area and a value slider in the main window, with controls to display a color picker. In the render area there appears a sphere representing the world, and a directional light manipulator representing the direction of the light. Picking on the manipulator and moving the mouse provides direct manipulation of the light direction. The color picker is used to edit the color, and the value slider edits the intensity.Õ«¬ÄÃtÈÃ* "€W€”‘€‚A€‚ÿThe editor can currently be attached to only one light at a time. Attaching to two different lights will automatically detach the first one before attaching the second.0 ŸÇäÈÃ& €€‚A€‚ÿMETHODSÆtÈÃjÉÃ7 <€€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ÿSoWinDirectionalLightEditor(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoWinDirectionalLightEditor()G¤ÈñÉÃ) "€<€”‘€‚A€‚ÿConstructor and destructor.g3jÉÃÊÃ4 8€f€T”A‚S~‚A€ƒãMy'9‰‚ƒ‚ÿvoidattach(SoPath *pathToLight)voiddetach()°†±ÉÃÈÊÃ* "€ €”‘€‚A€‚ÿAttach/detach the editor to/from a directional light. When attached, changes made in the editor directly affect the attached light.JÊÃËÃ2 4€0€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisAttached()S*ÈÊÃeËÃ) "€T€”‘€‚A€‚ÿReturns TRUE if the editor is attached.â±ËÃGÌÃ1 0€c€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddLightChangedCallback(SoWinDirectionalLightEditorCB *f,void *userData = NULL)voidremoveLightChangedCallback(SoWinDirectionalLightEditorCB *f,void *userData = NULL)’ieËÃÙÌÃ) "€Ò€”‘€‚A€‚ÿAdditional way of using the directional light editor, by registering a callback and setting the light.–bGÌÃoÍÃ4 8€Ä€T”A‚S~‚A€ƒ‚ãÀú‰ƒ‚ÿvoidsetLight(const SoDirectionalLight &newLight)const SoDirectionalLight &getLight() constc:ÙÌÃÒÍÃ) "€t€”‘€‚A€‚ÿSet new light values, and get the current light values.1 oÍÃÎÃ& €€‚A€‚ÿSEE ALSOf+ÒÍÃiÎÃ; F€V€”‘€‚Aã¹Ä L€‰€ãÀú€‰‚ÿSoWinComponent, SoDirectionalLightDÎíÎÃ1c4R‡ ­ÎÃèÎÃçÁÄSoWinExaminerViewer;iÎÃèÎÃ% €,€ˆˆ€‚ÿSoWinExaminerViewer*­ÎÃÏÃ# €€€‚ÿNAMEYèÎÑÏÃ& €²€”‘€€‚ÿSoWinExaminerViewer - viewer component which uses a virtual trackball to view the data3ÏÃÄÏÃ# € €€‚ÿINHERITS FROMã~‘ÏóÄe š€ü€”‘€ã¹Ä L€‰€ã-‹2‘€‰€ãÿÄÏóÄiÎÃ3È€‰€ãrPnÀ€‰€ã9€õ€‰€€€‚ÿSoWinComponent > SoWinGLWidget > SoWinRenderArea > SoWinViewer > SoWinFullViewer > SoWinExaminerViewer2 ÄÏÃåÄ& €€€€ ‚ÿSYNOPSIS‡`³ÄlÄ' €À€”‘€€‚‚ÿ#include Methods from class SoWinExaminerViewer:©åÄ~Äi  €S€T”A‚S~‚A€ƒã‘¶p6‰ã9€õ‰ãrPnÀ‰‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSoWinExaminerViewer(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoWinFullViewer::BuildFlag flag = BUILD_ALL,SoWinViewer::Type type = BROWSER)~SoWinExaminerViewer()voidsetFeedbackVisibility(SbBool onOrOff)SbBoolisFeedbackVisible() constvoidsetFeedbackSize(int newSize)intgetFeedbackSize() constvoidsetAnimationEnabled(SbBool onOrOff)SbBoolisAnimationEnabled()b.lÄàÄ4 8€\€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚ÿvoidstopAnimating()SbBoolisAnimating()W(~Ä7Ä/ .€P€”‘€‚A€ã9€õ‰‚ÿMethods from class SoWinFullViewer:èŽàÄÄZ ‚€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()voidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()HWNDgetAppPushButtonParent() constvoidaddAppPushButton(HWND newButton)voidinsertAppPushButton(HWND newButton,int index)voidremoveAppPushButton(HWND oldButton)intfindAppPushButton(HWND oldButton)intlengthAppPushButton()HWNDgetRenderAreaWidget()S$7ÄrÄ/ .€H€”‘€‚A€ãrPnÀ‰‚ÿMethods from class SoWinViewer:[ÕÄÍĆ Ú€«€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒãrPnÀ‰ãrPnÀ‰‚ãrPnÀ‰ƒãrPnÀ‰‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoWinViewer::DrawType type,SoWinViewer::DrawStyle style)SoWinViewer::DrawStylegetDrawStyle(SoWinViewer::DrawType type)—rÄß Ä{ Ä€/€T”A‚S~‚A€ƒãrPnÀ‰‚ãrPnÀ‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBufferingType(SoWinViewer::BufferType type)SoWinViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual voidsetCursorEnabled(SbBool onOrOff) SbBoolisCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()!ÐÍÄ ÄQ p€¡€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetStereoOffset(float dist)floatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoWinViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidcopyView(time_t eventTime)"Íß Ä"ÄU x€›€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidpasteView(time_t eventTime)voidsetDecimationStrategy(DecimationStrategy strategy)DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal)int32_tgetGoalNumberOfTriangles()voidsetGoalFramesPerSecond(float goal)floatgetGoalFramesPerSecond()voidsetFixedPercentage(float percent)floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff)SbBoolisFullRenderingWhenStill()SbBoolisStillNow() Þ” Ä AÄJ b€)€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚€ƒƒ€‚€ƒƒ€‚ÿvoidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData)voidsetNumSamples(int numFrames)intgetNumSamples() void setDecimati"Ä AÄiÎÃonPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL)float getCurrentDecimationPercentage()voidsetCursorStyle( SoWinViewer::CursorStyle style )[Win32 only]SoWinViewer::CursorStylegetCursorStyle()[Win32 only]W("ÄcAÄ/ .€P€”‘€‚A€ãÿ3ȉ‚ÿMethods from class SoWinRenderArea:&µ AĉCÄq °€k€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãÊÌø!‰‚ƒãÊÌø!‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoWinDevice *)voidunregisterDevice(SoWinDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «cAÄ•EÄa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤‰CÄ­GÄt ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)7Û•EÄäIÄ\ †€·€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoWinRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºW­GÄžKÄc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constU&äIÄóKÄ/ .€L€”‘€‚A€ã-‹2‘‰‚ÿMethods from class SoWinGLWidget:6מKÄ)NÄ_ Œ€¯€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()HWNDgetNormalWindow()HWNDgetOverlayWindow()HGLRCgetNormalContext()HGLRCgetOverlayContext()HWNDgetNormalWidget()HWNDgetOverlayWidget()virtual voidsetNormalVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getNormalVisual()virtual voidsetOverlayVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getOverlayVisual()÷„óKÄ,€Äs ´€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag)SbBoolisDrawToFrontBufferEnable() constvoidsetCursor(Cursor newCursor) [Win32 only]CursorgetCursor() [Win32 only]HDCgetNormalDC() [Win32 only]HDCgetOverlayDC() [Win32 only]voidsetStealFocus(SbBool onOrOff) [Win32 only]virtual voidsetPixelFormat(int format) [Win32 only]int)NÄ,€ÄiÎÃgetPixelFormat() [Win32 only]V')NÄ‚€Ä/ .€N€”‘€‚A€ã¹Ä L‰‚ÿMethods from class SoWinComponent:5Ó,€Ä·‚Äb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬v‚€ÄcƒÄ6 <€ì€T”A‚S~‚A€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() const4·‚Ä—ƒÄ& €€‚A€‚ÿDESCRIPTIONŠZcƒÄ!†Ä0 .€µ€”‘€‚A€€€‚ÿThe Examiner viewer component allows you to rotate the view around a point of interest using a virtual trackball. The viewer uses the camera focalDistance field to figure out the point of rotation, which is usually set to be at the center of the scene. In addition to allowing you to rotate the camera around the point of interest, this viewer also allows you to translate the camera in the viewer plane, as well as dolly (move forward and backward) to get closer to or further away from the point of interest. The viewer also supports seek to quickly move the camera to a desired object or point.0 —ƒÄQ†Ä& €€‚A€‚ÿMETHODSÒ!†Äh‡ÄE X€¥€T”A‚S~‚A€ƒã‘¶p6‰ã9€õ‰ãrPnÀ‰‚ƒ‚ÿSoWinExaminerViewer(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoWinFullViewer::BuildFlag flag = BUILD_ALL,SoWinViewer::Type type = BROWSER)~SoWinExaminerViewer()Æ–Q†Ä.ˆÄ0 .€-€”‘€‚A€€€‚ÿConstructor and destructor which specifies the viewer type. Please refer to the SoWinViewer reference page for a description of the viewer types.ŒRh‡ÄºˆÄ: D€¤€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetFeedbackVisibility(SbBool onOrOff)SbBoolisFeedbackVisible() constg.ˆÄJ‰Ä) "€Î€”‘€‚A€‚ÿShow/Hide the point of rotation feedback, which only appears while in viewing mode (default in off).n@ºˆÄ¸‰Ä. ,€€€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetFeedbackSize(int newSize)intgetFeedbackSize() constsJJ‰Ä+ŠÄ) "€”€”‘€‚A€‚ÿSet/get the point of rotation feedback size in pixels (default 20 pix).…K¸‰Ä°ŠÄ: D€–€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetAnimationEnabled(SbBool onOrOff)SbBoolisAnimationEnabled()}T+ŠÄ-‹Ä) "€¨€”‘€‚A€‚ÿEnable/disable the spinning animation feature of the viewer (enabled by default).b.°ŠÄ‹Ä4 8€\€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚ÿvoidstopAnimating()SbBoolisAnimating()V-‹ÄŒÄ) "€¬€”‘€‚A€‚ÿStop animation, if it is occurring, and query if the viewer is currently animating..‹Ä<ŒÄ& €€‚A€‚ÿUSAGEFŒÄ‚ŒÄ) "€:€”‘€‚A€‚ÿ(For 3-button mouse only.)Y-<ŒÄÛŒÄ, (€Z€”‘€‚A€€‚ÿLeft Mouse: Rotate the virtual trackball.tG‚ŒÄOÄ- *€Ž€”‘€‚A€€‚ÿMiddle Mouse orCtrl + Left Mouse: Translate up, down, left, right. sÛŒÄïÄ- *€æ€”‘€‚A€€‚ÿCtrl + Middle Mouse orLeft + Middle Mouse: Dolly in and out (gets closer to and further away from the object).«OÄšŽÄ, (€þ€”‘€‚A€€‚ÿ + Left Mouse: Alternative to the Seek button. Press (but do not hold down) the key, then click on a target object. Q%ïÄëŽÄ, (€J€”‘€‚A€€‚ÿRight Mouse: Open the popup menu.a1šŽÄXÀÄ0 .€c€”‘€‚¥€€€‚ÿALT: (Win32) When the viewer is in selection (a.k.a. pick) mode, pressing and holding the ALT key temporarily switches the viewer to viewing mode. When the ALT key is released, the viewer returns to selection mode. Note: If anyëŽÄXÀÄiÎà of the mouse buttons are currently depressed, the ALT key has no effect.5 ëŽÄÀÄ) "€€‚¥€€ ‚ÿSEE ALSOZÖXÀÄçÁÄ„ Ö€­€”‘€‚¥ãè;€‰€€ã9€õ‰€ãrPnÀ€‰€ã¹Ä L€‰€ãÿ3È€‰€ã7—ìg€‰€ãm£óh€‰€ãîeà€‰‚ÿExaminer Viewer (illustration and additional info on mouse buttons), SoWinFullViewer, SoWinViewer, SoWinComponent, SoWinRenderArea, SoWinWalkViewer, SoWinFlyViewer, SoWinPlaneViewer?ÀÄ&ÂÄ1 1º‰‡â‹&ÂÄ\ÂÄ‚ÅSoWinFlyViewer6çÁÄ\ÂÄ% €"€ˆˆ€‚ÿSoWinFlyViewer*&ÂĆÂÄ# €€€‚ÿNAME}W\ÂÄÃÄ& €®€”‘€€‚ÿSoWinFlyViewer - viewer component for flying through space, with a constant world up3†ÂÄ6ÃÄ# € €€‚ÿINHERITS FROM–ÃÄ>ÄÄr ²€-€”‘€ã¹Ä L€‰€ã-‹2‘€‰€ãÿ3È€‰€ãrPnÀ€‰€ã9€õ€‰€ãx-"€‰€€€‚ÿSoWinComponent > SoWinGLWidget > SoWinRenderArea > SoWinViewer > SoWinFullViewer > SoWinConstrainedViewer > SoWinFlyViewer2 6ÃÄpÄÄ& €€€€ ‚ÿSYNOPSIS}V>ÄÄíÄÄ' €¬€”‘€€‚‚ÿ#include Methods from class SoWinFlyViewer: ÈpÄÄúÅÄE X€‘€T”A‚S~‚A€ƒã‘¶p6‰ã9€õ‰ãrPnÀ‰‚ƒ‚ÿSoWinFlyViewer(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoWinFullViewer::BuildFlag flag = BUILD_ALL,SoWinViewer::Type type = BROWSER)~SoWinFlyViewer()^/íÄÄXÆÄ/ .€^€”‘€‚A€ãx-"‰‚ÿMethods from class SoWinConstrainedViewer:ŒRúÅÄäÆÄ: D€¤€T”A‚S~‚A€ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ÿvoidsetUpDirection(const SbVec3f &newUpDirection)SbVec3fgetUpDirection()W(XÆÄ;ÇÄ/ .€P€”‘€‚A€ã9€õ‰‚ÿMethods from class SoWinFullViewer:èŽäÆÄ#ÉÄZ ‚€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()voidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()HWNDgetAppPushButtonParent() constvoidaddAppPushButton(HWND newButton)voidinsertAppPushButton(HWND newButton,int index)voidremoveAppPushButton(HWND oldButton)intfindAppPushButton(HWND oldButton)intlengthAppPushButton()HWNDgetRenderAreaWidget()S$;ÇÄvÉÄ/ .€H€”‘€‚A€ãrPnÀ‰‚ÿMethods from class SoWinViewer:[Õ#ÉÄÑËĆ Ú€«€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒãrPnÀ‰ãrPnÀ‰‚ãrPnÀ‰ƒãrPnÀ‰‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoWinViewer::DrawType type,SoWinViewer::DrawStyle style)SoWinViewer::DrawStylegetDrawStyle(SoWinViewer::DrawType type)—vÉÄãÍÄ{ Ä€/€T”A‚S~‚A€ƒãrPnÀ‰‚ãrPnÀ‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBufferingType(SoWinViewer::BufferType type)SoWinViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual voidsetCursorEnabled(SbBool onOrOff) SbBoolisCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()!ÐÑËÄÅQ p€¡€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetStereoOffset(float dist)floatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoWinViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidcopyView(time_t eventTimãÍÄÅçÁÄe)"ÍãÍÄ2ÅU x€›€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidpasteView(time_t eventTime)voidsetDecimationStrategy(DecimationStrategy strategy)DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal)int32_tgetGoalNumberOfTriangles()voidsetGoalFramesPerSecond(float goal)floatgetGoalFramesPerSecond()voidsetFixedPercentage(float percent)floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff)SbBoolisFullRenderingWhenStill()SbBoolisStillNow() Þ”ÅÅJ b€)€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚€ƒƒ€‚€ƒƒ€‚ÿvoidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData)voidsetNumSamples(int numFrames)intgetNumSamples() void setDecimationPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL)float getCurrentDecimationPercentage()voidsetCursorStyle( SoWinViewer::CursorStyle style )[Win32 only]SoWinViewer::CursorStylegetCursorStyle()[Win32 only]W(2ÅgÅ/ .€P€”‘€‚A€ãÿ3ȉ‚ÿMethods from class SoWinRenderArea:&µÅÅq °€k€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãÊÌø!‰‚ƒãÊÌø!‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoWinDevice *)voidunregisterDevice(SoWinDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «gÅ™Åa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤ű Åt ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)7Û™Åè Å\ †€·€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoWinRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºW± Å¢Åc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constU&è Å÷Å/ .€L€”‘€‚A€ã-‹2‘‰‚ÿMethods from class SoWinGLWidget:6×¢Å9AÅ_ Œ€¯€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()HWNDgetNormalWindow()HWNDgetOverlayWindow(÷Å9AÅçÁÄ)HGLRCgetNormalContext()HGLRCgetOverlayContext()HWNDgetNormalWidget()HWNDgetOverlayWidget()virtual voidsetNormalVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getNormalVisual()virtual voidsetOverlayVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getOverlayVisual()÷„÷Å0CÅs ´€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag)SbBoolisDrawToFrontBufferEnable() constvoidsetCursor(Cursor newCursor) [Win32 only]CursorgetCursor() [Win32 only]HDCgetNormalDC() [Win32 only]HDCgetOverlayDC() [Win32 only]voidsetStealFocus(SbBool onOrOff) [Win32 only]virtual voidsetPixelFormat(int format) [Win32 only]intgetPixelFormat() [Win32 only]V'9AņCÅ/ .€N€”‘€‚A€ã¹Ä L‰‚ÿMethods from class SoWinComponent:5Ó0CÅ»EÅb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬v†CÅgFÅ6 <€ì€T”A‚S~‚A€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() const4»EÅ›FÅ& €€‚A€‚ÿDESCRIPTIONfgFÅ+HÅ* "€Í€”‘€‚A€‚ÿFly Viewer - this viewer is intended to simulate flight through space, with a constant world up direction. The viewer only constrains the camera to keep the user from flying upside down. No mouse buttons need to be pressed in order to fly. The mouse position is used only for steering, while mouse clicks are used to increase or decrease the viewer speed.ÿÕ›FÅ*IÅ* "€«€”‘€‚A€‚ÿThe viewer allows you to tilt your head up/down/right/left and move in the direction you are looking (forward or backward). The viewer also supports seek to quickly move the camera to a desired object or point.0 +HÅZIÅ& €€‚A€‚ÿMETHODS È*IÅgJÅE X€‘€T”A‚S~‚A€ƒã‘¶p6‰ã9€õ‰ãrPnÀ‰‚ƒ‚ÿSoWinFlyViewer(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoWinFullViewer::BuildFlag flag = BUILD_ALL,SoWinViewer::Type type = BROWSER)~SoWinFlyViewer()Æ–ZIÅ-KÅ0 .€-€”‘€‚A€€€‚ÿConstructor and destructor which specifies the viewer type. Please refer to the SoWinViewer reference page for a description of the viewer types..gJÅ[KÅ& €€‚A€‚ÿUSAGEF-KÅ¡KÅ) "€:€”‘€‚A€‚ÿ(For 3-button mouse only.)T([KÅõKÅ, (€P€”‘€‚A€€‚ÿLeft Mouse: Click to increase speed.ª~¡KÅŸLÅ, (€ü€”‘€‚A€€‚ÿ + Left Mouse: Alternative to the Seek button. Press (but do not hold down) the key, then click on a target object.à³õKÅMÅ- (€g€”‘€‚A€€‚ÿ + Left Mouse: Press (but do not hold down) the key, then click on a target object to set the "up" direction to the surface normal. By default +y is the "up" direction.V*ŸLÅÕMÅ, (€T€”‘€‚A€€‚ÿMiddle Mouse: Click to decrease speed.i=MÅ>NÅ, (€z€”‘€‚A€€‚ÿLeft and Middle Mouse: Click both simultaneously to stop.uIÕMųNÅ, (€’€”‘€‚A€€‚ÿCtrl: Hold the key down to temporarily stop and rotate the viewpoint.Q%>NÅOÅ, (€J€”‘€‚A€€‚ÿRight Mouse: Open the popup menu.a1³NÅq€Å0 .€c€”‘€‚A€€€‚ÿALT: (Win32) When the viewer is in selection (a.k.a. pick) mode, pressing and holding the ALT key temporarily switches the viewer to viewing mode. When the ALT key is released, the viewer returns to selOÅq€ÅçÁÄection mode. Note: If any of the mouse buttons are currently depressed, the ALT key has no effect.5 OŦ€Å) "€€‚A€€ ‚ÿSEE ALSOZÖq€Å‚Å„ Ö€­€”‘€‚Aã§í߀‰€€ã9€õ‰€ãrPnÀ€‰€ã¹Ä L€‰€ãÿ3È€‰€ã7—ìg€‰€ãKã€(€‰€ãîeà€‰‚ÿFly Viewer (illustration and additional info on mouse buttons), SoWinFullViewer, SoWinViewer, SoWinComponent, SoWinRenderArea, SoWinWalkViewer, SoWinExaminerViewer, SoWinPlaneViewer@¦€Å@‚Å12- Z Œ@‚Åw‚Å“ÆSoWinFullViewer7‚Åw‚Å% €$€ˆˆ€‚ÿSoWinFullViewer*@‚Å¡‚Å# €€€‚ÿNAME~Xw‚ŃÅ& €°€”‘€€‚ÿSoWinFullViewer - base viewer class which adds a decoration around the rendering area3¡‚ÅRƒÅ# € €€‚ÿINHERITS FROM½dƒÅ„ÅY ‚€È€”‘€ã¹Ä L€‰€ã-‹2‘€‰€ãÿ3È€‰€ãrPnÀ€‰€€€‚ÿSoWinComponent > SoWinGLWidget > SoWinRenderArea > SoWinViewer > SoWinFullViewer2 RƒÅA„Å& €€€€ ‚ÿSYNOPSISZ4„Å›„Å& €h€”‘€€‚ÿ#include VA„Åñ…ÅR r€ €T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum BuildFlag{SoWinFullViewer::BUILD_NONEDoesn't build anything extraSoWinFullViewer::BUILD_DECORATIONBuild the decoration onlySoWinFullViewer::BUILD_POPUPBuild the popup menu onlySoWinFullViewer::BUILD_ALLBuild everything by default}O&›„Å@†Å) "€L€”‘€‚A€‚ÿMethods from class SoWinFullViewer:èŽñ…Å(ˆÅZ ‚€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()voidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()HWNDgetAppPushButtonParent() constvoidaddAppPushButton(HWND newButton)voidinsertAppPushButton(HWND newButton,int index)voidremoveAppPushButton(HWND oldButton)intfindAppPushButton(HWND oldButton)intlengthAppPushButton()HWNDgetRenderAreaWidget()S$@†Å{ˆÅ/ .€H€”‘€‚A€ãrPnÀ‰‚ÿMethods from class SoWinViewer:[Õ(ˆÅ֊ņ Ú€«€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒãrPnÀ‰ãrPnÀ‰‚ãrPnÀ‰ƒãrPnÀ‰‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoWinViewer::DrawType type,SoWinViewer::DrawStyle style)SoWinViewer::DrawStylegetDrawStyle(SoWinViewer::DrawType type)—{ˆÅèŒÅ{ Ä€/€T”A‚S~‚A€ƒãrPnÀ‰‚ãrPnÀ‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBufferingType(SoWinViewer::BufferType type)SoWinViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual voidsetCursorEnabled(SbBool onOrOff) SbBoolisCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()!ÐÖŠÅ ÅQ p€¡€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetStereoOffset(float dist)floatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoWinViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidcopyView(time_t eventTime)"ÍèŒÅ7ÁÅU x€›€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidpasteView(time_t eventTime)voidsetDecimationStrategy(DecimationStrategy strategy)DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangle Å7ÁÅ‚Ås(int32_t goal)int32_tgetGoalNumberOfTriangles()voidsetGoalFramesPerSecond(float goal)floatgetGoalFramesPerSecond()voidsetFixedPercentage(float percent)floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff)SbBoolisFullRenderingWhenStill()SbBoolisStillNow() Þ” ÅÃÅJ b€)€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚€ƒƒ€‚€ƒƒ€‚ÿvoidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData)voidsetNumSamples(int numFrames)intgetNumSamples() void setDecimationPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL)float getCurrentDecimationPercentage()voidsetCursorStyle( SoWinViewer::CursorStyle style )[Win32 only]SoWinViewer::CursorStylegetCursorStyle()[Win32 only]W(7ÁÅlÃÅ/ .€P€”‘€‚A€ãÿ3ȉ‚ÿMethods from class SoWinRenderArea:&µÃÅ’ÅÅq °€k€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãÊÌø!‰‚ƒãÊÌø!‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoWinDevice *)voidunregisterDevice(SoWinDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «lÃÅžÇÅa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤’ÅŶÉÅt ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)7ÛžÇÅíËÅ\ †€·€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoWinRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºW¶ÉŧÍÅc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constU&íËÅüÍÅ/ .€L€”‘€‚A€ã-‹2‘‰‚ÿMethods from class SoWinGLWidget:6קÍÅ>Æ_ Œ€¯€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()HWNDgetNormalWindow()HWNDgetOverlayWindow()HGLRCgetNormalContext()HGLRCgetOverlayContext()HWNDgetNormalWidget()HWNDgetOverlayWidget()virtual voidsetNormalVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getNormalVisual()virtual voidsetOverlayVisual(PIXELFORMATDESCRIPTOR üÍÅ>Æ‚Å*vis)PIXELFORMATDESCRIPTOR *getOverlayVisual()÷„üÍÅ5Æs ´€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag)SbBoolisDrawToFrontBufferEnable() constvoidsetCursor(Cursor newCursor) [Win32 only]CursorgetCursor() [Win32 only]HDCgetNormalDC() [Win32 only]HDCgetOverlayDC() [Win32 only]voidsetStealFocus(SbBool onOrOff) [Win32 only]virtual voidsetPixelFormat(int format) [Win32 only]intgetPixelFormat() [Win32 only]V'>Æ‹Æ/ .€N€”‘€‚A€ã¹Ä L‰‚ÿMethods from class SoWinComponent:5Ó5ÆÀÆb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬v‹ÆlÆ6 <€ì€T”A‚S~‚A€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() const4ÀÆ Æ& €€‚A€‚ÿDESCRIPTIONÙ©lÆyÆ0 .€S€”‘€‚A€€€‚ÿThis is a base class used by all viewer components. The class adds a decoration around the rendering area which includes thumb wheels, a zoom slider and push buttons. This base class also includes a viewer popup menu and a preference sheet with generic viewing functions. The constructors for the various subclasses of SoWinFullViewer provide a flag for specifying whether the decoration and popup menus should be built.0  Æ©Æ& €€‚A€‚ÿMETHODSy?yÆ"Æ: D€~€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()¤{©ÆÆÆ) "€ö€”‘€‚A€‚ÿShow/hide the viewer component trim (default on). See the viewer constructor to prevent the decoration from being built.‰O"ÆO Æ: D€ž€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()«ÆÆú Æ* "€€”‘€‚A€‚ÿEnable/disable the viewer popup menu (default enabled). See the viewer constructor to prevent the popup menu from being built.!éO Æ Æ8 >€Ó€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿHWNDgetAppPushButtonParent() constvoidaddAppPushButton(HWND newButton)voidinsertAppPushButton(HWND newButton,int index)voidremoveAppPushButton(HWND oldButton)intfindAppPushButton(HWND oldButton)intlengthAppPushButton()ÿÕú Æ Æ* "€«€”‘€‚A€‚ÿAdd/remove push buttons for the application, which will be placed in the left hand side decoration trim. Adding buttons appends them to the end of the list, while inserting them places them at the desired index¤{ ƾ Æ) "€ö€”‘€‚A€‚ÿNote: The button bitmaps should be 24-by-24 pixels to fit nicely into the decoration trim like the other viewer buttons.I Æ Æ, (€:€T”A‚S~‚A€ƒ‚ÿHWNDgetRenderAreaWidget()R)¾ ÆY Æ) "€R€”‘€‚A€‚ÿReturns the render area window handle.1  ÆŠ Æ& €€‚A€‚ÿSEE ALSO ‘Y Æ“Æx ¾€#€”‘€‚AãrPnÀ€‰€ã¹Ä L€‰€ãÿ3È€‰€ãKã€(€‰€ã7—ìg€‰€ãm£óh€‰€ãîeà€‰‚ÿSoWinViewer, SoWinComponent, SoWinRenderArea, SoWinExaminerViewer, SoWinWalkViewer, SoWinFlyViewer, SoWinPlaneViewer> Š ÆÑÆ1„â‹£ƒ§ÑÆÆÆSoWinGLWidget5“ÆÆ% € €ˆˆ€‚ÿSoWinGLWidget*ÑÆ0Æ# €€€‚ÿNAMEV0ƆÆ& €`€”‘€€‚ÿSoWinGLWidget -component for OpenGL rendering30ƹÆ# € €€‚ÿINHERITS FROM[&†Æ @Æ5 :€L€”‘€ã¹Ä L€‰€€€‚ÿSoWinComponent¹Æ @Æ“Æ > SoWinGLWidget2 ¹ÆR@Æ& €€€€ ‚ÿSYNOPSISsL @ÆÅ@Æ' €˜€”‘€€‚‚ÿ#include Methods from class SoWinGLWidget:6×R@ÆûBÆ_ Œ€¯€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()HWNDgetNormalWindow()HWNDgetOverlayWindow()HGLRCgetNormalContext()HGLRCgetOverlayContext()HWNDgetNormalWidget()HWNDgetOverlayWidget()virtual voidsetNormalVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getNormalVisual()virtual voidsetOverlayVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getOverlayVisual()÷„Å@ÆòDÆs ´€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag)SbBoolisDrawToFrontBufferEnable() constvoidsetCursor(Cursor newCursor) [Win32 only]CursorgetCursor() [Win32 only]HDCgetNormalDC() [Win32 only]HDCgetOverlayDC() [Win32 only]voidsetStealFocus(SbBool onOrOff) [Win32 only]virtual voidsetPixelFormat(int format) [Win32 only]intgetPixelFormat() [Win32 only]Z(ûBÆLEÆ2 4€P€”‘€‚A€ã¹Ä L‰€‚ÿMethods from class SoWinComponent:5ÓòDÆGÆb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬vLEÆ-HÆ6 <€ì€T”A‚S~‚A€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() const4GÆaHÆ& €€‚A€‚ÿDESCRIPTION¢l-HÆJÆ6 :€Ù€”‘€‚A€€€€€‚ÿThis abstract base class provides a C++ wrapper around an OpenGL drawing window. It allows OpenGL rendering to be performed within a Windows window and is used by the SoWinRenderArea. SoWinGLWidget uses a parent window with two separate OpenGL windows (one for single buffering and one for double buffering), with routines to return the appropriate windows.Ñ›aHÆÔJÆ6 :€7€”‘€‚A€€€€€‚ÿSubclasses only need to redefine the redraw() routine for rendering and processEvent() routine if they are interested in receiving Windows messages.0 JÆKÆ& €€‚A€‚ÿMETHODSw=ÔJÆ{KÆ: D€z€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() const`4KÆÛKÆ, (€h€”‘€‚A€€‚ÿThese methods are included for portability only.}C{KÆXLÆ: D€†€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()Û«ÛKÆ3MÆ0 .€W€”‘€‚A€€€‚ÿRoutine which dynamically changes between single and double buffering. Default is double buffer off. (The SoWinRenderArea subclass makes it double buffer by default.)œbXLÆÏMÆ: D€Ä€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag)SbBoolisDrawToFrontBufferEnable() const»‘3MÆŠNÆ* "€#€”‘€‚A€‚ÿSet/query drawing to the front buffer. Controls drawing to the front buffer when an obscured portion of the window is exposed. Default: FALSE.ÁÏMÆ£OÆX ~€ƒ€T”A‚S~‚A€ƒ‚ƒƒ€€‚ƒ€‚€ƒƒ€€‚ƒ€‚€ƒƒ€€‚ÿHWNDgetNormalWindow()HWNDgetOverlayWindow()[See Note2]HGLRCgetNormalContext()HGLRCgetOverlayContext()[See Note2]HWNDgetNormalWidget()HWNDgetOverlayWidget()[See Note2]ⵊNÆ‘€Æ- (€k€”‘€‚A€€‚ÿGet the current normal and overlay GL windows, £OÆ‘€Æ“Æcontexts and window handles, which are needed as arguments to wglMakeCurrent() when doing drawing in the normal or overlay planes.›l£OÆ,Æ/ .€Ø€”‘€‚A€€€‚ÿNote1: These should not be cached by users because they will change as single/double buffering changes.‡[‘€Æ³Æ, (€¶€”‘€‚A€€‚ÿNote2: Overlay planes are supported only if the graphics board supports overlay planes.-æ,Æà‚ÆG \€Í€T”A‚S~‚A€ƒƒ€‚€ƒ€‚€ƒ‚ƒƒ€€‚ÿvirtual voidsetNormalVisual(PIXELFORMATDESCRIPTOR *vis)[See Note]PIXELFORMATDESCRIPTOR *getNormalVisual()virtual voidsetOverlayVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getOverlayVisual()[See Note]ï³ÆÏ„Æ- (€…€”‘€‚A€€‚ÿSpecify exactly what the pixel format descriptor should be for the normal and overlay window. This allows the user to create all possible pixel format descriptors supported by OpenGL. The PIXELFORMATDESCRIPTOR structure should be a valid OpenGL pixel format descriptor returned by ChoosePixelFormat(). (The methods for setting the pixel format descriptor are virtual so that derived classes can know when the pixel format descriptor is changing.)†Zà‚ÆU…Æ, (€´€”‘€‚A€€‚ÿNote: Overlay planes are supported only if the graphics board supports overlay planes.p9Ï„ÆÅ…Æ7 >€r€T”A‚S~‚A€ƒ€‚€ƒ€‚ÿvoidsetCursor(Cursor newCursor)CursorgetCursor()3U…Æø†Æ- (€ €”‘€‚A€€‚ÿSet/get the current cursor. If you are using a viewer class, the viewer will automatically change the cursor depending on the viewer mode. These changes will override the cursor set with this method unless you also call SoWinViewer::setCursorEnabled(FALSE). {DÅ…Æs‡Æ7 >€ˆ€T”A‚S~‚A€ƒ€‚€ƒ€‚ÿHDCgetNormalDC() [Win32 only]HDCgetOverlayDC() [Win32 only]vJø†Æé‡Æ, (€”€”‘€‚A€€‚ÿReturns the current device context (which we need for wglMakeCurrent).b3s‡ÆKˆÆ/ .€f€T”A‚S~‚A€ƒ€‚ÿvoidsetStealFocus(SbBool onOrOff) [Win32 only]€Sé‡ÆˉÆ- (€§€”‘€‚A€€‚ÿBy default the GLWidget "steals" focus whenever the cursor moves over it. This roughly simulates the UNIX/X "focusFollowsCursor" behavior (which has no equivalent in Win32) and allows the Ctrl and Shift keys to be detected for 1-button mouse behaviors. Sometimes you want to this off however, like when you're typing in the zoom field.“\KˆÆ^ŠÆ7 >€¸€T”A‚S~‚A€ƒ€‚€ƒ€‚ÿvirtual voidsetPixelFormat(int format) [Win32 only]intgetPixelFormat() [Win32 only]™lˉÆ÷‹Æ- (€Ù€”‘€‚A€€‚ÿSet/get the current pixel format. These methods allow an application to set/query a pixel format that has extended attributes that can't be specified in a PFD struct. The specified format must support OpenGL and drawing to a window. There are not separate methods for normal and overlay windows because the overlay is not a separate window on Win32 computers. ]^ŠÆ†ŒÆ2 4€º€”‘€‚A€ã!§˜m‰€‚ÿYou can also use environment variable OIV_FORCE_PIXEL_FORMAT to request a pixel format.1 ÷‹Æ·ŒÆ& €€‚A€‚ÿSEE ALSOc(†ŒÆÆ; F€P€”‘€‚Aã¹Ä L€‰€ãÿ3È€‰‚ÿSoWinComponent, SoWinRenderArea> ·ŒÆXÆ1¬¨½ƒXÆÆ ÆÆSoWinKeyboard5ÆÆ% € €ˆˆ€‚ÿSoWinKeyboard*XÆ·Æ# €€€‚ÿNAMEiCÆ ŽÆ& €†€”‘€€‚ÿSoWinKeyboard - translates and reports messages for the keyboard3·ÆSŽÆ# € €€‚ÿINHERITS FROMX# ŽÆ«ŽÆ5 :€F€”‘€ãÊÌø!€‰€€€‚ÿSoWinDevice > SoWinKeyboard2 SŽÆÝŽÆ& €€€€ ‚ÿSYNOPSISÀ—«ŽÆÆ) €/€”‘€€‚‚‚ÿ#include #define SO_WIN_ALL_KEYBOARD_EVENTS (KeyPressMask | KeyReleaseMask)Methods from class SoWinKeyboard:yKÝŽÆ"ÀÆ. ,€–€T”A‚S~‚A€ƒ‚ƒ‚ÿSoWinKeyboard(UINT mask = SO_WIN_ALL_KEYBOARD_EVENTÆ"ÀÆÆS)~SoWinKeyboard()S$ÆuÀÆ/ .€H€”‘€‚A€ãÊÌø!‰‚ÿMethods from class SoWinDevice:N"ÀÆÃÁÆL f€€T”A‚S~‚A€ƒ‚ƒ‚ã2™|—‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvirtual voidenable(HWND w,FARPROC f,PVOID data,HWND win = NULL)virtual voiddisable(HWND w,FARPROC f,PVOID data)virtual const SoEvent *translateEvent(MSG *xevent)voidsetWindowSize(const SbVec2s &size)const SbVec2s &getWindowSize() const4uÀÆ÷ÁÆ& €€‚A€‚ÿDESCRIPTION¦wÃÁÆÂÆ/ .€î€”‘€‚A€€€‚ÿThis class manages messages generated by the keyboard, including key press and release messages (SoKeyboardEvent).0 ÷ÁÆÍÂÆ& €€‚A€‚ÿMETHODSyKÂÆFÃÆ. ,€–€T”A‚S~‚A€ƒ‚ƒ‚ÿSoWinKeyboard(UINT mask = SO_WIN_ALL_KEYBOARD_EVENTS)~SoWinKeyboard()¸ŽÍÂÆþÃÆ* "€€”‘€‚A€‚ÿConstructor and destructor. To the constructor, pass which keyboard messages you are interested in as a bitwise OR of the following values:M$FÃÆKÄÆ) "€H€”‘€‚A€‚ÿKeyPressMask - Key press messagesQ(þÃÆœÄÆ) "€P€”‘€‚A€‚ÿKeyReleaseMask - Key release messagesݳKÄÆyÅÆ* "€g€”‘€‚A€‚ÿOr simply pass the defined value SO_WIN_ALL_KEYBOARD_EVENTS for all keyboard messages. The device will only report messages of this type for the window handle it is enabled on.1 œÄƪÅÆ& €€‚A€‚ÿSEE ALSO`%yÅÆ ÆÆ; F€J€”‘€‚AãÊÌø!€‰€ã“[ A€‰‚ÿSoWinDevice, SoKeyboardEventDªÅÆNÆÆ1¥t + Ž NÆƉÆƲ ÇSoWinMaterialEditor; ÆƉÆÆ% €,€ˆˆ€‚ÿSoWinMaterialEditor*NÆƳÆÆ# €€€‚ÿNAMEuO‰ÆÆ(ÇÆ& €ž€”‘€€‚ÿSoWinMaterialEditor - component which lets you edit a material interactively3³ÆÆ[ÇÆ# € €€‚ÿINHERITS FROMa,(ÇƼÇÆ5 :€X€”‘€ã¹Ä L€‰€€€‚ÿSoWinComponent > SoWinMaterialEditor2 [ÇÆîÇÆ& €€€€ ‚ÿSYNOPSISV0¼ÇÆDÈÆ& €`€”‘€€‚ÿ#include UîÇÆ™ÉÆO l€ €T”A‚S~‚A€ƒãOjnĉ‚ƒ€ƒ€€ƒ€€€‚ÿtypedef voidSoWinMaterialEditorCB(void *userData,const SoMaterial *mtl)enum UpdateFrequency{SoWinMaterialEditor::CONTINUOUSSend updates with every mouse motionSoWinMaterialEditor::AFTER_ACCEPTOnly send updates after user hits accept button}S*DÈÆìÉÆ) "€T€”‘€‚A€‚ÿMethods from class SoWinMaterialEditor:@æ™ÉÆ,ÌÆZ ‚€Í€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ƒãOjnĉ‚ƒãNô—‰‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ÿSoWinMaterialEditor(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoWinMaterialEditor()voidattach(SoMaterial *material,int index = 0)voidattach(SoVRMLMaterial *material)voiddetach()SbBoolisAttached()voidaddMaterialChangedCallback(SoWinMaterialEditorCB *f,void *userData = NULL)voidremoveMaterialChangedCallback(SoWinMaterialEditorCB *f,void *userData = NULL)voidsetUpdateFrequency(SoWinMaterialEditor::UpdateFrequency freq)$×ìÉÆPÍÆM h€¯€T”A‚S~‚A€ƒ‚ƒãOjnĉ‚ƒãNô—‰‚ãOjnĉƒ‚㑶p6‰ƒ‚ÿSoWinMaterialEditor::UpdateFrequencygetUpdateFrequency()voidsetMaterial(const SoMaterial &mtl)voidsetMaterial(const SoVRMLMaterial &mtl)const SoMaterial &getMaterial() constSbBoolisAttachedVRML()V',ÌƦÍÆ/ .€N€”‘€‚A€ã¹Ä L‰‚ÿMethods from class SoWinComponent:5ÓPÍÆÛÏÆb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬v¦ÍÆ“Ç6 <€ì€T”A‚S~‚AÛÏÆ“Ç ÆÆ€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() const4ÛÏÆÇÇ& €€‚A€‚ÿDESCRIPTIONÑ¡“ǘÇ0 .€C€”‘€‚A€€€‚ÿThis class is used to edit the material properties of an SoMaterial node. The editor can also directly be used using callbacks instead of attaching it to a node. The component consists of a render area displaying a test sphere, some sliders, a set of radio buttons, and a menu. The sphere displays the current material being edited. There is one slider for each material coefficient. Those fields are ambient, diffuse, specular, emissive (all of which are colors); and transparency and shininess (which are scalar values). A color editor can be opened to edit the color slider base color. A material list displays palettes of predefined materials from which to choose.Ø®ÇÇpÇ* "€]€”‘€‚A€‚ÿThe editor can currently be attached to only one material at a time. Attaching two different materials will automatically detach the first one before attaching the second.0 ˜Ç Ç& €€‚A€‚ÿMETHODSµpÇUÇ6 <€þ€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ÿSoWinMaterialEditor(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoWinMaterialEditor()G ÇœÇ) "€<€”‘€‚A€‚ÿConstructor and destructor.¨kUÇDÇ= J€Ö€T”A‚S~‚A€ƒãOjnĉ‚ƒãNô—‰‚ƒ‚ÿvoidattach(SoMaterial *material,int index = 0)voidattach(SoVRMLMaterial *material)voiddetach()XœÇÅÇ) "€°€”‘€‚A€‚ÿAttach/detach the editor to a material node and edit the material of the given index.JDÇÇ2 4€0€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisAttached()S*ÅÇbÇ) "€T€”‘€‚A€‚ÿReturns TRUE if the editor is attached.NÇ°Ç2 4€8€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisAttachedVRML()ŸvbÇOÇ) "€ì€”‘€‚A€‚ÿReturns TRUE if the attached material node a VRML material. Not meaningful if the editor is not currently attached.ا°Ç' Ç1 0€O€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddMaterialChangedCallback(SoWinMaterialEditorCB *f,void *userData = NULL)voidremoveMaterialChangedCallback(SoWinMaterialEditorCB *f,void *userData = NULL)õÅOÇ Ç0 .€‹€”‘€‚A€€€‚ÿAdditional way of using the material editor, by registering a callback which will be called whenever the material changes (check the UpdateFrequency to find when the callbacks will be called).­' ÇÉ Ç. ,€þ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetUpdateFrequency(SoWinMaterialEditor::UpdateFrequency freq)SoWinMaterialEditor::UpdateFrequencygetUpdateFrequency()}N ÇF Ç/ .€œ€”‘€‚A€€€‚ÿSets/gets the update frequency. See the UpdateFrequency enum declaration.ÆƒÉ Ç ÇC T€€T”A‚S~‚A€ƒãOjnĉ‚ƒãNô—‰‚ãOjnĉƒ‚ÿvoidsetMaterial(const SoMaterial &mtl)voidsetMaterial(const SoVRMLMaterial &mtl)const SoMaterial &getMaterial() consti@F Çu Ç) "€€€”‘€‚A€‚ÿSet a new material value, and get the current material value.}D Çò Ç9 B€ˆ€T”A‚S~‚A㑶p6€‰ƒ‚€€‚ÿSbBoolisAttachedVRML()Is attached material a VRML material?5 u Ç' Ç) "€€‚A€€ ‚ÿSEE ALSO‹Dò Dz ÇG ^€ˆ€”‘€‚Aã¹Ä L€‰€ã¡<½€‰€ãOjnÄ€‰‚ÿSoWinComponent, SoWinDirectionalLightEditor, SoMaterial; ' Çí Ç1× ½ƒl„¨ í ÇÇ´GÇSoWinMouse2 ² ÇÇ% €€ˆˆ€‚ÿSoWinMouse*í ÇIÇ# €€€‚ÿNAMEc=ǬÇ& €z€”‘€€‚ÿSoWinMouse - translates and reports messages for the mouse3IÇßÇ# € €€‚ÿINHERITS FROMU ¬Ç4Ç5 :€@€”‘€ãÊÌø!€‰€€€‚ÿSoWinDevice > SoWinMouse2 ßÇfÇ& €€€€ ‚ÿSYNOPSISç¾4ÇY@Ç) €}€”‘€€‚‚‚ÿ#include #define SO_WIN_ALL_MOUSE_EVENTS (ButtonPressMask | ButtonReleasefÇY@Dz ÇMask | PointerMotionMask | ButtonMotionMask)Methods from class SoWinMouse:pBfÇÉ@Ç. ,€„€T”A‚S~‚A€ƒ‚ƒ‚ÿSoWinMouse(UINT mask = SO_WIN_ALL_MOUSE_EVENTS)~SoWinMouse()S$Y@ÇAÇ/ .€H€”‘€‚A€ãÊÌø!‰‚ÿMethods from class SoWinDevice:NÉ@ÇjBÇL f€€T”A‚S~‚A€ƒ‚ƒ‚ã2™|—‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvirtual voidenable(HWND w,FARPROC f,PVOID data,HWND win = NULL)virtual voiddisable(HWND w,FARPROC f,PVOID data)virtual const SoEvent *translateEvent(MSG *xevent)voidsetWindowSize(const SbVec2s &size)const SbVec2s &getWindowSize() const4AÇžBÇ& €€‚A€‚ÿDESCRIPTIONݧjBÇ{CÇ6 :€O€”‘€‚A€€€€€‚ÿThis class manages messages generated by the mouse, including mouse motion (SoLocation2Event), and mouse button press and release messages (SoMouseButtonEvent).0 žBÇ«CÇ& €€‚A€‚ÿMETHODSpB{CÇDÇ. ,€„€T”A‚S~‚A€ƒ‚ƒ‚ÿSoWinMouse(UINT mask = SO_WIN_ALL_MOUSE_EVENTS)~SoWinMouse()µ‹«CÇÐDÇ* "€€”‘€‚A€‚ÿConstructor and destructor. To the constructor, pass which mouse messages you are interested in as a bitwise OR of the following values:Q(DÇ!EÇ) "€P€”‘€‚A€‚ÿButtonPressMask - Mouse down messagesQ(ÐDÇrEÇ) "€P€”‘€‚A€‚ÿButtonReleaseMask - Mouse up messages\3!EÇÎEÇ) "€f€”‘€‚A€‚ÿPointerMotionMask - Mouse motion with no buttons`7rEÇ.FÇ) "€n€”‘€‚A€‚ÿButtonMotionMask - Mouse motion with buttons pressedЦÎEÇþFÇ* "€M€”‘€‚A€‚ÿOr simply pass the defined value SO_WIN_ALL_MOUSE_EVENTS for all mouse messages. The device will only report messages of this type for the window it is enabled on.1 .FÇ/GÇ& €€‚A€‚ÿSEE ALSO…>þFÇ´GÇG ^€|€”‘€‚AãÊÌø!€‰€ã-OÁm€‰€ãÛá–€‰‚ÿSoWinDevice, SoLocation2Event, SoMouseButtonEventA/GÇõGÇ1ð.l„¨2© õGÇ-HÇ8ÈSoWinPlaneViewer8´GÇ-HÇ% €&€ˆˆ€‚ÿSoWinPlaneViewer*õGÇWHÇ# €€€‚ÿNAMEnH-HÇÅHÇ& €€”‘€€‚ÿSoWinPlaneViewer - viewer component which moves the camera in a plane3WHÇøHÇ# € €€‚ÿINHERITS FROMà{ÅHÇØIÇe š€ö€”‘€ã¹Ä L€‰€ã-‹2‘€‰€ãÿ3È€‰€ãrPnÀ€‰€ã9€õ€‰€€€‚ÿSoWinComponent > SoWinGLWidget > SoWinRenderArea > SoWinViewer > SoWinFullViewer > SoWinPlaneViewer2 øHÇ JÇ& €€€€ ‚ÿSYNOPSISZØIÇ‹JÇ' €´€”‘€€‚‚ÿ#include Methods from class SoWinPlaneViewer:Ì JÇœKÇE X€™€T”A‚S~‚A€ƒã‘¶p6‰ã9€õ‰ãrPnÀ‰‚ƒ‚ÿSoWinPlaneViewer(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoWinFullViewer::BuildFlag flag = BUILD_ALL,SoWinViewer::Type type = BROWSER)~SoWinPlaneViewer()W(‹JÇóKÇ/ .€P€”‘€‚A€ã9€õ‰‚ÿMethods from class SoWinFullViewer:莜KÇÛMÇZ ‚€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()voidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()HWNDgetAppPushButtonParent() constvoidaddAppPushButton(HWND newButton)voidinsertAppPushButton(HWND newButton,int index)voidremoveAppPushButton(HWND oldButton)intfindAppPushButton(HWND oldButton)intlengthAppPushButton()HWNDgetRenderAreaWidget()S$óKÇ.NÇ/ .€H€”‘€‚A€ãrPnÀ‰‚ÿMethods from class SoWinViewer:[ÕÛMÇ•€Ç† Ú€«€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒãrPnÀ‰ãrPnÀ‰‚ãrPnÀ‰ƒãrPnÀ‰‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDraw.NÇ•€Ç´GÇStyle(SoWinViewer::DrawType type,SoWinViewer::DrawStyle style)SoWinViewer::DrawStylegetDrawStyle(SoWinViewer::DrawType type)—.Nǧ‚Ç{ Ä€/€T”A‚S~‚A€ƒãrPnÀ‰‚ãrPnÀ‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBufferingType(SoWinViewer::BufferType type)SoWinViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual voidsetCursorEnabled(SbBool onOrOff) SbBoolisCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()!Е€ÇÈ„ÇQ p€¡€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetStereoOffset(float dist)floatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoWinViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidcopyView(time_t eventTime)"ͧ‚Çê†ÇU x€›€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidpasteView(time_t eventTime)voidsetDecimationStrategy(DecimationStrategy strategy)DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal)int32_tgetGoalNumberOfTriangles()voidsetGoalFramesPerSecond(float goal)floatgetGoalFramesPerSecond()voidsetFixedPercentage(float percent)floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff)SbBoolisFullRenderingWhenStill()SbBoolisStillNow() ޔȄÇȈÇJ b€)€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚€ƒƒ€‚€ƒƒ€‚ÿvoidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData)voidsetNumSamples(int numFrames)intgetNumSamples() void setDecimationPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL)float getCurrentDecimationPercentage()voidsetCursorStyle( SoWinViewer::CursorStyle style )[Win32 only]SoWinViewer::CursorStylegetCursorStyle()[Win32 only]W(ê†Ç‰Ç/ .€P€”‘€‚A€ãÿ3ȉ‚ÿMethods from class SoWinRenderArea:&µȈÇE‹Çq °€k€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãÊÌø!‰‚ƒãÊÌø!‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoWinDevice *)voidunregisterDevice(SoWinDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «‰ÇQÇa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤E‹ÇiÇt ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)7ÛQǬÁÇ\ †€·€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigiǬÁÇ´GÇned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoWinRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºWiÇfÃÇc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constU&¬ÁÇ»ÃÇ/ .€L€”‘€‚A€ã-‹2‘‰‚ÿMethods from class SoWinGLWidget:6×fÃÇñÅÇ_ Œ€¯€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()HWNDgetNormalWindow()HWNDgetOverlayWindow()HGLRCgetNormalContext()HGLRCgetOverlayContext()HWNDgetNormalWidget()HWNDgetOverlayWidget()virtual voidsetNormalVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getNormalVisual()virtual voidsetOverlayVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getOverlayVisual()÷„»ÃÇèÇÇs ´€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag)SbBoolisDrawToFrontBufferEnable() constvoidsetCursor(Cursor newCursor) [Win32 only]CursorgetCursor() [Win32 only]HDCgetNormalDC() [Win32 only]HDCgetOverlayDC() [Win32 only]voidsetStealFocus(SbBool onOrOff) [Win32 only]virtual voidsetPixelFormat(int format) [Win32 only]intgetPixelFormat() [Win32 only]Z(ñÅÇBÈÇ2 4€P€”‘€‚A€ã¹Ä L‰€‚ÿMethods from class SoWinComponent:5ÓèÇÇwÊÇb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬vBÈÇ#ËÇ6 <€ì€T”A‚S~‚A€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() const4wÊÇWËÇ& €€‚A€‚ÿDESCRIPTIONÕ«#ËÇ,ÍÇ* "€W€”‘€‚A€‚ÿThe Plane viewer component allows the user to translate the camera in the viewing plane, as well as dolly (move foward/backward) and zoom in and out. The viewer also allows the user to roll the camera (rotate around the forward direction) and seek to objects which will specify a new viewing plane. This viewer could be used for modeling, in drafting, and architectural work. The camera can be aligned to the X, Y or Z axes.0 WËÇ\ÍÇ& €€‚A€‚ÿMETHODSÌ,ÍÇmÎÇE X€™€T”A‚S~‚A€ƒã‘¶p6‰ã9€õ‰ãrPnÀ‰‚ƒ‚ÿSoWinPlaneViewer(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoWinFullViewer::BuildFlag flag = BUILD_ALL,SoWinViewer::Type type = BROWSER)~SoWinPlaneViewer()Ç—\ÍÇ4ÏÇ0 .€/€”‘€‚A€€€‚ÿConstructor and destructor which specifies the viewer type. Please refer to the SoWinViewer reference pages for a description of the viewer types..mÎÇbÏÇ& €€‚A€‚ÿUSAGEF4ÏǨÏÇ) "€:€”‘€‚A€‚ÿ(For 3-button mouse only.)—jbÏÇKÈ- *€Ô€”‘€‚A€€‚ÿLeft Mouse orLeft + Middle Mouse: Dolly ¨ÏÇKÈ´GÇin and out (gets closer to and further away from the object).wJ¨ÏÇÂÈ- *€”€”‘€‚A€€‚ÿMiddle Mouse orCtrl + Left Mouse: Translate up, down, left and right.ˆ\KÈJÈ, (€¸€”‘€‚A€€‚ÿCtrl + Middle Mouse: Used for roll action (rotates around the viewer forward direction).ª~ÂÈôÈ, (€ü€”‘€‚A€€‚ÿ + Left Mouse: Alternative to the Seek button. Press (but do not hold down) the key, then click on a target object.Q%JÈEÈ, (€J€”‘€‚A€€‚ÿRight Mouse: Open the popup menu.]0ôÈ¢È- (€a€”‘€‚A€€‚ÿALT: (Win32) When the viewer is in selection (a.k.a. pick) mode, pressing and holding the ALT key temporarily switches the viewer to viewing mode. When the ALT key is released, the viewer returns to selection mode. Note: If any of the mouse buttons are currently depressed, the ALT key has no effect.5 EÈ×È) "€€‚A€€ ‚ÿSEE ALSOaÚ¢È8ȇ Ü€µ€”‘€‚AãþÜé*€‰€€"ã9€õ€‰€ãrPnÀ€‰€ã¹Ä L€‰€ãÿ3È€‰€ã7—ìg€‰€ãKã€(€‰€ãm£óh€‰‚ÿPlane Viewer (illustration and additional info about mouse buttons), SoWinFullViewer, SoWinViewer, SoWinComponent, SoWinRenderArea, SoWinWalkViewer, SoWinExaminerViewer, SoWinFlyViewer@×ÈxÈ1÷D2©œ’ xȯÈÉSoWinRenderArea78ȯÈ% €$€ˆˆ€‚ÿSoWinRenderArea*xÈÙÈ# €€€‚ÿNAMEmG¯ÈFÈ& €Ž€”‘€€‚ÿSoWinRenderArea - component for rendering Open Inventor scene graphs3ÙÈyÈ# € €€‚ÿINHERITS FROM}<FÈöÈA R€x€”‘€ã¹Ä L€‰€ã-‹2‘€‰€€€‚ÿSoWinComponent > SoWinGLWidget > SoWinRenderArea2 yÈ(È& €€€€ ‚ÿSYNOPSISR,öÈzÈ& €X€”‘€€‚ÿ#include |I(ÈöÈ3 6€’€T”A‚S~‚A€㑶p6‰ƒ‚ÿtypedef SbBoolSoWinRenderAreaEventCB(void *userData,MSG *anyevent)O&zÈEÈ) "€L€”‘€‚A€‚ÿMethods from class SoWinRenderArea:¦öÈ` Èu ¸€M€T”A‚S~‚A€ƒã‘¶p6‰ã‘¶p6‰ã‘¶p6‰‚ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãÊÌø!‰‚ƒãÊÌø!‰‚ÿSoWinRenderArea(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SbBool getMouseInput = TRUE,SbBool getKeyboardInput = TRUE)~SoWinRenderArea()virtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoWinDevice *)voidunregisterDevice(SoWinDevice *)¶EÈu È_ Œ€m€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ÿvoidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index)intgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)¦` ȇÈl ¦€M€T”A‚S~‚A€ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚ÿconst SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() constvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constµu È©@Èa €k€T”A‚S~‚A㑶p6€‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)SbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetR‡È©@È8ÈedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw() ¦‡ȵBÈf š€M€T”A‚S~‚A€ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ÿvoidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoWinRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)Ô‘©@ȉCÈC T€#€T”A‚S~‚AãQ´tK€‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constU&µBÈÞCÈ/ .€L€”‘€‚A€ã-‹2‘‰‚ÿMethods from class SoWinGLWidget:6׉CÈFÈ_ Œ€¯€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()HWNDgetNormalWindow()HWNDgetOverlayWindow()HGLRCgetNormalContext()HGLRCgetOverlayContext()HWNDgetNormalWidget()HWNDgetOverlayWidget()virtual voidsetNormalVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getNormalVisual()virtual voidsetOverlayVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getOverlayVisual()÷„ÞCÈ HÈs ´€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag)SbBoolisDrawToFrontBufferEnable() constvoidsetCursor(Cursor newCursor) [Win32 only]CursorgetCursor() [Win32 only]HDCgetNormalDC() [Win32 only]HDCgetOverlayDC() [Win32 only]voidsetStealFocus(SbBool onOrOff) [Win32 only]virtual voidsetPixelFormat(int format) [Win32 only]intgetPixelFormat() [Win32 only]V'FÈaHÈ/ .€N€”‘€‚A€ã¹Ä L‰‚ÿMethods from class SoWinComponent:5Ó HÈ–JÈb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬vaHÈBKÈ6 <€ì€T”A‚S~‚A€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() const4–JÈvKÈ& €€‚A€‚ÿDESCRIPTION5BKÈ«MÈ0 .€ €”‘€‚A€€€‚ÿThis class provides Open Inventor rendering and message handling inside a Windows window. There is a routine to specify the scene to render. The scene is automatically rendered whenever anything under it changes (a data sensor is attached to the root of the scene), unless explicitly told not to do so (manual redraws). Users can also set Open Inventor rendering attributes such as the transparency type, antialiasing on or off, etc. This class employs an SoSceneManager to manage rendering and message handling.˜>vKÈOÈZ ‚€}€”‘€‚A€€€€€€€€€€€€€€€€€‚ÿWindows messages that occur in the render area can be handled by the application, by the viewer (if this is really a viewer), or by the nodes in the scene graph. When a message occurs, it is first passed to the application message callback function registered with the setEventCallback() method on SoWinRenderArea. If this function does not exist or returns FALSE, the message is either used directly by the viewer or translated to an SoEvent for further scene graph processing. If the viewer does no«MÈOÈ8Èt handle the message, and an overlay scene graph exists, the SoEvent is sent to that scene graph by way of an SoHandleEventAction. If no node in the overlay scene graph handles the message (i.e., calls setHandled() on the SoHandleEventAction), the SoEvent is passed to the normal scene graph in the same manner.0 «MÈÈ& €€‚A€‚ÿMETHODSý¸OÈ|‚ÈE X€q€T”A‚S~‚A€ƒã‘¶p6‰ã‘¶p6‰ã‘¶p6‰‚ƒ‚ÿSoWinRenderArea(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SbBool getMouseInput = TRUE,SbBool getKeyboardInput = TRUE)~SoWinRenderArea()ÕÈ“ƒÈB R€«€”‘€‚A€€€€€€€€€‚ÿConstructor which is passed arguments which tell it whether to register the mouse and keyboard devices by default (SoWinMouse and SoWinKeyboard). NOTE: On Win32, the buildInsideParent flag must be TRUE.ŽT|‚È!„È: D€¨€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()nE“ƒÈ„È) "€Š€”‘€‚A€‚ÿSet/get the scene graph to be rendered in this component's window.ŒR!„È…È: D€¤€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvoidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()¶Œ„ÈÑ…È* "€€”‘€‚A€‚ÿSet/get the scene graph to be rendered in the overlay plane. NOTE: This feature requires a graphics board that supports an overlay plane.ˆN…ÈY†È: D€œ€T”A‚S~‚A€ƒãÊÌø!‰‚ƒãÊÌø!‰‚ÿvoidregisterDevice(SoWinDevice *)voidunregisterDevice(SoWinDevice *)ÝÑ…È`‡È* "€»€”‘€‚A€‚ÿRegister/unregister interest in devices. When a device is registered, messages from that device will be processed by the render area, and passed into the scene graph. Messages from unregistered devices will be ignored.•[Y†Èõ‡È: D€¶€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ÿvoidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constsJ`‡ÈhˆÈ) "€”€”‘€‚A€‚ÿSet/get the background color for this window. Default is black (0,0,0).rDõ‡ÈÚˆÈ. ,€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constˆ_hˆÈb‰È) "€¾€”‘€‚A€‚ÿSets/gets the window background color when in color index mode. Default is black (index 0)).€RÚˆÈâ‰È. ,€¤€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetOverlayBackgroundIndex(int index)intgetOverlayBackgroundIndex() const}Tb‰È_ŠÈ) "€¨€”‘€‚A€‚ÿSets/gets the overlay window background color index. Default is 0 (clear color)).yEâ‰ÈØŠÈ4 8€Š€T”A‚S~‚A€ƒãÀ"%‰‚ÿvoidsetColorMap(int startIndex,int num,const SbColor *colors)²ˆ_ŠÈŠ‹È* "€€”‘€‚A€‚ÿSets the colors to use when displaying in color index mode. This will load the color map with the given colors at the starting index.€LØŠÈ ŒÈ4 8€˜€T”A‚S~‚A€ƒãÀ"%‰‚ÿvoidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)£zŠ‹È­ŒÈ) "€ô€”‘€‚A€‚ÿSets the colors to use for overlay bit planes.This will load the color map with the given colors at the starting index.­s ŒÈZÈ: D€æ€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ÿvoidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constb9­ŒÈ¼È) "€r€”‘€‚A€‚ÿSets/gets current viewport region to use for rendering‡ZÈ~ŽÈ; D€€T”A‚S~‚A€ƒã©öø(‰‚ã©öø(‰ƒ‚ÿvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¦w¼È$È/ .€î€”‘€‚A€€€‚ÿSet/get the quality level for rendering transparent objects. See SoGLRenderAction for possible transparency types.¶z~ŽÈÚÈ< H€ô€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) const+é$ÈÃÈB R€Ó€”‘€‚A€ÚÈÃÈ8È€€€€€€€€‚ÿSet/get the antialiasing for rendering. There are two kinds of antialiasing available: smoothing and multipass antialiasing. If smoothing is set to TRUE, smoothing is enabled. Smoothing uses OpenGL's line- and point-smoothing features to provide cheap antialiasing of lines and points. The value of numPasses controls multipass antialiasing. Each time a render action is applied, Open Inventor renders the scene numPasses times from slightly different camera positions, averaging the results. numPasses can be from one to 255, inclusive. Setting numPasses to one disables multipass antialiasing. You can use either, both, or neither of these antialiasing techniques. By default, both smoothing and multipass antialiasing are disabled.ê ÚÈûÃÈJ b€A€T”A‚S~‚A€ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() const|RÃÈwÅÈ* "€¥€”‘€‚A€‚ÿEnable/prevent window clearing from happening before a rendering starts (default is clear TRUE). This can be useful to limit flickering when doing single buffering and geometry covers the entire window (used in the material editor). Can also control whether the depth buffer (sometimes called the Z buffer) is cleared before rendering.ŸeûÃÈÆÈ: D€Ê€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() const”kwÅȪÆÈ) "€Ö€”‘€‚A€‚ÿEnable/prevent overlay window clearing from happening before a rendering starts (default is clear TRUE).ƒIÆÈ-ÇÈ: D€’€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetAutoRedraw(SbBool trueOrFalse)SbBoolisAutoRedraw() const®„ªÆÈÛÇÈ* "€ €”‘€‚A€‚ÿThe render area will automatically redraw whenever something in the scene graph changes. Passing FALSE will disable this feature.º‰-ÇÈ•ÈÈ1 0€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()|SÛÇÈÉÈ) "€¦€”‘€‚A€‚ÿSets/gets the priority of the redraw sensor and get the default priority number.S%•ÈÈdÉÈ. ,€J€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidrender()voidrenderOverlay()½“ÉÈ!ÊÈ* "€'€”‘€‚A€‚ÿCalling this forces the render area to be redrawn now. It is not necessary to call this method if auto redraw is enabled (which is the default).c5dÉÈ„ÊÈ. ,€j€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidscheduleRedraw()voidscheduleOverlayRedraw()¡x!ÊÈ%ËÈ) "€ð€”‘€‚A€‚ÿSchedule a redraw to happen sometime soon (as opposed to immediately). This can be used to compress multiple redraws.¡g„ÊÈÆËÈ: D€Î€T”A‚S~‚A€ƒã(ç –‰‚ƒã(ç –‰‚ÿvoidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)O%ËÈÍÈ0 .€?€”‘€‚A€€€‚ÿCall this convenience method to have this render area redraw whenever the selection list changes in the passed node. This is useful if using a highlight render action like the SoBoxHighlightRenderAction to correctly render whenever the selection changes. Pass NULL to turn this off.yLÆËÈŽÍÈ- *€˜€T”A‚S~‚A€ƒ‚ÿvoidsetEventCallback(SoWinRenderAreaEventCB *fcn,void *userData = NULL)Ú¤ÍÈtÉ6 :€I€”‘€‚A€€€€€‚ÿWindows messages which occur in the render area window are either directly handled by the viewer (when this is really a viewer) or automatically translated to SoEvents, then passed into the scene graph (via the SoHandleEventAction) so that live scene graph objects can handle the message (when viewers are not in viewing mode). This method allows the application to register a callback for handling messages that occur in the window, instead of sending them to the viewers or down the graph. The callback is passed the Windows message, and should return TRUE if it haŽÍÈtÉ8Èndled the message. If the callback returns FALSE, then the message will be handled by the render area.š`ŽÍÈÉ: D€À€T”A‚S~‚A€ƒã©öø(‰‚ã©öø(‰ƒ‚ÿvoidsetGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getGLRenderAction() constÛ¥tÉéÉ6 :€K€”‘€‚A€€€€€‚ÿSets/gets the GL render action to use. This is used to set selection highlighting with the SoBoxHighlightRenderAction and SoLineHighlightRenderAction classes.¨nÉ‘É: D€Ü€T”A‚S~‚A€ƒã©öø(‰‚ã©öø(‰ƒ‚ÿvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constb9éÉóÉ) "€r€”‘€‚A€‚ÿSets/gets the GL render action for the overlay window.¼‘ÉúÉK d€y€T”A‚S~‚A€ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constb9óÉ\É) "€r€”‘€‚A€‚ÿSets/gets the normal and overlay plane scene managers.“dúÉïÉ/ .€È€”‘€‚A€€€‚ÿNote: for convenience most of the SoSceneManager methods have already been added to this class.1 \É É& €€‚A€‚ÿSEE ALSOøŒïÉÉl ¦€€”‘€‚Aã-‹2‘€‰€ã¹Ä L€‰€ãrPnÀ€‰€ãQ´tK€‰€ã6 €‰€ãö퀉‚ÿSoWinGLWidget, SoWinComponent, SoWinViewer, SoSceneManager, SoBoxHighlightRenderAction, SoLineHighlightRenderAction? ÉWÉ1'_S© WÉÉsDÉSoWinSpaceball6ÉÉ% €"€ˆˆ€‚ÿSoWinSpaceball*WÉ·É# €€€‚ÿNAME‡aÉ>É& €Â€”‘€€‚ÿSoWinSpaceball - translates and reports events for a spaceball or SpaceMouse (Magellan) device3·ÉqÉ# € €€‚ÿINHERITS FROMY$>ÉÊÉ5 :€H€”‘€ãÊÌø!€‰€€€‚ÿSoWinDevice > SoWinSpaceball2 qÉüÉ& €€€€ ‚ÿSYNOPSISY3ÊÉUÉ& €f€”‘€€‚ÿ#include ¿üÉt É` Ž€€T”A‚S~‚A€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€‚ƒ‚ƒ‚ƒ‚ÿenum Mask{Event mask values: Bitwise OR these to specify which events this device should queue.SoWinSpaceball::MOTION,Spaceball translation and rotationSoWinSpaceball::PRESS,Spaceball button pressSoWinSpaceball::RELEASE,Spaceball button releaseSoWinSpaceball::ALLAll spaceball events}SoWinSpaceball(Mask mask = ALL)~SoWinSpaceball()virtual voidenable(Widget w, XtEventHandler f,XtPointer data, Window win = NULL)ÍxUÉA ÉU x€ñ€T”A‚S~‚A€ƒ‚ã2™|—‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvirtual voiddisable(Widget w, XtEventHandler f, XtPointer data)virtual const SoEvent *translateEvent(XAnyEvent *xevent)voidsetRotationScaleFactor(float f)floatgetRotationScaleFactor() constvoidsetTranslationScaleFactor(float f)floatgetTranslationScaleFactor() conststatic SbBoolexists()voidsetFocusToWindow(SbBool flag)SbBoolisFocusToWindow() const4t Éu É& €€‚A€‚ÿDESCRIPTIONç±A É\ É6 :€c€”‘€‚A€€€€€‚ÿThis class manages events generated by the spaceball, including spaceball motion (SoMotion3Event), and spaceball button press and release events (SoSpaceballButtonEvent).0 u ÉŒ É& €€‚A€‚ÿMETHODSd6\ Éð É. ,€l€T”A‚S~‚A€ƒ‚ƒ‚ÿSoWinSpaceball(Mask mask = ALL)~SoWinSpaceball()GŒ É7É) "€<€”‘€‚A€‚ÿConstructor and destructor.Æ–ð ÉýÉ0 .€-€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidenable(Widget w, XtEventHandler f,XtPointer data, Window win = NULL)virtual voiddisable(Widget w, XtEventHandler f, XtPointer data)ßµ7ÉÜÉ* "€k€”‘€‚A€‚ÿThese functions will enable/disable this device for the passed widget.The callback function f will be invoked when events occur in w. Data is the clientData which will be passed.p>ýÉX@É2 4€|€T”A‚S~‚ÜÉX@ÉÉA€ã2™|—‰ƒ‚ÿvirtual const SoEvent *translateEvent(XAnyEvent *xevent)ŽeÜÉæ@É) "€Ê€”‘€‚A€‚ÿThis converts a system event into an SoEvent, returning NULL if the event is not from this device.ÏœX@ɵAÉ3 4€9€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetRotationScaleFactor(float f)floatgetRotationScaleFactor() constvoidsetTranslationScaleFactor(float f)floatgetTranslationScaleFactor() constÖæ@ɵBÉ* "€­€”‘€‚A€‚ÿThe spaceball reports rotations and translations as integers. These values must be scaled to be useful. these methods allow the scale values to be set. Default values are .006 for translation and .006 for scale.MµAÉCÉ2 4€6€T”A‚S~‚A€㑶p6‰ƒ‚ÿstatic SbBoolexists()f=µBÉhCÉ) "€z€”‘€‚A€‚ÿReturn whether or not the spaceball device exists for use.‚HCÉêCÉ: D€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetFocusToWindow(SbBool flag)SbBoolisFocusToWindow() const‰]hCÉsDÉ, (€º€”‘€‚A€€‚ÿWin32 does not support focus change. These methods are provided for source compatibility.@êCɳDÉ1µ0t£ë”³DÉêDÉbÊSoWinWalkViewer7sDÉêDÉ% €$€ˆˆ€‚ÿSoWinWalkViewer*³DÉEÉ# €€€‚ÿNAMEmGêDÉEÉ& €Ž€”‘€€‚ÿSoWinWalkViewer - viewer component which moves the camera in a plane3EÉ´EÉ# € €€‚ÿINHERITS FROM —EɽFÉr ²€/€”‘€ã¹Ä L€‰€ã-‹2‘€‰€ãÿ3È€‰€ãrPnÀ€‰€ã9€õ€‰€ãx-"€‰€€€‚ÿSoWinComponent > SoWinGLWidget > SoWinRenderArea > SoWinViewer > SoWinFullViewer > SoWinConstrainedViewer > SoWinWalkViewer2 ´EÉïFÉ& €€€€ ‚ÿSYNOPSISX½FÉnGÉ' €°€”‘€€‚‚ÿ#include Methods from class SoWinWalkViewer:ÊïFÉ}HÉE X€•€T”A‚S~‚A€ƒã‘¶p6‰ã9€õ‰ãrPnÀ‰‚ƒ‚ÿSoWinWalkViewer(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoWinFullViewer::BuildFlag flag = BUILD_ALL,SoWinViewer::Type type = BROWSER)~SoWinWalkViewer()^/nGÉÛHÉ/ .€^€”‘€‚A€ãx-"‰‚ÿMethods from class SoWinConstrainedViewer:ŒR}HÉgIÉ: D€¤€T”A‚S~‚A€ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ÿvoidsetUpDirection(const SbVec3f &newUpDirection)SbVec3fgetUpDirection()W(ÛHɾIÉ/ .€P€”‘€‚A€ã9€õ‰‚ÿMethods from class SoWinFullViewer:èŽgIɦKÉZ ‚€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()voidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()HWNDgetAppPushButtonParent() constvoidaddAppPushButton(HWND newButton)voidinsertAppPushButton(HWND newButton,int index)voidremoveAppPushButton(HWND oldButton)intfindAppPushButton(HWND oldButton)intlengthAppPushButton()HWNDgetRenderAreaWidget()S$¾IÉùKÉ/ .€H€”‘€‚A€ãrPnÀ‰‚ÿMethods from class SoWinViewer:[Õ¦KÉTNɆ Ú€«€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒãrPnÀ‰ãrPnÀ‰‚ãrPnÀ‰ƒãrPnÀ‰‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoWinViewer::DrawType type,SoWinViewer::DrawStyle style)SoWinViewer::DrawStylegetDrawStyle(SoWinViewer::DrawType type)—ùKÉr€É{ Ä€/€T”A‚S~‚A€ƒãrPnÀ‰‚ãrPnÀ‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBufferingType(SoWinViewer::BufferType type)SoWinViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual voidsetCursorEnabled(SbBool onOrOff) SbBoolisCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutTNÉr€ÉsDÉoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()!ÐTNÉ“‚ÉQ p€¡€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetStereoOffset(float dist)floatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoWinViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidcopyView(time_t eventTime)"Ír€Éµ„ÉU x€›€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidpasteView(time_t eventTime)voidsetDecimationStrategy(DecimationStrategy strategy)DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal)int32_tgetGoalNumberOfTriangles()voidsetGoalFramesPerSecond(float goal)floatgetGoalFramesPerSecond()voidsetFixedPercentage(float percent)floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff)SbBoolisFullRenderingWhenStill()SbBoolisStillNow() Þ”“‚É“†ÉJ b€)€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚€ƒƒ€‚€ƒƒ€‚ÿvoidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData)voidsetNumSamples(int numFrames)intgetNumSamples() void setDecimationPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL)float getCurrentDecimationPercentage()voidsetCursorStyle( SoWinViewer::CursorStyle style )[Win32 only]SoWinViewer::CursorStylegetCursorStyle()[Win32 only]W(µ„Éê†É/ .€P€”‘€‚A€ãÿ3ȉ‚ÿMethods from class SoWinRenderArea:&µ“†É‰Éq °€k€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãÊÌø!‰‚ƒãÊÌø!‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoWinDevice *)voidunregisterDevice(SoWinDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «ê†É‹Éa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤‰É4Ét ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)7Û‹ÉkÉ\ †€·€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoWinRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºW4É1ÁÉc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvokÉ1ÁÉsDÉidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constU&kɆÁÉ/ .€L€”‘€‚A€ã-‹2‘‰‚ÿMethods from class SoWinGLWidget:6×1ÁɼÃÉ_ Œ€¯€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()HWNDgetNormalWindow()HWNDgetOverlayWindow()HGLRCgetNormalContext()HGLRCgetOverlayContext()HWNDgetNormalWidget()HWNDgetOverlayWidget()virtual voidsetNormalVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getNormalVisual()virtual voidsetOverlayVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getOverlayVisual()÷„†ÁɳÅÉs ´€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag)SbBoolisDrawToFrontBufferEnable() constvoidsetCursor(Cursor newCursor) [Win32 only]CursorgetCursor() [Win32 only]HDCgetNormalDC() [Win32 only]HDCgetOverlayDC() [Win32 only]voidsetStealFocus(SbBool onOrOff) [Win32 only]virtual voidsetPixelFormat(int format) [Win32 only]intgetPixelFormat() [Win32 only]V'¼ÃÉ ÆÉ/ .€N€”‘€‚A€ã¹Ä L‰‚ÿMethods from class SoWinComponent:5Ó³ÅÉ>ÈÉb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬v ÆÉêÈÉ6 <€ì€T”A‚S~‚A€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() const4>ÈÉÉÉ& €€‚A€‚ÿDESCRIPTIONëÁêÈÉ ËÉ* "€ƒ€”‘€‚A€‚ÿThe paradigm for this viewer is a walk-through of an architectural model. Its primary behavior is forward, backward, and left/right turning motion while maintaining a constant "eye level". It is also possible to stop and look around at the scene. The eye level plane can be disabled, allowing the viewer to proceed in the "look at" direction, as if on an escalator. The eye level plane can also be translated up and down - similar to an elevator.0 ÉÉ9ËÉ& €€‚A€‚ÿMETHODSÊ ËÉHÌÉE X€•€T”A‚S~‚A€ƒã‘¶p6‰ã9€õ‰ãrPnÀ‰‚ƒ‚ÿSoWinWalkViewer(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoWinFullViewer::BuildFlag flag = BUILD_ALL,SoWinViewer::Type type = BROWSER)~SoWinWalkViewer()Ç—9ËÉÍÉ0 .€/€”‘€‚A€€€‚ÿConstructor and destructor which specifies the viewer type. Please refer to the SoWinViewer reference pages for a description of the viewer types..HÌÉ=ÍÉ& €€‚A€‚ÿUSAGEFÍɃÍÉ) "€:€”‘€‚A€‚ÿ(For 3-button mouse only.)öÉ=ÍÉyÎÉ- (€“€”‘€‚A€€‚ÿLeft Mouse: Walk mode. Click down and move up and down for fowards and backwards motion. Move right and left for turning. Speed increases exponentially with the distance from the mouse-down origin.xKƒÍÉñÎÉ- *€–€”‘€‚A€€‚ÿMiddle Mouse orCtrl + Left Mouse: Translate up, down, left, and right.šnyÎÉ‹ÏÉ, (€Ü€”‘€‚A€€‚ÿCtrl + Middle Mouse: Tilt the camera up/down and right/left. This allows you to look around while stopped.ª~ñÎÉAÊ, (€ü€”‘€‚A€€‚ÿ + Left Mouse: Alternative to the Seek button. Press (but do not hol‹ÏÉAÊsDÉd down) the key, then click on a target object.ೋÏÉ!Ê- (€g€”‘€‚A€€‚ÿ + Left Mouse: Press (but do not hold down) the key, then click on a target object to set the "up" direction to the surface normal. By default +y is the "up" direction.Q%AÊrÊ, (€J€”‘€‚A€€‚ÿRight Mouse: Open the popup menu.a1!ÊÓÊ0 .€c€”‘€‚A€€€‚ÿALT: (Win32) When the viewer is in selection (a.k.a. pick) mode, pressing and holding the ALT key temporarily switches the viewer to viewing mode. When the ALT key is released, the viewer returns to selection mode. Note: If any of the mouse buttons are currently depressed, the ALT key has no effect.5 rÊÊ) "€€‚A€€ ‚ÿSEE ALSOZÖÓÊbÊ„ Ö€­€”‘€‚Aã9€õ€‰€ãrPnÀ€‰€ã¹Ä L€‰€ãÿ3È€‰€ãîeà€‰€ãKã€(€‰€ãm£óh€‰€€ã‡B艂ÿSoWinFullViewer, SoWinViewer, SoWinComponent, SoWinRenderArea, SoWinPlaneViewer, SoWinExaminerViewer, SoWinFlyViewer, Walk Viewer (illustration and additional info on mouse buttons)= ÊŸÊ1Ñ&Ô‚’•ŸÊÓÊ+‹ÊSoWrapperKit4bÊÓÊ% €€ˆˆ€‚ÿSoWrapperKit*ŸÊýÊ# €€€‚ÿNAMEM'ÓÊJÊ& €N€”‘€€‚ÿSoWrapperKit - wrapper nodekit class3ýÊ}Ê# € €€‚ÿINHERITS FROMËfJÊHÊe š€Ì€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€ãib€‰€ãOËr€‰€€€‚ÿSoBase > SoFieldContainer > SoNode > SoBaseKit > SoSeparatorKit > SoWrapperKit2 }ÊzÊ& €€€€ ‚ÿSYNOPSISRHÊùÊ- *€¤€”‘€€‚ãOËr‰‚ÿ#include Fields from class SoSeparatorKit:³izʬÊJ d€Ò€T”A‚S~‚AãØtW选ƒ‚ãØtW鉃‚ãØtW鉃‚ãØtW鉃‚ÿSoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCullingJ!ùÊöÊ) "€B€”‘€‚A€‚ÿParts from class SoWrapperKit:t:¬ÊjÊ: D€t€T”A‚S~‚A€ã¼ýÓ‰ƒ‚ãÍ\Y‰ƒ‚ÿ(SoTransform)localTransform(SoSeparator)contentsT%öʾÊ/ .€J€”‘€‚A€ãOËr‰‚ÿParts from class SoSeparatorKit: ±jÊÊ Ê[ „€c€T”A‚S~‚A€ãX«]˜‰ƒ‚ãNw¶°‰ƒ‚ã­µš‰ƒ‚ã¼ýÓ‰ƒ‚ãqŠ•±‰ƒ‚ã½á–‰ƒ‚ÿ(SoPickStyle)pickStyle(SoAppearanceKit)appearance(SoUnits)units(SoTransform)transform(SoTexture2Transform)texture2Transform(SoNodeKitListPart)childListG¾Ê Ê) "€<€”‘€‚A€‚ÿParts from class SoBaseKit:W%Ê Êh Ê2 4€J€T”A‚S~‚A€ã½á–‰ƒ‚ÿ(SoNodeKitListPart)callbackListL# Ê´ Ê) "€F€”‘€‚A€‚ÿMethods from class SoWrapperKit:°th Êd Ê< H€è€T”A‚S~‚A€ƒ‚ãõˆ¨f‰ƒ‚ãB-9‰ƒ‚ÿSoWrapperKit()static const SoNodekitCatalog *getClassNodekitCatalog() conststatic SoTypegetClassTypeId()Q"´ ʵ Ê/ .€D€”‘€‚A€ãib‰‚ÿMethods from class SoBaseKit:8®d Êí ÊŠ â€]€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ã’n%9‰ƒãúß~6‰ã‘¶p6‰‚ãXíʉƒ‚ã}鉃ãúß~6‰ã‘¶p6‰ãMy'9‰‚㑶p6‰ƒãúß~6‰ã’n%9‰‚㑶p6‰ƒ‚ÿvirtual const SoNodekitCatalog *getNodekitCatalog() constvirtual SoNode *getPart(const SbName &partName,SbBool makeIfNeeded)SbStringgetPartString(const SoBase *part)virtual SoNodeKitPath *createPathToPart(const SbName &partName,SbBool makeIfNeeded,const SoPath *pathToExtend = NULL)virtual SbBoolsetPart(const SbName &partName,SoNode *newPart)SbBoolset(char *partName,char *parameters)¿}µ ʬÊB T€ú€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿSbBoolset(char *nameValuePairs)static SbBoolisSearchingChildren()static voidsetSearchingChildren(SbBool newVal)Ní ÊúÊ/ .€>€”‘€‚A€ã’n%9‰‚ÿMethods from class SoNode:|¬Ê‚@Ên ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() coúÊ‚@ÊbÊnststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)X)úÊÚ@Ê/ .€R€”‘€‚A€ã¿\%†‰‚ÿMethods from class SoFieldContainer:3®‚@Ê CÊ… Ø€]€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆHÚ@Ê•CÊ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)N CÊãCÊ/ .€>€”‘€‚A€ã}9‰‚ÿMethods from class SoBase:7Þ•CÊEÊY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() constP!ãCÊjEÊ/ .€B€”‘€‚A€ãib‰‚ÿMacros from class SoBaseKit:U)EÊ¿EÊ, (€R€”‘€‚A€€‚ÿSO_GET_PART(kit, partName, partClass)W+jEÊFÊ, (€V€”‘€‚A€€‚ÿSO_CHECK_PART(kit, partName, partClass)4¿EÊJFÊ& €€‚A€‚ÿDESCRIPTION€5FÊÊGÊK d€k€”‘€‚A€€€€€€€€€€€€‚ÿSoWrapperKit is derived from SoSeparatorKit. It adds the capability to wrap an arbitrary scene graph, (non-nodekit), within an SoSeparatorKit, so that it may be used along with other shape kits in a hierarchy. There are two additional parts included in SoWrapperKit: localTransform and contents. ÓJFÊÓHÊ6 :€§€”‘€‚A€€€€€‚ÿThe part contents is an SoSeparator node beneath which any arbitrary scene graph can be added. This is especially useful for importing scene graphs of unknown structure (non-nodekits) into nodekit format.ÃÊGÊ–IÊB R€€”‘€‚A€€€€€€€€€‚ÿSince an SoWrapperKit is a class descended from SoSeparatorKit, it may be put into another SoSeparatorKit's childList..ÓHÊÄIÊ& €€‚A€‚ÿPARTSS!–IÊJÊ2 4€B€T”A‚S~‚A€ã¼ýÓ‰ƒ‚ÿ(SoTransform)localTransformæ°ÄIÊýJÊ6 :€a€”‘€‚A€€€€€‚ÿThis part is an SoTransform node that is used to affect the scene graph defined in contents part. This part is NULL by default and is automatically created if requested.MJÊJKÊ2 4€6€T”A‚S~‚A€ãÍ\Y‰ƒ‚ÿ(SoSeparator)contents)óýJÊsLÊ6 :€ç€”‘€‚A€€€€€‚ÿThis part is an SoSeparator node that contains a user-supplied scene graph. This scene graph can contain any nodes. This part is NULL by default and an SoSeparator is automatically created if the user asks the nodekit to build the part.0 JKÊ£LÊ& €€‚A€‚ÿMETHODS>sLÊáLÊ, (€$€T”A‚S~‚A€ƒ‚ÿSoWrapperKit()8£LÊMÊ) "€€”‘€‚A€‚ÿConstructor.uCáLÊŽMÊ2 4€†€T”A‚S~‚A€ãõˆ¨f‰ƒ‚ÿstatic const SoNodekitCatalog *getClassNodekitCatalog() consts>MÊNÊ5 :€|€”‘€‚A€€€€€‚ÿReturns an SoNodekitCatalog for the class SoWrapperKit.U#ŽMÊVNÊ2 4€F€T”A‚S~‚A€ãB-9‰ƒ‚ÿstatic SoTypegetClassTypeId()S*NÊ©NÊ) "€T€”‘€‚A€‚ÿReturns type identifier for this class.6VNÊßNÊ& € €‚A€‚ÿCATALOG PARTS;©NÊOÊ- *€€”‘€‚‰€ƒ€‚ÿAll Parts‹ßNÊ¥OÊr#´€2ÜI, “ ’ €€€‚ÿ€€€‚ÿ€ €€€‚ÿ€"€€€‚ÿÿÿDefaultNULL¥-OÊV€Êx#À€ZÜI, “ ’ €€€€‚ÿ€€€€‚ÿ€4€¥OÊV€ÊbÊ€€‚ÿ€D€€€‚ÿÿÿPart NamePart TypeTypeDefault¨0¥OÊþ€Êx#À€`ÜI, “ ’ €€€€‚ÿ€ €€€‚ÿ€F€€€‚ÿ€R€€€‚ÿÿÿcallbackListNodeKitListPart--yesŸ'V€ÊÊx#À€NÜI, “ ’ €€€€‚ÿ€€€€‚ÿ€4€€€‚ÿ€@€€€‚ÿÿÿpickStylePickStyle--yes¤,þ€ÊA‚Êx#À€XÜI, “ ’ €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿ€J€€€‚ÿÿÿappearanceAppearanceKit--yes—ÊØ‚Êx#À€>ÜI, “ ’ €€€€‚ÿ€€€€‚ÿ€$€€€‚ÿ€0€€€‚ÿÿÿunitsUnits--yesŸ'A‚ÊwƒÊx#À€NÜI, “ ’ €€€€‚ÿ€€€€‚ÿ€4€€€‚ÿ€@€€€‚ÿÿÿtransformTransform--yes¯7Ø‚Ê&„Êx#À€nÜI, “ ’ €€€€‚ÿ€*€€€‚ÿ€T€€€‚ÿ€`€€€‚ÿÿÿtexture2TransformTexture2Transform--yes¥-wƒÊË„Êx#À€ZÜI, “ ’ €€€€‚ÿ€€€€‚ÿ€@€€€‚ÿ€L€€€‚ÿÿÿchildListNodeKitListPart--yes¤,&„Êo…Êx#À€XÜI, “ ’ €€€€‚ÿ€$€€€‚ÿ€>€€€‚ÿ€J€€€‚ÿÿÿlocalTransformTransform--yesž&Ë„Ê †Êx#À€LÜI, “ ’ €€€€‚ÿ€€€€‚ÿ€2€€€‚ÿ€>€€€‚ÿÿÿcontentsSeparator--yes,o…Ê9†Ê' € €€‚€‚ÿa6 †Êš†Ê+ &€l€”‚±€ƒ€‚ÿExtra Information for List Parts from Above Table’19†Ê,‡Êa#’€bÂmê 7 €€€€‚ÿ€€€€‚ÿ€>€€€‚ÿÿÿPart NameContainer TypePossible Types™8š†ÊŇÊa#’€pÂmê 7 €€€€‚ÿ€ €€€‚ÿ€:€€€‚ÿÿÿcallbackListSeparatorCallback, EventCallback?,‡ÊˆÊ' €0€€‚€‚ÿFILE FORMAT/DEFAULT9ŇÊ=ˆÊ* $€€P„7|‚€‚ÿWrapperKit {-çˆÊj‰ÊF Z€Ï€P„|‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚‚‚ÿrenderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOcallbackListNULLpickStyleNULLappearanceNULLunitsNULLtransformNULLtexture2TransformNULLchildListNULLlocalTransformNULLcontentsNULL}1 =ˆÊ›‰Ê& €€‚€‚ÿSEE ALSOÜj‰Ê+‹Ê´ 6¹€”‘€‚ãNw¶°€‰€ãib€‰€ãásÆú€‰€ã€ÀÏ€‰€ã0d$€‰€ã•£&ô€‰€ã½á–€‰€ã}选€ãõˆ¨f€‰€ã’o>€ãOËr€‰€ãЃ'€‰‚ÿSoAppearanceKit, SoBaseKit, SoCameraKit, SoLightKit, SoNodeKit, SoNodeKitDetail, SoNodeKitListPart, SoNodeKitPath, SoNodekitCatalog, SoSceneKit, SoSeparatorKit, SoShapeKit> ›‰Êi‹Ê1ðë”؃€i‹Êž‹Ê®ÃÊSoWriteAction5+‹Êž‹Ê% € €ˆˆ€‚ÿSoWriteAction*i‹ÊÈ‹Ê# €€€‚ÿNAMEW1ž‹ÊŒÊ& €b€”‘€€‚ÿSoWriteAction - writes a scene graph to a file3È‹ÊRŒÊ# € €€‚ÿINHERITS FROMU ŒÊ§ŒÊ5 :€@€”‘€ãïK€‰€€€‚ÿSoAction > SoWriteAction2 RŒÊÙŒÊ& €€€€ ‚ÿSYNOPSISwP§ŒÊPÊ' € €”‘€€‚‚ÿ#include Methods from class SoWriteAction:ŽRÙŒÊÞÊ< H€¤€T”A‚S~‚A€ƒ‚ƒãa‡kɉ‚ãa‡kɉƒ‚ÿSoWriteAction()SoWriteAction(SoOutput *out)SoOutput *getOutput() constP!PÊ.ŽÊ/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†ÞÊ´Êj ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4.ŽÊ ÀÊ& €€‚A€‚ÿDESCRIPTION´Ê ÀÊ+‹Êå´Ê'ÁÊ6 :€Ë€”‘€‚A€€€€€‚ÿThis class is used for writing scene graphs to files. It contains an SoOutput instance that by default writes to the standard output. Methods on the SoOutput can be called to specify what file or memory buffer to write to.0 ÀÊWÁÊ& €€‚A€‚ÿMETHODS?'ÁÊ–ÁÊ, (€&€T”A‚S~‚A€ƒ‚ÿSoWriteAction()8WÁÊÎÁÊ) "€€”‘€‚A€‚ÿConstructor.T"–ÁÊ"ÂÊ2 4€D€T”A‚S~‚A€ƒãa‡kɉ‚ÿSoWriteAction(SoOutput *out)i:ÎÁÊ‹ÂÊ/ .€t€”‘€‚A€€€‚ÿConstructor that takes an SoOutput to use for output.S!"ÂÊÞÂÊ2 4€B€T”A‚S~‚Aãa‡kÉ€‰ƒ‚ÿSoOutput *getOutput() constc4‹ÂÊAÃÊ/ .€h€”‘€‚A€€€‚ÿReturns pointer to SoOutput instance in action.1 ÞÂÊrÃÊ& €€‚A€‚ÿSEE ALSO< AÃÊ®ÃÊ/ .€€”‘€‚Aãa‡kÉ€‰‚ÿSoOutput?rÃÊíÃÊ1$*΂ÏíÃÊ#ÄÊ;ËWin32 Features6®ÃÊ#ÄÊ% €"€ˆˆ€‚ÿWin32 Features‘líÃÊ´ÅÊ% €Ù€€‚‚ÿThe TGS implementation of Open Inventor for Windows contains a number of innovations specific to the Windows environment. These are in addition to the functionality of the UNIX Open Inventor toolkit, which is provided in its entirety, to allow porting of applications from one environment to the other. Unique features of our Open Inventor for Windows include:öÅ#ÄʪÇÊ1 0€‹€P‘€:‚H€ƒ€€‚ÿ•SoWin Component ClassesA "class for class" equivalent for the SoXt X Windows Component library, adapted for the unique requirements and facilities of the Windows environment. Just like SoXt, SoWin classes include an OpenGL drawing area, an Open Inventor RenderArea which manages a scene graph, and Open Inventor viewers which add lights, cameras and interactivity to a scene. SoWin classes can be used within any application framework (see IVF).+´ÅÊÕÇÊ( €€P‘€:‚H€‚ÿÿΪÇÊÔÉÊ1 0€€P‘€:‚H€ƒ€€‚ÿ•SoXt Wrapper ClassesA set of classes which, as much as possible, exactly mimic the SoXt classes and are based upon the SoWin Windows classes. These SoXt wrapper classes provide true portability for Open Inventor programs which do not make direct calls to Window System functions (i.e., Windows, Xlib, Xt, Motif, etc.). For example, almost all of the standard Inventor Mentor C++ example programs run with essentially no change in the Windows environment.+ÕÇÊÿÉÊ( €€P‘€:‚H€‚ÿ’aÔÉÊ‘ÌÊ1 0€Ã€P‘€:‚H€ƒ€€‚ÿ•Extensions to Mouse Button Definitions for ViewersMouse buttons have predefined meanings in each of the standard Open Inventor viewers (Examiner, Walk, Fly, etc). The standard definitions for X Windows assume a 3-button mouse. These definitions are still supported under Windows, but have been extended to accommodate the use of a one- or two-button mouse. As a general rule, Shift-Left Button is a substitute for the middle mouse button in the standard Open Inventor viewers. (Note, however, that SoWinRenderArea does not convert Shift-Left in either the raw event callback or the SoEvent handling.).+ÿÉʼÌÊ( €€P‘€:‚H€‚ÿ¢q‘ÌÊ^ÎÊ1 0€ã€P‘€:‚H€ƒ€€‚ÿ•IVF ClassesA set of classes which integrate Open Inventor with the Microsoft Foundation Classes (MFC) application development framework. IVF classes are based upon the SoWin component classes but shield the application from this level of detail. IVF classes also handle much of the complexity of when and where to do various operations within the MFC framework.+¼ÌʉÎÊ( €€P‘€:‚H€‚ÿ¦u^ÎÊ;Ë1 0€ë€P‘€:‚H€ƒ€€‚ÿ•IVF AppWizardA utility similar to the Microsoft "AppWizard", which is used within the Visual C++ environment to build an initial framework for an Open Inventor MFC application. After creating an initial application with the MFC AppWizard, the IVF AppWizard will add the necessary IVF classes. Applications can be created‰ÎÊ;Ë®ÃÊ with a simple RenderArea or any of the standard Open Inventor viewers - walk, examiner, and fly-through - including a fully functional SceneViewer. A SceneViewer application is capable of selecting objects in the scene, attaching manipulators, editing colors and materials, and many other operations.B‰ÎÊ}Ë1(Í}˶Ë­ËTechnical Support9;˶Ë% €(€ˆˆ€‚ÿTechnical Support?}ËõË# €8€€‚ÿIf You Have a Question...ëöËàË( €‡€”‘€€‚‚ÿQuestions should be directed to your local site coordinator or hotline contact.If your hotline contact needs to communicate with TGS, he or she may contact the product hotline for assistance.<õËË# €2€€‚ÿContacting the Hotlineb4àË~Ë. *€i€”‘€€‚€€‚ÿIf you are the site coordinator or hotline contact, and your site has a paid-up software support service agreement, you may contact the product hotline using the ways listed below. Please have your customer ID number ready to give the TGS hotline analyst; please include it on all correspondence.E-mailì·ËjË5 8€o€”Ù€‚!€€‚€€‚‚ÿhotline@tgs.com (US, international other than Europe)hotline@europe.tgs.com (Europe)This is the preferred method of communication, especially if test programs need to be sent.5 ~ËŸË, (€€”‘€‚!€€‚ÿPhone˜mjË7Ë+ &€Ú€”Ù€‚!€‚‚‚ÿ800-428-7588 (US domestic only)(33) 5 56 13 37 70 (Europe)858-457-5359 (International other than Europe)3ŸËjË, (€€”‘€‚!€€‚ÿFax{Q7ËåË* $€¢€”Ù€‚!€‚‚ÿ858-452-2547 (US, international other than Europe)(33) 5 56 13 02 10 (Europe)4jËË, (€€”‘€‚!€€‚ÿMail”fåË­Ë. ,€Ì€”Ù€‚!€‚‚‚‚‚‚ÿTemplate Graphics Software5330 Carroll Canyon RoadSuite 201San Diego, CA 92121USAAttn: Hotline6ËãË1À߀ ¦1ãË˪ ËTools8­ËË% €&€ˆˆ€‚ÿTools (SDK Only)'ãËBË$ €€”€‚ÿ‚9ËÄËI#b€r„¿ $€€”ãUÑF€‰‚ÿ€€”‚ÿÿÿivcatConcatenates and converts Open Inventor filesœSBË` ËI#b€¦„¿ $€€”ã\èF€‰‚ÿ€€”‚ÿÿÿivfixRestructures an Open Inventor object for improved rendering performance‚9ÄËâ ËI#b€r„¿ $€€”ãcÌì ‚ÿ€€”‚ÿÿÿivinfoPrints information about Open Inventor filesŸV` Ë ËI#b€¬„¿ $€€”ãb õ ‚ÿ€€”‚ÿÿÿivperfReads an Open Inventor scene graph and analyzes its rendering performance‡>â Ë ËI#b€|„¿ $€€”ã›Æú`€‰‚ÿ€€”‚ÿÿÿivtovrmlConverts a .iv file to VRML 1.0 (or 2.0) format{2 ˃ ËI#b€d„¿ $€€”ã‚]Sý€‰‚ÿ€€”‚ÿÿÿvrmllintChecks a VRML 1.0 file for validity' ˪ Ë$ €€”€‚ÿ5ƒ Ëß Ë1æ‚Ïùƒß Ë ËÀËVRML,ª Ë Ë% €€ˆˆ€‚ÿVRMLdß Ë˜ Ë) €É€€‚€‚‚ÿIntroductionVRML (Virtual Reality Modeling Language) is the file format adopted by the Internet community for 3D geometry data on the World Wide Web. Both individual objects and complete scenes can be defined with VRML. Most of the VRML format is taken directly from the Open Inventor file format and Open Inventor nodes may be mixed with VRML nodes.Ÿp Ë7Ë/ .€à€P‘€:‚H€ƒãmz@ý‰‚ÿ•Release 2.0.2 of Open Inventor from TGS supports the unique VRML1.0 nodes as native Open Inventor nodes. +˜ ËbË( €€P‘€:‚H€‚ÿ^7ËïË/ .€¼€P‘€:‚H€ƒã¦@ý‰‚ÿ•Release 2.4 (and higher) of Open Inventor from TGS supports the VRML 2.0 nodes as well.+bËË( €€P‘€:‚H€‚ÿ¦€ïËÀË& €€‚H€‚ÿThis makes Open Inventor the most powerful tool available for building applications that utilize VRML and 3D on the Internet.9Ë @Ë1¶ÿÿÿÿÿÿÿÿ @Ë<@˸FËVRML 1.0ÀË @ËÀË0 ÀË<@Ë% €€ˆˆ€‚ÿVRML 1.0g? @Ë£@Ë( €~€€‚€‚‚ÿVRML 1.0 NodesThe following VRML 1.0 nodes are supported:t+<@ËAËI#b€VÉ“ $€€”ãFCïÓ€‰‚ÿ€ €”‚ÿÿÿSoAsciiTextSimple 3D text shape nodet+£@Ë‹AËI#b€VÉ“ $€€”ãv‹}€‰‚ÿ€ €”‚ÿÿÿSoFontStyleSimple 3D text style nodeˆ?AËBËI#b€~É“ $€€”ã…AH€‰‚ÿ€€”‚ÿÿÿSoLODDistance-based level-of-detail switching group node„;‹AË—BËI#b€vÉ“ $€€”ã\º˜O€‰‚ÿ€ €”‚ÿÿÿSoWWWAnchorSeparator group node with a URL hyperlink…<BËCËI#b€xÉ“ $€€”ã` ½•€‰‚ÿ€ €”‚ÿÿÿSoWWWInLineNode that refers to children through a URL'—BËCCË$ €€”€‚ÿaCˤEËC T€=€€‚€‚‚€‚€ãȯø~€‰€ã›Æú`‰‚ÿReading .wrl FilesThe new nodes listed above allow you to read .wrl files into Open Inventor applications. Writing .wrl FilesTo have Open Inventor write a VRML 1.0 file, set the file header to the standard VRML 1.0 header, i.e., "#VRML V1.0 ascii" using the setHeaderString method on SoOutput. NOTE: Setting the file header to the VRML 1.0 file header does not cause Open Inventor to convert non-VRML 1.0 nodes into VRML 1.0 nodes. If you need to convert nodes to VRML 1.0, use SoToVRMLAction or the utility program ivtovrml .nCCCËFË+ &€†€€‚€‚€‚ÿToolsWe provide the following tools for handling .wrl files:¦n¤E˸FË8 @€Ü€„H±€ƒã‚]Sý‰ƒ‚ƒã›Æú`‰ƒ‚ÿvrmllintChecks a VRML 1.0 file for validityivtovrmlConverts a .iv file to VRML 1.0 (or 2.0) format9FËñFË1¸2†1Ï€ËñFË!GËß ÌVRML 2.00 ¸FË!GË% €€ˆˆ€‚ÿVRML 2.0ÕŸñFËöGË6 :€A€‚H€‚€‚‚†"€9ƒ‚ÿVRML 2.0 NodesThe following VRML 2.0 nodes are supported. For additional information, see the end of this topic.Action not implemented for this node. _0!GËUHË/ .€b€‚H€†"€:ƒ‚ÿAction partially implemented for this node.(öGË}HË% €€‚H€‚ÿy0UHËöHËI#b€`6Å $€€”ã¸@Òm€‰‚ÿ€"€”‚ÿÿÿSoVRMLAnchorGroup node with URL hyperlinkŠA}HË€IËI#b€‚6Å $€€”ãƒ'ó(€‰‚ÿ€*€”‚ÿÿÿSoVRMLAppearanceSpecifies a material node and texture nodez(öHËúIËR#t€R6Å 6€€”ã3 $/€‰†"€9‚ÿ€.€”‚ÿÿÿSoVRMLAudioClip Audio data node-€IËyJËR#t€\6Å 6€€”ã!ö‡Ù€‰†"€9‚ÿ€0€”‚ÿÿÿSoVRMLBackground Color backdrop nodeÅ|úIË>KËI#b€ø6Å $€€”ãTÄLø€‰‚ÿ€(€”‚ÿÿÿSoVRMLBillboardGrouping node that modifies its coordinate system so that its local Z-axis always points at the viewergyJË¥KËI#b€<6Å $€€”ãì΀‰‚ÿ€€”‚ÿÿÿSoVRMLBoxBox shape nodešH>KË?LËR#t€’6Å 6€€”ãûª®€‰†"€:‚ÿ€.€”‚ÿÿÿSoVRMLCollision Grouping node that controls collision detection˜O¥KË×LËI#b€ž6Å $€€”ãè.°&€‰‚ÿ€ €”‚ÿÿÿSoVRMLColorSpecifies RGB colors to be used in the fields of another nodeF?LËfMËI#b€Œ6Å $€€”ã7Ùïu€‰‚ÿ€8€”‚ÿÿÿSoVRMLColorInterpolatorInterpolates among a set of color valuesi ×LËÏMËI#b€@6Å $€€”ãžãž$€‰‚ÿ€€”‚ÿÿÿSoVRMLConeCone shape nodeo&fMË>NËI#b€L6Å $€€”ãÏ~)§€‰‚ÿ€*€”‚ÿÿÿSoVRMLCoordinateCoordinate node™PÏMË×NËI#b€ 6Å $€€”ãŽD,€‰‚ÿ€B€”‚ÿÿÿSoVRMLCoordinateInterpolatorInterpolates among a set of coordinate valuesq(>NËHOËI#b€P6Å $€€”ãý ŽF€‰‚ÿ€&€”‚ÿÿÿSoVRMLCylinderCylinder shape node›I×NË €ËR#t€”6Å 6€€”ã7.~¹€‰†"€9‚ÿ€8€”‚ÿÿÿSoVRMLCylinderSensor Maps pointing device motion onto a cylinderHOË €Ë¸FË’IHOËž€ËI#b€’6Å $€€”ã_¶VF€‰‚ÿ€6€”‚ÿÿÿSoVRMLDirectionalLightNode representing a directional light source©` €ËGËI#b€À6Å $€€”ãühÁ€‰‚ÿ€0€”‚ÿÿÿSoVRMLElevationGridSpecifies a uniform rectangular grid of varying height in the XZ plane¦]ž€ËíËI#b€º6Å $€€”ãn8ád€‰‚ÿ€(€”‚ÿÿÿSoVRMLExtrusionSpecifies geometric shapes based on a 2D cross section along a 3D spiner GË_‚ËR#t€B6Å 6€€”ã¿2΀‰†"€9‚ÿ€"€”‚ÿÿÿSoVRMLFog Simulates fog‡>íËæ‚ËI#b€|6Å $€€”ãK¹wi€‰‚ÿ€(€”‚ÿÿÿSoVRMLFontStyleSpecifies font size, family, style, etc.‘H_‚ËwƒËI#b€6Å $€€”ãåC’€‰‚ÿ€&€”‚ÿÿÿSoVRMLGeometryAbstract base class for all VRML 2.0 geometry nodes“Jæ‚Ë „ËI#b€”6Å $€€”ãH#G½€‰‚ÿ€(€”‚ÿÿÿSoVRMLGridShapeAbstract base class for the SoVRMLElevationGrid nodeewƒËo„ËI#b€86Å $€€”㔄'€‰‚ÿ€ €”‚ÿÿÿSoVRMLGroupGroup noder) „Ëá„ËI#b€R6Å $€€”ã§ûrZ€‰‚ÿ€.€”‚ÿÿÿSoVRMLImageTextureTexture map node…<o„Ëf…ËI#b€x6Å $€€”ãE}€‰‚ÿ€2€”‚ÿÿÿSoVRMLIndexedFaceSetIndexed polygonal face shape node”Ká„Ëú…ËI#b€–6Å $€€”ãrïØ›€‰‚ÿ€,€”‚ÿÿÿSoVRMLIndexedLineAbstract base class for the SoVRMLIndexLineSet node6f…Ëy†ËI#b€l6Å $€€”ã슆/€‰‚ÿ€2€”‚ÿÿÿSoVRMLIndexedLineSetIndexed polyline shape nodeŽEú…ˇËI#b€Š6Å $€€”ãsÐÛ.€‰‚ÿ€.€”‚ÿÿÿSoVRMLIndexedShapeAbstract base class for SoVRMLIndexedFaceSetFy†Ë–‡ËI#b€Œ6Å $€€”ã¼ö³€‰‚ÿ€"€”‚ÿÿÿSoVRMLInlineGrouping node that refers to children through a URLŒC‡Ë"ˆËI#b€†6Å $€€”ãéf€‰‚ÿ€.€”‚ÿÿÿSoVRMLInterpolatorAbstract base class for VRML interpolators‰@–‡Ë«ˆËI#b€€6Å $€€”ã`Zh€‰‚ÿ€.€”‚ÿÿÿSoVRMLInterpOutputClass for all VRML interpolator outputsŸV"ˆËJ‰ËI#b€¬6Å $€€”ã ï‹}€‰‚ÿ€6€”‚ÿÿÿSoVRMLInterpOutputListMaintains a list of pointers to VRML interpolator outputs‹B«ˆËÕ‰ËI#b€„6Å $€€”ãgB~(€‰‚ÿ€ €”‚ÿÿÿSoVRMLLightAbstract base class for all VRML 2.0 light nodesŒCJ‰ËaŠËI#b€†6Å $€€”ã^΀‰‚ÿ€€”‚ÿÿÿSoVRMLLODDistance-based level-of-detail switching group node~5Õ‰ËߊËI#b€j6Å $€€”ãNô—€‰‚ÿ€&€”‚ÿÿÿSoVRMLMaterialSurface material definition node„2aŠËc‹ËR#t€f6Å 6€€”ãŽä ú€‰†"€9‚ÿ€4€”‚ÿÿÿSoVRMLMovieTexture Texture and sound node®\ߊËŒËR#t€º6Å 6€€”ã}@/€‰†"€:‚ÿ€8€”‚ÿÿÿSoVRMLNavigationInfo Describes physical characteristics of viewer and viewing modelˆ?c‹Ë™ŒËI#b€~6Å $€€”ãBøà€‰‚ÿ€"€”‚ÿÿÿSoVRMLNormalNode that defines surface normals for shapes‹BŒË$ËI#b€„6Å $€€”ã16aø€‰‚ÿ€:€”‚ÿÿÿSoVRMLNormalInterpolatorInterpolates among a set of normals˜O™ŒË¼ËI#b€ž6Å $€€”ãLžË€‰‚ÿ€D€”‚ÿÿÿSoVRMLOrientationInterpolatorInterpolates among a set of rotation valuesžU$ËZŽËI#b€ª6Å $€€”ãy­î€‰‚ÿ€"€”‚ÿÿÿSoVRMLParentAbstract base class for all VRML grouping nodes that have childrenn%¼ËÈŽËI#b€J6Å $€€”ã˜ú뀉‚ÿ€.€”‚ÿÿÿSoVRMLPixelTextureTexture node•CZŽË]ËR#t€ˆ6Å 6€€”ã[Eì €‰†"€9‚ÿ€2€”‚ÿÿÿSoVRMLPlaneSensor Maps pointing device motion onto a plane†=ÈŽË ÀËI#b€z6Å $€€”ãm=9€‰‚ÿ€*€”‚ÿÿÿSoVRMLPointLightNode representing a point light source]Ë À˸FËr)]Ë~ÀËI#b€R6Å $€€”ã9¬ö2€‰‚ÿ€&€”‚ÿÿÿSoVRMLPointSetPoint set shape node•L ÀËÁËI#b€˜6Å $€€”ãOa*$€‰‚ÿ€>€”‚ÿÿÿSoVRMLPositionInterpolatorInterpolates among a set of position values½t~ÀËÐÁËI#b€è6Å $€€”ã²íC€‰‚ÿ€4€”‚ÿÿÿSoVRMLProximitySensorGenerates events when the user moves into, out of, or within a specified region of spaceGÁË`ÂËI#b€Ž6Å $€€”ãæ†zy€‰‚ÿ€:€”‚ÿÿÿSoVRMLScalarInterpolatorInterpolates among a set of float values‹9ÐÁËëÂËR#t€t6Å 6€€”ãF¸_ €‰†"€9‚ÿ€(€”‚ÿÿÿSoVRMLScript Used to program behavior in a scene”K`ÂËÃËI#b€–6Å $€€”ãž ê)€‰‚ÿ€ €”‚ÿÿÿSoVRMLShapeDefines a shape by specifying its appearance and geometryŸMëÂËÄËR#t€œ6Å 6€€”ãÀó)€‰†"€9‚ÿ€&€”‚ÿÿÿSoVRMLSound Specifies position and spatial representation of a soundm$ÃË‹ÄËI#b€H6Å $€€”ãè¤ù €‰‚ÿ€"€”‚ÿÿÿSoVRMLSphereSphere shape node—EÄË"ÅËR#t€Œ6Å 6€€”ãšEp†€‰†"€9‚ÿ€4€”‚ÿÿÿSoVRMLSphereSensor Maps pointing device motion onto a sphereƒ:‹ÄË¥ÅËI#b€t6Å $€€”ã} Áý€‰‚ÿ€(€”‚ÿÿÿSoVRMLSpotLightNode representing a spotlight source†="ÅË+ÆËI#b€z6Å $€€”ã'ph €‰‚ÿ€"€”‚ÿÿÿSoVRMLSwitchGroup node that traverses one chosen childi ¥ÅË”ÆËI#b€@6Å $€€”ãä<³$€‰‚ÿ€€”‚ÿÿÿSoVRMLTextText shape node~5+ÆËÇËI#b€j6Å $€€”ãÜl€‰‚ÿ€8€”‚ÿÿÿSoVRMLTextureCoordinateTexture coordinate node8”ÆË“ÇËI#b€p6Å $€€”ã8½b€‰‚ÿ€6€”‚ÿÿÿSoVRMLTextureTransformDefines a 2D transformation6ÇËÈËI#b€l6Å $€€”ãRíß‘€‰‚ÿ€*€”‚ÿÿÿSoVRMLTimeSensorGenerates events as time passes¢Y“ÇË´ÈËI#b€²6Å $€€”ãn=Tò€‰‚ÿ€,€”‚ÿÿÿSoVRMLTouchSensorDetects when the user has pointed at a specific piece of geometryžUÈËRÉËI#b€ª6Å $€€”ã‘H÷!€‰‚ÿ€(€”‚ÿÿÿSoVRMLTransformGrouping node that defines a coordinate system for its childrenŒC´ÈËÞÉËI#b€†6Å $€€”ã )€‰‚ÿ€*€”‚ÿÿÿSoVRMLVertexLineAbstract base class for SoVRMLIndexedLineSetGRÉËnÊËI#b€Ž6Å $€€”ã™)¼Œ€‰‚ÿ€,€”‚ÿÿÿSoVRMLVertexPointAbstract base class for the SoVRMLPointSet node–MÞÉËËËI#b€š6Å $€€”ã&òO€‰‚ÿ€,€”‚ÿÿÿSoVRMLVertexShapeAbstract base class for the SoVRMLIndexedFaceSet nodešQnÊËžËËI#b€¢6Å $€€”ãìè’z€‰‚ÿ€(€”‚ÿÿÿSoVRMLViewpointSpecifies position from which the user might view the scene¡OËË?ÌËR#t€ 6Å 6€€”ã/\»€‰†"€9‚ÿ€<€”‚ÿÿÿSoVRMLVisibilitySensor Detects visibility changes of a rectangular boxƒ:žËËÂÌËI#b€t6Å $€€”ãmÓR€‰‚ÿ€(€”‚ÿÿÿSoVRMLWorldInfoContains information about the world…Y?ÌËGÍË, (€²€€‚€‚€‚‚ÿAdditional VRML ClassesThe following classes provide additional support for VRML.šQÂÌËáÍËI#b€¢]z $€€”ãüêëN€‰‚ÿ€2€”‚ÿÿÿSoVRMLEXTERNPROTODefContains the internal definition of an externprototypeÔŠGÍ˵ÎËJ#b€]z $€€”ãYca€‰‚ÿ€6€”‚ÿÿÿSoVRMLEXTERNPROTOFieldContains the internal definition for one of an externprototype's fields, exposedFields, eventIns or eventOutsµláÍËjÏËI#b€Ø]z $€€”ã3ýØ‘€‰‚ÿ€>€”‚ÿÿÿSoVRMLEXTERNPROTOFieldListMaintains a list of pointers to the field definitions of an externprototypeˆ?µÎË ÌI#b€~]z $€€”ã cM€‰‚ÿ€<€”‚ÿÿÿSoVRMLEXTERNPROTOInstance Instance of an externprototypejÏË Ì¸FËDjÏË™ÌI#b€ˆ]z $€€”ã¸>Ó€‰‚ÿ€&€”‚ÿÿÿSoVRMLPROTODefContains the internal definition of a prototypeÆ} Ì_ÌI#b€ú]z $€€”ã5,ß”€‰‚ÿ€*€”‚ÿÿÿSoVRMLPROTOFieldContains the internal definition for one of a prototype's fields, exposedFields, eventIns or eventOuts¨_™ÌÌI#b€¾]z $€€”ãOõt†€‰‚ÿ€2€”‚ÿÿÿSoVRMLPROTOFieldListMaintains a list of pointers to the field definitions of a prototypez1_ÌÌI#b€b]z $€€”ãbÉ×p€‰‚ÿ€0€”‚ÿÿÿSoVRMLPROTOInstanceInstance of a prototype'ę̂Ì= H€Õ€€‚€‚€ ‚€‚€€€€#‚ÿAdditional InformationRoutesRoutes are Open Inventor field-to-field connections. When Open Inventor reads a VRML 2.0 file, it automatically creates the connections specified by the Route statements, if any. When Open Inventor writes a file with a VRML 2.0 header, it automatically generates Route statements for any field-to-field connections that exist. An application can create field-to-field connections in the usual way (field->connectFrom) or by using SoDB::createRoute.¹̬ÌK d€s€€‚€‚€€€ã~X+€‰€ã›Æú`‰€#‚€‚ÿWriting a VRML 2.0 FileTo have Open Inventor write a VRML 2.0 file, set the file header to the standard VRML 2.0 header, i.e., "#VRML V2.0 utf8" using the setHeaderString method on SoOutput. NOTE: Setting the file header to the VRML 2.0 file header does not cause Open Inventor to convert non-VRML 2.0 nodes into VRML 2.0 nodes. If you need to convert nodes to VRML 2.0, use SoToVRML2Action or the utility program ivtovrml.3¨Ìß Ì$ €€€‚ÿOpen Inventor uses the file header to determine how node (class) names should be handled when reading or writing a file. If the file header is an Open Inventor header, e.g. "#Inventor V2.1 ascii", then all nodes will be read (and written) using their internal class names. This means that VRML 2.0 nodes will be written as (for example) "VRMLTransform", to ensure that they do not conflict with pre-existing Open Inventor node class names. It also means that "Transform" will be read as an SoTransform node, while "VRMLTransform" will be read as an SoVRMLTransform node. If the file header is "#VRML V2.0 utf8", then VRML 2.0 nodes are written without the "VRML" prefix and "Transform" will be read as an SoVRMLTransform node. An SoTransform node will be written as "SoTransform".G¬Ì& Ì1„ D¦‚˜ÿÿÿÿ& Ì`DÌViewer Examiner vieweríµß Ì Ì8 >€m€€‚€‚‚†"€;‚‚€‚ÿExaminer ViewerThe Examiner Viewer uses a virtual trackball to view the data. By default, the Scene Viewer comes up in Examiner Viewer mode.Viewer-Specific Mouse Controlsr.& Ì… ÌD#X€\)Œ €€”€‚ÿ€€”‚‚ÿÿÿLeft Spin (rotate the virtual trackball)¦[ Ì+ ÌK#f€¶)Œ (€€”€€€‚ÿ€n€”‚ÿÿÿMiddle or + Left or + Left (Win32) Pan (translate up/down/left/right)¥Z… ÌÐ ÌK#f€´)Œ (€€”€€€‚ÿ€€”‚ÿÿÿ + Middle orLeft + Middle or + + Left (Win32)Dolly in and out'+ Ì÷ Ì$ €€”€‚ÿ5Ð Ì, Ì# €$€€‚ÿCommon ControlsÛ÷ ÌÌK#d€!Ìì €€”€‚ÿ €€”€€‚‚ÿÿÿ + ClickSeek ModeAfter pressing (and releasing) the key, the cursor changes to a "target" shape. Click on the desired seek point with the left mouse button. This key has the same effect as the Seek button in the viewer decoration. After clicking on the seek point, the camera will be automatically moved to view the seek point (by default it uses the surface normal at the seek point).€5, Ì“@ÌK#d€kÌì €€”€‚ÿ €€”€€‚‚ÿÿÿToggle between Viewing and Selection ModesPressing the key toggles the viewer between Viewing mode ("hand" cursor) and Selection mode ("arrow" cursor). This Ì“@Ìß Ìkey has the same effect as the Viewing and Selection buttons in the viewer decoration, as well as the Viewing item in the popup menu.m"ÌBÌK#d€EÌì €€”€‚ÿ €€”€€‚‚ÿÿÿRight MouseDisplay the Viewer Popup MenuThe popup menu items allow you to change most of the viewer properties, such as drawing mode ("as is", "wireframe", etc.). There are also popup menu items corresponding to most of the viewer decoration buttons (Home, Set Home, View All, etc.)ŸK“@ÌŸCÌT#v€—Ìì €€”€€‚ÿ,€€”€€‚€€‚ÿÿÿSwitch temporarily to Viewing Mode (Win32)When the viewer is in Selection mode, pressing and holding the ALT key temporarily switches the viewer to Viewing mode. When the ALT key is released, the viewer returns to Selection mode. Note: If any of the mouse buttons are currently depressed, the ALT key has no effect.-BÌÌCÌ* $€€Pi›~‚i€‚ÿ5 ŸCÌDÌ) "€€‚i€€ ‚ÿSee Also_*ÌCÌ`DÌ5 :€T€”‘€‚iãKã€(€‰ãÚ:%‰‚ÿSoWinExaminerViewer, Viewer ButtonsJD̪DÌ1M ˜1™ÿÿÿÿªDÌ›€ÌViewer Fly-through ViewerË`DÌmEÌ8 >€€€‚€‚‚†"€<‚‚€‚ÿFly-through ViewerThe Fly-through Viewer moves the camera through space, with a constant world up.Viewer-Specific Mouse Controlsd!ªDÌÑEÌC#V€B› €€”€‚ÿ€€”‚ÿÿÿLeft Click to increase speedˆ>mEÌYFÌJ#d€|› &€€”€‚€€‚ÿ€J€”‚ÿÿÿMiddle or + Left (Win32)Click to decrease speedv3ÑEÌÏFÌC#V€f› €€”€‚ÿ€ €”‚ÿÿÿLeft + MiddleClick both simultaneously to stopx2YFÌGGÌF#\€d› €€”€€‚ÿ€F€”‚ÿÿÿ + + Left (Win32)Click to stopŒIÏFÌÓGÌC#V€’› €€”€‚ÿ€€”‚ÿÿÿHold the key down to temporarily stop and rotate the viewpoint>ùGGÌIÌE#X€ó› €€”€‚ÿ€ €”‚‚ÿÿÿSet "Up" DirectionAfter pressing the key, click on a target object with the left mouse button to set the "up" direction to the surface normal at that point. By default "up" is +Y. Press again to exit this mode without changing "up".@ÓGÌQIÌ+ &€*€”€‚€€‚ÿCommon Controlsã’IÌ4KÌQ#p€%Ìì €€”€€‚ÿ&€€”€€‚€‚ÿÿÿ + ClickSeek ModeAfter pressing (and releasing) the key, the cursor changes to a "target" shape. Click on the desired seek point with the left mouse button. This key has the same effect as the Seek button in the viewer decoration. After clicking on the seek point, the camera will be automatically moved to view the seek point (by default it uses the surface normal at the seek point).ˆ7QI̼LÌQ#p€oÌì €€”€€‚ÿ&€€”€€‚€‚ÿÿÿToggle between Viewing and Selection ModesPressing the key toggles the viewer between Viewing mode ("hand" cursor) and Selection mode ("arrow" cursor). This key has the same effect as the Viewing and Selection buttons in the viewer decoration, as well as the Viewing item in the popup menu.u$4KÌ1NÌQ#p€IÌì €€”€€‚ÿ&€€”€€‚€‚ÿÿÿRight MouseDisplay the Viewer Popup MenuThe popup menu items allow you to change most of the viewer properties, such as drawing mode ("as is", "wireframe", etc.). There are also popup menu items corresponding to most of the viewer decoration buttons (Home, Set Home, View All, etc.)›J¼LÌÌOÌQ#p€•Ìì €€”€‚ÿ,€€”€€‚€€‚ÿÿÿSwitch temporarily to Viewing Mode (Win32)When the viewer is in Selection mode, pressing and holding the ALT key temporarily switches the viewer to Viewing mode. When the ALT key is released, the viewer returns to Selection mode. Note: If any of the mouse buttons are currently depressed, the ALT key has no effect.-1NÌ €Ì* $€€Pi›~‚i€‚ÿÌOÌ €Ì`DÌ5 ÌOÌA€Ì) "€€‚i€€ ‚ÿSee AlsoZ% €Ì›€Ì5 :€J€”‘€‚iãm£óh€‰ãÚ:%‰‚ÿSoWinFlyViewer, Viewer ButtonsDA€Ì߀Ì1¸ ¦‚˜y™ÿÿÿÿ߀ÌS‹ÌViewer Plane Viewer9›€Ì‚Ì8 >€€€‚€‚‚†"€=‚‚€‚ÿPlane ViewerThe Plane Viewer constrains the camera to move only parallel to the view plane. Convenience buttons are provided (right side of viewer decorations) to set the camera in each of the major planes (X, Y, Z).Viewer-Specific Mouse Controlsn*߀̆‚ÌD#X€T• €€”€‚‚ÿ€0€”‚ÿÿÿLeft orLeft + MiddleDolly in and out¥Z‚Ì+ƒÌK#f€´• (€€”€‚‚€€‚ÿ€l€”‚ÿÿÿMiddle or + Left or + Left (Win32)Pan (translate up/down/left/right)‡=†‚̲ƒÌJ#d€z• &€€”€‚€€‚ÿ€n€”‚ÿÿÿ + Middle or + + Left (Win32)Roll'+ƒÌÙƒÌ$ €€”€‚ÿA²ƒÌ„Ì, (€*€€€ €€ ‚ÿCommon Controlsã’ÙƒÌý…ÌQ#p€%Ìì €€”€€‚ÿ&€€”€€‚€‚ÿÿÿ + ClickSeek ModeAfter pressing (and releasing) the key, the cursor changes to a "target" shape. Click on the desired seek point with the left mouse button. This key has the same effect as the Seek button in the viewer decoration. After clicking on the seek point, the camera will be automatically moved to view the seek point (by default it uses the surface normal at the seek point).ˆ7„Ì…‡ÌQ#p€oÌì €€”€€‚ÿ&€€”€€‚€‚ÿÿÿToggle between Viewing and Selection ModesPressing the key toggles the viewer between Viewing mode ("hand" cursor) and Selection mode ("arrow" cursor). This key has the same effect as the Viewing and Selection buttons in the viewer decoration, as well as the Viewing item in the popup menu.u$ý…ÌúˆÌQ#p€IÌì €€”€€‚ÿ&€€”€€‚€‚ÿÿÿRight MouseDisplay the Viewer Popup MenuThe popup menu items allow you to change most of the viewer properties, such as drawing mode ("as is", "wireframe", etc.). There are also popup menu items corresponding to most of the viewer decoration buttons (Home, Set Home, View All, etc.)›J…‡Ì•ŠÌQ#p€•Ìì €€”€‚ÿ,€€”€€‚€€‚ÿÿÿSwitch temporarily to Viewing Mode (Win32)When the viewer is in Selection mode, pressing and holding the ALT key temporarily switches the viewer to Viewing mode. When the ALT key is released, the viewer returns to Selection mode. Note: If any of the mouse buttons are currently depressed, the ALT key has no effect.-úˆÌŠÌ* $€€Pi›~‚i€‚ÿ5 •ŠÌ÷ŠÌ) "€€‚i€€ ‚ÿSee Also\'ŠÌS‹Ì5 :€N€”‘€‚iãîeà€‰ãÚ:%‰‚ÿSoWinPlaneViewer, Viewer ButtonsC÷ŠÌ–‹Ì1<1™‰‚ÿÿÿÿ–‹Ì^ÉÌViewer Walk Viewer—`S‹Ì-ŒÌ7 >€Â€€‚€‚‚†"€>‚‚€‚ÿWalk ViewerThe Walk Viewer moves the camera in a plane.Viewer-Specific Mouse Controls|7–‹Ì©ÌE#X€ož €€”€‚ÿ€€”‚‚ÿÿÿLeftWalk AroundPressing the left mouse button causes a "box" to appear at the cursor position. Moving the cursor above or below the box moves you forward and backward. Moving the cursor to the right or left of the box makes you turn. Speed depends on the distance of the cursor from the center of the box.¥Z-ŒÌNŽÌK#f€´ž (€€”€‚‚€€‚ÿ€l€”‚ÿÿÿMiddle or + Left or + Left (Win32)Pan (translate up/down/left/right)&Ù©Ì€ÀÌM#h€³ž (€€”€‚‚€€‚ÿ€€”‚‚ÿÿÿLeft + Middle or + Middle or + + Left (Win32)Tilt/Rotate "look at" DirectionWhile holding Middle Mouse down, the cursor changes to a "cross" shape and moving the mouse tilts (up/down) and rotates (left/right) the viewpoint. Note that this does not change the direction you are walking, only the direction you are looking. You canNŽÌ€ÀÌS‹Ì be walking in one direction and looking in a different direction (e.g., walking along looking down at the floor).>ùNŽÌ¾ÁÌE#X€óž €€”€‚ÿ€ €”‚‚ÿÿÿSet "Up" DirectionAfter pressing the key, click on a target object with the left mouse button to set the "up" direction to the surface normal at that point. By default "up" is +Y. Press again to exit this mode without changing "up".'€ÀÌåÁÌ$ €€”€‚ÿA¾ÁÌ&ÂÌ, (€*€€€ €€ ‚ÿCommon Controlsã’åÁÌ ÄÌQ#p€%Ìì €€”€€‚ÿ&€€”€€‚€‚ÿÿÿ + ClickSeek ModeAfter pressing (and releasing) the key, the cursor changes to a "target" shape. Click on the desired seek point with the left mouse button. This key has the same effect as the Seek button in the viewer decoration. After clicking on the seek point, the camera will be automatically moved to view the seek point (by default it uses the surface normal at the seek point).ˆ7&ÂÌ‘ÅÌQ#p€oÌì €€”€€‚ÿ&€€”€€‚€‚ÿÿÿToggle between Viewing and Selection ModesPressing the key toggles the viewer between Viewing mode ("hand" cursor) and Selection mode ("arrow" cursor). This key has the same effect as the Viewing and Selection buttons in the viewer decoration, as well as the Viewing item in the popup menu.u$ ÄÌÇÌQ#p€IÌì €€”€€‚ÿ&€€”€€‚€‚ÿÿÿRight MouseDisplay the Viewer Popup MenuThe popup menu items allow you to change most of the viewer properties, such as drawing mode ("as is", "wireframe", etc.). There are also popup menu items corresponding to most of the viewer decoration buttons (Home, Set Home, View All, etc.)›J‘ÅÌ¡ÈÌQ#p€•Ìì €€”€‚ÿ,€€”€€‚€€‚ÿÿÿSwitch temporarily to Viewing Mode (Win32)When the viewer is in Selection mode, pressing and holding the ALT key temporarily switches the viewer to Viewing mode. When the ALT key is released, the viewer returns to Selection mode. Note: If any of the mouse buttons are currently depressed, the ALT key has no effect.-ÇÌÎÈÌ* $€€Pi›~‚i€‚ÿ5 ¡ÈÌÉÌ) "€€‚i€€ ‚ÿSee Also[&ÎÈÌ^ÉÌ5 :€L€”‘€‚iã7—ìg€‰ãÚ:%‰‚ÿSoWinWalkViewer, Viewer Buttons6ÉÌ”ÉÌ1 ÿÿÿÿ`š”ÉÌÁÉÌÍivcat-^ÉÌÁÉÌ% €€ˆˆ€‚ÿivcat*”ÉÌëÉÌ# €€€‚ÿNAME^8ÁÉÌIÊÌ& €p€”‘€€‚ÿivcat - concatenates and converts Open Inventor files. ëÉÌwÊÌ# €€€‚ÿSYNOPSISQ(IÊÌÈÊÌ) "€P€”‘€€€‚ÿivcat [ -bfht ] [-o file] [file ...]1wÊÌùÊÌ# €€€‚ÿDESCRIPTIONh1ÈÊÌaÌÌ7 <€c€”‘€€€€€€€‚‚ÿivcat reads each file in sequence and then writes each out. If no input file is given, or a filename of "-" is specified, ivcat reads from the standard input file. The input files must be valid Open Inventor 3D Interchange Format files (1.0 or 2.0).The following command line options are allowed:°‚ùÊÌÍÌ. *€€P!s‚H€€ƒ‚ÿ-b Write out the files in binary Open Inventor format. The default is to write out the files in Open Inventor's ASCII format.žkaÌ̯ÍÌ3 6€Ö€P!s‚H€€ƒ€€‚ÿ-f Remove all SoFile nodes. This has the effect of condensing hierarchical files into a single file.IÍÌøÍÌ- *€8€P!s‚H€€ƒ‚ÿ-h Print usage message.R¯ÍÌwÎÌ- *€¤€P!s‚H€€ƒ‚ÿ-o file Send the output to the given file, instead of to the standard output.‹^øÍÌÏÌ- *€¼€P!s‚H€€ƒ‚ÿ-t Expand SoTexture2 nodes to explictly include the texture data rather than a file name.,wÎÌ.ÏÌ) "€€P!s‚H€‚ÿ0 ÏÌ^ÏÌ% €€‚H€‚ÿEXAMPLESY1.ÏÌ·ÏÌ( €b€”‘€‚H€‚ÿTo convert from binary to ASCII Open Inventor:N'^ÏÌÍ' €N€Ù€‚H€‚ÿivcat < binaryfile.iv > asciifile·ÏÌÍ^ÉÌ.iv*·ÏÌ;Í' €€Ù€‚H€‚ÿY1Í”Í( €b€”‘€‚H€‚ÿTo convert from ASCII to binary Open Inventor:Q*;ÍåÍ' €T€Ù€‚H€‚ÿivcat -b < asciifile.iv > binaryfile.iv*”ÍÍ' €€Ù€‚H€‚ÿ3åÍBÍ% €€‚H€‚ÿSOURCE CODE‡SÍÉÍ4 8€¦€”‘€‚H€€€€€‚ÿNote that the source code to ivcat comes with the Open Inventor 3D Toolkit. -BÍöÍ% €€‚H€‚ÿFILESŸmÉÍ•Í2 4€Ú€”‘€‚H€€€€‚ÿ%OIVHOME%\data\models\* - Sample Open Inventor data files%OIVHOME%\src\tools\ivcat\* - Source to ivcat0 öÍÅÍ% €€‚H€‚ÿSEE ALSOX•ÍÍ: D€<€”‘€‚Hã +ª€‰€ãšvø¹€‰‚ÿinventor, SceneViewer6ÅÍSÍ1Å}†™PšSÍ€Í CÍivfix-Í€Í% €€ˆˆ€‚ÿivfix*SͪÍ# €€€‚ÿNAMExR€Í"Í& €¤€”‘€€‚ÿivfix - restructures an Open Inventor object for improved rendering performance. ªÍPÍ# €€€‚ÿSYNOPSISl7"ͼÍ5 :€n€”‘€€€€€€€‚ÿivfix [-afhmnptvV ][-d dir ] [infile] [outfile]1PÍíÍ# €€€‚ÿDESCRIPTIONË›¼͸Í0 .€7€”‘€€€€€‚ÿivfix reads an Open Inventor object and restructures it to improve the object's rendering performance. ivfix processes the scene graph in two phases:2 íÍêÍ' €€P!s€‚ÿPhase 1)_8¸ÍIÍ' €q€”‘€€‚ÿAnalyzes the organization of the input scene graph, and tries to sort it a better way to take advantage of coherence. For example, it tries to organize subgraphs by common textures, since switching textures is expensive.Once sorted, it also tries to combine subgraphs so that the final result has fewer nodes.2 êÍ{Í' €€P!s€‚ÿPhase 2)p<IÍë Í4 6€y€”‘€€‚€€€€‚ÿ"Flattens" the subgraphs that result from the first phase.This tessellates all shapes into triangles that are then organized into triangle strips. For example, two spheres may be combined into one triangle strip.Warning! ivfix does not try to preserve any non-appearance attributes, such as names. It will also remove most engines, animation nodes, and field-to-field connections. ivfix is best run on individual objects, not on entire scenes. When rendered, the output object will be equivalent to the original file, but much of the object hierarchy will be lost.ß·{ÍÊ Í( €o€”‘€€‚‚ÿNote also that the output file may be larger than the input file. For example, a sphere node will be converted into triangle strips.The following command line options are allowed:nAë Í8 Í- *€‚€P!s‚H€€ƒ‚ÿ-aWrite an ASCII file. The output file is binary by default.‚OÊ Íº Í3 6€ž€P!s‚H€ƒ€€€‚ÿ-d dirAdd dir to the list of directories to search, e.g. for file nodes.j=8 Í$ Í- *€z€P!s‚H€ƒ€‚ÿ-fProduce independent faces rather than triangle strips.Lº Íp Í- *€>€P!s‚H€ƒ€‚ÿ-hPrint the usage message.â$ ͉ Í7 <€Å€P!s‚H€ƒ€€€€‚ÿ-mDo not try to match up index arrays. By default, ivfix will attempt to generate arrays of normals, vertices, and texture coordinates suitable for the OpenGL VertexArray primitive. This optimization was added by TGS. T$p ÍÝ Í0 0€H€P!s‚H€ƒ€€‚ÿ-nDo not generate any normals.i<‰ ÍFÍ- *€x€P!s‚H€ƒ€‚ÿ-pDo not produce SoVertexProperty nodes for properties.\/Ý Í¢Í- *€^€P!s‚H€ƒ€‚ÿ-tDo not generate any texture coordinates.k>FÍ Í- *€|€P!s‚H€€ƒ‚ÿ-v(Verbose) Display status information during processing.k?¢ÍxÍ, (€~€”‘€‚H€€ƒ‚ÿ-V(Very verbose) Display more detailed status information.3 Í«Í% €€‚H€‚ÿSOURCE CODE‡SxÍ>@Í4 8€¦€”‘€‚H€€€€€‚ÿNote that the source code to iv«Í>@ÍÍfix comes with the Open Inventor 3D Toolkit. -«Ík@Í% €€‚H€‚ÿFILES”b>@Íÿ@Í2 4€Ä€”‘€‚H€€€€‚ÿ%OIVHOME%\data\models\* - Sample 3D data files%OIVHOME%\src\tools\ivfix\* - Source to ivfix0 k@Í/AÍ% €€‚H€‚ÿEXAMPLESQ)ÿ@Í€AÍ( €R€”‘€‚H€‚ÿivfix < slowObject.iv > quickObject.iv0 /AÍ°AÍ% €€‚H€‚ÿSEE ALSOíq€AÍBÍ| Ȁ—‘€‚Hã +ª€‰€€€ãUÑF€‰€ãcÌì €ãšvø¹€‰€€€ã“°#€‰€€€€€€‚ÿinventor, ivview, ivcat, ivinfo, SceneViewer, drop, maze, noodle, revo, textomatic2 °AÍÏBÍ% €€‚H€‚ÿKNOWN BUGSQ)BÍ CÍ( €R€”‘€‚H€‚ÿIgnore flags are not properly handled.7ÏBÍWCÍ1£`š~„šWCÍ…CÍ÷HÍivinfo. CÍ…CÍ% €€ˆˆ€‚ÿivinfo*WCͯCÍ# €€€‚ÿNAME^8…CÍ DÍ& €p€”‘€€‚ÿivinfo - prints information about Open Inventor files. ¯CÍ;DÍ# €€€‚ÿSYNOPSIS? DÍzDÍ) "€,€”‘€€€‚ÿivinfo [-h] [file]1;DÍ«DÍ# €€€‚ÿDESCRIPTION‹UzDÍ6FÍ6 :€«€”‘€€€€€€€‚ÿivinfo prints (to standard output) information about the named file. (If no input file is given, ivinfo reads from the standard input.) The information includes whether the file is in ASCII or binary format, and, for each scene graph in the file, the number of nodes in the graph and the contents of any SoInfo nodes contained in it.- «DÍcFÍ# €€€‚ÿOPTIONSŠ]6FÍíFÍ- *€º€”‘€€‚€€‚ÿThe following command line options are allowed:-h Prints out the usage for the command.1cFÍGÍ# €€€‚ÿSOURCE CODE†TíFͤGÍ2 4€¨€”‘€€€€€€‚ÿNote that the source code to ivinfo comes with the Open Inventor 3D Toolkit. +GÍÏGÍ# €€€‚ÿFILES”d¤GÍcHÍ0 0€È€”‘€€€€€‚ÿ%OIVHOME%\data\models\* - Sample 3D data files%OIVHOME%\src\tools\ivinfo\* - Source to ivinfo. ÏGÍ‘HÍ# €€€‚ÿSEE ALSOf"cHÍ÷HÍD X€D€”‘€ã +ª€‰€ãUÑF€‰€ã“°#€‰‚ÿinventor, ivcat, maze7‘HÍ.IÍ1KPš›.IÍ\IÍ_€Íivperf. ÷HÍ\IÍ% €€ˆˆ€‚ÿivperf*.I͆IÍ# €€€‚ÿNAME~X\IÍJÍ& €°€”‘€€‚ÿivperf - reads in an Open Inventor scene graph and analyzes its rendering performance. †IÍ2JÍ# €€€‚ÿSYNOPSIS}JJͯJÍ3 6€”€”‘€‚H€€‚€ƒ€‚ÿivperf [-b] [-f N] [-w X,Y] datafile-bdisplay results as bar chartR&2JÍKÍ, (€L€”‘€‚H€ƒ€‚ÿ-f Nrender N frames for each testU)¯JÍVKÍ, (€R€”‘€‚H€ƒ€‚ÿ-w X,Ymake window size X by Y pixels3K͉KÍ% €€‚H€‚ÿDESCRIPTIONŠXVKÍMÍ2 2€±€”‘€‚H€€€€‚ÿivperf reads in an Open Inventor scene graph and analyzes its rendering performance. If you know that caches at certain separators will be invalidated because your application changes data under them, name these separators "NoCache" (i.e. DEF NoCache ...). ivperf will then correctly simulate the autocaching behavior on the scene graph. tF‰K͇MÍ. ,€Œ€”‘€‚H€€€‚ÿRunning ivperf without any arguments will list the usage message.!õMͨNÍ, &€ë€”‘€‚H€€‚ÿivperf's output can be graphically displayed in the form of a bar chart. The first bar (red) is the total time taken to render a frame, and the other bars (yellow) are the approximate times spent in each rendering stage. They are (in order):é‡MÍÂOÍ1 0€Ó€”‘€‚H€‚ÿClearing the graphics windowTraversing the Open Inventor scene graphChanging material stateChanging the GL transformation matrixTexture mappingTexture managementLightingTransforming vertices in the pipelineFilling polygons‘c¨NÍ_€Í. ,€Æ€”‘€‚H€€€‚ÿSee the "Open IÂOÍ_€Í÷HÍnventor 2.1 Porting and Performance Tips" for more information on using ivperf.9ÂO͘€Í1¤~„š,˜€ÍÈ€Í;†Íivtovrml0 _€ÍÈ€Í% €€ˆˆ€‚ÿivtovrml*˜€Íò€Í# €€€‚ÿNAMElCÈ€Í^Í) "€†€”‘€€€#‚ÿivtovrml - converts a .iv file to VRML format (VRML 1.0 or 2.0). ò€ÍŒÍ# €€€‚ÿSYNOPSISg;^ÍóÍ, (€v€”‘€‚3€€‚ÿivToVRML [-vftuh] [-o filename] [-d InlineDir] file ...M!ŒÍ@‚Í, (€B€”‘€‚H€ƒ€‚ÿ-oWrite output to [filename]”góÍÔ‚Í- *€Î€P!s‚H€ƒ€‚ÿ-dA directory path. When converting SoFile to WWWInline nodes, write converted file to [InlineDir],@‚̓Í) "€€P!s‚H€‚ÿŒ_Ô‚ÍŒƒÍ- *€¾€P!s‚H€ƒ€‚ÿ-vGenerate VRML 2.0 output. (If this flag is not specified, VRML 1.0 output is generated.),ƒÍ¸ƒÍ) "€€P!s‚H€‚ÿmAŒƒÍ%„Í, (€‚€”‘€‚H€ƒ€‚ÿ-fExpand File nodes instead of converting to WWWInline nodesH¸ƒÍm„Í, (€8€”‘€‚H€ƒ€‚ÿ-tExpand Texture2 nodesi=%„ÍÖ„Í, (€z€”‘€‚H€ƒ€‚ÿ-uWrite unknown nodes to output instead of removing themFm„Í…Í, (€4€”‘€‚H€ƒ€‚ÿ-hThis message (help)‚ZÖ„Íž…Í( €´€”‘€‚H€‚ÿIf given a filename of '-' or if not given any filenames, standard input will be read. u…Í;†Í( €ê€”‘€‚H€‚ÿIf the -o option is not used to specify the output filename, the converted VRML file is written to standard output5ž…Íp†Í1v,à†0 p†Íœ†ÍÉÅÍmaze,;†Íœ†Í% €€ˆˆ€‚ÿmaze*p†ÍƆÍ# €€€‚ÿNAMEOœ†Í‡Í0 0€@€”‘€€‚†"€?‚ÿmaze - a nostalgic 3D game. ƆÍC‡Í# €€€‚ÿSYNOPSIS=‡Í€‡Í) "€(€”‘€€€‚ÿmaze [maze file]1C‡Í±‡Í# €€€‚ÿDESCRIPTIONÁ€‡Ír‹Í1 0€!€”‘€€€‚€€‚ÿmaze is a fun 3D game that will test your ability to navigate a marble through a 3D maze by tilting the floor of the maze. The object of the game is to maneuver the marble through the entire maze without falling into any of the holes. There is only one path through the maze and it is NOT marked.Use the left mouse to control the tilt of the maze floor. You can adjust the view of maze by pressing the right mouse button and choosing the on menu button. This will add some additional buttons around the window which can be used to adjust the view of the maze. Click the top right toggle button to switch into viewing mode and then adjust your view by pressing the left and/or middle mouse buttons. Click the "?" button to get help on how to use the viewer. When you are done adjusting your view, hit the toggle button again and resume play. Be careful to not disorient your play by overadjusting the view.º±‡ÍsÍG \€u€”‘€€€€€€€€‚‚€€€€‚ÿThe game offers 3 levels of difficulty; press the "1" key to play the starter maze,the "2" key for the difficult maze, and the "3" key for the masochist maze. Pressing these keys at ANY TIME will restart the game at that level. Pressing the "r" key will restart the game at the current level.If the marble falls in a hole, press the "r", "1", "2", or "3" key to restart the game.maze was written using the Inventor 3D Toolkit. <r‹Í¯Í# €2€€‚ÿBUILDING YOUR OWN MAZEO"sÍ ÀÍ- (€E€”‘€€€€‚ÿYou can build your own mazes by creating maze files and then running maze with the maze file as an argument. The top array specifies the location of horizontal walls, the middle array specifies the location of vertical walls, and the bottom array specifies locations of holes. In the first two arrays, a 1 means a wall is present, and a 0 means no wall is present. In the third array, a 1 means a hole is present. A value of 2 in the hole array signifies the starting point, and a value of 3 signifies the ending (winning) point in the maze.¯Í ÀÍ;†ÍX,¯ÍdÀÍ, (€X€”‘€€€€‚ÿHere's the starter (level 1) maze file:Ë ÀÍhÂÍ9 @€—€Ù€€‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ÿ1 1 1 1 1 1 1 1 1 1 1 10 0 1 1 0 0 1 1 0 0 0 10 1 0 0 1 1 0 0 0 0 0 11 0 0 1 1 0 1 1 0 0 1 10 0 1 0 0 0 0 0 0 1 0 10 0 0 0 1 0 0 1 0 0 0 10 1 0 1 0 0 0 0 0 0 0 10 0 0 0 0 1 1 0 0 0 0 11 1 0 0 1 0 0 0 0 0 0 10 1 1 1 0 0 1 0 0 0 0 10 0 0 0 0 0 0 1 0 0 0 11 1 1 1 1 1 1 1 1 1 1 11 1 0 0 0 1 0 0 1 0 0 11 0 0 0 1 0 0 0 0 1 0 11 0 1 0 0 0 0 0 0 0 0 11 0 1 0 0 0 0 1 0 0 1 11 0 1 0 0 1 0 0 1 0 0 11 0 1 0 0 0 0 0 1 0 0 11 0 0 0 1 1 0 0 1 0 0 1¥ndÀÍ ÄÍ7 <€Ý€Ù€€‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ÿ1 0 1 0 1 0 0 1 1 0 1 11 0 0 0 0 0 0 1 0 0 1 11 0 0 0 0 1 0 0 1 0 1 11 0 0 0 1 0 0 0 0 0 1 11 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 2 0 0 00 0 1 0 0 0 1 0 0 1 00 0 0 0 0 0 0 0 1 0 00 0 0 0 0 1 0 0 0 0 10 0 0 0 0 0 0 0 1 0 00 1 1 0 0 1 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 1 0 0 0 0 1 0 00 0 1 0 0 1 0 0 0 0 00 0 0 0 1 0 0 0 0 0 31hÂÍ>ÄÍ# €€€‚ÿSOURCE CODE„R ÄÍÂÄÍ2 4€¤€”‘€€€€€€‚ÿNote that the source code to maze comes with the Open Inventor 3D Toolkit. +>ÄÍíÄÍ# €€€‚ÿFILESX/ÂÄÍEÅÍ) "€^€”‘€€€‚ÿ%OIVHOME%\src\demos\maze\* - Source to maze. íÄÍsÅÍ# €€€‚ÿSEE ALSOVEÅÍÉÅÍ8 @€<€”‘€ãšvø¹€‰€ã +ª€‰‚ÿSceneViewer, inventor8sÅÍÆÍ1H à†0½‰›!ÆÍ0ÆÍGÏÍslotcar/ ÉÅÍ0ÆÍ% €€ˆˆ€‚ÿslotcar*ÆÍZÆÍ# €€€‚ÿNAMEmG0ÆÍÇÆÍ& €Ž€”‘€€‚ÿslotcar - a networked slot car racing game for any number of players8ZÆÍÿÆÍ4 8€ €T”A‚S~‚A€†"€@‚ÿ1 ÇÆÍ0ÇÍ& €€‚A€‚ÿSYNOPSISmAÿÆÍÇÍ, (€‚€”‘€‚A€€‚ÿslotcar [-c 1-8] [-g 1-100] [-h] [-n name] [-q] [-s] [-r 1-8]V-0ÇÍóÇÍ) "€Z€”‘€‚A€‚ÿ[-r 1-8]: Number of robot cars (default 0)kBÇÍ^ÈÍ) "€„€”‘€‚A€‚ÿ[-n name]: Your name (maximum 15 characters, default is login).e<óÇÍÃÈÍ) "€x€”‘€‚A€‚ÿ[-c 1-8]: Desired car number (chosen randomly by default)S*^ÈÍÉÍ) "€T€”‘€‚A€‚ÿ[-g 1-100]: Private game from 1 to 100.X/ÃÈÍnÉÍ) "€^€”‘€‚A€‚ÿ[-s]: Single-player mode (no network stuff).S*ÉÍÁÉÍ) "€T€”‘€‚A€‚ÿ[-q]: Play the game quietly (no sound).I nÉÍ ÊÍ) "€@€”‘€‚A€‚ÿ[-h]: Print out this message.ê½ÁÉÍôÊÍ- (€{€”‘€‚A€€‚ÿNOTE: The Windows version of slotcar displays an "Options" button on the startup screen. Clicking this button brings up a dialog box that allows you to modify most of the above options.8 ÊÍ,ËÍ) "€€‚A€€ ‚ÿDESCRIPTIONrIôÊÍžËÍ) "€’€”‘€‚A€‚ÿSlotcar is a networked slot car racing game for any number of players.øÎ,ËÍ–ÌÍ* "€€”‘€‚A€‚ÿslotcar -h will print out a usage message explaining all of the options. A Startup screen explains a little bit about the game. A couple of features that are not yet explained in the Startup screen are: ¦}žËÍ<ÍÍ) "€ú€”‘€‚A€‚ÿPressing the 'A' key while playing will toggle on and off the annotation above each of the other cars saying who they are.d–ÌÍÉÍÍ) "€È€”‘€‚A€‚ÿUsing the -g command line option with an odd-numbered game number will give a short race course. oF<ÍÍ8ÎÍ) "€Œ€”‘€‚A€‚ÿUsing an even-numbered game number will give a longer race course. vMÉÍÍ®ÎÍ) "€š€”‘€‚A€‚ÿOmitting the -g option will default to game 0 with the longer race course.48ÎÍâÎÍ& €€‚A€‚ÿSOURCE CODEe<®ÎÍGÏÍ) "€x€”‘€‚A€‚ÿThis game was written using the Open Inventor 3D Toolkit.9âÎÍ€ÏÍ1Ÿ%„›ÿÿÿÿ"€ÏÍ°ÏÍ*Îvrmllint0 GÏÍ°ÏÍ% €€ˆˆ€‚ÿvrmllint*€ÏÍÚÏÍ# €€€‚ÿNAMES-°ÏÍ9Î& €Z€”‘€€‚ÿÚÏÍ9ÎGÏÍvrmllint - Checks a VRML file for validity. ÚÏÍgÎ# €€€‚ÿSYNOPSISL 9γÎ, (€@€”‘€‚3€€‚ÿvrmllint [options] [infiles]wJgÎ*Î- *€”€Pi+‚i€ƒ‚ƒ‚ÿ-hPrint this message (help)List the lint in the given fileE³ÎoÎ1ÖˆõÐ #oήΠ ÐClasses (Alphabetic)?*ήÎ( €.€ˆˆ‚A€‚ÿClasses (Alphabetic)±|oÎ_Î5 :€ú€‚A€€†"€A€‚ÿClasses marked with were added by TGS and will not be found in the last SGI release of Open Inventor (version 2.1.x).)®ΈÎ& €€‚A€‚ÿ8 _ÎÀÎ, (€€‚H㑶p6€‰ƒ‚ÿSbBool9 ˆÎùÎ, (€€‚Hãçî$€‰ƒ‚ÿSbBox2f9 ÀÎ2Î, (€€‚Hã!çî$€‰ƒ‚ÿSbBox2s9 ùÎkÎ, (€€‚Hã?çî$€‰ƒ‚ÿSbBox3f9 2ΤÎ, (€€‚HãÀ"%€‰ƒ‚ÿSbColor<kÎàÎ, (€ €‚HãH€‰ƒ‚ÿSbCylinderJ¤Î*Î, (€<€‚HãÑŒç΀‰ƒ‚ÿSbCylinderPlaneProjectorEàÎoÎ, (€2€‚Hã?rW€‰ƒ‚ÿSbCylinderProjectorL *λÎ, (€@€‚Hã¬ʧ€‰ƒ‚ÿSbCylinderSectionProjectorJoÎÎ, (€<€‚HãîmXj€‰ƒ‚ÿSbCylinderSheetProjector8 »Î=Î, (€€‚HãǬ|6€‰ƒ‚ÿSbLineAÎ~Î, (€*€‚Hã‘ôR7€‰ƒ‚ÿSbLineProjector:=θÎ, (€€‚Hã4i¥‘€‰ƒ‚ÿSbMatrixO~ÎÎ; F€*€‚HãЫÈv€‰€†"€A€ƒ‚ÿSbMatrixd 8 ¸Î?Î, (€€‚Hãúß~6€‰ƒ‚ÿSbName9 ÎxÎ, (€€‚Hã÷Ä'€‰ƒ‚ÿSbPlaneB?κÎ, (€,€‚HãC}Îƒ‚ÿSbPlaneProjector9 xÎóÎ, (€€‚HãK2Å'€‰ƒ‚ÿSbPList=ºÎ0Î, (€"€‚HãuLœM€‰ƒ‚ÿSbProjector<óÎlÎ, (€ €‚Hã ‚û€‰ƒ‚ÿSbRotationQ0νÎ; F€.€‚HãC°×>€‰€†"€A€ƒ‚ÿSbRotationd :lÎ÷Î, (€€‚Hãœ8É€‰ƒ‚ÿSbSphereH½Î?Î, (€8€‚Hãô4Ô€‰ƒ‚ÿSbSpherePlaneProjectorC÷΂Î, (€.€‚HãøaK´€‰ƒ‚ÿSbSphereProjectorJ?ÎÌÎ, (€<€‚Hãwƒq+€‰ƒ‚ÿSbSphereSectionProjectorH‚Î Î, (€8€‚HãŠo€‰ƒ‚ÿSbSphereSheetProjector:ÌÎN Î, (€€‚HãXíÊ€‰ƒ‚ÿSbString8  Ά Î, (€€‚Hã4a†6€‰ƒ‚ÿSbTimeMN ÎÓ Î; F€&€‚Hã{ƒõ(€‰€†"€A€ƒ‚ÿSbVec2d 9 † Î Î, (€€‚Hã}ƒõ(€‰ƒ‚ÿSbVec2f9 Ó ÎE Î, (€€‚H㊃õ(€‰ƒ‚ÿSbVec2sM Î’ Î; F€&€‚H㦃õ(€‰€†"€A€ƒ‚ÿSbVec3d 9 E ÎË Î, (€€‚H㨃õ(€‰ƒ‚ÿSbVec3f9 ’ Î Î, (€€‚H㵃õ(€‰ƒ‚ÿSbVec3sMË ÎQ Î; F€&€‚Hãуõ(€‰€†"€A€ƒ‚ÿSbVec4d 9  Ί Î, (€€‚HãÓƒõ(€‰ƒ‚ÿSbVec4fBQ ÎÌ Î, (€,€‚Hãñf‘¸€‰ƒ‚ÿSbViewportRegion>Š Î Î, (€$€‚H㪮§O€‰ƒ‚ÿSbViewVolume;Ì ÎE Î, (€€‚Hãñ†Ï€‰ƒ‚ÿSbXfBox3f: Î Î, (€€‚HãïK€‰ƒ‚ÿSoAction?E ξ Î, (€&€‚HãËŠ³€‰ƒ‚ÿSoAlarmSensor> Îü Î, (€$€‚HãÇl‚€‰ƒ‚ÿSoAnnotationQ¾ ÎM Î; F€.€‚HãhË€‰€†"€Aƒ€‚ÿSoAnnoText3 Yü Φ Î; F€>€‚HãUBùT€‰€†"€A€ƒ‚ÿSoAnnoText3Property >M Îä Î, (€$€‚Hã±*:ù€‰ƒ‚ÿSoAntiSquishA¦ Î%Î, (€*€‚HãNw¶°€‰ƒ‚ÿSoAppearanceKit9 ä Î^Î, (€€‚HãÝo§–€‰ƒ‚ÿSoArray=%ΛÎ, (€"€‚HãFCïÓ€‰ƒ‚ÿSoAsciiText8 ^ÎÓÎ, (€€‚Hã}9€‰ƒ‚ÿSoBase=›ÎÎ, (€"€‚HãÚ{tm€‰ƒ‚ÿSoBaseColor;ÓÎKÎ, (€€‚Hãib€‰ƒ‚ÿSoBaseKit<·Î, (€ €‚Hã/ x‘€‰ƒ‚ÿSoBaseListSKÎÚÎ; F€2€‚HãHê\F€‰€†"€A€ƒ‚ÿSoBevelAction U‡Î;@Î; F€6€‚HãGb-o€ÚÎ;@Î*Ή€†"€A€ƒ‚ÿSoBevelProperty ;ÚÎv@Î, (€€‚Hã)Æa€‰ƒ‚ÿSoBlinkerA;@η@Î, (€*€‚Hã}žb뀉ƒ‚ÿSoBoolOperationL v@ÎAÎ, (€@€‚Hã6 €‰ƒ‚ÿSoBoxHighlightRenderAction?·@ÎBAÎ, (€&€‚Hãüb€‰ƒ‚ÿSoButtonEvent>A΀AÎ, (€$€‚Hãø"€‰ƒ‚ÿSoByteStream>BAξAÎ, (€$€‚Hã"r™€‰ƒ‚ÿSoCalculator<€AÎúAÎ, (€ €‚HãM*Ÿ€‰ƒ‚ÿSoCallbackB¾AÎ DΠDÎ, (€$€‚HãW­‚Á€‰ƒ‚ÿSoColorIndex>bDÎÞDÎ, (€$€‚HãžvšN€‰ƒ‚ÿSoComplexityA DÎEÎ, (€*€‚HãÓßÒz€‰ƒ‚ÿSoComposeMatrixCÞDÎbEÎ, (€.€‚HãtÌß$€‰ƒ‚ÿSoComposeRotationIEΫEÎ, (€:€‚Hã•œŒð€‰ƒ‚ÿSoComposeRotationFromTo@bEÎëEÎ, (€(€‚HãÚ8£€‰ƒ‚ÿSoComposeVec2f@«EÎ+FÎ, (€(€‚Hã9£€‰ƒ‚ÿSoComposeVec3f@ëEÎkFÎ, (€(€‚Hã09£€‰ƒ‚ÿSoComposeVec4fF+FαFÎ, (€4€‚HãKS€‰ƒ‚ÿSoComputeBoundingBox?kFÎðFÎ, (€&€‚HãÕŒy$€‰ƒ‚ÿSoConcatenate8 ±FÎ(GÎ, (€€‚Hãï9€‰ƒ‚ÿSoCone>ðFÎfGÎ, (€$€‚Hãì‡!€‰ƒ‚ÿSoConeDetail?(GÎ¥GÎ, (€&€‚Hã[Eà€‰ƒ‚ÿSoCoordinate3?fGÎäGÎ, (€&€‚Hã\Eà€‰ƒ‚ÿSoCoordinate4;¥GÎHÎ, (€€‚HãìEJ÷€‰ƒ‚ÿSoCounter8 äGÎWHÎ, (€€‚HãAA9€‰ƒ‚ÿSoCube>HΕHÎ, (€$€‚HãŽ2Ü瀉ƒ‚ÿSoCubeDetail<WHÎÑHÎ, (€ €‚Hãþ‚dñ€‰ƒ‚ÿSoCylinderB•HÎIÎ, (€,€‚Hã!d©€‰ƒ‚ÿSoCylinderDetail>ÑHÎQIÎ, (€$€‚H㤴u?€‰ƒ‚ÿSoDataSensor6 I·IÎ, (€€‚HãnY+€‰ƒ‚ÿSoDB>QIÎÅIÎ, (€$€‚Hã5OZ”€‰ƒ‚ÿSoDebugErrorQ‡IÎJÎ; F€.€‚Hã,ꀉ€†"€Aƒ€‚ÿSoDecimator CÅIÎYJÎ, (€.€‚Hã~\ü€‰ƒ‚ÿSoDecomposeMatrixEJΞJÎ, (€2€‚Hã‡;…E€‰ƒ‚ÿSoDecomposeRotationBYJÎàJÎ, (€,€‚Hã[îD€‰ƒ‚ÿSoDecomposeVec2fBžJÎ"KÎ, (€,€‚Hã†îD€‰ƒ‚ÿSoDecomposeVec3fBàJÎdKÎ, (€,€‚Hã±îD€‰ƒ‚ÿSoDecomposeVec4fD"KΨKÎ, (€0€‚H㜺餀‰ƒ‚ÿSoDelayQueueSensor:dKÎâKÎ, (€€‚HãåŒÅe€‰ƒ‚ÿSoDetail>¨KÎ LÎ, (€$€‚Hãÿ®Ze€‰ƒ‚ÿSoDetailListDâKÎdLÎ, (€0€‚HãÀú€‰ƒ‚ÿSoDirectionalLightK LίLÎ, (€>€‚Hã†ë€‰ƒ‚ÿSoDirectionalLightDraggerIdLÎøLÎ, (€:€‚Hã½ôm€‰ƒ‚ÿSoDirectionalLightManip;¯LÎ3MÎ, (€€‚HãÈï?†€‰ƒ‚ÿSoDraggerDøLÎwMÎ, (€0€‚HãLº¿€‰ƒ‚ÿSoDragPointDragger=3MδMÎ, (€"€‚Hãy‚2€‰ƒ‚ÿSoDrawStylePwMÎNÎ; F€,€‚Hãµô˜o€‰€†"€A€ƒ‚ÿSoEdgeFlag ?´MÎCNÎ, (€&€‚HãIR~Ó€‰ƒ‚ÿSoElapsedTime:NÎ}NÎ, (€€‚Hãú­Np€‰ƒ‚ÿSoEngine>CNλNÎ, (€$€‚Hã„Ü倉ƒ‚ÿSoEngineList@}NÎûNÎ, (€(€‚Hãë\¼N€‰ƒ‚ÿSoEngineOutputD»NÎ?OÎ, (€0€‚Hã%Y7€‰ƒ‚ÿSoEngineOutputList?ûNÎ~OÎ, (€&€‚HãN„h€‰ƒ‚ÿSoEnvironment9 ?OηOÎ, (€€‚Hãôx—€‰ƒ‚ÿSoError9 ~OÎ €Î, (€€‚Hã2™|—€‰ƒ‚ÿSoEvent·OÎ €Î*ÎA·OÎM€Î, (€*€‚Hã?–/ €‰ƒ‚ÿSoEventCallbackT €Î¡€Î; F€4€‚HãK7(?€‰€†"€A€ƒ‚ÿSoExtSelection >M€Î߀Î, (€$€‚Hã~«M§€‰ƒ‚ÿSoFaceDetail;¡€ÎÎ, (€€‚Hãø@〉ƒ‚ÿSoFaceSet9 ߀ÎSÎ, (€€‚Hãþ —€‰ƒ‚ÿSoFieldBΕÎ, (€,€‚Hã¿\%†€‰ƒ‚ÿSoFieldContainer=SÎÒÎ, (€"€‚HãÐPWÙ€‰ƒ‚ÿSoFieldList?•Î‚Î, (€&€‚Hãè"&€‰ƒ‚ÿSoFieldSensor8 ÒÎI‚Î, (€€‚Hãü9€‰ƒ‚ÿSoFile8 ‚΂Î, (€€‚Hã·»9€‰ƒ‚ÿSoFontQI‚ÎÒ‚Î; F€.€‚Hãv‹}€‰€†"€A€ƒ‚ÿSoFontStyle 8 ‚Î ƒÎ, (€€‚HãŽ9€‰ƒ‚ÿSoGateHÒ‚ÎRƒÎ, (€8€‚HããS¯+€‰ƒ‚ÿSoGetBoundingBoxActionC ƒÎ•ƒÎ, (€.€‚Hã¹_ØS€‰ƒ‚ÿSoGetMatrixAction_$RƒÎôƒÎ; F€J€‚HãDRô€‰€†"€Aƒ€‚ÿSoGetPrimitiveCountAction \!•ƒÎP„Î; F€D€‚HãFÙ €‰€†"€A€ƒ‚ÿSoGlobalSimplifyAction BôƒÎ’„Î, (€,€‚Hã©öø(€‰ƒ‚ÿSoGLRenderAction9 P„ÎË„Î, (€€‚Hã«]à—€‰ƒ‚ÿSoGroupD’„Î…Î, (€0€‚Hã¢b€‰ƒ‚ÿSoHandleBoxDraggerBË„ÎQ…Î, (€,€‚Hãöñõ€‰ƒ‚ÿSoHandleBoxManipE…Ζ…Î, (€2€‚Hãàꀉƒ‚ÿSoHandleEventAction>Q…ÎÔ…Î, (€$€‚HãʇõÀ€‰ƒ‚ÿSoIdleSensorM–…Î!†Î; F€&€‚Hã«:B˜€‰€†"€A€ƒ‚ÿSoImage BÔ…Îc†Î, (€,€‚HãlÌ…€‰ƒ‚ÿSoIndexedFaceSetB!†Î¥†Î, (€,€‚HãUIÕ¢€‰ƒ‚ÿSoIndexedLineSetEc†Îê†Î, (€2€‚Hã|Ťã€‰ƒ‚ÿSoIndexedNurbsCurveG¥†Î1‡Î, (€6€‚Hã^`ˆ½€‰ƒ‚ÿSoIndexedNurbsSurface@ê†Îq‡Î, (€(€‚Hã$‘³t€‰ƒ‚ÿSoIndexedShapeK1‡Î¼‡Î, (€>€‚Hã×ïþö€‰ƒ‚ÿSoIndexedTriangleStripSet8 q‡Îô‡Î, (€€‚HãÚV9€‰ƒ‚ÿSoInfo9 ¼‡Î-ˆÎ, (€€‚HãþßC˜€‰ƒ‚ÿSoInput?ô‡ÎlˆÎ, (€&€‚HãΖc`€‰ƒ‚ÿSoInteractionB-ˆÎ®ˆÎ, (€,€‚Hã¤ÓÍñ€‰ƒ‚ÿSoInteractionKit?lˆÎíˆÎ, (€&€‚Hã}9;怉ƒ‚ÿSoInterpolateD®ˆÎ1‰Î, (€0€‚HãƒÀÖ€‰ƒ‚ÿSoInterpolateFloatGíˆÎx‰Î, (€6€‚HãWÃy€‰ƒ‚ÿSoInterpolateRotationD1‰Î¼‰Î, (€0€‚HãKWúÙ€‰ƒ‚ÿSoInterpolateVec2fDx‰ÎŠÎ, (€0€‚HãvWúÙ€‰ƒ‚ÿSoInterpolateVec3fD¼‰ÎDŠÎ, (€0€‚Hã¡WúÙ€‰ƒ‚ÿSoInterpolateVec4fc(ŠÎ§ŠÎ; F€R€‚Hãæxpö€‰€†"€A€ƒ‚ÿSoIntersectionDetectionAction ?DŠÎæŠÎ, (€&€‚Hã±—o›€‰ƒ‚ÿSoJackDragger=§ŠÎ#‹Î, (€"€‚Hã+¯€‰ƒ‚ÿSoJackManipAæŠÎd‹Î, (€*€‚Hã“[ A€‰ƒ‚ÿSoKeyboardEvent9 #‹Î‹Î, (€€‚HãÄ2И€‰ƒ‚ÿSoLabelAd‹ÎÞ‹Î, (€*€‚Hã¬ñ†€‰ƒ‚ÿSoLevelOfDetail]"‹Î;ŒÎ; F€F€‚H㊆Ř€‰€†"€A€ƒ‚ÿSoLevelOfSimplification 9 Þ‹ÎtŒÎ, (€€‚Hã Ú˜€‰ƒ‚ÿSoLight<;ŒÎ°ŒÎ, (€ €‚Hã€ÀÏ€‰ƒ‚ÿSoLightKit>tŒÎîŒÎ, (€$€‚Hãg!à‚€‰ƒ‚ÿSoLightModelA°ŒÎ/Î, (€*€‚Hãä+Ža€‰ƒ‚ÿSoLinearProfile>îŒÎmÎ, (€$€‚HãIöHŽ€‰ƒ‚ÿSoLineDetailM!/κÎ, (€B€‚Hãö퀉ƒ‚ÿSoLineHighlightRenderAction;mÎõÎ, (€€‚Hã>J€‰ƒ‚ÿSoLineSetWºÎLŽÎ; F€:€‚HãN=TŽ€‰€†"€A€ƒ‚ÿSoLocateHighlight BõÎŽŽÎ, (€,€‚Hã-OÁm€‰ƒ‚ÿSoLocation2EventKLŽÎÙŽÎ; F€"€‚Hã…AH€‰€†"€A€ƒ‚ÿSoLOD QŽŽÎ*Î; F€.€‚Hãüqó>€‰€†"€Aƒ€‚ÿSoMarkerSet <ÙŽÎfÎ, (€ €‚HãOjnÄ€‰ƒ‚ÿSoMaterialC*ΩÎ, (€.€‚HãÞ!€€‰ƒ‚ÿSoMaterialBindingCfÎ ÀÎ, (€.€‚Hãß퀉ƒ‚ÿSoMatrixTransform©Î ÀÎ*Î?©ÎKÀÎ, (€&€‚Hã£ì,€‰ƒ‚ÿSoMemoryError= ÀΈÀÎ, (€"€‚HãôÃ1€‰ƒ‚ÿSoMFBitMask:KÀÎÂÀÎ, (€€‚HãóÐÀ´€‰ƒ‚ÿSoMFBool;ˆÀÎýÀÎ, (€€‚Hãz.—\€‰ƒ‚ÿSoMFColor<ÂÀÎ9ÁÎ, (€ €‚Hãw¾°ž€‰ƒ‚ÿSoMFEngine:ýÀÎsÁÎ, (€€‚HãvnÄ´€‰ƒ‚ÿSoMFEnum;9ÁήÁÎ, (€€‚Hã'0]€‰ƒ‚ÿSoMFFloat:sÁÎèÁÎ, (€€‚Hã5É´€‰ƒ‚ÿSoMField;®ÁÎ#ÂÎ, (€€‚Hã-Ï]€‰ƒ‚ÿSoMFInt32:èÁÎ]ÂÎ, (€€‚HãòÌ´€‰ƒ‚ÿSoMFLong<#ÂΙÂÎ, (€ €‚Hã÷3 ƒ‚ÿSoMFMatrix:]ÂÎÓÂÎ, (€€‚Hã\ú䀉ƒ‚ÿSoMFName:™ÂÎ ÃÎ, (€€‚Hã÷]Ï´€‰ƒ‚ÿSoMFNode:ÓÂÎGÃÎ, (€€‚Hã²hÑ´€‰ƒ‚ÿSoMFPath; Ã΂ÃÎ, (€€‚Hãf9_€‰ƒ‚ÿSoMFPlane>GÃÎÀÃÎ, (€$€‚HãÏ[ Ñ€‰ƒ‚ÿSoMFRotation;‚ÃÎûÃÎ, (€€‚Hã³qÑ_€‰ƒ‚ÿSoMFShort<ÀÃÎ7ÄÎ, (€ €‚Hã*{£€‰ƒ‚ÿSoMFString:ûÃÎqÄÎ, (€€‚Hã–{Ö´€‰ƒ‚ÿSoMFTime<7ÄέÄÎ, (€ €‚HãŽmç)€‰ƒ‚ÿSoMFUInt32;qÄÎèÄÎ, (€€‚H㨠>`€‰ƒ‚ÿSoMFULong<­ÄÎ$ÅÎ, (€ €‚Hã@²é+€‰ƒ‚ÿSoMFUShort;èÄÎ_ÅÎ, (€€‚Hãóñi`€‰ƒ‚ÿSoMFVec2f;$ÅΚÅÎ, (€€‚Hãòi`€‰ƒ‚ÿSoMFVec3f;_ÅÎÕÅÎ, (€€‚HãIòi`€‰ƒ‚ÿSoMFVec4f@šÅÎÆÎ, (€(€‚HãAùé½€‰ƒ‚ÿSoMotion3EventDÕÅÎYÆÎ, (€0€‚HãÛá–€‰ƒ‚ÿSoMouseButtonEvent@ÆΙÆÎ, (€(€‚Hã™ü ;€‰ƒ‚ÿSoMultipleCopy8 YÆÎÑÆÎ, (€€‚Hã’n%9€‰ƒ‚ÿSoNode;™ÆÎ ÇÎ, (€€‚Hã0d$€‰ƒ‚ÿSoNodeKitBÑÆÎNÇÎ, (€,€‚Hãõˆ¨f€‰ƒ‚ÿSoNodekitCatalogA ÇÎÇÎ, (€*€‚Hã•£&ô€‰ƒ‚ÿSoNodeKitDetailCNÇÎÒÇÎ, (€.€‚Hã½á–€‰ƒ‚ÿSoNodeKitListPart?ÇÎÈÎ, (€&€‚Hã}选ƒ‚ÿSoNodeKitPath<ÒÇÎMÈÎ, (€ €‚HãœÐ€‰ƒ‚ÿSoNodeList>È΋ÈÎ, (€$€‚HãTlˆW€‰ƒ‚ÿSoNodeSensorCMÈÎÎÈÎ, (€.€‚Hã5ÖfE€‰ƒ‚ÿSoNonIndexedShape:‹ÈÎÉÎ, (€€‚HãKÕl¿€‰ƒ‚ÿSoNormalAÎÈÎIÉÎ, (€*€‚HãRÜ4€‰ƒ‚ÿSoNormalBinding>É·ÉÎ, (€$€‚HãÓÂ.€‰ƒ‚ÿSoNurbsCurve@IÉÎÇÉÎ, (€(€‚Hã‰X˜é€‰ƒ‚ÿSoNurbsProfileA‡ÉÎÊÎ, (€*€‚Hã¥Ý›>€‰ƒ‚ÿSoNurbsProperty@ÇÉÎHÊÎ, (€(€‚Hã½)×n€‰ƒ‚ÿSoNurbsSurfaceVÊΞÊÎ; F€8€‚Hãjhšö€‰€†"€A€ƒ‚ÿSoOctreeOrdering EHÊÎãÊÎ, (€2€‚Hã~MÌÎ ÍÎ, (€$€‚Hã'€‰ƒ‚ÿSoPathSensor>ËÌÎGÍÎ, (€$€‚HãÅÌ€‰ƒ‚ÿSoPathSwitchO ÍΖÍÎ; F€*€‚H㜞€‰€†"€A€ƒ‚ÿSoPattern <GÍÎÒÍÎ, (€ €‚HãŠäÀO€‰ƒ‚ÿSoPendulumE–ÍÎÎÎ, (€2€‚Hã}”z»€‰ƒ‚ÿSoPerspectiveCamera>ÒÍÎUÎÎ, (€$€‚Hã#º…ö€‰ƒ‚ÿSoPickAction?ÎΔÎÎ, (€&€‚Hã¼B‘S€‰ƒ‚ÿSoPickedPointCUÎÎ×ÎÎ, (€.€‚H㦮´*€‰ƒ‚ÿSoPickedPointList=”ÎÎÏÎ, (€"€‚HãX«]˜€‰ƒ‚ÿSoPickStyle?×ÎÎSÏÎ, (€&€‚HãqÒÍ@€‰ƒ‚ÿSoPointDetail>ÏΑÏÎ, (€$€‚H㦊3ý€‰ƒ‚ÿSoPointLightESÏÎÖÏÎ, (€2€‚Hãz"À‰ƒ‚ÿSoPointLightDraggerC‘ÏÎ%Ï, (€.€‚Hã|`o€‰ƒÖÏÎ%Ï*΂ÿSoPointLightManip<ÖÏÎaÏ, (€ €‚Hã:"ÍÝ€‰ƒ‚ÿSoPointSetU%϶Ï; F€6€‚HãAÛÓ€‰€†"€A€ƒ‚ÿSoPolygonOffset CaÏùÏ, (€.€‚HãkNÞ€‰ƒ‚ÿSoPrimitiveVertex;¶Ï4Ï, (€€‚HãaC}2€‰ƒ‚ÿSoProfileFùÏzÏ, (€4€‚Hã-ÒÀ€‰ƒ‚ÿSoProfileCoordinate2F4ÏÀÏ, (€4€‚Hã.ÒÀ€‰ƒ‚ÿSoProfileCoordinate3<zÏüÏ, (€ €‚Hã¼$ú³€‰ƒ‚ÿSoQuadMeshAÀÏ=Ï, (€*€‚HãÉ“â„€‰ƒ‚ÿSoRayPickAction=üÏzÏ, (€"€‚Hãʉ þ€‰ƒ‚ÿSoReadError>=ϸÏ, (€$€‚H㼿ai€‰ƒ‚ÿSoRenderListXzÏÏ; F€<€‚Hã$ /=€‰€†"€A€ƒ‚ÿSoReorganizeAction B¸ÏRÏ, (€,€‚Hãɘƥ€‰ƒ‚ÿSoResetTransformL ÏžÏ, (€@€‚Hã%Ô§€‰ƒ‚ÿSoRotateCylindricalDraggerERÏãÏ, (€2€‚HãŒÝ߀‰ƒ‚ÿSoRotateDiscDraggerJžÏ-Ï, (€<€‚Hã&M°¢€‰ƒ‚ÿSoRotateSphericalDragger<ãÏiÏ, (€ €‚HãúD×΀‰ƒ‚ÿSoRotation?-ϨÏ, (€&€‚Hãƒ$s€‰ƒ‚ÿSoRotationXYZ9 iÏáÏ, (€€‚H㪲š€‰ƒ‚ÿSoRotor9 ¨ÏÏ, (€€‚Hã®Ä?š€‰ƒ‚ÿSoScaleAáÏ[Ï, (€*€‚HãY#怉ƒ‚ÿSoScale1DraggerAÏœÏ, (€*€‚HãüÚÉ/€‰ƒ‚ÿSoScale2DraggerH[ÏäÏ, (€8€‚Hã˜uPö€‰ƒ‚ÿSoScale2UniformDraggerGœÏ+Ï, (€6€‚Hã̙耉ƒ‚ÿSoScaleUniformDragger<äÏgÏ, (€ €‚Hã’o>ƒ‚ÿSoSceneKit@+ϧÏ, (€(€‚HãQ´tK€‰ƒ‚ÿSoSceneManager@gÏçÏ, (€(€‚HãòÓ}ª€‰ƒ‚ÿSoSearchActionU§Ï<Ï: D€8€‚HãG°ÞJ€‰€†"€A€‚ÿSoSearchPathAction =çÏyÏ, (€"€‚Hã(ç –€‰ƒ‚ÿSoSelection=<϶Ï, (€"€‚HãJ –€‰ƒ‚ÿSoSelectOne:yÏðÏ, (€€‚HãrX.选ƒ‚ÿSoSensor=¶Ï-Ï, (€"€‚HãÍ\Y€‰ƒ‚ÿSoSeparator@ðÏmÏ, (€(€‚HãOËr€‰ƒ‚ÿSoSeparatorKit=-ϪÏ, (€"€‚Hã:YN€‰ƒ‚ÿSoSFBitMask:mÏäÏ, (€€‚HãU×S选ƒ‚ÿSoSFBoolFªÏ* Ï5 :€$€‚Hã8h1€‰†"€Aƒ‚ÿSoSFBox3s ;äÏe Ï, (€€‚Hãð@I1€‰ƒ‚ÿSoSFColor<* Ï¡ Ï, (€ €‚HãIØ™X€‰ƒ‚ÿSoSFEngine:e ÏÛ Ï, (€€‚HãØtW选ƒ‚ÿSoSFEnum;¡ Ï Ï, (€€‚Hã0â1€‰ƒ‚ÿSoSFFloat:Û ÏP Ï, (€€‚Hã— \选ƒ‚ÿSoSField; Ï‹ Ï, (€€‚Hãƒ2€‰ƒ‚ÿSoSFImage<P ÏÇ Ï, (€ €‚Hã k{€‰ƒ‚ÿSoSFImage3;‹ Ï Ï, (€€‚Hãw?2€‰ƒ‚ÿSoSFInt32:Ç Ï< Ï, (€€‚Hããø_选ƒ‚ÿSoSFLong< Ïx Ï, (€ €‚HãØœ€‰ƒ‚ÿSoSFMatrix:< ϲ Ï, (€€‚Hã¾b选ƒ‚ÿSoSFName:x Ïì Ï, (€€‚HãYdb选ƒ‚ÿSoSFNode:² Ï& Ï, (€€‚Hãod选ƒ‚ÿSoSFPath;ì Ïa Ï, (€€‚Hã‰xë3€‰ƒ‚ÿSoSFPlane>& ÏŸ Ï, (€$€‚Hã‘Ù»•€‰ƒ‚ÿSoSFRotation;a ÏÚ Ï, (€€‚Hã)„ƒ4€‰ƒ‚ÿSoSFShort<Ÿ Ï Ï, (€ €‚Hãü”ŒÔ€‰ƒ‚ÿSoSFString:Ú ÏP Ï, (€€‚Hãøi选ƒ‚ÿSoSFTime= Ï Ï, (€"€‚Hã%瀉ƒ‚ÿSoSFTrigger<P ÏÉ Ï, (€ €‚Hã`‡Ð〉ƒ‚ÿSoSFUInt32; ÏÏ, (€€‚Hã³ð4€‰ƒ‚ÿSoSFULong<É Ï@Ï, (€ €‚HãÌÒ倉ƒ‚ÿSoSFUShort;Ï{Ï, (€€‚Hãi5€‰ƒ‚ÿSoSFVec2f;@϶Ï, (€€‚Hã”5€‰ƒ‚ÿSoSFVec3f;{ÏñÏ, (€€‚Hã¿5€‰ƒ‚ÿSoSFVec4f9 ¶Ï*Ï, (€€‚Hã9ÖEš€‰ƒ‚ÿSoShape>ñÏhÏ, (€$€‚HãsBmf€‰ƒ‚ÿSoShapeHints<*ϤÏ, (€ €‚HãЃ'€‰ƒ‚ÿSoShapeKit[ hÏ @Ï; F€B€‚Hã` AÓ€‰€†"€A€ƒ‚ÿSoShapeSimplifyAction ¤Ï @Ï*Î;¤ÏG@Ï, (€€‚Hãñâ€F€‰ƒ‚ÿSoShuttle> @Ï…@Ï, (€$€‚Hãê–Ìv€‰ƒ‚ÿSoSimplifierBG@ÏÇ@Ï, (€,€‚HãŸyU€‰ƒ‚ÿSoSimplifyActionH…@ÏAÏ, (€8€‚Hã*€‰ƒ‚ÿSoSpaceballButtonEvent:Ç@ÏIAÏ, (€€‚Hãñd뀉ƒ‚ÿSoSphere=AφAÏ, (€"€‚Hã¨òƯ€‰ƒ‚ÿSoSpotLightDIAÏÊAÏ, (€0€‚HãÀsm€‰ƒ‚ÿSoSpotLightDraggerB†AÏ BÏ, (€,€‚Hã‰Ë 퀉ƒ‚ÿSoSpotLightManipAÊAÏMBÏ, (€*€‚Hã`¤q΀‰ƒ‚ÿSoSurroundScale: BχBÏ, (€€‚Hã0MÓ쀉ƒ‚ÿSoSwitchAMBÏÈBÏ, (€*€‚HãNØd>€‰ƒ‚ÿSoTabBoxDragger?‡BÏCÏ, (€&€‚H㇫¬l€‰ƒ‚ÿSoTabBoxManipCÈBÏJCÏ, (€.€‚HãÈÁY€‰ƒ‚ÿSoTabPlaneDragger9 CσCÏ, (€€‚Hãéwš€‰ƒ‚ÿSoText29 JCϼCÏ, (€€‚Hãêwš€‰ƒ‚ÿSoText3>ƒCÏúCÏ, (€$€‚H㢽?·€‰ƒ‚ÿSoTextDetail<¼CÏ6DÏ, (€ €‚HãÿÓ>Ñ€‰ƒ‚ÿSoTexture2EúCÏ{DÏ, (€2€‚HãqŠ•±€‰ƒ‚ÿSoTexture2TransformP6DÏËDÏ; F€,€‚HãÔ>Ñ€‰€†"€A€ƒ‚ÿSoTexture3 Y{DÏ$EÏ; F€>€‚Hã¼t¯§€‰€†"€A€ƒ‚ÿSoTexture3Transform FËDÏjEÏ, (€4€‚Hã·ºz€‰ƒ‚ÿSoTextureCoordinate2Z$EÏÄEÏ; F€@€‚Hã·ºz€‰€†"€A€ƒ‚ÿSoTextureCoordinate3 L jEÏFÏ, (€@€‚Hãf;1c€‰ƒ‚ÿSoTextureCoordinateBindingL ÄEÏ\FÏ, (€@€‚Hãnš0€‰ƒ‚ÿSoTextureCoordinateDefaultP$FϬFÏ, (€H€‚HãÄaç<€‰ƒ‚ÿSoTextureCoordinateEnvironmentM!\FÏùFÏ, (€B€‚Hã“y€‰ƒ‚ÿSoTextureCoordinateFunctionJ¬FÏCGÏ, (€<€‚Hã™ØÌ€‰ƒ‚ÿSoTextureCoordinatePlane?ùFÏ‚GÏ, (€&€‚Hã@)€‰ƒ‚ÿSoTimeCounterDCGÏÆGÏ, (€0€‚Hã*ðz\€‰ƒ‚ÿSoTimerQueueSensor?‚GÏHÏ, (€&€‚Hã—l°L€‰ƒ‚ÿSoTimerSensorTÆGÏYHÏ; F€4€‚HãpüšÇ€‰€†"€A€ƒ‚ÿSoToHTMLAction UHÏ®HÏ; F€6€‚Hã~X+€‰€†"€A€ƒ‚ÿSoToVRML2Action TYHÏIÏ; F€4€‚Hãȯø~€‰€†"€A€ƒ‚ÿSoToVRMLAction S®HÏUIÏ; F€2€‚H㾘Ö}€‰€†"€A€ƒ‚ÿSoToZ3DAction DIÏ™IÏ, (€0€‚HãÂmG €‰ƒ‚ÿSoTrackballDraggerBUIÏÛIÏ, (€,€‚Hã›Ø1Ù€‰ƒ‚ÿSoTrackballManip@™IÏJÏ, (€(€‚HãúÓv €‰ƒ‚ÿSoTranReceiver>ÛIÏYJÏ, (€$€‚HãüµM›€‰ƒ‚ÿSoTranSender=JÏ–JÏ, (€"€‚Hã¼ýÓ€‰ƒ‚ÿSoTransformBYJÏØJÏ, (€,€‚Hã¥W7ž€‰ƒ‚ÿSoTransformationG–JÏKÏ, (€6€‚Hã¡è˜*€‰ƒ‚ÿSoTransformBoxDraggerEØJÏdKÏ, (€2€‚Hãr“žN€‰ƒ‚ÿSoTransformBoxManipFKϪKÏ, (€4€‚Hãw`Ëꀉƒ‚ÿSoTransformerDraggerDdKÏîKÏ, (€0€‚HãøÀ‰ƒ‚ÿSoTransformerManipBªKÏ0LÏ, (€,€‚Hã%n’ €‰ƒ‚ÿSoTransformManipFîKÏvLÏ, (€4€‚HãáGŒw€‰ƒ‚ÿSoTransformSeparatorB0LϸLÏ, (€,€‚Hã{ul¢€‰ƒ‚ÿSoTransformVec3fEvLÏýLÏ, (€2€‚Hã E€‰ƒ‚ÿSoTranslate1DraggerE¸LÏBMÏ, (€2€‚Hã¬õ´Ž€‰ƒ‚ÿSoTranslate2Dragger?ýLÏMÏ, (€&€‚Hã%ÑP€‰ƒ‚ÿSoTranslationDBMÏÅMÏ, (€0€‚Hã†ÀÍb€‰ƒ‚ÿSoTriangleStripSet>MÏNÏ, (€$€‚HãœÑè1€‰ƒ‚ÿSoTriggerAny8 ÅMÏ;NÏ, (€€‚HãB-9€‰ƒ‚ÿSoType<NÏwNÏ, (€ €‚HãL´²÷€‰ƒ‚ÿSoTypeList9 ;NÏ°NÏ, (€€‚Hã­µš€‰ƒ‚ÿSoUnitsUwNÏOÏ; F€6€‚HãùÉ€‰€†"€A€ƒ‚ÿSoValueOrdering R°NÏWOÏ; F€0€‚HãP!ö€‰€†"€A€ƒ‚ÿSoVertexFlag BOÏ™OÏ, (€,€‚Hãmý¼€‰ƒ‚ÿSoVertexProperty?WOÏØOÏ, (€&€‚Hã¹êZY€‰ƒ‚ÿSoVertexShapeR™OÏ6€Ï; F€0€‚Hã¸@Òm€ØOÏ6€Ï*Ή€†"€A€ƒ‚ÿSoVRMLAnchor VØOÏŒ€Ï; F€8€‚Hãƒ'ó(€‰€†"€A€ƒ‚ÿSoVRMLAppearance U6€Ïá€Ï; F€6€‚Hã3 $/€‰€†"€A€ƒ‚ÿSoVRMLAudioClip VŒ€Ï7Ï; F€8€‚Hã!ö‡Ù€‰€†"€A€ƒ‚ÿSoVRMLBackground Uá€ÏŒÏ; F€6€‚HãTÄLø€‰€†"€A€ƒ‚ÿSoVRMLBillboard O7ÏÛÏ; F€*€‚Hãì΀‰€†"€A€ƒ‚ÿSoVRMLBox UŒÏ0‚Ï; F€6€‚Hãûª®€‰€†"€A€ƒ‚ÿSoVRMLCollision QÛÏ‚Ï; F€.€‚Hãè.°&€‰€†"€A€ƒ‚ÿSoVRMLColor ]"0‚ÏÞ‚Ï; F€F€‚Hã7Ùïu€‰€†"€A€ƒ‚ÿSoVRMLColorInterpolator P‚Ï.ƒÏ; F€,€‚Hãžãž$€‰€†"€A€ƒ‚ÿSoVRMLCone VÞ‚Ï„ƒÏ; F€8€‚HãÏ~)§€‰€†"€Aƒ€‚ÿSoVRMLCoordinate b'.ƒÏæƒÏ; F€P€‚HãŽD,€‰€†"€A€ƒ‚ÿSoVRMLCoordinateInterpolator T„ƒÏ:„Ï; F€4€‚Hãý ŽF€‰€†"€A€ƒ‚ÿSoVRMLCylinder ZæƒÏ”„Ï; F€@€‚Hã7.~¹€‰€†"€A€ƒ‚ÿSoVRMLCylinderSensor \!:„Ïð„Ï; F€D€‚Hã_¶VF€‰€†"€A€ƒ‚ÿSoVRMLDirectionalLight Y”„ÏI…Ï; F€>€‚HãühÁ€‰€†"€A€ƒ‚ÿSoVRMLElevationGrid Zð„Ï£…Ï; F€@€‚HãüêëN€‰€†"€A€ƒ‚ÿSoVRMLEXTERNPROTODef \!I…Ïÿ…Ï; F€D€‚HãYca€‰€†"€A€ƒ‚ÿSoVRMLEXTERNPROTOField `%£…Ï_†Ï; F€L€‚Hã3ýØ‘€‰€†"€A€ƒ‚ÿSoVRMLEXTERNPROTOFieldList _$ÿ…Ͼ†Ï; F€J€‚Hã cM€‰€†"€A€ƒ‚ÿSoVRMLEXTERNPROTOInstance U_†Ï‡Ï; F€6€‚Hãn8ád€‰€†"€A€ƒ‚ÿSoVRMLExtrusion O¾†Ïb‡Ï; F€*€‚Hã¿2΀‰€†"€Aƒ€‚ÿSoVRMLFog U‡Ï·‡Ï; F€6€‚HãK¹wi€‰€†"€A€ƒ‚ÿSoVRMLFontStyle Tb‡Ï ˆÏ; F€4€‚HãåC’€‰€†"€A€ƒ‚ÿSoVRMLGeometry U·‡Ï`ˆÏ; F€6€‚HãH#G½€‰€†"€Aƒ€‚ÿSoVRMLGridShape Q ˆÏ±ˆÏ; F€.€‚H㔄'€‰€†"€A€ƒ‚ÿSoVRMLGroup X`ˆÏ ‰Ï; F€<€‚Hã§ûrZ€‰€†"€A€ƒ‚ÿSoVRMLImageTexture Z±ˆÏc‰Ï; F€@€‚HãE}€‰€†"€A€ƒ‚ÿSoVRMLIndexedFaceSet W ‰Ïº‰Ï; F€:€‚HãrïØ›€‰€†"€A€ƒ‚ÿSoVRMLIndexedLine Zc‰ÏŠÏ; F€@€‚Hã슆/€‰€†"€A€ƒ‚ÿSoVRMLIndexedLineSet Xº‰ÏlŠÏ; F€<€‚HãsÐÛ.€‰€†"€A€ƒ‚ÿSoVRMLIndexedShape RŠÏ¾ŠÏ; F€0€‚Hã¼ö³€‰€†"€A€ƒ‚ÿSoVRMLInline XlŠÏ‹Ï; F€<€‚Hãéf€‰€†"€Aƒ€‚ÿSoVRMLInterpolator R¾ŠÏh‹Ï7 >€8€‚Hã`Zh€‰€†"€A‚ÿSoVRMLInterpOutput Z ‹Ï‹Ï: D€B€‚Hã ï‹}€‰€†"€A€‚ÿSoVRMLInterpOutputList Qh‹ÏŒÏ; F€.€‚HãgB~(€‰€†"€A€ƒ‚ÿSoVRMLLight O‹ÏbŒÏ; F€*€‚Hã^΀‰€†"€A€ƒ‚ÿSoVRMLLOD TŒÏ¶ŒÏ; F€4€‚HãNô—€‰€†"€A€ƒ‚ÿSoVRMLMaterial XbŒÏÏ; F€<€‚HãŽä ú€‰€†"€A€ƒ‚ÿSoVRMLMovieTexture Z¶ŒÏhÏ; F€@€‚Hã}@/€‰€†"€A€ƒ‚ÿSoVRMLNavigationInfo RϺÏ; F€0€‚HãBøà€‰€†"€A€ƒ‚ÿSoVRMLNormal ^#hÏŽÏ; F€H€‚Hã16aø€‰€†"€Aƒ€‚ÿSoVRMLNormalInterpolator c(ºÏ{ŽÏ; F€R€‚HãLžË€‰€†"€A€ƒ‚ÿSoVRMLOrientationInterpolator RŽÏÍŽÏ; F€0€‚Hãy­î€‰€†"€A€ƒ‚ÿSoVRMLParent X{ŽÏ%Ï; F€<€‚Hã˜ú뀉€†"€A€ƒ‚ÿSoVRMLPixelTexture WÍŽÏ|Ï; F€:€‚Hã[Eì €‰€†"€A€ƒ‚ÿSoVRMLPlaneSensor V%ÏÒÏ; F€8€‚Hãm=9€‰€†"€A€ƒ‚ÿSoVRMLPointLight T|Ï2ÀÏ; F€4€‚Hã9¬ö2€‰€†"ÒÏ2ÀÏ*΀A€ƒ‚ÿSoVRMLPointSet L ÒÏ~ÀÏ, (€@€‚HãOa*$€‰ƒ‚ÿSoVRMLPositionInterpolatorT2ÀÏÒÀÏ; F€4€‚Hã¸>Ó€‰€†"€A€ƒ‚ÿSoVRMLPROTODef V~ÀÏ(ÁÏ; F€8€‚Hã5,ß”€‰€†"€A€ƒ‚ÿSoVRMLPROTOField ZÒÀÏ‚ÁÏ; F€@€‚HãOõt†€‰€†"€A€ƒ‚ÿSoVRMLPROTOFieldList Y(ÁÏÛÁÏ; F€>€‚HãbÉ×p€‰€†"€A€ƒ‚ÿSoVRMLPROTOInstance [ ‚ÁÏ6ÂÏ; F€B€‚Hã²íC€‰€†"€A€ƒ‚ÿSoVRMLProximitySensor ^#ÛÁÏ”ÂÏ; F€H€‚Hãæ†zy€‰€†"€Aƒ€‚ÿSoVRMLScalarInterpolator R6ÂÏæÂÏ; F€0€‚HãF¸_ €‰€†"€A€ƒ‚ÿSoVRMLScript Q”ÂÏ7ÃÏ; F€.€‚Hãž ê)€‰€†"€A€ƒ‚ÿSoVRMLShape QæÂψÃÏ; F€.€‚HãÀó)€‰€†"€A€ƒ‚ÿSoVRMLSound R7ÃÏÚÃÏ; F€0€‚Hãè¤ù €‰€†"€A€ƒ‚ÿSoVRMLSphere XˆÃÏ2ÄÏ; F€<€‚HãšEp†€‰€†"€A€ƒ‚ÿSoVRMLSphereSensor UÚÃχÄÏ; F€6€‚Hã} Áý€‰€†"€A€ƒ‚ÿSoVRMLSpotLight R2ÄÏÙÄÏ; F€0€‚Hã'ph €‰€†"€A€ƒ‚ÿSoVRMLSwitch P‡ÄÏ)ÅÏ; F€,€‚Hãä<³$€‰ƒ€†"€A€‚ÿSoVRMLText SÙÄÏ|ÅÏ; F€2€‚Hãô©€‰€†"€A€ƒ‚ÿSoVRMLTexture ]")ÅÏÙÅÏ; F€F€‚HãÜl€‰€†"€A€ƒ‚ÿSoVRMLTextureCoordinate \!|ÅÏ5ÆÏ; F€D€‚Hã8½b€‰€†"€Aƒ€‚ÿSoVRMLTextureTransform VÙÅÏ‹ÆÏ; F€8€‚HãRíß‘€‰€†"€A€ƒ‚ÿSoVRMLTimeSensor W5ÆÏâÆÏ; F€:€‚Hãn=Tò€‰€†"€A€ƒ‚ÿSoVRMLTouchSensor U‹ÆÏ7ÇÏ; F€6€‚Hã‘H÷!€‰€†"€A€ƒ‚ÿSoVRMLTransform VâÆÏÇÏ; F€8€‚Hã )€‰€†"€Aƒ€‚ÿSoVRMLVertexLine W7ÇÏäÇÏ; F€:€‚Hã™)¼Œ€‰€†"€A€ƒ‚ÿSoVRMLVertexPoint WÇÏ;ÈÏ; F€:€‚Hã&òO€‰€†"€A€ƒ‚ÿSoVRMLVertexShape UäÇÏÈÏ; F€6€‚Hãìè’z€‰€†"€A€ƒ‚ÿSoVRMLViewpoint \!;ÈÏìÈÏ; F€D€‚Hã/\»€‰€†"€A€ƒ‚ÿSoVRMLVisibilitySensor UÈÏAÉÏ; F€6€‚HãmÓR€‰€†"€A€ƒ‚ÿSoVRMLWorldInfo 7 ìÈÏxÉÏ, (€€‚HãH€‰ƒ‚ÿSoWinYAÉÏÑÉÏ; F€>€‚HãÜöó{€‰€†"€A€ƒ‚ÿSoWinAnaglyphStereo @xÉÏÊÏ, (€(€‚HãzÅe‰€‰ƒ‚ÿSoWinClipboardZÑÉÏkÊÏ; F€@€‚HãÃè9€‰€†"€A€ƒ‚ÿSoWinCollisionViewer BÊÏ­ÊÏ, (€,€‚H㜽AK€‰ƒ‚ÿSoWinColorEditor@kÊÏíÊÏ, (€(€‚Hã¹Ä L€‰ƒ‚ÿSoWinComponentH­ÊÏ5ËÏ, (€8€‚Hãx-"€‰ƒ‚ÿSoWinConstrainedViewer=íÊÏrËÏ, (€"€‚HãÊÌø!€‰ƒ‚ÿSoWinDeviceM!5ËÏ¿ËÏ, (€B€‚Hã¡<½€‰ƒ‚ÿSoWinDirectionalLightEditorErËÏÌÏ, (€2€‚HãKã€(€‰ƒ‚ÿSoWinExaminerViewer@¿ËÏDÌÏ, (€(€‚Hãm£óh€‰ƒ‚ÿSoWinFlyViewerAÌÏ…ÌÏ, (€*€‚Hã9€õ€‰ƒ‚ÿSoWinFullViewer?DÌÏÄÌÏ, (€&€‚Hã-‹2‘€‰ƒ‚ÿSoWinGLWidget[ …ÌÏÍÏ; F€B€‚Hã3$ËO€‰€†"€A€ƒ‚ÿSoWinHalfScreenStereo [ ÄÌÏzÍÏ; F€B€‚HãɃu{€‰€†"€A€ƒ‚ÿSoWinInterlacedStereo ?ÍϹÍÏ, (€&€‚Hã“âyz€‰ƒ‚ÿSoWinKeyboardEzÍÏþÍÏ, (€2€‚HãHf˜7€‰ƒ‚ÿSoWinMaterialEditor<¹ÍÏ:ÎÏ, (€ €‚Hã ³@8€‰ƒ‚ÿSoWinMouseWþÍÏ‘ÎÏ; F€:€‚HãŽI„5€‰€†"€A€ƒ‚ÿSoWinNoStereoView B:ÎÏÓÎÏ, (€,€‚Hãîeà€‰ƒ‚ÿSoWinPlaneViewerT‘ÎÏ'ÏÏ; F€4€‚Hãpsz©€‰€†"€A€ƒ‚ÿSoWinRawStereo AÓÎÏhÏÏ, (€*€‚Hãÿ3È€‰ƒ‚ÿSoWinRenderArea@'ÏϨÏÏ, (€(€‚HãñÏÊh€‰ƒ‚ÿSoWinSpaceballUhÏÏ Ð; F€6€‚Hã=¡'瀉€†"€A€ƒ‚ÿSoWinSSDIStereo ¨ÏÏ Ð*ÎW¨ÏÏcÐ; F€:€‚HãL CÀ‰€†"€A€ƒ‚ÿSoWinStereoDialog W кÐ; F€:€‚HãŽÛa€‰€†"€Aƒ€‚ÿSoWinStereoViewer YcÐÐ; F€>€‚Hã?/}¦€‰€†"€A€ƒ‚ÿSoWinStereoViewType =ºÐPÐ, (€"€‚HãrPnÀ€‰ƒ‚ÿSoWinViewerAБÐ, (€*€‚Hã7—ìg€‰ƒ‚ÿSoWinWalkViewer>PÐÏÐ, (€$€‚Hã°çT€‰ƒ‚ÿSoWrapperKit?‘ÐÐ, (€&€‚HãeY €‰ƒ‚ÿSoWriteActionQÏÐ_Ð; F€.€‚Hã\º˜O€‰€†"€A€ƒ‚ÿSoWWWAnchor QаÐ; F€.€‚Hã` ½•€‰€†"€A€ƒ‚ÿSoWWWInline 6 _ÐæÐ, (€€‚HãÜ\+€‰ƒ‚ÿSoXt?°Ð%Ð, (€&€‚Hãîá”,€‰ƒ‚ÿSoXtClipboardYæÐ~Ð; F€>€‚HãœN£ô€‰€†"€A€ƒ‚ÿSoXtCollisionViewer A%пÐ, (€*€‚Hãp?†ê€‰ƒ‚ÿSoXtColorEditor?~ÐþÐ, (€&€‚Hã-áOƒ‚ÿSoXtComponentG¿ÐEÐ, (€6€‚Hãl>‡Ï€‰ƒ‚ÿSoXtConstrainedViewer<þÐÐ, (€ €‚HãsJY€‰ƒ‚ÿSoXtDeviceL EÐÍÐ, (€@€‚HãÝÌ¿€‰ƒ‚ÿSoXtDirectionalLightEditorDÐÐ, (€0€‚Hã(’€‰ƒ‚ÿSoXtExaminerViewer]"ÍÐnÐ; F€F€‚Hãà¶ìs€‰€†"€A€ƒ‚ÿSoXtFileSelectionDialog ?ЭÐ, (€&€‚Hãá¿" €‰ƒ‚ÿSoXtFlyViewer@nÐíÐ, (€(€‚HãµGi^€‰ƒ‚ÿSoXtFullViewer>­Ð+Ð, (€$€‚Hã‰2쀉ƒ‚ÿSoXtGLWidget@íÐkÐ, (€(€‚Hãž`û€‰ƒ‚ÿSoXtInputFocus>+ЩÐ, (€$€‚Hãï‰3€‰ƒ‚ÿSoXtKeyboardDkÐíÐ, (€0€‚HãÇ Ø€‰ƒ‚ÿSoXtLightSliderSetD©Ð1Ð, (€0€‚Hã«%¡€‰ƒ‚ÿSoXtMaterialEditorBíÐsÐ, (€,€‚Hãå!X{€‰ƒ‚ÿSoXtMaterialListG1кÐ, (€6€‚HãŽ;€‰ƒ‚ÿSoXtMaterialSliderSet;sÐõÐ, (€€‚HãÁKé €‰ƒ‚ÿSoXtMouseAºÐ6Ð, (€*€‚H㛩€‰ƒ‚ÿSoXtPlaneViewerAõÐwÐ, (€*€‚Hãqx²€‰ƒ‚ÿSoXtPrintDialog@6зÐ, (€(€‚Hã{ç1€‰ƒ‚ÿSoXtRenderArea>wÐõÐ, (€$€‚Hã¶aÞØ€‰ƒ‚ÿSoXtResource?·Ð4 Ð, (€&€‚Hãé^x´€‰ƒ‚ÿSoXtSliderSetCõÐw Ð, (€.€‚Hã.06΀‰ƒ‚ÿSoXtSliderSetBase?4 ж Ð, (€&€‚Hãeìù €‰ƒ‚ÿSoXtSpaceballHw Ðþ Ð, (€8€‚Hã…Wu™€‰ƒ‚ÿSoXtTransformSliderSet<¶ Ð: Ð, (€ €‚Hã®ö¿÷€‰ƒ‚ÿSoXtViewer>þ Ðx Ð+ &€&€‚Hã³^ÖЀ‰‚ÿSoXtWalkViewer(: Р Ð% €€‚H€‚ÿ= x ÐÝ Ð1•1`/Ô†/$Ý Ð ÐbËÐSbViewVolume4  Ð Ð% €€ˆˆ€‚ÿSbViewVolume*Ý Ð; Ð# €€€‚ÿNAMES* ÐŽ Ð) "€T€”‘€€€ ‚ÿSbViewVolume - 3D viewing volume class3; ÐÁ Ð# € €€‚ÿINHERITS FROM9Ž Ðú Ð) "€ €”‘€€€ ‚ÿSbViewVolume. Á Ð( Ð# €€€‚ÿSYNOPSISK"ú Ðs Ð) "€D€”‘€€€ ‚ÿ#include Œ.( Ðÿ Ð^ Š€]€T”A‚S~‚A€ƒ€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€€ƒ€‚ÿenum ProjectionType{SbViewVolume::ORTHOGRAPHICOrthographic projectionSbViewVolume::PERSPECTIVEPerspective projection}enum StereoMode{SbViewVolume::MONOSCOPICMonoscopic (i.e., non-stereo) viewingSbViewVolume::LEFT_VIEWLeft eye viewSbViewVolume::RIGHT_VIEWRight eye view}P$s ÐOÐ, (€H€”‘€‚A€€‚ÿMethods from class SbViewVolume:7­ÿ Ð’@Њ â€[€T”A‚S~‚A€ƒ‚ƒ‚ƒã4i¥‘‰ã4i¥‘‰‚ã4i¥‘‰ƒ‚ã4i¥‘‰ƒ‚ƒã}ƒõ(‰ãǬ|6‰‚ƒã}ƒõ(‰ã¨ƒõ(‰ã¨ƒõ(‰‚ƒã¨ƒõ(‰ã¨ƒõ(‰‚ã÷Ä'‰ƒ‚ÿSbViewVolume()~SbViewVolume()floatgetMatrices(SbMatrix &affine,SbMatrix &proj) constSbMatrixgetMatrix() constSbMatrixgetCameraSpaceMatrix() constvoidprojectPointToLine(const SbVec2f &pt,SbLine &line) constvoidprojectPointToLine(const SbVec2f &pt,SbVec3f &line0,OÐ’@Р ÐSbVec3f &line1) constvoidprojectToScreen(const SbVec3f &src,SbVec3f &dst) constSbPlanegetPlane(float distFromEye) constHÈOÐÚBЀ ΀‘€T”A‚S~‚A㨃õ(€‰ƒ‚㨃õ(‰ƒã}ƒõ(‰‚ã ‚û‰ƒã‘¶p6‰‚ƒã¨ƒõ(‰‚ã}ƒõ(‰ƒã?çî$‰‚㪮§O‰ƒ‚㪮§O‰ƒã?çî$‰‚ÿSbVec3fgetSightPoint(float distFromEye) constSbVec3fgetPlanePoint(float distFromEye,const SbVec2f &normPoint) constSbRotationgetAlignRotation(SbBool rightAngleOnly = FALSE) constfloatgetWorldToScreenScale(const SbVec3f &worldCenter,float normRadius) constSbVec2fprojectBox(const SbBox3f &box) constSbViewVolumenarrow(float left,float bottom,float right,float top) constSbViewVolumenarrow(const SbBox3f &box) constµ’@ÐïDÐ` Ž€k€T”A‚S~‚A€ƒ‚ƒ‚ƒã ‚û‰‚ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚㪮§O‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidortho(float left,float right,float bottom,float top,float near,float far)voidperspective(float fovy,float aspect,float near,float far)voidrotateCamera(const SbRotation &q)voidtranslateCamera(const SbVec3f &v)SbVec3fzVector() constSbViewVolumezNarrow(float near,float far) constvoidscale(float factor)voidscaleWidth(float ratio)voidscaleHeight(float ratio)ProjectionTypegetProjectionType() constø£ÚBÐçFÐU x€G€T”A‚S~‚A€㨃õ(‰ƒ‚㨃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ€‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿconst SbVec3f &getProjectionPoint() constconst SbVec3f &getProjectionDirection() constfloatgetNearDist() constfloatgetWidth() constfloatgetHeight() constfloatgetDepth() constvoidsetStereoAdjustment(float adjustment)floatgetStereoAdjustment() constvoidsetBalanceAdjustment(float adjustment)floatgetBalanceAdjustment() constvoidsetStereoMode(StereoMode mode)StereoModegetStereoMode() const4ïDÐGÐ& €€‚A€‚ÿDESCRIPTION+þçFÐFHÐ- (€ý€”‘€‚A€€ ‚ÿClass used to represent a 3D viewing volume. This class is used to represent viewing frusta and picking volumes. For perspective projection, the view volume is a frustum. For orthographic (parallel) projection, the view volume is a rectangular prism.0 GÐvHÐ& €€‚A€‚ÿMETHODSY%FHÐÏHÐ4 8€J€T”A‚S~‚A€ƒ€‚€ƒ‚ÿSbViewVolume()~SbViewVolume()KvHÐIÐ, (€>€”‘€‚A€€‚ÿConstructor and destructor.y@ÏHГIÐ9 B€€€T”A‚S~‚A€ƒã4i¥‘‰ã4i¥‘‰‚ÿfloatgetMatrices(SbMatrix &affine,SbMatrix &proj) const/IÐÂJÐ- (€€”‘€‚A€€‚ÿReturns two matrices corresponding to the view volume. The first is a viewing matrix, which is guaranteed to be an affine transformation. The second is suitable for use as a projection matrix in OpenGL. The return value is the stereo offset for a camera.{F“IÐ=KÐ5 :€Œ€”‘€‚A€€€€€‚ÿPrior to release 2.6, the return value was a void, not a float.QÂJÐŽKÐ2 4€>€T”A‚S~‚Aã4i¥‘€‰ƒ‚ÿSbMatrixgetMatrix() constµ‚=KÐCLÐ3 4€€”‘€‚A€€€€‚ÿLike the method above, but returns the affine and projection parts together in one matrix (i.e., affine.multRight( proj ) ).\*ŽKПLÐ2 4€T€T”A‚S~‚Aã4i¥‘€‰ƒ‚ÿSbMatrixgetCameraSpaceMatrix() constøËCLЗMÐ- (€—€”‘€‚A€€‚ÿReturns a matrix that transforms the view volume into camera space: it translates the view volume so the viewpoint is at the origin, and rotates it so the view direction is along the negative z axis.윟LЃNÐP n€9€T”A‚S~‚A€ƒã}ƒõ(‰ãǬ|6‰‚ƒã}ƒõ(‰ã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidprojectPointToLine(const SbVec2f &pt,SbLine &line) constvoidprojectPointToLine(const SbVec2f &pt,SbVec3f &line0,SbVec3f &line1) const`4—MÐãNÐ, (€h€”‘€‚A€€‚ÿMaps a 2D point (in 0 <= x,y <= 1) to a 3D line.|CƒNÐ_OÐ9 B€†€T”A‚S~‚A€ƒã¨ƒõ(‰ã¨ƒõ(‰‚ÿvoidprojectToScreen(const SbVec3f &src,SbVec3f &dst) const4ãNП€Ð- (€€”‘€‚A€€‚ÿMaps the 3D point in world coordinates to a 2D point in normalized screen coordinates (0 <= x,y,z <= 1). The z-scre_OП€Ð  Ðen coordinate represents the homogeneous z coordinate which goes (nonlinearly) from 0 at the near clipping plane to 1 at the far clipping plane.`._OÐÿ€Ð2 4€\€T”A‚S~‚Aã÷Ä'€‰ƒ‚ÿSbPlanegetPlane(float distFromEye) const«Ÿ€ÐªÐ, (€þ€”‘€‚A€€‚ÿReturns a plane parallel to the near (or far) plane of the view volume at a given distance from the projection point (eye).e3ÿ€Ð‚Ð2 4€f€T”A‚S~‚A㨃õ(€‰ƒ‚ÿSbVec3fgetSightPoint(float distFromEye) constdªÐŸ‚Ð, (€È€”‘€‚A€€‚ÿReturns the point along the line of sight at the given distance from the projection point (eye).ˆO‚Ð'ƒÐ9 B€ž€T”A‚S~‚A㨃õ(€‰ƒã}ƒõ(‰‚ÿSbVec3fgetPlanePoint(float distFromEye,const SbVec2f &normPoint) constö½Ÿ‚ЄÐ9 @€{€”‘€‚A€€€€€€‚ÿReturns the projection of a given point in normalized screen coordinates (see projectToScreen()) onto the plane parallel to the near plane that is at distFromEye units from the eye.G'ƒÐœ„Ð8 @€Ž€T”A‚S~‚Aã ‚û€‰ƒã‘¶p6‰‚ÿSbRotationgetAlignRotation(SbBool rightAngleOnly = FALSE) constD„Ðà…Ð3 4€#€”‘€‚A€€€€‚ÿReturns a rotation that would align a viewed object so that its positive x-axis (of its object space) is to the right in the view and its positive y-axis is up. If rightAngleOnly is TRUE, it will come as close as it can to this goal by using only 90 degree rotations.‡Tœ„Ðg†Ð3 6€¨€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿfloatgetWorldToScreenScale(const SbVec3f &worldCenter,float normRadius) constüÉà…Ðc‡Ð3 4€“€”‘€‚A€€€€‚ÿReturns a scale factor that would scale a unit sphere centered at worldCenter so that it would appear to have the given radius in normalized screen coordinates when projected onto the near plane.k3g†Ð·Ð8 @€f€T”A‚S~‚Aã}ƒõ(€‰ƒã?çî$‰‚ÿSbVec2fprojectBox(const SbBox3f &box) constËžc‡Ð™ˆÐ- (€=€”‘€‚A€€‚ÿProjects the given 3D bounding box onto the near plane and returns the size (in normalized screen coordinates) of the rectangular region that encloses it.…P·Ð‰Ð5 :€ €T”A‚S~‚A㪮§O€‰ƒ‚ÿSbViewVolumenarrow(float left,float bottom,float right,float top) const陈Ð4ŠÐ- (€Ó€”‘€‚A€€‚ÿGiven a view volume, narrows the view to the given sub-rectangle of the near plane. The coordinates of the rectangle are between 0 and 1, where (0,0) is the lower-left corner of the near plane and (1,1) is the upper-right corner.l4‰Ð ŠÐ8 @€h€T”A‚S~‚A㪮§O€‰ƒã?çî$‰‚ÿSbViewVolumenarrow(const SbBox3f &box) const½4ŠÐ]‹Ð- (€!€”‘€‚A€€‚ÿNarrows a view volume by the given box. The box must lie inside the unit cube, and the view will be shrunk according to the size of the box.‡V ŠÐä‹Ð1 2€¬€T”A‚S~‚A€ƒ‚ÿvoidortho(float left,float right,float bottom,float top,float near,float far)³€]‹Ð—ŒÐ3 4€€”‘€‚A€€€€‚ÿSets up an orthographic view volume with the given sides. The parameters are the same as for the OpenGL glOrtho() routine.sDä‹Ð Ð/ .€ˆ€T”A‚S~‚A€ƒ‚ÿvoidperspective(float fovy,float aspect,float near,float far)Û—ŒÐŽÐ3 4€·€”‘€‚A€€€€‚ÿSets up a perspective view volume with the given field of view and aspect ratio. The parameters are the same as for the OpenGL gluPerspective() routine, except that the field of view angle is specified in radians.]+ ÐuŽÐ2 4€V€T”A‚S~‚A€ƒã ‚û‰‚ÿvoidrotateCamera(const SbRotation &q).ÐdÐ3 4€y€”‘€‚A€€€€‚ÿRotate the camera view direction. Note that this accomplishes the reverse of doing an OpenGL glRotate() command after defining a camera, which rotates the scene viewed by the camera.]+uŽÐÁÐ2 4€V€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidtranslateCamera(const SbVec3f &v)óÀdÐÀÀÐ3 4€€”‘€‚A€€€€‚ÿTranslate tÁÐÀÀР Ðhe camera viewpoint. Note that this accomplishes the reverse of doing an OpenGL glTranslate() command after defining a camera, which translates the scene viewed by the camera.NÁÐÁÐ2 4€8€T”A‚S~‚A㨃õ(€‰ƒ‚ÿSbVec3fzVector() constÈ›ÀÀÐÖÁÐ- (€7€”‘€‚A€€‚ÿReturns the positive z axis in eye space. In this coordinate system, the z value of the near plane should be GREATER than the z value of the far plane.i6ÁÐ?ÂÐ3 6€l€T”A‚S~‚A㪮§O€‰ƒ‚ÿSbViewVolumezNarrow(float near,float far) constr'ÖÁбÃÐK d€O€”‘€‚A€€€€€€€€€€€€‚ÿReturns a narrowed view volume which contains as tightly as possible the given interval on the z axis (in eye space). The returned view volume will never be larger than the current volume, however. near and far are given in terms of zVector(): this means that near > far must hold.G?ÂÐøÃÐ, (€6€T”A‚S~‚A€ƒ‚ÿvoidscale(float factor)g;±ÃÐ_ÄÐ, (€v€”‘€‚A€€‚ÿScales width and height of view volume by given factor.k=øÃÐÊÄÐ. ,€z€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidscaleWidth(float ratio)voidscaleHeight(float ratio)á´_ÄЫÅÐ- (€i€”‘€‚A€€‚ÿScales view volume to be the given ratio of its current width or height, leaving the resulting view volume centered about the same point (in the near plane) as the current one.ƉÊÄÐqÆÐ= H€€T”A‚S~‚A€ƒ‚㨃õ(‰ƒ‚㨃õ(‰ƒ‚ÿProjectionTypegetProjectionType() constconst SbVec3f &getProjectionPoint() constconst SbVec3f &getProjectionDirection() constO#«ÅÐÀÆÐ, (€F€”‘€‚A€€‚ÿReturns projection information.HqÆÐÇÐ, (€8€T”A‚S~‚A€ƒ‚ÿfloatgetNearDist() conste9ÀÆÐmÇÐ, (€r€”‘€‚A€€‚ÿReturns distance from projection point to near plane.xHÇÐåÇÐ0 0€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿfloatgetWidth() constfloatgetHeight() constfloatgetDepth() constR&mÇÐ7ÈÐ, (€L€”‘€‚A€€‚ÿReturns bounds of viewing frustum.}OåÇдÈÐ. ,€ž€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetStereoAdjustment(float adjustment)floatgetStereoAdjustment() constK"7ÈÐÿÈÐ) "€D€”‘€‚A€‚ÿSets/queries the stereo offset.Q´ÈÐ~ÉÐ. ,€¢€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetBalanceAdjustment(float adjustment)floatgetBalanceAdjustment() constN%ÿÈÐÌÉÐ) "€J€”‘€‚A€‚ÿSets/queries the parallax balance.uG~ÉÐAÊÐ. ,€Ž€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetStereoMode(StereoMode mode)StereoModegetStereoMode() constI ÌÉЊÊÐ) "€@€”‘€‚A€‚ÿSets/queries the stereo mode.1 AÊлÊÐ& €€‚A€‚ÿSEE ALSO§EŠÊÐbËÐb ”€Š€”‘€‚A㨃õ(€‰€ã}ƒõ(€‰€ã?çî$€‰€ã4i¥‘€‰€ã ‚û€‰€ ‚ÿSbVec3f, SbVec2f, SbBox3f, SbMatrix, SbRotation9»ÊЛËÐ1/{ E…E%›ËÐËËÐ †ÑSoCamera0 bËÐËËÐ% €€ˆˆ€‚ÿSoCamera*›ËÐõËÐ# €€€‚ÿNAME\3ËËÐQÌÐ) "€f€”‘€€€ ‚ÿSoCamera - abstract base class for camera nodes3õËЄÌÐ# € €€‚ÿINHERITS FROMŠ=QÌÐÍÐM j€z€”‘€ã}9€‰€ã¿\%†€‰€ã’n%9€‰€€€ ‚ÿSoBase > SoFieldContainer > SoNode > SoCamera. „ÌÐ<ÍÐ# €€€‚ÿSYNOPSISÜ–ÍÐÏÐF Z€-€”‘€‚9€€ ‚€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿ#include #define SO_ASPECT_SQUARE1.00#define SO_ASPECT_VIDEO1.333333333#define SO_ASPECT_35mm_ACADEMY1.371#define SO_ASPECT_16mm1.369#define SO_ASPECT_35mm_FULL1.33333#define SO_ASPECT_70mm2.287#define SO_ASPECT_CINEMASCOPE2.35#define SO_ASPECT_HDTV1.777777777#define SO_ASPECT_PANAVISION2.361#define SO_ASPECT_35mm1.5#define SO_ASPECT_VISTAVISION2.301y<ÍÐÑ[ „€=€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€ƒ€€‚ÿenum ViewportMapping{SoCamera::CROP_VIEWPORT_FILL_FRAMECrops the viewport within the current window, so that the aspect ratio matches tÏÐÑbËÐhat of the camera. As the window size changes, the aspect ratio remains unchanged. The cropped region is drawn as a filled gray area.SoCamera::CROP_VIEWPORT_LINE_FRAMECrops the viewport, but draws a thin frame around the viewportSoCamera::CROP_VIEWPORT_NO_FRAMECrops the viewport, but gives no visual feedback as to the viewport dimensions within the windowSoCamera::ADJUST_CAMERAAdjusts the camera aspect ratio and height to make it fit within the given window. (The camera's fields are not affected, just the values sent to the graphics library.)SoCamera::LEAVE_ALONEDo nothing. Camera image may become stretched out of proportion}í¡ÏЊÑL f€C€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€‚ÿenum StereoMode{SoCamera::MONOSCOPICMonoscopic (i.e., non-stereo) viewingSoCamera::LEFT_VIEWLeft eye viewSoCamera::RIGHT_VIEWRight eye view}KÑÕÑ, (€>€”‘€‚A€€‚ÿFields from class SoCamera:°ŠÑèÑc ”€a€T”A‚S~‚AãØtW选ƒ‚ã”5‰ƒ‚ã‘Ù»•‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ã0â1‰ƒ‚ÿSoSFEnumviewportMappingSoSFVec3fpositionSoSFRotationorientationSoSFFloataspectRatioSoSFFloatnearDistanceSoSFFloatfarDistanceSoSFFloatfocalDistanceL ÕÑ4Ñ, (€@€”‘€‚A€€‚ÿMethods from class SoCamera:2ÅèÑfÑm ¨€‹€T”A‚S~‚A€ƒã¨ƒõ(‰‚ƒ‚㪮§O‰ƒ‚ƒã’n%9‰ãñf‘¸‰‚ƒãMy'9‰ãñf‘¸‰‚ãñf‘¸‰ƒãñf‘¸‰‚ƒ‚ÿvoidpointAt(const SbVec3f &targetPoint)virtual voidscaleHeight(float scaleFactor)virtual SbViewVolumegetViewVolume(float useAspectRatio = 0.0) constvoidviewAll(SoNode *sceneRoot,const SbViewportRegion &vpRegion,float slack = 1.0)voidviewAll(SoPath *path,const SbViewportRegion &vpRegion,float slack = 1.0)SbViewportRegiongetViewportBounds(const SbViewportRegion ®ion) constvoidsetStereoAdjustment(float adjustment)Ù4Ñ|Ñ= H€³€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚ÿfloatgetStereoAdjustment() constvoidsetBalanceAdjustment(float adjustment)floatgetBalanceAdjustment() constvoidsetStereoMode(StereoMode mode)StereoModegetStereoMode() conststatic SoTypegetClassTypeId()R fÑÎÑ2 4€@€”‘€‚A€ã’n%9‰€‚ÿMethods from class SoNode:||ÑJ Ñn ª€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ã’n%9‰ƒãúß~6‰‚ƒãúß~6‰ãœÐ‰‚ÿvoidsetOverride(SbBool state)SbBoolisOverride() constSoNode *copy(SbBool copyConnections = FALSE) constvirtual SbBoolaffectsState() conststatic SoNode *getByName(const SbName &name)static intgetByName(const SbName &name,SoNodeList &list)\*ÎѦ Ñ2 4€T€”‘€‚A€ã¿\%†‰€‚ÿMethods from class SoFieldContainer:eØJ Ñ Ñ è€±€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã¿\%†‰‚ƒã¿\%†‰ã‘¶p6‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒãÐPWÙ‰‚ãþ —‰ƒãúß~6‰‚㑶p6‰ƒãþ —‰ãúß~6‰‚ÿvoidsetToDefaults()SbBoolhasDefaultValues() constSbBoolfieldsAreEqual(const SoFieldContainer *fc) constvoidcopyFieldValues(const SoFieldContainer *fc,SbBool copyConnections = FALSE)SbBoolset(const char *fieldDataString)voidget(SbString &fieldDataString)virtual intgetFields(SoFieldList &resultList) constvirtual SoField *getField(const SbName &fieldName) constSbBoolgetFieldName(const SoField *field,SbName &fieldName) constˆH¦ Ñ“ Ñ@ P€€T”A‚S~‚A㑶p6€‰ƒ‚㑶p6‰ƒã‘¶p6‰‚ÿSbBoolisNotifyEnabled() constSbBoolenableNotify(SbBool flag)R Ñå Ñ2 4€@€”‘€‚A€ã}9‰€‚ÿMethods from class SoBase:7Þ“ ÑÑY €€½€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒãúß~6‰‚ãúß~6‰ƒ‚ÿvoidref()voidunref() constvoidunrefNoDelete() constvoidtouch()virtual SoTypegetTypeId() constSbBoolisOfType(SoType type) constvirtual voidsetName(const SbName &name)virtual SbNamegetName() const8å ÑTÑ) "€€‚A€€ ‚ÿDESCRIPTIONÜ¯Ñ SoWinGLWidget > SoWinRenderArea > SoWinViewer2. SoWinStereoViewer > SoWinViewer. g‡ÑsˆÑ# €€€‚ÿSYNOPSISZ1EˆÑ͈Ñ) "€b€”‘€€€ ‚ÿ#include wDsˆÑD‰Ñ3 6€ˆ€T”A‚S~‚A€ƒãrPnÀ‰‚ÿtypedef voidSoWinViewerCB(void *userData,SoWinViewer *viewer)9 ͈Ñ}‰Ñ, (€€”‘€‚A€€‚ÿCallback.ç³D‰ÑdŠÑ4 6€g€T”A‚S~‚A€ƒ‚ƒ‚ÿtypedef voidSoXtViewerFPSCB(float fps,void *userData,SoXtViewer *viewer)typedef voidSoXtViewerDecimationPercentageCB(float percentage,void *userData,SoXtViewer *viewer)Œ`}‰ÑðŠÑ, (€À€”‘€‚A€€‚ÿLarge Model Viewing notification callbacks for frames per second, and decimation percentage. £dŠÑúŒÑg œ€G€T”A‚S~‚A€ƒ€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Type{SoWinViewer::BROWSERCamera views scene, but is not added to sceneSoWinViewer::EDITORCamera is added to user's scene}enum DecimationStrategy{SoWinViewer::NORMALDecimation is not changedSoWinViewer::FIXED_NUM_TRIANGLESTry to fix number of triangles drawnSoWinViewer::FRAMES_PER_SECONDTry to fix frames per secondSoWinViewer::FIXED_PERCENTAGEUse given decimation percentage}™ðŠÑ“Ñ‚ Ò€/€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€‚ÿenum DrawStyle{SoWinViewer::VIEW_AS_ISUnchangedSoWinViewer::VIEW_HIDDEN_LINERender only the frontmost linesSoWinViewer::VIEW_NO_TEXTURERender without texturesSoWinViewer::VIEW_LOW_COMPLEXITYRender low complexity and no textureSoWinViewer::VIEW_LINEWireframe draw styleSoWinViewer::VIEW_POINTPoint draw styleSoWinViewer::VIEW_BOXBounding box draw style}enum DrawType{SoWinViewer::STILLApplies to static renderingSoWinViewer::INTERACTIVEApplies to rendering while interactive viewing}ÑuúŒÑpÁÑ\ †€ë€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€‚€ƒƒƒƒƒ€‚ÿenum BufferType“ÑpÁÑ †Ñ{SoWinViewer::BUFFER_SINGLESingle bufferSoWinViewer::BUFFER_DOUBLEDouble bufferSoWinViewer:BUFFER_INTERACTIVEDouble buffer while interactive viewing}enum CursorStyle{SoWinViewer::CLASSIC,Standard Open Inventor cursorsSoWinViewer::XOR,Improved cursors using XORSoWinViewer::SHADOWImproved cursors using "shadow"}[Win32 only]O#“Ñ¿ÁÑ, (€F€”‘€‚A€€‚ÿMethods from class SoWinViewer:;ÍpÁÑúÃÑn ª€›€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒ‚ƒ‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoWinViewer::DrawType type,SoWinViewer::DrawStyle style)SoWinViewer::DrawStylegetDrawStyle(SoWinViewer::DrawType type)%´¿ÁÑÆÑq °€i€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ÿvoidsetBufferingType(SoWinViewer::BufferType type)SoWinViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual voidsetCursorEnabled(SbBool onOrOff) SbBoolisCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()voidsetStereoOffset(float dist)!ÐúÃÑ@ÈÑQ p€¡€T”A‚S~‚A€ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿfloatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoWinViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoWinViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoWinViewerCB *f,void *userData = NULL)voidcopyView(time_t eventTime)voidpasteView(time_t eventTime)M÷ÆÑÊÑV z€ï€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒ‚ÿvoidsetDecimationStrategy(DecimationStrategy strategy)DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal)int32_tgetGoalNumberOfTriangles()voidsetGoalFramesPerSecond(float goal)floatgetGoalFramesPerSecond()voidsetFixedPercentage(float percent)floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff)SbBoolisFullRenderingWhenStill()SbBoolisStillNow() voidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData)I@ÈÑÌÑG \€“€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚€ƒƒ€‚€ƒƒ€‚ÿvoidsetNumSamples(int numFrames)intgetNumSamples() void setDecimationPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL)float getCurrentDecimationPercentage()voidsetCursorStyle( SoWinViewer::CursorStyle style )[Win32 only]SoWinViewer::CursorStylegetCursorStyle()[Win32 only][)ÊÑxÌÑ2 4€R€”‘€‚A€ãÿ3ȉ€‚ÿMethods from class SoWinRenderArea:&µÌÑžÎÑq °€k€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãÊÌø!‰‚ƒãÊÌø!‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoWinDevice *)voidunregisterDevice(SoWinDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «xÌѶÒa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportžÎÑ¶Ò †ÑRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤žÎÑÎÒt ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)7Û¶ÒÒ\ †€·€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoWinRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºWÎÒ¿Òc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constY'ÒÒ2 4€N€”‘€‚A€ã-‹2‘‰€‚ÿMethods from class SoWinGLWidget:6׿ÒN Ò_ Œ€¯€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()HWNDgetNormalWindow()HWNDgetOverlayWindow()HGLRCgetNormalContext()HGLRCgetOverlayContext()HWNDgetNormalWidget()HWNDgetOverlayWidget()virtual voidsetNormalVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getNormalVisual()virtual voidsetOverlayVisual(PIXELFORMATDESCRIPTOR *vis)PIXELFORMATDESCRIPTOR *getOverlayVisual()÷„ÒE Òs ´€ €T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚€ƒ€‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag)SbBoolisDrawToFrontBufferEnable() constvoidsetCursor(Cursor newCursor) [Win32 only]CursorgetCursor() [Win32 only]HDCgetNormalDC() [Win32 only]HDCgetOverlayDC() [Win32 only]voidsetStealFocus(SbBool onOrOff) [Win32 only]virtual voidsetPixelFormat(int format) [Win32 only]intgetPixelFormat() [Win32 only]Z(N ÒŸ Ò2 4€P€”‘€‚A€ã¹Ä L‰€‚ÿMethods from class SoWinComponent:5ÓE ÒÔ Òb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬vŸ Ò€Ò6 <€ì€T”A‚S~‚A€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() constY*Ô ÒÙÒ/ .€T€”‘€‚A€ãŽÛa‰‚ÿMethods from class SoWinStereoViewer:CÌ€Ò(AÒw ¼€™€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ã½V)\‰ƒ‚ƒ‚㊃õ(‰ƒ‚㊃õ(‰ƒ‚㊃õ(‰ƒ‚㑶p6‰ƒ‚ƒã?/}¦‰‚ã?/}¦‰ƒ‚ÿvirtual voidsetStereoActive(SbBool activate)virtual SbBoolisStereoActive()virtual voidactualRendering()virtual SoCamera *getViewerCamera()virtual voidadjustClipÙÒ(AÒ †ÑpingPlanes()virtual const SbVec2s&getSize()virtual const SbVec2s&getTopLeft()virtual const SbVec2s&getBottomRight()virtual SbBoolisViewerDoubleBuffer()virtual voidsetStereoViewType(SoWinStereoViewType * stereo)virtual SoWinStereoViewType *getStereoViewType()¾ÙÒÅÓdÓ) "€|€”‘€‚A€‚ÿNote: The viewer "this" pointer is passed as callback data.qCýÓÕÓ. ,€†€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidcopyView(time_t eventTime)voidpasteView(time_t eventTime)ÜdÓêÓ9 @€¹€”‘€‚A€€€€€€‚ÿCopy/paste the view. eventTime should be the time of the Windows message which initiated the copy or paste (e.g. if copy/paste is initiated from a keystroke, eventTime should be the time in the key down message.)”fÕÓ~ Ó. ,€Ì€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetDecimationStrategy(DecimationStrategy strategy)DecimationStrategygetDecimationStrategy() f:êÓä Ó, (€t€”‘€‚A€€‚ÿSet/get strategy to use to decide on decimation value.Q~ Óc Ó. ,€¢€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetGoalNumberOfTriangles(int32_t goal)int32_tgetGoalNumberOfTriangles()qEä ÓÔ Ó, (€Š€”‘€‚A€€‚ÿSet/get goal number of triangles for the viewer to try to render.wIc ÓK Ó. ,€’€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetGoalFramesPerSecond(float goal)floatgetGoalFramesPerSecond()oCÔ Óº Ó, (€†€”‘€‚A€€‚ÿSet/get goal frames per second for the viewer to try to render.sEK Ó- Ó. ,€Š€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetFixedPercentage(float percent)floatgetFixedPercentage() nBº Ó› Ó, (€„€”‘€‚A€€‚ÿSet/get fixed percentage for the viewer to render (0.0 to 1.0)’X- Ó- Ó: D€°€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidenableFullRenderingWhenStill(SbBool onOff)SbBoolisFullRenderingWhenStill()Ÿs› ÓÌ Ó, (€æ€”‘€‚A€€‚ÿIf this flag is set, the viewer will render at full resolution when it sits still for a certain period of time.K- ÓÓ2 4€2€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisStillNow() ^2Ì ÓuÓ, (€d€”‘€‚A€€‚ÿReturns whether the viewer is currently still.zMÓïÓ- *€š€T”A‚S~‚A€ƒ‚ÿvoidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData)T(uÓCÓ, (€P€”‘€‚A€€‚ÿRegister frames per second callback.g9ïÓªÓ. ,€r€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetNumSamples(int numFrames)intgetNumSamples() “gCÓI@Ó, (€Î€”‘€‚A€€‚ÿSet/get how many frames should be timed bªÓI@Ó †Ñefore frames per second callback is called, default is 10.šlªÓã@Ó. ,€Ø€T”A‚S~‚A€ƒ‚ÿvoid setDecimationPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL)X,I@Ó;AÓ, (€X€”‘€‚A€€‚ÿRegister decimation percentage callback.V*ã@Ó‘AÓ, (€T€T”A‚S~‚A€ƒ‚ÿfloat getCurrentDecimationPercentage()tH;AÓBÓ, (€€”‘€‚A€€‚ÿReturn the Decimation Percentage the viewer used in its last render.¶}‘AÓ»BÓ9 B€ú€T”A‚S~‚A€ƒƒ€‚€ƒƒ€‚ÿvoidsetCursorStyle(SoWinViewer::CursorStyle style)[Win32 only]SoWinViewer::CursorStylegetCursorStyle()[Win32 only]¨{BÓcDÓ- (€÷€”‘€‚A€€‚ÿThe standard Open Inventor (CLASSIC) cursors use all white pixels, which can be difficult to see over light colored geometry or background. The XOR and SHADOW style cursors are much easier to see. The XOR style cursors that have a "hand" shape differ from the other styles in that the cursor hotspot is at the tip of the index finger. This generally works better for picking.Ú§»BÓ=EÓ3 4€O€”‘€‚A€ã!§˜m‰€‚ÿThe cursor can also be specified using environment variable OIV_CURSOR_STYLE, where the values 0, 1, and 2 specify Classic, XOR, and Shadow cursors respectively.1 cDÓnEÓ& €€‚A€‚ÿSEE ALSOð=EÓ^FÓo ¬€€”‘€‚Aã¹Ä L€‰€ãÿ3È€‰€ãKã€(€‰€ã7—ìg€‰€ãm£óh€‰€ãîeà€‰€ ‚ÿSoWinComponent, SoWinRenderArea, SoWinExaminerViewer, SoWinWalkViewer, SoWinFlyViewer, SoWinPlaneViewerBnEÓ FÓ1wõ…©§ª' FÓÙFÓŒÓSoWinStereoViewer9^FÓÙFÓ% €(€ˆˆ€‚ÿSoWinStereoViewer* FÓGÓ# €€€‚ÿNAMEf=ÙFÓiGÓ) "€z€”‘€€€ ‚ÿSoWinStereoViewer - pure virtual class for stereo support3GÓœGÓ# € €€‚ÿINHERITS FROM>iGÓÚGÓ) "€*€”‘€€€ ‚ÿSoWinStereoViewer. œGÓHÓ# €€€‚ÿSYNOPSISb6ÚGÓjHÓ, (€l€”‘€‚9€€ ‚ÿ#include Q(HÓ»HÓ) "€P€”‘€‚9€‚ÿMethods from class SoWinStereoViewer:CÌjHÓþJÓw ¼€™€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ã½V)\‰ƒ‚ƒ‚㊃õ(‰ƒ‚㊃õ(‰ƒ‚㊃õ(‰ƒ‚㑶p6‰ƒ‚ƒã?/}¦‰‚ã?/}¦‰ƒ‚ÿvirtual voidsetStereoActive(SbBool activate)virtual SbBoolisStereoActive()virtual voidactualRendering()virtual SoCamera *getViewerCamera()virtual voidadjustClippingPlanes()virtual const SbVec2s&getSize()virtual const SbVec2s&getTopLeft()virtual const SbVec2s&getBottomRight()virtual SbBoolisViewerDoubleBuffer()virtual voidsetStereoViewType(SoWinStereoViewType * stereo)virtual SoWinStereoViewType *getStereoViewType()¾»HÓMÓV z€}€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚€ƒƒ€‚ÿvirtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()virtual voidsetStereoOffset(float offset)virtual floatgetStereoOffset()virtual voidsetStereoBalance(float balance)virtual floatgetStereoBalance()virtual voidsetViewport(short left,short bottom,short width,short height)virtual voidgetViewport(short &left,short &bottom,short &width,short &height)virtual HDCgetCurrentDC()[Win32 only]4þJÓFMÓ& €€‚A€‚ÿDESCRIPTIONqMÓãMÓ, (€â€”‘€‚A€€ ‚ÿThis pure virtual class is the class that should be extended by viewer classes that will do stereo rendering.0 FMÓNÓ& €€‚A€‚ÿMETHODS–VãMÓ©NÓ@ P€¬€T”A‚S~‚A€ƒã‘¶p6‰€‚€㑶p6‰ƒ‚ÿvirtual voidsetStereoActive(SbBool activate)virtual SbBoolisStereoActive()K"NÓôNÓ) "€D€”‘€‚A€‚ÿSets/queries stereo activation.N"©NÓBOÓ, (€D€T”A‚S~‚A€ƒ‚ÿvirtual void actualRendering()‰SôNÓ×€Ó6 :€§€”‘€‚A€€€€€‚ÿThis method is called automatically when the viewer requests that its SoWinStereoViewType object perform stereo rendering. actualRenBOÓ×€Ó^FÓdering may then be called twice (once for each eye view) and therefore must not take into account any stereo-specific settings. It should behave as if it were a rendering method for a monoscopic view.[)BOÓ2Ó2 4€R€T”A‚S~‚A€ã½V)\‰ƒ‚ÿvirtual SoCamera *getViewerCamera()–g×€ÓÈÓ/ .€Î€”‘€‚A€€€‚ÿReturning the camera allows the SoWinStereoViewType to manipulate it to achieve the stereo effect.R&2Ó‚Ó, (€L€T”A‚S~‚A€ƒ‚ÿvirtual voidadjustClippingPlanes()»‹ÈÓÕ‚Ó0 .€€”‘€‚A€€€‚ÿAlong with the manipulation of the camera, SoWinStereoViewType needs to set the scene appropriately when changing the camera settings.·u‚ÓŒƒÓB T€ê€T”A‚S~‚A€㊃õ(‰ƒ‚㊃õ(‰ƒ‚㊃õ(‰ƒ‚ÿvirtual const SbVec2s&getSize()virtual const SbVec2s&getTopLeft()virtual const SbVec2s&getBottomRight()˜nÕ‚Ó$…Ó* "€Ý€”‘€‚A€‚ÿReturn the size and position of the OpenGL drawing window in absolute screen coordinates (not relative to parent window) of the native window system (typically Y increasing downward). Also note that getTopLeft() literally returns "Top" in the first value of the vector and "Left" in the second value (reverse of the usual X,Y ordering). Same for getBottomRight().\*ŒƒÓ€…Ó2 4€T€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolisViewerDoubleBuffer()Q($…ÓÑ…Ó) "€P€”‘€‚A€‚ÿQueries if viewer is double buffered.¯u€…Ó€†Ó: D€ê€T”A‚S~‚A€ƒã?/}¦‰‚ã?/}¦‰ƒ‚ÿvirtual voidsetStereoViewType(SoWinStereoViewType * stereo)virtual SoWinStereoViewType *getStereoViewType()¼ŒÑ…Ó<‡Ó0 .€€”‘€‚A€€€‚ÿIf SoWinStereoViewType is NULL, the default type (NoStereoViewType) is applied. The stereo viewer will behave like a monoscopic viewer.•[€†ÓчÓ: D€¶€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvirtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()^5<‡Ó/ˆÓ) "€j€”‘€‚A€‚ÿSets/queries reversal of the left and right views.{MчӪˆÓ. ,€š€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidsetStereoOffset(float offset)virtual floatgetStereoOffset()V-/ˆÓ‰Ó) "€Z€”‘€‚A€‚ÿSets/queries the offset between each view.~PªˆÓ~‰Ó. ,€ €T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidsetStereoBalance(float balance)virtual floatgetStereoBalance()vM‰Óô‰Ó) "€š€”‘€‚A€‚ÿSets/queries the stereo balance (the position of the zero parallax plane).×¢~‰ÓËŠÓ5 8€E€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidsetViewport(short left,short bottom,short width,short height)virtual voidgetViewport(short &left,short &bottom,short &width,short &height)”kô‰Ó_‹Ó) "€Ö€”‘€‚A€‚ÿSets/queries viewport region with given origin (lower-left corner) and size, given as pixel coordinates.[+ËŠÓº‹Ó0 0€V€T”A‚S~‚A€ƒƒ€‚ÿvirtual HDCgetCurrentDC()[Win32 only]b6_‹ÓŒÓ, (€l€”‘€‚A€€‚ÿGet the current device context for wglMakeCurrent.1 º‹ÓMŒÓ& €€‚A€‚ÿSEE ALSOCŒÓŒÓ2 4€"€”‘€‚AãrPnÀ€‰€ ‚ÿSoWinViewerDMŒÓÔŒÓ1¸ ƒ:…ƒ(ÔŒÓÓÉÓSoWinAnaglyphStereo;ŒÓÓ% €,€ˆˆ€‚ÿSoWinAnaglyphStereo*ÔŒÓ9Ó# €€€‚ÿNAMEd;ÓÓ) "€v€”‘€€€ ‚ÿSoWinAnaglyphStereo - class for anaglyph stereo support39ÓÐÓ# € €€‚ÿINHERITS FROMf1Ó6ŽÓ5 :€b€”‘€ã?/}¦€‰€€€ ‚ÿSoWinStereoViewType > SoWinAnaglyphStereo. ÐÓdŽÓ# €€€‚ÿSYNOPSISd86ŽÓÈŽÓ, (€p€”‘€‚9€€ ‚ÿ#include ©ydŽÓqÓ0 0€ò€T”A‚S~‚A€ƒ‚ÿenum ColorFilter{SoWinAnaglyphStereo::RED_CYANSoWinAnaglyphStereo::GREEN_MAGENTASoWinAnaglyphStereo::BLUE_YELLOW}S*ÈŽÓÄÓ) "€T€”‘€‚A€‚ÿMethods from class SoWinAnaglyphStereo:ð‘qÓÀÁÓ_ Œ€#€T”A‚S~‚A€ƒãŽÛa‰‚ƒ‚ƒã‘¶p6‰‚ÄÓÀÁÓŒÓ㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSoWinAnaglyphStereo(SoWinStereoViewer * stereoViewer = NULL)~SoWinAnaglyphStereo()virtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()virtual voidrenderStereoView()virtual SbBoolcanClearBeforeRender()SbBoolrequireHardware()StereoViewTypegetStereoViewType()voidsetColorFilter(ColorFilter filter)ColorFiltergetColorFilter()voidclearStereo()4ÄÓôÁÓ& €€‚A€‚ÿDESCRIPTIONÚ­ÀÁÓÎÂÓ- (€[€”‘€‚A€€ ‚ÿThere are three kinds of filters. You can reverse the left and rights views, making three new kinds of filters (CYAN_RED, etc.). The Alpha channel is used in both views.0 ôÁÓþÂÓ& €€‚A€‚ÿMETHODS–\ÎÂÓ”ÃÓ: D€¸€T”A‚S~‚A€ƒãŽÛa‰€‚€ƒ‚ÿSoWinAnaglyphStereo(SoWinStereoViewer * stereoViewer = NULL)~SoWinAnaglyphStereo()GþÂÓÛÃÓ) "€<€”‘€‚A€‚ÿConstructor and destructor.•[”ÃÓpÄÓ: D€¶€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvirtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()I ÛÃÓ¹ÄÓ) "€@€”‘€‚A€‚ÿSets/queries stereo reversal.N"pÄÓÅÓ, (€D€T”A‚S~‚A€ƒ‚ÿvirtual voidrenderStereoView()D¹ÄÓKÅÓ) "€6€”‘€‚A€‚ÿRenders the stereo view.\*ÅÓ§ÅÓ2 4€T€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolcanClearBeforeRender()V-KÅÓýÅÓ) "€Z€”‘€‚A€‚ÿQueries ability to clear before rendering.O§ÅÓLÆÓ2 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolrequireHardware()AýÅÓÆÓ) "€0€”‘€‚A€‚ÿAlways returns FALSE.Q%LÆÓÞÆÓ, (€J€T”A‚S~‚A€ƒ‚ÿStereoViewTypegetStereoViewType()K"ÆÓ)ÇÓ) "€D€”‘€‚A€‚ÿAlways returns ANAGLYPH_STEREO.uGÞÆÓžÇÓ. ,€Ž€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetColorFilter(ColorFilter filter)ColorFiltergetColorFilter()I )ÇÓçÇÓ) "€@€”‘€‚A€‚ÿSets/queries the filter type.AžÇÓ(ÈÓ, (€*€T”A‚S~‚A€ƒ‚ÿvoidclearStereo():çÇÓbÈÓ) "€"€”‘€‚A€‚ÿClears stereo.1 (ÈÓ“ÈÓ& €€‚A€‚ÿSEE ALSO‹AbÈÓÉÓJ d€‚€”‘€‚AãŽÛa€‰€€ã?/}¦‰€€ãrPnÀ‰€ ‚ÿSoWinStereoViewer, SoWinStereoViewType, SoWinViewerF“ÈÓdÉÓ1Ö Z Œ¨)dÉÓ¡ÉÓÔSoWinHalfScreenStereo=ÉÓ¡ÉÓ% €0€ˆˆ€‚ÿSoWinHalfScreenStereo*dÉÓËÉÓ# €€€‚ÿNAMEi@¡ÉÓ4ÊÓ) "€€€”‘€€€ ‚ÿSoWinHalfScreenStereo - class for half-screen stereo support3ËÉÓgÊÓ# € €€‚ÿINHERITS FROMh34ÊÓÏÊÓ5 :€f€”‘€ã?/}¦€‰€€€ ‚ÿSoWinStereoViewType > SoWinHalfScreenStereo. gÊÓýÊÓ# €€€‚ÿSYNOPSISf:ÏÊÓcËÓ, (€t€”‘€‚9€€ ‚ÿ#include ܪýÊÓ?ÌÓ2 2€U€T”A‚S~‚A€ƒ‚ÿenum HalfScreenMode{SoWinHalfScreenStereo::OVERUNDER_FILLSoWinHalfScreenStereo::OVERUNDERSoWinHalfScreenStereo::SIDEBYSIDE_FILLSoWinHalfScreenStereo::SIDEBYSIDE}U,cËÓ”ÌÓ) "€X€”‘€‚A€‚ÿMethods from class SoWinHalfScreenStereo:þŸ?ÌÓ’ÎÓ_ Œ€?€T”A‚S~‚A€ƒãŽÛa‰‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ÿSoWinHalfScreenStereo(SoWinStereoViewer * stereoViewer = NULL)~SoWinHalfScreenStereo()virtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()voidsetHalfScreenMode(HalfScreenMode mode)HalfScreenModegetHalfScreenMode()virtual voidrenderStereoView()virtual SbBoolcanClearBeforeRender()SbBoolrequireHardware()StereoViewTypegetStereoViewType()voidclearStereo()4”ÌÓÆÎÓ& €€‚A€‚ÿDESCRIPTIONß²’ÎÓ¥ÏÓ- (€e€”‘€‚A€€ ‚ÿThis class implements the half-screen stereo type. The display area is divided into two parts, one for displaying the left eye view and one for displaying the right eye view.0 ÆÎÓÕÏÓ& €€‚A€‚ÿMETHODSš`¥ÏÓ{Ô: D€À€T”A‚S~‚A€ƒãÕÏÓ{ÔÉÓŽÛa‰€‚€ƒ‚ÿSoWinHalfScreenStereo(SoWinStereoViewer * stereoViewer = NULL)~SoWinHalfScreenStereo()GÕÏÓÂÔ) "€<€”‘€‚A€‚ÿConstructor and destructor.•[{ÔWÔ: D€¶€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvirtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()I ÂÔ Ô) "€@€”‘€‚A€‚ÿSets/queries stereo reversal.QWÔÔ. ,€¢€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetHalfScreenMode(HalfScreenMode mode)HalfScreenModegetHalfScreenMode()J! ÔiÔ) "€B€”‘€‚A€‚ÿSets/queries half-screen mode.N"Ô·Ô, (€D€T”A‚S~‚A€ƒ‚ÿvirtual voidrenderStereoView()DiÔûÔ) "€6€”‘€‚A€‚ÿRenders the stereo view.\*·ÔWÔ2 4€T€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolcanClearBeforeRender()V-ûÔ­Ô) "€Z€”‘€‚A€‚ÿQueries ability to clear before rendering.OWÔüÔ2 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolrequireHardware()A­Ô=Ô) "€0€”‘€‚A€‚ÿAlways returns FALSE.Q%üÔŽÔ, (€J€T”A‚S~‚A€ƒ‚ÿStereoViewTypegetStereoViewType()N%=ÔÜÔ) "€J€”‘€‚A€‚ÿAlways returns HALF_SCREEN_STEREO.AŽÔÔ, (€*€T”A‚S~‚A€ƒ‚ÿvoidclearStereo():ÜÔWÔ) "€"€”‘€‚A€‚ÿClears stereo.1 ÔˆÔ& €€‚A€‚ÿSEE ALSO‹AWÔÔJ d€‚€”‘€‚AãŽÛa€‰€€ã?/}¦‰€€ãrPnÀ‰€ ‚ÿSoWinStereoViewer, SoWinStereoViewType, SoWinViewerFˆÔYÔ1&£ƒ§t *YÔ–ÔVHÔSoWinInterlacedStereo=Ô–Ô% €0€ˆˆ€‚ÿSoWinInterlacedStereo*YÔÀÔ# €€€‚ÿNAMEh?–Ô(Ô) "€~€”‘€€€ ‚ÿSoWinInterlacedStereo - class for interlaced stereo support3ÀÔ[Ô# € €€‚ÿINHERITS FROMh3(ÔÃÔ5 :€f€”‘€ã?/}¦€‰€€€ ‚ÿSoWinStereoViewType > SoWinInterlacedStereo. [ÔñÔ# €€€‚ÿSYNOPSISf:ÃÔWÔ, (€t€”‘€‚9€€ ‚ÿ#include ‹\ñÔâÔ/ .€¸€T”A‚S~‚A€ƒ‚ÿenum InterlacedMode{SoWinInterlacedStereo::HORIZONTALSoWinInterlacedStereo::VERTICAL}U,WÔ7 Ô) "€X€”‘€‚A€‚ÿMethods from class SoWinInterlacedStereo:%ºâÔ\ Ôk ¤€u€T”A‚S~‚A€ƒãŽÛa‰‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ÿSoWinInterlacedStereo(SoWinStereoViewer * stereoViewer = NULL)~ SoWinInterlacedStereo()virtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()voidsetInterlacedMode(InterlacedMode mode)InterlacedModegetInterlacedMode()voidsetScreenInterlacing(SbBool screen)SbBoolisScreenInterlacing()voidsetFastInterlacing(SbBool fast=TRUE)SbBoolisFastInterlacing()virtual voidrenderStereoView()¹{7 Ô Ô> L€ö€T”A‚S~‚A€㑶p6‰ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ÿvirtual SbBoolcanClearBeforeRender()SbBoolrequireHardware()StereoViewTypegetStereoViewType()voidclearStereo()4\ ÔI Ô& €€‚A€‚ÿDESCRIPTIONB Ô‹ Ô- (€+€”‘€‚A€€ ‚ÿThis class implements the interlaced stereo type. Using the interlaced mode, the stereo effect is achieved using special devices (projectors,...) that translate an interlaced image into a stereoscopic view. Alternating scan lines display images for the left and right eyes.?I ÔÊÔ* "€+€”‘€‚A€‚ÿThe interlaced mode can work in two modes: fast or best. This is simply a matter of quality. Due to the interlacing, lines close to horizontal can appear as dotted lines. In best mode, those parts of the model are drawn as if they were thicker. By default, the mode is fast.0 ‹ ÔúÔ& €€‚A€‚ÿMETHODS›aÊÔ•Ô: D€Â€T”A‚S~‚A€ƒãŽÛa‰€‚€ƒ‚ÿSoWinInterlacedStereo(SoWinStereoViewer * stereoViewer = NULL)~ SoWinInterlacedStereo()GúÔÜÔ) "€<€”‘€‚A€‚ÿConstructor and destructor.•[•Ô}@Ô: D€¶€T”A‚S~‚ÜÔ}@ÔÔA€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvirtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()I ÜÔÆ@Ô) "€@€”‘€‚A€‚ÿSets/queries stereo reversal.Q}@ÔEAÔ. ,€¢€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetInterlacedMode(InterlacedMode mode)InterlacedModegetInterlacedMode()I Æ@ÔŽAÔ) "€@€”‘€‚A€‚ÿSets/queries interlaced mode.†LEAÔBÔ: D€˜€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetScreenInterlacing(SbBool screen)SbBoolisScreenInterlacing()*ŽAÔ>CÔ* "€€”‘€‚A€‚ÿIf screen is TRUE (default), the line interlacing is done according to the screen (if the window is moving, the first line might be either an even or an odd line). Otherwise, do the interlacing according to the window itself (first line is always even).…KBÔÃCÔ: D€–€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetFastInterlacing(SbBool fast=TRUE)SbBoolisFastInterlacing()O&>CÔDÔ) "€L€”‘€‚A€‚ÿSets/queries fast interlacing mode.N"ÃCÔ`DÔ, (€D€T”A‚S~‚A€ƒ‚ÿvirtual voidrenderStereoView()DDÔ¤DÔ) "€6€”‘€‚A€‚ÿRenders the stereo view.\*`DÔEÔ2 4€T€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolcanClearBeforeRender()V-¤DÔVEÔ) "€Z€”‘€‚A€‚ÿQueries ability to clear before rendering.OEÔ¥EÔ2 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolrequireHardware()ܲVEÔFÔ* "€e€”‘€‚A€‚ÿAlways returns FALSE. (Although special hardware may be required, this flag only indicates if a special graphics board is required. It's not, hence the return value of FALSE.)Q%¥EÔÒFÔ, (€J€T”A‚S~‚A€ƒ‚ÿStereoViewTypegetStereoViewType()M$FÔGÔ) "€H€”‘€‚A€‚ÿAlways returns INTERLACED_STEREO.AÒFÔ`GÔ, (€*€T”A‚S~‚A€ƒ‚ÿvoidclearStereo():GÔšGÔ) "€"€”‘€‚A€‚ÿClears stereo.1 `GÔËGÔ& €€‚A€‚ÿSEE ALSO‹AšGÔVHÔJ d€‚€”‘€‚AãŽÛa€‰€€ã?/}¦‰€€ãrPnÀ‰€ ‚ÿSoWinStereoViewer, SoWinStereoViewType, SoWinViewerBËGÔ˜HÔ1ª + Ž„Ž+˜HÔÑHÔʃÔSoWinNoStereoView9VHÔÑHÔ% €(€ˆˆ€‚ÿSoWinNoStereoView*˜HÔûHÔ# €€€‚ÿNAMEƒZÑHÔ~IÔ) "€´€”‘€€€ ‚ÿSoWinNoStereoView - makes a stereo viewer behave like a monoscopic (non-stereo) viewer3ûHÔ±IÔ# € €€‚ÿINHERITS FROMd/~IÔJÔ5 :€^€”‘€ã?/}¦€‰€€€ ‚ÿSoWinStereoViewType > SoWinNoStereoView. ±IÔCJÔ# €€€‚ÿSYNOPSISb6JÔ¥JÔ, (€l€”‘€‚9€€ ‚ÿ#include Q(CJÔöJÔ) "€P€”‘€‚9€‚ÿMethods from class SoWinNoStereoView:£H¥JÔ™LÔ[ „€‘€T”A‚S~‚A€ƒãŽÛa‰‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ÿSoWinNoStereoView(SoWinStereoViewer * stereoViewer = NULL)~SoWinNoStereoView()virtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()virtual voidrenderStereoView()virtual SbBoolcanClearBeforeRender()SbBoolrequireHardware()StereoViewTypegetStereoViewType()voidclearStereo()4öJÔÍLÔ& €€‚A€‚ÿDESCRIPTION¹‰™LÔ†MÔ0 .€€”‘€‚A€€€ ‚ÿSoWinNoStereoView makes a stereo viewer behave as if it were a monoscopic viewer. Modifying the stereo view technique has no effect.0 ÍLÔ¶MÔ& €€‚A€‚ÿMETHODS’X†MÔHNÔ: D€°€T”A‚S~‚A€ƒãŽÛa‰€‚€ƒ‚ÿSoWinNoStereoView(SoWinStereoViewer * stereoViewer = NULL)~SoWinNoStereoView()G¶MÔNÔ) "€<€”‘€‚A€‚ÿConstructor and destructor.•[HNÔ$OÔ: D€¶€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvirtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()oCNÔ“OÔ, (€†€”‘€‚A€€‚ÿreverseStereoView does nothing. The query always returns FALSE.N"$OÔáOÔ, (€D€T”A‚S~‚A€ƒ‚ÿvirtual voidrenderStereoView()ÛŸ“OÔÈ€Ô< F€?€áOÔÈ€ÔVHÔ”‘€‚A€€€ãŽÛa€‰€‚ÿRenders the stereo view. It calls the actualRendering method of the SoWinStereoViewer only once, without modifying any parameters, such as the camera.\*áOÔ$Ô2 4€T€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolcanClearBeforeRender()@È€ÔdÔ) "€.€”‘€‚A€‚ÿAlways returns TRUE.O$Ô³Ô2 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolrequireHardware()AdÔôÔ) "€0€”‘€‚A€‚ÿAlways returns FALSE.Q%³ÔE‚Ô, (€J€T”A‚S~‚A€ƒ‚ÿStereoViewTypegetStereoViewType()J!ôÔ‚Ô) "€B€”‘€‚A€‚ÿAlways returns NO_STEREO_VIEW.AE‚ÔЂÔ, (€*€T”A‚S~‚A€ƒ‚ÿvoidclearStereo()>‚ÔƒÔ) "€*€”‘€‚A€‚ÿThis does nothing.1 ЂÔ?ƒÔ& €€‚A€‚ÿSEE ALSO‹AƒÔʃÔJ d€‚€”‘€‚AãŽÛa€‰€€ã?/}¦‰€€ãrPnÀ‰€ ‚ÿSoWinStereoViewer, SoWinStereoViewType, SoWinViewer??ƒÔ „Ô1 „Ž_, „Ô?„Ô)ŽÔSoWinRawStereo6ʃÔ?„Ô% €"€ˆˆ€‚ÿSoWinRawStereo* „Ôi„Ô# €€€‚ÿNAME]4?„ÔÆ„Ô) "€h€”‘€€€ ‚ÿSoWinRawStereo - class for OpenGL stereo support3i„Ôù„Ô# € €€‚ÿINHERITS FROMa,Æ„ÔZ…Ô5 :€X€”‘€ã?/}¦€‰€€€ ‚ÿSoWinStereoViewType > SoWinRawStereo. ù„Ôˆ…Ô# €€€‚ÿSYNOPSIS_3Z…Ôç…Ô, (€f€”‘€‚9€€ ‚ÿ#include N%ˆ…Ô5†Ô) "€J€”‘€‚9€‚ÿMethods from class SoWinRawStereo:Bç…ÔÒ‡Ô[ „€…€T”A‚S~‚A€ƒãŽÛa‰‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ÿSoWinRawStereo(SoWinStereoViewer * stereoViewer = NULL)~SoWinRawStereo()virtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()virtual voidrenderStereoView()virtual SbBoolcanClearBeforeRender()SbBoolrequireHardware()StereoViewTypegetStereoViewType()voidclearStereo()45†ÔˆÔ& €€‚A€‚ÿDESCRIPTION tÒ‡Ô¦ˆÔ, (€è€”‘€‚A€€ ‚ÿThis class implements the OpenGL "quad buffered" stereo type. This requires a stereo accelerated graphics board.0 ˆÔÖˆÔ& €€‚A€‚ÿMETHODSŒR¦ˆÔb‰Ô: D€¤€T”A‚S~‚A€ƒãŽÛa‰€‚€ƒ‚ÿSoWinRawStereo(SoWinStereoViewer * stereoViewer = NULL)~SoWinRawStereo()GÖˆÔ©‰Ô) "€<€”‘€‚A€‚ÿConstructor and destructor.•[b‰Ô>ŠÔ: D€¶€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvirtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()I ©‰Ô‡ŠÔ) "€@€”‘€‚A€‚ÿSets/queries stereo reversal.N">ŠÔÕŠÔ, (€D€T”A‚S~‚A€ƒ‚ÿvirtual voidrenderStereoView()D‡ŠÔ‹Ô) "€6€”‘€‚A€‚ÿRenders the stereo view.\*ÕŠÔu‹Ô2 4€T€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolcanClearBeforeRender()V-‹ÔË‹Ô) "€Z€”‘€‚A€‚ÿQueries ability to clear before rendering.Ou‹ÔŒÔ2 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolrequireHardware()AË‹Ô[ŒÔ) "€0€”‘€‚A€‚ÿAlways returns TRUE. Q%ŒÔ¬ŒÔ, (€J€T”A‚S~‚A€ƒ‚ÿStereoViewTypegetStereoViewType()F[ŒÔòŒÔ) "€:€”‘€‚A€‚ÿAlways returns RAW_STEREO.A¬ŒÔ3Ô, (€*€T”A‚S~‚A€ƒ‚ÿvoidclearStereo():òŒÔmÔ) "€"€”‘€‚A€‚ÿClears stereo.1 3ÔžÔ& €€‚A€‚ÿSEE ALSO‹AmÔ)ŽÔJ d€‚€”‘€‚AãŽÛa€‰€€ã?/}¦‰€€ãrPnÀ‰€ ‚ÿSoWinStereoViewer, SoWinStereoViewType, SoWinViewer@žÔiŽÔ1Ë œ’õ…©-iŽÔ ŽÔDÊÔSoWinSSDIStereo7)ŽÔ ŽÔ% €$€ˆˆ€‚ÿSoWinSSDIStereo*iŽÔÊŽÔ# €€€‚ÿNAME\3 ŽÔ&Ô) "€f€”‘€€€ ‚ÿSoWinSSDIStereo - class for SSDI stereo support3ÊŽÔYÔ# € €€‚ÿINHERITS FROMb-&Ô»Ô5 :€Z€”‘€ã?/}¦€‰€€€ ‚ÿSoWinStereoViewType > SoWinSSDIStereo. YÔ ÀÔ# €€€‚ÿSYNOPSIS»Ô ÀÔ)ŽÔ`4»ÔlÀÔ, (€h€”‘€‚9€€ ‚ÿ#include O& ÀÔ»ÀÔ) "€L€”‘€‚9€‚ÿMethods from class SoWinSSDIStereo:ŸDlÀÔZÂÔ[ „€‰€T”A‚S~‚A€ƒãŽÛa‰‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ÿSoWinSSDIStereo(SoWinStereoViewer * stereoViewer = NULL)~SoWinSSDIStereo()virtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()virtual voidrenderStereoView()virtual SbBoolcanClearBeforeRender()SbBoolrequireHardware()StereoViewTypegetStereoViewType()voidclearStereo()4»ÀÔŽÂÔ& €€‚A€‚ÿDESCRIPTIONl=ZÂÔúÂÔ/ .€z€”‘€‚A€€€ ‚ÿThis class implements the SSDI stereo type. [Win32 only]ÖŽÂÔ½ÄÔ- (€-€”‘€‚A€€‚ÿThis type of stereo relies on the SSDI library. This library, which is provided by VRex Systems (http://www.vrex.com), is capable of supporting a large variety of stereo systems (shutter glasses, polarized projectors, etc.). Once the library is installed on the system, choose which driver the library will make use of (according to the hardware connected to your system), and activate the SSDI stereo.0 úÂÔíÄÔ& €€‚A€‚ÿMETHODSŽT½ÄÔ{ÅÔ: D€¨€T”A‚S~‚A€ƒãŽÛa‰€‚€ƒ‚ÿSoWinSSDIStereo(SoWinStereoViewer * stereoViewer = NULL)~SoWinSSDIStereo()GíÄÔÂÅÔ) "€<€”‘€‚A€‚ÿConstructor and destructor.•[{ÅÔWÆÔ: D€¶€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvirtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()I ÂÅÔ ÆÔ) "€@€”‘€‚A€‚ÿSets/queries stereo reversal.N"WÆÔîÆÔ, (€D€T”A‚S~‚A€ƒ‚ÿvirtual voidrenderStereoView()D ÆÔ2ÇÔ) "€6€”‘€‚A€‚ÿRenders the stereo view.\*îÆÔŽÇÔ2 4€T€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolcanClearBeforeRender()V-2ÇÔäÇÔ) "€Z€”‘€‚A€‚ÿQueries ability to clear before rendering.OŽÇÔ3ÈÔ2 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolrequireHardware()BäÇÔuÈÔ) "€2€”‘€‚A€‚ÿAlways returns FALSE. Q%3ÈÔÆÈÔ, (€J€T”A‚S~‚A€ƒ‚ÿStereoViewTypegetStereoViewType()GuÈÔ ÉÔ) "€<€”‘€‚A€‚ÿAlways returns SSDI_STEREO.AÆÈÔNÉÔ, (€*€T”A‚S~‚A€ƒ‚ÿvoidclearStereo(): ÉÔˆÉÔ) "€"€”‘€‚A€‚ÿClears stereo.1 NÉÔ¹ÉÔ& €€‚A€‚ÿSEE ALSO‹AˆÉÔDÊÔJ d€‚€”‘€‚AãŽÛa€‰€€ã?/}¦‰€€ãrPnÀ‰€ ‚ÿSoWinStereoViewer, SoWinStereoViewType, SoWinViewerB¹ÉÔ†ÊÔ1ËS©5„¦.†ÊÔ¿ÊÔxÕSoWinStereoDialog9DÊÔ¿ÊÔ% €(€ˆˆ€‚ÿSoWinStereoDialog*†ÊÔéÊÔ# €€€‚ÿNAMEV¿ÊÔhËÔ) "€¬€”‘€€€ ‚ÿSoWinStereoDialog - component that lets you modify stereo attributes interactively3éÊÔ›ËÔ# € €€‚ÿINHERITS FROM_*hËÔúËÔ5 :€T€”‘€ã¹Ä L€‰€€€ ‚ÿSoWinComponent > SoWinStereoDialog. ›ËÔ(ÌÔ# €€€‚ÿSYNOPSIS_3úËÔ‡ÌÔ, (€f€”‘€‚9€€ ‚ÿ#include Q((ÌÔØÌÔ) "€P€”‘€‚9€‚ÿMethods from class SoWinStereoDialog:ø¸‡ÌÔÐÍÔ@ N€q€T”A‚S~‚A€ƒãŽÛa‰ã‘¶p6‰‚ƒ‚ƒ‚ÿSoWinStereoDialog(Widget parent = NULL,SoWinStereoViewer * viewer = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoWinStereoDialog()virtual voidupdate()4ØÌÔÎÔ& €€‚A€‚ÿDESCRIPTIONƒWÐÍÔ‡ÎÔ, (€®€”‘€‚A€€ ‚ÿThis component displays a dialog box for modifying stereo attributes interactively.0 ÎÔ·ÎÔ& €€‚A€‚ÿMETHODS複ÎÔŸÏÔD V€I€T”A‚S~‚A€ƒãŽÛa‰ã‘¶p6‰€‚€ƒ‚ÿSoWinStereoDialog(Widget parent = NULL,SoWinStereoViewer * viewer = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoWinStereoDialog()G·ÎÔ Õ) "€<€”‘€‚A€‚ÿConstructor and destructor.ŸÏÔ ÕDÊÔDŸÏÔPÕ, (€0€T”A‚S~‚A€ƒ‚ÿvirtual voidupdate()lC Õ¼Õ) "€†€”‘€‚A€‚ÿNotify the stereo dialog that the viewer state may have changed.1 PÕíÕ& €€‚A€‚ÿSEE ALSO‹A¼ÕxÕJ d€‚€”‘€‚AãŽÛa€‰€€ã?/}¦‰€€ãrPnÀ‰€ ‚ÿSoWinStereoViewer, SoWinStereoViewType, SoWinViewerDíÕ¼Õ1¨5„¦t£/¼Õ÷ÕvBÕSoWinStereoViewType;xÕ÷Õ% €,€ˆˆ€‚ÿSoWinStereoViewType*¼Õ!Õ# €€€‚ÿNAME^5÷ÕÕ) "€j€”‘€€€ ‚ÿSoWinStereoViewType - class for stereo management3!Õ²Õ# € €€‚ÿINHERITS FROM@ÕòÕ) "€.€”‘€€€ ‚ÿSoWinStereoViewType2 ²Õ$Õ& €€€€ ‚ÿSYNOPSISd8òÕˆÕ, (€p€”‘€‚9€€ ‚ÿ#include Gã$ÕÏÕd –€Ç€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum StereoViewType{SoWinStereoViewType::NO_STEREO_VIEWMonoscopic viewingSoWinStereoViewType::INTERLACED_STEREOTwo views interlaced in a single imageSoWinStereoViewType::HALF_SCREEN_STEREOEach view displayed in a half screenSoWinStereoViewType::RAW_STEREOTwo views superimposed on a single imageSoWinStereoViewType::ANAGLYPH_STEREOEach view is displayed through a color filterSoWinStereoViewType::SSDI_STEREOUses the SSDI library to set the stereo}S*ˆÕ"Õ) "€T€”‘€‚A€‚ÿMethods from class SoWinStereoViewType:¥ÏÕ0Õi  €K€T”A‚S~‚A€ƒãŽÛa‰‚ƒ‚ƒãŽÛa‰‚ãŽÛa‰ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿSoWinStereoViewType(SoWinStereoViewer * stereoViewer=NULL)~SoWinStereoViewType()voidsetStereoViewer(SoWinStereoViewer *viewer=NULL)SoWinStereoViewer*getStereoViewer()virtual StereoViewTypegetStereoViewType()virtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()virtual voidrenderStereoView()virtual SbBoolcanClearBeforeRender()virtual SbBoolrequireHardware()I"ÕyÕ, (€:€T”A‚S~‚A€ƒ‚ÿvirtual voidclearStereo()40Õ­Õ& €€‚A€‚ÿDESCRIPTIONߦyÕŒ Õ9 @€M€”‘€‚A€€€€€€ ‚ÿThis class defines a strategy of stereo management. Using a subclass of SoWinStereoViewType allows an SoWinViewer object to use a stereoscopic rendering mode.0 ­Õ¼ Õ& €€‚A€‚ÿMETHODS”ZŒ ÕP Õ: D€´€T”A‚S~‚A€ƒãŽÛa‰€‚€ƒ‚ÿSoWinStereoViewType(SoWinStereoViewer * stereoViewer=NULL)~SoWinStereoViewType()qB¼ ÕÁ Õ/ .€„€”‘€‚A€€€‚ÿConstructor and destructor. The destructor calls clearStereo.š`P Õ[ Õ: D€À€T”A‚S~‚A€ƒãŽÛa‰‚ãŽÛa‰ƒ‚ÿvoidsetStereoViewer(SoWinStereoViewer *viewer=NULL)SoWinStereoViewer*getStereoViewer()K"Á Õ¦ Õ) "€D€”‘€‚A€‚ÿSets/queries the stereo viewer.Y-[ Õÿ Õ, (€Z€T”A‚S~‚A€ƒ‚ÿvirtual StereoViewTypegetStereoViewType()I ¦ ÕH Õ) "€@€”‘€‚A€‚ÿQueries the stereo view type.•[ÿ ÕÝ Õ: D€¶€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvirtual voidreverseStereoView(SbBool reverse)virtual SbBoolisStereoViewReversed()™pH Õv Õ) "€à€”‘€‚A€‚ÿSets/queries stereo reversal. The left view becomes the right view, and the right view becomes the left view.N"Ý ÕÄ Õ, (€D€T”A‚S~‚A€ƒ‚ÿvirtual voidrenderStereoView()¥vv ÕiÕ/ .€ì€”‘€‚A€€€‚ÿRenders the stereo view. You can use the SoWinNoStereoView subclass to render the view without any stereo effect.\*Ä ÕÅÕ2 4€T€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolcanClearBeforeRender()zJiÕK@Õ0 .€•€”‘€‚A€€€‚ÿQueries ability to clear before rendering. This allows a subclass to forbid the color buffer from being cleared before any rendering. Typically, this takes place after rendering the first view. Then, if canClearBeforeRender returns FALSE, the color buffer can keepÅÕK@ÕxÕ previous modifications, such as for the stencil buffer, etc.W%ÅÕ¢@Õ2 4€J€T”A‚S~‚A€㑶p6‰ƒ‚ÿvirtual SbBoolrequireHardware()lCK@ÕAÕ) "€†€”‘€‚A€‚ÿReturns true or false depending on the type of stereo buffering.I¢@ÕWAÕ, (€:€T”A‚S~‚A€ƒ‚ÿvirtual voidclearStereo()ˆ_AÕßAÕ) "€¾€”‘€‚A€‚ÿA stereo view type may need to restore a state when it is no longer used by a stereo viewer.1 WAÕBÕ& €€‚A€‚ÿSEE ALSOf(ßAÕvBÕ> L€P€”‘€‚AãŽÛa€‰€€ãrPnÀ‰€ ‚ÿSoWinStereoViewer, SoWinViewer8BÕ®BÕ1ª*³+0®BÕÝBÕb‹ÕSbVec2d/ vBÕÝBÕ% €€ˆˆ€‚ÿSbVec2d*®BÕCÕ# €€€‚ÿNAMEU/ÝBÕ\CÕ& €^€”‘€€‚ÿSbVec2d - 2D vector class (double precision)3CÕCÕ# € €€‚ÿINHERITS FROM4 \CÕÃCÕ) "€€”‘€€€‚ÿSbVec2d2 CÕõCÕ& €€€€ ‚ÿSYNOPSISd=ÃCÕYDÕ' €z€”‘€€‚‚ÿ#include Methods from class SbVec2d:¥õCÕqFÕs ´€K€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒã{ƒõ(‰‚㑶p6‰ƒã{ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ã{ƒõ(‰ƒ‚ã{ƒõ(‰ƒ‚ã{ƒõ(‰ƒã}ƒõ(‰‚ÿSbVec2d()SbVec2d(const double v[2])SbVec2d(double x,double y)doubledot(const SbVec2d &v) constSbBoolequals(const SbVec2d v,double tolerance) constconst double *getValue() constvoidgetValue(double &x,double &y) constdoublelength() constvoidnegate()doublenormalize()SbVec2d &setValue(const double v[2])SbVec2d &setValue(double x,double y)SbVec2d &setValue(const SbVec2f &vec2f)"’YDÕ“HÕ î€%€T”A‚S~‚A€ƒ‚ƒ‚ã{ƒõ(‰ƒ‚ã{ƒõ(‰ƒ‚ã{ƒõ(‰ƒã{ƒõ(‰‚ã{ƒõ(‰ƒã{ƒõ(‰‚ã{ƒõ(‰ƒ‚ã{ƒõ(‰ƒã{ƒõ(‰‚ã{ƒõ(‰ƒã{ƒõ(‰‚ã{ƒõ(‰ƒã{ƒõ(‰‚ÿdouble &operator [](int i)const double &operator [](int i)SbVec2d &operator *=(double d)SbVec2d &operator /=(double d)SbVec2d &operator +=(const SbVec2d &u)SbVec2d &operator -=(const SbVec2d &u)SbVec2doperator -() constSbVec2doperator *(const SbVec2d &v,double d)SbVec2doperator *(double d,const SbVec2d &v)SbVec2doperator /(const SbVec2d &v,double d)gôqFÕúIÕs ´€é€T”A‚S~‚Aã{ƒõ(€‰ƒã{ƒõ(‰ã{ƒõ(‰‚ã{ƒõ(‰ƒã{ƒõ(‰ã{ƒõ(‰‚ƒã{ƒõ(‰ã{ƒõ(‰‚ƒã{ƒõ(‰ã{ƒõ(‰‚ÿSbVec2doperator +(const SbVec2d &v1,const SbVec2d &v2)SbVec2doperator -(const SbVec2d &v1,const SbVec2d &v2)intoperator ==(const SbVec2d &v1,const SbVec2d &v2)intoperator !=(const SbVec2d &v1,const SbVec2d &v2)4“HÕ.JÕ& €€‚A€‚ÿDESCRIPTION›qúIÕÉKÕ* "€ã€”‘€‚A€‚ÿ2D vector class used to store 2D vectors and points using double precision values. Although Open Inventor fields still store only single precision values, for certain applications it is useful and convenient to be able to store and manipulate double precision values, for example, double precision coordinate data or values that will be used for further computation.0 .JÕùKÕ& €€‚A€‚ÿMETHODS9 ÉKÕ2LÕ, (€€T”A‚S~‚A€ƒ‚ÿSbVec2d()@ùKÕrLÕ) "€.€”‘€‚A€‚ÿDefault constructor.j;2LÕÜLÕ/ .€v€T”A‚S~‚A€ƒ‚ƒ‚ÿSbVec2d(const double v[2])SbVec2d(double x,double y)P'rLÕ,MÕ) "€N€”‘€‚A€‚ÿConstructor given vector components.Y'ÜLÕ…MÕ2 4€N€T”A‚S~‚A€ƒã{ƒõ(‰‚ÿdoubledot(const SbVec2d &v) conste<,MÕêMÕ) "€x€”‘€‚A€‚ÿReturns dot (inner) product of vector and another vector.v=…MÕ`NÕ9 B€z€T”A‚S~‚A㑶p6€‰ƒã{ƒõ(‰‚ÿSbBoolequals(const SbVec2d v,double tolerance) const¢yêMÕOÕ) "€ò€”‘€‚A€‚ÿEquality comparison within given tolerance - the square of the length of the maximum distance between the two vectors.{L`NÕ}OÕ/ .€˜€T”A‚S~‚A€ƒ‚ƒ‚ÿconst double *getValue() constvoidgetValue(double &x,double &y) constFOÕÃOÕ) "€:€”‘€‚A€‚ÿReturns vector components.D}OÕ€Õ, (€0€T”A‚S~‚A€ƒ‚ÿdoublelength() ÃOÕ€ÕvBÕconstO&ÃOÕb€Õ) "€L€”‘€‚A€‚ÿReturns geometric length of vector.<€Õž€Õ, (€ €T”A‚S~‚A€ƒ‚ÿvoidnegate()V-b€Õô€Õ) "€Z€”‘€‚A€‚ÿNegates each component of vector in place.Až€Õ5Õ, (€*€T”A‚S~‚A€ƒ‚ÿdoublenormalize()M$ô€Õ‚Õ) "€H€”‘€‚A€‚ÿChanges vector to be unit length.ŽS5Õ‚Õ; F€¦€T”A‚S~‚Aã{ƒõ(€‰ƒ‚ã{ƒõ(‰ƒ‚ÿSbVec2d &setValue(const double v[2])SbVec2d &setValue(double x,double y)G‚ÕW‚Õ) "€<€”‘€‚A€‚ÿSets the vector components.g/‚Õ¾‚Õ8 @€^€T”A‚S~‚Aã{ƒõ(€‰ƒã}ƒõ(‰‚ÿSbVec2d &setValue(const SbVec2f &vec2f)`7W‚ÕƒÕ) "€n€”‘€‚A€‚ÿSets value of vector from a single precision vector.n@¾‚ÕŒƒÕ. ,€€€T”A‚S~‚A€ƒ‚ƒ‚ÿdouble &operator [](int i)const double &operator [](int i)Q(ƒÕ݃Õ) "€P€”‘€‚A€‚ÿAccesses indexed component of vector.€FŒƒÕ]„Õ: D€Œ€T”A‚S~‚Aã{ƒõ(€‰ƒ‚ã{ƒõ(‰ƒ‚ÿSbVec2d &operator *=(double d)SbVec2d &operator /=(double d)h?݃ÕÅ„Õ) "€~€”‘€‚A€‚ÿComponent-wise scalar multiplication and division operators. Z]„Õe…ÕF \€´€T”A‚S~‚Aã{ƒõ(€‰ƒã{ƒõ(‰‚ã{ƒõ(‰ƒã{ƒõ(‰‚ÿSbVec2d &operator +=(const SbVec2d &u)SbVec2d &operator -=(const SbVec2d &u)e<Å„ÕÊ…Õ) "€x€”‘€‚A€‚ÿComponent-wise vector addition and subtraction operators.Qe…Õ†Õ2 4€>€T”A‚S~‚Aã{ƒõ(€‰ƒ‚ÿSbVec2doperator -() consta8Ê…Õ|†Õ) "€p€”‘€‚A€‚ÿNondestructive unary negation - returns a new vector.ó›†Õo‡ÕX ~€7€T”A‚S~‚Aã{ƒõ(€‰ƒã{ƒõ(‰‚ã{ƒõ(‰ƒã{ƒõ(‰‚ã{ƒõ(‰ƒã{ƒõ(‰‚ÿSbVec2doperator *(const SbVec2d &v,double d)SbVec2doperator *(double d,const SbVec2d &v)SbVec2doperator /(const SbVec2d &v,double d)oF|†ÕÞ‡Õ) "€Œ€”‘€‚A€‚ÿComponent-wise binary scalar multiplication and division operators.Õ€o‡Õ³ˆÕU x€€T”A‚S~‚Aã{ƒõ(€‰ƒã{ƒõ(‰ã{ƒõ(‰‚ã{ƒõ(‰ƒã{ƒõ(‰ã{ƒõ(‰‚ÿSbVec2doperator +(const SbVec2d &v1,const SbVec2d &v2)SbVec2doperator -(const SbVec2d &v1,const SbVec2d &v2)lCÞ‡Õ‰Õ) "€†€”‘€‚A€‚ÿComponent-wise binary vector addition and subtraction operators.¾v³ˆÕ݉ÕH `€ì€T”A‚S~‚A€ƒã{ƒõ(‰ã{ƒõ(‰‚ƒã{ƒõ(‰ã{ƒõ(‰‚ÿintoperator ==(const SbVec2d &v1,const SbVec2d &v2)intoperator !=(const SbVec2d &v1,const SbVec2d &v2)J!‰Õ'ŠÕ) "€B€”‘€‚A€‚ÿEquality comparison operators.1 ݉ÕXŠÕ& €€‚A€‚ÿSEE ALSO {'ŠÕb‹Õ î€ö€”‘€‚Aã}ƒõ(€‰€€㦃õ(‰€€㨃õ(‰€ãуõ(€‰€ãÓƒõ(€‰€㊃õ(€‰€㵃õ(€‰€ã ‚û€‰€€ãC°×>‰‚ÿSbVec2f, SbVec3d, SbVec3f, SbVec4d, SbVec4f, SbVec2s, SbVec3s, SbRotation, SbRotationd8XŠÕš‹Õ12y,öƒ,1š‹ÕÉ‹Õ© ÖSbVec3d/ b‹ÕÉ‹Õ% €€ˆˆ€‚ÿSbVec3d*š‹Õó‹Õ# €€€‚ÿNAMEU/É‹ÕHŒÕ& €^€”‘€€‚ÿSbVec3d - 3D vector class (double precision)3ó‹Õ{ŒÕ# € €€‚ÿINHERITS FROM4 HŒÕ¯ŒÕ) "€€”‘€€€‚ÿSbVec3d2 {ŒÕáŒÕ& €€€€ ‚ÿSYNOPSISd=¯ŒÕEÕ' €z€”‘€€‚‚ÿ#include Methods from class SbVec3d:œáŒÕ_Õ~ Ê€9€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒã÷Ä'‰ã÷Ä'‰ã÷Ä'‰‚㦃õ(‰ƒã¦ƒõ(‰‚ƒã¦ƒõ(‰‚㑶p6‰ƒã¦ƒõ(‰‚㦃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ÿSbVec3d()SbVec3d(const double v[3])SbVec3d(double x,double y,double z)SbVec3d(SbPlane &p0,SbPlane &p1,SbPlane &p2)SbVec3dcross(const SbVec3d &v) constdoubledot(const SbVec3d &v) constSbBoolequals(const SbVec3d v,double tolerance) constSbVec3dgetClosestAxis() constconst double *getValue() constvoidgetValue(double &x,double &y,double &z) constdoublelength() const$žEÕÁÕ† Ú€=€T”A‚S~‚A€ƒ‚ƒ‚㦃õ(‰ƒ‚㦃õ(‰ƒ‚㦃õ(‰ƒã¦ƒõ(‰ã¦ƒõ(‰ã¦ƒõ(‰ã¦ƒõ(‰‚㦃õ(‰ƒã¨ƒõ(‰‚ƒ‚ƒ‚㦃õ(‰ƒ‚㦃õ(‰ƒ‚ÿvoidnegate()doublenorma_ÕÁÕb‹Õlize()SbVec3d &setValue(const double v[3])SbVec3d &setValue(double x,double y,double z)SbVec3d &setValue(const SbVec3d &barycentric,const SbVec3d &v0,const SbVec3d &v1,const SbVec3d &v2)SbVec3d &setValue(const SbVec3f &vec3)double &operator [](int i)const double &operator [](int i)SbVec3d &operator *=(double d)SbVec3d &operator /=(double d)4Ž_ÕÃÃÕ¦ €T”A‚S~‚A㦃õ(€‰ƒã¦ƒõ(‰‚㦃õ(‰ƒã¦ƒõ(‰‚㦃õ(‰ƒ‚㦃õ(‰ƒã¦ƒõ(‰‚㦃õ(‰ƒã¦ƒõ(‰‚㦃õ(‰ƒã¦ƒõ(‰‚㦃õ(‰ƒã¦ƒõ(‰ã¦ƒõ(‰‚㦃õ(‰ƒã¦ƒõ(‰ã¦ƒõ(‰‚ÿSbVec3d &operator +=(const SbVec3d &u)SbVec3d &operator -=(const SbVec3d &u)SbVec3doperator -() constSbVec3doperator *(const SbVec3d &v,double d)SbVec3doperator *(double d,const SbVec3d &v)SbVec3doperator /(const SbVec3d &v,double d)SbVec3doperator +(const SbVec3d &v1,const SbVec3d &v2)SbVec3doperator -(const SbVec3d &v1,const SbVec3d &v2)¾vÁÕÄÕH `€ì€T”A‚S~‚A€ƒã¦ƒõ(‰ã¦ƒõ(‰‚ƒã¦ƒõ(‰ã¦ƒõ(‰‚ÿintoperator ==(const SbVec3d &v1,const SbVec3d &v2)intoperator !=(const SbVec3d &v1,const SbVec3d &v2)4ÃÃÕµÄÕ& €€‚A€‚ÿDESCRIPTION}SÄÕ2ÆÕ* "€§€”‘€‚A€‚ÿ3D vector class used to store 3D vectors and points. Although Open Inventor fields still store only single precision values, for certain applications it is useful and convenient to be able to store and manipulate double precision values, for example, double precision coordinate data or values that will be used for further computation.0 µÄÕbÆÕ& €€‚A€‚ÿMETHODS9 2ÆÕ›ÆÕ, (€€T”A‚S~‚A€ƒ‚ÿSbVec3d()@bÆÕÛÆÕ) "€.€”‘€‚A€‚ÿDefault constructor.uE›ÆÕPÇÕ0 0€Š€T”A‚S~‚A€ƒ‚ƒ‚ÿSbVec3d(const double v[3])SbVec3d(double x,double y,double z)P'ÛÆÕ ÇÕ) "€N€”‘€‚A€‚ÿConstructor given vector components.x8PÇÕÈÕ@ P€p€T”A‚S~‚A€ƒã÷Ä'‰ã÷Ä'‰ã÷Ä'‰‚ÿSbVec3d(SbPlane &p0,SbPlane &p1,SbPlane &p2)G ÇÕ_ÈÕ) "€<€”‘€‚A€‚ÿConstructor given 3 planes.d,ÈÕÃÈÕ8 @€X€T”A‚S~‚A㦃õ(€‰ƒã¦ƒõ(‰‚ÿSbVec3dcross(const SbVec3d &v) constlC_ÈÕ/ÉÕ) "€†€”‘€‚A€‚ÿReturns right-handed cross product of vector and another vector.Y'ÃÈÕˆÉÕ2 4€N€T”A‚S~‚A€ƒã¦ƒõ(‰‚ÿdoubledot(const SbVec3d &v) conste</ÉÕíÉÕ) "€x€”‘€‚A€‚ÿReturns dot (inner) product of vector and another vector.v=ˆÉÕcÊÕ9 B€z€T”A‚S~‚A㑶p6€‰ƒã¦ƒõ(‰‚ÿSbBoolequals(const SbVec3d v,double tolerance) const¢yíÉÕËÕ) "€ò€”‘€‚A€‚ÿEquality comparison within given tolerance - the square of the length of the maximum distance between the two vectors.U#cÊÕZËÕ2 4€F€T”A‚S~‚A㦃õ(€‰ƒ‚ÿSbVec3dgetClosestAxis() constXËÕÛËÕ) "€°€”‘€‚A€‚ÿReturns principal axis that is closest (based on maximum dot product) to this vector.‡WZËÕbÌÕ0 0€®€T”A‚S~‚A€ƒ‚ƒ‚ÿconst double *getValue() constvoidgetValue(double &x,double &y,double &z) constFÛËÕ¨ÌÕ) "€:€”‘€‚A€‚ÿReturns vector components.DbÌÕìÌÕ, (€0€T”A‚S~‚A€ƒ‚ÿdoublelength() constO&¨ÌÕ;ÍÕ) "€L€”‘€‚A€‚ÿReturns geometric length of vector.<ìÌÕwÍÕ, (€ €T”A‚S~‚A€ƒ‚ÿvoidnegate()V-;ÍÕÍÍÕ) "€Z€”‘€‚A€‚ÿNegates each component of vector in place.AwÍÕÎÕ, (€*€T”A‚S~‚A€ƒ‚ÿdoublenormalize()xOÍÍÕ†ÎÕ) "€ž€”‘€‚A€‚ÿChanges vector to be unit length, returning the length before normalization.™]ÎÕÏÕ< H€º€T”A‚S~‚A㦃õ(€‰ƒ‚㦃õ(‰ƒ‚ÿSbVec3d &setValue(const double v[3])SbVec3d &setValue(double x,double y,double z)G†ÎÕfÏÕ) "€<€”‘€‚A€‚ÿSets the vector components.ÁtÏÕ3ÖM j€è€T”A‚S~‚A㦃õ(€‰ƒã¦ƒõ(‰ã¦ƒõ(‰ã¦ƒõ(‰ã¦ƒõ(‰‚ÿSbVec3d &setValue(const SbVec3d &barycentric,const SbVec3d &v0,consfÏÕ3Öb‹Õt SbVec3d &v1,const SbVec3d &v2)lCfÏÕŸÖ) "€†€”‘€‚A€‚ÿSets value of vector as the weighted average of 3 other vectors.f.3ÖÖ8 @€\€T”A‚S~‚A㦃õ(€‰ƒã¨ƒõ(‰‚ÿSbVec3d &setValue(const SbVec3f &vec3)`7ŸÖeÖ) "€n€”‘€‚A€‚ÿSets value of vector from a single precision vector.n@ÖÓÖ. ,€€€T”A‚S~‚A€ƒ‚ƒ‚ÿdouble &operator [](int i)const double &operator [](int i)Q(eÖ$Ö) "€P€”‘€‚A€‚ÿAccesses indexed component of vector.€FÓÖ¤Ö: D€Œ€T”A‚S~‚A㦃õ(€‰ƒ‚㦃õ(‰ƒ‚ÿSbVec3d &operator *=(double d)SbVec3d &operator /=(double d)h?$Ö Ö) "€~€”‘€‚A€‚ÿComponent-wise scalar multiplication and division operators. Z¤Ö¬ÖF \€´€T”A‚S~‚A㦃õ(€‰ƒã¦ƒõ(‰‚㦃õ(‰ƒã¦ƒõ(‰‚ÿSbVec3d &operator +=(const SbVec3d &u)SbVec3d &operator -=(const SbVec3d &u)e< ÖÖ) "€x€”‘€‚A€‚ÿComponent-wise vector addition and subtraction operators.Q¬ÖbÖ2 4€>€T”A‚S~‚A㦃õ(€‰ƒ‚ÿSbVec3doperator -() consta8ÖÃÖ) "€p€”‘€‚A€‚ÿNondestructive unary negation - returns a new vector.ó›bÖ¶ÖX ~€7€T”A‚S~‚A㦃õ(€‰ƒã¦ƒõ(‰‚㦃õ(‰ƒã¦ƒõ(‰‚㦃õ(‰ƒã¦ƒõ(‰‚ÿSbVec3doperator *(const SbVec3d &v,double d)SbVec3doperator *(double d,const SbVec3d &v)SbVec3doperator /(const SbVec3d &v,double d)oFÃÖ%Ö) "€Œ€”‘€‚A€‚ÿComponent-wise binary scalar multiplication and division operators.Õ€¶ÖúÖU x€€T”A‚S~‚A㦃õ(€‰ƒã¦ƒõ(‰ã¦ƒõ(‰‚㦃õ(‰ƒã¦ƒõ(‰ã¦ƒõ(‰‚ÿSbVec3doperator +(const SbVec3d &v1,const SbVec3d &v2)SbVec3doperator -(const SbVec3d &v1,const SbVec3d &v2)lC%ÖfÖ) "€†€”‘€‚A€‚ÿComponent-wise binary vector addition and subtraction operators.¾vúÖ$ÖH `€ì€T”A‚S~‚A€ƒã¦ƒõ(‰ã¦ƒõ(‰‚ƒã¦ƒõ(‰ã¦ƒõ(‰‚ÿintoperator ==(const SbVec3d &v1,const SbVec3d &v2)intoperator !=(const SbVec3d &v1,const SbVec3d &v2)J!fÖnÖ) "€B€”‘€‚A€‚ÿEquality comparison operators.1 $ÖŸÖ& €€‚A€‚ÿSEE ALSO {nÖ© Ö î€ö€”‘€‚Aã{ƒõ(€‰€€ã}ƒõ(‰€㨃õ(€‰€ãуõ(€‰€ãÓƒõ(€‰€㊃õ(€‰€㵃õ(€‰€ã ‚û€‰€ãC°×>€‰‚ÿSbVec2d, SbVec2f, SbVec3f, SbVec4d, SbVec4f, SbVec2s, SbVec3s, SbRotation, SbRotationd8ŸÖá Ö1e&‚-Ï.2á Ö Ö„ÖSbVec4d/ © Ö Ö% €€ˆˆ€‚ÿSbVec4d*á Ö: Ö# €€€‚ÿNAMEU/ Ö Ö& €^€”‘€€‚ÿSbVec4d - 4D vector class (double precision)3: Ö Ö# € €€‚ÿINHERITS FROM4 Öö Ö) "€€”‘€€€‚ÿSbVec4d2  Ö( Ö& €€€€ ‚ÿSYNOPSISd=ö ÖŒ Ö' €z€”‘€€‚‚ÿ#include Methods from class SbVec4d:DÑ( ÖÐ Ös ´€£€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒãуõ(‰‚㑶p6‰ƒãуõ(‰‚ƒã¨ƒõ(‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ãуõ(‰ƒ‚ãуõ(‰ƒ‚ÿSbVec4d()SbVec4d(const double v[4])SbVec4d(double x,double y,double z,double w)doubledot(const SbVec4d &v) constSbBoolequals(const SbVec4d v,double tolerance) constvoidgetReal(SbVec3f &v) constconst double *getValue() constvoidgetValue(double &x,double &y,double &z,double &w) constdoublelength() constvoidnegate()normalize()SbVec4d &setValue(const double v[4])SbVec4d &setValue(double x,double y,double z,double w)‹Œ Ö @Ö ì€€T”A‚S~‚Aãуõ(€‰ƒãÓƒõ(‰‚ƒ‚ƒ‚ãуõ(‰ƒ‚ãуõ(‰ƒ‚ãуõ(‰ƒãуõ(‰‚ãуõ(‰ƒãуõ(‰‚ãуõ(‰ƒ‚ãуõ(‰ƒãуõ(‰‚ãуõ(‰ƒãуõ(‰‚ÿSbVec4d &setValue(const SbVec4f &vec4)double &operator [](int i)const double &operator [](int i)SbVec4d &operator *=(double d)SbVec4d &operator /=(double d)SbVec4d &operator +=(const SbVec4d &u)SbVec4d &operator -=(const SbVec4d &u)SbVec4doperator -() constSbVec4doperator *(const SbVec4d &v,double d)SbVec4doperator *(double d,const SbVec4d &v)Ð Ö @Ö© Ö©'Ð ÖµAÖ‚ Ò€O€T”A‚S~‚Aãуõ(€‰ƒãуõ(‰‚ãуõ(‰ƒãуõ(‰ãуõ(‰‚ãуõ(‰ƒãуõ(‰ãуõ(‰‚ƒãуõ(‰ãуõ(‰‚ƒãуõ(‰ãуõ(‰‚ÿSbVec4doperator /(const SbVec4d &v,double d)SbVec4doperator +(const SbVec4d &v1,const SbVec4d &v2)SbVec4doperator -(const SbVec4d &v1,const SbVec4d &v2)intoperator ==(const SbVec4d &v1,const SbVec4d &v2)intoperator !=(const SbVec4d &v1,const SbVec4d &v2)4 @ÖéAÖ& €€‚A€‚ÿDESCRIPTIONUµAÖhCÖ* "€«€”‘€‚A€‚ÿ4D vector class used to store homogeneous coordinates. Although Open Inventor fields still store only single precision values, for certain applications it is useful and convenient to be able to store and manipulate double precision values, for example, double precision coordinate data or values that will be used for further computation.0 éAÖ˜CÖ& €€‚A€‚ÿMETHODS9 hCÖÑCÖ, (€€T”A‚S~‚A€ƒ‚ÿSbVec4d()@˜CÖDÖ) "€.€”‘€‚A€‚ÿDefault constructor.€OÑCÖ‘DÖ1 2€ž€T”A‚S~‚A€ƒ‚ƒ‚ÿSbVec4d(const double v[4])SbVec4d(double x,double y,double z,double w)P'DÖáDÖ) "€N€”‘€‚A€‚ÿConstructor given vector components.Y'‘DÖ:EÖ2 4€N€T”A‚S~‚A€ƒãуõ(‰‚ÿdoubledot(const SbVec4d &v) conste<áDÖŸEÖ) "€x€”‘€‚A€‚ÿReturns dot (inner) product of vector and another vector.v=:EÖFÖ9 B€z€T”A‚S~‚A㑶p6€‰ƒãуõ(‰‚ÿSbBoolequals(const SbVec4d v,double tolerance) const¢yŸEÖ·FÖ) "€ò€”‘€‚A€‚ÿEquality comparison within given tolerance - the square of the length of the maximum distance between the two vectors.U#FÖ GÖ2 4€F€T”A‚S~‚A€ƒã¨ƒõ(‰‚ÿvoidgetReal(SbVec3f &v) constsJ·FÖGÖ) "€”€”‘€‚A€‚ÿReturns the real portion of the vector by dividing by the fourth value.“b GÖHÖ1 2€Ä€T”A‚S~‚A€ƒ‚ƒ‚ÿconst double *getValue() constvoidgetValue(double &x,double &y,double &z,double &w) constFGÖXHÖ) "€:€”‘€‚A€‚ÿReturns vector components.DHÖœHÖ, (€0€T”A‚S~‚A€ƒ‚ÿdoublelength() constO&XHÖëHÖ) "€L€”‘€‚A€‚ÿReturns geometric length of vector.<œHÖ'IÖ, (€ €T”A‚S~‚A€ƒ‚ÿvoidnegate()V-ëHÖ}IÖ) "€Z€”‘€‚A€‚ÿNegates each component of vector in place.;'IÖ¸IÖ, (€€T”A‚S~‚A€ƒ‚ÿnormalize()M$}IÖJÖ) "€H€”‘€‚A€‚ÿChanges vector to be unit length.¤g¸IÖ©JÖ= J€Î€T”A‚S~‚Aãуõ(€‰ƒ‚ãуõ(‰ƒ‚ÿSbVec4d &setValue(const double v[4])SbVec4d &setValue(double x,double y,double z,double w)GJÖðJÖ) "€<€”‘€‚A€‚ÿSets the vector components.f.©JÖVKÖ8 @€\€T”A‚S~‚Aãуõ(€‰ƒãÓƒõ(‰‚ÿSbVec4d &setValue(const SbVec4f &vec4)`7ðJÖ¶KÖ) "€n€”‘€‚A€‚ÿSets value of vector from a single precision vector.n@VKÖ$LÖ. ,€€€T”A‚S~‚A€ƒ‚ƒ‚ÿdouble &operator [](int i)const double &operator [](int i)Q(¶KÖuLÖ) "€P€”‘€‚A€‚ÿAccesses indexed component of vector.€F$LÖõLÖ: D€Œ€T”A‚S~‚Aãуõ(€‰ƒ‚ãуõ(‰ƒ‚ÿSbVec4d &operator *=(double d)SbVec4d &operator /=(double d)h?uLÖ]MÖ) "€~€”‘€‚A€‚ÿComponent-wise scalar multiplication and division operators. ZõLÖýMÖF \€´€T”A‚S~‚Aãуõ(€‰ƒãуõ(‰‚ãуõ(‰ƒãуõ(‰‚ÿSbVec4d &operator +=(const SbVec4d &u)SbVec4d &operator -=(const SbVec4d &u)e<]MÖbNÖ) "€x€”‘€‚A€‚ÿComponent-wise vector addition and subtraction operators.QýMÖ³NÖ2 4€>€T”A‚S~‚Aãуõ(€‰ƒ‚ÿSbVec4doperator -() consta8bNÖOÖ) "€p€”‘€‚A€‚ÿNondestructive unary negation - returns a new vector.ó›³NÖ€ÖX ~€7€T”A‚S~‚Aãуõ(€‰ƒãуõ(‰‚ãуõ(‰ƒãуõ(‰‚ãуõ(‰ƒãуõ(‰‚ÿSbVec4doperator *(const SbVec4d &v,double d)SbVec4doperator *(double d,const SbVec4d &v)SbVec4doperator /(const SbVec4d &v,doubOÖ€Ö© Öle d)oFOÖ‚€Ö) "€Œ€”‘€‚A€‚ÿComponent-wise binary scalar multiplication and division operators.Õ€€ÖWÖU x€€T”A‚S~‚Aãуõ(€‰ƒãуõ(‰ãуõ(‰‚ãуõ(‰ƒãуõ(‰ãуõ(‰‚ÿSbVec4doperator +(const SbVec4d &v1,const SbVec4d &v2)SbVec4doperator -(const SbVec4d &v1,const SbVec4d &v2)lC‚€ÖÃÖ) "€†€”‘€‚A€‚ÿComponent-wise binary vector addition and subtraction operators.¾vWÖ‚ÖH `€ì€T”A‚S~‚A€ƒãуõ(‰ãуõ(‰‚ƒãуõ(‰ãуõ(‰‚ÿintoperator ==(const SbVec4d &v1,const SbVec4d &v2)intoperator !=(const SbVec4d &v1,const SbVec4d &v2)J!ÃÖË‚Ö) "€B€”‘€‚A€‚ÿEquality comparison operators.1 ‚Öü‚Ö& €€‚A€‚ÿSEE ALSO {Ë‚Ö„Ö î€ö€”‘€‚Aã{ƒõ(€‰€€ã}ƒõ(‰€㦃õ(€‰€㨃õ(€‰€ãÓƒõ(€‰€㊃õ(€‰€㵃õ(€‰€ã ‚û€‰€€ãC°×>‰‚ÿSbVec2d, SbVec2f, SbVec3d, SbVec3f, SbVec4f, SbVec2s, SbVec3s, SbRotation, SbRotationd< ü‚ÖB„Ö1›$t%ƒ&3B„Öu„Ö»×SbRotationd3„Öu„Ö% €€ˆˆ€‚ÿSbRotationd*B„ÖŸ„Ö# €€€‚ÿNAMEkEu„Ö …Ö& €Š€”‘€€‚ÿSbRotationd - class for representing a rotation (double precision)3Ÿ„Ö=…Ö# € €€‚ÿINHERITS FROM8 …Öu…Ö) "€€”‘€€€‚ÿSbRotationd2 =…Ö§…Ö& €€€€ ‚ÿSYNOPSIShAu…Ö†Ö' €‚€”‘€€‚‚ÿ#include Methods from class SbRotationd:¯§…Ö$ˆÖf š€_€T”A‚S~‚A€ƒ‚ƒã¦ƒõ(‰‚ƒ‚ƒ‚ƒãЫÈv‰‚ƒã¦ƒõ(‰ã¦ƒõ(‰‚ƒ‚ƒ‚ãC°×>‰ƒ‚ÿSbRotationd()SbRotationd(const SbVec3d &axis,double radians)SbRotationd(const double v[4])SbRotationd(double q0,double q1,double q2,double q3)SbRotationd(const SbMatrixd &m)SbRotationd(const SbVec3d &rotateFrom,const SbVec3d &rotateTo)const double *getValue() constvoidgetValue(double &q0,double &q1,double &q2,double &q3) constSbRotationd &setValue(double q0,double q1,double q2,double q3):¬†Ö^ŠÖŽ ê€Y€T”A‚S~‚A€ƒã¦ƒõ(‰‚ƒãЫÈv‰‚ƒã4i¥‘‰‚ãC°×>‰ƒ‚ãC°×>‰ƒ‚ãC°×>‰ƒ‚ãC°×>‰ƒãЫÈv‰‚ãC°×>‰ƒã¦ƒõ(‰‚ãC°×>‰ƒã¦ƒõ(‰ã¦ƒõ(‰‚ÿvoidgetValue(SbVec3d &axis,double &radians) constvoidgetValue(SbMatrixd &matrix) constvoidgetValue(SbMatrix &matrix) constSbRotationd &invert()SbRotationdinverse() constSbRotationd &setValue(const double q[4])SbRotationd &setValue(const SbMatrixd &m)SbRotationd &setValue(const SbVec3d &axis,double radians)SbRotationd &setValue(const SbVec3d &rotateFrom,const SbVec3d &rotateTo)D­$ˆÖ¢ŒÖ— ü€[€T”A‚S~‚AãC°×>€‰ƒã ‚û‰‚ãC°×>‰ƒã4i¥‘‰‚ãC°×>‰ƒãC°×>‰‚ƒãC°×>‰ãC°×>‰‚ƒãC°×>‰ãC°×>‰‚㑶p6‰ƒãC°×>‰‚ãC°×>‰ƒãC°×>‰ãC°×>‰‚ÿSbRotationd &setValue(const SbRotation &rotate)SbRotationd &setValue(const SbMatrix &matrix)SbRotationd &operator *=(const SbRotationd &q)intoperator ==(const SbRotationd &q1,const SbRotationd &q2)intoperator !=(const SbRotationd &q1,const SbRotationd &q2)SbBoolequals(const SbRotationd &r,double tolerance) constSbRotationdoperator *(const SbRotationd &q1,const SbRotationd &q2)5Û^ŠÖ×ÖZ ‚€·€T”A‚S~‚A€ƒã¦ƒõ(‰ã¦ƒõ(‰‚ƒ‚ãC°×>‰ƒãC°×>‰ãC°×>‰‚ãC°×>‰ƒ‚ÿvoidmultVec(const SbVec3d &src,SbVec3d &dst) constvoidscaleAngle(double scaleFactor )static SbRotationdslerp(const SbRotationd &rot0,const SbRotationd &rot1,double t)static SbRotationdidentity()4¢ŒÖ ŽÖ& €€‚A€‚ÿDESCRIPTION…[×ÖÖ* "€·€”‘€‚A€‚ÿObject that stores a rotation using double precision values. Although Open Inventor fields still store only single precision values, for certain applications it is useful and convenient to be able to store and manipulate double precision values, for example, double precision coordinate data or values that will be used for further computation.òÈ ŽÖŽÀÖ* "€‘€”‘€‚A€‚ÿThere are several ways to specify a rotation: quaternion (4 doubles, ÖŽÀÖ„Öin the order x, y, z, w)), 4x4 rotation matrix, or axis and angle. All angles are in radians and all rotations are right-handed.0 Ö¾ÀÖ& €€‚A€‚ÿMETHODSZŽÀÖÂÖT v€ €T”A‚S~‚A€ƒ‚ƒã¦ƒõ(‰‚ƒ‚ƒ‚ƒãЫÈv‰‚ƒã¦ƒõ(‰ã¦ƒõ(‰‚ÿSbRotationd()SbRotationd(const SbVec3d &axis,double radians)SbRotationd(const double v[4])SbRotationd(double q0,double q1,double q2,double q3)SbRotationd(const SbMatrixd &m)SbRotationd(const SbVec3d &rotateFrom,const SbVec3d &rotateTo)? ¾ÀÖWÄÖ6 :€€”‘€‚A€€€€€‚ÿConstructors for rotation. The axis/radians constructor creates a rotation of angle radians about the given axis. The constructors that take four doubles create a quaternion from those doubles (careful, this differs from the four numbers in an axis/radian definition). Matrix constructor requires a valid rotation matrix. The rotateFrom/To constructor defines rotation that rotates from one vector into another. The rotateFrom and rotateTo vectors are normalized by the constructor before calculating the rotation.N"ÂÖ¥ÄÖ, (€D€T”A‚S~‚A€ƒ‚ÿconst double *getValue() consti@WÄÖÅÖ) "€€€”‘€‚A€‚ÿReturns pointer to array of 4 components defining quaternion.uF¥ÄÖƒÅÖ/ .€Œ€T”A‚S~‚A€ƒ‚ÿvoidgetValue(double &q0,double &q1,double &q2,double &q3) constc:ÅÖæÅÖ) "€t€”‘€‚A€‚ÿReturns 4 individual components of rotation quaternion.|GƒÅÖbÆÖ5 :€Ž€T”A‚S~‚AãC°×>€‰ƒ‚ÿSbRotationd &setValue(double q0,double q1,double q2,double q3)pGæÅÖÒÆÖ) "€Ž€”‘€‚A€‚ÿSets value of rotation from 4 individual components of a quaternion.k8bÆÖ=ÇÖ3 6€p€T”A‚S~‚A€ƒã¦ƒõ(‰‚ÿvoidgetValue(SbVec3d &axis,double &radians) constoFÒÆÖ¬ÇÖ) "€Œ€”‘€‚A€‚ÿReturns corresponding 3D rotation axis vector and angle in radians.]+=ÇÖ ÈÖ2 4€V€T”A‚S~‚A€ƒãЫÈv‰‚ÿvoidgetValue(SbMatrixd &matrix) constV-¬ÇÖ_ÈÖ) "€Z€”‘€‚A€‚ÿReturns corresponding 4x4 rotation matrix.\* ÈÖ»ÈÖ2 4€T€T”A‚S~‚A€ƒã4i¥‘‰‚ÿvoidgetValue(SbMatrix &matrix) constV-_ÈÖÉÖ) "€Z€”‘€‚A€‚ÿReturns corresponding 4x4 rotation matrix.M»ÈÖ^ÉÖ2 4€6€T”A‚S~‚AãC°×>€‰ƒ‚ÿSbRotationd &invert()Q(ÉÖ¯ÉÖ) "€P€”‘€‚A€‚ÿChanges a rotation to be its inverse.R ^ÉÖÊÖ2 4€@€T”A‚S~‚AãC°×>€‰ƒ‚ÿSbRotationdinverse() constN%¯ÉÖOÊÖ) "€J€”‘€‚A€‚ÿReturns the inverse of a rotation.`.ÊÖ¯ÊÖ2 4€\€T”A‚S~‚AãC°×>€‰ƒ‚ÿSbRotationd &setValue(const double q[4])nEOÊÖËÖ) "€Š€”‘€‚A€‚ÿSets value of rotation from array of 4 components of a quaternion.i1¯ÊÖ†ËÖ8 @€b€T”A‚S~‚AãC°×>€‰ƒãЫÈv‰‚ÿSbRotationd &setValue(const SbMatrixd &m)Z1ËÖàËÖ) "€b€”‘€‚A€‚ÿSets value of rotation from a rotation matrix.{B†ËÖ[ÌÖ9 B€„€T”A‚S~‚AãC°×>€‰ƒã¦ƒõ(‰‚ÿSbRotationd &setValue(const SbVec3d &axis,double radians)sJàËÖÎÌÖ) "€”€”‘€‚A€‚ÿSets value of vector from 3D rotation axis vector and angle in radians.’S[ÌÖ`ÍÖ? N€¦€T”A‚S~‚AãC°×>€‰ƒã¦ƒõ(‰ã¦ƒõ(‰‚ÿSbRotationd &setValue(const SbVec3d &rotateFrom,const SbVec3d &rotateTo)Í—ÎÌÖ-ÎÖ6 :€/€”‘€‚A€€€€€‚ÿSets rotation to rotate one direction vector to another. The rotateFrom and rotateTo arguments are normalized before the rotation is calculated.o7`ÍÖœÎÖ8 @€n€T”A‚S~‚AãC°×>€‰ƒã ‚û‰‚ÿSbRotationd &setValue(const SbRotation &rotate)[2-ÎÖ÷ÎÖ) "€d€”‘€‚A€‚ÿSets rotation from a single precision rotation.m5œÎÖdÏÖ8 @€j€T”A‚S~‚AãC°×>€‰ƒã4i¥‘‰‚ÿSbRotationd &setValue(const SbMatrix &matrix)b9÷ÎÖÆÏÖ) "€r€”‘€‚A€‚ÿSets rotation from a single precision rotation matrix.n6dÏÖ@×8 @€l€T”A‚S~‚AãC°×>€‰ƒãC°×>‰‚ÿÆÏÖ@ׄÖSbRotationd &operator *=(const SbRotationd &q)lCÆÏÖ¬×) "€†€”‘€‚A€‚ÿMultiplies by another rotation; results in product of rotations.φ@×{×I `€ €T”A‚S~‚A€ƒãC°×>‰ãC°×>‰‚ƒãC°×>‰ãC°×>‰‚ÿintoperator ==(const SbRotationd &q1,const SbRotationd &q2)intoperator !=(const SbRotationd &q1,const SbRotationd &q2)J!¬×Å×) "€B€”‘€‚A€‚ÿEquality comparison operators.{B{×@×9 B€„€T”A‚S~‚A㑶p6€‰ƒãC°×>‰‚ÿSbBoolequals(const SbRotationd &r,double tolerance) const®„Å×î×* "€ €”‘€‚A€‚ÿEquality comparison within given tolerance - the square of the length of the maximum distance between the two quaternion vectors.ŒM@×z×? N€š€T”A‚S~‚AãC°×>€‰ƒãC°×>‰ãC°×>‰‚ÿSbRotationdoperator *(const SbRotationd &q1,const SbRotationd &q2)mDî×ç×) "€ˆ€”‘€‚A€‚ÿMultiplication of two rotations; results in product of rotations.t;z×[×9 B€v€T”A‚S~‚A€ƒã¦ƒõ(‰ã¨ƒõ(‰‚ÿvoidmultVec(const SbVec3d &src,SbVec3f &dst) constg>ç×Â×) "€|€”‘€‚A€‚ÿMultiplies the given vector by the matrix of this rotation.S'[××, (€N€T”A‚S~‚A€ƒ‚ÿvoidscaleAngle(double scaleFactor )…VÂך×/ .€¬€”‘€‚A€€€‚ÿKeep the axis the same. Multiply the angle of rotation by the amount scaleFactor.¡^×;×C V€¼€T”A‚S~‚A€ãC°×>‰ƒãC°×>‰ãC°×>‰€‚ÿstatic SbRotationdslerp(const SbRotationd &rot0,const SbRotationd &rot1,double t)‰`š×Ä×) "€À€”‘€‚A€‚ÿSpherical linear interpolation: as t goes from 0 to 1, returned value goes from rot0 to rot1.T";××2 4€D€T”A‚S~‚A€ãC°×>‰ƒ‚ÿstatic SbRotationdidentity()DÄ×\×) "€6€”‘€‚A€‚ÿReturns a null rotation..׊×& €€‚A€‚ÿNOTES[2\×å×) "€d€”‘€‚A€‚ÿRotations are stored internally as quaternions.1 Š××& €€‚A€‚ÿSEE ALSO¥Få×»×_ Ž€Œ€”‘€‚A㦃õ(€‰€€㨃õ(‰€ã4i¥‘€‰€€ãЫÈv‰€€ã ‚û‰‚ÿSbVec3d, SbVec3f, SbMatrix, SbMatrixd, SbRotation: ×õ×1U7Ö!Þ#4õ×& ×ÝÎ×SbMatrixd1 »×& ×% €€ˆˆ€‚ÿSbMatrixd*õ×P ×# €€€‚ÿNAMEX2& ר ×& €d€”‘€€‚ÿSbMatrixd - 4x4 matrix class (double precision)3P ×Û ×# € €€‚ÿINHERITS FROM6 ¨ × ×) "€€”‘€€€‚ÿSbMatrixd2 Û ×C ×& €€€€ ‚ÿSYNOPSISf? ש ×' €~€”‘€€‚‚ÿ#include Methods from class SbMatrixd:3ÓC ×Ü ×` Ž€§€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒã4i¥‘‰‚ƒ‚ƒ‚ƒ‚ãЫÈv‰ƒ‚ƒãC°×>‰‚ÿSbMatrixd()SbMatrixd(double a11,double a12,double a13,double a14,double a21,double a22,double a23,double a24,double a31,double a32,double a33,double a34,double a41,double a42,double a43,double a44)SbMatrixd(const SbMatd &md)voidsetValue(const SbMatd &md)voidsetValue(const SbMatrix &m)voidgetValue(SbMatd &md) constconst SbMatd &getValue() constvoidmakeIdentity()static SbMatrixdidentity()voidsetRotate(const SbRotationd &q)`Ì© ×<×” ö€™€T”A‚S~‚A€ƒ‚ƒã¦ƒõ(‰‚ƒã¦ƒõ(‰‚ƒã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰‚ƒã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰ãC°×>‰‚ƒã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰‚ÿvoidsetScale(double s)voidsetScale(const SbVec3d &s)voidsetTranslate(const SbVec3d &t)voidsetTransform(const SbVec3d &t,const SbRotationd &r,const SbVec3d &s)voidsetTransform(const SbVec3d &t,const SbRotationd &r,const SbVec3d &s,const SbRotationd &so)voidsetTransform(const SbVec3d &translation,const SbRotationd &rotation,const SbVec3d &scaleFactor,const SbRotationd &scaleOrientation,const SbVec3d ¢er)fÅÜ ×®Aס ‹€T”A‚S~‚A€ƒã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰ãC°×>‰‚ƒã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒãЫÈv‰ã¦ƒõ(‰ãЫÈv‰ã¦ƒõ(‰ãЫÈv‰‚ÿvoidgetTransform(SbVec3d &t,S<×®A×»×bRotationd &r,SbVec3d &s,SbRotationd &so) constvoidgetTransform(SbVec3d &translation,SbRotationd &rotation,SbVec3d &scaleFactor,SbRotationd &scaleOrientation,const SbVec3d ¢er) constdoubledet3(int r1,int r2,int r3,int c1,int c2,int c3) constdoubledet3() constdoubledet4() constSbBoolfactor(SbMatrixd &r,SbVec3d &s,SbMatrixd &u,SbVec3d &t,SbMatrixd &proj) constO¿<×ýC× î€€T”A‚S~‚AãЫÈv€‰ƒ‚㑶p6‰ƒ‚ƒ‚ãЫÈv‰ƒ‚ãЫÈv‰ƒãЫÈv‰‚ãЫÈv‰ƒãЫÈv‰‚ƒã¦ƒõ(‰ã¦ƒõ(‰‚ƒã¦ƒõ(‰ã¦ƒõ(‰‚ƒã¦ƒõ(‰ã¦ƒõ(‰‚ÿSbMatrixdinverse() constSbBoolLUDecomposition(int index[4],double &d)voidLUBackSubstitution(int index[4],double b[4]) constSbMatrixdtranspose() constSbMatrixd &multRight(const SbMatrixd &m)SbMatrixd &multLeft(const SbMatrixd &m)voidmultMatrixVec(const SbVec3d &src,SbVec3d &dst) constvoidmultVecMatrix(const SbVec3d &src,SbVec3d &dst) constvoidmultDirMatrix(const SbVec3d &src,SbVec3d &dst) constdÙ®A×aF׋ 䀳€T”A‚S~‚A€ƒãǬ|6‰ãǬ|6‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ãЫÈv‰ƒ‚ãЫÈv‰ƒãЫÈv‰‚ãЫÈv‰ƒãC°×>‰‚ãЫÈv‰ƒãЫÈv‰‚ãЫÈv‰ƒãЫÈv‰ãЫÈv‰‚ÿvoidmultLineMatrix(const SbLine &src,SbLine &dst) constvoidprint(FILE *fp) constdouble *operator double*()SbMatdoperator SbMatd&()double *operator [](int i)const double *operator [](int i) constSbMatrixd &operator =(const SbMatd &md)SbMatrixd &operator =(const SbMatrixd &md)SbMatrixd &operator =(const SbRotationd &q)SbMatrixd &operator *=(const SbMatrixd &md)SbMatrixdoperator *(const SbMatrixd &md1,const SbMatrixd &md2)ÁýC×zG×X ~€ƒ€T”A‚S~‚A€ƒãЫÈv‰ãЫÈv‰‚ƒãЫÈv‰ãЫÈv‰‚㑶p6‰ƒãЫÈv‰‚ÿintoperator ==(const SbMatrixd &md1,const SbMatrixd &md2)intoperator !=(const SbMatrixd &md1,const SbMatrixd &md2)SbBoolequals(const SbMatrixd &md,double tolerance) const4aF×®G×& €€‚A€‚ÿDESCRIPTIONtJzG×"I×* "€•€”‘€‚A€‚ÿ4x4 double precision matrix class/datatype. Although Open Inventor fields still store only single precision values, for certain applications it is useful and convenient to be able to store and manipulate double precision values, for example, double precision coordinate data or values that will be used for further computation.W.®G×yI×) "€\€”‘€‚A€‚ÿThe matrices are stored in row-major order.0 "IשI×& €€‚A€‚ÿMETHODSOýyI×øJ×R r€û€T”A‚S~‚A€ƒãЫÈv‰‚ƒãЫÈv‰‚ƒãЫÈv‰‚ÿSbMatrixd()SbMatrixd(double a11,double a12,double a13,double a14,double a21,double a22,double a23,double a24,double a31,double a32,double a33,double a34,double a41,double a42,double a43,double a44)SbMatrixd(const SbMatd &md)9©I×1K×) "€ €”‘€‚A€‚ÿConstructors.N"øJ×K×, (€D€T”A‚S~‚A€ƒ‚ÿvoidsetValue(const SbMatd &md)R)1K×ÑK×) "€R€”‘€‚A€‚ÿSets value from 4x4 array of elements.W%K×(L×2 4€J€T”A‚S~‚A€ƒã4i¥‘‰‚ÿvoidsetValue(const SbMatrix &m)W.ÑK×L×) "€\€”‘€‚A€‚ÿSets values from a single precision matrix.pB(L×ïL×. ,€„€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidgetValue(SbMatd &md) constconst SbMatd &getValue() constJ!L×9M×) "€B€”‘€‚A€‚ÿReturns 4x4 array of elements.BïL×{M×, (€,€T”A‚S~‚A€ƒ‚ÿvoidmakeIdentity()G9M×ÂM×) "€<€”‘€‚A€‚ÿSets matrix to be identity.R {M×N×2 4€@€T”A‚S~‚A€ãЫÈv‰ƒ‚ÿstatic SbMatrixdidentity()GÂM×[N×) "€<€”‘€‚A€‚ÿReturns an identity matrix.[)N׶N×2 4€R€T”A‚S~‚A€ƒãC°×>‰‚ÿvoidsetRotate(const SbRotationd &q)T+[N× O×) "€V€”‘€‚A€‚ÿSets matrix to rotate by given rotation.F¶N×PO×, (€4€T”A‚S~‚A€ƒ‚ÿvoidsetScale(double s)Y0 OשO×) "€`€”‘€‚A€‚ÿSets matrix to scale by given uniform factor.V$PO× €×2 4€H€T”A‚S~‚A€ƒã¦ƒõ(‰‚ÿvoidsetScale(const SbVec3d &s)©O× €×»×Q(©O×]€×) "€P€”‘€‚A€‚ÿSets matrix to scale by given vector.Z( €×·€×2 4€P€T”A‚S~‚A€ƒã¦ƒõ(‰‚ÿvoidsetTranslate(const SbVec3d &t)U,]€× ×) "€X€”‘€‚A€‚ÿSets matrix to translate by given vector.îl·€×ú‚ׂ Ò€Ù€T”A‚S~‚A€ƒã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰‚ƒã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰ãC°×>‰‚ƒã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰‚ÿvoidsetTransform(const SbVec3d &t,const SbRotationd &r,const SbVec3d &s)voidsetTransform(const SbVec3d &t,const SbRotationd &r,const SbVec3d &s,const SbRotationd &so)voidsetTransform(const SbVec3d &translation,const SbRotationd &rotation,const SbVec3d &scaleFactor,const SbRotationd &scaleOrientation,const SbVec3d ¢er)Ü × „×6 :€¹€”‘€‚A€€€€€‚ÿComposes the matrix based on a translation, rotation, scale, orientation for scale, and center. The center is the center point for scaling and rotation. The scaleOrientation chooses the primary axes for the scale.¢[ú‚×®„×G ^€¶€T”A‚S~‚A€ƒã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰ãC°×>‰‚ÿvoidgetTransform(SbVec3d &t,SbRotationd &r,SbVec3d &s,SbRotationd &so) const€W „×.…×) "€®€”‘€‚A€‚ÿReturn translation, rotation, scale, and scale orientation components of the matrix.쮄׆×O l€;€T”A‚S~‚A€ƒã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰ãC°×>‰ã¦ƒõ(‰‚ÿvoidgetTransform(SbVec3d &translation,SbRotationd &rotation,SbVec3d &scaleFactor,SbRotationd &scaleOrientation,const SbVec3d ¢er) constæ˜.…׈×N j€1€”‘€‚A€€€€€€€€€€€€€‚ÿDecomposes the matrix into a translation, rotation, scale, and scale orientation. Any projection information is discarded. The decomposition depends upon choice of center point for rotation and scaling, which is optional as the last parameter. Note that if the center is 0, decompose() is the same as factor() where t is translation, u is rotation, s is scaleFactor, and r is ScaleOrientation.yE†×yˆ×4 8€Š€T”A‚S~‚A€ƒ€‚ÿdoubledet3(int r1,int r2,int r3,int c1,int c2,int c3) const‰`ˆ×‰×) "€À€”‘€‚A€‚ÿReturns determinant of 3x3 submatrix composed of given row and column indices (0-3 for each).Byˆ×D‰×, (€,€T”A‚S~‚A€ƒ‚ÿdoubledet3() const\3‰× ‰×) "€f€”‘€‚A€‚ÿReturns determinant of upper-left 3x3 submatrix.BD‰×â‰×, (€,€T”A‚S~‚A€ƒ‚ÿdoubledet4() constQ( ‰×3Š×) "€P€”‘€‚A€‚ÿReturns determinant of entire matrix.»gâ‰×îŠ×T x€Î€T”A‚S~‚A㑶p6€‰ƒãЫÈv‰ã¦ƒõ(‰ãЫÈv‰ã¦ƒõ(‰ãЫÈv‰‚ÿSbBoolfactor(SbMatrixd &r,SbVec3d &s,SbMatrixd &u,SbVec3d &t,SbMatrixd &proj) constöÆ3Š×ä‹×0 .€€”‘€‚A€€€‚ÿFactors a matrix m into 5 pieces: m = r s r^ u t, where r^ means transpose of r, and r and u are rotations, s is a scale, and t is a translation. Any projection information is returned in proj.TîŠ×8Œ×5 :€>€T”A‚S~‚AãЫÈv€‰ƒ€‚ÿSbMatrixdinverse() constŠaä‹×ÂŒ×) "€Â€”‘€‚A€‚ÿReturns inverse of matrix. Results are undefined for singular matrices. Uses LU decomposition.g48Œ×)×3 6€h€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolLUDecomposition(int index[4],double &d)ÄŽÂŒ×í×6 :€€”‘€‚A€€€€€‚ÿPerform in-place LU decomposition of matrix. index is index of rows in matrix. d is the parity of row swaps. Returns FALSE if singular.h;)×UŽ×- *€v€T”A‚S~‚A€ƒ‚ÿvoidLUBackSubstitution(int index[4],double b[4]) const‘hí×æŽ×) "€Ð€”‘€‚A€‚ÿPerform back-substitution on LU-decomposed matrix. Index is permutation of rows from original matrix.R UŽ×8×2 4€@€T”A‚S~‚AãЫÈv€‰ƒ‚ÿSbMatrixdtranspose() constHæŽ×€×) "€>€”‘€‚A€‚ÿReturns transpose of matrix.¥_8×1À×F \€¾€T”A‚S~‚AãЫÈv€‰ƒãЫÈv‰‚ãЫÈv‰ƒãЫÈv‰‚ÿSbMatrixd &multRight(const SbMatrixd &md)SbMatrixd€×1À×»× &multLeft(const SbMatrixd &md)_6€×À×) "€l€”‘€‚A€‚ÿMultiplies matrix by given matrix on right or left.zA1À× Á×9 B€‚€T”A‚S~‚A€ƒã¦ƒõ(‰ã¦ƒõ(‰‚ÿvoidmultMatrixVec(const SbVec3d &src,SbVec3d &dst) constkBÀ×uÁ×) "€„€”‘€‚A€‚ÿMultiplies matrix by given column vector, giving vector result.zA Á×ïÁ×9 B€‚€T”A‚S~‚A€ƒã¦ƒõ(‰ã¦ƒõ(‰‚ÿvoidmultVecMatrix(const SbVec3d &src,SbVec3d &dst) consth?uÁ×WÂ×) "€~€”‘€‚A€‚ÿMultiplies given row vector by matrix, giving vector result.zAïÁ×ÑÂ×9 B€‚€T”A‚S~‚A€ƒã¦ƒõ(‰ã¦ƒõ(‰‚ÿvoidmultDirMatrix(const SbVec3d &src,SbVec3d &dst) constˆRWÂ×YÄ×6 :€¥€”‘€‚A€€€€€‚ÿMultiplies given row vector by matrix, giving vector result. src is assumed to be a direction vector, so translation part of matrix is ignored. Note: if you wish to transform surface points and normals by a matrix, call multVecMatrix() for the points and call multDirMatrix() on the inverse transpose of the matrix for the normals.y@ÑÂ×ÒÄ×9 B€€€T”A‚S~‚A€ƒãǬ|6‰ãǬ|6‰‚ÿvoidmultLineMatrix(const SbLine &src,SbLine &dst) consttYÄ×oÅ×) "€è€”‘€‚A€‚ÿMultiplies the given line's origin by the matrix, and the line's direction by the rotation portion of the matrix.IÒÄ׸Å×, (€:€T”A‚S~‚A€ƒ‚ÿvoidprint(FILE *fp) constoFoÅ×'Æ×) "€Œ€”‘€‚A€‚ÿPrints a formatted version of the matrix to the given file pointer.J¸Å×qÆ×, (€<€T”A‚S~‚A€ƒ‚ÿdouble *operator double*()^5'Æ×ÏÆ×) "€j€”‘€‚A€‚ÿCast: returns pointer to storage of first element.HqÆ×Ç×, (€8€T”A‚S~‚A€ƒ‚ÿSbMatdoperator SbMatd&()Q(ÏÆ×hÇ×) "€P€”‘€‚A€‚ÿCast: returns reference to 4x4 array.tFÇ×ÜÇ×. ,€Œ€T”A‚S~‚A€ƒ‚ƒ‚ÿdouble *operator [](int i)const double *operator [](int i) conste<hÇ×AÈ×) "€x€”‘€‚A€‚ÿMake it look like a usual matrix (so you can do m[3][2])._-ÜÇ× È×2 4€Z€T”A‚S~‚AãЫÈv€‰ƒ‚ÿSbMatrixd &operator =(const SbMatd &md)R)AÈ×òÈ×) "€R€”‘€‚A€‚ÿSets value from 4x4 array of elements.j2 È×\É×8 @€d€T”A‚S~‚AãЫÈv€‰ƒãЫÈv‰‚ÿSbMatrixd &operator =(const SbMatrixd &md)b-òÈ×¾É×5 :€Z€”‘€‚A€ãЫÈv€‰€‚ÿSet the matrix from another SbMatrixd.k3\É×)Ê×8 @€f€T”A‚S~‚AãЫÈv€‰ƒãC°×>‰‚ÿSbMatrixd &operator =(const SbRotationd &q)_*¾É׈Ê×5 :€T€”‘€‚A€ãC°×>€‰€‚ÿSet the matrix from an SbRotationd.k3)Ê×óÊ×8 @€f€T”A‚S~‚AãЫÈv€‰ƒãЫÈv‰‚ÿSbMatrixd &operator *=(const SbMatrixd &md)^5ˆÊ×QË×) "€j€”‘€‚A€‚ÿPerforms right multiplication with another matrix.ˆIóÊ×ÙË×? N€’€T”A‚S~‚AãЫÈv€‰ƒãЫÈv‰ãЫÈv‰‚ÿSbMatrixdoperator *(const SbMatrixd &md1,const SbMatrixd &md2)N%QË×'Ì×) "€J€”‘€‚A€‚ÿBinary multiplication of matrices.É€ÙË×ðÌ×I `€€T”A‚S~‚A€ƒãЫÈv‰ãЫÈv‰‚ƒãЫÈv‰ãЫÈv‰‚ÿintoperator ==(const SbMatrixd &md1,const SbMatrixd &md2)intoperator !=(const SbMatrixd &m1,const SbMatrixd &m2)J!'Ì×:Í×) "€B€”‘€‚A€‚ÿEquality comparison operators.zAðÌ×´Í×9 B€‚€T”A‚S~‚A㑶p6€‰ƒãЫÈv‰‚ÿSbBoolequals(const SbMatrixd &md,double tolerance) constkB:Í×Î×) "€„€”‘€‚A€‚ÿEquality comparison within given tolerance, for each component.1 ´Í×PÎ×& €€‚A€‚ÿSEE ALSO:Î×ÝÎ×S v€t€”‘€‚A㦃õ(€‰€€㨃õ(‰€ã ‚û€‰€€ãC°×>‰‚ÿSbVec3d, SbVec3f, SbRotation, SbRotationdAPÎ×Ï×1%„Â…„5Ï×VÏ×KØSoWinColorEditor8ÝÎ×VÏ×% €&€ˆˆ€‚ÿSoWinColorEditor*Ï×€Ï×# €€€‚ÿNAMErIVÏ× Ø) "€’€”‘€€€ ‚ÿSoWinColorEditor - component that lets you edit a color interactively€Ï× ØÝÎ×3€Ï×?Ø# € €€‚ÿINHERITS FROM^) ØØ5 :€R€”‘€ã¹Ä L€‰€€€ ‚ÿSoWinComponent > SoWinColorEditor. ?ØËØ# €€€‚ÿSYNOPSISW.Ø"Ø) "€\€”‘€€€ ‚ÿ#include ØJËØúØŽ ꀕ€T”A‚S~‚A€ƒãÀ"%‰‚ƒ€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€‚€ƒ€ƒ€€ƒ€€€‚ÿtypedef voidSoWinColorEditorCB(void *userData,const SbColor *color)enum Sliders{SoWinColorEditor::NONEDisplay no slidersSoWinColorEditor::INTENSITYDisplay intensity slider (default)SoWinColorEditor::RGBDisplay RGB slidersSoWinColorEditor::HSVDisplay HSV slidersSoWinColorEditor::RGB_VDisplay RGB and value slidersSoWinColorEditor::RGB_HSVDisplay RGB and HSV sliders}enum UpdateFrequency{SoWinColorEditor::CONTINUOUSSend updates with every mouse motionSoWinColorEditor::AFTER_ACCEPTOnly send updates after user hits accept button}T("ØNØ, (€P€”‘€‚A€€‚ÿMethods from class SoWinColorEditor:WÛúØ¥Ø| Æ€·€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ƒãð@I1‰ã}9‰‚ƒãz.—\‰ã}9‰‚ƒãŽmç)‰ã}9‰‚ƒ‚㑶p6‰ƒ€‚€ƒ‚ƒ‚ÿSoWinColorEditor(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoWinColorEditor()voidattach(SoSFColor *color,SoBase *node)voidattach(SoMFColor *color,int index,SoBase *node)voidattach(SoMFUInt32 *color,int index,SoBase *node)voiddetach()SbBoolisAttached()voidaddColChangedCallback(SoWinColorEditorCB *f,void *userData = NULL)voidremoveColChangedCallback(SoWinColorEditorCB *f,void *userData = NULL)ÇhNØlØ_ Œ€Ñ€T”A‚S~‚A€ƒ€‚€ƒ‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒã‘¶p6‰€‚㑶p6€‰ƒ‚ƒ‚ƒ‚ÿvoidsetUpdateFrequency(SoWinColorEditor::UpdateFrequency freq)SoWinColorEditor::UpdateFrequencygetUpdateFrequency()voidsetColor(const SbColor &color)const SbColor &getColor()voidsetWYSIWYG(SbBool trueOrFalse)SbBoolisWYSIWYG()voidsetCurrentSliders(SoWinColorEditor::Sliders whichSliders)SoWinColorEditor::SlidersgetCurrentSliders()V'¥ØÂØ/ .€N€”‘€‚A€ã¹Ä L‰‚ÿMethods from class SoWinComponent:5ÓlØ÷ Øb ’€§€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()HWNDgetWidget() constSbBoolisTopLevelShell() constHWNDgetShellWidget() constHWNDgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()UINT *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoWinComponentCB *func,void *data = NULL)¬vÂØ£ Ø6 <€ì€T”A‚S~‚A€ã¹Ä L‰ƒ‚ƒ‚ƒ‚ÿstatic SoWinComponent *getComponent(HWND w)const char *getWidgetName() constconst char *getClassName() const8÷ ØÛ Ø) "€€‚A€€ ‚ÿDESCRIPTION§b£ Ø‚ ØE X€Å€”‘€‚A€€€€€€€€€€ ‚ÿThe SoWinColorEditor class lets you interactively edit colors using color sliders and a color wheel. You can either use it directly to edit a color field in the database by using the attach()/detach() routines, or use it by registering a callback routine which will get called whenever the color changes (passing an SbColor to that routine). Ò¨Û ØTØ* "€Q€”‘€‚A€‚ÿThe editor can currently be attached to only one color at a time. Attaching two different colors will automatically detach the first one before attaching the second.0 ‚ Ø„Ø& €€‚A€‚ÿMETHODS·{TØ;Ø< H€ö€T”A‚S~‚A€ƒã‘¶p6‰€‚€ƒ‚ÿSoWinColorEditor(HWND parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoWinColorEditor()K„؆Ø, (€>€”‘€‚A€€‚ÿConstructor and destructor.·;Ø¥@Ø\ †€o€T”A‚S~‚A€ƒãð@I1‰ã}9‰‚ƒãz.—\‰ã}9‰‚ƒãŽmç)‰ã}9‰‚ƒ‚ÿvoidattach(SoSFColor *colo†Ø¥@ØÝÎ×r,SoBase *node)voidattach(SoMFColor *color,int index,SoBase *node)voidattach(SoMFUInt32 *color,int index,SoBase *node)voiddetach()ñ†ØÃAØ- (€ã€”‘€‚A€€‚ÿAttach/detach the editor to a color node and edit the color of the given index. Attaching to the color node increments the reference count of the color node; detaching from the color node decrements the reference count of the color node.¢y¥@ØeBØ) "€ò€”‘€‚A€‚ÿThe color editor uses a sensor on the color field to automatically update itself when the color is changed externally.°†ÃAØCØ* "€ €”‘€‚A€‚ÿNOTE: The node containing the field needs to also be passed to attach the sensor to it (since field sensors are not yet suported). ÞeBØ#DØ0 .€½€”‘€‚A€€€‚ÿNOTE: The color editor can only be attached to either a single field or a multiple field at any given time. Even when attached to a multiple field, only a single color from that field is edited, as specified by index.JCØmDØ2 4€0€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisAttached()W+#DØÄDØ, (€V€”‘€‚A€€‚ÿReturns TRUE if the editor is attached.È—mDØŒEØ1 0€/€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddColChangedCallback(SoWinColorEditorCB *f,void *userData = NULL)voidremoveColChangedCallback(SoWinColorEditorCB *f,void *userData = NULL)óÀÄDØFØ3 4€€”‘€‚A€€€€‚ÿAdditional way of using the color editor, by registering a callback which will be called whenever the color changes (check the UpdateFrequency to find when the callbacks will be called).§yŒEØ&GØ. ,€ò€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetUpdateFrequency(SoWinColorEditor::UpdateFrequency freq)SoWinColorEditor::UpdateFrequencygetUpdateFrequency()OFاGØ2 4€ž€”‘€‚A€€€€‚ÿSets/gets the update frequency. See the UpdateFrequency enum declaration.E&GØ&HØ: D€Š€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ÿvoidsetColor(const SbColor &color)const SbColor &getColor()À‡§GØæHØ9 @€€”‘€‚A€€€€€€‚ÿSet a new color value, and get the current color value. NOTE: setColor() will call colorChanged callbacks if the color differs.x>&HØ^IØ: D€|€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetWYSIWYG(SbBool trueOrFalse)SbBoolisWYSIWYG() HæHئIØ) "€>€”‘€‚A€‚ÿSets/gets the WYSIWYG mode. žp^IØDJØ. ,€à€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetCurrentSliders(SoWinColorEditor::Sliders whichSliders)SoWinColorEditor::SlidersgetCurrentSliders() Z1¦IØžJØ) "€b€”‘€‚A€‚ÿSets/gets which slider(s) should be displayed.1 DJØÏJØ& €€‚A€‚ÿSEE ALSOFžJØKØ2 4€(€”‘€‚Aã¹Ä L€‰€ ‚ÿSoWinComponent> ÏJØSKØ1;S‡X6SK؈KØœŽØSoToZ3DAction5K؈KØ% € €ˆˆ€‚ÿSoToZ3DAction*SKزKØ# €€€‚ÿNAME`:ˆKØLØ& €t€”‘€€‚ÿSoToZ3DAction - generates a Z3D file from a scene graph3²KØELØ# € €€‚ÿINHERITS FROMU LØšLØ5 :€@€”‘€ãïK€‰€€€‚ÿSoAction > SoToZ3DAction2 ELØÌLØ& €€€€ ‚ÿSYNOPSISwPšLØCMØ' € €”‘€€‚‚ÿ#include Methods from class SoToZ3DAction:ð³ÌLØ3NØ= H€g€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ÿSoToZ3DAction(int quality=100)~SoToZ3DAction()SbBoolopenFile(const char *fileName)voidcloseFile(void)voidsetTextureQuality(int quality)intgetTextureQuality() constP!CM؃NØ/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:œ03NØ+€Øl ¦€a€T”A‚S~‚A€ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual~SoAction()virtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)vƒNØ+€ØKØirtual voidinvalidateState()4ƒNØ_€Ø& €€‚A€‚ÿDESCRIPTIONùÏ+€ØXØ* "€Ÿ€”‘€‚A€‚ÿThis action generates a Z3D file from a scene graph. The Z3D file format is a "bandwidth-friendly" 3D protocol developed by TGS for media on the web. By convention, Z3D files have the file extension .z3d.h>_€ØÀ‚Ø* "€}€”‘€‚A€‚ÿZ3D output contains only those items from the scene graph that can be converted to Z3D format, i.e., surfaces and surface textures. Surfaces may be defined with polygons (e.g. indexed face sets) or NURBS. 3D text is polygonal data and will be included in the output file. Surface textures are stored as JPEG images.]4X؃Ø) "€h€”‘€‚A€‚ÿZ3D format (as of this writing) does not support:3ÄÀ‚ØP…Øo ¬€‰€T”!:‚!€ƒ€€€€‚ƒ€€€€‚ƒ€€€€‚ƒ€€‚ƒ€€€€‚ƒ‚ƒ‚ÿ•Lines (SoLineSet, SoNurbsCurve, etc.)•Points (SoPointSet, SoMarkerSet, etc.)•Bitmaps (SoText2, SoImage, etc.)•SoVRMLElevationGrid•Lights (SoDirectionalLight, SoPointLight, etc.)•Per-vertex material binding (only per-face)•Explicit texture coordinatesAlso note that the default texture mapping in the Z3D player is not the same as Open Inventor. In general textured objects will not appear the same in the Z3D player.þ΃ØN†Ø0 .€€T”!:‚!€ƒ‚ƒ‚ÿ•Explicit normalsAlso note that the default normal calculation in the Z3D player is not the same as Open Inventor. In some cases, objects will not appear the same in the Z3D player.•Background color•lP…Øã†Ø) "€Ø€”‘€‚!€‚ÿThe camera properties will be included in the Z3D file if there is a camera in the specified scene graph.Ì¢N†Ø¯‡Ø* "€E€”‘€‚!€‚ÿIf the camera was created automatically by a viewer, then typically it will not be part of the application scene graph. To get the complete viewer scene graph:d<ã†ØˆØ( €x€Ù€‚H€ƒ‚ÿSoNode *p = pViewer->getSceneManager()->getSceneGraph();*¯‡Ø=ˆØ' €€Ù€‚H€‚ÿøɈØ5‰Ø/ ,€“€”‘€‚H€€€‚ÿZ3D format is currently intended to be a highly compressed delivery mechanism for polygonal geometry. Additional features are planned and will be incorporated into the SoToZ3DAction in the future.h9=ˆØŠØ/ ,€s€”‘€‚H€€€‚ÿBecause the Z3D format is optimized specifically for display, Z3D files will typically be much smaller than the corresponding Open Inventor or VRML file. However in a few cases the Z3D file may be the same size or larger, particularly if SoIndexedTriangleStripSet is the primary primitive in the scene graph.‚Z5‰Ø‹Ø( €´€”‘€‚H€‚ÿOne or more temporary files may be opened by Open Inventor while creating the Z3D file./ ŠØN‹Ø% €€‚H€‚ÿMETHODSb4‹Ø°‹Ø. ,€h€T”A‚S~‚A€ƒ‚ƒ‚ÿSoToZ3DAction(int quality=100)~SoToZ3DAction()GN‹Ø÷‹Ø) "€<€”‘€‚A€‚ÿConstructor and destructor.s?°‹ØjŒØ4 8€~€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ÿSbBoolopenFile(const char *fileName)voidcloseFile(void)K"÷‹ØµŒØ) "€D€”‘€‚A€‚ÿOpen and close the output file.rDjŒØ'Ø. ,€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetTextureQuality(int quality)intgetTextureQuality() constÞµŒØ/ŽØ* "€½€”‘€‚A€‚ÿSets/queries the quality of the JPEG image file(s) used for storing texture image(s). Texture quality ranges from 0 (highest compression, lowest quality) to 100 (lowest compression, highest quality). The default is 100.1 'Ø`ŽØ& €€‚A€‚ÿSEE ALSO< /ŽØœŽØ/ .€€”‘€‚AãïK€‰‚ÿSoAction5`ŽØÑŽØ1à´…P ²7ÑŽØýŽØ¹ ÙSoXt,œŽØýŽØ% €€ˆˆ€‚ÿSoXt*ÑŽØ'Ø# €€€‚ÿNAME\6ýŽØƒØ& €l€”‘€€‚ÿSoXt - routines for Open Inventor/Xt compatibility.3'ضØ# € €€‚ÿINHERITS FROM1ƒØ ÀØ) "€€”‘€€€‚ÿSoXt¶Ø ÀØœŽØ. ¶Ø:ÀØ# €€€‚ÿSYNOPSISd: ÀØžÀØ* $€t€”‘€€‚€‚ÿ#include Methods from class SoXt:Î:ÀدÂØC T€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿstatic Widgetinit(const char *appName,const char *className = "Inventor") static voidinit(Widget topLevelWidget) static voidmainLoop() static voidnextEvent(XtAppContext appContext,XEvent *event) static BooleandispatchEvent(XEvent *event) static XtAppContextgetAppContext() static Display *getDisplay() static WidgetgetTopLevelWidget() static voidshow(Widget widget) static voidhide(Widget widget) static XmString *encodeString(char *s) <ìžÀØëÄØP n€Ù€T”A‚S~‚A€ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿstatic char *decodeString(XmString * xs) static voidsetWidgetSize(Widget w,const SbVec2s &size) static SbVec2sgetWidgetSize(Widget w) static WidgetgetShellWidget(Widget w) static voidcreateSimpleErrorDialog(Widget widget,char *dialogTitle,char *errorStr1,char *errorStr2 = NULL) static voidgetPopupArgs(Display *d,int scr,ArgList args,int *n) static voidregisterColormapLoad(Widget widget,Widget shell) static voidaddColormapToShell(Widget widget,Widget shell) qD¯ÂØ\ÅØ- *€ˆ€T”A‚S~‚A€ƒ‚ÿstatic voidremoveColormapFromShell(Widget widget,Widget shell) 4ëÄØÅØ& €€‚A€‚ÿDESCRIPTION|F\ÅØ ÇØ6 :€€”‘€‚A€€€€€‚ÿThe SoXt class initializes Open Inventor for use with the Xt toolkit and Motif. SoXt::init() must be called in order for Open Inventor to work properly with Xt. SoXt::mainLoop() must be called in order for extension device events to be passed to Open Inventor render areas. The other methods are convenience functions. µ…ÅØÁÇØ0 .€ €”‘€‚A€€€‚ÿRefer to the SoXtComponent reference pages for examples on how this class should be used when using Open Inventor Xt components.0 ÇØñÇØ& €€‚A€‚ÿMETHODS|OÁÇØmÈØ- *€ž€T”A‚S~‚A€ƒ‚ÿstatic Widgetinit(const char *appName,const char *className = "Inventor") v:ñÇØãÉØ< F€u€”‘€‚A€€€€€€€‚ÿThis is called to initialize Open Inventor and Xt, and bind Open Inventor with X events handling so that Open Inventor sensors will work correctly. This returns the top level shell widget. This method will call SoDB::init(), SoNodeKit::init(), and SoInteraction::init() and will create an initial window. W+mÈØ:ÊØ, (€V€T”A‚S~‚A€ƒ‚ÿstatic voidinit(Widget topLevelWidget) 2öãÉØlËØ< F€í€”‘€‚A€€€€€€€‚ÿThis alternate form of init allows the application to initialize Xt. The passed widget should be the top level widget returned from the Xt initialization. This method will call SoDB::init(), SoNodeKit::init(), and SoInteraction::init(). F:ÊزËØ, (€4€T”A‚S~‚A€ƒ‚ÿstatic voidmainLoop() ³~lËØeÌØ5 :€ü€”‘€‚A€€€€€‚ÿThis retrieves and dispatches events (loops forever). It calls SoXt::nextEvent() and SoXt::dispatchEvent() to do this. nA²ËØÓÌØ- *€‚€T”A‚S~‚A€ƒ‚ÿstatic voidnextEvent(XtAppContext appContext,XEvent *event) žieÌØqÍØ5 :€Ò€”‘€‚A€€€€€‚ÿGet the nextEvent by callingGetEvent. The appContext can be had by calling SoXt::getAppContext(). [/ÓÌØÌÍØ, (€^€T”A‚S~‚A€ƒ‚ÿstatic BooleandispatchEvent(XEvent *event) •lqÍØaÎØ) "€Ø€”‘€‚A€‚ÿDispatch the passed event to a handler. This returns TRUE if a handler was found, else it returns FALSE. tFÌÍØÕÎØ. ,€Œ€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic XtAppContextgetAppContext() static Display *getDisplay() ]4aÎØ2ÏØ) "€h€”‘€‚A€‚ÿThese methods are included for portability only. Q%ÕÎ؃ÏØ, (€J€T”A‚S~‚A€ƒ‚ÿstatic WidgetgetTopLevelWidget() zQ2ÏØ Ù) "€¢€”‘€‚A€‚ÿReturn information based on the initial widget returned by or passed to init. ƒÏØ ÙœŽØrDƒÏØ~Ù. ,€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidshow(Widget widget) static voidhide(Widget widget) e< ÙãÙ) "€x€”‘€‚A€‚ÿConvenience routines to show and hide the passed widget. \3~Ù?Ù) "€f€”‘€‚A€‚ÿThis includes any children the window may have. „VãÙÃÙ. ,€¬€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic XmString *encodeString(char *s) static char *decodeString(XmString * xs) {Q?Ù>Ù* "€£€”‘€‚A€‚ÿThese are convenience routines for encoding a character string as an XmString, and decoding an XmString back to a character string. (XmString is a Motif string). The application is responsible for freeing up the memory pointed to by these return values. Use XmStringFree() to free an XmString, and free() to free a character pointer. £hÃÙáÙ; F€Ð€T”A‚S~‚A€ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿstatic voidsetWidgetSize(Widget w,const SbVec2s &size) static SbVec2sgetWidgetSize(Widget w) jA>ÙKÙ) "€‚€”‘€‚A€‚ÿConvenience routines to set/get the size of the given window. V*áÙ¡Ù, (€T€T”A‚S~‚A€ƒ‚ÿstatic WidgetgetShellWidget(Widget w) Ó©KÙtÙ* "€S€”‘€‚A€‚ÿConvenience routine which will return the topmost window containing the given widget. The widget tree is traversed up until the last widget is found using GetParent. ¡r¡ÙÙ/ .€ä€T”A‚S~‚A€ƒ‚ÿstatic voidcreateSimpleErrorDialog(Widget widget,char *dialogTitle,char *errorStr1,char *errorStr2 = NULL) êÀtÙÿÙ* "€€”‘€‚A€‚ÿConvenience routine which brings a simple Xt error dialog box displaying the given error string(s) and window title. The OK button, which destroys the dialog, is the only button displayed. uFÙtÙ/ .€Œ€T”A‚S~‚A€ƒ‚ÿstatic voidgetPopupArgs(Display d,int scr,ArgList args,int *n) XÿÙÌÙ< F€9€”‘€‚A€€€€€€€‚ÿConvenience routine which gets visual args for the popup planes. These args can then be passed in to XmCreatePulldownMenu() or XmCreatePopupMenu() to create menus in the popup planes. addColormapToShell() has to be called on the main popup window to set the proper color map.nAtÙ: Ù- *€‚€T”A‚S~‚A€ƒ‚ÿstatic voidregisterColormapLoad(Widget widget,Widget shell) ÜÌÙ@ Ù* "€¹€”‘€‚A€‚ÿConvenience routine which will register map/unmap callbacks to load and unload the pulldown menu color map right before the menu is about to be posted. This should be called when creating pulldown or popup menus in the overlays. This will make sure that the right color map is loaded into the shell widget (to make the pulldown/popup look right) and remove it when no longer needed (to make sure the OpenGL overlay widget color map is correctly loaded for 8 bit machines). ²: Ùò Ù1 0€€T”A‚S~‚A€ƒ‚ƒ‚ÿstatic voidaddColormapToShell(Widget widget,Widget shell) static voidremoveColormapFromShell(Widget widget,Widget shell) U+@ ÙG Ù* "€W€”‘€‚A€‚ÿConvenience routine to insert/remove the given widget colormap onto the supplied shell widget. This will not replace the existing installed colormaps (or list of windows), but instead insert the new colormap first into the existing list using XGetWMColormapWindows() and XSetWMColormapWindows(). 1 ò Ùx Ù& €€‚A€‚ÿSEE ALSOAG Ù¹ Ù/ .€$€”‘€‚Aã-áO‚ÿSoXtComponent> x Ù÷ Ù1Ò ±–³8÷ Ù,Ù|ÙSoXtClipboard5¹ Ù,Ù% € €ˆˆ€‚ÿSoXtClipboard*÷ ÙVÙ# €€€‚ÿNAMEuO,ÙËÙ& €ž€”‘€€‚ÿSoXtClipboard - supports copy/paste for Open Inventor using the Xt clipboard3VÙþÙ# € €€‚ÿINHERITS FROM:ËÙ8Ù) "€"€”‘€€€‚ÿSoXtClipboard. þÙfÙ# €€€‚ÿSYNOPSISO)8ÙµÙ& €R€”‘€€‚ÿ#include ÕfÙÖ@Ù@ N€«€T”A‚S~‚A€ƒãç2ø¡‰€‚€ƒ‚‚ÿtypedef voµÙÖ@Ù¹ ÙidSoXtClipboardPasteCB(void *userData,SoPathList *pathList) typedef voidSoXtClipboardImportCB(void *userData, Atom dataType,void *data,uint32_t numBytes) #define _XA_CLIPBOARD_ ((Atom) 0) M$µÙ#AÙ) "€H€”‘€‚A€‚ÿMethods from class SoXtClipboard:ì™Ö@ÙCÙS t€3€T”A‚S~‚A€ƒ‚ƒ‚ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰‚ƒ‚ƒ‚ÿSoXtClipboard(Widget w,Atom selectionAtom = _XA_CLIPBOARD_) ~SoXtClipboard() voidcopy(SoNode *node,Time eventTime)voidcopy(SoPath *path,Time eventTime) voidcopy(SoPathList *pathList,Time eventTime) voidpaste(Time eventTime,SoXtClipboardPasteCB *pasteDoneFunc,void *userData = NULL) voidaddPasteInterest(Atom dataType,SoXtClipboardImportCB *pasteImportFunc,void *userData = NULL) 4#AÙCCÙ& €€‚A€‚ÿDESCRIPTIONåCÙRDÙ* "€Ë€”‘€‚A€‚ÿThis class manages data transfers for copy and paste. Transfers may occur within the same process, or between different processes. This uses the Xt selection mechanism to implement the ICCCM protocol for the transfer of data. 0 CCÙ‚DÙ& €€‚A€‚ÿMETHODSRRDÙEÙ/ .€¤€T”A‚S~‚A€ƒ‚ƒ‚ÿSoXtClipboard(Widget w,Atom selectionAtom = _XA_CLIPBOARD_)~SoXtClipboard()X(‚DÙ[FÙ0 .€Q€”‘€‚A€€€‚ÿConstructor and destructor. w is the Xt widget that will be used for the clipboard operations. selectionAtom is the X selection through which data should be transferred. For quick data transfers, this should be XA_PRIMARY. The default is _XA_CLIPBOARD_ which uses the X clipboard selection. ΈEÙ)GÙF Z€€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰‚ÿvoidcopy(SoNode *node,Time eventTime)voidcopy(SoPath *path,Time eventTime)voidcopy(SoPathList *pathList,Time eventTime) â[FÙ5JÙ* "€Å€”‘€‚A€‚ÿThis copies the passed scene graph object, and tells the X server that the clipboard now owns the selection which was specified by selectionAtom in the constructor. When a paste happens (in this window, another window, or another process), the X server will ask this clipboard for the data it copied here. The eventTime should be the time found in the X event structure which triggered the copy operation, and is used to ensure synchronization of copy and paste requests. Data targets supported for export are INVENTOR_2_1, INVENTOR_2_1_FILE, INVENTOR_2_0, INVENTOR_2_0_FILE, VRML_1_0, VRML_1_0_FILE. Also exported for backwards compatibility are INVENTOR and INVENTOR_FILE, which are equivalent to INVENTOR_2_0 and INVENTOR_2_0_FILE. ‡Y)GÙ¼JÙ. ,€²€T”A‚S~‚A€ƒ‚ÿvoidpaste(Time eventTime,SoXtClipboardPasteCB *pasteDoneFunc,void *userData = NULL)xN5JÙ4MÙ* "€€”‘€‚A€‚ÿThis makes a request to the X server for data to paste from the selection atom specified in the constructor (selectionAtom), then returns. When the data is retrieved from the selection owner, the pasteDoneFunc callback is invoked. The newly pasted data is passed as the callback function's pathList argument (an SoPathList). Data targets supported for import are INVENTOR_2_1, INVENTOR_2_1_FILE, INVENTOR_2_0, INVENTOR_2_0_FILE, VRML_1_0, VRML_1_0_FILE. Also imported for backwards compatibility are INVENTOR and INVENTOR_FILE, which are equivalent to INVENTOR_2_0 and INVENTOR_2_0_FILE.•g¼JÙÉMÙ. ,€Î€T”A‚S~‚A€ƒ‚ÿvoidaddPasteInterest(Atom dataType,SoXtClipboardImportCB *pasteImportFunc,void *userData = NULL) !÷4MÙ €Ù* "€ï€”‘€‚A€‚ÿThis extends the paste interest to recognize an additional target as specified by dataType. It can be called multiple times to register interest in more than one extension. The pasteImportFunc will be called when data of the registered type is pasted. Passing NULL as the pasteImportFunc will remove paste interest for that data type (even if the data type is one of the defaults). This should be called before paste() so that paste() will accept pastes of data types that have been registered here. ÉMÙ €Ù¹ Ùc:ÉMÙo€Ù) "€t€”‘€‚A€‚ÿA dataType atom can be created with XmInternAtom, e.g.:\4 €ÙË€Ù( €h€Ù€‚A€‚ÿXmInternAtom(XtDisplay(widget),"INVENTOR",False);+o€Ùö€Ù( €€Ù€‚A€‚ÿ1 Ë€Ù'Ù& €€‚A€‚ÿSEE ALSOUö€Ù|Ù; F€4€”‘€‚Aã(ç –€‰€ãÜ\+€‰‚ÿSoSelection, SoXtD'ÙÀÙ1@P ²²€³9ÀÙûÙÏÁÙSoXtCollisionViewer;|ÙûÙ% €,€ˆˆ€‚ÿSoXtCollisionViewer*ÀÙ%‚Ù# €€€‚ÿNAMEzTûÙŸ‚Ù& €¨€”‘€€‚ÿSoXtCollisionViewer - class to manage collisions between the camera and the scene3%‚ÙÒ‚Ù# € €€‚ÿINHERITS FROM@Ÿ‚ÙƒÙ) "€.€”‘€€€‚ÿSoXtCollisionViewer. Ò‚Ù@ƒÙ# €€€‚ÿSYNOPSIS\6ƒÙœƒÙ& €l€”‘€€‚ÿ#include ƒS@ƒÙ„Ù0 0€¦€T”A‚S~‚A€ƒ€‚ÿtypedef voidSoXtCollisionViewerCB(void* userData,SoXtCollisionViewer* viewer)R)œƒÙq„Ù) "€R€”‘€‚A€‚ÿMethods from class SoXtCollisionVieweryE„Ùê„Ù4 8€Š€T”A‚S~‚A€ƒã®ö¿÷‰‚ƒ‚ÿSoXtCollisionViewer(SoXtViewer* viewer)~SoXtCollisionViewer()V"q„Ù@…Ù4 8€D€T”A‚S~„EAã®ö¿÷€‰ƒ‚ÿSoXtViewer*getViewer() constÇrê„Ù‡ÙU x€å€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ÿvoidsetDistance(float distance)floatgetDistance() constvoid setCollisionDetection(SbBool value = TRUE)SbBoolgetCollisionDetection() constvoid setZBufferOptimization(SbBool value = TRUE)SbBoolgetZBufferOptimization() constvoidaddCallback(SoXtCollisionViewerCB* cbk,void* ud = NULL)voidremoveCallback(SoXtCollisionViewerCB* cbk,void* ud = NULL)5@…Ù<‡Ù& €€‚A€‚ÿDESCRIPTION 辇Ù$ˆÙ* "€}€”‘€‚A€‚ÿThis class is used to constrain a viewer, preventing the viewer's camera from colliding with the objects in the scene. It overrides the RenderCallback on the viewer that it's attached to.~U<‡Ù¢ˆÙ) "€ª€”‘€‚A€‚ÿThe programmer can define the maximum distance between the camera and the objects.ã$ˆÙµ‰Ù0 .€Ç€”‘€‚A€€€‚ÿWhen Z-buffer optimization is enabled, the algorithm looks at the Z-buffer to see if there is an object in front of the camera when the user moves forward, and an SoIntersectionDetectionAction when the user moves backward.U&¢ˆÙ ŠÙ/ .€L€”‘€‚A€€€‚ÿNOTE: This class is not a viewer.0 µ‰Ù:ŠÙ& €€‚A€‚ÿMETHODS_- ŠÙ™ŠÙ2 4€Z€T”A‚S~‚A€ƒã®ö¿÷‰‚ÿSoXtCollisionViewer(SoXtViewer* viewer)8:ŠÙÑŠÙ) "€€”‘€‚A€‚ÿConstructor.F™ŠÙ‹Ù, (€4€T”A‚S~‚A€ƒ‚ÿ~SoXtCollisionViewer()7ÑŠÙN‹Ù) "€€”‘€‚A€‚ÿDestructor.T"‹Ù¢‹Ù2 4€D€T”A‚S~‚Aã®ö¿÷€‰ƒ‚ÿSoXtViewer*getViewer() constEN‹Ùç‹Ù) "€8€”‘€‚A€‚ÿGets the original viewer.k=¢‹ÙRŒÙ. ,€z€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetDistance(float distance)floatgetDistance() constf=ç‹Ù¸ŒÙ) "€z€”‘€‚A€‚ÿSets/gets the distance between the camera and the objects.•[RŒÙMÙ: D€¶€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetCollisionDetection(SbBool value = TRUE)SbBoolgetCollisionDetection() constpG¸ŒÙ½Ù) "€Ž€”‘€‚A€‚ÿSets/gets the collision detection active. The default value is TRUE.—]MÙTŽÙ: D€º€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetZBufferOptimization(SbBool value = TRUE)SbBoolgetZBufferOptimization() constrI½ÙÆŽÙ) "€’€”‘€‚A€‚ÿSets/gets the Z buffer optimization active. The default value is TRUE.h:TŽÙ.Ù. ,€t€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetNumSteps(int num_steps)intgetNumSteps() const­ƒÆŽÙÛÙ* "€€”‘€‚A€‚ÿSets/gets the number of steps to be used in the collision computation. The default number of steps is 4. The minimum value is 2.².Ù™ÀÙ1 0€€T”A‚S~‚ÛÙ™ÀÙ|ÙA€ƒ‚ƒ‚ÿvoidaddCallback(SoXtCollisionViewerCB* cbk,void* ud = NULL)voidremoveCallback(SoXtCollisionViewerCB* cbk,void* ud = NULL)˜oÛÙ1ÁÙ) "€Þ€”‘€‚A€‚ÿAdds/removes callbacks. These callbacks are called when a collision occurs between the camera and the scene.1 ™ÀÙbÁÙ& €€‚A€‚ÿSEE ALSOm81ÁÙÏÁÙ5 :€p€”‘€‚Aã˃€‰ãæxpö‰‚ÿSoCollisionManager, SoIntersectionDetectionAction@bÁÙÂÙ1–³ ´:ÂÙFÂÙ¾ ÚSoXtColorEditor7ÏÁÙFÂÙ% €$€ˆˆ€‚ÿSoXtColorEditor*ÂÙpÂÙ# €€€‚ÿNAMEmGFÂÙÝÂÙ& €Ž€”‘€€‚ÿSoXtColorEditor - component that lets you edit a color interactively3pÂÙÃÙ# € €€‚ÿINHERITS FROM\'ÝÂÙlÃÙ5 :€N€”‘€ã-áO€€€‚ÿSoXtComponent > SoXtColorEditor. ÃÙšÃÙ# €€€‚ÿSYNOPSISQ+lÃÙëÃÙ& €V€”‘€€‚ÿ#include Ç?šÃÙ²ÆÙˆ Þ€€T”A‚S~‚A€ƒãÀ"%‰‚ƒ€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€€€‚ÿtypedef voidSoXtColorEditorCB(void *userData,const SbColor *color)enum Sliders{SoXtColorEditor::NONEDisplay no slidersSoXtColorEditor::INTENSITYDisplay intensity slider (default)SoXtColorEditor::RGBDisplay RGB slidersSoXtColorEditor::HSVDisplay HSV slidersSoXtColorEditor::RGB_VDisplay RGB and value slidersSoXtColorEditor::RGB_HSVDisplay RGB and HSV sliders}enum UpdateFrequency{SoXtColorEditor::CONTINUOUSSend updates with every mouse motionSoXtColorEditor::AFTER_ACCEPTOnly send updates after user hits accept button}S'ëÃÙÇÙ, (€N€”‘€‚A€€‚ÿMethods from class SoXtColorEditor:YÚ²ÆÙ^É٠̀µ€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ€‚€ƒãð@I1‰ã}9‰‚ƒãz.—\‰ã}9‰‚ƒãŽmç)‰ã}9‰‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ€‚ÿSoXtColorEditor(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoXtColorEditor()voidattach(SoSFColor *color,SoBase *node)voidattach(SoMFColor *color,int index,SoBase *node)voidattach(SoMFUInt32 *color,int index,SoBase *node)voiddetach()SbBoolisAttached()voidaddColChangedCallback(SoXtColorEditorCB *f,void *userData = NULL)voidremoveColChangedCallback(SoXtColorEditorCB *f,void *userData = NULL)ÃdÇÙ!ËÙ_ Œ€É€T”A‚S~‚A€ƒ‚ƒ‚ƒãÀ"%‰€‚€ãÀ"%‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ€‚€ƒ‚ÿvoidsetUpdateFrequency(SoXtColorEditor::UpdateFrequency freq)SoXtColorEditor::UpdateFrequencygetUpdateFrequency()voidsetColor(const SbColor &color)const SbColor &getColor()voidsetWYSIWYG(SbBool trueOrFalse)SbBoolisWYSIWYG()voidsetCurrentSliders(SoXtColorEditor::Sliders whichSliders)SoXtColorEditor::SlidersgetCurrentSliders()U&^ÉÙvËÙ/ .€L€”‘€‚A€ã-áOÿMethods from class SoXtComponent:=Û!ËÙ³ÍÙb ’€·€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()WidgetgetWidget() constSbBoolisTopLevelShell() constWidgetgetShellWidget() constWidgetgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()Display *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL)­wvËÙ`ÎÙ6 <€î€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w)const char *getWidgetName() constconst char *getClassName() const4³ÍÙ”ÎÙ& €€‚A€‚ÿDESCRIPTION¢``ÎÙBÚB R€Á€”‘€‚A€€€€€€€€€‚ÿThe SoXtColorEditor class lets you interactively edit colors using color sliders and a color wheel. You can either use it directly to edit a color field in the database by using the attach()/detach() routines, or use it by registering a callback routine which will get called whenever the co”ÎÙBÚÏÁÙlor changes (passing an SbColor to that routine). Ö©”ÎÙÚ- (€S€”‘€‚A€€‚ÿThe editor can currently be attached to only one color at a time. Attaching two different colors will automatically detach the first one before attaching the second.0 BÚHÚ& €€‚A€‚ÿMETHODS¯yÚ÷Ú6 <€ò€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ÿSoXtColorEditor(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoXtColorEditor()GHÚ>Ú) "€<€”‘€‚A€‚ÿConstructor and destructor.¹÷ÚYÚb ’€s€T”A‚S~‚A€ƒãð@I1‰ã}9‰‚ƒãz.—\‰ã}9‰€‚€ƒãŽmç)‰ã}9‰‚ƒ‚ÿvoidattach(SoSFColor *color,SoBase *node)voidattach(SoMFColor *color,int index,SoBase *node)voidattach(SoMFUInt32 *color,int index,SoBase *node)voiddetach()ð>ÚsÚ* "€á€”‘€‚A€‚ÿAttach/detach the editor to a color node and edit the color of the given index. Attaching to the color node increments the reference count of the color node; detaching from the color node decrements the reference count of the color node.¢yYÚÚ) "€ò€”‘€‚A€‚ÿThe color editor uses a sensor on the color field to automatically update itself when the color is changed externally.´‡sÚÉÚ- (€€”‘€‚A€€‚ÿNOTE: The node containing the field needs to also be passed to attach the sensor to it (since field sensors are not yet suported). ÞÚ×Ú0 .€½€”‘€‚A€€€‚ÿNOTE: The color editor can only be attached to either a single field or a multiple field at any given time. Even when attached to a multiple field, only a single color from that field is edited, as specified by index.JÉÚ!Ú2 4€0€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisAttached()S*×ÚtÚ) "€T€”‘€‚A€‚ÿReturns TRUE if the editor is attached.Ê–!Ú>Ú4 6€-€T”A‚S~‚A€ƒ‚ƒ€‚ÿvoidaddColChangedCallback(SoXtColorEditorCB *f,void *userData = NULL)voidremoveColChangedCallback(SoXtColorEditorCB *f,void *userData = NULL)ï¿tÚ- Ú0 .€€”‘€‚A€€€‚ÿAdditional way of using the color editor, by registering a callback which will be called whenever the color changes (check the UpdateFrequency to find when the callbacks will be called).©x>ÚÖ Ú1 2€ð€T”A‚S~‚A€ƒ‚ƒ€‚ÿvoidsetUpdateFrequency(SoXtColorEditor::UpdateFrequency freq)SoXtColorEditor::UpdateFrequencygetUpdateFrequency()}N- ÚS Ú/ .€œ€”‘€‚A€€€‚ÿSets/gets the update frequency. See the UpdateFrequency enum declaration.ƒFÖ ÚÖ Ú= J€Œ€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ€‚ÿvoidsetColor(const SbColor &color)const SbColor &getColor()¼†S Ú’ Ú6 :€ €”‘€‚A€€€€€‚ÿSet a new color value, and get the current color value. NOTE: setColor() will call colorChanged callbacks if the color differs.|?Ö Ú Ú= J€~€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ€‚ÿvoidsetWYSIWYG(SbBool trueOrFalse)SbBoolisWYSIWYG() H’ ÚV Ú) "€>€”‘€‚A€‚ÿSets/gets the WYSIWYG mode. œn Úò Ú. ,€Ü€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetCurrentSliders(SoXtColorEditor::Sliders whichSliders)SoXtColorEditor::SlidersgetCurrentSliders() Z1V ÚL Ú) "€b€”‘€‚A€‚ÿSets/gets which slider(s) should be displayed.1 ò Ú} Ú& €€‚A€‚ÿSEE ALSOAL Ú¾ Ú/ .€$€”‘€‚Aã-áO‚ÿSoXtComponent> } Úü Ú1l²€³¯µ;ü Ú1ÚƒŒÚSoXtComponent5¾ Ú1Ú% € €ˆˆ€‚ÿSoXtComponent*ü Ú[Ú# €€€‚ÿNAMEmG1ÚÈÚ& €Ž€”‘€€‚ÿSoXtComponent - abstract base class for all Open Inventor components3[ÚûÚ# € €€‚ÿINHERITS FROM:ÈÚ5Ú) "€"€”‘€€€‚ÿSoXtComponent. ûÚcÚ# €€€‚ÿSYNOPSISO)5Ú²Ú& €R€”‘€€‚ÿ#include }GcÚ;@Ú6 <€Ž€T”A‚S~‚A€ƒã-áO‚ÿtypedef voidSoXtCompon²Ú;@Ú¾ ÚentCB(void *userData,SoXtComponent *comp)M$²Úˆ@Ú) "€H€”‘€‚A€‚ÿMethods from class SoXtComponent:Kê;@ÚÓBÚa €Õ€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow() virtual voidhide() SbBoolisVisible() WidgetgetWidget() const SbBoolisTopLevelShell() const WidgetgetShellWidget() const WidgetgetParentWidget() const voidsetSize(const SbVec2s &size) SbVec2sgetSize() Display *getDisplay() voidsetTitle(const char *newTitle) const char *getTitle() const voidsetIconTitle(const char *newIconTitle) const char *getIconTitle() const voidsetWindowCloseCallback(SoXtComponentCB *func, void *data = NULL) °zˆ@ÚƒCÚ6 <€ô€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w) const char *getWidgetName() const const char *getClassName() const 4ÓBÚ·CÚ& €€‚A€‚ÿDESCRIPTION¸ˆƒCÚoEÚ0 .€€”‘€‚A€€€‚ÿAbstract base class from which all Open Inventor Xt components are derived. This class provides a basic C++ protocol for building and displaying Motif components. Components are used to encapsulate some function or task into a reusable package in the form of a Motif widget that can be used in any Open Inventor Xt program. See the Example section on how to build and use SoXtComponents.0 ·CÚŸEÚ& €€‚A€‚ÿMETHODSX*oEÚ÷EÚ. ,€T€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()O&ŸEÚFFÚ) "€L€”‘€‚A€‚ÿThis shows and hides the component.I÷EÚFÚ2 4€.€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisVisible()÷ÍFFÚ†GÚ* "€›€”‘€‚A€‚ÿReturns TRUE if this component is mapped onto the screen. For a component to be visible, its widget and the shell containing this widget must be mapped (which is FALSE when the component is iconified). CFÚÉHÚ0 .€'€”‘€‚A€€€‚ÿSubclasses should call this routine before redrawing anything and in any sensor trigger methods. Calling this will check the current visibility (which is really cheap) and invoke the visibility changed callbacks if the state changes (see addVisibilityChangeCallback()). H†GÚIÚ, (€8€T”A‚S~‚A€ƒ‚ÿWidgetgetWidget() const ì¼ÉHÚýIÚ0 .€y€”‘€‚A€€€‚ÿThis returns the base widget for this component. If the component created its own shell, this returns the topmost widget beneath the shell. Call getShellWidget() to obtain the shell. wCIÚtJÚ4 8€†€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ÿSbBoolisTopLevelShell() const WidgetgetShellWidget() const /ýIÚ£KÚ* "€ €”‘€‚A€‚ÿReturns TRUE if this component is a top level shell component (has its own window). Subclasses may use this to decide if they are allowed to resize themselves. Also method to return the shell widget (NULL if the shell hasn't been created by this component). N"tJÚñKÚ, (€D€T”A‚S~‚A€ƒ‚ÿWidgetgetParentWidget() const \3£KÚMLÚ) "€f€”‘€‚A€‚ÿReturn the parent widget, be it a shell or not. v<ñKÚÃLÚ: D€x€T”A‚S~‚A€ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvoidsetSize(const SbVec2s &size) SbVec2sgetSize() P'MLÚMÚ) "€N€”‘€‚A€‚ÿConvenience routines on the widget. FÃLÚYMÚ, (€4€T”A‚S~‚A€ƒ‚ÿDisplay *getDisplay() jAMÚÃMÚ) "€‚€”‘€‚A€‚ÿReturns the X display associated with this components widget. É–YMÚŒNÚ3 4€-€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetTitle(const char *newTitle) const char *getTitle() const voidsetIconTitle(const char *newIconTitle) const char *getIconTitle() const Ö¬ÃMÚbOÚ* "€Y€”‘€‚A€‚ÿThe window and icon tititle can be set for topLevelShell components or components which are directly under a shell widget (i.e. components which have their own window). vIŒNÚØOÚ- *€’€T”A‚S~‚A€ƒ‚ÿvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL) BbOÚ&Ú0 .€%€”‘€‚A€ØOÚ&Ú¾ Ú€€‚ÿSets which callback to call when the user closes this component (double click in the upper left corner) - by default hide() is called on this component, unless a callback is set to something other than NULL. A pointer to this class will be passed as the callback data. ’iØOÚ¸Ú) "€Ò€”‘€‚A€‚ÿNote: this callback is supplied because the user may wish to delete this component when it is closed. e3&Ú‚Ú2 4€f€T”A‚S~‚A€ã-áO‚ÿstatic SoXtComponent *getComponent(Widget w) ¾Ž¸ÚÛ‚Ú0 .€€”‘€‚A€€€‚ÿThis returns the SoXtComponent for this widget. If the widget does not match that of any Open Inventor component, then NULL is returned. wI‚ÚRƒÚ. ,€’€T”A‚S~‚A€ƒ‚ƒ‚ÿconst char *getWidgetName() const const char *getClassName() const ƜۂÚ„Ú* "€9€”‘€‚A€‚ÿRoutines which return the widget name and the class name. The widget name is passed to the build method. The class name is predefined by each component. 0 RƒÚH„Ú& €€‚A€‚ÿEXAMPLE뻄Ú3…Ú0 .€w€”‘€‚A€€€‚ÿThis example shows how an Open Inventor component can be built inside a program using the Xt widget set. The example uses the SoXtExaminerViewer widget to view some simple geometry. I!H„Ú|…Ú( €B€Ù€‚A€‚ÿ#include N&3…ÚÊ…Ú( €L€Ù€‚A€‚ÿ#include _7|…Ú)†Ú( €n€Ù€‚A€‚ÿ#include GÊ…Úp†Ú( €>€Ù€‚A€‚ÿvoid main(int, char **argv) ]5)†Ú͆Ú( €j€Ù€‚A€‚ÿ// Initialize Inventor and Xt, which must be done R*p†Ú‡Ú( €T€Ù€‚A€‚ÿ// before any Inventor calls are made. R*͆Úq‡Ú( €T€Ù€‚A€‚ÿWidget myWindow = SoXt::init(argv[0]); W/‡ÚȇÚ( €^€Ù€‚A€‚ÿ// create the viewer in the toplevel window L$q‡ÚˆÚ( €H€Ù€‚A€‚ÿ// and set some scene to display lDȇڀˆÚ( €ˆ€Ù€‚A€‚ÿSoXtExaminerViewer *myViewer = new SoXtExaminerViewer(myWindow); T,ˆÚÔˆÚ( €X€Ù€‚A€‚ÿmyViewer->setSceneGraph( new SoCone() ); N&€ˆÚ"‰Ú( €L€Ù€‚A€‚ÿ// manage and map window on screen =ÔˆÚ_‰Ú( €*€Ù€‚A€‚ÿmyViewer->show(); Q)"‰Ú°‰Ú( €R€Ù€‚A€‚ÿSoXt::show(myWindow); // calls Show() ;_‰Úë‰Ú( €&€Ù€‚A€‚ÿ// Loop forever <°‰Ú'ŠÚ( €(€Ù€‚A€‚ÿSoXt::mainLoop();+ë‰ÚRŠÚ( €€Ù€‚A€‚ÿ3 'ŠÚ…ŠÚ& €€‚A€‚ÿRESOURCES 5RŠÚº‹Ú. *€€”‘€‚A€‚ÿ!!------------------------------------------------ !! Xt Component ( For Light and Material Sliders Set ) !!------------------------------------------------ *IvXtComponentTitle.labelString: Xt Component *IvTGSXtComponentTitle.labelString: TGS: Xt Component1 …ŠÚë‹Ú& €€‚A€‚ÿSEE ALSO˜Eº‹ÚƒŒÚS v€Š€”‘€‚AãÜ\+€‰€ã{ç1€‰€ã®ö¿÷€‰€ã«%¡€‰‚ÿSoXt, SoXtRenderArea, SoXtViewer, SoXtMaterialEditorFë‹ÚÉŒÚ1Š& ´_¶<ÉŒÚÚHBÛSoXtConstrainedViewer=ƒŒÚÚ% €0€ˆˆ€‚ÿSoXtConstrainedViewer*ÉŒÚ0Ú# €€€‚ÿNAME‹eÚ»Ú& €Ê€”‘€€‚ÿSoXtConstrainedViewer - base viewer class which adds camera constraints given a world up direction30ÚîÚ# € €€‚ÿINHERITS FROMà{»ÚÎŽÚe š€ö€”‘€ã-áO€ã‰2쀉€ã{ç1€‰€ã®ö¿÷€‰€ãµGi^€‰€€€‚ÿSoXtComponent > SoXtGLWidget > SoXtRenderArea > SoXtViewer > SoXtFullViewer > SoXtConstrainedViewer. îÚüŽÚ# €€€‚ÿSYNOPSISŽdÎŽÚŠÚ* $€È€”‘€€‚€‚ÿ#include Methods from class SoXtConstrainedViewer:ŒRüŽÚ"ÀÚ: D€¤€T”A‚S~‚A€ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ÿvoidsetUpDirection(const SbVec3f &newUpDirection)SbVecŠÚ"ÀÚƒŒÚ3fgetUpDirection()V'ŠÚxÀÚ/ .€N€”‘€‚A€ãµGi^‰‚ÿMethods from class SoXtFullViewer:ôš"ÀÚlÂÚZ ‚€5€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()voidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()WidgetgetAppPushButtonParent() constvoidaddAppPushButton(Widget newButton)voidinsertAppPushButton(Widget newButton,int index)voidremoveAppPushButton(Widget oldButton)intfindAppPushButton(Widget oldButton)intlengthAppPushButton()WidgetgetRenderAreaWidget()R#xÀÚ¾ÂÚ/ .€F€”‘€‚A€ã®ö¿÷‰‚ÿMethods from class SoXtViewer:WÑlÂÚÅÚ† Ú€£€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒã®ö¿÷‰ã®ö¿÷‰‚ã®ö¿÷‰ƒã®ö¿÷‰‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoXtViewer::DrawType type,SoXtViewer::DrawStyle style)SoXtViewer::DrawStylegetDrawStyle(SoXtViewer::DrawType type)•¾ÂÚ%ÇÚ{ Ä€+€T”A‚S~‚A€ƒã®ö¿÷‰‚ã®ö¿÷‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBufferingType(SoXtViewer::BufferType type)SoXtViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual voidsetCursorEnabled(SbBool onOrOff) SbBoolisCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()ÊÅÚ@ÉÚQ p€•€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetStereoOffset(float dist)floatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoXtViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidcopyView(Time eventTime).ß%ÇÚnËÚO l€¿€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidpasteView(Time eventTime)virtual voidrecomputeSceneSize() voidsetDecimationStrategy(DecimationStrategy strategy) DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal) int32_tgetGoalNumberOfTriangles() voidsetGoalFramesPerSecond(float goal) floatgetGoalFramesPerSecond() voidsetFixedPercentage(float percent) floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff) SbBoolisFullRenderingWhenStill() m.@ÉÚÛÌÚ? L€]€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolisStillNow() voidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData) voidsetNumSamples(int numFrames) intgetNumSamples() voidsetDecimationPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL) floatgetCurrentDecimationPercentage() V'nËÚ1ÍÚ/ .€N€”‘€‚A€ã{ç1‰‚ÿMethods from class SoXtRenderArea:$³ÛÌÚUÏÚq °€g€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãsJY‰‚ƒãsJY‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoXtDevice *)voidunregisterDevice(SoXtDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «1ÍÚmÛa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,inUÏÚmÛƒŒÚt num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤UÏÚ…Ût ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)6ÚmÛ»Û\ †€µ€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoXtRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºW…ÛuÛc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constT%»ÛÉÛ/ .€J€”‘€‚A€ã‰2쉂ÿMethods from class SoXtGLWidget:*ËuÛó Û_ Œ€—€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff) SbBoolisBorder() const voidsetDoubleBuffer(SbBool onOrOff) SbBoolisDoubleBuffer() WidgetgetNormalWindow() WidgetgetOverlayWindow() GLXContextgetNormalContext() GLXContextgetOverlayContext() WidgetgetNormalWidget() WidgetgetOverlayWidget() virtual voidsetNormalVisual(XVisualInfo*vis) XVisualInfo*getNormalVisual() virtual voidsetOverlayVisual(XVisualInfo*vis) XVisualInfo*getOverlayVisual() ždÉÛ‘ Û: D€È€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag) SbBoolisDrawToFrontBufferEnable() const U&ó Ûæ Û/ .€L€”‘€‚A€ã-áOÿMethods from class SoXtComponent:=Û‘ Û# Ûb ’€·€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()WidgetgetWidget() constSbBoolisTopLevelShell() constWidgetgetShellWidget() constWidgetgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()Display *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL)­wæ ÛÐ Û6 <€î€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w)const char *getWidgetName() constconst char *getClassName() const4# ÛÛ& €€‚A€‚ÿDESCRIPTIONb,Ð ÛfÛ6 :€Y€”‘€‚A€€€€€‚ÿThis is a base class for the SoXtWalkViewer and SoXtFlyViewer component viewers. This class adds methods and convenience routines available to subclasses to constrain the camera given a world up direction. This prevents the camera from looking upside down. By default the +Y direction is used.0 Û–Û& €€‚A€‚ÿMETHODSŒRfÛ.@Û: D€¤€T”A‚S~‚A€ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ÿvoidsetUpDirection(const SbVec3f &newUpDirec–Û.@ÛƒŒÚtion)SbVec3fgetUpDirection() ã–Û;AÛ* "€Ç€”‘€‚A€‚ÿSpecifies the upward direction of the viewer. This up direction is used by the viewers to constrain the camera when tilting up/down, and also used when rotating the camera right/left. The default is the +Y (0,1,0) direction.1 .@ÛlAÛ& €€‚A€‚ÿSEE ALSOÜq;AÛHBÛk ¦€â€”‘€‚AãµGi^€‰€ã®ö¿÷€‰€ã-áO€ã{ç1€‰€ã³^ÖЀ‰€ãá¿" €‰‚ÿSoXtFullViewer, SoXtViewer, SoXtComponent, SoXtRenderArea, SoXtWalkViewer, SoXtFlyViewer; lAÛƒBÛ1: ¯µ‰¶=ƒBÛµBÛ¾MÛSoXtDevice2 HBÛµBÛ% €€ˆˆ€‚ÿSoXtDevice*ƒBÛßBÛ# €€€‚ÿNAMExLµBÛWCÛ, (€˜€”‘€€€€‚ÿSoXtDevice - abstract base class device for use with the SoXtRenderArea3ßBÛŠCÛ# € €€‚ÿINHERITS FROM7WCÛÁCÛ) "€€”‘€€€‚ÿSoXtDevice2 ŠCÛóCÛ& €€€€ ‚ÿSYNOPSISxNÁCÛkDÛ* $€œ€”‘€€‚€‚ÿ#include Methods from class SoXtDevice:p$óCÛÛEÛL f€I€T”A‚S~‚A€ƒ‚ƒ‚ã2™|—‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvirtual voidenable(Widget w,XtEventHandler f,XtPointer data,Widget win = NULL)virtual voiddisable(Widget w,XtEventHandler f,XtPointer data)virtual const SoEvent *translateEvent(XAnyEvent *xevent)voidsetWindowSize(const SbVec2s &size)const SbVec2s &getWindowSize() const4kDÛFÛ& €€‚A€‚ÿDESCRIPTIONÞÛEÛGÛ0 .€½€”‘€‚A€€€‚ÿThis is the abstract base class for devices in the Open Inventor Xt component and utility library. When a device is registered with an SoXtRenderArea, the device is able to generate messages in the render area window.0 FÛMGÛ& €€‚A€‚ÿMETHODSÊ–GÛHÛ4 6€-€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidenable(Widget w,XtEventHandler f,XtPointer data,Widget win = NULL)virtual voiddisable(Widget w,XtEventHandler f,XtPointer data)ýÁMGÛIÛ< F€ƒ€”‘€‚A€€€€€€€‚ÿEnable and disable the device for the passed widget. When enabled, the callback function f will be invoked when events occur in the window. data is the clientData which will be passed.p>HÛ„IÛ2 4€|€T”A‚S~‚A€ã2™|—‰ƒ‚ÿvirtual const SoEvent *translateEvent(XAnyEvent *xevent)·‡IÛ;JÛ0 .€€”‘€‚A€€€‚ÿThis attempts to convert the passed event into an SoEvent. If the message was not generated by this device, then NULL is returned.ŽT„IÛÉJÛ: D€¨€T”A‚S~‚A€ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvoidsetWindowSize(const SbVec2s &size)const SbVec2s &getWindowSize() const Ú;JÛÓLÛ0 .€µ€”‘€‚A€€€‚ÿSet and get the size of the window this device is registered for. This allows the device to correctly convert position information from X window coordinates (origin at top left) to Open Inventor window coordinates (origin at bottom left). (SoXtRenderArea will automatically call this method for each device registered on it whenever the window size changes.) Note: Setting the window size only affects the size as perceived by the device and not the actual window size.1 ÉJÛMÛ& €€‚A€‚ÿSEE ALSOº[ÓLÛ¾MÛ_ Ž€¶€”‘€‚AãÁKé €‰€ãï‰3€‰€ãeìù €‰€ãž`û€‰€ã{ç1€‰‚ÿSoXtMouse, SoXtKeyboard, SoXtSpaceBall, SoXtInputFocus, SoXtRenderAreaKMÛ NÛ1n_¶´‚·> NÛKNÛ†ÃÛSoXtDirectionalLightEditorB¾MÛKNÛ% €:€ˆˆ€‚ÿSoXtDirectionalLightEditor* NÛuNÛ# €€€‚ÿNAMEnHKNÛãNÛ& €€”‘€€‚ÿSoXtDirectionalLightEditor - component for editing directional lights3uNÛOÛ# € €€‚ÿINHERITS FROMg2ãNÛ}OÛ5 :€d€”‘€ã-áO€€€‚ÿSoXtComponent > SoXtDirectionalLightEditor. OÛ«OÛ# €€€‚ÿSYNOPSIS\6}OÛ€Û& €l€”‘€€‚ÿ#include –`«OÛ©€Û6 <€À€T”A‚S~‚A€ƒãÀú‰€‚ÿtypedef voidSoXtDirectionalLightEditorCB(void *userData,const SoDirectionalLight *light)Z1€ÛÛ) "€b€”‘€‚A€‚ÿMethods from class SoXtDirectionalLightEditor:·©€ÛƒÛW |€o€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ƒãMy'9‰‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãÀú‰‚ÿSoXtDirectionalLightEditor(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoXtDirectionalLightEditor()voidattach(SoPath *pathToLight)voiddetach()SbBoolisAttached()voidaddLightChangedCallback(SoXtDirectionalLightEditorCB *f,void *userData = NULL)voidremoveLightChangedCallback(SoXtDirectionalLightEditorCB *f,void *userData = NULL)voidsetLight(const SoDirectionalLight &newLight)b0ÛsƒÛ2 4€`€T”A‚S~‚A€ãÀú‰ƒ‚ÿconst SoDirectionalLight &getLight() constU&ƒÛȃÛ/ .€L€”‘€‚A€ã-áOÿMethods from class SoXtComponent:=ÛsƒÛ†Ûb ’€·€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()WidgetgetWidget() constSbBoolisTopLevelShell() constWidgetgetShellWidget() constWidgetgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()Display *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL)­wȃ۲†Û6 <€î€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w)const char *getWidgetName() constconst char *getClassName() const4†Ûæ†Û& €€‚A€‚ÿDESCRIPTIONóò†ÛÙ‰Û0 .€‡€”‘€‚A€€€‚ÿThis class is used to edit an SoDirectionalLight node (color, intensity, and direction are changed). In addition to directly editing directional light nodes, the editor can also be used with callbacks which will be called whenever the light is changed. The component consists of a render area and a value slider in the main window, with controls to display a color picker. In the render area there appears a sphere representing the world, and a directional light manipulator representing the direction of the light. Picking on the manipulator and moving the mouse provides direct manipulation of the light direction. The color picker is used to edit the color, and the value slider edits the intensity.Õ«æ†Û®ŠÛ* "€W€”‘€‚A€‚ÿThe editor can currently be attached to only one light at a time. Attaching to two different lights will automatically detach the first one before attaching the second.0 Ù‰ÛÞŠÛ& €€‚A€‚ÿMETHODSÆ®ŠÛ¤‹Û7 <€€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ÿSoXtDirectionalLightEditor(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoXtDirectionalLightEditor()GÞŠÛë‹Û) "€<€”‘€‚A€‚ÿConstructor and destructor.g3¤‹ÛRŒÛ4 8€f€T”A‚S~‚A€ƒãMy'9‰‚ƒ‚ÿvoidattach(SoPath *pathToLight)voiddetach()°†ë‹ÛÛ* "€ €”‘€‚A€‚ÿAttach/detach the editor to/from a directional light. When attached, changes made in the editor directly affect the attached light.JRŒÛLÛ2 4€0€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisAttached()S*ÛŸÛ) "€T€”‘€‚A€‚ÿReturns TRUE if the editor is attached.à¯LÛŽÛ1 0€_€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddLightChangedCallback(SoXtDirectionalLightEditorCB *f,void *userData = NULL)voidremoveLightChangedCallback(SoXtDirectionalLightEditorCB *f,void *userData = NULL)’iŸÛÛ) "€Ò€”‘€‚A€‚ÿAdditional way of using the directional light editor, by registering a callback and setting the light.–bŽÛ§Û4 8€Ä€T”A‚S~‚A€ƒ‚ãÀú‰ƒ‚ÿvoidsetLight(const SoDirectionalLight &newLight)const SoDirectionalLight &getLight() constc:ÛÀÛ) "€t€”‘€‚A€‚ÿSet new light values, and get the current light§ÛÀÛ¾MÛ values.3 §ÛIÀÛ& €€‚A€‚ÿRESOURCES §rÀÛðÂÛ5 8€å€”‘€‚A€‚ÿ!!------------------------------------------------ !! Drectional Light Editor !! !!------------------------------------------------ *IvDirectLightTitle.labelString: Dir Light Editor *IvDirectLightIconTitle.labelString: Dir Light Ed *IvDirectLightInten.labelString: Inten *IvDirectLightColorEditor.labelString: Directional Light Color *IvDLMenuBar.IvEdit.labelString: Edit *IvDLMenuBar*IvControlPullDown*IvColorEditor.labelString: Color Editor *IvDLMenuBar*IvControlPullDown*IvCopy.labelString: Copy *IvDLMenuBar*IvControlPullDown*IvPaste.labelString: Paste *IvDLMenuBar*IvControlPullDown*IvHelp.labelString: Help1 IÀÛ!ÃÛ& €€‚A€‚ÿSEE ALSOe*ðÂÛ†ÃÛ; F€T€”‘€‚Aã-áO€ãÀú€‰‚ÿSoXtComponent, SoDirectionalLightC!ÃÛÉÃÛ18‰¶%‚Í?ÉÃÛÄÛçˆÜSoXtExaminerViewer:†ÃÛÄÛ% €*€ˆˆ€‚ÿSoXtExaminerViewer*ÉÃÛ-ÄÛ# €€€‚ÿNAME~XÄÛ«ÄÛ& €°€”‘€€‚ÿSoXtExaminerViewer - viewer component which uses a virtual trackball to view the data3-ÄÛÞÄÛ# € €€‚ÿINHERITS FROMÝx«ÄÛ»ÅÛe š€ð€”‘€ã-áO€ã‰2쀉€ã{ç1€‰€ã®ö¿÷€‰€ãµGi^€‰€€€‚ÿSoXtComponent > SoXtGLWidget > SoXtRenderArea > SoXtViewer > SoXtFullViewer > SoXtExaminerViewer. ÞÄÛéÅÛ# €€€‚ÿSYNOPSISˆ^»ÅÛqÆÛ* $€¼€”‘€€‚€‚ÿ#include Methods from class SoXtExaminerViewer:§éÅÛÈÛi  €O€T”A‚S~‚A€ƒã‘¶p6‰ãµGi^‰ã®ö¿÷‰‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSoXtExaminerViewer(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoXtFullViewer::BuildFlag flag = BUILD_ALL,SoXtViewer::Type type = BROWSER)~SoXtExaminerViewer()voidsetFeedbackVisibility(SbBool onOrOff)SbBoolisFeedbackVisible() constvoidsetFeedbackSize(int newSize)intgetFeedbackSize() constvoidsetAnimationEnabled(SbBool onOrOff)SbBoolisAnimationEnabled()b.qÆÛãÈÛ4 8€\€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚ÿvoidstopAnimating()SbBoolisAnimating()V'ÈÛ9ÉÛ/ .€N€”‘€‚A€ãµGi^‰‚ÿMethods from class SoXtFullViewer:ôšãÈÛ-ËÛZ ‚€5€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()voidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()WidgetgetAppPushButtonParent() constvoidaddAppPushButton(Widget newButton)voidinsertAppPushButton(Widget newButton,int index)voidremoveAppPushButton(Widget oldButton)intfindAppPushButton(Widget oldButton)intlengthAppPushButton()WidgetgetRenderAreaWidget()R#9ÉÛËÛ/ .€F€”‘€‚A€ã®ö¿÷‰‚ÿMethods from class SoXtViewer:WÑ-ËÛÖÍÛ† Ú€£€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒã®ö¿÷‰ã®ö¿÷‰‚ã®ö¿÷‰ƒã®ö¿÷‰‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoXtViewer::DrawType type,SoXtViewer::DrawStyle style)SoXtViewer::DrawStylegetDrawStyle(SoXtViewer::DrawType type)#œËÛ Ü‡ Ü€9€T”A‚S~‚A€ƒã®ö¿÷‰‚ã®ö¿÷‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ€€‚ƒã‘¶p6‰‚㑶p6‰ƒ€‚€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBufferingType(SoXtViewer::BufferType type)SoXtViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() const virtual void setCursorEnabled(SbBool onOrOff) SbBool isCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()ÖÍÛ Ü†ÃÛÊÖÍÛ'ÜQ p€•€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetStereoOffset(float dist)floatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoXtViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidcopyView(Time eventTime)&Ý ÜMÜI `€»€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ÿvoidpasteView(Time eventTime)virtual voidrecomputeSceneSize() voidsetDecimationStrategy(DecimationStrategy strategy) DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal) int32_tgetGoalNumberOfTriangles() voidsetGoalFramesPerSecond(float goal) floatgetGoalFramesPerSecond() voidsetFixedPercentage(float percent) floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff) SbBoolisFullRenderingWhenStill() p0'ܽÜ@ N€a€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolisStillNow() voidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData) voidsetNumSamples(int numFrames) intgetNumSamples() voidsetDecimationPercentageCallback (SoXtViewerDecimationPercentageCB *callback,void *userData = NULL) floatgetCurrentDecimationPercentage() V'MÜÜ/ .€N€”‘€‚A€ã{ç1‰‚ÿMethods from class SoXtRenderArea:$³½Ü7Üq °€g€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãsJY‰‚ƒãsJY‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoXtDevice *)voidunregisterDevice(SoXtDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «ÜC Üa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤7Ü[ Üt ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)6ÚC Ü‘Ü\ †€µ€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoXtRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºW[ ÜW@Üc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManage‘ÜW@܆ÃÛr(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constT%‘Ü«@Ü/ .€J€”‘€‚A€ã‰2쉂ÿMethods from class SoXtGLWidget: ÁW@ÜËBÜ_ Œ€ƒ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()WidgetgetNormalWindow()WidgetgetOverlayWindow()GLXContextgetNormalContext()GLXContextgetOverlayContext()WidgetgetNormalWidget()WidgetgetOverlayWidget()virtual voidsetNormalVisual(XVisualInfo *vis)XVisualInfo *getNormalVisual()virtual voidsetOverlayVisual(XVisualInfo *vis)XVisualInfo *getOverlayVisual()žd«@ÜiCÜ: D€È€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag) SbBoolisDrawToFrontBufferEnable() const U&ËBܾCÜ/ .€L€”‘€‚A€ã-áOÿMethods from class SoXtComponent:=ÛiCÜûEÜb ’€·€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()WidgetgetWidget() constSbBoolisTopLevelShell() constWidgetgetShellWidget() constWidgetgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()Display *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL)­w¾CܨFÜ6 <€î€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w)const char *getWidgetName() constconst char *getClassName() const4ûEÜÜFÜ& €€‚A€‚ÿDESCRIPTIONŠZ¨FÜfIÜ0 .€µ€”‘€‚A€€€‚ÿThe Examiner viewer component allows you to rotate the view around a point of interest using a virtual trackball. The viewer uses the camera focalDistance field to figure out the point of rotation, which is usually set to be at the center of the scene. In addition to allowing you to rotate the camera around the point of interest, this viewer also allows you to translate the camera in the viewer plane, as well as dolly (move forward and backward) to get closer to or further away from the point of interest. The viewer also supports seek to quickly move the camera to a desired object or point.0 ÜFÜ–IÜ& €€‚A€‚ÿMETHODSÐfIÜ«JÜE X€¡€T”A‚S~‚A€ƒã‘¶p6‰ãµGi^‰ã®ö¿÷‰‚ƒ‚ÿSoXtExaminerViewer(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoXtFullViewer::BuildFlag flag = BUILD_ALL,SoXtViewer::Type type = BROWSER)~SoXtExaminerViewer()Å•–IÜpKÜ0 .€+€”‘€‚A€€€‚ÿConstructor and destructor which specifies the viewer type. Please refer to the SoXtViewer reference page for a description of the viewer types.ŒR«JÜüKÜ: D€¤€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetFeedbackVisibility(SbBool onOrOff)SbBoolisFeedbackVisible() constgpKÜŒLÜ) "€Î€”‘€‚A€‚ÿShow/hide the point of rotation feedback, which only appears while in viewing mode (default is off).n@üKÜúLÜ. ,€€€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetFeedbackSize(int newSize)intgetFeedbackSize() constsJŒLÜmMÜ) "€”€”‘€‚A€‚ÿSet/get the point of rotation feedback size in pixels (default 20 pix).…KúLÜòMÜ: D€–€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetAnimationEnabled(SbBool onOrOff)SbBoolisAnimationEnabled()}TmMÜoNÜ) "€¨€”‘€‚A€‚ÿEnable/disable the spinning animation feature of the viewer (enabled by default).b.òMÜÑNÜ4 8€\€T”A‚S~‚A€ƒ‚㑶p6‰ƒ‚ÿvoidstopAnimating()SbBoolisAnimating()VoNÜPOÜ) "€¬€”‘€‚A€‚ÿStop animation, if it is occurring, and query if the viewer is currently animating.3 ÑN܃OÜ& €€‚A€‚ÿRESOURCES ¢gPOÜ1ƒÜ; D€Ï€”‘€‚A€‚ÿ!!------------------------------------------------ !! PreferenceƒOÜ1ƒÜ†ÃÛs for Examiner Viewer !!------------------------------------------------ *IvFormExaminer1.IvEnableSpinAnimation.labelString: Enable spin animation *IvFormExaminer1.IvShowPointOfRotationAxes.labelString: Show point of rotation axes *IvFormExaminer1.IvAxesSize.labelString: axes size *IvFormExaminer1.IvPixels.labelString: pixels !!------------------------------------------------ !! Decorations for Examiner Viewer !! !!------------------------------------------------ *IvExamTitle.labelString: Examiner Viewer *IvExamPrefTitle.labelString: Examiner Viewer Preference Sheet *IvExamPopupTitle.labelString: Examiner Viewer *IvExamIconTitle.labelString: Examiner Viewer *IvExamRotx.labelString: Rotx *IvExamRoty.labelString: Roty *IvExamZoom.labelString: Zoom *IvExamDolly.labelString: Dolly.ƒOÜ_ƒÜ& €€‚A€‚ÿUSAGEF1ƒÜ¥ƒÜ) "€:€”‘€‚A€‚ÿ(For 3-button mouse only.)Y-_ƒÜþƒÜ, (€Z€”‘€‚A€€‚ÿLeft Mouse: Rotate the virtual trackball.tG¥ƒÜr„Ü- *€Ž€”‘€‚A€€‚ÿMiddle Mouse orCtrl + Left Mouse: Translate up, down, left, right. sþƒÜ…Ü- *€æ€”‘€‚A€€‚ÿCtrl + Middle Mouse orLeft + Middle Mouse: Dolly in and out (gets closer to and further away from the object).«r„ܽ…Ü, (€þ€”‘€‚A€€‚ÿ + Left Mouse: Alternative to the Seek button. Press (but do not hold down) the key, then click on a target object. Q%…܆Ü, (€J€”‘€‚A€€‚ÿRight Mouse: Open the popup menu.U(½…Üc‡Ü- (€Q€”‘€‚¥€€‚ÿALT: When the viewer is in selection (a.k.a. pick) mode, pressing and holding the ALT key temporarily switches the viewer to viewing mode. When the ALT key is released, the viewer returns to selection mode. Note: If any of the mouse buttons are currently depressed, the ALT key has no effect.1 †Ü”‡Ü& €€‚¥€‚ÿSEE ALSOSÏc‡ÜçˆÜ„ Ö€Ÿ€”‘€‚¥ãè;€‰€€ãµGi^‰€ã®ö¿÷€‰€ã-áO€ã{ç1€‰€ã³^ÖЀ‰€ãá¿" €‰€㛩€‰‚ÿExaminer Viewer (illustration and additional info on mouse buttons), SoXtFullViewer, SoXtViewer, SoXtComponent, SoXtRenderArea, SoXtWalkViewer, SoXtFlyViewer, SoXtPlaneViewer> ”‡Ü%‰Ü1y2%‚Í~‡º@%‰ÜZ‰Ü“JÝSoXtFlyViewer5çˆÜZ‰Ü% € €ˆˆ€‚ÿSoXtFlyViewer*%‰Ü„‰Ü# €€€‚ÿNAME|VZ‰ÜŠÜ& €¬€”‘€€‚ÿSoXtFlyViewer - viewer component for flying through space, with a constant world up3„‰Ü3ŠÜ# € €€‚ÿINHERITS FROMŠÜ4‹Ür ²€€”‘€ã-áO€ã‰2쀉€ã{ç1€‰€ã®ö¿÷€‰€ãµGi^€‰€ãl>‡Ï€‰€€€‚ÿSoXtComponent > SoXtGLWidget > SoXtRenderArea > SoXtViewer > SoXtFullViewer > SoXtConstrainedViewer > SoXtFlyViewer. 3ŠÜb‹Ü# €€€‚ÿSYNOPSIS~T4‹Üà‹Ü* $€¨€”‘€€‚€‚ÿ#include Methods from class SoXtFlyViewer: Æb‹ÜëŒÜE X€€T”A‚S~‚A€ƒã‘¶p6‰ãµGi^‰ã®ö¿÷‰‚ƒ‚ÿSoXtFlyViewer(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoXtFullViewer::BuildFlag flag = BUILD_ALL,SoXtViewer::Type type = BROWSER)~SoXtFlyViewer()].à‹ÜHÜ/ .€\€”‘€‚A€ãl>‡Ï‰‚ÿMethods from class SoXtConstrainedViewer:ŒRëŒÜÔÜ: D€¤€T”A‚S~‚A€ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ÿvoidsetUpDirection(const SbVec3f &newUpDirection)SbVec3fgetUpDirection()V'HÜ*ŽÜ/ .€N€”‘€‚A€ãµGi^‰‚ÿMethods from class SoXtFullViewer:ôšÔÜ*ÀÜZ ‚€5€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()voidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()WidgetgetAppPushButtonParent() constvoidaddAppPushButton(Widget newButton)voidinsertAppPushButton(Widget newButton,int index)voidremoveAppPushButton(Widget oldButton)intfindAppPushButton(Widget oldButton)intlengthAppPushButton()*ŽÜ*ÀÜçˆÜWidgetgetRenderAreaWidget()R#*ŽÜ|ÀÜ/ .€F€”‘€‚A€ã®ö¿÷‰‚ÿMethods from class SoXtViewer:WÑ*ÀÜÓÂ܆ Ú€£€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒã®ö¿÷‰ã®ö¿÷‰‚ã®ö¿÷‰ƒã®ö¿÷‰‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoXtViewer::DrawType type,SoXtViewer::DrawStyle style)SoXtViewer::DrawStylegetDrawStyle(SoXtViewer::DrawType type)—|ÀÜåÄÜ{ Ä€/€T”A‚S~‚A€ƒã®ö¿÷‰‚ã®ö¿÷‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBufferingType(SoXtViewer::BufferType type)SoXtViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual void setCursorEnabled(SbBool onOrOff) SbBool isCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()ÊÓÂÜÇÜQ p€•€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetStereoOffset(float dist)floatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoXtViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidcopyView(Time eventTime).ßåÄÜ.ÉÜO l€¿€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidpasteView(Time eventTime)virtual voidrecomputeSceneSize() voidsetDecimationStrategy(DecimationStrategy strategy) DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal) int32_tgetGoalNumberOfTriangles() voidsetGoalFramesPerSecond(float goal) floatgetGoalFramesPerSecond() voidsetFixedPercentage(float percent) floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff) SbBoolisFullRenderingWhenStill() p0ÇÜžÊÜ@ N€a€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolisStillNow() voidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData) voidsetNumSamples(int numFrames) intgetNumSamples() voidsetDecimationPercentageCallback (SoXtViewerDecimationPercentageCB *callback,void *userData = NULL) floatgetCurrentDecimationPercentage() V'.ÉÜôÊÜ/ .€N€”‘€‚A€ã{ç1‰‚ÿMethods from class SoXtRenderArea:$³žÊÜÍÜq °€g€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãsJY‰‚ƒãsJY‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoXtDevice *)voidunregisterDevice(SoXtDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «ôÊÜ$ÏÜa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤ÍÜHÝt ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &$ÏÜHÝçˆÜnumPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)6Ú$ÏÜ~Ý\ †€µ€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoXtRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºWHÝ8Ýc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constT%~ÝŒÝ/ .€J€”‘€‚A€ã‰2쉂ÿMethods from class SoXtGLWidget: Á8ݬÝ_ Œ€ƒ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()WidgetgetNormalWindow()WidgetgetOverlayWindow()GLXContextgetNormalContext()GLXContextgetOverlayContext()WidgetgetNormalWidget()WidgetgetOverlayWidget()virtual voidsetNormalVisual(XVisualInfo *vis)XVisualInfo *getNormalVisual()virtual voidsetOverlayVisual(XVisualInfo *vis)XVisualInfo *getOverlayVisual()ždŒÝJÝ: D€È€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag) SbBoolisDrawToFrontBufferEnable() const U&¬ÝŸÝ/ .€L€”‘€‚A€ã-áOÿMethods from class SoXtComponent:=ÛJÝÜ Ýb ’€·€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()WidgetgetWidget() constSbBoolisTopLevelShell() constWidgetgetShellWidget() constWidgetgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()Display *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL)­wŸ݉ Ý6 <€î€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w)const char *getWidgetName() constconst char *getClassName() const4Ü Ý½ Ý& €€‚A€‚ÿDESCRIPTIONf‰ ÝM Ý* "€Í€”‘€‚A€‚ÿFly Viewer - this viewer is intended to simulate flight through space, with a constant world up direction. The viewer only constrains the camera to keep the user from flying upside down. No mouse buttons need to be pressed in order to fly. The mouse position is used only for steering, while mouse clicks are used to increase or decrease the viewer speed.ÿÕ½ ÝLÝ* "€«€”‘€‚A€‚ÿThe viewer allows you to tilt your head up/down/right/left and move in the direction you are looking (forward or backward). The viewer also supports seek to quickly move the camera to a desired object or point.0 M Ý|Ý& €€‚A€‚ÿMETHODS ÆL݇ÝE X€€T”A‚S~‚A€ƒã‘¶p6‰ãµGi^‰ã®ö¿÷‰‚ƒ‚ÿSoXtFlyViewer(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoXtFullViewer::BuildFlag flag = BUILD_ALL,SoXtViewer::Type type = BROWSER)~SoXtFlyViewer()Å•|ÝX@Ý0 .€+€”‘€‚A€€€‚ÿConstructor and destructor which specifies the viewer type. Please refer‡ÝX@ÝçˆÜ to the SoXtViewer reference page for a description of the viewer types.3 ‡Ý‹@Ý& €€‚A€‚ÿRESOURCES XX@ÝãCÝ< F€9€”‘€‚A€‚ÿ!!------------------------------------------------ !! Decorations for Fly Viewer !! !!------------------------------------------------ *IvFlyTitle.labelString: Fly Viewer *IvFlyPrefTitle.labelString: Fly Viewer Preference Sheet *IvFlyPopupTitle.labelString: Fly Viewer *IvFlyIconTitle.labelString: Fly Viewer !! Same for Walk Viewer !! *IvFlyWalkRotate.labelString: Rotate !! Same for Walk Viewer !! *IvFlyWalkTilt.labelString: Tilt !! Same for Walk Viewer !! *IvFlyWalkDolly.labelString: Dolly !!------------------------------------------------ !! Preferences for Fly Viewer !! !!------------------------------------------------ *FlyPreference.FlyingSpeed.labelString: Flying speed: *FlyPreference.Increase.labelString: increase *FlyPreference.Decrease.labelString: decrease.‹@ÝDÝ& €€‚A€‚ÿUSAGEFãCÝWDÝ) "€:€”‘€‚A€‚ÿ(For 3-button mouse only.)T(DÝ«DÝ, (€P€”‘€‚A€€‚ÿLeft Mouse: Click to increase speed.ª~WDÝUEÝ, (€ü€”‘€‚A€€‚ÿ + Left Mouse: Alternative to the Seek button. Press (but do not hold down) the key, then click on a target object.೫DÝ5FÝ- (€g€”‘€‚A€€‚ÿ + Left Mouse: Press (but do not hold down) the key, then click on a target object to set the "up" direction to the surface normal. By default +y is the "up" direction.V*UEÝ‹FÝ, (€T€”‘€‚A€€‚ÿMiddle Mouse: Click to decrease speed.i=5FÝôFÝ, (€z€”‘€‚A€€‚ÿLeft and Middle Mouse: Click both simultaneously to stop.uI‹FÝiGÝ, (€’€”‘€‚A€€‚ÿCtrl: Hold the key down to temporarily stop and rotate the viewpoint.Q%ôFݺGÝ, (€J€”‘€‚A€€‚ÿRight Mouse: Open the popup menu.U(iGÝIÝ- (€Q€”‘€‚A€€‚ÿALT: When the viewer is in selection (a.k.a. pick) mode, pressing and holding the ALT key temporarily switches the viewer to viewing mode. When the ALT key is released, the viewer returns to selection mode. Note: If any of the mouse buttons are currently depressed, the ALT key has no effect.1 ºGÝ@IÝ& €€‚A€‚ÿSEE ALSOSÏIÝ“JÝ„ Ö€Ÿ€”‘€‚Aã§í߀‰€€ãµGi^‰€ã®ö¿÷€‰€ã-áO€ã{ç1€‰€ã³^ÖЀ‰€ã(’€‰€㛩€‰‚ÿFly Viewer (illustration and additional info on mouse buttons), SoXtFullViewer, SoXtViewer, SoXtComponent, SoXtRenderArea, SoXtWalkViewer, SoXtExaminerViewer, SoXtPlaneViewer?@IÝÒJÝ1Ç>²¹•€¼AÒJÝKÝKDÞSoXtFullViewer6“JÝKÝ% €"€ˆˆ€‚ÿSoXtFullViewer*ÒJÝ2KÝ# €€€‚ÿNAME}WKݯKÝ& €®€”‘€€‚ÿSoXtFullViewer - base viewer class which adds a decoration around the rendering area32KÝâKÝ# € €€‚ÿINHERITS FROM¸_¯KÝšLÝY ‚€¾€”‘€ã-áO€ã‰2쀉€ã{ç1€‰€ã®ö¿÷€‰€€€‚ÿSoXtComponent > SoXtGLWidget > SoXtRenderArea > SoXtViewer > SoXtFullViewer. âKÝÈLÝ# €€€‚ÿSYNOPSISX2šLÝ MÝ& €d€”‘€€‚ÿ#include VÈLÝvNÝU x€€T”A‚S~‚A€ƒ€ƒ€€ƒ€€ƒ€€ƒ€€‚ÿenum BuildFlag{SoXtFullViewer::BUILD_NONEDoesn't build anything extraSoXtFullViewer::BUILD_DECORATIONBuild the decoration onlySoXtFullViewer::BUILD_POPUPBuild the popup menu onlySoXtFullViewer::BUILD_ALLBuild everything by default}N% MÝÄNÝ) "€J€”‘€‚A€‚ÿMethods from class SoXtFullViewer:ôšvNÝÄ€ÝZ ‚€5€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()voidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()WidgetgetAppPushButtonParent() constvoidaddAppPushButton(Widget newButton)voidinseÄNÝĀݓJÝrtAppPushButton(Widget newButton,int index)voidremoveAppPushButton(Widget oldButton)intfindAppPushButton(Widget oldButton)intlengthAppPushButton()WidgetgetRenderAreaWidget()R#ÄNÝÝ/ .€F€”‘€‚A€ã®ö¿÷‰‚ÿMethods from class SoXtViewer:WÑÄ€ÝmƒÝ† Ú€£€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒã®ö¿÷‰ã®ö¿÷‰‚ã®ö¿÷‰ƒã®ö¿÷‰‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoXtViewer::DrawType type,SoXtViewer::DrawStyle style)SoXtViewer::DrawStylegetDrawStyle(SoXtViewer::DrawType type)—Ý…Ý{ Ä€/€T”A‚S~‚A€ƒã®ö¿÷‰‚ã®ö¿÷‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBufferingType(SoXtViewer::BufferType type)SoXtViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual void setCursorEnabled(SbBool onOrOff) SbBool isCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()ÊmƒÝš‡ÝQ p€•€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetStereoOffset(float dist)floatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoXtViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidcopyView(Time eventTime).ß…ÝȉÝO l€¿€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidpasteView(Time eventTime)virtual voidrecomputeSceneSize() voidsetDecimationStrategy(DecimationStrategy strategy) DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal) int32_tgetGoalNumberOfTriangles() voidsetGoalFramesPerSecond(float goal) floatgetGoalFramesPerSecond() voidsetFixedPercentage(float percent) floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff) SbBoolisFullRenderingWhenStill() m.š‡Ý5‹Ý? L€]€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolisStillNow() voidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData) voidsetNumSamples(int numFrames) intgetNumSamples() voidsetDecimationPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL) floatgetCurrentDecimationPercentage() V'ȉ݋‹Ý/ .€N€”‘€‚A€ã{ç1‰‚ÿMethods from class SoXtRenderArea:$³5‹Ý¯Ýq °€g€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãsJY‰‚ƒãsJY‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoXtDevice *)voidunregisterDevice(SoXtDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «‹‹Ý»Ýa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤¯ÝßÁÝt ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã»ÝßÁÝ“JÝ‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)6Ú»ÝÄÝ\ †€µ€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoXtRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºWßÁÝÏÅÝc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constT%ÄÝ#ÆÝ/ .€J€”‘€‚A€ã‰2쉂ÿMethods from class SoXtGLWidget: ÁÏÅÝCÈÝ_ Œ€ƒ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()WidgetgetNormalWindow()WidgetgetOverlayWindow()GLXContextgetNormalContext()GLXContextgetOverlayContext()WidgetgetNormalWidget()WidgetgetOverlayWidget()virtual voidsetNormalVisual(XVisualInfo *vis)XVisualInfo *getNormalVisual()virtual voidsetOverlayVisual(XVisualInfo *vis)XVisualInfo *getOverlayVisual()žd#ÆÝáÈÝ: D€È€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag) SbBoolisDrawToFrontBufferEnable() const U&CÈÝ6ÉÝ/ .€L€”‘€‚A€ã-áOÿMethods from class SoXtComponent:=ÛáÈÝsËÝb ’€·€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()WidgetgetWidget() constSbBoolisTopLevelShell() constWidgetgetShellWidget() constWidgetgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()Display *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL)­w6ÉÝ ÌÝ6 <€î€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w)const char *getWidgetName() constconst char *getClassName() const4sËÝTÌÝ& €€‚A€‚ÿDESCRIPTIONק ÌÝ+ÎÝ0 .€O€”‘€‚A€€€‚ÿThis is a base class used by all viewer components. The class adds a decoration around the rendering area that includes thumb wheels, a zoom slider and push buttons. This base class also includes a viewer popup menu and a preference sheet with generic viewing functions. The constructors for the various subclasses of SoXtFullViewer provide a flag for specifying whether the decoration and popup menus should be built.0 TÌÝ[ÎÝ& €€‚A€‚ÿMETHODSy?+ÎÝÔÎÝ: D€~€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()¤{[ÎÝxÏÝ) "€ö€”‘€‚A€‚ÿShow/hide the viewer component trim (default on). See the viewer constructor to prevent the decoration from being built.‰OÔÎÝ Þ: D€ž€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()xÏÝ Þ“JÝ«xÏݸÞ* "€€”‘€‚A€‚ÿEnable/disable the viewer popup menu (default enabled). See the viewer constructor to prevent the popup menu from being built.T( Þ Þ, (€P€T”A‚S~‚A€ƒ‚ÿWidgetgetAppPushButtonParent() const滸ÞòÞ+ $€w€”‘€‚A€‚ÿReturns the parent widget, which is needed when creating new buttons. Note: that if the decoration is not created in the constructor, this will be NULL until the decoration is shown. Í ÞõÞ6 :€›€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidaddAppPushButton(Widget newButton)voidinsertAppPushButton(Widget newButton,int index)voidremoveAppPushButton(Widget oldButton)intfindAppPushButton(Widget oldButton)intlengthAppPushButton()VòÞvÞ+ $€­€”‘€‚A€‚ÿAdd/remove push buttons for the application, which will be placed in the left hand side decoration trim. Adding buttons appends them to the end of the list, while inserting them places them at the desired index. Note: the button pixmaps should be 24-by-24 pixels size to nicely fit into the decoration trim like the other viewer buttons. L õÞÂÞ, (€@€T”A‚S~‚A€ƒ‚ÿ WidgetgetRenderAreaWidget()K"vÞ Þ) "€D€”‘€‚A€‚ÿReturns the render area widget.3 ÂÞ@Þ& €€‚A€‚ÿRESOURCES ½k Þý ÞR r€×€”‘€‚A€‚ÿ!!------------------------------------------------ !! FUNCTIONS MENU !!------------------------------------------------ *IvMenu.IvFunctions1.labelString: Functions *IvFunctions2.IvHelp.labelString: Help *IvFunctions2.IvHome.labelString: Home *IvFunctions2.IvSetHome.labelString: Set Home *IvFunctions2.IvViewAll.labelString: View All *IvFunctions2.IvSeek.labelString: Seek *IvFunctions2.IvCopyView.labelString: Copy View *IvFunctions2.IvPasteView.labelString: Paste View !!------------------------------------------------ !! DRAW STYLE MENU !!------------------------------------------------ *IvMenu.IvDrawStyle1.labelString: Draw Style *IvDrawStyle2.IvAsIs.labelString: as is *IvDrawStyle2.IvHiddenLine.labelString: hidden line *IvDrawStyle2.IvNoTexture.labelString: no texture *IvDrawStyle2.IvLowResolution.labelString: low resolution *IvDrawStyle2.IvWireFrame.labelString: wireframe *IvDrawStyle2.IvPoints.labelString: points *IvDrawStyle2.IvBoundingBoxNoDepth.labelString: bounding box ( no depth ) *IvDrawStyle2.IvMoveSameAsStill.labelString: move same as still *IvDrawStyle2.IvMoveNoTexture.labelString: move no texture. *IvDrawStyle2.IvMoveLowRes.labelString: move low res *IvDrawStyle2.IvMoveWireFrame.labelString: move wireframe *IvDrawStyle2.IvMoveLowResWireFrameNoDepth.labelString: move low res wire frame ( no depth ) *IvDrawStyle2.IvMovePoints.labelString: move points *IvDrawStyle2.IvMoveLowResPointsNoDepth.labelString: move low res points ( no depth ) *IvDrawStyle2.IvMoveBoundingBoxNoDepth.labelString: move bounding box ( no depth ) *IvDrawStyle2.IvSingleBuffer.labelString: single buffer *IvDrawStyle2.IvDoubleBuffer.labelString: Double buffer *IvDrawStyle2.IvInteractiveBuffer.labelString: interactive buffer !!------------------------------------------------ *IvMenu.IvViewing.labelString: Viewing !!------------------------------------------------ *IvMenu.IvDecoration.labelString: Decoration !!------------------------------------------------ *IvMenu.IvHeadlight.labelString: Headlight !!------------------------------------------------ *IvMenu.IvPreferences.labelString: Preferences ... Ï@ÞCÞ@ N€Ÿ €”‘€‚A€‚ÿ!!------------------------------------------------ !! PREFERENCES !!------------------------------------------------ *IvFormPreference1.IvSeekAnimationTime.labelString: Seek animation time *IvFormPreference1.IvSeconds.labelString: seconds *IvFormPreference1.IvSeekTo.labelString: Seek to: *IvFormPreference1.IvPoint.labelString: point *IvFormPreference1.IvObject.labelString: object *IvFormPreference2.IvSeekDistance.labelString: Seek distancý ÞCÞ“JÝe: *IvFormPreference2.IvPercentage.labelString: percentage *IvFormPreference2.IvAbsolute.labelString: absolute *IvZoomForm.IvCameraZoom.labelString: Camera zoom *IvZoomForm.IvZoomSliderRangesFrom.labelString: Zoom slider ranges from: *IvZoomForm.IvTo.labelString: to: *IvZoomForm.IvZoomSlider.labelString: Zoom slider *IvZoomForm.IvZoomField.labelString: Zoom field *IvZoomForm.IvZoomFrom.labelString: Zoom from *IvZoomForm.IvZoomTo.labelString: Zoom to *IvFormPreference3.IvAutoClippingPlanes.labelString: Auto clipping planes *IvFormPreference4.IvStereoViewing.labelString: Stereo Viewing *IvFormPreference6.IvNearPlane.labelString: near plane *IvFormPreference6.IvFarPlane.labelString: far plane *IvStereoThumbForm.IvCameraRotation.labelString: Camera rotation 1 ý ÞICÞ& €€‚A€‚ÿSEE ALSOŠCÞKDÞx ¾€€”‘€‚Aã®ö¿÷€‰€ã-áO€ã{ç1€‰€ã(’€‰€ã³^ÖЀ‰€ãá¿" €‰€㛩€‰‚ÿSoXtViewer, SoXtComponent, SoXtRenderArea, SoXtExaminerViewer, SoXtWalkViewer, SoXtFlyViewer, SoXtPlaneViewer= ICÞˆDÞ1ð~‡º_½BˆDÞ¼DÞ+‰ÞSoXtGLWidget4KDÞ¼DÞ% €€ˆˆ€‚ÿSoXtGLWidget*ˆDÞæDÞ# €€€‚ÿNAMEU/¼DÞ;EÞ& €^€”‘€€‚ÿSoXtGLWidget -component for OpenGL rendering3æDÞnEÞ# € €€‚ÿINHERITS FROMY$;EÞÇEÞ5 :€H€”‘€ã-áO€€€‚ÿSoXtComponent > SoXtGLWidget. nEÞõEÞ# €€€‚ÿSYNOPSIStJÇEÞiFÞ* $€”€”‘€€‚€‚ÿ#include Methods from class SoXtGLWidget: ÁõEÞ‰HÞ_ Œ€ƒ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()WidgetgetNormalWindow()WidgetgetOverlayWindow()GLXContextgetNormalContext()GLXContextgetOverlayContext()WidgetgetNormalWidget()WidgetgetOverlayWidget()virtual voidsetNormalVisual(XVisualInfo *vis)XVisualInfo *getNormalVisual()virtual voidsetOverlayVisual(XVisualInfo *vis)XVisualInfo *getOverlayVisual()ždiFÞ'IÞ: D€È€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag) SbBoolisDrawToFrontBufferEnable() const U&‰HÞ|IÞ/ .€L€”‘€‚A€ã-áOÿMethods from class SoXtComponent:EÝ'IÞÁKÞh ž€»€T”A‚S~‚A€ƒ‚ƒ€‚㑶p6€‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()WidgetgetWidget() constSbBoolisTopLevelShell() constWidgetgetShellWidget() constWidgetgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()Display *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL)­w|IÞnLÞ6 <€î€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w)const char *getWidgetName() constconst char *getClassName() const4ÁKÞ¢LÞ& €€‚A€‚ÿDESCRIPTIONŸinLÞANÞ6 :€Ó€”‘€‚A€€€€€‚ÿThis abstract base class provides a C++ wrapper around the GLwMDraw window object. It allows OpenGL rendering to be performed within a Motif window and is used by the SoXtRenderArea. SoXtGLWidget uses a parent window with two separate GLwMDraw window objects (one for single and one for double buffering), with routines to return the appropriate windows.É“¢LÞ OÞ6 :€'€”‘€‚A€€€€€‚ÿSubclasses only need to redefine the redraw() routine for rendering and processEvent() routine if they are interested in receiving X events.0 ANÞ:OÞ& €€‚A€‚ÿMETHODSw= OÞ±OÞ: D€z€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constÛ«:OÞ˜€Þ0 .€W€”‘€‚A€€€‚ÿShow and hide the border aroun±OÞ˜€ÞKDÞd the OpenGL windows (thickness 3). Default is no border (FALSE). (The SoXtRenderArea subclass defaults turns the border on by default.)}C±OÞÞ: D€†€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()Úª˜€ÞïÞ0 .€U€”‘€‚A€€€‚ÿRoutine which dynamically changes between single and double buffering. Default is double buffer off. (The SoXtRenderArea subclass makes it double buffer by default.)œbÞ‹‚Þ: D€Ä€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag)SbBoolisDrawToFrontBufferEnable() constºïÞEƒÞ* "€!€”‘€‚A€‚ÿSet/query drawing to the front buffer. Controls drawing to the front buffer when an obscured portion of the window is exposed. Default: TRUE.䧋‚Þ)„Þ= H€O€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ€‚€ƒ‚ÿWidgetgetNormalWindow()WidgetgetOverlayWindow()GLXContextgetNormalContext()GLXContextgetOverlayContext()WidgetgetNormalWidget()WidgetgetOverlayWidget()Û®EƒÞ…Þ- (€]€”‘€‚A€€‚ÿGet the current normal and overlay GL windows, contexts and widgets, which are needed as arguments to glXMakeCurrent() when doing drawing in the normal or overlay planes.›l)„ÞŸ…Þ/ .€Ø€”‘€‚A€€€‚ÿNote1: These should not be cached by users because they will change as single/double buffering changes.ꨅމ†ÞB R€Q€T”A‚S~‚A€ƒ€‚€ƒ‚ƒ€‚€ƒ€‚ÿvirtual voidsetNormalVisual(XVisualInfo *vis) XVisualInfo *getNormalVisual()virtual voidsetOverlayVisual(XVisualInfo *vis)XVisualInfo *getOverlayVisual()柅ޙˆÞ* "€Í€”‘€‚A€‚ÿSpecify exactly what the visual should be for the normal and overlay window. This allows the user to create all possible visual supported by OpenGL. The XVisualInfo structure should be a valid OpenGL visual returned by glXChooseVisual(). This structure will be copied by the SoXtGLWidget; the application is responsible for freeing the visual info with XFree() when done. (The methods for setting the visual are virtual so that derived classes can know when the visual is changing.) 1 ‰†ÞʈÞ& €€‚A€‚ÿSEE ALSOa&™ˆÞ+‰Þ; F€L€”‘€‚Aã-áO€ã{ç1€‰‚ÿSoXtComponent, SoXtRenderArea?ʈÞj‰Þ1 •€¼g½Cj‰Þ ‰Þ†ÂÞSoXtInputFocus6+‰Þ ‰Þ% €"€ˆˆ€‚ÿSoXtInputFocus*j‰ÞʉÞ# €€€‚ÿNAME[5 ‰Þ%ŠÞ& €j€”‘€€‚ÿSoXtInputFocus - reports input focus change events3ʉÞXŠÞ# € €€‚ÿINHERITS FROMH%ŠÞ ŠÞ) "€>€”‘€€€‚ÿSoXtDevice > SoXtInputFocus. XŠÞΊÞ# €€€‚ÿSYNOPSIS€V ŠÞN‹Þ* $€¬€”‘€€‚€‚ÿ#include Methods from class SoXtInputFocus:~PΊÞÌ‹Þ. ,€ €T”A‚S~‚A€ƒ‚ƒ‚ÿSoXtInputFocus(EventMask mask = SO_XT_ALL_FOCUS_EVENTS) ~SoXtInputFocus() R#N‹ÞŒÞ/ .€F€”‘€‚A€ãsJY‰‚ÿMethods from class SoXtDevice:r&Ì‹ÞÞL f€M€T”A‚S~‚A€ƒ‚ƒ‚ã2™|—‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvirtual voidenable(Widget w,XtEventHandler f,XtPointer data,Widget win = NULL) virtual voiddisable(Widget w,XtEventHandler f,XtPointer data) virtual const SoEvent *translateEvent(XEvent *xevent) voidsetWindowSize(const SbVec2s &size) const SbVec2s &getWindowSize() const 4ŒÞÄÞ& €€‚A€‚ÿDESCRIPTION§}ÞkÞ* "€û€”‘€‚A€‚ÿThis class reports input focus change events (i.e. when the cursor crosses into or out of the window). There are no input focus event in Open Inventor, so this always returns NULL when asked to translate events. When this class is registered on a render area, the render area will receive X input focus change events. (This class is extensively employed by the viewer classes.) 0 ÄÞ›Þ& €€‚A€‚ÿMETHODS~PkÞ%ÀÞ. ,€ €T”A‚S~‚A€ƒ‚ƒ‚ÿSoXtInputFocus(EventMask mask = SO_XT_ALL_FOCUS_EVENT›Þ%ÀÞ+‰ÞS) ~SoXtInputFocus() º›ÞßÀÞ* "€!€”‘€‚A€‚ÿConstructor and destructor. To the constructor, pass which input focus events you are interested in as a bitwise OR of the following values: ^5%ÀÞ=ÁÞ) "€j€”‘€‚A€‚ÿEnterWindowMask - Input focus entered the window. Z1ßÀÞ—ÁÞ) "€b€”‘€‚A€‚ÿLeaveWindowMask - Input focus left the window €W=ÁÞÂÞ) "€®€”‘€‚A€‚ÿOr simply pass the defined value SO_XT_ALL_FOCUS_EVENTS for all input focus events. 1 —ÁÞHÂÞ& €€‚A€‚ÿSEE ALSO>ÂÞ†ÂÞ/ .€€”‘€‚AãsJY€‰‚ÿSoXtDevice= HÂÞÃÂÞ1¯_½¨†½DÃÂÞ÷ÂÞuËÞSoXtKeyboard4†ÂÞ÷ÂÞ% €€ˆˆ€‚ÿSoXtKeyboard*ÃÂÞ!ÃÞ# €€€‚ÿNAMEf@÷ÂÞ‡ÃÞ& €€€”‘€€‚ÿSoXtKeyboard - translates and reports events for the keyboard3!ÃÞºÃÞ# € €€‚ÿINHERITS FROMV!‡ÃÞÄÞ5 :€B€”‘€ãsJY€‰€€€‚ÿSoXtDevice > SoXtKeyboard. ºÃÞ>ÄÞ# €€€‚ÿSYNOPSISÄ•ÄÞÅÞ/ ,€+€”‘€€‚€‚€‚ÿ#include #define SO_XT_ALL_KEYBOARD_EVENTS (KeyPressMask | KeyReleaseMask)Methods from class SoXtKeyboard:{M>ÄÞ}ÅÞ. ,€š€T”A‚S~‚A€ƒ‚ƒ‚ÿSoXtKeyboard(EventMask mask = SO_XT_ALL_KEYBOARD_EVENTS)~SoXtKeyboard()R#ÅÞÏÅÞ/ .€F€”‘€‚A€ãsJY‰‚ÿMethods from class SoXtDevice:p$}ÅÞ?ÇÞL f€I€T”A‚S~‚A€ƒ‚ƒ‚ã2™|—‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvirtual voidenable(Widget w,XtEventHandler f,XtPointer data,Widget win = NULL)virtual voiddisable(Widget w,XtEventHandler f,XtPointer data)virtual const SoEvent *translateEvent(XAnyEvent *xevent)voidsetWindowSize(const SbVec2s &size)const SbVec2s &getWindowSize() const4ÏÅÞsÇÞ& €€‚A€‚ÿDESCRIPTION¢s?ÇÞÈÞ/ .€æ€”‘€‚A€€€‚ÿThis class manages events generated by the keyboard, including key press and release events (SoKeyboardEvent).0 sÇÞEÈÞ& €€‚A€‚ÿMETHODS{MÈÞÀÈÞ. ,€š€T”A‚S~‚A€ƒ‚ƒ‚ÿSoXtKeyboard(EventMask mask = SO_XT_ALL_KEYBOARD_EVENTS)~SoXtKeyboard()¶ŒEÈÞvÉÞ* "€€”‘€‚A€‚ÿConstructor and destructor. To the constructor, pass which keyboard events you are interested in as a bitwise OR of the following values:M$ÀÈÞÃÉÞ) "€H€”‘€‚A€‚ÿKeyPressMask - Key press messagesQ(vÉÞÊÞ) "€P€”‘€‚A€‚ÿKeyReleaseMask - Key release messagesѧÃÉÞåÊÞ* "€O€”‘€‚A€‚ÿOr simply pass the defined value SO_XT_ALL_KEYBOARD_EVENTS for all keyboard events. The device will only report events of this type for the widget it is enabled on.1 ÊÞËÞ& €€‚A€‚ÿSEE ALSO_$åÊÞuËÞ; F€H€”‘€‚AãsJY€‰€ã“[ A€‰‚ÿSoXtDevice, SoKeyboardEventCËÞ¸ËÞ1 g½Þ¾E¸ËÞòËÞOßSoXtLightSliderSet:uËÞòËÞ% €*€ˆˆ€‚ÿSoXtLightSliderSet*¸ËÞÌÞ# €€€‚ÿNAMEtNòËÞÌÞ& €œ€”‘€€‚ÿSoXtLightSliderSet - component with Motif sliders for editing SoLight nodes3ÌÞÃÌÞ# € €€‚ÿINHERITS FROM SÌÞcÍÞM j€¦€”‘€ã-áO€ã.06΀‰€ãé^x´€‰€€€‚ÿSoXtComponent > SoXtSliderBase > SoXtSliderSet > SoXtLightSliderSet. ÃÌÞ‘ÍÞ# €€€‚ÿSYNOPSIS€VcÍÞÎÞ* $€¬€”‘€€‚€‚ÿ#include Methods from class SoXtLightSliderSet:Û‘ÍÞìÎÞ> J€;€T”A‚S~‚A€ƒã‘¶p6‰ã’n%9‰‚ƒ‚ÿSoXtLightSliderSet(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoNode *newEditNode = NULL)~SoXtLightSliderSet()Y*ÎÞEÏÞ/ .€T€”‘€‚A€ã.06Ή‚ÿMethods from class SoXtSliderSetBase:yEìÎÞ¾ÏÞ4 8€Š€T”A‚S~‚A€ƒ‚ã’n%9‰ƒ‚ÿvirtual voidsetNode(SoNode *newNode) SoNode *getNode() const V'EÏÞ ß/ .€N€”‘€‚A€ã-áOÿMethods from class¾ÏÞ ßuËÞ SoXtComponent: Kê¾ÏÞkßa €Õ€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow() virtual voidhide() SbBoolisVisible() WidgetgetWidget() const SbBoolisTopLevelShell() const WidgetgetShellWidget() const WidgetgetParentWidget() const voidsetSize(const SbVec2s &size) SbVec2sgetSize() Display *getDisplay() voidsetTitle(const char *newTitle) constchar * getTitle() const voidsetIconTitle(const char *newIconTitle) const char *getIconTitle() const voidsetWindowCloseCallback(SoXtComponentCB *func, void *data = NULL) °z ßß6 <€ô€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w) const char *getWidgetName() const const char *getClassName() const 4kßOß& €€‚A€‚ÿDESCRIPTION«ßúß* "€€”‘€‚A€‚ÿThis class is used to manipulate the intensity and color of an SoLight node using an arrangement of Motif sliders and buttons.0 Oß*ß& €€‚A€‚ÿMETHODSÜžúßß> J€=€T”A‚S~‚A€ƒã‘¶p6‰ã’n%9‰‚ƒ‚ÿSoXtLightSliderSet(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoNode *newEditNode = NULL)~SoXtLightSliderSet() …\*ß‹ß) "€¸€”‘€‚A€‚ÿConstructor and destructor. At construction time the light node to edit can be supplied. 2 ß½ß& €€‚A€‚ÿRESOURCES­{‹ßjß2 2€÷€”‘€‚A€‚ÿ!!------------------------------------------------ !! Light Slider Set !!------------------------------------------------ *IvLightSliderColor.labelString: COLOR *IvLightSliderRed.labelString: Red *IvLightSliderGreen.labelString: Green *IvLightSliderBlue.labelString: Blue *IvLightSliderIntensity1.labelString: INTENSITY *IvLightSliderIntensity2.labelString: Intensity 1 ½ß›ß& €€‚A€‚ÿSEE ALSO´UjßOß_ Ž€ª€”‘€‚Aãé^x´€‰€€ã.06Ή€€ã-áO€ãÇ Ø‰€€ã’n%9‰‚ÿSoXtSliderSet, SoXtSliderSetBase, SoXtComponent, SoLight, SoNodeC›ß’ß1¼#¨†½c¿F’ßÌß»†ßSoXtMaterialEditor:OßÌß% €*€ˆˆ€‚ÿSoXtMaterialEditor*’ßöß# €€€‚ÿNAMEtNÌßj ß& €œ€”‘€€‚ÿSoXtMaterialEditor - component which lets you edit a material interactively3öß ß# € €€‚ÿINHERITS FROM_*j ßü ß5 :€T€”‘€ã-áO€€€‚ÿSoXtComponent > SoXtMaterialEditor. ß* ß# €€€‚ÿSYNOPSIST.ü ß~ ß& €\€”‘€€‚ÿ#include Z* ßØ ßU x€ €T”A‚S~‚A€ƒãOjnĉ€‚€ƒ€ƒ€€ƒ€€€‚ÿtypedef voidSoXtMaterialEditorCB(void *userData,const SoMaterial *mtl)enum UpdateFrequency{SoXtMaterialEditor::CONTINUOUSSend updates with every mouse motionSoXtMaterialEditor::AFTER_ACCEPTOnly send updates after user hits accept button}R)~ ß* ß) "€R€”‘€‚A€‚ÿMethods from class SoXtMaterialEditor:=ãØ ßgßZ ‚€Ç€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ƒãOjnĉ‚ƒãNô—‰‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ÿSoXtMaterialEditor(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoXtMaterialEditor()voidattach(SoMaterial *material,int index = 0)voidattach(SoVRMLMaterial *material)voiddetach()SbBoolisAttached()voidaddMaterialChangedCallback(SoXtMaterialEditorCB *f,void *userData = NULL)voidremoveMaterialChangedCallback(SoXtMaterialEditorCB *f,void *userData = NULL)voidsetUpdateFrequency(SoXtMaterialEditor::UpdateFrequency freq)#Ö* ߊßM h€­€T”A‚S~‚A€ƒ‚ƒãOjnĉ‚ƒãNô—‰‚ãOjnĉƒ‚㑶p6‰ƒ‚ÿSoXtMaterialEditor::UpdateFrequencygetUpdateFrequency()voidsetMaterial(const SoMaterial &mtl)voidsetMaterial(const SoVRMLMaterial &mtl)const SoMaterial &getMaterial() constSbBoolisAttachedVRML()U&gßßß/ .€L€”‘€‚A€ã-áOÿMethods from class SoXtComponent:=ÛŠß(Bßb ’€·€T”Aßß(BßOß‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()WidgetgetWidget() constSbBoolisTopLevelShell() constWidgetgetShellWidget() constWidgetgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()Display *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL)­wßßÕBß6 <€î€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w)const char *getWidgetName() constconst char *getClassName() const4(Bß Cß& €€‚A€‚ÿDESCRIPTIONÑ¡ÕBßÚEß0 .€C€”‘€‚A€€€‚ÿThis class is used to edit the material properties of an SoMaterial node. The editor can also directly be used using callbacks instead of attaching it to a node. The component consists of a render area displaying a test sphere, some sliders, a set of radio buttons, and a menu. The sphere displays the current material being edited. There is one slider for each material coefficient. Those fields are ambient, diffuse, specular, emissive (all of which are colors); and transparency and shininess (which are scalar values). A color editor can be opened to edit the color slider base color. A material list displays palettes of predefined materials from which to choose.Ø® Cß²Fß* "€]€”‘€‚A€‚ÿThe editor can currently be attached to only one material at a time. Attaching two different materials will automatically detach the first one before attaching the second.0 ÚEßâFß& €€‚A€‚ÿMETHODSµ²Fß—Gß6 <€þ€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ÿSoXtMaterialEditor(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE)~SoXtMaterialEditor()GâFßÞGß) "€<€”‘€‚A€‚ÿConstructor and destructor.¨k—G߆Hß= J€Ö€T”A‚S~‚A€ƒãOjnĉ‚ƒãNô—‰‚ƒ‚ÿvoidattach(SoMaterial *material,int index = 0)voidattach(SoVRMLMaterial *material)voiddetach()XÞGßIß) "€°€”‘€‚A€‚ÿAttach/detach the editor to a material node and edit the material of the given index.J†HßQIß2 4€0€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisAttached()S*IߤIß) "€T€”‘€‚A€‚ÿReturns TRUE if the editor is attached.NQIßòIß2 4€8€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisAttachedVRML()¢y¤Iß”Jß) "€ò€”‘€‚A€‚ÿReturns TRUE if the attached material node is a VRML material. Not meaningful if the editor is not currently attached.Ö¥òIßjKß1 0€K€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidaddMaterialChangedCallback(SoXtMaterialEditorCB *f,void *userData = NULL)voidremoveMaterialChangedCallback(SoXtMaterialEditorCB *f,void *userData = NULL)õÅ”Jß_Lß0 .€‹€”‘€‚A€€€‚ÿAdditional way of using the material editor, by registering a callback which will be called whenever the material changes (check the UpdateFrequency to find when the callbacks will be called).¼jKßMß; D€€T”A‚S~‚A€ƒã«%¡‰‚ã«%¡‰ƒ‚ÿvoidsetUpdateFrequency(SoXtMaterialEditor::UpdateFrequency freq)SoXtMaterialEditor::UpdateFrequencygetUpdateFrequency()}N_LߘMß/ .€œ€”‘€‚A€€€‚ÿSets/gets the update frequency. See the UpdateFrequency enum declaration.ƃMß^NßC T€€T”A‚S~‚A€ƒãOjnĉ‚ƒãNô—‰‚ãOjnĉƒ‚ÿvoidsetMaterial(const SoMaterial &mtl)voidsetMaterial(const SoVRMLMaterial &mtl)const SoMaterial &getMaterial() consti@˜MßÇNß) "€€€”‘€‚A€‚ÿSet a new material value, and get the current material value.}D^NßDOß9 B€ˆ€T”A‚S~‚A㑶p6€‰ƒ‚€€‚ÿSbBoolisAttachedVRML()Is attached material a VRML material?3 ÇNßwOß& €€‚A€‚ÿRESOURCES \DOßß…ßJ b€% €”‘€‚A€€‚ÿ!!------------------------------------------------ !! MateriawOßß…ßOßl Editor !! !!------------------------------------------------ *IvMaterialEditorTitle.labelString: Material Editor *IvMaterialEditorIconTitle.labelString: Mat Editor *IvMaterialAmbientTitle.labelString: Material Ambient Color *IvMaterialDiffuseTitle.labelString: Material Diffuse Color *IvMaterialSpecularTitle.labelString: Material Specular Color *IvMaterialEmissiveTitle.labelString: -Material Emissive Color *IvMaterialEditorMaterial.labelString: Material / *IvMaterialEditorAmb.labelString: Amb / *IvMaterialEditorDiff.labelString: Diff / *IvMaterialEditorSpec.labelString: Spec / *IvMaterialEditorEmis.labelString: Emis / *IvMaterialEditorColor.labelString: Color *IvMEMenuBar.IvEdit.labelString: Edit *IvMEMenuBar*IvEditPullDown.IvMaterialList.labelString: Material List *IvMEMenuBar*IvEditPullDown.IvContinuous.labelString: Continuous *IvMEMenuBar*IvEditPullDown.IvManual.labelString: Manual *IvMEMenuBar*IvEditPullDown.IvCopy.labelString: Copy *IvMEMenuBar*IvEditPullDown.IvPaste.labelString: Paste *IvMEMenuBar*IvEditPullDown.IvHelp.labelString: Help *IvControls.IvEditColor.labelString: Edit Color *IvsliderForm.IvtextForm.IvAmb.labelString: Amb: *IvsliderForm.IvtextForm.IvDiff.labelString: Diff *IvsliderForm.IvtextForm.IvSpec.labelString: Spec *IvsliderForm.IvtextForm.IvEmis.labelString: Emis *IvsliderForm.IvtextForm.IvShininess.labelString: Shininess *IvsliderForm.IvtextForm.IvTransp.labelString: Transp: *IvMETop.IvAccept.labelString: Accept 1 wO߆ß& €€‚A€‚ÿSEE ALSO«Xß…ß»†ßS v€°€”‘€‚Aã-áO€ãå!X{€‰€ãÝÌ¿€‰€ãOjnÄ€‰‚ÿSoXtComponent, SoXtMaterialList, SoXtDirectionalLightEditor, SoMaterialA†ßü†ß1µÞ¾³„¿Gü†ß4‡ßIÆßSoXtMaterialList8»†ß4‡ß% €&€ˆˆ€‚ÿSoXtMaterialList*ü†ß^‡ß# €€€‚ÿNAMErL4‡ßЇß& €˜€”‘€€‚ÿSoXtMaterialList - component which lets you edit a material interactively3^‡ßˆß# € €€‚ÿINHERITS FROM](Їß`ˆß5 :€P€”‘€ã-áO€€€‚ÿSoXtComponent > SoXtMaterialList. ˆßŽˆß# €€€‚ÿSYNOPSISU,`ˆßãˆß) "€X€”‘€‚9€‚ÿ#include wJŽˆßZ‰ß- *€”€T”A‚S~‚A€ƒ‚ÿtypedef voidSoXtMaterialListCB(void *userData,const SoMaterial *mtl) P'ãˆßª‰ß) "€N€”‘€‚A€‚ÿMethods from class SoXtMaterialList:OZ‰ßùŠß> J€#€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ƒ‚ƒ‚ÿSoXtMaterialList(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,const char *dir = NULL) ~SoXtMaterialList() addCallback(SoXtMaterialListCB *f, void *userData = NULL) removeCallback(SoXtMaterialListCB *f,void *userData = NULL) V'ª‰ßO‹ß/ .€N€”‘€‚A€ã-áOÿMethods from class SoXtComponent: KêùŠßšßa €Õ€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow() virtual voidhide() SbBoolisVisible() WidgetgetWidget() const SbBoolisTopLevelShell() const WidgetgetShellWidget() const WidgetgetParentWidget() const voidsetSize(const SbVec2s &size) SbVec2sgetSize() Display *getDisplay() voidsetTitle(const char *newTitle) const char *getTitle() const voidsetIconTitle(const char *newIconTitle) const char *getIconTitle() const voidsetWindowCloseCallback(SoXtComponentCB *func, void *data = NULL) °zO‹ßJŽß6 <€ô€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w) const char *getWidgetName() const const char *getClassName() const 4šß~Žß& €€‚A€‚ÿDESCRIPTIONAJŽß¿ß* "€/€”‘€‚A€‚ÿThis class is used to choose an SoMaterial from palettes of predefined materials (for example, gold, silver, or bronze from the metal palette; emerald, pearl, or ruby from the stones palette). The chosen material is passed to callback functions registered with this component.0 ~Žß Àß& €€‚A€‚ÿMETHODS¿ß Àß»†ßÍ•¿ßÙÀß8 >€+€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ÿSoXtMaterialList(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,const char *dir = NULL) ~SoXtMaterialList() W ÀßZÂß* "€¯€”‘€‚A€‚ÿThe constructor is passed a directory name which serves as the home directory for the material palettes. You can have any number of palettes in this directory. A palette is a subdirectory that contains Open Inventor data files, where each file describes one material. Predefined Open Inventor materials are found in $OIVHOME/data/materials.¬|ÙÀßÃß0 0€ø€T”A‚S~‚A€ƒ‚ƒ‚ÿaddCallback(SoXtMaterialListCB *f,void *userData = NULL)removeCallback(SoXtMaterialListCB *f,void *userData = NULL) ÖZÂßÄß* "€­€”‘€‚A€‚ÿRegister functions that will be called whenever the user chooses a new material from the list. Each callback when invoked will be passed the userData pointer, along with a pointer to the newly selected material.3 Ãß9Äß& €€‚A€‚ÿRESOURCES >ÄßwÅß/ ,€€”‘€‚A€‚ÿ!!------------------------------------------------ !! Material List !! !!------------------------------------------------ *IvMaterialListTitle.labelString: Material List *IvMaterialListeIconTitle.labelString: Mat List *IvMLMenuBar*IvPalettes.labelString: Palettes1 9ÄߨÅß& €€‚A€‚ÿSEE ALSO¡NwÅßIÆßS v€œ€”‘€‚Aã-áO€€ã?/}¦‰€€ãOjnĉ€€ã«%¡‰‚ÿSoXtComponent, SoCallbackList, SoMaterial, SoXtMaterialEditorF¨ÅßÆß1Zc¿¼ÀHÆßÌÆßàSoXtMaterialSliderSet=IÆßÌÆß% €0€ˆˆ€‚ÿSoXtMaterialSliderSet*ÆßöÆß# €€€‚ÿNAMEzTÌÆßpÇß& €¨€”‘€€‚ÿSoXtMaterialSliderSet - component with Motif sliders for editing SoMaterial nodes3öÆߣÇß# € €€‚ÿINHERITS FROM¦YpÇßIÈßM j€²€”‘€ã-áO€ã.06΀‰€ãé^x´€‰€€€‚ÿSoXtComponent > SoXtSliderSetBase > SoXtSliderSet > SoXtMaterialSliderSet. £ÇßwÈß# €€€‚ÿSYNOPSIS[2IÈßÒÈß) "€d€”‘€‚9€‚ÿ#include U,wÈß'Éß) "€X€”‘€‚9€‚ÿMethods from class SoXtMaterialSliderSet:ã¥ÒÈß Êß> J€K€T”A‚S~‚A€ƒã‘¶p6‰ã’n%9‰‚ƒ‚ÿSoXtMaterialSliderSet(Widget parent = NULL,const char *name = NULL, SbBool buildInsideParent = TRUE,SoNode *newEditNode = NULL)~SoXtMaterialSliderSet() Y*'ÉßcÊß/ .€T€”‘€‚A€ã.06Ή‚ÿMethods from class SoXtSliderSetBase:G ÊßäÊß: D€Ž€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvirtual voidsetNode(SoNode *newNode) SoNode *getNode() const V'cÊß:Ëß/ .€N€”‘€‚A€ã-áOÿMethods from class SoXtComponent: LêäÊ߆Íßb ’€Õ€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow() virtual voidhide() SbBoolisVisible() WidgetgetWidget() const SbBoolisTopLevelShell() const WidgetgetShellWidget() const WidgetgetParentWidget() const voidsetSize(const SbVec2s &size) SbVec2sgetSize() Display *getDisplay() voidsetTitle(const char *newTitle) const char *getTitle() const voidsetIconTitle(const char *newIconTitle) const char *getIconTitle() const voidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL) °z:Ëß6Îß6 <€ô€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w) const char *getWidgetName() const const char *getClassName() const 4†ÍßjÎß& €€‚A€‚ÿDESCRIPTION6 6Îß Ïß* "€€”‘€‚A€‚ÿThis class defines an editor that uses Motif Sliders to edit the fields in an SoMaterial node. There are sliders for editing the RGB values of ambientColor, diffuseColor, specularColor and emissiveColor, as well as for editing the transparency and shininess values.0 jÎßÐÏß& €€‚A€‚ÿMETHODS㥠Ïß¿à> J€K€T”A‚S~‚A€ƒã‘¶ÐÏß¿àIÆßp6‰ã’n%9‰‚ƒ‚ÿSoXtMaterialSliderSet(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoNode *newEditNode = NULL) ~SoXtMaterialSliderSet() ‡^ÐÏßFà) "€¼€”‘€‚A€‚ÿConstructor and destructor. At construction time the material node to edit can be supplied.2 ¿àxà& €€‚A€‚ÿRESOURCESÛFà“à@ N€· €”‘€‚A€‚ÿ!!------------------------------------------------ !! Material Slider Set !!------------------------------------------------ *IvMaterialSliderAmbient.labelString: AMBIENT *IvMaterialSliderAmbientRed.labelString: Ambient Red *IvMaterialSliderAmbientGreen.labelString: Ambient Green *IvMaterialSliderAmbientBleu.labelString: Ambient Blue *IvMaterialSliderDiffuse.labelString: DIFFUSE *IvMaterialSliderDiffuseRed.labelString: Diffuse Red *IvMaterialSliderDiffuseGreen.labelString: Diffuse Green *IvMaterialSliderDiffuseBleu.labelString: Diffuse Blue *IvMaterialSliderSpecular.labelString: SPECULAR *IvMaterialSliderSpecularRed.labelString: Specular Red *IvMaterialSliderSpecularGreen.labelString: Specular Green *IvMaterialSliderSpecularBleu.labelString: Specular Blue *IvMaterialSliderEmissive.labelString: EMISSIVE *IvMaterialSliderEmissiveRed.labelString: Emissive Red *IvMaterialSliderEmissiveGreen.labelString: Emissive Green *IvMaterialSliderEmissiveBlue.labelString: Emissive Blue *IvMaterialSliderShininess.labelString: SHININESS *IvMaterialSliderShininessShininess.labelString: shininess *IvMaterialSliderTransparency.labelString: TRANSPARENCY *IvMaterialSliderTransparencyTransparency.labelString: transparency 1 xàÄà& €€‚A€‚ÿSEE ALSOËl“àà_ Ž€Ø€”‘€‚Aã«%¡€‰€€ãé^x´‰€€ã.06Ήã-áO€ãOjnĉã’n%9‰‚ÿSoXtMaterialEditor, SoXtSliderSet, SoXtSliderSetBase, SoXtComponent, SoMaterial, SoNode: ÄàÉà1e ³„¿é€ÀIÉàúàžAàSoXtMouse1 àúà% €€ˆˆ€‚ÿSoXtMouse*Éà$à# €€€‚ÿNAME`:úà„à& €t€”‘€€‚ÿSoXtMouse - translates and reports events for the mouse3$à·à# € €€‚ÿINHERITS FROMS„à à5 :€<€”‘€ãsJY€‰€€€‚ÿSoXtDevice > SoXtMouse. ·à8 à# €€€‚ÿSYNOPSISè¹ à à/ ,€s€”‘€€‚€‚€‚ÿ#include #define SO_XT_ALL_MOUSE_EVENTS (ButtonPressMask | ButtonReleaseMask | PointerMotionMask | ButtonMotionMask)Methods from class SoXtMouse:rD8 à’ à. ,€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿSoXtMouse(EventMask mask = SO_XT_ALL_MOUSE_EVENTS)~SoXtMouse()R# àä à/ .€F€”‘€‚A€ãsJY‰‚ÿMethods from class SoXtDevice:p$’ àT àL f€I€T”A‚S~‚A€ƒ‚ƒ‚ã2™|—‰ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvirtual voidenable(Widget w,XtEventHandler f,XtPointer data,Widget win = NULL)virtual voiddisable(Widget w,XtEventHandler f,XtPointer data)virtual const SoEvent *translateEvent(XAnyEvent *xevent)voidsetWindowSize(const SbVec2s &size)const SbVec2s &getWindowSize() const4ä àˆ à& €€‚A€‚ÿDESCRIPTIONÙ£T àa à6 :€G€”‘€‚A€€€€€‚ÿThis class manages events generated by the mouse, including mouse motion (SoLocation2Event), and mouse button press and release events (SoMouseButtonEvent).0 ˆ à‘ à& €€‚A€‚ÿMETHODSrDa àà. ,€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿSoXtMouse(EventMask mask = SO_XT_ALL_MOUSE_EVENTS)~SoXtMouse()µ‹‘ à¸à* "€€”‘€‚A€‚ÿConstructor and destructor. To the constructor, pass which mouse messages you are interested in as a bitwise OR of the following values:O&àà) "€L€”‘€‚A€‚ÿButtonPressMask - Mouse down eventsO&¸àVà) "€L€”‘€‚A€‚ÿButtonReleaseMask - Mouse up events\3à²à) "€f€”‘€‚A€‚ÿPointerMotionMask - Mouse motion with no buttons`7Và@à) "€n€”‘€‚A€‚ÿButtonMotionMask - Mouse motion with²à@àà buttons pressedË¡²àé@à* "€C€”‘€‚A€‚ÿOr simply pass the defined value SO_XT_ALL_MOUSE_EVENTS for all mouse events. The device will only report events of this type for the window it is enabled on.1 @àAà& €€‚A€‚ÿSEE ALSO„=é@àžAàG ^€z€”‘€‚AãsJY€‰€ã-OÁm€‰€ãÛá–€‰‚ÿSoXtDevice, SoLocation2Event, SoMouseButtonEvent@AàÞAà1ð-¼À_‹ÁJÞAàBà~ÏàSoXtPlaneViewer7žAàBà% €$€ˆˆ€‚ÿSoXtPlaneViewer*ÞAà?Bà# €€€‚ÿNAMEmGBà¬Bà& €Ž€”‘€€‚ÿSoXtPlaneViewer - viewer component which moves the camera in a plane3?BàßBà# € €€‚ÿINHERITS FROMÚu¬Bà¹Càe š€ê€”‘€ã-áO€ã‰2쀉€ã{ç1€‰€ã®ö¿÷€‰€ãµGi^€‰€€€‚ÿSoXtComponent > SoXtGLWidget > SoXtRenderArea > SoXtViewer > SoXtFullViewer > SoXtPlaneViewer. ßBàçCà# €€€‚ÿSYNOPSIS‚X¹CàiDà* $€°€”‘€€‚€‚ÿ#include Methods from class SoXtPlaneViewer:ÊçCàxEàE X€•€T”A‚S~‚A€ƒã‘¶p6‰ãµGi^‰ã®ö¿÷‰‚ƒ‚ÿSoXtPlaneViewer(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoXtFullViewer::BuildFlag flag = BUILD_ALL,SoXtViewer::Type type = BROWSER)~SoXtPlaneViewer()V'iDàÎEà/ .€N€”‘€‚A€ãµGi^‰‚ÿMethods from class SoXtFullViewer:ôšxEàÂGàZ ‚€5€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()voidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()WidgetgetAppPushButtonParent() constvoidaddAppPushButton(Widget newButton)voidinsertAppPushButton(Widget newButton,int index)voidremoveAppPushButton(Widget oldButton)intfindAppPushButton(Widget oldButton)intlengthAppPushButton()WidgetgetRenderAreaWidget()R#ÎEàHà/ .€F€”‘€‚A€ã®ö¿÷‰‚ÿMethods from class SoXtViewer:WÑÂGàkJà† Ú€£€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒã®ö¿÷‰ã®ö¿÷‰‚ã®ö¿÷‰ƒã®ö¿÷‰‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoXtViewer::DrawType type,SoXtViewer::DrawStyle style)SoXtViewer::DrawStylegetDrawStyle(SoXtViewer::DrawType type)—Hà}Là{ Ä€/€T”A‚S~‚A€ƒã®ö¿÷‰‚ã®ö¿÷‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBufferingType(SoXtViewer::BufferType type)SoXtViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual void setCursorEnabled(SbBool onOrOff) SbBool isCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()ÊkJà˜NàQ p€•€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetStereoOffset(float dist)floatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoXtViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidcopyView(Time eventTime).ß}LàÒ€àO l€¿€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidpasteView(Time eventTime)virtual voidrecomputeSceneSize() voidsetDecimationStrategy(DecimationStrategy strategy) DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal) int32_tgetGoalNumberOfTriangles() voidsetGoalFramesPerSecond(floa˜NàÒ€àžAàt goal) floatgetGoalFramesPerSecond() voidsetFixedPercentage(float percent) floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff) SbBoolisFullRenderingWhenStill() p0˜NàB‚à@ N€a€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolisStillNow() voidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData) voidsetNumSamples(int numFrames) intgetNumSamples() voidsetDecimationPercentageCallback (SoXtViewerDecimationPercentageCB *callback,void *userData = NULL) floatgetCurrentDecimationPercentage() V'Ò€à˜‚à/ .€N€”‘€‚A€ã{ç1‰‚ÿMethods from class SoXtRenderArea:$³B‚༄àq °€g€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãsJY‰‚ƒãsJY‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoXtDevice *)voidunregisterDevice(SoXtDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «˜‚àȆàa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤¼„ààˆàt ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)6ÚȆà‹à\ †€µ€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoXtRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºWàˆàÐŒàc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constT%‹à$à/ .€J€”‘€‚A€ã‰2쉂ÿMethods from class SoXtGLWidget: ÁÐŒàDà_ Œ€ƒ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()WidgetgetNormalWindow()WidgetgetOverlayWindow()GLXContextgetNormalContext()GLXContextgetOverlayContext()WidgetgetNormalWidget()WidgetgetOverlayWidget()virtual voidsetNormalVisual(XVisualInfo *vis)XVisualInfo *getNormalVisual()virtual voidsetOverlayVisual(XVisualInfo *vis)XVisualInfo *getOverlayVisual()žd$à Àà: D€È€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag) SbBoolisDrawToFrontBufferEnable() const Dà ÀàžAàU&DàaÀà/ .€L€”‘€‚A€ã-áOÿMethods from class SoXtComponent:=Û ÀàžÂàb ’€·€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()WidgetgetWidget() constSbBoolisTopLevelShell() constWidgetgetShellWidget() constWidgetgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()Display *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL)­waÀàKÃà6 <€î€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w)const char *getWidgetName() constconst char *getClassName() const4žÂàÃà& €€‚A€‚ÿDESCRIPTIONÕ«KÃàTÅà* "€W€”‘€‚A€‚ÿThe Plane viewer component allows the user to translate the camera in the viewing plane, as well as dolly (move foward/backward) and zoom in and out. The viewer also allows the user to roll the camera (rotate around the forward direction) and seek to objects which will specify a new viewing plane. This viewer could be used for modeling, in drafting, and architectural work. The camera can be aligned to the X, Y or Z axes.0 Ãà„Åà& €€‚A€‚ÿMETHODSÊTÅà“ÆàE X€•€T”A‚S~‚A€ƒã‘¶p6‰ãµGi^‰ã®ö¿÷‰‚ƒ‚ÿSoXtPlaneViewer(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoXtFullViewer::BuildFlag flag = BUILD_ALL,SoXtViewer::Type type = BROWSER)~SoXtPlaneViewer()Æ–„ÅàYÇà0 .€-€”‘€‚A€€€‚ÿConstructor and destructor which specifies the viewer type. Please refer to the SoXtViewer reference pages for a description of the viewer types.3 “ÆàŒÇà& €€‚A€‚ÿRESOURCES ÙYÇà™Éà4 6€³€”‘€‚A€‚ÿ!!------------------------------------------------ !! Decorations for Plane Viewer !! !!------------------------------------------------ *IvPlaneTitle.labelString: Plane Viewer *IvPlanePrefTitle.labelString: Plane Viewer Preference Sheet *IvPlanePopupTitle.labelString: Plane Viewer *IvPlaneIconTitle.labelString: Plane Viewer *IvPlaneTransx.labelString: transX *IvPlaneTransy.labelString: transY *IvPlaneZoom.labelString: Zoom *IvPlaneDolly.labelString: Dolly.ŒÇàÇÉà& €€‚A€‚ÿUSAGEF™Éà Êà) "€:€”‘€‚A€‚ÿ(For 3-button mouse only.)—jÇÉà¤Êà- *€Ô€”‘€‚A€€‚ÿLeft Mouse orLeft + Middle Mouse: Dolly in and out (gets closer to and further away from the object).wJ ÊàËà- *€”€”‘€‚A€€‚ÿMiddle Mouse orCtrl + Left Mouse: Translate up, down, left and right.ˆ\¤Êà£Ëà, (€¸€”‘€‚A€€‚ÿCtrl + Middle Mouse: Used for roll action (rotates around the viewer forward direction).ª~ËàMÌà, (€ü€”‘€‚A€€‚ÿ + Left Mouse: Alternative to the Seek button. Press (but do not hold down) the key, then click on a target object.Q%£ËàžÌà, (€J€”‘€‚A€€‚ÿRight Mouse: Open the popup menu.U(MÌàóÍà- (€Q€”‘€‚A€€‚ÿALT: When the viewer is in selection (a.k.a. pick) mode, pressing and holding the ALT key temporarily switches the viewer to viewing mode. When the ALT key is released, the viewer returns to selection mode. Note: If any of the mouse buttons are currently depressed, the ALT key has no effect.1 žÌà$Îà& €€‚A€‚ÿSEE ALSOZÓóÍà~Ïà‡ Ü€§€”‘€‚AãþÜé*€‰€€"ãµGi^€‰€ã®ö¿÷€‰€ã-áO€ã{ç1€‰€ã³^ÖЀ‰€ã(’€‰€ãá¿" €‰‚ÿPlane Viewer (illustration and additional info about mouse buttons), SoXtFullViewer, SoXtViewer, SoXtComponent, SoXtRenderArea, SoXtWalkViewer, SoXtExaminerViewer, SoXtFlyViewer@$Îà¾Ïà18é€ÀL‡ÂK¾Ïà á»HáSoXtPrintDialog7~Ïà á% €$€ˆˆ€‚ÿSoXtPrintDialog¾Ïà á~Ïà*¾Ïà6á# €€€‚ÿNAME_9 á•á& €r€”‘€€‚ÿSoXtPrintDialog - dialog box for controlling printing 36áÈá# € €€‚ÿINHERITS FROM\'•á$á5 :€N€”‘€ã-áO€€€‚ÿSoXtComponent > SoXtPrintDialog. ÈáRá# €€€‚ÿSYNOPSIST+$á¦á) "€V€”‘€‚9€‚ÿ#include xKRáá- *€–€T”A‚S~‚A€ƒ‚ÿtypedef voidSoXtPrintDialogCB(void *userData,SoXtPrintDialog *dialog) O&¦ámá) "€L€”‘€‚A€‚ÿMethods from class SoXtPrintDialog:¦áŠáw ¼€M€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãMy'9‰‚ãMy'9‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãŠƒõ(‰‚ƒãŠƒõ(‰‚ÿSoXtPrintDialog(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE) ~SoXtPrintDialog() voidsetSceneGraph(SoNode *root) SoNode *getSceneGraph() voidsetSceneGraph(SoPath *path) SoPath *getSceneGraphPath() voidsetGLRenderAction(const SoGLRenderAction *act) SoGLRenderAction *getGLRenderAction() voidsetPrintSize(SbVec2f &inches) voidsetPrintSize(SbVec2s &) Æ•máPá1 0€+€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetBeforePrintCallback(SoXtPrintDialogCB *f,void *userData = NULL) voidsetAfterPrintCallback(SoXtPrintDialogCB *f,void *userData = NULL) V'Šá¦á/ .€N€”‘€‚A€ã-áOÿMethods from class SoXtComponent: LêPáòáb ’€Õ€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtualvoid show() virtualvoid hide() SbBoolisVisible() WidgetgetWidget() const SbBoolisTopLevelShell() const WidgetgetShellWidget() const WidgetgetParentWidget() const voidsetSize(const SbVec2s &size) SbVec2sgetSize() Display *getDisplay() voidsetTitle(const char *newTitle) const char *getTitle() const voidsetIconTitle(const char *newIconTitle) const char *getIconTitle() const voidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL) °z¦á¢á6 <€ô€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w) const char *getWidgetName() const const char *getClassName() const 4òáÖá& €€‚A€‚ÿDESCRIPTIONA¢á á* "€/€”‘€‚A€‚ÿThis class provides an interactive widget for setting available options used in printing with the SoPrintAction and its subclasses. Options include whether to print with hidden lines or not, whether to print using the Landscape format, whether to print to a file or a printer.1 ÖáH á& €€‚A€‚ÿMETHODS ²| áú á6 <€ø€T”A‚S~‚A€ƒã‘¶p6‰‚ƒ‚ÿSoXtPrintDialog(Widget parent = NULL,const char *name = NULL, SbBool buildInsideParent = TRUE) ~SoXtPrintDialog() I H áC á) "€@€”‘€‚A€‚ÿConstructors and destructor. цú á áK d€ €T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãMy'9‰‚ãMy'9‰ƒ‚ÿvoidsetSceneGraph(SoNode *root) SoNode *getSceneGraph() voidsetSceneGraph(SoPath *path) SoPath *getSceneGraphPath() nEC á‚ á) "€Š€”‘€‚A€‚ÿSets/gets the root node or path to nodes to be used for printing. ›a á á: D€Â€T”A‚S~‚A€ƒã©öø(‰‚ã©öø(‰ƒ‚ÿvoidsetGLRenderAction(const SoGLRenderAction *act)SoGLRenderAction *getGLRenderAction()b9‚ á á) "€r€”‘€‚A€‚ÿSets/gets the render action to be used when printing. ˆH áá@ P€€T”A‚S~‚A€ƒãŠƒõ(‰€‚€ƒãŠƒõ(‰‚ÿvoidsetPrintSize(SbVec2f &inches)voidsetPrintSize(SbVec2s &)¦} á­á) "€ú€”‘€‚A€‚ÿSets/gets the size of the printed image. This is typically the same size as the window displaying the scene to be printed.Å”árá1 0€)€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetBeforePrintCallback(SoXtPrintDialogCB *f,void *userData = NULL)voidsetAfterPrintCallback(SoXtPrintDialogCB *f,void *userData = NULL) ñ­á™@á* "€ã€”‘€‚A€‚ÿTwo callbacks are maintained, one which gets called just before a print is executed, and one which rá™@á~Ïàgets called after a print is executed. These two methods sets the appropriate callback function (set these to NULL to remove the callback).3 ráÌ@á& €€‚A€‚ÿRESOURCES [ ™@á'HáO l€€”‘€‚A€‚ÿ!!------------------------------------------------ !! Print Dialog !!------------------------------------------------ *IvPrintDialTitle.labelString: Print Dialog *IvPrintDialIconTitle.labelString: Print Dialog *IvPrintDialPrinter.labelString: Printer: *IvPrintDialPageOut.labelString: Page Output: *IvPrintDialToPrinter.labelString: To Printer *IvPrintDialToFile.labelString: To File *IvPrintDialQuit.labelString: Quit *IvPrintDialPrint.labelString: Print *IvPrintDialMessage.labelString: Message: *IvPrintDialFileFormat.labelString: File Format: *IvPrintDialPostScript.labelString: PostScript *IvPrintDialRGB.labelString: RGB *IvPrintDialPrintQuality.labelString: Print Quality: *IvPrintDialHigh.labelString: High *IvPrintDialDraft.labelString: Draft *IvPrintDialPageFormat.labelString: Page Format *IvPrintDialPortrait.labelString: Portrait *IvPrintDialLandscape.labelString: Landscape *IvPrintDialPrintSize.labelString: Print Size (inches): *IvPrintDialFileName.labelString: File Name: *IvPrintDialResolution.labelString: Resolution *IvPrintDialBy.labelString: by *IvPrintDialDpi.labelString: DPI: *IvPrintDialMess1.labelString: Printing in progress... *IvPrintDialMess2.labelString: ERROR: Empty database. *IvPrintDialMess3.labelString: ERROR: Exceeds *IvPrintDialMess4.labelString: ERROR: Could not execute print. *IvPrintDialMess5.labelString: ERROR: Could not execute print. *IvPrintDialMess6.labelString: ERROR: No printer. *IvPrintDialMess7.labelString: ERROR: Couldn't open *IvPrintDialMess8.labelString: ERROR: No file name. *IvPrintDialMess9.labelString: ERROR: Could not open file. *IvPrintDialMess10.labelString: ERROR: Could not get data. *IvPrintDialMess11.labelString: ERROR: Could not get data. *IvPrintDialMess12.labelString: Printing completed.1 Ì@áXHá& €€‚A€‚ÿSEE ALSOc('Há»Há; F€P€”‘€‚Aã©öø(€‰€€ã-áOÿSoGLRenderAction, SoXtComponent?XHáúHá1>D_‹ÁéƒÄLúHá0IáiHâSoXtRenderArea6»Há0Iá% €"€ˆˆ€‚ÿSoXtRenderArea*úHáZIá# €€€‚ÿNAMElF0IáÆIá& €Œ€”‘€€‚ÿSoXtRenderArea - component for rendering Open Inventor scene graphs3ZIáùIá# € €€‚ÿINHERITS FROMz9ÆIásJáA R€r€”‘€ã-áO€ã‰2쀉€€€‚ÿSoXtComponent > SoXtGLWidget > SoXtRenderArea. ùIá¡Já# €€€‚ÿSYNOPSISP*sJáñJá& €T€”‘€€‚ÿ#include ‚L¡JásKá6 <€˜€T”A‚S~‚A€㑶p6‰ƒ€‚ÿtypedef SbBoolSoXtRenderAreaEventCB(void *userData,XEvent *anyevent)N%ñJáÁKá) "€J€”‘€‚A€‚ÿMethods from class SoXtRenderArea:¤sKáÚMáu ¸€I€T”A‚S~‚A€ƒã‘¶p6‰ã‘¶p6‰ã‘¶p6‰‚ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãsJY‰‚ƒãsJY‰‚ÿSoXtRenderArea(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SbBool getMouseInput = TRUE,SbBool getKeyboardInput = TRUE)~SoXtRenderArea()virtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoXtDevice *)voidunregisterDevice(SoXtDevice *)¶ÁKá €á_ Œ€m€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ÿvoidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index)intgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)ÚMá €á»Há¦ÚMá‚ál ¦€M€T”A‚S~‚A€ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚ÿconst SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() constvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constµ €á4„áa €k€T”A‚S~‚A㑶p6€‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)SbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw() ¥‚á?†áf š€K€T”A‚S~‚A€ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ÿvoidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoXtRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)Ô‘4„á‡áC T€#€T”A‚S~‚AãQ´tK€‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constT%?†ág‡á/ .€J€”‘€‚A€ã‰2쉂ÿMethods from class SoXtGLWidget: Á‡á‡‰á_ Œ€ƒ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()WidgetgetNormalWindow()WidgetgetOverlayWindow()GLXContextgetNormalContext()GLXContextgetOverlayContext()WidgetgetNormalWidget()WidgetgetOverlayWidget()virtual voidsetNormalVisual(XVisualInfo *vis)XVisualInfo *getNormalVisual()virtual voidsetOverlayVisual(XVisualInfo *vis)XVisualInfo *getOverlayVisual()ždg‡á%Šá: D€È€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag) SbBoolisDrawToFrontBufferEnable() const U&‡‰ázŠá/ .€L€”‘€‚A€ã-áOÿMethods from class SoXtComponent:=Û%Šá·Œáb ’€·€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()WidgetgetWidget() constSbBoolisTopLevelShell() constWidgetgetShellWidget() constWidgetgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()Display *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL)­wzŠádá6 <€î€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w)const char *getWidgetName() constconst char *getClassName() const4·Œá˜á& €€‚A€‚ÿDESCRIPTION4dáÌá0 .€ €”‘€‚A€€€‚ÿThis class provides Open Inventor rendering and event handling inside a GLX Motif widget. There is a routine to specify the scene to render. The scene is automatically rendered whenever anything under it changes (a data sensor is attached to the root of the scene), unless explicitly told not to do so (manual redraws). Users can also set Open Inventor rendering attributes such as the transparency type, antialiasing on or off, etc. This class employs an SoSceneManager to manage rendering and event handling. ‡-˜á_ÃáZ ‚€[€”‘€‚A€€€€€Ìá_Ãá»Hက€€€€€€€€€€‚ÿX events that occur in the render area can be handled by the application, by the viewer (if this is really a viewer), or by the nodes in the scene graph. When a event occurs, it is first passed to the application event callback function registered with the setEventCallback() method on SoXtRenderArea. If this function does not exist or returns FALSE, the X event is either used directly by the viewer or translated to an SoEvent for further scene graph processing. If the viewer does not handle the event, and an overlay scene graph exists, the SoEvent is sent to that scene graph by way of an SoHandleEventAction. If no node in the overlay scene graph handles the event (i.e., calls setHandled() on the SoHandleEventAction), the SoEvent is passed to the normal scene graph in the same manner.1 ÌáÃá& €€‚A€‚ÿ METHODSý¸_ÃáÄáE X€q€T”A‚S~‚A€ƒã‘¶p6‰ã‘¶p6‰ã‘¶p6‰‚ƒ‚ÿSoXtRenderArea(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SbBool getMouseInput = TRUE,SbBool getKeyboardInput = TRUE)~SoXtRenderArea()Ì–ÃáYÅá6 :€-€”‘€‚A€€€€€‚ÿConstructor which is passed arguments which tell it whether to register the mouse and keyboard devices by default (SoXtMouse and SoXtKeyboard).ŽTÄáçÅá: D€¨€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()nEYÅáUÆá) "€Š€”‘€‚A€‚ÿSet/get the scene graph to be rendered in this component's window.ŒRçÅááÆá: D€¤€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvoidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()¶ŒUÆá—Çá* "€€”‘€‚A€‚ÿSet/get the scene graph to be rendered in the overlay plane. NOTE: This feature requires a graphics board that supports an overlay plane.†LáÆáÈá: D€˜€T”A‚S~‚A€ƒãsJY‰‚ƒãsJY‰‚ÿvoidregisterDevice(SoXtDevice *)voidunregisterDevice(SoXtDevice *)Ý—Çá$Éá* "€»€”‘€‚A€‚ÿRegister/unregister interest in devices. When a device is registered, messages from that device will be processed by the render area, and passed into the scene graph. Messages from unregistered devices will be ignored.•[Èá¹Éá: D€¶€T”A‚S~‚A€ƒãÀ"%‰‚ãÀ"%‰ƒ‚ÿvoidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constsJ$Éá,Êá) "€”€”‘€‚A€‚ÿSet/get the background color for this window. Default is black (0,0,0).rD¹ÉážÊá. ,€ˆ€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constˆ_,Êá&Ëá) "€¾€”‘€‚A€‚ÿSets/gets the window background color when in color index mode. Default is black (index 0)).€RžÊá¦Ëá. ,€¤€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetOverlayBackgroundIndex(int index)intgetOverlayBackgroundIndex() const}T&Ëá#Ìá) "€¨€”‘€‚A€‚ÿSets/gets the overlay window background color index. Default is 0 (clear color)).yE¦ËáœÌá4 8€Š€T”A‚S~‚A€ƒãÀ"%‰‚ÿvoidsetColorMap(int startIndex,int num,const SbColor *colors)²ˆ#ÌáNÍá* "€€”‘€‚A€‚ÿSets the colors to use when displaying in color index mode. This will load the color map with the given colors at the starting index.€LœÌáÎÍá4 8€˜€T”A‚S~‚A€ƒãÀ"%‰‚ÿvoidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)£zNÍáqÎá) "€ô€”‘€‚A€‚ÿSets the colors to use for overlay bit planes.This will load the color map with the given colors at the starting index.­sÎÍáÏá: D€æ€T”A‚S~‚A€ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ÿvoidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constb9qÎá€Ïá) "€r€”‘€‚A€‚ÿSets/gets current viewport region to use for rendering‡ÏáNâ; D€€T”A‚S~‚A€ƒã©öø(‰‚ã©öø(‰ƒ‚ÿvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)€ÏáNâ»HáSoGLRenderAction::TransparencyTypegetTransparencyType() const®y€Ïáüâ5 :€ò€”‘€‚A€ã©öø(€‰€‚ÿSet/get the quality level for rendering transparent objects. See SoGLRenderAction for possible transparency types.¶zNâ²â< H€ô€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) const+éüâÝâB R€Ó€”‘€‚A€€€€€€€€€‚ÿSet/get the antialiasing for rendering. There are two kinds of antialiasing available: smoothing and multipass antialiasing. If smoothing is set to TRUE, smoothing is enabled. Smoothing uses OpenGL's line- and point-smoothing features to provide cheap antialiasing of lines and points. The value of numPasses controls multipass antialiasing. Each time a render action is applied, Open Inventor renders the scene numPasses times from slightly different camera positions, averaging the results. numPasses can be from one to 255, inclusive. Setting numPasses to one disables multipass antialiasing. You can use either, both, or neither of these antialiasing techniques. By default, both smoothing and multipass antialiasing are disabled.ê ²âÇâJ b€A€T”A‚S~‚A€ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() const|RÝâCâ* "€¥€”‘€‚A€‚ÿEnable/prevent window clearing from happening before a rendering starts (default is clear TRUE). This can be useful to limit flickering when doing single buffering and geometry covers the entire window (used in the material editor). Can also control whether the depth buffer (sometimes called the Z buffer) is cleared before rendering.ŸeÇâââ: D€Ê€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() const”kCâvâ) "€Ö€”‘€‚A€‚ÿEnable/prevent overlay window clearing from happening before a rendering starts (default is clear TRUE).ƒIââùâ: D€’€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetAutoRedraw(SbBool trueOrFalse)SbBoolisAutoRedraw() const®„v⧠â* "€ €”‘€‚A€‚ÿThe render area will automatically redraw whenever something in the scene graph changes. Passing FALSE will disable this feature.º‰ùâa â1 0€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()|S§ âÝ â) "€¦€”‘€‚A€‚ÿSets/gets the priority of the redraw sensor and get the default priority number.S%a â0 â. ,€J€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidrender()voidrenderOverlay()½“Ý âí â* "€'€”‘€‚A€‚ÿCalling this forces the render area to be redrawn now. It is not necessary to call this method if auto redraw is enabled (which is the default).c50 âP â. ,€j€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidscheduleRedraw()voidscheduleOverlayRedraw()¡xí âñ â) "€ð€”‘€‚A€‚ÿSchedule a redraw to happen sometime soon (as opposed to immediately). This can be used to compress multiple redraws.¡gP â’ â: D€Î€T”A‚S~‚A€ƒã(ç –‰‚ƒã(ç –‰‚ÿvoidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)Oñ âáâ0 .€?€”‘€‚A€€€‚ÿCall this convenience method to have this render area redraw whenever the selection list changes in the passed node. This is useful if using a highlight render action like the SoBoxHighlightRenderAction to correctly render whenever the selection changes. Pass NULL to turn this off.xK’ âYâ- *€–€T”A‚S~‚A€ƒ‚ÿvoidsetEventCallback(SoXtRenderAreaEventCB *fcn,void *userData = NULL)ÄŽáâ)Bâ6 :€€”‘€‚A€€€€€‚ÿX events which occur in the render area window are either directly handled by the viewer (when this is really a Yâ)Bâ»Háviewer) or automatically translated to SoEvents, then passed into the scene graph (via the SoHandleEventAction) so that live scene graph objects can handle the event (when viewers are not in viewing mode). This method allows the application to register a callback for handling events that occur in the window, instead of sending them to the viewers or down the graph. The callback is passed the X events, and should return TRUE if it handled the event. If the callback returns FALSE, then the event will be handled by the render area. š`YâÃBâ: D€À€T”A‚S~‚A€ƒã©öø(‰‚ã©öø(‰ƒ‚ÿvoidsetGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getGLRenderAction() constÛ¥)BâžCâ6 :€K€”‘€‚A€€€€€‚ÿSets/gets the GL render action to use. This is used to set selection highlighting with the SoBoxHighlightRenderAction and SoLineHighlightRenderAction classes.¨nÃBâFDâ: D€Ü€T”A‚S~‚A€ƒã©öø(‰‚ã©öø(‰ƒ‚ÿvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constb9žCâ¨Dâ) "€r€”‘€‚A€‚ÿSets/gets the GL render action for the overlay window.¼FDâ¯EâK d€y€T”A‚S~‚A€ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constb9¨DâFâ) "€r€”‘€‚A€‚ÿSets/gets the normal and overlay plane scene managers.“d¯Eâ¤Fâ/ .€È€”‘€‚A€€€‚ÿNote: for convenience most of the SoSceneManager methods have already been added to this class.2 FâÖFâ& €€‚A€‚ÿRESOURCESmD¤FâCGâ) "€ˆ€”‘€‚A€‚ÿ*SoXtRenderArea*BackgroundColor: black (color name or hex value) 1 ÖFâtGâ& €€‚A€‚ÿSEE ALSOõ‰CGâiHâl ¦€€”‘€‚Aã‰2쀉€ã-áO€ã®ö¿÷€‰€ãQ´tK€‰€ã6 €‰€ãö퀉‚ÿSoXtGLWidget, SoXtComponent, SoXtViewer, SoSceneManager, SoBoxHighlightRenderAction, SoLineHighlightRenderAction= tGâ¦Hâ1ÂL‡Â\ÅM¦HâÚHâ‡âSoXtResource4iHâÚHâ% €€ˆˆ€‚ÿSoXtResource*¦HâIâ# €€€‚ÿNAMEuOÚHâyIâ& €ž€”‘€€‚ÿSoXtResource - used to retrieve X resources for SoXt components and widgets 3Iâ¬Iâ# € €€‚ÿINHERITS FROM9yIâåIâ) "€ €”‘€€€‚ÿSoXtResource. ¬IâJâ# €€€‚ÿSYNOPSISQ(åIâdJâ) "€P€”‘€‚9€‚ÿ#include L#Jâ°Jâ) "€F€”‘€‚9€‚ÿMethods from class SoXtResource:-¶dJâÝLâw ¼€m€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒãÀ"%‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSoXtResource(Widget w)~SoXtResource() SbBoolgetResource(char *resName,char *resClass,SbColor &c) SbBoolgetResource(char *resName,char *resClass,short &i) SbBoolgetResource(char *resName,char *resClass,unsigned short &u) SbBoolgetResource(char *resName,char *resClass,char *&s) SbBoolgetResource(char *resName,char *resClass,SbBool &b) SbBoolgetResource(char *resName,char *resClass,float &f) 4°JâMâ& €€‚A€‚ÿDESCRIPTIONcÝLâžOâ* "€Ç€”‘€‚A€‚ÿThis class provides an easy-to-use interface for retrieving X resource values for widgets and components. Rather than use standard Xt calls to traverse up a widget hierarchy, this class performs its own traversal so that it may provide special care for widgets which are Open Inventor components. For instance, the Open Inventor Material Editor top level widget is a Motif form widget. Its class name is thus XmForm. SoXtResource knows that the editor is an Open Inventor component, though, so it uses the class name provided by the editor (in this case "SoXtMaterialEditor") when looking up resource values.4 MâÒOâ) "€€”‘€‚A€‚ÿEXAMPLE:ΣžO⬀â+ $€G€Ù€‚A€‚ÿSoÒO⬀âiHâXtResource xr( materialEditor->getWidget() ); xr.getResource("tile1Color", "Tile1Color", color); xr.getResource("updateFrequency", "UpdateFrequency", freq);+ÒOâ×€â( €€Ù€‚A€‚ÿ1 ¬€ââ& €€‚A€‚ÿMETHODS Z,×€âbâ. ,€X€T”A‚S~‚A€ƒ‚ƒ‚ÿSoXtResource(Widget w)~SoXtResource() ”kâöâ) "€Ö€”‘€‚A€‚ÿConstructor and destructor. The constructor takes the widget for which it will retrieve resource values.ú‡bâðƒâs ´€€T”A‚S~‚A㑶p6€‰ƒãÀ"%‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿSbBoolgetResource(char *resName,char *resClass,SbColor &c)SbBoolgetResource(char *resName,char *resClass,short &i)SbBoolgetResource(char *resName,char *resClass,unsigned short &u)SbBoolgetResource(char *resName,char *resClass,char *&s)SbBoolgetResource(char *resName,char *resClass,SbBool &b)SbBoolgetResource(char *resName,char *resClass,float &f) Þ´öâ΄â* "€i€”‘€‚A€‚ÿThis returns the X resource value for the specified resource name and class. There is no need to specify the widget hierarchy; this is automatically computed in the constructor..ðƒâü„â& €€‚A€‚ÿNOTESM#΄âI†â* "€G€”‘€‚A€‚ÿComponents will typically look up their own resources during buildWidget(). In order for a component to have its Open Inventor class name recognized by SoXtResource, it must call SoXtComponent::registerWidget() in its buildWidget() method. (This is done in every Open Inventor component.)1 ü„âz†â& €€‚A€‚ÿSEE ALSOFI†â‡âG ^€Œ€”‘€‚A€€€€€ãÜ\+‰€€ã-áOÿX Resources (Xrm), X Intrinsics (Xt), SoXt, SoXtComponent> z†âE‡â1ý éƒÄzÅNE‡âz‡âgÂâSoXtSliderSet5‡âz‡â% € €ˆˆ€‚ÿSoXtSliderSet*E‡â¤‡â# €€€‚ÿNAMEd>z‡âˆâ& €|€”‘€€‚ÿSoXtSliderSet - base class for Motif-only slider components3¤‡â;ˆâ# € €€‚ÿINHERITS FROM~=ˆâ¹ˆâA R€z€”‘€ã-áO€ã.06΀‰€€€‚ÿSoXtComponent > SoXtSliderSetBase > SoXtSliderSet. ;ˆâçˆâ# €€€‚ÿSYNOPSISR)¹ˆâ9‰â) "€R€”‘€‚9€‚ÿ#include Y*çˆâ’‰â/ .€T€”‘€‚9€ã.06Ή‚ÿMethods from class SoXtSliderSetBase:G9‰âŠâ: D€Ž€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvirtual voidsetNode(SoNode *newNode) SoNode *getNode() const V'’‰âiŠâ/ .€N€”‘€‚A€ã-áOÿMethods from class SoXtComponent: LêŠâµŒâb ’€Õ€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow() virtual voidhide() SbBoolisVisible() WidgetgetWidget() const SbBoolisTopLevelShell() const WidgetgetShellWidget() const WidgetgetParentWidget() const voidsetSize(const SbVec2s &size) SbVec2sgetSize() Display *getDisplay() voidsetTitle(const char *newTitle) const char *getTitle() const voidsetIconTitle(const char *newIconTitle) const char *getIconTitle() const voidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL) °ziŠâeâ6 <€ô€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w) const char *getWidgetName() const const char *getClassName() const 4µŒâ™â& €€‚A€‚ÿDESCRIPTION¹eâRâ* "€€”‘€‚A€‚ÿThis class is used as a base class for all editors which use sets of Motif sliders to edit fields in an Open Inventor scene graph node. The editor consists of a number of sliders each of which may change a different value in a field. This class is not meant to be instanced by programmers who want to use an editor in a program. It should only be used as a base class when designing new editors. –m™â Àâ) "€Ú€”‘€‚A€‚ÿThis class has no public methods. The internal methods deal with managing the layout of the subcomponents.Râ Àâ‡â2 Râ>Àâ& €€‚A€‚ÿRESOURCESá ÀâNÁâ/ ,€Ã€”‘€‚A€‚ÿ!!------------------------------------------------ !! For All Sliders !!------------------------------------------------ *IvSlidersMin.labelString: min *IvSlidersMax.labelString: max *IvSlidersStyle.labelString: style1 >ÀâÁâ& €€‚A€‚ÿSEE ALSOè‚NÁâgÂâf š€€”‘€‚Aã.06΀‰€€ã-áO€€€ãÇ Ø‰€€ãŽ;‰€€ã…Wu™‰‚ÿSoXtSliderSetBase, SoXtComponent, SoNode, SoXtLightSliderSet, SoXtMaterialSliderSet, SoXtTransformSliderSetBÁâ©Ââ1x \ʼnÅO©ÂââÂâ)ÎâSoXtSliderSetBase9gÂââÂâ% €(€ˆˆ€‚ÿSoXtSliderSetBase*©Ââ Ãâ# €€€‚ÿNAMEqKâÂâ}Ãâ& €–€”‘€€‚ÿSoXtSliderSetBase - abstract base class for Motif-only slider components3 Ãâ°Ãâ# € €€‚ÿINHERITS FROMJ$}ÃâúÃâ& €H€”‘€€‚ÿSoXtComponent > SoXtSliderSetBase. °Ãâ(Äâ# €€€‚ÿSYNOPSISV-úÃâ~Äâ) "€Z€”‘€‚9€‚ÿ#include Q((ÄâÏÄâ) "€P€”‘€‚9€‚ÿMethods from class SoXtSliderSetBase:G~ÄâPÅâ: D€Ž€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvirtual voidsetNode(SoNode *newNode) SoNode *getNode() const V'ÏÄâ¦Åâ/ .€N€”‘€‚A€ã-áOÿMethods from class SoXtComponent: LêPÅâòÇâb ’€Õ€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow() virtual voidhide() SbBoolisVisible() WidgetgetWidget() const SbBoolisTopLevelShell() const WidgetgetShellWidget() const WidgetgetParentWidget() const voidsetSize(const SbVec2s &size) SbVec2sgetSize() Display *getDisplay() voidsetTitle(const char *newTitle) const char *getTitle() const voidsetIconTitle(const char *newIconTitle) const char *getIconTitle() const voidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL) °z¦Åâ¢Èâ6 <€ô€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w) const char *getWidgetName() const const char *getClassName() const 4òÇâÖÈâ& €€‚A€‚ÿDESCRIPTIONN$¢Èâ$Êâ* "€I€”‘€‚A€‚ÿThis class is used as a base class for all editors which use Motif sliders to edit fields in an Open Inventor scene graph node. This class is not meant to be instanced by programmers who want to use an editor in a program. It should only be used as a base class when designing new editors.¨~ÖÈâÌËâ* "€ý€”‘€‚A€‚ÿSoXtSliderSetBase is derived from SoXtComponent, but adds three concepts. First, there is a node to edit. Second, there are subcomponents. When an SoXtSliderSetBase is shown or hidden, so are its subcomponents. (As an example, an SoXtTransformSliderSet is composed of many subcomponents). Third, an SoXtSliderSetBase has a layout size, which is used to lay out the subcomponents.0 $ÊâüËâ& €€‚A€‚ÿMETHODS]+ÌËâYÌâ2 4€V€T”A‚S~‚A€ƒã’n%9‰‚ÿvirtual voidsetNode(SoNode *newNode) qHüËâÊÌâ) "€€”‘€‚A€‚ÿSets a new node as the node to be modified by this editor component. PYÌâÍâ2 4€<€T”A‚S~‚Aã’n%9€‰ƒ‚ÿSoNode *getNode() const }TÊÌâ—Íâ) "€¨€”‘€‚A€‚ÿReturns a pointer to the node currently being modified by this editor component. 1 ÍâÈÍâ& €€‚A€‚ÿSEE ALSOa&—Íâ)Îâ; F€L€”‘€‚Aã-áO€€ãé^x´‰‚ÿSoXtComponent, SoXtSliderSet > ÈÍâgÎâ1Ãzņ ÆPgÎâœÎâ' ãSoXtSpaceball5)ÎâœÎâ% € €ˆˆ€‚ÿSoXtSpaceball*gÎâÆÎâ# €€€‚ÿNAME†`œÎâLÏâ& €À€”‘€€‚ÿSoXtSpaceball - translates and reports events for a spaceball or SpaceMouse (Magellan) device3ÆÎâÏâ# € €€‚ÿINHERITS FROMW"LÏâÖÏâ5 :€D€”‘€ãsJY€‰€€€‚ÿSoXtDevice > SoXtSpaceball. Ïâã# €€€‚ÿSYNOPSÖÏâã)ÎâISW1ÖÏâgã& €b€”‘€€‚ÿ#include ¸ã…ãf š€q€T”A‚S~‚A€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€€‚€ƒ‚ƒ‚ƒ‚ÿenum Mask{Event mask values: Bitwise OR these to specify which events this device should queue.SoXtSpaceball::MOTIONSpaceball translation and rotationSoXtSpaceball::PRESSSpaceball button pressSoXtSpaceball::RELEASESpaceball button releaseSoXtSpaceball::ALLAll spaceball events}SoXtSpaceball(Mask mask = ALL)~SoXtSpaceball()virtual voidenable(Widget w, XtEventHandler f,XtPointer data, Window win = NULL)ÏxgãTãW |€ñ€T”A‚S~‚A€ƒ‚ã2™|—‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvirtual voiddisable(Widget w,XtEventHandler f,XtPointer data)virtual const SoEvent *translateEvent(XAnyEvent *xevent)voidsetRotationScaleFactor(float f)floatgetRotationScaleFactor() constvoidsetTranslationScaleFactor(float f)floatgetTranslationScaleFactor() conststatic SbBoolexists()voidsetFocusToWindow(SbBool flag)SbBoolisFocusToWindow() const4…ãˆã& €€‚A€‚ÿDESCRIPTIONç±Tãoã6 :€c€”‘€‚A€€€€€‚ÿThis class manages events generated by the spaceball, including spaceball motion (SoMotion3Event), and spaceball button press and release events (SoSpaceballButtonEvent).0 ˆãŸã& €€‚A€‚ÿMETHODSb4oãã. ,€h€T”A‚S~‚A€ƒ‚ƒ‚ÿSoXtSpaceball(Mask mask = ALL)~SoXtSpaceball()GŸãHã) "€<€”‘€‚A€‚ÿConstructor and destructor.È–ãã2 2€-€T”A‚S~‚A€ƒ‚ƒ‚ÿvirtual voidenable(Widget w, XtEventHandler f,XtPointer data, Window win = NULL)virtual voiddisable(Widget w,XtEventHandler f,XtPointer data)ßµHãïã* "€k€”‘€‚A€‚ÿThese functions will enable/disable this device for the passed widget.The callback function f will be invoked when events occur in w. Data is the clientData which will be passed.p>ã_ã2 4€|€T”A‚S~‚A€ã2™|—‰ƒ‚ÿvirtual const SoEvent *translateEvent(XAnyEvent *xevent)Žeïãíã) "€Ê€”‘€‚A€‚ÿThis converts a system event into an SoEvent, returning NULL if the event is not from this device.Ïœ_ã¼ ã3 4€9€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetRotationScaleFactor(float f)floatgetRotationScaleFactor() constvoidsetTranslationScaleFactor(float f)floatgetTranslationScaleFactor() constÖíã¼ ã* "€­€”‘€‚A€‚ÿThe spaceball reports rotations and translations as integers. These values must be scaled to be useful. these methods allow the scale values to be set. Default values are .006 for translation and .006 for scale.M¼ ã ã2 4€6€T”A‚S~‚A€㑶p6‰ƒ‚ÿstatic SbBoolexists()f=¼ ão ã) "€z€”‘€‚A€‚ÿReturn whether or not the spaceball device exists for use.‚H ãñ ã: D€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetFocusToWindow(SbBool flag)SbBoolisFocusToWindow() const6 o ã' ã, &€€”‘€‚A€‚ÿSets the input focus method used to get events from the space ball if FALSE: SpaceBall events are received only if the cursor is in the window or when the window has the focus (default) if TRUE: SpaceBall events are received even if cursor is out of the window Gñ ãn ã1‰Å¹ŠÆQn 㬠ãöMãSoXtTransformSliderSet>' 㬠ã% €2€ˆˆ€‚ÿSoXtTransformSliderSet*n ãÖ ã# €€€‚ÿNAME|V¬ ãRã& €¬€”‘€€‚ÿSoXtTransformSliderSet - component with Motif sliders for editing SoTransform nodes3Ö ã…ã# € €€‚ÿINHERITS FROM¦YRã+ãM j€²€”‘€ã-áO€ã.06΀‰€ãé^x´€‰€€€‚ÿSoXtComponent > SoXtSliderSetBase >SoXtSliderSet > SoXtTransformSliderSet. …ãYã# €€€‚ÿSYNOPSIS[2+ã´ã) "€d€”‘€‚9€‚ÿ#include V-Yã@ã) "€Z€”‘€‚9€‚ÿMethods from class SoXtTransformSl´ã@ã' ãiderSet:䦴ãú@ã> J€M€T”A‚S~‚A€ƒã‘¶p6‰ã’n%9‰‚ƒ‚ÿSoXtTransformSliderSet(Widget parent = NULL,const char *name = NULL, SbBool buildInsideParent =TRUE,SoNode *newEditNode = NULL) ~SoXtTransformSliderSet()Y*@ãSAã/ .€T€”‘€‚A€ã.06Ή‚ÿMethods from class SoXtSliderSetBase:Gú@ãÔAã: D€Ž€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ÿvirtual voidsetNode(SoNode *newNode) SoNode *getNode() const V'SAã*Bã/ .€N€”‘€‚A€ã-áOÿMethods from class SoXtComponent: LêÔAãvDãb ’€Õ€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow() virtual voidhide() SbBoolisVisible() WidgetgetWidget() const SbBoolisTopLevelShell() const WidgetgetShellWidget() const WidgetgetParentWidget() const voidsetSize(const SbVec2s &size) SbVec2sgetSize() Display *getDisplay() voidsetTitle(const char *newTitle) const char *getTitle() const voidsetIconTitle(const char *newIconTitle) const char *getIconTitle() const voidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL) °z*Bã&Eã6 <€ô€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w) const char *getWidgetName() const const char *getClassName() const 4vDãZEã& €€‚A€‚ÿDESCRIPTIONÞ´&Eã8Fã* "€i€”‘€‚A€‚ÿThis class defines an editor that uses Motif Sliders to edit fields in an SoTransform node. There are sliders for editing the translation, scale, rotation, and transform center.1 ZEãiFã& €€‚A€‚ÿMETHODS æ¨8FãOGã> J€Q€T”A‚S~‚A€ƒã‘¶p6‰ã’n%9‰‚ƒ‚ÿSoXtTransformSliderSet(Widget parent = NULL,const char *name = NULL, SbBool buildInsideParent = TRUE,SoNode *newEditNode = NULL) ~SoXtTransformSliderSet() ‹aiFãÚGã* $€Â€”‘€‚A€‚ÿConstructor and destructor. At construction time the transform node to edit can be supplied. 2 OGã Hã& €€‚A€‚ÿRESOURCES!ßÚGã-MãB R€¿ €”‘€‚A€‚ÿ!!------------------------------------------------ !! Transform Slider Set !!------------------------------------------------ *IvTransformSliderTrans.labelString: TRANSLATIONS *IvTransformSliderTransX.labelString: X Translation *IvTransformSliderTransY.labelString: Y Translation *IvTransformSliderTransZ.labelString: Z Translation *IvTransformSliderScale.labelString: SCALES *IvTransformSliderScaleX.labelString: X Scale *IvTransformSliderScaleY.labelString: Y Scale *IvTransformSliderScaleZ.labelString: Z Scale *IvTransformSliderRotate.labelString: ROTATIONS *IvTransformSliderRotateX.labelString: X Rotate *IvTransformSliderRotateY.labelString: Y Rotate *IvTransformSliderRotateZ.labelString: Z Rotate *IvTransformSliderScaleOrient.labelString: SCALE ORIENTATION *IvTransformSliderScaleOrientX.labelString: X Rotate *IvTransformSliderScaleOrientY.labelString: Y Rotate *IvTransformSliderScaleOrientZ.labelString: Z Rotate *IvTransformSliderCenter.labelString: CENTER *IvTransformSliderCenterX.labelString: X Center *IvTransformSliderCenterY.labelString: Y Center *IvTransformSliderCenterZ.labelString: Z Center *IvTransformSliderTitle.labelString: Transform Editor *IvTransformSliderIconTitle.labelString: Xf Editor 1 Hã^Mã& €€‚A€‚ÿSEE ALSO˜K-MãöMãM j€–€”‘€‚Aãé^x´€‰€€ã.06Ή€€ã-áO€‚ÿSoXtSliderSet, SoXtSliderSetBase, SoXtComponent, SoTransform; ^Mã1Nã1ãc† ÆÊR1NãcNãiåSoXtViewer2 öMãcNã% €€ˆˆ€‚ÿSoXtViewer*1NãNã# €€€‚ÿNAMEX2cNãåNã& €d€”‘€€‚ÿSoXtViewer - viewer component lowest base class5NãOã$ €"€€‚‚ÿINHERITS FROMLåNã·OãQ r€˜€”‘€ã-áO€ã‰2쀉€ã{ç1€‰€€€‚€‚ÿSoXtComponent > SoXtGLWidget > SoXtRenderArea > SoXtViewer2 Oã €ã& €€€€%‚ÿSYNOPSIS·Oã €ãöMãX/·Oãd€ã) "€^€”‘€€€‚ÿ#include uB €ãÙ€ã3 6€„€T”A‚S~‚A€ƒã®ö¿÷‰‚ÿtypedef voidSoXtViewerCB(void *userData,SoXtViewer *viewer)5 d€ãã) "€€”‘€‚A€‚ÿCallback.ë´Ù€ãùã7 <€i€T”A‚S~‚A€ƒ‚ƒ€‚ÿtypedef voidSoXtViewerFPSCB(float fps,void *userData,SoXtViewer *viewer)typedef voidSoXtViewerDecimationPercentageCB(float percentage,void *userData,SoXtViewer *viewer)ˆ_ã‚ã) "€¾€”‘€‚A€‚ÿLarge Model Viewing notification callbacks for frames per second, and decimation percentage.ÍùãN†ã¯ ,=€T”A‚S~‚A€ƒ€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€€ƒ€€ƒ€€‚€ƒ€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€€ƒ€‚ÿenum Type{SoXtViewer::BROWSERCamera views scene, but is not added to sceneSoXtViewer::EDITORCamera is added to user's scene}enum DecimationStrategy{SoXtViewer::NORMALDecimation is not changedSoXtViewer::FIXED_NUM_TRIANGLESTry to fix number of triangles drawnSoXtViewer::FRAMES_PER_SECONDTry to fix frames per secondSoXtViewer::FIXED_PERCENTAGEUse given decimation percentage}enum DrawStyle{SoXtViewer::VIEW_AS_ISUnchangedSoXtViewer::VIEW_HIDDEN_LINERender only the frontmost linesSoXtViewer::VIEW_NO_TEXTURERender without texturesSoXtViewer::VIEW_LOW_COMPLEXITYRender low complexity and no textureSoXtViewer::VIEW_LINEWireframe draw styleSoXtViewer::VIEW_POINTPoint draw styleSoXtViewer::VIEW_BOXBounding box draw style} B‚ãî‡ã^ Š€…€T”A‚S~‚A€ƒ€ƒ€€ƒ€‚ƒ€ƒ€€ƒ€€ƒ€‚ÿenum DrawType{SoXtViewer::STILLApplies to static renderingSoXtViewer::INTERACTIVEApplies to rendering while interactive viewing}enum BufferType{SoXtViewer::BUFFER_SINGLESingle bufferSoXtViewer::BUFFER_DOUBLEDouble bufferSoXtViewer:BUFFER_INTERACTIVEDouble buffer while interactive viewing}J!N†ã8ˆã) "€B€”‘€‚A€‚ÿMethods from class SoXtViewer:?Ëî‡ãwŠãt ¶€—€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ€‚€ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒ‚ƒ‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoXtViewer::DrawType type,SoXtViewer::DrawStyle style)SoXtViewer::DrawStylegetDrawStyle(SoXtViewer::DrawType type)#²8ˆãšŒãq °€e€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ÿvoidsetBufferingType(SoXtViewer::BufferType type)SoXtViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual voidsetCursorEnabled(SbBool onOrOff) SbBoolisCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()voidsetStereoOffset(float dist)ÈwŠã³ŽãQ p€‘€T”A‚S~‚A€ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿfloatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoXtViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidcopyView(Time eventTime)voidpasteView(Time eventTime)$ÏšŒããÀãU x€Ÿ€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvirtual void recomputeSceneSize()voidsetDecimationStrategy(DecimationStrategy strategy)DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal)int32_tgetGoalNumberOfTriangles()voidsetGoalFramesPerSecond(float³ŽããÀãöMã goal)floatgetGoalFramesPerSecond()voidsetFixedPercentage(float percent)floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff)SbBoolisFullRenderingWhenStill()SbBoolisStillNow() N³Žã1Âã8 >€-€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData)voidsetNumSamples(int numFrames)intgetNumSamples() void setDecimationPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL)float getCurrentDecimationPercentage()V'ãÀã‡Âã/ .€N€”‘€‚A€ã{ç1‰‚ÿMethods from class SoXtRenderArea:,µ1Âã³Äãw ¼€k€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ€‚€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãsJY‰‚ƒãsJY‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoXtDevice *)voidunregisterDevice(SoXtDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «‡Âã¿Æãa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤³Äã×Èãt ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)6Ú¿Æã Ëã\ †€µ€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoXtRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºW×ÈãÇÌãc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constT% ËãÍã/ .€J€”‘€‚A€ã‰2쉂ÿMethods from class SoXtGLWidget:(ÃÇÌãCÏãe ˜€‡€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ€‚€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()WidgetgetNormalWindow()WidgetgetOverlayWindow()GLXContextgetNormalContext()GLXContextgetOverlayContext()WidgetgetNormalWidget()WidgetgetOverlayWidget()virtual voidsetNormalVisual(XVisualInfo *vis)XVisualInfo *getNormalVisual()virtual voidsetOverlayVisual(XVisualInfo *vis)XVisualInfo *getOverlayVisual()œbÍãßÏã: D€Ä€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag)SbBoolisDrawToFrontBufferEnable() constU&CÏã@ä/ .€L€”‘€ßÏã@äöMã‚A€ã-áOÿMethods from class SoXtComponent:EÝßÏã…äh ž€»€T”A‚S~‚A€ƒ‚ƒ€‚㑶p6€‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()WidgetgetWidget() constSbBoolisTopLevelShell() constWidgetgetShellWidget() constWidgetgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()Display *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL)­w@ä2ä6 <€î€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w)const char *getWidgetName() constconst char *getClassName() const4…äfä& €€‚A€‚ÿDESCRIPTION Å2äsäH ^€‹€”‘€‚A€€€€€€€€€€€‚ÿThis is the lowest base class for viewer components. This class adds the notion of a camera to the SoXtRenderArea class. Whenever a new scene is specified with setSceneGraph(), the first camera encountered will be by default used as the edited camera. If no camera is found in the scene, the viewer will automatically create one. The viewer will use the first SoVRMLViewpoint encountered (if any) to define the parameters of the created camera. If the viewer type is SoXtViewer::BROWSER then the camera is told to view the supplied scene graph but is not added beneath that scene graph root. If the viewer type is SoXtViewer::EDITOR then the camera is added beneath the supplied scene graph root.Ù¬fäLä- (€Y€”‘€‚A€€‚ÿIn addition to automatically creating a camera if needed, this base class also creates a headlight (directional light which is made to follow the camera), enables the user to change drawing styles (like wireframe or move wireframe), and buffering types. This base class also provides a convenient way to have the camera near and far clipping planes be automatically adjusted to minimize the clipping of objects in the scene.>säŠ ä0 .€€”‘€‚A€€€‚ÿViewers allow the application to shadow event processing. When the application registers an event processing callback by calling setEventCallback() the viewer will invoke this callback for every X event it receives. However, unlike the render area, the viewer ignores the return value of this callback, and processes the event as usual. This allows the application to expand viewing capabilities without breaking the viewing paradigm. It is an easy way to hook up other devices, like the spaceball, to an existing viewer.kALäõ ä* "€ƒ€”‘€‚A€‚ÿDepending on the DecimationStrategy, a viewer can control the complexity of a scene by adjusting the Decimation elements to reach certain goals. The viewer can attempt to keep a constant frame rate or a constant number of triangles rendered. The viewer can be set to switch to full detail when the scene is not moving.¦|Š ä› ä* "€ù€”‘€‚A€‚ÿIn order to set the frame rate, the viewer times each render action traversal, and then adjusts the Decimation percentage to keep the time within a range depending on the goal frames per second. To fix the number of triangles, the viewer applies a GetPrimitiveCountAction before each traversal and sets the DecimationPercentage to the desired percentage of the resulting count.®~õ äIä0 .€ý€”‘€‚A€€€‚ÿIf the DecimationStrategy is NORMAL (the default) then nothing special is done. If the strategy is FIXED_PERCENTAGE, then the same percentage is used for every render. Also note that FIXED_PERCENTAGE sets the DecimationType to be PERCENTAGE (all others use AUTOMATIC), which means that SoLODs will not use the camera position in their calculations, and can therefore be cached.uK› äÊ@ä* "€—€”‘€‚A€‚ÿThe application can add callbacks from the viewer to get the current decimation level, the current primitive count and the current frames peIäÊ@äöMãr second. The decimation level and primitive count callbacks are called every frame. The frames per second callback is called after a certain number of samples have been averaged together.0 Iäú@ä& €€‚A€‚ÿMETHODS}CÊ@äwAä: D€†€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()Þ´ú@äUBä* "€i€”‘€‚A€‚ÿSet and get the edited camera. Setting the camera is only needed if the first camera found in the scene when setting the scene graph isn't the one the user really wants to edit.ƒFwAäØBä= J€Œ€T”A‚S~‚A€ƒãB-9‰‚ãB-9‰ƒ€‚ÿvirtual voidsetCameraType(SoType type)SoTypegetCameraType(),ðUBäDä< F€á€”‘€‚A€€€€€€€‚ÿSet and get the camera type that will be created by the viewer if no cameras are found in the scene graph (see SoPerspectiveCamera and SoOrthographicCamera). By default an SoPerspectiveCamera will be created if no camera are found.žuØBä¢Dä) "€ê€”‘€‚A€‚ÿNote: the set method will only take effect the next time a scene graph is specified (and if no cameras are found).IDäëDä/ .€4€T”A‚S~‚A€ƒ€‚ÿvirtual voidviewAll()g¢Dä{Eä) "€Î€”‘€‚A€‚ÿChanges the camera position to view the entire scene (the camera zoom or orientation isn't changed).wFëDäòEä1 2€Œ€T”A‚S~‚A€ƒ‚ƒ€‚ÿvirtual voidsaveHomePosition()virtual voidresetToHomePosition()Q({EäCFä) "€P€”‘€‚A€‚ÿSaves and restores the camera values.­eòEäðFäH `€Ê€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ€‚ãÀú€‰ƒ‚ÿvoidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()sJCFäcGä) "€”€”‘€‚A€‚ÿTurns the headlight on/off (default on) and returns the headlight node.¾‹ðFä!Hä3 4€€T”A‚S~‚A€ƒ‚ƒ€‚ÿvoidsetDrawStyle(SoXtViewer::DrawType type,SoXtViewer::DrawStyle style)SoXtViewer::DrawStylegetDrawStyle(SoXtViewer::DrawType type)L"cGämIä* "€E€”‘€‚A€‚ÿSets/gets the current drawing style in the main view. The user can specify the INTERACTIVE draw style (draw style used when the scene changes) independently from the STILL style. Default is VIEW_AS_IS draw style for STILL and VIEW_SAME_AS_STILL for INTERACTIVE. Possible draw styles are:V-!HäÃIä) "€Z€”‘€‚A€‚ÿVIEW_AS_IS - Leaves the objects unchanged.»ŽmIä~Kä- (€€”‘€‚A€€‚ÿVIEW_HIDDEN_LINE - Renders the object as wireframe, but only shows the object front faces. This is accomplished using a two-pass rendering. In the first pass, the objects are rendered as FILLED using the background BASE_COLOR (this sets up the wanted z-buffer values). The second pass then renders the objects as LINES, while adjusting the z-buffer range to limit overlapping polygons problems.·‡ÃIä5Lä0 .€€”‘€‚A€€€‚ÿVIEW_NO_TEXTURE - Renders the objects without any textures. This is done by setting the override flag on an empty SoTexture2 node.6~KäkMä6 :€€”‘€‚A€€€€€‚ÿVIEW_LOW_COMPLEXITY - Renders the objects without any textures and with a low complexity. This is done by setting the override flag on an empty SoTexture2 node, and by setting a low complexity value on an SoComplexity node with override set to TRUE.ˆ_5LäóMä) "€¾€”‘€‚A€‚ÿVIEW_LINE - Renders the objects as LINES (no texture) with lighting model set to BASE_COLOR.Á—kMä´Nä* "€/€”‘€‚A€‚ÿVIEW_LOW_RES_LINE - Renders the objects as LINES (no texture) using a low complexity, with lighting model set to BASE_COLOR and no depth comparison.ŠaóMä>Oä) "€Â€”‘€‚A€‚ÿVIEW_POINT - Renders the objects as POINTS (no texture) with lighting model set to BASE_COLOR.Ù´Nä €ä* "€3€”‘€‚A€‚ÿVIEW_LOW_RES_POINT - Renders the objects as POINTS (no texture) using a low complexity, with lighting model set to BASE_COLOR and no depth comparison.>Oä €äöMãÊ >Oä×€ä* "€A€”‘€‚A€‚ÿVIEW_BBOX - Renders the objects with complexity BOUNDING_BOX, lighting model set to BASE_COLOR and drawing style LINES (no texture) with no depth comparison.⸠€ä¹ä* "€q€”‘€‚A€‚ÿVIEW_SAME_AS_STILL - This only applies to INTERACTIVE draw type. It enables the interactive draw style mode to match the regular draw style mode without having to set it explicitly._×€äF‚ä. ,€¾€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetBufferingType(SoXtViewer::BufferType type)SoXtViewer::BufferTypegetBufferingType()†]¹äÌ‚ä) "€º€”‘€‚A€‚ÿSets/gets the current buffering type in the main view (default SoXtViewer::BUFFER_DOUBLE).…HF‚äQƒä= J€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ€‚ÿvirtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() consté¿Ì‚ä:†ä* "€€”‘€‚A€‚ÿSet/get whether the viewer is turned on or off. When turned on, events are consumed by the viewer. When viewing is off, events are processed by the viewer's render area. This means events will be sent down to the scene graph for processing (i.e. picking can occur). Note that if the application has registered an event callback, it will be invoked on every message, whether viewing is turned on or not. However, the return value of this callback (which specifies whether the callback handled the event or not) is ignored when viewing is on. That is, the viewer will process the event even if the callback already did. This is to ensure that the viewing paradigm is not broken (default viewing is on).UQƒäɆä: D€ª€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvirtual voidsetCursorEnabled(SbBool onOrOff) SbBoolisCursorEnabled() const 2:†äû‡ä* "€€”‘€‚A€‚ÿSet/get whether the viewer is allowed to change the cursor over the renderArea window. When disabled, the cursor is undefined by the viewer and will not change as the mode of the viewer changes. When re-enabled, the viewer will reset it to the appropriate icon.øÎɆäóˆä* "€€”‘€‚A€‚ÿDisabling the cursor enables the application to set the cursor directly on the viewer window or on any parent widget of the viewer. This can be used when setting a busy cursor on the application shell. ‡Jû‡äz‰ä= J€”€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ€‚ÿvoidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constHóˆäŠä* "€=€”‘€‚A€‚ÿSet and get the auto clipping plane. When auto clipping is ON, the camera near and far planes are dynamically adjusted to be as tight as possible around the objects being viewed. When OFF, the user is expected to manually set those planes within the preference sheet (default is on).Õz‰ä—‹äE X€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ€‚€ƒ‚ƒ‚ÿvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()voidsetStereoOffset(float dist)floatgetStereoOffset() vŠä7ä* "€í€”‘€‚A€‚ÿTurns stereo viewing on/off on the viewer (default off). When in stereo mode, which may not work on all machines, the scene is rendered twice (in the left and right buffers) with an offset between the two views to simulate stereo viewing. Stereo glasses have to be used to see the effect. Stereo viewing is only possible with a graphics board that has support for stereo.}@—‹ä´ä= J€€€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ€‚ÿvoidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()zP7ä.ä* "€¡€”‘€‚A€‚ÿWhen the viewer is in seek mode, left mouse clicks initiate a pick, and the viewer changes its orientation and position to look at the picked object. This routine tells the seeking viewer whether to orient the camera towards the picked point (detail on), or the center of the object's bounding box (detail off). Default is detail on.h7´ä–ä1 2€n€T”A‚S~‚A€ƒ‚ƒ€‚ÿvoidsetSeekTime(float seconds)floatgetSeekTime()Ë¡.ämÀä* "€C€”‘€‚A€‚ÿSet the time a seek takes to change to the new camera location.–ämÀäöMã A value of zero seeks directly to the point without any animation. Default value is 2 seconds.A–ä®Áä= H€ €T”A‚S~‚A€ƒ‚ƒ€‚€ƒ‚ƒ‚ÿvoidaddStartCallback(SoXtViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoXtViewerCB *f,void *userData = NULL)4 mÀäâÂä* "€€”‘€‚A€‚ÿAdd/remove start and finish callback routines on the viewer. Start callbacks are called whenever the user starts doing interactive viewing (for example, mouse down), and finish callbacks are called when user is done doing interactive work (for example, mouse up).g>®ÁäIÃä) "€|€”‘€‚A€‚ÿNote: The viewer "this" pointer is passed as callback data.uAâÂä¾Ãä4 8€‚€T”A‚S~‚A€ƒ€‚€ƒ‚ÿvoidcopyView(Time eventTime)voidpasteView(Time eventTime) ÓIÃäÇÄä6 :€§€”‘€‚A€€€€€‚ÿCopy/paste the view. eventTime should be the time of the X event which initiated the copy or paste (e.g. if copy/paste is initiated from a keystroke, eventTime should be the time in the key down message.)O$¾ÃäÅä+ &€H€T”A‚S~‚A€‚ÿvirtual void recomputeSceneSize()ôÇÄä4Æä* "€é€”‘€‚A€‚ÿThis can be used to let the viewer know that the scene graph has changed so that the viewer can recompute things like speed which depend on the scene graph size. Note: This routine is automatically called whenever setSceneGraph() is called. ˜gÅäÌÆä1 2€Î€T”A‚S~‚A€ƒ‚ƒ€‚ÿvoidsetDecimationStrategy(DecimationStrategy strategy)DecimationStrategygetDecimationStrategy() b94Æä.Çä) "€r€”‘€‚A€‚ÿSet/get strategy to use to decide on decimation value.ƒRÌÆä±Çä1 2€¤€T”A‚S~‚A€ƒ‚ƒ€‚ÿvoidsetGoalNumberOfTriangles(int32_t goal)int32_tgetGoalNumberOfTriangles()mD.ÇäÈä) "€ˆ€”‘€‚A€‚ÿSet/get goal number of triangles for the viewer to try to render.{J±Çä™Èä1 2€”€T”A‚S~‚A€ƒ‚ƒ€‚ÿvoidsetGoalFramesPerSecond(float goal)floatgetGoalFramesPerSecond()kBÈäÉä) "€„€”‘€‚A€‚ÿSet/get goal frames per second for the viewer to try to render.wF™Èä{Éä1 2€Œ€T”A‚S~‚A€ƒ‚ƒ€‚ÿvoidsetFixedPercentage(float percent)floatgetFixedPercentage() jAÉäåÉä) "€‚€”‘€‚A€‚ÿSet/get fixed percentage for the viewer to render (0.0 to 1.0)–Y{Éä{Êä= J€²€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ€‚ÿvoidenableFullRenderingWhenStill(SbBool onOff)SbBoolisFullRenderingWhenStill()›råÉäËä) "€ä€”‘€‚A€‚ÿIf this flag is set, the viewer will render at full resolution when it sits still for a certain period of time.K{ÊäaËä2 4€2€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisStillNow() ^2Ëä¿Ëä, (€d€”‘€‚A€€‚ÿReturns whether the viewer is currently still.zMaËä9Ìä- *€š€T”A‚S~‚A€ƒ‚ÿvoidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData)T(¿ËäÌä, (€P€”‘€‚A€€‚ÿRegister frames per second callback.k:9ÌäøÌä1 2€t€T”A‚S~‚A€ƒ‚ƒ€‚ÿvoidsetNumSamples(int numFrames)intgetNumSamples() fÌä‡Íä) "€Ì€”‘€‚A€‚ÿSet/get how many frames should be timed before frames per second callback is called, default is 10.šløÌä!Îä. ,€Ø€T”A‚S~‚A€ƒ‚ÿvoid setDecimationPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL)X,‡ÍäyÎä, (€X€”‘€‚A€€‚ÿRegister decimation percentage callback.V*!ÎäÏÎä, (€T€T”A‚S~‚A€ƒ‚ÿfloat getCurrentDecimationPercentage()tHyÎäCÏä, (€€”‘€‚A€€‚ÿReturn the Decimation Percentage the viewer used in its last render.1 ÏÎätÏä& €€‚A€‚ÿSEE ALSOé{CÏäiån ¬€ö€”‘€‚Aã-áO€ã{ç1€‰€ã(’€‰€ã³^ÖЀ‰€ãá¿" €‰€㛩€‰€‚ÿSoXtComponent, SoXtRendetÏäiåöMãrArea, SoXtExaminerViewer, SoXtWalkViewer, SoXtFlyViewer, SoXtPlaneViewer?tÏä¨å11¹ŠÆÿÿÿÿS¨åÞåcÁåSoXtWalkViewer6iåÞå% €"€ˆˆ€‚ÿSoXtWalkViewer*¨åå# €€€‚ÿNAMElFÞåtå& €Œ€”‘€€‚ÿSoXtWalkViewer - viewer component which moves the camera in a plane3å§å# € €€‚ÿINHERITS FROMtå©år ²€!€”‘€ã-áO€ã‰2쀉€ã{ç1€‰€ã®ö¿÷€‰€ãµGi^€‰€ãl>‡Ï€‰€€€‚ÿSoXtComponent > SoXtGLWidget > SoXtRenderArea > SoXtViewer > SoXtFullViewer > SoXtConstrainedViewer > SoXtWalkViewer. §å×å# €€€‚ÿSYNOPSIS€V©åWå* $€¬€”‘€€‚€‚ÿ#include Methods from class SoXtWalkViewer: È×ådåE X€‘€T”A‚S~‚A€ƒã‘¶p6‰ãµGi^‰ã®ö¿÷‰‚ƒ‚ÿSoXtWalkViewer(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoXtFullViewer::BuildFlag flag = BUILD_ALL,SoXtViewer::Type type = BROWSER)~SoXtWalkViewer()].WåÁå/ .€\€”‘€‚A€ãl>‡Ï‰‚ÿMethods from class SoXtConstrainedViewer:ŒRdåMå: D€¤€T”A‚S~‚A€ƒã¨ƒõ(‰‚㨃õ(‰ƒ‚ÿvoidsetUpDirection(const SbVec3f &newUpDirection)SbVec3fgetUpDirection()V'Áå£å/ .€N€”‘€‚A€ãµGi^‰‚ÿMethods from class SoXtFullViewer:ôšMå—åZ ‚€5€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetDecoration(SbBool onOrOff)SbBoolisDecoration()voidsetPopupMenuEnabled(SbBool trueOrFalse)SbBoolisPopupMenuEnabled()WidgetgetAppPushButtonParent() constvoidaddAppPushButton(Widget newButton)voidinsertAppPushButton(Widget newButton,int index)voidremoveAppPushButton(Widget oldButton)intfindAppPushButton(Widget oldButton)intlengthAppPushButton()WidgetgetRenderAreaWidget()R#£åéå/ .€F€”‘€‚A€ã®ö¿÷‰‚ÿMethods from class SoXtViewer:WÑ—å@ å† Ú€£€T”A‚S~‚A€ƒã½V)\‰‚ã½V)\‰ƒ‚ƒãB-9‰‚ãB-9‰ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãÀú‰ƒ‚ƒã®ö¿÷‰ã®ö¿÷‰‚ã®ö¿÷‰ƒã®ö¿÷‰‚ÿvirtual voidsetCamera(SoCamera *cam)SoCamera *getCamera()virtual voidsetCameraType(SoType type)SoTypegetCameraType()virtual voidviewAll()virtual voidsaveHomePosition()virtual voidresetToHomePosition()voidsetHeadlight(SbBool onOrOff)SbBoolisHeadlight()SoDirectionalLight *getHeadlight()voidsetDrawStyle(SoXtViewer::DrawType type,SoXtViewer::DrawStyle style)SoXtViewer::DrawStylegetDrawStyle(SoXtViewer::DrawType type)—éåR å{ Ä€/€T”A‚S~‚A€ƒã®ö¿÷‰‚ã®ö¿÷‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetBufferingType(SoXtViewer::BufferType type)SoXtViewer::BufferTypegetBufferingType()virtual voidsetViewing(SbBool onOrOff)SbBoolisViewing() constvirtual void setCursorEnabled(SbBool onOrOff) SbBool isCursorEnabled() const voidsetAutoClipping(SbBool onOrOff)SbBoolisAutoClipping() constvirtual voidsetStereoViewing(SbBool onOrOff)virtual SbBoolisStereoViewing()Ê@ åmåQ p€•€T”A‚S~‚A€ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetStereoOffset(float dist)floatgetStereoOffset()voidsetDetailSeek(SbBool onOrOff)SbBoolisDetailSeek()voidsetSeekTime(float seconds)floatgetSeekTime()voidaddStartCallback(SoXtViewerCB *f,void *userData = NULL)voidaddFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveStartCallback(SoXtViewerCB *f,void *userData = NULL)voidremoveFinishCallback(SoXtViewerCB *f,void *userData = NULL)voidcopyView(Time eventTime).ßR å§@åO l€¿€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidpasteView(Time eventTime)virtual voidrecomputeSceneSize() voidsetDecimationStrategy(DecimationStrategy strategy) DecimationStrategygetDecimationStrategy() voidsetGoalNumberOfTriangles(int32_t goal) int32_tgetGoalNumberOfTriangles() voidsetGoalFramesPerSecond(float goal) floatgetGoalFramesPerSecond() vomå§@åiåidsetFixedPercentage(float percent) floatgetFixedPercentage() voidenableFullRenderingWhenStill(SbBool onOff) SbBoolisFullRenderingWhenStill() m.måBå? L€]€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSbBoolisStillNow() voidsetFramesPerSecondCallback(SoXtViewerFPSCB *callback,void *userData) voidsetNumSamples(int numFrames) intgetNumSamples() voidsetDecimationPercentageCallback(SoXtViewerDecimationPercentageCB *callback,void *userData = NULL) floatgetCurrentDecimationPercentage() V'§@åjBå/ .€N€”‘€‚A€ã{ç1‰‚ÿMethods from class SoXtRenderArea:$³BåŽDåq °€g€T”A‚S~‚A€ƒã’n%9‰‚ã’n%9‰ƒ‚ƒã’n%9‰‚ã’n%9‰ƒ‚ƒãsJY‰‚ƒãsJY‰‚ƒãÀ"%‰‚ãÀ"%‰ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidsetSceneGraph(SoNode *newScene)virtual SoNode *getSceneGraph()voidsetOverlaySceneGraph(SoNode *newScene)SoNode *getOverlaySceneGraph()voidregisterDevice(SoXtDevice *)voidunregisterDevice(SoXtDevice *)voidsetBackgroundColor(const SbColor &c)const SbColor &getBackgroundColor() constvoidsetBackgroundIndex(int index)intgetBackgroundIndex() constvoidsetOverlayBackgroundIndex(int index) «jBåšFåa €W€T”A‚S~‚A€ƒ‚ƒãÀ"%‰‚ƒãÀ"%‰‚ƒãñf‘¸‰‚ãñf‘¸‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ÿintgetOverlayBackgroundIndex() constvoidsetColorMap(int startIndex,int num,const SbColor *colors)voidsetOverlayColorMap(int startIndex,int num,const SbColor *colors)voidsetViewportRegion(const SbViewportRegion &newRegion)const SbViewportRegion &getViewportRegion() constvoidsetTransparencyType(SoGLRenderAction::TransparencyType type)SoGLRenderAction::TransparencyTypegetTransparencyType() const¤ŽDå²Håt ¶€I€T”A‚S~‚A€ƒã‘¶p6‰‚ƒã‘¶p6‰‚ƒã‘¶p6‰ã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚ÿvoidsetAntialiasing(SbBool smoothing,int numPasses)voidgetAntialiasing(SbBool &smoothing,int &numPasses) constvoidsetClearBeforeRender(SbBool trueOrFalse,SbBool zbTrueOrFalse=TRUE)SbBoolisClearBeforeRender() constSbBoolisClearZBufferBeforeRender() constvoidsetClearBeforeOverlayRender(SbBool trueOrFalse)SbBoolisClearBeforeOverlayRender() constvoidsetAutoRedraw(SbBool trueOrFalse)6ÚšFåèJå\ †€µ€T”A‚S~‚A㑶p6€‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒã(ç –‰‚ƒã(ç –‰‚ƒ‚ƒã©öø(‰‚ÿSbBoolisAutoRedraw() constvoidsetRedrawPriority(unsigned long priority)unsigned longgetRedrawPriority() conststatic unsigned longgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection *s)voidredrawOverlayOnSelectionChange(SoSelection *s)voidsetEventCallback(SoXtRenderAreaEventCB *fcn,void *userData = NULL)voidsetGLRenderAction(SoGLRenderAction *ra)ºW²Hå¢Låc ”€¯€T”A‚S~‚Aã©öø(€‰ƒ‚ƒã©öø(‰‚ã©öø(‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ƒãQ´tK‰‚ãQ´tK‰ƒ‚ÿSoGLRenderAction *getGLRenderAction() constvoidsetOverlayGLRenderAction(SoGLRenderAction *ra)SoGLRenderAction *getOverlayGLRenderAction() constvoidsetSceneManager(SoSceneManager *sm)SoSceneManager *getSceneManager() constvoidsetOverlaySceneManager(SoSceneManager *sm)SoSceneManager *getOverlaySceneManager() constT%èJåöLå/ .€J€”‘€‚A€ã‰2쉂ÿMethods from class SoXtGLWidget: Á¢LåOå_ Œ€ƒ€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvoidsetBorder(SbBool onOrOff)SbBoolisBorder() constvoidsetDoubleBuffer(SbBool onOrOff)SbBoolisDoubleBuffer()WidgetgetNormalWindow()WidgetgetOverlayWindow()GLXContextgetNormalContext()GLXContextgetOverlayContext()WidgetgetNormalWidget()WidgetgetOverlayWidget()virtual voidsetNormalVisual(XVisualInfo *vis)XVisualInfo *getNormalVisual()virtual voidsetOverlayVisual(XVisualInfo *vis)XVisualInfo *getOverlayVisual()ždöLå´Oå: D€È€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDrawToFrontBufferEnable(SbBool enableFlag) SbBoolisDrawToFrontBufferEnable() const U&Oå€å/ .€L€”‘€‚A€ã-áOÿMethods from class SoXtComp´Oå€åiåonent:=Û´OåR‚åb ’€·€T”A‚S~‚A€ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚㑶p6‰ƒ‚ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿvirtual voidshow()virtual voidhide()SbBoolisVisible()WidgetgetWidget() constSbBoolisTopLevelShell() constWidgetgetShellWidget() constWidgetgetParentWidget() constvoidsetSize(const SbVec2s &size)SbVec2sgetSize()Display *getDisplay()voidsetTitle(const char *newTitle)const char *getTitle() constvoidsetIconTitle(const char *newIconTitle)const char *getIconTitle() constvoidsetWindowCloseCallback(SoXtComponentCB *func,void *data = NULL)­w€åÿ‚å6 <€î€T”A‚S~‚A€ã-áO‚ƒ‚ƒ‚ÿstatic SoXtComponent *getComponent(Widget w)const char *getWidgetName() constconst char *getClassName() const4R‚å3ƒå& €€‚A€‚ÿDESCRIPTIONëÁÿ‚å…å* "€ƒ€”‘€‚A€‚ÿThe paradigm for this viewer is a walk-through of an architectural model. Its primary behavior is forward, backward, and left/right turning motion while maintaining a constant "eye level". It is also possible to stop and look around at the scene. The eye level plane can be disabled, allowing the viewer to proceed in the "look at" direction, as if on an escalator. The eye level plane can also be translated up and down - similar to an elevator.0 3ƒåN…å& €€‚A€‚ÿMETHODS È…å[†åE X€‘€T”A‚S~‚A€ƒã‘¶p6‰ãµGi^‰ã®ö¿÷‰‚ƒ‚ÿSoXtWalkViewer(Widget parent = NULL,const char *name = NULL,SbBool buildInsideParent = TRUE,SoXtFullViewer::BuildFlag flag = BUILD_ALL,SoXtViewer::Type type = BROWSER)~SoXtWalkViewer()Æ–N…å!‡å0 .€-€”‘€‚A€€€‚ÿConstructor and destructor which specifies the viewer type. Please refer to the SoXtViewer reference pages for a description of the viewer types.3 [†åT‡å& €€‚A€‚ÿRESOURCES Ò›!‡å&Šå7 <€7€”‘€‚A€‚ÿ!!------------------------------------------------ !! Decorations for Walk Viewer !! !!------------------------------------------------ *IvWalkTitle.labelString: Walk Viewer *IvWalkPrefTitle.labelString: Walk Viewer Preference Sheet *IvWalkPopupTitle.labelString: Walk Viewer *IvWalkIconTitle.labelString: Walk Viewer *IvLeftTrimForm.IvH.labelString: H !!------------------------------------------------ !! Preferences for Walk Viewer !! !!------------------------------------------------ *IvFormPreference5.IvViewerSpeed.labelString: Viewer speed *IvFormPreference5.IvIncrease.labelString: increase *IvFormPreference5.IvDecrease.labelString: decrease.T‡åTŠå& €€‚A€‚ÿUSAGEF&ŠåšŠå) "€:€”‘€‚A€‚ÿ(For 3-button mouse only.)÷ÊTŠå‘‹å- (€•€”‘€‚A€€‚ÿLeft Mouse: Walk mode. Click down and move up and down for forwards and backwards motion. Move right and left for turning. Speed increases exponentially with the distance from the mouse-down origin.xKšŠå Œå- *€–€”‘€‚A€€‚ÿMiddle Mouse orCtrl + Left Mouse: Translate up, down, left, and right.šn‘‹å£Œå, (€Ü€”‘€‚A€€‚ÿCtrl + Middle Mouse: Tilt the camera up/down and right/left. This allows you to look around while stopped.ª~ ŒåMå, (€ü€”‘€‚A€€‚ÿ + Left Mouse: Alternative to the Seek button. Press (but do not hold down) the key, then click on a target object.à³£Œå-Žå- (€g€”‘€‚A€€‚ÿ + Left Mouse: Press (but do not hold down) the key, then click on a target object to set the "up" direction to the surface normal. By default +y is the "up" direction.Q%Må~Žå, (€J€”‘€‚A€€‚ÿRight Mouse: Open the popup menu.U(-ŽåÓå- (€Q€”‘€‚A€€‚ÿALT: When the viewer is in selection (a.k.a. pick) mode, pressing and holding the ALT key temporarily switches the viewer to viewing mode. When the ALT key is released, the viewer returns to selection mode. Note: If any of the mouse buttons are currently depressed, the ALT key has no effect.1 ~ŽåÀå& €€‚A€‚ÿSEE ALÓåÀåiåSOSÏÓåcÁå„ Ö€Ÿ€”‘€‚AãµGi^€‰€ã®ö¿÷€‰€ã-áO€ã{ç1€‰€㛩€‰€ã(’€‰€ãá¿" €‰€€ã‡B艂ÿSoXtFullViewer, SoXtViewer, SoXtComponent, SoXtRenderArea, SoXtPlaneViewer, SoXtExaminerViewer, SoXtFlyViewer, Walk Viewer (illustration and additional info on mouse buttons)> Àå¡Áå1Ò(„–3ÌT¡ÁåÖÁå\æSoWin Classes5cÁåÖÁå% € €ˆˆ€‚ÿSoWin ClassesqL¡ÁåGÂå% €˜€”€‚‚ÿThe stereo-related SoWin classes are listed in a separate table (below).…<ÖÁåÌÂåI#b€xã $€€”ãH€‰‚ÿ€€”‚ÿÿÿSoWinRoutines for Open Inventor/Windows compatibilityƒ:GÂåOÃåI#b€tã $€€”ãzÅe‰€‰‚ÿ€&€”‚ÿÿÿSoWinClipboardSupports copy/paste for Open InventorŸVÌÂåîÃåI#b€¬ã $€€”ãÃè9€‰‚ÿ€2€”‚ÿÿÿSoWinCollisionViewerClass to manage collisions between the camera and the scene’IOÃå€ÄåI#b€’ã $€€”㜽AK€‰‚ÿ€*€”‚ÿÿÿSoWinColorEditorComponent that lets you edit a color interactively’IîÃåÅåI#b€’ã $€€”ã¹Ä L€‰‚ÿ€&€”‚ÿÿÿSoWinComponentAbstract base class for all Open Inventor components°g€ÄåÂÅåI#b€Îã $€€”ãx-"€‰‚ÿ€6€”‚ÿÿÿSoWinConstrainedViewerBase viewer class which adds camera constraints given a world up direction–MÅåXÆåI#b€šã $€€”ãÊÌø!€‰‚ÿ€ €”‚ÿÿÿSoWinDeviceAbstract base class device for use with the SoWinRenderArea“JÂÅåëÆåI#b€”ã $€€”ã¡<½€‰‚ÿ€@€”‚ÿÿÿSoWinDirectionalLightEditorComponent for editing directional lights£ZXÆåŽÇåI#b€´ã $€€”ãKã€(€‰‚ÿ€0€”‚ÿÿÿSoWinExaminerViewerViewer component which uses a virtual trackball to view the data¡XëÆå/ÈåI#b€°ã $€€”ãm£óh€‰‚ÿ€&€”‚ÿÿÿSoWinFlyViewerViewer component for flying through space, with a constant world up¢YŽÇåÑÈåI#b€²ã $€€”ã9€õ€‰‚ÿ€(€”‚ÿÿÿSoWinFullViewerBase viewer class which adds a decoration around the rendering area{2/ÈåLÉåI#b€dã $€€”ã-‹2‘€‰‚ÿ€$€”‚ÿÿÿSoWinGLWidgetComponent for OpenGL renderingDÑÈåÙÉåI#b€ˆã $€€”ã“âyz€‰‚ÿ€$€”‚ÿÿÿSoWinKeyboardTranslates and reports messages for the keyboard™PLÉårÊåI#b€ ã $€€”ãHf˜7€‰‚ÿ€0€”‚ÿÿÿSoWinMaterialEditorComponent which lets you edit a material interactively‡>ÙÉåùÊåI#b€|ã $€€”ã ³@8€‰‚ÿ€€”‚ÿÿÿSoWinMouseTranslates and reports messages for the mouse’IrÊå‹ËåI#b€’ã $€€”ãîeà€‰‚ÿ€*€”‚ÿÿÿSoWinPlaneViewerViewer component which moves the camera in a plane‘HùÊåÌåI#b€ã $€€”ãÿ3È€‰‚ÿ€(€”‚ÿÿÿSoWinRenderAreaComponent for rendering Open Inventor scene graphsŒC‹Ëå¨ÌåI#b€†ã $€€”ãñÏÊh€‰‚ÿ€&€”‚ÿÿÿSoWinSpaceBallTranslate and reports events for the spaceball}4Ìå%ÍåI#b€hã $€€”ãrPnÀ€‰‚ÿ€ €”‚ÿÿÿSoWinViewerViewer component lowest base class‘H¨Ìå¶ÍåI#b€ã $€€”ã7—ìg€‰‚ÿ€(€”‚ÿÿÿSoWinWalkViewerViewer component which moves the camera in a plane'%ÍåÝÍå$ €€”€‚ÿB¶ÍåÎå# €>€€‚ÿStereo-Related SoWin Classes„;ÝÍå£ÎåI#b€vëÇ $€€”ãÜöó{€‰‚ÿ€0€”‚ÿÿÿSoWinAnaglyphStereoClass for anaglyph stereo support‰@Îå,ÏåI#b€€ëÇ $€€”ã3$ËO€‰‚ÿ€4€”‚ÿÿÿSoWinHalfScreenStereoClass for half-screen stereo supportˆ?£Îå´ÏåI#b€~ëÇ $€€”ãɃu{€‰‚ÿ€4€”‚ÿÿÿSoWinInterlacedStereoClass for interlaced stereo support£Z,ÏåcæI#b€´ëÇ $€€”ãŽI„5€‰‚ÿ€,€”‚ÿÿÿS´ÏåcæcÁåoWinNoStereoViewMakes a stereo viewer behave like a monoscopic (non-stereo) viewer}4´ÏåàæI#b€hëÇ $€€”ãpsz©€‰‚ÿ€&€”‚ÿÿÿSoWinRawStereoClass for OpenGL stereo support|3cæ\æI#b€fëÇ $€€”ã=¡'瀉‚ÿ€(€”‚ÿÿÿSoWinSSDIStereoClass for SSDI stereo supportŸVàæûæI#b€¬ëÇ $€€”ãL CÀ‰‚ÿ€,€”‚ÿÿÿSoWinStereoDialogComponent that lets you modify stereo attributes interactively†=\ææI#b€zëÇ $€€”ãŽÛa€‰‚ÿ€,€”‚ÿÿÿSoWinStereoViewerPure virtual class for stereo support~5ûæÿæI#b€jëÇ $€€”ã?/}¦€‰‚ÿ€0€”‚ÿÿÿSoWinStereoViewTypeClass for stereo managementræœæ+ &€ä€€‚€‚€‚ÿOther SoWin ClassesThe following classes have no equivalent in the Windows implementation of Open Inventor:À’ÿæ\æ. *€%€”‘€€‚ÿSoXtInputFocusSoXtLightSliderSetSoXtMaterialListSoXtMaterialSliderSetSoXtPrintDialogSoXtSliderSetSoXtSliderSetBaseSoXtTransformSliderSet= œæ™æ1¿Ï€ËÿÿÿÿU™æÍæbFæSoXt Classes4\æÍæ% €€ˆˆ€‚ÿSoXt Classes'™æôæ$ €€”€‚ÿ„;ÍæxæI#b€vóÀ $€€”ãÜ\+€‰‚ÿ€€”‚ÿÿÿSoXtRoutines for Open Inventor/Windows compatibility™PôææI#b€ óÀ $€€”ãîá”,€‰‚ÿ€$€”‚ÿÿÿSoXtClipboardSupports copy/paste for Open Inventor using the Xt clipboardžUxæ¯æI#b€ªóÀ $€€”ãœN£ô€‰‚ÿ€0€”‚ÿÿÿSoXtCollisionViewerClass to manage collisions between the camera and the scene‘Hæ@æI#b€óÀ $€€”ãp?†ê€‰‚ÿ€(€”‚ÿÿÿSoXtColorEditorComponent that lets you edit a color interactively‘H¯æÑæI#b€óÀ $€€”ã-áO‚ÿ€$€”‚ÿÿÿSoXtComponentAbstract base class for all Open Inventor components¯f@æ€æI#b€ÌóÀ $€€”ãl>‡Ï€‰‚ÿ€4€”‚ÿÿÿSoXtConstrainedViewerBase viewer class which adds camera constraints given a world up direction”KÑæ æI#b€–óÀ $€€”ãsJY€‰‚ÿ€€”‚ÿÿÿSoXtDeviceAbstract base class device for use with the SoXtRenderArea’I€æ¦ æI#b€’óÀ $€€”ãÝÌ¿€‰‚ÿ€>€”‚ÿÿÿSoXtDirectionalLightEditorComponent for editing directional lights¢Y æH æI#b€²óÀ $€€”ã(’€‰‚ÿ€.€”‚ÿÿÿSoXtExaminerViewerViewer component which uses a virtual trackball to view the dataˆ?¦ æÐ æI#b€~óÀ $€€”ãà¶ìs€‰‚ÿ€8€”‚ÿÿÿSoXtFileSelectionDialogCross-platform file selection box WH æp æI#b€®óÀ $€€”ãá¿" €‰‚ÿ€$€”‚ÿÿÿSoXtFlyViewerViewer component for flying through space, with a constant world up¡XÐ æ æI#b€°óÀ $€€”ãµGi^€‰‚ÿ€&€”‚ÿÿÿSoXtFullViewerBase viewer class which adds a decoration around the rendering areaz1p æ‹ æI#b€bóÀ $€€”ã‰2쀉‚ÿ€"€”‚ÿÿÿSoXtGLWidgetComponent for OpenGL rendering6 æ æI#b€lóÀ $€€”ãž`û€‰‚ÿ€&€”‚ÿÿÿSoXtInputFocusReports input focus change eventsŠA‹ æ” æI#b€‚óÀ $€€”ãï‰3€‰‚ÿ€"€”‚ÿÿÿSoXtKeyboardTranslates and reports events for the keyboard–M æ*æI#b€šóÀ $€€”ãÇ Ø€‰‚ÿ€*€”‚ÿÿÿSoLightSliderSetComponent with Motif sliders for editing SoLight nodes˜O” æÂæI#b€žóÀ $€€”ã«%¡€‰‚ÿ€.€”‚ÿÿÿSoXtMaterialEditorComponent which lets you edit a material interactively–M*æXæI#b€šóÀ $€€”ãå!X{€‰‚ÿ€*€”‚ÿÿÿSoXtMaterialListComponent which lets you edit a material interactivelyžUÂæ @æI#b€ªóÀ $€€”ãŽ;€‰‚ÿ€4€”‚ÿÿÿSoXtMaterialSliderSetComponent with Motif sliders for editing SoMaterial nodesXæ @æ\æ„;Xæ@æI#b€vóÀ $€€”ãÁKé €‰‚ÿ€€”‚ÿÿÿSoXtMouseTranslates and reports events for the mouse‘H @æ!AæI#b€óÀ $€€”㛩€‰‚ÿ€(€”‚ÿÿÿSoXtPlaneViewerViewer component which moves the camera in a plane‚9@æ£AæI#b€róÀ $€€”ãqx²€‰‚ÿ€(€”‚ÿÿÿSoXtPrintDialogDialog box for controlling printingG!Aæ3BæI#b€ŽóÀ $€€”ã{ç1€‰‚ÿ€&€”‚ÿÿÿSoXtRenderAreaComponent for rendering Open Inventor scene graphs˜O£AæËBæI#b€žóÀ $€€”ã¶aÞØ€‰‚ÿ€"€”‚ÿÿÿSoXtResourceUsed to retrieve X resources for SoXt components and widgetsˆ?3BæSCæI#b€~óÀ $€€”ãé^x´€‰‚ÿ€$€”‚ÿÿÿSoXtSliderSetBase class for Motif-only slider components•LËBæèCæI#b€˜óÀ $€€”ã.06΀‰‚ÿ€,€”‚ÿÿÿSoXtSliderSetBaseAbstract base class for Motif-only slider componentsªaSCæ’DæI#b€ÂóÀ $€€”ãeìù €‰‚ÿ€$€”‚ÿÿÿSoXtSpaceBallTranslates and reports events for a spaceball or SpaceMouse (Magellan) device WèCæ2EæI#b€®óÀ $€€”ã…Wu™€‰‚ÿ€6€”‚ÿÿÿSoXtTransformSliderSetComponent with Motif sliders for editing SoTransform nodes|3’Dæ®EæI#b€fóÀ $€€”ã®ö¿÷€‰‚ÿ€€”‚ÿÿÿSoXtViewerViewer component lowest base classG2Eæ>FæI#b€ŽóÀ $€€”ã³^ÖЀ‰‚ÿ€&€”‚ÿÿÿSoXtWalkViewerViewer component which moves the camera in a plane$®EæbFæ" €€€ÿC>Fæ¥Fæ1× 2ˆT«ÍV¥FæßFææSoVRMLInterpOutput:bFæßFæ% €*€ˆˆ€‚ÿSoVRMLInterpOutput*¥Fæ Gæ# €€€‚ÿNAMEe?ßFænGæ& €~€”‘€€‚ÿSoVRMLInterpOutput - class for all VRML interpolator outputs3 Gæ¡Gæ# € €€‚ÿINHERITS FROM?nGæàGæ) "€,€”‘€€€‚ÿSoVRMLInterpOutput2 ¡GæHæ& €€€€ ‚ÿSYNOPSIS~WàGæHæ' €®€”‘€€‚‚ÿ#include Methods from class SoVRMLInterpOutput:»HæžIæS t€w€T”A‚S~‚AãB-9€‰ƒ‚ƒãÐPWÙ‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ãéf‰ƒ‚ÿSoTypegetConnectionType() constintgetForwardConnections(SoFieldList &list) constvoidenable(SbBool flag)SbBoolisEnabled() constSoVRMLInterpolator*getContainer() const4HæÒIæ& €€‚A€‚ÿDESCRIPTIONОIæÕJæ3 4€¡€”‘€‚A€€€€‚ÿSoVRMLInterpOutput is the class for all VRML interpolator output fields. There is no public constructor routine for this class. Only the VRML interpolator classes create instances of SoVRMLInterpOutput.æÒIæëKæ0 .€Í€”‘€‚A€€€‚ÿEach VRML interpolator creates one or more VRML interpolator outputs. The type of the output is documented in the VRML interpolator reference pages. There is also an SoVRMLInterpOutput method for querying the connection type.³‰ÕJæžLæ* "€€”‘€‚A€‚ÿThe application can at any time enable or disable the VRML interpolator outputs. By default the VRML interpolator outputs are enabled.0 ëKæÎLæ& €€‚A€‚ÿMETHODSW%žLæ%Mæ2 4€J€T”A‚S~‚AãB-9€‰ƒ‚ÿSoTypegetConnectionType() consta8ÎLæ†Mæ) "€p€”‘€‚A€‚ÿReturns the type of field this output can connect to.i7%MæïMæ2 4€n€T”A‚S~‚A€ƒãÐPWÙ‰‚ÿintgetForwardConnections(SoFieldList &list) const˜o†Mæ‡Næ) "€Þ€”‘€‚A€‚ÿReturns the number of fields this output is writing to, and adds pointers to those fields to the given list.OïMæÖNæ2 4€:€T”A‚S~‚A€ƒã‘¶p6‰‚ÿvoidenable(SbBool flag)Ê ‡Næ Oæ* "€A€”‘€‚A€‚ÿEnables or disables all connections from this output. If the connections are disabled, values will not be output along them. By default, outputs are enabled.OÖNæ €æ2 4€:€T”A‚S~‚A㑶p6€‰ƒ‚ÿSbBoolisEnabled() const Oæ €æbFæ]4 Oæi€æ) "€h€”‘€‚A€‚ÿReturns TRUE if this output is currently enabled._- €æÈ€æ2 4€Z€T”A‚S~‚Aãéf€‰ƒ‚ÿSoVRMLInterpolator*getContainer() constQ(i€ææ) "€P€”‘€‚A€‚ÿReturns containing VRML interpolator.1 È€æJæ& €€‚A€‚ÿSEE ALSOFææ/ .€.€”‘€‚Aãéf€‰‚ÿSoVRMLInterpolatorGJæ×æ1í ƒÌÙWW×æ‚æÑŽæSoVRMLInterpOutputList>æ‚æ% €2€ˆˆ€‚ÿSoVRMLInterpOutputList*×æ?‚æ# €€€‚ÿNAME{U‚溂æ& €ª€”‘€€‚ÿSoVRMLInterpOutputList - maintains a list of pointers to VRML interpolator outputs3?‚æí‚æ# € €€‚ÿINHERITS FROM](º‚æJƒæ5 :€P€”‘€ãK2Å'€‰€€€‚ÿSbPList > SoVRMLInterpOutputList2 í‚æ|ƒæ& €€€€ ‚ÿSYNOPSISrKJƒæîƒæ' €–€”‘€€‚‚ÿ#include Methods from class SoVRMLInterpOutputList:Âg|ƒæ°…æ[ „€Ï€T”A‚S~‚A€ƒ‚ƒ‚ƒã%Y7‰‚ƒ‚ƒã`Zh‰‚ƒã`Zh‰‚ƒã`Zh‰‚ã`Zh‰ƒ‚ÿSoVRMLInterpOutputList()SoVRMLInterpOutputList(int size)SoVRMLInterpOutputList(const SoVRMLInterpOutputList &l)~SoVRMLInterpOutputList()voidappend(SoVRMLInterpOutput *interpOutput)voidinsert(SoVRMLInterpOutput *interpOutput,int addBefore)voidset(int i,SoVRMLInterpOutput *interpOutput)SoVRMLInterpOutput *operator [](int i) constO îƒæÿ…æ/ .€@€”‘€‚A€ãK2Å'‰‚ÿMethods from class SbPList:b °…æa‡æY €€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ƒãK2Å'‰‚ãK2Å'‰ƒãK2Å'‰‚ƒãK2Å'‰‚ƒãK2Å'‰‚ÿintfind(const void *ptr) constvoidremove(int which)intgetLength() constvoidtruncate(int start)voidcopy(const SbPList &pl)SbPList &operator =(const SbPList &pl)intoperator ==(const SbPList &pl) constintoperator !=(const SbPList &pl) const4ÿ…敇æ& €€‚A€‚ÿDESCRIPTIONï¹a‡æ„ˆæ6 :€s€”‘€‚A€€€€€‚ÿThis subclass of SbPList holds lists of pointers to SoVRMInterpOutputs. It updates reference counts to VRML interpolator outputs in the list whenever adding or removing pointers.0 •‡æ´ˆæ& €€‚A€‚ÿMETHODSH„ˆæüˆæ, (€8€T”A‚S~‚A€ƒ‚ÿSoVRMLInterpOutputList()8´ˆæ4‰æ) "€€”‘€‚A€‚ÿConstructor.P$üˆæ„‰æ, (€H€T”A‚S~‚A€ƒ‚ÿSoVRMLInterpOutputList(int size)e<4‰æé‰æ) "€x€”‘€‚A€‚ÿConstructor that pre-allocates storage for size pointers.o=„‰æXŠæ2 4€z€T”A‚S~‚A€ƒã%Y7‰‚ÿSoVRMLInterpOutputList(const SoVRMLInterpOutputList &l)a8é‰æ¹Šæ) "€p€”‘€‚A€‚ÿConstructor that copies the contents of another list.IXŠæ‹æ, (€:€T”A‚S~‚A€ƒ‚ÿ~SoVRMLInterpOutputList()7¹Šæ9‹æ) "€€”‘€‚A€‚ÿDestructor.d2‹æ‹æ2 4€d€T”A‚S~‚A€ƒã`Zh‰‚ÿvoidappend(SoVRMLInterpOutput *interpOutput)c:9‹æŒæ) "€t€”‘€‚A€‚ÿAdds a VRML interpolator output to the end of the list.tA‹ætŒæ3 6€‚€T”A‚S~‚A€ƒã`Zh‰‚ÿvoidinsert(SoVRMLInterpOutput *interpOutput,int addBefore)‰`ŒæýŒæ) "€À€”‘€‚A€‚ÿInserts the given VRML interpolator output in the list before the element of the given index.i6tŒæfæ3 6€l€T”A‚S~‚A€ƒã`Zh‰‚ÿvoidset(int i,SoVRMLInterpOutput *interpOutput)FýŒæ¬æ) "€:€”‘€‚A€‚ÿSets an element of a list.d2fæŽæ2 4€d€T”A‚S~‚Aã`Zh€‰ƒ‚ÿSoVRMLInterpOutput *operator [](int i) constJ!¬æZŽæ) "€B€”‘€‚A€‚ÿAccesses an element of a list.1 Žæ‹Žæ& €€‚A€‚ÿSEE ALSOFZŽæÑŽæ/ .€.€”‘€‚Aã`Zh€‰‚ÿSoVRMLInterpOutput= ‹Žææ1Ô¸† –XæBæûÄæLocalization4ÑŽæBæ% €€ˆˆ€‚ÿLocalizationÿ°æMÂæO l€a€€‚€€€‚‚€‚€€€€€€€€€‚ÿWindowsTGS has already localized the embedded strings in Open Inventor (e.g. the viewer labels) for several BæMÂæÑŽæuseful languages. All localized strings are included in the SoWin resource file, Invrxxx.DLL (where xxx is the Open Inventor version number), and are automatically selected based on the current Locale. The Locale can be specified via the Regional Settings program of Control Panel.UnixThe app-defaults/Inventor directory contains the default Motif resource file (named Inventor) used by the standard viewers. You must put this file in /usr/lib/X11/app-defaults or set the XAPPLRESDIR environment variable (see X Window documentation) to $OIVHOME/app-defaults. —dBæäÃæ3 4€É€€‚‚‚€€€€‚ÿNOTE: If you do not do this, the viewer labels will be prefixed with "Iv".Several versions of the resource file are provided for supporting different languages (Inventor.english, Inventor.french, etc.). To use a specific language, make a link between the desired resource file and the Inventor file. For example, to use French language resources:rKMÂæVÄæ' €–€Ù€€‚‚‚ÿln -s Inventor.french Inventorsetenv XAPPLRESDIR $OIVHOME/app-defaults¥väÃæûÄæ/ .€ì€€€€€€‚ÿIf you already have a Motif resource file, you can merge Inventor.xxx with yours (see xrdb in X documentation).HVÄæCÅæ1´‚·²¹YCÅæ‚Åæ„çSoXtFileSelectionDialog?ûÄæ‚Åæ% €4€ˆˆ€‚ÿSoXtFileSelectionDialog*CÅæ¬Åæ# €€€‚ÿNAMEd>‚ÅæÆæ& €|€”‘€€‚ÿSoXtFileSelectionDialog - cross-platform file selection box3¬ÅæCÆæ# € €€‚ÿINHERITS FROM@ÆæƒÆæ& €4€”‘€€‚ÿSoXtFileSelectionDialog. CÆæ±Ææ# €€€‚ÿSYNOPSISZ4ƒÆæ Çæ& €h€”‘€€‚ÿ#include Ó±Ææ(ÈæJ b€§€T”A‚S~‚A€ƒ‚ƒ€€ƒ€€ƒ€€‚ÿtypedef voidSoXtFileSelectionDialogCB(void *data,SoXtFileSelectionDialog *dialog)enum Dialog_Mode{Set the dialog box mode (Open file/Save file)OPEN_FILEOpen file modeSAVE_FILESave file mode}W. ÇæÈæ) "€\€”‘€‚A€‚ÿMethods from class SoXtFileSelectionDialog:Æ(ÈæœÊæW |€€T”A‚S~‚A€ƒ‚ƒ‚ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ÿSoXtFileSelectionDialog()~ SoXtFileSelectionDialog()voidsetSize(const SbVec2s &size)SbVec2sgetSize(void)voidsetTitle(char *title)char *getTitle(void)voidsetFilter(char *suffix,char *title)voidgetFilter(char **suffix,char **title)voidsetFileDirectory(char *directory)char*getFileDirectory()voidsetFileName(char *fName)char*getFileName(void)char *getFilePath(void)voidsetMode(Dialog_Mode dMode)Dialog_ModegetMode(void)ÂÈæ^Ëæ3 4€€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ÿvoidshow()voidsetAcceptCallback(SoXtFileSelectionDialogCB *f,void *data)voidsetAbortCallback(SoXtFileSelectionDialogCB *f,void *data)4œÊæ’Ëæ& €€‚A€‚ÿDESCRIPTION¨^Ëæ:Ìæ) "€þ€”‘€‚A€‚ÿThis class provides an interactive widget for file selection. Files can be selected in open file mode or in close file mode.0 ’ËæjÌæ& €€‚A€‚ÿMETHODSh::ÌæÒÌæ. ,€t€T”A‚S~‚A€ƒ‚ƒ‚ÿSoXtFileSelectionDialog()~ SoXtFileSelectionDialog()GjÌæÍæ) "€<€”‘€‚A€‚ÿConstructor and destructor.x>ÒÌæ‘Íæ: D€|€T”A‚S~‚A€ƒãŠƒõ(‰‚㊃õ(‰ƒ‚ÿvoidsetSize(const SbVec2s &size)SbVec2sgetSize(void)V-ÍæçÍæ) "€Z€”‘€‚A€‚ÿSets/gets the dialog box size (Unix only).a3‘ÍæHÎæ. ,€f€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetTitle(char *title)char *getTitle(void)Z1çÍæ¢Îæ) "€b€”‘€‚A€‚ÿSets/gets the file selection dialog box title.ˆXHÎæ*Ïæ0 0€°€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetFilter(char *suffix,char *title)voidgetFilter(char **suffix,char **title)]4¢Îæ‡Ïæ) "€h€”‘€‚A€‚ÿSets/gets the suffix filter and the filter title.pB*Ïæ ç. ,€„€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetFileDirectory(char *directory)char*getFileDirectory()‡Ïæ çûÄæI ‡ÏæUç) "€@€”‘€‚A€‚ÿSets/gets the file directory.f8 ç»ç. ,€p€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetFileName(char *fName)char*getFileName(void)DUçÿç) "€6€”‘€‚A€‚ÿSets/gets the file name.F»çEç, (€4€T”A‚S~‚A€ƒ‚ÿchar*getFilePath(void)I ÿçŽç) "€@€”‘€‚A€‚ÿRetrieves the full file path.j<Eçøç. ,€x€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetMode(Dialog_Mode dMode)Dialog_ModegetMode(void)i@Žçaç) "€€€”‘€‚A€‚ÿSets/gets the mode (Open or Close) of the file selection box.:øç›ç, (€€T”A‚S~‚A€ƒ‚ÿvoidshow()P'açëç) "€N€”‘€‚A€‚ÿShows the file selection box dialog.pC›ç[ç- *€†€T”A‚S~‚A€ƒ‚ÿvoidsetAcceptCallback(SoXtFileSelectionDialogCB *f,void *data)[2ëç¶ç) "€d€”‘€‚A€‚ÿSet the callback associated with the OK button.oB[ç%ç- *€„€T”A‚S~‚A€ƒ‚ÿvoidsetAbortCallback(SoXtFileSelectionDialogCB *f,void *data)_6¶ç„ç) "€l€”‘€‚A€‚ÿSet the callback associated with the Cancel button.B%çÆç1È ÌÐ*ÎZÆçç¶AçInventor Overview>„çç% €2€ˆˆ€‚ÿOpen Inventor Overview}EÆçç8 >€€€‚†"€B‚€€€‚ÿWhat is It?The Open Inventor 3D Toolkit is an object-oriented toolkit that simplifies and abstracts the task of writing graphics programming into a set of easy to use objects. These objects range from low level data-centered objects such as Sphere, Camera, Material, Light, and Group, to high level application-level objects such as the Walkthrough Viewer and Material Editor. The foundation concept in Open Inventor is the "scene database" which defines the objects to be used in an application. When using Open Inventor, a programmer creates, edits, and composes these objects into hierarchical 3D scene graphs (i.e., database). A variety of fundamental application tasks such as rendering, picking, event handling, and file reading/writing are built-in operations of all objects in the database and thus are simple to invoke.3ÿç´ ç4 6€ÿ€€‚‚‚€‚€€€‚ÿSince Open Inventor is object-oriented (written in C++), it encourages programmers to extend the system by writing new objects. Open Inventor users have created a variety of new objects that are not included in the product, such as: Bezier surfaces, CSG objects, animation objects, special viewers, and many more.RenderingThe rendering mechanism inside Open Inventor objects employs OpenGL. During rendering each object automatically makes the proper, efficient calls to OpenGL. Since Open Inventor was designed specifically to use OpenGL for graphics rendering, it is highly optimized to take advantage of all OpenGL accelerators. Its optimized scene graph pipeline also allows the developer to target PC and low-end systems without hardware acceleration.Y+ç ç. *€W€€‚‚‚€‚€‚ÿFurthermore, Open Inventor rendering supports a caching scheme which automatically generates very fast renderings of the database without additional traversal overhead.PickingInventor picking is extremely efficient and does not utilize rendering. Furthermore, picking returns a variety of 3D information and detail about what objects were picked. A sorted list of picked objects and corresponding information is returned to the programmer. Picking is so fast that programs can perform 3D locate highlighting as the mouse moves across a 3D window. Þ´ ç#@ç, &€½€€‚€‚€‚ÿInteraction, Events, and DevicesInventor defines an event model for writing 3D interaction. This model is window system independent. It is quite easy to use and makes 3D direct manipulation programming possible. Open Inventor includes a variety of interactive 3D objects and tools for writing interactive objects, such as: Manipulators, Draggers, and Projectors. The flexible event model encourages programmers to extend the system to support new dev ç#@ç„çices and event types.$ó çGAç1 0€ç€€‚€‚€‚‚€‚ÿFile FormatsThe Open Inventor 3D File Format is SGI's standard for 3D data. The format supports both an ASCII and private binary format. The binary format is network-neutral and thus can be exported across machine boundaries.SEE ALSOo7#@ç¶Aç8 @€n€”‘€ã…a”U€‰ã·Ò ‰ã¡XÀ ‰‚ÿTGS Innovations, Win32 Features, Documentation@GAçöAç1ÎKÎÚ•[öAç-BçS‰çTGS Innovations7¶Aç-Bç% €$€ˆˆ€‚ÿTGS Innovationsª…öAç×Bç% € €€‚‚ÿOver the years, TGS has made the basic Open Inventor toolkit even more powerful and useful by adding many new features including:ªm-BçEç= H€Û€P‘€:‚H€ƒã¦@ý€‰€ã_/‰‚ÿ•VRML 2.0 (VRML97) SupportVRML (Virtual Reality Modeling Language) is the file format adopted by the Internet community for 3D geometry data on the World Wide Web. Both individual objects and complete scenes can be defined with VRML. Most of the VRML format is taken directly from the Open Inventor file format and Open Inventor nodes may be mixed with VRML nodes. With Release 2.0.2 from TGS, Open Inventor now supports the unique VRML nodes (see VRML) as native Open Inventor nodes. This makes Open Inventor the most powerful tool available for building applications that utilize VRML and 3D on the Internet.+×Bç¬Eç( €€P‘€:‚H€‚ÿЙEç|Fç7 <€3€P‘€:‚H€ƒãF¬›€‰€‚ÿ•Collision Detection Allows you to manage objects and camera transformations to prevent objects from passing through (intersecting) one another.+¬Eç§Fç( €€P‘€:‚H€‚ÿÉ|Fç­Hç= H€“€P‘€:‚H€ƒã5ëlÜ€‰€ãD‹{I‰‚ÿ•Large Model Viewing (LMV) FeaturesA set of classes for intelligently simplifying/reorganizing a scene graph. The goal is to simplify very large scenes to a size that is reasonable to display and interact with while preserving the look and feel of the original geometry as much as possible. Also included is the LargeModelViewer program, a demonstration of the adaptive viewing, simplification, and ordering traversal techniques in Open Inventor.+§FçØHç( €€P‘€:‚H€‚ÿ2û­Hç Jç7 <€÷€P‘€:‚H€ƒ€ã?/}¦‰€‚ÿ•Enhanced Stereo Viewing (SoWinStereoViewType, etc.)Its wide range of software stereo formats enables use of many types of glasses, projectors, HMDs, and so forth. Hardware support of stereo is required for some, but not all, kinds of stereo.+ØHç5Jç( €€P‘€:‚H€‚ÿâ« JçKç7 <€W€P‘€:‚H€ƒ€ãHê\F‰€‚ÿ•Beveling (SoBevelAction, etc.)Bevels edges and corners (vertices) of geometry giving a rounded appearance and adding interesting complexity to ordinary geometry.+5JçBKç( €€P‘€:‚H€‚ÿçKç]Lç4 6€Ï€P‘€:‚H€ƒã·»9‰€‚ÿ•Stroke Fonts (SoFont)Stroke fonts are drawn with lines instead of triangles. They provide higher performance than polygonal fonts and are more readable at small sizes. Furthermore, their appearance is platform independent.+BKçˆLç( €€P‘€:‚H€‚ÿ-ö]LçµMç7 <€í€P‘€:‚H€ƒ€ã÷3≀‚ÿ•Double Precision Classes (SoMatrixd, etc.)Convenience classes that allow double precision data (e.g. coordinates) to be passed to Open Inventor directly, without the need for intermediate conversion and storage as single precision data.+ˆLçàMç( €€P‘€:‚H€‚ÿ'ðµMçOç7 <€á€P‘€:‚H€ƒ€ãÔ>щ€‚ÿ•3D Texture (SoTexture3, etc.) MappingA standard feature in OpenGL 1.2 (extension in OpenGL 1.1), it is supported on Unix and some Windows boards for use with SoIndexedFaceSet. It is useful for volume rendering and special effects.+àMç2Oç( €€P‘€:‚H€‚ÿMOçOç/ .€<€P‘€:‚H€ƒ€€‚ÿ•New Classes, including:=ä2OçÈçY €€É€T”Ù€:‚Ø€ƒ€ãý¥‘U‰€‚ƒ€ãK7(?‰€€€‚ƒ€ã«:B˜‰€‚ÿ-Clip Plane Manip (SoClipPlaneManipOçÈç¶Aç) - Manipulator to transform a clipping plane.-Extended Selection (SoExtSelection) - Extends the functionality of SoSelection to allow the user to select an object or multiple objects by drawing a lasso around the object(s) to be selected.-Image node (SoImage) - Node that displays an image that always faces the camera. This node can be useful for placing a logo in the scene, or for attaching an icon or marker to a 3D point.2ÙOçúƒçY €€³€T”Ù€:‚Ø€ƒ€ãüqó>‰€‚ƒ€ãœž‰€‚ƒ€ãAÛÓ‰€€€‚ÿ-Marker Set (SoMarkerSet) - Extension of Point Set that draws a small bitmap (symbol) at each 3D location. More than 90 pre-defined markers are included, and custom markers can be added.-Pattern (SoPattern) - Specifies OpenGL stipple patterns for faces, useful for geological visualization.-Polygon Offset (SoPolygonOffset) - Provides access to OpenGL 1.1's glPolygonOffset function. Can be used to draw edges on polygons without z-buffer "stitching".DõÈç>†çO l€ë€T”Ù€:‚Ø€ƒ€€€ãG°ÞJ‰€€€€€€€‚ÿ-Enhanced Search Capability (SoSearchPathAction) - Finding nodes by name is a useful technique for modifying a scene graph, but using SoNode::getByName or SoSearchAction requires assigning a unique name to every (interesting) node. Often the same subgraph will be used multiple times and it would be convenient to assign each instance of the subgraph a unique name, but reuse the same names for the nodes inside the subgraph. SoSearchPathAction allows this kind of hierarchical naming.´úƒçS‰ça €i€T”Ù€:‚Ø€ƒ€ãȯø~‰€‚ƒ€ã~X+‰€‚ƒ€ãpüšÇ‰€‚ƒ€㾘Ö}‰€‚ÿ-Conversion to VRML 1.0 (SoToVRMLAction) - Converts an Open Inventor scene graph to VRML 1.0 format.-Conversion to VRML2.0 (VRML97) (SoToVRML2Action) - Converts an Open Inventor scene graph to VMRL 2.0 format.-Image Mapping (SoToHTMLAction) - Computes an HTML client-side image map from a 3D scene, including optional hotspots (links) based on the projection of 3D objects.-Z3D Output (SoToZ3DAction) - Converts an Open Inventor scene graph to Z3D format. Z3D is a file format developed by TGS specifically for publishing 3D on the web. Using the free player available from our web site, it features much smaller files than VRML and a much smaller player than VRML. L>†çŸ‰ç1ÜÚ•×–\Ÿ‰çâ‰ç›ÌçOpen Inventor DocumentationCS‰çâ‰ç% €<€ˆˆ€‚ÿOpen Inventor DocumentationîÅŸ‰çЊç) €‹€€‚€‚‚ÿOn-line DocumentationThe following documents are available with the Open Inventor SDK for Win32 systems. On Unix systems, comparable information is provided, but may be packaged differently. wHâ‰çG‹ç/ .€€P‘€:‚H€ƒ€€‚ÿ•Readme.html - System requirements, installation information, etc.,Њçs‹ç( €€P‘€:‚H€‚ÿ Ç—G‹ç:Œç0 .€/€P‘€:‚H€ƒ€€‚ÿ•RelNotes.txt - These notes describe the new features and improvements that have been added starting with the Open Inventor 2.0.2 release in 1995,s‹çfŒç( €€P‘€:‚H€‚ÿ T%:ŒçºŒç/ .€J€P‘€:‚H€ƒ€€‚ÿ•Inventor.hlp - This help file.,fŒçæŒç( €€P‘€:‚H€‚ÿ ’`ºŒçxç2 4€À€P‘€:‚H€ƒ€€€‚ÿ•oivwinwp.doc [Win32 only] -Explains how Open Inventor fits into the Windows environment.,æŒç¤ç( €€P‘€:‚H€‚ÿ ª{xçNŽç/ .€ö€P‘€:‚H€ƒ€€‚ÿ•vrml_for_oiv.doc - A detailed technical discussion of Open Inventor and VRML, and how Open Inventor works with VRML.,¤çzŽç( €€P‘€:‚H€‚ÿ äNŽçŽç0 .€É€P‘€:‚H€ƒ€€‚ÿ•Optimizing.html - This is a detailed technical discussion of benchmarking, rendering optimization, and general optimization. If you want to get the best performance from your Open Inventor application, read this document.,zŽçºç( €€P‘€:‚H€‚ÿ }MŽçCÁç0 .€›€P‘€:‚H€ƒ€€‚ÿ•OIV21PortGuide.docºçCÁçS‰ç - Explains how to port your Open Inventor 2.0 application to Open Inventor 2.1. This is useful if you have inherited very old code that needs to be used with the current version of Open Inventor. It has a very informative section on optimization (which has been extracted into the Optimizing.html document).,ºçoÁç( €€P‘€:‚H€‚ÿ ·‡CÁç&Âç0 .€€P‘€:‚H€ƒ€€‚ÿ•OIV21RelNotes.doc - Potentially useful if you have old (OIV 2.0) code that needs to work with the current Open Inventor release.,oÁçRÂç( €€P‘€:‚H€‚ÿ õÂ&ÂçGÃç3 4€…€P‘€:‚H€ƒ€€€‚ÿ•Ladmin.hlp [Win32 only] - Explains how licensing is done, and different ways/places you can specify your license string. This info is useful even if you are not using the Ladmin program.,RÂçsÃç( €€P‘€:‚H€‚ÿ ê·GÃç]Äç3 4€o€P‘€:‚H€ƒ€€€‚ÿ•redist.txt [Win32 only] - Read this if you are planning to distribute your application to other sites. It discusses runtime licenses, necessary DLLs, and other related topics.,sÃç‰Äç( €€P‘€:‚H€‚ÿ 9]ÄçÂÄç% €(€‚H€‚ÿPrinted MaterialsñÁ‰Äç³Åç0 .€ƒ€P‘€:‚H€ƒ€€‚ÿ•The Inventor Mentor, published by Addison-Wesley. This book describes how to write applications using the Open Inventor toolkit. This is an excellent book for new users of Open Inventor.,ÂÄçßÅç( €€P‘€:‚H€‚ÿ k;³ÅçJÈç0 .€w€P‘€:‚H€ƒ€€‚ÿ•Open Inventor C++ Reference Manual, published by Addison-Wesley. It is now out of print. Unfortunately, it documents the standard Open Inventor classes as of SGI's Open Inventor 2.0, which is no longer current. Some of the classes are not compatible with the current release of Open Inventor. Furthermore, the book does not document any of the classes added by TGS (for example, VRML nodes), nor does it include any Windows-specific information. To summarize, the book is incomplete and contains some obsolete incompatible information. We do not recommend its use.,ßÅçvÈç( €€P‘€:‚H€‚ÿ é¹JÈç_Éç0 .€s€P‘€:‚H€ƒ€€‚ÿ•The Inventor Toolmaker, published by Addison-Wesley. For advanced programmers, this book describes how to create new Open Inventor classes, and how to customize existing classes.,vÈç‹Éç( €€P‘€:‚H€‚ÿ -_Éç¸Éç% €€‚H€‚ÿOther¦w‹Éç^Êç/ .€î€P‘€:‚H€ƒ€€‚ÿ•Open Inventor Newsgroup (comp.graphics.api.inventor) - .A forum for Open Inventor users to exchange information.,¸ÉçŠÊç( €€P‘€:‚H€‚ÿ ê^Êç¤Ëç0 .€Õ€P‘€:‚H€ƒ€€‚ÿ•Sample programs and sample Open Inventor data files (*.iv) - These are an excellent source of information about using Open Inventor. Example programs are provided to demonstrate almost every signficant feature of Open Inventor.,ŠÊçÐËç( €€P‘€:‚H€‚ÿ Ë•¤Ëç›Ìç6 :€+€P‘€:‚H€ƒ€€€€‚ÿ•TGS web site (www.tgs.com) - May provide additional information. In particular, see the page of "Useful Links for Open Inventor Developers."Q ÐËçìÌç1&c€ ߀ ]ìÌçGÍçûèUsing a Spaceball or Space Mouse[6›ÌçGÍç% €l€ˆˆ€‚ÿUsing a Spaceball or Space Mouse with Open Inventor>ùìÌç…ÏçE X€ó€€ãeìù ‰ãñÏÊh‰ãAù齉ã*‰‚‚€‚€‚ÿThe SoXtSpaceball (or SoWinSpaceball) class can be used to manage events generated by the spaceball or the Magellan Space Mouse, including motion (SoMotion3Event) and button press or release (SoSpaceballButtonEvent) events. UNIX-Specific InformationThis class uses the Xinput extension event mechanism to get events from the device. SoXtSpaceball first tries to find a spaceball or a Magellan space mouse in the list of input devices on the server, and then generates Open Inventor events.øÈGÍç‰è0 .€‘€€‚‚‚€€‚‚‚‚ÿThe example program $OIVHOME/src/TGSdemos/SpaceBall shows how to use this…Ïç‰è›Ìç type of device. A new method, setFocusToWindow, has been added to the SoXtSpaceball class to allow applications to define how inputs are received by the device. If set to TRUE, events are received even if the cursor is outside the graphic window. If set to FALSE, events are received only if the window has the focus.The Magellan Space Mouse supports two kind of drivers:Žb…Ïçè, &€Å€PÈ:‚H€ƒ‚‚ƒ‚ÿ•ClientMessage driver: a deamon program generates user events that can be caught by the application. This mode is not supported by Open Inventor. •Xinput extension: a binary module is added to the X11 server. This module is loaded by the server. It generates Xinput extension events similar to normal XEvents. This is the way Open inventor works. (‰è?è% €€‚H€‚ÿ¼èûè, &€!€‚H€€€‚ÿThe Magellan Space Mouse is provided with Xinput extension driver for SGI, SUN and HP. For more information see http://www.spacemouse.com. 8?è3è1÷ÿÿÿÿuœ^3èbè(èClasses/ ûèbè% €€ˆˆ€‚ÿClassesÕ°3è7è% €a€€‚‚ÿThis section provides reference pages for the public C++ classes and member functions of the Open Inventor toolkit. For your convenience, two lists of classes are provided:@bèwè/ .€"€P‘€:‚H€ƒãR‚ö+‰‚ÿ•AlphabeticA7è¸è/ .€$€P‘€:‚H€ƒãŽ¤Ùÿ•By function(wèàè% €€‚H€‚ÿI$¸è)è% €H€‚H€‚ÿAbout "SoEXTENDER public" ClassesÿÓàè(è, &€§€‚H€€€‚ÿMember functions that are listed in the Open Inventor header files under "SoEXTENDER public" are available to programmers who wish to extend the toolkit. Although they are not documented, you should not avoid using them because of concerns that they may be subject to change without notice. They are as concrete and reliable as the documented methods. For detailed information on extending Open Inventor, see The Inventor ToolMaker, published by Addison-Wesley. 5)è]è1ôÿÿÿÿKÎ_ÿÿÿÿ]è èHome&(èƒè# €€€‚ÿ(]è«è$ €€€&‚‚ÿK›ƒèö è°#.;¢_ R€€°€&‚€'€&ãQïEÇ€(‰€&‚€)€&‚ÿ°€t‚°†"€C€*€€+€&€,€+€&€,€&‚†"€C€*€€+€&€,€&‚ÿÿÿOpen Inventor 2.6 Reference ManualAll rights reserved. No part of this documentation may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage and retrieval system, without permission in writing from TGS.Inc. 5330 Carroll Canyon Rd, Suite 201 San Diego, CA 92121 USA Tel: 858 457 5359 Fax: 858 452 2547 email: info@tgs.com Web: www.tgs.comEurope Avenue Henri Becquerel Parc d'Activités Kennedy I BP 227 33708 Mérignac cedex (FRANCE) Phone : (33) (0) 5 56 13 37 77 Fax : (33) (0) 5 56 13 02 10 email: info@europe.tgs.com&«è è# €€€&‚ÿCö è_ è1×\‰ö¸ø`_ è™ è’‰èSoSearchPathAction: è™ è% €*€ˆˆ€‚ÿSoSearchPathAction*_ èà è# €€€‚ÿNAME†`™ èI è& €À€”‘€€‚ÿSoSearchPathAction - searches for a node in a scene graph using a sequence of search criteria3à è| è# € €€‚ÿINHERITS FROM{:I è÷ èA R€t€”‘€ãïK€‰€ãòÓ}ª€‰€€€‚ÿSoAction > SoSearchAction > SoSearchPathAction2 | è)è& €€€€ ‚ÿSYNOPSISZ÷ èªè' €´€”‘€€‚‚ÿ#include Methods from class SoSearchPathAction:£R)èY@èQ p€¥€T”A‚S~‚A€ƒ‚ƒ‚ƒ‚ƒ‚ãXíʉƒ‚ƒ‚ƒ‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒ‚ÿSoSearchPathAction()virtual~SoSearchPathAction()voidreset()voidsetSearchString(const char *searchString)const SbString &getSearchString() constvoidsetSeparatorChar(const char sepChar)chargetSeparatorChar() constvoidsetDerivedIsOK(const SbBoolªèY@è è derivedIsOK)SbBoolgetDerivedIsOK() constintgetNumItemsFound() constV'ªè¯@è/ .€N€”‘€‚A€ãòÓ}ª‰‚ÿMethods from class SoSearchAction:£aY@èRAèB T€Â€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ãMy'9‰ƒ‚ÿvoidsetSearchingAll(SbBool flag)SbBoolisSearchingAll() constSoPath *getPath() constP!¯@è¢Aè/ .€B€”‘€‚A€ãïK‰‚ÿMethods from class SoAction:†RAè(Cèj ¢€9€T”A‚S~‚A€ƒã’n%9‰‚ƒãMy'9‰‚ƒãç2ø¡‰ã‘¶p6‰‚ãB-9‰ƒ‚ãB-9‰ƒ‚㑶p6‰ƒãB-9‰‚ƒ‚ÿvirtual voidapply(SoNode *node)virtual voidapply(SoPath *path)virtual voidapply(const SoPathList &pathList,SbBool obeysRules = FALSE)static SoTypegetClassTypeId()virtual SoTypegetTypeId()virtual SbBoolisOfType(SoType type)virtual voidinvalidateState()4¢Aè\Cè& €€‚A€‚ÿDESCRIPTION»‹(CèDè0 .€€”‘€‚A€€€‚ÿThis class extends SoSearchAction to search for a sequence of items defined in a string, e.g. "Wheel1/Hub/Bearing". Each item can be aÀ\Cè×Dè0 .€!€T”!:‚!€ƒ‚ƒ‚ƒ‚ÿ•Node name, or•Node type (type name in angle brackets, e.g. ""), or•Node address (hex value starting with zero, e.g. "0x100fa30").ADèEè) "€0€”‘€‚!€‚ÿIn the simplest case:B×DèZEè( €4€Ù€‚!€‚ÿSoSearchPathAction spa;K#Eè¥Eè( €F€Ù€‚!€‚ÿspa.setSearchString( "Wheel1" );+ZEèÐEè( €€Ù€‚!€‚ÿ=¥Eè Fè) "€(€”‘€‚!€‚ÿis equivalent to:=ÐEèJFè( €*€Ù€‚!€‚ÿSoSearchAction sa;c; Fè­Fè( €v€Ù€‚!€‚ÿsa.setName( "Wheel1" ); // By default, interest is FIRST+JFèØFè( €€Ù€‚!€‚ÿÇ­FèŸHè* "€;€”‘€‚!€‚ÿWhen the action finds a node that satisfies the current search item, it effectively restarts the search from that node, using the next search item. This means that the search for each item (after the first) is confined to the subgraph under the node that satisfied the previous search item. In most cases each item (except possibly the last one) will be a grouping node, but this is not enforced by the action.÷»ØFè–Jè< F€w€”‘€‚!€€€€€€€‚ÿFinding nodes by name is a useful technique for modifying a scene graph, but using SoNode::getByName or SoSearchAction requires assigning a unique name to every (interesting) node. Often the same subgraph will be used multiple times and it would be convenient to assign each instance of the subgraph a unique name, but reuse the same names for the nodes inside the subgraph. SoSearchPathAction allows this kind of hierarchical naming.e<ŸHèûJè) "€x€”‘€‚!€‚ÿGiven a scene graph with hierarchical names, for example:A–Jè€Ù€‚!€‚ÿ DEF Bolt Separator {M%&MèºMè( €J€Ù€‚!€‚ÿ Cylinder { height 13 }4 mMèîMè( €€Ù€‚!€‚ÿ }0ºMèNè( €€Ù€‚!€‚ÿ },îMèJNè( €€Ù€‚!€‚ÿ},NèvNè) "€€”‘€‚!€‚ÿb8JNèØOè* "€q€”‘€‚!€‚ÿ"Wheel1/Hub/Bolt" would find "Bolt" in the first wheel. Intermediate names may be omitted if the search string is still unambiguous. For example "Wheel1/Bolt" would find the same node in this simple case. "Wheel2/Hub/Bolt/" would return a path including the leaf SoCylinder node in the second wheel.ÐvNèä€è0 .€¡€”‘€‚!€ØOèä€è 耀‚ÿMost of the methods inherited from SoSearchAction are ignored and do not return useful information (set/getNode, set/getName, etc.). Relevant inherited methods are set/isSearchingAll, getPath, and reset.[ØOè?‚èB R€3€”‘€‚!€ãib€‰€€€€€‚ÿNote that by default nodekits do not search their children when a search action is applied. The reference page for SoBaseKit discusses the methods SoBaseKit::isSearchingChildren() and SoBaseKit::setSearchingChildren(), which allow you to query and control this behavior.0 ä€èo‚è& €€‚!€‚ÿMETHODSD?‚賂è, (€0€T”A‚S~‚A€ƒ‚ÿSoSearchPathAction()¡xo‚èTƒè) "€ð€”‘€‚A€‚ÿConstructor. The default action searches for first node of or derived from given type, using regular traversal rules.L ³‚è ƒè, (€@€T”A‚S~‚A€ƒ‚ÿvirtual~SoSearchPathAction()6 TƒèÖƒè) "€€”‘€‚A€‚ÿDestructor; ƒè„è, (€€T”A‚S~‚A€ƒ‚ÿvoidreset()g>Öƒèx„è) "€|€”‘€‚A€‚ÿReset options back to default values, clears returned path.\„è…è4 8€¸€T”A‚S~‚A€ƒ‚ãXíʉƒ‚ÿvoidsetSearchString(const char *searchString)const SbString &getSearchString() constK"x„èS…è) "€D€”‘€‚A€‚ÿSet/get the search path string.xJ…èË…è. ,€”€T”A‚S~‚A€ƒ‚ƒ‚ÿvoidsetSeparatorChar(const char sepChar)chargetSeparatorChar() consti@S…è4†è) "€€€”‘€‚A€‚ÿSet/get separator char for search string. The default is '/'.ŒRË…èÀ†è: D€¤€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚ÿvoidsetDerivedIsOK(const SbBool derivedIsOK)SbBoolgetDerivedIsOK() const{R4†è;‡è) "€¤€”‘€‚A€‚ÿSet/get flag to allow search on a type to match derived types. Default is TRUE.KÀ†è†‡è, (€>€T”A‚S~‚A€ƒ‚ÿintgetNumItemsFound() constf<;‡èìˆè* "€y€”‘€‚A€‚ÿGet the number of search items that were successfully found. If the complete search succeeded and a path was returned, then this will be the total number of search items (not in general the same as the number of nodes in the returned path!). If the search failed, this indicates which search item was the problem.1 †‡è‰è& €€‚A€‚ÿSEE ALSOu.ìˆè’‰èG ^€\€”‘€‚AãMy'9€‰€ãòÓ}ª€‰€ãib€‰‚ÿSoPath, SoSearchAction, SoBaseKit: ‰è̉è1Ù [á „áảèý‰èÓÄèSoSFBox3s1 ’‰èý‰è% €€ˆˆ€‚ÿSoSFBox3s*̉è'Šè# €€€‚ÿNAME]7ý‰è„Šè& €n€”‘€€‚ÿSoSFBox3s - field containing a three-dimensional box3'Šè·Šè# € €€‚ÿINHERITS FROMk*„Šè"‹èA R€T€”‘€ãþ —€‰€ã— \选€€€‚ÿSoField > SoSField > SoSFBox3s2 ·ŠèT‹è& €€€€ ‚ÿSYNOPSISnG"‹è‹è' €Ž€”‘€€‚‚ÿ#include Methods from class SoSFBox3s:ÒT‹èߌèK d€¥€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ƒ‚ƒãµƒõ(‰ãµƒõ(‰‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constvoidsetValue(short xmin,short ymin,short zmin,short xmax,short ymax,short zmax)voidsetValue(const SbVec3s &min,const SbVec3s &max)O ‹è.è/ .€@€”‘€‚A€ãþ —‰‚ÿMethods from class SoField:!ߌèOè‘ ð€!€T”A‚S~‚A€ƒã‘¶p6‰‚㑶p6‰ƒ‚㑶p6‰ƒ‚㑶p6‰ƒãB-9‰‚㑶p6‰ƒ‚ƒãXíʉ‚ƒ‚㑶p6‰ƒãþ —‰‚㑶p6‰ƒãë\¼N‰‚ƒ‚㑶p6‰ƒ‚㑶p6‰ƒ‚ÿvoidsetIgnored(SbBool ignore)SbBoolisIgnored() constSbBoolisDefault() constvirtual SbBoolisOfType(SoType type) constSbBoolset(const char *valueString)voidget(SbString &valueString)voidtouch()SbBoolconnectFrom(SoField *fromField)SbBoolconnectFrom(SoEngineOutput *fromEngine)voiddisconnect()SbBoolisConnected() constSbBoolisConnectedFromField() const¿P.èÁèo ¬€¡€T”A‚S~‚A㑶p6€‰ƒãþ —‰‚㑶p6‰ƒ‚㑶p6‰ƒãë\¼N‰‚ƒã‘¶p6‰‚㑶p6‰ƒ‚ƒãÐPWÙ‰‚ã¿\%†‰ƒ‚ÿSbBoolgetConnectedField(SoField *&writingField) constSbBooOèÁè’‰èlisConnectedFromEngine() constSbBoolgetConnectedEngine(SoEngineOutput *&engineOutput) constvoidenableConnection(SbBool flag)SbBoolisConnectionEnabled() constintgetForwardConnections(SoFieldList &list) constSoFieldContainer *getContainer() const4OèNÁè& €€‚A€‚ÿDESCRIPTIONW.Áè¥Áè) "€\€”‘€‚A€‚ÿThis field defines a three-dimensional box.{ONÁè Âè, (€ž€”‘€‚A€€‚ÿSoSFBox3s fields are written to file as 6 integers separated by whitespace.0 ¥ÁèPÂè& €€‚A€‚ÿMETHODSvB ÂèÆÂè4 8€„€T”A‚S~‚A€ãB-9‰ƒ‚ƒ‚ÿstatic SoTypegetClassTypeId()virtual voidgetTypeId() constqHPÂè7Ãè) "€€”‘€‚A€‚ÿReturns the type for this class or a particular object of this class.Ó’ÆÂè ÄèA P€%€T”A‚S~‚A€ƒ‚ƒãµƒõ(‰ãµƒõ(‰‚ÿvoidsetValue(short xmin,short ymin,short zmin,short xmax,short ymax,short zmax)voidsetValue(const SbVec3s &min,const SbVec3s &max)C7ÃèMÄè) "€4€”‘€‚A€‚ÿSet the box dimensions.1 Äè~Äè& €€‚A€‚ÿSEE ALSOUMÄèÓÄè; F€4€”‘€‚Aãþ —€‰€ã— \选‚ÿSoField, SoSField1~Äèÿÿÿÿ1ÿÿÿÿÿÿÿÿbÿÿÿÿÿÿÿÿÿÿÿÿÀ·-ÈCourierArialCourier NewTimes New Roman020b060402020202020400000000000000000000(ÿÿ ÿÿÿÿ! ÿ0,???kb y™o„ 1™˜·„ ,hùƒ¦‚˜"‰¦1=4€ƒ·|•‡°é†1Ð=À†CÃ…x€z‰{ø†{sÐÍÎÍG×= Ù\‰ö!†ßº)S‡&‚-½®̃#$t%ƒ&Ð)*³+y,öƒ,Ï.`/Ô†/Þ#„€œÏ„¥€Ô‡ Ö!Z ª«C¬&­!ýˆá€T‡X„¤ s h‚ u„ =‡ õÐc€ o„† ÆÂ…„ ±Z ŒP ²_–³²€³zÅ ´\Å:…ƒ„Mˆ¯R‡½ƒƒ‰¶•€¼¨†½Þ¾c¿³„¿_‹ÁL‡Â Ü ¸† ›߀ %„›‡ÎíSŠ]ö¹Ûˆpä ]^¿š”…$VZW_¶+ Ž_½g½‡¼Àt ‰ÅrƒF_ ‡V†ÏÁÍ ð 0eD„b΄ :Ú¬‡Ûk~nÝXî!ƒîŒˆ'ž‚.0,ð,‚ñónŽÜja„Ž8kGÔPL†‰y¢‡&Â÷I[ì?Xƒ[Ú†A]\²€Zq3‚”ƒ\fkÄwQÉ€ÄA‚TË sþƒM PÝN i‡QŽ†jO¥€O¸† “Ø0„¶Õ„ ˆY|„lmJ>‰“å€÷A€…Ò‡¶â·Ï°1†ž§‚ŸD† «‚¡A¢Z£À¤€¤Åƒ¥§‚¦ÿ §V¨Ä©÷ ªý«‚¬W­ ‰­t®A¯4t˜ ±Ãƒ²5 uErmÑ”„à[á „ásâh„â›ã’‚ã) ä’‚åDæ›æ>‡æd爅çxètƒè^éW„é¿ê?ƒê2ë`뾆ë[ìl„ìt퉄í†GÉDA Æ{ EøK…<¥†ºù…è‚»®„Š•€8P…ÇJ€ÎvÃØÔ€ô…ͼ„L4LW“‚3h€€šS@¸ø±…nG‡§‚õ]†mä‹"‰Z0€âƒá„…[†»x}†™3–N¿3–`šš‚‹‚ Pš3–~„š›,/€ùƒÍ˜‚Jù„€øIì‚L…Ñþƒ-ãa$4†$œ‹P“€ ·„ ›¨…¹îØ…‹o˜b¹7¼Pô…E[‚ûúþ™€5ë”{‚9à¿î•‡4‡–2ˆ…ÿqQS¥‚úœ ‰MTWýÛV¢ƒý"M­ŠO„´¢<¶o†ꀸçZ‚†K‡'‡½Z‡  ¿‡ˆÀ9„¯ÂÖ­dž†€Ê¼…QÌ|KÍt‚Óϯß„Ó †YÕ ZÖLJüƒÙ/h€ßï†Hg vÔJó–/…—Ä™i›µœ¢U€L_ ³€µUˆ·#†…c½×¾+„¿ÑÁ>†ÅcˆÉa„ËÞ‚^¿ÓtƒÔw‡Õ6Øß5C|hAˆkD §ˆvl&€'¬x)…1¨2‚4}V~ö‚~y‰؃€´…؆23‚3½4Ñ…4J„€R–ƒ6Ø‚7h†¡¶9V}C>?7‡”ù… uœ‚ÏKÎò‚<'€8\$Š(˜'ù ¸%Ç!§(€œÏ„¥€Ô€8ò‚ù ‡ Ç!Ö!½®Þ#$\$̃#¸%t%&­ƒ&˜'<'§(Š(Ð)*ª³+y,«öƒ,&‚-C¬Ï.`/Z Ô†/¦1à†03–ê‚1ñÅÚÉY™†U…uÉ]M¼’2ú[†ƒ§ˆ†1Z%„›é†1’2½4؆23‚3Ñ…4™€5–ƒ6Ø‚7•€8¶9{‚9…<Ð=C>?ì?S@÷ADAÚ†A5CÀ†C{ Eh†¡…ErƒFøIÔJ˜‚JøK€L"MþƒMÝNO¥€OÔP PwQ‡Q€RíSQSMTA‚T¢U$VÛVZWYLW ˆYZ²€ZI[Xƒ[]\”ƒ\É]Š]]^Þ‚^_ãa0eD„bHg|h iÜjŽ†j8kfkAˆk|„lm]†m±…nÛˆpÿqEr4t5 uU…u v§ˆv¬x‰y€z‰{ø†{·|Ã…xV}k~ì‚€ƒ[†ƒJ„…#†…Z‚†‡2ˆ ‰­Š®„Šä‹Ø…‹n‚Ža„ŽGL†Í ‡P“>‰“•ó–4‡–/…—o˜Ä™œ¿š€ši›µœå€7‡”_ ³O„´€µ<¶0„¶†1†ž§‚ŸD† «‚¡A¢Ãƒ²Z£À¤€¤Åƒ¥§‚¦ÿ §V¨Ä©÷ ªý«‚¬W­ ‰­t®A¯Ï°˜ ±Ò‡¶â·Uˆ·ê€¸b¹7¼ö¹¨…¹¥†ºè‚»M¼c½'‡½×¾ ¿+„¿ˆÀÑÁ¯ÂvÃÉ€ÄñÅÄ>†Å Æ­ÇP…ÇGÉÚÉcˆÉ†€Êa„ËQÌÎÍô…ÍJ€ÎK͇ÎÓÏV†ÏL…Ñ¿Óß„ÓØÔtƒÔYÕw‡ÕZÖGדØ6ØÙüƒÙ:Ú¬‡ÛnÝßh€ßà¿îƒî,ð,‚ñóPô§‚õ\‰ösиøÂ÷ú¥‚ú[‚û”„à[ámÑ „ásâh„â›㉄풂ã) ä’‚åDæ›æ>‡æd爅çxètƒè^éW„é¿ê?ƒê2ë`뾆ë[ìl„ìtíWý¢ƒýúþ!†¢§ˆßJo†çÁ€K‡Z‡ Í € ð ‡9„”…Ö†¼…|t‚¯ † LJ/ï†s™†º)S‡‡°Xù„€¼„D €'î!$Œˆ'þƒ-4†$l&¢‡&ž‚.0)…1¨2q3“‚3L4‚4}V~ö‚~y‰Ó5ó„6]7„8û:„„;* <"ˆ= >“?¾@‚@IA‚Bý‚C–F€DˆD"E—EÛG‚ˆH4…I…LÜL*MA€N®…OÑQòˆQSÛS2ˆTƒÌ«ÍÙW ƒU§„Wœ„X<Z„[\ ]Ý€_š`?a „bÌ‚c> dPˆ]w^`ƒ^_Oe2f\…fFŠg"…h<„j!kê‚lìno5€p$‰pTƒqx…rÝtê„u¯ wrxØ€xÉyž{[|ƒÏ€Ë¨§:…ƒ„Mˆ¯Â…„߃…‡R‡º‰‡ â‹Z Œ£ƒ§¨t ½ƒ+ Žl„¨„Ž2©_œ’S©õ…©5„¦§ªt£Ô‚’딕؃€´… ±3ÌP ²–³²€³ ´¯µ_¶‰¶´‚·%‚Ͳ¹~‡º•€¼_½g½¨†½Þ¾c¿³„¿¼Àé€À_‹ÁL‡ÂéƒÄ\Åzʼnņ ƹŠÆÊ5„¦§ªl„¨£ƒ§õ…©¨S©2©¨§–*ÎPš`š~„š›}†™½‰›à†03–ƒ5²¹„Žt£é€À~‡ºº‰‡¹ŠÆ߃… ´‚·â‹¯µÊÔ‚’×–€–`ƒ^ÜL_$‰pÝ€_‚@ >—Eš`œ„Xo‚ˆHÛS> d?a(„–û: ƒUˆD]7“?!kê„uOe„„;\„[IA „bA€N<„jÛG2ˆTTƒq¾@ê‚l5€pØ€xÌ‚còˆQSÉy<Z* <x…r"EÝt2f€DPˆ]¯ wÓ54…Ió„6rxw^®…O…L„8 ]ìnÑQž{ÙWƒÌ–F«Í\…f"ˆ=‚B[|*MFŠg§„Wý‚C"…h½‰›Ú•5,cÊ0”ëH/@&@;)F24ÿÿLcÿÿAbout TGSActionsBasics`CIvfAppÔCIvfArchiveInputØCivfArchiveOutputÜCIvfComponentàCIvfDocumentäCIvfFlyViewerèCIvfMainFrameìCIvfPlaneViewerðCIvfRenderAreaôCIvfSceneViewerøCIvfStdViewerüCIvfWalkViewerClassesCollision DetectionColor Editor ComponentsContentstCopyrightxDebug Environment Variables|Demos€Details ŒDevices¸DraggersØEngines#4Environment VariablesÀErrorsÄEventsØFields8øGeneralØHeadlight Editor,Help0Interaction4InventorTInventor AppWizard - IntroductionXInventor AppWizard - New Project\Inventor AppWizard - New Project Information`Inventor AppWizard - Step 1 of 6dInventor AppWizard - Step 2 of 6hInventor AppWizard - Step 3 of 6lInventor AppWizard - Step 4 of 6pInventor AppWizard - Step 5 of 6tInventor AppWizard - Step 6 of 6xInventor Framework|ivcat€IVF Architecture OverviewˆIvfExaminerViewerŒivfixIvfResource˜IVFServerItemœivinfo ivperf¨ivtovrml¬LargeModelViewer°Lights´LMV Overview¸Localization¼Manips ÀMaterial EditorômazeøNodekits üNodesq0Open Inventor ClassesôOpen Inventor DocumentationOpen Inventor OverviewProjectors SbBool8SbBox2f<SbBox2s@SbBox3fDSbColorHSbCylinderLSbCylinderPlaneProjectorPSbCylinderProjectorTSbCylinderSectionProjectorXSbCylinderSheetProjector\SbLine`SbLineProjectordSbMatrixhSbMatrixdlSbNamepSbPlanetSbPlaneProjectorxSbPList|SbProjector€SbRotation„SbRotationdˆSbSphereŒSbSpherePlaneProjectorSbSphereProjector”SbSphereSectionProjector˜SbSphereSheetProjectorœSbString SbTime¤SbVec2d¨SbVec2f¬SbVec2s°gSbVec3d´SbVec3f¸SbVec3s¼SbVec4dÀSbVec4fÄSbViewportRegionÈSbViewVolumeÌSbXfBox3fÐSceneViewerÔSensors àSimplifiersslotcarSoAction SoAlarmSensor$SoAnnotation(SoAnnoText3,SoAnnoText3Property0SoAntiSquish4SoAppearanceKit8SoArray<SoAsciiText@SoBaseDSoBaseColorHSoBaseKitLSoBaseListPSoBevelActionTSoBevelPropertyXSoBlinker\SoBoolOperation`SoBoxHighlightRenderActiondSoButtonEventhSoByteStreamlSoCalculatorpSoCallbacktSoCallbackActionxSoCallbackList|SoCamera€SoCameraKit„SoCenterballDraggerˆSoCenterballManipŒSoClipPlaneSoClipPlaneManip”SoCollisionManager˜SoColorIndexœSoComplexity SoComposeMatrix¤SoComposeRotation¨SoComposeRotationFromTo¬SoComposeVec2f°SoComposeVec3f´SoComposeVec4f¸SoComputeBoundingBox¼SoConcatenateÀSoConeÄSoConeDetailÈSoCoordinate3ÌSoCoordinate4ÐSoCounterÔSoCubeØSoCubeDetailÜSoCylinderàSoCylinderDetailäSoDataSensorèSoDBìSoDebugErrorðSoDecimatorôSoDecomposeMatrixøSoDecomposeRotationüSoDecomposeVec2f SoDecomposeVec3f SoDecomposeVec4f SoDelayQueueSensor SoDetail SoDetailList SoDirectionalLight SoDirectionalLightDragger SoDirectionalLightManip SoDragger$ SoDragPointDragger( SoDrawStyle, SoEdgeFlag0 SoElapsedTime4 SoEngine8 SoEngineList< SoEngineOutput@ SoEngineOutputListD SoEnvironmentH SoErrorL SoEventP SoEventCallbackT SoExtSelectionX SoFaceDetail\ SoFaceSet` SoFieldd SoFieldContainerh SoFieldListl SoFieldSensorp SoFilet SoFontx SoFontStyle| SoGate€ SoGetBoundingBoxAction„ SoGetMatrixActionˆ bVec2f¬SbVec2s°fSoGetPrimitiveCountActionŒ SoGlobalSimplifyAction SoGLRenderAction” SoGroup˜ SoHandleBoxDraggerœ SoHandleBoxManip  SoHandleEventAction¤ SoIdleSensor¨ SoImage¬ SoIndexedFaceSet° SoIndexedLineSet´ SoIndexedNurbsCurve¸ SoIndexedNurbsSurface¼ SoIndexedShapeÀ SoIndexedTriangleStripSetÄ SoInfoÈ SoInputÌ SoInteractionÐ SoInteractionKitÔ SoInterpolateØ SoInterpolateFloatÜ SoInterpolateRotationà SoInterpolateVec2fä SoInterpolateVec3fè SoInterpolateVec4fì SoIntersectionDetectionActionð SoJackDraggerô SoJackManipø SoKeyboardEventü SoLabel SoLevelOfDetail SoLevelOfSimplification SoLight SoLightKit SoLightModel SoLinearProfile SoLineDetail SoLineHighlightRenderAction SoLineSet$ SoLocateHighlight( SoLocation2Event, SoLOD0 SoMarkerSet4 SoMaterial8 SoMaterialBinding< SoMatrixTransform@ SoMemoryErrorD SoMFBitMaskH SoMFBoolL SoMFColorP SoMFEngineT SoMFEnumX SoMFFloat\ SoMField` SoMFInt32d SoMFLongh SoMFMatrixl SoMFNamep SoMFNodet SoMFPathx SoMFPlane| SoMFRotation€ SoMFShort„ SoMFStringˆ SoMFTimeŒ SoMFUInt32 SoMFULong” SoMFUShort˜ SoMFVec2fœ SoMFVec3f  SoMFVec4f¤ SoMotion3Event¨ SoMouseButtonEvent¬ SoMultipleCopy° SoNode´ SoNodeKit¸ SoNodekitCatalog¼ SoNodeKitDetailÀ SoNodeKitListPartÄ SoNodeKitPathÈ SoNodeListÌ SoNodeSensorÐ SoNonIndexedShapeÔ SoNormalØ SoNormalBindingÜ SoNurbsCurveà SoNurbsProfileä SoNurbsPropertyè SoNurbsSurfaceì SoOctreeOrderingð SoOffScreenRendererô SoOneShotø SoOneShotSensorü SoOnOff SoOrthographicCamera SoOutput SoPackedColor SoPath SoPathList SoPathSensor SoPathSwitch SoPattern dSoPendulum$ SoPerspectiveCamera( SoPickAction, SoPickedPoint0 SoPickedPointList4 SoPickStyle8 SoPointDetail< SoPointLight@ SoPointLightDraggerD SoPointLightManipH SoPointSetL SoPolygonOffsetP SoPrimitiveVertexT SoProfileX SoProfileCoordinate2\ SoProfileCoordinate3` SoQuadMeshd SoRayPickActionh SoReadErrorl SoRenderListp SoReorganizeActiont SoResetTransformx SoRotateCylindricalDragger| SoRotateDiscDragger€ SoRotateSphericalDragger„ SoRotationˆ SoRotationXYZŒ SoRotor SoScale” SoScale1Dragger˜ SoScale2Draggerœ SoScale2UniformDragger  SoScaleUniformDragger¤ SoSceneKit¨ SoSceneManager¬ SoSearchAction° SoSearchPathAction´ SoSelection¸ SoSelectOne¼ SoSensorÀ SoSeparatorÄ SoSeparatorKitÈ SoSFBitMaskÌ SoSFBoolÐ SoSFBox3sÔ SoSFColorØ SoSFEngineÜ SoSFEnumà SoSFFloatä SoSFieldè SoSFImageì SoSFImage3ð SoSFInt32ô SoSFLongø SoSFMatrixü SoSFName SoSFNode SoSFPath SoSFPlane SoSFRotation SoSFShort SoSFString SoSFTime SoSFTrigger SoSFUInt32$ SoSFULong( SoSFUShort, SoSFVec2f0 SoSFVec3f4 SoSFVec4f8 SoShape< SoShapeHints@ SoShapeKitD SoShapeSimplifyActionH SoShuttleL SoSimplifierP SoSimplifyActionT SoSpaceballButtonEventX SoSphere\ SoSpotLight` SoSpotLightDraggerd SoSpotLightManiph SoSurroundScalel SoSwitchp SoTabBoxDraggert SoTabBoxManipx SoTabPlaneDragger| SoText2€ SoText3„ SoTextDetailˆ SoTexture2Œ SoTexture2Transform SoTexture3” SoTexture3Transform˜ SoTextureCoordinate2œ SoTextureCoordinate3  SoTextureCoordinateBinding¤ SoTextureCoordinateDefault¨ SoTextureCoordinateEnvironment¬ SoTextureCoordinateFunction° attern WSoTextureCoordinatePlane´ SoTimeCounter¸ SoTimerQueueSensor¼ SoTimerSensorÀ SoToHTMLActionÄ SoToVRML2ActionÈ SoToVRMLActionÌ SoToZ3DActionÐ SoTrackballDraggerÔ SoTrackballManipØ SoTranReceiverÜ SoTranSenderà SoTransformä SoTransformationè SoTransformBoxDraggerì SoTransformBoxManipð SoTransformerDraggerô SoTransformerManipø SoTransformManipü SoTransformSeparator SoTransformVec3f SoTranslate1Dragger SoTranslate2Dragger SoTranslation SoTriangleStripSet SoTriggerAny SoType SoTypeList SoUnits$ SoValueOrdering( SoVertexFlag, SoVertexProperty0 SoVertexShape4 SoVRMLAnchor8 SoVRMLAppearance< SoVRMLAudioClip@ SoVRMLBackgroundD SoVRMLBillboardH SoVRMLBoxL SoVRMLCollisionP SoVRMLColorT SoVRMLColorInterpolatorX SoVRMLCone\ SoVRMLCoordinate` SoVRMLCoordinateInterpolatord SoVRMLCylinderh SoVRMLCylinderSensorl SoVRMLDirectionalLightp SoVRMLElevationGridt SoVRMLEXTERNPROTODefx SoVRMLEXTERNPROTOField| SoVRMLEXTERNPROTOInstance„ SoVRMLExtrusionˆ SoVRMLFogŒ SoVRMLFontStyle SoVRMLGeometry” SoVRMLGridShape˜ SoVRMLGroupœ SoVRMLImageTexture  SoVRMLIndexedFaceSet¤ SoVRMLIndexedLine¨ SoVRMLIndexedLineSet¬ SoVRMLIndexedShape° SoVRMLInline´ SoVRMLInterpolator¸ SoVRMLInterpOutput¼ SoVRMLInterpOutputListÀ SoVRMLLightÄ SoVRMLLODÈ SoVRMLMaterialÌ SoVRMLMovieTextureÐ SoVRMLNavigationInfoÔ SoVRMLNormalØ SoVRMLNormalInterpolatorÜ SoVRMLOrientationInterpolatorà SoVRMLParentä SoVRMLPixelTextureè SoVRMLPlaneSensorì SoVRMLPointLightð SoVRMLPointSetô SoVRMLPositionInterpolatorø SoVRMLPROTODefü SoVRMLPROTOFieldSoVRMLPROTOFieldListSoVRMLPROTOInstanceSoVRMLProximitySensor SoVRMLScalarInterpolator ]SoVRMLScriptSoVRMLShapeSoVRMLSoundSoVRMLSphere SoVRMLSphereSensor$SoVRMLSpotLight(SoVRMLSwitch,SoVRMLText0SoVRMLTexture4SoVRMLTextureCoordinate8SoVRMLTextureTransform<SoVRMLTimeSensor@SoVRMLTouchSensorDSoVRMLTransformHSoVRMLVertexLineLSoVRMLVertexPointPSoVRMLVertexShapeTSoVRMLViewpointXSoVRMLVisibilitySensor\SoVRMLWorldInfo`SoWindSoWin ClasseshSoWinAnaglyphStereolSoWinClipboardpSoWinCollisionViewertSoWinColorEditorxSoWinComponent|SoWinConstrainedViewer€SoWinDevice„SoWinDirectionalLightEditorˆSoWinExaminerViewerŒSoWinFlyViewerSoWinFullViewer”SoWinGLWidget˜SoWinHalfScreenStereoœSoWinInterlacedStereo SoWinKeyboard¤SoWinMaterialEditor¨SoWinMouse¬SoWinNoStereoView°SoWinPlaneViewer´SoWinRawStereo¸SoWinRenderArea¼SoWinSpaceballÀSoWinSSDIStereoÄSoWinStereoDialogÈSoWinStereoViewerÌSoWinStereoViewTypeÐSoWinViewerÔSoWinWalkViewerØSoWrapperKitÜSoWriteActionàSoWWWAnchoräSoWWWInlineèSoXtìSoXt ClassesðSoXtClipboardôSoXtCollisionViewerøSoXtColorEditorüSoXtComponentSoXtConstrainedViewerSoXtDeviceSoXtDirectionalLightEditor SoXtExaminerViewerSoXtFileSelectionDialogSoXtFlyViewerSoXtFullViewerSoXtGLWidget SoXtInputFocus$SoXtKeyboard(SoXtLightSliderSet,SoXtMaterialEditor0SoXtMaterialList4SoXtMaterialSliderSet8SoXtMouse<SoXtPlaneViewer@SoXtPrintDialogDSoXtRenderAreaHSoXtResourceLSoXtSliderSetPSoXtSliderSetBaseTSoXtSpaceballXSoXtTransformSliderSet\SoXtViewer`SoXtWalkViewerdStereo hTechnical SupportŒTGS InnovationsTools”View Points´Viewer Buttons¸Viewers¼VRMLô ¶ÿÿVRML 1.0øVRML 2.0Lüvrmllint,Win32 Features0e SoVRMLSphereSensor$SoVRMLSpotLight(SoVRMLSwitch,SoVRMLText0SoVRMLTexture4SoVRMLTextureCoordinate8SoVRMLTextureTransform<SoVRMLTimeSensor@SoVRMLTouchSensorDSoVRMLTransformHSoVRMLVertexLineLSoVRMLVertexPointPSoVRMLVertexShapeTSoVRMLViewpointXSoVRMLVisibilitySensor\SoVRMLWorldInfo`SoWindSoWin ClasseshSoWinAnaglyphStereolSoWinClipboardpSoWinCollisionViewertSoWinColorEditorxSoWinComponent|SoWinConstrainedViewer€SoWinDevice„SoWinDirectionalLightEditorˆSoWinExaminerViewerŒSoWinFlyViewerSoWinFullViewer”SoWinGLWidget˜SoWinHalfScreenStereoœSoWinInterlacedStereo SoWinKeyboard¤SoWinMaterialEditor¨SoWinMouse¬SoWinNoStereoView°SoWinPlaneViewer´SoWinRawStereo¸SoWinRenderArea¼SoWinSpaceballÀSoWinSSDIStereoÄSoWinStereoDialogÈSoWinStereoViewerÌSoWinStereoViewTypeÐSoWinViewerÔSoWinWalkViewerØSoWrapperKitÜSoWriteActionàSoWWWAnchoräSoWWWInlineèSoXtìSoXt ClassesðSoXtClipboardôSoXtCollisionViewerøSoXtColorEditorüSoXtComponentSoXtConstrainedViewerSoXtDeviceSoXtDirectionalLightEditor SoXtExaminerViewerSoXtFileSelectionDialogSoXtFlyViewerSoXtFullViewerSoXtGLWidget SoXtInputFocus$SoXtKeyboard(SoXtLightSliderSet,SoXtMaterialEditor0SoXtMaterialList4SoXtMaterialSliderSet8SoXtMouse<SoXtPlaneViewer@SoXtPrintDialogDSoXtRenderAreaHSoXtResourceLSoXtSliderSetPSoXtSliderSetBaseTSoXtSpaceballXSoXtTransformSliderSet\SoXtViewer`SoXtWalkViewerdStereo hTechnical SupportŒTGS InnovationsTools”View Points´Viewer Buttons¸Viewers¼VRMLô ’SbVec3dSoGetPrimitiveCountActionSoPendulumSoTextureCoordinatePlaneSoVRMLScriptVRML 1.0/&;)Lzzÿÿøÿÿÿÿ/8&8;)LzÿÿckÿÿAbout TGS= Actions„Basics!CIvfAppýˆCIvfArchiveInputáCIvfArchiveOutput€CIvfComponentT‡CIvfDocument¿CIvfExaminerViewerXCIvfFlyViewer„CIvfMainFrame¤ CIvfPlaneViewers CIvfRenderAreah‚ CIvfSceneViewer‹‚ CIvfServerItemu„ CIvfStdViewer=‡ CIvfWalkViewer Classes (by Function)c€ Collision Detection ContentsÜ Copyright߀ Demosä Details΄ DraggersË Engines¸† Environment VariablesÕ„Errors€…EventsFieldsù…GeneralNIVF Architecture OverviewG‡Interaction"‰Inventor AppWizard - IntroductionInventor0€Inventor AppWizard - New Project InformationZInventor AppWizard - New ProjectâƒInventor AppWizard - Step 1 of 6á„Inventor AppWizard - Step 2 of 6…Inventor AppWizard - Step 3 of 6[†Inventor AppWizard - Step 4 of 6Inventor AppWizard - Step 5 of 6»Inventor AppWizard - Step 6 of 6xIVF Classesš‚IvfResourceùƒLMV Overview,LargeModelViewer‰‚Light Directional Lightè‚Light Point Light@ƒLight Spot Light´ƒManip Center Ball´…Manip Handle Boxý‡Manip JackManip SelectionManip Tab BoxˆManip TrackballˆManip Transform Box€Manip Transformerœ‹ManipsîNodekitsNodesProjectors5SVI Buttonso„SVI Color Editor¥ˆSVI Edits‰SVI Editors{ŠSVI FileDSVI Graphics AreahSVI Headlight Editor€SVI Help/€SVI LightsÄ‚SVI Manips·„SVI Material Editor3…SVI SelectionCSVI ViewƒSVI View Points€SbBoolSbBox2fœSbBox2sÏ„SbBox3f¥€SbColorÔSbCylinder€SbCylinderPlaneProjector8SbCylinderProjectorò‚SbCylinderSectionProjectorù SbCylinderSheetProjector‡ SbLineÇ!SbLineProjectorÖ!SbMatrixÞ#SbNamẽ#SbPList$SbPlane\$SbPlaneProjector¸%SbProjectort%SbRotationƒ&SbSphere˜'SbSpherePlaneProjector<'SbSphereProjector§(SbSphereSectionProjectorŠ(SbSphereSheetProjectorÐ)SbString*SbTime³+SbVec2fy,SbVec2söƒ,SbVec3f&‚-SbVec3sÏ.SbVec4f`/SbViewportRegionnÔ†/SbXfBox3fà†0SceneViewer¦1SceneViewer Introê‚1Sensors†1Simplifiersé†1SoAction’2SoAlarmSensor؆2SoAnnoText33‚3SoAnnoText3Property½4SoAnnotationÑ…4SoAntiSquish™€5SoAppearanceKit–ƒ6SoArrayØ‚7SoAsciiText•€8SoBase¶9SoBaseColor{‚9SoBaseKit…<SoBaseListÐ=SoBevelActionC>SoBevelProperty?SoBlinkerì?SoBoolOperationS@SoBoxHighlightRenderAction÷ASoButtonEventDASoByteStreamÚ†ASoCalculator5CSoCallbackÀ†CSoCallbackAction{ ESoCallbackList…ESoCameraKitrƒFSoCenterballDraggerøISoCenterballManipÔJSoClipPlane˜‚JSoClipPlaneManipøKSoCollisionManager€LSoColorIndex"MSoComplexityþƒMSoComposeMatrixÝNSoComposeRotationóˆNSoComposeRotationFromTo¥€OSoComposeVec2fÔPSoComposeVec3f PSoComposeVec4fwQSoComputeBoundingBox‡QSoConcatenate€RSoConeíSSoConeDetailQSSoCoordinate3MTSoCoordinate4A‚TSoCounter¢USoCube$VSoCubeDetailÛVSoCylinderZWSoCylinderDetailLWSoDBYSoDataSensor ˆYSoDebugErrorZSoDecimator²€ZSoDecomposeMatrixI[SoDecomposeRotationXƒ[SoDecomposeVec2f]\SoDecomposeVec3f”ƒ\SoDecomposeVec4fÉ]SoDelayQueueSensorŠ]SoDetail]^SoDetailListÞ‚^SoDirectionalLight_SoDirectionalLightDraggerãaSoDirectionalLightManipD„bSoDragPointDragger0eSoDraggerHgSoDrawStyle|hSoEdgeFlag iSoElapsedTimeÜjSoEngineŽ†jSoEngineList8kSoEngineOutputfkSoEngineOutputListAˆkSoEnvironment|„lSoErrormSoEvent]†mSoEventCallback±…nSoExtSelectionÛˆpSoFaceDetailÿqSoFaceSetErSoField4tSoFieldContainer5 uSoFieldListU…uSoFieldSensor vSoFile§ˆvSoFont¬xSoFontStyleÃ…xSoGLRenderAction‰ySoGate€zSoGetBoundingBoxAction‰{SoGetMatrixActionø†{SoGetPrimitiveCountAction·|SoGlobalSimplifyActionV}SoGroupk~SoHandleBoxDraggerì‚SoHandleBoxManip€ƒSoHandleEventAction[†ƒSoIdleSensorJ„SoImage€‰„SoIndexedFaceSet#†…SoIndexedLineSetZ‚†SoIndexedNurbsCurve‡SoIndexedNurbsSurface2ˆSoIndexedShape ‰SoIndexedTriangleStripSetegionq­ŠSoInfo®„ŠSoInputä‹SoInteractionØ…‹SoInteractionKitnSoInterpolate‚SoInterpolateFloatŽSoInterpolateRotationa„ŽSoInterpolateVec2fGSoInterpolateVec3fL†SoInterpolateVec4fÍSoIntersectionDetectionAction ‡SoJackDraggerP“SoJackManip>‰“SoKeyboardEvent7‡”SoLOD•SoLabeló–SoLevelOfDetail4‡–SoLevelOfSimplification/…—SoLighto˜SoLightKitÄ™SoLightModel¿šSoLineDetail€šSoLineHighlightRenderActioni›SoLineSetœSoLinearProfileµœSoLocateHighlightå€SoLocation2Event†SoMFBitMask1†žSoMFBool§‚ŸSoMFColorD† SoMFEngine«‚¡SoMFEnumA¢SoMFFloatZ£SoMFInt32À¤SoMFLong€¤SoMFMatrixŃ¥SoMFName§‚¦SoMFNodeÿ §SoMFPathV¨SoMFPlaneÄ©SoMFRotation÷ ªSoMFShortý«SoMFString‚¬SoMFTimeW­SoMFUInt32 ‰­SoMFULongt®SoMFUShortA¯SoMFVec2fÏ°SoMFVec3f˜ ±SoMFVec4fòSoMField_ ³SoMarkerSetO„´SoMaterial€µSoMaterialBinding<¶SoMatrixTransform0„¶SoMemoryErrorÒ‡¶SoMotion3Eventâ·SoMouseButtonEventUˆ·SoMultipleCopyꀸSoNodeb¹SoNodeKitö¹SoNodeKitDetail¨…¹SoNodeKitListPart¥†ºSoNodeKitPathè‚»SoNodeListM¼SoNodeSensor7¼SoNodekitCatalogc½SoNonIndexedShape'‡½SoNormal×¾SoNormalBinding ¿SoNurbsCurve+„¿SoNurbsProfileˆÀSoNurbsPropertyÑÁSoNurbsSurface¯ÂSoOctreeOrderingvÃSoOffscreenRendererÄSoOnOffÉ€ÄSoOneShotñÅSoOneShotSensor>†ÅSoOrthographicCamera ÆSoOutput­ÇSoPackedColorP…ÇSoPathGÉSoPathListÚÉSoPathSensorcˆÉSoPathSwitch†€ÊSoPatterna„ËSoPendulumQÌSoPerspectiveCameraÎÍSoPickActionKÍSoPickStyleô…ÍSoPickedPointJ€ÎSoPickedPointList‡ÎSoPointDetailÓÏSoPointLightV†ÏSoPointLightDraggerL…ÑSoPointLightManip¿ÓSoPointSetß„ÓSoPolygonOffsetØÔSoPrimitiveVertextƒÔSoProfileYÕSoProfileCoordinate2w‡ÕSoProfileCoordinate3ZÖSoQuadMeshG×SoRayPickAction“ØSoReadError6ØSoRenderListÙSoReorganizeActionüƒÙSoResetTransform:ÚSoRotateCylindricalDragger¬‡ÛSoRotateDiscDraggernÝSoRotateSphericalDraggerßSoRotationegion nh€ßSoRotationXYZàSoRotor”„àSoSFBitMask[áSoSFBool „áSoSFColorsâSoSFEngineh„âSoSFEnum›ãSoSFFloat’‚ãSoSFImage) äSoSFImage3’‚åSoSFInt32DæSoSFLong›æSoSFMatrix>‡æSoSFNamedçSoSFNodeˆ…çSoSFPathxèSoSFPlanetƒèSoSFRotation^éSoSFShortW„éSoSFString¿êSoSFTime?ƒêSoSFTrigger2ëSoSFUInt32`ëSoSFULong¾†ëSoSFUShort[ìSoSFVec2fl„ìSoSFVec3ftíSoSFVec4f‰„íSoSField¿îSoScaleƒîSoScale1Dragger,ðSoScale2Dragger,‚ñSoScale2UniformDraggeróSoScaleUniformDraggerPôSoSceneKit§‚õSoSceneManager\‰öSoSearchActionÂ÷SoSelectOne¸øSoSelectionúSoSensor¥‚úSoSeparator[‚ûSoSeparatorKitWýSoShape¢ƒýSoShapeHintsúþSoShapeKit!†SoShapeSimplifyAction¢SoShuttle§ˆSoSimplifierßSoSimplifyActionJSoSpaceballButtonEvento†SoSphereçSoSpotLightÁSoSpotLightDragger€SoSpotLightManipK‡SoSurroundScaleZ‡ SoSwitchÍ SoTabBoxDragger€ SoTabBoxManipð SoTabPlaneDragger‡SoText29„SoText3”…SoTextDetailÖSoTexture2†SoTexture2Transform¼…SoTexture3|SoTexture3Transformt‚SoTextureCoordinate2¯SoTextureCoordinate3 †SoTextureCoordinateBinding SoTextureCoordinateDefaultLJSoTextureCoordinateEnvironment/SoTextureCoordinateFunctionï†SoTextureCoordinatePlanesSoTimeCounterSoTimerQueueSensor™†SoTimerSensorºSoToHTMLAction)SoToVRML2ActionS‡SoToVRMLActionXSoTrackballDraggerù„SoTrackballManip€SoTranReceiver¼„SoTranSenderD SoTransformî!SoTransformBoxDragger$SoTransformBoxManip4†$SoTransformManipl&SoTransformSeparator¢‡&SoTransformVec3f€'SoTransformationŒˆ'SoTransformerDraggerþƒ-SoTransformerManipž‚.SoTranslate1Dragger0SoTranslate2Dragger)…1SoTranslation¨2SoTriangleStripSetq3SoTriggerAny“‚3SoTypeL4SoTypeList‚4SoUnitsÓ5SoVRMLAnchoró„6SoVRMLAppearance]7SoVRMLAudioClip„8SoVRMLBackgroundû:SoVRMLBillboard„„;SoVRMLBox* <SoVRMLCollision"ˆ=SoVRMLColor >SoVRMLColorInterpolator“?SoVRMLConeionegion`¾@SoVRMLCoordinate‚@SoVRMLCoordinateInterpolatorIASoVRMLCylinder‚BSoVRMLCylinderSensorý‚CSoVRMLDirectionalLight€DSoVRMLEXTERNPROTODefˆDSoVRMLEXTERNPROTOField"ESoVRMLEXTERNPROTOFieldList—ESoVRMLEXTERNPROTOInstance–FSoVRMLElevationGridÛGSoVRMLExtrusion‚ˆHSoVRMLFog4…ISoVRMLFontStyle…LSoVRMLGeometryÜLSoVRMLGridShape*MSoVRMLGroupA€NSoVRMLImageTexture®…OSoVRMLIndexedFaceSetÑQSoVRMLIndexedLineòˆQSoVRMLIndexedLineSet&ŠRSoVRMLIndexedShapeÛSSoVRMLInline2ˆTSoVRMLInterpolator ƒUSoVRMLLODÙWSoVRMLLight§„WSoVRMLMaterialœ„XSoVRMLMovieTexture<ZSoVRMLNavigationInfo„[SoVRMLNormal\SoVRMLNormalInterpolator ]SoVRMLOrientationInterpolatorPˆ]SoVRMLPROTODefw^SoVRMLPROTOField`ƒ^SoVRMLPROTOFieldListÿˆ^SoVRMLPROTOInstanceÝ€_SoVRMLParentš`SoVRMLPixelTexture?aSoVRMLPlaneSensor „bSoVRMLPointLightÌ‚cSoVRMLPointSet> dSoVRMLPositionInterpolatorOeSoVRMLProximitySensor2fSoVRMLScalarInterpolator\…fSoVRMLScriptFŠgSoVRMLShape"…hSoVRMLSound<„jSoVRMLSphere!kSoVRMLSphereSensorê‚lSoVRMLSpotLightìnSoVRMLSwitchoSoVRMLText5€pSoVRMLTexture$‰pSoVRMLTextureCoordinateTƒqSoVRMLTextureTransformx…rSoVRMLTimeSensorÝtSoVRMLTouchSensorê„uSoVRMLTransform¯ wSoVRMLVertexLinerxSoVRMLVertexPointØ€xSoVRMLVertexShapeÉySoVRMLViewpointž{SoVRMLVisibilitySensor[|SoVRMLWorldInfo}SoValueOrderingV~SoVertexFlagö‚~SoVertexPropertyy‰SoVertexShape؃€SoWWWAnchor´…SoWWWInlineƒSoWin:…ƒSoWinClipboard„SoWinCollisionViewerÂ…„SoWinComponent߃…SoWinConstrainedViewer‡SoWinDeviceR‡SoWinDirectionalLightEditorº‰‡SoWinExaminerViewer SoWinFlyViewerâ‹SoWinFullViewerZ ŒSoWinGLWidgett SoWinKeyboard½ƒSoWinMaterialEditor+ ŽSoWinMouse„ŽSoWinPlaneViewer_SoWinRenderAreaœ’SoWinSpaceballÔ‚’SoWinWalkViewerë”SoWrapperKit•SoWriteActionÚ•Win32 Features–Technical Support3–Tools×–VRML––VRML 1.0(„–VRML 2.0˜Viewer Examiner viewer?SoVRMLConeionegioneKÿÿ¦‚˜Viewer Fly-through Viewer1™Viewer Plane Viewery™Viewer Walk Viewer}†™ivcat`šivfixPšivinfo~„šivperf›ivtovrml ›maze%„›slotcar½‰›vrmllintuœClasses (Alphabetic)Z SbViewVolumeh†¡SoCamerat£SoWinViewer5„¦SoWinStereoViewer¨§SoWinAnaglyphStereo£ƒ§SoWinHalfScreenStereo¨SoWinInterlacedStereol„¨SoWinNoStereoView2©SoWinRawStereoS©SoWinSSDIStereoõ…©SoWinStereoDialog§ªSoWinStereoViewTypeªSbVec2d«SbVec3dC¬SbVec4d&­SbRotationd½®SbMatrixdMˆ¯SoWinColorEditor‡°SoToZ3DAction ±SoXtP ²SoXtClipboard–³SoXtCollisionViewer²€³SoXtColorEditor ´SoXtComponent¯µSoXtConstrainedViewer_¶SoXtDevice‰¶SoXtDirectionalLightEditor´‚·SoXtExaminerViewer²¹SoXtFlyViewer~‡ºSoXtFullViewer•€¼SoXtGLWidget_½SoXtInputFocusg½SoXtKeyboard¨†½SoXtLightSliderSetÞ¾SoXtMaterialEditorc¿SoXtMaterialList³„¿SoXtMaterialSliderSet¼ÀSoXtMouseé€ÀSoXtPlaneViewer_‹ÁSoXtPrintDialogL‡ÂSoXtRenderAreaéƒÄSoXtResource\ÅSoXtSliderSetzÅSoXtSliderSetBase‰ÅSoXtSpaceball† ÆSoXtTransformSliderSet¹ŠÆSoXtViewerÊSoXtWalkViewerÏ€ËSoWin Classes3ÌSoXt ClassesƒÌSoVRMLInterpOutput«ÍSoVRMLInterpOutputListÍLocalization%‚ÍSoXtFileSelectionDialogKÎInventor Overview*ÎTGS Innovations‚ÏOpen Inventor Documentationë‡ÏUsing a Spaceball or Space MouseõÐClassesÌÐHomesÐSoSearchPathActionmÑSoSFBox3sðÑgö‚~SoVertexPropertyy‰SoVertexShape؃€SoWWWAnchor´…SoWWWInlineƒSoWin:…ƒSoWinClipboard„SoWinCollisionViewerÂ…„SoWinComponent߃…SoWinConstrainedViewer‡SoWinDeviceR‡SoWinDirectionalLightEditorº‰‡SoWinExaminerViewer SoWinFlyViewerâ‹SoWinFullViewerZ ŒSoWinGLWidgett SoWinKeyboard½ƒSoWinMaterialEditor+ ŽSoWinMouse„ŽSoWinPlaneViewer_SoWinRenderAreaœ’SoWinSpaceballÔ‚’SoWinWalkViewerë”SoWrapperKit•SoWriteActionÚ•Win32 Features–Technical Support3–Tools×–VRML––VRML 1.0(„–VRML 2.0˜Viewer Examiner viewer?SoVRMLConeionegionÜÔ†/­Šh€ß¾@¦‚˜/(&(;)L4ÿÿb˜ŒÿÿÞ!€€µ+¤ €Ü Í›;€3…g!à‚ę˃øK~Ó´ƒ´…É“â„G×lÌ……¿\%†4tÆ9*†ýˆÈï?†0ešEp†!kOõt†`ƒ^zÅe‰:…ƒ™)¼Œrx&òOØ€xÚ8£¥€O9£ÔP09£ PIöHŽ¿šN=TŽµœ¬õ´Ž0øÃþƒ--‹2‘Z Œ/ x‘…<4i¥‘Ö!3ýØ‘"ERíß‘x…r(’´‚·_4¦’»5OZ” ˆYðO®”É€Ä5,ß”w^‘Ù»•tƒè` ½•´…(ç –¸øJ –Â÷½á–¨…¹Ýo§––ƒ6Ûá–â·ôx—|„l2™|—mþ —Er«]à—V}û9˜ù…«:B˜J„þßC˜®„ŠX«]˜KÍŠ†Å˜4‡–Ä2И• Ú˜/…—…Wu™† ÆXÖ|™Äª²šà®Ä?š¿î9ÖEšWýéwš‡êwš9„­µš‚4üµM›¼„±—o› ‡rïØ›ÑQØœ›æ1éjœ3ÌŸ\›œ€/\»ž{¥W7ž€'œž†€Êw¾°žD† M*Ÿ5C;Û ­Ç%n’ 4†$¡XÀ ‚Ï«%¡Þ¾å[¡„ÄØ¡ÔJç2ø¡GÉ{ul¢¢‡&&M°¢nÝUIÕ¢#†…œºé¤É]ɘƥüƒÙ?/}¦§ªÏ~)§¾@~«M§ÛˆpvÀ]§ˆ¼t¯§|¬ʧò‚%Ô§:Úìjÿ§ƒ?N¨õÐ!d©ZWpsz©2© +ªòÓ}ª\‰ö¨òƯçNw¶°™€5qŠ•±†qx²_‹Á ¬³ˆ-X?³= ËŠ³’2¼ö³ÛS¼$ú³ZÖøaK´<'é^x´\ÅóÐÀ´1†žvnÄ´«‚¡5ɴòòÌ´À¤\úδŃ¥÷]Ï´§‚¦²hÑ´ÿ §–{Ö´‚¬19 ·ë‡Ï¢½?·”…ñf‘¸`/«Í¨¸Žgñ¸@ƒS;n¹X7.~¹‚Bšvø¹à†0}”z»QÌmý¼ö‚~H#G½ÜL^`ˆ½‡Aùé½Ò‡¶Lº¿D„bg¿Õ„ù›¿áKÕl¿'‡½ÝÌ¿‰¶‰EÛ¿€…rPnÀt£-ÒÀYÕ.ÒÀw‡ÕʇõÀ[†ƒW­‚Á€LühÁ–FŸyUÂß`¤qÎK‡úD×ÎßÑŒç΀ñ†ÏÔ†/xÁ—ÏZ€ÀÏo˜Ï[ ÑÄ©ÿÓ>ÑÖÔ>Ѽ…¸>ÓPˆ]` AÓ!†IR~Ó iFCïÓØ‚7¼ýÓD ô4Ô˜'ü”ŒÔW„éƒÀÖ‚›Ø1Ùù„ÐPWÙ5 u!ö‡Ù„8?\ÇÙ!KWúÙa„ŽvWúÙG¡WúÙL†õ+cÛøI5ëlÜùƒù_\Ý¥ˆ»]Ý{Šh `Ý€0#qÝC:"ÍÝ¿ÓkNÞØÔŒÝ߬‡Û§íߦ‚˜Bøà„[[EàQS\EàMTîeà„Ž÷3․ÌrŠârƒFcÌìâPšb õâ~„šø@ãÿq|ŤãZ‚†`‡Ðã2ëq'å†1ÌÒ徆ë„Ü历jY#æƒî}9;ænðîŸç‹‚ Ž2Üç$V"ü‘èxÌ™èórX.éúU×Sé[áØtWéh„â— \鉄íãø_éDæ¾bé>‡æYdbédçod鈅çøié¿ê‰X˜é+„¿}ˆê€,êZw`Ëꌈ'˜úëš`}žbëì?ñdëo†Ù„ì=‡ 0MÓìZ‡ ‰Ë í€ßí<¶’o>îPôy­îÝ€_C}Îî\$Ž¤Ùï •œŒðOþ‚dñÛV»‹ñu„ ¤ÓÍñØ…‹n=TòÝt!gôË •£&ôö¹DRôø†{3xõî9€õâ‹P!öV~˜uPö,‚ñæxpöÍ#º…öÎÍjhšö¯Â×ïþö ‰ìEJ÷A‚TL´²÷L4»‡Cøs‰TÄLøû:16aø\±*:ùÑ…48f’ù"‰ë8•ù–Žä úœ„XásÆú…E ‚ût%¦Š3ýÓÏmz@ý€–¦@ý(„–} Áýê‚lʉ þ“ØÐBþh‚ h$ÿ¦1“°# ›nY+LW_/×–ð¡>Ji›"r™Ú†A>é·œ‹ib{‚9Ç Ø¨†½è"&U…u°¦-߀ ¡<½R‡UÑF}†™\èF`š©0CYcaˆDì΄„;¿2΂ˆH^Î ƒU#kß´ƒö퀚ï‰3g½…AH7‡”Hƒo|3–KSwQ‡Bèy™F¸_ \…fÁKé ¼À[Eì ?aFÙ ·|úÓv €Ã š‚eY •6 S@è¤ù <„jeìù ‰Åá¿" ²¹ÂmG X'ph ìn`w‰/€K8Ä… )¯ wM+¯P“ÕA±Ï€ËAÛÓß„Ó*Jâ+•ñÅ}饆ºE}®…Oûª®* <àꀃç]3{ E¬ñ†ó–ôÃ1†[îDXƒ[†îD]\±îD”ƒ\%ҳĂLžË ]'ÚÉm=9 „bŽ;³„¿üb÷Aöñõì‚~\ü²€ZåC’…L%ç?ƒê@)sÇl‚½4Nô—§„WÅÌcˆÉÀúÞ‚^*{£ý«ùÉ}}@/<Zv‹}¬xœÐè‚»F¬›c€ ‰2ì•€¼HÔô©5€p4ä»D·Ò Ú•?–/ ]†mì‡!íS‘H÷!ê„uÊÌø!‡ø"DAx-"߃…Oa*$> d0d$b¹ÕŒy$‡Qžãž$“?ä<³$otÌß$ÝNçî$!çî$œ?çî$Ï„Ú:%5À"%¥€^–Q%o„$6Ø%¤ ŠUô% è.°&"ˆ=Ѓ'úþ”„'*M÷Ä'$K2Å'̃#gB~(ÙWKã€(º‰‡ƒ'ó(ó„6{ƒõ(ª}ƒõ(³+Šƒõ(y,¦ƒõ(«¨ƒõ(öƒ,µƒõ(&‚-уõ(C¬Óƒõ(Ï.©öø(Ã…xïÿ‰)Žmç)W­ž ê)FŠgÀó)"…h¡è˜*î!¦®´*J€ÎþÜé*1™~X+)wƒq+§(ãS¯+€z@²é+t®R‚ö+uœŽD,‚@îá”,P ²£ì,0„¶ÓÂ. ¿sÐÛ.SšØ/ä 3 $/]7슆/òˆQüÚÉ/,ðnš0 8h1mÑ{ç1L‡Âð@I1 „á0â1›ãœÑè1q3aC}2tƒÔƒ2’‚ãw?2’‚åy‚2Hg9¬ö2Ì‚c‰xë3xèRÜ4×¾)„ƒ4^é³ð4`ëi5[ì”5l„ì¿5tíŽI„5l„¨‘¶p6€Ǭ|6‡ úß~6Þ#ý ŽFIAD‹{I,ïKé†1Q´tK§‚õ³DfLÀ†C—l°L™†¡£ÊLs  cM—EuLœM¸%Û·M:YN”„àžvšN"Mr“žN$ë\¼N8küêëN€DŠäÀOa„Ë%ÑP)…1ÎdQG‡¼B‘Sô…͹_ØS‰{UBùT3‚3Z‰DU„ý¥‘U˜‚J?rW8TlˆWM¼îkX[†IØ™XsâÍ\Y¥‚úÈÁYð §ûrZA€N*ðz\z.—\§‚Ÿ'0]A¢-Ï]Z£Áž._>†Åf9_V¨³qÑ_÷ ª¨ >` ‰­Î–c`ä‹óñi`A¯òi`Ï°Iòi`˜ ±/ëahä+Žaœ)Æa?¢bk~†ÀÍb¨2f;1c †n8ádÛGÿ®Ze]^»ge΄ åŒÅeŠ]éf2ˆTsBmf¢ƒýõˆ¨f7¼N„hAˆk— i¼¿ai6ØK¹wi4…IîmXjù ‡«¬l€ ÀsmÁÚ{tm¶9!§˜m¸† -OÁmå€MzÃm¿¸@ÒmÓ5½ômãa½)×nÑÁGb-oC>|`oL…ÑŠoŠ(µô˜o|hú­NpÜjbÉ×p_OËr[‚ûƒ$sh€ß~Mê–Ìv§ˆáGŒwl&“y/æ†zy2fWÃyŽF@‚zè‚·ºzt‚·ºz¯ÓßÒzþƒM k{) ä…v{âƒ#û²~Nȯø~S‡†ë_èz"Ã>J4a†6Ȧÿÿ4a†6*‘ôR7Ç!%Y7fkHf˜7½ƒ ³@8+ Ž}9•€8ï9€RAA9¢Uü9 v·»9§ˆvŽ9‰yÚV9­Š’n%9ꀸMy'9P…ÇB-9“‚3Ãè9„™ü ;Uˆ·è;˜Äaç<LJ$ /=ÙÌ“Ò=‰‚NØd>Í ¥Ý›>ˆÀC°×>&­üqó>_ ³K7(?±…n¤´u?YqÒÍ@‡Î“[ A>‰“I ¯Aê‚1²íCOe0>D·„¶(D0€ Ež‚.5ÖfEc½‡;…EI[_¶VFý‚CHê\FÐ=ñâ€F¢ý ŽFIAD‹{I,G°ÞJsÐïKé†1œ½AKMˆ¯Q´tK§‚õ¹Ä LÂ…„³DfLÀ†C—l°L™†¡£ÊLs  cM—EuLœM¸%Û·M:YN”„àžvšN"Mr“žN$ë\¼N8küêëN€D\º˜O؃€ª®§OZ ŠäÀOa„Ë3$ËO£ƒ§%ÑP)…1ÎdQG‡mÓR[|¼B‘Sô…͹_ØS‰{°çTë”UBùT3‚3Z‰DU„ý¥‘U˜‚J…a”U*Î?rW8TlˆWM¼îkX[†IØ™XsâÍ\Y¥‚úsJY_¶¹êZYy‰ÈÁYð §ûrZA€N½V)\h†¡*ðz\z.—\§‚Ÿ'0]A¢-Ï]Z£µGi^~‡ºÁž._>†Åf9_V¨³qÑ_÷ ª¨ >` ‰­Î–c`ä‹óñi`A¯òi`Ï°Iòi`˜ ±›Æú`›ŽÛa5„¦/ëahä+Žaœ)Æa?8½bTƒq¢bk~†ÀÍb¨2f;1c †n8ádÛGÿ®Ze]^»ge΄ åŒÅeŠ]éf2ˆTsBmf¢ƒýõˆ¨f7¼7—ìgÔ‚’`ZhƒÌN„hAˆkñÏÊhœ’m£óh — i¼¿ai6ØK¹wi4…IîmXjù Ül$‰p‡«¬l€ ÀsmÁÚ{tm¶9!§˜m¸† -OÁmå€MzÃm¿¸@ÒmÓ5½ômãa½)×nÑÁGb-oC>|`oL…ÑŠoŠ(µô˜o|hú­NpÜjbÉ×p_OËr[‚ûƒ$sh€ßà¶ìs%‚Í~M1Á·vÍЫÈv½®ê–Ìv§ˆáGŒwl&“y/æ†zy2fWÃyŽ“âyzt F@‚zè‚ìè’zÉy·ºzt‚·ºz¯ÓßÒzþƒMå!X{c¿ k{) äɃu{¨…v{âƒÜöó{¨§ ï‹}«Í¾˜Ö}‡°#û²~Nȯø~S‡"C:%„››©é€À†ë_€z"ÃV†ÏL CÃõ…©OjnÄO„´¨^Åá„%5øÅê ÇT‡QïEÇKÎpüšÇºÿ3È_œ8Ƀ&a‡kÉ ÆXíÊÐ)hË؆2àuË™ØÌï†.06ÎzÅ`¤qÎK‡úD×ÎßÑŒç΀ñ†ÏÔ†/l>‡Ï¯µxÁ—ÏZ€ÀÏo˜³^ÖÐÊÏ[ ÑÄ©ÿÓ>ÑÖÔ>Ѽ…¸>ÓPˆ]` AÓ!†IR~Ó iFCïÓØ‚7¼ýÓD ô4Ô˜'ü”ŒÔW„éƒÀÖ‚¶aÞØéƒÄ›Ø1Ùù„ÐPWÙ5 u!ö‡Ù„8?\ÇÙ!KWúÙa„ŽvWúÙG¡WúÙL†õ+cÛøI5ëlÜùƒù_\Ý¥ˆ»]Ý{Šh `Ý€0#qÝC:"ÍÝ¿ÓkNÞØÔŒÝ߬‡Û§íߦ‚˜Bøà„[[EàQS\EàMTîeà„Ž÷3․ÌrŠârƒFcÌìâPšb õâ~„šø@ãÿq|ŤãZ‚†`‡Ðã2ëq'å†1ÌÒ徆ë„Ü历jY#æƒî}9;æn=¡'çS©ðîŸç‹‚ Ž2Üç$V"ü‘èxÌ™èórX.éúU×Sé[áØtWéh„â— \鉄íãø_éDæ¾bé>‡æYdbédçod鈅çøié¿ê‰X˜é+„¿}ˆê€p?†ê²€³,êZw`Ëꌈ'˜úëš`}žbëì?ñdëo†Ù„ì=‡ 0MÓìZ‡ ‰Ë í€ßí<¶’o>îPôy­îÝ€_C}Îî\$-áOï ´Ž¤Ùï •œŒðOþ‚dñÛV»‹ñu„ ¤ÓÍñØ…‹n=TòÝt!gôË •£&ôö¹DRôø†{œN£ô–³3xõî9€õâ‹P!öV~˜uPö,‚ñæxpöÍ#º…öÎÍjhšö¯Â×ïþö ‰ìEJ÷A‚TL´²÷L4®ö¿÷¹ŠÆ»‡Cøs‰TÄLøû:16aø\±*:ùÑ…48f’ù"‰ë8•ù–Žä úœ„XásÆú…Ež`û_½ ‚ût%¦Š3ýÓÏmz@ý€–¦@ý(„–‚]Sý½‰›} Áýê‚lʉ þ“ØÐBþh‚ h$ÿ¦1£ÌГ°# ›nY+LWÜ\+ ±_/×–«?¢?lp0žü~ÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿ,ÿ^ÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿ%ÿÿÿ%ÿÿÿÿÿ,ÿÿÿÿÿÿÿÿ%ÿÿÿÿÿ,ÿÿÿÿÿÿÿÿ%ÿÿÿÿÿ,ÿÿÿÿÿÿÿÿ%ÿÿÿÿÿ,ÿÿÿÿÿÿÿÿ%ÿÿÿÿÿ,ÿÿÿÿÿÿÿÿ%ÿÿÿÿÿ,ÿÿ6ÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿÿÿ9ÿÿÿÿ%ÿÿÿÿÿ,ÿÿ3ÿÿÿ ÿÿÿ ÿ ÿÿ ÿÿÿÿÿÿ9ÿÿÿÿ%ÿÿÿÿÿ,ÿÿ3ÿÿÿ ÿ ÿÿ ÿ ÿÿÿÿÿ ÿÿ9ÿÿÿÿ%ÿÿÿÿÿ,ÿÿEÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ9ÿÿÿÿ%ÿÿÿÿÿ,ÿÿ?ÿ ÿÿÿ ÿ ÿÿÿÿÿÿ9ÿÿÿÿ%ÿÿÿÿÿ,ÿÿ6ÿ ÿ ÿ ÿÿ ÿ ÿÿ ÿÿ ÿ ÿÿ6ÿÿÿÿ%ÿÿÿÿÿ,ÿÿ3ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿ3ÿÿÿÿ%ÿÿÿÿÿ,ÿÿ3ÿÿÿÿ?ÿÿWÿÿÿÿ%ÿÿÿÿÿ,ÿÿ3ÿÿÿÿ?ÿÿWÿÿÿÿ%ÿÿÿÿÿ,ÿÿ6ÿlÿZÿÿÿÿ%ÿÿÿÿÿ,ÿÿÿÿÿÿÿÿ%ÿÿÿÿÿ,ÿÿÿÿÿÿÿÿ%ÿÿÿÿÿ,ÿÿÿÿÿÿÿÿ%ÿÿÿÿÿ,ÿÿ%ÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿÿXÿÿÿ%ÿÿÿÿÿ,ÿÿ%ÿÿÿ%ÿÿÿÿÿ,ÿÿÿÿÿÿÿÿ%ÿÿÿÿÿ,ÿÿÿÿÿÿÿÿ%ÿÿÿÿÿ,ÿÿÿÿÿZÿÿÿÿÿ,ÿÿÿÿÿÿÿGÿZÿÿÿÿÿ,ÿÿoÿÿ ÿ ÿ ÿlÿÿÿGÿZÿÿÿÿÿ,ÿÿ*ÿBÿÿÿ ÿ ÿ ÿlÿÿÿGÿZÿÿÿÿÿ,ÿÿ*ÿ<ÿÿ ÿÿÿÿÿÿiÿÿÿGÿZÿÿÿÿÿ,ÿÿ*ÿ 6ÿÿ ÿÿÿÿÿÿiÿÿÿGÿZÿÿkÿ0ÿ ÿ ÿÿ ÿÿÿÿÿNÿrÿÿZÿÿkÿÿÿ=ÿÿ*ÿ 3ÿ ÿ ÿÿ ÿÿ ÿ ÿfÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿ*ÿ 3ÿÿÿ ÿ ÿ ÿ ÿfÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿ*ÿ9ÿÿÿ#ÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿcÿÿÿ ÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿcÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿ%ÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿ%ÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿTÿÿ ÿ ÿ ÿ ÿÿÿTÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿTÿÿ ÿÿ ÿÿ ÿ ÿÿÿÿTÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿTÿÿ ÿÿ ÿÿ ÿ ÿÿ ÿÿTÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿTÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿTÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿTÿÿ ÿÿ ÿÿ ÿ ÿÿÿTÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿTÿÿ ÿÿ ÿÿ ÿÿÿ ÿÿQÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿTÿÿ ÿ ÿ ÿÿ ÿ ÿÿNÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿTÿ9ÿ ÿ~ÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿTÿ9ÿ ÿ~ÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿKÿ0ÿ ÿ~ÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿÿÿÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿ%ÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿÿÿXÿ6ÿÿÿZÿÿkÿÿÿ=ÿ^6ÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿkÿÿÿ1ÿ ÿ ÿ ÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ6ÿÿÿZÿÿkÿÿÿ1ÿ ÿ ÿÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿ ÿÿ ÿÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ6ÿÿÿZÿÿkÿÿÿ1ÿÿÿÿÿ ÿÿÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿÿ!ÿÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿÿÿ3ÿÿÿZÿÿkÿÿÿ1ÿÿÿÿ ÿ ÿÿ ÿÿÿ ÿ ÿ ÿ ÿÿÿÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿÿÿ3ÿÿÿZÿÿkÿÿÿ1ÿÿÿÿÿÿÿ ÿÿÿÿ ÿ ÿ ÿÿ ÿÿÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿÿÿ3ÿÿÿZÿÿkÿÿÿ1ÿÿ ÿÿÿ ÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿ ÿ ÿÿ ÿ ÿ0ÿÿÿZÿÿkÿÿÿ1ÿÿ ÿÿ ÿ ÿÿÿÿÿÿÿ ÿÿÿ ÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ0ÿÿÿZÿÿkÿÿÿ1ÿÿEÿ~ÿ ÿÿ ÿ3ÿfÿÿÿZÿÿkÿÿÿ1ÿÿEÿ{ÿ ÿÿ ÿ0ÿfÿÿÿZÿÿkÿÿÿ1ÿÿÿ'ÿlÿÿÿÿ*ÿfÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿbÿÿÿÿÿÿIÿÿÿZÿÿeÿÿÿÿÿÿLÿÿÿZÿÿeÿÿÿÿÿÿLÿÿÿZÿÿhÿ ÿÿÿÿÿOÿÿÿZÿÿhÿ ÿÿÿÿÿOÿÿÿZÿÿkÿÿÿÿÿÿRÿÿÿZÿÿÿÿÿÿÿÿAÿÿÿZÿxÿhÿÿÿÿ_ÿÿÿZÿxÿÿbÿÿÿÿÿ_ÿÿÿZÿxÿÿbÿÿÿÿÿ_ÿÿÿZÿxÿÿbÿÿÿÿÿ_ÿÿÿZÿxÿÿbÿÿÿÿÿ_ÿÿÿZÿxÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿ_ÿÿÿZÿxÿÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿÿÿÿÿÿÿ_ÿÿÿZÿxÿÿÿÿ ÿÿÿ ÿ ÿ ÿ ÿÿÿ ÿÿÿ@ÿÿ"ÿÿÿZÿxÿÿÿÿ ÿÿÿ ÿ ÿ ÿ ÿÿÿ ÿÿÿÿÿ=ÿÿÿÿÿÿZÿxÿÿÿÿ ÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿÿÿÿÿ=ÿÿÿÿÿÿZÿxÿÿÿÿ ÿÿ ÿÿ ÿ ÿÿÿÿ ÿÿÿÿÿÿÿ=ÿÿÿÿÿÿZÿxÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿÿÿ ÿÿÿ=ÿÿÿÿÿÿZÿxÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿZÿxÿÿ ÿÿÿÿÿÿ=ÿÿÿÿÿÿZÿxÿÿÿ;ÿÿÿ=ÿÿÿÿÿÿZÿxÿÿbÿÿÿ=ÿÿÿÿÿÿZÿxÿÿbÿÿÿ=ÿÿÿÿÿÿZÿxÿÿbÿÿÿ=ÿÿÿÿÿÿZÿxÿÿbÿÿÿ=ÿÿÿÿÿÿZÿxÿhÿÿ=ÿÿÿÿÿÿZÿÿhÿ ÿÿÿ-ÿÿÿÿÿÿZÿÿeÿ ÿÿÿ-ÿÿÿÿÿÿZÿÿeÿÿÿÿ*ÿÿÿÿÿÿZÿÿbÿÿÿÿ'ÿÿÿÿÿÿZÿÿkÿÿÿÿ0ÿÿÿÿÿÿZÿÿkÿÿÿÿ0ÿÿÿÿÿÿZÿÿkÿÿÿÿ0ÿÿÿÿÿÿZÿÿkÿÿÿÿ0ÿÿÿÿÿÿZÿÿkÿÿÿÿ0ÿÿÿÿÿÿZÿÿkÿÿÿÿ0ÿÿÿÿÿÿZÿÿkÿÿÿÿ0ÿÿÿÿÿÿZÿÿkÿÿÿÿ'ÿÿÿ ÿÿÿZÿÿkÿÿÿÿ*ÿÿÿÿÿÿZÿÿkÿÿÿÿ*ÿÿÿÿÿÿZÿÿkÿÿÿÿ-ÿ ÿÿÿ ÿ ÿZÿÿkÿÿÿÿ-ÿ ÿÿÿ ÿ ÿZÿÿkÿÿÿXÿoÿZÿÿkÿÿÿXÿÿÿÿÿoÿZÿÿkÿÿÿXÿÿÿÿÿoÿZÿÿkÿÿÿXÿÿÿÿÿoÿZÿÿkÿÿÿXÿÿÿÿÿoÿZÿÿkÿÿÿXÿÿÿÿÿoÿZÿÿkÿÿÿXÿÿÿÿÿoÿZÿÿbÿÿÿOÿÿÿÿÿoÿZÿÿeÿÿÿRÿÿÿÿÿoÿZÿÿeÿÿÿRÿÿÿÿÿoÿZÿÿhÿ ÿÿUÿÿÿÿÿoÿZÿÿhÿ ÿÿUÿÿÿÿÿoÿZÿ!ÿÿÿÿÿ7ÿWÿoÿZÿ!ÿÿÿÿÿÿÿÿÿ=ÿTÿoÿZÿ!ÿÿÿ+ÿcÿÿÿÿÿ=ÿTÿoÿZÿ!ÿÿÿ+ÿcÿÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿoÿZÿ!ÿÿÿ+ÿcÿÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿÿ ÿ ÿ ÿoÿZÿ!ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿ ÿÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿÿ ÿÿ ÿÿ ÿ ÿ ÿÿÿÿ ÿ ÿÿÿÿÿ ÿoÿZÿ!ÿÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿ ÿ ÿ ÿÿÿÿÿÿ ÿ ÿÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿÿ ÿ ÿÿÿÿ ÿ ÿoÿZÿ!ÿÿÿÿ ÿÿÿ ÿ ÿ ÿ ÿÿÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿ ÿÿ ÿ$ÿÿÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿÿ ÿ ÿÿ ÿÿÿ ÿÿoÿZÿ!ÿÿÿÿ ÿÿÿ ÿ ÿ ÿ ÿÿÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿÿÿÿ ÿÿ ÿ ÿÿ ÿÿÿ ÿÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿÿÿ ÿÿ ÿÿ ÿÿ ÿ ÿ ÿoÿZÿ!ÿÿÿÿ ÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿ ÿ ÿ ÿ ÿÿÿÿ ÿ ÿÿÿÿÿÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿoÿZÿ!ÿÿÿÿ ÿÿ ÿÿ ÿ ÿÿÿÿ ÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿ ÿ ÿÿÿÿÿÿKÿ`ÿ9ÿÿÿHÿ!ÿoÿZÿ!ÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿÿÿ ÿÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿNÿ`ÿ<ÿ ÿ ÿHÿ!ÿoÿZÿ!ÿÿÿÿÿÿ]ÿÿ0ÿÿÿ ÿ Qÿÿ#ÿ ÿÿTÿoÿZÿ!ÿÿ ÿÿÿÿ]ÿÿ0ÿÿÿÿÿÿÿoÿZÿ!ÿÿÿ2ÿTÿNÿÿÿÿÿÿÿoÿZÿ!ÿÿÿÿÿÿÿÿÿÿÿoÿZÿ!ÿÿÿÿÿÿÿÿÿÿÿoÿZÿ!ÿÿÿÿÿÿÿoÿZÿ!ÿÿÿÿÿÿÿÿÿÿÿZÿ!ÿÿeÿÿÿÿ0ÿZÿÿhÿ ÿÿÿ*ÿ ÿÿÿ-ÿZÿÿeÿ ÿÿÿ'ÿ ÿÿÿ-ÿZÿÿeÿÿÿÿ$ÿÿÿÿ*ÿZÿÿbÿÿÿÿÿÿÿÿ'ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿkÿÿÿÿ0ÿÿÿÿ0ÿZÿÿbÿÿÿÿ'ÿÿÿÿ0ÿZÿÿeÿÿÿÿ*ÿÿÿÿ0ÿZÿÿeÿÿÿÿ*ÿÿÿÿ0ÿZÿÿhÿ ÿÿÿ-ÿÿÿÿ0ÿZÿÿhÿ ÿÿÿ-ÿÿÿÿ0ÿZÿ0ÿyÿtÿÿÿÿ0ÿZÿ0ÿÿÿsÿÿtÿÿÿÿ0ÿZÿ0ÿ3ÿÿÿMÿTÿÿtÿÿÿÿ0ÿZÿ0ÿ3ÿÿÿSÿQÿÿtÿÿÿÿ0ÿZÿ0ÿ3ÿÿÿSÿQÿÿtÿÿÿÿ0ÿZÿ0ÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿÿÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿtÿÿÿÿ0ÿZÿ0ÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿ ÿÿÿ ÿÿ ÿÿÿÿtÿÿÿÿ0ÿZÿ0ÿÿÿÿ ÿÿ ÿÿÿÿÿ ÿÿ ÿ ÿ ÿÿ ÿÿÿ ÿ ÿÿÿÿÿÿÿtÿÿÿÿ0ÿZÿ0ÿÿÿ ÿÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿÿ ÿ ÿÿÿÿÿÿÿtÿÿÿÿ0ÿZÿ0ÿÿ ÿ ÿ ÿÿ ÿÿÿÿÿÿ ÿ ÿ ÿÿ ÿÿÿ ÿ ÿÿÿ ÿÿÿÿÿtÿÿÿÿ0ÿZÿ0ÿÿ ÿ ÿÿÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿÿÿÿÿ ÿÿÿÿ ÿÿ ÿÿÿÿtÿÿÿÿ0ÿZÿ0ÿÿÿ ÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿtÿÿÿÿ0ÿZÿ0ÿÿÿ6ÿ9ÿKÿÿ ÿEÿÿÿtÿÿÿÿ'ÿQÿ0ÿÿÿ6ÿ9ÿNÿ ÿ ÿEÿÿÿtÿÿÿÿ*ÿTÿ0ÿ!ÿ9ÿÿ<ÿEÿ ÿÿQÿÿtÿÿÿÿ*ÿTÿ0ÿÿÿsÿÿtÿÿÿÿ-ÿ Wÿ0ÿÿÿsÿÿtÿÿÿÿ-ÿ Wÿ0ÿÿÿsÿÿtÿÿÿÿ0ÿZÿ0ÿÿÿsÿÿtÿÿÿÿÿÿ0ÿyÿtÿ6ÿ<ÿÿÿÿÿÿÿ6ÿÿÿÿÿ<ÿÿÿÿÿÿÿ6ÿÿÿÿÿ<ÿÿÿÿÿÿÿ6ÿÿÿÿÿ<ÿÿÿÿÿÿÿ6ÿÿÿÿÿ<ÿÿÿÿÿÿÿ6ÿÿÿÿÿ<ÿÿÿÿÿÿÿ6ÿÿ2ÿÿ\ÿ<ÿÿÿÿÿÿÿ6ÿÿ8ÿÿYÿ<ÿÿÿÿÿÿÿ6ÿÿ8ÿÿYÿ<ÿÿÿÿÿÿÿ6ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ<ÿÿÿÿÿÿÿ6ÿÿÿ ÿ ÿ ÿÿÿ ÿÿ ÿÿ ÿ ÿÿÿ<ÿÿÿÿÿÿÿ6ÿÿÿÿÿ ÿÿÿÿÿÿÿÿ<ÿÿÿÿÿÿÿ6ÿÿÿÿÿ ÿÿÿÿÿ ÿ ÿÿ<ÿÿÿÿÿÿÿ6ÿÿÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ<ÿÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿÿÿ<ÿÿÿÿÿÿÿ6ÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ<ÿÿÿÿÿÿÿ6ÿÿÿÿÿEÿÿ&ÿ<ÿÿÿÿÿÿÿ6ÿÿÿ ÿ ÿEÿÿ&ÿ<ÿÿÿÿÿÿÿ6ÿÿ ÿ ÿÿÿYÿ<ÿÿÿÿÿÿÿ<ÿÿÿÿ<ÿÿÿÿÿÿXÿÿÿÿÿ<ÿÿÿÿÿÿXÿÿÿÿÿ<ÿÿÿÿÿÿXÿÿzÿÿÿ<ÿÿÿÿÿÿXÿÿzÿÿÿ<ÿÿÿÿÿÿXÿÿzÿÿÿ<ÿÿÿÿÿÿXÿ$ÿ ÿ ÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ'ÿ<ÿÿÿÿÿÿXÿ!ÿÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿ ÿ ÿ ÿÿ ÿÿ ÿÿ*ÿ<ÿÿÿÿÿÿXÿ!ÿÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿ ÿÿÿ ÿÿ*ÿ<ÿÿÿÿÿÿXÿ3ÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿ ÿÿÿ ÿÿ*ÿ<ÿÿÿÿÿÿXÿ-ÿ ÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿ ÿÿ ÿÿ ÿÿ*ÿ<ÿÿÿÿÿÿXÿ$ÿ ÿ ÿÿ ÿÿ ÿÿÿÿÿÿ ÿ ÿÿÿÿÿÿ ÿ ÿÿÿ ÿÿÿÿ*ÿ<ÿÿÿÿÿÿXÿ!ÿÿ ÿ ÿÿ ÿÿÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿÿÿ 'ÿ<ÿÿÿÿÿÿXÿ!ÿÿÿ ÿÿ ÿ3ÿÿÿ,ÿ*ÿ<ÿÿÿÿÿÿXÿ!ÿÿÿ ÿÿ ÿ3ÿ ÿÿ/ÿ*ÿ<ÿÿÿÿÿÿXÿ$ÿÿÿÿÿ0ÿ ÿ_ÿ<ÿÿÿÿÿÿXÿÿÿÿÿ<ÿÿÿÿÿÿXÿÿÿÿÿ<ÿÿÿÿÿÿXÿÿÿÿÿ<ÿÿÿÿÿÿXÿ<ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿ0ÿÃoºolp0 \,ßÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚-ÿ'ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿÿÿÿÿsÿ‚-ÿÿÿÿÿÿÿÿÿÿÿÿmÿ‚-ÿÿÿÿÿÿÿÿÿÿÿÿmÿ‚-ÿÿÿÿÿÿÿÿÿÿÿÿmÿ‚-ÿÿÿÿÿÿÿÿÿÿÿÿjÿ‚-ÿÿÿÿÿÿÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿzÿÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿzÿÿÿÿÿÿÿjÿ‚-ÿÿÿÿfÿ<ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ<ÿÿÿÿÿÿÿjÿ‚-ÿÿÿÿfÿ<ÿÿ ÿÿ ÿÿ ÿÿ ÿ ÿ ÿ<ÿÿÿÿÿÿÿjÿ‚-ÿÿÿÿfÿ9ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿ9ÿÿÿÿÿÿÿjÿ‚-ÿÿÿÿfÿ9ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿ9ÿÿÿÿÿÿÿjÿ‚-ÿÿÿÿfÿ9ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿ9ÿÿÿÿÿÿÿjÿ‚-ÿÿÿÿfÿ6ÿ ÿÿ ÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿ6ÿÿÿÿÿÿÿjÿ‚-ÿÿ ÿ ÿÿ ÿÿÿÿÿ6ÿ ÿÿ ÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ6ÿÿÿÿÿÿÿjÿ‚-ÿÿ ÿ ÿÿÿ ÿNÿC3ÿÿÿ0ÿlÿÿÿÿÿÿÿjÿ‚-ÿÿÿÿÿÿÿÿNÿÿÿ=ÿ3ÿÿÿ0ÿlÿÿÿÿÿÿÿjÿ‚-ÿÿÿÿÿÿÿÿNÿÿÿ=ÿ3ÿÿÿÿ*ÿlÿÿÿÿÿÿÿjÿ‚-ÿÿÿ ÿÿÿÿÿNÿÿÿ=ÿÿzÿÿÿÿÿÿÿÿ‚-ÿÿÿ ÿÿÿÿÿNÿÿÿ=ÿÿzÿÿÿÿÿÿÿÿ‚-ÿÿÿÿÿÿNÿÿÿ=ÿÿzÿÿÿÿÿÿÿÿ‚-ÿÿÿÿÿÿNÿÿÿ=ÿÿzÿÿÿÿÿÿÿÿ‚-ÿÿÿÿÿ ÿNÿÿÿ=ÿÿzÿÿÿÿÿÿÿÿ‚-ÿÿÿÿ ÿNÿÿÿ=ÿÿzÿÿÿÿÿÿÿÿ‚-ÿÿ&ÿÿÿ=ÿÿ ÿ ÿ ÿÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿjÿ‚-ÿÿ&ÿÿÿ"ÿÿ ÿ ÿ ÿÿ ÿÿÿÿ ÿ ÿÿ ÿ ÿÿ ÿÿÿÿÿÿÿÿjÿ‚ÿVÿÿÿ"ÿÿÿÿÿÿÿÿÿ ÿ ÿÿ ÿ ÿÿ'ÿÿÿÿÿÿÿjÿ‚ÿVÿÿÿ"ÿÿÿÿ ÿ ÿÿÿÿ ÿ ÿÿ ÿ ÿÿÿÿÿÿÿÿÿjÿ‚ÿVÿÿÿ"ÿÿÿÿÿÿ ÿÿÿÿ ÿÿ ÿ ÿÿ ÿÿÿÿÿÿÿÿjÿ‚ÿVÿÿÿ"ÿÿÿÿÿ ÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿjÿ‚ÿVÿÿÿ"ÿÿÿÿ ÿ ÿ ÿÿ ÿÿÿÿ ÿÿÿ ÿ ÿÿÿÿÿÿÿjÿ‚ÿVÿÿÿ"ÿÿÿÿHÿÿÿÿÿÿÿÿÿjÿ‚-ÿÿ&ÿÿÿ"ÿÿÿÿHÿÿÿÿÿÿÿÿÿjÿ‚-ÿÿ&ÿÿÿ"ÿÿÿÿHÿrÿÿÿÿÿÿÿjÿ‚-ÿÿ&ÿÿÿ"ÿÿÿzÿÿÿÿÿÿÿjÿ‚-ÿÿ&ÿÿÿ"ÿÿÿzÿÿÿÿÿÿÿjÿ‚-ÿÿ&ÿÿÿ"ÿÿÿzÿÿÿÿÿÿÿjÿ‚-ÿÿ&ÿÿÿ"ÿÿÿzÿÿÿÿÿÿÿjÿ‚-ÿÿ&ÿÿÿ"ÿÿÿÿÿÿÿÿjÿ‚-ÿÿ&ÿÿÿ"ÿÿÿ1ÿÿÿÿÿÿjÿ‚-ÿÿ&ÿÿÿ"ÿÿÿ1ÿÿÿÿÿÿjÿ‚-ÿÿ&ÿÿÿ"ÿÿÿ1ÿÿÿÿÿÿjÿ‚-ÿÿ&ÿÿÿ"ÿÿÿÿÿÿÿÿÿÿ‚-ÿÿ&ÿÿÿ"ÿÿÿÿÿÿÿÿÿÿ‚-ÿÿ&ÿÿÿ"ÿÿÿÿÿÿÿÿÿÿ‚-ÿÿ&ÿÿÿ"ÿÿÿÿÿÿÿÿÿÿ‚-ÿÿ&ÿÿÿ"ÿÿÿÿÿÿÿÿÿÿ‚-ÿÿÿÿ%ÿÿÿÿÿÿÿ‚-ÿÿÿÿzÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚-ÿÿÿÿzÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿAÿÿzÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿAÿÿzÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿAÿÿzÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿAÿÿzÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿAÿ ÿ ÿÿ ÿ ÿÿÿ ÿ ÿÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿ'ÿ ÿ ÿ ÿÿÿ ÿ ÿÿ ÿÿÿ ÿ ÿÿÿÿ *ÿ0ÿÿÿÿÿÿjÿ‚ÿ&ÿ ÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿ$ÿ ÿÿ ÿ ÿÿÿÿÿ ÿÿÿ ÿÿÿÿ ÿÿÿÿÿ ÿ'ÿ0ÿÿÿÿÿÿjÿ‚-ÿuÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿ ÿ ÿÿ ÿ ÿÿ$ÿÿ ÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿ ÿÿÿÿÿ3ÿ0ÿÿÿÿÿÿjÿ‚-ÿuÿÿ ÿÿÿÿÿÿ ÿÿÿÿ ÿ ÿÿÿÿÿÿÿÿ ÿ ÿÿ ÿ ÿÿ$ÿÿ ÿÿÿÿÿÿÿ ÿ ÿÿ ÿÿÿ ÿ ÿÿÿÿ'ÿ0ÿÿÿÿÿÿjÿ‚-ÿuÿÿ ÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿ ÿ ÿÿ$ÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿ'ÿ0ÿÿÿÿÿÿjÿ‚-ÿuÿÿ ÿÿ ÿ ÿ ÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿÿ$ÿÿÿ ÿÿÿ ÿ ÿ ÿÿÿÿÿÿ ÿ ÿ ÿ *ÿ0ÿÿÿÿÿÿjÿ‚-ÿuÿÿ ÿÿ ÿÿ ÿWÿ ÿ ÿ$ÿ ÿÿ$ÿÿÿÿ ÿ0ÿxÿ0ÿÿÿÿÿÿjÿ‚-ÿuÿÿ ÿ ÿÿÿÿ ÿTÿÿ!ÿ ÿÿ$ÿ ÿÿÿÿÿ0ÿxÿ0ÿÿÿÿÿÿjÿ‚-ÿuÿÿ ÿ ÿÿÿÿÿHÿÿ!ÿ ÿÿ'ÿ ÿÿÿÿÿÿlÿ0ÿÿÿÿÿÿjÿ‚-ÿuÿÿÿzÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚-ÿuÿÿÿzÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚-ÿuÿÿÿzÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚-ÿuÿÿÿ%ÿÿÿÿÿÿÿ‚-ÿuÿÿÿÿÿÿÿÿÿÿÿtÿ‚-ÿuÿÿÿÿÿÿÿÿÿÿÿtÿ‚-ÿuÿÿÿÿÿÿÿÿÿÿÿtÿ‚-ÿuÿÿÿÿÿÿÿÿÿÿÿtÿ‚-ÿuÿÿÿÿÿÿÿÿÿÿÿtÿ‚-ÿlÿ%ÿÿmÿÿÿÿÿÿjÿ‚-ÿlÿÿÿÿÿÿmÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿÿmÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿÿmÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿÿmÿÿÿÿÿÿjÿ‚ÿÿ$ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ!ÿÿÿmÿÿÿÿÿÿjÿ‚ÿÿ!ÿ ÿÿÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿÿ ÿ!ÿÿÿmÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿ ÿ ÿÿ ÿ ÿÿÿÿ ÿÿ ÿ ÿÿ ÿ!ÿÿÿmÿÿÿÿÿÿjÿ‚-ÿlÿÿÿÿ ÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿ ÿÿ ÿ!ÿÿÿmÿÿÿÿÿÿjÿ‚-ÿlÿÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿÿ ÿÿ ÿ ÿÿ ÿ!ÿÿÿmÿÿÿÿÿÿjÿ‚-ÿNÿ!ÿÿÿÿ ÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿÿ ÿ!ÿÿÿmÿÿÿÿÿÿjÿ‚-ÿNÿÿÿÿÿÿÿ ÿÿÿ ÿ ÿ ÿÿ ÿÿÿ ÿ ÿ!ÿÿÿmÿÿÿÿÿÿjÿ‚-ÿNÿÿÿÿÿoÿÿÿ'ÿ!ÿÿÿmÿÿÿÿÿÿjÿ‚-ÿNÿÿ!ÿ ÿÿoÿÿÿ'ÿ!ÿÿÿmÿÿÿÿÿÿjÿ‚-ÿNÿÿ$ÿ ÿ]ÿÿÿ'ÿ!ÿÿÿmÿÿÿÿÿÿjÿ‚-ÿNÿÿÿÿÿÿÿmÿÿÿÿÿÿjÿ‚-ÿNÿÿÿÿÿÿÿmÿÿÿÿÿÿjÿ‚-ÿNÿÿÿÿÿÿÿmÿÿÿÿÿÿjÿ‚-ÿNÿÿÿÿÿÿÿÿÿÿÿÿÿ[ÿ‚-ÿNÿÿ%ÿÿÿÿÿÿÿÿ[ÿ‚-ÿNÿÿÿÿÿÿÿÿÿÿÿÿÿ‚-ÿNÿÿÿÿÿÿÿÿÿÿÿÿÿ‚-ÿNÿÿÿÿÿÿÿÿÿÿÿÿÿ‚-ÿNÿÿÿÿÿÿÿÿÿÿÿÿÿ‚-ÿNÿÿÿÿÿÿ.ÿÿÿÿÿÿjÿ‚-ÿNÿÿÿÿÿÿ.ÿÿÿÿÿÿjÿ‚~ÿÿÿÿÿÿ.ÿÿÿÿÿÿjÿ‚~ÿÿÿÿÿÿ.ÿÿÿÿÿÿjÿ‚~ÿÿÿÿÿÿ.ÿÿÿÿÿÿjÿ‚cÿJÿÿÿÿÿÿÿjÿ‚cÿJÿÿÿÿÿÿÿjÿ‚cÿJÿÿÿÿÿÿÿjÿ‚-ÿ3ÿJÿÿÿÿÿÿÿjÿ‚-ÿ3ÿJÿÿÿÿÿÿÿjÿ‚-ÿ3ÿJÿÿÿÿÿÿÿjÿ‚-ÿ3ÿ ÿÿ ÿ ÿÿ ÿQÿÿÿÿÿÿÿjÿ‚-ÿ3ÿ ÿÿÿ ÿ ÿÿÿÿQÿÿÿÿÿÿÿjÿ‚-ÿ3ÿ ÿÿ ÿ ÿÿÿÿQÿÿÿÿÿÿÿjÿ‚-ÿ3ÿ ÿ ÿ ÿ ÿÿÿÿQÿÿÿÿÿÿÿjÿ‚-ÿ3ÿ ÿÿÿÿÿ ÿÿÿÿQÿÿÿÿÿÿÿjÿ‚-ÿ3ÿ ÿÿ ÿÿÿÿÿÿQÿÿÿÿÿÿÿjÿ‚-ÿ3ÿ ÿÿ ÿÿÿ ÿQÿÿÿÿÿÿÿjÿ‚-ÿ3ÿ ÿ ÿÿ ÿ ÿ'ÿQÿÿÿÿÿÿoÿ‚-ÿ3ÿ ÿÿÿ ÿ ÿ'ÿQÿÿÿÿÿÿoÿ‚-ÿ3ÿ ÿÿ ÿ ÿ'ÿQÿÿÿÿÿÿoÿ‚-ÿ3ÿJÿÿÿÿÿÿoÿ‚-ÿ3ÿJÿÿÿÿÿÿoÿ‚-ÿ3ÿJÿÿÿÿÿÿoÿ‚-ÿ3ÿJÿÿÿÿÿÿÿjÿ‚-ÿÿÿÿÿÿÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚ÿÿÿÿÿÿ0ÿÿÿÿÿÿjÿ‚-ÿÿÿÿÿÿÿÿÿÿÿÿjÿ‚-ÿÿÿÿÿÿÿÿÿÿÿÿjÿ‚-ÿ0ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿÿÿÿÿjÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿvÿ%ÿÿ‚ÿÿÿÿÿÿÿÿvÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿvÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿvÿÿÿÿÿÿ‚'ÿ$ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ'ÿÿÿ-ÿÿÿÿÿÿ‚'ÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿ‚'ÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿ‚'ÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿ‚'ÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿ‚'ÿÿÿÿÿÿÿÿ ÿ%ÿÿÿÿÿ‚'ÿÿÿÿÿÿÿ*ÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿTÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿTÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿTÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿTÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿTÿÿÿÿ9ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ<ÿÿÿ‚ÿÿÿÿÿFÿÿ ÿÿÿÿ6ÿ ÿ ÿ ÿÿ ÿÿÿÿÿ ÿ ÿ ÿ<ÿÿÿ‚'ÿÿÿÿÿÿÿÿ ÿÿÿÿ3ÿÿÿÿÿÿÿ ÿÿÿÿÿÿ9ÿÿÿ‚'ÿÿÿÿÿÿÿÿ ÿÿÿÿ3ÿÿ ÿ ÿÿÿÿ ÿÿÿÿÿÿ9ÿÿÿ‚'ÿ$ÿ ÿ ÿÿÿ7ÿ} ÿÿ ÿÿÿÿ!3ÿÿÿÿ ÿÿÿ ÿ ÿÿ ÿÿÿÿÿ9ÿÿÿ‚'ÿ!ÿÿÿÿ ÿÿÿ7ÿÿwÿ ÿÿ ÿÿÿÿÿ3ÿÿÿ ÿÿ ÿÿÿ ÿ ÿÿ ÿÿ ÿ ÿ6ÿÿÿ‚'ÿ!ÿÿÿÿÿÿÿ7ÿÿwÿ ÿÿ ÿÿÿÿÿ3ÿÿ ÿ ÿ ÿÿ ÿÿÿ ÿ ÿ ÿ ÿ6ÿÿÿ‚'ÿ3ÿÿÿÿÿÿ7ÿÿwÿ ÿÿ ÿÿÿÿÿ3ÿÿHÿÿuÿÿÿ‚'ÿ-ÿ ÿÿÿÿÿ7ÿÿwÿ ÿÿ ÿÿÿÿÿ3ÿÿEÿÿrÿÿÿ‚'ÿ$ÿ ÿÿÿÿÿ7ÿÿwÿ ÿÿ ÿÿÿÿÿ3ÿÿEÿÿÿlÿÿÿ‚'ÿ!ÿÿÿÿÿÿ7ÿÿwÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿ‚'ÿ!ÿÿÿÿÿÿÿ7ÿÿwÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿ‚'ÿ!ÿÿÿÿ ÿÿÿ7ÿ9ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ<ÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿ‚'ÿ$ÿ ÿ ÿÿÿ7ÿ9ÿÿ ÿÿ ÿÿ ÿÿ ÿ ÿ ÿ<ÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿ‚'ÿÿÿÿÿ6ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿ9ÿ ÿÿ ÿÿÿÿÿ%ÿÿ‚'ÿÿÿÿÿ6ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿ9ÿ ÿÿ ÿÿÿÿÿÿÿBÿ‚'ÿÿÿÿÿ6ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿ9ÿ ÿÿ ÿÿÿÿÿÿÿBÿ‚'ÿÿÿÿÿ3ÿ ÿÿ ÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿ6ÿ ÿÿ ÿÿÿÿÿÿÿBÿ‚'ÿÿÿÿÿ3ÿ ÿÿ ÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ6ÿ ÿÿ ÿÿÿÿÿÿÿBÿ‚'ÿÿÿÿÿ0ÿÿÿ0ÿlÿÿÿÿÿÿÿÿÿBÿ‚ÿÿÿ?ÿ0ÿÿÿ0ÿlÿÿÿÿÿÿÿÿÿBÿ‚ÿÿÿ?ÿ0ÿÿÿÿ*ÿlÿÿÿÿÿÿÿÿÿBÿ‚ÿÿÿ?ÿÿwÿÿÿÿÿÿÿÿÿBÿ‚ÿ/ÿÿwÿÿÿÿeÿHÿ‚ÿ/ÿÿÿ ÿÿwÿÿÿÿeÿÿÿÿÿHÿ‚ÿ/ÿÿÿ ÿÿwÿ ÿÿ ÿÿeÿÿÿÿÿHÿ‚'ÿÿÿÿÿ ÿÿwÿ ÿÿ ÿÿeÿÿÿÿÿHÿ‚'ÿÿÿÿÿ ÿÿwÿ ÿÿ ÿÿeÿÿÿÿÿHÿ‚'ÿÿÿÿÿ ÿÿ ÿ ÿ ÿÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿ ÿÿeÿÿ ÿ ÿÿÿÿ ÿÿ ÿÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿÿHÿ‚'ÿÿÿÿÿ ÿÿ ÿ ÿ ÿÿ ÿÿÿÿ ÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿeÿÿ ÿÿ ÿÿ ÿÿÿÿÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿHÿ‚'ÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿ ÿÿ ÿ ÿÿ$ÿ ÿÿ ÿÿeÿÿÿÿ ÿÿ ÿÿÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿHÿ‚'ÿÿÿÿÿ ÿÿÿ ÿ ÿÿÿÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿÿeÿÿÿÿ ÿ ÿÿÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿHÿ‚'ÿÿÿÿnÿ!ÿÿÿÿ ÿÿÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿeÿÿÿÿ ÿ ÿÿÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿÿ ÿÿÿÿÿÿ ÿÿÿHÿ‚'ÿÿÿÿnÿÿÿÿÿ ÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿÿ ÿÿ ÿÿGÿ!ÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿÿ ÿÿÿHÿ‚'ÿÿÿÿnÿÿÿÿ ÿ ÿ ÿÿ ÿÿÿÿ ÿÿÿ ÿ ÿ ÿÿ ÿÿGÿÿÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿ ÿÿÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿÿHÿ‚'ÿÿÿÿnÿÿÿÿHÿÿÿ ÿÿ ÿÿGÿÿÿÿÿÿÿÿ)ÿÿuÿHÿ‚'ÿÿÿÿnÿÿÿÿHÿÿÿ ÿÿ ÿÿGÿÿÿ ÿÿÿÿÿ&ÿÿrÿHÿ‚'ÿÿÿÿnÿÿÿÿHÿoÿ ÿÿ ÿÿGÿÿÿ ÿ!ÿÿTÿ<ÿÿÿlÿHÿ‚'ÿÿÿÿnÿÿÿwÿ ÿÿ ÿÿGÿÿÿÿÿÿHÿ‚'ÿÿÿÿnÿÿÿwÿ ÿÿ ÿÿGÿÿÿÿÿÿHÿ‚'ÿÿÿÿnÿÿÿwÿ ÿÿ ÿÿGÿÿÿÿÿÿHÿ‚'ÿÿÿÿnÿÿÿwÿ ÿÿ ÿÿGÿÿÿÿÿÿHÿ‚'ÿÿÿÿnÿÿ} ÿÿ ÿÿGÿÿHÿ‚'ÿÿÿÿnÿÿÿÿ0ÿÿGÿÿÿÿ{ÿ‚ÿ/ÿÿnÿÿÿÿ0ÿÿGÿÿÿÿ{ÿ‚ÿ/ÿÿnÿÿÿÿ0ÿÿGÿÿÿÿ{ÿ‚ÿ/ÿÿnÿÿÿÿ0ÿÿGÿÿÿÿ{ÿ‚ÿ/ÿÿnÿÿÿÿ0ÿÿGÿÿÿÿ{ÿ‚ÿ/ÿÿnÿÿÿÿ0ÿÿGÿÿÿÿ{ÿ‚ÿ/ÿÿnÿÿÿ"ÿÿ ÿÿGÿÿÿÿ{ÿ‚'ÿÿÿÿnÿÿÿ"ÿÿ ÿÿGÿÿÿÿ{ÿ‚'ÿÿÿÿnÿÿÿ"ÿÿ ÿÿGÿÿÿÿ{ÿ‚'ÿfÿYÿ%ÿlÿ2ÿCÿVÿ‚'ÿfÿÿSÿÿÿÿÿÿlÿÿ,ÿÿÿÿ=ÿÿVÿ‚'ÿfÿÿSÿÿÿÿÿÿlÿÿ,ÿÿÿÿ=ÿÿVÿ‚'ÿfÿÿSÿÿÿÿÿÿlÿÿ,ÿÿÿ/ÿÿ ÿÿVÿ‚'ÿfÿÿSÿÿÿÿÿÿlÿÿ,ÿÿÿ/ÿÿ ÿÿVÿ‚'ÿfÿÿSÿÿÿÿÿÿlÿ$ÿ ÿÿ ÿ ÿ ÿ$ÿÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿVÿ‚'ÿfÿÿSÿÿÿÿÿÿlÿ!ÿ ÿÿÿÿ ÿ ÿ ÿ$ÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿVÿ‚'ÿfÿÿ ÿÿ ÿ ÿÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿ'ÿ ÿ ÿ ÿÿÿ ÿ ÿÿ ÿÿÿ ÿ ÿÿÿÿ *ÿÿlÿÿÿ ÿÿ ÿÿÿÿÿÿ!ÿÿÿÿÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿÿ ÿÿÿÿVÿ‚'ÿfÿÿ ÿÿÿÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿ ÿÿÿ$ÿ ÿÿ ÿ ÿÿÿÿÿ ÿÿÿ ÿÿÿÿ ÿÿÿÿÿ ÿ'ÿÿlÿÿÿÿ ÿÿÿÿÿÿ!ÿÿÿÿÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿÿ ÿÿÿÿVÿ‚'ÿfÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿ ÿ ÿÿ ÿÿÿ$ÿÿ ÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿ ÿÿÿÿÿ3ÿÿlÿÿÿ ÿ ÿÿ ÿÿÿÿÿ!ÿÿÿÿÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿVÿ‚'ÿKÿÿÿÿ ÿ ÿÿÿÿÿÿÿÿ ÿ ÿÿ ÿÿÿ$ÿÿ ÿÿÿÿÿÿÿ ÿ ÿÿ ÿÿÿ ÿ ÿÿÿÿ'ÿÿQÿÿÿ ÿ ÿÿ ÿÿ ÿ ÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿ ÿÿ ÿÿÿÿ ÿÿÿÿÿÿVÿ‚'ÿKÿÿÿÿ ÿÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿ ÿÿÿ$ÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿ'ÿÿQÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿVÿ‚'ÿKÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿÿ$ÿÿÿ ÿÿÿ ÿ ÿ ÿÿÿÿÿÿ ÿ ÿ ÿ *ÿÿQÿÿÿÿÿÿ]ÿÿÿÿÿÿ ÿÿÿ/ÿÿÿVÿ‚'ÿKÿÿÿÿWÿ ÿ ÿ$ÿÿÿ$ÿÿÿÿ ÿ0ÿxÿÿQÿÿ!ÿ ÿÿÿZÿÿÿ ÿÿÿ ÿ ÿÿ2ÿÿÿVÿ‚'ÿKÿÿÿ ÿÿTÿÿ!ÿÿÿ$ÿ ÿÿÿÿÿ0ÿxÿÿQÿÿ$ÿ ÿÿÿTÿÿÿ ÿ!ÿ ÿ ÿPÿÿVÿ‚'ÿKÿÿÿ ÿHÿÿ!ÿÿÿ'ÿ ÿÿÿÿÿÿlÿoÿÿÿ,ÿÿÿÿ=ÿÿVÿ‚uÿÿÿSÿÿÿÿÿoÿÿÿ,ÿÿÿÿ=ÿÿVÿ‚uÿÿÿSÿÿÿÿÿoÿÿÿ,ÿÿÿÿ=ÿÿVÿ‚uÿÿÿSÿÿÿÿÿoÿÿÿ,ÿÿÿÿ=ÿÿVÿ‚uÿÿYÿ%oÿÿ2ÿCÿVÿ‚uÿÿÿÿÿÿ"ÿÿÿÿÿÿÿ‚uÿÿÿÿÿMÿQÿÿÿÿÿÿÿ‚'ÿKÿÿÿÿÿMÿQÿÿÿÿÿÿÿ‚'ÿKÿÿÿÿÿMÿQÿÿÿÿÿÿÿ‚'ÿKÿÿÿÿÿMÿQÿÿÿÿÿÿÿ‚'ÿKÿÿÿÿÿMÿQÿÿÿÿÿÿÿ‚'ÿKÿÿÿÿÿMÿQÿÿÿÿÿÿÿ‚'ÿKÿÿÿÿÿMÿQÿÿÿÿÿÿÿ‚'ÿKÿÿÿÿÿMÿQÿÿÿÿÿÿÿ‚'ÿ6ÿ*ÿ‚'ÿ6ÿ*ÿ‚'ÿ6ÿ*ÿ‚'ÿ6ÿ*ÿ‚'ÿ6ÿ*ÿ‚'ÿ6ÿÿÿÿ ÿ ÿÿ ÿ*ÿ‚'ÿ6ÿ ÿÿ ÿ ÿ ÿÿÿÿ*ÿ‚'ÿ6ÿ ÿ ÿ ÿ ÿ ÿÿÿÿ*ÿ‚'ÿ6ÿ ÿ ÿ ÿ ÿÿÿÿ*ÿ‚'ÿ6ÿ ÿÿÿÿÿ ÿÿÿÿ*ÿ‚'ÿ6ÿ ÿÿ ÿÿÿÿÿÿ*ÿ‚`ÿ ÿÿ ÿÿÿ ÿ*ÿ‚`ÿ ÿ ÿÿ ÿ ÿ'ÿ*ÿ‚`ÿ ÿÿÿ ÿ ÿ'ÿ*ÿ‚`ÿ ÿÿ ÿ ÿ'ÿ*ÿ‚`ÿ*ÿ‚`ÿ*ÿ‚'ÿ6ÿ*ÿ‚'ÿ6ÿ*ÿ‚'ÿ6ÿ*ÿ‚'ÿÿÿÿÿÿÿ3ÿÿÿÿÿÿÿÿ‚'ÿÿÿÿÿÿÿ3ÿÿÿÿÿÿÿÿ‚'ÿÿÿÿÿÿÿ3ÿÿÿÿÿÿÿÿ‚'ÿÿÿÿÿÿÿ3ÿÿÿÿÿÿÿÿ‚'ÿÿÿÿÿÿÿ3ÿÿÿÿÿÿÿÿ‚'ÿÿÿÿÿÿÿ3ÿÿÿÿÿÿÿÿ‚'ÿÿÿÿÿÿÿ3ÿÿÿÿÿÿÿÿ‚'ÿÿÿÿÿÿÿ3ÿÿÿÿÿÿÿÿ‚'ÿÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ63ÿÿÿÿÿ%cÿ‚ÿÿÿÿÿ|ÿÿÿÿÿÿÿÿcÿ‚ÿÿÿÿÿ|ÿÿÿÿÿÿÿÿcÿ‚ÿÿÿÿÿ|ÿÿÿÿÿÿÿÿcÿ‚ÿÿÿÿÿ|ÿÿÿÿÿÿÿÿcÿ‚ÿÿÿÿÿ|ÿÿÿÿÿÿÿÿcÿ‚ÿÿÿÿÿ|ÿÿÿÿÿÿÿÿcÿ‚ÿÿÿÿÿ|ÿÿÿÿÿÿÿÿcÿ‚ÿÿÿÿÿ|ÿÿÿÿÿÿÿÿcÿ‚ÿÿÿÿÿ|ÿÿÿÿÿ3ÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ6ÿcÿ‚ÿÿÿÿÿ|ÿÿÿÿÿ3ÿÿ ÿ ÿÿ ÿÿÿÿ ÿ ÿÿ ÿÿ ÿÿ9ÿcÿ‚ÿÿÿÿÿ|ÿÿÿÿÿ3ÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿÿ ÿÿ9ÿcÿ‚ÿÿÿÿÿ|ÿÿÿÿÿ3ÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿÿ ÿÿ9ÿcÿ‚ÿÿÿÿÿ|ÿÿÿÿÿ3ÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿ9ÿcÿ‚ÿÿÿ?ÿ%ÿTÿC3ÿÿÿ ÿÿ ÿÿ ÿÿÿÿÿ ÿÿÿÿ9ÿcÿ‚ÿÿÿ?ÿÿÿÿÿTÿÿÿ=ÿ3ÿÿ ÿ ÿ ÿ ÿÿÿÿ ÿ ÿÿÿ 6ÿcÿ‚ÿÿÿ?ÿÿÿÿÿTÿÿÿ=ÿ3ÿÿÿÿ9ÿcÿ‚ÿÿÿ?ÿÿÿÿÿTÿÿÿ=ÿ3ÿÿÿÿ9ÿcÿ‚ÿÿÿ?ÿÿÿÿÿTÿÿÿ=ÿ3ÿÿYÿcÿ‚ÿÿÿ?ÿÿÿÿÿTÿÿÿ=ÿÿÿÿcÿ‚ÿ8ÿ ÿÿÿÿTÿÿÿ=ÿÿÿÿcÿ‚ÿ8ÿÿÿÿÿÿÿÿTÿÿÿ=ÿÿÿÿcÿ‚ÿ8ÿÿÿÿÿÿÿÿTÿÿÿ=ÿÿÿÿcÿ‚ÿ8ÿÿÿÿÿÿÿÿTÿÿÿ=ÿÿÿÿcÿ‚ÿ8ÿÿÿÿÿÿÿÿTÿÿÿÿ<ÿÿÿcÿ‚ÿ8ÿÿÿÿÿÿÿÿTÿÿÿÿ6ÿiÿ ÿ ÿ ÿlÿcÿ‚ÿ8ÿÿÿÿÿÿÿÿTÿÿÿÿ6ÿfÿ ÿ ÿ ÿÿ ÿÿlÿcÿ‚ÿ8ÿÿÿÿÿÿÿÿTÿÿÿÿ6ÿcÿÿÿÿÿlÿcÿ‚ÿ8ÿÿÿÿÿÿÿÿTÿÿÿÿ6ÿcÿÿ ÿ ÿÿlÿcÿ‚ÿ8ÿÿÿÿ{ÿÿÿ ÿÿTÿÿÿÿ6ÿcÿÿÿÿ ÿÿlÿcÿ‚ÿ8ÿÿeÿ!{ÿÿÿ ÿÿTÿÿÿÿ6ÿcÿÿÿ ÿÿ ÿÿiÿcÿ‚ÿ8ÿÿeÿÿÿÿ ÿ ÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿÿTÿÿÿÿ6ÿcÿÿ ÿ ÿ ÿÿfÿcÿ‚ÿ8ÿÿeÿÿÿÿ ÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿTÿÿÿÿ6ÿcÿÿÿ#ÿcÿ‚ÿ8ÿÿeÿÿÿ ÿ ÿ ÿÿÿ ÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿTÿÿÿÿ6ÿcÿÿÿ#ÿcÿ‚ÿ8ÿÿeÿÿÿ ÿ ÿ ÿ ÿÿÿÿ ÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿTÿÿÿÿ6ÿcÿÿÿ#ÿcÿ‚ÿ8ÿÿeÿÿÿ ÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿTÿÿÿÿ6ÿÿÿÿcÿ‚ÿ8ÿÿeÿÿÿ ÿ ÿ ÿ ÿÿÿÿ ÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿTÿÿÿÿ6ÿÿÿÿcÿ‚ÿ8ÿÿeÿÿÿ ÿHÿÿ0ÿ3ÿBÿÿTÿÿÿÿ6ÿÿÿÿcÿ‚ÿ8ÿÿeÿÿÿ ÿHÿÿ0ÿ3ÿBÿÿTÿÿÿÿ6ÿÿÿÿcÿ‚ÿ8ÿÿeÿÿÿ ÿKÿ3ÿÿ3ÿ9ÿÿTÿÿÿÿ6ÿ%cÿ‚ÿ8ÿÿeÿÿÿÿÿÿTÿÿÿÿÿÿÿ?ÿ‚ÿ8ÿÿeÿÿÿÿÿÿTÿÿÿÿÿÿÿ?ÿ‚ÿ8ÿÿeÿÿÿÿÿÿTÿÿÿÿÿÿÿ?ÿ‚ÿ8ÿÿeÿÿ%ÿ9ÿhÿ%ÿ;ÿ‚ÿ8ÿÿeÿÿÿXÿ9ÿÿbÿÿÿÿÿÿ;ÿ‚ÿ8ÿÿeÿÿÿXÿ9ÿÿbÿÿÿÿÿÿ;ÿ‚ÿ8ÿÿeÿÿÿXÿ9ÿÿbÿÿÿÿÿÿ;ÿ‚ÿ8ÿÿeÿÿÿXÿ9ÿÿbÿÿÿÿÿÿ;ÿ‚ÿ8ÿÿJÿ/ÿGÿ9ÿÿ ÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿÿÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ;ÿ‚ÿÿPÿÿ)ÿÿGÿ9ÿ ÿ ÿÿÿ ÿ ÿÿ ÿÿÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿÿ ÿÿ ÿÿ ÿÿÿ ÿ ÿÿ ÿÿÿÿ ÿ ÿÿ ÿÿ ÿÿÿÿ;ÿ‚ÿÿÿJÿÿÿ)ÿÿGÿ9ÿ ÿÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿÿÿÿÿ ÿÿ ÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿÿ ÿÿÿÿ;ÿ‚ÿÿÿ ÿÿ$ÿÿoÿÿÿÿGÿ9ÿ ÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿÿÿÿÿ ÿ ÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿÿ ÿÿÿÿ;ÿ‚ÿÿÿ ÿÿ$ÿÿoÿÿÿÿGÿ9ÿ ÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿ ÿ ÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿÿÿ;ÿ‚ÿÿÿ ÿÿ$ÿÿÿ ÿ ÿÿÿÿÿÿ ÿÿ ÿÿGÿ9ÿ ÿÿÿÿ ÿÿ ÿÿ ÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿ;ÿ‚ÿÿÿ ÿÿ ÿÿ ÿÿÿÿÿ ÿÿ ÿÿÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿ ÿÿÿGÿ9ÿ ÿÿÿ ÿ ÿ ÿ ÿÿÿÿ ÿ ÿÿÿ ÿÿÿÿÿÿÿ ÿÿ ÿ ÿ ÿ ÿÿÿÿ ÿ ÿÿÿ ÿÿ;ÿ‚ÿÿÿ ÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿ ÿÿÿÿÿÿ ÿÿ ÿÿÿÿ ÿÿ ÿÿÿGÿ9ÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ;ÿ‚ÿÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿ ÿÿÿÿÿÿ ÿ ÿÿÿ ÿÿ ÿÿÿGÿ9ÿ ÿ ÿÿÿÿÿ ÿÿÿ ÿÿÿÿÿÿÿÿÿ;ÿ‚ÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿ ÿÿ ÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿÿÿGÿ9ÿÿ ÿÿ,ÿÿÿ ÿ!ÿÿÿ5ÿÿ;ÿ‚~ÿÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿ ÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿÿGÿÿÿÿbÿÿÿÿÿÿ;ÿ‚~ÿÿÿÿ ÿÿ ÿÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿÿÿÿÿÿÿ ÿÿ ÿÿ ÿÿ ÿÿGÿÿÿÿbÿÿÿÿÿÿ;ÿ‚~ÿÿÿÿ ÿÿ ÿÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿÿÿÿ ÿÿEÿÿGÿÿÿÿbÿÿÿÿÿÿ;ÿ‚~ÿÿÿÿÿÿ'ÿÿKÿÿÿ ÿÿÿÿHÿÿGÿÿÿÿbÿÿÿÿÿÿ;ÿ‚~ÿÿÿ ÿÿÿÿ*ÿNÿÿÿ ÿ!ÿ ÿHÿÿGÿÿÿhÿ%ÿ;ÿ‚~ÿÿÿ ÿÿÿÿ$ÿNÿÿÿ)ÿÿGÿÿÿÿÿÿÿÿ‚~ÿÿÿJÿÿÿ)ÿÿGÿÿÿÿÿÿÿÿ‚~ÿÿÿJÿÿÿ)ÿÿGÿÿÿÿÿÿÿÿ‚~ÿÿÿJÿÿÿ)ÿÿGÿÿÿÿÿÿÿÿ‚~ÿÿÿJÿÿ/ÿGÿÿÿÿÿÿÿÿ‚~ÿÿPÿÿÿÿÿÿÿÿÿÿÿ‚~ÿÿÿÿÿzÿÿÿÿÿÿÿÿ‚~ÿÿÿÿÿzÿÿÿÿÿÿÿÿ‚~ÿÿÿÿÿzÿÿÿÿÿÿÿÿ‚~ÿÿÿÿÿzÿÿÿÿÿÿÿÿ‚~ÿÿÿÿÿzÿÿÿÿÿÿÿÿ‚~ÿÿÿÿÿzÿÿÿÿÿÿÿÿ‚~ÿÿÿÿÿzÿÿÿÿÿÿÿÿ‚~ÿÿÿÿÿzÿÿÿÿÿÿÿÿ‚`ÿ*ÿ‚`ÿ*ÿ‚`ÿ*ÿ‚`ÿA ÿE*ÿ‚`ÿ>ÿÿB*ÿ‚`ÿJÿB*ÿ‚`ÿ ÿ ÿ ÿÿÿ ÿÿÿÿ ÿ ÿ ÿ*ÿ‚`ÿ ÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿÿ*ÿ‚`ÿ ÿ ÿÿ ÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿ*ÿ‚`ÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ*ÿ‚Eÿ$ÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿ*ÿ‚Eÿÿ ÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿÿ*ÿ‚Eÿÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿ*ÿ‚Eÿÿ ÿ ÿÿ ÿ6ÿÿcÿ*ÿ‚Eÿÿ ÿÿ ÿÿ6ÿÿcÿ*ÿ‚Eÿÿ ÿ ÿ9ÿÿ~*ÿ‚Eÿÿ*ÿ‚Eÿÿ*ÿ‚Eÿÿ*ÿ‚Eÿÿ*ÿ‚Eÿÿ*ÿ‚EÿÿÿÿÿÿÿÿÿÿÿÿUÿ‚EÿÿÿÿÿÿÿÿÿÿÿÿUÿ‚EÿÿÿÿÿÿÿÿÿÿÿÿUÿ‚EÿÿÿÿÿÿÿÿÿÿÿÿUÿ‚EÿÿÿÿÿÿÿÿÿÿÿÿUÿ‚EÿÿÿÿÿÿÿÿÿÿÿÿUÿ‚EÿÿÿÿÿÿÿÿÿÿÿÿUÿ‚EÿÿÿÿÿÿÿÿÿÿÿÿUÿ‚'ÿÿÿÿÿÿÿWÿ‚'ÿÿÿÿÿÿÿWÿ‚'ÿÿÿÿÿÿÿWÿ‚'ÿWÿAÿÿÿÿÿÿWÿ‚'ÿZÿ>ÿÿÿÿÿÿWÿ‚'ÿZÿ>ÿÿÿÿÿÿWÿ‚'ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ~ÿÿÿÿÿÿWÿ‚'ÿ ÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿ‚'ÿ ÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿWÿ‚'ÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿWÿ‚'ÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿWÿ‚'ÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿ‚'ÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ~ÿÿÿÿÿÿWÿ‚'ÿ ÿ ÿÿ ÿÿNÿÿÿÿÿÿÿWÿ‚'ÿ ÿÿ ÿÿ ÿÿ6ÿÿÿÿÿÿÿWÿ‚'ÿ ÿ ÿ ÿÿ>ÿÿÿÿÿÿWÿ‚'ÿÿÿÿÿÿÿWÿ‚'ÿÿÿÿÿÿÿWÿ‚'ÿÿÿÿÿÿÿWÿ‚'ÿÿÿÿÿÿÿWÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚•*Œ*lp0X2ÐTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿ%ÿÿÿÿeÿÿÿÿÿÿÿÿeÿÿÿÿÿÿÿÿeÿÿÿÿÿÿÿÿeÿÿÿÿÿÿÿÿeÿÿÿÿÿÿÿÿeÿÿÿÿÿÿÿÿeÿÿÿÿÿÿÿÿeÿÿÿÿÿÿÿÿeÿÿÿÿÿÿCÿ%ÿÿÿÿÿCÿÿÿÿÿÿÿÿÿCÿÿÿÿÿeÿ 0ÿÿÿCÿÿÿÿÿbÿ ÿ-ÿÿÿCÿÿÿÿÿnÿ-ÿÿÿCÿÿÿÿ-ÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿ ÿÿ-ÿÿÿCÿÿÿÿ*ÿ ÿ ÿ ÿÿ ÿÿÿ ÿ ÿ ÿÿÿÿ ÿ ÿÿ-ÿÿÿCÿÿÿÿ'ÿÿÿÿÿÿÿÿ ÿ ÿÿÿ ÿ ÿ ÿ-ÿÿÿCÿÿÿÿ'ÿÿ ÿ ÿÿÿÿÿ ÿ ÿÿ ÿ ÿ ÿ-ÿÿÿCÿÿÿÿ'ÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿ ÿ ÿ-ÿÿÿCÿÿÿÿ!'ÿÿÿ ÿÿ ÿÿÿÿÿ ÿ ÿÿÿ ÿ ÿÿ-ÿÿÿCÿÿÿÿÿ'ÿÿ ÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿÿ-ÿÿÿCÿÿÿÿÿ'ÿÿHÿÿ'ÿZÿÿÿCÿÿÿÿÿ'ÿÿHÿ ÿ*ÿZÿÿÿCÿÿÿÿÿ'ÿÿHÿ ÿÿZÿÿÿCÿÿÿÿÿÿÿÿÿÿCÿÿÿÿÿÿÿÿÿÿCÿÿÿÿÿÿÿÿÿÿCÿÿÿÿÿÿÿÿÿÿCÿÿÿÿÿ%ÿÿCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeÿÿÿÿÿeÿÿÿÿ ÿÿÿÿÿeÿÿÿÿ ÿÿÿÿÿeÿÿÿÿ ÿÿÿÿÿeÿÿÿÿ ÿÿÿÿÿeÿÿÿÿ ÿÿÿÿÿeÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿeÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿeÿÿÿÿ ÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿÿÿÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿGÿ!ÿÿ ÿÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿ ÿ ÿÿÿÿ ÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿGÿÿÿÿ ÿÿ ÿ ÿÿÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿ ÿ ÿÿÿÿÿÿGÿÿÿÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿÿÿÿÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿÿÿÿÿÿGÿÿÿÿ ÿ ÿÿ ÿÿ ÿ ÿ ÿÿÿ ÿÿÿÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿÿÿÿÿÿGÿÿÿÿÿÿ ÿÿ)ÿÿ{ÿÿÿÿÿGÿÿ ÿ ÿ ÿÿ ÿÿ&ÿÿxÿÿÿÿÿGÿÿ ÿ ÿ!ÿÿTÿ<ÿÿÿrÿÿÿÿÿGÿÿÿÿÿ ÿÿÿÿÿGÿÿÿÿÿ ÿÿÿÿÿGÿÿÿÿÿ ÿÿÿÿÿGÿÿÿÿÿÿGÿÿÿÿÿÿ=ÿÿGÿÿÿÿÿÿ=ÿÿGÿÿÿÿÿÿ=ÿÿGÿÿÿÿÿÿ=ÿÿGÿÿÿÿÿÿ=ÿÿGÿÿÿÿÿÿ=ÿÿGÿÿÿÿÿÿ=ÿÿGÿÿÿÿÿÿ=ÿÿGÿÿÿÿÿÿÿ2ÿ=ÿÿÿÿÿ,ÿÿÿÿ7ÿÿÿÿÿÿÿ !ÿÿÿ)ÿÿ ÿÿÿÿÿ~ÿ ÿÿÿÿ)ÿÿ ÿÿÿÿÿÿ ÿÿÿÿ)ÿÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿ ÿ ÿÿÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿÿÿÿÿgÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿÿ ÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿÿ ÿÿÿÿÿgÿÿÿÿÿÿ ÿ ÿÿÿ ÿ ÿÿÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿÿ ÿ ÿÿÿ ÿÿÿÿÿÿÿgÿÿÿÿÿÿ ÿ ÿ ÿ ÿÿÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿÿgÿÿÿÿÿÿ'ÿKÿÿ ÿÿÿÿ ÿÿÿ/ÿÿÿÿgÿÿ ÿ ÿ ÿ ÿ*ÿKÿÿ ÿ ÿ ÿÿ ÿ ÿÿ2ÿÿÿÿgÿÿ ÿ ÿ ÿÿKÿÿÿ ÿ!ÿ ÿ ÿVÿÿÿgÿÿÿ,ÿÿÿÿ7ÿÿÿgÿÿÿ,ÿÿÿÿ7ÿÿÿgÿÿÿ,ÿÿÿÿ7ÿÿÿgÿÿÿ,ÿÿÿÿ7ÿÿÿgÿÿ2ÿ=ÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿ[ÿ/ÿ[ÿ/ÿ[ÿ/ÿ[ÿ/ÿ[ÿ/ÿ[ÿ/ÿÿ ÿ ÿ ÿÿ ÿÿeÿ/ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿeÿ/ÿ ÿ ÿ ÿ ÿÿÿÿeÿ/ÿ ÿÿÿÿÿÿÿÿÿeÿ/ÿ ÿÿÿÿÿÿÿÿÿeÿ/ÿ ÿÿÿÿÿ ÿÿÿ ÿeÿ/ÿ ÿÿÿÿÿÿÿ ÿÿeÿ/ÿ ÿÿ ÿÿ*ÿeÿ/ÿ ÿ ÿ ÿ ÿ'ÿeÿ/ÿÿÿ ÿ ÿ'ÿeÿ/ÿ[ÿ/ÿ[ÿ/ÿ[ÿ/ÿ[ÿ/ÿ[ÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJÿ%ÿÿÿÿÿJÿÿÿÿÿÿÿÿÿJÿÿÿÿÿÿÿÿÿJÿÿÿÿÿÿÿÿÿJÿÿÿÿÿÿÿÿÿJÿÿÿÿÿÿÿÿÿJÿHÿÿÿ>ÿÿÿÿÿÿJÿHÿÿÿ>ÿÿÿÿÿÿJÿHÿÿÿ>ÿÿÿÿÿÿJÿ*ÿÿÿÿ ÿÿ ÿÿ ÿ ÿÿÿÿ ÿ ÿ ÿ3ÿÿÿÿÿÿJÿ*ÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿ ÿ ÿÿ ÿ3ÿÿÿÿÿÿJÿ-ÿÿÿ ÿÿ ÿÿÿÿÿ ÿÿ ÿ ÿ ÿÿ ÿ3ÿÿÿÿÿÿJÿ-ÿÿ ÿÿ ÿÿÿÿÿ ÿ ÿ ÿ ÿÿ ÿ3ÿÿÿÿÿÿJÿ0ÿ ÿ ÿ ÿÿ ÿÿÿÿÿÿ ÿ ÿ ÿÿ ÿ3ÿÿÿÿÿÿJÿ0ÿ ÿ ÿÿÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿÿÿ3ÿÿÿÿÿÿJÿ3ÿÿ ÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ6ÿÿÿÿÿÿJÿ3ÿÿ6ÿ9ÿlÿÿÿÿÿÿJÿ3ÿÿ6ÿ9ÿlÿÿÿÿÿÿJÿ6ÿ9ÿÿ<ÿ`ÿÿÿÿaÿkÿÿÿÿÿÿaÿÿeÿÿÿÿÿÿÿaÿÿeÿÿÿÿÿÿÿaÿÿeÿÿÿÿÿÿÿaÿÿeÿÿÿÿÿÿÿaÿÿeÿÿÿÿÿÿÿaÿÿeÿlÿ ÿ ÿ ÿoÿÿÿÿaÿÿeÿiÿ ÿ ÿ ÿÿ ÿÿoÿÿÿÿaÿÿeÿfÿÿÿÿÿoÿÿÿÿaÿÿeÿfÿÿ ÿ ÿÿoÿÿÿÿaÿÿGÿ!fÿÿÿÿ ÿÿoÿÿÿÿaÿÿGÿÿfÿÿÿ ÿÿ ÿÿlÿÿÿÿaÿÿGÿÿfÿÿ ÿ ÿ ÿÿiÿÿÿÿaÿÿGÿÿfÿÿÿ#ÿÿÿÿaÿÿGÿÿfÿÿÿ#ÿÿÿÿaÿÿGÿÿfÿÿÿ#ÿÿÿÿaÿÿGÿÿÿÿÿÿÿÿaÿÿGÿÿÿÿÿÿÿÿaÿÿGÿÿÿÿÿÿÿÿaÿÿGÿÿÿÿÿÿÿÿaÿÿGÿÿ%ÿÿÿaÿÿGÿÿÿXÿÿÿaÿÿGÿÿÿXÿÿÿaÿÿGÿÿÿXÿÿÿaÿÿGÿÿÿXÿÿÿaÿÿGÿÿÿXÿÿÿaÿÿGÿÿÿXÿÿÿaÿÿGÿÿÿXÿÿÿaÿÿGÿÿÿXÿÿÿ%ÿPÿ2ÿDÿÿÿ%ÿÿJÿÿÿ,ÿÿDÿÿÿ%ÿÿJÿÿÿ,ÿÿDÿÿÿ%ÿÿÿÿ-ÿÿiÿÿ'ÿÿDÿÿÿ%ÿÿÿÿ-ÿÿiÿÿ'ÿÿDÿÿÿ%ÿÿÿÿ-ÿÿiÿÿ'ÿÿDÿÿÿ%ÿ ÿ ÿÿ ÿ ÿ ÿÿÿÿÿ ÿÿ$ÿÿ ÿ ÿÿ ÿÿÿÿÿ ÿÿÿÿDÿÿÿ%ÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿÿÿÿÿ!ÿÿ ÿ ÿ ÿÿ ÿÿÿÿÿ ÿÿÿÿDÿÿÿ%ÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿÿÿÿ ÿÿ ÿ!ÿÿÿÿÿ ÿÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿDÿÿÿ%ÿÿÿÿ ÿÿ ÿ ÿ ÿÿÿ ÿÿ ÿ!ÿÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿÿÿDÿÿÿ ÿÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ!ÿÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿDÿÿÿ ÿÿÿÿ ÿÿ ÿÿ ÿÿ ÿ ÿ ÿÿÿÿ!ÿÿÿÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿÿÿÿDÿÿÿ ÿÿÿÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿ ÿÿ$ÿÿÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿDÿÿÿ ÿÿÿÿÿ ÿÿ ÿ-ÿÿQÿÿÿÿÿÿÿÿNÿÿDÿÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿ*ÿÿQÿÿ ÿ ÿ ÿÿÿÿNÿÿDÿÿÿ ÿÿ ÿ ÿÿÿÿ'ÿTÿÿ ÿ ÿ!ÿ ÿQÿÿDÿÿÿ ÿÿÿJÿÿÿ,ÿÿDÿÿÿ ÿÿÿJÿÿÿ,ÿÿDÿÿÿ ÿÿÿJÿÿÿ,ÿÿDÿÿÿ ÿÿPÿ2ÿDÿÿÿ ÿÿÿÿÿzÿÿÿ ÿÿÿÿÿzÿÿÿ ÿÿÿÿÿzÿÿÿ ÿÿÿÿÿzÿÿÿ ÿÿÿÿÿzÿÿÿ ÿÿÿÿÿzÿÿÿ ÿÿÿÿÿzÿÿÿ ÿÿÿÿÿzÿÿÿ ÿÿÿÿÿzÿÿkÿUÿ5ÿUÿ5ÿUÿ5ÿ>ÿ ÿÿ5ÿJÿÿ5ÿÿ ÿÿÿÿ ÿÿÿÿÿ ÿÿ ÿ ÿ]ÿ5ÿ ÿ ÿ ÿ ÿÿÿÿÿ ÿÿ ÿÿÿ ÿ ÿÿÿÿ`ÿ5ÿ ÿÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿ`ÿ5ÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ`ÿ5ÿ ÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿ`ÿÿ$ÿÿ ÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿÿÿÿ`ÿÿÿ ÿÿÿ ÿÿ ÿÿÿ ÿ ÿÿÿ ÿ ÿ]ÿÿÿ ÿÿEÿÿcÿ`ÿÿÿ ÿ ÿÿ ÿ3ÿÿfÿ`ÿÿÿÿ ÿ6ÿÿAÿÿÿUÿÿÿUÿÿÿUÿÿÿUÿÿÿUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiÿÿkÿÿkÿT ÿAÿkÿZÿ>ÿkÿZÿ>ÿkÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿ~ÿkÿ ÿ ÿÿÿ ÿÿÿÿÿÿÿÿÿkÿ ÿÿ ÿÿÿÿÿÿÿÿkÿ ÿÿ ÿÿÿÿÿÿÿÿkÿ ÿÿ ÿÿÿÿÿÿÿÿÿkÿ ÿÿ ÿ ÿÿÿÿÿÿÿÿÿkÿ ÿÿ ÿÿÿ ÿ ÿ ÿ ÿ~ÿkÿ ÿÿ ÿÿNÿÿkÿ ÿ ÿÿÿ ÿÿ9ÿÿkÿÿ ÿ ÿÿ>ÿkÿÿkÿÿkÿÿkÿÿkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ.ÿaHXHlp0èhÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚0ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ$ÿ‚ÿÿÿÿÿÿÿÿÿÿÿjÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿ6ÿ ÿÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿ6ÿÿÿÿÿ2ÿÿÿ*ÿÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿzÿ$ÿ‚!ÿ6ÿÿÿÿÿ2ÿÿÿ*ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿwÿ$ÿ‚!ÿ6ÿÿÿoÿÿ2ÿ ÿÿ ÿ'ÿÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿÿÿÿÿÿÿÿÿwÿ$ÿ‚!ÿ6ÿÿÿoÿÿ2ÿ ÿÿ ÿ'ÿÿ ÿÿ ÿÿÿÿÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿ"ÿ‚!ÿ6ÿ*ÿ ÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿÿ ÿ3ÿÿ2ÿ ÿ ÿ ÿ$ÿ ÿ ÿÿ ÿ ÿÿÿÿÿ ÿ ÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿ+ÿ‚!ÿ6ÿ'ÿ ÿ ÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿÿ6ÿÿ2ÿ ÿ ÿ ÿÿ ÿ ÿÿ ÿÿ ÿ ÿÿ ÿ ÿÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿÿÿ‚!ÿ6ÿ6ÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿ ÿÿ ÿÿ6ÿÿ2ÿÿÿÿ!ÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿ"ÿ‚!ÿ6ÿ0ÿ ÿÿÿÿÿÿÿ ÿ ÿÿÿ ÿÿÿ ÿ6ÿÿ2ÿÿÿÿ!ÿÿrÿÿÿÿÿÿÿÿÿ ÿ‚!ÿ6ÿ*ÿ ÿ ÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿÿ ÿÿ6ÿÿ2ÿÿÿÿÿÿrÿ ÿ ÿÿÿÿÿÿÿ ÿ‚!ÿ6ÿ'ÿÿ ÿÿ ÿÿ ÿ ÿÿÿÿÿÿ ÿ 3ÿÿ2ÿÿÿÿÿÿÿoÿ ÿÿÿÿÿÿdÿ$ÿ‚Zÿ'ÿ ÿÿ ÿ<ÿ'ÿ6ÿÿÿÿÿÿÿÿÿÿÿ$ÿ‚Zÿ*ÿ ÿÿ'ÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿ$ÿ‚Zÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿ‚Zÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿ‚Zÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿ‚Zÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿ6ÿ ÿÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿ9ÿÿ^ÿÿÿÿÿÿ ÿ$ÿ‚!ÿ9ÿÿÿÿÿÿÿXÿÿÿÿÿÿÿ ÿ$ÿ‚!ÿ9ÿÿÿÿÿÿÿXÿÿÿÿÿÿÿ ÿ$ÿ‚!ÿ9ÿÿÿÿÿÿÿXÿÿÿÿÿÿÿ ÿ$ÿ‚!ÿ9ÿÿÿÿÿÿÿXÿÿÿÿÿÿÿ3ÿ‚!ÿ9ÿÿÿÿÿÿÿXÿÿÿÿÿÿÿ3ÿ‚!ÿ9ÿÿÿÿÿÿ ÿ ÿ ÿÿ ÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿ3ÿ‚!ÿ9ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿÿÿ ÿÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿ3ÿ‚!ÿ9ÿÿ ÿÿ ÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿÿÿÿÿÿÿ ÿÿÿ ÿ ÿÿÿÿÿÿ ÿÿ ÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ3ÿ‚!ÿ9ÿÿÿ ÿÿÿ ÿÿ ÿÿÿÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿÿ ÿÿÿ ÿ ÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ3ÿ‚!ÿ9ÿÿÿ ÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿ ÿ$ÿ‚]ÿÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿ ÿ ÿÿÿÿÿ ÿÿ ÿ ÿ ÿÿ ÿÿ ÿÿ ÿ ÿÿÿ ÿ ÿÿ ÿÿ ÿ ÿÿ ÿÿÿÿÿÿÿÿÿ ÿ$ÿ‚]ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿ ÿÿÿÿÿ ÿÿÿÿxÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿÿÿÿÿÿÿÿ ÿ$ÿ‚]ÿÿ ÿÿ ÿEÿÿ]ÿÿÿ ÿÿÿ<ÿ-ÿÿuÿÿÿÿÿÿÿ ÿ$ÿ‚]ÿÿ ÿ HÿÿÿWÿÿÿÿXÿÿÿÿÿÿÿ ÿ$ÿ‚]ÿÿÿÿÿÿhÿlÿÿÿÿÿÿÿ ÿ$ÿ‚]ÿÿÿÿÿÿÿXÿÿÿÿÿÿÿ ÿ$ÿ‚!ÿ9ÿÿÿÿÿÿÿXÿÿÿÿÿÿÿ ÿ$ÿ‚!ÿ9ÿÿÿÿÿÿÿXÿÿÿÿÿÿÿ ÿ$ÿ‚!ÿ9ÿÿ^ÿÿÿÿÿÿ ÿ$ÿ‚!ÿÿÿvÿÿÿÿÿÿÿÿÿLÿ$ÿ‚!ÿÿÿvÿÿÿÿÿÿÿÿÿLÿ$ÿ‚!ÿÿÿvÿÿÿÿÿÿÿÿÿLÿ$ÿ‚!ÿÿÿvÿÿÿÿÿÿÿÿÿLÿ$ÿ‚!ÿÿÿvÿÿÿÿÿÿÿÿÿLÿ$ÿ‚!ÿÿÿvÿÿÿÿÿÿÿÿÿLÿ$ÿ‚!ÿÿÿvÿÿÿÿÿÿÿÿÿLÿ$ÿ‚!ÿÿÿvÿÿÿÿÿÿÿÿÿLÿ$ÿ‚!ÿÿÿvÿÿÿÿÿÿÿÿÿsÿ‚!ÿ6ÿ 6ÿÿÿÿkÿ ÿ$ÿ‚!ÿ6ÿÿÿÿ6ÿÿÿÿÿeÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿ6ÿÿÿÿ6ÿÿÿÿÿeÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿ6ÿÿÿÿ6ÿÿÿÿÿeÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿ6ÿÿÿÿ6ÿÿÿÿÿeÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿ6ÿÿÿÿ6ÿÿÿÿcÿ~ÿÿÿÿÿÿÿÿÿ$ÿ‚Zÿÿÿÿ6ÿÿÿÿfÿ{ÿÿÿÿÿÿÿÿÿ$ÿ‚Zÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿ6ÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿ ÿÿ ÿ ÿ ÿ ÿÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿÿÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿÿÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿÿÿÿ ÿÿÿÿ ÿ ÿÿÿ$ÿ‚Zÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿÿ6ÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿ ÿ ÿ ÿÿÿÿÿÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿ ÿÿÿÿ ÿÿÿÿÿ ÿÿÿÿ$ÿ‚Zÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿÿÿÿÿ ÿÿ6ÿÿÿÿÿÿÿÿ ÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿÿ ÿÿ ÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿ ÿÿÿÿ ÿÿ$ÿ‚Zÿÿÿÿÿ ÿÿÿ ÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿ ÿÿÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿ ÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿ ÿ ÿÿ ÿÿ ÿ ÿÿÿÿ ÿ$ÿ‚Zÿÿÿÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿ ÿ ÿ6ÿÿÿÿÿÿÿ ÿÿÿ ÿ ÿÿ ÿÿÿ ÿÿÿÿ ÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿ ÿÿÿÿÿ ÿÿÿ ÿÿÿÿ ÿ ÿÿÿÿÿ ÿÿÿÿ ÿ ÿÿÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿ$ÿ‚!ÿ6ÿÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿ ÿÿÿ6ÿÿÿÿÿÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿ ÿ ÿÿ ÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿ ÿÿÿÿ ÿÿÿ ÿ ÿÿ ÿÿÿÿÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿÿÿ ÿÿÿ ÿ ÿ$ÿ‚!ÿ6ÿ ÿ ÿÿÿÿ ÿBÿÿWÿ6ÿÿÿÿÿ ÿÿÿÿÿÿÿ`ÿÿÿ ÿÿÿÿ ÿÿ ÿÿÿ ÿÿ`ÿÿÿ ÿÿÿÿ ÿ0ÿ!ÿÿEÿ$ÿ‚!ÿ6ÿ ÿ ÿÿÿ EÿÿÿQÿ6ÿÿÿÿÿ ÿÿÿÿÿÿÿZÿÿÿ ÿÿ ÿ ÿÿÿ ÿÿÿZÿÿÿ ÿÿÿ3ÿ$ÿHÿ$ÿ‚!ÿ6ÿÿÿÿ6ÿÿÿÿÿeÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿ6ÿÿÿÿ6ÿÿÿÿÿeÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿ6ÿÿÿÿ6ÿÿÿÿÿeÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿ6ÿÿÿÿ6ÿÿÿÿÿeÿÿÿÿÿÿÿÿÿ$ÿ‚!ÿ6ÿ 6ÿÿÿÿkÿ ÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿ!ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6 ÿÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚!ÿÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ ÿ6ÿ6-ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿ5ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚xÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿTÿÿÿÿÿÿ:ÿÿÿ=ÿÿÿ=ÿÿÿ$ÿ‚!ÿ6ÿ;Tÿ$ÿ‚!ÿ6ÿ;Tÿ$ÿ‚!ÿ6ÿ,ÿ Tÿ$ÿ‚!ÿ6ÿ,ÿ {ÿ‚!ÿ6ÿ,ÿ {ÿ‚!ÿ6ÿÿÿ ÿ ÿÿ ÿ ÿÿÿÿÿ ÿ ÿÿ ÿ ÿÿ ÿ {ÿ‚!ÿ6ÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿ {ÿ‚!ÿ6ÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ {ÿ‚!ÿ6ÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ {ÿ‚!ÿ6ÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿ Tÿ$ÿ‚!ÿ6ÿ ÿÿÿ ÿÿ ÿÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿÿ Tÿ$ÿ‚!ÿ6ÿ ÿÿÿ ÿÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿÿ ÿ ÿÿ ÿ Tÿ$ÿ‚!ÿ6ÿ ÿÿÿ ÿMÿ Tÿ$ÿ‚!ÿ6ÿ ÿ ÿÿÿ ÿ ÿ>ÿ Tÿ$ÿ‚!ÿ6ÿÿÿ ÿ ÿQTÿ$ÿ‚!ÿ6ÿ;Tÿ$ÿ‚Zÿ;Tÿ$ÿ‚Zÿ;Tÿ$ÿ‚Zÿ;Tÿ$ÿ‚Zÿ;Tÿ$ÿ‚ÿÿÿÿÿÿÿÿÿÿÿjÿ$ÿ‚ÿÿÿÿÿÿÿÿÿÿÿjÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿmÿ‚!ÿÿÿÿÿÿÿÿÿ1ÿ%ÿÿ‚!ÿ6ÿÿnÿ!ÿ$ÿÿÿÿÿÿ‚!ÿ6ÿÿÿÿÿhÿÿÿzÿ!ÿÿzÿ$ÿÿÿÿÿÿ‚!ÿ6ÿÿÿÿÿhÿÿÿzÿ!ÿÿzÿ$ÿÿÿÿÿÿ‚!ÿ6ÿÿÿÿÿhÿÿÿzÿ!ÿÿzÿ$ÿÿÿÿÿÿ‚!ÿ6ÿÿÿÿÿhÿÿÿzÿ!ÿÿzÿ$ÿÿbÿ9ÿoÿ$ÿ‚!ÿ6ÿZÿÿÿÿÿhÿÿÿzÿ!ÿÿAÿ6ÿ$ÿÿbÿ9ÿoÿ$ÿ‚!ÿ6ÿZÿÿÿÿÿhÿÿÿzÿ!ÿÿAÿ6ÿ$ÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿoÿ$ÿ‚!ÿ6ÿÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿÿÿÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿÿÿ ÿ!ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿ ÿ ÿÿ ÿÿÿ ÿÿÿÿ$ÿÿ ÿÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿ ÿ ÿÿ ÿÿÿÿÿÿÿÿÿoÿ$ÿ‚!ÿ6ÿÿ ÿÿ ÿ ÿÿÿ ÿÿÿÿÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿ ÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿ ÿÿ!ÿ ÿ ÿÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿ ÿ ÿÿÿ ÿÿÿÿÿÿÿ$ÿ ÿÿÿÿ ÿÿÿ ÿ ÿ ÿÿÿÿÿÿÿÿ ÿÿÿ ÿ ÿÿÿoÿ$ÿ‚!ÿ6ÿ ÿÿÿÿ ÿÿÿ ÿÿ ÿÿÿ ÿÿÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿ ÿÿÿÿÿ$ÿ!ÿÿÿÿÿ ÿÿÿ ÿ ÿ ÿÿÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿ$ÿ ÿÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿÿÿÿÿÿÿÿ ÿÿÿ ÿ ÿÿÿoÿ$ÿ‚!ÿ6ÿ ÿÿÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿ ÿÿÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿÿ ÿÿÿ ÿ ÿÿÿÿÿ!ÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿÿÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿ$ÿ ÿÿÿ ÿÿ ÿÿÿÿ ÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿoÿ$ÿ‚Zÿ ÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿÿÿÿÿ ÿÿ ÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿ ÿÿÿ ÿÿ ÿÿ ÿÿÿÿÿ ÿÿ!ÿÿÿÿ ÿÿ ÿÿÿÿ ÿ ÿÿ ÿÿ ÿÿÿ ÿÿÿÿ ÿÿÿ$ÿ ÿÿÿ ÿÿ ÿÿÿÿÿ ÿÿÿ ÿÿ ÿÿÿ ÿ ÿÿÿ ÿ ÿoÿ$ÿ‚Zÿ ÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿÿÿÿÿ ÿÿ ÿ ÿÿ ÿÿ ÿÿÿÿ ÿÿ ÿ ÿ!ÿÿÿÿ ÿÿ ÿÿÿÿÿ ÿÿÿ ÿÿ ÿÿ ÿÿÿ ÿ ÿ$ÿÿ ÿÿÿ ÿÿ!ÿ9ÿ ÿÿ'ÿÿoÿ$ÿ‚Zÿÿ ÿÿÿ ÿÿ9ÿÿÿ ÿÿÿÿ ÿuÿÿÿÿ ÿÿÿÿ ÿ-ÿiÿ!ÿ ÿ ÿÿÿ ÿÿ!ÿ6ÿ9ÿÿ$ÿÿ ÿÿ ÿ$ÿÿ*ÿ ÿ'ÿÿoÿ$ÿ‚Zÿÿ ÿÿ ÿ<ÿÿÿ ÿÿÿ xÿÿÿÿ ÿÿÿÿÿÿ]ÿ!ÿ ÿ ÿÿ ÿ$ÿÿ$ÿ9ÿÿ$ÿÿÿÿoÿ$ÿ‚Zÿÿÿÿÿhÿÿÿzÿ!ÿÿzÿ$ÿÿÿÿoÿ$ÿ‚Zÿÿÿÿÿhÿÿÿzÿ!ÿÿzÿ$ÿÿÿÿoÿ$ÿ‚!ÿ6ÿÿÿÿÿhÿÿÿzÿ!ÿÿzÿ$ÿÿÿÿoÿ$ÿ‚!ÿ6ÿÿÿÿÿhÿÿÿzÿ!ÿÿzÿ$ÿ%oÿ$ÿ‚!ÿ6ÿÿnÿ!ÿÿÿÿ9ÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿmÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿmÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿmÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿmÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿmÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿmÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚ÿÿÿÿ2ÿÿÿ*ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿ$ÿ‚ÿÿÿÿ2ÿÿÿ'ÿ ÿ ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿÿÿ$ÿ‚ÿÿÿÿ2ÿ ÿÿ ÿ$ÿÿÿ ÿÿ ÿÿÿÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿ$ÿ‚ÿÿÿÿ2ÿ ÿÿ ÿ$ÿÿ ÿÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿ$ÿ‚ÿÿÿÿ2ÿ ÿ ÿ ÿ$ÿÿ ÿÿ ÿ ÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿ ÿ$ÿ‚ÿÿÿÿ2ÿ ÿ ÿ ÿÿÿ ÿÿ ÿ ÿÿÿ ÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿÿÿÿÿÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿ$ÿÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿ$ÿÿKÿÿÿÿÿÿÿÿmÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿ'ÿ ÿQÿ ÿ ÿÿÿÿÿÿmÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿ Wÿ ÿÿÿÿÿÿmÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿFÿ$ÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿmÿ‚!ÿÿÿÿÿÿÿÿÿÿÿÿmÿ‚!ÿ!ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6ÿ6$ÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ª¡lp ú3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ×‚× ¬ƒ×¬‚¬ƒ×¬‚¬ƒ× ¬ƒ×¬‚¬ƒ×¬‚¬ƒ×¬‚¬ƒ×¬†¬¬¬ƒ×¬†¬¬¬ƒ×¬¬ƒ× ¬‚×,‡#‡lp<Nû3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ#¬‚¬×¬¬+¬‚o¬‚¬×¬¬*¬„××n¬‚¬×¬¬*¬„××n¬‚¬×¬¬)¬„××o¬‚¬×¬¬#¬¬„××o¬‚¬×¬h¬@‚×× ¬K¬‚¬×¬h¬;ׂ×× ¬×I¬‚¬×¬h¬‚×8ˆ×××ׂ ¬×H¬‚¬‚¬×¬h¬‚×8¬ׄ×׬ƒ ¬×H¬‚¬‚¬×¬h¬‚׬¶¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬×…¬¬ ¬×H¬‚¬‚¬×¬h¬…׬¬5¬ ׇ¬¬ ¬×H¬‚¬‚¬×¬h¬‚×8¬×¬ƒ ¬×H¬‚¬‚¬×¬h¬…׬¬5¬×¬…¬ ¬×H¬‚¬‚¬×¬h¬‚׬¬¬ ¬×¬ƒ ¬×¬¬‚¬¬ƒ¬¬¬ƒ¬¬¬‚¬‚¬×¬h¬…׬¬¬¬„¬¬¬¬×¬…¬ ¬×¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬‚¬×¬h¬‚׬¬‡¬¬¬¬¬×¬ƒ ¬×¬¬¬ƒ¬¬ƒ¬¬¬¬‚¬‚¬×¬h¬…׬¬¬¬†¬¬¬¬×¬…¬ ¬×¬¬‚¬¬ƒ¬¬‚¬¬‚¬‚¬×¬h¬‚׬¬…¬¬¬„×× ¬ƒ ¬×¬ ¬‰¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬‚¬×¬h¬…׬¬¬¬…¬¬¬ƒ× ¬…¬ ¬×¬¬†¬¬¬¬¬ƒ¬¬¬‚¬‚¬×¬h¬‚׬¬†¬¬¬¬‚ ¬ƒ ¬×¬¬¬‚¬‚¬×¬h¬…׬¬¬¬‡¬¬¬¬¬…¬ ¬×¬¬¬¬‚¬‚¬×¬h¬‚׬¬¬¬ƒ ¬×¬¬¬‚¬‚¬×¬h¬…׬¬A¬…¬ ¬×H¬‚¬‚¬×¬h¬‚׬Ƭ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ ¬×H¬‚¬‚¬×¬h¬‚×F¬ƒ ¬×H¬‚¬‚¬×¬h¬‚×F¬ƒ ¬×H¬‚¬‚¬×¬h¬Hׂ ¬×H¬‚¬‚¬×¬h¬K ¬J׬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×7¬,¬¬¬7¬‚¬×7¬,¬¬¬7¬‚¬× ¬¬¬‚¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬¬…¬¬¬¬¬‚¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬¬…¬¬¬¬¬¬¬'¬‚¬× ¬¬ ¬ƒ¬¬†¬¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬ƒ¬¬†¬¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬'¬‚¬× ¬¬¬„¬¬¬…¬¬¬‹¬¬¬¬¬¬¬…¬¬¬„¬¬¬…¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬'¬‚¬× ¬¬¬„¬¬¬‚¬Š¬¬¬¬¬¬¬„¬¬¬„¬¬¬‚¬Š¬¬¬¬¬¬¬„¬¬¬¬¬'¬‚¬× ¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬„¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬'¬‚¬× ¬¬„¬¬¬¬¬†¬¬¬¬‚¬¬…¬¬¬…¬¬¬¬¬¬¬†¬¬¬¬‚¬¬…¬¬¬…¬¬¬¬¬¬¬'¬‚¬× ¬¬¬¬¬¬¬¬ ¬¬¬'¬‚¬× ¬¬¬¬¬¬¬¬¬¬¬'¬‚¬× ¬¬¬¬¬¬¬ ¬¬¬'¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬7¬‚¬¬E¬‚¬×¬9¬¬¬D¬‚¬× ¬¬¬…¬¬¬¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬¬¬¬¬@¬‚¬× ¬¬„¬¬¬…¬¬¬ƒ¬¬ƒ¬¬¬¬†¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬‚¬¬C¬‚¬× ¬¬„¬¬¬…¬¬¬¬¬¬‰¬¬¬¬¬¬¬„¬¬¬‰¬¬¬¬¬¬¬B¬‚¬× ¬¬„¬¬¬„¬¬‚¬¬¬¬ˆ¬¬¬¬¬‚¬¬„¬¬¬‰¬¬¬¬¬¬¬B¬‚¬× ¬†¬¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬¬‰¬¬¬¬¬¬ƒ¬¬†¬¬¬¬‰¬¬¬¬¬¬¬B¬‚¬× ¬¬†¬¬¬…¬¬¬¬¬„¬¬¬¬‰¬¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬@¬‚¬× ¬¬¬¬¬¬¬¬Q¬‚¬× ¬¬¬¬¬¬¬¬Q¬‚¬× ¬ ¬¬¬¬¬b¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬× ¬×××׬‚¬× ¬¬¬¬×¬‚¬× ¬‚¬¬m¬‚¬×¬‚¬× ¬‚¬¬n¬ƒ¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬„¬¬¬Š¬¬¬¬¬¬‚¬¬ƒ¬¬¬„¬¬¬¬‚¬¬ƒ¬¬¬‰¬¬¬¬¬¬„¬¬¬¬„¬¬¬Š¬¬¬¬¬¬¬¬_¬× ¬„¬×¬‚¬× ¬‚ ¬¬„¬¬¬Š¬¬¬¬¬¬ƒ¬¬„¬¬¬ƒ¬¬…¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬‰¬¬¬¬¬¬…¬¬¬¬‡¬¬¬¬¬‹¬¬¬¬¬¬¬¬^¬×¬¬„¬×¬‚¬× ¬‚ ¬¬„¬¬¬Š¬¬¬¬¬¬ƒ¬¬„¬¬¬ƒ¬¬…¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬‰¬¬¬¬¬¬…¬¬¬¬‡¬¬¬¬¬‹¬¬¬¬¬¬¬b¬×¬¬„¬×¬‚¬× ¬‚ ¬¬„¬¬¬Š¬¬¬¬¬¬‚¬¬„¬¬¬ƒ¬¬…¬¬¬ƒ¬¬‚¬¬ƒ¬¬¬‰¬¬¬¬¬¬„¬¬¬¬„¬¬¬‰¬¬¬¬¬¬¬^¬×¬¬„¬×¬‚¬× ¬‚ ¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬„¬¬¬ƒ¬¬…¬¬¬¬ƒ¬¬‡¬¬¬¬‡¬¬¬¬¬‰¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬¬^¬ƒ×¬¬¬„¬×¬‚¬× ¬‚ ¬¬‘¬¬¬¬¬¬¬¬¬ƒ¬¬¬„¬¬¬„¬¬¬¬„¬¬¬†¬¬¬ƒ¬¬ˆ¬¬¬¬¬‡¬¬¬‚¬¬ƒ¬¬¬_¬× ¬„¬×¬‚¬× ¬‚¬ ¬ ¬¬¬ƒ¬5¬¬v¬× ¬„¬×¬‚¬× ¬‚¬ ¬ ¬¬¬ƒ¬5¬¬v¬× ¬„¬×¬‚¬× ¬‚¬¬¬¬¬ƒ¬¬¬ ¬¬u¬× ¬„¬×¬‚¬× ¬‚¬¬n¬ ׄ¬×¬‚¬× ¬‚¬¬|¬ƒ¬×¬‚¬× ¬‚¬¬n¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬m¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬…¬¬¬¬‹¬¬¬¬¬¬¬¬…¬¬¬¬B¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬…¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬¬C¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬…¬¬¬¬¬†¬¬¬¬†¬¬¬¬¬¬E¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬…¬¬¬‚¬¬…¬¬¬¬…¬¬¬ƒ¬¬¬¬E¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬„¬¬ƒ¬¬¬¬†¬¬¬¬†¬¬¬¬†¬¬¬¬¬D¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬…¬¬¬¬†¬¬¬¬†¬¬¬¬…¬¬¬¬A¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬…¬¬¬¬¬Y¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬…¬¬¬¬¬X¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬„¬¬¬¬g¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬m¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬n¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬m¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬n¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬m¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬n¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬m¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬n¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬m¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬n¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬m¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬n¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬m¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬n¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬m¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚O¬¬)¬¬Q¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚O¬¬,¬¬O¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬‚¬¬¬‡¬¬¬¬¬†¬¬¬¬¬¬…¬¬¬¬ƒ¬¬…¬¬¬ƒ¬¬¬¬‰¬¬¬¬¬¬¬‚¬¬¬‚¬¬¬K¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚ ¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬„¬¬¬†¬¬¬¬¬„¬¬¬…¬¬¬ƒ¬¬…¬¬¬ƒ¬¬¬¬¬ˆ¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬I¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚ ¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬„¬¬¬…¬¬ ¬„¬¬¬…¬¬¬ƒ¬¬…¬¬¬ƒ¬¬¬¬¬…¬¬¬¬¬ƒ¬¬ƒ¬¬¬J¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚ ¬¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬„¬¬¬…¬¬ ¬„¬¬¬…¬¬¬ƒ¬¬…¬¬¬ƒ¬¬¬¬‡¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬I¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚ ¬¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬¬†¬¬¬¬¬¬™¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ˆ¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬J¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚ ¬¬ƒ¬¬¬ƒ¬¬¬„¬¬¬¬†¬¬¬¬¬¬–¬¬¬¬¬¬¬¬¬¬¬¬¬¬‰¬¬¬¬¬¬¬¬‚¬¬¬J¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬ƒ¬¬¬¬¬¬-¬¬¬¬`¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬¬¬¬¬¬)¬¬¬¬_¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬¬¬ ¬ ¬¬¬¬`¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬m¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬n¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚+¬¬¬A¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚+¬¬¬B¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬ƒ¬¬¬¬ƒ¬¬¬…¬¬¬¬„¬¬¬¬¬ƒ¬¬¬‡¬¬¬¬ƒ¬¬¬ƒ¬¬¬…¬¬¬¬¬¬c¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚ ¬¬¬ƒ¬¬„¬¬¬„¬¬¬ƒ¬¬…¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬ƒ¬¬‡¬¬¬¬¬¬ƒ¬¬ƒ¬¬…¬¬¬ƒ¬¬¬d¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚ ¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬ƒ¬¬ƒ¬¬…¬¬¬¬¬c¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚ ¬¬ƒ¬¬‚¬Š¬¬¬¬¬¬ƒ¬¬…¬¬¬ƒ¬¬‰¬¬¬¬¬‚¬¬ƒ¬¬¬¬¬ƒ¬¬‚¬¬„¬¬‚¬¬¬d¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚ ¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬‹¬¬¬¬¬¬Š¬¬¬¬¬¬‰¬¬¬¬¬¬¬…¬¬¬ƒ¬¬…¬¬¬ƒ¬¬¬c¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚ ¬¬¬†¬¬¬¬Š¬¬¬¬¬¬¬¬Œ¬¬¬¬¬¬¬‚¬‚¬‰¬¬¬¬¬¬¬¬„¬¬‚¬¬…¬¬¬¬¬¬d¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬&¬¬‚¬‚¬¬¬ ¬¬c¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬%¬¬¬¬¬¬ ¬¬d¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬ƒ¬¬ ¬¬¬¬¬ ¬¬c¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬n¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚¬¬m¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚<¬ ¬‚¬¬#¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚<¬¬¬¬!¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬¬ƒ¬¬¬¬‡¬¬¬¬…¬¬¬¬ƒ¬¬¬¬…¬¬¬¬‚¬¬ƒ¬¬¬¬ƒ¬¬¬ƒ¬¬¬…¬¬¬¬¬¬I¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚ ¬¬¬„¬¬¬„¬¬¬¬¬ˆ¬¬¬¬¬…¬¬¬…¬¬¬¬ƒ¬¬‡¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬¬¬¬ƒ¬¬ƒ¬¬…¬¬¬ƒ¬¬¬H¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚ ¬¬¬„¬¬¬„¬¬¬¬„¬¬¬„¬¬¬…¬¬¬†¬¬¬¬¬¬‡¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬…¬¬¬¬¬I¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚ ¬¬¬„¬¬¬„¬¬¬¬‡¬¬¬¬¬¬…¬¬¬…¬¬¬¬¬†¬¬¬¬ƒ¬¬‚¬¬‚¬¬¬ƒ¬¬‚¬¬„¬¬‚¬¬¬H¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚ ¬¬¬ƒ¬¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬ ¬‡¬¬¬¬¬ƒ¬¬…¬¬¬¬…¬¬¬ƒ¬¬…¬¬¬ƒ¬¬¬I¬‘׬׬׬׬׬׬׬׬׬‚¬× ¬‚ ¬¬¬„¬¬¬„¬¬¬¬Š¬¬¬¬¬¬…¬¬¬¬†¬¬¬¬¬¬†¬¬¬¬¬¬†¬¬¬¬¬¬„¬¬‚¬¬…¬¬¬¬¬¬H¬’׬׬׬׬׬׬׬׬¬×¬‚¬× ¬‚¬¬„¬¬¬„¬¬¬¬¬¬ ¬…¬¬¬¬¬¬ ¬¬H¬‚¬×¬‚¬× ¬‚¬¬„¬¬¬„¬¬¬¬¬¬¬¬…¬¬¬¬¬¬ ¬¬I¬ƒ¬×¬‚¬× ¬‚¬¬ƒ¬¬¬¬¬ ¬¬¬…¬¬¬¬¬¬ ¬¬I¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬¬ƒ¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬¬…¬¬¬¬‚¬¬ƒ¬¬¬¬ƒ¬¬¬ƒ¬¬¬…¬¬¬¬¬¬P¬× ¬„¬×¬‚¬× ¬‚ ¬¬¬„¬¬¬„¬¬¬¬¬†¬¬¬¬ƒ¬¬¬¬ƒ¬¬‡¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬¬¬¬ƒ¬¬ƒ¬¬…¬¬¬ƒ¬¬¬P¬× ¬„¬×¬‚¬× ¬‚ ¬¬¬„¬¬¬„¬¬¬¬¬„¬¬¬¬¬¬¬‡¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬…¬¬¬¬¬P¬× ¬„¬×¬‚¬× ¬‚ ¬¬¬„¬¬¬„¬¬¬¬…¬¬¬¬¬¬¬†¬¬¬¬ƒ¬¬‚¬¬‚¬¬¬ƒ¬¬‚¬¬„¬¬‚¬¬¬P¬× ¬„¬×¬‚¬× ¬‚ ¬¬¬ƒ¬¬¬¬ƒ¬¬¬†¬¬¬¬‡¬¬¬¬ ¬‡¬¬¬¬¬ƒ¬¬…¬¬¬¬…¬¬¬ƒ¬¬…¬¬¬ƒ¬¬¬P¬× ¬„¬×¬‚¬× ¬‚ ¬¬¬„¬¬¬„¬¬¬¬†¬¬¬¬†¬¬¬¬¬†¬¬¬¬¬¬†¬¬¬¬¬¬„¬¬‚¬¬…¬¬¬¬¬¬P¬× ¬„¬×¬‚¬× ¬‚¬¬„¬¬¬„¬¬¬ ¬¬¬ ¬…¬¬¬¬¬¬ ¬¬P¬× ¬„¬×¬‚¬× ¬‚¬¬„¬¬¬„¬¬¬ ¬¬¬¬¬…¬¬¬¬¬¬ ¬¬P¬× ¬„¬×¬‚¬× ¬‚¬¬ƒ¬¬¬¬¬ ¬¬…¬¬¬¬¬¬ ¬¬P¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬ƒ¬¬¬¬¬ƒ¬¬¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬ƒ¬¬¬…¬¬¬ƒ¬¬¬ƒ¬¬¬…¬¬¬¬¬¬T¬× ¬„¬×¬‚¬× ¬‚ ¬¬¬ƒ¬¬„¬¬¬„¬¬¬ƒ¬¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬†¬¬¬¬¬¬ƒ¬¬ƒ¬¬…¬¬¬ƒ¬¬¬T¬× ¬„¬×¬‚¬× ¬‚ ¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬¬„¬¬¬¬¬†¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬¬¬ƒ¬¬ƒ¬¬…¬¬¬¬¬T¬× ¬„¬×¬‚¬× ¬‚ ¬¬ƒ¬¬‚¬‰¬¬¬¬¬‚¬¬¬ƒ¬¬‚¬¬¬ƒ¬¬‡¬¬¬¬¬ƒ¬¬„¬¬¬¬¬ƒ¬¬‚¬¬„¬¬‚¬¬¬T¬× ¬„¬×¬‚¬× ¬‚ ¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬Œ¬¬¬¬¬¬¬¬…¬¬¬ƒ¬¬…¬¬¬ƒ¬¬¬T¬× ¬„¬×¬‚¬× ¬‚ ¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬„¬¬¬¬¬¬¬†¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬‚¬¬„¬¬‚¬¬…¬¬¬¬¬¬T¬× ¬„¬×¬‚¬× ¬‚¬¬¬¬¬¬¬¬ ¬¬T¬× ¬„¬×¬‚¬× ¬‚¬¬¬¬¬¬¬¬ ¬¬T¬× ¬„¬×¬‚¬× ¬‚¬¬ƒ¬¬"¬¬¬¬ ¬¬T¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬…¬¬¬¬¬¬¬‹¬¬¬¬¬¬¬¬…¬¬¬¬/¬× ¬„¬×¬‚¬× ¬…¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬¬1¬× ¬„¬×¬‚¬× ¬…¬¬¬ƒ¬¬¬¬¬¬†¬¬¬¬†¬¬¬¬¬¬2¬× ¬„¬×¬‚¬× ¬…¬¬¬ƒ¬¬¬¬‚¬¬…¬¬¬¬…¬¬¬ƒ¬¬¬¬3¬× ¬„¬×¬‚¬× ¬ˆ¬¬¬¬¬ƒ¬¬¬ƒ¬¬¬¬†¬¬¬¬†¬¬¬¬†¬¬¬¬¬1¬× ¬„¬×¬‚¬× ¬ˆ¬¬¬¬¬„¬¬¬¬¬†¬¬¬¬†¬¬¬¬…¬¬¬¬/¬× ¬„¬×¬‚¬× ¬ˆ¬¬¬¬¬„¬¬¬¬¬¬F¬× ¬„¬×¬‚¬× ¬‡¬¬¬¬ƒ¬¬¬¬¬F¬× ¬„¬×¬‚¬× ¬‡¬¬¬¬‚¬¬¬¬T¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚L¬R¬e¬3¬¬,¬× ¬„¬×¬‚¬× ¬‚L¬R¬e¬3¬¬,¬× ¬„¬×¬‚¬× ¬‚¬¬ƒ¬¬¬¬„¬¬¬‚¬¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬¬…¬¬¬¬¬¬¬ƒ¬¬¬¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬¬…¬¬¬¬¬¬¬ƒ¬¬¬¬‡¬¬¬¬¬¬‚¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬¬…¬¬¬¬¬¬¬ƒ¬¬¬¬„¬¬¬‚¬¬‚¬¬)¬× ¬„¬×¬‚¬× ¬‚¬¬ƒ¬¬„¬¬¬¬¬ƒ¬¬†¬¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬ƒ¬¬„¬¬¬¬ƒ¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬ƒ¬¬„¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬ƒ¬¬„¬¬¬¬¬ƒ¬¬ƒ¬¬(¬× ¬„¬×¬‚¬× ¬‚¬ƒ¬¬ƒ¬¬‡¬¬¬¬¬¬…¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬ƒ¬¬¬¬…¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬…¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬¬¬ƒ¬¬(¬× ¬„¬×¬‚¬× ¬‚¬ƒ¬¬‚¬ˆ¬¬¬¬¬¬¬‚¬Š¬¬¬¬¬¬¬„¬¬¬¬ƒ¬¬‚¬ˆ¬¬¬¬¬ƒ¬¬¬¬‚¬Š¬¬¬¬¬¬¬„¬¬¬¬ƒ¬¬‚¬ˆ¬¬¬¬¬¬¬‚¬¬ƒ¬¬¬¬‚¬Š¬¬¬¬¬¬¬„¬¬¬¬ƒ¬¬‚¬ˆ¬¬¬¬¬¬¬ƒ¬¬(¬× ¬„¬×¬‚¬× ¬‚¬¬†¬¬¬¬‰¬¬¬¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬‡¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬…¬¬¬‰¬¬¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬(¬× ¬„¬×¬‚¬× ¬‚¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬¬¬†¬¬¬¬‚¬¬…¬¬¬…¬¬¬¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬¬†¬¬¬¬†¬¬¬¬‚¬¬…¬¬¬…¬¬¬¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬¬„¬¬†¬¬¬¬¬¬†¬¬¬¬‚¬¬…¬¬¬…¬¬¬¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬¬‚¬¬‚¬¬)¬× ¬„¬×¬‚¬× ¬‚¬¬¬¬¬ ¬¬¬ ¬¬ ¬¬¬¬¬¬¬ ¬¬¬N¬× ¬„¬×¬‚¬× ¬‚ ¬¬¬¬ƒ¬¬¬ƒ¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬ƒ¬¬¬M¬× ¬„¬×¬‚¬× ¬‚ ¬¬ƒ¬¬‚¬¬¬ ¬„¬¬¬ƒ¬¬ ¬¬ ¬„¬¬¬ƒ¬¬¬¬¬ ¬„¬¬¬ƒ¬K¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚f¬O¬b¬0¬¬¬× ¬„¬×¬‚¬× ¬‚f¬O¬b¬0¬¬¬× ¬„¬×¬‚¬× ¬‚¬¬¬¬Ž¬¬¬¬¬¬¬¬ƒ¬¬¬†¬¬¬¬‚¬¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬¬…¬¬¬¬¬¬¬¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬¬…¬¬¬¬¬¬¬¬†¬¬¬¬¬¬‚¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬¬…¬¬¬¬¬¬¬¬ƒ¬¬¬‚¬¬‚¬¬¬× ¬„¬×¬‚¬× ¬‚¬¬¬¬ƒ¬¬‘¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬†¬¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬¬¬ƒ¬¬¬ƒ¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬¬× ¬„¬×¬‚¬× ¬‚¬¬„¬¬¬ƒ¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬¬¬…¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬„¬¬¬ƒ¬¬ƒ¬¬¬¬…¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬„¬¬¬ƒ¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬…¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬„¬¬¬ƒ¬¬¬¬ƒ¬¬¬× ¬„¬×¬‚¬× ¬‚¬¬„¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬‚¬¬ƒ¬¬¬¬‚¬Š¬¬¬¬¬¬¬„¬¬¬¬¬„¬¬¬ƒ¬¬ƒ¬¬¬¬‚¬Š¬¬¬¬¬¬¬„¬¬¬¬¬„¬¬¬ƒ¬¬¬¬‚¬¬ƒ¬¬¬¬‚¬Š¬¬¬¬¬¬¬„¬¬¬¬¬„¬¬¬ƒ¬¬¬¬ƒ¬¬¬× ¬„¬×¬‚¬× ¬‚¬¬„¬¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬¬‰¬¬¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬„¬¬¬ƒ¬¬¬‡¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬„¬¬¬ƒ¬¬¬…¬¬¬‰¬¬¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬„¬¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬¬× ¬„¬×¬‚¬× ¬‚¬¬¬¬ƒ¬¬¬‚¬ƒ¬¬Œ¬¬¬¬¬¬¬¬¬†¬¬¬¬‚¬¬…¬¬¬…¬¬¬¬¬¬¬¬¬¬†¬¬¬¬†¬¬¬¬‚¬¬…¬¬¬…¬¬¬¬¬¬¬¬¬¬„¬¬†¬¬¬¬¬¬†¬¬¬¬‚¬¬…¬¬¬…¬¬¬¬¬¬¬¬¬¬‚¬¬‚¬¬¬× ¬„¬×¬‚¬× ¬‚¬¬(¬¬¬¬ ¬¬¬¬¬ ¬¬¬¬¬¬¬ ¬¬¬9¬× ¬„¬×¬‚¬× ¬‚¬¬)¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬:¬× ¬„¬×¬‚¬× ¬‚¬4¬‚¬¬¬ ¬¬¬ ¬¬ ¬¬¬¬¬¬ ¬¬;¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬!¬¬F¬× ¬„¬×¬‚¬× ¬‚¬¬!¬¬F¬× ¬„¬×¬‚¬× ¬‚¬¬ƒ¬¬¬¬ƒ¬¬¬‡¬¬¬¬‚¬¬¬Š¬¬¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬¬‡¬¬¬¬‚¬¬¬Š¬¬¬¬¬¬¬¬ƒ¬¬¬ƒ¬¬¬‡¬¬¬¬‚¬¬¬¬¬¬¬¬¬¬¬¬¬‚¬¬ƒ¬¬¬ƒ¬¬¬‡¬¬¬¬‚¬¬Œ¬¬¬¬¬¬¬¬‚¬¬‚¬¬C¬× ¬„¬×¬‚¬× ¬‚¬Š¬¬¬¬¬¬¬¬„¬¬¬ƒ¬¬‡¬¬¬¬ƒ¬¬„¬¬¬‹¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬ƒ¬¬„¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬‡¬¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬‡¬¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬B¬× ¬„¬×¬‚¬× ¬‚¬Š¬¬¬¬¬¬¬‡¬¬¬¬¬¬‡¬¬¬¬ƒ¬¬„¬¬¬‹¬¬¬¬¬¬ ¬¬¬¬‡¬¬¬¬ƒ¬¬„¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬¬¬¬‡¬¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬¬‡¬¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬¬ƒ¬¬B¬× ¬„¬×¬‚¬× ¬‚¬Š¬¬¬¬¬¬‡¬¬¬¬¬¬‡¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬¬¬¬¬¬‡¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬¬¬ƒ¬¬¬¬¬‡¬¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬¬‚¬¬ƒ¬¬¬¬¬‡¬¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬¬ƒ¬¬B¬× ¬„¬×¬‚¬× ¬‚¬Š¬¬¬¬¬¬‡¬¬¬¬¬‹¬¬¬¬¬¬‚¬ƒ¬¬¬‹¬¬¬¬¬¬¬¬¬¬‹¬¬¬¬¬¬‚¬ƒ¬¬¬‹¬¬¬¬¬¬¬¬‡¬¬¬¬¬‹¬¬¬¬¬¬‚¬Œ¬¬¬¬¬¬¬¬¬…¬¬¬‰¬¬¬¬¬¬¬‹¬¬¬¬¬¬‚¬Œ¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬B¬× ¬„¬×¬‚¬× ¬‚¬‚¬…¬¬¬‡¬¬¬¬¬‹¬¬¬¬¬¬‚¬¬„¬¬‚¬¬ƒ¬¬ƒ¬¬¬¬¬‹¬¬¬¬¬¬‚¬¬„¬¬‚¬¬ƒ¬¬¬†¬¬¬¬‹¬¬¬¬¬¬‚¬¬ƒ¬ƒ¬¬„¬¬†¬¬¬¬¬¬‹¬¬¬¬¬¬‚¬¬ƒ¬ƒ¬¬‚¬¬‚¬¬C¬× ¬„¬×¬‚¬× ¬‚¬‚¬…¬¬¬‡¬¬¬¬¬¬¬ƒ¬"¬¬¬¬¬ƒ¬*¬¬¬¬ƒ¬¬¬¬¬¬¬ƒ¬f¬× ¬„¬×¬‚¬× ¬‚¬¬„¬¬¬¬„¬¬¬ƒ¬¬¬ƒ¬"¬¬ƒ¬¬ƒ¬¬¬ƒ¬*¬¬ƒ¬¬¬ƒ¬¬¬¬¬ƒ¬¬¬ƒ¬f¬× ¬„¬×¬‚¬× ¬‚¬¬ƒ¬¬¬¬ƒ¬¬¬ƒ¬¬‚¬¬¬ƒ¬¬¬ƒ¬¬‚¬¬ ¬ƒ¬¬¬ƒ¬¬‚¬¬¬¬ƒ¬¬¬ƒ¬¬‚¬b¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬u¬¬q¬× ¬„¬×¬‚¬× ¬‚¬u¬¬q¬× ¬„¬×¬‚¬× ¬‚¬¬¬Š¬¬¬¬¬¬¬ƒ¬¬¬ƒ¬¬¬¬„¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬„¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬‚¬¬ƒ¬¬¬¬¬„¬¬¬ƒ¬¬Œ¬¬¬¬¬¬¬¬‚¬¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬„¬¬¬‹¬¬¬¬¬¬¬¬¬Œ¬¬¬¬¬¬¬¬…¬¬¬ƒ¬¬„¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬¬…¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬Š¬¬¬¬¬¬¬…¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬m¬× ¬„¬×¬‚¬× ¬‚¬¬„¬¬¬‹¬¬¬¬¬¬ ¬¬Š¬¬¬¬¬¬¬…¬¬¬ƒ¬¬„¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬¬…¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬Š¬¬¬¬¬¬¬…¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬¬ƒ¬¬m¬× ¬„¬×¬‚¬× ¬‚¬¬¬‰¬¬¬¬¬¬¬¬‡¬¬¬¬„¬¬¬ƒ¬¬¬‰¬¬¬¬¬¬¬ƒ¬¬¬‡¬¬¬¬„¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬¬‚¬¬ƒ¬¬¬‡¬¬¬¬„¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬¬ƒ¬¬m¬× ¬„¬×¬‚¬× ¬‚¬ƒ¬¬¬‹¬¬¬¬¬¬¬¬¬‡¬¬¬¬Š¬¬¬¬¬ƒ¬¬¬‹¬¬¬¬¬¬¬¬‡¬¬¬¬‡¬¬¬¬Š¬¬¬¬¬Œ¬¬¬¬¬¬¬¬¬…¬¬¬‰¬¬¬¬¬¬‡¬¬¬¬Š¬¬¬¬¬Œ¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬m¬× ¬„¬×¬‚¬× ¬‚¬¬„¬¬‚¬¬ƒ¬¬ƒ¬¬¬¬‚¬‚¬‹¬¬¬¬¬¬¬„¬¬‚¬¬ƒ¬¬¬†¬¬¬‚¬‚¬‹¬¬¬¬¬¬¬ƒ¬ƒ¬¬„¬¬†¬¬¬¬¬‚¬‚¬‹¬¬¬¬¬¬¬ƒ¬ƒ¬¬‚¬¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬"¬¬‚¬‚¬*¬‚¬‚¬¬¬¬‚¬‚¬¬¬× ¬„¬×¬‚¬× ¬‚¬"¬¬ƒ¬¬¬*¬¬¬¬¬¬¬¬¬¬× ¬„¬×¬‚¬× ¬‚¬¬ƒ¬¬¬¬¬¬ ¬¬¬¬¬¬¬¬¬¬¬¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬M¬¬¬-¬N¬¬¬A¬× ¬„¬×¬‚¬× ¬‚¬¬M¬¬¬-¬N¬¬¬A¬× ¬„¬×¬‚¬× ¬‚ ¬¬‚¬‚¬¬‡¬¬¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬ƒ¬¬‚¬¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬¬…¬¬¬¬¬„¬¬¬‚¬‚¬¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬¬…¬¬¬¬¬¬„¬¬¬¬‚¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬¬…¬¬¬¬¬¬¬‚¬¬‚¬¬>¬× ¬„¬×¬‚¬× ¬‚ ¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬†¬¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬„¬¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬ƒ¬¬ƒ¬¬=¬× ¬„¬×¬‚¬× ¬‚¬ƒ¬¬¬ƒ¬¬‡¬¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬¬…¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬ƒ¬¬¬ƒ¬¬¬ƒ¬¬¬¬…¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬…¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬ƒ¬¬=¬× ¬„¬×¬‚¬× ¬‚¬¬„¬¬¬ƒ¬¬‡¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬¬¬‚¬Š¬¬¬¬¬¬¬„¬¬¬¬¬„¬¬¬ƒ¬¬¬ƒ¬¬¬¬‚¬Š¬¬¬¬¬¬¬„¬¬¬¬¬¬‚¬¬ƒ¬¬¬¬‚¬Š¬¬¬¬¬¬¬„¬¬¬¬¬¬ƒ¬¬=¬× ¬„¬×¬‚¬× ¬‚¬¬„¬¬¬ƒ¬¬‡¬¬¬¬¬ˆ¬¬¬¬¬‡¬¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬„¬¬¬ƒ¬¬¬‡¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬…¬¬¬‰¬¬¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬ƒ¬¬ƒ¬¬=¬× ¬„¬×¬‚¬× ¬‚¬ƒ¬¬‚¬¬‡¬¬¬¬¬¬ˆ¬¬¬¬¬‰¬¬¬¬¬¬¬¬†¬¬¬¬‚¬¬…¬¬¬…¬¬¬¬¬¬ƒ¬¬‚¬¬¬†¬¬¬¬†¬¬¬¬‚¬¬…¬¬¬…¬¬¬¬¬¬„¬¬†¬¬¬¬¬¬†¬¬¬¬‚¬¬…¬¬¬…¬¬¬¬¬¬‚¬¬‚¬¬>¬× ¬„¬×¬‚¬× ¬‚¬ƒ¬¬¬¬¬¬ ¬¬ƒ¬¬¬ ¬¬¬¬¬ ¬T¬× ¬„¬×¬‚¬× ¬‚¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬T¬× ¬„¬×¬‚¬× ¬‚¬¬ƒ¬¬¬‚¬¬¬ ¬¬¬ ¬¬ ¬¬¬¬¬ ¬T¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬…¬¬¬¬„¬¬¬‚¬¬‚¬ƒ¬¬¬¬¬ƒ¬¬¬¬…¬¬¬¬¬‚¬¬¬¬× ¬„¬×¬‚¬× ¬…¬¬¬…¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬„¬¬¬¬¬ƒ¬¬¬¬†¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬¬¬¬× ¬„¬×¬‚¬× ¬…¬¬¬ƒ¬¬¬¬„¬¬¬¬„¬¬¬¬¬ƒ¬¬¬„¬¬¬¬†¬¬¬¬¬¬¬¬× ¬„¬×¬‚¬× ¬…¬¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬¬„¬¬¬¬¬‚¬¬¬ƒ¬¬‚¬¬„¬¬¬‚¬¬¬¬¬× ¬„¬×¬‚¬× ¬…¬¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬„¬¬¬¬¬ƒ¬¬¬¬†¬¬¬¬¬†¬¬¬¬ƒ¬¬¬¬¬× ¬„¬×¬‚¬× ¬…¬¬¬ƒ¬¬¬‚¬‚¬¬‚¬„¬¬¬¬¬†¬¬¬¬¬†¬¬¬¬¬‚¬¬¬¬× ¬„¬×¬‚¬× ¬…¬¬¬¬ ¬#¬ ¬¬¬¬× ¬„¬×¬‚¬× ¬…¬¬¬ƒ¬¬ ¬#¬ ¬¬¬¬× ¬„¬×¬‚¬× ¬‚¬ƒ¬¬+¬0¬¬¬¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬¬ƒ¬¬ƒ¬¬‚¬¬¬¬6¬× ¬„¬×¬‚¬× ¬‚¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬:¬× ¬„¬×¬‚¬× ¬‚¬‡¬¬¬¬ƒ¬¬¬„¬¬¬¬9¬× ¬„¬×¬‚¬× ¬‚¬‡¬¬¬¬ƒ¬¬¬¬¬¬8¬× ¬„¬×¬‚¬× ¬‚¬¬¬Š¬¬¬¬¬¬‚¬¬¬7¬× ¬„¬×¬‚¬× ¬‚¬¬¬‰¬¬¬¬¬¬¬¬6¬× ¬„¬×¬‚¬× ¬‚¬¬¬¬¬¬¬6¬× ¬„¬×¬‚¬× ¬‚¬ ¬ ¬¬ƒ¬¬¬¬6¬× ¬„¬×¬‚¬× ¬‚¬ ¬ƒ¬¬¬¬¬7¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚$¬x¬¬5¬¬x¬× ¬„¬×¬‚¬× ¬‚$¬x¬¬9¬¬w¬× ¬„¬×¬‚¬× ¬‚¬¬¬Œ¬¬¬¬¬¬…¬¬¬¬¬¬¬¬Ž¬¬¬¬¬¬¬¬ƒ¬¬¬„¬¬¬„¬¬¬†¬¬¬¬†¬¬¬¬¬‚¬¬¬¬¬‚¬‚¬¬‡¬¬¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬‚¬¬‚¬¬¬…¬¬¬ƒ¬¬‚¬u¬× ¬„¬×¬‚¬× ¬‚¬—¬¬¬¬¬¬¬¬¬¬¬¬¬¬…¬¬¬¬¬¬¬ƒ¬¬‘¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬„¬¬¬†¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬¬„¬¬¬†¬¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬w¬× ¬„¬×¬‚¬× ¬‚¬Š¬¬¬¬¬¬¬Š¬¬¬¬¬¬…¬¬¬¬„¬¬¬ƒ¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬„¬¬¬†¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬ƒ¬¬¬ƒ¬¬‡¬¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬„¬¬¬†¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬w¬× ¬„¬×¬‚¬× ¬‚¬Š¬¬¬¬¬¬Š¬¬¬¬¬¬„¬¬¬¬„¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬‚¬¬ƒ¬¬„¬¬¬…¬¬¬…¬¬¬¬‚¬¬¬¬„¬¬¬ƒ¬¬‡¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬¬…¬¬¬¬‚¬‡¬¬¬¬¬ƒ¬¬w¬× ¬„¬×¬‚¬× ¬‚¬Š¬¬¬¬¬¬Š¬¬¬¬¬¬…¬¬¬¬¬„¬¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬¬‰¬¬¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬¬¬„¬¬¬ƒ¬¬‡¬¬¬¬¬ˆ¬¬¬¬¬‡¬¬¬¬¬†¬¬¬¬ƒ¬¬Ž¬¬¬¬¬¬¬¬w¬× ¬„¬×¬‚¬× ¬‚¬‚¬…¬¬¬‰¬¬¬¬…¬¬¬¬¬¬¬¬ƒ¬¬¬‚¬ƒ¬¬Š¬¬¬¬¬¬¬¬¬¬¬¬¬‰¬¬¬¬¬¬¬¬ƒ¬¬‚¬¬‡¬¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬„¬¬†¬¬¬¬‚¬¬‹¬¬¬¬¬¬‚¬u¬× ¬„¬×¬‚¬× ¬‚¬‚¬‚¬ƒ¬ ¬ ¬¬(¬¬¬ ¬¬ƒ¬¬¬¬¬¬¬× ¬„¬×¬‚¬× ¬‚¬¬¬ƒ¬ ¬ ¬¬)¬¬¬ ¬¬¬¬¬¬¬¬ ׄ¬×¬‚¬× ¬‚¬¬¬¬¬ ¬0¬¬¬¬ƒ¬¬+¬¬¬ƒ¬×¬‚¬× ¬‚¬¬m¬‚¬×¬‚¬× ¬‚¬¬n¬ƒ¬×¬‚¬× ¬‚ ¬¬+¬‚¬4¬¬v¬× ¬„¬×¬‚¬× ¬‚ ¬¬-¬¬4¬¬v¬× ¬„¬×¬‚¬× ¬„¬¬‚¬‚¬¬‡¬¬¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬¬„¬¬¬¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬¬…¬¬¬¬¬¬¬b¬× ¬„¬×¬‚¬× ¬„¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬…¬¬¬ƒ¬¬¬¬ƒ¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬f¬× ¬„¬×¬‚¬× ¬„¬¬ƒ¬¬¬ƒ¬¬‡¬¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬¬ƒ¬¬¬ƒ¬¬¬…¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬f¬ƒ×¬¬¬„¬×¬‚¬× ¬…¬¬¬„¬¬¬ƒ¬¬‡¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬¬‚¬¬¬ƒ¬¬¬‚¬Š¬¬¬¬¬¬¬„¬¬¬¬f¬×¬¬„¬×¬‚¬× ¬…¬¬¬„¬¬¬ƒ¬¬‡¬¬¬¬¬ˆ¬¬¬¬¬‡¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬f¬×¬¬„¬×¬‚¬× ¬‚¬ƒ¬¬‚¬¬‡¬¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬ˆ¬¬¬¬¬¬„¬¬¬¬†¬¬¬¬‚¬¬…¬¬¬…¬¬¬¬¬¬¬b¬×¬¬„¬×¬‚¬× ¬‚¬ƒ¬¬¬¬¬¬¬ ¬¬f¬× ¬„¬×¬‚¬× ¬‚¬¬¬¬¬¬¬¬¬f¬× ¬„¬×¬‚¬× ¬‚¬¬ƒ¬¬.¬¬¬ ¬¬f¬× ¬„¬×¬‚¬× ¬‚¬¬n¬× ¬„¬×¬‚¬× ¬‚¬¬n¬ ׄ¬×¬‚¬× ¬‚¬¬|¬ƒ¬×¬‚¬× ¬~‚¬×¬‚¬× ¬×¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬ ¬‚¬×¬¬¬¬ ¬‚¬×¬„¬¬¬¬Š¬¬¬¬¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬N¬‚¬× ¬†¬¬¬¬ƒ¬¬ƒ¬¬Š¬¬¬¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬†¬¬¬¬¬P¬‚¬×¬„¬¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬¬Q¬‚¬×¬¬¬‚¬‚¬¬ˆ¬¬¬¬¬‡¬¬¬¬¬ƒ¬¬„¬¬¬¬R¬‚¬× ¬†¬¬¬¬ƒ¬¬ƒ¬¬Š¬¬¬¬¬¬¬ˆ¬¬¬¬¬Œ¬¬¬¬¬¬¬¬P¬‚¬×¬„¬¬¬¬Š¬¬¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬…¬¬¬¬N¬‚¬×&¬¬¬¬d¬‚¬×&¬¬¬¬d¬‚¬×$¬†¬¬¬¬¬¬a¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×'¬¬E¬¬¬¬¬^¬¬‚¬×'¬¬D¬¬¬¬¬b¬¬‚¬× ¬¬¬¬¬‚¬‚¬¬¬¬¬‚¬‚¬¬‚¬¬¬‚¬¬ƒ¬¬¬¬¬ˆ¬¬¬¬¬¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬…¬¬¬¬¬¬¬ƒ¬¬¬¬¬…¬¬¬ƒ¬¬…¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬¬…¬¬¬¬¬¬¬¬‰¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬‡¬¬¬¬¬¬¬†¬¬¬¬ƒ¬¬¬‚¬× ¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬¬ƒ¬¬¬†¬¬¬¬¬¬¬¬¬¬„¬¬¬ˆ¬¬¬¬¬„¬¬¬¬ˆ¬¬¬¬¬¬†¬¬¬¬ƒ¬¬†¬¬¬¬¬¬¬¬ƒ¬¬„¬¬¬¬Œ¬¬¬¬¬¬¬¬…¬¬¬†¬¬¬¬ƒ¬¬¬¬†¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬¬‰¬¬¬¬¬¬¬„¬¬¬ƒ¬¬¬„¬¬¬‡¬¬¬¬„¬¬¬†¬¬¬¬ƒ¬¬¬‚¬× ¬¬ƒ¬¬¬ƒ¬¬¬ƒ¬¬Š¬¬¬¬¬¬„¬¬¬¬†¬¬¬¬¬¬¬¬¬¬„¬¬¬…¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬¬†¬¬¬¬¬¬¬ƒ¬¬‡¬¬¬¬†¬¬¬¬¬ƒ¬¬„¬¬¬ƒ¬¬¬¬†¬¬¬¬…¬¬¬¬¬Ž¬¬¬¬¬¬¬¬¬„¬¬¬ƒ¬¬„¬¬¬‡¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬¬‚¬× ¬¬ƒ¬¬¬¬„¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬…¬¬¬¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬‚¬¬„¬¬¬¬¬¬‚¬ˆ¬¬¬¬¬¬‚¬ƒ¬¬…¬¬¬¬ƒ¬¬¬¬†¬¬¬¬„¬¬‚¬¬¬Ž¬¬¬¬¬¬¬¬¬„¬¬¬‚¬¬„¬¬¬‡¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬¬‚¬× ¬„¬¬¬ƒ¬¬¬¬„¬¬¬ƒ¬¬ƒ¬¬¬„¬¬¬¬†¬¬¬¬¬¬¬¬¬„¬¬¬ˆ¬¬¬¬¬„¬¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬¬†¬¬¬¬¬¬‡¬¬¬¬‰¬¬¬¬¬¬ˆ¬¬¬¬¬¬…¬¬¬†¬¬¬¬‡¬¬¬¬¬†¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬’¬¬¬¬¬¬¬¬¬¬¬Š¬¬¬¬¬¬¬„¬¬¬‡¬¬¬¬“¬¬¬¬¬¬¬¬¬¬¬¬‚¬× ¬„¬¬¬„¬¬ ¬ƒ¬¬‚¬¬ƒ¬¬¬¬…¬¬¬‚¬¬†¬¬¬¬¬¬¬¬¬¬ˆ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬¬†¬¬¬¬¬¬„¬¬‰¬¬¬¬¬¬¬ˆ¬¬¬¬¬…¬¬¬¬†¬¬¬¬†¬¬¬¬†¬¬¬¬…¬¬¬¬¬„¬¬¬‘¬¬¬¬¬¬¬¬¬‡¬¬¬¬„¬¬‡¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬‚¬× ¬„¬¬¬„¬¬ ¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬0¬ ¬¬.¬¬„¬¬¬„¬¬¬¬ƒ¬:¬‚¬× ¬ƒ¬¬ƒ¬ ¬¬ ¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬0¬ ¬¬.¬¬„¬¬¬„¬¬¬¬ƒ¬:¬‚¬× ¬ƒ¬¬‚¬¬¬ ¬ƒ¬¬¬¬¬¬¬ ¬…¬¬J¬ ¬(¬¬¬ ¬¬¬ƒ¬¬*¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬×¬¬¬¬ƒ¬×¬llll‚¬ƒ¬×¬llll‚¬ƒ¬×¬lll l„ll¬ƒ¬×¬3l‚××llSl×…ll¬ƒ¬×¬3l‚××llSl× ¬†ll¬ƒ¬×¬l‚××l‚××l×l†××ll××l‚××l‚××l׆ll××ll×l×l‚××l××ll××ll××l××l×ll××ll××l××l××ll׉ll××l××ll׈ll××ll××l}l× ¬†ll¬ƒ¬×¬l„××ll×ll××ll××ll××ll××l‚××lž××ll××ll××l××l××ll××l××ll××l××l¾××ll××ll××l××ll××ll××l××ll××l××l××l××ll××l××ll××l××ll××l××ll××l}l׬‚¬Š¬¬ll¬ƒ¬×¬l„××llׄll××l×l‚××l××ll××ll××l××l××l‚××l‚××l¾××ll××ll××l××ll××ll××l××ll××l××l××l××ll××l××ll××l××ll××l××ll××l}l׬†¬¬¬†ll¬ƒ¬×¬lƒ××lׂll×l×l‚××lŽ××ll××ll××l××l׃l××l‚××l¤××ll××ll××l××ll××ll××l××ll××l××l××llוl××ll××l××ll××l××ll××l}l׬¬†ll¬ƒ¬×¬l×”l××ll××ll××l××l××l××l× ll××ll××ll××l××l××ll××l××ll××l××l„××ll×›l××l××ll××ll××l××ll××l××l××l‘××l××ll××l××ll××l׃l××l}l׬‚¬†ll¬ƒ¬×¬l׃l××l׊ll××l××l××l‚××lƒ××lׂll׆ll××ll×lׂll×l„××llׂllׂllׂll×l×lׂll×…l××llׂll×l~l׬¬†ll¬ƒ¬×¬lׄll××l‚××l‚××l‚××l‚×× l‚××l‚××lll׬†¬¬¬†ll¬ƒ¬×¬lׄll××l‚××l‚××l‚××l‚×× l‚××l‚××lll׬‚¬Š¬¬ll¬ƒ¬×¬l‚××l‚××l× l‚××l‚×× l‚×× l‚××ll l× ¬†ll¬ƒ¬×¬lll l× ¬†ll¬ƒ¬×¬lll l×…ll¬ƒ¬×¬llll‚¬ƒ¬×¬llll‚¬‚¬×¬¬¬¬¬×××׬¬¬ ¬ƒšzšlpb ©,3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ8¬3‚¬×¬¬¬R¬‚\¬‚¬×¬¬¬Q¬„××[¬‚¬×¬¬¬Q¬„××[¬‚¬×¬¬¬P¬„××\¬‚¬×¬¬¬J¬¬„××\¬‚¬×¬¬¬¬6‚×× ¬C¬‚¬×¬¬¬¬1ׂ×× ¬×A¬‚¬×¬¬¬¬‚×.ˆ×××× ‚ ¬×@¬‚¬‚¬×¬¬¬¬‚×.¬ׄ×׬ƒ ¬×@¬‚¬‚¬×¬¬¬¬‚×.¬×¬ƒ ¬×@¬‚¬‚¬×¬¬¬¬‚×.¬ ׬ƒ ¬×@¬‚¬‚¬×¬¬¬¬‚×.¬×¬ƒ ¬×@¬‚¬‚¬×¬¬¬¬‚׬¬¬¬×¬ƒ ¬×¬¬‚¬¬ƒ¬¬¬ƒ¬¬¬‚¬‚¬×¬¬¬¬‚׬¬„¬¬¬¬×¬ƒ ¬×¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬‚¬×¬¬¬¬‚׬¬‡¬¬¬¬ ¬× ¬ƒ ¬×¬¬¬ƒ¬¬ƒ¬¬¬¬‚¬‚¬×¬¬¬¬‚׬¬†¬¬¬ ¬× ¬ƒ ¬×¬¬‚¬¬ƒ¬¬‚¬¬‚¬‚¬×¬¬¬¬‚׬¬…¬¬ ¬× ¬ƒ ¬×¬ ¬‰¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬‚¬×¬¬¬¬‚׬¬…¬¬ ¬„×× ¬ƒ ¬×¬¬†¬¬¬¬¬ƒ¬¬¬‚¬‚¬×¬¬¬¬‚׬¬†¬¬¬ ¬ƒ× ¬ƒ ¬×¬¬¬‚¬‚¬×¬¬¬¬‚׬¬‡¬¬¬¬ ¬‚¬ƒ ¬×¬¬¬¬‚¬‚¬×¬¬¬¬‚׬¬¬¬ƒ ¬×¬¬¬‚¬‚¬×¬¬¬¬‚×>¬ƒ ¬×@¬‚¬‚¬×¬¬¬¬‚×>¬ƒ ¬×@¬‚¬‚¬×¬¬¬¬‚×>¬ƒ ¬×@¬‚¬‚¬×¬¬¬¬‚×>¬ƒ ¬×@¬‚¬‚¬×¬¬¬¬@ׂ ¬×@¬‚¬‚¬×¬¬¬¬C ¬B׬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬$¬‚¬×¬"¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬××Q׬F¬‚¬‚¬×¬×¬¬¬O¬×¬F¬‚¬‚¬×¬×¬(ÿ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬–׬׬׬׬׬׬׬׬׬׬׬‚¬×¬F¬‚¬‚¬×¬×¬ƒ¬‚¬ÿ׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬˜×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬ƒ¬×¬F¬‚¬‚¬×¬×¬„¬× ¬„¬×¬¬ÿ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬š×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬„¬×¬F¬‚¬‚¬×¬×¬„¬× ¬„¬×¬¬ÿ׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬ך¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬„¬×¬F¬‚¬‚¬×¬×¬„¬× ¬„¬×¬¬ÿ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬š×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬„¬×¬F¬‚¬‚¬×¬×¬„¬×¬¬„¬×¬¬ÿ׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬ך¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬„¬×¬F¬‚¬‚¬×¬×¬„¬×¬‚¬„¬×¬¬ÿ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬š×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬×¬‚¬„¬×¬F¬‚¬‚¬×¬×¬„¬×¬¬„¬×¬¬ÿ׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬ך¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬„¬×¬F¬‚¬‚¬×¬×¬„¬×¬¬„¬×¬¬ÿ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬š×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬×¬¬„¬×¬F¬‚¬‚¬×¬×¬„¬×¬¬„¬×¬¬ÿ׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬ך¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬„¬×¬F¬‚¬‚¬×¬×¬„¬×¬‚¬„¬×¬¬ÿ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬š×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬×¬‚¬„¬×¬F¬‚¬‚¬×¬×¬„¬×¬¬„¬×¬¬ÿ׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬ך¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬„¬× ¬×5׬‚¬‚¬×¬×¬„¬× ¬„¬×¬¬ÿ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬š×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬„¬× ¬¬3¬×¬‚¬‚¬×¬×¬„¬× ¬„¬×¬¬ÿ׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬ך¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬„¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬ƒ¬ ׃¬××ÿ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬™×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬ ׄ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬‚¬¬¬ÿ׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬׬—׬׬׬׬׬׬׬׬׬׬׬׬ƒ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬‚××Mׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬‚××Mׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬××=ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬ƒ¬U×××`ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬„¬¬ ׂ¬U×××`ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬„¬¬ ׂ¬××׃×׃×ׂ×××׃×××…×××…×××××ׂׂ×ׇ×××××ׇ××××׃××××;ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬„¬¬ ׂ¬××׃×׃×׃××׃×׃×׈×××××…××××׃×׃×ׇ×××׃×׈××××׃×××;ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬„¬¬ ׂ¬ׇ×××׃××ׄ××××׃××ׄ×××…××׃××׃×ׇ××××׈××××׃×××;ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬„¬¬ ׂ¬ׇ×××׃××××××׃×ׄ×××ׄ×××ׄ××׃×ׇ×××ׇ××××׃×××;ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬„¬¬ ׂ¬××׊×××××ׂ×××׎××××××××…××××ׄ××׃×ׇ××××׈××××ׇ××××;ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬„¬¬ ׂ¬××׉×××××××׆×××ׂ×…××××׃×ׂ×ׇ×××××׈××××׆××××<ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬„¬¬ ׂ¬××××××× ×ƒ××××Jׂ¬× ¬ƒ× ×%ׂ¬×¬‚¬‚¬×¬×¬„¬¬ ×…¬×× × ×׃××××× ××××Jׂ¬× ¬„× ×××׃×׃×ׂ×××ׂ¬×¬‚¬‚¬×¬×¬‚¬„×× ×ƒ××××× ×׃×××Gׂ¬× ¬„×××××׃×׃×׃×× ×‚¬×¬‚¬‚¬×¬×¬ƒ¬ l‚××=ׂ¬× ¬†××××ׇ×××׃××ׄ×××ׂ¬×¬‚¬‚¬×¬×¬ƒ¬ l„ll××=ׂ¬× ¬…×××ׇ×××׃×××××ׂ¬×¬‚¬‚¬×¬×¬ƒ¬××=ׂ¬× ¬ˆ××׆×××××׊×××××ׂ××ׂ¬×¬‚¬‚¬×¬×¬‚××Mׂ¬× ¬†×××…××××׉×××××××ׂ¬×¬‚¬‚¬×¬×¬‚××Mׂ¬× ¬„×ׇ××××××××ׂ¬×¬‚¬‚¬×¬×¬××=ׂ¬× ¬„××…×× × ×׃×××ׂ¬×¬‚¬‚¬×¬×¬ƒ¬,×××× ×‚¬× ¬„× ×ƒ× ×ƒ××××ׂ¬×¬‚¬‚¬×¬×¬„¬¬ ׂ¬,×××× ×‚¬× ¬ƒ× ×%ׂ¬×¬‚¬‚¬×¬×¬‡¬¬×׬ˆ¬×¬×׬××׃×׃×ׂ×××ׂׂ×ׇ×××××ׇ××××׃××××dׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬†¬¬×׬l„×׬××׃×׃×׃××׃×׃×ׇ×××׃×׈××××׃×××dׂ¬× ¬2‚¬×¬‚¬‚¬×¬×¬†¬¬×׬‰´#×׬ׇ×××׃××ׄ××׃××׃×ׇ××××׈××××׃×××dׂ¬× ¬4׬‚¬‚¬×¬×¬‰¬¬×׬„×׬ׇ×××׃×××××ׄ××׃×ׇ×××ׇ××××׃×××dׂ¬×¬F¬‚¬‚¬×¬×¬’¬¬×׬×׬××׊×××××ׂ××ׄ××׃×ׇ××××׈××××ׇ××××dׂ¬×¬F¬‚¬‚¬×¬×¬’¬¬×׬×׬××׉××××××׃×ׂ×ׇ×××××׈××××׆××××eׂ¬×¬F¬‚¬‚¬×¬×¬„¬¬׬…¬×׬×××××׃××××sׂ¬× ¬¬5¬‚¬‚¬×¬×¬„¬¬ ×…¬×× × ×׃××××××sׂ¬×¬F¬‚¬‚¬×¬×¬‚¬„×× ×ƒ××××׃×××pׂ¬× ¬¬ƒ¬¬…¬¬¬¬“¬¬¬¬¬¬¬¬¬¬¬¬¬¬‚¬‚¬×¬×¬ƒ¬ l‚××=ׂ¬× ¬¬ƒ¬¬‰¬¬¬¬¬¬‘¬¬¬¬¬¬¬¬¬¬¬¬‚¬‚¬×¬×¬ƒ¬ l„ll××=ׂ¬× ¬¬ƒ¬¬‰¬¬¬¬¬¬Œ¬¬¬¬¬¬¬¬¬¬‚¬‚¬×¬×¬ƒ¬××=ׂ¬× ¬¬ƒ¬¬ˆ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬‚¬‚¬×¬×¬‚××Mׂ¬× ¬ƒ¬¬¬‰¬¬¬¬¬¬‘¬¬¬¬¬¬¬¬¬¬¬¬‚¬‚¬×¬×¬‚××Mׂ¬× ¬¬…¬¬¬‰¬¬¬¬¬…¬¬¬ƒ¬¬…¬¬¬¬‚¬‚¬×¬×¬‚׃´׃o××@ׂ¬× ¬¬ƒ¬¬„¬¬¬(¬‚¬‚¬×¬×¬‚׃´׃oׂ××× ×‚¬× ¬¬ƒ¬¬„¬¬¬(¬‚¬‚¬×¬×¬‚׃´׃o×××× ×‚¬× ¬ƒ¬¬ ¬¬'¬‚¬‚¬×¬×¬‚׃´׃o××××××××××××…×××××××}ׂ¬×¬F¬‚¬‚¬×¬×¬‚׃´׃o×××××××××ׂ×ׄ×××…××׃×׃××~ׂ¬×¬F¬‚¬‚¬×¬×¬‚׃´׃o×ד××××××××××××ׄ×××…×××××~ׂ¬×¬F¬‚¬‚¬×¬×¬‚׃´׃×ד××××××××××××ׄ××ׄ×ׂ×××~ׂ¬×¬F¬‚¬‚¬×¬×¬‚׃~lׂ×ד×××××××××××׆×××××…××׃×׃××~ׂ¬×¬F¬‚¬‚¬×¬×¬‚ׂׂ×ד××××××××××׆×××…××××ׄ×××}ׂ¬×¬F¬‚¬‚¬×¬×¬ƒ×ˆ×××ׄ×××× ××××~ׂ¬×¬F¬‚¬‚¬×¬×¬ƒ×‰¬¬××ׄ×××× ××××~ׂ¬×¬F¬‚¬‚¬×¬×¬ƒ×¬†×׬¬×××…×× × ××× ×‚¬×¬F¬‚¬‚¬×¬×¬ƒ×׃××@ׂ¬×¬F¬‚¬‚¬×¬×¬‚××Mׂ¬×¬F¬‚¬‚¬×¬×¬‚××Mׂ¬×¬F¬‚¬‚¬×¬×¬‚××Mׂ¬×¬F¬‚¬‚¬×¬×¬‚××Mׂ¬×¬F¬‚¬‚¬×¬×¬„××××Fׂ¬×¬F¬‚¬‚¬×¬×¬Š×##××Eׂ¬×¬F¬‚¬‚¬×¬×¬Š×##׬××=ׂ¬×¬F¬‚¬‚¬×¬×¬ƒ#„ׂ×××××××…×××××ׄ×××××ׂׂ×ׂ×××Oׂ¬×¬F¬‚¬‚¬×¬×¬Š×##×××…××ׄ××××××׆×××׃×׃×׈×××××××׃××׆×××××Oׂ¬×¬F¬‚¬‚¬×¬×¬Š#×××…××ׇ××××ׄ××׆×××׃×׃××ׄ×× ×‡×××ׄ×××׆×××××Oׂ¬×¬F¬‚¬‚¬×¬×¬Š×#×#×׈××××׈××××××ׂ×ׂ×׃×׃×××ׇ××××××…×××××Oׂ¬×¬F¬‚¬‚¬×¬×¬†×#×#ƒ××׉×××××׉×××××××׃×׃××׈×××××××ׄ×××׆×××××Oׂ¬×¬F¬‚¬‚¬×¬×¬‹××#×#××׆×××׉××××××××׆×××ׂ×××ׂ××××…××ׂ×׆×××××Oׂ¬×¬F¬‚¬‚¬×¬×¬„×ׂ×××ׂ××××××××××Oׂ¬×¬F¬‚¬‚¬×¬×¬‚׆¬××ׂ××× ××× ×××Oׂ¬×¬F¬‚¬‚¬×¬×¬‚׊#×××××××× ×ƒ×××Oׂ¬×¬F¬‚¬‚¬×¬×¬‚׃#×××Aׂ¬×¬F¬‚¬‚¬×¬×¬‚×…××××Cׂ¬×¬F¬‚¬‚¬×¬×¬‚׆××××?ׂ¬×¬F¬‚¬‚¬×¬×¬‚ ׆××××>ׂ¬×¬F¬‚¬‚¬×¬×¬‚××Mׂ¬×¬F¬‚¬‚¬×¬×¬„×××××?ׂ¬×¬F¬‚¬‚¬×¬×¬ ‚ÒÒ#××*×××Tׂ¬×¬F¬‚¬‚¬×¬×¬ƒÒÒ#××)×××Sׂ¬×¬F¬‚¬‚¬×¬×¬‚ÒÒ×ׄ××××ׂׂ××××ׂׂ×ׂ×××׈××××××××Sׂ¬×¬F¬‚¬‚¬×¬×¬†ÒÒ„ÒÒ׊×××××××××׃×׃××××׃××׆××××ׄ××׈××××ׄ×××Sׂ¬×¬F¬‚¬‚¬×¬×¬‚Ò‚××Ò‚××׊××××××× ×ƒ××׃×׊×××××ׄ×××׆××××ׄ×××…××××Sׂ¬×¬×#׬‚¬‚¬×¬×¬ƒÒׂ×׊×××××× ×ׄ××׃×׊××××××××…××××׃×׆×××׃×××Sׂ¬×¬¬!¬×¬‚¬‚¬×¬×¬Š´××Ò…××´׉××××׃×× ×ׄ××׃×׃××ׄ×××׆××××ׄ××׈××××ׄ×××Sׂ¬×¬‚¬¬‚¬×¬‚¬‚¬×¬×¬‚´Ò´ׂ×…××× ×ƒ×ׂ×׃××××…××ׂ×׆×××××׈××××××××Sׂ¬×¬‚¬¬ƒ¬×¬‚¬‚¬×¬×¬‚´„ÒÒ´lׂ×…××× ×ƒ××××××××Sׂ¬×¬‚¬¬× ¬„¬×¬‚¬‚¬×¬×¬‚´„ÒÒÒ„´´l´×ׄ×××××× ×××××Sׂ¬×¬‚¬¬× ¬„¬×¬‚¬‚¬×¬×¬Š´l´´ÒÒÒ„´l´´×׃×ׂ×××× ×ƒ×××××Tׂ¬×¬‚¬¬× ¬„¬×¬‚¬‚¬×¬×¬‹l´llÒ××´l××=ׂ¬×¬‚¬¬× ¬„¬×¬‚¬‚¬×¬×¬‚l×l××=ׂ¬×¬‚¬¬×¬×¬„¬×¬‚¬‚¬×¬×¬‚l†××l××=ׂ¬×¬‚¬¬×¬ƒ×׬„¬×¬‚¬‚¬×¬×¬‚l‚l××=ׂ¬×¬‚¬¬×¬‚×׬„¬×¬‚¬‚¬×¬×¬‚××Mׂ¬×¬‚¬¬×¬ˆ×׬¬¬×¬‚¬‚¬×¬×¬„×× ××>ׂ¬×¬‚¬¬ƒ×¬¬¬„¬×¬‚¬‚¬×¬×¬…×× ¬$××*× ××[ׂ¬×¬‚¬¬× ¬„¬×¬‚¬‚¬×¬×¬…×× ×‚¬$××)× ××Zׂ¬×¬‚¬¬× ¬„¬×¬‚¬‚¬×¬×¬Œ×××lÒׂ¬×ׄ××××ׂׂ××××ׂׂ×ׂ×××ׇ×××××Zׂ¬×¬‚¬¬× ¬„¬×¬‚¬‚¬×¬×¬Œ×××ÒllÒׂ¬׊×××××××××׃×׃××××׃××׆××××ׄ××׈×××××Zׂ¬×¬‚¬¬× ¬„¬×¬‚¬‚¬×¬×¬Œ×××ÒÒ×ׂ¬׊××××××× ×ƒ××׃×׊×××××ׄ×××׆××××ׄ××׈×××××Zׂ¬×¬‚¬¬ ׄ¬×¬‚¬‚¬×¬×¬‹×××´×Òׂ¬׊×××××× ×ׄ××׃×׊××××××××…××××ׄ××׈×××××Zׂ¬×¬‚¬¬ƒ¬×¬‚¬‚¬×¬×¬‘×××l´Ò××׬׉××××׃×× ×ׄ××׃×׃××ׄ×××׆××××ׄ××׈×××××Zׂ¬×¬ ‚¬×¬‚¬‚¬×¬×¬†×××l‡¬#¬ׂ×…××× ×ƒ×ׂ×׃××××…××ׂ×׆×××××ׇ×××××Zׂ¬×¬"׬‚¬‚¬×¬×¬…××׉##¬ׂ×…××× ×ƒ××××××׈×××××Zׂ¬×¬F¬‚¬‚¬×¬×¬‘×××׬׬#¬×ׄ×××××× ×××׈×××××Zׂ¬×¬F¬‚¬‚¬×¬×¬‘×××××׬¬×¬×׃×ׂ×××× ×ƒ×××ׇ××××[ׂ¬×¬F¬‚¬‚¬×¬×¬×××׬××××>ׂ¬×¬F¬‚¬‚¬×¬×¬…××׈¬¬×׬×××?ׂ¬×¬F¬‚¬‚¬×¬×¬…××ׂ¬××@ׂ¬×/¬×¬×(¬‚××\¬‚¬‚¬×¬×¬„×× ××Aׂ¬×¬ ׬¬‚×'¬„¬×[¬‚¬‚¬×¬×¬‚××Mׂ¬×¬ ¬×¬×¬ׂ¬×¬׃¬¬×¬ƒ×¬¬ׂ¬¬׃¬¬×¬ƒ×¬¬ׄ¬¬×¬׆¬¬×¬¬×K¬‚¬‚¬×¬×¬‚××××>ׂ¬×¬‚ ¬×¬‚¬×¬‚¬×ƒ¬×¬‰¬×׬¬×¬‚׬‰¬×׬¬×¬†¬×¬×׬†¬×׬L¬‚¬‚¬×¬×¬‚׌××Ò~~××>ׂ¬×¬‚ ¬×¬½×¬¬¬×¬×¬¬¬×¬¬×׬¬¬×¬¬×׬¬×׬¬¬×¬¬×׬¬¬¬¬×¬ˆ×¬¬××N¬‚¬‚¬×¬×¬‘×××Ò~~××>ׂ¬×¬‚ ¬×¬‚׬„׬ׇ׬¬××׬¬×׬¬×׈׬¬×׬…׬׬ˆ×¬¬××N¬‚¬‚¬×¬×¬‘×××Ò~~×ׄ××××׃××׃××ׂ×××׃××׆×××׃××××ׂׂ×ׂ×××7ׂ¬×¬‚ ¬×¬‚׬ƒ×¬‡×׬¬×××׬×׬¬×‰××׬×׬†×׬׬ˆ×¬¬××N¬‚¬‚¬×¬×¬ƒll׊×××××××××׃×׆×××××ׂ××׃×׃×׉×××××׃×××׃××׆×××××7ׂ¬×¬‚ ¬×¬‚׬Š×¬¬×׬׫¬¬×׬¬×¬¬××׬×׬¬×¬¬×׬׬׬‹¬×׬×׬×K¬‚¬‚¬×¬×¬×llll×׊××××××× ×ƒ××׌×××××××××××׃×׉×××××׌××××××ׄ×××׆×××××7ׂ¬×¬‚ ¬×¬‚׬„׬¬‚¬¬¬†¬¬¬¬‚׬†¬¬¬¬†¬¬¬¬¬†¬¬¬L¬‚¬‚¬×¬×¬×llll×׊×××××× ×ׄ××׋×××××××…×××××׃×׉×××××׌×××××××××…×××××7ׂ¬×¬‚ ¬×¬‚׬¬‚× ¬‚×N¬‚¬‚¬×¬×¬‡×lll‡×׉××××׃×× ×ׄ××׈××××׃×××××××××××××××…×××ׄ×××׆×××××7ׂ¬×¬‚ ¬×¬×¬‚× ¬ƒ¬×M¬‚¬‚¬×¬×¬†×lˆ×ׂ×…××× ×ƒ×׈××××׃××׃×××××××××××…×××××…××ׂ×׆×××××7ׂ¬×¬‚ ¬×¬ ¬"¬N¬‚¬‚¬×¬×¬…lˆ×ׂ×…××× ×ƒ× ××××× ×ƒ×××××7ׂ¬×¬ ‚¬×¬¬‚¬‚¬×¬×¬‚lƒ×ׄ××××× ××××× × ×‚ ×××7ׂ¬×¬ ׬¬‚¬‚¬×¬×¬××l××׃×ׂ××× × ×××ׂ ׃×××7ׂ¬×¬F¬‚¬‚¬×¬×¬‘×××××××>ׂ¬×¬F¬‚¬‚¬×¬×¬†××׈×××>ׂ¬×¬F¬‚¬‚¬×¬×¬‚׌×××××>ׂ¬×¬×\¬×D¬‚¬‚¬×¬×¬‚׃×…××>ׂ¬×¬\¬‚×D¬‚¬‚¬×¬×¬‚××Mׂ¬×¬× ¬×¬ƒ×¬¬ׂ¬¬×¬ƒ×¬¬×¬×¬‰×׬׬׬¬×¬׃¬¬×¬„׬¬×¬×¬×¬׆¬¬×¬¬×¬‡×¬¬×׬׬ׂ¬¬×¬×/¬‚¬‚¬×¬×¬‚×××Bׂ¬× ¬‚×׬‚×׬‚׬ƒ×¬‚׬׬ƒ¬¬‚¬×¬¬×¬¬×׬׬¬Š¬×׬¬×¬¬ˆ×¬¬×¬¬¬×׬׬¬¬¬¬×ƒ¬×¬‚׬ƒ¬×¬‚¬×.¬‚¬‚¬×¬×¬‚׆¬×××Bׂ¬× ¬¬×¬‚¬׎¬×¬¬×׬¬×¬‰×¬×¬¬×¬ ×¬¬¬×¬×׬׬׬¬¬×¬¬×׬²¬×¬¬×׬¬×׬׬¬¬¬¬¬×¬¬×׬¬×׬¬¬×¬¬/¬‚¬‚¬×¬×¬…××…¬×××Bׂ¬× ¬‚¬×¬Ž×¬×¬¬×׬¬×¬‰×¬×¬¬×¬‚׬׬¬×׬׬׈׬¬×׬”××××׬¬×׬׬‘¬¬×¬¬×¬×××׬×.¬‚¬‚¬×¬×¬‡×¬×××ׂ×׃×׊×××××××××ׂ¬× ¬‚ ¬×¬“׬¬×¬×¬¬×׬¬×¬‰×¬×¬¬×¬‚׬×׬¬×׬׬‰××׬×׬•×¬¬×׬¬×׬¬×¬‹¬¬×׬¬×¬ƒ×׬××.¬‚¬‚¬×¬×¬×l׬×××׊××××××׉×××××׊××××××××ׂ¬× ¬‚ ¬×¬“¬×¬¬¬¬××׬××׬ˆ×׬×׬¡¬×׬׬¬××××׬×׬¬×¬×׬׬׬׬×׬××׬׬¬×¬×¬×׬¬×׬¬××/¬‚¬‚¬×¬×¬’×l׬¬¬××׊×××××××…×××׈××××××ׂ¬× ¬‚ ¬×¬„×׬‚׬׬„¬¬¬ƒ¬¬¬‰¬¬¬¬Š¬¬¬¬¬¬‰¬¬¬¬¬¬‰¬¬¬×¬¬„¬¬¬¬¬0¬‚¬‚¬×¬×¬Œ×l׬×ׇ×××׃×׈×××××××ׂ¬× ¬‚ ¬×¬ƒ¬¬‚׬‚׬‚×(¬‚׬‚×O¬‚¬‚¬×¬×¬Š×l׬¬×ׇ××××…×××׊××××××××ׂ¬× ¬‚¬× ¬‚׬‚׬‚׬)¬¬‚×O¬‚¬‚¬×¬×¬Œ×ll¬¬×¬ƒ××ׂׂ׆××××׊××××××××ׂ¬× ¬ƒ¬ƒ× ¬¬¬E¬P¬‚¬‚¬×¬×¬ƒ ×ׂׂ× ××××ׂ¬× ¬‚‚¬1¬‚¬‚¬×¬×¬†××׬ƒ×¬¬×××× ××××ׂ¬×¬¬3¬‚¬‚¬×¬×¬†××׬ƒ×¬¬×××× ×…××××ׂ¬×¬F¬‚¬‚¬×¬×¬…×× ×××=ׂ¬×¬F¬‚¬‚¬×¬×¬…×× ××=ׂ¬×¬F¬‚¬‚¬×¬×¬…×× l××=ׂ¬×¬F¬‚¬‚¬×¬×¬„××××=ׂ¬×¬F¬‚¬‚¬×¬×¬‚×ÿklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklkl×<ׂ¬×#¬L¬R¬‚¬‚¬×¬×¬‚žƒl$žlƒ$l$žlk×<ׂ¬×¬×_¬R¬‚¬‚¬×¬×¬‚ž†ll$llžkl×l×El×l×l×<ׂ¬× ¬‚×׬‚×× ¬ƒ¬¬¬¬…¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬†¬¬¬¬¬‡¬¬¬¬¬‚¬¬¬=¬‚¬‚¬×¬×¬‚ž‰ll$$lllžl×l×Dl×lƒ×lk×<ׂ¬× ¬ƒ¬¬׃¬¬×¬¬†¬¬¬¬ƒ¬¬†¬¬¬¬¬¬ƒ¬¬„¬¬¬¬¬„¬¬¬‘¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬<¬‚¬‚¬×¬×¬„žžl‡$ll$$l$ž„kll×l×l×l×l‚×lׂll×l×l×l‚×lׂllׂl×l×lׂl×l׃ll×l×l×l׈ll×ll×ll×lƒ×ll×<ׂ¬× ¬‚ׂ¬×¬¬„¬¬¬¬†¬¬¬¬¬ƒ¬¬‡¬¬¬¬‰¬¬¬¬¬ˆ¬¬¬¬¬„¬¬¬ƒ¬¬ƒ¬¬@¬‚¬‚¬×¬×¬„žž$ž$žl×l×l×l×lƒ×l×lƒ×l×l×l×l×lƒ×l×l×l†×l×ll×l×l×l×l×l×l×l„×ll×lˆ×l×ll×l×l†×ll×lk×<ׂ¬× ¬‚ׂׂ¬×¬¬ƒ¬¬‚¬¬„¬¬¬¬¬‚¬ˆ¬¬¬¬¬‰¬¬¬¬¬‡¬¬¬¬¬¬ƒ¬¬‚¬¬<¬‚¬‚¬×¬×¬‡ž$$ž$ž‚$$ž„kll×lƒ×l×l×l׃ll×lƒ×l×lŠ×ll×l×l×l×l„×ll×l×l†×l×ll×l×l×l×l×l×l×l„×ll×l…××ll×lƒ×ll×<ׂ¬× ¬„×ׄ×׬׬¬„¬¬¬¬†¬¬¬¬¬‡¬¬¬¬‰¬¬¬¬¬¬‰¬¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬¬ƒ¬¬ƒ¬¬<¬‚¬‚¬×¬×¬„ž$ž$ƒžž$žl×lƒ×l×l×l×l„×ll×lƒ×l×lŠ×ll×l×l×l×l×l×l×…l×ll×l×l×l×l×l×l×lƒ×ll׆ll××ll×…ll×lk×<ׂ¬× ¬„×ׄ×׬׬¬„¬¬¬†¬¬¬¬¬„¬¬‰¬¬¬¬¬¬¬‰¬¬¬¬¬¬‰¬¬¬¬¬¬„¬¬¬¬¬=¬‚¬‚¬×¬×¬ƒž$ž$‚ž$ž‡kll×ll×lƒ×ll×l×l„×ll×lƒ×l×lƒ×l×l×l„×ll×l×l†×l×ll×l×l×l×l×l×l„×ll×lˆ×l×ll×l×l†×ll×ll×<ׂ¬× ¬‚ׂׂ¬×¬¬3¬]¬‚¬‚¬×¬×¬‡žž$$ž$†%$ž*$žl„×ll×l„×ll× lƒ×l×lׂll׃ll×l×l…×ll×lׂll׆ll××ll×l×l×l×l×l×l׈ll×ll×ll×lƒ×lk×<ׂ¬× ¬‚ׂ¬×¬¬¬3¬]¬‚¬‚¬×¬×¬‚ž$ž$$ž$%$$žkll×ll×l„×ll× lƒ×l×l×l×l×l×l×l×l×l×l×lƒ×ll×<ׂ¬× ¬ƒ׃׬E¬]¬‚¬‚¬×¬×¬‚ž$ˆž$ž$ž*$žlƒ×l×lƒ×l× l×l× l×l×l×l×l×l×l×l×l×lƒ×lk×<ׂ¬× ¬‚‚¬1¬‚¬‚¬×¬×¬‚žƒ$$ž$‹žž$$žkll×l×l‚×l×l×l× lƒ×l×l×l×l×l×l×l×l×<ׂ¬×¬¬3¬‚¬‚¬×¬×¬‚ž$ž$žlk×<ׂ¬×¬F¬‚¬‚¬×¬×¬‚ž$ƒž$$žkl×<ׂ¬×¬F¬‚¬‚¬×¬×¬‚ž„$ž$$žlk×<ׂ¬×¬F¬‚¬‚¬×¬×¬‚ž‚$$žÿklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklkl×<ׂ¬×¬F¬‚¬‚¬×¬×¬‚××Mׂ¬×¬F¬‚¬‚¬×¬×¬‚׆´×o××=ׂ¬×¬F¬‚¬‚¬×¬×¬‚ׂl†Òl×o××=ׂ¬×¬F¬‚¬‚¬×¬×¬…××ll××>ׂ¬×¬F¬‚¬‚¬×¬×¬…×´†´l×׃××׃××׋×××××××׃××׊×××××׃×××××ׂׂ×ׂ×××Jׂ¬×¬F¬‚¬‚¬×¬×¬„×´…ׄ××׃×׃×××׉×××××׃×׊×××××׃××××׃××׆×××××Jׂ¬×¬F¬‚¬‚¬×¬×¬„´¬‚×׃×׃××××׈××××××׆×××׃××ׇ×××ׄ×××׆×××××Jׂ¬×¬F¬‚¬‚¬×¬×¬‰~´´~~¬ƒ¬×ׄ××ׄ××××ׇ×××ׂ×ׄ××׃×׃××ׇ××××××…×××××Jׂ¬×¬F¬‚¬‚¬×¬×¬†´†l´´¬¬×××׃×׃×××׉××××××××××××××ׇ×××××ׄ×××׆×××××Jׂ¬×¬F¬‚¬‚¬×¬×¬†~¬¬ˆll´´l~ׄ××׃××׃××׉××××׆×××ׇ×××׆××××××…××ׂ×׆×××××Jׂ¬×¬F¬‚¬‚¬×¬×¬’~×׬~l´´lׄ××׃××׃×× ×$×××××Jׂ¬×¬F¬‚¬‚¬×¬×¬¬×l´´lllׄ×××××׃×× ×#× ×××Jׂ¬×¬F¬‚¬‚¬×¬×¬Š¬××l´l„×××׃××××× ×ƒ×××Jׂ¬×¬F¬‚¬‚¬×¬×¬ƒ×~‚××>ׂ¬×¬F¬‚¬‚¬×¬×¬‰××׬~l‚××?ׂ¬×¬F¬‚¬‚¬×¬×¬‚ׄ¬´××@ׂ¬×¬F¬‚¬‚¬×¬×¬‚ׇ~~~××Bׂ¬×¬F¬‚¬‚¬×¬×¬‚××Mׂ¬×¬F¬‚¬‚¬×¬×¬‚××Mׂ¬×¬F¬‚¬‚¬×¬×¬××@ׂ¬×¬F¬‚¬‚¬×¬×¬ƒ ×××@ׂ¬×¬F¬‚¬‚¬×¬×¬„× ƒ×׋×××××××׃××׃×ׂ××××׃×׃××××××××××ׂׂ×ׂ×××.ׂ¬×¬F¬‚¬‚¬×¬×¬‡××××׉×××××׃×׃×׃×׃×××ׇ××××׆×××׃×××ׄ××׃××××׃××׆×××××.ׂ¬×¬F¬‚¬‚¬×¬×¬ƒ ××׈×××××׃×׃×××ׇ××××׆××××××ׄ×××ƒ× ×‡×××ׄ×××׆×××××.ׂ¬×¬F¬‚¬‚¬×¬×¬„׃×××ׇ×××ׂ×׃×ׂׂ××ׇ×××××…××ׂ×××ׄ×××ƒ× ×‡××××××…×××××.ׂ¬×¬F¬‚¬‚¬×¬×¬„×ׂ××׉×××××׉××××׃×׃×××ׄ××׆×××׃××׆××××׃××××ׄ×××׆×××××.ׂ¬×¬F¬‚¬‚¬×¬×¬ƒ×ƒ×××׉××××׆×××ׂ××××ׄ×׆××××××׆×××××××…××ׂ×׆×××××.ׂ¬×¬F¬‚¬‚¬×¬×¬ƒ~~× ×× ×××××××××××.ׂ¬×¬F¬‚¬‚¬×¬×¬ƒ~‚~× ×× ××ׄ×××××× ×××.ׂ¬×¬F¬‚¬‚¬×¬×¬‚׃×ׂ×× ××××× ×ƒ×××.ׂ¬×¬F¬‚¬‚¬×¬×¬‚ׂ×…××××>ׂ¬×¬F¬‚¬‚¬×¬×¬‚ׂׂ××?ׂ¬×¬F¬‚¬‚¬×¬×¬‚ׇ×××××?ׂ¬×¬F¬‚¬‚¬×¬×¬‚ ×××Bׂ¬×¬F¬‚¬‚¬×¬×¬‚××Mׂ¬×¬F¬‚¬‚¬×¬×¬‚׬××Cׂ¬×¬F¬‚¬‚¬×¬×¬‚׬„××××?ׂ¬× ¬×"ׂ¬¬¬‚¬‚¬×¬×¬‚׬‚×××?ׂ¬× ¬¬ ¬„׬¬×¬‚¬‚¬×¬×¬‚×l××××׉××××ׄ××××׃×ׂ××׃××××ׂׂ×ׂ×××Cׂ¬× ¬‚××…¬×¬¬×¬‚¬‚¬‚¬×¬×¬‚×…o××××××××××××××××…××××׃×׃××׃××××׃××׆×××××Cׂ¬× ¬‚××…¬×¬¬×¬‚¬‚¬‚¬×¬×¬ƒ¬ˆ××o¬×ׄ××׃×ׇ××××׃××…×××׃××׃××׃××ׇ×××ׄ×××׆×××××Cׂ¬× ¬‚,×,×C×…¬×¬¬×¬¬‚¬‚¬‚¬×¬×¬‚¬‡o¬×׃××…×××ׇ××××׃××…××××ׄ××׃×׈××××ׇ××××××…×××××Cׂ¬× ¬‚,×,×C×…¬×¬¬×¬‚¬‚¬‚¬×¬×¬ƒ¬ˆ×o׬×ׄ××׃×׃××ׄ××׃××…××××ׄ××׃××ׇ×××××ׄ×××׆×××××Cׂ¬× ¬„×××ׂ׈×××××׉××××××…××××ׂ׈×××××׉××××××…×××××3×…¬×¬¬×¬‡¬¬¬¬¬‚¬‚¬‚¬×¬×¬ƒlˆ×o×l××׃××׃×ׄ×׃×ׄ×××׃×ׂ××׆×××××…××ׂ×׆×××××Cׂ¬× ¬…××× ×ƒ×׆×××׋×××××××…×××׃×׆×××׋×××××××…××××3×…¬×¬¬×¬‚¬‚¬‚¬×¬×¬…××oׄo××o×××× × ×ƒ××××××××Cׂ¬× ¬…×××ׄ×××…××׋×××××××…××ׄ×××…××׋×××××××…×××3×…¬×¬¬×¬‚¬‚¬‚¬×¬×¬‡××oׄ××o×××ׄ×× ××××× ×××Cׂ¬× ¬…×××ׄ××ׂ׊××××××ׄ××ׄ××ׂ׊××××××ׄ×××3×…¬×¬¬×¬‚¬‚¬‚¬×¬×¬ˆ××o×׬…×××o×××ƒ× ×××× × ×ƒ×××Cׂ¬× ¬…×××××ׄ××׋×××××××…××ׄ×××ׄ××׋×××××××…××××3×…¬×¬¬×¬‚¬‚¬‚¬×¬×¬„××o†×¬¬¬o××?ׂ¬× ¬…××ׄ××××׆×××ׂ××…×××…××××××׆×××ׂ××…×××…×××××3×…¬×¬¬×¬‚¬‚¬‚¬×¬×¬‚ׂ׬‚×××Bׂ¬× ¬…××××××××× ×3×…¬×¬¬×¬‚¬‚¬‚¬×¬×¬‚ׇ¬¬o¬¬l××Bׂ¬× ¬…××××××××××3×…¬×¬¬×¬‚¬‚¬‚¬×¬×¬‚×l××Bׂ¬× ¬„×××××××× ×3×…¬×¬¬×¬‚¬‚¬‚¬×¬×¬‚××Mׂ¬× ¬‚××…¬×¬¬×¬‚¬‚¬‚¬×¬×¬‚××Mׂ¬× ¬‚××…¬×¬¬×¬‚¬‚¬‚¬×¬×¬‚× G××wׂ¬× ¬‚××…¬×¬¬×¬‚¬‚¬‚¬×¬×¬‚××G××wׂ¬× ¬…¬×¬¬×¬‚¬‚¬‚¬×¬×¬×׬×××××…×××××ׄ××××××…×××××××hׂ¬× ¬!ƒ×¬¬×¬‚¬‚¬×¬×¬‡¬#××××׆×××׃×׃×׈××××××ׄ×××…××׃×׃××iׂ¬×¬F¬‚¬‚¬×¬×¬’##××××××ׄ××׆×××׃×׃××ׄ×××ׄ×××…×××××iׂ¬×¬F¬‚¬‚¬×¬×¬‡##ׄ×××ׂ×ׂ×׃×׃××××ׄ××ׄ×ׂ×××iׂ¬×¬F¬‚¬‚¬×¬×¬†## lƒ××××׃×׃××׈×××××׆×××××…××׃×׃××iׂ¬×¬¬*¬‚¬‚¬×¬×¬†## lƒ×××׆×××ׂ×××ׂ××׆×××…××××ׄ×××hׂ¬×¬F¬‚¬‚¬×¬×¬…##×××××××××iׂ¬× ¬‚¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬ƒ¬¬¬‚¬‚¬×¬×¬„# l×× ××××××iׂ¬× ¬¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬‚¬‚¬×¬×¬…# l××× ××wׂ¬× ¬¬¬ƒ¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬‚¬‚¬×¬×¬‚‰#¬#×#¬¬××Aׂ¬× ¬¬¬ƒ¬¬‡¬¬¬¬¬ƒ¬¬¬¬‚¬‚¬×¬×¬†¬#¬#„×##××Bׂ¬× ¬¬¬ƒ¬¬¬ˆ¬¬¬¬¬‡¬¬¬¬¬‚¬‚¬×¬×¬¬#¬#×#¬××Bׂ¬× ¬¬¬¬ˆ¬¬¬¬¬‰¬¬¬¬¬¬¬‚¬‚¬×¬×¬…×׬¬××Dׂ¬× ¬¬¬"¬‚¬‚¬×¬×¬‚××Mׂ¬× ¬¬¬"¬‚¬‚¬×¬×¬××=ׂ¬× ¬¬¬¬‚¬‚¬×¬×¬‡¬¬¬0××××ׂ¬×¬F¬‚¬‚¬×¬×¬‹¬¬ׂ¬0××××ׂ¬×¬F¬‚¬‚¬×¬×¬‹¬¬´´llׂ¬×׈×××׃×׉×××××××ׂׂ××××ׂׂ×ׂ×××`ׂ¬×¬F¬‚¬‚¬×¬×¬‚¬…lׄ¬¬×ב×××××××××׉××××××׃×׃××××׃××׆×××××`ׂ¬×¬F¬‚¬‚¬×¬×¬‚¬‡×׬¬¬×××ׇ××××׉×××××׃××׃×׊×××××ׄ×××׆×××××`ׂ¬×¬F¬‚¬‚¬×¬×¬„¬‹׬¬×¬××ׄ××ׄ××׉××××××ׄ××׃×׊××××××××…×××××`ׂ¬×¬F¬‚¬‚¬×¬×¬†¬×ׇ¬×¬××׋××××××׉××××××ׄ××׃×׃××ׄ×××׆×××××`ׂ¬×¬F¬‚¬‚¬×¬×¬„¬¬ׇ¬¬¬¬¬××׋×××××ׂ×׃×׃×ׂ×׃××××…××ׂ×׆×××××`ׂ¬×¬F¬‚¬‚¬×¬×¬„¬¬׈¬¬¬¬×¬××׃××××××`ׂ¬×¬F¬‚¬‚¬×¬×¬„¬¬׆¬×¬¬×× ××× ×××`ׂ¬×¬F¬‚¬‚¬×¬×¬‚¬×#×× ×ƒ×××`ׂ¬×¬F¬‚¬‚¬×¬×¬ƒ¬ l‚××=ׂ¬×¬F¬‚¬‚¬×¬×¬ƒ¬ l„ll××=ׂ¬×¬F¬‚¬‚¬×¬×¬ƒ¬××=ׂ¬×¬F¬‚¬‚¬×¬×¬‚××Mׂ¬×¬F¬‚¬‚¬×¬×¬‚××Mׂ¬× ¬×5׬‚¬‚¬×¬×¬…~l×× ‚×ׂ¬× ¬¬3¬×¬‚¬‚¬×¬×¬ƒ¬†~´¬¬]ׂ×9׬ ׃¬]ׂ1ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬„¬¬׊l×××׬_××9×…¬¬¬׃¬_×0ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬„¬¬׊×׬×׬××××××××׃×׃×××××ׂ×׆××××××××××ׂׂ×ׂ×× ×…¬¬¬׃¬××׃×׃×ׂ×××׃×ׇ×××××׃×׃××ׂ××0ׂ¬× ¬‚××ׂ¬×¬‚¬‚¬×¬×¬‰¬¬×¬†×׬×ד××××××××××׃××ׄ××׈××××׌××××××׃××××…××׃××××׃××׆×××× ×„¬¬¬‡¬¬××׃×׃×׃××ׇ××××׈××××××׃×׆×××׃×ׂ/ׂ¬× ¬‚××ׂ¬×¬‚¬‚¬×¬×¬…¬¬×¬†×׬×׃××ׇ××××××ׄ××ׄ××׃×׆×××× ×׆××××ƒ× ×‡×××ׄ×××׆×××× ×…¬¬¬†¬ׇ×××׃××ׄ×× ×‡××××׈×××××׃×׆×××׉×××××.ׂ¬× ¬„×׈×××××׉××××××…××××××ׂ¬×¬‚¬‚¬×¬×¬…¬¬×¬‡¬×׬×׃×ׄ××׃×ׂ××׃×׃×××׃×׆×××××׆×××ׂ×ׇ××××××…×××× ×¬Š×¬¬ׇ×××׃×××× ×„××ׇ×××××׃×׃×׈×××××.ׂ¬× ¬…××׆×××׋×××××××…×××××ׂ¬×¬‚¬‚¬×¬×¬„¬¬ׇ¬¬×׬×׃×׋××××××׃×××׈××××׃×׆×××׃×××׆×××׃××××ׄ×××׆×××× ×¬‹¬××׊×××××ׂ×××׈××××××׃×׃×׉×××××.ׂ¬× ¬…×××…××׋×××××××…××××ׂ¬×¬‚¬‚¬×¬×¬„¬¬ׇ¬¬×׬×׃×׋×××××ׄ×××××ׂ׃××׆××××××…×××××××…××ׂ×׆×××× ׎¬×¬¬׬××׉×××××××ׄ×׈××××××ׂ׆×××׉×××××.ׂ¬× ¬…××ׂ׊××××××ׄ××××ׂ¬×¬‚¬‚¬×¬×¬„¬¬ ׂ¬×× ×××-××××× ×ˆ¬¬׃¬×××××××× ××Cׂ¬× ¬„××ׄ××׋×××××××…×××××ׂ¬×¬‚¬‚¬×¬×¬„¬¬ ׂ¬××ƒ× ×××-×× ×× ×ƒ¬×ׂ¬׃¬× × ×׃×××ׄ××× ××Cׂ¬× ¬…××׆×××ׂ××…×××…××××××ׂ¬×¬‚¬‚¬×¬×¬‚¬×ƒ×××,×× ×ƒ×× ×¬‚¬׃¬× ׃××××× ×׃×Cׂ¬× ¬…××× ××ׂ¬×¬‚¬‚¬×¬×¬ƒ¬ l‚××…¬¬¬׆¬¬¬×ׂ¬× ¬…×××××ׂ¬×¬‚¬‚¬×¬×¬ƒ¬ l„ll×׬ ׃¬×ׂ¬× ¬„××× ××ׂ¬×¬‚¬‚¬×¬×¬ƒ¬×׎¬××׬×ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬‚×.××ׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬‚××Mׂ¬× ¬‚×1ׂ¬×¬‚¬‚¬×¬×¬‚×.× ×ׂ¬× ¬2‚¬×¬‚¬‚¬×¬×¬‚× =××Z× ×‚¬-ׂSׂ ׂ¬× ¬4׬‚¬‚¬×¬×¬‚× ¬=××Z× ×‚¬/×T× ×‚¬×¬F¬‚¬‚¬×¬×¬ƒ×× ¬×××××××××ׂׂ××××ׂׂ×ׂ××5×ׂ¬ׂ¬××׃×׃×ׂ×××××׃×׌××××××××ׄ××׃××׃×׃××ׂ×× ×‚¬×¬F¬‚¬‚¬×¬×¬ˆ×׬ƒ¬×××××׃×׊×××××××׃×׃××××׃××׆××××5×׃¬ƒ×¬××׃×׃×׃××××…××׃×××××××××××׃×׆××××׃×׆×××׃×ׂ ׂ¬×¬F¬‚¬‚¬×¬×¬ˆ××׬†¬×××××׊××××××׃××׃×׊×××××ׄ×××׆××××5×׉¬¬׬ׇ×××׃××ׄ×××׉×××××׃××××××××××׃××…×××׃×׆×××׉××××× ×‚¬×¬¬¬¬‚¬‚¬×¬×¬‚׊¬¬¬¬××××××׊××××××ׄ××׃×׊××××××××…××××5׎×׬¬¬×¬ׇ×××׃×××××׉×××××׃×׌×××××××ׄ×׃×ׄ××׃×׃×׈××××× ×‚¬×¬¬*¬‚¬‚¬×¬×¬‚× ¬××××××׊××××××ׄ××׃×׃××ׄ×××׆××××5׃×׈׬××׊×××××ׂ××××××××××××××××××××׋××××××׃×׃×׉××××× ×‚¬× ¬¬¬…¬¬¬¬¬¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬ƒ¬¬{¬‚¬‚¬×¬×¬‚× ¬׃××××××…××ׂ׃×ׂ×׃××××…××ׂ×׆××××5׎×׬׬×׬××׉×××××××׌××××××ׂ×׈××××××׌×××××××ׂ׆×××׉××××× ×‚¬× ¬¬„¬¬¬…¬¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬‹¬¬¬¬¬¬¬}¬‚¬‚¬×¬×¬‚× ׃××××××…××ׂ׃×××××5׃×׃¬ׂ¬×××××××&× ×××ׂ¬× ¬¬„¬¬¬…¬¬¬¬¬¬ƒ¬¬‹¬¬¬¬¬¬¬¬‚¬‚¬×¬×¬‚××××××׃×ׄ××××× ××5׈×׬ׂ¬× × ×׃××××'× ×××ׂ¬× ¬¬„¬¬¬„¬¬‚¬¬¬¬ƒ¬¬‰¬¬¬¬¬¬}¬‚¬‚¬×¬×¬‚×××׃×× ×××××× ×ƒ××5×׬ׂ¬× ׃××××× ××××׃×ׂ¬× ¬†¬¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬…¬¬¬‹¬¬¬¬¬¬¬}¬‚¬‚¬×¬×¬‚ׇ×××× × ××ׂ¬× ¬¬†¬¬¬…¬¬¬¬¬„¬¬¬„¬¬‚¬¬ƒ¬¬ƒ¬¬{¬‚¬‚¬×¬×¬‚׆×××!× ×ƒ¬¬×ׂ¬× ¬¬¬¬¬‚¬‚¬×¬×¬‚×.× ×‚×ׂ¬× ¬¬¬¬¬‚¬‚¬×¬×¬‚×.× ¬×ׂ¬× ¬ ¬¬*¬‚¬‚¬×¬×¬N‚¬×¬F¬‚¬‚¬×¬×¬P׬F¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬×¬¬¬¬ ¬‚¬‚¬×¬,×<¬‚×××6ׂ¬‚¬×2¬×<¬‚¬¬¬7¬¬‚¬× ¬×(¬×<¬‚N¬„¬×e¬‚¬¬¬‚¬× ¬×(¬×<¬‚N¬„¬×e¬‚¬¬¬‚¬× ¬×(¬×<¬‚N¬„¬×e¬‚¬¬¬‚¬× ¬×(¬×¬!¬‚)¬$¬„¬×e¬‚¬¬¬‚¬× ¬×(¬×¬!¬‚)¬$¬„¬×e¬‚¬¬¬‚¬× ¬× ¬¬…¬¬¬¬‚ ¬× ¬¬¬…¬¬¬¬¬¬…¬¬¬‚ ¬¬¬†¬¬¬¬¬‡¬¬¬¬¬‚¬¬¬¬‚ ¬„¬× ¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬¬¬¬Ž¬¬¬¬¬¬¬¬ƒ¬¬¬ˆ¬¬¬¬ ¬‚¬¬¬‚¬× ¬× ¬¬…¬¬¬†¬¬¬ ¬× ¬¬„¬¬¬…¬¬¬ƒ¬¬‰¬¬¬¬¬ ¬‚ ¬¬¬¬‘¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬ ¬„¬× ¬¬‡¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬¬ƒ¬¬‘¬¬¬¬¬¬¬¬¬¬ƒ¬¬‰¬¬¬¬¬ ¬‚¬¬¬‚¬× ¬× ¬¬…¬¬¬ ¬× ¬¬„¬¬¬…¬¬¬¬¬¬‚ ¬‡¬¬¬¬¬ˆ¬¬¬¬¬„¬¬¬ƒ¬¬ƒ¬¬¬ ¬„¬× ¬¬‡¬¬¬¬¬ƒ¬¬¬¬„¬¬¬ƒ¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬ ¬‚¬¬¬‚¬× ¬× ¬¬„¬¬ƒ¬¬ ¬× ¬¬„¬¬¬„¬¬‚¬¬¬¬‚ ¬‡¬¬¬¬¬‡¬¬¬¬¬¬ƒ¬¬‚¬¬ƒ¬¬ ¬„¬× ¬¬‡¬¬¬¬¬‚¬‚¬¬¬„¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬‚¬¬ƒ¬¬ ¬‚¬¬¬‚¬× ¬× ¬‡¬¬¬¬¬†¬¬¬ ¬× ¬†¬¬¬¬¬…¬¬¬ƒ¬¬‰¬¬¬¬¬ ¬‚ ¬¬¬„¬¬¬ˆ¬¬¬¬¬†¬¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬ ¬„¬× ¬¬¬¬¬¬¬¬¬¬ƒ¬¬¬„¬¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ ¬‚¬¬¬‚¬× ¬× ¬¬…¬¬¬¬‚ ¬× ¬¬†¬¬¬…¬¬¬¬¬ˆ¬¬¬¬¬‚ ¬¬¬¬‰¬¬¬¬¬¬„¬¬¬¬¬¬‚ ¬„¬× ¬¬Š¬¬¬¬¬„¬¬¬¬¬¬ƒ¬¬¬‚¬ƒ¬¬Ž¬¬¬¬¬¬¬ ¬‚¬¬¬‚¬× ¬× ¬¬¬× ¬¬¬¬‚ ¬¬¬ ¬/¬„¬× ¬¬‡¬¬¬¬¬¬(¬¬‚¬¬¬‚¬× ¬× ¬¬¬× ¬¬¬¬‚ ¬ ¬ ¬/¬„¬× ¬¬‡¬¬¬¬¬¬)¬¬‚¬¬¬‚¬× ¬× ¬„¬¬¬× ¬ ¬!¬‚ ¬ ¬ ¬/¬„¬× ¬¬¬:¬‚¬¬¬‚¬× ¬×(¬×<¬‚N¬„¬×e¬‚¬¬¬‚¬× ¬×(¬×<¬‚N¬„¬×e¬‚¬¬¬‚¬× ¬×(¬×<¬‚N¬„¬×e¬‚¬¬¬‚¬× ¬×'¬×<¬ƒ×M¬¬×d¬¬¬¬‚¬× ¬&ׂ¬×<¬ƒ¬M׬d׬¬¬‚¬×3¬×;¬¬¬¬@¬‚¬×4¬;׬¬¬@¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬‚¬×¬¬¬¬1¬ƒ¬×¬llll/l‚¬ƒ¬×¬llll/l‚¬ƒ¬×¬llll l‚ll„ll¬ƒ¬×¬llll lׄll×…ll¬ƒ¬×¬llll l× ¬…ll× ¬†ll¬ƒ¬×¬l‚××l‚××l×l†××ll××lllpl׬‚¬…ll× ¬†ll¬ƒ¬×¬l„××ll×ll××ll××ll××ll××lllpl׬‚¬…ll׬‚¬Š¬¬ll¬ƒ¬×¬l„××llׄll××l×lllol× ¬…ll׬†¬¬¬†ll¬ƒ¬×¬lƒ××lׂll×l×lllol׬‚¬…ll׬¬†ll¬ƒ¬×¬l×”l××ll××ll××l××l××l××lllol׬‚¬…ll׬‚¬†ll¬ƒ¬×¬l׃l××l׊ll××l××l××lllol׬‚¬…ll׬¬†ll¬ƒ¬×¬lׄll××lllll׬†¬¬¬…ll׬†¬¬¬†ll¬ƒ¬×¬lׄll××lllll׬†¬¬¬…ll׬‚¬Š¬¬ll¬ƒ¬×¬l‚××l‚××lllll׬¬…ll× ¬†ll¬ƒ¬×¬llll l× ¬…ll× ¬†ll¬ƒ¬×¬llll l׃ll×…ll¬ƒ¬×¬llll/l‚¬ƒ¬×¬llll/l‚¬‚¬×¬¬¬¬1¬¬××××2׬¬¬¬4¬ššlpºÛ+3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿc¬^‚¬×¬¬¬\¬‚¬×¬¬¬‚¬K¬‚¬×¬¬¬„×׬J¬‚¬×¬¬¬„×׬J¬‚¬×¬¬ ¬„×׬K¬‚¬×~¬‚×׬K¬K¬‚¬×~¬×IC‚×׬×I¬×I¬‚¬×~¬×H¬„×:‰××ׂ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×:¬ˆ×××׬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×:¬ׄ×׬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×:¬×ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×¬%¬„׬¬ ×…¬¬×¬+¬‚¬×H¬‚¬‚¬×~¬×H¬„×:¬׆¬¬¬×H¬‚¬×H¬‚¬‚¬×~¬×¬¬¬‚¬¬ƒ¬¬¬¬„׬¬¬‰¬¬¬¬¬¬¬ ¬×¬ƒ¬×¬¬ƒ¬¬Š¬¬¬¬¬¬¬‚¬×¬¬‚¬¬ƒ¬¬¬ƒ¬¬¬‚¬‚¬×~¬×¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬„׬¬…¬¬¬ˆ¬¬¬¬¬ ¬×¬ƒ¬×¬¬ƒ¬¬Š¬¬¬¬¬¬¬‚¬×¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬‚¬×~¬×¬¬¬„¬¬¬ƒ¬¬ƒ¬¬„׬¬…¬¬¬…¬¬¬ ¬×¬ƒ¬×¬¬ƒ¬¬ƒ¬¬„¬¬¬¬‚¬×¬¬¬ƒ¬¬ƒ¬¬¬¬‚¬‚¬×~¬×¬¬¬¬‚¬¬‚¬„׬ˆ¬¬¬¬¬‡¬¬¬¬¬¬×¬ƒ¬×¬¬ƒ¬¬†¬¬¬¬¬¬‚¬×¬¬‚¬¬ƒ¬¬‚¬¬‚¬‚¬×~¬×¬¬¬ƒ¬¬…¬¬¬„׬‰¬¬¬¬¬¬ˆ¬¬¬¬¬ ¬×¬ƒ¬×¬–¬¬¬¬¬¬¬¬¬¬¬¬¬‚¬×¬ ¬‰¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬‚¬×~¬×¬¬¬¬¬†¬¬¬¬¬„׬†¬¬¬¬‰¬¬¬¬¬¬ ¬„×׬ƒ¬×¬¬“¬¬¬¬¬¬¬¬¬¬‚¬×¬¬†¬¬¬¬¬ƒ¬¬¬‚¬‚¬×~¬×¬¬¬¬¬„׬‚¬ ¬¬ ¬ƒ× ¬ƒ¬×¬¬¬‚¬×¬¬¬‚¬‚¬×~¬×¬¬¬¬„׬‚¬ ¬¬‚ ¬ƒ¬×¬¬¬‚¬×¬¬¬¬‚¬‚¬×~¬×¬¬¬„׬¬+¬ƒ¬×¬‚¬¬¬¬‚¬×¬¬¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬ƒHׂ¬×H¬‚¬×H¬‚¬‚¬×~¬J×L¬J׬J׬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬ƒ¬×¬J¬ƒ¬×¬J¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ×.¬×_׬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬¬]¬×¬ƒ¬×¬×5ׂ×.¬‚×Kׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬‚×K׬ƒ¬×¬ƒ¬×¬×5ׂ×.¬‚(××V×1ׂ¬× ¬„¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬‚,××X×0ׂ¬× ¬„¬×¬ƒ¬×¬×5ׂ×.¬‚××××׃××׃×׋×××××××׃×׃×××××׃××××׃×××׃××0ׂ¬× ¬„¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬‚××××××׃×׌×××××××׃×׃××××××××…××××××××0ׂ¬× ¬„¬×¬ƒ¬×¬×5ׂ×.¬‚×× ×××׃××…××ׄ×××׃×׃×××ׇ×××××××…××××ׄ××××0ׂ¬× ¬„¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬‚×× ×××׃×׈××××××ׄ××ׄ×××ׇ×××××׉×××××××ׄ××××0ׂ¬×¬¬„¬×¬ƒ¬×¬×5ׂ×.¬‚××× ×ׇ××××××××××××ׄ××׃×ׂ×׃××××××׉×××××××ׄ××××0ׂ¬×¬¬„¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬‚××× ×ׄ×׎××××××××׃××׃×׃×××××׉×××××××ׄ××××0ׂ¬×¬¬„¬×¬ƒ¬×¬×5ׂ×.¬‚××× ××××׃××׃×׃×××ׄ××ׂׄ××××ׄ××××0ׄ¬×¬¬¬„¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬‚××××××××××׃×ׂ ×׃×ׂׄ××××××××0ׂ¬× ¬„¬×¬ƒ¬×¬×5ׂ×.¬‚××× ×׃×× ××ׂ××‚× ×׃××ׄ×××××××1ׂ¬× ¬„¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬‚×Kׂ¬× ¬„¬×¬ƒ¬×¬×5ׂ×.¬‚×Kׂ¬× ¬„¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬‚×K׬ ׄ¬×¬ƒ¬×¬×5ׂ×.¬‚×K׬ƒ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬\‚¬×¬ƒ¬×¬×5ׂ×.¬^׬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ×?¬‚ ¬¬)¬‚%¬‚l¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×R¬¬*¬&¬k¬ƒ¬×¬×5ׂ×%¬¬¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬‚¬¬ƒ¬¬ˆ¬¬¬¬¬‚¬¬‚¬¬¬¬¬¬ˆ¬¬¬¬¬¬¬„¬¬…¬¬¬ƒ¬¬¬¬¬†¬¬¬¬¬‚¬¬†¬¬¬¬¬‚¬ƒ¬¬¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××%¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬‡¬¬¬¬‹¬¬¬¬¬¬¬¬…¬¬¬‰¬¬¬¬¬„¬¬¬ˆ¬¬¬¬¬Œ¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬¬ƒ¬×¬×5ׂ×$¬‡¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬„¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬¬¬ƒ¬¬¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×$¬‡¬¬¬¬¬ƒ¬¬‚¬¬ƒ¬¬‚¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬¬‚¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬†¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬¬ƒ¬¬¬¬ƒ¬×¬×5ׂ×#¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬¬‰¬¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬„¬¬¬ˆ¬¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬†¬¬¬¬‡¬¬¬¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××#¬¬¬‡¬¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬‚¬¬ƒ¬¬¬‚¬¬¬‰¬¬¬¬¬¬ƒ¬¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬¬ˆ¬¬¬¬¬¬†¬¬¬¬ƒ¬¬¬„¬¬„¬¬¬‚¬ƒ¬¬¬†¬¬¬¬¬‚¬†¬¬¬¬ƒ¬×¬×5ׂ×#¬¬¬„¬¬ ¬¬B¬¬¬¬b¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬ ¬ƒ¬ ¬¬B¬¬¬¬^¬¬¬ƒ¬×¬×5ׂ×"¬ ¬ƒ¬¬B¬¬¬…¬¬V¬¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#׬¬‚¬¬¬¬ƒ¬×¬×¬¬‚¬¬¬¬„¬×¬#×#×#×#×#ׂ#׬¬‚¬¬¬¬ƒ¬×¬×¬¬‚¬¬¬¬†¬×¬××#×#×#×#×#׬¬‚¬¬¬¬ƒ¬×¬×¬¬‚¬¬¬¬„¬×¬#×#×#×#×>¬¬¬ƒ¬×¬× ××$× ×¬¬¬†¬×¬××#×#×#ׄ#××:‚׬¬¬ƒ¬×¬׃׬¬!¬ƒ×¬¬¬„¬×¬#×#×#×#׃׬¬ ¬ƒ×¬¬¬ƒ¬×¬׃׬¬‹¬¬¬¬¬¬ƒ¬¬¬ ¬ƒ×¬¬¬†¬×¬××#×#×#×…#×׬¬ƒ¬¬Œ¬¬¬¬¬¬¬¬ƒ×¬¬¬ƒ¬×¬׃׬…¬¬¬¬Š¬¬¬¬¬¬¬ƒ×¬¬¬„¬×¬#×#×#×#׃׬¬ˆ¬¬¬¬¬„¬¬¬¬ƒ×¬¬¬ƒ¬×¬׃׬¬ ¬¬#¬ƒ×¬¬¬†¬×¬××#×#×#×…#×׬ ¬¬#¬ƒ×¬¬¬ƒ¬×¬׃׬8¬ƒ×¬¬¬„¬×¬#×#×#×#×>¬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××#׃׬¬¬„¬×¬#×#×#×#׃×× ×× × ×׃׬¬¬ƒ¬×¬׃×ׂׂ×׃׬¬¬†¬×¬××#×#×#×…#××׃××׃×׃׬¬¬ƒ¬×¬׃×׃××׃×׃׬¬¬„¬×¬#×#×#×#׃×׃××׃×׃׬ ×;¬Z¬¬D¬ƒ¬×¬׃×׃××׃×׃׬ ¬×¬¬¬D¬†¬×¬××#×#×#×…#××׃××׃×׃׬‚ ׂ¬×¬¬¬¬Ž¬¬¬¬¬¬¬¬ƒ¬¬¬†¬¬¬¬¬ƒ¬¬¬¬¬‚¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬¬‰¬¬¬¬¬¬‚¬…¬¬‚¬¬¬ƒ¬¬¬¬0¬ƒ¬×¬׃×׃××׃×׃׬‚×ׂ¬×¬¬¬¬ƒ¬¬‘¬¬¬¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬¬ƒ¬¬„¬¬¬¬¬†¬¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬Œ¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬5¬„¬×¬#×#×#×#׃×׃××׃×׃׬„××ׂ¬×¬¬„¬¬¬ƒ¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬¬†¬¬¬¬¬ˆ¬¬¬¬¬¬„¬¬¬†¬¬¬ ¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬¬0¬ƒ¬×¬׃×׃××׃×׃׬ƒ×ׂ¬×¬¬„¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬‚¬¬ƒ¬¬¬ƒ¬¬‚¬ˆ¬¬¬¬¬…¬¬¬¬¬‡¬¬¬¬‚¬¬„¬¬¬…¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬¬0¬†¬×¬××#×#×#×…#××׃××׃×׃׬†×ׄ×׬׬¬„¬¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬¬‰¬¬¬¬¬„¬¬¬†¬¬¬¬‰¬¬¬¬¬¬†¬¬¬¬Ž¬¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬†¬¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬¬/¬ƒ¬×¬×…×××××׃׬„×׃׬׬¬¬¬ƒ¬¬¬‚¬ƒ¬¬Š¬¬¬¬¬¬„¬¬¬†¬¬¬¬‰¬¬¬¬¬¬¬†¬¬¬¬Ž¬¬¬¬¬¬¬¬¬†¬¬¬¬†¬¬¬¬…¬¬¬‚¬‚¬¬¬‡¬¬¬¬.¬„¬×¬#×#×#×#׆××× ×ƒ××׃×׃׬‚ׅ׬׬¬(¬¬ƒ¬¬$¬¬¬4¬¬.¬ƒ¬×¬ׇ×××× ‚××׃×׃׬‚ׄ׬׬¬)¬¬‚¬#¬¬¬4¬„¬¬¬.¬†¬×¬××#×#×#׊#××××× ×ƒ××׃×׃׬‚ ׂ¬×¬0¬‚¬ƒ¬!¬¬I¬/¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬ ‚¬×¬h¬„¬×¬#×#×#×#׈×××× ×ƒ××׃×׃׬ ׬h¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬†¬×¬××#×#×#׊#××××× ×ƒ××׃×׃׬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬„¬×¬#×#×#×#׈×××× ×ƒ××׃×׃׬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬†¬×¬××#×#×#׊#××××× ×ƒ××׃×׃׬¬¬ƒ¬×¬×…××× ׃××׃×׃׬¬¬„¬×¬#×#×#×#׈×××× ×ƒ××׃×׃׬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬†¬×¬××#×#×#׊#××××× ×ƒ××׃×׃׬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬„¬×¬#×#×#×#׈×××× ×ƒ××׃×׃׬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬†¬×¬××#×#×#׊#××××× ×ƒ××׃×׃׬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬„¬×¬#×#×#×#׈×××× ×ƒ××׃×׃׬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬†¬×¬××#×#×#׊#××××× ×ƒ××׃×׃׬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬„¬×¬#×#×#×#׈×××× ×ƒ××׃×׃×#¬¬¬F¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬×&¬¬E¬†¬×¬××#×#×#׊#××××× ×ƒ××׃×׃׬‚×׬‚×׬¬ƒ¬¬„¬¬¬¬¬¬„¬¬¬¬¬%¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬ƒ¬¬׃¬¬×¬¬¬ƒ¬¬…¬¬¬ƒ¬¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬¬%¬„¬×¬#×#×#×#׈×××× ×ƒ××׃×׃׬‚ׂ¬×¬¬†¬¬¬¬…¬¬¬ƒ¬¬¬¬ƒ¬¬¬„¬¬¬¬¬%¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬‚ׂ¬×¬¬†¬¬¬¬„¬¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬¬‚¬¬¬%¬†¬×¬××#×#×#׊#××××× ×ƒ××׃×׃׬‚ׂ¬×¬¬„¬¬¬…¬¬¬ƒ¬¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬%¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬‚ׂ¬×¬¬†¬¬¬¬…¬¬¬¬¬¬¬¬‚¬¬¬%¬„¬×¬#×#×#×#׈×××× ×ƒ××׃×׃׬‚ׂ¬×¬¬ ¬¬¬¬%¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬‚ׂ¬×¬¬ ¬¬¬¬%¬†¬×¬××#×#×#׊#××××× ×ƒ××׃×׃׬ƒ׃׬¬¬¬¬¬%¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬‚‚¬j¬„¬×¬#×#×#×#׈×××× ×ƒ××׃×׃׬¬l¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬†¬×¬××#×#×#׊#××××× ×ƒ××׃×׃׬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬„¬×¬#×#×#×#׈×××× ×ƒ××׃×׃׬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬†¬×¬××#×#×#׊#××××× ×ƒ××׃×׃׬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃׬¬¬„¬×¬#×#×#×#׈×××× ×ƒ××׃×׃׬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃×#¬Û¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬†¬×¬××#×#×#׊#××××× ×ƒ××׃×׃×"¬[¬¬¬ƒ¬×¬׈×××× ×ƒ××׃×׃×#¬ ¬¬K¬„¬×¬#×#×#×#׈×××× ×ƒ××׃×׃׬׬¬C¬¬¬ƒ¬×¬׈×××× ×#׃׬‚×׬‚×׬¬¬Œ¬¬¬¬¬¬…¬¬¬¬¬‚¬¬¬¬Ž¬¬¬¬¬¬¬¬ƒ¬¬¬ˆ¬¬¬¬¬ ¬†¬×¬××#×#×#׊#××××× ×ƒ× ¬´´ƒ×׃׬ƒ¬¬׃¬¬×¬™¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬…¬¬¬¬¬ƒ¬¬ƒ¬¬‘¬¬¬¬¬¬¬¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬ƒ¬×¬׈×××× ×ƒ× ¬´´ƒ×׃׬‚ׂ¬×¬Š¬¬¬¬¬¬¬Š¬¬¬¬¬¬…¬¬¬¬ƒ¬¬ƒ¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬¬ ¬„¬×¬#×#×#×#׈×××× ×ƒ× ¬0´×´×´ׂ´´×´ׂ´´×´ׄ´´××´×.´ƒ×׃׬‚ׂׂ¬×¬Œ¬¬¬¬¬¬¬Š¬¬¬¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬¬Š¬¬¬¬¬¬‚¬¬ƒ¬¬„¬¬¬¬ƒ¬×¬׈×××× ×…×¬¬ƒ¬¬0´××´´××´××´××´××´×´׃´××´׃´××´‚××1´ƒ×׃׬„×ׄ×׬׬Š¬¬¬¬¬¬Š¬¬¬¬¬¬…¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬†¬×¬××#×#×#׊#××××× ×†×¬¬×„¬¬0´××´´××´××´××´××´×´×´×´׃´××´×/´ƒ×׃׬„×ׄ×׬׬„¬¬…¬¬¬‰¬¬¬¬…¬¬¬¬¬‚¬¬¬ƒ¬¬¬‚¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬×¬׈×××× ×…×¬¬ׄ¬¬0´ˆ××´´××´´×´×´×´×´„××´´ׂ´´×´‚××.´ƒ×׃׬‚ׂׂ¬×¬‚¬‚¬ƒ¬ ¬¬'¬¬¬„¬×¬#×#×#×#׈×××× ×ƒ× ¬0´†××´´××"´‚××´…××´××.´ƒ×׃׬‚ׂ¬×¬ƒ¬¬¬ƒ¬ ¬¬'¬¬¬¬ƒ¬×¬׈×××× ×ƒ× ¬0´×+´×/´ƒ×׃׬ƒ׃׬¬¬¬¬¬¬6¬†¬×¬××#×#×#׊#××××× ×ƒ× ¬´´ƒ×׃׬‚‚¬[¬¬¬ƒ¬×¬׈×××× ×‚×‚×׃׬¬l¬„¬×¬#×#×#×#׈×××× × ×× × ×׃×"¬Ý¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬×¬×…×××/׃׬¬¬†¬×¬××#×#×#׊#××××× ¬×׃×׃׬¬¬ƒ¬×¬׈×××× ¬×׃×׃׬¬¬„¬×¬#×#×#×#׈×××× ¬0××ׂ××ׂ××ׄ××ׂ0׃×׃׬¬¬ƒ¬×¬׊×××׬¬ƒ¬¬0×××××××׃×׃×ׂ0׃×׃׬¬¬†¬×¬××#×#×#×#××××׬¬×„¬¬0×××××××××׃×ׂ0׃×׃׬¬¬ƒ¬×¬׊×××׬¬ׄ¬¬0׈×××××××ׄ×ׂ××ׂ0׃×׃׬¬¬„¬×¬#×#×#×#׈×××× ¬0׆××"ׂ×0׃×׃׬¬¬ƒ¬×¬׈×××× ¬0×+ׂ0׃×׃×#¬ ¬¬O¬†¬×¬××#×#×#׊#××××× ¬×׃×׃׬׬¬N¬ƒ¬×¬ׇ×××ׂ×׃׬‚×׬‚×× ¬¬ƒ¬¬ƒ¬¬„¬¬¬¬‚¬¬¬¬Ž¬¬¬¬¬¬¬¬ƒ¬¬¬„¬¬¬¬„¬×¬#×#×#×#׆××× ×× × ×׃׬ƒ¬¬׃¬¬×¬¬†¬¬¬¬ƒ¬¬…¬¬¬¬¬ƒ¬¬ƒ¬¬‘¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬ƒ¬×¬×…×××#׃׬‚ׂ¬× ¬†¬¬¬¬ƒ¬¬…¬¬¬¬ƒ¬¬ƒ¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬¬†¬×¬××#×#×#×…#×××8׃׬‚ׂ¬× ¬†¬¬¬¬ƒ¬¬„¬¬¬¬ƒ¬¬ƒ¬¬¬Š¬¬¬¬¬¬‚¬¬ƒ¬¬¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬‰¬¬¬¬¬…¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬¬‰¬¬¬¬¬¬„¬×¬#×#×#×#ׂ×:‚׬‚ׂ¬×¬¬†¬¬¬„¬¬¬¬‚¬¬¬ƒ¬¬¬‚¬ƒ¬¬Š¬¬¬¬¬¬¬ƒ¬×¬׃׬8¬ƒ×¬‚ׂ¬×¬¬¬'¬¬¬†¬×¬××#×#×#×…#×׬¬¬X¬ƒ×¬‚ׂ¬×¬¬¬¬'¬¬¬ƒ¬×¬׃׬ ¬ ¬ X¬ƒ×¬ƒ׃׬¬ ¬¬¬=¬„¬×¬#×#×#×#׃׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬‚‚¬j¬ƒ¬×¬׃׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬¬l¬†¬×¬××#×#×#×…#×׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬¬¬ƒ¬×¬׃׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬¬¬„¬×¬#×#×#×#׃׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬¬¬ƒ¬×¬׃׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬¬¬†¬×¬××#×#×#×…#×׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬¬¬ƒ¬×¬׃׬ׂׂׂ¬ׂׂׂ¬ׂׂX¬ƒ×¬¬¬„¬×¬#×#×#×#׃׬¬¬X¬ƒ×¬¬¬ƒ¬×¬׃׬8¬ƒ×¬¬¬†¬×¬××#×#×#ׄ#××:‚׬¬¬ƒ¬×¬׃×××××!× ׂ2׃׬¬¬„¬×¬#×#×#×#׃××ׂ2׃׬¬¬ƒ¬×¬׃×ׇׂ×××ׂ×ׇ×××ׂׄ×ׂ×× ×׃ׂ×ׂ×××ׇ××ׄ××0׃׬¬¬†¬×¬××#×#×#×…#××ׂ׈××ׂ׋××× ×‚×…×× ×׃׎××××××׈××׈××/׃׬¬¬ƒ¬×¬׃×ׂ׆××ׂ׋××××…×××××…××××××××׆×׉×××/׃׬¬¬„¬×¬#×#×#×#׃×׋××××××ׄ××׊×××××××…×××ׂ×ׂ××׉×××××0׃׬¬¬ƒ¬×¬׃×ׂׂ ׂׂׂ׆××ׂׂ ׂ×…×ׂ5׃׬¬¬†¬×¬××#×#×#×…#××׆×× ××…× ×‰×××ׂ×…× ×‚×…×ׂ5׃׬¬¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#×>%¬‚¬ ¬¬G¬‚i¬ƒ¬×¬×ƒ× ¬B´‚××´‚××c´ƒ×'¬¬ ¬¬I¬h¬†¬×¬××#×#×#×…#×× ¬B´‚××´‚××c´ƒ×¬¬¬¬ƒ¬¬ƒ¬¬¬„¬¬¬¬¬ƒ¬¬¬¬‚¬¬‡¬¬¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬¬¬¬¬ˆ¬¬¬¬¬¬¬„¬¬…¬¬¬ƒ¬¬¬ƒ¬¬¬ƒ¬¬¬¬…¬¬¬¬¬¬ƒ¬×¬×ƒ× ¬;´‡××´´××´ׂ´´׉´´××´××´´ׂ´´׉´´××´××´´ׂ´´×>´ƒ×¬¬¬¬ƒ¬¬ƒ¬¬¬…¬¬¬ƒ¬¬¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬‡¬¬¬¬‹¬¬¬¬¬¬¬¬„¬¬¬¬¬†¬¬¬¬ƒ¬¬†¬¬¬¬¬„¬×¬#×#×#×#ׅ׬¬ƒ¬¬;´›××´´××´××´××´××´××´××´××´××´׎´××´´××´××´××´×>´ƒ×¬‡¬¬¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬ƒ¬¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬„¬¬¬¬¬„¬¬¬¬†¬¬¬¬¬ƒ¬×¬׆׬¬×„¬¬<´×–´´××´××´××´××´××´××´××´××´××´´××´××´××´×>´ƒ×¬‡¬¬¬¬¬ƒ¬¬‚¬¬‰¬¬¬¬¬¬‚¬¬¬ƒ¬¬‚¬¬ƒ¬¬‡¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬†¬¬¬¬„¬¬¬¬¬ƒ¬¬‚¬¬„¬¬¬¬¬†¬×¬××#×#×#ׇ#×׬¬ׄ¬¬<´ׂ´´ׂ´´׉´´××´××´´×´ׂ´´×…´××´´ׂ´´×?´ƒ×¬¬¬ˆ¬¬¬¬¬ƒ¬¬‰¬¬¬¬¬¬ƒ¬¬¬¬ƒ¬ ¬ƒ¬¬ƒ¬¬‡¬¬¬¬¬ˆ¬¬¬¬¬‡¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬¬„¬¬¬¬¬†¬¬¬¬¬†¬¬¬¬¬¬ƒ¬×¬×ƒ× ¬=´‚××´‚××´‚××M´ƒ× ¬¬¬‡¬¬¬¬„¬¬¬ˆ¬¬¬¬¬¬„¬¬¬‚¬¬‚¬¬‡¬¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬¬ˆ¬¬¬¬¬¬„¬¬¬†¬¬¬¬¬†¬¬¬¬¬¬„¬×¬#×#×#×#×ƒ× ¬=´‚××´…××´××´‚××I´ƒ× ¬¬¬„¬¬ ¬¬¬¬¬'¬¬¬¬¬ ¬ ¬¬ƒ¬×¬×ƒ× ¬´.´ƒ× ¬ ¬ƒ¬ ¬¬¬¬¬'¬¬¬¬¬ ¬¬¬¬†¬×¬××#×#×#ׄ#××:‚× ¬ ¬ƒ¬/¬¬ƒ¬¬$¬¬¬…¬¬9¬¬ƒ¬×¬× ××$× ×¬¬ ¬„¬×¬#×#×#×#×>¬¬ ¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬‚¬×¬¬¬\¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllZl‚¬ƒ¬×¬lll6l‚ll„ll¬ƒ¬×¬"l‚××l‚××Rl‚××l‚××!l‚××l{lׄll×…ll¬ƒ¬×¬"l‚××l‚××Ql‚××l‚×× l‚××l{l× ¬…ll× ¬†ll¬ƒ¬×¬l‚××l‚××l‚××l‚××lƒ××lׂll×l†××ll××lƒ××lׂll׃l××l×l׃l××lׄll××l×l‚××l׉ll××l××ll×l‚××l×l„××llׂll×l‚××lnl׬‚¬…ll× ¬†ll¬ƒ¬×¬l‚××l‚××l‚××l‚××l××l××ll××l××ll××l†××ll××l…××l××l‘××ll××l××ll××ll××l‚×× l†××ll××l†××ll××l›××ll××ll××l××l××l××ll××ll×× l™××ll××ll××ll××ll××l××ll××l‚××lnl׬‚¬…ll׬‚¬Š¬¬ll¬ƒ¬×¬l‚××l×l‚×× lבll××ll××l××ll××ll×l†××ll××l‘××ll××l××ll××ll××l‚××l†××ll××l†××ll××l†××ll××lׄll××l‚××lŠ××ll××ll××l†××ll××l‚××lnl× ¬…ll׬†¬¬¬†ll¬ƒ¬×¬l‚××l×l‚×× l—××ll××ll××ll××l××ll××ll×l‚××l‚××l׋l××ll××ll××l‚××l†××ll××l†××ll××l„××llׂllׂllׄll××l× lˆ××ll××llׇl××ll××l‚××lnl׬‚¬…ll׬¬†ll¬ƒ¬×¬lŒ××ll××ll××ll×l¤××ll××ll××ll××l××ll××l××ll××ll××ll××l‚××l××l××ll××ll××l‚××l×l†××ll××l›××ll××ll××l××l××l××ll××ll××l×l‘××ll××ll××l××ll××l‚××lnl׬‚¬…ll׬‚¬†ll¬ƒ¬×¬lŽ××ll××ll××ll×× l×lׂllבll××ll××ll××ll××lׂllׂllׂll× l‚××l‚×× l†××ll××l‚××l׉ll××l××ll×l‚×× l‚××lׂllׂll×l‚××lnl׬‚¬…ll׬¬†ll¬ƒ¬×¬lŽ××ll××ll××ll×× l×lŠ××ll××ll××l‚×× l‚××l‚×× l†××ll××l‚××l‚×× l‚××l‚××l‚××lnl׬†¬¬¬…ll׬†¬¬¬†ll¬ƒ¬×¬l…××l××l…××l×× l‚××l‚××l‚××l‚××l†××ll××l†××ll××l†××ll××l‚××l‚×× lŠ××ll××ll××l×lnl׬†¬¬¬…ll׬‚¬Š¬¬ll¬ƒ¬×¬l…××l××lƒ××l×l‚××l‚××l…××l××l‚××l×l×l×l‚××l‚××l×l‚××lnl׬¬…ll× ¬†ll¬ƒ¬×¬lll6l× ¬…ll× ¬†ll¬ƒ¬×¬lll6l׃ll×…ll¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllZl‚¬‚¬×¬¬¬\¬¬×××]׬¬¬_¬––lpºÕ#3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿc¬^‚¬×¬¬¬\¬‚¬×¬¬¬‚¬K¬‚¬×¬¬¬„×׬J¬‚¬×¬¬¬„×׬J¬‚¬×¬¬ ¬„×׬K¬‚¬×~¬‚×׬K¬K¬‚¬×~¬×IC‚×׬×I¬×I¬‚¬×~¬×H¬„×:‰××ׂ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×:¬ˆ×××׬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×:¬ׄ×׬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×:¬×ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×¬%¬„׬¬ ×…¬¬×¬+¬‚¬×H¬‚¬‚¬×~¬×H¬„×:¬׆¬¬¬×H¬‚¬×H¬‚¬‚¬×~¬×¬¬¬‚¬¬ƒ¬¬¬¬„׬¬¬‰¬¬¬¬¬¬¬ ¬×¬ƒ¬×¬¬ƒ¬¬Š¬¬¬¬¬¬¬‚¬×¬¬‚¬¬ƒ¬¬¬ƒ¬¬¬‚¬‚¬×~¬×¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬„׬¬…¬¬¬ˆ¬¬¬¬¬ ¬×¬ƒ¬×¬¬ƒ¬¬Š¬¬¬¬¬¬¬‚¬×¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬‚¬×~¬×¬¬¬„¬¬¬ƒ¬¬ƒ¬¬„׬¬…¬¬¬…¬¬¬ ¬×¬ƒ¬×¬¬ƒ¬¬ƒ¬¬„¬¬¬¬‚¬×¬¬¬ƒ¬¬ƒ¬¬¬¬‚¬‚¬×~¬×¬¬¬¬‚¬¬‚¬„׬ˆ¬¬¬¬¬‡¬¬¬¬¬¬×¬ƒ¬×¬¬ƒ¬¬†¬¬¬¬¬¬‚¬×¬¬‚¬¬ƒ¬¬‚¬¬‚¬‚¬×~¬×¬¬¬ƒ¬¬…¬¬¬„׬‰¬¬¬¬¬¬ˆ¬¬¬¬¬ ¬×¬ƒ¬×¬–¬¬¬¬¬¬¬¬¬¬¬¬¬‚¬×¬ ¬‰¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬‚¬×~¬×¬¬¬¬¬†¬¬¬¬¬„׬†¬¬¬¬‰¬¬¬¬¬¬ ¬„×׬ƒ¬×¬¬“¬¬¬¬¬¬¬¬¬¬‚¬×¬¬†¬¬¬¬¬ƒ¬¬¬‚¬‚¬×~¬×¬¬¬¬¬„׬‚¬ ¬¬ ¬ƒ× ¬ƒ¬×¬¬¬‚¬×¬¬¬‚¬‚¬×~¬×¬¬¬¬„׬‚¬ ¬¬‚ ¬ƒ¬×¬¬¬‚¬×¬¬¬¬‚¬‚¬×~¬×¬¬¬„׬¬+¬ƒ¬×¬‚¬¬¬¬‚¬×¬¬¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬ƒHׂ¬×H¬‚¬×H¬‚¬‚¬×~¬J×L¬J׬J׬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬ƒ¬×¬J¬ƒ¬×¬J¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×/¬¬¬¬‚¬¬…¬¬¬¬¬‚¬¬†¬¬¬¬¬…¬¬¬‚¬…¬¬¬¬¬¬ƒ¬¬¬‚¬t¬ƒ¬×¬×5ׂ×/¬¬…¬¬¬¬¬ƒ¬¬†¬¬¬¬¬†¬¬¬¬Œ¬¬¬¬¬¬¬ƒ¬¬¬†¬¬¬¬†¬¬¬¬…¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬v¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××/¬¬…¬¬¬¬¬ƒ¬¬†¬¬¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬¬¬¬„¬¬¬ƒ¬¬¬„¬¬¬¬v¬ƒ¬×¬×5ׂ×/¬‰¬¬¬¬¬¬¬¬ƒ¬¬‚¬¬¬¬¬ƒ¬¬†¬¬¬¬¬„¬¬¬¬ƒ¬¬‚¬¬ƒ¬¬‚¬¬v¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×/¬‰¬¬¬¬¬¬¬¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬¬†¬¬¬¬†¬¬¬¬…¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬v¬ƒ¬×¬×5ׂ×/¬†¬¬¬¬¬‚¬¬†¬¬¬¬¬‚¬ƒ¬¬¬†¬¬¬¬¬…¬¬¬‚¬…¬¬¬¬¬†¬¬¬¬¬v¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××/¬‚¬¬¬C¬ ¬ ¬v¬ƒ¬×¬×5ׂ×/¬‚¬¬¬C¬ ¬ ¬v¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×/¬¬¬6¬¬¬v¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬W¬¬ƒ¬×¬×5ׂ×.¬×U¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬×T¬‚¬¬ƒ¬×¬×5ׂ×.¬×T¬‚¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬×T¬‚¬¬ƒ¬×¬×5ׂ×.¬×T¬‚¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬×#¬×*¬‚¬¬ƒ¬×¬×5ׂ×.¬×"¬+¬‚¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬× ¬×¬×…¬¬×¬¬×¬×¬×¬†×׬׬׬׬׉¬¬×¬¬×¬¬×¬‚¬¬ƒ¬×¬×5ׂ×.¬× ¬‚¬×¬…׬¬¬×¬„¬×¬¬Œ¬×¬¬×׬¬ƒ¬×¬‰¬×¬¬¬¬¬‚¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬× ¬—׬¬¬×¬×¬¬×׬׬¬×¬¬×¬×¬¬×׬×׬׬¬¬×¬¬¬‚¬¬ƒ¬×¬×5ׂ×.¬× ¬‚׬’׬¬×××׬¬××׬”׬׬¬×׬¬×׬׬׬‚¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬× ¬‚׬„׬¬…×׬¬×¬–×׬¬×¬¬×׬¬×׬׬×׬‚¬¬ƒ¬×¬×5ׂ×.¬× ¬‚׬‚׬Œ×׬×׬¬×׬¬š¬×׬׬¬××׬×׬¬×׬‚¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬× ¬‚׬„׬¬†¬¬¬¬¬‚׬ƒ¬¬¬†¬¬¬¬¬‚¬¬ƒ¬×¬×5ׂ×.¬× ¬‚׬¬‚× ¬‚׬×+¬‚¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬× ¬× ¬ ¬…¬××,¬‚¬¬ƒ¬×¬×5ׂ×.¬× ¬¬-¬‚¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬×T¬‚¬¬ƒ¬×¬×5ׂ×.¬×T¬‚¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬×T¬‚¬¬ƒ¬×¬×5ׂ×.¬×T¬‚¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬×T¬‚¬¬ƒ¬×¬×5ׂ×.¬×T¬‚¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬×T¬‚¬¬ƒ¬×¬×5ׂ×.¬V׬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×$¬‚¬¬…¬¬¬¬¬‚¬¬†¬¬¬¬ƒ¬¬¬G¬ƒ¬×¬×5ׂ×#¬¬ƒ¬¬†¬¬¬¬¬†¬¬¬¬Œ¬¬¬¬¬¬¬ƒ¬¬¬I¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××#¬¬ƒ¬¬†¬¬¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬¬M¬ƒ¬×¬×5ׂ×#¬¬ƒ¬¬‚¬¬¬¬¬ƒ¬¬†¬¬¬¬¬I¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×#¬¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬¬I¬ƒ¬×¬×5ׂ×$¬‚¬¬†¬¬¬¬¬‚¬ƒ¬¬¬†¬¬¬¬¬J¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××'¬¬¬s¬ƒ¬×¬×5ׂ×'¬¬¬s¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×'¬¬{¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ×+¬‚¬ ¬‚h¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×-¬¬¬¬g¬ƒ¬×¬×5ׂ×#¬„¬¬¬¬¬„¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬¬‚¬¬¬¬‚¬¬…¬¬¬¬¬¬„¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬„¬¬‘¬¬¬¬¬¬¬¬¬¬¬‚¬…¬¬¬¬¬¬¬¬†¬×¬××#×#×#×#×#׬¬‚¬¬„¬¬¬…¬¬¬‡¬¬¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬ƒ¬¬¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬¬¬ƒ¬¬„¬¬¬ ¬…¬¬¬‡¬¬¬¬”¬¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬×¬×¬¬‚¬¬„¬¬¬†¬¬¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬ƒ¬¬¬„¬¬ ¬ˆ¬¬¬¬¬‡¬¬¬¬†¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬¬¬„¬¬¬„¬¬¬ƒ¬¬¬¬¬¬„¬×¬#×#×#×#×#ׂ#׬¬‚¬¬„¬¬¬†¬¬¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬¬¬¬ƒ¬¬‚¬¬‚¬¬ƒ¬¬ƒ¬¬¬¬‡¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬¬„¬¬¬¬¬ƒ¬¬‚¬¬¬¬ƒ¬×¬×¬¬‚¬¬„¬¬¬†¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬¬…¬¬¬‰¬¬¬¬¬¬†¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬…¬¬¬ƒ¬¬ƒ¬ ¬¬†¬×¬××#×#×#×#×#׬¬‚¬¬…¬¬¬†¬¬¬¬ƒ¬¬¬¬†¬¬¬…¬¬¬¬ƒ¬¬‚¬¬¬¬‚¬¬†¬¬¬¬‚¬¬¬¬‚¬¬¬…¬¬¬‰¬¬¬¬¬¬¬†¬¬¬¬ƒ¬¬¬¬†¬¬¬¬‰¬¬¬¬¬‚¬…¬¬¬¬¬„¬¬¬¬ƒ¬×¬×¬¬‚¬¬„¬¬'¬ ¬¬¬¬\¬¬ ¬"¬„¬×¬#×#×#×#×>¬„¬¬'¬ ¬¬¬¬\¬¬ ¬"¬ƒ¬×¬× ××$× ×¬¬¬ ¬ ¬¬¬¬M¬0¬†¬×¬××#×#×#ׄ#××:‚׬¬¬ƒ¬×¬׃׬¬!¬ƒ×¬¬¬„¬×¬#×#×#×#׃׬¬ ¬ƒ×¬¬¬ƒ¬×¬׃׬¬‹¬¬¬¬¬¬ƒ¬¬¬ ¬ƒ×¬¬¬†¬×¬××#×#×#×…#×׬¬ƒ¬¬Œ¬¬¬¬¬¬¬¬ƒ×¬¬¬ƒ¬×¬׃׬…¬¬¬¬Š¬¬¬¬¬¬¬ƒ×¬¬¬„¬×¬#×#×#×#׃׬¬ˆ¬¬¬¬¬„¬¬¬¬ƒ×¬¬¬ƒ¬×¬׃׬¬ ¬¬#¬ƒ×¬¬¬†¬×¬××#×#×#×…#×׬ ¬¬#¬ƒ×¬¬¬ƒ¬×¬׃׬8¬ƒ×¬¬¬„¬×¬#×#×#×#×>¬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××8׃×m¬*¬¬_¬„¬×¬#×#×#×#׃××8׃׬׬¬¬_¬ƒ¬×¬׃××8׃׬‚×׬‚×׬¬…¬¬¬¬¬¬„¬¬¬¬¬ƒ¬¬¬¬¬¬‰¬¬¬¬¬¬¬ˆ¬¬¬¬¬¬‚¬…¬¬‚¬¬¬ƒ¬¬¬O¬†¬×¬××#×#×#×…#×××8׃׬ƒ¬¬׃¬¬×¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬¬¬ƒ¬¬„¬¬¬¬¬‰¬¬¬¬¬¬¬ˆ¬¬¬¬¬¬Œ¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬P¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬„¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬¬„¬¬ ¬ˆ¬¬¬¬¬‡¬¬¬¬Ž¬¬¬¬¬¬¬¬¬ˆ¬¬¬¬ ¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬P¬„¬×¬#×#×#×#׃××8׃׬‚ׂ¬×¬¬¬‚¬¬‚¬¬ƒ¬¬ƒ¬¬¬¬‡¬¬¬¬ˆ¬¬¬¬¬Ž¬¬¬¬¬¬¬¬¬‡¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬P¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬¬ƒ¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬¬…¬¬¬‰¬¬¬¬¬¬’¬¬¬¬¬¬¬¬¬¬¬ˆ¬¬¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬P¬†¬×¬××#×#×#×…#×××8׃׬‚ׂ¬×¬¬¬†¬¬¬¬‚¬¬¬¬‚¬¬¬…¬¬¬‰¬¬¬¬¬¬¬‘¬¬¬¬¬¬¬¬¬ˆ¬¬¬¬¬…¬¬¬‚¬‚¬¬¬‡¬¬¬O¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬¬¬<¬„¬¬¬¬*¬P¬„¬×¬#×#×#×#׃××8׃׬‚ׂ¬×¬¬ ¬¬<¬„¬¬¬¬*¬P¬ƒ¬×¬׃××8׃׬ƒ׃׬¬¬¬¬ ¬…¬¬{¬†¬×¬××#×#×#×…#×××8׃׬‚‚¬j¬ƒ¬×¬׃××8׃׬¬l¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬ׂ×Io׃׬¬¬„¬×¬#×#×#×#׃×G×o׃׬¬¬ƒ¬×¬×ƒ× ×6×o׃׬¬¬†¬×¬××#×#×#×…#××G×o׃׬¬¬ƒ¬×¬׃××ׇ×××/×o׃׬¬¬„¬×¬#×#×#×#׃×ׂ׉×××0×o׃׬¬¬ƒ¬×¬׃×ׂ׉×××0×o׃×#¬¬¬¬P¬†¬×¬××#×#×#×…#××ׂ×ׄ××/×o׃׬׬¬¬P¬ƒ¬×¬׃×ׂ ׂ0×o׃׬‚×׬‚×׬¬…¬¬¬¬¬¬„¬¬¬¬¬ƒ¬¬¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬¬‡¬¬¬¬ˆ¬¬¬¬¬¬‚¬…¬¬‚¬¬¬ƒ¬¬¬@¬„¬×¬#×#×#×#׃××ׂ3×o׃׬ƒ¬¬׃¬¬×¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬¬¬ƒ¬¬„¬¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬‰¬¬¬¬¬ˆ¬¬¬¬¬¬Œ¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬A¬ƒ¬×¬׃×G×o׃׬‚ׂ¬×¬¬„¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬¬„¬¬ ¬ˆ¬¬¬¬¬‡¬¬¬¬Ž¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬ ¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬A¬†¬×¬××#×#×#×…#××G×o׃׬‚ׂ¬×¬¬¬‚¬¬‚¬¬ƒ¬¬ƒ¬¬¬¬‡¬¬¬¬ˆ¬¬¬¬¬Ž¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬A¬ƒ¬×¬׃×G×o׃׬‚ׂ¬×¬¬¬ƒ¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬¬…¬¬¬‰¬¬¬¬¬¬”¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬A¬„¬×¬#×#×#×#ׂ×Io׃׬‚ׂ¬×¬¬¬†¬¬¬¬‚¬¬¬¬‚¬¬¬…¬¬¬‰¬¬¬¬¬¬¬‘¬¬¬¬¬¬¬¬¬ƒ¬¬¬„¬¬ˆ¬¬¬¬¬…¬¬¬‚¬‚¬¬¬‡¬¬¬@¬ƒ¬×¬׃×G×o׃׬‚ׂ¬×¬¬¬¬<¬„¬¬¬¬¬*¬A¬†¬×¬××#×#×#×…#××G×o׃׬‚ׂ¬×¬¬ ¬¬<¬„¬¬¬¬¬*¬A¬ƒ¬×¬׃×G×o׃׬ƒ׃׬¬¬¬¬¬…¬¬l¬„¬×¬#×#×#×#׃×G×o׃׬‚‚¬j¬ƒ¬×¬׃××™××××××××××××'×o׃׬¬l¬†¬×¬××#×#×#×…#×××™××××××××××××&×o׃׬¬¬ƒ¬×¬׃×G×o׃׬¬¬„¬×¬#×#×#×#׃×G×o׃׬¬¬ƒ¬×¬׃×G×o׃׬¬¬†¬×¬××#×#×#×…#××G×o׃׬¬¬ƒ¬×¬׃×G×o׃׬¬¬„¬×¬#×#×#×#׃×G×o׃׬¬¬ƒ¬×¬ׂ×Io׃׬¬¬†¬×¬××#×#×#×…#××G×o׃׬¬¬ƒ¬×¬׃××"×o׃׬¬¬„¬×¬#×#×#×#׃×G×o׃×+¬;¬‚¬¬ƒ¬×¬׃××ׄ×××ׇ×××ׇ×××××o׃׬×T¬¬¬†¬×¬××#×#×#×…#××׆×׈××××׆××ׂ×o׃׬‚×׬‚×׬¬¬¬‚¬¬‚¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬‚¬ƒ¬¬¬†¬¬¬¬¬ƒ¬×¬×ƒ× ׂ׃××ׄ×××o׃׬ƒ¬¬׃¬¬×¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬†¬¬¬¬¬ƒ¬¬‡¬¬¬¬¬„¬×¬#×#×#×#׃×ׂׂ×ׄ×××××o׃׬‚ׂ¬×¬¬„¬¬¬¬ƒ¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬¬ƒ¬¬ˆ¬¬¬¬¬¬ƒ¬×¬׃××…×ׂ$×o׃׬‚ׂ¬×¬¬ƒ¬¬‚¬¬‚¬¬‚¬‚¬¬‡¬¬¬¬ƒ¬¬¬¬ƒ¬¬ˆ¬¬¬¬¬¬†¬×¬××#×#×#×…#×××ׂ$×o׃׬‚ׂ¬×¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬†¬¬¬¬¬Ž¬¬¬¬¬¬¬¬¬ƒ¬×¬׃×G×o׃׬‚ׂ¬×¬¬¬¬¬‚¬¬„¬¬¬ˆ¬¬¬¬¬‚¬Ž¬¬¬¬¬¬¬¬¬¬„¬×¬#×#×#×#׃×G×o׃׬‚ׂ¬×¬¬¬ ¬¬¬¬¬ƒ¬×¬׃××;×o׃׬‚ׂ¬×¬¬¬ ¬¬¬¬¬†¬×¬××#×#×#×…#××G×o׃׬ƒ׃׬¬¬¬…¬¬¬¬¬ƒ¬×¬׃××ׄ×××,×o׃׬‚‚¬j¬„¬×¬#×#×#×#׃×׆×׈××××.×o׃׬¬l¬ƒ¬×¬×ƒ× ׂ׃××,×o׃׬¬¬†¬×¬××#×#×#×…#××ׂׂ×ׄ××-×o׃׬¬¬ƒ¬×¬׃××…×;×o׃׬¬¬„¬×¬#×#×#×#׃××<×o׃׬¬¬ƒ¬×¬׃×G×o׃׬¬¬†¬×¬××#×#×#×…#××G×o׃׬¬¬ƒ¬×¬׃××:×o׃׬¬¬„¬×¬#×#×#×#׃×G×o׃׬¬¬ƒ¬×¬׃×׆×××ׂ×××'×o׃×#¬›¬¬¬¬¬¬¬¬¬¬¬¬¬¬H¬†¬×¬××#×#×#×…#×××××××××…×)×o׃×"¬¬c¬ƒ¬×¬׃×ׂ׋××××'×o׃×+¬ ¬¬H¬„¬×¬#×#×#×#׃×ׂׄ××ׄ××(×o׃׬׬¬c¬ƒ¬×¬׃×׉×××7×o׃׬‚×׬‚×׬¬¬ƒ¬¬¬ƒ¬¬‚¬¬H¬†¬×¬××#×#×#×…#××ׄ××7×o׃׬ƒ¬¬׃¬¬×¬ƒ¬¬…¬¬¬ƒ¬¬ƒ¬¬¬I¬ƒ¬×¬׃×G×o׃׬‚ׂ¬×¬¬…¬¬¬ƒ¬¬ƒ¬¬¬H¬„¬×¬#×#×#×#׃×G×o׃׬‚ׂׂ¬×¬‹¬¬¬¬¬¬¬ƒ¬¬‚¬¬I¬ƒ¬×¬׃×׃×7×o׃׬„×ׄ×׬׬‰¬¬¬¬¬¬‰¬¬¬¬¬‚¬H¬†¬×¬××#×#×#×…#××ׂ7×o׃׬„×ׄ×׬׬ˆ¬¬¬¬¬†¬¬¬¬¬J¬ƒ¬×¬׃×ׂ××××ׇ×××× ×o׃׬‚ׂׂ¬×¬‚¬¬¬H¬„¬×¬#×#×#×#׃××××××××*×o׃׬‚ׂ¬×¬„¬¬¬\¬ƒ¬×¬׃××××××××*×o׃׬ƒ׃׬¬¬¬H¬†¬×¬××#×#×#×…#××ׇ×××ׄ××+×o׃׬‚‚¬¬c¬ƒ¬×¬׃×׆××:×o׃׬#¬¬H¬„¬×¬#×#×#×#׃××;×q‚×"¬›¬¬¬¬¬¬¬¬¬¬¬¬¬¬I¬ƒ¬×¬׃×G×o¬ƒ×¬¬¬†¬×¬××#×#×#×…#××G׃¬¬X¬ƒ×¬¬¬ƒ¬×¬׃×G´„¬¬ X¬ƒ×¬¬¬„¬×¬#×#×#×#׃×´×:´…¬¬×¬ƒ×¬‚X¬ƒ×¬¬¬ƒ¬×¬׃×G´…¬¬×¬ƒ×¬‚X¬ƒ×¬¬¬†¬×¬××#×#×#×…#××´ƒ××´ׂ´´ׂ´´×´‡×´´×´´×%´…¬¬×¬ƒ×¬‚X¬ƒ×¬¬¬ƒ¬×¬׃×´ƒ××´׃´××´×/´…¬¬×¬ƒ×¬‚X¬ƒ×¬¬¬„¬×¬#×#×#×#׃×´×´×´×.´…¬¬×¬ƒ×¬‚X¬ƒ×¬¬¬ƒ¬×¬׃×´׆´´××´´×.´…¬¬×¬ƒ×¬‚X¬ƒ×¬¬¬†¬×¬××#×#×#×…#××´׃´××:´…¬¬×¬ƒ×¬‚X¬ƒ×¬¬¬ƒ¬×¬׃×´׃´××:´„¬¬ׂׂX¬ƒ×¬¬¬„¬×¬#×#×#×#׃×G´ƒ¬¬X¬ƒ×¬¬¬ƒ¬×¬׃×G´o¬ƒ×¬¬¬†¬×¬××#×#×#ׄ#××:‚׬¬¬ƒ¬×¬׃×´×´×××!× ׂ2׃׬¬¬„¬×¬#×#×#×#׃×´mׂ2׃׬¬¬ƒ¬×¬׃×´‚××´‡××´××´´×´×‚×ׇ×××ׂׄ×ׂ×× ×׃ׂ×ׂ×××ׇ××ׄ××0׃×]¬¬2¬‚m¬†¬×¬××#×#×#×…#××´‚××´ˆ××´××´××´ׂ׋××× ×‚×…×× ×׃׎××××××׈××׈××/׃×]¬¬4¬l¬ƒ¬×¬׃×´‚××´†××´××´×´ׂ׋××××…×××××…××××××××׆×׉×××/׃׬¬¬¬ƒ¬¬ƒ¬¬¬‚¬¬…¬¬¬¬¬¬„¬¬¬¬‚¬…¬¬‚¬¬¬ƒ¬¬¬¬¬¬¬ˆ¬¬¬¬¬¬¬„¬¬…¬¬¬ƒ¬¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬¬‚¬¬¬¬„¬×¬#×#×#×#׃×´׋´´××´××´´××´×ׄ××׊×××××××…×××ׂ×ׂ××׉×××××0׃׬¬¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬¬Œ¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬‡¬¬¬¬‹¬¬¬¬¬¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬ƒ¬¬¬ƒ¬×¬׃×´‚××´‚××´ׂׂׂ׆××ׂׂ ׂ×…×ׂ5׃׬‡¬¬¬¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬ƒ¬¬¬„¬¬ ¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬†¬×¬××#×#×#×…#××´׆´××´××´××…× ×‰×××ׂ×…× ×‚×…×ׂ5׃׬‡¬¬¬¬¬ƒ¬¬‚¬¬¬ƒ¬¬‚¬¬‚¬¬ƒ¬¬ƒ¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬†¬¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬¬¬ƒ¬×¬׃×´×"׃׬¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬¬„¬¬¬¬‰¬¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬¬¬„¬×¬#×#×#×#×>¬¬¬‡¬¬¬¬„¬¬¬‚¬¬†¬¬¬¬‚¬¬¬¬‚¬¬…¬¬¬‚¬‚¬¬¬‡¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬¬ˆ¬¬¬¬¬¬„¬¬¬†¬¬¬…¬¬¬¬ƒ¬¬‚¬¬¬¬ƒ¬×¬×ƒ× ¬B´‚××´‚××c´ƒ×¬¬¬„¬¬ ¬ ¬¬¬9¬¬¬¬¬¬¬ ¬ ¬¬†¬×¬××#×#×#×…#×× ¬B´‚××´‚××c´ƒ×¬ ¬ƒ¬ ¬ ¬¬¬9¬¬¬¬¬¬¬ ¬¬¬¬ƒ¬×¬×ƒ× ¬;´‡××´´××´ׂ´´׉´´××´××´´ׂ´´׉´´××´××´´ׂ´´×>´ƒ×¬ ¬ƒ¬¬¬S¬¬¬…¬¬¬ ¬ ¬¬¬„¬×¬#×#×#×#ׅ׬¬ƒ¬¬;´›××´´××´××´××´××´××´××´××´××´׎´××´´××´××´××´×>´ƒ×¬¬¬ƒ¬×¬׆׬¬×„¬¬<´×–´´××´××´××´××´××´××´××´××´××´´××´××´××´×>´ƒ×¬¬¬†¬×¬××#×#×#ׇ#×׬¬ׄ¬¬<´ׂ´´ׂ´´׉´´××´××´´×´ׂ´´×…´××´´ׂ´´×?´ƒ×¬¬¬ƒ¬×¬×ƒ× ¬=´‚××´‚××´‚××M´ƒ×¬¬ ¬„¬×¬#×#×#×#×ƒ× ¬=´‚××´…××´××´‚××I´ƒ×¬¬ ¬ƒ¬×¬×ƒ× ¬´.´ƒ×¬¬ ¬†¬×¬××#×#×#ׄ#××:‚׬¬ ¬ƒ¬×¬× ××$× ×¬¬ ¬„¬×¬#×#×#×#×>¬¬ ¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬‚¬×¬¬¬\¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllZl‚¬ƒ¬×¬lll6l‚ll„ll¬ƒ¬×¬"l‚××l‚××Rl‚××l‚××!l‚××l{lׄll×…ll¬ƒ¬×¬"l‚××l‚××Ql‚××l‚×× l‚××l{l× ¬…ll× ¬†ll¬ƒ¬×¬l‚××l‚××l‚××l‚××lƒ××lׂll×l†××ll××lƒ××lׂll׃l××l×l׃l××lׄll××l×l‚××l׉ll××l××ll×l‚××l×l„××llׂll×l×lׄll××l×lSl׬‚¬…ll× ¬†ll¬ƒ¬×¬l‚××l‚××l‚××l‚××l××l××ll××l××ll××l†××ll××l…××l××l‘××ll××l××ll××ll××l‚×× l†××ll××l†××ll××l›××ll××ll××l××l××l××ll××ll×× l™××ll××ll××ll××ll××l××ll××l‚×× l‰××ll××l××l†××ll××lRl׬‚¬…ll׬‚¬Š¬¬ll¬ƒ¬×¬l‚××l×l‚×× lבll××ll××l××ll××ll×l†××ll××l‘××ll××l××ll××ll××l‚××l†××ll××l†××ll××l†××ll××lׄll××l‚××lŠ××ll××ll××l†××ll××l‚××l‰××ll××l××l†××ll××lRl× ¬…ll׬†¬¬¬†ll¬ƒ¬×¬l‚××l×l‚×× l—××ll××ll××ll××l××ll××ll×l‚××l‚××l׋l××ll××ll××l‚××l†××ll××l†××ll××l„××llׂllׂllׄll××l× lˆ××ll××llׇl××ll××l‚××l‰××ll××l××l†××ll××lRl׬‚¬…ll׬¬†ll¬ƒ¬×¬lŒ××ll××ll××ll×l¤××ll××ll××ll××l××ll××l××ll××ll××ll××l‚××l××l××ll××ll××l‚××l×l†××ll××l›××ll××ll××l××l××l××ll××ll××l×l‘××ll××ll××l××ll××l‚××l‰××ll××l××l×lSl׬‚¬…ll׬‚¬†ll¬ƒ¬×¬lŽ××ll××ll××ll×× l×lׂllבll××ll××ll××ll××lׂllׂllׂll× l‚××l‚×× l†××ll××l‚××l׉ll××l××ll×l‚×× l‚××lׂllׂll× l‚××lׂll×l‚××lVl׬‚¬…ll׬¬†ll¬ƒ¬×¬lŽ××ll××ll××ll×× l×lŠ××ll××ll××l‚×× l‚××l‚×× l†××ll××l‚××l‚×× l‚××l‚××l‚×× l‚××l‚××lVl׬†¬¬¬…ll׬†¬¬¬†ll¬ƒ¬×¬l…××l××l…××l×× l‚××l‚××l‚××l‚××l†××ll××l†××ll××l†××ll××l‚××l‚×× lŠ××ll××ll××l†××ll×× l‚××l†××ll××lRl׬†¬¬¬…ll׬‚¬Š¬¬ll¬ƒ¬×¬l…××l××lƒ××l×l‚××l‚××l…××l××l‚××l×l×l×l‚××l‚××l×l×l‚××l×lSl׬¬…ll× ¬†ll¬ƒ¬×¬lll6l× ¬…ll× ¬†ll¬ƒ¬×¬lll6l׃ll×…ll¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllZl‚¬‚¬×¬¬¬\¬¬×××]׬¬¬_¬ä¡Û¡lpºk;3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿc¬^‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬‚¬J¬‚¬×¬¬¬„×׬I¬‚¬×¬¬¬„×׬I¬‚¬×~¬‚×׬K¬K¬‚¬×~¬×IE‚×׬×I¬×I¬‚¬×~¬×H¬„×;‚„×ׂ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×;¬Ž×¬¬×׬¬¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×;¬ˆ×××׬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×;¬ׄ×׬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×¬%¬„׬¬×¬×¬+¬‚¬×H¬‚¬‚¬×~¬×H¬„×;¬ ׄ¬×H¬‚¬×H¬‚¬‚¬×~¬×¬¬¬‚¬¬ƒ¬¬¬¬„׬¬¬‰¬¬¬¬¬¬¬ ¬×…¬¬×¬¬ƒ¬¬Š¬¬¬¬¬¬¬‚¬×¬¬‚¬¬ƒ¬¬¬ƒ¬¬¬‚¬‚¬×~¬×¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬„׬¬…¬¬¬ˆ¬¬¬¬¬ ¬׆¬¬¬×¬¬ƒ¬¬Š¬¬¬¬¬¬¬‚¬×¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬‚¬×~¬×¬¬¬„¬¬¬ƒ¬¬ƒ¬¬„׬¬…¬¬¬…¬¬¬ ¬×¬ƒ¬×¬¬ƒ¬¬ƒ¬¬„¬¬¬¬‚¬×¬¬¬ƒ¬¬ƒ¬¬¬¬‚¬‚¬×~¬×¬¬¬¬‚¬¬‚¬„׬ˆ¬¬¬¬¬‡¬¬¬¬¬ ¬×¬ƒ¬×¬¬ƒ¬¬†¬¬¬¬¬¬‚¬×¬¬‚¬¬ƒ¬¬‚¬¬‚¬‚¬×~¬×¬¬¬ƒ¬¬…¬¬¬„׬‰¬¬¬¬¬¬ˆ¬¬¬¬¬ ¬×¬ƒ¬×¬–¬¬¬¬¬¬¬¬¬¬¬¬¬‚¬×¬ ¬‰¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬‚¬×~¬×¬¬¬¬¬†¬¬¬¬¬„׬†¬¬¬¬‰¬¬¬¬¬¬ ¬×¬ƒ¬×¬¬“¬¬¬¬¬¬¬¬¬¬‚¬×¬¬†¬¬¬¬¬ƒ¬¬¬‚¬‚¬×~¬×¬¬¬¬¬„׬‚¬ ¬¬ ¬„×׬ƒ¬×¬¬¬‚¬×¬¬¬‚¬‚¬×~¬×¬¬¬¬„׬‚¬ ¬¬ƒ×¬ƒ¬×¬¬¬‚¬×¬¬¬¬‚¬‚¬×~¬×¬¬¬„׬¬ ¬‚ ¬ƒ¬×¬‚¬¬¬¬‚¬×¬¬¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬ƒHׂ¬×H¬‚¬×H¬‚¬‚¬×~¬J×L¬J׬J׬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬ƒ¬×¬J¬ƒ¬×¬J¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ×.¬ ×C¬¬"¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬ ¬×¬h¬ƒ¬×¬×5ׂ×.¬‚ ׂ¬×¬¬ƒ¬¬¬ƒ¬¬¬‚¬¬¬¬ƒ¬¬¬†¬¬¬¬‡¬¬¬¬¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬‚×ׂ¬×¬¬ƒ¬¬†¬¬¬¬¬¬‚¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬ˆ¬¬¬¬¬¬ƒ¬×¬×5ׂ×.¬„××ׂ¬×¬ƒ¬¬¬Œ¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬‰¬¬¬¬¬¬ƒ¬¬¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬ƒ×ׂ¬×¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬¬¬¬ƒ¬¬‰¬¬¬¬¬¬†¬¬¬¬¬ƒ¬×¬×5ׂ×.¬†×ׄ×׬׬¬„¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ˆ¬¬¬¬¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬„×׃׬׬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬‡¬¬¬¬¬¬ƒ¬×¬×5ׂ×.¬‚ׅ׬׬ƒ¬ ¬¬¬¬¬ ¬¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬‚ׄ׬׬ ¬¬¬¬¬ ¬ ¬¬¬ƒ¬×¬×5ׂ×.¬‚ ׂ¬×¬ ¬ ¬¬¬¬¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬ ‚¬×¬h¬ƒ¬×¬×5ׂ×.¬ ׬h¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ×.¬ × ¬¬V¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬ ¬×¬h¬ƒ¬×¬×5ׂ×.¬‚ ׂ¬×¬¬Œ¬¬¬¬¬¬¬‹¬¬¬¬¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬¬.¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬‚ ׂ¬×¬¬Œ¬¬¬¬¬¬¬‹¬¬¬¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬.¬ƒ¬×¬×5ׂ×.¬‚ ׂ¬×¬ƒ¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬.¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬‚ ׂ¬×¬¬„¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬.¬ƒ¬×¬×5ׂ×.¬‚ ׂ¬×¬¬„¬¬¬†¬¬¬¬‰¬¬¬¬¬¬ˆ¬¬¬¬¬‡¬¬¬¬.¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬‚ ׂ¬×¬ƒ¬¬¬†¬¬¬‚¬¬ƒ¬¬ˆ¬¬¬¬¬†¬¬¬¬/¬ƒ¬×¬×5ׂ×.¬‚ ׂ¬×¬ƒ¬ ¬¬¬=¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××.¬‚ ׂ¬×¬ ¬¬¬=¬ƒ¬×¬×5ׂ×.¬‚ ׂ¬×¬$¬¬:¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×.¬ ‚¬×¬h¬ƒ¬×¬×5ׂ×.¬ ׬h¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×h¬¬2¬‚¬ƒ¬×¬×5ׂ×h¬¬4¬~¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××'¬¬¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬‚¬…¬¬‚¬¬¬ƒ¬¬¬¬¬¬¬ˆ¬¬¬¬¬¬¬„¬¬…¬¬¬ƒ¬¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬¬‚¬¬¬(¬ƒ¬×¬×5ׂ×'¬¬¬¬ƒ¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬Œ¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬‡¬¬¬¬‹¬¬¬¬¬¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬ƒ¬¬,¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×&¬‡¬¬¬¬¬ƒ¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬(¬ƒ¬×¬×5ׂ×&¬‡¬¬¬¬¬ƒ¬¬‚¬¬¬†¬¬¬¬‚¬‚¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬†¬¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬¬(¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××%¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬Œ¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬¬„¬¬¬¬‰¬¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬¬'¬ƒ¬×¬×5ׂ×%¬¬¬‡¬¬¬¬„¬¬¬‰¬¬¬¬¬„¬¬¬…¬¬¬‚¬‚¬¬¬‡¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬¬ˆ¬¬¬¬¬¬„¬¬¬†¬¬¬…¬¬¬¬ƒ¬¬‚¬¬¬&¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×%¬¬¬„¬¬ ¬ ¬„¬¬1¬¬¬¬¬¬¬ ¬ ¬&¬ƒ¬×¬×5ׂ×$¬ ¬ƒ¬ ¬ ¬„¬¬1¬¬¬¬¬¬¬ ¬¬¬&¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××$¬ ¬ƒ¬¬K¬¬¬…¬¬¬ ¬ ¬¬'¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ×U¬×¬‚×׬.¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×P¬×¬¬„¬×¬-¬ƒ¬×¬×5ׂ×3¬× ¬×¬×¬ׄ¬¬×¬ƒ×¬×¬ƒ×¬¬ׂ¬×¬ƒ×¬×¬×¬‚׬׬„×׬׬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××1¬‚×׬‚×׬‚׬„׬¬„¬×¬¬‰¬×¬¬×¬Œ×׬¬×׬¬¬…×׬¬ˆ¬×¬¬×¬¬ƒ¬×¬×5ׂ×0¬¬×¬Ž×¬¬×¬×¬¬×¬™×¬×¬¬×׬¬×׬¬×׬¬¬×׬¬×׬׬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×0¬‚¬×¬Ž×¬¬×¬×¬¬×¬˜×¬×¬¬×¬×××׬¬×׬‘׬×׬¬×׬¬×¬¬ƒ¬×¬×5ׂ×/¬‚¬‚¬×¬Ž×¬¬×¬×¬¬×¬Š×¬×׬׬‹××׬׬׬‘׬×׬¬×׬¬×¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××/¬„¬¬¬×¬×׬׬¬×׬ˆ×׬׬×׬¬×¬×¬×¬‘׬׬×׬׬¬×¬¬ƒ¬×¬×5ׂ×/¬„¬¬¬×¬‰×¬¬×¬¬¬‡¬×¬Œ¬¬¬¬¬×¬¬†¬¬¬¬ƒ¬¬¬¬ ¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×/¬‚¬‚¬×¬‡×¬¬× ¬…׬׬‚׬7¬ƒ¬×¬×5ׂ×0¬‚¬×¬‚¬‚× ¬…¬¬×¬‚׬7¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××0¬ƒ¬ƒ×¬¬¬¬¬8¬ƒ¬×¬×5ׂ×1¬‚‚¬j¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×3¬¬l¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×A¬×¬×¬H¬ƒ¬×¬×5ׂ×@¬ ¬×¬‚׬H¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××3¬× ¬×¬×¬†×׬¬×¬×…¬¬×¬¬×¬ׄ¬¬×׬׬,¬ƒ¬×¬×5ׂ×1¬‚×׬‚×× ¬‚׬‰¬×¬¬×¬¬…¬×׬ƒ¬×¬‡×¬¬×¬‚¬×¬+¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×0¬¬× ¬‚׬Š×¬¬¬¬¬¬ž×¬¬××׬¬¬×¬¬×¬¬¬×¬¬¬,¬ƒ¬×¬×5ׂ×0¬‚¬× ¬‚׬׃¬¬¬‰×¬¬××׌¬××׬¬¬¬×¬+¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××/¬‚ ¬×¬‚׬†×¬¬¬×¬ˆ×¬¬×ׂ׬†×¬¬¬×׬+¬ƒ¬×¬×5ׂ×/¬‚ ¬×¬¬×¬¬¬×׬¬×¬׉¬×¬×׬Ž×׬¬×¬¬×׬,¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×/¬‚ ¬×¬‡¬¬×¬¬¬‚¬…¬¬×¬¬¬‚¬¬-¬ƒ¬×¬×5ׂ×/¬‚ ¬×¬¬ƒ¬×¬‚׬B¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××0¬‚¬×¬‚׬‚׬‚׬B¬ƒ¬×¬×5ׂ×0¬ƒ¬ƒ×¬¬¬¬C¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×1¬‚‚¬j¬ƒ¬×¬×5ׂ×3¬¬l¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×E¬‚××1¬×¬×7¬×k¬ƒ¬×¬×5ׂ×D¬„¬×/¬‚׬‚×6¬‚×k¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××&¬×¬×¬×¬ˆ×׬׬׬¬×¬‚׬׬„×׬׬…׬׬׬ƒ×¬¬×¬‚×׬…×׬×ׂ¬×¬׃¬¬×¬×¬×¬׃¬¬×¬×¬׊¬¬×¬¬×¬¬×׬׬†×׬׬׬ƒ×¬¬×¬ˆ×¬¬×¬×¬¬×¬‚×׬×6¬ƒ¬×¬×5ׂ×%¬†×¬¬×¬‹¬×¬¬×׬׬…×׬¬ˆ¬×¬¬×¬‹××׬¬¬¬‚¬×¬Š¬×¬¬×‚¬×ƒ¬×¬‡¬×׬¬¬„׬¬„¬×׬ƒ¬×¬Š¬×׬׬׃¬×¬¬×¬¬×׬¬×¬×¬ˆ×¬×׬Š¬×¬¬×¬¬7¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×%¬¬×¬¬×¬¬×¬¬×׬××׬¬×¬¬×׬¬×׬׬××׬¬¬×¬¬¬¢¬¬¬×¬×׬¬×׬¬×׬¬×׬׬‹×¬×¬¬×׬²×¬¬¬×¬¬×׬׬×׬¬×׬¬×׬×׬¬×׬¬×¬‘׬××׬¬¬¬¬¬×6¬ƒ¬×¬×5ׂ×$¬ž×××׬¬×¬¬×׬¬××׬¬×¬‘׬×׬¬×׬¬×¬‡××׬׬ ¬¬×¬¬×׬¬×׬¬×׬¬×׬׬‹×¬×¬¬×׬‚׬¬×¬¬×׬׬×׬¬×׬¬×׬¬×׬¬×׬¬×¬ˆ×¬××׃¬¬¬‚×6¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××$¬ž¬¬¬¬×¬×¬¬×׬¬××׬¬×¬‘׬×׬¬×׬¬×¬Š×׬׬¬×¬¡¬¬×׬¬×׬¬×׬¬×׬¬×׬׬‹×¬×¬¬×׬‚׬­×׬¬×׬׬×׬¬×׬¬×׬¬××׬×׬¬×¬‡×¬×׋׬¬¬×¬¬¬×5¬ƒ¬×¬×5ׂ×#¬Ÿ×¬¬×¬¬×¬¬×׬׬¬×׬××׬‘׬׬×׬׬¬×¬××׬׬¬×׬Œ¬×¬×¬¬×׃¬׎¬¬×׬×××׬Œ×׬×׬×׬•¬×׬¬×׬×׬׬ך¬¬×׬׬¬×¬×¬¬××׬‘×××׬×׬¬×¬ƒ¬×4¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×#¬Œ×¬¬×¬¬×¬¬ƒ¬¬¬…¬×¬×¬†¬¬¬¬ƒ¬¬¬¬ˆ×¬×¬¬¬…¬¬¬‚¬‚¬¬¬‡¬¬¬¬„¬¬„¬¬¬¬‚¬¬…¬¬¬¬ƒ¬¬¬†¬¬¬×¬ˆ¬¬×¬¬‚¬‚×4¬ƒ¬×¬×5ׂ×#¬¬¬ƒ¬× ¬‚׬‚׬†×¬¬×-¬‚׬‚×=¬‚׬‚׬‚× ¬…׬¬×4¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚׬‚× ¬‚׬‚׬†×¬××-¬¬ƒ¬×<¬‚׬‡¬×¬×× ¬…¬××5¬ƒ¬×¬×5ׂ×"¬ ¬ ¬¬¬…¬¬5¬=¬¬…¬¬ ¬6¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ×B¬ ×>¬¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××B¬ ¬×¬×¬ƒ×¬¬×¬ƒ×¬×¬×¬×¬ׂ¬¬×¬×¬Ž×׬׬׬¬×¬¬×¬¬׃¬¬×¬„׬¬×¬×¬׃¬¬×¬†×¬¬×¬¬ׄ¬×¬×¬ƒ×¬¬׃¬¬×O¬ƒ¬×¬×5ׂ×B¬‚ ¬×¬‚׬ƒ×¬‹¬×¬¬×¬¬×¬‚¬×¬‚׬ƒ¬×¬‘¬×¬¬×׬׬׬Š¬×׬¬×¬¬ƒ¬×¬Œ¬×׬¬×¬¬¬Š××׬¬×¬„¬××O¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×B¬‚ ¬×¬‚¬ט¬×¬¬¬×¬×¬¬¬×¬×¬¬¬®×¬¬×׬¬×׬¬¬×¬×׬׬×׬¬¬×¬¬×׬«×¬¬¬×¬¬×׬¬×׬׬¬××׬¬×׬¬¬×O¬ƒ¬×¬×5ׂ×B¬‚ ¬×¬„׬׬Œ×¬×¬×׬׬Ž×¬¬×׬¬×׬׬¬×׬׬×׈׬¬×׬‚׬ž×¬¬×׬¬×׬¬××××׬¬×ׂ×O¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××B¬‚ ¬×¬‰×¬¬×¬×¬Œ×׬׬¬¬×׬Ž×¬¬×׬¬×׬×׬¬×׬׬׉××׬×׬‚׬‘×׬¬××׬×׬¬‰×××׬׃××O¬ƒ¬×¬×5ׂ×B¬‚ ¬×¬¬×¬¬¬¬×׬×××׬¬×¬×׬¯¬××׬×׬¬×׬׬¬××׬׬¬×׬¬×¬×׬¬¬×׬¬×׬¬×¬×׬¬×׬׬׬¬×׬××N¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×B¬‚ ¬×¬„×׬ˆ¬¬¬¬¬ƒ¬¬¬‚׬¬ƒ¬¬¬‚¬ƒ¬¬Š¬¬¬¬¬¬¬Œ¬¬¬¬¬¬¬ˆ¬¬¬¬¬„¬¬O¬ƒ¬×¬×5ׂ×B¬‚ ¬×¬ƒ¬ ¬‚׬‚×&¬‚׬‚×f¬†¬×¬××#×#×#×#×#׬¬‚¬%¬‚ ¬×¬‚× ¬¬×¬‚×&¬¬ ¬×]¬ƒ¬×¬×¬¬‚¬%¬‚ ¬×¬ ¬¬H¬^¬„¬×¬#×#×#×#×#ׂ#׬¬‚¬%¬ ‚¬×¬T¬ƒ¬×¬×¬¬‚¬%¬ ׬T¬†¬×¬××#×#×#×#×#׬¬‚¬¬¬¬ƒ¬×¬×¬¬‚¬¬¬¬„¬×¬#×#×#×#×>¬¬¬ƒ¬×¬× ××$× ×¬¬¬†¬×¬××#×#×#ׄ#××:‚׬¬¬ƒ¬×¬׃׬¬!¬ƒ×¬¬¬„¬×¬#×#×#×#׃׬¬ ¬ƒ×Y¬×¬'¬ƒ¬×¬׃׬¬‹¬¬¬¬¬¬ƒ¬¬¬ ¬ƒ×%¬ ×&¬¬(¬†¬×¬××#×#×#×…#×׬¬ƒ¬¬Œ¬¬¬¬¬¬¬¬ƒ×%¬ ¬×¬×¬ƒ×¬¬×¬ƒ×¬×¬×¬×¬ׂ¬¬×¬×¬Ž×׬׬׬¬×¬¬×¬¬׃¬¬×¬„׬¬×¬‚×׬׃¬¬×¬×¬׃¬¬×^¬ƒ¬×¬׃׬…¬¬¬¬Š¬¬¬¬¬¬¬ƒ×%¬‚ ¬×¬‚׬ƒ×¬‹¬×¬¬×¬¬×¬‚¬×¬‚׬ƒ¬×¬‘¬×¬¬×׬׬׬Š¬×׬¬×¬¬…¬×¬„¬×׬‚׬„¬××^¬„¬×¬#×#×#×#׃׬¬ˆ¬¬¬¬¬„¬¬¬¬ƒ×%¬‚ ¬×¬‚¬ט¬×¬¬¬×¬×¬¬¬×¬×¬¬¬®×¬¬×׬¬×׬¬¬×¬×׬׬×׬¬¬×¬¬×׬¬¬¬×¬¬¬×¬Œ¬×¬×¬¬¬×^¬ƒ¬×¬׃׬¬ ¬¬#¬ƒ×%¬‚ ¬×¬„׬׬Œ×¬×¬×׬׬Ž×¬¬×׬¬×׬׬¬×׬׬×׈׬¬×׬„¬¬׊׬¬×׬ׂ×^¬†¬×¬××#×#×#×…#×׬ ¬¬#¬ƒ×%¬‚ ¬×¬‰×¬¬×¬×¬Œ×׬׬¬¬×׬Ž×¬¬×׬¬×׬×׬¬×׬׬׉××׬×׬„¬¬×Š×׬¬¬¬×ƒ××^¬ƒ¬×¬׃׬8¬ƒ×%¬‚ ¬×¬¬×¬¬¬¬×׬×××׬¬×¬×׬¯¬××׬×׬¬×׬׬¬××׬׬¬×׬¬×¬×׬¬×¬¬×׬××׬¬×¬×׬××]¬„¬×¬#×#×#×#×>%¬‚ ¬×¬„×׬ˆ¬¬¬¬¬ƒ¬¬¬‚׬¬ƒ¬¬¬‚¬ƒ¬¬Š¬¬¬¬¬¬‚¬†¬¬¬¬ƒ¬¬„¬¬^¬ƒ¬×¬׃××8׃×%¬‚ ¬×¬ƒ¬ ¬‚׬‚×&¬‚×~¬†¬×¬××#×#×#×…#×××8׃×%¬‚ ¬×¬‚× ¬¬×¬‚×&¬¬ƒ¬×¬׃××8׃×%¬‚ ¬×¬ ¬¬¬(¬„¬×¬#×#×#×#׃××8׃×%¬ ‚¬×¬T¬ƒ¬×¬׃××8׃×%¬ ׬T¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××8׃×k¬¬¬„¬×¬#×#×#×#׃××8׃׬׬l¬ƒ¬×¬׃××8׃׬‚×׬‚×׬¬¬ƒ¬¬¬¬ƒ¬¬¬†¬¬¬¬„¬¬¬ƒ¬¬ƒ¬¬¬‚¬¬ƒ¬¬¬‚¬ƒ¬¬¬¬ƒ¬¬i¬†¬×¬××#×#×#×…#×××8׃׬ƒ¬¬׃¬¬×¬¬„¬¬¬†¬¬¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬¬¬ƒ¬i¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬„¬¬¬†¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬…¬¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬¬„¬¬¬¬†¬¬¬¬i¬„¬×¬#×#×#×#׃××8׃׬‚ׂ¬×¬¬„¬¬¬†¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬„¬¬¬‚¬‚¬¬‚¬¬ƒ¬¬¬¬‚¬¬…¬¬¬‚¬i¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬¬Š¬¬¬¬¬¬¬ƒ¬¬‰¬¬¬¬¬‹¬¬¬¬¬¬ƒ¬ ¬‰¬¬¬¬¬¬†¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬i¬†¬×¬××#×#×#×…#×××8׃׬‚ׂ¬×¬¬¬‰¬¬¬¬¬¬Œ¬¬¬¬¬¬¬ˆ¬¬¬¬¬„¬¬¬†¬¬¬¬¬‚¬†¬¬¬¬ƒ¬¬„¬¬h¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬¬„¬¬¬,¬¬ ¬„¬×¬#×#×#×#׃××8׃׬‚ׂ¬×¬¬¬„¬¬¬,¬¬ ¬ƒ¬×¬׃××8׃׬ƒ׃׬ ¬#¬#¬¬ ¬†¬×¬××#×#×#×…#×××8׃׬‚‚¬j¬ƒ¬×¬׃××8׃׬¬l¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃×6¬¬K¬ƒ¬×¬׃××8׃׬׬l¬„¬×¬#×#×#×#׃××8׃׬‚×׬‚×׬¬ˆ¬¬¬¬‚¬ƒ¬¬¬¬ƒ¬¬¬4¬ƒ¬×¬׃××8׃׬ƒ¬¬׃¬¬×¬¬‰¬¬¬¬¬†¬¬¬¬ƒ¬¬¬¬ƒ¬¬4¬†¬×¬××#×#×#×…#×××8׃׬‚ׂ¬×¬¬¬…¬¬¬„¬¬¬¬†¬¬¬¬¬4¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬¬‹¬¬¬¬¬¬‚¬¬…¬¬¬‚¬¬4¬„¬×¬#×#×#×#׃××8׃׬‚ׂ¬×¬ƒ¬¬¬…¬¬¬†¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬4¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬¬…¬¬¬‚¬†¬¬¬¬ƒ¬¬„¬¬¬3¬†¬×¬××#×#×#×…#×××8׃׬‚ׂ¬×¬ ¬ƒ¬¬S¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬ ¬ƒ¬¬S¬„¬×¬#×#×#×#׃××8׃׬ƒ׃׬¬ƒ¬¬S¬ƒ¬×¬׃××8׃׬‚‚¬j¬†¬×¬××#×#×#×…#×××8׃׬¬l¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃×,¬‚¬X¬ƒ¬×¬׃××8׃׬׬l¬„¬×¬#×#×#×#׃××8׃׬‚×׬‚×׬¬†¬¬¬¬ƒ¬¬‚¬ƒ¬¬¬¬ƒ¬¬¬1¬ƒ¬×¬׃××8׃׬ƒ¬¬׃¬¬×¬Œ¬¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬¬¬ƒ¬¬1¬†¬×¬××#×#×#×…#×××8׃׬‚ׂ¬×¬Œ¬¬¬¬¬¬¬¬ƒ¬¬„¬¬¬¬†¬¬¬¬¬1¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬Œ¬¬¬¬¬¬¬‰¬¬¬¬¬‚¬¬…¬¬¬‚¬¬1¬„¬×¬#×#×#×#׃××8׃׬‚ׂ¬×¬’¬¬¬¬¬¬¬¬¬¬†¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬1¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬‚¬¬¬¬¬¬¬¬‚¬†¬¬¬¬ƒ¬¬„¬¬¬0¬†¬×¬××#×#×#×…#×××8׃׬‚ׂ¬×¬‚¬‚¬[¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬¬[¬„¬×¬#×#×#×#׃××8׃׬ƒ׃׬¬„¬¬¬¬P¬ƒ¬×¬׃××8׃׬‚‚¬j¬†¬×¬××#×#×#×…#×××8׃׬¬l¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃×#¬¬\¬†¬×¬××#×#×#×…#×××8׃׬׬l¬ƒ¬×¬׃××8׃׬‚×׬‚×× ¬¬ƒ¬¬¬†¬¬¬¬„¬¬¬ƒ¬¬ƒ¬¬¬7¬„¬×¬#×#×#×#׃××8׃׬ƒ¬¬׃¬¬×¬¬ƒ¬¬ƒ¬¬†¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬7¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬¬ƒ¬¬†¬¬¬¬…¬¬¬ƒ¬¬¬7¬†¬×¬××#×#×#×…#×××8׃׬‚ׂ¬×¬¬¬ƒ¬¬ƒ¬¬„¬¬¬‚¬‚¬¬7¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬¬‰¬¬¬¬¬‹¬¬¬¬¬¬ƒ¬¬7¬„¬×¬#×#×#×#׃××8׃׬‚ׂ¬×¬¬Œ¬¬¬¬¬¬¬ˆ¬¬¬¬¬„¬¬¬6¬ƒ¬×¬׃××8׃׬‚ׂ¬×¬¬¬N¬†¬×¬××#×#×#×…#×××8׃׬‚ׂ¬×¬¬ ¬¬N¬ƒ¬×¬׃××8׃׬ƒ׃׬¬¬E¬„¬×¬#×#×#×#׃××8׃׬‚‚¬j¬ƒ¬×¬׃××8׃׬¬l¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××8׃×#¬›¬¬¬¬¬¬¬¬¬¬¬¬¬¬H¬„¬×¬#×#×#×#׃××8׃×"¬¬c¬ƒ¬×¬׃××8׃×+¬ ¬¬H¬†¬×¬××#×#×#×…#×××8׃׬׬¬c¬ƒ¬×¬׃××8׃׬‚×׬‚×׬¬¬ƒ¬¬¬ƒ¬¬‚¬¬H¬„¬×¬#×#×#×#ׂ×:‚׬ƒ¬¬׃¬¬×¬ƒ¬¬…¬¬¬ƒ¬¬ƒ¬¬¬I¬ƒ¬×¬׃׬8¬ƒ×¬‚ׂ¬×¬¬…¬¬¬ƒ¬¬ƒ¬¬¬H¬†¬×¬××#×#×#×…#×׬¬¬X¬ƒ×¬‚ׂׂ¬×¬‹¬¬¬¬¬¬¬ƒ¬¬‚¬¬I¬ƒ¬×¬׃׬ ¬ ¬ X¬ƒ×¬„×ׄ×׬׬‰¬¬¬¬¬¬‰¬¬¬¬¬‚¬H¬„¬×¬#×#×#×#׃׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬„×ׄ×׬׬ˆ¬¬¬¬¬†¬¬¬¬¬J¬ƒ¬×¬׃׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬‚ׂׂ¬×¬‚¬¬¬H¬†¬×¬××#×#×#×…#×׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬‚ׂ¬×¬„¬¬¬\¬ƒ¬×¬׃׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬ƒ׃׬¬¬¬H¬„¬×¬#×#×#×#׃׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬‚‚¬¬c¬ƒ¬×¬׃׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×¬#¬¬H¬†¬×¬××#×#×#×…#×׬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬ƒ×¬‚¬‚׬ƒ×¬‚X¬ƒ×"¬›¬¬¬¬¬¬¬¬¬¬¬¬¬¬I¬ƒ¬×¬׃׬ׂׂׂ¬ׂׂׂ¬ׂׂX¬ƒ×¬¬¬„¬×¬#×#×#×#׃׬¬¬X¬ƒ×¬¬¬ƒ¬×¬׃׬8¬ƒ×¬¬¬†¬×¬××#×#×#ׄ#××:‚׬¬¬ƒ¬×¬׃×××××!× ׂ2׃׬¬¬„¬×¬#×#×#×#׃××ׂ2׃׬¬¬ƒ¬×¬׃×ׇׂ×××ׂ×ׇ×××ׂׄ×ׂ×× ×׃ׂ×ׂ×××ׇ××ׄ××0׃׬¬¬†¬×¬××#×#×#×…#××ׂ׈××ׂ׋××× ×‚×…×× ×׃׎××××××׈××׈××/׃׬¬¬ƒ¬×¬׃×ׂ׆××ׂ׋××××…×××××…××××××××׆×׉×××/׃׬¬¬„¬×¬#×#×#×#׃×׋××××××ׄ××׊×××××××…×××ׂ×ׂ××׉×××××0׃׬¬¬ƒ¬×¬׃×ׂׂ ׂׂׂ׆××ׂׂ ׂ×…×ׂ5׃׬¬¬†¬×¬××#×#×#×…#××׆×× ××…× ×‰×××ׂ×…× ×‚×…×ׂ5׃׬¬¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#×>¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬¬‚¬¬¬¬[¬ƒ¬×¬×ƒ× ¬B´‚××´‚××c´ƒ×¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬ƒ¬¬¬_¬†¬×¬××#×#×#×…#×× ¬B´‚××´‚××c´ƒ×¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬[¬ƒ¬×¬×ƒ× ¬;´‡××´´××´ׂ´´׉´´××´××´´ׂ´´׉´´××´××´´ׂ´´×>´ƒ×¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬¬¬[¬„¬×¬#×#×#×#ׅ׬¬ƒ¬¬;´›××´´××´××´××´××´××´××´××´××´׎´××´´××´××´××´×>´ƒ×¬‰¬¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬¬¬Z¬ƒ¬×¬׆׬¬×„¬¬<´×–´´××´××´××´××´××´××´××´××´××´´××´××´××´×>´ƒ×¬†¬¬¬…¬¬¬¬ƒ¬¬‚¬¬¬¬Y¬†¬×¬××#×#×#ׇ#×׬¬ׄ¬¬<´ׂ´´ׂ´´׉´´××´××´´×´ׂ´´×…´××´´ׂ´´×?´ƒ×¬ ¬ ¬¬Y¬ƒ¬×¬×ƒ× ¬=´‚××´‚××´‚××M´ƒ×¬ ¬¬¬¬Y¬„¬×¬#×#×#×#×ƒ× ¬=´‚××´…××´××´‚××I´ƒ× ¬ ¬ ¬¬¬Z¬ƒ¬×¬×ƒ× ¬´.´ƒ×¬¬ ¬†¬×¬××#×#×#ׄ#××:‚׬¬ ¬ƒ¬×¬× ××$× ×=¬]¬¬2¬‚5¬„¬×¬#×#×#×#×>=¬]¬¬4¬4¬ƒ¬×¬×5ׂ×%¬¬¬¬ƒ¬¬ƒ¬¬¬¬Š¬¬¬¬¬¬¬¬¬†¬¬¬ƒ¬¬¬‚¬¬¬¬Ž¬¬¬¬¬¬¬¬ƒ¬¬¬„¬¬¬‚¬…¬¬‚¬¬¬ƒ¬¬¬¬¬¬¬ˆ¬¬¬¬¬¬¬„¬¬…¬¬¬ƒ¬¬¬ƒ¬¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××%¬¬¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬‹¬¬¬¬¬¬¬ƒ¬¬‰¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬‘¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬Œ¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬‡¬¬¬¬‹¬¬¬¬¬¬¬¬„¬¬¬¬ƒ¬×¬×5ׂ×$¬‡¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬„¬¬¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×$¬‡¬¬¬¬¬ƒ¬¬‚¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬¬Š¬¬¬¬¬¬‚¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬†¬¬¬¬„¬¬¬¬ƒ¬×¬×5ׂ×#¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬ƒ¬¬‹¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬¬‰¬¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬†¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬¬„¬¬¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××#¬¬¬‡¬¬¬¬„¬¬¬¬‚¬¬…¬¬¬¬ƒ¬¬¬†¬¬¬¬‚¬¬¬ƒ¬¬¬‚¬ƒ¬¬Š¬¬¬¬¬¬…¬¬¬‚¬‚¬¬¬‡¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬¬ˆ¬¬¬¬¬¬„¬¬¬ƒ¬×¬×5ׂ×#¬¬¬„¬¬ ¬5¬¬'¬%¬¬¬¬¬¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬ ¬ƒ¬ ¬5¬¬'¬%¬¬¬¬¬¬¬ƒ¬×¬×5ׂ×"¬ ¬ƒ¬A¬¬g¬¬¬…¬¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬‚¬×¬¬¬\¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllZl‚¬ƒ¬×¬lll6l‚ll„ll¬ƒ¬×¬"l‚××l‚××Rl‚××l‚××!l‚××l{lׄll×…ll¬ƒ¬×¬"l‚××l‚××Ql‚××l‚×× l‚××l{l× ¬…ll× ¬†ll¬ƒ¬×¬l‚××l‚××l‚××l‚××lƒ××lׂll×l†××ll××lƒ××lׂll׃l××l×l׃l××lׄll××l×l‚××l׉ll××l××ll×l‚××l×l„××llׂll×l×lׄll××l×lSl׬‚¬…ll× ¬†ll¬ƒ¬×¬l‚××l‚××l‚××l‚××l××l××ll××l××ll××l†××ll××l…××l××l‘××ll××l××ll××ll××l‚×× l†××ll××l†××ll××l›××ll××ll××l××l××l××ll××ll×× l™××ll××ll××ll××ll××l××ll××l†××ll××l‰××ll××l××l†××ll××lRl׬‚¬…ll׬‚¬Š¬¬ll¬ƒ¬×¬l‚××l×l‚×× lבll××ll××l××ll××ll×l†××ll××l‘××ll××l××ll××ll××l‚××l†××ll××l†××ll××l†××ll××lׄll××l‚××lŠ××ll××ll××l†××ll×× l‚××l‰××ll××l××l†××ll××lRl× ¬…ll׬†¬¬¬†ll¬ƒ¬×¬l‚××l×l‚×× l—××ll××ll××ll××l××ll××ll×l‚××l‚××l׋l××ll××ll××l‚××l†××ll××l†××ll××l„××llׂllׂllׄll××l× lˆ××ll××llׇl××ll×× l‚××l‰××ll××l××l†××ll××lRl׬‚¬…ll׬¬†ll¬ƒ¬×¬lŒ××ll××ll××ll×l¤××ll××ll××ll××l××ll××l××ll××ll××ll××l‚××l××l××ll××ll××l‚××l×l†××ll××l›××ll××ll××l××l××l××ll××ll××l×l‘××ll××ll××l××ll××l×l‰××ll××l××l×lSl׬‚¬…ll׬‚¬†ll¬ƒ¬×¬lŽ××ll××ll××ll×× l×lׂllבll××ll××ll××ll××lׂllׂllׂll× l‚××l‚×× l†××ll××l‚××l׉ll××l××ll×l‚×× l‚××lׂllׂll× l‚××lׂll×l‚××lVl׬‚¬…ll׬¬†ll¬ƒ¬×¬lŽ××ll××ll××ll×× l×lŠ××ll××ll××l‚×× l‚××l‚×× l†××ll××l‚××l‚×× l‚××l‚××l‚×× l‚××l‚××lVl׬†¬¬¬…ll׬†¬¬¬†ll¬ƒ¬×¬l…××l××l…××l×× l‚××l‚××l‚××l‚××l†××ll××l†××ll××l†××ll××l‚××l‚×× lŠ××ll××ll××l†××ll×× l‚××l†××ll××lRl׬†¬¬¬…ll׬‚¬Š¬¬ll¬ƒ¬×¬l…××l××lƒ××l×l‚××l‚××l…××l××l‚××l×l×l×l‚××l‚××l×l×l‚××l×lSl׬¬…ll× ¬†ll¬ƒ¬×¬lll6l× ¬…ll× ¬†ll¬ƒ¬×¬lll6l׃ll×…ll¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllZl‚¬‚¬×¬¬¬\¬¬×××]׬¬¬_¬¤—›—lpºë&3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿc¬^‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬‚¬I¬‚¬×¬¬¬„×׬H¬‚¬×¬¬¬„×׬H¬‚¬×~¬‚×׬K¬K¬‚¬×~¬×IF‚×׬×I¬×I¬‚¬×~¬×H¬„×<‚ˆ×׬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×<¬×¬¬×׬¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×<¬×××׬¬¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×<¬׉×׬¬¬×H¬‚¬×H¬‚¬‚¬×~¬×¬%¬„׬ ¬×¬×¬+¬‚¬×H¬‚¬‚¬×~¬×H¬„×<¬ ׬×H¬‚¬×H¬‚¬‚¬×~¬×¬¬¬‚¬¬ƒ¬¬¬¬„׬¬¬‰¬¬¬¬¬¬¬ ¬ׄ¬×¬¬ƒ¬¬Š¬¬¬¬¬¬¬‚¬×¬¬‚¬¬ƒ¬¬¬ƒ¬¬¬‚¬‚¬×~¬×¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬„׬¬…¬¬¬ˆ¬¬¬¬¬ ¬×…¬¬×¬¬ƒ¬¬Š¬¬¬¬¬¬¬‚¬×¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬‚¬×~¬×¬¬¬„¬¬¬ƒ¬¬ƒ¬¬„׬¬…¬¬¬…¬¬¬ ¬׆¬¬¬×¬¬ƒ¬¬ƒ¬¬„¬¬¬¬‚¬×¬¬¬ƒ¬¬ƒ¬¬¬¬‚¬‚¬×~¬×¬¬¬¬‚¬¬‚¬„׬ˆ¬¬¬¬¬‡¬¬¬¬¬ ¬×¬ƒ¬×¬¬ƒ¬¬†¬¬¬¬¬¬‚¬×¬¬‚¬¬ƒ¬¬‚¬¬‚¬‚¬×~¬×¬¬¬ƒ¬¬…¬¬¬„׬‰¬¬¬¬¬¬ˆ¬¬¬¬¬ ¬×¬ƒ¬×¬–¬¬¬¬¬¬¬¬¬¬¬¬¬‚¬×¬ ¬‰¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬‚¬×~¬×¬¬¬¬¬†¬¬¬¬¬„׬†¬¬¬¬‰¬¬¬¬¬¬ ¬×¬ƒ¬×¬¬“¬¬¬¬¬¬¬¬¬¬‚¬×¬¬†¬¬¬¬¬ƒ¬¬¬‚¬‚¬×~¬×¬¬¬¬¬„׬‚¬ ¬¬ ¬„×׬ƒ¬×¬¬¬‚¬×¬¬¬‚¬‚¬×~¬×¬¬¬¬„׬‚¬ ¬¬ƒ×¬ƒ¬×¬¬¬‚¬×¬¬¬¬‚¬‚¬×~¬×¬¬¬„׬¬!¬‚¬ƒ¬×¬‚¬¬¬¬‚¬×¬¬¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬‚¬×~¬×H¬ƒHׂ¬×H¬‚¬×H¬‚¬‚¬×~¬J×L¬J׬J׬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬ƒ¬×¬J¬ƒ¬×¬J¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×-¬9×T¬J¬ƒ¬×¬×5ׂ×-¬7¬×T¬×H¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××-¬‚&ׂ¬×T¬×G¬‚¬ƒ¬×¬×5ׂ×-¬‚&׬ ƒ¬×T¬×G¬‚¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×-¬‚&ׂ¬× ¬„¬×T¬×G¬‚¬ƒ¬×¬×5ׂ×-¬‚&ׂ¬×¬¬„¬×T¬×G¬‚¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××-¬‚&ׂ¬×¬¬„¬×T¬×¬9¬‚¬ƒ¬×¬×5ׂ×-¬‚× ×‚¬× ¬„¬×T¬×G¬‚¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×-¬‚× ×¬ ׄ¬×T¬×¬¬ƒ¬¬¬¬‚¬¬ƒ¬¬¬¬ˆ¬¬¬¬¬¬‚¬ƒ¬×¬×5ׂ×-¬„××׬ƒ¬×T¬×¬¬ƒ¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬‚¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××-¬ˆ×××× ×¬×T¬×¬ƒ¬¬¬‰¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬¬‚¬ƒ¬×¬×5ׂ×-¬‚×ƒ× ×‚¬×T¬×¬¬„¬¬¬†¬¬¬¬‚¬¬ƒ¬¬‚¬¬¬‚¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×-¬‚×ƒ× ×¬ ƒ¬×T¬×¬¬„¬¬¬ƒ¬¬¬‰¬¬¬¬¬ƒ¬¬ƒ¬¬¬‚¬ƒ¬×¬×5ׂ×-¬‚ׂ ׂ¬× ¬„¬×T¬× ¬ƒ¬¬‚¬¬ƒ¬¬†¬¬¬¬¬¬¬‚¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××-¬‚ׂ ׂ¬×¬¬„¬×T¬× ¬ƒ¬¬#¬¬‚¬ƒ¬×¬×5ׂ×-¬‚× ×‚¬×¬¬„¬×T¬× ¬¬#¬¬‚¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×-¬‚&ׂ¬× ¬„¬×T¬× ¬¬#¬¬‚¬ƒ¬×¬×5ׂ×-¬‚&׬ ׄ¬×T¬×G¬‚¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××-¬‚&׬ƒ¬×T¬×G¬‚¬ƒ¬×¬×5ׂ×-¬6‚¬×T¬×G¬‚¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×-¬8×T¬×G¬‚¬ƒ¬×¬×5ׂ׬;¬×G¬‚¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬;¬I׬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ×O¬‚:¬‚4¬‚¬G¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×Q¬;¬5¬^¬ƒ¬×¬×5ׂ×#¬¬¬¬¬¬‰¬¬¬¬¬¬‚¬¬„¬¬¬ˆ¬¬¬¬¬¬‚¬¬¬¬ˆ¬¬¬¬¬¬¬„¬¬…¬¬¬ƒ¬¬¬ƒ¬¬¬¬¬¬†¬¬¬¬¬¬ƒ¬¬¬„¬¬¬ˆ¬¬¬¬¬¬‡¬¬¬¬¬ ¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××#¬¬„¬¬¬„¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬…¬¬¬ˆ¬¬¬¬¬†¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬‡¬¬¬¬‹¬¬¬¬¬¬¬¬¬ƒ¬¬¬…¬¬¬‰¬¬¬¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬¬Š¬¬¬¬¬¬ƒ¬×¬×5ׂ×#¬¬„¬¬¬‰¬¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬†¬¬¬¬ˆ¬¬¬¬¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬„¬¬¬¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬„¬¬¬ ¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×#¬¬„¬¬¬‰¬¬¬¬¬‰¬¬¬¬¬¬‚¬¬†¬¬¬¬‡¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬†¬¬¬¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬¬‚¬¬ƒ¬¬‡¬¬¬¬¬†¬¬¬¬¬ ¬ƒ¬×¬×5ׂ×#¬ƒ¬¬¬‰¬¬¬¬¬¬‡¬¬¬¬¬Œ¬¬¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬¬¬‡¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬„¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬ˆ¬¬¬¬¬¬Š¬¬¬¬¬¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××#¬¬¬‰¬¬¬¬¬¬¬ƒ¬¬Œ¬¬¬¬¬¬¬¬ˆ¬¬¬¬¬‚¬‰¬¬¬¬¬¬ƒ¬¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬¬ˆ¬¬¬¬¬¬†¬¬¬¬†¬¬¬¬ƒ¬¬¬„¬¬„¬¬¬¬Š¬¬¬¬¬¬ˆ¬¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬×¬×5ׂ×#¬¬/¬¬#¬¬¬¬O¬¬¬ ¬¬¬¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×#¬¬/¬¬#¬¬¬¬O¬¬¬ ¬¬„¬¬¬¬ƒ¬×¬×5ׂ×#¬¬0¬…¬¬#¬¬¬…¬¬V¬…¬¬ ¬ƒ¬ ¬¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#¬‚×#׃#×׬‚×#׃#×׬‚×#׃#×׬‚×#׃#×׬‚×#׃#×׬‚×#׃#×׬‚×#׃#×׬‚×#׃#×׬‚×#׆#×׬¬¬¬¬¬ƒ¬×¬%׬¬‚¬¬¬ ¬†¬×¬××#×#×#×#×#×#×#×#׃#×׬¬‚¬¬¬ ¬ƒ¬×¬%׬¬‚¬¬¬ ¬„¬×¬#×#×#×#×#×#×#×#×#׬¬‚¬¬¬ ¬ƒ¬×¬×¬¬¬¬¬¬¬¬¬¬¬¬ ¬†¬×¬××#×#×#×#×#×#×#×#¬¬¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬×¬×¬)¬¬¬¬„¬×¬#×#×#×#×#×#×#׃#×׬)¬¬¬¬ƒ¬×¬×¬)¬¬¬¬†¬×¬××#×#×#×#×#×#×#׃#¬¬×#׬¬¬¬ƒ¬×¬ׂ¬¬"׬¬¬¬„¬×¬#×#×#×#×#×#×#ׂ#׬‚׬¬‚׬¬¬¬ƒ¬×¬×¬‚׬¬‚׬¬¬¬†¬×¬××#×#×#×#×#×#×#׬‚׬¬‚׬¬¬ ¬ƒ¬×¬×¬‚׬¬‚׬¬¬ ¬„¬×¬#×#×#×#×#×#×#ׂ#׬‚×P¬×‚××G¬‚׬¬¬ ¬ƒ¬×¬×¬‚×P¬׃¬×F¬‚׬¬¬ ¬†¬×¬××#×#×#×#×#×#×#׬‚×N¬‚ׂ׬ˆ¬¬¬¬‚¬¬…¬¬¬¬¬Š¬¬¬¬¬¬‚¬¬¬‚׬¬¬ ¬ƒ¬×¬×¬‚×N¬ׂ׬‡¬¬¬¬¬¬¬¬¬‡¬¬¬¬¬¬¬¬¬¬¬‚׬¬¬ ¬„¬×¬#×#×#×#×#×#×#ׇ#×׬¬×M¬‚ׂ׬¬‘¬¬¬¬¬¬‡¬¬¬¬¬¬¬¬¬¬¬‚׬¬¬ ¬ƒ¬×¬ׄ¬¬×M¬‚ׂ׬‡¬¬¬¬…¬¬¬¬‚¬¬¬¬‚¬¬‚¬¬¬‚׬¬¬ ¬†¬×¬××#×#×#×#×#×#×#×…#¬¬×N¬ׂ׬†¬¬ ¬‚ ¬†¬¬¬†¬¬¬‚׬¬¬¬ƒ¬×¬ׄ¬¬×N¬‚ׂ׬ ¬…¬ ¬¬‚׬¬¬¬„¬×¬#×#×#×#×#×#×#ׇ#×׬¬×N¬ƒ×H¬‚׬¬¬¬ƒ¬×¬ׄ¬¬×O¬H¬‚׬X¬‚¬¬.¬†¬×¬××#×#×#×#×#×#×#×…#¬¬×R¬‚J¬‚׬¬×=¬¬.¬ƒ¬×¬ׄ¬¬×¬¬‚׬¬‚×׬‚×׬„¬¬¬†¬¬¬¬†¬¬¬¬¬ƒ¬¬¬¬‡¬¬¬¬¬…¬¬¬¬ƒ¬¬¬ƒ¬¬¬¬¬‚¬¬¬‚¬¬‚p¬„¬×¬#×#×#×#×#×#×#ׂ#׬‚׬ ×B¬×I¬‚׬¬ƒ¬¬׃¬¬×¬„¬¬¬†¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬¬†¬¬¬¬…¬¬¬†¬¬¬¬ƒ¬¬¬„¬¬¬ƒ¬¬„¬¬¬‰¬¬¬¬¬o¬ƒ¬×¬×¬‚׬‚ ¬×A¬×‚××G¬‚׬¬‚ׂ¬×¬„¬¬¬†¬¬¬¬„¬¬¬ƒ¬¬¬¬…¬¬¬…¬¬¬†¬¬¬¬¬¬„¬¬¬¬„¬¬¬ƒ¬¬p¬†¬×¬××#×#×#×#×#×#×#׬‚׬‚ׂ¬×A¬׃¬×F¬‚׬¬‚ׂ¬×¬„¬¬¬…¬¬¬…¬¬¬¬‚¬‚¬¬¬…¬¬¬…¬¬¬…¬¬¬‚¬¬¬ƒ¬¬‚¬¬¬‚¬¬q¬ƒ¬×¬×¬‚׬Œ×××׬׬‚¬¬‚¬¬‚¬¬¬¬¬‚¬¬ ¬‚ׂ׬ˆ¬¬¬¬‚¬¬…¬¬¬¬¬Š¬¬¬¬¬¬‚¬¬¬‚׬¬‚ׂ¬×¬¬¬¬¬¬¬¬¬Œ¬¬¬¬¬¬¬ƒ¬¬¬†¬¬¬¬…¬¬¬†¬¬¬¬ƒ¬¬¬¬‚¬¬‰¬¬¬¬¬o¬„¬×¬#×#×#×#×#×#×#ׂ#׬‚׬ƒ×ƒ×¬×¬‡¬¬¬ƒ¬¬‚¬¬¬¬¬¬¬¬ ¬‹××××׬‡¬¬¬¬¬¬¬¬¬‡¬¬¬¬¬¬¬¬¬¬¬‚׬¬‚ׂ¬×¬¬¬¬¬¬¬¬‰¬¬¬¬¬„¬¬¬¬…¬¬¬…¬¬¬¬†¬¬¬¬„¬¬¬¬¬ƒ¬¬¬¬ˆ¬¬¬¬p¬ƒ¬×¬×¬‚׬„×ׄ×׬׬‚¬¬ƒ¬¬¬¬¬¬¬¬¬ ¬„×ׄ××׬¬‘¬¬¬¬¬¬‡¬¬¬¬¬¬¬¬¬¬¬‚׬¬‚ׂ¬×¬¬¬¬¬¬¬¬¬~¬†¬×¬××#×#×#×#×#×#×#׬‚׬„×ׄ×׬׬‚¬¬‚¬¬¬¬‚¬¬ ¬„×ׄ××׬‡¬¬¬¬…¬¬¬¬‚¬¬¬¬‚¬¬‚¬¬¬‚׬¬‚ׂ¬×¬¬¬¬¬¬¬¬¬~¬ƒ¬×¬×¬‚׬ƒ×ƒ×¬×¬‰¬¬¬ ¬‚¬†¬¬¬‹××××׬†¬¬ ¬‚ ¬†¬¬¬†¬¬¬‚׬¬ƒ׃׬&¬ ¬¬ ¬¬„¬×¬#×#×#×#×#×#×#ׇ#×׬¬×¬Œ×××׬׬„¬¬ ¬‚¬¬‚ׂ׬ ¬…¬ ¬¬‚׬¬‚‚¬j¬ƒ¬×¬ׄ¬¬×¬‚ׂ¬×?¬ƒ×H¬‚׬¬¬l¬†¬×¬××#×#×#×#×#×#×#×…#¬¬×¬ ×@¬H¬‚׬¬¬¬ƒ¬×¬ׄ¬¬×¬ C¬‚J¬‚׬¬¬¬„¬×¬#×#×#×#×#×#×#ׇ#×׬¬×¬¬‚׬¬¬¬ƒ¬×¬ׄ¬¬×¬¬‚׬¬¬¬†¬×¬××#×#×#×#×#×#×#×…#¬¬×¬¬‚׬¬¬¬ƒ¬×¬׃¬¬×"׬¬¬¬„¬×¬#×#×#×#×#×#×#ׂ#׬#¬¬×¬¬U¬ƒ¬×¬×¬)¬¬‚×׬‚×׬j¬†¬×¬××#×#×#×#×#×#×#׬)¬¬ƒ¬¬׃¬¬×¬¬¬Ž¬¬¬¬¬¬¬¬¬¬‚¬¬B¬ƒ¬×¬×¬)¬¬‚ׂ¬×¬¬…¬¬¬Ž¬¬¬¬¬¬¬¬¬ƒ¬¬B¬„¬×¬#×#×#×#×#×#×#ׂ#׬)¬¬‚ׂׂ¬×¬¬…¬¬¬Ž¬¬¬¬¬¬¬¬¬ƒ¬¬B¬ƒ¬×¬×¬)¬¬„×ׄ×׬׬‰¬¬¬¬¬¬Ž¬¬¬¬¬¬¬¬¬‚¬¬B¬†¬×¬××#×#×#×#×#×#×#×S¬Q׬¬„×ׄ×׬׬‰¬¬¬¬¬¬Œ¬¬¬¬¬¬¬¬ƒ¬¬B¬ƒ¬×¬×S¬‚O¬×¬¬‚ׂׂ¬×¬†¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬¬B¬„¬×¬#×#×#×#×#×#×#׃#×× ¬/¬‚Nׂ¬×¬¬‚ׂ¬×¬‚¬¬¬B¬ƒ¬×¬×"¬‚.¬‚Nׂ¬×¬¬ƒ׃׬‚¬¬¬B¬†¬×¬××#×#×#×#×#×#×#×#¬‚¬¬‹¬¬¬¬¬‚¬¬¬¬‚¬¬‡¬¬¬¬‡¬¬¬¬‚׈×××ׂ×ׂ×ׄ×××+ׂ¬×¬¬‚‚¬¬¬¬B¬ƒ¬×¬×¬‚¬¬¬¬¬¬¬†¬¬¬¬¬¬¬¬‘¬¬¬¬¬¬¬¬‚׉×××ׂ××××××+ׂ¬×¬¬¬l¬„¬×¬#×#×#×#×#×#×#׃#×׬‚¬¬¬¬¬¬¬†¬¬¬‚¬†¬¬‘¬¬¬¬¬¬¬¬‚ׂ×׃×××××××+ׂ¬×¬¬¬¬ƒ¬×¬×¬¬„¬¬„¬¬¬¬‚¬‚¬¬‚¬¬¬‚¬¬‡¬¬¬¬‚׊××××ׂ×ׂ×ׂ××+ׂ¬×¬¬¬¬†¬×¬××#×#×#×#×#×#×#×#¬‚¬‚¬‚¬†¬¬ ¬‚ ¬‚¬‚׆××ׂ+ׂ¬×¬¬¬¬ƒ¬×¬×¬¬…¬¬‚¬¬‚¬‚×ׂ+ׂ¬×¬¬¬¬„¬×¬#×#×#×#×#×#×#ׂ#×S¬‚Nׂ¬×¬¬¬¬ƒ¬×¬×S¬‚Nׂ¬×¬¬¬¬†¬×¬××#×#×#×#×#×#×#×S¬P׬¬¬¬ƒ¬×¬×S¬R¬¬¬¬„¬×¬#×#×#×#×#×#×#ׂ#׬)¬¬¬¬ƒ¬×¬×¬)¬¬¬¬†¬×¬××#×#×#×#×#×#×#׬)¬¬¬¬ƒ¬×¬×¬)¬;¬‚,¬‚¬'¬„¬×¬#×#×#×#×#×#×#×#×#×#¬×#×#¬×#×#¬×#×#¬×#×#¬×#×#¬×#×#¬×#×#¬×#×#¬×#׬=¬-¬¬&¬ƒ¬×¬×5ׂ×%¬¬¬¬¬¬‚¬¬¬¬¬„¬¬¬¬‚¬¬„¬¬¬¬¬†¬¬¬ƒ¬¬¬„¬¬¬¬‚¬¬‚¬ƒ¬¬¬ƒ¬¬¬ƒ¬¬¬¬E¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××%¬¬„¬¬¬„¬¬¬¬¬ƒ¬¬¬…¬¬¬‡¬¬¬¬¬„¬¬¬ƒ¬¬ƒ¬¬…¬¬¬‰¬¬¬¬¬„¬¬¬ƒ¬¬…¬¬¬ƒ¬¬‰¬¬¬¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬J¬ƒ¬×¬×5ׂ×%¬¬„¬¬¬‰¬¬¬¬¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬¬ƒ¬¬ƒ¬¬„¬¬¬ƒ¬¬…¬¬¬ƒ¬¬ƒ¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬…¬¬¬E¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×%¬¬„¬¬¬‰¬¬¬¬¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬¬‰¬¬¬¬¬‚¬¬ƒ¬¬†¬¬¬¬ƒ¬¬ƒ¬¬„¬¬¬ƒ¬¬…¬¬¬ƒ¬¬‚¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬„¬¬E¬ƒ¬×¬×5ׂ×%¬ƒ¬¬¬‰¬¬¬¬¬¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬‰¬¬¬¬¬†¬¬¬¬ƒ¬¬ƒ¬¬„¬¬¬ƒ¬¬…¬¬¬¬‰¬¬¬¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬…¬¬¬D¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××%¬¬¬‰¬¬¬¬¬¬¬‚¬¬¬†¬¬¬¬ƒ¬¬¬¬‰¬¬¬¬¬¬Š¬¬¬¬¬¬†¬¬¬¬ƒ¬¬¬„¬¬„¬¬¬„¬¬¬¬ˆ¬¬¬¬¬„¬¬¬ƒ¬¬¬†¬¬¬¬¬C¬ƒ¬×¬×5ׂ×%¬¬¬2¬¬¬ƒ¬¬ ¬ ¬ ¬C¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×%¬¬¬2¬¬¬ƒ¬¬ ¬ ¬¬¬C¬ƒ¬×¬×5ׂ×%¬¬¬^¬ƒ¬"¬ ¬¬D¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ×.¬ ׬ ¬X¬†¬×¬××#×#×#×#×#׬¬‚¬¬ ¬×¬h¬ƒ¬×¬×¬¬‚¬¬‚ ׂ¬×¬¬¬ƒ¬¬ƒ¬¬‚¬¬¬¬¬‚¬¬¬ƒ¬¬¬ƒ¬¬¬…¬¬¬¬„¬×¬#×#×#×#×#ׂ#׬¬‚¬¬‚ ׂ¬×¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬„¬¬¬‡¬¬¬¬¬¬„¬¬¬ƒ¬¬‰¬¬¬¬¬¬‰¬¬¬¬¬¬ ¬ƒ¬×¬×¬¬‚¬¬‚ ׂ¬×¬‡¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬ ¬„¬¬¬ƒ¬¬ƒ¬¬¬¬¬¬†¬×¬××#×#×#×#×#׬¬‚¬¬‚ ׂ¬×¬‡¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬Œ¬¬¬¬¬¬ ¬„¬¬¬ƒ¬¬‚¬‚¬¬¬¬ƒ¬×¬×¬¬‚¬¬‚ ׂ¬×¬¬¬Œ¬¬¬¬¬¬¬ƒ¬¬Ž¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬…¬¬¬¬‰¬¬¬¬¬¬ ¬„¬×¬#×#×#×#×>¬‚ ׂ¬×¬¬¬‰¬¬¬¬¬‚¬¬¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬¬ˆ¬¬¬¬¬¬ƒ¬×¬× ××$× ×¬‚ ׂ¬×¬¬¬¬¬¬ ¬¬¬†¬×¬××#×#×#ׄ#××:‚׬‚ ׂ¬×¬ ¬ ¬¬¬¬ ¬¬¬ƒ¬×¬׃׬¬!¬ƒ×¬‚ ׂ¬×¬ ¬ƒ¬ ¬¬¬¬¬„¬×¬#×#×#×#׃׬¬ ¬ƒ×¬ ‚¬×¬h¬ƒ¬×¬׃׬¬‹¬¬¬¬¬¬ƒ¬¬¬ ¬ƒ×¬ ׬h¬†¬×¬××#×#×#×…#×׬¬ƒ¬¬Œ¬¬¬¬¬¬¬¬ƒ×¬¬¬ƒ¬×¬׃׬…¬¬¬¬Š¬¬¬¬¬¬¬ƒ×¬¬¬„¬×¬#×#×#×#׃׬¬ˆ¬¬¬¬¬„¬¬¬¬ƒ×¬¬¬ƒ¬×¬׃׬¬ ¬¬#¬ƒ×¬¬¬†¬×¬××#×#×#×…#×׬ ¬¬#¬ƒ×¬ ׬¬ ¬ ¬¬y¬ƒ¬×¬׃׬8¬ƒ×¬ ¬×#¬%¬ ¬¬x¬„¬×¬#×#×#×#×>¬‚ ׂ¬×¬¬ƒ¬¬ƒ¬¬¬„¬¬¬¬¬‚¬‚¬‚¬¬„¬¬¬ƒ¬¬¬¬ƒ¬¬¬x¬ƒ¬×¬׃××8׃׬‚ ׂ¬×¬‰¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬…¬¬¬ƒ¬¬¬¬ƒ¬¬¬x¬†¬×¬××#×#×#×…#×××8׃׬‚ ׂ¬×¬‰¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬ƒ¬¬…¬¬¬ƒ¬¬¬ƒ¬¬¬¬x¬ƒ¬×¬׃××8׃׬‚ ׂ¬×¬Š¬¬¬¬¬¬„¬¬¬¬Œ¬¬¬¬¬¬¬ƒ¬¬¬¬‚¬¬…¬¬¬ƒ¬¬¬¬„¬¬¬¬x¬„¬×¬#×#×#×#׃××8׃׬‚ ׂ¬×¬Š¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬x¬ƒ¬×¬׃××8׃׬‚ ׂ¬×¬‚¬‚¬ƒ¬¬¬ƒ¬¬…¬¬¬‚¬¬‚¬‚¬¬‡¬¬¬¬¬ƒ¬¬¬ƒ¬¬x¬†¬×¬××#×#×#×…#×××8׃׬‚ ׂ¬×¬‚¬‚¬ƒ¬¬¬ƒ¬¬…¬¬¬‚0¬ƒ¬¬¬ƒ¬¬x¬ƒ¬×¬׃××8׃׬‚ ׂ¬×¬¬¬¬¬ƒ¬¬„¬¬¬1¬¬¬ƒ¬¬x¬„¬×¬#×#×#×#׃××8׃׬‚ ׂ¬×¬¬¬¬ƒ¬¬¬ƒ¬¬¬¬¬†¬¬¬¬y¬ƒ¬×¬׃××8׃׬ ‚¬×¬h¬†¬×¬××#×#×#×…#×××8׃׬ ׬h¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬ ׬¬]¬†¬×¬××#×#×#×…#×××8׃׬ ¬×¬h¬ƒ¬×¬׃××8׃׬‚ ׂ¬×¬‚¬¬¬¬ƒ¬¬¬†¬¬¬¬‡¬¬¬¬¬.¬„¬×¬#×#×#×#׃××8׃׬‚×ׂ¬×¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬ˆ¬¬¬¬¬-¬ƒ¬×¬׃××8׃׬„××ׂ¬× ¬ƒ¬¬¬¬¬ƒ¬¬‰¬¬¬¬¬¬ƒ¬¬¬.¬†¬×¬××#×#×#×…#×××8׃׬ƒ×ׂ¬× ¬ƒ¬¬¬¬¬ƒ¬¬‰¬¬¬¬¬¬†¬¬¬¬/¬ƒ¬×¬׃××8׃׬†×ׄ×׬׬…¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬ˆ¬¬¬¬¬-¬„¬×¬#×#×#×#׃××8׃׬„××ƒ×¬× ¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬‡¬¬¬¬¬.¬ƒ¬×¬׃××8׃׬‚×…×¬× ¬ƒ¬¬¬ ¬¬2¬†¬×¬××#×#×#×…#×××8׃׬‚ׄ׬׬¬ƒ¬¬¬ ¬¬2¬ƒ¬×¬׃××8׃׬‚ ׂ¬×¬‚¬¬%¬¬2¬„¬×¬#×#×#×#׃××8׃׬ ‚¬×¬h¬ƒ¬×¬׃××8׃׬ ׬h¬†¬×¬××#×#×#×…#×××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬„¬×¬#×#×#×#׃××8׃׬¬¬ƒ¬×¬׃××8׃׬¬¬†¬×¬××#×#×#ׄ#××Io׃׬¬¬ƒ¬×¬׃×G×o׃׬¬¬„¬×¬#×#×#×#׃××;×o׃׬¬¬ƒ¬×¬׃×G×o׃׬ ×`¬¬}¬†¬×¬××#×#×#×…#×××ׇ×××/×o׃׬ ¬×i¬}¬ƒ¬×¬׃×ׂ׉×××0×o׃׬‚ ׂ¬×¬¬ƒ¬¬¬†¬¬¬¬‰¬¬¬¬¬¬¬‚¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬z¬„¬×¬#×#×#×#׃×ׂ׉×××0×o׃׬‚ ׂ¬×¬¬ƒ¬¬ƒ¬¬†¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬…¬¬¬y¬ƒ¬×¬׃×ׂ×ׄ××/×o׃׬‚ ׂ¬×¬¬¬ƒ¬¬†¬¬¬¬…¬¬¬„¬¬¬¬¬‘¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬ƒ¬¬y¬†¬×¬××#×#×#×…#××ׂ ׂ0×o׃׬‚ ׂ¬×¬¬¬ƒ¬¬…¬¬¬Ž¬¬¬¬¬¬¬¬¬‚¬¬„¬¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬„¬¬¬y¬ƒ¬×¬׃××ׂ3×o׃׬‚ ׂ¬×¬¬¬Œ¬¬¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬•¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬¬ƒ¬¬¬…¬¬¬y¬„¬×¬#×#×#×#׃×G×o׃׬‚ ׂ¬×¬¬Œ¬¬¬¬¬¬¬‰¬¬¬¬¬¬‚¬†¬¬¬¬Œ¬¬¬¬¬¬ƒ¬¬¬¬¬„¬¬¬z¬ƒ¬×¬׃×G×o׃׬‚ ׂ¬×¬¬ ¬¬¬¬¬¬†¬×¬××#×#×#×…#××G×o׃׬‚ ׂ¬×¬¬ ¬ ¬¬¬¬¬¬ƒ¬×¬ׂ×Io׃׬‚ ׂ¬×¬8¬¬¬¬¬¬„¬×¬#×#×#×#׃×G×o׃׬ ‚¬×¬h¬ƒ¬×¬׃×G×o׃׬ ׬h¬†¬×¬××#×#×#×…#××G×o׃׬¬¬ƒ¬×¬׃×G×o׃׬¬¬„¬×¬#×#×#×#׃××™××××××××××××'×o׃׬¬¬ƒ¬×¬׃××™××××××××××××&×o׃׬¬¬†¬×¬××#×#×#×…#××G×o׃׬¬¬ƒ¬×¬׃×G×o׃׬¬¬„¬×¬#×#×#×#׃×G×o׃׬ ׬¬¬¬¬¬ƒ¬×¬׃×G×o׃׬ ¬×'¬¬¬¬¬†¬×¬××#×#×#×…#××G×o׃׬‚ ׂ¬×¬¬†¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬‚¬¬ƒ¬¬¬ˆ¬¬¬¬¬¬„¬¬¬ƒ¬¬¬¬¬ƒ¬¬¬¬l¬ƒ¬×¬׃×G×o׃׬‚×ׂ¬×¬¬†¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬†¬¬¬¬¬¬ƒ¬¬„¬¬¬l¬„¬×¬#×#×#×#ׂ×Io׃׬„××ׂ¬×¬¬†¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬†¬¬¬¬ˆ¬¬¬¬¬‡¬¬¬k¬ƒ¬×¬׃×G×o׃׬ƒ×ׂ¬×¬¬†¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬‚¬¬ƒ¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬…¬¬¬‰¬¬¬¬¬¬ˆ¬¬¬¬k¬†¬×¬××#×#×#×…#×× ×#ׂ×o׃׬†×ׄ×׬׬™¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬‰¬¬¬¬¬¬¬Ž¬¬¬¬¬¬¬¬¬†¬¬¬¬ƒ¬¬…¬¬¬‰¬¬¬¬¬k¬ƒ¬×¬׃×3ׂ×o׃׬„×׃׬׬¬–¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬ƒ¬¬¬…¬¬¬‰¬¬¬¬¬¬k¬„¬×¬#×#×#×#׃×ׇׂ××ׄ×××׆×××××ׇ×××××o׃׬‚ׅ׬׬¬ ¬#¬¬¬¬ƒ¬×¬׃×ׇׂ××׃×׈××ׄ×׆×××o׃׬‚ׄ׬׬¬ ¬#¬¬¬¬†¬×¬××#×#×#×…#××׉××××׃×ׄ××…××׆×××o׃׬‚ ׂ¬×¬¬ ¬ ¬ ¬"¬y¬ƒ¬×¬׃×׆×ׄ×ׂ××ׂׄ×××××o׃׬ ‚¬×¬h¬„¬×¬#×#×#×#׃××…× ×‚×…×ׂ×o׃׬ ׬h¬ƒ¬×¬׃××ׂ ×$×o׃׬¬¬†¬×¬××#×#×#×…#××G×o׃׬¬¬ƒ¬×¬׃×G×o׃׬¬¬„¬×¬#×#×#×#׃×.××o׃׬¬¬ƒ¬×¬׃×G×o׃׬¬¬†¬×¬××#×#×#×…#××ׇׂ××ׄ××ׂׂ׊×××××ׂ×××o׃׬¬¬ƒ¬×¬׃×ׇׂ××׃×ׂ׆××׉×××××o׃׬¬¬„¬×¬#×#×#×#׃×׉××××׃×׆××××ׄ××××o׃׬ × ¬¬C¬ƒ¬×¬׃×׆×ׄ×ׂ××׆×׆×××׉××××××o׃׬ ¬×¬h¬†¬×¬××#×#×#×…#×××…× ×‚×…×#×o׃׬‚ ׂ¬×¬„¬¬¬Š¬¬¬¬¬¬‚¬¬‚¬ƒ¬¬¬¬¬¬¬¬¬¬¬‚¬¬¬ƒ¬×¬׃××ׂ ×ׂ×o׃׬‚×ׂ¬×¬„¬¬¬Š¬¬¬¬¬¬ƒ¬¬‰¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬„¬×¬#×#×#×#׃×G×o׃׬„××ׂ¬×¬„¬¬¬Š¬¬¬¬¬¬ƒ¬¬‡¬¬¬¬¬†¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬ƒ¬×¬׃×G×o׃׬ƒ×ׂ¬×¬„¬¬¬Š¬¬¬¬¬¬‚¬¬¬¬…¬¬¬¬„¬¬¬¬ƒ¬¬‚¬¬¬†¬×¬××#×#×#×…#×××;×o׃׬†×ׄ×׬׬¬¬¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬†¬¬¬¬†¬¬¬¬¬¬ƒ¬¬¬ƒ¬×¬׃×G×o׃׬„×׃׬׬‘¬¬¬¬¬¬¬¬¬ƒ¬¬¬ˆ¬¬¬¬†¬¬¬¬…¬¬¬¬„¬¬¬¬„¬×¬#×#×#×#׃×ׇׂ×××××××××××"×o׃׬‚ׅ׬׬ ¬ ¬ ¬¬¬¬'¬ƒ¬×¬׃×ׇׂ××׃×,×o׃׬‚ׄ׬׬ ¬ ¬ ¬¬¬¬'¬†¬×¬××#×#×#×…#××׉××××׃×,×o׃׬‚ ׂ¬×¬¬¬¬#¬¬'¬ƒ¬×¬׃×׆×ׄ×ׂ××+×o׃׬ ‚¬×¬h¬„¬×¬#×#×#×#׃××…× ×‚,×o׃׬ ׬h¬ƒ¬×¬׃××ׂ4×o׃׬¬¬†¬×¬××#×#×#×…#××G×o׃׬¬¬ƒ¬×¬׃×G×o׃׬¬¬„¬×¬#×#×#×#׃×G×q‚׬¬¬ƒ¬×¬ׂ×Io¬ƒ×#¬Ë¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬†¬×¬××#×#×#×…#××G׃¬¬X¬ƒ×"¬K¬¬¬ƒ¬×¬׃×Gׄ¬¬ X¬ƒ×¬ ×(¬¬¬5¬„¬×¬#×#×#×#׃×G×…¬¬×¬ƒ×¬‚X¬ƒ×¬ ¬×¬'¬#¬¬¬ƒ¬×¬׃×G×…¬¬×¬ƒ×¬‚X¬ƒ×¬‚ ׂ¬×¬¬¬ƒ¬¬¬…¬¬¬ƒ¬¬¬ƒ¬¬¬„¬¬¬¬‚¬¬¬†¬×¬××#×#×#×…#×××™××××××××××××'×…¬¬×¬ƒ×¬‚X¬ƒ×¬‚×ׂ¬×¬ƒ¬¬¬¬ƒ¬¬‹¬¬¬¬¬¬¬ƒ¬¬¬„¬¬¬ƒ¬¬…¬¬¬ƒ¬¬…¬¬¬¬ƒ¬×¬׃××™××××××××××××&×…¬¬×¬ƒ×¬‚X¬ƒ×¬„××ׂ¬×¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬„¬¬¬ƒ¬¬…¬¬¬ƒ¬¬ƒ¬¬¬„¬×¬#×#×#×#׃×G×…¬¬×¬ƒ×¬‚X¬ƒ×¬ƒ×ׂ¬×¬ƒ¬¬„¬¬¬ƒ¬¬‚¬ƒ¬¬ƒ¬¬¬„¬¬¬ƒ¬¬…¬¬¬ƒ¬¬„¬¬¬¬ƒ¬×¬׃×G×…¬¬×¬ƒ×¬‚X¬ƒ×¬†×ׄ×׬׬¬„¬¬¬ƒ¬¬…¬¬¬‰¬¬¬¬¬¬„¬¬¬ƒ¬¬…¬¬¬¬ƒ¬¬¬†¬×¬××#×#×#×…#××G×…¬¬×¬ƒ×¬‚X¬ƒ×¬„×׃׬׬ƒ¬¬¬¬Ž¬¬¬¬¬¬¬¬¬¬„¬¬¬„¬¬¬¬‚¬¬¬¬ƒ¬×¬׃×Gׄ¬¬ׂׂX¬ƒ×¬‚ׅ׬׬¬¬¬¬ƒ¬¬%¬„¬×¬#×#×#×#׃×G׃¬¬X¬ƒ×¬‚ׄ׬׬ƒ¬¬¬¬¬ƒ¬ ¬¬¬ƒ¬×¬׃×G×o¬ƒ×¬‚ ׂ¬×¬¬¬¬ƒ¬¬%¬†¬×¬××#×#×#ׄ#××:‚׬ ‚¬×¬K¬¬¬ƒ¬×¬׃×´×´×××!× ׂ2׃׬ ׬h¬„¬×¬#×#×#×#׃×´mׂ2׃×"¬Í¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬×¬׃×´‚××´‡××´××´´×´×‚×ׇ×××ׂׄ×ׂ×× ×׃ׂ×ׂ×××ׇ××ׄ××0׃׬¬¬†¬×¬××#×#×#×…#××´‚××´ˆ××´××´××´ׂ׋××× ×‚×…×× ×׃׎××××××׈××׈××/׃׬¬¬ƒ¬×¬׃×´‚××´†××´××´×´ׂ׋××××…×××××…××××××××׆×׉×××/׃׬¬¬„¬×¬#×#×#×#׃×´׋´´××´××´´××´×ׄ××׊×××××××…×××ׂ×ׂ××׉×××××0׃׬¬¬ƒ¬×¬׃×´‚××´‚××´ׂׂׂ׆××ׂׂ ׂ×…×ׂ5׃׬¬¬†¬×¬××#×#×#×…#××´׆´××´××´××…× ×‰×××ׂ×…× ×‚×…×ׂ5׃׬¬¬ƒ¬×¬׃×´×"׃׬¬¬„¬×¬#×#×#×#×>¬¬¬ƒ¬×¬×ƒ× ¬B´‚××´‚××c´ƒ×¬¬¬†¬×¬××#×#×#×…#×× ¬B´‚××´‚××c´ƒ×¬¬¬ƒ¬×¬×ƒ× ¬;´‡××´´××´ׂ´´׉´´××´××´´ׂ´´׉´´××´××´´ׂ´´×>´ƒ×¬¬¬„¬×¬#×#×#×#ׅ׬¬ƒ¬¬;´›××´´××´××´××´××´××´××´××´××´׎´××´´××´××´××´×>´ƒ×¬¬¬ƒ¬×¬׆׬¬×„¬¬<´×–´´××´××´××´××´××´××´××´××´××´´××´××´××´×>´ƒ×¬¬¬†¬×¬××#×#×#ׇ#×׬¬ׄ¬¬<´ׂ´´ׂ´´׉´´××´××´´×´ׂ´´×…´××´´ׂ´´×?´ƒ×¬¬¬ƒ¬×¬×ƒ× ¬=´‚××´‚××´‚××M´ƒ×¬¬ ¬„¬×¬#×#×#×#×ƒ× ¬=´‚××´…××´××´‚××I´ƒ×¬¬ ¬ƒ¬×¬×ƒ× ¬´.´ƒ×¬¬ ¬†¬×¬××#×#×#ׄ#××:‚׬¬ ¬ƒ¬×¬× ××$× ×p¬‚¬¬„¬×¬#×#×#×#×>r¬¬¬ƒ¬×¬×5ׂ×%¬¬¬¬ƒ¬¬ƒ¬¬¬¬¬‹¬¬¬¬¬¬¬¬‚¬¬¬¬ˆ¬¬¬¬¬¬¬„¬¬…¬¬¬ƒ¬¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬¬‚¬¬¬B¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××%¬¬¬¬ƒ¬¬ƒ¬¬„¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬¬„¬¬¬‹¬¬¬¬¬¬¬…¬¬¬‡¬¬¬¬‹¬¬¬¬¬¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬‹¬¬¬¬¬¬ƒ¬¬F¬ƒ¬×¬×5ׂ×$¬‡¬¬¬¬¬ƒ¬¬ƒ¬¬„¬¬¬¬†¬¬¬¬†¬¬¬¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬B¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×$¬‡¬¬¬¬¬ƒ¬¬‚¬¬ƒ¬¬‚¬¬…¬¬¬¬…¬¬¬ƒ¬¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬†¬¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬¬B¬ƒ¬×¬×5ׂ×#¬¬¬ˆ¬¬¬¬¬ƒ¬¬„¬¬¬¬†¬¬¬¬†¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬¬„¬¬¬¬‰¬¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬¬A¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××#¬¬¬‡¬¬¬¬„¬¬¬„¬¬¬†¬¬¬¬†¬¬¬¬‚¬‰¬¬¬¬¬¬ƒ¬¬¬…¬¬¬¬†¬¬¬¬ƒ¬¬¬¬ˆ¬¬¬¬¬¬„¬¬¬†¬¬¬…¬¬¬¬ƒ¬¬‚¬¬¬@¬ƒ¬×¬×5ׂ×#¬¬¬„¬¬ ¬¬¬-¬¬¬¬¬¬ ¬ ¬@¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬ ¬ƒ¬ ¬¬¬-¬¬¬¬¬¬ ¬¬¬@¬ƒ¬×¬×5ׂ×"¬ ¬ƒ¬¬;¬¬¬…¬¬¬ ¬ ¬¬A¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬‚¬×¬¬¬\¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllZl‚¬ƒ¬×¬lll6l‚ll„ll¬ƒ¬×¬"l‚××l‚××Rl‚××l‚××!l‚××l{lׄll×…ll¬ƒ¬×¬"l‚××l‚××Ql‚××l‚×× l‚××l{l× ¬…ll× ¬†ll¬ƒ¬×¬l‚××l‚××l‚××l‚××lƒ××lׂll×l†××ll××lƒ××lׂll׃l××l×l׃l××lׄll××l×l‚××l׉ll××l××ll×l‚××l×l„××llׂll× l‚××lׄll××l×lSl׬‚¬…ll× ¬†ll¬ƒ¬×¬l‚××l‚××l‚××l‚××l××l××ll××l××ll××l†××ll××l…××l××l‘××ll××l××ll××ll××l‚×× l†××ll××l†××ll××l›××ll××ll××l××l××l××ll××ll×× l™××ll××ll××ll××ll××l××ll××l‚××l‰××ll××l××l†××ll××lRl׬‚¬…ll׬‚¬Š¬¬ll¬ƒ¬×¬l‚××l×l‚×× lבll××ll××l××ll××ll×l†××ll××l‘××ll××l××ll××ll××l‚××l†××ll××l†××ll××l†××ll××lׄll××l‚××lŠ××ll××ll××l†××ll××l×l‰××ll××l××l†××ll××lRl× ¬…ll׬†¬¬¬†ll¬ƒ¬×¬l‚××l×l‚×× l—××ll××ll××ll××l××ll××ll×l‚××l‚××l׋l××ll××ll××l‚××l†××ll××l†××ll××l„××llׂllׂllׄll××l× lˆ××ll××llׇl××ll××l…××l××l‰××ll××l××l†××ll××lRl׬‚¬…ll׬¬†ll¬ƒ¬×¬lŒ××ll××ll××ll×l¤××ll××ll××ll××l××ll××l××ll××ll××ll××l‚××l××l××ll××ll××l‚××l×l†××ll××l›××ll××ll××l××l××l××ll××ll××l×l‘××ll××ll××l××ll××l×l‰××ll××l××l×lSl׬‚¬…ll׬‚¬†ll¬ƒ¬×¬lŽ××ll××ll××ll×× l×lׂllבll××ll××ll××ll××lׂllׂllׂll× l‚××l‚×× l†××ll××l‚××l׉ll××l××ll×l‚×× l‚××lׂllׂll×l×lׂll×l‚××lVl׬‚¬…ll׬¬†ll¬ƒ¬×¬lŽ××ll××ll××ll×× l×lŠ××ll××ll××l‚×× l‚××l‚×× l†××ll××l‚××l‚×× l‚××l‚××l× l‚××l‚××lVl׬†¬¬¬…ll׬†¬¬¬†ll¬ƒ¬×¬l…××l××l…××l×× l‚××l‚××l‚××l‚××l†××ll××l†××ll××l†××ll××l‚××l‚×× lŠ××ll××ll××l× l‚××l†××ll××lRl׬†¬¬¬…ll׬‚¬Š¬¬ll¬ƒ¬×¬l…××l××lƒ××l×l‚××l‚××l…××l××l‚××l×l×l×l‚××l‚××l×l‚××l‚××l×lSl׬¬…ll× ¬†ll¬ƒ¬×¬lll6l× ¬…ll× ¬†ll¬ƒ¬×¬lll6l׃ll×…ll¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllZl‚¬‚¬×¬¬¬\¬¬×××]׬¬¬_¬K¶B¶lpº9d3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿc¬^‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬‚¬L¬‚¬×¬¬ ¬„×׬K¬‚¬×¬¬ ¬„×׬K¬‚¬×$¬¬B‚×׬K¬K¬‚¬×$¬×IL¬×:„×׬×I¬×I¬‚¬×$¬×H¬„×G‚¬×:¬‚¬„×׬‚¬×H¬‚¬×H¬‚¬‚¬×$¬×H¬„×F¬ƒ¬×:¬‰×¬¬×׬‚¬×H¬‚¬×H¬‚¬‚¬×$¬×H¬„×F¬ƒ¬×:¬ˆ×××׬‚¬×H¬‚¬×H¬‚¬‚¬×$¬×H¬„×F¬ƒ¬×:¬ׄ×׬‚¬×H¬‚¬×H¬‚¬‚¬×$¬×¬%¬„׬*¬ƒ¬×¬¬×„¬¬¬×H¬‚¬×¬ ¬¬‚¬‚¬×$¬×H¬„×F¬ƒ¬×:¬ ׬‚¬×H¬‚¬×*¬¬‚¬‚¬×$¬×¬¬¬‚¬¬ƒ¬¬¬¬„׬¬¬‰¬¬¬¬¬¬¬¬ƒ¬×¬¬ƒ¬¬Š¬¬¬¬¬¬¬×¬‚¬×¬¬‚¬¬ƒ¬¬¬ƒ¬¬¬‚¬×¬¬¬„¬¬¬¬‚¬‚¬×$¬×¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬„׬¬…¬¬¬ˆ¬¬¬¬¬¬ƒ¬×¬¬ƒ¬¬Š¬¬¬¬¬¬¬×¬‚¬×¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬×¬¬„¬¬¬…¬¬¬¬‚¬‚¬×$¬×¬¬¬„¬¬¬ƒ¬¬ƒ¬¬„׬¬…¬¬¬…¬¬¬¬ƒ¬×¬¬ƒ¬¬ƒ¬¬„¬¬¬¬×¬‚¬×¬¬¬ƒ¬¬ƒ¬¬¬¬‚¬×¬¬„¬¬¬ƒ¬¬¬‚¬‚¬×$¬×¬¬¬¬‚¬¬‚¬„׬ˆ¬¬¬¬¬‡¬¬¬¬¬¬ƒ¬×¬¬ƒ¬¬†¬¬¬¬¬¬×¬‚¬×¬¬‚¬¬ƒ¬¬‚¬¬‚¬×¬¬ƒ¬¬„¬¬¬¬‚¬‚¬×$¬×¬¬¬ƒ¬¬…¬¬¬„׬‰¬¬¬¬¬¬ˆ¬¬¬¬¬¬ƒ¬×¬–¬¬¬¬¬¬¬¬¬¬¬¬¬×¬‚¬×¬ ¬‰¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬×¬ƒ¬¬¬…¬¬¬¬‚¬‚¬×$¬×¬¬¬¬¬†¬¬¬¬¬„׬†¬¬¬¬‰¬¬¬¬¬¬¬ƒ¬×¬¬“¬¬¬¬¬¬¬¬¬ ¬× ¬‚¬×¬¬†¬¬¬¬¬ƒ¬¬¬‚¬×¬¬¬„¬¬¬¬‚¬‚¬×$¬×¬¬¬¬¬„׬‚¬ ¬¬¬ƒ¬×¬¬ ¬„×× ¬‚¬×¬¬¬‚¬×¬¬¬¬‚¬‚¬×$¬×¬¬¬¬„׬‚¬ ¬¬ƒ¬×¬¬ ¬ƒ× ¬‚¬×¬¬¬¬‚¬×¬¬¬¬‚¬‚¬×$¬×¬¬¬„׬¬+¬ƒ¬×¬‚¬¬¬ ¬‚ ¬‚¬×¬¬¬‚¬×¬¬¬¬‚¬‚¬×$¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬×H¬‚¬‚¬×$¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬×H¬‚¬‚¬×$¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬×H¬‚¬‚¬×$¬×H¬„×F¬ƒ¬×H¬‚¬×H¬‚¬×H¬‚¬‚¬×$¬×H¬ƒHׂ¬×H¬‚¬×H¬‚¬×H¬‚¬‚¬×$¬J×L¬J׬J׬J׬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬ƒ¬×¬J¬ƒ¬×¬J¬‚¬×¬¬¬\¬…¬×¬#׬„#×#׬#¬„×#×#¬‡×#×#×#׬…#×#×#¬†×#×#×#¬×¬ƒ#×# ¬…#×#×# ¬†×#×#×#¬°×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬‰×#×#×#×#׬¬¬$¬…¬×¬×׬׬‚×׬׬׬׬׬‚××¬× ¬×¬×¬×¬/׬ ׬¬¬$¬…¬×¬#׬É#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬Ð×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬Š×#×#×#×#×#¬¬¬$¬…¬×¬×׬I׬J׬׬4¬×O× ¬…¬×¬#׬É#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬Ê×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬…×#×#׬4¬N× ¬…¬×¬×׬J׬J׬׃¬¬4¬‚׬K¬‚× ¬…¬×¬#׬ÿ#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#˜×#×#×#×#×#×#×#×#×#×#×#×#¬‰×#×#×#¬¬4¬‚׬K¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬K¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬K¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬K¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬K¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬×>׬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬¬<¬×¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬‚¬;¬×¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬‚¬;¬×¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬‚¬;¬×¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬‚¬;¬×¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬‚¬;¬×¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬‚¬;¬×¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬‚¬;¬×¬‚× ¬…¬×¬#׬†#×#×#׬ˆ#×#×#×#׬‹×#×#×#×#×#׬†×#×#×#¬†×#×#×#¬†×#×#×#¬‡#×#×#×#¬ˆ×#×#×#×#¬¬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬×#×#×#×#×#×#×#׬‰×#×#×#¬¬4¬‚׬‚¬;¬×¬‚× ¬…¬×¬×׬׬׬ × ¬×¬×¬×¬× ¬×¬,׬ × ¬׃¬¬4¬‚׬‚¬;¬×¬‚× ¬…¬×¬#׬†#×#×#׬ˆ#×#×#×#׬‰×#×#×#×#× ¬ƒ#×#¬†×#×#×#¬„×#×#¬„#×#× ¬…#×#×#¬¬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬‹×#×#×#×#×#׬„#¬¬4¬‚׬‚¬;¬×¬‚× ¬…¬×¬×׬׬׬׬ׂ¬¬×¬×¬×¬×¬×¬×¬,׬ ׬4¬‚׬‚¬;¬×¬‚× ¬…¬×¬#׬†#×#×#׬‡#×#×#×#¬#¬‡#×#×#×#¬Œ×#×#×#×#×#×#¬†×#×#×#¬„×#×#¬†×#×#×#¬†×#×#×#¬„×#×#¬¬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬Š×#×#×#×#×#¬†×#×#×#¬4¬‚׬‚¬;¬×¬‚× ¬…¬×¬×׬׬׬׬׬ ׬׬׬׬׬׬,׬ ׬ ׬4¬‚׬‚¬;¬×¬‚× ¬…¬×¬#׬†#×#×#׬†#×#×#׬‚#׬…×#×#׬#×#×#×#×#×#×#¬†×#×#×#¬„×#×#¬…×#×#׬ˆ#×#×#×#׬ƒ#×#¬¬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬‰×#×#×#×#׬‹#×#×#×#×#×#¬4¬‚׬‚¬;¬×¬‚× ¬…¬×¬×׬׬׬׬׬׬׬׬׬׬׬,×¬×¬× ¬4¬‚׬‚¬;¬×¬‚× ¬…¬×¬#׬†#×#×#׬…#×#×#¬ƒ×#׬„#×#׬ƒ#×#¬†×#×#×#¬„×#×#¬…×#×#׬ˆ#×#×#×#׬ƒ#×#¬¬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬ˆ×#×#×#×#¬‡×#×#×#× ¬4¬‚׬‚¬;¬×¬‚× ¬…¬×¬×׬׬׬׬׬׬׬׬׬׬׬,×¬×¬× ¬4¬‚׬;‚¬×¬‚× ¬…¬×¬#׬†#×#×#׬…#×#×#¬…#×#×#¬„#×#׬†#×#×#׬ƒ#×#¬†×#×#×#¬„×#×#¬…×#×#׬ˆ#×#×#×#׬ƒ#×#¬¬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬ˆ×#×#×#×#¬‡×#×#×#× ¬4¬‚׬=׬‚× ¬…¬×¬×׬׬׬׬׬׬׬׬׬׬׬׬,׬׬׃¬¬4¬‚׬K¬‚× ¬…¬×¬#׬ƒ#×#¬„#×#׬…#×#×#¬„×#×#¬„×#×#¬„×#×#¬ƒ×#׬„×#×#¬†×#×#×#¬„#×#׬„×#×#¬«#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬ˆ×#×#×#×#¬“×#×#×#×#×#×#×#×#¬¬4¬‚׬K¬‚× ¬…¬×¬×× ¬×¬×¬× ¬× ¬× ¬× ¬×¬(׬׬׃¬¬4¬‚׬K¬‚× ¬…¬×¬#׬#¬„×#×#¬‡×#×#×#׬…#×#×#¬†×#×#×#¬×¬ƒ#×# ¬…#×#×# ¬†×#×#×#¬¨×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬‰×#×#×#×#׬’#×#×#×#×#×#¬¬×#¬¬4¬‚׬K¬‚× ¬…¬×¬×׬‚×׬׬׬׬׬‚××¬× ¬×¬×¬×¬'׬ ׬ ׬4¬‚׬K¬‚× ¬ʬ׬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬È×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬Š×#×#×#×#×#¬†×#×#×#¬„#¬¬4¬‚׬K¬‚× ¬ƒ¬×¬G׬B׬׬„׬¬4¬‚׬K¬‚× ¬ʬ׬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬Â×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬…×#×#׬…×#¬¬4¬‚׬K¬‚× ¬ƒ¬×¬H׬B×¬× ¬׃¬¬4¬‚×s¬Q¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ב#×#×#×#×#×#×#×#×#¬‰×#×#×#×#׬ˆ#×#×#¬¬4¬‚×s¬×O¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚×s¬×N¬‚¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚×s¬×N¬‚¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚×s¬×N¬‚¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬ ×_¬×N¬‚¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬ ¬×_¬×N¬‚¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬‚ ׂ¬×¬ƒ¬¬¬ƒ¬¬¬…¬¬¬¬:¬×¬×5¬‚¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬‚ ׂ¬×¬¬¬ƒ¬¬ƒ¬¬…¬¬¬9¬×¬6¬‚¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬‚ ׂ¬×¬¬¬ƒ¬¬ƒ¬¬…¬¬=¬×¬×¬×¬×¬×¬×¬‚×׬׉¬¬×¬¬×¬¬×¬‚¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬‚ ׂ¬×¬¬¬ƒ¬¬‚¬¬„¬¬9¬×¬‡¬×¬×¬¬¬×¬×¬¬×¬¬¬×¬‰¬×¬¬¬¬¬‚¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬‚ ׂ¬×¬¬…¬¬¬ƒ¬¬…¬¬¬9¬×¬¢×¬¬×¬×¬×¬¬×¬¬×¬¬×¬¬¬×¬¬¬‚¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬‚ ׂ¬×¬¬„¬¬‚¬¬…¬¬¬¬:¬×¬ž×¬¬×¬×¬×¬¬××××׬¬¬¬×¬‚¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬‚ ׂ¬×¬¬¬?¬×¬×™¬¬×¬×¬¬×׬¬×¬¬¬×׬‚¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬‚ ׂ¬×¬¬¬?¬×¬ž¬×¬×׬×׬׬׬׬׬¬×׬‚¬‚× ¬‰¬×¬#×#×#׬‹×#×#×#×#×#׬†×#×#×#¬†×#×#×#¬†×#×#×#¬‡#×#×#×#¬ˆ×#×#×#×#¬¬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬×#×#×#×#×#×#×#׬Ž×#×#×#×#×#×#×#¬†#×#¬¬4¬‚׬‚ ׂ¬×¬¬¬?¬×¬‹×¬¬×¬¬¬¬¬¬¬¬¬¬¬¬¬‚¬‚× ¬ƒ¬×¬×¬ × ¬×¬×¬×¬× ¬×¬,׬ × ¬ ׬4¬‚׬ ‚¬×_¬×¬†×¬¬×6¬‚¬‚× ¬‰¬×¬#×#×#׬‰×#×#×#×#× ¬ƒ#×#¬†×#×#×#¬„×#×#¬„#×#× ¬…#×#×#¬¬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬‹×#×#×#×#×#׬†#×#×#׬4¬‚׬ ×_¬×¬×7¬‚¬‚× ¬ƒ¬×¬×¬×¬ׂ¬¬×¬×¬×¬×¬×¬×¬,׬ ׬׬4¬‚×s¬×¬8¬‚¬‚× ¬ˆ¬×¬#×#×#¬#¬‡#×#×#×#¬Œ×#×#×#×#×#×#¬†×#×#×#¬„×#×#¬†×#×#×#¬†×#×#×#¬„×#×#¬¬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬Š×#×#×#×#×#¬†×#×#×#¬„×#×#¬†#×#×#׬4¬‚×s¬×N¬‚¬‚× ¬ƒ¬×¬×¬×¬×¬ ׬׬׬׬׬׬,׬ ׬ ׬׬׬4¬‚×s¬×N¬‚¬‚× ¬‡¬×¬#×#׬‚#׬…×#×#׬#×#×#×#×#×#×#¬†×#×#×#¬„×#×#¬…×#×#׬ˆ#×#×#×#׬ƒ#×#¬¬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬‰×#×#×#×#׬‹#×#×#×#×#×#¬ƒ×#׬‰#×#×#×#×#¬4¬‚×s¬×N¬‚¬‚× ¬ƒ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬,×¬×¬× ¬×¬4¬‚×s¬×N¬‚¬‚× ¬†¬×¬#×#¬ƒ×#׬„#×#׬ƒ#×#¬†×#×#×#¬„×#×#¬…×#×#׬ˆ#×#×#×#׬ƒ#×#¬¬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬ˆ×#×#×#×#¬‡×#×#×#× ¬×#×#×#×#×#×#׬4¬‚×s¬×N¬‚¬‚× ¬ƒ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬,×¬×¬× ¬ × ¬4¬‚×s¬×N¬‚¬‚× ¬†¬×¬#×#¬…#×#×#¬„#×#׬†#×#×#׬ƒ#×#¬†×#×#×#¬„×#×#¬…×#×#׬ˆ#×#×#×#׬ƒ#×#¬¬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬ˆ×#×#×#×#¬‡×#×#×#× ¬‡×#×#×#× ¬4¬‚×s¬×N¬‚¬‚× ¬…¬×¬×׬׬׬׬׬׬׬׬׬׬,×¬×¬× ¬„׬¬4¬‚×$¬N¬×N¬‚¬‚× ¬…¬×¬#׬…#×#×#¬„×#×#¬„×#×#¬„×#×#¬ƒ×#׬„×#×#¬†×#×#×#¬„#×#׬„×#×#¬«#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬ˆ×#×#×#×#¬•×#×#×#×#×#×#×#×#×#×#× ¬†#×#¬¬4¬‚×$¬N¬P׬‚× ¬„¬×¬×¬×¬× ¬× ¬× ¬× ¬×¬(׬׬׬׃¬¬4¬‚× ¬¬ƒ¬¬‚¬¬ˆ¬¬¬¬¬¬…¬¬¬¬¬‚× ¬„¬×¬#¬‡×#×#×#׬…#×#×#¬†×#×#×#¬×¬ƒ#×# ¬…#×#×# ¬†×#×#×#¬¨×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬‰×#×#×#×#׬“#×#×#×#×#×#¬¬×#×#×#¬Œ#×#×#×#×#¬¬4¬‚׬¬‡¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬…¬¬¬¬¬‚× ¬„¬×¬×¬×¬×¬×¬‚××¬× ¬×¬×¬×¬'׬ ׬ ׬׬׬4¬‚× ¬‡¬¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬¬¬…¬¬¬¬‚× ¬¸¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬È×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬Š×#×#×#×#×#¬†×#×#×#¬…#×#×#¬…#×#×#¬4¬×¬„¬¬¬ˆ¬¬¬¬¬¬ƒ¬¬¬¬„¬¬‚¬¬× ×‚× ¬ƒ¬×¬5׬B׬׬׬4¬¬¬¬‰¬¬¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬ƒ¬¬× ¬¸¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬Â×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬…×#×#׬‡×#×#×#׬>¬¬„¬¬‰¬¬¬¬¬‚¬¬¬…¬¬¬¬2¬ƒ¬×¬6׬B×¬× ¬ × ¬„׬¬>¬¬ ¬¬¬¬7¬þ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬‰×#×#×#×#׬#×#×#×#×#×#×#¬†#×#¬¬>¬¬„¬¬ ¬¬¬¬7¬ƒ¬×¬×4׃¬¬?¬!¬„¬¬¬7¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬¬¬$¬ƒ¬×¬×4׃¬¬¬¬$¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬¬¬$¬ƒ¬×¬×4׃¬¬¬¬$¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬¬¬$¬ƒ¬×¬×4׃¬¬¬¬$¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬¬¬$¬ƒ¬×¬×4׃¬¬4¬×O× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬N× ¬ƒ¬×¬×4׃¬¬4¬‚׬K¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬K¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬K¬‚× ¬ˆ¬×¬#×#×#¬†#×#×#׬†#×#×#׬†#×#×#׬‡×#×#×#׬ˆ#×#×#×#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬#×#×#×#×#×#×#×#¬Ž#×#×#×#×#×#×#׬—×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬K¬‚× ¬ƒ¬×¬× ¬×¬×¬×¬× ¬×¬,׬ × ¬ × ¬׃¬¬4¬‚׬ × ¬¬"¬‚× ¬†¬×¬#×# ¬ƒ×#׬†#×#×#׬„#×#׬„×#×# ¬…×#×#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬‹#×#×#×#×#×#¬†×#×#×#¬“×#×#×#×#×#×#×#×#¬¬4¬‚׬ ¬×¬7¬‚× ¬…¬×¬×׬ׂ¬¬×¬×¬×¬×¬×¬×¬,׬ ׬׬׃¬¬4¬‚׬‚ ׂ¬×¬¬¬ƒ¬¬¬¬¬ƒ¬¬ƒ¬¬¬}¬‚× ¬…¬×¬#׬Œ#×#×#×#×#×#׬†#×#×#׬„#×#׬†#×#×#׬†#×#×#׬„#×#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬Š#×#×#×#×#׬†#×#×#׬„#×#׬†×#×#×#¬’#×#×#×#×#×#×#×#¬¬4¬‚׬‚×ׂ¬×¬¬„¬¬¬„¬¬¬¬¬†¬¬¬¬ƒ¬¬}¬‚× ¬„¬×¬×¬ ׬׬׬׬׬׬,׬ ׬ ׬׬׬׃¬¬4¬‚׬„××ׂ¬×¬¬„¬¬¬„¬¬¬¬¬„¬¬¬¬}¬‚× ¬„¬×¬#¬×#×#×#×#×#×#׬†#×#×#׬„#×#׬…#×#×#¬ˆ×#×#×#×#¬ƒ×#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬‰#×#×#×#×#¬‹×#×#×#×#×#׬ƒ#×#¬‰×#×#×#×#׬’#×#×#×#×#×#×#×#¬¬4¬‚׬ƒ×ׂ¬×¬¬„¬¬¬„¬¬¬¬…¬¬¬¬¬}¬‚× ¬„¬×¬×¬×¬×¬×¬×¬×¬×¬,×¬×¬× ¬×¬׃¬¬4¬‚׬†×ׄ×׬׬¬ƒ¬¬¬¬ƒ¬¬¬†¬¬¬¬‡¬¬¬}¬‚× ¬„¬×¬#¬ƒ×#׬†#×#×#׬„#×#׬…#×#×#¬ˆ×#×#×#×#¬ƒ×#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬ˆ#×#×#×#׬‡#×#×#×# ¬#×#×#×#×#×#×#¬’#×#×#×#×#×#×#×#¬¬4¬‚׬„×׃׬׬¬„¬¬¬„¬¬¬¬†¬¬¬¬†¬¬¬~¬‚× ¬„¬×¬×¬×¬×¬×¬×¬×¬×¬,×¬×¬× ¬ × ¬׃¬¬4¬‚׬‚ׅ׬׬¬„¬¬¬„¬¬¬ ¬¬¬¬‚× ¬„¬×¬#¬†×#×#×#¬ƒ×#׬†#×#×#׬„#×#׬…#×#×#¬ˆ×#×#×#×#¬ƒ×#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬ˆ#×#×#×#׬‡#×#×#×# ¬‡#×#×#×# ¬”#×#×#×#×#×#×#×#×#¬¬4¬‚׬‚ׄ׬׬¬„¬¬¬„¬¬¬ ¬¬¬¬‚× ¬…¬×¬×׬׬׬׬׬׬׬׬,×¬×¬× ¬׃¬¬4¬‚׬‚ ׂ¬×¬¬ƒ¬¬¬¬¬¬¬‚× ¬…¬×¬#׬„#×#׬„#×#׬ƒ#×#¬„#×#׬†#×#×#׬„×#×#¬„#×#׬«×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬ˆ#×#×#×#׬•#×#×#×#×#×#×#×#×#×#×# ¬—×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬ ‚¬×¬7¬‚× ¬ƒ¬×¬× ¬× ¬× ¬× ¬×¬(׬׬׬׃¬¬4¬‚׬ ׬7¬‚× ¬‡¬×¬#×#׬†#×#×#׬#¬ƒ×#× ¬…×#×#× ¬†#×#×#׬¨#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬‰#×#×#×#×#¬“×#×#×#×#×#׬¬#×#×#׬×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬K¬‚× ¬ƒ¬×¬×¬×¬‚××¬× ¬×¬×¬×¬'׬ ׬ ׬׬׬׃¬¬4¬‚׬K¬‚× ¬§¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬È#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬Š#×#×#×#×#׬†#×#×#׬…×#×#׬…×#×#׬“×#×#×#×#×#×#×#×#¬¬4¬‚׬K¬‚× ¬ƒ¬×¬$׬B׬׬׬׃¬¬4¬‚׬K¬‚× ¬§¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬Â#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬…#×#×#¬‡#×#×#×# ¬”#×#×#×#×#×#×#×#×#¬¬4¬‚׬K¬‚× ¬ƒ¬×¬%׬B×¬× ¬ × ¬׃¬¬4¬‚׬ ׬!¬ ¬‚¬ ׬¬8¬‚× ¬í¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬‰#×#×#×#×#¬×#×#×#×#×#×#׬—×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬ ¬×.¬¬¬ ¬×¬8¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬‚ ׂ¬×¬¬¬ƒ¬¬¬¬‡¬¬¬¬…¬¬¬¬ƒ¬¬¬‚ ׂ¬×¬¬ƒ¬¬¬¬ƒ¬¬¬…¬¬¬¬„¬¬¬¬¬ƒ¬¬¬‡¬¬¬¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬‚×ׂ¬×¬¬„¬¬¬„¬¬¬¬¬ˆ¬¬¬¬¬…¬¬¬…¬¬¬‚×ׂ¬×¬¬ƒ¬¬„¬¬¬„¬¬¬ƒ¬¬…¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬ƒ¬¬‡¬¬¬¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬„××ׂ¬×¬¬„¬¬¬„¬¬¬¬„¬¬¬„¬¬¬…¬¬¬†¬¬¬¬„××ׂ¬×¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬ƒ¬¬…¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬ƒ¬¬¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬ƒ×ׂ¬×¬¬„¬¬¬„¬¬¬¬‡¬¬¬¬¬¬…¬¬¬…¬¬¬¬ƒ×ׂ¬×¬ƒ¬¬‚¬Š¬¬¬¬¬¬ƒ¬¬…¬¬¬ƒ¬¬‰¬¬¬¬¬‚¬¬ƒ¬¬¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬†×ׄ×׬׬¬ƒ¬¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬†×ׄ×׬׬¬†¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬‹¬¬¬¬¬¬Š¬¬¬¬¬¬‰¬¬¬¬¬¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬„×׃׬׬¬„¬¬¬„¬¬¬¬Š¬¬¬¬¬¬…¬¬¬¬†¬¬¬¬¬„×׃׬׬¬†¬¬¬¬Š¬¬¬¬¬¬¬¬Œ¬¬¬¬¬¬¬‚¬‚¬‰¬¬¬¬¬¬¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬‚ׅ׬׬¬„¬¬¬„¬¬¬¬¬¬‚ׅ׬׬¬&¬¬‚¬‚¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬‚ׄ׬׬¬„¬¬¬„¬¬¬¬¬¬‚ׄ׬׬¬%¬¬¬¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬‚ ׂ¬×¬¬ƒ¬¬¬¬¬ ¬¬‚ ׂ¬×¬¬ƒ¬¬ ¬¬¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬ ‚¬×S¬ ‚¬×V¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬ ×S¬ ×V¬‚× ¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬K¬‚× ¬ƒ¬×¬×4׃¬¬4¬‚׬K¬‚× ¬…¬×¬#׬†#×#×#׬†#×#×#׬‡×#×#×#׬ˆ#×#×#×#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬#×#×#×#×#×#×#×#¬Ž#×#×#×#×#×#×#׬§×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬4¬‚׬K¬‚× ¬…¬×¬××¬×¬×¬× ¬×¬,׬ × ¬ × ¬ ׬4¬‚׬K¬‚× ¬…¬×¬#׬†#×#×#׬„#×#׬„×#×# ¬…×#×#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬‹#×#×#×#×#×#¬†×#×#×#¬ž×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬4¬‚׬K¬‚× ¬…¬×¬×׬׬׬׬׬׬,׬ ׬׬׬4¬‚׬K¬‚× ¬…¬×¬#׬†#×#×#׬„#×#׬†#×#×#׬†#×#×#׬„#×#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬Š#×#×#×#×#׬†#×#×#׬„#×#׬†×#×#×#¬›#×#×#×#×#×#×#×#×#×#×#×#×#×#¬4¬‚׬K¬‚× ¬…¬×¬×׬׬׬׬׬׬,׬ ׬ ׬׬׬׬4¬‚׬K¬‚× ¬…¬×¬#׬†#×#×#׬„#×#׬…#×#×#¬ˆ×#×#×#×#¬ƒ×#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬‰#×#×#×#×#¬‹×#×#×#×#×#׬ƒ#×#¬‰×#×#×#×#׬›#×#×#×#×#×#×#×#×#×#×#×#×#×#¬4¬‚׬K¬‚× ¬…¬×¬×׬׬׬׬׬׬,×¬×¬× ¬×¬×¬„׬¬4¬‚×1¬¬¬‚× ¬…¬×¬#׬†#×#×#׬„#×#׬…#×#×#¬ˆ×#×#×#×#¬ƒ×#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬ˆ#×#×#×#׬‡#×#×#×# ¬#×#×#×#×#×#×#¬š#×#×#×#×#×#×#×#×#×#×#×#×#׬„#¬¬4¬‚×1¬¬¬‚× ¬…¬×¬×׬׬׬׬׬׬,×¬×¬× ¬ × ¬×¬„׬¬4¬‚× ¬¬¬„¬¬¬ƒ¬¬¬¬¬…¬¬¬ƒ¬¬¬…¬¬¬‚× ¬…¬×¬#׬†#×#×#׬„#×#׬…#×#×#¬ˆ×#×#×#×#¬ƒ×#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬ˆ#×#×#×#׬‡#×#×#×# ¬‡#×#×#×# ¬œ#×#×#×#×#×#×#×#×#×#×#×#×#×#׬„#¬¬4¬‚× ¬¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬ˆ¬¬¬¬¬ƒ¬¬†¬¬¬~¬‚× ¬…¬×¬×׬׬׬׬׬׬,×¬×¬× ¬×¬„׬¬4¬‚× ¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬‚× ¬…¬×¬#׬ƒ#×#¬„#×#׬†#×#×#׬„×#×#¬„#×#׬«×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬ˆ#×#×#×#׬•#×#×#×#×#×#×#×#×#×#×# ¬Ÿ×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬„#¬¬4¬×¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬ˆ¬¬¬¬¬ƒ¬¬„¬¬¬|×‚× ¬…¬×¬×× ¬× ¬× ¬×¬(׬׬׬#׬„׬¬4¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬¬„¬¬¬ˆ¬¬¬¬¬Ž¬¬¬¬¬¬¬¬}× ¬…¬×¬#׬#¬ƒ×#× ¬…×#×#× ¬†#×#×#׬¨#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬‰#×#×#×#×#¬“×#×#×#×#×#׬¬#×#×#׬¦×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬>¬¬„¬¬¬…¬¬¬…¬¬¬¬ƒ¬¬ˆ¬¬¬¬¬†¬¬¬¬‚¬"¬…¬×¬×׬‚××¬× ¬×¬×¬×¬'׬ ׬ ׬׬׬׬>¬¬„¬¬¬…¬¬¬…¬¬¬¬¬¬5¬—¬×¬#×#×#×#×#×#×#×#×#×#׬È#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬Š#×#×#×#×#׬†#×#×#׬…×#×#׬…×#×#׬œ×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬=¬¬ƒ¬¬„¬¬¬„¬¬¬¬¬¬5¬ƒ¬×¬×¬B׬׬׬׬=¬¬‚¬¬¬„¬¬ ¬ ¬¬2¬—¬×¬#×#×#×#×#×#×#×#×#×#׬Â#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬…#×#×#¬‡#×#×#×# ¬Ÿ#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬¬$¬ƒ¬×¬×¬I¬y¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#¬¬¬6¬¬¬y¬ƒ¬×¬×¬¬ ׬ׂ¬¬y¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬¬¬ ¬×¬‚׬¬y¬ƒ¬×¬× ¬ ¬„¬¬„¬¬¬q¬ ¬×¬‚׬ ¬×O× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬¬‡¬¬¬‰¬¬¬r¬ ¬×¬‚׬ ¬N× ¬ƒ¬×¬×¬„¬¬ƒ¬¬‹¬¬¬¬r¬ ¬×¬‚׬ ¬‚׬K¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬¬k¬ ¬×¬‚׬ ¬‚׬K¬‚× ¬ƒ¬×¬×¬¬ ‚׬ ׂ¬ ¬‚׬K¬‚× ¬›¬×¬#×#×#×#×#×#×#×#×#×#×#×#×I ¬‚׬K¬‚× ¬ƒ¬×¬×¬"¬×¬ ¬‚×1¬*×o¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×|¬¬¬‚¬×¬ ¬‚×1¬(¬×o¬‚× ¬ƒ¬×¬×¬¬ƒ×¬¬,‚¬×*¬×¬‚¬¬¬×¬ƒ¬×¬¬ ¬‚×1¬‚&ׂ¬× ¬ ׬:¬ ¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬ƒ¬¬†¬¬¬¬¬¬†¬¬¬‡×¬¬V¬V+¬V¬—׬¬×¬¬×V¬¬V¬¬×¬¬×¬¬×¬¬V¬…V¬×¬Ž¬¬¬¬¬¬¬×¬‚¬¬¬Ž×¬¬¬¬¬××××׬Œ¬¬¬¬¬¬ ¬‚×1¬‚&ׂ¬× ¬ ¬×J¬ ¬‚× ¬ƒ¬×¬×¬ˆ¬¬¬¬ ¬”¬¬¬¬¬¬¬×¬¬V¬V+¬V¬—׬¬×¬¬×V¬¬V¬¬×¬¬×¬¬×¬¬V¬…V¬×¬’¬¬¬¬¬¬¬¬¬×¬‚¬¬¬‚׬¬¬××××××׬¬¬¬¬¬¬¬¬ ¬‚׬¬‚&ׂ¬× ¬‚ ׂ¬×¬¬‚¬¬¬‡¬¬¬¬¬†¬¬¬¬¬‚¬¬¬‚¬¬¬‚× ¬‡¬×¬#×#׬‡×#×#×#׬ƒ#׬‹¬¬¬¬¬¬‰¬¬¬¬‡×¬¬V¬V+¬V¬—׬¬×¬¬×V¬¬V¬¬×¬¬×¬¬×¬¬V¬…V¬×¬¬¬¬¬¬¬¬¬×¬‚¬¬¬‹×¬¬¬¬¬××׃×׬¬¬¬¬¬¬¬¬ ¬‚׬¬‚&ׂ¬× ¬‚×ׂ¬×¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬„¬¬¬†¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬‚× ¬ƒ¬×¬×¬× ¬¬ƒ¬¬ ¬ƒ¬¬¬…׬¬V ¬ × ¬V‚¬×¬ ¬×¬‚¬¬¬×¬„¬×׃×׬ƒ¬¬ƒ¬¬ ¬‚׬¬¬…¬¬¬¬‚¬¬†¬¬¬ ¬‚×××ׂ¬× ¬„××ׂ¬×¬ƒ¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬„¬¬¬…¬¬¬¬¬ƒ¬¬ƒ¬¬¬‚× ¬…¬×¬#׬„×#×# ¬!¬1×*¬×¬×¬׃¬×¬ ¬‚׬¬„¬¬¬…¬¬¬ƒ¬¬ƒ¬ ¬‚ׄ××׃××ׂ¬× ¬ƒ×ׂ¬×¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬„¬¬¬…¬¬¬¬¬ƒ¬¬ƒ¬¬¬‚× ¬…¬×¬×׬׬׬¬"¬×¬ ¬‚׬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬ ¬„×ׂ×׃××ׂ¬× ¬†×ׄ×׬׬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬¬†¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬‚× ¬…¬×¬#׬†#×#×#׬‰#×#×#׬¬¬G¬ ¬‚׬¬ƒ¬¬„¬¬¬ƒ¬¬ƒ¬ ¬‹××××××׃××ׂ¬× ¬„×׃׬׬ƒ¬¬¬ƒ¬¬¬„¬¬¬¬†¬¬¬¬¬¬¬‚¬¬¬‚× ¬…¬×¬×׬׬ׂ¬ ¬×0× ¬ ¬‚׬ƒ¬¬¬…¬¬¬‰¬¬¬¬ ¬‚׃×׃×××ׂ¬× ¬‚ׅ׬׬ƒ¬¬¬¬¬¬¬‚× ¬…¬×¬#׬…#×#×#¬Š×#×#×#×#¬ ¬J0J ¬ ¬‚׬¬¬…¬¬¬¬‹¬¬¬¬¬ ¬‚׆×××׃××ׂ¬× ¬‚ׄ׬׬¬¬¬¬¬¬‚× ¬…¬×¬×׬׬ׂ¬¬׃¬¬J0J¬׃¬¬ ¬‚׬¬¬¬ ¬‚×…××׃××ׂ¬× ¬‚ ׂ¬×¬¬¬¬¬‚× ¬…¬×¬#׬…#×#×#¬Š×#×#×#×#¬¬×¬J0Jƒ¬¬V¬„׬¬ ¬‚׬¬¬¬ ¬‚×…××׃××ׂ¬× ¬ ‚¬×V¬‚× ¬…¬×¬×׬׬ׂ¬¬×ƒ¬¬J0J„¬¬V+„׬¬ ¬‚׬¬¬¬¬‚×××ׂ¬× ¬ ×V¬‚× ¬…¬×¬#׬…#×#×#¬Š×#×#×#×#¬¬‚×V„¬¬J0J„¬¬V+„׬¬ ¬‚×1¬‚&ׂ¬×o¬‚× ¬…¬×¬×׬׬׃¬¬¬‚׬„¬¬J0J„¬¬V+„׬¬ ¬‚×1¬‚&ׂ¬×o¬‚× ¬…¬×¬#׬†#×#×#׬„×#×#¬¬‚×V+„¬¬J0J„¬¬V+¬…V׬¬ ¬‚×1¬‚&ׂ¬×o¬‚× ¬‚¬× ¬× ¬¬‚×V¬„¬¬JtJJ„¬¬V+¬…V׬¬ ¬‚×1¬'‚¬×o¬‚× ¬‚¬× ¬…×#×#× ¬¬×V„¬¬JPJJ„¬¬V+¬…V׬¬ ¬‚×1¬)×o¬‚× ¬‚¬× ¬×¬ƒ×׬‚׬„¬¬J0J„¬¬V+¬…׬¬ ¬‚׬K¬‚× ¬…¬×¬#׬“#×#×#×#×#×#×#×#×#׬‚׬„¬¬J0J„¬¬V+¬…׬¬ ¬‚׬K¬‚× ¬…¬×¬×׬׬‚׬„¬¬J0J„¬¬V+V…׬¬ ¬‚׬K¬‚× ¬…¬×¬#׬“#×#×#×#×#×#×#×#×#׬׬„¬¬J0J„¬¬V+¬„׬¬ ¬‚×g¬ ׬J¬‚× ¬ƒ¬×¬×¬×¬‚׬V„¬¬J0J„¬¬V+¬„׬¬ ¬‚×g¬ ¬×V¬‚× ¬œ¬×¬#×#×#¬#×#×#×#×#×#×#×#×#׬׬„¬¬J0J„¬¬V+V…¬×¬¬ ¬‚×g¬‚ ׂ¬×¬¬‡¬¬¬¬„¬¬¬„¬¬¬ƒ¬¬¬‚× ¬ƒ¬×¬×¬×¬„¬¬UJ{¥ƒuutRJ„¬¬V+¬„׬¬ ¬‚×1¬*× ¬‚×ׂ¬×¬¬‰¬¬¬¬¬„¬¬¬¬¬‹¬¬¬¬¬¬¬¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬‚׬V„¬¬JP?J{ ¥‚uuNJ„¬¬V+¬„׬¬ ¬‚×1¬(¬× ¬„××ׂ¬×¬¬¬ƒ¬¬„¬¬¬¬¬¬‡¬¬¬¬¬‚× ¬ƒ¬×¬×¬×¬„¬¬QJ{¥‚ŸŸIJ„¬¬V+×…¬×¬¬ ¬‚×1¬‚&ׂ¬× ¬ƒ×ׂ¬×¬¬¬ƒ¬¬…¬¬¬¬ƒ¬¬¬ƒ¬¬¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬׬„¬¬OJ‚tŸ¥EJ„¬¬V+¬„׬¬ ¬‚×1¬‚&ׂ¬× ¬†×ׄ×׬׬¬¬ƒ¬¬¬¬‹¬¬¬¬¬¬¬¬‚× ¬ƒ¬×¬×¬‚׬V„¬¬MJt!¥@J„¬¬V+¬„׬¬ ¬‚×1¬‚&ׂ¬× ¬„×׃׬׬¬¬„¬¬¬¬ƒ¬¬¬ˆ¬¬¬¬¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬‚׬ׄ¬¬KJt¥IˆOŸŸ¥É¥¥É ¥…ɥɥ{;J„¬¬V+V…¬×¬¬ ¬‚×1¬‚&ׂ¬× ¬‚ׅ׬׬ ¬¬ƒ¬¬¬ ¬!¬‚× ¬ƒ¬×¬×¬‚×׬„¬¬JJ{¥‚PI¥ I„{tÉÉ ¥t:J„¬¬V+¬…×׬¬ ¬‚× ¬¬¬ƒ¬¬…¬¬¬¬ƒ¬ ¬‚×××ׂ¬× ¬‚ׄ׬׬¬¬¬ƒ¬¬¬ ¬!¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬‚×׬„¬¬HJ{¥…tP%I%¥Iƒtt¥Ê¥ƒÉ¥t:J„¬¬V+¬…×׬¬ ¬‚× ¬¬¬ƒ¬¬†¬¬¬¬¬…×××ׄ×××ׂ¬× ¬‚ ׂ¬×¬¬¬/¬‚× ¬ƒ¬×¬×¬ׄ¬¬GJ¥„{II%I¥IˆOIOÐ¥¥Ét:J„¬¬V+V…×׬¬ ¬‚× ¬‡¬¬¬¬ƒ¬¬†¬¬¬¬¬…××ׂׂ××ׂ¬× ¬ ‚¬×V¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬‚×׬„¬¬GJ¥I%¥I…¥¥É¥t:J„¬¬V+׃¬¬ ¬‚× ¬‡¬¬¬¬ƒ¬¬†¬¬¬¬¬…××׉××××××ׂ¬× ¬ ×V¬‚× ¬ƒ¬×¬×¬‚×׬„¬¬GJ…¥ÉÉŸ%I†%II%II¥I¥‚Ét:J„¬¬V+¬…×׬¬ ¬‚׬¬¬†¬¬¬¬Š¬¬¬¬¬¬„××׆××××ׂ¬×o¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬ׄ¬¬GJŽ¥ÐÐII%II2%%I%I¥I¥‚Ét:J„¬¬V+¬…×׬¬ ¬‚׬¬¬†¬¬¬¬‹¬¬¬¬¬ ¬…××׆××××ׂ¬×o¬‚× ¬ƒ¬×¬×¬‚×׬„¬¬GJƒ¥ÐÐIˆI%¥I‚{¬I…¥¥ÉÉt:J„¬¬V+׃¬¬ ¬‚׬¬¬¬†¬¬¬¬…×××…×××ׂ¬×o¬‚× ¬‰¬×¬#×#×#׬ˆ#×#×#×#׬¬‚×׬„¬¬GJ†¥ÐÐI%‚I¥I‚¬×I…¥¥ÉÉt:J„¬¬V+¬…×׬¬ ¬‚׬ ¬¬†¬¬¬¬…××××…×××ׂ¬×o¬‚× ¬ƒ¬×¬× ¬×¬¬ׄ¬¬GJ…¥ÐÐI%ƒ#%¥Iƒ¬××II¥‚Ét:J„¬¬V+¬…×׬¬ ¬‚׬ ¬ƒ¬¬¬¬‚×××ׂ¬×o¬‚× ¬†¬×¬#×# ¬…×#×#׬¬×¬„¬¬GJ„¥ÐÐIƒ##,%I¥I„{¬×¦I‚I…¥¥É¥t:J„¬¬V+×…¬×¬¬ ¬‚×1¬‚&ׂ¬×o¬‚× ¬…¬×¬×׬׬׬¬×¬„¬¬GJŽ¥ÐÐ,GGI%%I%¥Iƒ¬××I‚{I…¥¥ÉÉt:J„¬¬V+¬„׬¬ ¬‚×1¬‚&ׂ¬×o¬‚× ¬…¬×¬#׬†#×#×#׬„#×#׬¬‚׬V„¬¬GJ…¥ÐÐG†OI%I%I¥I„¬××tI‚{I…¥¥ÉÉt:J„¬¬V+¬„׬¬ ¬‚×1¬‚&ׂ¬×o¬‚× ¬„¬×¬×¬×¬×¬¬×¬„¬¬GJ…¥ÐÐG†I%I%II¥I‡¬××III…¥¥ÉÉt:J„¬¬V+×…¬×¬¬ ¬‚×1¬'‚¬× ¬ ׬I¬‚× ¬„¬×¬#¬ˆ×#×#×#×#¬ƒ×#׬¬×¬„¬¬GJ…¥ÐÐGI¥Iƒ¬×× I…¥¥ÉÉt:J„¬¬V+¬„׬¬ ¬‚×1¬)× ¬ ¬×V¬‚× ¬„¬×¬×¬×¬×¬¬‚׬ׄ¬¬GJŽ¥ÐÐG#I%II%I¥I„¬¬×t I…¥¥ÉÉt:J„¬¬V+¬„׬¬ ¬‚×g¬‚ ׂ¬×¬¬¬¬ƒ¬¬¬‡¬¬¬¬¬ƒ¬¬¬…¬¬¬‚× ¬„¬×¬#¬ˆ×#×#×#×#¬ƒ×#׬¬×¬„¬¬GJŽ¥ÐÐ##II%II%¥IƒO I…¥¥ÉÉt:J„¬¬V+×…¬×¬¬ ¬‚×g¬‚×ׂ¬×¬¬¬¬ƒ¬¬ƒ¬¬†¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬†¬¬¬¬‚× ¬„¬×¬×¬×¬×¬¬×¬„¬¬GJŽ¥ÐÐ#GI%I%%I¥I„O{P I…¥¥ÉÉt:J„¬¬V+¬„׬¬ ¬‚×g¬„××ׂ¬×¬¬„¬¬¬¬¬†¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬¬‚× ¬„¬×¬#¬ˆ×#×#×#×#¬ƒ×#׬¬×¬„¬¬GJƒ¥ÐЃ#I%‚I%¥IƒOI…¥¥ÉÉt:J„¬¬V+¬„׬¬ ¬‚×g¬ƒ×ׂ¬×¬¬ƒ¬¬‚¬¬¬ƒ¬¬‡¬¬¬¬¬ƒ¬¬„¬¬¬‚× ¬…¬×¬×׬׬׬¬‚׬„¬¬GJƒ¥ÐÐ%¥I‚V× I…¥¥ÉÉt:J„¬¬V+¬…׬¬ ¬‚×g¬†×ׄ×׬׬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬Œ¬¬¬¬¬¬¬‚× ¬…¬×¬#׬„×#×#¬„#×#׬¬‚×V„¬¬-JPJƒ¥ÐЂI%I¥†II¬¬×¬׃II¥×I…¥¥ÉÉt:J„¬¬V+¬…׬¬ ¬‚×g¬„×׃׬׬¬¬¬¬†¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬‚¬‚× ¬ƒ¬×¬× ¬×¬¬‚׬„¬¬)JˆP{¬JPPJ‰¥ÐÐ2I%‚I%¥ I’¬××IP¦¬¦¦×¥II¥¥ÉÊt:J„¬¬V+¬…׬¬ ¬‚×g¬‚ׅ׬׬¬¬,¬‚× ¬‡¬×¬#×#× ¬†#×#×#׬¬‚×V¬„¬¬(JuPJ¦J¬JJ{PPJVJ…¥ÐІI%I%I%¥ Iƒ¥×× I…¥¥ÉÉt:J„¬¬V+¬…V׬¬ ¬‚×g¬‚ׄ׬׬¬¬,¬‚× ¬ƒ¬×¬×¬×¬¬‚×V¬„¬¬'J‚PJ‚¬¬J‚Jƒ{u JŽ¥ÐÐ++I%I%I¥ I„{¬×¦ I…¥¥ÉÐt:Jƒ¬¬V+…V׬¬ ¬‚×g¬‚ ׂ¬×¬"¬)¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬‚×V¬„¬¬&JJƒ{u¬Jƒ{JVJ‚P J‰¥ÐÐII¥ I„¬××{I…¥¥ÐÉt:J„¬¬V+¬…V׬¬ ¬‚×g¬ ‚¬×V¬‚× ¬ƒ¬×¬×¬‚×V„¬¬%JJƒ{u¬Jƒ¦J‚P JŽ¥ÐÐI%I%I¥ Iƒ¬×× I…¥¥ÐÉt:J„¬¬V+¬…׬¬ ¬‚×g¬ ×V¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬‚׬„¬¬$J‚u{J„¬¦t×Jƒ×{J‚P J†¥ÐÐI%„3%I¥ Iƒ¥×× I…¥¥ÉÉt:J„¬¬V+„׬¬ ¬‚׬K¬‚× ¬ƒ¬×¬×¬×¬$JJƒu׬Jƒ××PJ‚P Jƒ¥ÐÐI‡%II%I%I¥ Iƒt¬× I…¥¥ÐÐt:Jƒ¬¬V¬„׬¬ ¬‚׬K¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬׬#J‚{J×J׉PVVuVVJ{ Jˆ¥ÐÐ%I%II%ƒI%I¥ I‚¬¬ I…¥¥ÐÉt:Jƒ¬¬V¬„׬¬ ¬‚× ¬¬ƒ¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬‰¬¬¬¬¬¬‚u¬‚× ¬ƒ¬×¬×¬׃¬¬#JJ×ׄJV J„¥ÐÐ%I%¥ I¬ I…¥¥ÉÐt:Jƒ¬¬V׃¬¬ ¬‚× ¬¬ƒ¬¬„¬¬¬„¬¬¬ƒ¬¬¬Ž¬¬¬¬¬¬¬¬¬Œ¬¬¬¬¬¬¬†¬¬¬t¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬#JJƒ×¬ׂ¬uJ…{{VJ‡¥ÐÐ%I%I%I¥I…¥¥ÐÐt:J ¬ ¬‚× ¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬Ž¬¬¬¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬u¬‚× ¬ƒ¬×¬× ¬#JJV„P׬¬×JJƒ¥ÐÐO¥Ÿt…¥¥ÉÐt:J ¬ ¬×¬ƒ¬¬‚¬‰¬¬¬¬¬‚¬¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬…¬¬¬ƒ¬¬¬r×‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬#JŠJVVP{uצ צJ‚PJ#¥É‚ÊÉÐt:J ¬ ¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬ˆ¬¬¬¬¬s× ¬ƒ¬×¬× ¬#J…P{PJ צJƒVJ"¥ɇÊÊÐÉÐÐt:J ¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬„¬¬¬ƒ¬¬‹¬¬¬¬ƒ¬¬¬†¬¬¬¬‚¬¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬#JƒVJuׇÑuP{PJ¥¥É‚ÊÉÐt:J ¬¬¬¬ƒ¬¬„¬¬¬ ¬¬#¬ƒ¬×¬× ¬"Jƒ¥¬Jt ׋PPJ¬¬{{JJˆJˆTJ ¬¬¬¬¬„¬¬¬ ¬¬#¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬"Jƒ{¬J†{u×JJ{׋u¬¬PuPJJJ„33J„3PTJ ¬¬¬ƒ¬¬ ¬ƒ¬¬/¬ƒ¬×¬× ¬"J†u×׬{{J…××J{{׆¬{{¬{uJ{J…¯ÓNJ ¬¬y¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬#J…u¦×¥{׃{{¬ׂ¬{J‚P{J…¯NJ ¬¬y¬ƒ¬×¬× ¬$J†P{×׬¬׉u××P××PPJJ…¯*š¯NJ ¬¬y¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬&J‚J‚¦×J„×PPJ‚{J……¯¯Jo”¯NJ ¬¬y¬ƒ¬×¬× ¬'J‚VJƒ¦u×Jƒ¬J J……¯¯Jo”¯NJ ¬¬y¬…¬×¬#׬“#×#×#×#×#×#×#×#×#× ¬(JˆPJJצuJ‚VJ‚PV J………¯Jo”¯NJ ¬¬y¬…¬×¬××¬× ¬)J‡Pu¬J¦J‚{VJ‚VV J……¯¯Jo”¯NJ ¬¬y¬…¬×¬#׬“#×#×#×#×#×#×#×#×#× ¬+J‚¬×J‡{JPP J…ƒJoo”¯NJ ¬ ¬×O× ¬…¬×¬××¬× ¬-J„{¬¬J…ƒJoo”¯NJ ¬ ¬N× ¬…¬×¬#׬“#×#×#×#×#×#×#×#×#× ¬/J…¬{¬J…„Jo”o”¯NJ ¬ ¬‚׬K¬‚× ¬…¬×¬××¬× ¬0JƒPV{J…‡Joo”o”o”…NJ ¬ ¬‚׬K¬‚× ¬…¬×¬#׬“#×#×#×#×#×#×#×#×#× ¬FJ„„……Jo†”o”o”o ”…NJ ¬ ¬‚׬K¬‚× ¬…¬×¬××¬× ¬FJ„„……Joƒ””o ”‚o…NJ ¬ ¬‚׬K¬‚× ¬…¬×¬#׬“#×#×#×#×#×#×#×#×#× ¬FJ„„……J o‚”o”ˆo”oo”o”…NJ ¬ ¬‚׬K¬‚× ¬…¬×¬××¬× ¬FJ„„……J oˆ”o””o”o”o…NJ ¬ ¬‚׬K¬‚× ¬…¬×¬#׬“#×#×#×#×#×#×#×#×#× ¬FJ„„……Jo…JP1J ¬ ¬‚׬K¬‚× ¬…¬×¬××¬× ¬FJ„„……Jo…J‚{¬0J ¬ ¬‚׬K¬‚× ¬…¬×¬#׬’×#×#×#×#×#×#×#×#× ¬FJ„„……Jo…J„V¬¬{.J ¬ ¬‚׬K¬‚× ¬…¬×¬××¬× ¬FJ„……Jo…J„V¬¬×.J ¬ ¬‚׬K¬‚× ¬…¬×¬#׬#×#×#×#×#×#×#× ¬FJ„„„…Jo…JƒP×{/J ¬ ¬‚׬K¬‚× ¬…¬×¬×׬׬ × ¬FJ„„…„JoJ{.J ¬ ¬‚× ¬× ¬T¬× ¬B¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬FJ…~„„JJo„ JP-J ¬ ¬‚× ¬‚×׬‚××`¬‚×׬‚××P¬‚× ¬ƒ¬×¬× ¬FJ„~„Jo J‚PP,J ¬ ¬‚× ¬ƒ¬¬׃¬¬×¬¬ƒ¬¬‚¬¬ƒ¬¬¬¬ƒ¬¬¬¬¬ƒ¬¬¬ƒ¬¬׃¬¬×¬¬¬ƒ¬¬¬ƒ¬¬¬¬ƒ¬¬¬¬¬ƒ¬¬¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬FJ…Z„~JJoJ‚o!J{,J ¬ ¬‚× ¬‚ׂ¬×¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬„¬¬¬„¬¬¬ƒ¬¬‚ׂ¬×¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬„¬¬¬„¬¬¬ƒ¬¬‚× ¬ƒ¬×¬× ¬FJ…Z~~JJ o‚JoJ!J‚PP+J ¬ ¬‚׬‚ׂ¬×¬¬ƒ¬¬ƒ¬¬ƒ¬ ¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬‚ׂ¬× ¬„¬¬¬¬¬ƒ¬ ¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬FJ…Z~JJoJoJoJZ"J{+J ¬ ¬‚׬‚ׂ¬×¬¬ƒ¬¬‚¬¬‚¬¬ƒ¬¬‚¬‰¬¬¬¬¬‚¬¬‚ׂ¬× ¬„¬¬¬‚¬¬‚¬¬ƒ¬¬‚¬‰¬¬¬¬¬‚¬¬‚× ¬ƒ¬×¬× ¬FJƒZZ~Jo J‡POOU[ZZ#J{*J ¬ ¬‚׬‚ׂ¬×¬ƒ¬¬¬‰¬¬¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬‚ׂ¬×¬¬¬ƒ¬¬‰¬¬¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬FJƒZZ JPU Z#J‚PP)J ¬ ¬‚׬‚ׂ¬×¬¬…¬¬¬†¬¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬„¬¬¬‚ׂ¬×¬¬¬†¬¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬„¬¬¬‚× ¬ƒ¬×¬× ¬FJ„ZZUJ[‚Z[Z*J{)J ¬ ¬‚× ¬‚ׂ¬×¬¬ƒ¬¬¬4¬‚ׂ¬×¬!¬¬!¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬FJƒZ[ ZO1JV(J ¬ ¬‚× ¬ƒ׃׬¬ƒ¬¬¬3¬ƒ׃׬¬¬¬ ¬‚× ¬ƒ¬×¬× ¬FJZUO7JVJ$J ¬ ¬‚× ¬‚‚¬ƒ¬¬¬¬ƒ¬2¬‚‚ ¬¬¬ƒ¬¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬FJ‚UU?J„{××$J ¬ ¬‚× ¬d¬R¬‚× ¬ƒ¬×¬× ¬JJ‚V×$J ¬ ¬‚׬K¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬JJ׬$J ¬ ¬‚׬K¬‚× ¬ƒ¬×¬× ¬JJ׃¦PP!J ¬ ¬‚׬K¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬J J†¥¬JP!J ¬ ¬‚׬K¬‚× ¬ƒ¬×¬× ¬J J¬P!J ¬ ¬‚׬K¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#× ¬JJ„PPJ¬׃JPJ ¬ ¬‚׬K¬‚× ¬ƒ¬×¬× ¬J J…¬××{!J ¬ ¬‚׬K¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#¬ ¬J Jƒ¬×{"J ¬ ¬‚׬K¬‚× ¬ƒ¬×¬×¬ ¬J Jƒ{J¦#J ¬ ¬‚׬Ϭ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬c¬‚× ¬—¬×¬#×#×#×#×#×#×#×#×#×#׬ ¬JJP!J ¬ ¬‚×g¬b¬‚× ¬ƒ¬×¬×¬ ¬JJ{ J ¬ ¬‚× ¬×¬T¬× ¬„¬¬?¬‚× ¬•¬×¬#×#×#×#×#×#×#×#×#׬ ¬J0J ¬ ¬‚× ¬‚×׬‚××U¬ ¬‚×׬‚×׬>¬‚× ¬ƒ¬×¬×¬‚× ¬J0J ¬ ¬‚× ¬ƒ¬¬׃¬¬×¬‚¬ˆ¬¬¬¬¬¬Œ¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬¬¬¬ƒ¬¬ ¬ƒ¬¬׃¬¬×¬¬„¬¬¬¬ƒ¬¬¬¬¬ƒ¬¬¬‚× ¬•¬×¬#×#×#×#×#×#×#×#×#׬ƒ#× ¬J0J ¬ ¬‚× ¬‚ׂ¬×¬¬†¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬„¬¬¬„¬¬¬…¬¬ ¬‚ׂ¬×¬¬…¬¬¬¬ƒ¬¬„¬¬¬„¬¬¬ƒ¬¬‚× ¬ƒ¬×¬×¬× ¬J0J ¬ ¬‚׬‚ׂׂ¬×¬ƒ¬¬…¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬ ¬‚ׂ¬×¬¬†¬¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬‚× ¬”¬×¬#×#×#×#×#×#×#×#×#¬„×#× ¬J0J ¬ ¬‚׬„×ׄ×׬׬¬‚¬Œ¬¬¬¬¬¬¬¬‚¬‚¬¬ƒ¬¬‚¬‰¬¬¬¬¬„¬¬¬‚ׂ¬×¬¬†¬¬¬¬ƒ¬¬‚¬‰¬¬¬¬¬‚¬¬‚× ¬ƒ¬×¬×¬× ¬J0J ¬ ¬‚׬„×ׄ×׬׬‚¬¬„¬¬¬“¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬ ¬‚ׂ¬×¬ˆ¬¬¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬‚× ¬”¬×¬#×#×#×#×#×#×#×#×#¬„×#× ¬J0J ¬ ¬‚׬‚ׂׂ¬×¬¬†¬¬¬¬‚¬¬‹¬¬¬¬¬¬„¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬‚¬¬¬‚ׂ¬×¬¬†¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬„¬¬¬‚× ¬ƒ¬×¬×¬× ¬J0J ¬ ¬‚× ¬‚ׂ¬×¬ƒ¬-¬¬$¬‚ׂ¬×¬¬ ¬¬3¬‚× ¬”¬×¬#×#×#×#×#×#×#×#×#¬„×#× ¬J0J ¬ ¬‚× ¬ƒ׃׬,¬¬¬ ¬ƒ׃׬¬¬¬2¬‚× ¬ƒ¬×¬×¬× ¬J0J ¬ ¬‚× ¬‚‚¬‚¬¬¬¬ƒ¬"¬‚‚¬‚¬¬¬ƒ¬0¬‚× ¬•¬×¬#×#×#×#×#×#×#×#×#׬ƒ#× ¬1 ¬ ¬‚× ¬W¬ ¬R¬‚× ¬ƒ¬×¬×¬‚׬G¬ ¬‚׬¬2¬‚× ¬•¬×¬#×#×#×#×#×#×#×#×#׬¬G¬ ¬‚׬Ϭ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬b¬‚× ¬ƒ¬×¬×¬¬×¬×ׄ¬¬j¬ ¬‚׬K¬‚× ¬—¬×¬#×#×#×#×#×#×#×#×#×#׬¬¬¬‚׬¬„׬¬×¬‚׬‚¬ׇ¬¬¬¬¬׃¬¬¬¬j¬ ¬‚׬K¬‚× ¬ƒ¬×¬×¬¬ƒ¬¬ו¬¬¬¬¬×¬¬¬×¬†×¬×¬×¬ׄ¬…¬¬¬ƒ×¬¬‚#¬¬†¬l¬¬j¬ ¬‚׬K¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#¬¬ƒ¬¬׬¬¬¬×ƒ¬¬×¬¬×׬¬×¬ׄ¬¬¬¬¬××׬¬¬‚#¬„¬¬j¬ ¬‚׬K¬‚× ¬ƒ¬×¬×¬ƒ¬¬׬¬¬××#¬¬×¬ƒ¬¬×¬¬†×¬¬×ׂ¬‡×¬¬¬¬‚¬¬‚#¬‚¬…¬l¬¬j¬ ¬‚׬K¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬ƒ¬¬׆¬¬¬×†¬¬×¬ƒ¬¬×¬ˆ×׬¬×¬¬×…¬¬¡×¬¬¬¬¬¬¬¬¬¬#¬#¬¬¬¬l¬l¬j¬ ¬‚׬K¬‚× ¬ƒ¬×¬×¬ƒ¬¬×¬¬¬„׬¬×¬¬¬×¬¬×¬×׬ƒ¬†¬¬¬¬¬׈¬¬¬¬##¬Š¬¬¬l¬l¬j¬ ¬‚׬K¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬¬¬‚׬¬×¬‚׬‚¬„¬¬¬¬¬j¬ ¬‚× ¬× ¬S¬× ¬ >¬‚× ¬ƒ¬×¬×¬G¬ ¬‚× ¬‚×׬‚××`¬‚×׬‚××P¬‚× ¬œ¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬G¬ ¬‚× ¬ƒ¬¬׃¬¬×¬¬¬ƒ¬¬¬ƒ¬¬‚¬¬ƒ¬¬¬¬ƒ¬¬¬¬ƒ¬¬׃¬¬× ¬¬¬„¬¬¬¬¬ƒ¬¬¬¬¬ƒ¬¬¬‚× ¬ƒ¬×¬ׂ¬×F× ¬‚× ¬‚ׂ¬×¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬¬‚ׂ¬× ¬¬¬¬ˆ¬¬¬¬¬¬ƒ¬¬„¬¬¬„¬¬¬ƒ¬¬‚× ¬¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬× × ×F×× ×ƒ××××× ¬‚׬‚ׂ¬×¬¬„¬¬¬¬ƒ¬¬ƒ¬¬¬†¬¬¬¬¬¬¬‚ׂ¬×¬‡¬¬¬¬¬‡¬¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬‚× ¬ƒ¬×¬ׂ¬×„× ×†××׊××××ט××××××××××××××××××××× ×‘××××××××׎××××××× ×‰××××× ¬‚׬‚ׂ¬×¬¬ƒ¬¬‚¬¬ƒ¬¬‚¬‚¬¬¬†¬¬¬¬‚¬¬¬‚ׂ¬×¬‡¬¬¬¬…¬¬¬ƒ¬¬‚¬‰¬¬¬¬¬‚¬¬‚× ¬¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬×„× ×†××׈×××× ×–××××××××××××ב×××××××× ×‘××××××××××××××× ×ׄ×× ¬‚׬‚ׂ¬×¬¬¬‰¬¬¬¬¬ƒ¬¬ƒ¬¬¬‡¬¬¬¬¬¬¬‚ׂ¬×¬¬¬¬‡¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬‚× ¬ƒ¬×¬ׂ¬×…× ×‚×ׇ×××××׈××׆×××׉××××׋××××ׄ××׋××××× ×…××× ¬‚׬‚ׂ¬×¬¬¬†¬¬¬¬‚¬¬„¬¬¬ƒ¬¬„¬¬¬¬‚ׂ¬×¬¬¬¬ˆ¬¬¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬„¬¬ ¬‚× ¬¬×¬#×#×#×#×#×#×#×#×#×#×#×#׬ׂ×„× ×‚׃××ׂ×ׄ×××× ×„××ׄ×× ××× ¬‚× ¬‚ׂ¬×¬¬¬¬ƒ¬-¬‚ׂ¬×¬¬¬¬ƒ¬¬¬'¬‚× ¬ƒ¬×¬ׂ¬×F× ¬‚× ¬ƒ׃׬¬¬¬.¬ƒ׃׬ ¬¬ƒ¬¬¬&¬‚× ¬Š¬×¬#×#×#×#¬×#×#×#×#×#×#×I ¬‚× ¬‚‚¬¬¬/¬‚‚¬ ¬¬ƒ¬¬¬ƒ¬$¬‚× ¬ƒ¬×¬×¬ ׬l/l¬‚¬‚ ¬‚× ¬d¬R¬‚× ¬Š¬×¬#×#×#×#¬Ž×#×#×#×#×#׬¬¬l¬‚¬‚ ¬‚׬K¬‚× ¬ƒ¬×¬×¬ ׬ƒ¬¬‚¬>l×l×l×l×ll××l×l×ll×…l×ll×lˆ×l×l×l××l„××l×=l¬…¬¬¬‚ ¬‚׬K¬‚× ¬Š¬×¬#×#×#×#¬Š×#×#×#×#×#¬ƒ¬¬ׂ¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬„¬¬¬¬…¬¬¬¬¬,¬„¬×¬#¬‰×#×#×#×#׬#×#×#×#×#×#×#¬¥#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬Å×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׬Š#×#×#×#¬¬>¬¬ ¬¬?¬ƒ¬×¬×4׃¬¬=¬¬¬¬?¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬=¬¬ƒ¬¬¬=¬ƒ¬×¬×4׃¬¬¬¬$¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׺#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬¬¬$¬ƒ¬×¬×4׃¬¬¬¬$¬ÿ¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×·#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#¬¬$¬‚¬×¬¬¬\¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllHl„ll¬ƒ¬×¬"l‚××l‚××Rl‚××l‚××!l‚××lll×…ll¬ƒ¬×¬"l‚××l‚××Ql‚××l‚×× l‚××lll× ¬†ll¬ƒ¬×¬l‚××l‚××l‚××l‚××lƒ××lׂll×l†××ll××lƒ××lׂll׃l××l×l׃l××lׄll××l×l‚××l׉ll××l××ll×l‚××l×l„××llׂll×l×lׄll××l×lel× ¬†ll¬ƒ¬×¬l‚××l‚××l‚××l‚××l××l××ll××l××ll××l†××ll××l…××l××l‘××ll××l××ll××ll××l‚×× l†××ll××l†××ll××l›××ll××ll××l××l××l××ll××ll×× l™××ll××ll××ll××ll××l××ll××l†××ll××l‰××ll××l××l†××ll××ldl׬‚¬Š¬¬ll¬ƒ¬×¬l‚××l×l‚×× lבll××ll××l××ll××ll×l†××ll××l‘××ll××l××ll××ll××l‚××l†××ll××l†××ll××l†××ll××lׄll××l‚××lŠ××ll××ll××l†××ll×× l‚××l‰××ll××l××l†××ll××ldl׬†¬¬¬†ll¬ƒ¬×¬l‚××l×l‚×× l—××ll××ll××ll××l××ll××ll×l‚××l‚××l׋l××ll××ll××l‚××l†××ll××l†××ll××l„××llׂllׂllׄll××l× lˆ××ll××llׇl××ll×× l‚××l‰××ll××l××l†××ll××ldl׬¬†ll¬ƒ¬×¬lŒ××ll××ll××ll×l¤××ll××ll××ll××l××ll××l××ll××ll××ll××l‚××l××l××ll××ll××l‚××l×l†××ll××l›××ll××ll××l××l××l××ll××ll××l×l‘××ll××ll××l××ll××l†××ll××l‰××ll××l××l×lel׬‚¬†ll¬ƒ¬×¬lŽ××ll××ll××ll×× l×lׂllבll××ll××ll××ll××lׂllׂllׂll× l‚××l‚×× l†××ll××l‚××l׉ll××l××ll×l‚×× l‚××lׂllׂll×l×lׂll×l‚××lhl׬¬†ll¬ƒ¬×¬lŽ××ll××ll××ll×× l×lŠ××ll××ll××l‚×× l‚××l‚×× l†××ll××l‚××l‚×× l‚××l‚××l‚××l‚××l‚××lhl׬†¬¬¬†ll¬ƒ¬×¬l…××l××l…××l×× l‚××l‚××l‚××l‚××l†××ll××l†××ll××l†××ll××l‚××l‚×× lŠ××ll××ll××l‚××l‚××l†××ll××ldl׬‚¬Š¬¬ll¬ƒ¬×¬l…××l××lƒ××l×l‚××l‚××l…××l××l‚××l×l×l×l‚××l‚××l×l× l‚××l×lel× ¬†ll¬ƒ¬×¬lllHl× ¬†ll¬ƒ¬×¬lllHl×…ll¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllZl‚¬‚¬×¬¬¬\¬¬×××]׬¬¬_¬X´O´lpºS`3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿs‚××m¬q„××h‚¬×¬¬o¬„××h¬‚¬×¬¬i¬¬„××h¬‚¬×¬¬i¬‚¬„××i¬‚¬×¬¬i¬‰×¬¬××i¬‚¬×¬¬i¬ˆ××××j¬‚¬×~¬¬Eׄ×׬K¬‚¬×~¬×I‚×I¬E× ¬×I¬‚¬×~¬×H¬ƒ×H¬‚¬‚×B × ¬×H¬‚¬‚¬×~¬×H¬ƒ×H¬‚¬‚×B¬× ¬×H¬‚¬‚¬×~¬×H¬ƒ×H¬‚¬‚×B¬× ¬×H¬‚¬‚¬×~¬×H¬ƒ×¬×*¬‚¬‚×B¬×¬×H¬‚¬‚¬×~¬×¬%¬ƒ×¬+¬‚¬‚׬&¬×¬×H¬‚¬‚¬×~¬×H¬ƒ×¬×¬×¬׉¬¬×¬¬×¬¬×¬×¬‚¬‚×B¬ׂ¬×H¬‚¬‚¬×~¬×¬¬¬‚¬¬ƒ¬¬¬¬ƒ×¬‚׬„׬¬‰¬×׬׬¬ƒ¬×¬‚¬‚׬¬ƒ¬¬Š¬¬¬¬¬¬¬×¬×¬¬‚¬¬ƒ¬¬¬ƒ¬¬¬‚¬‚¬×~¬×¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬ƒ×¬•×¬¬×¬×¬¬¬¬×¬×¬ƒ¬×¬‚¬‚׬¬ƒ¬¬Š¬¬¬¬¬¬¬‡×׬׬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬‚¬‚¬×~¬×¬¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ×¬‰×¬¬×¬ׇ¬×¬×¬ƒ¬×¬‚¬‚׬¬ƒ¬¬ƒ¬¬„¬¬¬¬‡×¬¬×¬¬¬ƒ¬¬ƒ¬¬¬¬‚¬‚¬×~¬×¬¬¬¬‚¬¬‚¬ƒ×¬ˆ×¬¬×¬ˆ×¬¬×׬¬‚¬‚׬¬ƒ¬¬†¬¬¬¬¬¬‡¬¬¬×¬¬‚¬¬ƒ¬¬‚¬¬‚¬‚¬×~¬×¬¬¬ƒ¬¬…¬¬¬ƒ×¬–×׬׬¬×׬׬××׬¬‚¬‚׬–¬¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬×¬ ¬‰¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬‚¬×~¬×¬¬¬¬¬†¬¬¬¬¬ƒ×¬‰×¬¬×¬¬‰¬¬¬¬¬¬¬‚¬‚׬¬“¬¬¬¬¬¬¬¬¬¬ƒ¬×¬¬†¬¬¬¬¬ƒ¬¬¬‚¬‚¬×~¬×¬¬¬¬¬ƒ×¬‡×¬¬× ¬‚׬¬‚¬‚׬¬¬ƒ¬×¬¬¬‚¬‚¬×~¬×¬¬¬¬ƒ×¬‚¬‚× ¬¬‚¬‚׬¬¬ƒ¬×¬¬¬¬‚¬‚¬×~¬×¬¬¬ƒ×¬¬,¬‚¬‚׬‚¬¬¬¬ƒ¬×¬¬¬‚¬‚¬×~¬×H¬ƒ×H¬‚¬‚×F¬ƒ¬×H¬‚¬‚¬×~¬×H¬ƒ×H¬‚¬‚×F¬ƒ¬×H¬‚¬‚¬×~¬×H¬ƒ×H¬‚¬‚×F¬ƒ¬×H¬‚¬‚¬×~¬×H¬ƒ×H¬‚¬‚×F¬ƒ¬×H¬‚¬‚¬×~¬×H¬ƒ×H¬‚¬Hׂ¬×H¬‚¬‚¬×~¬J×J׬K¬J׬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬‚¬×¬¬¬\¬ƒ¬×¬J¬ƒ¬×¬J¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬l׬¬ƒ¬×¬×5ׂ×"¬j¬×¬l׬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚Xׂ¬×¬j¬×¬ƒ¬×¬×5ׂ×"¬‚X׬ƒ¬×¬‚hׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚Xׂ¬× ¬„¬×¬‚hׂ¬×¬ƒ¬×¬×5ׂ×"¬‚Xׂ¬× ¬„¬×¬‚×3××ׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚××׃××××9ׂ¬× ¬„¬×¬‚×3××ׂ¬×¬ƒ¬×¬×5ׂ×"¬‚×××׃×ׄ×××9ׂ¬× ¬„¬×¬„×׈×××××׉××××××…××××××׃×××ׄ××ׂ×ׂ××ׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×׃×׃×ׇ×××8ׂ¬× ¬„¬×¬…××׆×××׋×××××××…×××××׃×ׄ××××׃×׃×× ×‚¬×¬ƒ¬×¬×5ׂ×"¬‚×׃×ׂ׈××××8ׂ¬×¬¬„¬×¬…×××…××׋×××××××…×××׃×׃×ׇ×××××׃×× ×‚¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚××׆×××׉×××××8ׂ¬×¬¬„¬×¬…××ׂ׊××××××ׄ×××׃×ׂ׈××××××׃×× ×‚¬×¬ƒ¬×¬×5ׂ×"¬‚××׆×××׉××××××8ׂ¬×¬¬„¬×¬„××ׄ××׋×××××××…×××××׆×××׉××××××׃×׃×× ×‚¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×××Iׄ¬×¬¬¬„¬×¬…××׆×××ׂ××…×××…××××××׆×××׉××××××ׂ×ׂ××ׂ¬×¬ƒ¬×¬×5ׂ×"¬‚×ׂ×Hׂ¬× ¬„¬×¬…××× ×××3ׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚ׂ×׃×Fׂ¬× ¬„¬×¬…×××׃×××2ׂ¬×¬ƒ¬×¬×5ׂ×"¬‚Xׂ¬× ¬„¬×¬„××× ×„××׃×0ׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚Xׂ¬× ¬„¬×¬‚hׂ¬×¬ƒ¬×¬×5ׂ×"¬‚X׬ ׄ¬×¬‚hׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚X׬ƒ¬×¬‚hׂ¬×¬ƒ¬×¬×5ׂ×"¬i‚¬×¬i‚¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬k׬k׬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ×)¬m¬ ¬y¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬)¬y¬ƒ¬×¬×5ׂ×#¬¬„¬¬¬¬…¬¬¬¬„¬¬¬…¬¬F¬‹¬¬¬¬¬¬¬…¬¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬¬†¬¬¬¬‡¬¬¬¬¬ƒ¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬-¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××#¬¬„¬¬¬ˆ¬¬¬¬¬¬¬…¬¬¬‹¬¬¬¬¬¬H¬Œ¬¬¬¬¬¬¬¬…¬¬¬‹¬¬¬¬¬¬¬ƒ¬¬†¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬ˆ¬¬¬¬¬/¬ƒ¬×¬×5ׂ×#¬¬„¬¬¬¬„¬¬¬¬ƒ¬¬¬¬I¬Œ¬¬¬¬¬¬¬¬…¬¬¬‰¬¬¬¬¬¬¬†¬¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬ˆ¬¬¬¬3¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×#¬¬¬ƒ¬¬¬¬¬ƒ¬¬ƒ¬¬¬J¬Œ¬¬¬¬¬¬¬¬„¬¬‰¬¬¬¬¬¬‚¬¬ƒ¬¬‡¬¬¬¬¬ƒ¬¬¬‡¬¬¬¬/¬ƒ¬×¬×5ׂ×#¬¬ˆ¬¬¬¬¬¬¬ƒ¬¬‹¬¬¬¬¬¬H¬Œ¬¬¬¬¬¬¬¬…¬¬¬‹¬¬¬¬¬¬¬‰¬¬¬¬¬ˆ¬¬¬¬¬‡¬¬¬¬ˆ¬¬¬¬¬/¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××#¬¬¬¬‚¬¬…¬¬¬¬¬‚¬…¬¬F¬ƒ¬¬…¬¬¬…¬¬¬¬‚¬¬ƒ¬¬Œ¬¬¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬ˆ¬¬¬¬ƒ¬¬-¬ƒ¬×¬×5ׂ×#¬¬¬X¬¬¬¬¬¬5¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×#¬¬¬X¬¬¬¬¬¬5¬ƒ¬×¬×5ׂ×#¬¬X¬¬'¬¬…¬¬5¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ×"¬l׬l׬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬j¬×¬j¬×¬ƒ¬×¬×5ׂ×"¬‚hׂ¬×¬‚hׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚hׂ¬×¬‚hׂ¬×¬ƒ¬×¬×5ׂ×"¬‚#×Dׂ¬×¬‚×Kׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚#×Dׂ¬×¬‚×Kׂ¬×¬ƒ¬×¬×5ׂ×"¬‚ׂ×׈×××××׉××××××…××××××׃××××ׂ¬×¬„×׈×××××׉××××××…××××××׃×××ׇ×××××ׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬…××׃×׆×××׋×××××××…×××××׃×ׄ×××ׂ¬×¬…××׆×××׋×××××××…×××××׃×ׄ×××××ׂ¬×¬ƒ¬×¬×5ׂ×"¬…××××…××׋×××××××…×××׃×׃×ׇ×××ׂ¬×¬…×××…××׋×××××××…×××׃×׃×ׇ×××××ׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬…×××ׂ׊××××××ׄ×××׃×ׂ׈××××ׂ¬×¬…××ׂ׊××××××ׄ×××׃×ׂ׈××××××ׂ¬×¬ƒ¬×¬×5ׂ×"¬…×××ׄ××׋×××××××…×××××׆×××׉×××××ׂ¬×¬„××ׄ××׋×××××××…×××××׆×××׉××××××…××ׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬…×××׆×××ׂ××…×××…××××××׆×××׉××××××ׂ¬×¬…××׆×××ׂ××…×××…××××××׆×××׉××××××ׄ×ׂ¬×¬ƒ¬×¬×5ׂ×"¬…×××× ×××,ׂ¬×¬…××× ××××ׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬…××׃××׃×××+ׂ¬×¬…×××׃××××ׂ¬×¬ƒ¬×¬×5ׂ×"¬‚ׂ××× ×„××׃×)ׂ¬×¬„××× ×„××׃××ׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚hׂ¬×¬‚hׂ¬×¬ƒ¬×¬×5ׂ×"¬‚hׂ¬×¬‚hׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚hׂ¬×¬‚hׂ¬×¬ƒ¬×¬×5ׂ×"¬i‚¬×¬i‚¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬k׬k׬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ×)¬‚y¬x¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬o×@ׂ×$¬…¬¬¬¬„¬¬¬‚¬¬ƒ¬¬Š¬¬¬¬¬¬¬ƒ¬¬C¬¬¬¬‚¬¬‚¬¬ƒ¬¬¬ˆ¬¬¬¬¬ƒ¬¬Q¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××#¬¬…¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬‹¬¬¬¬¬¬¬E¬¬„¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬S¬ƒ¬×¬o×@ׂ×#¬¬ƒ¬¬¬¬¬¬ƒ¬¬‹¬¬¬¬¬¬I¬¬„¬¬¬¬ƒ¬¬ƒ¬¬¬ˆ¬¬¬¬W¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#ׂ#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×#¬¬ƒ¬¬ƒ¬¬¬¬¬ƒ¬¬‰¬¬¬¬¬¬E¬¬ƒ¬¬‚¬¬‚¬¬‚¬‚¬¬‡¬¬¬¬S¬ƒ¬×¬n×Aׂ×#¬¬¬‹¬¬¬¬¬¬¬…¬¬¬‹¬¬¬¬¬¬¬E¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬ˆ¬¬¬¬¬S¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃#×××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××#¬¬ƒ¬¬¬‚¬‚¬„¬¬‚¬¬ƒ¬¬ƒ¬¬C¬¬¬¬¬‚¬¬„¬¬¬ˆ¬¬¬¬ƒ¬¬Q¬ƒ¬×¬m×Bׂ×#¬¬r¬¬¬ ¬¬Y¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×#¬¬ƒ¬r¬¬¬ ¬¬Y¬ƒ¬×¬l×Cׂ×$¬ƒ¬¬r¬¬¬¬…¬¬Y¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬k×Dׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#ׂ#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬j×Eׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃#×××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬i×Fׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬×g׬ƒ¬×¬h×Gׂ×"¬¬e¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬g×Hׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#ׂ#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬f×Iׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃#×××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬e×Jׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬d×Kׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬c×Lׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#ׂ#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬b×Mׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃#×××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬a×Nׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬`×Oׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬_×Pׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#ׂ#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬^×Qׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃#×××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬]×Rׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬\×Sׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬[×Tׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#ׂ#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬Z×Uׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃#×××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬Y×Vׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬X×Wׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬W×Xׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#ׂ#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬V×Yׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃#×××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬U×Zׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬T×[ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬S×\ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#ׂ#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬R×]ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃#×××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬Q×^ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬P×_ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬O×`ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#ׂ#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬N×aׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃#×××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬M×bׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬L×cׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬K×dׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#ׂ#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬J×eׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃#×××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬I×fׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ××#×#×#×#×#×#×#×#×#×#×…#׬¬#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬H×(׆¬×׬׬9ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃×#×#×#×#×#×#×#×#×#×…#׬׬ ×#×#×#×#×#×#×#×…#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬G×'ׇ¬×¬×¬×¬#××ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#ׂ#×#×#×#×#×#×#×#×#ׄ#×׬×#×#×#×#×××#××#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬F×'×…¬×¬×¬×ƒ××ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#׃#×××#×#×#×#×#×#×#×#×#ׄ¬×׬׋××××#××#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬@××'׃¬×¬×ƒ×׃××ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××ׄ××#×#×#×#×#×#×#×#×#×…#¬¬×¬×„×#×#××#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬>××'׆¬¬×¬×¬×„×××ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××ׂ×#×#×#×#×#×#×#×#×#×…#׬׬׊××××××#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬=××&×…¬×¬×¬× „××ׇ×××ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×ׄ×#×#×#×#×#×#×#×#×#ׇ#×׬×׬×׉#××#××#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬<×ׄ×&׆¬×׬׬׆××××ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#׈××××#×#×#×#×#×#×#×#×#׬׬׈×××#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬;×׃×&׬׬××…××ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#׃#×׆××#×#×#×#×#×#×#×#×#×…#¬¬×¬×ׂ××…#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬:×׆×$ׇ¬×¬×׬׈×××ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×××…××#×#×#×#×#×#×#×#׃#×ׂ׬׋×××××××#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬9×׃× ×׉×××××ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#××„× ƒ××#×#×#×#×#×#×#× ×…#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬8××„× × ×ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#ׂ#×…××#×#×#×#×#×#×#×# ×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬7×׃××l*ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#׃#×ׄ׃××#×#×#×#ׂ#××# ×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬6×ׄ××4ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#ׄ#×××…×× ×#׃#×××#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬5×׃××4ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×ׄ×××#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬4×ׄ××5ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#ׂ# ׃×××#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬3×׃××6ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#׃#×ׄ××&×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬2×ׄ××6ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#ׄ#×× ×ƒ×××#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬1×׃××7ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×ׄ××l×#ׄ×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬0×ׄ×ׂl×ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#ׂ# ׄ×××ׂ××#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬/×׃××׃¬¬×׃×…××ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#׃#×ׄ×× ×ƒ¬×¬×× ‚×#×…#××#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬.××„× × ×†¬¬×¬×¬× ××ׂ×"¬‚$××>ׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#ׄ#×× ×ƒ× ×ׄ¬¬×¬×׌××#××#×××#×#×#×#×#ׄ#××"¬‚$××>ׂ¬×¬ƒ¬×¬-×׃×××…¬×¬×¬×„×׉××××ׂ×"¬‚ׂ×׈×××××׉××××××…×××××××××ׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×ׄ××ׄ¬¬×¬×Š×#×××××#×#×#×#×#ׂ×"¬‚×׃×׆×××׋×××××××…×××××××׃×××ׂ¬×¬ƒ¬×¬,×ׄ××ׄ¬¬×¬×‡×××ׂ×"¬‚×××…××׋×××××××…××××ׄ××׃××ׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#×#ׂ#×…××× ×…l¬×¬×„×׋×#×××××#×#×#×#×#ׄ#××"¬‚××ׂ׊××××××ׄ××××ׄ××׃××ׂ¬×¬ƒ¬×¬+×׃××ׄ¬¬×¬×××ׂ×"¬‚××ׄ××׋×××××××…×××××ׄ××׃×××ׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#׃#×ׄ××…¬×¬×¬×××#×#××#×#×#×#×#×#ׂ×"¬‚××׆×××ׂ××…×××…××××××××××ׂ¬×¬ƒ¬×¬*×ׄ×׈××׬׬×ׄ×ׂ×"¬‚××× ××××%ׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#ׄ#×× ×ƒ×××…¬×¬×¬×׃×××#×#×#×#×#×#ׄ#××"¬‚×׃××××××&ׂ¬×¬ƒ¬×¬)×׃××ׄ¬¬×¬××…×××ׂ×"¬‚ׂ××× ×××'ׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#×#×ׄ××ׄ¬¬×¬××׃×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬(×ׄ××׃¬×¬×‚×ׄ××ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#×#ׂ#×…×××׆¬¬×¬×¬×׈××#××#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬'×׃××ׄ¬¬×¬×…×××ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#׃#××…×××…¬×¬×¬×‰#×#×××#×#×#×#×#ׂ×"¬‚×׃××ׇ×××ׂ××׊××××××××'ׂ¬×¬ƒ¬×¬&×ׄ××ׄ¬¬×¬×ׂ××ׂ×"¬‚×׃×׃×ׇ×××׃×ׄ××׋××××××××&ׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#ׄ#×××…×× ×ׄ¬¬×¬×ˆ××#×#×#×#×#×#×#×#×#ׄ#××"¬‚×××ׇ×××׃×ׄ××׋×××××××*ׂ¬×¬ƒ¬×¬%×׃× ××…¬×¬×¬××$ׂ×"¬‚×××ׇ×××׃××׉×××××××&ׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×#××„× ×ׂ׬××#×#×#×#×#×#×#ׂ×"¬‚××׋×××××ׂ׃××׋××××××××&ׂ¬×¬ƒ¬×¬$××„× ××l×l…××'ׂ×"¬‚××׋×××××ׂ×ׄ×ׂ×׃×××'ׂ¬×¬†¬×¬××#×#×#×#×#×#×#×#ׂ#×…×ׂ××× × ×#×#×#×#×#×#×#ׄ#××"¬‚××××׃××Aׂ¬×¬ƒ¬×¬#×׃×(××/ׂ×"¬‚×׃×׃××׃××Aׂ¬×¬„¬×¬#×#×#×#×#×#×#×#׃#×ׄ×××××#×#×#×#×#×#×#×#×#ׂ×"¬‚×׃××׃×ׂ××=ׂ¬×¬ƒ¬×¬"×ׄ×××@ׂ×"¬‚×cׂ¬×¬†¬×¬××#×#×#×#×#×#×#ׄ#×× ×ƒ×××ll ×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬!×׃×× @ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#×#×#×ׄ×× ×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬ × ×‚× Aׂ×"¬‚׃×××ׄ××׃××׊××××××××'ׂ¬×¬†¬×¬××#×#×#×#×#×#×#ׂ# ׃×× ×# ×# ×#×#×#×#×#ׄ#××"¬‚×׌××××××××…××׃×ׄ××׋××××××××&ׂ¬×¬ƒ¬×¬×׃××lBׂ×"¬‚×׊×××××××…××׃×ׄ××׋×××××××*ׂ¬×¬„¬×¬#×#×#×#×#×#×#׃#×ׄ×× ×#×#×#×#×#×#×#×#ׂ×"¬‚×ׇ×××ׄ××׃××׉×××××××&ׂ¬×¬ƒ¬×¬×ׄ××!Bׂ×"¬‚×ׇ×××׊××××׃××׋××××××××&ׂ¬×¬†¬×¬××#×#×#×#×#×#ׄ#×× ×ƒ×× ×#×#×#×#×#×#×#×#ׄ#××"¬‚×ׂׂ׋××××××ׄ×ׂ×׃×××'ׂ¬×¬ƒ¬×¬×׃×× Cׂ×"¬‚×ׂׂ××Aׂ¬×¬„¬×¬#×#×#×#×#×#×#×ׄ××ll×#×#×#×#×#×#×#×#×#ׂ×"¬‚×׃××××Aׂ¬×¬ƒ¬×¬× ×‚× Dׂ×"¬‚׃××××××=ׂ¬×¬†¬×¬××#×#×#×#×#×#ׂ# ׄ×××!×#×#×#×#×#×#×#×#ׄ#××"¬‚×cׂ¬×¬ƒ¬×¬ׂ׃×××!Dׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×#׃#×ׄ×× ×!×# ×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚$××××ׂ¬×¬ƒ¬×¬×ׄ×× ×l Eׂ×"¬‚$××××ׂ¬×¬†¬×¬××#×#×#×#×#ׄ#×× ×ƒ× ××!×# ×#×#×#×#×#×#×#×#×#ׄ#××"¬‚ׂ×׈×××××׉××××××…××××ׄ××ׂׂ×××ׂ¬×¬ƒ¬×¬××ƒ× ×× ƒ¬×¬×ׂ×(ׂ×"¬‚×׃×׆×××׋×××××××…×××ׄ××׃×׃×××ׂ¬×¬„¬×¬#×#×#×#×#×#×ׄ×ׂ× „¬¬×¬× ׋×××#××#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×××…××׋×××××××…×××׃××׃×××ׂ¬×¬ƒ¬×¬×ׄ××× „¬×׬ ׂ××…×××-ׂ×"¬‚××ׂ׊××××××ׄ××××ׄ××׃×××ׂ¬×¬†¬×¬××#×#×#×#×#ׂ# ׃×× × ƒ¬×¬ׂl „l׃××…#××#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚××ׄ××׋×××××××…×××××ׄ××׃×××ׂ¬×¬ƒ¬×¬×׃××× „¬¬×¬×ׄ××ׂ××,ׂ×"¬‚××׆×××ׂ××…×××…×××××׃×ׂ×××ׂ¬×¬„¬×¬#×#×#×#×#׃#×ׄ××"‚¬¬× „×××ׄ×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚××× ×׃××'ׂ¬×¬ƒ¬×¬×ׄ××#„¬×׬× ‰××××ׂ-ׂ×"¬‚×׃×××××(ׂ¬×¬†¬×¬××#×#×#×#ׄ#×× ×ƒ×× ׄ¬×¬×‰#××××××#×#×#×#×#×#×#×#×#×#ׄ#××"¬‚ׂ××× ×××(ׂ¬×¬ƒ¬×¬×׃×× ׃¬×¬×†×××׃×,ׂ×"¬‚×cׂ¬×¬„¬×¬#×#×#×#×#×ׄ×× ×…¬¬×׬× …×#׆×#×××#×#×#×#×#×#×#×#×#×#×#ׂ×"¬‚×cׂ¬×¬ƒ¬×¬×ׄ×× ׬×××.ׂ×"¬ÿlklklklklklklklklklklklklklklklklklk×klklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklçklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklk¬×¬†¬×¬××#×#×#×#ׂ# ׃×× ×…¬×¬×¬×†×××#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬ƒk#l×l>l‚¬×¬ƒ¬×¬×׃×× ׂ¬¬×…×××0ׂ×"¬‚lׂll׈ll×ll×ll׉l×ll×ll×l×…ll×ll×l×l×lƒ×ll×l×l×llƒk¬×¬„¬×¬#×#×#×#׃#×ׄ×× ׄ¬×׬×#ˆ××××#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬†kll×lƒ×l×l†×ll×l×l‹×l×ll×ll×l×l…×l×l×l×l×l×lƒ×l×l„×ll×l×ll‚¬×¬ƒ¬×¬× ×ƒ× ׃¬×¬× Š××××××2ׂ×"¬‚l×l×l…××ll×l‹×l×ll×ll×l×l…×l×l×l×lƒ×l×lƒ×l×l‡×l×l×l×llƒk¬×¬†¬×¬××#×#×#ׄ#×× ×ƒ×× ׄ¬¬×¬× †×××#†×#××#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬†kll×l×l‚××l׊l×ll×ll×l×l„×l×l×l×lƒ×l×l‚×l׈l×l×l×l×ll‚¬×¬ƒ¬×¬×׃× × ׃¬×¬×‰××××2ׂ×"¬‚l×l×l„×ll×l‹×l×ll×ll×l×l…×l×l×l×l×l×l†×ll×l×l‰×l×ll×ll×llƒk¬×¬„¬×¬#×#×#×#×ׄ× × ×…¬×¬×¬×‰#×#×××#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬†kll×l×l†×ll×llׂll×…l××ll×…ll×ll×l×l×l†×ll×ll׉ll×ll×ll×ll‚¬×¬ƒ¬×¬× ׂ × ׄ¬¬×¬×„××…×××/ׂ×"¬‚l×l×l× l×l×l×l%lƒk¬×¬†¬×¬××#×#×#ׂ# ×ƒ× × ׬׉#×#××#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬†kll×lƒ×l×l×l׃ll×l×l%l‚¬×¬ƒ¬×¬×׃×× ×…¬×¬×¬×‡××××4ׂ×"¬‚lׂll×l× l„×ll×lƒ×l×l"lƒk¬×¬„¬×¬#×#×#׃#×ׄ×( ׂ¬¬×Œ××#×××#×#×#×#×#×#×#×#×#×#×#×#ׂ×"¬ƒklbl‚¬×¬ƒ¬×¬× ×‚× ׄ¬×׬ ××4ׂ×"¬ÿlklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklçklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklk¬×¬†¬×¬××#×#ׄ#×× ×ƒ× × ×‚¬¬ ׊×#×××#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬d‚¬×¬ƒ¬×¬ ×׃×× × ××9ׂ×"¬f׬„¬×¬#×#×#×ׄ×××#×#׊××××#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬ ×ׄ×× ×†×××:ׂ׬¬$¬†¬×¬××#×#ׂ#×…××ׂ×#×#׃#×ׂ×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬ ×׃××[ׂ׬¬$¬„¬×¬#×#׃#× ×‚×××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬ × ×‚×‚××[ׂ׬¬$¬†¬×¬××#ׄ#×× ×ƒ××ׂ×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬ × ×××[ׂ׬¬$¬„¬×¬#×#ׄ#××ׂ×××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬ׂ×ׂ[ׂ׬¬$¬†¬×¬××#×#ׂ#×…×××× ׃×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬ ׃×fׂ×*¬¬¬¬¬/¬‚.¬„¬×¬#×#׃#×ׂ#×× ×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×*¬¬¬ ¬:¬-¬ƒ¬×¬ ×××gׂ×"¬¬‚¬‚¬¬¬¬¬‚¬‚¬¬‚¬¬¬ƒ¬¬¬¬…¬¬¬¬¬‚¬ƒ¬¬ƒ¬¬¬¬‡¬¬¬¬¬¬¬†¬¬¬¬ƒ¬¬¬…¬¬¬¬„¬¬¬‚¬¬‚¬¬ƒ¬¬¬¬¬†¬¬¬†¬×¬××#×#××#× × ×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××"¬¬ƒ¬¬ƒ¬¬¬¬¬ƒ¬¬¬†¬¬¬¬¬¬†¬¬¬¬ƒ¬¬†¬¬¬¬†¬¬¬¬„¬¬¬ƒ¬¬¬„¬¬¬‡¬¬¬¬„¬¬¬†¬¬¬¬ƒ¬¬¬¬…¬¬¬¬¬¬¬¬¬¬¬†¬¬¬¬„¬¬¬ƒ¬¬…¬¬¬‡¬¬¬¬ƒ¬×¬ × × ×iׂ×#¬ƒ¬¬¬ƒ¬¬Š¬¬¬¬¬¬„¬¬¬¬†¬¬¬¬¬¬„¬¬¬¬†¬¬¬¬¬„¬¬¬ƒ¬¬„¬¬¬‡¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬¬¬„¬¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬¬„¬×¬#×#×#ƒ××#×#×#×× ×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×#¬¬„¬¬¬ƒ¬¬Š¬¬¬¬¬¬¬¬…¬¬¬¬¬¬ƒ¬¬‚¬¬„¬¬¬ƒ¬¬¬„¬¬¬‚¬¬„¬¬¬‡¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬¬¬ƒ¬¬ƒ¬¬¬¬ƒ¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬¬ƒ¬×¬ ×××jׂ×#¬¬„¬¬¬ƒ¬¬ƒ¬¬¬„¬¬¬¬†¬¬¬¬¬¬†¬¬¬¬¬†¬¬¬¬†¬¬¬¬Š¬¬¬¬¬¬¬„¬¬¬‡¬¬¬¬“¬¬¬¬¬¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬†¬¬¬¬„¬¬¬ƒ¬¬†¬¬¬¬ƒ¬¬¬†¬×¬××#ׂ#ׂ×#×#×#×#×#×#× ×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#××$¬ƒ¬¬‚¬¬ƒ¬¬¬¬…¬¬¬‚¬¬†¬¬¬¬¬†¬¬¬¬¬†¬¬¬¬¬‚¬‡¬¬¬¬„¬¬‡¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬…¬¬¬¬¬‚¬‚¬¬‚¬„¬¬„¬¬¬†¬¬¬¬ƒ¬¬¬ƒ¬¬ƒ¬×¬×*×lׂ×$¬ƒ¬¬¬¬¬¬¬„¬¬¬¬ƒ¬&¬¬=¬„¬×¬#׃#××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ×%¬¬ ¬¬¬¬„¬¬¬¬ƒ¬&¬¬=¬ƒ¬×¬׃×*ׂ×%¬¬ ¬ƒ¬¬-¬¬¬ƒ¬¬¬ ¬<¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬ƒ¬×¬×5ׂ׬¬$¬†¬×¬××#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׄ#×׬¬$¬ƒ¬×¬×5ׂ׬¬$¬„¬×¬#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#×#ׂ׬¬$¬‚¬×¬¬¬\¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllZl‚¬ƒ¬×¬lll6l‚ll„ll¬ƒ¬×¬"l‚××l‚××Rl‚××l‚××!l‚××l{lׄll×…ll¬ƒ¬×¬"l‚××l‚××Ql‚××l‚×× l‚××l{l× ¬…ll× ¬†ll¬ƒ¬×¬l‚××l‚××l‚××l‚××lƒ××lׂll×l†××ll××lƒ××lׂll׃l××l×l׃l××lׄll××l×l‚××l׉ll××l××ll×l‚××l×l„××llׂll×l×lׄll××l×lSl׬‚¬…ll× ¬†ll¬ƒ¬×¬l‚××l‚××l‚××l‚××l××l××ll××l××ll××l†××ll××l…××l××l‘××ll××l××ll××ll××l‚×× l†××ll××l†××ll××l›××ll××ll××l××l××l××ll××ll×× l™××ll××ll××ll××ll××l××ll××l†××ll××l‰××ll××l××l†××ll××lRl׬‚¬…ll׬‚¬Š¬¬ll¬ƒ¬×¬l‚××l×l‚×× lבll××ll××l××ll××ll×l†××ll××l‘××ll××l××ll××ll××l‚××l†××ll××l†××ll××l†××ll××lׄll××l‚××lŠ××ll××ll××l†××ll××l†××ll××l‰××ll××l××l†××ll××lRl× ¬…ll׬†¬¬¬†ll¬ƒ¬×¬l‚××l×l‚×× l—××ll××ll××ll××l××ll××ll×l‚××l‚××l׋l××ll××ll××l‚××l†××ll××l†××ll××l„××llׂllׂllׄll××l× lˆ××ll××llׇl××ll××l†××ll××l‰××ll××l××l†××ll××lRl׬‚¬…ll׬¬†ll¬ƒ¬×¬lŒ××ll××ll××ll×l¤××ll××ll××ll××l××ll××l××ll××ll××ll××l‚××l××l××ll××ll××l‚××l×l†××ll××l›××ll××ll××l××l××l××ll××ll××l×l‘××ll××ll××l××ll××l×l‰××ll××l××l×lSl׬‚¬…ll׬‚¬†ll¬ƒ¬×¬lŽ××ll××ll××ll×× l×lׂllבll××ll××ll××ll××lׂllׂllׂll× l‚××l‚×× l†××ll××l‚××l׉ll××l××ll×l‚×× l‚××lׂllׂll×l‚×× lׂll×l‚××lVl׬‚¬…ll׬¬†ll¬ƒ¬×¬lŽ××ll××ll××ll×× l×lŠ××ll××ll××l‚×× l‚××l‚×× l†××ll××l‚××l‚×× l‚××l‚××l‚××l‚××l‚××lVl׬†¬¬¬…ll׬†¬¬¬†ll¬ƒ¬×¬l…××l××l…××l×× l‚××l‚××l‚××l‚××l†××ll××l†××ll××l†××ll××l‚××l‚×× lŠ××ll××ll××l†××ll×× l‚××l†××ll××lRl׬†¬¬¬…ll׬‚¬Š¬¬ll¬ƒ¬×¬l…××l××lƒ××l×l‚××l‚××l…××l××l‚××l×l×l×l‚××l‚××l×l×l‚××l×lSl׬¬…ll× ¬†ll¬ƒ¬×¬lll6l× ¬…ll× ¬†ll¬ƒ¬×¬lll6l׃ll×…ll¬ƒ¬×¬lllZl‚¬ƒ¬×¬lllZl‚¬‚¬×¬¬¬\¬¬×××]׬¬¬_¬d†[†lp Xk3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ++++¬¬¬¬‚+¬¬¬¬‚+*¬¬Z¬¬¬"¬ ¬%¬Š¬¬¬+*¬V¬Z¬¬‚V¬"¬ ¬‚V%¬‰¬¬¬¬+¬‘+¬V+VV+V¬V¬+V¬™+¬¬+¬+++V+¬VV+VV+VVV¬R¬–¬++V¬V+V¬¬VV+++¬¬¬V¬V+VV+VŠ++¬¬¬V+ ¬ž¬++V+VV++++V+¬V+V+++¬ˆ¬¬¬¬+¬†V+¬VŠ¬+¬V¬¬V¬Œ+¬¬+¬+VV+¬V‚¬+VV¬R¬–¬¬V¬¬+¬V¬VV¬+V¬ˆ¬¬V¬+¬V¬+¬¬V¬+¬¬VV ¬ž¬¬VVV¬+VVV+V+VV¬++¬‡¬¬¬+¬ˆV+¬¬VVˆ¬V¬¬V+V¬‡+¬¬+¬+¬V‚+VŠ¬+VV+V+V¬R¬–¬¬V¬¬+¬V¬VV¬+V¬ˆ¬¬V¬+¬Vˆ¬+¬¬V¬+¬‚ ¬ž¬¬VV+V+V¬+¬V+V+¬V+VV¬++¬¬‚+¬“V+¬+VVV¬V¬VVV¬Š+¬¬VV¬+V¬VŒ¬V++VV+¬VV¬R¬¬’V¬¬+¬V¬V+V++¬+¬ˆ¬¬V¬+¬Vˆ¬+¬¬V¬+¬ ¬Ÿ¬V¬¬V+V++¬¬+V¬++V+¬V+¬V¬…¬+¬’V+¬+¬¬V¬++V¬+¬V¬+¬‚V¬X¬¬V¬V¬¬+¬V¬V¬ˆ¬V+¬+¬VŠ¬+¬¬V¬+¬¬V‚ ¬†¬+¬¬¬‚V¬„¬+¬‚V¬+‹¬V+¬¬¬+V¬+¬V ¬‚¬X¬…¬¬+V¬ƒ+¬V¬¬¬¬+V¬+¬‚V+¬‚+ ¬…¬¬+V3¬‚+¬¬¬,¬"¬7¬‚+¬¬ ¬*¬ ¬* ¬‚+¬¬¬¬‚+¬¬¬¬†+¬¬+¬¬¬ ¬†+¬¬+¬¬¬ ¬†+¬¬+¬¬k¬× ¬†+¬¬+¬¬¬ +V¬ +V ¬ +ƒ¬¬×!¬†+¬¬++¬+¬‚¬J¬¬…V¬¬×׬‚×׬„×׬¬…V¬¬×׬‚×׬„+¬¬×¬‚VV¬†+¬¬++¬ƒ+¬¬ +V +‚¬¬¬×¬ƒV׬‚×׬‚×׬׬ƒV׬‚××¬× ¬…+¬¬×¬‚+V¬›+¬¬+¬¬+¬¬V++¬++¬+¬‘+¬¬VV¬++V¬¬+¬V¬¬‡+V+VVƒ¬¬¬…¬¬×¬‚׬‚׬‚׬‚׬‚׬¬„¬¬‰VV+V+¬~¬+’V++V¬++V¬VV+¬VV¬×¬ƒV׬‚×׬‚×׬׬ƒV׬‚××¬× ¬…+¬¬ ׃+¬×V‰×V×V+¬×¬+¬Œ++V¬VV+¬V¬›+¬¬+¬¬¬V¬VV¬V+V+¬‘V¬++++¬V¬¬„+V+ƒ¬¬¬¬…¬¬×V¬‚×V¬‚×V¬‚×V¬‚×V¬‚×V¬¬†¬¬¬¬†+V+¬~¬‚+V¬‘+V¬+V¬+V¬+V¬×¬†+¬¬V¬×¬‚V¬‚VV¬…+¬¬×’¬VV¬¬×¬¬×¬V+׬”V¬V+¬++++¬V¬š+¬¬+¬¬VV+¬VV¬V¬VV ¬•VV+++++V¬¬¬„+V+ƒ¬¬¬¬…¬¬×V¬‚×V¬‚×V¬‚×V¬‚×V¬‚×V¬¬†¬¬¬¬†+V+¬¬‚+V¬‘+V¬+V¬+V¬+V¬Ž×¬¬+¬¬V¬¬×׬‚×׬„×׬׬†V¬¬×׬‚×׬ŠVV¬¬+¬¬ׄ+¬¬ƒ×¬×…¬V+׬•V¬++++V+¬›+¬¬+¬¬VV++¬VV¬V+V+¬•+VV+¬++++V+¬¬¬„+V+ƒ¬¬¬¬…¬¬×V¬‚×V¬‚×V¬‚×V¬‚×V¬‚×V¬¬†¬¬¬¬†+V+¬¬¬•+V¬¬+V¬+V¬+V¬+V¬Ž×¬+¬¬V¬¬×׬‚×׬„×׬׬†V¬¬×׬‚×׬ŠV+¬¬+¬¬׈¬VV+×…¬V+׬•V¬++++¬+V¬›+¬¬+¬¬¬V¬++++¬+¬•V¬¬+++¬¬+¬¬„+V+ƒ¬¬¬¬…¬¬×V¬‚×V¬‚×V¬‚×V¬‚×V¬‚×V¬¬†¬¬¬¬†+V+¬¬¬Ž++¬¬++¬¬++¬V+V¬×¬‡+¬¬V׬‚×׬‚×׬׬ƒV׬‚×׬׬‚V+¬…+¬¬׆¬¬V+×…¬V+׬•V¬¬++¬+++¬¬V¬Ž+¬¬+¬¬V+¬‚+ ¬†V¬‚VV¬¬„++V ƒ¬¬¬×¬×¬¬„¬¬ƒVV‡+++¬~¬‚+V¬×¬¬ƒV׬‚×׬‚×׬׬ƒV׬‚×׬׬¬…+¬¬ ׇV¬V+¬¬×…VV׬…V+V¬…++ ¬†+¬¬+¬V¬V¬¬E¬¬V¬×¬‚V¬×¬‚V¬…+¬¬ ׃V¬¬V¬×…¬VV×׬V¬„¬V ¬†+¬¬+1¬‚VK¬¬׆¬V¬¬×׬‚×׬ƒ×׬׆¬V¬¬×׬‚×׬ׅ¬+¬¬×!¬†+¬¬+¬¬ ¬¬¬„¬¬:¬†+¬¬+¬¬Q¬!¬†+¬¬+¬¬¬ ¬†+¬¬+¬¬¬ ¬†+¬¬+¬¬¬e¬Ð¬†+¬¬+¬‚zUUdU¥¬†+¬¬+¬‚zUUdU¥¬†+¬¬+¬× ¬‚zUUdU¥¬×¬†+¬¬+¬‚¬V¬‚zUUdU¥¬‚¬V¬†+¬¬+¬¬¬‚zUUdU¥¬¬¬†+¬¬+¬ƒ¬V+V¬‚zUUdU¥¬ƒ¬V+V¬†+¬¬+¬ƒ¬+‚V¬‚zUUUƒOO+ ƒ+OO:U¥¬ƒ¬+‚V¬†+¬¬+¬ƒ¬+‚V¬‚zEU*OUJUƒO**+*7U¥¬ƒ¬+‚V¬†+¬¬+¬ƒ¬V‚V¬‚z:U++OUAU++‚*+4U¥¬ƒ¬V‚V¬†+¬¬+¬ƒ¬V‚V¬‚z7U* +ƒ$$OU+*Hƒ*++U+ƒO&U+V+*U‡*$NyyUV…UUO$N*‚++V‡¬¬V++U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU+V+†$++U$VUO+‚**0*+Š+OUVU+**#U*‚++V‚++*U‡ONO*£U V+$N+‹++VV¬V+U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚++V+‡$*UUVz€€z VUO +ƒ**$'‚$*"+‰*+UVU+*!UO‚++V‚++*Uˆ*NNyyOV+*N++V‡¬¬V+*U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU+V+ˆ*OUy€¥«¥ €zVU+*‚$$"*+*$‚** +‡+VV++ U‚++V‚++U‡O$N*€ V+N+Œ++VV¬V++OU¥¬ƒ¬¬‚V¬†+¬¬+¬‚¬V¬‚zU+V+‚$*Uƒ€¥«‚¥¥€‚zzVU+*Z‡++OUUO+‡+VzV+U+V‚++ U…NNV V+N*‹++VV¬¬V++U¥¬‚¬V¬†+¬¬+¬ƒ¬¬‚V¬‚zUƒO++V+ ‚**$Uz€zVUO+ƒ**$i‡*+OUU++†+VV+U‡++*++V‚++ U„*$NVV+…NN+$NŠ+VV¬V+U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚++V+ …O*OUV‚UUO+*W‹,,+2,NH$$NŒ$$$$HN$$†+UVVU+†+zV+UˆxVЫV++V‚++$ Uƒ*zV+ƒ$Ns‹++VV¬¬V+*U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚++V+ƒU*Uz+*$V* UƒNN+rƒNVN $‚+‚$…+UVU+†+€z+*Ur†OÐ׫2+V‚++O UƒVV+V+ƒNO+Š+VV¬V++U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚++V+†y£*UyzS‡Nr––rœxr‚NN UŒONr––r$rNH$$ƒ*+*‚$$„+VV+…+€V+UNr†2ÐÖ¬^+V‚++‚*¤UVV…++NN*+V‡¬V+OU¥¬ƒ¬¬‚V¬†+¬¬+¬‚¬V¬‚zU‚++V‚++…OUyy+VHH$„$$N Ç‚ÁÁÀœ‹––œ–rrNNr––ƒ$+2U‰*++OU++ „+UU*…+VV+$…OUUƒONNr†3ÖÖ¬e+V+†UyUz ¬V+ƒNN*‹++VV¬¬++OU¥¬‚¬V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚O+V+NUVV>ƒ$ry«‡zNr––À–r„2r$œÀÁÇŠ–œÀ–rœœr––ƒNU2rN+ „*+U*„+€zO…€€+OU„O$NNr†×Ö^+V+‡$$*€ƒ+¬V+‚N++V†¬V+*U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚O+V+$Uz +-ƒV++U…rœÀÀÖÁN–ÀÀrNrN2r–$NUrNƒ$N–À‚–r–†rœœrN$ˆÇÇV2ÇÁr+$ ƒ++,„+€V+…+VUƒNHNr„×Ð^V+Œ$HN$+ªV¬VV…++NN*Š++VV¬V+U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚++V‚++„*UUy +'Š++VV¬V++*U„NN–¤ÖŠ–ÁÀr*x–yO–+ $r––Pr–œœ–rrH*y¤Š*ONN+2££$‚** ‚+N„+€V+…V+*Uƒ$HNr†2‚ÖÏe2V‚++‡*U*$NN$ƒU¤¬‚VV…++NN+Š++VV¬V++U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚++V+*U€ ‚VV+ƒ$**U+Š++VV¬V++U‚y–ÖŠrÖÖ–NUy–2r–N”$–2sœœÀ––r¤^::^ÈÎÎÇy‚*‚O$ƒV€U…+V$Uƒ$NNr†2‚ÖÈe2V‚++U…*$$NN¬+†+V+‚N*+Vƒ¬+U¥¬ƒ¬¬‚V¬†+¬¬+¬‚¬V¬‚zU‚++V‚++„OUUy ¬+V+ U$‰++V¬¬V++U‚y–Ö…ÁNÖÖrU‚rVr$…NÁÀ–‚y¤:ÈÎ+‚*$ƒ€€+…V€+NUƒ$NNr…2‚ÖÈeV+U‰V$N*+ ¬ƒ×׈33VV„++NOŠ++VV¬V++U¥¬‚¬V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚++V‚++OUƒ€¬V+O U+Š++VV¬¬V++ˆ+UUyxœœ¤Ö…žÖÈrU…œ2œ$ŠN£ÇÀÀ–r$¤^:ÈÎ+$ƒ+U†++$NUƒ$NNr‹2‚ÖÏeVVV+Uz…+$HNU ¬×Vˆ343VV…++NN*Š++VV¬V++U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU+V+U‚y¬V+ U$‰+VV¬V++ƒ*UUœŠ–ÈÖÖÏœ€ÖÈrUƒOœ–NÇÀÀ–ry¤::WÈÎ+$$€V++VNUƒ*HNr‹2‚ÖÏeVVV+U¬…$+V¬׈ˆ343+V„+NN+Š++VV¬V++U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚O+V‚++*U¬VUOƒ++O y*$‰++V¬V++ƒ*Uy‡œ¤ÖÖÏ–€ˆ‡\UUVOœN‹NÀÀ–ryy£΂£*+‡$$U€+†€z+NN UƒNHNr‹2ˆÖÏeVVV+ƒUU+¬ƒ++ƒ**+¬×V†33VV„++N+„++VVƒV++U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚O+V‚++ $U ¬€¬€yUONr‚NOysN™*Ox££œÏÖÖÏrV«ÖÖ¬VU2yœN„œÀÀ$* N‚y$+†$+V†V€+*N UƒNHNr‹VÖÖÏeVVV+ƒUUV¬Œ*U++¬¬×V„V„+ON++VƒV+U¥¬ƒ¬¬‚V¬†+¬¬+¬‚¬V¬‚zU‚O+V‚++ $U‚y¥ ¬ƒN$$HN%r…–£È£ÖƒÀO­Ö†€N2r–*‚„$ÀUN ‚+$‚€V†+€ONN UƒNHNr‹VÖÖÏeVVV+ƒUU¬‹V+€U+Uy¬׬ VVƒONN+‡VVV+U¥¬‚¬V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚O+V‚++ NU€¬†N$$++$ N)r…œÇΤÖƒ–s­Ö…VN+N–…NÀy–r+‚%‚+++‹€V$+UNr UƒNHNr‹VÖÖÏeVVV+ƒUU¬‹ONy**€× VƒONN+‡VVV+U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚++V‚++ OU€ ¬‰r$$$Nr –r‹œÈΣÏÖÖÏrr‚Ö‡¬+N+N–$‚$–À–r$$$N$+UVU++ ++Ž$VV*$€V$– UNr‹2‚ÖÏ^VVV+“Uy¬¬¬¬++y*$*Ïׄ,+Vƒ+NN+‡VVV+U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‡+VVVV+OU€ ¬Š+r$$VVHN r–ˆÈÏÏÖÖÈrŠ]^^+HrN––$r–À–rrNNrœ–*+UV++ ƒ+U++ˆ+VV+†V€+ÁN UNr‹s‚×ÏVVV+‚O$+ˆ*¬Vy*„y$UÐ׃+V ‚V¬V…rxN*$+‡VVV+U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‡+VVV+ $U ¬„×r$…$HHN r –ˆr£Õy«ÖÖÈ–ŠNH$$rr2N–rr–À‰–rrNrœœr+ƒ$+ ‡++*-+*+ˆVV+†V€+Ç– UNr‹‚×ЫVVV+++’*¬V++OO**$¬×¬V ‚¬V…$N$+‡VVV+U¥¬ƒ¬¬‚V¬†+¬¬+¬‚¬V¬‚zU‡+VVV+ Uy€¤ ¬ׂr$‚HHN r–r–‰rN¤Î«¤À$r–‡rVOÀ––rr–ŒœÀÀ–rr$Nrœ–*ˆ+2+-YX++VV$*++NœN UNr†]×ЬeV‚V+V„+$*+ƒOO*‚V+ ƒ+¬¬V„+$H*+†VV+*U¥¬‚¬V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚+V‚V+ +V ¬פ$‚HH Nr‡–y,+NrrNƒrNNr –†ÈÈœ–ÀrŠ––O,–ÀÀº–rƒ$rœŒÀÀ–rN**r––rN+ +€€*-YX+++VU*+€UOÁr UƒNHNr†3ÖÖ¥^V‚V+V€+€€+%+*+*ƒ¬¬Vƒ+N+†VV++U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚V¬‚zU‚+V‚V+$U¬×¥$Uz…VUUOOV‰Uœ33OrNNU‚yr+†VUUO+*$‡Nr–œÁÁœrNƒ2*–Àƒº–r „$r£Ç‚ÁÁÀŠ–rN++Nr––s+ †z«+*V++*VU*€VUÇr UƒNHNr†2ÖÖÈ‚U‚V+„++U*ŠVv{VVU++„+¬¬Vƒ+N+†VVV++U¥¬ƒ¬¬‚V¬†+¬¬+¬ƒ¬¬‚VV¬‚zU‚+V‚V+ *U€¬ׂz¬„+¬¬×¬VˆÀ23,sNHNr+†VV++ˆN–rr–r–N–†N$+,NyÀƒ––rŠ$Nrœ££ÎV¤ÇÁÀŠr–N++$NrN++ ‡+«€+*++V+$U€V+r UƒNHNr‡VÖ×ψ]V‚++ƒ$**+†V||+$ƒV¬¬Vƒ*$N+‡VVVV++U¥¬ƒ¬¬‚VV¬†+¬¬+¬ƒ¬¬‚VV¬‚zU‚+VƒV++ *Uy¬×¬Vyysœ–rNHrr––+†VV++N–‚rH– º––N,*NNrÀÀ–O––N$NrrœœÁÇyU¤VyljÁÀÀ–Nyœ–N+‡$N++,+ †+€€U+++ŽUU+rxV€+r Uƒ$NNr‡V‚×Ï]V‚V+‹*VVU++*+‚vV¬†VVU*$$+„VVV+U¥¬ƒ¬¬‚VV¬†+¬¬+¬‚¬‚VV¬‚zU‚++ƒV++ *U«¬×¬VŠyœœÇÁœrN$r–+†VV++‰NºNœ–NH–r–OOrN*NºÀœ2Nr–‡œœ2rN$+£œœ–r–ÀVy–r*+„$+,‚+,+ …*++ +V+œrU€+£–y Uƒ$NNr‡s]×ÐÏ^V‚V+‹UVU++*V¬+¬‡VVUU$$+„VV+U¥¬‚¬‚VV¬†+¬¬+¬ƒ¬¬‚VV¬‚zU‚++ƒV++ *U¥¬×¬VŠUÀÀÇÁœ–rHH–+†VV++¡N–rÀrNO¤VNr2NN*++–ÀÀœ*$*N*+O,*Ž*xœ–N**–ÀÇ]s–r+Œ,2232|  Q++‚++‘*UUNÇ–+Uyœy Uƒ$NNr†3¬ÖÏ‚VƒV+++VU++$+VV×++ ƒ¬¬†VVUU$$+†VVV+U¥¬ƒ¬¬‚VV¬†+¬¬+¬ƒ¬¬‚VV¬‚zU‚O+ƒV++ *Uy¬×¬VyÀ‰Áœ–rN$r–r+†VVV++š*NrœrHy¤$2+Nr*+*–œÀsƒ**$Ž*N$+–À£]–NN+2†++2Q‚++…OVV+* ’++V+ÀÇÀ$+€Vœy Uƒ$NNr‡Vˆ×ψ]V‚V+UO+*V¬V××+$V¬‚+„*+¬†VUU*$$+†VVV+U¥¬ƒ¬¬‚VV¬†+¬¬+¬ƒ¬¬‚VV¬‚zUˆO+VVV+ U‚y¬ × ¬„V$V‚N–À‡œrrHN–N+†VVV++*U–œr$£È+2Uy,rNr–Ày33,+—+NÀÇ€,r*,]++V+++,+ …+UV+* ’+UV+*ÀÇÁN€Vœ Uƒ*HNr‡s‚×Ф^V‚V+‚+V¬ˆV¬O€¬+ƒ+¬¬zU‚$$+Vƒ++OU¥¬ƒ¬¬‚VV¬†+¬¬+¬ƒ¬V¬‚zUƒO+V‚V+ OUz¬ × ¬…€U+*†VVOrœÀ‡œ–rN$rN‰++VVVV++–*Uœœr$œÇ2UUrs–r–Àœ23‚+„VV++Œ+rÀy]Or23+‡+V+VV…+UV+*”+VV+Oy–ÇÇNV€+$ÁN U„N$NNr†3×ÖψV‚V+V¬ˆ+¬$*«¬ƒ+¬¬zUƒO$$+Vƒ+OU¥¬ƒ¬V¬†+¬¬+¬ƒ¬V¬‚+V¬‚zU‚+VƒV++ *U¥¬× ¬‡Vy*++…+r–À„œ–rN$ˆ++VVVV+ŒUxœrNœÈ+,UŽr–À–ÀV34:33,+ ‰++ryy3,‚+V+‚+ƒ+UV+ƒVU$ŽUU–ÇÇrV€+œr Uƒ$NNr‡V¬×Ï¥^VƒV++V¬…+$«¬‚+ƒV¬¬ˆV+yUUN$+V‚+*U¥¬ƒ¬V¬‚+V¬†+¬¬+¬ƒ¬V¬‚+V¬‚zU‚++ƒV++ $Uz¬ˆyy*yO$*Œ*$NœÀœœ–rrN$+†VVV++ŒUrÁœNNÀÈ,+UŒNrœs34::432ˆ++V2zVW+„++‚+…++UO+OUŒrÀÇ–$U€+Nr UƒNHNr†^×ÐÏdV‚V+ƒ$O¬…+$U¬ƒ+¬¬ŠVO$*yU$$+V+U¥¬ƒ¬V¬‚+V¬†+¬¬+¬ƒ¬V¬‚+V¬‚zUƒO+V‚V+ OU€¬‰VUU*UN*U$†,VO–œˆ–rrN$$+†VVV++‹UxÇ–NNÁÈ2U„++34:„432 ‚++2†+€3yr$‚,++ Œ*+UVV+*+O+*UŒxÀÇœ$+€UNr UƒNHNr‡V¬×Ï^V‚V+‹$*¬¬+$Õ¬V€ŠO$N*y*$+Vƒ+OU¥¬ƒ¬V¬‚+V¬†+¬¬+¬ƒ¬V‚+V¬‚zU‚+VƒV++ *U€¬œ++*NUy*£**yOVVVy–œœ––rN$+V‚++‹rÇrN–ÈÈ$2Uƒ,43‚ +Š3322]zÇœr$+++‰$++VV€VU+ƒ+U+UŒrÀÇÀ$*€UNx Uƒ$NNr‡s]×Ф^V‚V+†+¬++€¬+Uˆ$$N$*N$+Vƒ++U¥¬ƒ¬V‚+V¬†+¬¬+¬ƒ¬V¬‚+V¬‚zU‚+VƒV++ $U€¬‚€*‰N$U*O£$£$ƒVVr–ƒyV+‚++V‚++Œ+xÁ£r$ÁÈzP,Uƒ+3‚ Œ2322,OÇÇ–N +„++UV€ƒV+*…UO+UOU‹œÇÇN€VNœ UNr‡W¬Ö¥2]VƒV++„+$U¬*U†$N$y+Vƒ++U¥¬ƒ¬V¬‚+V¬†+¬¬+¬ƒ¬+¬‚+V¬‚zU‚O+‚V+ OUƒª€+¬+*Oy*£*NU*O*V†N–r+VV+V‚++ŒOxÇrNÇÈV$R&UŒ++++ƒ29,+‡*–ÀÇÀ–N „+++„$++V€ƒVU+†++OU$VUŒ–ÁÇrzV*rN U„NHNNr^×Ö«eV2]V++…$+ª¬V* U†$NN+V„++OU¥¬ƒ¬+¬‚+V¬†+¬¬+¬ƒ¬+‚+V¬‚zUƒO+VƒV++ $U†y€€U¬ŽV++$*£*Oy*£*V‡Or*++*++V‚++ŒOœÇœN–ÈÈV&R%U+ƒVV„+322+‡NÀÇÇÀr$‹++VV€€VV+*™+++OU*+*UrÀÇ–VV*rN Uƒ*NNr3²×Ï¥]V,,2VV+‰$*€UUyUUz U‚$+Vƒ+*U¥¬ƒ¬+‚+V¬†+¬¬+¬ƒ¬+V‚+V¬‚zU‚++‚V+ †NUU€*ƒ$*¬V+‹O*U*Uy*+VU…++V++V‚++*yœÇœH¥¬¬{|VU+ ‚+V„V2+2+‰NÀÇÇÀr$„++U€„€U++ ‹U***++*+**rÀÇœUV+–x U„NHNNrŽV^×Öψ]VW2,+U* U* +Vƒ++*U¥¬ƒ¬+V‚+V¬†+¬¬+¬ƒ¬+‚+V¬‚zUƒ++VƒV++ „U«*$U‚y€ ¬+†$$ONUy‚VVU†+VV+V‚++Š+yÇÇœrÈϬ¬‡zVVUU++ ‚+OV†,,+2++‡–ÀÇÇ–N$*Š+V€€€V++ +‰U+++++*yÀÇ+V+–xUƒ$NNrˆV¬×Ð¥^VV„2,*U* £U* +V„+++U¥¬ƒ¬+‚+V¬†+¬¬+¬ƒ¬+V¬‚z Uƒ]«€ U‚++‚V+ ƒOU**U€ ¬…V++‡£*+VVOU†O+V+V‚++ŠUxÇÇrsÈ«¬¬V„VV+$+„2++,†–ÀÇÀ–NO*ˆ$+€VO+++V+†**++ŒO–Ç+V+œxUƒNHNrˆs^×ÖψdV…V,*U £U‚O* +Vƒ++ U¥¬ƒ¬+V¬†+¬¬+¬ƒ¬‚V¬‚z Uˆ]×Ðψ£yUƒ++VƒV++ ‚ªU$ U€¬ƒ¬¬„¬V+VUŠO++$+++V‚++ˆOUœÇÇrOȬ‚VV++…,X+,+‡NÀÀÇÀ–NUO†*+V€V+„+++ƒ+VzVŠ+U+++*++++U–ÇÇ$+V+œxUƒ$NNrˆU^×ÖψVV‡VV+„**UO £U* +V„++O U¥¬ƒ¬‚V¬†+¬¬+¬‚¬V¬‚z UŠV­×ЈÎÎÈ££yU‚++ƒV++ +O U†z¥¬¬Ï€+†¬¬+‚O‚VOU*ƒVV++ˆOUœÎr¤É¬V V+PvQUUrÀÇÇÀrUO…+UVV+‡++++ƒV+€V+†+*++++*xÀÇN+V+xU„NHNNrˆV¬×ÐÏeVVƒVV+£U* +V„++*!U¥¬‚¬V¬†+¬¬+¬ƒ¬+‚V¬‚z U…¬×Ь«΂ǣUƒ++V„VV++ U‡z¬Ï+V¬‹V++Vy$+UOƒVV++‰*UyÇÎNÈ¥¬‹VV++vu&v+OU†rÀÇÁ–rUˆ**+U++ƒ++V+‹*+*++VOV++++$rÀÇNV+rUƒNHNr‰s3¬×Ð¥dVV‚VV„V ‚£*+V„++*"U¥¬ƒ¬+‚V¬†+¬¬+¬‚¬V¬‚z U…V×Öψ·ÈÇ£yU++ƒV++ ‚$O U‚yª¬ƒUNUO‚+V‚++‰*UyÇÇœ$ÈЬV|QOU‡y–ÀÇÀ–NU*‚++‚++Vœ+U$+++O*+V+VV++V++*++‹NÀÇNU+rUNr‰s^×ÖÏ¥dVVV+†+Ȥ2 U+V„++*#U¥¬‚¬V¬†+¬¬+¬¬¬‚z U…ˆ×Љ« ΄£y+VƒV++N U„¤+¬„V*UO…++V++ ˆUUrÇÇ–y¤¬Vƒ+,PUŠyœÀÇÀ–TUUO++V‚O*+…+OŒV+VV€V+VO*+‹UœÇU++$–U„NHNNr‰Vˆ×ÖÏ¥dVV†++V++£Î+V+‚+#U¥¬¬¬†+¬¬+¬¬¬‚z U…×ÖЉ ΂yVƒV++* UŠ¤*UU€€U‚y$U+…+VV+ ‰OUyœÇÁrϬV„++*U‰rÀÇÇÀrNUO “U++OV+U+U++++U$+z++VV++V++++Ž$OUU–ÇU+*$œUƒNHNrˆV^×ÖÏ¥e2V…V€ÎU+V…++O$U¥¬¬¬†+¬¬+¬ ¬‚z U†V³×Ј« ΂ȀƒV++* U…U*Uƒy$*U$+…VV+Š$UyÈÀÇÀrϬV+++UU–ÀÇÇ–rUU ‚+U+„V+U*+™++*UO+*z+V+zU+V++++*UŠrÀU**œUNr‹Vˆ×ÖϤdVV++…ÈÎÎÈO‚ +V…+++%U¥¬¬†+¬¬+¬ ¬‚z U…×ÖψΤ„VV++*U„U$U„yU*+ƒV++ŠOyÈÎÀÇœr¤«¬V+++UU–ÀÇÀ–NU$ U+¥V+V+++++U*UO*+VV+VV++UU**++**UƒrÀU‚*œU„O$NNrV‚×ÖÏ¥dV++V¤Σ „+V+ƒO&U¥¬ ¬†+¬¬+¬‚z U†z××Ь«Τ„VV++‚*OU„+$UN+V…+V++Š*yÈÎÇÀÇœrȬ¬ V+Š+UrÀÀÇÀ–NU ”+V++UUV+U*++*++OU*”+++V++VV+++V+O*UƒxÀNƒUÀNU„O$NNrŒV‚×ÖÏÏV+U+VÈÎN ‡+ +V+‡OU^‚€#U¥¬†+¬¬+¬‚zU†]×ÖЉ«Έ¤¥VV++*U„€OUƒO*$+V†++VV+£·ÇÇ–Nz׬¬ V+‰+UxÀÀÇÀrN ‚*O+ƒV+U+‡U++U$˜*VV+V€++V+*+U+U*OUUx–NƒªÁNU„O$NNrŠV‚Ö×Ðz,^OyÎ*+‚+V+‰*OU^ˆ¤Ï"U¥¬†+¬¬+¬‚zU†V¬×ÐψÎ¥ƒV++‡*OU€O U‚** +V†+V+*yΈ€¤ÇÇrN׬¬ V+++UrÀÇÁ–r**++U+U++UV+ƒ*UO+”VV++VO++++*UO*UUrƒªÇrU„O$NNrV3¬ÐϬd¤ÈÎy+V„,2,V+Š*U\^ˆÎϤ#Uƒ¥¬×¬‰¬¬+¬¬+¬‚zU…€×ÖЈ΂ȤV+„*y$ U* +V…++*+ŽNNyÎÎ]ÎÇrU׬¬ VV++++*–ÀÇÀ–N‚$*+†OUU* +V++V+**V++O‚U*„NÎÇrU„N$NNr‹3+ÐÏψd¤Èy+ V,+‰+U^ˆ¥ÏϤy#Uƒ¥¬×¬¬‰¬¬+¬¬+¬‚zU…¬×Ö¬‰ÎÈV+*+V+ƒ+VONŒHN£‚ÀÈN,¥×¬ ¬ VV+++*ÀÀÇÀ–N…++++…V++*+†*UO**+*UUV++*+VO***„NÎÇrU$Nr‰+VÖ×ÐÏ«ˆ^ V+‚+‹+U]ˆ¥ÈÏ¥V%U…¥¬×¬¬V+V¬‰¬¬+¬¬+¬‚zU†V³×Ь‰ΆȤVV+'+V+’+z––rrN$yeyÀÇœNO¬×¬VV+++rÀÀÇÀr++‚++„*U+* +‡VUU++€+ „œÎÎxU‡+UUNHNNr‰*,]¬×ÖÐÏUU+Ž2^ˆˆÈÏϤV&U›¥¬×¬¬+¬¬++V¬¬¬¬+¬¬+¬‚zU†^×Öψ«΃¤V+$+V+‚Or–rrH+ˆÇÇœ*O×׬VV++++rÀÁÇ–r‹*+U++++U+ƒ+*+UV‚U+ŠVV+U+V++…*œÎÎrU‚OVUNrŠN*rO2]¬×ÖU+Š::ˆ¥¥ÏÏ¥y(UŠ¥¬×¬VV+¬Ž++¬¬¬+¬¬+¬‚zU‡Vˆ×Öω«ÎÈV‚++ +V+„*£r–ŒrN$OœÇÇr$V×׬VV++++$–ÀÇÀ–N3+ŠU+VV+*+V+ƒ$+U+ƒUVV€ŽV+VV+V+*+V++†$x–ÇΖUOU*N„rrN+r„s2]+2++2…^‰¬ÈÎÏ‚VV)U›¥¬×¬+VVVVV¬V¬¬¬+¬¬+¬‚zU‡V¬×Öψ«΂Ȥ‚VV++V+‡*y£ÎÇr–œ‹––rN*œÇÁr$¬×¬–VV+++*œÀÇÀ–*3+++ƒ+U+V+$‚+U+“UUVVz€V++VV++V+ˆyrx–ÇÕ–yU+Uƒ*$$N‚*Nrs „V¥ˆ‰ ^…de¬¥«Ï‚€y+U›¥¬×¬¬V¬VV+V¬¬V¬¬¬+¬¬+¬‚zU‡y€××ÐÏe΂¤€‚VV++V+…*yÈ΃–œÀŠ–rr$rÇœN$¬×¬–VV++NÀÀÁÀr23UO+‹V++V+U++++ƒ*UU+–yÈÎÎÈz€U*+VV++V++Š$rÇœN–ÇÕœyUVU…$$N+Nr‚$ÐÏȬ‚«Èσy1-U›¥¬×¬¬V¬¬+¬VV¬¬V¬¬¬+¬¬+¬‚zU†]××Ьˆ΃Ȥ€V+ +V+„+yÇ΃Çr–Àˆ–r$œÇœHU׬•VV++V–ÀÁÀÀr23V++‚+U+ƒU+V+$‚+V+‚yÈΞȀ€¥z++UV+U++*$ÀÇÀNrÇÕÀyUVUO‚$+NrH‚ÐÖ Ï†««¥zPN/Uƒ¥¬×¬•V¬+¬¬V¬V¬¬¬+¬¬+¬‚zU†]×ÖЬˆ΃ȤVV+V+ƒy£ ΂ǖÀˆ–r$ÀÁ–$z׬–VV++V–ÀÁÀ–O33,++V…++V+$+*‚+V+£·¤z€++ƒ*+ŒNœÇÁrrÀÕÁyU*ƒ+NHN‚r$‚OV]„«ÐÖÖχ]zO++N1Uƒ¥¬×¬„V¬+¬ŽV+¬¬¬+¬¬+¬‚zU†^×ÖЬˆ΂¤€VV+ V+y ÎœÀ‡–NœÀr$׬‘yN+V+$ÀÀÇÀ–O33,„++VV+‚UV+Ž¤Î£+£ÎÈz€€O +‹*rÇ–rÀÎÇrUOU+U‚N* $rO,ON4Uƒ¥¬×¬ƒ+¬+¬ŽV+¬¬¬¬+¬¬+¬‚zUˆV¬×ÖЬˆ«΂ȤV +ƒy£Ç£ƒ**y£ƒ€rœÀ‡–r$rN*«×¬’€œN+VNÀÀÇÀr+33,+V‚UU++UV+*+¤Î£z*£ÎÈ€ƒO$ +*ˆrÇ–rÀÎÇrU‚OVU*‚++U Nr N7Uƒ¥¬×¬ˆV+¬VV¬‰¬¬+¬¬+¬‚zUˆ¬×ÖЬe«ΤV +…yÈÎy$ ON–ÀÀ–rH–rœsV ¬× ¬ˆ¤Àr$+V%rÀ‚œr3‚,‰+UUVVU+„U++†U€+*+£·¤V€V++‘U+U++OœrÀÎÇrUVU‚++U $ N;Uƒ¥¬×¬…V+VV¬‰¬¬+¬¬+¬‚zUƒOPPˆ¬×ÖÐψ«΃ȤU V +‡OyÇÇ£y$ $ÀÀ–NN*$HUUV¬× ¬ˆ¤À–$++$–À‚–N3†+U+‡+€V++UÈÎÈVŽ++OOV+U++‡UÀrÀÎΖU+UO+U*„++*GUƒ¥¬×¬‚V¬‰¬¬+¬¬+¬‚zUPˆ,^××Ðω«΃¤££+ƒyy£΂y*‚, rNœ2,NrrV^^OUV¬‚×× ¬ˆÁÀ–HU++–À‚–O3…++3…+O+–++Vz+*+U£ÎÎÈUUVVU+V…U++ˆUÇrœÎÎœUOU +U+‚*GUƒ¥¬×¬‰¬¬+¬¬+¬‚zU†WVy{*ˆ$]××Ðωe£y+$Oy’Ny43O$r€³ÖÖNN$+UV ¬‚À„NVVOÀr233,$OU223‚+…O€V+*+‹O++OUU+*+V+‚‹OÇr–ÇÎœUzU†*+++UO‡*+OVU*HUƒ¥¬¬×¬†+¬¬+¬‚zUˆWVzÇÎÎÈ*‰*]××Ö++y£* +O +* *$‰NÀV+r$–ˆÖr‹NN$*++OVV¬‰œÀÀrV*rÀ…r233,…*UVV+3…*+*„+V€V+‰U++U++‡NÇ––ÇÎœU+U*†+U++UO‡*+VV+*HU‚¥¬ˆ¬¬+¬¬+¬‚zU„yz¥Î*‰$]××O+O2€.ÎO+* „$**$ˆNrrNrˆÖƒ³yÇÁœ–rˆNNO*+OVV‡ÀxN+UœÀƒ–N,‚*$+UV2,33ƒUUO…+V€VU+ˆUO+++‚‹**rÀÇœ–ÇÎœNU‚+OU‡+UV++U†+O++*HUƒ¥¬×ˆ¬¬+¬¬+¬‚zUƒzz¥ÎN†$W¬+y£È΃V2£΂UU+Š*$**O£^^¤++,‡Vˆ¬¬ˆO Ç„œœ–r‹NN*++N**$xÀ†–N$$+U‚*$ˆ$OU+,23‡*UUO‚*OV†U++‚$*U‰rÀÇÀ–ÀÕÁrU‚+OU*‡+Vz++U$*IUƒ¥¬×¬‰¬¬+¬¬+¬‚zU£΃ÈǃO*UyUO ΃¤€È΄€VUU+*ÇÎz]^¤ÈÏÏW3„22,VU‚yÀLjÁÀœœ–rN$‚UxÀ…–OUUOU‚O+ƒ$*O+‡+UO‚++U†++*‚‚$OUˆÀÇÁ–ÀÕÁrU‚+*U*†+V+O+UO$JUƒ¥¬×¬‚V+¬‰¬¬+¬¬+¬‚zUÀÇÁÀ‚–$‹OVˆ××ÖϬˆ3,OU„*$*+ƒ*+£¤£˜yy€€VVU+*£Î«ˆeˆÈÈ¥W33:^: 3ˆ22,,OyyœÀ†œ–rNNrÀr U‚**++U‚O$ ƒ*$* Uˆ–ÇÇrÀÕÇxU+ƒ+OO ‚O+U*KUƒ¥¬×¬ƒ+¬‰¬¬+¬¬+¬‚zUÀœ‚–HŒ$sÖ×ÖÐÏ«‰ˆˆÎ £y‚+…OOUO+U•VV€VU++*O¤Îˆe‚¥¤€WW3:^: 3‡22VOrœœÀ‚––r‚–NU‚OO…*$,UO†*„$*+*Uˆ–ÀÇrÀÎÇxU‚+*+…*UUO*ƒ*U+U$LUƒ¥¬×¬…+V¬‰¬¬+¬¬+¬‚zUy–rN‘*NyV¬××ÖÐÏϬeˆ«ÎƒPy΂yUy£Î£«ee‚€¤]33:^e ‰e‚__^: 3†2,OO–œÀƒœ–rNƒ$NNU‚**„$$O Uˆ**+++ŠUUrÀÇrÀÎÈxU*+U+U*„OUU+U**LUƒ¥¬×¬ˆVVV¬‰¬¬+¬¬+¬‚zUy UyrUW¬××ÖÐÏϬ‰ˆªª ΂‚O ΋¤ª‰eˆ€¥¤WW:^ƒ_ee‰‰e‚__^:4 3†22Os–œÀ†––rrNHNU$‚$OU„$* +V+ˆOœÇÀœÎÎrUˆ++UUOUU*+‚UUU„+OUUMUƒ¥¬×¬ˆV¬V¬¬V¬‰¬¬+¬¬+¬‚z%UŽyyO]¬××ÖÐÐϬˆeˆ Î…O Α£ˆ^e¥¥ÈÏ3:^^_ee‰„³³‰e‚__ ^:4 3„VO––À–…rrNN$N U‚** +V‰++O£Á–ÎΖUŽ+O****U*++U*…*UUO+U*MU‡¥¬×¬V++¬‘¬¬V++¬¬¬¬+¬¬+¬‚z'UŠyrOz«¬××ÖÐÏ…ˆˆ‰eˆ«ÎÇQ…PPO΃««eˆˆ¤ÈÏÏ«33^^ee‰³‰e‚__ ^ : 3…2Os––À–‚rrN…$*O++VV+†–ÇÈ–NNU‚*O†*+UU{%‡OUU++UU*MU›¥¬×¬+++¬V++¬¬¬+¬¬+¬‚z(U‘yyrsVÖ××ÖÖÐÐÏÏ««‰ˆƒ«¤‚^ˆ‡ee‚¥««Èφ«W:^^e‰­ ³‚‰e‚__ ^:4 3…VVs––À‡––r$*++V¬V‡+O£œ–rNU‚*O …UUQR%*U„$UUONU›¥¬×¬+¬¬V¬¬VV¬¬¬¬+¬¬+¬‚z+U‡xrrV¤ˆÖ׃ÖÐÐÏ«¬‚¤ÈÏŠÕÏ]3:^_e‰‰ ³‚‰„ee__ ^:43‹2+r–r––N+VV0¬VŠ+NœrNUU++* ‚&%„*U*U**NUƒ¥¬×¬ˆV¬V¬¬+¬‰¬¬+¬¬+¬‚z-U‰yrrsVW¬¬ׂÖÖÐÏÕÖÕÕÏ«¥3:^_e‰‰ ³‚‰„ee__^!:43‚2+–ƒVV ¬&׬V++NrNUU++O$Nr$$OUOUƒ¥¬×¬Vƒ+V+¬‰¬¬+¬¬+¬‚z/UŠyxrrsOU]^¬Ö‚××ÖÕÏ«]]W,O3:^^ee‰³×³‰ƒee_^%:43‰2,UOO¬¬4׬‘V+*rNUU++NNr––œNN$*$OUƒ¥¬×¬„V¬‰¬¬+¬¬+¬‚z2U‚22O‚NOV‡‡ˆˆÐÖЈ‡…]2,,ON‰3:^^_e‰³×³…‰ee_^ :4%3ˆ2UUVV¬¬7׬…V+NyŒ++OÀÁ£œœr$*OUƒ¥¬×¬ƒ+¬‰¬¬+¬¬+¬‚z1U‚3:3†2,++NrO„VWW3ON‚2:^…e‰‰³³×³ƒ‰e^:+3‚2,U„V¬¬9׬‚V*y„++NyÈ…ÇÇœr$PUƒ¥¬×¬‚¬‰¬¬+¬¬+¬‚z0UV^:3„2,,+OrNOŽ22,3:^^_e‰³³×…³³‰e^:432V‚223‚UOUƒVV¬7׬’V+Oyy++Nr–ÁÈÎÈÁrOOUƒ¥¬×¬‰¬¬+¬¬+¬‚z/U‚V^e_^‚::3Ž:33,::^^e‰‰³³×…³³‰e^: 3 2U„VV¬5׬‘V+Nyy++N–ÀÁÇÈÁO*OU¥¬†+¬¬+¬‚z.UƒV:_‰‚ee^:32::^^e‰³³×…³³‰e^:432‚,,*Uƒ$+V¬3׬’V*yyO+N–ÀÇÎÇœrU*PUƒ¥¬¬ˆ¬¬+¬¬+¬‚z.U‚W_‰e_^ _^„32:^…e‰³³×…³³‰e^:43…22,++-U†O*+V¬1׬‘V+yyO+rÀÀÇÎÁ–yU*PUˆ¥¬×¬¬¬ƒ¬¬ˆ¬¬+¬¬+¬‚z-U‚W^‰‚‰e_^92+:^^_e‰³׋³³‰e_^^::43…22,++1U†O+UV¬/׬V+yys+rÀÇÎÇÀrU*+OPU›¥¬×+¬¬++V¬V++¬¬V¬¬+¬¬+¬‚z,U„3^e‰‰eŒ^:3+:^^_e‰³³׋³³‰e_^^::43†22,,++5U†**+VV¬-׬V+yysNrÀÇÎÇ–rU*OUN*$RU›¥¬×¬V+¬+¬+¬+¬¬+¬¬+¬‚z+U„V^e‰‰•e^^3,:^^_e‰³³×׳³‰e_^‚:43†22,,++9U†**+UV¬+׋¬¬V+yyrr*Ç„À–UU„+UOO$*RU‡¥¬×¬¬V¬+¬¬¬+¬¬+¬‚z+Uƒ^e‰‰“^^3,:^^_‰‰³³×³³‰‰e^‚::3†22,,+=U…*++V¬)×’¬¬VVyyrr+ÇÎÇœrU**$ƒHN$ *QU‡¥¬×¬¬+‘¬¬VV¬¬¬¬+¬¬+¬‚z*Uƒ:e‰ ³‚‰’e^3+2^^_‰³³×³³‰‰e^‚:43‚,,+AU†*++VV¬'ב¬¬VVNy––+ÇÈÀ–xU$HN$ OPU›¥¬×¬¬¬+¬+¬++¬¬¬¬+¬¬+¬‚z)Uƒ3e‰ ³Ž‰‰e^3,2^^_‰‰³ƒ‰e^‚::3…2,,DU‡O$++V€¬%ב¬¬VOrr–ÀOyÇÀrUO„$HNNr $PU‡¥¬×¬¬V+V¬¬¬¬+¬¬+¬‚z(U†V^‰³³³‰‰e^3,2^^_‰‰³‚‰e^‚::3„,,GU‡+$++Vz¬!׬VyNNœÀOUÇ–NU$ƒ*NNr$‚NrOOU‰¥¬×V¬+VVV+¬V¬¬+¬¬+¬‚z'U†V^‰³³‰‚³Ž‰‰e^3,2^^_‰‰³‚‰^‚::3…2,,JU‡O*++Vz¬×¬ŽVœrNrÇyOœ–UU„$*Nrƒ––$‚Nr*OU›¥¬×¬+¬+V+¬+¬¬¬+¬¬+¬‚z&U„V^‰‰³‚‰³Ž‰‰e^3,2:^_‰‰³†e^^::3…2,,MU†O++V¬ׂ¬¬‚Uœr‡ÇÎ+rrU*†$$Nrr–rƒ––HOU›¥¬×+¬VVVV¬+¬¬+¬¬+¬‚z&Uƒ]‰³‚‰e‰‰’e^323^_‰‰³³‰^^::3…2,,PU‡O*++VV¬×¬„Vs–†œÇOrrU…$N+rr–N„–ÀÀrONU›¥¬×¬V¬¬+++¬¬V¬¬¬+¬¬+¬‚z%Uƒ]e‰³‚‰e‰‚‰‘e^323^_e‰³e^^:3…2,,SU‡O++VV ¬×¬ƒV–†œœr*UO…$NN+r–‚À––ÀNUƒ¥¬×‰+V+V+ˆ¬¬+¬¬+¬‚z$UƒVe‰³‰‚ee_e‰e‰e^333^_e‰‰e^:3…2,,VU*‚+V ¬×¬„Vs–‡ÁÇÀr+U*…$N$+r–ƒÀÀNNÁ$NUˆ¥¬×¬¬V¬+VŽ+¬V¬¬¬¬+¬¬+¬‚z#UƒV^‰³…‰‰ee_^_e–^:3+3^_e‰‰e^^:332,+YUO‚VV ¬ ׬VVsr–œÇÈÇÀr++†Nr*N––ÀNyÇNU†¥¬×¬V¬ƒVVŒ¬V¬¬¬+¬¬+¬‚z#U‚^‰³‡‰‰ee__^ƒ__e_e—__^:3,,^^ee‰‰e^:332,,\U…$+UVz ¬× ¬†VOUNsÀǃœr+…NrNN–Àœ΃ÈÇN*MUƒ¥¬×¬‰¬¬¬¬‰¬¬+¬¬+¬‚z"U‚]‰³†‰‰e__^‚__^‡:3,+:^_e‰^^:33,++\U…++UV€¬VVUNr–œ£À–N++†$NrNN–À$‚ÏÎ*MUƒ¥¬¬×¬†+¬¬+¬‚z!U‚Ve³…‰‰e_&^ˆ:3,3^^_^‡:332++]U*ƒ*++‚VV¬‚‚V2‚,,VUŒr––ÀÀÇ£rUU+…$Nr+–À$€Õ…¤*+MU‚¥¬ˆ¬¬+¬¬+¬‚z UƒV^³„‰‰e ^:^…:322^†:32,+`U**+ƒUVVƒ]„2VUŽ*$NÀÀÁÇÇÀ–y$+„NN+–Àr„+ÕÖÖÕ…ª+OMUƒ¥¬×ˆ¬¬+¬¬+¬‚z U‚^‰³„‰e_ ^ :34:…32:^‡::33,+dU„*$+‡++UVz+‚+VU$‚NœÀ‚–N„HN+–ÀªÕ…¤+OMUƒ¥¬×¬‰¬¬+¬¬+¬‚zUˆVd³×³³‰e ^:4 3 V3‡:3323:…33,+OgU‚O$*†++OVVUUOˆ*N–r*+…$N+––À‚ªÎφΤ+*MUƒ¥¬×¬+V¬‰¬¬+¬¬+¬‚zUˆV^‰×׳‰e^:3ƒ2,1UV‡322OUUV3‚22lU‚O* ƒ*++‚$OU* *+ˆON+––ÀÀN‚UÇ΄U$NUƒ¥¬×¬ˆV¬V+¬+¬‰¬¬+¬¬+¬‚zU‡]d³×³‰e^:3„2,++UU*O U+ +ƒUO+–Ç$NUƒ¥¬×¬ˆV¬V+¬+¬‰¬¬+¬¬+¬‚zU†^‰³³‰e^:3„2,+UU‚*$ * UƒVU*‡OU+r––r„$ÀÀÁÇ*NUƒ¥¬×¬ˆV¬¬VV¬+¬‰¬¬+¬¬+¬‚zU^‰e^:3„2,+UU‚O$ U+U* +…+Nrr$rÀœOUˆ¥¬×¬¬V¬Ž+¬¬¬¬¬+¬¬+¬‚zU‡]^ee_^^:43…2,+OU!U* U+Uƒ*++„+$‚$–À„N$OU›¥¬×¬+V+¬¬+VV¬¬¬¬+¬¬+¬‚zU^:43…2,++U&U** U€U†+*O++ ‚H–À„r*PU¥¬×¬¬VV+V¬¬+¬‰¬¬+¬¬+¬‚zUV:3…2,++OU)U…OOO Uˆ+€UUO++++ r–ƒ$*QUƒ¥¬×¬‚V+ƒ¬V+Š¬¬¬+¬¬+¬‚z U‚V3:3„2,++U:U+U*‹++**++++ NrƒN$SUƒ¥¬×¬‡++¬V+VŠ¬¬+¬¬+¬‚z"UV32U>U„O+UUƒ+VU++ ƒ*UUyVUƒ¥¬×¬”++V+¬VV¬¬¬+¬¬+¬‚z$UVUAU„€UU*+U++U *[Uƒ¥¬×¬”++V+¬¬V+¬¬+¬¬+¬‚zUhU„€UU$*++*U‚O$\Uƒ¥¬× ¬Ž¬+¬¬+¬¬+¬‚zUhUƒ+U*‚$+ƒ+UO‚OO\Uƒ¥¬×¬Š¬¬+¬¬+¬‚zUhUƒO**ƒ+U*^Uƒ¥¬×¬‰¬¬+¬¬+¬‚zUgU+*U*ƒ+gU¥¬†+¬¬+¬‚zUfUO*U‚**‚+gUƒ¥¬¬ˆ¬¬+¬¬+¬‚zUeUO* U*‚++gUƒ¥¬×¬‰¬¬+¬¬+¬‚zUdUO* Uƒ*++gUƒ¥¬×¬¬‰¬¬+¬¬+¬‚zUcU** U„O++OfUƒ¥¬×¬ˆ+VV++V+¬‰¬¬+¬¬+¬‚zUbUz U*…*UO+OfUƒ¥¬×¬ˆV¬V+¬+¬‰¬¬+¬¬+¬‚zUaU‚*O U…*U++OfUƒ¥¬×¬ˆV¬++¬+¬‰¬¬+¬¬+¬‚zU`UƒUO+ U*…UUO+OfUƒ¥¬×¬‚V¬+¬‰¬¬+¬¬+¬‚zU_UƒUUz U*U‚+OfUŠ¥¬×¬VV¬¬Ž+V¬¬¬¬+¬¬+¬‚zU^U*U‚zy U*U‚+OfU›¥¬×¬¬++VV+V¬¬++¬¬¬¬+¬¬+¬‚zU\UO*U+ UƒOUU+fUƒ¥¬×¬‰+V+V¬¬‰¬¬+¬¬+¬‚zU6U*$U**U+ U*Uƒ++fUƒ¥¬×¬ˆ+V¬¬¬‰¬¬+¬¬+¬‚zU5U„**O!U**U‚yz U*U+fUƒ¥¬×¬†+V+¬‰¬¬+¬¬+¬‚zU5U‚$*U**U‚O€ UOU+fUƒ¥¬×¬+¬‰¬¬+¬¬+¬‚zU4U‚*++U*‚$+U‚+O U*U+OeUƒ¥¬×¬„¬¬‰¬¬+¬¬+¬‚zU4U‚*+…$$OU*$ Uz U*U+eUƒ¥¬×¬‰¬¬+¬¬+¬‚zU5U‚O*+†*OUO*U‚O*$ UO UOU+eUƒ¥¬×¬‰¬¬+¬¬+¬‚zU6U„***+‚** UO U+ U*U+eUƒ¥¬¬×¬†+¬¬+¬‚zU:U*+ UO$ U‚Oy U*U„++U+eU‚¥¬ˆ¬¬+¬¬+¬‚zU;UO+ UO* U+ UOU„++U+eUƒ¥¬×ˆ¬¬+¬¬+¬‚zU>Uƒ+*+OU‚OOO U‚+V U**U„O+U+eUƒ¥¬×¬‰¬¬+¬¬+¬‚zU?U‚O* *O U+ U*U„O+UeUƒ¥¬×¬‰¬¬+¬¬+¬‚zUAUOO U‚+y U*U…O+UO*dUƒ¥¬×¬‚V¬‰¬¬+¬¬+¬‚zUCU*O U‚++ U*U…O+UO+dUƒ¥¬×¬ƒ+¬‰¬¬+¬¬+¬‚zUEU„*+*OU‚OO U*U…++UO+dUƒ¥¬×¬‚VV¬‰¬¬+¬¬+¬‚zUGU…*UU+*Uƒ*+O UOU…+UUO+dUƒ¥¬×¬‚V¬‰¬¬+¬¬+¬‚zUKU„+*++U‚++U*U+U‚++cUƒ¥¬×¬‚+¬‰¬¬+¬¬+¬‚zUMU„O+**OU…OO*OU*U+U‚+OcUƒ¥¬×¬…V¬‰¬¬+¬¬+¬‚zURUƒ+**+UO UU‚+OcUƒ¥¬×¬…+VV¬‰¬¬+¬¬+¬‚zUlU*U‚+U‚*OcUƒ¥¬×¬…VVV¬‰¬¬+¬¬+¬‚zUlU*U‚*+U*cUƒ¥¬×¬V+¬‰¬¬+¬¬+¬‚zUkUO*U‚*OUcUƒ¥¬×¬‰¬¬+¬¬+¬‚zUkU* U‚++U+cUƒ¥¬×¬‰¬¬+¬¬+¬‚zUkUUƒO*OUcUƒ¥¬×¬‰¬¬+¬¬+¬‚zUkUOU‚O*U‚+ObUƒ¥¬×¬‰¬¬+¬¬+¬‚zUjU* U‚+U‚++bU¥¬†+¬¬+¬‚zUjU* UU‚++bUƒ¥¬ ¬¬†+¬¬+¬‚zUiU** UU‚++bU„¥¬¬‚V¬‰¬¬+¬¬+¬‚zUiU* U‚*+U‚++bU„¥¬¬‚V¬V¬†+¬¬+¬‚zULU„**U$ U‚*+U‚*OaU„¥¬¬ƒV¬‚V¬†+¬¬+¬‚zUKU* UOU**U‚O*U‚*OaUŠ¥¬¬¬+V¬‚V¬†+¬¬+¬‚zUJU* ƒ**+U*ƒ**OU*UƒOOU‚*OaU‡¥¬¬ ¬‚V¬†+¬¬+¬‚zUJU*ƒ*O+„OUUOU‚** U‚$OaUˆ¥¬¬V¬¬+¬†+¬¬+¬‚zUJU*„*UU$OU‚* U‚+*aU‰¥¬VVV¬+¬†+¬¬+¬‚zUJU…**+OUƒO* U‚$OaU‰¥¬+V+¬‚V¬†+¬¬+¬‚zUJU…*++UƒO* U‚$OaU‚¥¬ŒV¬+¬V¬¬V¬†+¬¬+¬‚zUKU**U„**+ U‚$OaU„¥¬¬‰V¬+V+¬V¬†+¬¬+¬‚zUPU+* ƒUV* ‚*+U‚$OaU¥¬¬¬VV¬VV+¬¬†+¬¬+¬‚zUUU+*…+UU+…UU+*+U‚$OaU¥¬¬VV++V¬†+¬¬+¬‚zUYU+‡++€VO++*UƒOOaUŽ¥¬¬VV+VV¬†+¬¬+¬‚zURU‰O*OOUU*‚++*U‚+*bU¥¬¬¬¬VV¬¬†+¬¬+¬‚zUQU*ƒ**U ‚**U‚**bU‚¥¬¬†+¬¬+¬‚zUQUƒ+‚$* ‚**U‚OcU‚¥¬ˆ¬¬+¬¬+¬‚zUQU‡$+U*UO**UƒO+cU‚¥¬ˆ¬¬+¬¬+¬‚zUQUƒ+*U‚*$ UƒOdUƒ¥¬×ˆ¬¬+¬¬+¬‚zU\U* UƒO*eUƒ¥¬× ¬‚¬‰¬¬+¬¬+¬‚zU^UƒO**O UƒO+fUƒ¥¬×¬ƒ+¬‰¬¬+¬¬+¬‚zUdU $U„O$+gUƒ¥¬×¬ƒVV¬‰¬¬+¬¬+¬‚zUdU* $*ƒ*iUƒ¥¬×¬‚¬‰¬¬+¬¬+¬‚zUeU +…**+OjUƒ¥¬×¬†++VVV¬‰¬¬+¬¬+¬‚zUeU* $sUƒ¥¬×¬+¬‰¬¬+¬¬+¬‚zUfU**sUƒ¥¬×¬+‚+¬‰¬¬+¬¬+¬‚zUiU‡O**$*sUƒ¥¬×¬+V¬‰¬¬+¬¬+¬‚zUmU‚OOtUƒ¥¬×¬+V¬‰¬¬+¬¬+¬‚zUUdUƒ¥¬×¬+V¬‰¬¬+¬¬+¬‚zUUdUƒ¥¬×¬„+V¬‰¬¬+¬¬+¬‚zUUdUƒ¥¬×¬ƒ+V¬‰¬¬+¬¬+¬‚zUUdUƒ¥¬×¬‚+V ¬‰¬¬+¬¬+¬‚zUUdUƒ¥¬×¬ ¬‰¬¬+¬¬+¬zzezƒ¬×¬‰¬¬+¬¬+VVgVˆ¬¬+¬¬V+++ +„¬+¬¬¬¬¬‚+¬+¬*¬¬¬¬¬‚+¬+‚V +V¬+V +V +V¬+V +¬¬¬¬‚+¬× ¬‚V ¬ƒ+× ¬‚VV¬× ¬‚+ ¬+ ¬‚VV¬‚+ ¬‚+¬¬¬¬‚+¬× ¬‚V ¬ƒ+× ¬‚VV¬×¬×¬‚+ ¬+¬׃¬VV ¬ׄ¬¬+ ¬‚+¬¬¬¬‚+¬×¬Vˆ¬¬V¬¬V¬†+׬‡+¬VV¬×¬ƒ×¬‚+ ¬ƒ×¬+¬ƒ×VV¬„¬¬+¬„¬‚+¬¬¬¬‚+¬×¬+¬‰+¬¬V¬¬+ŠV¬¬+׬V‡+¬VV¬×¬†¬¬¬¬‚+¬¬…¬+¬¬ˆ¬¬×VV¬¬‚+¬„VV¬‚+¬¬¬¬‚+¬×¬V׊V¬¬V¬¬2]ŠV¬+׬V‡V+¬VV¬×¬‚¬…+¬¬¬¬…¬+¬¬¬…×VV¬‚׬ˆ¬¬+¬ƒ+¬‚+¬¬¬¬‚+¬×¬V׊V¬¬V¬¬2k]‰V+׬V†¬VV¬×¬„¬¬…+¬¬¬Š¬¬¬+¬¬ˆ×¬¬¬¬VV¬ „¬¬+¬ƒV¬‚+¬¬¬¬‚+¬×¬VטV¬¬V¬¬2kd99+VV+׬V2V†+¬VV¬×¬¬…+¬¬¬ƒ¬¬„¬+¬¬ „¬¬VV¬ ƒ¬+¬„VV¬‚+¬¬¬¬‚+¬×¬V׎V¬¬V¬¬2d99]¬‡+׬VV¬†+¬VV¬×¬‚¬†+¬¬¬‰×¬¬¬+¬¬ „¬¬VV¬¬†¬¬+¬‡+2V¬‚+¬¬¬¬‚+¬×¬V׌V+¬¬V¬¬2V‰+V+׬VV¬†+¬VV¬×¬„¬×¬†+¬¬¬¬ƒ+¬¬¬†¬¬VV¬¬…¬¬+¬‡V2¬‚+¬¬¬¬‚+¬×¬VׇVV¬¬V¬Œ¬VV+׬VV¬†++¬VV¬×¬ƒ¬¬ˆ+¬¬×¬¬+¬„¬¬VV ¬¬…׬+¬‡V¬‚+¬¬¬¬‚+¬×¬+¬‚V¬Š+V¬¬+׬V+„¬VV¬×¬ƒ¬¬„+¬¬¬+¬¬‚VV ¬„¬¬+¬+V¬‚+¬¬¬¬‚+¬× ¬‚V ¬ƒ+× ¬‚VV¬× ¬‚+ ¬+ ¬‚VV¬‚+ ¬‚+¬¬¬¬‚+¬ × × ×‚¬¬ × ×‚¬ ׂ¬¬ × ×‚¬¬¬¬‚+¬¬¬¬¬‚+¬ ¬×¬¬¬„+¬¬+¬¬¬¬‚+¬¬¬¬‚+¬V+ ¬+¬+<¬ƒ++V¬+V¬V¬¬ ¬‚+¬ƒ¬¬‚V ¬ƒ¬‡V¬¬¬ ¬¬¬¬VV¬¬¬Vˆ¬V¬VV¬¬—¬VV¬¬VV¬V¬¬V¬¬ƒV+¬¬¬¬¬VV¬+VV¬¬ ¬‚+¬„V¬¬V¬VV¬V+VVV ¬›V¬VV+¬V¬+VVVV+V¬+¬‡VVVV“+VVVV++¬V+V¬†+¬¬+¬V‚++¬¬ ¬‚+¬„V¬¬V+¬Ž++¬V++V++V¬†V¬V+’V+¬++V¬VV++V¬+¬‡VV¬++¬“++¬V¬¬++¬V+¬V¬…+¬¬+¬+†++¬V¬¬ ¬‚+¬„++V¬…+¬VV†VVV¬ŒV¬VV¬VV+¬V‡+VV¬V¬+VVVVVVV++VVVV+¬+‚¬V†++VV¬¬ ¬‚+¬ŠV¬¬V¬¬…+¬V¬…¬¬ ¬ŒV¬¬¬¬¬‹¬¬¬¬V¬Ž+¬¬+¬¬¬¬‡¬¬¬¬¬Š+¬¬+¬¬¬+¬¬ ¬‚+¬‡+VVV ¬‡V¬¬V¬„V+V¬‚V¬+V¬¬„+¬¬+¬+¬¬ ¬‚+¬$¬ ¬¬¬<¬‚+¬¬¬¬‚+¬¬¬¬Ž+¬¬zszOOszzOOssss‘z+¬¬zOV+Vª*+Vllal$l $ŽHz+¬¬zrT**T$lƒs¥¥ls¥ll*l¬ƒV+¬„V+l¥›+Hz+¬¬zr~T**T**$ls¥ls¥ll¥”s¥l¥ss¥¥ll×sl¥ss¥ls¥ lž¥¼lž¥¥s¥slž¥×zs¥¥lžžll¥slž¥žls¥¥žl¥¥ss¥ll¥lls¥l¥¥žlsžl¥sl¥¥žl¥lxlƒ×¬+†¬+׬+„+l ¬³+Hz+¬¬zrÓÕ×V*©Õ×V$lzÐls×l¬žs×zÐlÐz×ssžsÐÐsllzÐlž×slÀ¥¥lls×l¬žÐzzÐlÐz×ssž¥¥¬žÐzzÐlÐz×sž¬¥¥l¥z×lz×zlzО¬l¥s¥Ðzמž¬l¥s×lxlƒ×¬+‡¬+×V¬³V+l¬¬¬+V¬+Hz+¬¬zlsz¬+T+V¬Ollz×sz×ls¬¬×zÐlÐz׬¥Š¬žllzÐlÐÐ¥l‡ž¥sll¥¥l¥¥×žÐzzÐlÐz׬¥•××Ð×zzÐlÐz×sž¬¥Ð¥¬z×lЈlzОץ¬sׇОץ¬s×lxl׬…+×V¬…V+l¬º++V¬¬+Hz+¬¬zl´N~H´lzמ¥×llž¥¥z×sÐz¥¥¬ž¥¥¬žllzО¬l×sl‚¥¥l¼sžÐsÐ¥sО×z¥¥¬ž¥×¥¬×zsОÐs¥¥¬¬sÐ¥¬s×zÐlÐzzÐsОÐs×z×zÐsОÐsמlwl׬…+×V¬…V+l¬•+¬¬+Hz+¬¬zl´´ÆT¨†lzÐls×l‚Ðzl‚¥¥l†¥×sz×zl‚¥¬l‡s×¥¬l¬¥ll l׬…+×+…VV+l¬Ÿ+V+¬+Hz+¬¬zll¢*«+´llzÐls×l‚Ðz l‚s¥ l‚¥¥l†¥¥llÐzl‚ž¬l‰s××sls×s¥ll l׬„+וV+l¬¬V¬¬¬+Hz+¬¬zl†H׬VHllcl׬‚+׬‚+l ¬ˆVHz+¬¬zl…HHOHHlldl sH s‚Hl s‡Hz+¬¬¥zzz zƒ¥+¬¬¬¬+¬¬¬¬+22lpŒfà[€€€€€€€€€ÀÀÀÀÜÀðʦ$I’¶Û$$$$I$m$’$¶$Û$ÿII$IIImI’I¶IÛIÿm$mIm’m¶mÛmÿ’’$’I’m’’’¶’Û’ÿ¶¶$¶I¶m¶’¶¶¶Û¶ÿÛÛ$ÛIÛmÛ’Û¶ÛÛÛÿÿ$ÿIÿmÿ’ÿ¶ÿÛU$UIU’U¶UÛUÿU$U$$U$IU$mU$’U$¶U$ÛU$ÿUIUI$UIIUImUI’UI¶UIÛUIÿUm$UmIUm’Um¶UmÛUmÿU’U’$U’IU’mU’’U’¶U’ÛU’ÿU¶U¶$U¶IU¶mU¶’U¶¶U¶ÛU¶ÿUÛUÛ$UÛIUÛmUÛ’UÛ¶UÛÛUÛÿUÿUÿ$UÿIUÿmUÿ’Uÿ¶UÿÛUÿÿªª$ªIªmª’ª¶ªÛªÿª$ª$$ª$Iª$mª$’ª$¶ª$Ûª$ÿªIªI$ªIIªImªI’ªI¶ªIÛªIÿªmªm$ªmIªmmªm’ªm¶ªmÛªmÿª’ª’$ª’Iª’mª’¶ª’Ûª’ÿª¶ª¶$ª¶Iª¶mª¶’ª¶Ûª¶ÿªÛªÛ$ªÛIªÛmªÛ’ªÛÛªÛÿªÿªÿ$ªÿIªÿmªÿ’ªÿ¶ªÿÛªÿÿÿ$ÿIÿmÿ’ÿÿ¶ÿÛÿ$ÿ$$ÿ$Iÿ$mÿÿÿ$’ÿ$¶ÿ$Ûÿ$ÿÿIÿI$ÿIIÿImÿI’ÿI¶ÿIÛÿIÿÿmÿm$ÿmIÿmmÿm’ÿm¶ÿmÛÿmÿÿ’ÿ’$ÿ’Iÿ’mÿ’’ÿ’¶ÿ’Ûÿ’ÿÿ¶ÿ¶$ÿ¶Iÿ¶mÿ¶¶ÿ¶Ûÿ¶ÿÿÛÿÛ$ÿÛIÿÛmÿÛ’ÿÛ¶ÿÛÛÿÿ$ÿÿIÿÿmÿÿ’ðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿD‹WMMMMM:¬NNNLLLLLLLLLL´NOWNOWNOMLMLMLMLMLMLMLMLMLMJµNNNNNNNNLLLLLLLLLL  ÁWWNWWNWWNWWNWWNMMMMMMMMMMMMMMMMMMMJJÀNNNNNNNNNNNNLLLLLLLLLÍWNOWNOWNOWNOWNOWNOWNOMLMLMLMLMLMLMLMLMLJJJJwÇNNNNNNNNNNNNNNNNNLLLLLLLLL    vÖNWWNWWNWWNWWNWWNWWNWWNWWNMMMMMMMMMMMMMMMMMMJJJJsÅNNNNNNNNNNNNNNNNNLLLLLLLLsÛOWNOWNOWNOWNOWNOWNOWNOWNOWLMLMLMLMLMLMLMLMJJJJJJn£NNNNNNNNNNNNNNNNN šLLLLLLL     qÙWNWWNWWNWWNWWNWWNWWNWWL LLJJJJJJJJJJJJJJo£NNNNNNNNNNNNN K  K  K'rØNOWNOWNOWNOWNOWL LL LL LL JJJJJJJJJJJJJJq£NNNNNNNN          )   s×WWNWWNWWNL LL LL LL LL LL LJJJJJJJJJJJJJr£NNNNN K  K  K  K  K  K  0vÔNOWNOWL LL LL LL LL LL WNWLLLLLLLLLLJJJJJJJJvÉNNN          NONO L  L  L  L  L  L  L  L  L  L ÒNWWL LL LL LL WNWWNWWNWWLLLLLLLLLLLLLLLLLLLLJJxÆN K  K  K OOOOOOOOOL  L  L  L  L  L  L  L  L  L ÒL LLWNWWNWWNWWNWWNWWNWLLLLLLLLLLLLLLLLLLLJJJvÆ NONONONONONONO L  L  L  L  L  L  L  L  L  LØNWWNWWNWWNWWNWWNWWNWWNWWLLLLLLLLLLLLLLLLLLLJJJJJqÇOOOOOOOOOOOOOOOOL  L  L  L  L  L  L  L  L  L ÛWWNWWNWWNWWNWWNWWNWWNWWNWLLLLLLLLLLLLLLLLLLLJJJJJnÇNONONONONONONONON L  L  L  L  L  L  L  L  L  ÙWNWWNWWNWWNWWNWWNWWNWWNWWNLLLLLLLLLLLLLLLLLLLJJJJJoÈOOOOOOOOOOOOOOOOOO  L  L  L  L  L  L  L  L  L ÚNWWNWWNWWNWWNWWNWWNWWNWWNWLLLLLLLLLLLLLLLLLLLJJJJnÉONONONONONONONONON L  L  L  L  L  L  L  L  L  ÛWWNWWNWWNWWNWWNWWNWWNWWNWWNLLLLLLLLLLLLLLLLLLJJJJJnÈOOOOOOOOOOOOOOOOOO  L  L  L  L  L  L  L  L  LØNWWNWWNWWNWWNWWNWWNWWNWWNWLLLLLLLLLLLLLLLLLLJJJJJqÇONONONONONONONONON L  L  L  L  L  L  L  L  L ØWNWWNWWNWWNWWNWWNWWNWWNWWNLLLLLLLLLLLLLLLLLLJJJJqÇOOOOOOOOOOOOOOOOOO  L  L  L  L  L  L  L  L  L×WWNWWNWWNWWNWWNWWNWWNWWNWLLLLLLLLLLLLLLLLLLJJJJJrÅNONONONONONONONON L  L  L  L  L  L  L  L  L ×WNWWNWWNWWNWWNWWNWWNWWNWWNLLLLLLLLLLLLLLLLLLJJJJsÄOOOOOOOOOOOOOOOOO  L  L  L  L  L  L  L  L  ÔWNWWNWWNWWNWWNWWNWWNWWNWLLLLLLLLLLLLLLLLLLJJJJuÃNONONONONONONONON L  L  L  L  L  L  L  L  LÔNWWNWWNWWNWWNWWNWWNWWNWWNWLLLLLLLLLLLLLLLLJJJJJvÂOOOOOOOOOOOOOOOO L  L  L  L  L  L  L  L ÓWNWWNWWNWWNWWNWWNWWNWWNWWLLLLLLLLLLLLLLLLJJJJvÂONONONONONONONONL  L  L  L  L  L  L  L  L ÐWNWWNWWNWWNWWNWWNWWNWWNWLLLLLLLLLLLLLLLLJJJJyÀOOOOOOOOOOOOOOOO L  L  L  L  L  L  L  L  ÐNWWNWWNWWNWWNWWNWWNWWNWWLLLLLLLLLLLLLLLLJJJJyÀONONONONONONONONL  L  L  L  L  L  L  L   ÏWNWWNWWNWWNWWNWWNWWNWWNWLLLLLLLLLLLLLLLLJJJJz¿OOOOOOOOOOOOOOO L  L  L  L  L  L  L  L  ÏWWNWWNWWNWWNWWNWWNWWNWWLLLLLLLLLLLLLLLLJJJJ{½NONONONONONONONL  L  L  L  L  L  L  L  ÌNWWNWWNWWNWWNWWNWWNWWNWLLLLLLLLLLLLLLLJJJJ}½OOOOOOOOOOOOOOO L  L  L  L  L  L  L  L ÌWNWWNWWNWWNWWNWWNWWNWWLLLLLLLLLLLLLLLJJJJ~¼ONONONONONONONL  L  L  L  L  L  L  L ËWWNWWNWWNWWNWWNWWNWWNWLLLLLLLLLLLLLLLJJJJ~»OOOOOOOOOOOOOO L  L  L  L  L  L  L  ÈNWWNWWNWWNWWNWWNWWNWWNLLLLLLLLLLLLLLLJJJJ¼ONONONONON                    ÈWNWWNWWNLLLLLLLLLLLLLLLLLLLLLLLLLLLJJ±OO L  L  L  L  OOOOO L L L L  L  L  L  L ÆWLL LL LLLNWWNWWNWWNWLLLLLLLLLJJ LL LL LL °     L ONONONONL  L  L  L  L ‹     LÂLLLLLLLNWWNWWNWWNWWNWLLLLLLLLJJJLLLLL©  L  OOOOOOOOO L  L  L  L †  L «LWNWWNWWNWWNWWLLLLLLLLJJ!¡ONONONONL  L  L  L  )©WWNWWNWWNWWNWLLLLLLLLJJ!¡OOOOOOOO L  L  L  L *¨NWWNWWNWWNWWLLLLLLLJJJ"ŸONONONONL  L  L  L +¦WNWWNWWNWWNWLLLLLLLJJ%žOOOOOOO L  L  L  L,¥WWNWWNWWNWWLLLLLLLJJ%žNONONONL  L  L  L -¤NWWNWWNWWNWLLLLLLLJJ&œOOOOOOO L  L  L  .¢WNWWNWWNWWLLLLLLLJJ)›ONONONL  L  L  L /¡WWNWWNWWNWLLLLLLLJ)šOONONON L  L  L 1 NWWNWWNWWNLLLLLLJJ*™ONONONO  L  L  L1žWNWWNWWNWLLLLLLJJ-˜ONONON L  L  L 2WWNWWNWWNL LL LL LJ-—NONONO  L  L  3WNWWNWWNWLLLLLLJJ-—ONONON L  L  L 3WWNWWNWWNL LL LL LJ.–NONONN  L  L  4œNWWNWWNWLLLLLLJJ.–ONONON L  L  L 4œWNWWNWWNL LL LL LJ.–NNNNNN      4šNWWNWWNWLLLLLLJ0–ONONON L  L  L 4šWNOWNOWNL LL LL LJ1”NNNNN     6™WWNWWNWLLLLLJ1”NNNNN L  L  L6™WNOWNOWNL LL LL JJ1”NNNNN     6™WWNWWNWLLLLLJ1”MMMMM     6™MMMMM J  J  JJ0–LLL   3LLMLMMJ J J J J JJJ-ŽLLL   ƒ 1žLLLLLL J  J  J J,™  L L L   0¡LLLLLLL J J J J J JJJ)š  L  L  L    /¢ LL LL LLL  J J JJJ(›     L    .¥KLLLLLLL J J J JJJJ$› K         *©K K K K K  J  J JJJJJJŒ         -° KK K K K J J J J JJ JJJJJJŒ          $µ K K K  K  J  J J JJJJJJJ‰          $¹J K K K K K J J J J J J JJJJJJJJ¤             ¸MNNNMNMMMM JJMMLLLLL LL LK K  J ²NMNMMMMMMMMLL  L      N¬VNNNNMMMMMMMMLLLLL KK K JªNNMNMMMMMMMLL  L  K   !¨NNNNNNMMMMMMLLL LK K K J$¥MNNNMMMMML L     ' VNNVNNMMMMMLLLK K J-˜  NMMMMML L  1š K K K K K JJJJ.      <¡K KK KK KK JJJJJ(Ž       ÷c÷c÷‚c÷¥K K K K K K K KJJJJJ}¥¥¬ø÷ø÷ø÷ø÷ø÷ø÷        ‡¥¬¥¬÷÷c÷c÷§K KK KK KK KKJJJJJJ}Ž¬¥¬¥¬ø÷ø÷ø÷ø÷ø’K  K  K  K   ‰¥¬¥¬¥¬÷÷c÷c«K KK KK KK KK KJJJJJJ{Œ¥¥¬f¥¥÷ø÷ø÷ø“         †¬ø÷¥¬¥÷‚c÷¯L LK LK LK LK LJJJJJJJy‹÷ø÷ø¬¥¬ø÷ø÷•L  K  K  K  K  K‹÷ø÷¥¬¥¬¥÷c÷²NL LL LK LK LK JJJJJJJJtø÷ø¬f¥¥¬f÷ø•NN         „÷ø÷ø†¬¥¬¥¬÷´NNVNVNVNVL LJJJJJJJJn„ø÷ø÷„¬¥¬¥ªNNNNNNNNNN          w„÷ø÷ø ‚¬¥µNNNNNNNNNNN K K K K K K K K K K KJJj„ø÷ø÷&«NNNNNNNNNN           r„÷ø÷ø(µVNNVNNVNNVNNVNNVK KK KK KK KK KKJJJf„ø÷ø÷*«NNNNNNNNNN           n„÷ø÷ø+¶NVNVNVNVNVN K K K K K K K K K K KJJb„ø÷ø÷-¬NNNNNNNNNNN           kƒø÷ø/¸VNNVNNVNNVNNVNNVK KK KK KK KK KKJJJ]ƒ÷ø÷1­NNNNNNNNNNNK  K  K  K  K  K f„ø÷ø÷1¹VNVNVNVNVNVN KK KK KK KK KK KJJJY„÷ø÷ø3®NNNNNNNNNNN           b„ø÷ø÷5¹VVNNVNNVNNVNNVNNVK LK LK LK LK LK JJJU„÷ø÷ø8­NNNNNNNNNNNK  K  K  K  K  K ^„ø÷ø÷:¸NVNVNVNVNVN LK LK LK LK LK LJJJQ„÷ø÷ø<­NNNNNNNNNNN           D…¤£c„ø÷ø÷>¸WNVWNVWNVWNVWNVWL LL LL LL LL LL JJJ9…¤[÷„÷ø÷øA¬NNNNNNNNNNK  K  K  K  K  K =Mƒ¤£÷Mƒ÷ø÷C·OWNWNWNWNWN LL LL LL LL LL LJJJ3…¤c÷ ƒø÷øE¬NNNNNNNNNN           E†MMM„÷ø÷øFµWNWWNWWNWWNWWNWWLLLLLLLLLLLJJJ:‰MMMM„ø÷ø÷I«ONNNNNNNNNL  L  L  L  L  L B‘NNMMM÷ø÷øK´WNOWNOWNOWNNWNN LL LL LL LL LL LJJ8NN MMM÷ø÷MªNNNNNNNNNN           AONNNMMMøO´NWWNWWNWWNWWNWWLLLLLLLLLLLJJJ7OONNMMMMP©NONONONONL  L  L  L  L  L ;ƒMOONNMMMQ²NWWNWWNWWNWWNO LL LL LL LL LL LJJ6POONMMR§NONONONN L  L  L  L  L  APOONMMMƒMM®NWWNWWNWWNWWLLLLLLLLLLJJ 9ŽPONMMMU¤NNNONONL  L  L  L  L  Lƒ <ŽPPONMMMV¨NVNNNNWLLLLLLLL LL K K J=ŽPPONN MMX¥NNNNMMMMML L     ;÷ŒXPONNMZ£NVNNVNNMMMMMLLLL KK J:øŠPOONN\ NNNNMMMMMML  L   :‚÷c‡POON`NNNMMMMMMLLL K  9‚ø÷ …¤c÷[™NMMMMML    :‚÷÷ƒ¤£c^‘MNMMMMLLL<ƒø÷øM„¤[÷i‰ML  L >ƒ÷c÷ M…¤£÷lKW‚¤clÈ.¿.lpŠd6U€€€€€€€€€ÀÀÀÀÜÀðʦ$I’¶Û$$$$I$m$’$¶$Û$ÿII$IIImI’I¶IÛIÿm$mIm’m¶mÛmÿ’’$’I’m’’’¶’Û’ÿ¶¶$¶I¶m¶’¶¶¶Û¶ÿÛÛ$ÛIÛmÛ’Û¶ÛÛÛÿÿ$ÿIÿmÿ’ÿ¶ÿÛU$UIU’U¶UÛUÿU$U$$U$IU$mU$’U$¶U$ÛU$ÿUIUI$UIIUImUI’UI¶UIÛUIÿUm$UmIUm’Um¶UmÛUmÿU’U’$U’IU’mU’’U’¶U’ÛU’ÿU¶U¶$U¶IU¶mU¶’U¶¶U¶ÛU¶ÿUÛUÛ$UÛIUÛmUÛ’UÛ¶UÛÛUÛÿUÿUÿ$UÿIUÿmUÿ’Uÿ¶UÿÛUÿÿªª$ªIªmª’ª¶ªÛªÿª$ª$$ª$Iª$mª$’ª$¶ª$Ûª$ÿªIªI$ªIIªImªI’ªI¶ªIÛªIÿªmªm$ªmIªmmªm’ªm¶ªmÛªmÿª’ª’$ª’Iª’mª’¶ª’Ûª’ÿª¶ª¶$ª¶Iª¶mª¶’ª¶Ûª¶ÿªÛªÛ$ªÛIªÛmªÛ’ªÛÛªÛÿªÿªÿ$ªÿIªÿmªÿ’ªÿ¶ªÿÛªÿÿÿ$ÿIÿmÿ’ÿÿ¶ÿÛÿ$ÿ$$ÿ$Iÿ$mÿÿÿ$’ÿ$¶ÿ$Ûÿ$ÿÿIÿI$ÿIIÿImÿI’ÿI¶ÿIÛÿIÿÿmÿm$ÿmIÿmmÿm’ÿm¶ÿmÛÿmÿÿ’ÿ’$ÿ’Iÿ’mÿ’’ÿ’¶ÿ’Ûÿ’ÿÿ¶ÿ¶$ÿ¶Iÿ¶mÿ¶¶ÿ¶Ûÿ¶ÿÿÛÿÛ$ÿÛIÿÛmÿÛ’ÿÛ¶ÿÛÛÿÿ$ÿÿIÿÿmÿÿ’ðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿD‹æY˜R˜Y˜R˜R˜: ¨ ¨ ¨ YRYRYQYRYQYRYQYRYQRRYQRRYQRQRQRQ¬ ¨ æ ¨ æ ¨R˜R˜R˜RYR˜RYR˜RYR˜RYR˜RYR˜RYRYRYRYR…YRJµ¨ § ¨ § ¨ § ¨  RYQYRYQYRYQYRYQRRYQRRYQRQRQRQRQRQRQRQRÁæ§æ§æ æ§æ æ§æ æ æ æ ˜R˜Y˜R˜R˜R˜R˜R˜R˜R˜RYR˜RYR˜RYR˜RYR˜RYJJµ ¨ æ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨RYRYQYRYQYRYQYRYQYRYQRRYQRRYQRQRQ ½æ§æ§æ§æ§æ§æ æ§æ æ§æ æ ¨ æ ¨ ˜Y˜R˜R˜R˜RYR˜RYR˜RYR˜RYR˜RYR˜RYRYRJJJJwŨ§æ ¨§æ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ § ¨ § ¨ §RYQYRYQYRYQYRYQRRYQRRYQRQRQRQRQRQRQRÖ¨æ§æ¨æ§æ§æ§æ§æ§æ§æ§æ§æ æ§æ æ§æ æ ˜R˜Y˜R˜Y˜R˜R˜R˜R˜R˜RYR˜RYR˜RYR˜RYR˜JJJJs¾æ§¨§æ§¨§æ ¨§æ ¨ æ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ YRYRYRYQYRYQYRYQYRYQRRYQRRYQRƒQRRÛæ§æ§æ§æ§æ§æ§æ§æ§æ§æ§æ æ§æ æ§æ æ ¨ æY˜R˜Y˜R˜RYR˜RYR˜RYR˜RYR˜RYR˜RYRYRJJJJJJn¢ ¨§æ§¨§æ ¨§æ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ § ¨ §RYQYRYQRRYQRRYQRˆQRQRQRQRÙæ§æ§æ¨æ§æ¨æ§æ§æ§æ§æ§æ§æ§æ§æ æJJJJJJJJJJJJJJJo™¨ æ ¨§æ§¨§æ§¨§æ ¨§æ ¨ æ ¨1اæ§æ§æ§æ§æ§æ§æ§æ§æ§æJJJJJJJJJJJJJJJJJq¨ ¨ ¨ ¨§æ§¨§æ ¨:×æ æ§æ§æ§æ§æ¨JJJJJJJJJJJJJJJJJJJrŠ ¨ ¨ ¨ æ ¨AÔ ¨ æ§æ§æJJJJJ¡˜ JJJJJJJJJJJJJJJJJJv† § ¨ ¨¯ Y Y Y YJJJJJJJJJJÒ æ æJJJ¡ ¡ ¡ ¡ ¡ ¡˜¡JJJJJJJJJJJJJJJJJJJJJJx‚ ¨  Y ²Y ˜ Y Y Y YJJJJJJJJJJJJJJÑJ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡  ˜¡  JJJJJJJJJJJJJJJJJJJJJJx` ` Y Y ´Y Y Y Y Y Y YJJJJJJJJJJØ ¡ ¨ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡JJJJJJJJJJJJJJJJJJJJJJJJq¡ ¡ ¡ ¡ ` Y ®Y ˜ Y YJJJJJJJJJJJJJJÛ¡ ¨ ¡ ¨ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡  ˜JJJJJJJJJJJJJJJJJJJJJJJJn`  ` ` Y ®Y ˜ Y Y Y JJJJJJJJJÙ¡ ¨ ¨ ¡ ¨ ¡ ¨ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ JJJJJJJJJJJJJJJJJJJJJJJJoƒ  ¡ ¡ ¡ ¡ ¡ ` Y ¨Y ˜ JJJJJJJJJJJJJJÚ ¡ ¨ ¡ ¨ ¡ ¨ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡˜JJJJJJJJJJJJJJJJJJJJJJJn†Y Y  ¡  ` ` Y ªY Y Y JJJJJJJJJÛ¡ ¡ ¡ æ ¨ ¨ ¨ ¨ ¡ ¨ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ JJJJJJJJJJJJJJJJJJJJJJJn„Y  ¡ ¡ ¡ ¡ ¡ ¡ ‚¡` ¨Y ˜ JJJJJJJJJJJJJJJØ ¡ ¨ ¨ ¨ ¨ ¨ ¡ ¨ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ JJJJJJJJJJJJJJJJJJJJJJJq… Y  ¡ ¡ ¡  ` Y ¦Y JJJJJJJJJØ ¡ ¡ æ ¨ æ ¨ æ ¨ ¨ ¡ ¨ ¡ ¨ ¡ ¡ ¡ ¡ JJJJJJJJJJJJJJJJJJJJJJq ¨ ¡ ¡ ¡ ¡ ¡ Y ¤JJJJJJJJJJJJJJJס ¡ ¨ æ ¨ ¨ ¨ ¨ ¡ ¨ ¡ ¨ ¡ ¡ ¡ ¡ ¡ JJJJJJJJJJJJJJJJJJJJJJJrY ¡ ¡ ¡  ` ¤Y JJJJJJJJJס ¡ æ ¨ æ ¨ æ ¨ æ ¨ ¨ ¡ ¨ ¡ ¡ ¡ ¡ JJJJJJJJJJJJJJJJJJJJJJs ¨ ¨ ¨ ¡ ¡ ¡ ‚¡` £JJJJJJJJJJJJJJÔ ¡ ¨ æ ¨ æ ¨ ¨ ¨ ¨ ¡ ¨ ¡ ¡ ¡ ¡ ¡ JJJJJJJJJJJJJJJJJJJJJJu ¨ ¨ ¡ ¡ ` ¤Y JJJJJJJJJÔ ¡ ¨ æ æ ¨ æ ¨ æ ¨ æ ¨ ¨ ¡ ¨ ¡ ¡ ¡JJJJJJJJJJJJJJJJJJJJJvˆ`  ¨ ¨ ¨ ¨ ¨ ¡ ¡ ¡ ¢YJJJJJJJJJJJJJJÓ¡ ¡ æ ¨ æ ¨ æ ¨ ¨ ¨ ¨ ¡ ¨ ¡ ¡ ¡ ¡JJJJJJJJJJJJJJJJJJJJv …¨ § ¨ ¨ ¡ ¡ „`  JJJJJJJJJ Р¨ ¨ æ æ æ ¨ æ ¨ æ ¨ æ ¡ ¨ ¡ ¡ ¡JJJJJJJJJJJJJJJJJJJJy  ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¡ ¡ ¡¡`JJJJJJJJJJJJJJJ Р¡ æ ¨ æ ¨ æ ¨ æ ¨ ¨ ¨ ¨ ¡ ¡ ¡ ¡JJJJJJJJJJJJJJJJJJJJy `  ¨ § ¨ § ¨ ¨ ¡ ˆ`  JJ—JJJJJJ Ϩ ¨ æ§æ æ æ æ ¨ æ ¨ æ ¨ ¨ ¡ ¨ ¡JJJJJJJJJJJJJJJJJJJJz’ ¡ ¨ ¨ ¨ ¨ ¨ ¨ § ¨ ¡ ¡ ¡¡ JJJJJJJJJJJJJJJ Ï¡ ¨ æ æ ¨ æ ¨ æ ¨ æ ¨ ¨ ¡ ¨ ¡ ¡JJJJJJJJJJJJJJJJJJJJ{  ¨ § ¨ § ¨ § ¨ ¡ ¡ ŸJJJJJJJJ Ì ¨ æ§æ æ§æ æ æ æ ¨ æ ¨ æ ¡ ¨ ¡JJJJJJJJJJJJJJJJJJJ}¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¡ ¡¡ JJJJJJJJJJJJJJJ Ì ¨ ¨ æ§æ æ ¨ æ ¨ æ ¨ ¨ ¨ ¨ ¡ ¡JJJJJJJJJJJJJJJJJJJ~Ž ¡ ¨ ¨ ¨ ¨ § ¨ ¨ ¡ ŸJJJJJJJJJË¡ æ§æ§æ§æ æ§æ æ ¨ æ ¨ æ ¨ ¨ ¡JJJJJJJJJJJJJJJJJJJ~ ‘¨ ¨ ¨ ¨ ¨ ¨ ¨ § ¨ ¡  ¡ JJJJJJJJJJJJJJÈ ¨ æ§æ æ§æ æ ¨ æ ¨ æ ¨ ¨ ¡ ¨ JJJJJJJJJJJJJJJJJJJ‘¡ § ¨ ¨ ¨ § ¨ § ¨ ¨RRQRRQRRIRRIRRRRRRRRRRRR‹ æ æ§æ§æ§æ§!RIRIR‰IRJRIRJRIRˆJJ±  ¨ RQRQRQRQRQRQRQRQRQ¨ ¨ ¨ ¨ ¨RRRRRRRRRRRRRRRRR‚¨  R§æ§æ§æ æ§æ æ ¨ R¥IRJRIRJRRJRRIJJRIRRIRRJR° RQRRQRRQRR æ ¨ ¨ ¨ ¨ § ¨ § RRRRRRRJR ‹JJRJR R“§æ§æ§æ§æ§æ æ§æ æ æIRIR›IRJRIRJRIJJJRRRJRIRJ©RIRRI¨ ¨§æ ¨ ¨ ¨ ¨ ¨ ¨ RRRRRRRR †RRR«R æ§æ§æ§æ æ§æ æ ¨ æRRIRJRIRJRRJRRJJ!¡ ¨ ¨ ¨ ¨ ¨ § ¨ § RRRRRRRJ)’æ§æ§æ§æ§æ§æ§æ æ æIRIRIRJRIRJRJJ!¡ ¨ æ ¨ ¨ ¨ ¨ ¨ ¨ RRRRRRRR*¨§æ§æ§æ æ§æ æ ¨ æRRIRJRIRJRRJRJJJ"Ÿ¨ ¨ ¨ ¨ ¨ § ¨ § RRRRRRRJ+‘ æ§æ§æ§æ§æ§æ æ æIRIRŽIRJRIRJJJ%ž æ ¨ æ ¨ ¨ ¨ ¨ RRRRRRRR,¥æ§æ§æ§æ§æ æ ¨ æRRIRJRIRJRRJRJJ%ž ¨ ¨ ¨ ¨ § ¨ § RRRRRRRJ-§æ§æ§æ§æ§æ æ§æIRIRŽIRJRIRJJ&œ¨ ¨ æ ¨ ¨ ¨ ¨ RRRRRRR.¢ æ§æ§æ§æ æ§¨ æRRIRJRIRJRRJRJJ)› ¨ ¨ ¨ ¨ ¨ § RRRRRRRWƒc÷÷TŽæ§æ§æ§æ§æ æ§æ RIRŒIRJRIRJQ…÷ø÷˜Rš ¨§æ ¨ ¨ ¨ ¨ ¨RRRRRRRY†Y÷÷c˜˜N §æ§æ§æ æ§æ æ RIRJRIRJRRJJJP„÷ø÷˜O™¨ ¨ ¨ ¨ ¨ § ¨RRRRRRW… Y¡˜ T æ§æ§æ§æ æ§æ RIRŠIRJRIJJQ‡ Y˜Y Y˜T˜ æ ¨ ¨ ¨ ¨ ¨RRRRRRU‰ Y¡˜ Y¡˜ Sæ§æ§æ æ§æ æ RIRJRIRJRRJJO‹ Y˜Y Y˜Y Y˜R— ¨ ¨ ¨ ¨ § ¨RRRRRU‹Y¡˜ Y¡˜ Y¡˜RŒæ§æ§æ§æ æ§æ RIRŠIRJRJJN‘Y˜Y Y˜Y Y˜Y Y˜M— æ ¨ ¨ ¨ ¨ ¨RRRRRP‘˜Y¡˜ Y¡˜ Y¡˜ Y¡Qæ æ§æ æ§¨ æ RIRJRIRJRRJOŒ Y˜Y Y˜Y Y˜YR–¨ ¨ ¨ ¨ § ¨RRRRRU‹Y¡˜ Y¡˜ Y¡˜S‹§æ§æ§æ æ§æ RŽIRJRIRJRJJPŠY Y˜Y Y˜Y S–¨ ¨ ¨ ¨ ¨ ¨RRRRRV‰ Y¡˜ Y¡˜ Tœ æ§æ æ§¨ æ RIRJRIRJRRJR†Y Y˜Y U–§ ¨ § ¨ § ¨RRRRRY„c÷÷˜V‹§æ§æ§æ æ§æ RŒIRJRIRJRJO˜†÷ø÷˜˜Q–¨ ¨ ¨ ¨ ¨ ¨RRRRRW…Y÷÷cWš æ§æ æ ¨ æ RIRJRIRJRRJUƒ÷ø÷X” ¨ § ¨ § ¨RRRRR6Šæ§æ§æ æ§æ RŒIRJRIRJJ1” ¨ ¨ ¨ ¨ ¨RRRRR6™æ§æ æ ¨ æ RIRJRIRJRJJ1” ¨ § ¨ § ¨RRRRJ6Šæ§æ§æ æ æ RŒIRJRIRJJ1” ¨ ¨ ¨ ¨  QRRIRRIR6Œæ ¨ æ ¨ æ RQRQR†QRJ0‡  ¨ § ¨ Œ¨RQRRQRR3Œæ æ æ ¨ æ ¨  R†JJ-˜ ¨ ¨ ¨ § ¨  QRQRQRQRQRR1 ¨ æ ¨ æ ¨ ¨ RRYRˆQRRJ,…  § ¨ ¨ ¡QRQRQRQRRIR0“¡ æ æ æ ¨ æ ¨R˜RYR˜R‡JJ) …¨ ¨ ¨ †¨ RRYQR‡QRQRRI.’ ¨ ¨ æ ¨ æ ¨ ¨RYR˜ R†JJ(ƒ  ¨ ¨ ¡ ‚YQR‰QRQRRQR-•¡ æ æ ¨ æ ¨ æ ¨R˜RYR˜ R‡JJ$ƒ  ¨ ™¡Y Y Y˜Y˜RYRRQRIRJJ"“¡ ¨ ¨ ¡ ¡˜ Y˜Y˜Y˜RYR’IRIJJJJJJ„Y  ¨ œY Y˜Y˜Y˜RYRYQRQRRJJ!–˜¡ æ ¨ ¡ ¡˜ Y¡Y˜Y˜Y˜R˜R”RJJJJJJJJ„Y  ¨ ¤Y Y Y˜Y˜Y˜Y˜RYRRQRIRJJJJ™ ˜¡ ¨ ¨ ¡ ¡˜ Y¡Y˜Y˜Y˜Y˜RYR˜IRJRRJJJJJJ… Y  ¨ ¨Y Y Y˜Y˜Y˜Y˜RYRYQRQRRRJJJJ  ¨ ¨ ¨ ¡ ¡ ¡˜¡˜ Y¡˜˜Y˜Y˜R˜RYR–JRRIJJJJJJJJƒ  ¨ ¡ ¬Y Y Y˜Y˜Y˜Y˜RYRYQRQRQRIRRJJJ·JJJJJY˜Y˜Y˜R˜RJJJJJJJ…>¯JJJJJJJJJJJJJJJ‹<§JJJJJJJJJJJJ&‰BŸJJJJJJJJJJ- …Aš æ ¨ ¨ ¨ ¨ YR˜RYRYRYRJJ.…¨ § ¨ ¨ †¡QRRYQRƒQRQ1¡¨ æ§æ æ ¨ æ ¨ ˜Y˜R˜R˜R˜RYRJJ(›¨ ¨ ¨ ¨ ¨ ¨ ¨ YRYQYRYQYRYQR.¥¨ æ§æ æ ¨ æ ¨ æRYR˜RYR˜RYR˜RYJJ$¨ § ¨ § ¨ § ¨ ŠYQYRYQRRYQRQ+§æ æ§æ æ§æ æ æ æ ¨R˜R˜R˜R˜R˜RYR˜RJJ"¡¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ YRYQYRYQRRYQRRY(«¨ æ§æ§æ§æ æ ¨ æ ¨ æRYR˜RYR˜RYR˜RYR˜JJ¥¨ ¨ ¨ ¨ ¨ ¨ ¨ § ¨ §RYQYRYQRRYQRQRQRQR$¯æ æ§æ§æ§æ§æ§æ æ§æ æ ˜R˜R˜R˜RYR˜RYR˜RYRJJJ¢¨ ¨§æ ¨§æ ¨ ¨ ¨ ¨ ¨ ¨QYRYQYRYQRRYQRƒQRR"² æ§æ§æ§æ§æ§æ æ§æ æ ¨ ˜RYR˜RYR˜RYR˜RYRYRYJJJ©  ¨ ¨§¨ ¨ ¨ ¨ ¨ § ¨ §RYQRRYQRRYQRQRQRQRQR!´ ¨ æ ¨ æ ¨ æ ¨ æ§æ æ ˜R˜R˜R˜RYR˜RYR˜RYR˜RJJJ† ¡ § ¨ ¨ ¡ ¡ •RRRRRJRJRJR µ¡ ¨ ¨ ¨ ¨ ¨ ¡ ¨ ¡ ¨ ¡RIRRIRRIRRIRRIRRJJ„Y  ¡ ¡  —`JRJJJJJJJJJµ¡ ¨ ¨ ¨ ¨ ¡ ¨ ¡ ¡ ¡ ¡JRRJRRJRRJRRIRRIRJJJ‚ ¡ ¡ ¡ ¡ ¡ –RJJJJJJJJJJ¶ ¡ ¨ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡RJRJRJRJRJJJJ‚ Y ` Y Y Y —YJJJJJJJJJJJ¸ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡IJRJRJRJRJJJJJJ„ ˜ ` Y Y žY ˜ Y ˜JJJJJJJJJJJJ¡ µ¡ ¡ ¡ ¡ ¡ ¡ ¡  ˜¡  JJJJJJJJJJJJJJšY Y Y Y Y Y Y Y Y Y Y YJJ‘JJJJJ¹ ˜¡ ¡ ¡ ¡ ¡ ¡˜¡ ¡˜¡ ¡˜¡JJJJJJJJJJJJJJ­ Y Y Y Y Y Y Y Y Y Y YJJJJJJJJ¸˜ ˜¡  ˜¡˜ Y¡˜ Y¡˜ Y¡˜ JJJJJJJJJJJJJJ­˜Y Y Y Y Y Y Y˜Y Y˜Y YJJJJJ¸Y¡˜ ˜¡˜ Y¡˜ Y¡˜ Y¡˜ Y¡JJJJJJJJJJJJJJ¬Y Y˜Y Y˜Y Y˜Y Y˜Y Y˜YJJJJJJ·˜Y¡Y Y¡Y Y Y Y Y Y Y JJJJJJJJJJJJJJ¬R˜Y˜Y˜Y˜Y˜Y˜Y˜Y˜Y˜Y˜Yµ˜Y Y¡Y˜Y¡Y˜Y¡Y˜Y¡Y˜Y¡JJJJJJJJJJJJJJ«˜Y˜Y˜Y˜Y˜Y˜Y˜Y˜Y˜Y˜Y´Y˜Y˜Y˜Y˜Y˜Y˜Y˜Y˜Y˜Y˜JJJJJJJJJJJJJ©YR˜RYY˜RYY˜RYY˜RYY˜R!´R˜Y˜Y˜Y˜Y˜Y˜Y˜Y˜Y˜Y˜JJJJJJJJJJJJJJ¨QYR˜RYR˜RYR˜RYR˜RYR#²Y˜R˜Y˜R˜Y˜R˜Y˜R˜Y˜JJJJJJJJ”QYRYQYRYQYRYQYRYQ'®R˜R˜R˜R˜R˜R˜Y˜R˜JJJJJJJ#ŠRYQYRYQYR(§JJJYJJJJJJJo£JJJJJJJJJu›JJJJJJJ}‘JJJJ J{7/./lpˆdV€€€€€€€€€ÀÀÀÀÜÀðʦ$I’¶Û$$$$I$m$’$¶$Û$ÿII$IIImI’I¶IÛIÿm$mIm’m¶mÛmÿ’’$’I’m’’’¶’Û’ÿ¶¶$¶I¶m¶’¶¶¶Û¶ÿÛÛ$ÛIÛmÛ’Û¶ÛÛÛÿÿ$ÿIÿmÿ’ÿ¶ÿÛU$UIU’U¶UÛUÿU$U$$U$IU$mU$’U$¶U$ÛU$ÿUIUI$UIIUImUI’UI¶UIÛUIÿUm$UmIUm’Um¶UmÛUmÿU’U’$U’IU’mU’’U’¶U’ÛU’ÿU¶U¶$U¶IU¶mU¶’U¶¶U¶ÛU¶ÿUÛUÛ$UÛIUÛmUÛ’UÛ¶UÛÛUÛÿUÿUÿ$UÿIUÿmUÿ’Uÿ¶UÿÛUÿÿªª$ªIªmª’ª¶ªÛªÿª$ª$$ª$Iª$mª$’ª$¶ª$Ûª$ÿªIªI$ªIIªImªI’ªI¶ªIÛªIÿªmªm$ªmIªmmªm’ªm¶ªmÛªmÿª’ª’$ª’Iª’mª’¶ª’Ûª’ÿª¶ª¶$ª¶Iª¶mª¶’ª¶Ûª¶ÿªÛªÛ$ªÛIªÛmªÛ’ªÛÛªÛÿªÿªÿ$ªÿIªÿmªÿ’ªÿ¶ªÿÛªÿÿÿ$ÿIÿmÿ’ÿÿ¶ÿÛÿ$ÿ$$ÿ$Iÿ$mÿÿÿ$’ÿ$¶ÿ$Ûÿ$ÿÿIÿI$ÿIIÿImÿI’ÿI¶ÿIÛÿIÿÿmÿm$ÿmIÿmmÿm’ÿm¶ÿmÛÿmÿÿ’ÿ’$ÿ’Iÿ’mÿ’’ÿ’¶ÿ’Ûÿ’ÿÿ¶ÿ¶$ÿ¶Iÿ¶mÿ¶¶ÿ¶Ûÿ¶ÿÿÛÿÛ$ÿÛIÿÛmÿÛ’ÿÛ¶ÿÛÛÿÿ$ÿÿIÿÿmÿÿ’ðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿF‹JJJy³JJJJJJJJJJJJJFÁJJJJJJJJJJJJJJJJJ@‡{ÍJJJJJJJJJJJJJJJJJJJJ:‰rÖJJJJJJJJJJJJJJJJJJJJJJJJJoClÛRJJJJJJJJJJJJJJJJJJJJJJJJRj„C“kÙZRJJJJJJJJJJJJJJJJJJJJJJJRJRk‡ZSAŒ‚lØZZZRJJJJJJJJJJJJJJJJJJJJJJRm‰ZZSC‹m×bZbZZZRJJJJJJJJJJJJJJJJJJJRRRnŠ'b a ZSG…JpÔbbZbZZSJJJJJJJJJJJJJJJJJJRr†'b a Z'ÒbbabJJJJJJJJJJJJJJJJJJJt‚'b •ÑJJJJJJJJJJJJJJJJJJJJ{¥×JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJmÇ}ÛJJJJJJJJJJJJJJJJJJJJJJJJJJJJjÆÙRJJJJJJJJJRJRRRRRJJJJJJJJJJJJJJJJJJJJJJJJkÇRJJJJ~ÚRJJJJJJRJRRRRRRRRJJJJJJJJJJJJJJjZ„§}ÛZSJRRRRRRRRRRRRSRRJJJJJJJJJJJJJJJJJJJJJJJjŒ ZRJR¹RRRRRR~Ø ZRRRRRRRRRRSRSRSRJJJJJJJJJJJJJJJJJJJJJJmƒZ¿RRRRRR~Ø ZSRRSRSRSSSSSSSSSJJJJJJJJJJJJJJJJJJJJJJmƒZ ZÁRRRRRSRSRRRR×ZSRSRSSSSSSSSSSSSJJJJJJJJJJJJJJJJJJJJJJJn ZRRRRSSS¥S×bZZSSSSZSZSZZZZZSZJRJRJRJRJRJRJRJJJJJJJJo¢ZRRRSRSSSSZSSSSSS‹Ô ZSZSZZZZZZZZZZZZRJRJRJRJRJRJRJRJJJJJJJq¤ZSSSSSZSZZZSZSZS“ZZSSZZZZZZZ¾ZZZZZZRRRRRRRRRRRRRRRJJJJJJr¤ ZSZZZZZZZZZZZZZZRRR“RJJJJÓb ZZZZZZ ZZ Z Z ZZ ZZ ZZRRRRRRRRRRRRRRJRJJJJr¯ ZSZZZZZZZZZZZZZZ… ZZ Z Z Z Z Z Z Z°RRRRRRRRRRRRRRRRJJJJu¯ZZZ ZZ ZZ Z Z Z Z ZZ ZZ ZRRRRRRR‚R‡ZZZ Z Z Z Z Z Z Z² ZRRRRRRRRRRRRRRRRJJJJu±a ZZZ Z Z Z Z Z Z Z Z Z Z ZZ RRR„ÏbZZ aZZ bZaZbZaZbZa bZZ aZZ aZZSRSRSRSRRRRRRRRRJJJJv¿ ZZ Z Z Z Z a Z a Z Z Z Z Z Z RRRRRRRR‚b ZÊ bZa bZa bZa bZa bZa bZa aRSRSRRRRRRRRRRRRJJJJw½Z Z Z a Z a a a Z a Z a Z Z Z RRRRRRRR ÌZZ bZbZbabZbabZbZbZbZbZbZbZbZbSSSRSRSRSRSRSRSJJJJy½b Z a a b a b a b a b a a a a RRRRRRRR ÌZaZa babababababZbabZbabZbZbZbRSRSRSRSRSRSRSRJJJJz¼ Z Z b a'b a b a b a b a b a RRRRRRRR ËbZbZbababababababababababababSSSSSSSSSSSRSRSJJJJz» a b bab'bab'bab'bab b'b b'b RRRRRRRRRR ƒZbZbÂajbbabababababababababaSSSSSSSSSSRSRSRJJJJ}¼a a b'b'b'b'b'b'b'b'a Z a Z a Z a Z a Z Z Z Z Z Z Z Z Z Z Z  ÈababbjbjbjbbZbabZbabZbabZbabZbabZbZbZbZbZbZaZbZa bZZ aZZ aZZ aZZJJ}±b'b'a b a b b b b b a j'jbj'jbjZZSZSZSZS Z Z Z Z Z Z Z Z’bababZbababababbjbj¥bjbjbjbjbZZZZZZZZZJJ Z Z Z ° a b a b a b aaj(jbj'jbj'jbj'baZSZSZSSSS ‹ ZZ Z Z Zbababababababbjbjbj«bjbjbjbjZZZZZZZZJJJZZ aZZ aZ © a b a j'bbjbjbjbjbj'jbj'ZZSZSZSZ † Z Z Z†bbjbjbj¢bjbjbjbjbjZZZZZZZZJJ¡aj'jbj(jbj'jbj'jbZSZSZSSS%‚jbjbjœbjbjZZZZZZZZJJ¡'jbjbjbjbjbjbjbj'ZZSZSZSZ&ƒbjbjbjžbjbjbjZZZZZZZJJJŸj'bbj(jbj(jbj'jbZSZSZSSS'ƒbjb jbj–ZZZZZZZJJ!žbj'jbjbjbjbjbj(ZZZZSZSZ(‚jbjbj˜bjZZZZZZZJJ!ž'jbj(jbj(jbj'jbZSZSZSSS)„bjjk j–ZZZZZZZJJ"‚j'j—bjbjbjbjbZZZZSZS*ƒbjb j–bjZZZZZZZJJ%ƒbj(j•(jbj(jbZSZSZSS+ƒjbkjkj”bZZZZZZZJ%…'jbjbj’bjbjbjZZZSZS-„bjjk j“ZZZZZZJJ&‚j'j”(jbj(jbjZZSZSS-bjkjkj‘ZZZZZZJJ)bjbjŽbjZZZSZS.ƒjbkjkj‘ZZZZZZJ)'jbj(jbjSZSZS/…jjkjkjkj‘ZZZZZZJJ)bjbjbjZZZSZ/ƒjbkjkj‘ZZZZZZJ*„jbjbj(jbjSZSZS0jkjkj‘ZZZZZZJJ*‚jbjbjZZZSZ0bjkj‘ZZZZZZJ*‚jbj(jbjSZSZS0jkjkjZZZZZZJ,‚jbjbjZZZSZ0bjkjZZZZZZJ-bjbjŠSZSZS2‡jjsjkjkjZZZZZJ-bjŒbjZSZSZ2…jjkjkj‘kjZZZZZJJ-bjbjŠSZSSS2‡jjsjkjkjZZZZZJ-”Z Z Z Z Z2Z– aZZ ZZJJJJJJJ,•ZZ Z ZZ Z0„ZZ Z Z’ JJJJJJJJ)˜ZZ ZZ ZZ-žZ Z Z Z Z Z JJJJJJ(™SZZZZZZ,‚SZZZ”JJJJJJJJ%šSZZZZZ+¢SZZZZZZJJJJJJ$›ZSZSZZ*¥RZZZZZZZJJJJJJJJJ ›SRRR&©RSSRRRJJJJJJJJJ‡SR%°RSSRRJJJJJJJJJJJJJˆRR” µRRRRRJJJJJJJJJJJJŠR” ¹JRRRRRRRJJJJJJJJJJJJJJJ ˆ RRJ·ZababababZbZa bZZ ZJJZZSSSSRRRRJJJž b'b'b a a Z Z Z ZZ ZZZSS…RRˆb‘ababZbZbZbZa aZZ Z˜ZZZSSRRRJJJ  bab a b a a Z Z Z ZZZSSR†ZbababZbZb bZZ Z– ZZZSSRRJJJ ›Z'b a a a Z Z ZZZSSR„%abababZbZbZZ ZZZSRRJJJ)”Rb Z Z Z ZZSRR-šZZZSZJJJJ*—SRZSSSS.¡ZZSZZZZZJJJJJJJJ$›ZSZZZZZ*¥ZZZZ ZZZZJJJJJ ZSZZZZZZ(†ZZZ Z ZZ–JJJJJJJJJ¡ZZZZ ZZZZZa„ñº÷c÷ƒc÷÷8†ZZ Z Z¢ Z Z Z ZZJJJJJJWºˆ¹ºø÷ø÷ø÷7¥ZZZZ ZZ ZZZZ]ˆñºñºñºñc÷c6‚Z Z… aZZ Z Zž ZZJJJJJJJJJJJJTº…¹ºø÷ø6§ZZ Z Z Z Z Z Z ZZZ]‹ñºñºñºñº÷c÷6‰ajZZ aZZ Z Z¢ Z Z JJJJJJJJJJJS„ºº÷øºƒ¹÷ø6©bab Z Z Z Z Z ZZ ZZ\‰º÷ø÷ºñºñ÷7„bjbkjªbjbjbjZZ ZZJJJJJJJJJJJJJQƒ÷ø¹º÷6ªab'bjjbjbjbjbj'jbj'baRRRRRRZ‹ø÷øºñºñºñc6„bajbj¬bjbjbjbjbjbjSRRRRRRRRRRJJNƒø÷ø¹º¹7¤'baj(jbj(jbj'jbj'bab'RRR„W‚ø÷‚ñº8…jbjjkjªbjbjbjbjbjRSRSRRRRRRJJJJKƒ÷ø÷Bƒaj'j bjbjbjbj'jbj'baRRRRRTƒ÷ø÷Bƒbjbj¬bjbjbjbjbjbbSRRRRRRRRJJJJHƒø÷øD¡b'baj(jbj(jbj'jaj'bab'RRRˆQƒø÷øE†bjbjjkj¬bjbjbjbjbjRSRSRRRRJJJJJJD‚ø÷G„bajbjbjbjbjbj'baj'baRRRR†Mƒ÷ø÷G…jbjbkj®bjbjbjbjbjbbSRRRRRRJJJJJJJAƒ÷ø÷Hž'b'bjj(jbj'jbj'baj'bab'RRŒ>„abab ‚÷øJ‡bbjbjjkj¬bjbjbjbjbjRSRRRRJJJJJJJJ2†ab'b bƒø÷øL„bbjbj™bjbj'jbj'bab'baRRRŠ<ˆbjbjbjabƒø÷øMb j®bjbjbjbjbjbbRRRRRJJJJJJJJ1j'j'j'a'b÷ø÷O™b'jbj(jbj'jbj'baj'bab'R;j‡bjjabø÷Pƒajbjbj¬bjbjbjbjbjRRRRJJJJJJJJJ0'jˆ'jaj ÷abR–ajbjbjbjbj'jbj'bab'baR‚RŒ6ƒ÷÷cjaj‚ajQ‚baj²bjbjbjbjbjbjajabRRRJJJJJJJJ'…a ÷ø÷jj ajjøj'j b'Q• bbj'jbj'baj'bab'b'b Œ:…Zac÷÷„jr bj†bajbbaP„bbjbj®bjbjbjbjbbabZbRRJJJJJJJJJJ$ ˆ÷ø÷ ar0j0j†'jaj'jQ¡b'jbj'jbj'bab'b a Z 7aŒ÷÷cbZjrjrjrjƒbjbQ‘abbjbjbjbjbjabab Z JJJJJJJJJ)Œa b a b rjr0j/j„'j'jQŸa'j'baj'bab'a a ZZ=‘bababababarjsjrjrj‚baQabajbjbjbbabZa Z¢ZJJJJJJJJJJ'b b b b b b rjr0j…'jaj'Sœ bbj'bab a Z ZZR=‘bababababababrjrjaU²ajbjbbabZZ Z ZSRJJJJJJJJ!’a a b a b a b a a”'b'b a ZZSR>—Za bababababababZa ]®bbabZZ ZZSRRJJJJJJJ(’ b b b b b b a a^RRSREbababababababd¨RRRJJJJJJJJJJ,Œ b a b a b agˆGŒbabababababah£JJJJJJJJJJJ/Šb b b b b j…I÷‡abababaZj›JJJJJJJ/÷…a b ÷‚a 2‚÷÷ƒc÷÷bm‘JJJJ2ø‚ a…÷ø÷ a4‚÷÷ …÷÷cbZzJ7‚÷ø‚ a3÷'­#¤#lp`"?€€€€€€€€€ÀÀÀÀÜÀðʦ$I’¶Û$$$$I$m$’$¶$Û$ÿII$IIImI’I¶IÛIÿm$mIm’m¶mÛmÿ’’$’I’m’’’¶’Û’ÿ¶¶$¶I¶m¶’¶¶¶Û¶ÿÛÛ$ÛIÛmÛ’Û¶ÛÛÛÿÿ$ÿIÿmÿ’ÿ¶ÿÛU$UIU’U¶UÛUÿU$U$$U$IU$mU$’U$¶U$ÛU$ÿUIUI$UIIUImUI’UI¶UIÛUIÿUm$UmIUm’Um¶UmÛUmÿU’U’$U’IU’mU’’U’¶U’ÛU’ÿU¶U¶$U¶IU¶mU¶’U¶¶U¶ÛU¶ÿUÛUÛ$UÛIUÛmUÛ’UÛ¶UÛÛUÛÿUÿUÿ$UÿIUÿmUÿ’Uÿ¶UÿÛUÿÿªª$ªIªmª’ª¶ªÛªÿª$ª$$ª$Iª$mª$’ª$¶ª$Ûª$ÿªIªI$ªIIªImªI’ªI¶ªIÛªIÿªmªm$ªmIªmmªm’ªm¶ªmÛªmÿª’ª’$ª’Iª’mª’¶ª’Ûª’ÿª¶ª¶$ª¶Iª¶mª¶’ª¶Ûª¶ÿªÛªÛ$ªÛIªÛmªÛ’ªÛÛªÛÿªÿªÿ$ªÿIªÿmªÿ’ªÿ¶ªÿÛªÿÿÿ$ÿIÿmÿ’ÿÿ¶ÿÛÿ$ÿ$$ÿ$Iÿ$mÿÿÿ$’ÿ$¶ÿ$Ûÿ$ÿÿIÿI$ÿIIÿImÿI’ÿI¶ÿIÛÿIÿÿmÿm$ÿmIÿmmÿm’ÿm¶ÿmÛÿmÿÿ’ÿ’$ÿ’Iÿ’mÿ’’ÿ’¶ÿ’Ûÿ’ÿÿ¶ÿ¶$ÿ¶Iÿ¶mÿ¶¶ÿ¶Ûÿ¶ÿÿÛÿÛ$ÿÛIÿÛmÿÛ’ÿÛ¶ÿÛÛÿÿ$ÿÿIÿÿmÿÿ’ðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿt–÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø„÷÷c÷ƒ&%`…c÷ø÷c ‚%‡%%ø÷c÷|„÷c÷÷'„%&%`÷‚c÷tƒ÷ø÷+†%% ÷q‚÷÷-‚&%ƒ%&%÷pcŠ÷÷÷÷÷ƒ²ñ %cm‚÷cSˆñ²ñññ÷j‚c÷÷÷÷÷ñ²ñ²ñ²‚÷ø÷g‚÷Sèè“èñ²ñ²ñ²ñ²ñ²ñ²ññ²ñ÷÷d‚c÷ S ˜øSøøñ²ññ²ñññññ²ñ‚ø÷÷b÷"Žšøšøšøšøšøšøšc÷‘ø÷²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷÷_‚÷c"šøšøšøŸšc÷c÷c÷c÷ø÷ø÷ññññ²c÷c÷c÷]‚÷#—÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷÷÷÷†øñ²ñ²ñ÷†÷c[÷%•ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷c÷c÷™c÷c÷c÷c÷ø÷ø÷c÷c÷c÷c÷cø÷Z÷%žø÷c÷ø÷c÷ø÷c÷ø÷÷÷÷÷÷÷÷÷…SS÷÷c÷ƒcY÷%ø÷ø÷ø÷ø÷ø÷ø÷÷ñ÷÷÷÷c÷c÷…c÷c÷cSŒ÷c÷c÷c÷c÷W÷&èèè‰è²ñ²ñ²è÷÷÷÷÷SøSøS ÷‚÷U÷'™ñ²ññ²ññ÷÷÷÷÷÷÷øSøS‹c÷c÷c÷c÷øR÷(ƒèèèè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷†SšSøSøS÷…J÷Q÷*÷÷ ÷ñññññññññ÷÷øSøSøSøSˆc÷O+èè©è²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñøšøšøøSšSøSøñ÷M÷,˜ñ²ññ²ññ²ññ²ññ²ññc÷cøˆSøSøSøSS÷K-‚èèè˜ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷‰øšøøSšSøS÷I÷.÷÷¦÷ñññññññññññø÷c÷ø÷cøSøSøSø÷G/èè—èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ ÷…øšøšøñ÷E÷0 ñ²ññ²ññ²ññ²ññ²ñ÷c÷c÷c÷c÷c÷cøøD1‚èèè”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷c÷c÷øñcB÷3ƒ÷÷¦÷ññññññññññc÷c÷c÷c÷c÷c÷c÷ø÷ø@4ƒèè–èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷ñc?4÷÷÷¢ñ²ññ²ññ²ññ²ññ²÷c÷c÷c÷c÷c÷c÷c÷c ø=5 ”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñc÷c÷c÷„c÷÷ñ c;6®÷÷÷÷÷÷ñññññññññø÷c÷ø÷c÷c÷c÷c÷c÷ ÷;6ƒèè”èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷ñ ÷98÷÷Ÿñññññññññc÷c÷c÷c÷c÷c÷c÷ ÷8è7÷ ”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷c÷c÷c ² ÷78«ø÷÷÷÷÷ñ²ñ²ñ²ñ²÷ø÷c÷ø÷c÷ø÷c÷ø ñ ø67Ÿ÷÷÷÷÷÷ññ²ñ²ñ²ñ²ñ²ñ²ñ²ñc ÷ ² ÷58Œ÷c÷c÷c÷c÷c÷c›ñ²ñññññø÷c÷ø÷c÷ø÷c÷c÷ ñ ÷38‚÷÷c÷c÷‚èŒñññññ²ñ²÷c÷c÷‚c÷ ² c38øšø÷ø†÷c÷÷ ²÷ø÷ø÷ø÷ø÷ø÷ø÷ ñø1è9øSøS„øSšø÷…÷èˆèèñø÷ø÷c÷ƒc÷÷ ²÷18÷S SSc÷c÷÷÷÷÷šøšø÷ø÷ø÷ø÷c ñ÷/9ˆ÷SøSèŸè²ñ²ñ²SS÷c÷÷÷÷øšøšø÷ø÷c÷÷²÷.9øƒSS÷÷œ÷ñññññSS÷c÷cøSøSøøšø÷ø÷ñø-ñ9÷èèœè²ñ²ñ²ñ²ñ²ñ²ñ²ñSøSøSšøšø÷ø÷ø²÷gø‚÷™÷ññ²ññ²ññ²ñ÷cSSSøSøñ÷ec‚èè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷÷SSøSøSš²ce÷÷œ÷ñññññññc÷c÷c÷c÷SSSSøñøc÷èŽè²ñ²ñ²ñ²ñ²ñ²ñ² ÷„øSøS²÷(5:ø‚÷š÷ññ²ññ²ññ²÷c÷c÷c÷c÷c÷Sñø(-9÷ ‚èè²ñ²ñ²ñ²ñ²ñ²ñc÷c÷†c÷SøSøñ÷'-9÷ ÷–÷ññññññ÷c÷ø÷c÷ø÷Sñ÷&p:c ƒèŒè²ñ²ñ²ñ²ñ²ñ² ÷²c&-9ø ÷—÷ññ²ññ²ññc÷c÷c÷c÷cñ÷&69÷ ²ñ²ñ²ñ²ñ²ñ÷÷c÷„c÷÷ÿ÷%-9ø ƒ÷”÷ñññññ÷ø÷c÷ø÷c÷²ø#„6--7÷ ƒè‹è²ñ²ñ²ñ²ñ²ñ÷ÿ÷#Œ-5-5ñ²ñ²ñ²ñ/÷ ÷”÷²ññ²ññ²ñc÷c÷c÷c÷²ø#ƒp-6 ‰ÿñÿñÿñÿñÿ&c Šñ²ñ²ñ²ñ²ñ²÷c÷cÿc"‚-5‡ÿ²ÿ²ÿ²ÿø‚÷ñññññc÷ø÷c÷ø²÷"„6÷ÿ÷‚è‰ñ²ñ²ñ²ñ²ñ÷Jÿ÷"-‚c÷ƒÿÿñÿø’÷²ññ²ññ²÷c÷c÷c÷²÷"p‚÷c ÿ ÷Šñ²ñ²ñ²ñ²÷c÷‚c÷ÿ÷!-ƒø÷ø"‚ÿñÿ÷‚÷Žññññø÷c÷ø÷c²ø - ƒ÷÷c%ÿ‚c‚èˆñ²ñ²ñ²ñ²÷4÷ 5ƒø÷ø'ÿ ÷²ññ²ñ÷c÷ø÷c5ø -ƒ÷÷c$÷ÿŠñ²ñ²ñ²ñ÷÷c÷5÷5ƒø÷ø+ÿ‘÷÷ññññ÷ø÷c÷6ø8„÷÷c÷+ÿ‹²ñ²ñ²ñ²÷c÷6÷<ƒ÷ø÷+‚ÿ‰ññø÷c÷øúø „÷c÷÷‚&%ƒ²ñ²ÿ÷‚c÷ƒ=5x÷²"ƒø÷ø%‘÷÷÷ñ²ññÿÿñÿ÷‚ú5÷²%c÷ `è²ñ²ñ²ñ÷÷c÷÷ÿúcñ)„÷ø÷ø ÷Œ÷ñññ÷ø÷c÷ÿñú÷0`&ˆñ²ñ²ñ²ñc÷ ÿ=÷²0‡%%÷÷ñ²ñø÷ø÷øƒÿ²ÿ55÷²4„&%`%% Šèñ²ñ²ñ²÷‚c÷5xcñ5‡%%% Ž÷÷ñññc÷ø÷„ú5ú55÷5%%‚c÷SøSøS÷²ñ²ñ²÷c÷÷ú…ú=5xú÷²5% …÷ø÷øSŒøSøø÷øšø÷ø÷ø „ú5ú5ú÷²5%ŒSøSøSøø÷ø÷ø÷S÷ 5…5xú5cñ4S‚øšø†šøSS úƒ5ú5÷4‚`% SŽøøšøšøšøšJSSSú‚xúÿ÷²B‰SSSSøSø‰SøøSSSø5ƒñ²ñ ÷²?ƒJSJS“øSšøšøšøšøSJSS÷÷c÷=„ÿññ²'ñ=šJJSSøSøSøSøSøSøSS…÷ø÷ø÷5ƒ²ñ²$²3cœèJJJSJSSøSøSøSøSšøSSS ÷‚c÷xƒ²ñ²!²3÷÷‰JSSSSŠSSøJJJ …÷ø÷ø÷ƒ55ƒñ²3÷èˆèñ²ñJS S…JS÷‚c÷‚ú=…%`²ñ2÷š ”ñ²ññ²JJSSJJJ†÷ø÷ø÷ø%‚²ñ2c…÷ø÷ø÷–ñ²ñ²ñ²ñ²ñ²ñ²SSJJJ…÷÷c÷÷`ƒñ2÷ …ø÷ø÷c÷”ññññññ÷J ‡ø÷ø÷ø÷ø ñ2÷ ”ø÷ø÷÷÷÷÷ñ²ñ²ñ²ñ²ñ÷„JJ%c÷‚c÷ & ‚÷1ø ‰ø÷ø÷c÷÷c÷c÷²ññc÷c÷c÷c÷c÷+‚÷øˆ%% ÷ñ1÷ ÷‡÷÷÷÷„÷÷c÷c÷‚c÷ÿŒ`&%`%&%`÷÷c÷ƒc÷÷ñ0ø œ÷÷÷²c÷c÷c÷c÷c÷ø÷ø÷ø÷c÷c÷ÿ%%²0÷ ‚÷Š÷ñ²ññ²ñ÷÷‡ø÷øšøš÷ÿ%#ñ0ø’÷Sñ²ñ²÷ø÷ø÷øS²%#²0÷‚÷Žšøñññø÷c÷ø÷ÿ%$/ø“÷÷²ñ²ø÷ø÷ø÷øñ%$ñ.c‚èˆñ²ññ²ñø÷S÷ÿ‚`%$².÷‘÷÷ñññ÷ø÷ø÷ÿ&²-÷‘÷÷÷ññ²ññc÷ø÷cÿEñ-÷…÷c÷c÷ˆñ²ø÷ø÷ø²F²-c÷‰ñññ÷ø÷ÿG,÷…c÷c÷c…øšø÷øÿø)ñ,÷ c÷‚c÷è…šøšø÷ÿ÷),÷ ‰ø÷c÷ø÷÷øÿ÷*ñ,c ÷ƒè‡èšø÷øšÿ÷+ñ+÷ ˆ÷c÷c÷c÷ø‚šøñ÷+²+÷ ƒ÷÷c÷è…šøšøšÿ÷,ñ+÷ ‡c÷ø÷c÷ø÷÷øÿø-ñ*c ƒ÷÷c÷‚cèè‡èøšøšøšÿc.²*÷ Š÷ø÷c÷ø÷÷ƒ÷øÿ÷/²)÷‚÷c÷ƒc÷÷ †øšøšøšÿ÷0ñ)÷‘ø÷ø÷ø÷ø÷÷÷÷÷øƒSøø²ø1ñ(cc÷c÷‚èè‡èøšøšøšÿ÷3ñ'÷ˆ÷c÷ø÷c÷ø÷…÷øSø‚Søÿ÷3²'÷÷c÷c ‡øšøšøšøÿ÷5&÷“c÷ø÷c÷ø÷÷÷÷÷÷÷øSøÿø5ñ&c ÷ƒè舚øšøšøšøÿc7ñ%÷Š÷ø÷c÷ø÷c÷÷‚÷ø‚Søÿ÷8ñ$÷÷c÷ ˆšøšøšøšøÿ÷9$÷‚÷ø÷÷÷SøSø²÷;²#c…÷÷÷èè舚øšøšøšøÿ÷<"÷ ‰ø÷÷÷÷÷‚÷øÿø=ñ"÷ –÷øšø÷÷÷÷÷øšøšøšøÿ÷?ñ!÷ ‚øšø÷ø÷c÷c÷c÷c÷ø÷øñø@²!c ˆø÷ø÷ø÷÷‰ø÷c÷ø÷øšøÿ÷B ÷ ƒø÷c÷„c÷SøSÿ÷C²÷ ÷ø÷÷øSøSøÿ÷Dñ ø ƒ÷²†÷SøSøS²÷F‚ñ²÷ „ñ÷ÿ÷Iø ‡JSñc÷ÿøJ²÷ ‰JSSJSJÿcLø‹JSSJñøN²÷…÷SS†SJSJÿcP÷÷÷SSSÿøR²c‘÷÷ññSSJJÿ‚÷cT÷÷c÷ñ²ñ²÷ø÷ÿ÷W²÷÷Œñññ÷ø÷c÷øÿ÷Yø÷²ñ²ñø÷ø÷øÿ‚ø÷[÷šø‰ññ÷ø÷ø÷ñ÷^øŽøSøø÷ø÷S÷ø÷ø²ø`‚²ñ÷÷ƒøSSñ÷c‚²÷ ‚SS²‚÷øf‚ñ÷!ÿ÷j‚²c ÿ‚ø÷m‚ñ÷ÿ‚÷cq‚ ÿƒ÷c÷u‚ñ ÿ‚÷÷z‚ ÷ñ ‚÷c~‚ñ÷‚ñÿ ‚÷÷² ƒc÷c‚.-‚ñ² ƒ÷÷ -ƒ--ñ‡c÷÷c÷c†h-.-h- ƒñ÷÷‚--‡ññ²ñ%‰.-hññ²ñfu%l%lp`B€€€€€€€€€ÀÀÀÀÜÀðʦ$I’¶Û$$$$I$m$’$¶$Û$ÿII$IIImI’I¶IÛIÿm$mIm’m¶mÛmÿ’’$’I’m’’’¶’Û’ÿ¶¶$¶I¶m¶’¶¶¶Û¶ÿÛÛ$ÛIÛmÛ’Û¶ÛÛÛÿÿ$ÿIÿmÿ’ÿ¶ÿÛU$UIU’U¶UÛUÿU$U$$U$IU$mU$’U$¶U$ÛU$ÿUIUI$UIIUImUI’UI¶UIÛUIÿUm$UmIUm’Um¶UmÛUmÿU’U’$U’IU’mU’’U’¶U’ÛU’ÿU¶U¶$U¶IU¶mU¶’U¶¶U¶ÛU¶ÿUÛUÛ$UÛIUÛmUÛ’UÛ¶UÛÛUÛÿUÿUÿ$UÿIUÿmUÿ’Uÿ¶UÿÛUÿÿªª$ªIªmª’ª¶ªÛªÿª$ª$$ª$Iª$mª$’ª$¶ª$Ûª$ÿªIªI$ªIIªImªI’ªI¶ªIÛªIÿªmªm$ªmIªmmªm’ªm¶ªmÛªmÿª’ª’$ª’Iª’mª’¶ª’Ûª’ÿª¶ª¶$ª¶Iª¶mª¶’ª¶Ûª¶ÿªÛªÛ$ªÛIªÛmªÛ’ªÛÛªÛÿªÿªÿ$ªÿIªÿmªÿ’ªÿ¶ªÿÛªÿÿÿ$ÿIÿmÿ’ÿÿ¶ÿÛÿ$ÿ$$ÿ$Iÿ$mÿÿÿ$’ÿ$¶ÿ$Ûÿ$ÿÿIÿI$ÿIIÿImÿI’ÿI¶ÿIÛÿIÿÿmÿm$ÿmIÿmmÿm’ÿm¶ÿmÛÿmÿÿ’ÿ’$ÿ’Iÿ’mÿ’’ÿ’¶ÿ’Ûÿ’ÿÿ¶ÿ¶$ÿ¶Iÿ¶mÿ¶¶ÿ¶Ûÿ¶ÿÿÛÿÛ$ÿÛIÿÛmÿÛ’ÿÛ¶ÿÛÛÿÿ$ÿÿIÿÿmÿÿ’ðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿañ1„²ÿ²ƒñÿÿ„ÿñÿ„ÿ²ÿ „ñ²ÿñ„ÿñÿƒÿÿ„²²ÿ²ƒ²ÿ‚ñÿƒc÷÷ „ñÿÿñŒñ²ñÿ²÷ø÷ø÷ ‚÷øˆñññÿÿñ÷‚c÷‚c÷²ƒ÷øŠø÷ø÷ø÷ø÷„ññ‚c÷ c÷ƒc÷÷ñ²÷÷÷÷ø÷ƒ²ñ†ø÷ø÷ø÷ †ññS‚÷÷Œñ²ñññ÷c÷‚c÷ ƒÿ²ÿ²÷ž÷ø÷÷÷ñ²ñ²ñ²ø÷ø÷ø÷†ñÿññS†è÷cè“èñ²ñ²ñ²ñ²ñ²ñ²ññ²ñc÷‚c÷„ÿ²S‚ø÷œøSøøñ²ññ²ñññññ²ñø÷ø÷ø‚ññÿ‚ñÿŽšøšøšø÷÷øšøšøc÷‘ø÷²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷c÷c|Œ²ÿ²ÿ²ÿ²ÿ²ÿšøƒšø÷ø¤šøšc÷c÷c÷c÷ø÷ø÷ññññ²c÷c÷c÷ø÷ø÷øx„èÿÿ‰ñÿÿ÷ø÷ø÷ø÷Žø÷ø÷ø÷÷÷÷÷†øñ²ñ²ñ÷ƒ÷c÷cv‚ñ•ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷c÷c÷c÷c÷c÷c÷ø÷ø÷c÷c÷c÷c÷c÷ø÷ø÷øs‚ñžø÷c÷ø÷c÷c÷ø÷c÷÷÷÷÷÷÷÷÷…SS÷÷c÷‚÷c÷cƒÿñg‚²ø÷ø÷ø÷ø÷ø÷ø÷÷ñ÷÷÷÷c÷c÷…c÷c÷cSŠ÷c÷c÷c÷c÷‹÷ø÷ø÷ø²²ÿg‚ñèèƒ÷÷膲ñ²ñ²è÷÷÷÷÷SøSøS ÷‚÷c÷ƒñÿÿg‚²‚ø÷™ñ²ññ²ññ÷÷÷÷÷÷÷øSøS‡c÷c÷c÷c …÷øÿñÿg‚ñƒè„è÷cè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷†SšSøSøS÷Jc÷…cñÿÿñf‚² ÷¤ø÷÷ñññññññññ÷÷øSøSøSøSƒc‹ø÷ø÷ø÷øÿ²g‚ñ …èc÷¨è²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñøšøšøøSšSøSø÷c÷‚c÷„ñÿg‚² ‚÷ø˜ñ²ññ²ññ²ññ²ññ²ññc÷cøŒSøSøSøSSø÷ø÷‚ø÷h‚ñ ‚è…è÷÷è˜ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷‰øšøøSšSøS ‚÷÷g‚ …÷÷ø¦÷ñññññññññññø÷c÷ø÷cøSøSøSø ‚ø÷g‚ñ …è÷cè—èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ ÷…øšøšø ‚÷÷h‚ñ ‚ø÷ ñ²ññ²ññ²ññ²ññ²ñ÷c÷c÷c÷c÷c÷cø ‚÷øh‚ñ ‚èƒ÷÷è–èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷c÷c÷ø ‚c÷g‚ °÷ø÷÷÷ññññññññññc÷c÷c÷c÷c÷c÷c÷ø÷ ‚÷øg‚ñ …è÷÷˜èèñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷ ‚÷÷g‚ñ ‰÷÷ø÷÷¢ñ²ññ²ññ²ññ²ññ²÷c÷c÷c÷c÷c÷c÷c÷c ‚ø÷h‚ñ ‚c÷”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñc÷c÷c÷„c÷÷ ‚÷ch‚ ®÷÷÷ø÷÷÷ñññññññññø÷c÷ø÷c÷c÷c÷c÷c÷ ‚ø÷g‚ñ ˆè÷÷è“èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷ ‚÷÷g‚²…ø÷÷÷Ÿñññññññññc÷c÷c÷c÷c÷c÷c÷‚ø÷g‚ñƒ÷c”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷c÷c÷c ‚÷÷h‚²ªø÷÷÷÷÷ñ²ñ²ñ²ñ²÷ø÷c÷ø÷c÷ø÷c÷ø‚÷øg‚ñ÷š÷÷÷ññ²ñ²ñ²ñ²ñ²ñ²ñ²ñc ÷‚c÷g‚²‹c÷ø÷c÷c÷c÷c›ñ²ñññññø÷c÷ø÷c÷ø÷c÷c÷‚÷øg‚ñ÷c÷„c÷èŒñññññ²ñ²÷c÷c÷‚c÷‚÷÷h‚² ‡øø÷ø÷ø÷ø†÷c÷÷ ²÷ø÷ø÷ø÷ø÷ø÷ø÷‚ø÷g‚ñ ‡øSSc÷SøS‚šø÷…÷èˆèèñø÷ø÷c÷ƒc÷÷‚÷cg‚ñ „SSø÷ SSc÷c÷÷÷÷÷šøšø÷ø÷ø÷ø÷c‚ø÷g‚ñ†S÷÷èŸè²ñ²ñ²SS÷c÷÷÷÷øšøšø÷ø÷c÷÷‚÷÷g‚ƒø÷÷÷œ÷ñññññSS÷c÷cøSøSøøšø÷ø÷‚÷øg‚ñƒ÷cèèœè²ñ²ñ²ñ²ñ²ñ²ñ²ñSøSøSšøšø÷ø÷ø‚÷÷g‚ñ…ø÷÷™÷ññ²ññ²ññ²ñ÷cSSSøSø‚÷øg‚ñ†c÷èè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷÷SSøSøSš‚c÷g‚„÷ø÷œ÷ñññññññc÷c÷c÷c÷SSSSø‚÷øg‚ñ„÷÷èŽè²ñ²ñ²ñ²ñ²ñ²ñ² ÷„øSøS‚÷÷g‚²†÷ø÷š÷ññ²ññ²ññ²÷c÷c÷c÷c÷c÷S‚ø÷g‚ñ‚÷c‚èè²ñ²ñ²ñ²ñ²ñ²ñc÷c÷†c÷SøSø‚÷cg‚²‚ø÷÷–÷ññññññ÷c÷ø÷c÷ø÷S‚ø÷g‚ñ‚÷÷ƒèŒè²ñ²ñ²ñ²ñ²ñ² ÷‚÷÷f‚²‚ø÷÷—÷ññ²ññ²ññc÷c÷c÷c÷c‚÷øg‚ñ‚÷÷²ñ²ñ²ñ²ñ²ñ÷÷c÷„c÷÷‚÷÷g‚²‚÷øƒ÷•÷ñññññ÷ø÷c÷ø÷c÷²‚÷øg‚ñ‚c÷ƒè‹è²ñ²ñ²ñ²ñ²ñ÷‚ñÿ‚c÷f‚ñ‚÷ø÷—÷²ññ²ññ²ñc÷c÷c÷c÷ÿñ‚ø÷g‚ñ‚÷÷Šñ²ñ²ñ²ñ²ñ²÷c÷ƒcÿÿ‚÷÷g‚‚ø÷‚÷“ñññññc÷ø÷c÷ø²ÿ‚ø÷g‚ñ‚÷c‚è‰ñ²ñ²ñ²ñ²ñ÷„Jÿñ‚÷cf‚ñ‚ø÷–÷²ññ²ññ²÷c÷c÷c÷²ÿ‚ø÷f‚ñ‚÷÷Šñ²ñ²ñ²ñ²÷c÷†c÷ñÿ‚c÷g‚‚÷ø‚÷’ññññø÷c÷ø÷cÿ²‚÷øg‚ñ‚÷÷‚èˆñ²ñ²ñ²ñ²÷‚ÿÿ‚÷÷g‚ñ‚÷ø÷²ññ²ñ÷c÷ø÷c‚ÿ²‚÷øf„ÿñÿ‚c÷Šñ²ñ²ñ²ñ÷÷c÷‚ñÿ‚c÷f„²²ÿ²‚÷ø‘÷÷ññññ÷ø÷c÷‚²ÿ‚ø÷gÿ ‚÷÷ è²ñ²ñ²ñ²÷c÷‚ÿÿ‚÷÷g†²ñÿø÷ø ‚ø÷ ÷ññññø÷c÷ø‚ñÿ‚ø÷f„ñÿÿñ÷c÷‚÷c‡²ñ²ñ²ñ²÷‚c÷‚ÿñ‚÷cf„ÿ²ÿˆ÷ø÷ø÷ø÷ø‚ø÷‘÷÷÷ñ²ññø÷ø÷c‚²ÿ‚ø÷f„ñÿÿƒ÷÷c÷‚c÷ è²ñ²ñ²ñ÷÷c÷÷‚ñÿ‚c÷g‚² ˆ÷ø÷ø÷ø÷ø÷Œ÷ñññ÷ø÷c÷‚ÿñ‚÷øf‚ñƒ÷÷c÷c÷ˆñ²ñ²ñ²ñc÷ƒñÿÿ‚÷÷f‚‚÷ø•÷ø÷ø÷÷÷ñ²ñø÷ø÷ø„ÿ²ÿ‚÷øf‚ñ‚÷cÿÿ÷c÷÷èñ²ñ²ñ²÷‚c÷„ññÿÿ‚÷cg‚ñ‚ø÷ž²ñÿø÷ø÷÷÷ñññø÷ø÷ø÷ø÷øñÿñ‚ø÷f‚ñ‚÷÷ƒÿñSøSøS÷²ñ²ñ²÷c÷c÷ÿ‚÷÷f‚‚ø÷…²²ÿS–øSøø÷øšø÷ø÷ø÷ø÷ø÷ø²ÿ²‚ø÷f‚ñ‚÷cŒSøSøSøø÷ø÷ø÷S‹÷÷÷c÷ÿñÿ‚÷cf‚ñ‚÷øS‚øšø†šøSS‡²ÿñ÷ø÷‚÷øg‚ñ‚c÷SŽøøšøšøšøšJSSS…ñÿ÷c÷ƒc÷÷ƒñÿÿ‚c÷f‚²‚÷ø‰SSSSøSøˆSøøSSS‚ÿ²ø÷ø÷ø÷ø÷ÿ²‚÷øf‚ñ‡÷÷JSJSøSšøšøšøšøSJSS‚ÿÿ ÷†c÷÷ÿñÿ‚÷÷f‚²ø÷JJSSøSøSøSøSøSøSS‚ñÿ…ø÷²ÿñ‚÷øf‚ñ÷cèJJJSJSSøSøSøSøSšøSSS‚ÿñƒÿÿ‚÷cf‚²…ø÷÷‰JSSSSŽSSøJJJ²ÿƒ²ÿ‚ø÷f‚ñ…÷÷èˆèñ²ñJS S‰JSÿÿ‚ñ‚÷÷f‚²ƒ÷øš —ñ²ññ²JJSSJJJñÿ‚ø÷f‚ñˆ÷÷÷ø÷ø÷—ñ²ñ²ñ²ñ²ñ²ñ²SSJJJÿ‚÷ce‚‚÷ø…ø÷ø÷c÷”ññññññ÷J‚÷øf‚ñ‚c÷”ø÷ø÷÷÷÷÷ñ²ñ²ñ²ñ²ñ÷„JJ‚c÷f‚ñ‚÷ø‰ø÷ø÷c÷÷c÷c÷²ññc÷c÷c÷c÷c÷‚÷øf‚ñ‚÷÷÷‡÷÷÷÷„÷÷c÷c÷‚c÷‚÷÷e‚‚ø÷œ÷÷÷²c÷c÷c÷c÷c÷ø÷ø÷ø÷c÷c÷‚÷øe‚ñ‚÷c‚÷Š÷ñ²ññ²ñ÷÷‡ø÷øšøš÷‚÷cf‚ñ‚ø÷’÷Sñ²ñ²÷ø÷ø÷ø‚Sÿ‚ø÷f‚ñ‚c÷ ‚÷’šøñññø÷c÷ø÷ÿÿ‚÷÷e‚²‚÷ø —÷÷²ñ²ø÷ø÷ø÷øÿ²‚ø÷e‚ñ‚÷÷‚èˆñ²ññ²ñø÷S÷„ÿÿ‚÷÷f‚²‚÷ø‘÷÷ñññ÷ø÷ø÷‚ÿ²‚÷øf‚ñ‚÷c ‘÷÷÷ññ²ññc÷ø÷c‚ñÿ‚c÷f‚²‚ø÷ …÷c÷c÷ˆñ²ø÷ø÷ø‚ÿ²‚÷øe‚ñ‚÷÷÷‰ñññ÷ø÷‚ÿÿ‚÷÷e‚²‚ø÷…c÷c÷c…øšø÷ø‚ñÿ‚ø÷f‚ñ‚÷cc÷‚c÷è…šøšø÷‚ÿñ‚÷cf‚²‚÷ø‰ø÷c÷ø÷÷ø‚²ÿ‚ø÷e‚ñ‚c÷÷ƒè‡èšø÷øš‚ñÿ‚÷÷e‚ñ‚÷øˆ÷c÷c÷c÷ø‚šø‚ÿñ‚ø÷e‚ñ‚÷÷ƒ÷÷c÷è…šøšøš‚ÿÿ‚÷÷f‚‚ø÷‡c÷ø÷c÷ø÷÷ø‚ÿ²‚÷øe‚ñ‚÷cƒ÷÷c÷‚cèè‡èøšøšøš‚ñÿ‚c÷e‚ñ‚ø÷Š÷ø÷c÷ø÷÷ƒ÷ø‚²ÿ‚÷øe‚ñ‚÷÷‚÷c÷ƒc÷÷ †øšøšøš‚ÿÿ‚÷÷e‚‚÷ø‘ø÷ø÷ø÷ø÷÷÷÷÷øƒSøø‚²ÿ‚ø÷e‚ñ‚÷÷c÷c÷‚èè‡èøšøšøš‚ÿñ‚÷ce‚²‚÷øˆ÷c÷ø÷c÷ø÷…÷øSø…Søÿ²‚ø÷e‚ñ‚c÷÷c÷c Šøšøšøšøñÿ‚÷÷e‚²‚÷ø“c÷ø÷c÷ø÷÷÷÷÷÷÷øSøƒÿ²‚÷øf‚ñ‚÷÷ ÷ƒèè‹šøšøšøšøÿÿ‚÷÷e‚²‚ø÷Š÷ø÷c÷ø÷c÷÷‚÷ø…Søÿ²‚÷øe‚ñ‚÷c÷c÷ Ššøšøšøšøÿñ‚c÷e‚²‚ø÷‚÷ø÷÷÷SøSø‚²ÿ‚÷øe‚ñ‚c÷…÷÷÷èè芚øšøšøšøÿÿ‚÷÷e‚ñ‚÷ø ‰ø÷÷÷÷÷‚÷ø‚ñÿ‚ø÷e‚ñ‚÷÷ ˜÷øšø÷÷÷÷÷øšøšøšøÿñ‚÷ce‚‚÷ø ‚øšø÷ø÷c÷c÷c÷c÷ø÷ø²‚ø÷e‚ñ‚÷c ˆø÷ø÷ø÷÷Œø÷c÷ø÷øšøñÿ‚÷÷d‚ñ‚ø÷ ƒø÷c÷„c÷SøS‚ÿñ‚÷øe‚ñ‚÷÷ ÷ø÷÷øSøSø‚ÿÿ‚÷÷dƒ²‚ø÷ ƒ÷²†÷SøSøS‚²ÿ‚÷ødƒÿÿ‚÷c„ñ÷ ‚ÿñ‚c÷dƒÿñÿ‚÷ø‡JSñc÷ ‚²ÿ‚÷ød„ÿññÿ‚c÷ ‰JSSJSJ ‚ÿÿ‚÷÷d‹ÿ²ÿ²ÿ²ÿ²‚÷ø ‹JSSJ ‚²ÿ‚ø÷d†ññÿñÿñÿñÿ„÷÷…÷SS†SJSJ‚ÿÿ‚÷cd‡ÿñ²‹ÿ²ÿñÿ²ÿø÷²ÿ÷÷SSS‚ÿ²‚ø÷fÿƒññƒÿ÷cÿñÿ’ñ÷÷ññSSJJ‚ñÿ‚c÷lƒ²šø÷²ÿ²ÿ²ÿ÷c÷ñ²ñ²÷ø÷‚ÿ²‚÷øn‚ñ‚÷÷‚ÿ÷Œñññ÷ø÷c÷ø‚ñ÷‚÷÷oƒñ„ø÷ ÷²ñ²ñø÷ø÷øƒÿ²‚÷øp‰ññÿÿñ šøŒññ÷ø÷ø÷ÿÿñÿ‚ñÿ‚c÷r²ƒÿ²ÿ –øSøø÷ø÷S÷ø÷øÿ²ÿ²ÿ²÷ø‚ø÷t†ñññÿÿ÷ƒøSS †ÿ÷÷c÷‚÷÷v†ÿñÿø÷ …÷øSS ˆ²ñÿ÷ø÷ø‚ø÷uÿc÷c÷c‚c÷ ƒÿÿñƒc÷÷‚÷cu„²ÿ²Žø÷ø÷ø÷ø÷ø÷ø÷ø÷ƒ÷ø÷‚ø÷u„ÿñÿ ‚÷c÷c÷ƒc÷÷÷c ‚c÷v„ñ²ÿñŒø÷ø÷ø÷ø÷ø÷ø÷„ø÷ø÷ ‚÷ø ‚÷c÷c÷c÷c „÷c÷÷‚÷÷ ‚÷ø Œø÷ø÷ø÷ø÷ø÷ø÷„ø÷ø÷ƒ÷ø ‚c÷‚÷c÷c÷…c÷÷÷‡cññÿÿ‚÷ø‘ø÷ø÷ø÷ø÷ø÷ø÷øñÿñ ‚÷÷÷c÷„cñÿÿ‚ø÷$…ø÷²ÿ²‚÷c%„ÿñÿ‚ø÷$…ñ²ÿñƒ÷÷%ƒÿÿ„²ÿ².„ñÿñ/„ÿ²ÿ/„ññÿÿ/„ÿ²ÿ/ƒñÿÿ1‚ÿ²U ùlp\ª7€€€€€€€€€ÀÀÀÀÜÀðʦ$I’¶Û$$$$I$m$’$¶$Û$ÿII$IIImI’I¶IÛIÿm$mIm’m¶mÛmÿ’’$’I’m’’’¶’Û’ÿ¶¶$¶I¶m¶’¶¶¶Û¶ÿÛÛ$ÛIÛmÛ’Û¶ÛÛÛÿÿ$ÿIÿmÿ’ÿ¶ÿÛU$UIU’U¶UÛUÿU$U$$U$IU$mU$’U$¶U$ÛU$ÿUIUI$UIIUImUI’UI¶UIÛUIÿUm$UmIUm’Um¶UmÛUmÿU’U’$U’IU’mU’’U’¶U’ÛU’ÿU¶U¶$U¶IU¶mU¶’U¶¶U¶ÛU¶ÿUÛUÛ$UÛIUÛmUÛ’UÛ¶UÛÛUÛÿUÿUÿ$UÿIUÿmUÿ’Uÿ¶UÿÛUÿÿªª$ªIªmª’ª¶ªÛªÿª$ª$$ª$Iª$mª$’ª$¶ª$Ûª$ÿªIªI$ªIIªImªI’ªI¶ªIÛªIÿªmªm$ªmIªmmªm’ªm¶ªmÛªmÿª’ª’$ª’Iª’mª’¶ª’Ûª’ÿª¶ª¶$ª¶Iª¶mª¶’ª¶Ûª¶ÿªÛªÛ$ªÛIªÛmªÛ’ªÛÛªÛÿªÿªÿ$ªÿIªÿmªÿ’ªÿ¶ªÿÛªÿÿÿ$ÿIÿmÿ’ÿÿ¶ÿÛÿ$ÿ$$ÿ$Iÿ$mÿÿÿ$’ÿ$¶ÿ$Ûÿ$ÿÿIÿI$ÿIIÿImÿI’ÿI¶ÿIÛÿIÿÿmÿm$ÿmIÿmmÿm’ÿm¶ÿmÛÿmÿÿ’ÿ’$ÿ’Iÿ’mÿ’’ÿ’¶ÿ’Ûÿ’ÿÿ¶ÿ¶$ÿ¶Iÿ¶mÿ¶¶ÿ¶Ûÿ¶ÿÿÛÿÛ$ÿÛIÿÛmÿÛ’ÿÛ¶ÿÛÛÿÿ$ÿÿIÿÿmÿÿ’ðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿ,ƒññÿ/‡²ÿ²ÿ²ÿ+†ññÿÿñÿ*‰²ÿ²ÿñÿ²*„ñÿñÿ‚ñÿ*ˆ²²ÿ²ÿ²ÿ*‰ñèÿñÿÿ*‚ñÿ-…÷c÷.ƒø÷ø/ƒc÷÷0ƒ÷ø÷0ƒ÷÷c0ƒ÷ø÷/ƒ÷c÷0ƒø÷ø0÷0ƒø÷ø0ƒ÷c÷/ƒ÷ø÷0ƒc÷÷0ƒ÷ø÷0ƒ÷÷c/ƒø÷ø0ƒ÷c÷-‚²ÿñ-ÿ‚²ñŠ÷÷÷÷÷ƒ²ñ‚ñ²ÿƒ²ñSˆñ²ñññÿ‚²÷÷÷‘÷ñ²ñ²ñ²ñøSèè“èñ²ñ²ñ²ñ²ñ²ñ²ññ²ñS ˜øSøøñ²ññ²ñññññ²ñŽšøšøšøšøšøšøšc÷‘ø÷²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷ šøšøšøœšc÷c÷c÷c÷ø÷ø÷ññññ²c÷c÷c —÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷÷÷÷†øñ²ñ²ñ÷•ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷c÷c÷•c÷c÷c÷c÷ø÷ø÷c÷c÷c÷c÷cžø÷c÷ø÷c÷ø÷c÷ø÷÷÷÷÷÷÷÷÷…SS÷÷c÷ø÷ø÷ø÷ø÷ø÷ø÷÷ñ÷÷÷÷c÷c÷…c÷c÷cSŠ÷c÷c÷c÷c÷èèè‰è²ñ²ñ²è÷÷÷÷÷SøSøS ÷~™ñ²ññ²ññ÷÷÷÷÷÷÷øSøS‡c÷c÷c÷cƒèèèè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷†SšSøSøS÷J÷÷ ÷ñññññññññ÷÷øSøSøSøSƒcèè¦è²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñøšøšøøSšSøSø˜ñ²ññ²ññ²ññ²ññ²ññc÷cøˆSøSøSøSS‚èèè˜ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷‰øšøøSšSøS÷÷¦÷ñññññññññññø÷c÷ø÷cøSøSøSøèè—èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ ÷…øšøšø ñ²ññ²ññ²ññ²ññ²ñ÷c÷c÷c÷c÷c÷cø‚èèè”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷c÷c÷øƒ÷÷¦÷ññññññññññc÷c÷c÷c÷c÷c÷c÷ø÷ƒèè–èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷÷÷÷¢ñ²ññ²ññ²ññ²ññ²÷c÷c÷c÷c÷c÷c÷c÷c ”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñc÷c÷c÷„c÷÷®÷÷÷÷÷÷ñññññññññø÷c÷ø÷c÷c÷c÷c÷c÷ƒèè”èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷÷÷Ÿñññññññññc÷c÷c÷c÷c÷c÷c÷ ”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷c÷c÷cª÷÷÷÷÷ñ²ñ²ñ²ñ²÷ø÷c÷ø÷c÷ø÷c÷øž÷÷÷÷÷ññ²ñ²ñ²ñ²ñ²ñ²ñ²ñc ÷‹c÷c÷c÷c÷c÷c›ñ²ñññññø÷c÷ø÷c÷ø÷c÷c÷ ÷c÷c÷‚èŒñññññ²ñ²÷c÷c÷‚c÷ ƒøøšø÷ø†÷c÷÷ ²÷ø÷ø÷ø÷ø÷ø÷ø÷ øSøS„øSšø÷…÷èˆèèñø÷ø÷c÷ƒc÷÷ S SSc÷c÷÷÷÷÷šøšø÷ø÷ø÷ø÷c †SøSèŸè²ñ²ñ²SS÷c÷÷÷÷øšøšø÷ø÷c÷÷ ƒSS÷÷œ÷ñññññSS÷c÷cøSøSøøšø÷ø÷èèœè²ñ²ñ²ñ²ñ²ñ²ñ²ñSøSøSšøšø÷ø÷ø‚÷™÷ññ²ññ²ññ²ñ÷cSSSøSø‚èè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷÷SSøSøSš/„ÿ²ÿ]÷œ÷ñññññññc÷c÷c÷c÷SSSSø.„ñÿÿñÿñYèŽè²ñ²ñ²ñ²ñ²ñ²ñ² ÷„øSøS.‰ñÿ²ÿñÿ²ÿñX‚÷š÷ññ²ññ²ññ²÷c÷c÷c÷c÷c÷S-ƒÿñÿƒñÿÿY‚èè²ñ²ñ²ñ²ñ²ñ²ñc÷c÷†c÷SøSø.Š²²ÿ²ÿ²ÿ²ÿøX÷–÷ññññññ÷c÷ø÷c÷ø÷S.ÿñÿñ÷‚c÷UƒèŒè²ñ²ñ²ñ²ñ²ñ² ÷3’ÿñÿ²ÿñÿ²÷ø÷ø÷ø÷ø÷øQ÷—÷ññ²ññ²ññc÷c÷c÷c÷c4ƒñÿ…ñÿc÷c÷c÷M²ñ²ñ²ñ²ñ²ñ÷÷c÷„c÷÷8„ÿ²Œ÷ø÷ø÷ø÷ø÷ø÷øIƒ÷”÷ñññññ÷ø÷c÷ø÷c÷Gƒ÷÷c÷c÷‚c÷Eƒè‹è²ñ²ñ²ñ²ñ²ñ÷LŒ÷ø÷ø÷ø÷ø÷ø÷øA÷”÷²ññ²ññ²ñc÷c÷c÷c÷Qc÷c÷ƒc÷÷>Šñ²ñ²ñ²ñ²ñ²÷c÷cU‹÷ø÷ø÷ø÷ø÷ø÷;‚÷ñññññc÷ø÷c÷øZƒ÷÷c÷c÷c7‚è‰ñ²ñ²ñ²ñ²ñ÷J]Œø÷ø÷ø÷ø÷ø÷ø÷3’÷²ññ²ññ²÷c÷c÷c÷b‚÷c÷c÷ƒc÷÷/Šñ²ñ²ñ²ñ²÷c÷‚c÷gŒø÷ø÷ø÷ø÷ø÷ø÷+‚÷Žññññø÷c÷ø÷ck÷c÷c÷c'‚èˆñ²ñ²ñ²ñ²÷pŒø÷ø÷ø÷ø÷ø÷ø÷#÷²ññ²ñ÷c÷ø÷cu‚÷c÷c÷ƒc÷÷Šñ²ñ²ñ²ñ÷÷c÷yŒø÷ø÷ø÷ø÷ø÷ø÷‘÷÷ññññ÷ø÷c÷~÷c÷c÷cè²ñ²ñ²ñ²÷c÷‹ø÷ø÷ø÷ø÷ø÷ø÷ññññø÷c÷ø‚÷c÷c÷‚c÷‡²ñ²ñ²ñ²÷‚c÷ ‹ø÷ø÷ø÷ø÷ø÷ø ‘÷÷÷ñ²ññø÷ø÷cc÷c÷c÷è²ñ²ñ²ñ÷÷c÷÷ ƒÿ²Œ÷ø÷ø÷ø÷ø÷ø÷ø÷Œ÷ñññ÷ø÷c÷ ‚ññÿñ ƒ÷÷c÷c÷cˆñ²ñ²ñ²ñc÷(†ññÿZª²ÿ²÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷÷ñ²ñø÷ø÷ø(Š²²ÿ²ÿ²V…ñÿÿc÷c÷c÷c÷c÷c÷÷èñ²ñ²ñ²÷c÷c%‡ññÿñÿƒñÿÿSòñÿ²÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷÷ñññø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ñ²ñ²ÿñÿ²ÿñÿT‚ÿc÷SøSøS÷²ñ²ñ²÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷…ñññÿñÿñlSµøSøø÷øšø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷‹²ÿ²ÿ²ÿ²ÿ²ÿkŒSøSøSøø÷ø÷ø÷S‚÷c÷c÷ƒc÷÷‚÷c÷c÷c÷‰cñññÿÿñÿ‚ñÿkS‚øšø†šøSS‹÷ø÷ø÷ø÷ø÷ø÷ñ²ÿ²ÿñÿ²ÿñjSŽøøšøšøšøšJSSS÷c÷c÷c†ññññÿñÿi‰SSSSøSøˆSøøSSS Œø÷ø÷ø÷ø÷ø÷ø÷Š²²ÿ²ÿ²ÿ²ÿ²fƒJSJSøSšøšøšøšøSJSS ‚÷c÷c÷ƒc÷÷èÿ‚ñÿdšJJSSøSøSøSøSøSøSSŒø÷ø÷ø÷ø÷ø÷ø÷‚cœèJJJSJSSøSøSøSøSšøSSS÷c÷c÷cu÷‰JSSSSŠSSøJJJŒø÷ø÷ø÷ø÷ø÷ø÷qèˆèñ²ñJS S…JS‚÷c÷c÷ƒc÷÷mš ”ñ²ññ²JJSSJJJŒø÷ø÷ø÷ø÷ø÷ø÷j…÷ø÷ø÷–ñ²ñ²ñ²ñ²ñ²ñ²SSJJJ"÷c÷c÷i…ø÷ø÷c÷”ññññññ÷J&‹ø÷ø÷ø÷ø÷ø÷øf”ø÷ø÷÷÷÷÷ñ²ñ²ñ²ñ²ñ÷„JJ(‚÷c÷c÷‚c÷c‰ø÷ø÷c÷÷c÷c÷²ññc÷c÷c÷c÷c÷+Œ÷ø÷ø÷ø÷ø÷ø÷ø_÷‡÷÷÷÷„÷÷c÷c÷‚c÷.c÷c÷c÷[œ÷÷÷²c÷c÷c÷c÷c÷ø÷ø÷ø÷c÷c÷3“÷ø÷ø÷ø÷ø÷ø÷ø²²ÿP‚÷Š÷ñ²ññ²ñ÷÷‡ø÷øšøš÷7ƒ÷÷c÷c÷…cñÿñÿO’÷Sñ²ñ²÷ø÷ø÷øS>Ž÷ø÷ø÷ø÷ñ²ÿñÿ²O‚÷Žšøñññø÷c÷ø÷E…c÷÷ñÿ‚ñÿO“÷÷²ñ²ø÷ø÷ø÷øG‰²²ÿ²ÿ²N‚èˆñ²ññ²ñø÷S÷GˆññÿÿñÿÿO‘÷÷ñññ÷ø÷ø÷N„ÿñÿO‘÷÷÷ññ²ññc÷ø÷c"…÷c÷c÷ˆñ²ø÷ø÷ø"÷‰ñññ÷ø÷"…c÷c÷c…øšø÷ø!c÷‚c÷è…šøšø÷ ‰ø÷c÷ø÷÷ø ÷ƒè‡èšø÷øšˆ÷c÷c÷c÷ø‚šøƒ÷÷c÷è…šøšøš‡c÷ø÷c÷ø÷÷øƒ÷÷c÷‚cèè‡èøšøšøšŠ÷ø÷c÷ø÷÷ƒ÷ø‚÷c÷ƒc÷÷ †øšøšøš‘ø÷ø÷ø÷ø÷÷÷÷÷øƒSøøc÷c÷‚èè‡èøšøšøšˆ÷c÷ø÷c÷ø÷…÷øSø‚Sø÷c÷c ‡øšøšøšø“c÷ø÷c÷ø÷÷÷÷÷÷÷øSø ÷ƒè舚øšøšøšøŠ÷ø÷c÷ø÷c÷÷‚÷ø‚Sø÷c÷ ˆšøšøšøšø‚÷ø÷÷÷SøSø…÷÷÷èè舚øšøšøšø‰ø÷÷÷÷÷‚÷ø–÷øšø÷÷÷÷÷øšøšøšø‚øšø÷ø÷c÷c÷c÷c÷ø÷øˆø÷ø÷ø÷÷‰ø÷c÷ø÷øšø!ƒø÷c÷„c÷SøS&÷ø÷÷øSøSø'ƒ÷²†÷SøSøS&‚ñÿ÷+‚ÿ²ÿƒ²²c(ŠJSSJSÿ(‹JSSJ&…÷SS†SJSJ%÷÷SSS#‘÷÷ññSSJJ"÷c÷ñ²ñ²÷ø÷$÷Œñññ÷ø÷c÷ø%÷²ñ²ñø÷ø÷ø&šñÿÿññ÷ø÷ø÷%ŽøSøøÿñÿ²÷ø÷ø&‚ññ÷ƒøS+²ÿ„²ÿSS*ÿƒññ÷*‰²ÿñÿññ÷*²ÿ‚²ñ+‚ñ²ÿƒ²ñ*‚²ÿ‚²*‰ññÿ²ÿ²ñc*‚ññÿ‚ñ+ˆ²ÿñÿñÿ²+‚ÿñÿƒññ-†ø÷²ñ÷-ƒ÷c÷0ƒø÷ø/ƒc÷÷0ƒ÷ø÷0ƒ÷÷c0ƒ÷ø÷/ƒ÷c÷0ƒø÷ø0÷0ƒø÷ø0ƒ÷c÷/ƒ÷ø÷0ƒc÷÷0ƒ÷ø÷0ƒ÷÷c/ƒø÷ø0ƒ÷c÷0ƒø÷ø-ƒ÷÷,‡²ø÷ø÷ø,†ññÿ÷c÷*‰²ÿ²ÿñÿ²*„ñÿñÿ‚ñÿ*‰²²ÿ²ÿ²ÿ²)ƒñÿñÿ)‰ñ²ñÿ²ÿñÿ+„ñÿÿñÿñ-†²ÿ²ÿ²ÿ©   lpbø8€€€€€€€€€ÀÀÀÀÜÀðʦ$I’¶Û$$$$I$m$’$¶$Û$ÿII$IIImI’I¶IÛIÿm$mIm’m¶mÛmÿ’’$’I’m’’’¶’Û’ÿ¶¶$¶I¶m¶’¶¶¶Û¶ÿÛÛ$ÛIÛmÛ’Û¶ÛÛÛÿÿ$ÿIÿmÿ’ÿ¶ÿÛU$UIU’U¶UÛUÿU$U$$U$IU$mU$’U$¶U$ÛU$ÿUIUI$UIIUImUI’UI¶UIÛUIÿUm$UmIUm’Um¶UmÛUmÿU’U’$U’IU’mU’’U’¶U’ÛU’ÿU¶U¶$U¶IU¶mU¶’U¶¶U¶ÛU¶ÿUÛUÛ$UÛIUÛmUÛ’UÛ¶UÛÛUÛÿUÿUÿ$UÿIUÿmUÿ’Uÿ¶UÿÛUÿÿªª$ªIªmª’ª¶ªÛªÿª$ª$$ª$Iª$mª$’ª$¶ª$Ûª$ÿªIªI$ªIIªImªI’ªI¶ªIÛªIÿªmªm$ªmIªmmªm’ªm¶ªmÛªmÿª’ª’$ª’Iª’mª’¶ª’Ûª’ÿª¶ª¶$ª¶Iª¶mª¶’ª¶Ûª¶ÿªÛªÛ$ªÛIªÛmªÛ’ªÛÛªÛÿªÿªÿ$ªÿIªÿmªÿ’ªÿ¶ªÿÛªÿÿÿ$ÿIÿmÿ’ÿÿ¶ÿÛÿ$ÿ$$ÿ$Iÿ$mÿÿÿ$’ÿ$¶ÿ$Ûÿ$ÿÿIÿI$ÿIIÿImÿI’ÿI¶ÿIÛÿIÿÿmÿm$ÿmIÿmmÿm’ÿm¶ÿmÛÿmÿÿ’ÿ’$ÿ’Iÿ’mÿ’’ÿ’¶ÿ’Ûÿ’ÿÿ¶ÿ¶$ÿ¶Iÿ¶mÿ¶¶ÿ¶Ûÿ¶ÿÿÛÿÛ$ÿÛIÿÛmÿÛ’ÿÛ¶ÿÛÛÿÿ$ÿÿIÿÿmÿÿ’ðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿ)ù0 ù+ù& ù‚ ù!ù‚ù ùùù ùù…÷÷ù‚÷ƒ²ñùùSùŠñ²ñññùù÷‚÷ù÷ñ²ñ²ñ²ù ùS‚èù‘èñ²ñ²ñ²ñ²ñ²ñ²ññ ùùSù•øSøøñ²ññ²ñññññ² ùù…šøšøšù†šøšøšc÷’ø÷²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷ ù~ ùšø‚šøùø›šc÷c÷c÷c÷ø÷ø÷ññññ²c÷c÷ ù{ù‚ù‡÷ø÷ø÷ø÷ù÷ø÷ø÷÷÷÷÷†øñ²ñ²ñ÷ùxùˆùùø÷ø÷ø÷ùŒ÷ø÷ø÷÷c÷c÷–c÷c÷c÷c÷ø÷ø÷c÷c÷c÷c÷cùuù‡ø÷c÷ø÷cù”c÷ø÷÷÷÷÷÷÷÷÷…SS÷÷c÷ùrùˆø÷ø÷ø÷ø÷ù’÷÷ñ÷÷÷÷c÷c÷…c÷c÷cSŠ÷c÷c÷c÷c÷ ùoùèèùŠè²ñ²ñ²è÷÷÷÷÷SøSøS ÷ùlùù™ñ²ññ²ññ÷÷÷÷÷÷÷øSøS‡c÷c÷c÷cùkùƒèèùèè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷†SšSøSøS÷J ùkùƒ÷ù¢÷ñññññññññ÷÷øSøSøSøS„c ùkùƒèù¨è²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñøšøšøøSšSøSø ùùjù ù˜ñ²ññ²ññ²ññ²ññ²ññc÷cøˆSøSøSøSSùùjù ‚èù‚è˜ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷‹øšøøSšSøSùù ùkù ‚÷ù¦÷ñññññññññññø÷c÷ø÷cøSøSøSø ùkù ‚èù—èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ ÷…øšøšø ùjù ù ñ²ññ²ññ²ññ²ññ²ñ÷c÷c÷c÷c÷c÷cø ùjù „èùƒè”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷c÷c÷ø ùkù ƒ÷ù÷¦÷ññññññññññc÷c÷c÷c÷c÷c÷c÷ø÷ ùkù ƒèùè–èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷ ùkù ƒ÷ùƒ÷¢ñ²ññ²ññ²ññ²ññ²÷c÷c÷c÷c÷c÷c÷c÷c ùjù ù”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñc÷c÷c÷„c÷÷ ùjù ‚÷ù©÷÷÷ñññññññññø÷c÷ø÷c÷c÷c÷c÷c÷ ùkù ‚ù‚è”èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷ ùkù ù÷Ÿñññññññññc÷c÷c÷c÷c÷c÷c÷ ùjùù”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷c÷c÷c ùjùù§÷÷÷÷ñ²ñ²ñ²ñ²÷ø÷c÷ø÷c÷ø÷c÷øùjù ùš÷÷÷ññ²ñ²ñ²ñ²ñ²ñ²ñ²ñc ÷ ùkù cù‡c÷c÷c÷c›ñ²ñññññø÷c÷ø÷c÷ø÷c÷c÷ùjù÷ù÷c÷‚èŒñññññ²ñ²÷c÷c÷‚c÷ùjù øùƒøø÷ø†÷c÷÷ ²÷ø÷ø÷ø÷ø÷ø÷ø÷ùjù ‚øSùS„øSšø÷…÷èˆèèñø÷ø÷c÷ƒc÷÷ùjù ‚SSùSSc÷c÷÷÷÷÷šøšø÷ø÷ø÷ø÷cùjùSù‚èŸè²ñ²ñ²SS÷c÷÷÷÷øšøšø÷ø÷c÷÷ùjùù÷œ÷ñññññSS÷c÷cøSøSøøšø÷ø÷ùjùùèèœè²ñ²ñ²ñ²ñ²ñ²ñ²ñSøSøSšøšø÷ø÷øùjùùƒ÷™÷ññ²ññ²ññ²ñ÷cSSSøSøùjùùƒèè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷÷SSøSøSšùjùù÷œ÷ñññññññc÷c÷c÷c÷SSSSøùjùù‚èŽè²ñ²ñ²ñ²ñ²ñ²ñ² ÷„øSøSùjùù„÷š÷ññ²ññ²ññ²÷c÷c÷c÷c÷c÷Sùjùù„èè²ñ²ñ²ñ²ñ²ñ²ñc÷c÷†c÷SøSøùjùù‚÷–÷ññññññ÷c÷ø÷c÷ø÷SùjùùƒèŒè²ñ²ñ²ñ²ñ²ñ² ÷ùjùù÷˜÷ññ²ññ²ññc÷c÷c÷c÷cùùjùù²ñ²ñ²ñ²ñ²ñ÷÷c÷…c÷÷ùùiùùƒ÷–÷ñññññ÷ø÷c÷ø÷c÷ùùùjùùƒè‹è²ñ²ñ²ñ²ñ²ñ÷‚ùùùjùù÷—÷²ññ²ññ²ñc÷c÷c÷c÷ùùùjùùŠñ²ñ²ñ²ñ²ñ²÷c÷cùùiùù‚÷‘ñññññc÷ø÷c÷øùùiùù‚è‰ñ²ñ²ñ²ñ²ñ÷Jùùjùù“÷²ññ²ññ²÷c÷c÷c÷ùùjùùŠñ²ñ²ñ²ñ²÷c÷„c÷ùùiùù‚÷ññññø÷c÷ø÷cùùiùù‚èˆñ²ñ²ñ²ñ²÷ùùiùù÷²ññ²ñ÷c÷ø÷cùùjùùŠñ²ñ²ñ²ñ÷÷c÷ùùjùù‘÷÷ññññ÷ø÷c÷ùùiùùè²ñ²ñ²ñ²÷c÷ùùiùù÷ññññø÷c÷øùùjùù‡²ñ²ñ²ñ²÷‚c÷ùùjùù‘÷÷÷ñ²ññø÷ø÷cùùiùùè²ñ²ñ²ñ÷÷c÷÷ùùiùù÷Œ÷ñññ÷ø÷c÷ùùiùù ˆñ²ñ²ñ²ñc÷ùùjùù ÷÷ñ²ñø÷ø÷øùùiùù Šèñ²ñ²ñ²÷‚c÷ùùiùù Ž÷÷ñññc÷ø÷ùùiùù SøSøS÷²ñ²ñ²÷c÷÷ùùiùùSŒøSøø÷øšø÷ø÷øùùiùùŒSøSøSøø÷ø÷ø÷S÷ùùiùùS‚øšø†šøSSùùiùùSŽøøšøšøšøšJSSSùùiùù‰SSSSøSøˆSøøSSSùùiùù…JSJSøSšøšøšøšøSJSSùùiùùšJJSSøSøSøSøSøSøSSùùiùùšJJJSJSSøSøSøSøSšøSSSùùiùùƒ÷‰JSSSSŒSSøJJJùùiùùƒèˆèñ²ñJS S†JSùùiùù ”ñ²ññ²JJSSJJJùùiùù…÷ø÷ø÷˜ñ²ñ²ñ²ñ²ñ²ñ²SSJJJùùùiùù…ø÷ø÷c÷–ññññññ÷Jùùiùù”ø÷ø÷÷÷÷÷ñ²ñ²ñ²ñ²ñ÷„JJùhùù‰ø÷ø÷c÷÷c÷c÷²ññc÷c÷c÷c÷c÷ùiùù÷‡÷÷÷÷„÷÷c÷c÷‚c÷ùiùùœ÷÷÷²c÷c÷c÷c÷c÷ø÷ø÷ø÷c÷c÷ùiùù‚÷Š÷ñ²ññ²ñ÷÷‡ø÷øšøš÷ùhùù’÷Sñ²ñ²÷ø÷ø÷ø‚Sùùhùù‚÷šøñññø÷c÷ø÷ùùiùù•÷÷²ñ²ø÷ø÷ø÷øùùiùù‚èˆñ²ññ²ñø÷S÷‚ùùiùù‘÷÷ñññ÷ø÷ø÷ùùhùù‘÷÷÷ññ²ññc÷ø÷cùùhùù…÷c÷c÷ˆñ²ø÷ø÷øùùiùù÷‰ñññ÷ø÷ùùiùù…c÷c÷c…øšø÷øùùhùùc÷‚c÷è…šøšø÷ùùhùù‰ø÷c÷ø÷÷øùùiùù÷ƒè‡èšø÷øšùùiùùˆ÷c÷c÷c÷ø‚šøùùhùùƒ÷÷c÷è…šøšøšùùhùù‡c÷ø÷c÷ø÷÷øùùhùùƒ÷÷c÷‚cèè‡èøšøšøšùùiùùŠ÷ø÷c÷ø÷÷ƒ÷øùùhùù‚÷c÷ƒc÷÷ †øšøšøšùùhùù‘ø÷ø÷ø÷ø÷÷÷÷÷ø…Søøùùhùùc÷c÷‚èè‰èøšøšøšùùhùùˆ÷c÷ø÷c÷ø÷…÷øSøƒSøùùiùù÷c÷c ˆøšøšøšøùùhùù“c÷ø÷c÷ø÷÷÷÷÷÷÷øSøùùhùù‚ ÷ƒè舚øšøšøšøùùhùùŒ÷ø÷c÷ø÷c÷÷‚÷ø‚Søùùhùù÷c÷ ˆšøšøšøšøùùhùù‚÷ø÷÷÷SøSøùùhùù…÷÷÷èè芚øšøšøšøùùùhùù‰ø÷÷÷÷÷‚÷ø‚ùùùhùù ˜÷øšø÷÷÷÷÷øšøšøšøùùùgùù ‚øšø÷ø÷c÷c÷c÷c÷ø÷ø‚ùùùhùùˆø÷ø÷ø÷÷Šø÷c÷ø÷øšøùùhùù ƒø÷c÷„c÷SøSùùhùù ÷ø÷÷øSøSøùùgùù ƒ÷²†÷SøSøSùùhùù„ñ÷ ùùhùù ‡JSñc÷ ùùhù ù ‰JSSJSJ ùùi ùù ‹JSSJ ùùiù…÷SS†SJSJùùlù÷÷SSSùùmùù‘÷÷ññSSJJùùnù ù÷c÷ñ²ñ²÷ø÷ùùpùùù÷Œñññ÷ø÷c÷øùùqùù Žù÷²ñ²ñø÷ø÷øù‚ùùtù‚ù šø‰ññ÷ø÷ø÷ùùuùù ŽøSøø÷ø÷S÷ø÷ø ùùwù÷ƒøSSùùx ù ‚SS ùùyùùù}ùù ùùù ù ù ùùùùùù‚ùùùù#ù)ù/ù%™##lp`Ø>€€€€€€€€€ÀÀÀÀÜÀðʦ$I’¶Û$$$$I$m$’$¶$Û$ÿII$IIImI’I¶IÛIÿm$mIm’m¶mÛmÿ’’$’I’m’’’¶’Û’ÿ¶¶$¶I¶m¶’¶¶¶Û¶ÿÛÛ$ÛIÛmÛ’Û¶ÛÛÛÿÿ$ÿIÿmÿ’ÿ¶ÿÛU$UIU’U¶UÛUÿU$U$$U$IU$mU$’U$¶U$ÛU$ÿUIUI$UIIUImUI’UI¶UIÛUIÿUm$UmIUm’Um¶UmÛUmÿU’U’$U’IU’mU’’U’¶U’ÛU’ÿU¶U¶$U¶IU¶mU¶’U¶¶U¶ÛU¶ÿUÛUÛ$UÛIUÛmUÛ’UÛ¶UÛÛUÛÿUÿUÿ$UÿIUÿmUÿ’Uÿ¶UÿÛUÿÿªª$ªIªmª’ª¶ªÛªÿª$ª$$ª$Iª$mª$’ª$¶ª$Ûª$ÿªIªI$ªIIªImªI’ªI¶ªIÛªIÿªmªm$ªmIªmmªm’ªm¶ªmÛªmÿª’ª’$ª’Iª’mª’¶ª’Ûª’ÿª¶ª¶$ª¶Iª¶mª¶’ª¶Ûª¶ÿªÛªÛ$ªÛIªÛmªÛ’ªÛÛªÛÿªÿªÿ$ªÿIªÿmªÿ’ªÿ¶ªÿÛªÿÿÿ$ÿIÿmÿ’ÿÿ¶ÿÛÿ$ÿ$$ÿ$Iÿ$mÿÿÿ$’ÿ$¶ÿ$Ûÿ$ÿÿIÿI$ÿIIÿImÿI’ÿI¶ÿIÛÿIÿÿmÿm$ÿmIÿmmÿm’ÿm¶ÿmÛÿmÿÿ’ÿ’$ÿ’Iÿ’mÿ’’ÿ’¶ÿ’Ûÿ’ÿÿ¶ÿ¶$ÿ¶Iÿ¶mÿ¶¶ÿ¶Ûÿ¶ÿÿÛÿÛ$ÿÛIÿÛmÿÛ’ÿÛ¶ÿÛÛÿÿ$ÿÿIÿÿmÿÿ’ðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿ6…Sú=,ŠS-5ú5ú5ú'J6-p-=5xú=5xú="ƒJ-5-Ž5ú5ú5ú5ú5S‘p-6-p-6xú=5xú=5ƒJS•S-5-5-5-5-J5ú5ú5ú5ú²ƒS›J6-p-6-p-6-pJ=5xú=5xúñ²ññ‚JSƒJ-5-5-5-™S5ú5ú5ú5ú²ñ²ñ²JS ¬p-6-p-6-p-6-p-è=5xú=5ñ²ñ²ñ²ñ²ñ²ññ²ñ5xúS‘-5-5-5-5-5-5-5›øSú5ñ²ññ²ñññññú5ú5ú5S™-p-6-p-6-p-6-šøšøSøšøšøšc÷˜ø÷²ñ²ñ²ñ²ñ²ñ²ñú=5xú=5xJS~ƒ--5-5-šø©šøøøšøøšc÷c÷c÷c÷ø÷ø÷ñññú5ú5ú5ú5JS{ -6-p-6-pJ÷ø÷ø÷ø÷øS÷÷ø÷ø÷÷÷÷÷‹øñ²=5xú=5xú÷ƒSJSw‡5-5-5-•ø÷ø÷ø÷øS÷ø÷ø÷ø÷c÷c÷•c÷c÷c÷c÷5ú5ú5ú5úc÷c÷c‚Ju…6-p-6žø÷c÷ø÷c÷ø÷c÷ø÷÷÷÷÷÷÷÷ˆxú=5xú=5÷ƒSJr-ø÷ø÷ø÷ø÷øJ÷ø÷ñ÷÷÷÷c÷c÷’c÷cú5ú5ú5ú÷÷c÷c÷c÷ƒúopèè‚èJ†²ñ²ñ²è÷÷÷÷÷S=5xú ÷…ú=5xJkJ™ñ²ññ²ññ÷÷÷÷÷÷÷øSøS‡c÷c÷c÷cˆ5ú5ú5ú5JiJƒèƒèSè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷†SšSøSøS÷Jˆ=5xú=5xúiS ÷ ÷ñññññññññ÷÷øSøSøSøSƒcˆ5ú5ú5ú5Si èS´è²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñøšøšøøSšSøSøSJSxú=5xú=h ˜ñ²ññ²ññ²ññ²ññ²ññc÷cøŠSøSøSøSSJ‰ú5ú5ú5ú5JhS ‚è…èJè˜ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷‰øšøøSšSøSˆú=5xú=5xi …÷S÷¦÷ñññññññññññø÷c÷ø÷cøSøSøSø…5ú5ú5iS …èè—èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ ÷…øšøšø ‚úShS J ñ²ññ²ññ²ññ²ññ²ñ÷c÷c÷c÷c÷c÷cø h ‚è‚Sè—èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷c÷c÷ø iJ °÷÷÷ññññññññññc÷c÷c÷c÷c÷c÷c÷ø÷ JiJ  èSèèñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷ JiS ÷…÷÷¢ñ²ññ²ññ²ññ²ññ²÷c÷c÷c÷c÷c÷c÷c÷c ShS S”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñc÷c÷c÷„c÷÷ h ®÷÷J÷÷÷ñññññññññø÷c÷ø÷c÷c÷c÷c÷c÷ iS ‡èJè”èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷ Si…S÷÷Ÿñññññññññc÷c÷c÷c÷c÷c÷c÷hJƒ”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷c÷c÷cShS‰÷÷÷÷žñ²ñ²ñ²ñ²÷ø÷c÷ø÷c÷ø÷c÷øhž÷S÷÷÷÷ññ²ñ²ñ²ñ²ñ²ñ²ñ²ñc ÷iJ‹c÷cc÷c÷c÷c›ñ²ñññññø÷c÷ø÷c÷ø÷c÷c÷JhS…÷÷S÷c÷…c÷÷èŒñññññ²ñ²÷c÷c÷‚c÷Jh‡øøSšøø÷ø†÷c÷÷ ²÷ø÷ø÷ø÷ø÷ø÷ø÷ShS †øSSSøSƒøšø÷…÷èˆèèñø÷ø÷c÷ƒc÷÷h SJ SSc÷c÷÷÷÷÷šøšø÷ø÷ø÷ø÷ch†SøJèŸè²ñ²ñ²SS÷c÷÷÷÷øšøšø÷ø÷c÷÷ShJƒSS÷÷œ÷ñññññSS÷c÷cøSøSøøšø÷ø÷hJƒSèèœè²ñ²ñ²ñ²ñ²ñ²ñ²ñSøSøSšøšø÷ø÷øShS…÷™÷ññ²ññ²ññ²ñ÷cSSSøSøShS…Sèè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷÷SSøSøSšhƒ÷œ÷ñññññññc÷c÷c÷c÷SSSSøJhSJèŽè²ñ²ñ²ñ²ñ²ñ²ñ² ÷„øSøSJhS‚÷š÷ññ²ññ²ññ²÷c÷c÷c÷c÷c÷SShS‚èè²ñ²ñ²ñ²ñ²ñ²ñc÷c÷†c÷SøSøShSJ÷–÷ññññññ÷c÷ø÷c÷ø÷ShSƒèŒè²ñ²ñ²ñ²ñ²ñ² ÷ShJ÷—÷ññ²ññ²ññc÷c÷c÷c÷chJS²ñ²ñ²ñ²ñ²ñ÷÷c÷„c÷÷Sgƒ÷•÷ñññññ÷ø÷c÷ø÷c÷ShSSƒè‹è²ñ²ñ²ñ²ñ²ñ÷hJ÷–÷²ññ²ññ²ñc÷c÷c÷c÷JJhSJŠñ²ñ²ñ²ñ²ñ²÷c÷ƒcJJgJS‚÷“ñññññc÷ø÷c÷øSSgJ‚è‰ñ²ñ²ñ²ñ²ñ÷ƒJSShS•÷²ññ²ññ²÷c÷c÷c÷hSŠñ²ñ²ñ²ñ²÷c÷‚c÷SSg‚÷Žññññø÷c÷ø÷cgSS‚èˆñ²ñ²ñ²ñ²÷SSgS ÷²ññ²ñ÷c÷ø÷cSShS Šñ²ñ²ñ²ñ÷÷c÷h-5-…--5-…5-J5ú‘÷÷ññññ÷ø÷c÷JJg™p-6-p-6-6-p-6-pJ=5xú=5è²ñ²ñ²ñ²÷c÷JJgœJ-5-5-5--5-5-5-5-S5ú5ú5ú5ú÷ññññø÷c÷øh›-6-p-6-p6-p-6-p-S5xú=5xú=5‡²ñ²ñ²ñ²÷‚c÷SSh5-…5---5-œ5ú5ú5ú5ú5÷÷÷ñ²ññø÷ø÷cg¬S-p-6-p-p-6-p-6-xú=5xú=5xè²ñ²ñ²ñ÷÷c÷÷SSg5-5-5-55-5-5-5-5ú5ú5ú5ú5÷Œ÷ñññ÷ø÷c÷gœp-6-p-6--6-p-6-pJ=5xú=5xú=ˆñ²ñ²ñ²ñc÷JJhšS5ú5ú5ú÷÷ñ²ñø÷ø÷øSSgJŽ=5èñ²ñ²ñ²÷‚c÷gSJ Ž÷÷ñññc÷ø÷JJgS SøSøS÷²ñ²ñ²÷c÷÷JJgJ SŒøSøø÷øšø÷ø÷ø‚ú5gSSŒSøSøSøø÷ø÷ø÷S÷Sˆ5xú=5xSgS‚øšø†šøSSˆú5ú5ú5úgSSSŽøøšøšøšøšJSSSSˆú=5xú=5SgJ‰SSSSøSøˆSøøSSSJ‰5ú5ú5ú5úgSJƒJSJSøSšøšøšøšøSJSSJˆ=5xú=5xúgJœSJJSSøSøSøSøSøSøSSSˆ5ú5ú5ú5úgJœèJJJSJSSøSøSøSøSšøSSSˆxú=5xú=gS÷‰JSSSSŠSSøJJJJ…ú5ú5JgSèˆèñ²ñJS SˆJSSSg‚š –ñ²ññ²JJSSJJJgS‡S÷ø÷ø÷—ñ²ñ²ñ²ñ²ñ²ñ²SSJJJSSgS…ø÷ø÷c÷”ññññññ÷JgS”ø÷ø÷÷÷÷÷ñ²ñ²ñ²ñ²ñ÷„JJSfSJ‰ø÷ø÷c÷÷c÷c÷²ññc÷c÷c÷c÷c÷JgJ÷‡÷÷÷÷„÷÷c÷c÷‚c÷JgJSœ÷÷÷²c÷c÷c÷c÷c÷ø÷ø÷ø÷c÷c÷SgJS‚÷Š÷ñ²ññ²ñ÷÷‡ø÷øšøš÷f ’÷Sñ²ñ²÷ø÷ø÷øSJfSS ‚÷‘šøñññø÷c÷ø÷SSg “÷÷²ñ²ø÷ø÷ø÷øgSJ ‚èˆñ²ññ²ñø÷S÷SSgS ‘÷÷ñññ÷ø÷ø÷SfJ ‘÷÷÷ññ²ññc÷ø÷cSfSJ …÷c÷c÷ˆñ²ø÷ø÷øJJgJ÷‰ñññ÷ø÷JJgJ …c÷c÷c…øšø÷øSSfSSc÷‚c÷è…šøšø÷Sf‰ø÷c÷ø÷÷øgSS÷ƒè‡èšø÷øšSSgJˆ÷c÷c÷c÷ø‚šøfJƒ÷÷c÷è…šøšøšSSfJS‡c÷ø÷c÷ø÷÷øSfJƒ÷÷c÷‚cèè‡èøšøšøšgSŠ÷ø÷c÷ø÷÷ƒ÷øJJfSS‚÷c÷ƒc÷÷ †øšøšøšJJf‘ø÷ø÷ø÷ø÷÷÷÷÷øƒSøøSfSSc÷c÷‚èè‡èøšøšøšSfˆ÷c÷ø÷c÷ø÷…÷øSø…SøgS÷c÷c ŠøšøšøšøSSfSJ“c÷ø÷c÷ø÷÷÷÷÷÷÷øSøƒfJ ÷ƒè芚øšøšøšøJSfJSŠ÷ø÷c÷ø÷c÷÷‚÷ø„SøSfJS÷c÷ Ššøšøšøšøf‚÷ø÷÷÷SøSø‚JJfSS…÷÷÷èè艚øšøšøšøSJf ‰ø÷÷÷÷÷‚÷øSfSJ —÷øšø÷÷÷÷÷øšøšøšøSeJS ‚øšø÷ø÷c÷c÷c÷c÷ø÷øfƒJ6- ˆø÷ø÷ø÷÷Œø÷c÷ø÷øšøSSf„5-5-J ƒø÷c÷„c÷SøSJf†-p-6-p J ÷ø÷÷øSøSøJSe„--5-‚5- ƒ÷²†÷SøSøSSSfŠS-6-p-6-p-S„ñ÷ fŒ-5-5-5-5-5-5‡JSñc÷ JfŽ6-p-6-p-6-p-6-S ‰JSSJSJ SJf„J-5-5-5-ƒJ ‹JSSJ Sh6-p-6-p-6-p-6-pJ …÷SS†SJSJ SSjJ-5-5-5-5-5-5-ú ÷÷SSSk§S-p-6-p-6-p-6xú=5xú÷÷ññSSJJSm‚5-5-›5ú5ú5ú5ú5ú÷c÷ñ²ñ²÷ø÷Jn•S-6-p-6-Sú=5xú=5xú÷Œñññ÷ø÷c÷øJSp5-5-5-5ú5ú5ú5ú5÷²ñ²ñø÷ø÷øSSrSJ6-p-S5xú=5xú=šøññ÷ø÷øxú=5xt-Š5ú5ú5ú5ú5•øSøø÷ø÷S÷ø÷5ú5ú5ú5úJuŒJ6xú=5xú=5x÷ƒøSS‹ú=5xú=5xúSJv‹J5ú5ú5ú5ú5 ‚SSˆú5ú5ú5ú5‚SSy‡SJ=5xúˆ5xú=5xú=‚SJ „5xú=S†SJS ˆú5ú5ú5ú5ˆú5ú5ú5ú5†JSSJS‰xú=5xú=5x‚JSˆú=5xú=5S ŽJSJ5ú5ú5ú5ú5 ‚J‰5ú5ú5ú5ú‡SJ=5xú ‹S=5xú=5xú†SJS ‰S5ú5ú5ú5ú †JSSJSˆxú=5xú=5&JSú5ú5ú5ú5J,‡SJ=5xJ./1&1lpbZ€€€€€€€€€ÀÀÀÀÜÀðʦ$I’¶Û$$$$I$m$’$¶$Û$ÿII$IIImI’I¶IÛIÿm$mIm’m¶mÛmÿ’’$’I’m’’’¶’Û’ÿ¶¶$¶I¶m¶’¶¶¶Û¶ÿÛÛ$ÛIÛmÛ’Û¶ÛÛÛÿÿ$ÿIÿmÿ’ÿ¶ÿÛU$UIU’U¶UÛUÿU$U$$U$IU$mU$’U$¶U$ÛU$ÿUIUI$UIIUImUI’UI¶UIÛUIÿUm$UmIUm’Um¶UmÛUmÿU’U’$U’IU’mU’’U’¶U’ÛU’ÿU¶U¶$U¶IU¶mU¶’U¶¶U¶ÛU¶ÿUÛUÛ$UÛIUÛmUÛ’UÛ¶UÛÛUÛÿUÿUÿ$UÿIUÿmUÿ’Uÿ¶UÿÛUÿÿªª$ªIªmª’ª¶ªÛªÿª$ª$$ª$Iª$mª$’ª$¶ª$Ûª$ÿªIªI$ªIIªImªI’ªI¶ªIÛªIÿªmªm$ªmIªmmªm’ªm¶ªmÛªmÿª’ª’$ª’Iª’mª’¶ª’Ûª’ÿª¶ª¶$ª¶Iª¶mª¶’ª¶Ûª¶ÿªÛªÛ$ªÛIªÛmªÛ’ªÛÛªÛÿªÿªÿ$ªÿIªÿmªÿ’ªÿ¶ªÿÛªÿÿÿ$ÿIÿmÿ’ÿÿ¶ÿÛÿ$ÿ$$ÿ$Iÿ$mÿÿÿ$’ÿ$¶ÿ$Ûÿ$ÿÿIÿI$ÿIIÿImÿI’ÿI¶ÿIÛÿIÿÿmÿm$ÿmIÿmmÿm’ÿm¶ÿmÛÿmÿÿ’ÿ’$ÿ’Iÿ’mÿ’’ÿ’¶ÿ’Ûÿ’ÿÿ¶ÿ¶$ÿ¶Iÿ¶mÿ¶¶ÿ¶Ûÿ¶ÿÿÛÿÛ$ÿÛIÿÛmÿÛ’ÿÛ¶ÿÛÛÿÿ$ÿÿIÿÿmÿÿ’ðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿv‚÷c÷c÷c÷c÷c÷÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷‚÷c÷c÷c÷c÷c÷c÷c÷c÷c÷‚÷c÷cŽ÷ø÷ø÷ø÷ø÷ø÷ø÷ø–ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷‰÷ø÷ø÷ø÷ø÷}÷c÷ƒc÷÷c÷c÷c÷c÷c÷ƒc÷÷y‡÷ø÷c÷ø÷%•÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷c÷ø÷ø÷r÷ƒc÷÷'ƒ÷÷c÷c÷ƒc÷÷‡÷÷÷c÷÷n†c÷c÷ø÷&“ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø‡c÷ø÷ck÷'c÷‚c÷‚÷c÷†c÷÷‚÷÷h…c÷c÷cŠ÷÷÷÷÷ƒ²ñ‚ø÷‹÷ø÷÷ø÷ø÷÷‚÷cf÷SŠñ²ñññ÷÷ ‰c÷÷c÷÷÷‚÷cƒ÷c÷ ÷÷÷÷ñ²ñ²ñ²‰ø÷ø÷ø÷‚caƒ÷!Sèè“èñ²ñ²ñ²ñ²ñ²ñ²ññ²ñ÷…c‚÷^ƒc÷÷#S ˜øSøøñ²ññ²ñññññ²ñŒø÷÷ø÷÷]ƒ÷÷$Žšøšøšøšøšøšøšc÷‘ø÷²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷Ž÷÷c÷c÷÷Zƒ÷c÷%šøšøšø¨šc÷c÷c÷c÷ø÷ø÷ññññ²c÷c÷cø÷ø÷ø÷÷Yƒ÷%—÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷÷÷÷†øñ²ñ²ñ÷‹÷èc÷÷Wƒc÷&•ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷c÷c÷žc÷c÷c÷c÷ø÷ø÷c÷c÷c÷c÷c÷ø÷÷Uƒ÷÷'žø÷c÷ø÷c÷ø÷c÷ø÷÷÷÷÷÷÷÷÷…SS÷÷c÷ƒ÷ƒ÷Sƒ÷c'ø÷ø÷ø÷ø÷ø÷ø÷÷ñ÷÷÷÷c÷c÷…c÷c÷cSŒ÷c÷c÷c÷ø÷ƒ÷÷Qƒ÷÷(èèè‰è²ñ²ñ²è÷÷÷÷÷SøSøS÷„è÷÷‚èPƒ÷÷)™ñ²ññ²ññ÷÷÷÷÷÷÷øSøSc÷c÷cø÷øNƒ÷÷*ƒèèèè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷†SšSøSøS÷‹ñc÷÷÷Lƒ÷÷,÷÷ ÷ñññññññññ÷÷øSøSøSøSƒc‡ø÷÷øJ-èè§è²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñøšøšøøSšSøSøñ‡c÷è÷÷Hƒ÷÷.˜ñ²ññ²ññ²ññ²ññ²ññc÷cøŠSøSøSøSS‡ø÷øF/‚èèè˜ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷‹øšøøSšSøSñ‚ñ‚÷÷Dƒ÷÷0÷÷¨÷ñññññññññññø÷c÷ø÷cøSøSøSø²‚‚÷øB1èè—èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ ÷‡øšøšøñƒñ÷‚÷÷A‚÷2 ñ²ññ²ññ²ññ²ññ²ñ÷c÷c÷c÷c÷c÷cøƒ²„ø÷‚÷ø?‚3‚èèè”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷c÷c÷„øñ‰ñc÷c÷>ƒ÷3„÷÷÷©÷ññññññññññc÷c÷c÷c÷c÷c÷c÷ø÷ñ„²÷ø‚ø÷<ƒè4„÷èè–èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷ƒñ…ñ÷c‚c÷:„÷3ƒø÷÷÷÷¦ñ²ññ²ññ²ññ²ññ²÷c÷c÷c÷c÷c÷c÷c÷c²Š²÷ø÷ø:ƒè4‚÷c ”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñc÷c÷c÷ˆc÷÷²ñ†ñ÷÷‚÷c8ƒ÷4±÷ø÷÷÷÷÷÷ñññññññññø÷c÷ø÷c÷c÷c÷c÷c÷‚ñ‚ñ†ø÷ø÷8ƒè4†c÷èè”èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷‚²ñ‚ñ†÷÷÷÷64‚ø÷÷÷Ÿñññññññññc÷c÷c÷c÷c÷c÷c÷‚ñ‚ñ‚÷ø‚ø÷4ƒè5‚÷÷ ”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷c÷c÷c‚²ñ‚²ñ†÷÷÷÷44‚÷øª÷÷÷÷÷ñ²ñ²ñ²ñ²÷ø÷c÷ø÷c÷ø÷c÷ø‚ñ‚ñ‚ø÷‚÷ø2ƒè5‚÷÷ž÷÷÷÷÷ññ²ñ²ñ²ñ²ñ²ñ²ñ²ñc ÷‚²ñ‚²ñ‚c÷‚÷÷14‚ø÷‹c÷c÷c÷c÷c÷c›ñ²ñññññø÷c÷ø÷c÷ø÷c÷c÷‚ñ²‚ñ†ø÷ø÷0ƒñ5‚÷c÷c÷c÷‚èŒñññññ²ñ²÷c÷c÷‚c÷‚²ñ‚ñ²‚÷c‚c÷.5‚÷øƒøøšø÷ø†÷c÷÷ ²÷ø÷ø÷ø÷ø÷ø÷ø÷ ‚ñ‚ñ†÷ø÷ø.ƒñ5‚c÷øSøS„øSšø÷…÷èˆèèñø÷ø÷c÷ƒc÷÷ ‚ññ‚ñ²‚÷÷‚÷c,6‚÷øS SSc÷c÷÷÷÷÷šøšø÷ø÷ø÷ø÷c ‚²ñ‚²ñ†ø÷ø÷,ƒñè5‚÷÷†SøSèŸè²ñ²ñ²SS÷c÷÷÷÷øšøšø÷ø÷c÷÷ ‚²ñ‚ñ²†÷÷÷÷+5‚ø÷„÷SS÷÷œ÷ñññññSS÷c÷cøSøSøøšø÷ø÷ ‚ñ²‚ñ‚ø÷‚÷ø*ƒñ5‚÷÷…÷÷èèœè²ñ²ñ²ñ²ñ²ñ²ñ²ñSøSøSšøšø÷ø÷ø ‚²ñ‚ññ †c÷c÷*5‚÷ø‚ø÷‚÷™÷ññ²ññ²ññ²ñ÷cSSSøSø ‚ñ²‚²ñ ‚÷ø‚ø÷(ƒññ6‚c÷‚÷÷‚èè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷÷SSøSøSš ‚ññ‚ñ² †÷c÷c(5‚ø÷‚÷ø÷œ÷ñññññññc÷c÷c÷c÷SSSSø ‚ñ²‚²ñ †ø÷ø÷(ƒññ5‚÷÷‚c÷èŽè²ñ²ñ²ñ²ñ²ñ²ñ² ÷„øSøS ‚²ÿ‚ÿñ †÷÷÷÷&ƒ²5‚÷ø‚ø÷‚÷š÷ññ²ññ²ññ²÷c÷c÷c÷c÷c÷S ‚ñ²‚²ñ †÷ø÷ø&ƒñ5‚÷÷‚÷÷‚èè²ñ²ñ²ñ²ñ²ñ²ñc÷c÷†c÷SøSø ‚ññ‚ñ² ‚c÷‚÷÷%‚²6‚÷ø‚÷ø÷–÷ññññññ÷c÷ø÷c÷ø÷S ‚ñ²‚²ñ †ø÷ø÷$†ññ²ñ‰²ÿñÿñÿñÿñ&‚÷c‚÷÷ƒèŒè²ñ²ñ²ñ²ñ²ñ² ÷‚²ÿ‚ÿñ †÷c÷c$›ññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿñÿ²ÿñ‚ø÷‚÷ø÷—÷ññ²ññ²ññc÷c÷c÷c÷c‚ñ²‚²ñ ‚ø÷‚÷ø"†ñññ †ÿñÿñÿñ ÿ‚÷÷‚÷c²ñ²ñ²ñ²ñ²ñ÷÷c÷„c÷÷‚ñÿ‚ñ² †÷÷÷÷"„ñˆÿñÿ²ÿñÿ²ÿ²‚÷ø‚ø÷ƒ÷”÷ñññññ÷ø÷c÷ø÷c÷‚ñ²‚ñ²†÷ø÷ø"…ñ÷ ÿ ‚÷÷‚÷÷ƒè‹è²ñ²ñ²ñ²ñ²ñ÷‚ñÿ‚ñÿ†c÷c÷"‡ñ÷÷c÷! ÿ‚÷ø‚÷ø ÷”÷²ññ²ññ²ñc÷c÷c÷c÷‚ñ²‚ñ²†÷ø÷ø!†ññ÷‚c÷$ ÿ‚÷÷ Šñ²ñ²ñ²ñ²ñ²÷c÷c‚ñÿ‚ñÿ‚÷÷‚÷c ‚ñ†ø÷ø÷ø÷& ÿ‚÷ø ‚÷ñññññc÷ø÷c÷ø‚ÿ²‚ñ²†ø÷ø÷ †ñññ²c÷c(‚÷÷ ÿ‚è‰ñ²ñ²ñ²ñ²ñ÷J‚ñÿ‚ñÿ†÷÷÷÷ƒñŽñ²ñ²ñ²ñ²ÿ²÷ø÷ø$‚÷øø ÿ‚’÷²ññ²ññ²÷c÷c÷c÷‚ñ²‚ñ²†ø÷ø÷ƒññ²ÿñÿñÿñÿñÿñÿñ!‚÷÷‚÷÷ ÿŠñ²ñ²ñ²ñ²÷c÷‚c÷‚ñÿ‚ñÿ‚÷c‚c÷ƒ²c ÿ²ÿ²ÿ²ÿ²ÿ²ÿñÿ‚÷ø‚÷ø ÿñññø÷c÷ø÷c‚ÿ²‚²ÿ†÷ø÷ø†ñ÷÷‚ÿñ ÿ‚c÷‚÷÷ ‚è ÿ‚ñ²÷‚ñÿ‚ÿñ†÷÷÷÷‰²ñ÷c÷ø÷†÷ø÷ñÿñÿñÿñ‚÷ø‚÷ø „÷²ñ ÿ‚÷c‚ÿ²‚ÿ²†÷ø÷øƒñ÷‚c÷c÷c ÿ ‚÷÷‚÷c †ñ²ñ²ñ² ÿ‚ñÿ‚ñÿ†c÷c÷ƒñ²†ø÷ø÷ø÷‰ø÷ø÷ø÷øÿñÿñÿ†÷ø÷ø’÷÷ññññ÷ø÷cÿñÿƒ²ÿÿ‚ÿ²‚ñ²†÷ø÷øƒñ² c÷‚c÷c÷ƒc÷÷ ÿ†c÷c÷è²ñ²ñ²ñ²÷c÷ÿ‚ñÿ‚ÿñ†÷÷÷÷ƒ²ñ ‡ø÷ø÷ø÷ø†÷ø÷ø÷ø ÿ÷ññññø÷c÷øÿƒñÿÿ‚ÿñ‚²ÿ†÷ø÷ø„ñ²ñc÷ƒc÷÷÷‚c÷ ÿ ‡²ñ²ñ²ñ²÷‚c÷ ÿ †ñÿñÿ‚c÷‚÷÷ƒñ‡÷ø÷ø÷ø÷„÷ø÷ø…÷ø÷ø ÿ‘÷÷÷ñ²ññø÷ø÷c„ÿñÿ² †ÿ²ÿ²‚÷ø‚ø÷ƒññ÷c÷c÷c÷ ÿè²ñ²ñ²ñ÷÷c÷÷ÿ†ñÿñÿ‚÷÷‚÷cƒñ‡ø÷ø÷ø÷øƒ÷ø÷ƒ÷ø÷ ÿ‹ñññ÷ø÷c÷ƒÿ²ÿ…ÿñ²ÿ‚÷ø‚ø÷ƒñ²ñƒ÷÷c÷‚c÷ ‡÷÷c÷÷c ÿƒ²ñc÷ÿ„ÿñÿñ†÷÷÷÷ƒñ"ˆ÷ø÷ø÷ø÷ø“÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷…÷÷ÿ‚ø÷„²ÿñÿƒ²ÿ²†ø÷ø÷ƒñ²ñ&c÷c÷c÷c÷c÷c÷c÷c÷Œc÷÷èñ²ñ²ñ ÿÿ‚ÿ†÷c÷cƒñ*ˆ÷ø÷ø÷ø÷ø…ø÷ø÷ø ‘ø÷ø÷÷÷ñññc÷ø ÿ‡ñÿ²ñÿ²†ø÷ø÷ƒñ²ñ5÷÷ SøSøS÷²ñ²ñ²÷c÷÷ÿ ƒÿÿñÿñÿ“ñÿñÿñÿñÿñÿñÿñÿñÿ²ÿñ†÷÷÷÷ƒñ4Š÷ø÷ø÷ø÷ø SøSøø÷øšø÷ø÷ø÷²ÿ²ÿ§²ÿñÿ²ÿñÿ²ÿñÿ²ÿñÿ²ÿ²ÿ²ÿ²ÿ²ñ²ÿ²ñ²ñ²ñ²ñ²ñ²†ø÷ø÷ƒñ²ñ4„÷÷c÷„÷÷c÷ŒSøSøSøø÷ø÷ø÷S‚÷c÷c ÿñÿñŒÿññ²ññ÷c÷cƒñ3…ø÷÷ø„÷ø÷øS‚øšøšøSSø÷ø÷ø÷ø÷ø‡ÿñÿÿñÿ‰ñ²ññ²ø÷„ñ²ñ2…÷c÷÷c÷SŽøøšøšøšøšJSSS‚÷c÷c÷cÿ†ñÿñÿ…ñ²ñ²ñ„ñ²1†÷ø÷ø Š÷SSSSøSøˆSøøSSS Š÷ø÷ø÷ø÷ø÷ø „ñÿ²ÿƒ²ÿ²ˆø÷ññ²„ñ²ñ²1†c÷c÷ƒJSJSøSšøšøšøšøSJSS ‚÷c÷c÷c…ÿÿÿÿ„ñÿñÿŠ÷c÷÷²ñ²ñ„ññ0‚ø÷‚÷øšJJSSøSøSøSøSøSøSS÷ø÷ø÷ø÷ø÷øÿ²ñÿƒÿ²ñ…ø÷÷ø…²²„ñ²ñ²0‚÷÷‚÷÷œèJJJSJSSøSøSøSøSšøSSSŒ÷c÷÷ÿñ÷÷ÿñ÷÷ƒñÿ² ÷c„ññ„ñ²/‚÷ø‚÷ø÷‰JSSSSŽSSøJJJø÷ø÷“²ÿø÷²ÿø÷ø÷ø÷ø÷²ñ² „ø÷ø÷ ƒ÷„ñ²ñ²/‚÷÷‚c÷èˆèñ²ñJS S‡JS÷c÷c÷‚ÿÿ„ÿÿ÷c÷‡c÷÷ÿñÿñ„÷c÷÷ ƒè„ññ/‚÷ø‚÷øš ”ñ²ññ²JJSSJJJ‰ø÷ø÷ø÷ø÷ø †ÿñÿñ Œø÷ø÷øñ²ñ²ñ²ñ„ø÷ø÷ ‚c÷ƒ²ñ²/‚c÷‚÷÷…÷ø÷ø÷–ñ²ñ²ñ²ñ²ñ²ñ²SSJJJƒ÷÷c÷ƒc÷÷‚ÿÿ‚ÿÿ‰cÿññ²ñ²ñ÷ƒ÷÷c÷‚c÷ƒññ/‚÷ø‚÷ø…ø÷ø÷c÷”ññññññ÷J ÷ø÷ø÷ø÷ø÷øñÿ‚ÿ²‰ø÷²ñññø‹ø÷ø÷ø÷ø÷ø÷cƒ²ñ².‚÷÷‚c÷”ø÷ø÷÷÷÷÷ñ²ñ²ñ²ñ²ñ÷„JJ÷…c÷ÿÿc÷‚ÿÿŠ÷c÷²ñ²ñ²ñc÷ƒññ.‚ø÷‚÷ø ‰ø÷ø÷c÷÷c÷c÷²ññc÷c÷c÷c÷c÷Œñÿø÷ø÷øÿñ÷ø÷Šø÷ø÷ñ²ñ„²ñ²ñ-‚÷c‚÷÷ ÷‡÷÷÷÷„÷÷c÷c÷‚c÷‚ÿÿƒÿÿc÷c÷c ƒ÷÷c÷ˆcññèƒñ-‚ø÷‚ø÷ œ÷÷÷²c÷c÷c÷c÷c÷ø÷ø÷ø÷c÷c÷‚ÿ²‚ÿ²Œø÷ø÷ø÷ø÷ø÷ø÷‹÷ø÷ø÷ø÷ø÷ø÷ƒñ²ñ-‚÷÷‚÷c ‚÷Š÷ñ²ññ²ñ÷÷‡ø÷øšøš÷‚ÿÿ‚ÿÿ ‚÷c÷c÷c÷‰÷÷c÷÷cƒ²ñ-‚ø÷‚ø÷ ’÷Sñ²ñ²÷ø÷ø÷øS‚ñÿ‚ÿñƒø÷øˆ÷ø÷ø÷ø‚÷„ñ²ñ²,‚÷c‚÷÷ ‚÷Žšøñññø÷c÷ø÷‚ÿÿ‚ÿÿ„÷c÷÷‚÷c÷c÷cƒññ+‚÷ø‚ø÷ “÷÷²ñ²ø÷ø÷ø÷ø‚ñÿ‚ÿ²„ø÷ø÷ˆ÷ø÷ø÷ø÷øƒ²ñ²+‚c÷‚÷c ‚èˆñ²ññ²ñø÷S÷‚ÿÿ‚ÿÿ÷$ƒññ+‚÷ø‚ø÷ ‘÷÷ñññ÷ø÷ø÷‚ÿñ‚ÿÿ„÷ø÷ø$„²ñ²ñ*‚÷÷‚c÷ ‘÷÷÷ññ²ññc÷ø÷c‚ÿÿ‚ÿÿ„÷÷c÷%ƒñ*‚÷ø‚÷ø …÷c÷c÷ˆñ²ø÷ø÷ø‚²ÿ‚ñÿ…ø÷÷ø%ƒñ²ñ*‚c÷‚÷÷ ÷‰ñññ÷ø÷‚ÿÿ‚ÿÿ…÷c÷÷%ƒñ²*‚÷ø‚÷ø …c÷c÷c…øšø÷ø‚ÿÿ‚ÿñ†÷ø÷ø%„ñ²ñ²)‚÷÷‚c÷ c÷‚c÷è…šøšø÷‚ÿÿ‚ÿÿ†c÷c÷&ƒññ)‚÷ø‚÷ø ‰ø÷c÷ø÷÷ø‚ÿ²‚²ÿ‚ø÷‚÷ø&ƒ²ñ²)‚c÷‚÷÷ ÷ƒè‡èšø÷øš‚ÿÿ‚ÿÿ†÷÷÷÷(ƒ²ñ(‚÷ø‚÷øˆ÷c÷c÷c÷ø‚šø‚ñÿ‚ÿÿ†ø÷ø÷(ƒñ²ñ(‚÷÷‚c÷ƒ÷÷c÷è…šøšøš‚ÿÿ‚ÿÿ‚÷÷‚÷c)ƒññ'‚÷ø‚÷ø‡c÷ø÷c÷ø÷÷ø‚ÿÿ‚ÿ²†÷ø÷ø*ƒ²ñ²&‚÷c‚÷÷ƒ÷÷c÷‚cèè‡èøšøšøš‚ÿÿ‚ÿÿ‚÷c‚c÷*„ññ²%‚ø÷‚÷øŠ÷ø÷c÷ø÷÷ƒ÷ø‚ÿñ‚ñÿ†ø÷ø÷,ƒñ²ñ%‚÷÷‚c÷‚÷c÷ƒc÷÷ †øšøšøš‚ÿÿ‚ÿÿ‚c÷‚÷÷,„ññ$‚ø÷‚÷ø‘ø÷ø÷ø÷ø÷÷÷÷÷øƒSøø‚²ÿ‚ÿÿ†÷ø÷ø.ƒ²ñ²$‚÷c‚÷÷c÷c÷‚èè‡èøšøšøš‚ÿÿ‚ÿÿ‚÷÷‚÷÷.„ñ²ñ#‚ø÷‚÷øˆ÷c÷ø÷c÷ø÷…÷øSø‚Sø‚ÿÿ‚ÿñ†ø÷ø÷0ƒñ²ñ#‚÷÷‚c÷÷c÷c ‡øšøšøšø‚ÿÿ‚ÿÿ‚÷÷‚÷c0ƒñ#‚ø÷‚÷ø“c÷ø÷c÷ø÷÷÷÷÷÷÷øSø‚ÿÿ‚²ÿ†÷ø÷ø2ƒ²ñ²"‚÷c„÷÷ ÷ƒè舚øšøšøšø‚ÿÿ‚ÿÿ‚÷c‚c÷2ƒññ"‚ø÷Ž÷ø÷ø÷c÷ø÷c÷÷‚÷ø‚Sø‚ÿñ‚ÿÿ†ø÷ø÷4ƒñ²ñ!‚÷÷‚c÷÷c÷ ˆšøšøšøšø‚ÿÿ‚ÿÿ‚c÷‚÷÷5‚ñ!‚ø÷‚÷ø‚÷ø÷÷÷SøSø‚²ÿ‚ÿÿ‚ø÷‚÷ø6ƒ²ñ² ‚÷c‚÷÷…÷÷÷èè舚øšøšøšø‚ÿÿ‚ÿÿ‚c÷‚÷÷8ƒ²ñ ‚÷ø‚÷ø‰ø÷÷÷÷÷‚÷ø‚ÿÿ‚ÿñ‚÷ø‚ø÷9ƒ²ñ²‚÷÷‚c÷–÷øšø÷÷÷÷÷øšøšøšø‚ÿÿ‚ÿÿ‚÷÷‚÷÷;‚ñ‚÷ø‚÷ø‚øšø÷ø÷c÷c÷c÷c÷ø÷ø‚ñÿ‚²ÿ‚÷ø‚ø÷<ƒñ²ñ‚c÷‚÷÷ˆø÷ø÷ø÷÷‰ø÷c÷ø÷øšø‚ÿÿ‚ÿÿ‚÷÷‚÷÷>ƒññ‚÷ø‚ø÷ƒø÷c÷„c÷SøS‚ÿñ‚ÿÿ‚ø÷‚÷ø?ƒñ²ñ‚÷÷‚÷÷÷ø÷÷øSøSø‚ÿÿ‚ÿÿ‚÷÷‚÷cA‚²‚÷ø‚ø÷ ƒ÷²†÷SøSøS‚²ÿ‚ñÿ‚ø÷‚÷øC‚ñ²‚c÷‚÷c „ñ÷‚ÿÿ‚ÿÿ÷‚÷cDƒñ‚÷ø‚ø÷ ‡JSñc÷‚ÿÿ‚ÿñ‚÷ø‚ø÷Eƒ²ñ²‚÷c‚÷÷‰JSSJSJ‚ÿÿ‚ÿÿƒ÷÷ccHƒ²‚ø÷‚ø÷‹JSSJ‚ñÿ‚²ÿƒø÷ø‚ø÷I‚²ñ‚÷÷‚÷c…÷SS†SJSJ‚ÿÿ‚ÿÿ‚÷÷‚c÷K‚ñ‚c÷“÷c÷÷SSS‚ñÿ‚²ÿ‚ø÷‚ø÷Mƒ²ñ‚÷c”÷÷÷÷ññSSJJ‚ÿÿ‚ÿÿ‚÷÷‚c÷Oƒ²‚÷ø“÷ø÷c÷ñ²ñ²÷ø÷‚ÿ²‚ÿñ‚ø÷‚ø÷Qƒ²ñ‚÷÷…c÷÷Œñññ÷ø÷c÷ø‚ÿÿ‚ÿÿ‚÷÷‚c÷T‚ñ‚÷ø‚c÷÷²ñ²ñø÷ø÷ø‚²ÿ‚ÿñ‚ø÷ƒ÷ø÷V‚ñ‚c÷‚÷cšø‰ññ÷ø÷ø÷‚ñÿ‚ÿÿ‚÷÷ƒ÷c÷Xƒ²ñ‚ø÷‚ø÷ŽøSøø÷ø÷S÷ø÷ø ‚²ÿ‚ñÿ ƒ÷ø÷‚÷ø[ƒññ‚÷c‚÷÷÷ƒøSS‚ÿÿ‚ÿÿ c÷‚÷c]ƒ²ñ‚ø÷‚÷ø ‚SS‚ÿñ‚ÿ² ƒø÷cƒc÷ø`ƒñ‚÷÷‚c÷‚ÿñ‚ÿñ ƒ÷c÷ƒ÷÷cb„ñ ‚÷ø‚c÷‚ÿ²‚ÿ² ƒ÷ø÷ƒ÷ø÷e…ññ ‚÷‚÷÷‚ÿñ‚ÿñ ƒ÷÷cc÷h…ñ²ñ ‚c÷‚÷c‚ÿ²‚ÿ²„÷c÷øƒø÷cl…ññ ‚÷‚÷÷‚ÿñ‚ÿñc÷ƒ÷c÷p…²‚÷÷‚c÷‚ñ²‚ÿ²…c÷ø÷c„c÷ø÷r†ñññ‚÷‚÷‚ÿñ‚ÿñ÷÷v‚ñƒ÷‚c‚ñ²‰ÿ²÷c÷c÷…÷c÷c÷z…ñññ‰÷÷‚ÿñƒÿñ÷‚÷÷~ …÷÷÷ ƒ²ñ²‰c÷÷ñ²÷c÷c…c÷c÷cŒñññèè ñ²ÿñ÷÷÷ñÿñ÷†÷÷÷÷ ÷•÷÷ñ²ñ÷÷÷÷ñ²ñ²÷c÷‚c÷ƒèˆññ²ñ²ñ²÷²ñˆ÷÷÷÷˜²ññ²ñ²÷÷²ñ²ñ²c÷ ‘ñññññ²ñ²ñ²ñ²ñ-‡²ññ²ñp\,S,lpd^P€€€€€€€€€ÀÀÀÀÜÀðʦ$I’¶Û$$$$I$m$’$¶$Û$ÿII$IIImI’I¶IÛIÿm$mIm’m¶mÛmÿ’’$’I’m’’’¶’Û’ÿ¶¶$¶I¶m¶’¶¶¶Û¶ÿÛÛ$ÛIÛmÛ’Û¶ÛÛÛÿÿ$ÿIÿmÿ’ÿ¶ÿÛU$UIU’U¶UÛUÿU$U$$U$IU$mU$’U$¶U$ÛU$ÿUIUI$UIIUImUI’UI¶UIÛUIÿUm$UmIUm’Um¶UmÛUmÿU’U’$U’IU’mU’’U’¶U’ÛU’ÿU¶U¶$U¶IU¶mU¶’U¶¶U¶ÛU¶ÿUÛUÛ$UÛIUÛmUÛ’UÛ¶UÛÛUÛÿUÿUÿ$UÿIUÿmUÿ’Uÿ¶UÿÛUÿÿªª$ªIªmª’ª¶ªÛªÿª$ª$$ª$Iª$mª$’ª$¶ª$Ûª$ÿªIªI$ªIIªImªI’ªI¶ªIÛªIÿªmªm$ªmIªmmªm’ªm¶ªmÛªmÿª’ª’$ª’Iª’mª’¶ª’Ûª’ÿª¶ª¶$ª¶Iª¶mª¶’ª¶Ûª¶ÿªÛªÛ$ªÛIªÛmªÛ’ªÛÛªÛÿªÿªÿ$ªÿIªÿmªÿ’ªÿ¶ªÿÛªÿÿÿ$ÿIÿmÿ’ÿÿ¶ÿÛÿ$ÿ$$ÿ$Iÿ$mÿÿÿ$’ÿ$¶ÿ$Ûÿ$ÿÿIÿI$ÿIIÿImÿI’ÿI¶ÿIÛÿIÿÿmÿm$ÿmIÿmmÿm’ÿm¶ÿmÛÿmÿÿ’ÿ’$ÿ’Iÿ’mÿ’’ÿ’¶ÿ’Ûÿ’ÿÿ¶ÿ¶$ÿ¶Iÿ¶mÿ¶¶ÿ¶Ûÿ¶ÿÿÛÿÛ$ÿÛIÿÛmÿÛ’ÿÛ¶ÿÛÛÿÿ$ÿÿIÿÿmÿÿ’ðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿ&ƒÿñ3†ÿ²ÿñÿ0ƒññÿñÿ-‹²ÿ²ÿ²ÿ²ÿ²ÿ,…ñÿÿñÿƒñÿÿ+Œ²ñÿ²ÿñÿ²ÿñÿ+„ñÿñÿñÿ,‹²²ÿ²ÿ²ÿ²ÿ²,‚ñÿñÿƒñÿ*ñ†ÿñÿ²ÿñ(‚è‰èñÿÿèè&ÿ÷÷#Š÷÷ÿÿè‚è‚c÷‚ÿÿ ‚÷÷‚ÿÿ…è‚c÷‚ÿÿ‚÷‚÷÷‚ÿÿ‚è‚÷c‚ÿÿ‚÷÷‚ÿÿè‚è ‚÷c‚ñÿ‚÷‚÷÷‚ÿÿ#èè‚÷c‚ÿÿ%‚÷÷ ‚ÿÿ(‚è{‚÷c ‚ÿñ*‚÷÷w‚÷÷ ‚ÿÿ.…èt‚÷c ‚ÿÿ1p‚÷÷ ‚ÿÿ3‚èm‚÷c ‚ÿÿ6…÷i‚÷÷ ‚ÿÿ9è‚èe‚÷c‚ÿÿ<b‚÷÷‚ÿÿ?èè^‚÷c‚ÿÿA÷÷[‚÷÷‚ÿÿE‚èW‚÷c‚ÿÿGS‚÷÷‚ÿÿJ…èP‚÷c‚ñÿM‚÷L‚÷÷‚ÿÿP‚èI‚÷c‚ÿÿSE‚÷÷‚ÿÿUè‚èA‚÷c‚ÿñX‚÷>‚÷÷‚ÿÿ\èè:‚÷c‚ÿÿ^7‚÷÷‚ÿÿa‚è.‡ÿ²÷c‚ÿÿc‚÷÷+†ññÿÿ÷÷‚ÿÿg…è)‡²ÿñ÷cÿñ‚ÿÿj%‡ÿÿ÷÷ÿÿ‚ÿÿl‚è#ˆ²ÿ²ÿ²ÿø‚ÿÿo…÷ ƒÿñÿñ÷c‚ÿÿqè‚èŠÿ²ÿ÷ø÷ø÷ø‚ÿÿu„÷÷è‚÷c÷c‚ÿÿxèè‚÷ø †÷ø÷ø÷ø ‚ñÿz÷÷‚÷c‚÷c÷c‚ÿÿ}‚è‚ø÷†÷ø÷ø÷ø‚ÿÿ Š÷÷÷÷÷ƒ²ñO‚÷÷‚÷c÷„cÿÿSˆñ²ñññN…è‚ø÷†÷ø÷øÿñ÷÷÷÷ñ²ñ²ñ²L‚÷ ‚÷÷†÷ÿÿ÷÷cSèè“èñ²ñ²ñ²ñ²ñ²ñ²ññ²ñJ‚è ‚÷øŠÿÿ÷ø÷ø÷ø÷S ˜øSøøñ²ññ²ñññññ²ñI‚c÷‚ÿÿ‚÷c÷‚c÷Žšøšøšøšøšøšøšc÷‘ø÷²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷Iè‚è‚ø÷‚ÿÿ†ø÷ø÷ø÷šøšøšøœšc÷c÷c÷c÷ø÷ø÷ññññ²c÷c÷cJ‚÷‚÷÷‚ÿÿ c÷‚c÷ —÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷÷÷÷†øñ²ñ²ñ÷Kèè|‚ø÷‚ÿÿ†ø÷ø÷ø÷ •ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷c÷c÷•c÷c÷c÷c÷ø÷ø÷c÷c÷c÷c÷cK‡ñ²ñÿ²n‚÷c‚ÿÿc÷‚c÷žø÷c÷ø÷c÷ø÷c÷ø÷÷÷÷÷÷÷÷÷…SS÷÷c÷M‚èˆññÿñÿk‚÷ø‚ÿÿ¥ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷ñ÷÷÷÷c÷c÷…c÷c÷cSŠ÷c÷c÷c÷c÷M‚÷Š÷²²ÿ²ÿ²ÿj‚c÷‚ÿÿc÷‚cèèè‰è²ñ²ñ²è÷÷÷÷÷SøSøS ÷N†èñÿƒñÿÿj‚÷ø‚ÿÿ‚ø÷™ñ²ññ²ññ÷÷÷÷÷÷÷øSøS‡c÷c÷c÷cOŒ²ñ²ñÿ²ÿñÿj‚÷÷‚ÿÿƒèèèè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷†SšSøSøS÷JMŠ÷cñññÿÿñÿñi‚ø÷‚ñÿ÷÷ ÷ñññññññññ÷÷øSøSøSøSƒcH‰÷ø÷ø÷ø÷²†ÿ²ÿ²ÿ²j‚÷c‚ÿÿèè¦è²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñøšøšøøSšSøSøD‚÷c÷c÷†cñè…èÿÿñÿj‚ø÷‚ÿÿ ˜ñ²ññ²ññ²ññ²ññ²ññc÷cøˆSøSøSøSS?Š÷ø÷ø÷ø÷ø÷ø ƒ÷ñj‚÷÷‚ÿÿ ‚èèè˜ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷‰øšøøSšSøS:‚÷c÷c÷cl‚÷ø‚ÿñ ÷÷¦÷ñññññññññññø÷c÷ø÷cøSøSøSø5Š÷ø÷ø÷ø÷ø÷ø‚÷n‚÷÷‚ÿÿ èè—èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ ÷…øšøšø0‚÷c÷c÷c‚÷n‚÷ø‚ÿÿ! ñ²ññ²ññ²ññ²ññ²ñ÷c÷c÷c÷c÷c÷cø,‰ø÷ø÷ø÷ø÷ø‚÷n‚c÷‚ÿÿ!‚èèè”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷c÷c÷ø'c÷c÷c#‚÷n‚ø÷‚ÿÿ"ƒ÷÷¦÷ññññññññññc÷c÷c÷c÷c÷c÷c÷ø÷"Šø÷ø÷ø÷ø÷ø÷'‚÷n‚÷÷‚ÿÿ"ƒèè–èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷c÷c÷‚c÷,‚n‚ø÷‚ÿÿ#÷÷÷¢ñ²ññ²ññ²ññ²ññ²÷c÷c÷c÷c÷c÷c÷c÷cŠø÷ø÷ø÷ø÷ø÷1‚÷n‚÷c‚ÿÿ# ”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñc÷c÷c÷„c÷÷c÷c÷‚c÷6‚÷m‚÷ø‚ÿÿ#®÷÷÷÷÷÷ñññññññññø÷c÷ø÷c÷c÷c÷c÷c÷ƒ² Šø÷ø÷ø÷ø÷ø÷:‚÷n‚c÷‚ÿÿ#ƒèè”èñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²÷÷‰ñÿÿñÿÿc÷c÷‚c÷?‚n‚÷ø‚ÿÿ%÷÷±ñññññññññc÷c÷c÷c÷c÷c÷c÷ø÷ø÷ÿ²÷ø÷ø÷ø÷ø÷D‚÷n‚÷÷‚ÿÿ% ”ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷c÷c÷c‰ñ÷ññÿ÷÷c÷I‚÷m‚ø÷‚ñÿ%ª÷÷÷÷÷ñ²ñ²ñ²ñ²÷ø÷c÷ø÷c÷ø÷c÷ø‡²ÿ²ÿ²K‚÷m‚÷c‚ÿÿ$ž÷÷÷÷÷ññ²ñ²ñ²ñ²ñ²ñ²ñ²ñc ÷‡ñèÿñÿK‚m‚ø÷‚ÿÿ%‹c÷c÷c÷c÷c÷c›ñ²ñññññø÷c÷ø÷c÷ø÷c÷c÷‚ø÷J‚÷n‚÷÷‚ÿÿ%÷c÷c÷‚èŒñññññ²ñ²÷c÷c÷‚c÷ ‚÷cM‚m‚÷ø‚ÿñ$ƒøøšø÷ø†÷c÷÷ ²÷ø÷ø÷ø÷ø÷ø÷ø÷ ‚ø÷M‚÷m‚÷÷‚ÿÿ#øSøS„øSšø÷…÷èˆèèñø÷ø÷c÷ƒc÷÷ ‚÷÷M‚÷m‚÷ø‚ÿÿ$S SSc÷c÷÷÷÷÷šøšø÷ø÷ø÷ø÷c ‚ø÷M‚÷m‚c÷‚ÿÿ%†SøSèŸè²ñ²ñ²SS÷c÷÷÷÷øšøšø÷ø÷c÷÷ ‚÷÷M‚m‚ø÷‚ÿÿ&ƒSS÷÷œ÷ñññññSS÷c÷cøSøSøøšø÷ø÷ ‚÷øM‚÷m‚÷÷‚ÿÿ(èèœè²ñ²ñ²ñ²ñ²ñ²ñ²ñSøSøSšøšø÷ø÷ø ‚c÷M‚÷m‚ø÷‚ÿÿ)‚÷™÷ññ²ññ²ññ²ñ÷cSSSøSø ‚÷øM‚÷m‚÷c‚ÿÿ*‚èè²ñ²ñ²ñ²ñ²ñ²ñ²ñ÷÷c÷÷SSøSøSš ‚÷÷N‚l‚÷ø‚ÿÿ*÷œ÷ñññññññc÷c÷c÷c÷SSSSø ‚ø÷N‚÷l‚c÷‚ÿÿ*èŽè²ñ²ñ²ñ²ñ²ñ²ñ² ÷„øSøS ‚÷cM‚m‚÷ø‚ÿÿ*‚÷š÷ññ²ññ²ññ²÷c÷c÷c÷c÷c÷S ‚ø÷M‚÷m‚÷÷‚ÿÿ+‚èè²ñ²ñ²ñ²ñ²ñ²ñc÷c÷†c÷SøSø ‚÷÷M‚÷l‚ø÷‚ñÿ+÷–÷ññññññ÷c÷ø÷c÷ø÷S ‚÷øN‚÷l‚÷c‚ÿÿ,ƒèŒè²ñ²ñ²ñ²ñ²ñ² ÷‚÷÷N‚l‚ø÷‚ÿÿ,÷—÷ññ²ññ²ññc÷c÷c÷c÷c‚÷øM‚÷m‚÷÷‚ÿÿ-²ñ²ñ²ñ²ñ²ñ÷÷c÷„c÷÷‚c÷M‚÷l‚÷ø‚ÿñ-ƒ÷”÷ñññññ÷ø÷c÷ø÷c÷‚÷øM‚÷l‚÷÷‚ÿÿ-ƒè‹è²ñ²ñ²ñ²ñ²ñ÷‚÷÷N‚l‚÷ø‚ÿÿ-÷”÷²ññ²ññ²ñc÷c÷c÷c÷‚ø÷N‚÷k‚÷c‚ÿÿ.Šñ²ñ²ñ²ñ²ñ²÷c÷c‚÷cN‚÷k‚ø÷‚ÿÿ/‚÷ñññññc÷ø÷c÷ø‚ø÷M‚÷l‚÷÷‚ÿÿ/‚è‰ñ²ñ²ñ²ñ²ñ÷J‚÷÷M‚÷l‚ø÷‚ÿÿ/’÷²ññ²ññ²÷c÷c÷c÷‚÷øN‚÷k‚÷÷‚ÿÿ0Šñ²ñ²ñ²ñ²÷c÷‚c÷‚÷÷N‚k‚÷ø‚ÿÿ0‚÷Žññññø÷c÷ø÷c‚÷øN‚÷k‚c÷‚ÿÿ0‚èˆñ²ñ²ñ²ñ²÷‚c÷M‚÷l‚÷ø‚ÿÿ0÷²ññ²ñ÷c÷ø÷c‚ø÷N‚÷k‚÷÷‚ÿÿ1Šñ²ñ²ñ²ñ÷÷c÷‚÷÷N‚k‚ø÷‚ñÿ1‘÷÷ññññ÷ø÷c÷‚ø÷N‚÷k‚÷c‚ÿÿ1è²ñ²ñ²ñ²÷c÷‚÷cN‚÷k‚ø÷‚ÿÿ1÷ññññø÷c÷ø‚ø÷N‚÷j‚c÷‚ÿÿ1‡²ñ²ñ²ñ²÷‚c÷‚c÷N‚÷k‚÷ø‚ÿñ1‘÷÷÷ñ²ññø÷ø÷c‚÷øN‚÷k‚÷÷‚ÿÿ1è²ñ²ñ²ñ÷÷c÷÷‚÷÷N‚k‚÷ø‚ÿÿ1÷Œ÷ñññ÷ø÷c÷‚÷øN‚÷j‚÷c‚ÿÿ2ˆñ²ñ²ñ²ñc÷‚c÷N‚÷j‚ø÷‚ÿÿ2÷÷ñ²ñø÷ø÷ø‚ø÷N‚÷k‚÷÷‚ÿÿ2Šèñ²ñ²ñ²÷‚c÷‚÷÷N‚k‚ø÷‚ÿÿ2Ž÷÷ñññc÷ø÷‚ø÷N‚÷j‚÷÷‚ÿÿ2SøSøS÷²ñ²ñ²÷c÷÷‚÷cN‚÷j‚÷ø‚ÿÿ1SŒøSøø÷øšø÷ø÷ø‚÷øO‚÷j‚c÷‚ÿÿ0ŒSøSøSøø÷ø÷ø÷S÷‚c÷O‚j‚÷ø‚ÿÿ/S‚øšø†šøSS‚÷øN‚÷j‚÷÷‚ÿÿ/SŽøøšøšøšøšJSSS‚÷÷N‚j‚ø÷‚ñÿ.‰SSSSøSøˆSøøSSS‚÷øN‚÷j‚÷c‚ÿÿ+ƒJSJSøSšøšøšøšøSJSS‚÷cO‚÷j‚ø÷‚ÿÿ)šJJSSøSøSøSøSøSøSS‚ø÷O‚÷i‚c÷‚ÿÿ'œèJJJSJSSøSøSøSøSšøSSS‚÷÷N‚j‚÷ø‚ÿñ(÷‰JSSSSŠSSøJJJ‚ø÷N‚÷j‚÷÷‚ÿÿ(èˆèñ²ñJS S…JS‚÷cN‚÷j‚÷ø‚ÿÿ(š ”ñ²ññ²JJSSJJJ‚÷øO‚÷i‚÷c‚ÿÿ)…÷ø÷ø÷–ñ²ñ²ñ²ñ²ñ²ñ²SSJJJ‚c÷O‚i‚ø÷‚ÿÿ,…ø÷ø÷c÷”ññññññ÷J‚÷øN‚÷j‚÷÷‚ÿÿ-”ø÷ø÷÷÷÷÷ñ²ñ²ñ²ñ²ñ÷„JJ‚÷÷N‚j‚ø÷‚ÿÿ.‰ø÷ø÷c÷÷c÷c÷²ññc÷c÷c÷c÷c÷‚÷øN‚÷i‚÷÷‚ÿÿ.÷‡÷÷÷÷„÷÷c÷c÷‚c÷ ‚÷cO‚÷i‚÷ø‚ÿÿ/œ÷÷÷²c÷c÷c÷c÷c÷ø÷ø÷ø÷c÷c÷‚ø÷O‚÷i‚c÷‚ÿÿ/‚÷Š÷ñ²ññ²ñ÷÷‡ø÷øšøš÷‚÷÷O‚i‚÷ø‚ÿÿ1’÷Sñ²ñ²÷ø÷ø÷øS‚ø÷N‚÷i‚÷÷‚ÿÿ1‚÷Žšøñññø÷c÷ø÷‚÷÷O‚÷i‚ø÷‚ñÿ2“÷÷²ñ²ø÷ø÷ø÷ø‚÷øO‚÷i‚÷c‚ÿÿ1‚èˆñ²ññ²ñø÷S÷‚c÷O‚i‚ø÷‚ÿÿ1‘÷÷ñññ÷ø÷ø÷‚÷øO‚÷h‚c÷‚ÿÿ1‘÷÷÷ññ²ññc÷ø÷c‚÷÷N‚i‚÷ø‚ÿñ2…÷c÷c÷ˆñ²ø÷ø÷ø‚ø÷O‚÷i‚÷÷‚ÿÿ1÷‰ñññ÷ø÷‚÷cO‚÷i‚÷ø‚ÿÿ1…c÷c÷c…øšø÷ø‚ø÷O‚÷h‚÷c‚ÿÿ0c÷‚c÷è…šøšø÷‚÷÷O‚h‚ø÷‚ÿÿ0‰ø÷c÷ø÷÷ø‚ø÷O‚÷h‚÷÷‚ÿÿ0÷ƒè‡èšø÷øš‚÷÷O‚÷h‚÷ø‚ÿÿ/ˆ÷c÷c÷c÷ø‚šø‚÷øO‚÷h‚÷÷‚ÿÿ/ƒ÷÷c÷è…šøšøš‚c÷O‚h‚÷ø‚ÿÿ/‡c÷ø÷c÷ø÷÷ø‚÷øO‚÷h‚c÷‚ÿÿ.ƒ÷÷c÷‚cèè‡èøšøšøš‚÷÷O‚÷g‚ø÷‚ÿÿ.Š÷ø÷c÷ø÷÷ƒ÷ø‚ø÷O‚÷h‚÷÷‚ÿÿ-‚÷c÷ƒc÷÷ †øšøšøš‚÷cO‚÷h‚ø÷‚ñÿ.‘ø÷ø÷ø÷ø÷÷÷÷÷øƒSøø‚ø÷O‚÷h‚÷c‚ÿÿ-c÷c÷‚èè‡èøšøšøš‚÷÷O‚g‚÷ø‚ÿÿ-ˆ÷c÷ø÷c÷ø÷…÷øSø‚Sø‚÷øP‚÷g‚c÷‚ÿÿ,÷c÷c ‡øšøšøšø‚÷÷P‚÷g‚÷ø‚ÿñ-“c÷ø÷c÷ø÷÷÷÷÷÷÷øSø‚÷øO‚÷h‚÷÷‚ÿÿ, ÷ƒè舚øšøšøšø‚c÷O‚g‚ø÷‚ÿÿ,Š÷ø÷c÷ø÷c÷÷‚÷ø‚Sø‚÷øO‚÷g‚÷c‚ÿÿ-÷c÷ ˆšøšøšøšø‚÷÷P‚÷d‡²÷ø÷ø÷‚ÿÿ/‚÷ø÷÷÷SøSø‚ø÷P‚÷dƒÿñÿñ‚ÿÿ0…÷÷÷èè舚øšøšøšø‚÷cO‚÷e‡ñ²ÿñÿ²ÿ‚ÿÿ2‰ø÷÷÷÷÷‚÷ø‚ø÷O‚÷eñÿ…ñÿÿ÷c‚ÿÿ2–÷øšø÷÷÷÷÷øšøšøšø‚÷÷O‚dÿ²ÿñ²ÿø÷ø÷ø÷ø÷‚ÿÿ3‚øšø÷ø÷c÷c÷c÷c÷ø÷ø‚÷øP‚÷d‡ñÿÿñÿ²ñ‚÷c÷c÷ƒc÷÷ ‚ÿÿ2ˆø÷ø÷ø÷÷‰ø÷c÷ø÷øšø‚÷÷P‚÷e†ÿ²ÿññ ‹ø÷ø÷ø÷ø÷ø÷ø‚ÿÿ5ƒø÷c÷„c÷SøS‚÷øP‚÷j‚ñ²÷c÷c÷‚ÿÿ5÷ø÷÷øSøSø‚c÷O‚l‚ñŒ÷ø÷ø÷øÿÿ÷ø÷ø2ƒ÷²†÷SøSøS‚ø÷P‚÷l‚²ñ„ÿÿ÷c÷c÷‚c÷-„ñ÷‚÷÷P‚÷m‚²ñ‚ÿÿ‹÷ø÷ø÷ø÷ø÷ø÷'‡JSñc÷‚ø÷P‚÷n‚²ñ‚ÿÿ c÷c÷ƒc÷÷‰JSSJSJ‚÷cP‚n‚ñ‚ñÿŒø÷ø÷ø÷ø÷ø÷ø÷‹JSSJ‚ø÷O‚÷p‚ñ²‚ÿÿ÷c÷c÷…÷SS†SJSJ‚c÷P‚q‚ñ²‚ÿÿ‹ø÷ø÷ø÷ø÷ø÷ø ÷÷SSS‚÷øP‚÷r‚ñ²‚ÿÿ"ƒ÷÷c÷c÷‚c÷‘÷÷ññSSJJ‚÷÷P‚÷r‚ñ‚ÿñ(™÷ø÷ø÷ø÷ø÷÷c÷ñ²ñ²÷ø÷‚÷øP‚÷s‚²ñ‚ÿÿ/c÷Œñññ÷ø÷c÷ø‚c÷P‚t‚ñ‚ÿÿ4ø÷÷²ñ²ñø÷ø÷ø‚ø÷P‚÷u‚ñ²‚ÿÿ6šøˆññ÷ø÷ø÷‚÷÷P‚÷v‚ñ ‚ÿÿ5–øSøø÷ø÷S÷ø÷ø÷ø÷ø÷ø÷ø‚ø÷P‚÷w‚ñ² ‚ÿÿ9÷ƒøSSƒ÷÷c÷c÷‚c÷…ñ÷÷cP‚w‚²ñ ‚ÿÿ=‚SS “÷ø÷ø÷ø÷ø÷ø÷²ÿ²ÿñÿN‚÷x‚²ñ ‚ÿÿRc÷…c÷÷ññÿñM‚z‚ñ ‚ÿÿWˆø÷ÿ²÷øÿM‚÷z‚ñ²‚ÿÿX†ññÿÿc÷L‚÷{‚ñ²‚ÿÿYŠ²ñÿ²ÿñ÷ø÷øJ‚÷|‚ñ²‚ÿÿ]ˆÿÿ÷÷c÷H‚|‚ñ‚ñÿc„÷ø÷øE‚÷~‚²ñ‚ÿÿfc÷C‚÷‡÷ø÷øÿÿh„÷ø÷øA‚÷„ñ÷c÷ƒc÷÷g„÷÷c÷?‚‹²²ÿ²ÿ²÷ø÷øh„÷ø÷ø=‚÷~ƒññÿñÿƒñÿÿic÷;‚÷~Œñÿñÿ²ÿñÿ²ÿñl…÷ø÷ø÷7‚÷…ñÿÿñÿñÿn…÷÷c÷÷5‚÷ÿ²ÿ²ÿ²ÿ²ÿ²ÿñÿn„ø÷ø÷3‚÷~„ñññÿñÿñÿñÿñÿi÷c1‚~Œñ²ÿñÿ²ÿñÿ²ÿŽñÿ²ÿñÿ²ÿñÿ²ÿñÿd„ø÷ø÷/‚÷~‚ñÿñÿƒñÿÿ ƒÿÿñÿñÿñÿ_„÷c÷÷,‚÷‹²ÿ²ÿ²ÿ²ÿ²ÿŽñÿ²ÿñÿ²ÿñÿ²ÿñÿZ„ø÷ø÷*‚÷ƒÿñÿñÿñƒÿÿñÿñÿñÿU÷c(‚„ÿñÿ²!Žñÿ²ÿñÿ²ÿñÿ²ÿñÿP„ø÷ø÷&‚÷3ƒÿÿñÿñÿƒñÿÿL„÷c÷÷$‚÷:ñÿ²ÿñÿ²ÿñÿ²ÿñG„ø÷ø÷"‚÷@ÿñÿñÿƒñÿÿB÷c‚÷HŽÿñÿ²ÿñÿ²ÿñÿ²ÿñ=„ø÷ø÷‚÷Oÿñÿñÿƒñÿÿ8„÷c÷÷‚VŽÿñÿ²ÿñÿ²ÿñÿ²ÿñ3„ø÷ø÷‚÷]ÿñÿñÿƒñÿÿ.÷c‚÷dŽÿñÿ²ÿñÿ²ÿñÿ²ÿñ)„ø÷ø÷‚÷lÿñÿñÿƒñÿÿ$„÷c÷÷‚sŽÿñÿ²ÿñÿ²ÿñÿ²ÿñ…ø÷ø÷ø‚÷zÿñÿñÿƒñÿÿ÷‚c÷ ‚÷Žÿñÿ²ÿñÿ²ÿñÿ²ÿñ„÷ø÷ø ‚÷ ÿñÿñÿƒñÿÿc÷‚c÷‚Žÿñÿ²ÿñÿ²ÿñÿ²ÿñ …÷ø÷ø…÷ø÷÷ÿñÿñÿƒñÿÿ÷÷cñññ÷c÷÷ÿñÿ²ÿñÿ²ÿñÿ²ÿñ÷ñ²ñ²ÿñÿ²ÿ!ÿñÿñÿ…ñÿññÿƒñÿÿ(ÿñÿ²ÿ²ÿ²ÿ²ÿ²ÿ*‰ñññÿÿñÿ+Œ²ñ²ÿ²ÿñÿ²,†ññññÿ‚ñÿ.‰²²ÿ²ÿ²ÿ²0ÿñÿ6²{1.(.lpPþT{„Œ”¥­µ½ÆÎÖÞçï÷ÿœ¥µÆÖçï÷ÿ!!!!!)!)))))1)1)1111191919999B9BBBBBJBJBJJJJJRJRJRRRRRZRZRZZZZZcZcZccccckckckkkkksksksssss{s{s{{{{{„{„{„„„„„Œ„Œ„ŒŒŒŒŒ”Œ”Œ”””””œ”œ”œœœœœ¥œ¥œ¥¥¥¥¥­¥­¥­­­­­µ­µ­µµµµµ½µ½µ½½½½½Æ½Æ½ÆÆÆÆÆÎÆÎÎÎÎÖÎÖÖÖÞÞÞçççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿¿¿¿ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿ)ÿ`ÿÿÿ(ÿ`ÿÿÿ%ÿ`ÿÿÿ$ÿ_`Eÿÿÿ$ÿ_‚``ÿÿÿ%ÿˆ_B?`_B?Bÿÿÿ#ÿ‰A?__EÿB?Aÿÿÿ!ÿ…B?B?`ÿƒ?B?ÿÿÿÿƒ?B?ÿ?ÿÿÿÿ„?B?B ÿ‚B?ÿÿÿÿ„?B?A ÿƒA?Bÿÿÿÿ…?BÿB? ÿƒB?BÿÿÿÿB?ÿƒ?B?ÿÿÿÿ…B?ÿ?Bÿƒ?B?ÿÿÿÿ…B?ÿ?BÿƒB?Aÿÿÿÿ†B?ÿÿB?ÿƒB?Bÿÿÿÿ…??ÿB? ÿ„IK\^ ÿ‚??ÿÿÿ ÿ†?Bÿÿ?Bÿ‰KKJH^\^\^ÿƒ?B?ÿÿÿ ÿ†?Aÿÿ?Aÿ…IKHHF\ƒ^\^ÿƒ?A?ÿÿÿÿ‚?Bÿ‚B?ÿˆKHJHHEEZ\…^\^\^ÿƒB?Bÿÿÿÿ‚??ÿ‚??ÿ‰IKHHFECBBZ‚\Z\‚^\ÿƒ??Bÿÿÿÿ‚B?ÿ?BÿKIJHHEEC30-*Z‚\Z\†]\^\^]ÿƒ?B?ÿÿÿ‚A?ÿ†?BIKHHEŠ663533.-(Zƒ\Z]\†^\ÿ?B?ÿÿ}ÿ‚B?ÿ–B?(HGEE!:<89663533--(Zƒ\Z]\ˆ]\^\^ÿB?ÿÿ{ÿ‚??ÿB?ÿ*EC"B?ZWZ9Š8663310-*(Z‚]Z\†WZÿB??ÿÿyÿ‚?Bÿ–?Bÿÿ$?B?ZWZWZW<9<89653„0-*WZ\Z„ÿB?Bÿÿwÿ‚?Bÿ¡?Aÿ "B?B?BWZWZWZWZW<9978663300**WZŠWWZWZÿÿ?A?ÿÿtÿ‚?Bÿ¥BB?B?B?B?ZWZWZWZWZWZW<9968654300**ZVWZ…ÿÿ?B?ÿÿrÿ‚?BÿŸ ?B?A?B?B?ZWZWZWZWZWZWZWZW<89663Š0-"TUWWZWZÿƒ??Bÿÿoÿ‚?BÿŒB?B?B?B?BBAWZWZŽWZWZWZWZWZ<<896Š5-*SWWYWZZÿƒB?Bÿÿnÿ‚B?ÿ°B?B?B?B?B?BWZWZWZWZWZWZWZWZWZWZWZ9<8900-(TVUWWZZÿ‚?Bÿÿlÿ‚B?ÿ±?B?B?B?B@A?ZWZWZWZWZWZWZWZWZWZWZWZWZ9300-(TWVZWZZÿƒ?B?ÿÿiÿ‚B?ÿ²B?B?B?B?B?BWZWZWZWZWZWZWZWZWZWZWZWZWT3300*%TWVWWZZÿƒ?B?ÿÿgÿ‚B?ÿŽB?BBA?BBA@BZZWZWZWZWZ—WZWZWZWUST6300*%TWWZWZZÿƒB?Bÿÿeÿ‚?Aÿ¶`?B?B?B?B?B?ZWZWZWZWZWZWZWZWZWZWZWZWZQTQT3300*$TWWZWZZÿƒB?Aÿÿcÿ‚?Bÿ’``B@A?BBA@B?AWZWZWZWZWZWZWZWZWZWZWZTŒ3300*TTWWZWZÿƒ?B?ÿÿ`ÿ‚??ÿ‰__`?B?B?B?W¥ZWZWZWZWZWZWZWZWZRSRSRSRT330-(TTWWZWZÿ?ÿÿ^ÿ‚?Bÿ…_`_B?B‚?A?W„ZWZWZWZWZWZWT‹S6330-(TTWWZ ÿ‚B?ÿÿ]ÿ‚A?ÿ…_?B?B?…ÿ`Bÿ‚B?ÿ‡HKKNUZWZƒ\Z\<‚68686ÿ‚B?ÿ‚??ÿÿ?ÿ`Eÿ‚B?ÿ‡?HKNQVWZ™\Z]\^\?89696969687868ÿ‚B?ÿ‚B?ÿÿAÿ‚__`‚A?ÿ‚B?ÿŒBHKNQTWWZZ\Z\‰9696968686ƒÿ‚B? ÿ‚?BÿÿBÿ`_``EÿB?Bÿÿ?BÿŠEKMNTTVWZZ\696969696878ÿ‚?Bÿ‚?BÿÿEÿ‚_Eÿ…??B??ÿ–0-QQTTWW\Z]Z\Z\69696‡866ÿ‚?? ÿ‚B?ÿÿEÿ‚BEÿƒ?B?ÿ30300QTTWW\Z\Z986969696ÿ‚B?ÿ‚B?ÿÿFÿ‚?Bÿ…?A?B?ÿ†HKKN330…-TTWWZWZWZ6969686ÿ‚A?ÿ‚B?ÿÿGÿ‚B?ÿ‡B?ÿÿB?BÿˆHKKNN5330ˆTVWZWZWZW‰86969ÿ‚B? ÿ‚?BÿÿGÿ‚??ÿ‚??ÿƒB??ÿEKN‰3300**RTTWTWUVT9696ÿ‚?Bÿ‚??ÿÿHÿ†B?ÿÿB?ÿƒ?B?ÿšEKN^^NP33--**RSTWTWTVTVT96ÿ‚?B ÿ‚B?ÿÿHÿ…?BÿA? ÿƒ?A?ÿ‹KK^\^NPN0--*QQTUTRSRSQ9ÿ‚?B ÿ‚A?ÿÿIÿ…B?`?B ÿƒB?BÿŠKN]^]^\QN0-ƒ*PQTQ‚RQÿ‚B?ÿ‚B?ÿÿIÿ…`??`` ÿƒ??BÿˆKK^\^]ZZN‘--**NMNOQNNKKÿ‚B? ÿ‚?BÿÿHÿ„``B?`ÿƒ?B?ÿ”KN^^\^Z\Z\MN-0-IKJMK…JHGÿ‚?Bÿ‚?BÿÿIÿ`Cÿƒ?B?ÿ‚30 ‚]^Z‰KN--EHFH…EEBÿ‚?A ÿ‚B?ÿÿIÿ`ÿƒB?Bÿ3šMK\Z\Z\ZBKN-ABE…BB??<ÿ‚?B ÿ‚B?ÿÿKÿ_`ƒA??ÿ‰B??ÿ30313K ‚ZZB…HIKÿ†ƒSÿ²ƒ÷SS>ƒSÿ²úøø÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷6-6-6.6.7.7.7/7/8/8/80808090919191:1:1:1:2:2÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Sÿ „øøÿÄøøJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSÿñÄøøJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSÿñ†÷SS÷÷÷÷÷÷÷÷÷©-6.6.q.7.q/7/r/8/r080s090s191s191t1:1:2:÷÷÷÷÷÷÷÷÷†÷øÿñ „øøÿÄ÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSø²Ä÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSø²ÀøS÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷6-..6./.7.//7/0/8/0080…901191°:121÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Sÿ² „øøÿÄø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷Äø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷„÷SS÷÷÷÷÷÷÷÷÷÷¡÷6.7.7/q/7/r/80r080s090s191t1:1÷÷÷÷÷÷÷÷÷÷„÷øÿñ „øøÿ1úøø÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷.7/7/7/8/8/80809090909÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Sÿ „øøÿ1†÷SS÷÷÷÷÷÷÷÷÷÷÷÷÷8/8/808080÷÷÷÷÷÷÷÷÷÷÷÷†÷øÿñ „øøÿ1ûøS÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Sÿ² „øøÿ1„÷SS÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷„÷øÿñ „øøÿ1úøø÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Sÿ „øøÿ1†÷SS÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷†÷øÿñ „øøÿ1ûøS÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Sÿ² „øøÿ1„÷SS÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷„÷øÿñ „øøÿ1úøøJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJÿ „øøÿ1û÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSñ „øøÿ1ûø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø „øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ6„øøÿ0„øøÿÿÿ0ÿ„øøÿÿÿ0ÿ„øøÿÿÿ0ÿ„øøÿÿ ÿ ÿuÿ„øøÿÿÿ0ÿ„øøÿ ÿÿ„ÿÿÿ‚ÿÿ†ÿÿÿÿÿ‚ÿÿRÿ„øøÿ ÿ‚ÿŽÿÿÿÿÿÿÿ‚ÿžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿQÿ„øøÿ ÿ‚ÿŽÿÿÿÿÿÿÿ‚ÿ–ÿÿÿÿÿÿÿÿÿÿÿ‚ÿ‚ÿQÿ„øøÿ ÿ‚ÿŽÿÿÿÿÿÿÿ–ÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿRÿ„øøÿ ÿ‚ÿŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„ÿÿÿ‚ÿUÿ„øøÿ ÿÿŽÿÿÿÿÿÿÿÿ˜ÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿÿQÿ„øøÿ ÿ‚ÿ…ÿÿÿÿ‚ÿ†ÿÿÿÿÿ‚ÿÿÿRÿ„øøÿ ÿ‚ ÿ‚ÿ‚ÿ‚ÿ†ÿÿ ÿ‚ÿfÿ„øøÿ ÿ‚ ÿŠÿÿÿÿÿ‚ÿŠÿÿÿÿÿ‚ÿfÿ„øøÿ ÿÿ†ÿÿÿÿ†ÿÿÿ‚ÿfÿ„øøÿÿÿ0ÿ„øøÿÿÿ0ÿ„øøÿÿÿ0ÿ„øøÿÿÿ0ÿ„øøÿøøÿ„øøÿø‚ÿøÿ„øøÿø‚ÿƒøøÿ„øøÿø‚ÿƒøøÿ„øøÿøZÿŠÿÿÿÿÿÿÿÿÿ ÿÿ‚ÿÿÿ‚ÿÿ[‚ÿƒøøÿ„øøÿøZ‚ÿÿ‚ÿÿ¢ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[‚ÿƒøøÿ„øøÿøZ‚ÿÿ–ÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿ ‚ÿÿ™ÿÿÿÿÿÿÿÿÿÿÿÿÿ[‚ÿƒøøÿ„øøÿø øƒZ‚ÿÿ–ÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿ ‚ÿÿ–ÿÿÿÿÿÿÿÿÿÿÿÿ[‚ÿƒøøÿ„øøÿƒø „øZ‚ÿÿšÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿ–ÿÿÿÿÿÿÿÿÿÿÿÿ[‚ÿƒøøÿ„øøÿ„ø ÿ…øZ‚ÿÿ¦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿ”ÿÿÿÿÿÿÿÿÿÿÿZ‚ÿƒøøÿ„øøÿƒø Z‚ÿÿ‡ÿÿÿÿÿ‡ÿÿÿÿÿÿ‚ÿÿÿ‚ÿÿÿÿY‚ÿƒøøÿ„øøÿøZ‚ÿÿ‚ÿÿ†ÿÿÿÿ‚ÿÿÿ ‚ÿÿg‚ÿƒøøÿ„øøÿøZ‚ÿÿ‚ÿÿŠÿÿÿÿÿÿ†ÿÿÿÿ ‚ÿÿg‚ÿƒøøÿ„øøÿøZÿ‚ÿÿ†ÿÿÿÿÿ ‚ÿÿg‚ÿƒøøÿ„øøÿø‚ÿƒøøÿ„øøÿø‚ÿƒøøÿ„øøÿø‚ÿƒøøÿ„øøÿøÿ‚øÿ„øøÿøø/øÿ„øøÿ6„øøÿ6ƒøøÿÿ7ÿ‚øøø9ø¥XœXlpæ\𨀀€€€€€€€ÀÀÀÀÜÀðʦ$I’¶Û$$$$I$m$’$¶$Û$ÿII$IIImI’I¶IÛIÿm$mIm’m¶mÛmÿ’’$’I’m’’’¶’Û’ÿ¶¶$¶I¶m¶’¶¶¶Û¶ÿÛÛ$ÛIÛmÛ’Û¶ÛÛÛÿÿ$ÿIÿmÿ’ÿ¶ÿÛU$UIU’U¶UÛUÿU$U$$U$IU$mU$’U$¶U$ÛU$ÿUIUI$UIIUImUI’UI¶UIÛUIÿUm$UmIUm’Um¶UmÛUmÿU’U’$U’IU’mU’’U’¶U’ÛU’ÿU¶U¶$U¶IU¶mU¶’U¶¶U¶ÛU¶ÿUÛUÛ$UÛIUÛmUÛ’UÛ¶UÛÛUÛÿUÿUÿ$UÿIUÿmUÿ’Uÿ¶UÿÛUÿÿª$ªIªmª’ª¶ªÛªÿª$ª$$ª$Iª$mª$’ª$¶ª$Ûª$ÿªIªI$ªIIªImªI’ªI¶ªIÛªIÿªmªm$ªmIªmmªm’ªm¶ªmÛªmÿª’ª’$ª’Iª’mª’¶ª’Ûª’ÿª¶ª¶$ª¶Iª¶mª¶’ª¶Ûª¶ÿªÛªÛ$ªÛIªÛmªÛ’ªÛÛªÛÿªÿªÿ$ªÿIªÿmªÿ’ªÿ¶ªÿÛªÿÿÿ$ÿIÿmÿ’ÿ¶ÿÛÿ$ÿ$$ÿ$Iÿ$mÿ$’ÿ$¶ÿ$Ûÿ$ÿÿIÿI$ÿIIÿImÿI’ÿI¶ÿIÛÿIÿÿmÿm$ÿmIÿmmÿm’ÿm¶ÿmÛÿmÿÿ’ÿ’$ÿ’Iÿ’mÿ’’ÿ’¶ÿ’Ûÿ’ÿÿ¶ÿ¶$ÿ¶Iÿ¶mÿ¶¶ÿ¶Ûÿ¶ÿÿÛÿÛ$ÿÛIÿÛmÿÛ’ÿÛ¶ÿÛÛÿÿ$ÿÿIÿÿmÿÿ’ÿÿ¶ÿÿÛªðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿuøsø„øÿp…øøÿp…øøÿp…øøÿp…øøÿH#ÿ…øøÿ!ÿ±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±îî±î£î±îî±îî±îî±îî±îî±îî±îî±îî±îø!ÿ…øøÿ!÷ÿÿSSSSSSÿ±‚øÿ‚ÿ…øøÿ!øSSÿø÷ø÷ø÷ø÷ø÷øSÿî‚øÿ‚ÿ…øøÿ!ƒ÷SS‚ÿÿ…SøSÿ±‚øÿ‚ÿ…øøÿ!ÿøø÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷£÷÷÷÷÷÷÷÷÷÷ÿ÷÷÷÷ø÷Sÿî‚øÿ‚ÿ…øøÿ!ÿ÷SS±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î±î—±î±î±î±î±î±î±î±î±î±î±ÿ‰÷øSÿ±‚øÿ‚ÿ…øøÿ!†øS÷÷ÿÿ‹÷÷SS÷Sÿî‚øÿ‚ÿ…øøÿ„†ƒ‡÷SSøøÿ‡SSSÿ±‚øÿ‚ÿ…øøÿ„†ƒ‡øø÷÷S–JJJJJJJJJJJJRJšJRJJJJJJJJRJR˜šÓ˜ÔÓÔÔÔÔÔÔ˜ÔÔÓÔ˜ÔŒÿÿ÷SS±÷Sÿî‚øÿ‚ÿ…øøÿ„†‡÷SSøøJ”JJJJJJJJJJJJJ˜JJJJJJJJRJR ˜œÓ˜ÔÓÔÔÔÔÔÔÔ˜ÔÔÓÔ˜ÔÓÔŒÿÿSøî÷Sÿ±‚øÿÿÿÿ ÿ‚ÿ…øøÿ„…‚‡øS÷÷SJ–JJJJJJJJJJIJJIJRJšJRJJJJJJJJRJR˜§Ó˜ÔÓÔÔÔÔÔÔ˜ÔÔÓÔ˜ÔÓÿSÿ÷Sÿî‚øÿÿÿƒÿÿÿ‚ÿ…øøÿ‡‡÷SSøøJ”JJJJJJJJJJJJRJ˜JRJJJJJJJJJRJR ˜œÓ˜ÔÓÔÔÔÔÔÔÔ˜Ô˜ÔÓÔ˜ÔÓ ÔŠÿSÿîSÿ±‚øÿÿÿƒÿÿÿ‚ÿ…øøÿ†‡øø÷÷S–JJJJJJJJJJJJRJšJRJJJJJJJJRJR˜šÓ˜ÔÓÔÔÔÔÔÔ˜ÔÔÓÔ˜ÔŒÓÔSÿ±÷Sÿî‚øÿÿÿƒÿÿÿ‚ÿ…øøÿ‡÷SSøøJ”JJJJJJJJJJJJJ˜JJJJJJJJRJR ˜œÓ˜ÔÓÔÔÔÔÔÔÔ˜ÔÔÓÔ˜ÔÓ Ôˆÿî÷Sÿ±‚øÿÿÿƒÿÿÿ‚ÿ…øøÿ‡øS÷÷SJ–JJJJJJJJJJIJJIJRJšJRJJJJJJJJRJR˜§Ó˜ÔÓÔÔÔÔÔÔ˜ÔÔÓÔ˜ÔÓÔÓÔÿ÷Sÿî‚øÿÿÿƒÿÿÿ‚ÿ…øøÿ‡÷SSøø‡ÿîSÿ±‚øÿÿÿƒÿÿÿ‚ÿ…øøÿ!†øø÷÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøS‰øSS±÷Sÿî‚øÿÿÿƒÿÿÿ‚ÿ…øøÿ!ÿ÷SSø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷£ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷÷Sÿ±‚øÿÿÿ ÿ‚ÿ…øøÿ!ÿøS÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷£÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Sÿî‚øÿ‚ÿ…øøÿ!ƒ÷SSƒSÿ±‚øÿ‚ÿ…øøÿ!ÿøøJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJS£JSJSJSJSJSJSJSJSJÿî‚øÿ‚ÿ…øøÿ!ÿ÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSø£SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSø±‚øÿ‚ÿ…øøÿ!ÿø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø£÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø ‚ÿ…øøÿH"øÿ…øøÿp…øøÿp…øøÿp…øøÿp…øøÿp…øøÿp…øøÿp…øøÿp…øøÿp…øøÿp…øøÿp…øøÿp…øøÿp…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿo‰JJJJo…øøÿi•JJJJJJJJJJi…øøÿdJSJRJSJRJSJRJSJSJ‡SJJJJd…øøÿ`‡JJJJJJJJJJJJJJJa…øøÿ]J™SJRJSJSJSJSJSJSJSJSJSJSJSJŒSJJRJJJJ]…øøÿ[†JJJJ‘JJRJJRJJRJJRJJJJJJJJJJ[…øøÿXJ³SJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJRJSJJJJX…øøÿVˆJJJJSJSJRJSJSJSJSJSJSJSJRJSJRJSJRJSJ‚RJŠJJJJJW…øøÿT¿JJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJRJSJJJJJT…øøÿS‚JJ„JJSJ¡SJRJSJSJSJSJSJSJSJSJSJSJSJRJSJRJSJ‚RJŒJJJJJJS…øøÿQÅJSJSJSJSJSJJSJRSJRSJRJRJRSJRSJRSJJSJJSJSJSJSJSJSJRJSJJJQ…øøÿP¶JJJSJRJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJRJSJ‚SJˆJJJJQ…øøÿNÁRJSJSJSJSJSJJSJRSJRSJRJRJRJRSJRSJRSJJSJSJSJSJSJSJSJSJ‡SJJJJN…øøÿM»JJJJSJRJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJRJSJ‚SJŠJJJJM…øøÿKÊSJSJJSJRSJSRSRSRSRSRSRSRSRSRSJRSJRSJJSJSJSJSJSJSJƒJK…øøÿJÄJJSJSJSJSJSJSJSJSJSJSJJSJJSJJSJJSJJSJJSJSJSJSJSJSJSJSJSJSJSJSJ‚SJ†JJJK…øøÿIÕJSJSJSJSJRSJSRSRSRSRSRSRSRSRSRSJSJRSJJSJJSJSJSJSJSJSJJJJI…øøÿHÈJJSJRJSJSJSJSJSJSJSJSJSJSJJSJJSJJSJJSJSJSJSJSJSJSJSJSJSJSJSJSJSJRJSJ‹RJJJJJI…øøÿGÙJSJSJRSJSRSSSSSSSSSSSSSSSSSSSSSSSRSJRSJRSJJSJSJSJSJRJRJJG…øøÿFÐJJSJSJSJSJSJSJJSRJSRJSRJSRJRJRJSRJSRJSRJSRJSJJSJSJSJSJSJSJSJSJRJSJ‡JJJF…øøÿEÝJSJSJJSJSRSRSSSSSSSSSSSSSSSSSSSRSRSJSJRSJJSJSJSJSJSJSJJJJE…øøÿDÐJJSJSJSJSJSJSJSJSJJSRJSRJSRJSRJSRJSRJSRJSRJSJJSJJSJSJSJSJSJSJSJSJSJSJ‚RJ†JJJE…øøÿCáJSJSJSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSRSJRSJJSJSJSJSJRJRJJC…øøÿBØJJSJSJSJSJJSRJSRJSJSRSRSRSRSRSRSRSJRJSRJSRJSJJSJSJSJSJSJSJRJSJ†JJJC…øøÿAåSJSJRSJSRSSSSSSSSSSSSSSSSSSSSSSSSSSSRSRSJRSJJSJSJSJSJSJSJJJJA…øøÿAÜJJSJSJSJSJSJSJJSRJSRJSJSRSRSRSRSRSJSJRJSRJSRJSJJSJSJSJSJSJSJSJSJRJSJ†JJA…øøÿ@ SJSJSRSSSSSSSSSSSSSSS¸SSSSSSSSSSSSSSSSRSJRSJJSJSJSJSJRJRJ@…øøÿ?ßJJSJSJSJSJJSRJSRSRSRSRSSSSSSSSSRSRSRSRSJRJSRJSRJSJSJSJSJSJSJSJSJ†JJ?…øøÿ>ëSJSJRJSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSJRSJJSJSJSJSJSJSJJJJ>…øøÿ>ÞJSJSJSJSJSJSRJSRJSRSRSRSRSRSRSRSRSRSRSRSJRJSRJSJJSJSJSJSJSJSJSJSJ‚RJ„JJ?…øøÿ=—JSJSRSSSSSSSS¡S˜S˜S˜S˜S˜S˜S˜S˜SS«SSSSSSSSSSRSJRSJJSJSJSJSJJJ=…øøÿ<çJSJSJSJSJJSRJSRSRSSSSSSSSSSSSSSSSSSSSSRSRSRSJSRJSRJSJSJSJSJSJSJRJSJ„JJ=…øøÿ<šSJRJSSSSSSSSSSSSS˜S˜S˜SSS²SSSSSSSSSSSSRSJRSJJSJSJSJSJSJSJJJ<…øøÿ;åRJRJSJSJSJSRJSRRSRSRSRSSSSSSSSSSSSSSSRSRSRSJSJSRJSRJSJSJSJSJSJSJSJSJ‰RJJJJ;…øøÿ;‘JRRSSSSSS’S˜S˜S˜S˜S˜˜˜”˜S˜S˜S˜S˜S©SSSSSSSSSSRSJRSJJSJSJSJSJJ;…øøÿ:óJSJSJSJJSRRSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSRSJRJSRJSJSJSJSJSJSJRJRJJJ:…øøÿ:”SJSJSSSSSSSSS¥S˜S˜S˜S˜S˜S˜S˜S˜S˜SªSSSSSSSSSSSSRSJRSJJSJSJSJSJ‚J:…øøÿ9ëJJSJSJSJSRJSRSRSSSSSSSSSSSSSSSSSSSSSSSSSRSRSRSJSRJSRJSJSJSJSJSJSJRJSJ†JJ9…øøÿ9JSJSSSSSS†S˜S˜˜™˜™˜™˜™˜™˜™˜™˜™¶˜S˜S˜S˜SSSSSSSSSSRSJRSJSJSJSJRJJ9…øøÿ8îJSJSJJSRRSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSRSJRJSRJSJSJSJSJSJSJ„JJ9…øøÿ8’SJSRSSSSSSŠS˜S˜S˜˜˜˜˜˜”˜S˜S˜S˜S˜SªSSSSSSSSSSRSJRSJJSJSJSJSJJJ8…øøÿ7ùJJSJSJSJJSRSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSRSRSJSRJSJJSJSJSJSJSJSJRJRJJJJ7…øøÿ7JSSSSSS†S˜S˜­™˜™˜™˜™˜™˜™˜™˜™˜™˜™˜™˜™°˜S˜S˜SSSSSSSSSSRSSJJSJSJSJSJJ7…øøÿ7ùSJSJSRJSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSRSJSRJSJSJSJSJSJSJRJSJJJ7…øøÿ6SJSJSSSSSSŠS˜S˜S˜˜˜™˜™˜™˜™˜™˜™˜™˜Œ˜S˜S˜S¢SSSSSSSSSSRSSJJSJSJSJSJ‚J6…øøÿ6òJSJSJJSRJSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSRSRSJSRJSJSJSJSJSJSJSJSJ„JJ7…øøÿ6ŠSJSSSS†S˜S˜µ™˜™˜™˜™˜™˜™˜™˜™™™˜™˜™˜™˜™˜™­˜S˜S˜SSSSSSSSRSJRSJSJSJSJJJ6…øøÿ5¢SJSJJSSRSSSSSSSSSSSSSSS˜S˜S˜S¸SSSSSSSSSSSSSSSSRSRRJSRJSJSJSJSJSJSJ„JJ5…øøÿ5JSRSSSS†S˜S˜­˜˜™˜™˜™˜™˜™˜™˜™˜™˜™˜™˜™Œ˜S˜S˜S¥SSSSSSSSRSJRSJJSJSJSJSJJ5…øøÿ5°RJSJSRJSRSSSSSSSSSSSSSSSSSSSS¸SSSSSSSSSSSSSSRSRSJRJSRJSJSJSJSJSJSJ‡RJJJ5…øøÿ5‹RRSSSS‚S˜½™˜™˜™˜™˜™™™™™™™™™™™™™™™˜™˜™˜™˜™ˆ˜S˜SŸSSSSSSSSRSSJJSJSJSJSJ5…øøÿ4›JSJSRJSRSSSSSSSSS¡S˜S˜S˜S˜S˜S˜S˜S˜S¸SSSSSSSSSSSSRSRSJSRJSJJSJSJSJSJRJRJJ5…øøÿ4“SJSSSSSS˜S˜µ˜˜™˜™˜™˜™˜™˜™™™™™™™˜™˜™˜™˜™Œ˜S˜S˜S¢SSSSSSSSRSJJSJSJSJSJJJ4…øøÿ4¥JSJSJSRRSRSSSSSSSSSSSSSÌS˜S˜S˜S˜S˜SSSSSSSSSSSSSSRSRSJSRJSJJSJSJSJSJRJSJƒJ4…øøÿ4ˆSSSS‚S˜Å™˜™˜™˜™™™™™™™™™™™™™™™™™™™™™™™˜™˜™˜™ˆ˜S˜SœSSSSSSRSJJSJSJSJSJJ4…øøÿ3«RJSJSRRSSSSSSSSSS˜S˜S˜S˜˜˜™˜™˜™Š˜S˜S˜S¶SSSSSSSSSSSSRSRRJSRJSJSJSJSJRJSJJ3…øøÿ3‹JSRSSSS†S˜S˜¹™˜™˜™˜™˜™™™™™™™™Ô™™™™™™˜™˜™˜™®˜S˜S˜SSSSSSSSRSJRSJSJSJSJJJ3…øøÿ3¢SJSJJSRSSSSSSSSSSSS¡S˜S˜˜˜˜™™™™™˜˜S˜S°SSSSSSSSSSSSRSJRJSRJSJSJSJSJSJSJ„JJ3…øøÿ3‰JSSSS‚S˜𙘙˜™™™™™™™™™™™™Ô™Ô™Ô˜Ô™Ô˜Ô˜™™™™™™˜™˜™˜™˜˜S˜S˜SSSSSSSSJRSJSJSJSJJ3…øøÿ3ÃSJJSSRSSSSSSSS˜S˜S˜S˜˜™˜™˜™™˜Ô˜™˜Ô™˜™™™†˜S˜S¬SSSSSSSSSSRSRSJSRJSJSJSJSJSJSJ‚J3…øøÿ3‹JRSSSS‚S˜Ì™˜™˜™˜™˜™™™™™™™™Ô™Ô™Ô™Ô™Ô™Ô˜Ô˜™™™™˜™˜™˜˜S˜S˜SŸSSSSSSRSJRSJJSJSJRJJ3…øøÿ3žSJSJJSRSSSSSSSSSSØS˜S™˜™˜™™˜Ô˜Ô™Ô˜Ô™Ô™™˜˜S˜SSSSSSSSSSSSRSRSJSRJSJSJSJSJSJSJ„JJ3…øøÿ3ŠJSSSS˜͘˜™˜™˜™™™™™™™™Ô˜™Ô˜Ô˜Ô™Ô™ÜÔÜÔÝÔÔ™Ô™Ô˜Ô˜™™™™™™˜™˜™˜™¤˜S˜SSSSSSSSRRSJJSJSJJ3…øøÿ3”SJJSRSSSSSS¡S˜S˜S˜˜™˜™™™™˜Ô˜Ô™Ü™ÔŒ™Ô™Ô˜™˜™™™†˜S˜S¨SSSSSSSSSSRSJRJSJSJSJSJSJSJ‚J3…øøÿ3RRSSSS˜S˜Á™˜™˜™˜™™™™™™Ô˜Ô˜Ô™Ô™ÜÔÜÔÝÔÜÔÜÔÔ™Ô™Ô˜Ô˜™™™™˜™˜™ª˜S˜S˜SSSSSSSSRSSJJSJSJSJR3…øøÿ3šSJSRJSRSSSSSSSS­S˜S˜˜™™™™˜Ô˜Ô™Ü™ÜÔܙԙԙԙԙ™˜˜S¬SSSSSSSSSSRSRSJSRJSJSJSJSJSJSJ…RJJ3…øøÿ3ŠJSSSS˜Í™˜™˜™™™™™™™™™˜™Ô˜Ô˜Ô™Ô™ÜÔÝÔÝÜÝÔÝÔÝÔÝÔÔ™Ô™Ô˜Ô˜™™™™™™˜™˜™ˆ˜S˜S™SSSSSSRSSJJSJSJJ3…øøÿ3¼SJJSSSSSSSS˜S˜S˜S™˜™™™™˜Ô™Ô™Ü™ÜÔÝÔÝÔݙԑ™Ô™Ô˜™˜™˜˜S˜S¨SSSSSSSSSSRSRRJSJJSJSJSJSJ‚J3…øøÿ3ÿRRSSSS˜S˜˜™˜™˜™˜™™™™™˜™Ô™Ô™Ü™Ü™ÝÜÝÜÝÜÝÔÝÔÜÔÜÔÔ™Ô™Ô˜Ô™™˜™˜™˜˜S˜S˜SSSSSSSSRSSJJSJSJSJ‚R3…øøÿ3šSJSRJSSSSSSSSSS¬S˜S™˜™™™™™Ü™Ü™Ý™ÝÜÝÔÜÔܙԙԙԙԙ™‚˜S¨SSSSSSSSSSRSJRJSJSJSJSJSJSJ…RJJ3…øøÿ3…JSS‚S˜¨™˜™˜™™™™™™™™Ô˜™Ô˜Ô™Ô™Ü™ÝÜÝÜÝ­ÜÝÜÝÔÝÔÝÔÝÔÔ™Ô™Ô™™™™™˜™˜™˜˜S˜S™SSSSSSRSSJJSJSJJ3…øøÿ3ÀSJJSSSSSSSS˜S˜S˜˜™˜™™™™™Ô™Ü™Ý™ÝÜÝÜÝÜÝÔÝÔݙԈ™Ô˜Ô™˜­˜S˜SSSSSSSSSSRSRRJSJJSJSJSJSJ‚J3…øøÿ3‡JRSS‚S˜¤˜˜™˜™˜™™™™™™íÔ˜™Ô™Ô™Ý™Ý¡ÝÊ ÝÝÜÝÜÝÔÝÔÜÔܙԘԘ™™™™˜™˜™S˜S˜SSSSSSSSRSSJJSJSJSJJ3…øøÿ3¶SJSRJSSSSSSSSSS˜Sîåîåîåîåîå™™Ü™Ý¡Ý¡ÝÜÝÜÝÔÜÔܙԙԘ™™‚˜S¨SSSSSSSSSSRSJRJSJJSJSJSJSJ„JJ3…øøÿ3…JSS‚S˜”™˜™˜™™™™™îîíîíîíî…íî™Ý™ÝÌ Ý Ý ÝÝÜÝÜÝÔÝÔܙԙÔÔ™™™™˜™˜™˜˜S˜S˜SSSSSSRSSJJSJSJJ3…øøÿ4¶JJSSSSSSSS˜S˜SåîåîåîåîåîåîåîåîåîåܙݡÝÝ ÝÜÝÔÝ™ÜÔÔ™Ô˜Ô™™†˜S˜S¤SSSSSSSSRSRSJSJJSJSJSJSJ4…øøÿ4†SRSS‚S˜Œ˜˜™˜™˜îíîíîíîíî…íîîÝ¡Ý¡ ÝÝÜÝÜÝÔÝÔܙԙԘԙ™™™˜™˜™¥˜S˜SSSSSSSSRSSJJSJSJRJJ4…øøÿ4ÍJSJJSRSSSSSSSSîåîåîåîåîåîåîåîåîåîåîåîåܙݡݡݙݙݙܙԙԘԙ˜S˜S¨SSSSSSSSSSRSJRJSJJSJSJSJSJƒJ4…øøÿ4‰SSSS˜Œ™˜™˜™™îíîíîíîíîíîíîÜÝÈÜÝÜÝÔÝÔÜÔܙԘԘ™™™™™™˜™˜™˜™S˜S˜SSSSSSRSSJJSJSJJ4…øøÿ5ÉSJSRSSSSSS˜Såîåîåîåîåîåîåîåîåîåîåîåîåîåܙݙݙݙܙܙԙԙ™˜˜‚˜S¨SSSSSSSSSSRSRRJSJJSJSJSJSJ5…øøÿ5™JSSSS˜S˜˜™˜™îîíîíîíîíîíîíîÍíîîÝ™ÝÔݙݙܙܙԘԘ™™™™˜™˜™˜™S˜S˜SSSSSSSSRRSJJSJSJJ5…øøÿ5÷SJJSRSSSSSSåîåîåîåîåîåîåîåîåîåîåîåîåîåîåîåܙܙԙԙԙԙ™˜˜S˜SSSSSSSSSSSSRSJRJSJSJSJSJSJSJ‚J5…øøÿ5ˆRSSS˜Œ™˜™˜™îíîíîíîíîíîíîíî±íî™Ü™Ý™Ü™Ü™Ô™Ô˜™Ô™™™™™™˜™˜™˜˜S˜S—SSSSSSJRSJSJSJSJ5…øøÿ6´JSRRSSSSSSîåîåîåîåîåîåîåîå÷cîåîåîåîåîåîåîåî™–Ô˜™™Ô™™™™˜˜S˜S«SSSSSSSSSSRSJRJSJSJSJSJSJSJ6…øøÿ6SSSS˜S˜„™˜íîíîíî‚í÷„÷÷íîíîíîÈíî™Ô™Ô™Ô˜Ô˜™Ô™™™™˜™˜™˜™S˜S˜SSSSSSSSJRSJSJSJSJJ6…øøÿ6ÇJSJSSRSSSSSSîåîåîåîåîåîc÷c÷c÷c÷c÷cîåîåîåîåîåîå™™™™™™™˜˜S¬SSSSSSSSSSSSRSJSRJSJSJSJSJSJSJ6…øøÿ7…RSSS˜˜™˜™îîíîíî÷÷÷÷÷÷÷îíîíî­˜Ô˜Ô˜Ô˜ÔÔ˜™Ô™™™™™™˜™˜™˜˜S˜S•SSSSSSJRSJSJSJ7…øøÿ7œSJRSSSSSSîåîåîåîåîc÷c÷c÷¥c÷åîåîåîåîåîå™™™™™™˜™˜˜S˜SªSSSSSSSSSSRSJSRJSJSJSJSJRJSJ7…øøÿ7‡JSSS‚S˜„™˜íîíî‚÷÷÷÷„÷÷íîíîÇíîî™Ô˜™Ô˜™™™™™™˜™˜™˜™S˜S˜SSSSSSRSJRSJSJSJS7…øøÿ8ÅJSRRSSSSSåîåîåîåîc÷c÷c÷c÷c÷c÷c÷c÷cîåîåîåîåîå˜™˜˜S˜S¯SSSSSSSSSSRSRSJSRJSJSJSJSJRJSJ8…øøÿ8‰SSSS˜ˆ™˜™îîíî•÷÷÷÷÷÷÷÷÷îîíîíî¢íÔ˜™Ô˜™™™™™™™™™™˜™˜™ˆ˜S˜S”SSSSRSJJSJSJJ8…øøÿ9–SJSRSSSSSîåîåîc÷c÷c÷c÷˜c÷÷îåîåîåîåîå™˜™Š˜S˜S˜S¤SSSSSSSSSSRSJSRJSJSJSJSJ9…øøÿ9–JSSSS˜S˜˜íîî÷÷÷÷÷÷„÷÷íîíîžíîî™™™™™™˜™˜™˜™˜™ˆ˜S˜S™SSSSSSRSJJSJSJJ9…øøÿ:¶JJSRSSSSîå÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷cîåîåîåîåîå†˜S˜S¬SSSSSSSSSSSSRSRRJSJJSJSJSJSJ:…øøÿ:†SSSS˜˜™÷÷÷÷÷÷÷÷÷÷÷îíîíîÂí™™™™™™™™™™™˜™˜™˜™S˜S˜SSSSSSRRSJSJSJS:…øøÿ;SRRSSSSS÷c÷c÷c÷c÷c÷”cîåîåîåîåîåî嘙˜˜Š˜S˜S˜SªSSSSSSSSSSRSRRJSJJSJSJSJSJ;…øøÿ;‡SSSS†S˜÷÷÷÷÷÷÷„îîíîíîÃíî™™™™™™˜™˜™˜™˜˜S˜S˜SSSSSSSSJRSJSJSJSJ;…øøÿ<¹JSRRSSS÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷åîåîåîåîåîåîå˜S˜S˜S³SSSSSSSSSSSSSSRSJSRJSJSJSJSJSJSJ<…øøÿ<„SSS˜÷÷÷÷÷÷÷÷÷÷÷îîíîíîíîÀ™™™™™™™™™˜™˜™˜™˜˜S˜SSSSSSSSJJSJSJJ<…øøÿ=ŠSJSR÷÷c÷c÷c÷c÷c÷¥c÷åîåîåîåîåîåîåîS˜S˜S˜S˜S˜S¤SSSSSSSSSSRSJSRJSJSJSJSJ=…øøÿ>…SS÷÷÷÷÷÷„îîíîíîíîš™™™˜™˜™˜™˜™˜™ˆ˜S˜S˜SSSSSSRSJJSJSJJ>…øøÿ>¯JSJSc÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷åîåîåîåîåîåîåîå˜SS°SSSSSSSSSSSSSSRSRRJSRJSJSJSJSJ>…øøÿ?…R÷îíî•í÷÷÷÷÷÷÷÷îîíîíîíîÁí™™™™™™™™™˜™˜™˜™˜™S˜S˜SSSSSSRRSJJSJ?…øøÿ@‹åîåîåîåîåîc÷c÷c÷¡c÷åîåîåîåîåîåîåîå˜S˜S˜S˜SS©SSSSSSSSSSRSRRJSJSJSJSJSJR@…øøÿ?ƒîîíîíî‚íî÷÷÷„÷îíîíîíîší™˜™˜™˜™˜™˜™˜™¤˜S˜S˜SSSSSSSSJRSJSJSJA…øøÿ>èåîåîåîåîåîåîåîc÷c÷c÷c÷c÷cîåîåîåîåîåîåîSSSSSSSSSSSSSSSSSSSSRSRSJSRJSJSJSJSJRJRJA…øøÿ>‚îíîíîíîíî÷÷÷÷÷îíîíîÆíîî™™™™™™™™™™˜™˜™˜™˜™S˜S˜SSSSSSRSJJSJSB…øøÿ=’îåîåîåîåîåîåîåîåîc÷¡c÷÷Såîåîåîå˜S˜S˜S˜S˜S®SSSSSSSSSSSSRSRSJSRJSJSJSJSJC…øøÿ=íîíîíîíî‚í÷©÷˜˜™˜™˜™˜™˜™˜™˜™˜™˜™¥˜S˜S˜SSSSSSSSRRSJJSJSD…øøÿ=åîåîåîåîåîåîåîåîåîc÷c÷cSSSSSSSSSSSSSSSSSSSSSSSSSSRSRSJSRJSJSJSJSJSJSJE…øøÿ=ƒîîíîíîíîíîÒ÷÷™˜™˜™˜™˜™˜™˜™˜™˜™˜™˜™˜™S˜S˜SSSSSSRSJJSJSF…øøÿ=ªîåîåîåîåîåîåîåîåîå÷÷SSSSSSSSSSS¶SSSSSSSSSSSSSSSSRSRSJSRJSJSJSJSJJG…øøÿ>îíîíîíî…íî÷÷S†S˜S˜˜™˜™˜™˜™˜©˜S˜S˜S˜SSSSSSSSRSSJJSJSH…øøÿ>àåîåîåîåîåîåîåîåîc÷RSRSSSSSSSSSSSSSSSSSSSSSSSRSRSJSRJSJSJSJSJSJSJI…øøÿ?íîíîíî…íîîS†S˜S˜™˜™˜™˜™˜™˜™˜™˜™¡˜S˜S˜SSSSSSRSJJSJSJ…øøÿ?ÝîåîåîåîåîåîåîåîJSRSSSSSSSSSSSSSSSSSSSSSSSSSRSRSJSRJSJSJSJSJK…øøÿ@‚îíîíîíîJSSSSSS½S˜S˜S˜S˜S˜S˜S˜S˜SSSSSSSSSSRRSJJSJM…øøÿAØîåîåîåîåîåîJSJSRJSRSRSSSSSSSSSSSSSSSRSRSJRJSRJSJSJSJSJRJRN…øøÿCíîƒíîîˆSSSS¼S˜S˜S˜S˜S˜S˜S˜S˜S˜SSSSSSSSRSSJJSP…øøÿQÅSJSRJSRSSSSSSSSSSSSSSSSSRSRSJSRJSJSJSJSJSJSQ…øøÿS“SRSSSSSSSSSS£SSSSSSSSSSSSRSJRSJSJS…øøÿT¿JSJJSRJSRSRSRSRSRSRSRSJSJSRJSJSJSJSJSJSJJT…øøÿV’SRSSSSSSSSSSžSSSSSSSSSSSSJJSJSV…øøÿX·JSJSRJSRSRSRSRSRSRSRSJSRJSJJSJSJSJSX…øøÿ[±RRSSSSSSSSSSSSSSSSSRSJRSJSJ[…øøÿ]­SJSJSJJSRJSRJSRJSRJSRJSJJSJSJSJSJSJSJJ]…øøÿ`§SRSSSSSSSSSSSSSRSSJJS`…øøÿdŸJSJSJJSJJSJJSJJSJSJSJSJSJSJd…øøÿh—SJRSJSJSJRSJJSJSh…øøÿo‰SJRJSJRJSo…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿh…øøÿj…øøÿÿjÿ…øøÿÿjÿ…øøÿÿjÿ…øøÿÿ ÿYÿ…øøÿÿjÿ…øøÿ ÿÿ„ÿÿÿ‚ÿIÿ…øøÿ ÿ‚ÿŽÿÿÿÿÿÿÿJÿ…øøÿ ÿ‚ÿŽÿÿÿÿÿÿÿJÿ…øøÿ ÿ‚ÿŽÿÿÿÿÿÿÿJÿ…øøÿ ÿ‚ÿŽÿÿÿÿÿÿÿJÿ…øøÿ ÿÿŽÿÿÿÿÿÿÿJÿ…øøÿ ÿ‚ÿ…ÿÿÿÿIÿ…øøÿ ÿ‚ ÿ‚ÿ‚ÿJÿ…øøÿ ÿ‚ ÿŠÿÿÿÿÿJÿ…øøÿ ÿÿ†ÿÿÿNÿ…øøÿÿjÿ…øøÿÿjÿ…øøÿÿjÿ…øøÿÿjÿ…øøÿøBøÿ…øøÿøXÿe‚ÿøÿ…øøÿøW†ÿÿÿÿd‚ÿƒøøÿ…øøÿø[‚ÿÿd‚ÿƒøøÿ…øøÿø-‚ÿÿ‚ÿÿÿÿÿˆÿÿÿÿÿˆÿÿÿÿ‚ÿÿÿÿ„ÿÿ„ÿÿÿ‚ÿÿ/‚ÿƒøøÿ…øøÿø-‚ÿÿ¶ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿšÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/‚ÿƒøøÿ…øøÿø-‚ÿÿ†ÿÿÿÿªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿšÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/‚ÿƒøøÿ…øøÿø øƒ-‚ÿÿ†ÿÿÿÿ©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿšÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/‚ÿƒøøÿ…øøÿƒø „ø-‚ÿÿ„ÿÿÿÿ¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿšÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/‚ÿƒøøÿ…øøÿ„ø ÿ…ø-ÿ´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜ÿÿÿÿÿÿÿÿÿÿÿÿÿ.‚ÿƒøøÿ…øøÿƒø -‚ÿÿ‚ÿÿÿÿÿˆÿÿÿÿÿ‚ÿ‚ÿ‚ÿÿÿ…ÿÿÿ‚ÿÿ-‚ÿƒøøÿ…øøÿø-‚ÿÿ‚ÿÿ†ÿÿÿÿ‚ÿÿ‚ÿÿ‚ÿÿ ‚ÿÿ‚ÿÿ;‚ÿƒøøÿ…øøÿø-‚ÿÿ‚ÿÿŠÿÿÿÿÿÿ ‚ÿÿ‚ÿÿ‚ÿÿ Šÿÿÿÿÿÿ;‚ÿƒøøÿ…øøÿø-‚ÿÿ‚ÿÿŠÿÿÿÿÿÿ ‚ÿÿÿ†ÿÿÿÿ?‚ÿƒøøÿ…øøÿøB‚ÿƒøøÿ…øøÿøB‚ÿƒøøÿ…øøÿøB‚ÿƒøøÿ…øøÿøBÿ‚øÿ…øøÿøiøÿ…øøÿpƒø…¿|¿lp¦L­v€€€€€€€€€ÀÀÀÀÜÀðʦ$I’¶Û$$$$I$m$’$¶$Û$ÿII$IIImI’I¶IÛIÿm$mIm’m¶mÛmÿ’’$’I’m’’’¶’Û’ÿ¶¶$¶I¶m¶’¶¶¶Û¶ÿÛÛ$ÛIÛmÛ’Û¶ÛÛÛÿÿ$ÿIÿmÿ’ÿ¶ÿÛU$UIU’U¶UÛUÿU$U$$U$IU$mU$’U$¶U$ÛU$ÿUIUI$UIIUImUI’UI¶UIÛUIÿUm$UmIUm’Um¶UmÛUmÿU’U’$U’IU’mU’’U’¶U’ÛU’ÿU¶U¶$U¶IU¶mU¶’U¶¶U¶ÛU¶ÿUÛUÛ$UÛIUÛmUÛ’UÛ¶UÛÛUÛÿUÿUÿ$UÿIUÿmUÿ’Uÿ¶UÿÛUÿÿªª$ªIªmª’ª¶ªÛªÿª$ª$$ª$Iª$mª$’ª$¶ª$Ûª$ÿªIªI$ªIIªImªI’ªI¶ªIÛªIÿªmªm$ªmIªmmªm’ªm¶ªmÛªmÿª’ª’$ª’Iª’mª’¶ª’Ûª’ÿª¶ª¶$ª¶Iª¶mª¶’ª¶Ûª¶ÿªÛªÛ$ªÛIªÛmªÛ’ªÛÛªÛÿªÿªÿ$ªÿIªÿmªÿ’ªÿ¶ªÿÛªÿÿÿ$ÿIÿmÿ’ÿÿ¶ÿÛÿ$ÿ$$ÿ$Iÿ$mÿÿÿ$’ÿ$¶ÿ$Ûÿ$ÿÿIÿI$ÿIIÿImÿI’ÿI¶ÿIÛÿIÿÿmÿm$ÿmIÿmmÿm’ÿm¶ÿmÛÿmÿÿ’ÿ’$ÿ’Iÿ’mÿ’’ÿ’¶ÿ’Ûÿ’ÿÿ¶ÿ¶$ÿ¶Iÿ¶mÿ¶¶ÿ¶Ûÿ¶ÿÿÛÿÛ$ÿÛIÿÛmÿÛ’ÿÛ¶ÿÛÛÿÿ$ÿÿIÿÿmÿÿ’ðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿWøøøUø„øÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿR…øøÿ ÿ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ8…øøÿ ÷SSSSSSS|ÿ²ÿ…øøÿ øÿ÷ø÷ø÷ø÷ø÷ø÷{S‚ÿñø1…øøÿ „÷Sÿÿ‚øS{ƒSÿ²‚øÿ…øøÿ ÿøøÿ÷÷÷÷S÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øÿñ‚øÿ…øøÿ †÷SSÿ÷ÿ÷SS²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ„Sÿ²‚øÿ…øøÿ ŒøSÿÿ÷÷SSzÿ†²÷Sÿñ‚øÿ…øøÿ †÷SSÿ‚øy‡ÿñSÿ²‚øÿ…øøÿ §øø÷ÿÿ÷øSJJJJJSSSSSøSøSøSøSøSøøšøžšøšø÷ø÷ø÷ø÷c÷c÷c÷c÷÷c÷÷÷÷ –ññññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿˆÿ÷øÿñ‚øÿ…øøÿ|‚¦÷SSÿÿøSSJJJJJJJSSSJSS‰øSøSøSøSšøšøšøšøšø÷ø÷ø÷ø÷ø÷c÷ˆ÷÷÷÷ñññññ²ñ²ñ²ñ²ñ‰²ÿñÿñÿñÿñÿˆÿñSÿ²‚øÿ„ÿÿÿ ÿ…øøÿ|‚ŠøS÷÷ÿSJžJJJJJSSSSSS†øSøSøSøSøš÷ø÷ø÷ø÷ø÷ø÷c÷c÷c÷c÷÷c÷÷ š²²ñ²ññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿˆÿ²÷Sÿñ‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ^‚‚‰‚„‰÷SSøøÿø˜JJJJJJJJSSSJSJS‰øSøSøSøSšøšøšøšøšø÷ø÷ø÷ø÷ø÷c÷ˆ÷÷÷÷èèèñññññ²ñ²ñ‰²ÿñÿñÿñÿñÿˆÿñSÿ²‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ^‚ž ‰øø÷÷SšJJJJJSSSSSøSøSøSøSøSøøšøžšøšø÷ø÷ø÷ø÷c÷c÷c÷c÷÷c÷÷÷÷ –ññññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿˆÿ÷øÿñ‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ^‚‘Š ‡÷SSøøœJJJJJJJSSSJSS‰øSøSøSøSšøšøšøšøšø÷ø÷ø÷ø÷ø÷c÷ˆ÷÷÷÷ñññññ²ñ²ñ²ñ²ñ‰²ÿñÿñÿñÿñÿˆÿñSÿ²‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ^‚‚‹† ‡øS÷÷SžJJJJJSSSSSS†øSøSøSøSøš÷ø÷ø÷ø÷ø÷ø÷c÷c÷c÷c÷÷c÷÷ š²²ñ²ññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿˆÿ²÷Sÿñ‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ^‚‚ƒ ‡÷SSøø~‡ÿñSÿ²‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ^‚‚‚‚„†øø÷÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøS‡ø÷øÿñ‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ^‚,ÿ÷SSø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷Sÿ²‚øÿÿ ÿ…øøÿ^‚,ÿøS÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Sÿñ‚øÿ…øøÿ]*ƒ÷SSƒSÿ²‚øÿ…øøÿ ÿøøJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSÿñ‚øÿ…øøÿ ÿ÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSø²‚øÿ…øøÿ ÿø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø…øøÿ ø…øøÿR…øøÿR…øøÿR…øøÿR…øøÿÿ3ÿ…øøÿ‚øÿø1øÿ…øøÿ‚øÿ0‚øÿ…øøÿ‚øÿ0‚øÿ…øøÿ‚øÿ0‚øÿ…øøÿ‚øÿ0‚øÿSÿ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ8…øøÿ‚øÿ0‚øÿS÷ÿŽSSSSSSSbÿ²ÿ…øøÿ‚øÿ0‚øÿSøSŽÿ÷ø÷ø÷ø÷ø÷ø÷aS‚ÿñø1…øøÿ‚øÿƒ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷…÷÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSƒøSS‚øÿSƒ÷SS‚ÿÿ‚øSaƒSÿ²‚øÿ…øøÿ‚øÿÑc÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷cSSSSSSSSSSSSSSSSSSSS‚øÿSÿøø÷÷÷÷÷÷÷÷÷÷÷÷÷ÿ÷÷÷÷S÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øÿñ‚øÿ…øøÿ‚øÿÐ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSø‚øÿS¢÷SS²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñÿ÷çSS²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñSÿ²‚øÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷…c÷÷SSSSSSSSSSSSSSSSSSSSƒSS‚øÿS†øS÷÷ÿ†÷÷SS`ÿ†²÷Sÿñ‚øÿ…øøÿ‚øÿƒ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷…÷÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSƒøSS‚øÿS‡÷SSøøÿ‚øJ_‡ÿñSÿ²‚øÿ…øøÿ‚øÿÑc÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷cSSSSSSSSSSSSSSSSSSSS‚øÿœ„ ‡øø÷÷S–JJJJÿÿ÷SSSøSøSøSøSøSøøšøžšøšø÷ø÷ø÷ø÷c÷c÷c÷c÷÷c÷÷÷÷ –ññññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿˆÿ÷øÿñ‚øÿ…øøÿ‚øÿÐ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSø‚øÿµ‡÷SSøøœJJJJJJJSÿÿøSSS‰øSøSøSøSšøšøšøšøšø÷ø÷ø÷ø÷ø÷c÷ˆ÷÷÷÷ñññññ²ñ²ñ²ñ²ñ‰²ÿñÿñÿñÿñÿˆÿñSÿ²‚øÿ†ÿÿÿÿÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷…c÷÷SSSSSSSSSSSSSSSSSSSSƒSS‚øÿ¡‚‚‡øS÷÷SžJJJJÿSSSSSSS†øSøSøSøSøš÷ø÷ø÷ø÷ø÷ø÷c÷c÷c÷c÷÷c÷÷ š²²ñ²ññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿˆÿ²÷Sÿñ‚øÿ†ÿÿÿ‚ ÿ…øøÿ‚øÿƒ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷…÷÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSƒøSS‚øÿŸ„‚‡÷SSøø˜JJJJJJJJSSSÿøJS‰øSøSøSøSšøšøšøšøšø÷ø÷ø÷ø÷ø÷c÷ˆ÷÷÷÷èèèñññññ²ñ²ñ‰²ÿñÿñÿñÿñÿˆÿñSÿ²‚øÿ†ÿÿÿ‚ ÿ…øøÿ‚øÿÑc÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷cSSSSSSSSSSSSSSSSSSSS‚øÿ‡‡–‡øø÷÷SšJJJJJSSSSøSøSøSøSøSøøšøžšøšø÷ø÷ø÷ø÷c÷c÷c÷c÷÷c÷÷÷÷ –ññññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿˆÿ÷øÿñ‚øÿ†ÿÿÿ‚ ÿ…øøÿ‚øÿÐ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSø‚øÿ‚……„ ‡÷SSøøœJJJJJJJSSSJSS‰øSøSøSøSšøšøšøšøšø÷ø÷ø÷ø÷ø÷c÷ˆ÷÷÷÷ñññññ²ñ²ñ²ñ²ñ‰²ÿñÿñÿñÿñÿˆÿñSÿ²‚øÿ†ÿÿÿ‚ ÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c   SSSSSSSSSSSSSSSSSSƒSS‚øÿ‚‚9‡øS÷÷SžJJJJJSSSSSS†øSøSøSøSøš÷ø÷ø÷ø÷ø÷ø÷c÷c÷c÷c÷÷c÷÷ š²²ñ²ññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿˆÿ²÷Sÿñ‚øÿ†ÿÿ ÿ‚ÿ…øøÿ‚øÿƒ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSƒøSS‚øÿŠ9‡÷SSøø~‡ÿñSÿ²‚øÿ†ÿÿ ÿ‚ÿ…øøÿ‚øÿÀc÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷       ‚ SSSSSSSSSSSSSSSS‚øÿ‚‚‚(†øø÷÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøS‡ø÷øÿñ‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ‚øÿä÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSø‚øÿSÿ÷SSø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷Sÿ²‚øÿÿ ÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷­           SSSSSSSSSSSSSSƒSS‚øÿSÿøS÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Sÿñ‚øÿ…øøÿ‚øÿƒ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷µøSøSøSøSøSøSøSøSøSøSøSøSøSƒøSS‚øÿSƒ÷SSƒSÿ²‚øÿ…øøÿ‚øÿ¸c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c             ‚ SSSSSSSSSSSSS‚øÿSÿøøJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSÿñ‚øÿ…øøÿ‚øÿð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷SSøSøSøSøSøSøSøSøSøSøSøSøSø‚øÿSÿ÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSø²‚øÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷Åc÷÷                SSSSSSSSSSSSSƒSS‚øÿSÿø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø…øøÿ‚øÿƒ÷÷÷÷÷÷÷÷÷÷÷÷÷Å÷SøSøSøSøSøSøSøSøSøSøSøSƒøSS‚øÿfø…øøÿ‚øÿ°c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷                 ‚SSSSSSSSSSSS‚øÿ…øøÿ‚øÿô÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷SøSøSøSøSøSøSøSøSøSøSø‚øÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷Íc                   SSSSSSSSSSƒSS‚øÿ…øøÿ‚øÿƒ÷÷÷÷÷÷÷÷÷÷÷÷ÍSøSøSøSøSøSøSøSøSøSƒøSS‚øÿ…øøÿ‚øÿ¨c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷™           ž       SSSSSSSSSS‚øÿ…øøÿ‚øÿü÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷                 SSøSøSøSøSøSøSøSøSøSø‚øÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c÷c÷c÷c÷c÷Õ        SSSSSSSSSƒSS‚øÿ…øøÿ‚øÿƒ÷÷÷÷÷÷÷÷÷÷Œ÷÷     µ              Š  SSøSøSøSøSøSøSøSøSƒøSS‚øÿ…øøÿ‚øÿÐc÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷            ª           SSSSSSSSS‚øÿ…øøÿ‚øÿ¤÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷JJKKKK¥J J J      J JJKKKK‰J J SSøSøSøSøSøSøSøSøSø‚øÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c÷c÷c÷c÷…      ­                …  SSSSSSSSƒSS‚øÿ…øøÿ‚øÿƒ÷÷÷÷÷÷÷÷÷„÷÷ ••         •„ SSøSøSøSøSøSøSøSƒøSS‚øÿ…øøÿ‚øÿ¨c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷  … ¡        „ ……  SSSSSSSS‚øÿ…øøÿ‚øÿÄ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ KKSSSSSKKKJ J J JJ©KKKSSSSSKKSSøSøSøSøSøSøSøSø‚øÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c÷c÷c÷ c•           SSSSSSSƒSS‚øÿ…øøÿ‚øÿƒ÷÷÷÷÷÷÷÷÷…¥SSSSS­SSSSSSøSøSøSøSøSøSƒøSS‚øÿ…øøÿ‚øÿ¥c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c‰  „ Ž‰‰SSSSSSS‚øÿ…øøÿ‚øÿÿ÷÷÷÷÷÷÷÷÷÷÷÷÷÷KSSSSSSSSSSSSSSSSSSSSSSSS…SKSøSøSøSøSøSøSø‚øÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c÷c÷œc÷ņSSSSSSSƒSS‚øÿ…øøÿ‚øÿƒ÷÷÷÷÷÷÷÷íSTTTTTSSSSSSSSSSSSSSTTTTTSøSøSøSøSøSøSƒøSS‚øÿ…øøÿ‚øÿ¼c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷¢SSSSSSS‚øÿ…øøÿ‚øÿÿ÷÷÷÷÷÷÷÷÷÷÷÷÷STTTTTTTTTTTTTTTTTTTTTTTT‰TSSøSøSøSøSøSøSø‚øÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c÷õc÷÷SSSSSSSƒSS‚øÿfÿ…øøÿ‚øÿƒ÷÷÷÷÷÷÷õ÷÷STTTTTTTTTTTTTTTTTTTTTTTTTTSSSøSøSøSøSøSƒøSS‚øÿSÿ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññø1…øøÿ‚øÿÿc÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷ŠSSSSSS‚øÿS÷SSSSSSS|ÿ²‚øÿ…øøÿ‚øÿì÷÷÷÷÷÷÷÷÷÷÷÷TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT™TTTTTTTTTTTSøSøSøSøSøSø‚øÿSøÿ÷ø÷ø÷ø÷ø÷ø÷{S‚ÿñ‚øÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c÷c••SSSSSƒSS‚øÿS„÷Sÿÿ‚øS{ƒSÿ²‚øÿ…øøÿ‚øÿƒ÷÷÷÷÷÷÷…TTTøøTTTTTøøø[[øøøTTTTTøøT‰TTøSøSøSøSøSƒøSS‚øÿSÿøøÿ÷÷÷÷S÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øÿñ‚øÿ…øøÿ‚øÿc÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷……‰SSSSSS‚øÿS†÷SSÿ÷ÿ÷SS²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ²ñ„Sÿ²‚øÿ…øøÿ‚øÿÿ÷÷÷÷÷÷÷÷÷÷÷TTøT[ø[ø[ø[øøTøTøø[ø[[[[[[[[[[[[[[[[[ø[øøTøTøø[ø[ø[ø[TøTTSøSøSøSøSøSø‚øÿSŒøSÿÿ÷÷SSzÿ†²÷Sÿñ‚øÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷‡c÷÷ ¡!!!!!!!!!!!!!!!‡SSSSSSƒSS‚øÿ ÿÿ0†÷SSÿ‚øy‡ÿñSÿ²‚øÿ„ÿÿÿ ÿ…øøÿ‚øÿƒ÷÷÷÷÷÷…÷÷Tíø[[![![[[[![![![![!![!![!![!![!![![![![![[[[![![[ø…TSSøSøSøSøSƒøSS‚øÿ ø‚ÿÿø‚ÿÿ.§øø÷ÿÿ÷øSJJJJJSSSSSøSøSøSøSøSøøšøžšøšø÷ø÷ø÷ø÷c÷c÷c÷c÷÷c÷÷÷÷ –ññññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿˆÿ÷øÿñ‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ‚øÿ—c÷c÷c÷c÷c÷c÷c÷c÷c÷c÷c !­!!!!!!!!!!!!!!!!!!!!!! ƒSSSSS‚øÿ‚øøÿƒøÿ ‚øøÿƒøÿ „¦÷SSÿÿøSSJJJJJJJSSSJSS‰øSøSøSøSšøšøšøšøšø÷ø÷ø÷ø÷ø÷c÷ˆ÷÷÷÷ñññññ²ñ²ñ²ñ²ñ‰²ÿñÿñÿñÿñÿˆÿñSÿ²‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ‚øÿÿ÷÷÷÷÷÷÷÷÷÷TT[[[[[[[[[[[[[[[[[![[![![![![![![![![![![![![![![![![![![![![![[[[[[[[[[[[[[[[[[TTSøSøSøSøSø‚øÿ‚øÿ‚øÿ ‚øÿ‚øÿ ‚‘ ŠøS÷÷ÿSJžJJJJJSSSSSS†øSøSøSøSøš÷ø÷ø÷ø÷ø÷ø÷c÷c÷c÷c÷÷c÷÷ š²²ñ²ññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿˆÿ²÷Sÿñ‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷ƒc÷¢!!!!!!!!!!!!!!!!!!!¤!!!!!!!!!!!!!!!!!ƒSSSSSƒSS‚øÿ ÿ‚øÿ  ÿ‚øÿ ‚‹‚ ‰÷SSøøÿø˜JJJJJJJJSSSJSJS‰øSøSøSøSšøšøšøšøšø÷ø÷ø÷ø÷ø÷c÷ˆ÷÷÷÷èèèñññññ²ñ²ñ‰²ÿñÿñÿñÿñÿˆÿñSÿ²‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ‚øÿƒ÷÷÷÷÷÷ý÷[![![![![![![![!![![![![![![!\![!\![!\!\!\!\!\!\!\![!\![!\![![![![![[!![![![![![![![![SøSøSøSøSƒøSS‚øÿ‚ø ÿ‚øÿ‚ø ÿ‚øÿ ‚ ‰øø÷÷SšJJJJJSSSSSøSøSøSøSøSøøšøžšøšø÷ø÷ø÷ø÷c÷c÷c÷c÷÷c÷÷÷÷ –ññññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿˆÿ÷øÿñ‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ‚øÿ˜c÷c÷c÷c÷c÷c÷c÷c÷c÷cž!!!!!!!!!!!!!!!!!"!"!"!" !! !!!!!!!!!!!!!!!!…SSSSSS‚øÿ‚ø ÿ‚øÿ‚ø ÿ‚øÿ ‘ ‡÷SSøøœJJJJJJJSSSJSS‰øSøSøSøSšøšøšøšøšø÷ø÷ø÷ø÷ø÷c÷ˆ÷÷÷÷ñññññ²ñ²ñ²ñ²ñ‰²ÿñÿñÿñÿñÿˆÿñSÿ²‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ‚øÿÿ÷÷÷÷÷÷÷÷÷[[[[[![[![![![![![[![![![![![!\![!d!\!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!\!d![!\![![![![![[![![![![![!‘[![[![[[[SSøSøSøSøSø‚øÿ‚ø ÿ‚øÿ‚ø ÿ‚øÿ ‚†„‡øS÷÷SžJJJJJSSSSSS†øSøSøSøSøš÷ø÷ø÷ø÷ø÷ø÷c÷c÷c÷c÷÷c÷÷ š²²ñ²ññ²ñ²ñ²ñ²ñ²ÿ²ÿñÿ²ÿˆÿ²÷Sÿñ‚øÿ†ÿÿÿ†ÿÿÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷c!!!!!!!!!!!!!! !¥"!"!"!"!*!"!*!"!*!"!*!"!*!"!*!"!*!"!"!"!!˜!!!!!!!!!!!!SSSSƒSS‚øÿ‚ø ÿ‚øÿ‚ø ÿ‚øÿ ‚ ‡÷SSøø~‡ÿñSÿ²‚øÿÿ ÿ…øøÿ‚øÿƒ÷÷÷÷÷÷ýT![![![![![![![![![![![![![![![!\!\!d!d!d!d!d"d!d"d"d"d"d"d"d"d"d"d"d"d!d"d!d!d!d!\!\![![![![![![![![![![![![![[!![!TSøSøSøSƒøSS‚øÿ‚øÿø ‚øÿø ‚ †øø÷÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøS‡ø÷øÿñ‚øÿ…øøÿ‚øÿ’c÷c÷c÷c÷c÷c÷c÷c÷c÷˜!!!!!!!!!!!! !±"!"!*!"!*!"!*!*"*!*"*!*"*!*"*!*"*!*"*!*!*!"!*!"!"!"!˜!!!!!!!!!!!!‚SSSSS‚øÿƒøøÿ‚ø ƒøøÿ‚ø  ‚ÿ÷SSø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷Sÿ²‚øÿ…øøÿ‚øÿÿ÷÷÷÷÷÷÷÷÷ø[![![![![![![![![![![![!\![!d!d!d!d!d"d"d"d"d*d"d*d"d*d"e*d*e*d*e*d"d*d"d*d"d*d"d"d"d"d!d!d!d![!\![![![![![!‘[![![![![![[øSøSøSøSøSø‚øÿøø øø/ÿøS÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Sÿñ‚øÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷c÷‰!!!!!!Á\!"!d!*"d!*"d"*"d"*"d"*"d"*"d"*"d"*"d"*"d"*"d"*"d"*"d!*"d!"!d!"!"!!‰!!!!SSSSƒSS‚øÿ øø1ƒ÷SSƒSÿ²‚øÿ…øøÿ‚øÿƒ÷÷÷÷÷÷ý[![![![![![![!\![!\![!\!\!d!d!d"d"d"d"d*d*e*d*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*d*e*d"d*d"d"d!d!d!d!\!\![!\![!\![![![![![![!![SøSøSøSƒøSS‚øÿSÿøøJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSÿñø…øøÿ‚øÿ™c÷c÷c÷c÷c÷c÷c÷c÷c!!!!É"!"!*!"!*!*"d"*"d"**d"**e"**e"**e"**e"**e"**e"**e"**e"**d"*"d"*"*!*!*!"!"!‰!!!SSSS‚øÿSÿ÷SøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSøSø²ø…øøÿ‚øÿÿ÷÷÷÷÷÷÷÷[![![!\![!\!\!d!\!d!\!d!d!d"d"d*d"e*e*e*e*e*e*e*e*m+e*m+e*m+e*m+e*m+e*m+e*m+e*e*e*e*e*e*e*e*d"d"d!d!d!d!\!d!\!‘d!\!\![!\![![![øSøSøSøSø‚øÿSÿø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷ø÷8…øøÿ‚øÿƒ÷÷c÷c÷c÷…c÷÷!! !"!"!\!"!d!*"d"**e*±e*e*e*e*e*+*e*+*e*+*e*+*e*+*e*+*e*+*e*e*e*e*e*e*e*d"*"d!*!d!"!"!"!"!!…SSSSSƒSS‚øÿ…øøÿ‚øÿƒ÷÷÷÷÷ÿ÷÷[![![![!\!\!d!\!d!\!d!d!d"d"d*d*e*e*e*e*m+m+m+m+m+m+m+m+m+m+m+m+m+m+m+m+m+m+m+m+m+m+m+e*e*e*e*d"d"d"d"d!d!\!d!\!d!\!\![![![†![SSøSøSøSƒøSS‚øÿ…øøÿ‚øÿ•c÷c÷c÷c÷c÷c÷c÷c÷c!! !"!"!™"!"!*!*"d"**e*+*e*++m*e+m+m+m+m+m+m+m+m+m+e+m*e+e*+*e*+*e"*"d!*!*!"!"!"!"!…!!SSSS‚øÿ…øøÿ‚øÿÿ÷÷÷÷÷÷÷÷![!\!\!d!d!d!d!d!d!d!d"d"d*e*e*e+e+m+m+m+m+n3n+n3n+n3n+n3n+n+n+n+n+n+n+n3n+n3n+n3n+n3m+m+m+m+e*e*e*e*d"d"d!d!d!‘d!d!d!d!d!\!\![øSøSøSøSø‚øÿ…øøÿ‚øÿƒ÷÷c÷c÷c÷…c÷÷!!Ù"!"!"!"!*!"!d!*"d"**e*e*e*e+m+m+m+m+n+m+n+m+n+m+n+m+n+m+n+m+n+m+n+m+n+m+n+m+n+m+m+m+m*e*e*‘d"*"d!"!d!"!"!"!"!"!…!SSSSSƒSS‚øÿ…øøÿ‚øÿƒ÷÷÷÷÷ÿ÷÷[![!d!\!d!d!d!d!d"d"d*d*e*e*m+m+m+m+n3n3nmn3nmn3n3n3n3n3n3n3n3n3n3n3n3n3n3n3n3n3nmn3nmn3n3m+m+m+m*e*e*d"d"d!d"d!d!d!d!\!d![†![!SSøSøSøSƒøSS‚øÿ…øøÿ‚øÿ‘c÷c÷c÷c÷c÷c÷c÷c÷c!ñ"!"!"!"!*!"!*!*"d"**e*+*m+m+m+n3n3n3n3n3n3n3n3n3n3n3n+n3n+n3n+n3n3n3n3n3n3n3n3n3n3n3n+m+m+e*e*+*d"*"*!"!*!"!"!"!"!SSSS‚øÿ…øøÿ‚øÿ³÷÷÷÷÷÷÷÷![!d!d!d"d!d"d"d"d"d*d*e*e*m+m+nmn3n±vnvnvnvnvnv4vnv4vnn4v4n4n4n4vnn4vnv4vnvnvnvnvnvnvn¢3nmm+m+e*e*d"d"d"d"d"d"d!d!d!d![!øSøSøSøSø‚øÿ…øøÿ‚øÿƒSSSSSƒSS!÷"!"!*!"!d!*"d!*"d"**e*e+m+m3n3n3v4v4v4vnv4v4v4v4v4n4v4n4n4n4n4n4n4n4v4v4v4v4v4vnv4v4v4n3n3n3n+m+m*e*e"*"d!*"d!*!*!"!*!"!ƒ÷÷c÷c÷c÷ƒc÷÷‚øÿSÿ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ²ññ8…øøÿ‚øÿƒSSøSøSøS¨øSS!\!\!d"d!d"d"d"d"d*d*e*e+m+m+nmn3vnvnv•nvnv4vnv4v4v4vnv4vnv4v¨nvmvnn3n3m+m+e*e*d"d"d"d"d"d"d!d!\!\!÷÷÷÷÷ƒ÷÷‚øÿS÷zÿ‘SSSSSSSÿÿ²ÿ…øøÿ‚øÿSSSS¥!!"!"!*!"!*!*"*!*"*"**e*e+m+m3n3n3v3v<v<v<v™4v4v4v4v4v4v3v4v4v4v4v4v4v<v<v<v 3v3v3n3n+m+m*+*e"*"*!*"*!"!*!"!"!‘c÷c÷c÷c÷c÷c÷c÷c÷c‚øÿSøzS‘ÿ÷ø÷ø÷ø÷ø÷ø÷Sÿñø1…øøÿ‚øÿøSøSøSøS ø!\!d"d"d"d"d*d"d*d*e*e+m+n3nnvnv~v~v~v»v~v~v~v~ vn v~v~v~v~v»v~v~v~v±nvnvmnmn+m+e*e*d"d*d"d"d"d"d!d!\!÷÷÷÷÷÷÷÷‚øÿSƒ÷SSy‚ÿÿ†øSSÿ²‚øÿ…øøÿ‚øÿƒSSSSS£SS!!"!*!*"d!*"d"*"d"**e*e+m+n3n3vnv’~v~v~v~v~v~v~v~v~<v>=7ƒ11{„׬¬×¬Š+V¬VV¬ƒ+¬‹×¬¬¬×¬¬V+¬‚o„6<6„ ƒ239:932ƒ, 17=>7ƒ11{„׬¬×¬Š++VV¬¬ƒ+¬‹×¬¬¬×¬¬V+¬‚o„6<ˆ66 ‚,39:932ƒ,‚17=>=7ƒ11+{„׬¬×¬†+VV¬†++‹×¬¬¬×¬¬V+¬‚o„ 6<ˆ66 ‚29: @:93…22,‚+17>=7‚1+{„׬¬×¬…V¬V¬•++V׬¬¬×¬¬V+¬‚oƒ 6<ˆ66 ‚29:@ :93„22+‚117>7‚11{„׬¬×¬”¬¬++׬¬¬×¬¬V+¬‚oƒ 6<‡6 ƒ,99:@ :93„2217=>ƒb>>7ƒ11z„׬¬×¬‹×¬¬¬×¬¬V+¬‚n„ 6<‡6 ƒ29:@ d @ :9‡3322,17ˆ=>>bb>>=7ƒ11z„׬¬×¬‹×¬¬¬×¬¬V+¬‚n„ 6<ƒ6 ƒ39:‚@@d @ :9†332217‚=>bƒ>>=7ƒ11zƒ×¬¬×׬¬¬×¬¬V+¬‚n„6<ƒ6 ƒ29:„@@dd ed @:9†3322,17‚>>b‚>>7ƒ11z׬‹×¬¬¬×¬¬V+¬‚n„66<ƒ6 ‰39::@@dded@:9†332217‚>>b‚>>7ƒ11zƒ×¬¬‹×¬¬¬×¬¬V+¬‚nƒ6 <ƒ6 ‡3::@@ded@:9†3322,17‚>>b‚>>7ƒ11z׬‹×¬¬¬×¬¬V+¬‚nƒ6<=<ƒ6 †9::@ded@:9…332,17>b‚>>7ƒ11z„׬¬×¬‹×¬¬¬×¬¬V+¬‚nƒ6<=<ƒ6 …,9:@ded@:9…332217>b>7ƒ11z„׬¬×¬‹×¬¬¬×¬¬V+¬‚nƒ6<=<ƒ6 …2:@@ded@:93Š2177=>b>7ƒ11z„׬¬×¬ ¬‹×¬¬¬×¬¬V+¬‚nƒ6<=<ƒ6 „2:@ded@:9Œ332+177=>b>7ƒ11z„׬¬×¬‚++ƒ++¬‹×¬¬¬×¬¬V+¬‚n…6<<=<ƒ6 „2:@ded@:9Œ332+177=>b‡>=7711z„׬¬×¬‚+V¬†¬+¬‹×¬¬¬×¬¬V+¬‚n…6<<=<‡6 „,:@ded@:9„332+…177=>b‡>=7711z„׬¬×¬‚+V¬†¬+¬‹×¬¬¬×¬¬V+¬‚n…6<<=<‡6 „,:@d ed@:9„332+…177=>b‡>=7711z„׬¬×¬‚+V¬†V¬+¬‹×¬¬¬×¬¬V+¬‚n…6<<=‰<<6 ƒ,9@"ed@:9„322„177=b‡>=7711z„׬¬×¬‚+V¬Vƒ¬+¬‹×¬¬¬×¬¬V+¬‚n…6<<=‰<<6 ƒ9@"ed@:9„322„177=b‡>=7711z„׬¬×¬‚+V¬‚+¬‹×¬¬¬×¬¬V+¬‚n…6<<=ˆ<<6 ƒ3@eked@:†99322„177=b†=7711z‹×¬¬×¬¬¬+V¬…+¬V¬‹×¬¬¬×¬¬V+¬‚n„6<=ˆ<<6 ‚2:eked@:†99322„177=b…=7711{׬¬×¬¬V++V¬V++¬…+++¬‹×¬¬¬×¬¬V+¬‚n…6<<=ˆ<<6 ‚3deked@:…9932,+7b…>7711{—׬¬×¬¬++V¬+V¬¬++¬‹×¬¬¬×¬¬V+¬‚n…6<<=ˆ<<6 ‚2@eked‚@@:…93227b…>7711{„׬¬×¬+V¬++¬¬+¬‹×¬¬¬×¬¬V+¬‚n… 6<<=ˆ<<6 ‚9deke‚dd@:…9932,ƒ177b…=771+{„׬¬×¬ƒ+¬ƒ+¬‹×¬¬¬×¬¬V+¬‚o„<<=ˆ<<6 ‚2:eke‚dd@:…9922„177>b…=771{„׬¬×¬„+¬ƒ¬‹×¬¬¬×¬¬V+¬‚o„<<=‡<<6 ƒ2:@eke‚dd@:…9932„177>b…=771{„׬¬×¬‰+¬¬¬‹×¬¬¬×¬¬V+¬‚o„<<=‡<<6  ƒ3:deked@:9‚32„177>b71|„׬¬×¬+ƒ ¬‹×¬¬¬×¬¬V+¬‚o„<<=‡<<6  ƒ29:eked@:…9932 ƒ77>b>71|„׬¬×¬†++ ¬‹×¬¬¬×¬¬V+¬‚o„<<=‡<<6  ‚9@eked‚@@:9‚3, ƒ77>b…>771+|„׬¬×¬…V¬+ ¬‹×¬¬¬×¬¬V+¬‚p„6<<=†<<6  ‚9@ eked„@@::9ƒ32 ƒ17>b…>771|„׬¬×¬‹×¬¬¬×¬¬V+¬‚p„6<<=†<< ‚3d eke„dd@@:…9932 ƒ7>b…>771|„׬¬×¬‹×¬¬¬×¬¬V+¬‚p„<<=†<6 ‚3@ed@:„993‚77b„>771}„׬¬×¬‹×¬¬¬×¬¬V+¬‚qƒ6<=…<6 ƒ3@de„dd@@:„992ƒ17>b„>71}„׬¬×¬×¬¬¬×¬¬V+¬‚qƒ6<=…<6 „2:@de‹dd@@::9932‚7>bƒ=71~ƒ×¬¬׬¬×¬¬¬×¬¬V+¬‚qƒ <=„< …23:@de„dd@@:…992‚17bƒ77~ƒ×¬¬Œ¬×¬¬¬×¬¬V+¬‚rŠ6<==<< †229@deƒd@@:„93,‚17bƒ>71׬‹×¬¬¬×¬¬V+¬‚r„< ‚2: d@:ƒ2,1‚+„׬¬×‹×¬¬¬×¬¬V+¬‚t„  2:@:32 „׬¬×¬‹×¬¬¬×¬¬V+¬‚n 2ƒ9:92 {„׬¬×¬‹×¬¬¬×¬¬V+¬‚m … +)8‚221{„׬¬×¬‹×¬¬¬×¬¬V+¬‚n‚ ‚ ƒ1> 8‚21|„׬¬×¬‹×¬¬¬×¬¬V+¬‚pƒ † 88> 8‚1~„׬¬× ¬+ ¬‹×¬¬¬×¬¬V+¬‚u  ‚  8‚2„׬¬× ¬ƒ+ ¬‹×¬¬¬×¬¬V+¬‚} ‚,1„׬¬× ¬ƒ+ ¬‹×¬¬¬×¬¬V+¬‚‚ ,ƒ%„׬¬×¬‹×¬¬¬×¬¬V+¬‚,-,‚%„׬¬× ¬‚ ¬‹×¬¬¬×¬¬V+¬‚ƒ,, -,‚$„׬¬× ¬‚ ¬‹×¬¬¬×¬¬V+¬‚‚, -„,,$„׬¬× ¬ƒ+ ¬‹×¬¬¬×¬¬V+¬‚‚,-‚..-„,,#„׬¬×¬†¬¬¬‹×¬¬¬×¬¬V+¬‚-.4.-„,,#„׬¬×¬„+V¬¬‹×¬¬¬×¬¬V+¬‚„--.4.-ƒ,,#„׬¬×¬„+¬‹×¬¬¬×¬¬V+¬‚„--.4.-ƒ,,#„׬¬×¬„++¬¬‹×¬¬¬×¬¬V+¬‚ƒ-- 4-‚,,$„׬¬×¬‡VVVV¬‹×¬¬¬×¬¬V+¬‚‚,- 4-‚,$„׬¬×¬V ¬‹×¬¬¬×¬¬V+¬‚ƒ,-. 4-‚,$„׬¬×¬‹×¬¬¬×¬¬V+¬‚ƒ,-4….--,%„׬¬×¬‹×¬¬¬×¬¬V+¬‚ƒ--4-&„׬¬×¬‹×¬¬¬×¬¬V+¬‚ƒ--.4.-'„׬¬×¬‹×¬¬¬×¬¬V+¬‚-‚,(„׬¬×¬‹×¬¬¬×¬¬V+¬‚ ‚,ƒ×¬¬×׬¬¬×¬¬V+¬‚N׬‹×¬¬¬×¬¬V+¬‚+-ƒ×¬¬‹×¬¬¬×¬¬V+¬‚+*׬ V ‹×¬¬¬×¬¬V+¬‚ +(„׬¬× ¬‚+¬‹×¬¬¬×¬¬V+¬‚+VU+'„׬¬× ¬‚+¬‹×¬¬¬×¬¬V+¬‚‚++ VU+&„׬¬× ¬‚+¬VV׬¬¬×¬¬V+¬‚‚++ V„1++*%„׬¬× ¬‚+¬ƒVV‹×¬¬¬×¬¬V+¬‚+V€€Vƒ1++%„׬¬×¬„+¬ƒVV¬‹×¬¬¬×¬¬V+¬‚+V€‚€\V+$„׬¬×¬V‚+ ¬ƒVV¬‹×¬¬¬×¬¬V+¬‚…+UVV€ \V‚++$„׬¬×¬V ¬ƒVV¬‹×¬¬¬×¬¬V+¬‚„+VV€ V+#‰×¬¬×¬¬V¬ƒVV¬‹×¬¬¬×¬¬V+¬‚ƒ+V\‚‡‡€V‚++#ˆ×¬¬×¬¬VV¬„V¬‹×¬¬¬×¬¬V+¬‚ƒ+VV‡«‡†\VV++*"‹×¬¬×¬V¬V ¬„V+¬¬‹×¬¬¬×¬¬V+¬‚ƒ+V€‡«¬«…VV1++"ˆ×¬¬×V¬V ¬„V+¬¬‹×¬¬¬×¬¬V+¬‚‚1V‚‡«¬‚««…\VV++"Œ×¬¬×+¬¬VV+ ¬„V+¬¬‹×¬¬¬×¬¬V+¬‚ƒ+V€«¬‚«‡‚VV+!Œ×¬¬×++V+ ¬…V¬¬‹×¬¬¬×¬¬V+¬‚‚+V« ¬«…VVU++!׬¬×¬VV¬+¬¬+¬‚+¬‹×¬¬¬×¬¬V+¬‚‚+V« ¬ˆ‡€VV++!„׬¬×¬+¬¬¬¬+¬¬+¬‹×¬¬¬×¬¬V+¬‚…+\« ¬«„VV++!„׬¬×¬VV¬¬+¬¬+¬‹×¬¬¬×¬¬V+¬‚…+€«¬²¬ˆ«‡VV++!„׬¬×¬‚VV¬‰+¬¬¬¬+¬‹×¬¬¬×¬¬V+¬‚„V‡¬²¬‡«\VU+!„׬¬×¬ŽVV¬¬+¬+¬‹×¬¬¬×¬¬V+¬‚…+V«¬‚²²Ö²¬‡«€VV+!”׬¬×¬¬VV¬¬+¬¬+¬‹×¬¬¬×¬¬V+¬‚…+V«¬‚²²Ö²¬«ƒVV+!“׬¬×¬¬VV+¬++¬‹×¬¬¬×¬¬V+¬‚„+V¬²Ö²¬‡‡VV+ „׬¬×¬‹V++VV+¬++¬‹×¬¬¬×¬¬V+¬‚„+V‡¬Ö²¬†«VV+!„׬¬×¬ƒV+ ¬‹×¬¬¬×¬¬V+¬‚ƒV‡¬ƒ²ÖÖ׃ÖÖ²¬†«\V+!„׬¬×¬×¬¬¬×¬¬V+¬‚ƒ+«¬‚²ÖׂÖÖ¬†«\V+!ƒ×¬¬׬¬×¬¬¬×¬¬V+¬‚ƒ+«¬‚ÖÖ׋ÖÖ²¬¬«\V+!׬‹×¬¬¬×¬¬V+¬‚ˆ+«¬¬²ÖÖ׃ÖÖ²¬…VV+!„׬¬¬×¬×¬¬¬×¬¬V+¬‚ˆ+«¬¬²ÖÖׂÖÖ¬…VV+!…׬¬¬‹×¬¬¬×¬¬V+¬‚‡+«¬¬²ÖׂÖÖ¬…VV+!…׬¬¬‚+V¬‹×¬¬¬×¬¬V+¬‚†V«¬¬ÖÖׂÖÖ¬…VV+!…׬¬ ¬ƒ++¬‹×¬¬¬×¬¬V+¬‚†1‡¬¬ÖÖׂÖÖ¬„VV"…׬¬ ¬ƒ+¬‹×¬¬¬×¬¬V+¬‚†+¬¬²ÖׂÖÖ¬„V+"…׬¬ ¬„+¬‹×¬¬¬×¬¬V+¬‚†+¬¬²Ö ׈֬¬«V+"…׬¬ ¬ƒ+ ¬‹×¬¬¬×¬¬V+¬‚…V«¬¬Ö ׇ֬¬«€V#…׬¬¬…+¬¬ ¬‹×¬¬¬×¬¬V+¬‚…V‡¬¬Ö ׇ֬¬«V+#…׬¬¬+ ¬‹×¬¬¬×¬¬V+¬‚…V¬¬²Ö׆²¬¬‡V$…׬¬¬+ ¬‹×¬¬¬×¬¬V+¬‚…U«¬²Öֲׇ¬¬V$…׬¬¬+‚¬‹×¬¬¬×¬¬V+¬‚„V¬¬Öׇ֬¬«V+$…׬¬¬+ V¬‹×¬¬¬×¬¬V+¬‚…1‡¬²ÖׇÖÖ¬¬«U%…׬¬¬++¬‹×¬¬¬×¬¬V+¬‚…V«¬²ÖׇÖÖ¬¬«V&…׬¬¬++ ¬‹×¬¬¬×¬¬V+¬‚ƒV«¬Ö…¬¬V+&…׬¬¬+V ¬‹×¬¬¬×¬¬V+¬‚ƒV«¬²…¬¬V+'…׬¬¬+V ¬‹×¬¬¬×¬¬V+¬‚‚UV¬ƒV+(…׬¬¬+V ¬‹×¬¬¬×¬¬V+¬‚UV‚U+*…׬¬¬+V ¬‹×¬¬¬×¬¬V+¬‚N…׬¬¬„+V¬‹×¬¬¬×¬¬V+¬‚N…׬¬¬ƒ+V¬‹×¬¬¬×¬¬V+¬‚N…׬¬¬‚+V¬‹×¬¬¬×¬¬V+¬‚N…׬¬¬¬‹×¬¬¬×¬¬V+¬‚N…׬¬¬‹×¬¬¬×¬¬V+¬‚Nƒ×¬¬¬¬×¬¬¬×¬¬V+¬‚VVNV¬Œ¬×¬¬¬×¬¬V+¬Q¬Š×¬¬¬×¬¬VŠ×¬¬¬×¬¬ ¬„¬×¬a¬‚׬+¬„¬×¬a¬‚׬+¬„¬×¬B¬B¬B¬‚׬+¬„¬×¬+++‚+¬V+++‚V¬V+++‚¬‚׬+¬„¬×¬‚׬‚+¬‚ׂV+¬×‚׃V+ׂ+V¬×ƒV+׃VV¬‚+¬‚׬+¬„¬×¬×¬‚+¬ƒ×¬‚V+¬×¬ƒ×¬ƒV+׬ƒ+V¬×¬ƒV+׬„VV׬ƒ+¬‚׬+¬„¬×¬×¬‚+¬ƒ×¬‚V+¬×¬ƒ×¬ƒV+׬ƒ+V¬×¬ƒV+׬„VV׬ƒ+¬‚׬+¬„¬×¬×¬‚+¬ƒ×¬ V¬‚V+¬×¬ƒ¥zz ¬ƒ×¬ƒV+׬ z„¬+V¬×¬ ¬×¬ƒV+׬V¬„VV׬‚VV ¬ƒ+¬‚׬+¬„¬×¬×¬V +¬‚+¬ +¬‰×¬¬+…VV¬‚V+¬×¬z„¬s¬ƒ×¬s†z¬¬V+׬+‚Hž¥†žs¬+V¬×¬¬Š¬¬×¬¬V+׬…V+¬„VV׬‚ ¬ƒ+¬‚׬+¬„¬×¬×¬‚VV¬‚+¬‚‚+¬‰×¬¬…¬¬‚V+¬×¬†¥l¬s¥z¬ƒ×¬‚zz¥‘l¬¬V+׬¬+22HОz‡žÐs¬+V¬ƒ×¬¬ ˆ¬×¬¬V+׬…+#¬„VV׬ˆVV¬¬ssz¬ƒ+¬‚׬+¬„¬×¬×¬ׂV¬‚+¬ƒƒ+¬‰×¬¬…¬¬‚V+¬×¬Š¥l¬szz¬zz¬ƒ×¬ƒz¥+‹×l¬¬V+׬¬V+9‚HЬ†Ðs¬+V¬…׬¬¬‚¬¬†×¬¬V+׬…2V¬’VV׬¬V¬¬¬¬¥lls¬ƒ+¬‚׬+¬„¬×¬×¬ׂV¬‚+¬„GŽ+¬¬×¬¬…++¬‚V+¬×¬zs…zz¬zz¬†×¬¬+‚H¥¬‹×l¬¬V+׬¬V9†HÐzss×s„¬+V¬„׬¬׎¬¬×¬¬×¬V+׬…V+¬ŒVV׬¬+++¬ƒ¥¬ƒ+¬‚׬+¬„¬×¬×¬ׂV¬‚+¬…³GŒ¬×¬¬ ¬‚V+¬×¬‡¥zszlsz¬‡×¬¬+¬ƒz¥V+‹×l¬¬V+׬¬V+9‚]HЈ×s¥s¬+V¬ƒ×¬¬ ˆ¬×׬V+׬…+¬‡VV׬¬+‡¬¬¥ss¬ƒ+¬‚׬+¬„¬×¬×¬ׂV¬‚+¬…G³G ‹¬×¬¬ƒ¬‚V+¬×¬…H$s¥¬ˆ×¬¬+¬+ƒH¥×¬‹×l¬¬V+׬¬V9‚HÐׇls¥¬+V¬…׬¬¬×‡¬×¬V+׬…+¬‡VV׬¬+…+¥ll¬ƒ+¬‚׬+¬„¬×¬×¬ׂV¬‚+¬‹³G³kkkVV‹¬¬×¬¬2ƒ¬‚V+¬× ¬‚V+¬‡×¬¬+׆ž¥V¬sl‰¬¬V+׬¬V+9‚]Hl‡H+¬¬+V¬×¬…׬V+׬…+#¬‡VV׬¬+…¬¬ls¬ƒ+¬‚׬+¬„¬×¬×¬ׂV¬‚+¬‹G³GkkkV¬‰×¬¬V¬ƒ¬‚V+¬×¬„V¬ˆ×¬¬+¬‚$¥׃sÐl¬˜V+׬¬V92V2VVVV+¬¬+V¬×¬„¬×¬׊¬×¬¬V+׬ˆVV+#¬‡VV׬¬+¬‰ls¬¬+¬‚׬+¬„¬×¬×¬ׂV¬‚+¬„³G¬V¬‰×¬¬V¬ƒ¬‚V+¬×¬„+V+¬‡×¬¬+ׂž¥׃sl¥¬‰V+׬¬V+9ˆ]+¬¬+V¬×¬‚¬ ¬ƒV+׬ŠV+#¬‡VV׬¬+Žzls¬¬zls¬+¬‚׬+¬„¬×¬×¬׬V¬‚+¬ƒ+¬ŽV¬×¬¬V¬ƒ¬‚V+¬×¬†+VV¬Ž×¬¬+¬+V$HHl¥¬˜V+׬¬V9+VˆˆV+¬¬+V¬×¬„¬×¬×¬ƒV+׬ŠVV#¬‡VV׬¬+¬ll¬¬llz¬+¬‚׬+¬„¬×¬×¬ׄ¬+V¬‚+ ¬‘¬¬+¬×¬¬V¬¬‚V+¬×¬†+¬¬VV¬‡×¬¬+ׄVV¬˜V+׬¬V+22+V+¬¬+V¬×¬ƒ¬„¬×¬ƒV+׬ŠV#+¬™VV׬¬+¬¬slz¬¬llz¬+¬‚׬+¬„¬×¬×¬¬ƒV¬‚+ ¬’VV++¬×¬¬+ƒ¬‚V+¬×¬†+¬¬VV¬‡×¬¬+¬ƒV ¬ƒV+׬V+„+¬ƒ+V¬×¬‚¬×¬ƒV+׬‚V‚+¬‰VV׬¬+¬Œsl¥sls¬+¬‚׬+¬„¬×¬×¬+V¬‚+ ¬„V++¬†×¬¬ +¬‚V+¬×¬†V¬¬V¬†×¬¬+V ¬ƒV+׬V+¬ƒ+V¬×¬ ¬ƒV+׬V+¬ˆVV׬¬V¬s‡z¬¬+¬‚׬+¬„¬×¬×¬‚+¬ƒ×¬‚V+¬×¬ƒ×¬ƒV+׬ƒ+V¬×¬ƒV+׬„VV׬ƒ+¬‚׬+¬„¬×¬‚×׬+¬‚׬‚+¬‚×׬‚׬ƒ+׬‚VV¬×¬ƒ+׬ƒVV׬‚+¬‚׬+¬„¬×¬ׂV¬×Vׂ¬V¬ׂV¬ׂ¬Vׂ¬ׂ¬Vׂׂ¬‚׬+¬„¬×¬a¬‚׬+¬„¬×¬a¬‚׬+¬†¬×¬¬×_׬×*׈¬¬¬×¬¬ ˆ¬¬¬×¬¬ †¬¬¬×¬¬¬¬„¬×¬¬¬¬„¬×¬¬¬¬„¬×¬V¬V¬+¬V<¬„VV¬V ¬‚V¬Vƒ¬¬+/¬+¬V¬‚+/¬„¬×¬U¬‚V+¬‚+d¬‚/¬„¬×¬‚+V¬ˆ¬¬+ ¬„V¬¬V…+¬“¬¬+¬VV¬¬+¬¬ ¬¨+¬¬+¬VV¬VV¬¬+¬++¬VV¬+¬¬ ¬+ƒ¬¬’+VV¬VV¬+¬¬¬+ ¬‚¬…VV¬¬+‰¬¬++V†V¬¬+ ¬+„¬Ž+V+¬¬VV¬++¬¬‘+¬VV¬¬+¬¬¬¬“VV¬+¬¬¬+¬VV ¬‚+¬‹VV¬¬+¬+,¬„¬×¬‚+V¬‰¬+¬¬V ¬‚+¬‰VV¬¬++¬”+¬¬++¬¬VV+V¬+ ¬ŒV¬¬¬¬¬¬+V™¬¬V+¬¬++¬+VV¬¬++¬¬ ¬‚+¬…¬¬+VŽ¬+¬¬¬¬+¬VV ¬š¬+¬VV¬VV¬¬+¬¬++V+¬¬V„+ ¬‚+V¬”¬¬¬+V+¬¬VV+¬++ ¬–+¬¬++¬¬VV+V¬+¬¬•VV¬¬++¬¬+¬V¬VV ¬‚+¬VV¬+¬¬+¬+¬¬V++¬„¬×¬‚+V¬…¬ ¬‚+¬‰VV¬¬++¬‰+¬¬++‡VV++¬„¬¬V+ƒ¬+¬+¬+VV¬¬++¬¬ ¬‚+¬…¬¬+Vˆ¬+¬¬¬¬‚VV ¬ ¬V+VV¬VV¬¬++V+¬¬VV¬+ ¬‚+V¬“¬¬¬+V+¬¬VV+¬¬+¬‰+¬¬++‰VV++¬¬VV¬¬++¬¬+¬‚VV ¬‚+¬…VV¬+Vˆ¬+¬¬V++¬„¬×¬‹+V¬¬¬+ ¬‚‹¬¬VV¬¬++ ¬++¬+++Vƒ+ ¬„+¬¬+Vš+++¬¬+¬+VV¬¬++V¬¬ ¬„+V¬…¬¬+VŽ¬+¬¬¬¬¬VV ¬ ++VV¬¬V++¬++V+¬¬VV+ ¬‚+V¬”¬¬¬+V+¬VV+¬+¬ ¬++¬+++V…+¬–¬VV¬¬++V¬¬+¬VV ¬‚+ƒ+V¬+‰¬+¬¬V++¬„¬×¬+‹¬¬+VV ¬‘++V¬¬VV++ ¬•+¬¬¬+VVVV¬+¬ ¬ŠV++¬¬+V›VVVV++VV++V+ ¬+¬…+V+V+VV+¬+VV ¬ŠVVV+V¬¬“++VV+V+VVV+ ¬‚+V¬”¬+V+VVV+V¬VV+ ¬—+¬¬¬+VVVV¬+¬¬+—VVV++VV+VV ¬‚+V¬VV+¬VV+¬„¬×¬‚+V¬ˆV¬¬++V ¬‚+¬‰V++V¬+ ¬•+¬¬¬¬V¬++V¬V¬V¬V ¬‚+¬ ++V¬VV¬++¬¬V++¬VV¬++¬VV+ ¬‚+¬+‘VV+¬V++¬¬+V¬+V ¬—+¬¬VV¬¬V++¬V¬+V¬V+†¬¬V+ ¬‚+V¬ƒV¬¬+VV++¬++¬V+ ¬—+¬¬¬V¬++¬V¬V¬V¬¬–+¬++¬VV¬++¬V¬+ ¬‚+¬‹VV¬¬V++¬¬¬+V,¬„¬×¬‚+V¬¬‚+ ¬…+¬¬ ¬‡V¬¬VV¬…+¬¬V¬‚VV ¬‚+¬‚+¬†+¬¬VV¬ˆV¬¬+V$¬‚+V ¬‚V+¬‚+¬‡V¬¬VV¬¬‚+ ¬‚+¬‚+¬‚VV¬1¬„¬×¬‚++V„¬V¬¬‚V¬…+V¬V ¬‚+¬ƒ¬V¬V¬‚VV ¬„V¬¬‚++V¬‚+¬‚¬‚VV ¬‚V¬‚+V¬V¬‚V+¬‚V¬‚+¬ƒ¬V¬V¬‚V¬‚V¬‚+¬‚VV¬1¬„¬×¬V„¬V¬V¬V¬ƒV¬‚¬ƒV¬V¬ƒVV¬‚¬‚¬V¬¬V¬‚ ¬‚¬‚¬V¬‚¬‚¬ƒV¬V¬V¬‚V¬‚¬‚¬V1¬„¬×¬¬¬¬„¬×¬¬¬¬„¬×¬¬¬¬„¬×¬¬¬¬†¬×¬¥sss sˆ¥¬¬×¬¥lll lˆ¥¬¬×¬¥l„$HllNlƒHl$ŠHl¥¬¬×¬¥l„H9H lƒ¥×sll=l× Vƒ¬ V…+HlÐ V‹+Hl¥¬¬×¬¥lŠHH9#HH lƒ¥×sll=l× ¬‚ ¬…+HlÐ ¬Œ+Hl¥¬¬×¬¥l‹H$##HHlÅž×מl¥××Ð×sl×Ðls×¥l¥×Ð×zlÐ×lls×Ð׬lž×žlsl¬×sls×Ð×׬z×¥l¥×z¥Ðsl××lls×¥l…s×Ð×¥lž¥×Ð×sls×Ð×Ðlz×¥l¥×zlÐ×Ð×slls×¥l›¥×zlÐ×Ð×sls×Ðlz×¥ll¥×Ð×sl××l-l„׬¬V¬‚¬‡V¬+HlЬ‚¬¬¬+Hl¥¬¬×¬¥l$‡9+HHlHl»sÐ¥¥×s¥×sl××l×Ðls×¥ž×žl¥ÐsÐ×ll×ÐlsÐ¥ž×ž¥×s¬×sl××ls׬z×¥l¥×zl‡××llz׬l¦Ð¥lz×¥l¥×sl¥Ðl××lsÐ¥z×¥l¥×z¬×slÐÐllz׬l›¥×z¬×sl¬Ðls×Ðsž×¥l¥×zl¥Ðl××l-l„׬¬+V¬‚¬¬ˆVV¬+HlЬ•+¬¬VV¬+Hl¥¬¬×¬¥l„$$H$„$H$Hl”¥Ðzl¥×sl××l×Ðls×¥ž×¥s‡lÐ×ll××s—ž×¥¥×žÐ×sl¬×sž×¬z×¥l¥×zl„××ls×¥lsl‡z×¥l¥×sl‚××sŠz×¥l¥×z¬×zs‚ls׉¥ll¥×z¬×žslׄž¥×žsƒl××l-l× ¬‚¬¬ˆVV¬+HlЬ”+VV¬¬+Hl¥¬¬×¬¥lH$‚HHHl¤¥Ðžsl¥×sl××l×Ðss×¥ž×Ь××sÐ×ll×׬Ð×¥ž×sll¬¬Ð׬z×¥s¥×zl‰××lž×¬Ð¬slƒž¬¬lÃss¥Ðzl¥×slssl×׬Ð׬z×¥s¥×z¬×¬¬××lž×¬Ð¬sl¥×z¬×Ь××l××Ð××Ðמ¥×Ь××l××l-l× ¬‚¬¬ˆVV¬+HlЬ…+V¬Œ+Hl¥¬¬×¬¥l…H$$Hl©sЬ¬Ðs¥×žz×¥l××ХמsÐ¥zЬsÐמl¥×z¥×žž××Ð¥×sllzzž×žz××¥¬Ðsl‰××l×Ðlz×¥ lÅž×¥¥žllzÐ¥zЬl¥×zž×žz××¥¬Ðsž×žz×¥l×Ðlz×¥l¥×zž×žz×¥l×Ðs×¥ž×žzÐ¥zЬl××sl,l× ¬‚¬¬ˆVV¬+HlЬ„V+¬Œ+Hl¥¬¬×¬¥lˆH$$H$Hl†s¥¥slž¥Šll××¥¥žlls¥‡slž¥¥ll¥žlž×מl¬××sll¥ƒžls¥sl‰¥¥l¥žls¥z lƒs׬lz¥l¥ƒžls¥„sllž¥Žll×Ðlz×¥lz¥slž¥Œll¥žs¥žs¥slz¥‚ll¥l,l× ¬‚¬¬ˆVV¬+HlЬ‚V+¬¬+Hl¥¬¬×¬¥lˆ$H$H$$$l‚×Ðl‰ž×¬slž××s&l‡s׬lsžslˆ¥×žls¬ÐslHl× ¬‚¬Vˆ+V¬+HlЬ•VV¬++¬+Hl¥¬¬×¬¥lH$ƒ$$l‚×Ðlƒž×žlƒ¬×sl‚žžl†¥Ð¥¥Ðsl‚×Ðl†z×¥s¥slEl× ¬‚¬‡V¬+HlЬ‚VV¬V¬+Hl¥¬¬×¬¥l$ƒ$$l‚žzlƒsžsl‚zžl‚žžlžsl‚žzl†sžssžslEl× ¬‚¬V‡¬+HlÐ ¬Œ+Hl¥¬¬×¬¥lH$‚$llJl ׃¬+¬ ×…¬+HlР׌¬+Hl¥¬¬×¬¥ lƒH$HllJls z‚Hs z„HHls z‹HHl¥¬¬×¬¥ lHll}lˆ¥¬¬×¬¬¥¥¥ ¥†¬¬¬×¬¬¬¬ƒ¬×××ׂ¬¬¬¬ñÇèÇlpšP…‡3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ××××Q×××××Q×××××Q×××××Q×××××Q×××× ×‚×D××A××Eׂ×D××?××Cׂ×D××?××C××C××>×××C××C××>×ׂ×C××C××>×ׂ×C××C××>ׂ×××D××B××>× ×D××B××>× ×E××A××>××L××@××>×ׂ×F××@××?ׂ×××@× ×@××@××@× ×@××A×××× ×××××Q×××××Q××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D××Bׂ×Fׂ×D×.׬‚F‚ 7×.ׂ¬×¬¬‚¬F¬‚¬ ¬7×.ׂ¬×¬¬‚¬F¬‚¬ ¬7×.ׂ¬×¬¬‚¬F¬‚¬ׂ¬¬ׂ¬¬"׬7×.ׂ¬×¬¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬×¬‹×¬×¬×¬7×.ׂ¬×'¬ ¬]¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬×¬‹×¬×¬×¬7××ׂ¬×'¬¬¬]¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬×¬Š×¬×¬×¬7× ×ׂ¬×¬¬ƒ¬¬¬¬¬„¬¬¬¬¬ƒ¬¬¬¬‚¬‚¬¬9¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬×¬‰×¬×¬×¬7× × ׂ¬×¬¬¬ƒ¬¬¬„¬¬¬…¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬9¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬× ¬‡×¬×¬7× ××ׂ¬×¬¬¬ƒ¬¬¬„¬¬¬ƒ¬¬¬¬†¬¬¬¬¬¬¬9¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬× ¬‡×¬×¬7×ׂׂ¬×¬¬¬ƒ¬¬¬ƒ¬¬„¬¬¬¬¬…¬¬¬ƒ¬¬¬¬¬9¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬× ¬†×¬×¬7×ׂ׬ƒ¬¬¬ƒ¬¬ƒ¬¬¬…¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬9¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬× ¬…׬׬7× ××׬¬„¬¬¬¬¬„¬¬¬¬†¬¬¬¬¬‚¬‚¬¬9¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬× ¬ƒ×¬7× × ׂ¬×¬¬¬¬)¬¬9¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬×¬ƒ×¬7× × ׂ¬×¬¬¬¬)¬¬9¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬×¬‚׬7× ׂ ׂ¬×¬ ¬¬¬)¬¬9¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬×¬×¬7× ׂ ׂ¬×¬¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬×¬7× ×ׂ¬×¬¬‚¬F¬‚¬¬„׬¬¬„׬¬ ¬×¬7× ×ׂ¬×¬¬‚¬F¬‚¬ƒ×¬¬ƒ×¬¬!׬7× ×ׂ¬×¬¬‚¬F¬‚¬ ¬7×.ׂ¬×¬¬‚¬F¬‚¬ ¬7×.ׄ¬×¬¬×ׂ×Fׂ× ×ƒ¬¬7×.×…¬×¬¬¬¬‚¬F¬‚¬ ¬„׬¬7×.׆¬×¬¬¬¬‚¬F¬‚¬ ¬„׬¬7×.׆¬×¬¬¬¬‚¬F¬‚¬ ¬„׬¬7×.׆¬×¬¬¬¬‚¬F¬‚¬ ¬„׬¬7×.׆¬×¬¬¬¬‚¬F¬‚+¬,×1¬„׬¬7×.׆¬×¬¬¬¬‚¬F¬‚+¬*¬×1¬„׬¬7×.׆¬×¬¬¬¬‚¬¬˜×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬’׬׬׬׬׬׬׬׬׬¬‚(ׂ¬×1¬„׬¬7×.׆¬×¬¬Q¬<ׂ;×[¬š¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚”¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬‚(ׂ¬×1¬„׬¬7×.׆¬×¬¬E¬‚ ¬‚V×;V‚:V×[¬× ¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬×¬‚¬–׬׬׬׬׬׬׬׬׬¬× ¬‚¬‚(ׂ¬×%¬‚ ¬„׬¬7×.׆¬×¬¬F¬‚¬‚V׬n¬‚V×[¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚(ׂ¬×&¬‚ ¬„׬¬7×.׆¬×¬¬G¬‚¬‚V׬V¬ ׂ ׬V¬‚V×[¬× ¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬×¬‚¬–׬׬׬׬׬׬׬׬׬¬× ¬‚¬‚(ׂ¬×'¬‚¬„׬¬7×.׆¬×¬¬¬‚¬„¬¬¬¬‚ ¬‚¬„¬¬¬‚¬‚¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬‹××V¬¬¬××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×1¬ ‚¬¬¬¬Š¬¬¬¬¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚ׂ×ׂ×ׂ¬× ¬¬¬†¬¬¬‚¬„׬¬7×.׆¬×¬¬¬‚¬–¬¬¬¬¬¬¬¬¬¬¬‚¬Ž¬¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬‹××V¬¬¬××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×1¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬×¬‚¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ך××××××××××××¬× ¬‚¬‚¬Ž¬¬¬¬¬¬¬¬„׬¬7×.׆¬×¬¬¬‚¬Ž¬¬¬¬¬¬¬¬‚¬Ž¬¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬‹××V¬¬¬××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×2¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬‚¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚¬‚¬‚ ×ׂ׊××××¬× ¬‚¬’¬¬¬¬¬¬¬¬¬¬„׬¬7×.׆¬×¬¬¬‚¬Ž¬¬¬¬¬¬¬‚¬‚¬–¬¬¬¬¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬‹××V¬¬¬××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×3¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬×¬‚¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ ׆××ׂ׊××××¬× ¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬„׬¬7×.׆¬×¬¬¬¬Š¬¬¬¬¬¬¬’¬¬¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬‹××V¬¬¬××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×4¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬‚¬‚ ××××××׊××××¬× ¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬„׬¬7×.׆¬×¬¬¬‚¬–¬¬¬¬¬¬¬¬¬¬¬‚¬‘¬¬¬¬¬¬¬¬‚¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬‹××V¬¬¬××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×5¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ ׇ×××׊××××¬× ¬‚¬•¬¬¬¬¬¬¬¬¬¬‚¬„׬¬7×.׆¬×¬¬¬‚¬‚¬‚¬¬¬‚ ¬‚¬‚¬‚¬¬¬‚¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×6¬‚¬¬¬ ¬×¬‚¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚¬‚¬‚ׄ×× ×Š××××¬× ¬‚¬‚¬¬‰¬¬¬¬‚¬„׬¬7×.׆¬×¬¬¬‚¬‚ ¬‚¬‚¬‚ ¬‚ ¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×7¬‚"¬×¬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ׄ×× ×Š××××¬× ¬‚¬‚ ¬†¬¬¬„׬¬7×.׆¬×¬¬¬‚¬‚ ¬‚¬‚¬‚ ¬‚ ¬‚V׬V¬×¬V¬‚V×8¬‚!¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚ׄ×× ×Š××××¬× ¬‚¬‚ ¬†¬¬¬„׬¬7×.׆¬×¬¬¬#¬¬‚V׬n+¬‚V×1¬ !¬× ¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬× ¬‚¬‚ׄ×××ׂ¬× ¬ ¬†¬¬¬„׬¬7×.׆¬×¬¬P¬Vy×[¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚(ׂ¬×1¬„׬¬7×.׆¬×¬¬P¬yV\¬ כ׬׬׬׬׬׬׬׬׬׬׬׬¬ ו׬׬׬׬׬׬׬׬׬¬ ׂ¬‚(ׂ¬×1¬„׬¬7×.׆¬×¬¬¬¬5¬™¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬“¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬‚(ׂ¬×1¬„׬¬7×.׆¬×¬¬¬¬¬¬*‚¬×1¬„׬¬7×.׆¬×¬¬¬¬¬¬+×1¬„׬¬7×.׆¬×¬¬¬¬¬a¬„׬¬7×.׆¬×¬¬¬¬¬a¬„׬¬7×.׆¬×¬¬¬¬¬a¬„׬¬7×.׆¬×¬¬¬¬¬¬D¬„׬¬7×.׆¬×¬¬¬‚¬×××%׬„׬¬7×.׆¬×¬¬¬‚$׬„׬¬7×.׆¬×¬¬¬‚$׬„׬¬7×.׆¬×¬¬¬‚$׬„׬¬7×.׆¬×¬¬¬‚$׬„׬¬7×.׆¬×¬¬¬×¬‚$׬׬„׬¬7×.׆¬×¬¬¬‚V× V׬‚ ¬ ¬‚¬]׬‚V× V׬„׬¬7×.׆¬×¬¬¬‚V× ¬‚V׬‚ ¬¬ ‚¬¬„¬¬‚¬¬[׬‚V× ¬‚V׬„׬¬7×.׆¬×¬¬¬‚V× ¬‚V׬‚ ¬¬‚¬¬„¬¬¬Z׬‚V× ¬‚V׬„׬¬7×.׆¬×¬¬¬‚V× ¬‚V׬‚ ¬¬¬„¬¬¬Y׬‚V× ¬‚V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ‚V׬‚ ¬¬¬„¬¬¬Y׬ƒV×+ ‚V׬„׬¬7×.׆¬×¬¬¬„V×+V„V׬‚ ¬¬¬„¬¬¬X׬„V×+V„V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ‚V׬‚ ¬¬¬„¬¬¬X׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+V„V׬‚ ¬¬¬ ¬ƒ¬¬¬X׬ƒV×+ ‚V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚ ¬¬¬¬¬¬¬¬X׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ‚V׬‚ ¬„¬¬¬ ¬¬¬¬X׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+V„V׬‚ ¬„¬¬¬ ¬¬ ¬¬X׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬¬¬¬X׬„V×+V¬„VV׬„׬¬7×.׆¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬¬‚¬¬¬I%9׬„V×+V¬„VV׬„׬¬7×.׆¬×¬¬¬„V×+V+„VV׬‚ ¬„¬¬¬ ¬¬¬¬JI %0׬„V×+V¬„VV׬„׬¬7×.׆¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬„¬¬¬ JIJ %-׬ƒV×+ VƒV׬„׬¬7×.׆¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬ƒ¬¬‚¬¬ $J‚%%*׬„V×+V¬„VV׬„׬¬7×.׆¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬‚¬‚¬¬ )JƒI%$'׬„V×+V¬„VV׬„׬¬7×.׆¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬¬ ¬,JI&׬„V×+V¬„VV׬„׬¬7×.׆¬×¬¬¬„V×+V„V׬‚ ¬¬¬¬¬¬/JI‚%%#׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚ ¬ ¬ ¬¬ ¬2JI‚%%"׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚¬¬¬¬¬¬|5JI% ׬„V×+V„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚¬¬¬¬¬¬z7JI%׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚¬¬¬„¬¬¬w9JI%׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚¬¬¬¬¬¬t‚nn9JI%׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+V„V׬‚¬¬¬„¬¬¬qn7JI %׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚¬¬¬„¬¬¬o n6JI %׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚¬„¬¬¬¬¬¬l n7JI %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚I¬i n2J I %׬„V×+¬V„¬V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚4o n2J I %׬„V×+¬ׄ¬V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚3on2JI %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚1on0JI%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬„V×+¬V„¬V׬‚0on0JI%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬„V×+¬ׄ¬V׬‚.o n/JI%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚-o n/JI%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚+o n-JI%׬„V×+¬V„¬V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚*uo n(JI%׬„V×+¬ׄ¬V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚(uo n(JI%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚'un&JI%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬„V×+¬V„¬V׬‚%un%JI%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬„V×+¬ׄ¬V׬‚q‚VV0uon$JI%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚k V,uon!JI%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚fV*u‚oonJI%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚`V&uonJI%I%׬„V×+¬V„¬V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚ZV+V$uonJI&%׬„V×+¬ׄ¬V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚U&V!uonJ I I'%׬„V×+¬ׄ¬V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚OV+V¬Vuo nJI I2%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬„V×+¬V„¬V׬‚O¬.Vuo nJII3%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬„V×+¬ׄ¬V׬‚O¬-Vuo nJ IF4%׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ׃V׬‚O¬.Vuo nJ I 4%׬„V×+׬„×V׬„׬¬7×.׆¬×¬¬¬„V×+׬„×V׬‚O¬-Vuo nJ I% ‚$$$%׬„V×+׬„×V׬„׬¬7×.׆¬×¬¬¬„V×+׬„×V׬‚Q¬.Vu onJ I%&%$׬„V×+×V„×V׬„׬¬7×.׆¬×¬¬¬„V×+׬„×V׬‚R¬.Vu onJ I%F"%׬ƒV×+ ׃V׬„׬¬7×.׆¬×¬¬¬„V×+׬„×V׬‚S¬.V u onJ I%‚FF !%׬ƒV×+ ׃V׬„׬¬7×.׆¬×¬¬¬„V×+׬„×V׬‚U¬.V u onJ I%F%׬„V×+׬„×V׬„׬¬7×.׆¬×¬¬¬„V×+×V„×V׬‚V¬V¬Vu onJI%F%׬„V×+׬„×V׬„׬¬7××׆¬×¬¬¬ƒV×+ ׃V׬‚X¬.Vu onJI%F ƒ%%׬„V×+׬„×V׬„׬¬7××׆¬×¬¬¬ƒV×+ ׃V׬‚Y¬/VuonJI% F ƒ%$%$׬„V×+׬„×V׬„׬¬7××׆¬×¬¬¬„V×+׬„×V׬‚Z¬,VuonJI% Fƒ%%%$׬„V×+׬„×V׬„׬¬7× × ׆¬×¬¬¬„V×+׬„×V׬‚\¬*Vuo‚nnJI%‚ F%$׬„V×+×V„×V׬„׬¬&× × × ׆¬×¬¬¬„V×+׬„×V׬‚]¬'Vuo‚nnJI% F %$׬ƒV×+ ׃V׬„׬¬$× × × ×&¬„×V׬‚_¬%Vuo‚nnJI% F%I%׬ƒV×+ ׃V׬„׬¬$× × ×‚×××&¬„×V׬‚`¬#VuonJI% F%I%׬„V×+׬„×V׬„׬¬#×× × ××׆¬×¬¬¬„V×+×V„×V׬‚a¬ VuonJI% F V%J%׬„V×+׬„×V׬„׬¬#×ׂ × ××׆¬×¬¬¬ƒV×+ ׃V׬‚c¬V„¬VV+V™uonJI% F!‚VV%‚JJ%׬„V×+׬.×× ××׆¬×¬¬¬ƒV×+ ׃V׬‚d¬V™uonJI‚%% F!V%J%׬„V×+׬. × ××׆¬×¬¬¬„V×+׬„×V׬‚f¬V™‚uuonJI‚%%  F"VJ%׬„V×+׬„×V׬„׬¬%× ××׆¬×¬¬¬„V×+׬„×V׬‚g¬V™‚uu o‚nnJI‚%% F "VJ%׬„V×+×V„×V׬„׬¬%× ××׆¬×¬¬¬„V×+׬„×V׬‚h¬V™u o‚nnJI% F#V‚JJ%׬ƒV×+ ׃V׬„׬¬$ׂ× ××׆¬×¬¬¬„V×+׬„×V׬‚QV+¬V™u o‚nnJI‚%% F$VJ%׬ƒV×+ ׃V׬„׬¬$ׂ× ×.׆¬×¬¬¬„V×+׬„×V׬‚P‡¬¬VV¬V™u onJI‚%% F#ƒGGVJ%$׬„V×+׬„×V׬„׬¬$ׂ×× ×.׆¬×¬¬¬„V×+×V„×V׬‚P¬ƒV¬‚V¬ V™u onJI% F#GV‚JJ%׬„V×+׬„×V׬„׬¬%× ×.׆¬×¬¬¬„V×+¬ׄ¬V׬‚P¬ƒV¬‚V¬ V™u onJI‚%% F"†GGVJ %׬ƒV×+ ¬ƒV׬„׬¬&××.׆¬×¬¬¬„V×+¬ׄ¬V׬‚Jƒ++¬ƒV¬ +¬V™u onJI‚%% F!ŠGGJVVJ %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚I‹¬¬VV¬+¬V™u onJI‚%% F !…GGJ…VVJJ %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚G‚++¬„++Vƒ+VV+¬V™u onJI‚%% F!†GGJVJ %׬„V×+¬V„¬V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚FV¬ƒV+V+¬V™u onJI‚%% F G„%J %׬„V×+¬ׄ¬V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚EV¬Vƒ+VV+ ¬™u onJI‚%V F†GGJ %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚E‚V+Vƒ+VV+ ‚¬¬™uo‚nnJI‚%%V F†GGJ %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬„V×+¬V„¬V׬‚DV+Vƒ+VV+‚VV + ™uo‚nnJI‚%%V F…GGJ %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬„V×+¬ׄ¬V׬‚D‚¬¬‰++¬V+VV +V + ™uo‚nnJI‚%%V F…GGJ %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚D¬„Vƒ+ +‚V++™uo‚nnJI‚%% V F GJ %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚D¬‚Vƒ+ +V+‚+™uonJI‚%%V+ F…GGJ %׬„V×+¬V„¬V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚D¬ +V++™uonJI‚%%V+ F†GGJ‚nn %׬„V×+¬ׄ¬V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚DV +V++™ uonJI%V + F…GG Jn %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚EV‚+ + V+‚++™ uonJI„%%VV + F…GG Jn %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬„V×+¬V„¬V׬‚DV++¬ V+‚++™ uonJI‚%% + FG Jn %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬„V×+¬ׄ¬V׬‚B†¬++¬ V+„++™ uonJI‚%% + F…GG Jn %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚B¬+¬ V+ƒ++™ uonJI‚%%+ F†GG J‚nn %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚A¬‚++¬ V‚++ƒ++™ uonJI‚%%+ F…GG nJ‚nn %׬„V×+¬V„¬V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚A¬+¬ V‚++‚++™ uonJI„%%++! F…GGnJ‚oo %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚B¬V+¬V‚++ƒ+šš™ uonJI‚%%$ FG%n„JJoo %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ¬ƒV׬‚C„VV++ ¬…V++š‚™™ uƒoonJI‚%%$ F…GG%n‚oo %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬„V×+¬V„¬V׬‚D…V+ ¬…VV¬+š u„oonnJI‚%%% F†GG%n‚oo %׬ƒV×+ ¬ƒV׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚Cƒ¬¬+¬†VV¬š uƒoonJI‚%%& F…GG%n‚oo %׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚C¬‚V+¬…VV¬š uƒoonJI‚%%' F…GGƒ%oon‚oo %׬„V×+V„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚C¬‚V+¬„VV+š u‚onJI‚%%' FG%o„nnoo %׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚C…¬¬V+¬†V+š u‚onJI‚%%( F…GG%oƒnuu %׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚DV+¬š u‚onJI‚%%) F†GGou %׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+V„V׬‚G+¬š uƒoonJI‚%%* F…GGou %׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚G+¬š u‚onJI‚%%* F…GG‚%uo‚uu %׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚H+ ¬š u‚onJI%+ FGƒ%uuo‚uu %׬„V×++„V׬„׬¬7×.׆¬×¬¬¬„V×+V¬„VV׬‚H+¬š u‚onJI%, F…GG%u„oouu %׬„V×+V¬„VV׬„׬¬7×.׆¬×¬¬¬„V×+V¬„VV׬‚H+¬š u‚onJI%- F†GGIuƒouu %׬„V×+V¬„VV׬„׬¬7×.׆¬×¬¬¬„V×+V¬„VV׬‚H+š uƒoonJI%- F†GGI u %׬ƒV×+ VƒV׬„׬¬7×.׆¬×¬¬¬„V×+V+„VV׬‚I+Vš u‚onJI%. F…GGI u%׬„V×+V¬„VV׬„׬¬7×.׆¬×¬¬¬„V×+V¬„VV׬‚I+ Vš u‚onJI%/ FGIu %׬„V×+V¬„VV׬„׬¬7×.׆¬×¬¬¬„V×+V¬„VV׬‚I+‚ V+š u‚onJI‚%%/ F…GGIu %׬„V×+V„VV׬„׬¬7×.׆¬×¬¬¬ƒV×+ VƒV׬‚J+ V+š u‚onJI‚%%/ F†GGJu%׬„V×+V¬„VV׬„׬¬7×.׆¬×¬¬¬ƒV×+ ‚V׬‚J+V+š u‚onJI%0 F†GGJ u%׬„V×+V„V׬„׬¬7×.׆¬×¬¬¬„V×+¬„V׬‚K +‚VV+‚š u‚onJI%1 F…GGJ u%׬ƒV×+ ‚V׬„׬¬7×.׆¬×¬¬¬„V×+V„V׬‚L+š u‚onJI%1 FGJu %׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ‚V׬‚M+š u‚onJI%2 F…GGJu%׬„V×+¬„V׬„׬¬7×.׆¬×¬¬¬„V×+V„V׬‚O +š uoJI‚%%2 F †GGJ u%׬„V×+V„V׬„׬¬7×.׆¬×¬¬¬ƒV×+ ‚V׬‚R+š u‚onJIƒ%%2 F †GGJ u%׬ƒV×+ ‚V׬„׬¬7×.׆¬×¬¬¬‚V× ¬‚V׬‚[š u‚onJI%0 F …GGJu%׬‚V× ¬‚V׬„׬¬7×.׆¬×¬¬¬‚V× ¬‚V׬‚Zš u‚onJIƒ%/ F …GGJ u%׬‚V× ¬‚V׬„׬¬7×.׆¬×¬¬¬‚V× ¬‚V׬‚Zš u‚onJI%. F GJ u%׬‚V× ¬‚V׬„׬¬7×.׆¬×¬¬¬‚V× ¬‚V׬‚Yš u‚onJIƒ%V+- F †GGJu%׬‚V× ¬‚V׬„׬¬7×.׆¬×¬¬¬‚V× ¬‚V׬‚Xš u‚onJI…%%VV„V++' F †GG™u%׬‚V× ¬‚V׬„׬¬7×.׆¬×¬¬¬V׬‚Wš u‚onJI%‚VV+& F++…GGƒJ™™u%׬V׬„׬¬7×.׆¬×¬¬¬V¬‚Wš u‚onJIƒ%¬¬‚VV+% F‚+++…GG ™u%׬V¬„׬¬7×.׆¬×¬¬¬‚Vš u‚onJI%¬¬+#+ F‚VV++‚G™ƒu™™%׬„׬¬7×.׆¬×¬¬¬‚Uš u‚onJI‚%%¬…¬++ƒ++"V FV +‚™%׬„׬¬7×.׆¬×¬¬¬‚Uš u‚onJI%¬+‚++ ƒ+VFV+ ™%׬„׬¬7×.׆¬×¬¬¬‚Tš u‚onJI‚%¬+ƒ+VV+VF + ƒ™%׬„׬¬7×.׆¬×¬¬¬‚Tš uoJI…%2V¬+‚+V +‚¬++VF + %׬„׬¬7×.׆¬×¬¬¬‚Sš u‚onJI†%2V¬+…¬¬VVV+¬+ VF +%׬„׬¬7×.׆¬×¬¬¬‚Rš u‚onJI%†¬V¬¬+¬VV +  VF+%׬„׬¬7×.׆¬×¬¬¬‚Rš u‚onJIƒ%V„¬¬+‚¬¬VV ++++%׬„׬¬7×.׆¬×¬¬¬‚Qš u‚onJI‚%%Vƒ¬¬+ƒ¬¬V…V++¬++‚+++‚¬+%׬„׬¬7×.׆¬×¬¬¬‚Qš u‚onJI%V¬+ƒ¬¬V‚+¬ƒV+¬+++„¬¬++  %׬„׬¬7×.׆¬×¬¬¬‚Pš u‚onJI%V‚¬+‚¬V¬ƒV+++¬‚++  %.×m׬„׬¬7×.׆¬×¬¬¬‚Pš u‚onJI‚%%V„++¬+‚VV†¬¬ +++¬+¬‚++  %.×n׬„׬¬7×.׆¬×¬¬¬‚Oš u‚onJI%V„+¬+V„ ‚,+ +‚ƒ¬¬+¬+%-× ×d׬„׬¬7×.׆¬×¬¬¬‚Nš u‚onJI%V+V+ƒ„,,-+ +¬+%-× ×e׬„׬¬7×.׆¬×¬¬¬‚Nš u‚onJI‚% +V+ƒ‡,,--+¬+ ¬+ ‚™™%,× ×f׬„׬¬7×.׆¬×¬¬¬‚Mš uoJI% +V+…,,-…++¬ +, ¬+ š™%+‚×× ×f׬„׬¬7×.׆¬×¬¬¬‚Mš u‚onJI‚%¬+‚VV+¬ƒ-‚V¬¬ +-‚,, ¬+ š‚™™%(× ×f׬„׬¬7×.׆¬×¬¬¬‚KVš u‚onJIƒ%…+VV+‚¬†-V¬¬+-‚,, ƒ¬¬+š™%'××f׬„׬¬7×.׆¬×¬¬¬‚IVš u‚onJIƒ%¬V+,…¬+‚¬¬+-‚,, ‚¬+š‚™™%'××f׬„׬¬7×.׆¬×¬¬¬‚G¬Vš u‚onJI…%V¬VV+ƒ,,-ƒ ¬+ -, +Jš‚™™%'××g׬„׬¬7×.׆¬×¬¬¬‚Gƒ¬¬Vš uoJ‰II%%V¬VVV„++¬+,-ƒ¬+ -‚,,+‚Jš‚™™%'×× ×g׬„׬¬7×.׆¬×¬¬¬‚G¬š u‚onJI…%VV¬VV+¬‚+,-‚¬+-‚,,„++Jš‚™™%&׃×× ×g׬„׬¬7×.׆¬×¬¬¬‚H¬š unJI†%VV¬Vƒ++¬,-V‚¬+-‚,,+‚JJš%'׃×× ×g׬„׬¬7×.׆¬×¬¬¬‚Iš u‚onJI…%VVV+†V¬¬,-ƒV¬+¬+-,‚J š%'‡×××× ×h׬„׬¬7×.׆¬×¬¬¬‚Hš u‚onJI%V‚V +„V,-„¬+¬¬¬+.-,‚J š%)××××hƒ×¬¬…¬×¬¬7×.׆¬×¬¬¬‚Gš u‚onJ„II%%V‚¬ V V+‚-‚V+¬¬+.-, J š%.××××h„׬¬×…¬×¬¬7×.׆¬×¬¬¬‚Gš u‚onJI%V‚¬ V V+ƒ,-V¬¬+.-,‚  J š%.׉×××××i„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚Gš uoJI%V‚¬ V „VVV+ƒ,-¬¬+ .-‚,,‚ J š%-××××i„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚Fš u‚onJI%V‚¬ VV+‚,-V¬‚¬ƒ++ .-‚,,‚ J š%-‚×׉×××××j„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚Fš u‚onJI%V‚V‚VV+ƒ,-V¬¬++.-‚,,„J š%,׉×××××k„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚Eš u‚onJI%V‚V‚VV+‚,- ¬¬+.-,J š%-ׂ×ׄ××l„׬¬×¬ƒ¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚Eš u‚onJI%V‚¬VV+ƒ,-V ¬+.-‚,,J š%.׈××××m„׬¬×¬‚¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚Dš uoJƒII%V‚¬VˆV++¬¬,-V ¬+‚.+.-,J š%4‚××q„׬¬×¬†¬¬¬ ¬‚¬‡¬×¬¬7×.׆¬×¬¬¬‚Dš u‚onJI%V‚¬V‡V++¬¬-V ¬+.+. -‚,,J š%)„׬¬×¬ƒ¬¬¬„¬¬‡¬×¬¬7×.׆¬×¬¬¬‚Cš uoJI%V‚¬V†++¬¬-V ¬+.. -,J š%)„׬¬×¬…¬¬¬¬‚¬¬‡¬×¬¬7×.׆¬×¬¬¬‚Cš u‚onJI%!V‚+ƒ¬,- ¬+.. -‚,, ‚JJ š%*„׬¬×¬¬‡¬¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚Bš u‚onJI%#V+‚,-V ¬+ .‚. -, J š%*„׬¬×¬¬„¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚Bš u‚onJI%$V+‚,- ¬+ .. -‚,, J š%+„׬¬×¬¬„¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚Bš u‚onJI%&V+…,--V ¬+. -, J š%+„׬¬×¬¬¬‚¬¬‡¬×¬¬7×.׆¬×¬¬¬‚Aš u‚onJI%'Vƒ++- ¬+. -, J š%,„׬¬×¬¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚Aš u‚onJI%)V…+--V ¬+. -,ƒ‚JJ š%-„׬¬×¬¬¬„¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚@š unJI%*Vƒ-- ¬+!. -ƒ,J š%-„׬¬×¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚@š u‚onJI%+Vƒ,V ¬+!. -‡V‚¬V+„JJ š%.„׬¬×¬„¬¬¬‚¬‡¬×¬¬7×.׆¬×¬¬¬‚?š unJI%+Vƒ,V ¬+". -ƒ-,VƒV+‚J š%.„׬¬×¬„¬¬¬‚¬‡¬×¬¬7×.׆¬×¬¬¬‚?š u‚onJIƒ%¬¬*V‚, ¬+$.--¬ V+ š%X%‚Q„׬¬×¬ƒ¬¬‚¬‡¬×¬¬7×.׆¬×¬¬¬‚>š uoJI%¬)V‚V ¬+$.--…,¬¬VV+ š%W%O„׬¬×¬‡¬¬¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚>š u‚onJ„II%¬)V ¬+%.-‚-…¬¬V+‚š%V%J„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚=š uoJIƒ%¬(V ¬+&.-‚-‚V+‚š%U %‚&&%I„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚=š u‚onJƒII%¬%Vƒ ¬+&.„---‚V+„¬¬š+%T%&%I„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚<š uoJI%¬!V ¬+(.‚--¬V‚+++TB&%&%I„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚<š u‚onJƒII%¬V¬+(.- ƒV¬¬V‚+*T@&‚%%&%Iƒ×¬¬׆¬×¬¬7×.׆¬×¬¬¬‚<š uoJI% ¬V ¬+(.- ¬‚VV+* T>& %H׬„׬¬7×.׆¬×¬¬¬‚;š u‚onJƒII% ¬V¬+'.….-¬- ƒV¬¬+* T<&‚JJ& %Hƒ×¬¬…¬×¬¬7×.׆¬×¬¬¬‚;š u‚onJI% ¬V‚¬¬+ƒ++&.ƒ..¬„¬¬ ‚++ T *T;&J& %H„׬¬×…¬×¬¬7×.׆¬×¬¬¬‚;š u‚onJI%¬V†¬+++&.ƒ.. ¬ +T*T9&J&%H„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚:š u‚onJI%¬ V‚++&.ƒ.. ¬+‚V+%T8‚JJ&J%H„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚:š uoJI%¬ V‚++%.. ¬+ƒVV+TT4J&J %‚&&%H„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚:š u‚onJ„II%%¬V+%..‚ ¬+ƒVV+Tƒ$%$T4‚ J%‚%&%I„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚9š u‚onJI%¬V ‚++%..‚ ¬+ƒVV+~T$%$T3‚JKJ%ƒ&%%&%I„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚9š unJI%¬ ‚++$.. ¬‚++V+~T„%II%$4‚J‚KKJ%ƒ&&%&%I„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚9š u‚onJƒII%‚++$.. ¬V+ ~ T‚$%I%‚$$2‚%%JKJ%&J‚%%J„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚8š u‚onJI%„++--!..‚ ¬V+~ T% I%‚$$0„%%KKJK%&J%J„׬¬×¬‰¬¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚8š unJI%+-$. ¬V‚++~T$I%‚$$-‚%%KJK%&J%J„׬¬×¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚8š u‚onJI%+-..‚ ¬…+VV++~T%I%‚$$+‚%%KJK%†%JJ&&J‚%%K„׬¬×¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚7š uoJI%+-..‚ ¬‚++V+~T%I%‚$$'% K% %J&J‚%%K„׬¬×¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚7š u‚onJ„II%%+-..‚ ¬‚++V+~T‚%Inm I%‚$$%% K% ‚%%JK%K†×¬¬×¬¬ ¬¬‡¬×¬¬7×.׆¬×¬¬¬‚7š u‚onJI%+-.†.V.. ¬+V+~T‚%I n I%‚$$#% K% ‚%%JK‚%%L†×¬¬×¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚6š uoJI% + -.‡..¬¬VV ¬‚++V+~T‚%I n I%‚$$ % K% %K‚JJK‚%%L†×¬¬×¬¬ ¬¬‡¬×¬¬7×.׆¬×¬¬¬‚6š u‚onJƒII% +, -.ƒ-- ¬‚++V+~T‚%Inm I%‚$$% K% ‚%%K‚%%M„׬¬×¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚6š u‚onJI% +-.-‚-¬+V+~T‚%In I%$% K% %K‚%%M„׬¬×¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚5š uoJI%+ƒ,-- ¬†++VV+~T‚%In I%$‚%% K% ‚%%K%N„׬¬×¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚5š u‚onJI%V +„¬,- ¬+V+~T‚%Inm I%$‚%% K%‚%%K‚%%N„׬¬×¬‰¬¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚5š u‚onJI% V +¬,-¬V…++VV+~TIntn I%‚$$‚%% K%‚%%K%O„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚5š unJI‚% ƒVV +¬,-¬V+~T‚In tn I%$‚%% K%‚%%K‚%%O„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚5š u‚onJI%ƒVV+¬,--¬V+~T‚Int˜tnm I%‚$$% K%%K%P„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚4š u‚onJI%ƒV+¬,-„--,¬V+~Tƒ%nt ˜tn I%$% K%‚%%K‚%%P„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚4š uoJI%ƒV+¬„VV++‚,, -,¬¬ƒVV+~T‚It ˜tnm I%‚$$ % K‚%%%K%Q„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚4š u‚onJI% V+¬‚VV+Fƒ…¬¬VV+~T‚In˜tn I%$ % K‚%%‚%%K‚%%Q„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚4š u‚onJI% V+¬‚VV +  ƒVV+~T‚In˜tnm I%$% K‚%%%K%Rƒ×¬¬׆¬×¬¬7×.׆¬×¬¬¬‚3š u‚onJI% ƒV„+¬VV +F ƒVV+~T‚%n˜tn I%‚$$% K‚%%‚%%K‚%%R׬„׬¬7×.׆¬×¬¬¬‚3š uoJI%„GGV +FV~TI˜tnm I%ƒ$% K‚%%‚&&K%Sƒ×¬¬…¬×¬¬7×.׆¬×¬¬¬‚3š u‚onJI%…GGV+FV¬‚V+~T‚In˜tn I%$% K‚%%‚&&K‚%%S„׬¬×…¬×¬¬7×.׆¬×¬¬¬‚3š u‚onJ†II%%…GG  FV…¬¬+V+~T‚%n˜tnm I% K%‚&&K%T„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚3š u‚onJI‚%G  F‚JJu‚+V~TI˜tn I% K%ƒ&&LK‚%%T†×¬¬×¬¬¬¬‰¬¬×¬¬7×.׆¬×¬¬¬‚2š uoJI%…GG F‚JJu‚++~T‚In˜tn I% K%‚&&pLK%U‡×¬¬×¬¬‚¬¬¬‰¬¬×¬¬7×.׆¬×¬¬¬‚2š u‚onJI%†GG F‚JJu‚++ ~Tn"˜tnI% K%‚&&pK%Vˆ×¬¬×¬¬¬¬¬Š¬¬×¬¬7×.׆¬×¬¬¬‚2š u‚onJ„II%%!…GG  F‚JJu‚++ ~T‚In$˜tnI% K%‚&&p„LKK%V„׬¬×¬‚¬¬¬‹¬¬¬×¬¬7×.׆¬×¬¬¬‚2š u‚onJIƒ%%"…GG F‚JJ u+ ~T‚%n'˜tnI% K‚%%‚&&p%W„׬¬×¬¬‚¬‡¬×¬¬7×.׆¬×¬¬¬‚2š uoJI%#G F‚JJ u‚+T ~T‚It)˜tn%‚LL K‚%%‚&&p‚%%W„׬¬×¬‚ ¬¬‡¬×¬¬7×.׆¬×¬¬¬‚1š unJ‚II$…GG F‚JJ u‚+T ~Tn,˜‚ttn‚%%p‚LLK‚%%‚&&p%X„׬¬×¬…¬¬¬¬‚¬‡¬×¬¬7×.׆¬×¬¬¬‚1š u‚onJ%†GG F‚IJ uƒ%%T ~T‚It.˜‚tt n%p‚LLK‚%%‚&&p‚%%X„׬¬×¬ˆ¬¬¬¬¬‚¬‡¬×¬¬7×.׆¬×¬¬¬‚1š u‚onJ&†GG F ‚II u%‚TT~Tn0˜‚tt n%pLK‚%%‚&&p%Y„׬¬×¬¬Ž¬¬¬¬¬¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚1š uoJ(…GG F ‚II u%‚TT~T‚In1˜tnƒ&&%pK%‚&&p%Z„׬¬×¬ƒ¬¬ ƒ¬¬¬‡¬×¬¬7× ×׆¬×¬¬¬‚1ƒ™šš unJ)G F ‚II u%T~T‚It3˜tn&pK‚%%‚&&p‚%%Z†×¬¬×¬¬„¬¬„¬¬‰¬¬×¬¬7× ×׆¬×¬¬¬‚1ƒ™™š u‚onJ *…GG F ‚II u%‚TT~Tƒ%nt4˜t‚nn&p‚LLK‚%%‚&&p%[‹×¬¬×¬¬¬¬¬¬Ž¬¬¬¬¬×¬¬7× ×׆¬×¬¬¬‚1™ u‚onJ +†GG F ‚%% u%‚TT~TƒInt5˜tƒn&&pLƒK%%‚&&p%\„׬¬×¬‚¬‚¬‚¬‚¬‡¬×¬¬7× ××׆¬×¬¬¬‚1™ u‚onJ ,†GG F ‚%% u%ƒTT~TƒInt6˜‚tn& p†LL%%‚&&p%\„׬¬×¬¬ˆ¬¬¬¬¬¬‡¬×¬¬7× ×ׂ׆¬×¬¬¬‚1™ u‚onJ.…GG F ‚%o u%‚TT~Tƒnnt6˜t& p‚%%‚&&p%]‡×¬¬×¬¬ƒ¬¬ƒ¬¬¬Š¬¬×¬¬7× ×××h™ uƒoonJ/G F%o u%‚TT~T%nt4˜t& p%‚&&p‚%%]„׬¬×¬¬ˆ¬¬¬¬¬¬‡¬×¬¬7× ××g™ u‚ooJ%/G F%ou%‚TT~TInt4˜& pƒ%%‚&&p%^‰×¬¬×¬¬¬¬‚¬‚¬Œ¬¬¬¬×¬¬7× ×׆¬×¬¬¬‚0™uoJ…II%.†GG F%ou%ƒTT~TInt2˜ƒn&& p‚%%‚&&p%_†×¬¬×¬¬‚¬¬‚¬‰¬¬×¬¬7× ×׆¬×¬¬¬‚0™uƒoonJI%-†GG F‚%% ou%ƒTT~TInt1˜t& p‚%%‚&&p‚%%_„׬¬×¬„¬¬¬„¬¬¬‡¬×¬¬7× ××׆¬×¬¬¬‚0™uonJI%-…GG F‚%% ou% ƒTT~TInt/˜& p‚%%‚&&p%`„׬¬×¬¬ ¬¬‡¬×¬¬7× ××׆¬×¬¬¬‚0™uonJI%,…GG F‚%%nou% TIn‚tt-˜& p„%%‚&&p%a‡×¬¬×¬¬¬¬„¬¬¬¬Š¬¬¬×¬¬7× ×‚××׆¬×¬¬¬‚0™uonJI%+G F%nou% T‚IIn‚tt+˜ƒn&& p„%% ‚&&p%a„׬¬×¬¬¬¬¬‡¬×¬¬7× ×׆¬×¬¬¬‚0™uonJI%*†GG Fƒ%%n‚oou% T‚IInt(˜t& p‚%% ‚&&p%b„׬¬×¬‡¬×¬¬7× ×׆¬×¬¬¬‚0™uonJI%)†GGFƒ%%Jnou%TInt'˜& p‚%% ‚&&p%cƒ×¬¬׆¬×¬¬7×.׆¬×¬¬¬‚0™uonJI%)…GG F‚%%Jnƒoou %T‚IIn‚tt˜™˜& p‚%%‚ ‚&&p%c׬„׬¬7×.׆¬×¬¬¬‚0™uonJI%(…GG F%Jno % T‚IIn‚tt˜‚™™˜& p%‚&&p%dƒ×¬¬…¬×¬¬7×.׆¬×¬¬¬‚0™uoJI%'G FJ‚nno % TIn‚tt˜‚™™˜‚&& p‚%% &p%e„׬¬×…¬×¬¬7×.׆¬×¬¬¬‚0™uoJI%&†GG F Jo % Tƒ%IInt˜™˜& p‚%% ‚‚&&p%e„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚0™uonJI%%†GG FJo %T‚IInt˜™‚˜˜& p„%% ‚‚&&p%f„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚0™uoJI‚%%$…GG FJo %#‚IIn‚tt˜™˜‚&& p‚%%+„K‚‚&&p%g„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚0™uoJI‚%%#…GGFJƒnno %%In‚tt˜™˜‚&& p‚%%‚+%Kƒ‡&&p%h„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚0ƒu™™uoJI‚%%"G FJn %'In‚tt˜™‚˜˜& p„%%¬¬%K‚&…&&p%h„׬¬×¬¬†¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚1„u™uu onJI%!†GG FJn %+‚IIn‚tt˜™‚˜˜& p‚%%¬‚&KƒJ&ƒ&p%i„׬¬×¬¬†¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚1„u™uu onJI‚%%†GG F‚JJn %-‚IInt˜‚™™˜‚&& p‚%%¬&K„JJ&ƒ&p%j„׬¬×¬¬†¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚1u onJI‚%%…GGF‚JJn %/ƒIImnt˜ƒ™˜˜& pƒ%%¬ƒ&&LK„J&%‚p%j„׬¬×¬¬ƒ¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚1u onJI‚%%…GG FJn %1ƒIImnt˜& p…%%+¬‚J&pK…J%%‚p%k„׬¬×¬ ¬¬‡¬×¬¬7×.׆¬×¬¬¬‚1u onJI‚%%G F‚JJ %3‚IInt˜& p‚%%†¬¬&J&pK‚%%‚p%l„׬¬×¬ ¬¬‡¬×¬¬7×.׆¬×¬¬¬‚1u onJI%†GGF‚JJ %6Int˜‚&& p‚%%&pKƒ%%†pp%%l„׬¬×¬„¬¬ ¬„¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚1u onJI‚%%†GG %FJ %9‚IInt ˜& p‚%%‚&& p„L%ƒ&…p%m„׬¬×¬†¬¬¬¬„¬¬‡¬×¬¬7×.׆¬×¬¬¬‚1u onJI‚%%…GG%F %;‚IInt ˜& p‚%%& p%†+&pƒn„׬¬×¬…¬¬¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚2‚uu onJI%…GG%F %=‚IIn‚tt ˜‚&& p‚%%#‚&& p‚%¬…+ppƒn„׬¬×¬„¬¬¬‚¬‡¬×¬¬7×.׆¬×¬¬¬‚2‚uu onJI‚%%G %F %@Int˜& p%#‚%Kp%¬„p‚+g„׬¬×¬‚¬‚¬‡¬×¬¬7×.׆¬×¬¬¬‚2‚uu onJI%†GG %ƒJFF%B‚IInt˜& p‚%%#„%KKp%¬+Š+V+V¬P„׬¬×¬‚¬ƒ¬ˆ¬¬×¬¬7×.׆¬×¬¬¬‚2u onJI‚%%†GG %JF%E‚IInt˜‚&& p‚%% #Kp%¬+„V++V!‚++G„׬¬×¬¬„¬¬‰¬¬¬×¬¬7×.׆¬×¬¬¬‚3‚uu onJI%†GG%J% %G‚IIn˜‚&& p‚%%#Kp‚%¬„#"++!‚++H„׬¬×¬ƒ¬¬¬‡¬×¬¬7×.׆¬×¬¬¬‚3‚uu onJI‚%%…GG%J„%% %JIn˜& pƒ%%"#†KK%%+¬#†"VV+V ƒ+H„׬¬×¬ƒ¬¬‰¬¬¬×¬¬7×.׆¬×¬¬¬‚3‚uu o‚nnJI%G%J %MIn‚&& p„%%"#…%%¬#"V„VV+ƒ+G„׬¬×¬…¬¬¬ƒ¬ˆ¬¬×¬¬7×.׆¬×¬¬¬‚4‚uuonJI%…GG$ %J%O‚IIn‚&& p‚%%" #†+&¬#V„VV +ƒE„׬¬×¬¬‡¬×¬¬7×.׆¬×¬¬¬‚4‚uuonJI% †GG$ %J%QƒIIn& p%‚V" #…+p¬#V…VV¬++…1+D„׬¬×¬‰¬×¬¬7×.׆¬×¬¬¬‚4‚uuonJI% …GG$%I‚JJ%UƒI&& p‚%%‚VV" #p#V‡VV¬++ +1‚+B„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚5‚uuonJI% ƒG$%I%V‚&& p„%%++ V"#V‚¬+ +1ƒ+A„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚5‚uuonJI% %I%W& p%ƒppV‚"" #V…¬++ +‚1ƒ+@ƒ×¬¬׆¬×¬¬7×.׆¬×¬¬¬‚6uonJI%'%X‚&& p‚%% ‚&&„pV‚""#V…¬+VV++‚VV+‚ 1‚+>׬„׬¬7×.׆¬×¬¬¬‚6„uuoonJI%"%Y& p‚%% ‚&&p‚VV†""##VV‚¬+V„++V„++7 1ƒ+=ƒ×¬¬…¬×¬¬7×.׆¬×¬¬¬‚6„uuoonJ I%%Y& p% ‚&&pƒ%%&VV„+V+V+ V‚+7 1ƒ+<„׬¬×…¬×¬¬7×.׆¬×¬¬¬‚7‚uo nJI% %[‚&& p‚%% ‚&&p„%&&p‚‚VV¬ V+V V7 1ƒ+:„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚8u nJ I%$"%[& p‚%% ‚&&p…%&&Lpƒ%+V‚¬+ V‡+VV V7 1ƒ+‚+7„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚9 nJ I % $ %]‚&& p% ‚&&pŒ%%&KKLppLLp%†+VV++ V+ V‚ 7 1‚+„+5„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚9o nJ I1%]‚&& p‚%% ‚&&p%K†LLKL%%†+VV¬V+ V‚ 7 1„++5„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚:o nJ I.%^& p‚%% ‚&&p%K%„VV¬+Vƒ+ V‚+7 1+…4„׬¬×¬¬†¬¬¬¬‡¬×¬¬%××.׆¬×¬¬¬‚; nJ I+%`‚&& p‚%% ‚&&p%K%„+VVV‚++ V7 1‡+1+4„׬¬×¬¬†¬¬¬¬‡¬×¬¬#× ×.׆¬×¬¬¬‚;nJI%%a‚&& p‚%% ‚&&p‚%%K%‚+V71ƒ+1ƒ3„׬¬×¬¬†¬¬¬¬‡¬×¬¬#× ×.׆¬×¬¬¬‚<nJI!%c‚&& p‚%% ‚&&p‚%%K%‚V+Vƒ=71ƒ+1ƒ+3„׬¬×¬¬ƒ¬¬¬‡¬×¬¬"×× ×.׆¬×¬¬¬‚=nJI %c‚&& p% ‚&&p‚%%K% +V…>>=71ƒ+1ƒ2„׬¬×¬ ¬¬‡¬×¬¬)ׂ ×.׆¬×¬¬¬‚>nJI%d& p‚%% ‚&&p% K% +V‚+>=7‚1+1ƒ+2„׬¬×¬ ¬¬‡¬×¬¬%× ×.׆¬×¬¬¬‚?‚nnJI%f‚&& p‚%%&p% K% ‚++V>=7‚771ƒ1„׬¬×¬„¬¬ ¬ƒ¬¬'× ×.׆¬×¬¬¬‚@!JI%g‚&& p‚%% ‚&&p%K% +V >=771ƒ+1„׬¬×¬†¬¬¬¬‚¬(ׂ×× ×.׆¬×¬¬¬‚A!JI%i‚&& p‚%% ‚&&p%K%+V‚ >=71ƒ+0„׬¬×¬…¬¬¬¬¬‡¬×¬¬"×× ×.׆¬×¬¬¬‚B!JI%j‚&& p% ‚&&p%K%‚++V‚+ >= 7+71ƒ+0„׬¬×¬„¬¬¬‚¬‡¬×¬¬"×ׂ ×.׆¬×¬¬¬‚C JI %l& p‚%% ‚&&p%K%+V>= 7+ 71ƒ+/„׬¬×¬‚¬‚¬‡¬×¬¬"×× ×.׆¬×¬¬¬‚E JI %n‚&& p‚%%‚&&p%K‚%%‚++ V>=71ƒ+/„׬¬×¬‚¬‚¬‡¬×¬¬"ׂ×× ×.׆¬×¬¬¬‚F J I %o& p‚%% ‚&&p%K%‚++ V‚>=71ƒ+.„׬¬×¬¬‚ ¬‡¬×¬¬#× ×.׆¬×¬¬¬‚G J I%r‚&& p‚%%‚&&p%K%+ V‚+>=71‚.„׬¬×¬ƒ¬ ¬‡¬×¬¬%××.׆¬×¬¬¬‚JJ I%t‚&& p% ‚&&p%K%‚++ V>ƒ=7+7> 71ƒ+-„׬¬×¬ƒ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚LJI%w‚&& p‚%%‚&&p%K%‚++V>+7ƒ>>= 71‚-„׬¬×¬…¬¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚NJI%z‚&& p% ‚&&p%K%‚++V‚+>7>= 71ƒ+,„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚QJI‚&& p‚%%‚&&p%K%‚++ V>7> 71‚,„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚X J‚&& p‚%%‚&&p‚%JK%‚++V>7> 71ƒ++„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚i‚&& p%‚&&p‚%JK‚%%+V‚>„+=77 > 71‚+„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚h‚&& p‚%%‚&&p%K‚%%„++V‚+>= > 71ƒ+*ƒ×¬¬׆¬×¬¬7×.׆¬×¬¬¬‚h‚&& p%&p%K‚%%„++V*> 71ƒ++)׬„׬¬7×.׆¬×¬¬¬‚g‚&& p‚%%‚&&p%K%‚++ V‚+> 71…+V+'ƒ×¬¬…¬×¬¬7×.׆¬×¬¬¬‚g‚&& p%&p%K% +V‚+>+> 71…+V+&„׬¬×…¬×¬¬7×.׆¬×¬¬¬‚g& p‚%%‚&&p…%JKK%!‚++V/> 71…+‚++„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚f‚%& p%&p„%JK%"‚++V1> 71…++‚++„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚f% p‚%%‚&&p„%JJ%$+V‚+2>71„V„VV++„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚e‚%% p%&pƒ%J%%‚++V‚=>+>71†+VV‚++„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚e‚%% p‚%%ƒ%%&pƒ%J%&‚++V„7=3>71…VV‚++„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚d‚%% p%%&p‚%%'†++VV+73>71„+VV‚++„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚dƒ%%Lp‚%%%…&pp%%)„++V7=1>=71„V‚++„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚d„%KKLpL% %&‚p%*+7=>+ >=71V‚++„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚c‚%%K‚LpK% %&%++ 71>=7ƒ11V‚++„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚c%KLK% %&‚%%-ƒ++1 71>=71V‚++„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚c% K% %&‚%%.„+11 7=0>=7V‚++„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚c% K% %&‚%%21 7=>ƒ+77>>7V‚++„׬¬× ¬‚ ¬‡¬×¬¬7×.׆¬×¬¬¬‚b% K% %&‚%%41 7>7>+‚>7‚¬ V‚++„׬¬× ¬‚ ¬‡¬×¬¬7×.׆¬×¬¬¬‚b% K% ƒ%&‚%%7‚11 7>7>V+>‚77¬V‚++„׬¬× ¬ƒ¬¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚b%K% †%%&&%%9‚11 7†=>>+77> V+>¬V„׬¬×¬¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚b%K% %ƒ&%%;1 7…=>177>VƒVV>¬V„׬¬×¬¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚b K% %=1 7ƒ+11>‚+V¬‚V+>¬‚VV„׬¬×¬„¬¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚bK% %@‚117ƒ++>V¬„V>> ¬V„׬¬× ¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚bK% %B‚117„++>ƒV¬„V> ¬„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚bK%‚%E17ƒ+>ƒV¬ƒV ¬„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚bK%%G1ˆ7+77==>ƒ+¬¬„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚bK%%J„1+7‚==>„>>V¬>¬‚„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚bK%%O 7=>+Š>>V¬>¬„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚bJK%P7= >V‚+>¬ „׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚cJK %S17=>V‚V‚+>¬ ƒ×¬¬׆¬×¬¬7×.׆¬×¬¬¬‚d‚JJK %Z1 7„=VV‚V+>¬!׬„׬¬7×.׆¬×¬¬¬‚eJK %`1 7‚+V¬V>¬„׬¬×…¬×¬¬7×.׆¬×¬¬¬‚fKJ%g‚117ƒV¬„V>>¬…׬¬¬ ¬†×¬×¬¬7×.׆¬×¬¬¬‚gJ%o…117V¬…V>¬…׬¬ ¬ ¬†×¬×¬¬7×.׆¬×¬¬¬‚aƒ+¬ƒV¬…׬¬ ¬ ¬‡×¬×¬¬7×.׆¬×¬¬¬‚b‚¬¬¬ƒV…׬¬ ¬ ¬ˆ¬×¬×¬¬7×.׆¬×¬¬¬‚c‚¬¬„¬‚V…׬¬ ¬ ¬‰¬¬×¬×¬¬7×.׆¬×¬¬¬‚eV¬‚¬V…׬¬¬‚ ¬‰¬¬×¬×¬¬7×.׆¬×¬¬¬‚i¬‚¬V…׬¬¬ ¬‰¬¬×¬×¬¬7×.׆¬×¬¬¬‚i¬‚¬…׬¬¬¬‰¬¬×¬×¬¬7×.׆¬×¬¬¬‚h¬ „¬¬…׬¬¬¬‰¬¬×¬×¬¬7×.׆¬×¬¬¬‚g ¬ …׬¬¬¬¬†×¬×¬¬7×.׆¬×¬¬¬‚f ¬ˆ×¬¬¬¬¬ ¬¬†×¬×¬¬7×.׆¬×¬¬¬‚gV ‚¬¬V‡×¬¬¬¬ƒ¬ ¬¬†×¬×¬¬7×.׆¬×¬¬¬‚m‚VV-‡×¬¬¬¬ƒ¬ ¬¬†×¬×¬¬7×.׆¬×¬¬¬‚rƒVV.׬¬¬¬¬¬ ¬¬†×¬×¬¬7×.׆¬×¬¬¬‚$ˆ×¬¬¬¬¬¬¬¬†×¬×¬¬7×.׆¬×¬¬¬‚$…׬¬¬¬¬¬¬†×¬×¬¬7×.׆¬×¬¬¬‚$…׬¬¬¬‰¬¬¬¬¬†×¬×¬¬7×.׆¬×¬¬¬‚$…׬¬¬¬¬¬¬†×¬×¬¬7×.׆¬×¬¬¬‚$…׬¬¬‚¬‰¬¬¬¬¬†×¬×¬¬7×.׆¬×¬¬¬‚$…׬¬¬¬‰¬¬¬¬¬†×¬×¬¬7×.׆¬×¬¬¬‚$…׬¬¬¬‚¬„¬¬¬†×¬×¬¬7×.׆¬×¬¬¬‚$…׬¬¬ˆ¬¬¬¬ ¬†×¬×¬¬7×.׆¬×¬¬¬‚$…׬¬ ¬‚ ¬†×¬×¬¬7×.׆¬×¬¬¬‚$…׬¬¬†×¬×¬¬7×.׆¬×¬¬¬‚$ƒ×¬¬†×¬×¬¬7×.׆¬×¬¬¬‚$ƒ×¬¬…¬×¬¬7×.׆¬×¬¬¬‚$׬„׬¬7×.׆¬×¬¬¬‚$ƒ×¬¬…¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×…¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬‚¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬× ¬¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬× ¬¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬‚¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬ ¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬‚¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬‚$„׬¬×¬‡¬×¬¬7×.׆¬×¬¬¬&¬׆¬×¬¬7×.׆¬×¬¬¬'¬„׬¬7×.×…¬×¬¬a…¬×¬¬7×.ׄ¬×¬¬c„׬¬7×.ׂ¬×¬n¬‚׬w¬7×.ׂ¬×¬n¬‚׬w¬7×.ׂ¬×¬n¬‚׬w¬7×.ׂ¬×¬E¬E¬E¬‚׬w¬7×.ׂ¬×¬×‚ׂ׬ׂׂ׬ׂׂ׬‚׬w¬7×.ׂ¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬w¬7×.ׂ¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬w¬7×.ׂ¬×¬×¬ƒ×¬ƒ×¬‚¬×¬‚×× ¬ƒ×¬ƒ×¬‚¬×¬ ׬ƒ×¬ƒ×¬‚¬‚׬w¬7×.ׂ¬×¬×¬ƒ×¬ƒ×¬ ¬‚¬×¬ˆ¬×¬¬×׬ƒ× ¬ ׄ¬× ¬ l„¬¬¬×¬ ‚¬×¬ƒ× ¬¬ƒ×¬‚ ¬‚¬‚׬w¬7× × ׂ¬×¬×¬ ¬ƒ×¬ ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š×¬×¬¬×¬ƒ× ¬ …׬׬l×…l¬¬¬×¬ ׊׬׬¬×¬…##¬ƒ×¬‚ ¬‚¬‚׬w¬7× × ׂ¬×¬×¬ ׬ƒ×¬‚ ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š×¬×׬׬ƒ× ¬ƒ×¬׆׬׬ˆl×l†×l¬¬¬ƒ×¬¬ ˆ×׬¬×¬…##¬ƒ×¬‚¬l¬‚¬‚׬w¬7× × ׂ¬×¬×¬ ׬ƒ×¬ƒ× ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š¬××׬׬ƒ×¬ׇׂ¬×¬×¬‡l×…l¬¬¬…׬¬×¬‚׬†×¬¬× ¬‚ ¬ƒ×¬¬‚¬l¬‚¬‚׬w¬7× × ׂ¬×¬×¬ ׬ƒ×¬„#× ¬ƒ×¬ƒ ‚¬‚¬×¬…××׬ƒ×¬‚׬׆׬׬ˆl×l×l„¬¬¬„׬¬×‹××׬׬׬„#¬ƒ×¬…¬ ¬‚¬‚׬w¬7× ×ׂ¬×¬×¬ ׬ƒ×¬…×#× †¬¬×¬ ¬‚¬× ¬‚׬ƒ×¬ƒ×¬ׇׂ¬×¬×¬‡lׇl×l¬¬¬ƒ×¬¬ ˆ¬×׬׬„#¬ƒ×¬¬ƒll¬‚¬‚׬w¬7× ×ׂ¬×¬×¬ ׬ƒ×¬…#×#× …¬¬×¬ƒƒ¬‚¬× ¬¬ƒ×¬‚×׬×׬××׬׬‡lׂll¬‚¬…׬¬¬ ׊¬¬×¬×¬„#¬ƒ×¬„¬ll¬‚¬‚׬w¬7× ×׬ ׬ƒ×¬‹×#×#×#×#׬ƒ×¬ƒ¬ƒ¬‚¬× ¬ƒ×׬ƒ×¬ƒ×¬ׅ׬…¬¬×¬†l¬‚¬×¬ Š¬¬×¬×¬…##¬ƒ×¬¬‚ll¬‚¬‚׬w¬7××׬ ׬ƒ×¬‹#×#×#×#×#¬ƒ×¬ƒ¬ƒ¬‚¬× ¬×¬ƒ×¬‚×׬ƒ×¬ƒ×¬Ž¬‚¬×¬„¬×¬׊×׬¬×¬ˆ¬##¬ƒ×¬¬ƒll¬‚¬‚׬w¬7××ׂ¬×¬×¬ ׬ƒ×¬„×#׬ƒ×¬ƒ¬ƒ¬‚¬× ¬…××׬ƒ×¬‡×¬×׬ׂ¬ƒ×¬ƒƒ¬‚¬×¬‚׬¬ƒ×¬Š#¬##¬ƒ×¬Ž¬ll¬¬ll¬¬¬‚׬w¬7× ×ׂׂ¬×¬×¬×¬ƒ×¬¬…¬¬×¬ƒ¬ƒ¬‚¬×¬†¬×¬ƒ×¬…׬¬ƒ×¬„¬„¬‚¬×¬„¬×¬ׂ׬ƒ×¬Š#¬¬#¬ƒ×¬…¬¬ll¬l„¬¬¬‚׬w¬7× ××ׂ¬×¬×¬׃׬ƒ×¬‡¬¬×¬ƒ¬¬‚¬×¬†×¬¬×¬ƒ×¬‚׬ƒ× ¬ƒ×¬Ž##¬‚¬×¬‚ׄ¬¬×¬ƒ×¬ƒ##„##¬ƒ×¬¬ƒll¬l„¬¬¬‚׬w¬7× ×‚××ׂ¬×¬×¬ׂ¬ƒ× ¬¬ˆ¬¬¬×¬ƒ¬ƒ¬¬‚¬×¬†×¬¬×¬ƒ×¬ׂ ¬ƒ×¬‚##¬‚¬×¬‚¬ׂ׬ƒ×¬#‚¬ƒ×¬‚¬Œll¬¬ll¬¬¬‚׬w¬7× ×ׂ¬×¬×¬¬ƒ× ¬¬ƒ×¬¬‚¬×¬¬¬ƒ×¬ ¬ƒ×¬¬‚¬×¬ ¬ƒ×¬¬ƒ×¬¬l¬‚¬‚׬w¬7× ×ׂ¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬w¬7×.ׂ¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬w¬7×.ׂ¬×¬××׬××׬××׬‚׬w¬7×.ׂ¬×¬n¬‚׬w¬7×.ׂ¬×¬n¬‚׬w¬7×.ׂ¬×¬n¬‚׬w¬7×.ׄ¬×¬¬×××d׃¬¬7×.ׄ¬×¬¬dƒ¬¬7×.ׂ¬×¬¬¬h¬7×.ׂ¬×¬¬¬h¬7×ׂׂ¬×¬¬¬h¬7×ׂׂ¬×¬¬¬h¬7×ׂׂ¬×¬¬¬¬@¬¬ ¬¬¬2¬"¬ ¬t¬7×ׂׂ¬×¬b¬"¬k¬t¬7×ׂׂ¬× ¬¬…¬¬¬¬¬…¬¬¬¬¬ƒ¬¬¬¬¬¬…¬¬¬¬¬¬…¬¬¬ƒ¬¬¬ ¬¬‡¬¬¬¬¬ƒ¬¬¬‚¬¬¬‚¬¬„¬¬¬‚¬„¬¬¬‚¬¬ˆ¬¬¬¬¬¬ƒ¬¬¬¬„¬¬¬…¬¬¬¬ˆ¬¬¬¬¬¬¬„¬¬¬q¬7×ׂ ׬¬…¬¬¬ ¬¬¬…¬¬¬¬ƒ¬¬„¬¬¬¬¬„¬¬¬…¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬‰¬¬¬¬¬ ¬Š¬¬¬¬¬¬¬ƒ¬¬…¬¬¬†¬¬¬ ¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬¬ƒ¬¬„¬¬¬„¬¬¬¬…¬¬¬‰¬¬¬¬¬ ¬¬„¬¬¬…¬¬¬p¬7×ׂ ׬¬…¬¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬„¬¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬¬ƒ¬¬…¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬…¬¬¬ƒ¬¬¬¬„¬¬¬ƒ¬¬p¬7×ׂׂ¬× ¬¬„¬¬ ¬¬¬…¬¬¬ƒ¬¬‚¬ˆ¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬¬†¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬‡¬¬¬¬‚¬¬…¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬‚¬Š¬¬¬¬¬¬¬…¬¬¬ƒ¬¬¬¬ƒ¬¬„¬¬¬p¬7×ׂׂ¬× ¬‡¬¬¬¬¬ ¬¬¬…¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬¬¬…¬¬¬ƒ¬¬ˆ¬¬¬¬¬‡¬¬¬ ¬¬¬ˆ¬¬¬¬¬‰¬¬¬¬¬ ¬‡¬¬¬¬‹¬¬¬¬¬¬†¬¬¬ ¬¬ƒ¬¬¬¬¬¬¬¬¬¬ ¬¬†¬¬¬¬Š¬¬¬¬¬¬ƒ¬¬¬‘¬¬¬¬¬¬¬¬¬ ¬ƒ¬¬¬…¬¬¬p¬7×ׂׂ¬× ¬¬…¬¬¬¬¬…¬¬ ¬¬†¬¬¬¬‰¬¬¬¬¬¬ ¬¬…¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬¬‡¬¬¬¬ˆ¬¬¬¬¬‚¬‚¬Š¬¬¬¬¬¬¬‚¬¬ƒ¬¬¬¬¬¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬q¬7× ×ׂ¬× ¬¬¬ ¬¬¬¬¬ ¬ ¬¬ ¬¬¬‚¬‚'¬ ¬¬¬¬¬¬¬¬¬¬v¬7× ×ׂ¬× ¬¬¬ ¬¬ ¬¬¬¬¬ ¬¬ ¬¬¬¬'¬ ¬¬¬¬¬¬¬¬¬¬v¬7××ׂ¬× ¬„¬¬¬¬ƒ¬¬¬ƒ¬¬ ¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬v¬7×ׂׂ¬×¬¬¬h¬7×.ׂ¬×¬¬¬h¬7×.ׂ¬×¬¬¬h¬7×.ׂ¬×¬¬¬h¬7×.ׂ¬×¬¬¬h¬7×.ׄ¬×¬¬llldlƒ¬¬7×.ׄ¬×¬¬llldlƒ¬¬7×.ׄ¬×¬¬llll%l ‚ll…ll¬¬7×.ׄ¬×¬¬l‚# l‚××llllׂׄll׆ll¬¬7×.ׄ¬×¬¬l‡##l l‚××llll× ¬ƒ× ¬…ll× ¬‡ll¬¬7×.ׄ¬×¬¬l‚#„llׂll×lׂll×l×l×l„××ll׉ll××l××ll×ll××ll××l××ll××l‚××l×l×l׊ll××ll××ll×l‚××l„××ll×l†××ll××lׄll××lol׬¬…׬¬ ‡¬¬ll× ¬‡ll¬¬7×.ׄ¬×¬¬l…ll#llÇ××l××l××ll××l××ll××l××ll××l××ll××l××l××l××ll××ll××l××ll××l××ll××l××ll××l‚××l‚××l£××ll××ll××ll××l××ll××l××ll××l××ll××l‚××lœ××l××ll××ll××ll××ll××ll××l××lol׬¬†×¬¬¬ˆ¬¬ll׬‚¬‹¬¬ll¬¬7×.ׄ¬×¬¬lƒllƒll l”××ll××ll××l××ll××l××l‚××l£××ll××ll××ll××l××ll××l××ll××l××ll××l„××ll×l†××ll××l‚××l‰××ll××l××l×l…××l××l׃l××l‚××lol× ¬†×¬¬¬ˆ¬¬ll׬†¬¬¬‡ll¬¬7×.ׄ¬×¬¬lƒll l‚××lˆ××ll××ll׃l××lׄll××l‚××lוl××ll××l××ll××l××ll××l„××ll×l× l†××ll××l׈l××ll××lׂll×lƒ××l×l×l׃l××lol× ¬†×¬¬¬ˆ¬¬ll׬¬‡ll¬¬7×.ׄ¬×¬¬lƒl‚llŒ××l××l××ll××l™××l××ll××l××ll××l××l××l××l‘××l××ll××l××ll××l׃l××l‰××l××ll××l×lŽ××ll××l××ll××lׯl××l××ll××l××ll××ll××l××ll××l××l××l××l××ll××l××lol× ¬†×¬¬¬ˆ¬¬ll׬‚¬‡ll¬¬7×.ׄ¬×¬¬lƒll lׂll×l×l×l×lׂllׂllׂll×…l××llׂll×l‰××l××ll×× l‚××l×lׂll×l׎ll××ll××ll××ll׌ll××l××l××llׂll×lnl× ¬†×¬¬¬ˆ¬¬ll׬¬‡ll¬¬7×.ׄ¬×¬¬l†ll0l‚×× l‚××-l‚××"l†××ll××lll× ¬†×¬¬¬ˆ¬¬ll׬†¬¬¬‡ll¬¬7×.ׄ¬×¬¬l…lll.l‚×× l‚××-l†××ll××l‚××l‚××ll l× ¬…׬¬ ‡¬¬ll׬‚¬‹¬¬ll¬¬7×.ׄ¬×¬¬l‚l?l‚××l‚××l×l‚××l…××l××ll l× ¬…׬¬ ‡¬¬ll× ¬‡ll¬¬7×.ׄ¬×¬¬l„lllll!l× ¬ƒ× ¬…ll× ¬‡ll¬¬7×.ׄ¬×¬¬ l†lllll l×׃ll׆ll¬¬7×.ׄ¬×¬¬ l‚lllWlƒ¬¬7×.ׄ¬×¬¬llldlƒ¬¬7×.ׂ¬×¬¬¬h¬7×.ׂ¬×¬¬¬h¬7×.׬×××i×7×.׬¬¬k¬7×××××Q×××××Q×××××Q×××××Q×××××Q×××××Q×××××Q×××××Q×××××Q×QHlpH3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ××××××6×R×7×U×8×T×9×S×:×R×6××R×7×S××××××××××××××P,×ׂMׂ+×׃×L׃×*×ׄ××Kׄ××)×××J××(×××I××'×××H××&×××G××%××× ××6×× ×××××××6××ׄ××××× ×××6× ×ׄ××××× ×××6× ×ׄ××××× ×׃×׃×6× ×׆×××××× ×†××ׂ6× ×‰×××××××ׄ×××6×ׄ××××××>×××××"×××××× ××××××××××××××××××××××××××××××××××××××××6×××××5×××××P×××4×××××4×××××4×××××4×××××4×××××4×××××4×××××4×××××4×××××4×××××4××× ×ƒ×××4×××× ×׃××4××××׃××4×××× ×…×××4××××׃××4×…×××× ×׃××4×…×××× ×ƒ×××4×××××× ×4××××× ×4××××××4××××××4××××××4××××××4××××××4×××××4×××××4×××××4×××××4×××××4×××××4×××××4×××××4×××××4××× ×××4×××× ×××4××× ×××4×××× ×××4××× ×××4××× ×××4××× ×××4×××××4×××××4×××××4×××××4×××××4××××P××××× ××××××× ×××××××!×××××××"×××××××#×××××××$××××××&××××××6××××××××5×××××××××6×××××××5×××××××× ×5××× ××××ׂ ×5××ׂ ××× × ×6× × ××!× ×D× ××"××E×××#××F×××$××G×××%××H×××&××I×××'××J×××(ׄ××Kׄ×××)׃×L׃××*ׂMׂ×+×P×××××××××O×=×O×=×K×<×K××=×Lׄ××=×M׃×=×Nׂ=×××××××××××××××××××××›’lpbrÙø3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ×××4××××ׂ¬¬××××ׂ¬+ׂ+¬×Gׂ×VV××+׆+¬××V ×V ×Gׂ×Q׬|׆V×׬+×…+¬×V¬×Gׂ××+V×+„¬×¬+ׂ¬+V×+¬ ׉¬V++¬××+ׂV+‚V׈¬++V¬ׄ++ׂV¬ ׂV+ ×+¬ׂ¬+ ׃¬+¬ ׃+V ×…V++ׂVׂ+¬׬+ƒV¬×8ׂׂV׉VV×Vׂ×V…V××׃ ׊××VV×VŽVV×××VV××V>ׄ¬+¬×+‡×׬++¬‚+Vׇ++¬¬+׉¬V¬++¬ ׋¬+V¬+׬++¬׉V¬¬V+V×V¬ƒV+¬ׇ¬VV¬V×× ׃V+×…¬+¬+¬ׂV¬„V++¬ ׃+ ׬+‚V¬ׂVV¬‚V+×+ׂV׉¬++׬+¬×8ׂׂVןVV×V×V××××VV×V×××V ן××V××VV×××VV××VV×V?ׂVׄ+¬׃¬+׃+¬׃VVׂ¬¬׈VV××V ×V××VV¬×+¬××VVׄ¬V+¬ׄ¬VV×+׌VV××V+¬×Vׄ¬+¬×…++V‚V+ׂ¬+׃¬V+ ׃ ׄ++ׂ¬×׋+VV+¬׉V+××+¬×8ׂׂV׆VV×׉V××׈V×××VV ׊××××V×××VV××@×+¬ƒ+׃+¬׉VV×׬++¬ׂ¬+׃+׃V ב¬++¬×׬×׬×׊++××++¬׬׃V¬׆+××+ ׃+׃¬+¬ ׂ++׃V+׬„++¬׉V++¬¬+¬ׄVV++V‘+VV¬××VV¬×¬V×8ׂׂV×…VV×׈V×× × ך××××V××VV×××VV×VE׬+‚+׃V׉¬+×׬+¬ ׃¬+׃+¬׃¬+׃+V׃+×+†××V++¬ ׄ¬+¬׃V+ ׃V++׃¬+ ׃++V׆++×׬+„+׋¬V×V¬V+¬+ׂ¬+ׂ+¬׋V++V׬+¬+V×8ׂׂV×…VV×ׇV××׃V ׇ××׌VV×××VV×VFׇ+××V+׃V׉¬+×׬+¬ ׃+¬׃V׃¬+׃++׃V×…++×+¬×¬†×׬+¬׃+ ׄ¬+¬ׄ¬+¬׃++׃¬+¬ׄ¬ ׂ+V׌V¬+V××++×V׆+¬××׈¬+׬+V×8ׂׂV×…VV×׈VV××׈××V ׇ××׌V×××VV×Fׇ¬+××V+׃¬+¬‰V×׬+¬ ׃VV׃¬+ ׃+׃V+׃׉++׬++V׉¬V××VVׄ¬ ׃+׃V+ ׆¬V+׃¬+¬׃+V ׂV׎V¬¬¬××+׬+××V‚++VƒV×+„+V¬×8ׂׂמVV××××××××VV××VV×V ׋××××VבV×××VV××××B׆V×VVׂ++V׃+ ׃+׃+¬׃VVׄV¬ׄ¬V׆+¬××+¬׈V+׬+ׄ ׃V+ ׄ¬׆¬++ׇ+¬××+ ׃¬+ד+¬¬××+¬×+¬×¬V+ƒ+×…++V×8ׂדVVV×VVV××׎VV×××× ×—×V××VV×××VV×…VC×…+×VV׈V××V׃VV ׄ¬+¬׃V ׉+¬VV+Vׄ+V¬„V+V¬ׄ+¬ƒV+V׉VV¬VV+ ׃¬+ ׃++ ×…¬++¬ׇV׬¬ ׃+×+¬¬×׬×V¬×+ׂV׆¬+×8ׇׂ×××××ׂ×ׂ× ×ˆ×ׄ××××D×…VVV׃V׈×׬+׃+¬׃V ׈V+¬VׄV++V׃V+V‚¬׈V++¬¬+ ׆V×+ׂ¬V׃++¬ׂV׃¬V+׆VV×+V ׃V׌V×++׬V¬V׆V¬×׬V׬+…××+¬V×8ׇׂׂ×× ×‚Pׄ++׃¬+׃¬+׃+׃¬+¬׃VV׃V ׬ ׄ++׃+¬ ׆V++V׊¬++¬×׬¬ׂ++׃+×…++ ׄ++׉¬+׬+VVׂV×+ׇVV¬×Vƒ¬××4×VׂVV ׇׂ××V ׆××VVLׄ¬+׈++¬×׬+׃¬+׃¬׃¬+׃+×+׃VV ׄV+׃¬+׃VV׃++ׄ¬+¬×…¬++¬ ×…¬++׋+¬×׬¬×V¬ׂ¬+ׂV¬×+¬V׬+VV××5× × ×ׂ××M׃V׈+××+׃VVׄ+׉¬¬×+¬ׄV+׃+ ׄ¬+¬ׂ+ׄ¬+׃VV¬ׄV+¬ ׃+V ׊+++¬×׬+ׄVV׆+¬××V׬¬+׬+V¬×××Sׂ×++‚V¬׉++VV¬+Vׂ¬+ƒ++Vׂ¬++×…++¬ ׂ+×+‚V¬×+V ׂ++ ×…+V׆V++VV¬ ׆V×׬+ׄ¬+++V××Sׂ¬ׄ¬¬¬ ׬׬׆¬V¬×¬‚¬×…¬¬¬×׬ ׬׬ׂ¬¬ׂ¬¬ ׬ ׆¬VV¬V××××+×…¬+׬+××××,ׄ+×׬××××ׂ¬××××ׂ¬+ׂ+¬×OׂVV× ××#׆+¬×× ×V ×OׂVV×׬×.׆V×׬+×…+¬×V ×OׂVVx×+×+ƒ×׬+Vׂ¬+V×+ ׊¬V++×++¬ׂV+׃¬V+‚V¬׉++××V+V ׂ¬¬ ×+ׂ¬V+¬׃+¬ ׆¬V++ׂVׂ+¬׬+ƒV¬×0ׂVVV×VׂV׎V××××VVV׆××V„××׃V ׊V××VV‰××V××V6ׄ¬V¬ׄ¬¬++׃¬+¬‚V+׃+¬+׉¬¬V+¬×VV ׊¬×¬V¬+׆¬+׬¬VׂVV¬ƒ+¬׋¬V¬¬VV¬ ׂ++׋¬+¬++VV++¬׃¬V¬ƒ×V ׃+¬ ׃V ׇVV¬¬×+×+ׂV׈¬V+¬¬++×/ׂV××××××V×£V××××V××V×××××V××V××VV ןV××V×VV×××V×××V××7ׂV¬ׂV+׃¬׃¬ׂVVׂ+¬ׂV+ׂ+V ׂ+V׌++××+¬××V+¬׃+V׃¬+×Vׂ׆¬+¬×V ׃V+¬×…V++¬ׂ+ׂ¬׃+¬ ׂ+V ׬ ׂ¬׬׋+VV+¬׉V+¬×+¬×+×.׃׆×VV×…××V׊V××××VV׉×××VV׉××V ׊V××V××V×××V×××VׂV8×+¬‚V+ׂ+Vׇ+V×׬+Vׂ¬+׃¬¬ׂ++ ׃¬׊++¬×׬׬ׂ+ׂV+ ׃¬+V׆+¬××V ׃¬׃¬+¬׆¬××+Vׄ++×׬‚+¬׉V++¬¬+¬ׄVV++V‘+VV¬××+×V×V×V×.ׂVV×…V×V×…V×V׊V××××VV׉×××V ׃V ךV××V××VV×××V××=ׂV+V+ׂV+ׇ++×׬ׂV׃¬׃¬׃V׃+ׇ++¬×V+¬ ׃¬+V׃¬V ׂ++׃¬+ ׂ׆++×׬V…++VV׆¬V×VV¬V‚¬+ׂ¬+ׂ+¬׋V¬V׬+×V×.ׂV ׂV×…V×V׊V××××VVׇ××Vׂ ׆V××VׂŠ××V××?ׇ+¬×׬++׃+¬ׇV+×׬ׂ++ׂ+V׃¬׃¬V׃V+¬ׇ+×++¬ ׃¬++׃¬+ ׃V+¬׃V+׃¬++ׂ¬+׃¬+Vׂ¬¬׌V¬+××++×V׆+¬××V׈¬+××+¬V×-׃V ׂV׆×V׊V××××VV׉×××V׈××VV ׆V××V×××V×××V×:ׂ¬+ׂ++׃¬V¬ˆ+V×׬ׂV+ׂV+ ׂ++׃¬+׃¬+ׇ+׬+V×VׂV+׃++¬ ׃¬ׄ+¬ ׇ¬¬V++¬ׂ¬+ׂV+ׂ++דV¬¬¬××+׬+×׬VV++VƒV׃+¬+¬×.ׂV ׂדVV××××××××V׉VV×××׊VV××× ×ŠV××V×××’××V×××V××V:׆V××+Vׂ++V‚+ׂ++׃¬¬׃¬׃¬ׄ¬+¬׃+׈+××V+¬ׇVV׬ׄ¬+ ׂ++ ׃VV×…¬V+ׇ+¬×׬ ׃¬×™V¬¬××+¬×+¬×׬¬V+¬¬+¬×V+×.ׂV ×V†V××V‹V×VV××VVV•××××VVV×VV×× ×„V×××VVV××V××…VV<×…+׬+VׂV+׃¬+VׂV+ׂV׃¬ ׉+¬VV×+‡¬¬V+VׄV+¬V׉VV¬VV+V ׃V+¬ ׃¬ ׄ¬¬V׆+¬××+Vׂ+×+¬××׬×V¬×+ׂV׆¬++¬+×.ׂ׃Vׂ×…×ׂׄ×ׂׂׂׂ ׇV××VV××…V××ׂ=×…V¬+V׃+¬ׇV×׬ׂ++׃¬ ׈VV¬×+V׃++V‚¬¬׃V+V‚¬׈+VV¬×V+ ׆V׬ׂ¬׃¬+¬×׃V¬×…+×V+׃+¬׌V×++¬¬V¬V׆V×׬+׉¬+V+¬×+¬×/ׂ׃VV!ׂ׆V××V ×…V×Eׄ+V׃¬ׂ++ׂ++׃¬+¬ׂV+׃¬ׂ¬¬׃+׃¬ ׆V+V׃¬¬V׃+¬׃¬V׃V+¬×…V¬ ׃+׌¬+׬++VVVׂV×+׊+×V×VV¬×0ׄVV!ׂׂV×V ×…V×Eׄ¬+ׂ+VׂV+׃¬׃׃¬¬׃ׂ++׃¬V ׄV++ׂ¬+׃¬VׂV¬׃¬ׄVVV ׄ¬+¬ׂ+¬ׄV¬ׂ¬+ׂV¬׋VV×V׬+VV×2×#ׂׂ×…××F׃VׂV+׃++׃Vׄ+׈¬V׬++׃V+ׂ++ ׄ¬++¬׉+¬××׊+¬×׬V+¬ ׃++׃++ׂׄV¬׆+¬××V׋¬+¬¬+׬+V¬××Sׂ׃V++V×+„V¬+V׉¬+++¬×+‚+׬+¬ ׂ+V×+‚V×+‚V ׃+¬ ׄVV×V+‚V¬ ׆×׬+ׄ¬V++V××Sׂ¬¬ׂ¬¬ ׬׬׬׬׬׬׬ ׬ׂ¬¬׬ׂ¬¬׬×…VV¬V××××*×…¬+××+××××+ׂ+¬××××4×t×ׂ××7×r×V†××V××6×qׇ××VׂVK׬׬׬ ׬׬׬ׂ¬¬ ׬ ׬׬ ׬ ׂ¬¬ ׬׬.׬×r××ׂKׄ++V×+„¬×¬+Vׂ¬V+ׂ++ ׉¬V++×׬+ׇV++Vׂ¬V+‚V¬×…¬V++Vׂ+¬ ׂ+ ׂ¬V+ׇVV++V ׃+¬׬ ׂ¬V+ ׂ¬¬×@ׂV×…V‰××ׂV‰××V××VVׇVׂL׃+¬×++¬×׬++¬×¬+¬ׇV+V×׬+׈V×V+V ׋¬+×V׬VV׉V+¬××VV׉VV+¬×¬V׈¬VV¬××V ׃V+×…¬+¬V+¬׈¬××++ ׃+ ׂV¬׃¬ׂV+׈V×׬V׆¬¬V¬×@ׂ×…V×VV׉×V××V××V××V××VV××V×V׃VVLׂVׄ+¬׃¬+׃¬׃VV¬ׂ+¬׈VV×׬V ×V××VV¬×+¬××VVׄ¬V+¬ׄ¬+VV×V׌V××++×Vׄ¬¬×+‚V¬†+¬×׬+׃V+¬ ׃+ ׃VVׄ++ׂV+ׂV¬ׂ¬V׆¬V++V×A×׆×׉V×V××ׂV׉V×V××…V×V׈××VMׂ+¬ƒ+׃+¬׉V×׬+¬ׂ¬+׃¬+׃+ ב¬+¬×׬×׬×׊¬++××+¬ ׃+¬׆+V××V ׃+ׂ+¬ ׃¬+V×…V+×׬„++¬ ׇVV××V ׂV+ׂ¬VׂVׄ¬×AׂV׌VV×V××ׂVV׈V×V××…×VV׉××VV×VLׂ¬Vƒ++׃V׉¬+×׬+¬ ׃+¬׃+¬׃¬+׃+V׃+×+†¬×V++¬ ׄ¬+¬׃V+ ׃V++׃¬+V׬Vׇ++×׬V…+V ×…V++ ׂV+ׂ׆+¬××V+×Aׂ“VV××V××V××ׂVV׈V×V××…×V׉××V×MׇV××V+׃V׉¬+×׬+¬ ׃+¬׃+ׄ¬+¬׃++׃V׉++×V++¬ׂ¬׃+¬׃+ ׄ¬+¬׃+׃V׃¬+¬ׄ¬ׄ¬++ ׂV+×…V¬×׬׆V××ׂV×B׆V××׃V׆V××ׂ׈VV×V××…V×׆××N׆+××V+׬¬¬V×׬+¬ ׃VV׃¬+ ׃+׃V+׃׉++׬++V׈VV¬×VVׄ¬ ׃+ׄ+¬ ׇ¬¬V++ׂ+¬׃+V ׂ¬++ׂV+ׂ¬Vׂ¬×…¬+׬Vׂ+¬×B׆V××VV×±V××××V×××××××V××××V××××V×VVׂVM׆×VVׇ++VVV׃+ ׃¬+׃+¬׃+ׄV¬ׄ¬+׊+¬××V++¬׈VV+¬×¬+ׄ ׃V+ ׄ¬V׆¬V++¬ׇ+××+ ׂ¬V+‚+‚V¬ׂV+ׂ¬+׋+¬×׬+×VׂV×B׆×ׇVV׃×V‚××…××V×…VV×V†VׂN×…+¬VV׈V×׬+׃V+׃+¬׃V ׉+¬VV+V׋+++¬¬V+VׄV¬ƒ+VV׉VV¬V+V+ ׄ¬+¬ ׃V+ ׄ+ׇVV×׬ ׄ¬++V׬׊+¬×׬×׬+ׂV×…¬+×VׂV×C×V×ׂVׂׂׂV×ׂY×…¬VVV׃V׉V×׬+¬ ׃+׃V ׈++×+VׄV++V¬ׂ¬V‚¬׉VV¬¬+¬ ׆+¬+ׂ+׃V+¬ׂVׂVV׆+×+V ׄ¬+×ׇ¬¬××ׂ+¬×…V׬+ׂV×CׄV ׂVׂViׄ++׃¬+׃¬+׃+׃¬+¬׃VV׃Vׄ¬++V׃+¬ ׆+++ׄ¬++¬׃ׂ+V׃¬+×…¬++ ׇ¬¬V+׈+¬××V×…+¬×V׋V¬××V+VV+¬×Dׂ×VׂViׄ¬׈+¬×׬+׃¬+ׄ¬׃¬+׃+¬×+׃VV ׄ++׃¬+׃VV׃+ׄ¬+×…¬++¬׋¬V++V¬×+ׄ¬V+‰VV¬××+׃VV׬V+×Dׂ ×j׃V׉¬+××+׊+¬×¬V׈¬¬×+×…¬V+׃+ ׃+׉+V¬×¬+׆+¬×׬+¬ ׃+V׃¬VׂVׄV+…+V¬׉×׬VV¬ׇV×׬V××Sׂ+×++V׬+…V×VV׃++׬+×…++¬ ׂ++×V+‚V¬×+‚VV ׂ++׃¬¬ׂ×…V++VׇV+×׬V××Sׂ¬¬×¬ ׂ¬¬ ×…¬¬¬¬×¬×¬×¬ ׬׬)ׂ¬¬×××× ×‚V×××× ×‚V×××× ×‚V×N×××)ׂV%ׂV×Mׄ×sׄ¬¬¬,×…¬VV%ׂV ׂ¬×Oׂ×;ׂ¬ ׂV ×V ׂ¬V ׃¬VV+‚V¬'ׄVV¬׃¬V¬ׂV ׃¬V¬×G×ׂV× ×× ×„V+VV׃VV׊V¬+V+VV¬×†¬++V×…¬++¬#ׄVV¬ ׂVׂV ׂ×DׂVVׂׂׂ׆V××׈××VV××V× ×‚¬+V‚++V׃V+׎++V+++V+¬×¬Vƒ++V׃¬+!׃¬V¬"ׂV¬ׂV ׂ¬V×C׉V××V׃VׂׂןV××V××××××V××VV×××VY×Vƒ¬¬*ׂ+¬ׂV׃+×+V׬+¬¬×׬ׂׂ¬×V!ׂ¬ ׆¬VV¬ׂV ׂV×CׂVVׂ׈VVV××ׂ׆V×××…V×VV׈V×VV××ׂN׬¬×†VV++V'ׂ¬+ׂ׃¬¬ׂ¬׃+Vׄ¬¬+ ׂ¬+ׂVׂV ׈VV+++ׂVׂV×Cׂ×××××ׂ×…V×××…×V×…V×VV×…VVVKׄ¬V++ƒ+V¬ ׄV+ׂ¬ ׬ ׂV׃¬V¬׃¬¬×V+ŒV++V¬×׬+¬×Vׂ¬+׆¬++V׃¬V¬׊¬¬×¬+×׬+ׂV׃¬V¬×H×VV××V××××ׂ×…V×××…×V׌VV×VV×VVK׬Vˆ++VV ׬V×׬׬××ׂV ׂV ׂ¬+ׂ¬V׃¬¬׋¬+VV+VV¬׃VV¬ׂ+¬ׂV¬׈VV¬¬V+ׂV׬ „¬×׬ׂ+¬×+ׂVׂV ×EׂVV׎VV××V×××׆V××V×…VV×V׉V×VV×Oׄ+V+V+¬ ×”¬+׬V××VV¬×¬V¬××V ׂV ×+ׂV׆¬V¬+¬׬¬×¬VV×׬V×׬ ׂ+¬!׆××V¬ׂ¬+ׂ× VׂV׆V××VׂV ×D׆VV×±×××××V××VV××××××××V×VV×××VVK׃¬V+„+V¬׆¬VV¬ׂ++ V ׂV¬ׂV¬ׇ¬+V+¬ׇ+VV++VׂVׂV ×…¬+¬׆¬V××%ׂ¬+×…+¬×V׃¬V¬ ×C׃ׂVV×…V‚V…××V׉V××VV××V‚VN׬¬׬‡VV+VV¬× ‚¬ ׂV¬ׂV¬׈¬×׬++¬ׂVV+‚V¬ׂ¬V¬׃¬+׃¬VV×+&ׂ+V×…V×Vׂ ×CׂׂVV ׂ××…××ׂVVׂZ׬V¬+ׂV¬ׂV¬×++Vׄ¬+ׄV+×…+V¬ׄ¬V¬¬ׂ¬+&׉V+¬V×Vׂ¬V ×Dׂ׃VׂׂVV×ׂ+׃¬V¬׊V+V++ׄV+׈V¬×׬+¬׃¬׃V+¬%׈¬VV¬×VׂV¬ ×E×ׂׂVV×׬+‚¬¬×…¬VV+ ׄ+ׂ+׃V¬׆¬¬VV¬׃¬+V*ׂVׂV ×F×ׂ×××…¬V+׆VV¬×VV ׂ+V ׂV+V¬×V„+V¬׃+(ׇV×׬V¬ ××× ×„V+¬׬׬ × ×ƒ¬¬׃¬¬ׄ+V¬%׆V××V×××x׃+$×…V×V×××z׬$×…V׬¬×××× ×‚V×××× ×‚V×}׃V׃V××ׂ¬×|׌VV××××+×|ׂVׂVׂO׬ ׬׬׬ ׬ ׬ ×¬× ¬×¬-ׂ¬¬"×F× ×× × × ×‚VׂV@×V ׂ¬+Vƒ++×V‚+ׂ+Vƒ++×VŠ+V¬¬××V+V‚+V×V‚+×V‚++¬׃¬++V×Vƒ++ ׬×V‚+V ×6ׂ׊V××××V‰×××V…××VׂVׂV×…××V×V‚Vׂ@ׂ׆¬×¬+¬׃¬V¬ׄ¬V¬ׂVׂV׃¬VV ׄV¬׉++×+¬׃+×…¬VV¬׃¬VVׄ¬V¬ׄ¬+V+ ׆V××+ ׄ¬¬¬׃¬+ ׂ+¬׃¬V¬ׂV×6×®××V×××××V××V××××V××VV××××VלVV×××××××V××VV×V׃VA×+ׅ׬+ ׆V¬×׬׆¬××V× ×‚¬×…+×V×Vׂ¬׬ׂ¬ׂ+ ׂVׂVV ׂׂ¬¬ ׂ+¬ׄ¬×¬׬×6×××VVV××VV׉×V××VV×…×׆××Vׂ׉×××V×…VׂVVׄVVV@ׂV׆¬V¬×¬+ ׆¬+××V×…×VׂV ׂV×…¬+× ×…+××V ׂVׂ¬+ ׂVׂ+ׂ׃¬+¬ׄ+VV׉V¬V++¬+×6×××××Vˆ×V××V„׊×V××׈××VׄV׉V××@ׂ¬+†VV×׬+ ׆¬+××V¬ ׂVׂ¬+ׂ¬V ×…¬+× ×…V×V ׃¬V¬ׂ¬+ ׂV׃¬+¬ׄ¬+×+„++ ׉¬¬VV++V׋V¬+¬×V+V׆¬V׬V¬×6׎×××××VˆV×V××V„V××…×V×׉××VׄV׉V××V××Aׂ+¬†+¬×׬+׆¬V׬V ׂV ׂ+¬ׂ¬+ ×…¬+× ×…V×V¬ ׂ¬+ ׂ¬+ ׂV׃¬+¬×…¬+׬+¬ƒ+¬¬ ×V+“×׬V¬+¬××V×V¬×V+V× V‚¬×6××VV××V×V׊×V××V×…×V׆××VׂV׉×××V׆×׊VV××V××V@ׂVׂ¬Vׂ¬+‡VV¬×¬V ׂV ׂVׂ+¬×…+×V ×…V¬×V׆¬¬××V¬ׂ¬+ ׂV×V׆V×׬+ׂ+¬ ׄ+VV+†¬¬V×V+׊+V×V׬V+…¬××V++‚×6ט×××××VV××V׺V××VV×××VV××V×V××VV×××××VV××V××V×××A×+ׂVׂ¬+V‚+ׂ¬V ׂV ׂV׃+¬׆++×V+׬Vׂ׈¬V¬×׬¬׃V+ ׂV ׂV¬ ׬„V¬ׂVׂ+¬ ׃¬VŠ¬¬×¬+×V+×…++׬+׆V××V×…¬+++×6ׇׄ×ׄV×ׂV×Vׇ×VV×…×ׂV×Vƒ×VVׂV@ׇV×׬V¬ׂ¬+׆¬×׬V ׂV ׂV ׃¬+V‰++×V+VƒVV׃V+VƒVV¬׃¬++„V¬+ ׂV ׂ+¬×+‚Vׂׂ+¬׬+׬××V+×V׬ ×Vƒ++¬×6ׄVVׄV ׂV"ׂ ×L׆¬+××Vׂ¬+ ×…××+ ׂV ׂV¬ ׬VŠ¬××××V‚¬ׂ¬V¬׬V„¬×¬+ ׂV ×+׃¬V¬ ׆V××+¬׌+¬¬V¬V++×VׄVV¬×6ׄׄ ׂV"ׂ[×…+¬×V¬ׂ¬+ ׆¬+××V×…¬×Vׂ¬Vׂ$ׂ¬+׉¬××V׬¬ׂV ×+ ×…+¬×+¬׌V׬+V+¬V¬׃V¬×6׃׃ ×"ׂ[ׄ¬VVׂ¬+ ׆¬+×׬׆V×Vׄ¬V¬ׂ$ׂ¬+׊+×V××+¬ׂV ׂ¬+ ׄ+¬+¬ׂ¬+×V××O׃+Vׂ¬+¬„V׃+¬ƒVׂVV¬„VV¬ׂ$ׂ¬+ ׈+V×׬+¬V׬‚+ ׄ¬++¬׉¬¬¬VV¬××Oׂ+׬+ƒV¬ׇ¬VV++V¬×+ƒV¬ׂ¬%×V ׃¬Vׂ¬V+‚V×+‚V+ ׃¬+¬×…++V ×××K׬׬ ׂ¬¬A××××4××××4××××4××××4××××4××I׬׬׬ ׃¬¬×¬ׇ¬¬×׬¬×¬ ׬ ׂ¬¬ׂ¬ ׬׬׬ ×…¬¬¬ ׬3×\×× ׂVV׬V׊V++×׬V++V‚+ׇ¬++VV+¬׈V++V+V ׬V†×V+׬VƒV׬Vƒ++׬V†+׬+V+ ׎¬V++VV×׬¬×׬V+׃¬V+Vƒ++ ×+V ׃VV+2×M׎V××V×××בV××VV×××VVׂ¬+ׂV+׃¬׃+׃VV¬×+ׇ++×׬+ ×…V+×׬V‚×׃¬+׃V+ׂV׃¬V׋¬V×׬+V+׬¬ ׃¬ׇV++V‚+׃¬¬׃¬++ ׂV+ ׃¬+V2×M×V××V××××VV×–V××××××VV××VVׂVׂV+׃¬׃¬¬ׂ+VׂV¬׃+¬ׂ ׂ+V׋¬+××V××+V׃¬+V׃+¬×ׂ+Vׇ¬+¬× ׃¬×…¬+V¬׆V׬+¬ׂ++ ׂ++ ׂV+ƒV¬¬×M×V××××××V×…V××׉××××VWׂ+V‚++ׂ++ׇ+V×׬×V׃¬¬ׂV+ ׃¬׊+¬×׬×׈¬+××V+¬ ׃¬+V׆V×׬ ׃¬ׂ+¬׆¬+×+V¬ׄ¬+Vׄ+×+V…++V×M×V××VV×××VׂVV׌VV××\ׂ+V‚++ׂV+ׇV+×׬ׂ+V׃¬¬׃¬׃׃+ׇV+¬×V+¬ ׃¬+V׃¬V ׃¬׃+¬ ׂ¬×…¬×+V„+VV׬…×׬V¬ׂ¬Vׄ¬×M×V×VV××××VבVV×VV××××]ׂV¬ׂ++׃¬ׇV+×׬ׂ++ׂ++׃¬V׃¬V׃V+ׇ+×V+¬ ׂ++ׂ+ ׃¬×…++V¬׆V+××+ׂ++ ׎+××+׬+¬ׂVׂV+×M×V×××××VבVV×××××××VׂVXׂ¬+ׂ++׃¬+ˆV+×׬V׃+¬׃+¬ׂ++׃¬+׃¬ׇ+׬+×+׃V+¬׃+¬ ׃¬×…++ ׄ¬VVׂ¬+ׂ++ ×V+××V+¬×+V׃¬ׂV×MׄV׈V××V×–VV×××VV××××Y׆××+Vׂ++V‚+ׂ++׃¬¬׃¬¬׃¬ׄ+¬׃+V׉¬V+¬××+VׇV××Vׄ¬+ ׃¬ ×…¬V¬×+VׂVׂ++ ׄV+×׬ׄ¬VV×…++¬׃¬×M×V׈××V×…VV××…V××[×…+¬¬+VׂV+׈+¬××V+¬ׂ+V׃¬ ׉V+V׬+‡VV+V¬׊+VV+¬׉+V+++ ׃¬ ׃V+¬×…¬¬+׆V××++ ׃V+¬ ׂ+V׬+‚¬×M×׃w×…¬V¬V׃¬ׇ+V×׬׬ׂ++׃¬ ׈¬+V¬××+׈++¬VV¬׬V‚¬׈VV××V+¬ ׃¬׃¬V¬׆+××+׃+×…+¬×++ ׄ¬+¬ ׂׂ¬V¬×M×׃ׂVdׄV׃¬ׂV+ׂ+׃¬+¬׃+¬׃¬׃+V׃ ×…V׬×ׇ¬++×V¬׃¬++ׄ+¬++ ׄ¬+ ׂ+"×M׃V׃ׂe׃ׂ+VׂV+ׂV׃׃¬׃+¬ׂ++ ׂV ×…+¬×ׇ¬¬+V×+ׂ++׬+ ׄ¬++V ׂ¬+"××R׃׃¬V¬ƒV+V׃¬+¬„VV׈¬+¬V++×…¬¬V+ׄ¬¬++ ׃+׃+¬ŠV+V¬××+V¬„V++׃+ ׄ++V ׂVV"××Sׂ+׬+„V+V׈V+VV×VVׇV+V+V×V+×…¬V++¬ ׂ+׉¬V+VV++¬׬V‚¬ ׂ+ ׃VV¬ ׬#××T׬#ׂ¬¬ ׂ¬¬ ׬u××××4××××4××××4×.× V$×V××N×.× $× ×&×…¬×׬×#××Nׄ¬¬ ׬ ׬¬ ׬׆¬++;׬ ¬ׄ¬¬׬ ¬+××׃VVׂ×׃VV×׃VV׆VV××׃VV׃V ׂ××׆VV×××…V××׃VV××ׂ׆VV×ׄV×׃V׃VV×Vˆ+V×׬¬Vƒ++׬Vƒ++¬×V…+V׬ׂ¬V+…V++ ׂV¬ ׂ¬ ׃¬¬V׃¬++VׂV+Vƒ++V × ×¬ V+×׉V×VVׂVׂ׊VV××V ׂV×—VVV×VVV××VV ׂׂ×’V×VV×V׎××VV××VסV××××VVV××V×VV××V×V‚ ׄ¬VV¬׈+V¬¬¬ׄ¬V+¬ׄV¬׃¬+¬׃VV¬ׄ+V׌V¬¬+׬+¬V¬׃¬+V ׃¬+V׬V¬ ׆V××+ ׃¬V¬׃+¬ ׂ+¬ׂVׂ¬¬××׃ׇVV××VׇVV×׋××××V ׄV׆××V׆××…××VVׂ ׇ×××…V×VV׊V×××׎×××V××V׊V×××׎V××VV××VV×ׄ×VVׂVV ׂ¬×…¬V¬¬+ׂ¬¬ׂ¬׬×V ׂ+׬¬×׬+׬+××׃V++ ׃+ׄ¬V¬ׂVׂVV ׂ×+ ׂ+¬ׂV׬ +ׂ+ׂV×׃ׂV×V×V×VV××V×…×V ׃×…V××…××׆× ×××VVV××V×׊×××××…×V×…×V׊V××××V×V××V××VV××VׂVV ׂV ׄV¬¬+ ׆××V¬ ׂ¬V ׂV ׉¬+׬+×׬+×…¬+V+¬×…¬+V+¬ׂ¬ׂVׂ+ׂV׃¬+¬ׂV× ¬ׂVV׃¬V×׃ׂ×V×V××VV××V„×V ׂVV׊V××VV׈VV×V ל×××××V××VV×××××…×V„×VךV××××VVVV××V××VV×V׆VV ׂV¬ ׄV¬¬+ ׄ+×V ׂV ׂV ׉¬+׬+׬VV×…+¬V×…+VׂVׂV׃¬+¬׃+׬+„++ׂV׆+׬V׬ ×׃ׂV×V×VV×××××V…V×V ׂV ×××VV×ׂV ׌××××V׊×××××…×V…×V׆V×××V××V××VV××…VׂV¬ ׄV¬¬+ ×…¬+׬V ׂV ׂV ׉¬+׬+V¬¬׆¬+V׬+×…V+׬+׃¬V¬ׂVׂ+×…¬+××+¬+¬ ×V‚++Vƒ×׬ Vׄ¬+V¬׃V+ ×׃ׂVב×××V×׆×V ׂV ׂV׎××××××ׂV ××VV××V×V×V׊××××׆×V׆×V׊V××××V×V××V××VV××…V×VV×V ׂV×…¬+¬¬+ ׆V××+¬×…×׬+ ׂV ׇ++V¬ׇ+¬××+¬ׇ+××+¬ׂ¬+ׂVׂV¬׃¬V×+ׂ+¬ ׬‚VV¬× ¬ׄV+׃V ×׃× V×VV×V××V××××V×VV××VV ׂV ט×VV×××VV××V× ×…××™×V××V×V×××××V×´V×VV××V×VVV××V××V××V××VV×××VV××× ×‚+VׇV+¬¬׉VV¬××+¬׃¬VׂV+ׄ¬V+ ׇV+++ׂ+VׂVׇV+¬××Vׂ+¬ׂV ׂ ׬„V¬ׂ¬+ׂ+¬ׂVׇ¬V××V×׃×…V××VVׂV××V×…VV ׂ×VׂVׂV×…V ׇׄVV×ׄV׈×V×VׂV‚×׃V׃×VV׈VV××ׂ+V‡¬V¬¬+V+Vƒ+¬׃¬++Vׄ++Vƒ¬V׈¬V+׬+×…VV+ׂ¬+ׄVV+VׂVׂ+ׂV ׂV×…VV¬ׂVׂ+¬ׂV׬ V¬׃¬V׃¬+¬×׃1ׂ׃#ׄVVׄVV ׆××&ׂV$׬ׄ¬+×׬ ׬¬׬…¬××V׈¬×¬+׬+ׄ¬+ׂ+¬×¬ׂ¬+ׄV+¬ׂV ׂ+¬ׂ+¬ ׆V××+¬ׂV× …××V¬ׂ+¬×׃2׈VV××VV$ׄ׃V ׆××&׆V××V)ׂ¬+%ׂV׉¬V×׬+׬+ׂV ׂ+¬×…¬V++V+ ׉V¬××V׬ׂV ×+ ×…V¬×+¬ׂVׂ¬¬ ××׃3×%׃׃V ×…××'×…××VV)ׂ¬+%ׂV׌¬+×׬+׬+׬ ׂ¬+ ׂV ׬׊+V×V××+¬ׂ ×+ ׄ+¬+¬ׂ¬/××Wׂ¬+%ׂV׋+V+¬VV¬ ׂ+¬ ׂ¬+׉+V×׬¬V׬‚+ ׃++¬A××X×V&׬ ׉¬++V++¬ ׂV ׂ+¬ׂ+׬Vƒ+V¬×V+ ׂ¬+B××× ×…¬+׬+ׂ¬+ ׂV7׬L××× ×…¬+׬+ׂ+¬ ׂV×××× ×„×׬ׂ¬+××××.ׂ+¬××ׂVׂV× V$×V×HׂV××ׂVׂ× $× ×Hׂ¬+××ׂVׂ×>׬¬ ׬¬׬¬4×+׬ ¬׬¬× 0××V×…VV×…×VV׃VV××V׆VV××׃VVׄVV ׂ××׆VV××ׂV×׃VV××ׂ×Vƒ×ׄVV×׃VV×V×V ׂ¬+V‚+V×V‚+Vׂ+V‚+V×V ×V ׃¬V+ ×…¬××++V׬V‚+V ׂ¬¬ ׬V+V/×ׂV׊V××V‚V׊VV××V ׄVV×—VVV×VV××VV ׇׂׂV×Vˆ×V׎××VV××VקV××××VV××V×VV××VVV×V ׂV×…¬V׬+ׂ¬׃V¬ׂ¬VׂVׂ+׃¬+ ׃¬+×V¬ ׆V××+ ׃¬V¬ׂ+ ׂ¬+ׂVׂ¬¬××׃VׂVׂV׆V×V׎×××××V ׄV׆××V׆××…××VVׂ ׇ×××…V×VV׊V××××׎×V××××V׊V×××׎V××VV××VV×ׄ×VVׂVV ×+×…V׬+ ׆×׬׆¬V××Vׂ¬¬׃V++ ׃V++׃V¬ׂVׂVV ׂ¬׬ ׂ¬+ׂV× +ׂ+׃¬V×ׂV׆V×××…××…V×V×…××V ׃×…V××…××׆× ×××VVV××V×׊×××××…×V×…××V׊V××××V×V××V××VV×׉×××VV ׂV¬…V¬×¬+ ׆¬+××V×…¬¬×Vׂ×…¬++¬×…¬+V+¬ׂ¬¬ׂVׂ+׃V׬ƒ+¬¬ׂV× ¬ׂVV׃¬V×ׂV׆V×××…××…VV×V„×V ׂV׊××VV׈VV×V ××××××V××V‰×××××…×V„×VךV××××VVV××V××VV×V׆VV ׂ¬+†VV×׬+ ׆¬+××V¬ ׂV ×+×…V+×V×…V+¬VׂV¬ׂV׃¬+¬׃¬+×+ƒ++ׂV׆+×V¬ׂ¬¬×׃׆V×××…××…VV×V…×V ׂV ×××VV×ׂV ׌×××V×V׊×××××…×V…×V׆V×××V××V××VV××…Vׂ+ׇ¬V¬×׬+׆¬V׬V ׂV ׂV׆¬+׬+׆¬+V×Vׂ¬VׂVׂ+׆¬+׬V¬׃¬+¬ × +„×× +ׄ¬V¬׃V+×׃׆V××V׆VV××…V××†× ×‚V ׂV׎××××V××VׂVV ××VV××V×V×V׊××××׆×׆×׊V××××V×VV××V××VV××…V×VV×Vׂ¬Vׂ¬Vׂ¬Vˆ++V¬¬×¬V ׂV ׂV ×ׇV+¬××+¬׆+¬×¬+ׂ¬+ׂV×V׆V×׬+ׂ¬+ ׬‚+¬× ¬×…¬V+׃V¬×׃×¢V××V×V××V××V×VV××VV ׂV טV×VV×××VV××VV ×…××™×V××V×V××VV×´V×VV××VVVVV××VV×V××VV×××VV×××Vׂ+¬ׂVׂ¬+ƒV++ׂ¬V ׂV ׂV׈¬××V¬¬׃¬+VׂV׃¬+Vׂ+¬×+ׂV ׂV׬„VV¬ׂVׂ¬+ׂVׇ¬V××VV×׃דV××V×××VׄV×…V ׂ×VׂVׂV×…V ׄׄVVׄV׈×VׄV׋VV×V׃V׃×VV׌V××V׆V×׬Vׂ¬+׆¬V×׬V ׂV ׂV׆+++V×V‚+¬ׂ¬+ׄVV+ׂVׂVVׂV ׂ+¬׬V‚¬׆×׬+ׂV× V׃V¬ׂ+×׃ׂV*׃׃#ׄVVׄVV ׆××&ׂV$×…+××Vׂ¬+ ×…¬××+ ׂV׃¬V¬ ׄ+V×Vׂ+¬׃Vׂ¬+ׄV+¬ׂV ×+ ×V ×…V׬+ׂV׬ †¬×׬׃¬+¬×׃ׂV+׈VVVV$ׄ׃V ׆××&׆V××V ×…V¬V¬ׂ¬+ ׆¬+××V×…×VׂVׄ¬VV+ ׂV ×+ׂ¬V+ ׉V¬××V׬ׂV ×+ ׄ+¬¬+ׂV׬ ××׃ׂV,×%׃׃V ×…××'×…××VV ׄ¬+Vׂ¬+׃¬Vׂ¬ׇ¬V¬×Vׄ¬VV¬×…¬¬×V¬ ׂ¬+ ׂV ׬ ׉+V×V××׃¬V¬ ׂ¬+ ׃+¬+ׂ¬3××O׃+V¬׃¬+¬…VV¬׃¬+V¬ƒVׂVV¬„VV¬ׂV¬ׂ+¬ ׂV׉VV×׬¬„V׬‚+ ׃¬++F××OׂVׂ¬+V‚¬¬×V¬×V‚¬¬ׂV¬ׂV ׂ¬+׃¬V׬V¬׬ V+ ׂ¬+F×××ׂ¬+ ׂ+¬ׂ¬¬k×××ׂ+¬ ׂV× ×××)ׂ¬+× ××s× ×*×+g×V׬×HׂV× V ׂVVwׂVV ׂ+V)ׂV¬ׂ¬ ׂ¬T׆V×׬+×HׂVV× ×ƒVvׂV+ ׂ+)ׂV׃¬¬ׂ¬+TׂV×+×HׂVV1ׂL׬×׬¬׬¬ׂV ‚ ׬¬××…¬V׬+׃¬V‚V+׬׬¬׬¬ ׬¬ ×ׄ¬¬ׂ¬+ׂV¬׬†×׬¬ ×*×V×VׂVׂV׈V××VVVV×V׃VVׂVVׂV ×VׂV×V׌V×V××V×V×V0ׄV+Vׄ¬V+V׃V+V‚+ׂ¬+Vƒ+¬ׂV+V„++Vׂ+V†+V×V¬׈V++VVVׂ+V„++¬× Vƒ+V+×Vƒ+V׃V++ׂ¬+Vƒ×V ׃VV׬V‚+V׆+¬××Vׂ+V†××V+ ×(ׄVŽ××VV××VׂVן×VV××××V××V×× ×„VVׂׂ×”VV×××V×××VV0ׂ¬+׃¬+V׃¬+Vׂ+Vׂ¬׃V¬ׂVׂV+ ׂ++ׄV+VׄV+¬׃+Vׂ¬Vׄ¬VׂV׃¬ ׃¬ׇV++V¬‡V¬×׬¬ׂVV ׂ++ ׃¬+ׂׂV׆VV×׬+׊+V××+××VV ×'׃V×××VV××××VׂVמ×V××V××××××××V ׃ׂׄVׂ×VV×××V×××VVׂV0ׂ+¬׃׃¬+V׆×+¬ׂVׂ+¬ׂV+ ׃+V׃+VׂVVׇ¬V××+VׂVׂV׃¬ ׃¬×…¬+¬׆V×+¬׃V+¬ׂ++׉¬V¬¬×¬¬×++„++¬ׂ+V×…+V×VV ×'ׂVV×…V×V×…V×VׂV×…×VV׉×××VV×ׄVVV ׂVׂׄVVׂ×VV×××V××××0ׂV+V‚+¬׃¬+V׆V+׬ׂ++ׂV¬ׂV+ ׃¬V׃¬V׃¬+V׉V+¬×¬×׬‚++ׂ¬+׃¬ ׃¬ׂ+¬ ×…×V¬ׄ¬×V„+VV׊VVV+¬VV¬×¬+¬ƒVV¬ׂ+V×…V+×VV ×'ׂV×…×V×…V×VׂV×…×VV׈××V׃ ׃׈××ׂ×VV×××V××6ׂ¬+‚+V׃¬+V×…V+××V׃¬ׂVׂV+ ׊++¬¬×¬V׃V+¬׃¬×+ƒV+¬ׂ+¬׃¬ ׃¬׃¬¬ ׬×…¬×V„++ ׬׌¬V¬+¬×VV׆V×׬+ׂ+V×…V+×VV ×'ׂV ׂV×…V×V׊V×××VV׉××VˆV×× ×‚ ׊××V××V×VV×××V××7ׇ+¬×׬׃¬+Vׄ¬V+V ׃¬VׂVׂV+ ׃¬VV+ƒVV׃V+¬׃ ׃V+¬ׂV¬׃¬ ׃¬׬+׈¬V+¬××+¬ׂ++ ×’+×׬V¬+V×׬×+¬×¬‚+¬‚+׊+V×׬+V×VV ×'ׂV ׂ׆×׊V×××V׉×××׉××VV ׂ ׊VV××××V×VV×××V×××VׂV1ׇV××V+¬׃¬V„+V¬¬×Vƒ+Vׂ¬+ׂV+ ׂ¬ׄ¬VV׃V+׆V+¬×V׃¬+VׂV׃¬ ׃¬×…VV¬ ×…¬V+×+ׂ++ ×V+×××++×׬×V׬VV++VV+׃+V+„×VV ×'ׂV ׃V‚××¥VVVVV××V×V××××VV××V× ×‚ ׃×V×VV×VV×××V×××VV1׆¬V××+V׃¬V¬×‚+Vׂ¬+ׂV+ ׂ++ׄ¬V+¬ׄ¬V׊¬V+¬××V¬×…V+VׂV׃¬ ׃¬ ׄ¬+V×…V++Vׂ¬+ׂ++ ׉V+¬××++×…+V×׆+¬××V×…++¬ׂVV ×'ׂ×VׄVVדVVV×V××VVׂׄVׂVׂVV ׂV×…V××VדV×V×VV×××V××V×…V3×…+׬׃¬+V׃¬+Vׂ¬+ׂV+ ׃¬++V×+†+V++×+†VV++V¬ׄ¬V++Vƒ++ ׃¬׬׃¬V¬×…¬¬VV¬׆V××++ בV+¬×V×V+×׬+V×VׂV×+ׂ+VׂVV ×'׃׃ ׂׂVׂVV׆××V>×…VV+¬׃¬+Vׄ¬¬×¬ ׃ׂ+¬ׂV+ ׬¬׃¬+¬ׄ¬×¬¬׃V‚V ׃¬ׂV¬׆¬+V׬+׃¬+×…V×++ ×’¬+××+׬VV+¬V¬ׂ¬+ׂ+¬ׂ+VׂVV ×(׈VVVVV!ׂ׈VV׌V×××V×V;ׄ¬++V׃¬+V×…+×ׂV+ׂ+¬ׂV+ׇ¬++V¬'×…+¬¬׃¬+ׇ¬++×V¬׃¬++ׄ+¬++ ב¬++××V¬×¬VV¬VV׆+¬××Vׂ+VׂVV ×*ׂV"ׂׂV׌VV×××V×<׃+׃¬+Vׇ¬×¬Vׄ++ׂ+¬ׂV+׆+++&×…¬+ׂ¬ׇ¬+V׬+׃¬++×+ ׉¬++V×׬+¬ׄ¬V¬׆V×׬+ׂ+VׂVV ××O׃V+¬×…¬+„×+‡V++¬׃+‚+×…¬V++'׃+׃¬+V„++V׃V+VV+׃¬++ ׄV+V׈¬VVV ׂ¬+ׇ+¬×¬+Vׄ¬++ ××Oׂ+×…¬V++V‹¬×¬V׬V+¬׃¬VVƒ++ ׂVV'ׂ+׬Vƒ+V¬ׂ¬V„+¬¬ ׂ+ ׂV×…VV¬ ×+ׇ¬×¬V++ׄ¬V++ ××××4××××4××××4×××× ×¬ׂ¬!×Y× V×V××ׂVׂ+¬ ×Y× ׆VV×××+ׂV ×…××V×u׃VׂVL׬ ׬ׂ¬׬ ׄ¬VVׂ¬׬×׬ׂ¬ ׂ¬¬ ×׬׃¬׃¬ׂ¬׃¬¬ׄ¬V¬׆+¬××Vׇ¬+VV+×0×V×V׆VV×V×…V×V×V ×V„×VׂV×V×VV×V××V××V…××V×V5×+‚V¬ׂׂ++V׃¬V+‚+׃+V ׉¬++¬×¬+¬×¬+ƒV¬ׇ¬¬V++¬׈¬¬V++V¬ ׋¬¬++××+V×׬¬V++V¬¬׆¬V+ ×…+¬׬V„V+׆×׬+×+…V++×.×…VV׆V׆VV×V×VV×××VVV ׄV×VV×××VVV×××VV×V×ׂ4׬ˆ+×׬++×Vƒ++׬+ƒ+ׂ¬+ƒ+V ×V+ŒV++׬++++V‡×׬V+׊¬++++V¬׌¬++V++×׬+¬+Œ++××+V¬V‚+¬׆¬VV++ ×…¬++V¬׃¬¬×V׃¬¬+¬ƒ+¬׌¬++¬V¬×V¬¬×-׃V׆×׊V××××V׉VV×××VVׂVV ׂVׂVV׆××VV׌V×××VV×VV×…×ׂ6׃+¬×’V¬×׬×׬+++ׄ+VV¬׃VV¬׊¬V¬×¬+V׉¬+××+¬ׄ+V׃++V×…¬V+¬׈V+××+ ×Vׂ¬+׆¬¬¬¬ׄ¬¬¬ׄ¬+׃V+V׬׈¬×¬¬ׄ+++׌++V×V¬×V×+×-ׂVV×…×׊××××V׉VV×××V× ×‚VׂVV×…×׉V×××VV׆VV×ׂ7ׂ+¬׃V×™¬¬¬××V+V+××V+V¬V¬××V+׊V××V¬××+׉¬¬×¬+¬ׄ¬+׃+Vׄ+¬׈VV××+ ׃+ׂ¬+×…¬+×+†V+VV׃V×V…V+¬׆V××+׌+×V¬×V×V+¬ ×,׃×…×׊××××V׉VV×××ׂVׂVV×…××”V×××VV××VV×ׂ7ׂV+Vƒ+¬׆¬VV×V+׬+×V××V×׊++×+×+׈+V׬+¬ׄ¬+׃+Vׄ+¬׈VV××+ ׃+ׂ+¬×…¬+×V¬‡V++¬V¬ ׂ¬׋V¬+×+V×+ׂ¬Vׂ+¬׉V¬×V×+ ×,ׂ׃×׊××××V׉VV×××VׂׂVV×…××VV×××VV×Vׂׂ7ׇ¬+++×™¬¬++VV++×+¬×V×V×…V¬++„V+׈¬×¬+¬ׄ¬+׃+Vׄ+¬׈VV××+ ׃+׃+¬׌¬¬V+×VV׃V++ׂ+ך¬V¬V+¬××+V×V×׬¬+¬¬VV¬¬ׄVV+V×,ׂׄ××׊VV××××׉VV×××ׂV ×…V××V׆××׌V×××VV×V×…V×׃8׆+¬×V׬•+++VV×+××VV×V×+ˆV¬¬+׈V+V¬׊¬+V¬¬++׈+¬¬++׈VV××V+ ׃+׃++V ׌V++¬××+V׃V++ ׃¬V×…¬+×V+×’++׬V×׬VV+VV++VVׂ¬Vƒ+V×,ׂ ×VVV×VׇVV×׆VV ׂV×£VVVVV××VVVV×××VV××VV×V9׆¬+¬ט++V+++V+V××+××VV×V׌V+VVV¬+׉¬+++¬ׂ¬+¬׃+ƒ+׈V+×++V ׃+׬„VV+׋¬V++¬¬×VV׃V++ ׃¬V׬+×V+¬××V+׬+׆V×׬+׉¬V++V+×-ׂVׂV×VŽ××VVV×VV×VׄV ׂV׆V×VV×V×V×××V×V×××V7ׇ¬×¬+V×—V++×+¬×׬+××VV×Vׄ¬+V„++׈++¬×++׊¬+×+V¬ׇ¬++V¬×+ ׃+ ׄ¬+ ׈¬V××+׃V++ ׃¬+׌+׬¬××++×Vׂ¬+ׂ+¬׉¬++V+×V×-ׂ׃V ׆××VׂVׂ ׂ<ׇ¬++׉++××V+׊+¬×VV×V׊VV¬×¬+ׄ¬+׬ ׬ׄ++ ׃+ ׄ¬+ ׄ¬+ׇ+××V++ ׃¬+׌+¬×++VV++¬V׆+¬××V׋V×V¬×V¬¬×.׈VVVVV ׆××VׂVׂV׆××V ׂ>×…VV+¬×–¬V¬+×׬+×××VV׉×V¬××+ׄ¬+×…¬++ ׃V+׬ׄ¬+׬ׄ¬+׆¬+×V++ ×…¬V+¬׋V××V¬¬VV׆V×׬+׋++¬×V¬×V¬+×/ׂV×…××VV×V×V×…V××V ×V<׆¬¬VV׌++×V++׉++׬++V×+„V++ׄVׄVVV ×+ׂV+†¬V×+‡¬V×…¬+V ׃++ׂ+׬ׂ¬+ב+¬××V+¬×V¬×V+¬ ××M×…V++×+ˆ¬¬+V+׈VV××+++ׂ+ƒ+¬ׄVׄ+V ׄ+V׊¬¬++V¬×…¬+VVƒ¬ׄ¬+ ׇ¬V+V¬׈++VV¬ ×+×V×׬+V+V++××NׄVV¬׉VV¬¬+×׬ ׈¬××+¬×¬V‚¬׃¬¬ׂ¬ ׂ¬ ׂV¬ ׂׂ¬V××…¬V¬ ׂ׬׈¬+VV¬×××××…V¬×V×××××…V¬×V××××ׂ¬¬××××ׂ¬ׂ+¬(×]×V××׆+¬××V ׬×^× ××׆V×׬+ ׅ׬+××JׂV¬׬ׂ¬V¬ ׄ¬VV¬ׂ¬V¬ׂ¬ׂ¬ׂ¬ ׂ¬ׂ¬׃V¬ׂ¬׃¬¬ׂ¬ ׃¬¬×…¬VV¬ׂVׂ+¬׈¬VVV+¬×4×V×V×…V×V×…V×V×V ׉V××VV××V×V××V×V××V†×V×VׂV9×…V++V¬V׃V+‚++׊¬VV++×׬ׇVV+V ׇV++׬+‚V¬ׄ++ׂ¬V+‚¬ ׋¬V++¬××++ˆ+¬×¬V+…V¬¬׆¬V+¬ ×…¬+ׇVV+V×+ׂV×+…V++V×3×…VVV×V××VV××V×××V ׌V×××VV“××V××VVV×ׂV:׃VVƒ+VV׃++ׂ+׃¬+¬׋¬V¬××++¬ׂV+ ט¬+VV++V××++V×+¬×¬+VVׇV+V¬V ׌VV+V××V¬+…++׬„+¬V¬׆VV+V ׄV¬׃¬V¬ׂV׉¬¬+¬¬+¬׋+V׬+×+×2׃V׆V××…V×ׂ׉V×××VVׂV ׊V××VV××V׌V××V×××…V×ׂV:ׂ¬+׋¬++¬×׬+¬ׂV+׃¬VV׊++¬×¬++¬ׂ+V ׈¬+×׬+×++¬××V+¬×VV+¬׈V+×׬V ׄ¬+ׂV¬×¬×¬׃V++ׄV+׈¬×¬×׬+ƒ+׬+V׬+׬×1׃V×…VV×V×…V×ׂ׉V××× ×ŠV××VV×××××V××××…VV×ׂV9׃¬V+׃++¬ׄ++¬׈V××+ׂ++ׄ+¬׃¬Vט¬+×׬+¬××+¬××VV×V++¬׉V++×׬¬ ׃+ׂ+¬×…V++×+ƒV+׋¬V¬V+V++Vׂ¬+ׂ+¬׌¬¬V׬+׬+V×1׃×…VV×VV×…×ׂ׈V××׆V××VV׊VV××V××Vƒ×ׂV9׃VV׃++¬ׄ+V¬׈¬+××++¬ׂ+V׃+¬ׂ+ט¬+׬+¬××+××VV×V++¬׉V++×׬¬ ׃+ׂVVבV++×VV+¬¬¬¬ ׂ¬׌V×VV××+¬V׆+¬××V׉V׬++V×1ׂׄV×V×…VV×ׂ׈V××׆V××VV׊V××V×׈V×ׂV9׃+ׄ¬++¬׃+Vׇ¬+׬+ׂV׃+¬׃V¬×—VV׬+¬××+××VV×V++¬׉V++×׬¬ ׃+ׂ+¬×¬V+V×+¬×׬+¬ ׂ׌V¬××V+¬¬+ׄVVƒ׉+++V×1ׂ׃×׆V×ׂV׉V×××VׂVV ׊V××VV××VV×××V×××VV׋VV×V××V9ׂ+ +¬׃+ׇ¬+×+ׂV׃+¬׃Vד+V×+¬××+×VV×+¬×VV¬××V+×׬¬ ׃+×V+ד¬+V¬¬×+¬×׬+¬ ׂVדV¬¬×׬×+¬××VV++VƒVV׃¬V+ƒV¬×1ׂ ׂVV‰×VV×V‰×××V ׊V×VVV××VV××V×××VV†V×V‚9׃+¬„++¬׃+׈¬V×+ׂV׃+¬׃Vׄ¬+VV +¬××++V+×+++++××××++¬ ׃+׬ƒ+V ב¬++V¬××+¬×׬+¬ ׃V¬×V¬¬×׬¬×V¬×+ׂVׂ+ƒV++×2ׂVׂVׄVV׋V×VV×ׄV ׇV××VׄVV×…V×××V׆×VV:׃׃++¬׎+¬+VV¬×¬+ׂVV׃+¬׃V׃¬VV‡¬××+V+׆¬+V¬׆+++¬ ׃+ ×+ ׃VV+׈+¬×׬+¬ ׃+¬×V×++×׬V¬׆V¬×׬VׂVƒ×¬+×2ׂV׃ ׂׂ׆V××VV ׂVN׃¬+׃++¬׉+VV+V+׃+¬ׂVV׃+¬׃¬++ ׂ¬׬׆+××ׄ+¬ ׃+ ×+ ׃V++ׇ+¬×¬+¬ ׃+×…¬V×V„¬VׂV×+׋¬++¬V׬+××3ׂV‚V ×ׂׂ׆V××VV ×…V×L׃V¬׋¬++¬×¬××+¬׃¬++׃׊¬++××V+¬׃¬V׃+׆VV++ ׄ¬+ׄ¬¬×+׃¬׃V++׆+¬+¬ ׄ+V׋+¬×¬+×VVׂ¬+בV¬×׬×V׬+×++¬×4׆VVׂV×VׂVV× ×…VV××VLׄ¬+V+Š+¬××V++¬׃¬+ׂ++ׄ+ׄ+¬ׄVV¬׃+V×…V+ ×…++׊+++VV++×…++„V+V×…VVV ׂ++׃¬+¬׃VVו+¬××V×׬V×V׬+¬+V××J×V¬„V¬׆V+V+¬×–+VV+×+××VV++¬׬+ׂV+ ׬+¬ׂ¬¬+…V¬¬ׂ¬V+ƒVV¬ׄVV¬ ×+‚V¬׈¬+VVV¬ ׆V×׬+׊¬++V+V+V××Jׂ¬׬ׇ¬VV¬ ׃¬ׂVׇ¬V+¬¬×…¬V¬+¬ׂ¬Vׂ¬ׂ¬¬ ׂ¬׬ׂ¬ׄ¬¬ ׂ¬+ ׈¬V+++¬¬×××××…V׬+×××××…V××V××××4××××׬ׂ¬V'×V× V××&ׂ¬+ׂ+¬ ׂ¬¬×W× ××'×+ׂV ×…¬×V××M×VׄVV×V¬ ×V¬ ׂ¬׬ׂ¬ׂ׬ׂ¬ׄ¬V¬׃¬Vׂׄ¬V¬ׄ¬VV׆V×׬+׈¬V++V+V¬×-×V×V׆VV×׆V××V×V×V×VׂVׂׂVׄV××V†×V×VׂV5ׂ+ׂV+׊¬++V׃++ƒ+¬׉¬V++ ׈¬+׬ׇ¬++VV¬×…VV++ׇ¬+++¬ ׉¬V+V¬×¬+…+V×׈++++Vׇ¬V+V¬ ׬׃¬VV‚+VׂV×+׬+‚+×+ךVVV××VV×××V׎××V××VVV ׆VV××VV××VׂVׂVV׎V×VVV×VVׂ4׉+V+¬++׋VV++V××Vט+V¬×׬V××VV+++¬×¬+¬ ׈VV¬VV+VVׇ++V׬׬V‚׬׬+„¬+¬׬+VV+V¬×¬+¬V+‘+V×׬++V¬¬VV+¬ׇ¬+V++V¬ ׄ¬V+ׂ¬×׬+¬ƒ+¬׌¬+VV¬×V××*ׄV׆V×VV׊××V××V׎××V××× ×ƒVV׆V×VV×…×VׂVׂVV×…V×V׆V××VVׂ3דV++×+VVV××V++¬׈V×׬++¬׊¬+××V+¬×+ ׇ++×׬+ׂ++׈+××++׈V+V×׬+¬ ׈++¬×׬+׬׬ׄ¬+V׃++׬׈V¬×¬׋V++VV++V×+Š×V¬×V׬×*׃×…V×V׉V×V××V׉××V×Vׂ ׃×…V×VׂVׂVׂVV×…V×׆××VVׂ2ׄ¬+V׃V×…V×VV׋¬+××V+V¬V+ׄVV+¬ׂ+¬׉¬V×׬+¬×+×׬×++V¬׃+ׂ+V ׃+ׂ¬+×…¬+V×+…+VV¬ׇV×V¬V¬׆VV×׬+׌×V¬×V×+×*ׂV×…V×׉V×V××V׉××V×VVׂVV׃VׄV×VׂVׂVV×…V××V†V××VVׂ4ׂ׃VׇVV×׬׌¬+××+¬¬VׄV¬ׂV׉¬×׬+¬׌+×׬V×V++׃+ׂV+ ׃+ׂ+¬׈¬+V×VV+¬‡V++¬V¬ ׂ¬׌V¬+׬V×+¬ׂ¬+ׂ+¬׉V¬×VV¬V+×*ׂVׄV×V׉×V××׉××V×VׂVׄV×V…×VׂׂVVׂVׇV××VVׂV5ׇ¬×VׇV×V׬+׬+¬V××+׃¬ׂV׈¬×׬V׌+×׬V×V++׃+ׂV+ ׃+׃¬+¬×‰V+V×V+׃V++ׂ+Vד¬V¬V+¬××++×V×׬+„VV×V+V×*ׂV ׂ׊×V××׉××V×ׂ ׂV ׂ׆×ׂׂV×…V×׆××VׂVV5ׇ¬+×V׈¬+¬+V+×V+׬+׬¬V׃V¬ׂ+ׇ++׬VV×›+V׬+×+׬+¬××V+׬+V ׃+׬+ ׆+׃++׃V++ׂ+Vך¬+×V+¬××V+׬+×׬VV++VV++VVׂ+ƒ+¬×*ׂV ןVV×VVV×VVVV××V××VVV ׂ ׈VVV×ןVVVVVV××VVV××VVVVV6׆+¬V×–¬+V++VVV׬+××++׃¬+׃¬+ׂ+Vׂ++ˆV+¬××++ׇ+V++ ׃+׬„++׃¬¬V…¬×+׃V++ ׃¬+׬+׬××V+׬+ׂVׂ+¬×V„+V+×*ׂׂVׄV׊VV×V×VׂׄV ׂׂV×׊V××V×××…VV×…×V7׆+¬V×–VV¬++V¬×¬+××+V¬¬׃׃V+¬ ׄ++V¬ׇ+¬+VVׄV++ׇ¬V+V¬¬ ׃+ ׄ¬ ׈¬+V×׬+׃V++ ׃¬+׌+¬¬×¬V+×V×+ׂV׉¬V+V+×V×+ׂׂVV ׆V××VׂׂVVc׆+¬V׋¬+×V××ׇ+׬++¬×…¬¬¬׃¬V ׬ׇ+×׬¬׬ׄ¬++V ׃+ ׄ¬ ׄ¬+Vׇ¬+××V++ ׃¬+×…V×VV„¬V׆+¬××V׋VV×V¬×V¬×,ׂV ׆V××VׂVׂV‚_׊¬¬××++¬VטV+׬V××+V××+¬×+V׬׈V+¬+׬+¬ׄ¬+ׄVV¬ ׃V+×ׄ¬׃¬ׄ¬+V×…+×V++ ×…¬V+¬׋¬+×׬¬×V+ׂV×+×V+¬×V¬×V¬+¬¬×-׆VV×ׂ׆VV`ק+V¬¬+×V¬¬××+¬×V××++¬×׬V×V+V¬׊++++V×…¬++ׂ+×+ׂ+†V+ׂ+‡¬V+V×…+V¬ ׇV+++¬ׂVVׄ¬Vׂ¬+ב+¬××V¬×V¬×V+¬××J׌+V++××+¬+׃+V+„V+V׊VV¬+V¬¬ׂ¬+ƒV¬¬׃¬ׂV ׄ¬++V׬„++VV¬׈¬¬V+VV¬׃++ ׆++V¬ׂ+V ׆+¬××V×V+…V++××Kׄ¬¬¬׎V¬×׬¬××ׂ¬×¬××× × ×‚¬¬×× × ׂ¬×׆¬+V×××××…V¬×V×××××…V¬×¬×××,׃V+hׂ¬¬×××ׂ+ ׂVׄ¬¬¬c×ׂV×JׂV×V×&׃¬ ×+׃V+¬d׆V×׬+ ׂ¬¬×JׂV× ×&׃¬V ׂ¬׃¬+Veׂ¬Vׂ+¬ ×…¬+×× ×JׂV}×+×+×V+‚V¬×+×+„×× + ×…¬V+V¬××׬+V×++V¬ׇ¬+××+¬׆¬V++ ×+ׂ¬+׃¬V+‚V¬ ×V+ ׃¬V¬×…¬+V×+ׂVׄ¬V+ ×+×V×V×VׂV׆V××VׂV×V„××VV׃V ׆VVVVׂV×…VVׄVVVׂׂVV0ׄ¬V¬ׄ¬++׃+V¬ƒ++׃+ׇ¬V+××V + ׋++¬+V×׬VV׈++V¬+×…¬+×V+ׇVV¬¬V+¬ ׃¬+¬†×V׬V+¬׃¬VV¬„++V ×…+V¬¬ ׃++׈VV¬¬V+¬׆V¬××V×V‡++V+¬ ×*ׇVVׂŠ××××ן××V××××VV××V××VV ׆VV„×טVV××VVV××V××1ׂ¬+׃¬+V׃¬+V׃V¬ׂ¬V׃¬+Vׂ+¬׃¬++׃¬+׆×V+¬׃V++׃+¬ׄ¬+׃¬+ׂ+ ׃¬ׇ++V¬ׇ+¬××Vׂ¬+ ׂ++ ׂ¬ׂ¬¬×׬ˆV+¬¬+¬׌¬×¬+××+¬×+ ×)׃׆××V׊××××׆××V׉V×××VV׊××× ×ƒV×…V×׃׆VV×׉V×V××VV3ׂ+¬׃׃¬+Vׂ++ׂV׃+¬ׂV׃¬׃¬ׄ¬+V׃V++ׂ++׃V¬׃¬V+ׂ++ ׃¬׃+¬¬×…¬+×V+׃+¬׃¬++׉¬V¬V׬×…¬VV+V“+V¬×׬+׬+××+¬×¬+×)ׂV×…V׊××××׆××׉××ׄV ׃×…VV×ׂׂVV׆×V3×V+‚V+׃¬+VׂV+׆+×׬+Vׂ¬+׃V+¬׃¬׃V׃¬V׃V+¬׬+׃¬++׃¬+V ׃¬ׂ+×…¬×Vׄ¬×+„++ׇV¬+V¬V׆+¬××V׌¬×׬+××+¬×¬+×(׃ׄ×׊×××׆××ׇ×׆××V ׂ×…VV×ׂ×VƒV×4ׂ+¬‚+V׃¬+V׃¬V+׆V×V+¬ׂ+¬׃¬+V ׃¬V׃׃¬V׃V+¬×…¬Vׂ++ׂ++ ׃¬׃+V¬ ׬׆¬×V¬„++¬¬ ׬×׬+×+¬×V¬¬+׆V×׬+׉¬+××+¬¬V+×(ׂ ×׊××V××׆××V׉×××V‚VׄVV ׂVׄV×ׂ…VVׇV×V6ׇ+¬××׃¬Vׄ++ׄVV+ׂV׃+¬ ׂ++׃VVׂ++ׄ¬+׆V+¬×¬¬׃V+¬׃V+¬ ׃¬×…+V׈¬++¬××Vׂ++ ×—V+××V×++×׬×+¬×׬V+„+V¬׉¬+¬¬++VV×(ׂ ׂדVV××V××V××V××׉VV×××׉VV××V ׂ ׃VׂV×…VV××׉×V×5׆V××V+׃¬+„+¬¬׃¬V ×+׃¬+V ׃¬׬+¬׈V+V++V¬׃¬+VׂV׃¬V׃++¬ ׃¬×…¬+׬„VV¬ׂ+¬ׂ++ ׉V+××V×++׋×V××VV+V„++V׉¬+++¬ ×(׃ ×VV××VVV‡V××VV„×׎VV×V×× ×‚ ׃××V׎VVVV××V××4׆¬+׬+V׃¬V¬ƒVV¬׃V ׇV×× ×ŠV׬V+V׉¬V++V++¬ׄ¬V+¬ׂV׊¬+¬××+ ׃¬ ׃V׆¬VV++×+ׂ++ ׉V+¬××++×…+V×׆V×׬+׈V+VV+¬ ×)ׂVׂV×ׂׂ××ׄ××××× ×‚V׈×××××ׂVׂ4×…+¬׃¬+Vׂ+×…¬++¬ׇ¬+××V+¬ ׉++V׬+ׂ++ׂV+×…¬++VV×+׃++ ׃¬×ׂ+V׬׃¬+׆¬+××++ ב++¬×¬+×+××++×VׂV×+׉+V+¬×+¬ ×)׃ׂVV ׂׂV׃VׂV9×…VV+¬׃¬+VׂV+×…V+××+ ×…V¬¬+Vׂ¬¬ ׃¬ׇV+¬×׬¬ׄ¬V+ ׃¬׃¬V×…V׬+׃¬+V×…V×++ ×’¬+××+××++V++¬V¬×+ׂV׋+׬+××+¬¬ ×*׃VV ׂׂVV‚ׂV9ׄ¬++V׃¬+VׂV+ׇ+××V×…¬+V+¬ׂ+׃¬׃¬+V ×…+¬׃¬¬ׇ¬++×VV¬׃¬++ׄVV++ ׬++V××V×׬¬×Vו+¬××V×׬+¬×¬+××+¬+V×,ׄVV#××…VV×:׃++׃¬+Vׄ¬V+V׃¬+Vׂ+¬׃+VV׉¬V×׬Vׇ+¬×V¬ ׄVVׂ+׉¬VV׬¬ׄ¬++×+ ×+ׂ+ׄ+¬¬ו×׬+×׬׬+××+¬+¬××O׃V+¬×…¬VVVŠ+V¬¬×¬V+ׄVV׃+ׇ¬+V++׆+VV+ ׃ׂ++V„++¬׃¬++V+¬ ׂ++ ׄ¬++ׂV+V¬ ׂ¬+ׂ+¬׊V++VV+V¬ ××P×׃V¬ׄVV×ׂ¬"׃¬×+‚V ׂ¬׬‚¬¬׬¬ ×V ×׃¬ ׬ ׆++¬ ×××8ׂ¬¬h׆¬+××+¬ ××××$×…V××+¬ ×××,׃+¬××××ׂV ׂ¬׃¬¬bׂV×V×Gׂ×V×)ׂ¬+ ׂ+¬ׂcׂ¬+ׂ+¬ ׂ¬¬×Gׂ×Lׂ¬+ ׂ¬+ׂVd׆+¬××V ×…V׬ ×Gׂ××V+‚V× + ×…¬V++¬×Vׇ+¬¬++׆¬+×׬Vׂ¬+× +׈¬V++V¬ׂ×…V+V¬׆V×׬+ׄV++¬ ×-ׂVV×…××VׂV׉V××VVVׂV׉VV××VVׂV ׂVVVׂV×…VVV×…VVVׂׂV3ׂV×…¬×¬+¬„V+¬×V ×…¬×V ¬ ׆¬¬VVׂ׉+¬VV¬¬V+¬×…¬+×׃¬VV¬ƒV+×…¬××+ ¬׃VV¬ƒV+ ׂ+¬ ׄ¬V׈¬VV¬+VׂVׂ+¬׋¬VV+¬VV+V ×,׃VŽ××V×××××’××V×××׊V××V××VV ׄVV†×טVVV××VVV××V××3ׂ¬+×…V׬+ ×+ׂ¬+ׂ×+ׂ¬V׃¬V¬׆V׬V¬×V×+ׄ¬+V¬×V×VׇV×׬+¬ ׂׂV¬ ׂ+¬ ×ׂ¬׬ׂ¬+ׂV¬×V××V×V׬¬ ×+׃V××V××××׆××V׉V×××V׊V×××VV ׃VV×…V×׃×…VV×V׉V×V×V5ׂ+¬×…V׬+ ׂ¬+ׂVׂVׂVׂVׂ¬+ׄ¬VV׃+ׂ¬+ׂ+ׂVׂV¬ ׂVׂ+ ׂ¬ׂV¬ ׂ+¬׈VVV׬Vׇ¬+××V׬׉V×V××V ×+ׂ×V×V××××׆××׉××ׄV ׃×…V×ׂׂVV×…×VV6ׂ+…V×׬+ ׂ¬+ׂV׃¬V¬ׂ¬+׃¬V¬ׂ¬+׃+¬ׂ¬+ׂ¬+׃V+׃¬V¬ׂ¬+ ׂVׂVV׃¬+׃+V׋¬V×V++VV×+„++¬׉V×V××V ×2׎V×V×××××…××ׇ××׃V ׂ×…V××׃V×7×+V…×׬+ ׂ¬+׆+¬×¬V¬ׂ+¬ׂV ×+׃¬+Vׂ+¬ׂ¬+×…¬V׬+ׂ¬+ ׂ+¬ ׂVׂ+ׄ¬+׬V„+VV¬×’V¬+××+×V×׬¬V¬+¬׉V×V¬V¬ ×.×’VVV××V××××׆××V׉V×××ׂׄVV ׂVVׄV×ׂ×…V×VׇVV×V8ׂV׈¬V¬×׬+¬×…¬¬Vׄ+¬VׂVׂV¬ ׂVׄV+¬ׂVׄ¬V׆×׬Vׂ+¬ׂ+¬ ׂVׂ¬+׆¬V××ׂ+¬ ×V¬×¬V¬+¬××V+×V×+ׂVׇV¬V+V ×,ׇVVדV××××V××VV××׉VV×××׉VV××V ׂ ׃V׊V××VV××׉×V×7ׂ¬+ׂVׂ¬+‚V¬׃¬ ׂ+¬ׂ¬V ׂ¬ׄV¬V׈V׬V+V¬ׂV¬ׂׂ+׃¬V ׂV ׬ ׄ¬VׂVׂ+¬ ×’V¬×¬+×+¬××V+׬+×ׇ+VV+ׇ++V+V¬ ×,׃VV׉V××VVV‡V××VV„×ׂV‰×V×× ×‚ ׄ××V׎VVVV××V××7ׂ+¬ׂV¬ׂ¬+¬„×+¬׃V+ ׂVׂV ׂ¬+¬†VV××+¬׈+׬VV++¬ׄ¬VVׂV׃+¬„V¬¬ ׂV ×+ ×Vƒ¬¬ׂ+¬ׂ+¬ ×V¬×¬+׬¬××+¬¬+××VV++VV++V¬׈+V+×V ×,ׂVׂV×…××ׂ××ׂ×ׂ××× ×‚V׈×××××ׂVׂ6׆¬V××Vׂ¬+ ×V×…V×V ×…+×׬V×…¬V+Vׂ¬ׂVׂ¬+ׄ¬+V¬×+ׂ¬V+¬ׂV ׂ¬+ׄ¬¬×+ׂ+¬ ×V¬××+¬×V׬V¬¬Vׂ¬Vׂ+¬׈¬¬×V×V ×,ׂׂVVׂ׃VׂVׂV<×…+¬×Vׂ¬+ ×+ׇ¬V¬×××…V×V׬ ×+×+׬ׂ¬¬׃¬ ׂ¬¬ׂV ׂVׂV ׆¬+××+¬ ×V¬××V×+VV¬V×+ׂV׉¬V××V×V ×-ׂV†××Vׂ׃VV‚ׂV<ׄV¬Vׂ¬+ ׂ¬+׃¬V¬ׂV×…¬+¬V¬ׂ+ׂVׂV ׊¬++¬×V׬+ׂV ׂ ×…¬V×+¬ ׂV¬×+ׇ¬×V¬׆+¬××V׉V××V×V ×.×××××=׃+Vׂ¬+׬…×׬Vׂ+¬׃+VVׂVV׃¬VׇVV×׬V ׉¬+V××VVׄ¬VV¬ ׂV ׄV+¬ ׂV¬׃+¬ׄ¬V¬׆V×׬+׌+¬×V×VV¬V ××O׃V+¬׃¬+V„+V¬ׂ×+׃+ ׂ+V‚׬ׂ+V ׃VVׂV+V¬×V‚+ ׃V+¬ ׂV¬׃¬++V¬ ׂ¬Vׂ+¬׬+…V++V¬ ××P×׬׬ ׬ׂ¬#׬׬ׂ¬×¬× ¬ ׬ ׂ¬¬×¬ ×+ׂV×…+V¬+V ××××׆+¬××V×…V×V ××××׆¬¬×׬+×…¬×V ×××e׬M×××a׆+¬××VL×KׂVV× ׂ×R׆V×׬+×C×KׂVV?ׂ×RׂV×+ׄ+¬×@×KׂVV?ׂ;׃¬+¬׉V++¬++¬ׂVV׆V++V¬׈¬++¬++׈¬V++¬¬VVׄ++ׂV+V׈++¬+¬×…¬V++ׂ¬+V׋¬V¬××V++ׂ¬+ׂV¬׉¬V++V¬>×,ׂVV×…VVׂVׂV׃V××VƒV׆V××V„××VׂV ׂVV׉V××V׉××VV׃VV1×£¬×¬V+¬V+××+¬×׬V+¬¬+×׬VV¬Vׄ¬V¬¬V‰V׬V¬¬V+ׂ+V¬+V׬V¬VV¬VׂV+ׄV¬V+†V׬V¬‚+V׃¬¬׌¬+×VV¬¬V+׆+¬××V׋VV+¬¬+V+=×+וVVV××V××VVׂVן×VVV××V×VV××V××VV ׃VV†××…×V׊V×××V׃1ך+¬¬V¬×¬+VV×V¬V¬×V׬+׉¬×+VV++×+ׂV+×’++¬×V¬V+×׬+׬¬+×V+¬××+×V׬×׬++¬×׬+ׂVVׂ+V×…¬¬×¬V׬„V+¬V××+¬×V¬×V¬<×*׃׆×VV×…V×VVׂV×…×VV׉××V×VV׉V××V ׃×…××VV×…×V׆V××V׆V××2ך+¬×V+××+V××++V×V+׬׈VV×++ׂVׂ++ד¬+׬+V+¬×׬+VV+V+ׄV+¬׆++××+¬ׂ++ׂVׄ¬++ׂ+¬‚V+¬׎¬+V¬¬+¬¬VV++VVV+V××+¬×V¬××V<×*ׂVV×…V×V×…V×VVׂV×…×VV׈×V×V ׃VV ׂ×…V×VׂV׆V××׆××6ׇV+¬×V++׋V+¬V×+¬¬ׂ¬+׃+ׂ+¬ׂ+׈++××VV׋++××V+V×׬׃+׆V+¬×׬׃V+¬ׂVVׂV× ++¬׋¬V×V¬V+V¬+׆+¬××V׉+¬×V¬×¬+¬;×*ׂV ׂV×…V×VVׂV×…×VV׆×V×VׇׂV×ׂV×…V××׆××5׉¬V+¬VV+¬×’¬××+¬¬×׬Vׂ++ׂV׎¬V¬V++¬××V++ׂV+ׇV+¬¬V׈++¬¬VVV׃¬׃+V ׆¬+V¬+¬׃¬+VוVV¬+V××++×V××V×׬+׉+¬×V¬¬VV¬;×*ׂV ׂV×…V×VVׂV×…×VV׉×V×V×…V××׊VV××V×…××V׆V××׆V××6׈+V+V¬¬¬ב++׬V+××++×׬VV¬¬ׇV+¬×׬+ׇ+VV¬¬ׇ+××V׆¬V+V¬ׇVV×++ׂ++׃+׉¬VV¬×¬+ׂV+׎¬+¬¬××+׬+V+V„VV¬׈+¬++VV<×*ׂV ׂד×V××××××V׉VV××V×׊×V× ×‡VVׂV×…VV××V××××V××6×™¬V¬+¬¬×¬¬×VV+××+¬¬ ׃¬×+ׇ¬+×׬¬׃ׂV+׃+׆¬+V¬ׂ¬+׃¬¬×’¬+¬¬××+¬×VV+Ž+V׬++¬=×*ׂV ׋VV××VVV¢×VV××VVVV××V××VVV××VV×× ×ƒVVׂV‚׈VV××VV†××V8׋V×+V×+×+Š¬+V+V++׆+××Vׂ+¬׃V¬ׂ++׃¬ׂVׄ¬++׆+¬××+Vס++¬¬×׬¬×V¬××+¬××V××V+V+¬?×*ׂ׃×ׂׄ××ׂ×ׂV×ׂׂ ׂVׂV×׆××××ׄ9ט+¬+V¬+×+¬××V+¬×¬V+׃×++ׂV¬׃¬V׃V+¬׆V××+V×׆V¬¬××׃+¬¬×…+¬×V+׎V+×++׬V¬VׂV׋+×+V+¬×V¬?×+ׂ׃V ׂVׂׂVVׂ:×”¬VV+¬+׬++××V¬××++׊¬¬×¬+׬ׂV¬ׂ++׃¬׆¬VV+ׂ׆++׬V¬ׂ++×…V¬¬×V+Š×¬+VVVׂ¬+×+¬+××+¬×V¬V=×,ׂV‚!ׂVׇVVVׂV ׂV;×”+V+×+×××××׬V×…¬+×+¬×…¬×+׃¬+ׂ++׉+¬××V׆V+¬¬V¬׃V+¬ׄVV+V×V+Š¬×׬¬×V¬×’+¬××V+¬××+¬×V¬VV<×-×"ׂ××H׬×׬××V×’¬V¬×¬+¬+¬××++¬ׂ++׃V+¬׈++V××+¬ׇ¬V+¬×+V×…¬¬V+¬׃++׬+ƒ+ׄ¬V×’V×׬++V¬¬+¬×+V¬<××T׆¬××+„V+V׈++V¬¬×+׃+¬׃¬ׂ++×+×V+׃+¬ׇV+V׬V+Vׂ¬+׆+¬+++‚V¬=××Uׂ¬¬×¬ ׬׬ׂ¬¬×׬ׄ¬¬¬ׄ¬¬¬ ׂ¬׬ׂ¬¬ ׬׆¬+¬+¬?×××o×…+¬×V¬?×××o×…¬××V¬?×××a׬Q×××aׂ¬+ׂ¬K×HׂVV× ׂ×W׆+¬××Vׂ¬¬B×HׂVV>ׂ×W׆V×׬+׆¬+¬¬+¬>×HׂVV>ׂ?ׂ+¬ׂV+‰¬××V++׆¬V++Vׇ+¬V++׬V++¬×+×׬++׃¬V+¬׉¬V++¬×+ ׬ +…×VV+‚V¬׋¬VV¬×¬V++ׂ¬+ׂ+¬׉¬V+++V¬=×.ׂV׆××V׎V××××VVV׆××V„××׃V ׂVVV×…××V׉VV×V׃VV4׎¬+¬×¬VV¬+V¬V¬¬V×׬V¬×VV׉VV¬×V׋¬¬V¬×VV׬‚V+ׂ¬V¬Ž++¬×¬¬V¬×VV ׂ++ ¬Š×V¬×¬¬VVׂVׇ¬+¬×VV¬‚V+×+ׂV׋V+¬¬+V+¬<×-׃VŠV××××V×£V××××V×V×××V×V××V××VV ׂVŽ××××V×VV×V×V××6×+×V×׬V¬×V¬ׄV×׉¬××+VV+ׂ¬+ׂV׊VV×׬V¬+×׬ƒ¬×…¬+¬V¬׆+V×׬׃++ׂׂVׂV×…¬¬×¬V׬ו+¬××V×׬×׬+××+¬×¬;×-ׂVV׉V×××V׊V××××VV׉×××VV׉V××V ׃×…××V×…×V׆VV××…V×9׎+V×׬++¬××+¬׃+V׈V×V¬¬+ׂV×+׈¬¬××V+ׇ¬+VV++ ׂ++ׇ¬××V×…+׬+¬ׂ¬¬ׂ¬ׂV׬V++¬¬+×׬¬VV¬ƒ+¬¬׉¬+××+¬×¬+;×-ׂ׉VV×××V׊V××××VV׈×××V ׃V ×׆×ׂV×…VV××…V×8׬V+׬V¬VV×׬+ׄ¬++¬ ׂ+¬ׂ¬+ׂ+¬ׂVׂ++ׂ+Vׂ+ ׂ+¬ׂ ×+ׂVׂV„++V¬׋V+V¬V+¬V++„++׉¬+××+¬××+;×3׊VV×××V׊V××××VV׆××VׇׂV×ׂV×…VV××…V×8׋V+V¬×VV׈V×׬++¬ ׈V×׬V+¬ׂ¬ƒ++ׂ¬ׂ+Vׂ++†V¬×׬ƒ++ ×+ׂVׂ¬+„+VוV¬+××++×V׬+¬××V׉¬+××+¬VV;×/׎VVV××××V׊V××××VV׉××V׈××VVׂVV…××V×…××V×…VV××…VV×8׋V+××V¬+׈¬+¬VV¬ ׈¬+×׬V×Vƒ¬¬+ׂ++ׂV׬V×Vƒ¬¬ ×+ׂ¬+ ׃¬++ׂV×–¬+V¬¬××V+׬+××V¬××V׈¬+¬++V¬<×.׆VVד××××××××V׉VV×××׊V××× ×†VVׂV×…VV×׎VV××××9׋¬+××V×+¬ׇ+×V ׈¬+׬V¬Vׇ+V×׬¬ׂ+¬ ×+ׂ¬¬ ׆¬¬V¬+ׂV×’¬++¬¬××V+××+VV+Œ¬×׬V+V+¬>×-׃×”××VVV×VV××VVV‰××××VV‰×VV×× ×ƒVVׂV—×VVV×VVV×VV:׈V×V×VׇVV+׬+ׄ¬++Vׇ+¬V×VׄV¬VׂV ×+ׂ¬+׊++V¬××VׂV׎¬++¬¬¬××+¬¬+V+V„+V×V…+¬¬+¬>×-ׂVV׌V×××××ׂׄ×ׂ×ׂׂ ׂׂ×ׇ×××××ׄV;ׇ+¬V׬+׈¬+××+¬+¬×¬ƒ¬¬ׇ+V××V×…×+¬×+ ×+ׂ¬Vׄ¬+¬¬׆V××V׎¬++¬×+V׬V¬¬V×+׌V׬׬+××+¬>×-ׂ׆V×ׂׂ׃VV× ×‚=×’VV××VV×׬+×׬+¬+׆¬×׬+ׇVV××V×…¬+׬+ׂV¬×ׂ+¬ׂV¬ׂ¬+×…+¬×V׎¬+V׬+VVV×V¬××V¬×¬+××+¬>×.׋VV××ׂׄVVׂVV ×V>׃++×…+¬×¬+ׄV¬VׂV¬ׇV+×××…+¬×+¬ׂVׇ¬+V××++ׂV¬ׂVׄ+¬V׎¬+¬+¬×׬¬×¬V¬×’V×׬+¬+×׬+××+¬×<×0××ׂ××J׃+×+V+׬¬V¬×VV¬ׄ¬V¬ׇ¬¬×V×…VV×V×+׆+¬++׬¬ׂV׃+V׆¬+׬ׄVׂ¬+×+¬+V¬¬+׬+VV<××Sׂ×+ƒVV×+ƒV¬×…++¬ׄV+¬ׂVׄ++×V+†VV¬¬×+V׃¬׋¬+×׬V++VV¬×+׌V×++++V=××Sׂ¬¬×¬×¬ׂ¬¬:׬×¬× ¬ׂ¬׬ׂ¬¬ ׆V¬××V׆¬+¬¬+¬>×××f׆V×׬+׆¬+××+¬>×××g׬ׂ+¬×…¬××+¬>××××ׂ¬¬××××׆+¬×××>ׂ× ××0׆V×׬+ ׂ¬ ×>ׂ× ×¬׬׬׬ ׃¬×¬$׬ׂ¬¬׬ ׬׬׬׬ ׂ¬Vׂ+¬ ×…¬+¬¬+ ×>ׂ× ×+×+ƒ¬×¬ +¬ׂV+¬×+ ׂV+…¬×V+V×V+¬ׂV+‚Vׂ¬V+‚¬+¬×+…×׬¬ׂV+ׂV+ׂ¬+¬ ׃++׆V++V¬×+ׂV׉V+++V¬×/ׂׂ׆V×V׆VV××V…××VׂVV ׂ׆VV××VׂVVׂVׄ׆×VׂVV4ׄ¬VV¬׋++¬×׬++V¬ƒV+¬ׄV+¬‚V׊¬¬++¬¬+ ׃++¬…+¬+V¬׉++¬¬×V+¬ׄ++¬ƒV׋V+׬+¬׎¬¬V+V¬××+¬+¬ׂ¬V¬ƒ++׆¬+¬ ×V+׃VV¬‚+׆+¬××V׬†+¬¬++×/ׂׂןV×V×V××VV××VV×××× ×‚××××V××VVׂV׎×V××××VׂVV5ׂ¬+׃VVׄ¬¬׉V+×׬VVׂ¬׃VV׃¬+ ׄ¬++ׄ¬Vׄ++¬׆V+¬×׬׬׃¬+V׃++ ׃+ׂ¬+V†+V××++׃+¬ׄV+¬ ׄ++×׬׆V×׬+׌׬+׬+×׬×/ׂׂ׆V×׉V×VV×׉××VV ׇׂV××VV×…V×VVׂV×…×V׆××VׂVV6ׂ+¬„++¬ׄ¬+¬׉+×׬V+¬ׂV¬׃VV׃Vׄ¬¬׃+V׃+׉¬¬×¬V+¬ ׃VV׃+ ׃+ׂ+¬ׇ¬+×V+ׄ+V׬„V+¬׉V¬++¬V+ׄ¬¬+¬“+¬¬×׬+׬+׬+××V+×/ׂׂ×…V×׈V×VV×׃V ׇׂVV××V×…V×VVׂV׎×VVV×××VׂVV6ׂV+Vƒ++ׄ¬+¬׈+××VV ׃VV׃¬+ ׊V+V¬+V׃+ׇ+×V++ ׄ¬+׃+ ׃+ׂVV ׆¬××+V¬ׄ+V×V…+V ׂ¬קV¬V¬¬V++¬×׬V++VV++VV×׬++¬+׬+¬×++×/ׂׂ×…V×ׇVV×VV×V׃V ׂ׃VVׂV×…V×VVׂV׆×ׄ××VׂVV6ׂ¬+׃VVׄ¬+¬׈+׬++ ׃VV׃+¬ ׈¬V+++V׃+ׄ+V×+׈¬×׬+׃+ ׃+ׄ+¬ׇ¬+V׬V׃V++ ב+×׬V×V+×׬×+׆+¬××V׉¬+׬++++×/ׂׂV×…V×׈V×VV×׈VV××V ×VׂV×…V×VVׂVׄ×׆××VׂVV7ׇ+¬×¬++¬׬¬¬V+V¬×¬+¬ ׃VV׃+ׂ+ׄ¬+V׃+ׇ+×V++׈¬VV××+׃+ ׃+׆¬VV¬ ׄ++ׂ¬+׃V++ ×’++××V×+V×׬×+¬׆×׬+׉++++×/ׂ×£××V××××VV××××××VV× ×‚œ××××V×V××××××׋VV××××V7׆V×+׉¬+VV++ׄ¬+¬ ׃VV׃+׃V+׃+׃+׃+V׃׈¬×V++׃+ ׃+ ×…++¬׆VV+V¬ׇV××V++ ׊+××V×+Vׇ×V׬VVƒ+VVׂ+‚¬×/ׂד×V×VV××VV׎V××V××V ׂׂ×V†V××VV‚V×V׊V×ׂV7׆¬+×VVׄ¬+¬ׂ¬Vׄ¬+¬ ׃VV׃+׉V¬¬+׉V¬VVׄ¬+V¬ƒV׃V+ƒ++ ׃+ ׃¬V+ׂV+¬׆V×V++ ׊V+×××++׋+V×V××V+ƒ+V׈++++ ×/ׂ׋×××××ׂVV×ׂ× ×‚׃ׂׄ×ׂ××…×:×…+++¬ׄ¬+¬׈V׬¬ ׃VVׄ¬+ ׬V׈+VV+×V¬׈¬++VV+ ׃+ׂV׈¬++××Vׄ++¬×…+¬V++ ×’++¬×¬+׬¬+×V¬׆V¬××V׋++¬+׬+×VV×/ׂ × ×‚VVׂ׃V`ׄV++ׄ¬+¬׈+××+Vׂ׃VV׃¬+׃+׃+ ׆¬¬×+ׄ¬++ׇV++׬++׃V++ׄ+V++ ×’¬++××+¬×V+V++¬V׆×׬+׬++¬¬+׬+×VV+×+×VׂV ׂVV×`ׄ¬Vׄ¬+¬׈+×׬+׃++׃VV׃V׃+׃+ ×…+V+×…¬+¬׈V++×++׃V++ׄ¬++ ×’¬++V××V×׬¬×¬Vׂ¬+ב+¬×׬++׬+׬+×++×,× ׂ ××c׃++¬×…¬¬ׄVV¬×—V+¬×׬VVV×׬V+××V+¬ׄ¬V+ׄ¬V+ ׄ+׃V+¬׊+¬××V¬×…¬V+V׃++ ×V+׉V+¬×׬V+¬×+ׂV׌V¬¬+¬¬+V¬××OׂV+×++‚V¬׌¬+++V×V+׬+‚V׬V×…++ ׃¬V×+‚VV×V+‚V¬ ׂV+ ׬×+‚V ׆V¬××V׉++++V××X׬¬ ׬׃¬×׬׬׬ׂ¬¬×¬ ׬׬ ׂ¬¬ׂ¬¬ ׆V×׬+׆¬+¬¬+¬ ××××ׂ¬+ׂ+¬×…¬+׬+ ××××׬ׂ¬×…¬×׬ ××××ׂV¬ ××××ׂV×+ ××?ׂ× ××-ׂ¬+ׂ+¬ ׃V¬ ×?ׂ×׬ ׬׬׬ ׂ¬¬ ׬ ×¬× ¬ׂ¬¬׬ׂ¬¬ ׆+¬××V ׄ¬V+ ×?ׂ× × ×…¬V׬V+‚V¬ׂV+×+‚V¬×+‰¬¬+××V¬V+Vׂ¬V+¬×+„¬+¬ ׄ¬V×× +ׂV+ ׂ¬+ ׄ¬V+V׆¬V+V+׆V×׬+ׄ¬V++‚+ ×+×VׇV×V׆VV××V…××VׂVV ׂVV׆V××VׂV׉××××V†××ׂV3׃V+¬×…V+׬+Vƒ++׃++Vƒ+ׂVVƒ ׂVV‡+V++×+V‚׃++V„++V¬ׂV+V‚++ ׇ¬¬×¬+ Vƒ×׬+Vƒ+V ׂV+ ×…¬++VׇV¬×¬VVׂ¬+ׂ+¬ׇV++V+ ×+ׂ‚פV××VV×V××V××VV×V××××× ×‚VV×V×××××Vד×××××V××ׂV3׃¬Vׇ¬+V׬++׉V+¬×׬V¬׈¬+¬××V+¬ׂ+ ׃¬V¬׬+…×V¬׉VV¬×׬VV¬×…×׬+¬ׄ¬V++ ׈¬×׬++ ׃VV¬׃¬+V ׃¬++ ׄ+V¬ׂ׬ׄ¬VVV“++VV×׬VV¬×V+¬×+V ×+ׇׂ×××…V×׈V×VV×׉××V ׂVVׇV××V×…×V׉×××׆V××ׂV4ׂ++…¬×¬++ׇ+×׬Vׇ+×V+¬׃+¬ ׃V+¬ׇ¬++×+ׇ++×׬VVׇ××+ׂ++ ׃¬ׂ++׃¬V¬×…+×+„+׉¬V¬++¬+׊+VV+׈V+¬××V+×+ׂ×…V××…V×V׈V×VV×V׃V ׂVV׃VVׂ×…V×Vד××××VV×V××ׂV4׃+Vˆ++V×׬++ׇ++××V+¬׆¬××V+¬ׂ++׃¬+Vׇ¬++×+ׇ+×V+¬ ׃¬++ׂ++ ׃¬׃+¬׆++׬VV†++VV¬ ×+׋¬+×V+VVׂV×+ ׈V+¬××V+×+ׂ×…V××…V×ׇV×VV×V׃VV ׈VV××VVׂV×…V×V׆××ׂ…V××ׂV5ׂ++׈+×׬++׈¬+V׬+V ׃V+¬׃V+¬׃¬Vׇ¬++×+ׇ+V×++¬ ׃¬++ׂ++ ׃¬׃V¬׈¬V+×׬+V׃¬++ ב++¬××V¬+¬××+V×Vׂ¬+ׂV¬ ׇV+++ ×+ׂ×…××…V×׈V×VV×׈VV××V ×VVׂV׆×V׉V××××׆V××VׂV5׃¬ׂV+׃¬+ˆ+V¬×¬ ׃V+¬׃ׂ++ׇ¬++×ׇV+¬×V+ׇV¬××++¬׃¬++ ׃¬ׂV+ׄ¬׃+ׂ++ ׉++¬×¬+×V+ׇ++×V××++ƒ+¬׆V+V¬ ×+ׂ×…VV×מV×××V×VV×××××V× ×‚VV†××סVV××××××××××VV××××V6ׇ+V××׃¬+V„++׃¬ ׃V+¬׃׉V¬×׬V+…××…¬++¬ׄ¬׊¬+×׬+¬ׂ¬V+ ׃¬׃+¬׬V„+VׇV+¬××++ ד++¬×¬+×V+¬××V+׬+×׬‡VV¬¬+¬ׇ¬+V ×+ׂ×…VV×׎V×VV××VV×…××VVׂV ׂVVׂ×V†V××V‚V×V×…×××V7ׇV+¬×V+¬׃¬++׈¬V×׬ ׃V+¬׃ ׂ+ŠV+×+++ƒV¬ׂ++ƒVׂ¬+ƒ++ ׃¬ ׃V¬×…V++V׆+××++ ב++¬×¬+׬××V+׬+ׂ¬+ׂ+¬ׇ+V++¬ ×+ׂ׃×ׂVV×ׂVV׃ׂׂׂׂׂ8׆¬V¬+V׃¬++׆++׬V ׃V+¬׃V+ ׬VŠ¬¬+×+¬V¬׬V‚¬×V…¬×++ ׆¬×׬ׂ++ׂ++ ×…++¬++ ב++¬××+¬×V¬+¬׆+¬××V׈¬VV¬×V+¬ ×+ׂׄVׂVVׂVV׃VV_×…++V+¬׃¬++׆++××V+ׇ¬V¬×V+¬׃¬+V׃+#ׂ++׉VV׬׬V׃+ׂ++ ׬+ ב++¬××׬+V¬V¬׆V×׬+׈V××V+¬ ×+ׂVׂVV×V‚V_ׄ+V׃¬++׉¬¬++×׬+׈VV×V+¬×…¬V+׃+#ׂ++׊VV××++ׄ¬׃¬++ ׄ++ ׃++¬×+׃VׂV×+¬××+××V+¬++ ×,×××c׃++׃¬+V+׃V‰++¬××V+V+‚¬׃+#ׂ++ ׉V++××Vƒ++V×V‚+ ׃V++ ׃++¬׊¬¬×¬VV¬¬×+׋V××++V++‚V¬ ××Oׂ+׃¬+‚V׬+‚V×+‚V¬׃V+#ׂ+V ׃V׬+‚V¬×V+‚+ ׂ+V ׃++¬׆V++V¬ ׆V¬××V׈V+++V ××X׬ ׬׬׃¬×¬#ׂ¬¬ ׬×¬× ¬ׂ¬¬ׂ¬¬׃V+ ××××$׃V+¬ ××××$ׂV××××ׂ¬××××׆+¬××V×FׂV× V××'ׂV×+ ׂ¬×FׂV×׬׬׬ ׬׬׬ׂ¬¬×¬ ׬ ׄ¬¬×׬ ׬ ׬׬ ׬׬ׂ¬+ׂ+¬ ׆¬+¬¬+¬ ×)× ×ׄV× ×8×9׬+×+×+‚V×+×+ƒVV ×+‡V+׬++ׄVV+׈V++V++׊¬V+V+V×V++ ׬+ˆ¬×¬¬×׬+ׄ¬V+V+‚V ×…+++ ׃+VׂV+׆+¬××׉V++++ ×&ׂVV×V׆V××ׄ××…V×××V„××׃ ׃׆×V…V××ׂ×…VV×VVƒ×ׂ.ׂ׃¬++׃¬V׃V¬׉+¬×׬V׈V+¬×׬+V ׋V¬×׬V×+¬׉V¬××V×…¬V+V¬׃¬VV׆+V¬××+ ׃¬׆+¬++V‚+׃¬׃+V ׃¬V+ ׃+V׈V¬×׬VV׆V×׬+׋¬V¬¬+¬¬+VV ×%ךV××××VV××××V××ן××××V×××××V×××V ׃ׇV××VV×…V×ׂ×…VV×VV׆VV×ׂ/×+׃¬׃¬+V׈¬¬×׬Vׂ¬׃V+¬ׂ+V ׃¬+V׃+V׃׈¬V¬×׬V׬ׂ+׃¬+ ׃¬׆¬+VV¬׆VV׬V¬ׂ+V ׂ++ׂ+¬׬ׄVV+Vƒ+V׌+׬+××+¬× ×%ׂVV׆××׊××V××׆××V׉×××V××V ׃ׇV××…×ׂ×…VV×V×…×ׂ/ׂ+V„¬+¬׃¬+VׇV××+ׂ׃V+¬׃¬׃¬V׃¬V׃¬ׇV+¬×¬+V ׃V+¬ׂ++ ׃¬ׂ+¬׆¬+×++¬ׄ+¬„++¬×†V++¬V+×+ƒ+V׌+׬+××+¬×¬+×%ׂV×…V׉×V××׆××׉××Vׄ ׃ׇ×××…×ׂ׎VV××VV××ׂ/ׂV+V‚++׃¬+V׆V+××V+ ׃V+¬ׂ++ ׄ+¬׃¬V׃+¬ׇ¬×V+¬ ׃¬+Vׂ++ ׃¬ׂVV ׃¬¬ׄ¬¬V„+V׋V¬+¬++V׆V¬××V׉¬+××+¬×+×$׃ ×׉×V××׆××V׈×××V‡×× ×ˆ××Vׂ×…×ׂׂVVׂ„×ׂ0×+׃¬׃¬+Vׇ+V׬+V ׃V+¬׃¬ ׂV+„VV׃+¬ׇ¬V×++¬׆×׬+Vׂ++ ׃¬ׄ+V׆+××Vׂ++ ×+×׬V×V+×׬×+׆V×׬+׉¬+××+V+V×$׃ ׂVד××V××××××V׉V×××VׂׄVVV ׆V×××…VV×ׂ×…VV×V×…×ׂ0ׇ+¬××+¬׃¬+‰V++V׬ ׃V+¬׃¬ ׉¬×׬¬+V׃+¬ׇ+¬×+ׇ+¬××++ׂ++ ׃¬×…+ ׄ¬+Vׂ¬+ׂ++ ×—V+××V×++×׬×V¬××V+++„++¬׉¬+V++¬×$׃ ×±V××VV××××××VV×××V×××××VV××V× ×‚ªV×××××××V×V×××××××V0׆V××V+׃¬+Vƒ++׃¬ ׃V+¬׃¬ׂ+׃׃ׄ¬V+׃¬׈+¬×׃¬++ ׃¬ ×…¬V+¬×…VV++VׂVׂ++ ׉V+×××++×…+V×׊¬¬+¬¬VV¬¬׃¬+‚¬ ×%ׂV ×V†V×ׂV×…××…V××׊V××× ×ƒׂV׆××V‰VV×׆V××VV1×…+׬׃¬+V׈¬+V×׬ ׃V+¬׃¬׃¬VƒV׉++V¬V++¬׃++ƒVV׉V+V++ ׃¬ ׃VV¬׆V++¬׆V××++ ׉V+¬×V×V+×…+V×V׆V×׬+׉¬+++¬+¬ ×%ׂ׃×ׂ ×ׂ׃ׂVV×××××3×…+¬+¬׃¬+V׆××V ׃V+¬׃+¬ ׬V¬׈+¬V+¬ׇ¬V+VV¬׈¬V+V¬×++ ׃¬ׂ¬V׆+¬××V׃+¬×…+¬×++ ×’¬+¬×¬+׬V+×V¬ׂ¬+ׂ+¬׊VV¬¬+××+¬¬ ×&ׂ׃V ׂ׃ׄVVXׄVV+׃¬+V׆V+××V+ׂV+׃V+¬ׂV+׃+¬ׂ++ ׅ׬׃¬׆¬++×V׃¬++ׄ+¬++ ב¬+××+¬×V++¬V×”+¬××V×׬+׬+××+¬V ×'×V!ׂ×VYׄ¬+V׃¬+V׈V+×׬V׃+V׃V+¬ׄ¬V׃+¬ׂ++ ×…V+¬ׂ¬+׆¬+V×+ׂ++׬+ ׈¬++V××V׃¬×¬וV×׬+×׬+×׬+××+¬VV×)ׂ×$׃++¬ׄ¬¬V¬„V+V׃+¬ŠVV+V×׬V+¬„+V¬×…¬¬+¬ׄ¬¬++ ׄ¬+׃V+¬‰V+¬××+V¬„V++׃+ ×+׉V+¬¬V¬ׂV×+׋V+¬+¬¬+VV ××Oׂ+ׄ¬+++׌¬V++VV¬×VV׬+×+¬×…¬+++ ׂ+ׂV+‚V¬ׂV+‚¬ ׂV+ ׃+V¬׆¬V++V¬ ×+ׂ¬ׄ¬V++‚V¬ ××Zׂ¬¬ׂ¬¬!ׂ¬¬/׬׬3ׂ¬¬ ׆¬+¬¬+¬ ××××#׆¬+××+¬ ××××$ׄ¬×× ××××ׂ¬!×C×× ××)ׂ¬Vׂ+¬×CׂV× V××)×+ׂV ׄV׬×CׂV×׬ ׬׬׬ ׬ ׬ ×¬× ¬×¬׬׬׆+¬××V ×…VV¬V ×+ׂׄV ×#ׂׂ<×V ׂ¬+Vƒ++×V‚+ׂ+Vƒ++ ׂ¬Vˆ+V¬¬××V‚+V×V‚+×V‚++¬׃¬++V×Vƒ++V ׬ ׄ¬V+¬׬Vƒ+V¬׆×׬+ׂ¬V+„V+V ×(ׂV××V××××ׄ×׈××××V„××׃ ׃׆V×V…V××ׂVׄVV׆VV×Vׂ0ׂ׆¬×¬+¬׃¬V¬ׄ¬V¬ׂׂV׃¬VV ׄV¬׉++×+¬׃+×…¬VV¬¬׃¬VVׄ¬V¬ׄ¬+V+ ׆V××+ ׃¬¬׃¬+ ׂ+¬ ׃+VׂVׂ+ׂ¬+ׂ+¬׋V¬V×V+ ×(׃V׎V××V××××ן××V××V×××VV××V×××V ׃ׇV×V×…V×ׂV×…VV×VV׆V×Vׂ1×+ׅ׬+ ׆V¬×׬׆¬V××V× ×‚¬¬×…+×V×Vׂ¬׬ׂ¬ׂ+ ׂVׂVV ׂׂ¬¬ ׂ+¬ ׬ׄ׬ׂ¬¬×+ׂV׬¬××V×V××+¬ ×'׃×V×V××××׆××V׉×××V××V ׃׆VV×××…V×ׂV×…VV×V׆×Vׂ1ׂV׆¬V¬×¬+ ׆¬+××V×…¬×VׂV ׂV×…¬+× ×…+××V ׂVׂ¬+ ׂVׂ+ׂ׃¬+¬׊¬V++×+¬׋+VV+¬׉V×V××V ×(××V×V××××׆××׉××Vׄ ׃ׇV××V×…×ׂV׎VV××VV××Vׂ1ׂ¬+†VV×׬+ ׆¬+××V¬ ׂVׂ¬+ׂ¬V ×…¬+× ×…V×V ׃¬V¬ׂ¬+ ׂV׃¬+¬׃+×+„++׋V¬+×V¬+ׄVV++V„+VV¬׉V×V׬V ×,×VV×V××××׆××V׈×××Vˆ×× ×ˆ×Vׂ×…×ׂׂVV׉V×ׂ2ׂ+¬†V¬×׬+׆¬V׬V ׂV ׂV¬ׂ¬+ ×…¬+× ×…V×V¬ ׂ¬+ ׂ¬+ ׂVׂ+×…¬+׬V¬ƒ+¬¬ ×׌V¬+××++×ׂ¬+ׂ+¬׈V×VVV¬ ×)לVVV××V××V××××××V׉VV×××V׉××VVV ×…×××…VV×ׂ×…VV×V׆×ׂ2ׂVׂ¬Vׂ¬+V…¬×¬V ׂV ׂVׂ+¬×…+×V ×…V¬×V׆¬¬××Vׂ¬+ ׂV×V׆V×׬+ׂ+¬ ×V¬×¬V¬¬××V+׬+׆+¬××VׇVV++V¬ ×(׆V׬V××××V××VV×××V××××VV××VV×× ×ƒתV××××V××V×V××××V××VV3×+ׂVׂ¬+V‚++ׂ¬V ׂV ׂV׃+¬׆++×V+׬Vׂ׈¬V×׬¬׃V+ ׂV ׂV¬ ׬„V¬ׂ¬Vׂ+¬ ×’V¬×¬+×+¬××V+׬+××+ƒ+ׇV++V+V ×(ׂVV׆V××ׂׅ××…V××׊V×××× ×ƒׂV׎××VVV׊V××VVV3ׇV×׬V¬ׂ¬+׆¬×׬V ׂV ׂV ׃¬++ŠV++×V+VƒVV׃V+VƒVV¬ׂ++„V¬+ ׂV ׂV¬×+‚V¬ׂVׂ+¬ ×’V¬××+¬¬×׬¬+×׬ˆVV¬¬+¬¬׈¬VV×V ×(ׂVׂׂ׃ׂVZ׆¬+××Vׂ¬+ ×…××+ ׂV ׂV¬ ׬VŠ¬××××V‚¬ׂ¬V¬׬V…¬×¬+ ׂV ×+׃¬V¬ ׆V××+¬ ×V¬××V×++¬V¬Vׂ¬+ׂ+¬׈V×V×V ×(׌××VV××ׂ׃ׄV[×…+¬×V¬ׂ¬+ ׆¬+××V×…¬×Vׂ¬Vׂ$ׂ¬+׉V¬××V׬¬ׂV ×+ ×…+¬×+¬ ×V¬×׬V××++VV¬׆+¬××V׉××V×V ×)×V†V××Vׂ×\ׄ¬VVׂ¬+ ׆¬+×׬׆V×Vׄ¬V¬ׂ$ׂ¬+׊+V×V××+¬ׂV ׂ¬+ ׄ+¬+¬ ׂV¬ׂ+¬׃VV׆V¬×׬V׋+××V×V× ×+ׂ×"׃+Vׂ¬+¬„VV׃+¬ƒVׂVV¬…VV¬ׂ$ׂ¬+ ׉+V×׬¬V׬‚+ ׄ¬++¬ ׂV¬ׂV¬„VV¬¬ׂV×+׋¬+VVV¬V+VV ××Oׂ+׬+ƒV¬׆VV++V¬×+ƒV¬ׂ¬%×V ׃¬Vׂ¬V+‚V×+‚V+ ׃¬+¬ ׂV¬×…++V ׂ¬+ׂ+¬ׂV+ ×××K׬׬ ׂ¬¬ ׂ¬¬׆+¬××V×…V×V ××××׆V¬×׬V×…V×V ××××׬× ×‚¬ ××××4×LׂV× V××B×LׂV× ××B×LׂV× × ¬×¬× ¬ ×¬× ¬×¬ ׬ ×¬× ¬×¬׬6×4׃VV×…×××׈××VV××ׂ× ×‚ ׃VV׃VV<× ×‚¬+V׬V‚+¬ׂ+V ×V+ׂ+V׬V¬׉VV+¬×׬¬׬V„¬×× V¬ׂ+V × ×ƒ¬V׬$×2×V‰××××V׈×××׃Vד××VV×××× ×ƒ×V×:ׂV¬ ׄ׬+ׂ+¬ׂV׆+¬××Vׂ¬V ׃¬V¬×…++×ׂ+¬ׂVׂ+¬׋VV¬×¬V+¬+ ׂVׂV ׂVׂV ׂV¬ ׂ¬׆¬V++¬×…¬+׬+×…¬V×1׃V׊×××V×£××××××V×××××V××V×VV ׃ׄV׈VV×Vׂ9ׂV¬ ׄV¬¬+ ×+ׂ×…+××Vׂ¬V ׂV×…¬+×׆V×× ×†×¬VV¬ׄ¬VV+ ׂׂVV ׃¬V¬ׂV ׂV¬ ׊+V¬¬V++×…+××+¬ׇVV+V+×1ׂV׉V×××V׊××××V׉×××V׈××VV׃׃×…V×VVׂ9ׂV¬ ׄV¬¬+ ×…V׬V ׄ¬×V ׂV×+ ×…¬+×׆¬+××+¬ × ×‚¬+ ׂ×…++V¬׃V¬¬ƒ+V¬ ׈¬××V××ׂ¬×…+¬×V¬׈¬××+¬¬V¬×1ׂ׉VV×××V׊××××V׉×××V׃׃ׂV×…V××ׂ9ׂ+ ¬„V¬¬+ ׅ׬V ׂV ׂVׂVV¬…+× ×…+¬×V¬ ׂ¬+ ׂ¬+ ׂ×…++¬׃V¬¬VƒV ׉V×V¬V+׬†+V¬VV¬ׄ+¬×5׌VV×××V׊××××V׉××V‡××׃ׂVV×V‚VׄVV9× +ƒ¬¬+׆¬V¬×¬V ׂV ׂV × +ƒ× ×…V×V¬ ׂ¬+ ׂ¬+ ׂ׆¬V++¬ ׆¬V¬×VׂV¬ ×V×V¬¬¬+׬׬Vˆ++V++VV׃+V×2×VVV××××V׊V××××׉×××V×…××V׃ׂV×ׂVV:ׂV×…¬+¬¬+‡VV×׬V ׂV ׂV ׬×…+×׆¬V¬×V¬ ׃¬+¬׃¬+ ׂ ×…¬V+× ¬„׬V¬ׂVׂV¬ ׇV×VV׃+VV×…V׬+ ׂ+V×1׆V׬×××V×VV×××VV××××V×VV××V×V ׃ׂV ×…VV<ׂV¬ ׄV¬¬++ׂ¬V ׂV ׂVׄ¬+¬ׇVV+×׆V××V¬ ׆¬¬×V+׬V+ ׂ×…V׬++VׂVׂV¬ ׎V×VV×××V¬×…¬+׬+׃+¬×1ׂVV׆×ׂV×…××VVׂ׆V××ׂ ׃ׂ׆V×××:ׂV¬ ׄV¬¬+׆V×׬V ׂV ׂV׬V++¬V+V¬××VV¬‡×V××V¬‚V׊+V¬VV¬¬+ ׇׂV××V+ ׂVׂV¬ ×V×V¬××V¬×V„VVVׄ¬V+¬×1ׂVV׃ׂ׃ׂV׆×ׂVV9ׂV¬ ׄV¬¬+ ×…+¬×¬V ׂV ׂV ×…¬VV¬× +ƒVV¬×+‚¬¬׈V¬×׬+ ׂׂV׃V+¬ ׆+¬××V¬ ׉V×V׬V׃V¬×„++×…¬V+¬×1׌V××VV××VׂׂV‹××V××VV׈××V9ׂ+׆¬V¬¬+ ×…¬+׬V ׂV ׂVׂVV$ׂ¬+ ׂׂ+¬׃Vׄ¬++¬ ×…+¬×V¬ ׆V×++¬×…¬VV¬×…V¬×VׇV×+×2׆V××ׂ× ×ׂV:ׄ+V¬ׄ¬VV¬+ ×…V××+ ×…¬×V׃¬ׂ$ׂ¬+ׄVׄ¬V+×…VV¬ׄ¬+V¬ ׄ+¬V¬ ׇV׬V++Vƒ¬¬×…V×V׆V+VVV×5×U×?׈¬++VV¬׃¬+¬ƒ×Vׂ¬+¬†××VV¬„××ׂ$ׂ¬+ ׃V+׈¬V+VV¬× ¬ƒV+V ׃++¬ ׂVׄ¬¬ ×…V׬+׃+¬××Nׄ¬V¬׃¬++V¬ׂ+V¬ׂ++V‚׬%×V ׂ+ׄ¬VV¬׬ V‚+V ׃¬+¬ ׂVׄV׬+ׂ+¬××|׬t׬!׬××××4××××4×ÀE·ElpªŒ&ƒ­­­;%W{}‹zM²ÿÿÿ­ÜÛÛÛXXXXXXXXXXXXXXXXXSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSA;‚B;‚BSA;‚B;‚BSA;‚B;‚B)†‡/ *‘3*‘3)”‚‚‡ )‚ƒƒ )‚ƒ )Š……… )‚“ ƒ )‚“  (‰†… -‘ƒ -‘ (•ƒ…… ,’  ,’  (• ƒ *‡ƒ *‡ƒ '‹‡ ƒƒ )‚’ )‚’ 'Š… )‚…#)‚…#'Š…3 *„‚3*„‚3SAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVB# AVBVB"††AVBVB&‚"‚AVBVBŽš3 "‚‰‡ˆ 3"‚‰‡ˆ 3‚†Œ’!„ˆ…Ž !„ˆ…Ž ‚­  ‚£  ƒ  ‚£   ‚­ ‚  ƒƒ  ‚   ‚­   ‚ Ÿ ƒƒ  ‚ Ÿ  ‚†‰‡‡   ‚ƒ ƒ  ‚ƒ  ‚‘…   ‚‰…‡   ‚‰…‡  ‚‚‚  !†‚ !†‚ ‚‚‚‚ ‚3 "†/ "†/ SAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVB1‚ 3 ‚‹‚‚ 3‚‹‚‚ 31‚  ‚‚‚‚‚‚1‚   ‚Œ‚‚‚‚  ‚Œ‚‚‚‚  1‚   ‚Š‚‚ ‚Š‚‚ 0  ‘‚  ‘‚  /†ƒƒƒ ‚Š‚‹ƒ ‚Š‚‹ /† ‚†‚†  ƒ ‚†‚†   .‚‚ ‚‚‚ƒ ‚‚‚ .‚‚/ ƒ3ƒ3SAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVB'„3 ‰Š„ / ‰Š„ / &‚‡‡‡ ‚Ž’„ ‚‚ ‚Ž’„ ‚‚ &‚‘……… ‚‘… ‚‘… *„ƒ !‚† ƒ !‚†  )‚ƒ   £ ƒ  £  '‹ § ƒ §  &‚ƒ‚‡……… ‚„‚‚‹‚ … ‚„‚‚‹‚ … &‚†"‡ ‚‚ ‚ …‚‚‚ ‚‚ ‚ …‚‚‚ '‚"3  ‚ Œ/  ‚ Œ/ SAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVB)3 ‚„ˆ‡„/ ‚„ˆ‡„/ )‚Œ ‚ƒ‚š ‚ƒ‚š )‚Œ  ‚“‚Œ ‚“‚Œ )‚„ƒ  ‚“‚‡ƒƒƒ ‚“‚‡ )ƒ  „ƒƒ „ƒƒ )‚Š  ‚‘ƒ—ƒƒƒ ‚‘ƒ— )‚„‡  ‚„‘„ ‚„‘„ )‚‚# ‚‚‚… ‚‚‚… )$3 ‚‚„/ ‚‚„/ SAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVB„„ƒ†„ˆ7 ‚‹’‡B‚‹’‡B‚¶ ‚œ‡‡/‚œ‡‡/‚Œ…Š‡  ‚©‚©‚„ƒ†ˆ  ® ® …‚ƒ†  ©  ©  ‚°ƒ‚ƒ–‘ ‚ƒ–‘ ‚„Š†‡‚ˆ„‘ ‚ˆ„‘ ‚‚‚ ‚‚‚…‚4 ‚…‚4 ‚ ‚‚/„‚B„‚BSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSA<B<BSA;†B;†BSA?‚B?‚B$†„ˆ/ ‚‚„ /  ‚‚„ / #‚š ‚‚”Š   ‚‚”Š  #‚Œ‡ ‚‚  ‚‚ '…ˆ ‚‚„’ ƒ  ‚‚„’  &„ƒ†   ‚„š ƒƒ  ‚„š  $‘ƒ   ‚ˆ‡Š  ƒƒ  ‚ˆ‡Š   #‚‡‡   ‚ƒ‚‡Š  ƒ  ‚ƒ‚‡Š   #‚…‚  ‚ ‚ ‚ ‚$„‚7 ‚‚3‚‚3SAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVB"œA„Š 3„Š 3"—‡A® ƒ ®  "ƒ”A‚¬  ƒ ‚¬   "šA‚‡  ƒ ‚‡   "’  ‚…¢   ‚…¢   "„‘A‚Ÿ‡ ƒ ‚Ÿ‡  "“A‚‡„‡…  ƒ ‚‡„‡…   "‚‚(A†)‚ ƒ †)‚  "‚…%A‚%‚ 3‚%‚ 3SAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSA-‚'B-‚'BSA-‚'B-‚'BSA-‚'B-‚'B'‚‹3 "Ž/ "Ž/ '‚†‡ !‚†„Š†  !‚†„Š†  '‚‰  !‚š‚  !‚š‚  '‚‰  %ƒ   %ƒ   '‹  $ƒˆ   $ƒˆ   '‚Ž  "ƒ„   "ƒ„   '‚‰  !‚„‹ˆ  !‚„‹ˆ  '‚# !‚‚. !‚‚. 'ƒ#3 "// "// SAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVB$ƒ/ '††2 '††2 #„” &„ƒ‚‚ &„ƒ "‚‚† %‚…‚… %‚…‚… "‚‚†ƒƒƒ %‚…‚ƒ  %‚…‚ƒ  "‚‰  %‚ƒ„‰  %‚ƒ„‰  "‚’ƒƒƒ %‚ƒŽ  %‚ƒŽ  "‚† %‚‰† %‚‰† #†* &†‚‚‚ &†‚ $+/ 'ƒ ‚2 'ƒ ‚2 SAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBSAVBVBXXXXXXXXXXXXXXXXXXXdP[PlpÆnn˜^ÿÿÿÿÿÿÿg@&@&@&@(‚(‚(‚(‚(‚((&(&(&(&(&(&5m&6n6d# ‚;5]0ƒ‚‚‚1#*W ‚‚‚ ‚ *1 ‚" |‚‚ ‚$ ‚ ‚‚x‚‚ ƒ‚ ‚ƒ‚!  ‚‚ ‚  $ t‚‚ƒ‚‚ƒ  ‚‚ ‚ ) rƒ‚‚„‚‚‚ " ‚‚ƒ‚ ‚ƒ‚ -pˆ„ƒ†‚ % ‚‚ƒ‚‚ƒ$1m‚„‚„ ) }‚‚„‚‚‚&3kF {‚ƒ†‚ (5iD#w‚ƒ„‚„$"f $-uK+d ! rI5b‚< q‚'`U   ^S  3 " \Q ‚ / & ZO ‚‚ + ) XM ‚‚#( , WK‚‚ $ / UJ‚"#2 TH‚‚‚&6RG‚‚(9QE ‚‚ *;OD ‚‚‚‚ ,=NB ‚‚‚‚‚‚ .?MA ‚‚‚ 0@K@ "…‚‚‚  2BJ> B"  4DI= D#  6FH< F% 8HG; G& 9IE: I‚( ;K D8 KA ~<M C7 MC |>N B6 OE z@P A5 PF xAQ @4 QG vBS ?3 RH sDT >2 TJ qEU =1 UK oFW <0 VL mHX ;0 WMlIY :/XNjJZ 9.YOhK[ 8-ZQfL\ 7,\ReM] 6+]ScN^ 6*^TaO_ 5)_U_P` 4)`V_ + 3(aV] - 2'+[ - 1&-Y I\ 1%- X  I\ 0$ XM V  I\ /$ XM U  I\ .# XM T  =ƒ‚C ." 7ƒƒ‚‚4 R  =‚…D  -! 75 P  =„‚‚E  -! 7„‚‚‚5P =‚F  , 7‚‚‚5N =‚G  +7‚‚‚5L =H  +7‚‚‚5K =‚ƒƒƒG  *7‚‚‚‚‚‚5J =…‚…„F  *7‚‚5H =‚‚D )7‚ ‚‚6G = J )7ME = J (7MD < J '6‚‚MC >‚ ‚J ' 8‚MB I\ &XMA I\&XM@ I\ %XM? I\ $XM> I\ $XM= I\ #XM< I\ #X2; I\ "X1: I\ "X0‚9 I\ !X0‚‚9 I\ !X1‚‚7 I\  X#‚‚‚7 I\  X$‚‚5 I\ X$‚‚5 I\ X$‚4 I\X$‚3 I\ X$‚‚‚ # I\X$‚‚‚‚ # I\X# ‚ " I\X$‡‚‚‚ " I\X;‚ $ I\ X;  ' I\X+  ‚  * I\X+‚  , I\  XM  ‚- I\  XM ,  I\!XM ,  I\!XM ‚+  I\ !XM ‚+ !I\ !XM * !I\ "XM  ) !I\  "XM   ) "I\ "XM  ( "I\ "XM ( "I\ #XM ' #I\  #XM ' #I\  #XM & #I\  #XK & #I\  #XH  & $I\! $XE $% $I\! $XC ‚%% $I\! $X@ ‚%$ $I\! $X= %$ $I\! $X: %$ %I\" %X7  &$ %I\" %X4  &$ %I\" %X2 &# %I\" %X/ &# %I\" %X, &# %I@" &X) '" %I?" &X& '" &I>‚# &X# '" &I>‚‚# &X! !'" &I?‚‚# &X $'" &I1‚‚‚# 'X '(" &I2‚# 'X *(" &I2‚‚# 'X ,(" &I2‚# 'X /(! &I2‚# 'X 2(! &I2‚‚‚#'X  5(  &I2‚‚‚‚#'X  8(  &I1 ‚#'X ;(  &I2‡‚‚#'X =(  &II#'X‚ @(  &II#'W C(  &I9  ‚#'W F(  &I‚8‚#‚'WI(   &HY#ƒ'W F)  &HW#0W C1  &HV#0X‚ @1  &H T#0‚; >1  &+ R#0ƒ: ;1„ &ƒ*‚P#„0‚<  81‚ &‚,O#‚0‚<  51 &‚,M# /‚ < 20‚ &‚ ,K#‚‚ /‚< 00 &‚,I# /‚< -0‚ &‚, H#‚ /…‚< *0„ &…‚,‚ F#„ /: '0" &*‚ D# / < $0" % ,‚B" / ‚<  "0" % ‚,ƒA" /‚‚<# 0" %‚,ƒ?" /‚‚A& 0# %‚‚1ƒ=" /X) 0# %Iƒ;" /X+ 0# %I:" .X. /$ %I8" .X‚  /$ $I6! .X‚‚  /$ $I4! .X‚   /$ $I3! .X‚ /$ $I1! .Xƒ‚ ‚ƒ‚ /% $I/! .Xƒ‚‚ƒ /% #I-  -X„‚‚‚ .& #I ,  -Xƒ†‚ .& #I"*  -Xƒ„‚„ +& #I#(  -XJ )' "I%& -XM &' "I&% ,X = "( "I(# ,X = ) !I)! ,XM ) !I+ ,XM ) !I, +XM  *  I-  +XM +  I/ +XM +  I1*XM  , I2 *XM  - I 3*XM - I 5*XM - I 7 )XM / I 7)XM! / I 9)XM$ . I ; (XM' + I < (XM) ( I = 'XM(‚ & I ?'XM( $ I A'XM( # I A&XM' $ I C‚ &XM'$ I E &XM'% I G  %XM&7 I G!%XM&7 I I !$XM%9 I K !$XM%9 IJ‚ "#XM%: IJ  "#XM$; IJ‚  #"XM$< IJ #"XM#= II $!XM#> II $!XM"? II ‚ % XM"@ IH ‚ % XM!A IH  &XM!B IH&VK C IH'WL D +‚‚‚G‚(WLE ,ƒ‚G(WLG ,‚ƒ‚ G )WLH ,‚ƒ‚ F (HHJ ,‚ƒ‚ F  &GGJ ,‚ƒ‚ F  $G‚‚FL  ,‚‚‚‚ E  ‚#G‚‚FN  +‚‚ E  !G‚‚FO  ,…‚‚ E   G‚‚FP  , E  !G‚‚FQ  -‚ D  !G‚FS  .‚ D "F‚ƒGS  /‚D ‚#GMU IC 1$GMW IC 2$H‚MY bF 3%XMY bF‚ 4&-[ bD‚ 5'-] OE 6(+_ ND 6)jb`MB 7)jabLA 8*iacK@ 9+h`eJ? :,g_gI= ;-f^i H< <.e]k G: =/d\m E8 >0c[p D7 ?0cZr C5 @1bYtA4 A2aXv@2 B,`Wx>0 C,_Vz=. D/‚^T|;, E/‚\S~9* F0‚[R8)G‚ZP6'HƒYO4$J‚‚XN 2"K…VL 0 Lƒ UK/Mƒ TJ-Nƒƒ‚ RH+O†„‚ QG)Q OE&R"ND "T" LB   U!"KA"   W#‚#I?$  XJG=(  ZKE;+  \MC9/ ^OA73 ‚`Q?573bS=3;+dU:0?# fW7.D&!iY 4,H$! l\2*N!" n_/(S " qb,&W " td )"\ #wg % b {j " g  ~m o~q y0}t ƒ# }y1}#%| &%|(%|(&{(& ‚& &&‚&‚&&„&…&‚&‚&&@&g 66lpT¾c?ÿ¿¿ÿÿÿÿÿÿÿ-‚-‚-‚-‚-‚p‚\‚E‚ps T/‚p  s T  /‚p  sT  /‚psT/‚pƒM‚Tƒ/‚p_‚‚i.‚pƒ\‚‚‚‚eƒ/‚pQ‚ ‚T/‚p  N‚ ‚T  /‚p  L ‚T  /‚pL‚‚‚T/‚p‚L‚‚‚‚‚T‚/‚pd‚‚‚‚k/‚pf‚‚k/‚p k/‚p k/‚pmk/‚pm k/‚p /‚p /‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚p/‚v/‚v5‚v5‚v5‚v5‚p.‚P.‚\.‚P.‚O.‚Oƒƒ.‚O„~„.‚O‚}‚.‚N‚{‚.‚N‚y‚.‚N‚w‚.‚N‚yz‚.‚M‚xy‚.‚M‚ wx ‚.‚M‚ vw ‚.‚ L‚ m ‚.‚ ‚ ‚ k ‚.‚ ‚‚‚ i ‚.‚ ‚‚g‚.‚ ‚!‚qr‚.‚   ‚pq‚.‚  ‚op‚.‚ ‚‚no‚.‚ ‚‚‚]‚.‚ ‚‚[‚.‚‚"‚+‚_‚.‚‚O‚]‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚V‚.‚‚O‚‚V‚.‚‚O‚‚V‚.‚‚O‚‚V‚.‚‚ ‚-‚‚jj‚.‚‚!*‚‚jj‚.‚‚"&‚‚jj‚.‚‚# "‚‚jj‚.‚‚$ ‚‚V‚.‚‚%‚‚V‚.‚‚&‚‚V‚.‚‚'‚‚V‚.‚‚( ‚‚jj‚.‚‚) ‚‚jj‚.‚‚* ‚‚jj‚.‚‚+ ‚‚jj‚.‚‚,‚‚‚V‚.‚‚-‚‚‚V‚.‚‚.‚‚V‚.‚‚/‚ ‚‚‚V‚.‚‚<‚‚‚jj‚.‚‚>‚‚‚jj‚.‚‚@‚‚jj‚.‚‚A‚ ‚‚jj‚.‚‚C‚ ‚‚V‚.‚‚E‚‚‚V‚.‚‚G‚‚V‚.‚‚H‚‚‚V‚.‚‚J‚‚‚jj‚.‚‚L…‚jj‚.‚‚N‚jj‚.‚‚O‚‚jj‚.‚‚O‚V‚.‚‚O†‚V‚.‚‚O‚‚‚V‚.‚‚O‚‚V‚.‚‚O‚‚‚jj‚.‚‚O‚ ‚ ‚jj‚.‚‚O‚ ‚ ‚jj‚.‚‚O‚ ‚‚jj‚.‚‚O‚‚V‚.‚‚O‚‚‚V‚.‚‚O‚‚‚V‚.‚‚O‚…V‚.‚‚O‚jj‚.‚‚O‚‚jj‚.‚‚O‚hj‚.‚‚O‚†fj‚.‚‚O‚‚Q‚.‚‚O‚‚‚O‚.‚‚O‚‚‚M‚.‚‚O‚‚ ‚K‚.‚‚O‚‚ ‚]j‚.‚‚O‚‚ \j‚.‚‚O‚‚‚Zj‚.‚‚O‚‚‚Xj‚.‚‚O‚‚‚B‚.‚‚O‚‚A‚.‚‚O‚‚‚?‚.‚‚O‚‚‚=‚.‚‚O‚‚‚Oj‚.‚‚O‚‚Nj‚.‚‚O‚‚‚Lj‚.‚‚O‚‚‚Jj‚.‚‚O‚‚ ‚4‚.‚‚O‚‚"‚2‚.‚‚O‚‚$1‚.‚‚O‚‚%‚/‚.‚‚O‚‚'‚Aj‚.‚‚O‚‚)‚?j‚.‚‚O‚‚+>j‚.‚‚O‚‚,‚<j‚.‚‚O‚‚.‚&‚.‚‚O‚‚0‚$‚.‚‚O‚‚2#‚.‚‚O‚‚3‚!‚.‚‚O‚‚5‚3j‚.‚‚O‚‚7‚1j‚.‚‚O‚‚9‚/j‚.‚‚O‚‚;.j‚.‚‚O‚‚<‚‚.‚‚O‚‚>‚‚.‚‚O‚‚@‚‚.‚‚O‚‚B‚.‚‚O‚‚C‚%j‚.‚‚O‚‚E‚#j‚.‚p‚‚G‚!j‚‚‚p‚‚I‚j‚‚„ ‚p‚‚K ‚‚… ‚p‚‚L‚‚‚ ‚p‚‚N‚‚  ‚p‚‚P‚‚  ‚p‚‚Rj‚‚… ‚p‚‚S‚j‚‚„ ‚p‚‚U‚j‚‚‚p‚‚W‚j‚‚‚p‚‚Y{‚.‚p‚‚Z‚y‚.‚p‚‚\‚w‚.‚+ 1‚‚^‚u‚‚+ 1‚‚`‚j‚‚+1‚‚bj‚ ‚+1‚‚c‚j‚‚‚1‚‚e‚j‚ ‚‚‚1‚‚g‚E' ‚‚‚‚‚1‚‚'+‚ ‚ ‚ 1/‚‚‚ ‚nf‚ ‚ 1‚‚j‚d‚‚‚‚1‚‚jc‚‚‚‚‚‚1‚‚jj‚.‚‚‚‚1‚‚jj‚.‚‚1‚‚v‚]‚.‚+1‚‚x‚[‚.‚+1‚‚V‚.‚1‚‚V‚.‚ 1‚‚jV‚.‚p‚‚j‚T‚.‚p‚‚jS‚.‚p‚‚jj‚.‚p‚‚V‚.‚p‚‚‚M‚.‚p‚‚ ‚K‚.‚p‚‚V‚.‚p‚‚jj‚.‚p‚‚j#F‚.‚p‚‚j$‚D‚.‚‚O‚‚j&C‚.‚‚O‚‚V‚.‚‚O‚‚V‚.‚‚O‚‚‚=‚.‚‚O‚‚‚;‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚j36‚.‚‚O‚‚j4‚4‚.‚‚O‚‚"3‚.‚‚O‚‚V‚.‚‚O‚‚V‚.‚‚O‚‚'‚-‚.‚‚O‚‚j=‚+‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚jC&‚.‚‚O‚‚0‚$‚.‚‚O‚‚2#‚.‚‚O‚‚V‚.‚‚O‚‚V‚.‚‚O‚‚jK‚‚.‚‚O‚‚jM‚‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚?‚.‚‚O‚‚@‚‚.‚‚O‚‚B‚.‚‚O‚‚V‚.‚‚O‚‚j[‚.‚‚O‚‚j\ ‚.‚‚O‚‚j]‚ ‚.‚‚O‚‚jj‚.‚‚O‚‚V‚.‚‚O‚‚O‚.‚‚O‚‚P‚‚.‚‚O‚‚R‚.‚‚O‚‚jj‚.‚‚O‚‚jjƒ‚.‚‚O‚‚jjƒ‚.‚‚O‚‚jj‚‚.‚‚O‚‚V‚.‚‚O‚‚V‚.‚‚O‚‚V‚‚.‚‚O‚‚V‚.‚‚O‚‚jj  ‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚V‚‚.‚‚O‚‚V‚.‚‚O‚‚V‚.‚‚O‚‚Vƒ.‚‚O‚‚jj‚.‚‚O‚‚jj„,‚‚O‚‚jj†*‚‚O‚‚jj‚‚(‚‚O‚‚V‚'‚‚O‚‚V‚‚%‚‚O‚‚V‚ ‚#‚‚O‚‚V‚ ‚!‚‚O‚‚jj‚  ‚‚O‚‚jj‚‚‚‚O‚‚jj‚‚‚‚O‚‚jj‚‚‚O‚‚V‚‚‚‚O‚‚V‚‚‚‚O‚‚V‚‚‚‚O‚‚V‚‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚V‚.‚‚O‚‚V‚.‚‚O‚‚V‚.‚‚O‚‚V‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚jj‚.‚‚O‚‚V‚.‚‚O‚[‚.‚‚O‚[‚.‚‚O‚W‚.‚ J‚kl‚.‚ J‚lm‚.‚ K‚ƒjn‚.‚ K‚jo‚.‚ K‚\‚.‚ K‚]‚.‚ L‚^‚.‚ L‚_‚.‚ L‚ jt ‚.‚ L‚  ju ‚.‚M‚  jv ‚.‚M‚  jw ‚.‚M‚  d ‚.‚N‚ e‚.‚N‚f‚.‚N‚g‚.‚N‚j|‚.‚O‚j}‚.‚O‚j~‚.‚O„j„.‚Oƒlƒ.‚Pm.‚Pn.‚\r.‚pr.‚ j5‚ j5‚ j5‚ j5‚ j5‚ j5‚qj5‚qj5‚qj5‚qj5‚qj5‚qj5‚qj5‚qj5‚qj5‚qj5‚q‚j5‚qƒj‚q„j‚q„j‚‚qj‚‚qj‚‚qj ‚ ‚‚qj ‚ ‚qj ‚‚qj ‚…‚qj ƒ‚q j ƒ‚q  j ‚‚‚q  j ‚‚‚q v ‚‚q w ‚'‚q x5‚q y5‚qz5‚q{5‚q{5‚qv 0‚qx 0‚qy 0‚qz 1‚q„{ 1‚q„| 1‚qƒ} 1‚q‚0 :2‚q1 ;2‚q1;2‚q1;2‚q ‚‚ ;3‚q ‚‚‚ <3‚q ‚‚‚‚‚ <3‚q‚ <4‚q ‚ <4‚| =4‚|‚‚=4‚|‚‚‚‚=‚5‚}‚‚‚=‚5‚‚‚>5‚$‚>5‚$t‚‚t‚ t‚-‚-‚-‚-‚-‚#¬¬lpÈéOýY‡üY‡ÿ½·ÿ»·ÿ²ÿ›²ŠY©ˆY©ÿªÄÿ¨Ä—Y¯–Y®îY}ìY|ÿq¬ÿp«Ð_ÑÏ_ÐzY¢yY¡ÿ•±ÿ“±tYžrYÿ”Çÿ’ÇmY™lY˜Øeà×eßÿY–ÿY•ÿǸÿĸÉ\ÆÈ\Å„Y§‚Y¦ÿ‡Éÿ…ÉÿÅÿ›Æ£Y³¢Y³dY“bY‘ÿÈÿ‹Èÿ¼ÁÿºÂÿrôÿqóÿh©ÿg¨þ|ÿþ{ÿÿZžÿZY¥}Y¤ÿÇ¿ÿÆÀÿÂÀÿÀÁÜYvÙYué~ÿè}ÿªY¶©Yµ·Y»¶Yºÿiçÿiæÿ°µÿ®µ’Y¬Y¬ÿißÿiÜÍ]ËÍ]ÊjY—gY•Æ[ÄÅ[Ãÿlíÿkìÿ~®ÿ{­ÿ¹·ÿ¶¶×eÞÿ‹°ÿˆ¯ÿzÊÿyËúY…ùYƒÿš²ÿ‚Éÿ€É¼Y½ºY¼àqòàpñÿx­ÿv­ÿc§ÿa¦ÿ°Ãÿ®Ãÿ¸ÿ¿·ÔbÙÓb×õY€óYç{þæzþÝmëÝkêÿY‹ÿY‰ÿoÏÿnÐãvøãt÷ì‚ÿëÿÿ·ÂÿµÂý…ÿþƒÿÿ\¡ÿ[ ÿtÍÿrÎÿ¥³ÿ¢³ÿqòÿ¥Åÿ¢Å†Y¨Ï_ÏŸY²Y±ÿnª¡Y³ÿ™Æ÷‹ÿõ‹ÿÿYÿYµYºÀZÀ¿Z¾æYzãYxÿ±ÿ°êY{xY ÿY”¯Y·­Y·Y¦÷Yƒÿi×ÿhÔÿ…¯ÿ‚¯üŠÿû‹ÿ¹Y¼ÿÄÀpY›ÖdÝÿ‰ÈÿvùÿtöÿÇÿ¾Áÿ¬µÿpòåxýÿ˜²¨Yµ”Y­ÒbÖÏ^Íÿe¨ÿiäÛiçÚhåßoðÿjêþ‚ÿÿZ ÿmÐÿxÌÿ¬Ãÿ`¥ÿ³Ãþzýê€ÿâsõË\ÈñY~ÿʹÿɸ›Y°òŠÿðˆÿ÷YvYŸÿ´µÿt¬Y«ÿ}ÊÃZÂÿY›ÕYs¦Y´ÿŸ³ÿiÚ²Y¹ÿ˽ÿ˼ÿ–ÇÞnîÿY’ÿŸÅ¾Y¾ÕdÛàYwù‹ÿåwûÑaÔÿlªÿvÍÿoðÙfãÿkÐÿiÒþ€ÿÿ©´ÿ^£ÿiâÿxûý‡ÿÿY™î†ÿ?ÿÿÿÿÿÿÿÿÿÿ ÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþ ÿþÿÿEÿ+þ!ÿþÿnÿþþ ÿþÿGÿ>þ/dðdðƒ}ðð}„¨óóþ¨NI‚VIV‚ŒŒ>þÿ-ÿ%þ‚!!Ò†ÑããÑãÑ ãˆ==??11ËË)‚//dð…}}ð}}¨þ¨‚N¨NI‚VIV„ŒŒ´Œ´‚ùù7„…7…7…‚¬…¬„­­–­–ƒÔÔ–Ô‚üü$þÿ ÿ þ]Š‚··Ø‚!ƒÒÒãÑãÑ ã?‚11ˈË))/d‘ðð`dð}ðð}ð}ð}}¨óþ¨N‚INIV„ŒVŒŒ´„ù´7ù7…¬­‚–­–Ô„ÕüüÕÍ‚v€v¹…ÃiÃÃÁþxÿþ‚mm¿ïkƒXX«]‚Š…·Ø·Ø0‚!!Ò„ÑããÑ ã„==??1‚ˈ)))ƒ//&d‡ððdðð}ð}ƒ¨¨þ¨ƒNN¨NƒIINIVŒ´„ù7ùù7‚…7…¬‚­­–Ô…ÕÕüÍÕÍvˆ¹¹ÎÃæÃæÁ„ssQÏþlÿ þ9‚†Æ†‚m†m¿ï„kïkkX«]…Š‚··ØŽ0!!ÒÒãÒÑãÑãÑ ã?‚11Ë)/dƒððdð‚}ð}ƒ¨óþ¨NI‚VIVŒ´ù7‚…7…ƒ¬……¬‚­­–Ô„ÕÕüÕ€Ív‚¹¹„ÎiÃæÁ\sω##TUfTfœœf‚šš þbÿ þ9ƒ£ÝÝ9‚ÆƆm¿ïk„XX««]„Š·‚Ø؇!!ÒÒãÒÑãÑ ãƒ=??1†ËËË‚))/„d&ddð…dðð}ð}ƒ¨óþ¨ƒNN¨N‚INI„VIVVŒ´ù7ƒ……7…¬­–ŠÔ–Ô–ÔÔÕÕüÍ€vBvv¹ÎæÃÃÁæÁ‡\sss‹QQÏÏU#Ü#›ÜUfšDþÿþSÿ þz£9‚ÝÝ9‚†Æ†‚m†m‚¿¿ïkƒXX«]ˆŠŠ·…Ø؃!†ÒÒãÒãÑ ãƒ=??1‡ËËË)/dð‚}ð}ƒ¨óþ¨NIVŒ´‚ùù7‚…7…‚¬…¬ƒ­­¬–ÔÕ€‚vBv‰¹¹ÎÎÃiææÁsψU#ÜÜTffœfš‚âD þ’ þMÿ þ‚zz£9£‚ÝÝ9Ɔ‚m†m‚¿¿ïk…XkXX«]ˆŠŠ··Ø0!!ÒÒãÑÑãÑãÑ ãƒ=??1‚ËË‚)/dð‚}ð}„¨¨óþ¨ƒNN¨NI‚VVŒ´ù7‚…7…¬­–Ô‚ÕÕ€Bƒvv¹„ÃiÃæÁ†±ss‚QQψ#TTfTTœœfš þ‚¼¼ þIÿþƒ§§z„£z£z£9Ý9‚ÆƆm¿ï„kïkkXƒ«]]„(ŠŠ·Ø‡!!ÒÒãÑÑ ãƒ==?1Ë)‚/&dð…`ðð}ð}ƒ¨óþ¨NI‚VIV‚ŒV´„ù´ùù7‚…7…¬…¬­–ÔÕ€ƒvvBv„ææiæÁ„\êsŽQQÏÏ##TTffUfœfšƒ¥Dšþ…ÚÚ:þHÿþƒu§§z £…9££ÝÝ9‚†Æ†‚m†m‚¿¿ï‚kïkX«‚]]‰ŠŠ·Ø·ØØ!ƒÒÒãуããÑãƒ=??1Ë)/†&ddðddð‚}ð}…¨¨þ¨¨NIV‚ŒŒ´‚ùù7… ¬‚­­ –„ÔÔÕÕ€‚vBv¹„ææÃæÁƒ\sÏTƒÜfœfš‚¥âþ„;;×þÿ1þÿ‰þþu uu§§z£‚9£9‚ÝÝ9‚ÝƆ‚m†m‚¿¿ïk…X««]]Š‡·ØƒØ0!†ÒÒÑããÑ ã…==??1Ë)„//&&dˆððdð}ð}ð}ƒ¨}óþþƒ×þþÿþ)ÿ@ýý uu§§§zz‚£z£„9£9Ý9ƒ†Æ݆ƒmm†m‚¿¿ï„kïkkX«]†ŠŠ··؇!!ÒãÒуããÑ ã?„11ËË)‚/ˆ&ddðdððdð‚}ð}ƒ¨ó¨þ þ†;××ýþýÿ‚þþ'ÿ†Þ@@ýý u§z£‚9£9‚ÝÝ9‚†Æ†‚m†m¿ïkXƒ«]]ƒ(Š·Ø!‚ÒãÑãÑ ã?‚11Ë„))/&dð‚}ð}„¨¨óþ¨‚N¨NIV„ŒŒVŒ´ƒ³´ù7‚…7…ƒ¬……¬­–ÔÕüÍv„¹ÎÎÃÁê‚îQÏŒ#ÜUÜÜœfœfššfš„DDšDþ†::;×;ý‚,ÿ‚þþ(ÿ‡@@ýý u§z„£z£z£†9££99Ý9‚ÆƆm¿ïkïkkXX««]]](Š‚··Ø!‚ÒãÑ ãƒ=??1‚ËË‚)‚/‚ddð`ðƒ}}ð}ˆ¨óþ¨©¨N¨N‚INI‚VVŒ´„³7ùù7‚…7…¬­–‚Ô–Ô„üüÍÕÍv„¹ÎÎÃÁ—ÁêêêsQQÏÏ#ÏÜUÜÜœUf†šfššâšD þÚ‹:;;×ýý,ÿþ(ÿ‹Þ@@ýý uu§§z £†9££Ý9Ý9‚†Æ†‚m†m¿ïk…X««]]‚ŠŠ·Ø‚!‰ÒããÑãÑããÑã…=??11Ë‚)‚/dð‰}}ð}¨¨ó¨ó¨NIV‚´Œ´ƒù7ù7…¬ƒ­¬­–Ôü‚Í€Ív†¹ÎÎÃÃxˆÁÁêêrêŽQQÏ##ÜUÜUÜfœffš…DššD¥ þ¼Ú„::;×ýƒS,ÿþ)ÿƒ@@ý§z‚£z£9ƒ£ÝÝ9Ɔm‚¿¿ïkXƒ«]]ŒŠŠ··Øƒ0!ÒƒÑãÑ ãƒ=??1Ë„)‚/‡&/ddððdð‚}ð}‚¨ó¨‚N¨NIV‚ŒŒ´„ù´ùù7‚…7…¬ƒ­–­–‚Ô–ÔüŒ€€ÍÍvÍvv¹ÎÃÁ…êrrs‰QÏÏ#TU#Üfœfš…¥DD¥Dþ’ ‚ÚÚ‚:;ý„,ÿþ(ÿ„Þ@@ý†§zzƒ££z£9Ý9‚ÆƆ‚m†m¿„ïïkïkX«„]] ·Ø‚!‰ÒÒãÑÑãÑãÑãƒ==?1Ë‚)„//d&dð‚}ð}„¨¨óþ¨‚N¨N‡INIIVIVŒ†V´Œ´´ù7‚…7…‚¬…¬‚­­–Ô…ÕÕüÍ€Ív„¹ÎÎÄÁxÁÁês‚QQÏ‹ÜÜUÜUÜœffšfš‡¥DDþþ**’‚ Ú‚ý,ÿþ)ÿƒ@ë ý§‚zz£9£ƒ9ÝÝ9ƒ†ÆƆ‚m†m‚¿¿ïƒkkïk‚X«]‰ŠŠŠ··Ø؇!!ÒÒããÑ ã…=??11ˆË)‚/d„ðdð`ð‚}ð}ƒ¨óþ¨NIV„Œ´ŒŒ´7‚…7…„¬…¬…¬„­­–­–Ô–Ô–ÔÔÕüüÍüÍÍvÍvˆ¹¹ÎÎÃÃÁÃÁŒêêsêsQÏÏ#“UÜÜfœœffššfš¥DD¥D¥D*’ Úý†;×,ÿþ)ÿ‰Þ@@ §uýz£9Ý9†m¿ïkX«]†ŠŠ··Ø‚!Ò‚ãÑãÑã?1˄Ɉ))///d„ðdð}ð‚}ð}ƒ¨óþ¨NIV‚ŒŒ´„77ù³7‚…7…‚¬…¬­–ÔÕüÕÍÍ€ÍvvÍvvÎÃÁ…êêrsQψUÜUÜUÜfœfš‹¥D¥*DD**’*’ Úý‚;;ׄS,ÿþ*ÿƒ@ë ƒuu§ ý £9ƒ†ÆƆm¿ïkˆXX««ŠŠŠ··ØØ0!†ÒãÑÑãÑ ã†==??11Ë)‚/‡&d&dðddðŠ}ð}ð}}¨¨óþ¨N‰IINIVVIVVŒ´ù7…¬ƒ­–­–‚Ô–Ô„üüÍüÍv¹¹ÎÃæÃÁæÁÁÁêsQÏÏTÏUÜÜfœUffš†Dšš¥DD*’ ý‰;;××,ÿþ)ÿ‹Þ@@ §u§§ ý£9£9‚Ý9†‚m†m¿…ïïkïïk†XX««]]„ŠŠÉöØ„!!Ò‡ãÒÑãÑãÑã?‚11Ë)‚/dƒððdð}…¨ó¨¨©¨NIVŒˆ´Œ´´7´7ù7‚…7…¬–ÔüÍvˆ¹ÎÎÎÃæxÁ‚ssŒÏQÏÏÜUTÜÜUfœfšâ¥ƒâDD* ýÚ::;;××R,ÿþ*ÿƒ@ë …u§u§§z£ý£9ƒ†ÆƆm‚¿¿ïk‹XX««]]Š„··ØØ!Ò‚ãÑ ã…=??11˃))/&ƒdðdð‚}ð}…¨¨ó¨©¨N‚INIV‚ŒŒ´7…¬…¬‚­­–ƒÔÔ–Ô„ÕüÍÕÍvŠ¹ÎÎÃæÃæÁÃÁ…rsrssχÜÜUÜÜfœfš‚¥¥Dýƒ ¼Úƒ:;;׃,ÿþ*ÿŠÞ@@ u§§z„£z££ ý9†m¿ïŠkïkXkXX««]‚ŠŠÉ·ØØØ!!Ò†ãÑÑããÑã?‚11Ë‚))ƒ//&dðƒ}}ð}ƒ¨óó¨‚N¨NIƒVIVŒ´‚³´7…¬ƒ­–­–ÔÕÍ€€ÍÍvÍvv¹ÎÎiÃÁ†sssψÜUfUTf›fš ý†*’’ ¼Ú…:;;ׄR,ÿþ*ÿƒ@ë ‡§u§§z‚£z£ý†‚m†m¿ïŠkkïkkXX«]]ˆŠŠ··Øƒ!Òã„??11Ë)/‡&&ddðddð}‚¨ó¨NI‚VIV‚´Œ´„³77ù7…¬‚­­–ƒÔÔ–Ô‚ÕüÍv…¹¹ÎæÃÁêsÏ‚TTÜfý‚**’† Ú ÚÚ;…×,ÿþ*ÿ„Þ@@ ƒu§uzƒ££z £Ýý‚mm¿ïkXƒ«/]‚Š†··ØØ0!ƒÒÒãÒ‚ãÑ ã„?0?1Ë‚)…//&dƒððdð‚}ð}ƒ¨óþ¨„N¨NNIV„ŒVŒŒ´‚7³7…¬…¬­–Ô…ÕÕüÕüÍv¹„ÃiÁæÁ†êêrs‚ÏÏýšD*’ Ú…;:;ׄ,,ÿþ+ÿƒ@ë §zƒ££z£9ƒ£ÝÝ9†ýk†XX««]]„ŠŠ··Ø‚0!‚ÒÒã‚=?1Ë‚)‚/d‚ðdð}„¨¨óþ¨‚N¨NI„VŒVŒ´‚7³7ƒ…77…¬­–Ô‚ÕüÍv‡¹ÃæiæÁsý„ffšfšDâD*‰’’ ¼M ÚÚƒ;;ׂ,ÿ þ+ÿ„Þ@@ „u§u§z £9Ý9ƒÝÆƆƒm†mýƒ„ŠŠ··Ø‚!ãÒ‚ãÒ ã?‰11ËË)‚/dˆðdðð}ð}ð}ƒ¨óþ¨NIV…ŒŒVŒŒ´‚7´7…‚¬…¬ƒ­¬­–‚Ô–Ô…ÕÕüÍÕÍv‚æiý„TÏÜÜfƒœffšD*’ƒ ¼¼Ú„::;…,,ÿ þ+ÿƒ@ë u§zƒ£zz£9£‚9Ý9‚†Æ†m‚¿¿ïýØ„00!Ò†ããÒããÑ ã?1‚ËË‚)’//d&ddðdððdðð}}ð}ƒ¨óþ¨‚N¨N‚INIƒVIVŒ´ƒ³7ù7‚…7…¬‚­­–ÔÕÍvý‚ssÏÜT‚fœfšD*†’’ ¼¼ Ú†::;ׂ,ÿ þ+ÿ„Þ@@ ‡u§§§zƒ££z£9ƒ£9Ý9ÝƆƒmm†m¿ïkƒXX«ýÒ‚ãÒãýãƒ?11Ë„)ƒ/&&d‚ðdð}…¨¨ó¨ó¨N‹IINIIVVIVŒŒ´„³´7´7…¬‚­­–‚ÔÔýƒÁxÁ„s\ssψTTffTÜffš‰ââšD¥DD**’… ¼Ú¼Ú:;…S,ÿ þ,ÿŒ@ë u§u§z‚£z£„9£ÝÝ9ƒ†ÝƆm‰¿¿ïïkïïkkXƒ«]]‚ŠŠ ýË‚)‡/&/ddðdð‚}ð}¨‚N¨NI„VVŒVŒ´ƒ77ù7‚…7ývƒ¹æ„ÃÁxÁ‰sssÏÏT„›fœœfš‚DšD*…’ ¼ Ú†:;;ׂ,ÿ þ,ÿ„Þ@ž ƒu§§z„£z£z£9Ý9ƒ†ÆƆm‚¿¿ïk‡XX«]]ŒŠŠ··ØØØÿ‚þþLÿ‹Þ@ §u§§z£‡þ£99£9£9†‰mm†mm¿¿ïïkX«]](ŠÉ·ØØ0!!Ò‚ãÑ ã1˃)…//&dð}‡¨¨ó¨¨N¨NI†VŒŒIŒŒ´7…¬‚­­–Ô‚üüÍvΊÃÃÁxÁ\±s‹ÏÏ##UÜfœœffšâ‚DD*’’¼ ÚMÚ:;:××,>ÿ‚þþMÿ…@ §z£‚þ£9‚†Æ†m‚¿¿ï†kkX««]Šƒ·Ø؈!ÒÒãÑããÑã…??11Ë))//ddð`dð}¨N†INIIVIŒ´7‚…7…¬­–†Ô–ÔÔüÕÍv·æÃxÁÂ\\s‚Ï…ÜÜUÜœfššâDDâDD**’’Ó ¼Úˆ:;××,?ÿ‚þþMÿƒÞ@ ‚§§z£‚þþ9†„mm†m¿ƒïkïk„X««]ŽŠŠ··Ø0!!ÒÑÒãÑãƒ?11ˈ))/„ddð`ð‚}ð}‚¨þ¨ƒN¨NIƒVŒVŒ„´´7ù7‚…7…¬­–ÔÕü‚ÍÍv¹ÎÃÁ‚\s‹ÏÏ##UfUfœš‚ââD*†’Ó ¼¼Ú‡;;××,?ÿ‚þþNÿ‹@ §u§§z£þ9†’mm¿mm¿ï¿ïkïkXX««]]ƒŠŠ·؈!!ÒãÒÒ ã‹=011ËË))/‚ddðˆ}ð}¨¨þ¨¨N„IIVVŒ´‚ùù7…ƒ¬¬…¬–ÔŒÕüüÍ€ÍÍvv¹ÎÇÁÁ\ssφU#UTfœfƒššâD‡**’’¼’¼Úˆ:;;×,@ÿ‚þþNÿˆÞë u§§z£…9£þþÝ9†mŠ¿¿ïïkkïkX«]ˆ(ŠŠ·Øƒ!!ÒãƒÑãÑã†=?11ˡ))//d`ð}‚¨þ¨ƒN¨NI…VIVŒŒ´‚ùù7…‚¬…¬­–Ô‚üüÍv΂æÃÁ‚\\s‚Ï#ÜUfœœfššfšDââD*‚’’¼‡:;××,@ÿ‚þþOÿ…@ §‚z£9þ9†m¿‚ïïk‰X«]]Š·…ƒ!!Ò ã=1ˇ))/„dð``ð}ƒ¨óþ¨NIVŒ´„7ù77…¬–Ôü‚ÍÍvΊÃÁÃÁÁ\±ssŠÏÏ#ÜUUÜœffšâD†**’’ ¼Úˆ:;;×SAÿ‚þþOÿˆÞë u§§z£9„þþ99†ƒ¿†m¿ïk˜X«]]ŠŠ·ØØ!!ÒÒãÒÑãÑã1‚ËË…))/…ddð``ð}¨NIV‚ŒŒ´‚7³7‚…7…¬–‡ÔÔ–ÔÔüüÍ„vv¹ÎÊÁÁ\±ssîχ#UÜfœœfšâD*‚’’¼ŠÚ;;××,Aÿ‚þþPÿ…@ §‚z‚£z£…9Ý9þ9†ˆ¿¿mm¿¿ïïk‰XX«]Š·…ØØ0!Ò ã1†ËË)/dð‚}ð}‚¨ó¨NIVŒ´‚7ù7…¬–Ô†ÕüüÍ€Ív…¹¹ÎÃÃÁ…Â\\ssÏU‚Üœf„ššââD*’ÓÓ¼ÚÚ:;;××SBÿ‚þþPÿˆÞë u§§z‚£z£9‚þþ†…m†m¿¿ïk„X««]Ž(Š··ØØ!!ÒãÒ ã?1‰Ë))/d`†ðð}}ð}¨N„INIIVŒŒ´´³7³77…7…… ¬–ÔƒÕüüÍv΂ÃÃÁ‚\s‚Ï‹#ÜÜfœœfšfšâD*‚’’¼‹ÚÚ:;××,Bÿ‚þþQÿˆ@ u§§‚zz £‚9Ý9þ†„m¿¿m¿ï“ÙkkX««]Š··ØØ!Ò…ãÒããÑã‰=11ËËË)/dð}ó¨NIVŒ´7‚…7…¬–Ô‚üüÍvŒÎÎæÃæÁÁ\±\sχ#UÜUfœfšâ”DD**’*Ó¼ ¼ÚÚ:;;××,Cÿ‚þþQÿ‡Þë u§z£9£9ƒ†þþ†m„¿¿ïïk–X«]]ŠŠ·ØØ0!ÒÒÑãÑã?1Ë…))/„ddðdð}ƒ¨¨þ¨NIƒVVŒ´³7…¬–ÔŽüüÍüÍÍvv¹ÎÎÃææÁs‚ÏÏU‰ÜœœffššââD…**’’Ó¼ŠÚÚ:;××,Cÿ‚þþRÿ‡@ u§z£ƒ99£9…݆†þ†m‚¿¿ï‡kÙkXX«]„(Š··Ø!ÒãÑã…=?11Ë)‡//dd`ð}ˆ¨þ¨¨N¨NNIV´ù7†…7……¬…¬­–‡ÔÔ–ÔÔüüÍvŽÎÎææÁÁ\\±ssφ#UUÜfœfšâ‚DD*’Ó’¼¼Ú::;××SDÿ‚þþRÿˆÞ u§§z‚£z£‚9£9††ÆƆþ†m¿‚ïïk†XX«]]†Š··Ø0!Ò ã=1‰ËË))/d`ð‰}ð}}¨¨þ¨¨NIVŒ„´´7´7…‚¬…¬–Ô†ÕÕÍ€ÍÍvƒ¹ÎÎæ†ÁÁ\ssˆÏÏUUfUœfšƒâDâDƒ**Ó¼Úˆ::;×,Dÿ‚þþSÿ‡@ §§zƒ££z£ƒ99£9†‡þþ¿mm¿¿ïŒkkX«]](ŠŠØ!„ÒãÒÑ ã1‚ËË„))/ƒdðdð}‚¨þ¨NI„VVŒŒ´‚7³7…¬‚­­–Ô‚Õü̓vv¹ÎÃÁ‡\\ssÏŒ#UUÜœœffššââD*‚’Ó¼„Ú;:ׂSEÿ‚þþSÿŠÞ u§§z£9£9Ɔ‚þm¿‚ïïkƒXX«…ŠŠ·Ø…!!ÒÒ ãƒ?11ˇ))/‚ddð}ó¨NI„VVŒŒ´³7‡……7……¬…¬–Ô…ÕüüÍÍvŠÎÎÃææÁÁ\\±sφ#UÜÜfœfšâ‹DD**’’Ó¼¼ÚÚ†;××,Eÿ‚þþTÿ…@ §‚zƒ££z£‚9Ý9Š†Æ††mmþþ¿¿ïk‡XX«]Š‚··†!!ÒãÒÑ ã„?11ˇ))//d‚ðdð‡}ð}}¨¨ó¨NI…VIVVŒ´‚7³7…¬–Ô…ÕüÍ€Ív…¹ÎÎææÁ„\\±sφU#fUœœšâD‘**’’Ó¼¼ÚÚ::;××SFÿ‚þþTÿŠÞ u§z£9†m þ¿¿ïïkïkkX«]](Š··Ø0!!ÒÒãÑÑãÑã?1‹ËË))//dð}„¨ó¨¨N‡IIVVŒVŒ´7‚…7…¬­–ÔüÍvΉææxÁÁ±\ssŒÏÏ#ÜUÜfœffššâ‚DD*†ÓÓ¼ Ú†;××,Fÿ‚þþUÿ…@ §‚z£9‚ÝƆm„þþïïk”XX]]ŠŠö·ØØ!!ÒãÒ ã„=11ˇ))//dˆðdðð}ð}}¨NI‚VVŒ„´´³³7‚…7…¬‚­­–ÔƒÕüÕÍv„¹ÎÎæÁsχ#ÜUÜUffš‹âDâD*D*’’Ó¼Úˆ::;××SGÿ‚þþUÿŠÞ u§z£„9£9£9ƒ†ÆƆm„¿þïïk„XX«]ŠŠ·ØØ!!ÒãÒããÑã=1ˇ))//d„ð`ðð}‚¨þ¨‚NNI‚VIŒ‚´´³‚77…‚¬…¬‚­­–Ô…ÕüÍüÍv~ΈæÁÁÂ\\±sÏ…#UfœœfƒšââD*‚Ó’¼ŠÚÚ:;×,Gÿ‚þþVÿ‡@ §§z‚£z£ˆ9£99Ý9†Æ†m„¿¿þþk‘XX«]](ŠŠ·ØØ0!!Ò ã1ˇ))//d‚ðdð}„¨þ¨¨NIV„Œ´´³7…¬‚­­–Ô‚ÕüÍv„ÎÎææÁ„±\ss‰ÏÏ#UÜÜœœfš…ââDâD*ŽÓÓ¼¼ÚÚ:;;×SHÿ‚þþVÿŠÞ u§§zƒ££z£9†£†Ý9ÆƆmž¿¿ïïþkkXX«]](ŠŠ··Ø!!ããÒããÑã1‹ËË))//dð}‰¨¨þ¨¨N¨NNIVŒ„´³´³7‚…7…¬„­­––Ô‚üüÍv΂ÃæÁ„±ss‰ÏÏ##ÜÜœffš‚ââD„**’’¼ŠÚÚ:;××,Hÿ‚þþWÿ‡@ u§§z£‚9£9†m›¿¿ïïþþkXX]]Š··ØØ!ÒÒãÑ ã„?11ˇ))//d…``ð}ð}‚¨þ¨NIŒ„´´7³7…‚¬…¬‚­­–Ô„üüÍÍv‡ÎÎæÃÁÁÂ\„ssÏ…ÜÜUfœfšâ‚DD*Ž’Ó’¼ÚÚ::;××SIÿ‚þþWÿ…Þ §‚z£ 9†m•¿¿ïïkkþXX«](ŠŠ·Ø!ƒÒÑÑ ã?11ËÉ))//dð}…¨¨ó¨¨N‹IIVVŒÄŒŒ´´³7…‚¬…¬‚­­–ÔƒÕüüÍv„ÎÎÃÃÁ†\\ssÏ‹#TUfUffššââD„**Ó’¼ŠÚÚ;;×,Iÿ‚þþXÿ‡@ u§§z£‚9£9†m„¿¿ïïk•þX«]ŠŠ··Ø!!ÒãÒÑã=1„ËË)‹//d/dd``ðð}¨NIVŒƒ´³´7„…7……¬ƒ­¬­–Ô‚ÕüÍv…¹¹ÎÃæÁ„\±ss‡ÏÏ#ÜÜTœfâ‚DD*ƒÓ¼¼Ú‡:;;××Jÿ‚þþXÿ‡Þ §§z‚£z£‚9£9†m„¿¿ïïkþþ«]ŠŠ··ØØ!…ÒÒãÑÑãŽ=0ËËÉ))/d…ðð`ðð}‚¨ó¨N¨NNIIVVŒÄŒŒ´´7´7…‚¬…¬­–‰Ô–ÔÕÕüüÍÍvŽÎÎÃææÁÁ±ssÏ‹##fœœfššfââDˆ**’’Ó¼ ¼†;;×,Jÿ‚þþYÿ‰@ uu§z£‚9£9†m„¿¿ïïk…XXþ]ŠŠ··ØØ!!ÒÒ ãˆ==11Ë)ˆ/ddðd`ð…}ð}¨ó¨NI‚VVŒƒ´´ù7…‚¬…¬­–Ô‚üüÍvÎÃÁ‘\\±ssÏÏ#ÜUÜœœffâ’DD**’’¼¼ÚÚ:;××SKÿ‚þþYÿ‡Þ u§§z£‚9£9‚†Æ†‡m¿m¿¿ïïk‡XX«þþ(Š†·ØØ0!Ò‚ãÑã=1Ë‹))//ddð`ð}…¨¨þ¨¨NI‚VVŒ„´´7ù7…¬–†Ô–ÔÕüüÍv¹ÎÃæÁ±±ssÏ„#ÜUÜf„âšââD*‚’Ó¼‰Ú;××,Kÿ‚þþZÿ‡@ uu§z£‚9£9†m„¿¿ïïkX««]þ(Š··ØØ!!Ò‚ãÑã1‹ËË))//d`ð}‚óþ¨NI„VVŒŒ´ù7„……¬…¬–Ô…ÕüÍ€ÍvÎæ†ÁÁ±\ss‡ÏÏTÜfUœfâ’DD**’’¼¼ÚÚ:;××SLÿ‚þþZÿ‡Þ u§§z‚£z£ƒ9££9†m†¿¿ïïkkX‘]]þþ ··Ø0!!ÒãÒ ã‚11Ë))//ddð`ðˆ}ð}¨óþ¨¨N‚IIV‡Œ´´ù7³7…¬–ÔƒÕüü͉vv¹ÎÎÃÁÁÂ\‘ssÏÏ##UÜœffššââD*„’Ó¼¼Ú‡::;×,Lÿ‚þþ[ÿ‰@ uu§zƒ££z£9†m‚¿¿ïŒkkXX«]þŠŠ؈!ÒÒãÒÑÑã„=1ˡ))//d„``ðð}ƒ¨¨þ¨NIVŒ‚´´7…‚¬…¬–Ô‚üüÍvv¹ÎÎÃÃæÂÁ\\ssÏ‹#ÜUÜœffâšââDˆ**’’Ó¼ Ú…;××SMÿ‚þþ[ÿ‡Þ u§§z£9Ɔm„¿¿ïïk†X«]]Š‡·Ø0!Ò ã’=010Ë)//dd``ðˆ}ð}}¨ó¨¨NIVŽŒŒ´³ù77……7……¬…¬–†Ô–ÔÔÕüÍv‚ÎÎæˆÁ\\±ssψTÜfœœffšâ’DD**ÓÓ’¼ÚÚ:;;×,Mÿ‚þþ\ÿ†@ u§z£‚9£9Ɔˆm†mm¿¿ïïkX«]]ŠŠ··Ø!‚ÒÒÑãŽ=11ËË)//d„``ðð}¨‚NNIVŒŠ´ù³³77…7……¬–Ô‚üü͆vv¹¹ÎæÁ“±±ssÏÏ##UÜœffššââD*’¼‰ÚÚ;××Nÿ‚þþ\ÿ‡Þ u§z£9†m„¿¿ïïk‘X««](ŠŠ·þþØ!!Ò ãŽ=011Ë))//dðŒ}ð}}¨ó¨¨N¨NNI‚VVŒ‚´´7…¬–Ô…Õü€€ÍvΆææÁÂ\\sˆÏÏUUÜUfƒšââD**’’¼¼ÚÚ:;;××,Nÿ‚þþ]ÿ†@ u§z£‚9£9†m¿‚ïïkX«]Š··Øþþ ÿþÿþÿþÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþOÿ@ ƒ§§z£9‚††m“¿¿ïïkkXX«(Š·ØØ!Ò‚ãÑãŒ=0ËË)//dðþNIVŒ‚´´7…¬‚––Ô‚ÕÕÍ“vvÎÎæÁÁÂ\\sÏÏ#TÜÜf‚ââD**’¼¼ÚÚ%;×%ÿþÿþÿþÿ þ‚ÿÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþOÿˆÞ u§z£9†m•¿¿ïïkkX«]ŠŠØ0!!ÒÒã=00Ë)//d`ƒðð}þNI‡VVŒŒ´´ù7…¬–ÔšÕÕ€Ívv¹ÎÎæÁÁÂ\ssÏÏÜUfÜfšâDD**’’¼¼Ú;××,%ÿþÿþÿþÿ þ‚ÿÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþPÿ@ ƒ§z£9‚††m‹¿¿ïÙkkX«]Šˆ·Øÿˆu§zz£9†’m¿¿ïkXX«ŠöØ!ÒÒã=0ËÉÉ))/dd`ðð}}¨N†IIŒŒ´´7‚……¬§––ÕÔÕÕ€ÍvvÎÃæÁòssÏTÜffšââDD**Ó¼Ú%;×Roÿ‚þþ=ÿ‚þþ>ÿˆ@ uzz£9‚††m’¿ïïkX«(Š·!ÒããÒãŽ=0ËËÉ)/dd`ðð}þN‡IIVVŒ´³7‚……¬–„ÔÕ€ÍvÎÃÁÁ±sÏÏUUÜfšââD**’Ó¼Ú;,oÿ‚þþ=ÿ‚þþ?ÿŠ §zz££9”††¿m¿ïkkX«]ŠÉØ!ÒÒãŒ0ËÉ)/dd`ð}„¨þ¨NI†VŒŒ´³7…¬¦––ÕÔÕÕÍÍvÎÎæÁ\\sÏ#ÜfœfgââD*ÓÓ¼Úþþ;×pÿ‚þþ=ÿ‚þþ?ÿˆ@ uzz£9”††mm¿¿ïkk«]·Ø!ÒÒã‰00ËÉ)/d`‘ð}}¨þN¨NIIVŒŒ´7³7…¬¦––ÔÔÕ€ÍvvÎÎæÁÁssÏ#UÜfšââDD**¼¼Ú;þþ,pÿ‚þþ=ÿ‚þþ@ÿˆ §zz£9‘††¿m¿ïkkX«ŠöØÒãŒ0ËËÉ)/d``}…¨þ¨NNI†Œ´´³77…¬§––ÔÕÕÍÍvvÎÃæÁ\±sÏÏÜfœfšââDD’’¼¼Ú%;×þþoÿ‚þþ=ÿ‚þþ@ÿˆ@ uzz£‚99†m¿ŽkkX«](Šö!ÒÒã=ËËÉ/dd``ð}}¨‹NNIIŒÄŒ³³77…¬–¦ÔÕÕ€ÍvvÎæÁÁ±sÏÏÜUffââD**’Ó¼Ú;×,ÿÿþnÿ‚þþ=ÿ‚þþAÿ‡ u§zz£„9£99†¿ïkX«] öØ<ÒãÒãŒ=0ËÉ))/d``}‹¨ó¨NNIIVŒŒ´7‚……¬—–ÔÔÕ€ÍÍv~ÎæÁÁ\sÏÏ#ÜœfšâŠD*’¼¼Ú%;ÿþmÿ‚þþ=ÿ‚þþAÿˆ@ uzz£9†‘m¿¿ïïkX]Š ØØ!ÒÒã=0ËÉÉ)//d``ð}}¨NNIIŒVŒ³³77……¬•––ÕÔÕÕÍvvÎÎÁÁ±sÏ#ÜÜfDŠ**Ó¼Ú%;,ÿ‚þþkÿ‚þþ=ÿ‚þþBÿ‡ u§zz£9†‘m¿¿ïkkX«]Š·ØÒÒã=0ËÉÉdd``ð}}¨ˆNNIIŒV´´7‚……¬–¡ÔÕÍÍvvÎÃæÁ\ssÏ#ÜÜfšgâD**’¼¼Ú;;ÿþjÿ‚þþ=ÿ‚þþBÿˆ@ uzz£9†¿Žkïk«]Š·!ÒÒã0ËÉ(/d``}ð}¨þN†IIŒI´´7‚……¬‚––ÕŸ€ÍvvÎÃÁÁ\sÏÏÜffšââD*’Ó¼ÚÚ;;, ÿ‚þþhÿ‚þþ=ÿ‚þþCÿ‡ u§zz£9†¿ïkX«] ·ƒ!Òã•00ËÉ()/dd``}}¨þN¨NIIŒ†´77…7…¬‚––ÕÍÍv~ÎÃÁ\sÏTÜfâŠD*’Ó¼Ú; ÿþgÿ‚þþ=ÿ‚þþCÿ@ uzz££99£99†¿¿ïïkX«·Ø!ÒÒã0ËËÉ()/d`ð}ð}}þN‚IIŒƒ³77…¬–‘ÔÕÕÍÍvÎÃÃÁ\\sÏÏÜfââDD*Ó¼Ú;;, ÿþfÿ‚þþ=ÿ‚þþDÿ‡ uzz£9†Žm¿ïïÙX«]·Ø!ÒãŒ=ËËÉ)/dd`ð}†þ¨NNIIŒƒ´77…¬£––ÔÔÕ€ÍvvÎÃxÁ\sîÏTÜffââDD**Ó¼Ú;×ÿ‚þþdÿ‚þþ=ÿ‚þþDÿˆ@ uzz£9†‘¿m¿ïkk«]ŠöØÒãÒã=ËËÉ(d``ð}}¨¨NˆIIVŒ´³77…¬£––ÔÔÕÍÍvvÎÃÁ\îÏÏTÜffââDD*Ó¼ÚÚ;;,ÿþcÿ‚þþ=ÿ‚þþEÿ‡ §§zz£9‚††¿ïÙXX](ŠØ!ÒãŒ<0ËÉ)//d`ð}†¨¨NNIVŒ…³77……¬¢––ÔÔÕÍÍv~ÎÃÁ\\sÏTTÜffââD**’¼Ú;ÿþbÿ‚þþ=ÿ‚þþEÿ‡@ §zz£9‚††¿ïkX«(öØ!ãÒãŽ=0ËÉ)/d``}ð}¨ŒNNIIVŒ´³77……¬– ÔÕÕÍÍv~iÃÁ\ssÏÏTÜffšâDD*’Ó¼%;,ÿ‚þþ`ÿ‚þþ=ÿ‚þþFÿ‰ §§zz££9‘††¿mïïÙX«]ÉØ!ÒãŒ=0ËÉÉ)/d`ð}…N¨NNIŒ´7‚……¬¡–ÕÔÕ€Ív~ÃÁÁ±sTÜÜffšâD*’Ó¼Ú%;ÿþ_ÿ‚þþ=ÿ‚þþFÿ‡@u§zz£9‚††¿ïkk«]Š·!ÒÒãŒ<0ËÉ)/dd`ð}þNŠIIVŒ´³7…7…¬–ŸÔÕ€ÍvvÃÃÁÁssÏTÜffšâDD*’¼¼Ú%;,ÿ‚þþ]ÿ‚þþ=ÿ‚þþGÿ‡ §zz£9††m¿¿ïXX] ·Ø!!ã‹00ÉÉ))dd`ð}þN‡IŒŒ´´77…¬ –ÕÔÕÍÍvÎÁ±±ÏTÜffââDD*’¼Ú%%ÿþ\ÿ‚þþ=ÿ‚þþGÿ@u§zz££9£99†¿¿ïïkX«Š·Ø!!ÒÒã‘0ËËÉ)dd``}}¨þNNI…VŒ³³7…‚¬¬–ÕœÍÍv~Ãæ±sTTÜffââD*’Ó¼Ú%;Rÿþ[ÿ‚þþ=ÿ‚þþHÿ„ uz‚££9‚††¿Žïkk«ŠÉØ!ããÒã‹=ËËÉdd`ˆ}…þ¨NIIŒƒ´77…¬’––ÕÕÍÍv~ÎÃÁÂssÏTÜf‹âDD*’¼¼%%ÿ‚þþYÿ‚þþ=ÿ‚þþHÿ‡@ §zz£9††m¿ïÙk«]ŠØ!Òã=ËÉÉ)dd``}}¨¨N‡IVŒ´´77…‚¬¬–žÔÕÍÍvvÎæÂÂssPÏTÜfšââD*’Ó¼Ú%;R ÿþXÿ‚þþ=ÿ‚þþIÿ† uzz£9’††¿¿ïïkX] ·!ÒãÒã‹=0ËÉdd`ð}Š¨¨NIIVV´³³…¬–ÔÕÍÍvÎÃæ±sTTffšââD*Ó¼Ú%%"ÿ‚þþVÿ‚þþ=ÿ‚þþIÿ‰@ §zz££9†Ÿ¿¿ïÙX]ŠØØ!!ããÒãã=ËËÉ/d``}}¨ƒNNIŒƒ³77…¢¬¬––ÕÔÕÍvvÎæÁÁssÏTTffââDD*Ó¼Ú;;R$ÿþUÿ‚þþ=ÿ‚þþJÿŒ §zz££9£99†Ž¿¿ïïk«]ÉØ!Òã0ËÉ(//d`ðð}¨N†IŒV´³7…¬‚––ÕšÍÍvÎæÁÂsîÏTÜÜfâDD*Ó¼¼Ú;&ÿþTÿ‚þþ=ÿ‚þþJÿŸ@ u§zz££9£99††¿¿ïÙkX]·Ø!ÒãÒãŠ0ËË(//d`ð}…þNNIIŒ‚³7…¬Ÿ––ÔÕÍÍvvÎæÁ±sPTTffššDD*Ó¼Ú%;,'ÿ‚þþRÿ‚þþ=ÿ‚þþKÿŠ §§zz££9£9†¿m¿ïÙX]ŠØ!ÒãŽ0ËÉ(dd``}}¨þN†IŒŒ³³7…¬ž–ÕÔÕ€ÍvÎÃÁÁ±ÏTÜffšâD**ÓÚÚ%×*ÿþQÿ‚þþÿ ÿˆ@ uzz£9†m¿¿ïÙÙ] ö!ÒÒã™0ËËÉ(/d`ðð}}þNNIÄŒŒ³³7……¬ž––ÔÕÍvvÎÃÁÁ±sTTÜfšâDD*’¼Ú%;×,+ÿþPÿ‚þþÿ ÿˆ §zz££9††¿¿ïkk«]ŠÉÒÒã™=ËÉÉ(/d``}}¨þNNIIÄŒ³³…7…¬–Õ™ÍÍvÃæ±sTTffââD*’Ó¼Ú%-ÿ‚þþNÿ‚þþÿ ÿˆ@ uzz£9†m¿¿ïkX]ŠØ!ÒãŠ=ËË(/d`ð}ŒN¨NIÄŒŒ´³7……¬ž––ÕÕ€ÍvvÎÁÁ±sÏTTffââD*Ó¼Ú%;R/ÿþMÿ‚þþÿ ÿ† §zz£9††¿¿ïÙX« Ø!ÒãŠ<0ËÉ)/dd`}‚¨NI‡ŒŒ³77……¬––ÔÕ€ÍvÃæÂssPTTÜfšâDD*Ó¼Ú%;1ÿ‚þþKÿ‚þþÿ ÿ‰@ uzz££9††¿¿ïÙX«ŠÉÒãŒ<ËËÉ/d`}ð}¨ŠNIÄŒ´´77……¬––ÕÕÍvvÎÃÂÂsTÜÜfââD*Ó¼¼%;×R3ÿþJÿ‚þþÿÿ…u§z£9†m¿¿ïkX]·!ÒÒã‰0ËÉ/dd`}Ž¨NNIIŒ´´77……¬¬–šÔÕÍÍvÃæÁ\sÏTÜffâDD*Ó¼Ú%5ÿþIÿ‚þþCÿþFÿˆ@ §z££9Ž††¿¿ïkX«ŠÉØÒã—0ËÉ(/d`ð}}¨þNNIIŒ´³7……¬‚––Õ˜ÍvvÎÁ±îTTffšâD*Ó¼Ú;×R6ÿ‚þþGÿ‚þþAÿþEÿŠu§zz££99†Œm¿ïÙX«Šƒ!ã‰0ËÉ(//d`}ŒþNNIIŒŒ³77……¬›–ÕÕ€ÍvÎÃÂÁ±TÜffââD*Ó¼Ú%×9ÿþFÿ‚þþAÿþ‚ÿÿþEÿš@ §zz££9£99†m¿ïïkX]Š·!Òã¶=ËÉ)/ddð}}¨þNNIŒŒ´³77……¬¬––ÕÕÍÍvÎæÂ\sÏÏÜÜšââD*ÓÚÚ;Rÿÿ‚þþGÿþEÿ‡u§zz£9†§¿¿ïkX]Š·ÒãÒãã=ËË)dd`}}¨þNNIIŒ´´7……¬›––ÕÕÍvvÎy±îTÜffâDD*Ó¼Ú;ÿÿ‚þþ&ÿþÿþÿþÿþÿþÿþÿþÿþÿþÿ‚þþÿ þÿ™@ §zz££9£9††m¿ïÙX«ÉÒã‡<ËËÉ)d`}¨‰IIVŒ´77……¬›––ÕÕÍvvÎÁÂsîÏÏÜœfâDD*ÓÚ;Rÿÿ‚þþ&ÿþÿþÿþÿþÿ þÿþÿþ‚ÿÿþÿ‚þþÿ þÿ‡u§z££9†¿Škk«Šƒ!Òã–ËÉ(/d`}}ó¨¨IIVŒ´³7……¬š––ÕÕÍvÎÃÂÂsÏTÜffâD**¼Ú%;ÿÿ‚þþ&ÿþÿþÿþ‚ÿÿþÿþÿþ‚ÿÿþÿþÿþ‚ÿÿþÿ‚þþÿþ#ÿ™@ §zz£9£99††¿ïïkX]ŠØ!Òã†0Ë(/`¨‰NIŒŒ´³7……¬š–ÕÕ€ÍvÎæÂ\sÏÜffââD*Ó¼Ú;Rÿÿ‚þþ&ÿþÿþ‚ÿÿþÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþÿþ ÿþ#ÿ‡u§zz£9Œ††¿ïÙX«·!ã²0ËÉ(/d``}¨¨NNIVŒ´77……¬¬––ÔÕÍÍvÎæ±TÜffâD**¼Ú%;ÿÿ‚þþ&ÿþÿþ‚ÿÿ þÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþÿ‚þþÿþ"ÿ…@ §z£©99††¿¿ïkX« ·Ø!ÒãÒãã=ÉÉ(/``ˆ}óþNNIŒV´77…¬š––ÔÕÍvvÎÂÁ±Ï#UfââD*Ó¼Ú%Rÿÿ‚þþ&ÿþÿþ‚ÿÿ þÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþÿ‚þþ ÿþ!ÿ‡uz££9Œ†¿¿ïk«]ŠØÒã•=ËÉ/d``¨¨þNNIŒŒ³7……¬™––ÕÕÍvÎñsÏÜffââD*Ó¼%;ÿÿ‚þþ&ÿþÿþ‚ÿÿþÿƒþþÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþ ÿþ ÿþ ÿˆ@ §zz££9¥††¿ïÙX] Ø!ãÒãã<0É(/d``}¨þNNIŒŒ´77…¬™–ÔÕÕÍvÎæÂ\îÏÜffâD*’¼Ú%×Rÿÿ‚þþ&ÿþ‚ÿÿþÿþ‚ÿÿþÿþÿþ‚ÿÿþÿþ‚ÿÿþ‚ÿÿþ ÿ‚þþ ÿþ!ÿ‡§§z££9Œ†m¿ïkk]·!ã°<ËÉ/d``}¨þNNVVŒ³77……¬––ÔÕüvvÎæÁ±ÏTÜfââD*¼Ú%;ÿÿ‚þþ&ÿ þÿþ‚ÿÿþÿ þÿ þÿþÿ‚þþ ÿþ ÿ—@ z££99†9†¿¿Ùk«ŠÉØ!ÒãŠ<0É(/d`ˆ}¨ˆNIŒŒ³7……¬˜–ÔÕÍÍ~ÃÂ\sÏUffâD**¼Ú%¢Rÿÿ‚þþ&ÿþÿþÿþÿþÿþÿþÿþÿþ‚ÿÿþÿ‚þþÿþÿþ!ÿ…§z£À99††¿ïkX]ŠØ!ÒãÒãã0ËÉ(/dd`}¨¨NNIVŒ´7……¬¬­–ÔÕÍvvÃÂ\îÏÜfââD*Ó¼%;ÿÿ‚þþ&ÿþ"ÿþÿþ ÿþÿþÿþ!ÿ†@ §z£9Œ††¿¿ÙX]ŠÉ!ã‰0Ë(d``}¨ˆIIŒŒ´7……¬—–ÕüÍvÎæ±ÏTÜfšâD*ÓÚ%Rÿÿ‚þþ&ÿþ"ÿþÿþ ÿ‚þþÿþ#ÿ†§z£9††¿¿ÙÙ«Š·!Òã­0ËÉ(d``}}¨NNVŒ´´77…¬¬––ÕÕ͹ÎÃÂsÏÜÜfâD*Ó¼Ú;ÿÿ‚þþ&ÿþÿþ ÿþÿþ ÿ‚þþÿþ$ÿƒ@ §z£9‹†m¿ïk«]É!ã‘<ËÉ/`ˆ}¨þNNIŒ´´…™¬¬––ÕÍÍvÃÂ\sÏÜfšâD*¼Ú¢Rÿÿ‚þþ&ÿþÿþ ÿþÿ‚þþ1ÿ„ uz£Ž99††¿ïkX]ŠØÒã¬<ËÉ(dd`}}þNNIŒ´³7…¬¬––ÔÕÍv~ñîÏTffâD**¼%;ÿ ÿ‚þþÿÿ•@ §z££99††m¿kX]·ƒ!Òã¬<ËË(/``}}þNIIŒ´³7……¬––ÔüÍvÎæÂsÏTfšâD*Ó¼%¢Rÿ ÿ‚þþÿÿ” §z££99††¿¿ïk«Š·0Òã«<ËÉ/``}}þNNVŒ´77……¬––ÔÕÍvÎæ\s#Tfââ*Ó¼Ú;ÿ ÿ‚þþÿÿÂë §zz££99††¿ïÙX]Š·ÒãÒã<0É(/`ˆ}¨¨NNVŒ´7……¬¬––Õüv~ñsÏ#ffâD*ÓÚ%;Rÿ ÿ‚þþÿÿ† uzz££9Š†m¿kX]ŠØ!ã‰0Ë/dˆ}}NV´´7……¬¬–ÕÕÍvÎÃÁsÏTfââD*¼Ú;ÿ ÿ‚þþÿÿ” §zz££9††mïïk]ÉØÒã©0É(ddˆ}}¨NIIŒ´7……¬¬–ÕÕÍvÎÁ\sÏ#ÜfâD*Ó¼%;Rÿ ÿ‚þþ=ÿ‚þþZÿ“ uzz£9£9††¿ïÙ«ŠØ!Òã¨=Ë(/dˆ}¨¨NIŒŒ´7……¬¬–ÕÕÍvÎÁ±sÏÜÜgâD*ÓÚ%ÿ ÿ‚þþ=ÿ‚þþZÿ… zz9‹††¿ïÙ«]ŠÉ!ã¨0Ë/d`}óþNIŒŒ´7……¬¬–ÕÍv~ÃÁsÏÜfââ*Ó¼%;Rÿ ÿ‚þþ=ÿ‚þþ[ÿ¼ uzz££99†mïïX]·!Òãã<ËÉ(/dˆ}¨þNIŒŒ³7…¬¬––ÕÍvÎæÁsTÜfâD*¼Ú%ÿ ÿ‚þþ=ÿ‚þþ[ÿ¼u§z££99††¿ïk] Ø<Òãã=ËÉ/d`ˆ¨þNIŒŒù……¬¬––ÕÍvÎÁ\sÏÜÜââD*¼%;ÿ ÿ‚þþ=ÿ‚þþ\ÿº §z££9††¿ïk«ŠØÒãã<ËÉ(/dˆˆ¨þNIŒ´´7…¬¬–ÕÕÍvÃÁsÏÜfâD*ÓÚ%ÿÿ‚þþ=ÿ‚þþ\ÿºuz£9£9††ïÙXƒ!Òãã<0É(d`ˆ¨¨NIŒ´77…¬––ÕÕv~ÃÁsTÜfâD*¼%;ÿÿ‚þþ=ÿ‚þþ]ÿ„ §zz9±††¿ïÙ]·ÒÒãã0É(dˆ}}NNI´´ù……¬¬–ÕÍvÎx\sÏÜfâD*Ó¼;ÿÿ‚þþ=ÿ‚þþ]ÿuz££99†¿ïÙ] ã¤0Ë(//`}}NNIŒ´7…¬¬––ÕÍvÃÁ±TÜfâD*¼Ú;ÿÿ‚þþ=ÿ‚þþ^ÿ„ §zz9¯†¿ïk«Ø!Òãã0Ë/d`}}NNI´´7……¬––ÕvvÃÂsÏÜfâ*ÓÚ;ÿÿ‚þþ=ÿ‚þþ^ÿuz££99†¿ïXŠƒ!ã£0Ëd`}}þII´³7…¬¬–ÕÕÍ~æÁsÏÜfââ*ÓÚ;Rÿÿ‚þþ=ÿ‚þþ_ÿŸ z£99††¿ïk]·Òãã=Ëd`}}þNIŒ´…’¬–ÕÍvÎÁ±ÏÜfâ*’¼%ÿÿ‚þþ=ÿ‚þþ_ÿ uz££9††ïk«·0!Òã<ËÉdd}¨þII´´7¬‘–ÕÍvÃÁsTfšâ*¼Ú;ÿÿ‚þþ=ÿ‚þþ`ÿ„ z£9ˆ†¿ïXŠ!ã ËÉd`}¨þII´³7…¬¬–ÕÍvæÂsPÜfâD*¼%;ÿÿ‚þþ=ÿ‚þþ`ÿ²§z£99†¿ÙÙŠƒ!!ãã0É(ddˆó¨II´7…¬¬––Õvvæ\ÏÜfâ*Ó¼;ÿÿ‚þþ=ÿ‚þþaÿ„ z£9©†ïÙ«Ø<Òãã0É(dd}¨¨NI´³7…¬–ÕÕvÎÁsTfšD*¼ÿÿ‚þþ=ÿ‚þþaÿ°§zz99††¿ÙX·Òãã0É(ddˆ¨¨II³7……¬–Õ€vÃÁsPÜfâD’Ú;ÿÿ‚þþ=ÿ‚þþbÿ® z££9†¿ÙXŠ0!ãã=Éd`ˆ¨¨II´7…¬¬–ÕÍvæÁÏÜfD*¼;ÿÿ‚þþ=ÿ‚þþbÿ„§z£9§†ïÙ]ŠØ!Òã<É/dˆóþIV´7…¬––ÕvvÁ\TfšD*¼;ÿÿ‚þþ=ÿ‚þþcÿ¬ z£9††¿Ù«ƒ!ãã<Ë/`ˆ¨þIV³7…¬¬ÕÕvÎÁsÏTfD*¼;ÿÿ‚þþ=ÿ‚þþcÿ§z££††¿ÙXŠãœËÉ_ˆóþII´7…¬¬–€vÃÁsÏffD*¼;ÿÿ‚þþ=ÿ‚þþdÿªu££99†ïYŠ0ÒããËdˆ¨þIŒ³7…¬–Õ€væ\Tfâ*ÓÚ×ÿÿ‚þþ=ÿ‚þþdÿª§z£99†¿Ù]ŠØ<Òã0d`¨¨IŒ´…¬¬–ÕÍ~ÁsÜfâ*¼%ÿÿ‚þþ=ÿ‚þþeÿƒuz9¢mï«Ø<ãã<É`ˆó¨IV³7…¬–ÕÍÁîÏfšD’Ú;ÿÿ‚þþ=ÿ‚þþeÿ¨z£99mïY·!Òã0É(dˆ¨¨IŒ³…¬¬–€vÃÁTfš*¼%ÿÿ‚þþ=ÿ‚þþfÿ¦u£99†¿Ù]Š0ãã<É(dˆ¨¨IŒ´7¬¬Õ€væ\ÜfD’Ú;ÿÿ‚þþ=ÿ‚þþfÿ‹z£9††Ù«ŠØã˜Ë/`óþI¸ù…¬¬–͹ÁsÏfšDÓ%ÿÿ‚þþ=ÿ‚þþgÿ¤uz£9†mïYØ<ÒãË(d`óþIŒ7…¬–Õ€ÎÂîTfD*¼;ÿÿ‚þþ=ÿ‚þþgÿ¤z£9†¿Ù]·<ãã0/`óþIŒ³…¬–ÕÍñTfD’%ÿÿ‚þþ=ÿ‚þþhÿ¢uz£99mÙ]ŠÒã0/`ˆþIŒ7…¬–€væ±Ïfâ*¼;ÿÿ‚þþ=ÿ‚þþhÿ¢z99†ï«ƒãã0É`óNI´7…¬–€vÂîTfD*ÿÿ‚þþ=ÿ‚þþiÿ §z£9†¿ÙØãã0/`ó¨I´7¬––ÍÎ\Tš*¼;ÿÿ‚þþ=ÿ‚þþiÿ  £9†¿ï·!ã<É`óNI´7…¬ÕvÃ\Tfâ*Úÿÿ‚þþ=ÿ‚þþjÿž§z£9mÙ«É!ã<É`ˆNI´…¬–ÕvÁsTšD¼;ÿÿ‚þþ=ÿ‚þþjÿž £9†ï«ããË`óþV´…¬–Í~ÂTâ*Úÿÿ‚þþ=ÿ‚þþkÿœz£††X0ÒãË`ˆþV´…¬–ÍÃsTfDÓ%ÿÿ‚þþ7ÿ þfÿœ z£††Ù]ØÒãƒ(`ˆþŒ´…¬–€ÃîTâ*Úÿÿ þ2ÿ þhÿšz9†ï]É!ãƒ`ˆþŒ³…–€vÁÜš’%ÿÿ þ2ÿ þhÿš z£†mY<ã0(d¨NŒ7…–€Î±Tš*¼ÿÿ þ2ÿ þiÿ˜£9†Ùã0dóIŒ7¬–ÍÃîÜš’%ÿÿ þ4ÿ þiÿ˜ z9†ï]0ã=ÉdˆN´7¬–væfD¼ÿÿ þ4ÿ þkÿ–£†ï]ØããÉdóN´…¬–vòÏâ*ÿÿ þ4ÿ þkÿ–uz9†ÙÒãÉ/óþ´…–€ÎîTâ¼ÿÿ þ4ÿ þlÿ”9†Ù0ãÉdˆþ´…–€æf*ÿÿ þ6ÿþmÿ”uz95ãƒdóþù…–vÁÏš ×ÿÿ þ6ÿþnÿ’z9mXƒãË/óþ³¬–vsT*ÿÿþ6ÿþnÿ’u£†ÙŠãƒ/ˆI´¬–æPf’×ÿÿþ7ÿþoÿz9ï<ƒ/¨I³¬€æÏšÚÿ ÿþ8ÿþpÿ§£¿!ã/ˆI7–ÍÁ›*;ÿ!ÿþ8ÿþqÿŽz9Ùã/¨I7–vPš¼ÿ"ÿþ8ÿþqÿŽ9ÙãÉóþ…–æPD%ÿ"ÿþ9ÿþsÿŒ£mãÉóþ¬–ò›¼ÿ#ÿþ:ÿþsÿŒ†Ù<ɨþ¬€â%ÿ$ÿþ:ÿþtÿŠ£Ù!Ë}þ¬vÏ*ÿ%ÿþ:ÿþtÿŠzmã¨I–æf%ÿ%ÿþ<ÿ‚þþvÿˆ9ã`ù–òDÿ&ÿþ<ÿ‚þþvÿˆzÙãdù–P¼ÿ'ÿ‚þþ<ÿ‚þþwÿ††!d7Bšÿ(ÿ‚þþ<ÿ‚þþwÿ†£Šd7ò¼ÿ(ÿþÿ8ÿ„Ù¬Pÿ)ÿþÿ8ÿ„9Éþ¥ÿÿþ?þÿ‚ãþÿÿdÿ‚ŠþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿÿeÿþÿþÿÿNÿþÿþÿÿMÿþÿ‚þþÿÿLÿþÿ‚þþÿÿLÿþÿ‚þþÿÿKÿþ ÿ‚þþ ÿ‚þþÿÿKÿþ ÿ‚þþ ÿþÿÿJÿþ ÿ‚þþÿþÿÿJÿþ ÿ‚þþÿ…þþÿþþÿÿIÿþ ÿ þÿþƒÿþþÿÿIÿþ ÿ þÿþƒÿþþÿÿIÿþ ÿ‚þþÿþÿ‚þþÿÿHÿþ ÿ‚þþÿþÿ‚þþÿÿHÿþ ÿ‚þþÿþÿþÿÿGÿþ ÿ‚þþÿÿVÿþÿÿeÿþÿÿ_ÿ þÿÿ[ÿ þÿÿ[ÿ þÿÿ[ÿ þÿÿ\ÿ þÿÿ]ÿ þÿÿ]ÿ þÿÿ]ÿþÿÿ_ÿþÿÿ_ÿþÿÿ_ÿþÿÿ_ÿþÿÿaÿþÿÿaÿþÿÿaÿþÿÿbÿþÿÿcÿþÿÿcÿþÿÿcÿ‚þþÿÿdÿ‚þþÿÿeÿþÿÿeÿþÿÿÿÿÿÿ`ÿ! !lpˆÇ9ÿJ“ÿFŽõ0ñ-ÿ Uÿ P¹[´ZR˜N†DAí.…ë)ùOš÷J—ÍaÈ_ë*æ'ÿfÿbÿ%pÿ k×Z¾ÖZ¾þ7ú3’KŒGÅZ¸ÃZ¸çwÒçuÒñ“åñ‘åÿƒÍÿÍårÏåpÏätâpò<Žð5‰íY…ìY…é#}çx°Y²¯Y²ÿd©ÿd¨õŸîõíÿ}Éÿ|Çÿ™âÿ—áÿ”Ýÿ’Ü÷¤ñ÷¢ðó—èò•èÿ£ìÿ¢êÿ¯öÿ­õÿ±ùÿ°÷ÿ1{ÿ+uåYäY€âYáY~{=s8©Y°¨Y¯¤Y¯£Y®ÜZ¿ÛZ¿ÿg¯ÿf®ÿj·ÿi¶ÿ×ÿŒÖû¯ùû­÷ÿªòÿ¨ðâ%Õ ÿb¤þ\¤ßjÛeÿ[”ÿZ”ÿ^ÿ^›ÿDÿ=íˆÞí‡Ýþ¶þÿµý÷YŠõY‰ÿAŠÿ9‚±ÿa¢þZ¢ÿ\—ÿO—®WÿLõD“ Y­ŸY¬ÿ{Æõœìÿ‘Ûÿ¬ô…YƒYœÁ]èY‚çY‚ëY„þYýYŽ®Y±ÿ€Ëò”çÏZ»ÍZºåoÍ¥UûYùYŒÚZ¾ßbÄß`ÃÂZ·ýµýý²úü±ûŠY ‰YŸòY‡ðY‡é|ÖèzÕÿe­ætÐðãë‚Úê€Ùÿ§ïü°ùágÈáfÇÿo¼ÿnºÿ‰ÔÿˆÒÿ–ßÿ éÿ[ÿvÂÿtÀú¬öö ï”Y¦‘Y¤ÉZºÆZ¸Ôcù¨ôø§ó|Y—zY—ÿ`Ÿÿ_ž¦Y¯ÿh³ÿg±pYŽlY‹šY©—Y¨ÿ]™eY„aY€ˆYŸÿb¦Y«wY•tY’ì…ÜÿzÅÿÚÿ«óÿ´ûänÍÿm¹ÿ‡Ñô›ëÿÊádÆÿ•Þÿ¦îËZºø¥òðŽãèxÔÿZ‘¬Y±êØÿSšýVŸºZµ·Z´ÿe«ÿxÄÿæÿšã¾Z·ÿ¤íµYm¬YjÇYt¾Yq€Yšó™êÚY|ÑYxiY‡ŽY¢Ý\Áÿ„ÏãkÊî‹à³Y³ÔZ½ÑZ¼ÿr¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"ÿþÿÿÿFÿþÿÿÿFÿþÿÿÿFÿþÿÿÿFÿþÿÿÿFÿþÿÿÿFÿþÿÿÿFÿþÿÿÿFÿþÿÿÿFÿþÿÿÿFÿþ'ÿþÿþÿþÿþ‚ÿÿþÿþÿþ‚ÿÿþ‚ÿÿþÿÿdÿþ'ÿ þÿþ‚ÿÿþÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþÿÿdÿþ'ÿþ‚ÿÿþÿþ‚ÿÿþ‚ÿÿþÿþÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþÿÿdÿþ'ÿþÿþÿþÿþÿþÿþÿþÿþÿþ‚ÿÿþ‚ÿÿþÿÿdÿþ'ÿþÿþÿþÿþÿþÿþÿþÿþÿþ‚ÿÿþ‚ÿÿþÿÿdÿþ'ÿþÿþÿþÿþÿþÿþÿþÿþÿþ‚ÿÿþ‚ÿÿþÿÿdÿþ'ÿþÿþÿþÿþÿþÿþÿþÿþÿþ‚ÿÿþ‚ÿÿþÿÿdÿþ'ÿþ‚ÿÿþÿþ‚ÿÿþ‚ÿÿþÿþÿþ‚ÿÿþ‚ÿÿþÿþÿþÿÿdÿþ'ÿ þÿþÿ þ‚ÿÿþ‚ÿÿ þÿÿdÿþ'ÿþÿþÿþÿ þÿþÿþÿþ‚ÿÿþÿÿeÿþ'ÿþÿþÿþÿÿÿþ'ÿþÿþÿþÿÿÿþ'ÿþÿþÿþÿÿÿþ'ÿþÿÿÿÿþÿÿÿFÿþÿÿÿFÿþÿÿÿFÿþ ÿþÿÿÿ&ÿ+þ!ÿþÿÿOÿþþ ÿþÿÿ(ÿ>þ热ê­ê‚\\Cm„lmm–±†Û<44Õ=Õ‚"">þÿÿÿ%þ‚WTW‚©Wü¯}‚66$…ÔÔÏԪυ:9:99ç­êƒC\\CEm…ýmmZ–±ŽÛÛ±ÛÛ==4Õ5ÕÕð?"܃jø¢Í„¢¢ž¢ž‚!!&÷…¦¦“דõR‚úR$þÿmÿ þ`ˆŸ`Ÿ`ŸŸTŸT‚WTW‚üWü…¯ü¯}¯}6‚$$ÔƒYϪÏ‚::9ç‚­­êƒ\C\CEm†ýmmE±–±Û==Õ=Õ5ÕÕ"??""ÜjøÜ͢͢£ž¢£žž!!&÷†¦÷“ד“õR„úRúRúŒéþÿYÿþŠvv¼v¼vv¼¼v¼`†Ÿ`T`Ÿ`ŸTƒÀWTWƒüW©ü¯}6$ԂϪÏ:9ç‚­­ê‚C\Cm‚lým‚ZZ±Û„=4Õ=Õ‚??"܈jÍÍøÍÍ¢£ž‚!!&÷‰“¦×דõ×õõRúŒŒéã‚ùãùßþÿMÿ þƒnenˆƒeeˆevƒ¼¼v¼`„Ÿ`Ÿ`ŸˆTŸŸTTWTÀW„üü©©üƒ}¯¯}6$ÔYÏ„::9:9ç­ê\C„EEmml„mZC–±ÛŒ==4Õ5ÕÕ"??""Ü…øÍ͢͢£ž‚!!&÷„¦“דõR‚úRúŒé‰ééããùéùäù߈PPßPQQÊQʳ þÿCÿ þ„œ›nœnˆ‘enˆˆeˆˆev…¼vv¼v¼`‡Ÿ`TŸ`T`TƒWWŸWü‚}¯}Š6$$6$Ô$ÔÔYÏ…::9:9ç‚­­êCm‡llmm–ZE±…Û±ÛÛ=5ƒÕÕ?"ŒÜÜjÍøøÍÍ¢ž¢ž‚!!&÷‡¦“¦“ד“õR‚úRúŒéã‚ùäù‚ßùßP†QÊQÊÊij‚ôô þÿþÿ4ÿ þ,‚nœnˆƒeeˆev…¼v¼¼v¼`‚Ÿ`ŸT„ŸWWTW…©WW©©ü¯}‚66$‚Ô$Ô„ªÔÔYÏ‚::9:çê\CE‹mllmmZ±˜Z±±Û=ƒ455Õ?"Ü‚ø¢Í„¢£ž¢ž!&÷ƒ¦¦×“‚õõRúŒŒé†ããùéùäù‚ßùßPˆQQÊQÊÊÄʳˆô³ôôÈôÈ‚ þÿ.ÿ þ…,†œ,,œnœn‚enˆƒeeˆeˆvee¼vv¼v¼`†Ÿ`3TŸ`Ÿ‡TŸTTWWŸW©©üü©üü¯¯}}¯}}66$…Ô$ÔYÔÏYÏŒ9::9çç9ç­­êçêƒ\CêCEm‡llmm–±Z±Û†45455Õ?‚""܃jøøÍ„¢¢ž¢ž‚!!&‚÷&÷¦‚““õR‚úRúŒƒŒƒééã‚ùäù‚ßùßP‚QQʃijijô„È‚ôÈ‚‚ºº þÿ*ÿþ…I…ƒ,,…,œ nƒ‘enˆ‚eˆeˆv¼ee¼v¼v¼`‘Ÿ``ŸŸ`TŸTŸTTŸWTWTW‚©Wüƒ¯ü¯}6‚$$Ô‚YYÏ:9ç­ê‚CêC‹EEmmlýlm–ZZ±Û±ÛÛ=54Õ55Õ??"܃ø¢øÍ„¢£ž¢ž!„&&÷&÷‰¦“×ד“”õõR‚úRúŒ‚Œé„ããéãù‚ßùßP‚QPQÊ‚Äʳ…ô³ôšô‚‚º‚º‚ÌÌþÿ)ÿþ‚òñI… ,›nˆ‚eˆ e¼v¼`ƒT`TŸT‚WTWTWƒ©WWü„¯}¯¯}ƒ6$6$ÔY‚ÏYÏ:9‚ç9­‚ê­êC‹EmEEmlýmmZZ±Û‡=54Õ5ÕÕ?‚""ÜŠøÜ¢ÍÍ¢¢£ž¢ž‚!!&‚÷&÷„¦“דõR‚úRú‚ŒúŒŠéééããùéùéù ßPQ…ÊÊijijô„šôôÈ‚º†ËËÌÁÿÿþCÿ]þÿˆþþííñ…ñIý„…,…,ý„›nn,ý„n‘enýˆeý„vv¼vý¼ý`Ÿý„T`ŸTý„TÀWWý„ü©üWý„}¯}}ý„6$Ô$ý„ÏÔÏÏý9çý„­­êêýC‚EEm‡lýmmE–Z±ŒÛ±ÛÛ=5<Õ5ÕÕ?"Ü¢ø†¢Í¢¢ž¢ž!„&&÷&÷ƒ¦×דõRúŒ…ŒŒéã‚ùãùßP„ßPQQÊ‚ÄʳƒôôÈ‚º‰ËËÌÁÁÿýþþJÿ‚þþZÿ…sríòñI†……I…,…,‚œ,nœn‘ˆeˆev‚¼v¼ `‡TŸ`TTŸ`T‚WŸW‚©©ü¯}6$Ԫς9:9‚çç­ê‚C\C‰EmCEmlýlmZ±Û…=5=Õ5Õ„??""܉ø¢øÍÍ¢£ž¢ž!‚&&÷†¦¦×““×õR‚úRú‚ŒúŒéã„ùéùéùßPQ‡ÊÊijij³ ô‚‚º‚ºˆËËÌÁÆMMþKÿ‚þþYÿˆìërròñI…I„……,I,„n,n,nƒ‘nnˆev†¼v¼v¼v¼`ˆT``ŸŸ`TŸT„WWTTW‚©©ü¯}¯}¯}}66$6$$Ô„YϪÔφ9::9ç9ç­ê‚CêCmZCZZ±±Û±Û=ÛÕÕ²ÕÕ?"„ÜÜ¢øÍ‚¢£ž‚!!&÷¦×õR‚úRúŒƒŒŒƒééã‚ùãù‚ßùßPQÊijô‚ºˆËºÌÁMMÇÇKÿ‚þþYÿ…ìërròñI……I…,…,‚n,n„eˆˆeˆ‚eˆev¼`ƒT`TŸTŸW„üWü©ü‚}¯}‚66$ÔƒÏÏYω:9:99ç9çç­ê†CêC\CCE†mmlmm–±Û‹=Û4Õ55Õ"??"܆jÜ¢¢Í¢£ž!„&&÷&÷†¦¦×ד×õ„RRúRú‚ŒúŒƒŒŒé‰ééããéùùäùƒßßùßPQÊ„ÄÊÄijô‚ºƒÌËÌM‚ÇÇKÿ‚þþYÿìëîr__^^I……I,I,…,†››,,nœn†ˆnˆˆeˆeŠvve¼v¼¼v¼v¼`3`T``ŸTŸŸTŸTTWTTW„©©ü©üƒ}¯¯}6‚$$ÔƒYϪÏŒ::9:99çç­çç­ê‡C\C\CCEm‡llmm–±m±‹Û±ÛÛ5Õ5Õ5ÕÕ?‚""Ü‹jÍøø¢Í¢£žž£ž„!!&&÷‡¦¦××õ“”õ„RRúRúŒ é…ããùéãù‚äùßPQʃijijôƒ‚šô‚…ºº‚ººM„ÂÂÆÆJÿþXÿ…ìëîí_^†,I…I……,neˆeˆv¼ev¼v¼v¼`†T`Ÿ`TŸTƒWWTW„üWü©ü„¯¯}¯}‚$6$Ô‚ÏÔÏ:‰99ç9ç­ç­­êCE‰mmllmm–±Z±Û…Õ²Õ5Õ?‚""܈ÍÍø¢Í¢¢£ž‚!!&÷…¦¦×דõR‚úRúŒé‚éã‰éùùäùùßßäß‚PßPƒQÊPÊ‚Äʳôƒ‚ôÈ‚‚ººL†MMÆÂÆÆJÿþXÿˆìëîíòñIñ^ ,…n,›œ›nˆeˆev¼v¼`†3T`T`TŸT„ŸWWTWü‚}¯}$‰Ô$ÔÔÏÔϪYÏ…99:99ç­ê†C\\CCEm‰ýmm–ZEZ±±ÛŒ5=ÕÕ5ÕÕ"??""܆øøÍøÍÍ¢ž‚!!&÷†¦¦“ד“õR‚úRúŒ é…ããùéãùƒäßùß‚PßPQÊijôƒÈ‚È‚ L…MËÌÌÂÆJÿþXÿ†ìëîíòñI†^^^,‡›,›n,nœn‚ˆnˆev¼v¼ `‡TŸ`ŸŸTŸTƒWTÀW‚üWü¯}„66$$ԂϪχ:9:99ç9ç‚­­ê‚\êCE‰mlýmmZ±±Z±‰ÛÛ<Õ<Õ5ÕÕ?‚""܉jø¢ÍÍ¢¢ž£ž‚!!&÷¦“õR‚úRúŒéãù߃PPßPƒQÊQÊ…³³Ã³³ôƒÈ‚  ‚LLº„ËÌÁÂÆJÿþXÿˆìëîíòñIñI‚^^ƒnƒeneˆƒeeˆeƒ¼vv¼v¼`„3T``Tƒ`TŸT„WTWTWƒ©ü©ü‚}¯}Œ$6$$Ô$ÔÔYªÏªψ:9:99ç9ç­ê‚\êCm†lýmm––±ÛŒ=5<ÕÕ5Õ?"?""ÜŠjøÜÍøÍ¢££¢ž„!!&&÷†¦“×ד“õR‚úRúŒƒŒŒéã„äéùäùßPQÊ‚Ãʳƒô ‚  ŒL‚ººËËÌÁÂÆÆÇIÿþWÿ†ìëîíòñI………II…‚n‚ˆnˆƒeeˆev¼`T`…T`TŸŸT‚WÀW‚©©ü‚}¯}†$66$Ô$ԂϪφ::9:99ç­ê„\êCêC‚EEm‡lýmm±±–±‰Û±Û=<54Õ5Õ?"܈ø͢͢͢¢žƒ!ž!&÷„¦×““õRƒúúRú‚ŒúŒƒŒŒ‚éé†ùãùéùäùßùßP‚QQÊij‚ij† ‚º…ËËÌÁÂÆIÿþWÿˆìëîíòñIñI‚……,‘›nnˆeˆeˆeˆˆe†fe¼v¼v¼v¼`‰3``TŸŸTŸŸTÀWTW‚©©ü‚}ü}$Ô‚ªYÏ:9‚ç9ç‚­­ê‚\êCEƒmllm…±ZZ±±Û†<Õ<Õ5Õ?‚""܇øÜø¢ÍÍ¢£‚žž!&÷„צ“דõRúŒƒŒ‚éé…ãùéääù߃PPßP‚ÊPÊŠÄ  ôšô‚ºˆËËÌÁÂÂÆÇIÿþWÿ†ìëîíòñI………II…,…››,,nefev¼`‘3T`3`Ÿ3TŸTŸTTWTTÀW…©©Wü©ü‚}ü}6‚$$ԃϪÔÏ:†99çç­ç­ê\Cm‚˜E±‚Û±ÛÕ‚??"Ü„jÍøø¢‡ž¢£žž!!&÷‡¦¦×דõ“õ„RRúRú‚ŒúŒ‚éé…ùéùääù‚ßùßP‰Q ‡³³ôô‚šô‚º…ËËÌÁÂÆHÿþWÿˆìëîíòñIñI‚……,‚››n…ife¼e ¼`3…ŸŸ`T`T‚WTW‚ü©ü‚}¯}$Ô‚YÔÏ‚9:9„ç9çç­êCEmƒZ˜–±Û<Õ?‚""Üøj¢ø¢Í¢£žž£žž!!&Š÷÷!÷÷צד“õR†úRúRúúŒƒŒŒƒéé„äéäéù‚ßùß„xxƒ ³ôƒ‚ôÈ‚Œº‚ººËºÌÁÂÂÆÇHÿþVÿ†ìëîíòñI………II…,„››,,n‚enˆ…‚ihiˆhih¼¼`¼¼ `…T``TTŸTWTW„©WüWüƒ¯}ü}6‚$$ԃϪÔÏ‚9:9†çç­çç­ê\CEm†Z±±Z±±Û…4ÛÕÕÛÕ?"‹ÜÜøÜjÍø¢¢Í¢ž‚!!&÷×…““”õõRúŒŒéäùx‚x‚ÊQʳô„šÈ‚š‚º…ÌËÌÁÂÆHÿþVÿˆìëîíòñIñI‚……,‚››nˆ†eˆeeiƒhiihyy``33`TTŸ`3TŸTWü¯}‚$6$„ÔÔYÔω9Ï:99ç9­ç­ê\C‚EEmým±ŽÛÛ<=ÛÕ55ÕÕ"??"Ü¢ÍÜ¢¢Í£ž£žžž!!&÷…¦÷×דõR‚úRúŒ‰ééé郃ƒ‚xx„ßPßßP‡QÊQÊÊÄʳô‚Èô‚ºˆËºÌÁÂÂÆÆHÿþVÿ†ìëîíòñI………II…,„››,,n‚enˆ‚eˆevƒ¼iihyƒTˆWTTWTWWTW©Wü¯}…6$6$$ԃϪYφ:99:99ç‚­­ê\CEm–ýmm±±Z±±ÛÛ±ÛÛ45<Õ5ÕÕ??"܃jø¢̓£Í£ž!&÷†×¦×““”õ‚RRúŒ†ƒƒƒƒ‚ùƒßßù߇PPQPPQQʃijijô„‚šôÈ‚‰º‚ººÌËÌÁÂÆGÿ þVÿˆìëîíòñIñI‚……,‚››nˆ‚eˆev†¼¼v¼¼v¼hy…yy®Wƒüü©üƒ}ü¯}ƒ6$6$ÔƒÏϪÏ:9†çç­ç­­êCEmým‚–Z±ÛˆÕ²Õ55Õ"Õ"‘ÜÜjÍÜøÍÍ¢žž£ž!&!&‚÷&÷¦ׂ”×õRõ·ƒƒééããùäùß‚PPQʳô‚º…ËËÌÌÂÆGÿ þUÿ†ìëîíòñI………II…,†››,,nœn‰eneˆˆeˆeˆev‚¼v¼ƒ``¼`‡Ÿ`yy®„üü¯¯}‚6$…ÔÔÏϪÏ:‚99ç­êƒCêêC‚ECm‰ýmmCZ–Z±±Ûˆ²ÕÕ5ÕÕ"?"Üš¢¢Í¢Í͢͞žž!!&!&&÷&÷÷¦×¦b‚cbc‚·c·ƒééãƒéùéù‚ßùßP„ßPQQʳô„šôôÈ‚Œº‚ººËËÌÌÂÆÆÇGÿ þUÿˆìëîíòñIñI‚……,„››nœn‚‘nˆƒeeˆev„¼v¼v¼`…Ÿ`Ÿ`TŸTƒW®‚ƒGGFσ99Ï9‰çç­ê­êê\êCƒmC˜m„˜C±±Z±ÛÕ†?""?""Ü…øøÍÍ .(/()b‚cbc‚·cúŒ†ŒŒé„ããùäùƒßùù߃PQPQʳ‚ô³ô‚º„ÌÌÁÂÆGÿ þ7ÿþÿ†ìëîíòñI………II…,›nƒ‘enˆ„eˆeˆev„¼v¼v¼‚`¼`…Ÿ`TŸ`ŸTƒWWŸWƒ©Wü‚„GGGF…qppqqp„‚ááƒfââafaâ‚z…+zz**+„ +  .‡/(/(()()‰b)bb“õ“õõR‚úRú†ŒúŒŒŒéãƒéùäù߃PßPQʳôÈ‚ºˆËËÌÁÂÂÆÆFÿ þ7ÿþÿˆìëîíòñIñI‚……,„››œ›nˆev„¼v¼v¼‚`¼`…Ÿ``T`Ÿ3TWTWƒü©©üƒ¯}¯}‚66$ÔƒªÏGF…qpFpqp‚„áwwáƒfáfa‚ázƒ*+*+ ‡ÍÍžžž!‚&&÷„¦×דõRúŒ‚Œ†éééãéã‚ùãùßP‰QQÊQÊʳ³Ä³„ô³ôô‚š‚ºˆËËÌÁÂÆÆÇFÿ þ8ÿþÿ†ìëîíòñI………II…,„››n,n‰enˆeˆˆeˆˆevƒ¼¼v¼v¼`Ÿ‚`TŸT‚WŸWü¯}†6$$6$$Ô„ÏÔÏÔÏ‚::9ç­êƒC\\CEmlmZ±‹Û±Û=Û=455ÕÕ?"Ü‚øÜ͉£žÍžžž!!&÷‡¦“¦×ד“õR‚úRúŒ‚Œ…éééãùßPQÊ‚³Ê³ô‚º…˺ÌÁÂÆFÿ þ9ÿþÿˆìëîíòñIñI‚……,›‚,›n‚enˆƒeeˆev‚¼v¼‚`¼`ƒTŸ`Ÿ3T‚WTW…©©Wü©üƒ}¯¯}‚66$ԂϪσ9Ï:9热ê­êƒC\\CˆEmEmlýmm±Û‰45ÕÕ5ÕÕ"?"܃jÍøÍ‚žÍž‚!!&‚÷!÷¦×…“×”õõR‚úRú†ŒúŒŒŒ‚ééã„ùùäãùßùßPQʃijʳôƒ‚šô‚ºˆÌËÌÁÂÂÆÆFÿ þ:ÿ þÿ†ìëîíòñI………II…,› nˆ‚eˆev‡¼v¼v¼¼v¼`…Ÿ``T`ŸT‚WŸW‚ü©üˆ¯¯}¯}}66$Ô‚ÏÔÏ:9ç­ê‚C\C‚EEm„lýmm–±Û‹=<Õ5ÕÕ"??""ÜøÍøͣ͢ž££žž!‚&&÷„¦¦××õR†úRúRúúŒ…ééééã‚éãùßP‚QPQʳô‚‚ô‚º‡ËÌÁÂÆÆÇKÿ‚þþ?ÿ þÿˆìëîíòñIñI‚…… ,‚n,n‚enˆ‚eˆev‚¼v¼`Ÿ‚`TŸT…WŸWWTW©ü‚}¯}6‚$$ԄϪÏYÏ:9ç­ê\CŽEEmEmmýmmE±Z±±Û‰=Õ455ÕÕ??"Ü„øÍÜøÍ£ž!&÷¦׈““õõRõRRúŒŒ‚éé„ããùéùß…PßPQQʳô„š‚‚ô‚º…ËËÌÁÂÆKÿ‚þþ@ÿþ ÿ†ìëîíòñI………II…,„n,n,neˆ‚eˆev„¼v¼v¼`ˆTŸ`TŸŸTŸT‚WŸW„©üü©ü„¯¯}¯}‚$6$ÔƒYϪÏ:…9çç9ç­êƒ\CêC‚EEm…lýmm–±Û==ÛÕ55ÕÕ"??""Üø̓͢ž!&‚÷&÷†¦¦×ד“õR‚úRú‚ŒúŒƒŒŠééééããùéãùßPQʳô‚‚º‚º‡ËÌÌÂÂÆÇKÿ‚þþAÿþ ÿˆìëîíòñIñI‚……,„›,nœn‚ˆnˆƒeˆˆevƒ¼¼v¼`ˆŸ``ŸŸ`TŸT‚WTWƒ©W©ü‚}ü}$$6$Ô$ÔÔYªYÏÔÏ…9::99热ê­êˆC\C\CCEEm†lmEm–Z±Û‡454Õ5ÕÕ?‚""ÜøŒÍ¢Í͞͞žž!!&‚÷&÷‰¦¦×““õ×õõR†úRúRúúŒƒŒŒéãƒùùãùßP‚QQʃ³³Ä³ô‚‚ô‚‚º‚º…ËËÌÁÂÆKÿ‚þþBÿþ ÿ†ìëîíòñI………II…,„n›œ›nƒ‘enˆev…¼v¼¼v¼`…Ÿ`T`TŸT„WŸWTW‚ü©ü‚}¯}6$‚Ô$ԂϪχ99:99ç9ç­ê‚CêCEƒmmlmƒE±–±Û‚4ÛÕ"Ü‹øÍøøÍͣ͞£ž!&‚÷&÷…¦¦×דõRú‚ŒúŒƒŒé„ããùéùßP‚QQÊ‚Äijôƒšôô‚º‡ÌÌÁÂÂÆÆKÿ‚þþCÿ þ ÿˆìëîíòñIñI‚……,†››n,nœneˆ‚eˆev†¼vv¼¼v¼`…Ÿ`Ÿ`3Ÿ`TÀW‚©Wü‚}ü}‡66$6$Ô$Ô‚ªYÏ:‚99ç„­ç­­êC\C‚mEmlm‚±m±†ÛÛ=ÕÕ=Õ„"?""Üø͈žÍžž!ž!&÷ˆ¦¦×ד“”õR‚úRúŒ‰éééùéãùéùßPQʃijʳô„‚‚ôÈ‚ºˆËËÌÁÂÆÆÇKÿ‚þþDÿ þ ÿ†ìëîíòñI………II…,„››nœn‚‘nˆev‚¼v¼`…Ÿ`ŸŸ`ŸTƒWTÀW„üWü©üƒ}ü¯}‚66$ÔƒÏÔÔσ99:9ç­êC‚EEml‚mZ±Û=Û<Õ=Õ5?Õ??""Üø͆£žžž!&÷ˆ×¦×דõ×õR„úRúRúŒŒéãƒùùäùß‚PßP‚QQʳôƒ‚‚ô‚º…ËËÌÌÂÆKÿ‚þþEÿ þ ÿˆìëîíòñIñI‚……,I,„››œ›nƒ‘enˆ‚eˆev†¼¼v¼¼v¼`„ŸT`TŸT„WŸTTW‚ü©ü¯}6$ÔYÏ‹:9:9çç9çç­­êC\CEˆmmlýmm––±ÛŒÕ=4Õ5ÕÕ"??""܃øÍø͇££žž!!&÷‰¦×ד“õ×õõRúŒ ƒééãƒéùäùß…PPQQPQÊ‚Äʳ…ôôšôô‚ºˆËËÌÁÂÂÆÇKÿ‚þþFÿþ ÿ†ìëîíòñI„……II,…››nœ›n‚eeˆ‚eˆev‚¼v¼ `„Ÿ``TŸTÀW‚©©üƒ}¯¯}6$Ô„YªYÔÏŒ:9:99çç­çç­­ê‚C\CŒEmmEmlýmmC±–±‚Û±Ûˆ44Õ5ÕÕ"?"܃øÍø͆žžž!!&÷…¦¦×דõR‚úRúŒé…ããùääù‚ßùß‚PPQÊ‚³Ê³ô„‚ôôÈ‚º…ËËÌÁÂÆKÿ‚þþFÿ þ ÿˆìëîíòñIñI………,,„,‚›› n‚ˆeˆ‚eˆev†¼¼v¼¼v¼`ˆŸ`TTŸ`TŸT‹WTÀWWTWW©©Wü‚}ü}6‚$$Ôψ:9:99ç9ç­ê\C‚EEm‚lým‚±–±Û„=5Õ=Õ…"Õ?""܃øÍøÍ‚žÍž!&÷†¦×ד“×õR‚úRúŒ…ŒŒéãù‡ßùßßùßßPˆQQÊQÊÊÄijô‚š‚‚º‚ºˆËËÌÁÂÂÆÇKÿ‚þþGÿþÿþ ÿ†ìëîíòñI„……I…,„›,››nŠ‘enˆˆeˆeeˆev‚¼v¼`Ÿ`„TŸTŸT‚WTWƒü©Wü‚}ü}6$Ô‚YYÏ‚::9热ê­ê†Cê\\CCEmým‚ZZ±ƒÛ±Û=Š455ÕÕ"??""܃øÍÜÍ‚£‰ž!!&&÷&&÷…¦××õ“õRúŒƒéé„ããùéùßP‚QQʃÄÊijô‚Šºº‚ººËËÌÁÂÆKÿ‚þþHÿþÿ‚þþÿˆìëîíòñIñI………,I…,„›nn,nˆ‚eˆeŠveev¼v¼v¼v¼`‰ŸŸTŸ``ŸŸ`T‚WŸW„©üüWüƒ}ü¯}6$ÔYÏ‚9:9ƒç9ç­ê‚C\C…EmEmml„EZC–±ÛŒ45455ÕÕ"??""ÜøÍ£!&‚÷&÷ˆ¦¦×ד×õõR‚úRúŒƒŒŒé†ããùéùéù‚ßùßPQ…ÊÊijʳˆô³ôô‚šôÈ‚ºˆËËÌÁÂÂÆÆKÿ‚þþIÿ‚þþÿþÿ†ìëîíòñI…‚,I,‚nœn‚enˆeˆe‚v¼v‚¼v ¼`…TŸTŸŸT…WŸTWTW‚©Wü}ƒ¯}}6‚$$ÔƒYªYÏ…9Ï:99ç­êƒC\\CE‡mmllmm–±Û±ÛÛ<5455ÕÕ""?""܃øøÜÍ„ÍÍž!„&&÷&÷‡¦¦××õõ“õ„RRúRúŒ‚Œéã‚ùäù‚ßù߉PßPPQPQÊQʳôƒ‚‚È‚º…ËËÌÁÂÆKÿ‚þþSÿþÿˆìëîíòñIñI…‚,…,„n,n,nƒ‘enˆev†¼v¼v¼v¼ƒ``¼`Ÿ„`Ÿ`TŸTWü‚¯¯}6$Ô„YªÏªÏ9ƒç9ç­ê•\\C\CCEmmEmmlmm–±–±Z±Û„Õ455Õ„??""܃øÍø͆!&!&&÷‚¦¦ׄõ“õõR‚úRúŒŒé…ããùäãù‚ßùßP„ßPQQʃÄÊijô„šô‚ô‚‚º‚ºˆËËÌÁÂÆÆÇKÿ‚þþTÿ‚þþÿ†ìëîíòñI…‚,…,„n,n›n‚ˆeˆƒeeˆev‚¼v¼`‚T`ŸTƒŸWŸW…©WW©©ü‚}ü}†66$$Ô$ÔYÏ:‚99ç­ê‚CêC‚EEm‚llm‡Z±C±±Û±Û‹54Õ5Õ?"??""܃øÍÜ̓¢Í¢„!ž!!&÷‰¦¦×”“õ“õõR‚úRúŒ‚éé†ùéãùùäù߃QPPQÊijô‚‚ô‚‚º‚º…ËËÌÌÂÆKÿ‚þþVÿ‹þÿÿìëîíòñIñI…‚,I,†›,n,nœn‚enˆev†¼¼v¼¼v¼`‡T`TTŸ`TŸ„TTWTWTW‚ü©ü‚}ü}6$‡Ô$ÔÔÏϪÏ:9‚ç9ç‚­­ê„C\C\C‚EEm„ýmmZ±Û4=5=55ÕÕ""?""܆øÍøøÍÍ!ƒ&÷&÷…¦¦×דõR‚úRúŒŒééééããééùäùß„PßPPQ‚ÊQÊ‚³Ã³ô„‚ô‚ô‚ºˆËËÌÁÂÂÆÆKÿ‚þþWÿˆþþìëîíòñI…,‚n,nˆev‚¼v¼ `ƒTŸŸT‚WŸW„ü©ü©üƒ}¯¯}6$Ô‚ÏÔφ9Ï::99ç­ê‚CêC‡EmmEmmým‚–Z±Û„44Õ5Õ„??""ÜøÍ‚¢¢!&‚÷!÷ˆ¦¦×ד“õõRúŒŒ‚éé…ùãùääùƒßßù߇PPQßPPQʳô‚Èš‚ºˆËËÌÁÂÆÆÇKÿ‚þþYÿˆþëîíòñIñI…,„n,,›n‚enˆeˆev…¼¼v¼v¼`‰ŸŸTŸ`T`ŸŸTƒÀWŸW‚©Wüƒ}¯¯}6$Ô„ÏÔϪÏ‚9:9ç­êƒCC\CEm‡lýmmE±Z±Û±ÛÛ=5=55Õ?"??""܉øÜøøÍÍ¢Í!‚&&÷ˆ¦¦×דõ“õR‚úRúŒƒŒéã‚ùäù‚ßùßPQʳ…ôôšôô‚ºˆ‚ººËËÌÁÂÆKÿ‚þþYÿ†ìþþíòñI†…I……,I,n,n‚‘eˆ‚eˆev„¼v¼v¼`ŸT…WTWWTW‚ü©ü‚}¯}6ƒ$Ô$ÔϪÏÔÏÏ:9::9çç9çç­ê‚\\CE„mmlým‚±–±Û==5455ÕÕ""?""ÜÍŒøÍÍ¢£!!&÷ˆ¦×“×õ”õõR‚úRúŒéã‚äãù‰ßßùßßPPQPQʳô„‚‚ôô‚ºˆËËÌÁÂÂÆÆKÿ‚þþYÿˆìëîþòñIñI…‚,…,„œ,n,n‡‘‘eˆˆeˆevƒ¼¼v¼`Ÿƒ`ŸTŸT‚WTW©ü„}¯}¯}$$6$Ô$ÔÔYÔYÏYÏ…:9:99ç‚­­ê„\CC\C…EmmEml„Em±Z±ÛÛ==5=Õ55ÕÕ"?""Ü‚øøÍ‚¢Í!&÷&&÷÷¦“¦×דõ×õõRúŒƒŒéã‚ùãù‚ßù߃PßPQʳô‚ô‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíþþI…ƒ,……,„n,n,n‚ˆnˆƒeˆˆev„¼v¼v¼`ˆŸ``TTŸTŸTƒÀWŸW„©©ü©ü‚}ü}…66$6$ÔƒYϪÏ9:†99ç9­ç­ê‚C\C‚EEm‚llm‚±–±…Û±Û==5‡Õ?Õ??""Ü‚øø̓Í!&÷¦דõR‚úRúŒ„ŒŒ…éééùãùßP‚QQʃ³³Ê³ô„ššôÈ‚ƒºº‚º„ËÌÁÂÆKÿ‚þþ;ÿ‚þþÿ þÿ‹ìëîíòñþII…I…ƒ,,…,†n,n,nœnƒ‘enˆƒeeˆevƒ¼¼v¼`ˆŸ`TŸ``TŸT„WTWTW„©©ü©ü‚}¯}‚66$ÔƒªÏÔÏ9†ç9­ç­­ê\‚CCEml„mZCZ±†Û±Û==Û5…Õ?"??"Üø‹Íø¢Í¢Íž!„&&÷!÷†¦¦×ד×õR‚úRúŒ‚Œ‚éé„ããùäù„ßùßùß‚PPQÊ‚³Ê³ô…È‚ô‚š‚ºÌÂÆKÿ‚þþ;ÿ‚þþÿþÿ‚þþÿŠìëîíòñIþþI…‚,…,„n,nœneˆƒeˆˆev„¼v¼v¼`„Ÿ``TŸT„ÀWWTW©ü†}ü}¯}}6”$Ô$ÔÔYªYÏÔÏÏ:Ï::99ç9热ê­ê‚C\CEm‡llmm–±E±„Û±ÛÛ5†ÕÕ"??"ÜøÍøÍÍ¢£!ž!&‚÷&÷¦×…õõ“õõR‚úRúŒ‚ŒéƒééãƒéùäùßP‚ßPQʃijijôÈ‚º…ËËÌÁÂÆKÿ‚þþ;ÿ‚þþÿþÿþÿ†ìëîíòñI†þI…,I…,†n,›nnœn‚‘nˆƒeeˆev‚¼v¼`ŸŒ`Ÿ`T`TŸTTWTÀW„©©üWü‚}¯}‡6$6$$Ô$ԂϪσ:9:9ƒç9ç­ê†C\C\CCE‘mlýmm–±ZC±±Û±Û=ÛÛ5†Õ""?""ÜŒøøÍøÍͣ͢!&„÷!÷÷¦‡×דõ“õõRú‚ŒúŒéã‚ùãùßPQʳô…šÈšôÈ‚º„ÌÌÁÂÆKÿ‚þþ;ÿ‚þþÿþÿìëîíòñIñIIþþ…,……,ƒnn,nƒ‘enˆƒeeˆev‡¼vv¼v¼v¼`ƒŸ`TŸ‚TŸT‚WŸW‚©©ü‚¯¯}$Ô…YªYÏÔÏ‚9:9ç‚­­ê‚CêCEm‚lýmZ±‰Û±ÛÛ55=Õ5Õ"Üø̓!!&÷…¦¦×דõR‚úRúŒŒ‡Œéééã‡ùãùùßßùß…PPQPPQʳô‚…š‚‚º‚º…ËËÌÁÂÆKÿ‚þþ7ÿ þÿþÿ†ìëîíòñI†…þ…,,…,ƒnœœnˆ…eˆˆeˆevƒ¼vv ¼`…Ÿ`TŸ`Ÿ‚TŸTƒWWŸW„ü©ü©ü‚}ü}6$ԂϪÏ‚9Ï9†ç9­çç­êƒCC\CE’mmýmmZ–ZZ±±Û±Û=Û5Õ5‰""5""ÜÜøÜø̓!ž!&‚÷!÷ˆ¦¦×ד“”õR‚úRúŒéãùßP‚QQʳ‡ô³ôššôÈ‚º…ËËÌÌÂÆKÿ‚þþ7ÿ þÿþÿˆìëîíòñIñI„……þþ,†›,››nœn‚enˆev…¼¼v¼v¼`ƒŸ``Ÿ„`ŸTŸTƒWWTW‚©Wü‚}ü}6$Ô‚ªYσ:9:9ƒç9ç­ê†C\\CCEm…lýmmE±Ûƒ=²=5‹?"‹""‹ÜøøÍøÍ‚£ƒ!!&„÷&÷÷¦‡×דõ“õõR‚úRú‚ŒúŒéã‚éãù‚ßùß‚PßPQʳôƒÈ‚ô‚º…˺ÌÌÂÆKÿ‚þþ;ÿ‚þþÿþÿþÿ†ìëîíòñI………IIþ,„››nœn‚enˆ‚eˆeƒvv¼v¼`Ÿ…`TŸTŸT‚WŸW‚ü©ü‚}ü}‚66$ԃϪÔÏ‚9Ï9ç­êƒ\ê\CEmlm±ƒÛÛ²5…"Õ‹‹"Üø’ÍøÍÍ££Íž!ž!!&&÷&÷‰¦¦×דõ“õõR†úRúRúúŒƒŒŒé…ããùéãùƒßùùßP†QQÊQÊʳ‚ô³ôƒ‚‚ô‚ºÌ‚ÁÂÆKÿ‚þþ;ÿ‚þþÿ‚þþÿþÿˆìëîíòñIñI‚……,‚þþ,…›œ,nœneˆ„eˆeˆev†¼v¼v¼v¼‚`¼`‡Ÿ`ŸŸ`ŸŸTƒÀWŸW©ü‚}ü}‚$6$Ô“YÔÏÏÔÏÏ:9::99ç9çç­­ê‚\C\CCEmmEmllmm±ZZ±±Û=5‹‹Õ"‹‹"øÜÜøø͉£££!ž!&÷…“¦×““õ‚RRúŒƒŒŒéã†ùãùãùùßùßPQÊ„Äó³ô‡‚‚š‚‚º‚ºÌ„ÂÆÆÇKÿ‚þþ;ÿ‚þþÿþÿ†ìëîíòñI‰……II…,,þ,›n‚‘nˆ‚eˆev‚¼v¼`‰Ÿ`Ÿ`ŸŸTTŸT‚WTWTW‚©©üƒ}ü¯}„66$$ԂϪÏ‚9:9ç‚­­ê„\\C\CEmlm‚±m±Û5‡‹5‹‹""‹øÍ…žž!&÷¦×…““”õõR‚úRúŒƒŒéãùß…PPßPPQ‰Êʳij³þ³³ôƒ‚šš‚‚º‚º…ËËÌÌÂÆKÿ‚þþ;ÿ‚þþÿˆìëîíòñIñI‚……,†þþ››œ›nˆ„eeˆˆev†¼v¼v¼v¼`ŠŸ`Ÿ`TŸ`TŸŸT‚WŸW©ü}ƒ6$6$Ô„YÔϪÏ‚9:9ƒç9ç­‚ê­ê‚C\CŠEEmEmllmmZ±Û=5‹ˆÜ"ÜøøÍÍø͂̓!ž!&‚÷&÷…¦¦×דõR„úRúRúŒéƒééã„éãùãù‚ßù߆PQPQPQÊ„Äʳ³þ‚ôôš‚‚‚º‡ËÌÁÂÂÆÆKÿ‚þþYÿ†ìëîíòñI………II…,…þ›n,›neˆev‚¼v ¼`„Ÿ`Ÿ`Ÿ‚TŸT‚WTW‚©Wü‚¯ü}…$66$$Ô‚YÔφ:9Ï:99ç‚­­ê‚\\C‚EEm‚lým‚±–±‚Û±Û5Õ‹ÜøÍž!ž!!&&÷'÷†¦¦×ד“õRúŒƒŒŒéãù߃PßPQÊ„³³Ê³ þ‚ºÌ‚ÁÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚›þ nˆev„¼v¼v¼`ˆŸ`Ÿ`ŸŸTŸT„WŸWTW„üWü©üƒ}}¯}$ƒÔÔYÔψ99:99ç9ç­êƒCê\C‡EEmEmmým…±ZZ±±Ûƒ=Û=5‚ð5‹Ü„øøÍøÍ‚£Íƒ!ž!&‚÷!÷…¦¦×דõR‚úRúŒƒŒŒ†ééãééãéùßPQʃij³ þ‚ºÌÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››þþnˆ„eeˆˆev‚¼v¼‚`¼`‡Ÿ`Ÿ`Ÿ`TŸTW„©©ü©ü‚¯¯}„66$$ÔYÏÔÏ:9ç‚­­êƒC\\C‚EEm‚lým‚CC±Û5‹Ü̓££ƒ!&!&÷¦ׂ““õRƒúúRúŒŒ…éãéã‚ùéùß‚PQPQʄijʳþº†ÌÁÂÆÆÇKÿ‚þþYÿˆìëîíòñIñI‚……,…››nnþnƒˆˆeˆev‚¼v¼v¼`ŠŸ`Ÿ`ŸŸ`TTŸTƒÀWTW‚ü©ü‚}ü}6$Ԫς::9†ç9­ç­­ê‚C\CE„mmlýmŠ˜CC±CÛ\ÛÛ=5‚ðð‹Ü‚øøÍ‚££ƒž!!&÷…¦×ד“õRúŒ‚ããùßPQʃÄijþ†ÌÌÂÂÆÆKÿ‚þþYÿ†ìëîíòñI………II…,Œ››,,nþþnˆnˆnˆ‚eˆevƒ¼vv¼‚`¼`ˆŸ`TŸ`TŸŸT‚WTW‚©©üƒ}ü¯}„66$$ԄϪÏÔÏ‚::9‚ç9ç‚­­ê‚CêC†EmmEmmþþ‚ÆÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››n‚þnˆev‚¼v¼`ƒŸ``ŸT‚WTW‚©Wü}ƒ6$6$ÔÏ‹9Ï:99çç­ç­­ê‚C\C‚EEmlþ þ…ÁÂÆÆÇKÿ‚þþYÿ†ìëîíòñI………II…,„››,,nƒþþeˆ‚eˆev…¼v¼¼v¼‚`¼`Ÿ…`Ÿ`ŸŸTƒÀWŸWƒü©©ü„¯¯}¯}6$†ÔÔYϪÔχ99:99ç9ç‚­­ê‚CêCEm†lmm–±–±ÛŒ==4Õ55ÕÕ??""܃øÍøÍ‚£Íž‚!!&÷¦ƒ×דõRúŒ‚Œ…éãéãƒùääùߌPPQßPQQÊQÊÊijþ†ºËËÌÌÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››n‚þeˆev…¼v¼¼e¼`ƒŸ`TŸ‡TTWTWWTW©üƒ¯}ü}6$ÔªÏ:9„çç­ç­êƒCCêCŠEmmEmllmm–±Û±ÛÛ=5=Õ5Õ?"??""܉øÍÜøÍÍ£žÍž‚!!&‚÷&÷¦ׂ““õ†RRúRúRúŒƒŒŒ…éãééã‚ùäù߇PPQPQÊQʂij þºˆËËÌÁÂóÆÇKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n„‘‘þþˆev¼v¼‚`¼`ˆŸ`TŸ`TŸŸT‚WŸWƒ©W©ü‚}ü}‚66$ԃϪYÏ:ˆ99ç9çç­­ê‚C\CEm‚lým‚Z–±Û‡=4Õ45ÕÕ"Üø͈ͣžž!&‰÷÷&÷÷¦¦×ד‚õõRƒúúRúŒŒéãäùßP„QPQQÊ„³Ä³³ þ‚‚º‚º…ËËÌÁÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››nˆeˆˆþˆeˆˆe„veev¼v¼`‡Ÿ``ŸŸ`TŸT„ÀWWTW„ü©üWü‚}¯}6‚$$ÔƒÏϪÏ9ç­ê\‘CCEEmEmlýmmZC–±Z±Û…==4Õ5Õ?"„ÜÜøøÍ£ž‚!&÷…¦¦×דõRúŒ†ééééã‚äéùßù߃PßPQÊ„ÄÊijþƒÈ‚ô‚ºˆËËÌÌÂÂÆÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆ‚þþe‚v¼v¼‚`¼`„ŸŸ`TŸ‡TŸTTWTÀW„©üü©ü‚}¯}$ԂϪφ:Ï::99ç„­ç­­ê‚C\C‚EEmŠlýmm–±±C±±Û=ÛÕÕ=ÕÕ?"Õ?""Ü„øøÜ¢Íþ…!&&þ÷þ„¦×דþõþRþƒúŒŒþŒþþãƒäùäùߊPPßPQQÊQÊʳƒþþ³ôƒ‚‚ô‚‰º‚ººËËÌÁÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆ‚eþe‚vv¼v¼`‹Ÿ``Ÿ`T`TŸTŸT‚WŸW‚©Wü†}ü}¯}}6$Ô„YÔYÔσ99:9ç­êC‘EEmEmlýlmE–±±Z±Û±Û‹=455ÕÕ""?""܉jÍø͢͞žþ!&þ× þúþ‚úú þ‚þ„ããäãù߈PPQPPQÊQÊijôƒšôô‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆ‚þþe„v¼v¼v¼‚`¼`ŠŸ`Ÿ`TŸ`ŸTŸTƒWWŸW‚ü©ü‚}ü}6$ÔÏ…YÏÏ::9‡ç9ç­ç­­ê†C\CCEEmlm†Z±˜C±±Ûˆ=5=Õ5ÕÕð"܃ÍøøÍ‚¢žþ„!!&þ‚÷÷þƒ¦××þ‚õõþúþ‚úŒþ‚Œþ‚þ‚éþãùßPßPPQQÊQÊʳ³Ê³ô„‚šôÈ‚º…ËËÌÁÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆe‚ˆþev…¼v¼¼v¼`ˆŸ`Ÿ`TTŸŸTƒWWTW‚©Wü‚}ü}„66$$ÔƒYÔÔÏ:‚99ç­ê\CEm±„ÛÛ==5‡Õ?Õ??""Üø̓žÍ¢þ„!&þ‚&÷þ‚¦“þõRþõþ‚úŒþŒþ„éãéþƒãéãù߃PQPQ‚ÊQʳ‚ô³ôƒ‚‚ô‚Šºº‚ººËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆeƒþþevƒ¼vv¼`ˆŸ`Ÿ``TŸŸT‚WŸW„ü©©Wü‰}¯}¯}}6$6$ÔƒÏÏÔÏ‚::9†ç9çç­­ê\ƒCCEm‡llmm–±–±Û=Û5=Õ5Õ?""?""Üø̓¢žþ!‚&&þ÷þ‚÷×þõþþ‚úŒþƒŒþþƒãùãù‚ßùß…PßPQQʃÄÊijô‚šô‚º…˺ÌÌÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆe…þvv¼v¼v¼ƒ``¼`‚Ÿ`Ÿ„`ŸŸ`T‚WTW‚©©ü‚}¯}ƒ$$6$ԂϪÏ‚::9„çç­ç­êƒC\\C‹EEmmllmm–±Z±‚Û±Û5Õ„"?""܃øÍÜ̓£Í£þ!‚&÷þ‚דþõRþRþ‚úŒþŒþ‚þ„ããäãùßP„QPQQʃ³³Ê³ôƒ‚ôÈ‚ºˆÌËÌÁÂÆÆÇKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆeƒvþþvƒ¼¼v¼`ˆŸ`Ÿ`TTŸŸT„WTWTW‚ü©ü‚}ü}6$ÔŠYªYϪÏÏ:9Ï9热ê­ê‚C\C‡EmmEmlým‚ZE±ŒÛ±ÛÛ==Õ55Õ"ð"܉øÍøøÍÍ£žþ„ž!!&þ‚÷×þõRþúþ‚úúþƒŒþ‚þéãùß„PPßPQʳôƒÈ‚ô‚‰º‚ººËËÌÌÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆevþ¼v¼‚`¼`‰Ÿ`ŸŸ`3TŸŸT‚WŸW‚©Wüƒ}¯¯}‚66$ԃϪYÏ„9::9ç­ê‚CêC‚EEm‰ýmmZ±ZC±±Û=5†ð"Õ?""ÜøÍžþ!þ‚÷÷þƒ×דþ‚õõþRþ‚úŒþƒŒŒþ‚þ‚ééþ„ãéùãù‚ßùßPQ…ÊÊÄÊijô†‚ôÈš‚‚ºˆËËÌÁÂÂÆÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…þþ¼¼v¼`ƒŸ``ŸT‚WTW„ü©üWüƒ}}¯}6$Ô‚YÔσ99:9热ê­ê‚\\CEƒmmýmZ±Û‡=5=Õ5ÕÕ"Üø̓£Íþ!þ¦× þúþ‚úúþƒŒŒþƒéþ„ãùùäùßP‰QQÊQÊÊijʳ„ôôšô‚‰º‚ººËËÌÁÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆevƒ¼vþ¼‚`¼`Ÿ`ŸTƒWWTW‚©©ü‚¯¯}6$ÔƒYªªχ::9:9ç9ç­ê‡CêC\CCEm—lýmmZ–ZZ±±Û±Û=Û5Õ55ÕÕð?"Ü„øÍøøÍ‚žÍþ…žþþ!&þ†÷¦¦×דþRþRþ‚úŒþƒŒþ…ééþƒããéùßP‚QQʆ³Ä³³ô³ôƒšôÈ‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆevƒ¼þþ¼‚`¼`Ÿ`ŸTƒŸWŸW‚©©üƒ}¯¯}…66$6$ԅϪÏÏÔÏ:ˆ99çç­ç­­ê„\êCêC‚EEmlmƒE±C±Û=‰Õ55?"Õ?""ÜøÍ‚£ž†!!&&÷&÷ƒ¦“דõRþƒúúRúŒ‚ééã‚ùéù߃PPßPQÊ‚³Ä³ˆô³ôôÈ‚ôÈ‚ºˆËËÌÁÂÆÆÇKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev†¼v¼v¼þ¼ƒ``¼`‘ŸŸ`T`TŸŸTŸTTWTWWTW„üWüWü‚¯¯}†66$6$$ÔƒYÏYÏŒ9::99ç9­çç­­êƒC\\CEˆmmlmm–±˜±…Û±ÛÛ=5‡ÕÕ"??""Ü‚øÜÍ„¢žž!&÷†¦¦×ד“õRþRúŒŒéã„éãùäùƒßßù߆PQPPQQÊ‚³Ä³ôƒ‚‚š‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‰¼v¼¼þ¼`¼¼`‡Ÿ`TŸ`TŸT‚WŸW©üƒ}¯¯}„66$6$…ÔÔYϪÏ‚9:9ƒç9ç­‚ê­ê‡C\C\CCEm‡llmm–±Z±ÛŠ=Û=Õ55ÕÕ"?"܃Íøø͉žÍžžž!!&÷ƒ¦×ד„”õõRþúþƒúŒúŒé…ããùäãùßPQÊ‚³Ê³ôƒšôô‚ºˆËËÌÁÂÂÆÇKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆevŒ¼v¼v¼¼vþþ¼`¼`†Ÿ`Ÿ``TŸT‚WTW‚©Wüƒ}¯¯}‚66$Ô„YÔÏÔÏ…9::99ç‚­­ê†CêC\CCEmlmm–±±Z±±Û±ÛÛ=‰Õ5ÕÕ"Õ?""܃øÍÜÍžƒ£žž!‚&&÷…¦×ד“õ‚RõþúþúŒ…ŒŒŒ‚ééãùƒßùùßPQʳô„‚ôôÈ‚‚º‚º„ËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼þ`†ŸTŸ`T`TƒÀWŸW‚ü©üƒ}}¯}6$ÔƒYÏYÏ9ƒç9ç­ê‚C\C‹EmmEmlýmm––±ÛŒ=5=Õ5ÕÕ"??""܃øÍø͉¢ÍÍžžž!!&÷†¦¦×ד“õ„RRúRú‚ŒúŒ‚Œ‚ééãùäùß…PQPPQʃÄÊij„ô³ôô‚„È‚º‚ºˆËËÌÁÂÂÆÇKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼‚þþ`Ÿ`ƒŸŸTŸ‡TTWTWWTW‚©Wü¯}6$$6ÔÔ$ÔÔYÔϪφ:Ï::99ç‚­­êC\„CCEEm‡lýmmE±–±Û=‰5=Õ5ÕÕ"??"ƒÜÜøÍ£ž!„&&÷&÷‚¦×“‚õõR‚úRúŒ‚Œ‚ééã„éãùãùß…PßßPPQʃijʳô‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼þ`‡Ÿ`T``T`T‚WŸWü©ü‚}¯}‡66$6$Ô$ԄϪÏYÏ9ƒç9ç­êˆ\\C\CCEEm‚lým±‘ÛÛ±=Û=5=55ÕÕ"??""Üø̓¢£Íž!&Š÷÷&÷÷¦¦×דõ†RRúRúRúŒ‚Œ†ééééã‚ùäùƒßßùß„PPQPQ‚ÊQʳô‚È‚º‡ËÌÁÂÂÆÇKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev‡¼v¼v¼¼v¼`†þþ``Ÿ`Ÿ`T„WÀWTW©üƒ}¯¯}‚66$Ô†ªYÏYÏÏ:‚99ç‚­­ê‚C\CEˆmmýmmE–Z±ŽÛ±==Û54Õ5ÕÕ"??"‘ÜÜøÍÜͣ͢žÍžžž!!&÷ƒ¦¦×“õ‚RRúŒ„ŒŒ†éééãéãùƒßßùߌPßPQQÊQÊÊÄÊijô‚‚ô‚Šºº‚ººËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`‡þ`Ÿ`Ÿ`TŸ‚TŸTÀW…©©Wü©ü‚¯¯}…66$6$ԂϪÏ:9ç‚­­ê„\\C\CmšllmmZCZ˜±±Û±ÛÛ=5=Õ5ÕÕ""?""Ü„øÍøø̓žÍ£ž‚!!&÷‰¦“×ד“”õõR‚úRúŒéˆééããùäéùßP„QPQQÊijô„‚š‚ô‚º‡ËÌÁÂÂÆÇKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼`‰þþ`Ÿ``TŸŸT„WTWÀW‚©©üˆ}¯}¯}}66$Ô„YÔÏÔω9Ï::9ç9çç­ê†CêC\CCE‚mml‚m–±‰Û±Û=Û5=Õ5Õ?"Ü„øÍÍøÍ‚žž‚!!&÷„¦×דõ„RRúRúŒ…ŒŒŒéã‚ùäù‚ßù߈PßPPQQÊQÊ‚Ãʳô‚šô‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆevƒ¼¼v¼`‚ŸþŸTŸTƒŸWTW„üW©©ü‚¯¯}6$ÔÏÔÏ9ç‚­­êC‹mmEmmlmm–±–±Û‰=5=55Õ""?"Ü‚øøÍ…£¢žž!&÷‚¦¦“õRúŒ‚Œé…ããùäãù„ßùßùßPQÊijôƒ‚šô‚ºˆËËÌÁÂÂÆÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev†¼vv¼¼v¼`…Ÿ`þþ`ŸTW‚ŸTWü¯}6$ÔÏŒ::Ï:9çç9ç­ç­ê‚C\CŒEEmEmllmm–±Z±Û±Û==5=Õ5ÕÕ"??""܃øÍø̓£Íž‚!!&÷ƒ¦¦×“õR‚úRúŒ„ŒŒéãù߃PßPQʃÄÊó‚ô³ô‡‚šš‚‚º‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼‚`¼`…Ÿ``TþŸT‚ŸTW‚©WüŒ}¯}¯}}66$6$$Ô„YÏϪÏ…99:99ç­ê„\êC\C‚EEmým‚ZZ±Ûƒ=5Õ5†Õ""?""Ü‚ÍøÍž…Ížž!!&÷‚¦¦דõR‚úRúŒ‚Œ‚ééãƒéùäù‚ßùß„PPQPQ‡ÊQÊÊijijô„šô‚È‚ºˆËËÌÁÂÆÆÇKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev†¼¼v¼¼v¼`‡TŸŸ`TþþŸˆTWTWŸWWTW‚ü©ü‚¯¯}…66$6$Ô‘YÏÔÏÏ::9:99ç9çç­­ê„\\C\CŒEEmEmlýmmZ±–±„Û±ÛÛ=‚Õ5Õ„??""܃øÍø͉¢ÍÍžžž!!&‚÷!÷ƒ¦¦×“õR‚úRúŒ‚Œ†éééãéã‚ùãùß…PßPPQÊóô‰‚ô‚ô‚‚ºº‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼‚`¼`ŽŸ`TŸTþTŸTTŸWWŸW‚©Wü¯}6$…ÔÔYϪÏ…:9:99ç­ê‚C\C‚EEmým±Û=5‡Õ?"??""܃øÍøÍ£ž!&&÷÷&÷÷¦“×ד“õR‚úRúŒƒŒŒ…éééã‚äãùß‚PßPQʳô„‚š‚È‚ºˆËËÌÌÂÂÆÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼`ŽŸ`Ÿ`T`TŸþþTWTŸWƒüW©ü¯}6$ÔYÏÔÏÏ::9:99ç9ç…­ê­êê\‰CCEEmEmlým‚±–±Û±ÛÛ=Û=Õ55Õ"??""܃øÍøÍ„£Íž¢ž!&÷…¦¦×““õRúŒƒŒéãˆùãùãùùßùßPƒQPQʳô…šôÈ‚ô‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev„¼v¼v¼`„Ÿ`Ÿ`Ÿ‡TþTWWŸTWƒüü©ü‡¯}¯¯}}6$‡Ô$ÔÔYϪÏ:9ç­ê‚C\C‚EEm…llmEmZ‚±±Û5‡ÕÕ""?""܇øÍÍø¢Í£ž!‚&&÷¦ׄ““õõR‚úRúŒƒŒéãùß…PßPßPQÊ‚Äʳô‚‚È‚ºˆËËÌÁÂÆÆÇKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆƒeeˆevƒ¼¼v¼v¼`ˆŸ`Ÿ`Ÿ`TŸT‚þþWTWƒü©©ü‚¯¯}…66$6$ÔŒªYÏYÏÏ:Ï::99ç­êƒC\\C‹EEmEmmlmmZC±Û5Õ?"܉øÜÍøÍ͢͢ž‚!!&÷¦×“‚õõR‚úRúŒƒŒŒƒéé‚ãã ù‚ßùß‚PQP‚QQʃijijôƒšôô‚Šºº‚ººËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆƒeeˆev‚¼v¼`…Ÿ`Ÿ`TŸ`TþW©ü‚}¯}‚66$Ô…ªÏªÏYÏ9ç­‚ê­ê\C‚EEm‡llmm–Zm±Û±=ÛÛ=4Õ5Õ?"Õ"Ü‚Íø͉£žÍ££žž!!&÷‰¦¦×דõ“õõRƒúúRúŒƒŒéãéù߃PQPQÊ‚Äij†ôôÈ‚‚ô‚ºˆÌºÌÁÂÂÆÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆ‚eˆev„¼v¼v¼`ŠŸ`TŸ`TŸŸTŸT‚þþW©ü¯}6Ô‚ªYÏ:‚99ç­êƒCC\CE‡mmllmmE±Û±ÛÛ=5=Õ5ÕÕ"??""܃øÍÜÍ‚žž‚!!&÷…¦“ד“õRúŒ‚Œéãƒùäéùß…PPßPPQ„ÊÊÄijô‚º…ÌËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆ‚eˆev„¼v¼v¼`…Ÿ``T`Ÿ‚TŸT„WTWþW‚©WüŒ¯}}¯}}6$$6$$ԃϪYχ9Ï:99ç9ç‚­­ê\ŽCCEmmEmmýmm–Z–±Û‰5=Õ5ÕÕ""?"…ÜÜøÍø͉££¢žžž!!&‚÷&÷†¦¦×ד“õƒRúRú†ŒúŒŒŒ‚ééãùßP‚QQʃÄÊijôƒ‚šô‚º…ËËÌÁÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆ…eˆeˆˆevƒ¼vv¼`ˆŸT`Ÿ`TŸŸT‘WTWWþWW©©W©üü¯ü¯¯}„6$6$ÔYÔÏÔYÏÏ;99:99ç­ê\CEm‡lýlmE±–±Û…=5=Õ5Õ„??""܉ÍÍøÍÍ¢žÍ£ž„!!&&÷‰“¦×ד“”õõR‚úRúŒ„ŒŒ†ééãéã‚ùäùß„PQPPQʳô‚‚ô‚‚º‚ºˆËËÌÌÂÆÆÇKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼¼v¼v¼`„TTŸ`ŸT‹ÀWŸWWþþWüü©ü¯}‚66$ÔÏ:9ç­ê‚\\CE„mmlým±Û=Û5=Õ5Õ?"??""܃øܢ͂žž!&÷‡¦¦×““õ“õ†RRúRúRúŒé‚éãù‚ßùßP„QQÊQÊ‚Äʳô…šô‚šÈ‚ƒº‚‚º„ËÌÁÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆ…eˆeˆˆevƒ¼vv¼ƒ``¼`Ÿ`…TŸŸTŸT…WTWTTW‡þWü©©üü¯}6$ˆÔÔYÔÔYÏÔÏ9ƒçç9ç­ê„\CC\C‡EmmEmlým‚±–±Û‡=5=55ÕÕ"ÜŠÍøÜͣ͢£¢£ž!„&&÷&÷…¦¦×דõRúŠŒúŒŒŒŒŒéã‚éãùß‚PßP‰QQÊQÊÊijʳô„šô‚š‚ºˆËËÌÁÂÂÆÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev„¼v¼v¼`‰ŸŸTŸ`T`TŸTÀWƒ©þþü¯}ƒ6$6$…ÔÔYϪÏ:†99çç­ç­ê‚C\C‚EEml‚EmZ‹±±Û±Û==54Õ5Õ„??""Ü„øÍøø͈ž££žž!!&‚÷&÷‚“¦“õR‚úRúŒ‚Œé‚éãƒùùãùßPQʳô‚‚ô‚º…ËËÌÁÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››nˆ‚eˆevƒ¼¼v¼ `TŸ…TTWTTWŠü©þ©üü¯¯}¯}†66$$Ô$Ô‚ªYσ:9:9ç…­ê­êê\C\CCEEmEmllmmZC±Û‰5=55Õ?""?"ƒÜÜø͉¢£žžžž!!&‚÷&÷…¦¦×דõRú‚ŒúŒ‚Œƒãééãéùƒßßù߃PQPQ„ÊÊÄʳô„‚ôôÈ‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,nŠ‘enˆˆeˆeeˆev„¼v¼v¼`Ÿƒ`ŸŸTƒWWTW†©©üþþü¯}6$‚Ô$ÔƒÏÔÔÏ„::99ç­ê‚CêC‚EEm‡llmm–±–±‰Û±ÛÛ=5=Õ5Õ„"?""܃jøø̓¢¢£ž!&‚÷&÷‚¦÷“ƒ”õõR‚úRúŒ‚Œ‚ééã„ùãùãùß„PßßPQʃÄÄʳô„È‚‚ô‚ºˆËºÌÁÂÆÆÇKÿ‚þþYÿˆìëîíòñIñI‚……,‚››nˆevƒ¼¼v¼`‡Ÿ``Ÿ`T`TƒŸWÀW‡üWü©üþü}6†$ÔÔYÔÔÏ…9::99ç­ê‚C\CEˆmllmm–±–±Ûƒ=5Õ5?"܃øÍø͇¢žžžž!‚&&÷…צ×דõR„úRúRúŒƒŒŒ‚ééã‚äãùßP‚ßPQÊijô‚‰º‚ººÌËÌÌÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘eˆev‚¼v¼`„Ÿ`TTŸˆTŸTTWTWTW‚©©ü„þþ¯¯}6$†ÔÔYÔÔYσ:9:9ç‚­­ê„CêC\Cm…lýmm–±Û=‚Õ5Õ‘?""?"ÜÜøÍÜ¢ÍÍ¢£¢£ž‚&!&÷†¦¦“ד“õRúŒƒŒ‚ééãƒùùäù߈PQPPQQÊQÊijôƒ‚šô‚ºˆËËÌÁÂÂÆÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚›› nˆƒeˆˆev„¼v¼v¼`Ÿ`Ÿ‚TŸT„ÀWŸTW„üWüWü‚}þ}6$ÔÏ:…9çç9ç­ê‚C\C‹EEmEmmýmmE–±Û‹=5Õ55Õ?"??"܃øÍøÍ‚žž†!!&&÷&÷ƒ×¦×“ˆ”RõõRRúRúŒ…Œééã‚éãùßùß‚PPQ…ÊQÊÄijô‚‚ô‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚enˆeˆev‚¼v¼`ˆŸŸTŸ`TŸŸT‚WTW‚ü©ü‡}¯þþ}}6$Ô„YÔÔYÏ…99:99ç‚­­ê\C‚EEmˆlýmmE–±Z±‰Û==Û=Õ5ÕÕ"܃øÍÜÍ‚£¢ž!&÷‡¦“¦““õ×õ„RRúRúŒƒŒŒ‚éé…ããùéãùßPŠQPPQÊQÊÊÄʳô„š‚ôÈ‚‰º‚ººËËÌÌÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››n‚‘eˆev‡¼v¼v¼¼v¼ `‡Ÿ`TŸŸT`T‚WTW‚©©ü‡}ü}}þ}}6‚$$ÔƒÏϪÏ:9†ç9ç­ç­ê\CEˆmllýlmE–±Û…55=Õ5Õ„"?""܃øÍ¢̓¢žÍž‚!!&÷¦×…“õ“õõRú‚ŒúŒ‚Œéãùäùß‹PPQQÊQÊÊijijô‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,nˆev‚¼v¼`ˆŸ`TŸŸ`ŸŸTŠWTWWTWW©©Wüƒ}¯¯}6$ÔƒYÔYÏ‚::9ç­ê‚C\C„mmEml„mE±–±Û±ÛÛ=5=55Õ?Õ?"܃øøÜÍ„žÍžž„!!&&÷…¦×ד“õR‚úRúŒ‡ŒŒé‚ééã‚éãùß„PPQPQ‚ÊQʳƒôôšô‚º…ËËÌÁÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››n‚eeˆƒeˆˆev„¼v¼v¼`Ÿ`TŸT‚WŸW„üWüWüƒ}}¯}6$Ô‚ÏÔÏ:†99ç9çç­êƒCê\C‚EEm‚llm‚±–±Û±Û==5=Õ5Õ?"Õ?""ÜøÍ…ž¢£žž!&÷ƒ¦¦×“õR„úRúRúŒ‡ŒŒé…ããùéãù‚ßù߇PßPQQÊQÊ„³Ã³³ô‚ô‚‰º‚ººËËÌÌÂÆKÿ‚þþYÿ†ìëîíòñI………II…,†››,,nœn„ˆeˆˆeˆev„¼v¼v¼`†ŸTŸŸ`TŸT‚WŸW‚ü©ü‚¯¯}…6$ýý$ԈϪYYÏÏ::9ç­êƒCC\CƒEmEl…mmZC–±Û=5‡ÕÕ"??""Ü‚øÜÍ‚¢£ž‚!!&‚÷&÷†¦¦×ד“õRúŒ‚ŒŠééééããùùäùß„PPQPQʳô‚º„ËÌÁÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,„››nœnƒ‘enˆ‚eˆevƒ¼vv¼ `‡TŸ`TŸTŸT‚WŸW‚©©üƒ}¯¯}„66$ýÔÏ‚::9†çç­ç­­ê‚\\C„EEmEl„mmZZ±‚ÛÛ=‰Õ5ÕÕ""?""܃ÍøøÍ…££Íž£ž„!!&&÷ƒ¦¦×“õ„RRúRúŒ…ŒŒéã„éãùäù߃PQPQʳôƒ‚šô‚ºˆËËÌÁÂÆÆÇKÿ‚þþYÿ†ìëîíòñI………II…,›n‚‘‘ˆeˆev…¼¼v¼v¼‚`¼`Ÿ‡`TŸTŸTŸT…WWŸWTW„üWüWü‡¯¯}¯}}6$ýÔ„YϪYÏ:ƒ9ç9ç‚­­ê„\CC\CŽEEmEmlýmmZ±–±±Û…=5=Õ5Õ„??""Üø͉£žÍžžž!!&÷‰¦¦×““õ“õõRúŒ‚Œé…ããùäãùƒßßùß‹PßßPPQQÊQÊʳô‚º…ËËÌÌÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,„››œ›nƒ‘enˆevƒ¼vv¼`ˆŸ`T`ŸŸTŸT‚WTW©ü‚}¯}6‚$$Ô‚ÏÔω:9:99ç9çç­ê‚C\CŠEEmEmlýlmm±Û±Û==5=Õ55?""?""Ü‚øÜÍ‚žž‚!!&‚÷&÷¦דõRúŒ‚Œé…ããéùäù߇PPQQPPQÊij†ôôššôô‚ƒºº‚º‡ËÌÁÂÂÆÆKÿ‚þþYÿ†ìëîíòñI………II…,„››n,neˆƒeeˆevƒ¼¼v¼‚`¼`„Ÿ`Ÿ`ŸT‚WTW‚©Wü‚¯ü}6$Ô†YYÏYYÏ:ˆ99çç­ç­­ê\„CCEEm‡lýmmE–Z±Û…=5=Õ5Õ„??""܃Íøø̓£Í¢ž‚!!&÷¦¦×ד“”õõRRúRRúRúŒ‚Œéã„ùéùäù„ßùßùß‚PPQʳôƒÈ‚ô‚ºˆËËÌÁÂÆÆÇKÿ‚þþYÿˆìëîíòñIñI‚……,›‚,›n‚ˆnˆev„¼v¼v¼`…Ÿ`Ÿ`TŸ3TƒWWTW‚ü©üƒ}}¯}„66$$Ô„ýYÏYÏ9‚ç9ç‚ê­ê‚C\CŒEEmEmlýmmE±–±Û=5„Õ?"?"܉øÍÜøÍÍ£žÍž‚!!&÷…¦“×דõRúŒ‚Œéã‚ùãù߈PPQPQPQQÊóôˆ‚ô‚ô‚‚º‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,›nƒ‘enˆƒeˆˆev„¼v¼v¼`ˆŸ`Ÿ`Ÿ`TŸT„ŸWWTW‚©Wü‚¯ü}ƒ$$6$…ÔÔYÏýσ:Ï:9热ê­êƒC\\C‚EEm‚llm‚±m±ŒÛÛ=Û4Õ5ÕÕ"Õ?"ƒÜÜøÍ‚žÍž!‚&&÷ƒ¦¦×“õR‚úRúŒ„ŒŒé‚éã‚ùãù߃PßPQÊ‚³Ê³ôš‚ºˆËËÌÁÂÂÆÆKÿ‚þþYÿˆìëîíòñIñI‚…… ,‚n›n‚‘eˆƒeeˆev…¼v¼¼v¼`…Ÿ`Ÿ`TŸTƒWTŸW‚üWüƒ}}¯}„6$6$Ô„ªYýýσ9::9ç­ê\CE‚mml„E–±Z±Û=55=Õ5ÕÕ""?""Üjøø͢͢žÍž£žž!!&÷ƒ¦¦×“õ‚RRúŒé‚ããùƒßßùß…PPQPPQ„ÊÊÄijô…ššô‚È‚º…ËËÌÁÂÆKÿ‚þþYÿ†ìëîíòñI………II…,…n,nœ›nˆev…¼v¼¼v¼`†Ÿ`TŸ`TŸTƒWWTW‚üWü‚¯ü}‚66$ԃϪÔÏ‚::9ç‚­­êƒCC\C‡EmEmmllm‚±–±Û‹5=Õ5ÕÕð"?""Ü„øÍøø͈ž¢ž£žž!!&÷‚¦¦×…““”õõRúŒƒŒŒéã‚éãù‚ßùßP‚QQʃÄÊʳ†ô³ôôšÈ‚Šºº‚ººËËÌÁÂÆ ÿ‚þþÿþÿþ2ÿ‚þþYÿˆìëîíòñIñI‚……,…›,œn,n‚enˆeˆevƒ¼¼v¼`ˆŸ``ŸŸ`TŸT…WTWWTW‚üWüƒ}}¯}…66$6$Ô‚YªÏ:ƒç99ç­ê‚C\CŠEEmEmllmmZ±ŠÛÛ=5=Õ5Õ?Õ"ƒÜÜøÍ‹¢Í¢£žžžž!!&÷‡¦¦×““õ“õ„RúúRúŒ‚ŒéãùßPQ‚Êʳô…ÈšôÈš‚º…˺ÌÁÂÆ ÿ‚þþÿ„þþÿÿþ3ÿ‚þþYÿ†ìëîíòñI………II…,‚n›n‚‘eˆƒeeˆev‚¼v¼`‰ŸŸ`TŸTŸT`TÀW‚ü©ü¯}‚66$Ô…YÔYÏÔψ99:9ç9çç­ê\„CCEEmƒlýlmƒZ±±Û„=Û5=5?"Üø†ÍÍ£¢¢£ž‚!!&ˆ÷÷&÷÷¦“¦“õRú‚ŒúŒƒŒŒéƒééãƒéùãù߇PQPQQÊQÊ‚Äʳô‚º…ÌËÌÁÂÆ ÿ‚þþÿ…þþÿþþ4ÿ‚þþYÿˆìëîíòñIñI‚……,…›,›n›n‚‘nˆ‚eˆev„¼v¼v¼‚`¼`‰Ÿ``Ÿ`T`ŸŸT„WTWTW‚©Wü¯}„66$6$ԂϪχ:Ïý:9ç9ç­êC‰EEmEmlýmm±Û=5‚ÕÕ?‚""ÜøÍ„žžž!&÷‡¦×ד“õ“õ„RRúRúŒƒŒéãùƒßßù߃PPßPˆQÊQÊÊijʳôƒššô‚‰º‚ººËËÌÁÂÆ ÿ‚þþÿþ4ÿ‚þþYÿ†ìëîíòñI………II…,†›n,nnœnƒˆenˆ‚eˆev‚¼v¼`„Ÿ`Ÿ`ŸTWTWƒüW©ü‚¯¯}‚66$ÔƒYÔYÏ‹99ýýçç9çç­­ê\„CCEEmým–±†ÛÛ±Û=Û5‡ÕÕ""?""Üø̓¢£¢ž!&÷…¦×ד“õ†RRúRúRúŒéãƒéããùƒßßùßP‚QQʳô„‚ôôÈ‚º„ËÌÁÂÆÿ þÿþ5ÿ‚þþYÿˆìëîíòñIñI‚……,I,ƒ›n,nˆ‚eˆev†¼v¼v¼v¼‚`¼`…Ÿ`Ÿ`TŸTÀWü¯}6$Ô‡YϪYYÏÏ:†9ýçç­ç­ê\CEˆmmýmmEZ–±Û„5455Õ?"܃øÍøÍ‚žÍž‚!!&÷†¦¦×ד“õRúŒ…ŒŒŒéãù‚ßù߇PQPQPQQʃÄÊij…ô³ôôš‚Œº‚ººËºÌÁÂÆÆÇÿ þÿþÿÿ†ìëîíòñI„……II,ƒn,›n‚enˆ‚eˆev‚¼v¼`‰Ÿ`ŸŸ`3TŸŸT„WTWTW„©W©©ü‚¯¯}„6$$6$ÔÏ‚9:9„çç­­êƒCC\CEml„mZ±–±‚Û±Û‹5=Õ5Õ?"Õ?""ÜŠøÍøͣͣ͢ž!‚&&÷¦דõR‚úRúŒ‚Œ‚ééãéù߃PßPQÊijôƒšôô‚º…ÌËÌÁÂÆ ÿ‚þþÿ…þþÿþþÿÿˆìëîíòñIñI………,,„,…›n,œ›nƒ‘enˆ‚eˆev„¼v¼v¼`„Ÿ``TŸT‚WŸWŠü©ü©üü¯}¯¯}‚66$Ô…ÏÔϪYÏ„9::9ç­ê‚C\C‚EEmlm‚±–±ÛŒ=5=Õ5ÕÕ""?""Ü„øø¢ø̓ž¢ž!&÷‚¦¦“×õ‚RRúŒ‚Œ‚ééã‚ùéùß…PPQPPQʃÄÊijô„È‚ôÈ‚º‡ËÌÁÂÂÆÆ ÿ‚þþÿþ„ÿÿþþÿÿ†ìëîíòñI„……I…,…œ›nnœnˆ‚eˆev„¼v¼v¼`Ÿ„`T`TŸT„WTWTW©üƒ}}¯}6$Ô‚YªÏ:ˆ99ç9ççý­ê„\êC\CEmmEmllmmZCZZ±±Û5Õ„??""Ü‚øÜ̓£ž¢ž‚!!&‚÷&÷¦†×õ““õõR‚úRú‚ŒúŒƒŒŒ‚ééãƒùùéùßP‰QQÊQÊÊijʳô‚º…ËËÌÁÂÆ ÿ‚þþÿþÿþÿÿˆìëîíòñIñI………,I…,‚n,nœnƒeneˆ‚eˆev‚¼v ¼‚`¼`ƒŸ`TŸ‚TŸTWˆTWW©WWü©ü‚¯¯}6$$6$Ô$ÔÔYªÏÔÏ…99:99ç‚­ýê„\êC\C‚EEm†lmm–±C±Û‹5=55Õ?"??""܃¢øøÍ„££ž£ž‚!!&‚÷&÷…¦×“¦“õ„RRúRúŒƒŒ‚ééãéùßP„QQÊQʳô„šôôÈ‚º‡ËÌÁÂÆÆÇ ÿ‚þþÿÿ†ìëîíòñI…‚,I,„›,,›n‰‘nˆeˆeˆeˆev¼`ˆŸ`Ÿ`ŸTŸŸTÀW„ü©ü©üƒ}ü¯}‚66$Ô‚YÔÏ:9‡ç9çç­­ýê\CCEmEEmmýmm–±˜±±ÛÕ5‡ÕÕ""?""Ü‚Íø̓£žÍž‚!!&÷¦“×õRúŒƒŒ‚ééãƒùùãù„ßùßùß…QPQPQÊ‚Äʳô‚†š‚‚º‚‚º…ËËÌÁÂÆÿ'ÿˆìëîíòñIñI…,†›nnœnœnƒ‘enˆƒeeˆev¼v¼`†Ÿ`Ÿ``TŸT‚WTW„üWü©üƒ}}¯}„66$6$ÔƒÏÔÔÏ‚9:9热êýêCEm‡lýmm–±˜±Û‚=Û5Õ„??""܃øÍøÍ„¢£ž£ž‚!!&÷‡¦¦××õ“”õR‚úRúŒƒŒŒ‚ééãéùß…PßPQPQÊijô‚º‡ËÌÁÂÂÆÆÿ'ÿ†ìëîíòñI…,‚œ,n‚‘‘ˆƒeˆˆev ¼`‡Ÿ`TŸ`T`T‚WŸW©ü‚¯¯}‚66$ÔÏ‚::9ˆç9­ç­­ê­ê‚\\C‚mEmˆýmm–±Z±±ÛŒ5ÛÕ55Õ?"??""܃øÍø̓££ž„!!&&÷¦דõƒRúRúŒ‰ŒŒééãƒùäéùß„PßßPQÊijô…‚šôÈô‚ºˆËËÌÁÂÆÆÇÿ'ÿˆìëîíòñIñI…,†n,,nnœn‚‘eˆƒeˆˆevƒ¼vv¼`†ŸŸ`ŸŸTŸT…WTŸWTW†©Wü©üü¯‚}}6„$$Ô$Ô‚ÏÔψ:9Ï:99ç9ç­ê\C‡ECEEmmým‚±–±ÛŒ55=Õ5ÕÕ""?""܃øÍø͉¢£žžž!ž!&÷‚¦×“õ…RRúRRúŒ‚ééãƒùùäù„ßùßßPˆßPQQÊQÊÊijô‚‚º‚º„ËÌÁÂÆUÿþMÿ†ìëîíòñI…,ƒ›nœn‚‘‘ˆeˆev†¼v¼¼vv¼‚`¼`ƒT``ŸTW‚üWü‚}¯}…6$$6$Ô…YªYÏÔÏ9‡çç­ç­ç­ê‚CýCm‡llmm˜C–±‰Û±ÛÛ=5=Õ5Õ„??""Üø̓££¢ž!&‚÷!÷ƒ¦¦×“õRúŠRúúŒúŒŒŒŒ‚ééãƒéùäùßPˆQQÊQÊÊÄij…ô³ôôšô‚ºˆËËÌÁÂÂÆÇÿþ:ÿþKÿˆìëîíòñIñI‚……,„œœ,œn‚‘eˆeƒveev ¼`‚Ÿ`ŸT‚WŸWƒüüWü‚}¯}‚66$Ô‚ÏÔÏ:ç9ƒçç­ê†CêýýCCE‘mmllmm˜±–Z±±Û±ÛÛ=5‡Õ?"??""Ü‹øÜøÍ¢Íͣ͞£ž!&÷ƒ¦×דõRúŒ„ŒŒ…éééãƒùääù‚ßùßP‰QQÊQÊÊÄÊijô‚È‚º„ËÌÁÂÆÿþ6ÿþ‚ÿÿþKÿ†ìëîíòñI‚…I…‚,…,„œœnœn‚‘nˆ„eˆeˆe…v¼vv¼v‚¼v¼`†Ÿ`Ÿ``TŸ†TTŸWŸTWƒüü©ü¯}6‚Ô$ÔƒÏÏÔÏ:9ç‚­­ê‰CC\CýCEmEmƒ˜CZ±Ûˆ=Û5=Õ5ÕÕ"ÜÍø͈žžž!ž!&÷†¦¦×ד“õ‡RRúúRúRúŒ‰ŒŒééãùßPQ‡ÊQÊÊijʳô‚‚È‚‚º‚ºˆËËÌÁÂÂÆÆÿ þ8ÿþJÿŠìëîíòñIñII…,…œœ›œ,nƒ‘enˆ‚eˆe‚vv ¼‚`¼`ˆŸ`TTŸ`TŸT‚WTWƒ©WWü„¯¯}¯}†6$$6$$ÔƒYÔYÏ:ˆ99ç9çç­­êC‡EmCmmþþmC±Û5ƒÕÕ?"ÜøÍ…£¢£žž!„&&÷&÷‰¦¦×““õ“õõR‚úRú‚ŒúŒ‚Œé…ããùéãù߇PßPQQÊQÊ‚³Ê³ôƒ‚ôÈ‚º‡ËÌÁÂÆÆÇÿ þÿþÿþÿþÿþÿþÿþÿþÿþÿþ9ÿ†ìëîíòñI…ƒ,,…,†œ››nœ›n‚enˆeˆe…v¼vv¼v‚¼v¼`Ÿ`Ÿ‡TTŸTÀWTWƒüü©ü‰¯ü¯}¯}}66$ÔŒÏϪYÏÏ::9:99ç­êƒC\êCƒEmCþ™ýþþmm±C±ÛÛ±ÛÛ==4Õ5ÕÕ"Õ?""܃Íøø̓¢žž!‚&&÷ƒ¦“דõ‚RRúŒ‚Œ‚ééãƒùùãùßPˆQQÊQÊÊÄijô„È‚ôÈ‚º…ËËÌÁÂÆÿþÿþÿþ‚ÿÿþ‚ÿÿþÿ þÿþÿþ‚ÿÿþ9ÿ‰ìëîíòñIñI…‚II,›nƒ‘eeˆev¼ `Ÿ‹`TŸŸTŸTWTWTW‚©Wüƒ¯}¯}‚66$ƒÔÔYÔƒÏYÏ:„9:99ç‚­­êƒCCêCƒEmmþýþm±Ûƒ=5=Õƒ?"?"ÜÍ„£Í££ž‚!!&÷„¦×דõR‚úRúŒ„ŒŒé„ããùéùß…PQPQQʃÄÊijôƒ‚‚È‚ºˆËËÌÌÂÂÆÆÿþ ÿþÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþÿþ‚ÿÿþÿþÿþ‚ÿÿþÿ"þ‡ìëîíòñIý„……,,ý„,,››ýnýˆeýevý¼ý`ý„Ÿ`TTý„TTWWý„WWüWý„ü¯¯}ý„66$$ýYÏý:9ýç­ý„êC\Cý„þýýþý„m±Z±ý„==5=ý„Õ??"ý„øÜÍÍýžý„&&÷÷ý¦“ýRúý„úúŒŒýý„éããýùý„ßßPPýQÊý³ôý„ôÈ‚Èýºý3þ ÿþÿþÿþÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþÿþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸTƒWTTWü©ü‚}ü}ƒ6$6$Ô‚ªYσ:Ï:9ç‚­­ê\C‚EEþ‚ýýþ’mZZ±±Û±Û==5=Õ55""?"܃ÍøÜÍ„££¢£ž!&÷ˆ¦¦×ד“õõRúŒ„ŒŒ„éééãƒùùãùß„PQPPQ‚ÊʳôƒÈ‚ô‚º…ËËÌÌÂÆÿþ ÿþÿþÿ þ‚ÿÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþÿþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTW©üƒ}ü¯}†6$$6$$Ô„YÏϪÏ‚9:9ç‚­­ê‰C\C\CCEEmþýþC±…Û±Û==5…ÕÕ"Õ?"…ÜÜøÍ¢͈ž£žž!ž!&÷‚¦×“‚õ“õ„RRúRúŒ‚Œé‡ãééããéãù߉PßßPPQQÊQʳô‚‚ô‚º…ËËÌÁÂÆÿþÿþÿþÿ þ‚ÿÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþÿþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTW‚©Wüƒ}}¯}6$ÔÏŒ:9Ï:9çç9ç­ç­ê‚CêC„EEmmþƒm±–±‚Û±Û†=Õ55ÕÕ"܃øøÜ͆¢££žž!&÷ˆ¦×““õ“õõR†úRúRúúŒ„ŒŒ‰éãéããùéùãùˆßùßßPPQPQʳóô‚º…ËËÌÌÂÆÿ þÿþÿþÿþÿ„þþÿÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþÿþ ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸTƒWWŸW‚üWü‚¯¯}6‚$$Ô„YÔYªÏ…99:99ç­êƒC\\C„EEmEl…mm–±–±‡Û±ÛÛ==45‚ÕÕ"ƒÜÜøÍ„£žž£ž!&÷‰¦¦×דõ“õõRúŒ‚Œé‚éãù߃PßPQʳ†ôôššôô‚ºˆËËÌÁÂÆÆÇÿþÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþÿþ‚ÿÿþÿþ‚ÿÿþ‚ÿÿþÿþ ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸTƒWTTWü©ü‚}ü}ƒ6$6$Ô‡YÏÔÏÔÏÏ:„99ç9ç‚­­ê’CC\\CCEEmEmmlmm–±ý±Û‹=5=Õ5Õ?Õ??"Üø̓££Íž!‚&&÷…¦¦×דõR‚úRúŒ‚Œéã‚éãùŠßßùßßPPQPPQÊ‚³Ä³ô„È‚Èô‚º…ËËÌÁÂÆÿþÿ þ‚ÿÿþÿþÿ þÿ þÿþÿþ ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTW©üƒ}ü¯}†6$$6$$ÔYÏ…99:99热ç­êC‚EEmˆlýmmE–±ý±†ÛÛ==5Õ5?‚""ÜŠøÍÜ¢¢Í͞͞‚!!&÷¦„ד“”õ‚RRúŒ‚Œéƒééãƒùùäù߃PQPQʃÄÊij‚ô³ôÈ‚ºˆËËÌÌÂÂÆÇ8ÿþÿþÿþÿþÿþÿþÿþÿþ‚ÿÿþÿþ ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTW‚©Wüƒ}}¯}6$†ÔÔYÔÏÔÏ:9ç­ê‡\ê\C\CCEŒmmlýmmZ±–±ýýÛŒ==4Õ5ÕÕ"??""ÜøÍøøÍÍ¢£žžžž!!&÷…“¦“דõ„RRúRúŒƒŒŒ„ééãéã‚éãùß…PPßPPQʳôƒÈšô‚‚º‚º…ËËÌÁÂÆ8ÿþ"ÿþÿþÿþÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸTƒWWŸW‚üWü‚¯¯}6‚$$Ô„YÔÏYÏ:ˆ9çç9çç­­êƒ\CêC‰mEmmlýlmm±‹Û±=Û=5=Õ5ÕÕ"ÜøÍ„££Í£ž‚!!&‚÷&÷ƒ¦÷דõR‚úRúŒƒŒé‚éãƒùùãùƒßßùßPQʳô‚‚ô‚ºˆËËÌÁÂÂÆÆ8ÿþ"ÿþÿþÿþÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸTƒWTTWü©ü‚}ü}ƒ6$6$Ô„YÔÏÔÏ9‡çç­çç­­ê‚C\C—EEmEmlýmmE–Z˜±±Û±ÛÛ=55=Õƒ?""܃øÜø̓ž£ž‚!!&÷ƒ“¦×“‚õõR†úRúRúúŒ‚ŒéãéùßP‰QQÊQÊʳ³Ê³ô…ššô‚È‚º…ËËÌÁÂÆ8ÿþÿþ ÿþÿþÿþÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTW©üƒ}ü¯}„6$$6$ÔYσ:Ï:9‚ç9热ê­ê‚CêCŠEEmEmllmmE±Û†==ÕÕ5Õ"ƒ?""ÜÍ„££ž£ž‚!!&÷¦ƒ×““õRúŒ‚Œéã‚ùéùß‚PßP‚QQʳô„‚ô‚ô‚ºˆËËÌÁÂÆÆÇ8ÿþÿþ ÿþ!ÿþÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTW‚©Wüƒ}}¯}6$ÔYÔφ:9Ï:99ç­êˆC\C\CCEEm†lmm–±m±ÛŒýý=Õ55Õ""?""Ü„øÜøøÍ…žžžž!„&&÷&÷‰¦×“דõ×õõR‚úRúŒ‚ŒéãƒùùãùßPQÊŽÄÊij³ôô³ôô‚š‚š‚‚º‚º…ËËÌÌÂÆÿÿþÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸTƒWWŸW‚üWü‚¯¯}6‚$$ÔYÏÔσ99:9ç‚­­ê‚CêCŠEEmEmllmm–±‰Û±Û=Û5ý55Õ„"?""Ü̓ž£Íž‚!!&÷…¦¦×““õ‚RRú Œ‚ééãùß‚PPQÊ‚Äijô„šô‚È‚‚º‚ºˆËËÌÁÂÂÆÇÿÿþÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸTƒWTTWü©ü‚}ü}†6$66$$ÔƒYÏYÏ‚::9‡ç9­çç­­ê‚C\C‚EEm‡llmm–Z–±ÛŠ=5=ý5Õ?""?"ÜøÍ‚žÍž‚!!&÷„¦“×ד‚õõR‚úRúŒ‚ééã‚ùéùßP‚ßPQʃijʳ†ô³ôô‚ô‚º„ÌÌÁÂÆÿÿþÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTW©üƒ}ü¯}Œ6$$6$$ÔÔYÔϪÏ‚9:9†ç9­ç­­ê‚CêCŒEEmEmlýmmE±Z±…Û±Û==5†ÕÕ??""Ü‚ÍÜÍ„£Í£ž!&÷…¦¦×““õR‚úRúŒ‚ééãƒùããùßùßPQÊ‚³Ä³ôƒšôô‚Œº‚ººËËÌÁÂóÆÆÿÿþÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTW‚©Wüƒ}}¯}6$Ô„YÔÏÔÏ‚9:9„ç9çç­ê‚C\C‚EEm‚lýmZ±Û‰=4Õ5Õ?"??"…ÜÜÍøÜ͆¢ž¢žž!&÷†¦¦×ד“õR‚úRúŒ…ŒŒ‚ééãùßP„QQÊQÊ‚Äʳôƒ‚‚ô‚º„ËÌÁÂÆÿÿ þÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸTƒWWŸW‚üWü‚¯¯}‚66$ÔƒYϪÏ‚9:9†çç­çç­êƒCê\C‹EEmEmlýlmZm±…Û±ÛÛ=5‡ÕÕ"ý?""܃øÍøÍ„¢£ž¢ž!&÷†¦¦×ד“õ‚RRúŒ…ŒééãƒéùäùßP‚QQÊijôƒ‚ôÈ‚º…ËËÌÌÂÆÿÿ þÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸTƒWTTWü©ü‚}ü}6‚$$ÔƒYÔYÏ:9ƒç9ç­êC\„CCEEm‰ýmmEZ–Z±±Û‹=ÛÛ=Õ5ÕÕ"?ý"…ÜÜøÍÜ͆¢£žžÍž!‚&&÷ƒ¦“דõR‚úRúŒƒŒŒ‚ééã‚äãùßPQÊ‚Ãʳô…šô‚‚ô‚ºˆËËÌÁÂÆÆÇÿ þÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTW©üƒ}ü¯}…6$6$$ÔYϪÏYÏÏ99::99ç­ê‚C\CEˆmllmmZ±C±Û5‡ÕÕ"?"ýý܆øÍÍøÍÍ¢†žžž!!&÷ƒ¦¦×“‚õõR‚úRúŒ‚Œ‚ééã‚ùäùƒßßùßP‡QQÊQÊÊijô‚‚º‚º…ËËÌÌÂÆKÿ‚þþ2ÿ þÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTW‚©Wüƒ}}¯}6‚$$Ô‚ªªÏ9ç­êƒC\\Cm‡llmm–±˜±‚Û±Û5…ÕÕ"??"‰ÜøøÜÍ͢͢ž…£žž!!&÷ƒ¦¦×“‚õõRúŒ„ŒŒ‚éé„ããùéù…ßßùßßPQÊ‚Äʳôƒ‚šô‚ºˆËËÌÁÂÂÆÆKÿ‚þþ2ÿ þÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸTƒWWŸW‚üWü‚¯¯}„6$$6$ÔƒÏÏÔÏ…:Ï::9ç­ê\C„EEmEmƒ–±Z±Û†=ÛÕ5ÕÕ"ÜÍø…ÍÍ¢ÍÍž!&…÷&÷÷¦ׂ““õR‚úRúŒ‰ŒŒééã‚ùéùß…PQPQQÊ‚Äijô‚º…ËËÌÁÂÆKÿ‚þþ2ÿ þÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸTƒWTTWü©ü‚}ü}‚66$ÔƒÏÏÔÏ9…ç­ç­­êC‚EEmƒ–±E±‰Û±ÛÛ=5Õ55Õ?"ƒÜÜøÍž…žž!!&÷‰¦¦“ד“×õõR‚úRúŒ‚Œ‚ééã‚ùäù‚ßù߃PßßPQ…ÊÊÄÊijôƒšôô‚‚º‚º…ËËÌÁÂÆKÿ‚þþ1ÿ þÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTW©üƒ}ü¯}‚66$ÔƒÏÔªÏ:9ç„­­ê­êC‚EEm‡lýmm–±Z±ÛŠ=Û5=Õ5Õ?"Õ"܃øýÜ̓££Íž!&÷…¦¦×““õ„RõRRúŒ‚Œ‚éé„ããùãù‚ßùßP„QPQQʳô„È‚ôÈ‚‚º‚º…ËËÌÁÂÆKÿ‚þþ1ÿ þÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTW‚©Wüƒ}}¯}6‚$$ÔƒÏϪÏ:„99ç9ç­ê‚\\C‚EEmýmZ±Û‰5=Õ5ÕÕ"??"†ÜÜøÍýýÍ‚žÍž‚!!&÷¦ׂ““õR‚úRúŒƒŒŒ‚ééãƒùéãù߃PßPQÊijôƒ‚‚š‚ºˆËËÌÌÂÆÆÇKÿ‚þþ1ÿ þÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸTƒWWŸW‚üWü‚¯¯}…$$6$$Ô„ªÔÏÔÏ…99:99ç‚­­êƒ\C\CŠmmEmlýmmZ–±Û±ÛÛ=5=Õ5ÕÕ""?""܉øÜ¢ÍýÍ¢žÍž‚!!&÷ƒ¦×ד‚õõR‚úRúŒƒŒƒéé†ããéùùäù߆PPßPQQʳô†ššô‚Èš‚º…ËËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸTƒWTTWü©üƒ}ü¯}‚66$ÔÏ‚::9‡çç­ç­ê­ê‚C\C‚EEmŠlýmmE–ZZ±±ÛŠ=Û5=55ÕÕð?"܃¢øø̓žÍ£ž‚!!&÷…¦¦×““õRúŒƒŒŒé†ããùéùäù‚ßùß„PQPPQÊ‚ÄʳôƒÈšš‚º‡ÌÌÁÂÂÆÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTW©üƒ}}¯}6$ÔYφ9::9ç9ç‚­­ê‚CêC‚EEm…lmmZC±ÛŒ=5=Õ5Õ?"??""Ü‚ÍøÍ…¢žž£ž!&÷†¦¦×ד“õ„RRúRúŒ‚Œ éã‚ùäùƒßùùßP‰QQÊQÊÊijijˆô³ôôšô‚È‚‚º‚º…ËËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTW‚©Wü‚¯¯}6$ÔYÏ‚9:9„ç9çç­ê‚C\CEˆmllmm–±˜±Û±Û=Û5Õ55ÕÕ"??""܃øÍø͆¢£¢ýžž!&÷…¦×“דõ„RRúRúŒ‡ŒŒé‚éã‚ùãùßP‚QQʳô‚‚š‚‚º‚º…ËËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸTƒWWŸW‚üWü„}ü}¯}„66$$ÔƒªÔYÏ…9::99ç­ê‚CêCEm†lmm–±Z±Û‹==Õ5ÕÕ""?""܃øÍøÍž…ýžž!!&÷…¦×ד“õR†úRúRúúŒ‚Œé„ããùéùßPQÊijôƒšôô‚º…˺ÌÌÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸTƒWTTWü©ü‚}¯}ƒ6$6$ÔƒÏϪÏ‹:9:99ç9çç­­ê’C\C\CCEEmEmllmm–±–±‰Û±ÛÛ=5=55Õ?"ÜøÍø͢͢͢¢£ýžž!&÷‰×¦¦“ד“õõRú‚ŒúŒ‚Œéã‚ùãùß‚PßP‚QQʳô…È‚ô‚š‚º…ÌËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTW©üƒ}ü¯}…$$6$$Ô‚ªYφ::9:99ç‚­­ê‚CêC‚EEm„ýmm–±Û==5=Õ5Õ""Õ?""܇øÍÜøÍÍ£ž…žý!!&÷†“¦“ד“õR‚úRúŒ‚Œé†ããùéùäùß…PßPQPQÊ‚Äʳô‚‚È‚‰º‚ººËËÌÌÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTW‚©Wü}¯}6$Ô„ÏÔÏÔÏ:9†ç9­ç­­êCŽ\CCEEmEmlýmmE–±Ûƒ=5=5†Õ"??""ÜøÍ£ž!‹&&÷÷&÷÷¦÷“ד‚õõRúŒ‚Œ‚éé†ùéãùääù߇PßßPPQQÊij†ôôšôÈô‚ºˆÌËÌÁÂÆÆÇKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸTƒWWŸW‚üWü‚¯¯}„66$$ԂϪÏ‚::9‚ç9ç‚­­ê†C\CCEEm…ýmmE–±…Û±ÛÛ=5‚ÕÕ"ŒÜÜøÜÍøÍͣ͞ž‚!!&÷…צד“õ†RRúRúRúŒ„ŒŒ‚éé†ããùéùäù߃ùßßP„QQÊQʳô„È‚‚ô‚º„ËÌÌÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸTƒWTTWƒü©Wü‚}ü}…6$6$$Ô‚ªYÏ‚9Ï9†çç­­ç­ê–\C\C\CCEEmEmlýmmE–ZZ±±Û5Õƒ?""Ü‚¢øÍ‚žž!!&&ý&÷&÷÷¦“דõR‚úRúŒ…éééã‚ùäùßP„QQÊQÊij‚ô³ô’‚‚ô‚‚º‚‚ººÌËÌÁÂÂÆÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTW©ü‚}ü}„$$6$ÔƒÏÔYÏ‚9:9ƒç9ç­ê‚C\C‚EEm†llmE±C±Û±=Û==Õ55Õ?"Õ?""ÜŠøÍÍøÍÍ£¢¢£ž‚!!&‚ýý÷†¦¦×ד“õRúŒƒŒŒéãù„ßùßùß…PPQPQÊijôƒ‚ôš‚º„ÌÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTW„©Wü©ü‚}¯}…6$6$$ÔƒÏϪÏ…9::99ç­ê‚\\C‚EEm‡llmm–±˜±„Û±ÛÛ=‰Õ5ÕÕ""?""܃øܢ̈́¢ž¢ž!&†÷÷ý÷÷¦ׂ““õ†RRúRúRúŒ„ŒŒé…ããùäéù‚ßùß…PßPßPQÊ‚Äʳôƒ‚šÈ‚ºˆËËÌÌÂÆÆÇKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸTƒWWŸW‚ü©üƒ}ü¯}†66$6$$Ô‚ªYÏ‚::9…ç­ç­­ê†Cê\\CCE‰mmllmm–±˜±Û‚==5‡ÕÕð"?""܃jøÜÍ„¢£ž¢ž‚!!&÷…¦¦×““õRúŒŒŒŒéééãƒäùäùßPQ‡ÊQÊÊÄÄʳô‡šÈô‚š‚‚º…ËËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸTƒWTTW„üWü©ü}‚66$ԄϪÏYÏ„:Ï:9ç­êC‹mmEmllmm–±Z±ƒÛ±Û=ˆÕ55Õ?Õ??"…ÜÜøÍøÍ¢ž!&÷†¦“¦×““õ„RRúRúŒ‚Œéã‚äãùß…PßPQQÊ‚Äij…ô³ôôÈ‚ºˆËËÌÌÂÂÆÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTW‚©©ü‚¯¯}6$ÔƒYÔÔÏ„:99:9„çç­­ê\C‚EEm‡lýmm–ZZ±Û=ˆÕ5Õ?""?"܉øÍø͢͢͞ž!&÷†¦×“ד“õRúŒ‚Œ„éééã‚ùãùßPQ…ÊÊijʳôÈ‚º…ÌËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTW‚ü©ü‚}ü}…6$$6$Ô„ÏϪYÏ:9ç…­çç­­êƒCCêCEˆmmýmmE±–±ƒÛ==5Õ?"܉øÍøø¢Í͞͞!&÷†¦¦ýý““õR‚úRúŒ‚Œ‚ééã‚ùéù‚ßäß‚PPQÊ‚³Ä³ô‚š‚‚º‚º„ÌÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸTƒWWŸW„©WüWü‚}ü}‚66$ÔƒYÔªÏ9ç­êCEm…lýmm–±Û=‰55Õ?"Õ?""ÜøÍÍøÍÍ¢žÍ££žž!!&÷†¦¦××ýýõ„RRúRúŒƒŒŒéã‚ùãù‚ßùß…PPQßPQÊ‚Äʳô‚Šºº‚ººËËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸTƒWTTW‚ü©üƒ}ü¯}6‚$$ÔƒÏÏÔÏ…::Ï:9ç­ê‚\\C‹EEmmlýmmE–Z±Û±ÛÛ=5=Õ5ÕÕ""?""܃øܢ͢žƒžž!&÷ƒ¦¦×“ƒýýõRúŒƒŒéã„éãùéùƒßùùßP‰QQÊQÊÊijijôƒ‚šô‚º…ËËÌÌÂÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTW‚©©ü}6$Ô‚ªYσ99:9爭ê­êê\C\C˜EmmEmmlmmZCZ˜±±Û±Û=Û5=55Õ?"܃jøø̓£Í£ž‚!!&÷„¦¦“דƒõõýR‚úRúŒŒééééããùäùäù߇PPQPPQQÊ‚³Ê³ôƒ‚šÈ‚ºˆËËÌÁÂÆÆÇKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTW„üWü©ü¯}‚66$ԄϪYªÏ:…9çç9ç­ê‚C\CEm…llmm–±ÛŒ=5=Õ55?"Õ?""܃øÍÜÍ„£žÍ£ž‚!!&÷ƒ¦¦×“õ…ýRRúRúŒƒŒŒ‚ééãéùß…QQPPQʳ‡ôôššô‚ô‚º…ËËÌÌÂÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸTƒWWŸW‚©©ü„¯¯}¯}6$Ô‚YÔÏ…99:99ç­ê‚CêCEƒmmlmƒ–±–±Û±Û=Û5=55ÕÕ"??""ÜøÍž…žž!!&‡÷÷&÷÷¦÷“†õRõRýýú‚ŒúŒ‚Œéãäùƒßßùß…PßßPPQʆÄʳó³ô‚‚š‚‚º‚ºˆËËÌÁÂóÆÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸTƒWTTW„ü©ü©ü¯}„$$6$ԃϪYψ:9:99ç9ç­êƒCCêCŠEmmEmmlmm–±ÛŒ=5Õ55ÕÕ"??""Üø̓£Í£ž‚!!&÷ƒ×¦×“×õ„RRýRúŒ‚Œ„éééãäù߈PPQPQPQQÊ‚³Ê³…ôôšôô‚ºˆËËÌÁÂÆÆÇKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTW„©Wü©üˆ}¯}¯}}66$Ô‚ÏYÏ:‚99ç‚­­êCEm‚lým‚Z–±Û±Û=Û5=Õ5ÕÕ"??""Ü„øÍÜøÍ‚žÍž‚!!&÷…¦¦×““õRƒúýýú‚ŒúŒƒŒŒ‚ééãƒäùäù„ßùßùß…PßPQQÊ‚Äijô„‚š‚ô‚º…ËËÌÌÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTW„ü©ü©üƒ}¯¯}†66$6$$Ô„ÏÔϪψ9::99ç9ç­ê\‚CCEm†ýmmZCZ±ÛŒ=5=Õ5ÕÕ""?""Üø̓£Íž‚!!&÷†“÷×ד“õR†úRúýúúŒƒŒéã‚äãù‚ßùß…PPQPPQʃÄÊij†ô³ôôšô‚ºˆËËÌÁÂÂÆÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸTƒWWŸW‚©©ü}‚66$ԂϪÏ9ç­êC‹EmmEmlýmm–Z±‰Û±ÛÛ=5=55Õ?"ÜŒøøÍÍ¢Íͣ͞žž!&÷ƒ×“¦“õ‚RRúƒýúúŒ‚ŒéãƒùùãùßPQ„Êʳijô„‚ššÈ‚º…ËËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸT‚WTW‚©©ü…¯}¯}}6$Ô‚ÏÔÏ:ˆ99ç9çç­­ê‚C\C‚EEm‡lýmmE––±Û==54Õ5Õ?"Õ?""Üjø̓ž¢ž‚!!&÷…¦×ד“õR‚úRú‚ýýŒŒŒŒéééãéù‡ßùßßPPQPˆQÊQÊÊÄÊʳô„šô‚ô‚‰º‚ººËËÌÌÂÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTƒWWŸWƒ©©Wüƒ¯}¯}6$ÔƒÏÔYÏ9„çç­ç­ê„\êC\C‚EEm„llmm±Û±Û==5=Õ5ÕÕ"??""Üø͉¢£ž¢£žž!!&÷†¦¦×ד“õR‚úRú‚ŒýŒ…éãééãƒùùéùß…QQPQQʃijijô‚‚š‚º…ËËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸTƒWWTWƒüüWü‚¯¯}‚66$ԃϪYÏ:„99ç9ç‚­­ê\„C\CCE‚mlm‚±˜±Û±Û=Û5=55ÕÕ"??""ÜøÍ‚¢£ž!&÷¦׊““õRõõRRúRú‚ŒýŒ‚Œ…éééãéùß…PßßPPQÊ‚Äʳ‡ô³ôôšôô‚ºÌÂÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸT‚WTWƒüü©ü‚}ü}ƒ6$6$†ÔÔYÔϪÏ:9ç­ê‡CêC\CCEm†lmm–±Z±Û±ÛÛ=54Õ5ÕÕ"??""܆jÍø͢͢ž‚!!&‚÷&÷‡¦¦“דõ×õRRúRúRúúŒúŒýý‚ééãƒùùéùßPQ‡ÊQÊÊijijôƒ‚‚ô‚‚º‚º…ËËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸƒ`ŸŸT‚WTW…©WWü©üƒ}ü¯}…6$6$$ԂϪÏ„9Ï::9ç„­­ê­ê„C\C\C…EmEmlmƒ–±–±ŽÛ±ÛÛ=5=55ÕÕ"??"‰ÜÜøÍøøÍÍ¢ž…žž!!&‚÷&÷…¦¦×דõRúŒ‚ýŒ„éééãù߆PQßPQQÊ‚³Ê³ôƒ‚‚ô‚ºˆËËÌÁÂÆÆÇKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‚ŸTŸTƒÀWŸWƒ©ü©üƒ}}¯}6$Ô‚ÏÔω99:9çç9çç­ê‚C\C‚EEm„ýmm–±ÛŒ=Û5455ÕÕ"??"܃ø͢͢£ž!‚&&÷†¦“×ד“õR‚úRúŒ‘ýýŒééãééããùéùßùßPQÊ‚Äij…ôôššô‚º…ÌËÌÌÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`TŸŸT„WTWTW‚©Wü¯}†6$$6$$ԇϪÏÏÔÏÏ:ˆ99çç­ç­­ê‚\\C‚EEmŠlýmmE–±Z±±Ûˆ54Õ5ÕÕ"?"܃øøÜ̓ž¢ž!&÷„¦×““õRúŒ‹ýŒééééã‚ùéùßPQ‡ÊQÊÊÄÊij‰ô³ôôÈššÈš‚º‡ËÌÁÂÂÆÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„Ÿ`TTŸT„ÀWŸTW‚©ü©ü}…¯}}66$Ô‚ªYÏ9ç‚­­ê†Cê\\CCEˆmmlýmmE–±Û‹5=55ÕÕ"Õ?""ÜøÍ„¢£ž¢ž‚!!&÷†“¦×ד“õR†úRúRúúŒ†ŒŒýéãƒùùãùß…PßPQQʃ³³Ê³ô‚šš‚‰º‚ººËËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸ‰`ŸŸTŸTTWTWTW©ü‚¯¯}6$ԄϪϪÏ„:Ï:9ç‚­ç­êC‹EmmEmlýmmEZ±ÛŒ=5455ÕÕ"??""Ü„øøܢ͞!&÷‡¦¦×ד“”õ„RRúRúŒ‚Œˆýýééééãéù߃ùßßPQÊijôƒšôô‚ºˆËËÌÁÂÆÆÇKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `„ŸTŸŸT‚WŸW‚©Wüƒ}ü¯}†6$$6$$ÔƒªªYσ99:9„çç­­ê\C‚EEml„mZ–Z±ÛŠ=Û54Õ5ÕÕ"?"ÜŠjÍø͢͞£Í£ž!&‚÷!÷‚¦¦“õ‚RRú‚ŒúŒ‚Œýéã‚ùéùßPQ…ÊÊijʳô‚È‚º…ËËÌÌÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`‰ŸTŸŸ`TŸŸ`TWTW„üWü©ü„}¯}¯}6$ÔƒÏԪυ::9:9ç‚­ç­ê„CCê\CŒEEmEmllmmE±–±ÛŒ=5=55ÕÕ"Õ?""܃Íøø̓ž¢ž‚!!&÷ƒ“¦×“õR‚úRúŒ„ŒŒ‚ýýéãäùßP‚QQÊ‚³Ä³ôÈ‚º‡ËÌÁÂÂÆÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `‡Ÿ`TTŸTŸTŸW‚ü©ü‚}¯}6$Ôχ:9:99ç9ç­êC…\CCEEm‚llm‚±–±Û±ÛÛ=54Õ5ÕÕ"??""ÜøÍ„££žž!&÷ƒ¦÷דõR„úRúRúŒŒŒŒééýéã‚ùéù߃PQPQʃÃÄij‡ôôšÈ‚ôÈ‚‚º‚º…ËËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚ŸTŸ…`TŸTŸTƒWWŸW‚©©ü‚}ü}6$Ô„ªÔYªÏ:†99çç­ç­ê„C\CCEml„mZCZ±ÛŒ=5=Õ5ÕÕ"??""Üø͇£žžž!!&÷†×“¦×““õ‚RRúŒ‚Œ…éééýãùß…PßßPPQÊ‚Äij‚ô³ô‚º…ËËÌÁÂÆKÿ‚þþ6ÿ‚þþ!ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `Ÿ‚TŸT‚WTW„üWü©ü‚}¯}‚66$ÔÏ‚9:9ç…­ê­êêCEm†ýmm–±–±Û±ÛÛ=5=55ÕÕ"??""܉jÍøÍÍ¢žÍž‚!!&÷ƒ¦¦×“õR‚úRúŒ‚ŒŒéééýýãùäããù‚ßùßPQÊ‚ÄʳôÈ‚º‡ËÌÁÂÆÆÇKÿ‚þþ6ÿ‚þþ!ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸTŸŸ`T`ŸT„WTWTW‚©©ü‚}ü}ƒ6$6$Ô„YÔªYÏ„9::9ç­êƒ\C\C‹EmEmlýmmE±–±ÛŒ=54Õ5ÕÕ"??""ÜøÍÜ¢øÍÍžž£žž!!&‚÷&÷ƒ×“¦“”õ‚RRúŒ‚Œ‰éãééããýéù‚ßùßP‰QQÊQÊʳÊij†ôôšÈ‚ô‚º…ËËÌÌÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `ƒŸŸTŸTWTWü©ü‚}ü}$ÔƒÏϪψ::9:99ç9ç­êƒ\CêC‚EEm‚lým‚±E±Û‰=5=55ÕÕ"?"܃øÍøÍ…£Í¢žž„!!&&÷…¦×ד“õRú‚ŒúŒ„ŒŒ‚éé†ããýéùäù‚ßùß‹PPQPPQQÊQÊʳô„‚ôÈš‚ºˆËËÌÁÂÂÆÇKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‰ŸTŸŸ`TŸTŸTÀW‚©Wüƒ}ü¯}„66$$ÔYψ:9:99ç9ç­êƒCC\CEˆmmýmm–±˜±Û±Û==5455ÕÕ"Õ"ÜÍ„£ž¢ž‚!!&÷¦ׂ““õ…RRúúRúŒ‚éé…ããùýýùƒßùùßPQÊij…ô³ôšô‚º…ËËÌÁÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `†Ÿ`T`TŸT„WŸWTWü©üƒ}}¯}†6$66$$Ô…YϪϪÏ…:9:99ç­ê‚C\CEm…llmEm±ÛŒ=5455ÕÕ"??""܃øøÜ͈£žžžž!!&‚÷&÷ƒ¦¦×“õRúŒ…ŒŒŒ„ééã‚ùýùß…PßQPPQ…Êʳ³Ê³ôƒšôô‚ºˆËËÌÁÂÂÆÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ƒŸT`ŸTW‚©Wü‚¯¯}…$$6$$ÔYχ:9:99ç9ç‚­­ê\CEœmmllmm–Zm±Z±Û±Û=Û5455ÕÕ?"?""܉øÍøͣ͢ÍÍž!„&&÷&÷ƒ¦“¦“”õ„RRúRúŒ‡ŒŒé‚éãˆùãýýùùßù߉PßPPßQQÊQʳˆô³ôô‚š‚È‚Šºº‚ººËºÌÁÂÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ `ƒT``Ÿ‚TŸT‚ÀTW„ü©üWü„}¯}¯}6$Ô„YϪÔÏ:9ç­ê‹C\C\CCEmmEml‡mE±ZC±±Û„54Õ5Õ„??""Ü‹øÍøøÍÍž£ž!&÷¦דõRƒúRRúŒ‚Œé–ããùéùãùùýùßßùßßPßPQPQQʃÄÊijô„ššÈš‚ºˆÌËÌÁÂÆÆÇKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‚Ÿ`ŸƒTTŸT‚WTW‚©©ü‚¯¯}6$Ԫς::9ç­ê‚CêC‚EEm‡lmm–±±Z±ˆÛÛ=5=55Õ?‚""܂̈́͢žžž!&÷ƒ¦¦×“ƒ”õõRúŒ‡ŒŒé‚éãùýß…PPQPPQʳƒÃ³³ô‚šÈ‚º…ËËÌÁÂÆKÿ‚þþ%ÿþ0ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼`†Ÿ`T`Ÿ`ŸT„WWŸTW‚ü©üƒ}ü¯}6$ÔƒYªYÏ‚::9„ç9çç­êC\CCEEmEmlýlm––±Z±ÛŒ=54Õ55Õ""?""܃øÜÜ͉££žžž!!&÷…¦“¦““õRúŒ‚Œéã‚éãù‚ýýß‚PPQʳôƒÈôô‚Œº‚ººËËÌÁÂÂÆÆKÿ‚þþ#ÿþ.ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`„Ÿ`T`ŸTW‚©Wü}‚66$ԄϪÏYÏ‚9Ï9„çç­ç­êC…\CCEEm†lýmmEZ±Û…=54Õ5Õ?"܃ÍÍø͆žÍž£žž!&÷ƒ¦×דõ…RRúúRúŒ‚Œéãƒùùäù‹ßùùýßßPßPßPQ„Êʳij‚ô³ô„š‚‚ô‚º…ËËÌÁÂÆKÿ‚þþ#ÿþ‚ÿÿþ.ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼`‡Ÿ`3Ÿ`TTŸT…WTWWTW‚ü©ü‚¯¯}…6$66$ÔƒªÏªÏ‚9:9„ç9­ç­ê\C‚EEm†ýmmE–Z±‡Û±Û=Û5ÛÕ†?"??""܃ÍøøÍ‚žÍž„!!&&÷ƒ¦¦×“õ„RRúRúŒ‚Œéãù߃ùßßP‚QQʃÄÊijô„šô‚È‚º…ËËÌÁÂÆKÿ‚þþ)ÿþ-ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‡Ÿ`TŸ`TŸT‚WTWƒ©©Wü‚}ü}$…ÔÔYªYÏ‹9::99ç9çç­­ê„\CC\CEˆmlýmmE±–±Û‡=5Õ55ÕÕ"ƒÜÜøÍ£ž‚ž!&÷‡¦¦×ד“”õ„RRúRúŒ‚Œ‚ééã‚ùäùßPQʃ³³Ê³ô‚‚ô‚‚º‚ºˆËºÌÌÂÆÆÇKÿ‚þþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿ‚þþÿ þÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼`ƒTŸ`ŸT‚WTW©ü‚}ü}6ƒ$Ô$ԃϪYω:9:99çç­ç­ê‚C\Cm‚llm‚±–±‡Û=Û5=Õ5Õ?"ÜøÍ£ž‚!!&‚÷&÷…¦¦“דõ‚RRúŒ„ŒŒ‚ééã‚ùãùßPQÊ‚³Ê³ôƒÈšô‚‚º‚º…ÌËÌÁÂÆKÿ‚þþÿþÿþÿþÿþÿ þÿþÿþ‚ÿÿþÿ‚þþÿ þÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`‰Ÿ``Ÿ`3TŸŸT‚WŸWƒ©W©üƒ}ü¯}6$Ô‚YÔψ9:9:99ç9ç‚­­ê‚CêC„EmEml†E–±Z±±Ûˆ5=Õ5Õ?"Õ"Üø͉žžžž!!&÷ƒ¦¦×“”õ„RRúRúŒ‚ééã‚ùãùߌQPPQQÊQÊÊijijôƒ‚ôÈ‚ºº‚ººËËÌÁÂÂÆÆKÿ‚þþÿþÿþÿþ‚ÿÿþÿþÿþ‚ÿÿþÿþÿþ‚ÿÿþÿ‚þþÿþ ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼`‡Ÿ`TŸ`3TŸT„WŸWTWƒü©Wüƒ}}¯}6$ԃϪÔÏ‚::9ˆçç­ç­­ê­êƒCê\C‚EEm‚llm‚±–±Û±ÛÛ=5=Õ5ÕÕ"?"Üø̓£Í£ž‚!!&÷…¦“ד“õRƒúúRúŒƒŒŒ‚ééãù߇PßPQPQQʳô…š‚‚šš‚ºˆËËÌÁÂÆÆÇÿþÿþÿþÿþÿþ#ÿ‚þþÿþÿþ‚ÿÿþÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþÿþ ÿþ ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`„Ÿ``TŸ‚TŸT‚WTW©ü‚¯¯}6$“ÔÔYÔÏÏÔÏÏ:9::99ç9çç­êƒCC\C‹EEmEmllmmZC±Û‡=5=Õ5ÕÕ?‚""܃øÍÜÍ„£ž£ž„!!&&÷†¦¦““דõRƒúúRúŒ„ŒŒéãùß…PPßPPQÊijô‚º…ËËÌÁÂÆÿþÿþÿ þ‚ÿÿþ!ÿ‚þþÿþÿþ‚ÿÿ þÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþÿ‚þþÿþÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼`Ÿ‡`T`TŸTŸT‚WŸW…©©Wü©ü„}¯}¯}†$6$$Ô$ԂϪÏ:9ˆçç­ç­­ê­êC‚EEm‚lým‚Z–±Û†5=55Õ?"܃øÍøÍ…£žžž!&÷‡¦÷¦õ““”õƒRúRúŒ‚Œéãƒùéãù߆PQPQPQʃ³³Ê³ô†š‚šô‚È‚º‡ËÌÌÂÂÆÆÿþ‚ÿÿþ‚ÿÿþÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþ!ÿ‚þþÿþÿþ‚ÿÿ þÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþÿ‚þþ ÿþÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼ƒ``¼`ƒŸ`TŸ‚TŸT„WWŸTW„©©ü©ü‚¯ü}„66$$ÔƒªÏªÏ:‰99ç9­çç­­êƒC\êCŒEEmEmmýmmZC–±Û…=5=Õ5Õ„??""܃øÍø̓££Íž‚!!&÷‡“¦¦×“õ“õ„RRúRúŒ„ŒŒ‚ééãù„ßùßù߃PßPQÊ‚³Ä³ô‚º…ËËÌÁÂÆ ÿþ‚ÿÿþ‚ÿÿþÿþÿþ'ÿ‚þþÿþÿþ‚ÿÿþÿƒþþÿþ‚ÿÿþÿþÿþÿþ‚ÿÿþ ÿþ ÿþÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼`ˆŸ`Ÿ`Ÿ`ŸŸTWTW‚ü©üƒ}}¯}6$Ô„ÏÔÏÔÏ‚::9ƒç9ç­ê‚C\C‚EEm…lýlm–±Û±ÛÛ=5Õ55Õ?""?""܃øÍÜ͆žÍ££žž!&÷¦“õ‚RRúŒ‚Œ‚ééãƒéùéù‚ßùßPQÊijôƒšôô‚ºˆËËÌÁÂÆÆÇ ÿþ‚ÿÿþ‚ÿÿþÿþÿ þ!ÿ‚þþÿþ‚ÿÿþÿþ‚ÿÿþÿþÿþ‚ÿÿþÿþ‚ÿÿþ‚ÿÿþ ÿ‚þþ ÿþÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`…Ÿ`Ÿ`TŸT‚WŸW‚©©ü‚¯¯}6ƒ$Ô$ÔYÏ…9::99ç­ê‚CêCE‰mmlýmmE–Z±Û„==55Õ„??""܃øÍøÍ…¢žžž!&÷†¦¦×““×õRúŒ‚Œ‚ééãù‚ßùßPQÊ‚³Ã³ôƒÈ‚ô‚º…ËËÌÁÂÆÿþÿþ‚ÿÿþÿþÿ þ!ÿ‚þþÿ þÿþ‚ÿÿþÿ þÿ þÿþÿ‚þþ ÿþÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼`ŠŸ`TŸ`T`TŸŸTƒWWŸW‚©Wüƒ¯}ü}6$Ô„YªªYÏ:9„ç9çç­ê’CC\\CCEmmEmllmmZC–±ÛŒ=5=55Õ?"??""Üø͆¢£¢£žž!&‚÷&÷„¦“¦×õ…RRúúRúŒ‚Œ‚ééãù߆PPQPQPQ‚Êʳôƒ‚‚ô‚ºˆËËÌÁÂÂÆÆÿþÿþ‚ÿÿþÿþÿþÿ‚þþ!ÿ‚þþÿþÿþÿþÿþÿþÿþÿþÿþ‚ÿÿþÿ‚þþÿþÿþÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`ˆŸ``TŸTŸŸTW‚ü©üƒ}}¯}6$ÔƒÏϪφ9Ï::99ç­êC‚EEm‚±Z±Û±Û==5455ÕÕ"??""܉øÜø͢͢žž‚!!&‚÷!÷†¦¦“¦““õ‚RRúŒ„ŒŒ‚éé†ããéùùãùß…PßPQQʳô‚šô‚‚º‚º…ËËÌÁÂÆÿþ‚ÿÿþ‚ÿÿþÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþ!ÿ‚þþÿþ"ÿþÿþ ÿþÿþÿþÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼`ˆŸŸ`Ÿ`TŸŸT„WŸWTW„©Wü©ü‚¯¯}6$ÔYÏ‚9:9ç‚­­ê‚Cê\ŽCCEEmEmllmmZC–±Û‰5=Õ5ÕÕ""?"ŒÜÜjÍøøÍÍ¢£Í£ž!‚&&÷‚¦¦“õ„RRúRúŒ‚ééã„ùéùãùƒßßùß‹PPQPPQQÊQÊʳôƒÈšô‚º…ËËÌÁÂÆÿþ‚ÿÿþÿ þ‚ÿÿþ"ÿ‚þþÿþ"ÿþÿþ ÿ‚þþÿþÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‹Ÿ``Ÿ`TŸŸTŸŸT‚WŸW„üWü©üƒ}ü¯}6‚$$ԓϪϪÏÏ:9::9ç9ç­çç­­ê‚C\C‚EEmlmƒ–±Z±Û…=5=Õ5Õ?"Üø͆¢Í¢ž¢ž‚!!&„÷!÷÷¦“õ„RRúRúŒ…ŒŒŒƒééãƒùùäùßP„QQÊQÊijô„š‚‚ô‚‰º‚ººËËÌÁÂÆ ÿþÿþÿþÿþÿþ#ÿ‚þþÿþÿþ ÿþÿþ ÿ‚þþÿþÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼`‡Ÿ`TŸ`T`TƒWWŸWü}¯}$ÔƒYªYχ:9:99ç9热ê­êƒC\\C‚EEm†ýmm–±–±ŽÛÛ=5=Õ5Õ""Õ?""ÜøÍ‹žžžž!!&!÷&÷ƒ¦¦×“õ…RRúúRúŒ‡ŒŒéã‚éãù‚ßùßPƒQPQʃ³³Ä³ô‚šô‚º…ËËÌÌÂÆÿþ+ÿ‚þþÿþÿþ ÿþÿ‚þþÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`…Ÿ``T`ŸTW„©Wü©ü‚¯¯}‚66$ÔƒÏÔªσ9::9热ç­ê\CE†mmýmmE±Ûˆ=Û5=55Õð"܉ø͢͢͞£Íž„!&!&÷…¦“¦““õ„RRúRú‚ŒúŒ‚Œéãƒùùãù߃PßPQÊijôƒ‚šô‚‚º‚º„ËÌÁÂÆÿþ+ÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼‚`¼`„ŸŸ`TŸ‚TŸT„WŸWTW‚üWü‚}ü}6$Ô„YÏÏÔσ9::9†çç­ç­­êCEm†ýmm––Z±Û‹54Õ5ÕÕð??""Ü„øÜÜø̓žÍ£ž‚!!&÷ƒ¦¦×“”õ„RRúRúŒ‚Œ†éééãéãù‚ßùß„PPQPQʃ³Êijô†‚ôÈô‚‚º…ËËÌÁÂÆÿþ ÿþ+ÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼`‰Ÿ``TŸ`ŸTŸTWTW‚üWü‚}ü}„66$$ÔƒYÔÔÏ:9„çç9ç­êƒCCêC‚EEm‡lýmmE±–±Û‹5=55Õ?""?""ÜÍ„¢ž£ž!‚&&÷…¦“¦×“õ‚RRúŒ„ŒŒ…éééã‚ùéù߃PßPQʳô‚ºˆËËÌÁÂÆÆÇÿþ ÿþ+ÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼‚`¼`ƒŸ``Ÿƒ`ŸŸTÀW„ü©ü©üƒ}¯¯}$Ô„YÏÏÔφ9:Ï:99ç­êƒCCêCE„mmllm„±–±±Ûƒ=5=5ƒÕð?"Ü‚øøÍ¢ž!&÷‡¦¦“ד“”õ„RRúRúŒ‚Œ‚ééã‚ùäù‚ßùß…PPQPPQÊ‚Ãʳ†ôôššôô‚º…ËËÌÁÁÆKÿ‚þþYÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`‰Ÿ`T``TTŸŸT„WŸWTW‚©©ü‚}¯}6ƒ$Ô$ÔƒÏÏÔψ99:99ç9ç­ê‚C\C…EmmEml„E–±Z±ÛŒ=5=Õ5Õ?"Õ?""܃jøø̓ͣž‚!!&‚÷!÷‚¦¦“õ†RRúRúRúŒ‚Œé„ããùéùƒßßùßPQƒÊÊijô„È‚‚È‚ºˆËËÌÁÂÂÆÆKÿ‚þþYÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼‚`¼`‡Ÿ`TTŸ`TŸTWTW‚©Wüƒ}¯¯}6$Ô…ÏÔYÏYÏ…:9:99玭ê­êêC\C\\CCEEmlm‚±–±Û=5…ÕÕ"??"ŒÜÜøÍÜÍ¢ÍÍž¢¢ž‚!!&÷¦“õ‚RRúŒ„ŒŒ„ééãéãù‚ßùßPˆQQÊQÊÊÄʳ‡ô³ôôšôÈ‚„º‚º‚º‡ËÌÁÂÆÆÇKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼`Ÿ`„ŸŸTŸTÀW„ü©ü©ü‚¯¯}6ƒ$Ô$ԂϪÏ‹:9:99ç9­ç­­ê\CŒEEmEmllmmZ±–±Û±ÛÛ==455ÕÕ"??"ÜŠøÍÍøÍÍ¢£ž¢ž‚!!&!÷ƒ“¦×“õR‚úRúŒŒŒééééãùßP‚QQÊijôƒÈ‚ô‚º…ËËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼‚`¼`‡ŸŸTŸŸ`TŸTƒWŸTW‚©Wü‚}¯}6$Ô„YÔÏÔÏ:„99ç9ç‚­­ê\C…\CCEEm‚lým±Û‰=5=55ÕÕ"?"Ü‚øø̓£ž¢ž!÷…¦“¦×“õR‚úRúŒ‚Œ†éééãéã‚ùãùˆßùßùßßPßPQÊ‚Äijô„‚ô‚È‚ºˆËºÌÁÂÂÆÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev…¼v¼¼v¼ `ŸTWƒüüWü¯}6$Ô„YÏÏYχ99:99çç­‚ê­êC\CCEEmEmmýmmE–±Û±Û==54Õ5ÕÕ"Õ?""܈jøø͢͢£ž!„&!!&÷‚¦¦“ƒ”õõRúŒ‚Œé‚éãùßPQ…ÊÊÄÊijôˆ‚È‚š‚‚º‚º…ÌËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼ƒ``¼`‰ŸTTŸŸ`TŸŸTƒÀWTWü„}¯}¯}$ÔƒYÔÔψ::9:99ç9ç­êƒ\C\CEm‡lýlmE––±Û‰=5=Õ5ÕÕ"?"܆øÍøøÍÍ¢ž†!!&&÷&÷‰¦×¦×“õ“õõRƒúúRúŒ‚Œéã„ùãùäùß…PßPQQʃijʳ†ôôšôÈô‚º‡ËÌÁÂÆÆÇKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼ `…TŸŸTŸT‚WTWƒ©©Wü‚}ü}6$ÔƒÏϪÏ:9‡ç9­çç­­ê†C\C\CCE‡mmlýmmE±‚Û±Û‹5=Õ5ÕÕ"Õ?""܃ø͎͢¢žÍ¢£žž!!&!÷&!÷‰¦¦×““õ“õõRúŒƒŒŒé…ããéããùƒßßùßPQʳôÈ‚º…ËËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼‚`¼`‡ŸTTŸ`T`TƒWWŸW‚üWü‚}¯}„$66$ÔƒYÏÔÏ:…99ç9ç­ê‚CêCŒEmmEmmllm–Zm±ÛÕ5‡ÕÕ""?""Üø¢ÍÍ¢£žžžž!!&!!÷¦“ד“õ“õRõRúRúúRúŒ…ŒŒé‚ããùéùƒßßùßPƒQÊQʳ‚ô³ôÈ‚ºˆËËÌÁÂÂÆÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼ `‚T`Ÿ3TWTW‚üWüƒ}ü¯}6$ÔƒYϪÏ9ç­êCEm…llmmE±„Û±ÛÛ=‰Õ55ÕÕ??""܆ø¢øø¢Í¢£ž†!&&÷&!÷…¦¦×דõ„RRúRúŒ‚Œé„ããéãù߇PPQQPQQÊijô‚È‚‚º‚ºˆËºÌÁÂÆÆÇKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,‚››neˆeˆev†¼v¼v¼v¼‚`¼`Ÿ‚`TŸ‚TŸT‚WŸW„ü©üWüƒ}¯¯}6‚$$Ô‚ÏYÏŠ:Ï::99ç9çç­ê\CE‰mmllmm–±–±Û=5‡Õ?""?""ÜŠ¢¢ÍÍ¢žžž!ƒ&!&÷‰¦¦“דõ×õõRúŒ‚Œéã‚ùéùƒßùùß‚PPQÊijôƒšôÈ‚º…ÌËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆev‚¼v¼ `ƒTŸ`ŸT„WŸWTW‚©©üƒ}}¯}6$Ô„ÏÔÏÔÏ9„çç­ç­êƒ\CêC„mmEml„m–±Z±Û=ƒÕ55Õ?"܉¢øÜø¢Í¢£¢ž‚!!&÷¦‚דõR„úRúRúŒ‚Œ„éééã‚äãùßP‚QQʃÄÊijô„È‚ôÈ‚º‡ËÌÁÂÂÆÇKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,‚››neˆeˆev†¼vv¼¼v¼`ƒŸ``ŸTWTW‚©©ü†¯¯}¯}}6$Ô†YÏÏYÏÏ:9„çç­­êC‡EEmEmmým‚ZZ±ÛŒ==4Õ5Õ?"Õ?""܃ø̈́͢žÍ££ž!&‚÷!÷†¦““¦““õ‚RRúŒ„ŒŒéã‚ùãù߆PQQPPQʈÄÄʳ³ôô³ô‚‚º‚º…ËËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆevƒ¼¼v¼`ˆŸ`T``TŸŸTÀW…©©Wü©ü‚}¯}„6$$6$…ÔÔYÔÔÏ„::99ç‚­ç­ê‚CêC‚EEm†ýmmZ±–±ƒÛ==5‡ÕÕ"??""Ü‹øÜ͢͢žžž!‚&&÷‚¦¦“ƒ×õõR‚úRúŒé‡ããéããùãù‚ßùß‚PPQÊijôƒšôô‚ºˆËËÌÁÂÂÆÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,‚››neˆƒeeˆev‡¼vv¼v¼v¼`‡Ÿ`TTŸ`TŸT‚WTW‚ü©üƒ}ü¯}‚66$ÔƒÏϪψ:9Ï:99ç9ç­ê‚\êCE„mmlým±Û=‰Õ5ÕÕ"??""܉¢ÍÍøÍÍ¢£¢ž†!&&!&&÷¦‚דõRúRúŒƒŒŒ‚ééãùß„PPQPQÊ‚³Ê³ô„È‚ôÈ‚º„ËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆ‚eˆev‚¼v¼`Ÿ`TŸTƒWTTW©üƒ}¯¯}‚66$Ô…YÔYÏÔÏ…99:99ç„­ç­­ê\CƒEmEm†ýmmE––±…Û±ÛÛ=5‡ÕÕ"??""ܢͅžÍ££ž!‚&&÷‚¦×“õR‚úRúŒ‚Œ…éééã‚éãù߇PßPQQÊQÊ‚³Ä³ôƒ‚‚ô‚º…ËËÌÌÂÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,‚››neˆ‚eˆev†¼v¼v¼v¼`Ÿ`ŸT„ÀWWTW©üƒ}¯¯}6$ԂϪσ:9:9ç‚­­ê‚CêCŒEEmEmllmmEEZ±Û±Û=Û5=Õ55Õ""?""܉¢øÜÍ¢ÍÍžž!&÷‡¦¦×““õ“õ‚RRúŒŒéãƒùéãùßP„QPQQÊ„Äʳ³ô‚šô‚º…ËËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆ„eˆeˆev‚¼v¼`ŠŸ`3`Ÿ`TŸTŸTWTÀWWTWW©©Wü©üƒ}}¯}6$ԂϪÏ:…9ç9çç­êˆC\C\CCEEm†lmmZ±–±Û„5Õ55Õ?"‘ÜÜøÍøøÍÍ¢£¢££žž!!&‚÷&÷‡¦×ד“õ“õ„RRúRúŒ éã‚ùäù‚ßùß„PßPPQʃijijô„‚ô‚ô‚‚º‚º…ËËÌÌÂÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,‚››neˆ‚eˆev†¼v¼v¼v¼`‰Ÿ`TTŸT`TŸTƒÀWŸW‚©©ü‚}¯}6‚$$Ô…YªYÏYσ99:9ç‚­­ê‚CêC…EEmEml„mm±m±Û±ÛÛ=5ÛÕ5Õ?"Õ"ÜøÍž‚!!&‚÷&÷…¦¦×דõR‚úRúŒéã‚ùéùƒßßùßPQÊijô‚šô‚º…ËËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„››,,n‚‘‘ˆ„eˆeˆev‚¼v¼`Ÿ`Ÿ„TTWTW‚ü©üƒ¯}ü}6$Ô‚ÏÔÏ:9…çç9çç­ê‚C\C‚EEm…llmmZ±Û‰ÕÕ55ÕÕ"??"‚ÜÜøŒÍ¢Í¢Í¢ž£žž!!&÷†¦¦“ד×õRƒúúRúŒ…ŒŒéã‚ùéùßPQQPQQÊQÊÊÄÊʳ†ô³ôô‚ô‚‚º‚º…ËËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,‚››n‚enˆƒeeˆev†¼v¼v¼v¼‚`¼`ƒŸ`TŸ‚TŸT„WTWTW„©Wü©üƒ¯}¯}‚66$ÔƒYÏÔÏ:ˆ99çç­ç­­êCê\\CCEEmEmlým‚Zm±Û‰=Û455ÕÕ??"܉jÍÍøÍÍ£žÍž‚!!&÷¦†×õ“”õõRúŒéãùƒßùùßPQʃijijôƒšôô‚º…ËËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„››,,n‘ˆ…eˆˆeˆev‚¼v¼`ˆŸŸ`T`TTŸT‚WTW†üWü©üü¯}6$ԂϪχ99:99ç9ç‚­­êC‚EEm‡lýmmE±Z±Û±ÛÛ554Õ5ÕÕ"??""Ü‚øøÍ„¢žÍž!&!÷‡¦““¦“õ“õRúŒƒŒŒéãƒéùéùßP†QPQQÊQÊ‚Äʳô„‚‚ôÈ‚º…ËËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,‚››neˆeˆev„¼v¼v¼‚`¼`ˆ3`Ÿ`Ÿ`T`TƒWWŸWü©üƒ}¯¯}…6$66$Ô‚ªYÏ:ˆ99çç­ç­­ê\CE‡mmýlmmZ±Ûˆ5ÛÕ5ÕÕ??"܃jøø̓¢£ž!&÷‚¦¦“‰õ“õõRRúRRú‚ŒúŒƒŒŒéãƒäùäù߆PßPQPQʃijʳôƒ‚‚ô‚º„ËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„››,,n‚‘nˆev‚¼v¼‚`¼`ŠŸ`TŸŸTŸŸTŸTƒWWTW‚ü©üƒ}¯¯}6$ˆÔ$ÔÔYÏϪσ99:9‚çç­êƒCCêCEm†lýlmZ–±Û±=Û=Õ5=Õ5Õ"??""ÜŠøÍø¢ÍÍ¢£Íž!‚&&÷…¦¦×““õ‚RRúŒƒŒéã‚äãùß„PPßPQʳ†ô³ôšôô‚‚º‚º…ËËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,‚››nƒ‘enˆ†eˆeˆeev‚¼v¼ƒ``¼`Ÿ`†Ÿ`TŸTŸT‚WŸW©üƒ}¯¯}‡66$6$Ô$ÔÏ„::99ç„­çç­ê\‚CCE‰mmllmmE–Z±Û±Û=Û=4Õ5ÕÕ?"?""ÜøÍÜøÍÍ££žž£žž!!&‚÷!÷¦ׂ““õ†RRúRúRúŒƒééãƒùùãùƒßßù߈PQPQPQÊQÊ‚Äʳô„‚ôôÈ‚º„ËÌÌÂÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„››,,n‘ˆev†¼v¼v¼v¼`ƒŸŸTŸ‚TŸTƒWWŸW‚©Wüƒ}¯¯}…66$6$Ô…YªÔYYχ9::99ç9ç‚­­ê‚\\CŒEmmEmllmmZC–±Û…=ÕÕ55Õ„??""܃øÍ¢͇££¢žžž!„&&÷&÷…¦¦“דõR‚úRúŒƒŒŒ‚ééã‚ùéùß…PßPPQÊij‡ô³ôô‚‚È‚º…ËËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,„››nœn‚‘eˆeˆev†¼vv¼¼v¼‚`¼`‡T`TŸŸTŸTƒWWTW‚üWüƒ}}¯}‚66$ÔÏ:‚99ç…­ç­ê­ê\‡CCEEmEml‚m–±‚Û±Û‘=455Õ?"??"?"ÜÜøÜøÍ¢ž…žž!!&÷‡¦¦“ד“”õ‚RRúŒƒŒŒéã‚ùãùßPQÊijô„Èô‚È‚º„ÌÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,›n‘ˆ‚eˆev‚¼v¼v¼`ŠŸT`Ÿ`TŸŸTŸT…WTWWTW„üWü©ü¯‚}}6‰Ô$$ÔÔYÔªYÏ‚9:9ç­ê\CŠ\CCEEmEmmlm±Û‹=54Õ5ÕÕ"??"܃jÍøÍ„žžž!&÷¦„דõ“õRúŒƒŒé„ããùéùß…PPQPQʃ³³Ê³ˆô³ôôÈ‚‚È‚‚º‚º…ËËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,†››œ,nœnƒ‘enˆƒeˆˆev¼ `ƒTŸ`Ÿ‚TŸT‚WŸW„üWü©ü‚}¯}…6$$6$ÔƒYϪχ9::99ç9热ê­ê\CŒEmmEmmýmm±Z–±ÛˆÕÛÕ55Õ??"Ü‚ÍÜ̓žž‚!!&‚÷&÷…¦““דõ„RúRRú‚ŒúŒƒŒéƒééã‚ùéù‚ßùßP„ßPPQʳô‚º…ËËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,‚››n†enˆˆeˆev†¼v¼v¼v¼`ˆŸ``Ÿ`TŸŸT„WTWTW‚ü©ü‚}ü}6$Ô‚YªYÏ:9†çç­­ç­ê\C\CEmým±ÛŒ=5ÕÕ5ÕÕ"??""܃øÍøÍ‚£Íž‚!!&÷ƒ¦¦×“õ‚RRúŒƒŒŒéãùƒßßùßPQʃÄÊijôƒ‚ôô‚º…˺ÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚……,„››,›nˆ„eˆeˆev‚¼v¼`ŸƒTŸ`ŸT‚WTW©üƒ}¯¯}†66$6$$ÔÏ:9„ç9çç­êC‚EEmˆýmmE–±Z±ÛŒ=²=Õ5ÕÕ?"?""ÜŠøÍÍøÍÍ£££ž‚!!&÷…¦“×דõ„RRúRúŒ‚Œéãƒéùäù߆PPQPQQʃijʳôƒÈ‚È‚º…ÌËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„›nn,n‚enˆev†¼v¼v¼v¼ `‚ŸTŸT„WTWTW„©Wü©ü}†66$6$$ԂϪÏ‚::9牭ê­êê\C\\CEˆmmlýlmE–±Û„²5=4Õ„"?""܃øÜ¢͆¢žžžž!ƒ÷÷&÷ƒ¦¦×“õR‚úRúŒƒŒŒéã‚ùãùƒßùùßP‚ßPQʳôƒÈôÈ‚º…˺ÌÌÂÆKÿ‚þþ5ÿ‚þþ"ÿˆìëîíòñIñI‚…… ,„›nnœn‚enˆ„wˆeˆev‚¼v¼v¼`Ÿ‡TŸ`TŸTŸTWTW„üWü©ü‚¯¯}‚66$ÔYÏ‚9:9‚çç­ê‚C\CŒEmEmmllmmE±–±‚Û±Û‰55Õ5Õ?Õ??"…ÜÜÍøøÍ„žÍ¢£ž…!!&!&÷†¦¦×ד“õ„RRúRú‚ŒúŒƒŒ‚éé…ããéùäùßPQ„ÊÊÄʳô„È‚‚ô‚Šºº‚ººÌËÌÁÂÆKÿ‚þþ5ÿ‚þþ"ÿ†ìëîíòñI………II…,„nnœ›n‘ˆƒeeˆev‚¼v¼ `TŸTÀW‚ü©üƒ¯}¯}‚66$ÔYφ9Ï:9ç9热ê­ê‚CêC†mmEmllm‚ZZ±‚Û±Û†55=Õ5?"܃øÍÜÍž„!!&!&÷‚¦¦“„õ“õõR‚úRúŒ‚ééã„ùéùéùßP‚QQÊ‚Äij‚ô³ô‚‚È‚º„ÌÌÁÂÆKÿ‚þþ/ÿ þÿˆìëîíòñIñI‚…… ,ƒ›nœneˆev„¼v¼v¼`TŸ‚`TŸT‚WŸW„©©ü©ü¯}6‚$$Ô„YÏϪÏ‹99:99ç9çç­­êƒCCêC‚EEm‡llmmZC–±Û„55Õ5Õ?"܃øÍø̓£Í¢ž‚!!&‚÷&÷…¦¦×דõR‚úRúŒƒŒŒ‚ééãù߃QPPQÊ‚Äʳô„‚ô‚ô‚º…ËËÌÁÂÆKÿ‚þþ0ÿ þÿ†ìëîíòñI………II…,›n„‘nˆeˆ‚eˆe‰vevv¼v¼¼v¼`ƒTŸ`TŸT„WŸWTW„©©ü©ü‚}¯}„6$66$ÔYÏ:‚99ç‚­­ê…CC\CCEˆmllmm–±–±Û…55ÕÕ5?"ƒÜÜøÍ„£ž¢¢ž!„&&÷!÷‡“×ד“õõR‚úRúŒƒŒŒ‚ééãƒéùäù‚ßùߎPßPQPPQÊQÊÄijijô‚‚ô‚ºÌ„ÂÆÆÇKÿ‚þþ0ÿ þÿˆìëîíòñIñI‚……,„›n,,nƒ‘enˆ‚eˆe‚v¼v‚¼v¼`ŠTT``ŸŸ`ŸTŸT‚WTW©‚ü©ü¯}…6$$6$ԃϪYÏ9ç­ê‚C\CEm…lýlmm±Ûƒ5=<Õ„?"?"ÜøÍ‚¢£ž‚!!&÷‡¦¦“דõ×õˆRRúRúRúúŒƒŒ…ééééã‚äãù‚ßù߉PPßQPQQÊQÊ‚Äʳô„ÈšÈÈ‚º…ËËÌÌÂÆKÿ‚þþ0ÿ þÿ†ìëîíòñI‡……II…,…,›nˆ‚eˆev†¼v¼v¼v¼`‚TTŸT…WTÀWTW‚©©ü¯}‚66$Ô„YªÏÔÏ:9眭筭êê\êê\C\CCEEmEmlýmmE–Z±±Û„55Õ5Õ„??""܃øÍø̓¢£¢ž!&÷‚¦¦“õ‚RRú‚ŒúŒˆŒééãƒùùäù‚ßùß‚PQPQÊQÊÊijij³ôô³ôÈ‚º‡ÌÌÁÂÂÆÆEÿ þ+ÿ þÿˆìëîíòñIñI‚……,n,n„enˆeˆ‚eˆev ¼`†T3``ŸTŸTƒWWTW‚©©ü¯}6‚$$Ô„YÏϪÏ‚9Ï9‚çç­êƒCCêC‚EEm‡lýmmZCZ±ÛŒ<5Õ=ÕÕ??"?""ÜŠøÍÜ͢͢žÍ£ž†!!&!÷&÷†¦¦×ד“õR‚úRúŒŒŒŒééééãƒéããù‚ßùß…PQPQQÊ‚Äʳô„šÈšô‚º…ËËÌÁÂÆEÿ þ-ÿ þÿ†ìëîíòñI„……I…,›n‰‘enˆˆeˆeˆev†¼¼vv¼v¼`‡3T`Ÿ`ŸŸTÀW‚©Wü¯}6$Ô„YªªYÏ9热ê­ê†CC\\CCEˆmlýmm–±–±Û‚545†ÕÕ"?""ÜŠøÍøøÍÍ¢£ž£ž‡!!&!&÷&÷¦ׂ“×õR‚úRúŒƒŒ„éééãùäùƒßùù߆PPßPQPQ…ÊÊijijôƒ‚ôÈ‚º…ËËÌÁÂÆEÿ þ-ÿ þÿˆìëîíòñIñI†……,I……,œ,‚nœnˆƒeeˆev ¼`„Ÿ`T`T‚Ÿ3TƒWTŸW…©üWü©ü„¯}¯¯}„66$$Ô‚YÔσ:Ï:9ç­êCEm‰llmm˜CZ±±Û‹54Õ5Õ?Õ"?""Üø͆¢Í££žÍž!&‚÷&÷„¦¦××õ‡RõRRúúRúŒéã„ééùäù߆PPßPPQÊ‚Äʳˆô³ôôš‚‚š‚º…ËËÌÁÂÆEÿ þ-ÿ þÿ†ìëîíòñIƒ…I…, n‚enˆev…¼vv¼v¼ `ˆTŸ``ŸŸTŸTƒWWŸW…©©ü©ü¯}6$Ô„ªÏªÔσ:9:9ç­ê…\ê\C\CƒEmEmƒ˜Z–±ÛŒ=5ÛÕ5Õ?Õ??""ÜøˆÍÍ¢£žž£ž!&÷‚¦¦דõRƒúúú‰ŒúŒŒŒŒŒ…ééééãùäùßP‚QQʃijijô‚º…ËËÌÁÂÆFÿ þ.ÿ þÿˆìëîíòñIñI‚…,…,›nˆ‚eˆevƒ¼vv¼‚`¼`„3T``Ÿ‚TŸT…ŸWTWTW‚üWü‚}ü}6$ÔƒÏÏÔÏ‚9:9„ç9­ç­êƒ\CêC‚EEm…Z±m±±Û„==ÕÕ5†?""?""ÜøÍ¢„žžž!‚&&÷¦׃“õ×õRúŒ‚ŒˆééééããéäùßPQÊijôƒ‚šô‚‰º‚ººËËÌÁÂÆFÿ þ/ÿþÿ†ìëîíòñIƒ…,I,›n,nƒ‘enˆeˆveevv¼vv¼3`„T``TŸ„TŸTT W©ü‚}¯}6$‡Ô$ÔÔYϪÏ:9„ç9­ç­êƒCC\C‚EEmƒ±ZZ±ˆÛÛ=ÛÛÕÕ5Õ„??""܃øÜøÍ£ž£ž†!&&÷÷&÷…¦×ד“õR‚úRúŒ‚Œéã„ääùäùßPQÊ‚Äʳôƒ‚ôô‚º…˺ÌÁÂÆFÿ þ/ÿþ ÿˆìëîíòñIñIƒ…,…,„œ,n,nƒ‘eeˆe‹v¼e¼v¼¼v¼¼v¼`‹3`TTŸ`3T`TŸTƒŸÀTW©ü‚}ü}6‚$$ԂϪσ99:9ˆç9­ç­­ê­ê‚C\CEmýmmZ˜±Z±Û±±ÛÛ55ÛÕ„?""?"‡ÜÜÍÍø͢͞!ƒ&!&÷†¦¦×ד”õRƒúRRú‚ŒúŒ‚Œƒééé†ùãäéùäùßP‡Ê{QÊÊÄijôš‚ºˆÌËÌÁÂÆÆÇFÿ þ/ÿþ ÿ†ìëîíòñI…‚,…,…n,nn,nˆeˆe‚vev‚¼v¼ `TŸT W©üƒ¯}ü}ƒ6$6$Ô…YϪϪω9::99ç9çç­ê„\\C\CƒEmEm‹ýmmE˜CZ±ÛÛ±Û„5²55Õƒ"?"ÜŽÍøø¢Íž£žž!!&‚!&÷¦×”õRúŒƒŒŒéƒãùäùß‚PßPQʃÄÊʳô„šô‚ô‚‚º‚º…˺ÌÁÂÆGÿþ0ÿþ ÿˆìëîíòñIñI„……,…,†nœ,nnœnƒ‘enˆ‚eˆeˆ¼e¼v¼v¼v¼`ˆT`T`Ÿ`TTŸTW©ü}ü¯}}66$6$$Ô$ÔÏ…:9:99ç‚­­ê‚\\CƒEmEm‰ýmm˜˜ZZ±±Ûˆ5ÛÕ55"Õ?"Ü„øÍÍø͆£žžžž!&÷×”õRúŒ‚éé…ùééäéùß‚PßP‰QÊQÊÊij³Ã³ô‚‚ô‚‚º‚ºˆÌËÌÁÂÂÆÆGÿþ1ÿþ ÿ†ìëîíòñI…,„œ›n,neˆe†vevv¼v¼‚`¼`‡3`Ÿ`ŸŸ`Ÿ‚TTWƒ©©Wüƒ¯¯ü}†66$6$$ÔŠYϪÏÏ9ÏÏ9:9ç­„êê\\CE˜m„ýmm˜Z‚±±Û‚5=5ˆÕ"?""?""܃¢øøÍ…£Ížž!&÷ˆ¦¦b¦×”õõRƒúRRúŒ‚éé‚ùäùƒßßù߃PPßPƒQÊQʳô‚šš‚ƒºº‚º„ËÌÁÂÆGÿþ1ÿþ!ÿ†ìëîíòñI…,…n,nn,n‚ˆnˆe¼v‚¼v¼‚`¼`‰3`T`TŸTTÀW…TWTW®‚®„GGF„pFpFpwá„faââa‚ffâz+z*+„ +  .‚(./ƒ((/)‚b)b‚cbc·úŒ銃éäééãééùäùßP‡QÊQÊÊÃʳôƒšôô‚º…ËËÌÌÂÆHÿþ1ÿþ!ÿ‡ìëîíòññI………,I…,ƒ›œ,n„eneˆeŒfeffevv¼v¼¼ih‚yhy„y‚®®ƒ®®‚®„GGF‡pFpFppqpƒwwáfa‚ââ‚zz +ƒ  ./‚(()b…cbccbc‚·c·‚ƒƒƒù‚ßù߃PßßPQʳŠôšôš‚ôÈš‚‚º‡ËÌÁÂÆÆÇHÿþ2ÿþ!ÿ†ìëîíòñI„…I……,„œnnœnƒˆˆnˆ‚ˆiihiihi hƒyhhyƒWTW‚ü©ü¯}†66$6$$ÔƒÏϪχ:9:9çç9çê‚\\C‚EEm†lmmE±–±‰Û±=Û=5=Õ5Õ„??""Ü‚ÍÜ͆žÍžžž!ƒ&!!÷†¦¦×ד“õ„RRúR·‚·‰ƒƒƒƒƒ‚‚xxƒx‚PQÊ‚Äij‚šô‚º…ËËÌÁÁÆHÿþ3ÿþ"ÿ‡ìëîíòññI‚…I…,„nœƒ„i‚¼v¼`…Ÿ`ŸŸ`Ÿ‚TŸTÀW‚©©üƒ}¯¯}…66$6$Ô„ªYÏYÏ…:9:99ç„­­ê­ê\‰CCEEmEmllm‚ZE±…Û±ÛÛ=5‡Õ?""?""܃øÍøÍ…Ížž!„&÷&!÷ƒ¦¦×“õR‚úRúŒ…ŒŒƒéé…ããùäãƒxx‚x‰   ³ô‚ºˆËËÌÁÂÂÆÇHÿþ3ÿþ"ÿìëîíòñ…ñII…,……,‡‚ˆ‚eˆev„¼v¼v¼`ƒŸ``Ÿ‰TŸTTWTÀWTW„üWüWüƒ¯}¯}‚66$ԂϪÏ‚::9ç­ê\C‚EEm…lýlmZ±Û…==Õ55Õ„??""܃øÍjÍ„¢Íž&÷‡¦¦×““õ“õ„RRúRúŒ‡ŒŒéã„éùùéùßP…  ƒ ô‚ºˆËËÌÁÂÆÆÇIÿþ4ÿþ"ÿ‡ìëîíòñI^ˆnœ,n†‘eneˆˆev…¼v¼¼v¼`Ÿ‡`Ÿ`ŸŸTŸT„ÀWWTW©ü¯}…66$6$Ô‚ÏÔσ9::9ç‚­çêƒC\\C‡EEmEmlým‚––±„Û±ÛÛ=‰55Õ""??""܃øÍø̓¢Í‡ž!&&÷ ÷‰¦¦×““õ“RõRúŒ‚Œé„ããùéù‚ßùßP‚QQʳ†ôô   ‹L LLÌÌÁÂÂÇÇIÿþ4ÿþ"ÿ†ìëîíò_^‚,‚œ,nœnƒ‘ˆnˆev‚¼v¼`Ÿ‡TŸTTWTÀW‚©Wü‚¯¯}‚66$ԄϪϪÏ„:9:9çê‚\\CŠEEmEmlýmmE±Û‡=5455ÕÕ"ÜÍ¢ˆ!ž! !&÷!÷‰¦¦×דõ×õõR„úRúRú„ŒŒŒ†ééééãù߈ùßßPPQPPQʳô‚† L LƒMÁÆÇIÿþ5ÿþ#ÿ…ssrr_^II……,I…,,…,,œn,,n‚‘eˆev†¼vv¼¼v¼`‡Ÿ``Ÿ`Ÿ`ŸT„ÀWWTW’ü©ü©üü¯}¯}¯}}66$6$Ԫτ::9:9ç‚­­êˆ\CC\\CCEm‡lýlmmZ–±Û±Û=Û5=Õ55ÕÕ??""Ü‚øÜÍ£ƒ!ž!&÷…¦¦×דõR‚úRúŒ„ŒŒ‚ééã„ùéùéùßPQ‚Êʳô‚º‚MLM‚ÇÇIÿþ5ÿþ#ÿˆssrr_ñIñI„…,……,„nnœ,n‚‘nˆƒeˆˆevƒ¼¼v¼‚`¼`ƒŸŸ`Ÿ‡TŸTTWTTW„©Wü©ü‚¯¯}…66$6$Ô„ÏÔªYÏ„:9:9ç­êCEml‚Em±Û…5=55Õ?"܃ÍøøÍ!&!÷‰¦×“ד“”õõRúŒéƒééãùß„PßPPQÊó„ô³ôô‚ô‚ºƒËËÌMÇJÿ‚þþ6ÿþ#ÿ†ssîíòñI…,…œ,nnœnƒ‘enˆev¼vƒ¼¼v¼`ƒŸŸ`ŸTWü‚}¯}‚66$ÔƒÏÏYÏ:9„çç­çê\CEmlmmE–±Z±±Û±ÛÛ=5‡ÕÕ"??""܃øÍøÍ‚¢Íˆ!ž!&!÷÷&÷‰¦¦×““õ×õõR‚úRúˆŒŒŒŒŒéã‚ùäù‰ßùßßPßPQPQʳô‚‚º‚ºˆÌËÌÁÂÆMMJÿ‚þþ6ÿþ#ÿˆìëîíòñIñI…‚,…,ƒnœ,neˆ‚eˆevƒ¼¼v¼ƒf¼¼`†Ÿ``ŸŸ`ŸT„ŸŸÀTW‚©©ü¯}6$Ô‚ÏÔφ99:9ç9çê‚\\C„EEmEl„mmE–±Ûƒ==Û5‚ÕÕ?‚""ÜøÍ‚Í!&‚÷'÷…¦¦×דõR‚úRúŒ‚Œéãƒùéãùß…PßßPPQÊóô„‚ôôÈ‚º‡ËÌÁÂÂÆMJÿ‚þþZÿ†þþîíòñI…‚,…,„œnœ,n†ˆnˆeˆˆevƒ¼vv¼‚`¼`ƒŸ``ŸTW©ü©ü¯}6$†Ô$ÔÔYYÏ‚::9†ç99çç­ê\CŒEEmEmllmmE±˜±Û5…ÕÕ""?"Üø‹ÍÍ¢¢ž!!&Ž÷÷'÷÷¦¦“ד“”õõRúŒ‚ŒéãƒùùäùˆßùßßPQQPQʳôš‚º‚ººÌËÌÁÂÂÆþþCÿ^þÿƒþþîýñIý,ý„nnœný„enˆˆýeý¼vý¼`ý„``ŸŸý„ŸŸTTýWýüý}6ýÔýÏýçýêý‰CCEEmEmllm‚±Z±‚Û±Û„5=Õ5Õƒ?""ÜøÍ¢¢!ž!!&!!÷‰¦¦×““õ“õõR‚úRú‚ŒúŒ„ŒŒ‚ééãù߃PßPQÊóô‡šôôÈš‚‚º‚ËÌ‚þþÿ'ÿ†þþîíòñI…,†nœ,nnœn‚ˆeˆev¼v¼‚`¼`…Ÿ``Ÿ`Ÿ†TTWTWŸW‚ü©ü‚¯¯}6‚$6$ԅϪYÏÏ:9ç­ê\C‚EEml‡m–±ZZ±±Û5ˆ?"??""ÜÜøÍÍ¢ÍÍ!!ž!!&÷…¦¦×דõ„RRúRúŒ‚Œ†ééãéã‚ùäùß…QPQQPQʳôÈ‚º…̺ÌÂÂþÿ'ÿþ†òñIñII…‚,…,ƒœnœn‚ˆnˆ„eeˆˆev„¼¼vv¼`„Ÿ`Ÿ`ŸT„ŸWWTW‚©Wü…}¯¯}}6$ÔƒÏÔªÏ9ç‚êçê\C‡EEmEmlþm±ŽÛÛ=²=Õ5ÕÕ?"?""܆øÍÍøÍ̓£!&!÷†¦¦×““×õRúŒ‚Œé‚éã‚ùãù߃QPPQʳô‚ºƒÌºÌþÆÿ(ÿëþI…‚,…,‡œœ›,nnœnƒˆneˆev¼e¼ƒ``¼`„Ÿ`Ÿ`ŸT†WWTWWTWƒüW©ü‚¯¯}6$Ô„ÏϪªÏ:9ç­ê\C‚EEmþm„±–±±Û²5Õ†?ð""ÜÜøÍ!‚&!÷‡¦¦“¦×õ“õ„RRúRúŒ‚Œéãùß„QNQPQʳô„š‚‚š‚‚º‚º‚̺þÆÿ*ÿ‚îíþ‚II…,„œ,n,nƒˆˆnˆ‚eˆev†¼vv¼¼f¼`…Ÿ`Ÿ``ŸTƒÀWŸWü©ü¯}‡6$$6Ô$$Ô‚ªYÏ„::99ç…­ç­êçê\C‡EEmEmlþm±Û‰5Õ55Õ?""‹"Üø͈͞!!ƒ&÷!÷ƒ¦×דõR‚úRúŒŠŒŒŒéééã‚ùãùƒßùù߃PQPQʳô‚‚ô‚ºþ‚Âóÿ,ÿƒíòñþ‚……,„n,n,nˆ‚eˆe‹veevv¼vv¼ff¼`‚Ÿ`Ÿ‰`ŸŸTTŸTWTW‚©Wü¯}…66$6$ԂϪσ9::9ç­ê\‚CCEmþmZ±‚Û±Û5<Õ55ÕÕ?""ÜÜ‹ø̓¢Íƒ!!&÷¦ƒ×דõR‚úRúŒƒŒƒééãùŠßNßNßQQßPPQÊij†ô³ôô‚š‚þƒÌÁÂÿ/ÿ‚ñIþ,†›,›œ,›n‚ˆnˆ„eˆeˆe…v¼v¼v¼ƒf¼f¼f`„Ÿ`Ÿ`ŸTƒÀWTW‚ü©ü¯…6}}66$Ô„YÔÏÔÏ„:9:9ç‚ê­ê\CŒEEmEmlþmm±±m±Û5ÕÕ5Õ?"‹‹""øÜøÍ¢!…&&!&'÷†¦¦×ד“õR‚úRúŒ„ãééã‚ùãù„ßùßùßQʃ³³Ê³ô‚šš þ‚ÌÌÿ2ÿI‚…… þ‚n›nƒˆnnˆ‚eˆe„veve¼`‚Ÿ`Ÿ`Ÿ‡TTWŸWWTWƒ©W©ü¯ˆ6}}66$6$ÔƒYªYÏ:9ç‚­çê\„CCEEmŠlþlmm±ZZ±±Û†5<ÕÕ5Õ‹Ž""‹øÜøÍÍøÍ¢¢ÍÍ!…&&÷÷!÷†¦¦×ד“õR‚úRúŒƒŒŒƒãéã‚ùãù߃QQPQÊ‚³Ä³ô þºÌÿ8ÿ„……,, þ‚nnˆƒeˆˆeŠv¼e¼f¼¼eff¼‚`¼`ƒŸ``Ÿ†TŸTTWTWü¯}‚66$‚Ô$ԃϪYÏ:ƒ9ç:çƒêê­ê\CŒEEmEmmþmm˜ZZ±Û‚5=5…ðð‹‹"Üø‡ÍøÍÍ£ž!ƒ&÷!÷ƒ¦“דˆõõRõRRúRú‚ŒúŒ‚Œ†ééãééãù‚ßùß…PNßPPQÊ þ‚ºÿCÿ,› þ‚ˆˆe…feefef†¼¼f¼`¼`‚Ÿ`Ÿ`Ÿ†TŸTŸTÀW©ü¯}66$6$Ô$ÔÔYªÏYYÏÏ:„99ç9çê„\ê\\CŽEEmEmlþmmZCZ±±Û5‚‹Õ‹†"ÜøÜøø̓!ž!&‚÷!÷ƒ¦¦×“õRúŒƒŒŒƒãéã‚ùãùƒßßùß„PQQPþ„ôôššÿOÿnþe‚fef†¼`¼f`¼`Ÿ‚WTWŸW‰üü©©¯©ü¯¯}6$‚Ô$ÔYÏ:‚99ç‚ê­ê„\ê\\CEm†þmm–±Z±Û²5‡‹Õ"‹‹Ü‹øˆÍͣͣž!&÷ƒ¦×דõR‚úRú‚ŒúŒ „ãéãƒùùãùßþijÿ\ÿˆþfƒ¼`¼`‚ŸŸ`‚Ÿ`Ÿ†TŸŸWWÀWƒ©ü©¯}6$ÔYÏ:„9ç99牭ê­êê\CC\CEŠmmþmm–±–±±Û²5‚‹5‹…Ü"Üøø̓£†!ž!!&&÷¦ׂ““õRƒúRRúŒ‚Œ„éããùþ‚QQÊÿjÿeþ` Ÿ†WWŸÀWÀW©ü¯…}¯}}6$Ô‚YYÏ:9çêCEmþmƒ±–Z±Û5‹‚Ü‹ø͈ž!ž!&‚!'÷…¦¦×דõRúŒ‚Œãþ…ßßPQQÿ~ÿþŸÀ‚WÀW„©W©©ü¯}†66$6Ô$ÔY‚ÏÏ:ƒ9:9çê‰\êê\\CCEEmˆþmm˜CZZ±Û‚=Û5‚ðÕ‹ˆÜ‹ÜÜøÍøøÍ‚£Í!„&÷÷!÷ׂ““õRƒúúRúŒþÿÿÿþW©ƒþüü¯}†66$6$$ÔŒYYÏYÏÏ::9ç99çƒêççêCƒmCEm„þmm˜C‚Z±Ûƒ55Û5…‹‹ð‹‹܉øÍÍøÍÍ££!‚&&÷¦ׂ““õRúþÿÿ'ÿþ‚66$‚ÔÔYÏ:9ç­êþCEmþmŠ˜˜CC±CÛ\ÛÛ5‚‹ð‹ÜøÍ‚££!þÿÿ:ÿ@þmAþÿÿXÿYþÿÿÿÿ‚þþÿÿÿFÿþÿÿÿFÿþXÿþÿÿjÿþXÿþÿÿjÿþXÿþÿÿjÿþXÿþÿÿjÿþÿþ1ÿþÿþÿþÿþÿÿeÿþÿþ/ÿþ‚ÿÿþ‚ÿÿ þÿÿdÿþÿ‚þþ.ÿþÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþÿÿdÿþÿ‚þþ.ÿþÿþÿþÿþÿþÿÿcÿþÿ‚þþ-ÿþÿþÿþÿþÿþÿÿcÿþ ÿ‚þþ ÿ‚þþ-ÿþÿþÿþÿþÿþÿÿcÿþ ÿ‚þþ ÿþ,ÿþÿþÿþÿþÿþÿÿcÿþ ÿ‚þþÿþ,ÿþÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþÿÿdÿþ ÿ‚þþÿ…þþÿþþ*ÿþ‚ÿÿþ‚ÿÿ þÿÿdÿþ ÿ þÿþƒÿþþ*ÿþÿþÿþÿþÿÿeÿþ ÿ þÿþƒÿþþ+ÿþÿÿ{ÿþ ÿ‚þþÿþÿ‚þþ*ÿþÿÿuÿ þÿ‚þþÿþÿ‚þþ*ÿþÿÿvÿ þÿ‚þþÿþÿþÿÿÿ#ÿ þÿ‚þþÿÿÿ2ÿ þÿÿÿ=ÿ þÿÿÿ>ÿ þÿÿÿ>ÿ þÿÿÿ>ÿþÿÿÿ@ÿþÿÿÿ@ÿþÿÿÿ@ÿþÿÿÿ@ÿþÿÿÿBÿþÿÿÿBÿþÿÿÿBÿþÿÿÿCÿþÿÿÿDÿþÿÿÿDÿþÿÿÿDÿ‚þþÿÿÿEÿ‚þþÿÿÿFÿþÿÿÿFÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿx`o`lpèÔ–¸þÿÿÿÿÿÿÿÿÿÿÿÿÿÿ>:B>9:B>9:B>9:B>9:B>9:B>9:‚‚/‚T‚6Q‚‚Q:‚‚/‚T‚6Q‚‚Q:‚‚/‚T‚6Q‚‚Q:‚‚/‚T‚6Q‚‚Q:‚‚/‚T‚6Q‚‚Q"  ‚‚/‚T‚6Q‚‚Q"    )H0KK"    )H0KK" ‚‚/‚T‚6Q‚‚Q"„„‚‚T‚‚… ƒƒ‚6†‚'/„‚‚„„‚‚‚0"‚‚ˆ…T‚„‚!‚Œ…6‚„‰‚)0‚ˆ…‚…„2"‚‚ƒ„T„„…‚!‚„„6„‰‚*0‚ƒ„‚„„„…3:‚†ƒTƒ†‚!†„ƒ6…†*0†ƒ‚„ƒ†3, ‚…‚„T„ƒ‡‚!…„„6„†…+0…‚„‚„„ƒ‡4* ƒ…Uˆƒ!„…7ˆ+0ƒ…ˆƒ4(… ‚V‚!‚8‚*0‚‚3%‚‚Y‚‚!‚‚;‚‚)0‚‚‚‚2#ƒ‚‚Y‚‚!‚‚;‚‚)0‚‚‚‚2"‚‚Y‚‚!‚‚;‚‚)0‚‚‚‚2%„‚X‚ ‚:‚*/‚‚3'‚ B>9) B>9 ‚ ‚‚/‚T‚6Q‚‚Q   ‚‚/‚T‚6Q‚‚Q &‚‚/‚T‚6Q‚‚Q   „†‚‚‚‚‚„‚†‚‚‚†‚‚†‚ƒ„‚‚‚"  …„†ŒŒ‰„…„†‰Œ‰„‰‰‚…‰‰„  …ƒ„„ƒƒ„„„ƒ…ƒ„†ƒƒ„‰„ƒ„„„ƒ‚…ƒ„ƒ   ƒ„ „ „ƒƒ„‚ ƒ„ƒ„„  ƒƒ   ƒ„ƒƒƒƒƒ„ƒ‡„‚ƒƒƒƒ„†„„ƒ…„ƒ†  ˆ…ˆ…„„‡‚„……ˆ…„ˆ‡„…ˆ‚……„‡  ‚‚‚‚‚‚‚‚„‚‚‚‚†‚‚‚ƒƒ‚‚ ‚‚ ‚))‚/‚ ‚69‚…: ‚))‚/‚ ‚69‚…:# ‚))‚/‚ ‚69‚…:  …‚‚/‚T‚6Q‚‚Q   ‚ B>9 …  B>9 ‚‚ 0Q:7=CC'H ‚ 0P97<BC&G ‚„3S9:?BF)G(‚E‚‚‚‚0‚‚#(‚‚‚(:…„‚‚E‚‚……„‚‚0‚‚…%(…„‚‚‚‚…*   ƒ„Q„„„„ƒ„=„„„%(ƒ„'„„„*   ƒ„F„ƒ„„„ƒ„1„ƒ„„%(ƒ„„ƒ„„*   ƒ„…Fˆ„„„„ƒ„…1ˆ„„„%(ƒ„…ˆ„„„*   ŒF„……Œ1„……%(Œ„……*   ‚ˆE„†‚‚‚ˆ0‚†‚#'‚ˆ„†‚(  ƒ ‚‚E‚ ‚„‚0‚‚ %(‚‚† *   ‚‚E‚ ‚„‚0‚‚ %(‚‚† *   ‚‚E‚ ‚„‚0‚‚ %(‚‚† * 0‚‚‚E‚‚‚,…‚0‚‚‚18‚‚‚†‚6 (‚‚/‚T‚6Q‚‚Q'‚‚/‚T‚6Q‚‚Q &  )H0KK &  )H0KK &‚‚/‚T‚6Q‚‚Q ‚'‚‚/‚T‚6Q‚‚Q(‚‚/‚T‚6Q‚‚Q:‚‚/‚T‚6Q‚‚Q  &‚‚/‚T‚6Q‚‚Q  &‚‚/‚T‚6Q‚‚Q  &B>9 &B>9 &                                        &B>9 ‚‚&B>9 'B>9 ‚'B>9:B>9(‚‚/‚T‚6Q‚‚Q'‚‚/‚T‚6Q‚‚Q &‚‚/‚T‚6Q‚‚Q &‚‚/‚T‚6Q‚‚Q &‚‚/‚T‚6Q‚‚Q ‚'‚‚/‚T‚6Q‚‚Q( Q)=0CH: P)<0CG ,‚!S ‚/‚ ? ‚6F ‚‚ G  &‚‚E‚‚ƒ‚‚‚0‚‚#(‚‚†‚( ‚…„‚‚E‚‚…‚…„‚‚0‚‚…%(…„‚‚‚†‚…* ‚ƒ„Q„„„‚„ƒ„=„„„%(ƒ„ ‚‚„„„*"‚ƒ„F„ƒ„„‚„ƒ„„1„ƒ„„%(ƒ„‚‚„ƒ„„*   ‚ƒ„…Fˆ„„„‚„ƒ„…1ˆ„„„%(ƒ„…‚‚ˆ„„„*    ŒF„……Œ1„……%(Œ„……*   ‚ˆE„†‚‚‚ˆ0‚†‚#'‚ˆ„†‚(   ‚E‚ ‚0‚ %(‚‚ *‚E‚ ‚0‚ %(‚‚ *‚E‚ ‚0‚ %(‚‚ *  %‚‚E‚‚(,‚‚0‚‚18‚‚‚‚6   B>9   B/‚ 9 ‚ B/‚ 9‚‚/‚T‚6Q‚‚Q"‚‚/‚T‚6Q‚‚Q „„†‚‚‚‚‚„‚†‚‚‚†‚‚†‚ƒ„‚‚‚ …„†ŒŒ‰„…„†‰Œ‰„‰‰‚…‰‰„  …ƒ„„ƒƒ„„„ƒ…ƒ„†ƒƒ„‰„ƒ„„„ƒ‚…ƒ„ƒ  ‚ƒ„ „ „ƒ‚ƒ„… „„ƒ„„  ‚…ƒ & ƒ„ƒƒƒƒƒ„ƒ‡„‚ƒƒƒƒ„†„„ƒ…„ƒ† …ˆ…„„„„…‚ˆ…„ƒ‡„…‰…„‡  ‚‚‚‚‚‚‚‚„‚‚‚‚†‚‚‚ƒƒ‚‚   ‚))‚/‚ ‚69‚…: ‚ ‚))‚/‚ ‚69‚…:  ‚))‚/‚ ‚69‚…: ‚‚/‚T‚6Q‚‚Q, ‚‚/‚T‚6Q‚‚Q"‚ ‚‚/‚T‚6Q‚‚Q"   )H0KK"  )H0KK:‚‚/‚T‚6Q‚‚Q:„„‚‚T‚‚… ƒ‚6‚‚'/„‚‚„„‚‚‚0"  ‚‚ˆ…T‚„‚!‚‡‚…6‚„ƒƒ‚)0‚ˆ…‚…„2"  ‚‚ƒ„T„„…‚!‚„„6„ƒƒ‚*0‚ƒ„‚„„„…3"  ‚†ƒTƒ†‚!†„ƒ6‚†*0†ƒ‚„ƒ†3" ‚…‚„T„ƒ‡‚!…‚„6„ƒ…+0…‚„‚„„ƒ‡4" ƒ…Uˆƒ!„…7ˆ+0ƒ…ˆƒ4"ƒ ‚V‚!‚8‚*0‚‚3" ‚‚‚Y‚‚‚!‚‚‚ ; ‚‚‚)0‚‚‚‚‚‚2* ‚‚‚Y‚‚‚!‚‚‚ ; ‚‚‚)0‚‚‚‚‚‚2:‚‚‚Y‚‚‚!‚‚‚ ; ‚‚‚)0‚‚‚‚‚‚2:„‚X‚‚ ‚ ‚:‚ ‚*/‚‚‚‚3:‚‚/‚T‚6Q‚‚Q:‚‚/‚T‚6Q‚‚Q:  )H0KK:  )H0KK:‚‚/‚T‚6Q‚‚Q:‚‚/‚T‚6Q‚‚Q:‚‚/‚T‚6Q‚‚Q:‚‚/‚T‚6Q‚‚Q:‚‚/‚T‚6Q‚‚Q:‚‚/‚T‚6Q‚‚Q:B>9:B>9:B>9:>‚+ ƒA‚+ ƒA‚+ ƒy‚‚‚‚,‚‚‚…‚‚B‚‚‚‚,‚†…‚‚B‚‚‚‚,‚†…‚‚y‚‚‚‚,‚‚ƒ‚‚B‚‚‚‚,‚‚ƒ‚‚B‚‚‚‚,‚‚ƒ‚‚y‚†‚….…‚‚…D‚†‚….…‚‚…D‚†‚….…‚‚…{‚…‚….…‚ …D‚…‚….…‚ …D‚…‚….…‚ …{‚‚.‚ D‚‚.‚ D‚‚.‚ {‚‚‚….…„‚…D‚‚‚….…„‚…D‚‚‚….…„‚…{‚‚‚‚‚1‚„‚‚‚G‚‚‚‚‚1‚„‚‚‚G‚‚‚‚‚1‚„‚‚‚z‚„‚‚‚-‚‚‚‚‚?‚„‚‚‚-‚‚‚‚‚?‚„‚‚‚-‚‚‚‚‚v‚„‚‚‚-‚‚‚‚‚?‚„‚‚‚-‚‚‚‚‚?‚„‚‚‚-‚‚‚‚‚v,?,?,:<<r‚9‚9‚p99;‚ƒ‚‚v‚ƒ‚‚v‚ƒ‚‚/‰‚‚„y‰‚‚„y‰‚‚„1„‚…„y„……„y„……„1„‚‰…„y…‰…„y…‰…„1ƒ‚ˆ„yƒ…ˆ„yƒ…ˆ„1‚„ƒƒ„y„‚„ƒƒ„y„‚„ƒƒ„1‚‚‚w‚‚‚‚w‚‚‚‚/ ‚ ‚‚y ‚ ‚‚y ‚ ‚‚1 „‚‚‚y ‚‚‚y ‚‚‚1 ‰‚‚‚‚ y †‚‚‚‚ y †‚‚‚‚ 0‚  ‚ ‚‚  ‚ ‚‚  ‚ ‚J  …8‚†‚‚‚8„‚†‚‚8„…Š‚‚8„…‰‚9ˆ „‚:‚ …† ‚Iƒ„†‚‚‚…@ƒ„†‚…‚‡?…‚†‚‚‚ƒ@‚‚  ƒ7Kl„6„J„n9MX‚ L‚ƒ‚ T‚ƒ„„‚‚‚‚‚‚‚Mƒ‚‚†‚‚‚‚†U„„‚‚‚‚„ƒ„ ‚‚‚‚‚‚M‚„ƒ‚†‚‚‚‚…U„ƒ„ ‚‚‚ƒ„‚‚…‚‚‚M‚„ƒ„†‚‚†…Wƒ„…‚‚„ƒ„‚…‚‚‚„M‚„‹†‚‚†…W„ƒ„…„‚‚„„ˆ ‚„ƒ‚Mƒˆ‹†‚‚†W„„ˆ ƒ‚‚‚‚‚‚…‚ ‚‚ƒL„‚„„†‚‚†…V‚‚…‚ƒ‚‚Hƒ„‚‚‚ ‚ˆ{ƒ„†‚‚†‚…ƒ„ ‚ˆBƒ„‚‚‚‚„zƒ†‚‚‚‚‚„ƒ„‚‚„ ‚…‚‚‚‚‚‚ƒƒZ‚…‚†‚‚‚‚‚ƒa‚…‚‚‚‚ƒ ‚ ‚ƒ ƒZ‚ƒƒa‚ ‚ ƒ -r$rlpè€Üþÿÿÿÿÿÿÿÿÿÿÿÿÿÿ>:><?:><?:><?:><?:><?:><?:><?:><?:><?:><?:‚‚‚‚‚‚<?:‚‚‚‚‚‚<?:‚‚‚‚‚‚<?:‚‚‚‚‚‚<?:‚‚‚‚‚‚<?:‚‚‚‚‚‚<?:    <?:    <?:‚‚‚‚‚‚<?:„‚ ‚‚‚„ †0T/3T/:‚‚ …‚‚… ‚‚0S.3S.:‚‚ …‚‚… ‚‚0S.3S.:‚†„‚‚ƒ †‚1U/4U/:‚……‚‚„ …‚0„T„/3„T„/:„0„ !0„T„/3„T„/:‚- ‚ 1U/4U/:‚‚!0!‚‚<?:‚‚!0!‚‚<?:‚‚!0!‚‚<?:t <?:><?:><?:><?:><?:><?:+2S05S0:†)†1Q/4Q/: '  0O.3O.: '  #0O.3O.: '  0O.3O.:‚‚(‚‚1‚P‚.4‚P‚.:*2R/5R/:><?:>E.B?:>E0D?:>E0D?:>E0D?:>E0D?:>E0D?:>D-B?:>E0D?: (0 0 /3F/: ‚(‚ 1 0 04H0: ( 1H04H0: ( 1H04H0: ( 1H04H0: …)… 1H04H0: * 0G03G0:H-F<?:H-F‚ + ‚?:H-F‚!) ‚?:G‚,‚F‚!'‚?:>†!'†?:>…"'…?"  >#‚(‚?"  >‚#* ‚?"  >‚‚t‚‚?" )‚‚ S ‚‚4//"‚†*†‚‚‚ †Q† ‚‚3†1†."* Q 31."+0V3313:*0Q.31., …*…1R.41.* +1S/4./(…  }<H1C% }$(#H1C#ƒ }†"‚(‚#†H1C"‚|‚"(#?%„>'(#?'‚ >"(#?) C+I#…)…$?+‚ C*H‚‚‚‚‚‚?, F-H‚‚‚‚‚‚?"  F-H‚‚‚‚‚‚I+D"  F‚,‚G‚‚‚‚‚‚H)C"  E+G‚‚‚‚‚‚‚‚G'B"  E„*„F‚‚‚‚‚‚G'B, D…)…F   G'B, D)F   H‚(‚B, C„'„E‚‚‚‚‚‚I*C+‚ >‚‚‚‚‚‚?* >„‚‚‚‚„?:>…‚‚‚‚‚?# >…‚‚‚‚‚?"…>‚‚‚‚‚‚?"‚ >#*#?" >#*#?"‚‚ >$+$?"‚ ><?$„0‚.‚11V.‚ ( ‚:0‚.‚31X0 ‚ ‚(‚ ‚:0X31X0 ‚( ‚"  0/31X0 †( †"  0/31X0 …( …"  0/31+0 …)… " /‚.‚10*. ‚ * ‚" 0‚.‚31-0 ‚‚ - ‚‚"ƒ 0‚.‚3- ‚‚ - ‚‚" 0‚.‚3‚‚,‚‚ ‚‚ - ‚‚* D‚.‚G$+#%‚,‚:>$„*„"?:>#…)…"?:>…#)#…?:>"„'„#?:>!}?:0R3!S ):/†P†2!†Q†††*††:/P2 ‚Q‚*:/U70V3+:/P20Q.*:0Q21R. *:0R31S/ +:><?:>E‚.‚D?:>E‚.‚D?:><?:>F/D?:>F/D?:>F/DG+F:>E‚.‚DG*E:>E‚.‚DJ-E:/„O„10„‚.‚„.„-„:0Q21‚.‚/‚,‚:1ƒSƒ32ƒ‚.‚ƒ0ƒ+ƒ:2U43U1 „*„ ,1ƒSƒ32ƒSƒ0ƒ…)…ƒ  &0…Q…21…Q…/…)… &/O10O.  „'„  &><?:><?(><?'><? &><? &><? &><? ‚'><?(><?:0V11V. ‚/‚ #0X31X0‚‚/‚‚  #0X31X0X …#0X31X00 &0X31X00 &0X31X0 …0… ‚'/U10U.!‚/‚(0X31X0$‚/‚:0X31X0‚„‚‚‚‚‚‚ .0X31X0‚„‚‚‚‚‚‚ 0><‚‚‚‚‚‚‚‚‚‚ 0><‚‚‚‚‚‚  &><‚‚‚‚‚‚  &><‚‚‚‚‚‚  &><      &><     0><‚‚‚‚‚‚ (><‚‚‚‚‚‚ ƒ'><‚‚‚‚‚‚ &><‚‚‚‚‚‚ &><‚‚‚‚‚‚ &><‚‚‚‚‚‚ ‚'><?(><?:><?  &><?  &><?  &><? &><? &><? &                                        ‚‚&><? '><? ‚'><?:><?:><?(><?'><? &><? &><? &><‚‚‚‚‚‚ ‚'><‚‚‚‚‚‚(><‚‚‚‚‚‚:><‚‚‚‚‚‚ ,><‚‚‚‚‚‚  &><‚‚‚‚‚‚ &><     &><     ,><‚‚‚‚‚‚  &0V11V.‚„‚‚‚‚„„ &0X31X0†„‚‚‚‚‚‚‚ &0X31X0…„‚‚‚‚:0X31X0…„‚‚‚‚(0X31X0…„‚‚‚‚'0X31X0 …0… &/U10U.!‚/‚ &0X31X0$‚/‚ &0X31X0$‚/‚ ‚'0X31X0$‚/‚(><#‚#‚/‚&‚:><? &><? &><G+F &><G*E ,><J-E &/„O„10„O„.„-„&0Q21Q/‚,‚ &1ƒSƒ32ƒSƒ0ƒ+ƒ ,2U43U1 „*„ &1ƒSƒ32ƒSƒ0ƒ…)…ƒ &0…Q…21…Q…/…)…&/O10O.  „'„ :><?:>E‚.‚D?:>E‚.‚D?:><?:>F/D?:>F/D?:>F/D?:>E‚.‚D?:>E‚.‚D?:0R31‚.‚/ ):/†P†20†‚.‚†.††*††:/P20‚.‚.*:/U70V3+:/P20Q.*:0Q21+. *:0R31*/ +:>G-E?:>$-%?:>‚%‚,‚#‚?:>$+#?:>$„*„"?:>#…)…"?:>…#)#…?:>"„'„#?:>!}?"0‚.‚1!V‚ ( ‚"0‚.‚3!X ‚ ‚(‚ ‚"0X3 ‚X‚ ‚( ‚"  0/31X0 †( †"  0/31X0 …( …"  0/31X0 …)… "  /‚.‚10U. ‚ * ‚"0‚.‚31X0 ‚‚ - ‚‚"0‚.‚3) ‚‚ - ‚‚"0‚.‚3* ‚‚ - ‚‚"  D‚.‚G#*#%‚,‚"  >$+$?"  >#*#?" C+I#*#?"C*H‚‚‚‚‚‚?"F-H‚‚‚‚‚‚?"„F-H‚‚‚‚‚‚I+D#F‚,‚G‚‚‚‚‚‚H)C, E+G‚‚‚‚‚‚G'B, E„*„F‚‚‚‚‚‚G'B"D…)…F   G'B" D)F   H‚(‚B"  C„'„E‚‚‚‚‚‚I*C"‚ >‚‚‚‚‚‚?, >‚‚„‚‚‚?, >Š‚‚‚‚‚‚Š?, >…‚‚‚‚…?"‚ >…‚‚‚‚‚?" >"(#?">#…)…$?:>%*$?:>I-C?"  )1-/4//"  ‚†*†‚0†-†.3†1†."  *0‚,‚.31." +0V3313" *0Q.31."ƒ …*…1R.41." +1S/4./*  }<H1C: }‚ + ‚H1C: }‚!) ‚H1C:‚|‚‚!'‚?:>†!'†?:>…"'…?:>#‚(‚?:>‚#* ‚?:>‚‚t‚‚?: (‚‚ F ‚‚3F/: ‚(‚ ‚‚ H ‚‚4H0: ( H 4H0: ( 1H04H0: ( 1H04H0: …)… 1H04H0: * 0G03G0:H-F<?:H-FE.B?:H-FE0D?:G‚,‚FE0D?:>E0D?:>E0D?:>E0D?:>D-B?:>E0D?:+2005S0:†)†10/4Q/: '  0O.3O.: '  #0O.3O.: '  0O.3O.:‚‚(‚‚1‚P‚.4‚P‚.:*2R/5R/:><?:><?:><?:><?:><?:><?:><?:><?:><?:‚ . ‚0T/3T/:‚ 0 ‚0S.3S.:‚ 0 ‚ 0S.3S.:†0 † 1U/4U/:…„0„ …!0„T„/3„T„/:„0„ !0„T„/3„T„/:‚- ‚ 1U/4U/:‚‚!0!‚‚<?:‚‚‚‚‚‚‚ ‚‚‚<?:‚‚‚‚‚‚‚ ‚‚‚<?:„‚‚‚‚ ‚<?:‚‚‚‚‚‚<?:‚‚‚‚‚‚<?:‚‚‚‚‚‚<?:    <?:    <?:‚‚‚‚‚‚<?:‚‚‚‚‚‚<?:‚‚‚‚‚‚<?:‚‚‚‚‚‚<?:‚‚‚‚‚‚<?:‚‚‚‚‚‚<?:><?:><?:><?:><?:><?:><?:><?:><?:><?:>‚+ ƒA‚+ ƒA‚+ ƒy‚‚‚‚,‚‚‚…‚‚B‚‚‚‚,‚†…‚‚B‚‚‚‚,‚†…‚‚y‚‚‚‚,‚‚ƒ‚‚B‚‚‚‚,‚‚ƒ‚‚B‚‚‚‚,‚‚ƒ‚‚y‚†‚….…‚‚…D‚†‚….…‚‚…D‚†‚….…‚‚…{‚…‚….…‚ …D‚…‚….…‚ …D‚…‚….…‚ …{‚‚.‚ D‚‚.‚ D‚‚.‚ {‚‚‚….…„‚…D‚‚‚….…„‚…D‚‚‚….…„‚…{‚‚‚‚‚1‚„‚‚‚G‚‚‚‚‚1‚„‚‚‚G‚‚‚‚‚1‚„‚‚‚z‚„‚‚‚-‚‚‚‚‚?‚„‚‚‚-‚‚‚‚‚?‚„‚‚‚-‚‚‚‚‚v‚„‚‚‚-‚‚‚‚‚?‚„‚‚‚-‚‚‚‚‚?‚„‚‚‚-‚‚‚‚‚v,?,?,:<<r‚9‚9‚p99;‚ƒ‚‚v‚ƒ‚‚v‚ƒ‚‚/‰‚‚„y‰‚‚„y‰‚‚„1„‚…„y„……„y„……„1„‚‰…„y…‰…„y…‰…„1ƒ‚ˆ„yƒ…ˆ„yƒ…ˆ„1‚„ƒƒ„y„‚„ƒƒ„y„‚„ƒƒ„1‚‚‚w‚‚‚‚w‚‚‚‚/ ‚ ‚‚y ‚ ‚‚y ‚ ‚‚1 „‚‚‚y ‚‚‚y ‚‚‚1 ‰‚‚‚‚ y †‚‚‚‚ y †‚‚‚‚ 0‚  ‚ ‚‚  ‚ ‚‚  ‚ ‚H …8‚†‚‚‚8„‚†‚‚8„…Š‚‚8„…‰‚9ˆ „‚:‚ …†‚Jƒ„†‚‚‚…Aƒ„†‚„‚‡@…‚†‚…‚ƒA‚‚ ‚ ƒ:Hl„9„G„n<JW‚ƒ O‚ƒ‚ P‚ƒ‚‚ƒ‚†‚‚‚‚Pƒ‚‚†‚‚‚‚†Qƒ‚†‚‚„‚†‚‚‚P‚„ƒ‚†‚‚‚‚…Q‚„ ‚„‚‚„‚‰‚‚‚P‚„ƒ„†‚‚†…S‚„…„‚‚„‚‡‚‚‚„P‚„‹†‚‚†…S‚„…ˆ‚ƒˆ‚‚ƒ‚Pƒˆ‹†‚‚†Sƒˆ ƒ†‚„‚‚…‚ ‚‚ƒO„‚„„†‚‚†…R„‚…‚‡‚Hƒ‚†‚ ‚‡ƒ„†‚‚†‚…ƒ„ …‰Aƒ‚†‚‚„ƒ†‚‚‚‚‚„ƒ„…‚„ ‚…‚„‚‚‚‚‚ƒ^‚…‚†‚‚‚‚‚ƒ^‚…‚‚…‚ƒ ‚ƒ‚„ ƒ^‚ ‚ƒ^‚ ‚ ƒÖÍlplbOý° š+/%I(Ô§Ŧ dfj„ÑlÑ S¸Ó­×ö•Ü¸­=­¬:‘È{–©xo®0]«-lZ‚~Zf©]¬P?×?é°~Áh½ Ò5»5‘• •—˜Vl˜Vœ[™J½t ¯o ÀÃ’U;ŽBAkˆUYŒW~qs|t[² —»]¸eáqáf€1€ƒ4¡0!§6%c.n_ÓÑ!à“à†µË¨ÆSˆ?~Cz‰$ŠŒÁ/4«33ܪÚ™A¥4¢¯£.«¥É[ ½W •Â/‚Æ3úóååäÙÚvÚgxíoØ‘Å •±Ü|$Økà¬à °:²6¸<„¿™Éƒ»™F‡˜%•ßS–Ú1šâÜâÝ ßÌß¼µ¸Û]ÙR¬X ¡Zeªtf˜m5Qo-6jz#IwP˜å›ÃÝDÝ4ݺÀ ¸ÝÅRÓÁSŒÂQs³IšS›xEÔ*Â6>P—72”­3#˜:$J|kJ{T›4]:W3C®,2²¾³âÝ2àÎ2Ûϯ½Å®âÔGßÈG¡>£4b=ÁmÊåÒNÜÎP ÌÏ0I%*çÚU™,¯Õ ¢½¥]£W]’]¡^©^E& Šc C%Ó+c¬MDÅ/)Ì.r@{æÚáÊà¹qSSsM4–s5–tÙ¤a´¤[GLN>Q&fv*€’(gœ4‹±.ÈÒÊÀ4<””1 š tB‹40yzÞ€|M©Ug‡Tdhgàzƒ³ua?0P™B›rN¥_ÁÂltWnC[¿9Ê7”>Æ@§4mË/›Ã¥ÞÜïq؆C©zHÝÚÚ ÊÊD³º>ÖM¥&§N9ÄŒÝ- ͘±u!˜ùm=—y«nf×À[ÿÿÿÿÿÿ9ÿ‚ÿÿÿ9ÿ‚ÿÿÿ9ÿ‚ÿÿÿ9ÿ‚ÿÿÿ"ÿþÿ‚ÿÿÿ!ÿþÿþÿ‚ÿþÿ‚þþÿþÿÿvÿ‚þþÿ‚þþÿ‚ÿ…þþÿþþÿ‰þþÿÿþþÿþþÿÿTÿ‚þþÿ‚þþÿþÿ‚þþÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿÿSÿ‚þþÿ‰þþÿÿþþÿþþÿþÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿÿSÿ‚þþÿ‚þþÿ‚þþÿþÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿÿSÿ‚þþÿ‚þþÿ‚þþÿþÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿÿSÿ‚þþÿ‚þþÿ‚þþÿþÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿÿSÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿÿSÿ‚þþÿ‚þþÿ‚þþÿþ‚ÿÿþÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿÿSÿ‚þþÿ‚þþÿ‚þþÿþÿ‚ÿ…þþÿþþÿ…þþÿþþÿÿTÿ‚þþÿ‚þþÿ‚þþ)ÿ‚ÿþ ÿþÿÿSÿþÿ…þþÿþþ*ÿ‚ÿÿÿ‚þþ ÿþ+ÿ‚ÿÿÿ9ÿ‚!ÿþÿÿ^ÿþ3ÿ‚!ÿþÿÿ^ÿþ3ÿ‚!ÿþÿÿ^ÿþ3ÿ‚!ÿþÿÿ^ÿþ3ÿ‚!ÿþÿÿ^ÿþ ÿ‚þþÿ‚ÿþÿ‚þþÿþÿþÿÿ^ÿþ ÿþÿ‚ÿþþÿþþÿÿþþÿÿþþÿþþ ÿþÿÿ^ÿþ ÿþ ÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿþþþþÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿþþþþÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿ þõþô þ„õþþõþõ?þ‚õõþ„õõ¯õþõþ‚õõ:þõþ„ôõôõþõNþƒõþõWþÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþ ÿþƒ õþŒ”jj”ôþþôíPí#þˆ²±²²õþþõ²õþ„²õ²²þ„²±Í±þ„o ooþ…õ§§‘ùþÁþ…õ확˜þŒ•™™˜õþ¯þ•Híþ‰l••lþõõ¯mHŒ¯õþþs$ÞÞõõþþÞôþ„ÞÞ¢®þ„®Þ[!þ[‚!õþ„ZZþþZZõõþþÐåõõþôæˆôõþþæææþ„æ—æ—þ„æÁþ„ªªƒªþ…«#/ÑõþÑ„þõþõÑ/þ„ÑÔ,uþ,#þ-þ„««uÔþ„#««-þ„ÑÑÓ*þ„ÓÓþ„¸¸ùùþ'¿&'þþõþOq}T¯þ„!ZÐþ„ÐÐÐþ!ÿþ ÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþ ÿþ‚ ”†íí‚Ñѱ„²²±± ²õ²„±ÍÌÌo‰ nˆùæÁŒí™™••”하”•˜ •‹™•l•ljlmm•m‚HmH‰I¿ÞÞßÞÞßÞ…!77Þß®„Þ!7![ŠZ[[Z[ZZZˆÐZZZZZ‰Ð‚åæ…ææ扗æ„""ª‰ƒª#ª««u,/Ñ—/ÝÑ,/Ô,ÔÑ**%ññ$…¾ÑÑ6…6ê÷›ê÷…¾¾Ñ##«#ÑÑ…*…ÓÑ*/*¾/Ó*ÓÓ•ÓѾ¿!'!''&&Oq}TT|&&[ZÐÐ!ÿþÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþ ÿþ‚” ”ˆí‚î#±±²ƒ±²±²±²±ÍÌÌoo onno§œŸžŸˆýíÁí™í˜†••˜˜••”„••””•m•ƒj•l m‚HHm…H_&÷$ Þ…7Þޣ߮…ßßÞ77!‹[[Z!Z[ZZZ‰ZZZÐZZZ‚‚‚æ —"†ªtªƒt#ª†««,/,/у/Ñ/Ñ”/"/"/"Ý,,Ñ/„Gà<³³}³O÷„&÷WW5Šp5pWW÷¾,"ªÑ‘/ÓÓ/*Ñ*¾6¾¾Ñ*Ѿ…¾Ž6…¾¾¿÷÷ò!''&Nq}…q''[Z Ð !ÿ‚þþÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ‚þþ ÿþ”…íí#ѱ²±²†±±ÍÌoÌoŽnn‘ù„Ÿ˜ŸŸžžŸŸ˜†”˜í•Ÿ•„”••”•‹”••l”•”••H•l†mmHHmHm‚H•m‡HIH?'s$ނߢ®‰ßߣ߮߮ߢ ßÞ7ƒZZZ ‚QQƒ‚‚‚†‚‚‚ŠÁ„"ª#ªƒªÆƒ‚#ƒªŠu##/Ô/,/Ñ/Ñ¢//",ÔÔ,Ôu//Ñ‹á}³}³T³T}|ppè5455p5è5‹]¾¾#Ѿ¾*/**¾—66¾6¾*¾*¾¿¾Ë¾÷¿÷!&!'¿''&|†}Nò'[ÐÐÐÐÐÐZ õþ2ÿ‚ÿ…þþÿþþÿ…þþÿþþ ÿþ”„‚î,±²˜±±ÍÌ¡oo¡  oo‘ÁŸžž˜˜žž˜”„Ÿ™••˜†••””••”•„m•l•m•m…HmHm•H‡I?I?&Þ$Þ‡®Þßޮ߮ߊ®ß£ß®®ß®ß®߉Þ!ÐZÐZ…ÐZÐZZ „QQ‚‚ˆP‚PQPQ‚Q‚…‚‚"ƒ#©"#Ñ""ªªƒƒª#u##""/"Ô"Ô,Ô"Ô".""u,,#ÑÑñààT³T³‡T³T}pp5è…5èqèpè5‹ê÷#"¾Ñ¾Ñ¾…Ѿ…¾˜¿¾¿ ÷!¿'!&&ò'&NN}}pq'![ Ð… õþ2ÿ‚ÿþÿþÿþ”j ”„íí"±…²±²²±²„±ÍÌÌo‡ o‘ù.Ÿƒž˜Ÿ˜”ˆ˜˜•””•”•”ƒ•”•”…•”••l•†m•mm•Hm„•m•HmH†>II&&¿Þß…®ß®ß®ß®ß’®ß®ß®ß®ü®ßs!!ZZZ ƒÇ"Ë…Ç ÇQÇ„QPPQ‚‡‚"Á"#ƒË"Ñ#Æ#‡ªuu#,##,¡Ô#,Ô,"ÔÔ##ÔѾññà}(T³T}TT}³³}pq5545è5¦è5èq5÷÷ÑÑ……¾Ó*…¾Ñ¾¾Ñ…ê¾*¾¾¿¾¿÷¿&''ò'&ò&ŒWpN}|pq&!!Z Ð… õþ2ÿ‚!ÿþ”„Pݱ±‚²±²±Ìo†nn‰.ÁýŸ˜Ÿ„˜˜””j†”j•˜•”•”••””•”l•””•ll•mŽ•m•mlmm•HmHHmmH…I>H_òޅߣ߮߮ߓü®ß¢®ß®ß®®ß®üüßÞÞs!Z ZŒZ![ ¿ss¿! ‚Ç[ÇQ‚Ñ"ч¾…Ñ"#,Æ#§ªu#u,u,,«,u,#ÔÔ"/Ô/"Óà((}³}T}³T³³T}³³pp5è5’pè5è5]÷¾6¾6…¾Ñ*…¾„*Œ¾$¾¾¿÷¿'&'&'&žWNNqp||pp&!![ÐÐÐÐÐÐÐ õþ2ÿ‚!ÿþ ”˜ ”„îÑÂ×±ˆ²±²±±Í±ÍÌ—o¡ onn§ÁŸŸžŸ˜˜žžŸ˜˜”˜”j”‚••”•”Œ••”•”j”j”j•l•Šl•m•mmlm••l…m•HmHmHœI_I'ÞÞß߮߮ß߮ߢߢÞ߮ߣߣ߮ßüßÞŒ!!Z[Z[Z‚Z!¿š›á››sš'¿!¿ „Ç ÇPQ„‚ËäŠ**ÑÑ6Ѫu#«u‘#uu#ÔÔ"ÔÔ,"ññà(}³T³T‰³TT}qq55è5è5–]¾…Ѿ…¾ÑÑ*хѾ…¾¾÷¿÷&÷&‡N&W&W5q|‡qWò![ІZÐÐ 4ÿ‚!ÿþ ”˜”˜”„í"±…²±²±ÍÌo¡o n‘ùŸ˜žž˜Ÿžž˜”ƒj”j”š••”•”••”•”•”•”j””•l”l•l•l•l•lƒ•llmHI_Iò%Þ®®ß®ß£ßß® ß„®ß®ßü…ßüÞÞs!ƒ[[„[ZZ‡Z'!Ž››rss'$ss'¿! Ç ˆ¿Ü)Ü)Ü)ˆ‹%6ÑÑ6#ª#’Ô«Ô«u«uu"uÔ#Ô/*ààT³…TUUT³U†T³U³q|5ƒè5p5‰è55p]÷÷¾÷¾‚*…¾÷÷''&V&W&WW&N&NWƒ55è|Œ5VV[M!MZZZЃ ”í4ÿ‚!ÿþ ”˜”˜”ˆîË×±±Í±²ƒ±ÍÍÌoŒ ‘ùýŸ˜Ÿ˜ŸŸ˜‡”˜””R”j”j”‹lj””j•l”•l•j©•l•lmlmll•llmlml•ll•llmHHmlHmmHII_HH_òssß®†ß߮߮ß®ß ü’ßüßßÞÞss7!!7!7ZZˆ[ss11ü0›„ä'¿7¿‰s›))0ÜÜ))ܱ)%6#"##«u#,,uu##,Ô/,/,"*à³³T³¥³U³³¥³U¥¥³T}³}|}p5p5Žp5p55èè5N]N÷]¿¾ˆ¿¿'&NWW&W 5‡p|q||}}|è|Wò'[Z ”4ÿ‚!ÿþ ”˜”ˆ••l”î,Â×±ÍÌ‘oonnœýýŸŸž˜žŸŸžž˜””˜”j”jj””j”j”…j””j”j‚”jlˆ•mlm•ll•l„•m••m•mHHmHHI^H_I'sÞ®‚ß߮߅®ßß®ßü„ÞÞšÞs…7!![Zƒ¿¿›1‚ü1‹0)00011›šˆ›)00Ü)³)ª³)³((ä¾,,#uu«uu"Ôu#«#ÔÔ,Ô//ñTTUU¥U¥U¥³¥¥UU³„|}|è 5‹qèq55è54N]&÷‚NW545„p5545‡p5||}|}|}‰||5p&![Z ”4ÿ‚!ÿþƒ””˜”„˜”˜˜”Šjkl•ím¼wױͅÌÌÍÌÍ̉ ‘‘ÖŸžŸž˜ž˜‚žž˜”…jj”jj”‚jj”j”…jj”j•lƒ•ll•ƒ”••lm†••mlmmHˆ_H_I&&$Þß®‚ß®߃£ß®ü‚ÞüÞ‘ss7!![[ZZò!sšÞ1üü101‚00†11Ü0)(á’(á³á³)(*Ñ,#«Ô,,#u#uŒ,,#Ô"/Ññ³}T³U„TTUU¥‚T³T‰³}}|èè55è5è5„è5èpèŠ55q5pNN]W45èèp55èp55è5è5q|è|ŠèVVí””žþþ2ÿ‚!ÿþ˜”ˆ˜˜”˜”ž”˜”k‹çÈ@…w‰Íͱͱ̓ÌÌÍÌŠonn‰ž˜žŸ˜žŸŸ˜žžŸ˜˜”˜”j”j”j”jj””jj”jllmlm•mml„•llmlml‘mm•HmmHH_HIHHI_I>ò‰Þ߮߮߮߮ßüšßÞÞÞ!¿![[!s¿Þüßü1ü1ü1üü1ü1…ÜÜ))áqp5ˆ}áÑ«,,#u…,Ô«,,u“,#*áàT³³T³U¥¥U¥U¥UU¥³ƒ}}|5è5Šè5è5p55pq5è5‚qè5è 5q|蕃”þþ2ÿ‚!ÿþƒ”˜˜ ”jk‡¹kºî„wwͱÍÌo†nÁý혞˜žƒ˜Ÿ˜ž…Ÿž˜””j‰””j”j”R”j”„j”jjl‘m•mm••l•lm•l•m•l•l…”l•lmH‚_IH_ÉòòÞß®®ß߮߮ü…ÞÞs¿!…s¿šßü1 0…Üܳ³á?è_Š&N‹Ñ«uuÔu,u‰««ÔuÔ,¾(}TŠU¤¥U¥³¥¥TU³ƒ}|q 5…|è55è5ƒèèq5‚èp 5ƒè5è5p|‡è\••žõþ2ÿ‚!ÿþ”•™ž”˜˜”˜””j”Skçk…çMËwwÍÌÍÌ…‰‰œŸƒ˜žž˜‰žž˜žž˜ž˜Ÿ˜”jƒ”j”jl•llm•Hmm•m•lm‡lmlm•llm„ÉmHHž_HHI_I_^^H»^òòޮ߮®ß®ß®ß®ß®ü„ÞÞs!ŠssÞšüüü1ü1‚00 Ü…³ááp?_^™÷ò*ÑÔÔu«ÔuÔ#,Ô/Ñ"ÑѾ*ñ³(T³…¥³¥¥³¥³†}|qp5è5—qèè55p55è5qè5èp55è5q5èp5p5|}|‡èè\èIõþ2ÿ‚!ÿþ••m••”•˜•˜”jjSkç…ÉLÝÝwÍÌÍn‘nˆ..ýŸŸ˜Ÿž˜Ÿ˜‚žŸ”kj‚”” jƒkjj mŽHmm•m•m^mHIHmmHH_^^H_I_HH^H»‚Éòòs®ßü®®ß®®ßßü„Þ›Þs…ÞšÞü1ü…1ü101 Ü›³ÜÜ)||4__^»_^_»LËÑÔÔ«Ôuu«,,шñ**ñàŠ³T³}³Œ¥³¥³UU¥³T³}p 5ƒèèq5ˆèq5p5p5pèp5„p5pqpq|‚}}|‚}}|è4ÿ‚!ÿþ\™?II™”jjSçk¹kkçkÉLËÑÂCÍÌÌÍ̈‰ùù.ýÁŸŸžŸžŸžŸž“˜ž˜˜”jjR”j”R””jR”j”l”j‚lHm•m‹Hé\hhFÕ]\IH^HH_H^_^_»>&sÞÞü®®ß®ü®®ü1üŒ1ßÞšÞÞÞßßüŠ1100ÜÜ¥ÜÜ¥܇)³³áqqV^Œ_^_»ËË/"ÑÑ…¦ñ÷ñOàáá³á³}}³³}³UTT³¥U¥U¥U³}}|5p55è5ˆq55èèqèp5„è55è5è5‚pè545ˆèp55pqpq|ƒ}|}|} |4ÿ‚!ÿþp†|qp?VH”jk¹kŠlk„ÝÂwCÌÍÌŒ¸ýžžŸ˜žž˜˜žŽ˜˜žž˜ž˜ž˜””jj”jƒ”R”j‚R•j‚R”mH¡mmHmmH™IÕÕ~~¨¨ñ÷]ò_^_^H^^H_^^_‡òòòò‚Þß® ü1üÞÞßüü1ü11Ü¥ ÜŠ³³á}qWW?^»^„_I÷……¾ONNq„á}á}á—|áá³á³³TUU³¥¥UUT}|pèp55è5èˆp55èqèqè5…èqè5è5†èè55èq5ƒè545„WWqq|4ÿ‚!ÿþ¨|q|pWWV??VH••jjkl¹¹kk¹çÈÈLÑwvÌ̉‰ýýŸž†Ÿ˜ŸžŸŸž‚˜žŸ˜ž˜•˜jjkS”jjSjj”jŠSjkkS”jjlmH‚IIH†I\\h~~댨ññ]òò_^^‚ò“ò&&''&&òò>Þ߮߮®ü®"ü‚1ßü1ü‚10Ü¥܈ápNWVV?>^‹»^ò&òOONNqO q‰}}TT³³¥¥³¥„á||p5„èpèq5ƒè5è5„è|èp5ƒèqè 5…W5Wqq|4ÿ‚!ÿþŽ||q5??>_V?IIHm”l»kk¹ççºlÉL¼v‰ÌùÖýŸž…˜˜••”jRjR”RjjRSjSRjRlHIH‡é\ééhh~ë’¨22ñ÷÷>^»^»^^ò&‡÷ññGGñFñƒx®ß®"üƒ1ü1ü1 ܳáOV?‡_^_^_^»®^?>VWWVW&NNpqqNqNqpqNNqqN|³³T³¥³¥U³U³}qp55p5p5„è55q5‚èp5è5è5p55p5è5èq5W5‚p5Wp|‚þþ2ÿ‚!ÿþŠ||p?»»ÉVWˆ?I\IIHHmk¹k@ÑÑv..ý€žýž˜žˆ˜˜ž””jj”jkjŒ”jRjSjRjSj¹lHˆI\\ééÕi~ 륨¨ à&ò^^_^ò&÷÷ñ2be©¨©©d©d¬ü®*ü1܆¥Üܳ)|WV¡??__»_^_^^^»__>??V?VNpqNqNqpq„}³}TU‰T³T¥}|qpè5è5è5è5è5è5è5è5è5Wp‡WpW5V55|‚þþ2ÿ‚!ÿþqqW»»º»»?VV?’>?>IHºmºmºklËL„ÁÁýž„Ÿž˜˜”• j”R”jjkRjkj¹¹»HéIé‚Õhië‹~ööh]òI_>ò‰'ñF22e©e©†©eyy®‚ü®#ü…1ü100 Ü‘³Üq4VW&?ò?^_»»_^_^»Ž^»^»_>?ò?WNqŠNqNOqqNqq}³‹T³}³}||p55è5„èqèp5p 5p5†p55ppqp†WWVNWq|}|…}|}þþ2ÿ‚!ÿþ„44ºçº™É»É_____>??>>>_IIH”˜”žŸž‰˜™˜ž˜˜””j”‚j”j†kkjRjRj…RmÕÕhi~ë iFG&ò&÷O÷Žd©©¨¨¨¨©¨¨¨©©ey¯®ü10 ܉¥)(áq&VV?>_^‰_^^»»É»É»ÉŽ>VVNNqNqqONqqNqšá}³³T³Tá³}}|è55èè44p55è5èè5‚pè 5‚p5p‚qqpqqppW5WV?VV4Vppq|‚þþ2ÿ‚!ÿþ†V?ºççÈ熺º»ºÉ^»‰^_>_>>_„^l””žŸž‹€ž€€ž€™ž€žž˜ƒž”˜”†jj•j”” jŒkkR”•Àhh~~ë~ëŒb2àñ]ñŽFc©¨…¨~©¨‡©gg¯²¯ƒ®ü®ü‚1ü1…00ÜÜ¥ Ü™¥Ü¥áqOpWVW?>__^»»^»^_^»É»…>VVWqNq‹NqNNpqNqá}³T}q5…èè55è5…4èè5è 5‚p|qpq„pqppW…5V?V?V‚Nq|4ÿ‚!ÿþƒVVºçƒÈºÈº»»É^»»É»^»»»”mº•lž˜žžŸ˜žŸ•IIHIIHIH•…”••j•”†•jj””lj„kljjl„™Õhh~ƒi~~ëƒ~©b2Šce©¨©¨©©‰¨©¨©gyg¯®üƒ110Ü¥ ÜŠ|VVWW&W&??_^_»‘»»^»»NNpqNqqp q‚áá³…TT}}q5‚èp5p5™p5qpqpqpqqpqpqNWpNqq5p5V4VW|}|4ÿ‚!ÿþƒ??ºç‡ÈÈçɺɺ»É»^»„ººllž˜™HI\?\4\]V\4\mH•…”•”•”•ƒj”•”ˆjj””••ÀÕh ~ë©“~~¨¨¨¨¨¨©¨©©¬¯‚®®üƒ110 ܥ܄q?VVW‡òVò_^_‚_ »ˆÉ»»»>NWq‹NqNqNNqqNqNq‚|áT‡³}}|p5p5è5ƒè5è 5ƒqq|qpqp„qppqp…5WVVò?‰VVWW5VWpq|‚}}|4ÿ‚!ÿþ„V?ºÈ為纂»É »ˆ^_m»¹l””ž†™\4]ppq…5p4\H•”ƒ••l”…••žžÀÕ‰hë~~h~i~~¨~ë‡~~~¨ƒ¨¨©„ey¯¯þ¯‚®®ü‚01Ü„¥Üܥܥܜ³ÜÜáVòWNWWNWW?>_^^_____^ »…pWpOqNqNq“NqqNqq³³T}}||5èp55è5è 5è 5‹q5qpqpqqpqpqpqpW?ƒ?>?†V?V55q|ˆq|}||q||4ÿ‚!ÿþƒVVºçº†ÉºÉ»»É»Š_m^llºll••ž‡•HH\qN|q„5p54I„H”••˜•”‡•l••™•ÀÕi~‚i~¨„~~ë~ë~‰¨©¨¨¨©„ggy¯þ¯®ü‚00Ü¥ Ü)áOWVVNWpqNN&Wò>Š__>>ò»ˆ^»>NNqqNq„pqqNq‰Nq}}³³}q|545p q‡NqNqqp5W‹VV??_^VòW5‘pqq|}||áqq|}á|}þþ2ÿ‚!ÿþVWÉ»ºº^^»»ÉÉ»†É»É»^>†mmj•jj”Š˜˜ž˜˜™™\è|q—|qqpqqpqq5p\4IH™HHmH•™m •‘™ÀÕÀÕÕhi~~h~hëh~i¨‚~~ ë†~ëë~¨©ˆ¨©©¨©egy ¯ƒ®¯®ü‚01 ܳÜÜá(qNWNWWNNqáqŠWWVò?ò??V?W˜&>_^»»»»WVNqqNqpqqpqƒNpNq‡á}}³ápq 545p5p5Ž4ppqpqpqppqpqpq”pNqNWWV&??>_^?NWpq|‰áá|}|ááq|á‚þþ2ÿ‚!ÿþ‹55?_??V?º„»»>?‹_m•””˜””˜˜ž˜„žéH]qš|qq|qqpqqpq5]è]\?II\IIH™ém•‰™•ž”••ž•ýÕ‘hhëë~hhëhëhi¨¨¨~ ëƒ~ö¨c¨©¨©¨©©~©gyy¯‚®® ü1 üƒ110 Ü…))}á5V…WNqpO áqá|á}áá}áNò?_»^»Š>>VNWWpqpq†NqpNpOq‹N|á}}p55pp5è5‚445è55è4èp55è5p55pqpWˆVV?>>^_†Vqq||q|…}q||q|‚þþ2ÿ‚!ÿþ†qq55W4W“4?»»»º»»^^?4V4?_mH”˜”ž˜˜™H\\pq|q||qpq™5]44\4?4I?IH€éH™m••ž•ž•˜™ÀÕ…h~hë~hƒ~ii‚¨~남~ö2„cö¨©¨‡©©ey¯þ ¯‚®®üƒ1ü1 ÜŠ(³OpNVWWNNqáܳ†á(³(á(áˆqNNV?_^»Š__?VN]]p5q…NqWppq†||á}55è]è‹4545W454è5è5ƒè4è5ƒp55p‹qpqWWVW44WV?‰>___?W|}|‚þþ2ÿ‚!ÿþ†||q|q|q…54??_Š>?4544VVm•Œ””•”•˜™™\p5pq‚||q“pq5qqpp]V\4\I?IIH™H™•…™ž˜ž™ÀÕhëhë~h~hhii¨¨ ¨ë„~döãŠG‡`bdb¨©ö©…©©y¯®ü10 ÜŽ)ááVV?VWNqOqááqáÜ‚³³á‡(á((³á³áˆN?>_»»ÉŠ>V&]NN]qN|qŒppqNq||}|5è]é„Àéé\è4 5p5…p5p5p5‚pp5“VVòVòVVò>>__^_>5p|ƒ}áá|‚áá|4ÿ‚!ÿþƒ||q|qƒ|ppq5pqpWVV??V?>mm•”ˆ˜˜•™èqq|q„pqqpq‰55pW54I??\À™™ž•˜”••˜”ž™™ž€Õ…hÕhÕÕhii¨¨ 2FŠääŠGG2G2eccd©d©„eyg¯õ ¯…®®¯®® üŠâü1ââ““Ü) Ü„)³á|q„á||qáƒ())ܳ‚á(áƒ(á³á‘q&NWWNWV?>??]4]]N]à]à|qq|]Nqqp]5À–„À\èè5è5„èp5è5è5ŒpWVV?>?>?>>>ˆ_>__q|q4ÿ‚!ÿþƒ||áq|qƒ|q|q¥NVV??òV?__m”•””˜•™\]p||q|qqáqápqpqpqqp554]\44W4]]\À™Àž™ƒ˜™™À ÕŽhhii¨ FŠŠäŠä‚ŠG2„c2d‰e©e©g¬yy ¯þ¯®‚ü® ü­ƒÜÜ) Ü)á}ჳ(³)†ÜÜ¥Üܥ܌)á((á(á((³á³ á„5?V4]ƒF]N]‹F]}|qqNq]]Õ–ƒé\è 5p5ƒp5p5†44Vò?ò?>__>ò__»>>q|áá|‡áá||áqáqO4ÿ‚!ÿþš||qq|q|q||qqá||pqp5WWN?V?V?’>>H””••”••\]]||qq| qp5Žpp45]]5pp]F陀žˆ˜˜™™ž€ÕÀÕhÕhiii¨<àääàŠ„àŠŠG2‰ã2b¨d©e©e‚­¯® ü‹yây­­ed ’Ü)ˆ³ÜÜ)³)³(ኳáá)³³))Ü) ܆³Ü³(á(á“(á³á³³áá)á(áá|qpè]4]ˆ|NqpN]]À –ƒÀéW5p5p5p5†p544?ò?ƒò_ˆ_>>q}}á|‚}á|‡áqáqqpq4ÿ‚!ÿþqˆ|qqppqppq5Vƒ4V4?‡V?V>?H•”Š••H\\||qq|qpq‚pp5]5ˆ]p|| éÀ鞈€ÀžÀÕÀÕÀÕ‚hhi¨…<àää‹äŽàŠGGFFGGFF2bd¨©¨ƒ­¯õ¯‚®¯®ü…üüâ3e†de3 3Û³Š(³)á³)³áá}᳊))³Üܳܳܥ܃³³) Ꮃáá³áá|4è4]\]\]N]é]…Np]\é –ŠÀ\5èèp55èè5†è55èqè5Špèè554?V?ò?Š>ò^^^»>q |}|„qpþþ2ÿ‚!ÿþ‘__>>ò4V5W4V5VV?V?›V?V??>Hlml”••H\\è||q|áqq|q|qŠp5pp5p5p55p†|| hhÕ‡–™žž€À€Õˆhhihi¨… àŠääŠàŠGŠ‘22bc¨öö¨ö¨¨dyy¯õ ¯ ®ü†11ây­­eƒdd3Ü)³ˆáá³á³á)³)³Ü) ܃))³á|á(áá(áá³}q55WW]é]é]é]é]]q]péÀÀ –ƒéè]è| 5è5‚èq5‡??>>ò>?>‡__»>q|á|„q|q|q‚|q|‚þþ2ÿ‚!ÿþç…ºç»?>?‡VV5V?V?V”?>_^ml”•m\\||áq||áqqpq‚55pŠqppqq|F|¨~ˆh~hÕ–À€€ÀÕŒhÕÕhhi   …FŠŠäŠŠˆääŠ䊊`2‡eddödöö¨ƒy ¯‚®¯®†ü­­3e‹ddee3 ’Ü)³)’Üá³áá((Ü))ÜÜ)ܳÜÜ)ܳ܆))á(ášá‹(áá³áá}q55]†F5pp]À–‰\\è]èè5pp5è5„è5èp5‹?V?>?òò>>_„^?>q|…}áá|}|qƒNqqp‚þþ2ÿ‚!ÿþç„»º_Ž>>?V4W5?V??VV4?Ž>_Hmlj”•IHèq|}|…5_??4p5p‚55p…q}<ã~i‡hÕÕ–€–ÀÕh ‰ì>>ˆ_>V?qq |ƒq||q‡5?_»þþ2ÿ‚!ÿþ纺É^^>>V5W5V?V?ˆVV??^_llj’HHè5qq|q55?»__?5pqpˆ|q|(¨~ihÕ–Õh† ì스=ì==F`ÛŠàŠ’`2b2dö¨i¨e©¯þ¯„®¯®¯®‘üü®üây­3eddeeddeedŽ3e)³))³Ü)³)³á(ƒá›ᆳáá›áá)Ü‚)(áƒqááqá‡pp]]W4\]\]„éé]é]‚ÖÕ–…Àéèè4545‚?V>_>Œ>>?W5||}q|}|‡pW?çºÈ4ÿ‚!ÿþƒççÈ瓺»__>V?VW4VV?òVWVV?ƒ>^Hl‘HVpqq5??^»^^>5èq5pqá…³<¨~†ii~ihhÕ‚hÕh‹ii ¤¤¤ìì=¤ìƒ?>>ˆ_Vpp||á}|‰áá}qq4Wºç4ÿ‚!ÿþ ç…Ⱥɻ_?‰VV?>?V?VV?ƒ_^^mƒ»mml„jlml»ˆ^^?è55p5p44V5}àã ¨¨~~hÕ‡hÕhh Ž¤¤¤ì¤¤¤¤ì<㊋GGŠŠGGFŠGGŠG2Œööbdö¨ö©eg¯®â‹233d3eedde©deded‹eedd’=ܳ³)³ÜÜ¥Ü)›()((àäáqá}á‘qáO5V>?>èè4ppW?\è\‚é\é‚\\]|]‚ÀÕ–‹Àééèè55è54è5„èp54 5>_‰^^^»^5|ƒ4»»ç4ÿ‚!ÿþ‚ÈÈ烺»»>?„>>??V…?4??_„»^ml»‚^»_™^^_?è5ppWp5??_Vqq( i~iih’~ii 줤=¤¤¤ì¤¤ìàŠ„GGŠG ŠFGödö¨©¨­yy¯ƒ®®⃊23eded eŒd ÜÜ))Ü)ܥ܊(áá)Ü)ÜÛ( áƒqáOáŠqáWW>>è_è?èŽ>èè?\\?\?èIè\é\é]…N]ééÀ–‰Àééè]55]è5†pW45W454>>_____^^»ƒÉV|á|„Vº»Èç4ÿ‚!ÿþȃçÈÈ纙»^??>_>??VV?ò?V??_>_>__†__^__ _ƒè?54?__»_WVá< i~ihŠiiì¤ìì¤스<¤=¤ìì=ÛäŠGŠ‹Š22böd¨©©y¯¯‰®®‹›``3e„deede© e‡d33 ’ÜìÜ‹(›á))Ü00Ûáàá} á‰qNW?_>>èè>Žè>èè>è?è>>è>\\é]éÀ–“ý–À\éèè44]èp]p55455W†4]55?>_†^^»»ˆº4Vp||á|‰q|qq?ººççÈ‚þþ2ÿ‚!ÿþÈÉÈ纺ɺ»»___?ò?‚>?>‚_>_‚>>_^_^»‹^?>p}<<ã~h‹ ìì=¤ì=숤=¤ì=ììFŠ‡GGŠŠGŠFŠ‡FG2öddö¨y ¯ˆââ‹`2edededŽed©dde3=ì))³Ü¥(á(›((ÜÜ0)ÛO}qáO á‡qáV5>è_>_>è>è>è_>èI\\éé\é]ƒéÕÀ–³ÕýÀ\\è\è]4]èèp]èè4p544WW4è445]VI^»^»»»»^»»É»É»»V|†qWW>ººÈ‚þþ2ÿ‚!ÿþ‡ É@@È@ÈÉÈ纅»^_^_ ?4? >‚_>_^»ºŽ»_^?W|qàFF ihihii ¤¤=¤=ì¤ììƒ=ì<Š…GŠGŠFŠäŠF22bdöö¨©©y¯õ¯Œßä›äG3eedededede‹deede3=Ü’܃)›á܇00Ûäáqáqá‚(}áˆqNW>>è_>_„^^»^_‹>>è_èè>èI\\é]‚éÀ–„ÀÀéé\‡è\è]45]5„]è]45W4…VW?_m»»º„V||q|ˆq?VçºÈÈÉ‚þþ2ÿ‚!ÿþŠÉ@ÉÈ ÈÈ È É„Èç»É»†^_^__>?V?V?>_„^_^^»‡º»ºº»ºº»”_??WqN|<hihiiì¤ì¤=ì=ìì¤ìì¤ìì<<Š…ŠŠGŠƒäŠäŠ‡GF2ödö©„y²¯…¯â›ƒ23e„deedeƒ =Ü‚)(ŠÜÜ0“0›äšpqáƒ(á(á‹qWN??>è>_^_»‹^^_>>è_>>è\é]éÀ–ÀÀééè\\è]]4]45‡]55pW]]5]‡44]4I»m»^»‚º»º…4||áá|NºÈçÈÈ@@Éþþ2ÿ‚!ÿþ†@É ÈÈ È…@ÈÉç纻Œ>_?>??>>>_ƒ>>_ƒ^__^‚»^»‚º»ºŒ»»_^_44q}<i‹¤¤ì¤ì줤솤=¤=ìàŠGŠ†FŠŠàŠŠ…G`ãö¨†e­yy¯yƒšˆŠãaddeede…deeddede 3=ÛÜ)¥ÜÜ¥ÜÜ))Ü)܉쒓ä&&q áƒ55?>‚__»º»_>…è>èI\éÀéÀÕÀ –†ÀýÀé\\è”\è4]4è]è]5]4]5pè]55W4Š]èè\Hml纻ºƒ»ºÉº‹?||q|q||W»È… @É@É4ÿ‚!ÿþ‹ÈÉÈÈç ç ÈÈ@ȇçºÉ»»^»†_?>_>_^ˆ__^__^^_^_^»º‹»»_??|}³ìi… ì¤ì¤‚=¤쉤ì¤ì=ì=<䊒FGŠŠGGFŠŠààGàGF22ö¨‹~~©©y±yâ‹››š›š›FGdedededed…e©ddedˆ33=ÛÜÜ¥ܳÜì’‡1'&'Oáqáƒqp?_^»ƒºº¹»^_„>_>\é‘ÀÀééÀéÀéÀÀé\\À––ý–„ÀÀéI\è\è4]è]è]4]454‚è]4‰W4W4\?Hººç¹爺ºç纺?q|‡q|p4»»çȃÉ@É4ÿ‚!ÿþ‚È ȆçÈ É@ȅ纺»^»_„>>_^‡»»^_^__^»…^_^_^„»^»^»º»›>55}¥³³ì<¨i¤ì¤ì¤¤ì¤ìì¥ì„<ÛŠŠ‚GGŠG2†cdd¨¨©~…~~©©y‡gyââ‹šˆ›ä``edded e…ddede3‚’ Ü’‰“0š'&òòOq áŠqqV?__»»ºº»^_ƒ^^IéÕé„ÀÀéÕé\À–ŽÀ–ÀÀ\éHéHII\è]5‹]44]4]5pW454]4„IHllç“ÈççºÈSçº?Wp||5pV>»ºÈ… @É@@4ÿ‚!ÿþ†È@È È ÈŒ@@È@ÈÈ»»^^»^»^_ƒ^^»_^»ƒ^»»^»•º»»º»º»»_V|qT³¥¥ììi„¨ ¤ ì‰(ààŠŠFŠGŠG`Fˆã3dd¨~~~ƒ©­¬yˆââ‹š›šš›Šä`G3deededeƒdededeƒ ’ܥ܂쒊““›r''ò'&&N’qOqOáNqW?__ºº»ºº»º»‚^^_ƒ^HIé‚ÀÀéÕé‚\]\‚ÀÀ–†ÕÀééH€žˆ”Hèè\44W4‡55]5]4W4?…_lÈkSçƒSçSç‹>WWpqp5?»ÈºÈ„ ÉÉ@4ÿ‚!ÿþȆ ÈÉɺº»^»‡^^__^^»^‚»^»†º»»º»º»ƒº»º»“^^»^_V?p³á³¥³ìi~i–¨ ì¤ìì³¥U¥ì¥¤¥¥ì((àŠGŠŠä䊊G`22G¬23eyâ‹›š›†ä``2`23ƒecde…deeddeƒdede†3’Ü’Üì’‚Ü0’‚’“ˆ›šss's'ò”&ò&ò&O&pV_>º¹¹ºº»º»»_I é\]4‰V?èèH™Hžž™ž•”ž”Ièè\4W]]4]4è?èI_^_»¬lºkkçSSçSççSSçSçSSçSÈçº>545pW5ÈÈ@@È ÈÉ@ÉÈþþ2ÿ‚!ÿþƒÈÈ@ÈÉ‚_»^»†»»^ »†^^»»º»º»º»ºª»ºº^>>_>?VWá}³¥ìì¤~i¨~¨~¨¨~¨ì_m^m• ž””\è\è\4è44è\?I>^»kççSç‚SSç˜SççSçSSç纺_VVW5WW>ÉÈÉÈÉÈ„@Èþþ2ÿ‚!ÿþÈ ÈÉNq|q|p^»º »Šº»º»º»º»»º »‚º¹ºÉºˆ¹º»_?>V4V455}³}¥ì<~i¨i¨ii~i~¨¨¤<<(³ˆ¥³ì¥ìì³(F…ŠŠGGFŠ‡äääšäš‰ä‹‹››š›šŒ›ŠŠãã22ãGF`ã2‚dcd†edeedde”d©ded©3===’’=’‹““š››šsšss'ò'ò‹&VV>»¹¹º»º»_‚II\éFé’\é\\]\èè4?4??^^ml•”‚ž”ž†”ž”Iè\èŒ]è\?Hm¹º¹S¹ç SçSçSçç¹¹^?>V4WVm È‚þþ2ÿ‚!ÿþȇ ÈÉV&}³…T}44_»É»„º»º»º‚»»º» ºÈºƒ»»?5”pWpWWqq}³³¥< ¨i~i¨~Œ¨¨¨\\ é„\]]4]‹44V??_mm•”•”‚ž”žŽI\è\è\è]\\Hl¹¹Sç Sç S犻>>V445»ÉÈÉÈ‚þþ2ÿ‚!ÿþ‚ÈÈɃN}᳆U³áp »†º»º»º»º»ˆºº»»º»^^»‚ºº犺ºÈº»>5qq|…qáqq|³„¤ ¨ ~†¨¨ì쳉)³(ä(›äŠäŠ%Š†ää䛚›š›šŽ›``2ã2`2``G2G`2„3e3de3e„3 Œ’==’’’’“ŽÞ›šsšs!'ò'ò'ò‰W>º»¹»m_>\]é†]\é]\]\]4ŒW4V4?_•l”••ž”žƒéè\è‡II™m¹ºçSçSçS猻_?554?ɺºçÉ‚ºÈ4ÿ‚!ÿþ‰ÉÉòW&}³T³U³…}WW?»ƒº»º»‡ºº»º»º» º•^?V5WVV>º»ç纺»?VWq||}á}†ì<¤ ¨~¨~‡¨¨ ì<³‚(ä‚à䊇%ää›äš—›ššäää`ãã`22GFG2`2F2ñã2eˆd©edeedde†d©e3 3’‚=’‰Þšs'‘òò'òò'òò>^^»ººI\]\…é\éé\é„\é]\4†]4]4]4V„?_•l”ž”‚ž”žHHéI\I\IIéI™•R¹S…ççSç¹SƒçSçSŽçSSº__>?44?ºÈçÉ4ÿ‚!ÿþŒòòVá³á³³U³³U³T³…p?>_»‚É»º»ºŽ¹¹º»?q|}T}}q>»…_W||}T}…TTì ~„¨¨~¨~„¨¨<ˆ((áä›ä›%䇊䊊‹Šä‚›šs š›šš››ŠG`G`2ãFã``FŒGãF2G2ã23eddeˆddeededed„33 ˆ’’’“1›š›ššs'&ò'ò•?>>»º»è\\]\]\]\é\é\\é]„44èè4Ž]?4>^•l”ž””žž”ž”ž™éHÀIéHém™™€l¹¹SçSkSç SŒº^_??4?>»»çS„绺»4ÿ‚!ÿþ†?Vá}³T³T³ˆUU}||qWV?‡WVWò>?_»º†_5³á¥¥³‚||Wƒpqá}Ž³}³T³T³³TT<¨~¨~†¨¨ <‡›á›š›ä%ä…‹ääšä šÞšÞšš›ääŠ``2FãG``22GãFã22ã3ec3edeƒdee3’—’’““11üÞ›ss'&&'&'òŒò__^4p5p]4]\é‚\é]‚VV4ŒV44V4?_•l”•˜”‚ž”ž•™H™H™H™™é•H™•RkSSçSçS ç†Sçç^»>?ƒ>ºº為º4ÿ‚!ÿþ†?ò³³UU³U ³„}³}|q”á}}qWpW?>>_»»ºº»»?|³¥…Tá}}T³T³‹UU¥³ì<ì ¨~ˆ¨¨ ¨¨~¨d Ûà››á››äOä‚›šsšÞš—›š›‹ŠŠ``2ã`G`F2G2F`2ã3e†3b3eede‰3d ’’’‚“ü…›š''òò'”ò'òòH_?455p]]W]]4]\‚]]4„??è?4†??>H••”ž‡•™H™H™H™‡•€À™•lRSƒççkSçSç„SSççSççSS纺_?>?_^ººSç‚þþ2ÿ‚!ÿþ‡??}TUUT³U³T³}³}³á³}³}}|5??_»^»º»»pT³¥ì¥ì쥊T¥U¤³¥³¥¥U¥†ì~¨~¨ˆààäà¨~¨dFääš››šš›‰äOää›äš››"šƒä`¬2†`2ã2 2‹ed2ã2G2ddedŠ33 ’=’’“…‹1‹Þš&É•ll@òŒÉmm_è455WW]W]\–]è\è?è?è?èè?èèmm••”ž””ž™Žž™˜”˜žž•™Àžl¹çSçSç SŽçSS¹»»_>_>»º¹¹SçS‚þþ2ÿ‚!ÿþ…»»Vq} ³U³U³T³U³³áW?>»»º55T¥¤…ì¤ì¥¤¥ÜìÛÛääää(Šääᛚ„›äàŠ`ää››šš›š›šš›š››á›†Oš›šO›šÞš„›ššÞš›š›šˆ›äŠ`Fã`ã‹FŠŠñGGñGñGñŽeˆ33’““““11üâ1Þš!ÉlkjÈÈljÈ ÈÈlȺl_?è45W55WWNp]]4?è>è>è?è?è>^^m”ž”ž”ž™”˜”˜”žž••l¹SççSŠççSçSkSkkSçSç…S¹¹»»çSç‚þþ2ÿ‚!ÿþ‡¹çº^??á³T ³U³}³}4>>^º»»V}}¥¥솤ìì¤¤ì ¥“ì³))((Ûà(Šäää›ääšäš›š‹›äáàää››šš›š› š›š„›šš›š†››ääŠàŠñ$ñêñ‹F2eedeeda“†““1““1”ü1›ssòl”lÈ•jÈjlljÈlj‡kljll^?è5ƒWW5W’4>è_>è>è>è>_m»•”˜”ž™ž…˜˜””˜”ƒ•l•kƒçkkS‚ççSkSç S繂ççSçS‚þþ2ÿ‚!ÿþSˆº»W}}³³¥³)³}³‚UU³}áV__»»^q¥¤¤솤ì¤ì줥‰¤¥ìì(àà䇛䛛ššäš‡››šš›š›š›š„››šš›„š››á› šs šs š›š›š›ä%êê……ñê…ñÒêññ…G233ee3“®100““1“1111›''ÈljkljlÈjl”lkljlÈljll_>è?è5‚W5W”554èè>_^^_>>_>^mml”˜ ž‚˜˜ž„˜”žž”‹jkkSçSkjkSkSç SçSçS„çç¹¹ SçS4ÿ‚!ÿþç„»V?}³‚TT³†)³)³³U³ŽqV_»__4}ì¥ì¤¤설ì¤ì ¥Ž)ì(ääää››„šš›š›š›‚šš ›‚šOšÞšÞšÞš›š’›šš›ää$%ê¾……êê……ê‹……ñêŽ2­33aa“‡1111©1üüü›&&lÈjÈljlj lÈllÈlklÈjÈl»>è??445†4V4?__¹»_“»»l•””ž”˜”ž˜”žž˜˜””˜’”ž””kjÈkçSSÈSSkÈSçSçSç„SççSçSçƒSçSç4ÿ‚!ÿþçS爻»4qá³³T³}³}³áV__»__5}ì¤씤¥¥ì¥¥¤¥¥¤¥ì)ÛŠäääᛉšš›šš›š›á›ˆš›š››š›š›á ›‚š› š›š„%%$ƒñ÷$ê…„êê……êŠññGF`FŠF䛂›‹ÞsòmÈljklÈj‘ kkllkklÈlÈ»_?è?è4V4…è?>»»R‹º¹m^m»l•˜”ž˜™”˜˜”˜˜”žž”ž˜ž˜˜”SjSkSkSkÈSçSç SçSçS‚ççSçSçS4ÿ‚!ÿþ‚SçS‡ç?qq³TT³T ³‹}}qW__»__5}ì¤ì¤ìì¤ì쥥ì¥ì¥„ììÛ(䇛áää›áš›š›šŠ››ššášášš›š‹›áššá››Oš››šsš…›šrš%‡¾……ê¾ê¾…‡„„ê……êê…ê÷&Œr'rrssššä›š›š›£s'ÉmljÈlljjlÈlk”lkÈ”jÈljljk^?>è?è4è4‡è??_»¹¹R‡¹»»¹”ž˜ž˜žƒ”ž˜ž‡””RkkSkS‚kjkSç SçSçS„¹SSç S4ÿ‚!ÿþSç„»?>| ³…U¥¥Ü¥³„}qVV_‡V}ìUìì¤스ìì¤ì¥¤¤¥¤¥†ì)(ä䆛䚚›š›„š›šš›„š›šš›‚š›š›ƒá››šsš%$$÷$¾¾……ê…êê…ê…”ê„ê¾……ê……êêñêñ''rr'r„sšršr„sššsšœ'ÈÉjljjÈ•kljllÈ•jljlkljklkm?Žè?è?4?4?>軺R¹ R„¹Rž˜žƒ˜˜”ž˜ƒ”RçS‰kSçSSkkSSçS‚ççS‹çSSç¹S¹SSççS‡ççSçSþþ2ÿ‚!ÿþ‚ççS烻p³U³„UU³³¥‚³¥³ˆ}qq_>>V}ì‚¥¤ì¤›ìì¤ì¥¥ìì¤ì¥¥Ü)(ääšášš›š›š›š›š › šƒÞšsšÞšˆ›š…ñêê…Ë……ê…êêË…†ê…ê¾êê…‰ññršsršrrˆO'r'rssrs…ÉjÈkl…j jÈjk›ljÈllkÈlklkº_>è?è?èè?èè_>»ºR†j˜”žž˜žƒ˜ž”ž˜„””RçS…kSÈSçSkSçSçS„ççSS¹SçSç„SSþþ2ÿ‚!ÿþ S…çç»^p³†Ü¥¥U³¥³¥³‹T³qá>__?q}} ì‚¥ì¤ì¥ì쥳³)Û(à››š›š‚›š›‚š›š›š†››ášš›šƒá›á›áš”›šr$¾êê¾…êê„êË…Ëê…„ê”Ë…êê……êê…¾ê„êññOOrr‡rrOrrrƒOOr'„&ò'Él‚jjl‹ÈlljlklkjlklŠjjº»»>?è>>?_»R‚ž˜ž˜ žˆ˜ž˜ž””RjSƒkSçS‚çSk SçSçS„çSSç SçS‚þþ2ÿ‚!ÿþƒççSç‰SSççº^qT³†UU¥³UU³†UU¥³¥¥³}Tá}á|}}á}á}}TUT†è_??>__^º¹¹ Rƒ˜”ž˜ž˜„”žž”˜‹”RSkSççSççSç‡S¹SçSççSçSçƒSþþ2ÿ‚!ÿþ†SçSSççS‡çººpTUU³U³T³T}}³}}T³T³T³T³³T³¥³U‰¥³Üì)á(›š›š‚›áš‡›šš›šá›šƒ›šš›‚šš›š‚›› šsšsš‡äŠñ„ê…ê„Ë„„L„Ë„ê„„…Ëê…†êê…¾…¾ê‚ñ÷rƒrrŠrrr'&''r'òƒÉŽmÉmlÉlɺºllºkº¹‹S¹¹»__>>è>?>„_»R¹ RŠjj”žž˜žž˜ž˜ž˜ƒž˜˜”‚RjS…ççSSçS‚ççSçS‰¹Sç¹çS¹S¹S†ççSSççSçSçS4ÿ‚!ÿþ S†çSººpU ³U³‡T³T³³UU³U³‚}³}šT}T}TT³T³¥³Ü¥³¥UTUU³³Ü(›á›š›š‚›áš…›šš››šŽ›š›šš›áššá››šášsšä‹Šñêê……êê„Ëê„„„Ë„ꆅêËêê…ê•ñêrrrrrOrrr'&O„rrOO&ŒòòòòIl»ºl…ºlº¹º¹º_>è>„_»¹¹ R‡SSj”˜˜”ž˜ž˜ž˜”‚RjS„çSS¹ S„¹SSR¹ƒRS¹S¹SçSçSçS4ÿ‚!ÿþçS烺»q¥³T³‚UU³U³T³T³—T³¥³³¥³¥Ü¥¥U¥)((››šš›š›‚šš›š›š›á›ƒáš›šÞšÞšÞšñ„…„‚…Ë„…Á„Ë„Ë…‡ê……ê¾ê¾‡ršršrr‚šr„s's'r„rrO&ˆ÷ò&òHɺƒ¹¹ç¹‚ºº¹•S¹S¹¹º»__>è_>è_è__»»¹R‡kjj””˜”ž˜‡”˜””RRjSƒççS¹SçSR¹R¹ƒç¹S¹‚S¹çSç‚SS4ÿ‚!ÿþ‚ççS‹çç»»q³Ü¥¥³¥³T³¥ ³…¥³¥³¥³ˆÜ¥³)(››š†›š››š›š›†š›šš›š›š›á› šsšÞ š•%š‹Šññ„ê……ê…ê„„ê„„„Ë„‚…„…‡ê…ê…ñê‚rrrr„ršsr„'&&ò‡IMòɺ ¹º ¹‰º»_^_>è>>_‚»»¹RS‡kkj””˜˜žŠ˜˜ž˜”ž””R”Sˆ¹SS¹SSççSƒº¹»_ƒ>»»¹º¹‚SSçƒSçSç‚Èç4ÿ‚!ÿþ‚SçSçS…çSººq³ƒ¥³¥³}³T ³}³‚UU³¥³U³U³Ž¥³¥³³Ü(á›á›šš›š‚››š›šƒ›š›š›š‰›š›šš››šš›šsšs š‚ä‹ñˆê„„…êËê…„‚ÁÑ„‡…êê„„…ê…‡êrr„Orrsr‘rOrršršs''&rr&O&ò…ɺ¹¹ç¹…ç¹¹çç¹…R¹»^^_‹^__^^º¹¹RR¹RŠ¹¹S¹¹S¹Skj”‚˜˜ž…˜žž˜”ž”jS¹SçS†ç^^èè|è_¹RR¹RR¹R¹¹SR¹ç†ÈççSþþ2ÿ‚!ÿþSççSçSçç»»q³¥³¥Ü¥³T³¥³¥³†¥¥)³(›š›‡š›šš›šš›‚š›š†›š››š›š›ƒá䛚†äGñÒê…†êêËê„ê„Ë„…ê„ê…ê……*…ñrr‚sr’šrrs'&''Or&'òòHɃÉɺ¹ç¹º¹º»„^»^^»‚^º¹‚RR¹焹¹kj”‚˜ž˜…ž˜˜žž˜ˆ”˜”jkjSSç‹SSçSçSçºè?}T‹}è|èè_>_^¹º¹…Rºº¹º¹†ççÈÈþþ2ÿ‚!ÿþçSç‹ÉOܥܳ¥¥Ü¥ ³ƒT³T³T³T³U³‡¥³¥¥³¥U³Œ¥¥³¥³³Ü¥³)››š›‚š›š›š›š›ˆä(Û)Û šÞšÞ š‚‹‹ñꇾ¾…Ë„ËÁ„Š…¾Ë„…Ë„Ë…„…*ñsšrrärrr—Orrsrrr&&rrO'÷''&M÷HƒÉlº¹ºçº¹çº¹¹R¹R¹ºº»¹º¹º»¹ƒR¹R¹çS熹çkkjj”„˜˜ž˜žƒ˜”˜”…jkkçSçˆSçSSç55¤T}‡||èè_?^»‡º¹Rºº¹º¹ç‚þþ2ÿ‚!ÿþçS†çÈ^mqÜ¥³¥³}³T³…}T³U¥³…¥³UU¥³‘TTUU¥³³¥³¥¥³)››š›š‚››š›š™›šášš›šš›š››ášá›šš››Û(Ûä šs š››äŠGŽñÒê…*ê…êË„Ë"„ËÁ„„Á…„ê„ꦄêê……ê$ršsOrrrrrOrr''÷rN&÷ò‚IòŒIòHÉȹ¹ç繹繺¹R¹…R¹R¹S¹Žçç¹SçSçS¹Skjkj ”j‚kjk„SSççSçS‘¹º55¤¤T¤T}T}}T}T| èŽ_^_>è_>_»¹º¹þþ2ÿ‚!ÿþçS†ç»ò?á³¥³¥³‡}(((((‚³)³‚U³¥†³¥³¥³³›†šš›š›š›‚šš›š›š›ƒš››äŠ()Û(Ûäšsš†sššsšsš„ääGGñƒÒê…ê„‚ËÁ„“Ë„„ê„ê……êñsrrrr¡rrrrrOOO&÷&&òòIIòMHHºçºç¹–R¹R¹RSSçç¹¹Sçç¹Sçç¹¹çç¹…çSkSkjƒ”j”jk‹çç¹¹ç¹ç¹SççSŒ¹¹SSRº5褤T¤ T†}}T}|| èƒ^^»4ÿ‚!ÿþçS…çòOá()‚쥳¥³“((%ÄÎÎÄÄÞ½ÄÎÄÎÄ%%³¥ƒ³¥Ü¥„))››š›‚ä›á›Žäää((()Ûƒà䛚sš‚Þsšä†GñÒñÖñê‚„ê…„“ËË„ê…Ë„Ë„…÷¾÷rrsr‡šsrrssr'Œ&&ò÷I÷òIH…HHm»º¹ ç¹ç¹¹çç¹çSççS¹S繃Sçç¹ç¹ç…º¹çç¹S¹„»4}}¤T ¤‰T¤T¤T¤T¤T¤„T}|è4ÿ‚!ÿþçS„ç?áá)ˆ(Û)ܳ³))³‰U›äÄÎ88Ú8Ί´ÎÎÄÎ%)³)¥³Ü¥Ü¥¥Ü)››á››šš›š„›ä‚à›ä‘›ä((((à(à(ÛÛ„ä››šsšƒŠäGñˆêê…ê„ê„„ê…„„ÁêË꾊$¿rrršrƒr™rOr'r'&''&I&òòIòIòIHHˆHÉÉmºç¹¹烹¹ç ¹‚çç¹ç¹‚S繆çç¹¹ç繃S¹ç¹ç¹ç¹‚çç ¹„»ºèT!¤T4ÿ‚!ÿþ‚çÈç‹SSççòOOáä%Þ%„‹‹%‹ä…))³³¥³ˆ%šÎ8998ÚΊ98988Æ훥ˆÜ¥Ü)››á›ŒÛ)Ûä‚›((((ÛÛ(Û䛚ޚޚ’ä䊊GÒñêñêÒ……„……¾ñ…Ëê¾ê¾÷¾$¿sr'sr…srsr„'r'O&‚ò÷òIIƒHÉmºçº¹ºçº¹ºç„Sççºç¹çº点S熺ºçç¹¹çº点¹為ºçºç¹Rº„>55}#¤‚TT4ÿ‚!ÿþƒ»ºÈç…&&O$ˆ½*%$%½7½%”ä%ä(()³UU³%šÎ89988Î89ˆ8ð%%³Ü¥Ü¥…³Ü))›…ä›)Û‰(ÛÛ(Û0(“ä(Û((ÛÛ<(ä䛚› šÞš‚ääñ†Òñ„êêÖ…†¾¾ñ……ê…Ž¾……¾ê$$rrss„rsšrs‚sr†''÷ò&÷&†òòII†HHÉɺ纹ºçº¹ºç…S¹çç¹ ç¹ ç¹ç¹ ç¹çº‡^_è?èTT¤¥!¤‚þþ2ÿ‚!ÿþ‚__ç•SçºÉº»òòq³³<àŠŠ*ÄÄ-Ä…½((³™%%ÎÎ8989Ú988Ú89899Ú6½à³¥¥ÜŠ³³))(›á›š›ƒáäàÛ<<Û=Û<’<ÛŠà(((Ž(à((ÛÛ(ÛàÛ(䛚sšsšsšŽääGñêñêÒ…ê„êÖ*ñŽ**¾ê…ê…¾÷÷÷'''rsr'srr'&'&“÷ò&&÷&&ò÷òòIòLHƒÉ»ºç¹ç¹ç¹‚Sç¹çS¹¹Sçç¹¹çç¹¹S繂çç¹ç¹ç¹ç¹ç¹‡ç繺>?è}T¤¥"¤„TTþþ2ÿ‚!ÿþˆ??»¹¹ççÈ矻44}T¤Tìà(à%ĽÄ,Ý6¼½Ä%ä(³³ääÎ898‡9Ú998´·9‹8ÄÄ%)¥Ü³(()(›‹ää((`ãÛFÛ’ÛàÛ(ÛÛ(Û((()Ûƒ(ääš››äŠñÒñê……ñêñêÒñ‡¾…ñ…÷$¾‚ss‰srsrrsrrr‚r&÷÷&÷&'!&ò÷'&òò÷÷òòIòIòHº»¹k ¹ç¹‡S¹çç¹S¹ç¹ç¹点¹ç¹点Sç¹点Sç¹ç‡^qè}T¤T)¤‚þþ2ÿ‚!ÿþ†èè_º¹¹ç¹„_||T¤†¥³(‹%½Ä“Î%ä)%äÎ8898989¶8989ŽÎÎÄ))(((á›(›„äÛ(ÛŽ“Ûã`Û`ÛÛ(Û((Ûƒ’ÛÛ(Œ))Û(Û(›ä›š‚r› š‡››äŠñêÖ……ê*ñ*Žñ…ƒ¾÷$'s‚'r‡šrršrrƒ'òò&'›÷'÷'÷&''&÷÷òIòòImºç¹¹ºº¹‹ºº¹¹ººççºçº¹ƒççSçSçS為º烺çº爺ç纺>}T ¤¥!¤‚þþ2ÿ‚!ÿþ†}}è?_»ºˆ¹¹ºº>5}T¤˜¥³((ä*½6ÄÄÎÄ‹%(ääÎ8998·9„·99¶9‘·88Îä(›››››á›(Û‰FÛ`Û`ÛÛ–<Û=’ÛÛ(Û)ÛÛÛÛÛääššsšsšŠ›ä›GñÖñÖñÒñƒGŽGñ†*ñ¾ñ÷¾ˆssssr‘šrsrršàN÷&÷&÷&'&‡'÷'&÷&÷&÷&÷&ò÷÷òmºº ¹ç¹†ºº¹¹çç¹…ç¹ç¹S点Sç¹ç¹…ç繹繆ççº>T}¤¥¤¥¤4ÿ‚!ÿþƒTT}è_‚>èT ¤…U¥(%%ÄŸ,ÄĽ½ä%šÄÎ89988989·998‡998ÎÄÞää ›ƒá›››ÛFÛÛ`FÛF`ãÛ`Û<’<=<Û==Û==Û0Û‚)Û(ƒääšsš‰%‹ñ*…ñ…ñêñGñƒGññ*Œ¾÷¾''rs‚ss r‡àOFà÷…÷÷'÷&˜÷&÷&&÷&&']&÷IòImº»¹¹k¹…çç¹¹k¹‡çºº¹¹çç¹ç¹点¹ç¹焹S¹ç¹ç¹ç…ºèTT¥¤¥(¤4ÿ‚!ÿþŠ¤¤TT}T}||è}‚TT ¤¥’(%½ÄÎÎ-ÎÄĽ¿½7Î889‚·‡·‡97Ä›š›š ›—)Û``ÛÛ’Û’Û=’Û’<’Û0Û)((›š› š‡äšññêñêñÒñˆFñGÒñGñGñ÷s‚$$‚'sr‚àFà]àN]O]N]&]O'&“÷&÷&']NNFàFàF&º¹Šº¹çºº¹¹º¹ºç…º¹ççºçSçƒSçSçS çS為¹燹ºº_pTT¥¤¥!¤4ÿ‚!ÿþ¤ƒ¥¤T¤‘)**ªÎ88··ïïï¶ÆÄÎðJïïïï¶Jð7Þšsš››šä(ààFGŠ``FFF’Û<Û=’<Û=<=Û)ÛÛ<<Û)Û<Û(ÛÛ(à›š„ä‹ñÒñ†ÒGŽññGñŠ÷$$s''' ‡'srrààFㆠããFããF‚àà]—÷'÷OàF] FããÊGGñŠ]»¹ç¹ç¹ç¹‚ç繂çS¹Šç¹¹Sçç¹Sçç¹…ç¹S¹ç¹ç¹…ç¹S¹ç¹†^^|¤¥¥¤¥ ¤¥¤4ÿ‚!ÿþ¤T¤ˆ(6½8¶··ï„ïïïï·ï·KJJÄ7Þ$š›”`Š`Šâ‹GŠ```Û’’=’=†’<’Û=’Ûˆ’))ÛÛ)Û„))›šƒäšŠñÒ ñGñ„$ñ÷$ˆ$s'$s‡ssrsšàà ã ãŠFFàFF÷NOàŽãF ãF`GÊGG+÷]É ¹k繊ºçç¹ç¹ç¹çSç¹ç¹特Sçç¹S¹Sç¹…kç¹çSçS狺ç^»}¤¤¥¤¤¥¤¥¤¥!¤‚þþ2ÿ‚!ÿþ ¤¥¤ì ¤ˆ¥³UÎć·ï ï8JÄs%sÞ%ä‹äGŠŠŠŠG``Û=’=‰’=’’==0Û=Û<ÛÛ’)ÛÛ0Û=Û=Ü’ƒ(›šƒ%‹Gñ+ñ…ŽñÊñGñ$$$'$$s$'†ssrFŠ ㊠ãããFF]Fñà‚] ãFGŽÊGÊGG÷ñ^ºº¹º»º…¹ºçºº¹‚º¹ ç¹ç…¹¹S¹ç¹k¹‚ç¹犺º^^}¥¥¤¥¤¥‚¤¥¤¥¤¥¤¥¤‚þþ2ÿ‚!ÿþ¤ƒTUT¤ˆ¥¤¤(($Jð ïïïïï†ï•·K·8ÄÄ%`G`Š‹``ÛˆÛ’<===Š’=Ü’’ìÛÛ=<Û)Û(Û‹ÜÛ’=<’Û(››š…›äŠÊGñGÒñFñGññG+ññ$$‚$sƒ$s †ssààF‰ãFã ãF]F]F‰] ã F``âÊ•‹÷mlÉÉmLIººkç繺ºç¹…ç¹¹ç繉ç¹ç¹¹çç¹¹çS¹‚S繈çç¹¹º^^|¥„¤¤¥¥¤¥ ¤¥¤‚þþ2ÿ‚!ÿþ ¤†U³á(áäŠá³¥¤¥ääÄðïïƒï †ï†ïï†ï8¿ŠŠG``FFÛ`<†=<==Š’=0’Û==Û’=Û„<ÛÛÛ…’’Û<’=„Û(››šƒ›Š`G„ññGŽñGñ—÷s's''$$srs's‡àFàFàF„ããF]FƒãF ã`ÊâÊâ‹%ò\÷I÷÷ñ÷mçkç¹çºº¹ç¹ç¹„çç¹¹特kççk¹ç纻ƒ^»º ¹ç¹犹º__}¤¥¤¤¥¤¥¤ƒ¥¤¥¤‚þþ2ÿ‚!ÿþ ¤…U(³ä%Ä‹ÎðÎÄ››¥³s$Jï!ï†Ä£‹``ÛÛ’<=<à}àà}F<<=Û’=’’==’Û=<ÛÛ’Û’ Û›„šäOŠG„ññG+ñ…‹ñ$s$s„''$$™ss$'sàFàFFààFàFFààFàFàFƒ ããF‹ãã F ã ãGÊâÊ…GÊ‹‹Ê‹ˆñŠ%òkºkºçº烺çºçºçº†¹ºº_W4莻¹º¹¹º¹¹çSç纺犺^44}¤¥¥¤¤¥†¤¥¥¤¥¤¥ƒ¤¤¥ ¤¥¤¥¤4ÿ‚!ÿþ ¤—(ääÄÄÎÆ89988½Äš(7Þïïïï…†ï†ï ïï†ï†ï†ïï9ÄÄ%ä‹GGÛ`Û=<ˆ}q5T¤¤¥¥¤¤¥¥¤¤¥¥¤¥¤¥¥¤¥¤4ÿ‚!ÿþ¤•¥³äÄ¿Î899µ9µ‡98´Ä$7Jï ïï·†· ï†ï†¢ï8Ä%Š%Š‹`Û====<<}à<<Û<=Û<’=<’=‚<Û<’’’Û<Û<ÛÛ=<’<ÛÛ(äšäŠ% ñ„*÷$$…rss'''¿'rr'''ƒOà™ñ]F]FF]FFã ã ã ã F ã ã2Êâ‹…ñ‹ñ‹ñ‹Š+‹%‹ñ‹*ɺk„¹¹ç繋lÉÉmILII\÷]‚è5è…>_»¹º¹ç¹ˆçºº»?||T¤¥ ¤‚¥¥¤¥¤¥¤¥¤‚¥¥¤4ÿ‚!ÿþ ¤¤¥TU³)((š$ÄÎεµ99µ9µ‡99Î$Ä7Kï ï†† ïˆÎ½ŠF<==‰<<}<<==’=œ’=Û=’’Û’Û’ÛÛ’Û’’ÛÛ<=ÛÛ’<Û“Û›†ŠŠññ$ƒ$%$‰s'$s$$s‚'s‚'s‚ààFàˆFFãFãã ã ˆã F2Ê‹Ê‹%‹%‹ƒ+‹Ê‹Š÷MɺȺºçºº¹„º»I÷†]ppèè5è†_º»¹çºçºŠ»»_è||}T¤T¤¥¤ƒ¥¤¥¤‚¥¥¤¥¤ƒ¥¤¥¤4ÿ‚!ÿþ„³ì(½Ä…ÎÄÎ889…µ:µ´°µ:´ÎÎÄÄJJ··ï·ï†…·†ïïï†ï†ï‘KÄ‹ã<<======<à<‡==’’= =š’<<=Û<ÛÛ<==<’>è>躻¹ºƒ»^^_†?q|}UT¤¥¤‚¥¤¥¤‚þþ2ÿ‚!ÿþˆ½Î9°:ΰŒµ9°µ°µµ°µµ°°µ‚´9Α88K9··ï·ï·††‡††·ïï‡Þ‹ã=†====„<<à}<=‘’==’==’=’=’=’=’<à<‹Û(Ûää%Š$$ssƒ¿s‚ss†sss'ss'$ss$$s‡rààà…ñàààF ã ãã``ÊÊ‹%%‹ñ%šñŠ%%ñ‹ñ‹‹+Ê‹ÊÊ‹âÊÊ‹ÊxÊxxââÊšyÊâ++ñ**%]Nppèq5?è_»_^_ººk¹º»º»ˆ_??5qq||}‚T}T‚U¥¤¥¤¥ˆì쥤¥¤õþ2ÿ‚!ÿþƒ‹Ê; °•µ°µ°µµ´´µµ´µµ´µ‡µ99889ƒ‡ï‡†!ï…Ä‹“Û =…ì<}<à<ƒ’=’=ƒÛ_??55pq||}TTU¥¤¥‚ÜÜ¥¤¥‰¤¥Ü¥Ü’Üì줂õþ2ÿ‚!ÿþ‚Ľ°…µ9‡‡µ‡´µEµˆ°µµ9µ‡‡µ‡µ†ï†ï‡ð$’<==ˆ==<<}F< =„’===†Û<<à}àNáNášOrsssƒs'$‚ss†s'ss'$s‚'$—srñFñààFàF]F]FààFàFFã Žãã``¬ÊÊñ%%%‹%ñ%ññ‹+‹‹ÊÊ‹ÊÊxÊxÊŠ]]\\è]àGGŽÊ++ññ]Nq]ppè__¹ºº¹ƒºº¹ºƒ¹º¹ºƒ»»^_^^_>44qq||}TT¥¤¥‘¤¤¥¤¤¥Ü)()¤ìT¤þþ2ÿ‚!ÿþ‚;ΰ„µ‡‡ï†„·µ´´µ° µˆ‡µ‡µ†‡†·ï†‚ïïÆàÛ„===‡<<}F<à=<’=„==‡<<}àNà]N&N„rrrr‡rr's…ss'†ssrs'…ràFà F‘]ñàFFã ãã ã``Ž`‹Ê†%%%%‹†G%‹%‹+Ê„xÊâ‹Ê‚G]è“\àÊñ+ñ*O]p]5è»^º ¹º¹º¹º‹_^?è??>_^_>è}ƒTT¤¥Œ¤¤¥¥Ü(((à4ÿ‚!ÿþ‚°;°‹µï‡‡††µ†µ††µ° µ…‡µ‡††ï‚†ï †Š·ÄÄ%Û’=<=ƒ’==<…ì<Û<à<Û==†<ààáON‚O]N‚OrOr…$$ss'ƒ's†$$ss‡'$$s'ƒOFãF†ã2 2ã ãG‹ÊäŠ%š$%%ñ$%’ñ‹+‹‹Ê‹Ê‹½ÊxxÊGñO]è†]àñÊ+Žñ‡]O]5»»º¹‡º¹º¹º¹º¹º¹ºº»^>>4q44?__>Vpq}}TT¤¥¤¥¥Ü¥Ü¥…¤¥¤¥¤¥ƒÜ)½Ä4ÿ‚!ÿþ °µ‡„µ‡††µ‡ µ‚‡†‡‚µ‡†ï†’ðÄ¿‹Û====’=<=<=<…Û<=’=…<Ûà|ONONƒpNNO‚rOr…$srs†s$ss„ààFã ã˜FFGF`FããFãFF`GGñ%%‹%%‹‚ÊÊ‹ʈxÊÊâÊF]è‘]NGG+Ê+ñ**%N]W^»¹º¹Šº¹º¹º¹º¹º¹º–»_54|}||54èèp}}TTU¥¤¥¤ ¥¤¥‰¤¥ìÜ+½ÃÂ4ÿ‚!ÿþ‚°;°µ‡µ‡‡‡·†·ï†‡‚††ï87Ä‹====‹=Û=Û<=<ã<<’=„<á}àN‚W]N†]&NN&]NOrƒ'r' ‚s'…'r'„'‡rs'ààFã… ã 2FGŸ‹‹ñŠŠ%ŠàŠŠñ%%ñ‹ÊÊxÊxÊñ‹‹Ê‹ʆxxÊG]]è•\è]N]G+Ê++ññ+ñ]]^^ºº¹ƒº¹º¹º¹º»_è|}³<}T}qq|}‚T¤ ¥¤¥‡¤¥¤¥¤¥¤¥‡ì¥Ü)+‹4ÿ‚!ÿþ„;::9°ˆµµ‡‡µ‡µ† µ†‡µ‡‡·‡·‡‚††ï†ˆ7%‹<=Û=ÛŠ‹äŠ’Û<Û<=…ÛààqON„]NNON…ONWNNO‚rOrs‚s‰s's'$$s‚s‹'ssrss$s‚ŠFŠãã ã2G``GÊ‹GÊÊGGŠ%ä%ä‚‹‹xxy¬xxÊÊ‹‹Ê‹ÊÊxxʃŠ]4 è”]àGÊG+ÊññGñN]??__»»¹º¹º¹º»^»5}TTìÜì¥UTT}T‡U¤¥¥¤¥¤¥„Ü¥¥Ü ¥¤쇥Üþþ2ÿ‚!ÿþ†ÃÂ;;°9°9‡† µ‰‡‡ïï·†·‡‚†ï†œ·Æ7*‹Š`’ÛG½%½*½%‹ÛÛÛ<Û<†ááàNOON‹ONONNOONN&NOr‰ssr'$ss‡r'$'sssƒ$sƒàF‰ ã ``GÊÊx†ÊÊ‹šäƒŠÊGy…xÊâÊ‹Êx‡âGG]èè> è‚]]ñ„÷]à]艻^¹¹º¹º¹¹ºl»„_4V}ì ¥ì ¥…ìÜ¥¥¤ ¥Ü¥ƒÜþþ2ÿ‚!ÿþ†))‹Â:;°‚µµ‡†µµ†µµ†µ‚‡µ‡ï··¶¶¶·†‡†·††ï‚†ï †ƒ·å·¶«å¶¶å¶¶··å··å¶ååÆÆ"Åƃƒå傃6½½%‹ÛF<<FààNqN]N]N]NWN&ONOrƒ'ss‰rssr'rrr†srss'„àFã ããÊx¼x½++ÊxxÊx‚Êñ…ñ%Êxy„¬xxʇâŽ`Gñè]è> è>è‚»_»‹º»_>>è]W|<<=†=’=’’=‚ìì¥ì¤Š¥¤¥¥¤¥¥¤ì쥆¤ì¥¤¥¤¥…ì¤ìþþ2ÿ‚!ÿþ™¥¥Ü½;ΰ9°°µ‡†µ‡‡µ†‡µ‡†‡‡†ï„¶·åˆï‡†·†ï†ƒ·åŸ 킆Q‚íQQ‚å¶å‚åƒÅ6Ä%àÛ<³<<àáàONWNŠ]NONWOrOrN Ors'sr's'‚à㟎ÂÂÝ¿¾*ñ+xxxxÊÊ%‹ÊÊyxy¸yy¸y‹xâÊÊâÊxÊñF]è>èƒ>è>è>è__»^^>5}|Tìì)=’’’’“a’“’=ììÜ쥄¤¥¥¤¥¤¥¤¥‚þþ2ÿ‚!ÿþŠ¥¥³‹;;°°µµ‡–µµ‡µ‡††‡†‡ïï9··å‚‚îåå·† ï‚·ï ††¶åå‚‚˜Ÿ˜Ÿ˜Ÿíí‚í‚í‚‚í‚‚å‚å‚åªÆÆ6*ÛF<à}àONWN]NƒrOrOƒNOOrŒsrr'r'r'sr„šOr&r†Orsrrs‚s'“ààG+ÊÂvÂÂÝ6Ë*+ñÊx‰yxâ+xy¬y„yy¸yŠxyÊÊâÊGGp] è>è„>èè>è>è‹>èè>è__èèq}<=„’’aâa‡““a“’=ƒì¥ì¥¤ ¥‰¤¥¤¥¥¤¥¤¥4ÿ‚!ÿþ¥ˆ‹Ã½°µ°µµ‡µ‡…µ†‡†ï·‰9ƒ‚‚Ÿîåå·†··¶å‚·å‚‚˜Ÿ˜™™Ÿ‰í˜ŸííŸíŸíŸí‚‚í‚‘å‚‚å‚åÆÆÄ*ÛáONáNƒ]N]NƒWN]NOqOƒNONOrrO‘rOOrrOrOOrOšssrs£$s%%$$*%*½v;ŒÆѾ¾+¼++ÊxxyxyyŽyy¬yˆxxâxxâñ]è>èƒ>è>è>è†>èè|T<=ƒ’’a­â…­â­a­a‹’==ì=ìì¥ì¥…¤¥¤¥¤ ¥¤4ÿ‚!ÿþ¥¤¥ä½Ã;µ°µ‡‡†‡µ‡’†‡9‡9åPííå冷ï†ïŽQPîîíííP¶ï†ˆ¶¶‚ŸíŸ™ŸíŸ‚íŸí˜횟íŸíí‚” ‚‚ ‚僃6$ààáOONONWNONO‚N& O‚rOrOrˆOrOrOrrOr”Orrs‹‹%Þsšsšsš%Þ½ÂÂ׊;v;,,66*¼+‚+y„¸yyxy¸y†ÊâÊâà4è>èƒp}<’ƒa‹aaâaâyây­ââaa„a=Ü쥌¤¥¥¤¥¤¥¤¥¤¥¥4ÿ‚!ÿþ¥¥¤0‹Ê;°9°‡‡†‡ˆ†‡··Úƒ‚홆QQ·ïï¶åQ™—€ž™Påå·††··Qåퟟžž€Ÿ€ŸíŸí‚‚Ÿ íƒíí‚åÆƃÆ¿äàáOàNON]ON&O‘NrNrNNOOrOrrOrrOrOr˜OOrš%%‹ßÊx½Ê½Ê⽋xÂwvCCB‰;v;-,Æ"¾*+„xxyxyƒxyxyˆxyxÊŠŠ]4è> èƒ>è>è>èƒNF’†aaaaâa„’’a‡==’=ì=ìƒÜì¤ ¥¤4ÿ‚!ÿþ‘¤¥¤¥°°µ9‡‡ï9µ8åP‚™ž€™îP¶ï—·¶Qíí™™žž™ž™ž™™ž™ííQ·…‚‚ížž€†ž™™˜Ÿ˜탟íŸíŸ펂‚í僃ÆÆÇÆ6¾ààNˆ]NN]N]N]Nƒ]N]N‚&NO…&OOrNO‚NNOrONOrO„%ÊÞx×›Íy±×w×vCBBDB;v;ŒŒÄ#6Å…Ó*Ž+ˆ¼+xxyŽy‚¬xy†x¬x‹]pè>è>èƒ>è>è>è„>èè>è> è‘]ã==aaa­y­yyâ‹’=’=’’=’=“’====ììÜ줥¥¤¥¥¤‚þþ2ÿ‚!ÿþ¤¥)Â;;°µ99µ99·Ú‚î홞™ž™€™îPQQåPP™™ž™ž™€ž™QŽîŸŸžž€ž™™žžŸíŸ í”íŸí„‚ååƒƆÇÆ6%N]N‚ONO™rr%%‹½%%Þ%šsr%šäOOOOrO—rOOä½â½Í×Í×Í×ywwBB;Bv;”-,ÆÅ"¾ñ*+Ž+Ž+++xy¸y¸y‡gxyG45!è>è>è…44]G3Œaaâaâ­y¬x¬ââa“’•=’’=’=’Ü=’’’=’=샥¤¥¤‚þþ2ÿ‚!ÿþ¥†¤Ü)½;°‚9µ‡‘9µ99¶ªQ€€™ž™ž™€™€™„ž™™À™“ž€ž€™€™™ž™ž€ž™€€Ÿ í‚ í‚íå¶ååƒÆÆÅ6$¾OrN†WN]NNWN„ONN]N&rª%‹‹½××x½x%šäš‹½‹Þ‹äššssOOrNOšOä‹ÞxÍÍ׆vvBB;;‹-Ä#,,"66Ñ+Ž +Žxxxyyxy¸yyx¸y„xG4pè>èƒ>è>è> è‹>èè?è]]àGââa‡­ââxyâÊâa‚’=’†=’’=’’=…’’=쥃¤þþ2ÿ‚!ÿþŠ¥¤¥¥³Ü½½Â;Œ°°9K9µ99ð‚Ç홄ž€€ž™ƒ€ž•ž‹™ž™€€™™ž€€ž™…ž™€™€™‡€™žž™ž™ž†™ž™Ÿ˜í˜í”톘íí‚ííå‹Q‚ƃÆ66¾OàN‡OO%%‹½Â× x×x½½×½Âx½Þx½‹%%ONOrOr%‹‹Êx××vB;;Â,Æ-,6Æ66Ñ** +…+xyxyyƒxyG0è]\êñ¬Žââaâ­âây¬ŽŽŽâ¬âaa’’==’=’ =’=ƒìì¤ì¥‚þþ2ÿ‚!ÿþƒ¥¥¤샋‹Š½;9°°99´‚홂žž™€™ƒÀž€™‚€€™ƒž€ž™Œ€ÀžÀžž€žž€€™í‚‚”í‚í•‚Ÿíí‚í‚Q‚ååƒÆÅÅ67¿$O…N&NNONƒOONO‰šr%½‹xw××wCw×wCwCwCw‰ww×½‹%š‹“x¼wv¦BB;ŒÝÝÑÑļ*¼+…++Ê+„xxy„xFñq%è>è‹5áêÒŽÓŽÓŽ+*Ò*ññêñŽxâ“’“’==’ì=ì==ì=ì==ì‚Ü=ì‚¥ì¥4ÿ‚!ÿþˆ¥¥U³((ä½;:9:88‚€ž™™€ž€™…žž€™€™„€€™€™…ž™ž™ž™ž™€…ž€žŸŸí‚‚Ÿ 픘ííQQåƒÆÆÆÆÅ6ÅONON‡OONNON%‹+ׇww×CvCCw„××wwCŽB§BCCBB§B§CˆÂ¼‡½ÂÂ×vBCBŠvŒÝÄ6Ñ*++Ž++‚ÊÊx…yxy¬yx†yxx`ÊNè> è>èŠ5pO÷÷ÒÓŽ*ÒˆÒÒÓ…Ó¾…ñ‡+¬âaÛ’=‰ì=ììì=¤ì=…ì=ìì¤ì…¥¤¤¥¤4ÿ‚!ÿþìšÛŠäŠÊÃ;Ϊªî€™™žž€ž™ž„™ž€ž™ž’™™ž€ž™€žž™ž™€ž™™ž™ž™™žž™ž€žž€™™žŸŸí‚Ÿ˜ 톟˜íí킃Æ#ƒÆÆ"6…÷àNƒ&N]NŠOr½ÂÂ××w×Íw…vCwCCw„vCBC¦ƒB¦B¦‚úú¦„B¦B¦’B;;Ý,,6**++*++Ž++++++++xŒxÊxxyxxŽñè?èƒ>è>è>è™4?55NO'!LÒffÒ*ÒêÒÖêÒÖÒÒÖÒêŠÒñ+aa=ì<ì<†ì¤<ì=ì= 쥤4ÿ‚!ÿþƒ¥ì)ª‹ÊýÃÄÄ™™ž™™€™€žž™ž€™€™ž€ž™žž€™™€žž€žž€™…ž™€€À™‹ž™€€™™ž€™íŸ탂˜˜í‚‚˜í“‚åQåªÆƃÆ˾¾NNO&N†&NOOx×w±wƒCwCw†CBBC¦C¦‹BB;ÝÄ66* +Ê+++Ê+++++Êx+xx+Ê+xƒx+àè>è„?_>_?ˆèè?è>>_>ò‰&òòMêfgfÒ‰êñÒêÒêÓ„…ê‡ÒÒfŽaa’<‡ì<<=<<ì=ì¤ì¤ì쥤쥤¤¥¤4ÿ‚!ÿþ‘ì)ÛääÊ‹½ª¾™™€™™€™€™ž™žž€™€™Ÿ™ž™ž™€™€€ž€€ž€™€™™ž™ž™ž™‹ž™™ž™™ž™™ž€ í‚í‚‚˜킘í‚í‚‚ƒƒÆÆŒ6ñONNON]rNON…Orr½×wÍwƒ‰CCw„C¦¦B¦ƒ;C;„Ýݽ*+*+++ƒ++ƒ÷4?è?>__?>?>??_»»ÉÉêfÓêƒ÷êêÖ‹„ê÷éÒÒggã2=<Žìì<<ìì=<<ì<¤<¤쌤쥥¤¥¥¤¥¤þþ2ÿ‚!ÿþ‰)ìŠâ‹Êñê™™’ž€ž™ž™ž€ž™ž€ž™ž€ž€ž™ž™…ž€ž™ž™žˆ™žž™™žŸŸ푘ŸíË˃ÆƃÅ"Å¿NON…]N&OONˆO‹½××wwׂwwCˆvCvCCB¦B¦„ØB;;ÝÑ6/++Ó+Ó++ñ+ƒ+++‰½6¾÷?V?è?è? è†?è?>_>—??_>_^»ÉÉ»ÉÈÉêÒÒfŽfÖêÒfŽfÖêêÒÒbgb3 <ƒ=ìì<“ì<ì¤ì=¤ì줤ì¤ì쥥쥂þþ2ÿ‚!ÿþŽ)숋‹ñH™ž™ž‡™Ÿž™ž™ŸžŸž‹€ž€žž™™€ž™ž™†žž™ž€ž™ˆž™ž™€™íŸí”í…”˜íí”í‹”í킘Ÿ˜ËË"ƇƒÆ"¿&O NƒONON„O½׆½×wwvBCB¦ƒB¦¦B;;ŒÝ6ÄÑ*¾*¾ñ**ñ+**+++„Ê++x+“Ê++Ž++*ÅÅ òò?V?\4? è„>>>?>„_»É“»É»ÉMêÖff¸fÒ…ÒÓŽ¸¸ÓêÖf‡{gg3==<Š==ì<ì<<¤¤ì¤ì¤‰ì¤¤ì¤ì¤þþ2ÿ‚!ÿþ‘ÜÜŸ‹阙™Ÿ™™ž€™ž™™ŸŸ™Ÿ™ŸŸ€™žž€ž€€™ƒ€ž€™…žž€™À™ƒž€Ÿí‚톂킔í‚í‚하ŸžËÆƃÆÅÆ÷OON&NONONON–Orr%½×x½x½½ÂwwC¦¦C¦B¦B–;B;;Â;Â;Ý-Ý6ÆÑ6ËÅË Ë¾ƒ*ñ*+‡+++++…Ê+*Å ‡!!Mò?V èŠ??_>??>>?>‚__„»»ÉÉ–ºLfggggùggÒIÖêÖg{fgƒ ’=ì<=ìì<<¤=ì=ìì=¤스¤ì¤ì¤¤ìþþ2ÿ‚!ÿþ…))™ŠñIžž˜™˜Ÿ˜ž€žŠ™˜Ÿ˜Ÿž€žž€ž†€€™€žž™ž™ƒž™ž™†žž™™žŸ íŸ í˜ž™íË6ÅÆÅÆ¿&N„&NN&N˜&NWON&Oñ%%½‹‹%½½vvBCBB§ ¦ú¦ƒú¦ú ¦¥BBvBvv;vŒŒv;;ÄÆ,ŃÅ" ÇË ËË÷…¾÷*+++„+++”++++*Å7ÅÅ !M!ò??è›?è??____>>__>>__^»É»˜ºÈÒgggggffêLÖÖfhf{fg¡e 3==ì<<¤ì¤<¤<ì=줤ì¤ì¤¤ì¤ì¤¤4ÿ‚!ÿþ„¥ìì0’ñ™˜ž™˜ž„€žŸŸž‹€™™€€žž™€ž€™ž€‚™™ 퇟‚˜í킘틘혘Ÿ™™í…¾‚O&N†ONNONONONONONONNOOrr…$ÂCB ¦…ˆBD;v;ŒÝ,,ÅËÇÇM ML÷Ë ÷Ë÷¾**++Ê+++Š¼++¼¾ ! Ň Å òò?è„_>_^^_„»»É’ºÉÉLêêÒÓÖÒÖLMLÒÖf {{ee3==<<¤<¤»ŒºÉ»ÉɻɺÉɺÉ»„»^^‡É»ºÈÉÈçÈŒl@ÉÈÉ„Áh{zëzŠøzøzë{©e <ƒìì<ì…¤<=T<ì‡<¤¤ì¤<4ÿ‚!ÿþìÞ‚00ŽÜ010÷逘žž™˜‚™™˜™˜ˆŸŸžžŸ™Ÿ˜ž€™ƒž™ž™í‚ í…˜Ÿ˜˜™˜­™Ÿí™™HHéIIê…¾¾*½½*½%‹$$‹‹*%½¼Â¼×x¼x¼ÂÂvCB¦B¦B‡;ÝÝ-†ÝÝÄ#ǃMM!M‡AMMË ÷¾*„++Ê++ƒ¾¾6 Å’7Å ÅÅ !ÉÉÈɺÉɺ»É’ºÉÉÈÉ»Éɻɻ»Éɺ ȈHMÀÖhf{z øŠ©g=<‰ììÉÉÈll lÉÈÉlÉl @éføëøëøƒëøë ø•{zb<}ÉŽ@ÉÉÉLLfzøz øXøXXøXøXøXz{Yccö„¨{ 4ÿ‚!ÿþŽ{g¼ûÃûÃϽggcbÒÖÁLîîîîË„˃™‡•Ÿí™™€ý€ýˆŸýý€ý€ŸŸ‘ýŸ€€ýýý€€ýý€€ýý€ƒýýý‹€ýýŸ€ýý€Ÿýý€†Ÿý€ýŸŸ™ŸžíîPîPÇQÇððJðJJðð8:´Ø úƒEæØÙEÙEÙÚÙ„ÚÚªªƒ‡""Å6MMAŒL ÷¿¾¿¿*äÛÛ0’‡“ä¿%’…0%¿7¿…7¿)¥¤ ¥„áòmɈÉêIfø‹XøøXøXX{{cö‚ccë4ÿ‚!ÿþŽ{¼ÃÏÏÃμgŽgc…bÕÒÁ‡îíîíLË‹ÁÁÁ™€€™†í€Ÿ™™€ý€ŸŽýŸýžýžýý€€ŸŸýý€ý€ý€ƒý€Ÿ€ƒý€€Ÿ‚€Ÿ€‰ŸŸýŸŸ€™ŸŸŽ™ŸŸî‚ÇÇ‚ÇQÇÇ‚ðð†J89EØØú‚æE ÙtÙƒ«ªtª¥##,ÄÝÝÑ¿Ë[M[M!! ¿¿¾¿¿0Û0ÛÛ$%“’0ÛŠ00ÛŠ¾¿6Å 7„$ä(쥈ܥ³&òòI†Mm÷ê{ø”XøXøXXYzcöcööicc~~~„~~þþ2ÿ‚!ÿþ‹©¸ÂÂÏÃýÓgˆöbiÒéÖÁîîË“…ËLLË퀙™™€„ý€€ý€Žýý€Ÿýž€€ýŸýŸŸýƒŸýý€Œýý€€ý€€ý€ýý€€ýŸ‹€€ý€€Ÿ€ŸŸíîˆQQÇPÇQÇåƒåð‰JðJJð9E:Øú…EtEÙE ÙtÙƒÚÚuªƒ#Ý,¼Ñ*ËMM! ¿¿ ¿¿$%’’%’0“Û0ä%$7…¿$ä((¥†³qN&òò…Mé„Ö{ø’XøXXz{{cööcööicöc ‚õþ2ÿ‚!ÿþ†©cgg¸gc‡öbbÖîîŒLîLËËÅ676ÅÅË6ˆËËÁËËLˈ€ýž€Ÿý€Ÿ€ýŸŸýŸýý€€ý€ ý€ý€†€€ýŸ€ŸƒýŸýŸ”îîÇÇPÇPQÇQÇÇÚÎ8ζð‡Jð8´9ØØú†EDtÙÙE ÙƒÚÙÙÚ«‚,ݼ׼¼¼6 ËË¿$*ää‚Û’›%Š‹ÛÛ’Û0)Û“0%Š‹%ä³¥Tqá\ÉfzzøXøŠXøX{ccööccöc‹cccccõþ2ÿ‚!ÿþ‚ö¨ŒcgcciöihÖÕé î‡íLË6Å6ˇÅ66ÅÅ6Å6‰¾ËË€ŸýŸž€ýŸ€€ŸŸýŸŸý„€ýý€ý†€€ýýÀ€ý‚ý€ý‚€ýŸƒýý€Ÿ„PPÇPˆÇPPÇQQÎ:ƒ88Jðƒ9ØEú…EtEÙtÙ‘tÙtÙÚÚuŒ-Ôݼ¼¸¼ƒÂ¼¼6©¾Š‹““ÛÛÛ%ŠÛ0’0’Û)ÛÛ’Û’ÛŠŠì¥¤¥ƒ¤¥¤¥ƒUqá‡éÖfXXø‰XøøXøXöcö„cööi ö‚þþ2ÿ‚!ÿþöŠ¨iccöibÖ‚êêLîŠîîîîîL ˃ÇÅÅË’Å6Ë6ËÅ„ýýŸ€ýý€‹ý€ŸýŸŸýƒ€ý€ýÀý€€ýýýÀý€ýýŸ€‰ýŸí퀟Ÿ˜˜Ÿ‹˜îPÇÇPÇÇ[‚Ú:؇´´88J:Eú„ØDtEÙ„ÚÙÚÙÚ‹Ô݌¸¼¸Â¼Ý ¼½¼‹“00“Û…Û““Û‚“ÛŠ0“Û“ÛŠ(()¥¤¥Ü¥†¤¥¤¥¥Ü¥¤¥ŽqàILMÖf{zøøXøX ø„XøXøX‚iö‚¨cö‚¨cöcö‚c¨4ÿ‚!ÿþö„ccöcöŒbÒhêÁLÁLLîîîLîîîLËLËËˈË˅˃€ýý€ƒý€€ý‹€ýý€ýý€ýý€ýÀý€ý‚ýˆŸý€ýŸîP îPPÇQQÇÇQª:Øú†EE:°:°úƒØEEÙŠtÙtÚtÙtÙÙݼݼ¼Œ½â“0’0““†Û0’00Û0ÛÛ0Û0’Û(Û¥¤¥‹N}÷ÖÒÒf{{zXøX ø„XøXøX…{cööc öcö‚¨cö4ÿ‚!ÿþöiö‚iÕî‚L îŒîîîî퀀†Ÿý€ý™€Ÿƒ€€ý€†ý€€ý€ý€ý„À€ý‰ŸŸîîQÇǃÇ…´´ØØú‚ØØú…ØDEtEÙ’ÚÚtÙÙt¼¼xÂx¼¼ÝÝÑ,ݼ”+““0’0’““0’Û0’ÛÛ’’ÛŽÛ’Û0ÛÛ))쥤 ¥Š³ààêgzXXXøX øƒXXøX„iciö‚ci ö4ÿ‚!ÿþ†öödöbiÖ†îîî…îLî…îîîîƒîî„Á €ý€ý€ýýýŸŸ ý†€ý€€À€ý†À€ýý€€ýÀýýýÁîPJðJ„Jð‹ðÆÆÚ´Ú´E°'ú‚EEÙ’ÚttÚÙtEÙ¼¼¸¼x¼¼Ý¼•*½Ê““0’““00“0“00’“00’‘0““)ÛÛ0“0(ܳ ¥¤¥Ü ¥…ŠFÒzX†øøXøøXø…XøXøø X‚cö„ccöcöc ö4ÿ‚!ÿþö†bbêÁî…îîLîî„Lîî„íîîîîîÇýŽŸýý€ýý€ýýý„ýŸý€ ý‚À€ýÀýŒýÁÁîÇJJ KJ8…::°ØØ!úØú‡ØEEÙEÙEÙÚÙŠŒ¼¸¼x¼ÝÄÝŠ¼¼Ý¼Ñ½+Ê0‘’0’0“0“00“0Ü00’’“0)“‡0Û0³Ü)ì¥Ü¥Ü¥…³ŠŠÓœX‡øøXøXøXø‚Xø X†ccöcdö†cöccöcö‚þþ2ÿ‚!ÿþö‡ÖéÁîîîƒîƒîî…íîîíî…Ëý‡ý€€€€ý‡€ý€ýŸý€ ý„€ýý€ý€ý‚€ý„ýÁÆð“JKJJKJJKKJJKJ:8ØØEEØ!ú‚EØúƒØEEÙŠtÙÙtÙt‡tEtÙ“¼xx¼¼Ý¼Ý¼¼Ñ¼Ñ¼*Ê‹“0“0’0„““00’‹0Û’0’Û“’’)쥤¥¤ ¥Œìàññ…¸gœzXXøX…øXøXøX„{öcöcöcö‚õþ2ÿ‚!ÿþöŠÖîîîîƒî…Lî îî–ËËÀŸýý€ý€ýýýý„ýý€ýƒŸý€ ý€ ý…ðJJKJ‚KJKŠJJKJKJ8:°ØúØúØEØúØEÙ‰tt´tÙٴٴÙ Œ¸¼¼¼Ý¼Ñ½Ý¼Ñ‹â“0““00“’’0’““0“‚’0“’‰Û0’0Û)ÛÜÛ)‚³³¥¤ ¥Œ¤¥¥TŠñ$Ñ/ùfX‚YYXYY{{©cc©cööcöcöiö‚õþ2ÿ‚!ÿþö“ÖLîîîîîîíLî„LL‹îîîîîî‚îËÁˆýÁí„Àퟟý„€ýŸ ý€ýŒýýýÁÇðJJKƒJKJK‰JJKK8K:ØØ"ú‚ØØE…úØúØEÙ‹´´ÙÙt·tt´Ù´ÙÚÙ‡t´ÙÔ¼¼ÂÝŠ,ÑѼ¼½‹0“0‚’“0“0†’0“00’0‚Ü0’‹0Û0ÜÜ)Û(Û쥂Üì¥Ü¥Œì¥(Š**ѾÓÓzX‚YXYƒXXóXY{Œcö¨ööcicööcö‚þþ2ÿ‚!ÿþŠööbÖLÁîî‚î„Lî‚îîîÁîˆîËË6677ŇËËÀÀÁ…ÖÁÁÖÁý€ý‚€€ˆÁýÁÁJJKŠJJKJJKJJKJ†KJKJKJK„:Ø°¦úØE Ù‚ÚtÙ•t´ÙÚtÙÚ´t´ÚÚÙ´tÙÙ¼¼¼Ñ‚¼½¼–‹Ê0““’0Ü0’0“0“’Ü’00’0Ü’–0’“’0’0Û0Ü’)Û((à(àÛììUì³…T쥥¤¥(ÛŠ*¾*…Ñ//ùù XYƒXYXY‚XXYXY†{Y{©ccöiö4ÿ‚!ÿþöÖîîALîîî„Pî„îî‰Ë 6Ä6ÄÄ6Ä6Å6ËËѸˆˆ‘œf ý„€ý€€ýƒ€ýý†Á‚"ÆJðKJKJ K„Î9°¦úØú‚ØØE´EÙ‚Ú´ÚÙ•ÚÚ´Ú´tÚÚÙt´Út´Ù٫¼¼݌Ѽ6¼‹“0““0“0Œ’“00Ü’00“’’0’…0“0’0’ŒÜÛ)Ûàààà((àˆGñGGàì)쥇ì¥ìŠŠñ¾у¸f XY„óYYXY Y{‡©ccic¨cö4ÿ‚!ÿþö„ÒÖÖî‘PîîîLîîÇîËŒËËËÝѼ¼v¼ƒ¼Â¼„v§  ó†.ÁÀýˆÁí"ÆðKJKΰ„E°ØØúƒØúØEØEÙÚÙÚƒ´ÚÙÚÙ´ÚÙÙt´ÙÙÔ¼¼Ý¼…½Ê0“0„““0’0°“’00“00Ü’0’0“00’Ü’0Ü0Ü)(ÛààFàŠññŠñÓ*…Ñ„„*ŠàŠFÛŠÛ(‚ññ чÓ.{XXYXˆYXXYYYXY Y{cö‚cö4ÿ‚!ÿþöˆibbéî„îLî‚PLƒî‚îËÅ66Ë66Ѽ‰ˆ‘n „§  §  ó„ œý€ý‹€€ýý€ýÁƒÆJŠKJKKKJKKJƒKJJK‚8J K‹JKK8K8Ï8:ØØúˆØúØØEEÙÙØ‚EEÙƒÚÚtÚ„tÚttÚ•t·ÙÙtÚÙÙuݼÝ/6ÑÑ*+â0“0‚“0’‚0Ü’0’“’0’‚0Ûà‹Šññ…*„/"tu‚.„êñ¾¾Ñ„Ñ„Ñ…Ñ„Ë/Ó.{XYX‚YXYXYƒ{Y©cöcö4ÿ‚!ÿþöŠibÖÖÀîîˆîîîîË“LËÇËÑ6ѼÝÂÂÂv‰nn ó‰ œœ—ýý€ ýÀÁÇ"JKKJKKJJKJJK†JKJKJJKJK„Ï:ØØúØE‹ÙEúØúØEEÙÚtÚtÚ‚t´Ú“´Ú´ÚÙÙ-¼¼Ýѽ¼½00“0‚““0ˆ““00’“00’”0’0’ÛààFGññ¾ÒñÒÓÓÔt†uu"t"„…„ у„œ X‡YXYYXYXYXY„{g©cö‚þþ2ÿ‚!ÿþö„ÖÒÀ‚îî…îÅˇÅ6ÅÝÝww‰…§‘§  óŽœœæýÁÀýÀýýŸý…"ƃðJKJKJK‚JJKJKJKƒÏE°úØEØúEÙÚ‚¶tÚ¶ ÚtÚوݼÝÑÑ+“ƒ0“’“…’““0’“ˆ0“0“’Ü’0’¡Ü’)ÛŠññ**¼ÓŽŽ2­¬¬ÓÔutuu#t#tt##/"Ñ"Ñ‚/gX‡YXXYXYX YXY„g©cö¨ö„cöþþ2ÿ‚!ÿþŽööibibibÒîîîîîîLîÅÅ6Å66ÝÂŒ××±wwÍÍnn ¡󂜑œˆæýý€ý€€ý„ÁÁÆÆKJKKˆJJKJKKJKJ‚KJK‚JJKƒ:9°ú…ØúØØúØEƒÙÙtÚ‡tÚ¶tÚÚƒÚƒtÚÙ ÚŠtÙŒŒÝ¼½½Ê“a‰“’“’’a’Œ“’“’“’00’0’0’ŠÜ’ÛŠñ*„ÓÒŽ¬­ƒŽÒut†"t#"/Ñ…Ñ„Ñ…ÓùYYX†YXYXX Y‡{©cöcöƒcöc ö‚þþ2ÿ‚!ÿþibˆÖÕîîîLËÅ66ļÝÂ×±×±‰±±×±CnÌ ¡#ó„œÖý„‚Æ8JƒKKJKJJK8JJKKJKJKJJKJKJKƒÏ8°ØúØúØEÙƒÚÚtÚtÚ‡ÙÚŒ¼+Ê“a’aaaaaa’a’““’0’Ž0’0’’ÜÛŠññÒŽŽ¬­ƒŽ..t„""/"у"Ñ…ч…Ñ/f{YX‚YXYŠXXœœXXXYˆ{{gccöcö‚¨cö„cbþþ2ÿ‚!ÿþ†bhÖêÁÁê‚îƒîî„îî˃6Ãã²£†²²±±wn%ó…œæÀý„Á"KJKƒÏKÏ K„ΰ¦Øú‚Øú؆ÙÚÙÚÚt ÚƒªÚ¶Ú‡´Ú-¼‹a’“a“a’““a“a“a“’“a“’“‡0’“0“0’0…’0ŠGʬ­‹3­­¬..ututtu‡""/"Ñ"/Ñ"Ñ…ÓùfYXY„œ‘œœ„XXXYˆY{{cciö‚dc4ÿ‚!ÿþŒÒÖLîÁLÁî‹îîîL˃ÄÄãƒô£²£„±±Ín!󈠑󠜗Àý‹ÆððKKJKJKJ Kˆ8K8Ï8KJJKˆJJKK8ΰBú„ØØúú؈EٴٶtÚtÚˆttÚÚtÚÚªÚªÚ’ÙÚ½a`“aaaa’aa“’‹““’“aa’““0“0‰’“0’0``¬­3­„¬Óf/t‰u"#"/Ñ/Ñ" Ñ…/ÓœYX„YXYœúœ„XXY†{gccöc ö…cöccö4ÿ‚!ÿþ‚Òhƒîƒîîƒîî‚Ë £…±±nn¡ó‡‘œDÀÀý…ÁððJK‰JK88KÎ;ŒDŠŒŒÎ9ÎJ88J8K†89°Ø°ØúƒØúúØE…´ÚÚ¶tÚŽ¶Ú¶t¶ÚªÚªªÚÚ«ªÚ«ÔŒ+aa a3aa’“’a“’““’a“a“a“ˆ0“00’“aa­„3­­3­ˆfututuu"…„/ÑÑ"Ñ‹"Ñ/f{œ{{Yœ‡œ X‘XXY{cƒöicöc†ööcicc4ÿ‚!ÿþƒÖÒÁÁêîLîîîî„LÅ¢£…ô£ôô£„±ÌÍoó ‘‘ œæÖÖÀýÆððJ8Î8ˆÎ:;;ˆBˆ„DÎÎ8JKƒÏKΰئú‹ØØúØØEÙtÚtÚtÚt‡¶tÚÚªÚ«Ú‹-ÚŒŒÙ¼¼Ê“a‚3a‚a“‰““’’““aaˆaa“’a“0“‚aa­‹¬Óuttuu#u"†Ñ"//Ñ"Ñ…/fœ‡{zXXœƒXY Ygcö b„öccb4ÿ‚!ÿþ–ÒÒLÁébÒÕÒéîîîˆîîîË¢ £‡ô££±wCó ‘‘ §œtæÀÁÁQð…;ˆˆBˆˆˆDÎ8JðJJK„JJK8KJKJ‰KK8K88°°Ø úØúØú…ØØEE¶å å¶åt¶ttÚÚ«uu««Ýݼˆx+â“a3­Ža’’“a’’“a’“’aˆa““a““a ­3­…eÓuutu‡u"uu"u"„//"ÑŽ/ÓffùfùœzœzœƒXœXY›g{cöiböcöbÒÆ,Æ"6ÆÑÓÓbccööþþ2ÿ‚!ÿþ‹bbÖÁËÁêÁÖbÖ„î‡îË£ô£ô£ô££ô£ô²Í óš óúú‘‘§ œ—Õ"ÆÎΈ‘‘§‘ƒ‘‘Œ‘DÎÎJðð¶ðð8KJKJ K‰JJKK89°°¦ úØú‰ØúØ´·t¶å 僶tÚtÚŒ«u«Ý¼¼½Êâa‡aa33­3…“’aa’‰““’a“aa†““aa“a­3 ­„¬¬fÔuÔ„"u""u"‚//Ñ/.fÓfùf{zœ‚YYˆY{gödöb’Ó"åååÆÆÓbccöþþ2ÿ‚!ÿþ bgÒÖÁÁÁÁÖÖéÁLLíîîîPîî6£ƒô£²ô£†ôÍ ¡¡ó “‘ œ‘œ.",vB§§‘§‘§‘‘¦ˆDÎÎððÆÎð‚KJK8°¦ú‚ØØú‰EØÙåå åå 制‚ÚÚtÚªÚ«-«Ý+xÊâ‹âaaaaˆ’a““’“a“‚a“aa­‡3­­¬¸Ó.ž"u#"#"",",/""/"ÑÑÓf¸f.f.ùœ.œœ„‘XY‚g©c†bdÒÑÑðŠåå"Òbbeþþ2ÿ‚!ÿþ†bcbÒÖÒÖ—ÁêêÁêLÁêêÀîîîËË¿£„ôôô£†ôô±Íonó ‘‘œD"ÔŒv§§ §‘‘‘‘¦DÎÎðªÆÆð8ðJJKJK…J8°:°ØŽ´°´´Ú·åå å åå å‚t¶Ú¤uªªÚÚ«ÚÔݼݽÊÊâa`“aaa’““a’“a“’“‚a’“…aaa†­`­ ­3 ­‰3¬­ŽÓÓ..Ó.Ó./#‚"u"Ñ„Ñ"„Ñ.ÓœœœœXœ‘XYY{{©ccöbÓÓ"å‰åÆ/ÒÒbþþ2ÿ‚!ÿþ…bffÒfbÒÖÁÁÁÁêÁÖÖÒÁîî„ÄÄã‹ô££ôô£¢£ô£…£ÌÍ¡ó ‘œ‹uŒ§n §§‘‘‘ˆˆDD-Îð--ª‡ÆððJJKJKJ„88:°E…´ÚÚ¶åÐ… Ð å 嘂åtƒtÚtÚªttuÚªÚÚuÔuݼ¼Ê`aˆ`’’aa’Œ’’’’“’“ˆ’aa`a`3­ƒ232­3­ƒ3f†..fÓ..Ó.u",/""„/"Ñ.fù œ‚Xœ‹{{gcbbf/Å" ˆåååÆÑÑ„4ÿ‚!ÿþ’ÒÒÑ6ÑÑŽbbÒÖêêÖÒÑ…/„ŠÁîîÇĽ£ô£ƒô£ô£†ÍwÌ¡¡ó ‘’ˆˆD§§ n ‘ ‘‘‘ŒˆDŒÔuututªðJK‚JKJŒð8998åQÐ Ð Ð ŠÐ Ðå å åÐåt¶ÚÚtÚÚªªÚÚ«Ú«Ú«¨,,¼G`’a’““a“a“’’a’“a““““a““’a““a““`a`a­„3­­3­’2¬¬ŽÓÓÓÓf.Ó.Óf.u‹"Ñ/""„Ñ. œ‚œ‹ggffÒ/Ñ ‡åååÆ4ÿ‚!ÿþ‡ÑÑÆÑÒŽ„…„„ÑÅÆ6ÅÑêÁî‰ËÃã¯ô£ôô£¢Š£¢£ô±C¡ ó‚‘ ‚‘‘Šˆ§  n ‘ ‘‚‘ˆˆˆDˆDDƒttuˆªÎ-ðJJK8KJð‚JðJðZ  ‚ÐÐ ƒ å å“ å tªƒÚªÚtÚÚªtÚª-Ú«ª†,,¼`a“’“’…“a“’“’“‰’a“â­`­3 ­Ž¬¬ŽfÓÓfÓÓfÓfÓ‘.."Ô"u""Ñ/Ñ/.ù œ„œœù‰./.ÑÆÆ„жJ4ÿ‚!ÿþ˜ð,ÑÑÆLË…ÅÃãô£„ô££É¢ÃÃÂCwÌ  ó‚‘ ‰ú‘§§  n  ‘ƒ§„ˆˆˆ‚Dˆ„uu««u‡«ªÆððJKƒ8ð¶ð‚¶ðJƒZ ‚  ‰Ð å Ðå åƒÚªtÚuÚÚª«,¼¼+ÊÊ““’“’“†0“’’““’“…’“a“’a‚­ ­ƒ¬3­¬‚ŽŽÓÓ.ÓÓ.„u#t"†Ô.œttEœŒùùÔƶ嶶¶4ÿ‚!ÿþ‹J¶Æ„ÇÇÁËËĢ㣲ô²ô£‚¢¢ÃÎƧC ó 󃑑…§ §  ‘…§§§‚ˆˆ‘DˆuΪƪÚuŒuu##ðƒªÆð‡JðJJQ  Ѓ ÐQ Œå å ååt¶ÚtÚtÚˆªuÚ«,¼`“a“…’a““’“’“’“‚a­3­3­¬­ŽÓŠÓÓÓÓÓÓŽ.f.Ôu"uu",.tƒÙtDœƒÔ¶„þþ2ÿ‚!ÿþûƒK¶ŠÅËî6˽¢£…ô££¢ÃÄÇ;Ãvwn§¡!ó ‘„§§§ ‘‚‘‘ˆ‰ˆˆDtð†ƪªÔ#‚ÆÆðƒðð†JððZA „ S  …Ð Ð  šÐå Qƒ‚Úåt¶tªÚÚª«ª*Ê“a’“’“’“Ž’’“’““’’a“a’“’“†’“aa`­Œ33a­33­­33­3­¤3­­¬ŽÓÓ.ÓÓffÓ.f.ÓÓ.Ó.."tt""Ôttœæœœ¶ª¶Ú¶ÚªÚ¶…Kþþ2ÿ‚!ÿþôˆÏJð ŒðÇ66⣃ô¢ ÆÂÃC‰  #ó†  §  n n‘Œ§‘‘‘§ˆˆˆˆDDªðJšððª##ªªÆƶ8ððððððJ…A j ‚  ƒÐ åŽtÚÚttÚtÚÚ«-+a’…“’“a’“‰’“’““’’“’˜“’’““’a`ââ­¬3­­3­3­3­­3­Ÿ33­332fÓ.f.ÓÓÓÓ.f.fÓÓfÓ."u"ƒ.t’Dœu¶ªttÚÚuÚ¶¶‡KûKûþþ2ÿ‚!ÿþƒûKK Œ7Ä¢££ô£†ââÇÂ;×Cn  ó ƒ§  ó ¡ ‚§§‘Ž§‰‘‘ˆˆD««8J‹JðƪÆ#ƒªÆðƒðJðŽJðJJA k  „ÐÐ    ‚Q å’t¶tÚÚtÚÝÝ‹’’“’“’a“’ƒ“’“ƒ’“a“’“’“†a“``¬­3­ˆ3­33­3­3­‰¬ÓÓfÓ‘fÓ.Ó..tttt"Ô. tœœDÚªÚtªÚÙuÚ¶¶å‚K¢ô‚þþ2ÿ‚!ÿþûKŠJKKKK„Ç77¢£ƒ¯ô£ÆÂwwC§ ó ó ¡  n § ‘‘§‘‘§‘§ƒ§‘†D--ððKJ‰ðð𪪃ƒ™ðªðððððJðJJA S  ‰ÐÐ   ‚åÐå‚tåÚˆ«ÝÑâ’’’“a’‚“a“’“a’“a“’’““’’a“†aâ`¬­¬­‚3a­a­3­ƒŽfÓšfÓÓfÓf..Ôuut"ttuu tœÚªªÚÚÙ«Ùtª¶„ûôþ4ÿ‚!ÿþ†ûÏÏJ‡KÏKKÏKÏK‡JÄÏ¢£¢£„ô¢Ã¢Ç;ÃÂCn§ ó ó¡†  n ‘ ‘„‘§‘ˆˆÚððJðJðªªƪªªðððð‡JðJ@ ƒ ‚  „  „PÐå å‹ttÚt,Ó*“’“’’“’’“’“’’“’’“a“’“…’``¬â­‚33­”33­­33­3­3­3­33¬¬ffÓœ.f.ff..Ó.u#t"t"uuutDœtututu««ÙƒÚƒÏÏûþ4ÿ‚!ÿþôû†KKJKKû†ôûû¢ûôû‡JÄÄâô£‚¢ÈÂÂw‰nn ó óƒ¡ó󡆠nn‘‘§‘‘§§†ˆDÎððJð‰ƪƪÆððJðˆJJA ƒ  ‚  ˜Ðå å傶ڪÚ,ÑÑ`““a“’““a“’“‹’““a’“’““’’“†’““`⬭3­33­3­3­3a­­3a­…¬Ž¸fÓfÓ.Ôt#tƒuutæt„Dœœ‡DÙªªÚtƒ¶ûûþ4ÿ‚!ÿþ‚ôôû‚ÏÏû‡ôþôþôôþô‡ûÏÏÞô¢²£ÇÂwwCn  ó ó¡ˆó¡ó  n§‘ƒ‘‘‘ˆC‰ˆ‰‘…ˆD-ÎJð„ªÆ‹ðððJðJðJðJ…A ”  ‡  ‚ÐÐåƒÚ„«¼½“‚a’“„’““’““„aaa‚`⃬­¬­3­‡3­­¬ŽŽfÓ˜fÓÓÓÓ.uu"tu"t"ttu.t‚Dœ†œŒÚt¶ƒôôþ4ÿ‚!ÿ þ…ôôûû¢ô þŒôôûûÏ¢û££¢ËÂÃÂÂwCÌnnó *ó‰¡ó¡¡  n‘‘‘‰ˆƒ‘„ˆDÚ-JŒððƪªªðð„PZP  „ È   ‚  Ž åÐå åtƒÚª/ÑŠ’“†’’’“’“…’“’““‚``⬎¬ŽŽ¬Ž¬¬­­3­3­3­3­’3­3­3­­22¬ŽŽfÓfÓÓÓ.tD…œÙÚtƒôôþ2ÿ‚!ÿþô…û££¢¢Ê;Ã;vwwÌn¡¡#ó¡‚óó¡ó¡‚ §‡‘‘ˆvŒƒvvˆ†DÎÚðJ†JJðÆ‚ðð„ZPA@…A@ @  È È – È ÈÈ Ðåå ååtªÝ¼â’‚’“’‹``âGâÊ+ÓŽŠ¬¬Ž¸Ó+¬¬­3 ­3­†¬¬g¸fÓ‚.u ttŠæDDttÙtÚ¶¶ƒôôþ2ÿ‚!ÿ þôƒ£¢ÊÂÃÃÂvwC§¡¡%ó¡ó‚¡ó¡‘‘vˆDŒŒÔŒŒˆ‡DDÆÎððJ‚Jð“ƒÆððð[QZA AZP   † È Èç  „ Ðå‰#*Ñ`“’“’’“‰’``++++Ž‹Ó¼ŽŽ­­¬­a­3 ­¬†Žgf.tƒttˆDæœttÙÚ¶‚Jôþ2ÿ‚!ÿ"þˆôô££¢ÃâÆÂÂwC  #óƒ¡óó¡ó‡¡ó¡¡n‘‘‹ˆvD;DŒÔ݈‰DDÎ-JðJðJˆðð„AA@ ƒ@ í ‹@ ÈÈ   Q åƒÓ*G“’““’’„`Ê`+Ó…¼ÓŽ‰/Ý/ÝÓÓŽ­3­3­ƒ3­¬­3­ˆ¬¬ŽŽÓ.uutŠDœDt¶Ú· ƒôôþ2ÿ‚!ÿ þõþ‚ôô£…¢£¢ÄÂwn óƒ¡ó¡ó‚¡¡ó‚¡¡ó¡ ‘‹§§‰‰vŒDvˆˆˆˆDˆÎ-ððJ‹ðÆJðP@ @“ A@@ A @ È  ‚@A@ @ƒ @ ‘ PQQ++a““a“’“a“¡a“ÊÊÓ*ÓÓÓ+ŽŽÓŽŽŽ¼/ÝÝÔ¼­¬­†3­­33¬­ ¬‡ŽÓ.uƒDtÚt‰ttÙÚÚå¶å‚Jôþ4ÿ‚!ÿ þ‚õõþ‚¯õ£…¢£¢Ã…ÂCnn ó„¡¡óó¡ó¡Œó¡ó¡¡ó¡ó¡¡ §‘‹ n n‘§§ŒŒDˆˆ‡DD«ªÎð Jð‰ððZ @ „ @ ‚@@ ‡@@  ƒ  @ †@@ @ È ‡ Ç66‹“™’““a’’“aÊâ¼¼/ÓÓ+ÓÓ+Ž‰//ÝÔÝ/Ó¬¬­Š3­­3¬2¬¬­¬­3¬­¬„Ž¬Ž¬Ž‹.Ó.ùùùu tª¶Ú·¶¶å·å··‚ôôþ4ÿ‚!ÿ þõþ‚õõ þ‘ôô£ô££¢¢ÃÂÃww  %ó¡ó‚¡ó¡…󠧑‘ †ó¡ó ¡‘Œˆˆœœˆ«ŒªððJðJ„ðð‹åZ @ í í @ @ í  …  …@ @@ È › QP¾G``a’’“a’’``Ê/¼ÓÒ’ÒÓÓ//Ý/ÔÓŽ¬¬3­3­3 ¬g¬Ž¬Ž¬Ž¬f¬Ž¬Ž¬xŽ‹fŽŽÓ ù„u t¶·ƒ‡õôþ4ÿ‚!ÿþõþõ þ‚£ô£„¢¢ÄCn§¡ó†¡óó¡ó¡ ó¡…óó¡óó ‚¡¡ó‚nvDŠˆDˆŒŒªð‚JJð†ZP @ @ Š@@ @ @   ‰í l@ @ @ ƒ@ l AZ ¿¾$‹`a““a“a`ÊÓÓѼ/¼ÓÓ++Ó‹¼/Ó/ÝÔÝ/ÓÓ¬­…¬3¬¬g¬Ž¬„Ž¬Ž¬Ž¬ŽŠÓÓÓÓ/.Ôù…ut‡tÚ·Ú·†·‚ôôþ4ÿ‚!ÿ þ õþ‡££ô¢£¢£…ÃÂ̧n ó¡¡ óó¡ó¡¡óó ¡óó¡ó¡ó¡…ó¡ó¡ó¡‚ ó ‚óó¡‘óó¡n§‰vŒŒDŒððJƒJJ†ðððA @ „@ A @… @  ‚@@ @‚ í @ ‹@ ZÇǾG‹`“’aa`aÊ`ÓѼ/ÓÓÓ¼ÓÓ‰¼//Ô,/./Ó­•¬¬ŽŽŽ¬ŽŽ¬¸ŽxŽŽ¸Ó ‹ÓÓ/.ÔÔ ùgù‚†tuÚ¶·†·‚†·„†··†·‚õôþ2ÿ‚!ÿ þõ‚²²õþ‚õõþ„õþôô£‹ô£¢Ã¢w§Ì  ó‚¡ó …ó¡ó¡¡óŠ¡óó¡ó¡ó¡ó¡ó„¡¡ó¡ó ó„ ó¡ó¡ó¡n ˆ--ªÎªðð JŒJðJððZ A  @  @ @ @ ›È @@AÇ÷÷¾%GŠaÛa’aGŽÓ„Ó/¼Ó‚¼Ó„¼Ó/Œ,,//Ó¬Ž­¬x¬Ž‚f¬Ž¬Ž…ÓÓÓ†¼Ý//Ô„« ùù‰uŒÚ·´·‚†·„9ôõõþ2ÿ‚!ÿþ õþ‚õõþ‘õõ£¢£¢¢£¢ô¢Ã§Cn󃡡 ó„ ¡¡ó¡ó¡ó¡ó¡ó‚  ó„ ¡¡ó¡ó¡¡§ŒvÎÆððJðJ‡ðJððZA @‡ @ @ ‚@@ ‰@ È È Èj ŠÈ@PAMË÷¾‹G`ŒŽ/ÓÑݼÓÓÓ…Ý/Ý,Ô,Š/¬Ž¬ŽŽ¸Ž†ŽŽŽ.¼Š..ÔÔu«uÔÔ ùgùŠÚÚ·¶··†·…‡ôôõõþ2ÿ‚!ÿþôþõ„²²õõ þŠõ±²±Í±Íw²„×Í ¡óƒ  ó ó ¡ƒ ó¡ó„¡ó¡ó¡‹óó¡ó¡ó ó óó „óó¡¡ó¡ó¡n§B‰;;ðÎJJðJð J„ZA‚ A ‚AA ƒ@@A „@@ @ ƒA A ƒ@ @ @ …@@ @ È È È È @@M ÷÷ñ†GŽÒ*Ý /ƒÔ,ÔÝ//¼¼/¼¬Ž¬ŽŽŽ‰¬ŽfŽÓ. Ô‘«Ô«u««u«uÔùù ùù‡Œ98¶´·† ·‡ô‚þþ2ÿ‚!ÿ þõþ†õþõ²õõþõƒ±±ÌoŠÍwô¢wo ó† ¡¡ó ó ‡ó ¡¡óó¡ ‡ó  óó ¡ó ‚ó ó‚¡¡ó‚¡¡ó’ ón§;ŒÚððððJJððJJˆ!Z[@ A A† AAî @ †@È È @ í @ …l @@  †È j È ŒAPËñ*ññŽÒ/ÝÝ/†Ý/,ÔÝÝÔ„/ÓˆÓŽ¬ŽŽÒŽÓŽ¡ÓÓÔÝÔ«Ô«u«u«-««u«u««u«uuu¸ùˆÚÚÚ9·†·‡ÏûôâÃ4ÿ‚!ÿþõþõƒ²þõþ‰õõ²±ÍÍÌÌo¡‹Ì±±ô¢Cn  ó ¡ ¡ óƒ  ó ¡„óó  n‡  óó ¡ó¡…óó¡¡ó¡–ó¡óó¡ó¡ §Cv;ÎðJððJððJŠAZ@AAPAA A A @ˆ @Z Z@@ @ „A@ @ @ “É È@@ l j È ÈÈ È Ȇ È @MMñ+ÓÝÝÔÝ,Ô,Ô,ÔݼÝÝ /—ŽŽÓŽŽÓŽŽfÒ¼/ÔÔu««u«†-««u«u«„u«Ôu„ù ùˆŒŒ9 ·†·Ïû‚¢ô4ÿ‚!ÿþõ‚²² õ…±Í±Ìo¡‹Í±±ô¢ô±nó ó‚  ¡ ‚¡¡ó„ ó  ó‚  ¡‡ nn‰n̉n„  ó ó¡ó„¡¡óó¡ó¡‡ó  §vB;ÎðƒJJ[A A†PA AA @ˆA @ @A A „@ A @… @@È „A @@Aƒ@É@ ƒÈ È ÈçȆ @!¾¾Ž/ÝÔ,Ô,ÔÔÝÔÝÝÔÔÝ,,/ÓŽŽÓŽÓÔÔ««-««u-„u««-«‡uuÔ«ÔÔ‚ù¸ù…¸ùùŒ9·‚††·‡99ûÏôûô4ÿ‚!ÿþõ²õ²ˆõ²õ²±ÍÍo¡‡ó¡¡Í±²²„wÌ  ó ‡¡ óó ó¡ó n̈nÌnn  ó ¡…ó¡¡ó¡ó†¡ó¡¡óó¡‹ n§CˆBCvŒ;ðJƒA A– A P A@@AA @ @ A  @ APA †ÈÈ È È‚ ç È— @÷MñÓÝ//,ÝÔÝ.ÝÝ/Ý//,u,«Ôu#«u//ŽŽŽŽÓ„/«--«†--u««-«‘-««u«u«uÔuÔÔ¸ ù ùgù„¸Ù9 ·„‡Ï9ûôþ4ÿ‚!ÿþõƒ²²õ ²Ž±ÍÍo¡¡ó¡óó¡ÌÍÍ„wÌ¡ ó‹  ¡ ¡¡ ¡¡ó ó nnÌ̉‰nnÌn ó¡ƒó¡¡ó•¡ó¡¡ó¡ó¡ó¡óó  n §¦vCJAˆ A AA APAŽ AAZ@A@  @ Š@ @ @ @ AP›QÇ‚ÇQP@@ @@ ÈÈ È È çÈÈç çÈ„M¾…/ŽÔÝÝÔÝÝÝÔ,Ô«u«•,/ÝÓŽŽŽÓÓÝÝÔ-«--««-‚««-«„uu««ÔˆÔùùˆ ù¸ù‰ù„‰¸DÎ ·…‡ûÏôõþ2ÿ‚!ÿþõ²õ„²ÍÌÌ¡ó¡ó¡oo±£±CÌo¡ó ¡ ó‡  n̉ÌÌn’‰nÌÌn  ¡óó¡¡óó¡¡óó¡ó¡ó¡  ónBCÆJJÅAPAPA„ AP A A AAZZA @A @ @„ @@ @PǃPÇQƒQP@A@ÈÈ@É ȇç çÈÈç ÈçÈ’ M…ÑÝ/¼/¼Ý¼ÝÝ,,# «u«ÝÝ.Ó¼ÓÓ¼--Ú-ƒÚ--«‚u-«„uŒ-«ÔƒÝùˆùùgùùgùŒgù¸¸Œ·¶··†·†·„9ûûôþ2ÿ‚!ÿþ†õõ²²õ²õ†²²±ÌÍo¡™óó¡óó¡¡ÌͱwwCÍnó ó¡¡óó¡¡󌠠nn̉̉̉̉n ˆ¡¡ó¡¡ó¡ó¡ó…¡ó¡ó¡óŒ ó ó §¦;ÎððAˆ AP AAP A‡ AA Z ‚É@ ‡@PP‚‚PQP„QPAA ƒÈÈ Ȇ ççÈÈçÈ –@@ A AÇËËÑ///Ý/ÔÔ««ª«ª«Žª««u«,ÝÔ//ÝÝ/,-«-„««--«-«-«u«u«Ôu-Ô„Œ¸ ùœ ùgùƒŒŒ·†‡·Ïô¢ôþ2ÿ‚!ÿþ…²²õõþõ‡²õ±ÍÌÌo¡ó¡ó¡oÍͱCwÌ  ó‚n  nƒÌnn ƒó¡ó ¡ó„¡¡ó¡ó ˆ§§;Îð[ZA AŠ A P AAZ … @   ‡P‚QÇPPQP„A @ È„çÈÈçÈ…çÈÈ È@AˆîPÇÇ"Ѽ¼/ƒÔÔu«‚uª«‡ª««ªuªu«Ž-««--Ú«--«u«--«‚-Ú«‚uuÔˆÔ«¸ù„Ú9·„¶99ûôþ2ÿ‚!ÿþ‚õþõˆ²±ÍÌo¡¡ó¡‹oÌÌͱ±w±no¡ó ó‚  n… o¡ ¡ ƒ¡  ¡‰ó¡ó¡ó¡¡ó¡ Šnn§‰v;;Æ![†ZPZAA A¥ AZZQZA @ @ @ @@ @ @PAPÇQƒPQƒÇ‚ÇQQƒA ȃçÈ  ȃ@È  @‹APPÑ+¼,«…-«--«-…«--««-«„ÔÔÔ‡Ý݈ùùŒÝ9¶··Ï9ûõþ4ÿ‚!ÿþõ„±ÍÍÌoƒ¡oo¡ˆoÌw±Cnn¡ó n„o o nƒono o o¡ó¡…ó ¡  n§CCððJ!AZ A† ZÐZZ@ †@ È@ @ „PPQ‚Qƒƒ‚Q ƒŽåPP k È APPA È… È @…ZÇǃÑÓƒ/,«ª«„-«uª«ª«ƒ--u-‚ª«-ˆ«u--«u«-«-Ô†ÝÔù¸ù.#ƒÚ8··KÏûôôþ4ÿ‚!ÿ þõþ‚õþõ‚±± ÍÌo‡ÌÍwÍno¡ó  ó‡ nn nno ‰n n o o o †o o o¡o‰Ìoo¡ óó¡ó¡— ¡ ¡  ¡nn§nC;ÎÎ[[PA A APZZ @@ @ È @ –@@ @PPÇǃƒQƒåt僃tƒ‚t‚ƒƒQP@Èž@PAQPAP@ È È È @@APƒ#ÑÓ¼/Ý,«‚ª- «-ƒ«--‚««-‡«-«Ô##,ƒù¸ ù¸ ùgù‘/Æ,ÆÆÚ¶99Kûô¢ôþ4ÿ‚!ÿþ„õõ²õþõþõ‚þþõˆ²²õ²²õ²²±‚ÍÌoÍ‚n ¡ ó  ó’ noo  noo  oonon o no† ó¡ó  ¡‚o ¡—o §BC;ÎÎÆð![Ç[AAPZ AZ„ @ @” È@@ @ @ ‚QƒƒQƒå‚ƒ‚ƒ‡å¶å¶åƒåƒŽAA APPÇQPAÈŠ AAPQƒƒ«ÝÓˆÝÝÔ««-«ª«u«„t-«,«,«-†Ú--Ú-ª-Ú-«ŠªÆƒÔˆùˆ ù„gù¸ùŠÝÝ,Ǫ·„‡9ûûôõ4ÿ‚!ÿþŒûû¢ôõþõþþõþõþ„õõþõþƒõõþõƒ²²õ²ƒ±ÍÌõn¡¡ó ó o ono n o ¡o oƒ no ‡oo  oo¡oˆnn ¡¡ó ¡ ¡ ¡ ‡nC¦v;ðÎð‡[[AZA„Z @  „@  „@ îP‚‚傶‚£ƒtå‚傃Q PPQQ‚QQƒQQPP@ AAPQuƒu/Ó…//#«u«ª«ˆuu#«u««-«-«-«„-Ú««-«‹-ª««ùùùŽ¸Ý#"Æƶ·„9988Ï‚õþ2ÿ‚!ÿþ†KÏÏôõþõþõþõþ õ†²²±±Ío¡o…Ìnn ¡óƒ  nóo„ o n o„ o o ˆnn  oo  o‰Ìo¡ ¡¡ ¡¡ ¡ n–§ÌC;ÄÎÄððÎððAPAA @  „È È @… A ‚ææ‚ttƒ‹‚å‚QQ‚ƒQQQP“A@A@APPƒƒ#ª,ݼ/ÓÓ/Ô«ª «Œª««uu«u««--ª-„Ú«--«-«-Ú-«‰--ÔÔùù‡¸./Ô,#QQ##ªÚ··¶·9·„9¶þþ2ÿ‚!ÿþ9·Kôõþþõþõõþþõõþõ²ƒ±ÍÍo‰¡ooÌoÌÌ  ó… Y‘nó“ oonn o oono¡o¡o¡  o† o o  o¡o¡ƒoo o›noonoonn§vÎÎð7JððÎÆÅQA A@ @@È@ A A@ PP‚‚ææŽt‚ƒƒ‚‚ƒƒƒƒ‚ƒQZPAPAǃ#ªª«#uÝÑ/Ô«‰-««u«,««u«†u««--Ú-ª-Ú-Ú-„ª--Ú-ˆÚ-Œ-ˆùˆ ù•,ÆÆÅQQÆ/ÝÔÔÚ8·‡9·¶··õþ2ÿ‚!ÿþ‡¶¶9ûõþþ õ þ‚õþõŠ²õ±²±ÌÍ¡¡no…Ìon¡ ó† ‘ù‘‘ó o‚  oƒ o o‡ o o¡o¡ o‚¡o¡oÌÍÌ“C;ÄÄJÄÎðÎð!ÇA A ƒÈ Z…ZÐ…åQ‚æ…tƒ„åQƒQAPAPªƒªuu#u,,/,„u««ª «ª«-«-ˆ«-Ú-ª««-«‰-«-««--««-ƒÔŒ…ùœùùù“¸¸Ý/#ååååÆ",‡ªªÚ·¶·8¶‚þþ2ÿ‚!ÿþ‡¶¶Ïôôþõþõþõ²²±ÍÌÌ¡onooÌnnoó ó ‘ùˆœn n ono‹¡o¡oo¡o¡o  o… o¡o¡ oƒ¡¡ó¡… noÌÌÍ™CÍvÎÆJ7ðÆðÄJÄðÅ[A È @ ŠÐQƒæ‚——æ…ttªƒ†QQƒQƒQPQª‚u#u…##ÑÑ# «Šª«u««ªª««-«„--««-«-«-«ƒ-«-«Š-ªÔÔùùù¡,ÆååQQåÐåååÆÆ#ƒÆðÚ8Ú¶¶ð4ÿ‚ÿ‚þþÿ‚þþÿþÿþ‰JÏû¢ôõþõˆ²±²ÍÌÌ¡¡o…  óó ó ó¡¡ ‘œÖ„Óùn o¡ o…¡o o¡o¡oÌoƒÌoo¡¢oÌoÍͱw×±wwvÂÄ [ÅÆððÆ[ZA@ ȃZ  ˆQ æ—æ…—."ƒ‹ƒƒÇQPǃƒ##uŒ«,ÔÑ/ÑÑ,uª«- «„#-«-«„--««-«-«-«-„ù†Ô##•ååÆ,ÆÚÆðåå¶4ÿ‚ÿ‚þþÿ‰þþÿÿþþÿþþÿþÐðJKÏÃÃÂÂò²õ²õ²„±±ÍÌ¡ƒó ó Y ó‘‘œêÁÖÀê.‰‘„ÌoƒÌoÌo¡onCw×ýÃÄ7Å [[M[ŽM[M[ÇÇ[ðÅA  „@ AAZZ…åæ—æfæƒhææ‡"tªƒƒªåƒ„åQQƒu«#œ"Ñ"Ñ„/ÑÝÝÔ#u#uu««ª««uu«uu««-«‚ªª«-«‚--«„-««ª-ˆu-«-«ÔÔù†.QÐZІÐÐÐ ЄÐåˆQååÐ4ÿ‚ÿ‚þþÿ‚þþÿ‚þþ ÿþЇQå6Æݲõ²õ²õ²õ²‰±ÍÌÌo¡  ¡ ƒY  󜠠‘ùù„ÁíÁHH„...ÖÁÁ‰‰o‚n̉‚ÌÌo©¡ooÍ××Ä77Å!![[A@[AA[A[@[MZ[[ÇÆÇZAA Z ZA Z‚‚æ—æ…—ææ——æ†hæ.æ„t‚"ƒƒˆu#u"uu,#щ*/Ñ/Ô,u#u«ƒª««u «-«‡-Ú-«-Ú-«…-ÚÔù„/¿!†òò!ò!ò!‹[[ÐÐÐÐ4ÿ‚ÿ‚þþÿ‚þþÿ‚þþ ÿþÐ î‚Á"ÔÝÂ×±ô²õ‚²² õ²õŠ²õõ²õ²±ÍÍÌ¡„ó¡  ó ”ó ‘nù.ééH ™.ÌnÌoÌoÌonÌÌnÌoÌoÌoÌ̉‰¸/ÓêÓ‰‰̇ooÌwĽ7![ƒZ@[AŠMAMM[Ç[ Z Z‰‚æ—挗æ—æÕæÖÖƒ„‚"ƃ#ƒª#,Ô,,",,ÑÑ/ц/Ñ/,uu«ƒ-«-«-«…u«--Ú-«-«-„«ŒÔùŠÑàqá||}}|‰qqW'&!ÐЉÐÐÐþþ2ÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ þŠÐÐ ””ííÔÂ××±²²õ²õ²²õõ²õ²õ•²²õõ²õõ²õ²±±ÍÌ¡o¡¡ó¡ó¡›ó ó  ‘‘.ÖêÀÁÀé홆íÁê.¸ˆ‰ƒwˆ¸‰‹¸//„LL길‰̇w½77s!!7‡Þ7![[A@A[ƒÅZ‚Zƒƒæ—惗ææ—æææ"ƒ‰##uu##«,/ Ñ…/Ñ/,,«ª«-«‰ª««--««--«-«- «‡-«ÔÔ/ù‰/NONqq}…qW&!ZЂþþ2ÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ þ„ í”þ„Á..þ²þ²õþ„õõ²²þõ²þo¡þ„¡ó¡ þ„„ÁÁþÁÀþ„€€íþ„™.þ„‰¸.þ„‰¸v¸þ„H•lmþÌþ„!!7ÞþÞ!þAþ„[[þ„ZZþZþ„ZZþ„ææþæþæþæþ„ÁËþ„ª#«#þ„ÝÑ/Ñþ„ÑѾÑþ„«uª«þ-«þ„«--«þ«-þ«-þ„«-«#þùþùþ„ù.þ„O&O}þ„}}|&þÐþÐþ2ÿ‚ÿ‚þþÿ‚þþÿ‚þþÿ þÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿ‚þþ3ÿ‚ÿ‚þþÿ‚þþÿ‚þþ ÿþÿÿÿÿ‚ÿ‚þþÿ‚þþÿ‚þþ ÿþÿÿÿÿ„ÿÿþÿ…þþÿþþÿþÿÿÿÿ‚ÿ‚þþ ÿþÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚ÿ‚þþ ÿþÿÿÿÿ‚ÿ‚þþ ÿþÿÿÿÿ‚ÿ‚þþ ÿþÿÿÿÿ‚ÿ‚þþ ÿþÿÿÿÿ‚ÿ‚þþ ÿþÿÿÿÿ‚ÿ‚þþ ÿþÿÿÿÿ‚ÿ‚þþ ÿþÿÿÿÿ‚ÿ‚þþ ÿþÿÿÿÿ‚ÿ‚þþ ÿ þÿÿÿÿ‚ÿ‚þþ ÿ þÿÿÿÿ‚ÿþÿþÿÿÿÿ‚ÿþÿÿÿÿ‚ÿþÿÿÿÿ‚ ÿþÿÿÿÿ‚ ÿþÿÿÿÿ‚ ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚!ÿþÿÿÿÿ‚"ÿþÿÿÿÿ‚"ÿþÿÿÿÿ‚"ÿþÿÿÿÿ‚ÿÿÿ9ÿ‚ÿÿÿ9ÿ‚ÌÃlpÐÀ;}%}m mPhiU\c80s""e&&xx$||0D€ Eho m-X.*L*8X8P33b(*jŠŠ%‘ŒDŒ’2’‰ˆ]vyH€€HH@H( ( ( %%†$$@3‘;;†::,‘‘*„„4H5@l…|lsxRO`0`(88**Œ4[]8QNUZŽR]~0c0%g)0h2`S[NH_HtDty3y&t &q=0+FD @H€x<{D+|<!DP DSC+C %V:W<p p0V&SMM>Q<<ˆŠrpnY@P@uu&bh;Z<9P=HHzHHˆ|ˆˆˆˆxˆ@YBP…th0i(XŠYJK„„x yfP,€0!$}Œ‹{|(p rcQ ˆ\]l lUz\LtMˆ ˆzzˆˆJLLˆz€x$Y\TJˆ(d g06T--|XXXL[XCCˆˆyy8Dl8CHSSŽ00Z8P89mm6Rr……<U!8U#D#4V0T$REL\2\l55445$##3$,,<<7nX9j<1b`‘[[6"ˆF>$:yy6PIŽ"ŽUuuV$ffl} h,cŽc eueor˜k?}xxxppp^xp@@@8F8```––ˆ((( 888000€€ÿÿÿhghPPPHHHÿÿÿøøøßßßýýýýýýýýýýýýýýýýYý÷[ýÿÿýýý÷\ýÿÿýýý÷]ýÿÿýýý÷^ýÿÿýýý÷_ýÿÿýýý÷`ýÿÿýýý„÷ýý÷^ýÿÿýýý÷ý÷Xýÿÿýýý÷ý ÷SýÿÿýKý‚÷÷2ý÷ý ÷Sý ÿ÷ÿ†÷÷ÿÿ÷÷ÿƒ÷ÿÿ÷ÿ‚÷÷ÿ÷ƒÿ÷÷ÿƒ÷ÿÿ÷ÿ‚÷÷ÿ÷ÿ‚÷÷ÿƒ÷ÿÿ÷ÿ‚÷÷ ÿýMý‚÷÷/ý÷ ý÷Tý ÿ÷ÿ÷÷ÿ÷ÿÿ÷ÿÿ÷ÿÿ÷ÿ„÷ÿÿ÷ÿ÷ ÿ÷ÿŠ÷ÿÿ÷ÿÿ÷ÿÿ÷ÿ„÷ÿÿ÷ÿ÷ ÿ÷ÿŠ÷ÿÿ÷ÿÿ÷ÿÿ÷ÿ„÷ÿÿ÷ ÿýOý‚÷÷,ý÷ ý÷Tý ÿƒ÷ÿ÷ÿ„÷ÿÿ÷ÿ÷ÿ÷ ÿ÷ ÿ÷ÿ„÷ÿÿ÷ÿ÷ÿ÷ ÿ÷ ÿ÷ÿ„÷ÿÿ÷ÿ÷ÿ÷ÿýQý‚÷÷)ý÷ý÷ƒý÷÷Rý ÿƒ÷ÿ÷ÿ‚÷÷ÿ÷ÿ÷ÿ÷ ÿ÷ ÿ÷ÿ‚÷÷ÿ÷ÿ÷ÿ÷ ÿ÷ÿƒ÷ÿ÷ÿ‚÷÷ÿ÷ÿ÷ÿ÷ ÿýOý÷ý‚÷÷&ý÷ý‚÷÷ý÷Qý ÿ÷ÿ‡÷ÿÿ÷ÿÿ÷ÿ‡÷ÿÿ÷ÿÿ÷ÿ÷ ÿ÷ÿ‡÷ÿÿ÷ÿÿ÷ÿ‡÷ÿÿ÷ÿÿ÷ÿ÷ ÿƒ÷ÿ÷ÿ‡÷ÿÿ÷ÿÿ÷ÿ‡÷ÿÿ÷ÿÿ÷ ÿýMý‚÷÷ý‚÷÷#ý÷ý÷ý‚÷÷Oý ÿƒ÷ÿ÷ÿ‚÷÷ÿƒ÷ÿÿ÷ÿ‚÷÷ÿ÷ ÿ÷ÿ‚÷÷ÿƒ÷ÿÿ÷ÿ‚÷÷ÿ÷ ÿ÷ÿ†÷÷ÿÿ÷÷ÿƒ÷ÿÿ÷ÿ‚÷÷ ÿýLý÷ý‚÷÷ ý÷ý‚÷÷Mý ÿ÷ÿ‚÷÷)ÿ‚÷÷$ÿ÷ÿ‚÷÷ÿýKý÷ ý‚÷÷ý÷ý‚÷÷Ký ÿ÷ÿ‚÷÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿýJý÷ ý‚÷÷ý÷!ý‚÷÷IýÿÿýHý÷ý‚÷÷ý÷$ý‚÷÷GýÿÿýGý÷ý‚÷÷ý÷'ý‚÷÷EýÿÿýGý÷ý‚÷÷ý÷*ý‚÷÷CýÿÿýHý÷ý‚÷÷ý÷-ý÷BýÿÿýIý÷ý‚÷÷ ý÷/ý‚÷÷@ýÿÿýHý…÷ýý÷÷ý‚÷÷ý÷2ý‚÷÷>ýÿÿýGý÷!ý‚÷÷ý÷5ý‚÷÷<ýÿÿýGý÷`ý‚÷÷:ýÿÿýFý÷cý‚÷÷ýýýý÷(ý‚ûû<ý‚÷÷ýýýý÷'ýüûž<ý‚÷÷ýý~ý÷'ý‡üüžûžûž=ý÷ýý|ý÷(ý„éûûžû‚žû<ý‚÷÷ýýzý÷'ýüƒûûžûƒžûñ<ý‚÷÷ýýwý÷'ý„éüüžûžû„žïïé<ý‚÷÷ýýtý÷'ýüŽûžûžûžûžüóóüûž<ý‚÷÷ýýrý÷'ýüƒûûžûŠžûéöñüûûžû<ý‚÷÷ýýoý÷'ýüûžû…žôöðžûƒžûû<ý‚÷÷ýýlý÷'ý‡ééüéüüžûžû…ô÷ôûžûžû<ý‚÷÷ýýjý÷&ý‚üéü—žûžûžûžûžóöòžûžûžûžûžûë<ý÷ýýhý÷'ýƒéüéüûžû…žûóïüûžû…žûûžú<ý‚÷÷ýýeý÷'ýéüžûžû…üïóüžûžû†žûëúìj<ý‚÷÷ýýcý÷&ýŠéüééüüéüûžû‰žûûòïñûûžûžû‡žëçjìjú<ý‚÷÷ýý`ý÷&ýé‚üéüžžûžûžûžûô÷ôûžûžûžûžûžûúæìjìúúë<ý‚÷÷ýý]ý÷'ýé…üéüüžûžû…žñ÷ôžûžûžûžëõjìõúëúõì<ý‚÷÷ýý[ý÷&ý…ééüééü‚ûžûžû…ñöéûžûžûŽžžúõìjõëúújjìç<ý‚÷÷ýýXý÷&ý†éòééüéüƒûûžû‰žûûïóéûûžûžûëëìjìçúëçõìjçëú<ý‚÷÷ýýUý÷'ýòéü¨ûûžûžûžûžéïóûûžûžûžûžûžëújìjçëúçìjjúúëæj<ý÷ýýTý÷&ý„òééüé…üéüüžûžû…òöðûžûžû•žûúçìjìúúëæjìõúëúæììõ;ý‚÷÷ýýQý÷&ýòé‚üéüƒûûžû‰žûûðöôûûžûžûžëæjìjúëúæìjõú†jjìçúë;ý‚÷÷ýýNý÷&ýƒòéòé‚üéüûžû…žûñ÷òûžûžû–úæìjjëúëõjìæúëçjìjçëúç<ý‚÷÷ýýKý÷'ýé‚òüéü¯žûžûžûžûžóïòžûžûžûžûžûžëjììõúëúõìjæëúçìjjçúëõìì<ý‚÷÷ýýIý÷&ýòééòééüééüüéüûžû‰žûûüïóüûžûžûœžžúììjæëúújììçëëæjìõúëúõìjæë<ý‚÷÷ýýFý÷&ý„òòéòé‚üéüƒûûžû…žûéöñûžûžûëúìjìçúëçjìjçëúçìjjëúújjìçëëæ<ý‚÷÷ýýCý÷&ýò‚éòé„üéüüûžû…žôöðžûžû¢žûûëçjìjúëëçìjjúúëæììõúëújìjçëúæìj<ý‚÷÷ýýAý÷&ýòéüéü¸ûžûžûžûžûð÷òûžûžûžûžûžûúçìjìúúëõjìõúëúõìjõëúúìjìëúëõjìæë<ý÷ýý?ý÷&ýòé…òééüéüƒûûžû‰žûûóöòûûžûžû¤žëõììjúëúõìjõëúújjìæúëçììjúëúõìjæëëç;ý‚÷÷ýý<ý÷&ýòƒééòéüûžû…žûóïéûžû©žûûžúõìjjëúëjjìæúëçõìjçëúçìjjëúëjììçúëæjì;ý‚÷÷ýý`ýôò…éòééüé…üéüüžûžû…éöóüžûžû’žûëúìjìæúëúõìjçëúúj•úúëæjìõúëújìjçëúæìjëö;ý‚÷÷ýý^ýƒòòéòé‚üéüÀûûžûžûžûžòïñûûžûžûžûžûžëújìjæëúçjjìçúëæììõçëúæìjõëúúìjìúúëõjìûï÷<ý‚÷÷ýý[ý‚òôòé‚üéüûžû…žûô÷ôûžûžû‚úúì£úúëæjìjçëúæìjjëúëjjìçëëçjìjçëúõìjüö÷<ý‚÷÷ýýXý‚òôòé‚òüéüžûžû…žñöôžûžû£žûûëæjìjçëúçìjjúúëæjìõúëçjìjçëúçìjõúj‚òö÷‚ïû<ý‚÷÷ýýUýƒòôôòéòééüééüüéüûžûžû…óöòûžûžû©žûúæìjjúúëõjìõúëúæìjõëúúìjjúúëæjìæúëçõìõò÷„ïžëú<ý÷ýýTý‰ôòôòòéòéòé‚üéü£žûžûžûžûüïóéžûžûžûžûžûžúõjìõúëúõìjõú˜jjìæúëújìjúëúõìjõëúçìjæñ÷†ñžúëõj;ý‚÷÷ýýQýƒðòôò‚éòé„üéüüûžû…žòïñüûžû«žûûžújììõëúëjjìæúëçjìjæëúçìjìëúëjjìçúëæììçñ÷ðë„õìjç;ý‚÷÷ýýNý…ðôôòôòéüéü‚ûžûžû…òöðûžûžû’žûëëìjìçúëçõìjçëúçj•çúëæjìõúëúõìjçëúæìjúï÷Šôëúëjjìúúë;ý‚÷÷ýýKý…ðôôòôòˆéòéòééüéü„éûûžû‰žûûðöôûûžûžû©žëújìjçëúújjìúúëçjìõúëúæìjõëúëjjìúúëæjìëï÷öòúëújìjúëúõì;ý‚÷÷ýýIý„ôôòôòéòéüÀûûžûžûžûžûñ÷òûžûžûžûžûžûúçìjìúúëæjìjçëúçìjjëúúõjìæúëçjìjçëëæìjžö÷Žüëúëìjìëúújjìú;ý‚÷÷ýýý÷‚ýý÷ýƒ÷ýý÷ý÷!ýô‚òôò…éòééüé…üéüüžûžû„ïïéžûžû«žûžëæjììúëúæìjjúúëæjìõúëújìjæëúçìjjúúëõììüö÷‘öüúëújìjúëçjìjçëú;ý‚÷÷ýýý÷ý÷ý‡÷ýý÷ýý÷ý†÷÷ýý÷÷ýôƒðòôòé‚üéüƒûûžû‰žûûéïóüûžûžûªžžúæìjjúúëõjìõúëúõìjõëëúìjjúúëæjìõúëçjìõéö÷Žöûëúçìjjúëújjõúì<ý‚÷÷ýýý÷ ý„÷ýý÷ý÷ý÷#ýˆðôôðôôòôò‚éòé‚üéüƒûûžû‰žûòöñüûûžûžûëëjììæëëúõììæëúúj–æúëújìjëëúæìjõëúújjõòö÷”ïûëëæjìæúëçjìæúëçjü÷<ý÷dý÷ýý‚÷÷ý…÷÷ýý÷ý÷ý÷#ýðô‚òôòé‚òüéüžûžûžûžûžôöðžûžûžûžûžûžžújìjæúŸjjìçúëçjìjæëúçìjìëúëjjìæúëçjìæð÷“óžëëæìjæëúçìjõëúçjé÷;ý‚÷÷`ý‚÷÷ýý÷ý÷ý÷ý÷ý÷ý‡ðôðôôòôòŽééòééüééüüéüûžûžû…ð÷ôûžûžûªžûëúìjìçúëçjìjçëúúìjjúúëæjìjúëúõìjæëúçììæñ÷“ñžúëõjìçúëæjìæúëæõò÷‚ôj;ý‚÷÷\ý÷ýý÷ý‚÷÷ý÷ý÷ý÷ý÷ýƒðôðô‚òôò‚éòé‚üéüƒûûžû‰žûûóöòûûžûžû©žëçjìjçëúçjjìçëëæjìõçëúæìjõëúëjjìçëëæjìúó÷”öðëëújìjçëëæìjæëúæõð÷„éììç;ý‚÷÷Xý÷ý!ý÷ý÷ýƒ÷ýý÷ý÷ýƒðôðôƒðôôò„éòéòé„üéüüûžû…žüóïéûžûžû¨úçìjìúëëæjìjçëëçìjõëúëõjìæúëújììçëúæìjúï÷“òëúëjjìúúëõjìçúëææð÷†üjìúúë;ý‚÷÷Tý÷ý"ý÷5ý‚ôðô…òôòôéòéüéü£žûžûžûžûüïóüžûžûžûžûžûžëõjìjúëúæìjõú™õjìõúëújìjæëúúìjìúúëõjìžï÷Ÿöòúëújììúëúõìjæëúææñ÷÷öžìjçëúõõ;ý‚÷÷Pý÷ý$ý÷ý÷*ýôð†ôðôôòôòé…òééüéü„éûûžû‰žûûòïñûûžûžûªžžúõìjõúúëõjìæúëúæìjõëëúìjjúúëçjìõúëúõìjžö÷Šéëúëjjìúëëj†çúëõæñ÷Šújìúúëõæü÷ý ý÷ýý÷ý÷)ýŠððôðôðôôòôòƒééòéüûžû…žûð÷ôûžûžû¡ëúìjìæúëúõìjæëúújjìæúëçjìjúëúæìjõúj‚éö÷£öüúëçjìjúëúõìjçëúõçï÷÷öçììúëúõæòö÷÷ý ý÷ýWýð‚ôðôò…éòéòüé…üéüüžûžû…žó÷ôžûžûžûûëújìjæëëújjìçúëçjìjçëúúìjjë‹õjìæúëújìõò÷ˆöûëëúìjõújújëï÷÷öæjìëúúõçò÷ý ý÷ýWý…ñôðôðôˆòôòòéòéòé‚üéüÀûûžûžûžûžûóöéûžûžûžûžûžûúúìjìúúëçjìjçëúçìjjçúëæjìjúëúõìjæëúçjjõô÷ ïûúëçjìõúëçjìõúëçjëï÷÷ïõìjúëçõæô÷‚ðæýý…÷ýý÷÷ýWýñððôððôôðôôòôòé‚üéüƒûûžû‰žûüïóéûûžûžû©žëæjìjúëúçjjìúúëæjìõçëúæìjjëúëjjìçúëæjìæð÷—óžëúæìjõëúçìjõëúúìûö÷÷öj†ëúúõúð÷„ðæëúýý÷ý÷ýVýñððôðôðôðôôòôòé‚òüéüžûžû„žòïóûžû¬žûûžúæìjìúëëæjìõçëúçìjjëúúõjìõúëújìjçëúçìjçó÷“ðžúëõjìçúëæjìõúëçjû÷Šïõìõëëçõçñ÷†ôçúëjì4ý÷ýƒ÷ýý÷ý‚÷ý÷ý÷-ý÷ý[ýñð‡ôðôôòôôòéòééüééüüéüûžûžû…ôöðûžûžû«žûžëjjìõúëúæìjõúúëæjìõúëúõìjæëúújjìúúëæììúï÷“ðëëúõìjçëúæìjõëúçjé÷Šñjjõëúçõëñ÷ˆòçëújìõó3ý÷ý„÷ýý÷ý†÷ýý÷ý÷ý†÷÷ýý÷÷+ý÷ý\ýð‚ôðôˆòôòòéòéòé‚üéüÀžûžûžûžûžñöôžûžûžûžûžûžëújìjõëúëõjìæúëúõìjõëëúìjìçúëçjìjúëúõìjëï÷”öòëúëjjìçëëõjìæúëæõò÷Šôjìæúëææëï÷éú†ìjjó÷÷1ý÷ý÷ý‡÷ýý÷ýý÷ý÷/ý÷ý\ýˆñððñððôðô‚òôò‚éòé„üéüüûžû…žûñöòûžûžûžëëìjìçúëúõìjæëúújjìæúëújìjúëúçjˆúëëõjìžï÷”öòúëújìjçëúõìjæëúæõô÷Šòjjæëúææëï÷ˆéçëújìõó÷0ý÷ý÷ý…÷÷ýý÷ý÷ý÷.ý÷ý8ý÷#ýˆðñðñððôðô…ðòôòôòéüéüžûžû„óïòžûžû¬žûûëçjìjçëëújjìçúëçjìjæëúúìjìëúëõjìõúëúõììûö÷”öüëúëìjìúúëõjìçëëõæð÷Šüjìçúëõæžï÷ûú„ìjõï÷‚óž/ýƒ÷ý÷ý÷ý÷ý÷ý÷(ý÷ý8ý÷#ý‡ññðñððôð†ôðôôòôòˆéòéòééüéü„éûûžû‰žûûéïïüûžûžû¦žûúçìjìúúëçjìjçëúúìjjúúëæjìjúëúõìjæëúúj‚éö÷¡öüúëújìjúëúõìjçëúõæñ÷÷öûìjçëúõæûï÷ˆûúëújìçï÷„ïëëž.ý÷ý‚÷÷ý÷ý÷ý÷ý÷'ý÷ý8ý÷$ýñð‚ôðô‚òôòéòéüÀûžûžûžûžûòöñüžûžûžûžûžûžúæjìjúëúæìjìçúëæjìõçëúæìjjëúëjjìæëëçjìõò÷ˆöûëúçìjjújúƒõçñ÷Šëjìúúëjæžö÷ˆžëúúìjçö÷†ñžúû÷÷+ýƒ÷ý÷ý÷ý‚÷ý÷ý÷'ý÷ý9ý÷#ýñð‚ôðô‚òôò…éòééüé…üéüüžûžû…žðöðžûžû¬žûûžúõììjëúëõjìõçëúæìjjëúëõjìõúëúõìjæëúçìjæð÷¡óûúëæjìõúëçjìõúëúõúï÷÷öúìjúëúõæüö÷‰ïëúëçjìëö÷„ñëúû÷)ý÷ý÷?ý÷ý9ý÷#ýƒóññð…ñôðôðô‚òôòéƒüééü‚ûžûžû…ð÷ôûžûžûžûëëjjìõúëëõìjõú™õjìõúëúõìjõëúëjjìúúëæjìçñ÷‹óžëúçìjõëúçjújëï÷÷öæjìëúëõæé÷ˆïçëëúìjž÷„ðžçü÷&ý÷ý÷ ý÷3ý÷ ý÷ý*ý÷$ýñŽðñððôððôôðôôòôò‚éòé‚üéüƒûûžû‰žûûóöòûûžûžû˜žëújìjæëúëõjìæúëúõìjõëúújçúëçjìjúëúæìjçï÷¡ñžúëæììæúëçjìõúëçjžö÷÷öæìjúëúõæòö÷ˆóúúëçjìû÷„ðúúé÷‚ðj#ý÷ý÷ý÷2ý÷ ý÷ý.ý÷$ýŒññðñðñððôðôðô‚òôòé‚òüéüÁûûžûžûžûžüóïéûžûžûžûžûžûúúìjìçúëújìjæëëújjìæúëújìjçëúçjjìúúëõjìëó÷¡öôëëúõìjæëúçìjõëúçìûï÷÷öjjìëúúõçé÷ˆóæëúæìjü÷„ôëçò÷„ñjëúdý÷ ý÷ý-ý÷#ý‚ñóñð†ôðôôòôòŽééòééüééüüéüûžûžû…éïóüžûžû¬žûûëæjììçëúçjjìçúëçjìjæëúúìjìúúëæjìõúëúõìjëï÷“òëúëjjìçúëæììæúëçõü÷Šïõìjúëçæçð÷ˆðæúëæjjé÷„òúçò÷†ôjúëçìaý÷ý‚÷÷ý*ý÷#ý‚ñóñð„ôðôðô‚òôò‚éòé‚üéüƒûûžû‰žûûôöñûûžûžû£žžúæìjìëúëæjìjçëúçìjjçúëçjìjúëúæìjõú…õjìûï÷”öòúëújììçëúæìjæëúçjò÷ój†úëçõúð÷ˆñæëúæìjò÷„éëæô÷ˆòjëúçìjç^ý÷ý÷ý(ý÷$ýƒóñóñ‡ððñððôðôò„éòéòé„üéüüûžû…žûð÷ôûžûžûŠžëõjìjúëúæjúúëæjìõçëúæìjjëúëõììæúëçõìjüö÷“üëúëjjìúúëõjìçúëæõò÷Šðõìæúëææúñ÷ˆôçúëõjjð÷…öéúçð÷Šéõëëæjìúúë[ý÷ý‚÷÷ý&ý÷#ýóñˆðñðñððôðô…òôòôéòéüéüÁžûžûžûžûžñöôžûžûžûžûžûžžújìjjúúëõììõçëúæìjjëúúõjìjúëújìjæëúújjõòö÷”öüëëújìjçëúõìjæëúæõð÷Šôjìæëúæõëñ÷ˆôçëúõìjð÷…öüëæð÷ŒéjëúæìjúëçjìXý÷ý÷ý$ý÷#ýŒóñóñóññðñððôð†ôðôôòôòé…òééüéü„éûûžûžû…óöòûžûžû«žûëúìjìæúëúõìjõúúëõjìõúëúõìjõëúëjjìçúëçjìæô÷”ïûëúúìjjúúëjjìçëëõæñ÷Šéjìçúëõæëï÷„òçëújñ÷…öüúæð÷‡ûõúëæjìú„ìjæë:ý‚÷÷ý÷ý÷ý#ý÷#ýóƒñóðñðˆôðôðôôòôòƒééòéüûžû‰žûüïóéûûžûžûªžëújìjæëúújjìæëëúõìjõëúújjìçúëújìjçëúçìjæñ÷¡óûúëçjìõúëçjìjçëúõæñ÷÷öûìjæëúæõžï÷ˆéçëúõìõñ÷…öûëõó÷ûjëúæìjúëçjìçúú;ý‚÷÷ý÷ý<ý÷#ý„óóñóñð‚ôðôò…éòéòüé…üéüüžûžû…žòïóüûžûžû©úúìjìúúëçõìjæëúújjìæúëújìjçëúújììúúëæjìúó÷‹óžëúçjjõëúújúƒõçó÷Šëjìúúëõæžö÷üújó÷…ïûúæó÷‡žõúëõjìú‡jjçëúû÷;ý‚÷÷ý÷ý<ý÷#ýóñð…ñôðôðôˆòôòòéòéòéƒüééüÁûžûžûžûžûòöðûžûžûžûžûžûžëæjìjçëúçjììçúëçjìjæëúúìjìúúëæjìjçëúæììúï÷¡ðžúëõjìæúëçjìjúëçjçï÷÷öúìjúëúõõûï÷ˆûúëçjìõó÷…ïûëõó÷žõëúõìjúëæjìçúúû÷;ý‚÷÷ý÷ý<ý÷#ýó‚ñóñŽðñððôððôôðôôòôòé‚üéüƒûûžû‰žûûð÷ðûûžûžû’žžúõìjìúúëæjìjçëúçì–çúëçjìjúëëæìjjúúëõjìëï÷‹ðëëúõìjæëúçj“ëúúìëï÷÷öçjìëúëjçüö÷ˆžëúúìjõï÷…ïûëçï÷•çæúëjììëúçìjçëçû÷÷öòj;ý‚÷÷ ý÷ý=ý÷"ýóŒñóññðñðñððôðô…ðôôòôòé‚òüéüûžû…žûñ÷òûžûžûªëújjìõúëúæìjjúúëæjìõçëëçìjjëúëõjìõúëúõìjžï÷¢öòëúëjjìçúëæjìæúëçjžö÷÷ïæìjúëëõæéö÷‰öžúëújìæï÷…ïžëçö÷‘ïçæëúõìjúëçjìçúúû÷„éjìõ;ý‚÷÷ ý÷ý=ý÷#ý‡óóïóóñóñƒððôð‡ôðôôòôôòéòééüééüüéüûžûžû„ïïòžûžû¨žûûëújìjõëúëõjìõúëúæìjõëúëæjìjúëúõìjõëëúj‚üï÷¡öòúëújìjçëúæìjæëúújûö÷÷öõjìëúëõçé÷‰öëëúúìjçö÷…ïžúëö÷šöææúëjjìúúçìjçëçü÷÷öéìjõëú;ý÷ý÷ý=ý÷#ýïó‚ñóñð‚ôðôˆòôòòéòéòé‚üéü¥žûžûžûžûžéïóüûžûžûžûžûžûúúìjìæúëëõìjõúšõjìõúëúõìjõëúëjììæúëçjìõéö÷”öüëúëìjìúúëõjìæúëæjü÷‹ïõìjúëúõæòö÷‰óúúëçjìëï÷óëö÷ïõæëújìjúëõjìúü÷ˆéjìõúëjj:ý‚÷÷ý÷ý>ý÷"ýïó‚ñóñð…ñððôðô‚òôò‚éòé‚üéüûžû‰žûòöñüûûžûžûªžëçjìjçëúújjìæúëúõìjõëúújjìæúëújìjçëúçjjõô÷”öüúëújìjúëúõìjæëúçjò÷Šïõjjëëúõçô÷‰óçëúçìjëö÷„ñžúž÷žïjçúëìjìëúæìjúëçé÷÷öéììõëújìõú:ý…÷÷ýý÷ý>ý÷"ýïó„ñóññð…ñððôðô…ðòôòôòéüéüžûžû…žôöðžûžûžû©úçìjìúúëçjìjæëúújjìæúëújìjæëúújjìçúëæjìçô÷”ïûëúúìjìúúëjììçúëæõò÷Šðõìõúëçææô÷ˆñçúëçjìû÷„ñëúž÷óìçëújìjúëæjìúü÷Œûììæúëjjõëúõ:ý‚÷÷ý>ý÷#ý‚óïóƒïñóñŽðñððôððôôðôôòôòˆéòéòééüéü„éûûžûžû…ð÷ôûžûžû¬žûžëõjìjúëúçjjìçúëçjìjæëúúìjìúúëçjìjçëúæìjçó÷”óûëëçjìjúëúõìjçëúææð÷Šôjjõëúçõúð÷ˆñæëúçìjû÷„ðëúü÷¢óìúúëìjjëúæìjçëçé÷÷öüìjæëúõìõúëõjõ8ý„÷ý÷÷ý<ý÷"ý‚ïïó„ññóðñ†ððôðôðô‚òôòéòéüÁžûžûžûžûžóöòžûžûžûžûžûžžúõìjjúúëæjìjçëúçìjjçúëçjìjúëúçìjjúúëæjìúó÷ˆñžëúçìjjú‰jjìçëëõæñ÷Šéjìæúëæõúñ÷ˆôæëëõjjé÷„ðëúü÷£ñjçëújìõúëõjìúúçò÷÷öûjìæúëìjõëúõìõë6ý÷ý‚÷÷ý9ý÷"ýïó‚ñóñð‚ôðô‚òôò…éòééüé…üéüüžûžû…žüïïéûžûžûªëëjjìõúëúæìjjúúëæjìjçëúçìjìëúëæjìõúëúæìjúï÷¡ðžúëæjìæúëçõìjçëúõæó÷÷öüjjæëëæõžó÷ˆðæëúæìjò÷„ôëçé÷¥óìúúëìjjëúõìjúëæô÷÷öûììæëújìæúëjjõëñ÷3ý÷ý‚÷÷ý6ý÷"ý…ïöóïïó‚ñóñð…ñôðôðô‚òôòéƒüééüžûžû…éïóéžûžû—žûûëúììjõëúëõjìæçëúæìjjú‹æjìjúëúõìjõú…õjìûï÷Œöôëëúõìjæëúújúƒjçñ÷Šžjìçúëõæëï÷ˆòçúúõjìô÷„ôúçò÷¤ñjúëújìõúëõjjúëçò÷÷öžjìæúëjjõëúõìõëñ÷0ý÷ ý‚÷÷ý4ý÷"ý…öïïóïó‚ñóñ‡ððñððôðô…ðôôòôò‚éòé‚üéüéüüûüûûžûûôöñûûžûžû¬žûëúìjìçúëúõìjæúúëæjìõúëúæììjëúëjjìæúëúõìjûö÷òëjjìçúëçjìõúëçõúï÷÷öëìjúëúõæžï÷ˆòçëúõìjð÷„òëçô÷‚ñjúŸìjõëúõìjúëçô÷÷öžìjæëújìæúëõìõžñ÷-ý÷ ý÷ý2ý÷"ý…öïïóïóñˆðñðñððôðôƒòôéòé‚òüéüéüºûüûûžûð÷ôûžûžûžûžûžûžëæjììçëúçjjìæúëçõìjõëúújjìæúëúõìjæëúúj‚éö÷öòúëëjììçëúæìjõúìëï÷÷öæjìúúëjæžö÷„éçëújñ÷…öéúçò÷¤ðjúëújìæúëjìjúúçô÷÷öžjìæëëìjõëújìæëñ÷*ý÷ý‚÷÷ý/ý÷"ýöïó‚ñóñƒððôð†ôðôôòôò‹ééòééüééüüéüéü…žó÷ôžûžû­žûûžúæìjìúúëçjììæëúújjìæúëújìjæëúëjjìçúëçjìõò÷¢öüëúëjjìúúëõjìæúëçjžö÷÷öæìjúëúõæüï÷ˆüçëújìõñ÷…öüëæô÷¤ñjëúëìjæëújìjúëæñ÷÷ïžìjæëújìæúëjjõžñ ÷'ý÷ý‚÷÷ý-ý÷!ýöï‚óïó‚ñóñð„ôðôðô‚òôò‚éòé‚üéüéüéü†ôïöòûžûžû­žûëëjjìjúëúçìjjúúëçjìjæëúúìjìçúëçjìjçëëçìjæðö÷¢ïüúëújìjúëúæìjæëúçjüö÷÷öõjìëúëõçûö÷ûújó÷…öüúæð÷Šòjúëçjìçúëj—úúçð÷÷öëjìçúëjjæëúõìæëñ ÷$ý÷ý‚÷÷ý*ý÷"ýŒöïïöïïóïóóñóñð…ñððôðôò„éòéòé‚üéüéüéüˆôï÷ðéûûžûžû«žžújìjjúúëæjìõçëúçìjjçúëçjìjçëúçìjìúúëæjìúð÷”öûëúúìjìúúëõjìçúëæõé÷‹ïõìjúëúõæéö÷‰öûúëçjìõó÷…öûëæñ÷¤òjëúúìjçëúõìõúëæñ÷÷ïëìjçëújìæúëjjõžñ ÷‚òç!ý÷ý‚÷÷ý#ý÷ý÷"ý†ïöïöïïóñð…ñôðôðô…òôòòéòéüéüéüéü»òó÷ñòüüûüžûžûžûžûúúìjìõúëúõìjjúúëæjìjçëúçìjìëúëæjìjçëúæìjçó÷”óûúëçjìjúëúõìjæëúçjé÷Šïõjìëúëõæé÷‰öëúëúìjõó÷…ïûúæð÷¤éjúëçjìçúëìjõëúçñ÷÷ïújìçúëììæëújìæëñ ÷„òçëçý÷ý‚÷÷ý!ý…÷÷ýý÷!ýˆööïöïïóïó‚ñóñŽðñððôððôôðôôòôòé„òééüé‚üéüéü…éóöóôüƒéüüû­žûûëçjììæëúëjjìõúëúæìjjúúëæììjúëúæìjjúúëõjìëó÷”ñžëúçìjjëúëjjìçúëæõò÷‹ñõìõúëúõæòö÷‰ïëúëújìæï÷…ïžëõó÷¤éjëúçììçëújìõúëçó÷÷óëììçëújìçúëjjæžñ ÷…òçúúìý÷ý‚÷÷ýý÷!ýöïó…ñóñóðñŒððôðôðôðôôòôòƒééòéüé„üéüéü…éñöïðüéü°ûüûûžûúçìjìúúëúõìjæëúúõjìõúëúõìjjëúëõjìæúëúõììëï÷”ðžúëæjìõúëçõìjçëúææð÷Šðjìõëúçõçô÷‰ïúëúúìjçï÷…ïûúçó÷¤ûõúëæjìúúëjjõëúúó÷÷ïçjìúúëjjæëúõìæëó ÷‡ôæëçjúöý÷!ý‚÷÷ýý÷ ýöï†óïóóñóñð‚ôðôò…éòéòü é†üéðöïðüéüéü¬ûžëæjìjúëúújjìçúëçõìjõëúúõjìõúëëõìjæëúúõjìûï÷‹ðëëúæìjæëúúj†úúëõçñ÷Šòjìæúëçæçð÷‰óúúëçjìúï÷…ïžëçï÷¤ûjëúæìjúëúõìæúëçï÷÷óúìjúëújìçúëjjæžó ÷‰òçúúìúö÷÷ý÷$ý÷ýý÷ýöïƒöóïó‚ñóñð„ôðôðôˆòôòòéòéòéüéüéüé„ôïöðüéüéü¯éüüûžëõìjìúúëæjìjæëúújjìæúëújìjæëúëjjìæúëçjìjûö÷¢öòëúëjjìæúëæjìõçëúõæñ÷÷öéìjõëúçõúð÷‰ñæëëçììëö÷…óžúúó÷¤ëõúëæjìúúëìjõëúúï÷÷óçjìúúëìjæëújìæëó ÷†òçëçjú÷‚öõý÷&ý‚÷÷ýý÷ý÷ö„ïöïïó‚ñóñ‡ððñððôðôƒðòôòéˆôïöñéüüéüéüéüüûçõçææìjúëúæìjjçúëçjìjæëúúì‹çúëúõìjæëúçj‚òö÷öéúëúõìjæëúçìjõúƒjçó÷Šûjìçúëææúó÷‰ñæúëæjìžö÷…ïëëúö÷¥öëõëúæìjúëújìæúëúö÷÷ñúììúëújìçëëjjæžó ÷‡òçúúìúö÷ƒjëúý÷)ý‚÷÷ýý÷ý‡öö÷ïöïöïóŒñóññðñðñððôðô…ðôôòôòé‚òüéüéüéˆòï÷óòéüéüéü°éüüûçìõüûëççëúëõjìõçëúçìjjçúëçjìjçëúújììúúëæjìõô÷¢öüëúëìjìúúëæjìõúëçjúï÷÷öžììçëúõõëó÷ˆðæëúæìjû÷…óžúëö÷ˆöçõúëõììúƒjjæë‡ö÷÷óçjìúŠjjçëújìæžó ÷ôæëçjçö÷÷öjúëjj ý÷,ý‚÷÷ýý÷ý‚ö÷ö“ïïóïïóóïóóñóññðñððôð‡ôðôôòôôò‚éò é…òóöóôé‚üéüéü­ëìjûéüüúççëúõìjõúúëæjìjçëúçìjjúúëçjìjçëúçìjæð÷•öüúëëjìjúëúæìjõëúúìžï÷Šçjìúúëõæžï÷ˆôçúëõjjü÷„ñëëž÷‘öçõëúõìjúëçjìæúëë÷‘ñçìjúëújìçúëjìæžó ÷‘òçúúìúö÷÷öjëúõìæú ý÷/ý‚÷÷ýý÷ý‚ö÷öïóƒññóñð‚ôðôˆòôòòéòéòéüé…üñöïôéüé„üéüéü˜ûõõžéüüëjìjõúæììæúëëæììjú“æjìjúëúæìjjúúëõjìúñ÷¢ïûëúúìjìúúëõììæúëçjžö÷÷öçìjúëëõõžï÷ˆôæëúæìjé÷„ðëúû÷ˆïææúújjìúšììæëúë÷÷öñæjìëëúììçëújìæëó ÷“òæëçìçö÷÷öõúëjjõëújý÷2ý‚÷÷ýý‚÷÷ý‚÷÷ ý„€÷ö÷ö…ïïöïïó‚ñóñð‚ôðô‚òôò‚éòéƒòéòé„ñïöô éü‰éüžçžžüžjì£çžžúççëúúõjìõúëúæìjjëúëõjìõúëúæìjúó÷¢óûúëçjìjúëúõìjæëúçjüö÷÷öõjìúúëjæžö÷ˆéçúëõjjô÷„ðëúü÷‘ïõæëúõìjúëçjìçúëë÷‘ñçìjúëújìúëújjæžó ÷‡òçúúìúö÷‹jëúõìõúëjjçý÷5ý‚÷÷ýý‚÷÷ý‚÷÷ ýàö‡ïöïöóïïó„ñóññð…ñôðôðôƒðòôòé…òéòéòé…üðïöôéüéüéüéüüæìjçúæjììæžüüé甞úõìjõëëúõjìõúëúõìjõú…õjìëï÷”ñžëúçìjjúúëõjìçëëæõé÷‹ïõììúëúõæüï÷ˆéçëúõìõô÷„ôëçü÷‘ïjçúëjjìëúçìjæëúž÷‘ñæjjëúúìjçëújìæžï ÷™ôæëçjçö÷÷öõëëjjõëújìçúýý÷8ý÷ýý…÷÷ýý÷!ýƒà÷÷ö†ïöïïóïó‚ñóñŽðñððôððôôðôôòôò’éòéòéòéòéòéòéôï÷ðòéƒüüçì©žëçõæžüüéëõìõæúæjìæúëújìjõëúëjjìæëëúõìjžö÷”ðžúëæjìõúëúõìjçëúæõô÷‹öõjìëúëõçüö÷üújñ÷„ôëúü÷‘ójæëújìjúëçjìçúëž÷‰ñæìjúëçjìú…jjæžó ÷˜òçúúìúï÷÷öjëúõìæëëjjçëç÷:ý‚÷÷ýý‚÷÷!ý†àá÷ö÷ïö„ïïóïóñŠðñðñððôðôðô‚òôòéòéòéŠòéôï÷ñòééüéüéˆüééüëžújì‹ëûüûëçëžüëõìœçžžçææëúúìjìæúëújìjæëúújjìüï÷‰öôëëúõìjõú‰jjìçúëææô÷‹ñõìjúëúõæéö÷ˆûçëújìjñ÷„òëçò÷¥óìçúëìjìúúçìjçëúž÷÷öðæjìëúúìjçëçjìçëó ÷šòæëçjçö÷÷öõúëõjõëújìçú÷ìü÷:ý‚÷÷ýý÷ý…àà€ö÷öïó‚ñóñðˆôðôôòôòôò’éòéòéòéòéòéòó÷óôéò éˆçjæúõjìúü†õjõúúæìæžéüûúçúëçjìjçëúújjìçúëçjìõéö÷•öéëúëjjìæúëçjìjçëúææñ÷ðj†ëúúõæé÷žú„ìjjó÷…öéúçò÷‘ñjçëújìjúëæjìçúúë÷‰ðæìjúëçjìú…ìjæžó ÷‡òçúúìúö÷’õëúæìõúëjjæ÷çjû÷÷ï:ý‚÷÷ýý†÷÷ýý÷÷ýà‚ö÷öï‚óïó‚ñóñð„ôðôðô‚òôò”éòéòéòéòéòéòó÷óðéòéòéüé³çìõéüžúúžûüéæjììjëúçõæžéüüújìõçúõjjúúëçjìjçëúçìjõòö÷Œöòúëúõìjæëúçjúƒõæñ÷‹òõìõëëçõæôö÷‰ïëúëçjìõñ÷…öéëæô÷‘óìúúëììjëúæìjçëúû÷‘ðõjìëúçìjçëçjìæžï ÷žôæëçjçö÷÷öõúëõjjëújì÷úçìü÷÷öjæ:ý‚÷÷ýý÷ý‚÷÷ýàƒ÷ö÷öïïöïïóïóóñóñóñ‡ððñððôðô…ðôôòôò”éòéòéòéòñöïðéòéòéòéòéƒëììü•ëõçëûçjììõëüéûúçžûüëjì”úûëçæúëúçjjìúúëæjìæô÷•öüëúëjjìçëëæjìõúëúõçó÷Šòjjõëúçõúô÷‰ïëëúúìjõó÷…öüëçô÷ñjúëújìõëëæjìúû÷‰ðæìjúëçjìú…jjæžó ÷‡òçúúìúï÷õëúõìõúëj÷æëçjž÷„jçúú:ý‚÷÷}ý÷ý‚÷÷ýànöˆïöïöïïóïóñˆðñðñððôðôƒòôéòéòŒéòéòééðöïðéòéòéòéˆûçjžûüüžì‘jççõjjëüéüžæjõúúæìçü‘ûæçëëõjìjçëúæìjçñ÷•ïüúëújìjçëúæìjõëúújúñ÷Šûjìæúëæõçð÷‰óúúëçjìæó÷…öûëæð÷‚ñìú ìjjúúæììçëçû÷÷öðõjìëëçììçëçjìçëó ÷™ôæëçjçö÷÷öõúëõjjëë÷ìæúúìž÷†jæëçjç:ý‚÷÷{ý÷ý‚÷÷ýà„€÷ö÷ö„ïïóïó‚ñóñ…ðñððôð†ôðôôòôò›ôööñòòéòéòéòéòéòéòéüûçúžûžjì‹çûüžçúžüüžæì†õëúæõçü’éæììæççìjõúúëõjìúó÷¢ïûëúëìjìúúëæjìæúëçjëï÷÷öžìjæëúçõúð÷‰óçëúúìjæö÷…ïûúæð÷ðjúëújìõúëõjìúû÷‰ôõìjúëçjìú…ìjæžó ÷‡ôçúúìçö÷õëúæìõú÷jjæëçjë÷ˆjæúúìçï÷:ý‚÷÷xý÷ ý‚÷÷ýàƒïö÷öïóƒñóðñð„ôðôðô‚òô ò©ôï÷óòòéòéòéòéòéòéòééüçììjçæjììæûüéüçõúëžçì‹õûüüžúúžûéçìžžúæçúëúõìjúï÷¢óûúëçjììúëúõìjõëúúìëï÷÷öújìçúëõæëó÷‰ñæúëçjìúï÷…ïûëõñ÷¥ðjëúëìjõëúõìjçëçü÷÷öôõjìëúæìjçëçjìçžï ÷™ôæëçjçö÷÷öõúëõjj÷úõìæúúìž÷‡õõëçjæï÷:ý÷vý÷ ý‚÷÷ýà‚÷÷öï†óïóóñóñð‚ôðô ò•ï÷óôòéòéòéòéòéòéòéüüú씞üúçæžüéüújììõççõjjžü‡žìõæëúj쎞üéüëæúëúõjìžï÷¢ñžëúçjìjúúëõjìæúëçjžö÷÷öçìjçëúõõëó÷‰ðæëúçìjëö÷…ïûúæñ÷ôjúëújìæëëõjìúû÷‰ôõìjúëæjìú…ìjæûï ÷‡ôçúúìçï÷õëëæì÷úëjjæëçjë÷‡õæúúìæó÷‚ôë9ý‚÷÷tý÷ý‚÷÷ ýà‚á÷öïƒöóïó‚ñóñð…ñôðôðô…òôòòéòéòŒéòòóöïðòéòéòéòé…òüúúëì˜ëüüéžæúûûújììjúéûëçëûüüžì”çëçæjëüéüëjìjæçæìjûö÷¢ôžëëæjìõúëúõìjæëúçjüö÷÷öõjìúúëjæëï÷‰ðæúëæjìžö÷…ïžëæó÷¥òjëúúìjõëúõììçëçü÷÷öòjjìëúæìjçëçììçžï ÷™ôæëçjçö÷÷öõúëæ÷ìúúõìæúúìú÷‡õõëújæó÷ƒðúú:ý‚÷÷qý÷ý‚÷÷ýàƒ€ö÷ö†ïöïïóïó‚ñóñŽðñððôððôôðôôòô ò„óööðòéòéòéòéúìæûújìúüüéûõììõúæjìjçü‡žçõúžžjìæü‡žúëûüžjì‡çûëúúéö÷•öôúëúæìjõúúëjjìçúëæõé÷‹öæìjúëúõæžï÷ˆôæëúæìjž÷…ïžúçó÷‘éõúëújìæúëjììúúçü÷‘éõìjúëæjìúúçìjçžó ÷‡òçëúìçï÷õëú÷ìjúëõjõëújç÷‡õõúëìæñ÷…ðëújì:ý‚÷÷rý÷ý‚÷÷ýàˆöö÷ïöïöïó•ñóññðñðñððôðôðôðôôòôòôò„ñïöñ òˆéòéòüëìõü‡éçëüüûõì‹æžüúæçûüüûçì•æúæõjæüüéüæìõçúæjììçûü‚ôï÷•öòëúëõjìæúëçõìjçëúæõò÷‹öõjìúúëjæûö÷ˆòçëëõjjü÷…ïžëçï÷•üjëëúìjæëúõìjçëçé÷÷öòjëúæìjçëçjìçžï ÷™ôæëújæï÷÷öõë÷æjjëúõìæúúìú÷‡æjëëjõñ÷‡ñúúìjúë:ý‚÷÷pý÷ýàƒ÷ö÷öï‡óóïóóñóñð…ôðôôòôòô‚òôò…ðï÷ñô ò„éžìjü‡éëjìæúçì‹õëéüüúçúûžúì‹jžüûëçžûüüçìŒõëëçæçûüééñö÷Œöòëëúõìjæëúúj†úúëææô÷‹óõìjúëúõæüö÷ˆòçëúõìjé÷…óžúúï÷Šûõúëçjìçúëjúé÷‘éjìjúëæjìúúçììçûï ÷‡ôçúúìçï÷j÷ëçìjúëõjõëçjç÷‡æõúëjæð÷‰óëújìëújì:ý‚÷÷ný÷ýàƒáö÷öï‚óïó‚ñóñð„ôðôðô‘òôòôòôòôòôòðï÷óôéòéòéòŠéòžúëüüéëjì«úžújõëéüüëõììõújjìjëüüéžìõëžçjììjëéüûúúëüòó÷•ïéëúëìjìçúëçjìjçëúõõñ÷ñj‡ëúúõæüö÷ˆüçúúõjìò÷ñë÷¥žjëúçìjæëúõìjúëæò÷÷öéjjìëúæììúëæjìçžï ÷£ôæëçjæï÷÷ö÷úëæjìúúõìõúúìæö÷÷æjëújõð÷‹óúúìjúëjjçë:ý‚÷÷ký÷ýà„€÷ö÷ö…ïïöïïó‚ñóñð…ñððôðô„ðòôòôòô†òðï÷óðòˆüüæjõžžjì‹úûéüûçžüüëæìŠçüûúæúüüéûìúçæjõëéüüëõìçéö÷öòæçžújìjçëúçìjjúƒjçñ÷‹ôjìõúëúõæéö÷ˆüçëúõìjô÷„ñžúž÷Šëõúëæjìçúëj„ëúçò÷‘üjìjúëõjìúúçìjçžï ÷‡ôçúúìçï÷™õëúçìjúëõjõëújõö÷÷æjúëjõô÷óëújìëúõìçúæì:ý‚÷÷iý÷ýàö„ïöïöïó„ñóññð…ñððôðôðôòôòô†óöïðòô òƒüüæìjžçõìçûéüüæììõúæì‚æûü…çæëûûìçûéûúúûûüëõìõûö÷žöôììjõúæjìúúëæììõúëúõæó÷÷öòjjõúƒõçé÷ûújð÷„ðëúž÷¦öëõëëçìjçëújìõúëçô÷÷öéìjjëúõìjçëçjìçžö ÷£ôæëújæï÷÷öõúëæjìúúõìæúúìæï÷÷æìúújõô÷ïúúìjúëjjçëæjõë:ý÷hý÷ýàŒ÷÷ö÷ööïöïïóïóƒïñóñ…ðñððôð‚ôðô„ðôôòô‰òôóöïñôôòôòƒžüçì”ûûüûúëéüüçjììõžûújæûüçì“õújjìçûéüüæjæëúæìõû ÷ðì’ëûûúççëúæìjõëúújúó÷‹üjìæúëçõæôö÷‰öûúëújìõñ÷„ôëúû÷’öçõúëæjìúúëjjõëúçô÷‘üjìõúëõjìúúçìjçûï ÷‡ôçúúìçï÷™õëúçìjúëõjõëújõï÷÷æjúëjæò÷‘ïëúììëúõìçúçìõúúì9ý‚÷÷eý÷ý à„÷ö÷ïö„ïïóïóñ‚óðñð‚ôðôðôòôòôñööñòôòôòôòôò˜ééçjççjììžüéüžõjõëçjììjëü†žæžüüçì†ûüûççžü‹æjììõëçæûóö÷¥ñæjììúüéüûõçúžõjìæúëçjëï÷÷öûìjæëúçõúô÷‰öëëúúìjjñ÷„ôúúü÷¦ïçõëúæìjçëújìõúëæð÷÷öüìjjëúõìjúëæjìçžï ÷†ôæëçjæ÷šöæúëçjìúëæìõúëìõï÷÷æìëújõò÷“ïúúìjúëõjæëçjjëújjö9ý‚÷÷cý÷ýàƒ€ö÷öïó‚ñóñð‚ôðôð‚ôðô‡ðööóôôòôòô‘òôòòúìõüûûúúüéüžjì†çžçõjëü†žõììæúì“ûüéüëjçëûæjììõžüéòï÷ŠïüëúæúûéüûìŒjçúõjæëúçìžï÷Šëjìçúëææúð÷óë…çjìjñ÷„òëçé÷‹ïõæúëõjìúúëj˜ëúæô÷÷öûjìõúëõjìúúçìjçûï ÷‡ôçúúì÷ï÷™õúúçìjúëæjõëúìõï÷÷æjúëjæé÷”ïëújìúúæìæúçìjúëìjï÷:ý‚÷÷aý÷ýà‚÷öïƒöóïó‚ñóñð…ñôðôðô‚ðôðˆôðôððö÷óôòôòôòòëìjüüéüçõçëûõì™æûûüžúëüüžõììjæüžújëüéüžjì‹úçjjõžüéôöö÷‹ïéüéüúçëžžjì™úüûëçúúëçjûö÷÷öúìjçëúæõúñ÷‰ïçëúúìjõó÷…öòúçé÷¦ïõæëëõìjúëújìõúëæñ÷÷öûìjõëúõìjúëæjìçûö ÷£ôæëú÷æï÷÷öõúëçjìúúæìõúëjõó÷÷çìúëõõé÷“öúëìjúëõjõëçjjëúìjï÷:ý‚÷÷_ý÷ýàƒ÷ö÷ö†ïöïïóïó‚ñóñŠððñððôððôôðôð‡ôððö÷ïðôòôòôˆéúõüüéüúìžõúújìæûüüûúìjõëæììjæüüéüççžüžjìŠçüüûçëûüôö÷öñüüéüçììõçææjìçü–žçõçúçjüö÷÷öæjìúúëõæëó÷‰óçúëçjìõó÷…öüëçò÷¦ïjæúëõjìúëúìjõëúçñ÷÷öûjìõúëjjìúúçììçûï ÷ô÷‚çï÷™õëëúìjúëæjõëújõï÷÷újúëõõü÷“ïëújìúúæìæëúìjúëìjó÷‚ûë:ý‚÷÷\ý÷ýàáöˆïöïöïïóïóñðñðñððôðôðôðôðôðšôï÷ïððôðôôòôòôòôòôòüžææëûëì†úüûûúëüëì‹õúžçõjüüéüçì‚ææìçü‡žæìçüïö÷†ðúžûûçì‹jûüëççžüüžæì„çúúé÷‹öæììúëúõõžó÷‰ñæëúçìjæï÷…öéúçô÷¦ójæëújìjúëújìæúëæñ÷÷ïžìjõëúõìjúëæììúûö ÷ð÷´æï÷÷öæçëçjìúëæìõëëìõó÷÷ëìëúõõüö÷÷öúëìjçëæjjëújìëújìó÷„ûúõì:ý‚÷÷Zý÷ýà„€÷ö÷ö…ïïóïïó„ñóñóñƒððôðôðôð‰ôððïööñðôð…ôðôôòôòéüæìjõççõììúü‹žæjæëëjììjúü†žçëéüúì‹jžéžççûüüžçì‚žï÷•öðjìõçújjìjžéüüçæúžëæì…çüüòï÷‹öõjìëúëjæžï÷‰ðæúëçjìçï÷…öüëæð÷ˆóìçúëjjìú›jjõëúçó÷÷öëjìõúëjjìëúæìjçûï ÷ô÷‚çï÷õú•ìjçëæjjëújjó÷÷ëjúëõõû÷“öëújìçúçìõúúìjúëìjð÷†üëõjæë:ý‚÷÷Xý÷ýàƒö÷öïó‚ñóñðôðôðôð…ôóööñðôðô†òôòüûçì‹õûûëúçûüüžæìçëçõjçüüéžjìjõúìžü†úõæžžçì‚ëð÷ƒïûjì†úûëææžüŽçjììæúæõjçûüòï÷‹ñõìjúëúõõûï÷‰ðæëúçìjúö÷…ïûúæô÷¦ñjçëújìjúëçjìæúëçó÷÷ïžìjõëújìjúëæjìúûö ÷¤ðæëújæï÷÷öæçëçjìúúæìõúëjõñ÷÷žìúúæjûö÷’úëjjæëçìjëújìúújìð÷ˆòúæìæúçì:ý÷Vý÷ýà‚÷÷ö‹ïïöïïóïóóñóñð„ñððôðôð‰ôððóö÷óðôðôð–ôðôôòúæúõjìjûéüüúæçëžçì‹æžüûûçžüéûõì†çûûçõžü‹úõììjúæììúð÷„ïðžõì—úüéüûæëžûçjììjžüûúúžüéó÷Œöòúçìëúëõæûö÷‰ôçúëæjìžö÷…ïžëæð÷›ójúúëìjìëúúìjæëúúï÷÷ïëjìæëëjˆëúçìjçüö ÷‡ôçúújæï÷™õúëúìjúëæjjëúõjñ÷÷ûjúëõõž÷’žúõìæúúìjúëìjúëjjò÷Šòëæjõëçjõë9ý‚÷÷Tý÷ý à÷öïƒöóïóñð†ñððôðôðôð…ôñï÷óðôðôð‹ôðòúìçžžçæëü‹ëõìjõúçõìæëü†újjæúæì‹æüéûüõçëüëjì‡ëüüžúûó÷’ïòjžëæìçüéüûjììõçæjëü†ëjæëôï÷Œöñòžçúëúõæüï÷‰òæëúæìjžö÷…ïûúæñ÷¦ðjçëújìjúëçjìæúëçï÷÷óëìjõëújìjúëæjìúûö ÷¤ðæëújæï÷÷öæçëújìúúçìjúëjjñ÷÷üìúúæjžö÷’ëëõjõëújìúújìúëõìü÷Œðúçìõúúìjëó÷9ý‚÷÷Rý÷ýàƒ€ö÷ö†ïöïïóïó‚ñóñ…ðñððôðôð‰ôððñï÷óñôðôðôðŽôžìõüéüûççúûëõì†úûûžúúüëì}=¥=}õüéüüõjìjæçìëüžçéï÷÷öóéõûüéüúúûjìŠçüžëæëûüüëì‚úñ÷‹öôçìõæúæçüö÷‰éçúëõjjüö÷…ïžëõó÷›ñìúúëìjjúúçìjæëúúï÷÷ïújìæúëjˆëëæìjçüö ÷‡ôçúúìæï÷æú–ìjçëæjjëëõjñ÷÷éjúëõõëö÷’ûúæìõúëìjúëjjçëõjž÷‹ðëçjjëújjëð÷9ý‚÷÷Oý÷ýà…öö÷ïöïó…ñóñóðñ…ððôðôðôð‰ôðï÷ïñððôðôðÏôðôéõõüéüüçjìõæúõjìúûüüûæõ3ìì}<9µµæžûüæjììæžûžçúûüüžõõéïïóüõjûüéüúììjúõjììúü†žææëžëì‚æô÷‹öðžçæžòòéôö÷ˆéçëúæìjü÷…óžúçñ÷¥ðjúëújìjúëæjìçúëúö÷÷óúìjæëújìõúëæjìúü ÷¤ðæëújæï÷÷öæçëújìúúçìõúëõõð÷÷òìúúçjëö÷’ûëæjjëújìúúõìçúæìë÷‹óúúìõúúìjúô÷‚óì9ý‚÷÷Mý÷ýàƒ÷ö÷öï‡óóïóóñóñðôðôð…ó÷ïñôðôðôð®ôôüžçëžüçjììjžûžúúžüüûçìß89<8̵ƒƒµìjjæçõììõûü“újçëžæìjžééüéëúûüüúì‹jžüúæçûüüžæì†úçõjçô ÷‰ïóðñï÷÷öö÷ˆüúúëõjìò÷…ïžëçó÷›ðjúúëììjëúçìjçëúëö÷÷ïújìçúëjˆëúæìjçéö ÷‡ôçúëjæó÷æú•ìjçëæjjëúæjð÷÷òjçëæjú÷’üúçìõúëìjúëjjçëæjç÷‹ïëújjëújjëé÷ƒójì:ý‚÷÷Ký÷ý à‚÷÷öï‚óïó‚ñóñðñðôð‰ôðó÷ïñððôðôðŒôðôôüüjìjæçæìžûüüëõæúžçì<´µƒµƒ‚µÌì†úûžúæžüúìæúçìjæüüéûõìjçúì‹jžéüüççúûëæì‡çûüžëéö ÷ö ÷ˆûçëújìjò÷…óžúúó÷‘òjúëújìõúëæjìçëëú÷’óúìjæëëjìjúëõjìúûö ÷‡ðçëújõï÷šæçëújìçúçìjúëõjð÷÷ôjúúçjëö÷’éëçjìëújìúúõìæúçìæ÷‹öúëìjúëìjúü÷…ïjjúë:ý‚÷÷Iý÷ýà„o÷ö÷ö…ïïöïïó„ñóñóñ‚ððñ‚ðôð…ñööóôðôðôð…ôðüüõì’õûëúæëûüüžõììõúú=´ ƒ‚Ìjìçü”žææëüújììõëüûžçûüéûõì“çüëõjžéüüçjììæújjìçüƒûúñ÷‚ñëú„ìjjð÷…óžëúö÷‘òjëúúìjõëúæìjçëúë÷‡óçjìçúëjˆëëæìjúüö ÷‡ôçëúìæó÷šæçúëjjçëçjjëëæjð÷÷ôjçëæjúö÷’òúúìjúëjjçëõjæëçjj÷‹öëújìëújìëž÷‡ïõìëújï:ý‚÷÷Fý÷ýàö„ïöïöïó‰ñóññðñðñðñ‰ððñööóððôðôð‹ôððôúúçõììjüŽúæúžžõììjçüÚµƒµƒ†9žžúæçü‹ûõìjjúçjìõëü†úììçëæì™çüéüûõëûüçjììõžüûúúûüüûçô÷‹öóžææúëjìjð÷…ðëúžï÷‘üõúëújìõúëõjìçúúë÷‘óúìjçëújìõúëõjìúü ÷¤ðæëújõï÷÷öççëújìúúçìjúëõjò÷÷ñìçúçjúö÷“òëçjìëújìúúæìæúúìõö÷Šëëjjçëjjúž÷‰öõjçëjï÷÷:ý÷býàŒö÷ö÷ööïöïïóïóŠïñóñóññðñð ñƒö÷ïðôðôðŠôðçìçûúæõûüŽújìjçúæjìçü¦×´ƒ‚µ´ƒ‹Ì¦éüüúçëûûæì†çûüžúúüëìŸjëëçìçüéüüjììjçõììõžüüûúìçëžæûó÷‹ñëjììõëçæjñ÷…ðëëžö÷‘üjëúúìjõëúæìjçëúž÷’óçììúúëjjõëúæìjúéö ÷‡ôçúëjæó÷šççëëìjçëçjìúúæjô÷÷ñjçëçjæö÷ ôúúìjúëjjçëæjõëçjjö÷÷öžúõìúúõìúë÷‡öæìúúõð÷9ý‚÷÷ý‚÷÷Yý àƒ÷ö÷öïó„ññóðñð ñ…ööïññðôð¢ôððôúìæéüüûçúžûëjììjëüžëçëû¦¥88988ƒ˜Ì¦éüüëjìõæúõììçžüüûæjæëú슞üüûúçûüûjìŠúüûëæžûüûúì…õúúéö÷ƒöðúì‡jûüûžéó÷…ôëçžö÷‘žjúëçjìæúëõjìçúúë÷’ñçìjçëújìõúëõjjúüö ÷‡ðçëújõï÷šúæëújìçúçìjúëõjò÷÷ójçúçìæï÷“ðëújìúúõìçëæìõëúìjö÷‹žëjìçëjjçžö÷†æjçëõô÷9ý„÷÷ýý÷Xýàƒoö÷öïó‚ñóñð ñƒö÷öñ…ðñððôð†ôðüõõéü¡æììõúçõìjúüüéëõæúëçì}}ßµƒƒ´=úžüëj윞ûžúúžüüûæììjæžçõjžüéüëìjìçæìçü†žæõëûúì†õžüüñö÷ˆïéçúæõjûü‚ðï÷…öôëúû÷‘žjëúçìjæëúæìjçëúž÷’ñçjìúúëjjõëúõìjúüö ÷‡ôçúújæó÷šúçúëjjçëçjìúúæìò÷÷ïjæëçjæï÷¡ñúúììúëjjçëæjjëújìö÷÷öžúõìçúæìçëö÷†ëìçúæé÷9ý÷Wýà‚÷öïƒöóïó‚ñó ñ„ïööóñƒððôðˆôüëúžûüçì”æžûëççûüéëõììjçúçj}´ƒ†<ìjæççìŠëûüüëõæúžçìõü†ëúëéüëì†jžüëçúü‚žæìŠúçjìõûüüéñ÷óüçéûžúëžüéóö÷„òëçü÷Žöëõúëçjìæúëõjìúž÷‘ñçìjçëújìæúëõjjúü ÷ðæëújõó÷÷öëæëújìú‘ìjçëæjé÷÷öjæúúìæó÷“ñëúììëúõìçúçìõúúìjï÷‹žëõjæëæjæëï÷†žjæëæü÷‚öû8ý÷Uý àƒöö÷ö†ïöïïóïó‚ñó ñ„ïööó ñ˜ððôüûjìjæúõjìõžüüéçæçžëæì†çüéû´ƒ<ì†õûžëæúü¡žõììæúúæjõüüéûæìõæújììjžéüüçæçûëæì†úüüûúëü‚ëñ÷Œñûúéüüžjõúéö÷†öôžëúé÷’öëõëúçìjæëúõìjçëçû÷‘ñæjìúúëjjõëúæìjúé ÷‡ðçúëjæó÷úçúëjjçëçjìúúçìé÷‡õæëújæó÷“óúúìjúëjjæëçjjëújjï÷‹ûúæìçúçìæúö÷†üìæúçë ÷ƒüõì5ý÷Tý àöˆïöïöïïóïóñð ñ„óö÷ó ñ„ðüûõì˜çûžçæúüüéçjììõúçæjæüéü¦Úƒ†8õììjûü“çæçëëõììjçüûžúëûéûæì“æžûçõžéüüçjììõúõìjúüˆžììõëæüö÷Œñûúûûüëììjôö÷‡ðçjjæúð÷Žöçõúëæjìçúëjjìúž÷‘ðæìjçëëjìõúëõjjúé ÷‡ðçëújõó÷ëæëújìçúúìjçëæjü÷‡jæúúìæð÷“óëújìúúõìæúçìjúëìjó÷‹ûëõjæëæjjëó÷†éjõëçú ÷„òjjú4ý ÷(ý÷ý÷ý‚÷ý÷ý÷ýà„o÷ö÷ö…ïïóïïó‚ñó ñ…óö÷ïó ñ„ôçúçì‚æûü“æçëûújììjëüüëúëûü¦Úƒ†Fûëçõžü“çììjçúæjjçüüéžõjæúçì“æüéüûõçëüçjììõžüûëúüˆûjììjëüñ÷öïôüæjæëújìjò÷‡ôõììõžó÷’ïçõëúæìjçëúõìjçëçû÷‘ðæjìúúëjjõëúõìjúé ÷‡ðçúújæó÷ëæúëìjæëçjìúúçìü÷‡õõëújõñ÷“óúëìjúëõjõëçjjëëjìó÷‹éúæìæúçìõëó÷†ôìõúúç ÷†òõìúëó5ý÷'ý÷ý÷ý†÷ýý÷ý÷ý†÷÷ýý÷÷ ýàƒö÷öï‚óïó‚ñó ñ…óï÷ïó ñôçìëûëææžüüéæìçúõõjúüéüžjõæ̃ŠÚéüüûççëžçì‹æëüžëçžüéëjì›úžëõæü[üüæììjççììõžüüûúìõçžì…jëüéó÷‚ööïŽöïñéûæììjçžçõž÷ˆöôçõìõûñ÷‹ïææúëæjìçúëjúû÷‘ðæìjúëújìæúëõjjúé ÷‡ðçëúõõó÷žæëújìçúúìjçëçjû÷‡õõúëìæð÷“ïëújìúúæìæúúìjúëjjô÷‹éëæjõëçjjëñ÷‡ñjjëççö÷ˆôõjçëñ÷÷9ý‚÷÷&ý÷ ý‡÷ýý÷ýý÷ý÷ý à„ö÷ö÷öïïöïïóïóóñóñóñóñ„ï÷ïó ñ„ðëìúü—æúžüçjììæžüüúúžüüžjìì}8ƒÚüŠõììjúçõìõžü†çjõçúõì—úüéûë缓(,fkçüûûçëüüûúì¤æûëõjžüüééñï÷÷öðééòééòéžëëžæjìjçéüéü÷‰óðéûúúžñö÷¦ñçæëúæìjçëúõìjúëçü÷÷öðæjìëúëjjæëúæìjúé ÷‡ðçúëjõó÷ëæëëjjçëújìçúúìû÷‡õõëújõð÷“ïúëìjúëæjõëújìëúõìô÷‹ôúçìõúúìjúð÷‡ójjúëõö÷†ñçìçúð÷=ý÷!ý÷ ý…÷÷ýý÷ý÷ý÷ý à÷ö†ïöïöïïóñóñ„ï÷öó ñ„ðüjæü‡éjììjçæjŽžü¦û}3çëõjìì<ƒ†´çúžûõìŠçûûëúúûüüçìœõëúçõúüéüž\(ÊàÊàÉ((“[ëæjçúçì“õûüüûæëüéçìúéôôéûçëüúìŠõëújjçéüéò÷‚ñòü„ëõüï÷Œóûúúëëõjìúúëjúü÷‘ôæìjúëújìæúëõìjúé ÷‡ðçëújõó÷ûõëújìçúúìjçëçjž÷‡õõúëjæô÷“ïëújìúúçìõúúìjúëjjé÷‹ðëçìjëçjjëé÷‡ójìëújï÷†óçjæëé÷:ý÷!ý÷ý÷ý÷ý÷ý÷ ýàƒoö÷ö†ïöïïóïóñóñóñóñóñóñóó÷öï ñˆôüžæëûüæì“æûüûçëû¦Ú´´<õëëæõ<ƒ£´ììjõúæõìçûüüûæõæëújììõûüéžççžüž\(Êà‹ÊÉ-kìjúëçjæü’õììjçõììæüüéûæìçžúìŠõžéüûçžûüò÷‰ðéûüüújžñ÷”ñüëììæçæìjúëúõìjúëçé÷‘ôõjjëúëjìæëúõìõúé ÷‡ðçëëjõó÷žæúëjjæëújìçúçìž÷‡æjëúõõô÷“öúëììçëçìjëújìúúõìü÷‹óúúìõúúìjúü÷‡ïjjúëìö÷†ïúìæúé÷6ý‚÷÷"ýƒ÷ý÷ý‚÷÷ý÷ý÷ý÷ý÷ ýà…€öö÷ïöïóñóñóñóñóñóñóóööï ñ„ððüüì˜jçõììõûüéûæìç¥Úƒƒ´8¦û¦¥ƒµìŠëûûúúëûüûæì‘çëçæõžüéûúìjõçç©Êà‚ÊÊà(fæúüüûëçžüüjìŠçûûëæûüéûæìŽúëæìæûéüûæììçò÷‰òæõúžúìžó÷„öðüúìˆjüžúæúúëj„úúçé÷‘ôæìjúëújìçúëõjjúé ÷‡ðçëëjjó÷žæëújìçúúìjæëçjë÷‡õjúëjõò÷“ïëújìçúçìjúëjjçëõjë÷‹óëújìëújìëû÷‡ïæìúúõñ÷†öëjõëû ÷ó3ý÷#ý÷ý÷ý÷ý‚÷ý÷ý÷ ý àƒöö÷öï”óïóóñóñóñóñóñóóö÷öóó ñ„ðüüjì—úüüžçžüéüæììß̵ƒƒµ´ÚFƒ…3õjìëü†žõæúžçìæü†ëúúûûúì„õû[“à ,f©ÉÉáàÊɼ[üüžìjjççjììúüüéëõõëžæìŠúüéüëúüüûõì‚ëï÷ƒöéõì„úçûó÷«ïûúçõììæüüéüõæëëjìõúëçò÷÷öôõjìëúúìjæëúõìõúò ÷‡ðçúëjõó÷ûæúëjjæëújìçúúìë÷‡æjëúõõò÷“öúëjjæëçjjëúõìúúæìú÷‹öúëìjúëìjúž÷†æjçëõð÷†öžìõúû ÷ƒöçj0ý÷#ý÷ý÷%ý à‚÷÷öï‚óïó‚ñóñóñ…óñö÷öñó ñ‘ðõõçjììçüüéžõìçžçì‚<´ƒµƒµœüžçúžüüžjììjúúæõæûüéžõìõæçõjìõüé[ÉÊàÊf\\kf’ààʼºüëì—jžûžúúüüéújììõëçõìúüéüëì‚çæìƒúðö÷„öóûõì„ëüðï÷Œïžõúûëççûüéžì‰júçõjúúçé÷Œòõìjúëçjìæúëj‚ëé ÷‡ðçëújõó÷ûõëújìæúúìjæëçjú÷‡õjúëjõü÷“öëúõìæëúììúëjjçëæjæ÷‹öëújìúújìúë÷‡öæìúúõò ÷†žjjëëö ÷„ëìõú-ý÷#ý‚÷÷ý‚÷÷ ý÷ýà„o÷ö÷ö…ïïöïïó‡ñóñóñóñöˆóóñóñóñóñðæìëüûëçüüéûõìŠúëçìõ¥µƒµµƒŽ^¦¦ßúëëõììjúü†úúëûžõì çûžúçžéüüf,ffgëçõõº[“ààÉgõúõììjûü’æõçžújììõžüüžçëéüëìˆjžéëæëòï÷‹ïéçëæjjžüðö÷„öòçëü’çæúžëjììõûüûëúëëçô÷‘ôjjìëúúìjæëúõìõúò ÷‡ðçúëjõó÷ûõúëjjæëújìçúúìú÷ˆæìëúõõüö÷’úëõjõëújìëúõìçúçìõ÷‹ëëjjúëjjçëö÷†çjçëõé ÷†üjjúžï ÷†ëjjëæj*ý÷$ý÷ý÷ ý÷ýàö„ïöïöï ó ñóñïööóóñóñóñóñóñóñðúìçüüéžjjúžõìŽçûéüžçžû=ß<´µƒ´ÚÊ´8ßõúçõõúüüéëjìõççõjìçüéüûõçúžõ\\ìúüüûúúë¼’àÊ,\çûžúçûüüéõììjçëçjõžüéûæìjõúì–jûéüûõõûïïñžçæûüüëúžéï÷„öôúëü“æììjçúæõõûüéžæìæçúò÷‘òõìjúëçjìçúëõjjëò ÷‡ðæëúõjñ÷šûõëújìæúújjæëçjçö÷÷æjúëjõü÷¢öëúõìõúëjjçëõjæëçjjö÷÷öžúõìúúõìçëö÷†žìæúæû ÷†éõìëëï ÷‡ûìjúúìç(ý÷Qý à„ö÷ö÷öˆïïóïïóóïóïó›ïóïö÷ïóñóñóñóñóñóññòúçüüéûjì–ëëçìçžéüûæììæçjììjÚ„µƒ˜´8žüüûçžûüëjììjëûžçúûéüûì†júúæjçüŠëõjç-ÊàÉfçü†ûõæúûõìŠúüûüëúžéûæìŠçûûçæüéüüjì…ëûõìæü…žõìçð÷ˆïòûõúžûõìëüüûúëžüžõììjžð÷’öòõjìëúúìjçëúõìõúò ÷‡ðçúëjõñ÷šüæúëjjæëúõìæúúìçö÷÷æìëúõõü÷“žëõjõëújìúúæìæúúìõö÷‹ëëjìçëæjæžï÷†ûjæëçž ÷†òõjúëó ÷‰üõjëújæëj%ý÷Rý àƒ÷ö÷öï ó‡ïö÷ïóñóñóñ‹óññôüëjõúžjìŠúûüûëçžüûçìæéüëõûüüœ8´µµƒ‹µüüéçjìæçæj‰ëüéûëõúëžì–žüüžçúëüëõì\fÉàÊ-çûüüûìõúúæjúüüéëõìõæçìŠúüéûëìçëûjìëü‰çëûüëõìçô÷„ïóüžì”õúæjjëüüéçjjççæjìõûó÷’ïéjìjúëçjìçúëjìjëé ÷‡ðçëújõñ÷šüjëújìæúëjjæëçjæö÷÷æjúëõõû÷¡žúæìjúëìjçëõjõëçjjö÷÷öžúõìçúæìæúï÷†éìæúçú ÷†ôõìúúñ ÷‹òjìúúìjúæìú!ý‚÷÷Sýàƒoö÷öï ó„ïö÷öó¡ñóñóñóññðéžììjjëúçìúûéüžõjìæçjììõüŠûõjúûúìì<̃’ûûüújììõûûëæëûéüëì›õúçõjžéüüçjjæççjk,ÊàÊëõçúžì–žüûûçëûéëjììõëûžçúüéüëì’jëçììžéüüçjìõúõìõé÷…öòûžëìjü†žúûûéæì‡çûëçëôï÷”öñëúçæjëúúìjçëúõìõëò ÷‡ðçúëjõñ÷›éõúëjjõëújìæúúìæö÷÷çìúúõjûö÷“ûëæjìëújìúúæìæúúìõï÷‹žëõjæëæjõëó÷‡òjõëçúö÷†ðõjçëô ÷ôæìëújìëæjçëjý÷8ý÷ýà‚€÷öï„öóïï óƒö÷ïó‰ñóñóññôëžì’ëüüûúçûüžõììjçüûúæü‚ûæì›çúõìõƒƒµ<}ìæçõììõžüéžçæëžúì—jüéûžçžžüçjììõžg-(ààÊëì›æúçõìûüüéæjjæçæììõžüéžçjúžëìŸjüüûûçûüüæjììçüûúçñö÷öóžììúçjjæüŽììõúæjììúüüéòó÷öôçžüüëúëëçjìçúëj‚ëò ÷‡ðçëúõjñ÷šéjëújìæúëjjõëújõï÷÷çjúëõõž÷¡éúçìjúëjjçëæjõëújjï÷÷öûúæìæúçìõëï÷‡ðìjúúæö÷†ñçìæëô ÷ñæjçëìjúúìçúõìëý÷8ý÷ý àƒöö÷ö…ïöïïóï‚óïó‰ïóóö÷öïóïóïóŽñóðjjžúæjúüéüëj†ççjììçü†ûúõúžçìçü†žçßìŠçüûúæžüéûçì›çúæjjûéüüõìjççæ\\漓’ÊàÉ(gúì¬õüüûžúëûéæjììçžžëçžüéûçìjjÞ‰rÄseéüüìjìççjììçü’ëûôñðûæììúüüûúžûûžìŠõžûúæëüüéð÷–öôæûüéüõìæçúìjçëúõìõëô ÷‡ñçúëõõð÷›éõúëjjõëúõìæúúìæï÷÷ëìëúæjžö÷“üëçjìëúõìçúçìõúúìjï÷‹ûëæjæëçjjëñ÷‡ñjìëúõï÷†ïçjæëé ÷‘óúìçújjëújæëõjúúìý÷9ý÷ý àö—÷ïöïöïïóïóïïöïïóïóóö÷öï ó•ðæìžüüžúúûüžjììjúüžúçüŠòóïôëëúæìæüì‚ççìŠæûüéëõæëžçìŸæüéûëúûûüõìì\ç[g,(’ÊààÊ©fjúçæjõü“éìjõæçõììçûüéúææëëæì‚Þ?„heüûì…žüëçúüúj†õëõìjžü’úììæújjìæžüüûæçžðï÷‡óçëžüûjìŒûžëæçúëjjõëò ÷‡ðçëúõjñ÷›òjëúõìõëëjjõëçjõï÷÷újúëæõëö÷“éúúìjëëìjçëæìjëúììï÷‹üúæìæúçìõúð÷‡ójjúëjö÷†ïúìõúû ÷“ïçjõëjjúëìõúæìúújjëý÷:ý÷ýà„n÷ö÷öïöïöïƒ÷öï ó§ñžjëüéüëìjõççjììúéüüúõæëéï÷÷ö÷öñéëúûüüjì ëüûúçûüéžæììjúçõjæüéüüììõúæõkf©“Ê‘àÊÉ(-æ\ìúüüžúúžûüì“žûëúçûüéëõìjæëçæìÞ?î•ÃÄÞõììjžéüüæjçûújììõü†ëúûüûæìúüžæçžüüžõìæð÷—óëìjçúõjìjûüéüææúžõìõëô ÷‡ðçúëjõñ÷›éjúëjjõëúõìæëúìõó÷÷žjúúæjëö÷“éëújìëúõìçúçìõúúìjó÷‹éëæjõëçjjëò÷‡óõìúújï ÷…ëjõëž ÷”ëìõëæìëëjìëæjçëìjúçûý÷:ý÷ýàƒ€ö÷öï„óïïöï‰öïïö÷ööóï óôžúúžüžjììjëûëúçü†ëõììçð÷†öôžjçæìŠúüüéúõæëžæì‰úüéüúëüûüì“\g(ÉÊàÊàÉÉ,fæúçæõúüœžìjæúõjììžüüéçõæëújììõžüüëÞzî“Ãzdëçžéüüõììjúëõìæü†žjìjçæìëûüüçjçžëjìúó÷‚ïëì“æüžúæžüéžõììõúçæõëô ÷‡ñçëúõjñ÷›òjëúõìõúëõjõëújõó÷÷žjúëæjúö÷“ôúúìjúëjjæëçjjëújìð÷‹òúçìõúúìjúé÷‡ïõjúëjñ ÷†žìjúûö ÷–ëjjëçjçëjjúúìçújjëçûûüý‚÷÷;ý÷ý à„÷ö÷öƒïïöïöïöï‰÷÷öïöïïóïóïó™ðüëìjæúæõììëéüüçææëëõììõò ÷¶ïïñòžúúüüéëõììõëçõjúüéüžììjújjì,ÉáààÊÊ()-f\\jžüüžúëûûžì™jüûúçëüüéçjìjçëçõõûüéûæ2Âî•hzÜæúžõììjúéüûúëüüžì…üüžæûüçì…úúæžï÷šöóžõììúüüéúõçžúõììõžüüëúëô ÷‡ñçúëõõð÷›òjúëjjõëúõìæúëìõó÷÷ûìúëæjúö÷“ôëújìëúõìæúúìjúëjìò÷‹ôëçjjëújìëü÷‡öæìúúõð ÷†ûjìëëö ÷—ûìjúúìæúõìúújõëjjëëûüûü ý÷=ý÷ý à÷öˆïöïöïöïöïöïö‚ïöï‚óïó„ñôûžì“jûûëúúûüüújììæëúæõé ÷–ö÷ööéæõëëõììjëüéûúëüûžì…ûéë)Êà—Éfk\æëæõõžüüûúìjæúõjìõûü…õæçëæìçûüûúçëüžõì|shî–ÃÄÞëëõjëéüûúììjçõììjéü…jjúûõì„ëüüð÷Šïéûëæëûüéõìçëæõæûüéëjìžó ÷‡ñçëúõjð÷›ôìëúõìõúëjjõëújõó÷÷üjçëæjçö÷“ðúúìjúëjjæëçjjëújìò÷‹ñúúìjúúìjúû÷‡öæjçëõô÷‡öüjjúëï ÷“ûjìëúìõëjjúëìõëæìëúû‚üö ý÷>ý÷ýàƒn÷÷öƒïöïö‚ïöï…öïöïöïöïšñòõçæõììžéüüçææëúõììjžüüûô÷öïòžžúõjëüéûúì‚çjì…ûéü[ÉàŽÊÉ(fgº[[ëúžûûçì†çüûúçžüjììjúúæõçüüéëjìõççjì|ŠeedNÄÃî—ÃÆéüžçëüûçììjçüûëæéüüžj숞úõìëüéñ÷öü…ìæúûõìëü‰çëžüújìúï ÷‡ðçëëjõð÷„òjúëj”ëëõìæúëìõñ÷÷éìúúçjçï÷“ðëúììëúõìæúúìjúëjjü÷‹óëújjëújìúë÷†çìçúæü ÷†éõìúúï ÷›éjjúúìjúæìúújjëçjçëúüûüûöûüý÷>ý÷ýà…€öö÷ïö…ïïööïö„ïöïöïöïöïöï™ñììüûëçúûüüújììæëçæõëüüéñ÷ö‡ñûçúüûúì†õüéžçûüƒÖ(ÊàŽÉ’ºæì\æç\jìçüÈžjæúžõììjëüüûçúëüëjììjûûžçëûéüæì|ÜzhŽîî?ežõjjæçõìjúéüüújõëëjììõûüüûçëéó÷†öóûüüžì†jëúõõžü‰æììæçæjçð÷‡ñçëúõjð÷›ðjëúõìõúëõjõëújjñ÷÷éjçëæjæï÷“óúúìjúëõjõëújìúúõìû÷Œïúëìjúëjjúžö÷†úìæëæû ÷†ôõjçëñ ÷šôæìúújìëçjçëjjúúìçúæûüûûïüûCý÷ý àƒïö÷ö‚ïï ö‚ïöïöïöï™ójìžéüüæõçúúõììõžüüžúúžüð÷—öôžjúõììõüéüüìjçžõjìæ(áàá’É,f,)¼çúûüüžì†õëúææëü˜çììæçæjìjüüéûõõçëæì|ì‰{Lî{džjììõžüûëúéüüçì…çûçõæü…ëõìçð÷†ïüìæúëìçüŽžçžûžõììõëüžžô÷‡ñçúëõõð÷„ôjëëj”ëúæìõúëjõñ÷÷ôjúúçjçï÷“óëújìúúæìõúëììçëõjë÷Œöëújìúúõìúëö÷†ëìçúçë ÷†ôæìçúð ÷ŸñæjçëìjúëìæúõìëçjõëjüûüûóéüûüûüAý÷ý à‚÷÷ö…ïïööïöïöïö„ïöïöïöçúûüüújììæëçæõžüüûúìjõû÷Šïïðòžçûéüüì‹ëžæìçü[ÉÊÊà‚ÊÊà†)úìæëëìŠõûüüûæúžûæì“æüžëæžûéûjì|ìŠsÂÂÃî‘sõççõìõûéüûõjõëæìúü‰ççëüëjìçò÷‚óëì‰ëžçjúûüüëìŠçæõjõžüüòñ÷‡ñçëúõjð÷›ðìëëõìjúëõjõëújjñ÷÷ôjçëçjæó÷“óúëìjúëæjjëújìúúæìú÷‹ëëjjçëõjæëö÷‡ûjõëçúö÷†ñæjæëò ÷”ñçìçújìëújõëõjúëìjúõû…üôôûüû@ý÷ýà„á÷ö÷ö‚ïöï”òüæõæëúõììõûüüžçúžûúì‚úï ÷…óžõæžìëüŠççžüúõæ,Êáà‚Êfì çžúõæžüüûõììæúæjjçéüüëjõçëjÜÂÄhî¤Ârìçûûžúëüüûjììjžûúõëéüüæjìjççìúð÷‚ñçìžü…ççžûçìŠúüüëúžûüéð÷‡ðúúëõjô÷›ðjúëõjjëúõìõúëjõð÷÷ðjçúújæñ÷“óëújìúúçìjúëjjçëæjæ÷Œöëúõìúúæìæëö÷†òìõúúç ÷†ñçìæúò ÷Ÿïçjõëõjúëìjëçìçújjëæûûüûòñüûüûü@ý÷ýà€ö„ïöö÷öïöïöïöïö‡ïöïïòüçì“õžçææžüüûçììõúæõìúó!÷‰ööóéüžçjëüçjììçúììõž¼’Êà‚Êfì–çûüüžæëžžõììjúüûëçCdŠìƒjCîÃsÜŠŠõìúüéüëjõæújììjüéüûõçëüõì…úüûüñ÷†ñžéžçìüjì…ëõjìëü†úìõçëü÷ˆóüçëúõjô÷›ñjëúõìõúëõjjëúõjð÷÷ðjçëçjæñ÷”ïúúìjçëçjjúúõìçúçìõö÷‹žëjjçëæjõëï÷‡òìjëçæö÷†ïçjõëû ÷šöëìõëçìúújìëçjæëìjúúûüûûüïû‚üû@ý÷ý à„÷ö÷ö…÷ö÷ö÷ö‡éúúõììõü†ûçúžûçì†çûüëûó%÷«ö÷ïðúæëüçjììæûüüúëüüºÉÊÉûúõçûüüžjììççõjõëüŽÞrÃŽÂÜ|õéiŽîîŒÃÜjëüûëúëüüúì‰æžžçæüéüüìŠõúçjjëéüéñ÷žöðõéüüžjçûžjììjûüüëúûüûçììjúéó÷‰óûjjæúæjô÷›ðõúëõjjúúæìõúëõjô÷÷ójçúúìæð÷“ïëújìçúúììúëõjæëçjj÷Œöžúõìçúçìõëï÷‡ñìjúëõö÷†öëìõëû ÷žëjjëçjçëjjúúìæúõìëúûûüûüöüûüûü?ý÷ý àƒ÷ö÷ö÷ö÷ö÷öïöïöïöˆéìõüúæõûüŽõììjúæõjæûüüôó)÷–öïéúçújìæûüüëõìõúæ\k\žü…úõëûëì†æžüüëúûƒærÃî¤Ä2ûézÄÂîÃrBüéûçìõæçjììçüéüëõçëžìŒõžüûžçûüûëôö÷‡ïòçéüüúì•æëõìæûüüëõìjçæììjžüòó÷ï÷‚óžì…çûëžó÷›ñjëúõìjúëõjjëúõjð÷÷ójæëújõð÷”ïúëìjæëçjìúújìæúçìõï÷‹žëõjæëçjjëñ÷‡ñjìëújï ÷…ëjjëž ÷›žìjúúìæújìúújõëõjúëëûûüû÷ûüû?ý÷ýàƒáö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ ö„ðìjéü…æçžûçìŠçûüžúúžûòó,÷“ööïðüçëüüëõììjžüëõëüúìçúõìæžüüžõìõúçÜÂîŸræçžëj|ÜÄhîNëüžæììjúžëçúüéüëìŒçëçjæûéüžõjjç‹ðöïóôüæjçûæìçü“çëüüújììæûüúæžüüéôó÷„öðžö÷‰óûõjìúüéð÷›ñjúëõjìëúæìõúëõjô÷÷öjæúëjæô÷”ïëújìæúúìjúëõjæëçjjö÷‹ûúæìæúçìõúñ÷‡ïjjúëjï÷‡öûìjúžö ÷‘üjìëújõëõjúëìõúçìú‹ûüûüïüûüûüû;ý÷ýà‚€÷ö÷ö÷ö÷ö÷ö÷öïöƒóçjüõìŽúçõjçžüüžõìõžñ/÷”ö÷öðëjçæììjžüüûæjúûúì‘úûüüëúûûžõììõëûÆLî‚hrìšçëæõæC ŽÃÜõççjìjëüéûçõçëúì–úüüûúçžüëjììæûòñóòéüûõì…ëëõìëüšæjìjçõììçéüüëìõëëjjðóñòéüö÷‰ñòûžçëûòñ÷œöéjëúæìjúëæjjëúæìô÷÷öõæëújæô÷”öúëjjõëújìúúæìæúúìjï÷‹ûëõjæëçjjëô÷‡ïõìúújñ ÷†ûjìëëï ÷•éjjúúìjúçìçújìëçjæëæüû‡óüûûüûû;ý÷ý à™ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷öˆïéûõæëûçì†úûüüúúû…æììæé3÷Œööóðéžçžüüûçì…ëëæìúü–ëjìjúæjìõžüühîîrjììúü¯úúë îîÄ|æûžëçëûéûæììjëúçõëüéüçìjõúæjæüóö÷÷òæçëjì‘ûéüüõëüüõììjúéüëçüçì…æûçjëüô÷‰ñòüüëõõûñ÷’ïûçúžõjìúúæìjúëõjò÷‡jæúëjæô÷”öëúõìõúëjjúëõjõëújjö÷‹üúæìæëúìõúò÷‡ïõjúëjð ÷†éjjúëó ÷Ÿôæìúújìëújæëõjúúìõújûüûüðôûüûüû;ý÷ý à„÷öö÷ö÷ö÷ö÷ö÷ö÷ö…÷ïòüæì’úúæjçžüüžjìjçæjìõü7÷ˆö÷óüjçëæìëü…úçûüëì§æžüëçëüüûrÃîîzúæõúüüéçjìÜÃîÃÜæûüéëõõçúæì‰ûüéûççžûæì…úûòðï÷Œñæìæûëæjüéüûì›õçõìõëéüûõìõúæììjëéüüæçžûòï÷‰ñüûüúììúó÷”öñëììjçúõjúëõjjëúæìò÷‡õõëújõò÷”öúëõjjëújìúúæìõúúìjó÷‹üëæjjëújìëü÷‡öæìçúõé ÷†òõìúúó ÷›ðæjçëìjúëìæúõìëúìjëõûûüûôðüûü;ý÷ýà á÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ïüžçìçüŽëçûûžõììõëüžëé;÷ˆïïéüžçjëüçìšúæììçûüüžõjçžærîidéæúžûçì ÄîzÞžûéëjììjûúçõûüéüjìjõúæõìûôï÷Œóžìçüéüújúûëì•çûüûúúéüžjììõžüçõžéüüìð÷‰ðúõúçjõûï÷‚òæìúüüžçžúæìõúëõjé÷‡õõúëjõé÷”öëúæìõúëjjçëæjõëújìó÷‹òúçìõúúìjúü÷†æjçëõü ÷†ôõjçëð ÷Ÿñçìæúõìëújjëæjçëìjúçûüûüéóûüûüû;ý÷ýàƒ€ö÷ö÷ö÷ö÷ö÷ö÷öš÷ïûìçžçìæûüüûjììæçjìjúüüéð?÷ˆöïôçæžüçì²úûüûúëüüžjììõûžNîî?2|ìjçæõjÄîîLrìõççõììõüüéžæçëžìˆjûüüòñö÷ö÷ˆóéæúüéüçì‰úúæìúüéüújújììæüéüžìçžžì‚çó÷Šïüæìõžûžôö÷–öõëúõjûéüûõìõççjjúúæìé÷ˆõõëújõòö÷“ëëæjìëújìçúçìõëúìjñ÷‹ôëçjjëújìëë÷†çìçúæû ÷†ôæìçúò ÷”ïçìõëõjúëìjëçìæëjìëúû‡üïûûüûû;ý÷ý àž÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷öéìæü’ûæëüüõììjëüüžçüûéðC÷ˆïòúëçjìúüªújìõëjììõûüü?îîŽÃsÜBéüBÃîîLrììjçüëççüüéžì‰æúæõæüòñö÷Žïôéï÷÷óôûæõúžõ쉞üüûçúüüçì‰úûüúúüéüúì†çëæìúó÷‰ôæjìçûééó÷ñõüéüëçžûëjììçûûú„ëæjü÷‡jõúëjæé÷“ûúçìjúëjjçëçìjëújìð÷Œñúúìjëëìjúžö÷†újæëæž ÷†ñæjæëé ÷Ÿöúìõúçìëújìëújõëjjúëûüûüû÷ûüûüû;ý÷ý à…ïö÷ö÷ö÷ö÷ö÷ö÷ö…÷öñæõüìŽjçõìjúüüéúìjçéE÷ŠööïðüúúüüúìŒæûüúæûüüûìÂîŽhi hîÃrõìjçü…çõçžúìæü’úéó÷ö÷öñôééï÷öñòžj왞úæìûüéûõìjõúõìjëüéžçìæëæì†ëüéüæô÷Šóôüüúúûüéñ÷˜üúüéüçììjúæõìúüéûçjæççìü÷ˆõjëëõjüö÷“ûëæjìëújìçúçìjúúìjò÷‹ñëújìúújìúë÷†ûìæúçú ÷†óúìõúü ÷šëjjëçjæëjjúëìõúæìëúëûüûûöüûü;ý÷ýà¢áo€ö÷÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷ö÷öïüûìæëéjìëüŠçûüéëjììçöD÷ö÷Šööôëjújììçü‹žìõúûìì|ÄŽîšÃzCüžúúûüüçììjúëçæúüüéûôö÷ïòüéòö÷öòçújììjü ëæúûžjììõžûûúëüéžõììjžžçìüüéüjæö÷Šñòüéžæìæûó÷šöéæçûûjììjžüüúúžüžæììjžëëò÷‡õjúëjõû÷“üúçìjëëjjæëçjjëújìé÷Œïúëìjúëjjçëö÷‡üjõëççö÷†öújõëž ÷Ÿžìjúúìõúõìúújjëçjçëçüûüûïüüûüûü:ý‚÷÷ý à‰áo€ö÷÷ö÷ö÷ö÷ö…÷ööéüì“jëúõìúüüéçjìjçõììçóD÷Žööïöö÷ööïïðéëúüëì¨æûúõõûü>hÃÂÜÜëüüûõjæëæjìjëüüéæçëûõžó÷¦öïóóööïžjæžúçæüüéúììõçúæìæûüéújjæújììjü–ëjçûëjçñö÷÷óüžüüëjììçï÷‚óžì•æúæõæûüéëjìæçæjìõüüéô÷ˆõjëúõjüö÷“üëçjìúúõìæúúìjúëjjû÷Œïëújìúúõìçëï÷‡òìõúúæö÷‡öëìõúžö ÷”ûjìëújjëæìçëjjúúìçúæû…üñòûüû4ý÷ý‚÷÷ýà–no€ö÷÷ö÷ö÷ö÷ö÷ö÷ööëžõìëüŽçúûéújììæûüžëñD÷ ö÷†öñëjçëìæü¦žõëûžj|ÜÞCéûëëüüûõììõžžçæžüüéjììjúçéïö÷‡ö÷÷öéúëü…çæçžçì©úüûûçëûéúììjçüžúçüüéúììjçëæòööñðújìõúììjž÷ƒðòçìúü‘çëžüçììjçüëúúûüéð÷ˆôçjúëõõû÷“òúúìjúëõjæëçjìëúõìž÷‹ëëjjçëõjæëï÷‡ôjjëúæï ÷†žjjëëö ÷Ÿéõjúúìjëúìçúõìëúìõëjüûüûðôüûüûü5ý÷ƒýý÷ýàÊà‰no€öö÷ö÷ö›÷öïújúžçõúüüéújìjæçììõžüéòïD÷ƒööïöïöŒïöö÷ööïôéžæçüëì’çúõìçžüüëjìõújjìõûü‘ìçëûjììjžüüéûòñ÷ö÷öóððôòžçjjúúæjëü‰æìjæçõìjúü…æjæžõì’ëüüéúëüüæììjúüüžéö÷ˆöçìžëõjžü‘jììççõjõëüüûjõçžô÷‰ñûæúúõjžö÷“éëçjìëúõìæúúìjúëõjú÷Œöëújìçúæìõúï÷‡ñìjúëìï ÷†ûìjúëï ÷šòæìúújìëújõëõjúúìõúæûüûûòñû‚üû8ý÷ý à„©ffÉàŽn€ö÷÷ö÷ööžìúü’çæúüújììõžûüúúüéòóD÷ö÷†óéjæëúì’úûüüúúüüëjììæüüúæûüìõžçõæžüüžõìõûòñï÷…öïïóðüªžæúžûõììõžûžëúüüûjììjûžjjûüüûõììæúõìæžüüòð÷ƒñìjü‘ûæúžëjììçûüžúžûüëì‚çð÷ˆðújìúççë÷“ôúúìjúëõjõëújìúúæìú÷‹ëëjjæëæìjëó÷‡ójìëújó ÷†üjìëëï ÷Ÿðæìçëìjúëìõúçìçújjëçüûüûéóüûüûü;ý÷ý à…(\ìfÉàŸo€÷ööôççüüéújìjæúæjõžüéžæìjúñD÷ƒööïöïöïöïöïö÷÷ïïòûžçjúûüüúì…úõììæü…ëìõúëì–æûüüëçžûëjììæûôï÷÷öö÷ö÷¹öôéüžjìjççæjæûüüžjõæújììõûëjìjçžëjììçûüûúúüüëëö÷÷ïôççûüüúì…úçõìúüŠúìjçújjìžñ÷‰ïòžòðóñïö÷“ôëújìëúæìõëëìjçëæjæ÷Œöžúõìçúçìõúñ÷‡ïjjúëjñ÷‡öéjjçëñ ÷”ñçìçúõìëújjëæjæëìjúëû…üûöûüû>ý÷ý à‡ÊÉ©f\k( àœo€ñéëõæëëjììõûüüëçëéûçììjûïC÷ö÷ˆöïôúæžüçì‰úüüžúûüûëì‰çüëõúûüüúìúçõjçüôö÷÷ðëôñïï÷òúëújììçüüžúúûüëì‡çûžçúëõìjì•úüüûúìjõúõôïñòüüæìúžõì’žüüžúžûžæììjûüëçûó ÷ö ÷”ðúëìjúëæìjëújìúúçìõö÷‹žëõjæëçjjëô÷‡ïæìúúõô ÷†òæìúúñ ÷ŸïçjõëõjúëjjúúìæúõìëúûûüûüöüûüûüAý÷ý à‰Éf\\ììæ,Ê àƒ“éžì”õžúæjžüéûæìjõúõììçòïB÷ƒööïöïöïöïöïöïö÷ïòúëçjìëüüûçììæúìëü…çõúûçì’ëüüûúžôö÷ïüìúüéòðï÷ˆëjìëúæjëü‰çìjæúõììëüæ ìŒjúûûæììjžüñòüì—jûúõæûüüëjììæçììæéüüújü÷£ïûëújìëúæìõúëjjæëçjjö÷÷öžúõìæúúìjúò÷‡öõjçëõò ÷†ôõjçëò ÷–öëìõúçìçújìúújõëõjúëëüûöûƒüûûCý÷ý à‰k\f\ì\\fÉ à„Éçëjì‰ûüéûççžûæì‹úûûžúžééûžñ>÷ö‹÷ö÷öñûçëüûçì…ëüûçëüæì‘žëæjëüüûçõò÷÷ïžìëüõüïïóæììûüüžçúžžæììjžüžúëûüûjìƒjëújìŽjìjììõüüéëjìæúìæüçæúüçììjçéüžçûƒõjñ÷–ðìjæúõjúëæjjëúõìçúúìõï÷‹žëæjõëçjjëé÷‡öæìúëæü ÷†ðæìçúé ÷ŸëjjëújæëjjúëìõúçìúúçûüûüóéûüûüûFý÷ ý÷àƒÊÉ©kìf‚,Ê àœÉ\ìûëúæžüéüõìjjúúæìúüéüëìjõújƒúðö:÷ƒööïöïöïöïöïöïöïöïöö÷ö÷ööôëõújìjžü°õìæëjììjûüüûçúûžçúð÷÷ïéúëûüüjìçëéžçæžüüžõììæúæõõü†žìjæçõìˆçûüújìjjì†çúëûüçì›ëüžçëéüüõììjëúìõžéüžjììçjjû÷‚ïžì“žûžçëëçìjúëjjæëçjjö÷‹ûúæìæúúìjúû÷†çjçëæû ÷†ñçjõëü ÷›žìjúúìõúæìúújjëçjæëjûûüûñôüûüIý÷ý÷à‹©ff©,kììæ(Ê àŒÊæìûüéüçæúžçì‰Þeüûúúûüžì†õûûëçüéï6÷%ö÷‰ïöñéúëüüûìjüûúõûüüëõììçòï÷‹ïéžììæçõjìõü‘ëæçëúõììæüüûúúžüúìçëjììúüüæjììçžõìõj™õçõììûéüûjjçëjììçûéüëæžüëì…úüéüó÷‚ïúõ”üüéúìõúçjìëúõìæëúìõï÷‹üëæjõëújjëž÷†ëìçúçë ÷†óúìõúû ÷ŸûõìëújìëæjçëjjúúìõúõûüûüôñûüûüûLý÷ƒý÷÷ùŠ÷÷à(æìfÉ©\k‚fÊ àˆÊgçúûéüçìžúëúõsÃi{N|jjççõìjüéüüìõæëjjõëð3÷ƒööïöïöïöïöïöïöïöïöïöƒïöö÷‰öðžjçõììõü‹ëjõëëjììçóö÷ƒöôëìžæéûúçûûüçjììçëææúéüüçììæçæjìëúìjæúæììõëüëæììjçì‰jüüžúëéüúì‰çûëæúüéûçì‰úæììžüéüë÷šðüüžçëûüjììjžžúçúëõjõëçjìï÷Œéúçìjúúìjúžö÷‡ëjæëæúö÷‡öújjëžö ÷•éjjúëìjúúìæëõìúújjëæüû‡òñûûüûûOý‚÷÷ùŽ÷÷Éfk©(kæ(,kfÉ à‘Êüújçúújììçûéü>î‰ÃÂÄrBüžëúü쉞ûúæëòòôð/÷-öˆ÷÷öïñéžçü‹újììçüújæôï÷¤ïòçæjjçéüüõìæúæjììúéüûçúëžõììjžéûúúõì‰õëžççžéüëì¦çúçjçüéüçìjæçjììžüéûæjúžõììõûüéžúûüëjô÷ƒöóéüˆììjçæõìúüŒújæúæìõúúìjó÷‹òëçjìëújìúë÷†üìæúúç ÷†žìjúžï ÷ŸòõìëújìëújõëæjçëìjúúûüûüüïûüûüûNý‚÷÷ù÷÷Êf\k\\,Éfk, à„ÊüúìŠçžëæçžéü>î™hi?Æjjõçæjììžéüüæõçžçõõûó*÷öïöïöïöïöïöïöïöïöïöïöïö•ïöö÷ö÷óüjæçjììúéüüçõëô¢žçúéüžúüûüjììjžûúæëüüžõììæëçõõüéüžì‰jæëûçõçúúì‰úüüžçúûüjìûçëüéëjììæûúõæüçìƒçõé÷†öéæëžúì•ëüüëúžûûõììæžëççëúìjó÷Œðúúìjúëjjçëö÷‡éjjëçæï ÷†žjìëëï ÷›ðæjæëjjúëìõúçìçújjëúûûüûûöüûüNý‚÷÷ ù‡÷÷,f\ì\k, à‘Ê(æúõjìæûéüëõçëÆh ÃÂs2žüžúúüõììjúžçõúòòðó'÷5ö—÷öïðôžçëéüûæììõëëjjžéüüì™çæjìõûéüžjæëëjììæüéüëçžûúìƒõjjì©jjììjëëúæžüéûjìjæúæìæüüéçjjççììjúüüûææëüjì„üüéö ÷†ö÷÷ïòçì„ëçõjü“ëjìæçæjìçéüüçæçëìjð÷Œñëújìúúõìçëö÷‡ôìõúëõö ÷†üjjúëó ÷ ñçìæúõìëújìëçjæëõjëëžüûüû÷ûüûüûüMý‚÷÷ù÷ù‹÷÷àà,\\ff(É àÉìjüûúçëüüžjìì2ÃîŽîà ?eõ‚úæìúéüûçæúûúõæéï"÷öïöïöïöïöïöïöïöïöïöïöïöïöïö”÷÷ööüæõëõììõžéüûõëûûì‰æûéžúžüüúì‰çûúõçüéûçìˆúæõìžžëæì‰õûüéëõæëúì”çüûûçëûéõììjëûžúëüüžì“æžçìçûüüçéö÷÷öóñïðòéŽüëjììõéüüçúžûæìëéžúúûüžjììõžúæð÷Œóúëììúëjjæëï÷‡ðjìëújï ÷†üjìúúñ ÷•ïçjõëõjúëjjúëìõúæìëúëû…üóüûüûNý„÷÷ù÷ùˆ÷÷à,\ìfÉ àÊjìüéüüìjæúæjì|Â¨ˆîîŽîŽîŽîÃÂr|úûëúúéüüçììjçëæjúòôóö÷<ö÷÷öïðéûçæüéüžì™æúõìúûéüçììæçìjìëüéûæõëëõì‰ææëçúëûëjì¿jëüüúììjúëçõžüüéjìjçúõìæûüüëjõçú]]ìëüüûæçžüjìúòóðéúžüüúììjçüúõúüìõúæjæûéüúìõçúj…ëüééó÷Œïëújìúúõìæëï÷‡óìjúëìó ÷†òjjçëð ÷ öúìõúçìçújìëújjëçjçëæüûüûñéüûüûüNý÷ù‰÷÷àà(ff©É àˆá[ëúûûüjì…ëûúÞÂ!÷ö¨ÈŽŽîŽîŽîŽîÎ >eçõõúúìŒçéüûúçžéëæúô÷öïöïöïöïöïöïöïöïöïöïöïöïöïöïöïö÷†öôææëëì‰úüéüçúüûõìëüûçëûüžõììjûúæjì™jççõjçëõììjæúæjìjžüüûõçëëì‘çûûžúëüûç]ÔÝÝÔüì…æëæìúüçììæçììjžéüûìæëëì”úüéûçëûžæììõûûëçžüòð÷‹úëjjçëæjõëó÷‡óõìúúõð ÷†òæìçúô ÷šëjjëçjõëõjçëìjúçìçújûüûûððû‚üûOý ÷ýàá[üõììæçõjìëéüé î¬M!÷!¨ÈŽŽîŽîŽ‚Ž™{ÄÜ|çûëççéüüúììjçúõjëòðï÷@ö¨÷ïïö÷ööðéûújžüéüjììjëjìõûüéëjìçújììæüüéúìˆëüüžçžúõì‰õûžççûüüëìŽúúçjžüüûæìõkÝå„‹úçì”ëéüûæúüûõììæûéûúûüüúìžžçjžüéžõììçúõjçü…çjæðö÷ôçúëõìçúçìõúó÷‡ïõjçëõô ÷†ðæjæëé ÷ŸžìjúúìõúæìúúõìëújõëõüûüûòñüûüûüNý‚÷ý÷ý àƒ¼ûæì‰ëüûëúûûü ö÷ö÷!¨ˆîŽ‚Ž‚‹‚Ã{?düúõæëúìŒçüûûçúžéëçûñ÷öïöïöïöïöïöïöïöïöïöïöïöïöïöïöïöˆ÷óññóóïö÷…ðúõëûì‘õûüéúúûüúììjçüûúçüõì‹jjæžüüžjìjjìæü…újæúçì‘ûüüëççžëõì]ååÝÔÔå›Ý]ìžûúæûéüžjììçúõìçüéûçìjæõì—üüéújçžæììjúüüžçžûžììæó÷Žéììõëçæçëæjjëô÷‡ïõìúúõé ÷†ðæìæúü ÷”ûjìëújìëçjæëjjúúìjúæû…üüóûüûMý÷ýà‡fìçújjúü†çjìæzŽ îÈ!ö¨ˆ¡!÷öÈŽ‚Ž Š™{s2ìæžúæçüŒçjìjççjjëôñö÷?öƒ÷÷óñ˜óóö÷öïñüüúõçüüéçììjçõìjëü†õìæžjjì‡çûëæëžúì…çžûûõì£üžúæûüüújìjçëÔÝåÝ]]åå‹ìõüéüújæëçì§ëüüžçëéžjììõüüžçüüéõììjžëõæžüüëììjúæõüö÷ïüjìçéüüççëçìõëô÷‡öõjçëõü ÷†óçjõëû ÷ŸéjjëëìjúúìæúæìúëjjëúûûüûüöüûüûüLý÷ýà,ìæéüüúúûüújììs !÷¡ŽîM¨¡ˆŽ‚Ž‚˜˜š˜Ãz?eüúæçžçjììúüûûçëûéëúòö ÷öïöïöïöïöïöïöïöïöïöïöïöïöïöïöïöó ñ—óïöö÷öóžõúüæììõëüüžçûüûì„õüûæì‚jõìÜëçjìjììjjìjççjìæéüüçõæúæììj뻌åÝÔEëìì]E»»ëúžéüõììjžžúæûüéúììjççìjëüüéììjújììçûüüçõëžçììjüüéó÷‘ïéëçëüüëjììçëçjëé÷‡öçìçúæž ÷‡ïëìõëžö ÷–òæìúújìëújjëæjæëjjúëûüû÷ûƒüûûKý÷ýìõéüüëjììæújjÜ !÷¡ŽîŽîŽ‚‚Ž˜L™Wzr|jçžçõçü‹çìjõçæìõëðó÷>öƒ÷÷ö ñ‘óóïï÷ööñüûëõæžüüžì‰çõììúüüûõìƒççõì‚jõìºæéüžçžûüjììõëžççDŒååÔ]júúæjëüéüjjæçæììçüüéçõæžçììõžüûûçžüëì”ëüüçëüüžõììæûçõçüüéó÷’ðòüçìæúújìõžüéžæúò÷‡çjæëçëö÷‡öëìjëžö ÷ ðæìçëjjúëjjúúìæúõìëúžûüûüïüûüûüûJý÷ý‹üžjììõûüüÆh îŽM ÷¡ŽîŽîŽîŽîŽ‚‚‚“‚˜L˜™˜LÃÂzeüçæúûçì‹çüûžçžüéúûð÷öïöïöïöïöïöïöïöïöïöïöïöïöïöïö†ïöö÷öïñóñïö÷ö÷óüjúûëìúüüûúûüüjìì÷÷ ì£çúõõëéüüììjçæõìçûéüçååÝ]ìjëºüëæúûëìçûžžçûüûõììæžžçæüúì—ëæìjûüüëjìæçììjëéüûõçëé÷”óüûžõììõûžúçûüüæìjñö÷†ëìæúçç ÷‡öžìjúëï ÷œñçìæúõìëújìëçjõëõìúëúûûüûóéüûüIý÷"ý‡ìjûüüdL îŽ ÷ŽîŽîŽîŽ‚Ž£˜L˜™˜L˜™˜Lw Orìjçëæõçéüüçjjõçõìõüñï÷:öƒ÷÷ïñóóöö÷ïóüžëæìžüüûì„æçìì÷ìˆjìjëéüûæžì²çûüëúžüûDÔå‹úç‹ŒE]ìjúúõjûüüûjjõúæììúüüûçjúëjììjü”çúûüõììjëéžçžüüëììjò÷“öüjjçæjjëüüûõjçëõjë÷‡žjõëççö ÷†ûjìëúï ÷ óçjõëæjúëjjúëìõúçìúúæûüûüðôûüûüûHý÷&ýƒüei î–Ž÷ ŽîŽîŽîŽîŽˆ¨¡ÈM˜›˜˜L˜™˜L˜™˜L˜™™MÃÂOüûççëûçì‹ëüžžúüüéúéï÷öïöïöïöïöïöïöïöïöïöïöïöïö†ïöö÷öïñŒóóö÷÷öïòjçûëìçüç÷Šìõžûçæûüüëì”úúõjžüéûõìõDÔÝåü»ŒÝåŠûüüëæëûúìëûžúúûüžjìì2¬../ü”jììæúõìçüéûúìjçæììjö÷Œñçìjžüüëúûûëì„ëûéö÷‰öéëæõúúõö ÷†üjjúëñ ÷–ïúìõúúìçúõìúëjìëçjæëjüû‡ôðûûüûûGý÷*ý ÷ ŽîŽîŽîŽîˆ¨ !÷ö MLLMˆM˜L™™˜L™™˜L™M™™Mw NÜìõúëæìëéüüìjjææjjúéó÷3öƒ÷öóñ‚ïïö‹ïéžžæìëéüüõ÷‰çûéüúìçëçì³ûüéžæëûújìì‹å‹E‹åÝÝÔ‹åå‹»üüçììjëçõõûüüújjæçõìì¢äƒb¬ëì‘úüüûçëéžõììõüüëúó÷”öïéëjúûüüçììæúõjjéôö÷Šöòéüúæëúõï ÷†éõìúëð ÷ŸëjjëújõëõjçëjjúúìõúæûüûüéóûüûüûFý÷.ýî­Ž¡÷ ŽîŽîŽîŽîˆ!ö¨¨ ˆMö˜L™™˜L˜™˜L˜™‡È‡™™L™Š{ONeüžæúëüì‹jûüžúëééžžð÷öïöïöïöïöïöïöïöïöïöïö†ïöö÷ïó!ñ‚ïï÷‰óôjçžžjìì÷„žüûæìˆûûújûüéúì«úúõk‹åÝÝååÔìú»‹ååçëõììæûüüúçëûæììjžüžúä‘tt/|žüéújìjççjjëü‚ìò÷“ñòüüûõæëëõììæéüžçûñ÷‹éûéžõììæëûö ÷†òõjæëô ÷›žìjúúìjúçìçúõìëújjëæûûüûüïüûüEý÷2ý¯îîŽ ÷!MîŽîŽîŽŽ¡!÷!¡M¨! MLÈ÷÷ȘM¨¡™L˜™˜L˜‡ ö‡™M™M™w Ûr2ìjëúõõûéüëj‡úõjjëðï÷+ö‚÷ö$ñŽóóïö÷öïòûëçìëü÷¾ììæçììõüüéúìæžæjìjžüüžÝååÝåݺûúëž»ÝåÝ]æûúçúüüûõììæúçjæüéüçxt䪢t.:æììõžüûžçžüúìé÷÷öïëžüüújììúžçõëéüžìúó÷‹ñõjççõìjëéô ÷†ôæìçúò ÷ ûjìëújjëçjæëõjúëìjúúûüûüû÷ûüûüûüCý÷6ý«ö!ˆîŽîŽîŽŽ! !!÷! M¨Ñ!M¨ö÷L™M™L˜™÷ È™M™M™›wwvON>êûžæëžëjììçûûžúžéüžûï÷öïöïöïöïöïöïöïöïö…ïöö÷ï(ñóóöö÷ööôçæžë÷ììõü’çûüüjììjûûúçžüüú]Ýå¨Ô»üüûììõååëéüûõæçújììçüéžççžûjìx°bc:°tä¦t/Ÿççüüûçììjžæjüñòéçììçæììæûéüújúžæjéö÷‹çììõžûëúžüô ÷†ðæjæëû ÷”éjjúëìjúëìõúçìçújìëúû…üöûûüûBý÷:ýŽ‚ŽîŽŽ¡!¨LȨÈL”È÷!÷÷M‡!!ȇ¡÷™™M™M™w™w˜W ?r|jçúçjçüéüúìjæújjõéñ÷#ö‚÷ï,ñŒóïö÷öïôûž÷jçüˆõììõçììçüçìæúçìÝåå‹Dçëûçì›Ôååúûüëjììúžëçëüéžjìjçëæõëü†jì|b¢䣢t|çëjììæéüüõúûüjììçûéžúûüûõììõüúé÷Žöðëõjëüüûæìæûö ÷†ñçìæúû ÷ òæìúëjìëújjëçjæëõjúëëüûüûïüüûüûüýý‹‚Ž÷¨ŽLˆÈˆ”™!÷÷¡™™L˜È!!÷ö÷‡™L™L™w™wŽ™wwÎOOdéûúæëžçì‹ëûûúëüéüúòö÷ïöïöïöïöïöïöïö…ïöö÷ó0ñ‹óï÷ö÷ö÷ææëûìçüµúëüûõììõûûD‹åÝkììjëúj]ÝåÝììõúõjjžüéëjõúçjìjžüüûõúžúì…ëû;¬.äŠyìçûëæžéüûì“úúõìëüéëjìjçììjëüéö÷ðéüüëúëûúììjëðö ÷†óújjëž ÷›ôæjæëjjúëìjúúìæúæìëúúûüûûñòû‚üû-ý÷"ý÷)ý÷ý÷–!÷!‡L‡!÷ö™™˜L˜™™L˜È!÷†!ȇ™M™ƒww™w™w™WwWv ÛO2ìõúúæjžüéûjìõçæìõúôó÷‚ö÷ö‚÷ó2ñóóïï÷÷ïôüžújžü±jììæçììçéüüDÝååÔ]k»»Œ‹ååÔkììõûüûúëžüçììõžžúçûüüç쉞úæõûüü¬.ä‹/xjûéüžìõççì“ûüüúæëéçììõžüüúžüüó÷‚ñúü‹æììõúçjæüòï ÷‡òžìõúžö ÷ ðçìæúæìëújìúújjëæjçëõüûüûððüûüûü,ý÷$ý÷)ý÷ ý¡÷! ‡M!÷!÷™˜L˜™˜L˜™÷ ¡!÷Ѩ™M‡‡™w™w•™wwWvWvWvWvÎOÆeéžæçžûì‹õüûûçžüéúûð÷ƒööïöïöïöïöïö„ïö÷ö7ñóó÷ö÷ööðçõëëjììúüˆçžûžj]ÔÝå‡Ýkžçõçüˆæììççõjæüˆçjæúõììæüªçæ3ctää¢büžúëüûõììjûûëçüüéõììæëçjçüüûæììæð÷”óòéjjæúõììçüéžçúûòñö÷ö÷‰ïúëžúçëëï ÷•ïçjõëæjçëjjúëìjúúìæúõû…üòñûüû,ý÷ý‚÷÷ý÷ýƒ÷ýý÷ý÷ý‚÷÷ý÷ýƒ÷ýý÷ý÷ ý£M!÷ ™!÷M™L™™˜L™™¡÷™‡¨È™M¡÷ ‡w‡§‡w™w¤‡wWvWvWvWvWV ÛŠ|jõžçõæüüéçjjõçõìçüñï÷ö‚÷ö:ñš÷÷öóö÷ïðéûçõžéüžjììççìì‹‹å…Ý]ìúüæçëëõììçüüžúëûûì›æüžúúûüûõx°ää¢u¬üéûõìõæúõìúüõjõújììúüüžææžžìˆúòñïüéüëì“ëüžçžûéúììjëéóóöïðï÷‚ðúü…çõçûó ÷ ïúìõúúìçúõìúújìëújjëæüûüûéóüûüûü+ý÷ý„÷ýý÷ ý÷ý÷ý÷ý÷ ý÷ý÷ý÷ý÷ý÷ý÷ý“M˜M÷÷L˜™˜L˜™¡÷ ™™L™L‡!÷¡w‡÷!WwWÈwWvWv WvvVWVVÛÎNTeüçæúûõììjëüûëçûéûçéï÷ƒööïöïöïö„ïö÷ï:ñó÷ñüéòôï÷÷öðúõëúì“úüéžçëºDì]]úºûëëüüëì˜úžúõëüüžjììççõjžéüûjjæ°ä‡tcææëúìˆëüûžæžüúì“ëûûúžüüúììjëžæjüéüçìújìæûüéçìõúõììæü„ççžü÷…éçžûëì‚éö ÷–ëjjëújjëæjçëjjúúìjúçûüûöûƒüûû*ý÷ýƒ÷ýý÷ý÷ý÷ý÷ý÷ ý÷ý÷ý÷ý÷ý÷ý÷ý÷ý÷L˜™˜L˜™¡÷™™M™M‡!ÑÈw‡ö÷wÈ!!ÈwWvWvWvWvWvWVWVŽÛÛOr|jëžææžüüžjˆçæjjžôóö÷ öƒ÷öï:ñ‹ï÷÷üüéüééòñöñòûúæûüéëììjúçììü…žììõúj—žüüëjæžújììžéüžçžûçìì|.ä‹/:éúììjëëçæü°úìjjëçjõûüüçjjçæììõüéüæjúûjììçüüéçžûžjììúüûçžûüžìð÷Šñúììõúõõçö ÷ žìjúúìjúçìçúæìúújjëúûûüûü÷üûüûüû*ý÷ý‚÷÷ ý÷ý÷ý÷ý÷ ý÷ý÷ý÷ý÷ý÷ý÷ý‹™˜L˜È÷ ™™M™M‡!ч™‡!÷ w§!÷ §WWvWvWvWvWVW VŠÎOâTüžææëëì‹çüûžçëüüçëô÷ƒööïö„ï÷öï:ñ†ö÷ü÷üéü†éüéòðó÷¦ðújëæììjûüüžõžüæììjûüûçžûüçììjžûçæûéüçìë.tääby|jççõìõüšçjçëõììæüüûçúžžõíÕÕÐZéûìˆúûúæžüüëì„úæìõü‰ëììææjìúö÷†öûõììçüô÷œžjìëújjëújõëæìçëìjúëžûûüûïüüûü*ý÷ý†÷ýý÷ýý÷ý÷ý÷ý÷ý÷ ý÷ý÷ý÷ý÷ý÷ý÷ý÷ý‡¡÷÷™™M™M‡!!‡wÈÑ÷¡w§ö÷Œö! ‡vWvWvWVWVØVØV›ØqØÛÛŠèìúžúæúüüûæìjõëõìçòðï÷öƒ÷öó9ñ‡ó÷óüü÷éüéüéüòòñö÷ïïôüúçüˆæììjûújçü¥æììççjìæüéüçjçžõìì2cu¢ät.õììçüüëúžüûìŽçûëçëéüëjììúÖ'‘úõìjûüüújõëæììæüŒççûûjììæüéžï÷Šñûûúçžüüòï÷’üjjúëìjëëìõúçìçúõìë‹ûüûüóòûüûüû+ý÷ý‚÷÷ ý÷ý÷ý÷ý÷ ý÷ý÷ý÷ý÷ý÷ý÷ý§™•L‡!‡W ÷÷ w§ö!§Ø÷ѧv…WvWVW V…qVØVqâ•eûçõúëjììjéüûúçžéçæûó÷‚öó9ñƒï÷ðü÷üéüéüéüòôó÷÷öðújújììçüõæëžjììæüéûúžüûì…æ;2.ä¡.yìúëææëüüžììõçæjìûéüëjõæçììjB '&•&''¤Ëûúëüûjììçûžúúéüžìˆúëõìüüéô÷‚öðü…çìçûñ÷–òæìçújìëújìëçjõëõjúëçüûˆñòûûüûûæ*ý÷ý÷ý÷ý÷ý÷ ý÷ý÷ý÷ý÷ý÷ý÷ý™œ¨÷! !÷÷ w§ö!§wWW §vWvWØ À§Ø V§Øع¹ØqØVØqØÛâ‰2jûžúæéüüæììjëçjæûôñö÷÷öï7ñƒööéü…é÷üüéüéüéü¢ééòðö÷öïñéëúéüžjììçûújëüéžjììççìj.¢Éäät|jjžüüëõúëçììjüéûúúžüõììõûžëúË&'ÏííõËË '' ûjìjçújjžéüëìjæçììjüüéçõúüð÷‰ôëžûëjìjü÷¤öôæúçjæëjjúëjjúëìõúçìçúæûüûüôñûüûüûæ+ý÷ý÷ý÷ ý÷ý÷ý÷ý÷#ýƒ™§ö÷–§w ö!§wWvWvWvWØ!÷÷öÀW V¦Ø¹!Ñ!¹ØVØVqq7pqâUTeúõõúæììjžéûëæëûúõúò÷‚öï3ñƒ÷ïéü…éü÷üéüéüéüéüééôñ÷ööðžìújììëüéëjõëçììjžüü:äÀtxŸüžçûûüçììjûëæçüéüjììæúæõúüüûõÕ'ÏìjžüüBÏ'&Õììjûéûççûûæììõüûžçüì‚ûö÷‹öñúììjúæìúö÷‚ïö ÷ òçõžüüúúëõìúújìúújjëçjæëjûûüûéóüû‚üõý ý›ÈÑ÷ w ÷!Èw‡vWvWvW ÷ö §!ØØVØVªØqÀ!ö÷÷ÁÀ§Øq7qqp7q7âÅè|žûëçžéüúììjúëçõûéðó÷‚öó-ñ…óï÷ðéü…éüü÷éüéüéüéüéü™éòðï÷ööñéúëüéçììõžüúæüü;uä„¢°|çüºæìjúæõjçüéûjõúújììžüüžçúžúìí'¤ÏËZüõÏ''Оúúüéûõìjçžæjëüüûì†újìjòö÷‹üûõììçüééðö÷ƒüëö ÷ˆïðžççüüûìúçæçëjjúëjjëúìõúæûüûüûöûüûüûæ+ý÷ý÷ý‚÷÷ý÷ý÷Fý‡w ÷÷ÈwWvŒWv§!÷÷! §Á÷ØV®ØVq¹Ø7 Ñ÷öÑÁÀ¹7q7pqq7pÛUUeëjõæçììjëüéëõæžújõûó÷‚ïó*ñ„ï÷ééüéü÷üéüéüéüéüéüòéñö÷ïñžõçjìõüšæìõújyt¢cûüõçžëjììúüéëúžüëìžûëçëüüçììjÖÕÏ&'…&ÐÏ'¨Ëéžjõççììõëüüëjúžæììjéûûçûóñéúìúüžæžüééï÷„öjçó÷Ÿóòééüëìæúçjììüüéæçëæìçúõìëújjëçû…üöûûüû*ý÷ý÷ý÷ý÷ý÷Hý’‡wWvWvWv§Ñ§Áöö!ØV²ØqØVØq¹Á÷À Áö÷!¹7qqp7qqp766OÅ2ëûžúëüéëììjúžúõüéòðó÷‚ïó%ñ…ó÷öüéüéü…é÷üüéüéüéüéüéüéüüéòôó÷÷öóéçúüûìˆçéüúëüüëìúžçõûüéëììjúõjæüˆæìæççjìÕ '©Ïúüæììõžûëúûüžõììæûëõžéüžìjìëæìõûüéçììžñ÷›òûìëðéôðóïóéúúûžæììæüžúëûüž왞ëçæëõjçëìjúëûüûüûöûüûüûü*ý„÷ýý÷ýƒ÷ýý÷ý÷ý÷ý÷ý÷ý÷ý÷KýWvWvW!!WWVW¹Ø VªØVqVØV¹!÷ qq¹ÀÀ77pqq7pqq7p667p6UUŸjjæçõìjëü‰ìõçúìõçñö÷ó"ñ…ïöñüéüéü…éü÷üéüéüéüéüéüéü¥éüééòðö÷öñûúúõìûéüëììjçììõûüéújçžõììæü”çúûëjììúéBÏ'&ÏÏÕ®'ª®íììæúçjëüüžõìõçæìjûéüëjæëjììæûüüæúûëììjéö÷´óüæììjûžæëûéžõììçúõæûüüúìjççjìúüüûõæúæìúújjëúûûüûûïéû‚üû)ý÷ý÷ýƒ÷ý÷ý÷ ý‚÷÷ ý÷ý÷ý÷ý÷Mý‹W ÷÷§!ÀVØVØV­ØqØVØq !÷ Øq7q7p7qqp7qqp766p766p76ÛÅÅŸüûëúûüžì‰ëûžçûéòüô÷‚öóñ…ö÷òüéüéü…éüü÷éüéüéüéüéüéüéüåéüééôó÷ö÷óéõëüõììõûüéçžüûõììæüûæžüüžjììúëõæžéË®'ÕçõjæüüËÏ&'¤íììžüüëççžçììõûüûúúüüjììçûBúBüüëììjëëõúö÷¼öìææììžüéëjjúçjìæüüûççžëjììëéüëúûüõììæûëúúëjjúëúüûüûóòüûüûüæ(ý÷ý†÷ý÷ýý÷ý÷ýƒ÷ý÷ ý÷ý÷ý÷ý÷Pý÷Ñ VšØVqVØV Ñö§qq7pqq7pqq7pq76p6p6œp66¸ªªUT|ìjúçjìûüüëõjæçììæéï÷‚öóñ…÷öüüéüéüéü÷üéüéüéüéüéüéüéüàéüéòðï÷öïéüúõúüüûjììçæìjžüüžììçæjìjûéüçõëÐ&'ÏõüüžçëûžíÏ&'ÐëçžûüæììõëëæúüéûììjççjÞ²²4dÞììçéüéð÷²öžìûüéúúûüjììçüüúëûüëììjžžõæüéüjììççõõžüüëìõççìúúçû…üôðûüûæ(ý÷ý÷ý÷ý÷ýƒ÷ý÷ ý÷ý÷ý÷ý÷SýÀ V‘ØqØVØq Ñ!§Øq7qqp7q¹7qp766p766p76¸6¸ª¸ªâÅ;eüžçëüújììúüžúúééûžó÷‚öóñ…÷óüüéüéüéü…é÷üüéüéüéüéüéüéüéüéüéªòóö÷öïžjúúììjžüüžçžüæììjüéžúûüûõììÕ'&Ïëüüžì–ëçÕ' Zjìõúæõìúüéžõõúçìƒüê²5Œ554ûëúüüòï÷¿öúçüüéjììúújjûüüúììçæjìçüéüìõëçjìõûüüççžëjìjúéûëúëõüûüûòñüûüûüæ(ý÷ý†÷ý÷ýý÷ý÷ý„÷ýý÷ ý„÷ýý÷ý÷ý÷VýVÅØVqVØVÀÑ!¹qq7pqq77¹ÁÑÑÀ77p667p667p66¸ª66¸ª66¸ªU—è|júëæõžéüëìjjúõjõéðö÷ïñ†ï÷òüüéüéüéü…éü÷üéüéüéüéüéüéüéüéüéü³ééðöïööïðüëçéüüæììjûçìëüéûjììçõìõÖ&'íæúæììõéüü¤'¤Öìëüüúúžüæììõûžúúe5…ÆÞC5†Þìjçó÷ºòüììæçììõûüüæõëžjììúüéëúûüõììæûûçëûüëjìjúëæçüéûjìjçžûüûûéïû÷(ý„÷ýý÷ýƒ÷ý÷ý÷ý„÷ýý÷ ý÷ƒýý÷ý÷ý÷Zý£ØVØqØVØØÀÑ!¹Øq7qqp7À÷ÑÁ!÷À7667ÀS7p76ˆ¸6¸ª¸6¸ª¸žªª`â—Jüëæçžúììjžüüëúûéúçéö÷÷öï ñƒóö÷üéüéüéü…éüü÷éüéüéüéüéüéüéüéüéüÖéüóöüëžôï÷÷óûìújììëüéüjõžçììõžüüúÖ&'ÏíõéûúëüüË'ËëççûüüæììçúæjëüüûjÆ55‰ìæûéüB²²Þìõé÷”ðüæììõüûžúéüëììjëûúæü§õììçújìûüüçjjçæõìúüéžjæëçjìjüüûéüüûüöüû÷'ý÷ý÷ý÷ý÷ý÷ý÷]ý°qVØØ Ñ Øqq7pqqS!÷!¹qÀ÷ 66À÷ÑS67¹¹6¸ª6ª¸6RÁÀª¸ªª`ª‰`â¬èìúžëæü‹úììjëçjçéôó÷‚öó ñ‚÷ïüéüéüéüéü÷üéüéüéüéüéüéüéüéüÖééöðëçúçëëüð÷ööñòëëüéçììjžûçúûüûõìí&''ÐZZžììõ&'Züéõõçújìjëüüëæúžõì>54ëçëüúj>4dëžï÷˜ïìæûçjûéüúìjjújìçüüûjìçúì¦éüüæçëëjììëüéúëûûõììæüžçžûüûüûüüéü÷û÷÷ø‚÷÷'ý÷ý÷ý÷ý÷aý“ÁÑ ØØp7qq7 ÷!Ñ÷Ñ!÷S6ˆÁ÷Á7ÀÑÁ¹¸ˆª¸¸Á÷ÑR¸ ª‰UUTJëjõúçì‹üüûúæëüæõžð÷‚ïóñƒïöðüéüéüéüéü…é÷üüéüéüéüéüéüéüéüéü„éñ÷üúçú™ëžòó÷öóûõúõìúüüûõìæúììjÖ®'Œ&ÏÏÏ&''ÖžûëìžüëçûüüõììõëúC²55²ÆÜæúë²5éð÷žëìüéüçjçëjììúüüžæžüúììjéüžúüüëì–žëççüüûõììççõjéüüæžüüûü‡ûüð÷ð÷÷ø‚÷÷ý<ý¥qq7pq7!Ñ7q7SÁS7p667ÁÑÁ÷ÑÑR¹ÁÁSR¸Á÷Sª¸ ªš«`«—Åè3ûûëúžüüõììõžúæúééôó÷†ïóñööéüéüéüéüéü…éü÷üéüéüéüéüéüéüéüéü¨éïóžúçúçúçúçúçúúëžðö÷öóòæúüçììjžéûúûüË'™&ÏíììëæõçéüûõìõúõjìüüéçÞ>5Š²²45²eòï÷Âïžúžéûjììúûëçûüüçììõžæjžéüëììjçììúüüûjjúúììõéüüæúžëçüûüûüûüûòïóû÷÷ø‚÷÷ý>ý¡qp¹÷!7Ø7ÀS766p7À÷ö!S¹¸¸¾öÑ÷Ñ÷÷R¸¸ ª’«`«a«`«aU—ìõæçjìçü‰æõçëjõæôï÷‚öéüéüéüéüéü…éüü÷éüéüéüéüéüéüéüéü„ðöòçúçúçúçú¹žéó÷öïéûëõçüéûõììçæíÕˤ&ÏÕúæììçéüûæúžúììjûüüúëžüììjd455ƒÆúó÷›öòûììõúçìçûüûæjõçjìjžéüúìúûì’ëüüžçûüçììæéüúëüüëì†üûüûüûü‡ïïéûü÷÷ø÷ø‚÷÷ýAý÷•ö÷!7p667À÷ÑS66ª¸ª¸ª¹¾÷…ÑÁR¸`ª`ª¨`«`«`a`«`a`«–Åüûžçëûžjììçûžçëüòûéö÷öïôéüéüéüéüéü÷üéüéüéüéüéüéüéü¾ïïûçúçúçúçúçúçúçúçúçúçúëžòö÷÷óûjúúììjžüüëçûüjíìçüüëëüüúììjûëæçüìŠúçæõûüü‰ŠÆ5ƒŠéö÷—éúõììçûüûæçžçììæûéüüòéžì™ëûúçûüüõììçžõõžéûçììææìjžûŒüûüñöòüûüû÷÷ø÷ø‚÷÷ýDý†ÑÀ766ÀÑ–öÀ6¸ª¸6¸ª¸¹÷Á¾!÷÷R¸¾R¸ª‹«`«`«`«`«`«aÍUUè|ìçúæjëüéžììõçjìõòó÷÷öóòéüéüéüéü…é÷üüéüéüéüéüéüéüˆéüüòöôúçúçúçúçúçúŽçúúëëéñ÷öïðéëçüœjììçžæjžéüúììõçìjçüüûìjççjìjüŒæçëëjÞ>54üï÷›öìçüžúžüüæììæëûüñö÷ö÷ööôçìçü™jìõçììæûéüæjëëììjûüüúžûûüûˆüûôöñüüûü…÷÷øø÷ø‚÷÷ýGý«7Ñ÷ÀS!ѹ¸6¸ª66¸S÷¾¸ªR¾¸¸Ñ÷Áª¸Á¾ª«`«`«`«`«a«a¡ÍÓaaÓ––Jéëæçžúììjûüûúúüéçëð÷÷öñòéüéüéü…éü÷üéüéüéüéüéüéüÁéüüó÷ûúçúçúçúçúçúçúçúçúçúçúçúçúçúçëžôï÷öóžjçjììûéüçìçëõììçüüžæžûúì’ééëúûûëjììBÆ455êð÷’öžjéüüæìjççõìžðö÷÷öŸ÷ö÷ïéûõçûæììæûüžúûéúììõûüçúûüžæûüû…üéöñüû…üûüûü÷ø‚÷÷ýKý6S÷ÑSª¸6¸ª¸Á÷¹¸¸ª“Ñö¾¸RÑö¾««¾RR`«a«a«aÍaÍa‰Í—¬2jëžçæü‘æìjõëæìëòðï÷÷öñééüéü…éüü÷éüéüéüéüéüéüˆéüòïñëúçúçúçúçúçúçúçú«çúúëûñ÷ööñéúëéûjììúüžçžüüúììjûçjëé45ÆÞ2ëÜŠ?5…>‰æòï÷†óüæçúëìžü¦ó÷÷óòõžòòðö÷ñõììçžëæûüéçììæëõìëüüëììæõûüû…üóïüüû†üûüûüý÷ø‚÷÷ýOý‹¹ª¸ª6ª¸Ñ÷ª¸ª•`ÑÑR`SÑö½a«ÑöÁ««`aa«ÓaÓa¤ÓaaÍÓÓ——P¦újæúõììçüüûæçëúõæéï÷÷ïðüéüéü÷üéüéüéüéüéüÅéüñ÷üçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúúžéóööñžçújõžüüçììçjìjëéüžõ²5‰44²Cõìçï÷‚ûžì©ûëúçûüòï÷öðžçõéüüúó÷óújìûüéõjõújìjžüüúõúû솞žûžûžûƒñïò ûý÷ýSý‡¸¸!÷öª¸ª”RöÁ¸ªÀöÑR«Rö÷÷ÑÑ¿¾««aÍa—ÍaaÓÍÓÍÓ—:3üûžúüüëìëžúæüéòôöö÷óôüéü…é÷üüéüéüéüéüéüˆéüïñžúúçúçúçúçúçúçúçúçúçú…çëëûô÷“ñžõëëjìjúéüëúüüjìÆ45‹4²Æ2õæûúæé÷¢öüjúæõúüüûjjûï÷óééüûõæúújñ÷÷ôüæúžë쇞üûçûüžì“žûúæûžûžûžûžûò÷ðûûüûüûýƒ÷ýý÷ýWýƒöR¸ªÁRÑÀªRÑöÁ««¾öÑ¿¿ÑÑ÷¾ÍÓaaÍÓaaÍÓaÓÍÓÓÍÓÓÍÓKPPõjjúæjjûüéçjjúõjõüó÷ˆóòüéü÷üéüéüéüéüéüÔéôöéúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçëëéñ÷ïïòüúæüéûõììæëõìdêÞììçæìjëéüéó÷ƒóìçüŽæúžæìçñ÷öéçžûúì˜üûó÷÷éëììjžúæúéüëìjõúæìçüjžžûžûžûžéïñžûûüûƒüûûý÷ýaýªÌ¸ÑöÁÁ÷ö¿a«¾öÁ«`«¾ÑRÍaÍR¿¿½aÍaÍÓÍÓÍÍͽ½ÍmQ–:;üüúçëüæììæüûëëüéûžð÷ö÷ñò÷éüéüéüéüéü„éïöžúçúçúçúçúçúçúçúçúçúçúçúŠëžôï÷öðúõúìüçjúëjììëéüúúüüðö÷Áüúžüüõììæûúôö÷ñúììæëæõžüò÷÷üæçjìëéüëjæúæìjçüüûõëüjëžžûžûžûûóóüûûžû‚üûý÷ýcýƒ`¸Á÷‹ö¾`«Á÷¿a`«`a¼R¯öÑÑö¾ÍÓÍÓÍÓÓÍÓÍ¿öö·1mmmQK:ìæëúõëüüûììjúæìçéðï÷ö÷ðéüéüéüéüéüÿôöòúúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúúé÷ï÷ööðüúžüžjììžéúçûüžõììžö÷÷öóüõììççjjžéôö÷óëõìjëüüúõú÷÷ïúëéûúçžžõììçû‹žúžüûjììúžëž‘ëžžûðöòûžûžûžûžûžý÷ýgý£¾öѾ`RÑö¾«`«`«a«¯÷ѽÍÁö½aÍÓÍÓÍÍÑ•öö#·ÍmmmQPK¦žõõúçì’ûéüçæžžæõé÷÷öïôüüéüéüéü„óöûçúçúçúçúçúçúçúçúçúçúçúçúçú›ëñóçæúéïööðëëçìçûéûõìjçììçï÷²öúújììûéüçúüñ÷öüžüžúëûžììé÷÷ñúžéûjììúëæçüüžjìõççìõ žô÷ôžûžûžûžûžûý÷ýkýŒ`RÑ÷R«`«`«aÁö”÷ÁÑö¾ÓÍÓÍÓÓÍÓÓÍ1ö†÷Ò¿½m¡mmQ–ûûëúûéüjììçžúæž÷òðö÷öïòüüéüÖéüüéöðëçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúü÷üõõæõæçžô÷ö÷ñúæžçììæûüüôö÷³ëìüéëúûüëjìõð÷öüûüžììjúçç÷÷öûjjæçõìçüüžæõúçììõüéûæ랃üïðž„ûžûž ý÷ýoý¬««`«a«aÑÑ«aR¾Á½«ÍÓÍÓÍÓͽöÒ11¿öÒ½1½1mm¨mmQQP3ìõççìjžüüújõ÷æjõûó÷÷öóòüüéüüð÷üúçúçúçúçúçúçúçúçúçúçúçúçú†çúúžñóõæõ‘æõçúéó÷ïóòûçëüüéï÷¸öìëüéžjìjçjìúó÷ïëæúæjìæüñ÷÷ðüõììúüüëúëûæììæûûúëüéõëëžëžëžƒñïûžû ý÷ýrýa¿ö¿a«R¾«aÓÓÍÓÓÍÓÍ¿÷#Ím1…¯öÒ·1mÙlm –:¦üëæëûæììæ÷ûëúüüžëñö÷öñéüïóëúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçéöû õŠçëôö÷öòúéö÷…ïžìõžì¢úüüëçûö÷ïžúééúžð÷÷óìúûëçžüüæììçëçõüˆõìjçúëëž놞ëðöòëžëž‚ëž ý÷ývý÷Š¾ÍÍÓÍÓ͵¯÷·mm¿÷ÑÑ÷Ò#1m·llQ–|æžëæúé÷žìjjëæìúòðö÷„ñúúçúçúçúçúçúçúçúçúçúçúçúçú†çúžïðæõæõæõæõ…ææúûñ÷öõììúüüçûüüõìjòö÷ˆóñö÷÷ðçjü‡õìõçõjõü•õõçúììjûëžëžëžëžé÷ôžëž ý÷ýzý½ÑÁÍÍÓÓÍÓÓÍÓm½ÒöÍmmѯ1¿Ñ÷¿m·Ò÷¶lmlQ³œŸjõç÷ììjü‡õæëëjæéö¶ñéçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúòïëæõæõæõæõæõ‚ëó÷„ðžæjüõììçæìõûôöö÷ö÷žïôüüjçëçììõûüûçëûúììjéžúúëúëëžë…üóñëžë‚žëž ý÷ý~ýˆÓÍÓÍ¡¿÷¯m½÷¯1m00¿1m#÷·l¿¯·Š ­ü÷žçûüžì„žžúçé‰òö÷öðûúúçúçúçúçúçúçúçúçúçúçú†çûïðõæõæõæõæõ…æõõúð ÷­éæçúììõûüüæçûëìúûòôüçüüúììõûžúëüüúììõûçæžéüçúëúëóóûëžëžëžëžëžý÷ýýý“ÓÓÍÓm¯ö¿mmm¿÷„ö¯¿m0Ò"1÷öÑ00¶"0l‹l³÷}ìjëçjæü¸õjjçjjæòó÷ööôžçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúúôóúõ‚çð÷³žççéó÷ïóòžçüüëììjüžæëüüúììjëõjëüüúììçæjjžéüçjçúçëëúëˆúëôöüëëžëžëý÷ýýýªm½öÒ½m0#Ò·#¯÷#0mml¯÷ÒÒ¯·0¶Ñ÷Ò#·0¡AX÷Ç­³¦üææëëììjžüûúúûûõžð÷öïéëúúçúçúçúçúçúçúçúçú†û÷òõõæõæõæõæõ„æõëï÷ƒñõæõ¦úëð÷÷ïéúëõjëéüëììçjììžüüçjúëõìjžéüçúûëìƒûëúëúëëéöôëëúžëžëžëžý÷ýý ýŒ·÷Ñ1mmm·ö¯m0mÝ0ll"÷ö·0lX0··#Ò÷¯"¶XAXA÷AXA­=}ëûëçüüûjììúëçìééðñ÷öóéúçúçúçúçúçúçúçúçúçúçúçúçúçúçúçúðóæõõæõæõæõæõƒæõû÷ƒûõæõŽæõõæúûó÷÷ïòjúž옞üüúúüëjìjžéëúûüëììjûëõžú‚ëúë…žïðëúë…úëëžëý÷ýý ýŒmm¿÷÷¯¿00m‹0m·÷÷"mœ¶¯÷##Ò÷#¶AX÷XAXAXAA³³3jõúæìjüæõæëìõæñö÷öñûúçúçúçúçúçú†çúúüöéõæõæõæõæõƒæçñ÷„éæõæõæõ†æõæçëôöœñòëúüüûjììžëjëüéëììæújjžüüççúëú„ëñóžëúëƒúëëý÷ýýý­m·#¯ö÷Ñmml¿÷öö·lll·Ò#XX"·YI÷·÷AXAX@AŠ@ ­¥;üúçëûìû£çžüüúéö÷öðûúçúçúçúçúçúçúçúçúçúçúëññõ‚çñ÷ðõžæçûñ÷öóçjçjìëüéúìjújììžüüúæëžõúëú†ôïüëëúë„úëë÷ý÷ý÷ý÷ý{ý’mm·ö·mm¶÷Ñ0Ò¯lµ#öIAXAY¯÷#X÷ö"YAA@šAA@šAÇ­ìúžúæüüéjììúújæéôó÷÷öôëúçúçúçú†çúéöûæõæõæõæõæõ„æõüö÷‚ûæõæõæõæõæõ—æõçïïìúüüëæëûõììëüüçžüûì‚üçúˆëúúüöòúúëúëƒúýý÷ý÷ý÷ý÷ýýmm0Ñöö·Ò1l†¶ö¯¶AÁX÷¯XX"÷#Y@¶H¶@AAš@A~š@dzœõjõújìjûüüçõúëjæžï÷÷ïòçúçúçúçúçúçúçžóñõæõæõæõæõæõ‰æõõúžúëõæõæõæõæõæõ“æõü÷üúžüüjììëûúçéüžìˆûçìëúçúçúƒžóñúëúƒëúëý÷ ý÷ý„÷ýý÷ýýý‰÷¿m#÷¯0½·÷"XAXA·÷¶A¶±Ò÷šY±÷÷"IIYAš@š~~@š@ =;üûçëûžjìjžûžçüééûóö÷óüçúçú†çòïžõæõæõæõæõæõæõæõæõæõæõæõæõœæõ÷ðéjììëújçéüžìjõçìjúüüëæúçú†çúúñóžúëúƒëúž ý÷ý÷ý‚÷÷ýýý…¯÷Ñ1lˆl0#÷¶XA²÷ÒXAIö#X÷A#Ò#"±÷Ò¶~~š@~~š@~~š@Ç­}ìúëæõüüûììjëõìúòñö‰ðûçúçúžïð3õ¨ïïæúììæüüžõæúæììçüüžæûüjçúçúçúçúéöûúçúúëú‚ëúý‚÷÷ý÷ý÷ýý ý£·Ò¯XXAXY÷·XX±Ò¶@š÷÷±HYY·÷¶~@šY"Hš~¥›~›~›GÇœ;æõæúììjéüüjçžæjçô÷ööôžòïúõõæõæõæõæõæõæõæõæõæõæõæõæõ”é÷jõüüžæžüæììçüžúûüûìžçú…çüöòçúçúëý÷‚ý÷ýƒ÷ý÷ýý ý•"ö¯AXAA#÷XA¶÷#YAš"÷Ò÷Ò¯@~~šI÷÷±H¶š›~›~–› =¦ûžçžüúììõûžúëééûô÷„éæõæõæõæõæõæõæõæõæõæõæõæõæõ—÷òúëéüõììçžçæüüûjìjëçìúçŽëóðúçúçúçúçúçûý÷ý„÷ýý÷ýýýÌAXAX¯÷#·#÷·A@¶Ò#÷÷#YYš~~@š#÷Y"÷÷Ò…~›~›~›~›~›GÇß|jžçõžüüúìjæújõûðï÷öóûõõæõæõæõæõæõæõæõæõæõæõæõõïöéæìõççjæûüûæõæçjìúüéžæçúçˆúççôïëúçúçúûýƒ÷ýý÷ý÷ý÷ýýýˆAAY#¯÷Ò¶A•"Ò¶A÷±¶Aš@~~Y÷H~šY"$…~›~„››…›™FÇœžjæúæììúéüëjëžjõûï÷öñë(õ£é÷úçjìjžüüçæëçììæüüëçžéìæççëñéëçéöüçƒúçúý÷ý÷ýý*ýAX¤AAYÒ#š@Y÷±šš~~@#÷÷IH›~›~›~›~›~…±÷IG­=éûëúüûjìjëûëúüéüéï÷ïôëõõæõæõæõæõæõæõæõæõ¤ææ÷žìûüžúëüçììæûžçžüüjììžæçæçüö÷÷ö÷ð çý÷ ý÷ýý*ý˜@A"÷ÒYAšY÷"š@~š÷±%Ò÷Ò~›~›~‰›H%"÷ö%H••G }ìçëæõü‘ììjúõìžòó÷öïòçõõæõæõæõæõæõæõæõžæöïúúûüçììæëçæûüüõìjúæjçúæçæçó÷„öóòëçûý÷ ý÷ý‚÷÷ýý"ýœIA@šAH÷H~šI÷š~@Y›~›~›~›~›~›­…Ò÷%÷÷%••••GG;æõççììæüéžõçûæõçñ÷öïéæõõæõæõæõæõæõæõžò÷éëjìçæõjžüéæjæújìõéüüõææçæçó÷ƒóëúçüý÷ý÷ý÷ýý#ýŒA#÷÷Yš÷÷IYš›~›~›~$öHH$…•…H_••”••G <¦üžçžéõììúûžçûüüžñööñüõŸæ÷üëõjìžüéæçëúììõéüëçžûìõæõææûö÷ˆöôçæçæçûý÷ýƒ÷÷ý÷ýý%ý’÷šH%±÷Ò±››~›~›~›~›„…Ò±_‰•…Ò÷±+_•”••”^F<|çžúõûüüõìjúçjçòðö‚ðžõæõæõæõœæõõöñìëüéçžûëììjüžúëüüõììúçõæ‚õò÷‰öòæçæçæçü ý÷ý÷ýý$ý‹÷ýý@šHÒY~~›~ƒ›~›„›"÷H•ÒHÒ÷÷”•$%_”•”™^Fœ3jõújìõüüûjõëjjæô÷ööôúõæõæõšæõé÷žçûüûììjžúõëéûçììçæõæúæ„õææð÷ˆóæçæçæçæ"ý÷ý÷ýý#ý÷ý~›~›~›~›~›…Ò±•••%±…_H±”…ÒÒ‘•_*”ã””ÚÌ üûçëûçììæüûúëéüúò÷ööéúõæõ•ææ÷ôéjììúõjëéüúìæúõìjüjõæ‚ëö÷‚éçæç#ý÷ý ÷ýý!ý÷ý~‚›~ƒ$÷HŠ•÷÷%‘_•‹*÷…•Ò÷Ò_”†‘””˜F<ßjûëæüéüjìjúújëéôñ÷öóüõ—öñææììúéüújúëììõûüûæëûjõ‡ëö÷÷óüõæƒõææ%ý÷ý ÷ýý ý÷ ý„÷%_Õ••$Ò+±÷÷*•”••‘÷%Ò$_”†±÷%*…ã”””Ú^=ìõúæìçüüëõjúõjæòï÷öóžò÷jæüüžçüžjìjžüëúûüæììúææõˆæõæé÷÷ñúæõæõ%ý÷]ýnÿxý÷ý„"÷H›‰•÷•_…•Ô”…÷Ò””ã””††‘%÷÷$‘†””´9œûææžõììúüüúúüûõüó÷ôëëéüõììëüçëüüúììæëõjëjõjõõæõæð÷éõõæõƒæõæ&ý÷^ýnÿxý÷ýŒ••%÷ÒH…•_•‰_*÷÷‘••”㔎ã_$±‘‘%÷%”””§´9<úûûçûüûììjüžçûéüõìjúújúüüëììææìjüüéìj…õõæôúõæõ‚æõ'ý÷_ýnÿxý÷ý••H%±÷±…”••±Ò+÷…””’Ò*ã†ã”+÷*ã¥ÚF<ìjëçjëéüúìjçæìæûüžjìújììûüüjæžæìjìjƒìõç õ)ý÷_ýnÿxý÷ý•…+…•…%÷……Ò‘•””㔑†%±_””%÷‘%÷‘¢ƒ„ƒ„´^œžjæújìjûüûææžõììëüüçëüúììæçjõæ)ý÷`ýnÿxý÷ýŒ•÷÷*”_±‘•””㔕+±‘”†÷_†÷±ã‘%*¡„ƒ„ƒ„ƒµÌ8üûçúüæììúûûçûüžììjüëæëõjõ*ý÷aýÿ÷ÿ÷4ÿxý÷ýž•+÷÷_””ã””…Ò$Ù””ã÷$%ÒÙ$÷ Ò%†„„ƒ„ƒ„ƒ„ƒ„´8ßçžëçüüûjìõžçõûéüjõ+ý÷býÿ÷ÿ÷3ÿxý÷ ý”£”_+Ò…”””+÷”*÷‘†÷*Ù†±$ƒ„ƒ„ÙÙƒ”µÚ×ßjõúõìëéüçjõçjìjìjìjìjìj-ý÷bý ÿ‚÷÷ÿƒ÷ÿÿ÷ ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ƒÿ÷÷ÿƒ÷ÿÿ÷ÿ‚÷÷ÿxý÷#ý¤”‘÷%””ã÷†”ÙÒ%ã%÷÷Ò%%±Ùƒ„„+÷±‘Ùƒ“<ìçéüëõúëììõçjìjìjì j.ý÷cý ÿ÷ÿ÷ÿ÷ ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿŠ÷ÿÿ÷ÿÿ÷ÿÿ÷ÿ„÷ÿÿ÷ÿxý÷&ý¢+÷‘Ù$ÒÙ*÷+Ò±†Ù„„ƒ„„Ò%†±÷÷Ùƒ–×üëçžëììjüûžçìjìjìjìjì j.ý÷dý ÿ÷ÿ÷ÿ÷ÿ÷ ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ„÷ÿÿ÷ÿ÷ÿ÷ÿxý÷)ýž”†%Ò÷ÒÙÙÒ‘‘ÒÙ„ƒ„ƒ„‘÷ƒƒ„‘$Ùƒ›Ìûûõìjžûúëüütt.y|jìjìjìjìjìj0ý÷dý ÿ÷ÿ÷ÿ÷ÿ÷ƒÿÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ‚÷÷ÿ÷ÿ÷ÿ÷ÿxý÷,ý„$%++„ƒ„ƒã÷÷%‘‘„ƒ´ßìçëæúüüúììyät.xìjìjìjìjìjìj1ý÷eý ÿ÷ÿ÷ÿ÷ÿ÷ ÿ„÷ÿÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ‡÷ÿÿ÷ÿÿ÷ÿ‡÷ÿÿ÷ÿÿ÷ÿxý÷/ý”*÷±ã„ƒÙ±†ƒ„„Ò±*$÷%ヌ¥õæüüëìjçæõì äŠt°xìjìjìjì2ý÷fý ÿ÷ÿƒ÷ÿÿ÷ ÿ÷ƒÿÿ÷ÿ÷ÿ÷ÿ÷ ÿ÷ÿ‚÷÷ÿƒ÷ÿÿ÷ÿ‚÷÷ÿxý÷2ý‹ƒÙ÷Òã„‘÷„ ƒŒFüžõõúõjìüüéä†t°xìjì2ý÷gý ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ ÿ‚÷÷!ÿxý÷5ýŠÒ‘„Ò÷±$†„ƒ´=žæììëüéçúžbä‚tt4ý÷gý ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿxý÷8ý†ƒ„†$÷$ƒŒ<ìæüéçžûžììxä‚£¢ ä5ý÷hýnÿxý÷;ý‚Ù„ƒƒFüçûìƒüúõä†Íѽ½£¢ä6ý÷iýnÿxý÷>ýŽƒÚ¦üõììžçjžéü¢䊢ÍÓѯѽö£ä8ý÷iýnÿxý÷Aý‰ììæéüúìj䃢Ñ÷ƒ¿Ó¢ä8ý÷jýnÿxý÷Dý„ûìì|䆢¿öÑ÷öÑ¢ä9ý÷kýnÿxý÷Gý ä‡Óѿѽä¢ä:ý÷lýnÿxý÷Jýä…£Ó¢Ó£ä<ý÷lýnÿxý÷Mý ä<ý÷mýnÿxý÷Pýä=ý÷nýÿ÷ÿ÷2ÿxý÷ýý÷oýÿ÷ÿ÷1ÿxý÷ýý÷oý ÿ‚÷÷ÿ„÷ÿÿ÷ÿ÷ÿ÷ÿƒ÷ÿÿ÷ÿ÷ÿ÷ÿ÷ÿ†÷÷ÿÿ÷÷ÿƒ÷ÿÿ÷ÿ‚÷÷ ÿxý÷ýý÷pý ÿ„÷ÿÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿƒ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷÷ÿ÷ÿÿ÷ÿÿ÷ÿÿ÷ÿ„÷ÿÿ÷ ÿxý÷ýýý ÿ÷ÿ÷ÿ÷ÿƒ÷ÿ÷ ÿ†÷ÿ÷ÿÿ÷ÿ÷ÿ÷ÿ÷ÿƒ÷ÿ÷ÿ„÷ÿÿ÷ÿ÷ÿ÷ÿxý÷ýýý ÿ‚÷÷ÿ÷ÿ÷ÿ÷ƒÿÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿƒ÷ÿ÷ÿ‚÷÷ÿ÷ÿ÷ÿ÷ ÿhý÷ý÷ýýý ÿ„÷ÿÿ÷ÿ÷ÿ÷ÿƒ÷ÿ÷ ÿ†÷ÿ÷ÿÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ‡÷ÿÿ÷ÿÿ÷ÿ‡÷ÿÿ÷ÿÿ÷ ÿiý÷ý÷ýýý ÿ‚÷÷ÿ„÷ÿÿ÷ÿ÷ÿ÷ÿƒ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿƒ÷ÿ÷ÿ‚÷÷ÿƒ÷ÿÿ÷ÿ‚÷÷ ÿiý÷ý÷ýýýÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ‚÷÷ÿjý÷ ý÷fý÷"ý÷(ý÷Nýÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ‚÷÷ÿ÷ÿiý‚÷÷ ý÷eý÷$ý÷(ý÷Mýnÿiýƒ÷ý÷ ý÷eý÷ý‚÷÷ý÷ýƒ÷ýý÷ý÷ý‚÷÷ý÷ý÷ý÷ý÷Mýnÿiý„÷ýý÷ ý÷dý÷ý„÷ýý÷ý÷ý÷ý÷ ý÷ý÷ý÷ý÷ý÷ý÷Lýnÿiý„÷ýý÷ý÷aý÷ýƒ÷ýý÷ý÷ý÷ý÷ ý÷ý÷ý÷ý÷ ý÷ý÷Lýnÿiý÷ý÷ý÷aý÷ý‚÷÷ý÷ý÷ý÷ ý÷ý÷ý÷ ý÷ý÷Lýnÿiý÷ý÷ý÷aý÷ý†÷ýý÷ýý÷ý÷ý÷ý÷ ý÷ý÷ý÷ý÷ý÷ý÷Lýnÿvý÷cý÷ý‚÷÷ý÷ý÷ý÷ ý÷ý÷ý÷ý÷ý÷Mýnÿvý÷cý÷ý‚÷÷ý÷ý÷ ý÷ý÷ý÷ý÷ý÷Mýnÿwý÷dý÷ý÷ý÷ ý÷ý÷ý÷ƒýý÷ýý5ý÷ýýýhý÷eý÷2ý÷ý‚÷÷ý÷7ý÷ýý ý‚÷÷dý÷4ý÷ý÷ý÷7ý÷ýý ý÷eý„÷ýý÷ýƒ÷ýý÷ ý÷ý†÷÷ýý÷÷ý‚÷ý÷ý‚÷÷ý÷ý÷ý÷ý÷ý÷ ý÷ƒý÷÷ýƒ÷ýý÷ý‚÷÷ý÷ýý ý÷dý÷ý÷ýƒ÷ý÷ý÷ý÷ý÷ýŒ÷÷ý÷ýý÷ýý÷ý÷ý„÷ýý÷ ý‚÷÷ ý÷ý÷ý÷ý÷ý÷ýŠ÷ýý÷ýý÷ýý÷ý„÷ýý÷ý÷ýýmý÷ý†÷ý÷ýý÷ý÷ý÷ýƒ÷ý÷ý‡÷ýý÷ýý÷ý÷ ýƒ÷ý÷ ý÷ý÷ý÷ý÷ý÷ý„÷ýý÷ý÷ý÷ ý÷ýýmý÷ý÷ý÷ýƒ÷ýý÷ýƒ÷ý÷ý‚÷÷ý÷ý÷ý÷ ýƒ÷ý÷ ý÷ý÷ýƒ÷ýý÷ý÷ý‚÷÷ý÷ý÷ý÷ý÷ýýmý÷ý†÷ý÷ýý÷ý÷ý÷ý÷ý‡÷ýý÷ýý÷ý‡÷ýý÷ýý÷ ý„÷ýý÷ ý„÷ýý÷ý÷ý÷ý÷ý‡÷ýý÷ýý÷ý‡÷ýý÷ýý÷ý÷ýýný„÷ýý÷ýƒ÷ý÷ý÷ý÷ýƒ÷ý÷ý‚÷÷ý‚÷ý÷ý‚÷÷ ý„÷ýý÷ý÷ƒýý÷ý÷ý÷ý÷ý‚÷÷ýƒ÷ýý÷ý‚÷÷ý÷ýýoý÷ý÷ý÷ ý÷ý‚÷÷/ý÷ý÷ý‚÷÷ý÷ýýpý÷ý÷ ý÷ý‚÷÷ý÷(ý÷ ý÷ý÷ý÷ýýýýýýýýýýýýýýýýýýý!ýýUôUlpÔV £éçF·Iµv‡tŠ’k•i.Ï1ÍÝ à .",555333Žo‘m9Ä<Â@C éì_žbœ...,,,ŸŸŸ<<<:::øûÌ1Ï/ñ ó µH¸Fƒz†x` ]A½?¿oŽqŒzƒx†=9*Ó(ÖßßßÞÞÞ5È2ÌåååãããÄÄÄÂÂÂ58j“h–îîîìììö ówwwuuuqY¤W§. 1E¹?<¨U¦XrrrpppÇ6Ê4ÎÎÎËËËáUUUTTT^ \\\ZZZjjjhhhëÓ*Ö'Á=Ã:øøøõõõ7ÇüŒŒŒŠŠŠ+#&(ššš˜˜˜LLLJJJ¶¶¶´´´|||yyyO®R«þýÕÕÕÒÒÒ#*KH¬Q¯N­­­«««222 A#ÛÞ ñí999¥Yþý—gœœœ+++2=Áf˜ Ñ,¦¦¦¤¤¤‹rêêêççç 36îC»oooÀÀÀãø}€„„„€€€T©NIÉÉÉ‘‘‘ŽŽŽ‡v CXXX%Øbbb^^^ÐÐÐåöóóóOOONNN£Z000d™»B777)))½@ ©©©lllÙ$ᢢ¢²K‡‡‡™dûÇÇÇ'''%%%GGG•••±±±åeeeñññ|E L±ÜÜܾ¾¾»»»???>>><‰<OO×××ÿ°ÿÿOO×''OOÿ''×ÿOÿ×'×ÿ°°¸¸¸Oÿÿÿÿ'×'~~~d±d]¡ÿÿ'××OÿOúúúÿÿOÿ××'ÿÿÿÿÿÿÿlÿ‚ÿþ%ÿþ(ÿþÿÿÿ…ÿÿþ'ÿþ(ÿþÿÿÿ…ÿÿþÿ‚þþÿþÿƒþÿÿþÿþÿ‚þþÿþÿþÿþÿþÿÿÿ„ÿþÿ„þÿÿþÿþÿþÿþÿþ ÿþÿþÿþÿþÿþÿþÿÿÿ„ÿþÿþÿþÿþÿþÿþÿþ ÿþÿþÿþÿþÿþÿþÿþÿÿÿ„ÿþÿ‚þþÿþÿþÿþÿþ ÿþÿþÿþÿþÿþÿþÿÿÿ„ÿþÿ„þÿÿþÿþÿþÿþÿþÿþ ÿþÿþÿþÿþÿþÿþÿþÿÿÿ…ÿÿþÿ‚þþÿþÿþÿþÿþ ÿþÿþÿþÿþÿþÿþÿÿÿ…ÿÿþÿþÿþÿþÿþ ÿþÿþÿþÿþÿþÿþÿÿÿ‚ÿþÿþÿþ ÿþÿþÿþÿþÿÿÿ‚ÿÿlÿ‚ÿÿlÿ‚ÿÿlÿ‚ ÿþÿÿZÿ‚ ÿþÿÿZÿ‚ ÿþð‚þþÿÿXÿ‚ ÿ‚þþð‚þþÿÿWÿ‚ ÿ‚þþð‚þþÿÿWÿ‚ ÿ‚þþð‚þþÿÿWÿ‚ ÿ‚þþðþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿ‚þþ^ÿ‚ ÿ‚þþðþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþ\ÿ‚ ÿ‚þþðþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþ\ÿ‚ ÿþ úw{‚ ¬»¬¢„­××ׂþ ‡ccþcc˜"4fƃ4Æ)(Š¡  ƒ‚‚ ‚‚ ¿ƒþ -,„þÏo‚›oƒ››±*ƒ222‚0B‚B„“Kƒ«z“z‚y“.‡”Q: ƒ7²7²‰‚²Ëº„b‹‹€‹‚F€F§Žwð]ÿ‚ ÿþ‚úí ú‚ÿÿw{‚ þ»¬‡þ¢¢þ­þׂ þ„cþ˜"4þfƃþÆ)(Š¡  þ‚‚þ  þ¿†  -,, þƒÏoþ‚›oƒþ›±*ƒ22þ2þ‰0þBB”þKK“þ“K«zþ“zz“þþQ.‰”þ: þ‡²7þ²7²²‰‚þ˺Ž²þb‹‹þ€‹‹€þFFþ€Žwÿð]ÿ‚ ÿþú‚ÿíú‚ÿÿw{‚ þ»‚¬¬¢ƒþþׂ ˆþcþcþ˜"„44"VfÆŠþÆ)((4¡((ƒ‚ƒþþR¿Œ  -,,þ,MþÏoþƒoo›±*ƒ22þ2‚þ‰0BþBB‡þKKþ“ƒ«zþz…þ“þQ.””þ: þPP²7²²7þ7‰‚þ˺‡þ²‹‹þ‹…þ€FFþ€Žwÿðäð]ÿ‚ ÿúƒíÿíú‚wwÿ{‚ þ»‰þþ¬¬¢¢­ׂ ˆþcþcþ˜"„þþ44fƃþÆ)(„þþ  ‚ƒ  R¿Œ  -,,þ,MþÏoþˆ›þþoo›±*ƒ22þ2‚þ‡0BþBB‘þKKþKKþ«zþzzþy„þ.Š”þ: þ ‡77þ²²7‰‚þ˺Šþººþ‹‹þ‹‹þFƒþF§Žÿwðäþð]ÿ‚ ÿú…ÿíÿíÿú‚wwÿ{‚ þ»‰¬¬¢þ¢¢þþׂ þcþcþ˜"4""44VþfƃþÆ)(„¡ (þ‚ƒþþR¿—  -,,þ,MþÏoþo›oo›þ›±*ƒ22þ2‚þ†0BþB‘þKKþKKþ«zþ“þzyþQ.””þ: þPP²77²þ77‰‚þ˺Šþººþ‹‹þ€þ‹Fþ€Žÿwðäþäðþ\ÿ‚ ÿú…íúÿúÿú‚wwÿ{‚ þ»&¬‡¢¢þ­×þ þccþcþþ4""4fƃþÆ)( ƒ‚‚þ ‚¿¿ þ,þ,,þÏoþooþo››o‚›±*ƒ22þ2‚þ†0BþB‘þKKþKKþ«zþþ““yþQ.””þ: þPP²77²þ77‰‚þ˺Šþººþ‹‹þþ€€Fþ€Žÿwðþ‚ððþ\ÿ‚ ÿúÿíú‚wwÿ{‚ þ»ƒ&¬¬¢†þ××þ×þŒ cccþ4"‚44fƃþÆ)(Œ  ƒ‚‚þ‚‚þ¿¿þ ˆ, ,MMÏþoˆ››oo››±*ƒ22þ2‚þ‡0BþBBþKKþKKþ«zþ“„þ.Š”þ: þ ‡77²þ²7‰‚þ˺‡þººþ‹‹þ€FƒþF§Žÿwð…ääþþäðþ\ÿ‚ ÿþ…úííÿíú‚ÿÿw{‚ þ»&¢ׂ c˜"VfƃþÆ)(ƒ‚R¿ƒ  -,Ï›±*ƒ22þ2Žþþ0BBBþKKþKKþ«zþ“„þQQþ.””þ: þPPþ7²²7²7‰‚þ˺‡þººþ‹‹þ€F„þ€€þŽwÿð…äþþäþðþ\ÿ‚ ÿþ†úúíÿÿíú‚ÿÿw{þƒ»»&¢ׂþ c˜"VfÆþ(ƒ‚R¿ƒ þ-,Ï›±*þ‚þ‰þBþBþKKþKKþ«zþ“þ“yþQ.þ þPP²²þ²7þ²‰‰þ‹ºþººþ‹‹þ€þ€Fþ€Žwÿð]ÿ‚ ÿþúÿ ú‚ÿÿw{¬»&¢×Z c˜"VfÆ4(ƒ‚R¿-,Ï›±*o‚2‚0B„B “K«zy.Q: ƒ7²7ƒ²‰‰²ºb‹F§Žwÿð]ÿ‚ ÿþúí ú‚ÿÿw{ »&¢×Z c˜"VfÆ)(ƒ‚R¿-,Ï›±*20BK«zy.”: 7‰Ëºb‹F§Žwÿð]ÿ‚ ÿú‚wwÿ{ »&¢×Z c˜"VfÆ)(ƒ‚R¿-,Ï›±*20BK«zy.”: 7‰Ëºb‹F§Žÿwð]ÿ‚ÿþwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿw ðþ\ÿ‚ÿžwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿw hþ\ÿ‚ÿžwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿw hþ\ÿ‚ ÿþ žÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿ hþ\ÿ‚ ÿþ –ÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿD]ÿ‚ ÿþ –ÿwÿþKþ‚wwÿwÿD]ÿ‚ ÿþ –ÿwÿ#þ $þ!Œþ wþ!Þþ 9ƒþwwÿwÿD]ÿ‚ÿ–wÿw#þ $þ!Œþ wþ!Þþ 9ƒþÿÿwÿw<]ÿ‚ÿ$wÿw#þ $þ!Œþ wþ!Þþ 9ƒþÿÿwÿw <þ\ÿ‚ÿ$wÿw#þ $þ!Œþ wþ!Þþ 9ƒþÿÿwÿw <þ\ÿ‚ÿ$wÿw#þ $þ!Œþ wþ!Þþ 9ƒþÿÿwÿw <þ\ÿ‚ ÿþ ûÿwÿ#þ $þ!Œþ wþ!Þþ 9ƒþwwÿwÿ 9þ\ÿ‚ ÿþ ûÿwÿ#þ $þ!Œþ wþ!Þþ 9ƒþwwÿwÿ9‚þþ9]ÿ‚ ÿþûþûÿwÿ#þ $þ!Œþ wþ!Þþ 9ƒþwwÿwÿ9‚þþ9]ÿ‚ ÿþûþûÿwÿ#þ $þ!Œþ wþ!Þþ 9ƒþwwÿwÿ}‚þþ}]ÿ‚ÿÅþÅwÿw#þ $þ!Œþ wþ!Þþ 9„àþþà9ƒþÿÿwÿw}þ}]ÿ‚ÿÅþÅwÿw#þ $þ!Œþ wþ!Þþ 9þà9ƒþÿÿwÿw}þ}þ\ÿ‚ÿÅþÅwÿw#þ $þ!Œþ wþ!Þþ 9àþ9ƒþÿÿwÿw}þ}þ\ÿ‚ÿ†þ†wÿw#þ $þ!Œþ wþ!Þþ 9àþ9ƒþÿÿwÿwXþXþ\ÿ‚ ÿþ†þ†ÿwÿ#þ $þ!Œþ wþ!Þþ 9àþà9ƒþwwÿwÿXþXþ\ÿ‚ ÿþ†þ†ÿwÿ#þ $þ!Œþ wþ!Þþ 9àþ9ƒþwwÿwÿXþX]ÿ‚ ÿþ†þ†ÿwÿ#þ $þ!Œþ wþ!Þþ 9àþ9ƒþwwÿwÿ‚>>þ>]ÿ‚ ÿþŒþŒÿwÿ#þ $þ!Œþ wþ!Þþ 9àþ9ƒþwwÿwÿ>þ>]ÿ‚ÿŒþŒwÿwþKþ‚ÿÿwÿw>þ>]ÿ‚ÿŒþŒwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿˆwwûþþtÿÿwÿwÿwÿwÞþÞþ\ÿ‚ÿàþàwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿ…wwûþþÿwÿwÿwÿwÞþÞþ\ÿ‚ÿàþàwÿ„wwêwÿ„wwêêÿwÿwÿwÿwÿwÿwÿwÿ„wûûwÿwÿwÿwÿwÿwÿwÿwÿ‚ïöwÿwÿwÿüwÿwÿwÿ…wwûþþÿwÿwÿwÿwÞþÞþ\ÿ‚ ÿþàþàÿw‚ÿé Žwÿwç ú‚çÿwÿw‚ÿ÷{ñÿwÿw„tþþtwÿwÿ‚w}ÿwÿwÿëõëÿwÿw…ððïÿÿwÿwÿ‚wüýüwÿw„óããów…ÿÿtþþwÿˆwwûûþþtÿwÿwÿÞþÞþ\ÿ‚ ÿþàþàÿw‚ÿé Žwÿwç úÿwÿw…÷{{÷ñ{÷ÿwÿw„ÿþþtwÿwÿ}ÿwÿw‡ÿÿëõõììõ‚ÿÿwÿw…öððÿÿwÿwÿ„üýýüù…ýýüwwÿwóãâw…ÿÿtþþwÿ‚wûþûwÿwÿvþv]ÿ‚ ÿþtþtÿwŒÿÿéÿwêŽêÿÿéÿwÿw„ÿúúçwçÿwÿw…ñ{÷ÿÿw…ñ{÷ÿÿwÿw„ÿþþÿwÿwÿ‚}wÿ}wÿw…ÿëõõìw„ëõëÿwÿw„ïðïÿwÿwÿ…ùýüwwÿ„ýüwwÿwÿó‰ããâwÿÿtþþwÿ„ûþûwÿ‚tþwÿwÿvþv]ÿ‚ ÿþtþtÿwÿ„wêŽêÿwÿw…ÿÿçúèwÿwÿˆwwñ{{÷ÿÿw…ñ{÷ÿÿwÿw„ÿþþÿwÿwÿ‚}wÿƒ}wwÿw‚ÿëõw„ÿõõÿwÿw„ÿïðïwÿwÿ‚ùýwÿ„ýüwwÿwÿ‰wâãâÿÿtþþwÿ„ûþwwÿ…tþûwwÿwÿvþv]ÿ‚ÿtþtwÿw„ÿéŽéwÿwÿw…èúçÿÿwÿwˆÿÿ÷{{ñwwÿ…÷{ñwwÿwÿ„wûþwÿtwÿwÿwÿwÿŒwõõìõëÿÿwõõwÿwÿ„wwððÿwÿw‚üýÿw…üýùÿÿwÿw‰ÿÿóãwwûþþÿw„þþÿÿw„þtÿÿwÿw„þ„]ÿ‚ÿ\þ\wÿw„ÿéŽéwÿwÿw„çúçÿwÿwÿ‚÷ñwÿ‚{{wÿwÿt‰ûûþûttþþûwÿwÿw}ÿwÿŒwõõìõëÿÿwõìwÿwÿ…wwöðïÿwÿw…üýùÿÿw‚üýÿwÿwÿ†ãâwûþþÿw„þþÿÿw„þþÿÿwÿw„þ„þ\ÿ‚ÿ\þ\wÿw„ÿéŽéwÿwÿw„ÿçúçwÿwÿ‰wwñ{÷÷{{ñwÿwt þwÿwÿ}ÿwÿŒwìõwëõëëõõìwÿwÿw‚öðÿwÿw„ùýùùü‚ýùÿwÿwâó†ããwûþþÿw„tþÿÿw„þþÿÿwÿw„þ„þ\ÿ‚ÿ\þ\wÿw„ÿéŽéwÿwÿw„ÿÿçúwÿwÿƒwwñ{÷wÿwˆÿþþtûûþût‚þûwÿwÿ}ÿwÿ†wwõìÿëõƒìwwÿwÿw…öðïÿÿwÿwÿýüÿwÿ‚wâã„wûþþÿw„tþÿÿw„tþÿÿwÿw„þ„þ\ÿ‚ ÿþ\þ\ÿwÿ…éêêŽêÿwÿwˆççÿÿwwèúÿwÿwÿ…÷{{ñwÿwÿˆwûþûÿþþÿwÿwÿ‚wwÿwÿw„ÿÿõõwÿwÿwÿ„öðöwÿwÿüýùwÿw„óãóóâƒããÿþwÿ„ûþûwÿ„þþwwÿwÿšþšþ\ÿ‚ ÿþ_þ_ÿwƒÿÿéŽêÿwÿw‰èúúçÿwwèúÿwÿwÿ„wñ{ñÿwÿˆwwûþtþþÿwÿwÿ‚wwÿwÿw…ÿÿëõìwÿwÿwÿ„wððwÿwÿˆüýüwÿÿùýwÿwŠóãÿÿwwâããÿþwÿ„wþþwÿ„þûwwÿwÿšþš]ÿ‚ ÿþ_þ_ÿwÿŽêÿwÿwú†ççèèúèÿwÿw‰ÿ÷ÿÿwwñ{÷ÿwÿwþÿwÿwÿ‚wwÿ}wÿwÿ…õõwwìÿwÿ„wwööÿ„wöðöÿwÿˆýýwwÿÿùýwÿwŠóãóÿwwâãóÿþwÿ„wûþûÿ…tþûwwÿwÿšþš]ÿ‚ ÿþ_þ_ÿwÿ„wŽŽêÿwÿwú‚èwÿwÿw÷{÷ÿwÿwûþÿwÿwÿ‚}}ÿƒ}wwÿwÿëõÿwÿ‚wö ðÿwÿˆüýýüùýýùwÿwŠÿóããââãâÿÿþwÿ‰wwûþþttþûwÿwÿ‘þ‘]ÿ‚ÿ·þ·wÿw„ÿéŽéwÿwÿw‚èçÿwÿwÿ{‚÷÷wÿwÿ„ûþþwÿwÿw ÿwÿwëõwÿw‚ÿï ðïwÿwƒÿùùý‚üwÿwÿƒwwâã„óÿwwþÿwÿ…tûþþûÿwÿw‘þ‘]ÿ‚ÿ·þ·wÿwÿwÿwÿwÿwÿwÿ„ññwwÿwÿwÿ„ûûwwÿwÿwÿ}ÿwÿw„ÿÿëëwÿw„ÿÿïïwÿwÿwÿùwÿwÿwÿ‚wwþÿwÿ„wûwwÿwÿw‘þ‘þ\ÿ‚ÿ·þ·wÿwÿwÿwÿwÿwÿwÿwÿwÿwÿþ‚ûwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿ‚wwþÿwÿwÿwÿw‘þ‘þ\ÿ‚ÿ`þ`wÿwÿwÿwÿwÿwÿwÿwÿwÿwÿþwÿwÿwÿ‚tþw„ÿÿtþwÿwÿwÿwÿwÿw„ttÿÿwÿwÿwÿw‚ûtÿ‚wwþÿwÿwÿwÿwÕþÕþ\ÿ‚ ÿþ`þ`ÿwÿwÿw„ÿttÿwÿwÿ„ûþûwÿwÿw„ÿtÿÿwÿwþÿwÿwÿwþ‡ÿÿwwûþtÿwÿwÿ…tþûwwÿwÿwÿ„þþwwÿw„ÿÿtÿwÿw…ÿÿtþþw‚ÿÿþwÿwÿwÿwÿÕþÕþ\ÿ‚ ÿþ`þ`ÿwÿwÿw„tþþtwÿwÿtþtÿw„ÿtþtw„tþtÿwÿƒwwûþÿwÿwÿƒwwûþ„ÿÿwwþÿwÿwƒÿÿtþûÿwÿwÿ…tþþûwÿw„ÿtþtwÿwŠÿÿtþþûwwÿÿþwÿwÿwÿwÿÕþÕ]ÿ‚ ÿþ`þ`ÿwÿwÿw„tþþtwÿwƒÿÿtþƒttÿwÿþwþtwÿƒwwûþÿwÿwÿƒwwûþ„ÿÿwwþÿwÿw‚ÿtþ„ttÿÿwÿwÿþwÿwÿþûwÿw‚ÿÿþ„wwÿÿþwÿwÿwÿwÿmþm]ÿ‚ ÿþTþTÿwÿwÿwþwÿw‚ÿt þtwtþwþtwÿwþtwÿwÿƒwwûþ„tÿwwþƒtÿÿwÿwt þ‚tÿwÿwÿþûÿwtþwÿw‚ÿÿþ„wwÿÿþ‡wûþttÿÿwÿwÿwÿmþm]ÿ‚ÿTþTwÿwÿwÿþÿwÿw þÿûþÿþÿwÿþwÿwÿ‡wûþþtÿtþ„ûwÿÿþƒûwwÿwÿ þwÿwÿwþtwÿûþƒtÿÿwÿ‚wwþ„ÿÿwwþtþwÿwÿwÿwmþm]ÿ‚ÿTþTwÿwÿwÿþÿwÿw þÿûþtÿþÿwÿþwÿwÿûþ‚ttþ„ûwÿÿþƒûwwÿwÿ þwÿwÿwþtwÿûþƒtÿÿw‡ÿÿtþûwûþ„ÿÿww þûÿwÿwÿw©þ©þ\ÿ‚ÿwþ wÿwÿwÿþtÿwÿû þtÿûþ„tÿÿtþÿwÿtþwÿwÿ þ„wwÿÿþƒûwwÿwÿt þûÿwÿwþtwÿûþƒtÿÿw‚ÿtþûþ„ÿÿww þtÿwÿwÿw©þ©þZÿ‚ÿwþ wÿwÿwÿþÿwÿû þtÿûþ„tÿÿtþÿwÿ…tþþûwÿwÿ þ„wwÿÿþƒûwwÿwÿt þûÿwÿwþtwÿwþƒtÿÿw þ„ÿÿww þÿwÿwÿw©ƒþ©©þ„{{þþZÿ‚ ÿþwþwÿwÿwÿwtþwÿwþtwûþûwtþƒwwûþwÿw…ûþþtÿwÿwû þ…tÿÿwwþƒtÿÿwÿwþ…tÿwwûþtwÿwÿþwÿwÿþƒûwwÿt þ…ûwwÿÿ þwÿwÿwÿ©„þ©©þ{‚þþXÿ‚ ÿþwþwÿwÿwÿwtþwÿw„þþtÿwtþûwÿþ‚wwþwÿw…ûþþtÿwÿwû þ…tÿÿwwþÿwÿw…þþtÿÿwûþtwÿwÿtþwÿwÿþwÿ þw‚ÿÿ þƒûwwÿwÿwÿw„þwþþ{‚þþXÿ‚ ÿþ©þ©ÿwÿwÿw„tþþtwÿw„þþtÿwÿþûwÿþ‚wwþtwÿw…ûþþtÿwÿwû þ…tÿÿwwþÿwÿw…þþtÿÿwþtwÿwÿtþwÿw‚ÿtþwƒÿÿt þw‚ÿÿþ„ûûttþƒûwwÿwÿwÿw„þwþþ{‚þþWÿ‚ ÿþ©þ©ÿwÿwÿw„tþþtwÿw„þþtÿwÿþûw‚ÿtþ‚wwþÿwÿw…ûþþtÿwÿwþ‚ÿtþ…tÿÿwwþÿwÿw…þþtÿÿwþtwÿwÿ…tþþûwÿw…ÿtþþûwƒÿÿt þw‚ÿÿþ…ûwÿÿtþ‚wwÿwÿwÿw„þwþþ{‚þþWÿ‚ÿ©þ©þ„wwÿÿþ„wwÿÿþ„wwÿÿþƒûÿÿþ„wwÿÿþ„ûwÿÿþ‚ÿÿþ„ûþþtþ„ûwÿÿþ„wwÿÿþ„ûwÿÿþ„wwÿÿþƒwwtþ„wwÿÿþ„wwÿÿþ„wwÿÿþ„wwÿÿþƒwÿÿþ„wwÿÿþ‚wûþ„wwÿÿþ‚ÿÿþû þÿ þwþ„wwÿÿþ„wwÿÿþ„wwTTþƒTþþ{‚þþWÿ‚ÿmþmþ„wwÿÿþ„wwÿÿþ„wwÿÿþƒûÿÿþ„wwÿÿþ„ûwÿÿþƒûÿÿþ„ûþþtþ„wwÿÿþ„wwÿÿþ„ûwÿÿþ„wwÿÿþƒwwtþ„wwÿÿþ„wwÿÿþ„wwÿÿþ„wwÿÿþ„ûwÿÿþ„wwÿÿþ‚wûþ„wwÿÿþ‚ÿÿþtþÿþtþ‚wûþ„wwÿÿþ„wwÿÿþ„wwTTþƒTþþ{‚þþXÿ‚ÿmþmþ„wwÿÿþ„wwÿÿþ„wwÿÿþƒûÿÿþ„wwÿÿþ„ûwÿÿþ„ûwÿÿþwþ„wwÿÿþ„wwÿÿþ„ûwÿÿþ„wwÿÿþƒwwÿþ„wwÿÿþ„wwÿÿþ„wwÿÿþ„wwÿÿþ„wwÿÿþ„wwÿÿþ‚wûþ„wwÿÿþ‚ÿÿþÿþÿþÿþ‚wûþ„wwÿÿþ„wwÿÿþ„wwTTþ„TTþþ{‚þþYÿ‚ÿmþmwÿwÿwÿ„ûþþûÿwÿ„þþûwÿwÿwþwÿwÿ…tþþûwÿwÿþƒwwÿþ…ûwwÿÿþwÿwÿ…þþûwwÿwÿwÿw…ûþþtÿwÿ„wûþþÿ…wwþþtÿ‚wûþÿ‚wwþÿw…ûþþÿÿwÿwÿwTþTþZÿ‚ÿmþmÿwÿwÿw„tþþtwÿw„þþtÿwÿwÿþÿwÿw…ûþþtÿwÿwþ„ÿÿwûþ…tÿÿwwþÿwÿw…þþtÿÿwÿwÿwÿ…tþþûwÿw„ÿtþþw…ÿÿþþûw‚ÿÿþw‚ÿÿþwÿ…tþþwwÿwÿwÿ`þ`þÿþ%ÿþ)ÿþÿ‚ÿÕþÕÿwÿwÿw„tþþtwÿw„þþtÿwÿwÿtþtÿwÿw…ûþþtÿwÿwþ„ÿÿwûþ…tÿÿwwþÿwÿw…þþtÿÿwÿwÿwÿ…tþþûwÿw„ÿtþþw…ÿÿþþûw‚ÿÿþw‚ÿÿþwÿ…tþþwwÿwÿwÿ`þ`ÿþ'ÿþ)ÿþÿ‚ÿÕþÕÿwÿwÿw„tþþtwÿw„þþtÿwÿwÿtþtÿwÿw…ûþþtÿwÿwþ„ÿÿwûþ…tÿÿwwþÿwÿw…þþtÿÿwÿwÿwÿ…tþþûwÿw„ÿtþþw…ÿÿþþûw‚ÿÿþw‚ÿÿþwÿþ‚wwÿwÿwÿ`þ`ÿþÿ‚þþÿþÿþÿþÿþÿ‚þþÿþÿƒþÿÿþÿþÿ‚ÿÕþÕÿwÿwÿw„tþþtwÿw„þþtÿwÿwÿþÿwÿw…ûþþtÿwÿwþ„ÿÿwwþ…tÿÿwwþÿwÿw…þþtÿÿwÿwÿwÿ…tþþûwÿw„ÿtþþw…ÿÿþþûw‚ÿÿþw‚ÿÿþwÿþ‚wwÿwÿwÿ·þ·ÿþÿ„þÿÿþÿþÿþÿþ ÿþÿþÿþÿþÿþÿþÿ‚ÿ‘þ‘wÿwÿwÿ„ûþþûÿwÿþƒttÿwÿwþwÿwÿ…tþþûwÿwÿþ„wwÿÿþ…ûwwÿÿþwÿwÿþ„ttÿÿwÿwÿw…ûþþtÿwÿ„wûþþÿ…wwþþtÿ…wwþþtÿ‚wwþÿwþ‚ÿÿwÿwÿw·þ·ÿþÿþÿþ ÿþÿþÿþ ÿþÿþÿþÿþ ÿþÿþÿ‚ÿ‘þ‘wÿwÿwÿ„ûþþûÿwÿûþƒûûwÿwþwÿwÿ…tþþûwÿwÿþ„wwÿÿþ…ûwwÿÿþwÿwÿtþ„ûûwwÿwÿw…ûþþtÿwÿ„wûþþÿ…wwþþtÿ…wwþþtÿ‚wwþÿwþ‚ÿÿwÿwÿw·þ·ÿþÿ‚þþÿþÿþÿþ ÿþÿþÿþ ÿþÿþÿ‚ÿ‘þ‘wÿwÿwÿ„ûþþûÿwÿû þwÿw„tþþtwÿwÿ…tþþûwÿwÿþ„wwÿÿþ…ûwwÿÿþwÿwÿt þ‚wwÿwÿw…ûþþtÿwÿ„wûþþÿ…wwþþtÿ…wwþþtÿ‚wwþÿwþ‚ÿÿwÿwÿw_þ_ÿþÿ„þÿÿþÿþ ÿþÿþÿþ ÿþÿþÿþÿþÿþÿþÿ‚ÿ‘þ‘wÿwÿwÿ„ûþþûÿwÿû þûÿw„tþþtwÿwÿ…tþþûwÿwÿþ„wwÿÿþ…ûwwÿÿþwÿwÿt þ‚ûwÿwÿw…ûþþtÿwÿ„wûþþÿ…wwþþtÿ…wwþþtÿ‚wwþÿwþ‚ÿÿwÿwÿw_þ_ÿþÿ‚þþÿþÿþÿþÿþÿþÿþÿþÿþÿ‚ÿšþšÿwÿwÿw„tþþtwÿwt þwÿûþÿwÿw…ûþþtÿwÿwþ„ÿÿwwþ…tÿÿwwþÿwÿwû þÿwÿwÿ…tþþûwÿw„ÿtþþw…ÿÿþþûw…ÿÿþþûw‚ÿÿþwÿþ‚wwÿwÿwÿ_þ_ÿþÿ‚þþÿþÿþ ÿþÿþÿþÿþÿþÿ‚ÿšþšÿwÿwÿw„tþþtwÿwÿ þwÿþÿwÿw…ûþþtÿwÿwþ„ÿÿwwþ…tÿÿwwþÿwÿw þÿwÿwÿ…tþþûwÿw„ÿtþþw…ÿÿþþûw…ÿÿþþûw‚ÿÿþwÿ…þþûwwÿwÿwÿ_þ_ÿþÿþÿþ ÿþÿþÿþÿþÿ‚ÿšþšÿwÿwÿw„tþþtwÿwÿ þwÿþtÿwÿw…ûþþtÿwÿwþŒÿÿwwûþþtÿÿwwþÿwÿw þÿwÿwÿ…tþþûwÿw„ÿtþþw‚ÿÿþw…ÿÿþþûw‚ÿÿþwÿ…þþûwwÿwÿwÿ\þ\]ÿ‚ÿ„þ„ÿwÿwÿw„tþþtwÿw„ÿþþtw„ÿtþþwÿtþtÿwÿw…ûþþtÿwÿwþŒÿÿwwûþþtÿÿwwþÿwÿw„þþtÿw„tþþÿwÿwÿ…tþþûwÿw„ÿtþþw‚ÿÿþw…ÿÿþþûw‚ÿÿþwÿ…þþûwwÿwÿwÿ\þ\]ÿ‚ÿ„þ„wÿwÿwÿ„ûþþûÿwÿwþÿ„wûþþÿwûþûwÿwÿ…tþþûwÿwÿþŒwwÿÿtþþûwwÿÿþwÿwÿþwÿ„ûþþwÿwÿw…ûþþtÿwÿ„wûþþÿ‚wwþÿ…wwþþtÿ‚wwþÿw…þþtÿÿwÿwÿw\þ\]ÿ‚ÿ„þ„wÿwÿwÿ„ûþþûÿwÿ„wûþþÿ„wûþþÿwþwÿwÿ…tþþûwÿwÿþŒwwÿÿtþþûwwÿÿþwÿwÿ„ûþþwÿ„ûþþwÿwÿw…ûþþtÿwÿ„wûþþÿ‚wwþÿ…wûþþtÿ‚wwþÿˆwwûþþtÿÿwÿwÿwtþt]ÿ‚ÿvþvwÿwÿwÿ„ûþþûÿwÿ…wûþþtÿwþÿwþƒtþþwÿwÿ…tþþûwÿwÿþŒwwÿÿtþþûwwÿÿþwÿûwÿ„ûþþûÿþwÿwÿw…ûþþtÿwÿ„wûþþÿwwûþþtÿÿwûþþtÿ‚wwþÿˆwwûþþtÿÿwÿwÿwtþt]ÿ‚ÿvþvwÿwÿwÿ„ûþþûÿwÿ…wwþþtÿwþÿŒwwûþþttþþûwwÿwÿ…tþþûwÿwÿþŒwwÿÿtþþûwwÿÿþƒûwwÿ…tþûwwÿ„wþþûÿþwÿwÿw…ûþþtÿwtÿ„wûþþÿ‰wwûþþtÿÿwþtÿ‚wwþ…tÿÿwwþÿwÿwÿwtþt]ÿ‚ÿvþvÿwÿwÿw„tþþtwÿw‚ÿÿþwÿþwŒÿÿtþþûûþþtÿÿwÿw…ûþþtÿwÿwþŒÿÿwwûþþtÿÿwwþ‚ÿÿwþ‚ÿÿwÿþwþÿwÿwÿ…tþþûwÿ‚þþw„ÿtþþwƒÿÿtþƒûwÿþûw‚ÿÿþ„ûwÿÿþwÿwÿwÿtþt]ÿ‚ÿvþvÿwÿwÿw„tþþtwÿw‚ÿÿþw„ÿþþtw‚ÿÿþ‚ûwþ‚ÿÿwÿw…ûþþtÿwÿwþŒÿÿwwûþþtÿÿwwþ…tÿwwûþ‚tÿwÿþw„þþtÿwÿwÿ‘tþþûwÿÿtþþûwwÿtþþwÿ þûw‚ÿÿþ†wÿtþþûwÿwÿwÿàþà]ÿ‚ÿÞþÞÿwÿwÿw„tþþtwÿwŒÿÿtþþûwwtþþtw‚ÿtþ‚wwþ‚ÿÿwÿw…ûþþtÿw‚þtÿwþŒÿÿwwûþþtÿÿwwþ„twwûþ‚tÿwŒÿtþþûwwûþþtÿwÿwÿˆtþþûwÿÿtþ†wwÿtþþwÿ þûw‚ÿÿþtþûwÿwÿwÿàþà]ÿ‚ÿÞþÞÿwÿwÿw„tþþtwÿwˆÿÿtþþûwûþtwtþƒwwûþtw„ÿþtÿwûþþtÿwwûþþtÿÿwþŒÿÿwwûþþtÿÿww þ‚tÿw‡ÿtþþûwûþ‚tÿwÿwÿ‡tþþûwÿÿþ†wwÿtþþwÿtþûw‚ÿÿ þûwÿwÿwÿàþà]ÿ‚ÿÞþÞwÿwÿwÿ„ûþþûÿwÿwþwÿþƒÿÿtþûÿ„ûþþût þ†ûwwÿÿtþŒwwÿÿtþþûwwÿÿ þwÿ‚wwþ‚wwÿwÿw‡ûþþtÿwwþ†ÿÿwûþþÿwû þÿ‚ww þÿwÿwÿwŒþŒ]ÿ‚ÿ>þ>wÿwÿwÿ„ûþþûÿwÿwþ‚ûwÿþ„tÿÿtþûÿþ…wwÿÿtþ„wwÿÿþ…ûwwÿÿ þ‚ûwÿ‚wwþƒûwwÿwÿw‡ûþþtÿwûþ†tÿwûþþÿw þÿ‚ww þÿwÿwÿwŒþŒ]ÿ‚ÿ>þ>wÿwÿwÿ„ûþþûÿwÿwûþ‚ûwÿþtÿþÿþ„wwÿÿþ„ûwÿÿþ…ûwwÿÿ þ‚ûwÿƒwwûþƒûwwÿwÿw‡ûþþtÿwûþ†tÿwûþþÿwtþˆtÿÿwûþþtþûÿwÿwÿwŒþŒ]ÿ‚ÿ>þ>wÿwÿwÿ„ûþþûÿwÿwþ‚wwÿþtÿþÿþ„wwÿÿþ„wwÿÿþ…ûwwÿÿ þ‚wwÿwþwÿwÿw†ûþþtÿwþ…ÿwûþþÿw‚ÿtþ‰tÿÿwûþþttþ‚ûwÿwÿwÿwŒþŒ]ÿ‚ÿ>þ>ÿwÿwÿw„tþþtwÿwÿûþƒtÿÿwþwþwþ„ÿÿwwþ„ÿÿwwþ…tÿÿww þ‚ÿÿwÿtþtÿwÿwÿ†tþþûwtþ…wÿtþþwÿw‚ûtþ„ûwwÿþƒûwûþ‚tÿwÿwÿwÿ†þ†]ÿ‚ÿXþXÿwÿwÿw„tþþtwÿwÿûþtÿwþwþwþ„ÿÿwwþ„ÿÿwûþ…tÿÿwwþtˆþþûûþtÿÿwÿtþûÿwÿwÿ†tþþûwtþ…ûÿtþþwÿw‚ÿtþ„ûwwÿþ‡wwûttÿÿwÿwÿwÿ†þ†]ÿ‚ÿXþXÿwÿwÿw„tþþtwÿwÿ„wþþûÿwþwtþwþ†tÿÿwwûþ„ÿÿwwþ…tÿÿwwþ‡tÿÿûûwwÿwÿ„þþûwÿwÿwÿ…tþþûwþ‰tûþþûÿtþþwÿw‚ÿtþwÿþwÿwÿwÿwÿ†þ†]ÿ‚ÿXþXÿwÿwÿw„tþþtwÿwÿwÿwþwtþwtþƒtÿÿw‡þþtÿÿwwþ…tÿÿwwþƒtÿÿwÿwÿwÿwÿwÿ…tþþûwþ‚ÿwþ…ÿtþþûwÿw‚ÿÿþwÿþwÿwÿwÿwÿÅþÅ]ÿ‚ÿ}þ}wÿwÿwÿ„ûþþûÿwÿwÿwÿ„ûþþûÿ„ûþþûÿwût‰þþûwÿÿttþwÿ†ûûwwÿÿþw‚ÿÿþƒûwwÿwÿwÿwÿwÿw…ûþþttþ‚wÿþ…wûþþtÿwÿ„wwûþÿwþÿwÿwÿwÿwÅþÅ]ÿ‚ÿ}þ}wÿwÿwÿ„ûþþûÿwÿwÿwÿ„wþþwÿ„wûûwÿwÿ…tþþûwÿwÿw…ÿÿtþþw‚ÿÿþƒûwwÿwÿwÿwÿwÿw„ûþþtþ‹ûwÿtþþûûþþtÿwÿwÿwþÿwÿwÿwÿwÅþÅ]ÿ‚ÿ}þ}wÿwÿwÿ„ûþþûÿwÿwÿwÿwÿwÿwÿ…tþþûwÿwÿwÿ‚þûw…ÿÿtþþwÿwÿwÿwÿwÿw„ûþþtþ‹wwÿtþþûûþþtÿwÿwÿwþÿwÿwÿwÿwûþû]ÿ‚ÿ}þ}wÿwÿwÿ„ûþþûÿwÿwÿwÿwÿwÿwÿ…tþþûwÿwÿwÿwÿ‚þûwÿwÿwÿwÿwÿwûþ„wwÿÿþtÿwÿwÿ…wûþþtÿwÿwÿwÿwûþû]ÿ‚ÿ9‚þþ9ÿwÿwÿw„tþþtwÿwÿwÿwÿwÿwÿw…ûþþtÿwÿwÿwÿwûÿwÿwÿwÿwÿwÿtþ…tÿÿwwþûwÿwÿw…ÿtþþûwÿwÿwÿwÿûþû]ÿ‚ÿ9‚þþ9ÿwÿwÿw„tþþtwÿwÿwÿwÿwÿwÿw…ûþþtÿwÿwÿwÿwÿwÿwÿwÿwÿwÿtþ†tÿÿwwûþûwÿwÿw„ÿÿttwÿwÿwÿwÿû]ÿ‚ÿ9þ9ÿwÿwÿw„tþþtwÿwÿwÿwÿwÿwÿw…ûþþtÿwÿwÿwÿwÿwÿwÿwÿwÿwÿtþÿƒwwûþûwÿwÿwÿwÿwÿwÿwÿ$]ÿ‚ÿ<ÿwÿw„ÿÿtÿw„tþþtwÿwÿwÿwÿwÿwÿw…ûþþtÿwÿwÿwÿwÿwÿwÿwÿwÿwÿtþtÿwþûwÿwÿwÿwÿwÿwÿwÿ$]ÿ‚ÿ<wÿwÿ„wþþwÿ„ûþþûÿ„wûþwÿwÿwÿwÿwÿwÿ…tþþûwÿwÿwÿwÿwÿwÿwÿwÿwÿwûþûwÿþtÿwÿwÿwÿwÿwÿwÿw$]ÿ‚ÿ<wÿwÿ„ûþþûÿ„ûþþûÿ„wþþûÿwÿwÿwÿwÿwÿtþwÿwÿwÿwÿwÿwÿwÿwÿwÿwþwÿtþtÿwÿwÿwÿwÿwÿwÿw–]ÿ‚ÿ<wÿwÿûþt„ûþþûtþÿwÿwÿwÿwÿwÿtþwÿwÿwÿwÿwÿwÿwÿwÿwÿwþtwÿtþtÿwÿwÿwÿwÿwÿwÿw–]ÿ‚ÿDwÿwÿþÿwÿwÿwÿwÿwÿtþûÿwÿwÿwÿwÿwÿwÿwÿwÿwþtwÿþtÿwÿwÿwÿwÿwÿwÿw–]ÿ‚ÿDÿwÿwþwÿwÿwÿwÿwÿwûþtwÿwÿwÿwÿwÿwÿwÿwÿwÿþûÿwþûwÿwÿwÿwÿwÿwÿwÿ–]ÿ‚ÿDÿwÿwþwÿwÿwÿwÿwÿwûþtwÿwÿwÿwÿwÿwÿwÿwÿwÿþûÿwtþûwÿwÿwÿwÿwÿwÿwÿž]ÿ‚ÿhÿwÿwþwÿwÿwÿwÿwÿwûþtwÿwÿwÿwÿwÿwÿwÿwÿwÿþûÿwtþûwÿwÿwÿwÿwÿwÿwÿž]ÿ‚ÿhÿwÿwþwÿwÿwÿwÿwÿwûþtwÿwÿwÿwÿwÿwÿwÿwÿwÿtþwÿwtþwÿwÿwÿwÿwÿwÿwÿž]ÿ‚ÿhwÿwÿûþÿwÿwÿwÿwÿwÿþwÿwÿwÿwÿwÿwÿwÿwÿwÿwþÿwÿwþÿwÿwÿwÿwÿwÿwÿwþ]ÿ‚ÿwÿwÿwþûÿwÿwÿwÿwÿwÿþwÿwÿwÿwÿwÿwÿwÿwÿwÿw„tþtÿwÿ„wûþûÿwÿwÿwÿwÿwÿwÿwþ]ÿ‚ÿwÿwÿ„wþþûÿwÿ„ûþûwÿwÿwÿwÿwÿwÿûwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿ„wwûwÿwÿwÿwÿwÿwÿwÿwþ]ÿ‚ ÿ{‚wwÿwÿ„wûwwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwõ]ÿ‚ ÿ{‚ÿÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿõ]ÿ‚ ÿ{‚¬¬ {‚ÿÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿõ]ÿ‚ ÿ{…þ{¬þ¬{‚ÿÿwÿwÿWŽÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿõ‚ÿæõ]ÿ‚ ÿ{¬‚þ¬{‚ÿÿwÿwÿŽw Ž‚ÿÿw Ž‚ÿÿw Ž‚ÿÿw Ž‚ÿÿw Ž‚ÿÿwŽƒÿwwWúwÿwÿwÿwÿõæÿõþ\ÿ‚ ÿ{þ{‚wwÿwÿwŽÿwŽwÿwŽwÿwŽwÿwŽwÿwŽwÿ†wŽŽwÿÿúwÿwúwÿwúwÿwúwÿwúwÿwúwúÿwÿwÿwÿwõƒÿæÿþ\ÿ‚ ÿ{‚¬¬{‚wwÿwÿwŽÿwŽÿwÿwŽÿwÿwŽÿwÿwŽÿwÿwŽÿwÿˆwwŽwÿÿúÿwÿwúÿwÿwúÿwÿwúÿwÿwúÿwÿwúÿwúÿwÿwÿwÿwõ„æÿæþŽ‚þþZÿ‚ ÿ{„¬¬{þ{‚wwÿwÿwŽÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿˆwwŽwÿÿúÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwúÿwÿwÿwÿwõƒæþþŽ‚þþYÿ‚ ÿ{…þþ{¬¬{‚wwÿwÿwŽÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿˆwwŽwÿÿúÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwúÿwÿwÿwÿwõƒÿþþŽ‚þþYÿ‚ ÿ{…¬¬{¬þ{‚ÿÿwÿwÿŽwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwˆÿÿŽÿwwúwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿwÿúwÿwÿwÿwÿõƒÿþþŽ‚þþYÿ‚ ÿ{wŽUwŽwúUwúwõ‚þþŽ‚þþYÿ‚ ÿ{ÿŽÿŽ ÿŽ ÿŽ ÿŽ ÿŽ ÿŽÿú ÿú ÿú ÿú ÿú ÿúÿúÿõ‚þþŽ‚þþZÿ‚ÿÿÿ‚þþŽ‚þþ[ÿ‚ÿÿ ÿþ[ÿ‚ÿÿ ÿþ]ÿ‚ÿÿlÿ‚ÿÿlÿ‚ÿÿlÿ‚ÿOÿþ%ÿþ)ÿþKÿ‚ÿNÿþ'ÿþ)ÿþJÿ‚ÿNÿþÿ‚þþÿþÿþÿþÿþÿ‚þþÿþÿƒþÿÿþÿþJÿ‚ÿMÿþÿ„þÿÿþÿþÿþÿþ ÿþÿþÿþÿþÿþIÿ‚ÿMÿþÿþÿþ ÿþÿþÿþ ÿþÿþÿþÿþÿþÿþIÿ‚ÿMÿþÿ‚þþÿþÿþÿþ ÿþÿþÿþÿþÿþIÿ‚ÿMÿþÿ„þÿÿþÿþ ÿþÿþÿþ ÿþÿþÿþÿþÿþÿþIÿ‚ÿNÿþÿ‚þþÿþÿþÿþÿþÿþÿþÿþÿþJÿ‚ÿNÿþÿ‚þþÿþÿþ ÿþÿ‚þþÿþÿþÿþJÿ‚ÿOÿþÿþÿþ ÿþÿþÿþÿþKÿ‚ÿÿlÿ‚ÿÿlÿ‚xžožlp´h“4`ë_ãV³M³4š+š3|2rÂ*ݹ&Ý40#/¨Z VVÆNƈ‡ˆ| ¿¹¿VŠL‹•Y”OýQíþLä‰sˆjp›o’1h1[oˆo}7¯7¥jëjãþ-½þ(¶ì›æšR}RrV'öU#îÞ“ØçAèÜ<èSfSXW>ÿU7þeKYJUšKšÂ&ÒÂ#Éã9ÙÚ4Ù‡œˆ‘çG÷ÝAôõ¦í¦“Ñ“ÉýFÛý?Òҥ˥`+ü`%ôþ¨þ£´‹´ƒV/ýN/úä)ºÛ'º”®•¥´k±cVÏMÎ’â’ÚüŸôœÈ‹ÈƒÃ/èº*汫±¤•k•bCÎ:Î…“†k,ýj$ö¾‹¿ƒCÜAÕ¥k¥b•À•·{ÝtÞ³{³s–{•s£®£¥Ð8ïÐ4嫆¤†Ñ‹Ï„!® ¦àšÙ›Å¦½¨jÛ_۞ўȵšµ’±$੠ߢÀ¢·¥{¥s«Ò¬ÉÇ{¾{7Ä0Á°¿°´¡ÞšÞÑ’È“WÙNÚä¦Û¦ý7Èñ5ÈDÅD¼‡â‡Ú—›—‘`Ð`Ĉ]}]†è~ío©b¨ñ+»ò"±¿œ¿“5¸)¸¨›©‘ š!‹{Ð{ć¨{©C²C§TåG!åќȜm-«IFG4s[eZK&ðóGê|ƒ¿´R½n¸a¸‡¸{¸!aÏ#ºÐ­nÐnÄÏ/ÙÏ)Éaƒ· Î|—R§ýVúóOú]=ƒKrIˆЇÄsmcnB`a—`>ÿd4þ@™@Šà °ð>Øu%øvì"x1Šþ#°+Iß0ÉAx¾q???ÿÿÿÿÿÿ\ÿ‚ÿÿ\ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿ#ÿþÿ8ÿ‚ÿÿ ü‚ ×øÿ2ÿ‚ÿÿ üø…×ø×ø× ý×ÿ(ÿ‚ÿ ÿ ƒø øüøøŒ×øý×ø××××ý ×ÿ"ÿ‚ÿÿ ƒøø üøø‚׊ý××××××ý ×ÿÿ‚ÿÿ ‰ ø ø üüø‚ø „×ý†×ýý××õ×õׂõ×ÿÿ‚ÿÿ‚  øËøüüøøëøʃ×ë낉õõõýýõ‚×õׄõ×õõÿÿ‚}ÿ  ŽøËÊøÊøüüÊøÊÊøʈëëëë„ëë …õõýýõõƒõ×õÿÿ‚zÿ  øËËø øÊøüëøëëë‡ëëëƒú ‚‹õýýõõõõ„×õ×õÿÿ‚xÿ ˇøËÊëÊüüÊ…ëÊëë3ë“úëëúëúúúúú öƒýýõƒöõ õÿÿ‚uÿ Ë‚ÊËʃüÊÊëƒ3ë2ë+ë+ëúëúëúëúýú†úúú…ðöö…õýýöõÿ ÿ‚sÿ ˃ÊËËʇ7ÊÊüü3ë3ë‹2ëëúúëúëúë+ú…ýúúˆðððð…ðööðö‚ýö‚õö õÿ ÿ‚qÿƒ Ë ˃ÊäËÊ„3üü73232+2ƒ+ú+ú*úýúðúðúúðð‹ððööðööðöŽðöýöö½öö½õöõöõ„½õ½õÿÿ‚oÿ Ë‚äËʆ7Ê77üü3…732332„++22 +‚ú+ú‡ýúúðúð‡úðððð„öðöðö‚ð½ö„ýýö½ö†½½ö½õ½õ½ÿÿ‚mÿ ˇääÊÊäÊä7ƒ3ü73‚2Í2ê2+***úúðð*ðúðúððŒöööýöööö½ö…½ö½õ½õÿÿ‚kÿËäÊ‚äÊ7ƒü37̓32Í2ê2‡+ê++2+*+****úúððððïð‹ïððððððƒðýö½½öö½½ö½õ½õÿÿ‚iÿ˃ääÊä7¢67377ü7Í3322Í22Í2Í22ê2ê++êÞ++êÞ*Þ+*‚*ðððððïððïððïðïðŒððïððý‚öö„½öö½‡ö½ö½õ½õ~ÿ‚gÿˇääÊÊäÊä7ˆ3776ÍüÍ3Í„êÍê2êŒ+ê2Þ2+*ê**++*…***Ž9ðð9ïðïïðð9ðï†ïïï‚ýý†ö½öö½‚õ½|ÿ‚fÿË‚ÊÊä76„Í6ü6Í…êÍÍêÍê“ÞêêÞêÞ*ê*ÞÞ*ÞÞ*ÞÞ*…ý9‰9ðïð9ð9 ï‰ïïïïý‡½ö½½ö½{ÿ‚dÿËä76‡Í66Í6Íü͈êÍÍêêÌêÍêÞêÞˆ*Þ*ÞÞÞ“ý8999ï9ïï9ï9ïŠÃï#ïïïý ½yÿ‚bÿ‹ ËËäÊää766ä6Í6‡Í6ÍÍüÍÌ̓êÌÍ êƒÞêêÞƒêÞêÞƒÞÞÞ’ý8899999ï99ï9ï„9ï9ÃïŠÃïïÃïïý  ½wÿ‚ÿþFÿ‚ËËä‚6ä6‡ÍÍÌ6ÌÍüÍ–ÌÍÌêÌêêéêééêé!!ÞêêÞêÞêÞ†ìÞìÞìì‚ý8‚98‚989 Ã9ïÃï9ÃÃïÃïïÃïÃÃÃ#ïý##Ã##‚½¼½vÿ‚ÿþBÿËä6ŒÌ66Ì66Ì6ÌÍÍüÌÍéêÌêÌéÍêéêê!êêé!ˆÞ!ÞÞ!ÞÞ Þ†ììì8ì89›Ã99Ã99Ã99Ã9ÃÃïÃïÃÃï##Ãïý##…##‚½½uÿ‚ÿþ=ÿËä 6Ì6ÌÌ6ÌÍÌÌüÍÌêÌÍÌééêééêééê!!ê!ê!‚Þ Þ Þ‚ìÞìƒÞìì8ì8”Ã898Ã89Ã9ÃÃ9ÃÃ9Ã9ÃÃ9Ã’#"##ý##Ã####É‚¼¼½sÿ‚ÿþ9ÿËä6äæ66ÌÌ6æÌ6Ì6Ìü̆éÍÈéêÌé†!é!!éé! !! Þ ì ìÞìÞì„8ì8ì8á88ááÃ9ÃÃ8ÃÃ9Ãá9Æ""ý##Ã##‡#Éɼ„½½¼½rÿ‚ÿþ5ÿËä†æäæ66æ6‚Ì6ÌŠüÌÌéÌ̯Ì̯ éŠ!!È!! ! !! ‰ÞÞÞììÞìŠ8ì8ìá8áì8á8áá8Ãá9ááÃÃáÃá ÃŒ"ÃÃ""ý#"#"#Ã#‚#„¼¼¼½‚¼½pÿ‚ÿ þ1ÿËä6…æ6Ì6æ̯Ì„üéÌÌéÈéŠÈ!!éÐé!!Ðé! ‰Þììììý8ì³ì³88ììááìá8áÃÃáÃÃÃáÃà Ç""ý"Ã""#"#‚Éɼ½oÿ‚ÿ þ-ÿËäŽæ6ææ6ææÌÌæÌ̯¯ÌŸé¯é¯ü̯Èé¯Ì¯é¯ééÈÈé!ÈÈ!!Ðé !Ð!Ð †   ˆììììý슳³á³ìááìáìáÃáÃáÃáÃÃÃÂÇÃÂÃÃý"Ã"#Éɼ¼¼¼½¼¼nÿ‚ ÿþ)ÿä‰æäæ66æÌÌæ̯åÍÌ̯̯̯Ìü¯È̯ÌÈéÈéÈÈé!ÈéÈ!!ÈÐ!ÐÈ Ð ÐÐ Ð à Šìììýì³8³ìŒ8á³ìá³áá³áá8áŽÃÃáÃáÃÃÃÂÉÂÃÂ"ý""ÃÂ"#…Ƀ¼½ÿþÿþÿþÿþÿþÿþÿþÿþÿþ&ÿ‚!ÿþ'ÿËä‚66æ…ÌÌåÌ̯…Èü¯È¯È„¯ÈÈéȘÐÈÐÈÐ!È!Ð!Ð ÐÐ Ð à à “ìýì²ì³³²³ìá³áá³á‚áƒááŒÃÃÃÈÃÂÂýÂ""Â"…É#É#ɼ½ÿþÿþÿ þÿþ‚ÿÿ þ‚ÿÿþ$ÿ‚"ÿ þ&ÿƒËääæ6Ì‚å̯ŠÈȯüȯȯȯȆéÐÈÐÈÐà àÐ Ðàà‰³ìì³³ìáì³á³³á³áááááႈÂÂÃÂýÂ"Â"„É"É#Ƀɼÿþÿþ‚ÿÿþÿþ‚ÿÿþÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþ‚ÿÿþ#ÿ‚#ÿ þ&ÿŽËääæäææÌåæåÌå̯ŒÈ¯È¯®¯®üȯÈÈŒÈÐÐÈÈÐÐÐÐŒà àÐààà‡²³²²³’á³³³á³ááááá ˆÂ§Â§‚ýÂ"‚ÂÂ"‡É"#É#ÉÉ ¼ÿþÿþ‚ÿÿþ‚ÿÿþÿþÿþ‚ÿÿþÿþÿþ#ÿ‚#ÿ þ&ÿ‚ääæ„6Ìææ̯ȯ¯®¯¯È¯ÈÈüÈȃÈÈÈ„ÐÈÐÈ ÐàÐàÐàÐàààà‚²³‚ì²³ƒÔ³³³ƒáš§Â§ÂÂý§Â"¸Â"‰¸ÉÉ#É##ɼÿþÿþÿþ‚ÿÿþÿþÿþ‚ÿÿþÿþÿþ#ÿ‚$ÿþ&ÿä‹æäåæåÌÌå¯å̯‹®¯Èȯ®®üŠÈ…ÐÐÐДàÐÐàÐàÐààÐààಇ²²²³²³Ô³‚³ §‚”§Â§Âý¸§Â""ÂÂ""¸"¸É‚ƒ¼ÿþÿþ‚ÿÿþÿþÿþ‚ÿÿþÿþ‚ÿÿþ$ÿ‚%ÿþ$ÿ‚ääæ’ÌæÌå̯¯®¯¯®¯®®®®†üÐÐÐàÐàààÐàà²Áàà²ý²²Ž³³Ô²²Ô³ÔÔ³Ô³ …Ò§„Ò§Ò§§§§Âý§§¸¸§Â"¸"Ɇ#Éɼƒ¼ÿþÿþ‚ÿÿþÿþÿþ‚ÿÿþÿþ‚ÿÿþ(ÿ‚&ÿþ„ÿÿþþ!ÿä‰ææå6åÌå¯å¯†®¯®®‚ü ƒ‚ˆÐà?àààŒÁàಲÁàý²³‚²²³ÔƒÔÔƒÒÒ§§§§ý§Â…"¸§Â§"„™"¸#Ƀ¼¼ƒ¼ÿþÿþ‚ÿÿþÿþ‚ÿÿþÿþ‚ÿÿþÿþ‚ÿÿþ‚ÿÿþ#ÿ‚'ÿþÿþÿ‚ääæŠÌå¯å¯¯®¯®®ƒ®ˆüy…Š?ÐàÐ?àà?à?àŒÁÁàÁà²Á²ý²Á²‹ÓÔ³ÔÓÔ²³³Ô³ˆÔÔÒÒÒ§Ò‰§§Ò§Ò§Ò§ý§‰"¸"¸§¸Â¸"¸Ƀƒ¼ƒ¼ ÿþÿþÿ þÿþ‚ÿÿþÿþÿþ#ÿ‚(ÿ‚þþÿ‚þþÿ‚ääæ‡åå̯¯®¯®‚®‹dddüd‡y‚??„à?à>àÀàˆ²àÁÁ²àý²Á²Ó²ƒÓ³³ ÔÒˆÒÒÒÒÒ§Ò§ý§ƒ"¸"¸„"¸"¸É‚ƒ¼ ÿþ…ÿþþÿÿþÿþÿþÿþ‚ÿÿþÿþÿþ$ÿ‚(ÿþ ÿþÿäæ‡ååÌå¯å¯®‡®®e®d‰düdydyy„yy„x‚??…>à>à>à†ÁÁ>ÁÁàÁƒ²²Á²Ó²ŠÓ²²ÓÓ³Ó³Ô³ÔÒÔ…ÒÔÒÒÔ Ò‹§ÒÒ§§§ý§¸§†¸"™"¸¸Ƀ‚Ƀ¼#ÿþ<ÿ‚3ÿ‚þþÿ‚ääæ…åÌå¯å®®‡ddydyüyyŠxyyxxx…i«?‚>?>‹à>Á>àÁÁàÁÁàÁ‡²ÁÁÖ²Ó²Ó‡²ÓÓÔÓÔÓÔ‹ÒÔÔÒÔÒÒÒÒÔÒƒ§Ò§ƒÒ§Ò§ˆý§§¦§¦¸§¸†§"™"¸¸Ɉ‚Ƀ¼ƒ¼ƒ¼"ÿþ<ÿ‚ ÿ‚þþÿ þÿþÿ‰ääæååÌå¯å®„de®dƒdüy‘xxxxxxixiŒ?««??>?>?>?>‡àÀààÀÁàÁŒ²Ö²ÁÓ²ÓÁ²Ó²²Óƒ²ÓÓÔŒÓÔÔÒÔ­ÒÒÔÒÔÒÒŽ§ÒÒ§Ò§§ý§¦§‹¸§¸¸§¸¸"™¸¸Ɉ‚‚ƒ¼¼ƒƒ¼!ÿþÿþ8ÿ‚ ÿ‚þþÿþÿ‚þþÿ‚þþÿäæ„å¯å¯®ˆe®e®®dƒdydy„üyyxy‚xyxxxxii««?‚>?>À>†ÀÁàÀÁÀÁ‡²ÁÁÓÓ²ÖÓ²Ó„ÔÔ­ÓÔŽ­­ÒÔÒÒÒÒÒÒ‰§§§§„ý§§…¸¦§¸¦¸‚§"¸É‚‚ƒ¼ ÿþÿþ8ÿ‚ ÿ‚þþÿþÿþÿþÿäæå‚®å®d®d…ydyyüy‚xy x„iixiŽi«?«?«?ª>«>ª>Àƒ>ÀÀÁÀÁÀÁýÖÁÖÓÁÁÖÓ²Ö²Ó†ÔÓÔ­Ô­Ô‹­ÔÔÒÒҜҧ§§§¦§ý¦§¦§¦§§¸¦§¸˜§¸Ɇ‚ƒƒ¼ƒƒ_ÿ‚ ÿ‚þþÿþ ÿ‚þþÿ‡äææåÌ寮ƒd®e®d‚ydyüyƒxyyxhxi‹«i«?i?«>«??>?>À>‚À>À†ÁÁÖÁÁýÁ‡ÖÓÁÖÓÓÖÓ“ÛÓÓ­ÓÔÓ­Ò­Ô­Ò­Ò­ÒÔ‚ÒÒ‚§ƒ¦ý¦‹¦¦§¸¦§¸¦¸˜¸¹É‚ƒÉ¼þ^ÿ‚ ÿ þÿþ!ÿþ ÿƒäææ傮宂ed‘yddyd“yy“üy’yx’y’ x…hixihi’«««?«?ª>«>ª>>ª>ª> À‘ÁÀÕÁýÖÕÖÁÖÖ²ÖÖ²ÓÖÓÛÓÔÛ­ÓÓÛÔ­Ô­ÔÔÔ ‚Òˆ¦ý¦§§¦•¸¦¸¦¸§˜¸¸˜"™"¸¹É¹‚‚Ƀþ]ÿ‚ ÿ þÿþ!ÿ‚þþ ÿ‚äæ宂®e‚dedƒypdy†üxyyxyx„’xxhxhi˜«i««?«?«?«>«?ªª>À>À>ª>À>À‰ÁÁÀýÁÁÖÁÁÖ“ÓÖÓÖÓÖÓÓÛÓÛÓÛÓ­­Ô­Ô­‚­ XnÒÒý¦¦n§¦„¸¦¸§¸…™"™"™É‚‚ƒþ\ÿ‚ ÿ‚þþÿþÿþ"ÿþÿäæ„宮宇e®deededŽydy“yy“xxüy’x’x’xhƒxixh«ii«h«h«ª«ªª>ª>>ª‚>ª ÀÕÀ†ÕÖÖÕÁÕÖÁÖÓ¿ÓÓÖÓÖÛÓÛÓÓÛ­Û­‡­­­­X…n§ý¦¦Š˜¦˜˜¦˜¸¦¸˜¸…¹É¹É‚þ‚ƒ¼[ÿ‚ ÿ‚þþÿ‚þþÿþ"ÿþÿæ劮®®e®eded™yd““yy“yy“üy’yxx’’xxx’hxhiƒh«h «ª>…UÀU>ªÀ‚ÕÕÀ…ÖÖÁÕÁÖŒÓÖÖÓÓ¿ÓÛÛÓ¿ÓÛƒÓ­Ó­‚¬‚X­X„nÒX†ýY¦¦¦”¸¦¸¦¸¸˜¸™¸¸É¹Éþ‚‚¼ƒƒ[ÿ‚ ÿ‚þþÿþ#ÿ‚þþÿæ‚åå®e‚ded‚“py‹“xy’y’üxx’’xƒ’x’x…’hxxh‚«h«ªUª>ªÀUÀªUUÀÀTÀŒÕÀÕÕÀÕÖÖÕÖÖÕÖŒ¿ÖÓÖÓ¿ÓÛÛÓÛÓÛ„­Û­Û­‡¬­­X”XXXnnÒYý¦¦¦¦˜˜¦˜˜¸˜¸¸˜¸™™þÉ‚ƒ¼ƒƒZÿ‚ ÿ‚þþ3ÿƒþÿä冮åe®e£ddpdpdyy“y“y““y’yüx’’x’’x’’hxxh‚««‚ª«ªU˜>UÀUÀÀTÀÀTÀÕÀÕÕÀÕÕÖÕÖÖÕÓÖ‰¿¿ÛÖÛÖÓ¿ÓÛ—­¬Û­Ú­­¬­X¬XX­XXXXXX‹nÒýnn¦‰§¦¦˜¦˜¦˜¦¸þ¹É…‚‚¼ƒ¼Yÿ‚Cÿ‡þþæåå®®e„ddepdžyd“y“y“xy’y’ü’’x’x’’x’hx’xhhˆ«h««»««ª«ª…UªªUªU…ÀÀUÀTÀŽTÀÕÀÕÕýÕÀÕÕÖÕÕÖ¿Ö…ÛÖÛÛ¿ Û­¬­­X­XXXXXXnnýnn¦n¦‚˜¦˜þ‰¸¹‚É‚‚ƒƒ¼Yÿ‚CÿŠæåþå®®eedŠp““py““x““’‹üx’h’’x’x’‹’xhhhh«ƒ»««ª‚UªU¤TUUTÀTTÕÀTÕÀÕÀýÕÕÀÕÕÖÖè¿ÖÖ¿¿Ö¿ÛÖÛÛÖ¿Û…Ú­Ú­­¬‹­X¬X¬XX¬X‡nnýn‚¦n¦…o¦¦˜¦þˆ™¸¸¹ÉÉ‚‚ƒXÿ‚Bÿ‰ææåþþ®®e‹pdpdp“ddy“y“†’y“x’ü’†’’’ƒhhŒ«»«»««»«ª»ªºª…UªUUªUTTÀTTÀÀsÕÀsÀÕÕýÕ‹ÖÕ¿ÖÖ¿ÖÖ¿Ö¿ÛÚÛŽ­Ú­Û­¬¬­¬¬X¬¬X¬X‚ÅXýXnnYo¦o¦ þ‰™¸™¸¹¹É‚‚ƒ¼Wÿ‚Aÿäå„®þeˆdeddpydd“„x“xv’Šü’’x’’’’ »h«»»««»ªª«ªºªºU{U‚TÀTˆÀsTÕÕTÕýÕ‡èÕ¿Õè¿Ö¿Û¿‚Ú¿Û’ÚÚÛ¬Û¬¬Ú­¬­¬¬¬XX¬XXXÅnýnnn¦Yo þ‹˜¸™™"¸¹¹É‚‚ƒ¼Vÿ‚Aÿæ厮®þþeqddpdpp“–y“y“’“’x’’hü’’v’~’~”h«»»h«»»ª«»ªº«ºUºUª…UU{UUTˆUTÀTÀÕÀs Õ‹¿ÖèèÖè¿Ö¿Û¿Ûƒ¿ÚÚÛ‡ÚÛ¬Û­¬Ú¬ŽX¬¬X¬XX¬ÄÒ XÄX‰ÅýÅnYn þ˜™„¸¹¹É‚‚ƒƒVÿ‚@ÿˆæåå®®e¦þepdpd“ypy““’’“’“v’v’vü’vxv’~’’~~»Šh»»««»»ªº»ªU{ˆªUUzUUTUTŠsTTsÀsÕsÕsÕ‹èÕèÕèÕ¿¿Ö¿è¿¾ÛÛ¿ÛÛÚÛÚÛÚ¬Ú­¬­¬XX¬X¬4XXÅX†ÅýXÅnXþ¦˜†™¸™¸¹¹‚‚ƒƒUÿ‚@ÿ†æåå®e†qdpþþdp“’x’†ü’~vh~„~~»Œ»»«»»ª»«ªªºƒ{ºªU{UƒzUzT†sÕTsÀsÕ†èÕèÕÕè¿è¿‘Û¿¿ÚÛ¾ÚÛÚÛÚÛÚ¬Ú¬Ú¬„Ä­XX4X4XXÅXXÅýþ‡˜˜¦˜¸˜¸™ƒ¸¹É‚‚ƒƒUÿ‚?ÿˆæåå® e„ppþd“’’’“’’vv’’üv’vv~v ~»~„»»ƒ«»«º»ªŽU{ºUºU{{zUzTUzT’sTsÕssÕssÕrÕÕEÕÕèÕèÕ¿¾¿¾¿¾¾¿¾Û¿¾Û¾Ú†ÛÚÚ¬¬Û¬ˆX¬Ä­XX¬X‡ÄXXÅXþýþ…o¦˜˜o˜‡™¸™¸¹¹É‚‚ƒƒTÿ‚>ÿ‡æåå®eppdpp“þþ““’““w’v’‡vvüv ~»~‚»~»~»…º»ª»ªº„UºU{UˆzUTTzTzsTŽsTÕTsÕýÕrÕÕèEÕ肿迉ۿ۾ÚÛÚÚÛÚ˜¬Ú¬¬Û­¬Ä­XÄXÄXÄXÄXÄXýþ‡o˜oo˜˜g˜™†¸¹¹É‚‚ƒSÿ‚>ÿ–æåå®®eqeqeppdp“y“þ““’Švv’üv~v ~†»»~»~»~»‚º»ºƒª{ª{…zUzUzTs‡ÕssýÕrrÕƒèÕÕè‘¿¿ç辿¾¿¾¾Û¾Ú¿ÚÚ¾ÚžˆÛ¬Ú­¬¬¬¬Ä¬X¬¬ÄXXÄXÄXÄÅÅþý þ†o¦˜¦g¦˜‹™™¸¸¹É¹‚‚ƒ‚Sÿ‚=ÿ‡æåå ešpdpdp“p“w“wþv“v’v’v’~vvü~v~O~…N~N~»~ƒ»~~»ƒ~»~»„º»º»ºƒªºU{ŽUzUzzUzTzTzT‘TsƒÕsýÕƒEÕÕèÕèç¿‹è¾¾¿¿¾¿¾Ú¾ÛÚ†ˆ¬¬Ú­¬”¬XÄXĬÄXÄÄ XXý þno…¦˜o˜¦˜™…¹¹ÉÉ‚ƒRÿ‚=ÿ‹åå®eeqeqp“Ž’“þþv’v’~v’~vü~O~N~ˆ»~»»»~»º{‚ºU{‰zzUzTzTzTs‹rsýrrÕrErèÕè¾è¾¿¿¾¾Ú¾ÚÛ¾ÚÚ¾Ú›ˆ¬Ú¬¬¬¬X¬XÄ ÄX44Xý þY„ogn˜g„˜g˜˜™¹„‚ƒ‚ƒRÿ‚<ÿæåe eppdpp“p“šwvv’’þv~vv~v~Oü~O~ON~N~~N~NŒ~»~»~»~»»†Œº»»º»º‚{º{ƒz{{z˜TzsT‘Tzs‘s‘sÕsrrÕrrÕèÕEEè‰çè辿羿辂ھڟˆÚ¬ˆˆ¬ˆ¬¬¬¬¬Ĭ¬4XÄXĬÄXÄÄý þÅnŒYn¦o¦gg˜g˜g˜™¹„‚‚ƒƒQÿ‚<ÿŠåå® eqeep¡“w“w’““’vv’þþ~v~v~üO~O~~OO~N~N~~»~†~N»»„»»º†c{º{{c{ƒzz{z†‘T‘s‘Ts‡‘rssrsÕr†ÕÕèEÕEèˆçè¿¿ç¾¾¿¾ Ú¾¾Ú¾ÚuÚÚuÚ¬ÚÚ¬¬¬¬ÄĬ4Ä-ă-þý þŒ nYnYnoo¦¦gg˜„™˜™™¹‚Qÿ‚;ÿå‚e‡qpqppdw“‡w“v’wv’vþOˆ~üONNON~NŽN~~»~»»~»…º»ºŒ»ºƒc{º{ƒzz{zŠ‘T‘s‘s‘sr‘r‚ÕrE‚ÕEè‹Eèçèèç羿¾ç¾ŸÚÚ¾ÚÚ¾ÚˆÚuˆˆÚÚÚ¬¬í¬X­ÄXÄþýþˆÅnÅnnoYno¦gg˜gg™˜™™¹™¹‚Pÿ‚:ÿ¤æå eqepdpwpp“w“’“wv’v~v~v~OþþOOüOƒNOONŽNN~~»»»ºŒºcºc{c{c{c{z{z{zŽ‘z‘‘zs‘ss‘ssr‘r”ÕrÕEEèEEçèèçèçèè¾è¾¿¾•tÚtÚÚuÚÚˆÚˆÚ¬ˆ¬¬ˆÄ4¬4X-þƒ-ý-þÅn n Ånonoogo˜o˜™¹‚Pÿ‚:ÿŠååeqeqqpw“„wvv’v‚OvO†þþüþNO N˜NN~»»»ŒŒºŒººŒº‚cº{‚z{z‚‘z‘‰s‘rsrsrýr„ErÕEè‚çè焾ç¾ç¾‹Ú¾Út¾ÚuÚÚˆÚˆ¬†ÄÄ--þ…-ÄýÎÄþŒ-ÄÅÄnn ÅnYnYogƒ˜gg™¹‚Oÿ‚9ÿ‰æå eeqp“w„“’v’vƒOOvOˆNþüþþNNO N‚N»‹»»»º»º»Œºc‹{{cc{czcbzbz‚‘z‘ˆs‘r‘rrýr‘ÕEErEEèœèèçèçèçèç¾ç¾†t¾ÚÚuÚu‹ˆÚÚ‰ˆˆˆ‚-þ-ý--ÄþþÅ-ÅÄÅÅn ÅnŠogo¦go˜™™g™¹‚Nÿ‚9ÿŠååe qqeqp…wp““’wvƒ~vvO†NþüþþlN‚NNN„ºŒŒºc‡{czcz{{z„‘z‘z‘˜ss‘rrýErE”ÕEEÕEÕèDDèEç‚è羈羾t¾u¾uÚ“ˆÚíuˆˆˆˆÄÄþ-K-KÄÄýQ-þ-Å-ÅÎÄÅ…nn nYo˜g‚™g™¹‚Nÿ‚9ÿ„å eqpˆwpw“wwv’v…OvvOvOŒmNNüþOýýlNNlNƒN Œ„»ŒºŒccººc{c{czbzbzb‘ƒz‘z‘z‘rŠ‘rýrEsÕEErEè…ççèçè焾ççt¾†t¾¾uÚtu‡ÛÚ$ˆˆÚ‰%‚Kþ‚-Ä-ƒ5-ý-…Å-ÅÅ-ŇnÅnnoong‚™g™¹‚Nÿ‚8ÿ†åå qp†“w“w“wvƒOvmO‚NNOŠülNlNýlNl·ƒNN·„ŒŒºŒƒºŒŒc…b{czbz„bbzz‘‰ßT‘‘r‘r†”rÕEErE„DDèD焾¾çt¾tt¾uÚuÚuÚˆíÚÚˆ‰íÚí¬$-Kþ…K-íÄ-ŠýQ-Q-Q-Î-ÎÅnŒggnggn™g™g™™¹‚Mÿ‚8ÿ“å eeqppWpVwpw“vvwv…OvOvmO•mNlüNNlNlýNll·l·l‘ŒŒŒŒŒºŒŒºcŒcŒcŽbbzbzbbzz‘‘‘z‘ŠßTsrr‚”ÕE‡èEèçèçD爾¾çt¾t¾¾tu‹íÚ$ˆˆí‰$þ-K-K-î-î-5ý-Q,Î,΃-Î-ÅŒnnonÅ™gg™g™g™¹‚Mÿ‚7ÿ†åå qp‚w“wvƒOmvOmmlOlONülNlNlNlˆN·N··Œ„ŒŒŒ‚cŒc{b„z‘{zƒ‘z‘‘rErr”ÕE”E…DEEçèç©çt¾çt¾tt¾tÚtuˆÚuˆ$ˆ$ˆ$Kþ‡KK-K-K-,‚Pý,ƒÎ,P΂ÅÎʼnnggřřgg™¹‚Lÿ‚7ÿ‡åeeqepVw‚vwv˜—vvmOmOONOmNmlmülNl·N·ll·N····¶¶Œ¶ŒŒ‚cŒcÑcbz{cbbzbz‘Šrr”rE”ÕEÕE‰èçEçDDççD物ççt¾çt¾¾tÚtÚtuîuˆˆu%$ˆ%KKþœîîK-K5K,K,,KýP,P,ÎÎ,QÎ,ÅÎÅÎÅŠnÅgnn™Å™™n™¹‚Lÿ‚6ÿ‰å e qqpw“wvw—vOvOv—Om¦NmlNlNüllNll·NlN·ý···¶¶¶Œ¶Œ¶Œ…¶cŒcºc“bbzzbzz‘zz‘‘‘ßz‘‚rýr”r”rEE”EDEèDD穃t¾©t‚¾tu‰¾uuíÚ$%î%þ‚KK„î,K5PýP‡QÎ,ÎQ,ÎÅŒnÅÅggn™Å™g™g™¹‚Kÿ‚6ÿ‹å eqqppVpwvmOŽNmlOlmlül·l··l·‚ý·˜···¶·¶¶ŒŒ¶Œ¶ŒcŒc‡ŒÑc‚Ñcbzbz‘z‘‘‘ßT‘‡•ý””ErE‹”èèDEDDçèDD熩©tt¾©tŒutuuîÚôÚôˆ%$þK†,JJKJJPýP…QQÎÎQÎŇnngÅÅ™Åg™¹‚Kÿ‚6ÿ…å  eq„ppVpw‰vvwv——mvOm„lmmOlül†·l·l·l·‚ýý·‹¶Œ¶¶Œ¶Œ†cŒ‡Œc‡cbŠzbbzzbz‘‘‚ß‘ƒrýErœ”r”ÕE”EDEDEDDçDDççç°çç©çtt¾tu†$uîÚî%þ‚îK„îîKKP…JPîPýPˆQQÎÎQÎÅQÅ‚™Åg‚™g™¹‚‚‚Kÿ‚5ÿ‹å eqqppVpwvŠOvm—mvmOmNlml‡ül··l·l ·„¶·¶¶·Œ¶¶Œ¶Œ¶¶Œ¶Œ¶¶ŒƒccŒcÑÑcbbÑb‘zzz‘„ß‘•‘ý”r”rErEŽÕD‹DED爰簩çttçtˆuutôu$uóþ„$%$îK…5JîKîPƒýP5PQˆÎQÎÅÎÎÅnŇgřřgg™¹‚Jÿ‚5ÿ‹å qqWqppVwvv——v—vOOmOmlml‡üllŸ·Ÿl ·¶·¶·¶·¶Œ¶ŒŒ¶¶‡‡Œ‡cƒÑzcb„‘zš‘‘‘ß‘•rŽT”r”E”ÕE”EEDDçD 烩±çtŠ©t±tuuôuô%þ‹ôKî%kKKîKîKJ5JîíPPíýPP55P5P5QŒÎQÎÅÅÎÅÅgÅgÅg‚™g™¹‚‚‚Jÿ‚5ÿ‹ eqpWVVpwûvƒmv—ml‡^ll·üŸ·l··Ÿ··Ÿ··¶·¶·¶·‚¶·¶»·¶Œ¶Œ‡ŒŒ‡Œcc‡‡cÑÑcbÑbbbzzz‘‘‘ß‘‘ß‘•r r”Õ”rŽEèD”E”DçDœçç°çç°°ç©t©t†±utuuôþ‡íu$Kî$îK†îJJPîJPˆî5PýP5P5PQƒÎÎQÅ„gÅ™Åg„™g™™¹‚‚‚Jÿ‚4ÿ‡å qqWpw’vvw——vmO—OmOmlmmlml•^lülŸ··Ÿl··Ÿ·¶·Ÿ··¶··¶…ý¶¶··¶ŽŒ¶¶Œ¶‡¶‡c‡‡ccÑbƒzbzž‘‘ß‘ß‘ß‘•Õ”ßE”Õ””EDEDè”ççDç°ç„©©t©tôþ$—íô$kKkîKîKîîJPPîîíP5í5ý5Q‘ÎÎQQÅgQgQgÅ™Ågg™g™¹‚Iÿ‚4ÿå eqqpVpVwwûwv‚——m…lmllml^lœül·^·ŸŸ·Ÿ·Ÿ·Ç·Ç·Ÿ¶Ç··Ç·ýý¶¶·¶•‡‡c‡c‡‡ccØccÑbbbcz›‘‘ßzßzß‘•s•rߎsEr”r”èEE”ç”D‡”çœçœçç°©‰t©©t±t±¾ôþó$ôô%$î$kî$îKîJJîP‡îPP5ý554Q„ÎÅÅQÅŠgÅgÅ™gng™g™¹‚Iÿ‚4ÿƒ q…ppVwpwˆûvû—mvm—m„_l^^lŸŸ·üŸ^·l·Ÿ·Ÿ·ŸŸ·Ÿ¶·Ç·¶Ç¶¶Ç¶¶ý¶‡¶‡‡cØccØcÑbÑbzzz‘ß‘ß‘•ß•ŽsýŽ””rŽr””ç”ED‚çD烰ç©°t„©tt±þ’ótô$íôîuîkkîkîKîîJîí‚5ý 4„ÎQÎQÅ„gÅÅ™g™¹‚‚‚Iÿ‚3ÿ…å eW‚pVw‰vv—vv—m—Omƒllmlˆ^^ll^Ÿü·Ÿ”·ŸÇ·Ç·¶ŸÇŸ¶ŸŸ¶Ÿ¶·Ç¶Ç¶‡Ç¶¶‡¶Œ¶‡ŽŒcØccÑccÑc;c£‘‘ß‘ß‘‘•‘Ž•ýE”r”EŽrE”ç”D”DDçDœç穈簩°tt±±þŽôuîôô$ôKî$îkîkîí‚îîíý 4„ÎQÅQÅ‹ÎgÅggÅgg™gg™¹‚Hÿ‚3ÿˆ qqppV„wwûw—ƒvm—m–l_mm^m^^lŸ^Ÿ·üŸ^·^·ŸŸ·Ÿ‡¶Ç¶Ç¶Ç¶Ç¿¶Ç¶ÇǶ‡Ç¶Ç¶Ù¶¶Œ¶¶‡‡ØccØcØccc{{;z;z:zß‘ßß••‘•ýŽs””r”E””E”ED‚”œDçççç°°ç°ç°©t©±þôtôôîôôîôî$îîkîjîjíý 4’QÎQÅQÅÅgQgÎggngn™g™‚¹¹‚Hÿ‚3ÿ eWqWVpwwûwv—v—ƒmm—ml^m^ll^lŸl^lüŸ‚ÇŸÇŸ‘ÇŸŸÇ·Ç¶Ç¶Ç¶¶Ç¶ý¶‡¶¢‡Ù‡‡ÙŒ‡Ø‡ÑcÑÑcz;zß;‘:••‘ß•™ý”ßr””r”E”DD”D”DDçDDç爰ç°ç°©±þ‚±tô‹îtóôî$$îóî$îjíîíý 4‹QÎQÅÅQÅgÅgÅg‡™g™™¹™¹‚Hÿ‚2ÿŠå qqppVVw„ûv—v—m_l^‚l^ŸüŸÇŸÇŠ†¶¶ýLJ¶ÙŒ¶‡…ØŒc‡ØÑ¥ccÝ{Ýzz:‘:‘;s‘ß•ßE””ßEŽ”E””D”D“”œçœççç°ç°ç°ç°©°þ„±t±tô‡îtóôóî$j‹îjjíjíîîííîíý 4ŒQÎÎQÅÅÎÅnngÅg™¹‚Gÿ‚2ÿ‘ qWWVpVwûwwû——mŠ_^lm_^_^lŸ^ƒŸ^üŸ‚žŸdžŸÇÆÇÇŸdžÇ‹†Ù¶ýÙŒ¶Ù¶‡¶‡ƒØccѹczÝzÝ‘:‘:ßߑߕߔߔr””r””D”DD”œçD”çœDçç°çç°ç©°¨þ†¾°±±t±ô…îôîôój‚íjî‚íjíý4QQÅQÅÎÅÅnÅgnng™¹‚‚‚Gÿ‚2ÿ‰ qqppVVw„—v—v—ƒmm_m‡^^l^l^^Ÿƒ^ŸüŸÇŸÆŸ†žÇÇŸÇÆǃ†Ç†Ç‘¶¶ýÙ¶‡Çهه،ØØÑÑ‘ÝczÝz;:‘;••ߢߔߎ•””r””D””D”œçDçœççç°°þ‹°±t±t±±ôô±ôójŠóíóîjîíîíî í…ýí44í 4Q‚ÅÎÅ‚gÅg™¹‚Gÿ‚2ÿ qqWpVVwûwû—‚m—m…l__l_^ŸŒ^üžŸŸÇÆŸžÇÆŸÇÆǨÆdžÆÇdžÇƆ†ÙÇÙ¶ÇÙ¶‡Ù¶‡‡ØŒÑŒØcÑÑcÝ;zÜŽßßßßß:”ߎ”—E””DD”D”œçDœççDç°°çç°þ°°©±t±±t±ôóô±ó‰îóíóíjîjî íý4í 4QÎÅ…ngÅgng‚™g™¹‚Gÿ‚1ÿå qWWVpVww—wû—Šm—mm__l_^l^›ŸŸ^Ÿ^ŸŸüŸžžŸŸÇÇžÇƞƞƞÆÇÆÆǨÆdž†ÆdžÇÇÙ‡ÇÙ¶‡Ø¶Ø¶ØØÑØÑØÑÑÝcÝcÝz;;;ß߆ßý” ”ŒD”œ”DD”œDœç†Dçç°þŒ°°©°°±t±±ô±±ó‚îójƒíjjíj íý 4QÎÅ‚nng™‚¹¹‚Fÿ‚1ÿ qppVVwûw——v—‰_mm_l_l^_^ŽžŸž^ŸüÇŸŸÆžžÆžÆ¡ÙƆÇÆdž†ÙÇÙÇLJهÙý‡Øc،،ØÑÑÝÑÑ݉;::ß;ß„ý”” ”‘DD”DDDççç°þ‚°ç°©±‚ó±ój†ójjíjj íý 4QƒÎÅÎÅng™‚¹¹‚Fÿ‚1ÿ† qWWVƒwûw—†m—m–_m_^”ŸŸ^^ŸŸžžüžÆžžÆƞƞƞÆHÆÙÆ—Çdž†ÇÙÇÇÙ‡ÙýýØÑØÑØÑØÑ؈Ý;;::ߊ;”:ß”ý •” ”Š””DœDDç‚çþ†¨°D°¨°±‚ó±ó‹jójjíjíóííj íƒý4í 4QÎÅ…nÅngng‚™g™‚¹¹‚Fÿ‚1ÿ‹ qWpVVwûw—–m„_l^m^žŸžŸžŸžüžžÆžžÆžÆHÆHšÆÆÙÆÙÆÙžÙÙÇÙÙÇÙ¶ØØýضØÑØÑ؇;;Ý:Ý;:Ÿß:”ß ý” •” ””Ž‹”D”Ž”œœDDDþ‹°ç°¨°°¨°°±°±„ó±ó±ó‹jjójóííóííó í„ý44í 4Q΂ÅÅn‚gng‚™g™„¹¹‚‚Fÿ‚0ÿŽå qWpVVwûwûû—ƒmm–_^”€Ÿ^ž^€žŸžžüÆžÆƞƞƞÆ„žÆٞƂHÙƈÙÆÙÙÆÙÙžÙ•ŸØÙØØÙÑØÑØØØÝÝÝ;Ý:;Ÿ::;ß:ß: ßß ßߎߔŽ””Ž””œœDœD”œDœþ’°°D°ç¨°¨¨°±°±±ó°ó‰jóíóíóííóíóíƒý4í 4Q‚ÎÎÅng„™g™™¹‚Eÿ‚0ÿ† WWV…wûv—–—‰–_mm_^_^_^ž^ŸžŸ€žžüžÆžžÆžÆÙÆ„ñÆÆÙƈÙÙÆÆÙÆÙÆÙ›žÙÙØٶضØØÙØØÝØÝÝÝ;Ý:; : ߎßߎ”ߎ”””‰œŽœœDœDþ…ç°¨°…¨°±°°±‚ó±ó‡jóóíóíóíó í„ýí4í 4QÎÅ„nngng†™g™™¹¹‚Eÿ‚0ÿ‰ qWpWVVû†w——–mm_‚m_^‡€^Ÿ€Ÿž€ž’ÆüžžÆžÆ.ÆÆ.Æ„ÆÆ„ž„ƆHÆÆñÆÙƇÙÆÙÆÙÙÆٟكØØÙØ’ÝÝØØÝÝØÝÝÝ::Ý::ÝÜ:— ::Žß:Ž”Ž”Ž””œ”DŽ”œœþ‰ç°¨°„±±°°±„ó±ó±ó‡íóóíóíóíý4í4‚55QÎÅn†gngg™g™‚¹¹‚ÿ‚þþÿþÿþ#ÿ‚0ÿ‹ qWpûVwwû—‚–—_^†€€^€žŸžˆüÆžÆ.Æƞơ„ÆHÙÆ£H„ÆHÆHÆñÆñÆÙ„SÆÆÙÙžSÙÙSSØÙÙ؃SýýÝØÝ‚Ý:Ü::::: :ŽŽ:” Ž”ŽŽ”œDœ”œœþŽ°ç°¨°°Z°Z°±ó‡íóóíóíóíó íƒý4í 4ƒ5Q5QÎÅn†gngg™g™¹‚ÿ‚þþÿ„þþÿÿþ$ÿ‚0ÿ‹ WWpûVûwû—…_m__m^‰_^€^^ŸžŸ€žÆžüÆžÆÆž„Æ„Æ.ÆÆ„‘Æ„Æñ„Ù„ÙÆÆÙ„ÆÙÆÆñÙ‹SžSžÙžSSØÙSØý݈ÜÝÝÜÝÝÜ;:‚:“ýa: ߎ ” Ž””Ž”œŽœþ„°°Z‚°Z°‚±°±„ó±ó±ó†íóíóíóíóíƒý4í 4‚55QÎŃngng™„¹¹‚‚ÿ‚þþÿ…þþÿþþ%ÿ‚0ÿˆ WWVVwû†—–—–—m_„^^^€ž­ü„Æž„Æ„Æ„Æñ„ÆHÆ£H£„Æ„Ù„„Ù„ÙÙñÆSÙÆÙñžÙñÙRÙSžSS؇ùSùÝýÝùÝ„ÜÝÜùܘÜ::ý  ” ”ŽŽ”Žœ”œŽþœœZ†°Z°Z°Z°±…°ó°ó±óˆíóóíóííóíóí…ý4í4í45Q·ÅÅnÅngng‚™g™„¹¹‚‚ÿ‚þþÿþ%ÿ‚/ÿŠ WqpWVûw—‚_m_Œ^_^€^€^žŸžž€žŽ„Æ.üž„Æ„ž„Æ„„Æ„Æ£‘„Ù„ñÆ„„Ù„„ÙñÙÙñÙñÙƒRSžS„ØØSù݉ùÝÜùÝ=ÝÜÝ܉`Üý` ‰Ž Ž”Ž”ŽþˆœZœZZœZ°ˆ±±°ó°óó±óˆíóóíóííó í†ý4í44í45Q΂ÅÅn‚ong™‚¹¹‚ ÿ þÿþ&ÿ‚/ÿˆ WWVûVû…——–—–_†^_^^€^€ž‡Æžü„Æ„Æ„‰Æ„„£„££„ñ„–£„ñÆ„ÙñÙ„Ùñ„ÙññÙÙñÙRÙÙS’ÙSùSùÝSÝùÝÜùÝ=Ý=Ü= Ü„`ý ŽþœœZœZZœZœ°Z°Z°Z°‡ó°ó°óó±ó‡íóíóííó í„ýí4í45‚PPQÎÅn‚gng„™™¹¹‚ ÿ þÿþ&ÿ‚/ÿ’ WWpVVwû——û—–_m–_‡€_€^^€ŸžŒ.ž„.ž„ü„ž)„Æ„™£„£)„£)„ññ„ñ„„Rñ„„ññÆñÙñÙñ…ÙñÙRRS‚ùSù•Üý=Ü=Ü=Ü=}ÜÜ}ÜÜ}Ü}}`†a Ž Žþ‹ŽœZœZZœ°Z °„ó°ó±ó‡íóóíóíó í…ý4í4í45QÎÅ„nnong™¹‚ÿ‚þþÿ…þþÿþþ%ÿ‚/ÿ’ WWVVûVûû—–——–_m_ƒ^^€ƒžž€ž‡Æ„žü„Æ.„‹)£)£¢)„)¢)ñ)’ññ„ññ„ñ„ÙñÙñSÙRÙÙRS‚ùSù„<ù=ý=}=1}}Ü}Ü}Ü}`„aa Žþ†ŽZŽœŒZœœZZ°ZZ°Z°Z°‰óZó°ó°óó±óŒíóóíóííóíóíóí‰ýíí4í4í445‚P5Q΂ÅÅn‚gng™„¹¹‚‚ÿ‚þþÿþ„ÿÿþþ$ÿ‚/ÿŠ WWVVûwû—ƒ–_–_Š^^^€€^ž€€žŽ.ž„.ž„üÆ.„Æ„„£)£)¢ˆ)ñ¢ñ)ññ) ñƒRSRS„RSùRù“<ùù<<=ýý1=1=1<}}1}|}Œ`}``aaaþ‚ŽŽ„œœ°œZZ„°Z°Z°†ó°ó°ó°óˆjóíóíóíó íƒý4í4‚545…PPQPQÎÅn‚oog™„¹¹‚‚ÿ‚þþÿþÿþ#ÿ‚/ÿ‚ W‚ûVû†——–—–m_…€^€€ž‡.žž„„žü„„)£¢)¢’(¢))¢¢ñ)ñ)ñ„ññ)R)RñƒRññRƒSùRù„<ù<ù<Š1<<}1=1<}=}†`}`ÜaþŽa°a°aœ°œZZZ°Z°…ó°óó°ój„íjíjíîíˆý4í4í4í45PQ„Î,ÎÎÅnogƒ™g™¹‚‚‚ÿ‚þþ1ÿ‚/ÿ‡ VVWVû†——––_–_„€^^€Œžž€.ž..žž„„ü„‚)„)–¢)¢C¢()¢)¢µ(µ¢µññ]„Rñ) RƒùR¥ù’òùùò=<<0<0<101<1<}1|}‚ý|`„`aþaaŽŽœœaZ Zƒ°ZZ°…ó°°ó°ó…jjîjjîƒjîîí‘ýíí4í554íPP5PPQPQÎÅ‚nÅog™„¹¹‚‚Dÿ‚/ÿˆ WVûûVûƒ–—–_^€„ž€€.ž‡„„.„„ü„)Š¢(¢(CC(CC(C„µ)µ)ñƒ)ñ)R†]RR)R)RŠ¥SRRùù¥ù<ù<ò<ˆ0<0<001A1‹|11ý|}`}``|þ„aaa‹aœŽœZa°ZZƒ°ZZ°ˆó°ó°ó°ó°ó‡jójîîjî í›ý5í4í5í55íPP5PQQÎQ,ÎÎÄÅÅnonogˆ™g™™¹¹‚‚Dÿ‚.ÿ‡ WWVVû†——–—––_‡€_€^€€ž€.ˆž.„„.ü).)Œ()(C((CC(CC(C‹µ¢µ)]µñµñµ)ñµR“´R¥ùù¥ùùòù¥<¥ò<òò0ò0„ýý0A1ˆ||ý|}|`|þ‚``aaa°aZaZ°ZZZƒ°°Z°‚ó°ój†íjíjíjíîííýíí5íí5í55P5PQÎÅ‚¡nog™„¹‚‚ƒCÿ‚.ÿ ƒWûVû…—––_–_„€^€´žž€ž.ž.„ž.„.ü).))()(C(CC((BC(CBC(CB(µµñ]µ)ñµµRµRRµRµR”¥R¥¥ù¥¥ù<ò<<ò<0ò0òÏò0Šý0A011|11ý|þ`aŠaœZZ°Z‚°Z‚°Z°‡ó°ó±óó±ój‡íjííjíîí†ý5íí5P5ƒPP5P,ÎÅ‚nno„gogg™¹ƒ‚‚ƒ ÿþ"ÿ‚.ÿ‚ W‚VVû„——–—_„__€‚ž€.ž.„‚.ü)(‘CBC(BB(]Bµ(µµ(Cµñµ–ñµµRµR´R´R´¥R¥R¥¥ù¥ò¥<ò‚0ò0’ÏÏ00@0ý@0A@1A|1|1Aþ`aŒZaaZa°ZZZ…°Z°°Z°…±±°±±ój‚îjî‚ííîŒííýíí5íí5î5íP‡QÎPQÎÎÄņnn¡ogog™¹‚‚‚ ÿþÿ‚.ÿ… WWû–†__€^€ž€ž€.ž.ž„„..))ü)(ƒ](B]‚B]BˆL(Lµµ]µ]µŒñµµ´RµR´´RR´¥‚ò¥òŒÏòÏÏòÏÏ@Ï@ÏÏ@…0@010A@þ|`a‘°aaZZaZZ°Z°Z‚°Z°±‚ó±ój‚îjîjíŒîîý5îí5î55P5PQÎÎ,,Î-ÄÅnÅnn¡og†˜g™¹™¹‚ ÿ þÿ‚.ÿ‡ WVWVûƒ—––_ƒ_€„ž€.ž.)‚ü)(‚](]B]BLBƒµCLµCµ‚Rµ´„¤´¥R¥ƒòòGò‚ÏòÏŒãÏ@Ï@0@0@A@@þ‚||` aaZZZZZZ°°Z‚°Z°‚±°±ó‰jójjîjîíjîŒííîýííPíPîP5P‚,P΂ÄÅnog„™™g™¹‚‚‚ ÿ þÿ‚.ÿ… WWVû—–ˆ___€_€€….ž€./.‡).).)(ü(]‡B\]]B]BL„BLµLµ'µ´ƒ¥´¤¥ˆò¥òòFòÏÏÏ‚ãã@þA|`ƒ|a`aŽ°aa°aaZZ°Z‚°Zƒ°°Z°±‚ó±ój…ójjîjîŠíýPííPíPPîPŠÎ,Î,ÎÎÅÅÄÅnog™„¹‚‚ƒ ÿþÿ‚.ÿ† WVVû…–ýý––€./.‰).(()(ü((]ˆ\]B\L\L\L‘\L\LL'L'L'Lµ´'´'µ´¥ƒ¤òGò‰FòÏÏÏãÏãƒ@@ãþ@|`a—ZaaZZZZZZ°°Z°Z°Z°±„°°±±óƒ±ó±ójƒîjíîˆPîýîPîPíP…J,,Q,ÎÄÅ…noogogþ„¹¹‚‚ ÿþÿ‚ÿþý€ý„/€/.ýˆ)..(ýýüý]ý\ýLý„L'L'ý„´'´'ý„¤¥¤¥ý„FFÏý„Ïýãýþ…ýA||`ý`aý„Zaý„ZZýZ°ý„±°±±ýóý„kkjjýîý„PîPîýP,ý„ÄÎÎÅý„Åoogý?þ ÿ‚.ÿ„ WWûý–€‚/€/.‡(.(](ü.]\…L\\L\LŠ'LL'L'L'µ'´ƒ&¥´¤GƒòFFÏ‚Ïâ‚ãâã@þ…@A|A|`aZ‡ZZZZZ‚°Z°±ƒó±±ók„jjJjî†JýîîPîP…JPP,J,’Î-ÅÄÄÅ¡n¡n¡oogg˜˜™þ„¹É‚ƒ ÿþÿ‚.ÿ… WWû–€/.‚(.(ƒ.]ü]\†L\L\L\Lƒ'LL'´&¤¥…¤GòGòF†ÏÏââ„ãâããþ‚AA|`‚a`aƒa„ZZ Z‚°Z°‡±°±±óó±ó‚kkj…Jjjîjî†ýPîPPîP,„Î-Î-Å‚nÅnogˆ™˜™™¹¹‚ƒ ÿþÿ‚.ÿ‚ Wû–‚–ƒ//.„(.(.]ü]\‚L\L\L'L'L'†&´&¥&&¤…G¤¤FGFƒÏ‚â âãþ@A|‚`|a‚a‰ZaZZZZ‚°Z°±ó†±kókkók‚jjJ†îýîJJPJ,-ˆÅÄÅÅ¡¡n¡og™„¹‚‚ƒ ÿ þÿ‚.ÿ„ WWû‚––/./..(..(].]]ü]\„L\L\L†'LL'LL'&¤GF â†ãã@ã@@AƒýAA|`aŠaaZaZ Z„°Z°Z°‚±°±ôóƒkkók‹jjkjJjJJýJîJ„,J,J,‡ÎÎ-Å-ÅÄn¡o„gg˜˜™„¹É‚ƒ ÿþÿ‚.ÿ‚ Wûƒ–û–‰////./.(….].]ü]\†L\L\L\L†'LL''L'‡&&'¤&¤&¤„G¤GGFƒÏƒââ â‚ãã@…AAýýA|`a‹aZZZZZZ°±‡ó±ôókóókJ„kJJýJ‚,J,-„ÅÄnÄn‰¡ooggfgg˜™„¹¹‚ƒ ÿþÿ‚.ÿ‚ Wû–ˆ///.//.„(..(]ü]\‚L\ L'L‚'L'„&&¤'¤GF„â†ãã@ã@@A‚|ý|‚`|`aƒZa…ZZZZ°‚±°±†ôôó±óókókJƒkJýJƒ,JJ,‚K,-‰ÄÅÄÅÅ¡Ån¡og‚˜g™„¹É‚ƒCÿ‚.ÿ„ WWû‚–û–ƒ///.†(.((].]ü]\†L\L\L\L†''L''L'†&'¤'¤&¤GFÏâ„ããýã@‚AA|`a‹aaZZ Zƒ°ZZ°‚±°±‚ôóô‚óôk†,k,,JýJƒ,,k,K,--ÎÄ-ÅÄÄn¡¡n¡og‚˜˜™„¹‚‚ƒCÿ‚.ÿ‚ Wû–ƒ/./.ˆ].]].]]ü]\Lƒ\L\L'L‚'L'„¤'¤&¤„GGFGF„âãý@A‡|A||``|`aa‡ZZZZ°Z°ƒ±±°±‡ô±óóôkókKk‚,ýJ…k,,K,-‰ÄÄÅÄÅn¡n¡ofg‚˜˜™„¹‚‚ƒCÿ‚.ÿ„ WWû–ƒ–„./.‰(..(..].]ü]\„L\L\ L†'L'L'L'&…¤&¤¤&GFƒâââ„ããýã@‚AA|ý`a‚a…ZZ Z‚°Z°±ô„ókôôkK…,ký,J,†K,K,,-ŽÄÄÅÄ¡Än¡n¡¡oofg‰˜˜™™¸¹‚‚ƒCÿ‚.ÿWû–.///.]..].]ü]\ L‚'L'&¤„G¤GGF†âƒããý@A|„`ý``a‚a‡ZZZZœZ„°Z°Z°ô±ôƒkkôk“kkKkýJJkk,,K,--Ä-ˆÄÄnÄn¡n¡o‡fofgg˜˜™„É‚‚¼Cÿ‚.ÿ† WWûWû–‚–‚../.ˆ]..].].]ü]\…L\\L\Lƒ'L'L‚'L'&ƒ¤&&¤G‚FFâã@A|ƒ``ý`a‹aZaZaZZ‡°ZZ°¨°¨°…ôô°°ô±ô†kk$kk$k‘KKý,k,,kK,,-,-ĉ¡Än¡o¡oofg‰˜˜™™¸¹‚‚ƒCÿ‚.ÿ„ WWû–‚–‚..„](.]ü]\ƒLL\ L'÷'&¤G„FGFFƒâââã@†A@AA|A|ƒ``ýaŽ‰ZZZZZZ‚°Z°ƒôô°ô„k$k$k’kký,,kkKK,-Ä-Ä—¡Ä¡¡n¡¡oo¡ffgf˜g™˜™¹¹É‚Dÿ‚/ÿ„ WWû–‡.....…].]..]ü]\‚L\L\L‚'\L„'÷'÷'&¤‚G¤GFâã@A|…`||``aŽaaZaZZœœZœZ¨°ƒôô° ôŽkk$k$kkkýkk,†K-,Ä¡o‡fofgg˜¦™„¸¹‚ƒDÿ‚/ÿƒ WWû–‚– .‚].]ü]\ƒL\\ Lƒ'L'÷'&ƒ¤¤&¤‚òòG†FGFÏâ‚ãâã„@ã@@A„|A||`aŽœƒZZœ Z¨°‚ô¨ôš$ô$$k$k$kký,kk,--ÄÄ‚¡Ä¡f‚gg˜…™¹É‚ƒDÿ‚/ÿ Wû–„...†].]].]ƒü]]\‚L\L\L…'LL÷L÷'‚&'&‚¤&¤‚òòF‚‚ââã‚ýã@A|`a„ýaaœ„ZœZœZ¨‰°¨¨°ô°ôô¨ô$ô$k$kkkýJ,,ƒ-Ä-Ä‚¡Ä¡o¡f‹gg˜˜™¸™¸¹‚ƒDÿ‚/ÿ Wû–‚–„....†]..]].]ƒü]]\†L\\LL\L‚÷L÷‡'÷÷&÷&'&‰¤&¤¤ò¤¤òòFÏâ„ãâýã@„AA|A|`†aa Žýý‚œœ„ZœZœ Z„¨Z¨¨°„¨¨ô¨ô$„KýkŽ-ÄÄÄÄ¡ÄÄ¡¡Ä¡‚oofŠg¦˜˜™™¹É‚ƒDÿ‚/ÿƒ WWû–‚..ƒ]..]ƒü]]\†L\\LL\LŠ÷LL÷L÷'L&÷'&¤„òò¤òF‚σâ â†ãâããýã@A|‚`|`‚a`aƒŽaý‹œœœœZœZZZ¨…°ô¨ô¨ô$ô$…$ý,ƒÄă¡¡Ä¡ˆoYffofgg˜†¸™¹É‚¼Dÿ‚/ÿ„ WWû–‚–†....ƒ]..].]ƒü]]\ƒLL\L\Lˆ÷L÷÷L'÷÷'‚&'&†¤&¤¤ò¤ò†FÏFσââ âã‚ýã@A‚|A|`a Žaœ…ZœZZ‚¨Z¨‡°°ô¨ôô¨ôƒ$$ô$ƒ$ý‚ĆÄÄ¡ÄÄ¡‚o¡f‚gf˜†¸¸¹¹‚ƒDÿ‚/ÿ Wû–‚..ƒ]..]ƒü]]\ƒL\\L÷…''&&'&¤Œò¤òÏGGFFσââ âã…@ã@@0A1|‚`|`aŽ‚Ž„œœœ‚ZZ¨‡°¨ôu°ôuô†$ôô$$ô$ý‚…ÄÄÄÄ¡†ooYfgf˜‡™™¸É‚ƒ¼Dÿ‚/ÿ‚ Wû–‹–....†]..]].]ƒü]]\‡L\L\LL\L„÷÷LL÷„'÷''&‹¤¤&¤ò¤òò¤òÏFσââ âƒãââã@ˆA1A|1||}`…a aŽœ„œZ„[Z¨Z¨°t¨¨uô¨ôôuôô%$ô$‚ýƒćÄ¡¡‰Ä¡‰oYYfoffgf˜†™¸¹ÉƒƒDÿ‚0ÿƒ WWû–‚..…].]].]ƒü]]\„L\L\ L„÷L÷L÷„'÷''&‚¤&¤òÏF‚Ï‚âââã‰Ï@@ã@AA1A|ƒ}`}`a Ž‡ýýœœZZ‚¨Z¨Šô¨uô¨uôuôô$%$ƒ$ý…ÄÄÄÄ¡“X¡o¡fYffgf¦˜¸¸™¸‚ɃEÿ‚0ÿƒ WWû…–û––†....…]..].]‚ü]\…L\LL\L‚÷L÷'&¤„ò¤ò¤ò†FÏFÏ„âââ…âÏââã@—A@AA|1||`|``aaa ŽŽŠœœýœœ[[Zƒ¨ZZ¨Œt¨ô¨uô¨ôôuôu$Œ%$$$$ýˆÄ¡¡Ä¡„Yofof‹˜˜g˜˜™™¸¹ƒƒEÿ‚0ÿ Wû–‚–‚...„].].]ƒü]]\…L\LL\Lˆ÷÷L÷÷L÷÷'‚&'&‚¤&¤‚ò¤òƒÏGFÏ‚ÏââÏââããÏããÏãÏ@ý@™1A11|}|}`}``aa ŽŽ ŽŽ”œ‚ýœ‰[[[Z©¨¨Z¨‹t¨uôuuôô%ôu$‹$$$$ýÄ…¡Ä¡¡‰¡„Y¡fYfƒ¦˜˜¸„ɹɼEÿ‚0ÿƒ WWû‚–û–ƒ..‡]].]].]‚ü]\L\ƒLL\L‚÷L÷'&ˆ¤&¤ò¤¤ò¤ò‰ÏòFFÏFÏψâãÏâããÏãš@Ïý@A0A1A|1|}}``a a ŽŽ œ‰ZZZ[ZZ[©¨štô¨¨t¨ôu%uô%ôu%ô%$%$$ý%‡Ä‰‰Ä‰Ä¡…Y¡fYof„g˜˜¦˜…™¹É‚¼Eÿ‚0ÿ„ WWû–‚–..„].].]‚ü]\MƒLLM Lƒ÷LL÷'&ˆ¤&ò&ò¤ò¤òƒÏFFψÏãÏãÏãˆÏ@Ï@ý@0A1}|}|`}``aa Ž œŒŠ[[ZZ[¨¨Z¨Z¨Žtôô¨uu¨ôôu%$%$%„%ý“‰Ä¡¡¡‰¡‰¡X¡¡Y¡YYf„¦¦˜˜¸„¹‚ƒ¼Eÿ‚1ÿƒ WWû–‚..ƒ..‚].]ü\ML ÷'&‰¤&&ò&ò¤ò¤ò†FÏFFÏFÏ„ãÏããÏŠ@@ý0@1A1|1}”`}`a ŽŽ ”œ”œˆý[[ZZ[Z©¨‡t°ttô¨ôuƒôuu%„ýˆ‰¡ĉ‰¡ŒX¡YooYYffg˜¦˜…™¸ÉɃFÿ‚1ÿ Wû–‚–‚..…].]].]ü\MƒLLML÷'‚&÷&ƒò&&¤‚ò¤òˆFFÏFÏFÏF φ@Ï0Ï@01}‚`a †Ž ”œ‚Šœ‘ý[[¨[¨Z¨¨©¨©¨t¨¨t‡utuu%%u%…ý%Š‰¡‰‰¡‰‰¡‰¡ƒY¡Yf„¦ff˜¸…"¸¹ÉƒFÿ‚1ÿƒ WWû–‚–…...„].].]ü\ML…÷L÷LL÷‚'÷&'&ˆòò&ò¤¤ò¤ò„GFÏFÏ0†@101}1}„`}`} ‰ß””œ ŠœŠ[[ýýZ[©Z©¨©¨©¨ttô¨tôtôôuôu%…‰%%ý‚‰‰‚¡‰¡–X¡Y¡YYfYff¦˜˜¦˜˜¸™É¹ƒƒFÿ‚1ÿƒ WWû–ƒ–…....ƒ]].]‚ü]\MLML„÷L÷M÷„&÷''&§ò&¤ò¤ò¤ò¤ÏòòFFÏFFòÏòÏòÏÏò0Ï0Ï00<10}A1}1}‚Ü`‚  †””œƒŠ[„ZZ©Z¨†ttô¨ttuƒôuô%‡‰%‰ý‰†‰‰¡¡‰‚¡X¡”XfYYoff¦¦f˜˜¸™¸¸ÉɃ¼Fÿ‚1ÿWû–„...†](.]].]ü\M‰LMLL÷LL÷L ÷„&'&'&‚ò&¤‚<¤ò¤ò Ï‚0Ï0Œ1==}1}Ü}Ü`Ü` Žß ß””œœŠœ[Š©©[©¨©¨t©¨tƒôtôu…%%u%u%ý%‰‰‰¡‰‰¡Š‰¡XXY¡¡oYYfŒ˜¦¦˜¦¸™¸¹Éƒ¼Fÿ‚2ÿƒ WWû–‚–…....„(.](]ü\ƒMM\M„LLMML‚÷L ÷'&Š<&¤&¤¤ò¤ò¤ò„ÏòòÏ0…1011ý1‡}Ü}}``Ü‚ ß ’””œ”œœŠŠŠŠ[[ŒZZ[¨¨©¨©©¨t¨t‚uôuƒ%ˆˆ%‰‰ý‰ˆ‰‰‰‰¡‰¡XYƒoYf¦Š˜˜¸¸™"¸ÉɃGÿ‚2ÿƒ WWû–‚–†...//.‚(.(]ü\M„LM÷ML†÷M÷M÷M÷”''&'&'&´&¤&&¤<&<¤ò<¤òšÏò0Ï0ò0ò00ò01ò=ý1}=1}Ü}Ü` ‰ß ””œ[†©[©ýý©¨„©tt¨tu%ˆˆˆ%%ý‰‰…‰‰¡‰¡†‰¡X¡Y¡Y‚fYf‹¦˜¦˜§™"¹Éƒ¼Gÿ‚2ÿƒ WWû–‚–„...‡(.(.(](]‚\ü\…M\MM\ML‚÷M÷‡µ÷'÷''´&´&<´¥&¥&¥¤¥<¤ò¥0ò”<òò0ò0<011<11ý}=}ÜÜ}Üž:: ß ”ß””œ”Š”œŠŠŠ[Š[ƒ©©ý©…¨©tt¨t‚utu%ˆ%%ˆ‰‰ýˆ‰‰…¡X‰¡X¡Y‚fY¦†˜§¸˜¸¸ɼGÿ‚3ÿƒ WWû–‚–†.../.…((.((]ü\ ML„M÷÷M÷µ÷&µ&'µ´´&´&& ¥…ò¥¥ò¥ò…<ò<<ò<‡1==ý=Ü=Ü“Ü: ß ß ”””œŠœœŠ[[[Š[[©[©†ý¨©©t©tuˆu%ˆˆ%%ˆˆý‰ˆ‰ž¡X¡‰‰¡X‰YXYY¡oYfY¦f˜¦˜˜¸¸"¸ÉƒƒHÿ‚3ÿ„ WûWû–…..//.‚(.(†]]ü]\] ML†÷M÷÷MB÷Šµ÷÷µ÷´÷´&&´„¥´¥&¥Š=¥<<¥<òò<ò<ƒ=<<=Ü‚Ü‹: ß ß ß ”‰””œœŠŠœŠ [†©[©©¨©tuƒˆu%ˆ…‰ý‰ ‰‰X¡‰¡¡X¡X¡Y¦f¦f¦¦¸¦¸˜™¸ÉɼHÿ‚3ÿƒ WWû–‡.....(.(‹]]ü\\]M\MM\MLˆM÷M÷÷MBB÷ˆµ÷µ÷µ&´µ´µ´‡ù´´¥ù¥ù¥ƒ<¥=<=Ü‘:Ü:: : ߔߔ”†Š”œœŠŠŠ[‚©[ ©tuŠˆˆ%ˆ%ˆˆý‰ˆ‰„¡‰¡‰X‰¡YXYXYfYf¦‹˜¦˜¸¸""¸Éƒ¼Hÿ‚3ÿƒ Wû–‚–†./../.„(().(†]]ü]M]M\M‡LMLLM÷M÷…Bµ÷µ÷µ†´µ´´ùµ´‘ù´ù¥´¥¥ù¥<¥=¥<¥=¥<‚=<=–Ü=Ü=ÜÜÝÜ:Ü:::ß ßß ”ß”‡œœ”Š”œœŠ[ƒ©©[©ƒtý©t†ÚtuÚuuˆƒ‰ˆý‰¬‰†X  XX¡Y‚f¦…¸§˜¸™É‚¼¼Hÿ‚4ÿƒ WWû–ƒ//ƒ.//.)(„]ü]B]ƒMMBML‡M÷M÷B÷B÷…Bµ÷µ'µŒ´´µ´µùµù´ù´´ù¥ù¥ù•<==ù=ù==Ü==Ü=ÜÜÝÜ::Š :ß ”ßßß”‹ŠœŠ”œœŠŠ[Š[©ƒt¾ýtuƒÚˆuˆ…ý‰ˆ‰ˆ‰Š¬¬XX  XX¡XY„fYfY¦„˜¦¸§¸ƒÉɼIÿ‚4ÿƒ WWû–ƒ///„../.)(ü]]BMB]M\\MM\MLŽMM÷M÷M÷BB÷÷µµBµ…ùµRùµ´Šù´RRù´´ùù¥ùƒ=ù=ùŠÝ=ù:ýÜ:ÝÜÝ:‡ßßß ”ß”ƒŠ””ŠŠ[ŠŠDD[[©©[[©ˆttýýututuˆƒ‰‰ý‰ †X XXYXY„¦¦Y¦‚¸¦¸…"ÉɃ¼Iÿ‚4ÿƒ Wû–‚//.ƒ/..)(‚üB]„B]MBM\MLŠMM÷B÷B÷BµBµñµ“´µùµùñùRù´ùRùù´Ý´ù´ùÝ==Ü=ÝÜùýÜÝÜ::Ý:ƒ;ß:߉””ß”Š””Š”Š†œŠœŠŠ[„DD[ç©Žt©tt©¾tÚtÚuÚuÚˆý‰‰¬‰‰  ¬ ¬ XƒY¡XY¦ƒ§¸¦¸„Éɼ¼Iÿ‚5ÿƒ WWû–‚–…////‚..).)(‹ü(B]B]BM]MM\MLBL÷MMµBBµBµCµµCµ”SµµSµSµùµ´RùRùñùRùùÝùÝùùÝùÝùÜÝÜýÝ:Ý:„;ß::ß…”ßߔߔ„Š”Š”Š‰D[[©D[Dç[©¾tu‚ˆuˆ„‰ý‰Ú‰‰¬‰‰  X ¬ XY‰¦f¦¦§˜¦¸…"¸ÉɼJÿ‚5ÿƒ WWû–‚//Ÿ.//.)„).)()((ü(B]B]]B]B\MM\BMMBLˆBBµµBBµBµ‹ñµñµñSµSµS´S’µRRùùRùRùÝRùÝùÝùÝùÝ:ýÝ:Ý::;:;ßß;߆”ßß””•”ƒŠ””Š‚Š[†ŠDD[©[ ©„¾tt¾tƒÚuÚˆÚ‰Úý‰ˆ¬‰¬‰‰¬¬ ¬ XƒYYXYƒf¦¦Š§¸§¸"¸Éɼ¼Jÿ‚5ÿƒWWû†–û–––‚//).„„)).)‡(ü((]BCB‰]BB]MMBMMBˆµµCµCµ¢ñµñµµñµSµSµØ´RRÝRùñRSÝRRùÝÝùSÝSÝ‹ØÝ;Ý;Ý::;ß;ß‚”ß”•Š”Š‚DD[—DD©DDçç©ç©¾¾tt¾ttÚÚtýuuˆ‚‰ý‰¬¬  ¬ XX X XXY¦„¸¦¸§¸ƒ#ɼKÿ‚6ÿƒ WWû‚–û–‚/€/.‚„„)„üC((]‰BB]BB]]B]BCBCBBµCµCµµ¢ñµCñ†SµRñRRñÝS…ÝSSùS݆SÝ;Ý;Ý;„ß;ß;߉”ß••”Š””•Š‰DŠŠDŠDD[D ©ž¾tt¾ttuuÚýýÚˆÚˆˆ¬ý‰Ú¬‰¬‰ ¬ X ¬X–YYXYY¦f¦§¦§¸§¸""¸ÉɼKÿ‚6ÿ Wû–‚–…///€/.‚„„)ŠüC(C(CC]B]Bƒ]C]BC†µñCCñµñƒµñµñ‰ØñØññÝSSñS“RÝSØÝSÝSÝØÝ;Ý;Ý;Ý;Ý;™ß;ß;•ß•”ß”•””•”•Š”ŠŠ•Š‹ŠDçD©ç‹©©¾©©¾tt¾u¾u“ýˆˆÚˆý¬‰‰Ú‰¬‰¬ ¬ X XY¦„§§˜§¸…"Éɼ¼Kÿ‚7ÿ‚ Wû–ƒ€/€/.ƒ„)„)Œü)(C((C(CC](B]‚B]C‡µñµ¢ññµ ñ†ØSñÙSSØŽSSØSØÝØÝØÝÝØÝØ;;‚š;ß•ßß”•”•”•Š••Š‚DŠDçD©Ÿç¾¾©¾¾t¾u¾uÚÚuÚˆ‰‰ýý‰¬‰¬‰¬¬ ¬X¬XYYY¦¦¦¦§§¸§"ƒ#ÉLÿ‚7ÿƒ WWû‚–û–‚€€/‚./.„)„„)ü¢)(C(CC(C(C(C¢C¢C¢¢ñCµ¢¢ñ¢ñ„ÙññØñƒÝñØñØ…SÝØÝØ;•Ýý;;;;;ßßß••ß•‚Š•Š„•ŠŠ‹ŠƒDŠŠDç©©ç¾¾©¾t¾uÚ¾uÚuÚý‹¬‰¬¬‰ ¬¬ X¬XY‚¦¦§…¸¦¸"¸É‚¼¼Lÿ‚7ÿƒ Wû–€/ž.„„.„.)Œü)¢))((C((C(Cƒ¢ñ¢ñ¢ ñŒÙññØñØØÙØñØñØÑØSØ‘;Øý;;ß;ß•;ß•ß •‡Š•ŠŠ•Š‹ŠDƒççDç“©©¾¾©¾t¾t¾¾uÚtÚÚuˆÚý‚¬‰¬ƒ X¬X•YYY¦¦¦§§"§""¸#ÉMÿ‚8ÿƒ WWû–‚–€ˆ/ž/..ž..„†.„))ü)¢‰(¢C(CC(C(C„¢C¢C¢ñ¢ñ‘£ññÙñÙÙññÙSHññØñÙØÑý;;••ß•ß•†‹‹•Š•‹Š†‹Š‹Š‹ŠDƒçDD穾†tÚtÚÚuÚ¬ý¬XŠYY§¦§Š¸§¸§""ÉɼMÿ‚8ÿ Wû–€ˆ.ž/.ž.ž.„”.)ü)„))¢)¢C)C¢C(¢)¢(C„¢C¢C¢ñ‡££ññHñÙñŽÙñÙñØHØÙØÙØÙØÙØ‚ÑØýß;ßš•ß••†‹‹Š•Š‹Š D„çDçD烾¾©¾ƒÚ¾uÚŠˆÚÚý¬¬ýý¬ X„¬X¬X¦¦§§§¸"¸""#ɼ¼Mÿ‚9ÿ‚ Wû–€‚.€.Š„.„„)„ü))£)†¢)¢)¢¢C ¢ˆ£¢¢£¢ññ£ñšÙÙñÙñÙØ£ØñÙØÙÙØÙØIØØÑØØÑØ؈;•••š•‚‹•‹ˆŠ‹‹Š‹‹D‹D„çDçD烾¾ç¾‚Ú¾Ú†ˆÚÚ¬ˆý¬ý¬‰XXXXYY‚§§‚§"„É#¼Nÿ‚9ÿƒ WWû–€œž.ž€..ž.Æ.„Æ„„ü„„)¢¢„¢)¢))¢)¢„)¢¢£¢†£¢¢££¢£¡ñHÙ£ññÙÙñÑñHØHØÙÙØÙØÙØØÑØØÑØØÑØÑšš••š•†š•‹•‹ˆ•‹‹Š‹ŠD‹DED‚çD炾ç¾…Ú¾¾Ú¾Ú‰¬¬ý¬¬X¬¬ýX†¬XXXX‚§§‰¸Â""É#ɼNÿ‚:ÿƒ WWû–€„ž.žž.ˆ„.„„.„„ü„„))¢)¢‚))¢Š)¢£¢£¢¢£¢¢£”ñHÙHÙñH£ñHØHÙHØHØIØÑÙ‚ÑØÑ–ØÑÑÑÑ›;š•š•šš•‹•‹‹DE‹DEDDèDçè羂ھڑ¬ý¬Ú¬¬X¬ýýXXXX‚§§ˆ"§¸"#ɼOÿ‚:ÿƒ WVû–€Žž./.ž..Æ.„Æ„„ü„ƒ£)£)‚„£¢†)¢)¢¢„¢‚£¢ £œH£ñ£ñHHØHHØHÙØHØHHØIÙÑÙÑÙÑØØÑ„ÑÑš›šš•šš•š•š‹•‹•‹D‹‹DŠEEDEDDçD烾¾ç¾‚Ú¾Úƒ¬Úý¬­¬ýXXX§§§ŠÂÂ"Â""#¼Oÿ‚;ÿ‡ WWûWûû–‚_€ž‚.ž.†Æ..„„ü„‘££¢))£)¢¢£¢£¢¢££¢£H£H„ÙñHØH„ÙHØHÙŠÑÙÙÑÙÑÑÙÑØÑŒýњћ›ššŠš•š‹••‹•‹E‹E‹DEEDDèDèD烾¾ç¾ƒÚÚ¾Úƒ¬ýX¬X¬XXýXXÒ§ƒ¸§§"„ÉÉPÿ‚;ÿƒ WVû–€˜žž.žž..„Æ.„Æü„„Æ„£„)„££„£†)£)££„£)£‰H££H£H£HñH“ØHØIÑHIÑHÑIÙÙÑIÑIÙÑ„ýу›š›š‚š‹‚E‹E‡DèDçDçèçƒè¾ç¾„¿Ú¾¾Ú“ýÚ¬X­¬¬­X­XXýý§ˆ§§¸"Â#ƒÉ½Pÿ‚<ÿƒ WVû–‚_€Œž.žž.ž„Æ.„Æü„ˆÆ£„„£)„„£„„££„£H˜ÙHÙHÙIHÙÙIØIIÙÙÑIÙÑÙÑÑIÙшýÑÑћњš†ššš•Š‹‹‹‹EEE‹E…èçEçè炿羃ÚÛ¾ÚšÛ¬¬ý¬¬Û¬¬¬¬­Xý§‚ÂÂ"#Qÿ‚<ÿ… WWVVû–‚__‚€€žŒ..ž..„ž„„ü.Æ„‚£„£‰„£)££„££„£‚H£H‚££H†ÙHHÙHHI‚ÙÑI…ÑIIÑIÑIÑŠýÑ›››šƒšš‹E‹E‹ErEEèDEçèççèç„Ú辿¾ƒÚÚÛÚƒÛÚý¬‡­­¬­¬•ýý§ÒÒ§Ò§§ÂÂ"Â""##½Qÿ‚=ÿ‚ Wû–…__€žŸ.žž„.Æ„Æü„Æ„„Æ„Æ„„£„H£„££„££H„H £HšIIHIIÙIÙIÙIÙ†ÑIIÑIццÑцÑ‹›ÑÑ›š›š›š„›šš‹š‹EE‹ErE‹èèDçèççè¾è美ÛÛ¾¾ÚÚÛÚÚ­Úý­­¬‚¬”§ý§Ò§§§Â§"Â""#ɽRÿ‚=ÿ„ WVû–†___€ƒžž€žŠ.žÆ.ž„.ü„Æ„‘Æ„H„H„„H£„£HH„££„H£ HIHƒIIHI††II††I†“‡Ñ†Ñ‡‡Ñ‡Ñ›Ñ›Ñ›Ñ›š››šˆ›ššššˆ‹‹‹r‹E‹Eèèçèèçç迾辿¾Û†ÚÚÛÚ¬ý¬†­­­­…ÒÒý§†Â§ÂÂ"Ã#ƒ½Rÿ‚>ÿ„ WVVû–…__€žˆ.ž„Æ„Æü„Æš„„Æ„„£H„„HH„„£H„H£„££H££H£HI‚HHIƒ†II†‚‡‡ћћÑÑ›š›š›š›ššš¤‹rE‹ErErEèEèEEèEçèèç¾ç¿¾¿¾¿ÛÚ¾¾ÚÛÚÛýÛ­­¬­¬¬­­Ò‘§Òýý§§ÂÂ"Â""#¼Sÿ‚?ÿƒ WVû‚––_†_€_€‚ž€ž .žž.žü.„„Æ„„ÆÆ„„H„„HH£„H£Æ£HÆ£HÆH„IHHIHI †Ž‡†‡†‡‡Ñ‡bћћÑ›ƒÑšÑš†‘›š‘š‰‹Er‹rEErEèœçèè¿¿¾¿¾¿¾¾¿ÛÛ¿ÚÛÚ¬ý¬­¬­­­­†ÒÔÒ§ÒŽýÂÂÃ"Ã"##Tÿ‚?ÿ„ WWVû–‡___€€€ƒžž€ž…Æ„Æ.üÆ—„Æ„„ÆH„HÆ£„ÆH£Æ£HÆ£HÆH£H†IHHIIH I†„‡†‡†‡ˆÑчýÑћћŽšš›š‘š‘rŒErErEEÕEEèDèŽçèèçè¿è¾¿¿ÛÚ¿ÚÛ‘­ý­Û­¬­­­ÒÔÒÒ§‡§ýÂÂ"Ã#ƒ½Tÿ‚@ÿ„ WVVû‚–—_„^€ƒžž€ž†ÆÆ„ü„„Æ•„„Æ„„ÆH„Æ£ÆH£H„H£HÆHÆHÆH‚IHI†Ç†ƒ‡‡†‡ˆÑ›ý››Ñ›Ñ›‰š›››š›› ¥rrrèrEEèEÕEèçèèç¿¿¾¾¿¿Û¾¿Ú¿ÚÛÛÚÛÚý¬­ƒÔ­Ò…§§Ò§Â…ýý""#½Uÿ‚@ÿˆ WVVûû—–_„€€^€^ ž†üžÆ.„„ÆŒ„HHÆ£„ÆÆHÆHÆH„ÆÆIH IŠÆ†Æ†II†Ç‡Ç‡„††‡†‡†ý‡‡››‡›ƒ‘ˆ‘‘‘rrr…ÕErèEè¿„¾¿Û¿Û‡ÚÛÛ­ý­Û­…ÒÔÒÒ…§‰"Ãý##½½Uÿ‚Aÿ„ WVVû‚—û–_ƒ€€‚ž€ž–ÆžÆüÆÆžž„Æ„Æ„Æ„Æ„ÆÆHHÆH‹ÆHÆHHIÆHHÆÆI…ÆI††I †‚dž ‡‰bbý››‡››Ñ›‘›„‘›‘„‘rr‡ErèEèèÕè¿è¿‚Û¿Û‚­ý­ˆ­ÔÒÒ‡§Ò§§§ˆÃ"#ý#½Vÿ‚Bÿ‰ WVVûû—–—–†___€^€žƒÆüžÆž ÆHƉHÆHÆÆHHIÆIˆÆƆIÇÆII†ˆÇ†Ç‡†‡‡Ç‡c‡‡b‡›Ñb›b›‚‘›‘‘‘‘rr‘r‘rrˆÕErÕEèEÕè¿„Û¿Û¿Ûƒý­Û­ˆÔ­ÒÔÒÔÒ‚ÒƒÂÂÇ"Ã#ýý½Wÿ‚Bÿ WVVûû—–—_––_‡€^^€€^€ž€ž‡ÆüÆžÆÆž ÆŠIIÆIÆIIÆIÆIŒÆI†IƆI††ÇÆdž‹ÇǶLJ¶Ç‡¶‡¶‡•b‡b‡bbÑb›bb››‘›‘››‘‘›‘„‘‘r‰srsrrÕEÕÕè„Ö¿¿è¿„Û¿ÛÖÛý­Ô­­ÔÒÒÔÒÒÒÒ§§‰"Ã#Ã#½ýWÿ‚CÿŒ WWVVûû–——_m_ƒ€€^€žŸž‰üÆÆžÆƞƞ Æ’IÆÆIÆIÆIÆIÆIƆIƆƆ“Çdždž‡†‡‡Ç‡‡¶‡‡¶‡cc‡ƒbb‡b›b…›‘‘››‘†sr‘ssr”ÕrÕrrEÕèÕèè¿èèÖ¿Ö¿Û¿ÛŽÓÛÔýÓÔ­Ô­ÒÔÔÒ…§‚ÃÂÃ#ƒ½ÿþVÿ‚Dÿ‚ WVû–_‰^€^€^€žž€žüÆ‹ÇÆIÆƆÆIÆIÆI‡Æ††IdžÇ†‘LJÇǶLJ‡¶‡‡¶‡‡¶‡¶c‡b‰›‘›‘b››‘z ‘‡srssrsrŠÕEÕÕèèÕèÕè¿„ÖÛÖ¿Û’ý­Û­­Ô­ÔÔÒÔÒÒ§ÒÇ#Ãö½ÿþUÿ‚Eÿ‚ WVû—–_†€^€^€^ž…€Ÿžžüž†ÆžžÆÆž Æ¢IÆIÆÇÆÆÇdžÆÇdždždždž†Ç‡†‡¶¶‡¶¶‡¶¶c‡„býb‡b‡‘‘z‘›‘b‘s‘¢rsrsrsÕrÕÕEÕÕèÕèÖÕÕ¿Õ¿Ö¿Ó¿ÛÓÓÛÛÓ­ýÔ‚­ÔÒˆÔÒÒÒ§Ã#öÿ‚þþSÿ‚EÿŒ WqVûûwû——––_ˆ^€^€^€žŒŸüÆžÇÆÆžÆÆǞƌÇÆÇÆÇƆƆÇIƆ Ç†Ç†Ç†¶†Ç†¶ÇLJ¶¶‡¶c‡‡¶cŒŒcc‡ýcb‡b‚zzb‹‘z‘‘z‘‘zs‘‘s£rÕrsrrÕÕEÕèÕè¿¿Ö¿Ö¿Ó¿ÛÓ¿ÛÓÓÛÓý­Û­Ô­Ô‰ÒÒÒ§áÈ##ï½öÿþRÿ‚Fÿ„ WpVû—‘–__m__^^_€^€^Ÿ€ž^žˆüžÆžŸÆÆžƆžÇžÆÆÇÆŠÇÆÇÆÇIƆÇÆǃ†Ç†ÇŠ‡‡Ç‡‡¶†‡¶‡¶‚c¶‡„¶ccýcb‰zz‘zb‘b‘z‘†s‘s‘s‘s…ÕsÕÕrÕèÕ¿Õ¿Öè¿Ö¿ÓÖÛÓÛÔÛýÔ†ÒÔÒÒÔÒÃÂöö ÿþQÿ‚Gÿ„ WpVûŠ—–—–—__m__^”€^€€Ÿžž€ŸžŸüžÆžžÆžÇžÆ‹ÇÇÆÆÇÆÇÇÆÇÆdždž†Ç†Ç¶†‡Ç¶Ç¶Ç¶”‡¶‡¶ŒŒcc‡Œ‡ýccbccbbzbz‰‘zzszszsTs‚ÕsÕ‚ÖÕÖ‡ÓÖÓÖÛÓÛÓƒýÔÓÔˆÔÒÒƒáÇïïö½ ÿ‚þþOÿ‚Hÿ‡ WpVûVû—‚––_ƒ^^_^ €^Ÿž€žžüžŸÆŸÆžÆÆÇžÆÆžÇÆÇÆÇÆÇÆÇÇÆ Ç“¶†¶‡¶‡¶¶‡¶Œ¶Œ‡¶‡¶ŒŒc‡c‡bb{bbzbzbz…‘z‘‘s‘sÕs‚ÕsÕ‚ÖÕÖƒÓÓÖÓ‚ÔýÔ…Ôþþ‰áÃÃáÃÃïÃÂööÿþNÿ‚Hÿˆ WpûVwû—–_ƒ^^_^™€^Ÿ€^ŸžüžžŸžÇžŸÆŸžÇÇžŸÆŸÆ ǶÇš‡Ç¶†¶Ç¶¶Ç¶¶‡¶¶‡¶‡ŒcŒc¶c¶c¶c‡b{b{{bbz‘TzTsTTzsTsTÕsÕsÕrÕƒÖÖÕÖ‚ÓÖÓƒýÔÓÔƒÔþ†ÃÂõÿþMÿ‚Iÿ„ qWpû—‰–mm_m_^^_^™žŸ^€^üŸžžŸžÇžÇÆÇžÆÇÆÇÆÇŸÆ Çˆ¶Ç¶Ç¶Ç¶Ç¶Œ¶…Œc¶cŒcŽŒcºcc{cc{bz{z{z‘Tzszs‘ÕssÕssÕÀÕÕÀÕƒÖÕÕÖ„ÓÖÓÁÓŠ²ÔýÔÔ³ÔÔÔþÈïÃïðööõ^ÿ‚Jÿˆ qWpVwûû—–_^„€^^žŸ€üŸŸžŸžŸŸžÇŸÇŸÇŸÇŸÇŸǶÇ‚¶Ç¶Œ¶„ŒŒ¶¶ŒƒcŒŒcŽŒcc{c{cb{bzz{{z‚TzT…zsTsÀs„ÀsÕÀÕÖÀÖƒÓÓ²Ó‚ýÓÔ‚Ô þƒÃïï‚öõ_ÿ‚Kÿˆ qWVVwûû—ƒm–m_ƒ^l_^…ŸŸ^ü^Ÿ‰žŸÇžÇžÇŸŸÇŸÇÇŸÇŸÇǷǶ·Ç¶Ç¶„Œ¶Œ¶Œ„cºŒýcƒ{cc{zUz…UzzTzT„Õ‘ÕÀÕ„ÁÕÁÕÖ‚ÁÓÖÓŒÔýÔ³ÔÔ³Ô³áþ‚öö`ÿ‚Lÿˆ qpVVwûû—Š_m_mm__^l_^„ŸŸü^Ÿ‚ÇŸÇŸÇǶÇǶÇǶǶÇÇ ¶…Œ¶¶Œ¶Œcýººcºcc{ºc{c{…zzUzz TˆÀÀssÀÕÕÀÕÖÁÖ²Óˆ²ÓýÔÔ³ÔÔƒá³áþ^ÿ‚Mÿˆ qpVVwûû—“–m__m__^l_^^l^^ŸŸü^ ŸÇŸ˜¶ŸÇ¶ŸÇ¶Ÿ¶¶·Ç¶¶·¶¶·Œ¶¶¶Œƒ·ŒŒ‰ºŒýcºccºc {‚zUzUT“sÀÕTÀÕÕÀÕÀÕÁÖÖÁÓÁÓÖ²‡ÓÓýÓ²ÔÔ³Š³ááÃááþ]ÿ‚Nÿ‰ qpVVwwûw—mƒ_m_^‰ŸŸüŸlŸ^Ÿ·Ÿ“·ŸÇǶÇÇ·ŸÇ¶·Ç¶·Ç¶¶·¶„ŒŒ¶Œ„ŒŒýº‡cºccº{c{UªzzTUTTÀTÀÀTÀÕÀÀÕÁÖÁÕÖÀÖÖÁÓÁÓÖÓÓ³ý³³Ô³³áá‡ÃááÃá9Ãþ]ÿ‚Oÿ‰ qpVVûwûv—m_m„^_l_^ˆüŸ^ŸŸ^Ÿ·Ÿ„·ŸŸ·ŸŒ·ÇǶŸ¶Ç·Ç¶¶·¶Œ·¶¶¶Œ¶¶Œ¶Œ†ºŒºŒ»Œº”c{ºU{{U{U{UUzUUzUzTUT‘ÀÀTÀÕÀÕÀÕÁÁÖÁÁÖ²Ö²ÓýÓÔ³Ô³³³áá†Ãá9Ã9ïþ^ÿ‚PÿŠ qppûVwû—v—mˆ__l^^l^l^†üŸ^Ÿ^^ŸŠ··Ç·Ÿ·¶·Ÿ¶·¶¶··¶·¶¶Œ¶·ŒŒŒˆŒºº»ººŒºˆ{ºº{º{ºU{U‡TÀTÀÀTTÀÁÀÕÁÁÖ²Á²ÓÁÓ²Ó²ý³á‰Ãá9ÃÃï9ïï þ_ÿ‚Qÿˆ qppûVwû—m”^m_^^l^lü^ŸŸ·^·Ÿ·Ÿ··Ÿ‡··Ÿ·Ÿ¶·¶„·Œ¶·¶ƒŒ·¶Œ¶ŒŒŒŒººŒº»ºˆ{ºUcUº{ªU{UÀ‚ÁÀ Á²„³ý³²³á³á„9á8Ã9ï‚ð þ_ÿ‚RÿŠ qppVVwwûv—„m—m_ml_l^lüll^Ÿ·^·^·ŸŸ·Ÿ ·ž¶·Œ··¶··ŒŒºŒ»ŒŒºº»Œº»ºªºˆªºU{Uºª{UÀU‚ÀUÀ„ÁÀÁÀÁ²ý³á³“8áá8áá8ÃÃ99ï99ïïð þ^ÿ‚Sÿ… qppVw‡ûv——v—vm”ll_ll^ü^l^·^·Ÿ·l·^·Ÿ ·‡¶·¶··Œ¶Œ‰ŒŒŒŒŒ»—»ºýºº»ºº»ºªªºªªºª{UUªªUƒÀªU À‚ÁÀÁà²ý²³³²³³áá³8áá8Ã89‰ïïððððö þ\ÿ‚Tÿ† qppVVw—m†ll_llül‰^ll^·Ÿ·ll·„l···‚··ƒŒŒ‘º»Œº»»ý»ºº»ºªºªºU{ªUªªUÀªUU>UÀ>ÀàÀÁÁàÁ²Á²²Á²ìý³²³ìáìá³8áá9Ã89ˆïï9ðïðö‚ÿÿþÿþ[ÿ‚Uÿ… qqppw‰vv—v——mm—m†Olmlmül·‚ll·‚l·‡···· Œ»ý»Šº»»ª»ªºªªºª”UªUUÀªU>ÀUÀ>ÀÀ>>ÁÀÁàÁ„²Á²‚ý쳄8³áá89ƒð9ïðƒöõÿþÿþYÿ‚Vÿ† eWWpVwv„—mmOmƒllü l·ƒl·l·†ll·· »™»»»»ý»«»»º»ªºª«ºªªºª«ªˆ>Àª>>À>>À–>Á>ÁÁà²ÁÁ²²²ìý²³ì³ì³89…9ï9ïð„ðõÿþÿþWÿ‚Wÿ‚ epVw†v—vv——mOmü lŠ·l·l·l··…»»N»»Š««»»«º«º««ª¥>ª>ªª>ªÀª>À>ÀàÀàÁÁàÁàಲ²ý³ì³ì³8³8ˆ9899ï9ïðƒõÿ‚þþ ÿþUÿ‚Xÿƒ qpwv‹OO—mmOOmülmlNlll·N·lNN·ŽNN»N»»~~»N»«»»«»«º«ªºªª«ª«ªƒ>>ª>˜àÀàÁ>àÁàÁ²Á²à²²ì²ýì²ì³ì8Š98999ïððÿþSÿ‚Zÿ… eWppwvOm‰OüOmNONmNl“NllNlNNl·NNNN»‚»»»ˆ«»«»«h«»«Šª«ªª?>ª«>ª>Šà>àÁàÁàààƒýì³ì‚8ì8ˆ9999ðïð„ðÿþQÿ‚[ÿ„ eWqpwƒvvwvO”mOmümlmlNmNNlONNlNllNƒN…»»~»~»»Š«»«»h«»«»«‘ª«ª>ª??«>?>?à>>à>à‚²à„ìýìì‰8ìì8999ð„úÿþOÿ‚\ÿƒeqpwv‚OvO‹üONOlNmNNll N‘~~~»N~»»~~»Œh»ýh»h»h»«h«‡?««?«?ª>?àŒàààìýì‰ì8889ðˆððð ÿþMÿ‚^ÿ† eWqppwƒvvwvOƒvOüO†NONONmN~NŒ~NN»~»»~»~»‹hýh»h«h«h«h«†?«?«?«?‚à>àƒàƒýì†888‡úðúðú$ÿþLÿ‚_ÿƒeepw„’vv’v“~vOvüOOmOONONOONON~N“~~N~~N~»~~»~~»~»~~†h»ýhh‚iihˆ«i««?«?«?…à?àÐ?à‚àŒýìÞìììð„ú'ÿþJÿ‚`ÿ„ eqpw…“vwv’v…~v~üvOƒvO~O‰NO~NONO~N ~„~~ƒhýh iƒ??i?à?à>ààÐàà à„ìýÞì“ìì9ðð*úú×)ÿþHÿ‚bÿƒeepw„“wv“v’~ü~v~~vO~~O~O~O~ hˆihihiihhii?‹à?ÐÐàÐàÐà ‡ýìÞìÞì**úðð*ú-ÿþFÿ‚cÿ„eep‘““w“v’v“v’vv’vü~v~…v~O~v~O~~ƒ~‚hhh…ihhixiƒÐ?Ðàà à  ÞýìÞìÞìÞŽ**úúúú×0ÿþDÿ‚eÿ„eep™“pw“w’v’v’v’’ü’vv~’~~vv~‰v~~~’h‚hhxhi†xii†ÐÐÐЃ ÐÐ …ýÞÞÞ*‚úú‚4ÿþBÿ‚gÿep“…w““w’vˆü’’vv~v’~„v~v’~ƒ~’ †hhxxhƒixix‡xxix‚ÐЃ Ð „Þ ý Þ†***ú*ú‚8ÿþ@ÿ‚hÿ†eeddpƒwdw“’‚vü’~’Ž’~’’’’’Ž’’hxhhxhxýixi‘xixxÐÐÐ Ї !! ýýÞ*‚*ú;ÿþ?ÿ‚jÿ‰ededdpp“Œ’“vü’v’’v’’v’…’’‘x’xhxhxhhxhxixýix„xx…ÐÐЃ! ! ˆÞ ýÞ êÞÞ*‰ú+úú+úë?ÿ‚þþ>ÿ‚lÿ„e dp“‚ü“ ’”x’’x’x’’’h’xhx’hxhxˆýxxxxx‡ÐÐÐÈЃ!ÐÐ!’ý!êÞÞêÞÞê**+ú+úú+Bÿþ>ÿ‚nÿ‚®e’ddpdpp“y““y“üy’“’x’x’x„’xx’ x‰ýxxx‡ÐÐÐÈЃÈ!Ð!Ð!‚ÞýÞ*Þ+**+**2ú2ëÿÿ‚pÿ‚®ed„pd“p“üüy““y’’“’’xx’xx’ƒ“x’ x¤yxÈÈÈÐÈÐÈÈ!ÐÈ!È!!ê!!ýýêêÞêŒ*++*+ëúúëÿÿ‚rÿ‚å®ed“pd““ü“y“y“yy““y“’xy xyxyxyxŒÈÐÈÐÈÐÈ!Ðé!‹é!!êý!êÞ+êÞ+„22+2ëÿÿ‚tÿƒå®®e d‚üüy“ y‹xyxxyyxyŽÈÈÈÐÈÈéÈééÈé„êêýýê‡+2+2+ëúë‚ÿ ÿ‚wÿ宂e®dƒüydyy‚y …ÈÈÈéÈ›éÈéÈéêéêêýýêê2êê22+22ë23ëÿ ÿ‚yÿ宂dd‡üüdydydy‚y…dyyd„ýÈ È‚é¯éˆêéêéÌêýýê2ˆë2ë33ëøÿÿ‚|ÿ宂üü‚dd†‚ýÈÈ‚éÈé̆éêêýêêÍ23ƒëëøÿÿ‚ÿ…寮®¯®ü’ÈÈýȯÈéȯéÈÌéÈÌéÌéŠêêÍýý2ÍÍ223ƒëÊÿÿ‚ÿÿƒå寮„üü®ÈÈ’ÈÈýÈȯÈéÈÌéÌÌêÌéÌÍ‚ýýÍ3ƒÊëÊ9ÿ‚þþÿþƒÿþþÿ‚þþÿ‚þþÿþ†ÿþþÿþþÿþÿþÿþÿþŽÿþþÿþþÿÿþþÿÿþþ ÿ‚ÿÿ‚Ì寄®®¯¯ü„®¯®®¯•È¯È¯È¯È¯ÈÈÌÈ̯ÌÌéÌéÌÌ͉ýýÍ373737Ê<ÿ‚þþÿ‘þþÿÿþþÿþþÿÿþþÿÿþþÿ„þþÿÿþƒÿþþÿ†þþÿÿþþÿ¡þþÿÿþþÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþ ÿ‚ÿ ÿˆæÌÌå̯å¯ü¯̯ÌÍý7‚37Ê@ÿ‚þþÿ‚þþÿ„þþÿþÿ‚þþÿ‚þþÿ†þþÿÿþþÿ‚þþ ÿ‚þþÿþÿ‚þþÿŽþþÿÿþþÿÿþþÿÿþþ ÿ‚ÿÿƒ6ÌæÌü̃þÍÌ̓6Í6ý7‚ÊÊFÿ†þþÿÿþþÿþÿ‚þþÿ‚þþÿ…þþÿþþÿ‚þþÿþÿ’þþÿÿþþÿÿþþÿÿþþÿÿþþ ÿ‚ÿÿ6üƒ66þ ý„77ÊÊMÿ‚þþÿþ‚ÿÿþÿ‚þþÿ‚þþÿ…þþÿþþÿþÿþ‚ÿÿþÿþŒÿÿþþÿÿþþÿÿþþ ÿ‚ÿ ÿüZÿ†þþÿÿþþÿ‡þþÿþÿþþÿ†þþÿÿþþÿ…þþÿþþÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿ‚þþÿŽþþÿÿþþÿÿþþÿÿþþ ÿ‚ÿ"ÿþ[ÿ‚þþÿ„þþÿÿþ„ÿÿþþÿ‚þþÿ‚þþÿƒþþÿþ‡ÿþþÿÿþþÿ—þþÿÿþþÿþþÿÿþþÿÿþþÿÿþþÿÿþÿþƒÿþþ ÿ‚ÿ"ÿþZÿþ‚ÿÿþƒÿþþÿƒþþÿþƒÿþþÿŠþþÿþþÿþþÿÿþÿþÿþÿþÿ†þþÿþþÿþ ÿ‚ÿ"ÿþ\ÿ‚þþÿ‚þþFÿ‚ÿ"ÿþ\ÿ‚þþÿ‚þþFÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿþÿ ÿ‚ÿ"ÿþÿþÿÿ‚ÿ"ÿþÿ‚þþÿÿ‚ÿ"ÿþÿ‚þþÿÿ‚ÿ"ÿþÿ‚þþÿÿ‚ÿ"ÿþÿ‚þþ ÿ‚þþÿÿ‚ÿ"ÿþÿ‚þþ ÿþÿÿ‚ÿÿ þ ÿ‚þþÿþÿÿ‚ÿÿ þ ÿ‚þþÿ…þþÿþþÿÿ‚ÿÿ þÿ þÿþƒÿþþÿÿ‚ÿÿ þÿ þÿþƒÿþþÿÿ‚ÿÿ þ ÿ‚þþÿþÿ‚þþÿÿ‚ÿÿ þ ÿ‚þþÿþÿ‚þþÿÿ‚ÿÿ þ ÿ‚þþÿþÿþÿÿ‚ÿÿþ ÿ‚þþÿ(ÿ‚ÿÿþÿ6ÿ‚ÿÿþÿ6ÿ‚ÿ ÿþÿ6ÿ‚ÿ ÿþÿ6ÿ‚ÿ ÿþÿ7ÿ‚ÿ ÿþÿ7ÿ‚ÿ!ÿþÿ7ÿ‚ÿ!ÿþÿ7ÿ‚ÿ!ÿþÿ8ÿ‚ÿ!ÿþÿ8ÿ‚ÿ"ÿ‚þþÿ8ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿ"ÿþÿ9ÿ‚ÿÿ\ÿ‚ÿÿ\ÿ‚ÿÿ\ÿ‚œ,“,lpvÞPþ³ÿý”ÿþÕÿýWÿÿÿÿÿÿÿÿÿÿKR  ~ { yuspnlƒige b_]ZH|GzG‚‚‚‚Ž‚‚‚"G‚‚‚‚…•…‡‰‚ "F‚‚‚†‚‚Ž‚Š…‚"‚F‚‚‚†‚‚Žˆ…‚!F‚‚‚†‚†…‚"E‚‚‚†‚˜†…‚! E‚‚…ˆ›‡!E‚‚ƒ†‚‚ƒ D‚‚gD‚‚/‚‚ D‚‚/‚‚C`C_!3$1$.#,# *"(!%!%y @R‚w @S‚t !?‚‚‚Š††‚„‚‚‚r"?‚‚‚‡†ˆ‡ƒ‚p!?‚‚‚‚‰†…‚‚‚Šm!?‚‚‚‚‰†…‚‚‚ˆ„k  >‚‚‚‚‰†…„„††h  >‚‚‚‚‰†…Šƒ††e >‚‚‚‚‰„ƒˆ“‚b >‚‚„‰‡‚ƒƒ‚` >‚‚‚ †‚‚h =‚‚‚ †‚ ‚†f !=‚‚ †‚'‚h &=1  )=0 .{ 7y 7w ;u ‚?s Hp Hn Ll ‚PjXg Xe\c‚b`i^j\ nZ ‚rX yU zS ~B‚F  ‚A ‚‚‚D   @‚‚‚‚‚‚‚B    ?‚‚@  ?‚ ‚>  ƒ‚?‚ ‚< H!?‚ƒ‚9  J ‚ ‚@‚‚‚‚‚‚‚‚‚7 N‚‚‚‚‚‚@ ‚‚‚ 5ƒ‚R‚‚‚A‚ƒ‚4X‚‚F!MZ‚‚‚F!K‚^‚‚‚#FC‚‚b‚‚‚‚‚F#A‚h ‚3‚k…‚08- 8+4)ƒ4'„S%‚M‚n‚,Rn(U‚n%e"pm"V‚S&ƒSS/‚N‚S‚4TS@PSB‚MSDƒHSFDSI?TK<T ‚6T‚‚ 2S‚‚‚‚‚‚.S‚‚‚‚,S‚‚‚ƒ‚&S‚ ‚‚  "S‚ ‚‚  S‚‚‚‚‚‚‚  e‚‚   ˆe  e!;  e!>    e!:   ˆ‚‚‚‚‚'<    ‚‚‚ l    {‚‚‚‚‚‚‚n   z‚‚‚‚‚p  s ‚‚‚‚‹‚r  o ‚‚‚‹‚u  k‚‚‚‚‡‚w  j‚‚‚‚‚‚‚‚z  c ‚ ‚‚ | ^‚‚‚ ~ Z,  Y,  R,‚  N,‚   If If @S<S8T8T0T+T'T&U U T$T& T(" T*  Q, R.!„S1$R4" S6S8T: U<Q?NB IDDFDHiJhMhOhR iT iV! C!F!H!K!~K|K|‚MN2‚‚C0 ‚ ‚‚ C0‚‚‚‚‚‚‚‚F 0‚‚ ‚‚N 0‚ ‚‚ J 1‚‚‚ L 1‚‚‚‚‚‚N!2‚‚‚‚‚‚‚P3‚  S5…WH‚bH‚dH fS‚hz ~   l ‚l&g&d b  ` ] ZZn‚SPNK!H%GFGKAL?M=294785:‚4qB‚-B*E(H%K#N"P!q‚qt„vxx z‚ ƒ ‚X£ š lpðì3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ×ׂ×ׂ×ׂ×ׂ×ׂ×ׂ×S×$ׂ××S×'ׂ×T×&ׂׂV×%ׂ×V×$ׂ××R××$ׂ××P×%ׂׂMׂ(ׂ׃×L׃×'ׂׄ××Kׄ××&ׂ××J××%ׂ××I××$ׂ××H××#ׂ××G××"ׂ××F××!ׂ××E×× ×‚× ×D× ×ׂ× ×C× ×ׂ× ×B× ×ׂ× ×A× ×ׂ× ×@× ×ׂ××?××ׂ××>××ׂ××=××ׂ××<××ׂ××;××ׂ××:××ׂ××9××ׂ××8××ׂ××7××× ׂ××6××××ׂ××P××ׂ××5××××ׂ××5××× ׂ××5××××ׂ××5××× ׂ×××5××ׂ×××5××ׂ×××5××ׂ×××5××ׂ×××5××ׂ×××5××ׂ×××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5××ׂ××5× × ×ׂ××5× × ×ׂ××5× × ×ׂ××5× × ×ׂ××5××ƒ× ×ׂ××5× ×‚ ×ׂ×P × ×ׂ× ××6××ׂ×× ××7××ׂ×× ××8××ׂ×× ××9××ׂ××××:××ׂ××××;××ׂ×××<××ׂ××=××ׂ××>××ׂ××?××ׂ × ×@× ×ׂ!× ×A× ×ׂ"× ×B× ×ׂ#× ×C× ×ׂ$× ×D× ×ׂ%××E××ׂ&××F××ׂ'××G××ׂ(××H××ׂ)××I××ׂ*××J××ׂ+ׄ××Kׄ××ׂ(×׃×L׃×× ׂ(×ׂMׂ××ׂ$××P×ׂ$××X××ׂ%ׄ××X× ׂ&׃×Y× ×‚'ׂY×ׂ×ׂ×ׂ×ׂ×ׂ×ׂ×ׂ•Œlp P\€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ™™™™™™™™™™”lp `\€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿʪ̪‚Ìʪ‚Ì̪ƒÌÌʪ̪Ìʪ̪Ìʪ̪¯Í¦ÍlpHv“3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ'¬%ƒ¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬L¬ׂ¬¬ׂ¬¬ ׬„¬×¬¬L¬¬„׬¬¬„׬¬¬‹×¬×¬×¬„¬×'¬ ¬¬¬¬¬„׬¬¬„׬¬ ¬‹×¬×¬×¬„¬×'¬¬¬¬¬¬¬„׬¬¬„׬¬ ¬Š×¬×¬×¬„¬×¬¬ƒ¬¬¬¬¬„¬¬¬¬¬ƒ¬¬¬¬‚¬‚¬¬¬s¬¬„׬¬¬„׬¬ ¬‰×¬×¬×¬„¬×¬¬¬ƒ¬¬¬„¬¬¬…¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬¬s¬¬„׬¬¬„׬¬ ¬‡×¬×¬„¬×¬¬¬ƒ¬¬¬„¬¬¬ƒ¬¬¬¬†¬¬¬¬¬¬¬¬s¬¬„׬¬¬„׬¬ ¬‡×¬×¬„¬×¬¬¬ƒ¬¬¬ƒ¬¬„¬¬¬¬¬…¬¬¬ƒ¬¬¬¬¬¬s¬¬„׬¬¬„׬¬¬†×¬×¬„¬×¬ƒ¬¬¬ƒ¬¬ƒ¬¬¬…¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬¬s¬¬„׬¬¬„׬¬¬…׬׬„¬×¬¬„¬¬¬¬¬„¬¬¬¬†¬¬¬¬¬‚¬‚¬¬¬s¬¬„׬¬¬„׬¬¬ƒ×¬„¬×¬¬¬¬)¬¬¬s¬¬„׬¬¬„׬¬¬ƒ×¬„¬×¬¬¬¬)¬¬¬s¬¬„׬¬¬„׬¬¬‚׬„¬×¬ ¬¬¬)¬¬¬s¬¬„׬¬¬„׬¬¬×¬„¬×¬¬L¬¬„׬¬¬„׬¬¬‡×¬¬¬×¬¬L¬¬„׬¬¬„׬¬¬‡×¬¬¬×¬¬L¬ƒ×¬¬ƒ×¬¬‡×¬¬¬×¬¬¬#¬„¬×¬¬¬#¬†¬×¬¬×××׉¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬>¬,×1¬‹×¬¬¬×¬¬¬¬>¬*¬×1¬‹×¬¬¬×¬¬¬`¬˜×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬’׬׬׬׬׬׬׬׬׬¬‚(ׂ¬×1¬‹×¬¬¬×¬¬Q¬y׬š¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬”¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬‚(ׂ¬×1¬‹×¬¬¬×¬¬E¬‚ ¬‚V×wV×¬× ¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬× ¬‚¬‚(ׂ¬×%¬‚ ¬‹×¬¬¬×¬¬F¬‚¬‚V׬n¬‚V×¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚(ׂ¬×&¬‚ ¬‹×¬¬¬×¬¬G¬‚¬‚V׬V¬×¬V¬‚V×¬× ¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬× ¬‚¬‚(ׂ¬×'¬‚¬‹×¬¬¬×¬¬¬‚¬„¬¬¬¬‚ ¬‚¬„¬¬¬‚¬‚¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚ׂ×ׂ×ׂ¬× ¬¬¬†¬¬¬‚¬‹×¬¬¬×¬¬¬‚¬–¬¬¬¬¬¬¬¬¬¬¬‚¬Ž¬¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬׬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ך××××××××××××¬× ¬‚¬‚¬Ž¬¬¬¬¬¬¬¬‹×¬¬¬×¬¬¬‚¬Ž¬¬¬¬¬¬¬¬‚¬Ž¬¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬׬‚¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚¬‚¬‚ ×ׂ׊××××¬× ¬‚¬’¬¬¬¬¬¬¬¬¬¬‹×¬¬¬×¬¬¬‚¬Ž¬¬¬¬¬¬¬‚¬‚¬–¬¬¬¬¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬׬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ ׆××ׂ׊××××¬× ¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬Š¬¬¬¬¬¬¬’¬¬¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬׬¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬‚¬‚ ××××××׊××××¬× ¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬‹×¬¬¬×¬¬¬‚¬–¬¬¬¬¬¬¬¬¬¬¬‚¬‘¬¬¬¬¬¬¬¬‚¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬׬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ ׇ×××׊××××¬× ¬‚¬•¬¬¬¬¬¬¬¬¬¬‚¬‹×¬¬¬×¬¬¬‚¬‚¬‚¬¬¬‚ ¬‚¬‚¬‚¬¬¬‚¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬׬‚¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚¬‚¬‚ׄ×× ×Š××××¬× ¬‚¬‚¬¬‰¬¬¬¬‚¬‹×¬¬¬×¬¬¬‚¬‚ ¬‚¬‚¬‚ ¬‚ ¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬׬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ׄ×× ×Š××××¬× ¬‚¬‚ ¬†¬¬¬‹×¬¬¬×¬¬¬‚¬‚ ¬‚¬‚¬‚ ¬‚ ¬‚V׬V¬×¬V¬‚V×¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚ׄ×× ×Š××××¬× ¬‚¬‚ ¬†¬¬¬‹×¬¬¬×¬¬¬#¬¬‚V׬n+¬‚V×¬× ¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬× ¬‚¬‚ׄ×××ׂ¬× ¬ ¬†¬¬¬‹×¬¬¬×¬¬P¬Vy×¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚(ׂ¬×1¬‹×¬¬¬×¬¬P¬yV¬ כ׬׬׬׬׬׬׬׬׬׬׬׬¬ ו׬׬׬׬׬׬׬׬׬¬ ׂ¬‚(ׂ¬×1¬‹×¬¬¬×¬¬¬o¬™¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬“¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬‚(ׂ¬×1¬‹×¬¬¬×¬¬¬¬>¬*‚¬×1¬‹×¬¬¬×¬¬¬¬>¬+×1¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬~¬‹×¬¬¬×¬¬¬‚¬××_׬‹×¬¬¬×¬¬¬‚$sH!m%#m% J% J% J %J%[׬‹×¬¬¬×¬¬¬‚%sH!m%#m% J % J% J %J%Z׬‹×¬¬¬×¬¬¬‚&sH"m%%m%J %J% J %J %X׬‹×¬¬¬×¬¬¬ƒ%sH"m%%m%J %J% J%J %W׬‹×¬¬¬×¬¬¬×¬ƒ&sH#m%&m%J %J% J%J %U׬׬‹×¬¬¬×¬¬¬‚V× V׬ƒ s¬ s¬‚HH¬ $m%'m%J%J %J‚%% J%J %T׬‚V× V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬ƒ s¬s¬ s‚¬¬sH„¬HH¬H ‚¬¬ $m%'m%J%J%J% J%J %R׬‚V× ¬‚V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬ƒ s¬s¬s‚¬¬ sH„¬HH¬H ¬ % m%(m%‚JJ% J%ƒJJ%J%J %ƒ&%%Q׬‚V× ¬‚V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬ƒ s¬s¬s¬sH„¬HH¬H ¬ O% m%)m%‚JJ% J%J%J %&%P׬‚V× ¬‚V׬‹×¬¬¬×¬¬¬ƒV×+ ‚V׬ƒ s¬s¬s¬sH„¬HH¬H¬ O% m%*m%J%J%J%J %‚&&%N׬ƒV×+ ‚V׬‹×¬¬¬×¬¬¬„V×+V„V׬ƒ s¬s¬s¬sH„¬HH¬H¬‚OO%/m%J%J%J%J %‚&&%M׬„V×+V„V׬‹×¬¬¬×¬¬¬ƒV×+ ‚V׬„HH s¬s¬s¬sH„¬HH¬H¬O %!%m%J%J%J%J%&%K׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚Hs¬s¬s¬s ¬sHƒ¬HH¬¬O %)m‚%%J%J%J%J%&%J׬ƒV×+ ‚V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚ Hs¬s¬s¬s¬s¬sH¬ H ¬¬O %/m‚%%J%J%J% J%&%H׬„V×+V„V׬‹×¬¬¬×¬¬¬ƒV×+ ‚V׬‚ H‚s¬s„¬ss¬s¬ s¬sƒHH¬ H ¬¬O%4‚JJ m%J%J%J% J%& %G׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚ H‚¬Hs„¬ss¬s¬ s¬s‚H¬H ¬¬O%2J%J%J% J%& %F׬ƒV×+ ‚V׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ H¬H…s¬ss¬s¬ s¬s‚H¬H¬H¬O%/ Jƒt%%J %J %J‚%% J%& %D׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ H¬H„¬Hs¬s¬ s¬s¬H‚¬¬H¬O%, J‚tt%J %J %J‚%% J%& %‚'%C׬ƒV×+ VƒV׬‹×¬¬¬×¬¬¬„V×+V+„VV׬‚ H¬H…¬HH¬Hs¬ s¬s¬H¬H¬O%) J‚tt%‚JJ %J %J% J%& %'%A׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ H¬H„¬HH¬Hƒss¬ s¬s„¬HH¬H¬ O%& Jt%J %J %J% J%&%‚''%@׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ H¬H„¬HH¬H‚¬H s¬sƒ¬s¬H‚¬¬ O%# Jt%J %J%&%‚''%>׬„V×+V+„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ H¬H„¬HH¬H¬Hs¬‚s¬H ‚¬¬ O%! Jt%J %J%&%‚''%=׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ H¬H„¬HH¬H¬H s¬H ¬ O%O% Jt%J %J% J%&%'%<׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V„V׬‚ H¬H¬H¬H¬ Hs‚¬sH‚¬ O%‚OO% Jt%J %J% J%&%'%:׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚H ¬H ¬H ¬sƒ¬ssH ¬ O%‚OO% Jt%J %J% J%&%'%9׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚H¬H¬H¬H…¬Hss¬sH¬ O%O % Jt%J %J%J‚%% &%' %7׬„V×+V„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚H¬H¬H¬H¬H„¬ssH¬ O%O % J t%J %J%J%&%'%‚6׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚H¬H¬H¬H„¬HH¬H¬ O%O % J t%J %J%J‚%% &%'%'4׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚H¬H¬H¬H¬Hƒ¬HH¬O%O% J t%J %J%J‚%% &%'%'3׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚H¬H¬H¬H…¬HH¬H¬O%O% J t%J % J %J% &%'%‚''2׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚H¬H¬H¬H„¬HH¬¬O%O% J t%J % J %‚J% &%'%‚''0׬„V×+¬„V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚H¬H„¬¬H¬H¬H¬¬O%O% Jt%J % J %J &%'%'/׬„V×+¬V„¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚HI¬O% O% Jt%t%J % J % &%'%‚''-׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚5HO% O%Jt%‚tt%J% J % &%'%',׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚5HO% O% t%‚tt% J% J % &%'%'ƒ'*׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚5HO% O% t%t% J% J % &‚%%'%'')׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬V„¬V׬‚5HO% O% t%t % J% J % &‚%%'%''(׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚4HO% O% t%t % J% J % &%'%''&׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚4HO%O% t%t%J%J % &% '%'‚''%׬„V×+¬V„¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚4HO %O% t%t%J%J %' & '%'‚''#׬„V×+¬ׄ¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚4HO %O% t%t%J%J % '‚&& '%''"׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚3HO %O% t%t%‚JJ%J %'%'%''ƒ ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚3HO %O% t%t%J%J%'‚%%'‚%%''׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬V„¬V׬‚3HO %O% t%t%J%'%'‚%%''׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚3HO %O% t%t%J%'%'%''׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚2HO%O% t%t%J% '%'%''‚׬„V×+¬V„¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚2HO%O% t% t%J% '% ''‚׬„V×+¬ׄ¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬ƒ—1HO%O % t% t%J% '%‚'%'‚'‚׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬„——0HO%O % t% t%J% ' %'‚'׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚—.HO%O % t% t%J%J% ' %'‚'׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚—.H„O%%O%O % t % t%J%‚J% ' % '‚'׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬V„¬V׬‚—-HO%O%O % t % t%†JJ%%J% '% '‚'‚׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚—,H‚OO %O‚%%O % t % t%†JJ%%J% '% ''‚׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ׃V׬‚—*H O % O‚%%O%!t %t%J‚% J%'% ''‚׬„V×+×V„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚—*H O% O%O%!t %t%J J%'%'‚׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚—)H O% O%"t %t %"J‚%%'% ''‚‚׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚—(H O%ƒO%%O%#t %t % J‚%%'% ''‚׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚ —&H O%‚OO%O%$t%t % &J%'% ''׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚ —&H O%O%O%%t%t % &J%'% ''‚׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+×V„×V׬‚ —%H O%O %O%%t%t % & J'%'‚''‚׬„V×+׬„×V׬‹×¬¬¬×¬¬¬ƒV×+ ׃V׬‚ —$H O%O %O%'t%t % &%J‚%'%''‚׬„V×+׬„×V׬‹×¬¬¬×¬¬¬ƒV×+ ׃V׬‚ —"H! O%O% O‚%%'t%t %&%‚P%'%'‚׬„V×+×V„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚ —"H! O%O%O‚%%(t%t %&%P%'%‚ '‚׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚ —!H! O%O%O%ƒt%'t%t%‚&%‚P%'%„ '‚׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚— H! O%O%‚OOt%"t%t%&„%%P%'%ƒ '׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚—H" O%O%‚tt%t%t% &ƒ%%P%'%‚ '‚‚׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚—H" O% O%t %t%t%&%P % '%‚ '׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+×V„×V׬‚—H" O% O%t % t‚%%t %&%P % 'ƒ%%' ׬„V×+׬„×V׬‹×¬¬¬×¬¬¬ƒV×+ ׃V׬‚—H"O% O%t% t‚%%t %&P %Q '‚%%'׬„V×+׬„×V׬‹×¬¬¬×¬¬¬ƒV×+ ׃V׬‚—H#O% O%t% t%t % P %Q%'%'‚׬„V×+×V„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚—H#O% O%t%%t % P %Q%'%'׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚—H#O% O%t%‚t%t % P %Q%'%'׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚—H#O%O%t%‚ t%t % P %‚QQ%'%'׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚—H#O%O% t%,t%t %P %‚QQ %'‚ ׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚—H#O%O% t% ,t %t %P %Q %' ׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+×V„×V׬‚—H#O%O% t%,t % t %P %Q %' ׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚—H#O %O% t% ,t% t%P%Q %'  ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚—H$O %O% t% ,t%t%P%Q %'‚  ׬„V×+¬V„¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚—H*#O %O%t%,t%t‚%,%P%Q%'‚  ׬„V×+¬ׄ¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚—H*O %O%t%,%‚,t%ƒt%,%P%Q %'  ׬„V×+¬ׄ¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚—H *O %O%t%‚,,% t%‚,,%P%Q%'‚  ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚—H‚OO*O %O%t%‚,% t%,%P%Q%'  ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚— HO* O %O%t%‚,% t%,%P%Q% ‚ '  ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬V„¬V׬‚— HO*O%O %t%‚,% t%,%P%Q% ‚'  ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚— HO *O%O %t%,% t%,%P%Q% ƒ ‚ ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬ƒO— HO *O%O %t%,%t%,‚%%P%Q%‚‚„-- ‚ ׬„V×+¬V„¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚O— HO*O%O %‚t%,%t%,‚%%P%Q%-  ׬„V×+¬ׄ¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚O— HO* O%O %‚t% ,t%,%P%Q% -‚ ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚ O‚**—HO* O%O %‚t%,t%‚,%P%Q%- ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚ O*—H‚O* O%O%‚t%,t%P%Q%-ƒ. ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬V„¬V׬‚ O*—H‚ O*O%O%‚t %,t%!P% Q%-  ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚ O * —H‚ O* O%‚t %,t%„P%% P% Q% -. ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚ O * —H‚ O*"O%‚t %,t%‚PP% P‚%% Q% -. ׬„V×+¬V„¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚O*—‚HH O*&O%t %,t%P% P‚%% Q% -‚.. ׬„V×+¬ׄ¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚O*—H O**O%t %,t% P % QP% Q% -‚.. ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚O*‚—H O*.O%t %,t% P %‚ Q P% Q% -‚.. ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚O*‚O*3O%t %,t% P % QP Q‚%% -‚.. ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬V„¬V׬‚O*ƒ—O*7 O%t %,t% P %  Q‚P% Q‚%% -. ׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚O*‚——O*; O‚%% t%,t% P %  Q‚%% Q%-. ׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬ƒO*‚——O *?O‚%% t%,t% P % ƒQQ%Q%-. ׬„V×+V„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬ƒO*—O*DO"t%,t% P %„  Q%Q-. ׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬ƒO*—$OEt%,t% P %‚  Q %Q-. ׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬ƒO *—+OAt%,t% P %‚ Q %-. ׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+V„V׬ƒO *—2O>t%‚,, t %,%P % Q %-.׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬ƒO *—9O:t%!t %,%P % Q %-‚.׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬„O *—?O7t%‚"t %‚,,%P %  Q %‚-‚.׬„V×+V„V׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬…*O *—?OsO3t„%%#t%‚,,%P%  Q %‚--.‚׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬…O*O*—?Os O0 t„%%#t%,%P%  Q %--‚.‚׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬†OO*O* —>O‚ssO-t‚%%t%,%P% Q %-.-.׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V+„VV׬†OO*O *‚ —‚QQ.‚׬‹×¬¬¬×¬¬¬‚O *O—(OsOtƒOO×Oƒ×O× O×O tO @ƒQ,,.‚׬‹×¬¬¬×¬¬¬‚O*O—'OsOtˆO×O××OO× O×O tOƒ ?‚QQ , .׬‹×¬¬¬×¬¬¬‚O*O—&OsOt‚O×O×O×O×O tO >Q, .׬‹×¬¬¬×¬¬¬‚*O*O—%OsOtO×O×O×O×O tO =Q,.׬‹×¬¬¬×¬¬¬‚*O*O—%OsOtO×O‰××OO××OO×O tO =Q ,Q ,- ,.„׬‹×¬¬¬×¬¬¬‚*O*O—#OsOtƒOO×O×O×O×O tO <Q ,Q,„.׬‹×¬¬¬×¬¬¬‚* O*O—"OsOtƒO××O‰××OO××OO×O tO ; Q ,‚QQ ,-,ƒ×¬‹×¬¬¬×¬¬¬‚* O*O—!OsOt×O‰××OO××OO×OtO‚ : Q ,‚QQ ,-,.,ƒ×¬‹×¬¬¬×¬¬¬‚* O*O—!OsOt†×tOO××O„×OO× OtO‚ 9 Q ,‚QQ,‚--,.,ƒ×¬‹×¬¬¬×¬¬¬‚*O*O — OsOt׈O×OO×O×× OtO 8 Q ,‚QQ,‚--,‚..,ƒ×¬‹×¬¬¬×¬¬¬‚*O‚**O!—OsOtO‚××OtO 8Q,Q,-,.,‚׬‹×¬¬¬×¬¬¬‚*O*O"—OsOtOtO 7Q,Q,-,‚..,‚׬‹×¬¬¬×¬¬¬‚*ƒOO*O"—O!sOtOtO 6Q,Q,-,‚..,‚׬‹×¬¬¬×¬¬¬‚*O#—O"sOtOtO 5Q,Q,-,.,‚׬‹×¬¬¬×¬¬¬‚* O$—O"sOtOt O 4Q,Q,-,.,‚׬‹×¬¬¬×¬¬¬‚*#‚OO%—O#sOtOt O 3Q,Q,-,.,׬‹×¬¬¬×¬¬¬‚*%O$—O$sOtOt O 3Q,Q,-,.,׬‹×¬¬¬×¬¬¬‚*&%—O$sOtOt O 2Q,Q,-,.,׬‹×¬¬¬×¬¬¬„**'&—O&sOtOt O 1Q,Q,-,.,׬‹×¬¬¬×¬¬¬„**''—O'sOt Ot O /Q,Q,-,.,׬‹×¬¬¬×¬¬¬„**''—O'sOt Ot O .Q,Q,-,.,׬‹×¬¬¬×¬¬¬ƒ*((—O(sOt Ot O ‚-Q,Q,-,.ƒ,,׬‹×¬¬¬×¬¬¬ƒ*(‚sO'—O(sOt Ot O ‚-Q,Q,-,.ƒ,,׬‹×¬¬¬×¬¬¬ƒ*(sO%—O&s Ot Ot O ,ƒQ,,Q,Q‚,,-,.‚,׬‹×¬¬¬×¬¬¬ƒ*(‚ssO#—O$s O t OtO +‚QQ,Q,Q,-‚,,.‚,׬‹×¬¬¬×¬¬¬‚)sO!—O "s O!t OtO *Q ,Q, Q‚,,-‚,,.׬‹×¬¬¬×¬¬¬‚*y*sO —O sOt OtO )Q ,‚Q‚,, Q‚,,-,.׬‹×¬¬¬×¬¬¬‚*‚y*s O—OsOtOtO (Q ,Q‚,, Q,-,.׬‹×¬¬¬×¬¬¬‚*ƒyy*s O—OsOtOtO (Q ,- Q, Q, -,.׬‹×¬¬¬×¬¬¬‚*„yy*sO—OsOtOtO ' Q ,- Qƒ,Q-,ƒ..׬‹×¬¬¬×¬¬¬‚*‚y*sO— OsOtO tO3 & Q , -,Q,Q,-׬‹×¬¬¬×¬¬¬‚*‚y*sO— OsOtO 2tO3 % Q ,‚ -,Q Q ,׬‹×¬¬¬×¬¬¬‚*‚y*sO— OsOtO 2 tO‚33 $Q,-, ,‚..,׬‹×¬¬¬×¬¬¬‚*y* sO— O"sOtO 2 t‚OO3#Q,-,‚QQ ,.,׬‹×¬¬¬×¬¬¬‚*y * sO— O$sO‚ tO 2t‚OO3"Q,-,Q ,.,׬‹×¬¬¬×¬¬¬‚*y* sO—O' sO t‚OO 2tO3"Q,-‚,,Q ,.,׬‹×¬¬¬×¬¬¬‚*y * sO—O* sOtOtO2ƒttO3!Q,-,Q , .,׬‹×¬¬¬×¬¬¬‚*y * sO —O*tsOtO tO2‚OO3 Q,-Q , .,׬‹×¬¬¬×¬¬¬‚* y * sO —O)ts„OOttO ƒtt2O3Q,- Q , .ƒ,,׬‹×¬¬¬×¬¬¬‚* y * sO —O* tsOtO‚ t O3Q,- Q, .ƒ,,׬‹×¬¬¬×¬¬¬‚* y *s O—O* tƒssOtO t O3Q, - Q, .‚,׬‹×¬¬¬×¬¬¬‚* y *s"O—O)tO ‚tO3Q, -Q, .‚,׬‹×¬¬¬×¬¬¬‚* y*s$O—‚OOOtO ‚tO3‚,,Q,‚ -Q,.׬‹×¬¬¬×¬¬¬‚* y*s&Oƒ——O#OtOtO 3‚‚33,Q,-Q, .׬‹×¬¬¬×¬¬¬‚* y*s(O5OtOtO 3‚3,Q,Q, .׬‹×¬¬¬×¬¬¬‚*y*s&O9OtOtO3‚3 ,Q,Q, .׬‹×¬¬¬×¬¬¬‚*y*s$Oƒ——8OtO tO3‚3 ,‚33Q,Q, .׬‹×¬¬¬×¬¬¬‚*y*s$O1—7OtO tO ƒ333 ,3, Q‚,,Q, .׬‹×¬¬¬×¬¬¬‚*y*s#O1—7O tO tO  3 ,3, Q,Q, .׬‹×¬¬¬×¬¬¬‚*1*y‚**s"O1—6O tO ‚ tO  3 ,3,Q,Q, .׬‹×¬¬¬×¬¬¬‚*‚11*y*s!O1—4O tO tO  3 ,3,Q‚Q, .׬‹×¬¬¬×¬¬¬‚*1*y*s O1—3O tO tO 3,3,‚QQ, .׬‹×¬¬¬×¬¬¬‚*ƒ11*ys O—2O t OtO 3,3, Q, .׬‹×¬¬¬×¬¬¬‚ *‚1*ysO1—2O t OtO 3,3, Q,.׬‹×¬¬¬×¬¬¬‚*ysO1 —1Ot O tO3 3,3,Q,.׬‹×¬¬¬×¬¬¬‚*ysO1 —0Ot OtO3 3,3,Q‚,, ׬‹×¬¬¬×¬¬¬‚* ysO1 —/Ot OtO‚33 3,3,Q, ׬‹×¬¬¬×¬¬¬‚!* ysO —/Ot OtO3 3,3,Q‚,, ׬‹×¬¬¬×¬¬¬‚#*ysO —.Ot OtO3  3,3, Q, ׬‹×¬¬¬×¬¬¬‚*1*ysO—-OtOtO3 ‚,,3,3, Q, ׬‹×¬¬¬×¬¬¬‚*‚11*ysOy—,OtOtO3 ‚33,3, 3‚,,#Q,׬‹×¬¬¬×¬¬¬‚*1*‚yysOy—,OtOtO3 3,3, 3,%Q,‚X׬‹×¬¬¬×¬¬¬‚*1*ƒOsOy—+OtOtO3 3 ,3, 3‚,,) ,‚X׬‹×¬¬¬×¬¬¬‚*1*…yOOsO—)OtOtO3 3 , 3,3,'‚WW ,׬‹×¬¬¬×¬¬¬ƒy*1*‚yyOsO—(O tOtO33 , 3‚,,3,&W ,׬‹×¬¬¬×¬¬¬„yy*1*yOsO—(O tOtO3 3 ,3, ‚33%W ,׬‹×¬¬¬×¬¬¬‚y*1*yOsOy—'O tO‚!tO3 3 , 3, ‚,,$W,׬‹×¬¬¬×¬¬¬‚y* 1 *yOsOy—&OtO‚"tO3 3 , 3,#W,׬‹×¬¬¬×¬¬¬‚y* 1 *yOsOy—%OtƒOO#tO33, ,! W,׬‹×¬¬¬×¬¬¬„**y* 1 *y OsO—%OtƒOO$tO 3‚3,3 , W,׬‹×¬¬¬×¬¬¬‚*‚yy*1*1 *y OsO—$O‚tO&t O3„3,3 ,W,׬‹×¬¬¬×¬¬¬‚*y *1*y OsO—#O&t O3ƒ3, 3 ,W,׬‹×¬¬¬×¬¬¬‚*y#*y Os O—"O$t O3‚3, 3 ,W,׬‹×¬¬¬×¬¬¬‚,*yOs Oy—"O #t O 3, 3 ,W,׬‹×¬¬¬×¬¬¬‚ *y"* yOs Oy—!O# t O3, 3 ,W,׬‹×¬¬¬×¬¬¬‚ *‚yy!* yO s O— O%t O3, 3 ,W,׬‹×¬¬¬×¬¬¬‚ *‚yy!* yO s O—O(t O3, 3,W,׬‹×¬¬¬×¬¬¬‚ *y * yO sO—O+t O 3,3,W,׬‹×¬¬¬×¬¬¬‚ *y* yO sO—O.tO 3‚,,3,Wƒ,,׬‹×¬¬¬×¬¬¬‚ *y* yOsO —O1tO3‚,,3,Wƒ,,׬‹×¬¬¬×¬¬¬‚ *y*yOsOy!—O3tO3‚,,3,‚WW,W‚,׬‹×¬¬¬×¬¬¬‚ *y*yOsO"—O6tO!3ƒ,3,W,W‚,׬‹×¬¬¬×¬¬¬ƒy *y*yOsO#—O8tO$„33,3,W,W׬‹×¬¬¬×¬¬¬ƒy *y*yOs‚OO$—O;tO'3, W ,W׬‹×¬¬¬×¬¬¬„yy *y*yOƒssO%—O=tO*3, W ,W׬‹×¬¬¬×¬¬¬‚y*y*yOs%—O@ tO-3, W, W׬‹×¬¬¬×¬¬¬‚y* y*yOƒy$—OB tO/3, W, W׬‹×¬¬¬×¬¬¬‚y* y*yO1#—OEt‚OO23, W, Wƒ×¬¬Œ¬×¬¬¬×¬¬¬‚y* y*yO1"—OHt‚OO5 3‚,,W,W„׬¬×Œ¬×¬¬¬×¬¬¬ƒ*y* y*yO 1 —OJtO8 3,W,„׬¬×¬Ž¬×¬¬¬×¬¬¬„**y* y*yO —OM‚tt:3‚,,W,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚*y* y*yO—O3,W,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚*y* y*yO—OMO@3ƒ,W,„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚*y* y*OyO‚—OIOC3W,„׬¬×¬ƒ¬¬¬¬Ž¬×¬¬¬×¬¬¬‚ *„yy**y*ƒyOOyO —OF OFW,…X׬¬×¬‚¬¬¬Ž¬×¬¬¬×¬¬¬‚ *‚y*y*‚yyOyO ‚8—OBOHW,†XX׬¬×¬†¬¬¬ ¬‚¬Ž¬×¬¬¬×¬¬¬‚ *y*yOyO„88—O>OKW,X„׬¬×¬ƒ¬¬¬„¬¬Ž¬×¬¬¬×¬¬¬‚*y*yOyO8y—O;ONW, X„׬¬×¬…¬¬¬¬‚¬¬Ž¬×¬¬¬×¬¬¬‚*y*yOyO‚8y— O7OQW, X„׬¬×¬¬‡¬¬¬¬¬Ž¬×¬¬¬×¬¬¬„*6 *y *yOyO8— O3OS W, X„׬¬×¬¬„¬¬¬Ž¬×¬¬¬×¬¬¬…*66 * y *y OyO8— O0!OU W‚,, X„׬¬×¬¬„¬¬¬¬Ž¬×¬¬¬×¬¬¬ƒ*6 * y *y OyO‚8 — O,‚Oz#OX W, X„׬¬×¬¬¬‚¬¬Ž¬×¬¬¬×¬¬¬‚6 * y *y O y O‚8 — O)Oz#O[W, X„׬¬×¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚6* y * y O y O ‚ 8 — O%O‚zz"O^WX„׬¬×¬¬¬„¬¬¬Ž¬×¬¬¬×¬¬¬„6* y * y O y O ‚ 8  —O! Oz!O`„WW,X„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚6* y* y O y O  8 O‚ —OOz!OcX„׬¬×¬„¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚6*  y* yO yO  8O —OOz Of X„׬¬×¬„¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚‚66* y* yOyO ‚ 8 O —OOzOi X„׬¬×¬ƒ¬¬‚¬Ž¬×¬¬¬×¬¬¬‚‚66* ‚ y* yOyO …88O—OOzOlX„׬¬×¬‡¬¬¬ ¬Ž¬×¬¬¬×¬¬¬‚ ƒ6** ƒ *y*yOyO‚ 8‚O 8—OOzOnX„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚ * … **[*y*yOyOO 8—O "OzOq†XX׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚ ‚** *‚[[*y*yOyOO8—‚OO %OzOs„׬¬×¬Ž¬×¬¬¬×¬¬¬‚ * *‚ [*y*yOy‚OO!Oƒ——O)OzOs„׬¬×¬Ž¬×¬¬¬×¬¬¬‚ * *„ [[*„yy**yOƒyOO%O ƒ—,O zOsƒ×¬¬׬׬¬¬×¬¬¬‚*‚ [ *‚y*yO‚)O .O zOs׬‹×¬¬¬×¬¬¬‚*‚ [ *yO+O ‚žž-O zOsƒ×¬¬Œ¬×¬¬¬×¬¬¬‚*‚[ *yO‚yy*O‚ž,O zOs„׬¬×Œ¬×¬¬¬×¬¬¬‚*‚[ *yOy)O‚ž+O zOs„׬¬×¬Ž¬×¬¬¬×¬¬¬‚*[ *yOy)O‚ž+O zOs„׬¬×¬Ž¬×¬¬¬×¬¬¬‚*[ *yOy(Ož*O zOs„׬¬×¬Ž¬×¬¬¬×¬¬¬‚* [*yOy'O8 ž)OzOs„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬ƒ[* [* yOy&O8 ž(OzOs„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬„[[* [* yOy%O‚88 ž(OzOs„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚[*‚ [* yO y#O8  ž'OzOs„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚[**‚ [ * y O y#O8 ž&OzOs„׬¬×¬‰¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚[* [ * y O y"O8 ž%OzOs„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚[* [ * y O y!O8 ž%OzOs„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚[*‚ [ * y O y O8ž$OzOs„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬ƒ*[* [ * y OyO8ž#OzOs†×¬¬×¬¬ ¬¬Ž¬×¬¬¬×¬¬¬ƒ*[* [ * yOyO 8ž"OzOs†×¬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬ƒ* [* ‚[* yOyO 8ž"OzOr‡X׬¬×¬¬ ¬¬Ž¬×¬¬¬×¬¬¬ƒ* [*  [* yOyO 8ž!OzOq†X׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬†**[*[* ‚ [* yOyO8ž OzOoX„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‡**[[*[* ‚ [* yOyO8žOz OmŠXXW,׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬„**[‚**[*„  ‚[[* ‚yyOyO8žOz Ok‚XX†,,׬¬×¬‰¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚*[‚**[* ƒ  ƒ[[* ƒyOOyO ‚88žOz Oj†XXW,„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚*[*[*  [ ‚yOyO žOz Oh‡XXW,„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚*[*[* * yO žOz Of,ƒW,„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬ƒ6*[*[ ** yO žOz Oe‡,,W,„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬† 6**[*[ * * yO žOz Oc„,,W,„׬¬×¬Ž¬×¬¬¬×¬¬¬† 6*[*[ * * yO "žO z Ob„,WW ,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚ ‚6*[*[ * * yO #žO z O`„,WW ,ƒ×¬¬׬׬¬¬×¬¬¬‚ [*‚[[** yO‚zO"žO zO_,W ,׬‹×¬¬¬×¬¬¬‚ [*‚[[**‚ yO1ƒzzO"žOzO_‚WW,{ ,ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚ [*[*ƒ #yO1z‚OO!žO zO]W„{,{ ,„׬¬×Œ¬×¬¬¬×¬¬¬‚ ['*† %yO1zO žO zO[ˆW,W{,‚{{,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚ [&*‚ &yO1zOžO zOYW†{{,{,†×¬¬×¬¬¬¬¬¬×¬¬¬×¬¬¬‚ [*[*/ yO1zOžOzOXW…{ ,‚{{,‡×¬¬×¬¬‚¬¬¬¬¬×¬¬¬×¬¬¬‚ [*‚[[* * y O1 zOžOzOVW†{{ ,{,ˆ×¬¬×¬¬¬¬¬‘¬¬×¬¬¬×¬¬¬‚ [*[* , y O81 z OžOzOTWƒ{{ ,{,„׬¬×¬‚¬¬¬’¬¬¬×¬¬¬×¬¬¬‚ [*[* . y O‚881 z OžOz‚OORWƒ{{ ,{,„׬¬×¬¬‚¬Ž¬×¬¬¬×¬¬¬ƒ6 [*[* 0 y O81 z OžO!z‚OOQW{ ,{,„׬¬×¬‚ ¬¬Ž¬×¬¬¬×¬¬¬„66  [*[* 0‚11 y O8z OžO#ƒzzOOWƒ{{O,{,„׬¬×¬…¬¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚6  „[[**[* -1y O8z OžO%zMW{„{OO{ ,{,„׬¬×¬ˆ¬¬¬¬¬‚¬Ž¬×¬¬¬×¬¬¬ƒ 6 „[[*[* *ƒ1181yO8zOžO%OKW‚{{‚{O{,{,„׬¬×¬¬Ž¬¬¬¬¬¬¬¬¬Ž¬×¬¬¬×¬¬¬„ 6 ‚[*[* )18 1yO8zOžO#OJWƒ,WW‚{O‚{{ ,{†,,׬¬×¬ƒ¬¬ ƒ¬¬¬Ž¬×¬¬¬×¬¬¬‚ ƒ66 *[* &1‚88 1yO8zOž O!OH‚,Wƒ,,ƒ{O‚{{ ,{ˆ,,׬¬×¬¬„¬¬„¬¬¬¬×¬¬¬×¬¬¬‚ ‚66 [* # 18 1yO‚88zOž OOG‚,,,…{O{ ,{Œ,׬¬×¬¬¬¬¬¬•¬¬¬¬¬×¬¬¬×¬¬¬‚ ‚66  [* 18 1yO‚8zOž O OE,Š,,{{ O‚{{ ,{…,׬¬×¬‚¬‚¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚ 6 [* 18 1‚yyOzOž O OD,‡,,{{ O{ ,{„׬¬×¬¬ˆ¬¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚ 6 [* 18 1…yyOOzOž O OC,„,{ O{ ,{‡×¬¬×¬¬ƒ¬¬ƒ¬¬¬‘¬¬×¬¬¬×¬¬¬ƒ [ * 181‚yOzOž OOA,„,{ O{ ,{„׬¬×¬¬ˆ¬¬¬¬¬¬Ž¬×¬¬¬×¬¬¬„ [ * 181‚zO ž OO@,„,{O{ ,{‰×¬¬×¬¬¬¬‚¬‚¬“¬¬¬¬×¬¬¬×¬¬¬‚ 7 [ * 1 8 1zO žOO?,{O{ ,{†×¬¬×¬¬‚¬¬‚¬¬¬×¬¬¬×¬¬¬‚ ‚77 [ * 1‚[[1 8 1zO‚ žOO>,{O{ ,{„׬¬×¬„¬¬¬„¬¬¬Ž¬×¬¬¬×¬¬¬ƒ 7 [* 1[1 8 1zO žOO<,{{O{,{„׬¬×¬¬ ¬¬Ž¬×¬¬¬×¬¬¬„ 7 [* 1[1818 1 zOžOO:ƒ],]{,‚O{O{,{‡×¬¬×¬¬¬¬„¬¬¬¬‘¬¬¬×¬¬¬×¬¬¬‚ 7 [*  1[18181 zOžO O:„,,{O‚{{O{,{„׬¬×¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚ 7 ‚[[* 1[18181 zO žO O7ƒ],,{‚{O{O{,…{׬¬×¬Ž¬×¬¬¬×¬¬¬‚ 7 ‚[[*‚77 ‚1[18181zO žOO5†],,{ƒ{O‚{{O{,Xƒ×¬¬׬׬¬¬×¬¬¬‚ 7 ‡[[**77 1[181811zO žOO3†],{„{{O{O {,X׬‹×¬¬¬×¬¬¬‚ ‚ ‚= 7 …[*71 [18181 1zO„žžOO!O1†]],,{„{{O{O {,Xƒ×¬¬Œ¬×¬¬¬×¬¬¬‚ ‚ ‚= 7 ‚[1 [18181 1zOƒžžO#O0…],{‚{‚ O{ O {,‚X„׬¬×Œ¬×¬¬¬×¬¬¬‚ ˆ == 7 1[18181 1‚zO‚ž%O.…]],{{ O{O {,…X׬¬×¬Ž¬×¬¬¬×¬¬¬‚ ‚ =‚ 7 [1[ 1‚8 1811zO‚žž%O,‚]]{{ O{ O {,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚‚ =‚ 7 ‚[[1[ 181†8111zOž%O0{{ O{ O {,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚= ‚77 [1[ 1811z Ož$O)‚,,, {O{ O {,„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚= ‚77  [11[ 18181 z Ož#O(„,,]…,,{{{O{ O {,„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚= ‚77  [11[1 81‚81 z O ž"O'ƒ,],{O{ O‚ {,„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚= 7  [1 1[1 81‚81 z O ž#O$ƒ,,]‚O,O{ O {‚,,„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚= 7  [!1[1 8181 z O ž"O#‚, ]O,O{ O{‚,,„׬¬×¬¬ƒ¬¬¬Ž¬×¬¬¬×¬¬¬‚=  [171[1‚88181 zO ž!O$]OzO{ O{,…,׬¬×¬ ¬¬Ž¬×¬¬¬×¬¬¬‚= [1‚771[1„88181 zO ž O ‚, ]O„zOOzO { O {‰,,,׬¬×¬ ¬¬Ž¬×¬¬¬×¬¬¬‚‚== = ƒ[[1[171‚[[1‚8 81zO ž O ]‚O‚zO‚zzO {O „{{,,„׬¬×¬„¬¬ ¬„¬¬¬Ž¬×¬¬¬×¬¬¬‚‚== = [1[171„[[11 8 1zOžO ]‚OƒzzOzO {O{,„׬¬×¬†¬¬¬¬„¬¬Ž¬×¬¬¬×¬¬¬‚‚== ‚== [1[ 171ƒ[1 8 1zOžO ]„OO„zzO‚zzO {O{,„׬¬×¬…¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚ƒ= = [‚11[ 171 8 1zOžO],]‚OOz‚OzO {O {,„׬¬×¬„¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚‚= = [‚11[ 17 118 1zOžO],]Oz‚ OzO {O {,„׬¬×¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚‚= = [1[ 1‚718 1‚zzOžO],„OOz OzO {O {†,,׬¬×¬‚¬ƒ¬¬¬×¬¬¬×¬¬¬‚!= [1[ 17181†zzOOžO ],ƒOz OzO {O‚{…,׬¬×¬¬„¬¬¬¬¬×¬¬¬×¬¬¬‚"= 1[1[ 17181!ƒzO žO ]‚Oz OzO {O{…,׬¬×¬ƒ¬¬¬Ž¬×¬¬¬×¬¬¬‚#= ‚71[1[17 1 81#!žO ]z OzO {O{„׬¬×¬ƒ¬¬¬¬¬×¬¬¬×¬¬¬‚%= „7711[1[1 7 1!81$!žO ]OzOzO‚ {O{„׬¬×¬…¬¬¬ƒ¬¬¬×¬¬¬×¬¬¬‚&= 7‚11[1‚[[1 71#81& žO ]zOzO {O{„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚'= 7‚11[1‚[[11$81(žO ƒ1 ]†zzOOzzOz O {O{„׬¬×¬¬×¬¬¬×¬¬¬‚)‚== 71[1[11&‚881*žO ‚11]z‚OOO z O{‚OO{„׬¬×¬Ž¬×¬¬¬×¬¬¬‚*‚== 71[1ƒ[111(ƒ811+žO 1‚]]zOz O {‚OO{„׬¬×¬Ž¬×¬¬¬×¬¬¬‚+‚== =71[1ƒ[11)‚81-žO1zO z O {‚OO{ƒ×¬¬׬׬¬¬×¬¬¬‚-= ƒ==171[1[1ZžO1zO z O{O{׬‹×¬¬¬×¬¬¬‚.= =171[1‚[[1)‚110žO 1zO z O‚{O{ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚/ƒ= =171‚[[1[1(12žO 1‚ zO z O{„׬¬×Œ¬×¬¬¬×¬¬¬‚1 =‚1171‚[[1[1&14žO 1 zzO z OƒO{„׬¬×¬Ž¬×¬¬¬×¬¬¬‚2=‚1171‚[[1[1$17žO 1 z…zOOzzO z O‚OO {„׬¬×¬Ž¬×¬¬¬×¬¬¬‚4=‚1171ƒ[11[1" 18žO 1 z‚zOzO zOO {„׬¬×¬Ž¬×¬¬¬×¬¬¬‚5=171[1 1:žO1ƒ11zzO‚zzO z OO {„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚6=171[1 1<žO1‚OO1zz‚OzOzO O {„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚8=1‚771‚[11=žO1O1zz‚OzOzO O {„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚9=171[11?žO1O1z‚ OzOzO O {„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚:=171[11Až Oƒ11O‚11z OzO]zO O…{׬¬×¬¬ƒ¬¬¬Ž¬×¬¬¬×¬¬¬‚<‚==11[ 11Cž O‚1Oƒ1z OzO] zO O ‡,,׬¬×¬ ¬¬Ž¬×¬¬¬×¬¬¬‚=‚==1‚1[ 1ƒ11\1Dž OOz OzO] zO O ‡,,׬¬×¬ ¬¬Ž¬×¬¬¬×¬¬¬‚>‚==1[ 11‚\\1FžOz OzO] zO O ,…׬¬×¬„¬¬ ¬„¬¬¬Ž¬×¬¬¬×¬¬¬‚@=1= 1[ 11\1H žOzOzO ] zO O ,…׬¬×¬†¬¬¬¬„¬¬Ž¬×¬¬¬×¬¬¬‚A=1‚== 1[ 11\1I žOzOzO ]zO O ,…׬¬×¬…¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚B=1= 1[1 1\1K ž OOO zO ]zOO ,…׬¬×¬„¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚D1= 1[1 1\1L‚11 ž OOO zO ],z‚OOO,…׬¬×¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚E= 1‚[[1 1\1K…111 žOOO zO ]z‚OOO,„׬¬×¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚F= 1‚[[1 1\ 1I„111 ž OO zO ]zƒOO,„׬¬×¬¬‚ ¬Ž¬×¬¬¬×¬¬¬‚H= 1‚[[11‚\ 1H11ž OO zO] ƒzzO,„׬¬×¬ƒ¬ ¬Ž¬×¬¬¬×¬¬¬‚I= 1[11\ 1F11žOO zO]O,…׬¬×¬ƒ¬ ¬Ž¬×¬¬¬×¬¬¬‚J= 1„[111\ 1E‡1\11\1‚OOžOO zO{O‚,,„׬¬×¬…¬¬ ¬Ž¬×¬¬¬×¬¬¬‚L= 1‚11\ 1F\1ƒ\11OžOO z O{O „׬¬×¬Ž¬×¬¬¬×¬¬¬‚M= 11\1B„1\1\ƒ€O€OƒOžOO z O {O „׬¬×¬Ž¬×¬¬¬×¬¬¬‚N= 1‚\\1 \1Bƒ\\1‡€OO€€OO‚žžOOz O{O, „׬¬×¬Ž¬×¬¬¬×¬¬¬‚P=1\1 \1@ƒ\\1ƒ€€O€O†žžOOOz O{O,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚Q=1‚\1 \1>\1…€€OOƒžOOz O{O,ƒ×¬¬׬׬¬¬×¬¬¬‚R‚==1\1 \1<\‚1‚€OO Oz O{O,׬‹×¬¬¬×¬¬¬‚T=1‚\1‚\\1:\1€‚OOž Oz O{O,…׬¬Œ¬×¬¬¬×¬¬¬‚U=1ƒbb\1„\\119\‚1€O‚OOžO‚zO{O,„׬¬×Œ¬×¬¬¬×¬¬¬‚V=1b1\1‚\17\‚1‚1€‚O‚OO žOzO{ O,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚X‚11b1\1\6\‚1„OO11O‚OOžOzO{ O,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚Y1b1\1I„1\1Oƒ1O‚OOžO zO{ O,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚Zb‚11\ 1‚11211OOOžO zO‚{ O,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚\b‚11\ 11111O‚OO žO zO{ O,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚]b1\ 11011O‚OO‚OžO zO{ O ,„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚^b1\ 11.11‚O‚OOžOzO{ O ,„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚`b1\ 1 1-1ˆ€11€1O‚OO‚zzžOzO { O ,„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚ab1\1 1+1„€1‚OOz‚OOžOzO { O †,,׬¬×¬Ž¬×¬¬¬×¬¬¬‚bb1\1 1*1ƒ€€1‚OO‚OOz‚OOžOzO { O †,,׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚db1\1 1)1„€€1„OOO zOžOz‚OO{O …,׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚eb1‚\\11'1€ƒ11‚OOzOžOzO{O‚ …,׬¬× ¬‚ ¬Ž¬×¬¬¬×¬¬¬‚fb1‚\\11'11OƒOzOžO‚zz{O„׬¬× ¬‚ ¬Ž¬×¬¬¬×¬¬¬‚h‚bb1\11%11ƒ11‚OOzOžO/{O„׬¬× ¬ƒ¬¬ ¬Ž¬×¬¬¬×¬¬¬‚i‚bb1†111$1„11OzOžOO{O„׬¬×¬¬ ¬Ž¬×¬¬¬×¬¬¬‚j‚bb11#‰111111O€zOžO‚OO {O„׬¬×¬¬ ¬Ž¬×¬¬¬×¬¬¬‚lb1b1!Š1\11111O€‚OOzOžOO {O …׬¬×¬„¬¬ ¬Ž¬×¬¬¬×¬¬¬‚m…b11b1‡\\11111ƒO €‚OOzOžOO {O „׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚nƒb1b1‚\\1‡1111 €Oz OžOO{O „׬¬×¬Ž¬×¬¬¬×¬¬¬‚pb1‡\1111€Oz OžOO{O „׬¬×¬Ž¬×¬¬¬×¬¬¬‚qb1‹111111€Oz OžOO!{‚OO „׬¬×¬Ž¬×¬¬¬×¬¬¬‚rb1ˆ111111€O€Oz OžOO"{‚OO „׬¬×¬Ž¬×¬¬¬×¬¬¬‚tb1ˆ11111€O€Oz OžOO${O „׬¬×¬Ž¬×¬¬¬×¬¬¬‚ub1‡1111‚1 €‚OO€OzOžOO&{O „׬¬×¬Ž¬×¬¬¬×¬¬¬‚vb 1„111€‚OO€OzOž O O(‚{O ƒ×¬¬׬׬¬¬×¬¬¬‚xb 1‡111€O€OzOž O O3׬‹×¬¬¬×¬¬¬‚yb 1„111€1€O€OzO1ž O O(O „׬¬׌¬×¬¬¬×¬¬¬‚zb 1„11 €1€O€ OzO‚1ž O O(O …׬¬¬ ¬×¬×¬¬¬×¬¬¬‚|b 1 €‚11€O€ OzOO ž O O'‚OO …׬¬ ¬ ¬×¬×¬¬¬×¬¬¬‚}b1 ‰11€€1 €1 €O € O zO‚11 ž O O&O …׬¬ ¬ ¬Ž×¬×¬¬¬×¬¬¬‚~b1€1 €1 €O € O zO1 ž O O&O …׬¬ ¬ ¬¬×¬×¬¬¬×¬¬¬‚‚bb1 1 €1 €1 €O € O zO1 ž O O%O …׬¬ ¬ ¬¬¬×¬×¬¬¬×¬¬¬‚‚bb1 \ €‚11 €1 €O € O zO1 žO O%O …׬¬¬‚ ¬¬¬×¬×¬¬¬×¬¬¬‚b1‚1\ €‚11 €1 € O €O zO]1 žO O$O …׬¬¬ ¬¬¬×¬×¬¬¬×¬¬¬‚b1\1 €1 €1 € O € O‚ zO]1žOO#O …׬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚ƒb11‚bb \1 €1 €1 € O € O z O„]]11žOO#O …׬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚‚1b1\1€1 €1 € O € Oz O„]]11žOO"O …׬¬¬¬¬×¬×¬¬¬×¬¬¬‚ b1\1€1€1 € O€ Oz O„]1 žOO!O ˆ×¬¬¬¬¬ ¬¬×¬×¬¬¬×¬¬¬‚ b1\1€1€1€ O€ Oz OžOO O‡×¬¬¬¬ƒ¬ ¬¬×¬×¬¬¬×¬¬¬‚ b‚11\1€1€1€ O‚1€ O z OžOO O‡×¬¬¬¬ƒ¬ ¬¬×¬×¬¬¬×¬¬¬‚ b‚11\1€1€ 1€ O1€O ‚OOz O1ž‚OOO O׬¬¬¬¬¬ ¬¬×¬×¬¬¬×¬¬¬‚b1\1€1€ 1€ O1€OOzO„11…žžOO Oˆ×¬¬¬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚b1\1€1€ 1€O1€OOzOƒ11ƒžOO O…׬¬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚b1\1€1€1‚€O1€O O‚zzO‚11O O…׬¬¬¬‰¬¬¬¬¬×¬×¬¬¬×¬¬¬‚b1\1€1€1€O 1€O O‚zzOžOO…׬¬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚b1\1€ 1€1€O 1„€€OOzO žOO…׬¬¬‚¬‰¬¬¬¬¬×¬×¬¬¬×¬¬¬‚b1\1€1‚1€1€O1‚€€OO‚zOžOO…׬¬¬¬‰¬¬¬¬¬×¬×¬¬¬×¬¬¬‚b1\1€ 1€1„11€€O1…€OOOžOO…׬¬¬¬‚¬„¬¬¬×¬×¬¬¬×¬¬¬‚b1\1€ 1€11‚€€O1 ƒ€OOžOO…׬¬¬ˆ¬¬¬¬ ¬×¬×¬¬¬×¬¬¬‚b1\1‚€€ 1‚€€11ƒ€OO1OžOO…׬¬ ¬‚ ¬×¬×¬¬¬×¬¬¬‚b1ƒ\\1‚€€ 1…€€11 1ƒ€O1 €O1žOO…׬¬¬×¬×¬¬¬×¬¬¬‚‚bb1„\\1‚€€1„€1 1€O1žOOƒ×¬¬׬׬¬¬×¬¬¬‚‚bb1‚\\11€1‚11€O1žO Oƒ×¬¬Œ¬×¬¬¬×¬¬¬‚‚bb1…\111ƒ€11€1€O1žO„OO׬‹×¬¬¬×¬¬¬‚ ƒb11ƒ\11 €1€O1žO†OOOƒ×¬¬Œ¬×¬¬¬×¬¬¬‚!‚11 1 €1€O1žO„OOO„׬¬×Œ¬×¬¬¬×¬¬¬‚$b 1 €1€O1žOOO„׬¬×¬Ž¬×¬¬¬×¬¬¬‚$b 1 €1€O1žOOO„׬¬×¬Ž¬×¬¬¬×¬¬¬‚%b 1 €1€O1 žO OO„׬¬×¬‚¬Ž¬×¬¬¬×¬¬¬‚&b 1 €1‚€O1 žOOO„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚(b1 €1 €O1 žO OO„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚)b1 €1‚11 €O1 žO OO„׬¬× ¬¬Ž¬×¬¬¬×¬¬¬‚*b1€1‚1 €O1žOOO„׬¬× ¬¬Ž¬×¬¬¬×¬¬¬‚,b 1‚€11‚ €O1žOO O„׬¬×¬‚¬ ¬Ž¬×¬¬¬×¬¬¬‚-b 1€1 €O1žO O O„׬¬×¬¬ ¬Ž¬×¬¬¬×¬¬¬‚.b 1€1 € O1ž O O O„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚0b 1€1 € O1ž O O O„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚1b 1€11 € O1ž O O O„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚2b 1 € 11€ O1 ž O O O„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚4b1 € 11€ O1 ž O O O„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚5b1 €1 1€ O1 ž O O O„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚6b1 €1 1€O1O žO O O„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚8‚bb1€11€O1O ž OO O„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚9‚bb1€11€O1O žOO O„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚:‚bb1‚11€11€O1OžOO‚ O„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚<ƒb111€11€O1OžOO O„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚=‚b1 1€1‚1€O1OžOO O„׬¬×¬‚¬Ž¬×¬¬¬×¬¬¬‚>b„€111€O‚1O žOO O„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚@ † 1 ‰€€OO11O žOOO„׬¬×¬Ž¬×¬¬¬×¬¬¬‚A † €1 ƒ€€OOžOO O„׬¬×¬Ž¬×¬¬¬×¬¬¬`¬׬׬¬¬×¬¬¬a¬Š×¬¬¬×¬¬Š¬×¬¬¬×¬¬‡×¬¬¬×¬n¬‚׬2¬„¬×¬n¬‚׬2¬„¬×¬n¬‚׬2¬„¬×¬E¬E¬E¬‚׬2¬„¬×¬×‚ׂ׬ׂׂ׬ׂׂ׬‚׬2¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬2¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬2¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬‚×× ¬ƒ×¬ƒ×¬‚¬×¬ ׬ƒ×¬ƒ×¬‚¬‚׬2¬„¬×¬×¬ƒ×¬ƒ×¬ ¬‚¬×¬ˆ¬×¬¬×׬ƒ× ¬ ׄ¬× ¬ l„¬¬¬×¬ ‚¬×¬ƒ× ¬¬ƒ×¬‚ ¬‚¬‚׬2¬„¬×¬×¬ ¬ƒ×¬ ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š×¬×¬¬×¬ƒ× ¬ …׬׬l×…l¬¬¬×¬ ׊׬׬¬×¬…##¬ƒ×¬‚ ¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬‚ ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š×¬×׬׬ƒ× ¬ƒ×¬׆׬׬ˆl×l†×l¬¬¬ƒ×¬¬ ˆ×׬¬×¬…##¬ƒ×¬‚¬l¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬ƒ× ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š¬××׬׬ƒ×¬ׇׂ¬×¬×¬‡l×…l¬¬¬…׬¬×¬‚׬†×¬¬× ¬‚ ¬ƒ×¬¬‚¬l¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬„#× ¬ƒ×¬ƒ ‚¬‚¬×¬…××׬ƒ×¬‚׬׆׬׬ˆl×l×l„¬¬¬„׬¬×‹××׬׬׬„#¬ƒ×¬…¬ ¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬…×#× †¬¬×¬ ¬‚¬× ¬‚׬ƒ×¬ƒ×¬ׇׂ¬×¬×¬‡lׇl×l¬¬¬ƒ×¬¬ ˆ¬×׬׬„#¬ƒ×¬¬ƒll¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬…#×#× …¬¬×¬ƒƒ¬‚¬× ¬¬ƒ×¬‚×׬×׬××׬׬‡lׂll¬‚¬…׬¬¬ ׊¬¬×¬×¬„#¬ƒ×¬„¬ll¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬‹×#×#×#×#׬ƒ×¬ƒ¬ƒ¬‚¬× ¬ƒ×׬ƒ×¬ƒ×¬ׅ׬…¬¬×¬†l¬‚¬×¬ Š¬¬×¬×¬…##¬ƒ×¬¬‚ll¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬‹#×#×#×#×#¬ƒ×¬ƒ¬ƒ¬‚¬× ¬×¬ƒ×¬‚×׬ƒ×¬ƒ×¬Ž¬‚¬×¬„¬×¬׊×׬¬×¬ˆ¬##¬ƒ×¬¬ƒll¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬„×#׬ƒ×¬ƒ¬ƒ¬‚¬× ¬…××׬ƒ×¬‡×¬×׬ׂ¬ƒ×¬ƒƒ¬‚¬×¬‚׬¬ƒ×¬Š#¬##¬ƒ×¬Ž¬ll¬¬ll¬¬¬‚׬2¬„¬×¬×¬×¬ƒ×¬¬…¬¬×¬ƒ¬ƒ¬‚¬×¬†¬×¬ƒ×¬…׬¬ƒ×¬„¬„¬‚¬×¬„¬×¬ׂ׬ƒ×¬Š#¬¬#¬ƒ×¬…¬¬ll¬l„¬¬¬‚׬2¬„¬×¬×¬׃׬ƒ×¬‡¬¬×¬ƒ¬¬‚¬×¬†×¬¬×¬ƒ×¬‚׬ƒ× ¬ƒ×¬Ž##¬‚¬×¬‚ׄ¬¬×¬ƒ×¬ƒ##„##¬ƒ×¬¬ƒll¬l„¬¬¬‚׬2¬„¬×¬×¬ׂ¬ƒ× ¬¬ˆ¬¬¬×¬ƒ¬ƒ¬¬‚¬×¬†×¬¬×¬ƒ×¬ׂ ¬ƒ×¬‚##¬‚¬×¬‚¬ׂ׬ƒ×¬#‚¬ƒ×¬‚¬Œll¬¬ll¬¬¬‚׬2¬„¬×¬×¬¬ƒ× ¬¬ƒ×¬¬‚¬×¬¬¬ƒ×¬ ¬ƒ×¬¬‚¬×¬ ¬ƒ×¬¬ƒ×¬¬l¬‚¬‚׬2¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬2¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬2¬„¬×¬××׬××׬××׬‚׬2¬„¬×¬n¬‚׬2¬„¬×¬n¬‚׬2¬„¬×¬n¬‚׬2¬†¬×¬¬×××׈¬¬¬×¬¬†¬¬¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬¬¬@¬¬ ¬¬¬2¬"¬ ¬/¬„¬×¬b¬"¬k¬/¬„¬× ¬¬…¬¬¬¬¬…¬¬¬¬¬ƒ¬¬¬¬¬¬…¬¬¬¬¬¬…¬¬¬ƒ¬¬¬ ¬¬‡¬¬¬¬¬ƒ¬¬¬‚¬¬¬‚¬¬„¬¬¬‚¬„¬¬¬‚¬¬ˆ¬¬¬¬¬¬ƒ¬¬¬¬„¬¬¬…¬¬¬¬ˆ¬¬¬¬¬¬¬„¬¬¬,¬„¬× ¬¬…¬¬¬ ¬¬¬…¬¬¬¬ƒ¬¬„¬¬¬¬¬„¬¬¬…¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬‰¬¬¬¬¬ ¬Š¬¬¬¬¬¬¬ƒ¬¬…¬¬¬†¬¬¬ ¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬¬ƒ¬¬„¬¬¬„¬¬¬¬…¬¬¬‰¬¬¬¬¬ ¬¬„¬¬¬…¬¬¬+¬„¬× ¬¬…¬¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬„¬¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬¬ƒ¬¬…¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬…¬¬¬ƒ¬¬¬¬„¬¬¬ƒ¬¬+¬„¬× ¬¬„¬¬ ¬¬¬…¬¬¬ƒ¬¬‚¬ˆ¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬¬†¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬‡¬¬¬¬‚¬¬…¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬‚¬Š¬¬¬¬¬¬¬…¬¬¬ƒ¬¬¬¬ƒ¬¬„¬¬¬+¬„¬× ¬‡¬¬¬¬¬ ¬¬¬…¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬¬¬…¬¬¬ƒ¬¬ˆ¬¬¬¬¬‡¬¬¬ ¬¬¬ˆ¬¬¬¬¬‰¬¬¬¬¬ ¬‡¬¬¬¬‹¬¬¬¬¬¬†¬¬¬ ¬¬ƒ¬¬¬¬¬¬¬¬¬¬ ¬¬†¬¬¬¬Š¬¬¬¬¬¬ƒ¬¬¬‘¬¬¬¬¬¬¬¬¬ ¬ƒ¬¬¬…¬¬¬+¬„¬× ¬¬…¬¬¬¬¬…¬¬ ¬¬†¬¬¬¬‰¬¬¬¬¬¬ ¬¬…¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬¬‡¬¬¬¬ˆ¬¬¬¬¬‚¬‚¬Š¬¬¬¬¬¬¬‚¬¬ƒ¬¬¬¬¬¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬,¬„¬× ¬¬¬ ¬¬¬¬¬ ¬ ¬¬ ¬¬¬‚¬‚'¬ ¬¬¬¬¬¬¬¬¬¬1¬„¬× ¬¬¬ ¬¬ ¬¬¬¬¬ ¬¬ ¬¬¬¬'¬ ¬¬¬¬¬¬¬¬¬¬1¬„¬× ¬„¬¬¬¬ƒ¬¬¬ƒ¬¬ ¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬1¬„¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬¬#¬†¬×¬¬llllˆ¬¬¬×¬¬llllˆ¬¬¬×¬¬lll_l ‚llŠll¬¬¬×¬¬l‚# l‚××l×ll5lׂׄll׋ll¬¬¬×¬¬l‡##l l‚××l‚××ll4l× ¬ƒ× ¬…ll× ¬Œll¬¬¬×¬¬l‚#„llׂll×l׊ll××ll××llׂll×l‰××l××ll××lŠ××ll××ll××l‚××l×l×l׊ll××ll××ll×l‚××l„××ll×l†××ll××lׄll××l7l׬¬…׬¬ ‡¬¬ll× ¬Œll¬¬¬×¬¬l…ll#ll³××l××l××ll××l××ll××l××ll××l××ll××l××ll××l××ll××ll××l‚××l‚××l‚××l£××ll××ll××ll××l××ll××l××ll××l××ll××l‚××lœ××l××ll××ll××ll××ll××ll××l××l7l׬¬†×¬¬¬ˆ¬¬ll׬‚¬¬¬ll¬¬¬×¬¬lƒllƒll l¢××ll××ll××l××ll××l××ll××l××ll××l××l‹××ll××ll××l×l„××ll×l†××ll××l‚××l‰××ll××l××l×l…××l××l׃l××l‚××l7l× ¬†×¬¬¬ˆ¬¬ll׬†¬¬¬Œll¬¬¬×¬¬lƒll l‚××lœ××ll××l××ll××l××ll××l××ll××lבl××ll××ll××l××l××l„××ll×l× l†××ll××l׈l××ll××lׂll×lƒ××l×l×l׃l××l7l× ¬†×¬¬¬ˆ¬¬ll׬¬Œll¬¬¬×¬¬lƒl‚ll”××l××l××ll××l××ll××lמl××l××ll××l××ll××l××ll××ll××ll×l‰××l××ll××l×lŽ××ll××l××ll××lׯl××l××ll××l××ll××ll××l××ll××l××l××l××l××ll××l××l7l× ¬†×¬¬¬ˆ¬¬ll׬‚¬Œll¬¬¬×¬¬lƒll lׂll×lׂll×lׂllׂll×l×…l××ll×l‰××l××ll×× l‚××l×lׂll×l׎ll××ll××ll××ll׌ll××l××l××llׂll×l6l× ¬†×¬¬¬ˆ¬¬ll׬¬Œll¬¬¬×¬¬l†ll1l‚×× l×l‚××"l†××ll××lUl× ¬†×¬¬¬ˆ¬¬ll׬†¬¬¬Œll¬¬¬×¬¬l…lll/l‚×× l×l†××ll××l‚××l‚××lTl× ¬…׬¬ ‡¬¬ll׬‚¬¬¬ll¬¬¬×¬¬l‚l9l‚××l‚××l‚××l×l‚××l…××l××lQl× ¬…׬¬ ‡¬¬ll× ¬Œll¬¬¬×¬¬l„llll[l× ¬ƒ× ¬…ll× ¬Œll¬¬¬×¬¬ l†llllZl×׃ll׋ll¬¬¬×¬¬ l‚llllˆ¬¬¬×¬¬llll†¬¬¬×¬¬¬#¬„¬×¬¬¬#¬ƒ¬×××$ׂ¬¬¬&¬¾µlp`â#3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ4¬2ƒ¬×¬¬¬¬0¬„¬×¬¬¬¬0¬„¬×¬¬¬;¬ׂ¬¬ׂ¬¬"׬„¬×¬¬¬;¬¬„׬¬¬„׬¬ ¬×¬‹×¬×¬×¬„¬×'¬ ¬¬¬¬¬¬„׬¬¬„׬¬ ¬×¬‹×¬×¬×¬„¬×'¬¬¬¬¬¬¬¬„׬¬¬„׬¬ ¬×¬Š×¬×¬×¬„¬×¬¬ƒ¬¬¬¬¬„¬¬¬¬¬ƒ¬¬¬¬‚¬‚¬¬¬¬b¬¬„׬¬¬„׬¬ ¬×¬‰×¬×¬×¬„¬×¬¬¬ƒ¬¬¬„¬¬¬…¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬¬¬b¬¬„׬¬¬„׬¬ ¬× ¬‡×¬×¬„¬×¬¬¬ƒ¬¬¬„¬¬¬ƒ¬¬¬¬†¬¬¬¬¬¬¬¬¬b¬¬„׬¬¬„׬¬ ¬× ¬‡×¬×¬„¬×¬¬¬ƒ¬¬¬ƒ¬¬„¬¬¬¬¬…¬¬¬ƒ¬¬¬¬¬¬¬b¬¬„׬¬¬„׬¬ ¬× ¬†×¬×¬„¬×¬ƒ¬¬¬ƒ¬¬ƒ¬¬¬…¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬¬¬b¬¬„׬¬¬„׬¬ ¬× ¬…׬׬„¬×¬¬„¬¬¬¬¬„¬¬¬¬†¬¬¬¬¬‚¬‚¬¬¬¬b¬¬„׬¬¬„׬¬ ¬× ¬ƒ×¬„¬×¬¬¬¬)¬¬¬¬b¬¬„׬¬¬„׬¬ ¬×¬ƒ×¬„¬×¬¬¬¬)¬¬¬¬b¬¬„׬¬¬„׬¬ ¬×¬‚׬„¬×¬ ¬¬¬)¬¬¬¬b¬¬„׬¬¬„׬¬ ¬×¬×¬„¬×¬¬¬;¬¬„׬¬¬„׬¬ ¬×¬„¬×¬¬¬;¬¬„׬¬¬„׬¬ ¬×¬„¬×¬¬¬;¬ƒ×¬¬ƒ×¬¬!׬„¬×¬¬¬¬0¬„¬×¬¬¬¬0¬†¬×¬¬××××,׉¬¬¬×¬¬¬¬¬¬*¬‹×¬¬¬×¬¬¬¬¬¬)¬‹×¬¬¬×¬¬¬¬¬¬)¬‹×¬¬¬×¬¬¬¬¬¬)¬‹×¬¬¬×¬¬¬¬¬K¬,×1¬‹×¬¬¬×¬¬¬¬¬K¬*¬×1¬‹×¬¬¬×¬¬¬¬m¬˜×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬’׬׬׬׬׬׬׬׬׬¬‚(ׂ¬×1¬‹×¬¬¬×¬¬B¬y׬2¬š¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬”¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬‚(ׂ¬×1¬‹×¬¬¬×¬¬A¬‚V×wV׬2¬× ¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬× ¬‚¬‚(ׂ¬×%¬‚ ¬‹×¬¬¬×¬¬A¬‚V׬n¬‚V׬2¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚(ׂ¬×&¬‚ ¬‹×¬¬¬×¬¬A¬‚V׬V¬×¬V¬‚V׬2¬× ¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬× ¬‚¬‚(ׂ¬×'¬‚¬‹×¬¬¬×¬¬¬‚¬†¬¬¬‚ ¬‚¬ˆ¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬ ‚¬¬¬¬Š¬¬¬¬¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚ׂ×ׂ×ׂ¬× ¬¬¬†¬¬¬‚¬‹×¬¬¬×¬¬¬‚¬Š¬¬¬¬¬‚¬Ž¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ך××××××××××××¬× ¬‚¬‚¬Ž¬¬¬¬¬¬¬¬‹×¬¬¬×¬¬¬‚¬Š¬¬¬¬¬‚¬Ž¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬ ¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬‚¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚¬‚¬‚ ×ׂ׊××××¬× ¬‚¬’¬¬¬¬¬¬¬¬¬¬‹×¬¬¬×¬¬¬‚¬Š¬¬¬¬¬‚¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬ ¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ ׆××ׂ׊××××¬× ¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬‹×¬¬¬×¬¬¬‚¬Š¬¬¬¬¬¬ˆ¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬ ¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬‚¬‚ ××××××׊××××¬× ¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬‹×¬¬¬×¬¬¬‚¬Š¬¬¬¬¬‚¬‘¬¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬ ¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ ׇ×××׊××××¬× ¬‚¬•¬¬¬¬¬¬¬¬¬¬‚¬‹×¬¬¬×¬¬¬‚¬‡¬¬¬ ¬‚¬„¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬ ¬‚¬¬¬ ¬×¬‚¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚¬‚¬‚ׄ×× ×Š××××¬× ¬‚¬‚¬¬‰¬¬¬¬‚¬‹×¬¬¬×¬¬¬‚¬†¬¬¬‚¬‚¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬‚"¬×¬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ׄ×× ×Š××××¬× ¬‚¬‚ ¬†¬¬¬‹×¬¬¬×¬¬¬‚¬Š¬¬¬¬¬‚¬‚¬‚V׬V¬×¬V¬‚V׬¬‚!¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚ׄ×× ×Š××××¬× ¬‚¬‚ ¬†¬¬¬‹×¬¬¬×¬¬¬‡¬¬¬¬¬‚V׬n+¬‚V׬¬ !¬× ¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬× ¬‚¬‚ׄ×××ׂ¬× ¬ ¬†¬¬¬‹×¬¬¬×¬¬A¬Vy׬2¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚(ׂ¬×1¬‹×¬¬¬×¬¬A¬yV¬3¬ כ׬׬׬׬׬׬׬׬׬׬׬׬¬ ו׬׬׬׬׬׬׬׬׬¬ ׂ¬‚(ׂ¬×1¬‹×¬¬¬×¬¬¬¬|¬™¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬“¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬‚(ׂ¬×1¬‹×¬¬¬×¬¬¬¬¬K¬*‚¬×1¬‹×¬¬¬×¬¬¬¬¬K¬+×1¬‹×¬¬¬×¬¬¬¬¬¬)¬‹×¬¬¬×¬¬¬¬¬¬)¬‹×¬¬¬×¬¬¬¬¬¬)¬‹×¬¬¬×¬¬¬¬¬¬¬ ¬‹×¬¬¬×¬¬¬‚¬×××l׬‹×¬¬¬×¬¬¬‚uT~¢~‚xxTT T‚@‚‚/T׬‹×¬¬¬×¬¬¬‚uT‚x~¢~xTTT‚@‚0T׬‹×¬¬¬×¬¬¬‚vT„~~¢¢~xTTT‚@‚1T׬‹×¬¬¬×¬¬¬‚wT~¢~xTTT‚2T׬‹×¬¬¬×¬¬¬×¬‚wT‚x~¢~xTTT3T׬׬‹×¬¬¬×¬¬¬‚V× V׬‚ T¬ T¬‚TT¬2T~¢~xTTT4T׬‚V× V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬‚ T¬T¬ T‚¬¬T„¬TT¬T‚¬¬1T~¢~xTTT6T׬‚V× ¬‚V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬‚ T¬T¬T‚¬¬T„¬TT¬T¬1T¢~xTTTƒ7T׬‚V× ¬‚V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬‚ T¬T¬T¬T„¬TT¬T¬0Tƒx¢¢~xT‚NNTT T 9T׬‚V× ¬‚V׬‹×¬¬¬×¬¬¬ƒV×+ ‚V׬‚ T¬T¬T¬T„¬TT¬T¬1T…~¢¢~~xTN*TT T:T׬ƒV×+ ‚V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚ T¬T¬T¬T„¬TT¬T¬1T„¢¢~~xTN*TTTT׬ƒV×+ ‚V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚ T¬T¬T¬T ¬Tƒ¬TT¬T¬2T…x¢~xxT *TTT@T׬„V×+V„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚ T¬T¬T¬T¬T¬T¬T¬T¬3T†¢~xxTT*TTT BT׬„V×+¬„V׬‹×¬¬¬×¬¬¬ƒV×+ ‚V׬‚ T¬T„¬TT¬T¬ T¬T¬T¬T¬4T„¢xTT*ƒ$TTTET׬ƒV×+ ‚V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚ T¬T„¬TT¬T¬ T¬T¬T ¬T¬5Tx*$TTT‚GT׬„V×+V„V׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ T¬T„¬TT¬T¬ T¬T¬T¬T¬TTPT‚MT׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ T¬T„¬TT¬T¬ T¬T¬T‚¬¬T¬TTT T׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V+„VV׬‚ T¬T„¬TT¬T¬ T¬T¬T¬T¬TTT!T׬„V×+V+„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ T¬T„¬TT¬T¬ T¬T„¬TT¬T¬TTIT7UT׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ T¬T„¬TT¬T¬ T¬Tƒ¬T¬T‚¬¬TTHT7QT׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ T¬T„¬TT¬T¬ T¬‚T¬T‚¬¬TTIT 7MT׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ T¬T„¬TT¬T¬T¬T ¬LTyT|T7IT׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V„V׬‚ T¬T¬T¬T¬T¬T¬UT…yyU*TzT7HT׬„V×+V„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚T ¬T ¬T ¬T¬T ¬HTƒyU+[TÕÔƒÓÓÒTT7HT׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚T¬T¬T¬T¬T¬T¬FTƒyU+WTÕÔ†ÓÓǪ̀¢TT7GT׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚T¬T¬T¬T¬T¬T¬ETƒyU+TT‚ÔÔÕ‰ÔÔÓÓÒ¨¢¢~TT7GT׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚T¬T¬T¬T„¬TT¬T¬CTƒy©„UU+QTÓÔÕ‰ÔÔÓÓÒ¨¢¢xTT7GT׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚T¬T¬T¬T¬T¬T¬BTƒ£©©„UU+OT‚ÓÓÔÕŠÔÓÓÒ¨¢~TT*TT7FT׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚T¬T¬T¬T„¬TT¬T¬@T‹£©ª©yUU+MTÓÔÕ‹ÔÓÓÒ¨¢~TN**TT7FT׬„V×+V„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚T¬T¬T¬T„¬TT¬T¬?TŒ£ªª…yUU+KTÓÔÕ‡ÓÓÒ¨¢~T*TT7FT׬„V×+¬„V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚T¬T„¬¬T¬T¬T¬T¬=Ty£©°ª…yUO+IT‚ÒÒÓÔÕŠÓÓÒ¢¢TN**TT7ET׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚TI¬T׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚~T‚y£°‰ªyUU+*(T£UTT‚$Os—»‚——sOT7>T׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚~T‚ª°‰…yUO+*'T£UT T‚$Os —„ssOOT7>T׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚~T‚ª°Šª…yUU++&T£UT#Tƒ$$Os—ƒsOOT7=T׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚~T£°‰ª…yUU+*&T£UT'T‡$$+OOs—„ssO%T7=T׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚}T‚ª°‰…yUO+*%T£UT*Tƒs—„ssO$T7=T׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+×V„×V׬‚}T‚ª°ˆ…yUU++%T£UT,T —s‚O$T7»»Â»$‚‚%%‚%% &‚''&%%ƒ&&׬‹×¬¬¬×¬¬¬‚O&'&&‚''&%&'&‚&'&ƒ&'&%„&'&%‚%&‚''& % &‚''&% ‚‚%% &‚''&>‚%% &‚''&%%ƒ&&׬‹×¬¬¬×¬¬¬‚O&'&%&'&%&'&%‚%&‚''&%ƒ&'&%„%&'&%‚%&‚''&% ‚%% &‚''&% ‚‚%% &‚''&>‚%% &‚''&%%ƒ&&׬‹×¬¬¬×¬¬¬‚O&‚''&%%&'&&‚''&%ƒ%&‚''&%ƒ%&'&%‚%&‚''&„%%&‚''&% ‚‚%% &‚''& ‚‚%% &‚''&>‚%% &‚''&%%ƒ&&׬‹×¬¬¬×¬¬¬‚O&‚''&%‚&'&%&‚''&%‚&‚''&%ƒ%&‚''&‚%&‚''&ƒ% &'&% ‚‚%% &‚''&% ‚% &‚''&>‚%% &‚''&%%ƒ&&׬‹×¬¬¬×¬¬¬‚N&'&„ &‚''&%&'&%‚&'&%„%&‚''&%‚%&‚''&%ƒ% &'&% ‚% &‚''&% ‚% &‚''&>‚%% &‚''&% %ƒ&&׬‹×¬¬¬×¬¬¬‚N&'&%ƒ &'&%&'&‚&'&„%&‚''&%‚%&‚''&%‚%&‚''&% ‚% &'&% ‚% &‚''&> ‚%% &‚''&% %ƒ&&׬‹×¬¬¬×¬¬¬‚N&'&%„‚ &'&%&'&%‚%&‚''&ƒ&'&%„&'&%‚%&‚''&% % &‚''&% ‚‚%% &'&> ‚%% &‚''&% %ƒ&&׬‹×¬¬¬×¬¬¬‚N&‚''&%ƒ &'&%&‚''&%ƒ%&‚''&%ƒ&'&%„%&'&%‚%&‚''& % &‚''&% ‚‚%% &‚''&>% &‚''&% %…&&׬¬Œ¬×¬¬¬×¬¬¬‚M&'&† &&''&%&‚''&%‚&‚''&%ƒ%&'&‚%&‚''&%‚%&‚''&% % &‚''&% ‚‚%% &‚''&>% &‚''&% %†&&׬¬×Œ¬×¬¬¬×¬¬¬‚M&'&%† &''&%&'&%‚&'&%„%&‚''&‚%&‚''&„%%&‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&>% &'&% %†&&׬¬×¬Ž¬×¬¬¬×¬¬¬‚M&'&%… &'&%%&'&‚&'&%„%&‚''&%‚%&‚''&%ƒ% &'&% ‚‚%% &‚''& ‚‚%% &‚''&>‚%% &'&% %†&&׬¬×¬Ž¬×¬¬¬×¬¬¬‚M&‚''&%… &'&%&'&%‚%&'&„%&‚''&%‚%&‚''&%ƒ% &'&% ‚% &‚''&% ‚‚%% &‚''&> ‚%% &‚''& ‚%%&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚M&'&%… '&%&‚''&%‚%&‚''&%ƒ&'&%„&'&%‚%&‚''&% ‚% &'&% ‚% &‚''&> ‚%% &‚''&‚%%&„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚L&'&… '&%&'&%‚&‚''&%ƒ%&'&%„%&'&%‚%&‚''&% % &'&% ‚% &‚''&+>  ‚%% &‚''&%‚%%&„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚L&'&%‚ƒA„ &%&'&%‚&'&%ƒ%&‚''&‚%&‚''&%‚%&‚''& % &‚''&% ‚% &‚''&+> ‚%% &‚''&%‚%%&„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚L&‚''&%ƒA„ &%&'&‚&'&%„%&‚''&%‚%&‚''&„%%&‚''&% % &‚''&% ‚‚%% &'&+>  ‚%% &‚''&%‚%%&„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚L&'&%‚„ '&%%&‚''&%‚%&'&„%&‚''&%‚%&‚''&%ƒ% &'&% ‚%% &‚''&% ‚‚%% &‚''&,>  ‚%% &‚''&%%&„׬¬×¬‰¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚K&'& ‚„ '&%&‚''&%‚%&‚''&%ƒ&'&%‚%&‚''&%ƒ% &'&% ‚‚%% &‚''&% ‚‚%% &‚''&,> ‚%% &‚''&%%&„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚K&'&% ‚„ '&%&'&%ƒ%&‚''&%ƒ&'&%„&'&%ƒ%&‚''&% ‚‚%% &‚''& ‚‚%% &‚''&,> ‚%% &‚''&%%&„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚K&'&% ‚ƒ&%&'&%‚&'&%ƒ%&'&%„%&'&%‚%&‚''&% ‚% &‚''&% „ׂ%% &‚''&,> ‚%% &‚''&%%&„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚K&‚''&% „ '&%&'&‚&'&%„%&‚''&‚%&‚''&%‚%&‚''&% ‚% &'&% …×ׂ%% &‚''&+> % &‚''&% %&†×¬¬×¬¬ ¬¬Ž¬×¬¬¬×¬¬¬‚J&'&… &'&%&‚''&%‚%&'&„%&‚''&%‚%&‚''&‚%&‚''& % &'&%‚××…××% &‚''&+> % &‚''&% %&†×¬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚J&'&%… &''&%&‚''&%‚%&‚''&%„%&‚''&%‚%&‚''&„%%&‚''&% % &‚''&%‚××ׂ×% &‚''&+> % &‚''&% %&†×¬¬×¬¬ ¬¬Ž¬×¬¬¬×¬¬¬‚J&'&%&'&%&'&%ƒ%&‚''&%ƒ&'&%‚%&‚''&%ƒ% &'&% % &‚''&…%××ׂׂ%% &‚''&,> ‚%%&‚''&% %&„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚J&‚''&%‚Ò&'&&'&%‚&'&%ƒ%&'&%„&'&%ƒ% &'&% ‚‚%% &‚''&†×%×ׂ‚%% &'&,> ‚%% &'&% %&„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚I&'&‚ÒÒ&'&%&'&‚&'&%ƒ%&‚''&%„%&'&%‚%&‚''&% ‚‚%% &‚''&…×××ׂ‚%% &‚''&,> ‚%% &'&% %&„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚I&'&Ò&'&%&‚''&%‚%&'&%„%&‚''&‚%&'&%‚%&‚''&% ‚‚%% &‚''&ׂ‚%% &‚''&,> ‚%% &‚''& %&„׬¬×¬‰¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚I&'&%¢Ò…¢&&''&%&‚''&%‚%&‚''&„%&‚''&%‚%&‚''&%‚%&‚''&% ‚% &‚''&ׂ‚%% &‚''&+> ‚%% &‚''& %&„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚I&‚''&%Òƒ&&'&%&'&%ƒ%&‚''&%ƒ&'&%‚%&‚''&%&‚''& % &'&ׂ‚%% &‚''&(> ‚%% &‚''&%%&„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚I&'&%Òƒ¢&'&&'&‚&‚''&%ƒ&'&%‚%&‚''&%„%%&‚''&% % &'&ׂ% &‚''&%> ‚%% &‚''&%‚%%&„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚H&'&Ò‚¢'&%%&'&‚&'&%ƒ%&'&%„&'&%ƒ% &'&% % &‚''&ׂ% &‚''&ƒ% > ‚%% &‚''&%‚%%&„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚H&'&%Ò¢&%&‚''&%‚%&'&%„%&‚''&„%&'&%ƒ% &'&% ‚‚%% &‚''&× ‚% &‚''&%$ ‚%% &‚''&%‚%%&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚H&‚''&%¢Ò¢&%&‚''&%‚%&‚''&„%&‚''&‚%&'&%‚%&‚''&% ‚‚%% &‚''&× ‚‚%% &‚''&# ‚%% &‚''&%‚%%&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚H&'&% Ò¢&%&'&%ƒ%&‚''&%„%&‚''&%‚%&‚''&%‚%&‚''&% ‚‚%% &‚''&‚×× ‚%% &'&% # % &‚''&%‚%%&ƒ×¬¬׬׬¬¬×¬¬¬‚G&'&¢ Ò‚¢~&%&'&‚&‚''&%ƒ&'&%‚%&‚''&‚%&‚''&% ‚% &‚''&× ‚‚%% &‚''&%  % &‚''&%%&׬‹×¬¬¬×¬¬¬‚G&'&% Ò¢&%%&'&‚&'&%ƒ%&'&%‚%&‚''&%„%%&‚''&‚% &‚''& ‚‚%% &‚''&% ‚%%& % &‚''&%%&ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚G&'&% Ò…¨¢&&%&‚''&%‚%&'&%ƒ%&'&%„&‚''&%„%%&‚''&% % &'&% ‚‚%% &‚''&% ‚%%&‚TT&‚''& ‚ ‚%%&‚''&% %&„׬¬×Œ¬×¬¬¬×¬¬¬‚G&‚''&% Ò„¢~&%&‚''&%‚%&'&„%&‚''&„%&'&%ƒ% &'&% % &‚''&% ‚‚%% &‚''&% ƒx~¢¨‰Į̀¢~T&''&%  ‚%%&‚''&% %&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚F&'&̢҃*&'&%ƒ%&‚''&%„%&‚''&%‚%&'&%ƒ% &'&% % &‚''&% ‚% &‚''&% ‚ƒx¢¨ÌÒ†Į̀¢T'&%  ‚%% &'&% %&†×¬¬×¬¬¬¬¬¬×¬¬¬×¬¬¬‚F&'& ¢̢҃~%&'&‚&‚''&%ƒ&‚''&%‚%&‚''&%‚%&‚''&% ‚‚%% &‚''&% ‚% &‚''&% ‚‚~¢Ì ̨҃x&%  ‚%% &'&% %&‡×¬¬×¬¬‚¬¬¬¬¬×¬¬¬×¬¬¬‚F&'&% ̢҃~‚%&'&%‚&'&%ƒ&'&%‚%&‚''&‚%&‚''&% ‚‚%% &‚''&% ‚% &‚''&% ‚¢Ì ÒÓ‚Ì¢&‚%% &‚''&% %&ˆ×¬¬×¬¬¬¬¬‘¬¬×¬¬¬×¬¬¬‚F&‚''&% ¢Ò„Ì¢~*&‚''&%‚&'&%ƒ%&'&%‚%&‚''&‚%&‚''&% ‚‚%% &‚''&% ‚‚%% &‚''& ‡¢ÌÌ ÒӃͨT&‚%% &‚''& %&„׬¬×¬‚¬¬¬’¬¬¬×¬¬¬×¬¬¬‚E&'&% ̢҃~&'&%‚%&'&„%&‚''&%„&‚''&%„%%&‚''&‚% &‚''& ‚‚%% &'& †N¢ÌÌ ÒÓ†ÔÔÓÍÌx&%‚%% &‚''& %&„׬¬×¬¬‚¬Ž¬×¬¬¬×¬¬¬‚E&'& ̨҄¢x&'&%ƒ%&‚''&„%&‚''&„%&'&%ƒ% &‚''&% % &‚''& ‚‚%% &‚''&% …¢ÌÌ ÒӃͨT&%  ‚%% &‚''&% %&„׬¬×¬‚ ¬¬Ž¬×¬¬¬×¬¬¬‚E&'&% ¨Ò…ÌÌ¢~x %&'&‚&‚''&%„%&‚''&%‚%&'&%ƒ% &'&% % &'&% ‚‚%% &‚''&% …~¨ÌÌ ÒÓ„ÍÌ¢N&%  ‚%% &‚''&%%&„׬¬×¬…¬¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚E&‚''&% Ò„ÌÌ¢x &‚''&%‚&'&%ƒ&'&%‚%&‚''&%‚% &'&% % &‚''&% ‚‚%% &‚''&% ‚T¢Ì ÒÓ…ÍÌ¢x*&%  % &‚''&%%&„׬¬×¬ˆ¬¬¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚E&'&% ¨Ò…ÌÌ¢~x &‚''&%‚&'&%ƒ%&'&%‚%&‚''&%‚%&‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&% „x¨ÌÌ ÒƒÓÓÒ̃¢xT&%  % &‚''&%‚%%&„׬¬×¬¬Ž¬¬¬¬¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚D&'& Ò…ÌÌ¢~T &'&%‚%&'&%ƒ%&'&%‚%&‚''&‚%&‚''&% ‚‚%% &‚''&% ‚% &‚''&% „x¢¨ÌÒ̃¢xT&%  % &‚''&%„%%&&„׬¬×¬ƒ¬¬ ƒ¬¬¬Ž¬×¬¬¬×¬¬¬‚D&'&% ¢Ò†Į̀¢x* &'&%ƒ%&‚''&„%&‚''&%„&‚''&%%&‚''&% ‚‚%% &‚''&% ‚% &‚''&% „x¢¨Ì ÒÌ…¢¢~T*&%  % &‚''&%%†׬¬×¬¬„¬¬„¬¬¬¬×¬¬¬×¬¬¬‚D&‚''&% ÌÒ̃¢~T %&'&‚&‚''&%„%&‚''&„%&'&%„%%&‚''&‚% &‚''&% ‚‚%% &‚''&% …T¢¢¨̇¨¢~xN'&%  ‚%%&‚''&% ‹׬¬×¬¬¬¬¬¬•¬¬¬¬¬×¬¬¬×¬¬¬‚D&‚''&% ¢Ò†Į̀¢xT&‚''&%‚&'&%ƒ&‚''&%‚%&'&%ƒ% &‚''& % &‚''& ‚%% &‚''&% †~¢¢¨ ÌŠ¨¢¢~xT*&''&%  ‚%%&‚''&% „׬¬×¬‚¬‚¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚C&'& ¨ÒÌ„¢~x*&‚''&%‚&'&%ƒ&'&%‚%&‚''&%ƒ% &'&% % &‚''& ‚‚%% &‚''& ‡*x~¢¢¨¢†~xT**&'&%  ‚%%&‚''&% „׬¬×¬¬ˆ¬¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚C&'& Ò̃¢~T&'&%‚%&'&%ƒ%&'&%‚%&‚''&%‚% &'&% % &'&% ‚‚%% &‚''&% ˆ*Tx~~¢ †~xTT**&‚''&‚%% &'&%ƒ‡׬¬×¬¬ƒ¬¬ƒ¬¬¬‘¬¬×¬¬¬×¬¬¬‚C&'&% ¨ÒÌ„¢~xT%&'&%ƒ%&‚''&„%&'&%‚%&‚''&‚%&‚''&% % &‚''&% ‚‚%% &‚''&% *T ƒ**&‚''&‚%% &'&%Ä׬¬×¬¬ˆ¬¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚C&‚''&% ÒÌ„¢~TN%&ƒ'&&Ô‚**‚&‚''&%„%&‚''&…%&‚''&%‚%&‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&%  &‚''&%‚%% &‚''&%É׬¬×¬¬¬¬‚¬‚¬“¬¬¬¬×¬¬¬×¬¬¬‚B&'&% ¢Ò̈¨¢xT&Ô*Ò‚&‚''&%„%&‚''&„%&'&%%&‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&%  &‚''&%  ‚%% &‚''&%Æ׬¬×¬¬‚¬¬‚¬¬¬×¬¬¬×¬¬¬‚B&'& ÌÒ̇¢~xT Ô * Ò‚&'&%ƒ&‚''&%‚%&'&%„%%&‚''&‚‚%% &‚''&% ‚% &‚''&%  &‚''&%  ‚%% &‚''&Ä׬¬×¬„¬¬¬„¬¬¬Ž¬×¬¬¬×¬¬¬‚B&'&% ¢ÒÌ‚¢~Ô *Ò&'&%ƒ%&'&%‚%&'&%ƒ% &‚''&‚% &‚''&% ‚% &‚''&%  &‚''&%  ‚%% &‚''& Ä׬¬×¬¬ ¬¬Ž¬×¬¬¬×¬¬¬‚B&‚''&% ¨Ò‚ÌÌÔ *Ò&ƒ%&'&%‚%&‚''&%Gƒ% &'&% % &‚''& ‚‚%% &‚''&% ‚ &‚''&%  % &‚'' Ç׬¬×¬¬¬¬„¬¬¬¬‘¬¬¬×¬¬¬×¬¬¬‚A&'&% ÌÒÔ*Ò„%&‚''&%‚%&‚''&G‚% &'&% % &‚''& ‚‚%% &‚''&% ‚ &‚''&%  % &Ä׬¬×¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚A&'& ¨ ÒÔ*Ò„%&‚''&…%&‚''&G‚%&‚''&% % &'&% ‚‚%% &‚''& ‚ &‚''&%  %&Ä׬¬×¬Ž¬×¬¬¬×¬¬¬‚A&'&% Ì ÒÌÔ‚*Ò‚ƒ&‚''&%„%&‚''&„% G„ %&‚''&% ‚‚%% &‚''&% ‚‚%% &‚''& ‚ „&&''&%  %&Ã׬¬׬׬¬¬×¬¬¬‚A&‚''&%¢!ÒÌÔ ‚**Òƒ&'&%‚%&'&‚% G… &‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&%  '&%  %‚&&ÃÂ׬‹×¬¬¬×¬¬¬‚@&'&%Ì"ÒÌ ÔÒ ƒ%&'&%‚%&'&Gƒ „ &‚''&‚‚%% &‚''&% ‚‚%% &‚''&% „ '&  ‚%%Ã׬¬Œ¬×¬¬¬×¬¬¬‚@&'&‚¢ÌÒ Ô‚TÒ‚̨%&'&%‚%&‚''&G‚ † ''&‚‚%% &‚''&% ‚% &‚''&% ƒ '&  Ä׬¬×Œ¬×¬¬¬×¬¬¬‚@&'&ÌÒÔ TÒ‰ÒǪ̀¢xT„%&‚''&%‚%&‚''&G‚ „ &% % &‚''&% ‚% &‚''&% ‚ &%Ä׬¬×¬Ž¬×¬¬¬×¬¬¬‚@&‚''&%‚¢ÌÒÔƒ&&% T ÒҌ̨¢xT*%&‚''&…%&„''&&G † &% % &‚''& ‚% &‚''&%  &%  Ä׬¬×¬Ž¬×¬¬¬×¬¬¬‚@&‚''&%ƒÔÔÌ ÒÔ&% TÒÌҋ̨¢xT**&‚''&%„%&ƒ''G„  % &'& ‚%% &‚''&%  &% #Ä׬¬×¬Ž¬×¬¬¬×¬¬¬‚?&'&ƒ%Ô ÒÔ&'&% T‚ҋ̨¢xT**&'&%‚%&'G % &'&% ‚‚%% &‚''&%  &%‚ÉÉ#à „׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚?&'& ÔÌÒÔ&'&T‚̨҇¢xT**%&'&%‚%&AGƒ … ‚‚%% &‚''&% ‚‚%% &‚''&%  &%ƒHHÉ#Ã!„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚?&‚'&ÔÌÒÔŒhhgga=71*&‚''&%‚& TÌÒÒÌÌ¢xT**%&'&%‚%&G† ‰ ‚%% &‚''&% ‚‚%% &'&  &%‚HH"Ã"„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚?‚&&ÔÌÒÔ„ŒŒŒŒhhgga=71* &‚''&%‚&'&T¢ÒŠÌ¢xT**%&‚''&%‚%&G„ ƒ † ‚%% &‚''&% ‚‚%% &‚''&%  ƒ&&%‚HH"Ã"„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚>ÔÌÔƒgŒŒ‹ŒŒhggaa71* %&'&%‚%&'&„%TTÒ…Ì¢xT*‚%&‚''&ˆ%&&@GAA%&&  „ %&‚'&% ‚‚%% &‚''&% ! ƒ&&%H!Ã#„׬¬×¬¬ƒ¬¬¬Ž¬×¬¬¬×¬¬¬‚>ÔÔ ƒggŒ‹Œhggaa71* %&'&%‚%&'&%ˆ¨ÒÒÌ¢xT*&‚''&%„%&&G‚AAƒ%&‡  ‚ &&% ‚% &‚''&%# ‚&% ‚HHÃ$„׬¬×¬ ¬¬Ž¬×¬¬¬×¬¬¬‚>Ô ƒggŒ‹Œhggaa71*&‚''&ƒ%&‚''& ‡ÒÒÌ¢TT*%&'&%‚%GA ƒ%&ƒ' ƒ … ƒ&&% ‚% &‚''&%# „% Hà Â&„׬¬×¬ ¬¬Ž¬×¬¬¬×¬¬¬‚>ÔƒggŒ‹Œhggaa710&‚''&%‚&‚''&% ‡ÌÒÌ¢TN*%&'&% GA ƒ%&Œ''&&  & ‚% &‚''&%%  HÃÂ%&„׬¬×¬„¬¬ ¬„¬¬¬Ž¬×¬¬¬×¬¬¬‚=& Ô&„'ggŒ‚Œhg†a771 &'&%‚&‚''&% ŠÒÌ¢~N*%&‚''&%‚GA@ „%%&‚''&„    ‚‚%% &‚''&%% HÃÂ%&„׬¬×¬†¬¬¬¬„¬¬Ž¬×¬¬¬×¬¬¬‚=Ó Ô&„'ggŒ‹Œhhgga771*%&'&%‚%&'&% …ÒÒÌ~N‚%&‚''&G‡AA@@‚ ƒ% &‚''&„% ƒ   ‚‚%% &‚''&%$  ÃÂ%&„׬¬×¬…¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚<‚ÓÓÔ%&…'&gŒŒ‹Œhhgga=71*‚%&'&%‚%&'&% …ÌÒÌ~*&‚''&‡G@&‚''&%ƒ% &‚''& ƒ   ‚‚%% &‚''&%% HÃÂ%&„׬¬×¬„¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚;Ó &…'&gŒŒ‹Œhhgga=71*&‚''&ƒ%&‚''& †ÒÌ~*G„A&&'&%‚%&‚''&‚% &'&% „  ‚‚%% &'&' Hà%&„׬¬×¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚:Ó*&…'&ghŒŒŒhhggaa71*&‚''&%‚&‚''& „AG…@&&'&%‚%&'&%‚% &'&% ‚ ƒ ‚‚%% &‚''&) HÃÂ%&„׬¬×¬‚¬ƒ¬¬¬×¬¬¬×¬¬¬‚9 Ó*%&†''&ggŒŒŒŒhggaa71*&'&%‚&‚''&%  G†@&&'&%‚%&'&%%&‚''&% „ ‚ ‚‚%% &‚''&%* Hà Â%&„׬¬×¬¬„¬¬¬¬¬×¬¬¬×¬¬¬‚8 Ó*ÃggŒŒŒŒhggaa710%&'&%‚%&'&%  G‡&''&%‚%&‚''&%„%%&‚''&% ‚‚% &‚''&%-  à ‚%%&„׬¬×¬ƒ¬¬¬Ž¬×¬¬¬×¬¬¬‚6 Ó* ÃggŒƒŒŒhg‚a7‚%&'&%‚%&'&%  Gˆ&&''&‚%&‚''&%„%%&‚''&% %„% &‚''&ƒ%/  HÃ&&%‚%%&„׬¬×¬ƒ¬¬¬¬¬×¬¬¬×¬¬¬‚5 Ó* ÃggŒŒ &‚''&ƒ%&‚''&% GŠ@&&''&%…%&‚''&%ƒ% &‚''&% ‚%‚%% &‚''&‚%0  HÃÂ&% ‚%%&„׬¬×¬…¬¬¬ƒ¬¬¬×¬¬¬×¬¬¬‚4 Ó *Ãgà &‚''&%‚&‚''& GŠ@&&'&%‚%&‚''&‚% &‚''&‚%‚%% &‚''&‚%0  HÂÂ'&% ‚%%&„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚3 Ó *#Ã&'&%‚&‚''&% Gˆ&&'&%‚%&'&%‚% &'&%‚‚%% &‚''&%4 ‚ HÄ&&''& ‚%%&„׬¬×¬¬×¬¬¬×¬¬¬‚2 Ó *Â#Ã%&'&%‚&'&% G‰&&'&%‚%&'&%‚%&‚''&% ‚%% &‚''&7  HÃ&‚''& %&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚1 Ó *Ã#„Ã&'&‚%&'&% ƒGGAŠ&&''&%‚%&'&%%&‚''&% %‚%% &'&9  ‚HH à &‚''&% %&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚0 Ó *%à #„Â&‚''&ƒ%&'&% @‹&&''&‚%&‚''&%„%%&‚''&% ‚%&ƒ%% &‚''&: … HHà &‚''&% %&ƒ×¬¬׬׬¬¬×¬¬¬‚/ Ó *&à #…Ã&‚''&%‚&‚''&…&‚''&%…%&‚''&%ƒ% &‚''&% ƒ%&&% &‚''&; ‚HHÃ%&‚''&% %&׬‹×¬¬¬×¬¬¬‚. Ó *„&&Ã#G#„ Ã&'&%‚&‚''&%…&'&%‚%&‚''&ƒ% &‚''&% ‚‚%%& &‚''&= ‚%%&‚''&%%&ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚- Ó *„&&%Ã#G#ƒ Ã&'&%‚&'&%„%&'&%‚%&‚''&%‚% &‚''&‚‚%%& &‚''&> ‚%%&‚''&%%&„׬¬×Œ¬×¬¬¬×¬¬¬‚, Ó *&%Ã#G#ƒ Ã&'&‚%&'&%„%&‚''&%‚%&'&%‚% &'&%‚‚%%&&‚''&? ‚%%&‚''&%%&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚+ Ó *&Ã#G#„ Ã&''&ƒ%&'&%„%&‚''&%‚%&'&%%&‚''&%‚‚%%&&‚''&A ‚%%&‚''&%%&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚* Ó *&Â## G#„ Â''&%‚&‚''&ƒ&‚''&‚%&‚''&%%&‚''&% % & &„''&&A ‚%% &'&%%&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚) Ó *&Â## G#† Ã&%‚&‚''&ƒ%&'&%…%&‚''&%„%%&‚''&% % &'&„''&A ‚%% &'&%%&„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚* Ó *&Ã# G#† Ã&%‚&'&%%&'&%‚%&‚''&%ƒ% &‚''&% % &‚''…&&''&B % &‚''&%%&„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚* Ó *&Â## G#† Ã&‚%&'&%„%&'&%‚%&‚''&ƒ% &‚''&% ‚% &ƒ''& ƒ''&B % &‚''&%%&„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚*Ó *'&Â## G#† Ã&%ƒ%&'&%„%&‚''&%‚%&'&%‚% &‚''&‚‚%% &'& ‚' ‚##G& % &‚''&%‚%%&„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚+Ó *„&'&&Ã# G#†Ã&%‚&‚''&%ƒ&‚''&‚%&'&%‚% &'&%‚‚%% &‚''& # G" % &‚''&% ‚%%&„׬¬×¬¬ƒ¬¬¬Ž¬×¬¬¬×¬¬¬‚+Ó *…&''&&Â## G#†Ã&%‚&‚''&ƒ&‚''&‚%&‚''&%%&‚''&%‚‚%% &‚''&   # G# % &‚''& ‚%%&„׬¬×¬ ¬¬Ž¬×¬¬¬×¬¬¬‚,‚ÓÓ *&ƒ'&&Â## G#„Ã&%‚&‚''&%ƒ%&'&%…%&‚''&%„%%&‚''&% % &‚''& ‚  # G‚## ‚%%&‚''& ‚%%&„׬¬×¬ ¬¬Ž¬×¬¬¬×¬¬¬‚,Ó *&ƒ'&&Â## G#„Ã&‚%&'&%„%&'&%‚%&‚''&%„%%&‚''&% % &‚''&‚% # G# ‚%%&‚''&% ‚%%&„׬¬×¬„¬¬ ¬„¬¬¬Ž¬×¬¬¬×¬¬¬‚$†Ì¨¢xT**&‚'&Ã# G#„Â&%ƒ%&'&%„%&‚''&%‚%&‚''&ƒ% &‚''&% % &‚''&ƒ% # G# ‚%%&‚''&% %&„׬¬×¬†¬¬¬¬„¬¬Ž¬×¬¬¬×¬¬¬‚#‡Į̀¢xT* „**&ƒ''&Â## G#…Â&%ƒ%&‚''&%„%&‚''&%‚%&'&%‚% &‚''&% % &‚''&% # G#‚ ‚%%&‚''&% %&„׬¬×¬…¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚#ˆĮ̀¢xT** &‚'&Â## G#„Â&%‚&‚''&ƒ&‚''&‚%&'&%‚% &‚''&‚% &‚''&% # G#‚ ‚%%&‚''&% %&„׬¬×¬„¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚#ˆĮ̀¢xT** &‚'&Â## G#„Ã%‚&‚''&%ƒ%&‚''&%‚%&‚''&%‚% &'&%‚‚%% &'& # G#ƒ ‚%%&‚''&%%&„׬¬×¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚#Ì…¢xT** &'Â## G#„Â%&'&%%&'&%…%&‚''&%%&‚''&%‚‚%% &‚''&%  #G#ƒ ‚ ‚%%&‚''&%%&„׬¬×¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚#Ì…¢~T** &‚''Â## G#‚Ã%&'&%„%&'&%‚%&‚''&%„%%&‚''&%‚‚%% &‚''&%  #G#‚ ƒ ‚%% &'&%%&„׬¬×¬¬‚ ¬Ž¬×¬¬¬×¬¬¬‚#Ì…¢~T** &'Â## G#‡Ãƒ%&‚''&%„%&‚''&%‚%&‚''&ƒ% &‚''&% % &‚''&%  #ƒ  % &'&%%&„׬¬×¬ƒ¬ ¬Ž¬×¬¬¬×¬¬¬‚#Ì…¢~T** &'Â## G#‚Â&‚''&ƒ&‚''&%‚%&'&ƒ% &‚''&% % &‚''&%  #ƒ  % &'&%%&„׬¬×¬ƒ¬ ¬Ž¬×¬¬¬×¬¬¬‚#Ì…¢~TN* &Â## G#‚Â&‚''&%ƒ&‚''&‚%&'&%‚% &‚''&% % &‚''&%  #ƒ  % &‚''&%%&„׬¬×¬…¬¬ ¬Ž¬×¬¬¬×¬¬¬‚#Ì…¢~TN* &'Â##G#‚Â%&'&%ƒ%&'&%‚%&‚''&%‚% &‚''&‚% &‚''&% ‚ #‚ % &‚''&%%&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚#Ì…¢~TN* &'Ã#G#‚Ã%&'&%„%&'&%…%&‚''&%% &'&%‚‚%% &‚''&% ƒ # ‚%%&‚''&%%&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚#Ì…¢~TN* &'Ã#G#‚Ã%&'&%„%&'&%‚%&‚''&%%&‚''&%‚‚%% &'& ‚   #‚# %‚%%&‚''&% %&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚#Ì…¢~xN* &'à #…Â&‚''&%„%&‚''&%‚%&‚''&%„%%&‚''&%‚‚%% &‚''&% ‚ ‚  ##‡## ƒ&&%  ‚%%&‚''& %&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚#Ì…¢~xN* &' à #‚Â&‚''&ƒ&‚''&%‚%&‚''&ƒ% &‚''&% % &‚''&% ‚  „###ƒ &%  ‚%%&‚''& ‚%% &ƒ×¬¬׬׬¬¬×¬¬¬‚#Ì…¢~xN*&‚'' à #‚Â%&'&%ƒ%&‚''&‚%&'&%‚% &‚''&% % &‚''&%   #ƒ &%  ‚%%&‚''&% ‚%% &׬‹×¬¬¬×¬¬¬‚#Ì…¢~xN*&‚'&!à #‚Â%&'&%%&'&%‚%&'&%‚% &‚''&% % &‚''&% ‚ƒ%%&  #‚ &%  ‚%%&‚''&% ‚%% &ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚#Ì…¢~xT*&‚'&"Ã#‚Ã%&'&%„%&'&%…%&‚''&%‚% &'&% &‚''&% ‚†%%&&  #&%  ‚%%&‚''&% ‚%% &„׬¬×Œ¬×¬¬¬×¬¬¬‚#Ì…¢~xT*&'#Ã#‚Â&‚''&%„%&‚''&%‚%&‚''&%% &'&%‚% &‚''&% ‚‚%% &  #&  ‚%%&‚''&% ‚%% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚#ˆ¨ÌÌ¢~xT*&‚''$ÄÂ&‚''&ƒ&‚''&%‚%&‚''&%„%%&‚''&%‚‚%% &‚''&% ‚‚%% &ƒ''  #&  ‚%%&‚''&% % &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚#ˆ¨ÌÌ¢¢xT*&‚'&&ÃÂ%&‚''&%ƒ&‚''&‚%&‚''&„%%&‚''&%‚‚%% &'& ‚‚%% &‚''& #&%  % &'&%% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚#ˆ¢ÌÌ¢¢xT*&‚'&LÂ%&'&%ƒ%&‚''&‚%&'&%ƒ% &‚''&% ‚%% &‚''& ‚‚%% &‚''& #ƒ&%  % &'&%% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚#ˆ¢ÌÌ¢¢xT*&‚'&Là ƒ%&'&%„%&'&%‚%&'&%‚% &‚''&% % &‚''&% ‚% &‚''&%‚#„%% &'&%% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚$‡ÌÌ¢¢xT*&ƒ''&Là ‚&‚''&%„%&'&%…%&‚''&%‚% &‚''&% % &‚''&% % &‚''&%‚ #G#ƒ% &‚''&%% &„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚$‡Į̀¢xT*&ƒ''&Là ‚&‚''&„%&‚''&%„%&‚''&%% &'&% &‚''&% ‚% &‚''& ‚ #G#ƒ‚%%&‚''&%% &„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚$ˆĮ̀¢xT**&ƒ'&&KÂ&‚''&%ƒ&‚''&%‚%&‚''&%% &'&‚% &‚''&% ‚‚%% &‚''&% ‚ # G #ƒ ‚%%&‚''&%% &„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚$ˆĮ̀¢xT**&ƒ'&&KÂ%&'&%ƒ%&‚''&‚%&‚''&„%%&‚''&%‚‚%% &‚''&% ‚‚%% &‚''&%  # G #‚ ‚%%&‚''&%% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚$ˆĮ̀¢xT**&‚''&IÃ%&'&%%&'&%‚%&'&ƒ% &‚''&%‚‚%% &‚''&% ‚‚%% &‚''&%  #G #ƒ ‚%%&‚''&%% &„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚$ˆĮ̀¢xT**&‚''&IÂ&‚''&%„%&'&%‚%&'&%ƒ% &‚''&%‚‚%% &'& ‚‚%% &‚''&%  #G #ƒ ‚%%&‚''& % &„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚$ˆĮ̀¢xT**&'&IÂ&‚''&„%&'&%…%&‚''&%‚% &‚''&% % &‚''& ‚‚%% &‚''&%  #G # ‚%%&‚''& % &„׬¬× ¬‚ ¬Ž¬×¬¬¬×¬¬¬‚$ˆĮ̀¢xT**&'&GÂ&‚''&ƒ&‚''&%„&‚''&%‚% &‚''&% % &‚''&% ‚‚%% &‚''&%  #G #ƒ ‚%%&‚''&% % &„׬¬× ¬‚ ¬Ž¬×¬¬¬×¬¬¬‚$ˆĮ̀¢~T**&'&GÂ%&'&%ƒ&‚''&%‚%&‚''&%% &'&% &‚''&% ‚% &'&%  #G# ‚%%&‚''&% % &„׬¬× ¬ƒ¬¬ ¬Ž¬×¬¬¬×¬¬¬‚$‚ÌÌN&‚''&FÃ%&'&%ƒ%&‚''&‚%&‚''&%% &'&% &‚''&% % &‚''&% #G#„ %&‚''&% ‚%% &„׬¬×¬¬ ¬Ž¬×¬¬¬×¬¬¬‚$ N‚&'&EÂ&‚''&%„%&'&%‚%&'&„%%&‚''&%‚% &‚''&% ‚‚%% &‚''&  #G#„ %&‚''&% ‚%% &„׬¬×¬¬ ¬Ž¬×¬¬¬×¬¬¬‚$ N‚&'&EÂ&‚''&%„%&'&%‚%&'&%ƒ% &‚''&%‚‚%% &‚''&% ‚‚%% &‚''& ‚#G#† % &'&% ‚%% &„׬¬×¬„¬¬ ¬Ž¬×¬¬¬×¬¬¬‚'N…&'&DÂ&‚''&„%&‚''&%…%&‚''&%‚% &‚''&%‚‚%% &‚''&% ‚‚%% &‚''&% ‚#G#ƒ % &'&% ‚%% &„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚(‡##&‚''&‚%CÂ%&'&%ƒ&‚''&%„&‚''&%‚% &‚''&% ‚%% &‚''& ‚‚%% &‚''&% ‚ #G#ƒ % &'&%% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚&#ˆ&&'&‚%BÃ%&'&%ƒ%&‚''&%‚%&‚''&%‚% &‚''&% % &‚''& ‚‚%% &‚''&% ƒ#G#ƒ ‚%%&'&%% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚%#‡&&'&‚%AÂ&'&%%&‚''&‚%&‚''&%% &'&% &‚''&% ‚‚%% &‚''&% ƒ#G#ƒ ‚%%&‚''&%% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚$ #†&'&@Â&‚''&%„%&'&%‚%&'&% &'&% &‚''&% ‚‚%% &‚''&% „#G#‚ ‚%%&‚''&%% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚#G #…''&>Â&‚''&„%&'&%‚%&'&%„%%&‚''&%‚% &‚''&% % &‚''&% „#G#ƒ ‚%%&‚''&%% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚#G#…'&%=Ã%‚%&'&%ƒ&‚''&%…%&‚''&%ƒ% &‚''&%‚‚%% &‚''&% ‚% &‚''&% #G#ƒ ‚%%&‚''&%% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚"G#ƒ&%;Â&%ƒ%&'&%ƒ&‚''&%„&‚''&%‚% &‚''&%‚‚%% &‚''&% ‚‚%% &‚''&% #G#‚ ‚%%&‚''&%% &ƒ×¬¬׬׬¬¬×¬¬¬‚"G#‚&%9Ã&&%‚&'&%ƒ%&‚''&%‚%&‚''&%‚% &‚''&%‚‚%% &'&% ‚‚%% &‚''& #G#‚ ‚%%&‚''&% &׬‹×¬¬¬×¬¬¬‚#‚##G#‚&7Ã&‚&‚''&%„%&'&‚%&‚''&%% &‚''&% ‚%% &‚''& ‚‚%% &‚''&% ‚#G#‚ ‚%%&‚''& % &„׬¬׌¬×¬¬¬×¬¬¬‚%ƒ##G#&% 5Ã&‚&‚''&„%&'&%‚%&‚''&% &'&% &‚''& ‚‚%% &‚''&% ‚#G#‚ %&‚''&% % &…׬¬¬ ¬×¬×¬¬¬×¬¬¬‚*#G#&% 3Ã&%‚%&‚''&%„%&'&%‚%&'&„%% &'&% &‚''&% ‚‚%% &‚''&% ‚#G#ƒ%&‚''&% % &…׬¬ ¬ ¬×¬×¬¬¬×¬¬¬‚,ƒ&&#G‚#&% 1Ã&%ƒ%&'&%ƒ&‚''&%…%&'&%ƒ% &‚''&%% &‚''&% ‚‚%% &‚''&% ‚‚#G#ƒ%&‚''&% % &…׬¬ ¬ ¬Ž×¬×¬¬¬×¬¬¬‚,&…'&&G& 0Ã&%ƒ%&'&%ƒ&‚''&%„&‚''&%ƒ% &‚''&%‚% &‚''&% ‚% &‚''&% ‚‚#G#ƒ%&‚''&% % &…׬¬ ¬ ¬¬×¬×¬¬¬×¬¬¬‚+&‚''&%-Ã&‚&‚''&%%&‚''&‚%&‚''&%‚% &‚''&%‚‚%% &‚''&% % &‚''&%  ƒ%#G# % &'&% ‚%% &…׬¬ ¬ ¬¬¬×¬×¬¬¬×¬¬¬‚+&'&%*Â''&%‚&‚''&%„%&'&‚%&‚''&%‚% &‚''&%‚‚%% &‚''&% ‚% &‚''&%  „%%#G# ‚%%&'&% ‚%% &…׬¬¬‚ ¬¬¬×¬×¬¬¬×¬¬¬‚+&'&%'Ã&&'&%‚%&‚''&„%&'&%‚%&‚''&%% &‚''&% ‚%% &'&% ‚‚%% &‚''&%  …%%&#G# ‚%%&'&% ‚%% &…׬¬¬ ¬¬¬×¬×¬¬¬×¬¬¬‚+&'&&"Ã&'&%ƒ%&'&%ƒ&‚''&%‚%&'&% &'&% % &‚''& ‚‚%% &‚''&  †%%&&#G#ƒ ‚%%&‚''&%‚%% &…׬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚+&‚''&%&Ã&‚''&%ƒ%&'&%ƒ&‚''&%…%&'&%„%% &'&% &‚''& ‚‚%% &‚''& ‚%%&ƒ#G# ‚%%&‚''&%‚%% &…׬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚*&‚''&%&'Â&‚''&‚&‚''&%ƒ%&‚''&%„&‚''&%ƒ% &‚''&%% &‚''&% ‚‚%% &‚''&% ‚‚%%&‚ # G#ƒ ‚%%&‚''&%% &…׬¬¬¬¬×¬×¬¬¬×¬¬¬‚*&'&%&‚''&Ã%&‚''&%‚&‚''&%„%&‚''&‚%&‚''&%‚% &‚''&%‚% &‚''&% ‚‚%% &‚''&% ‚‚%%&‚ #G#ƒ ‚%%&‚''&%% &ˆ×¬¬¬¬¬ ¬¬×¬×¬¬¬×¬¬¬‚*&'&%%&‚''&Ã%&'&%‚%&‚''&„%&'&%‚%&‚''&%‚% &‚''&%‚‚%% &‚''&% ‚‚%% &‚''&% ‚‚%% &‚#ƒ ‚%%&‚''&%% &‡×¬¬¬¬ƒ¬ ¬¬×¬×¬¬¬×¬¬¬‚*&‚''&&'&%&'&%‚%&'&%„%&'&%‚%&‚''&%‚% &‚''&%‚‚%% &‚''&% % &‚''&% ‚‚%% &ƒ#‚ ‚%%&‚''&%% &‡×¬¬¬¬ƒ¬ ¬¬×¬×¬¬¬×¬¬¬‚)&‚''&%&'&%&‚''&%ƒ%&'&%ƒ&‚''&%‚%&'&% &‚''&% ‚%% &‚''&% ‚% &‚''&% ‚‚%% &#„ %&‚''&% &׬¬¬¬¬¬ ¬¬×¬×¬¬¬×¬¬¬‚)&'&%&‚''&&‚''&‚&‚''&%ƒ&‚''&%…%&'&%% &'&% ‚%% &'&% ‚‚%% &‚''&%  ‚%% &'‚ %&‚''&% &ˆ×¬¬¬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚)&'&%&‚''&%%&‚''&%‚&‚''&%%&‚''&%„&‚''&%„%%&‚''&% &‚''& ‚‚%% &‚''&%  ‚%% &‚''&%&‚''&% % &…׬¬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚)&'&&'&%‚%&'&%‚%&‚''&„%&'&‚%&‚''&%ƒ% &‚''&%% &‚''& ‚‚%% &‚''&  ‚%% &‚''&%%&‚''&% % &…׬¬¬¬‰¬¬¬¬¬×¬×¬¬¬×¬¬¬‚(&‚''&%&'&%&'&%‚%&'&%„%&'&%‚%&‚''&%‚% &‚''&%‚% &‚''&% ‚‚%% &‚''&  ‚%% &‚''&%  %&‚''&% % &…׬¬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚(&'&%&'&%&‚''&%ƒ%&'&%„%&'&%‚%&‚''&%‚% &‚''&%‚% &‚''&% ‚‚%% &‚''&% % &‚''&%  ‚%%&'&% % &…׬¬¬‚¬‰¬¬¬¬¬×¬×¬¬¬×¬¬¬‚(&'&%&‚''&&‚''&‚&'&%ƒ&‚''&%‚%&'&% &‚''&%‚‚%% &‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&  ‚%%&'&% % &…׬¬¬¬‰¬¬¬¬¬×¬×¬¬¬×¬¬¬‚(&'&%&‚''&%%&‚''&%‚&‚''&%ƒ%&‚''&%…%&'&% &‚''&%‚‚%% &‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&  ‚%%&'&% % &…׬¬¬¬‚¬„¬¬¬×¬×¬¬¬×¬¬¬‚'&‚''&%&'&%&'&%‚%&‚''&„%&‚''&%„&‚''&%„%% &'&% ‚%% &‚''&% % &‚''&% ‚‚%% &‚''&%  ‚%%&‚''&% % &…׬¬¬ˆ¬¬¬¬ ¬×¬×¬¬¬×¬¬¬‚'&'&%&'&%&'&%‚%&'&„%&'&‚%&‚''&%ƒ% &‚''&% &'&% ‚% &‚''&% ‚‚%% &‚''&%  ‚%%&‚''&% ‚%% &…׬¬ ¬‚ ¬×¬×¬¬¬×¬¬¬‚'&'&%&‚''&%&‚''&%ƒ%&'&%„%&'&%‚%&‚''&%ƒ% &‚''&%% &‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&%  ‚%%&‚''&%‚%% &…׬¬¬×¬×¬¬¬×¬¬¬‚'&'&%&‚''&&‚''&‚&'&%ƒ&‚''&%‚%&‚''&%‚% &‚''&%% &‚''& ‚‚%% &‚''&%  ‚%% &‚''&%  ‚%%&‚''&%‚%% &ƒ×¬¬׬׬¬¬×¬¬¬‚'&‚''&&'&%%&'&%‚&‚''&%ƒ&‚''&%‚%&‚''&%‚% &‚''&%‚% &‚''&% ‚‚%% &‚''&%  ‚%% &'&%  ‚%%&‚''&%‚%% &ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚&&‚''&%&'&%&'&%‚&‚''&%ƒ%&‚''&%…%&'&% &‚''&%‚‚%% &‚''&% ‚‚%% &‚''&  ‚%% &'&%%&‚''&%% &׬‹×¬¬¬×¬¬¬‚&&'&%&'&%&'&%‚%&‚''&„%&‚''&„&‚''&%% &‚''&%‚‚%% &‚''&% ‚‚%% &‚''&  ‚%% &‚''&%%&‚''&%% &ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚&&'&%&‚''&&‚''&%ƒ%&'&%„%&'&‚%&‚''&%„%% &'&% ‚%% &‚''&% ‚‚%% &‚''&%  ‚%% &‚''&%%&‚''&% &„׬¬×Œ¬×¬¬¬×¬¬¬‚&&‚''&%&‚''&%%&‚''&‚&'&%„%&'&%‚%&‚''&%ƒ% &‚''&‚%% &‚''&% % &‚''&% ‚‚%% &‚''&%  %&‚''&% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚%&‚''&%&'&%%&'&%‚&‚''&%ƒ&‚''&%‚%&‚''&%‚% &‚''&%% &'&% ‚% &‚''&% ‚‚%% &‚''&%  %&‚''&% &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚%&'&%&'&%&'&%‚&‚''&%ƒ%&‚''&%‚%&‚''&%‚% &‚''&%% &‚''&% ‚% &‚''&% ‚‚%% &‚''&  ‚%%&‚''&% % &„׬¬×¬‚¬Ž¬×¬¬¬×¬¬¬‚%&'&%&‚''&%&'&%‚%&‚''&%&‚''&%…%&'&% &‚''&%‚% &‚''& ‚‚%% &'&% ‚‚%% &‚''&  ‚%%&'&% % &„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚%&'&&‚''&&‚''&%ƒ%&'&%„%&'&„&‚''&%% &‚''&%‚% &‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&%  ‚%%&'&% % &„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚$&‚''&%&'&%%&‚''&‚&'&%„%&'&%‚%&‚''&%% &‚''&%‚‚%% &‚''&% ‚‚%% &‚''&%  ‚%% &‚''&%  ‚%%&'&% % &„׬¬× ¬¬Ž¬×¬¬¬×¬¬¬‚$&'&%&'&%%&'&%‚&‚''&%ƒ&‚''&%‚%&‚''&%„%% &'&%‚‚%% &‚''&% ‚‚%% &‚''&  ‚%% &‚''&%  ‚%%&'&% % &„׬¬× ¬¬Ž¬×¬¬¬×¬¬¬‚$&'&%&'&%&'&%‚&‚''&%ƒ&‚''&%‚%&‚''&%ƒ% &‚''&‚%% &‚''&% ‚‚%% &‚''&  ‚%% &'&%  ‚%%&‚''&% % &„׬¬×¬‚¬ ¬Ž¬×¬¬¬×¬¬¬‚$&'&%&‚''&&‚''&%‚%&‚''&ƒ%&‚''&%‚%&‚''&%‚% &‚''&%% &‚''&% ‚‚%% &‚''&%  ‚%% &'&%  ‚%%&‚''&% % &„׬¬×¬¬ ¬Ž¬×¬¬¬×¬¬¬‚#&‚''&%&‚''&%&‚''&%ƒ%&'&„%&‚''&%…%&'&‚% &‚''&%% &'&% % &‚''&%  ‚%% &‚''&%‚%%&‚''&% % &„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚#&‚''&%&'&%%&‚''&‚&'&%„%&'&…%&'&% &‚''&%% &‚''&% ‚% &‚''&% ‚‚%% &‚''&%%&‚''&%‚%% &„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚#&'&%&'&%‚%&'&%‚&‚''&%„%&'&%‚%&‚''&%% &‚''&%‚% &‚''& ‚‚%% &‚''&% ‚‚%% &‚''&%%&‚''&%‚%% &„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚#&'&%&‚''&%&'&%‚&‚''&%ƒ&‚''&%‚%&‚''&%„%% &‚''&%‚‚%% &‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&%  %&‚''&%‚%% &„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚"&‚''&&‚''&&‚''&%‚%&‚''&%ƒ%&‚''&%‚%&‚''&%„%% &'&%‚‚%% &‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&  %&‚''&%‚%% &„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚"&‚''&%&'&%&‚''&%ƒ%&'&%&‚''&%‚%&‚''&%ƒ% &‚''&‚%% &‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&  %&‚''&‚%% &„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚"&'&%&'&%%&‚''&ƒ%&'&%„%&‚''&%…%&'&%‚% &‚''&%‚%% &‚''&% ‚‚%% &‚''&%  ‚%% &‚''&%  ‚%%&‚''&% &„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚"&'&%&'&%&'&%‚&'&%„%&'&…%&'&‚% &‚''&%% &‚''&% ‚‚%% &‚''&  ‚%% &‚''&%  ‚%%&‚''&% &„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚"&‚''&&‚''&%&'&%‚&‚''&%ƒ&'&%‚%&‚''&%% &‚''&%% &‚''&% ‚%% &‚''&  ‚%% &‚''&%  ‚%%&'&%% &„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚!&‚''&%%&‚''&&‚''&%‚%&‚''&%ƒ&‚''&%‚%&‚''&%% &‚''&%‚% &‚''&% ‚% &‚''&%  ‚%% &'&%  ‚%%&'&% % &„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚!&'&%&'&%&‚''&%ƒ%&‚''&ƒ%&‚''&%‚%&‚''&%„%% &‚''&%‚% &‚''& ‚% &‚''&%  ‚%% &'&%  ‚%%&'&% % &„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚!&'&%&'&%%&‚''&ƒ%&'&%„%&‚''&%‚%&‚''&%ƒ% &'&%‚‚%% &‚''&% ‚‚%% &‚''&% ‚% &‚''&%  ‚%%&'&% % &„׬¬×¬‚¬Ž¬×¬¬¬×¬¬¬‚!&'&%&'&%&'&%‚&'&%„%&'&‚%&‚''&%‚% &‚''&‚‚%% &‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&%  ‚%%&‚''&% % &„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚ &‚''&%&‚''&&'&%‚&‚''&%„%&'&…%&'&‚% &‚''&%‚%% &‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&%‚%%&‚''&% % &„׬¬×¬Ž¬×¬¬¬×¬¬¬‚ &'&%&‚''&%&‚''&%‚%&‚''&%ƒ&‚''&%‚%&‚''&%% &‚''&%% &‚''&% ‚‚%% &‚''&% ‚‚%% &‚''&%%&‚''&% % &„׬¬×¬Ž¬×¬¬¬×¬¬¬m¬׬׬¬¬×¬¬¬n¬Š×¬¬¬×¬¬)Š¬×¬¬¬×¬¬+‡×¬¬¬×¬n¬‚׬¬?¬„¬×¬n¬‚׬¬?¬„¬×¬n¬‚׬¬?¬„¬×¬E¬E¬E¬‚׬¬?¬„¬×¬×‚ׂ׬ׂׂ׬ׂׂ׬‚׬¬?¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬¬?¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬¬?¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬‚×× ¬ƒ×¬ƒ×¬‚¬×¬ ׬ƒ×¬ƒ×¬‚¬‚׬¬?¬„¬×¬×¬ƒ×¬ƒ×¬ ¬‚¬×¬ˆ¬×¬¬×׬ƒ× ¬ ׄ¬× ¬ l„¬¬¬×¬ ‚¬×¬ƒ× ¬¬ƒ×¬‚ ¬‚¬‚׬¬?¬„¬×¬×¬ ¬ƒ×¬ ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š×¬×¬¬×¬ƒ× ¬ …׬׬l×…l¬¬¬×¬ ׊׬׬¬×¬…##¬ƒ×¬‚ ¬‚¬‚׬¬?¬„¬×¬×¬ ׬ƒ×¬‚ ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š×¬×׬׬ƒ× ¬ƒ×¬׆׬׬ˆl×l†×l¬¬¬ƒ×¬¬ ˆ×׬¬×¬…##¬ƒ×¬‚¬l¬‚¬‚׬¬?¬„¬×¬×¬ ׬ƒ×¬ƒ× ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š¬××׬׬ƒ×¬ׇׂ¬×¬×¬‡l×…l¬¬¬…׬¬×¬‚׬†×¬¬× ¬‚ ¬ƒ×¬¬‚¬l¬‚¬‚׬¬?¬„¬×¬×¬ ׬ƒ×¬„#× ¬ƒ×¬ƒ ‚¬‚¬×¬…××׬ƒ×¬‚׬׆׬׬ˆl×l×l„¬¬¬„׬¬×‹××׬׬׬„#¬ƒ×¬…¬ ¬‚¬‚׬¬?¬„¬×¬×¬ ׬ƒ×¬…×#× †¬¬×¬ ¬‚¬× ¬‚׬ƒ×¬ƒ×¬ׇׂ¬×¬×¬‡lׇl×l¬¬¬ƒ×¬¬ ˆ¬×׬׬„#¬ƒ×¬¬ƒll¬‚¬‚׬¬?¬„¬×¬×¬ ׬ƒ×¬…#×#× …¬¬×¬ƒƒ¬‚¬× ¬¬ƒ×¬‚×׬×׬××׬׬‡lׂll¬‚¬…׬¬¬ ׊¬¬×¬×¬„#¬ƒ×¬„¬ll¬‚¬‚׬¬?¬„¬×¬×¬ ׬ƒ×¬‹×#×#×#×#׬ƒ×¬ƒ¬ƒ¬‚¬× ¬ƒ×׬ƒ×¬ƒ×¬ׅ׬…¬¬×¬†l¬‚¬×¬ Š¬¬×¬×¬…##¬ƒ×¬¬‚ll¬‚¬‚׬¬?¬„¬×¬×¬ ׬ƒ×¬‹#×#×#×#×#¬ƒ×¬ƒ¬ƒ¬‚¬× ¬×¬ƒ×¬‚×׬ƒ×¬ƒ×¬Ž¬‚¬×¬„¬×¬׊×׬¬×¬ˆ¬##¬ƒ×¬¬ƒll¬‚¬‚׬¬?¬„¬×¬×¬ ׬ƒ×¬„×#׬ƒ×¬ƒ¬ƒ¬‚¬× ¬…××׬ƒ×¬‡×¬×׬ׂ¬ƒ×¬ƒƒ¬‚¬×¬‚׬¬ƒ×¬Š#¬##¬ƒ×¬Ž¬ll¬¬ll¬¬¬‚׬¬?¬„¬×¬×¬×¬ƒ×¬¬…¬¬×¬ƒ¬ƒ¬‚¬×¬†¬×¬ƒ×¬…׬¬ƒ×¬„¬„¬‚¬×¬„¬×¬ׂ׬ƒ×¬Š#¬¬#¬ƒ×¬…¬¬ll¬l„¬¬¬‚׬¬?¬„¬×¬×¬׃׬ƒ×¬‡¬¬×¬ƒ¬¬‚¬×¬†×¬¬×¬ƒ×¬‚׬ƒ× ¬ƒ×¬Ž##¬‚¬×¬‚ׄ¬¬×¬ƒ×¬ƒ##„##¬ƒ×¬¬ƒll¬l„¬¬¬‚׬¬?¬„¬×¬×¬ׂ¬ƒ× ¬¬ˆ¬¬¬×¬ƒ¬ƒ¬¬‚¬×¬†×¬¬×¬ƒ×¬ׂ ¬ƒ×¬‚##¬‚¬×¬‚¬ׂ׬ƒ×¬#‚¬ƒ×¬‚¬Œll¬¬ll¬¬¬‚׬¬?¬„¬×¬×¬¬ƒ× ¬¬ƒ×¬¬‚¬×¬¬¬ƒ×¬ ¬ƒ×¬¬‚¬×¬ ¬ƒ×¬¬ƒ×¬¬l¬‚¬‚׬¬?¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬¬?¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬¬?¬„¬×¬××׬××׬××׬‚׬¬?¬„¬×¬n¬‚׬¬?¬„¬×¬n¬‚׬¬?¬„¬×¬n¬‚׬¬?¬†¬×¬¬××××,׈¬¬¬×¬¬,†¬¬¬×¬¬¬¬0¬„¬×¬¬¬¬0¬„¬×¬¬¬¬0¬„¬×¬¬¬¬0¬„¬×¬¬¬¬@¬¬ ¬¬¬2¬"¬ ¬¬<¬„¬×¬b¬"¬k¬¬<¬„¬× ¬¬…¬¬¬¬¬…¬¬¬¬¬ƒ¬¬¬¬¬¬…¬¬¬¬¬¬…¬¬¬ƒ¬¬¬ ¬¬‡¬¬¬¬¬ƒ¬¬¬‚¬¬¬‚¬¬„¬¬¬‚¬„¬¬¬‚¬¬ˆ¬¬¬¬¬¬ƒ¬¬¬¬„¬¬¬…¬¬¬¬ˆ¬¬¬¬¬¬¬„¬¬¬¬9¬„¬× ¬¬…¬¬¬ ¬¬¬…¬¬¬¬ƒ¬¬„¬¬¬¬¬„¬¬¬…¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬‰¬¬¬¬¬ ¬Š¬¬¬¬¬¬¬ƒ¬¬…¬¬¬†¬¬¬ ¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬¬ƒ¬¬„¬¬¬„¬¬¬¬…¬¬¬‰¬¬¬¬¬ ¬¬„¬¬¬…¬¬¬¬8¬„¬× ¬¬…¬¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬„¬¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬¬ƒ¬¬…¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬…¬¬¬ƒ¬¬¬¬„¬¬¬ƒ¬¬¬8¬„¬× ¬¬„¬¬ ¬¬¬…¬¬¬ƒ¬¬‚¬ˆ¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬¬†¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬‡¬¬¬¬‚¬¬…¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬‚¬Š¬¬¬¬¬¬¬…¬¬¬ƒ¬¬¬¬ƒ¬¬„¬¬¬¬8¬„¬× ¬‡¬¬¬¬¬ ¬¬¬…¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬¬¬…¬¬¬ƒ¬¬ˆ¬¬¬¬¬‡¬¬¬ ¬¬¬ˆ¬¬¬¬¬‰¬¬¬¬¬ ¬‡¬¬¬¬‹¬¬¬¬¬¬†¬¬¬ ¬¬ƒ¬¬¬¬¬¬¬¬¬¬ ¬¬†¬¬¬¬Š¬¬¬¬¬¬ƒ¬¬¬‘¬¬¬¬¬¬¬¬¬ ¬ƒ¬¬¬…¬¬¬¬8¬„¬× ¬¬…¬¬¬¬¬…¬¬ ¬¬†¬¬¬¬‰¬¬¬¬¬¬ ¬¬…¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬¬‡¬¬¬¬ˆ¬¬¬¬¬‚¬‚¬Š¬¬¬¬¬¬¬‚¬¬ƒ¬¬¬¬¬¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬¬9¬„¬× ¬¬¬ ¬¬¬¬¬ ¬ ¬¬ ¬¬¬‚¬‚'¬ ¬¬¬¬¬¬¬¬¬¬¬>¬„¬× ¬¬¬ ¬¬ ¬¬¬¬¬ ¬¬ ¬¬¬¬'¬ ¬¬¬¬¬¬¬¬¬¬¬>¬„¬× ¬„¬¬¬¬ƒ¬¬¬ƒ¬¬ ¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬>¬„¬×¬¬¬¬0¬„¬×¬¬¬¬0¬„¬×¬¬¬¬0¬„¬×¬¬¬¬0¬„¬×¬¬¬¬0¬†¬×¬¬llll,lˆ¬¬¬×¬¬llll,lˆ¬¬¬×¬¬llllll ‚llŠll¬¬¬×¬¬l‚#l×lllLlׂׄll׋ll¬¬¬×¬¬l‡##ll‚××lllKl× ¬ƒ× ¬…ll× ¬Œll¬¬¬×¬¬l‚#„ll×l„××llׂllׂll×lׂll׉l××ll××ll×lׄll××l׈ll××ll××l‚××l×l×l׊ll××ll××ll×l‚××l„××ll×l†××ll××lׄll××ll3l׬¬…׬¬ ‡¬¬ll× ¬Œll¬¬¬×¬¬l…ll#llË××l××l××ll××ll××l××ll××l××ll××l××ll××l××ll××l××ll××l××ll××l××ll××l××ll××l××l‚××l‚××l£××ll××ll××ll××l××ll××l××ll××l××ll××l‚××lœ××l××ll××ll××ll××ll××ll××l××ll3l׬¬†×¬¬¬ˆ¬¬ll׬‚¬¬¬ll¬¬¬×¬¬lƒllƒll l˜××ll××ll××ll××l××ll××l××l—××ll××l××ll××l××ll××l××l‚××l‚××l‚××l„××ll×l†××ll××l‚××l‰××ll××l××l×l…××l××l׃l××l‚××ll3l× ¬†×¬¬¬ˆ¬¬ll׬†¬¬¬Œll¬¬¬×¬¬lƒll l‚××l‚××l׈l××ll××l׉l××ll××ll׊l××ll××l××l׃l××l‚××l„××ll×l× l†××ll××l׈l××ll××lׂll×lƒ××l×l×l׃l××ll3l× ¬†×¬¬¬ˆ¬¬ll׬¬Œll¬¬¬×¬¬lƒl‚llˆ××l××l××l—××l××ll××l××ll××l××ll××lƒ××l×›l××l××ll××l××ll××l××ll××l××l‰××l××ll××l×lŽ××ll××l××ll××lׯl××l××ll××l××ll××ll××l××ll××l××l××l××l××ll××l××ll3l× ¬†×¬¬¬ˆ¬¬ll׬‚¬Œll¬¬¬×¬¬lƒll lׂllׂll×lׂll×lׂllׂll×l×lׂllׂll×l‰××l××ll×× l‚××l×lׂll×l׎ll××ll××ll××ll׌ll××l××l××llׂll×ll2l× ¬†×¬¬¬ˆ¬¬ll׬¬Œll¬¬¬×¬¬l†lll‚××l‚××Al‚××"l†××ll××llQl× ¬†×¬¬¬ˆ¬¬ll׬†¬¬¬Œll¬¬¬×¬¬l…lll l‚××l‚××Al†××ll××l‚××l‚××llPl× ¬…׬¬ ‡¬¬ll׬‚¬¬¬ll¬¬¬×¬¬l‚l+l‚××+l‚××l×l‚××l…××l××llMl× ¬…׬¬ ‡¬¬ll× ¬Œll¬¬¬×¬¬l„lllllhl× ¬ƒ× ¬…ll× ¬Œll¬¬¬×¬¬ l†lllllgl×׃ll׋ll¬¬¬×¬¬ l‚lllllˆ¬¬¬×¬¬llll,l†¬¬¬×¬¬¬¬0¬„¬×¬¬¬¬0¬ƒ¬××××1ׂ¬¬¬¬3¬Â¹lpHv'3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ'¬%ƒ¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬L¬ׂ¬¬ׂ¬¬ ׬„¬×¬¬L¬¬„׬¬¬„׬¬¬‹×¬×¬×¬„¬×'¬ ¬¬¬¬¬„׬¬¬„׬¬ ¬‹×¬×¬×¬„¬×'¬¬¬¬¬¬¬„׬¬¬„׬¬ ¬Š×¬×¬×¬„¬×¬¬ƒ¬¬¬¬¬„¬¬¬¬¬ƒ¬¬¬¬‚¬‚¬¬¬s¬¬„׬¬¬„׬¬ ¬‰×¬×¬×¬„¬×¬¬¬ƒ¬¬¬„¬¬¬…¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬¬s¬¬„׬¬¬„׬¬ ¬‡×¬×¬„¬×¬¬¬ƒ¬¬¬„¬¬¬ƒ¬¬¬¬†¬¬¬¬¬¬¬¬s¬¬„׬¬¬„׬¬ ¬‡×¬×¬„¬×¬¬¬ƒ¬¬¬ƒ¬¬„¬¬¬¬¬…¬¬¬ƒ¬¬¬¬¬¬s¬¬„׬¬¬„׬¬¬†×¬×¬„¬×¬ƒ¬¬¬ƒ¬¬ƒ¬¬¬…¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬¬s¬¬„׬¬¬„׬¬¬…׬׬„¬×¬¬„¬¬¬¬¬„¬¬¬¬†¬¬¬¬¬‚¬‚¬¬¬s¬¬„׬¬¬„׬¬¬ƒ×¬„¬×¬¬¬¬)¬¬¬s¬¬„׬¬¬„׬¬¬ƒ×¬„¬×¬¬¬¬)¬¬¬s¬¬„׬¬¬„׬¬¬‚׬„¬×¬ ¬¬¬)¬¬¬s¬¬„׬¬¬„׬¬¬×¬„¬×¬¬L¬¬„׬¬¬„׬¬¬‡×¬¬¬×¬¬L¬¬„׬¬¬„׬¬¬‡×¬¬¬×¬¬L¬ƒ×¬¬ƒ×¬¬‡×¬¬¬×¬¬¬#¬„¬×¬¬¬#¬†¬×¬¬×××׉¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬j¬y׬7¬‹×¬¬¬×¬¬i¬‚V×wV׬+¬‚ ¬‹×¬¬¬×¬¬i¬‚V׬n¬‚V׬,¬‚ ¬‹×¬¬¬×¬¬i¬‚V׬V¬×¬V¬‚V׬-¬‚¬‹×¬¬¬×¬¬¬…¬¬ˆ¬¬¬¬¬¬‚¬…¬¬ˆ¬¬¬¬¬„¬¬¬‚¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬¬¬†¬¬¬‚¬‹×¬¬¬×¬¬¬†¬¬¬–¬¬¬¬¬¬¬¬¬¬¬‚¬†¬¬¬™¬¬¬¬¬¬¬¬¬¬¬¬‚¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬‚¬‚¬Ž¬¬¬¬¬¬¬¬‹×¬¬¬×¬¬¬†¬¬¬Ž¬¬¬¬¬¬¬‚¬‚¬†¬¬¬Ž¬¬¬¬¬¬¬†¬¬¬‚¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬‚¬’¬¬¬¬¬¬¬¬¬¬‹×¬¬¬×¬¬¬†¬¬¬¬¬¬¬¬¬¬‚¬†¬¬¬¬¬¬¬¬¬¬…¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬‹×¬¬¬×¬¬¬†¬¬¬Œ¬¬¬¬¬¬ ¬‚¬†¬¬¬Œ¬¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬‹×¬¬¬×¬¬¬„¬¬˜¬¬¬¬¬¬¬¬¬¬¬¬¬¬„¬¬˜¬¬¬¬¬¬¬¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬‚¬•¬¬¬¬¬¬¬¬¬¬‚¬‹×¬¬¬×¬¬¬¬‚¬¬¬¬¬†¬¬¬¬‚¬¬¬¬¬…¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬‚¬‚¬¬‰¬¬¬¬‚¬‹×¬¬¬×¬¬¬‚¬‚¬‚¬‚¬‚¬‚¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬‚¬‚ ¬†¬¬¬‹×¬¬¬×¬¬¬‚¬‚¬‚ ¬‚¬‚¬‚¬‚V׬V¬×¬V¬‚V׬¬‚¬‚ ¬†¬¬¬‹×¬¬¬×¬¬%¬‚¬‚-¬‚¬‚¬‚V׬n+¬‚V׬¬ ¬†¬¬¬‹×¬¬¬×¬¬i¬Vy׬7¬‹×¬¬¬×¬¬i¬yV¬8¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬¬‹×¬¬¬×¬¬¬¬¬~¬‹×¬¬¬×¬¬¬‚¬××_׬‹×¬¬¬×¬¬¬‚^׬‹×¬¬¬×¬¬¬‚^׬‹×¬¬¬×¬¬¬‚^׬‹×¬¬¬×¬¬¬‚^׬‹×¬¬¬×¬¬¬×¬‚^׬׬‹×¬¬¬×¬¬¬‚V× V׬‚ ¬ ¬‚¬×¬‚V× V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬‚ ¬¬ ‚¬¬„¬¬‚¬¬×¬‚V× ¬‚V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬‚ ¬¬‚¬¬„¬¬¬×¬‚V× ¬‚V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬‚ ¬¬¬„¬¬¬×¬‚V× ¬‚V׬‹×¬¬¬×¬¬¬ƒV×+ ‚V׬‚ ¬¬¬„¬¬¬×¬ƒV×+ ‚V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚ ¬¬¬„¬¬¬×¬ƒV×+ ‚V׬‹×¬¬¬×¬¬¬ƒV×+ ‚V׬‚ ¬¬¬„¬¬¬×¬„V×+V„V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚ ¬¬¬ ¬ƒ¬¬¬×¬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚ ¬¬¬¬¬¬¬¬×¬ƒV×+ ‚V׬‹×¬¬¬×¬¬¬ƒV×+ ‚V׬‚ ¬„¬¬¬ ¬¬¬¬×¬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚ ¬„¬¬¬ ¬¬ ¬¬×¬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬¬¬¬×¬„V×+V+„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬¬‚¬¬¬×¬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V+„VV׬‚ ¬„¬¬¬ ¬¬¬¬×¬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬„¬¬¬×¬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬ƒ¬¬‚¬¬×¬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬‚¬‚¬¬×¬ƒV×+ VƒV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬¬ ¬×¬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V„V׬‚ ¬¬¬¬¬¬$׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚ ¬ ¬ ¬¬ ¬×¬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚¬¬¬¬¬¬×¬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚¬¬¬¬¬¬×¬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚¬¬¬„¬¬¬×¬„V×+V„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚¬¬¬¬¬¬×¬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚¬¬¬„¬¬¬×¬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚¬¬¬„¬¬¬×¬„V×+¬„V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚¬„¬¬¬¬¬¬×¬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚I¬×¬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬„V×+¬V„¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬„V×+¬ׄ¬V׬‹×¬¬¬×¬¬¬„V×+¬V„¬V׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬„V×+¬V„¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬„V×+¬ׄ¬V׬‹×¬¬¬×¬¬¬„V×+¬V„¬V׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬„V×+¬V„¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬„V×+¬ׄ¬V׬‹×¬¬¬×¬¬¬„V×+¬V„¬V׬‚^׬„V×+¬ׄ¬V׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ׃V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬„V×+×V„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬„V×+×V„×V׬‚^׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬ƒV×+ ׃V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬ƒV×+ ׃V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬„V×+×V„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬„V×+×V„×V׬‚^׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬ƒV×+ ׃V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬ƒV×+ ׃V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬„V×+׬„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬„V×+×V„×V׬‹×¬¬¬×¬¬¬„V×+׬„×V׬‚^׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬„V×+×V„×V׬‚^׬ƒV×+ ׃V׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬„V×+¬V„¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬„V×+¬ׄ¬V׬‹×¬¬¬×¬¬¬„V×+¬V„¬V׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬„V×+¬V„¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬„V×+¬ׄ¬V׬‹×¬¬¬×¬¬¬„V×+¬V„¬V׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬ׄ¬V׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬„V×+¬V„¬V׬‹×¬¬¬×¬¬¬ƒV×+ ¬ƒV׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬V„¬V׬‚^׬ƒV×+ ¬ƒV׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚^׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚^׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚^׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚^׬„V×+V„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚^׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚^׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚^׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚!¬L'¬m׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚%¬RL ¬m××e׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚‚¬¬eL¬b××f׬„V×+V+„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚‚¬¬qL¬X× ×f׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V+„VV׬‚¬|L¬P× ×f׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚¬LL¬H× ×e׬ƒV×+ VƒV׬‹×¬¬¬×¬¬¬„V×+V¬„VV׬‚¬L L¬A× ×e׬„V×+V¬„VV׬‹×¬¬¬×¬¬¬ƒV×+ VƒV׬‚¬LL¬;××e׬„V×+V„VV׬‹×¬¬¬×¬¬¬ƒV×+ ‚V׬‚¬LL¬4‚×ׂ×× ×d׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+¬„V׬‚L L¬.×× ×d׬„V×+V„V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚¬L$L¬+×ƒ× ×d׬ƒV×+ ‚V׬‹×¬¬¬×¬¬¬ƒV×+ ‚V׬‚¬L)L¬-× ×d׬„V×+¬„V׬‹×¬¬¬×¬¬¬„V×+V„V׬‚¬L.L¬)× ×d׬„V×+V„V׬‹×¬¬¬×¬¬¬ƒV×+ ‚V׬‚¬L2Lƒ¬¬%××e׬ƒV×+ ‚V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬‚¬L5L¬!ׄ××g׬‚V× ¬‚V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬‚L:Lƒ¬¬†×××h׬‚V× ¬‚V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬‚¬L=L‚¬¬ƒ××k׬‚V× ¬‚V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬‚¬L@L‚¬¬„××m׬‚V× ¬‚V׬‹×¬¬¬×¬¬¬‚V× ¬‚V׬‚¬LBL¬„××m׬‚V× ¬‚V׬‹×¬¬¬×¬¬¬V׬‚¬LEL‚¬¬×„×××i׬V׬‹×¬¬¬×¬¬¬V¬‚¬LGL‚¬¬×‚×××j׬V¬‹×¬¬¬×¬¬¬‚¬LJL¬××k׬‹×¬¬¬×¬¬¬‚¬LLL¬ ××l׬‹×¬¬¬×¬¬¬‚¬LNL¬ „××m׬‹×¬¬¬×¬¬¬‚¬LOL‚¬¬ ‚××n׬‹×¬¬¬×¬¬¬‚¬LQL¬z׬‹×¬¬¬×¬¬¬‚¬LRL¬y׬‹×¬¬¬×¬¬¬‚LSL¬x׬‹×¬¬¬×¬¬¬‚¬LSL‚¬¬v׬‹×¬¬¬×¬¬¬‚¬LTL¬v׬‹×¬¬¬×¬¬¬‚¬LUL¬uƒ×¬¬Œ¬×¬¬¬×¬¬¬‚¬LUL¬t„׬¬×Œ¬×¬¬¬×¬¬¬‚¬LUL¬t„׬¬×¬Ž¬×¬¬¬×¬¬¬‚¬LULs„׬¬×¬Ž¬×¬¬¬×¬¬¬‚¬LUL¬s„׬¬×¬Ž¬×¬¬¬×¬¬¬‚¬LTL¬s„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚‚'¬LSL¬s„׬¬×¬ƒ¬¬¬¬Ž¬×¬¬¬×¬¬¬‚‚'¬LQL‚¬%s„׬¬×¬‚¬¬¬Ž¬×¬¬¬×¬¬¬‚‚'¬LPL¬„VV++T„׬¬×¬†¬¬¬ ¬‚¬Ž¬×¬¬¬×¬¬¬‚ƒ'¬¬LLLƒ¬¬%‚VV0„VV++R„׬¬×¬ƒ¬¬¬„¬¬Ž¬×¬¬¬×¬¬¬‚ƒ'¬¬LHLƒ¬¬&‚VV0‚VV+N„׬¬×¬…¬¬¬¬‚¬¬Ž¬×¬¬¬×¬¬¬‚‚&&¬L?L¬‚&&‚VV0V+L„׬¬×¬¬‡¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚&¬;¬&ƒ‚VV0V+K„׬¬×¬¬„¬¬¬Ž¬×¬¬¬×¬¬¬‚#%&5&‚VV0†VVV++I„׬¬×¬¬„¬¬¬¬Ž¬×¬¬¬×¬¬¬‚%'  ‚VV0†VV++G„׬¬×¬¬¬‚¬¬Ž¬×¬¬¬×¬¬¬‚%% ‚VV"0…VV++F„׬¬×¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚%# ‚VV&0ƒVV+D„׬¬×¬¬¬„¬¬¬Ž¬×¬¬¬×¬¬¬‚!%" „VV+0†VV++C„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚#%  ‚VV00ƒVV+A„׬¬×¬„¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚%%„n’’n%‚VV40ƒVV+@„׬¬×¬„¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚'ƒ%%n’n ƒ…VV90ƒVV+?„׬¬×¬ƒ¬¬‚¬Ž¬×¬¬¬×¬¬¬‚)n’n ¨„~~TTc‚VV=0V+>„׬¬×¬‡¬¬¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”!‚VVA0V+=„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”‚VVF0V+<„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚(‚Vn’n¨Ð”‚VVJ0V+;„׬¬×¬Ž¬×¬¬¬×¬¬¬‚(‚n’n¬¬¨Ѓ”VN0V;„׬¬×¬Ž¬×¬¬¬×¬¬¬‚(‚n’n¬¬¨¬Ð”‚VVR0V:ƒ×¬¬׬׬¬¬×¬¬¬‚(‚Vn’n¬¬¨¬Ð¬”¬‚VVV0V9׬‹×¬¬¬×¬¬¬‚)n’n%¬¨¬Ð¬” ¬V[0‚¬V8ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚)n’n%%¨&Ь” ¬‚VV^0ƒ¬¬8„׬¬×Œ¬×¬¬¬×¬¬¬‚)n’n%¨%Ð%”%‚VV\0¬7„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð%”%[0¬<„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”V0¬+A„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”Q0¬ƒVV++/„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”L0¬ %‚V+ +V…7VV++.„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”G0¬‚ %V7„VV++,„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”B0  +V7V+(„׬¬×¬¬‚¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”=0  +V7‚VV+&„׬¬×¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”80   V7V‚++%„׬¬×¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”30  ƒ V%7„VV+#„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”.0‚VV V-7V‚++"„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”)0V‚V47„VV+ „׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”$0VV<7V‚++„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”0V VB7„VV+„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”0V VI7„VV+„׬¬× ¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”0V ƒVP7„VV+„׬¬×¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”0VVW7‚V+„׬¬×¬‚¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð” 0V ‚V]7‚V„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”0V‚++Vd7‚V„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”V‚++Vl7V+„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”‚++Vr7V+„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”Vx7ƒVV+„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð” V7V„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”V77ƒVV+„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”7 7V+ƒ×¬¬׬׬¬¬×¬¬¬‚)n’n¨Ð”7 7V׬‹×¬¬¬×¬¬¬‚)n’n¨Ð”7 7Vƒ×¬¬Œ¬×¬¬¬×¬¬¬‚)n’n¨Ð”7 7V„׬¬×Œ¬×¬¬¬×¬¬¬‚)n’n¨Ð”7 7V„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”7 7ƒ¬¬V„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”77†¬¬V„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”77ƒ¬¬„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”77 ¬„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”r7 ¬„׬¬× ¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”e7 ¬&„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”X75„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”J7C„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”=7V O„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”/7V  3V„VV+ „׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”"7 V„VV  !+‚VV1V+ „׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”7 V  +V1V+ „׬¬× ¬‚¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”7V‚++   ‚ +V,1V+ „׬¬× ¬ƒ¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”V+ +VA1V „׬¬×¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”$ + VU1V „׬¬×¬¬‚¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”! Vi1V „׬¬×¬¬‚¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð” V~1†¬¬V „׬¬×¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11ƒ¬¬V „׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11ƒ¬¬V „׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11ƒ¬¬V „׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11†¬¬V „׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11ƒ¬¬„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11ƒ¬¬„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11ƒ¬¬ƒ×¬¬׬׬¬¬×¬¬¬‚)n’n¨Ð”11ƒ¬¬×¬‹×¬¬¬×¬¬¬‚)n’n¨Ð”11ƒ¬¬ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚)n’n¨Ð”11ƒ¬¬„׬¬×Œ¬×¬¬¬×¬¬¬‚)n’n¨Ð”11¬„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11¬„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11¬„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11¬„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11¬„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11¬ „׬¬×¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11¬ „׬¬×¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11¬ „׬¬×¬‚¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”11¬ „׬¬× ¬„¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð” V ~1¬ „׬¬× ¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”V i1ƒ¬¬ „׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”$ V U1ƒ¬¬ „׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”V VA1†¬¬V „׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”0V+   ‚ V,1ƒ¬¬V „׬¬× ¬…¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”0 V +  1V „׬¬× ¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”"0 V +  !1V „׬¬×¬¬‚¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”/0 V+‚VV+  3V „׬¬×¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”=0 V O„׬¬×¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”J0 VC„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”X0 V5„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”e0V&„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”r0„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”00V„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”00V„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”00Vƒ×¬¬׬׬¬¬×¬¬¬‚)n’n¨Ð”0 0V׬‹×¬¬¬×¬¬¬‚)n’n¨Ð”0 0¬ƒVƒ×¬¬Œ¬×¬¬¬×¬¬¬‚)n’n¨Ð”0 0ƒ¬¬V„׬¬×Œ¬×¬¬¬×¬¬¬‚)n’n¨Ð”0 0ƒ¬¬V„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”0 0ƒ¬¬V„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”0 0ƒ¬¬V„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”00‡¬¬V„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð” 0ƒ¬¬„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”Vx0ƒ¬¬V„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”r0ƒ¬¬V„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”Vl0†¬¬V„׬¬×¬‰¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð” V+Vd0„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð” V+‚]0„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð” V+VW0V„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð” V+ ƒVP0V†×¬¬×¬¬ ¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð” V+ I0V†×¬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð” V+ VB0V†×¬¬×¬¬ ¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”$ Vƒ+VV+V<0„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”) V+‚40 „׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”. V‚+V V-0V!„׬¬×¬¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”3 V ƒ V%0V#„׬¬×¬‰¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”8 V  0V$„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”= V V0V&„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”B V V0‚VV(„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”G V‚ 0ƒVV+)„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”L V ‚++ Vƒ0V+„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”Q V+V-„׬¬×¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”V +Aƒ×¬¬׬׬¬¬×¬¬¬‚)n’n¨Ð”[ <׬‹×¬¬¬×¬¬¬‚)n’n¨Ð”‚\ V7ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚)n’n¨Ð” ^ 8„׬¬×Œ¬×¬¬¬×¬¬¬‚)n’n¨Ð” ¬[ V8„׬¬×¬Ž¬×¬¬¬×¬¬¬‚(‚Vn’n„¬¬¨¬Ð¬”¬‚V V9†×¬¬×¬¬¬¬¬¬×¬¬¬×¬¬¬‚(‚n’n¬¬¨¬Ð¬”¬‚R V:‡×¬¬×¬¬‚¬¬¬¬¬×¬¬¬×¬¬¬‚(‚n’n¬¬¨¬Ѓ¬¬V”N ;ˆ×¬¬×¬¬¬¬¬‘¬¬×¬¬¬×¬¬¬‚(‚n’n¬¬V¨Ð”‚J V;„׬¬×¬‚¬¬¬’¬¬¬×¬¬¬×¬¬¬‚)n’…nVV¨Ð”‚F V<„׬¬×¬¬‚¬Ž¬×¬¬¬×¬¬¬‚)n’n¨Ð”!‚A V=„׬¬×¬‚ ¬¬Ž¬×¬¬¬×¬¬¬‚)n’n¨~*b‚= V>„׬¬×¬…¬¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚)n’n …9 V?„׬¬×¬ˆ¬¬¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚)n’-‚4 V@„׬¬×¬¬Ž¬¬¬¬¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚Z ‚0 VA„׬¬×¬ƒ¬¬ ƒ¬¬¬Ž¬×¬¬¬×¬¬¬‚Z „+ C†×¬¬×¬¬„¬¬„¬¬¬¬×¬¬¬×¬¬¬‚Z ‚& D‹×¬¬×¬¬¬¬¬¬•¬¬¬¬¬×¬¬¬×¬¬¬‚Z ‚" VE„׬¬×¬‚¬‚¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚Z  ‚ ‚VVG„׬¬×¬¬ˆ¬¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚&*5*‚ ‚VVI‡×¬¬×¬¬ƒ¬¬ƒ¬¬¬‘¬¬×¬¬¬×¬¬¬‚*¬;¬*ƒ‚ VJ„׬¬×¬¬ˆ¬¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚‚**¬Ì?̬‚ ‚VVL‰×¬¬×¬¬¬¬‚¬‚¬“¬¬¬¬×¬¬¬×¬¬¬‚ƒ*¬¬ÌHÌ‚¬¬‚ ‚VVN†×¬¬×¬¬‚¬¬‚¬¬¬×¬¬¬×¬¬¬‚ƒ*¬¬ÌLÌ‚¬¬‚ ‚VP„׬¬×¬„¬¬¬„¬¬¬Ž¬×¬¬¬×¬¬¬‚‚*¬ÌP̬‚VR„׬¬×¬¬ ¬¬Ž¬×¬¬¬×¬¬¬‚‚*¬ÌQÌ‚¬*s‡×¬¬×¬¬¬¬„¬¬¬¬‘¬¬¬×¬¬¬×¬¬¬‚‚T¬ÌS̬s„׬¬×¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚¬ÌT̬s„׬¬×¬Ž¬×¬¬¬×¬¬¬‚¬ÌU̬sƒ×¬¬׬׬¬¬×¬¬¬‚¬ÌUÌ*s׬‹×¬¬¬×¬¬¬‚¬ÌUÌ‚¬*sƒ×¬¬Œ¬×¬¬¬×¬¬¬‚¬ÌU̬t„׬¬×Œ¬×¬¬¬×¬¬¬‚¬ÌU̬u„׬¬×¬Ž¬×¬¬¬×¬¬¬‚¬ÌTÌ‚¬*u„׬¬×¬Ž¬×¬¬¬×¬¬¬‚¬ÌSÌ‚¬¬v„׬¬×¬Ž¬×¬¬¬×¬¬¬‚ÌSÌ‚¬*w„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚¬ÌRÌ‚¬Tx„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚¬ÌQ̬z„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚¬ÌOÌ‚¬¬{„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚¬ÌN̬}„׬¬×¬¬ƒ¬¬¬Ž¬×¬¬¬×¬¬¬‚¬ÌLÌ‚¬T~„׬¬×¬ ¬¬Ž¬×¬¬¬×¬¬¬‚¬ÌJÌ‚¬T„׬¬×¬ ¬¬Ž¬×¬¬¬×¬¬¬‚¬ÌG̃¬¬T„׬¬×¬„¬¬ ¬„¬¬¬Ž¬×¬¬¬×¬¬¬‚¬ÌEÌ‚¬¬„׬¬×¬†¬¬¬¬„¬¬Ž¬×¬¬¬×¬¬¬‚¬ÌB̬„׬¬×¬…¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚¬Ì@Ì‚¬¬ „׬¬×¬„¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚¬Ì=̃¬¬T „׬¬×¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚Ì:̃¬¬T„׬¬×¬‚¬ƒ¬¬¬×¬¬¬×¬¬¬‚¬Ì5̬T„׬¬×¬¬„¬¬¬¬¬×¬¬¬×¬¬¬‚¬Ì2̃¬¬T„׬¬×¬ƒ¬¬¬Ž¬×¬¬¬×¬¬¬‚¬Ì.̬„׬¬×¬ƒ¬¬¬¬¬×¬¬¬×¬¬¬‚¬Ì)̬„׬¬×¬…¬¬¬ƒ¬¬¬×¬¬¬×¬¬¬‚¬Ì$̬#„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚Ì Ì¬T'„׬¬×¬¬×¬¬¬×¬¬¬‚¬Ì̬,„׬¬×¬Ž¬×¬¬¬×¬¬¬‚¬Ì̬T1„׬¬×¬Ž¬×¬¬¬×¬¬¬‚¬Ì ̬T6ƒ×¬¬׬׬¬¬×¬¬¬‚¬Ì̬T<׬‹×¬¬¬×¬¬¬‚¬|̬TCƒ×¬¬Œ¬×¬¬¬×¬¬¬‚‚¬¬q̬TJ„׬¬×Œ¬×¬¬¬×¬¬¬‚‚¬¬e̬TS„׬¬×¬Ž¬×¬¬¬×¬¬¬‚T¬RÌ ¬T]„׬¬×¬Ž¬×¬¬¬×¬¬¬‚!T¬Ì'¬Tm„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬¬†¬¬¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬¬ƒ¬¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬„¬¬ ¬„¬¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬†¬¬¬¬„¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬…¬¬¬¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬„¬¬¬‚¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬‚¬‚¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬¬‚ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ƒ¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ƒ¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬…¬¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^ƒ×¬¬׬׬¬¬×¬¬¬‚^׬‹×¬¬¬×¬¬¬‚^ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚^„׬¬×Œ¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬× ¬‚ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬× ¬‚ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬× ¬ƒ¬¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬„¬¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬× ¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^ƒ×¬¬׬׬¬¬×¬¬¬‚^׬‹×¬¬¬×¬¬¬‚^„׬¬׌¬×¬¬¬×¬¬¬‚^…׬¬¬ ¬×¬×¬¬¬×¬¬¬‚^…׬¬ ¬ ¬×¬×¬¬¬×¬¬¬‚^…׬¬ ¬ ¬Ž×¬×¬¬¬×¬¬¬‚^…׬¬ ¬ ¬¬×¬×¬¬¬×¬¬¬‚^…׬¬ ¬ ¬¬¬×¬×¬¬¬×¬¬¬‚^…׬¬¬‚ ¬¬¬×¬×¬¬¬×¬¬¬‚^…׬¬¬ ¬¬¬×¬×¬¬¬×¬¬¬‚^…׬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚^…׬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚^…׬¬¬¬¬×¬×¬¬¬×¬¬¬‚^ˆ×¬¬¬¬¬ ¬¬×¬×¬¬¬×¬¬¬‚^‡×¬¬¬¬ƒ¬ ¬¬×¬×¬¬¬×¬¬¬‚^‡×¬¬¬¬ƒ¬ ¬¬×¬×¬¬¬×¬¬¬‚^׬¬¬¬¬¬ ¬¬×¬×¬¬¬×¬¬¬‚^ˆ×¬¬¬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚^…׬¬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚^…׬¬¬¬‰¬¬¬¬¬×¬×¬¬¬×¬¬¬‚^…׬¬¬¬¬¬¬×¬×¬¬¬×¬¬¬‚^…׬¬¬‚¬‰¬¬¬¬¬×¬×¬¬¬×¬¬¬‚^…׬¬¬¬‰¬¬¬¬¬×¬×¬¬¬×¬¬¬‚^…׬¬¬¬‚¬„¬¬¬×¬×¬¬¬×¬¬¬‚^…׬¬¬ˆ¬¬¬¬ ¬×¬×¬¬¬×¬¬¬‚^…׬¬ ¬‚ ¬×¬×¬¬¬×¬¬¬‚^…׬¬¬×¬×¬¬¬×¬¬¬‚^ƒ×¬¬׬׬¬¬×¬¬¬‚^ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚^׬‹×¬¬¬×¬¬¬‚^ƒ×¬¬Œ¬×¬¬¬×¬¬¬‚^„׬¬×Œ¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬‚¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬× ¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬× ¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬‚¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬ ¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬‚¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬‚^„׬¬×¬Ž¬×¬¬¬×¬¬¬`¬׬׬¬¬×¬¬¬a¬Š×¬¬¬×¬¬Š¬×¬¬¬×¬¬‡×¬¬¬×¬n¬‚׬2¬„¬×¬n¬‚׬2¬„¬×¬n¬‚׬2¬„¬×¬E¬E¬E¬‚׬2¬„¬×¬×‚ׂ׬ׂׂ׬ׂׂ׬‚׬2¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬2¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬2¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬‚×× ¬ƒ×¬ƒ×¬‚¬×¬ ׬ƒ×¬ƒ×¬‚¬‚׬2¬„¬×¬×¬ƒ×¬ƒ×¬ ¬‚¬×¬ˆ¬×¬¬×׬ƒ× ¬ ׄ¬× ¬ l„¬¬¬×¬ ‚¬×¬ƒ× ¬¬ƒ×¬‚ ¬‚¬‚׬2¬„¬×¬×¬ ¬ƒ×¬ ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š×¬×¬¬×¬ƒ× ¬ …׬׬l×…l¬¬¬×¬ ׊׬׬¬×¬…##¬ƒ×¬‚ ¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬‚ ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š×¬×׬׬ƒ× ¬ƒ×¬׆׬׬ˆl×l†×l¬¬¬ƒ×¬¬ ˆ×׬¬×¬…##¬ƒ×¬‚¬l¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬ƒ× ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š¬××׬׬ƒ×¬ׇׂ¬×¬×¬‡l×…l¬¬¬…׬¬×¬‚׬†×¬¬× ¬‚ ¬ƒ×¬¬‚¬l¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬„#× ¬ƒ×¬ƒ ‚¬‚¬×¬…××׬ƒ×¬‚׬׆׬׬ˆl×l×l„¬¬¬„׬¬×‹××׬׬׬„#¬ƒ×¬…¬ ¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬…×#× †¬¬×¬ ¬‚¬× ¬‚׬ƒ×¬ƒ×¬ׇׂ¬×¬×¬‡lׇl×l¬¬¬ƒ×¬¬ ˆ¬×׬׬„#¬ƒ×¬¬ƒll¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬…#×#× …¬¬×¬ƒƒ¬‚¬× ¬¬ƒ×¬‚×׬×׬××׬׬‡lׂll¬‚¬…׬¬¬ ׊¬¬×¬×¬„#¬ƒ×¬„¬ll¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬‹×#×#×#×#׬ƒ×¬ƒ¬ƒ¬‚¬× ¬ƒ×׬ƒ×¬ƒ×¬ׅ׬…¬¬×¬†l¬‚¬×¬ Š¬¬×¬×¬…##¬ƒ×¬¬‚ll¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬‹#×#×#×#×#¬ƒ×¬ƒ¬ƒ¬‚¬× ¬×¬ƒ×¬‚×׬ƒ×¬ƒ×¬Ž¬‚¬×¬„¬×¬׊×׬¬×¬ˆ¬##¬ƒ×¬¬ƒll¬‚¬‚׬2¬„¬×¬×¬ ׬ƒ×¬„×#׬ƒ×¬ƒ¬ƒ¬‚¬× ¬…××׬ƒ×¬‡×¬×׬ׂ¬ƒ×¬ƒƒ¬‚¬×¬‚׬¬ƒ×¬Š#¬##¬ƒ×¬Ž¬ll¬¬ll¬¬¬‚׬2¬„¬×¬×¬×¬ƒ×¬¬…¬¬×¬ƒ¬ƒ¬‚¬×¬†¬×¬ƒ×¬…׬¬ƒ×¬„¬„¬‚¬×¬„¬×¬ׂ׬ƒ×¬Š#¬¬#¬ƒ×¬…¬¬ll¬l„¬¬¬‚׬2¬„¬×¬×¬׃׬ƒ×¬‡¬¬×¬ƒ¬¬‚¬×¬†×¬¬×¬ƒ×¬‚׬ƒ× ¬ƒ×¬Ž##¬‚¬×¬‚ׄ¬¬×¬ƒ×¬ƒ##„##¬ƒ×¬¬ƒll¬l„¬¬¬‚׬2¬„¬×¬×¬ׂ¬ƒ× ¬¬ˆ¬¬¬×¬ƒ¬ƒ¬¬‚¬×¬†×¬¬×¬ƒ×¬ׂ ¬ƒ×¬‚##¬‚¬×¬‚¬ׂ׬ƒ×¬#‚¬ƒ×¬‚¬Œll¬¬ll¬¬¬‚׬2¬„¬×¬×¬¬ƒ× ¬¬ƒ×¬¬‚¬×¬¬¬ƒ×¬ ¬ƒ×¬¬‚¬×¬ ¬ƒ×¬¬ƒ×¬¬l¬‚¬‚׬2¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬2¬„¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬2¬„¬×¬××׬××׬××׬‚׬2¬„¬×¬n¬‚׬2¬„¬×¬n¬‚׬2¬„¬×¬n¬‚׬2¬†¬×¬¬×××׈¬¬¬×¬¬†¬¬¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬¬¬@¬¬ ¬¬¬2¬"¬ ¬/¬„¬×¬b¬"¬k¬/¬„¬× ¬¬…¬¬¬¬¬…¬¬¬¬¬ƒ¬¬¬¬¬¬…¬¬¬¬¬¬…¬¬¬ƒ¬¬¬ ¬¬‡¬¬¬¬¬ƒ¬¬¬‚¬¬¬‚¬¬„¬¬¬‚¬„¬¬¬‚¬¬ˆ¬¬¬¬¬¬ƒ¬¬¬¬„¬¬¬…¬¬¬¬ˆ¬¬¬¬¬¬¬„¬¬¬,¬„¬× ¬¬…¬¬¬ ¬¬¬…¬¬¬¬ƒ¬¬„¬¬¬¬¬„¬¬¬…¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬‰¬¬¬¬¬ ¬Š¬¬¬¬¬¬¬ƒ¬¬…¬¬¬†¬¬¬ ¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬¬ƒ¬¬„¬¬¬„¬¬¬¬…¬¬¬‰¬¬¬¬¬ ¬¬„¬¬¬…¬¬¬+¬„¬× ¬¬…¬¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬„¬¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬¬ƒ¬¬…¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬…¬¬¬ƒ¬¬¬¬„¬¬¬ƒ¬¬+¬„¬× ¬¬„¬¬ ¬¬¬…¬¬¬ƒ¬¬‚¬ˆ¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬¬†¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬‡¬¬¬¬‚¬¬…¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬‚¬Š¬¬¬¬¬¬¬…¬¬¬ƒ¬¬¬¬ƒ¬¬„¬¬¬+¬„¬× ¬‡¬¬¬¬¬ ¬¬¬…¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬¬¬…¬¬¬ƒ¬¬ˆ¬¬¬¬¬‡¬¬¬ ¬¬¬ˆ¬¬¬¬¬‰¬¬¬¬¬ ¬‡¬¬¬¬‹¬¬¬¬¬¬†¬¬¬ ¬¬ƒ¬¬¬¬¬¬¬¬¬¬ ¬¬†¬¬¬¬Š¬¬¬¬¬¬ƒ¬¬¬‘¬¬¬¬¬¬¬¬¬ ¬ƒ¬¬¬…¬¬¬+¬„¬× ¬¬…¬¬¬¬¬…¬¬ ¬¬†¬¬¬¬‰¬¬¬¬¬¬ ¬¬…¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬¬‡¬¬¬¬ˆ¬¬¬¬¬‚¬‚¬Š¬¬¬¬¬¬¬‚¬¬ƒ¬¬¬¬¬¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬,¬„¬× ¬¬¬ ¬¬¬¬¬ ¬ ¬¬ ¬¬¬‚¬‚'¬ ¬¬¬¬¬¬¬¬¬¬1¬„¬× ¬¬¬ ¬¬ ¬¬¬¬¬ ¬¬ ¬¬¬¬'¬ ¬¬¬¬¬¬¬¬¬¬1¬„¬× ¬„¬¬¬¬ƒ¬¬¬ƒ¬¬ ¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬1¬„¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬¬#¬„¬×¬¬¬#¬†¬×¬¬llllˆ¬¬¬×¬¬llllˆ¬¬¬×¬¬lll_l ‚llŠll¬¬¬×¬¬l‚#ll\lׂׄll׋ll¬¬¬×¬¬l‡##lll\l× ¬ƒ× ¬…ll× ¬Œll¬¬¬×¬¬l‚#„ll׊ll××ll××ll׎l××l××ll××ll××l‚××l×l×l׊ll××ll××ll×l‚××l„××ll×l†××ll××lׄll××lVl׬¬…׬¬ ‡¬¬ll× ¬Œll¬¬¬×¬¬l…ll#llš××ll××l××ll××l××ll××l××l××l‚××l‚××l£××ll××ll××ll××l××ll××l××ll××l××ll××l‚××lœ××l××ll××ll××ll××ll××ll××l××lVl׬¬†×¬¬¬ˆ¬¬ll׬‚¬¬¬ll¬¬¬×¬¬lƒllƒlll‚××l“××ll××l××ll××l××l××l„××ll×l†××ll××l‚××l‰××ll××l××l×l…××l××l׃l××l‚××lVl× ¬†×¬¬¬ˆ¬¬ll׬†¬¬¬Œll¬¬¬×¬¬lƒlll‚××lˆ××ll××ll׆l××l××l„××ll×l× l†××ll××l׈l××ll××lׂll×lƒ××l×l×l׃l××lVl× ¬†×¬¬¬ˆ¬¬ll׬¬Œll¬¬¬×¬¬lƒl‚ll‡××ll××l׃l××lˆ××l××l××l‰××l××ll××l×lŽ××ll××l××ll××lׯl××l××ll××l××ll××ll××l××ll××l××l××l××l××ll××l××lVl× ¬†×¬¬¬ˆ¬¬ll׬‚¬Œll¬¬¬×¬¬lƒll lׂll×l×…ll××l×l‰××l××ll×× l‚××l×lׂll×l׎ll××ll××ll××ll׌ll××l××l××llׂll×lUl× ¬†×¬¬¬ˆ¬¬ll׬¬Œll¬¬¬×¬¬l†lll‚××-l‚××"l†××ll××ltl× ¬†×¬¬¬ˆ¬¬ll׬†¬¬¬Œll¬¬¬×¬¬l…lll l‚××-l†××ll××l‚××l‚××lsl× ¬…׬¬ ‡¬¬ll׬‚¬¬¬ll¬¬¬×¬¬l‚ll‚×× l‚×× l‚××l×l‚××l…××l××lpl× ¬…׬¬ ‡¬¬ll× ¬Œll¬¬¬×¬¬l„llll[l× ¬ƒ× ¬…ll× ¬Œll¬¬¬×¬¬ l†llllZl×׃ll׋ll¬¬¬×¬¬ l‚llllˆ¬¬¬×¬¬llll†¬¬¬×¬¬¬#¬„¬×¬¬¬#¬ƒ¬×××$ׂ¬¬¬&¬Ì§Ã§lpJ(;G3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ,¬'‚¬×¬¬¬¬%¬‚¬×¬¬¬¬%¬‚¬×¬¬¬0¬ׂ¬¬ׂ¬¬"׬‚¬×¬¬¬0¬¬„׬¬¬„׬¬ ¬×¬‹×¬×¬×¬‚¬×'¬ ¬¬¬{¬¬„׬¬¬„׬¬ ¬×¬‹×¬×¬×¬‚¬×'¬¬¬¬¬{¬¬„׬¬¬„׬¬ ¬×¬Š×¬×¬×¬‚¬×¬¬ƒ¬¬¬¬¬„¬¬¬¬¬ƒ¬¬¬¬‚¬‚¬¬¬¬W¬¬„׬¬¬„׬¬ ¬×¬‰×¬×¬×¬‚¬×¬¬¬ƒ¬¬¬„¬¬¬…¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬¬¬W¬¬„׬¬¬„׬¬ ¬× ¬‡×¬×¬‚¬×¬¬¬ƒ¬¬¬„¬¬¬ƒ¬¬¬¬†¬¬¬¬¬¬¬¬¬W¬¬„׬¬¬„׬¬ ¬× ¬‡×¬×¬‚¬×¬¬¬ƒ¬¬¬ƒ¬¬„¬¬¬¬¬…¬¬¬ƒ¬¬¬¬¬¬¬W¬¬„׬¬¬„׬¬ ¬× ¬†×¬×¬‚¬×¬ƒ¬¬¬ƒ¬¬ƒ¬¬¬…¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬¬¬W¬¬„׬¬¬„׬¬ ¬× ¬…׬׬‚¬×¬¬„¬¬¬¬¬„¬¬¬¬†¬¬¬¬¬‚¬‚¬¬¬¬W¬¬„׬¬¬„׬¬ ¬× ¬ƒ×¬‚¬×¬¬¬¬)¬¬¬¬W¬¬„׬¬¬„׬¬ ¬×¬ƒ×¬‚¬×¬¬¬¬)¬¬¬¬W¬¬„׬¬¬„׬¬ ¬×¬‚׬‚¬×¬ ¬¬¬)¬¬¬¬W¬¬„׬¬¬„׬¬ ¬×¬×¬‚¬×¬¬¬0¬¬„׬¬¬„׬¬ ¬×¬‚¬×¬¬¬0¬¬„׬¬¬„׬¬ ¬×¬‚¬×¬¬¬0¬ƒ×¬¬ƒ×¬¬!׬‚¬×¬¬¬¬%¬‚¬×¬¬¬¬%¬„¬×¬¬××××!׃¬¬…¬×¬¬¬¬¬¬¬„׬¬†¬×¬¬¬¬¬¬¬„׬¬†¬×¬¬¬¬¬¬¬„׬¬†¬×¬¬¬¬¬¬¬„׬¬†¬×¬¬¬¬¬@¬,×1¬„׬¬†¬×¬¬¬¬¬@¬*¬×1¬„׬¬†¬×¬¬¬¬b¬˜×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬’׬׬׬׬׬׬׬׬׬¬‚(ׂ¬×1¬„׬¬†¬×¬¬B¬y׬'¬š¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬”¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬‚(ׂ¬×1¬„׬¬†¬×¬¬A¬‚V×wV׬'¬× ¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬× ¬‚¬‚(ׂ¬×%¬‚ ¬„׬¬†¬×¬¬A¬‚V׬n¬‚V׬'¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚(ׂ¬×&¬‚ ¬„׬¬†¬×¬¬A¬‚V׬V¬×¬V¬‚V׬'¬× ¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬× ¬‚¬‚(ׂ¬×'¬‚¬„׬¬†¬×¬¬¬‚¬†¬¬¬‚ ¬‚¬ˆ¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×|¬ ‚¬¬¬¬Š¬¬¬¬¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚ׂ×ׂ×ׂ¬× ¬¬¬†¬¬¬‚¬„׬¬†¬×¬¬¬‚¬Š¬¬¬¬¬‚¬Ž¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×|¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ך××××××××××××¬× ¬‚¬‚¬Ž¬¬¬¬¬¬¬¬„׬¬†¬×¬¬¬‚¬Š¬¬¬¬¬‚¬Ž¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×}¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬‚¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚¬‚¬‚ ×ׂ׊××××¬× ¬‚¬’¬¬¬¬¬¬¬¬¬¬„׬¬†¬×¬¬¬‚¬Š¬¬¬¬¬‚¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V×~¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ ׆××ׂ׊××××¬× ¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬„׬¬†¬×¬¬¬‚¬Š¬¬¬¬¬¬ˆ¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬‚¬‚ ××××××׊××××¬× ¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬„׬¬†¬×¬¬¬‚¬Š¬¬¬¬¬‚¬‘¬¬¬¬¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬‚¬š¬¬¬¬¬¬¬¬¬¬¬¬¬×¬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ ׇ×××׊××××¬× ¬‚¬•¬¬¬¬¬¬¬¬¬¬‚¬„׬¬†¬×¬¬¬‚¬‡¬¬¬ ¬‚¬„¬¬¬¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬‚¬¬¬ ¬×¬‚¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬‚¬‚¬‚ׄ×× ×Š××××¬× ¬‚¬‚¬¬‰¬¬¬¬‚¬„׬¬†¬×¬¬¬‚¬†¬¬¬‚¬‚¬‚V׬ŠVV¬V¬¬+¬V¬V¬‚×V¬‚×V¬ƒ××V¬ƒ××V¬ƒ××V¬ƒ××V¬‚×V¬‚×V¬V¬V¬Š+¬¬V¬VV¬‚V׬¬‚"¬×¬¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬×¬¬‚¬‚ׄ×× ×Š××××¬× ¬‚¬‚ ¬†¬¬¬„׬¬†¬×¬¬¬‚¬Š¬¬¬¬¬‚¬‚¬‚V׬V¬×¬V¬‚V׬¬‚!¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚ׄ×× ×Š××××¬× ¬‚¬‚ ¬†¬¬¬„׬¬†¬×¬¬¬‡¬¬¬¬¬‚V׬n+¬‚V×|¬ !¬× ¬œ×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬× ¬–׬׬׬׬׬׬׬׬׬¬× ¬‚¬‚ׄ×××ׂ¬× ¬ ¬†¬¬¬„׬¬†¬×¬¬A¬Vy׬'¬× ¬œ¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬–¬×¬×¬×¬×¬×¬×¬×¬×¬×¬× ¬‚¬‚(ׂ¬×1¬„׬¬†¬×¬¬A¬yV¬(¬ כ׬׬׬׬׬׬׬׬׬׬׬׬¬ ו׬׬׬׬׬׬׬׬׬¬ ׂ¬‚(ׂ¬×1¬„׬¬†¬×¬¬¬¬q¬™¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬×¬“¬×¬×¬×¬×¬×¬×¬×¬×¬×¬¬‚(ׂ¬×1¬„׬¬†¬×¬¬¬¬¬@¬*‚¬×1¬„׬¬†¬×¬¬¬¬¬@¬+×1¬„׬¬†¬×¬¬¬¬¬¬¬„׬¬†¬×¬¬¬¬¬¬¬„׬¬†¬×¬¬¬¬¬¬¬„׬¬†¬×¬¬¬¬¬¬¬¬„׬¬†¬×¬¬¬‚¬×××a׬„׬¬†¬×¬¬¬‚u^ 2^ 2W2W*׬„׬¬†¬×¬¬¬‚o ^ 2^ 2‚^^2W2W(׬„׬¬†¬×¬¬¬‚h^ 2^ 2^‚WW2W2W&׬„׬¬†¬×¬¬¬‚b^ 2^ 2^W2W2W$׬„׬¬†¬×¬¬¬×¬‚\ ^ 2^ 2^2W2W2W#׬׬„׬¬†¬×¬¬¬‚V× V׬‚ ¬ ¬‚¬^ 2^ 2^2W2W2W!׬‚V× V׬„׬¬†¬×¬¬¬‚V× ¬‚V׬‚ ¬¬ ‚¬¬„¬¬‚¬¬^ 2^ 2^ 2^W2W2W2W׬‚V× ¬‚V׬„׬¬†¬×¬¬¬‚V× ¬‚V׬‚ ¬¬‚¬¬„¬¬¬ ^ 2^ 2^ 2 ^W2W2W2W׬‚V× ¬‚V׬„׬¬†¬×¬¬¬‚V× ¬‚V׬‚ ¬¬¬„¬¬¬w^ 2^ 2^ 2^2W2W2W2W׬‚V× ¬‚V׬„׬¬†¬×¬¬¬ƒV×+ ‚V׬‚ ¬¬¬„¬¬¬q^ 2^ 2^ 2^ 2W2W2W2W׬ƒV×+ ‚V׬„׬¬†¬×¬¬¬„V×+V„V׬‚ ¬¬¬„¬¬¬j ^ 2^ 2^ 2^2W2W2W2W׬„V×+V„V׬„׬¬†¬×¬¬¬ƒV×+ ‚V׬‚ ¬¬¬„¬¬¬c^ 2^ 2^ 2^2W2W2W2W׬ƒV×+ ‚V׬„׬¬†¬×¬¬¬„V×+V„V׬‚ ¬¬¬ ¬ƒ¬¬¬|^\^ 2^ 2^ 2^$2W2W2W2׬„V×+V„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚ ¬¬¬¬¬¬¬¬w ^V ^ 2^ 2^ 2^-2W2W2W2׬„V×+¬„V׬„׬¬†¬×¬¬¬ƒV×+ ‚V׬‚ ¬„¬¬¬ ¬¬¬¬q ^^O^ 2 ^ 2^ 2^52W2W2‚WW2׬ƒV×+ ‚V׬„׬¬†¬×¬¬¬„V×+V„V׬‚ ¬„¬¬¬ ¬¬ ¬¬k ^‚22^I^ 2^ 2^ 2^=2W2W2׬„V×+V„V׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬¬¬¬d ^ 2^B ^ 2 ^ 2^ 2^E2W2W2׬„V×+V¬„VV׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬¬‚¬¬¬^ ^2^;^ 2 ^ 2^ 2^N2W2W2׬„V×+V¬„VV׬„׬¬†¬×¬¬¬„V×+V+„VV׬‚ ¬„¬¬¬ ¬¬¬¬Y ^2^5^ 2^ 2^ 2^W2W2‚WW2׬„V×+V+„VV׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬„¬¬¬T ^2^/ ^ 2 ^ 2^ 2^^2W 2׬„V×+V¬„VV׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬ƒ¬¬‚¬¬O ^!2^(^ 2^ 2^ 2^g2W2׬„V×+V¬„VV׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬ ¬‚¬‚¬¬Q^&2^!^ 2 ^ 2^ 2^o2‚WW2׬„V×+V¬„VV׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚ ¬„¬¬¬¬ ¬S^%2^ ^ 2 ^ 2^ 2^~2׬„V×+V¬„VV׬„׬¬†¬×¬¬¬„V×+V„V׬‚ ¬¬¬¬¬¬^^$2^^ 2 ^ 2^ 2^22׬„V×+V„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚ ¬ ¬ ¬¬ ¬R^$2^^ 2 ^ 2^ 2^2 2׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚¬¬¬¬¬¬Q^‚#2^ ^ 2^ 2^ 2^22׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚¬¬¬¬¬¬R^‚$2^2 ^ 2 ^ 2^ 2^22׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚¬¬¬„¬¬¬Q^‚+2^ 2 ^ 2^ 2^22׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚¬¬¬¬¬¬P^*2 2 ^ 2^ 2^2$2׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+V„V׬‚¬¬¬„¬¬¬O^+2‚22 ^ 2^ 2^2+2׬„V×+V„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚¬¬¬„¬¬¬P^*2^ 2^ 2^222׬„V×+¬„V׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚¬„¬¬¬¬¬¬O^"2^2„^^ 2^ 2^272׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚I¬N^2^2‚2^ 2^2>2׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚^2 ^ 2‚^ 2^2D2׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚^2 2 ^2‚ ^ 2^2K2׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚^22 ^ 2^‚22^‚^ 2^2P2׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬„V×+¬V„¬V׬‚^2 ^ 2^2^2W2׬„V×+¬V„¬V׬„׬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚^2^ 2^2^‚2 ^2^2׬„V×+¬ׄ¬V׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚^ 2^2 2^ 2^^2c2 ׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚{ ^ 2 ^2‚22^ 2 ^‚^2j2 ׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚t^ 2 ^ 2 ^ 2^‚2j2 ׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚n ^ 2 ^ 2^2‚^ 2^2^‚2j2 ׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚g^ 2 ^ 2^2^‚ 2^ 2^‚2h2!׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬„V×+¬V„¬V׬‚a^ 2 ^ 2^„22^2^‚2h2!׬„V×+¬V„¬V׬„׬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚[ ^ 2 ^ 2^2^^2^2g2!׬„V×+¬ׄ¬V׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚T^ 2 ^ 2^ 2 ^ƒ^!2^2g2!׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚N ^ 2 ^ 2^ 2^‚"2^2e2"׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚H ^ 2 ^ 2^ 2^‚22^)22e2"׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚A^ 2 ^ 2^ 2^2^)22e2"׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚; ^ 2 ^ 2^ 2^2^)22d2"׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚5 ^ 2 ^ 2^ 2^2^)22c2#׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬„V×+¬V„¬V׬‚. ^ 2 ^ 2^ 2^2^)22b2#׬„V×+¬V„¬V׬„׬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚( ^ 2 ^ 2^ 2^$2^)22b2#׬„V×+¬ׄ¬V׬„׬¬†¬×¬¬¬ƒV×+ ׃V׬‚!^ 2 ^ 2^ 2^*2^‚22)22`2$׬ƒV×+ ׃V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚ ^ 2 ^ 2^ 2^92(22 × 2×B2$׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚ ^ 2 ^ 2^ 2^A2)2~2×2×B2$׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚ ^ 2 ^ 2^ 2^G2(2~2×2×B2$׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚ ^ 2 ^ 2^ 2^O2(2}2×2×A2%׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+׬„×V׬„ ^ 2 ^ 2 ^ 2 ^V2(2}2 ×2×2×A2%׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+×V„×V׬‚^ 2 ^ 2^ 2^]2'2}2 ׃22×2‚×2×A2%׬„V×+×V„×V׬„׬¬†¬×¬¬¬ƒV×+ ׃V׬„^^ 2 ^ 2 ^ 2^e2(2|2 ׃22× 2ƒ×22׃2××A2%׬ƒV×+ ׃V׬„׬¬†¬×¬¬¬ƒV×+ ׃V׬‚2 ^ 2^ 2^k2'2|2ƒ××2׃22× 2×2×2×@2&׬ƒV×+ ׃V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚ ^ 2 ^ 2^s2(2{2×2׃22× 2×G2&׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚^ 2^ 2 ^z2'222„×22× 2×G2&׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚ 2 ^ 2^22'222×2×G2&׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+׬„×V׬„22 ^ 2 ^2 2'22‚××2‚×× 2×E2'׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚ ^ 2 ^22'2}2×2× 2×E2'׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+×V„×V׬„^^ 2^22'2~2׃22× 2×E2'׬„V×+×V„×V׬„׬¬†¬×¬¬¬ƒV×+ ׃V׬‚2 ^22'222× 2×D2(׬ƒV×+ ׃V׬„׬¬†¬×¬¬¬ƒV×+ ׃V׬‚^2&2'222× 2×D2(׬ƒV×+ ׃V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚^2.2'2‚22×2×E2(׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚252&222×2„×22×G2(׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚262&222†×22×22×G2)׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚262&222ƒ×22×J2)׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚2722^222„×22×L2)׬„V×+׬„×V׬„׬¬†¬×¬¬¬„V×+×V„×V׬‚2822 ^222„×22×L2)׬„V×+×V„×V׬„׬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚282 2^ 2|2×2„×22×2×G2*׬„V×+¬ׄ¬V׬„׬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚2922^2|2×2‚××2×H2*׬„V×+¬ׄ¬V׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚292 ^ 2^2}2×2×I2*׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚2:2^ 2^2^~2×2×J2*׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚2;22^ 2^~2„×22×J2+׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚2;2^ 2^2‚××K2+׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚2<2‚^ 2^V2^‚WWm2+׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬„V×+¬V„¬V׬‚2<2‚2^2^N2^Wi2,׬„V×+¬V„¬V׬„׬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚282^‚^ 2 ^E2^Wf2,׬„V×+¬ׄ¬V׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚272^‚^ 2^=2^ Wd2,׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚272^‚ 2^2^42&^ Wa2,׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚272^„22^ 2 ^,2.^W^2-׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚272^ ^ 2^#26^W^2-׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚272^‚^ 2^2^2>^W^2-׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬„V×+¬V„¬V׬‚282^„22^ 2^2F^W^2-׬„V×+¬V„¬V׬„׬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚282^‚ ^ 2^ 2N^W]2.׬„V×+¬ׄ¬V׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚282^„^^ 2^‚22^‚22V^W]2.׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬ƒ272^2^ 2^X^W\2.׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬„262^‚ ^ 2^X^W\2.׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚262^‚^ 2^2^X^W[2/׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚242^‚2^ 2^W^W[2/׬ƒV×+ ¬ƒV׬„׬¬†¬×¬¬¬„V×+¬V„¬V׬‚232^ ^ 2 ^W^W[2/׬„V×+¬V„¬V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚222^^ 2^W^WZ20׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚ 2,2 ^2^2^W^WZ20׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚ 2#2^‚^ 2 ^W^WZ20׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚ 22^‚^ 2^W^WZ20׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚ 22$^2^2^W^WY21׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+V„V׬‚22,^‚^ 2 ^W^WY21׬„V×+V„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚}24^‚^ 2^W^WY21׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚s2<^‚ 2^2^W^W‚Y21׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚j2D^„22^ 2 ^W^W‚X22׬„V×+V¬„VV׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚a2M^^ 2^W^WW22׬„V×+V¬„VV׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚^2WM^ 2^2^W^WW22׬„V×+V¬„VV׬„׬¬†¬×¬¬¬„V×+V+„VV׬‚\2‚WWM^ƒ2^ 2^V^WW22׬„V×+V+„VV׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚[2‚WWM^‚ ^ 2^V^WV2 ^#׬„V×+V¬„VV׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚Y2WM^‚ 2^2^V^WV2^#׬„V×+V¬„VV׬„׬¬†¬×¬¬¬ƒV×+ VƒV׬‚V2WN^ƒ22^ 2^V^WV2^,#׬ƒV×+ VƒV׬„׬¬†¬×¬¬¬ƒV×+ ‚V׬‚T2WN^‚ ^ 2^V^WT2^‚,,#׬ƒV×+ ‚V׬„׬¬†¬×¬¬¬„V×+¬„V׬‚S2WN^ƒ^ 2^2^V^WT2^‚,,$׬„V×+¬„V׬„׬¬†¬×¬¬¬„V×+V„V׬‚P2WN^ƒ2^ 2^V^WR2^ƒ,,2$׬„V×+V„V׬„׬¬†¬×¬¬¬ƒV×+ ‚V׬‚O2WN^‚ ^ 2^V^WR2^ƒ,,2%׬ƒV×+ ‚V׬„׬¬†¬×¬¬¬„V×+V„V׬‚ N2WO^ƒ^^ 2^‚22^V^WP2^„,,22%׬„V×+V„V׬„׬¬†¬×¬¬¬ƒV×+ ‚V׬‚"L2WO^‚2^ 2^V^WP2^ 2,2%׬ƒV×+ ‚V׬„׬¬†¬×¬¬¬‚V× ¬‚V׬‚#K2WO^‚ ^ 2^V^WK2 ^, 2&׬‚V× ¬‚V׬„׬¬†¬×¬¬¬‚V× ¬‚V׬‚$J2WO^ƒ^ 2^2^V^WA2^‚,, 2&׬‚V× ¬‚V׬„׬¬†¬×¬¬¬‚V× ¬‚V׬‚&H2WP^ƒ22^ 2^‚V^W72^,2&׬‚V× ¬‚V׬„׬¬†¬×¬¬¬‚V× ¬‚V׬‚'G2WP^ ^ 2^‚V^W.2$^,2&׬‚V× ¬‚V׬„׬¬†¬×¬¬¬‚V× ¬‚V׬‚(F2WP^ƒ^^ 2^2^‚V^] W$2-^‚,,2'׬‚V× ¬‚V׬„׬¬†¬×¬¬¬V׬‚*E2WO^„22^ 2^‚U^] W25^‚,,2'׬V׬„׬¬†¬×¬¬¬V¬‚+D2WO^‚ ^ 2^‚T^] W29^2‚,,2'׬V¬„׬¬†¬×¬¬¬‚,C2WP^‚^ 2^2^‚T^] Wƒ3WW28^2,2(׬„׬¬†¬×¬¬¬‚.A2WP^„22^ 2^S^] W36^"2^,(׬„׬¬†¬×¬¬¬‚/@2WP^‚ ^ 2^S^] W32-^"2^,)׬„׬¬†¬×¬¬¬‚0?2WP^„^^ 2^R^] W3‚22#^,2^‚,,)׬„׬¬†¬×¬¬¬‚1>2WP^‚2^ 2^R^‚]] W3‚22!^,+2^‚,,*׬„׬¬†¬×¬¬¬‚3<2WQ^ ^ 2^Q^] W32 ^‚,,+2^‚,,+׬„׬¬†¬×¬¬¬‚4;2WQ^ƒ^^ 2^2^Q^‚]] W32^‚,,*2 ^2,,׬„׬¬†¬×¬¬¬‚5:2WQ^ƒ2^ 2^O^‚]] W32^‚,,+2^ 2,-׬„׬¬†¬×¬¬¬‚782WQ^‚ ^ 2^O^‚]] W32^‚,,%2 ^, 2.׬„׬¬†¬×¬¬¬‚872WQ^‚ 2^N^‚]] W32^‚,,2^‚,27׬„׬¬†¬×¬¬¬‚962WR^‚^ 2^M^] W32^‚,,2^,9׬„׬¬†¬×¬¬¬‚;42WR^‚ ^ 2^M^‚]] W32^,2(^‚,,9׬„׬¬†¬×¬¬ ¬‚¬‚ ¬‚<32WR^‚^ 2^‚22^L^] W3 2^,2-^‚,,:׬„׬¬†¬×¬¬ ¬‚¬‚ ¬‚=22WR^‚^ 2^K^‚]] W3 2^,2(^2,;׬„׬¬†¬×¬¬ ¬‚¬‚ ¬‚?02WR^‚^ 2^J^‚]] W3 2^‚,,2^2‚,2;׬„׬¬†¬×¬¬ ¬‚¬‚ ¬‚@/2WS^ 2^2^J^‚]] W3 2^‚,,2^2;׬„׬¬†¬×¬¬ ¬‚¬‚ ¬‚A.2WS^‚^ 2^I^‚]] W3 2^‚,,2 ^&2;׬„׬¬†¬×¬¬ ¬ ¬‚C,2WS^‚^ 2^I^‚]] W3 2‚^‚,,2^,+2<׬„׬¬†¬×¬¬ ¬‚¬‚ ¬‚D+2WS^‚2^‚22^H^‚]] W3 2‚^‚,,2^‚,,+2<׬„׬¬†¬×¬¬ ¬‚¬‚ ¬‚E*2WU^^ 2^G^‚]] W32^‚,,2^‚,,,2<׬„׬¬†¬×¬¬ ¬‚¬‚ ¬‚G)2WV^^ 2^F^‚]] W32^‚,,2^‚,,,2<׬„׬¬†¬×¬¬ ¬‚¬‚ ¬‚H(2WV^ 2^‚22^E^] W32^‚,,2^‚,,,2=׬„׬¬†¬×¬¬¬‚I'2‚WWW^‚^ 2 ^E^‚]] W32^‚,,2^‚,,-2=׬„׬¬†¬×¬¬¬‚G^%2ƒW]]V^‚^ 2^D^] W32^‚,,2^‚,,.2=׬„׬¬†¬×¬¬¬‚A ^$2]V^2^‚22^D^‚]] W32^‚,,2^‚,,/2=׬„׬¬†¬×¬¬¬‚A ^ 2^]U^^ 2 ^B^‚]] W32‚,^‚,,2^‚,,/2>׬„׬¬†¬×¬¬¬‚B ^2^]T^^ 2^B^‚]] W32ƒ,, ^‚,,2^‚,,02>׬„׬¬†¬×¬¬¬‚C ^ 2^]S^‚2^2^A^‚]] W32, ^‚,,2^‚,,12>׬„׬¬†¬×¬¬¬‚D0^]R^‚^ 2 ^A^‚]] W32, ^,2^‚,,22>׬„׬¬†¬×¬¬¬×¬‚E‚^^2(^]R^^ 2^@^‚]] W32, ^,2^‚,,22?׬„׬¬†¬×¬¬¬‚V× V׬‚F2^ 2‚^^]Q^„22^2^‚?^‚]]W32, ^,2^‚,,32?׬„׬¬†¬×¬¬¬‚V× ¬‚V׬‚I2^2‚^^]P^‚ ^ 2 ^>^‚]] W32,^,2^‚,,42?׬„׬¬†¬×¬¬¬‚V× ¬‚V׬‚K2^2‚^^]O^ƒ^ 2^=^]W32 ,^‚,,2^‚,,42@׬„׬¬†¬×¬¬¬‚V× ¬‚V׬‚L+2‚^^]N^‚^2^=^‚]]W32 ,^‚,,2^‚,,52@׬„׬¬†¬×¬¬¬ƒV×+ ‚V׬‚M+2‚^^]N^ ^2^<^]W32 ,^‚,,2^,52@׬„׬¬†¬×¬¬¬„V×+V„V׬‚O 2^2‚^^]M^ 2^<^‚]]W32 ,^‚,,2^‚,,62@׬„׬¬†¬×¬¬¬ƒV×+ ‚V׬‚P ^2‚^^]L^‚^ 2^:^‚]]W32 ,^‚,,2^‚,,62A׬„׬¬†¬×¬¬¬„V×+V„V׬‚Q ^2 ^]K^‚^ 2^:^‚]]W32 ,^‚,,2^‚,,72A׬„׬¬†¬×¬¬¬„V×+¬„V׬‚R ^2^]J^‚2^9^‚]]W32 ,^‚,,2^‚,,82A׬„׬¬†¬×¬¬¬ƒV×+ ‚V׬‚S,^]J^^ 2 ^9^‚]]W3 2 ,^‚,,2^‚,,92A׬„׬¬†¬×¬¬¬„V×+V„V׬‚T‚^^2$^]I^^2^8^‚]]W3 2 ,^‚,,2^‚,,92B׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚U2!^„22^^]H^‚2^2^8^‚]]W3 2 ,^‚,,2^‚,,:2B׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚]^2^]G^‚^ 2 ^6^‚]]W3 2 ,^‚,,2^‚,,;2B׬„׬¬†¬×¬¬¬„V×+V+„VV׬‚^ ^2^]G^^ 2^5^]W3 2 ,^‚,,2^‚,,<2B׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚_#2^]F^ƒ22^2^5^‚]]W3 2 ,^‚,,2^‚,,<2C׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚a22^]E^‚ ^ 2^4^]W3 2 ,^,2^‚,,=2C׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚i2^]D^‚2^4^‚]]W3 2 ,^,2^‚,,>2C׬„׬¬†¬×¬¬¬„V×+V¬„VV׬‚j2^]C^‚^2^3^]W3 2 ,^,2^‚,,?2C׬„׬¬†¬×¬¬¬„V×+V„V׬‚l2^]C^ ^ 2^2^‚]]W3 2 ,^,„222^,>2D׬„׬¬†¬×¬¬¬„V×+¬„V׬‚m2^]B^2^1^‚]]W3 2 ,^,„222^‚,,?2D׬„׬¬†¬×¬¬¬„V×+¬„V׬‚n2^]A^‚^2 ^1^‚]]W3 2 ,^‚,,2^‚,,@2D׬„׬¬†¬×¬¬¬„V×+¬„V׬‚o2^]@^‚^2^0^‚]]W3 2 ,^‚,,2^‚,,@2E׬„׬¬†¬×¬¬¬„V×+¬„V׬‚q2‚^^]?^„22^2^0^‚]]W‚33 2 ,^‚,,2^ƒ,,@2E׬„׬¬†¬×¬¬¬„V×+¬„V׬‚r2‚^^]?^^ 2 ^/^‚]]W3 2 ,^‚,,2^„,,@2E׬„׬¬†¬×¬¬¬„V×+V„V׬‚s2‚^^]>^ƒ^^ 2^-^]W‚33 2 ,^‚,,2^,‚?2F׬„׬¬†¬×¬¬¬„V×+¬„V׬‚u2‚^^]=^‚^2^-^‚]]W‚33 2,^‚,,2^,‚>2G׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚v2‚^^]<^‚ ^ 2^-^‚W]W3 2,^‚,,2^,‚=2H׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚w2‚^^]:^‚2^-^W‚33 2,^†,,222^,‚<2I׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚y2‚^^]:^^ 2^-^ W 2,^†,,222^,‚:2K׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚z2^]9^^2^-^ W 2,^ƒ,,2^,‚82M׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚{2^]8^‚2K^ W2,^‚,,2^ ,‚52P׬„׬¬†¬×¬¬¬„V×+¬V„¬V׬‚}2^]7^‚^ 23^ W2,^‚,,2^ ,‚22S׬„׬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚~2^]7^^20^2 W2,^,2^ ,‚02U׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚2^]6^2^^2W2,^,2^ ,.2X׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚2^]5^‚2^^&22,^,2^ ,%2a׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚2^]4^2^^2^‚WW 2‚2,^,2^,2o׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚2^]3^42^W 2ƒ22,^,„22^, 2|׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚2^]^3/^&2 ^ W2ƒ22,^,2^,׬„׬¬†¬×¬¬¬„V×+¬V„¬V׬‚2^]3/^2,^ W2‚,^†,,222^,׬„׬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚2^]3%^ 22,^ W2,^‚,,2^,׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚ 2‚^^3^22,^ W‚2,^‚,,2^,׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚ 2^3 ^2 ^2,^ W‚2ƒ,^‚,,2^,׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚ 232^2+^ W‚2‚^‚,,2^, ׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚ 232$^2+^ W2^‚,,2^, ׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚2‚33 2W)^ 2+^ W2^‡,,222^, ׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚2‚WW)^ 2+^ W2^†,,222^, ׬„׬¬†¬×¬¬¬„V×+¬V„¬V׬‚2W(^ 2+^ W2‰^^,,222^,׬„׬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚2W(^ 2+^ W2‡^,,222^,׬„׬¬†¬×¬¬¬ƒV×+ ׃V׬‚2W(^ 2+^ W2ƒ,,2^,׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚ 2W(^ 2+^ W2,2^,׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚"2W(^2+^ W 2^,׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚'2W(^2+^ W2^,׬„׬¬†¬×¬¬¬„V×+׬„×V׬‚(W(^2¬+^ W 2^,ƒ×¬¬…¬×¬¬†¬×¬¬¬„V×+׬„×V׬‚)W(^ƒ22 2ƒ¬V¬+^ W ^,„׬¬×…¬×¬¬†¬×¬¬¬„V×+×V„×V׬‚)W)^ 2ƒ¬V¬+^ W ^,„׬¬×¬‡¬×¬¬†¬×¬¬¬ƒV×+ ׃V׬‚)W)^ 2ƒVV+^ W ^,„׬¬×¬‡¬×¬¬†¬×¬¬¬ƒV×+ ׃V׬‚)W)^ 2V+^ W ^,„׬¬×¬‡¬×¬¬†¬×¬¬¬„V×+׬„×V׬‚)W(^ 2V‚+^ W ^ ,„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬„V×+׬„×V׬‚)W(^ ^…22+¬+^ W^2‚, ,„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬„V×+׬„×V׬‚)W(^ ^‚¬+^ W^2‚ ,„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬„V×+׬„×V׬‚)W(^ ^ƒVV‚¬¬*^ W^2,!„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬„V×+׬„×V׬‚)W(^ ^V„¬¬*^ W^2‚,"„׬¬×¬‰¬¬¬¬¬‡¬×¬¬†¬×¬¬¬„V×+×V„×V׬‚)W(^ ^‰VV+V¬¬*^ W^‚2‚,#„׬¬×¬¬¬¬‡¬×¬¬†¬×¬¬¬ƒV×+ ׃V׬‚*W(^ ^†VV¬¬*^ W^‚2ƒ,,%„׬¬×¬¬¬¬‡¬×¬¬†¬×¬¬¬ƒV×+ ׃V׬‚*W(^ ^2*^ W^2(„׬¬×¬¬¬¬‡¬×¬¬†¬×¬¬¬„V×+׬„×V׬‚*W(^ ^2)^ W^2(†×¬¬×¬¬ ¬¬‡¬×¬¬†¬×¬¬¬„V×+׬„×V׬‚*W(^ ^2)^ W^2'†×¬¬×¬¬¬¬‡¬×¬¬†¬×¬¬¬„V×+׬„×V׬‚*W'^ ^‚22)^ W^2'†×¬¬×¬¬ ¬¬‡¬×¬¬†¬×¬¬¬„V×+׬„×V׬‚*W'^ ^ 2)^ W^2'„׬¬×¬¬¬¬‡¬×¬¬†¬×¬¬¬„V×+׬„×V׬‚*W'^ ^ )^ W^2&„׬¬×¬¬¬¬‡¬×¬¬†¬×¬¬¬„V×+×V„×V׬‚*W'^ ^ )^ W^2(„׬¬×¬¬¬¬‡¬×¬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚*W'^ ^ )^ W^2+„׬¬×¬‰¬¬¬¬¬‡¬×¬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚*W'^ ^ )^ W^1„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚+W'^ ^ )^ W^1„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚+W'^ ^ )^ W^1„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚+W'^ ^ )^ W^1„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚+W'^ ^ )^ W^1„׬¬×¬‡¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚+W'^ ^ )^ W^1„׬¬×¬‡¬×¬¬†¬×¬¬¬„V×+¬V„¬V׬‚+W&^ ^ (^ W^1ƒ×¬¬׆¬×¬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚+W&^ ^ (^ W^1׬„׬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚+W&^ ^ (^ W^1ƒ×¬¬…¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚+W&^ ^ (^ W^2„׬¬×…¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚+W&^ ^ (^ W^2„׬¬×¬‡¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚,W&^ ^ (^ W^2†×¬¬×¬¬¬¬‰¬¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚,W&^ ^ (^ W^2‡×¬¬×¬¬‚¬¬¬‰¬¬×¬¬†¬×¬¬¬„V×+¬V„¬V׬‚,W&^ ^ (^ W^2ˆ×¬¬×¬¬¬¬¬Š¬¬×¬¬†¬×¬¬¬„V×+¬ׄ¬V׬‚,W&^ ^ (^ W^2„׬¬×¬‚¬¬¬‹¬¬¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚,W&^ ^ (^ W^2„׬¬×¬¬‚¬‡¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚,W%^ ^ (^ W^2„׬¬×¬‚ ¬¬‡¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚,W%^ ^ (^ W^2„׬¬×¬…¬¬¬¬‚¬‡¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚,W%^ ^ (^ W^2„׬¬×¬ˆ¬¬¬¬¬‚¬‡¬×¬¬†¬×¬¬¬ƒV×+ ¬ƒV׬‚,W%^ ^ (^ W^2„׬¬×¬¬Ž¬¬¬¬¬¬¬¬¬‡¬×¬¬†¬×¬¬¬„V×+¬V„¬V׬‚,W%^ ^ (^ W^2„׬¬×¬ƒ¬¬ ƒ¬¬¬‡¬×¬¬†¬×¬¬¬„V×+¬„V׬‚,W%^ ^ (^ W^2†×¬¬×¬¬„¬¬„¬¬‰¬¬×¬¬†¬×¬¬¬„V×+¬„V׬‚-W%^ ^ (^ W^2‹×¬¬×¬¬¬¬¬¬Ž¬¬¬¬¬×¬¬†¬×¬¬¬„V×+¬„V׬‚-W%^ ^ (^W^3„׬¬×¬‚¬‚¬‚¬‚¬‡¬×¬¬†¬×¬¬¬„V×+¬„V׬‚-W%^ ^ '^ W^3„׬¬×¬¬ˆ¬¬¬¬¬¬‡¬×¬¬†¬×¬¬¬„V×+¬„V׬‚-W%^ ^ '^ W^3‡×¬¬×¬¬ƒ¬¬ƒ¬¬¬Š¬¬×¬¬†¬×¬¬¬„V×+V„V׬‚-W%^ ^ '^ W^3„׬¬×¬¬ˆ¬¬¬¬¬¬‡¬×¬¬†¬×¬¬¬„V×+¬„V׬‚-W$^ ^ '^ W^3‰×¬¬×¬¬¬¬‚¬‚¬Œ¬¬¬¬×¬¬†¬×¬¬¬„V×+¬„V׬‚-W$^ ^ '^ W^3†×¬¬×¬¬‚¬¬‚¬‰¬¬×¬¬†¬×¬¬¬„V×+V¬„VV׬‚-W$^ ^ '^ W^3„׬¬×¬„¬¬¬„¬¬¬‡¬×¬¬†¬×¬¬¬„V×+V¬„VV׬‚-W$^ ^ &^ W^3„׬¬×¬¬ ¬¬‡¬×¬¬†¬×¬¬¬„V×+V¬„VV׬‚-W$^ ^ &^ W^3‡×¬¬×¬¬¬¬„¬¬¬¬Š¬¬¬×¬¬†¬×¬¬¬„V×+V+„VV׬‚.W$^ ^ &^ W^3„׬¬×¬¬¬¬¬‡¬×¬¬†¬×¬¬¬„V×+V¬„VV׬‚.W$^ ^ &^ W^3„׬¬×¬‡¬×¬¬†¬×¬¬¬„V×+V¬„VV׬‚.W$^ ^ &^ W^3ƒ×¬¬׆¬×¬¬†¬×¬¬¬ƒV×+ VƒV׬‚.W$^ ^ &^ W^3׬„׬¬†¬×¬¬¬ƒV×+ ‚V׬‚.W$^ ^ &^ W^4ƒ×¬¬…¬×¬¬†¬×¬¬¬„V×+¬„V׬‚.W#^ ^ &^ W^4„׬¬×…¬×¬¬†¬×¬¬¬„V×+V„V׬‚.W#^ ^ &^W^4„׬¬×¬‡¬×¬¬†¬×¬¬¬ƒV×+ ‚V׬‚.W#^ ^ &^W^4„׬¬×¬‡¬×¬¬†¬×¬¬¬„V×+V„V׬‚.W#^ ^ &^W^4„׬¬×¬‡¬×¬¬†¬×¬¬¬ƒV×+ ‚V׬‚.W#^ ^ &^W^4„׬¬×¬ ¬‡¬×¬¬†¬×¬¬¬‚V× ¬‚V׬‚/W#^ ^ &^W^4„׬¬×¬¬†¬¬¬¬‡¬×¬¬†¬×¬¬¬‚V× ¬‚V׬‚/W#^ ^ %^ W^4„׬¬×¬¬†¬¬¬¬‡¬×¬¬†¬×¬¬¬‚V× ¬‚V׬‚/W#^ ^ %^ W^4„׬¬×¬¬†¬¬¬¬‡¬×¬¬†¬×¬¬¬‚V× ¬‚V׬‚/W#^ ^ %^ W^4„׬¬×¬¬ƒ¬¬¬‡¬×¬¬†¬×¬¬¬‚V× ¬‚V׬‚/W$^ ^ %^ W^4„׬¬×¬ ¬¬‡¬×¬¬†¬×¬¬¬V׬‚/W#^ ^ %^ W^4„׬¬×¬ ¬¬‡¬×¬¬†¬×¬¬¬V¬‚/W#^ ^ %^ W^4„׬¬×¬„¬¬ ¬„¬¬¬‡¬×¬¬†¬×¬¬¬‚/W#^ ^ %^ W^4„׬¬×¬†¬¬¬¬„¬¬‡¬×¬¬†¬×¬¬¬‚/W#^ ^ %^ W^5„׬¬×¬…¬¬¬¬¬‡¬×¬¬†¬×¬¬¬‚/W#^ ^ %^ W^5„׬¬×¬„¬¬¬‚¬‡¬×¬¬†¬×¬¬¬‚0W#^ ^ %^ W^5„׬¬×¬‚¬‚¬‡¬×¬¬†¬×¬¬¬‚0W#^ ^ %^W^5„׬¬×¬‚¬ƒ¬ˆ¬¬×¬¬†¬×¬¬¬‚0W#^ ^ %^W^5„׬¬×¬¬„¬¬‰¬¬¬×¬¬†¬×¬¬¬‚0W#^ ^ %^W^5„׬¬×¬ƒ¬¬¬‡¬×¬¬†¬×¬¬¬‚0W#^ ^ %^W^5„׬¬×¬ƒ¬¬‰¬¬¬×¬¬†¬×¬¬¬‚0W#^ ^ %^W^5„׬¬×¬…¬¬¬ƒ¬ˆ¬¬×¬¬†¬×¬¬¬‚0W"^ ^ %^W^5„׬¬×¬¬‡¬×¬¬†¬×¬¬¬‚0W"^ ^ %^W^5„׬¬×¬‰¬×¬¬†¬×¬¬¬‚0W"^ ^ %^W^5„׬¬×¬‡¬×¬¬†¬×¬¬¬‚0W"^ ^ $^ W^5„׬¬×¬‡¬×¬¬†¬×¬¬¬‚1W"^ ^ $^ W^5ƒ×¬¬׆¬×¬¬†¬×¬¬¬‚1W"^ ^ $^ W^5׬„׬¬†¬×¬¬¬‚1W"^ ^ $^ W^6ƒ×¬¬…¬×¬¬†¬×¬¬¬‚1W"^ ^ $^ W^6„׬¬×…¬×¬¬†¬×¬¬¬‚1W"^ ^ $^ W^6„׬¬×¬‡¬×¬¬†¬×¬¬¬‚1W"^ ^ #^ W^6„׬¬×¬‡¬×¬¬†¬×¬¬¬‚1W!^ ^ #^ W^6„׬¬×¬‡¬×¬¬†¬×¬¬¬‚1W!^ ^ #^W^6„׬¬×¬ ¬‡¬×¬¬†¬×¬¬¬‚1W!^ ^ #^W^6„׬¬×¬¬†¬¬¬¬‡¬×¬¬†¬×¬¬¬‚1W!^ ^ #^W^6„׬¬×¬¬†¬¬¬¬‡¬×¬¬†¬×¬¬¬‚1W!^ ^ #^W^6„׬¬×¬¬†¬¬¬¬‡¬×¬¬†¬×¬¬¬‚2W!^ ^ #^W^6„׬¬×¬¬ƒ¬¬¬‡¬×¬¬†¬×¬¬¬‚2W!^ ^ #^W^6„׬¬×¬ ¬¬‡¬×¬¬†¬×¬¬¬‚2W!^ ^ #^W^6„׬¬×¬ ¬¬‡¬×¬¬†¬×¬¬¬‚2W!^ ^ #^W^6„׬¬×¬„¬¬ ¬„¬¬¬‡¬×¬¬†¬×¬¬¬‚2W!^ ^ #^W^6„׬¬×¬†¬¬¬¬„¬¬‡¬×¬¬†¬×¬¬¬‚2W!^ ^ #^W^7„׬¬×¬…¬¬¬¬¬‡¬×¬¬†¬×¬¬¬‚2W ^ ^ "^ W^7„׬¬×¬„¬¬¬‚¬‡¬×¬¬†¬×¬¬¬‚2W ^ ^ "^ W^7„׬¬×¬‚¬‚¬‡¬×¬¬†¬×¬¬¬‚2W ^ ^ "^ W^7„׬¬×¬‚¬‚¬‡¬×¬¬†¬×¬¬¬‚2W ^ ^ "^ W^7„׬¬×¬¬‚ ¬‡¬×¬¬†¬×¬¬¬‚3W ^ ^ "^ W^7„׬¬×¬ƒ¬ ¬‡¬×¬¬†¬×¬¬¬‚3W ^ ^ "^W^7„׬¬×¬ƒ¬ ¬‡¬×¬¬†¬×¬¬¬‚3W ^ ^ "^W^7„׬¬×¬…¬¬ ¬‡¬×¬¬†¬×¬¬¬‚3W ^ ^ "^W^7„׬¬×¬‡¬×¬¬†¬×¬¬¬‚3W ^ ^ "^W^7„׬¬×¬‡¬×¬¬†¬×¬¬¬‚3W ^ ^ "^W^7„׬¬×¬‡¬×¬¬†¬×¬¬¬‚3W^ ^ "^W^7„׬¬×¬‡¬×¬¬†¬×¬¬¬‚3W^ ^ "^W^7ƒ×¬¬׆¬×¬¬†¬×¬¬¬‚3W^ ^ "^W^7׬„׬¬†¬×¬¬¬‚3W^ ^ "^W^8ƒ×¬¬…¬×¬¬†¬×¬¬¬‚4W^ ^ "^W^8„׬¬×…¬×¬¬†¬×¬¬¬‚4W^ ^ "^W^8„׬¬×¬‡¬×¬¬†¬×¬¬¬‚4W^ ^ "^W^8„׬¬×¬‡¬×¬¬†¬×¬¬¬‚4W^ ^ "^W^8„׬¬×¬‡¬×¬¬†¬×¬¬¬‚4W^ ^ "^W^8„׬¬×¬‡¬×¬¬†¬×¬¬¬‚4W^ ^ !^ W^8„׬¬×¬‡¬×¬¬†¬×¬¬¬‚4W^ ^ !^W^8„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬‚4W^ ^ !^W^8„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬‚4W^ ^ !^W^8„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬‚4W^ ^ !^W^8„׬¬×¬‡¬×¬¬†¬×¬¬¬‚5W^ ^ !^W^8„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬‚5W^ ^ ^W^8„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬‚5W^ ^ ^W^9„׬¬× ¬‚ ¬‡¬×¬¬†¬×¬¬¬‚5W^ ^ ^W^9„׬¬× ¬‚ ¬‡¬×¬¬†¬×¬¬¬‚5W^ ^ ^W^9„׬¬× ¬ƒ¬¬ ¬‡¬×¬¬†¬×¬¬¬‚5W^ ^ ^W^9„׬¬×¬¬ ¬‡¬×¬¬†¬×¬¬¬‚5W^ ^ ^W^9„׬¬×¬¬ ¬‡¬×¬¬†¬×¬¬¬‚5W^ ^ ^W^9„׬¬×¬„¬¬ ¬‡¬×¬¬†¬×¬¬¬‚5W^ ^ ^W^9„׬¬× ¬ ¬‡¬×¬¬†¬×¬¬¬‚5W^ ^ ^W^9„׬¬×¬‡¬×¬¬†¬×¬¬¬‚6W^ ^ ^W^9„׬¬×¬‡¬×¬¬†¬×¬¬¬‚6W^ ^ ^W^9„׬¬×¬‡¬×¬¬†¬×¬¬¬‚6W^ ^ ^W^9„׬¬×¬‡¬×¬¬†¬×¬¬¬‚6W^ ^ ^W^9„׬¬×¬‡¬×¬¬†¬×¬¬¬‚6W^ ^ ^W^9„׬¬×¬‡¬×¬¬†¬×¬¬¬‚6W^ ^ ^W^9ƒ×¬¬׆¬×¬¬†¬×¬¬¬‚6W^ ^ ^W^:׬„׬¬†¬×¬¬¬‚6W^ ^ ^W^:„׬¬×…¬×¬¬†¬×¬¬¬‚6W^ ^ ^W^:…׬¬¬ ¬†×¬×¬¬†¬×¬¬¬‚6W^ ^ ^W^:…׬¬ ¬ ¬†×¬×¬¬†¬×¬¬¬‚6W^ ^ ^W^:…׬¬ ¬ ¬‡×¬×¬¬†¬×¬¬¬‚7W^ ^ ^W^:…׬¬ ¬ ¬ˆ¬×¬×¬¬†¬×¬¬¬‚7W^ ^ ^W^:…׬¬ ¬ ¬‰¬¬×¬×¬¬†¬×¬¬¬‚7W^ ^ ^W^:…׬¬¬‚ ¬‰¬¬×¬×¬¬†¬×¬¬¬‚7W^ ^ ^W^:…׬¬¬ ¬‰¬¬×¬×¬¬†¬×¬¬¬‚7W^ ^ ^W^:…׬¬¬¬‰¬¬×¬×¬¬†¬×¬¬¬‚7W^ ^ ^W^:…׬¬¬¬‰¬¬×¬×¬¬†¬×¬¬¬‚7W^ ^ ^W^:…׬¬¬¬¬†×¬×¬¬†¬×¬¬¬‚7W^ ^ ^W^:ˆ×¬¬¬¬¬ ¬¬†×¬×¬¬†¬×¬¬¬‚7W^ ^ ^W^:‡×¬¬¬¬ƒ¬ ¬¬†×¬×¬¬†¬×¬¬¬‚7W^ ^ ^W^;‡×¬¬¬¬ƒ¬ ¬¬†×¬×¬¬†¬×¬¬¬‚8W^ ^ ^W^;׬¬¬¬¬¬ ¬¬†×¬×¬¬†¬×¬¬¬‚8W^ ^ ^W^;ˆ×¬¬¬¬¬¬¬¬†×¬×¬¬†¬×¬¬¬‚8W^ ^ ^W^;…׬¬¬¬¬¬¬†×¬×¬¬†¬×¬¬¬‚8W^ ^ ^W^;…׬¬¬¬‰¬¬¬¬¬†×¬×¬¬†¬×¬¬¬‚8W^ ^ ^W^;…׬¬¬¬¬¬¬†×¬×¬¬†¬×¬¬¬‚8W^ ^ ^W^;…׬¬¬‚¬‰¬¬¬¬¬†×¬×¬¬†¬×¬¬¬‚8W^ ^ ^W^;…׬¬¬¬‰¬¬¬¬¬†×¬×¬¬†¬×¬¬¬‚8W^ ^^W^;…׬¬¬¬‚¬„¬¬¬†×¬×¬¬†¬×¬¬¬‚8W^ ^^W^;…׬¬¬ˆ¬¬¬¬ ¬†×¬×¬¬†¬×¬¬¬‚8W^^WC…׬¬ ¬‚ ¬†×¬×¬¬†¬×¬¬¬‚`…׬¬¬†×¬×¬¬†¬×¬¬¬‚`ƒ×¬¬†×¬×¬¬†¬×¬¬¬‚`ƒ×¬¬…¬×¬¬†¬×¬¬¬‚`׬„׬¬†¬×¬¬¬‚`ƒ×¬¬…¬×¬¬†¬×¬¬¬‚`„׬¬×…¬×¬¬†¬×¬¬¬‚`„׬¬×¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬‚¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬¬‡¬×¬¬†¬×¬¬¬‚`„׬¬× ¬¬‡¬×¬¬†¬×¬¬¬‚`„׬¬× ¬¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬‚¬ ¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬¬ ¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬ ¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬ ¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬ ¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬ ¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬ ¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬ ¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬ ¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬ ¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬ ¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬ ¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬‚¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬‡¬×¬¬†¬×¬¬¬‚`„׬¬×¬‡¬×¬¬†¬×¬¬¬b¬׆¬×¬¬†¬×¬¬¬c¬„׬¬…¬×¬¬…¬×¬¬„¬×¬¬ „׬¬‚¬×¬n¬‚׬¬4¬‚¬×¬n¬‚׬¬4¬‚¬×¬n¬‚׬¬4¬‚¬×¬E¬E¬E¬‚׬¬4¬‚¬×¬×‚ׂ׬ׂׂ׬ׂׂ׬‚׬¬4¬‚¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬¬4¬‚¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬¬4¬‚¬×¬×¬ƒ×¬ƒ×¬‚¬×¬‚×× ¬ƒ×¬ƒ×¬‚¬×¬ ׬ƒ×¬ƒ×¬‚¬‚׬¬4¬‚¬×¬×¬ƒ×¬ƒ×¬ ¬‚¬×¬ˆ¬×¬¬×׬ƒ× ¬ ׄ¬× ¬ l„¬¬¬×¬ ‚¬×¬ƒ× ¬¬ƒ×¬‚ ¬‚¬‚׬¬4¬‚¬×¬×¬ ¬ƒ×¬ ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š×¬×¬¬×¬ƒ× ¬ …׬׬l×…l¬¬¬×¬ ׊׬׬¬×¬…##¬ƒ×¬‚ ¬‚¬‚׬¬4¬‚¬×¬×¬ ׬ƒ×¬‚ ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š×¬×׬׬ƒ× ¬ƒ×¬׆׬׬ˆl×l†×l¬¬¬ƒ×¬¬ ˆ×׬¬×¬…##¬ƒ×¬‚¬l¬‚¬‚׬¬4¬‚¬×¬×¬ ׬ƒ×¬ƒ× ¬ƒ×¬ƒ…¬¬¬‚¬×¬Š¬××׬׬ƒ×¬ׇׂ¬×¬×¬‡l×…l¬¬¬…׬¬×¬‚׬†×¬¬× ¬‚ ¬ƒ×¬¬‚¬l¬‚¬‚׬¬4¬‚¬×¬×¬ ׬ƒ×¬„#× ¬ƒ×¬ƒ ‚¬‚¬×¬…××׬ƒ×¬‚׬׆׬׬ˆl×l×l„¬¬¬„׬¬×‹××׬׬׬„#¬ƒ×¬…¬ ¬‚¬‚׬¬4¬‚¬×¬×¬ ׬ƒ×¬…×#× †¬¬×¬ ¬‚¬× ¬‚׬ƒ×¬ƒ×¬ׇׂ¬×¬×¬‡lׇl×l¬¬¬ƒ×¬¬ ˆ¬×׬׬„#¬ƒ×¬¬ƒll¬‚¬‚׬¬4¬‚¬×¬×¬ ׬ƒ×¬…#×#× …¬¬×¬ƒƒ¬‚¬× ¬¬ƒ×¬‚×׬×׬××׬׬‡lׂll¬‚¬…׬¬¬ ׊¬¬×¬×¬„#¬ƒ×¬„¬ll¬‚¬‚׬¬4¬‚¬×¬×¬ ׬ƒ×¬‹×#×#×#×#׬ƒ×¬ƒ¬ƒ¬‚¬× ¬ƒ×׬ƒ×¬ƒ×¬ׅ׬…¬¬×¬†l¬‚¬×¬ Š¬¬×¬×¬…##¬ƒ×¬¬‚ll¬‚¬‚׬¬4¬‚¬×¬×¬ ׬ƒ×¬‹#×#×#×#×#¬ƒ×¬ƒ¬ƒ¬‚¬× ¬×¬ƒ×¬‚×׬ƒ×¬ƒ×¬Ž¬‚¬×¬„¬×¬׊×׬¬×¬ˆ¬##¬ƒ×¬¬ƒll¬‚¬‚׬¬4¬‚¬×¬×¬ ׬ƒ×¬„×#׬ƒ×¬ƒ¬ƒ¬‚¬× ¬…××׬ƒ×¬‡×¬×׬ׂ¬ƒ×¬ƒƒ¬‚¬×¬‚׬¬ƒ×¬Š#¬##¬ƒ×¬Ž¬ll¬¬ll¬¬¬‚׬¬4¬‚¬×¬×¬×¬ƒ×¬¬…¬¬×¬ƒ¬ƒ¬‚¬×¬†¬×¬ƒ×¬…׬¬ƒ×¬„¬„¬‚¬×¬„¬×¬ׂ׬ƒ×¬Š#¬¬#¬ƒ×¬…¬¬ll¬l„¬¬¬‚׬¬4¬‚¬×¬×¬׃׬ƒ×¬‡¬¬×¬ƒ¬¬‚¬×¬†×¬¬×¬ƒ×¬‚׬ƒ× ¬ƒ×¬Ž##¬‚¬×¬‚ׄ¬¬×¬ƒ×¬ƒ##„##¬ƒ×¬¬ƒll¬l„¬¬¬‚׬¬4¬‚¬×¬×¬ׂ¬ƒ× ¬¬ˆ¬¬¬×¬ƒ¬ƒ¬¬‚¬×¬†×¬¬×¬ƒ×¬ׂ ¬ƒ×¬‚##¬‚¬×¬‚¬ׂ׬ƒ×¬#‚¬ƒ×¬‚¬Œll¬¬ll¬¬¬‚׬¬4¬‚¬×¬×¬¬ƒ× ¬¬ƒ×¬¬‚¬×¬¬¬ƒ×¬ ¬ƒ×¬¬‚¬×¬ ¬ƒ×¬¬ƒ×¬¬l¬‚¬‚׬¬4¬‚¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬¬4¬‚¬×¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬×¬ƒ×¬ƒ×¬‚¬‚׬¬4¬‚¬×¬××׬××׬××׬‚׬¬4¬‚¬×¬n¬‚׬¬4¬‚¬×¬n¬‚׬¬4¬‚¬×¬n¬‚׬¬4¬„¬×¬¬××××!׃¬¬„¬×¬¬!ƒ¬¬‚¬×¬¬¬¬%¬‚¬×¬¬¬¬%¬‚¬×¬¬¬¬%¬‚¬×¬¬¬¬%¬‚¬×¬¬¬¬@¬¬ ¬¬¬2¬"¬ ¬¬1¬‚¬×¬b¬"¬k¬¬1¬‚¬× ¬¬…¬¬¬¬¬…¬¬¬¬¬ƒ¬¬¬¬¬¬…¬¬¬¬¬¬…¬¬¬ƒ¬¬¬ ¬¬‡¬¬¬¬¬ƒ¬¬¬‚¬¬¬‚¬¬„¬¬¬‚¬„¬¬¬‚¬¬ˆ¬¬¬¬¬¬ƒ¬¬¬¬„¬¬¬…¬¬¬¬ˆ¬¬¬¬¬¬¬„¬¬¬¬.¬‚¬× ¬¬…¬¬¬ ¬¬¬…¬¬¬¬ƒ¬¬„¬¬¬¬¬„¬¬¬…¬¬¬ƒ¬¬ˆ¬¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬‰¬¬¬¬¬ ¬Š¬¬¬¬¬¬¬ƒ¬¬…¬¬¬†¬¬¬ ¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬¬ƒ¬¬„¬¬¬„¬¬¬¬…¬¬¬‰¬¬¬¬¬ ¬¬„¬¬¬…¬¬¬¬-¬‚¬× ¬¬…¬¬¬¬¬…¬¬¬ƒ¬¬ƒ¬¬‡¬¬¬¬„¬¬¬ƒ¬¬¬†¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬Š¬¬¬¬¬¬¬ƒ¬¬…¬¬¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬ƒ¬¬‰¬¬¬¬¬¬…¬¬¬ƒ¬¬¬¬„¬¬¬ƒ¬¬¬-¬‚¬× ¬¬„¬¬ ¬¬¬…¬¬¬ƒ¬¬‚¬ˆ¬¬¬¬¬ƒ¬¬ƒ¬¬‚¬¬†¬¬¬¬ƒ¬¬ ¬¬¬ˆ¬¬¬¬¬ƒ¬¬¬‡¬¬¬¬‚¬¬…¬¬¬„¬¬¬¬ƒ¬¬ƒ¬¬ƒ¬¬¬ƒ¬¬‚¬Š¬¬¬¬¬¬¬…¬¬¬ƒ¬¬¬¬ƒ¬¬„¬¬¬¬-¬‚¬× ¬‡¬¬¬¬¬ ¬¬¬…¬¬¬¬†¬¬¬¬‰¬¬¬¬¬¬¬¬…¬¬¬ƒ¬¬ˆ¬¬¬¬¬‡¬¬¬ ¬¬¬ˆ¬¬¬¬¬‰¬¬¬¬¬ ¬‡¬¬¬¬‹¬¬¬¬¬¬†¬¬¬ ¬¬ƒ¬¬¬¬¬¬¬¬¬¬ ¬¬†¬¬¬¬Š¬¬¬¬¬¬ƒ¬¬¬‘¬¬¬¬¬¬¬¬¬ ¬ƒ¬¬¬…¬¬¬¬-¬‚¬× ¬¬…¬¬¬¬¬…¬¬ ¬¬†¬¬¬¬‰¬¬¬¬¬¬ ¬¬…¬¬¬¬¬ˆ¬¬¬¬¬†¬¬¬¬¬‡¬¬¬¬ˆ¬¬¬¬¬‚¬‚¬Š¬¬¬¬¬¬¬‚¬¬ƒ¬¬¬¬¬¬¬¬¬¬†¬¬¬¬‹¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬¬¬¬¬„¬¬¬¬.¬‚¬× ¬¬¬ ¬¬¬¬¬ ¬ ¬¬ ¬¬¬‚¬‚'¬ ¬¬¬¬¬¬¬¬¬¬¬3¬‚¬× ¬¬¬ ¬¬ ¬¬¬¬¬ ¬¬ ¬¬¬¬'¬ ¬¬¬¬¬¬¬¬¬¬¬3¬‚¬× ¬„¬¬¬¬ƒ¬¬¬ƒ¬¬ ¬¬¬¬ƒ¬¬¬¬¬¬¬¬¬ƒ¬¬¬¬¬¬¬3¬‚¬×¬¬¬¬%¬‚¬×¬¬¬¬%¬‚¬×¬¬¬¬%¬‚¬×¬¬¬¬%¬‚¬×¬¬¬¬%¬„¬×¬¬llll!lƒ¬¬„¬×¬¬llll!lƒ¬¬„¬×¬¬llllal ‚ll…ll¬¬„¬×¬¬l‚#l‚××lllAlׂׄll׆ll¬¬„¬×¬¬l‡##ll‚××lllAl× ¬ƒ× ¬…ll× ¬‡ll¬¬„¬×¬¬l‚#„ll„××ll׋ll××l××l××l׆ll××ll׈ll××ll××l‚××l×l×l׊ll××ll××ll×l‚××l„××ll×l†××ll××lׄll××llOl׬¬…׬¬ ‡¬¬ll× ¬‡ll¬¬„¬×¬¬l…ll#ll¤××ll××ll××l××l××l××l××ll××l××l××ll××l‚××l‚××l£××ll××ll××ll××l××ll××l××ll××l××ll××l‚××lœ××l××ll××ll××ll××ll××ll××l××llOl׬¬†×¬¬¬ˆ¬¬ll׬‚¬‹¬¬ll¬¬„¬×¬¬lƒllƒlll†××ll××l•××l××l××l××ll××l××l×× l„××ll×l†××ll××l‚××l‰××ll××l××l×l…××l××l׃l××l‚××llOl× ¬†×¬¬¬ˆ¬¬ll׬†¬¬¬‡ll¬¬„¬×¬¬lƒlll„××ll×”l××l××l××l××ll××l××l×l„××ll×l× l†××ll××l׈l××ll××lׂll×lƒ××l×l×l׃l××llOl× ¬†×¬¬¬ˆ¬¬ll׬¬‡ll¬¬„¬×¬¬lƒl‚ll¤××ll××ll××l××l××l××l××ll××l××l××ll××l‰××l××ll××l×lŽ××ll××l××ll××lׯl××l××ll××l××ll××ll××l××ll××l××l××l××l××ll××l××llOl× ¬†×¬¬¬ˆ¬¬ll׬‚¬‡ll¬¬„¬×¬¬lƒll lׂllׂllׂll׆ll××ll×l‰××l××ll×× l‚××l×lׂll×l׎ll××ll××ll××ll׌ll××l××l××llׂll×llNl× ¬†×¬¬¬ˆ¬¬ll׬¬‡ll¬¬„¬×¬¬l†lll‚××l‚××"l‚××"l†××ll××llml× ¬†×¬¬¬ˆ¬¬ll׬†¬¬¬‡ll¬¬„¬×¬¬l…llll‚××l‚××"l†××ll××l‚××l‚××llll× ¬…׬¬ ‡¬¬ll׬‚¬‹¬¬ll¬¬„¬×¬¬l‚l#l‚×× l‚××l×l‚××l…××l××llil× ¬…׬¬ ‡¬¬ll× ¬‡ll¬¬„¬×¬¬l„lllll]l× ¬ƒ× ¬…ll× ¬‡ll¬¬„¬×¬¬ l†lllll\l×׃ll׆ll¬¬„¬×¬¬ l‚lllllƒ¬¬„¬×¬¬llll!lƒ¬¬‚¬×¬¬¬¬%¬‚¬×¬¬¬¬%¬¬××××&׬¬¬¬(¬žQ•Qlp Œâš3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ+¬ƒ¬×¬¬¬¬…¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬ †¬¬×¬<<†¬¬×¬::†¬¬×¬99†¬¬×¬66†¬¬×¬4"4†¬¬×¬2&2†¬¬×¬0*0†¬¬×¬.0.†¬¬×¬,2,†¬¬×¬+6+†¬¬×¬(:(†¬¬×¬&>&†¬¬×¬%B%†¬¬×¬"F"†¬¬×¬ L †¬¬×¬ J †¬¬×¬ J †¬¬×¬!J!†¬¬×¬!J!†¬¬×¬!J!†¬¬×¬!J!†¬¬×¬!H!†¬¬×¬!H!†¬¬×¬!H!†¬¬×¬"H"†¬¬×¬"F"†¬¬×¬"F"†¬¬×¬" %"†¬¬×¬" :A:/:*"‚ "†¬¬×¬# :.A:3:" #†¬¬×¬# :NA:::": #†¬¬×¬# :NA:A‚‚>Aa: #†¬¬×¬# :NA:…AA ‚dA:: #†¬¬×¬$ :NA:„AA |A‚:A: $†¬¬×¬$ :NA:ƒA|A‚:Aƒ: $†¬¬×¬$ :NA:ƒA{A‚:Aƒ: $†¬¬×¬$ :NA:‚{A‚:Aƒ: $†¬¬×¬% „::MA:‚zA:Aƒ: %†¬¬×¬% „::MA:‚zA:Aƒ: %†¬¬×¬% „::MA:‚yA‚:Aƒ: %†¬¬×¬% …::MA:‚yA‚:Aƒ: %†¬¬×¬% :MA:ƒyA‚:Aƒ: %†¬¬×¬% :MA:ƒAyA‚:Aƒ: %†¬¬×¬& „::MA:ƒAzA‚:Aƒ: &†¬¬×¬& „::LA:„AA {A:Aƒ:‚ &†¬¬×¬& „::LA:A {A:Aƒ: &†¬¬×¬& „::LA:A‚ |A:A„: &†¬¬×¬' …::LA:Aˆ}A‚:Aƒ: '†¬¬×¬' :LA:AƒA‚:Aƒ: '†¬¬×¬' :LA:A‚uA‚:Aƒ: '†¬¬×¬' „::MA:A†+AAA‚:Aƒ: '†¬¬×¬( „::LA:A*A-A‚:Aƒ: (†¬¬×¬( „::0A‚A:A:)A-A‚:A„: (†¬¬×¬( „::,A‚A:„A:)A@: -A‚:A„: (†¬¬×¬( „::+A‚‚A‚A:AƒA:‚,Aƒ:A„: (†¬¬×¬( :+A ‚+A:A‰A:‚,Aƒ:A„: (†¬¬×¬( „::*A +A:A A:‚,Aƒ:A„: (†¬¬×¬( „::)A‚ *A:ƒA 1A@:‚,Aƒ:Aƒ: (†¬¬×¬) „::)A*A:†AA 1A:‚,Aƒ:Aƒ: )†¬¬×¬) „::)A*A:†A1A:‚,A‚:Aƒ: )†¬¬×¬) „::)A)A:…0A:-A‚:Aƒ: )†¬¬×¬) :)A)A:…‚/A:-A‚:Aƒ: )†¬¬×¬* :)A‚)A:….A:-A‚:Aƒ: *†¬¬×¬* :*A *A:….A:-A‚:Aƒ: *†¬¬×¬* :*A *A:….A:-A‚:Aƒ: *†¬¬×¬* :*A *A:…‚.A:-A‚:Aƒ: *†¬¬×¬+ :*A +A:…/A:-A‚:Aƒ: +†¬¬×¬+ :+A‚‚+A:†A/A:-A:Aƒ:‚ +†¬¬×¬+ :-A‚,A:†AA0A:-A:Aƒ: +†¬¬×¬+ „::A‚ ‚.A:‡AA 0A:,A‚:Aƒ: +†¬¬×¬+ „:: A‚!A:„A‚1A:,A‚:Aƒ: +†¬¬×¬+ „:: A/A:„Aƒ‚3A:,A‚:Aƒ: +†¬¬×¬+ „:: A@:+‚A:„A5A:,A‚:Aƒ: +†¬¬×¬, „:: A@+:„A:„AA:,A‚:Aƒ:‚ ,†¬¬×¬, …:: A@=:A:„A A:-A‚:Aƒ: ,†¬¬×¬, „::A4:A:„A‚A:-A:Aƒ: ,†¬¬×¬, „::*A#:ƒA:ƒA:‚A:-A:A‚: ,†¬¬×¬- „::?A@ †A:A:ƒA:…A:,A‚:Aƒ: -†¬¬×¬- „::?A „A@A:A:‚A:,A‚:Aƒ: -†¬¬×¬- „::=A ,A:‚A:,A‚:Aƒ:‚ -†¬¬×¬- „::  „:A: A :„%A A„::?Aƒ: >†¬¬×¬>  „::A: A:„%A…::?Aƒ: >†¬¬×¬>  „::A: A:„$A…::?Aƒ: >†¬¬×¬>  „::A:1A:„$A…::?Aƒ: >†¬¬×¬?  „::A:4A‡@::$A…::?Aƒ: ?†¬¬×¬?  „::A:4A†::$A::‚?Aƒ: ?†¬¬×¬?  „::Aƒ::4A†::$A::‚A4Aƒ: ?†¬¬×¬?  ƒ:Aƒ::4A†::$A:‚A‚ƒ2Aƒ: ?†¬¬×¬?  „::Aƒ::4A†::+A:ƒAA 1A‚: ?†¬¬×¬?  „::Aƒ::0A†::9A@:ƒAA 0A‚: ?†¬¬×¬?  „::Aƒ::'A†:::A:ƒAA.Aƒ: ?†¬¬×¬@  „::Aƒ::!A†:::A:ƒAA.Aƒ: @†¬¬×¬@  „::A…::‚!A†:::A:‚A.Aƒ: @†¬¬×¬@  „::A…::ƒ!A†:::A:‚‚-Aƒ: @†¬¬×¬A  „::A„::ƒ!A†:::A†::-A‚: A†¬¬×¬A  :A :„"A†:::A†::A.A‚:A†¬¬×¬A  :A:ƒ#A†:::A†::A-Aƒ:A†¬¬×¬A  :A:ƒ#A†:::A†::A ‚-Aƒ:A†¬¬×¬B  :Aƒ::„AA@ :‚$A†::%AƒAˆ::AA /Aƒ:B†¬¬×¬B  ƒ::Aƒ::3A…::AAA:‚A‚/Aƒ: B†¬¬×¬B  ƒ::Aƒ::3A…::A‚‚A…A:‚Aƒƒ0A‚: B†¬¬×¬B  „::Aƒ::3A„::A A…A:‚A3A‚: B†¬¬×¬B  „::Aƒ::3A„::A A‚A:A%Aƒ:B†¬¬×¬B „::Aƒ::5A…AA A†A:AAƒ:B†¬¬×¬B „:: Aƒ::9A A†@A:AAƒ:B†¬¬×¬C „::‚ Aƒ::9AA…::A:AAƒ:C†¬¬×¬C „:‚ A:9AA…::A:A‚Aƒ:C†¬¬×¬C …:ƒ A:9AA…::A:AAƒ:C†¬¬×¬C †:: A:A&AA…::A:AAƒ:C†¬¬×¬C : A:AA A…::&A: AAƒ:C†¬¬×¬D  :„ A: A A A…::&A:ˆAAƒAƒ:D†¬¬×¬D †:::ƒ A: A A‚A:ƒ&A:ƒAA Aƒ:D†¬¬×¬D Œ::++V2993:‚A: A%A‚‚A:ƒ5A :‚A A‚:D†¬¬×¬D  †:+V+AA: A,AA:‚1ˆ\¬¬×¬\W1+ ˆ׬‚V+‚VV  ‚VV‚+V+¬׈@1ˆ\¬¬×¬\X1‚+‚‚׬‚+V  ‚V++¬ׂ‚A1ˆ\¬¬×¬\Z1W׬+  +‚V+¬ׂˆC1ˆ\¬¬×¬\[1]×++ ƒVƒV +++¬ׂD1ˆ\¬¬×¬\\1]׬ „V-X„-V ‚V+¬׈‚E1ˆ\¬¬×¬\]1׬‚VV …V¬V…¬+V ‚VV‚V+¬ׂ‚G1ˆ\¬¬×¬\^1WׂV+ VV ‚+V‚VV¬ׂˆH1ˆ\¬¬×¬\_1W׬‚VV‚V+ VV ‚+V‚VV‚V+¬ׂJ1ˆ\¬¬×¬\`1‚׬‚V+‚V+ V‚,- ‚-,V ‚+V‚+V‚V+¬׈K1ˆ\¬¬×¬\a1‚+2ׂ+V‚V+ „V+W„W+ ‚+V‚V+¬ׂ‚L1ˆ\¬¬×¬\c1,×+‚VV ‚VWƒWVV ‚VV+‚+V ¬ׂˆM1ˆ\¬¬×¬\d1,×+‚VV‚VV+‚VV¬ׂ‚+N1ˆ\¬¬×¬\e1W׬‚VV‚VV‚V+¬׈P1ˆ\¬¬×¬\f1‚,¬׬ ‚VV++‚VV‚+V ¬ׂ‚Q1ˆ\¬¬×¬\g1‚­׬ ‚V+‚+V‚V+‚+V+¬ׂˆS1ˆ\¬¬×¬\h1׬ ‚VV‚+V‚V+‚VV‚+V ¬ׂT1ˆ\¬¬×¬\i1ˆ× ‚V+‚VV‚VV‚+V+ ¬׈‚U1ˆ\¬¬×¬\j1‚+‚‚׬ ‚+V‚V++ ¬ׂ‚W1ˆ\¬¬×¬\l1‚ˆ׬ +++ ¬ׂˆX1ˆ\¬¬×¬\m1]׬ +++++ ¬ׂZ1ˆ\¬¬×¬\n1]׬ ‚V+ ¬׈[1ˆ\¬¬×¬\o1× ‚VV‚VV‚V+ ¬ׂ‚\1ˆ\¬¬×¬\p1‚× ‚V+‚+V‚VV ׂˆ]1ˆ\¬¬×¬\q1W× ‚VV‚V+‚+V‚VV‚V+ ¬ׂ‚+^1ˆ\¬¬×¬\r1W׬ ‚V+‚V+‚+V‚+V‚V+ ¬׈`1ˆ\¬¬×¬\s1+W׬ ‚+V‚V+‚+V‚V+ ¬ׂ‚a1ˆ\¬¬×¬\u1׬ +‚VV‚VV+‚+V ¬ׂˆc1ˆ\¬¬×¬\v1,׬ +‚VV‚VV+‚VV ¬ׂ‚d1ˆ\¬¬×¬\w1‚2­× ‚VV‚VV‚V+ ¬׈f1ˆ\¬¬×¬\x1‚׬ ‚VV++‚VV‚+V ¬ׂ‚g1ˆ\¬¬×¬\y1‚­׬ ‚V+‚+V‚V+‚+V+ ¬ׂˆi1ˆ\¬¬×¬\z1­׬ ‚VV‚+V‚V+‚VV‚+V ¬ׂj1ˆ\¬¬×¬\{1‚¬׬ ‚V+‚VV‚VV‚+V+ ¬׈k1ˆ\¬¬×¬\|1W׬ ‚+V‚V++ ׂ‚l1ˆ\¬¬×¬\}1‚ˆ× +++ ׂˆm1ˆ\¬¬×¬\~1+‚× +++++ ׂo1ˆ\¬¬×¬\1+׬ ‚V+ ׈p1ˆ\¬¬×¬\11׬ ‚VV‚VV ‚V+ ׂ‚‚+q1ˆ\¬¬×¬\11‚× ‚V+ ‚+V‚+V + ׂˆs1ˆ\¬¬×¬\11+‚׬ ‚VV ‚V+ ‚+V ‚VV ‚V+ ׂ­‚‚t1ˆ\¬¬×¬\11+W׬ ‚+V ‚V+ ‚+V ‚V+ ‚V+ ׂ¬v1ˆ\¬¬×¬\11‚+W× ‚V+ ‚+V ‚V+ ‚+V ‚VV ׂ¬,w1ˆ\¬¬×¬\11W׬ ‚VV ‚VV ‚+Vׂ­y1ˆ\¬¬×¬\11W׬ ‚VV ‚VV ‚VV×­z1ˆ\¬¬×¬\1 1‚2­׬ ‚+V ‚V+ ‚+V ‚V+ ‚VV¬ׂ¬{1ˆ\¬¬×¬\1 12׬‚V+ ‚+V ‚V+ ‚+V ¬ׂ¬,|1ˆ\¬¬×¬\1 1+./ ‚VV ‚+V ‚V+ ‚VV + ׂ­1ˆ\¬¬×¬\1 1‚/ ‚VV ‚+V ‚+ ‚V+ ‚VV +ׂ¬, ‚11ˆ\¬¬×¬\11ƒ++„W¬×Y ‚VV ‚+V ‚VV ‚+V†¬¬×ׂW11ˆ\¬¬×¬\~1‚]ˆׂ¬¬ + ‚V+ ‚VV ƒV+V ‚+V ƒ++V†¬¬×ׂW ƒ++11ˆ\¬¬×¬\f1+/­ ‚++ ‚+ ‚V ƒVV ƒVV ƒVV†¬××­, 1 1ˆ\¬¬×¬\C1D,‚­­/. V‚ „VV+ „VV++„VV++ „VV+„VV+¬, +1 1ˆ\¬¬×¬\*1 +AW ƒ×¬. V+V+VV‚++V‚++V+‚VV+‚¬‚ 11ˆ\¬¬×¬\$1$W)‚×Y.X¬ +V+VV+V+‚VV+V+V¬2W +11ˆ\¬¬×¬\1¬ ׬"WV+VV+V+V‚VVVƒ¬×‚, 11ˆ\¬¬×¬\1,W× ,V V+‚VV+V+VV„++W‚¬]11ˆ\¬¬×¬\1W¬×¬ V+V + V+V+ƒVV+‚Vˆ+V+V‚1#1ˆ\¬¬×¬\1‚׬V + V+"V + V +V+V‚+‚Wƒ2W,+1)1ˆ\¬¬×¬\1ƒ+ƒW¬¬×  V V,VV +Vƒ,,141ˆ\¬¬×¬\1 ‚ˆ׬V+Vƒ+V+ V+. V V  1>1ˆ\¬¬×¬\1 W׬‚VV+V+VV +V++V++V+ ‚ 1H1ˆ\¬¬×¬\1 W׬„++VV‚++VV+VV+V +V+++1T1ˆ\¬¬×¬\1 „ˆ×׃VV„+VV„++VVV+‚111ˆ\¬¬×¬\1‚¬‚+V‚V+ƒVV„++V†+W‚¬W ‚111ˆ\¬¬×¬\1‹W‚‚¬¬++VV„V+VVƒ+VV‚+V‚VVƒV++„XYY2 111ˆ\¬¬×¬\1ƒ++‹WW2¬¬VV++‚VV+V+++ƒV++†¬××­‚ ‚111ˆ\¬¬×¬\"1,,¬¬VV+VVƒV…VVV…VVV„VVVƒVV†¬××­¬] 111ˆ\¬¬×¬\&1¡]¬WV++VV++VV++VV++VV…++VV…++VV¬ׂW, 111ˆ\¬¬×¬\)1…2‚WW+V„V++V‡V++VV‚++V‚++V„++VV†¬¬××W, +111ˆ\¬¬×¬\-1+ŒW2,¬VV++VV‡++VVV+‚VV+„VV+„VV++†¬¬×¬‚]‚111ˆ\¬¬×¬\31“,,¬¬V++VV+V‚„VV‹VVVVV++…¬×׬W‚111ˆ\¬¬×¬\61+‡2WWVVƒVƒ++ƒ+VƒV…××111ˆ\¬¬×¬\;1, VVV‚Vƒ+Vƒ+VƒW,111ˆ\¬¬×¬\>1ƒ++, V‚V‚V‚V‚VƒWV,‚11 1ˆ\¬¬×¬\E1†VV+V+‰V++VV++ƒV+V‚V+‚W‚11 1ˆ\¬¬×¬\G1—2V++VV++VVV++VV+V‹V+VVV+VV111ˆ\¬¬×¬\ 1+W-W-,¬…VVƒ+Vƒ+V‚+ƒV++ˆ++¬×‚W‚11 1‡\¬¬×¬]VVW‚VV,V,++++ +ˆ,,WW+11 1‡\¬¬×¬‚^]W…V++V‚+++M+111‡\¬¬×¬V#++ &11*1Š\¬¬×¬]VV+ VW ‚]\11>1ˆ\¬¬×¬]V„WW]] W‚‹]VOO]]VOP]V2+*V ]211+1ˆ\¬¬×¬] VW]‚›%O]]%O]]%%V]V%%VWP$$WW+$$W+ $ %+2 ]111ˆ\¬¬×¬\ 1§2]]$$WW$$OW$$+WW$+WW$$PWV$$VWP$$WW+$$W+ +11 1ˆ\¬¬×¬\"1¥V$$WW$$WW$$+WV$+WW$$PWV$$VWP$$WWV+OW+ +11 1ˆ\¬¬×¬\"1žV$$WW$$WW$$VWVPVWWPPVWVPPVWVPPW+ +11 1ˆ\¬¬×¬\"1VˆWWVVWWVVW+ +11 1ˆ\¬¬×¬\"1V#W+ +11 1ˆ\¬¬×¬\"1V#W+ +11 1ˆ\¬¬×¬\!1‚2V#W+"+11 1ˆ\¬¬×¬\!1V$W+"+11 1ˆ\¬¬×¬\!1V$W+"+11 1ˆ\¬¬×¬\!1V#W‚V+"+a1+1<2+‚112P, 1ˆ\¬¬×¬\!1V#W2$ +,B ,+%‚&=%&T& %+1ˆ\¬¬×¬\!1VW3$%B ‚+1 % +%&‚ %& %+1ˆ\¬¬×¬\"V3#! %ƒ&&„&&%‚PPV‚OO%&‚&& %& % %ƒ &% OVˆ\¬¬×¬¬$Ѓ¦W3"‚  %…%ƒ& % & %Ptz ЃztO%& %„&& %& %ƒ&%ƒPtO%‚O¥Ј¬¬¬×¬¬&Ђ¦‚#‚„%%& %& %‚&& %ƒ& %I{…O%I{¥Ѓ¥{I %P{%‚ ‚&%& %& %&%z{ƒ¦Ð¥{„O%{¥Ј¬¬¬×¬¬(Ђ¦]#%& %‚zI% &%‚z¥ %P¥Ѓ¦¥¥Ѓ¥¥z%z¥¦Ђ¥z%& &%ƒ¥z$% &%ƒI¥P%$¥¦ Ђ¦¥ Ј¬¬¬×¬¬,Ђ33" %& %‚,PЂ¥I%‚OPÐ¥%„IOOz9ЂtI%Oƒ¥I$ %&%‚P¦ЂtI%%‚O¥Ðt %O4Ј¬¬¬×¬¬-Ѓ¦W3!‚ „+VPI%ƒOP¦Ѓ¥tI%t$%ƒOt¦Ї¦O%Ptt¥=Ð…¦tI%ItЃ¦tI%‚V{Ѓ¦tI%„Ott$%‚t{ÐP%tz7Ј¬¬¬×¬¬/ʃ‚‚W!‚†VÊÊŸ$%ƒP{$%‚I¥ Ê‚Ÿz%Oʃ{P$ %‚{¥ʃ¥{¦Bʃ¥{Ÿ Ê‚¥I%‚$z%z Ê‚¥I%†tÊÊ{t$%‚P{ʦ{Ÿ;ʈ¬¬¬×¬¬1ʃ¦¦3"†P¥¦ʃ¥z$ %‰I¥¦Ê¥z%{¥ Ê…¦¥P$¥Ê„¦¥I$ %‚z¥[ʃ¥$$%‹$z¥¦z$%%P¥¦ ʇ¥{$%%I¥Ê„¦¥I$%ƒI¥¦Iʈ¬¬¬×¬¬bÊz %ƒIO¥ ʃ¥OO%‚OP`Ê‚ŸI %‚ItÊ‚ttÊ‚zO Ê‚ŸO %ƒIO¥Lʈ¬¬¬×¬¬cÊ‚zP%‚t{%Ê…zPIt¥bʃ{t$ %‚O¥'ʃzP$%ƒPt{Nʈ¬¬¬×¬¬dʃ¦P$%‚Pz(Ê‚¦¥fÊ‚z$%ƒIz¥)ʈ¦zzI$Oz¦Pʈ¬¬¬×¬¬eʆ¦¥II¥¦Êʃ¦z$%ƒ${¥.Ê¥Rʈ¬¬¬×¬¬ÊÊʃPOzÊʈ¬¬¬×¬¬ÊÊÊ Êˆ¬¬¬×¬¦ÊÊÊ Êˆ¦¬¬×¬¦ÊÊÊ Êˆ¦¬¬×¬¦ÊÊÊ Ê‡¦¬¬×¬¦¦¦ ¦†¬¬×¬¦¦¦ ¦†¬¬×¬¦¦¦ ¦†¬¬×¬¦¦¦ ¦†¬¬×¬¦¦¦ ¦‡¬¬×¬¦¥¥¥ ¥ˆ¦¬¬×¬¦¥¥¥ ¥ˆ¦¬¬×¬¦¥¥¥ ¥‡¦¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥†¬¬×¬¥¥¥ ¥‡¬¬×¬¥¤¤¤ ¤ˆ¥¬¬×¬¥¤¤¤ ¤ˆ¥¬¬×¬¥¤¤¤ ¤ˆ¥¬¬×¬¥¤¤¤ ¤ˆ¥¬¬×¬¥¤¤¤ ¤ˆ¥¬¬×¬¥¤¤¤ ¤ˆ¥¬¬×¬¥¤¤¤ ¤ˆ¥¬¬×¬¥¤¤¤ ¤ˆ¥¬¬×¬¥¤¤¤ ¤ˆ¥¬¬×¬¥Q¤„¥¬¬«?¤¥¬«¤o¤ˆ¥¬¬×¬¥R¤‚«¬@¤‚¬¥¤‚¥¥¤n¤ˆ¥¬¬×¬¥R¤‚«¬@¤‚¥¥¤‚«¥¤m¤ˆ¥¬¬×¬¥=¤ƒ¥¥¤¬¤ƒ¥¬«¤¬¤…«¬¤¬¬¤‰«¬¥¥¬«¥¬¬¤¥¥«¬¥¤¤¬¬¥¤¤¬¬¤¬¥¤„¬¬¤¤¬¤¬¤¬‚¤¥¬¥¤¬‚¤¤¬¤¬¤¬…¤¤¥¬«¤«¬ˆ¤¤¥¬¬¥¤¤¬¤¥¬¬«¥¬¬«¤¤«¬¥¤«¤«¤¬¤‹«¬¥¥¬«¤¤«¬¥¤ƒ¥¬«¤‚¬¥y¤‡¥¬¬×¬>¤›¥¬¬¤¤¥¬¤¤«¬¤¥¤¬«¤¥¬¤¤«¬«¤¥¬¤‹«¬¤¥¬¬¤¬¬¥«¤”¥¬¤¤¥¥¤¬«¥¤¬«¤«¬«¥¬¬¤‘¥¬¥«¤¥¬¥¤¥¬¥¤¥¬¥¥¬¥¤’¥¬¥¤¤¥¬¥¤¥¬¥¤¥¬¥¤¥¬«¤¥¬¥¤¤¥¬¤¤¬¥¤¥¬¥¤‰«¬¤¤«¬¤¤«¬¥¤‚«¬¤‚¬¬¤ƒ¥¬¥¤‰«¬¤¥¬¬¤««¬„¥¤¤¥¬«¤‚¬¥z¤†¬¬×¬>¤‚¥¬¤‰¬¬¤«¬¤¤«¬¤…¬¬¤«¬¤‚¬¬¤Š«¬¤¤«¬¤¥¬¥¤”¥¥¤¥«¥¤¬«¤¤¬«¤¤¬«¤¬¬¤‘¥¬¥¤¤¥¬¥¤¥¬¥¤¥¬¥¤¥¤—¥¬¥¤¤¥¬¥¤¥¬¥¤¥¬¥¥¬¬¤¤¥¥¤¥¬¥¤¥¬¥¤¤¥¬¥¥¬¥¤«¬¤¤«¬¤¥¬«¤¤¥¤ˆ¬«¬¤¤¬««¤ƒ¥¬¥¤•«¬¤¤«¬¤¥¬«¤¤¥¤¥¬¬¤¤¥¥~¤†¬¬×¬>¤‚¥¥¤Š¥¬¬¤«¬¤¤«¬¤…¬¬¤«¬¤‚¬¬¤‰¥¬«¥«¬¤¥¬¤“¥«¬¬¤¤¬«¤¤¥¬«¤¬«¤¬¬¤’¬¥¤¤¥¬¤¤¥¬¤¤¥¬¤¤¥¬¥¤’¬¥¤¤¥¬¤¤¥¬¤¤¥¬¤¤¬¥ ¤Ž¬¥¤¤¬¥¤¤¥¬¤¤¬¥¤‰«¬¤¤«¬¤¥¬¤ƒ¥¬¤¥„¬¤¥¥¤‚¬¥¤‰¥¬«¥«¬¤¥¬¤‚¬¥¤¥{¤†¬¬×¬B¤‹¥¬¬¤¤«¬¤¤«¬¤…¬¬¤«¬¤‚¬¬¤†¥¬¬¤¥¬¤ƒ¥¬¬¤‚¬«¤†«¬«¤¬¬¤–¬¥¤¤¥¬¤¤¥¬¤¤¥¬¤¤¬¥¤¤¬¥¤¬¥¤¤¥¬¤¤¥¬¤¤¥¬¤¤¬¥¤Ž¬¥¤¤¬¥¤¤¥¬¤¤¬¥¤ˆ«¬¤¤«¬¤¥¬Œ¤¤¥¬¤¤««¬¤¥¥¤‚¬¥¤†¥¬¬¤¥¬¤¬„¥¤¤«{¤†¬¬×¬A¤¬¤†«¬¤¤¥¬¤…¬«¤«¬¤‚¬«¤‰«¬¤¤«¬¤¥¬¤”¥¥¤¤¥¥¤¬«¤¤¬«¤¤¬«¤¬¬¤–¬¥¤¤¥¬¤¤¥¬¥¤¥¬¤¤¬¥¤¥¬¥¤–¬¥¤¤¥¬¤¤¥¬¥¤¥¬¤¤¬¥¤¤¬¥¤Ž¬¥¤¤¬¥¤¤¥¬¤¥¬¥¤™«¬¤¤«¬¤¥¬¥¤¥¬¤¤¬¥¤¤¥¬¤¤¥¥¤ƒ¥¬¥¤˜«¬¤¤«¬¤¥¬¥¤¤«¤¤¬¥¤¤¬¥¤¤«{¤†¬¬×¬?¤š¬¬«¥¤¥¤¤¬¬¥¥¤¥¬¥¬«¤¤¬¬«¥¬«¤‹¥¬¥¥¬«¤«¬¥¥¤¥¢¬¥¥¬¬¥¤«¬¥¥¬¥¥¬¬¥¬¬¥¬«¥¤¬¬¤¤¬¬«¥«¬¤…¥¥¬««¤Ž¬¥¤¤¬¬¤¤¬¬«¥«¬¤¬¥¤“¥¥¬«¥¤¤¬¥¥¬¤¤«¬¬¥¬«¤š¬¬«¥¬«¤¤¥¬¥¥¤¤¥¬«¤¤«¬¥¤¤¬¥¤“«¬¬¥¬«¥¬¥¥¬«¤¤¥¬¥«¬¤¬¥¤¬{¤†¬¬×¬>¤ƒ¥¬¥¤†¬¤¤¬¬¥¤¥¤„¥¤¥¥¤¥†¤¤«¬¥¥¤Š¥¥¤¤¥¬¬¥¤¤¥…¤¤¥¥¤¥†¬«¥¤¤¥¤„¥¤¥¥¤‚¥¥¤‚¬¥¤¥¤„¥¤¥¥¤‚¥¥¤…¥¥¬«¥¤‚¥¥¤„¥¤¥¥¤„¥¤¥¥¤‚¥¥¤¥‚¤¤¥„¤¤¥¥¤†¥¤¥¥¤¤¥¤¥¤‚¥¥¤‚¬¥z¤†¬¬×¬>¤‚¥¬¤‚¥¬¤¬¤« ¤‚¥«¤‚¥¥¤‚¬¥¤‚¬¥N¤‚¬¥z¤†¬¬×¬?¤†¥¬¤¥¬¬¤«¤¥¤¥¤‚¥¥¤ƒ¥¬¥¤‚¬¥N¤‚¬¥z¤†¬¬×¬@¤…¥«¥¤¥E¤‚¥¬¤‡«¬¥¤¤¥¬¤¥¬K¤«{¤†¬¬×¬¤ ¤¥¤¥¤¥¤‚¥¥¤I¤†¬¬×¬¤¤¤ ¤†¬¬×¬¤¤¤ ¤†¬¬×¬¤¤¤ ¤†¬¬×¬¤¤B¤¥«¤„¥««¥¤¥¥«¥¤¤¥««¤¤««¤¤«¤†¥««¥¤¤«¤«…¤¥¤««¤‚¥¥ ¤†¬¬×¬¤¤C¤ƒ¥¬¥¤„¬¥¥¬¤’¬¥¤¤¥¤¤¬«¤¤¬«¥¤¥¬¥¤—¬¥¥¬¤¤¥¬¥¤¥¬¥¤¬¥¤¤«¤¤¬¬ ¤†¬¬×¬¤¤D¤‚¬¥¤•¬¥¤¤¥¬¤¤¥¤¤¥«¤¤¬«¤¤¬«¤”¬¥¤¤¬¥¤¤¥¬¤¤¬¥¤¤¬¥¤«¤¬¤†¬¬×¬¤¤D¤‚¬¥¤†¬¥¤¤¥¬¤Œ¥¬¬¥¤¤¬«¤¤¬«¤˜¬¥¤¤¬¥¤¤¥¬¤¤¬¥¤¤¬¥¤¤¥¬¬¥¤†¬¬×¬¤¤D¤…¬¬««¥¤‹¬¥¤¤¥¬¤¤¬¬¥¤†¬«¤¤¬«¤—¬¥¤¤¬¥¤¤¥¬¤¤¬¥¤¤¬¥¤«¬«¥¤†¬¬×¬¤¤D¤…¬¥¤¥¬¤‰¬¥¤¤¥¬¤¤«¤‰¥¤¤¬«¤¤¬«¤”¬¥¤¤¬¥¤¤¥¬¤¤¬¥¤¤¬¥¤¬¤«¤†¬¬×¬¤¤D¤†¬¥¤¤¥¬¤„¬¤¤¬¤’¥¤¤¬¥¤«¬¥¤¤¬«¤¤¬¬¥¤†¬¤¤¬¤¤¬Ž¤¤¬¤¤«¤¤«¬¤¤¬¬ ¤†¬¬×¬¤¤D¤†¬¥¤¤¥¬¤‚¥¥¤‚¥¥¤Š¥¤¤¥¬¬¥¤¤¥¤‚¥¥¤„¥¤¥¥¤ˆ¥¥¤¥¤¤¥¥ ¤†¬¬×¬¤¤D¤†¬¥¤¤¥¬¤‚¥¥+¤†¬¬×¬¤¤D¤†¬¥¤¤¬¥¤¥+¤‡¬¬×¬¤££A£«¬¥£‚¬¥£ƒ¤¬¥%£ˆ¤¬¬×¬¤££Z£‚¥¤£ƒ¤¥¤%£ˆ¤¬¬×¬¤£££ £ˆ¤¬¬×¬¤£££ £ˆ¤¬¬×¬¤£££ £ˆ¤¬¬×¬¥¤¤¤ ¤ˆ¥¬¬×¬zsss sˆz¬¬×¬slll lˆs¬¬×¬slƒ$HllVl+ + ‚lH ‰Hs¬¬×¬sl‡H9$llVlÐ ‚× ƒl¥ Š+Hs¬¬×¬slˆ$+##$$l‚s¥lž¥†llz¥¥zl¥†lls¥ll¥Œllz¥ls¥¥žllž¥ƒl¥zl‰z¥llz¥llz¥‚sl¥†lls¥¥žll„Ь¬V+ˆ¬¬×¬V+†V¬l¥ ¬–+Hs¬¬×¬sll$H99HH$$l’ž×sllž×s¥××lz×zz×zlŸ¥Ðs¥Ðlž×sÐ¥sÐ¥z×zs×¥sמž×s¥×s×¥l˜¥×ll¥×lz×zzמ¥Ðs¥Ðs×¥sמl~l„Ь¬+‰¬¬×¬+V¡V+¬l¥¬¬+¬¬V+¬+Hs¬¬×¬sll$HHƒH$Hl‹ž×sll¥×ll¥×lƒsמl‘¥×lž×s×¥lÐО×ssמlˆž×s¥×s×¥l¥×ll¥×lz×zzמÐÐl…s×¥ssllÐ ¬†×¬+¬‡+¬l¥¬œVV¬+Hs¬¬×¬sllH$H$$$l’ž×sll¥×lžÐ×llsž¥ÐslžžžÐ¥lž×s×¥lÐО×ssמlžslž¥Ð×s×¥l˜¥×žžÐ¥llz¥¥×žÐÐlsžs×Ð¥×¥l~lÐ ¬†×¬+¬‡+¬l¥¬‘V¬¬+Hs¬¬×¬slƒH$Hlˆž×sll¥×lž†lsÐ¥žsl ž×žžllž×s¥Ð¥×zž×¥l¥Ð¥×slž¥Ð¥l×Ðsl˜¥×žžÐ¥llz¥¥ÐszץХl¥Ð¥×sl~lÐ ¬†×¬+¬‡+¬l¥¬‘V¬¬+Hs¬¬×¬sl†H$$H$l‡ž×sll¥×lƒž×sl‚ÐÐl„ž×sls†lž×zlls‚lls„llssl†¥×ll¥×l‚sslslsllÐ ¬†×¬+¬‡+¬l¥¬’VV¬+Hs¬¬×¬slˆH$$HHHl“s¥×zslž×ss¥Ðlz×zz×zl‰¥Ðs¥Ðlž×slƒzÐsl†¥×ss¥ÐlllÐ ¬…׬+›+¬l¥¬¬+¬¬V+¬+Hs¬¬×¬sl$ƒ$Hl¥„žllž¥l„z¥¥zl¥„lls¥lz¥lllÐ ¬…׬V+†V¬l¥ ¬‹+Hs¬¬×¬slH$‚$llUlРׂ¬+ ׄ¬l¥ ׋¬VHs¬¬×¬sl…H$HHllUl sH sƒHll s‰HHs¬¬×¬sss s…¬¬×¬¬¬¬ƒ¬×××ׂ¬¬¬¬+•Œlp P\€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌÌÌÌÌÌÌÌ—”Ž”lp@Ñ 3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ×××××××××××××××××××××××××××××××××××××××××××Ö××××#ׂÐÐ×××××TׇÖ×Ö¬ÖÖ¬ЇÖÐÖÐÖÖÐÖ‡××Ö×Ö××ÖÐ×Ö××D׃³×Ö×!×Ö¬ЬÐŒÖÐÖÖÐÖÐÖÐÖÖÐÖÐÖÖÐÖÖÐÖÐÖÖÐÖЄÖÐÖÖ××;×Ñ×׃֬« « ¬ ЂÖÐÖ—ÐÖÖÐÖÖÐÖÐÖÖÐÖÖÐÖÐÖЬÐЬЬƒÐÖÖ××1ׂÖÑ×׬ « ¬ЬГÖÐÖÐÖÖÐÖÖÐÖÐÖÖÐÖÖÐÖЬƒ««¬×××Ñ ×‚Ö­¬†ˆ×׬×׃«V€ « ¬Ж¬ÐЬÐÐÖÐÖÖÐÖÐÖÖÐÖÖÐÖÐÖ Ð¬«Ö××׃³ÑÖ׆ÑЬ¬ˆ¥ˆzzzÑ׬×ׄz€ « ¬ЃÖÖÐÖÐÖƒÐÖÖЬÐ ¬«Ö××ׂÑЬˆ‚zz‡zzÖ×׃րV€ « ¬ÐŽ¬ÐÖÐÖÐÖÐÖÐÖÖÐÖ Ð ¬«‚¬××ׂÑÖ¬¥z‹zzzzÐ×׃¬VV€«¬Ð¬«‚¬×××ЬƒˆzÐ×ׂ+€V€ƒ€¥ «‚¥¥ €‚¥«¥„€€×g×Ñ#׉Ѭ¬ˆzzUUO¬× ×…V+€OUV€‚€¥«¬ŒÐÐÖÐÖÐÖÐÖЬ¬«¥€‚VV€„€€Ö××׈ЬˆzzUU%O¬× ׄÖV+UV‚UOUV€‚¥«¬¥«‚¥¥€V‚€¬×e׆Ö×Ö¬ÑÖ׈֬¬¥zUU,O¬×!ׂÖV+‚OUV€¥«¥ «¥€V„UU€«×Z×…ÑÖÑÖÑ׃²­­¬‚­Ö׈֬¬zUU2O¬×#׊¬«€VU++OUV€¥ «¬ «¥Š€VVz«¬¬×V׃ÑÖÑ×Ѭ‚­Ö ׇ֬ˆzzU9O¬×'׆ÖÖ¬z+UV €¥«…¥¥¥¥«¥†€€¬Ö×K׌ÖÑÖÑ×Ñ××ÑÖÑÖ ×‚¬Ö ׇѬ¥zUU?O¬×+׃OOV €‚¥€V€‚¥‚€‚«Ö×A×Ñ×’Ö××ÑÖ××Ö××ÖÑÐÖÖÑÖÑ׆֬¥zUFOƒ¬×Ö×*׃¬VUV €€VUV€¬×<×ÖׄÖÖ××ÖŒ×ÐÐÖÑÑÖÑÖÑÖÐ×ÖׇÑЬ¥zULO„¬ÖÖ×+׃UUV€VƒUVU V€z €„«¬ÖÖ×4׆ÖÑ××ÖÑ×ÑÐÐÖÖÐÐÑÑÖÑÑÖׂÐÖׇѬ¬zzUROƒ¬×¬×.׃«VUV‡UUVUUVUV€\8‚\\ €‚«¬„Ö××Ö×%ׂÖÑׄÐÐ××ÖŽÑ×ÐвÐѳÖ××Ö³Ñ׈ÖЬ¬zzUXO¬×.ׇÖÖ¬VUUVUVUV„UVVU V€\8€‚«¬Ö×Ö×ׄÑÖÖÑ׈ÐÐÖÑÐÐÑÑÖ³׈²¬¬¥zzU^O¬×'׊֬¬«€zVVUVUVUVUV€\8€‹««¬ÖÖ¬××Ö××’ÖÑÖÑÖÑÖÑÖѬÑÖ¬ÐѬ­ׇ֬¬¥zzeO¬× ׈֬¬«zVU†VUVUVUVƒUVUV€z\!€‡««¬Ö¬Ö×׊ÐÖ×ÖÑÖÑÖÑÖЃÑÐÑЇ¬¬Ð¬Ñ­Ö×­²××ÖЬ¬¥zUUjO¬××Ö¬„ÖÖ¬€ UŒVUVVUVUVUVVUVUVU V1€…«¬¬ÖvׂÑÖÑÖЬÐŒ­ÐÑÐЬЬЬ¬Ð¬‚×Ñ׋­×׳Ь¥¥zzU O‚UUdO¬×ׄ֬¬«‡zVU€€VUVUVUVUUVUVUVUVVUVUVUV8€‚«¬Öh×ÑÖÑÖÐÑÐЬЬЬ¬¥Є¬Ð¬Ð ¬‹²ÑÖ¬¬¥zzUUvO¬× ׬‡««€zVVU•V€€VUVUUVUUVUVUUVUUVUV‚UUVUV‚UU V€V‚€V2€‡«¬¬Ö¬Q×Ö×Ñ׌ÑÑÐÑÑÐЬЬХ¬…ˆ¬Ö¬Ð¬ƒ×¬z}O¬×׬†«zVVU„€€VU•VUUVUUVUUVUVVUVUVUVVU VU V€ƒ€€zVƒ€VV)€„z€€z€„««¬‚ÖÖH×…ÑÖ×ÑÖЇ¬Ð¬Ð¬¬¥¬Œ²­Ö×׳Ѭ¬³¬¥Ð¬ƒ²¬U}O¬|×Ö…¬«€VUVU‹V€€VUUVUUVVUŒVUVUVUVUVUVUV€ ƒ]VVz‡VzVV€VV%€z€z€ƒ«¬¬9דÖÑ××ÑÖ××ÖÐЬЬЬЬЬ„³³×³׈֭¬ˆ¬×¬Ð¬‚×}O¬v׈ÖÖ¬««€zV‚UOU€…VVUUVUŽVUVUVUVUVUVUVU VUV€ VƒzVV‚]€…€VVzV‚€V&€…U+OV€2דÑ××ÖÖ×ÑÐЬЬЬЬЬЬ„ЭÖÑ׈¬²¬¬×³¥¬Ð¬ƒ×¬U2O‚zzO‚zzAO¬o׊ÖÖ¬¬«€zVV"U„V€€VUƒVUVUˆVVUUVUVUV†UVVUVUV€ƒ]]Vˆ]€]V]zVƒ€€z€†zV2+V€-×Ö׌ÖÑÖЬЬЬЬЬ‡²­ÐÑ­¬­׈Ѳ¬ˆ¬Ð¬¥Ð¬ƒˆ¬ˆ¬‰ˆ¬ˆ¬ˆ¬Ð×z'Oz OŒz¬¥OUzOO¬¬U?O¬iׇ֬¬«€V(U‡V€VVUVU•VUUVUVUUVVUVUVVUVVUVUVUV€ †]]VV]VˆV]VVz V€†zV2V€&×Ñ׃ÑЬЄ¬Ð¬Ð¬Ð­²Ð­ÑÑ­²Ñ²­²¬ˆ¬ ׂÑÖ ×‡¬­¬¬Ð¬¥Ð¬ˆ‚¬ˆ¬‹ˆ¬ˆˆ¬¬ˆ¬×¥U%Oƒ¬OŽÐUzzUzzUz¬U OƒU0O¬fׄ«zV'UVU„V€€VU”VUVUUVUVUUVUVUVUVUVUVUVU V€„]V]Vƒz] V‚€V €V€$׊ÖÑЬЬЬ¬Ð¬Š³³ÑÖ³³­¬¬²¬­¬×¬ ׈Ѭ׭Ð׬¥Ь¬ˆˆ¬ˆ¥¬ˆ¥ˆ¬¥ˆ…¥ˆ­ÖU$O„¬¬zOÖOzzOOUzzUOÑO†zˆ¬¬¥z/O¬f×V0U€…VUVUVU‹VUVUUVVUVVUVUVU VU V€ ƒ]VV…]VVUVz V…€V€VV€„zV€€ׂÑÖÐŽ¬Ð¬¥¬Ð¬Ð¬­²­²­×­¬ƒ­ÑÖ ¬׃¬¬­¬³ ׈²­¬¬×³¥¬Е¬ˆ¥ˆ¥¥ˆˆ¥ˆ¥ˆ¥¬³#O„¬¬zO‘¥ÖzOzzO+3+OyzyzzOˆUzЬ¬U-Oˆe×ÖV(UVU‡VUUV€€VUVU‚VUV†UVUVVUV‡UVVUVVUVUV€„VVV…U+VU VŒVVVVVVV]V€×”ÐЬЬХХ¬ÐЬЬ²¬¬Ñ²¬ׂ¬²¬²¬‰­¬²­¬²­¬ˆ׃²­Ö¬Ö ×Ѭ„­×¬¥Ж¥ˆ¥ˆˆ¥ˆˆ¥¥¥ˆˆ³¬OUO…z¥¬¬zO–U¥UzyOP//.POOUzUOOUzO‡zzЬˆz,O¥e×ÖV&UVUVU˜V€VUUVUVUUVUUVUVUUVUVVUVUVUV€VV++2V2V]VV]V+2VVVVV]V]V]V…VV]zV‚2UVz €׊ÑÖÑÐ¥¬Ð¬ÐÖ׬„­¬¬Ñׇ¬­²¬¬Ñ׬ˆÑÖ¬¬Ñ¬¬­×¬„²­¬Ñ ׬„ˆ×²¥Ђ¬¥¥ˆˆˆ¥¬×z O„ЬO‰UzOOzzUO3/.Š+OUzzUU¥³O†z¬Ð¬¥U*O¥e×ÖV1U…V€€VVU“VUVUVUUVVUVUVUVUVVU VU V€V™+V]€V]VzVOVVV] VzVz V†UVV2VV€z€׌ÑÖÑÖÑÖÑÖÐÑÐЬ³ׂѲ¬…²¬²­Ñ×ѬŠ­¬Ñ¬²¬­²Ñ²¬‚ˆ²׃Ѭ­¬ ׈ÖѲ¬××¥¥Ѓ¥¥ˆˆˆˆˆ¬×ˆO…UU¬ÑzOŠz¬¬UUzzUO./.ŒPyUOOzzOz¬¬zO…z¬Ð¬*O¥e×ÖV.UVU„V€€VUVUVUVUVUVUVUVVUVUV„UVVUV€VƒVVUV‚V‰+VVVVV2Vz V€ƒz€Ö׌ÑÖ×ÖÑÑÖÑ֭вЋ­Ð²¬Ð¬Ð¬­¬­×¬†Ñ²¬¬Ñ׬²ׂ¬­¬­¬ƒÑ¬²¬ׂ¬²¬‚­Ñ ׬„­×­¥Ђ¬ˆˆˆ‚ˆˆƒ³×UO„z¬¬O‹U¬¬UzzOOUO3/Ž..3UO\UOzzUz¥OUz+O¥e׃ÖVV-UVU…V€€VVU‹VUVVUUVVUVUVƒUVUVUV€ ‚] VŽ+VVVVV]VVU+V‚++V‰OVV++V2U2 V€ƒV€€ÖЃÖÖ¬Ї­¬¬Ð­¬Ð ¬ƒ­¬Ñײ¬­¬ÖѬ­¬Ñ¬­¬¬Ñ×Ѭƒ­Ð׬†­Ö׬­²¬Ö׈­¬­¬­¬¬² ׈Ѭ¬ˆ×׬¥Њˆˆˆˆˆˆƒ¬×O„U¥ÐO‹z¥UUzO77UOP/.‰U9G@2OOzzO‚Uz3O¥e׃ÖVV3U„V€VU‹VUVUUVUVUVUVˆUVUVVUVU VU V€‚VVƒVVVVVUV‚++ V‚+OV–€€VV€VV€VV¬ÖÐЬÑЬ¬Ð­²¬…Ь¬­²׋Ѳ¬¬­Ö­²¬¬²¬‚³×¬„­²²Ð­‹×²¬¬Ñ¬²­²­Ð¬×¬Ö׌ÖÖ×­Ö­²¬¬×²Њ¬ˆˆˆˆˆˆˆ‚׬Oƒ¥¬OŠUzyO7DD=7+/.@GŒ@9+OzzUOЬz1O¥eׂÖV(U„VUUVU‹VUUV€€VVUUVUVU‹VUVUVUVVUVUVUV€‚++ƒ22UVŒ]]€VVVV‚]V+V+V‡+VV€VV€Vƒ¬Ö­¬Ð¬ˆ¬¥¬×Ѭ—³×¬­¬×ÑЭÐÐÑЬ¬Ð¬¬Ð¬¬Ñ׬‰Ñ׬¬­²¬¬²ׄѬ²Ð¬²¬ƒˆ¬Ñ¬„­×¬¥Јˆˆˆˆˆ‡ˆˆ²×UOUOˆ¥OOzzO7D=4/.ƒ;GG@‹9UOOUzUU¥¬z0O¥eׂÖV4U€ƒVUVUV‰UVUVUVUVUVUV€…+++ƒ$+2 VV†zVVV V‚O+V†U++VV€V¬ˆ¬ˆ¬ƒ­Ð­×­¬Ð¬‘Ь¬ˆ¬ˆ¬¥¬¬¥¬­²×¬ƒ­²­¬׃¬²­¬‚Э¬‚×­¬ƒ×ÐЬˆ ˆƒ¬×¥O„zzUO‰¬×zUzUOyVD=3/.;GŽ@@9OP3OUzyO¥U/O¥e׃ÖUV+UVUˆVUUV€€VVUVVUVUVUUVUVVUVUVUVUV€ƒ$+V +‚$+ƒVV VƒzVz VUV¬ˆ¬ˆ¬ˆ¬‰Ð¬¬²¬×׬Ь‚ÐŽgŠdd55ˆ¬³¬Ö׬ƒ²¬­¬­ׄ­¬Ñ²¬‚­²¬­¬‚ÐÖ¬„³×¬¥Ðˆ„¬ˆ³ÖO‚UUOŠU¬OzO77OUD=9/ƒ..4G@Ž3;;4POUzzUOUz,Oe×Ö*UVUVU„€€VU“VUVUVUVUVVUVUVVUVVUVUVUV€‚+ +Œ$$$+$$ ‚VV‚zV+‚22V ¬ˆ¬’ˆ¬¬ˆ¥¬ˆ¬ˆ¬Ð¬­¬ÑÖ¬¥¬†²­¬³¬cŽ¬…¥¬­­×¬ˆ²¬¬­²Ð¬¬ ׬‡²Ñ¬¬ˆÑ²¬‚Ñ­¬ƒÑ¬¥Ь ˆŠ¬¬ˆ¬ˆ¬¬²×z OŠUzzO7CC=7>Dƒ==\/.G@;442OyzzUU¬ÐzOOU(Oe×Ö1UVU‰V€€VUVUUVU„VUVVU‰VUVUVUVVUVUV€‚$ +–$+$$$+$$+$V‡++$++$$ +VU V¬„ˆ¬¬ˆ¬‹ˆˆ¬¬ˆˆ¥¬ˆ¥ˆ¥ˆ¥¬¬­²×Ь²­³²¬²¬­׃ÑÐÑ׆ˆ¥³¬¬Ñ¬‡­×¬­¬¬Ö ×Ö¬…­¬¬×Ѭ‚²Ö¬Іˆˆ¬ˆ¬¬ˆ‚¬ˆ¬Žˆ¬×¬OUUOOUUOUUOˆU¥zOzzUUC‚=CD„==a:/‚.@G‚@@;ƒ443UŠOzzUz¬U¬z'Oe×Ö.UVU…€€VVU‚VVUŠVUUVUVUVVUVƒUVUV€ƒ++O +†$$$$$$$+VV+V‚+V+$ ‚++ V«¬¤ˆ¬ˆ¬¬ˆˆ¥ˆ¬ˆ¬¥ˆ¥ˆˆˆ¬¬³Ñ××ЭÖÑ׈¬²¬‡×׳Ö×Ѳ¬‚ˆ¥¬‚³­¬ˆ×Ѭ¬²¬ˆÖ×…Ñ׳׭ ¬­¬ˆ¬ˆ¬²­¬ˆ¬×¬¥І¬¬ˆ¬¬ˆ¬‹ˆ¬¬ˆ¬ˆ¬¬³×V UO‹UzOz¬zzUUOUCƒ==CD=‚‹3/4G‚@@;42EE1OUzUzU¬'Oe×Ö%UVUVUƒVUU€—VUUVUVUUVUVUUVUVUVVUVVUVUV€+V+œU+++$+$$$$$$$VV+V„+V+$+ ƒ+VUVŠUV««ˆ¬ˆ¬ˆ¬ˆƒ¥ˆˆ†ˆˆˆˆ‰ˆ¥¬¬²­×Ьˆ¬ˆÑ×ײ××­ˆ¬‰ˆ¥¬ˆ¬²­¬ˆ¬‰²³¬ˆˆ¬²¬ˆ˜¬¬ˆˆ¥¥¬Ñ¬¥ˆˆÐ­¬¥ˆˆ³³¥Ј¬¬ˆ¬ˆ¬ˆ¬¬ˆ¬ˆ¬¬ˆ¬×+UzˆUUO‹¥zOzzU[…a[7C‚==D=‡¯Ó43£gG@;.4@FF>>+UzOOUU'Oe×Ö0UVU„V€€VU’VUUVUVUVUVVUVVUVVU VUV€+2+‡$$+$+ˆ$$$ƒ+VUV‚++ ƒ$+2V‡UUVUV«« ˆˆˆƒˆˆ¬‚ˆ²¬Ö¬Ñ×–Ñ×ÖÑÖÑÖ׬¥¬ˆˆ¬­¬ˆ¬ˆ¬­Ð¬‚Э¬„ÐЬ¬ЬÐÑЃÖÑ׬¥Ьˆ¬ˆ¬ˆ¬¬×­+Uˆ¬¥ˆ¬UUO‹UUOzzU¯¯…aaC‚==D=ƒ…ÓÓ©‚gFG@;Œ4.@FF>>\zUzU*Oe×Ö UV UVUƒVUU€ŒVUVUUVUUVUVUVƒUVUVƒUVUVUV€+V+ƒ$$ˆ+2V+$‡$$$+V+‚+$‰++UVVUVUVUƒV«¬ˆ¬…¬¬¥¬Ñ‚¬ˆ¬Ñ²­Ð¬­­¬­²¥¬×ÐÑÖ×Ñ×ÐÖÑ×ÑÖÑÑבÑ×ÖÖÑÖ×Ð×ÐÑÖÐ×ÐÐÑЃ¬¬Ѓˆˆ ˆ¬‡ˆ²×+VUOˆzUU¯¯…aaC‚==Dƒ==aÓ„©©…FG@;Œ4.4FF>>\OOzzOƒzz#Of×"UVUVU—V€€VVUVUUVUVUUVUVUVUVVUVU VUV€‚+$ +„+V++…+V+‚++++VVUVUVUVUUV¬¬ˆ‡Ð¬ˆˆ¬¥¥¬ˆ¬‚ˆ ¬–¥ÐЬЬ¬Ð¬Ð¬Ð¬Ð¬Ð¬¬Ð¬¬Ð¬•Ð¬¥¬Ð¥¬¥¬¥¬¥¬¥¬¥¬Ð¥¬Є¬ˆˆˆ¬ˆ†¬ˆ¬×ˆ+ U OUzUOzUO…¯…aaCƒ==CDƒ==7Ó„©©¯DG‚@@;“4.4FFE>>OOUzOOz¬Ð¥#Ozf×(UVUVU…V€€VVU‹VUUVUVUVUVUV‡UVVUVVUV€+ —++VV++$+UV+$$$+VƒUVV+ƒ++ƒ+OUVUV…UVV¬¬ˆ†¬¬ˆ¬ˆ¬ˆ”¬¬Ð¬Ð¬¥¬Ð­ÐÑÖÑÖÑЬ¬ÐÖ‹ÑÖÑÖÑÖÑÖ¬¥¥Ð¥Ð¥Ð¥(Ћˆˆˆ¬ˆˆ¬¬¬Œ³³Vs»—sUˆ¬ Oƒz¬¬U†O[¯¯aaCƒ==CD=ƒ¯ÓÓ©gG@;’.4@FF>>UOUzOOz¬ˆU#Of×'UVUVUV€€VUUVUUVUVVUVUVUVVUVVUVUVVUV€Ž+$$$+V†V+2VU+ƒ$+VO‚$+ƒ++‚++ V¬ˆ¬ƒˆ¬ˆ¬„ˆ¬¬ˆ¬ˆ¬¬ˆ¬¬ˆˆ¬¬ˆ¬ˆÐ¥¬¬ˆÐÑÐÑÐ×Ñ×ÑЉÑÖÐÑ×ÐЬ¬Ðœ¥Ð¬¥¬Ð¬Ð¥Ð¬¥¬Ð¥¬Ð¥Ð¬¥Ð¬¥¬Ðˆ¬†ˆˆ¬¬ˆ¬Œ×s»»—UˆˆzU O‹zUUzO[¯¯aaC=D=¯Ó„©©gFG@;4.@FF>>2OUzzOUzU%Of×&UVU„VUUVUVU€‚VVU’VUVUUVUVUVUVVUVVUUV€Ž+$$+$$VV„VO++$ƒ+V„2VV++‚+2 V¬žˆ¬ˆ¬ˆ¬¬ˆ¬ˆ¬¬ˆ¬ˆ¬ˆ¬¬ˆ¬¬ˆ¬¬ˆ¬¬ˆ¬С¥Ð¬Ð¬Ð¬Ð¬Ð¬Ð¬Ð¬Ð¬Ð¬ÐЬЬ¥ÐЈ¥ˆˆ¬ˆƒ¥¬ˆ ˆ¬‚ˆ¬ˆ‚¬¬ˆ¬ˆ„¬ˆ¥ˆˆ¬¬ˆ¬ˆ¬ˆ¬‡³¬UOUU+UO‰UzOU¯¯…aaC‚==D=aÓ„©©…FG@;Œ4.4FF>>\OUzz)OfׂUV,UVU˜V€€VUVUVUVUVUVUVUVUVVUVUVUVUV€+++$VV‚V‚+$$+V2+‚+2 V¬Šˆˆ¬¬ˆ¬ˆ¬¬ˆ¬ˆ¬¬ˆ¬¬ˆ¬¬ˆ¬¬ˆ¬!Ђˆ¬ƒ³×²¬„Ñ×zˆ‚V׈‹ˆ¬¬ˆˆ¬¬ˆ¬‡³ÑV1\\VUV O‚UzOˆzOO…¯…aaCƒ==CDƒ==aÓ„©©…DG‘@@;;5544FFE>>OOUzOU"Of×(UƒVUVUVUV€€VUUVUUVUVUVUVUV„UVVUV€++$$+]VzV†]VV++†$+V2ƒ+++ V¬ˆ¬„ˆ¬¬ˆ¬ˆ¬ˆ¬¬ˆ¬ˆ¬¬ˆ¬zzƒ¥¥ˆ¥…ˆ¬¥¬¥Єˆˆzƒzz„z¥ˆ„¬ˆ¬ˆ ¬„ˆˆˆ¬…ˆˆ¬¬ˆ¬Ž¬×[©Ó©VVVU OUˆzOzUO…¯…aaCƒ==CDƒ==7Ó©DGˆ@@;5/55@FŽ>>UHUzOOUzz¬¬U!Of×V+UVUšV€€VUVUUVUVUVUVUUVUVVUVUVUVUV€Œ+$++$VVŠ+$+V2V +‚+2V\V\¬‚ˆˆ¬ˆˆˆ¬ˆ¬¬ˆ¬ˆ‰¬ˆ¬ˆ¬ˆ¬ˆˆ¬„+$++‚$+PЄ¥V+¤$$+$$$$++%$+$$$+++++++Ž×V¬ˆ¬ˆ¬¬¬Žˆ¬³¬z£ÍÍ[VzVU Oƒz¬¬U†O[¯¯aaC=D=ƒ¯ÓÓ©‚gFG…d†V2FŽ>>2OOzUOz¬¬Ð¬U!OeׂÖVUVUƒVUVUVU‰V€€VVUVUVU‰VUVUVUUVUVUV€Œ+$+$+V+$+V2+‚+‚+2 V¬‚ˆˆ¬ˆƒ¬ˆˆ¬‚ˆˆ¬‚ˆˆ¬V$$$ ‚+Б¬¥+$…ÖˆV¬…ˆˆ¬¬ˆ¬Œ¬³×++U+UU+U OŠzOUzO[¯¯aaC‚==D=…Ó©©…CDF@@†ÓÓ©£OEFŒ>>\OOzzOUU#Of×V!U„VUUVU„V€VU‰VUUVUVUVUV‡UVVUVVUVUV€Œ+$$$+VVŠU$$V +‚+2 V‚UV¬ˆ¬…ˆ¬¬ˆˆ¬ˆ¬„ˆ¬¬ˆ¬Œˆ¬+$$+V2V+‡$$Vеˆ+$+%+$+$%+$++O++$$+$+$+%$$+%V×Vˆ¬ˆ¬Œˆ¬ˆ¬×ˆU[££UUVUOˆzOU¯¯…aaC‚==Dƒ==aÓƒ©©…C‚==Ó„©©O9FŠE>>UOzzOOU%Ozf×V'U„VUUVUƒVUVU€ŒVUUVUUVVUUVUV„UVVUVUVUV€+$$++VVV V++V +ƒ+V2 V\¬ˆ¬ˆ ¬ˆ¬Œˆ¬¬ˆ¬¬V$++‘2+22++++$$+$+¥е¬ˆˆ++$$+%+$%$P3:9$$$+$$++%$­¬V¬ˆ¬ˆ¬ˆ³­z£ÓÓ£UˆV OUzUOOzOO…¯…aaCƒ==CDƒ==7Óƒ©©¯C‰==¯ÓÓ©©y\F‡>>UOUzU'O‚Öe×V#UVU„VUUVU…V€VVU‰VUUVUVUVUVUVUV€+$$+]] VO$V2V+$+‚+2V\V¬ˆ¬£ˆ¬¬ˆ¬¬+$+VUyyUyUUOUU+zV+$$VЗˆz+$$++$$+$+3;›+$$+%$$+$O+×Vˆ¬ƒˆ¬ˆ¬ˆ²×[££UV‚UU OŒ¥¬ˆOUUO[¯…aaCƒ==CD=ƒ¯ÓÓ©C‰==…ÓÓ©©2F‡>>2OOzUOƒUzU Ozf׃VUV(UƒVUVUƒVUU€†VVUVUUVŽUVVUVUVUVVUVVUVUV€Š+++$+ V+ƒ$V2V+++ƒ+V2 V¬‡ˆ¬¬ˆ¬¬ˆ¬ŒˆV++z»»˜»Š˜$+%++¥Ð’¬+++%$$$$$‚+3;†:3+$%‘$$+$O352¬¬z¬„ˆ¬¬ˆ¬…׬U12Uƒ+OU OŒU¬UUzO[¯¯aaC„==ggD‚=¯Óƒ©©aC‰=aÓÓ©©£OEFŽ>>2OOzzOOz¥¬Ñ Ozf×V(UVUVU—V€€VUUVUVUUVUVVUVUVVUVUV€Ž+$$++V€V+2V++…++ƒ+V2V\V ¬ˆ¬Š+$+V»»˜»‹˜˜P$$$VЋˆV$$$%†+33P2;„:3++U’+$$355+z×V¬ˆ¬ˆÖ×z7CC7UV OˆUOUzO[¯¯aCˆ==…¯…ga…Óƒ©©…C‰==¯ÓÓ©£O>FŽE>>OOzžOO¬¥z Ozf׃VUV#UVUVUVU€ŒVUUVUUVUVUVUVUVUVUV€Ž+$$$V] V‚U+2V…+$++‚+2V\V¬³!¬…ˆV+‚s»u‘˜»˜»»—˜˜$+$+¥Ї¥++‡+OOUO3 ;‚:cgƒ7%+$$3552+¬¬z¬ˆ¬‹×ˆ7=C=UVVOˆzOO…¯…aaC‰==a¯Ó¯……¯Óƒ©©¯C‰==¯ÓÓ©©y\FŠ>>UOUzUOUz#Ozf×V)UVUVU‰VUUV€€VUVUVVUVUUVVUVVUVVUVUV€‡+$$$‚VV V„+$+V+ +++V†\VV\UV¬„²¬¬²¬ˆ¬‰+$+z˜u‘P—˜˜»»P˜O%$+VЃ¥×ˆŠ+,+ysÁ: ;˜@aa77+1\33P355,$$Özˆ¬ƒ³¬V U OU¥zOOUUO…¯…aaC=¯ƒ……¯Ó©C‰==…ÓÓ©©2F‡DD2OOzU&OzfׂVV"UVUVU„VUUVU…V€VVUŒVUUVUVUVUVVUV„UVVUVUV€Œ+$$+$VV] V2„$+V„2VV+„+++„+‚+2 V ¬²¬²¬Ž¬‰U+++uuP»˜Œuu˜+$+¥Љ¥²×V$3/žÁ‚s‚ž: ;„:g7Hƒ£\94‹,$$+²¬VV¬ˆ×29@\UUV Oƒ¥¬¬U„O[¯…aC[¯…Ó©aC“=aÓÓ©©£OV>D>>\UOOzz&Ozf׃VUV#UVU„VUUVU€•VVUUVVUVUVUUVVUVVUVVUVUV€Œ++$$+VV++V++ƒ2++‚+Vƒ\V\V¬„²¬¬²¬²¬Ž¬‰$+PuPƒ+—˜u‹P˜+$$+Љˆ×$P5/4Á‚sÁ ;5‹…+£©ÇÁaC711++†z׈ˆ¥¬ƒ×¬\G†2¬+ O‰UUUzO[¯¯aˆÁ£—£¯¯…Óƒ©©…C‹==¯ÓÓ©©UOOUO‚UzO…UzUO‚zÖeׂVV!UVU„VUUVUVUƒV€V‡UVUUVVUV„UVVUVUVUV€+Ž++$2VVVV Vƒ++V„2VV++‡2++$+++ Vƒ\VV(¬ˆ+%+VuP’+P˜PuuPuP+%$+¬Ð…³×+,/uÁ‚s»:;:@@ÍÓ£yÇÇÁ£C71†>2+++¬ƒˆ ¬ˆ²ÖV\992UVUOUzOU¯¯…aaÁÁ—£¯ƒ……¯Óƒ©©¯C‹==¯ÓÓ©©yOOUOŠUzOOz¬¬Ð¬zOzf×VUVUVUV UVUƒVUU€VU‹VUVUVUVUVVUVUV€+$$$+V]Vz V‡+$+V++‚$+…+2V\V(¬Ž+$$PP+P++uPŒuPu+$+$Њ¬ˆ×¥.//:yÁ‚s£†Áž:;;‹ÓŽ©ÓÓ££ÇÇ£C7+1+FEˆ+¬ˆˆ¬ˆ¬‚× U OUOƒzOO…ˆaaÁÁ—¯ƒ……¯Ó©C‹=a¯ÓÓ©©+OUOŒUOUzOzzzUO‚zÖe׃VUVUVUŠVUUVUUVUUVUŠV€VUUVUUVU„VUVUVUV€+$+++V]zVƒU2++V+„+ +…+2V\V¬Ž¬†Ž¬¬Ž¬Ž¬Ž¬Œ+$+VP+PPˆ$+$+З¥³Ö+3/5G@OsOsO…¯……¯†@:©†U£…\£‘E>21\EDEE2+²¬¬ˆ¬ˆ¬ˆ¬Œ²ÐVdGG2VVVU OŽUzOUUOO[aa[UÁˆ—©¯¯……¯Ó©…aCC7Ó…©©£OOUƒOzz%Ozf׃VUVUVU…VUVUVUVUVU”V€€VVUVUVUVVUVUVVUVUVUVUV€Œ+$$$+VV‚O++V+$++‡+++2 V¬ƒŽ¬Ž¬Ž¬Ž¬$+P+%++PP++PP++%%+ÐŽˆ×,/;GGz—s[¯©Ç£9–2992U299+>FEDE3+$¬ˆˆ¬ˆ¬ˆ¬‹Ö9@d\UzzU O†¬¬UUzO‹ÁÁ—£¯¯……£¯…Cƒ=[©Ó†©£UOUUO‚Uz%O‚zÑe×VU„VUUVUVUVU€‚VVU‰VUVUVVUVUV„UVVUV€+ˆ+++V++V2+‹+++++VU V ¬†Ž¬¬Ž¬Ž ¬Ž¬œ+$++$++$%$P+$+$$+Ð…¥ÖÑ+,GdÁƒO[…a£Ç‚£@Gƒ9TT+ˆ>EE:;@+¬‚ˆ¬ˆ¬ˆ¬‚׬ U O™UzUUzOUOOUOOÁÁ—ÓÓ©£¯¯…‡a=CC=U©Ó†©©y+OUOƒUzUOUOzf׃VUV UVUVUƒVUVU•V€€VVUVUVUVVUUVUVUVVUVƒUVUV€Œ+$$$+]V„2VV+V„U+U2„$++‰++$++ V‚¬«¬Ž¬Ž ¬V$++V++$+P+$+І¬ˆ×\G@ÁƒsOHO‚U£©‚£9Gƒ@2U…–[U\@A@@+¬¬ˆ¬¬ˆˆ¬¬ˆˆ¬ˆ²²V9::\UVU O„UzOOU˜OyÁÁ—©Ó©£¯¯……aUUVUUO£Ó†©©OOUO‰zUOUz¬zO‚zÑeׂVV#UVUVUVU†V€€VUVUVUVUVUVUV€Œ+$+$+ VU V+‰$V+OVV++2++‰+$++++V€V‚¬«)¬œ++VP$$$++%$$+%$PІ¥×ÑOO9@†ÁÁ»»—‚ÍÓ‚…cG’2%.5c…‹¯¯…‹dG9++ˆ¬‹×3:;9UˆV O‚UUO‚zUO“UUOUÁÁ——©Ó©£©¯¯……O‹y©ÓÓ©©£OOUUO…zzOOˆ¬OzfׂVVUV UVUVUVU„VUUVU€ŒVVUVUVUUVUVUV…UVUVUV€Œ+$$+VV„U2VU†+V++VV+$+$$+++$+VU V‚««)¬ƒV$ƒ+$$$$+$+$+ÐŒ¬ˆ×¥£‹‹\U»Á»ƒFFc˜77…g†\+3;5424††O2+,,+¬ ¬…¥¬¬Ö¬U„VVU+O‡z¥OUUOŽUOOÁÁ—£ÓÓ££…ƒUOUOU†yOOUzOU„zzOOz‚UUO‚z³e׃VUVUV UVU„VUUVUŽV€€VVUUVVUVUVUVUV„UVVUV€‡+$$+‚V VUV…U+VV$$V…OVVU+‹++$+++U V‚««)¬‚V…++$‹$$$VЄ¥³ÖÍÓƒ©Us»†y99>@9+…TT7>454/’.+V2,V¬ˆ¬¬¥¬¬¥¬ˆ¬‹×P33PUUVUUO‡Uˆ¬UUzO†UOOÁÁ©…£yOUUOŠUUOUUO+UOOUOƒUzU#O‚zÖeׄVVUVU†VUVUUVU‡VUUVUUVU‘V€VVUVUUVUVUVUVUVUVUV€+$$$+]V†UVOVV+Œ+VUU+UV2+$+‘$$+++$++VUVV€V…€VV««)¬¥¬‹ˆˆˆVU++ …+Ð…¥¬×£Óƒ©[»¢——syU9@92+>D>455;++,./5ÁÁ£22¬ˆ¬ ¬¥¬‹×¥3//.UVV OŽUUOzOOUOUUOOsŠUOy££zUUyO UOUO‚zU#O‚z³e׃VUV"UVUVU„VUUVU€VŠUVUVVUVUVUVUVUVUV€‰+$$2zVzV‰UUVVU+UV++V‡OUVU+$+$+‹$++++VU V‚««¬ˆ¬¥¬„¥¬¥¬²ׇ³­¬ˆV+$VЊ¥×¬+y…g‹g… »GFF@9772342$Ž,./3žÁž9dЬ ¬ŒÖÐVP33UUVVU OƒUOOUOUOO+OOz¬ˆUzUUOUUOUOUO„UUOOUO‚zÑeׂVVUVUVU…VUVUVUVUV€VVUVUVUUVVUUV„UVVUVUV€Š+$+VV„+UV+‹+VUV+UVU++ƒ$+ˆ$+++U V‚««¬ˆ ¬¥¬ˆ¬¥¬Œˆ¬¬¥žyzzž¬ŒÐÖ׳׳¬¬ˆVV+Њ¬¬×V+177O†HOOHsO—Ÿ»»dGFG@+,299+$%$$%+./.zzVˆ¥²¬‚×z U O‚zUOU‚OUO†UzOzUOU O‚UUOˆUOUzOO¥¬UO‚zÑeׂVVUVUVU˜VUUVUVUUVUUV€€VVUUVUVUVUVUVUV€‡+$$+V…U2UV+‹OU+U2UVU+$++‹$++UVVUV…UUV«« ¬ˆ¬„ˆ¬¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬¥‹žžzyyzzž¬‚гׄ³­ˆˆÐ…¬¥×¬+ ¢++OHVGFFG9+9@@92%$$+.P—O+V¬¬× ¬‚ÖˆO†¬¥zUOUOUO‚UUO‡UUOOUOOUŽOUUOU¬zO¬¥¬ˆzO‚zÑe׃VUVUVUVUƒVUVUVU™VUU€€VVUVUUVUVUVUVVUVUVUVUV€ˆ+$+V„U2V+Š+U+O+UVU++ƒ++‘+++++UVUVUVVUV‚««¬ˆ¬ˆ¬…ˆˆ¬¬ˆ¬ˆ¬…¥¥ˆ¥ž‚zy‰zž¥¥¬Ð³¬ˆЊ¬¬ÐVUPO+$ ‚+29+’$$+$$+ysO+¬²¬³V ¬ƒÐ×UO†z¬¬¬z OˆUUzzzUOU†OUUOUUO„UzOUO‚UÖe׃VUVUVUVUVU†VUVUUVUƒV€€VUVUVUVUVUUVVUVU VUV€ƒ+$‚2V2V„2VV+ž+U+U+UVV++$+++$+$++OUVUV„UV««¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬‡¥¥¥žžzyˆzz¥¥¬Ð¬ˆ¬†­¬ˆˆVƒ++$ %$”$$+%+$+s—Hz³¬×ˆ ¬‚×O†UzUUzzO…Ñ¥zzUƒOUU7O‚UÖe×VUVU„VUUVU„VUUVUƒVUVU€VUVUVVUVUVVUVVUVUV€‡+++ VUV„U+V++VOVVUVV+$++$$+ˆ++VUV‡UVUVV«« ¬Ð ¬Ð ¬ˆ¬ˆ¬¥ƒžžz†zzžˆˆ¬Œ³×Ѭ¬ˆVV++$ •$$+$$+H$HЬ³³V ¬‚Ö¬'O‚UzU=O‚UÖe×V!U‹VUVUUVUUVUVU†VUUV€€VU…VVUVUVU"V€‡+$$V2 V2V$+V‡+UVV+ +ˆ+++UV…UVV««¬Ð*¬‚ˆ¬¥‘žžzyssyzžˆ¬²³³׋³×¬¬ˆVU++ ˆ$+zˆ‚¥ ¬‚×zAO‰Uz¬¥ˆUO‚UÖeׂVVUVUVUVUV UVU†V€€VUUVUUVVUVVUVVUVUVUV€ˆ+$$+VUV…2UVV+V+V„+$+‚+Š$++++UVˆUVUVUV««Q¬¥„žzysŠyzžˆ¬¬²³׊³­¬ˆVV++ …ˆ²¬×V¬ˆ¬‚׈BOƒ¥¬¬O‚UÖeׂVV U‡VUVUVUVUƒVUVUŒV€VVUVUUVVUVU#V€ˆ2$+$V„2VV$‰+V2UV2VV+…++$+•++++UVVUVUVVUUV««X¬¥¥žzssyyzzˆ¬‚²³׊Ѭ¬VU++†+³V¬¬ ¬‚Ð×BOˆz¬OzzUUO‚UÖeׂVVU‡VUUVUUVU‡VUUVUVVU–VUUV€€VVUVUVUVUVUVUVVUVUV€‰+$$++VUV+…+VV22V+…++$+‚$+ˆ$++UVVUVUV‚««`¬…¥žžsƒyzz„ˆ¬²³׋¬¬ˆVV¬Vˆ× ¬‚×BOU%OÖe׃VUVUV UŽVUUVUUVUUVUVUU€‰VVUUVUVUUVUV„UVVUV€‹+$$2V+ƒ+V2V+„++ +„++UV‡UVUVV««(¬Ð=¬‡¥¥žz——s‹yzzˆˆ¬¬³³׆³³²¬ˆ ¬‚Ö¬gO‚UÖeׂVVU‡VUUVUUVU„VUUVU„VUUVU“V€VVUVVUVUVVUVUVVU VUV€Š+$$$+V‡+$+V+V+ +„+2U V‚««*¬…ЬЬÐ>¬‡¥¥žzs—sƒyzz‰ˆˆ¬¬³³¬ ¬‚×zgOÖe׃VUVUVUVUŠVUUVUUVUUVU€ŽVUVUVUVUVUVUVUVUV€‡+$++‚+VzV†++V+V++‚+†++VU Vƒ««ˆ¬ˆ$¬‘ЬЬв¬¬Ð¬Ð¬Ð¬Ð¬Ð¬Ð5¬†¥žž—s„yzz‚z ¬‚×fO‚UÐeׂVVU†VUUVUVU†VUUVUVUVUVUV€€VVUVUUVUVUV„UVVUVUV€+$$+VzVz V†+V+V†+++‡$+++2U V‚««¬ˆ¬ˆ¬™­¬Ð¬ÐвввÐвв¬Ð­Ð¬Ð¬²Ð¬ŠÐ¬²¬Ð¬Ð¬¬Ð ¬Ð¬‰Ð¬žž¥¬ˆ ¬‚ÖÐO„V9VUVUKOÐeׂVVUV UVUVUVU€‰VVUUVUVVUVUVUVUV€Œ+$+$$+V„++V†+$ +†+$+2U V‚««¬ˆ¬ˆ!¬ˆ­¬Ð¬­ÐЭІÑЭ²Ð²И­²Ð­­Ð²­Ð¬²Ðв¬Ð¬Ð¬Ð¬Ð¬Ð¬Ð#¬ƒ¥ˆ ¬‚×zOU@9@d99\\9VOOUUAOƒU¬­d×VUVUƒVUVU™VUUVUVUUVUVUUV€VVUUVUVVUVUVUV€2++$++V…UVV V„++V†+$ +†$++2 V‚«« ¬ˆ%¬™Ð¬­²Ð­²ÐÐÖв­ÖÐÐÖÐÖЭ²ÐÖ­ЊÑвÑÐв­Ð¬вЬЭЬЭ¬Ð¬¬Ð¬Ð ¬ƒÐ¬Ð¬Ð¬†žzžzyyU O9d@\2@9@9d@9UO@@\VƒUVU9OÐe×VUVU‡VUUVUUVUVU‡VUUVUUVUƒV€€VˆUVVUVUVUVU"V€Ž+$++++zV V†++V2V+$++…+++ V¬ˆ&¬•²­¬¬²­Ð֭ЭÖÑÖÑÖ×ÖÖÑÖÑÐÖ®ÑÖÑÖÑֲв­ÐÐÑв­ÐЭÐÖввЭ¬Ð²¬Ð¬Ð¬Ð¬Ð¬Ð¬Ð¬Ð¬Ð¬Ð¥žyUO\9—OV2299292H9d\99@d9@@\\9\ŠVPUUOO\\VV)O‚вd×VUVU„VUUVUƒVUVUŠVUUVUVUVUU€ŒVVUVUVUVUVVUVU!V€Ž++$$+]V„UV V„++V†2$ +†++2U V„€¬¬²5¬ƒ­¬­¬ŸÐ²ÐвÐÖÑÖÑÖÑ×ÑÖ×ÑÑ×ÑÖÑÖÑ×ÑÑÖÑÖÐÑÖˆÐÑÖÐЭ²­Ђ֭Ьв­¬²­Ð¬Ð¬²Ð²¬Ðв¬¬Ð¬Ð¬Ð¬Ð¬Ð¬Ð¬…Ь¬Ð¬¥žyUO•2+OUOOV@9929@299\@d9d@‹9\9@d@9+OVU%Oƒ¬ÖÑc׃VUVUVUVUŽVUVUVUUVUVUV€€VƒUVUVUV„UVVUV€Ž+$$+++Vz V„++V…+$ ++‚+ V€¬ƒ²¬²¬Ž,¬Ð¬²¬¥²­¬¬­¬²ÑÖ×ÑÖÖÑÖ³Ö׳Ö×ѳÑÖÑÖÑÖÑÖÑÖÑÖÑÖÑ×ÑÖ“ÑÑÖÑÖÖ­­²Ð­ÐÐÑЭ²ÐÖвв­Ð­²Ð­¬Ð¬Ð²¬Ð¬ƒÐ¬Ð¬†Ð¬Ð¬¥¥žyƒsyUOU\2\\++U+U\\d9@ƒ9d9@…9@@\U$Oƒ²¬Öc×zUVU•VUUVUUVUUVUUVUVUUVUUVUŠVUUV€€VUVVUVƒUVUVU V€Ž+$$$$+Vƒ] V‡++V++V+ +…+++ V¬Ž¬Ž¬¥¬Ð¬¥­Ð¬¬­²¬ÖÑÖÑ×Ö­Ö××Ñ×ÑÑÖ×׳×ÖÐÖÑ×׳׳×ÑדֳÑÖÑÖÑÖÑÖÑÖÑÖÖÑÖÑÖÑ…ÐÑÖÖÑևЭвÖЭвБ²Ð¬Ð²ÐЬвЬ¬Ð¬ÐЬ„ЬЬ¥ž†yysyUUO…99+OU2Œ\\9299@@d9@9$OƒÐ³ÑcׂzVUVUVUVUVUˆVUUVUVUU€VŒUVVUVUVUVUVUVUV€2$+$++]V‚ VŠ2VV++V+2V++ˆ+++2 V]¬Ž¬Ž ¬„ˆ¬¬¥¬Ð¬Ð¬’²Ð¬²ÐгÑÖ­²Ñ×Ö××ÑÖׄ³ÖÑÖ׃³ÖÑ׳ׯ³×ÑÖÑ××­ÖÑÖÑÖÑÖÑÖÑÖ×ÑÖÑѳÑÖ×ÑÖÑÑÖÑÖÐÐÖÑÖÐÑÖÐÑÐÐÖ‚ÐÑÐ…­²Ð­²Ћ֭¬Ð²¬¬Ð¬Ð¬¥‚žžyUO„+O+U2ƒ\9\$Oƒ¬×¬c׃€VV UV UVUVUVUVUV„UVUVUƒV€€VŒUVUVVUVVUVVU VUV€‘+$$$$2VzVV„++V++ˆ$+++V\V ¬Ž¬Ž¬ˆ¬Ð¬¬ÐЬ¬­Ð³ÑֲгׂÖÖ×Ñׄ³××ÖׂÑÑ×ÖׇÑ×Ñ×׳×ÑÖ×’ÖÑÖÑÖÑÖÑÖÑ×ÑÖÑÖÑ×ÑÖ‹ÑÖÑÑÖÑÖÐÑÖÑÖ†ÑÐÐÖÐÑЬ‚Ь¥žyUO+&OƒÐÑÖcׂzVUVUVU‡VUUVUUVU„VUUVUVU€€VVUUVUVVUVUVUVU V€”+$$+$$]]VV]z V‡UVV++V++‚$+‡+++2Vƒ\V¬ƒ²¬²¬„Ž¬¬Ž ¬Ž ¬ˆ¬ŒÐ¬¬Ð²²ÖÖЬÖÑׄÑÖ×ÑׂÖÖֳׂׂ³ÖׄÑ×׳ׂÑÑסÖ×׳×Ñ׳×Ñ×׳×ÑÖÖÑ××ÑÖÑÑÖѳÑÑÖÑ×ÑÖŠÑÖÖ×ÖÖÑÖÖÑÖŒÑÐÐÑÖÖÐÐÑÐв¬ƒÐ¬Ð¥žyU„OOU+"OÐeׂzVUVUVUVU„VUUVU‡VUUVUUVUƒVUU€ŠVUVUVVUVVUVUVUV€‹2++$+…V]V]V„2+V+ +‚+2 V¬ƒ²¬² ¬Ž¬Ž¬‚ˆ¥¬„ЬÐЬ‡²Ðѳѭ²׃ÑÖÑ׳׳ׄ³××Ö׳ׇ³×Ñ×Ö×Ñ׎Ñ×׳Ö׳ÖÑÑÖÑÑÖÑ‹³ÖÑÖÑ×ÑÖÖÑÑÖ‚ÑÑÖÑÑÐÐÖÑÑÖÑЬÐЬÐ¥‚žž„yyzzU‚+UO¬eׂzV UVUVUVU…VUVUVUVU–VUUVUUVUVUUV€€VVUVVUVUVU#V€‹+$++$+‚VVz V†++V+V++…$+‚+V\Vƒ\V¬‡²¬³¬²¬²¬² ¬„Ž¬¬Ž¬ˆ¬„ˆ¬¬ˆ¬ŽÐÐÖÑÐЬÖÑÖ××­ÖׂÑÖ ×Ö ×‚ÑÖ ×³ ×…³×³×Ö׌Ñ×׳××Ñ׳××ÑלÑÖÑÖÑÑÖÑÖÖÑÑÖÖ×ÑÖÑÑÖÑÐÖÑÖÖÑÖц×ÖÐÖÐÑЂ¬Ð¥‚žžyU‚++OÐeׂzVU‰VUUVUVUUVU…VUVUVUV€VVUVUVUVVUVUVUV€‹++$$+‚V V2V†++VUV++‚+‚$2 V‚\¬ˆ²¬¬³¬³¬²¬²¬„Ž¬¬Ž¬Ž¬„ˆ¬ˆ¥¬Ð¬Ð¬¬ÐÐÖÖÑÖÐÐ×…²Ö×׳×Ö×Ö×ÖׂÖÖ׳ׄÖ××Ö×…³×Ñ׳×­Ö³×Ö×׳ÑÖÑÖ×ÑÖ×ÐÑ×Ñ×ÖÑÖÑÖÑ×ÑÖѳ×ÑÖÑÑÖÐЬЬЬ¥žzUƒ+O+ O¬eׂzVUVUVU‚VVU‰VUVUUVUUVU…VUVUU€ŽVUVUVVUUVVUVVUVUV€‹+$$+++‚VVU Vƒ++V+ +…+++ V¬‹³¬³¬¬³¬¬³¬³¬²¬Ž4¬Ð¬вЬÐÖÖÑв××ÑÖ׳×Ö×Ö׳×’Ñ×׳××Ñ×׳×׳ÑÖ³×׳”Ñ׳ÖÑÖ³ÖÖ×׳׳ÖÑÖÑÖ×чÖЬЬЬ¥…žž—yzU+O¬d׃ÖzVUVUVUVUƒVUVU‹VUVUUVUUVUVUV€VVUUVVUVUVVUVU!V€‘+$$$$VVVVƒ+2Vƒ+$ +…+++Vƒ\V\V€¬³¬³¬³¬²¬Ž¬Ž=¬Ћ¬ÑÑÐÑÖÖ××ÑÖ׳0׳×Ö ×³ׄ³×׳ן³×׳×Ñ׳ÑÖ׳ÖÖÑÖÑÖÑÑ×ÑÖÑÖЬÐЬÐ¥žz…OOЈ³cׄzUUV UVUVUVUVUVU˜VUUVUVUUVUUV€€VVUVVUVUVUV‚UU"V€‘+$+++VV]V‚+Vƒ+$+‡$++$+ V¬³¬ƒ³¬³¬³¬†²¬¬²¬Ž?¬—ÐЬЬЭ¬ÑÖÑÖѲÖ×Ñ×ÑÖ×׳Z×Ñ ×«³×³×׳×ÖÑÖ××Ö³ÑÑÖÑÖÑÖÑÑÖÐÐÖ¬¬ÐÐ¥¥žž»¥¬¬Ð¬c׃zUVUVUVUVU…VUVUVUˆVUUVUVUU€…VVUVUV„UVVUVUV€Œ+$$$+V…+VzVƒzV++‹++$+++2V„\VV€¬³¬²¬²,¬¥¬…Ь¬Ð¬ввÐÖ××Ö­××Ö³j×…³×Ñ׳׃Ñ׳׆³×ÑÖÑÖׄ³×ЬÐcׂzVU†VUUVUVU–VUUVUUVUUVUUVUVUVUUVUVUƒV€€VƒUVUVUVUVUVUVUV€Œ+$++$+ƒVVzVƒ+2V+$ +„+2 V ¬ˆ¬³¬­¬²¬Ž@¬—ЬÐвв¬ÖÐÑÖ­ÐÖѲ×Ñ××­Öl׃³×³׈³×³××Ñ׳pׂzVUVUVUVUVUVUUVUUVUƒVUVUƒV€VƒUVUVU VUV€+$$+$$V‚VV…VV†+$ +…+VU V€e¬ŽÐ¬ÐЬвÑÐЭЭÖׂÑÖ×Ö×h×zUVU†VUVUUVUƒVUVUVUVUUVUUVUUVUVUU€ŠVVUVUVUVVUVU V€+$+$$VV…+$VV†V+$ +ƒ$2 V ¬ˆ¬ˆ¬ˆR¬Ð¬Ð¬ÐÖÐÐÖÑÖÑÖÑÖ׃Ñ׳×eׂzVUVU†VUUVUVU†VUUVUVU•VUUVVUVUUVUUV€VVUUVUVU$V€+$$$$+VŒ+VVVz]+‚+ˆ$++VU V„¬¬ˆ¬‚ˆˆ¬ˆ¬ˆ ¬ˆ#¬¥¬…Ь²Ð¬ЄÑÖÑÖ ×³×^ׂzVUV UVUVUŠVUVUUVUVUVU†VUVUUVU€‡VVUVUVUVUVUV€Ž+$+$++V‚] V†zVVUV‰V+$$$+‚+„+VU Vƒ¬¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬¥¬ÐЬÐвÐÐÖÖÑÖѳ×Ñ×Öׂ¬¬ׂÑÖ×Q׃€UV UVUVUVU”VUUVUVUUVUUVUVUVUVUVUƒV€€V„UVVUVU%V€Ž+$$$$$UV†2+$VV†V++ +ƒ$+ Vˆz¬«ˆ¬ˆ¬¬ˆ¬ˆ¬ˆ¬ˆ ¬ˆ¬…ˆ¬¬ˆˆ¬ˆ¬ˆ9¬‚ЬИÖÐÐÑÖÑÖ׳׳Ö××Ð++Vzˆ¬×N׃zVVUŒVUUVUUVUUVUVUVU˜VUVUVUVUUVUVUUV€€VVUVUVUVU VUV€+‘++$++VVVz V‡zV+V‹VzV+$$$ +ƒ+ Vƒz««ˆ†¬ˆˆ¬ˆ¬ˆ¬…ˆ¬ˆ¬ˆ¬ˆ¬…ˆˆ¬¬ˆ¬ƒˆ¬ˆ¬„ˆ¬¬ˆ¬ˆ¬ˆ¬ƒˆ¬¥¬Ð¬Ð²Ð­²ÐÖÑÖÑÖÑ×+‚UVƒ¬­Ö×K׃€VVU‡VUUVUUV U¢VUUVUVUUVUVUVUVUVUUVUVUVUVUU€€VVUVˆUVUVUVVUVUV€Ž+$$$$$+‚V V‡]V+$V‹V]V$$ +ƒ+ V†€¬«¬ˆ¬ˆƒ¬ˆ¬ˆ‹¬¬ˆ¬¬ˆˆ¬¬ˆ¬ˆ¬ˆ¬‚ˆˆ¬…ˆ¬¬ˆˆ¬ˆ¬‚ˆˆ¬¬„ˆ¬¬ˆ ¬¥¬¥ ¬ƒ¥¬¥¬„ЬвЄÖÖ׈+U +„UVV¬Ñ×Eׄ€VUVUVUVUVUVUšVUUVUVUVUVUVUUVUVUV€VVUVUVUVUV€‹+$+++$†V]z VˆV++VVŠV+$$+‡$+VV€V€¬‚ˆ¬ ˆ‹¬ˆ¬¬ˆˆ¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬¬ˆ¬¬ˆ¬ƒˆ¬ˆ¬ˆ¬…ˆˆ¬¬ˆ ¬ˆ¬¥¬¥¬ˆ¬‡Ð¬Ð¬Ö¬V+‡VV¬¬­×@ׄzVUVUVUVUVU›VUUVUUVUVUUVUVVUUVUUVVUUV€€V„UVUUVU%V€+$$$$V V˜zV$+VVVVV+$+V+Š++VV€VV€V€ ¬‚ˆ¬ ˆƒ¬ˆˆ¬ˆ„¬¬ˆ¬ˆˆ¬ˆ¬¬ˆ¬¬ˆ¬¬ˆ¬ƒˆ¬ˆ¬ˆˆ¬¬ˆˆ¬¬ˆ¬¬ˆˆ ¬¥¬¥¬ˆ¬ƒ¥¬¥¬ƒÐ¬V+‡VVˆ¬²×:׃€VVUVUVUUVUUVUUVUUVUŠVUUVUVVUUVU€ƒVVUVƒUVUVU"V€+$++++$+V‡++VVVŠV$$$$+†U++V€†VV€VV ¬ ˆ…¬ˆ¬ˆ¬ˆˆ¬¬ˆ¬ˆ¬ˆˆ¬„¬¬¬ˆ‚¬¬ƒˆ¬ˆ¬Œˆ¬¬¬¬ˆˆ¬¬ˆˆ¬‚ˆˆ¬¥¬¥¬¥¬¥¬ƒÐ¬V+ƒU\\+„VV¬×4×…€VVUVUVUVUVUVUšVUVUVUUVUUVUVUVUUVUVUVUV€€VƒUVUVU$V€+$$$$$ V…U++VƒV…$$$+‹UV+$$++VV€‡VV€ÖÖÐ ¬‚ˆ¬ ˆ…¬ˆ¬¬ˆ¬†ˆ¬ˆ¬ˆ¬ˆ¬¬ˆ¬¬ˆ¬ˆˆ¬ˆ¬¬ˆ¬ˆ¬„ˆ¬¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬¥¬¥¬„¥¬¬¥¬¥ ¬‚×+‡U…‹‹…\U+U +ˆUVVˆˆ¬­×.׃€VVUVUVU†VUVUUVU…VUVUVU„VUVUV…€€VVUVUVUVU V€•+$++++$VV V++VŠV+++‡$++V €‡zÖÖЭР¬ˆ¬’ˆ¬¬ˆ¬ˆˆ¬ˆ¬ˆˆ¬¬ˆ¬¬ˆ¬…ˆˆ¬¬ˆ¬„ˆ¬¬ˆ¬ˆ¬‚ˆˆ ¬„¥¬¬¥¬¥¬ˆ¥¬¬¥ˆ¬¬¥¬ˆ ¬ƒÖ¬V +U…‹†…‹‹…V+OUU+UV…ˆˆ­Ñ×(׈VVUVUVV U†VUUVUVU„VUUVUŠVUUVUVUVUVUˆV€VVUVUVUVUVUV€+$$$$+++ V˜+$+VVzVV]V$$$+V2+$ƒ++V €‡×ÖÖÑÖЬˆ ˆ„¬ˆ¬¬ ˆ‹¬ˆ¬ˆ¬¬ˆ¬ˆ¬ˆ¬ˆ¬‚ˆˆ¬ˆ¬ˆ¬„ˆ¬¬ˆ¬ˆ¬¥¬¥¬¥¬„¥¬¬¥¬†¥ˆ¬ÐÖV +‡V‹‹†Ec†‹†…££zU+ˆUVVˆˆ¬²×"׃€VVUVUƒVUVUVUVUVUƒVUVU‡VUVUVUVU€V†UVVUVUV„UVVU V€+$+++$$…VV V†++V‹2+$+‹$$$+UVz €«ׇÖÑ֭ЬР¬„ˆ¬ˆˆ„¬ˆ¬¬ˆƒ¬¬ˆ¬ˆˆ¬ˆ¬¬ˆ¬ˆ¬ƒˆ¬ˆ¬ƒˆ¬ˆ¬„ˆ¬¬ˆ ¬†ˆˆ¬¬ˆ¥¬„¥¬¬¥¬†¥¬¥¬¬¥¬‚× +”V‹‹…ccEEc†‹¯‹££ÁzUUO+ƒ¬¬ ×Ñ×׆VVUUVUV UVU„VUUVUœVUVUVVUVUVUVUVUVVUUV€€VVUVVUVU'V€—+$$$+$$+VV]V]V‰+$$+V2$++$$„++VV €«ׂÑÖЂ²Ð ¬‚ˆ¬ˆƒˆ ˆ…ˆ¬¬ˆ„¬ˆ¬ˆ¬‡ˆ¬¬ˆ¬¬ˆ ¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬„¥¬¬ˆ¬¥¬…ˆ¥¬Ö +†\‹‹…\\E††¯‹‹y£‚zU+ƒˆÖ ׳××VUVU†VUVUUVU„VUUVU„VUUVUŒVUUVUVUVUVUVU†€€VVUVUVU!V€‘+$++$$+$+‚VzV„++2V]Vz+$$$$+‚Oz €«×Ö×…ÑÐЬР¬ˆ‡¥ˆ¥ˆ ˆƒˆ¬ ˆ‰¬ˆ¬ˆ¬ˆ¬¬ˆ ¬ˆ¬ˆ¬„ˆ¬¬¥¬¥ ¬ƒÖˆU +Š\‹¯‹\2cdEEFŠ†¯¯‹ÁÇÇ£O+ƒ¬¬ ׆ˆˆˆ¬׳×׆VVUUVUVUVUVUVUUVUUVUUVUVVU–VVUVUUVUVUUV€VVUVUUVUVƒUVU#V€’+$$$++$$+ V‹+$+VVUVƒ+$‚$$+‡2UVV++2 €« ׆ÑÐÑЬР¬ˆ¬ˆ¬ˆ¥ˆˆˆˆˆˆˆˆˆˆ¬ˆˆ¬ˆ¬ˆ¬‹ˆ¬¬ˆ¬¬ˆ¬ˆ¬ˆ ¬ˆ¬„ˆ¬¬ˆ¬¥¬ƒÖ¬V +„\‹……c„E;;dFˆ†¯¯ÍÇÁ£O+„V¬ˆÖ ׂ¬V+ˆUPVˆ¬²×…ÖÖ××Ö}×VUVUVU‹VUUVUVUUVUVU™VUUVUVUUVUVUVUVUVUU€€VVUV„UUVUVUV€+$$+$$+‚VV†VVV+‰$+$VV+Vƒ+$+2V…2VVUz €« ׄÖ××ÖÐѬˆ¬Œˆ¬ˆ¬ˆ¥ˆ¥ˆˆˆŒˆ¬ˆ¬ˆ¬¬¬ˆˆ¬‰ˆ¬ˆ¬¬ˆ¬¬ˆ2¬‚ÖV +ŠU…‹…ccFc\5;dF„‹¯Í+…¬¬×³× +‡VVˆ¬Ñ××V UVUVU…VUVUVUƒVUVU•VUUVUVUVVUUVUV€VVUVUVU$V€‘+$$+$$+V+‡$$$V…VV+‚O2 V„2V22 €«׆Ö××ÖÐЬˆ¬‰ˆ¬ˆˆ¥ˆ¥ˆˆƒˆˆˆ†¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬ˆ¬¬ˆ¬¬ˆ)¬ƒ²Ö +ƒUV…\„cc\3;AF„‹¯‹U+‡V­¬­×ÑÖׂ¬V+‡VVˆ¬Ñ~×VUVUVUVUVU›VUVUVUVUVUVUVVUVUVVUVVUU€€VUVUVU V€’+$$+++$+V+Œ+$$$V†VV]V2U VƒU22V €«×…ÐЭв¬Œˆ¬¬ˆ¬¬ˆˆ¬ˆˆ¥ƒ¥ˆƒˆˆˆƒˆˆˆ¬ˆ¬ˆ¬ˆˆ¬ˆ¬„ˆ¬¬ˆ ¬ƒˆ¬ˆ¬‚× +\c‡9:;AA;;AdF„‹¯‹V+¬‘Ö×Ðг××Ö³Ð+OyU+‡VVˆ¬Ö ׃­¬ÑlׇVVUVUV UVUVUƒVUVUVUƒVUVUVUUVVUUVUUV€V†UVVUVU VUV€+$$$$$+„+V+$ˆ+VVVUV‚U2Vz €«×…ÖÑÖÖÑ ¬…ˆˆ¬ˆ¬ˆ“ˆˆˆˆˆˆˆˆˆ…¬ˆ¬¬ˆ¬ˆ¬ˆ¬ˆ¬¬ˆ¬ˆ¬ˆ¬ˆ¬ƒˆ¬ˆ¬‚× +‹V…\cEEFE::;A;‚::F„‹¯‹V+Šˆ¬¬ÖÑвÖÑׄˆ++»y+†VV¬¬׃ÑÖÑh×V UVUVU VUUVUUVUVUUVVUVUVUVUVUVUVUVUU€€VUVU&V€“+$$$$+$+2 +‚22VOVU Vz €«×ÖׄЬÐѬŽˆ¬ˆ¬¬ˆ¬¥ˆ¥ˆ¥ˆ„ˆˆˆ†ˆˆˆˆˆ‡¬ˆ¬ˆ¬ˆ¬„ˆ¬¬ˆ ¬ˆ¬‚׬ +‹V‹‹V9EEc3::;†:3\cEEF„†Í‹U+–Vˆˆ¬¬²Ð¬ÐÖÖÑ××+y»»U+‡VV¬­Öl×V UƒVUVUVUUVUUVUUVUVUUVUVUVŒUVUVUUV€€VVU.V€‹+$$$+ +‚O2V…UUO+UV8V €«ׇÖÐ×ÖÐ¬Ñ ¬ƒˆˆ¬ˆœˆ¥ˆˆˆˆˆˆˆˆˆˆ¬ˆˆ¬ˆˆˆ¬¬ˆ¬¬ˆ¬¬ˆ¬ˆ¬ˆ¬ƒ²¬U +“U\‹‹…2\EE93:A;;::3\ F„‹Í‹U+†ˆ×Ѭ¬Ð¬ˆÐÐÖ׬++»yV"+‡VV¬ÐÖf×VUVU‡VUUVUUVU†VUUVUVUˆVUUVUVUVU‹VUVUU€€VVUV„UUVU&V€+ +2V‚UUO‚HOV8V €«×փЬ­¬ˆˆˆ¬¬ˆ¥ˆ¬‚ˆ¥ˆˆˆƒˆˆ¬ˆˆˆˆ¬¬ˆ¬ˆ¬¬ˆ¬ˆ¬ƒ²ÖV +“U\…‹‹…2\@::;:;:3@99 F…E‹¯Í…+„VÖ×Ь‡Ð²×ÑV+yÁ…+VzV(+‡VV¬¬Ñ`×VƒUUV UVUVU…VUUVVUŒVUVUVUUVUUVUV‡UVVUV€VƒUVUVUVUV€+$+2V…UOUOOHV2VzV €« ׇÖÑÖѬ¬Ð¬ƒˆ¬¬ˆˆ¬¥ˆ¥ˆˆ¥ˆ–ˆˆˆˆˆ¬ˆˆ¬¬ˆˆ¬ˆ¬ˆˆ¬ˆˆ¬ˆ¬ˆ ¬ˆ ¬ƒ× +U‹……‹…\\9;;A;:3cEF†E‹¯¯‹…+ƒ¬×Ь…Ð×+OÁU2+ˆVV¥¬­³³Y×VUVUƒVUVUƒVUVUˆVUVUUVUVU‹VUUVUVVUVUVUƒV€€VUVUVU#V€+‚22 VUO H‚VV„VV Vz €«!׃Ö×ÖЃѲЬ‚ˆ¬ˆŽ¬ˆ¬ˆˆˆ¥ˆˆˆˆˆˆˆˆ¬ˆˆˆ„ˆ¬ˆ¬¬ƒˆ¬¬ƒˆ¬ˆ¬…×++U+U‹Ž\\cE9:;;::;:\\cEcŠEFFEc†ÍÍ‹\+ƒ×× ¬…×ÐVzÇ„zV5+ˆOz¥¬ÐÐT×V‚UVUVU„VUUVUƒVUVUVUVUUVUVUVUVUVUUVUVVUVUV€VVUVUVU&V€VOH‡OzVUVVUVƒ]V…VVz]V €«'׃ÖÑÐ ¬Šˆ¬¬ˆ¬ˆˆ¥ˆˆ„ˆˆˆƒˆˆˆˆˆˆˆ¬ˆ…¬ˆ¬ˆˆ¬…¬¬ˆ¬ˆ¬†ˆ¬ˆ¬×¬ +U‹‡…\cFFc3:…39\cEFE‹FFEc\…ÍÍ‹\P+„V¬×Ь…Ð×$UÇ…U+VVU%+‰OO+OOUUyUy ‡Á¥¥¬²ÑN×VUVU¬VUUVUUVUVUVUVUUVVUUVUVUVVUVUVUVUVUU€€VVUVVUVU'V€OHOHƒOHOU V]VˆVVVV] V €«*×…ÖÐÐÑÐ ¬ˆ¬ˆ¥ˆ¥ˆ¥¥ˆˆ‹ˆˆˆˆˆˆˆƒˆ¬ˆ‹¬ˆ¬ˆ¬ˆ¬ˆ¬¬¬‡ˆ¬³¬P+U+V‹Ž…cEFFEFE::3\cEFE‹FFE\\‹ÍÍ…\U+ƒˆ×Ö ¬‰×²++ÍÇÇ£$+ƒOUU Ás+†VVˆˆ¬I×V…UVUUVUVU„VUUVU‡VUUVVUVU”VUVUUVUUVVUUVUVUUV€€VUVU(V€„OOVUz„UO€V H‚OOVŽVVVVVVV]Vz €«-×…ÖÑÖÐЬˆ¬˜ˆˆ¬ˆ¥ˆ¥ˆˆˆˆˆˆˆˆˆ‘ˆˆ¬ˆ¬ˆ¬¬ˆ¬¬ˆ¬ˆ‰¬¬ˆ¬³ÖV+U+‚U…‹‚†cEF‰@:9\cEEFFEFˆc…ÍÍ‹‹\V+ƒVÖ× ¬…Ð×UÍ„UVV+„OOUUOˆUUOUyyÁƒ£yO+V‰ˆ¬­Ö××ÑÖ ×Ð3×V U„VUUVUVUVUVU“VUVVUVUVUUVUVVUUV€VUVU#V€‹VzVzVOUOHOV‚zV„VV]V‰VVV]Vz V €«/׆ÖÑÖÑÐÐ ¬’ˆ¬ˆˆ¬ˆˆ¥ˆ¥¥ˆˆˆˆˆˆˆ¬‚ˆˆ“ˆˆ¬ˆ¬ˆ¬ˆ¬ˆ¬¬ˆ¬×V +ŒOU\cEFE\\cFEcEcˆ…¯‹‹……VU+U +‚¬× ¬×²++£ÓÓÍ++VV+y ÁƒzyU+‡VVˆˆ¬­ ×…Ñ×ÑÖÖ.×V…UUVUVUVU“VUUVUVUUVUVUUVUVUUVU…VVUVUVŠUU€€VVUVUVU$V€…VOOVVOHOƒVzzV]V‡]VVVVVŽzVV]VVVVV]V €«3ׄÖÐÐÑ ¬‰ˆˆ¬ˆ¥ˆˆ¥•ˆˆˆˆˆˆˆˆˆ¬ˆˆˆ„¬ˆ¬‚ˆ¬‚× +…\EEFE32EFƒE\…†‹‹…\\U+P +ƒ×Ö ¬‹²×V$VÍÓÓÍVP+y#ÁÇÁ…Ç£yyU+Vƒˆ¬Ñׂ­Ñ.×V‚UVU‡VUUVUUVU„VUUVU„VVUVUƒVUVUˆVUVUVUUVUƒV€VƒUVUVU"V€HO…UUVzzV…]VV„VzV‰€zVV]VV] V €«5ׇÖÑÖÐѬР¬“ˆ¬ˆ¥ˆˆ¥¥ˆˆˆˆˆŠˆˆ¬ˆ¬ˆˆ„¬¬×ˆ +‚2cF‡E3:;39EF„c\…‹„…\\U+U +ƒU­×¬ƒ¥¬¥¬…׬++ÍÓ…£PV+ÁÇ„zyyU+ƒV+U+†UVVˆ¬‚ÖÖ.×VUVUšVUVUUVUUVUUVUVUVUUVUVUVUVVUVUVUVUVUVU€€VU VU!V€‚VVz„VV] V‚V„VVƒ+V]V‚VˆVV]V]zV]V‚UV €«7ׇÖÑÖÑÖÐÐ ¬ˆ¬ˆ¬ˆˆ¥ˆ¥ˆˆˆ™ˆˆˆˆˆˆˆˆ¬ˆˆ¬ˆˆ¬³¬ +‚2EF‡d\3AA;EFEƒ\\… ‹‚\V +U +ƒ×Ö ¬…Ð×V+zÓ†ÍU+UVU+‚O£ Á Ç…£zyyU+‚UPVƒ++U+ƒUÑ/×VˆUUVUUVUVUŸVUUVUVUUVUVUUVUUVUVUVUVUVVUVUVUV…UUV€VU-V€]VVzVŽzVVV]VVVV2VƒVƒ]V‚z VƒO+O €«:׆ÖÑÖЭР¬¡ˆ¬ˆ¬ˆ¥ˆ¥ˆˆˆˆˆˆˆˆˆˆˆˆ¬ˆ¬„¬³²V +•2EFFd3P::;@EFFEEc\\…‹„…\VU +O +ƒ2×× ¬…׈++ÍÓƒPV+‚O£+Ç…zzyy+‚VPV†++׳.×VUVU„VUUVUVU”VUVUUVVUUVUVUVUUVUVUVŽUUV€€VVUVVUVVU(V€V]‡VVzVV+Vƒ]VV]„€VV…]VV]VƒOO+V €«>׆ÖÐÑЬР¬„ˆ¬ˆ¬ˆŠ¥ˆ¥ˆ¥ˆˆƒˆˆ‹ˆˆˆ¬ˆˆ¬³V +–O2FF@33:9@EFFEEc\\…‹‹…‚\U+†¬×²¬¬¥¬ˆ¥¬¬Ö×V+Ó…ÍUVV+U,Ç£z‚U+U+ˆ0×V‚UVUVU VUUVUUVUUVUVUUVVUUVVUVUVUVUVUUVVUˆ€€VUUVU,V€ƒ]VVV‚V‚VV‚+VŽ]]VVUOHH$OV++$+‚UV€«@×ÖЂ­Ð ¬•ˆ¬ˆ¬ˆ¥ˆ¥ˆˆˆˆˆˆˆ†ˆˆ¬×+cFFEdFFEEFEEc\…‹…„‹…\U+ƒV×׬¥¬×++ÍÓÓÍ++VV+z,LJÍzzyy!+¬0×V…UUVUVU‚VVUVU…VUVUVU•VUUVUVUVUVUVUVUVVUV€VUVU&V€…V]V ‹V+V]VV]] ˆVVz]VV2V‰VVUVHHOHƒ$++ƒ++V€«C׆ÖÐÐÑ­Ð ¬ƒˆ¬¬ˆŒ¥ˆ¥¥ˆˆˆˆˆˆˆˆ¬×+‚2EFE‚c…‹…‹‚…\+ƒ²×²¬‡¥¬Ö×V+ÓƒÍVP+džÍÇÇÍÍÇÍÇ͇£zzzyy +‚U­0×V U‹VUVUUVUVUUVU‘VUVUVUUVVUVVUVUVUVŽUV€€VVUVVUVVU(V€„+VVV]V ‰VVVVV2zV]…]zUOOH‚$$…$+OVV€«E׆ÐÖÐÐÑЬ˜ˆ¬ˆ¥ˆˆ¥¥ˆˆˆˆˆˆ×¬U+„EFFEc‚……‹…‡‹……‹‹…U+ƒ×³ ¬…×++‹Í„P+‚£ÍÇ%Ízƒyy +V1×VƒUVVUVU„VUUVU VVUUVUVUVUUVUVVUVUVUVVUVUUVUU€€VUVU$V€V„]V]]Vƒ2VV]]]VVOOHHOH‚$$…$+OVV €«GׇÖÖÐÖÖЭ ¬•ˆ¬ˆ¬ˆˆ¥ˆˆ¥ˆˆˆˆ³¬V+ƒEFc\…‹‚……‹……‹…VU+ƒV×׬ˆ¬…׬++\¯‹+V+£.͈£zzzzy +1ׂzV²UUVUUVUVUUVUUVUVUVUVVUUVUUVVUVUVUVUVVUVUVUVUVUUV€VUVU#V€ƒ]VVVV€V„VVOOH$ƒ++V€«IׇÖÑÖÑÖÑÐ ¬’ˆ¬ˆ¬ˆˆ¥ˆ¥¥ˆ²­V+ƒcc\c…‹…+ƒ¬×²¬ˆ¬†ˆ²×+U‹ƒVPV+U0Íz +‚ˆÖ0ׂzV‚UVUVUƒVUVUƒVUVU™VUUVUVUVVUVUUVUVVUUVUU€€VUVUVU!V€ƒV]VˆVU2VV…]VVOOH‚$$…$++VV€«O׆ÖЬЬР¬ˆ¬ˆ¬ˆ¬ˆ¥ˆˆ¬×V+‚O+\„cc\\…†‹‹……‹…+ƒV×׬ˆ¬…׬++…‹……UˆV +V0Í‚£z…zzyO+¬1ׄ֫VUVUVU¦VUUVUVUVUVUVVUUVUVUVUVUVVUVUVVUUV€VVUVU(V€„]]V„]VV„zUOOH‚$$…$+OVV€„«¬ÖP׈ÑÐÖÑÖ¬¬Ð¬ˆ¬‰ˆ¬ˆ¥¬¥¬×+2c‚\\ …‚‹…+‚¬× ¬…²×V+Ug„U++U +1̓zzƒyz+‚V²5×…¬¬€VU†VUUVUVUœVUUVUUVVUUVUVUVUVUVUVUVUU€€V„UVVUVU#V€ VƒUVV]…VVUOOH$„+OVV€„«¬ÖÖSׄÖÖ×ÑÐÖ¬ˆ¬ˆ†¬×ˆ++U+2c\ …\+ƒ×× ¬…׈++…gƒ…+U +‡ÍÍ‹Í‹‹+Í£‡zzzzyO+V:×…Ö¬«zUVU…VUVUVU™VUVUUVUVUVUVUVUVVUVUVUV€VU,V€VV‚VƒV„zVOOHOH‚$$„++VV€„«¬Ö[×Ö†ÑЬЬР¬„ˆ¬×¬+ƒ\cc\ …ƒ\VU+ƒVÑ× ¬…×ÑV+Ug…UVVP +…‹‚Í‹ Íz‚O+?×…Ö¬«€VUŸVUVUUVUUVUVUVUVUVUVVUVUVUVVUV€V„UVVU(V€V‰]V2VV]„zVOO H‚$$ƒ+OV€ƒ«¬Öc×Ѓ֭Р¬ƒÑ­V+ƒ\cc\ …\ +ƒˆ×³¬ˆ¬…×++cg†\++VVU +‚…‹g‹‚Í‹Í£†zzzyO+ˆD×…¬«VVUVUVVUVUUVUUVUVUVUVUVVUVVUU€€VƒUVUVU$V€VƒVV ƒVOOHOH‚$$ƒ++V€ƒ«Ög׊ÖÑ××ÑÖѬ¬Ð¬ƒÖV+‡2\c\22V …U +ƒV×× ¬…×ÐV+\DƒgUP +2† g‹ÍzƒO+¬H׆֬«zVU…VUUVUVUVUVVUVUUVUUV€VU,V€‚]]„zVOO H‚$$ƒ++V€ƒ«¬q×ÖІ¬¬ÐÐUO+ƒ\\U+\ …‚\U!+ƒ¬×² ¬†³×++cD„\Uz +„2c†c †‚gg†‹‚¯…†zzzyU+‚V²Mׄ֬V‰UVVUUVUVUV‹UVVUU€€VVUVUVU$V€…zzUOOH†OOVOzzH‚$$‡++V€€€ƒ«¬Öu׈ÖÖ×ÖÑÖÐÐ¥ƒ¬U+‚O\…ƒ\VU"+ƒ×³¬ˆ¬…׬++\E…++VVP+ƒO\d c†‚‹†‹\z‚O+VSׄ֫€V‘UVUUVVUVVUVVUUV€VUVU'V€‚OOHƒOOVz…€€OO+‡++V€€€„¬ÐÖ}׌ÑÖ¬¬Ð¥¥žzzV+‚U\…ƒ\\U$+ƒPÖ׬„ˆ¬¬ˆ¬Š³×+UEFEF\ +\dc†‹‚…V†zzzyU+W×…Ö¬zVŠUVUVVUU€€VU-V€‡OHVzOHVzU+‡++U€€€„¥«¬Ö××ÖÐÑÖѬ¥žžzU +ˆU…‹……\VU'+’ˆ×³ˆ¬¬ˆ¬ˆ¬¬ˆ¬×¬++\F…EUV+ƒ9dd@ dcd‚cdc†‚\V†zzyzU+ˆ[×Ö¬«€€VVUUVVUV€ VU$V€‡zVzO$++…$+UV€€„««¬× ׆ÖÑÖЬ¥ƒžzV+†V……\VU)+ƒV²³¬¬‰ˆˆ¬³×V+2dF…\+VV+†O+9AA;: @dc†‚V\†zzzyO+¬`׋֬«zVUVVU*V€ƒO+$‰$++VV€¥€„«¬Ö×׆ÑÖÑÐ¥žƒzVP+ƒVVO,+–¬×¬ˆˆ¬ˆ¬¬ˆ¬¬×¬++9GFGd+U+…@GAA;:@dcƒ\V\z+‚V­d×…ÖÖ¬««¬…€UUVU+V€‚V†$++UV€€…««¬Ö×׋ÑÖÐОžzzV1+“Ö׈ˆ¬¬¬ˆ¬³×V$2dG„\VVU+9A;:†@AddAAd cƒV\\zƒyO+Vm׋¬€VVUVUVVU%V€ŠV++VV€€€„¥«¬Ö× ×‰ÐÐ¥žžzV.+‰V¬×¬ˆˆˆˆ†¬×ˆ+O@G‚d++‚O3A;‚AA GAd„\V\\…zzzy+o׈֬«€zVUVU V€†UV€€€…«¬¬Ö×%ׄÖÐ¥žƒzVV++…׳¬ˆŠ¬¬³ÖV+\G\+V+‚P: ;AGd\zy+t׆֬«€zVUV€‚€…««¬Ö×,׃ÐÐ¥ƒzzV(+“V¬²¬¬ˆ¬ˆˆ¬¬×++@Gƒ@VV +‚35 ;‚AAG d9\„zzU+‚U¬y×…¬¬«€VUV€„¥«¬Ö×2׊ÖÐ¥žzzVV%+’¬×¬ˆˆ¬ˆˆ¬ˆ×²++\G…2zU +ƒ355 ;‚AAGd@\zU+‚V¬~ׇ¬«€€VUV€…«¬ÖÖ×8׃ÐÐ¥ƒzzV"+ƒÖшˆ‡¬­×$+dG…@++V +„P:55 ;‚AA!G9\„zzy+V×׉ÖÖ¬«€VVUV€„¥«¬Ö×>׉ÖÐ¥žžzV+V¬‚ˆˆˆ†¬×¬++\G2+„3;55 ;AG9\z‚yO+×׆֬¬«€V €…«¬ÐÖ×D׃ÐÐ¥ƒžzV+‰×¬ˆˆˆˆ†³×V++dG…9VVU+„P:;5 ;:„;;AAG@\„zzy+× ×†ÖÖ¬z V €…«¬ÖÖ×J׃ÐÐ¥ƒzzV+ŠV²Ñ¬ˆˆˆˆ†¬×¬++9G†d2UV+3 ;:‚;AGd\zy+¬×׆Ö׬¬€V€„¥«¬Ö×QׂХ„žžVV+‰¬×¬¥ˆˆˆ…Ñ×V+PA‚G9+U+…3;;55;AGd\„zz+‚V¬×ׄ֬«V€ƒ«¬Ö×Xׂ¥ž„zzV2+ƒ×׈¥ˆˆ¬×ˆ++9A‚VU+ƒP:;5…;;:;;AG‚AAG9\z‚yO+‚VÖ××…Ö««Ð×]׊ÐÐ¥žžzzV+“VÐ׬ˆˆ¥ˆ¥ˆ¥ˆ×ÑV+P;†A3UV+†:;54:5;AGAG9\„zzy+×××׃ХžƒžzV +…ˆ×ш¬ˆŠ¥ˆ¥¬×++3;ƒ:++V+…3:55:;AGAG@\zU+×××׋ÐÐ¥ž——žzV21+ƒVÐ× ¬Š×Ð1+2;;5;3+2;@AƒGAGAG‚@V\„[[[U+‚V¬×Ð×××׋ÐÐÉž——žžzV2+„,¬ÐÐ ¬„×++5†;3VV+ƒ3AA; A‡GGAGAGAG‚AV\‚[[U+‚V¬×××׆Ð××ÐО—„žzV2+ƒÐ× ¬…׬,+25…3+V+2A;A‚GAG\‚[[U+‚VÐ×Ð××~×ÐׄХž—ž†V1V¬¬Ð ¬…Ð×V++5+‚VV+3A;AƒGGAG3\‚[[U+××××Љž—¥¬¬×ÐÐ ¬…׬++35ƒ21,+2A‚;5;‚A;AƒGGAG3\‚[[+××××…Ð××ÐЬЬ…Ð×V+,5…VV,+@A;5‚;;A‚GAG‚@V\‚[[U+‚,¬×××׌¬Ð¬¬Ð×ÐЬ¬ÐЬ…׬++25…2+VV+ƒ,+2 A‚;;5ƒ;5;AG‚@V\‚[[U+‚V¬×××׃Ð××ЬÐÐ׬Ð××V++335!+@ AGAƒ;;5;ƒ@AAGA\‚[[U+‚VÐ××××Ђ×+ƒ232!+3 AGA;…@;@GAG3\[,+×××!ׇÐ×׬V+,(+@ A„GAGGAG3\‚[[U+, +×××!ׄÐÐ×++3A†GAGGAAG3\‚[[U+‚,¬×××!×…Ð¥Ð,*+, AGAGAG‚@V\‚[[1+‚V¬×××!׈Х¥ÉÉV2(+3 AGAG‚@V\…[[U+‚VÐ×××#׈ÐÉÉ¥žVV&+‚2@AG‚\V\„[U+×Ð×××!ׂÐО„V2$+…23@AG AGAG‚A3\„[U+××× ×Ð׃ÐÐ¥žƒV2$+†,23AAGAG3\ƒ[+,+‚,¬×Ð×××%׃ÐÐÉžƒVV%+…V3AAGAG‚@V\ƒ[U+‚V¬ ×Ð××××ÐׂÐÉž„V2+,+†23@AGGAGˆ@VV\\[U+,+‚VÐ×Ð×Ð××××Ð ×Ð×Ð×Ð׃ÐÐ¥ž„VV1#+†,23@AGA;AGA Gˆ@\V\\[[1 +„,++, +V ×Ð××××Ð×Ð ×ÐׂХž„V2$+…23@AGA;AGˆAGAAGGAAG‡@VV\\[1+××××Ð ×Ð×Ð×Р׉ÐО—žžV2+,+Š,23AGAA;;@AGAGGAAGGAVV2\[1+¬ ×Ð××× ×Ð×Ð×Ð×ÐׂХžƒV%+ƒ23@A;AGA‹GGAGG@VV2\\+‚V¬××××Ð×Ð×Ð×Ð׉ÐÉž—žV1$+‰V3@AGAA;@AƒGA@A†@V22\\+‚VÐ×××"×Ð ×Р׊Ð×О—žžV2+,+ƒ23@A‚@;A@2‚\1+V×××6×Ð×Ð׈О—žžV%+‚2@A„GA;;A†@22V\1+×××2×Ð׉Хž—ž¥V2$+ƒ3@@GA‚;;A‡;A;2V21+¬×××A׌Ð××ÐÉž—ž¥VV$+“23@@AAG@3;AA;;32V21+‚V¬×××GׂХž„¥V1%+†2@AG@3;…32V21+‚VÐ×××I׊ÐÉžžÂ¥VV1#+„,3AG;…522VV+V×××MׂХž„VV2#+‹3@;55;332V2+×××OׂХž„V2#+‰255;532V2+¬×××QׂÐÉž„VV2!+ˆV355322,+‚,¬×××SׂÐО„V1 +25ƒ3V,+V×Ð×Ð××××Ð×Ð=׊ÐÉž—ž¥VV1+…23531+,+V×××YׂÐÉžƒV+, +,+„252,+×Ð×Ð×Ð×××Ð×Ð×ÐB׃ÐÐ¥ž„VV+,+ƒ231+¬××××Ð×Ð8ׂÐÉžƒVV+,+„1++¬ ×Ð×Ð××××Ð×Ð×Ð×Ð×Ð×РׂÐО„V27+V ×Ð××××Ð ×Ð×Ð ×Ð×Ð×Ð׃ÐÐ¥ž„V2+10+ƒV×Ð×××!×Ð×Ð×Ð ×Ð×Ð×Ð׊ÐÐÉž—žžVV3+ƒ×¬××××Ð×Ð ×Ð×Ð×Ð×Ð׊ÐО—žžV2+1++ƒ¬×Ð×××,×Ð ×Ð×Ð×Ð×Ð ×Ð×Ð׊ÐÐ¥——ž¥V2+,)+‚¬Ð×××5×Ð×Ð×Ð×Ð׊ÐÉž—žž¥V1*+ƒVЬ×××D×Ð ×Ð ×Ð×Ð×Ð׊ÐÐ¥——ž¥V2(+ƒV×Ð×××WׄÐ××Ð×Ð׊Хž—ž¥¥VV1%+ƒÐÐ×××S×Ð ×Ð ×Р׊ÐÉž——ž¥V2 +1+ƒ¬Ð¬×××Z×Ð ×Ð×Ð׊ÐÐ¥——ž¥VV +‚,¬×××k×Ð ×Ð׋ÐÐ¥ž—ž¥¥V1+ƒVЬ×Ð×××s׊ÐÉž—žž¥VV+„׬Ð×××x×Ð׋ÐОž—ž¥VV2+×Ð××× ×Ðl׊ÐÉž—žž¥V2+¬××××Ðh׋ÐÉž—žž¥VV2+Ð×Ð×Ð××~×Ð×Ð×Ð[׋ÐÐ¥ž—žžV2+ƒV×Ð ×Ð××××Ð×Ð×ÐW׋ÐÉž—žž¥VV1 +ƒV׬×Ð××~×Ð ×Ð ×Ð×ÐJ׋ÐОž—ž¥V2+1+ƒ×¬ ×Ð××××Ð ×Ð ×ÐR׋ÐÐ¥ž—žž¥V2+†,+,1+¬×××!×Ð×Ð ×Ð×Ð×Ð0ׂÐÉž¥V1++1V+V¬¬×××:×Ð ×Ð×Ð@׃ÐÐ¥ž‹¥¥VV1V+VÐÐ×××5×Ð×Ð×Ð4׃ÐÐÉž‰¥¥V+×Ð×××L×ÐJ׌ÐÐ¥žž¥É¥V¬Ð¬×××T×ÐEׄÐɞɬ‚ÐÐ×××××Ђ¬¬××××!×Ð××××"ׂÐÐ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××T×8/lpV ÿÿÿÿ+       ‚  ‚ ‚ ‚‚ ‚‚ ‚ ‚  ƒ  ‚ ƒ  ‚ ƒ   ƒ